From 7757cc3495008252239f76bf5e0a444521e86f24 Mon Sep 17 00:00:00 2001 From: Vivian Wang Date: Tue, 3 Feb 2026 16:46:02 +0800 Subject: [PATCH 001/267] deps: V8: backport 6a0a25abaed3 Original commit message: [riscv] Fix sp handling in MacroAssembler::LeaveFrame Keep sp <= fp to ensure that data right above fp doesn't get clobbered by an inopportune signal and its handler. Such clobbering can happen in e.g. Node.js when JIT-compiled code is interrupted by a SIGCHLD handler. Bug: None Change-Id: Ief0836032ada7942e89f081f7605f61632c4d414 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7540554 Reviewed-by: Ji Qiu Commit-Queue: Yahan Lu (LuYahan) Reviewed-by: Rezvan Mahdavi Hezaveh Cr-Commit-Position: refs/heads/main@{#105069} Refs: https://github.com/v8/v8/commit/6a0a25abaed397f83eb0d92e4b33a5e18204f8bc Co-authored-by: kxxt PR-URL: https://github.com/nodejs/node/pull/61670 Reviewed-By: Richard Lau --- common.gypi | 2 +- deps/v8/AUTHORS | 1 + deps/v8/src/codegen/riscv/macro-assembler-riscv.cc | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/common.gypi b/common.gypi index 283c60eab356a5..5fced33791cdcb 100644 --- a/common.gypi +++ b/common.gypi @@ -38,7 +38,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.44', + 'v8_embedder_string': '-node.45', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 280e33e6841cc1..b7e6fac8f83658 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -294,6 +294,7 @@ Vadim Gorbachev Varun Varada Victor Costan Victor Polevoy +Vivian Wang Vlad Burlik Vladimir Kempik Vladimir Krivosheev diff --git a/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc b/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc index 12379ec0ff6fd2..203b2bcd61c7dc 100644 --- a/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc +++ b/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc @@ -6709,9 +6709,10 @@ void MacroAssembler::EnterFrame(StackFrame::Type type) { void MacroAssembler::LeaveFrame(StackFrame::Type type) { ASM_CODE_COMMENT(this); - addi(sp, fp, 2 * kSystemPointerSize); + Move(sp, fp); LoadWord(ra, MemOperand(fp, 1 * kSystemPointerSize)); LoadWord(fp, MemOperand(fp, 0 * kSystemPointerSize)); + AddWord(sp, sp, 2 * kSystemPointerSize); } void MacroAssembler::EnterExitFrame(Register scratch, int stack_space, From 54ef940e0170272e5360613788047cec224bf38b Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Fri, 27 Mar 2026 09:29:55 +0100 Subject: [PATCH 002/267] crypto: add raw key formats support to the KeyObject APIs PR-URL: https://github.com/nodejs/node/pull/62240 Backport-PR-URL: https://github.com/nodejs/node/pull/62455 Reviewed-By: Antoine du Hamel --- benchmark/crypto/create-keyobject.js | 39 +- benchmark/crypto/kem.js | 147 ++++-- benchmark/crypto/oneshot-sign.js | 34 +- benchmark/crypto/oneshot-verify.js | 24 +- doc/api/crypto.md | 410 +++++++++++++--- lib/internal/crypto/keys.js | 163 +++++-- src/crypto/crypto_keys.cc | 370 ++++++++++++--- src/crypto/crypto_keys.h | 10 +- src/node_errors.h | 3 + test/parallel/test-crypto-encap-decap.js | 32 +- test/parallel/test-crypto-key-objects-raw.js | 446 ++++++++++++++++++ test/parallel/test-crypto-key-objects.js | 83 ++++ .../test-crypto-pqc-key-objects-ml-dsa.js | 22 +- .../test-crypto-pqc-key-objects-ml-kem.js | 16 + .../test-crypto-pqc-key-objects-slh-dsa.js | 16 + .../test-crypto-pqc-sign-verify-ml-dsa.js | 22 + test/parallel/test-crypto-sign-verify.js | 32 +- 17 files changed, 1674 insertions(+), 195 deletions(-) create mode 100644 test/parallel/test-crypto-key-objects-raw.js diff --git a/benchmark/crypto/create-keyobject.js b/benchmark/crypto/create-keyobject.js index 58b873cde7f27a..30f8213175df69 100644 --- a/benchmark/crypto/create-keyobject.js +++ b/benchmark/crypto/create-keyobject.js @@ -30,8 +30,22 @@ if (hasOpenSSL(3, 5)) { const bench = common.createBenchmark(main, { keyType: Object.keys(keyFixtures), - keyFormat: ['pkcs8', 'spki', 'der-pkcs8', 'der-spki', 'jwk-public', 'jwk-private'], + keyFormat: ['pkcs8', 'spki', 'der-pkcs8', 'der-spki', 'jwk-public', 'jwk-private', + 'raw-public', 'raw-private', 'raw-seed'], n: [1e3], +}, { + combinationFilter(p) { + // raw-private is not supported for rsa and ml-dsa + if (p.keyFormat === 'raw-private') + return p.keyType !== 'rsa' && !p.keyType.startsWith('ml-'); + // raw-public is not supported by rsa + if (p.keyFormat === 'raw-public') + return p.keyType !== 'rsa'; + // raw-seed is only supported for ml-dsa + if (p.keyFormat === 'raw-seed') + return p.keyType.startsWith('ml-'); + return true; + }, }); function measure(n, fn, input) { @@ -82,6 +96,29 @@ function main({ n, keyFormat, keyType }) { fn = crypto.createPrivateKey; break; } + case 'raw-public': { + const exportedKey = keyPair.publicKey.export({ format: 'raw-public' }); + key = { key: exportedKey, format: 'raw-public', asymmetricKeyType: keyType }; + if (keyType === 'ec') key.namedCurve = keyPair.publicKey.asymmetricKeyDetails.namedCurve; + fn = crypto.createPublicKey; + break; + } + case 'raw-private': { + const exportedKey = keyPair.privateKey.export({ format: 'raw-private' }); + key = { key: exportedKey, format: 'raw-private', asymmetricKeyType: keyType }; + if (keyType === 'ec') key.namedCurve = keyPair.privateKey.asymmetricKeyDetails.namedCurve; + fn = crypto.createPrivateKey; + break; + } + case 'raw-seed': { + key = { + key: keyPair.privateKey.export({ format: 'raw-seed' }), + format: 'raw-seed', + asymmetricKeyType: keyType, + }; + fn = crypto.createPrivateKey; + break; + } default: throw new Error('not implemented'); } diff --git a/benchmark/crypto/kem.js b/benchmark/crypto/kem.js index c36e79957a115c..e03ae65f1926ca 100644 --- a/benchmark/crypto/kem.js +++ b/benchmark/crypto/kem.js @@ -11,22 +11,29 @@ function readKey(name) { return fs.readFileSync(`${fixtures_keydir}/${name}.pem`, 'utf8'); } +function readKeyPair(publicKeyName, privateKeyName) { + return { + publicKey: readKey(publicKeyName), + privateKey: readKey(privateKeyName), + }; +} + const keyFixtures = {}; if (hasOpenSSL(3, 5)) { - keyFixtures['ml-kem-512'] = readKey('ml_kem_512_private'); - keyFixtures['ml-kem-768'] = readKey('ml_kem_768_private'); - keyFixtures['ml-kem-1024'] = readKey('ml_kem_1024_private'); + keyFixtures['ml-kem-512'] = readKeyPair('ml_kem_512_public', 'ml_kem_512_private'); + keyFixtures['ml-kem-768'] = readKeyPair('ml_kem_768_public', 'ml_kem_768_private'); + keyFixtures['ml-kem-1024'] = readKeyPair('ml_kem_1024_public', 'ml_kem_1024_private'); } if (hasOpenSSL(3, 2)) { - keyFixtures['p-256'] = readKey('ec_p256_private'); - keyFixtures['p-384'] = readKey('ec_p384_private'); - keyFixtures['p-521'] = readKey('ec_p521_private'); - keyFixtures.x25519 = readKey('x25519_private'); - keyFixtures.x448 = readKey('x448_private'); + keyFixtures['p-256'] = readKeyPair('ec_p256_public', 'ec_p256_private'); + keyFixtures['p-384'] = readKeyPair('ec_p384_public', 'ec_p384_private'); + keyFixtures['p-521'] = readKeyPair('ec_p521_public', 'ec_p521_private'); + keyFixtures.x25519 = readKeyPair('x25519_public', 'x25519_private'); + keyFixtures.x448 = readKeyPair('x448_public', 'x448_private'); } if (hasOpenSSL(3, 0)) { - keyFixtures.rsa = readKey('rsa_private_2048'); + keyFixtures.rsa = readKeyPair('rsa_public_2048', 'rsa_private_2048'); } if (Object.keys(keyFixtures).length === 0) { @@ -37,32 +44,46 @@ if (Object.keys(keyFixtures).length === 0) { const bench = common.createBenchmark(main, { keyType: Object.keys(keyFixtures), mode: ['sync', 'async', 'async-parallel'], - keyFormat: ['keyObject', 'keyObject.unique'], + keyFormat: ['keyObject', 'keyObject.unique', 'pem', 'der', 'jwk', + 'raw-public', 'raw-private', 'raw-seed'], op: ['encapsulate', 'decapsulate'], n: [1e3], }, { combinationFilter(p) { // "keyObject.unique" allows to compare the result with "keyObject" to // assess whether mutexes over the key material impact the operation - return p.keyFormat !== 'keyObject.unique' || - (p.keyFormat === 'keyObject.unique' && p.mode === 'async-parallel'); + if (p.keyFormat === 'keyObject.unique') + return p.mode === 'async-parallel'; + // JWK is not supported for ml-kem for now + if (p.keyFormat === 'jwk') + return !p.keyType.startsWith('ml-'); + // raw-public is only supported for encapsulate, not rsa + if (p.keyFormat === 'raw-public') + return p.keyType !== 'rsa' && p.op === 'encapsulate'; + // raw-private is not supported for rsa and ml-kem, only for decapsulate + if (p.keyFormat === 'raw-private') + return p.keyType !== 'rsa' && !p.keyType.startsWith('ml-') && p.op === 'decapsulate'; + // raw-seed is only supported for ml-kem + if (p.keyFormat === 'raw-seed') + return p.keyType.startsWith('ml-'); + return true; }, }); -function measureSync(n, op, privateKey, keys, ciphertexts) { +function measureSync(n, op, key, keys, ciphertexts) { bench.start(); for (let i = 0; i < n; ++i) { - const key = privateKey || keys[i]; + const k = key || keys[i]; if (op === 'encapsulate') { - crypto.encapsulate(key); + crypto.encapsulate(k); } else { - crypto.decapsulate(key, ciphertexts[i]); + crypto.decapsulate(k, ciphertexts[i]); } } bench.end(n); } -function measureAsync(n, op, privateKey, keys, ciphertexts) { +function measureAsync(n, op, key, keys, ciphertexts) { let remaining = n; function done() { if (--remaining === 0) @@ -72,18 +93,18 @@ function measureAsync(n, op, privateKey, keys, ciphertexts) { } function one() { - const key = privateKey || keys[n - remaining]; + const k = key || keys[n - remaining]; if (op === 'encapsulate') { - crypto.encapsulate(key, done); + crypto.encapsulate(k, done); } else { - crypto.decapsulate(key, ciphertexts[n - remaining], done); + crypto.decapsulate(k, ciphertexts[n - remaining], done); } } bench.start(); one(); } -function measureAsyncParallel(n, op, privateKey, keys, ciphertexts) { +function measureAsyncParallel(n, op, key, keys, ciphertexts) { let remaining = n; function done() { if (--remaining === 0) @@ -91,25 +112,79 @@ function measureAsyncParallel(n, op, privateKey, keys, ciphertexts) { } bench.start(); for (let i = 0; i < n; ++i) { - const key = privateKey || keys[i]; + const k = key || keys[i]; if (op === 'encapsulate') { - crypto.encapsulate(key, done); + crypto.encapsulate(k, done); } else { - crypto.decapsulate(key, ciphertexts[i], done); + crypto.decapsulate(k, ciphertexts[i], done); } } } function main({ n, mode, keyFormat, keyType, op }) { - const pems = [...Buffer.alloc(n)].map(() => keyFixtures[keyType]); - const keyObjects = pems.map(crypto.createPrivateKey); + const isEncapsulate = op === 'encapsulate'; + const pemSource = isEncapsulate ? + keyFixtures[keyType].publicKey : + keyFixtures[keyType].privateKey; + const createKeyFn = isEncapsulate ? crypto.createPublicKey : crypto.createPrivateKey; + const pems = [...Buffer.alloc(n)].map(() => pemSource); + const keyObjects = pems.map(createKeyFn); - let privateKey, keys, ciphertexts; + // Warm up OpenSSL's provider operation cache for each key object + if (isEncapsulate) { + for (const keyObject of keyObjects) { + crypto.encapsulate(keyObject); + } + } else { + const warmupCiphertext = crypto.encapsulate(keyObjects[0]).ciphertext; + for (const keyObject of keyObjects) { + crypto.decapsulate(keyObject, warmupCiphertext); + } + } + + const asymmetricKeyType = keyObjects[0].asymmetricKeyType; + let key, keys, ciphertexts; switch (keyFormat) { case 'keyObject': - privateKey = keyObjects[0]; + key = keyObjects[0]; + break; + case 'pem': + key = pems[0]; break; + case 'jwk': { + key = { key: keyObjects[0].export({ format: 'jwk' }), format: 'jwk' }; + break; + } + case 'der': { + const type = isEncapsulate ? 'spki' : 'pkcs8'; + key = { key: keyObjects[0].export({ format: 'der', type }), format: 'der', type }; + break; + } + case 'raw-public': { + const exportedKey = keyObjects[0].export({ format: 'raw-public' }); + const keyOpts = { key: exportedKey, format: 'raw-public', asymmetricKeyType }; + if (asymmetricKeyType === 'ec') keyOpts.namedCurve = keyObjects[0].asymmetricKeyDetails.namedCurve; + key = keyOpts; + break; + } + case 'raw-private': { + const exportedKey = keyObjects[0].export({ format: 'raw-private' }); + const keyOpts = { key: exportedKey, format: 'raw-private', asymmetricKeyType }; + if (asymmetricKeyType === 'ec') keyOpts.namedCurve = keyObjects[0].asymmetricKeyDetails.namedCurve; + key = keyOpts; + break; + } + case 'raw-seed': { + // raw-seed requires a private key to export from + const privateKeyObject = crypto.createPrivateKey(keyFixtures[keyType].privateKey); + key = { + key: privateKeyObject.export({ format: 'raw-seed' }), + format: 'raw-seed', + asymmetricKeyType, + }; + break; + } case 'keyObject.unique': keys = keyObjects; break; @@ -118,23 +193,25 @@ function main({ n, mode, keyFormat, keyType, op }) { } // Pre-generate ciphertexts for decapsulate operations - if (op === 'decapsulate') { - if (privateKey) { - ciphertexts = [...Buffer.alloc(n)].map(() => crypto.encapsulate(privateKey).ciphertext); + if (!isEncapsulate) { + const encapKey = crypto.createPublicKey( + crypto.createPrivateKey(keyFixtures[keyType].privateKey)); + if (key) { + ciphertexts = [...Buffer.alloc(n)].map(() => crypto.encapsulate(encapKey).ciphertext); } else { - ciphertexts = keys.map((key) => crypto.encapsulate(key).ciphertext); + ciphertexts = keys.map(() => crypto.encapsulate(encapKey).ciphertext); } } switch (mode) { case 'sync': - measureSync(n, op, privateKey, keys, ciphertexts); + measureSync(n, op, key, keys, ciphertexts); break; case 'async': - measureAsync(n, op, privateKey, keys, ciphertexts); + measureAsync(n, op, key, keys, ciphertexts); break; case 'async-parallel': - measureAsyncParallel(n, op, privateKey, keys, ciphertexts); + measureAsyncParallel(n, op, key, keys, ciphertexts); break; } } diff --git a/benchmark/crypto/oneshot-sign.js b/benchmark/crypto/oneshot-sign.js index e1942c347d7508..d0abc7b5412e60 100644 --- a/benchmark/crypto/oneshot-sign.js +++ b/benchmark/crypto/oneshot-sign.js @@ -29,14 +29,21 @@ let keyObjects; const bench = common.createBenchmark(main, { keyType: Object.keys(keyFixtures), mode: ['sync', 'async', 'async-parallel'], - keyFormat: ['pem', 'der', 'jwk', 'keyObject', 'keyObject.unique'], + keyFormat: ['pem', 'der', 'jwk', 'keyObject', 'keyObject.unique', 'raw-private', 'raw-seed'], n: [1e3], }, { combinationFilter(p) { // "keyObject.unique" allows to compare the result with "keyObject" to // assess whether mutexes over the key material impact the operation - return p.keyFormat !== 'keyObject.unique' || - (p.keyFormat === 'keyObject.unique' && p.mode === 'async-parallel'); + if (p.keyFormat === 'keyObject.unique') + return p.mode === 'async-parallel'; + // raw-private is not supported for rsa and ml-dsa + if (p.keyFormat === 'raw-private') + return p.keyType !== 'rsa' && !p.keyType.startsWith('ml-'); + // raw-seed is only supported for ml-dsa + if (p.keyFormat === 'raw-seed') + return p.keyType.startsWith('ml-'); + return true; }, }); @@ -91,6 +98,12 @@ function main({ n, mode, keyFormat, keyType }) { pems ||= [...Buffer.alloc(n)].map(() => keyFixtures[keyType]); keyObjects ||= pems.map(crypto.createPrivateKey); + // Warm up OpenSSL's provider operation cache for each key object + for (const keyObject of keyObjects) { + crypto.sign(keyType === 'rsa' || keyType === 'ec' ? 'sha256' : null, + data, keyObject); + } + let privateKey, keys, digest; switch (keyType) { @@ -120,6 +133,21 @@ function main({ n, mode, keyFormat, keyType }) { privateKey = { key: keyObjects[0].export({ format: 'der', type: 'pkcs8' }), format: 'der', type: 'pkcs8' }; break; } + case 'raw-private': { + const exportedKey = keyObjects[0].export({ format: 'raw-private' }); + const keyOpts = { key: exportedKey, format: 'raw-private', asymmetricKeyType: keyType }; + if (keyType === 'ec') keyOpts.namedCurve = keyObjects[0].asymmetricKeyDetails.namedCurve; + privateKey = keyOpts; + break; + } + case 'raw-seed': { + privateKey = { + key: keyObjects[0].export({ format: 'raw-seed' }), + format: 'raw-seed', + asymmetricKeyType: keyType, + }; + break; + } case 'keyObject.unique': keys = keyObjects; break; diff --git a/benchmark/crypto/oneshot-verify.js b/benchmark/crypto/oneshot-verify.js index e0bbc0ce755f15..c6a24f52126eb2 100644 --- a/benchmark/crypto/oneshot-verify.js +++ b/benchmark/crypto/oneshot-verify.js @@ -36,14 +36,18 @@ let keyObjects; const bench = common.createBenchmark(main, { keyType: Object.keys(keyFixtures), mode: ['sync', 'async', 'async-parallel'], - keyFormat: ['pem', 'der', 'jwk', 'keyObject', 'keyObject.unique'], + keyFormat: ['pem', 'der', 'jwk', 'keyObject', 'keyObject.unique', 'raw-public'], n: [1e3], }, { combinationFilter(p) { // "keyObject.unique" allows to compare the result with "keyObject" to // assess whether mutexes over the key material impact the operation - return p.keyFormat !== 'keyObject.unique' || - (p.keyFormat === 'keyObject.unique' && p.mode === 'async-parallel'); + if (p.keyFormat === 'keyObject.unique') + return p.mode === 'async-parallel'; + // raw-public is not supported by rsa + if (p.keyFormat === 'raw-public') + return p.keyType !== 'rsa'; + return true; }, }); @@ -101,6 +105,13 @@ function main({ n, mode, keyFormat, keyType }) { pems ||= [...Buffer.alloc(n)].map(() => keyFixtures[keyType].publicKey); keyObjects ||= pems.map(crypto.createPublicKey); + // Warm up OpenSSL's provider operation cache for each key object + const warmupDigest = keyType === 'rsa' || keyType === 'ec' ? 'sha256' : null; + const warmupSig = crypto.sign(warmupDigest, data, keyFixtures[keyType].privateKey); + for (const keyObject of keyObjects) { + crypto.verify(warmupDigest, data, keyObject, warmupSig); + } + let publicKey, keys, digest; switch (keyType) { @@ -130,6 +141,13 @@ function main({ n, mode, keyFormat, keyType }) { publicKey = { key: keyObjects[0].export({ format: 'der', type: 'spki' }), format: 'der', type: 'spki' }; break; } + case 'raw-public': { + const exportedKey = keyObjects[0].export({ format: 'raw-public' }); + const keyOpts = { key: exportedKey, format: 'raw-public', asymmetricKeyType: keyType }; + if (keyType === 'ec') keyOpts.namedCurve = keyObjects[0].asymmetricKeyDetails.namedCurve; + publicKey = keyOpts; + break; + } case 'keyObject.unique': keys = keyObjects; break; diff --git a/doc/api/crypto.md b/doc/api/crypto.md index 297d22af33184a..a46d3abe4ba8e8 100644 --- a/doc/api/crypto.md +++ b/doc/api/crypto.md @@ -75,37 +75,305 @@ try { ## Asymmetric key types -The following table lists the asymmetric key types recognized by the [`KeyObject`][] API: - -| Key Type | Description | OID | -| ---------------------------------- | ------------------ | ----------------------- | -| `'dh'` | Diffie-Hellman | 1.2.840.113549.1.3.1 | -| `'dsa'` | DSA | 1.2.840.10040.4.1 | -| `'ec'` | Elliptic curve | 1.2.840.10045.2.1 | -| `'ed25519'` | Ed25519 | 1.3.101.112 | -| `'ed448'` | Ed448 | 1.3.101.113 | -| `'ml-dsa-44'`[^openssl35] | ML-DSA-44 | 2.16.840.1.101.3.4.3.17 | -| `'ml-dsa-65'`[^openssl35] | ML-DSA-65 | 2.16.840.1.101.3.4.3.18 | -| `'ml-dsa-87'`[^openssl35] | ML-DSA-87 | 2.16.840.1.101.3.4.3.19 | -| `'ml-kem-512'`[^openssl35] | ML-KEM-512 | 2.16.840.1.101.3.4.4.1 | -| `'ml-kem-768'`[^openssl35] | ML-KEM-768 | 2.16.840.1.101.3.4.4.2 | -| `'ml-kem-1024'`[^openssl35] | ML-KEM-1024 | 2.16.840.1.101.3.4.4.3 | -| `'rsa-pss'` | RSA PSS | 1.2.840.113549.1.1.10 | -| `'rsa'` | RSA | 1.2.840.113549.1.1.1 | -| `'slh-dsa-sha2-128f'`[^openssl35] | SLH-DSA-SHA2-128f | 2.16.840.1.101.3.4.3.21 | -| `'slh-dsa-sha2-128s'`[^openssl35] | SLH-DSA-SHA2-128s | 2.16.840.1.101.3.4.3.20 | -| `'slh-dsa-sha2-192f'`[^openssl35] | SLH-DSA-SHA2-192f | 2.16.840.1.101.3.4.3.23 | -| `'slh-dsa-sha2-192s'`[^openssl35] | SLH-DSA-SHA2-192s | 2.16.840.1.101.3.4.3.22 | -| `'slh-dsa-sha2-256f'`[^openssl35] | SLH-DSA-SHA2-256f | 2.16.840.1.101.3.4.3.25 | -| `'slh-dsa-sha2-256s'`[^openssl35] | SLH-DSA-SHA2-256s | 2.16.840.1.101.3.4.3.24 | -| `'slh-dsa-shake-128f'`[^openssl35] | SLH-DSA-SHAKE-128f | 2.16.840.1.101.3.4.3.27 | -| `'slh-dsa-shake-128s'`[^openssl35] | SLH-DSA-SHAKE-128s | 2.16.840.1.101.3.4.3.26 | -| `'slh-dsa-shake-192f'`[^openssl35] | SLH-DSA-SHAKE-192f | 2.16.840.1.101.3.4.3.29 | -| `'slh-dsa-shake-192s'`[^openssl35] | SLH-DSA-SHAKE-192s | 2.16.840.1.101.3.4.3.28 | -| `'slh-dsa-shake-256f'`[^openssl35] | SLH-DSA-SHAKE-256f | 2.16.840.1.101.3.4.3.31 | -| `'slh-dsa-shake-256s'`[^openssl35] | SLH-DSA-SHAKE-256s | 2.16.840.1.101.3.4.3.30 | -| `'x25519'` | X25519 | 1.3.101.110 | -| `'x448'` | X448 | 1.3.101.111 | +The following table lists the asymmetric key types recognized by the +[`KeyObject`][] API and the export/import formats supported for each key type. + +| Key Type | Description | OID | `'pem'` | `'der'` | `'jwk'` | `'raw-public'` | `'raw-private'` | `'raw-seed'` | +| ---------------------------------- | ------------------ | ----------------------- | ------- | ------- | ------- | -------------- | --------------- | ------------ | +| `'dh'` | Diffie-Hellman | 1.2.840.113549.1.3.1 | ✔ | ✔ | | | | | +| `'dsa'` | DSA | 1.2.840.10040.4.1 | ✔ | ✔ | | | | | +| `'ec'` | Elliptic curve | 1.2.840.10045.2.1 | ✔ | ✔ | ✔ | ✔ | ✔ | | +| `'ed25519'` | Ed25519 | 1.3.101.112 | ✔ | ✔ | ✔ | ✔ | ✔ | | +| `'ed448'` | Ed448 | 1.3.101.113 | ✔ | ✔ | ✔ | ✔ | ✔ | | +| `'ml-dsa-44'`[^openssl35] | ML-DSA-44 | 2.16.840.1.101.3.4.3.17 | ✔ | ✔ | ✔ | ✔ | | ✔ | +| `'ml-dsa-65'`[^openssl35] | ML-DSA-65 | 2.16.840.1.101.3.4.3.18 | ✔ | ✔ | ✔ | ✔ | | ✔ | +| `'ml-dsa-87'`[^openssl35] | ML-DSA-87 | 2.16.840.1.101.3.4.3.19 | ✔ | ✔ | ✔ | ✔ | | ✔ | +| `'ml-kem-512'`[^openssl35] | ML-KEM-512 | 2.16.840.1.101.3.4.4.1 | ✔ | ✔ | | ✔ | | ✔ | +| `'ml-kem-768'`[^openssl35] | ML-KEM-768 | 2.16.840.1.101.3.4.4.2 | ✔ | ✔ | | ✔ | | ✔ | +| `'ml-kem-1024'`[^openssl35] | ML-KEM-1024 | 2.16.840.1.101.3.4.4.3 | ✔ | ✔ | | ✔ | | ✔ | +| `'rsa-pss'` | RSA PSS | 1.2.840.113549.1.1.10 | ✔ | ✔ | | | | | +| `'rsa'` | RSA | 1.2.840.113549.1.1.1 | ✔ | ✔ | ✔ | | | | +| `'slh-dsa-sha2-128f'`[^openssl35] | SLH-DSA-SHA2-128f | 2.16.840.1.101.3.4.3.21 | ✔ | ✔ | | ✔ | ✔ | | +| `'slh-dsa-sha2-128s'`[^openssl35] | SLH-DSA-SHA2-128s | 2.16.840.1.101.3.4.3.20 | ✔ | ✔ | | ✔ | ✔ | | +| `'slh-dsa-sha2-192f'`[^openssl35] | SLH-DSA-SHA2-192f | 2.16.840.1.101.3.4.3.23 | ✔ | ✔ | | ✔ | ✔ | | +| `'slh-dsa-sha2-192s'`[^openssl35] | SLH-DSA-SHA2-192s | 2.16.840.1.101.3.4.3.22 | ✔ | ✔ | | ✔ | ✔ | | +| `'slh-dsa-sha2-256f'`[^openssl35] | SLH-DSA-SHA2-256f | 2.16.840.1.101.3.4.3.25 | ✔ | ✔ | | ✔ | ✔ | | +| `'slh-dsa-sha2-256s'`[^openssl35] | SLH-DSA-SHA2-256s | 2.16.840.1.101.3.4.3.24 | ✔ | ✔ | | ✔ | ✔ | | +| `'slh-dsa-shake-128f'`[^openssl35] | SLH-DSA-SHAKE-128f | 2.16.840.1.101.3.4.3.27 | ✔ | ✔ | | ✔ | ✔ | | +| `'slh-dsa-shake-128s'`[^openssl35] | SLH-DSA-SHAKE-128s | 2.16.840.1.101.3.4.3.26 | ✔ | ✔ | | ✔ | ✔ | | +| `'slh-dsa-shake-192f'`[^openssl35] | SLH-DSA-SHAKE-192f | 2.16.840.1.101.3.4.3.29 | ✔ | ✔ | | ✔ | ✔ | | +| `'slh-dsa-shake-192s'`[^openssl35] | SLH-DSA-SHAKE-192s | 2.16.840.1.101.3.4.3.28 | ✔ | ✔ | | ✔ | ✔ | | +| `'slh-dsa-shake-256f'`[^openssl35] | SLH-DSA-SHAKE-256f | 2.16.840.1.101.3.4.3.31 | ✔ | ✔ | | ✔ | ✔ | | +| `'slh-dsa-shake-256s'`[^openssl35] | SLH-DSA-SHAKE-256s | 2.16.840.1.101.3.4.3.30 | ✔ | ✔ | | ✔ | ✔ | | +| `'x25519'` | X25519 | 1.3.101.110 | ✔ | ✔ | ✔ | ✔ | ✔ | | +| `'x448'` | X448 | 1.3.101.111 | ✔ | ✔ | ✔ | ✔ | ✔ | | + +### Key formats + +Asymmetric keys can be represented in several formats. **The recommended +approach is to import key material into a [`KeyObject`][] once and reuse it** +for all subsequent operations, as this avoids repeated parsing and delivers +the best performance. + +When a [`KeyObject`][] is not practical - for example, when key material +arrives in a protocol message and is used only once - most cryptographic +functions also accept a PEM string or an object specifying the format +and key material directly. See [`crypto.createPublicKey()`][], +[`crypto.createPrivateKey()`][], and [`keyObject.export()`][] for the full +options accepted by each format. + +#### KeyObject + +A [`KeyObject`][] is the in-memory representation of a parsed key. It is +created by [`crypto.createPublicKey()`][], [`crypto.createPrivateKey()`][], +[`crypto.createSecretKey()`][], or key generation functions such as +[`crypto.generateKeyPair()`][]. The first cryptographic operation with a given +[`KeyObject`][] may be slower than subsequent ones because OpenSSL lazily +initializes internal caches on first use. + +#### PEM and DER + +PEM and DER are the traditional encoding formats for asymmetric keys based on +ASN.1 structures. + +* **PEM** is a text encoding that wraps Base64-encoded DER data between + header and footer lines (e.g. `-----BEGIN PUBLIC KEY-----`). PEM strings can + be passed directly to most cryptographic operations. +* **DER** is the binary encoding of the same ASN.1 structures. When providing + DER input, the `type` (typically `'spki'` or `'pkcs8'`) must be specified + explicitly. + +#### JSON Web Key (JWK) + +JSON Web Key (JWK) is a JSON-based key representation defined in +[RFC 7517][]. JWK encodes each key component as an individual Base64url-encoded +value inside a JSON object. For RSA keys, JWK avoids ASN.1 parsing overhead +and is the fastest serialized import format. + +#### Raw key formats + +> Stability: 1.1 - Active development + +The `'raw-public'`, `'raw-private'`, and `'raw-seed'` key formats allow +importing and exporting raw key material without any encoding wrapper. +See [`keyObject.export()`][], [`crypto.createPublicKey()`][], and +[`crypto.createPrivateKey()`][] for usage details. + +`'raw-public'` is generally the fastest way to import a public key. +`'raw-private'` and `'raw-seed'` are not always faster than other formats +because they only contain the private scalar or seed - importing them requires +deriving the public key component (e.g. elliptic curve point multiplication or +seed expansion), which can be expensive. Other formats include both private +and public components, avoiding that computation. + +### Choosing a key format + +**Always prefer a [`KeyObject`][]** - create one from whatever format you +have and reuse it. The guidance below applies only when choosing between +serialization formats, either for importing into a [`KeyObject`][] or for +passing key material inline when a [`KeyObject`][] is not practical. + +#### Importing keys + +When creating a [`KeyObject`][] for repeated use, the import cost is paid once, +so choosing a faster format reduces startup latency. + +The import cost breaks down into two parts: **parsing overhead** (decoding the +serialization wrapper) and **key computation** (any mathematical work needed to +reconstruct the full key, such as deriving a public key from a private scalar +or expanding a seed). Which part dominates depends on the key type. For +example: + +* Public keys - `'raw-public'` is the fastest serialized format because the + raw format skips all ASN.1 and Base64 decoding. +* EC private keys - `'raw-private'` is faster than PEM or DER because it + avoids ASN.1 parsing. However, for larger curves (e.g. P-384, P-521) the + required derivation of the public point from the private scalar becomes + expensive, reducing the advantage. +* RSA keys - `'jwk'` is the fastest serialized format. JWK represents RSA + key components as individual Base64url-encoded integers, avoiding the + overhead of ASN.1 parsing entirely. + +#### Inline key material in operations + +When a [`KeyObject`][] cannot be reused (e.g. the key arrives as raw bytes in +a protocol message and is used only once), most cryptographic functions also +accept a PEM string or an object specifying the format and key +material directly. In this case the total cost is the sum of key import and +the cryptographic computation itself. + +For operations where the cryptographic computation dominates - such as +signing with RSA or ECDH key agreement with P-384 or P-521 - the +serialization format has negligible impact on overall throughput, so choose +whichever format is most convenient. For lightweight operations like Ed25519 +signing or verification, the import cost is a larger fraction of the total, +so a faster format like `'raw-public'` or `'raw-private'` can meaningfully +improve throughput. + +Even if the same key material is used only a few times, it is worth importing it +into a [`KeyObject`][] rather than passing the raw or PEM representation +repeatedly. + +### Examples + +Example: Reusing a [`KeyObject`][] across sign and verify operations: + +```mjs +import { promisify } from 'node:util'; +const { generateKeyPair, sign, verify } = await import('node:crypto'); + +const { publicKey, privateKey } = await promisify(generateKeyPair)('ed25519'); + +// A KeyObject holds the parsed key in memory and can be reused +// across multiple operations without re-parsing. +const data = new TextEncoder().encode('message to sign'); +const signature = sign(null, data, privateKey); +verify(null, data, publicKey, signature); +``` + +Example: Importing keys of various formats into [`KeyObject`][]s: + +```mjs +import { promisify } from 'node:util'; +const { + createPrivateKey, createPublicKey, generateKeyPair, +} = await import('node:crypto'); + +const generated = await promisify(generateKeyPair)('ed25519'); + +// PEM +const privatePem = generated.privateKey.export({ format: 'pem', type: 'pkcs8' }); +const publicPem = generated.publicKey.export({ format: 'pem', type: 'spki' }); +createPrivateKey(privatePem); +createPublicKey(publicPem); + +// DER - requires explicit type +const privateDer = generated.privateKey.export({ format: 'der', type: 'pkcs8' }); +const publicDer = generated.publicKey.export({ format: 'der', type: 'spki' }); +createPrivateKey({ key: privateDer, format: 'der', type: 'pkcs8' }); +createPublicKey({ key: publicDer, format: 'der', type: 'spki' }); + +// JWK +const privateJwk = generated.privateKey.export({ format: 'jwk' }); +const publicJwk = generated.publicKey.export({ format: 'jwk' }); +createPrivateKey({ key: privateJwk, format: 'jwk' }); +createPublicKey({ key: publicJwk, format: 'jwk' }); + +// Raw +const rawPriv = generated.privateKey.export({ format: 'raw-private' }); +const rawPub = generated.publicKey.export({ format: 'raw-public' }); +createPrivateKey({ key: rawPriv, format: 'raw-private', asymmetricKeyType: 'ed25519' }); +createPublicKey({ key: rawPub, format: 'raw-public', asymmetricKeyType: 'ed25519' }); +``` + +Example: Passing key material directly to [`crypto.sign()`][] and +[`crypto.verify()`][] without creating a [`KeyObject`][] first: + +```mjs +import { promisify } from 'node:util'; +const { generateKeyPair, sign, verify } = await import('node:crypto'); + +const generated = await promisify(generateKeyPair)('ed25519'); + +const data = new TextEncoder().encode('message to sign'); + +// PEM strings +const privatePem = generated.privateKey.export({ format: 'pem', type: 'pkcs8' }); +const publicPem = generated.publicKey.export({ format: 'pem', type: 'spki' }); +const sig1 = sign(null, data, privatePem); +verify(null, data, publicPem, sig1); + +// JWK objects +const privateJwk = generated.privateKey.export({ format: 'jwk' }); +const publicJwk = generated.publicKey.export({ format: 'jwk' }); +const sig2 = sign(null, data, { key: privateJwk, format: 'jwk' }); +verify(null, data, { key: publicJwk, format: 'jwk' }, sig2); + +// Raw key bytes +const rawPriv = generated.privateKey.export({ format: 'raw-private' }); +const rawPub = generated.publicKey.export({ format: 'raw-public' }); +const sig3 = sign(null, data, { + key: rawPriv, format: 'raw-private', asymmetricKeyType: 'ed25519', +}); +verify(null, data, { + key: rawPub, format: 'raw-public', asymmetricKeyType: 'ed25519', +}, sig3); +``` + +Example: For EC keys, the `namedCurve` option is required when importing +raw keys: + +```mjs +import { promisify } from 'node:util'; +const { + createPrivateKey, createPublicKey, generateKeyPair, sign, verify, +} = await import('node:crypto'); + +const generated = await promisify(generateKeyPair)('ec', { + namedCurve: 'P-256', +}); + +// Export the raw EC public key (uncompressed by default). +const rawPublicKey = generated.publicKey.export({ format: 'raw-public' }); + +// The following is equivalent. +const rawPublicKeyUncompressed = generated.publicKey.export({ + format: 'raw-public', + type: 'uncompressed', +}); + +// Export compressed point format. +const rawPublicKeyCompressed = generated.publicKey.export({ + format: 'raw-public', + type: 'compressed', +}); + +// Export the raw EC private key. +const rawPrivateKey = generated.privateKey.export({ format: 'raw-private' }); + +// Import the raw EC keys. +// Both compressed and uncompressed point formats are accepted. +const publicKey = createPublicKey({ + key: rawPublicKey, + format: 'raw-public', + asymmetricKeyType: 'ec', + namedCurve: 'P-256', +}); +const privateKey = createPrivateKey({ + key: rawPrivateKey, + format: 'raw-private', + asymmetricKeyType: 'ec', + namedCurve: 'P-256', +}); + +const data = new TextEncoder().encode('message to sign'); +const signature = sign('sha256', data, privateKey); +verify('sha256', data, publicKey, signature); +``` + +Example: Exporting raw seeds and importing them: + +```mjs +import { promisify } from 'node:util'; +const { + createPrivateKey, decapsulate, encapsulate, generateKeyPair, +} = await import('node:crypto'); + +const generated = await promisify(generateKeyPair)('ml-kem-768'); + +// Export the raw seed (64 bytes for ML-KEM). +const seed = generated.privateKey.export({ format: 'raw-seed' }); + +// Import the raw seed. +const privateKey = createPrivateKey({ + key: seed, + format: 'raw-seed', + asymmetricKeyType: 'ml-kem-768', +}); + +const { ciphertext } = encapsulate(generated.publicKey); +decapsulate(privateKey, ciphertext); +``` ## Class: `Certificate` @@ -2125,6 +2393,10 @@ type, value, and parameters. This method is not @@ -3677,6 +3961,9 @@ of the passphrase is limited to 1024 bytes. @@ -6542,6 +6834,7 @@ See the [list of SSL OP Flags][] for details. [RFC 4122]: https://www.rfc-editor.org/rfc/rfc4122.txt [RFC 5208]: https://www.rfc-editor.org/rfc/rfc5208.txt [RFC 5280]: https://www.rfc-editor.org/rfc/rfc5280.txt +[RFC 7517]: https://www.rfc-editor.org/rfc/rfc7517.txt [Web Crypto API documentation]: webcrypto.md [`BN_is_prime_ex`]: https://www.openssl.org/docs/man1.1.1/man3/BN_is_prime_ex.html [`Buffer`]: buffer.md @@ -6566,6 +6859,7 @@ See the [list of SSL OP Flags][] for details. [`crypto.createSign()`]: #cryptocreatesignalgorithm-options [`crypto.createVerify()`]: #cryptocreateverifyalgorithm-options [`crypto.generateKey()`]: #cryptogeneratekeytype-options-callback +[`crypto.generateKeyPair()`]: #cryptogeneratekeypairtype-options-callback [`crypto.getCurves()`]: #cryptogetcurves [`crypto.getDiffieHellman()`]: #cryptogetdiffiehellmangroupname [`crypto.getHashes()`]: #cryptogethashes @@ -6575,6 +6869,8 @@ See the [list of SSL OP Flags][] for details. [`crypto.publicEncrypt()`]: #cryptopublicencryptkey-buffer [`crypto.randomBytes()`]: #cryptorandombytessize-callback [`crypto.randomFill()`]: #cryptorandomfillbuffer-offset-size-callback +[`crypto.sign()`]: #cryptosignalgorithm-data-key-callback +[`crypto.verify()`]: #cryptoverifyalgorithm-data-key-signature-callback [`crypto.webcrypto.getRandomValues()`]: webcrypto.md#cryptogetrandomvaluestypedarray [`crypto.webcrypto.subtle`]: webcrypto.md#class-subtlecrypto [`decipher.final()`]: #decipherfinaloutputencoding diff --git a/lib/internal/crypto/keys.js b/lib/internal/crypto/keys.js index a3609690adeb36..80c073a1dbfac1 100644 --- a/lib/internal/crypto/keys.js +++ b/lib/internal/crypto/keys.js @@ -27,6 +27,13 @@ const { kKeyEncodingSEC1, } = internalBinding('crypto'); +const { + crypto: { + POINT_CONVERSION_COMPRESSED, + POINT_CONVERSION_UNCOMPRESSED, + }, +} = internalBinding('constants'); + const { validateObject, validateOneOf, @@ -82,6 +89,7 @@ const kKeyUsages = Symbol('kKeyUsages'); const kCachedAlgorithm = Symbol('kCachedAlgorithm'); const kCachedKeyUsages = Symbol('kCachedKeyUsages'); + // Key input contexts. const kConsumePublic = 0; const kConsumePrivate = 1; @@ -340,14 +348,27 @@ const { } export(options) { - if (options && options.format === 'jwk') { - return this[kHandle].exportJwk({}, false); + switch (options?.format) { + case 'jwk': + return this[kHandle].exportJwk({}, false); + case 'raw-public': { + if (this.asymmetricKeyType === 'ec') { + const { type = 'uncompressed' } = options; + validateOneOf(type, 'options.type', ['compressed', 'uncompressed']); + const form = type === 'compressed' ? + POINT_CONVERSION_COMPRESSED : POINT_CONVERSION_UNCOMPRESSED; + return this[kHandle].exportECPublicRaw(form); + } + return this[kHandle].rawPublicKey(); + } + default: { + const { + format, + type, + } = parsePublicKeyEncoding(options, this.asymmetricKeyType); + return this[kHandle].export(format, type); + } } - const { - format, - type, - } = parsePublicKeyEncoding(options, this.asymmetricKeyType); - return this[kHandle].export(format, type); } } @@ -357,20 +378,32 @@ const { } export(options) { - if (options && options.format === 'jwk') { - if (options.passphrase !== undefined) { - throw new ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS( - 'jwk', 'does not support encryption'); + if (options?.passphrase !== undefined && + options.format !== 'pem' && options.format !== 'der') { + throw new ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS( + options.format, 'does not support encryption'); + } + switch (options?.format) { + case 'jwk': + return this[kHandle].exportJwk({}, false); + case 'raw-private': { + if (this.asymmetricKeyType === 'ec') { + return this[kHandle].exportECPrivateRaw(); + } + return this[kHandle].rawPrivateKey(); + } + case 'raw-seed': + return this[kHandle].rawSeed(); + default: { + const { + format, + type, + cipher, + passphrase, + } = parsePrivateKeyEncoding(options, this.asymmetricKeyType); + return this[kHandle].export(format, type, cipher, passphrase); } - return this[kHandle].exportJwk({}, false); } - const { - format, - type, - cipher, - passphrase, - } = parsePrivateKeyEncoding(options, this.asymmetricKeyType); - return this[kHandle].export(format, type, cipher, passphrase); } } @@ -549,13 +582,8 @@ function mlDsaPubLen(alg) { function getKeyObjectHandleFromJwk(key, ctx) { validateObject(key, 'key'); - if (KeyObjectHandle.prototype.initPqcRaw) { - validateOneOf( - key.kty, 'key.kty', ['RSA', 'EC', 'OKP', 'AKP']); - } else { - validateOneOf( - key.kty, 'key.kty', ['RSA', 'EC', 'OKP']); - } + validateOneOf( + key.kty, 'key.kty', ['RSA', 'EC', 'OKP', 'AKP']); const isPublic = ctx === kConsumePublic || ctx === kCreatePublic; if (key.kty === 'AKP') { @@ -691,6 +719,79 @@ function getKeyObjectHandleFromJwk(key, ctx) { return handle; } + +function getKeyObjectHandleFromRaw(options, data, format) { + if (!isStringOrBuffer(data)) { + throw new ERR_INVALID_ARG_TYPE( + 'key.key', + ['ArrayBuffer', 'Buffer', 'TypedArray', 'DataView'], + data); + } + + const keyData = getArrayBufferOrView(data, 'key.key'); + + validateString(options.asymmetricKeyType, 'key.asymmetricKeyType'); + const asymmetricKeyType = options.asymmetricKeyType; + + const handle = new KeyObjectHandle(); + + switch (asymmetricKeyType) { + case 'ec': { + validateString(options.namedCurve, 'key.namedCurve'); + if (format === 'raw-public') { + if (!handle.initECRaw(options.namedCurve, keyData)) { + throw new ERR_INVALID_ARG_VALUE('key.key', keyData); + } + } else if (!handle.initECPrivateRaw(options.namedCurve, keyData)) { + throw new ERR_INVALID_ARG_VALUE('key.key', keyData); + } + return handle; + } + case 'ed25519': + case 'ed448': + case 'x25519': + case 'x448': { + const keyType = format === 'raw-public' ? kKeyTypePublic : kKeyTypePrivate; + if (!handle.initEDRaw(asymmetricKeyType, keyData, keyType)) { + throw new ERR_INVALID_ARG_VALUE('key.key', keyData); + } + return handle; + } + case 'rsa': + case 'rsa-pss': + case 'dsa': + case 'dh': + throw new ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS( + format, `is not supported for ${asymmetricKeyType} keys`); + case 'ml-dsa-44': + case 'ml-dsa-65': + case 'ml-dsa-87': + case 'ml-kem-512': + case 'ml-kem-768': + case 'ml-kem-1024': + case 'slh-dsa-sha2-128f': + case 'slh-dsa-sha2-128s': + case 'slh-dsa-sha2-192f': + case 'slh-dsa-sha2-192s': + case 'slh-dsa-sha2-256f': + case 'slh-dsa-sha2-256s': + case 'slh-dsa-shake-128f': + case 'slh-dsa-shake-128s': + case 'slh-dsa-shake-192f': + case 'slh-dsa-shake-192s': + case 'slh-dsa-shake-256f': + case 'slh-dsa-shake-256s': { + const keyType = format === 'raw-public' ? kKeyTypePublic : kKeyTypePrivate; + if (!handle.initPqcRaw(asymmetricKeyType, keyData, keyType)) { + throw new ERR_INVALID_ARG_VALUE('key.key', keyData); + } + return handle; + } + default: + throw new ERR_INVALID_ARG_VALUE('asymmetricKeyType', asymmetricKeyType); + } +} + function prepareAsymmetricKey(key, ctx) { if (isKeyObject(key)) { // Best case: A key object, as simple as that. @@ -712,6 +813,12 @@ function prepareAsymmetricKey(key, ctx) { else if (format === 'jwk') { validateObject(data, 'key.key'); return { data: getKeyObjectHandleFromJwk(data, ctx), format: 'jwk' }; + } else if (format === 'raw-public' || format === 'raw-private' || + format === 'raw-seed') { + return { + data: getKeyObjectHandleFromRaw(key, data, format), + format, + }; } // Either PEM or DER using PKCS#1 or SPKI. @@ -777,7 +884,7 @@ function createPublicKey(key) { const { format, type, data, passphrase } = prepareAsymmetricKey(key, kCreatePublic); let handle; - if (format === 'jwk') { + if (format === 'jwk' || format === 'raw-public') { handle = data; } else { handle = new KeyObjectHandle(); @@ -790,7 +897,7 @@ function createPrivateKey(key) { const { format, type, data, passphrase } = prepareAsymmetricKey(key, kCreatePrivate); let handle; - if (format === 'jwk') { + if (format === 'jwk' || format === 'raw-private' || format === 'raw-seed') { handle = data; } else { handle = new KeyObjectHandle(); diff --git a/src/crypto/crypto_keys.cc b/src/crypto/crypto_keys.cc index e805a984322c83..9f489b3f62763d 100644 --- a/src/crypto/crypto_keys.cc +++ b/src/crypto/crypto_keys.cc @@ -19,8 +19,10 @@ namespace node { +using ncrypto::BignumPointer; using ncrypto::BIOPointer; using ncrypto::ECKeyPointer; +using ncrypto::ECPointPointer; using ncrypto::EVPKeyCtxPointer; using ncrypto::EVPKeyPointer; using ncrypto::MarkPopErrorOnReturn; @@ -271,33 +273,41 @@ bool ExportJWKInner(Environment* env, } int GetNidFromName(const char* name) { - int nid; - if (strcmp(name, "Ed25519") == 0) { - nid = EVP_PKEY_ED25519; - } else if (strcmp(name, "Ed448") == 0) { - nid = EVP_PKEY_ED448; - } else if (strcmp(name, "X25519") == 0) { - nid = EVP_PKEY_X25519; - } else if (strcmp(name, "X448") == 0) { - nid = EVP_PKEY_X448; + static constexpr struct { + const char* name; + int nid; + } kNameToNid[] = { + {"Ed25519", EVP_PKEY_ED25519}, + {"Ed448", EVP_PKEY_ED448}, + {"X25519", EVP_PKEY_X25519}, + {"X448", EVP_PKEY_X448}, #if OPENSSL_WITH_PQC - } else if (strcmp(name, "ML-DSA-44") == 0) { - nid = EVP_PKEY_ML_DSA_44; - } else if (strcmp(name, "ML-DSA-65") == 0) { - nid = EVP_PKEY_ML_DSA_65; - } else if (strcmp(name, "ML-DSA-87") == 0) { - nid = EVP_PKEY_ML_DSA_87; - } else if (strcmp(name, "ML-KEM-512") == 0) { - nid = EVP_PKEY_ML_KEM_512; - } else if (strcmp(name, "ML-KEM-768") == 0) { - nid = EVP_PKEY_ML_KEM_768; - } else if (strcmp(name, "ML-KEM-1024") == 0) { - nid = EVP_PKEY_ML_KEM_1024; + {"ML-DSA-44", EVP_PKEY_ML_DSA_44}, + {"ML-DSA-65", EVP_PKEY_ML_DSA_65}, + {"ML-DSA-87", EVP_PKEY_ML_DSA_87}, + {"ML-KEM-512", EVP_PKEY_ML_KEM_512}, + {"ML-KEM-768", EVP_PKEY_ML_KEM_768}, + {"ML-KEM-1024", EVP_PKEY_ML_KEM_1024}, + {"SLH-DSA-SHA2-128f", EVP_PKEY_SLH_DSA_SHA2_128F}, + {"SLH-DSA-SHA2-128s", EVP_PKEY_SLH_DSA_SHA2_128S}, + {"SLH-DSA-SHA2-192f", EVP_PKEY_SLH_DSA_SHA2_192F}, + {"SLH-DSA-SHA2-192s", EVP_PKEY_SLH_DSA_SHA2_192S}, + {"SLH-DSA-SHA2-256f", EVP_PKEY_SLH_DSA_SHA2_256F}, + {"SLH-DSA-SHA2-256s", EVP_PKEY_SLH_DSA_SHA2_256S}, + {"SLH-DSA-SHAKE-128f", EVP_PKEY_SLH_DSA_SHAKE_128F}, + {"SLH-DSA-SHAKE-128s", EVP_PKEY_SLH_DSA_SHAKE_128S}, + {"SLH-DSA-SHAKE-192f", EVP_PKEY_SLH_DSA_SHAKE_192F}, + {"SLH-DSA-SHAKE-192s", EVP_PKEY_SLH_DSA_SHAKE_192S}, + {"SLH-DSA-SHAKE-256f", EVP_PKEY_SLH_DSA_SHAKE_256F}, + {"SLH-DSA-SHAKE-256s", EVP_PKEY_SLH_DSA_SHAKE_256S}, #endif - } else { - nid = NID_undef; + }; + for (const auto& entry : kNameToNid) { + if (StringEqualNoCase(name, entry.name)) { + return entry.nid; + } } - return nid; + return NID_undef; } } // namespace @@ -626,11 +636,15 @@ Local KeyObjectHandle::Initialize(Environment* env) { SetProtoMethod(isolate, templ, "exportJwk", ExportJWK); SetProtoMethod(isolate, templ, "initECRaw", InitECRaw); SetProtoMethod(isolate, templ, "initEDRaw", InitEDRaw); -#if OPENSSL_WITH_PQC SetProtoMethod(isolate, templ, "initPqcRaw", InitPqcRaw); + SetProtoMethod(isolate, templ, "initECPrivateRaw", InitECPrivateRaw); SetProtoMethodNoSideEffect(isolate, templ, "rawPublicKey", RawPublicKey); + SetProtoMethodNoSideEffect(isolate, templ, "rawPrivateKey", RawPrivateKey); + SetProtoMethodNoSideEffect( + isolate, templ, "exportECPublicRaw", ExportECPublicRaw); + SetProtoMethodNoSideEffect( + isolate, templ, "exportECPrivateRaw", ExportECPrivateRaw); SetProtoMethodNoSideEffect(isolate, templ, "rawSeed", RawSeed); -#endif SetProtoMethod(isolate, templ, "initJwk", InitJWK); SetProtoMethod(isolate, templ, "keyDetail", GetKeyDetail); SetProtoMethod(isolate, templ, "equals", Equals); @@ -651,11 +665,13 @@ void KeyObjectHandle::RegisterExternalReferences( registry->Register(ExportJWK); registry->Register(InitECRaw); registry->Register(InitEDRaw); -#if OPENSSL_WITH_PQC registry->Register(InitPqcRaw); + registry->Register(InitECPrivateRaw); registry->Register(RawPublicKey); + registry->Register(RawPrivateKey); + registry->Register(ExportECPublicRaw); + registry->Register(ExportECPrivateRaw); registry->Register(RawSeed); -#endif registry->Register(InitJWK); registry->Register(GetKeyDetail); registry->Register(Equals); @@ -780,7 +796,8 @@ void KeyObjectHandle::InitECRaw(const FunctionCallbackInfo& args) { MarkPopErrorOnReturn mark_pop_error_on_return; - int id = OBJ_txt2nid(*name); + int id = ncrypto::Ec::GetCurveIdFromName(*name); + if (id == NID_undef) return THROW_ERR_CRYPTO_INVALID_CURVE(env); auto eckey = ECKeyPointer::NewByCurveName(id); if (!eckey) return args.GetReturnValue().Set(false); @@ -841,14 +858,14 @@ void KeyObjectHandle::InitEDRaw(const FunctionCallbackInfo& args) { break; } default: - UNREACHABLE(); + return args.GetReturnValue().Set(false); } args.GetReturnValue().Set(true); } -#if OPENSSL_WITH_PQC void KeyObjectHandle::InitPqcRaw(const FunctionCallbackInfo& args) { +#if OPENSSL_WITH_PQC KeyObjectHandle* key; ASSIGN_OR_RETURN_UNWRAP(&key, args.This()); @@ -860,39 +877,61 @@ void KeyObjectHandle::InitPqcRaw(const FunctionCallbackInfo& args) { MarkPopErrorOnReturn mark_pop_error_on_return; + int id = GetNidFromName(*name); typedef EVPKeyPointer (*new_key_fn)( int, const ncrypto::Buffer&); - new_key_fn fn = type == kKeyTypePrivate ? EVPKeyPointer::NewRawSeed - : EVPKeyPointer::NewRawPublic; - - int id = GetNidFromName(*name); + new_key_fn fn = nullptr; switch (id) { + case EVP_PKEY_ML_KEM_512: + case EVP_PKEY_ML_KEM_768: + case EVP_PKEY_ML_KEM_1024: case EVP_PKEY_ML_DSA_44: case EVP_PKEY_ML_DSA_65: case EVP_PKEY_ML_DSA_87: - case EVP_PKEY_ML_KEM_512: - case EVP_PKEY_ML_KEM_768: - case EVP_PKEY_ML_KEM_1024: { - auto pkey = fn(id, - ncrypto::Buffer{ - .data = key_data.data(), - .len = key_data.size(), - }); - if (!pkey) { - return args.GetReturnValue().Set(false); - } - key->data_ = KeyObjectData::CreateAsymmetric(type, std::move(pkey)); - CHECK(key->data_); + fn = type == kKeyTypePrivate ? EVPKeyPointer::NewRawSeed + : EVPKeyPointer::NewRawPublic; + break; + case EVP_PKEY_SLH_DSA_SHA2_128F: + case EVP_PKEY_SLH_DSA_SHA2_128S: + case EVP_PKEY_SLH_DSA_SHA2_192F: + case EVP_PKEY_SLH_DSA_SHA2_192S: + case EVP_PKEY_SLH_DSA_SHA2_256F: + case EVP_PKEY_SLH_DSA_SHA2_256S: + case EVP_PKEY_SLH_DSA_SHAKE_128F: + case EVP_PKEY_SLH_DSA_SHAKE_128S: + case EVP_PKEY_SLH_DSA_SHAKE_192F: + case EVP_PKEY_SLH_DSA_SHAKE_192S: + case EVP_PKEY_SLH_DSA_SHAKE_256F: + case EVP_PKEY_SLH_DSA_SHAKE_256S: + fn = type == kKeyTypePrivate ? EVPKeyPointer::NewRawPrivate + : EVPKeyPointer::NewRawPublic; break; - } default: - UNREACHABLE(); + break; } + if (fn == nullptr) { + return args.GetReturnValue().Set(false); + } + + auto pkey = fn(id, + ncrypto::Buffer{ + .data = key_data.data(), + .len = key_data.size(), + }); + if (!pkey) { + return args.GetReturnValue().Set(false); + } + key->data_ = KeyObjectData::CreateAsymmetric(type, std::move(pkey)); + CHECK(key->data_); + args.GetReturnValue().Set(true); -} +#else + Environment* env = Environment::GetCurrent(args); + THROW_ERR_INVALID_ARG_VALUE(env, "Unsupported key type"); #endif +} void KeyObjectHandle::Equals(const FunctionCallbackInfo& args) { KeyObjectHandle* self_handle; @@ -1118,7 +1157,6 @@ MaybeLocal KeyObjectHandle::ExportPrivateKey( return WritePrivateKey(env(), data_.GetAsymmetricKey(), config); } -#if OPENSSL_WITH_PQC void KeyObjectHandle::RawPublicKey( const v8::FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); @@ -1129,18 +1167,216 @@ void KeyObjectHandle::RawPublicKey( CHECK_NE(data.GetKeyType(), kKeyTypeSecret); Mutex::ScopedLock lock(data.mutex()); - auto raw_data = data.GetAsymmetricKey().rawPublicKey(); + const auto& pkey = data.GetAsymmetricKey(); + + switch (pkey.id()) { + case EVP_PKEY_ED25519: + case EVP_PKEY_ED448: + case EVP_PKEY_X25519: + case EVP_PKEY_X448: +#if OPENSSL_WITH_PQC + case EVP_PKEY_ML_DSA_44: + case EVP_PKEY_ML_DSA_65: + case EVP_PKEY_ML_DSA_87: + case EVP_PKEY_ML_KEM_512: + case EVP_PKEY_ML_KEM_768: + case EVP_PKEY_ML_KEM_1024: + case EVP_PKEY_SLH_DSA_SHA2_128F: + case EVP_PKEY_SLH_DSA_SHA2_128S: + case EVP_PKEY_SLH_DSA_SHA2_192F: + case EVP_PKEY_SLH_DSA_SHA2_192S: + case EVP_PKEY_SLH_DSA_SHA2_256F: + case EVP_PKEY_SLH_DSA_SHA2_256S: + case EVP_PKEY_SLH_DSA_SHAKE_128F: + case EVP_PKEY_SLH_DSA_SHAKE_128S: + case EVP_PKEY_SLH_DSA_SHAKE_192F: + case EVP_PKEY_SLH_DSA_SHAKE_192S: + case EVP_PKEY_SLH_DSA_SHAKE_256F: + case EVP_PKEY_SLH_DSA_SHAKE_256S: +#endif + break; + default: + return THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS(env); + } + + auto raw_data = pkey.rawPublicKey(); if (!raw_data) { return THROW_ERR_CRYPTO_OPERATION_FAILED(env, "Failed to get raw public key"); } args.GetReturnValue().Set( - Buffer::Copy( - env, reinterpret_cast(raw_data.get()), raw_data.size()) + Buffer::Copy(env, raw_data.get(), raw_data.size()) + .FromMaybe(Local())); +} + +void KeyObjectHandle::RawPrivateKey( + const v8::FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + KeyObjectHandle* key; + ASSIGN_OR_RETURN_UNWRAP(&key, args.This()); + + const KeyObjectData& data = key->Data(); + CHECK_EQ(data.GetKeyType(), kKeyTypePrivate); + + Mutex::ScopedLock lock(data.mutex()); + const auto& pkey = data.GetAsymmetricKey(); + + switch (pkey.id()) { + case EVP_PKEY_ED25519: + case EVP_PKEY_ED448: + case EVP_PKEY_X25519: + case EVP_PKEY_X448: +#if OPENSSL_WITH_PQC + case EVP_PKEY_SLH_DSA_SHA2_128F: + case EVP_PKEY_SLH_DSA_SHA2_128S: + case EVP_PKEY_SLH_DSA_SHA2_192F: + case EVP_PKEY_SLH_DSA_SHA2_192S: + case EVP_PKEY_SLH_DSA_SHA2_256F: + case EVP_PKEY_SLH_DSA_SHA2_256S: + case EVP_PKEY_SLH_DSA_SHAKE_128F: + case EVP_PKEY_SLH_DSA_SHAKE_128S: + case EVP_PKEY_SLH_DSA_SHAKE_192F: + case EVP_PKEY_SLH_DSA_SHAKE_192S: + case EVP_PKEY_SLH_DSA_SHAKE_256F: + case EVP_PKEY_SLH_DSA_SHAKE_256S: +#endif + break; + default: + return THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS(env); + } + + auto raw_data = pkey.rawPrivateKey(); + if (!raw_data) { + return THROW_ERR_CRYPTO_OPERATION_FAILED(env, + "Failed to get raw private key"); + } + + args.GetReturnValue().Set( + Buffer::Copy(env, raw_data.get(), raw_data.size()) .FromMaybe(Local())); } +void KeyObjectHandle::ExportECPublicRaw( + const v8::FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + KeyObjectHandle* key; + ASSIGN_OR_RETURN_UNWRAP(&key, args.This()); + + const KeyObjectData& data = key->Data(); + CHECK_NE(data.GetKeyType(), kKeyTypeSecret); + + Mutex::ScopedLock lock(data.mutex()); + const auto& m_pkey = data.GetAsymmetricKey(); + if (m_pkey.id() != EVP_PKEY_EC) { + return THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS(env); + } + + const EC_KEY* ec_key = m_pkey; + CHECK_NOT_NULL(ec_key); + + CHECK(args[0]->IsInt32()); + auto form = + static_cast(args[0].As()->Value()); + + const auto group = ECKeyPointer::GetGroup(ec_key); + const auto point = ECKeyPointer::GetPublicKey(ec_key); + + Local buf; + if (!ECPointToBuffer(env, group, point, form).ToLocal(&buf)) return; + + args.GetReturnValue().Set(buf); +} + +void KeyObjectHandle::ExportECPrivateRaw( + const v8::FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + KeyObjectHandle* key; + ASSIGN_OR_RETURN_UNWRAP(&key, args.This()); + + const KeyObjectData& data = key->Data(); + CHECK_EQ(data.GetKeyType(), kKeyTypePrivate); + + Mutex::ScopedLock lock(data.mutex()); + const auto& m_pkey = data.GetAsymmetricKey(); + if (m_pkey.id() != EVP_PKEY_EC) { + return THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS(env); + } + + const EC_KEY* ec_key = m_pkey; + CHECK_NOT_NULL(ec_key); + + const BIGNUM* private_key = ECKeyPointer::GetPrivateKey(ec_key); + CHECK_NOT_NULL(private_key); + + const auto group = ECKeyPointer::GetGroup(ec_key); + auto order = BignumPointer::New(); + CHECK(order); + CHECK(EC_GROUP_get_order(group, order.get(), nullptr)); + + auto buf = BignumPointer::EncodePadded(private_key, order.byteLength()); + if (!buf) { + return THROW_ERR_CRYPTO_OPERATION_FAILED(env, + "Failed to export EC private key"); + } + + args.GetReturnValue().Set(Buffer::Copy(env, buf.get(), buf.size()) + .FromMaybe(Local())); +} + +void KeyObjectHandle::InitECPrivateRaw( + const FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + KeyObjectHandle* key; + ASSIGN_OR_RETURN_UNWRAP(&key, args.This()); + + CHECK(args[0]->IsString()); + Utf8Value name(env->isolate(), args[0]); + + ArrayBufferOrViewContents key_data(args[1]); + + MarkPopErrorOnReturn mark_pop_error_on_return; + + int nid = ncrypto::Ec::GetCurveIdFromName(*name); + if (nid == NID_undef) return THROW_ERR_CRYPTO_INVALID_CURVE(env); + + auto eckey = ECKeyPointer::NewByCurveName(nid); + if (!eckey) return args.GetReturnValue().Set(false); + + // Validate key data size matches the curve's expected private key length + const auto group = eckey.getGroup(); + auto order = BignumPointer::New(); + CHECK(order); + CHECK(EC_GROUP_get_order(group, order.get(), nullptr)); + if (key_data.size() != order.byteLength()) + return args.GetReturnValue().Set(false); + + BignumPointer priv_bn(key_data.data(), key_data.size()); + if (!priv_bn) return args.GetReturnValue().Set(false); + + if (!eckey.setPrivateKey(priv_bn)) return args.GetReturnValue().Set(false); + + // Compute public key from private key + auto pub_point = ECPointPointer::New(group); + if (!pub_point || !pub_point.mul(group, priv_bn.get())) { + return args.GetReturnValue().Set(false); + } + + if (!eckey.setPublicKey(pub_point)) return args.GetReturnValue().Set(false); + + auto pkey = EVPKeyPointer::New(); + if (!pkey.assign(eckey)) { + return args.GetReturnValue().Set(false); + } + + eckey.release(); + + key->data_ = + KeyObjectData::CreateAsymmetric(kKeyTypePrivate, std::move(pkey)); + + args.GetReturnValue().Set(true); +} + void KeyObjectHandle::RawSeed(const v8::FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); KeyObjectHandle* key; @@ -1150,17 +1386,33 @@ void KeyObjectHandle::RawSeed(const v8::FunctionCallbackInfo& args) { CHECK_EQ(data.GetKeyType(), kKeyTypePrivate); Mutex::ScopedLock lock(data.mutex()); - auto raw_data = data.GetAsymmetricKey().rawSeed(); + const auto& pkey = data.GetAsymmetricKey(); + + switch (pkey.id()) { +#if OPENSSL_WITH_PQC + case EVP_PKEY_ML_DSA_44: + case EVP_PKEY_ML_DSA_65: + case EVP_PKEY_ML_DSA_87: + case EVP_PKEY_ML_KEM_512: + case EVP_PKEY_ML_KEM_768: + case EVP_PKEY_ML_KEM_1024: + break; +#endif + default: + return THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS(env); + } + +#if OPENSSL_WITH_PQC + auto raw_data = pkey.rawSeed(); if (!raw_data) { return THROW_ERR_CRYPTO_OPERATION_FAILED(env, "Failed to get raw seed"); } args.GetReturnValue().Set( - Buffer::Copy( - env, reinterpret_cast(raw_data.get()), raw_data.size()) + Buffer::Copy(env, raw_data.get(), raw_data.size()) .FromMaybe(Local())); -} #endif +} void KeyObjectHandle::ExportJWK( const v8::FunctionCallbackInfo& args) { diff --git a/src/crypto/crypto_keys.h b/src/crypto/crypto_keys.h index 90c252eba28bea..d35249724a448e 100644 --- a/src/crypto/crypto_keys.h +++ b/src/crypto/crypto_keys.h @@ -170,11 +170,15 @@ class KeyObjectHandle : public BaseObject { static void Export(const v8::FunctionCallbackInfo& args); -#if OPENSSL_WITH_PQC - static void InitPqcRaw(const v8::FunctionCallbackInfo& args); static void RawPublicKey(const v8::FunctionCallbackInfo& args); + static void RawPrivateKey(const v8::FunctionCallbackInfo& args); + static void ExportECPublicRaw( + const v8::FunctionCallbackInfo& args); + static void ExportECPrivateRaw( + const v8::FunctionCallbackInfo& args); + static void InitECPrivateRaw(const v8::FunctionCallbackInfo& args); + static void InitPqcRaw(const v8::FunctionCallbackInfo& args); static void RawSeed(const v8::FunctionCallbackInfo& args); -#endif v8::MaybeLocal ExportSecretKey() const; v8::MaybeLocal ExportPublicKey( diff --git a/src/node_errors.h b/src/node_errors.h index 406ad251bcf4bb..8f14b75b10493c 100644 --- a/src/node_errors.h +++ b/src/node_errors.h @@ -51,6 +51,7 @@ void OOMErrorHandler(const char* location, const v8::OOMDetails& details); V(ERR_CPU_PROFILE_NOT_STARTED, Error) \ V(ERR_CPU_PROFILE_TOO_MANY, Error) \ V(ERR_CRYPTO_CUSTOM_ENGINE_NOT_SUPPORTED, Error) \ + V(ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS, Error) \ V(ERR_CRYPTO_INITIALIZATION_FAILED, Error) \ V(ERR_CRYPTO_INVALID_ARGON2_PARAMS, TypeError) \ V(ERR_CRYPTO_INVALID_AUTH_TAG, TypeError) \ @@ -191,6 +192,8 @@ ERRORS_WITH_CODE(V) V(ERR_CLOSED_MESSAGE_PORT, "Cannot send data on closed MessagePort") \ V(ERR_CONSTRUCT_CALL_INVALID, "Constructor cannot be called") \ V(ERR_CONSTRUCT_CALL_REQUIRED, "Cannot call constructor without `new`") \ + V(ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS, \ + "The selected key encoding is incompatible with the key type") \ V(ERR_CRYPTO_INITIALIZATION_FAILED, "Initialization failed") \ V(ERR_CRYPTO_INVALID_ARGON2_PARAMS, "Invalid Argon2 params") \ V(ERR_CRYPTO_INVALID_AUTH_TAG, "Invalid authentication tag") \ diff --git a/test/parallel/test-crypto-encap-decap.js b/test/parallel/test-crypto-encap-decap.js index 2c2ccd42ca2365..10dc451ef55d68 100644 --- a/test/parallel/test-crypto-encap-decap.js +++ b/test/parallel/test-crypto-encap-decap.js @@ -26,6 +26,7 @@ const keys = { privateKey: fixtures.readKey('rsa_private_2048.pem', 'ascii'), sharedSecretLength: 256, ciphertextLength: 256, + raw: false, }, 'rsa-pss': { supported: false, // Only raw RSA is supported @@ -38,6 +39,7 @@ const keys = { privateKey: fixtures.readKey('ec_p256_private.pem', 'ascii'), sharedSecretLength: 32, ciphertextLength: 65, + raw: true, }, 'p-384': { supported: hasOpenSSL(3, 2), // DHKEM was added in 3.2 @@ -45,6 +47,7 @@ const keys = { privateKey: fixtures.readKey('ec_p384_private.pem', 'ascii'), sharedSecretLength: 48, ciphertextLength: 97, + raw: true, }, 'p-521': { supported: hasOpenSSL(3, 2), // DHKEM was added in 3.2 @@ -52,6 +55,7 @@ const keys = { privateKey: fixtures.readKey('ec_p521_private.pem', 'ascii'), sharedSecretLength: 64, ciphertextLength: 133, + raw: true, }, 'secp256k1': { supported: false, // only P-256, P-384, and P-521 are supported @@ -64,6 +68,7 @@ const keys = { privateKey: fixtures.readKey('x25519_private.pem', 'ascii'), sharedSecretLength: 32, ciphertextLength: 32, + raw: true, }, 'x448': { supported: hasOpenSSL(3, 2), // DHKEM was added in 3.2 @@ -71,6 +76,7 @@ const keys = { privateKey: fixtures.readKey('x448_private.pem', 'ascii'), sharedSecretLength: 64, ciphertextLength: 56, + raw: true, }, 'ml-kem-512': { supported: hasOpenSSL(3, 5), @@ -78,6 +84,7 @@ const keys = { privateKey: fixtures.readKey('ml_kem_512_private.pem', 'ascii'), sharedSecretLength: 32, ciphertextLength: 768, + raw: true, }, 'ml-kem-768': { supported: hasOpenSSL(3, 5), @@ -85,6 +92,7 @@ const keys = { privateKey: fixtures.readKey('ml_kem_768_private.pem', 'ascii'), sharedSecretLength: 32, ciphertextLength: 1088, + raw: true, }, 'ml-kem-1024': { supported: hasOpenSSL(3, 5), @@ -92,10 +100,13 @@ const keys = { privateKey: fixtures.readKey('ml_kem_1024_private.pem', 'ascii'), sharedSecretLength: 32, ciphertextLength: 1568, + raw: true, }, }; -for (const [name, { supported, publicKey, privateKey, sharedSecretLength, ciphertextLength }] of Object.entries(keys)) { +for (const [name, { + supported, publicKey, privateKey, sharedSecretLength, ciphertextLength, raw, +}] of Object.entries(keys)) { if (!supported) { assert.throws(() => crypto.encapsulate(publicKey), { code: /ERR_OSSL_EVP_DECODE_ERROR|ERR_CRYPTO_OPERATION_FAILED/ }); @@ -136,6 +147,25 @@ for (const [name, { supported, publicKey, privateKey, sharedSecretLength, cipher }); } + if (raw) { + const { asymmetricKeyType } = keyObjects.privateKey; + const { namedCurve } = keyObjects.privateKey.asymmetricKeyDetails; + const privateFormat = asymmetricKeyType.startsWith('ml-') ? 'raw-seed' : 'raw-private'; + const rawPublic = { + key: keyObjects.publicKey.export({ format: 'raw-public' }), + format: 'raw-public', + asymmetricKeyType, + ...(namedCurve ? { namedCurve } : {}), + }; + const rawPrivate = { + key: keyObjects.privateKey.export({ format: privateFormat }), + format: privateFormat, + asymmetricKeyType, + ...(namedCurve ? { namedCurve } : {}), + }; + keyPairs.push({ publicKey: rawPublic, privateKey: rawPrivate }); + } + for (const kp of keyPairs) { // sync { diff --git a/test/parallel/test-crypto-key-objects-raw.js b/test/parallel/test-crypto-key-objects-raw.js new file mode 100644 index 00000000000000..f301cc1942fd9a --- /dev/null +++ b/test/parallel/test-crypto-key-objects-raw.js @@ -0,0 +1,446 @@ +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); + +const assert = require('assert'); +const crypto = require('crypto'); +const fixtures = require('../common/fixtures'); +const { hasOpenSSL } = require('../common/crypto'); + +// EC: NIST and OpenSSL curve names are both recognized for raw-public and raw-private +{ + const pubKeyObj = crypto.createPublicKey( + fixtures.readKey('ec_p256_public.pem', 'ascii')); + const privKeyObj = crypto.createPrivateKey( + fixtures.readKey('ec_p256_private.pem', 'ascii')); + + const rawPub = pubKeyObj.export({ format: 'raw-public' }); + const rawPriv = privKeyObj.export({ format: 'raw-private' }); + + for (const namedCurve of ['P-256', 'prime256v1']) { + const importedPub = crypto.createPublicKey({ + key: rawPub, format: 'raw-public', asymmetricKeyType: 'ec', namedCurve, + }); + assert.strictEqual(importedPub.equals(pubKeyObj), true); + + const importedPriv = crypto.createPrivateKey({ + key: rawPriv, format: 'raw-private', asymmetricKeyType: 'ec', namedCurve, + }); + assert.strictEqual(importedPriv.equals(privKeyObj), true); + } +} + +// Key types that don't support raw-* formats +{ + for (const [type, pub, priv] of [ + ['rsa', 'rsa_public_2048.pem', 'rsa_private_2048.pem'], + ['dsa', 'dsa_public.pem', 'dsa_private.pem'], + ]) { + const pubKeyObj = crypto.createPublicKey( + fixtures.readKey(pub, 'ascii')); + const privKeyObj = crypto.createPrivateKey( + fixtures.readKey(priv, 'ascii')); + + assert.throws(() => pubKeyObj.export({ format: 'raw-public' }), + { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + assert.throws(() => privKeyObj.export({ format: 'raw-private' }), + { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + assert.throws(() => privKeyObj.export({ format: 'raw-seed' }), + { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + + for (const format of ['raw-public', 'raw-private', 'raw-seed']) { + assert.throws(() => crypto.createPublicKey({ + key: Buffer.alloc(32), format, asymmetricKeyType: type, + }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + } + } + + // DH keys also don't support raw formats + { + const privKeyObj = crypto.createPrivateKey( + fixtures.readKey('dh_private.pem', 'ascii')); + assert.throws(() => privKeyObj.export({ format: 'raw-private' }), + { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + + for (const format of ['raw-public', 'raw-private', 'raw-seed']) { + assert.throws(() => crypto.createPrivateKey({ + key: Buffer.alloc(32), format, asymmetricKeyType: 'dh', + }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + } + } +} + +// PQC import throws when PQC is not supported +if (!hasOpenSSL(3, 5)) { + for (const asymmetricKeyType of [ + 'ml-dsa-44', 'ml-dsa-65', 'ml-dsa-87', + 'ml-kem-512', 'ml-kem-768', 'ml-kem-1024', + 'slh-dsa-sha2-128f', 'slh-dsa-shake-128f', + ]) { + for (const format of ['raw-public', 'raw-private', 'raw-seed']) { + assert.throws(() => crypto.createPublicKey({ + key: Buffer.alloc(32), format, asymmetricKeyType, + }), { code: 'ERR_INVALID_ARG_VALUE' }); + } + } +} + +// EC: P-256 and P-384 keys cannot be imported as private/public of the other type +{ + const p256Pub = crypto.createPublicKey( + fixtures.readKey('ec_p256_public.pem', 'ascii')); + const p384Pub = crypto.createPublicKey( + fixtures.readKey('ec_p384_public.pem', 'ascii')); + const p256Priv = crypto.createPrivateKey( + fixtures.readKey('ec_p256_private.pem', 'ascii')); + const p384Priv = crypto.createPrivateKey( + fixtures.readKey('ec_p384_private.pem', 'ascii')); + + const p256RawPub = p256Pub.export({ format: 'raw-public' }); + const p384RawPub = p384Pub.export({ format: 'raw-public' }); + const p256RawPriv = p256Priv.export({ format: 'raw-private' }); + const p384RawPriv = p384Priv.export({ format: 'raw-private' }); + + // P-256 public imported as P-384 + assert.throws(() => crypto.createPublicKey({ + key: p256RawPub, format: 'raw-public', + asymmetricKeyType: 'ec', namedCurve: 'P-384', + }), { code: 'ERR_INVALID_ARG_VALUE' }); + + // P-384 public imported as P-256 + assert.throws(() => crypto.createPublicKey({ + key: p384RawPub, format: 'raw-public', + asymmetricKeyType: 'ec', namedCurve: 'P-256', + }), { code: 'ERR_INVALID_ARG_VALUE' }); + + // P-256 private imported as P-384 + assert.throws(() => crypto.createPrivateKey({ + key: p256RawPriv, format: 'raw-private', + asymmetricKeyType: 'ec', namedCurve: 'P-384', + }), { code: 'ERR_INVALID_ARG_VALUE' }); + + // P-384 private imported as P-256 + assert.throws(() => crypto.createPrivateKey({ + key: p384RawPriv, format: 'raw-private', + asymmetricKeyType: 'ec', namedCurve: 'P-256', + }), { code: 'ERR_INVALID_ARG_VALUE' }); +} + +// ML-KEM: -768 and -512 public keys cannot be imported as the other type +if (hasOpenSSL(3, 5)) { + const mlKem512Pub = crypto.createPublicKey( + fixtures.readKey('ml_kem_512_public.pem', 'ascii')); + const mlKem768Pub = crypto.createPublicKey( + fixtures.readKey('ml_kem_768_public.pem', 'ascii')); + + const mlKem512RawPub = mlKem512Pub.export({ format: 'raw-public' }); + const mlKem768RawPub = mlKem768Pub.export({ format: 'raw-public' }); + + assert.throws(() => crypto.createPublicKey({ + key: mlKem512RawPub, format: 'raw-public', asymmetricKeyType: 'ml-kem-768', + }), { code: 'ERR_INVALID_ARG_VALUE' }); + + assert.throws(() => crypto.createPublicKey({ + key: mlKem768RawPub, format: 'raw-public', asymmetricKeyType: 'ml-kem-512', + }), { code: 'ERR_INVALID_ARG_VALUE' }); +} + +// ML-DSA: -44 and -65 public keys cannot be imported as the other type +if (hasOpenSSL(3, 5)) { + const mlDsa44Pub = crypto.createPublicKey( + fixtures.readKey('ml_dsa_44_public.pem', 'ascii')); + const mlDsa65Pub = crypto.createPublicKey( + fixtures.readKey('ml_dsa_65_public.pem', 'ascii')); + + const mlDsa44RawPub = mlDsa44Pub.export({ format: 'raw-public' }); + const mlDsa65RawPub = mlDsa65Pub.export({ format: 'raw-public' }); + + assert.throws(() => crypto.createPublicKey({ + key: mlDsa44RawPub, format: 'raw-public', asymmetricKeyType: 'ml-dsa-65', + }), { code: 'ERR_INVALID_ARG_VALUE' }); + + assert.throws(() => crypto.createPublicKey({ + key: mlDsa65RawPub, format: 'raw-public', asymmetricKeyType: 'ml-dsa-44', + }), { code: 'ERR_INVALID_ARG_VALUE' }); +} + +// SLH-DSA: mismatched key types with different sizes are rejected +if (hasOpenSSL(3, 5)) { + const slh128fPub = crypto.createPublicKey( + fixtures.readKey('slh_dsa_sha2_128f_public.pem', 'ascii')); + const slh192fPub = crypto.createPublicKey( + fixtures.readKey('slh_dsa_sha2_192f_public.pem', 'ascii')); + const slh128fPriv = crypto.createPrivateKey( + fixtures.readKey('slh_dsa_sha2_128f_private.pem', 'ascii')); + const slh192fPriv = crypto.createPrivateKey( + fixtures.readKey('slh_dsa_sha2_192f_private.pem', 'ascii')); + + const rawPub128f = slh128fPub.export({ format: 'raw-public' }); + const rawPub192f = slh192fPub.export({ format: 'raw-public' }); + const rawPriv128f = slh128fPriv.export({ format: 'raw-private' }); + const rawPriv192f = slh192fPriv.export({ format: 'raw-private' }); + + assert.throws(() => crypto.createPublicKey({ + key: rawPub128f, format: 'raw-public', + asymmetricKeyType: 'slh-dsa-sha2-192f', + }), { code: 'ERR_INVALID_ARG_VALUE' }); + + assert.throws(() => crypto.createPublicKey({ + key: rawPub192f, format: 'raw-public', + asymmetricKeyType: 'slh-dsa-sha2-128f', + }), { code: 'ERR_INVALID_ARG_VALUE' }); + + assert.throws(() => crypto.createPrivateKey({ + key: rawPriv128f, format: 'raw-private', + asymmetricKeyType: 'slh-dsa-sha2-192f', + }), { code: 'ERR_INVALID_ARG_VALUE' }); + + assert.throws(() => crypto.createPrivateKey({ + key: rawPriv192f, format: 'raw-private', + asymmetricKeyType: 'slh-dsa-sha2-128f', + }), { code: 'ERR_INVALID_ARG_VALUE' }); +} + +// Passphrase cannot be used with raw formats +{ + const privKeyObj = crypto.createPrivateKey( + fixtures.readKey('ed25519_private.pem', 'ascii')); + + assert.throws(() => privKeyObj.export({ + format: 'raw-private', passphrase: 'test', + }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + + assert.throws(() => privKeyObj.export({ + format: 'raw-seed', passphrase: 'test', + }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); +} + +// raw-seed export is rejected for key types that do not support seeds +{ + const ecPriv = crypto.createPrivateKey( + fixtures.readKey('ec_p256_private.pem', 'ascii')); + assert.throws(() => ecPriv.export({ format: 'raw-seed' }), + { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + + for (const type of ['ed25519', 'ed448', 'x25519', 'x448']) { + const priv = crypto.createPrivateKey( + fixtures.readKey(`${type}_private.pem`, 'ascii')); + assert.throws(() => priv.export({ format: 'raw-seed' }), + { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + } + + if (hasOpenSSL(3, 5)) { + const slhPriv = crypto.createPrivateKey( + fixtures.readKey('slh_dsa_sha2_128f_private.pem', 'ascii')); + assert.throws(() => slhPriv.export({ format: 'raw-seed' }), + { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + } +} + +// raw-private cannot be used for ml-kem and ml-dsa +if (hasOpenSSL(3, 5)) { + for (const type of ['ml-kem-512', 'ml-dsa-44']) { + const priv = crypto.createPrivateKey( + fixtures.readKey(`${type.replaceAll('-', '_')}_private.pem`, 'ascii')); + assert.throws(() => priv.export({ format: 'raw-private' }), + { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + } +} + +// EC: defaults to uncompressed, can be switched to compressed, both can be imported +{ + const pubKeyObj = crypto.createPublicKey( + fixtures.readKey('ec_p256_public.pem', 'ascii')); + + const defaultExport = pubKeyObj.export({ format: 'raw-public' }); + const compressed = pubKeyObj.export({ format: 'raw-public', type: 'compressed' }); + const uncompressed = pubKeyObj.export({ format: 'raw-public', type: 'uncompressed' }); + + // Default is uncompressed + assert.deepStrictEqual(defaultExport, uncompressed); + + // Compressed starts with 0x02 or 0x03 and is 33 bytes for P-256 + assert.strictEqual(compressed.byteLength, 33); + assert(compressed[0] === 0x02 || compressed[0] === 0x03); + + // Uncompressed starts with 0x04 and is 65 bytes for P-256 + assert.strictEqual(uncompressed.byteLength, 65); + assert.strictEqual(uncompressed[0], 0x04); + + // Both can be imported + const fromCompressed = crypto.createPublicKey({ + key: compressed, format: 'raw-public', + asymmetricKeyType: 'ec', namedCurve: 'P-256', + }); + assert.strictEqual(fromCompressed.equals(pubKeyObj), true); + + const fromUncompressed = crypto.createPublicKey({ + key: uncompressed, format: 'raw-public', + asymmetricKeyType: 'ec', namedCurve: 'P-256', + }); + assert.strictEqual(fromUncompressed.equals(pubKeyObj), true); +} + +// Compressed and uncompressed are the only recognized options +{ + const pubKeyObj = crypto.createPublicKey( + fixtures.readKey('ec_p256_public.pem', 'ascii')); + + assert.throws(() => pubKeyObj.export({ format: 'raw-public', type: 'hybrid' }), + { code: 'ERR_INVALID_ARG_VALUE' }); + + assert.throws(() => pubKeyObj.export({ format: 'raw-public', type: 'invalid' }), + { code: 'ERR_INVALID_ARG_VALUE' }); +} + +// None of the raw types can be used with symmetric key objects +{ + const secretKey = crypto.createSecretKey(Buffer.alloc(32)); + + for (const format of ['raw-public', 'raw-private', 'raw-seed']) { + assert.throws(() => secretKey.export({ format }), + { code: 'ERR_INVALID_ARG_VALUE' }); + } +} + +// Private key objects created from raw-seed or raw-private can be passed to createPublicKey() +{ + // Ed25519 raw-private -> createPublicKey + const edPriv = crypto.createPrivateKey( + fixtures.readKey('ed25519_private.pem', 'ascii')); + const edPub = crypto.createPublicKey( + fixtures.readKey('ed25519_public.pem', 'ascii')); + const rawPriv = edPriv.export({ format: 'raw-private' }); + const importedPriv = crypto.createPrivateKey({ + key: rawPriv, format: 'raw-private', asymmetricKeyType: 'ed25519', + }); + const derivedPub = crypto.createPublicKey(importedPriv); + assert.strictEqual(derivedPub.equals(edPub), true); + // Private key must not be extractable from the derived public key. + assert.throws(() => derivedPub.export({ format: 'pem', type: 'pkcs8' }), + { code: 'ERR_INVALID_ARG_VALUE' }); + assert.throws(() => derivedPub.export({ format: 'der', type: 'pkcs8' }), + { code: 'ERR_INVALID_ARG_VALUE' }); + + // EC raw-private -> createPublicKey + const ecPriv = crypto.createPrivateKey( + fixtures.readKey('ec_p256_private.pem', 'ascii')); + const ecPub = crypto.createPublicKey( + fixtures.readKey('ec_p256_public.pem', 'ascii')); + const ecRawPriv = ecPriv.export({ format: 'raw-private' }); + const ecImportedPriv = crypto.createPrivateKey({ + key: ecRawPriv, format: 'raw-private', + asymmetricKeyType: 'ec', namedCurve: 'P-256', + }); + const ecDerivedPub = crypto.createPublicKey(ecImportedPriv); + assert.strictEqual(ecDerivedPub.equals(ecPub), true); + // Private key must not be extractable from the derived public key. + assert.throws(() => ecDerivedPub.export({ format: 'pem', type: 'pkcs8' }), + { code: 'ERR_INVALID_ARG_VALUE' }); + assert.throws(() => ecDerivedPub.export({ format: 'pem', type: 'sec1' }), + { code: 'ERR_INVALID_ARG_VALUE' }); + + // PQC raw-seed -> createPublicKey + if (hasOpenSSL(3, 5)) { + const mlDsaPriv = crypto.createPrivateKey( + fixtures.readKey('ml_dsa_44_private.pem', 'ascii')); + const mlDsaPub = crypto.createPublicKey( + fixtures.readKey('ml_dsa_44_public.pem', 'ascii')); + const mlDsaRawSeed = mlDsaPriv.export({ format: 'raw-seed' }); + const mlDsaImportedPriv = crypto.createPrivateKey({ + key: mlDsaRawSeed, format: 'raw-seed', asymmetricKeyType: 'ml-dsa-44', + }); + const mlDsaDerivedPub = crypto.createPublicKey(mlDsaImportedPriv); + assert.strictEqual(mlDsaDerivedPub.equals(mlDsaPub), true); + // Private key must not be extractable from the derived public key. + assert.throws(() => mlDsaDerivedPub.export({ format: 'pem', type: 'pkcs8' }), + { code: 'ERR_INVALID_ARG_VALUE' }); + } +} + +// raw-public EC keys that are garbage/not on curve are rejected +{ + const garbage = Buffer.alloc(33, 0xff); + garbage[0] = 0x02; // Valid compressed prefix but invalid point + + assert.throws(() => crypto.createPublicKey({ + key: garbage, format: 'raw-public', + asymmetricKeyType: 'ec', namedCurve: 'P-256', + }), { code: 'ERR_INVALID_ARG_VALUE' }); + + // Totally random garbage + assert.throws(() => crypto.createPublicKey({ + key: Buffer.alloc(10, 0xab), format: 'raw-public', + asymmetricKeyType: 'ec', namedCurve: 'P-256', + }), { code: 'ERR_INVALID_ARG_VALUE' }); +} + +// Unrecognized namedCurve values are rejected +{ + assert.throws(() => crypto.createPublicKey({ + key: Buffer.alloc(33), format: 'raw-public', + asymmetricKeyType: 'ec', namedCurve: 'not-a-curve', + }), { code: 'ERR_CRYPTO_INVALID_CURVE' }); + + assert.throws(() => crypto.createPrivateKey({ + key: Buffer.alloc(32), format: 'raw-private', + asymmetricKeyType: 'ec', namedCurve: 'not-a-curve', + }), { code: 'ERR_CRYPTO_INVALID_CURVE' }); +} + +// x25519, ed25519, x448, and ed448 cannot be used as 'ec' namedCurve values +{ + for (const type of ['ed25519', 'x25519', 'ed448', 'x448']) { + const priv = crypto.createPrivateKey( + fixtures.readKey(`${type}_private.pem`, 'ascii')); + const pub = crypto.createPublicKey( + fixtures.readKey(`${type}_public.pem`, 'ascii')); + + const rawPub = pub.export({ format: 'raw-public' }); + const rawPriv = priv.export({ format: 'raw-private' }); + + // Try to import as EC - must fail + assert.throws(() => crypto.createPublicKey({ + key: rawPub, format: 'raw-public', + asymmetricKeyType: 'ec', namedCurve: type, + }), { code: 'ERR_CRYPTO_INVALID_CURVE' }); + + assert.throws(() => crypto.createPrivateKey({ + key: rawPriv, format: 'raw-private', + asymmetricKeyType: 'ec', namedCurve: type, + }), { code: 'ERR_CRYPTO_INVALID_CURVE' }); + } +} + +// Missing asymmetricKeyType option +{ + assert.throws(() => crypto.createPublicKey({ + key: Buffer.alloc(32), format: 'raw-public', + }), { code: 'ERR_INVALID_ARG_TYPE' }); +} + +// Unknown asymmetricKeyType value +{ + assert.throws(() => crypto.createPublicKey({ + key: Buffer.alloc(32), format: 'raw-public', + asymmetricKeyType: 'unknown', + }), { code: 'ERR_INVALID_ARG_VALUE' }); +} + +// Non-buffer key data +{ + assert.throws(() => crypto.createPublicKey({ + key: 12345, format: 'raw-public', + asymmetricKeyType: 'ec', namedCurve: 'P-256', + }), { code: 'ERR_INVALID_ARG_TYPE' }); +} + +// Missing namedCurve for EC +{ + assert.throws(() => crypto.createPublicKey({ + key: Buffer.alloc(33), format: 'raw-public', + asymmetricKeyType: 'ec', + }), { code: 'ERR_INVALID_ARG_TYPE' }); +} diff --git a/test/parallel/test-crypto-key-objects.js b/test/parallel/test-crypto-key-objects.js index e8359ed6d0362c..6c1c3fd3afa448 100644 --- a/test/parallel/test-crypto-key-objects.js +++ b/test/parallel/test-crypto-key-objects.js @@ -170,6 +170,23 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', assert.strictEqual(derivedPublicKey.asymmetricKeyType, 'rsa'); assert.strictEqual(derivedPublicKey.symmetricKeySize, undefined); + // The private key should not be extractable from the derived public key. + assert.throws(() => derivedPublicKey.export({ format: 'pem', type: 'pkcs8' }), + { code: 'ERR_INVALID_ARG_VALUE' }); + assert.throws(() => derivedPublicKey.export({ format: 'der', type: 'pkcs8' }), + { code: 'ERR_INVALID_ARG_VALUE' }); + // JWK export should only contain public components, no 'd'. + { + const jwkExport = derivedPublicKey.export({ format: 'jwk' }); + assert.strictEqual(jwkExport.kty, 'RSA'); + assert.strictEqual(jwkExport.d, undefined); + assert.strictEqual(jwkExport.dp, undefined); + assert.strictEqual(jwkExport.dq, undefined); + assert.strictEqual(jwkExport.qi, undefined); + assert.strictEqual(jwkExport.p, undefined); + assert.strictEqual(jwkExport.q, undefined); + } + const publicKeyFromJwk = createPublicKey({ key: publicJwk, format: 'jwk' }); assert.strictEqual(publicKeyFromJwk.type, 'public'); assert.strictEqual(publicKeyFromJwk.toString(), '[object KeyObject]'); @@ -415,6 +432,33 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', key.export({ format: 'jwk' }), jwk); } } + + // Raw format round-trip + { + const privKey = createPrivateKey(info.private); + const pubKey = createPublicKey(info.public); + + const rawPriv = privKey.export({ format: 'raw-private' }); + const rawPub = pubKey.export({ format: 'raw-public' }); + assert(Buffer.isBuffer(rawPriv)); + assert(Buffer.isBuffer(rawPub)); + + const importedPriv = createPrivateKey({ + key: rawPriv, format: 'raw-private', asymmetricKeyType: keyType, + }); + assert.strictEqual(importedPriv.type, 'private'); + assert.strictEqual(importedPriv.asymmetricKeyType, keyType); + assert.deepStrictEqual( + importedPriv.export({ format: 'raw-private' }), rawPriv); + + const importedPub = createPublicKey({ + key: rawPub, format: 'raw-public', asymmetricKeyType: keyType, + }); + assert.strictEqual(importedPub.type, 'public'); + assert.strictEqual(importedPub.asymmetricKeyType, keyType); + assert.deepStrictEqual( + importedPub.export({ format: 'raw-public' }), rawPub); + } }); [ @@ -506,8 +550,47 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', delete jwk.d; assert.deepStrictEqual( key.export({ format: 'jwk' }), jwk); + + // Private key material must not be extractable from a derived public key. + assert.throws(() => key.export({ format: 'pem', type: 'pkcs8' }), + { code: 'ERR_INVALID_ARG_VALUE' }); + assert.throws(() => key.export({ format: 'pem', type: 'sec1' }), + { code: 'ERR_INVALID_ARG_VALUE' }); + assert.throws(() => key.export({ format: 'der', type: 'pkcs8' }), + { code: 'ERR_INVALID_ARG_VALUE' }); + assert.throws(() => key.export({ format: 'der', type: 'sec1' }), + { code: 'ERR_INVALID_ARG_VALUE' }); } } + + // Raw format round-trip + { + const privKey = createPrivateKey(info.private); + const pubKey = createPublicKey(info.public); + + const rawPriv = privKey.export({ format: 'raw-private' }); + const rawPub = pubKey.export({ format: 'raw-public' }); + assert(Buffer.isBuffer(rawPriv)); + assert(Buffer.isBuffer(rawPub)); + + const importedPriv = createPrivateKey({ + key: rawPriv, format: 'raw-private', + asymmetricKeyType: keyType, namedCurve, + }); + assert.strictEqual(importedPriv.type, 'private'); + assert.strictEqual(importedPriv.asymmetricKeyType, keyType); + assert.deepStrictEqual( + importedPriv.export({ format: 'raw-private' }), rawPriv); + + const importedPub = createPublicKey({ + key: rawPub, format: 'raw-public', + asymmetricKeyType: keyType, namedCurve, + }); + assert.strictEqual(importedPub.type, 'public'); + assert.strictEqual(importedPub.asymmetricKeyType, keyType); + assert.deepStrictEqual( + importedPub.export({ format: 'raw-public' }), rawPub); + } }); { diff --git a/test/parallel/test-crypto-pqc-key-objects-ml-dsa.js b/test/parallel/test-crypto-pqc-key-objects-ml-dsa.js index 37eab463deae47..aef1012098fbb9 100644 --- a/test/parallel/test-crypto-pqc-key-objects-ml-dsa.js +++ b/test/parallel/test-crypto-pqc-key-objects-ml-dsa.js @@ -61,6 +61,15 @@ for (const [asymmetricKeyType, pubLen] of [ const jwk = key.export({ format: 'jwk' }); assertPublicJwk(jwk); assert.strictEqual(key.equals(createPublicKey({ format: 'jwk', key: jwk })), true); + + // Raw format round-trip + const rawPub = key.export({ format: 'raw-public' }); + assert(Buffer.isBuffer(rawPub)); + assert.strictEqual(rawPub.byteLength, pubLen); + const importedPub = createPublicKey({ + key: rawPub, format: 'raw-public', asymmetricKeyType, + }); + assert.strictEqual(importedPub.equals(key), true); } function assertPrivateKey(key, hasSeed) { @@ -78,6 +87,15 @@ for (const [asymmetricKeyType, pubLen] of [ assertPrivateJwk(jwk); assert.strictEqual(key.equals(createPrivateKey({ format: 'jwk', key: jwk })), true); assert.ok(createPublicKey({ format: 'jwk', key: jwk })); + + // Raw seed round-trip + const rawSeed = key.export({ format: 'raw-seed' }); + assert(Buffer.isBuffer(rawSeed)); + assert.strictEqual(rawSeed.byteLength, 32); + const importedPriv = createPrivateKey({ + key: rawSeed, format: 'raw-seed', asymmetricKeyType, + }); + assert.strictEqual(importedPriv.equals(key), true); } else { assert.throws(() => key.export({ format: 'jwk' }), { code: 'ERR_CRYPTO_OPERATION_FAILED', message: 'key does not have an available seed' }); @@ -172,8 +190,8 @@ for (const [asymmetricKeyType, pubLen] of [ } } else { assert.throws(() => createPrivateKey({ format, key: jwk }), - { code: 'ERR_INVALID_ARG_VALUE', message: /must be one of: 'RSA', 'EC', 'OKP'\. Received 'AKP'/ }); + { code: 'ERR_INVALID_ARG_VALUE', message: /Unsupported key type/ }); assert.throws(() => createPublicKey({ format, key: jwk }), - { code: 'ERR_INVALID_ARG_VALUE', message: /must be one of: 'RSA', 'EC', 'OKP'\. Received 'AKP'/ }); + { code: 'ERR_INVALID_ARG_VALUE', message: /Unsupported key type/ }); } } diff --git a/test/parallel/test-crypto-pqc-key-objects-ml-kem.js b/test/parallel/test-crypto-pqc-key-objects-ml-kem.js index 293c0c87265eea..5990258b04f697 100644 --- a/test/parallel/test-crypto-pqc-key-objects-ml-kem.js +++ b/test/parallel/test-crypto-pqc-key-objects-ml-kem.js @@ -40,6 +40,14 @@ for (const asymmetricKeyType of ['ml-kem-512', 'ml-kem-768', 'ml-kem-1024']) { key.export({ format: 'der', type: 'spki' }); assert.throws(() => key.export({ format: 'jwk' }), { code: 'ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE', message: 'Unsupported JWK Key Type.' }); + + // Raw format round-trip + const rawPub = key.export({ format: 'raw-public' }); + assert(Buffer.isBuffer(rawPub)); + const importedPub = createPublicKey({ + key: rawPub, format: 'raw-public', asymmetricKeyType, + }); + assert.strictEqual(importedPub.equals(key), true); } function assertPrivateKey(key, hasSeed) { @@ -49,6 +57,14 @@ for (const asymmetricKeyType of ['ml-kem-512', 'ml-kem-768', 'ml-kem-1024']) { key.export({ format: 'der', type: 'pkcs8' }); if (hasSeed) { assert.strictEqual(key.export({ format: 'pem', type: 'pkcs8' }), keys.private); + + // Raw seed round-trip + const rawSeed = key.export({ format: 'raw-seed' }); + assert(Buffer.isBuffer(rawSeed)); + const importedPriv = createPrivateKey({ + key: rawSeed, format: 'raw-seed', asymmetricKeyType, + }); + assert.strictEqual(importedPriv.equals(key), true); } else { assert.strictEqual(key.export({ format: 'pem', type: 'pkcs8' }), keys.private_priv_only); } diff --git a/test/parallel/test-crypto-pqc-key-objects-slh-dsa.js b/test/parallel/test-crypto-pqc-key-objects-slh-dsa.js index 1b612de8b2e582..fdae27f2da797f 100644 --- a/test/parallel/test-crypto-pqc-key-objects-slh-dsa.js +++ b/test/parallel/test-crypto-pqc-key-objects-slh-dsa.js @@ -42,6 +42,14 @@ for (const asymmetricKeyType of [ key.export({ format: 'der', type: 'spki' }); assert.throws(() => key.export({ format: 'jwk' }), { code: 'ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE', message: 'Unsupported JWK Key Type.' }); + + // Raw format round-trip + const rawPub = key.export({ format: 'raw-public' }); + assert(Buffer.isBuffer(rawPub)); + const importedPub = createPublicKey({ + key: rawPub, format: 'raw-public', asymmetricKeyType, + }); + assert.strictEqual(importedPub.equals(key), true); } function assertPrivateKey(key) { @@ -52,6 +60,14 @@ for (const asymmetricKeyType of [ assert.strictEqual(key.export({ format: 'pem', type: 'pkcs8' }), keys.private); assert.throws(() => key.export({ format: 'jwk' }), { code: 'ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE', message: 'Unsupported JWK Key Type.' }); + + // Raw format round-trip + const rawPriv = key.export({ format: 'raw-private' }); + assert(Buffer.isBuffer(rawPriv)); + const importedPriv = createPrivateKey({ + key: rawPriv, format: 'raw-private', asymmetricKeyType, + }); + assert.strictEqual(importedPriv.equals(key), true); } if (!hasOpenSSL(3, 5)) { diff --git a/test/parallel/test-crypto-pqc-sign-verify-ml-dsa.js b/test/parallel/test-crypto-pqc-sign-verify-ml-dsa.js index de3937dbc07486..57d6692ca79b55 100644 --- a/test/parallel/test-crypto-pqc-sign-verify-ml-dsa.js +++ b/test/parallel/test-crypto-pqc-sign-verify-ml-dsa.js @@ -67,6 +67,28 @@ for (const [asymmetricKeyType, sigLen] of [ } } } + + // Raw format sign/verify + { + const pubKeyObj = createPublicKey(keys.public); + const privKeyObj = createPrivateKey(keys.private_seed_only); + + const rawPublic = { + key: pubKeyObj.export({ format: 'raw-public' }), + format: 'raw-public', + asymmetricKeyType, + }; + const rawSeed = { + key: privKeyObj.export({ format: 'raw-seed' }), + format: 'raw-seed', + asymmetricKeyType, + }; + + const data = randomBytes(32); + const signature = sign(undefined, data, rawSeed); + assert.strictEqual(signature.byteLength, sigLen); + assert.strictEqual(verify(undefined, data, rawPublic, signature), true); + } } // Test vectors from ietf-cose-dilithium diff --git a/test/parallel/test-crypto-sign-verify.js b/test/parallel/test-crypto-sign-verify.js index a66f0a94efd7c9..1900f244b8491a 100644 --- a/test/parallel/test-crypto-sign-verify.js +++ b/test/parallel/test-crypto-sign-verify.js @@ -422,16 +422,19 @@ assert.throws( { private: fixtures.readKey('ed25519_private.pem', 'ascii'), public: fixtures.readKey('ed25519_public.pem', 'ascii'), algo: null, - sigLen: 64 }, + sigLen: 64, + raw: true }, { private: fixtures.readKey('ed448_private.pem', 'ascii'), public: fixtures.readKey('ed448_public.pem', 'ascii'), algo: null, supportsContext: true, - sigLen: 114 }, + sigLen: 114, + raw: true }, { private: fixtures.readKey('rsa_private_2048.pem', 'ascii'), public: fixtures.readKey('rsa_public_2048.pem', 'ascii'), algo: 'sha1', - sigLen: 256 }, + sigLen: 256, + raw: false }, ].forEach((pair) => { const algo = pair.algo; @@ -458,6 +461,29 @@ assert.throws( assert.strictEqual(crypto.verify(algo, data, pubKeyObj, sig), true); } + if (pair.raw) { + const data = Buffer.from('Hello world'); + const privKeyObj = crypto.createPrivateKey(pair.private); + const pubKeyObj = crypto.createPublicKey(pair.public); + const { asymmetricKeyType } = privKeyObj; + const rawPrivate = { + key: privKeyObj.export({ format: 'raw-private' }), + format: 'raw-private', + asymmetricKeyType, + }; + const rawPublic = { + key: pubKeyObj.export({ format: 'raw-public' }), + format: 'raw-public', + asymmetricKeyType, + }; + + const sig = crypto.sign(algo, data, rawPrivate); + assert.strictEqual(sig.length, pair.sigLen); + + assert.strictEqual(crypto.verify(algo, data, rawPrivate, sig), true); + assert.strictEqual(crypto.verify(algo, data, rawPublic, sig), true); + } + { const data = Buffer.from('Hello world'); const otherData = Buffer.from('Goodbye world'); From 541be3aaf292be39ab6be4ef6c1d466c94f3c400 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sat, 28 Mar 2026 21:17:39 +0100 Subject: [PATCH 003/267] crypto: recognize raw formats in keygen Signed-off-by: Filip Skokan PR-URL: https://github.com/nodejs/node/pull/62480 Backport-PR-URL: https://github.com/nodejs/node/pull/62455 Reviewed-By: Antoine du Hamel --- deps/ncrypto/ncrypto.h | 4 + lib/internal/crypto/keys.js | 44 ++++ src/crypto/crypto_keys.cc | 156 ++++++++++++- test/parallel/test-crypto-keygen-raw.js | 285 ++++++++++++++++++++++++ 4 files changed, 488 insertions(+), 1 deletion(-) create mode 100644 test/parallel/test-crypto-keygen-raw.js diff --git a/deps/ncrypto/ncrypto.h b/deps/ncrypto/ncrypto.h index 175ec8ba0f2a90..b2377ed4cf71ca 100644 --- a/deps/ncrypto/ncrypto.h +++ b/deps/ncrypto/ncrypto.h @@ -855,6 +855,9 @@ class EVPKeyPointer final { DER, PEM, JWK, + RAW_PUBLIC, + RAW_PRIVATE, + RAW_SEED, }; enum class PKParseError { NOT_RECOGNIZED, NEED_PASSPHRASE, FAILED }; @@ -864,6 +867,7 @@ class EVPKeyPointer final { bool output_key_object = false; PKFormatType format = PKFormatType::DER; PKEncodingType type = PKEncodingType::PKCS8; + int ec_point_form = POINT_CONVERSION_UNCOMPRESSED; AsymmetricKeyEncodingConfig() = default; AsymmetricKeyEncodingConfig(bool output_key_object, PKFormatType format, diff --git a/lib/internal/crypto/keys.js b/lib/internal/crypto/keys.js index 80c073a1dbfac1..6a10107da4cd02 100644 --- a/lib/internal/crypto/keys.js +++ b/lib/internal/crypto/keys.js @@ -21,6 +21,9 @@ const { kKeyFormatPEM, kKeyFormatDER, kKeyFormatJWK, + kKeyFormatRawPublic, + kKeyFormatRawPrivate, + kKeyFormatRawSeed, kKeyEncodingPKCS1, kKeyEncodingPKCS8, kKeyEncodingSPKI, @@ -419,6 +422,12 @@ function parseKeyFormat(formatStr, defaultFormat, optionName) { return kKeyFormatDER; else if (formatStr === 'jwk') return kKeyFormatJWK; + else if (formatStr === 'raw-public') + return kKeyFormatRawPublic; + else if (formatStr === 'raw-private') + return kKeyFormatRawPrivate; + else if (formatStr === 'raw-seed') + return kKeyFormatRawSeed; throw new ERR_INVALID_ARG_VALUE(optionName, formatStr); } @@ -459,6 +468,33 @@ function parseKeyFormatAndType(enc, keyType, isPublic, objName) { isInput ? kKeyFormatPEM : undefined, option('format', objName)); + if (format === kKeyFormatRawPublic) { + if (isPublic === false) { + throw new ERR_INVALID_ARG_VALUE(option('format', objName), 'raw-public'); + } + let type; + if (typeStr === undefined || typeStr === 'uncompressed') { + type = POINT_CONVERSION_UNCOMPRESSED; + } else if (typeStr === 'compressed') { + type = POINT_CONVERSION_COMPRESSED; + } else { + throw new ERR_INVALID_ARG_VALUE(option('type', objName), typeStr); + } + return { format, type }; + } + + if (format === kKeyFormatRawPrivate || format === kKeyFormatRawSeed) { + if (isPublic === true) { + throw new ERR_INVALID_ARG_VALUE( + option('format', objName), + format === kKeyFormatRawPrivate ? 'raw-private' : 'raw-seed'); + } + if (typeStr !== undefined) { + throw new ERR_INVALID_ARG_VALUE(option('type', objName), typeStr); + } + return { format }; + } + const isRequired = (!isInput || format === kKeyFormatDER) && format !== kKeyFormatJWK; @@ -490,6 +526,14 @@ function parseKeyEncoding(enc, keyType, isPublic, objName) { if (isPublic !== true) { ({ cipher, passphrase, encoding } = enc); + if (format === kKeyFormatRawPrivate || format === kKeyFormatRawSeed) { + if (cipher != null || passphrase !== undefined) { + throw new ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS( + 'raw format', 'does not support encryption'); + } + return { format, type }; + } + if (!isInput) { if (cipher != null) { if (typeof cipher !== 'string') diff --git a/src/crypto/crypto_keys.cc b/src/crypto/crypto_keys.cc index 9f489b3f62763d..2ace9270381223 100644 --- a/src/crypto/crypto_keys.cc +++ b/src/crypto/crypto_keys.cc @@ -67,7 +67,16 @@ Maybe GetKeyFormatAndTypeFromJs( config.format = static_cast( args[*offset].As()->Value()); - if (args[*offset + 1]->IsInt32()) { + if (config.format == EVPKeyPointer::PKFormatType::RAW_PUBLIC || + config.format == EVPKeyPointer::PKFormatType::RAW_PRIVATE || + config.format == EVPKeyPointer::PKFormatType::RAW_SEED) { + // Raw formats use the type slot for ec_point_form (int) or null. + if (args[*offset + 1]->IsInt32()) { + config.ec_point_form = args[*offset + 1].As()->Value(); + } else { + CHECK(args[*offset + 1]->IsNullOrUndefined()); + } + } else if (args[*offset + 1]->IsInt32()) { config.type = static_cast( args[*offset + 1].As()->Value()); } else { @@ -325,6 +334,54 @@ bool KeyObjectData::ToEncodedPublicKey( *out = Object::New(env->isolate()); return ExportJWKInner( env, addRefWithType(KeyType::kKeyTypePublic), *out, false); + } else if (config.format == EVPKeyPointer::PKFormatType::RAW_PUBLIC) { + Mutex::ScopedLock lock(mutex()); + const auto& pkey = GetAsymmetricKey(); + if (pkey.id() == EVP_PKEY_EC) { + const EC_KEY* ec_key = pkey; + CHECK_NOT_NULL(ec_key); + auto form = static_cast(config.ec_point_form); + const auto group = ECKeyPointer::GetGroup(ec_key); + const auto point = ECKeyPointer::GetPublicKey(ec_key); + return ECPointToBuffer(env, group, point, form).ToLocal(out); + } + switch (pkey.id()) { + case EVP_PKEY_ED25519: + case EVP_PKEY_ED448: + case EVP_PKEY_X25519: + case EVP_PKEY_X448: +#if OPENSSL_WITH_PQC + case EVP_PKEY_ML_DSA_44: + case EVP_PKEY_ML_DSA_65: + case EVP_PKEY_ML_DSA_87: + case EVP_PKEY_ML_KEM_512: + case EVP_PKEY_ML_KEM_768: + case EVP_PKEY_ML_KEM_1024: + case EVP_PKEY_SLH_DSA_SHA2_128F: + case EVP_PKEY_SLH_DSA_SHA2_128S: + case EVP_PKEY_SLH_DSA_SHA2_192F: + case EVP_PKEY_SLH_DSA_SHA2_192S: + case EVP_PKEY_SLH_DSA_SHA2_256F: + case EVP_PKEY_SLH_DSA_SHA2_256S: + case EVP_PKEY_SLH_DSA_SHAKE_128F: + case EVP_PKEY_SLH_DSA_SHAKE_128S: + case EVP_PKEY_SLH_DSA_SHAKE_192F: + case EVP_PKEY_SLH_DSA_SHAKE_192S: + case EVP_PKEY_SLH_DSA_SHAKE_256F: + case EVP_PKEY_SLH_DSA_SHAKE_256S: +#endif + break; + default: + THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS(env); + return false; + } + auto raw_data = pkey.rawPublicKey(); + if (!raw_data) { + THROW_ERR_CRYPTO_OPERATION_FAILED(env, "Failed to get raw public key"); + return false; + } + return Buffer::Copy(env, raw_data.get(), raw_data.size()) + .ToLocal(out); } return WritePublicKey(env, GetAsymmetricKey(), config).ToLocal(out); @@ -343,6 +400,86 @@ bool KeyObjectData::ToEncodedPrivateKey( *out = Object::New(env->isolate()); return ExportJWKInner( env, addRefWithType(KeyType::kKeyTypePrivate), *out, false); + } else if (config.format == EVPKeyPointer::PKFormatType::RAW_PRIVATE) { + Mutex::ScopedLock lock(mutex()); + const auto& pkey = GetAsymmetricKey(); + if (pkey.id() == EVP_PKEY_EC) { + const EC_KEY* ec_key = pkey; + CHECK_NOT_NULL(ec_key); + const BIGNUM* private_key = ECKeyPointer::GetPrivateKey(ec_key); + CHECK_NOT_NULL(private_key); + const auto group = ECKeyPointer::GetGroup(ec_key); + auto order = BignumPointer::New(); + CHECK(order); + CHECK(EC_GROUP_get_order(group, order.get(), nullptr)); + auto buf = BignumPointer::EncodePadded(private_key, order.byteLength()); + if (!buf) { + THROW_ERR_CRYPTO_OPERATION_FAILED(env, + "Failed to export EC private key"); + return false; + } + return Buffer::Copy(env, buf.get(), buf.size()).ToLocal(out); + } + switch (pkey.id()) { + case EVP_PKEY_ED25519: + case EVP_PKEY_ED448: + case EVP_PKEY_X25519: + case EVP_PKEY_X448: +#if OPENSSL_WITH_PQC + case EVP_PKEY_SLH_DSA_SHA2_128F: + case EVP_PKEY_SLH_DSA_SHA2_128S: + case EVP_PKEY_SLH_DSA_SHA2_192F: + case EVP_PKEY_SLH_DSA_SHA2_192S: + case EVP_PKEY_SLH_DSA_SHA2_256F: + case EVP_PKEY_SLH_DSA_SHA2_256S: + case EVP_PKEY_SLH_DSA_SHAKE_128F: + case EVP_PKEY_SLH_DSA_SHAKE_128S: + case EVP_PKEY_SLH_DSA_SHAKE_192F: + case EVP_PKEY_SLH_DSA_SHAKE_192S: + case EVP_PKEY_SLH_DSA_SHAKE_256F: + case EVP_PKEY_SLH_DSA_SHAKE_256S: +#endif + break; + default: + THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS(env); + return false; + } + auto raw_data = pkey.rawPrivateKey(); + if (!raw_data) { + THROW_ERR_CRYPTO_OPERATION_FAILED(env, "Failed to get raw private key"); + return false; + } + return Buffer::Copy(env, raw_data.get(), raw_data.size()) + .ToLocal(out); + } else if (config.format == EVPKeyPointer::PKFormatType::RAW_SEED) { + Mutex::ScopedLock lock(mutex()); + const auto& pkey = GetAsymmetricKey(); + switch (pkey.id()) { +#if OPENSSL_WITH_PQC + case EVP_PKEY_ML_DSA_44: + case EVP_PKEY_ML_DSA_65: + case EVP_PKEY_ML_DSA_87: + case EVP_PKEY_ML_KEM_512: + case EVP_PKEY_ML_KEM_768: + case EVP_PKEY_ML_KEM_1024: + break; +#endif + default: + THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS(env); + return false; + } +#if OPENSSL_WITH_PQC + auto raw_data = pkey.rawSeed(); + if (!raw_data) { + THROW_ERR_CRYPTO_OPERATION_FAILED(env, "Failed to get raw seed"); + return false; + } + return Buffer::Copy(env, raw_data.get(), raw_data.size()) + .ToLocal(out); +#else + THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS(env); + return false; +#endif } return WritePrivateKey(env, GetAsymmetricKey(), config).ToLocal(out); @@ -363,6 +500,14 @@ KeyObjectData::GetPrivateKeyEncodingFromJs( if (config.output_key_object) { if (context != kKeyContextInput) (*offset)++; + } else if (config.format == EVPKeyPointer::PKFormatType::RAW_PRIVATE || + config.format == EVPKeyPointer::PKFormatType::RAW_SEED) { + // Raw formats don't support encryption. Still consume the arg offsets. + if (context != kKeyContextInput) { + CHECK(args[*offset]->IsNullOrUndefined()); + (*offset)++; + } + CHECK(args[*offset]->IsNullOrUndefined()); } else { bool needs_passphrase = false; if (context != kKeyContextInput) { @@ -1581,6 +1726,12 @@ void Initialize(Environment* env, Local target) { static_cast(EVPKeyPointer::PKFormatType::PEM); constexpr int kKeyFormatJWK = static_cast(EVPKeyPointer::PKFormatType::JWK); + constexpr int kKeyFormatRawPublic = + static_cast(EVPKeyPointer::PKFormatType::RAW_PUBLIC); + constexpr int kKeyFormatRawPrivate = + static_cast(EVPKeyPointer::PKFormatType::RAW_PRIVATE); + constexpr int kKeyFormatRawSeed = + static_cast(EVPKeyPointer::PKFormatType::RAW_SEED); constexpr auto kSigEncDER = DSASigEnc::DER; constexpr auto kSigEncP1363 = DSASigEnc::P1363; @@ -1620,6 +1771,9 @@ void Initialize(Environment* env, Local target) { NODE_DEFINE_CONSTANT(target, kKeyFormatDER); NODE_DEFINE_CONSTANT(target, kKeyFormatPEM); NODE_DEFINE_CONSTANT(target, kKeyFormatJWK); + NODE_DEFINE_CONSTANT(target, kKeyFormatRawPublic); + NODE_DEFINE_CONSTANT(target, kKeyFormatRawPrivate); + NODE_DEFINE_CONSTANT(target, kKeyFormatRawSeed); NODE_DEFINE_CONSTANT(target, kKeyTypeSecret); NODE_DEFINE_CONSTANT(target, kKeyTypePublic); NODE_DEFINE_CONSTANT(target, kKeyTypePrivate); diff --git a/test/parallel/test-crypto-keygen-raw.js b/test/parallel/test-crypto-keygen-raw.js new file mode 100644 index 00000000000000..fd2971dc2c86cd --- /dev/null +++ b/test/parallel/test-crypto-keygen-raw.js @@ -0,0 +1,285 @@ +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); + +const assert = require('assert'); +const { + generateKeyPair, + generateKeyPairSync, + createPublicKey, + createPrivateKey, +} = require('crypto'); +const { hasOpenSSL } = require('../common/crypto'); + +// Test generateKeyPairSync with raw encoding for EdDSA/ECDH key types. +{ + const types = ['ed25519', 'x25519']; + if (!process.features.openssl_is_boringssl) { + types.push('ed448', 'x448'); + } + for (const type of types) { + const { publicKey, privateKey } = generateKeyPairSync(type, { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-private' }, + }); + + assert(Buffer.isBuffer(publicKey)); + assert(Buffer.isBuffer(privateKey)); + + // Roundtrip: import from raw, re-export, and compare. + const importedPub = createPublicKey({ + key: publicKey, + format: 'raw-public', + asymmetricKeyType: type, + }); + const importedPriv = createPrivateKey({ + key: privateKey, + format: 'raw-private', + asymmetricKeyType: type, + }); + + assert.deepStrictEqual(importedPub.export({ format: 'raw-public' }), + publicKey); + assert.deepStrictEqual(importedPriv.export({ format: 'raw-private' }), + privateKey); + } +} + +// Test async generateKeyPair with raw encoding for EdDSA/ECDH key types. +{ + const types = ['ed25519', 'x25519']; + if (!process.features.openssl_is_boringssl) { + types.push('ed448', 'x448'); + } + for (const type of types) { + generateKeyPair(type, { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-private' }, + }, common.mustSucceed((publicKey, privateKey) => { + assert(Buffer.isBuffer(publicKey)); + assert(Buffer.isBuffer(privateKey)); + })); + } +} + +// Test generateKeyPairSync with raw encoding for EC keys. +{ + for (const namedCurve of ['P-256', 'P-384', 'P-521']) { + const { publicKey, privateKey } = generateKeyPairSync('ec', { + namedCurve, + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-private' }, + }); + + assert(Buffer.isBuffer(publicKey)); + assert(Buffer.isBuffer(privateKey)); + + // Roundtrip with EC. + const importedPub = createPublicKey({ + key: publicKey, + format: 'raw-public', + asymmetricKeyType: 'ec', + namedCurve, + }); + const importedPriv = createPrivateKey({ + key: privateKey, + format: 'raw-private', + asymmetricKeyType: 'ec', + namedCurve, + }); + + assert.deepStrictEqual(importedPub.export({ format: 'raw-public' }), + publicKey); + assert.deepStrictEqual(importedPriv.export({ format: 'raw-private' }), + privateKey); + } +} + +// Test EC raw-public with compressed and uncompressed point formats. +{ + const { publicKey: uncompressed } = generateKeyPairSync('ec', { + namedCurve: 'P-256', + publicKeyEncoding: { format: 'raw-public', type: 'uncompressed' }, + privateKeyEncoding: { format: 'raw-private' }, + }); + const { publicKey: compressed } = generateKeyPairSync('ec', { + namedCurve: 'P-256', + publicKeyEncoding: { format: 'raw-public', type: 'compressed' }, + privateKeyEncoding: { format: 'raw-private' }, + }); + + // Uncompressed P-256 public key is 65 bytes, compressed is 33 bytes. + assert.strictEqual(uncompressed.length, 65); + assert.strictEqual(compressed.length, 33); +} + +// Test mixed: one side raw, other side pem. +{ + const { publicKey, privateKey } = generateKeyPairSync('ed25519', { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'pem', type: 'pkcs8' }, + }); + + assert(Buffer.isBuffer(publicKey)); + assert.strictEqual(typeof privateKey, 'string'); + assert(privateKey.startsWith('-----BEGIN PRIVATE KEY-----')); +} + +{ + const { publicKey, privateKey } = generateKeyPairSync('ed25519', { + publicKeyEncoding: { format: 'pem', type: 'spki' }, + privateKeyEncoding: { format: 'raw-private' }, + }); + + assert.strictEqual(typeof publicKey, 'string'); + assert(publicKey.startsWith('-----BEGIN PUBLIC KEY-----')); + assert(Buffer.isBuffer(privateKey)); +} + +// Test mixed: one side raw, other side KeyObject (no encoding). +{ + const { publicKey, privateKey } = generateKeyPairSync('ed25519', { + publicKeyEncoding: { format: 'raw-public' }, + }); + + assert(Buffer.isBuffer(publicKey)); + assert.strictEqual(privateKey.type, 'private'); +} + +// Test error: raw with RSA. +{ + assert.throws(() => generateKeyPairSync('rsa', { + modulusLength: 2048, + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-private' }, + }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); +} + +// Test error: raw with DSA. +{ + assert.throws(() => generateKeyPairSync('dsa', { + modulusLength: 2048, + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-private' }, + }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); +} + +// Test error: raw-private in publicKeyEncoding. +{ + assert.throws(() => generateKeyPairSync('ed25519', { + publicKeyEncoding: { format: 'raw-private' }, + privateKeyEncoding: { format: 'raw-private' }, + }), { code: 'ERR_INVALID_ARG_VALUE' }); +} + +// Test error: raw-seed in publicKeyEncoding. +{ + assert.throws(() => generateKeyPairSync('ed25519', { + publicKeyEncoding: { format: 'raw-seed' }, + privateKeyEncoding: { format: 'raw-private' }, + }), { code: 'ERR_INVALID_ARG_VALUE' }); +} + +// Test error: raw-public in privateKeyEncoding. +{ + assert.throws(() => generateKeyPairSync('ed25519', { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-public' }, + }), { code: 'ERR_INVALID_ARG_VALUE' }); +} + +// Test error: passphrase with raw private key encoding. +{ + assert.throws(() => generateKeyPairSync('ed25519', { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { + format: 'raw-private', + cipher: 'aes-256-cbc', + passphrase: 'secret', + }, + }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); +} + +// PQC key types +if (hasOpenSSL(3, 5)) { + // Test raw encoding for ML-DSA key types (raw-public + raw-seed only). + { + for (const type of ['ml-dsa-44', 'ml-dsa-65', 'ml-dsa-87']) { + const { publicKey, privateKey } = generateKeyPairSync(type, { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-seed' }, + }); + + assert(Buffer.isBuffer(publicKey)); + assert(Buffer.isBuffer(privateKey)); + // raw-seed output should be 32 bytes for ML-DSA. + assert.strictEqual(privateKey.length, 32); + } + } + + // Test error: raw-private with ML-DSA (not supported). + { + assert.throws(() => generateKeyPairSync('ml-dsa-44', { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-private' }, + }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + } + + // Test raw encoding for ML-KEM key types (raw-public + raw-seed only). + { + for (const type of ['ml-kem-512', 'ml-kem-768', 'ml-kem-1024']) { + const { publicKey, privateKey } = generateKeyPairSync(type, { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-seed' }, + }); + + assert(Buffer.isBuffer(publicKey)); + assert(Buffer.isBuffer(privateKey)); + // raw-seed output should be 64 bytes for ML-KEM. + assert.strictEqual(privateKey.length, 64); + } + } + + // Test error: raw-private with ML-KEM (not supported). + { + assert.throws(() => generateKeyPairSync('ml-kem-512', { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-private' }, + }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + } + + // Test raw encoding for SLH-DSA key types. + { + for (const type of ['slh-dsa-sha2-128f', 'slh-dsa-shake-128f']) { + const { publicKey, privateKey } = generateKeyPairSync(type, { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-private' }, + }); + + assert(Buffer.isBuffer(publicKey)); + assert(Buffer.isBuffer(privateKey)); + } + } + + // Test error: raw-seed with SLH-DSA (not supported). + { + assert.throws(() => generateKeyPairSync('slh-dsa-sha2-128f', { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-seed' }, + }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); + } + + // Test async generateKeyPair with raw encoding for PQC types. + { + generateKeyPair('ml-dsa-44', { + publicKeyEncoding: { format: 'raw-public' }, + privateKeyEncoding: { format: 'raw-seed' }, + }, common.mustSucceed((publicKey, privateKey) => { + assert(Buffer.isBuffer(publicKey)); + assert(Buffer.isBuffer(privateKey)); + assert.strictEqual(privateKey.length, 32); + })); + } +} From 2395fc0f4dcac414a1a82897edcd7ae7d9de2f0b Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 18 Feb 2026 12:05:02 +0100 Subject: [PATCH 004/267] crypto: rename CShakeParams and KmacParams length to outputLength PR-URL: https://github.com/nodejs/node/pull/61875 Backport-PR-URL: https://github.com/nodejs/node/pull/62539 Refs: https://github.com/web-platform-tests/wpt/pull/57802 Reviewed-By: Antoine du Hamel --- doc/api/webcrypto.md | 50 +++++++++++-------- lib/internal/crypto/hash.js | 2 +- lib/internal/crypto/mac.js | 2 +- lib/internal/crypto/webidl.js | 8 +-- test/fixtures/crypto/kmac.js | 12 ++--- .../webcrypto/supports-modern-algorithms.mjs | 24 ++++----- test/parallel/test-webcrypto-digest.js | 14 +++--- .../test-webcrypto-sign-verify-kmac.js | 10 ++-- test/parallel/test-webcrypto-sign-verify.js | 4 +- test/wpt/status/WebCryptoAPI.cjs | 49 ++++++++++++++++++ 10 files changed, 116 insertions(+), 59 deletions(-) diff --git a/doc/api/webcrypto.md b/doc/api/webcrypto.md index 178231647e76f8..71ab62ff8aa608 100644 --- a/doc/api/webcrypto.md +++ b/doc/api/webcrypto.md @@ -1868,19 +1868,27 @@ the message. -#### `cShakeParams.customization` +#### `cShakeParams.name` -* Type: {ArrayBuffer|TypedArray|DataView|Buffer|undefined} +* Type: {string} Must be `'cSHAKE128'`[^modern-algos] or `'cSHAKE256'`[^modern-algos] -The `customization` member represents the customization string. -The Node.js Web Crypto API implementation only supports zero-length customization -which is equivalent to not providing customization at all. +#### `cShakeParams.outputLength` + + + +* Type: {number} represents the requested output length in bits. #### `cShakeParams.functionName` @@ -1895,21 +1903,17 @@ functions based on cSHAKE. The Node.js Web Crypto API implementation only supports zero-length functionName which is equivalent to not providing functionName at all. -#### `cShakeParams.length` +#### `cShakeParams.customization` -* Type: {number} represents the requested output length in bits. - -#### `cShakeParams.name` - - +* Type: {ArrayBuffer|TypedArray|DataView|Buffer|undefined} -* Type: {string} Must be `'cSHAKE128'`[^modern-algos] or `'cSHAKE256'`[^modern-algos] +The `customization` member represents the customization string. +The Node.js Web Crypto API implementation only supports zero-length customization +which is equivalent to not providing customization at all. ### Class: `EcdhKeyDeriveParams` @@ -2386,6 +2390,10 @@ added: v24.8.0 #### `kmacParams.algorithm` @@ -2396,25 +2404,25 @@ added: v24.8.0 * Type: {string} Must be `'KMAC128'` or `'KMAC256'`. -#### `kmacParams.customization` +#### `kmacParams.outputLength` -* Type: {ArrayBuffer|TypedArray|DataView|Buffer|undefined} +* Type: {number} -The `customization` member represents the optional customization string. +The length of the output in bytes. This must be a positive integer. -#### `kmacParams.length` +#### `kmacParams.customization` -* Type: {number} +* Type: {ArrayBuffer|TypedArray|DataView|Buffer|undefined} -The length of the output in bytes. This must be a positive integer. +The `customization` member represents the optional customization string. ### Class: `Pbkdf2Params` diff --git a/lib/internal/crypto/hash.js b/lib/internal/crypto/hash.js index 43417cf3544933..eecbe5213f568c 100644 --- a/lib/internal/crypto/hash.js +++ b/lib/internal/crypto/hash.js @@ -225,7 +225,7 @@ async function asyncDigest(algorithm, data) { kCryptoJobAsync, normalizeHashName(algorithm.name), data, - algorithm.length)); + algorithm.outputLength)); } throw lazyDOMException('Unrecognized algorithm name', 'NotSupportedError'); diff --git a/lib/internal/crypto/mac.js b/lib/internal/crypto/mac.js index a31c3ddb0d9484..1ad4e27c6a8d39 100644 --- a/lib/internal/crypto/mac.js +++ b/lib/internal/crypto/mac.js @@ -234,7 +234,7 @@ function kmacSignVerify(key, data, algorithm, signature) { key[kKeyObject][kHandle], algorithm.name, algorithm.customization, - algorithm.length / 8, + algorithm.outputLength / 8, data, signature)); } diff --git a/lib/internal/crypto/webidl.js b/lib/internal/crypto/webidl.js index e72931e9c83cca..581f541847faea 100644 --- a/lib/internal/crypto/webidl.js +++ b/lib/internal/crypto/webidl.js @@ -589,14 +589,14 @@ converters.CShakeParams = createDictionaryConverter( 'CShakeParams', [ ...new SafeArrayIterator(dictAlgorithm), { - key: 'length', + key: 'outputLength', converter: (V, opts) => converters['unsigned long'](V, { ...opts, enforceRange: true }), validator: (V, opts) => { // The Web Crypto spec allows for SHAKE output length that are not multiples of // 8. We don't. if (V % 8) - throw lazyDOMException('Unsupported CShakeParams length', 'NotSupportedError'); + throw lazyDOMException('Unsupported CShakeParams outputLength', 'NotSupportedError'); }, required: true, }, @@ -879,13 +879,13 @@ converters.KmacParams = createDictionaryConverter( 'KmacParams', [ ...new SafeArrayIterator(dictAlgorithm), { - key: 'length', + key: 'outputLength', converter: (V, opts) => converters['unsigned long'](V, { ...opts, enforceRange: true }), validator: (V, opts) => { // The Web Crypto spec allows for KMAC output length that are not multiples of 8. We don't. if (V % 8) - throw lazyDOMException('Unsupported KmacParams length', 'NotSupportedError'); + throw lazyDOMException('Unsupported KmacParams outputLength', 'NotSupportedError'); }, required: true, }, diff --git a/test/fixtures/crypto/kmac.js b/test/fixtures/crypto/kmac.js index 86dec424bad9b1..cc1870af2bb04f 100644 --- a/test/fixtures/crypto/kmac.js +++ b/test/fixtures/crypto/kmac.js @@ -13,7 +13,7 @@ module.exports = function() { ]), data: Buffer.from([0x00, 0x01, 0x02, 0x03]), customization: undefined, - length: 256, + outputLength: 256, expected: Buffer.from([ 0xe5, 0x78, 0x0b, 0x0d, 0x3e, 0xa6, 0xf7, 0xd3, 0xa4, 0x29, 0xc5, 0x70, 0x6a, 0xa4, 0x3a, 0x00, 0xfa, 0xdb, 0xd7, 0xd4, 0x96, 0x28, 0x83, 0x9e, @@ -30,7 +30,7 @@ module.exports = function() { ]), data: Buffer.from([0x00, 0x01, 0x02, 0x03]), customization: Buffer.from('My Tagged Application'), - length: 256, + outputLength: 256, expected: Buffer.from([ 0x3b, 0x1f, 0xba, 0x96, 0x3c, 0xd8, 0xb0, 0xb5, 0x9e, 0x8c, 0x1a, 0x6d, 0x71, 0x88, 0x8b, 0x71, 0x43, 0x65, 0x1a, 0xf8, 0xba, 0x0a, 0x70, 0x70, @@ -47,7 +47,7 @@ module.exports = function() { ]), data: Buffer.from(Array.from({ length: 200 }, (_, i) => i)), // 0x00-0xC7 customization: Buffer.from('My Tagged Application'), - length: 256, + outputLength: 256, expected: Buffer.from([ 0x1f, 0x5b, 0x4e, 0x6c, 0xca, 0x02, 0x20, 0x9e, 0x0d, 0xcb, 0x5c, 0xa6, 0x35, 0xb8, 0x9a, 0x15, 0xe2, 0x71, 0xec, 0xc7, 0x60, 0x07, 0x1d, 0xfd, @@ -64,7 +64,7 @@ module.exports = function() { ]), data: Buffer.from([0x00, 0x01, 0x02, 0x03]), customization: Buffer.from('My Tagged Application'), - length: 512, + outputLength: 512, expected: Buffer.from([ 0x20, 0xc5, 0x70, 0xc3, 0x13, 0x46, 0xf7, 0x03, 0xc9, 0xac, 0x36, 0xc6, 0x1c, 0x03, 0xcb, 0x64, 0xc3, 0x97, 0x0d, 0x0c, 0xfc, 0x78, 0x7e, 0x9b, @@ -84,7 +84,7 @@ module.exports = function() { ]), data: Buffer.from(Array.from({ length: 200 }, (_, i) => i)), // 0x00-0xC7 customization: undefined, - length: 512, + outputLength: 512, expected: Buffer.from([ 0x75, 0x35, 0x8c, 0xf3, 0x9e, 0x41, 0x49, 0x4e, 0x94, 0x97, 0x07, 0x92, 0x7c, 0xee, 0x0a, 0xf2, 0x0a, 0x3f, 0xf5, 0x53, 0x90, 0x4c, 0x86, 0xb0, @@ -104,7 +104,7 @@ module.exports = function() { ]), data: Buffer.from(Array.from({ length: 200 }, (_, i) => i)), // 0x00-0xC7 customization: Buffer.from('My Tagged Application'), - length: 512, + outputLength: 512, expected: Buffer.from([ 0xb5, 0x86, 0x18, 0xf7, 0x1f, 0x92, 0xe1, 0xd5, 0x6c, 0x1b, 0x8c, 0x55, 0xdd, 0xd7, 0xcd, 0x18, 0x8b, 0x97, 0xb4, 0xca, 0x4d, 0x99, 0x83, 0x1e, diff --git a/test/fixtures/webcrypto/supports-modern-algorithms.mjs b/test/fixtures/webcrypto/supports-modern-algorithms.mjs index 76d5e805cbc0e7..eafb95c559a0f7 100644 --- a/test/fixtures/webcrypto/supports-modern-algorithms.mjs +++ b/test/fixtures/webcrypto/supports-modern-algorithms.mjs @@ -17,17 +17,17 @@ const X25519 = await subtle.generateKey('X25519', false, ['deriveBits', 'deriveK export const vectors = { 'digest': [ [false, 'cSHAKE128'], - [shake128, { name: 'cSHAKE128', length: 128 }], - [shake128, { name: 'cSHAKE128', length: 128, functionName: Buffer.alloc(0), customization: Buffer.alloc(0) }], - [false, { name: 'cSHAKE128', length: 128, functionName: Buffer.alloc(1) }], - [false, { name: 'cSHAKE128', length: 128, customization: Buffer.alloc(1) }], - [false, { name: 'cSHAKE128', length: 127 }], + [shake128, { name: 'cSHAKE128', outputLength: 128 }], + [shake128, { name: 'cSHAKE128', outputLength: 128, functionName: Buffer.alloc(0), customization: Buffer.alloc(0) }], + [false, { name: 'cSHAKE128', outputLength: 128, functionName: Buffer.alloc(1) }], + [false, { name: 'cSHAKE128', outputLength: 128, customization: Buffer.alloc(1) }], + [false, { name: 'cSHAKE128', outputLength: 127 }], [false, 'cSHAKE256'], - [shake256, { name: 'cSHAKE256', length: 256 }], - [shake256, { name: 'cSHAKE256', length: 256, functionName: Buffer.alloc(0), customization: Buffer.alloc(0) }], - [false, { name: 'cSHAKE256', length: 256, functionName: Buffer.alloc(1) }], - [false, { name: 'cSHAKE256', length: 256, customization: Buffer.alloc(1) }], - [false, { name: 'cSHAKE256', length: 255 }], + [shake256, { name: 'cSHAKE256', outputLength: 256 }], + [shake256, { name: 'cSHAKE256', outputLength: 256, functionName: Buffer.alloc(0), customization: Buffer.alloc(0) }], + [false, { name: 'cSHAKE256', outputLength: 256, functionName: Buffer.alloc(1) }], + [false, { name: 'cSHAKE256', outputLength: 256, customization: Buffer.alloc(1) }], + [false, { name: 'cSHAKE256', outputLength: 255 }], ], 'sign': [ [pqc, 'ML-DSA-44'], @@ -44,8 +44,8 @@ export const vectors = { [false, 'Argon2id'], [false, 'KMAC128'], [false, 'KMAC256'], - [kmac, { name: 'KMAC128', length: 256 }], - [kmac, { name: 'KMAC256', length: 256 }], + [kmac, { name: 'KMAC128', outputLength: 256 }], + [kmac, { name: 'KMAC256', outputLength: 256 }], ], 'generateKey': [ [pqc, 'ML-DSA-44'], diff --git a/test/parallel/test-webcrypto-digest.js b/test/parallel/test-webcrypto-digest.js index 4d22006937f8cb..4a28d88dcd72c3 100644 --- a/test/parallel/test-webcrypto-digest.js +++ b/test/parallel/test-webcrypto-digest.js @@ -19,8 +19,8 @@ const kTests = [ if (!process.features.openssl_is_boringssl) { kTests.push( - [{ name: 'cSHAKE128', length: 256 }, ['shake128', { outputLength: 256 >> 3 }], 256], - [{ name: 'cSHAKE256', length: 512 }, ['shake256', { outputLength: 512 >> 3 }], 512], + [{ name: 'cSHAKE128', outputLength: 256 }, ['shake128', { outputLength: 256 >> 3 }], 256], + [{ name: 'cSHAKE256', outputLength: 512 }, ['shake256', { outputLength: 512 >> 3 }], 512], ['SHA3-256', ['sha3-256'], 256], ['SHA3-384', ['sha3-384'], 384], ['SHA3-512', ['sha3-512'], 512], @@ -223,10 +223,10 @@ async function testDigest(size, alg) { function applyXOF(name) { if (name.match(/cshake128/i)) { - return { name, length: 256 }; + return { name, outputLength: 256 }; } if (name.match(/cshake256/i)) { - return { name, length: 512 }; + return { name, outputLength: 512 }; } return name; @@ -259,13 +259,13 @@ function applyXOF(name) { if (getHashes().includes('shake128')) { (async () => { assert.deepStrictEqual( - new Uint8Array(await subtle.digest({ name: 'cSHAKE128', length: 0 }, Buffer.alloc(1))), + new Uint8Array(await subtle.digest({ name: 'cSHAKE128', outputLength: 0 }, Buffer.alloc(1))), new Uint8Array(0), ); - await assert.rejects(subtle.digest({ name: 'cSHAKE128', length: 7 }, Buffer.alloc(1)), { + await assert.rejects(subtle.digest({ name: 'cSHAKE128', outputLength: 7 }, Buffer.alloc(1)), { name: 'NotSupportedError', - message: 'Unsupported CShakeParams length', + message: 'Unsupported CShakeParams outputLength', }); })().then(common.mustCall()); } diff --git a/test/parallel/test-webcrypto-sign-verify-kmac.js b/test/parallel/test-webcrypto-sign-verify-kmac.js index c30196a94d9fb6..d41095e0893d97 100644 --- a/test/parallel/test-webcrypto-sign-verify-kmac.js +++ b/test/parallel/test-webcrypto-sign-verify-kmac.js @@ -19,7 +19,7 @@ async function testVerify({ algorithm, key, data, customization, - length, + outputLength, expected }) { const [ verifyKey, @@ -46,7 +46,7 @@ async function testVerify({ algorithm, const signParams = { name: algorithm, - length, + outputLength, customization, }; @@ -112,7 +112,7 @@ async function testVerify({ algorithm, { assert(!(await subtle.verify({ ...signParams, - length: length === 256 ? 512 : 256, + outputLength: outputLength === 256 ? 512 : 256, }, verifyKey, expected, data))); } } @@ -121,7 +121,7 @@ async function testSign({ algorithm, key, data, customization, - length, + outputLength, expected }) { const [ signKey, @@ -148,7 +148,7 @@ async function testSign({ algorithm, const signParams = { name: algorithm, - length, + outputLength, customization, }; diff --git a/test/parallel/test-webcrypto-sign-verify.js b/test/parallel/test-webcrypto-sign-verify.js index 8b034e005b29a4..26e66d9aa0fa8b 100644 --- a/test/parallel/test-webcrypto-sign-verify.js +++ b/test/parallel/test-webcrypto-sign-verify.js @@ -118,12 +118,12 @@ if (hasOpenSSL(3)) { const signature = await subtle.sign({ name, - length: 256, + outputLength: 256, }, key, ec.encode(data)); assert(await subtle.verify({ name, - length: 256, + outputLength: 256, }, key, signature, ec.encode(data))); } diff --git a/test/wpt/status/WebCryptoAPI.cjs b/test/wpt/status/WebCryptoAPI.cjs index d23fb1d40453fe..d14c617614af34 100644 --- a/test/wpt/status/WebCryptoAPI.cjs +++ b/test/wpt/status/WebCryptoAPI.cjs @@ -47,6 +47,43 @@ if (!hasOpenSSL(3, 5)) { 'sign_verify/mldsa.tentative.https.any.js'); } +const cshakeExpectedFailures = ['cSHAKE128', 'cSHAKE256'].flatMap((algorithm) => { + return [0, 256, 384, 512].flatMap((length) => { + return ['empty', 'short', 'medium'].flatMap((size) => { + const base = `${algorithm} with ${length} bit output and ${size} source data`; + return [ + base, + `${base} and altered buffer after call`, + ]; + }); + }); +}); + +const kmacVectorNames = [ + 'KMAC128 with no customization', + 'KMAC128 with customization', + 'KMAC128 with large data and customization', + 'KMAC256 with customization and 512-bit output', + 'KMAC256 with large data and no customization', + 'KMAC256 with large data and customization', +]; + +const kmacExpectedFailures = kmacVectorNames.flatMap((name) => { + return [ + `${name} verification`, + `${name} verification with altered signature after call`, + `${name} with altered plaintext after call`, + `${name} no verify usage`, + `${name} round trip`, + `${name} verification failure due to wrong plaintext`, + `${name} verification failure due to wrong signature`, + `${name} verification failure due to short signature`, + `${name} verification failure due to wrong length parameter`, + `${name} signing with wrong algorithm name`, + `${name} verifying with wrong algorithm name`, + ]; +}); + module.exports = { ...conditionalSkips, 'algorithm-discards-context.https.window.js': { @@ -86,4 +123,16 @@ module.exports = { ], }, }, + 'digest/cshake.tentative.https.any.js': { + 'fail': { + 'note': 'WPT still uses CShakeParams.length; implementation moved to CShakeParams.outputLength', + 'expected': cshakeExpectedFailures, + }, + }, + 'sign_verify/kmac.tentative.https.any.js': conditionalSkips['sign_verify/kmac.tentative.https.any.js'] ?? { + 'fail': { + 'note': 'WPT still uses KmacParams.length; implementation moved to KmacParams.outputLength', + 'expected': kmacExpectedFailures, + }, + }, }; From bfa60d578278f98723b6361028720219ab50ff7a Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Mon, 2 Mar 2026 10:53:18 +0100 Subject: [PATCH 005/267] build: fix GN for new merve dep PR-URL: https://github.com/nodejs/node/pull/61984 Reviewed-By: Yagiz Nizipli Reviewed-By: Chengzhong Wu Reviewed-By: Colin Ihrig --- deps/merve/BUILD.gn | 14 ++++++++++++++ deps/merve/unofficial.gni | 20 ++++++++++++++++++++ node.gni | 2 -- unofficial.gni | 1 + 4 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 deps/merve/BUILD.gn create mode 100644 deps/merve/unofficial.gni diff --git a/deps/merve/BUILD.gn b/deps/merve/BUILD.gn new file mode 100644 index 00000000000000..7bb318f8835dba --- /dev/null +++ b/deps/merve/BUILD.gn @@ -0,0 +1,14 @@ +############################################################################## +# # +# DO NOT EDIT THIS FILE! # +# # +############################################################################## + +# This file is used by GN for building, which is NOT the build system used for +# building official binaries. +# Please modify the gyp files if you are making changes to build system. + +import("unofficial.gni") + +merve_gn_build("merve") { +} diff --git a/deps/merve/unofficial.gni b/deps/merve/unofficial.gni new file mode 100644 index 00000000000000..dfb508d1d22f84 --- /dev/null +++ b/deps/merve/unofficial.gni @@ -0,0 +1,20 @@ +# This file is used by GN for building, which is NOT the build system used for +# building official binaries. +# Please edit the gyp files if you are making changes to build system. + +# The actual configurations are put inside a template in unofficial.gni to +# prevent accidental edits from contributors. +template("merve_gn_build") { + config("merve_config") { + include_dirs = [ "." ] + } + gypi_values = exec_script("../../tools/gypi_to_gn.py", + [ rebase_path("merve.gyp") ], + "scope", + [ "merve.gyp" ]) + source_set(target_name) { + forward_variables_from(invoker, "*") + public_configs = [ ":merve_config" ] + sources = gypi_values.merve_sources + } +} diff --git a/node.gni b/node.gni index d4438f7fd61598..41f200189a34e1 100644 --- a/node.gni +++ b/node.gni @@ -26,8 +26,6 @@ declare_args() { # TODO(zcbenz): This is currently copied from configure.py, we should share # the list between configure.py and GN configurations. node_builtin_shareable_builtins = [ - "deps/cjs-module-lexer/lexer.js", - "deps/cjs-module-lexer/dist/lexer.js", "deps/undici/undici.js", "deps/amaro/dist/index.js", ] diff --git a/unofficial.gni b/unofficial.gni index c742b62c484e9d..d9b6663ba9fdf9 100644 --- a/unofficial.gni +++ b/unofficial.gni @@ -160,6 +160,7 @@ template("node_gn_build") { "deps/cares", "deps/histogram", "deps/llhttp", + "deps/merve", "deps/nbytes", "deps/nghttp2", "deps/ngtcp2", From 3cbac055de401762a33458c0242be8e13335ea96 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Mon, 9 Mar 2026 21:19:41 -0400 Subject: [PATCH 006/267] deps: update merve to 1.2.0 PR-URL: https://github.com/nodejs/node/pull/62149 Reviewed-By: Colin Ihrig Reviewed-By: Rafael Gonzaga Reviewed-By: Yagiz Nizipli Reviewed-By: Antoine du Hamel --- deps/merve/merve.cpp | 504 ++++++++++++++++++++++++++++++++++++++---- deps/merve/merve.h | 66 ++++-- deps/merve/merve_c.h | 196 ++++++++++++++++ src/node_cjs_lexer.cc | 4 +- 4 files changed, 710 insertions(+), 60 deletions(-) create mode 100644 deps/merve/merve_c.h diff --git a/deps/merve/merve.cpp b/deps/merve/merve.cpp index f25aafc225ac43..9d8b7717c68f5a 100644 --- a/deps/merve/merve.cpp +++ b/deps/merve/merve.cpp @@ -1,4 +1,4 @@ -/* auto-generated on 2026-01-21 14:02:13 -0500. Do not edit! */ +/* auto-generated on 2026-03-06 11:46:19 -0500. Do not edit! */ #include "merve.h" /* begin file src/parser.cpp */ @@ -313,8 +313,42 @@ struct StarExportBinding { std::string_view id; }; -// Global state for error tracking -std::optional last_error; +// Thread-local state for error tracking (safe for concurrent parse calls). +thread_local std::optional last_error; +thread_local std::optional last_error_location; + +static error_location makeErrorLocation(const char* source, const char* end, const char* at) { + const char* target = at; + if (target < source) target = source; + if (target > end) target = end; + + uint32_t line = 1; + uint32_t column = 1; + const char* cur = source; + + while (cur < target) { + const char ch = *cur++; + if (ch == '\n') { + line++; + column = 1; + continue; + } + if (ch == '\r') { + line++; + column = 1; + if (cur < target && *cur == '\n') { + cur++; + } + continue; + } + column++; + } + + error_location loc{}; + loc.line = line; + loc.column = column; + return loc; +} // Lexer state class class CJSLexer { @@ -328,18 +362,29 @@ class CJSLexer { uint16_t openTokenDepth; uint16_t templateDepth; + uint32_t line; + bool lastSlashWasDivision; bool nextBraceIsClass; std::array templateStack_; std::array openTokenPosStack_; + std::array openTokenTypeStack_; std::array openClassPosStack; std::array starExportStack_; StarExportBinding* starExportStack; const StarExportBinding* STAR_EXPORT_STACK_END; - std::vector& exports; - std::vector& re_exports; + std::vector& exports; + std::vector& re_exports; + + // Increments `line` when consuming a line terminator. + // - Counts '\n' as a newline. + // - Counts '\r' as a newline only when it is not part of a CRLF sequence. + // (i.e., the next character is not '\n' or we're at end-of-input.) + void countNewline(char ch) { + line += (ch == '\n') || (ch == '\r' && (pos + 1 >= end || *(pos + 1) != '\n')); + } // Character classification helpers using lookup tables static bool isBr(char c) { @@ -476,9 +521,11 @@ class CJSLexer { } // Parsing utilities - void syntaxError(lexer_error code) { + void syntaxError(lexer_error code, const char* at = nullptr) { if (!last_error) { last_error = code; + const char* error_pos = at ? at : pos; + last_error_location = makeErrorLocation(source, end, error_pos); } pos = end + 1; } @@ -498,6 +545,8 @@ class CJSLexer { return ch; } else if (!isBrOrWs(ch)) { return ch; + } else { + countNewline(ch); } } while (pos++ < end); return ch; @@ -506,8 +555,10 @@ class CJSLexer { void lineComment() { while (pos++ < end) { char ch = *pos; - if (ch == '\n' || ch == '\r') + if (ch == '\n' || ch == '\r') { + countNewline(ch); return; + } } } @@ -519,6 +570,7 @@ class CJSLexer { pos++; return; } + countNewline(ch); } } @@ -530,8 +582,13 @@ class CJSLexer { if (ch == '\\') { if (pos + 1 >= end) break; ch = *++pos; - if (ch == '\r' && *(pos + 1) == '\n') - pos++; + if (ch == '\r') { + ++line; + if (*(pos + 1) == '\n') + pos++; + } else if (ch == '\n') { + ++line; + } } else if (isBr(ch)) break; } @@ -583,8 +640,12 @@ class CJSLexer { } if (ch == '`') return; - if (ch == '\\' && pos + 1 < end) + if (ch == '\\' && pos + 1 < end) { pos++; + countNewline(*pos); + } else { + countNewline(ch); + } } syntaxError(lexer_error::UNTERMINATED_TEMPLATE_STRING); } @@ -617,7 +678,7 @@ class CJSLexer { #endif } - void addExport(std::string_view export_name) { + void addExport(std::string_view export_name, uint32_t at_line) { // Skip surrounding quotes if present if (!export_name.empty() && (export_name.front() == '\'' || export_name.front() == '"')) { export_name.remove_prefix(1); @@ -628,11 +689,11 @@ class CJSLexer { if (!needsUnescaping(export_name)) { // Check if this export already exists (avoid duplicates) for (const auto& existing : exports) { - if (get_string_view(existing) == export_name) { + if (get_string_view(existing.name) == export_name) { return; // Already exists, skip } } - exports.push_back(export_name); + exports.push_back(export_entry{export_name, at_line}); return; } @@ -647,14 +708,14 @@ class CJSLexer { // Check if this export already exists (avoid duplicates) for (const auto& existing : exports) { - if (get_string_view(existing) == name) { + if (get_string_view(existing.name) == name) { return; // Already exists, skip } } - exports.push_back(std::move(unescaped.value())); + exports.push_back(export_entry{std::move(unescaped.value()), at_line}); } - void addReexport(std::string_view reexport_name) { + void addReexport(std::string_view reexport_name, uint32_t at_line) { // Skip surrounding quotes if present if (!reexport_name.empty() && (reexport_name.front() == '\'' || reexport_name.front() == '"')) { reexport_name.remove_prefix(1); @@ -663,7 +724,7 @@ class CJSLexer { // Fast path: no escaping needed, use string_view directly if (!needsUnescaping(reexport_name)) { - re_exports.push_back(reexport_name); + re_exports.push_back(export_entry{reexport_name, at_line}); return; } @@ -673,7 +734,7 @@ class CJSLexer { return; // Skip invalid escape sequences } - re_exports.push_back(std::move(unescaped.value())); + re_exports.push_back(export_entry{std::move(unescaped.value()), at_line}); } bool readExportsOrModuleDotExports(char ch) { @@ -715,7 +776,7 @@ class CJSLexer { switch (requireType) { case RequireType::ExportStar: case RequireType::ExportAssign: - addReexport(std::string_view(reexportStart, reexportEnd - reexportStart)); + addReexport(std::string_view(reexportStart, reexportEnd - reexportStart), line); return true; default: if (starExportStack < STAR_EXPORT_STACK_END) { @@ -752,20 +813,14 @@ class CJSLexer { const char* endPos = pos; ch = commentWhitespace(); - // Check if this is a getter syntax: get identifier() - if (ch != ':' && endPos - startPos == 3 && matchesAt(startPos, end, "get")) { - // Skip getter: get identifier() { ... } - if (identifier(ch)) { - ch = commentWhitespace(); - if (ch == '(') { - // This is a getter, stop parsing here (early termination) - pos = revertPos; - return; - } + // Check if this is a getter syntax: get identifier() { ... } + if (ch != ':' && endPos - startPos == 3 && matchesAt(startPos, end, "get") && identifier(ch)) { + ch = commentWhitespace(); + if (ch == '(') { + // This is a getter, stop parsing here (early termination) + pos = revertPos; + return; } - // Not a getter, revert and fail - pos = revertPos; - return; } if (ch == ':') { @@ -776,7 +831,7 @@ class CJSLexer { return; } } - addExport(std::string_view(startPos, endPos - startPos)); + addExport(std::string_view(startPos, endPos - startPos), line); } else if (ch == '\'' || ch == '"') { const char* start = pos; stringLiteral(ch); @@ -789,7 +844,7 @@ class CJSLexer { pos = revertPos; return; } - addExport(std::string_view(start, end_pos - start)); + addExport(std::string_view(start, end_pos - start), line); } } else if (ch == '.' && matchesAt(pos + 1, end, "..")) { pos += 3; @@ -828,7 +883,7 @@ class CJSLexer { const char* endPos = pos; ch = commentWhitespace(); if (ch == '=') { - addExport(std::string_view(startPos, endPos - startPos)); + addExport(std::string_view(startPos, endPos - startPos), line); return; } } @@ -846,7 +901,7 @@ class CJSLexer { pos++; ch = commentWhitespace(); if (ch != '=') break; - addExport(std::string_view(startPos, endPos - startPos)); + addExport(std::string_view(startPos, endPos - startPos), line); } break; } @@ -977,7 +1032,7 @@ class CJSLexer { ch = commentWhitespace(); if (ch != ':') break; if (exportStart && exportEnd) - addExport(std::string_view(exportStart, exportEnd - exportStart)); + addExport(std::string_view(exportStart, exportEnd - exportStart), line); pos = revertPos; return; } else if (ch == 'g') { @@ -1045,7 +1100,7 @@ class CJSLexer { ch = commentWhitespace(); if (ch != ')') break; if (exportStart && exportEnd) - addExport(std::string_view(exportStart, exportEnd - exportStart)); + addExport(std::string_view(exportStart, exportEnd - exportStart), line); return; } break; @@ -1409,7 +1464,7 @@ class CJSLexer { StarExportBinding* curCheckBinding = &starExportStack_[0]; while (curCheckBinding != starExportStack) { if (curCheckBinding->id == id) { - addReexport(curCheckBinding->specifier); + addReexport(curCheckBinding->specifier, line); pos = revertPos; return; } @@ -1467,6 +1522,7 @@ class CJSLexer { char ch = commentWhitespace(); switch (ch) { case '(': + openTokenTypeStack_[openTokenDepth] = '('; openTokenPosStack_[openTokenDepth++] = startPos; return; case '.': @@ -1480,7 +1536,7 @@ class CJSLexer { // It's something like import.metaData, not import.meta return; } - syntaxError(lexer_error::UNEXPECTED_ESM_IMPORT_META); + syntaxError(lexer_error::UNEXPECTED_ESM_IMPORT_META, startPos); } return; default: @@ -1495,25 +1551,27 @@ class CJSLexer { pos--; return; } - syntaxError(lexer_error::UNEXPECTED_ESM_IMPORT); + syntaxError(lexer_error::UNEXPECTED_ESM_IMPORT, startPos); } } void throwIfExportStatement() { + const char* startPos = pos; pos += 6; const char* curPos = pos; char ch = commentWhitespace(); if (pos == curPos && !isPunctuator(ch)) return; - syntaxError(lexer_error::UNEXPECTED_ESM_EXPORT); + syntaxError(lexer_error::UNEXPECTED_ESM_EXPORT, startPos); } public: - CJSLexer(std::vector& out_exports, std::vector& out_re_exports) + CJSLexer(std::vector& out_exports, std::vector& out_re_exports) : source(nullptr), pos(nullptr), end(nullptr), lastTokenPos(nullptr), templateStackDepth(0), openTokenDepth(0), templateDepth(0), + line(1), lastSlashWasDivision(false), nextBraceIsClass(false), - templateStack_{}, openTokenPosStack_{}, openClassPosStack{}, + templateStack_{}, openTokenPosStack_{}, openTokenTypeStack_{}, openClassPosStack{}, starExportStack_{}, starExportStack(nullptr), STAR_EXPORT_STACK_END(nullptr), exports(out_exports), re_exports(out_re_exports) {} @@ -1528,6 +1586,7 @@ class CJSLexer { templateStackDepth = 0; openTokenDepth = 0; templateDepth = std::numeric_limits::max(); + line = 1; lastSlashWasDivision = false; starExportStack = &starExportStack_[0]; STAR_EXPORT_STACK_END = &starExportStack_[MAX_STAR_EXPORTS - 1]; @@ -1552,8 +1611,10 @@ class CJSLexer { while (pos++ < end) { ch = *pos; - if (ch == ' ' || (ch < 14 && ch > 8)) + if (ch == ' ' || (ch < 14 && ch > 8)) { + countNewline(ch); continue; + } if (openTokenDepth == 0) { switch (ch) { @@ -1575,6 +1636,7 @@ class CJSLexer { pos += 23; if (*pos == '(') { pos++; + openTokenTypeStack_[openTokenDepth] = '('; openTokenPosStack_[openTokenDepth++] = lastTokenPos; if (tryParseRequire(RequireType::Import) && keywordStart(startPos)) tryBacktrackAddStarExportBinding(startPos - 1); @@ -1584,6 +1646,7 @@ class CJSLexer { if (pos + 4 < end && matchesAt(pos, end, "Star")) pos += 4; if (*pos == '(') { + openTokenTypeStack_[openTokenDepth] = '('; openTokenPosStack_[openTokenDepth++] = lastTokenPos; if (*(pos + 1) == 'r') { pos++; @@ -1618,6 +1681,7 @@ class CJSLexer { tryParseObjectDefineOrKeys(openTokenDepth == 0); break; case '(': + openTokenTypeStack_[openTokenDepth] = '('; openTokenPosStack_[openTokenDepth++] = lastTokenPos; break; case ')': @@ -1630,6 +1694,7 @@ class CJSLexer { case '{': openClassPosStack[openTokenDepth] = nextBraceIsClass; nextBraceIsClass = false; + openTokenTypeStack_[openTokenDepth] = '{'; openTokenPosStack_[openTokenDepth++] = lastTokenPos; break; case '}': @@ -1692,6 +1757,19 @@ class CJSLexer { lastTokenPos = pos; } + if (!last_error) { + if (templateDepth != std::numeric_limits::max()) { + syntaxError(lexer_error::UNTERMINATED_TEMPLATE_STRING, end); + } else if (openTokenDepth != 0) { + const char open_ch = openTokenTypeStack_[openTokenDepth - 1]; + if (open_ch == '{') { + syntaxError(lexer_error::UNTERMINATED_BRACE, end); + } else { + syntaxError(lexer_error::UNTERMINATED_PAREN, end); + } + } + } + if (templateDepth != std::numeric_limits::max() || openTokenDepth || last_error) { return false; } @@ -1702,6 +1780,7 @@ class CJSLexer { std::optional parse_commonjs(std::string_view file_contents) { last_error.reset(); + last_error_location.reset(); lexer_analysis result; CJSLexer lexer(result.exports, result.re_exports); @@ -1717,5 +1796,340 @@ const std::optional& get_last_error() { return last_error; } +const std::optional& get_last_error_location() { + return last_error_location; +} + } // namespace lexer /* end file src/parser.cpp */ +/* begin file src/merve_c.cpp */ +/* begin file include/merve_c.h */ +/** + * @file merve_c.h + * @brief Includes the C definitions for merve. This is a C file, not C++. + */ +#ifndef MERVE_C_H +#define MERVE_C_H + +#include +#include +#include + +/** + * @brief Non-owning string reference. + * + * The data pointer is NOT null-terminated. Always use the length field. + * + * The data is valid as long as: + * - The merve_analysis handle that produced it has not been freed. + * - For string_view-backed exports: the original source buffer is alive. + */ +typedef struct { + const char* data; + size_t length; +} merve_string; + +/** + * @brief Opaque handle to a CommonJS parse result. + * + * Created by merve_parse_commonjs(). Must be freed with merve_free(). + */ +typedef void* merve_analysis; + +/** + * @brief Version number components. + */ +typedef struct { + int major; + int minor; + int revision; +} merve_version_components; + +/** + * @brief Source location for a parse error. + * + * - line and column are 1-based. + * - column is byte-oriented. + * + * A zeroed location (`{0, 0}`) means the location is unavailable. + */ +typedef struct { + uint32_t line; + uint32_t column; +} merve_error_loc; + +/* Error codes corresponding to lexer::lexer_error values. */ +#define MERVE_ERROR_TODO 0 +#define MERVE_ERROR_UNEXPECTED_PAREN 1 +#define MERVE_ERROR_UNEXPECTED_BRACE 2 +#define MERVE_ERROR_UNTERMINATED_PAREN 3 +#define MERVE_ERROR_UNTERMINATED_BRACE 4 +#define MERVE_ERROR_UNTERMINATED_TEMPLATE_STRING 5 +#define MERVE_ERROR_UNTERMINATED_STRING_LITERAL 6 +#define MERVE_ERROR_UNTERMINATED_REGEX_CHARACTER_CLASS 7 +#define MERVE_ERROR_UNTERMINATED_REGEX 8 +#define MERVE_ERROR_UNEXPECTED_ESM_IMPORT_META 9 +#define MERVE_ERROR_UNEXPECTED_ESM_IMPORT 10 +#define MERVE_ERROR_UNEXPECTED_ESM_EXPORT 11 +#define MERVE_ERROR_TEMPLATE_NEST_OVERFLOW 12 + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Parse CommonJS source code and optionally return error location. + * + * The source buffer must remain valid while accessing string_view-backed + * export names from the returned handle. + * + * If @p out_err is non-NULL, it is always written: + * - On success: set to {0, 0}. + * - On parse failure with known location: set to that location. + * - On parse failure without available location: set to {0, 0}. + * + * You must call merve_free() on the returned handle when done. + * + * @param input Pointer to the JavaScript source (need not be + * null-terminated). NULL is treated as an empty string. + * @param length Length of the input in bytes. + * @param out_err Optional output pointer for parse error location. + * @return A handle to the parse result, or NULL on out-of-memory. + * Use merve_is_valid() to check if parsing succeeded. + */ +#ifdef __cplusplus +merve_analysis merve_parse_commonjs(const char* input, size_t length, + merve_error_loc* out_err = nullptr); +#else +merve_analysis merve_parse_commonjs(const char* input, size_t length, + merve_error_loc* out_err); +#endif + +/** + * Check whether the parse result is valid (parsing succeeded). + * + * @param result Handle returned by merve_parse_commonjs(). NULL returns false. + * @return true if parsing succeeded, false otherwise. + */ +bool merve_is_valid(merve_analysis result); + +/** + * Free a parse result and all associated memory. + * + * @param result Handle returned by merve_parse_commonjs(). NULL is a no-op. + */ +void merve_free(merve_analysis result); + +/** + * Get the number of named exports found. + * + * @param result A parse result handle. NULL returns 0. + * @return Number of exports, or 0 if result is NULL or invalid. + */ +size_t merve_get_exports_count(merve_analysis result); + +/** + * Get the number of re-export module specifiers found. + * + * @param result A parse result handle. NULL returns 0. + * @return Number of re-exports, or 0 if result is NULL or invalid. + */ +size_t merve_get_reexports_count(merve_analysis result); + +/** + * Get the name of an export at the given index. + * + * @param result A valid parse result handle. + * @param index Zero-based index (must be < merve_get_exports_count()). + * @return Non-owning string reference. Returns {NULL, 0} on error. + */ +merve_string merve_get_export_name(merve_analysis result, size_t index); + +/** + * Get the 1-based source line number of an export. + * + * @param result A valid parse result handle. + * @param index Zero-based index (must be < merve_get_exports_count()). + * @return 1-based line number, or 0 on error. + */ +uint32_t merve_get_export_line(merve_analysis result, size_t index); + +/** + * Get the module specifier of a re-export at the given index. + * + * @param result A valid parse result handle. + * @param index Zero-based index (must be < merve_get_reexports_count()). + * @return Non-owning string reference. Returns {NULL, 0} on error. + */ +merve_string merve_get_reexport_name(merve_analysis result, size_t index); + +/** + * Get the 1-based source line number of a re-export. + * + * @param result A valid parse result handle. + * @param index Zero-based index (must be < merve_get_reexports_count()). + * @return 1-based line number, or 0 on error. + */ +uint32_t merve_get_reexport_line(merve_analysis result, size_t index); + +/** + * Get the error code from the last merve_parse_commonjs() call. + * + * @return One of the MERVE_ERROR_* constants, or -1 if the last parse + * succeeded. + * @note This is global state, overwritten by each merve_parse_commonjs() call. + */ +int merve_get_last_error(void); + +/** + * Get the merve library version string. + * + * @return Null-terminated version string (e.g. "1.0.1"). Never NULL. + */ +const char* merve_get_version(void); + +/** + * Get the merve library version as individual components. + * + * @return Struct with major, minor, and revision fields. + */ +merve_version_components merve_get_version_components(void); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* MERVE_C_H */ +/* end file include/merve_c.h */ + +#include + +struct merve_analysis_impl { + std::optional result{}; +}; + +static merve_string merve_string_create(const char* data, size_t length) { + merve_string out{}; + out.data = data; + out.length = length; + return out; +} + +static void merve_error_loc_clear(merve_error_loc* out_err) { + if (!out_err) return; + out_err->line = 0; + out_err->column = 0; +} + +static void merve_error_loc_set(merve_error_loc* out_err, + const lexer::error_location& loc) { + if (!out_err) return; + out_err->line = loc.line; + out_err->column = loc.column; +} + +extern "C" { + +merve_analysis merve_parse_commonjs(const char* input, size_t length, + merve_error_loc* out_err) { + merve_error_loc_clear(out_err); + + merve_analysis_impl* impl = new (std::nothrow) merve_analysis_impl(); + if (!impl) return nullptr; + if (input != nullptr) { + impl->result = lexer::parse_commonjs(std::string_view(input, length)); + } else { + impl->result = lexer::parse_commonjs(std::string_view("", 0)); + } + + if (!impl->result.has_value() && out_err) { + const std::optional& err_loc = + lexer::get_last_error_location(); + if (err_loc.has_value()) { + merve_error_loc_set(out_err, err_loc.value()); + } + } + + return static_cast(impl); +} + +bool merve_is_valid(merve_analysis result) { + if (!result) return false; + return static_cast(result)->result.has_value(); +} + +void merve_free(merve_analysis result) { + if (!result) return; + delete static_cast(result); +} + +size_t merve_get_exports_count(merve_analysis result) { + if (!result) return 0; + merve_analysis_impl* impl = static_cast(result); + if (!impl->result.has_value()) return 0; + return impl->result->exports.size(); +} + +size_t merve_get_reexports_count(merve_analysis result) { + if (!result) return 0; + merve_analysis_impl* impl = static_cast(result); + if (!impl->result.has_value()) return 0; + return impl->result->re_exports.size(); +} + +merve_string merve_get_export_name(merve_analysis result, size_t index) { + if (!result) return merve_string_create(nullptr, 0); + merve_analysis_impl* impl = static_cast(result); + if (!impl->result.has_value()) return merve_string_create(nullptr, 0); + if (index >= impl->result->exports.size()) + return merve_string_create(nullptr, 0); + std::string_view sv = + lexer::get_string_view(impl->result->exports[index]); + return merve_string_create(sv.data(), sv.size()); +} + +uint32_t merve_get_export_line(merve_analysis result, size_t index) { + if (!result) return 0; + merve_analysis_impl* impl = static_cast(result); + if (!impl->result.has_value()) return 0; + if (index >= impl->result->exports.size()) return 0; + return impl->result->exports[index].line; +} + +merve_string merve_get_reexport_name(merve_analysis result, size_t index) { + if (!result) return merve_string_create(nullptr, 0); + merve_analysis_impl* impl = static_cast(result); + if (!impl->result.has_value()) return merve_string_create(nullptr, 0); + if (index >= impl->result->re_exports.size()) + return merve_string_create(nullptr, 0); + std::string_view sv = + lexer::get_string_view(impl->result->re_exports[index]); + return merve_string_create(sv.data(), sv.size()); +} + +uint32_t merve_get_reexport_line(merve_analysis result, size_t index) { + if (!result) return 0; + merve_analysis_impl* impl = static_cast(result); + if (!impl->result.has_value()) return 0; + if (index >= impl->result->re_exports.size()) return 0; + return impl->result->re_exports[index].line; +} + +int merve_get_last_error(void) { + const std::optional& err = lexer::get_last_error(); + if (!err.has_value()) return -1; + return static_cast(err.value()); +} + +const char* merve_get_version(void) { return MERVE_VERSION; } + +merve_version_components merve_get_version_components(void) { + merve_version_components vc{}; + vc.major = lexer::MERVE_VERSION_MAJOR; + vc.minor = lexer::MERVE_VERSION_MINOR; + vc.revision = lexer::MERVE_VERSION_REVISION; + return vc; +} + +} /* extern "C" */ +/* end file src/merve_c.cpp */ diff --git a/deps/merve/merve.h b/deps/merve/merve.h index 3bde8fa0fa00a1..a783ed2094b209 100644 --- a/deps/merve/merve.h +++ b/deps/merve/merve.h @@ -1,13 +1,13 @@ -/* auto-generated on 2026-01-21 14:02:13 -0500. Do not edit! */ -/* begin file include/lexer.h */ +/* auto-generated on 2026-03-06 11:46:19 -0500. Do not edit! */ +/* begin file include/merve.h */ #ifndef MERVE_H #define MERVE_H -/* begin file include/lexer/parser.h */ +/* begin file include/merve/parser.h */ #ifndef MERVE_PARSER_H #define MERVE_PARSER_H -/* begin file include/lexer/version.h */ +/* begin file include/merve/version.h */ /** * @file version.h * @brief Definitions for merve's version number. @@ -15,21 +15,23 @@ #ifndef MERVE_VERSION_H #define MERVE_VERSION_H -#define MERVE_VERSION "1.0.0" +#define MERVE_VERSION "1.2.0" // x-release-please-version namespace lexer { enum { - MERVE_VERSION_MAJOR = 1, - MERVE_VERSION_MINOR = 0, - MERVE_VERSION_REVISION = 0, + MERVE_VERSION_MAJOR = 1, // x-release-please-major + MERVE_VERSION_MINOR = 2, // x-release-please-minor + MERVE_VERSION_REVISION = 0, // x-release-please-patch }; } // namespace lexer #endif // MERVE_VERSION_H -/* end file include/lexer/version.h */ +/* end file include/merve/version.h */ +#include +#include #include #include #include @@ -63,6 +65,17 @@ enum lexer_error { TEMPLATE_NEST_OVERFLOW, ///< Template literal nesting too deep }; +/** + * @brief Source location information for a parse error. + * + * - line and column are 1-based. + * - column is byte-oriented. + */ +struct error_location { + uint32_t line; + uint32_t column; +}; + /** * @brief Type alias for export names. * @@ -74,6 +87,14 @@ enum lexer_error { */ using export_string = std::variant; +/** + * @brief An export name together with its 1-based source line number. + */ +struct export_entry { + export_string name; + uint32_t line; // 1-based line number +}; + /** * @brief Result of parsing a CommonJS module. */ @@ -88,7 +109,7 @@ struct lexer_analysis { * - module.exports = { a, b, c } * - Object.defineProperty(exports, 'name', {...}) */ - std::vector exports{}; + std::vector exports{}; /** * @brief Module specifiers from re-export patterns. @@ -99,7 +120,7 @@ struct lexer_analysis { * - __export(require('other')) * - Object.keys(require('other')).forEach(...) */ - std::vector re_exports{}; + std::vector re_exports{}; }; /** @@ -116,6 +137,13 @@ inline std::string_view get_string_view(const export_string& s) { return std::visit([](const auto& v) -> std::string_view { return v; }, s); } +/** + * @brief Get a string_view from an export_entry (delegates to the name field). + */ +inline std::string_view get_string_view(const export_entry& e) { + return get_string_view(e.name); +} + /** * @brief Parse CommonJS source code and extract export information. * @@ -157,10 +185,22 @@ std::optional parse_commonjs(std::string_view file_contents); */ const std::optional& get_last_error(); +/** + * @brief Get the location of the last failed parse operation. + * + * @return const std::optional& The last error location, or + * std::nullopt if unavailable. + * + * @note This is global state and may be overwritten by subsequent calls + * to parse_commonjs(). + * @note Location tracking is best-effort and may be unavailable. + */ +const std::optional& get_last_error_location(); + } // namespace lexer #endif // MERVE_PARSER_H -/* end file include/lexer/parser.h */ +/* end file include/merve/parser.h */ #endif // MERVE_H -/* end file include/lexer.h */ +/* end file include/merve.h */ diff --git a/deps/merve/merve_c.h b/deps/merve/merve_c.h new file mode 100644 index 00000000000000..035ce21f75736f --- /dev/null +++ b/deps/merve/merve_c.h @@ -0,0 +1,196 @@ +/** + * @file merve_c.h + * @brief Includes the C definitions for merve. This is a C file, not C++. + */ +#ifndef MERVE_C_H +#define MERVE_C_H + +#include +#include +#include + +/** + * @brief Non-owning string reference. + * + * The data pointer is NOT null-terminated. Always use the length field. + * + * The data is valid as long as: + * - The merve_analysis handle that produced it has not been freed. + * - For string_view-backed exports: the original source buffer is alive. + */ +typedef struct { + const char* data; + size_t length; +} merve_string; + +/** + * @brief Opaque handle to a CommonJS parse result. + * + * Created by merve_parse_commonjs(). Must be freed with merve_free(). + */ +typedef void* merve_analysis; + +/** + * @brief Version number components. + */ +typedef struct { + int major; + int minor; + int revision; +} merve_version_components; + +/** + * @brief Source location for a parse error. + * + * - line and column are 1-based. + * - column is byte-oriented. + * + * A zeroed location (`{0, 0}`) means the location is unavailable. + */ +typedef struct { + uint32_t line; + uint32_t column; +} merve_error_loc; + +/* Error codes corresponding to lexer::lexer_error values. */ +#define MERVE_ERROR_TODO 0 +#define MERVE_ERROR_UNEXPECTED_PAREN 1 +#define MERVE_ERROR_UNEXPECTED_BRACE 2 +#define MERVE_ERROR_UNTERMINATED_PAREN 3 +#define MERVE_ERROR_UNTERMINATED_BRACE 4 +#define MERVE_ERROR_UNTERMINATED_TEMPLATE_STRING 5 +#define MERVE_ERROR_UNTERMINATED_STRING_LITERAL 6 +#define MERVE_ERROR_UNTERMINATED_REGEX_CHARACTER_CLASS 7 +#define MERVE_ERROR_UNTERMINATED_REGEX 8 +#define MERVE_ERROR_UNEXPECTED_ESM_IMPORT_META 9 +#define MERVE_ERROR_UNEXPECTED_ESM_IMPORT 10 +#define MERVE_ERROR_UNEXPECTED_ESM_EXPORT 11 +#define MERVE_ERROR_TEMPLATE_NEST_OVERFLOW 12 + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Parse CommonJS source code and optionally return error location. + * + * The source buffer must remain valid while accessing string_view-backed + * export names from the returned handle. + * + * If @p out_err is non-NULL, it is always written: + * - On success: set to {0, 0}. + * - On parse failure with known location: set to that location. + * - On parse failure without available location: set to {0, 0}. + * + * You must call merve_free() on the returned handle when done. + * + * @param input Pointer to the JavaScript source (need not be + * null-terminated). NULL is treated as an empty string. + * @param length Length of the input in bytes. + * @param out_err Optional output pointer for parse error location. + * @return A handle to the parse result, or NULL on out-of-memory. + * Use merve_is_valid() to check if parsing succeeded. + */ +#ifdef __cplusplus +merve_analysis merve_parse_commonjs(const char* input, size_t length, + merve_error_loc* out_err = nullptr); +#else +merve_analysis merve_parse_commonjs(const char* input, size_t length, + merve_error_loc* out_err); +#endif + +/** + * Check whether the parse result is valid (parsing succeeded). + * + * @param result Handle returned by merve_parse_commonjs(). NULL returns false. + * @return true if parsing succeeded, false otherwise. + */ +bool merve_is_valid(merve_analysis result); + +/** + * Free a parse result and all associated memory. + * + * @param result Handle returned by merve_parse_commonjs(). NULL is a no-op. + */ +void merve_free(merve_analysis result); + +/** + * Get the number of named exports found. + * + * @param result A parse result handle. NULL returns 0. + * @return Number of exports, or 0 if result is NULL or invalid. + */ +size_t merve_get_exports_count(merve_analysis result); + +/** + * Get the number of re-export module specifiers found. + * + * @param result A parse result handle. NULL returns 0. + * @return Number of re-exports, or 0 if result is NULL or invalid. + */ +size_t merve_get_reexports_count(merve_analysis result); + +/** + * Get the name of an export at the given index. + * + * @param result A valid parse result handle. + * @param index Zero-based index (must be < merve_get_exports_count()). + * @return Non-owning string reference. Returns {NULL, 0} on error. + */ +merve_string merve_get_export_name(merve_analysis result, size_t index); + +/** + * Get the 1-based source line number of an export. + * + * @param result A valid parse result handle. + * @param index Zero-based index (must be < merve_get_exports_count()). + * @return 1-based line number, or 0 on error. + */ +uint32_t merve_get_export_line(merve_analysis result, size_t index); + +/** + * Get the module specifier of a re-export at the given index. + * + * @param result A valid parse result handle. + * @param index Zero-based index (must be < merve_get_reexports_count()). + * @return Non-owning string reference. Returns {NULL, 0} on error. + */ +merve_string merve_get_reexport_name(merve_analysis result, size_t index); + +/** + * Get the 1-based source line number of a re-export. + * + * @param result A valid parse result handle. + * @param index Zero-based index (must be < merve_get_reexports_count()). + * @return 1-based line number, or 0 on error. + */ +uint32_t merve_get_reexport_line(merve_analysis result, size_t index); + +/** + * Get the error code from the last merve_parse_commonjs() call. + * + * @return One of the MERVE_ERROR_* constants, or -1 if the last parse + * succeeded. + * @note This is global state, overwritten by each merve_parse_commonjs() call. + */ +int merve_get_last_error(void); + +/** + * Get the merve library version string. + * + * @return Null-terminated version string (e.g. "1.0.1"). Never NULL. + */ +const char* merve_get_version(void); + +/** + * Get the merve library version as individual components. + * + * @return Struct with major, minor, and revision fields. + */ +merve_version_components merve_get_version_components(void); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* MERVE_C_H */ diff --git a/src/node_cjs_lexer.cc b/src/node_cjs_lexer.cc index 1b44dec9174841..1aac8d4b4b1b2b 100644 --- a/src/node_cjs_lexer.cc +++ b/src/node_cjs_lexer.cc @@ -22,8 +22,8 @@ using v8::String; using v8::Value; // Create a V8 string from an export_string variant, using fast path for ASCII -inline Local CreateString(Isolate* isolate, - const lexer::export_string& str) { +template +inline Local CreateString(Isolate* isolate, const T& str) { std::string_view sv = lexer::get_string_view(str); if (simdutf::validate_ascii(sv.data(), sv.size())) { From 36869b52de7b44a9fab02af317cfc94b4a319727 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Fri, 13 Mar 2026 13:21:52 -0400 Subject: [PATCH 007/267] deps: update merve to 1.2.2 PR-URL: https://github.com/nodejs/node/pull/62213 Reviewed-By: Yagiz Nizipli Reviewed-By: Colin Ihrig --- deps/merve/merve.cpp | 10 ++++++---- deps/merve/merve.h | 6 +++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/deps/merve/merve.cpp b/deps/merve/merve.cpp index 9d8b7717c68f5a..d3a488650a078a 100644 --- a/deps/merve/merve.cpp +++ b/deps/merve/merve.cpp @@ -1,4 +1,4 @@ -/* auto-generated on 2026-03-06 11:46:19 -0500. Do not edit! */ +/* auto-generated on 2026-03-11 12:53:21 -0400. Do not edit! */ #include "merve.h" /* begin file src/parser.cpp */ @@ -1478,11 +1478,13 @@ class CJSLexer { } void tryBacktrackAddStarExportBinding(const char* bPos) { - while (*bPos == ' ' && bPos > source) + if (bPos < source) return; + while (bPos > source && *bPos == ' ') bPos--; if (*bPos == '=') { + if (bPos <= source) return; bPos--; - while (*bPos == ' ' && bPos > source) + while (bPos > source && *bPos == ' ') bPos--; const char* id_end = bPos; bool identifierStart = false; @@ -1497,7 +1499,7 @@ class CJSLexer { if (starExportStack == STAR_EXPORT_STACK_END) return; starExportStack->id = std::string_view(bPos + 1, static_cast(id_end - bPos)); - while (*bPos == ' ' && bPos > source) + while (bPos > source && *bPos == ' ') bPos--; switch (*bPos) { case 'r': diff --git a/deps/merve/merve.h b/deps/merve/merve.h index a783ed2094b209..a96d23171c2e2c 100644 --- a/deps/merve/merve.h +++ b/deps/merve/merve.h @@ -1,4 +1,4 @@ -/* auto-generated on 2026-03-06 11:46:19 -0500. Do not edit! */ +/* auto-generated on 2026-03-11 12:53:21 -0400. Do not edit! */ /* begin file include/merve.h */ #ifndef MERVE_H #define MERVE_H @@ -15,14 +15,14 @@ #ifndef MERVE_VERSION_H #define MERVE_VERSION_H -#define MERVE_VERSION "1.2.0" // x-release-please-version +#define MERVE_VERSION "1.2.2" // x-release-please-version namespace lexer { enum { MERVE_VERSION_MAJOR = 1, // x-release-please-major MERVE_VERSION_MINOR = 2, // x-release-please-minor - MERVE_VERSION_REVISION = 0, // x-release-please-patch + MERVE_VERSION_REVISION = 2, // x-release-please-patch }; } // namespace lexer From df435d32b83ea86a97a8c2ce9d8988a57c11ca1c Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Tue, 11 Nov 2025 03:53:13 +0100 Subject: [PATCH 008/267] src: build v8 tick processor as built-in source text modules Instead of polyfilling it with vm.SourceTextModule, use a built-in source text module loader so that we can also build the code cache for it at build tiem to embed the code cache for them in the binary. Drive-by: instead of inferring how to compile a particular built-in at run time, do the inferring at build time, so the function-based built-ins can be compiled using parameters quickly looked up from a static map, and the builtins that should be compiled as source text modules are known internally based on extension in the source code (at run time, the extensions are all removed). PR-URL: https://github.com/nodejs/node/pull/60518 Reviewed-By: Aditi Singh Reviewed-By: Marco Ippolito --- lib/internal/main/prof_process.js | 29 +- lib/internal/v8_prof_polyfill.js | 71 ++- lib/internal/v8_prof_processor.js | 54 -- node.gyp | 4 + src/api/environment.cc | 2 +- src/builtin_info.cc | 48 ++ src/builtin_info.h | 57 ++ src/env_properties.h | 1 + src/node_builtins.cc | 528 +++++++++++------- src/node_builtins.h | 70 ++- test/README.md | 2 +- test/cctest/test_per_process.cc | 4 +- .../parallel/test-tick-processor-arguments.js | 18 +- tools/js2c.cc | 22 +- unofficial.gni | 2 + 15 files changed, 595 insertions(+), 317 deletions(-) delete mode 100644 lib/internal/v8_prof_processor.js create mode 100644 src/builtin_info.cc create mode 100644 src/builtin_info.h diff --git a/lib/internal/main/prof_process.js b/lib/internal/main/prof_process.js index 612e3b469d84f4..ac538f24e1f782 100644 --- a/lib/internal/main/prof_process.js +++ b/lib/internal/main/prof_process.js @@ -1,10 +1,37 @@ 'use strict'; +// This main script is used by --prof-process to process logs generated by --prof. +// The tick processor implementation is vendor-in from V8, placed in deps/v8/tools, +// and they have different resolution rules compared to normal Node.js internal builtins, +// despite being embedded into the binary as a built-in as well. + +// TODO(joyeecheung): put the context locals in import.meta. +const { + ObjectAssign, + PromisePrototypeThen, + globalThis, +} = primordials; + const { prepareMainThreadExecution, markBootstrapComplete, } = require('internal/process/pre_execution'); +const { importBuiltinSourceTextModule } = internalBinding('builtins'); +const { triggerUncaughtException } = internalBinding('errors'); + prepareMainThreadExecution(); markBootstrapComplete(); -require('internal/v8_prof_processor'); + +// Polyfill the context with globals needed by the tick processor. +const { globals, openFile } = require('internal/v8_prof_polyfill'); +ObjectAssign(globalThis, globals); +openFile(process.argv[process.argv.length - 1]); + +// Load and evaluate the V8 tick processor as a source text module. +const { promise } = importBuiltinSourceTextModule('internal/deps/v8/tools/tickprocessor-driver'); +// We must catch the rejection asynchronously to print it out properly since +// the tick processor contains top level await. +PromisePrototypeThen(promise, undefined, (err) => { + triggerUncaughtException(err, true /* fromPromise */); +}); diff --git a/lib/internal/v8_prof_polyfill.js b/lib/internal/v8_prof_polyfill.js index 8d047a530d799c..4922d448cfec50 100644 --- a/lib/internal/v8_prof_polyfill.js +++ b/lib/internal/v8_prof_polyfill.js @@ -30,17 +30,17 @@ /* eslint-disable node-core/prefer-primordials, no-restricted-globals */ /* global console */ -module.exports = { versionCheck }; +const { + ArrayPrototypePush, + ArrayPrototypePushApply, + ArrayPrototypeSlice, +} = primordials; -// Don't execute when required directly instead of being eval'd from -// lib/internal/v8_prof_processor.js. This way we can test functions -// from this file in isolation. -if (module.id === 'internal/v8_prof_polyfill') return; - -// Node polyfill const fs = require('fs'); const cp = require('child_process'); const { Buffer } = require('buffer'); +const { StringDecoder } = require('string_decoder'); + const os = { system: function(name, args) { if (process.platform === 'linux' && name === 'nm') { @@ -68,24 +68,40 @@ const os = { }, }; const print = console.log; + function read(fileName) { return fs.readFileSync(fileName, 'utf8'); } const quit = process.exit; -// Polyfill "readline()". -const logFile = globalThis.arguments[globalThis.arguments.length - 1]; -try { - fs.accessSync(logFile); -} catch { - console.error('Please provide a valid isolate file as the final argument.'); - process.exit(1); + +const tickArguments = []; +if (process.platform === 'darwin') { + ArrayPrototypePush(tickArguments, '--mac'); +} else if (process.platform === 'win32') { + ArrayPrototypePush(tickArguments, '--windows'); } -const fd = fs.openSync(logFile, 'r'); +ArrayPrototypePushApply(tickArguments, + ArrayPrototypeSlice(process.argv, 1)); + +function write(str) { process.stdout.write(str); }; +function printErr(str) { process.stderr.write(str); }; + +let logFile; +let fd; const buf = Buffer.allocUnsafe(4096); -const dec = new (require('string_decoder').StringDecoder)('utf-8'); +const dec = new StringDecoder('utf-8'); let line = ''; -{ +function openFile(filename) { + logFile = filename; + try { + fd = fs.openSync(logFile, 'r'); + } catch (e) { + console.error(`Cannot access log file: ${logFile}`); + console.error('Please provide a valid isolate file as the final argument.'); + throw e; + } + const message = versionCheck(peekline(), process.versions.v8); if (message) console.log(message); } @@ -162,10 +178,17 @@ function macCppfiltNm(out) { }); } -Object.assign(globalThis, { - os, - print, - read, - quit, - readline, -}); +module.exports = { + globals: { + arguments: tickArguments, + write, + printErr, + os, + print, + read, + quit, + readline, + }, + openFile, + versionCheck, +}; diff --git a/lib/internal/v8_prof_processor.js b/lib/internal/v8_prof_processor.js deleted file mode 100644 index 1d4f33418ff733..00000000000000 --- a/lib/internal/v8_prof_processor.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -const { - ArrayPrototypePush, - ArrayPrototypePushApply, - ArrayPrototypeSlice, - StringPrototypeSlice, -} = primordials; - -const Buffer = require('buffer').Buffer; -const console = require('internal/console/global'); -const vm = require('vm'); -const { SourceTextModule } = require('internal/vm/module'); - -const { natives } = internalBinding('builtins'); - -async function linker(specifier, referencingModule) { - // Transform "./file.mjs" to "file" - const file = StringPrototypeSlice(specifier, 2, -4); - const code = natives[`internal/deps/v8/tools/${file}`]; - return new SourceTextModule(code, { context: referencingModule.context }); -} - -(async () => { - const tickArguments = []; - if (process.platform === 'darwin') { - ArrayPrototypePush(tickArguments, '--mac'); - } else if (process.platform === 'win32') { - ArrayPrototypePush(tickArguments, '--windows'); - } - ArrayPrototypePushApply(tickArguments, - ArrayPrototypeSlice(process.argv, 1)); - - const context = vm.createContext({ - arguments: tickArguments, - write(s) { process.stdout.write(s); }, - printErr(err) { console.error(err); }, - console, - process, - Buffer, - }); - - const polyfill = natives['internal/v8_prof_polyfill']; - const script = `(function(module, require) { - ${polyfill} - })`; - - vm.runInContext(script, context)(module, require); - - const tickProcessor = natives['internal/deps/v8/tools/tickprocessor-driver']; - const tickprocessorDriver = new SourceTextModule(tickProcessor, { context }); - await tickprocessorDriver.link(linker); - await tickprocessorDriver.evaluate(); -})(); diff --git a/node.gyp b/node.gyp index f5cd416b5fe7a5..cc014320b28529 100644 --- a/node.gyp +++ b/node.gyp @@ -77,6 +77,7 @@ 'src/async_context_frame.cc', 'src/async_wrap.cc', 'src/base_object.cc', + 'src/builtin_info.cc', 'src/cares_wrap.cc', 'src/cleanup_queue.cc', 'src/compile_cache.cc', @@ -203,6 +204,7 @@ 'src/base_object_types.h', 'src/blob_serializer_deserializer.h', 'src/blob_serializer_deserializer-inl.h', + "src/builtin_info.h", 'src/callback_queue.h', 'src/callback_queue-inl.h', 'src/cleanup_queue.h', @@ -1443,6 +1445,8 @@ 'tools/executable_wrapper.h', 'src/embedded_data.h', 'src/embedded_data.cc', + 'src/builtin_info.h', + 'src/builtin_info.cc', ], 'conditions': [ [ 'node_shared_simdutf=="false"', { diff --git a/src/api/environment.cc b/src/api/environment.cc index 5f51ad205189bd..befaa423abbe86 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -1056,7 +1056,7 @@ Maybe InitializePrimordials(Local context, exports, primordials, private_symbols, per_isolate_symbols}; if (builtin_loader - .CompileAndCall( + .CompileAndCallWith( context, *module, arraysize(arguments), arguments, nullptr) .IsEmpty()) { // Execution failed during context creation. diff --git a/src/builtin_info.cc b/src/builtin_info.cc new file mode 100644 index 00000000000000..d5309265ac3733 --- /dev/null +++ b/src/builtin_info.cc @@ -0,0 +1,48 @@ +#include "builtin_info.h" + +namespace node { +namespace builtins { + +BuiltinSourceType GetBuiltinSourceType(const std::string& id, + const std::string& filename) { + if (filename.ends_with(".mjs")) { + return BuiltinSourceType::kSourceTextModule; + } + if (id.starts_with("internal/bootstrap/realm")) { + return BuiltinSourceType::kBootstrapRealm; + } + if (id.starts_with("internal/bootstrap/")) { + return BuiltinSourceType::kBootstrapScript; + } + if (id.starts_with("internal/per_context/")) { + return BuiltinSourceType::kPerContextScript; + } + if (id.starts_with("internal/main/")) { + return BuiltinSourceType::kMainScript; + } + if (id.starts_with("internal/deps/v8/tools/")) { + return BuiltinSourceType::kSourceTextModule; + } + return BuiltinSourceType::kFunction; +} + +std::string GetBuiltinSourceTypeName(BuiltinSourceType type) { + switch (type) { + case BuiltinSourceType::kBootstrapRealm: + return "kBootstrapRealm"; + case BuiltinSourceType::kBootstrapScript: + return "kBootstrapScript"; + case BuiltinSourceType::kPerContextScript: + return "kPerContextScript"; + case BuiltinSourceType::kMainScript: + return "kMainScript"; + case BuiltinSourceType::kFunction: + return "kFunction"; + case BuiltinSourceType::kSourceTextModule: + return "kSourceTextModule"; + } + abort(); +} + +} // namespace builtins +} // namespace node diff --git a/src/builtin_info.h b/src/builtin_info.h new file mode 100644 index 00000000000000..0aec3cecfe2bc5 --- /dev/null +++ b/src/builtin_info.h @@ -0,0 +1,57 @@ +#ifndef SRC_BUILTIN_INFO_H_ +#define SRC_BUILTIN_INFO_H_ + +#include +#include +#include +#include + +// This file must not depend on node.h or other code that depends on +// the full Node.js implementation because it is used during the +// compilation of the Node.js implementation itself (especially js2c). + +namespace node { +namespace builtins { + +enum class BuiltinSourceType { + kBootstrapRealm, // internal/bootstrap/realm + kBootstrapScript, // internal/bootstrap/* + kPerContextScript, // internal/per_context/* + kMainScript, // internal/main/* + kFunction, // others + kSourceTextModule, // selected modules, ends with .mjs in source +}; + +struct BuiltinInfo { + // C++17 inline static + inline static const std::unordered_map> + parameter_map{ + {BuiltinSourceType::kBootstrapRealm, + {"process", + "getLinkedBinding", + "getInternalBinding", + "primordials"}}, + {BuiltinSourceType::kBootstrapScript, + {"process", "require", "internalBinding", "primordials"}}, + {BuiltinSourceType::kPerContextScript, + {"exports", "primordials", "privateSymbols", "perIsolateSymbols"}}, + {BuiltinSourceType::kMainScript, + {"process", "require", "internalBinding", "primordials"}}, + {BuiltinSourceType::kFunction, + {"exports", + "require", + "module", + "process", + "internalBinding", + "primordials"}}, + }; +}; + +std::string GetBuiltinSourceTypeName(BuiltinSourceType type); +BuiltinSourceType GetBuiltinSourceType(const std::string& id, + const std::string& filename); +} // namespace builtins +} // namespace node + +#endif // SRC_BUILTIN_INFO_H_ diff --git a/src/env_properties.h b/src/env_properties.h index 454750db0113d2..b3343981c2c325 100644 --- a/src/env_properties.h +++ b/src/env_properties.h @@ -57,6 +57,7 @@ V(onpskexchange_symbol, "onpskexchange") \ V(resource_symbol, "resource_symbol") \ V(trigger_async_id_symbol, "trigger_async_id_symbol") \ + V(builtin_source_text_module_hdo, "builtin_source_text_module_hdo") \ V(source_text_module_default_hdo, "source_text_module_default_hdo") \ V(vm_context_no_contextify, "vm_context_no_contextify") \ V(vm_dynamic_import_default_internal, "vm_dynamic_import_default_internal") \ diff --git a/src/node_builtins.cc b/src/node_builtins.cc index f25ca01d6ef016..2337b731ae72f6 100644 --- a/src/node_builtins.cc +++ b/src/node_builtins.cc @@ -1,6 +1,8 @@ #include "node_builtins.h" #include "debug_utils-inl.h" #include "env-inl.h" +#include "module_wrap.h" +#include "node_errors.h" #include "node_external_reference.h" #include "node_internals.h" #include "node_threadsafe_cow-inl.h" @@ -10,10 +12,12 @@ namespace node { namespace builtins { +using loader::HostDefinedOptions; using v8::Boolean; using v8::Context; +using v8::Data; using v8::EscapableHandleScope; -using v8::Exception; +using v8::FixedArray; using v8::Function; using v8::FunctionCallbackInfo; using v8::IntegrityLevel; @@ -21,11 +25,13 @@ using v8::Isolate; using v8::Local; using v8::LocalVector; using v8::MaybeLocal; +using v8::Module; +using v8::ModuleRequest; using v8::Name; -using v8::NewStringType; using v8::None; using v8::Object; using v8::ObjectTemplate; +using v8::PrimitiveArray; using v8::PropertyCallbackInfo; using v8::ScriptCompiler; using v8::ScriptOrigin; @@ -62,9 +68,12 @@ bool BuiltinLoader::Exists(const char* id) { return source->find(id) != source->end(); } -bool BuiltinLoader::Add(const char* id, const UnionBytes& source) { - auto result = source_.write()->emplace(id, source); - return result.second; +const BuiltinSource* BuiltinLoader::AddFromDisk(const char* id, + const std::string& filename, + const UnionBytes& source) { + BuiltinSourceType type = GetBuiltinSourceType(id, filename); + auto result = source_.write()->emplace(id, BuiltinSource{id, source, type}); + return &(result.first->second); } void BuiltinLoader::GetNatives(Local property, @@ -77,7 +86,8 @@ void BuiltinLoader::GetNatives(Local property, auto source = env->builtin_loader()->source_.read(); for (auto const& x : *source) { Local key = OneByteString(isolate, x.first); - if (out->Set(context, key, x.second.ToStringChecked(isolate)).IsNothing()) { + if (out->Set(context, key, x.second.source.ToStringChecked(isolate)) + .IsNothing()) { return; } } @@ -134,7 +144,6 @@ BuiltinLoader::BuiltinCategories BuiltinLoader::GetBuiltinCategories() const { "internal/webstorage", // Experimental. #endif "internal/test/binding", "internal/v8_prof_polyfill", - "internal/v8_prof_processor", }; auto source = source_.read(); @@ -172,38 +181,30 @@ static std::string OnDiskFileName(const char* id) { filename += "lib/"; } filename += id; - filename += ".js"; + if (strncmp(id, "deps/v8/tools", strlen("deps/v8/tools")) == 0) { + // V8 tools scripts are .mjs files. + filename += ".mjs"; + } else { + filename += ".js"; + } return filename; } #endif // NODE_BUILTIN_MODULES_PATH -MaybeLocal BuiltinLoader::LoadBuiltinSource(Isolate* isolate, - const char* id) const { - auto source = source_.read(); +const BuiltinSource* BuiltinLoader::LoadBuiltinSource(Isolate* isolate, + const char* id) { #ifndef NODE_BUILTIN_MODULES_PATH + auto source = source_.read(); const auto source_it = source->find(id); if (source_it == source->end()) [[unlikely]] { fprintf(stderr, "Cannot find native builtin: \"%s\".\n", id); ABORT(); } - return source_it->second.ToStringChecked(isolate); + return &(source_it->second); #else // !NODE_BUILTIN_MODULES_PATH std::string filename = OnDiskFileName(id); - - std::string contents; - int r = ReadFileSync(&contents, filename.c_str()); - if (r != 0) { - const std::string buf = SPrintF("Cannot read local builtin. %s: %s \"%s\"", - uv_err_name(r), - uv_strerror(r), - filename); - Local message = OneByteString(isolate, buf); - isolate->ThrowException(Exception::Error(message)); - return MaybeLocal(); - } - return String::NewFromUtf8( - isolate, contents.c_str(), NewStringType::kNormal, contents.length()); + return AddExternalizedBuiltin(id, filename.c_str()); #endif // NODE_BUILTIN_MODULES_PATH } @@ -213,8 +214,8 @@ std::unordered_map> externalized_builtin_sources; } // namespace -void BuiltinLoader::AddExternalizedBuiltin(const char* id, - const char* filename) { +const BuiltinSource* BuiltinLoader::AddExternalizedBuiltin( + const char* id, const char* filename) { StaticExternalTwoByteResource* resource; { Mutex::ScopedLock lock(externalized_builtins_mutex); @@ -251,26 +252,28 @@ void BuiltinLoader::AddExternalizedBuiltin(const char* id, resource = it->second.get(); } - Add(id, UnionBytes(resource)); + return AddFromDisk(id, filename, UnionBytes(resource)); } -MaybeLocal BuiltinLoader::LookupAndCompileInternal( +MaybeLocal BuiltinLoader::LookupAndCompile(Local context, + const char* id, + Realm* optional_realm) { + Isolate* isolate = Isolate::GetCurrent(); + const BuiltinSource* builtin_source = LoadBuiltinSource(isolate, id); + if (builtin_source == nullptr) { + THROW_ERR_MODULE_NOT_FOUND(isolate, "Cannot find module %s", id); + return MaybeLocal(); + } + return LookupAndCompile(context, builtin_source, optional_realm); +} + +MaybeLocal BuiltinLoader::LookupAndCompile( Local context, - const char* id, - LocalVector* parameters, + const BuiltinSource* builtin_source, Realm* optional_realm) { Isolate* isolate = context->GetIsolate(); EscapableHandleScope scope(isolate); - Local source; - if (!LoadBuiltinSource(isolate, id).ToLocal(&source)) { - return {}; - } - - std::string filename_s = std::string("node:") + id; - Local filename = OneByteString(isolate, filename_s); - ScriptOrigin origin(filename, 0, 0, true); - BuiltinCodeCacheData cached_data{}; { // Note: The lock here should not extend into the @@ -278,7 +281,7 @@ MaybeLocal BuiltinLoader::LookupAndCompileInternal( // there is a syntax error during bootstrap (because the fatal exception // handler is invoked, which may load built-in modules). RwLock::ScopedLock lock(code_cache_->mutex); - auto cache_it = code_cache_->map.find(id); + auto cache_it = code_cache_->map.find(builtin_source->id); if (cache_it != code_cache_->map.end()) { // Transfer ownership to ScriptCompiler::Source later. cached_data = cache_it->second; @@ -292,64 +295,113 @@ MaybeLocal BuiltinLoader::LookupAndCompileInternal( if (should_eager_compile_) { options = ScriptCompiler::kEagerCompile; } else if (!to_eager_compile_.empty()) { - if (to_eager_compile_.contains(id)) { + if (to_eager_compile_.contains(builtin_source->id)) { options = ScriptCompiler::kEagerCompile; } } - ScriptCompiler::Source script_source( - source, - origin, - has_cache ? cached_data.AsCachedData().release() : nullptr); per_process::Debug( DebugCategory::CODE_CACHE, "Compiling %s %s code cache %s\n", - id, + builtin_source->id, has_cache ? "with" : "without", options == ScriptCompiler::kEagerCompile ? "eagerly" : "lazily"); - MaybeLocal maybe_fun = - ScriptCompiler::CompileFunction(context, - &script_source, - parameters->size(), - parameters->data(), - 0, - nullptr, - options); - - // This could fail when there are early errors in the built-in modules, - // e.g. the syntax errors - Local fun; - if (!maybe_fun.ToLocal(&fun)) { - // In the case of early errors, v8 is already capable of - // decorating the stack for us - note that we use CompileFunction - // so there is no need to worry about wrappers. - return MaybeLocal(); + // The ownership of cached_data_ptr will be transferred to + // ScriptCompiler::Source. + ScriptCompiler::CachedData* cached_data_ptr = + has_cache ? cached_data.AsCachedData().release() : nullptr; + std::string filename_s = std::string("node:") + builtin_source->id; + Local filename = OneByteString(isolate, filename_s); + Local source = builtin_source->source.ToStringChecked(isolate); + + Local compiled_result; + // This needs to be retrieved after compilation, as the ownership of + // cached data will be transferred to script source. + bool is_cache_accepted = false; + bool is_buffer_owned = cached_data_ptr + ? (cached_data_ptr->buffer_policy == + ScriptCompiler::CachedData::BufferOwned) + : false; + if (builtin_source->type == BuiltinSourceType::kSourceTextModule) { + Local host_defined_options; + if (optional_realm != nullptr) { + host_defined_options = + PrimitiveArray::New(isolate, HostDefinedOptions::kLength); + host_defined_options->Set( + isolate, + HostDefinedOptions::kID, + optional_realm->isolate_data()->builtin_source_text_module_hdo()); + } + ScriptOrigin origin(filename, + 0, + 0, + true, // is cross origin + -1, // script id + Local(), // source map URL + false, // is opaque + false, // is WASM + true, // is ES Module + host_defined_options); + ScriptCompiler::Source script_source(source, origin, cached_data_ptr); + MaybeLocal maybe_mod = + ScriptCompiler::CompileModule(isolate, &script_source, options); + if (maybe_mod.IsEmpty()) { + // In the case of early errors, v8 is already capable of + // decorating the stack for us. + return MaybeLocal(); + } + compiled_result = maybe_mod.ToLocalChecked(); + is_cache_accepted = has_cache && !script_source.GetCachedData()->rejected; + } else { + ScriptOrigin origin(filename, 0, 0, true); + ScriptCompiler::Source script_source(source, origin, cached_data_ptr); + LocalVector parameters(isolate); + auto params_it = BuiltinInfo::parameter_map.find(builtin_source->type); + CHECK_NE(params_it, BuiltinInfo::parameter_map.end()); + parameters.reserve(params_it->second.size()); + for (const std::string& param : params_it->second) { + parameters.push_back(OneByteString(isolate, param)); + } + MaybeLocal maybe_fun = + ScriptCompiler::CompileFunction(context, + &script_source, + parameters.size(), + parameters.data(), + 0, + nullptr, + options); + // This could fail when there are early errors in the built-in modules, + // e.g. the syntax errors + Local fun; + if (!maybe_fun.ToLocal(&fun)) { + // In the case of early errors, v8 is already capable of + // decorating the stack for us - note that we use CompileFunction + // so there is no need to worry about wrappers. + return MaybeLocal(); + } + + compiled_result = fun; + is_cache_accepted = has_cache && !script_source.GetCachedData()->rejected; } // XXX(joyeecheung): this bookkeeping is not exactly accurate because // it only starts after the Environment is created, so the per_context.js // will never be in any of these two sets, but the two sets are only for // testing anyway. - - Result result = (has_cache && !script_source.GetCachedData()->rejected) - ? Result::kWithCache - : Result::kWithoutCache; + Result result = + is_cache_accepted ? Result::kWithCache : Result::kWithoutCache; if (optional_realm != nullptr) { DCHECK_EQ(this, optional_realm->env()->builtin_loader()); - RecordResult(id, result, optional_realm); + RecordResult(builtin_source->id, result, optional_realm); } if (has_cache) { per_process::Debug(DebugCategory::CODE_CACHE, "Code cache of %s (%s) %s\n", - id, - script_source.GetCachedData()->buffer_policy == - ScriptCompiler::CachedData::BufferNotOwned - ? "BufferNotOwned" - : "BufferOwned", - script_source.GetCachedData()->rejected ? "is rejected" - : "is accepted"); + builtin_source->id, + is_buffer_owned ? "BufferOwned" : "BufferNotOwned", + is_cache_accepted ? "is accepted" : "is rejected"); } if (result == Result::kWithoutCache && optional_realm != nullptr && @@ -360,15 +412,22 @@ MaybeLocal BuiltinLoader::LookupAndCompileInternal( // This is only done when the isolate is not being serialized because // V8 does not support serializing code cache with an unfinalized read-only // space (which is what isolates pending to be serialized have). - SaveCodeCache(id, fun); + SaveCodeCache(builtin_source->id, compiled_result); } - return scope.Escape(fun); + return scope.Escape(compiled_result); } -void BuiltinLoader::SaveCodeCache(const char* id, Local fun) { - std::shared_ptr new_cached_data( - ScriptCompiler::CreateCodeCacheForFunction(fun)); +void BuiltinLoader::SaveCodeCache(const std::string& id, Local data) { + std::shared_ptr new_cached_data; + if (data->IsModule()) { + Local mod = data.As(); + new_cached_data.reset( + ScriptCompiler::CreateCodeCache(mod->GetUnboundModuleScript())); + } else { + Local fun = data.As(); + new_cached_data.reset(ScriptCompiler::CreateCodeCacheForFunction(fun)); + } CHECK_NOT_NULL(new_cached_data); { @@ -378,115 +437,93 @@ void BuiltinLoader::SaveCodeCache(const char* id, Local fun) { } } -MaybeLocal BuiltinLoader::LookupAndCompile(Local context, - const char* id, - Realm* optional_realm) { +MaybeLocal BuiltinLoader::LookupAndCompileFunction( + Local context, const char* id, Realm* optional_realm) { Isolate* isolate = context->GetIsolate(); LocalVector parameters(isolate); - // Detects parameters of the scripts based on module ids. - // internal/bootstrap/realm: process, getLinkedBinding, - // getInternalBinding, primordials - if (strcmp(id, "internal/bootstrap/realm") == 0) { - parameters = { - FIXED_ONE_BYTE_STRING(isolate, "process"), - FIXED_ONE_BYTE_STRING(isolate, "getLinkedBinding"), - FIXED_ONE_BYTE_STRING(isolate, "getInternalBinding"), - FIXED_ONE_BYTE_STRING(isolate, "primordials"), - }; - } else if (strncmp(id, - "internal/per_context/", - strlen("internal/per_context/")) == 0) { - // internal/per_context/*: global, exports, primordials - parameters = { - FIXED_ONE_BYTE_STRING(isolate, "exports"), - FIXED_ONE_BYTE_STRING(isolate, "primordials"), - FIXED_ONE_BYTE_STRING(isolate, "privateSymbols"), - FIXED_ONE_BYTE_STRING(isolate, "perIsolateSymbols"), - }; - } else if (strncmp(id, "internal/main/", strlen("internal/main/")) == 0 || - strncmp(id, - "internal/bootstrap/", - strlen("internal/bootstrap/")) == 0) { - // internal/main/*, internal/bootstrap/*: process, require, - // internalBinding, primordials - parameters = { - FIXED_ONE_BYTE_STRING(isolate, "process"), - FIXED_ONE_BYTE_STRING(isolate, "require"), - FIXED_ONE_BYTE_STRING(isolate, "internalBinding"), - FIXED_ONE_BYTE_STRING(isolate, "primordials"), - }; - } else { - // others: exports, require, module, process, internalBinding, primordials - parameters = { - FIXED_ONE_BYTE_STRING(isolate, "exports"), - FIXED_ONE_BYTE_STRING(isolate, "require"), - FIXED_ONE_BYTE_STRING(isolate, "module"), - FIXED_ONE_BYTE_STRING(isolate, "process"), - FIXED_ONE_BYTE_STRING(isolate, "internalBinding"), - FIXED_ONE_BYTE_STRING(isolate, "primordials"), - }; + + Local data; + if (!LookupAndCompile(context, id, optional_realm).ToLocal(&data)) { + return MaybeLocal(); } - MaybeLocal maybe = - LookupAndCompileInternal(context, id, ¶meters, optional_realm); - return maybe; + CHECK(data->IsValue()); + Local value = data.As(); + CHECK(value->IsFunction()); + return value.As(); } MaybeLocal BuiltinLoader::CompileAndCall(Local context, const char* id, Realm* realm) { Isolate* isolate = context->GetIsolate(); - // Detects parameters of the scripts based on module ids. - // internal/bootstrap/realm: process, getLinkedBinding, - // getInternalBinding, primordials - if (strcmp(id, "internal/bootstrap/realm") == 0) { - Local get_linked_binding; - Local get_internal_binding; - if (!NewFunctionTemplate(isolate, binding::GetLinkedBinding) - ->GetFunction(context) - .ToLocal(&get_linked_binding) || - !NewFunctionTemplate(isolate, binding::GetInternalBinding) - ->GetFunction(context) - .ToLocal(&get_internal_binding)) { + const BuiltinSource* builtin_source = LoadBuiltinSource(isolate, id); + if (builtin_source == nullptr) { + THROW_ERR_MODULE_NOT_FOUND(isolate, "Cannot find module %s", id); + return MaybeLocal(); + } + + if (builtin_source->type == BuiltinSourceType::kSourceTextModule) { + Local value; + if (!ImportBuiltinSourceTextModule(realm, id).ToLocal(&value)) { return MaybeLocal(); } - Local arguments[] = {realm->process_object(), - get_linked_binding, - get_internal_binding, - realm->primordials()}; - return CompileAndCall( - context, id, arraysize(arguments), &arguments[0], realm); - } else if (strncmp(id, "internal/main/", strlen("internal/main/")) == 0 || - strncmp(id, - "internal/bootstrap/", - strlen("internal/bootstrap/")) == 0) { - // internal/main/*, internal/bootstrap/*: process, require, - // internalBinding, primordials - Local arguments[] = {realm->process_object(), - realm->builtin_module_require(), - realm->internal_binding_loader(), - realm->primordials()}; - return CompileAndCall( - context, id, arraysize(arguments), &arguments[0], realm); - } - - // This should be invoked with the other CompileAndCall() methods, as - // we are unable to generate the arguments. - // Currently there are two cases: - // internal/per_context/*: the arguments are generated in - // InitializePrimordials() - // all the other cases: the arguments are generated in the JS-land loader. - UNREACHABLE(); + return value; + } + + Local data; + if (!LookupAndCompile(context, builtin_source, realm).ToLocal(&data)) { + return MaybeLocal(); + } + CHECK(data->IsValue()); + Local value = data.As(); + CHECK(value->IsFunction()); + Local fn = value.As(); + Local receiver = Undefined(Isolate::GetCurrent()); + + switch (builtin_source->type) { + case BuiltinSourceType::kBootstrapRealm: { + Local get_linked_binding; + Local get_internal_binding; + if (!NewFunctionTemplate(isolate, binding::GetLinkedBinding) + ->GetFunction(context) + .ToLocal(&get_linked_binding) || + !NewFunctionTemplate(isolate, binding::GetInternalBinding) + ->GetFunction(context) + .ToLocal(&get_internal_binding)) { + return MaybeLocal(); + } + Local arguments[] = {realm->process_object(), + get_linked_binding, + get_internal_binding, + realm->primordials()}; + return fn->Call(context, receiver, 4, arguments); + } + case BuiltinSourceType::kMainScript: + case BuiltinSourceType::kBootstrapScript: { + Local arguments[] = {realm->process_object(), + realm->builtin_module_require(), + realm->internal_binding_loader(), + realm->primordials()}; + return fn->Call(context, receiver, 4, arguments); + } + case BuiltinSourceType::kFunction: // Handled in JS land. + case BuiltinSourceType::kPerContextScript: // Handled by + // InitializePrimordials + default: + UNREACHABLE(); + } } -MaybeLocal BuiltinLoader::CompileAndCall(Local context, - const char* id, - int argc, - Local argv[], - Realm* optional_realm) { +MaybeLocal BuiltinLoader::CompileAndCallWith(Local context, + const char* id, + int argc, + Local argv[], + Realm* optional_realm) { // Arguments must match the parameters specified in // BuiltinLoader::LookupAndCompile(). - MaybeLocal maybe_fn = LookupAndCompile(context, id, optional_realm); + MaybeLocal maybe_fn = + LookupAndCompileFunction(context, id, optional_realm); Local fn; if (!maybe_fn.ToLocal(&fn)) { return MaybeLocal(); @@ -495,21 +532,12 @@ MaybeLocal BuiltinLoader::CompileAndCall(Local context, return fn->Call(context, undefined, argc, argv); } -MaybeLocal BuiltinLoader::LookupAndCompile( - Local context, - const char* id, - LocalVector* parameters, - Realm* optional_realm) { - return LookupAndCompileInternal(context, id, parameters, optional_realm); -} - bool BuiltinLoader::CompileAllBuiltinsAndCopyCodeCache( Local context, const std::vector& eager_builtins, std::vector* out) { auto ids = GetBuiltinIds(); bool all_succeeded = true; - constexpr std::string_view v8_tools_prefix = "internal/deps/v8/tools/"; constexpr std::string_view primordial_prefix = "internal/per_context/"; constexpr std::string_view bootstrap_prefix = "internal/bootstrap/"; constexpr std::string_view main_prefix = "internal/main/"; @@ -517,11 +545,6 @@ bool BuiltinLoader::CompileAllBuiltinsAndCopyCodeCache( std::unordered_set(eager_builtins.begin(), eager_builtins.end()); for (const auto& id : ids) { - if (id.starts_with(v8_tools_prefix)) { - // No need to generate code cache for v8 scripts. - continue; - } - // Eagerly compile primordials/boostrap/main scripts during code cache // generation. if (id.starts_with(primordial_prefix) || id.starts_with(bootstrap_prefix) || @@ -530,7 +553,7 @@ bool BuiltinLoader::CompileAllBuiltinsAndCopyCodeCache( } TryCatch bootstrapCatch(context->GetIsolate()); - auto fn = LookupAndCompile(context, id.data(), nullptr); + auto data = LookupAndCompile(context, id.data(), nullptr); if (bootstrapCatch.HasCaught()) { per_process::Debug(DebugCategory::CODE_CACHE, "Failed to compile code cache for %s\n", @@ -540,7 +563,7 @@ bool BuiltinLoader::CompileAllBuiltinsAndCopyCodeCache( } else { // This is used by the snapshot builder, so save the code cache // unconditionally. - SaveCodeCache(id.data(), fn.ToLocalChecked()); + SaveCodeCache(id, data.ToLocalChecked()); } } @@ -655,7 +678,7 @@ void BuiltinLoader::ConfigStringGetter( env->builtin_loader()->GetConfigString(info.GetIsolate())); } -void BuiltinLoader::RecordResult(const char* id, +void BuiltinLoader::RecordResult(const std::string& id, BuiltinLoader::Result result, Realm* realm) { if (result == BuiltinLoader::Result::kWithCache) { @@ -670,14 +693,124 @@ void BuiltinLoader::CompileFunction(const FunctionCallbackInfo& args) { CHECK(args[0]->IsString()); node::Utf8Value id_v(realm->isolate(), args[0].As()); const char* id = *id_v; - MaybeLocal maybe = realm->env()->builtin_loader()->LookupAndCompile( - realm->context(), id, realm); Local fn; - if (maybe.ToLocal(&fn)) { + if (realm->env() + ->builtin_loader() + ->LookupAndCompileFunction(realm->context(), id, realm) + .ToLocal(&fn)) { args.GetReturnValue().Set(fn); } } +std::string ResolveRequestForBuiltin(const std::string& specifier) { + // Currently this is only ever hit by V8 tools. Importing any other specifiers + // from a builtin would result in a module not found error later. + if (specifier[0] == '.' && specifier[1] == '/') { + // Currently the V8 tool sources are all flat. + // ./file.mjs -> internal/deps/v8/tools/file + DCHECK(specifier.ends_with(".mjs")); + return std::string("internal/deps/v8/tools/") + + specifier.substr(2, specifier.length() - 6); + } + return specifier; +} + +MaybeLocal BuiltinLoader::LoadBuiltinSourceTextModule(Realm* realm, + const char* id) { + Isolate* isolate = realm->isolate(); + if (module_cache_.find(id) != module_cache_.end()) { + return module_cache_[id].Get(isolate); + } + + Local context = realm->context(); + Local data; + + if (!LookupAndCompile(context, id, realm).ToLocal(&data)) { + return MaybeLocal(); + } + + CHECK(data->IsModule()); + Local mod = data.As(); + + auto pair = module_cache_.emplace(id, v8::Global(isolate, mod)); + CHECK(pair.second); + Local requests = mod->GetModuleRequests(); + + // Pre-fetch all dependencies. + if (requests->Length() > 0) { + for (int i = 0; i < requests->Length(); i++) { + Local req = requests->Get(context, i).As(); + std::string specifier = + Utf8Value(isolate, req->GetSpecifier()).ToString(); + std::string resolved_id = ResolveRequestForBuiltin(specifier); + if (LoadBuiltinSourceTextModule(realm, resolved_id.c_str()).IsEmpty()) { + return MaybeLocal(); + } + } + } + + return mod; +} + +MaybeLocal BuiltinLoader::ImportBuiltinSourceTextModule(Realm* realm, + const char* id) { + Isolate* isolate = realm->isolate(); + EscapableHandleScope scope(isolate); + Local mod; + if (!LoadBuiltinSourceTextModule(realm, id).ToLocal(&mod)) { + return MaybeLocal(); + } + Local context = realm->context(); + if (!mod->InstantiateModule(context, ResolveModuleCallback).FromMaybe(true)) { + return MaybeLocal(); + } + Local promise; + if (!mod->Evaluate(context).ToLocal(&promise)) { + return MaybeLocal(); + } + + LocalVector names{isolate, + { + OneByteString(isolate, "promise"), + OneByteString(isolate, "namespace"), + }}; + LocalVector values{isolate, + { + promise, + mod->GetModuleNamespace(), + }}; + auto result = Object::New( + isolate, v8::Null(isolate), names.data(), values.data(), names.size()); + return scope.Escape(result); +} + +MaybeLocal BuiltinLoader::ResolveModuleCallback( + Local context, + Local specifier, + Local import_attributes, + Local referrer) { + Realm* realm = Realm::GetCurrent(context); + + Utf8Value specifier_v(realm->isolate(), specifier); + std::string resolved = ResolveRequestForBuiltin(specifier_v.ToString()); + return realm->env()->builtin_loader()->LoadBuiltinSourceTextModule( + realm, resolved.c_str()); +} + +void BuiltinLoader::ImportBuiltinSourceTextModule( + const FunctionCallbackInfo& args) { + Realm* realm = Realm::GetCurrent(args); + CHECK(args[0]->IsString()); + node::Utf8Value id(realm->isolate(), args[0].As()); + Local value; + if (realm->env() + ->builtin_loader() + ->ImportBuiltinSourceTextModule(realm, *id) + .ToLocal(&value)) { + args.GetReturnValue().Set(value); + } +} + void BuiltinLoader::HasCachedBuiltins(const FunctionCallbackInfo& args) { auto instance = Environment::GetCurrent(args)->builtin_loader(); RwLock::ScopedReadLock lock(instance->code_cache_->mutex); @@ -738,6 +871,10 @@ void BuiltinLoader::CreatePerIsolateProperties(IsolateData* isolate_data, SetMethod(isolate, target, "compileFunction", BuiltinLoader::CompileFunction); SetMethod(isolate, target, "hasCachedBuiltins", HasCachedBuiltins); SetMethod(isolate, target, "setInternalLoaders", SetInternalLoaders); + SetMethod(isolate, + target, + "importBuiltinSourceTextModule", + ImportBuiltinSourceTextModule); } void BuiltinLoader::CreatePerContextProperties(Local target, @@ -758,6 +895,7 @@ void BuiltinLoader::RegisterExternalReferences( registry->Register(HasCachedBuiltins); registry->Register(SetInternalLoaders); registry->Register(GetNatives); + registry->Register(ImportBuiltinSourceTextModule); RegisterExternalReferencesForInternalizedBuiltinCode(registry); } diff --git a/src/node_builtins.h b/src/node_builtins.h index 7a7b84337feb67..e4af1f42f4442b 100644 --- a/src/node_builtins.h +++ b/src/node_builtins.h @@ -11,6 +11,7 @@ #include #include #include +#include "builtin_info.h" #include "node_external_reference.h" #include "node_mutex.h" #include "node_threadsafe_cow.h" @@ -68,7 +69,13 @@ struct CodeCacheInfo { BuiltinCodeCacheData data; }; -using BuiltinSourceMap = std::map; +struct BuiltinSource { + std::string id; + UnionBytes source; + BuiltinSourceType type; +}; + +using BuiltinSourceMap = std::map; using BuiltinCodeCacheMap = std::unordered_map; @@ -94,21 +101,14 @@ class NODE_EXTERN_PRIVATE BuiltinLoader { // The parameters used to compile the scripts are detected based on // the pattern of the id. - v8::MaybeLocal LookupAndCompile(v8::Local context, - const char* id, - Realm* optional_realm); + v8::MaybeLocal LookupAndCompileFunction( + v8::Local context, const char* id, Realm* optional_realm); - v8::MaybeLocal LookupAndCompile( - v8::Local context, - const char* id, - v8::LocalVector* parameters, - Realm* optional_realm); - - v8::MaybeLocal CompileAndCall(v8::Local context, - const char* id, - int argc, - v8::Local argv[], - Realm* optional_realm); + v8::MaybeLocal CompileAndCallWith(v8::Local context, + const char* id, + int argc, + v8::Local argv[], + Realm* optional_realm); v8::MaybeLocal CompileAndCall(v8::Local context, const char* id, @@ -117,7 +117,9 @@ class NODE_EXTERN_PRIVATE BuiltinLoader { // Returns config.gypi as a JSON string v8::Local GetConfigString(v8::Isolate* isolate); bool Exists(const char* id); - bool Add(const char* id, const UnionBytes& source); + const BuiltinSource* AddFromDisk(const char* id, + const std::string& filename, + const UnionBytes& source); bool CompileAllBuiltinsAndCopyCodeCache( v8::Local context, @@ -152,18 +154,18 @@ class NODE_EXTERN_PRIVATE BuiltinLoader { const v8::ScriptCompiler::CachedData* GetCodeCache(const char* id) const; enum class Result { kWithCache, kWithoutCache }; - v8::MaybeLocal LoadBuiltinSource(v8::Isolate* isolate, - const char* id) const; + const BuiltinSource* LoadBuiltinSource(v8::Isolate* isolate, const char* id); // If an exception is encountered (e.g. source code contains // syntax error), the returned value is empty. - v8::MaybeLocal LookupAndCompileInternal( - v8::Local context, - const char* id, - v8::LocalVector* parameters, - Realm* optional_realm); - void SaveCodeCache(const char* id, v8::Local fn); - - static void RecordResult(const char* id, + v8::MaybeLocal LookupAndCompile(v8::Local context, + const char* id, + Realm* optional_realm); + v8::MaybeLocal LookupAndCompile(v8::Local context, + const BuiltinSource* builtin_source, + Realm* optional_realm); + void SaveCodeCache(const std::string& id, v8::Local data); + + static void RecordResult(const std::string& id, BuiltinLoader::Result result, Realm* realm); static void GetBuiltinCategories( @@ -180,13 +182,26 @@ class NODE_EXTERN_PRIVATE BuiltinLoader { const v8::PropertyCallbackInfo& info); // Compile a specific built-in as a function static void CompileFunction(const v8::FunctionCallbackInfo& args); + v8::MaybeLocal LoadBuiltinSourceTextModule(Realm* realm, + const char* id); + v8::MaybeLocal ImportBuiltinSourceTextModule(Realm* realm, + const char* id); + static void ImportBuiltinSourceTextModule( + const v8::FunctionCallbackInfo& args); + + static v8::MaybeLocal ResolveModuleCallback( + v8::Local context, + v8::Local specifier, + v8::Local import_attributes, + v8::Local referrer); static void HasCachedBuiltins( const v8::FunctionCallbackInfo& args); // For legacy process.binding('natives') static void GetNatives(v8::Local property, const v8::PropertyCallbackInfo& info); - void AddExternalizedBuiltin(const char* id, const char* filename); + const BuiltinSource* AddExternalizedBuiltin(const char* id, + const char* filename); ThreadsafeCopyOnWrite source_; @@ -211,6 +226,7 @@ class NODE_EXTERN_PRIVATE BuiltinLoader { }; std::shared_ptr code_cache_; + std::unordered_map> module_cache_; friend class ::PerProcessTest; }; diff --git a/test/README.md b/test/README.md index a79c97e941d542..02359ca6826501 100644 --- a/test/README.md +++ b/test/README.md @@ -46,7 +46,7 @@ For the tests to run on Windows, be sure to clone Node.js source code with the [^3]: All tests inside of this directory are expected to fail. If a test doesn't fail on certain platforms, those should be skipped via `known_issues.status`. -[^4]: The tests are for the logic in `lib/internal/v8_prof_processor.js` and `lib/internal/v8_prof_polyfill.js`. +[^4]: The tests are for the logic in `lib/internal/main/prof_process.js` and `lib/internal/v8_prof_polyfill.js`. The tests confirm that the profile processor packages the correct set of scripts from V8 and introduces the correct platform specific logic. diff --git a/test/cctest/test_per_process.cc b/test/cctest/test_per_process.cc index 34cf163add7904..7a6f53d56222c1 100644 --- a/test/cctest/test_per_process.cc +++ b/test/cctest/test_per_process.cc @@ -21,11 +21,11 @@ namespace { TEST_F(PerProcessTest, EmbeddedSources) { const auto& sources = PerProcessTest::get_sources_for_test(); ASSERT_TRUE(std::any_of(sources.cbegin(), sources.cend(), [](auto p) { - return p.second.is_one_byte(); + return p.second.source.is_one_byte(); })) << "BuiltinLoader::source_ should have some 8bit items"; ASSERT_TRUE(std::any_of(sources.cbegin(), sources.cend(), [](auto p) { - return !p.second.is_one_byte(); + return !p.second.source.is_one_byte(); })) << "BuiltinLoader::source_ should have some 16bit items"; } diff --git a/test/parallel/test-tick-processor-arguments.js b/test/parallel/test-tick-processor-arguments.js index 1448ea46dbaeb4..406b13b676d79c 100644 --- a/test/parallel/test-tick-processor-arguments.js +++ b/test/parallel/test-tick-processor-arguments.js @@ -3,7 +3,7 @@ const common = require('../common'); const tmpdir = require('../common/tmpdir'); const fs = require('fs'); const assert = require('assert'); -const { spawnSync } = require('child_process'); +const { spawnSyncAndAssert, spawnSyncAndExitWithoutError } = require('../common/child_process'); if (!common.enoughTestMem) common.skip('skipped due to memory requirements'); @@ -13,7 +13,7 @@ if (common.isAIX) tmpdir.refresh(); // Generate log file. -spawnSync(process.execPath, [ '--prof', '-p', '42' ], { cwd: tmpdir.path }); +spawnSyncAndExitWithoutError(process.execPath, [ '--prof', '-p', '42' ], { cwd: tmpdir.path }); const files = fs.readdirSync(tmpdir.path); const logfile = files.find((name) => /\.log$/.test(name)); @@ -23,10 +23,14 @@ assert(logfile); // as an example flag listed in deps/v8/tools/tickprocessor.js. // Any of the other flags there should work for this test too, if --preprocess // is ever removed. -const { stdout } = spawnSync( +spawnSyncAndAssert( process.execPath, [ '--prof-process', '--preprocess', logfile ], - { cwd: tmpdir.path, encoding: 'utf8', maxBuffer: Infinity }); - -// Make sure that the result is valid JSON. -JSON.parse(stdout); + { cwd: tmpdir.path, encoding: 'utf8', maxBuffer: Infinity }, + { + stdout(output) { + // Make sure that the result is valid JSON. + JSON.parse(output); + } + } +); diff --git a/tools/js2c.cc b/tools/js2c.cc index 9c2f70de4e0083..2cb09f8e1d7ba6 100644 --- a/tools/js2c.cc +++ b/tools/js2c.cc @@ -9,6 +9,7 @@ #include #include #include +#include "builtin_info.h" #include "embedded_data.h" #include "executable_wrapper.h" #include "simdutf.h" @@ -687,15 +688,26 @@ int AddModule(const std::string& filename, std::string var = GetVariableName(file_id); definitions->emplace_back(GetDefinition(var, code)); - + std::string source_type = builtins::GetBuiltinSourceTypeName( + builtins::GetBuiltinSourceType(file_id, filename)); // Initializers of the BuiltinSourceMap: - // {"fs", UnionBytes{&fs_resource}}, - Fragment& init_buf = initializers->emplace_back(Fragment(256, 0)); + // {"fs", + // BuiltinSource{UnionBytes(&fs_resource), BuiltinSourceType::kFunction}}, + // {"internal/deps/v8/tools/tickprocessor-driver", + // BuiltinSource{UnionBytes(&fs_resource), + // BuiltinSourceType::kSourceTextModule}}, + Fragment& init_buf = initializers->emplace_back(Fragment(512, 0)); int init_size = snprintf(init_buf.data(), init_buf.size(), - " {\"%s\", UnionBytes(&%s_resource) },", + " {\"%s\"," + " BuiltinSource{" + " \"%s\"," + " UnionBytes(&%s_resource)," + " BuiltinSourceType::%s} },", + file_id.c_str(), file_id.c_str(), - var.c_str()); + var.c_str(), + source_type.c_str()); init_buf.resize(init_size); // Registrations: diff --git a/unofficial.gni b/unofficial.gni index d9b6663ba9fdf9..aa78f9ce60c043 100644 --- a/unofficial.gni +++ b/unofficial.gni @@ -324,6 +324,8 @@ template("node_gn_build") { "tools/executable_wrapper.h", "src/embedded_data.cc", "src/embedded_data.h", + "src/builtin_info.cc", + "src/builtin_info.h", ] include_dirs = [ "src" ] } From ab18c0867b964162e31af8ac1cf3a02a74ae9bb3 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Thu, 5 Mar 2026 15:49:43 +0100 Subject: [PATCH 009/267] build: fix --node-builtin-modules-path PR-URL: https://github.com/nodejs/node/pull/62115 Reviewed-By: Joyee Cheung Reviewed-By: Yagiz Nizipli --- node.gyp | 18 +++++++++++++++++- src/node_builtins.cc | 3 ++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/node.gyp b/node.gyp index cc014320b28529..5f004904d5f16b 100644 --- a/node.gyp +++ b/node.gyp @@ -922,7 +922,13 @@ }, }], [ 'node_builtin_modules_path!=""', { - 'defines': [ 'NODE_BUILTIN_MODULES_PATH="<(node_builtin_modules_path)"' ] + 'defines': [ 'NODE_BUILTIN_MODULES_PATH="<(node_builtin_modules_path)"' ], + # When loading builtins from disk, JS source files do not need to + # trigger rebuilds since the binary reads them at runtime. + 'sources!': [ + '<@(library_files)', + '<@(deps_files)', + ], }], [ 'node_shared=="true"', { 'sources': [ @@ -1067,6 +1073,16 @@ '<@(deps_files)', 'config.gypi' ], + 'conditions': [ + [ 'node_builtin_modules_path!=""', { + # When loading builtins from disk, JS source files do not need + # to trigger rebuilds since the binary reads them at runtime. + 'inputs!': [ + '<@(library_files)', + '<@(deps_files)', + ], + }], + ], 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/node_javascript.cc', ], diff --git a/src/node_builtins.cc b/src/node_builtins.cc index 2337b731ae72f6..9a5ef0bfa9cf7b 100644 --- a/src/node_builtins.cc +++ b/src/node_builtins.cc @@ -72,7 +72,8 @@ const BuiltinSource* BuiltinLoader::AddFromDisk(const char* id, const std::string& filename, const UnionBytes& source) { BuiltinSourceType type = GetBuiltinSourceType(id, filename); - auto result = source_.write()->emplace(id, BuiltinSource{id, source, type}); + auto result = + source_.write()->insert_or_assign(id, BuiltinSource{id, source, type}); return &(result.first->second); } From 9e2c5fd7c9c2e1ab37acc327a674e79185a77339 Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Thu, 27 Nov 2025 07:22:14 +0000 Subject: [PATCH 010/267] src: simply uint32 to string as it must not fail MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/60846 Refs: https://github.com/nodejs/node/pull/53959 Reviewed-By: Michaël Zasso Reviewed-By: Colin Ihrig --- src/node_contextify.cc | 45 ++++++++++-------------------------------- src/node_webstorage.cc | 45 +++++------------------------------------- src/util.h | 10 ++++++++++ 3 files changed, 25 insertions(+), 75 deletions(-) diff --git a/src/node_contextify.cc b/src/node_contextify.cc index 3c234205e89be7..d3568da72a0f99 100644 --- a/src/node_contextify.cc +++ b/src/node_contextify.cc @@ -85,7 +85,6 @@ using v8::ScriptCompiler; using v8::ScriptOrigin; using v8::String; using v8::Symbol; -using v8::Uint32; using v8::UnboundScript; using v8::Value; @@ -109,15 +108,6 @@ using v8::Value; // For every `set` of a global property, the interceptor callback defines or // changes the property both on the sandbox and the global proxy. -namespace { - -// Convert an int to a V8 Name (String or Symbol). -MaybeLocal Uint32ToName(Local context, uint32_t index) { - return Uint32::New(context->GetIsolate(), index)->ToString(context); -} - -} // anonymous namespace - ContextifyContext* ContextifyContext::New(Environment* env, Local sandbox_obj, ContextOptions* options) { @@ -845,11 +835,8 @@ Intercepted ContextifyContext::IndexedPropertyQueryCallback( return Intercepted::kNo; } - Local name; - if (Uint32ToName(ctx->context(), index).ToLocal(&name)) { - return ContextifyContext::PropertyQueryCallback(name, args); - } - return Intercepted::kNo; + Local name = Uint32ToString(ctx->context(), index); + return ContextifyContext::PropertyQueryCallback(name, args); } // static @@ -862,11 +849,8 @@ Intercepted ContextifyContext::IndexedPropertyGetterCallback( return Intercepted::kNo; } - Local name; - if (Uint32ToName(ctx->context(), index).ToLocal(&name)) { - return ContextifyContext::PropertyGetterCallback(name, args); - } - return Intercepted::kNo; + Local name = Uint32ToString(ctx->context(), index); + return ContextifyContext::PropertyGetterCallback(name, args); } Intercepted ContextifyContext::IndexedPropertySetterCallback( @@ -880,11 +864,8 @@ Intercepted ContextifyContext::IndexedPropertySetterCallback( return Intercepted::kNo; } - Local name; - if (Uint32ToName(ctx->context(), index).ToLocal(&name)) { - return ContextifyContext::PropertySetterCallback(name, value, args); - } - return Intercepted::kNo; + Local name = Uint32ToString(ctx->context(), index); + return ContextifyContext::PropertySetterCallback(name, value, args); } // static @@ -897,11 +878,8 @@ Intercepted ContextifyContext::IndexedPropertyDescriptorCallback( return Intercepted::kNo; } - Local name; - if (Uint32ToName(ctx->context(), index).ToLocal(&name)) { - return ContextifyContext::PropertyDescriptorCallback(name, args); - } - return Intercepted::kNo; + Local name = Uint32ToString(ctx->context(), index); + return ContextifyContext::PropertyDescriptorCallback(name, args); } Intercepted ContextifyContext::IndexedPropertyDefinerCallback( @@ -915,11 +893,8 @@ Intercepted ContextifyContext::IndexedPropertyDefinerCallback( return Intercepted::kNo; } - Local name; - if (Uint32ToName(ctx->context(), index).ToLocal(&name)) { - return ContextifyContext::PropertyDefinerCallback(name, desc, args); - } - return Intercepted::kNo; + Local name = Uint32ToString(ctx->context(), index); + return ContextifyContext::PropertyDefinerCallback(name, desc, args); } // static diff --git a/src/node_webstorage.cc b/src/node_webstorage.cc index 5c7d268d38ff55..013322e8fb6cb7 100644 --- a/src/node_webstorage.cc +++ b/src/node_webstorage.cc @@ -41,7 +41,6 @@ using v8::PropertyCallbackInfo; using v8::PropertyDescriptor; using v8::PropertyHandlerFlags; using v8::String; -using v8::Uint32; using v8::Value; #define THROW_SQLITE_ERROR(env, r) \ @@ -436,10 +435,6 @@ Maybe Storage::Store(Local key, Local value) { return JustVoid(); } -static MaybeLocal Uint32ToName(Local context, uint32_t index) { - return Uint32::New(context->GetIsolate(), index)->ToString(context); -} - static void Clear(const FunctionCallbackInfo& info) { Storage* storage; ASSIGN_OR_RETURN_UNWRAP(&storage, info.This()); @@ -635,13 +630,7 @@ static Intercepted StorageDefiner(Local property, static Intercepted IndexedGetter(uint32_t index, const PropertyCallbackInfo& info) { Environment* env = Environment::GetCurrent(info); - Local name; - if (!Uint32ToName(env->context(), index).ToLocal(&name)) { - // There was an error converting the index to a name. - // We aren't going to return a result but let's indicate - // that we intercepted the operation. - return Intercepted::kYes; - } + Local name = Uint32ToString(env->context(), index); return StorageGetter(name, info); } @@ -649,39 +638,21 @@ static Intercepted IndexedSetter(uint32_t index, Local value, const PropertyCallbackInfo& info) { Environment* env = Environment::GetCurrent(info); - Local name; - if (!Uint32ToName(env->context(), index).ToLocal(&name)) { - // There was an error converting the index to a name. - // We aren't going to return a result but let's indicate - // that we intercepted the operation. - return Intercepted::kYes; - } + Local name = Uint32ToString(env->context(), index); return StorageSetter(name, value, info); } static Intercepted IndexedQuery(uint32_t index, const PropertyCallbackInfo& info) { Environment* env = Environment::GetCurrent(info); - Local name; - if (!Uint32ToName(env->context(), index).ToLocal(&name)) { - // There was an error converting the index to a name. - // We aren't going to return a result but let's indicate - // that we intercepted the operation. - return Intercepted::kYes; - } + Local name = Uint32ToString(env->context(), index); return StorageQuery(name, info); } static Intercepted IndexedDeleter(uint32_t index, const PropertyCallbackInfo& info) { Environment* env = Environment::GetCurrent(info); - Local name; - if (!Uint32ToName(env->context(), index).ToLocal(&name)) { - // There was an error converting the index to a name. - // We aren't going to return a result but let's indicate - // that we intercepted the operation. - return Intercepted::kYes; - } + Local name = Uint32ToString(env->context(), index); return StorageDeleter(name, info); } @@ -689,13 +660,7 @@ static Intercepted IndexedDefiner(uint32_t index, const PropertyDescriptor& desc, const PropertyCallbackInfo& info) { Environment* env = Environment::GetCurrent(info); - Local name; - if (!Uint32ToName(env->context(), index).ToLocal(&name)) { - // There was an error converting the index to a name. - // We aren't going to return a result but let's indicate - // that we intercepted the operation. - return Intercepted::kYes; - } + Local name = Uint32ToString(env->context(), index); return StorageDefiner(name, desc, info); } diff --git a/src/util.h b/src/util.h index 81d08c27fb7037..51f0b6463ab6bc 100644 --- a/src/util.h +++ b/src/util.h @@ -1063,6 +1063,16 @@ inline v8::MaybeLocal NewDictionaryInstanceNullProto( v8::Local tmpl, v8::MemorySpan> property_values); +// Convert an uint32 to a V8 String. +inline v8::Local Uint32ToString(v8::Local context, + uint32_t index) { + // V8 internally caches strings for small integers, and asserts that a + // non-empty string local handle is returned for `ToString`. + return v8::Uint32::New(v8::Isolate::GetCurrent(), index) + ->ToString(context) + .ToLocalChecked(); +} + } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS From 359797c2fb3564a2ac37be915d8162b0abc797c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Wed, 26 Nov 2025 18:05:35 +0100 Subject: [PATCH 011/267] deps,src: prepare for cpplint update Disable linting where there are false positives or clashes whith the C++ formatter. PR-URL: https://github.com/nodejs/node/pull/60901 Fixes: https://github.com/nodejs/node/issues/60771 Reviewed-By: Luigi Pinca Reviewed-By: Vladimir Morozov --- deps/ncrypto/ncrypto.h | 5 ++++- src/crypto/crypto_util.cc | 4 +++- src/inspector_socket.cc | 2 ++ src/node_api_types.h | 2 ++ src/node_report_module.cc | 6 +++--- src/quic/session.cc | 4 +++- 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/deps/ncrypto/ncrypto.h b/deps/ncrypto/ncrypto.h index b2377ed4cf71ca..70623d740b72e2 100644 --- a/deps/ncrypto/ncrypto.h +++ b/deps/ncrypto/ncrypto.h @@ -66,7 +66,10 @@ namespace ncrypto { #define NCRYPTO_STR(x) #x #define NCRYPTO_REQUIRE(EXPR) \ { \ - if (!(EXPR) { abort(); }) } + if (!(EXPR)) { \ + abort(); \ + } \ + } #define NCRYPTO_FAIL(MESSAGE) \ do { \ diff --git a/src/crypto/crypto_util.cc b/src/crypto/crypto_util.cc index 205e248e0f20f0..3435e43b3baa0c 100644 --- a/src/crypto/crypto_util.cc +++ b/src/crypto/crypto_util.cc @@ -556,7 +556,9 @@ Maybe Decorate(Environment* env, #define V(name) case ERR_LIB_##name: lib = #name "_"; break; const char* lib = ""; const char* prefix = "OSSL_"; - switch (ERR_GET_LIB(err)) { OSSL_ERROR_CODES_MAP(V) } + switch (ERR_GET_LIB(err)) { /* NOLINT(whitespace/newline) */ + OSSL_ERROR_CODES_MAP(V) + } #undef V #undef OSSL_ERROR_CODES_MAP // Don't generate codes like "ERR_OSSL_SSL_". diff --git a/src/inspector_socket.cc b/src/inspector_socket.cc index 788a3aeb65df69..93d819a21e5e6c 100644 --- a/src/inspector_socket.cc +++ b/src/inspector_socket.cc @@ -206,6 +206,8 @@ static bool IsIPAddress(const std::string& host) { // (other than ::/128) that represent non-routable IPv4 addresses. However, // this translation assumes that the host is interpreted as an IPv6 address // in the first place, at which point DNS rebinding should not be an issue. + // False positive: https://github.com/cpplint/cpplint/issues/410 + // NOLINTNEXTLINE(whitespace/newline) if (std::ranges::all_of(ipv6, [](auto b) { return b == 0; })) { return false; } diff --git a/src/node_api_types.h b/src/node_api_types.h index 2580f15c030d22..79123f0423d6dd 100644 --- a/src/node_api_types.h +++ b/src/node_api_types.h @@ -5,6 +5,8 @@ typedef napi_value(NAPI_CDECL* napi_addon_register_func)(napi_env env, napi_value exports); +// False positive: https://github.com/cpplint/cpplint/issues/409 +// NOLINTNEXTLINE (readability/casting) typedef int32_t(NAPI_CDECL* node_api_addon_get_api_version_func)(void); typedef struct napi_callback_scope__* napi_callback_scope; diff --git a/src/node_report_module.cc b/src/node_report_module.cc index 9b08edd49c6d71..5345d7f4755f18 100644 --- a/src/node_report_module.cc +++ b/src/node_report_module.cc @@ -34,11 +34,11 @@ void WriteReport(const FunctionCallbackInfo& info) { Local error; CHECK_EQ(info.Length(), 4); - String::Utf8Value message(isolate, info[0].As()); - String::Utf8Value trigger(isolate, info[1].As()); + Utf8Value message(isolate, info[0].As()); + Utf8Value trigger(isolate, info[1].As()); if (info[2]->IsString()) - filename = *String::Utf8Value(isolate, info[2]); + filename = *Utf8Value(isolate, info[2]); if (!info[3].IsEmpty()) error = info[3]; else diff --git a/src/quic/session.cc b/src/quic/session.cc index 416dc9c16d756b..8e348a2062e1aa 100644 --- a/src/quic/session.cc +++ b/src/quic/session.cc @@ -166,7 +166,9 @@ std::string to_string(ngtcp2_cc_algo cc_algorithm) { #define V(name, label) \ case NGTCP2_CC_ALGO_##name: \ return #label; - switch (cc_algorithm) { CC_ALGOS(V) } + switch (cc_algorithm) { /* NOLINT(whitespace/newline) */ + CC_ALGOS(V) + } return ""; #undef V } From 583e6c67ea9d2733316cc4dd5a77717f5cc299b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sun, 23 Nov 2025 16:06:08 +0100 Subject: [PATCH 012/267] tools: update cpplint to 2.0.2 PR-URL: https://github.com/nodejs/node/pull/60901 Fixes: https://github.com/nodejs/node/issues/60771 Reviewed-By: Luigi Pinca Reviewed-By: Vladimir Morozov --- tools/cpplint.py | 13179 ++++++++++++++++++++++++--------------------- 1 file changed, 7006 insertions(+), 6173 deletions(-) diff --git a/tools/cpplint.py b/tools/cpplint.py index 622139efb1e2a7..6dc72c947fac8d 100755 --- a/tools/cpplint.py +++ b/tools/cpplint.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # # Copyright (c) 2009 Google Inc. All rights reserved. # @@ -41,12 +41,10 @@ same line, but it is far from perfect (in either direction). """ -# cpplint predates fstrings -# pylint: disable=consider-using-f-string - -# pylint: disable=invalid-name +from __future__ import annotations # PEP 604 not in 3.9 import codecs +import collections import copy import getopt import glob @@ -61,38 +59,21 @@ import xml.etree.ElementTree # if empty, use defaults -_valid_extensions = set([]) - -__VERSION__ = '1.6.1' - -# sre_compile will be/has been removed in Python 3.13 -# use re._compiler instead -# Refs: https://github.com/python/cpython/issues/105456 -# Refs: https://github.com/python/cpython/issues/91308 -try: - srecompile = re._compiler.compile -except AttributeError: - import sre_compile - srecompile = sre_compile.compile - -try: - # -- pylint: disable=used-before-assignment - xrange # Python 2 -except NameError: - # -- pylint: disable=redefined-builtin - xrange = range # Python 3 +_valid_extensions: set[str] = set() +__VERSION__ = "2.0.3-dev0" _USAGE = """ Syntax: cpplint.py [--verbose=#] [--output=emacs|eclipse|vs7|junit|sed|gsed] [--filter=-x,+y,...] [--counting=total|toplevel|detailed] [--root=subdir] [--repository=path] - [--linelength=digits] [--headers=x,y,...] + [--linelength=digits] [--headers=x,y,...] [--third_party_headers=pattern] [--recursive] [--exclude=path] [--extensions=hpp,cpp,...] [--includeorder=default|standardcfirst] + [--config=filename] [--quiet] [--version] [file] ... @@ -110,7 +91,11 @@ To suppress false-positive errors of certain categories, add a 'NOLINT(category[, category...])' comment to the line. NOLINT or NOLINT(*) suppresses errors of all categories on that line. To suppress categories - on the next line use NOLINTNEXTLINE instead of NOLINT. + on the next line use NOLINTNEXTLINE instead of NOLINT. To suppress errors in + a block of code 'NOLINTBEGIN(category[, category...])' comment to a line at + the start of the block and to end the block add a comment with 'NOLINTEND'. + NOLINT blocks are inclusive so any statements on the same line as a BEGIN + or END will have the error suppression applied. The files passed in will be linted; at least one file must be provided. Default linted extensions are %s. @@ -153,12 +138,20 @@ To see a list of all the categories used in cpplint, pass no arg: --filter= + Filters can directly be limited to files and also line numbers. The + syntax is category:file:line , where line is optional. The filter limitation + works for both + and - and can be combined with ordinary filters: + + Examples: --filter=-whitespace:foo.h,+whitespace/braces:foo.h + --filter=-whitespace,-runtime/printf:foo.h:14,+runtime/printf_format:foo.h + --filter=-,+build/include_what_you_use:foo.h:321 + counting=total|toplevel|detailed The total number of errors found is always printed. If 'toplevel' is provided, then the count of errors in each of the top-level categories like 'build' and 'whitespace' will also be printed. If 'detailed' is provided, then a count - is provided for each category like 'build/class'. + is provided for each category like 'legal/copyright'. repository=path The top level directory of the repository, used to derive the header @@ -240,10 +233,15 @@ treat all others as separate group of "other system headers". The C headers included are those of the C-standard lib and closely related ones. + config=filename + Search for config files with the specified name instead of CPPLINT.cfg + headers=x,y,... The header extensions that cpplint will treat as .h in checks. Values are automatically added to --extensions list. (by default, only files with extensions %s will be assumed to be headers) + third_party_headers=pattern + Regex for identifying third-party headers to exclude from include checks. Examples: --headers=%s @@ -260,6 +258,7 @@ linelength=80 root=subdir headers=x,y,... + third_party_headers=pattern "set noparent" option prevents cpplint from traversing directory tree upwards looking for more .cfg files in parent directories. This option @@ -299,521 +298,567 @@ # If you add a new error message with a new category, add it to the list # here! cpplint_unittest.py should tell you if you forget to do this. _ERROR_CATEGORIES = [ - 'build/class', - 'build/c++11', - 'build/c++14', - 'build/c++tr1', - 'build/deprecated', - 'build/endif_comment', - 'build/explicit_make_pair', - 'build/forward_decl', - 'build/header_guard', - 'build/include', - 'build/include_subdir', - 'build/include_alpha', - 'build/include_inline', - 'build/include_order', - 'build/include_what_you_use', - 'build/namespaces_headers', - 'build/namespaces_literals', - 'build/namespaces', - 'build/printf_format', - 'build/storage_class', - 'legal/copyright', - 'readability/alt_tokens', - 'readability/braces', - 'readability/casting', - 'readability/check', - 'readability/constructors', - 'readability/inheritance', - 'readability/pointer_notation', - 'readability/multiline_comment', - 'readability/multiline_string', - 'readability/namespace', - 'readability/nolint', - 'readability/nul', - 'readability/null_usage', - 'readability/strings', - 'readability/todo', - 'readability/utf8', - 'runtime/arrays', - 'runtime/casting', - 'runtime/explicit', - 'runtime/int', - 'runtime/init', - 'runtime/invalid_increment', - 'runtime/member_string_references', - 'runtime/memset', - 'runtime/indentation_namespace', - 'runtime/operator', - 'runtime/printf', - 'runtime/printf_format', - 'runtime/references', - 'runtime/string', - 'runtime/threadsafe_fn', - 'runtime/vlog', - 'runtime/v8_persistent', - 'whitespace/blank_line', - 'whitespace/braces', - 'whitespace/comma', - 'whitespace/comments', - 'whitespace/empty_conditional_body', - 'whitespace/empty_if_body', - 'whitespace/empty_loop_body', - 'whitespace/end_of_line', - 'whitespace/ending_newline', - 'whitespace/forcolon', - 'whitespace/indent', - 'whitespace/line_length', - 'whitespace/newline', - 'whitespace/operators', - 'whitespace/parens', - 'whitespace/semicolon', - 'whitespace/tab', - 'whitespace/todo', - ] + "build/c++11", + "build/c++17", + "build/deprecated", + "build/endif_comment", + "build/explicit_make_pair", + "build/forward_decl", + "build/header_guard", + "build/include", + "build/include_subdir", + "build/include_alpha", + "build/include_order", + "build/include_what_you_use", + "build/namespaces_headers", + "build/namespaces/header/block/literals", + "build/namespaces/header/block/nonliterals", + "build/namespaces/header/namespace/literals", + "build/namespaces/header/namespace/nonliterals", + "build/namespaces/source/block/literals", + "build/namespaces/source/block/nonliterals", + "build/namespaces/source/namespace/literals", + "build/namespaces/source/namespace/nonliterals", + "build/printf_format", + "build/storage_class", + "legal/copyright", + "readability/alt_tokens", + "readability/braces", + "readability/casting", + "readability/check", + "readability/constructors", + "readability/fn_size", + "readability/inheritance", + "readability/multiline_comment", + "readability/multiline_string", + "readability/namespace", + "readability/nolint", + "readability/nul", + "readability/todo", + "readability/utf8", + "runtime/arrays", + "runtime/casting", + "runtime/explicit", + "runtime/int", + "runtime/init", + "runtime/invalid_increment", + "runtime/member_string_references", + "runtime/memset", + "runtime/operator", + "runtime/printf", + "runtime/printf_format", + "runtime/references", + "runtime/string", + "runtime/threadsafe_fn", + "runtime/vlog", + "whitespace/blank_line", + "whitespace/braces", + "whitespace/comma", + "whitespace/comments", + "whitespace/empty_conditional_body", + "whitespace/empty_if_body", + "whitespace/empty_loop_body", + "whitespace/end_of_line", + "whitespace/ending_newline", + "whitespace/forcolon", + "whitespace/indent", + "whitespace/indent_namespace", + "whitespace/line_length", + "whitespace/newline", + "whitespace/operators", + "whitespace/parens", + "whitespace/semicolon", + "whitespace/tab", + "whitespace/todo", +] # keywords to use with --outputs which generate stdout for machine processing -_MACHINE_OUTPUTS = [ - 'junit', - 'sed', - 'gsed' -] +_MACHINE_OUTPUTS = ["junit", "sed", "gsed"] # These error categories are no longer enforced by cpplint, but for backwards- # compatibility they may still appear in NOLINT comments. _LEGACY_ERROR_CATEGORIES = [ - 'readability/streams', - 'readability/function', - ] + "build/class", + "readability/streams", + "readability/function", +] # These prefixes for categories should be ignored since they relate to other # tools which also use the NOLINT syntax, e.g. clang-tidy. _OTHER_NOLINT_CATEGORY_PREFIXES = [ - 'clang-analyzer', - ] + "clang-analyzer-", + "abseil-", + "altera-", + "android-", + "boost-", + "bugprone-", + "cert-", + "concurrency-", + "cppcoreguidelines-", + "darwin-", + "fuchsia-", + "google-", + "hicpp-", + "linuxkernel-", + "llvm-", + "llvmlibc-", + "misc-", + "modernize-", + "mpi-", + "objc-", + "openmp-", + "performance-", + "portability-", + "readability-", + "zircon-", +] # The default state of the category filter. This is overridden by the --filter= # flag. By default all errors are on, so only add here categories that should be # off by default (i.e., categories that must be enabled by the --filter= flags). # All entries here should start with a '-' or '+', as in the --filter= flag. _DEFAULT_FILTERS = [ - '-build/include_alpha', - '-readability/fn_size', - ] + "-build/include_alpha", + "-readability/fn_size", + "-runtime/references", +] # The default list of categories suppressed for C (not C++) files. _DEFAULT_C_SUPPRESSED_CATEGORIES = [ - 'readability/casting', - ] + "readability/casting", +] # The default list of categories suppressed for Linux Kernel files. _DEFAULT_KERNEL_SUPPRESSED_CATEGORIES = [ - 'whitespace/tab', - ] + "whitespace/tab", +] # We used to check for high-bit characters, but after much discussion we # decided those were OK, as long as they were in UTF-8 and didn't represent # hard-coded international strings, which belong in a separate i18n file. # C++ headers -_CPP_HEADERS = frozenset([ - # Legacy - 'algobase.h', - 'algo.h', - 'alloc.h', - 'builtinbuf.h', - 'bvector.h', - # 'complex.h', collides with System C header "complex.h" - 'defalloc.h', - 'deque.h', - 'editbuf.h', - 'fstream.h', - 'function.h', - 'hash_map', - 'hash_map.h', - 'hash_set', - 'hash_set.h', - 'hashtable.h', - 'heap.h', - 'indstream.h', - 'iomanip.h', - 'iostream.h', - 'istream.h', - 'iterator.h', - 'list.h', - 'map.h', - 'multimap.h', - 'multiset.h', - 'ostream.h', - 'pair.h', - 'parsestream.h', - 'pfstream.h', - 'procbuf.h', - 'pthread_alloc', - 'pthread_alloc.h', - 'rope', - 'rope.h', - 'ropeimpl.h', - 'set.h', - 'slist', - 'slist.h', - 'stack.h', - 'stdiostream.h', - 'stl_alloc.h', - 'stl_relops.h', - 'streambuf.h', - 'stream.h', - 'strfile.h', - 'strstream.h', - 'tempbuf.h', - 'tree.h', - 'type_traits.h', - 'vector.h', - # 17.6.1.2 C++ library headers - 'algorithm', - 'array', - 'atomic', - 'bitset', - 'chrono', - 'codecvt', - 'complex', - 'condition_variable', - 'deque', - 'exception', - 'forward_list', - 'fstream', - 'functional', - 'future', - 'initializer_list', - 'iomanip', - 'ios', - 'iosfwd', - 'iostream', - 'istream', - 'iterator', - 'limits', - 'list', - 'locale', - 'map', - 'memory', - 'mutex', - 'new', - 'numeric', - 'ostream', - 'queue', - 'random', - 'ratio', - 'regex', - 'scoped_allocator', - 'set', - 'sstream', - 'stack', - 'stdexcept', - 'streambuf', - 'string', - 'strstream', - 'system_error', - 'thread', - 'tuple', - 'typeindex', - 'typeinfo', - 'type_traits', - 'unordered_map', - 'unordered_set', - 'utility', - 'valarray', - 'vector', - # 17.6.1.2 C++14 headers - 'shared_mutex', - # 17.6.1.2 C++17 headers - 'any', - 'charconv', - 'codecvt', - 'execution', - 'filesystem', - 'memory_resource', - 'optional', - 'string_view', - 'variant', - # 17.6.1.2 C++20 headers - 'barrier', - 'bit', - 'compare', - 'concepts', - 'coroutine', - 'format', - 'latch' - 'numbers', - 'ranges', - 'semaphore', - 'source_location', - 'span', - 'stop_token', - 'syncstream', - 'version', - # 17.6.1.2 C++ headers for C library facilities - 'cassert', - 'ccomplex', - 'cctype', - 'cerrno', - 'cfenv', - 'cfloat', - 'cinttypes', - 'ciso646', - 'climits', - 'clocale', - 'cmath', - 'csetjmp', - 'csignal', - 'cstdalign', - 'cstdarg', - 'cstdbool', - 'cstddef', - 'cstdint', - 'cstdio', - 'cstdlib', - 'cstring', - 'ctgmath', - 'ctime', - 'cuchar', - 'cwchar', - 'cwctype', - ]) +_CPP_HEADERS = frozenset( + [ + # Legacy + "algobase.h", + "algo.h", + "alloc.h", + "builtinbuf.h", + "bvector.h", + # 'complex.h', collides with System C header "complex.h" since C11 + "defalloc.h", + "deque.h", + "editbuf.h", + "fstream.h", + "function.h", + "hash_map", + "hash_map.h", + "hash_set", + "hash_set.h", + "hashtable.h", + "heap.h", + "indstream.h", + "iomanip.h", + "iostream.h", + "istream.h", + "iterator.h", + "list.h", + "map.h", + "multimap.h", + "multiset.h", + "ostream.h", + "pair.h", + "parsestream.h", + "pfstream.h", + "procbuf.h", + "pthread_alloc", + "pthread_alloc.h", + "rope", + "rope.h", + "ropeimpl.h", + "set.h", + "slist", + "slist.h", + "stack.h", + "stdiostream.h", + "stl_alloc.h", + "stl_relops.h", + "streambuf.h", + "stream.h", + "strfile.h", + "strstream.h", + "tempbuf.h", + "tree.h", + "type_traits.h", + "vector.h", + # C++ library headers + "algorithm", + "array", + "atomic", + "bitset", + "chrono", + "codecvt", + "complex", + "condition_variable", + "deque", + "exception", + "forward_list", + "fstream", + "functional", + "future", + "initializer_list", + "iomanip", + "ios", + "iosfwd", + "iostream", + "istream", + "iterator", + "limits", + "list", + "locale", + "map", + "memory", + "mutex", + "new", + "numeric", + "ostream", + "queue", + "random", + "ratio", + "regex", + "scoped_allocator", + "set", + "sstream", + "stack", + "stdexcept", + "streambuf", + "string", + "strstream", + "system_error", + "thread", + "tuple", + "typeindex", + "typeinfo", + "type_traits", + "unordered_map", + "unordered_set", + "utility", + "valarray", + "vector", + # C++14 headers + "shared_mutex", + # C++17 headers + "any", + "charconv", + "codecvt", + "execution", + "filesystem", + "memory_resource", + "optional", + "string_view", + "variant", + # C++20 headers + "barrier", + "bit", + "compare", + "concepts", + "coroutine", + "format", + "latch", + "numbers", + "ranges", + "semaphore", + "source_location", + "span", + "stop_token", + "syncstream", + "version", + # C++23 headers + "expected", + "flat_map", + "flat_set", + "generator", + "mdspan", + "print", + "spanstream", + "stacktrace", + "stdfloat", + # C++ headers for C library facilities + "cassert", + "ccomplex", + "cctype", + "cerrno", + "cfenv", + "cfloat", + "cinttypes", + "ciso646", + "climits", + "clocale", + "cmath", + "csetjmp", + "csignal", + "cstdalign", + "cstdarg", + "cstdbool", + "cstddef", + "cstdint", + "cstdio", + "cstdlib", + "cstring", + "ctgmath", + "ctime", + "cuchar", + "cwchar", + "cwctype", + ] +) # C headers -_C_HEADERS = frozenset([ - # System C headers - 'assert.h', - 'complex.h', - 'ctype.h', - 'errno.h', - 'fenv.h', - 'float.h', - 'inttypes.h', - 'iso646.h', - 'limits.h', - 'locale.h', - 'math.h', - 'setjmp.h', - 'signal.h', - 'stdalign.h', - 'stdarg.h', - 'stdatomic.h', - 'stdbool.h', - 'stddef.h', - 'stdint.h', - 'stdio.h', - 'stdlib.h', - 'stdnoreturn.h', - 'string.h', - 'tgmath.h', - 'threads.h', - 'time.h', - 'uchar.h', - 'wchar.h', - 'wctype.h', - # additional POSIX C headers - 'aio.h', - 'arpa/inet.h', - 'cpio.h', - 'dirent.h', - 'dlfcn.h', - 'fcntl.h', - 'fmtmsg.h', - 'fnmatch.h', - 'ftw.h', - 'glob.h', - 'grp.h', - 'iconv.h', - 'langinfo.h', - 'libgen.h', - 'monetary.h', - 'mqueue.h', - 'ndbm.h', - 'net/if.h', - 'netdb.h', - 'netinet/in.h', - 'netinet/tcp.h', - 'nl_types.h', - 'poll.h', - 'pthread.h', - 'pwd.h', - 'regex.h', - 'sched.h', - 'search.h', - 'semaphore.h', - 'setjmp.h', - 'signal.h', - 'spawn.h', - 'strings.h', - 'stropts.h', - 'syslog.h', - 'tar.h', - 'termios.h', - 'trace.h', - 'ulimit.h', - 'unistd.h', - 'utime.h', - 'utmpx.h', - 'wordexp.h', - # additional GNUlib headers - 'a.out.h', - 'aliases.h', - 'alloca.h', - 'ar.h', - 'argp.h', - 'argz.h', - 'byteswap.h', - 'crypt.h', - 'endian.h', - 'envz.h', - 'err.h', - 'error.h', - 'execinfo.h', - 'fpu_control.h', - 'fstab.h', - 'fts.h', - 'getopt.h', - 'gshadow.h', - 'ieee754.h', - 'ifaddrs.h', - 'libintl.h', - 'mcheck.h', - 'mntent.h', - 'obstack.h', - 'paths.h', - 'printf.h', - 'pty.h', - 'resolv.h', - 'shadow.h', - 'sysexits.h', - 'ttyent.h', - # Additional linux glibc headers - 'dlfcn.h', - 'elf.h', - 'features.h', - 'gconv.h', - 'gnu-versions.h', - 'lastlog.h', - 'libio.h', - 'link.h', - 'malloc.h', - 'memory.h', - 'netash/ash.h', - 'netatalk/at.h', - 'netax25/ax25.h', - 'neteconet/ec.h', - 'netipx/ipx.h', - 'netiucv/iucv.h', - 'netpacket/packet.h', - 'netrom/netrom.h', - 'netrose/rose.h', - 'nfs/nfs.h', - 'nl_types.h', - 'nss.h', - 're_comp.h', - 'regexp.h', - 'sched.h', - 'sgtty.h', - 'stab.h', - 'stdc-predef.h', - 'stdio_ext.h', - 'syscall.h', - 'termio.h', - 'thread_db.h', - 'ucontext.h', - 'ustat.h', - 'utmp.h', - 'values.h', - 'wait.h', - 'xlocale.h', - # Hardware specific headers - 'arm_neon.h', - 'emmintrin.h', - 'xmmintin.h', - ]) +_C_HEADERS = frozenset( + [ + # System C headers + "assert.h", + "complex.h", + "ctype.h", + "errno.h", + "fenv.h", + "float.h", + "inttypes.h", + "iso646.h", + "limits.h", + "locale.h", + "math.h", + "setjmp.h", + "signal.h", + "stdalign.h", + "stdarg.h", + "stdatomic.h", + "stdbool.h", + "stddef.h", + "stdint.h", + "stdio.h", + "stdlib.h", + "stdnoreturn.h", + "string.h", + "tgmath.h", + "threads.h", + "time.h", + "uchar.h", + "wchar.h", + "wctype.h", + # C23 headers + "stdbit.h", + "stdckdint.h", + # additional POSIX C headers + "aio.h", + "arpa/inet.h", + "cpio.h", + "dirent.h", + "dlfcn.h", + "fcntl.h", + "fmtmsg.h", + "fnmatch.h", + "ftw.h", + "glob.h", + "grp.h", + "iconv.h", + "langinfo.h", + "libgen.h", + "monetary.h", + "mqueue.h", + "ndbm.h", + "net/if.h", + "netdb.h", + "netinet/in.h", + "netinet/tcp.h", + "nl_types.h", + "poll.h", + "pthread.h", + "pwd.h", + "regex.h", + "sched.h", + "search.h", + "semaphore.h", + "setjmp.h", + "signal.h", + "spawn.h", + "strings.h", + "stropts.h", + "syslog.h", + "tar.h", + "termios.h", + "trace.h", + "ulimit.h", + "unistd.h", + "utime.h", + "utmpx.h", + "wordexp.h", + # additional GNUlib headers + "a.out.h", + "aliases.h", + "alloca.h", + "ar.h", + "argp.h", + "argz.h", + "byteswap.h", + "crypt.h", + "endian.h", + "envz.h", + "err.h", + "error.h", + "execinfo.h", + "fpu_control.h", + "fstab.h", + "fts.h", + "getopt.h", + "gshadow.h", + "ieee754.h", + "ifaddrs.h", + "libintl.h", + "mcheck.h", + "mntent.h", + "obstack.h", + "paths.h", + "printf.h", + "pty.h", + "resolv.h", + "shadow.h", + "sysexits.h", + "ttyent.h", + # Additional linux glibc headers + "dlfcn.h", + "elf.h", + "features.h", + "gconv.h", + "gnu-versions.h", + "lastlog.h", + "libio.h", + "link.h", + "malloc.h", + "memory.h", + "netash/ash.h", + "netatalk/at.h", + "netax25/ax25.h", + "neteconet/ec.h", + "netipx/ipx.h", + "netiucv/iucv.h", + "netpacket/packet.h", + "netrom/netrom.h", + "netrose/rose.h", + "nfs/nfs.h", + "nl_types.h", + "nss.h", + "re_comp.h", + "regexp.h", + "sched.h", + "sgtty.h", + "stab.h", + "stdc-predef.h", + "stdio_ext.h", + "syscall.h", + "termio.h", + "thread_db.h", + "ucontext.h", + "ustat.h", + "utmp.h", + "values.h", + "wait.h", + "xlocale.h", + # Hardware specific headers + "arm_neon.h", + "emmintrin.h", + "xmmintin.h", + ] +) # Folders of C libraries so commonly used in C++, # that they have parity with standard C libraries. -C_STANDARD_HEADER_FOLDERS = frozenset([ - # standard C library - "sys", - # glibc for linux - "arpa", - "asm-generic", - "bits", - "gnu", - "net", - "netinet", - "protocols", - "rpc", - "rpcsvc", - "scsi", - # linux kernel header - "drm", - "linux", - "misc", - "mtd", - "rdma", - "sound", - "video", - "xen", - ]) +C_STANDARD_HEADER_FOLDERS = frozenset( + [ + # standard C library + "sys", + # glibc for linux + "arpa", + "asm-generic", + "bits", + "gnu", + "net", + "netinet", + "protocols", + "rpc", + "rpcsvc", + "scsi", + # linux kernel header + "drm", + "linux", + "misc", + "mtd", + "rdma", + "sound", + "video", + "xen", + ] +) # Type names _TYPES = re.compile( - r'^(?:' + r"^(?:" # [dcl.type.simple] - r'(char(16_t|32_t)?)|wchar_t|' - r'bool|short|int|long|signed|unsigned|float|double|' + r"(char(16_t|32_t)?)|wchar_t|" + r"bool|short|int|long|signed|unsigned|float|double|" # [support.types] - r'(ptrdiff_t|size_t|max_align_t|nullptr_t)|' + r"(ptrdiff_t|size_t|max_align_t|nullptr_t)|" # [cstdint.syn] - r'(u?int(_fast|_least)?(8|16|32|64)_t)|' - r'(u?int(max|ptr)_t)|' - r')$') - - -# These headers are excluded from [build/include] and [build/include_order] -# checks: -# - Anything not following google file name conventions (containing an -# uppercase character, such as Python.h or nsStringAPI.h, for example). -# - Lua headers. -_THIRD_PARTY_HEADERS_PATTERN = re.compile( - r'^(?:[^/]*[A-Z][^/]*\.h|lua\.h|lauxlib\.h|lualib\.h)$') + r"(u?int(_fast|_least)?(8|16|32|64)_t)|" + r"(u?int(max|ptr)_t)|" + r")$" +) # Pattern for matching FileInfo.BaseName() against test file name -_test_suffixes = ['_test', '_regtest', '_unittest'] -_TEST_FILE_SUFFIX = '(' + '|'.join(_test_suffixes) + r')$' +_test_suffixes = ["_test", "_regtest", "_unittest"] +_TEST_FILE_SUFFIX = "(" + "|".join(_test_suffixes) + r")$" # Pattern that matches only complete whitespace, possibly across multiple lines. -_EMPTY_CONDITIONAL_BODY_PATTERN = re.compile(r'^\s*$', re.DOTALL) +_EMPTY_CONDITIONAL_BODY_PATTERN = re.compile(r"^\s*$", re.DOTALL) # Assertion macros. These are defined in base/logging.h and # testing/base/public/gunit.h. _CHECK_MACROS = [ - 'DCHECK', 'CHECK', - 'EXPECT_TRUE', 'ASSERT_TRUE', - 'EXPECT_FALSE', 'ASSERT_FALSE', - ] + "DCHECK", + "CHECK", + "EXPECT_TRUE", + "ASSERT_TRUE", + "EXPECT_FALSE", + "ASSERT_FALSE", +] # Replacement macros for CHECK/DCHECK/EXPECT_TRUE/EXPECT_FALSE -_CHECK_REPLACEMENT = dict([(macro_var, {}) for macro_var in _CHECK_MACROS]) - -for op, replacement in [('==', 'EQ'), ('!=', 'NE'), - ('>=', 'GE'), ('>', 'GT'), - ('<=', 'LE'), ('<', 'LT')]: - _CHECK_REPLACEMENT['DCHECK'][op] = 'DCHECK_%s' % replacement - _CHECK_REPLACEMENT['CHECK'][op] = 'CHECK_%s' % replacement - _CHECK_REPLACEMENT['EXPECT_TRUE'][op] = 'EXPECT_%s' % replacement - _CHECK_REPLACEMENT['ASSERT_TRUE'][op] = 'ASSERT_%s' % replacement - -for op, inv_replacement in [('==', 'NE'), ('!=', 'EQ'), - ('>=', 'LT'), ('>', 'LE'), - ('<=', 'GT'), ('<', 'GE')]: - _CHECK_REPLACEMENT['EXPECT_FALSE'][op] = 'EXPECT_%s' % inv_replacement - _CHECK_REPLACEMENT['ASSERT_FALSE'][op] = 'ASSERT_%s' % inv_replacement +_CHECK_REPLACEMENT: dict[str, dict[str, str]] = {macro_var: {} for macro_var in _CHECK_MACROS} + +for op, replacement in [ + ("==", "EQ"), + ("!=", "NE"), + (">=", "GE"), + (">", "GT"), + ("<=", "LE"), + ("<", "LT"), +]: + _CHECK_REPLACEMENT["DCHECK"][op] = f"DCHECK_{replacement}" + _CHECK_REPLACEMENT["CHECK"][op] = f"CHECK_{replacement}" + _CHECK_REPLACEMENT["EXPECT_TRUE"][op] = f"EXPECT_{replacement}" + _CHECK_REPLACEMENT["ASSERT_TRUE"][op] = f"ASSERT_{replacement}" + +for op, inv_replacement in [ + ("==", "NE"), + ("!=", "EQ"), + (">=", "LT"), + (">", "LE"), + ("<=", "GT"), + ("<", "GE"), +]: + _CHECK_REPLACEMENT["EXPECT_FALSE"][op] = f"EXPECT_{inv_replacement}" + _CHECK_REPLACEMENT["ASSERT_FALSE"][op] = f"ASSERT_{inv_replacement}" # Alternative tokens and their replacements. For full list, see section 2.5 # Alternative tokens [lex.digraph] in the C++ standard. @@ -821,18 +866,18 @@ # Digraphs (such as '%:') are not included here since it's a mess to # match those on a word boundary. _ALT_TOKEN_REPLACEMENT = { - 'and': '&&', - 'bitor': '|', - 'or': '||', - 'xor': '^', - 'compl': '~', - 'bitand': '&', - 'and_eq': '&=', - 'or_eq': '|=', - 'xor_eq': '^=', - 'not': '!', - 'not_eq': '!=' - } + "and": "&&", + "bitor": "|", + "or": "||", + "xor": "^", + "compl": "~", + "bitand": "&", + "and_eq": "&=", + "or_eq": "|=", + "xor_eq": "^=", + "not": "!", + "not_eq": "!=", +} # Compile regular expression that matches all the above keywords. The "[ =()]" # bit is meant to avoid matching these keywords outside of boolean expressions. @@ -840,7 +885,8 @@ # False positives include C-style multi-line comments and multi-line strings # but those have always been troublesome for cpplint. _ALT_TOKEN_REPLACEMENT_PATTERN = re.compile( - r'[ =()](' + ('|'.join(_ALT_TOKEN_REPLACEMENT.keys())) + r')(?=[ (]|$)') + r"([ =()])(" + ("|".join(_ALT_TOKEN_REPLACEMENT.keys())) + r")([ (]|$)" +) # These constants define types of headers for use with @@ -853,52 +899,52 @@ _OTHER_HEADER = 6 # These constants define the current inline assembly state -_NO_ASM = 0 # Outside of inline assembly block -_INSIDE_ASM = 1 # Inside inline assembly block -_END_ASM = 2 # Last line of inline assembly block -_BLOCK_ASM = 3 # The whole block is an inline assembly block +_NO_ASM = 0 # Outside of inline assembly block +_INSIDE_ASM = 1 # Inside inline assembly block +_END_ASM = 2 # Last line of inline assembly block +_BLOCK_ASM = 3 # The whole block is an inline assembly block # Match start of assembly blocks -_MATCH_ASM = re.compile(r'^\s*(?:asm|_asm|__asm|__asm__)' - r'(?:\s+(volatile|__volatile__))?' - r'\s*[{(]') +_MATCH_ASM = re.compile( + r"^\s*(?:asm|_asm|__asm|__asm__)" + r"(?:\s+(volatile|__volatile__))?" + r"\s*[{(]" +) # Match strings that indicate we're working on a C (not C++) file. -_SEARCH_C_FILE = re.compile(r'\b(?:LINT_C_FILE|' - r'vim?:\s*.*(\s*|:)filetype=c(\s*|:|$))') +_SEARCH_C_FILE = re.compile( + r"\b(?:LINT_C_FILE|" + r"vim?:\s*.*(\s*|:)filetype=c(\s*|:|$))" +) # Match string that indicates we're working on a Linux Kernel file. -_SEARCH_KERNEL_FILE = re.compile(r'\b(?:LINT_KERNEL_FILE)') +_SEARCH_KERNEL_FILE = re.compile(r"\b(?:LINT_KERNEL_FILE)") # Commands for sed to fix the problem _SED_FIXUPS = { - 'Remove spaces around =': r's/ = /=/', - 'Remove spaces around !=': r's/ != /!=/', - 'Remove space before ( in if (': r's/if (/if(/', - 'Remove space before ( in for (': r's/for (/for(/', - 'Remove space before ( in while (': r's/while (/while(/', - 'Remove space before ( in switch (': r's/switch (/switch(/', - 'Should have a space between // and comment': r's/\/\//\/\/ /', - 'Missing space before {': r's/\([^ ]\){/\1 {/', - 'Tab found, replace by spaces': r's/\t/ /g', - 'Line ends in whitespace. Consider deleting these extra spaces.': r's/\s*$//', - 'You don\'t need a ; after a }': r's/};/}/', - 'Missing space after ,': r's/,\([^ ]\)/, \1/g', + "Remove spaces around =": r"s/ = /=/", + "Remove spaces around !=": r"s/ != /!=/", + "Remove space before ( in if (": r"s/if (/if(/", + "Remove space before ( in for (": r"s/for (/for(/", + "Remove space before ( in while (": r"s/while (/while(/", + "Remove space before ( in switch (": r"s/switch (/switch(/", + "Should have a space between // and comment": r"s/\/\//\/\/ /", + "Missing space before {": r"s/\([^ ]\){/\1 {/", + "Tab found, replace by spaces": r"s/\t/ /g", + "Line ends in whitespace. Consider deleting these extra spaces.": r"s/\s*$//", + "You don't need a ; after a }": r"s/};/}/", + "Missing space after ,": r"s/,\([^ ]\)/, \1/g", } -_NULL_TOKEN_PATTERN = re.compile(r'\bNULL\b') - -_V8_PERSISTENT_PATTERN = re.compile(r'\bv8::Persistent\b') - -_RIGHT_LEANING_POINTER_PATTERN = re.compile(r'[^=|(,\s><);&?:}]' - r'(?= other.end -def ParseNolintSuppressions(filename, raw_line, linenum, error): - """Updates the global list of line error-suppressions. - - Parses any NOLINT comments on the current line, updating the global - error_suppressions store. Reports an error if the NOLINT comment - was malformed. - - Args: - filename: str, the name of the input file. - raw_line: str, the line of input text, with comments. - linenum: int, the number of the current line. - error: function, an error handler. - """ - matched = Search(r'\bNOLINT(NEXTLINE)?\b(\([^)]+\))?', raw_line) - if matched: - if matched.group(1): - suppressed_line = linenum + 1 - else: - suppressed_line = linenum - categories = matched.group(2) - if categories in (None, '(*)'): # => "suppress all" - _error_suppressions.setdefault(None, set()).add(suppressed_line) - elif categories.startswith('(') and categories.endswith(')'): - for category in set(map(lambda c: c.strip(), categories[1:-1].split(','))): - if category in _ERROR_CATEGORIES: - _error_suppressions.setdefault(category, set()).add(suppressed_line) - elif any(c for c in _OTHER_NOLINT_CATEGORY_PREFIXES if category.startswith(c)): - # Ignore any categories from other tools. - pass - elif category not in _LEGACY_ERROR_CATEGORIES: - error(filename, linenum, 'readability/nolint', 5, - 'Unknown NOLINT error category: %s' % category) - - -def ProcessGlobalSuppresions(lines): - """Updates the list of global error suppressions. - - Parses any lint directives in the file that have global effect. - - Args: - lines: An array of strings, each representing a line of the file, with the - last element being empty if the file is terminated with a newline. - """ - for line in lines: - if _SEARCH_C_FILE.search(line): - for category in _DEFAULT_C_SUPPRESSED_CATEGORIES: - _global_error_suppressions[category] = True - if _SEARCH_KERNEL_FILE.search(line): - for category in _DEFAULT_KERNEL_SUPPRESSED_CATEGORIES: - _global_error_suppressions[category] = True + def __init__(self): + self._suppressions = collections.defaultdict(list) + self._open_block_suppression = None + def _AddSuppression(self, category, line_range): + suppressed = self._suppressions[category] + if not (suppressed and suppressed[-1].ContainsRange(line_range)): + suppressed.append(line_range) -def ResetNolintSuppressions(): - """Resets the set of NOLINT suppressions to empty.""" - _error_suppressions.clear() - _global_error_suppressions.clear() + def GetOpenBlockStart(self): + """:return: The start of the current open block or `-1` if there is not an open block""" + return self._open_block_suppression.begin if self._open_block_suppression else -1 + def AddGlobalSuppression(self, category): + """Add a suppression for `category` which is suppressed for the whole file""" + self._AddSuppression(category, self.LineRange(0, math.inf)) -def IsErrorSuppressedByNolint(category, linenum): - """Returns true if the specified error category is suppressed on this line. + def AddLineSuppression(self, category, linenum): + """Add a suppression for `category` which is suppressed only on `linenum`""" + self._AddSuppression(category, self.LineRange(linenum, linenum)) + + def StartBlockSuppression(self, category, linenum): + """Start a suppression block for `category` on `linenum`. inclusive""" + if self._open_block_suppression is None: + self._open_block_suppression = self.LineRange(linenum, math.inf) + self._AddSuppression(category, self._open_block_suppression) + + def EndBlockSuppression(self, linenum): + """End the current block suppression on `linenum`. inclusive""" + if self._open_block_suppression: + self._open_block_suppression.end = linenum + self._open_block_suppression = None + + def IsSuppressed(self, category, linenum): + """:return: `True` if `category` is suppressed for `linenum`""" + suppressed = self._suppressions[category] + self._suppressions[None] + return any(linenum in lr for lr in suppressed) - Consults the global error_suppressions map populated by - ParseNolintSuppressions/ProcessGlobalSuppresions/ResetNolintSuppressions. + def HasOpenBlock(self): + """:return: `True` if a block suppression was started but not ended""" + return self._open_block_suppression is not None + + def Clear(self): + """Clear all current error suppressions""" + self._suppressions.clear() + self._open_block_suppression = None + + +# {str, set(int)}: a map from error categories to sets of linenumbers +# on which those errors are expected and should be suppressed. +_error_suppressions = ErrorSuppressions() - Args: - category: str, the category of the error. - linenum: int, the current line number. - Returns: - bool, True iff the error should be suppressed due to a NOLINT comment or - global suppression. - """ - return (_global_error_suppressions.get(category, False) or - linenum in _error_suppressions.get(category, set()) or - linenum in _error_suppressions.get(None, set())) +def ProcessHppHeadersOption(val): + global _hpp_headers + try: + _hpp_headers = {ext.strip() for ext in val.split(",")} + except ValueError: + PrintUsage("Header extensions must be comma separated list.") -def Match(pattern, s): - """Matches the string with the pattern, caching the compiled regexp.""" - # The regexp compilation caching is inlined in both Match and Search for - # performance reasons; factoring it out into a separate function turns out - # to be noticeably expensive. - if pattern not in _regexp_compile_cache: - _regexp_compile_cache[pattern] = srecompile(pattern) - return _regexp_compile_cache[pattern].match(s) +def ProcessIncludeOrderOption(val): + if val is None or val == "default": + pass + elif val == "standardcfirst": + global _include_order + _include_order = val + else: + PrintUsage("Invalid includeorder value %s. Expected default|standardcfirst") -def ReplaceAll(pattern, rep, s): - """Replaces instances of pattern in a string with a replacement. - The compiled regex is kept in a cache shared by Match and Search. +def ProcessThirdPartyHeadersOption(val): + """Sets the regex pattern for third-party headers.""" + global _third_party_headers_pattern + try: + _third_party_headers_pattern = re.compile(val) + except re.error: + PrintUsage(f"Invalid third_party_headers pattern: {val}") - Args: - pattern: regex pattern - rep: replacement text - s: search string - Returns: - string with replacements made (or original string if no replacements) - """ - if pattern not in _regexp_compile_cache: - _regexp_compile_cache[pattern] = srecompile(pattern) - return _regexp_compile_cache[pattern].sub(rep, s) +def IsHeaderExtension(file_extension): + return file_extension in GetHeaderExtensions() -def Search(pattern, s): - """Searches the string for the pattern, caching the compiled regexp.""" - if pattern not in _regexp_compile_cache: - _regexp_compile_cache[pattern] = srecompile(pattern) - return _regexp_compile_cache[pattern].search(s) +def GetHeaderExtensions(): + if _hpp_headers: + return _hpp_headers + if _valid_extensions: + return {h for h in _valid_extensions if "h" in h} + return {"h", "hh", "hpp", "hxx", "h++", "cuh"} -def _IsSourceExtension(s): - """File extension (excluding dot) matches a source file extension.""" - return s in GetNonHeaderExtensions() - - -class _IncludeState(object): - """Tracks line numbers for includes, and the order in which includes appear. - - include_list contains list of lists of (header, line number) pairs. - It's a lists of lists rather than just one flat list to make it - easier to update across preprocessor boundaries. - - Call CheckNextIncludeOrder() once for each header in the file, passing - in the type constants defined above. Calls in an illegal order will - raise an _IncludeError with an appropriate error message. - - """ - # self._section will move monotonically through this set. If it ever - # needs to move backwards, CheckNextIncludeOrder will raise an error. - _INITIAL_SECTION = 0 - _MY_H_SECTION = 1 - _OTHER_H_SECTION = 2 - _OTHER_SYS_SECTION = 3 - _C_SECTION = 4 - _CPP_SECTION = 5 - - - _TYPE_NAMES = { - _C_SYS_HEADER: 'C system header', - _CPP_SYS_HEADER: 'C++ system header', - _OTHER_SYS_HEADER: 'other system header', - _LIKELY_MY_HEADER: 'header this file implements', - _POSSIBLE_MY_HEADER: 'header this file may implement', - _OTHER_HEADER: 'other header', - } - _SECTION_NAMES = { - _INITIAL_SECTION: "... nothing. (This can't be an error.)", - _MY_H_SECTION: 'a header this file implements', - _C_SECTION: 'C system header', - _CPP_SECTION: 'C++ system header', - _OTHER_SYS_SECTION: 'other system header', - _OTHER_H_SECTION: 'other header', - } - - def __init__(self): - self.include_list = [[]] - self._section = None - self._last_header = None - self.ResetSection('') - - def FindHeader(self, header): - """Check if a header has already been included. +# The allowed extensions for file names +# This is set by --extensions flag +def GetAllExtensions(): + return GetHeaderExtensions().union(_valid_extensions or {"c", "cc", "cpp", "cxx", "c++", "cu"}) - Args: - header: header to check. - Returns: - Line number of previous occurrence, or -1 if the header has not - been seen before. - """ - for section_list in self.include_list: - for f in section_list: - if f[0] == header: - return f[1] - return -1 - def ResetSection(self, directive): - """Reset section checking for preprocessor directive. +def ProcessExtensionsOption(val): + global _valid_extensions + try: + extensions = [ext.strip() for ext in val.split(",")] + _valid_extensions = set(extensions) + except ValueError: + PrintUsage( + "Extensions should be a comma-separated list of values;" + "for example: extensions=hpp,cpp\n" + f'This could not be parsed: "{val}"' + ) - Args: - directive: preprocessor directive (e.g. "if", "else"). - """ - # The name of the current section. - self._section = self._INITIAL_SECTION - # The path of last found header. - self._last_header = '' - # Update list of includes. Note that we never pop from the - # include list. - if directive in ('if', 'ifdef', 'ifndef'): - self.include_list.append([]) - elif directive in ('else', 'elif'): - self.include_list[-1] = [] +def GetNonHeaderExtensions(): + return GetAllExtensions().difference(GetHeaderExtensions()) - def SetLastHeader(self, header_path): - self._last_header = header_path - def CanonicalizeAlphabeticalOrder(self, header_path): - """Returns a path canonicalized for alphabetical comparison. +def ParseNolintSuppressions(filename, raw_line, linenum, error): + """Updates the global list of line error-suppressions. - - replaces "-" with "_" so they both cmp the same. - - removes '-inl' since we don't require them to be after the main header. - - lowercase everything, just in case. + Parses any NOLINT comments on the current line, updating the global + error_suppressions store. Reports an error if the NOLINT comment + was malformed. Args: - header_path: Path to be canonicalized. - - Returns: - Canonicalized path. + filename: str, the name of the input file. + raw_line: str, the line of input text, with comments. + linenum: int, the number of the current line. + error: function, an error handler. """ - return header_path.replace('-inl.h', '.h').replace('-', '_').lower() + if matched := re.search(r"\bNOLINT(NEXTLINE|BEGIN|END)?\b(\([^)]+\))?", raw_line): + no_lint_type = matched.group(1) + if no_lint_type == "NEXTLINE": + + def ProcessCategory(category): + _error_suppressions.AddLineSuppression(category, linenum + 1) + elif no_lint_type == "BEGIN": + if _error_suppressions.HasOpenBlock(): + error( + filename, + linenum, + "readability/nolint", + 5, + ( + "NONLINT block already defined on line " + f"{_error_suppressions.GetOpenBlockStart()}" + ), + ) + + def ProcessCategory(category): + _error_suppressions.StartBlockSuppression(category, linenum) + elif no_lint_type == "END": + if not _error_suppressions.HasOpenBlock(): + error(filename, linenum, "readability/nolint", 5, "Not in a NOLINT block") + + def ProcessCategory(category): + if category is not None: + error( + filename, + linenum, + "readability/nolint", + 5, + f"NOLINT categories not supported in block END: {category}", + ) + _error_suppressions.EndBlockSuppression(linenum) + else: - def IsInAlphabeticalOrder(self, clean_lines, linenum, header_path): - """Check if a header is in alphabetical order with the previous header. + def ProcessCategory(category): + _error_suppressions.AddLineSuppression(category, linenum) + + categories = matched.group(2) + if categories in (None, "(*)"): # => "suppress all" + ProcessCategory(None) + elif categories.startswith("(") and categories.endswith(")"): + for category in {c.strip() for c in categories[1:-1].split(",")}: + if category in _ERROR_CATEGORIES: + ProcessCategory(category) + elif any(c for c in _OTHER_NOLINT_CATEGORY_PREFIXES if category.startswith(c)): + # Ignore any categories from other tools. + pass + elif category not in _LEGACY_ERROR_CATEGORIES: + error( + filename, + linenum, + "readability/nolint", + 5, + f"Unknown NOLINT error category: {category}", + ) + + +def ProcessGlobalSuppressions(filename: str, lines: list[str]) -> None: + """Updates the list of global error suppressions. + + Parses any lint directives in the file that have global effect. Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - header_path: Canonicalized header to be checked. - - Returns: - Returns true if the header is in alphabetical order. + lines: An array of strings, each representing a line of the file, with the + last element being empty if the file is terminated with a newline. + filename: str, the name of the input file. """ - # If previous section is different from current section, _last_header will - # be reset to empty string, so it's always less than current header. - # - # If previous line was a blank line, assume that the headers are - # intentionally sorted the way they are. - if (self._last_header > header_path and - Match(r'^\s*#\s*include\b', clean_lines.elided[linenum - 1])): - return False - return True + for line in lines: + if _SEARCH_C_FILE.search(line) or filename.lower().endswith((".c", ".cu")): + for category in _DEFAULT_C_SUPPRESSED_CATEGORIES: + _error_suppressions.AddGlobalSuppression(category) + if _SEARCH_KERNEL_FILE.search(line): + for category in _DEFAULT_KERNEL_SUPPRESSED_CATEGORIES: + _error_suppressions.AddGlobalSuppression(category) + - def CheckNextIncludeOrder(self, header_type): - """Returns a non-empty error message if the next header is out of order. +def ResetNolintSuppressions(): + """Resets the set of NOLINT suppressions to empty.""" + _error_suppressions.Clear() - This function also updates the internal state to be ready to check - the next include. - Args: - header_type: One of the _XXX_HEADER constants defined above. +def IsErrorSuppressedByNolint(category, linenum): + """Returns true if the specified error category is suppressed on this line. - Returns: - The empty string if the header is in the right order, or an - error message describing what's wrong. + Consults the global error_suppressions map populated by + ParseNolintSuppressions/ProcessGlobalSuppressions/ResetNolintSuppressions. + Args: + category: str, the category of the error. + linenum: int, the current line number. + Returns: + bool, True iff the error should be suppressed due to a NOLINT comment, + block suppression or global suppression. """ - error_message = ('Found %s after %s' % - (self._TYPE_NAMES[header_type], - self._SECTION_NAMES[self._section])) - - last_section = self._section - - if header_type == _C_SYS_HEADER: - if self._section <= self._C_SECTION: - self._section = self._C_SECTION - else: - self._last_header = '' - return error_message - elif header_type == _CPP_SYS_HEADER: - if self._section <= self._CPP_SECTION: - self._section = self._CPP_SECTION - else: - self._last_header = '' - return error_message - elif header_type == _OTHER_SYS_HEADER: - if self._section <= self._OTHER_SYS_SECTION: - self._section = self._OTHER_SYS_SECTION - else: - self._last_header = '' - return error_message - elif header_type == _LIKELY_MY_HEADER: - if self._section <= self._MY_H_SECTION: - self._section = self._MY_H_SECTION - else: - self._section = self._OTHER_H_SECTION - elif header_type == _POSSIBLE_MY_HEADER: - if self._section <= self._MY_H_SECTION: - self._section = self._MY_H_SECTION - else: - # This will always be the fallback because we're not sure - # enough that the header is associated with this file. - self._section = self._OTHER_H_SECTION - else: - assert header_type == _OTHER_HEADER - self._section = self._OTHER_H_SECTION - - if last_section != self._section: - self._last_header = '' - - return '' - - -class _CppLintState(object): - """Maintains module-wide state..""" - - def __init__(self): - self.verbose_level = 1 # global setting. - self.error_count = 0 # global count of reported errors - # filters to apply when emitting error messages - self.filters = _DEFAULT_FILTERS[:] - # backup of filter list. Used to restore the state after each file. - self._filters_backup = self.filters[:] - self.counting = 'total' # In what way are we counting errors? - self.errors_by_category = {} # string to int dict storing error counts - self.quiet = False # Suppress non-error messagess? - - # output format: - # "emacs" - format that emacs can parse (default) - # "eclipse" - format that eclipse can parse - # "vs7" - format that Microsoft Visual Studio 7 can parse - # "junit" - format that Jenkins, Bamboo, etc can parse - # "sed" - returns a gnu sed command to fix the problem - # "gsed" - like sed, but names the command gsed, e.g. for macOS homebrew users - self.output_format = 'emacs' - - # For JUnit output, save errors and failures until the end so that they - # can be written into the XML - self._junit_errors = [] - self._junit_failures = [] - - def SetOutputFormat(self, output_format): - """Sets the output format for errors.""" - self.output_format = output_format - - def SetQuiet(self, quiet): - """Sets the module's quiet settings, and returns the previous setting.""" - last_quiet = self.quiet - self.quiet = quiet - return last_quiet - - def SetVerboseLevel(self, level): - """Sets the module's verbosity, and returns the previous setting.""" - last_verbose_level = self.verbose_level - self.verbose_level = level - return last_verbose_level + return _error_suppressions.IsSuppressed(category, linenum) - def SetCountingStyle(self, counting_style): - """Sets the module's counting options.""" - self.counting = counting_style - def SetFilters(self, filters): - """Sets the error-message filters. +def _IsSourceExtension(s): + """File extension (excluding dot) matches a source file extension.""" + return s in GetNonHeaderExtensions() - These filters are applied when deciding whether to emit a given - error message. - Args: - filters: A string of comma-separated filters (eg "+whitespace/indent"). - Each filter should start with + or -; else we die. +class _IncludeState: + """Tracks line numbers for includes, and the order in which includes appear. + + include_list contains list of lists of (header, line number) pairs. + It's a lists of lists rather than just one flat list to make it + easier to update across preprocessor boundaries. + + Call CheckNextIncludeOrder() once for each header in the file, passing + in the type constants defined above. Calls in an illegal order will + raise an _IncludeError with an appropriate error message. - Raises: - ValueError: The comma-separated filters did not all start with '+' or '-'. - E.g. "-,+whitespace,-whitespace/indent,whitespace/badfilter" """ - # Default filters always have less priority than the flag ones. - self.filters = _DEFAULT_FILTERS[:] - self.AddFilters(filters) - - def AddFilters(self, filters): - """ Adds more filters to the existing list of error-message filters. """ - for filt in filters.split(','): - clean_filt = filt.strip() - if clean_filt: - self.filters.append(clean_filt) - for filt in self.filters: - if not (filt.startswith('+') or filt.startswith('-')): - raise ValueError('Every filter in --filters must start with + or -' - ' (%s does not)' % filt) - - def BackupFilters(self): - """ Saves the current filter list to backup storage.""" - self._filters_backup = self.filters[:] - - def RestoreFilters(self): - """ Restores filters previously backed up.""" - self.filters = self._filters_backup[:] - - def ResetErrorCounts(self): - """Sets the module's error statistic back to zero.""" - self.error_count = 0 - self.errors_by_category = {} - - def IncrementErrorCount(self, category): - """Bumps the module's error statistic.""" - self.error_count += 1 - if self.counting in ('toplevel', 'detailed'): - if self.counting != 'detailed': - category = category.split('/')[0] - if category not in self.errors_by_category: - self.errors_by_category[category] = 0 - self.errors_by_category[category] += 1 - - def PrintErrorCounts(self): - """Print a summary of errors by category, and the total.""" - for category, count in sorted(iteritems(self.errors_by_category)): - self.PrintInfo('Category \'%s\' errors found: %d\n' % - (category, count)) - if self.error_count > 0: - self.PrintInfo('Total errors found: %d\n' % self.error_count) - - def PrintInfo(self, message): - # _quiet does not represent --quiet flag. - # Hide infos from stdout to keep stdout pure for machine consumption - if not _quiet and self.output_format not in _MACHINE_OUTPUTS: - sys.stdout.write(message) - - def PrintError(self, message): - if self.output_format == 'junit': - self._junit_errors.append(message) - else: - sys.stderr.write(message) - def AddJUnitFailure(self, filename, linenum, message, category, confidence): - self._junit_failures.append((filename, linenum, message, category, - confidence)) + # self._section will move monotonically through this set. If it ever + # needs to move backwards, CheckNextIncludeOrder will raise an error. + _INITIAL_SECTION = 0 + _MY_H_SECTION = 1 + _C_SECTION = 2 + _CPP_SECTION = 3 + _OTHER_SYS_SECTION = 4 + _OTHER_H_SECTION = 5 + + _TYPE_NAMES = { + _C_SYS_HEADER: "C system header", + _CPP_SYS_HEADER: "C++ system header", + _OTHER_SYS_HEADER: "other system header", + _LIKELY_MY_HEADER: "header this file implements", + _POSSIBLE_MY_HEADER: "header this file may implement", + _OTHER_HEADER: "other header", + } + _SECTION_NAMES = { + _INITIAL_SECTION: "... nothing. (This can't be an error.)", + _MY_H_SECTION: "a header this file implements", + _C_SECTION: "C system header", + _CPP_SECTION: "C++ system header", + _OTHER_SYS_SECTION: "other system header", + _OTHER_H_SECTION: "other header", + } + + def __init__(self): + self.include_list = [[]] + self._section = None + self._last_header = None + self.ResetSection("") + + def FindHeader(self, header): + """Check if a header has already been included. + + Args: + header: header to check. + Returns: + Line number of previous occurrence, or -1 if the header has not + been seen before. + """ + for section_list in self.include_list: + for f in section_list: + if f[0] == header: + return f[1] + return -1 + + def ResetSection(self, directive): + """Reset section checking for preprocessor directive. + + Args: + directive: preprocessor directive (e.g. "if", "else"). + """ + # The name of the current section. + self._section = self._INITIAL_SECTION + # The path of last found header. + self._last_header = "" + + # Update list of includes. Note that we never pop from the + # include list. + if directive in ("if", "ifdef", "ifndef"): + self.include_list.append([]) + elif directive in ("else", "elif"): + self.include_list[-1] = [] + + def SetLastHeader(self, header_path): + self._last_header = header_path + + def CanonicalizeAlphabeticalOrder(self, header_path): + """Returns a path canonicalized for alphabetical comparison. + + - replaces "-" with "_" so they both cmp the same. + - removes '-inl' since we don't require them to be after the main header. + - lowercase everything, just in case. + + Args: + header_path: Path to be canonicalized. + + Returns: + Canonicalized path. + """ + return header_path.replace("-inl.h", ".h").replace("-", "_").lower() + + def IsInAlphabeticalOrder(self, clean_lines, linenum, header_path): + """Check if a header is in alphabetical order with the previous header. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + header_path: Canonicalized header to be checked. + + Returns: + Returns true if the header is in alphabetical order. + """ + # If previous section is different from current section, _last_header will + # be reset to empty string, so it's always less than current header. + # + # If previous line was a blank line, assume that the headers are + # intentionally sorted the way they are. + return not ( + self._last_header > header_path + and re.match(r"^\s*#\s*include\b", clean_lines.elided[linenum - 1]) + ) + + def CheckNextIncludeOrder(self, header_type): + """Returns a non-empty error message if the next header is out of order. + + This function also updates the internal state to be ready to check + the next include. + + Args: + header_type: One of the _XXX_HEADER constants defined above. + + Returns: + The empty string if the header is in the right order, or an + error message describing what's wrong. + + """ + error_message = ( + f"Found {self._TYPE_NAMES[header_type]} after {self._SECTION_NAMES[self._section]}" + ) + + last_section = self._section + + if header_type == _C_SYS_HEADER: + if self._section <= self._C_SECTION: + self._section = self._C_SECTION + else: + self._last_header = "" + return error_message + elif header_type == _CPP_SYS_HEADER: + if self._section <= self._CPP_SECTION: + self._section = self._CPP_SECTION + else: + self._last_header = "" + return error_message + elif header_type == _OTHER_SYS_HEADER: + if self._section <= self._OTHER_SYS_SECTION: + self._section = self._OTHER_SYS_SECTION + else: + self._last_header = "" + return error_message + elif header_type == _LIKELY_MY_HEADER: + if self._section <= self._MY_H_SECTION: + self._section = self._MY_H_SECTION + else: + self._section = self._OTHER_H_SECTION + elif header_type == _POSSIBLE_MY_HEADER: + if self._section <= self._MY_H_SECTION: + self._section = self._MY_H_SECTION + else: + # This will always be the fallback because we're not sure + # enough that the header is associated with this file. + self._section = self._OTHER_H_SECTION + else: + assert header_type == _OTHER_HEADER + self._section = self._OTHER_H_SECTION + + if last_section != self._section: + self._last_header = "" + + return "" + + +class _CppLintState: + """Maintains module-wide state..""" + + def __init__(self): + self.verbose_level = 1 # global setting. + self.error_count = 0 # global count of reported errors + # filters to apply when emitting error messages + self.filters = _DEFAULT_FILTERS[:] + # backup of filter list. Used to restore the state after each file. + self._filters_backup = self.filters[:] + self.counting = "total" # In what way are we counting errors? + self.errors_by_category = {} # string to int dict storing error counts + self.quiet = False # Suppress non-error messages? + + # output format: + # "emacs" - format that emacs can parse (default) + # "eclipse" - format that eclipse can parse + # "vs7" - format that Microsoft Visual Studio 7 can parse + # "junit" - format that Jenkins, Bamboo, etc can parse + # "sed" - returns a gnu sed command to fix the problem + # "gsed" - like sed, but names the command gsed, e.g. for macOS homebrew users + self.output_format = "emacs" + + # For JUnit output, save errors and failures until the end so that they + # can be written into the XML + self._junit_errors = [] + self._junit_failures = [] + + def SetOutputFormat(self, output_format): + """Sets the output format for errors.""" + self.output_format = output_format + + def SetQuiet(self, quiet): + """Sets the module's quiet settings, and returns the previous setting.""" + last_quiet = self.quiet + self.quiet = quiet + return last_quiet + + def SetVerboseLevel(self, level): + """Sets the module's verbosity, and returns the previous setting.""" + last_verbose_level = self.verbose_level + self.verbose_level = level + return last_verbose_level + + def SetCountingStyle(self, counting_style): + """Sets the module's counting options.""" + self.counting = counting_style + + def SetFilters(self, filters): + """Sets the error-message filters. + + These filters are applied when deciding whether to emit a given + error message. + + Args: + filters: A string of comma-separated filters (eg "+whitespace/indent"). + Each filter should start with + or -; else we die. + + Raises: + ValueError: The comma-separated filters did not all start with '+' or '-'. + E.g. "-,+whitespace,-whitespace/indent,whitespace/badfilter" + """ + # Default filters always have less priority than the flag ones. + self.filters = _DEFAULT_FILTERS[:] + self.AddFilters(filters) + + def AddFilters(self, filters): + """Adds more filters to the existing list of error-message filters.""" + for filt in filters.split(","): + clean_filt = filt.strip() + if clean_filt: + if len(clean_filt) > 1 and clean_filt[1:] in _FILTER_SHORTCUTS: + starting_char = clean_filt[0] + new_filters = [starting_char + x for x in _FILTER_SHORTCUTS[clean_filt[1:]]] + self.filters.extend(new_filters) + else: + self.filters.append(clean_filt) + for filt in self.filters: + if not filt.startswith(("+", "-")): + msg = f"Every filter in --filters must start with + or - ({filt} does not)" + raise ValueError(msg) + + def BackupFilters(self): + """Saves the current filter list to backup storage.""" + self._filters_backup = self.filters[:] + + def RestoreFilters(self): + """Restores filters previously backed up.""" + self.filters = self._filters_backup[:] + + def ResetErrorCounts(self): + """Sets the module's error statistic back to zero.""" + self.error_count = 0 + self.errors_by_category = {} + + def IncrementErrorCount(self, category): + """Bumps the module's error statistic.""" + self.error_count += 1 + if self.counting in ("toplevel", "detailed"): + if self.counting != "detailed": + category = category.split("/")[0] + if category not in self.errors_by_category: + self.errors_by_category[category] = 0 + self.errors_by_category[category] += 1 + + def PrintErrorCounts(self): + """Print a summary of errors by category, and the total.""" + for category, count in sorted(dict.items(self.errors_by_category)): + self.PrintInfo(f"Category '{category}' errors found: {count}\n") + if self.error_count > 0: + self.PrintInfo(f"Total errors found: {self.error_count}\n") + + def PrintInfo(self, message): + # _quiet does not represent --quiet flag. + # Hide infos from stdout to keep stdout pure for machine consumption + if not _quiet and self.output_format not in _MACHINE_OUTPUTS: + sys.stdout.write(message) + + def PrintError(self, message): + if self.output_format == "junit": + self._junit_errors.append(message) + else: + sys.stderr.write(message) - def FormatJUnitXML(self): - num_errors = len(self._junit_errors) - num_failures = len(self._junit_failures) + def AddJUnitFailure(self, filename, linenum, message, category, confidence): + self._junit_failures.append((filename, linenum, message, category, confidence)) - testsuite = xml.etree.ElementTree.Element('testsuite') - testsuite.attrib['errors'] = str(num_errors) - testsuite.attrib['failures'] = str(num_failures) - testsuite.attrib['name'] = 'cpplint' + def FormatJUnitXML(self): + num_errors = len(self._junit_errors) + num_failures = len(self._junit_failures) - if num_errors == 0 and num_failures == 0: - testsuite.attrib['tests'] = str(1) - xml.etree.ElementTree.SubElement(testsuite, 'testcase', name='passed') + testsuite = xml.etree.ElementTree.Element("testsuite") + testsuite.attrib["errors"] = str(num_errors) + testsuite.attrib["failures"] = str(num_failures) + testsuite.attrib["name"] = "cpplint" - else: - testsuite.attrib['tests'] = str(num_errors + num_failures) - if num_errors > 0: - testcase = xml.etree.ElementTree.SubElement(testsuite, 'testcase') - testcase.attrib['name'] = 'errors' - error = xml.etree.ElementTree.SubElement(testcase, 'error') - error.text = '\n'.join(self._junit_errors) - if num_failures > 0: - # Group failures by file - failed_file_order = [] - failures_by_file = {} - for failure in self._junit_failures: - failed_file = failure[0] - if failed_file not in failed_file_order: - failed_file_order.append(failed_file) - failures_by_file[failed_file] = [] - failures_by_file[failed_file].append(failure) - # Create a testcase for each file - for failed_file in failed_file_order: - failures = failures_by_file[failed_file] - testcase = xml.etree.ElementTree.SubElement(testsuite, 'testcase') - testcase.attrib['name'] = failed_file - failure = xml.etree.ElementTree.SubElement(testcase, 'failure') - template = '{0}: {1} [{2}] [{3}]' - texts = [template.format(f[1], f[2], f[3], f[4]) for f in failures] - failure.text = '\n'.join(texts) - - xml_decl = '\n' - return xml_decl + xml.etree.ElementTree.tostring(testsuite, 'utf-8').decode('utf-8') + if num_errors == 0 and num_failures == 0: + testsuite.attrib["tests"] = str(1) + xml.etree.ElementTree.SubElement(testsuite, "testcase", name="passed") + + else: + testsuite.attrib["tests"] = str(num_errors + num_failures) + if num_errors > 0: + testcase = xml.etree.ElementTree.SubElement(testsuite, "testcase") + testcase.attrib["name"] = "errors" + error = xml.etree.ElementTree.SubElement(testcase, "error") + error.text = "\n".join(self._junit_errors) + if num_failures > 0: + # Group failures by file + failed_file_order = [] + failures_by_file = {} + for failure in self._junit_failures: + failed_file = failure[0] + if failed_file not in failed_file_order: + failed_file_order.append(failed_file) + failures_by_file[failed_file] = [] + failures_by_file[failed_file].append(failure) + # Create a testcase for each file + for failed_file in failed_file_order: + failures = failures_by_file[failed_file] + testcase = xml.etree.ElementTree.SubElement(testsuite, "testcase") + testcase.attrib["name"] = failed_file + failure = xml.etree.ElementTree.SubElement(testcase, "failure") + template = "{0}: {1} [{2}] [{3}]" + texts = [template.format(f[1], f[2], f[3], f[4]) for f in failures] + failure.text = "\n".join(texts) + + xml_decl = '\n' + return xml_decl + xml.etree.ElementTree.tostring(testsuite, "utf-8").decode("utf-8") _cpplint_state = _CppLintState() def _OutputFormat(): - """Gets the module's output format.""" - return _cpplint_state.output_format + """Gets the module's output format.""" + return _cpplint_state.output_format def _SetOutputFormat(output_format): - """Sets the module's output format.""" - _cpplint_state.SetOutputFormat(output_format) + """Sets the module's output format.""" + _cpplint_state.SetOutputFormat(output_format) + def _Quiet(): - """Return's the module's quiet setting.""" - return _cpplint_state.quiet + """Return's the module's quiet setting.""" + return _cpplint_state.quiet + def _SetQuiet(quiet): - """Set the module's quiet status, and return previous setting.""" - return _cpplint_state.SetQuiet(quiet) + """Set the module's quiet status, and return previous setting.""" + return _cpplint_state.SetQuiet(quiet) def _VerboseLevel(): - """Returns the module's verbosity setting.""" - return _cpplint_state.verbose_level + """Returns the module's verbosity setting.""" + return _cpplint_state.verbose_level def _SetVerboseLevel(level): - """Sets the module's verbosity, and returns the previous setting.""" - return _cpplint_state.SetVerboseLevel(level) + """Sets the module's verbosity, and returns the previous setting.""" + return _cpplint_state.SetVerboseLevel(level) def _SetCountingStyle(level): - """Sets the module's counting options.""" - _cpplint_state.SetCountingStyle(level) + """Sets the module's counting options.""" + _cpplint_state.SetCountingStyle(level) def _Filters(): - """Returns the module's list of output filters, as a list.""" - return _cpplint_state.filters + """Returns the module's list of output filters, as a list.""" + return _cpplint_state.filters def _SetFilters(filters): - """Sets the module's error-message filters. - - These filters are applied when deciding whether to emit a given - error message. - - Args: - filters: A string of comma-separated filters (eg "whitespace/indent"). - Each filter should start with + or -; else we die. - """ - _cpplint_state.SetFilters(filters) + """Sets the module's error-message filters. -def _AddFilters(filters): - """Adds more filter overrides. - - Unlike _SetFilters, this function does not reset the current list of filters - available. - - Args: - filters: A string of comma-separated filters (eg "whitespace/indent"). - Each filter should start with + or -; else we die. - """ - _cpplint_state.AddFilters(filters) - -def _BackupFilters(): - """ Saves the current filter list to backup storage.""" - _cpplint_state.BackupFilters() - -def _RestoreFilters(): - """ Restores filters previously backed up.""" - _cpplint_state.RestoreFilters() + These filters are applied when deciding whether to emit a given + error message. -class _FunctionState(object): - """Tracks current function name and the number of lines in its body.""" + Args: + filters: A string of comma-separated filters (eg "whitespace/indent"). + Each filter should start with + or -; else we die. + """ + _cpplint_state.SetFilters(filters) - _NORMAL_TRIGGER = 250 # for --v=0, 500 for --v=1, etc. - _TEST_TRIGGER = 400 # about 50% more than _NORMAL_TRIGGER. - def __init__(self): - self.in_a_function = False - self.lines_in_function = 0 - self.current_function = '' +def _AddFilters(filters): + """Adds more filter overrides. - def Begin(self, function_name): - """Start analyzing function body. + Unlike _SetFilters, this function does not reset the current list of filters + available. Args: - function_name: The name of the function being tracked. + filters: A string of comma-separated filters (eg "whitespace/indent"). + Each filter should start with + or -; else we die. """ - self.in_a_function = True - self.lines_in_function = 0 - self.current_function = function_name + _cpplint_state.AddFilters(filters) - def Count(self): - """Count line in current function body.""" - if self.in_a_function: - self.lines_in_function += 1 - def Check(self, error, filename, linenum): - """Report if too many lines in function body. +def _BackupFilters(): + """Saves the current filter list to backup storage.""" + _cpplint_state.BackupFilters() - Args: - error: The function to call with any errors found. - filename: The name of the current file. - linenum: The number of the line to check. - """ - if not self.in_a_function: - return - if Match(r'T(EST|est)', self.current_function): - base_trigger = self._TEST_TRIGGER - else: - base_trigger = self._NORMAL_TRIGGER - trigger = base_trigger * 2**_VerboseLevel() +def _RestoreFilters(): + """Restores filters previously backed up.""" + _cpplint_state.RestoreFilters() - if self.lines_in_function > trigger: - error_level = int(math.log(self.lines_in_function / base_trigger, 2)) - # 50 => 0, 100 => 1, 200 => 2, 400 => 3, 800 => 4, 1600 => 5, ... - if error_level > 5: - error_level = 5 - error(filename, linenum, 'readability/fn_size', error_level, - 'Small and focused functions are preferred:' - ' %s has %d non-comment lines' - ' (error triggered by exceeding %d lines).' % ( - self.current_function, self.lines_in_function, trigger)) - def End(self): - """Stop analyzing function body.""" - self.in_a_function = False +class _FunctionState: + """Tracks current function name and the number of lines in its body.""" + _NORMAL_TRIGGER = 250 # for --v=0, 500 for --v=1, etc. + _TEST_TRIGGER = 400 # about 50% more than _NORMAL_TRIGGER. -class _IncludeError(Exception): - """Indicates a problem with the include order in a file.""" - pass + def __init__(self): + self.in_a_function = False + self.lines_in_function = 0 + self.current_function = "" + def Begin(self, function_name): + """Start analyzing function body. -class FileInfo(object): - """Provides utility functions for filenames. + Args: + function_name: The name of the function being tracked. + """ + self.in_a_function = True + self.lines_in_function = 0 + self.current_function = function_name - FileInfo provides easy access to the components of a file's path - relative to the project root. - """ + def Count(self): + """Count line in current function body.""" + if self.in_a_function: + self.lines_in_function += 1 - def __init__(self, filename): - self._filename = filename + def Check(self, error, filename, linenum): + """Report if too many lines in function body. - def FullName(self): - """Make Windows paths like Unix.""" - return os.path.abspath(self._filename).replace('\\', '/') + Args: + error: The function to call with any errors found. + filename: The name of the current file. + linenum: The number of the line to check. + """ + if not self.in_a_function: + return - def RepositoryName(self): - r"""FullName after removing the local path to the repository. + if re.match(r"T(EST|est)", self.current_function): + base_trigger = self._TEST_TRIGGER + else: + base_trigger = self._NORMAL_TRIGGER + trigger = base_trigger * 2 ** _VerboseLevel() + + if self.lines_in_function > trigger: + error_level = int(math.log2(self.lines_in_function / base_trigger)) + # 50 => 0, 100 => 1, 200 => 2, 400 => 3, 800 => 4, 1600 => 5, ... + error_level = min(error_level, 5) + error( + filename, + linenum, + "readability/fn_size", + error_level, + "Small and focused functions are preferred:" + f" {self.current_function} has {self.lines_in_function} non-comment lines" + f" (error triggered by exceeding {trigger} lines).", + ) + + def End(self): + """Stop analyzing function body.""" + self.in_a_function = False - If we have a real absolute path name here we can try to do something smart: - detecting the root of the checkout and truncating /path/to/checkout from - the name so that we get header guards that don't include things like - "C:\\Documents and Settings\\..." or "/home/username/..." in them and thus - people on different computers who have checked the source out to different - locations won't see bogus errors. - """ - fullname = self.FullName() - - if os.path.exists(fullname): - project_dir = os.path.dirname(fullname) - - # If the user specified a repository path, it exists, and the file is - # contained in it, use the specified repository path - if _repository: - repo = FileInfo(_repository).FullName() - root_dir = project_dir - while os.path.exists(root_dir): - # allow case insensitive compare on Windows - if os.path.normcase(root_dir) == os.path.normcase(repo): - return os.path.relpath(fullname, root_dir).replace('\\', '/') - one_up_dir = os.path.dirname(root_dir) - if one_up_dir == root_dir: - break - root_dir = one_up_dir - - if os.path.exists(os.path.join(project_dir, ".svn")): - # If there's a .svn file in the current directory, we recursively look - # up the directory tree for the top of the SVN checkout - root_dir = project_dir - one_up_dir = os.path.dirname(root_dir) - while os.path.exists(os.path.join(one_up_dir, ".svn")): - root_dir = os.path.dirname(root_dir) - one_up_dir = os.path.dirname(one_up_dir) - - prefix = os.path.commonprefix([root_dir, project_dir]) - return fullname[len(prefix) + 1:] - - # Not SVN <= 1.6? Try to find a git, hg, or svn top level directory by - # searching up from the current path. - root_dir = current_dir = os.path.dirname(fullname) - while current_dir != os.path.dirname(current_dir): - if (os.path.exists(os.path.join(current_dir, ".git")) or - os.path.exists(os.path.join(current_dir, ".hg")) or - os.path.exists(os.path.join(current_dir, ".svn"))): - root_dir = current_dir - current_dir = os.path.dirname(current_dir) - - if (os.path.exists(os.path.join(root_dir, ".git")) or - os.path.exists(os.path.join(root_dir, ".hg")) or - os.path.exists(os.path.join(root_dir, ".svn"))): - prefix = os.path.commonprefix([root_dir, project_dir]) - return fullname[len(prefix) + 1:] - - # Don't know what to do; header guard warnings may be wrong... - return fullname - - def Split(self): - """Splits the file into the directory, basename, and extension. - - For 'chrome/browser/browser.cc', Split() would - return ('chrome/browser', 'browser', '.cc') - Returns: - A tuple of (directory, basename, extension). - """ +class _IncludeError(Exception): + """Indicates a problem with the include order in a file.""" - googlename = self.RepositoryName() - project, rest = os.path.split(googlename) - return (project,) + os.path.splitext(rest) + pass - def BaseName(self): - """File base name - text after the final slash, before the final period.""" - return self.Split()[1] - def Extension(self): - """File extension - text following the final period, includes that period.""" - return self.Split()[2] +class FileInfo: + """Provides utility functions for filenames. - def NoExtension(self): - """File has no source file extension.""" - return '/'.join(self.Split()[0:2]) + FileInfo provides easy access to the components of a file's path + relative to the project root. + """ - def IsSource(self): - """File has a source file extension.""" - return _IsSourceExtension(self.Extension()[1:]) + def __init__(self, filename): + self._filename = filename + + def FullName(self): + """Make Windows paths like Unix.""" + return os.path.abspath(self._filename).replace("\\", "/") + + def RepositoryName(self): + r"""FullName after removing the local path to the repository. + + If we have a real absolute path name here we can try to do something smart: + detecting the root of the checkout and truncating /path/to/checkout from + the name so that we get header guards that don't include things like + "C:\\Documents and Settings\\..." or "/home/username/..." in them and thus + people on different computers who have checked the source out to different + locations won't see bogus errors. + """ + fullname = self.FullName() + + if os.path.exists(fullname): + project_dir = os.path.dirname(fullname) + + # If the user specified a repository path, it exists, and the file is + # contained in it, use the specified repository path + if _repository: + repo = FileInfo(_repository).FullName() + root_dir = project_dir + while os.path.exists(root_dir): + # allow case insensitive compare on Windows + if os.path.normcase(root_dir) == os.path.normcase(repo): + return os.path.relpath(fullname, root_dir).replace("\\", "/") + one_up_dir = os.path.dirname(root_dir) + if one_up_dir == root_dir: + break + root_dir = one_up_dir + + if os.path.exists(os.path.join(project_dir, ".svn")): + # If there's a .svn file in the current directory, we recursively look + # up the directory tree for the top of the SVN checkout + root_dir = project_dir + one_up_dir = os.path.dirname(root_dir) + while os.path.exists(os.path.join(one_up_dir, ".svn")): + root_dir = os.path.dirname(root_dir) + one_up_dir = os.path.dirname(one_up_dir) + + prefix = os.path.commonprefix([root_dir, project_dir]) + return fullname[len(prefix) + 1 :] + + # Not SVN <= 1.6? Try to find a git, hg, or svn top level directory by + # searching up from the current path. + root_dir = current_dir = os.path.dirname(fullname) + while current_dir != os.path.dirname(current_dir): + if ( + os.path.exists(os.path.join(current_dir, ".git")) + or os.path.exists(os.path.join(current_dir, ".hg")) + or os.path.exists(os.path.join(current_dir, ".svn")) + ): + root_dir = current_dir + break + current_dir = os.path.dirname(current_dir) + + if ( + os.path.exists(os.path.join(root_dir, ".git")) + or os.path.exists(os.path.join(root_dir, ".hg")) + or os.path.exists(os.path.join(root_dir, ".svn")) + ): + prefix = os.path.commonprefix([root_dir, project_dir]) + return fullname[len(prefix) + 1 :] + + # Don't know what to do; header guard warnings may be wrong... + return fullname + + def Split(self): + """Splits the file into the directory, basename, and extension. + + For 'chrome/browser/browser.cc', Split() would + return ('chrome/browser', 'browser', '.cc') + + Returns: + A tuple of (directory, basename, extension). + """ + + googlename = self.RepositoryName() + project, rest = os.path.split(googlename) + return (project,) + os.path.splitext(rest) + + def BaseName(self): + """File base name - text after the final slash, before the final period.""" + return self.Split()[1] + + def Extension(self): + """File extension - text following the final period, includes that period.""" + return self.Split()[2] + + def NoExtension(self): + """File has no source file extension.""" + return "/".join(self.Split()[0:2]) + + def IsSource(self): + """File has a source file extension.""" + return _IsSourceExtension(self.Extension()[1:]) + + +def _ShouldPrintError(category, confidence, filename, linenum): + """If confidence >= verbose, category passes filter and is not suppressed.""" + + # There are three ways we might decide not to print an error message: + # a "NOLINT(category)" comment appears in the source, + # the verbosity level isn't high enough, or the filters filter it out. + if IsErrorSuppressedByNolint(category, linenum): + return False + if confidence < _cpplint_state.verbose_level: + return False -def _ShouldPrintError(category, confidence, linenum): - """If confidence >= verbose, category passes filter and is not suppressed.""" + is_filtered = False + for one_filter in _Filters(): + filter_cat, filter_file, filter_line = _ParseFilterSelector(one_filter[1:]) + category_match = category.startswith(filter_cat) + file_match = filter_file in ("", filename) + line_match = filter_line in (linenum, -1) + + if one_filter.startswith("-"): + if category_match and file_match and line_match: + is_filtered = True + elif one_filter.startswith("+"): + if category_match and file_match and line_match: + is_filtered = False + else: + # should have been checked for in SetFilter. + msg = f"Invalid filter: {one_filter}" + raise ValueError(msg) + return not is_filtered - # There are three ways we might decide not to print an error message: - # a "NOLINT(category)" comment appears in the source, - # the verbosity level isn't high enough, or the filters filter it out. - if IsErrorSuppressedByNolint(category, linenum): - return False - if confidence < _cpplint_state.verbose_level: - return False +def Error(filename, linenum, category, confidence, message): + """Logs the fact we've found a lint error. - is_filtered = False - for one_filter in _Filters(): - if one_filter.startswith('-'): - if category.startswith(one_filter[1:]): - is_filtered = True - elif one_filter.startswith('+'): - if category.startswith(one_filter[1:]): - is_filtered = False - else: - assert False # should have been checked for in SetFilter. - if is_filtered: - return False + We log where the error was found, and also our confidence in the error, + that is, how certain we are this is a legitimate style regression, and + not a misidentification or a use that's sometimes justified. - return True + False positives can be suppressed by the use of "NOLINT(category)" + comments, NOLINTNEXTLINE or in blocks started by NOLINTBEGIN. These + are parsed into _error_suppressions. + Args: + filename: The name of the file containing the error. + linenum: The number of the line containing the error. + category: A string used to describe the "category" this bug + falls under: "whitespace", say, or "runtime". Categories + may have a hierarchy separated by slashes: "whitespace/indent". + confidence: A number from 1-5 representing a confidence score for + the error, with 5 meaning that we are certain of the problem, + and 1 meaning that it could be a legitimate construct. + message: The error message. + """ + if _ShouldPrintError(category, confidence, filename, linenum): + _cpplint_state.IncrementErrorCount(category) + if _cpplint_state.output_format == "vs7": + _cpplint_state.PrintError( + f"{filename}({linenum}): error cpplint: [{category}] {message} [{confidence}]\n" + ) + elif _cpplint_state.output_format == "eclipse": + sys.stderr.write( + f"{filename}:{linenum}: warning: {message} [{category}] [{confidence}]\n" + ) + elif _cpplint_state.output_format == "junit": + _cpplint_state.AddJUnitFailure(filename, linenum, message, category, confidence) + elif _cpplint_state.output_format in ["sed", "gsed"]: + if message in _SED_FIXUPS: + sys.stdout.write( + f"{_cpplint_state.output_format} -i" + f" '{linenum}{_SED_FIXUPS[message]}' {filename}" + f" # {message} [{category}] [{confidence}]\n" + ) + else: + sys.stderr.write( + f'# {filename}:{linenum}: "{message}" [{category}] [{confidence}]\n' + ) + else: + final_message = f"{filename}:{linenum}: {message} [{category}] [{confidence}]\n" + sys.stderr.write(final_message) -def Error(filename, linenum, category, confidence, message): - """Logs the fact we've found a lint error. - - We log where the error was found, and also our confidence in the error, - that is, how certain we are this is a legitimate style regression, and - not a misidentification or a use that's sometimes justified. - - False positives can be suppressed by the use of - "cpplint(category)" comments on the offending line. These are - parsed into _error_suppressions. - - Args: - filename: The name of the file containing the error. - linenum: The number of the line containing the error. - category: A string used to describe the "category" this bug - falls under: "whitespace", say, or "runtime". Categories - may have a hierarchy separated by slashes: "whitespace/indent". - confidence: A number from 1-5 representing a confidence score for - the error, with 5 meaning that we are certain of the problem, - and 1 meaning that it could be a legitimate construct. - message: The error message. - """ - if _ShouldPrintError(category, confidence, linenum): - _cpplint_state.IncrementErrorCount(category) - if _cpplint_state.output_format == 'vs7': - _cpplint_state.PrintError('%s(%s): error cpplint: [%s] %s [%d]\n' % ( - filename, linenum, category, message, confidence)) - elif _cpplint_state.output_format == 'eclipse': - sys.stderr.write('%s:%s: warning: %s [%s] [%d]\n' % ( - filename, linenum, message, category, confidence)) - elif _cpplint_state.output_format == 'junit': - _cpplint_state.AddJUnitFailure(filename, linenum, message, category, - confidence) - elif _cpplint_state.output_format in ['sed', 'gsed']: - if message in _SED_FIXUPS: - sys.stdout.write(_cpplint_state.output_format + " -i '%s%s' %s # %s [%s] [%d]\n" % ( - linenum, _SED_FIXUPS[message], filename, message, category, confidence)) - else: - sys.stderr.write('# %s:%s: "%s" [%s] [%d]\n' % ( - filename, linenum, message, category, confidence)) - else: - final_message = '%s:%s: %s [%s] [%d]\n' % ( - filename, linenum, message, category, confidence) - sys.stderr.write(final_message) # Matches standard C++ escape sequences per 2.13.2.3 of the C++ standard. -_RE_PATTERN_CLEANSE_LINE_ESCAPES = re.compile( - r'\\([abfnrtv?"\\\']|\d+|x[0-9a-fA-F]+)') +_RE_PATTERN_CLEANSE_LINE_ESCAPES = re.compile(r'\\([abfnrtv?"\\\']|\d+|x[0-9a-fA-F]+)') # Match a single C style comment on the same line. -_RE_PATTERN_C_COMMENTS = r'/\*(?:[^*]|\*(?!/))*\*/' +_RE_PATTERN_C_COMMENTS = r"/\*(?:[^*]|\*(?!/))*\*/" # Matches multi-line C style comments. # This RE is a little bit more complicated than one might expect, because we # have to take care of space removals tools so we can handle comments inside @@ -1796,858 +1939,930 @@ def Error(filename, linenum, category, confidence, message): # if this doesn't work we try on left side but only if there's a non-character # on the right. _RE_PATTERN_CLEANSE_LINE_C_COMMENTS = re.compile( - r'(\s*' + _RE_PATTERN_C_COMMENTS + r'\s*$|' + - _RE_PATTERN_C_COMMENTS + r'\s+|' + - r'\s+' + _RE_PATTERN_C_COMMENTS + r'(?=\W)|' + - _RE_PATTERN_C_COMMENTS + r')') + r"(\s*" + + _RE_PATTERN_C_COMMENTS + + r"\s*$|" + + _RE_PATTERN_C_COMMENTS + + r"\s+|" + + r"\s+" + + _RE_PATTERN_C_COMMENTS + + r"(?=\W)|" + + _RE_PATTERN_C_COMMENTS + + r")" +) def IsCppString(line): - """Does line terminate so, that the next symbol is in string constant. + """Does line terminate so, that the next symbol is in string constant. - This function does not consider single-line nor multi-line comments. + This function does not consider single-line nor multi-line comments. - Args: - line: is a partial line of code starting from the 0..n. + Args: + line: is a partial line of code starting from the 0..n. - Returns: - True, if next character appended to 'line' is inside a - string constant. - """ + Returns: + True, if next character appended to 'line' is inside a + string constant. + """ - line = line.replace(r'\\', 'XX') # after this, \\" does not match to \" - return ((line.count('"') - line.count(r'\"') - line.count("'\"'")) & 1) == 1 + line = line.replace(r"\\", "XX") # after this, \\" does not match to \" + return ((line.count('"') - line.count(r"\"") - line.count("'\"'")) & 1) == 1 def CleanseRawStrings(raw_lines): - """Removes C++11 raw strings from lines. - - Before: - static const char kData[] = R"( - multi-line string - )"; - - After: - static const char kData[] = "" - (replaced by blank line) - ""; - - Args: - raw_lines: list of raw lines. - - Returns: - list of lines with C++11 raw strings replaced by empty strings. - """ - - delimiter = None - lines_without_raw_strings = [] - for line in raw_lines: - if delimiter: - # Inside a raw string, look for the end - end = line.find(delimiter) - if end >= 0: - # Found the end of the string, match leading space for this - # line and resume copying the original lines, and also insert - # a "" on the last line. - leading_space = Match(r'^(\s*)\S', line) - line = leading_space.group(1) + '""' + line[end + len(delimiter):] - delimiter = None - else: - # Haven't found the end yet, append a blank line. - line = '""' - - # Look for beginning of a raw string, and replace them with - # empty strings. This is done in a loop to handle multiple raw - # strings on the same line. - while delimiter is None: - # Look for beginning of a raw string. - # See 2.14.15 [lex.string] for syntax. - # - # Once we have matched a raw string, we check the prefix of the - # line to make sure that the line is not part of a single line - # comment. It's done this way because we remove raw strings - # before removing comments as opposed to removing comments - # before removing raw strings. This is because there are some - # cpplint checks that requires the comments to be preserved, but - # we don't want to check comments that are inside raw strings. - matched = Match(r'^(.*?)\b(?:R|u8R|uR|UR|LR)"([^\s\\()]*)\((.*)$', line) - if (matched and - not Match(r'^([^\'"]|\'(\\.|[^\'])*\'|"(\\.|[^"])*")*//', - matched.group(1))): - delimiter = ')' + matched.group(2) + '"' - - end = matched.group(3).find(delimiter) - if end >= 0: - # Raw string ended on same line - line = (matched.group(1) + '""' + - matched.group(3)[end + len(delimiter):]) - delimiter = None - else: - # Start of a multi-line raw string - line = matched.group(1) + '""' - else: - break + """Removes C++11 raw strings from lines. + + Before: + static const char kData[] = R"( + multi-line string + )"; + + After: + static const char kData[] = "" + (replaced by blank line) + ""; + + Args: + raw_lines: list of raw lines. - lines_without_raw_strings.append(line) + Returns: + list of lines with C++11 raw strings replaced by empty strings. + """ - # TODO(unknown): if delimiter is not None here, we might want to - # emit a warning for unterminated string. - return lines_without_raw_strings + delimiter = None + lines_without_raw_strings = [] + for line in raw_lines: + if delimiter: + # Inside a raw string, look for the end + end = line.find(delimiter) + if end >= 0: + # Found the end of the string, match leading space for this + # line and resume copying the original lines, and also insert + # a "" on the last line. + leading_space = re.match(r"^(\s*)\S", line) + line = leading_space.group(1) + '""' + line[end + len(delimiter) :] + delimiter = None + else: + # Haven't found the end yet, append a blank line. + line = '""' + + # Look for beginning of a raw string, and replace them with + # empty strings. This is done in a loop to handle multiple raw + # strings on the same line. + while delimiter is None: + # Look for beginning of a raw string. + # See 2.14.15 [lex.string] for syntax. + # + # Once we have matched a raw string, we check the prefix of the + # line to make sure that the line is not part of a single line + # comment. It's done this way because we remove raw strings + # before removing comments as opposed to removing comments + # before removing raw strings. This is because there are some + # cpplint checks that requires the comments to be preserved, but + # we don't want to check comments that are inside raw strings. + matched = re.match(r'^(.*?)\b(?:R|u8R|uR|UR|LR)"([^\s\\()]*)\((.*)$', line) + if matched and not re.match( + r'^([^\'"]|\'(\\.|[^\'])*\'|"(\\.|[^"])*")*//', matched.group(1) + ): + delimiter = ")" + matched.group(2) + '"' + + end = matched.group(3).find(delimiter) + if end >= 0: + # Raw string ended on same line + line = matched.group(1) + '""' + matched.group(3)[end + len(delimiter) :] + delimiter = None + else: + # Start of a multi-line raw string + line = matched.group(1) + '""' + else: + break + + lines_without_raw_strings.append(line) + + # TODO(google): if delimiter is not None here, we might want to + # emit a warning for unterminated string. + return lines_without_raw_strings def FindNextMultiLineCommentStart(lines, lineix): - """Find the beginning marker for a multiline comment.""" - while lineix < len(lines): - if lines[lineix].strip().startswith('/*'): - # Only return this marker if the comment goes beyond this line - if lines[lineix].strip().find('*/', 2) < 0: - return lineix - lineix += 1 - return len(lines) + """Find the beginning marker for a multiline comment.""" + while lineix < len(lines): + if lines[lineix].strip().startswith("/*"): + # Only return this marker if the comment goes beyond this line + if lines[lineix].strip().find("*/", 2) < 0: + return lineix + lineix += 1 + return len(lines) def FindNextMultiLineCommentEnd(lines, lineix): - """We are inside a comment, find the end marker.""" - while lineix < len(lines): - if lines[lineix].strip().endswith('*/'): - return lineix - lineix += 1 - return len(lines) + """We are inside a comment, find the end marker.""" + while lineix < len(lines): + if lines[lineix].strip().endswith("*/"): + return lineix + lineix += 1 + return len(lines) def RemoveMultiLineCommentsFromRange(lines, begin, end): - """Clears a range of lines for multi-line comments.""" - # Having // comments makes the lines non-empty, so we will not get - # unnecessary blank line warnings later in the code. - for i in range(begin, end): - lines[i] = '/**/' + """Clears a range of lines for multi-line comments.""" + # Having // comments makes the lines non-empty, so we will not get + # unnecessary blank line warnings later in the code. + for i in range(begin, end): + lines[i] = "/**/" def RemoveMultiLineComments(filename, lines, error): - """Removes multiline (c-style) comments from lines.""" - lineix = 0 - while lineix < len(lines): - lineix_begin = FindNextMultiLineCommentStart(lines, lineix) - if lineix_begin >= len(lines): - return - lineix_end = FindNextMultiLineCommentEnd(lines, lineix_begin) - if lineix_end >= len(lines): - error(filename, lineix_begin + 1, 'readability/multiline_comment', 5, - 'Could not find end of multi-line comment') - return - RemoveMultiLineCommentsFromRange(lines, lineix_begin, lineix_end + 1) - lineix = lineix_end + 1 + """Removes multiline (c-style) comments from lines.""" + lineix = 0 + while lineix < len(lines): + lineix_begin = FindNextMultiLineCommentStart(lines, lineix) + if lineix_begin >= len(lines): + return + lineix_end = FindNextMultiLineCommentEnd(lines, lineix_begin) + if lineix_end >= len(lines): + error( + filename, + lineix_begin + 1, + "readability/multiline_comment", + 5, + "Could not find end of multi-line comment", + ) + return + RemoveMultiLineCommentsFromRange(lines, lineix_begin, lineix_end + 1) + lineix = lineix_end + 1 def CleanseComments(line): - """Removes //-comments and single-line C-style /* */ comments. - - Args: - line: A line of C++ source. - - Returns: - The line with single-line comments removed. - """ - commentpos = line.find('//') - if commentpos != -1 and not IsCppString(line[:commentpos]): - line = line[:commentpos].rstrip() - # get rid of /* ... */ - return _RE_PATTERN_CLEANSE_LINE_C_COMMENTS.sub('', line) - - -class CleansedLines(object): - """Holds 4 copies of all lines with different preprocessing applied to them. - - 1) elided member contains lines without strings and comments. - 2) lines member contains lines without comments. - 3) raw_lines member contains all the lines without processing. - 4) lines_without_raw_strings member is same as raw_lines, but with C++11 raw - strings removed. - All these members are of , and of the same length. - """ - - def __init__(self, lines): - self.elided = [] - self.lines = [] - self.raw_lines = lines - self.num_lines = len(lines) - self.lines_without_raw_strings = CleanseRawStrings(lines) - # # pylint: disable=consider-using-enumerate - for linenum in range(len(self.lines_without_raw_strings)): - self.lines.append(CleanseComments( - self.lines_without_raw_strings[linenum])) - elided = self._CollapseStrings(self.lines_without_raw_strings[linenum]) - self.elided.append(CleanseComments(elided)) - - def NumLines(self): - """Returns the number of lines represented.""" - return self.num_lines - - @staticmethod - def _CollapseStrings(elided): - """Collapses strings and chars on a line to simple "" or '' blocks. - - We nix strings first so we're not fooled by text like '"http://"' + """Removes //-comments and single-line C-style /* */ comments. Args: - elided: The line being processed. + line: A line of C++ source. Returns: - The line with collapsed strings. + The line with single-line comments removed. + """ + commentpos = line.find("//") + if commentpos != -1 and not IsCppString(line[:commentpos]): + line = line[:commentpos].rstrip() + # get rid of /* ... */ + return _RE_PATTERN_CLEANSE_LINE_C_COMMENTS.sub("", line) + + +def ReplaceAlternateTokens(line): + """Replace any alternate token by its original counterpart. + + In order to comply with the google rule stating that unary operators should + never be followed by a space, an exception is made for the 'not' and 'compl' + alternate tokens. For these, any trailing space is removed during the + conversion. + + Args: + line: The line being processed. + + Returns: + The line with alternate tokens replaced. + """ + for match in _ALT_TOKEN_REPLACEMENT_PATTERN.finditer(line): + token = _ALT_TOKEN_REPLACEMENT[match.group(2)] + tail = "" if match.group(2) in ["not", "compl"] and match.group(3) == " " else r"\3" + line = re.sub(match.re, rf"\1{token}{tail}", line, count=1) + return line + + +class CleansedLines: + """Holds 4 copies of all lines with different preprocessing applied to them. + + 1) elided member contains lines without strings and comments. + 2) lines member contains lines without comments. + 3) raw_lines member contains all the lines without processing. + 4) lines_without_raw_strings member is same as raw_lines, but with C++11 raw + strings removed. + All these members are of , and of the same length. """ - if _RE_PATTERN_INCLUDE.match(elided): - return elided - - # Remove escaped characters first to make quote/single quote collapsing - # basic. Things that look like escaped characters shouldn't occur - # outside of strings and chars. - elided = _RE_PATTERN_CLEANSE_LINE_ESCAPES.sub('', elided) - - # Replace quoted strings and digit separators. Both single quotes - # and double quotes are processed in the same loop, otherwise - # nested quotes wouldn't work. - collapsed = '' - while True: - # Find the first quote character - match = Match(r'^([^\'"]*)([\'"])(.*)$', elided) - if not match: - collapsed += elided - break - head, quote, tail = match.groups() - - if quote == '"': - # Collapse double quoted strings - second_quote = tail.find('"') - if second_quote >= 0: - collapsed += head + '""' - elided = tail[second_quote + 1:] - else: - # Unmatched double quote, don't bother processing the rest - # of the line since this is probably a multiline string. - collapsed += elided - break - else: - # Found single quote, check nearby text to eliminate digit separators. - # - # There is no special handling for floating point here, because - # the integer/fractional/exponent parts would all be parsed - # correctly as long as there are digits on both sides of the - # separator. So we are fine as long as we don't see something - # like "0.'3" (gcc 4.9.0 will not allow this literal). - if Search(r'\b(?:0[bBxX]?|[1-9])[0-9a-fA-F]*$', head): - match_literal = Match(r'^((?:\'?[0-9a-zA-Z_])*)(.*)$', "'" + tail) - collapsed += head + match_literal.group(1).replace("'", '') - elided = match_literal.group(2) - else: - second_quote = tail.find('\'') - if second_quote >= 0: - collapsed += head + "''" - elided = tail[second_quote + 1:] - else: - # Unmatched single quote - collapsed += elided - break - return collapsed + def __init__(self, lines): + if "-readability/alt_tokens" in _cpplint_state.filters: + for i, line in enumerate(lines): + lines[i] = ReplaceAlternateTokens(line) + self.elided = [] + self.lines = [] + self.raw_lines = lines + self.num_lines = len(lines) + self.lines_without_raw_strings = CleanseRawStrings(lines) + for line in self.lines_without_raw_strings: + self.lines.append(CleanseComments(line)) + elided = self._CollapseStrings(line) + self.elided.append(CleanseComments(elided)) + + def NumLines(self): + """Returns the number of lines represented.""" + return self.num_lines + + @staticmethod + def _CollapseStrings(elided): + """Collapses strings and chars on a line to simple "" or '' blocks. + + We nix strings first so we're not fooled by text like '"http://"' + + Args: + elided: The line being processed. + + Returns: + The line with collapsed strings. + """ + if _RE_PATTERN_INCLUDE.match(elided): + return elided + + # Remove escaped characters first to make quote/single quote collapsing + # basic. Things that look like escaped characters shouldn't occur + # outside of strings and chars. + elided = _RE_PATTERN_CLEANSE_LINE_ESCAPES.sub("", elided) + + # Replace quoted strings and digit separators. Both single quotes + # and double quotes are processed in the same loop, otherwise + # nested quotes wouldn't work. + collapsed = "" + while True: + # Find the first quote character + match = re.match(r'^([^\'"]*)([\'"])(.*)$', elided) + if not match: + collapsed += elided + break + head, quote, tail = match.groups() + + if quote == '"': + # Collapse double quoted strings + second_quote = tail.find('"') + if second_quote >= 0: + collapsed += head + '""' + elided = tail[second_quote + 1 :] + else: + # Unmatched double quote, don't bother processing the rest + # of the line since this is probably a multiline string. + collapsed += elided + break + else: + # Found single quote, check nearby text to eliminate digit separators. + # + # There is no special handling for floating point here, because + # the integer/fractional/exponent parts would all be parsed + # correctly as long as there are digits on both sides of the + # separator. So we are fine as long as we don't see something + # like "0.'3" (gcc 4.9.0 will not allow this literal). + if re.search(r"\b(?:0[bBxX]?|[1-9])[0-9a-fA-F]*$", head): + match_literal = re.match(r"^((?:\'?[0-9a-zA-Z_])*)(.*)$", "'" + tail) + collapsed += head + match_literal.group(1).replace("'", "") + elided = match_literal.group(2) + else: + second_quote = tail.find("'") + if second_quote >= 0: + collapsed += head + "''" + elided = tail[second_quote + 1 :] + else: + # Unmatched single quote + collapsed += elided + break + + return collapsed def FindEndOfExpressionInLine(line, startpos, stack): - """Find the position just after the end of current parenthesized expression. - - Args: - line: a CleansedLines line. - startpos: start searching at this position. - stack: nesting stack at startpos. - - Returns: - On finding matching end: (index just after matching end, None) - On finding an unclosed expression: (-1, None) - Otherwise: (-1, new stack at end of this line) - """ - for i in xrange(startpos, len(line)): - char = line[i] - if char in '([{': - # Found start of parenthesized expression, push to expression stack - stack.append(char) - elif char == '<': - # Found potential start of template argument list - if i > 0 and line[i - 1] == '<': - # Left shift operator - if stack and stack[-1] == '<': - stack.pop() - if not stack: - return (-1, None) - elif i > 0 and Search(r'\boperator\s*$', line[0:i]): - # operator<, don't add to stack - continue - else: - # Tentative start of template argument list - stack.append('<') - elif char in ')]}': - # Found end of parenthesized expression. - # - # If we are currently expecting a matching '>', the pending '<' - # must have been an operator. Remove them from expression stack. - while stack and stack[-1] == '<': - stack.pop() - if not stack: - return (-1, None) - if ((stack[-1] == '(' and char == ')') or - (stack[-1] == '[' and char == ']') or - (stack[-1] == '{' and char == '}')): - stack.pop() - if not stack: - return (i + 1, None) - else: - # Mismatched parentheses - return (-1, None) - elif char == '>': - # Found potential end of template argument list. - - # Ignore "->" and operator functions - if (i > 0 and - (line[i - 1] == '-' or Search(r'\boperator\s*$', line[0:i - 1]))): - continue - - # Pop the stack if there is a matching '<'. Otherwise, ignore - # this '>' since it must be an operator. - if stack: - if stack[-1] == '<': - stack.pop() - if not stack: - return (i + 1, None) - elif char == ';': - # Found something that look like end of statements. If we are currently - # expecting a '>', the matching '<' must have been an operator, since - # template argument list should not contain statements. - while stack and stack[-1] == '<': - stack.pop() - if not stack: - return (-1, None) - - # Did not find end of expression or unbalanced parentheses on this line - return (-1, stack) + """Find the position just after the end of current parenthesized expression. + + Args: + line: a CleansedLines line. + startpos: start searching at this position. + stack: nesting stack at startpos. + + Returns: + On finding matching end: (index just after matching end, None) + On finding an unclosed expression: (-1, None) + Otherwise: (-1, new stack at end of this line) + """ + for i in range(startpos, len(line)): + char = line[i] + if char in "([{": + # Found start of parenthesized expression, push to expression stack + stack.append(char) + elif char == "<": + # Found potential start of template argument list + if i > 0 and line[i - 1] == "<": + # Left shift operator + if stack and stack[-1] == "<": + stack.pop() + if not stack: + return (-1, None) + elif i > 0 and re.search(r"\boperator\s*$", line[0:i]): + # operator<, don't add to stack + continue + else: + # Tentative start of template argument list + stack.append("<") + elif char in ")]}": + # Found end of parenthesized expression. + # + # If we are currently expecting a matching '>', the pending '<' + # must have been an operator. Remove them from expression stack. + while stack and stack[-1] == "<": + stack.pop() + if not stack: + return (-1, None) + if ( + (stack[-1] == "(" and char == ")") + or (stack[-1] == "[" and char == "]") + or (stack[-1] == "{" and char == "}") + ): + stack.pop() + if not stack: + return (i + 1, None) + else: + # Mismatched parentheses + return (-1, None) + elif char == ">": + # Found potential end of template argument list. + + # Ignore "->" and operator functions + if i > 0 and (line[i - 1] == "-" or re.search(r"\boperator\s*$", line[0 : i - 1])): + continue + + # Pop the stack if there is a matching '<'. Otherwise, ignore + # this '>' since it must be an operator. + if stack and stack[-1] == "<": + stack.pop() + if not stack: + return (i + 1, None) + elif char == ";": + # Found something that look like end of statements. If we are currently + # expecting a '>', the matching '<' must have been an operator, since + # template argument list should not contain statements. + while stack and stack[-1] == "<": + stack.pop() + if not stack: + return (-1, None) + + # Did not find end of expression or unbalanced parentheses on this line + return (-1, stack) def CloseExpression(clean_lines, linenum, pos): - """If input points to ( or { or [ or <, finds the position that closes it. - - If lines[linenum][pos] points to a '(' or '{' or '[' or '<', finds the - linenum/pos that correspond to the closing of the expression. - - TODO(unknown): cpplint spends a fair bit of time matching parentheses. - Ideally we would want to index all opening and closing parentheses once - and have CloseExpression be just a simple lookup, but due to preprocessor - tricks, this is not so easy. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - pos: A position on the line. - - Returns: - A tuple (line, linenum, pos) pointer *past* the closing brace, or - (line, len(lines), -1) if we never find a close. Note we ignore - strings and comments when matching; and the line we return is the - 'cleansed' line at linenum. - """ - - line = clean_lines.elided[linenum] - if (line[pos] not in '({[<') or Match(r'<[<=]', line[pos:]): - return (line, clean_lines.NumLines(), -1) + """If input points to ( or { or [ or <, finds the position that closes it. + + If lines[linenum][pos] points to a '(' or '{' or '[' or '<', finds the + linenum/pos that correspond to the closing of the expression. + + TODO(google): cpplint spends a fair bit of time matching parentheses. + Ideally we would want to index all opening and closing parentheses once + and have CloseExpression be just a simple lookup, but due to preprocessor + tricks, this is not so easy. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + pos: A position on the line. - # Check first line - (end_pos, stack) = FindEndOfExpressionInLine(line, pos, []) - if end_pos > -1: - return (line, linenum, end_pos) + Returns: + A tuple (line, linenum, pos) pointer *past* the closing brace, or + (line, len(lines), -1) if we never find a close. Note we ignore + strings and comments when matching; and the line we return is the + 'cleansed' line at linenum. + """ - # Continue scanning forward - while stack and linenum < clean_lines.NumLines() - 1: - linenum += 1 line = clean_lines.elided[linenum] - (end_pos, stack) = FindEndOfExpressionInLine(line, 0, stack) + if (line[pos] not in "({[<") or re.match(r"<[<=]", line[pos:]): + return (line, clean_lines.NumLines(), -1) + + # Check first line + (end_pos, stack) = FindEndOfExpressionInLine(line, pos, []) if end_pos > -1: - return (line, linenum, end_pos) + return (line, linenum, end_pos) - # Did not find end of expression before end of file, give up - return (line, clean_lines.NumLines(), -1) + # Continue scanning forward + while stack and linenum < clean_lines.NumLines() - 1: + linenum += 1 + line = clean_lines.elided[linenum] + (end_pos, stack) = FindEndOfExpressionInLine(line, 0, stack) + if end_pos > -1: + return (line, linenum, end_pos) + + # Did not find end of expression before end of file, give up + return (line, clean_lines.NumLines(), -1) def FindStartOfExpressionInLine(line, endpos, stack): - """Find position at the matching start of current expression. - - This is almost the reverse of FindEndOfExpressionInLine, but note - that the input position and returned position differs by 1. - - Args: - line: a CleansedLines line. - endpos: start searching at this position. - stack: nesting stack at endpos. - - Returns: - On finding matching start: (index at matching start, None) - On finding an unclosed expression: (-1, None) - Otherwise: (-1, new stack at beginning of this line) - """ - i = endpos - while i >= 0: - char = line[i] - if char in ')]}': - # Found end of expression, push to expression stack - stack.append(char) - elif char == '>': - # Found potential end of template argument list. - # - # Ignore it if it's a "->" or ">=" or "operator>" - if (i > 0 and - (line[i - 1] == '-' or - Match(r'\s>=\s', line[i - 1:]) or - Search(r'\boperator\s*$', line[0:i]))): - i -= 1 - else: - stack.append('>') - elif char == '<': - # Found potential start of template argument list - if i > 0 and line[i - 1] == '<': - # Left shift operator + """Find position at the matching start of current expression. + + This is almost the reverse of FindEndOfExpressionInLine, but note + that the input position and returned position differs by 1. + + Args: + line: a CleansedLines line. + endpos: start searching at this position. + stack: nesting stack at endpos. + + Returns: + On finding matching start: (index at matching start, None) + On finding an unclosed expression: (-1, None) + Otherwise: (-1, new stack at beginning of this line) + """ + i = endpos + while i >= 0: + char = line[i] + if char in ")]}": + # Found end of expression, push to expression stack + stack.append(char) + elif char == ">": + # Found potential end of template argument list. + # + # Ignore it if it's a "->" or ">=" or "operator>" + if i > 0 and ( + line[i - 1] == "-" + or re.match(r"\s>=\s", line[i - 1 :]) + or re.search(r"\boperator\s*$", line[0:i]) + ): + i -= 1 + else: + stack.append(">") + elif char == "<": + # Found potential start of template argument list + if i > 0 and line[i - 1] == "<": + # Left shift operator + i -= 1 + else: + # If there is a matching '>', we can pop the expression stack. + # Otherwise, ignore this '<' since it must be an operator. + if stack and stack[-1] == ">": + stack.pop() + if not stack: + return (i, None) + elif char in "([{": + # Found start of expression. + # + # If there are any unmatched '>' on the stack, they must be + # operators. Remove those. + while stack and stack[-1] == ">": + stack.pop() + if not stack: + return (-1, None) + if ( + (char == "(" and stack[-1] == ")") + or (char == "[" and stack[-1] == "]") + or (char == "{" and stack[-1] == "}") + ): + stack.pop() + if not stack: + return (i, None) + else: + # Mismatched parentheses + return (-1, None) + elif char == ";": + # Found something that look like end of statements. If we are currently + # expecting a '<', the matching '>' must have been an operator, since + # template argument list should not contain statements. + while stack and stack[-1] == ">": + stack.pop() + if not stack: + return (-1, None) + i -= 1 - else: - # If there is a matching '>', we can pop the expression stack. - # Otherwise, ignore this '<' since it must be an operator. - if stack and stack[-1] == '>': - stack.pop() - if not stack: - return (i, None) - elif char in '([{': - # Found start of expression. - # - # If there are any unmatched '>' on the stack, they must be - # operators. Remove those. - while stack and stack[-1] == '>': - stack.pop() - if not stack: - return (-1, None) - if ((char == '(' and stack[-1] == ')') or - (char == '[' and stack[-1] == ']') or - (char == '{' and stack[-1] == '}')): - stack.pop() - if not stack: - return (i, None) - else: - # Mismatched parentheses - return (-1, None) - elif char == ';': - # Found something that look like end of statements. If we are currently - # expecting a '<', the matching '>' must have been an operator, since - # template argument list should not contain statements. - while stack and stack[-1] == '>': - stack.pop() - if not stack: - return (-1, None) - - i -= 1 - - return (-1, stack) + + return (-1, stack) def ReverseCloseExpression(clean_lines, linenum, pos): - """If input points to ) or } or ] or >, finds the position that opens it. - - If lines[linenum][pos] points to a ')' or '}' or ']' or '>', finds the - linenum/pos that correspond to the opening of the expression. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - pos: A position on the line. - - Returns: - A tuple (line, linenum, pos) pointer *at* the opening brace, or - (line, 0, -1) if we never find the matching opening brace. Note - we ignore strings and comments when matching; and the line we - return is the 'cleansed' line at linenum. - """ - line = clean_lines.elided[linenum] - if line[pos] not in ')}]>': - return (line, 0, -1) + """If input points to ) or } or ] or >, finds the position that opens it. + + If lines[linenum][pos] points to a ')' or '}' or ']' or '>', finds the + linenum/pos that correspond to the opening of the expression. - # Check last line - (start_pos, stack) = FindStartOfExpressionInLine(line, pos, []) - if start_pos > -1: - return (line, linenum, start_pos) + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + pos: A position on the line. - # Continue scanning backward - while stack and linenum > 0: - linenum -= 1 + Returns: + A tuple (line, linenum, pos) pointer *at* the opening brace, or + (line, 0, -1) if we never find the matching opening brace. Note + we ignore strings and comments when matching; and the line we + return is the 'cleansed' line at linenum. + """ line = clean_lines.elided[linenum] - (start_pos, stack) = FindStartOfExpressionInLine(line, len(line) - 1, stack) + if line[pos] not in ")}]>": + return (line, 0, -1) + + # Check last line + (start_pos, stack) = FindStartOfExpressionInLine(line, pos, []) if start_pos > -1: - return (line, linenum, start_pos) + return (line, linenum, start_pos) - # Did not find start of expression before beginning of file, give up - return (line, 0, -1) + # Continue scanning backward + while stack and linenum > 0: + linenum -= 1 + line = clean_lines.elided[linenum] + (start_pos, stack) = FindStartOfExpressionInLine(line, len(line) - 1, stack) + if start_pos > -1: + return (line, linenum, start_pos) + + # Did not find start of expression before beginning of file, give up + return (line, 0, -1) def CheckForCopyright(filename, lines, error): - """Logs an error if no Copyright message appears at the top of the file.""" + """Logs an error if no Copyright message appears at the top of the file.""" - # We'll say it should occur by line 10. Don't forget there's a - # placeholder line at the front. - for line in xrange(1, min(len(lines), 11)): - if re.search(r'Copyright', lines[line], re.I): break - else: # means no copyright line was found - error(filename, 0, 'legal/copyright', 5, - 'No copyright message found. ' - 'You should have a line: "Copyright [year] "') + # We'll say it should occur by line 10. Don't forget there's a + # placeholder line at the front. + for line in range(1, min(len(lines), 11)): + if re.search(r"Copyright", lines[line], re.IGNORECASE): + break + else: # means no copyright line was found + error( + filename, + 0, + "legal/copyright", + 5, + "No copyright message found. " + 'You should have a line: "Copyright [year] "', + ) def GetIndentLevel(line): - """Return the number of leading spaces in line. - - Args: - line: A string to check. - - Returns: - An integer count of leading spaces, possibly zero. - """ - indent = Match(r'^( *)\S', line) - if indent: - return len(indent.group(1)) - else: + """Return the number of leading spaces in line. + + Args: + line: A string to check. + + Returns: + An integer count of leading spaces, possibly zero. + """ + if indent := re.match(r"^( *)\S", line): + return len(indent.group(1)) return 0 + def PathSplitToList(path): - """Returns the path split into a list by the separator. - - Args: - path: An absolute or relative path (e.g. '/a/b/c/' or '../a') - - Returns: - A list of path components (e.g. ['a', 'b', 'c]). - """ - lst = [] - while True: - (head, tail) = os.path.split(path) - if head == path: # absolute paths end - lst.append(head) - break - if tail == path: # relative paths end - lst.append(tail) - break - - path = head - lst.append(tail) - - lst.reverse() - return lst + """Returns the path split into a list by the separator. -def GetHeaderGuardCPPVariable(filename): - """Returns the CPP variable that should be used as a header guard. + Args: + path: An absolute or relative path (e.g. '/a/b/c/' or '../a') - Args: - filename: The name of a C++ header file. + Returns: + A list of path components (e.g. ['a', 'b', 'c]). + """ + lst = [] + while True: + (head, tail) = os.path.split(path) + if head == path: # absolute paths end + lst.append(head) + break + if tail == path: # relative paths end + lst.append(tail) + break - Returns: - The CPP variable that should be used as a header guard in the - named file. + path = head + lst.append(tail) - """ + lst.reverse() + return lst - # Restores original filename in case that cpplint is invoked from Emacs's - # flymake. - filename = re.sub(r'_flymake\.h$', '.h', filename) - filename = re.sub(r'/\.flymake/([^/]*)$', r'/\1', filename) - # Replace 'c++' with 'cpp'. - filename = filename.replace('C++', 'cpp').replace('c++', 'cpp') - fileinfo = FileInfo(filename) - file_path_from_root = fileinfo.RepositoryName() +def GetHeaderGuardCPPVariable(filename): + """Returns the CPP variable that should be used as a header guard. - def FixupPathFromRoot(): - if _root_debug: - sys.stderr.write("\n_root fixup, _root = '%s', repository name = '%s'\n" - % (_root, fileinfo.RepositoryName())) + Args: + filename: The name of a C++ header file. - # Process the file path with the --root flag if it was set. - if not _root: - if _root_debug: - sys.stderr.write("_root unspecified\n") - return file_path_from_root + Returns: + The CPP variable that should be used as a header guard in the + named file. - def StripListPrefix(lst, prefix): - # f(['x', 'y'], ['w, z']) -> None (not a valid prefix) - if lst[:len(prefix)] != prefix: - return None - # f(['a, 'b', 'c', 'd'], ['a', 'b']) -> ['c', 'd'] - return lst[(len(prefix)):] - - # root behavior: - # --root=subdir , lstrips subdir from the header guard - maybe_path = StripListPrefix(PathSplitToList(file_path_from_root), - PathSplitToList(_root)) - - if _root_debug: - sys.stderr.write(("_root lstrip (maybe_path=%s, file_path_from_root=%s," + - " _root=%s)\n") % (maybe_path, file_path_from_root, _root)) - - if maybe_path: - return os.path.join(*maybe_path) - - # --root=.. , will prepend the outer directory to the header guard - full_path = fileinfo.FullName() - # adapt slashes for windows - root_abspath = os.path.abspath(_root).replace('\\', '/') - - maybe_path = StripListPrefix(PathSplitToList(full_path), - PathSplitToList(root_abspath)) - - if _root_debug: - sys.stderr.write(("_root prepend (maybe_path=%s, full_path=%s, " + - "root_abspath=%s)\n") % (maybe_path, full_path, root_abspath)) - - if maybe_path: - return os.path.join(*maybe_path) - - if _root_debug: - sys.stderr.write("_root ignore, returning %s\n" % (file_path_from_root)) - - # --root=FAKE_DIR is ignored - return file_path_from_root - - file_path_from_root = FixupPathFromRoot() - return re.sub(r'[^a-zA-Z0-9]', '_', file_path_from_root).upper() + '_' - - -def CheckForHeaderGuard(filename, clean_lines, error): - """Checks that the file contains a header guard. - - Logs an error if no #ifndef header guard is present. For other - headers, checks that the full pathname is used. - - Args: - filename: The name of the C++ header file. - clean_lines: A CleansedLines instance containing the file. - error: The function to call with any errors found. - """ - - # Don't check for header guards if there are error suppression - # comments somewhere in this file. - # - # Because this is silencing a warning for a nonexistent line, we - # only support the very specific NOLINT(build/header_guard) syntax, - # and not the general NOLINT or NOLINT(*) syntax. - raw_lines = clean_lines.lines_without_raw_strings - for i in raw_lines: - if Search(r'//\s*NOLINT\(build/header_guard\)', i): - return - - # Allow pragma once instead of header guards - for i in raw_lines: - if Search(r'^\s*#pragma\s+once', i): - return - - cppvar = GetHeaderGuardCPPVariable(filename) - - ifndef = '' - ifndef_linenum = 0 - define = '' - endif = '' - endif_linenum = 0 - for linenum, line in enumerate(raw_lines): - linesplit = line.split() - if len(linesplit) >= 2: - # find the first occurrence of #ifndef and #define, save arg - if not ifndef and linesplit[0] == '#ifndef': - # set ifndef to the header guard presented on the #ifndef line. - ifndef = linesplit[1] - ifndef_linenum = linenum - if not define and linesplit[0] == '#define': - define = linesplit[1] - # find the last occurrence of #endif, save entire line - if line.startswith('#endif'): - endif = line - endif_linenum = linenum - - if not ifndef or not define or ifndef != define: - error(filename, 0, 'build/header_guard', 5, - 'No #ifndef header guard found, suggested CPP variable is: %s' % - cppvar) - return - - # The guard should be PATH_FILE_H_, but we also allow PATH_FILE_H__ - # for backward compatibility. - if ifndef != cppvar: - error_level = 0 - if ifndef != cppvar + '_': - error_level = 5 - - ParseNolintSuppressions(filename, raw_lines[ifndef_linenum], ifndef_linenum, - error) - error(filename, ifndef_linenum, 'build/header_guard', error_level, - '#ifndef header guard has wrong style, please use: %s' % cppvar) - - # Check for "//" comments on endif line. - ParseNolintSuppressions(filename, raw_lines[endif_linenum], endif_linenum, - error) - match = Match(r'#endif\s*//\s*' + cppvar + r'(_)?\b', endif) - if match: - if match.group(1) == '_': - # Issue low severity warning for deprecated double trailing underscore - error(filename, endif_linenum, 'build/header_guard', 0, - '#endif line should be "#endif // %s"' % cppvar) - return - - # Didn't find the corresponding "//" comment. If this file does not - # contain any "//" comments at all, it could be that the compiler - # only wants "/**/" comments, look for those instead. - no_single_line_comments = True - for i in xrange(1, len(raw_lines) - 1): - line = raw_lines[i] - if Match(r'^(?:(?:\'(?:\.|[^\'])*\')|(?:"(?:\.|[^"])*")|[^\'"])*//', line): - no_single_line_comments = False - break - - if no_single_line_comments: - match = Match(r'#endif\s*/\*\s*' + cppvar + r'(_)?\s*\*/', endif) - if match: - if match.group(1) == '_': - # Low severity warning for double trailing underscore - error(filename, endif_linenum, 'build/header_guard', 0, - '#endif line should be "#endif /* %s */"' % cppvar) - return + """ - # Didn't find anything - error(filename, endif_linenum, 'build/header_guard', 5, - '#endif line should be "#endif // %s"' % cppvar) + # Restores original filename in case that cpplint is invoked from Emacs's + # flymake. + filename = re.sub(r"_flymake\.h$", ".h", filename) + filename = re.sub(r"/\.flymake/([^/]*)$", r"/\1", filename) + # Replace 'c++' with 'cpp'. + filename = filename.replace("C++", "cpp").replace("c++", "cpp") + fileinfo = FileInfo(filename) + file_path_from_root = fileinfo.RepositoryName() -def CheckHeaderFileIncluded(filename, include_state, error): - """Logs an error if a source file does not include its header.""" - - # Do not check test files - fileinfo = FileInfo(filename) - if Search(_TEST_FILE_SUFFIX, fileinfo.BaseName()): - return - - for ext in GetHeaderExtensions(): - basefilename = filename[0:len(filename) - len(fileinfo.Extension())] - headerfile = basefilename + '.' + ext - if not os.path.exists(headerfile): - continue - headername = FileInfo(headerfile).RepositoryName() - first_include = None - include_uses_unix_dir_aliases = False - for section_list in include_state.include_list: - for f in section_list: - include_text = f[0] - if "./" in include_text: - include_uses_unix_dir_aliases = True - if headername in include_text or include_text in headername: - return - if not first_include: - first_include = f[1] - - message = '%s should include its header file %s' % (fileinfo.RepositoryName(), headername) - if include_uses_unix_dir_aliases: - message += ". Relative paths like . and .. are not allowed." - - error(filename, first_include, 'build/include', 5, message) + def FixupPathFromRoot(): + if _root_debug: + sys.stderr.write( + f"\n_root fixup, _root = '{_root}'," + f" repository name = '{fileinfo.RepositoryName()}'\n" + ) + # Process the file path with the --root flag if it was set. + if not _root: + if _root_debug: + sys.stderr.write("_root unspecified\n") + return file_path_from_root -def CheckForBadCharacters(filename, lines, error): - """Logs an error for each line containing bad characters. + def StripListPrefix(lst, prefix): + # f(['x', 'y'], ['w, z']) -> None (not a valid prefix) + if lst[: len(prefix)] != prefix: + return None + # f(['a, 'b', 'c', 'd'], ['a', 'b']) -> ['c', 'd'] + return lst[(len(prefix)) :] - Two kinds of bad characters: + # root behavior: + # --root=subdir , lstrips subdir from the header guard + maybe_path = StripListPrefix(PathSplitToList(file_path_from_root), PathSplitToList(_root)) - 1. Unicode replacement characters: These indicate that either the file - contained invalid UTF-8 (likely) or Unicode replacement characters (which - it shouldn't). Note that it's possible for this to throw off line - numbering if the invalid UTF-8 occurred adjacent to a newline. + if _root_debug: + sys.stderr.write( + ("_root lstrip (maybe_path=%s, file_path_from_root=%s," + " _root=%s)\n") + % (maybe_path, file_path_from_root, _root) + ) - 2. NUL bytes. These are problematic for some tools. + if maybe_path: + return os.path.join(*maybe_path) - Args: - filename: The name of the current file. - lines: An array of strings, each representing a line of the file. - error: The function to call with any errors found. - """ - for linenum, line in enumerate(lines): - if unicode_escape_decode('\ufffd') in line: - error(filename, linenum, 'readability/utf8', 5, - 'Line contains invalid UTF-8 (or Unicode replacement character).') - if '\0' in line: - error(filename, linenum, 'readability/nul', 5, 'Line contains NUL byte.') + # --root=.. , will prepend the outer directory to the header guard + full_path = fileinfo.FullName() + # adapt slashes for windows + root_abspath = os.path.abspath(_root).replace("\\", "/") + maybe_path = StripListPrefix(PathSplitToList(full_path), PathSplitToList(root_abspath)) -def CheckInlineHeader(filename, include_state, error): - """Logs an error if both a header and its inline variant are included.""" + if _root_debug: + sys.stderr.write( + ("_root prepend (maybe_path=%s, full_path=%s, " + "root_abspath=%s)\n") + % (maybe_path, full_path, root_abspath) + ) - all_headers = dict(item for sublist in include_state.include_list - for item in sublist) - bad_headers = set('%s.h' % name[:-6] for name in all_headers.keys() - if name.endswith('-inl.h')) - bad_headers &= set(all_headers.keys()) + if maybe_path: + return os.path.join(*maybe_path) - for name in bad_headers: - err = '%s includes both %s and %s-inl.h' % (filename, name, name) - linenum = all_headers[name] - error(filename, linenum, 'build/include_inline', 5, err) + if _root_debug: + sys.stderr.write(f"_root ignore, returning {file_path_from_root}\n") + + # --root=FAKE_DIR is ignored + return file_path_from_root + + file_path_from_root = FixupPathFromRoot() + return re.sub(r"[^a-zA-Z0-9]", "_", file_path_from_root).upper() + "_" + + +def CheckForHeaderGuard(filename, clean_lines, error, cppvar): + """Checks that the file contains a header guard. + + Logs an error if no #ifndef header guard is present. For other + headers, checks that the full pathname is used. + + Args: + filename: The name of the C++ header file. + clean_lines: A CleansedLines instance containing the file. + error: The function to call with any errors found. + """ + + # Don't check for header guards if there are error suppression + # comments somewhere in this file. + # + # Because this is silencing a warning for a nonexistent line, we + # only support the very specific NOLINT(build/header_guard) syntax, + # and not the general NOLINT or NOLINT(*) syntax. + raw_lines = clean_lines.lines_without_raw_strings + for i in raw_lines: + if re.search(r"//\s*NOLINT\(build/header_guard\)", i): + return + + # Allow pragma once instead of header guards + for i in raw_lines: + if re.search(r"^\s*#pragma\s+once", i): + return + + ifndef = "" + ifndef_linenum = 0 + define = "" + endif = "" + endif_linenum = 0 + for linenum, line in enumerate(raw_lines): + linesplit = line.split() + if len(linesplit) >= 2: + # find the first occurrence of #ifndef and #define, save arg + if not ifndef and linesplit[0] == "#ifndef": + # set ifndef to the header guard presented on the #ifndef line. + ifndef = linesplit[1] + ifndef_linenum = linenum + if not define and linesplit[0] == "#define": + define = linesplit[1] + # find the last occurrence of #endif, save entire line + if line.startswith("#endif"): + endif = line + endif_linenum = linenum + + if not ifndef or not define or ifndef != define: + error( + filename, + 0, + "build/header_guard", + 5, + f"No #ifndef header guard found, suggested CPP variable is: {cppvar}", + ) + return + + # The guard should be PATH_FILE_H_, but we also allow PATH_FILE_H__ + # for backward compatibility. + if ifndef != cppvar: + error_level = 0 + if ifndef != cppvar + "_": + error_level = 5 + + ParseNolintSuppressions(filename, raw_lines[ifndef_linenum], ifndef_linenum, error) + error( + filename, + ifndef_linenum, + "build/header_guard", + error_level, + f"#ifndef header guard has wrong style, please use: {cppvar}", + ) + + # Check for "//" comments on endif line. + ParseNolintSuppressions(filename, raw_lines[endif_linenum], endif_linenum, error) + match = re.match(r"#endif\s*//\s*" + cppvar + r"(_)?\b", endif) + if match: + if match.group(1) == "_": + # Issue low severity warning for deprecated double trailing underscore + error( + filename, + endif_linenum, + "build/header_guard", + 0, + f'#endif line should be "#endif // {cppvar}"', + ) + return + + # Didn't find the corresponding "//" comment. If this file does not + # contain any "//" comments at all, it could be that the compiler + # only wants "/**/" comments, look for those instead. + no_single_line_comments = True + for i in range(1, len(raw_lines) - 1): + line = raw_lines[i] + if re.match(r'^(?:(?:\'(?:\.|[^\'])*\')|(?:"(?:\.|[^"])*")|[^\'"])*//', line): + no_single_line_comments = False + break + + if no_single_line_comments: + match = re.match(r"#endif\s*/\*\s*" + cppvar + r"(_)?\s*\*/", endif) + if match: + if match.group(1) == "_": + # Low severity warning for double trailing underscore + error( + filename, + endif_linenum, + "build/header_guard", + 0, + f'#endif line should be "#endif /* {cppvar} */"', + ) + return + + # Didn't find anything + error( + filename, + endif_linenum, + "build/header_guard", + 5, + f'#endif line should be "#endif // {cppvar}"', + ) + + +def CheckHeaderFileIncluded(filename, include_state, error): + """Logs an error if a source file does not include its header.""" + + # Do not check test files + fileinfo = FileInfo(filename) + if re.search(_TEST_FILE_SUFFIX, fileinfo.BaseName()): + return + + first_include = message = None + basefilename = filename[0 : len(filename) - len(fileinfo.Extension())] + for ext in GetHeaderExtensions(): + headerfile = basefilename + "." + ext + if not os.path.exists(headerfile): + continue + headername = FileInfo(headerfile).RepositoryName() + include_uses_unix_dir_aliases = False + for section_list in include_state.include_list: + for f in section_list: + include_text = f[0] + if "./" in include_text: + include_uses_unix_dir_aliases = True + if headername in include_text or include_text in headername: + return + if not first_include: + first_include = f[1] + + message = f"{fileinfo.RepositoryName()} should include its header file {headername}" + if include_uses_unix_dir_aliases: + message += ". Relative paths like . and .. are not allowed." + + if message: + error(filename, first_include, "build/include", 5, message) + + +def CheckForBadCharacters(filename, lines, error): + """Logs an error for each line containing bad characters. + + Two kinds of bad characters: + + 1. Unicode replacement characters: These indicate that either the file + contained invalid UTF-8 (likely) or Unicode replacement characters (which + it shouldn't). Note that it's possible for this to throw off line + numbering if the invalid UTF-8 occurred adjacent to a newline. + + 2. NUL bytes. These are problematic for some tools. + + Args: + filename: The name of the current file. + lines: An array of strings, each representing a line of the file. + error: The function to call with any errors found. + """ + for linenum, line in enumerate(lines): + if "\ufffd" in line: + error( + filename, + linenum, + "readability/utf8", + 5, + "Line contains invalid UTF-8 (or Unicode replacement character).", + ) + if "\0" in line: + error(filename, linenum, "readability/nul", 5, "Line contains NUL byte.") def CheckForNewlineAtEOF(filename, lines, error): - """Logs an error if there is no newline char at the end of the file. + """Logs an error if there is no newline char at the end of the file. - Args: - filename: The name of the current file. - lines: An array of strings, each representing a line of the file. - error: The function to call with any errors found. - """ + Args: + filename: The name of the current file. + lines: An array of strings, each representing a line of the file. + error: The function to call with any errors found. + """ - # The array lines() was created by adding two newlines to the - # original file (go figure), then splitting on \n. - # To verify that the file ends in \n, we just have to make sure the - # last-but-two element of lines() exists and is empty. - if len(lines) < 3 or lines[-2]: - error(filename, len(lines) - 2, 'whitespace/ending_newline', 5, - 'Could not find a newline character at the end of the file.') + # The array lines() was created by adding two newlines to the + # original file (go figure), then splitting on \n. + # To verify that the file ends in \n, we just have to make sure the + # last-but-two element of lines() exists and is empty. + if len(lines) < 3 or lines[-2]: + error( + filename, + len(lines) - 2, + "whitespace/ending_newline", + 5, + "Could not find a newline character at the end of the file.", + ) def CheckForMultilineCommentsAndStrings(filename, clean_lines, linenum, error): - """Logs an error if we see /* ... */ or "..." that extend past one line. - - /* ... */ comments are legit inside macros, for one line. - Otherwise, we prefer // comments, so it's ok to warn about the - other. Likewise, it's ok for strings to extend across multiple - lines, as long as a line continuation character (backslash) - terminates each line. Although not currently prohibited by the C++ - style guide, it's ugly and unnecessary. We don't do well with either - in this lint program, so we warn about both. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Remove all \\ (escaped backslashes) from the line. They are OK, and the - # second (escaped) slash may trigger later \" detection erroneously. - line = line.replace('\\\\', '') - - if line.count('/*') > line.count('*/'): - error(filename, linenum, 'readability/multiline_comment', 5, - 'Complex multi-line /*...*/-style comment found. ' - 'Lint may give bogus warnings. ' - 'Consider replacing these with //-style comments, ' - 'with #if 0...#endif, ' - 'or with more clearly structured multi-line comments.') - - if (line.count('"') - line.count('\\"')) % 2: - error(filename, linenum, 'readability/multiline_string', 5, - 'Multi-line string ("...") found. This lint script doesn\'t ' - 'do well with such strings, and may give bogus warnings. ' - 'Use C++11 raw strings or concatenation instead.') + """Logs an error if we see /* ... */ or "..." that extend past one line. + + /* ... */ comments are legit inside macros, for one line. + Otherwise, we prefer // comments, so it's ok to warn about the + other. Likewise, it's ok for strings to extend across multiple + lines, as long as a line continuation character (backslash) + terminates each line. Although not currently prohibited by the C++ + style guide, it's ugly and unnecessary. We don't do well with either + in this lint program, so we warn about both. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Remove all \\ (escaped backslashes) from the line. They are OK, and the + # second (escaped) slash may trigger later \" detection erroneously. + line = line.replace("\\\\", "") + + if line.count("/*") > line.count("*/"): + error( + filename, + linenum, + "readability/multiline_comment", + 5, + "Complex multi-line /*...*/-style comment found. " + "Lint may give bogus warnings. " + "Consider replacing these with //-style comments, " + "with #if 0...#endif, " + "or with more clearly structured multi-line comments.", + ) + + if (line.count('"') - line.count('\\"')) % 2: + error( + filename, + linenum, + "readability/multiline_string", + 5, + 'Multi-line string ("...") found. This lint script doesn\'t ' + "do well with such strings, and may give bogus warnings. " + "Use C++11 raw strings or concatenation instead.", + ) # (non-threadsafe name, thread-safe alternative, validation pattern) @@ -2662,489 +2877,1049 @@ def CheckForMultilineCommentsAndStrings(filename, clean_lines, linenum, error): # in some expression context on the same line by matching on some # operator before the function name. This eliminates constructors and # member function calls. -_UNSAFE_FUNC_PREFIX = r'(?:[-+*/=%^&|(<]\s*|>\s+)' +_UNSAFE_FUNC_PREFIX = r"(?:[-+*/=%^&|(<]\s*|>\s+)" _THREADING_LIST = ( - ('asctime(', 'asctime_r(', _UNSAFE_FUNC_PREFIX + r'asctime\([^)]+\)'), - ('ctime(', 'ctime_r(', _UNSAFE_FUNC_PREFIX + r'ctime\([^)]+\)'), - ('getgrgid(', 'getgrgid_r(', _UNSAFE_FUNC_PREFIX + r'getgrgid\([^)]+\)'), - ('getgrnam(', 'getgrnam_r(', _UNSAFE_FUNC_PREFIX + r'getgrnam\([^)]+\)'), - ('getlogin(', 'getlogin_r(', _UNSAFE_FUNC_PREFIX + r'getlogin\(\)'), - ('getpwnam(', 'getpwnam_r(', _UNSAFE_FUNC_PREFIX + r'getpwnam\([^)]+\)'), - ('getpwuid(', 'getpwuid_r(', _UNSAFE_FUNC_PREFIX + r'getpwuid\([^)]+\)'), - ('gmtime(', 'gmtime_r(', _UNSAFE_FUNC_PREFIX + r'gmtime\([^)]+\)'), - ('localtime(', 'localtime_r(', _UNSAFE_FUNC_PREFIX + r'localtime\([^)]+\)'), - ('rand(', 'rand_r(', _UNSAFE_FUNC_PREFIX + r'rand\(\)'), - ('strtok(', 'strtok_r(', - _UNSAFE_FUNC_PREFIX + r'strtok\([^)]+\)'), - ('ttyname(', 'ttyname_r(', _UNSAFE_FUNC_PREFIX + r'ttyname\([^)]+\)'), - ) + ("asctime(", "asctime_r(", _UNSAFE_FUNC_PREFIX + r"asctime\([^)]+\)"), + ("ctime(", "ctime_r(", _UNSAFE_FUNC_PREFIX + r"ctime\([^)]+\)"), + ("getgrgid(", "getgrgid_r(", _UNSAFE_FUNC_PREFIX + r"getgrgid\([^)]+\)"), + ("getgrnam(", "getgrnam_r(", _UNSAFE_FUNC_PREFIX + r"getgrnam\([^)]+\)"), + ("getlogin(", "getlogin_r(", _UNSAFE_FUNC_PREFIX + r"getlogin\(\)"), + ("getpwnam(", "getpwnam_r(", _UNSAFE_FUNC_PREFIX + r"getpwnam\([^)]+\)"), + ("getpwuid(", "getpwuid_r(", _UNSAFE_FUNC_PREFIX + r"getpwuid\([^)]+\)"), + ("gmtime(", "gmtime_r(", _UNSAFE_FUNC_PREFIX + r"gmtime\([^)]+\)"), + ("localtime(", "localtime_r(", _UNSAFE_FUNC_PREFIX + r"localtime\([^)]+\)"), + ("rand(", "rand_r(", _UNSAFE_FUNC_PREFIX + r"rand\(\)"), + ("strtok(", "strtok_r(", _UNSAFE_FUNC_PREFIX + r"strtok\([^)]+\)"), + ("ttyname(", "ttyname_r(", _UNSAFE_FUNC_PREFIX + r"ttyname\([^)]+\)"), +) def CheckPosixThreading(filename, clean_lines, linenum, error): - """Checks for calls to thread-unsafe functions. - - Much code has been originally written without consideration of - multi-threading. Also, engineers are relying on their old experience; - they have learned posix before threading extensions were added. These - tests guide the engineers to use thread-safe functions (when using - posix directly). - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - for single_thread_func, multithread_safe_func, pattern in _THREADING_LIST: - # Additional pattern matching check to confirm that this is the - # function we are looking for - if Search(pattern, line): - error(filename, linenum, 'runtime/threadsafe_fn', 2, - 'Consider using ' + multithread_safe_func + - '...) instead of ' + single_thread_func + - '...) for improved thread safety.') + """Checks for calls to thread-unsafe functions. + + Much code has been originally written without consideration of + multi-threading. Also, engineers are relying on their old experience; + they have learned posix before threading extensions were added. These + tests guide the engineers to use thread-safe functions (when using + posix directly). + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + for single_thread_func, multithread_safe_func, pattern in _THREADING_LIST: + # Additional pattern matching check to confirm that this is the + # function we are looking for + if re.search(pattern, line): + error( + filename, + linenum, + "runtime/threadsafe_fn", + 2, + "Consider using " + + multithread_safe_func + + "...) instead of " + + single_thread_func + + "...) for improved thread safety.", + ) def CheckVlogArguments(filename, clean_lines, linenum, error): - """Checks that VLOG() is only used for defining a logging level. - - For example, VLOG(2) is correct. VLOG(INFO), VLOG(WARNING), VLOG(ERROR), and - VLOG(FATAL) are not. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - if Search(r'\bVLOG\((INFO|ERROR|WARNING|DFATAL|FATAL)\)', line): - error(filename, linenum, 'runtime/vlog', 5, - 'VLOG() should be used with numeric verbosity level. ' - 'Use LOG() if you want symbolic severity levels.') + """Checks that VLOG() is only used for defining a logging level. + + For example, VLOG(2) is correct. VLOG(INFO), VLOG(WARNING), VLOG(ERROR), and + VLOG(FATAL) are not. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + if re.search(r"\bVLOG\((INFO|ERROR|WARNING|DFATAL|FATAL)\)", line): + error( + filename, + linenum, + "runtime/vlog", + 5, + "VLOG() should be used with numeric verbosity level. " + "Use LOG() if you want symbolic severity levels.", + ) + # Matches invalid increment: *count++, which moves pointer instead of # incrementing a value. -_RE_PATTERN_INVALID_INCREMENT = re.compile( - r'^\s*\*\w+(\+\+|--);') +_RE_PATTERN_INVALID_INCREMENT = re.compile(r"^\s*\*\w+(\+\+|--);") def CheckInvalidIncrement(filename, clean_lines, linenum, error): - """Checks for invalid increment *count++. - - For example following function: - void increment_counter(int* count) { - *count++; - } - is invalid, because it effectively does count++, moving pointer, and should - be replaced with ++*count, (*count)++ or *count += 1. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - if _RE_PATTERN_INVALID_INCREMENT.match(line): - error(filename, linenum, 'runtime/invalid_increment', 5, - 'Changing pointer instead of value (or unused value of operator*).') + """Checks for invalid increment *count++. + For example following function: + void increment_counter(int* count) { + *count++; + } + is invalid, because it effectively does count++, moving pointer, and should + be replaced with ++*count, (*count)++ or *count += 1. -def IsMacroDefinition(clean_lines, linenum): - if Search(r'^#define', clean_lines[linenum]): - return True + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + if _RE_PATTERN_INVALID_INCREMENT.match(line): + error( + filename, + linenum, + "runtime/invalid_increment", + 5, + "Changing pointer instead of value (or unused value of operator*).", + ) - if linenum > 0 and Search(r'\\$', clean_lines[linenum - 1]): - return True - return False +def IsMacroDefinition(clean_lines, linenum): + if re.search(r"^#define", clean_lines[linenum]): + return True + + return bool(linenum > 0 and re.search(r"\\$", clean_lines[linenum - 1])) def IsForwardClassDeclaration(clean_lines, linenum): - return Match(r'^\s*(\btemplate\b)*.*class\s+\w+;\s*$', clean_lines[linenum]) + return re.match(r"^\s*(\btemplate\b)*.*class\s+\w+;\s*$", clean_lines[linenum]) -class _BlockInfo(object): - """Stores information about a generic block of code.""" +class _BlockInfo: + """Stores information about a generic block of code.""" - def __init__(self, linenum, seen_open_brace): - self.starting_linenum = linenum - self.seen_open_brace = seen_open_brace - self.open_parentheses = 0 - self.inline_asm = _NO_ASM - self.check_namespace_indentation = False + def __init__(self, linenum, seen_open_brace): + self.starting_linenum = linenum + self.seen_open_brace = seen_open_brace + self.open_parentheses = 0 + self.inline_asm = _NO_ASM + self.check_namespace_indentation = False - def CheckBegin(self, filename, clean_lines, linenum, error): - """Run checks that applies to text up to the opening brace. + def CheckBegin(self, filename, clean_lines, linenum, error): + """Run checks that applies to text up to the opening brace. - This is mostly for checking the text after the class identifier - and the "{", usually where the base class is specified. For other - blocks, there isn't much to check, so we always pass. + This is mostly for checking the text after the class identifier + and the "{", usually where the base class is specified. For other + blocks, there isn't much to check, so we always pass. - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - pass + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + pass - def CheckEnd(self, filename, clean_lines, linenum, error): - """Run checks that applies to text after the closing brace. + def CheckEnd(self, filename, clean_lines, linenum, error): + """Run checks that applies to text after the closing brace. - This is mostly used for checking end of namespace comments. + This is mostly used for checking end of namespace comments. - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - pass + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + pass - def IsBlockInfo(self): - """Returns true if this block is a _BlockInfo. + def IsBlockInfo(self): + """Returns true if this block is a _BlockInfo. - This is convenient for verifying that an object is an instance of - a _BlockInfo, but not an instance of any of the derived classes. + This is convenient for verifying that an object is an instance of + a _BlockInfo, but not an instance of any of the derived classes. - Returns: - True for this class, False for derived classes. - """ - return self.__class__ == _BlockInfo + Returns: + True for this class, False for derived classes. + """ + return self.__class__ == _BlockInfo class _ExternCInfo(_BlockInfo): - """Stores information about an 'extern "C"' block.""" + """Stores information about an 'extern "C"' block.""" - def __init__(self, linenum): - _BlockInfo.__init__(self, linenum, True) + def __init__(self, linenum): + _BlockInfo.__init__(self, linenum, True) class _ClassInfo(_BlockInfo): - """Stores information about a class.""" - - def __init__(self, name, class_or_struct, clean_lines, linenum): - _BlockInfo.__init__(self, linenum, False) - self.name = name - self.is_derived = False - self.check_namespace_indentation = True - if class_or_struct == 'struct': - self.access = 'public' - self.is_struct = True - else: - self.access = 'private' - self.is_struct = False + """Stores information about a class.""" + + def __init__(self, name, class_or_struct, clean_lines, linenum): + _BlockInfo.__init__(self, linenum, False) + self.name = name + self.is_derived = False + self.check_namespace_indentation = True + if class_or_struct == "struct": + self.access = "public" + self.is_struct = True + else: + self.access = "private" + self.is_struct = False - # Remember initial indentation level for this class. Using raw_lines here - # instead of elided to account for leading comments. - self.class_indent = GetIndentLevel(clean_lines.raw_lines[linenum]) + # Remember initial indentation level for this class. Using raw_lines here + # instead of elided to account for leading comments. + self.class_indent = GetIndentLevel(clean_lines.raw_lines[linenum]) - # Try to find the end of the class. This will be confused by things like: - # class A { - # } *x = { ... - # - # But it's still good enough for CheckSectionSpacing. - self.last_line = 0 - depth = 0 - for i in range(linenum, clean_lines.NumLines()): - line = clean_lines.elided[i] - depth += line.count('{') - line.count('}') - if not depth: - self.last_line = i - break - - def CheckBegin(self, filename, clean_lines, linenum, error): - # Look for a bare ':' - if Search('(^|[^:]):($|[^:])', clean_lines.elided[linenum]): - self.is_derived = True - - def CheckEnd(self, filename, clean_lines, linenum, error): - # If there is a DISALLOW macro, it should appear near the end of - # the class. - seen_last_thing_in_class = False - for i in xrange(linenum - 1, self.starting_linenum, -1): - match = Search( - r'\b(DISALLOW_COPY_AND_ASSIGN|DISALLOW_IMPLICIT_CONSTRUCTORS)\(' + - self.name + r'\)', - clean_lines.elided[i]) - if match: - if seen_last_thing_in_class: - error(filename, i, 'readability/constructors', 3, - match.group(1) + ' should be the last thing in the class') - break - - if not Match(r'^\s*$', clean_lines.elided[i]): - seen_last_thing_in_class = True - - # Check that closing brace is aligned with beginning of the class. - # Only do this if the closing brace is indented by only whitespaces. - # This means we will not check single-line class definitions. - indent = Match(r'^( *)\}', clean_lines.elided[linenum]) - if indent and len(indent.group(1)) != self.class_indent: - if self.is_struct: - parent = 'struct ' + self.name - else: - parent = 'class ' + self.name - error(filename, linenum, 'whitespace/indent', 3, - 'Closing brace should be aligned with beginning of %s' % parent) + # Try to find the end of the class. This will be confused by things like: + # class A { + # } *x = { ... + # + # But it's still good enough for CheckSectionSpacing. + self.last_line = 0 + depth = 0 + for i in range(linenum, clean_lines.NumLines()): + line = clean_lines.elided[i] + depth += line.count("{") - line.count("}") + if not depth: + self.last_line = i + break + + def CheckBegin(self, filename, clean_lines, linenum, error): + # Look for a bare ':' + if re.search("(^|[^:]):($|[^:])", clean_lines.elided[linenum]): + self.is_derived = True + + def CheckEnd(self, filename, clean_lines, linenum, error): + # If there is a DISALLOW macro, it should appear near the end of + # the class. + seen_last_thing_in_class = False + for i in range(linenum - 1, self.starting_linenum, -1): + match = re.search( + r"\b(DISALLOW_COPY_AND_ASSIGN|DISALLOW_IMPLICIT_CONSTRUCTORS)\(" + + self.name + + r"\)", + clean_lines.elided[i], + ) + if match: + if seen_last_thing_in_class: + error( + filename, + i, + "readability/constructors", + 3, + match.group(1) + " should be the last thing in the class", + ) + break + + if not re.match(r"^\s*$", clean_lines.elided[i]): + seen_last_thing_in_class = True + + # Check that closing brace is aligned with beginning of the class. + # Only do this if the closing brace is indented by only whitespaces. + # This means we will not check single-line class definitions. + indent = re.match(r"^( *)\}", clean_lines.elided[linenum]) + if indent and len(indent.group(1)) != self.class_indent: + if self.is_struct: + parent = "struct " + self.name + else: + parent = "class " + self.name + error( + filename, + linenum, + "whitespace/indent", + 3, + f"Closing brace should be aligned with beginning of {parent}", + ) + + +class _ConstructorInfo(_BlockInfo): + """Stores information about a constructor. + For detecting member initializer lists.""" + + def __init__(self, linenum: int): + _BlockInfo.__init__(self, linenum, seen_open_brace=False) class _NamespaceInfo(_BlockInfo): - """Stores information about a namespace.""" + """Stores information about a namespace.""" - def __init__(self, name, linenum): - _BlockInfo.__init__(self, linenum, False) - self.name = name or '' - self.check_namespace_indentation = True + def __init__(self, name, linenum): + _BlockInfo.__init__(self, linenum, False) + self.name = name or "" + self.check_namespace_indentation = True - def CheckEnd(self, filename, clean_lines, linenum, error): - """Check end of namespace comments.""" - line = clean_lines.raw_lines[linenum] + def CheckEnd(self, filename, clean_lines, linenum, error): + """Check end of namespace comments.""" + line = clean_lines.raw_lines[linenum] - # Check how many lines is enclosed in this namespace. Don't issue - # warning for missing namespace comments if there aren't enough - # lines. However, do apply checks if there is already an end of - # namespace comment and it's incorrect. - # - # TODO(unknown): We always want to check end of namespace comments - # if a namespace is large, but sometimes we also want to apply the - # check if a short namespace contained nontrivial things (something - # other than forward declarations). There is currently no logic on - # deciding what these nontrivial things are, so this check is - # triggered by namespace size only, which works most of the time. - if (linenum - self.starting_linenum < 10 - and not Match(r'^\s*};*\s*(//|/\*).*\bnamespace\b', line)): - return - - # Look for matching comment at end of namespace. - # - # Note that we accept C style "/* */" comments for terminating - # namespaces, so that code that terminate namespaces inside - # preprocessor macros can be cpplint clean. - # - # We also accept stuff like "// end of namespace ." with the - # period at the end. - # - # Besides these, we don't accept anything else, otherwise we might - # get false negatives when existing comment is a substring of the - # expected namespace. - if self.name: - # Named namespace - if not Match((r'^\s*};*\s*(//|/\*).*\bnamespace\s+' + - re.escape(self.name) + r'[\*/\.\\\s]*$'), - line): - error(filename, linenum, 'readability/namespace', 5, - 'Namespace should be terminated with "// namespace %s"' % - self.name) - else: - # Anonymous namespace - if not Match(r'^\s*};*\s*(//|/\*).*\bnamespace[\*/\.\\\s]*$', line): - # If "// namespace anonymous" or "// anonymous namespace (more text)", - # mention "// anonymous namespace" as an acceptable form - if Match(r'^\s*}.*\b(namespace anonymous|anonymous namespace)\b', line): - error(filename, linenum, 'readability/namespace', 5, - 'Anonymous namespace should be terminated with "// namespace"' - ' or "// anonymous namespace"') + # Check how many lines is enclosed in this namespace. Don't issue + # warning for missing namespace comments if there aren't enough + # lines. However, do apply checks if there is already an end of + # namespace comment and it's incorrect. + # + # TODO(google): We always want to check end of namespace comments + # if a namespace is large, but sometimes we also want to apply the + # check if a short namespace contained nontrivial things (something + # other than forward declarations). There is currently no logic on + # deciding what these nontrivial things are, so this check is + # triggered by namespace size only, which works most of the time. + if linenum - self.starting_linenum < 10 and not re.match( + r"^\s*};*\s*(//|/\*).*\bnamespace\b", line + ): + return + + # Look for matching comment at end of namespace. + # + # Note that we accept C style "/* */" comments for terminating + # namespaces, so that code that terminate namespaces inside + # preprocessor macros can be cpplint clean. + # + # We also accept stuff like "// end of namespace ." with the + # period at the end. + # + # Besides these, we don't accept anything else, otherwise we might + # get false negatives when existing comment is a substring of the + # expected namespace. + if self.name: + # Named namespace + if not re.match( + (r"^\s*};*\s*(//|/\*).*\bnamespace\s+" + re.escape(self.name) + r"[\*/\.\\\s]*$"), + line, + ): + error( + filename, + linenum, + "readability/namespace", + 5, + f'Namespace should be terminated with "// namespace {self.name}"', + ) else: - error(filename, linenum, 'readability/namespace', 5, - 'Anonymous namespace should be terminated with "// namespace"') - + # Anonymous namespace + if not re.match(r"^\s*};*\s*(//|/\*).*\bnamespace[\*/\.\\\s]*$", line): + # If "// namespace anonymous" or "// anonymous namespace (more text)", + # mention "// anonymous namespace" as an acceptable form + if re.match(r"^\s*}.*\b(namespace anonymous|anonymous namespace)\b", line): + error( + filename, + linenum, + "readability/namespace", + 5, + 'Anonymous namespace should be terminated with "// namespace"' + ' or "// anonymous namespace"', + ) + else: + error( + filename, + linenum, + "readability/namespace", + 5, + 'Anonymous namespace should be terminated with "// namespace"', + ) + + +class _WrappedInfo(_BlockInfo): + """Stores information about parentheses, initializer lists, etc. + Not exactly a block but we do need the same signature. + Needed to avoid namespace indentation false positives, + though parentheses tracking would slow us down a lot + and is effectively already done by open_parentheses.""" -class _PreprocessorInfo(object): - """Stores checkpoints of nesting stacks when #if/#else is seen.""" - - def __init__(self, stack_before_if): - # The entire nesting stack before #if - self.stack_before_if = stack_before_if + pass - # The entire nesting stack up to #else - self.stack_before_else = [] - # Whether we have already seen #else or #elif - self.seen_else = False +class _MemInitListInfo(_WrappedInfo): + """Stores information about member initializer lists.""" + pass -class NestingState(object): - """Holds states related to parsing braces.""" - def __init__(self): - # Stack for tracking all braces. An object is pushed whenever we - # see a "{", and popped when we see a "}". Only 3 types of - # objects are possible: - # - _ClassInfo: a class or struct. - # - _NamespaceInfo: a namespace. - # - _BlockInfo: some other type of block. - self.stack = [] +class _PreprocessorInfo: + """Stores checkpoints of nesting stacks when #if/#else is seen.""" - # Top of the previous stack before each Update(). - # - # Because the nesting_stack is updated at the end of each line, we - # had to do some convoluted checks to find out what is the current - # scope at the beginning of the line. This check is simplified by - # saving the previous top of nesting stack. - # - # We could save the full stack, but we only need the top. Copying - # the full nesting stack would slow down cpplint by ~10%. - self.previous_stack_top = [] + def __init__(self, stack_before_if): + # The entire nesting stack before #if + self.stack_before_if = stack_before_if - # Stack of _PreprocessorInfo objects. - self.pp_stack = [] + # The entire nesting stack up to #else + self.stack_before_else = [] - def SeenOpenBrace(self): - """Check if we have seen the opening brace for the innermost block. + # Whether we have already seen #else or #elif + self.seen_else = False - Returns: - True if we have seen the opening brace, False if the innermost - block is still expecting an opening brace. - """ - return (not self.stack) or self.stack[-1].seen_open_brace - def InNamespaceBody(self): - """Check if we are currently one level inside a namespace body. +class NestingState: + """Holds states related to parsing braces.""" - Returns: - True if top of the stack is a namespace block, False otherwise. - """ - return self.stack and isinstance(self.stack[-1], _NamespaceInfo) + def __init__(self): + # Stack for tracking all braces. An object is pushed whenever we + # see a "{", and popped when we see a "}". Only 3 types of + # objects are possible: + # - _ClassInfo: a class or struct. + # - _NamespaceInfo: a namespace. + # - _BlockInfo: some other type of block. + self.stack: list[_BlockInfo] = [] - def InExternC(self): - """Check if we are currently one level inside an 'extern "C"' block. + # Top of the previous stack before each Update(). + # + # Because the nesting_stack is updated at the end of each line, we + # had to do some convoluted checks to find out what is the current + # scope at the beginning of the line. This check is simplified by + # saving the previous top of nesting stack. + # + # We could save the full stack, but we only need the top. Copying + # the full nesting stack would slow down cpplint by ~10%. + self.previous_stack_top: _BlockInfo | None = None + + # The number of open parentheses in the previous stack top before the last update. + # Used to prevent false indentation detection when e.g. a function parameter is indented. + # We can't use previous_stack_top, a shallow copy whose open_parentheses value is updated. + self.previous_open_parentheses = 0 + + # The last stack item we popped. + self.popped_top: _BlockInfo | None = None + + # Stack of _PreprocessorInfo objects. + self.pp_stack = [] + + def SeenOpenBrace(self): + """Check if we have seen the opening brace for the innermost block. + + Returns: + True if we have seen the opening brace, False if the innermost + block is still expecting an opening brace. + """ + return (not self.stack) or self.stack[-1].seen_open_brace + + def InNamespaceBody(self): + """Check if we are currently one level inside a namespace body. + + Returns: + True if top of the stack is a namespace block, False otherwise. + """ + return self.stack and isinstance(self.stack[-1], _NamespaceInfo) + + def InExternC(self): + """Check if we are currently one level inside an 'extern "C"' block. + + Returns: + True if top of the stack is an extern block, False otherwise. + """ + return self.stack and isinstance(self.stack[-1], _ExternCInfo) + + def InClassDeclaration(self): + """Check if we are currently one level inside a class or struct declaration. + + Returns: + True if top of the stack is a class/struct, False otherwise. + """ + return self.stack and isinstance(self.stack[-1], _ClassInfo) + + def InAsmBlock(self): + """Check if we are currently one level inside an inline ASM block. + + Returns: + True if the top of the stack is a block containing inline ASM. + """ + return self.stack and self.stack[-1].inline_asm != _NO_ASM + + def InBlockScope(self): + """Check if we are currently one level inside a block scope. + + Returns: + True if top of the stack is a block scope, False otherwise. + """ + return len(self.stack) > 0 and not isinstance(self.stack[-1], _NamespaceInfo) + + def InTemplateArgumentList(self, clean_lines, linenum, pos): + """Check if current position is inside template argument list. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + pos: position just after the suspected template argument. + Returns: + True if (linenum, pos) is inside template arguments. + """ + while linenum < clean_lines.NumLines(): + # Find the earliest character that might indicate a template argument + line = clean_lines.elided[linenum] + match = re.match(r"^[^{};=\[\]\.<>]*(.)", line[pos:]) + if not match: + linenum += 1 + pos = 0 + continue + token = match.group(1) + pos += len(match.group(0)) + + # These things do not look like template argument list: + # class Suspect { + # class Suspect x; } + if token in ("{", "}", ";"): + return False - Returns: - True if top of the stack is an extern block, False otherwise. - """ - return self.stack and isinstance(self.stack[-1], _ExternCInfo) + # These things look like template argument list: + # template + # template + # template + # template + if token in (">", "=", "[", "]", "."): + return True + + # Check if token is an unmatched '<'. + # If not, move on to the next character. + if token != "<": + pos += 1 + if pos >= len(line): + linenum += 1 + pos = 0 + continue + + # We can't be sure if we just find a single '<', and need to + # find the matching '>'. + (_, end_line, end_pos) = CloseExpression(clean_lines, linenum, pos - 1) + if end_pos < 0: + # Not sure if template argument list or syntax error in file + return False + linenum = end_line + pos = end_pos + return False - def InClassDeclaration(self): - """Check if we are currently one level inside a class or struct declaration. + def UpdatePreprocessor(self, line): + """Update preprocessor stack. + + We need to handle preprocessors due to classes like this: + #ifdef SWIG + struct ResultDetailsPageElementExtensionPoint { + #else + struct ResultDetailsPageElementExtensionPoint : public Extension { + #endif + + We make the following assumptions (good enough for most files): + - Preprocessor condition evaluates to true from #if up to first + #else/#elif/#endif. + + - Preprocessor condition evaluates to false from #else/#elif up + to #endif. We still perform lint checks on these lines, but + these do not affect nesting stack. + + Args: + line: current line to check. + """ + if re.match(r"^\s*#\s*(if|ifdef|ifndef)\b", line): + # Beginning of #if block, save the nesting stack here. The saved + # stack will allow us to restore the parsing state in the #else case. + self.pp_stack.append(_PreprocessorInfo(copy.deepcopy(self.stack))) + elif re.match(r"^\s*#\s*(else|elif)\b", line): + # Beginning of #else block + if self.pp_stack: + if not self.pp_stack[-1].seen_else: + # This is the first #else or #elif block. Remember the + # whole nesting stack up to this point. This is what we + # keep after the #endif. + self.pp_stack[-1].seen_else = True + self.pp_stack[-1].stack_before_else = copy.deepcopy(self.stack) + + # Restore the stack to how it was before the #if + self.stack = copy.deepcopy(self.pp_stack[-1].stack_before_if) + else: + # TODO(google): unexpected #else, issue warning? + pass + elif re.match(r"^\s*#\s*endif\b", line): + # End of #if or #else blocks. + if self.pp_stack: + # If we saw an #else, we will need to restore the nesting + # stack to its former state before the #else, otherwise we + # will just continue from where we left off. + if self.pp_stack[-1].seen_else: + # Here we can just use a shallow copy since we are the last + # reference to it. + self.stack = self.pp_stack[-1].stack_before_else + # Drop the corresponding #if + self.pp_stack.pop() + else: + # TODO(google): unexpected #endif, issue warning? + pass + + def _Pop(self): + """Pop the innermost state (top of the stack) and remember the popped item.""" + self.popped_top = self.stack.pop() + + def _CountOpenParentheses(self, line: str): + # Count parentheses. This is to avoid adding struct arguments to + # the nesting stack. + if self.stack: + inner_block = self.stack[-1] + depth_change = line.count("(") - line.count(")") + inner_block.open_parentheses += depth_change + + # Also check if we are starting or ending an inline assembly block. + if inner_block.inline_asm in (_NO_ASM, _END_ASM): + if ( + depth_change != 0 + and inner_block.open_parentheses == 1 + and _MATCH_ASM.match(line) + ): + # Enter assembly block + inner_block.inline_asm = _INSIDE_ASM + else: + # Not entering assembly block. If previous line was _END_ASM, + # we will now shift to _NO_ASM state. + inner_block.inline_asm = _NO_ASM + elif inner_block.inline_asm == _INSIDE_ASM and inner_block.open_parentheses == 0: + # Exit assembly block + inner_block.inline_asm = _END_ASM + + def _UpdateNamesapce(self, line: str, linenum: int) -> str | None: + """ + Match start of namespace, append to stack, and consume line + Args: + line: Line to check and consume + linenum: Line number of the line to check + + Returns: + The consumed line if namespace matched; None otherwise + """ + # Match start of namespace. The "\b\s*" below catches namespace + # declarations even if it weren't followed by a whitespace, this + # is so that we don't confuse our namespace checker. The + # missing spaces will be flagged by CheckSpacing. + namespace_decl_match = re.match(r"^\s*namespace\b\s*([:\w]+)?(.*)$", line) + if not namespace_decl_match: + return None + + new_namespace = _NamespaceInfo(namespace_decl_match.group(1), linenum) + self.stack.append(new_namespace) + + line = namespace_decl_match.group(2) + if line.find("{") != -1: + new_namespace.seen_open_brace = True + line = line[line.find("{") + 1 :] + return line + + def _UpdateConstructor(self, line: str, linenum: int, class_name: str | None = None): + """ + Check if the given line is a constructor. + Args: + line: Line to check. + class_name: If line checked is inside of a class block, a str of the class's name; + otherwise, None. + """ + if not class_name: + if not re.match(r"\s*(\w*)\s*::\s*\1\s*\(", line): + return + elif not re.match(rf"\s*{re.escape(class_name)}\s*\(", line): + return + + self.stack.append(_ConstructorInfo(linenum)) + + # TODO(google): Update() is too long, but we will refactor later. + def Update(self, filename: str, clean_lines: CleansedLines, linenum: int, error): + """Update nesting state with current line. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Remember top of the previous nesting stack. + # + # The stack is always pushed/popped and not modified in place, so + # we can just do a shallow copy instead of copy.deepcopy. Using + # deepcopy would slow down cpplint by ~28%. + if self.stack: + self.previous_stack_top = self.stack[-1] + self.previous_open_parentheses = self.stack[-1].open_parentheses + else: + self.previous_stack_top = None + + # Update pp_stack + self.UpdatePreprocessor(line) + + self._CountOpenParentheses(line) + + # Consume namespace declaration at the beginning of the line. Do + # this in a loop so that we catch same line declarations like this: + # namespace proto2 { namespace bridge { class MessageSet; } } + while (new_line := self._UpdateNamesapce(line, linenum)) is not None: # could be empty str + line = new_line + + # Look for a class declaration in whatever is left of the line + # after parsing namespaces. The regexp accounts for decorated classes + # such as in: + # class LOCKABLE API Object { + # }; + class_decl_match = re.match( + r"^(\s*(?:template\s*<[\w\s<>,:=]*>\s*)?" + r"(class|struct)\s+(?:[a-zA-Z0-9_]+\s+)*(\w+(?:::\w+)*))" + r"(.*)$", + line, + ) + if class_decl_match and (not self.stack or self.stack[-1].open_parentheses == 0): + # We do not want to accept classes that are actually template arguments: + # template , + # template class Ignore3> + # void Function() {}; + # + # To avoid template argument cases, we scan forward and look for + # an unmatched '>'. If we see one, assume we are inside a + # template argument list. + end_declaration = len(class_decl_match.group(1)) + if not self.InTemplateArgumentList(clean_lines, linenum, end_declaration): + self.stack.append( + _ClassInfo( + class_decl_match.group(3), class_decl_match.group(2), clean_lines, linenum + ) + ) + line = class_decl_match.group(4) + + # If we have not yet seen the opening brace for the innermost block, + # run checks here. + if not self.SeenOpenBrace(): + self.stack[-1].CheckBegin(filename, clean_lines, linenum, error) + + # Update access control if we are directly inside a class/struct + if self.stack and isinstance(self.stack[-1], _ClassInfo): + if self.stack[-1].seen_open_brace: + classinfo: _ClassInfo = self.stack[-1] + # Update access control + if access_match := re.match( + r"^(.*)\b(public|private|protected|signals)(\s+(?:slots\s*)?)?" + r":([^:].*|$)", + line, + ): + classinfo.access = access_match.group(2) + + # Check that access keywords are indented +1 space. Skip this + # check if the keywords are not preceded by whitespaces. + indent = access_match.group(1) + if len(indent) != classinfo.class_indent + 1 and re.match(r"^\s*$", indent): + if classinfo.is_struct: + parent = "struct " + classinfo.name + else: + parent = "class " + classinfo.name + slots = "" + if access_match.group(3): + slots = access_match.group(3) + error( + filename, + linenum, + "whitespace/indent", + 3, + f"{access_match.group(2)}{slots}:" + f" should be indented +1 space inside {parent}", + ) + + line = access_match.group(4) + else: + self._UpdateConstructor(line, linenum, class_name=classinfo.name) + else: # Not in class + self._UpdateConstructor(line, linenum) + + # If brace not open and we just finished a parenthetical definition, + # check if we're in a member initializer list following a constructor. + if ( + self.stack + and ( + isinstance(self.stack[-1], _ConstructorInfo) + or isinstance(self.previous_stack_top, _ConstructorInfo) + ) + and not self.stack[-1].seen_open_brace + and re.search(r"[^:]:[^:]", line) + ): + self.stack.append(_MemInitListInfo(linenum, seen_open_brace=False)) + + # Consume braces or semicolons from what's left of the line + while True: + # Match first brace, semicolon, or closed parenthesis. + matched = re.match(r"^[^{;)}]*([{;)}])(.*)$", line) + if not matched: + break + + token = matched.group(1) + if token == "{": + # If namespace or class hasn't seen an opening brace yet, mark + # namespace/class head as complete. Push a new block onto the + # stack otherwise. + if not self.SeenOpenBrace(): + # End of initializer list wrap if present + if isinstance(self.stack[-1], _MemInitListInfo): + self._Pop() + self.stack[-1].seen_open_brace = True + elif re.match(r'^extern\s*"[^"]*"\s*\{', line): + self.stack.append(_ExternCInfo(linenum)) + else: + self.stack.append(_BlockInfo(linenum, True)) + if _MATCH_ASM.match(line): + self.stack[-1].inline_asm = _BLOCK_ASM + elif token == ";": + # If we haven't seen an opening brace yet, but we already saw + # a semicolon, this is probably a forward declaration. Pop + # the stack for these. + if not self.SeenOpenBrace(): + self._Pop() + elif token == ")": + # Similarly, if we haven't seen an opening brace yet, but we + # already saw a closing parenthesis, then these are probably + # function arguments with extra "class" or "struct" keywords. + # Also pop these stack for these. + if ( + self.stack + and not self.stack[-1].seen_open_brace + and isinstance(self.stack[-1], _ClassInfo) + ): + self._Pop() + else: # token == '}' + # Perform end of block checks and pop the stack. + if self.stack: + self.stack[-1].CheckEnd(filename, clean_lines, linenum, error) + self._Pop() + line = matched.group(2) + + def InnermostClass(self): + """Get class info on the top of the stack. + + Returns: + A _ClassInfo object if we are inside a class, or None otherwise. + """ + for i in range(len(self.stack), 0, -1): + classinfo = self.stack[i - 1] + if isinstance(classinfo, _ClassInfo): + return classinfo + return None - Returns: - True if top of the stack is a class/struct, False otherwise. - """ - return self.stack and isinstance(self.stack[-1], _ClassInfo) - def InAsmBlock(self): - """Check if we are currently one level inside an inline ASM block. +def CheckForNonStandardConstructs(filename, clean_lines, linenum, nesting_state, error): + r"""Logs an error if we see certain non-ANSI constructs ignored by gcc-2. - Returns: - True if the top of the stack is a block containing inline ASM. - """ - return self.stack and self.stack[-1].inline_asm != _NO_ASM + Complain about several constructs which gcc-2 accepts, but which are + not standard C++. Warning about these in lint is one way to ease the + transition to new compilers. + - put storage class first (e.g. "static const" instead of "const static"). + - "%lld" instead of %qd" in printf-type functions. + - "%1$d" is non-standard in printf-type functions. + - "\%" is an undefined character escape sequence. + - text after #endif is not allowed. + - invalid inner-style forward declaration. + - >? and ?= and ]*(.)', line[pos:]) - if not match: - linenum += 1 - pos = 0 - continue - token = match.group(1) - pos += len(match.group(0)) - - # These things do not look like template argument list: - # class Suspect { - # class Suspect x; } - if token in ('{', '}', ';'): return False - - # These things look like template argument list: - # template - # template - # template - # template - if token in ('>', '=', '[', ']', '.'): return True - - # Check if token is an unmatched '<'. - # If not, move on to the next character. - if token != '<': - pos += 1 - if pos >= len(line): - linenum += 1 - pos = 0 - continue - - # We can't be sure if we just find a single '<', and need to - # find the matching '>'. - (_, end_line, end_pos) = CloseExpression(clean_lines, linenum, pos - 1) - if end_pos < 0: - # Not sure if template argument list or syntax error in file - return False - linenum = end_line - pos = end_pos - return False - def UpdatePreprocessor(self, line): - """Update preprocessor stack. + # Remove comments from the line, but leave in strings for now. + line = clean_lines.lines[linenum] + + if re.search(r'printf\s*\(.*".*%[-+ ]?\d*q', line): + error( + filename, + linenum, + "runtime/printf_format", + 3, + "%q in format strings is deprecated. Use %ll instead.", + ) + + if re.search(r'printf\s*\(.*".*%\d+\$', line): + error( + filename, + linenum, + "runtime/printf_format", + 2, + "%N$ formats are unconventional. Try rewriting to avoid them.", + ) + + # Remove escaped backslashes before looking for undefined escapes. + line = line.replace("\\\\", "") + + if re.search(r'("|\').*\\(%|\[|\(|{)', line): + error( + filename, + linenum, + "build/printf_format", + 3, + "%, [, (, and { are undefined character escapes. Unescape them.", + ) + + # For the rest, work with both comments and strings removed. + line = clean_lines.elided[linenum] + + if re.search( + r"\b(const|volatile|void|char|short|int|long" + r"|float|double|signed|unsigned" + r"|schar|u?int8_t|u?int16_t|u?int32_t|u?int64_t)" + r"\s+(register|static|extern|typedef)\b", + line, + ): + error( + filename, + linenum, + "build/storage_class", + 5, + "Storage-class specifier (static, extern, typedef, etc) should be " + "at the beginning of the declaration.", + ) + + if re.match(r"\s*#\s*endif\s*[^/\s]+", line): + error( + filename, + linenum, + "build/endif_comment", + 5, + "Uncommented text after #endif is non-standard. Use a comment.", + ) + + if re.match(r"\s*class\s+(\w+\s*::\s*)+\w+\s*;", line): + error( + filename, + linenum, + "build/forward_decl", + 5, + "Inner-style forward declarations are invalid. Remove this line.", + ) + + if re.search(r"(\w+|[+-]?\d+(\.\d*)?)\s*(<|>)\?=?\s*(\w+|[+-]?\d+)(\.\d*)?", line): + error( + filename, + linenum, + "build/deprecated", + 3, + ">? and ))?' + # r'\s*const\s*' + type_name + '\s*&\s*\w+\s*;' + error( + filename, + linenum, + "runtime/member_string_references", + 2, + "const string& members are dangerous. It is much better to use " + "alternatives, such as pointers or simple constants.", + ) + + # Everything else in this function operates on class declarations. + # Return early if the top of the nesting stack is not a class, or if + # the class head is not completed yet. + classinfo = nesting_state.InnermostClass() + if not classinfo or not classinfo.seen_open_brace: + return - We need to handle preprocessors due to classes like this: - #ifdef SWIG - struct ResultDetailsPageElementExtensionPoint { - #else - struct ResultDetailsPageElementExtensionPoint : public Extension { - #endif + # The class may have been declared with namespace or classname qualifiers. + # The constructor and destructor will not have those qualifiers. + base_classname = classinfo.name.split("::")[-1] + + # Look for single-argument constructors that aren't marked explicit. + # Technically a valid construct, but against style. + explicit_constructor_match = re.match( + r"\s+(?:(?:inline|constexpr)\s+)*(explicit\s+)?" + rf"(?:(?:inline|constexpr)\s+)*{re.escape(base_classname)}\s*" + r"\(((?:[^()]|\([^()]*\))*)\)", + line, + ) - We make the following assumptions (good enough for most files): - - Preprocessor condition evaluates to true from #if up to first - #else/#elif/#endif. + if explicit_constructor_match: + is_marked_explicit = explicit_constructor_match.group(1) - - Preprocessor condition evaluates to false from #else/#elif up - to #endif. We still perform lint checks on these lines, but - these do not affect nesting stack. + if not explicit_constructor_match.group(2): + constructor_args = [] + else: + constructor_args = explicit_constructor_match.group(2).split(",") + + # collapse arguments so that commas in template parameter lists and function + # argument parameter lists don't split arguments in two + i = 0 + while i < len(constructor_args): + constructor_arg = constructor_args[i] + while constructor_arg.count("<") > constructor_arg.count(">") or constructor_arg.count( + "(" + ) > constructor_arg.count(")"): + constructor_arg += "," + constructor_args[i + 1] + del constructor_args[i + 1] + constructor_args[i] = constructor_arg + i += 1 + + variadic_args = [arg for arg in constructor_args if "&&..." in arg] + defaulted_args = [arg for arg in constructor_args if "=" in arg] + noarg_constructor = ( + not constructor_args # empty arg list + or + # 'void' arg specifier + (len(constructor_args) == 1 and constructor_args[0].strip() == "void") + ) + onearg_constructor = ( + ( + len(constructor_args) == 1 # exactly one arg + and not noarg_constructor + ) + or + # all but at most one arg defaulted + ( + len(constructor_args) >= 1 + and not noarg_constructor + and len(defaulted_args) >= len(constructor_args) - 1 + ) + or + # variadic arguments with zero or one argument + (len(constructor_args) <= 2 and len(variadic_args) >= 1) + ) + initializer_list_constructor = bool( + onearg_constructor + and re.search(r"\bstd\s*::\s*initializer_list\b", constructor_args[0]) + ) + copy_constructor = bool( + onearg_constructor + and re.match( + r"((const\s+(volatile\s+)?)?|(volatile\s+(const\s+)?))?" + rf"{re.escape(base_classname)}(\s*<[^>]*>)?(\s+const)?\s*(?:<\w+>\s*)?&", + constructor_args[0].strip(), + ) + ) + + if ( + not is_marked_explicit + and onearg_constructor + and not initializer_list_constructor + and not copy_constructor + ): + if defaulted_args or variadic_args: + error( + filename, + linenum, + "runtime/explicit", + 4, + "Constructors callable with one argument should be marked explicit.", + ) + else: + error( + filename, + linenum, + "runtime/explicit", + 4, + "Single-parameter constructors should be marked explicit.", + ) - Args: - line: current line to check. - """ - if Match(r'^\s*#\s*(if|ifdef|ifndef)\b', line): - # Beginning of #if block, save the nesting stack here. The saved - # stack will allow us to restore the parsing state in the #else case. - self.pp_stack.append(_PreprocessorInfo(copy.deepcopy(self.stack))) - elif Match(r'^\s*#\s*(else|elif)\b', line): - # Beginning of #else block - if self.pp_stack: - if not self.pp_stack[-1].seen_else: - # This is the first #else or #elif block. Remember the - # whole nesting stack up to this point. This is what we - # keep after the #endif. - self.pp_stack[-1].seen_else = True - self.pp_stack[-1].stack_before_else = copy.deepcopy(self.stack) - - # Restore the stack to how it was before the #if - self.stack = copy.deepcopy(self.pp_stack[-1].stack_before_if) - else: - # TODO(unknown): unexpected #else, issue warning? - pass - elif Match(r'^\s*#\s*endif\b', line): - # End of #if or #else blocks. - if self.pp_stack: - # If we saw an #else, we will need to restore the nesting - # stack to its former state before the #else, otherwise we - # will just continue from where we left off. - if self.pp_stack[-1].seen_else: - # Here we can just use a shallow copy since we are the last - # reference to it. - self.stack = self.pp_stack[-1].stack_before_else - # Drop the corresponding #if - self.pp_stack.pop() - else: - # TODO(unknown): unexpected #endif, issue warning? - pass - # TODO(unknown): Update() is too long, but we will refactor later. - def Update(self, filename, clean_lines, linenum, error): - """Update nesting state with current line. +def CheckSpacingForFunctionCall(filename, clean_lines, linenum, error): + """Checks for the correctness of various spacing around function calls. Args: filename: The name of the current file. @@ -3154,3909 +3929,3967 @@ def Update(self, filename, clean_lines, linenum, error): """ line = clean_lines.elided[linenum] - # Remember top of the previous nesting stack. - # - # The stack is always pushed/popped and not modified in place, so - # we can just do a shallow copy instead of copy.deepcopy. Using - # deepcopy would slow down cpplint by ~28%. - if self.stack: - self.previous_stack_top = self.stack[-1] - else: - self.previous_stack_top = None - - # Update pp_stack - self.UpdatePreprocessor(line) - - # Count parentheses. This is to avoid adding struct arguments to - # the nesting stack. - if self.stack: - inner_block = self.stack[-1] - depth_change = line.count('(') - line.count(')') - inner_block.open_parentheses += depth_change - - # Also check if we are starting or ending an inline assembly block. - if inner_block.inline_asm in (_NO_ASM, _END_ASM): - if (depth_change != 0 and - inner_block.open_parentheses == 1 and - _MATCH_ASM.match(line)): - # Enter assembly block - inner_block.inline_asm = _INSIDE_ASM - else: - # Not entering assembly block. If previous line was _END_ASM, - # we will now shift to _NO_ASM state. - inner_block.inline_asm = _NO_ASM - elif (inner_block.inline_asm == _INSIDE_ASM and - inner_block.open_parentheses == 0): - # Exit assembly block - inner_block.inline_asm = _END_ASM - - # Consume namespace declaration at the beginning of the line. Do - # this in a loop so that we catch same line declarations like this: - # namespace proto2 { namespace bridge { class MessageSet; } } - while True: - # Match start of namespace. The "\b\s*" below catches namespace - # declarations even if it weren't followed by a whitespace, this - # is so that we don't confuse our namespace checker. The - # missing spaces will be flagged by CheckSpacing. - namespace_decl_match = Match(r'^\s*namespace\b\s*([:\w]+)?(.*)$', line) - if not namespace_decl_match: - break - - new_namespace = _NamespaceInfo(namespace_decl_match.group(1), linenum) - self.stack.append(new_namespace) - - line = namespace_decl_match.group(2) - if line.find('{') != -1: - new_namespace.seen_open_brace = True - line = line[line.find('{') + 1:] - - # Look for a class declaration in whatever is left of the line - # after parsing namespaces. The regexp accounts for decorated classes - # such as in: - # class LOCKABLE API Object { - # }; - class_decl_match = Match( - r'^(\s*(?:template\s*<[\w\s<>,:=]*>\s*)?' - r'(class|struct)\s+(?:[a-zA-Z0-9_]+\s+)*(\w+(?:::\w+)*))' - r'(.*)$', line) - if (class_decl_match and - (not self.stack or self.stack[-1].open_parentheses == 0)): - # We do not want to accept classes that are actually template arguments: - # template , - # template class Ignore3> - # void Function() {}; - # - # To avoid template argument cases, we scan forward and look for - # an unmatched '>'. If we see one, assume we are inside a - # template argument list. - end_declaration = len(class_decl_match.group(1)) - if not self.InTemplateArgumentList(clean_lines, linenum, end_declaration): - self.stack.append(_ClassInfo( - class_decl_match.group(3), class_decl_match.group(2), - clean_lines, linenum)) - line = class_decl_match.group(4) - - # If we have not yet seen the opening brace for the innermost block, - # run checks here. - if not self.SeenOpenBrace(): - self.stack[-1].CheckBegin(filename, clean_lines, linenum, error) - - # Update access control if we are inside a class/struct - if self.stack and isinstance(self.stack[-1], _ClassInfo): - classinfo = self.stack[-1] - access_match = Match( - r'^(.*)\b(public|private|protected|signals)(\s+(?:slots\s*)?)?' - r':(?:[^:]|$)', - line) - if access_match: - classinfo.access = access_match.group(2) - - # Check that access keywords are indented +1 space. Skip this - # check if the keywords are not preceded by whitespaces. - indent = access_match.group(1) - if (len(indent) != classinfo.class_indent + 1 and - Match(r'^\s*$', indent)): - if classinfo.is_struct: - parent = 'struct ' + classinfo.name - else: - parent = 'class ' + classinfo.name - slots = '' - if access_match.group(3): - slots = access_match.group(3) - error(filename, linenum, 'whitespace/indent', 3, - '%s%s: should be indented +1 space inside %s' % ( - access_match.group(2), slots, parent)) - - # Consume braces or semicolons from what's left of the line - while True: - # Match first brace, semicolon, or closed parenthesis. - matched = Match(r'^[^{;)}]*([{;)}])(.*)$', line) - if not matched: - break - - token = matched.group(1) - if token == '{': - # If namespace or class hasn't seen a opening brace yet, mark - # namespace/class head as complete. Push a new block onto the - # stack otherwise. - if not self.SeenOpenBrace(): - self.stack[-1].seen_open_brace = True - elif Match(r'^extern\s*"[^"]*"\s*\{', line): - self.stack.append(_ExternCInfo(linenum)) - else: - self.stack.append(_BlockInfo(linenum, True)) - if _MATCH_ASM.match(line): - self.stack[-1].inline_asm = _BLOCK_ASM - - elif token == ';' or token == ')': - # If we haven't seen an opening brace yet, but we already saw - # a semicolon, this is probably a forward declaration. Pop - # the stack for these. - # - # Similarly, if we haven't seen an opening brace yet, but we - # already saw a closing parenthesis, then these are probably - # function arguments with extra "class" or "struct" keywords. - # Also pop these stack for these. - if not self.SeenOpenBrace(): - self.stack.pop() - else: # token == '}' - # Perform end of block checks and pop the stack. - if self.stack: - self.stack[-1].CheckEnd(filename, clean_lines, linenum, error) - self.stack.pop() - line = matched.group(2) + # Since function calls often occur inside if/for/while/switch + # expressions - which have their own, more liberal conventions - we + # first see if we should be looking inside such an expression for a + # function call, to which we can apply more strict standards. + fncall = line # if there's no control flow construct, look at whole line + for pattern in ( + r"\bif\s*\((.*)\)\s*{", + r"\bfor\s*\((.*)\)\s*{", + r"\bwhile\s*\((.*)\)\s*[{;]", + r"\bswitch\s*\((.*)\)\s*{", + ): + match = re.search(pattern, line) + if match: + fncall = match.group(1) # look inside the parens for function calls + break - def InnermostClass(self): - """Get class info on the top of the stack. + # Except in if/for/while/switch, there should never be space + # immediately inside parens (eg "f( 3, 4 )"). We make an exception + # for nested parens ( (a+b) + c ). Likewise, there should never be + # a space before a ( when it's a function argument. I assume it's a + # function argument when the char before the whitespace is legal in + # a function name (alnum + _) and we're not starting a macro. Also ignore + # pointers and references to arrays and functions coz they're too tricky: + # we use a very simple way to recognize these: + # " (something)(maybe-something)" or + # " (something)(maybe-something," or + # " (something)[something]" + # Note that we assume the contents of [] to be short enough that + # they'll never need to wrap. + if ( # Ignore control structures. + not re.search(r"\b(if|elif|for|while|switch|return|new|delete|catch|sizeof)\b", fncall) + and + # Ignore pointers/references to functions. + not re.search(r" \([^)]+\)\([^)]*(\)|,$)", fncall) + and + # Ignore pointers/references to arrays. + not re.search(r" \([^)]+\)\[[^\]]+\]", fncall) + ): + if re.search(r"\w\s*\(\s(?!\s*\\$)", fncall): # a ( used for a fn call + error(filename, linenum, "whitespace/parens", 4, "Extra space after ( in function call") + elif re.search(r"\(\s+(?!(\s*\\)|\()", fncall): + error(filename, linenum, "whitespace/parens", 2, "Extra space after (") + if ( + re.search(r"\w\s+\(", fncall) + and not re.search(r"_{0,2}asm_{0,2}\s+_{0,2}volatile_{0,2}\s+\(", fncall) + and not re.search(r"#\s*define|typedef|using\s+\w+\s*=", fncall) + and not re.search(r"\w\s+\((\w+::)*\*\w+\)\(", fncall) + and not re.search(r"\bcase\s+\(", fncall) + ): + # TODO(google): Space after an operator function seem to be a common + # error, silence those for now by restricting them to highest verbosity. + if re.search(r"\boperator_*\b", line): + error( + filename, + linenum, + "whitespace/parens", + 0, + "Extra space before ( in function call", + ) + else: + error( + filename, + linenum, + "whitespace/parens", + 4, + "Extra space before ( in function call", + ) + # If the ) is followed only by a newline or a { + newline, assume it's + # part of a control statement (if/while/etc), and don't complain + if re.search(r"[^)]\s+\)\s*[^{\s]", fncall): + # If the closing parenthesis is preceded by only whitespaces, + # try to give a more descriptive error message. + if re.search(r"^\s+\)", fncall): + error( + filename, + linenum, + "whitespace/parens", + 2, + "Closing ) should be moved to the previous line", + ) + else: + error(filename, linenum, "whitespace/parens", 2, "Extra space before )") - Returns: - A _ClassInfo object if we are inside a class, or None otherwise. - """ - for i in range(len(self.stack), 0, -1): - classinfo = self.stack[i - 1] - if isinstance(classinfo, _ClassInfo): - return classinfo - return None - def CheckCompletedBlocks(self, filename, error): - """Checks that all classes and namespaces have been completely parsed. +def IsBlankLine(line): + """Returns true if the given line is blank. + + We consider a line to be blank if the line is empty or consists of + only white spaces. - Call this when all lines in a file have been processed. Args: - filename: The name of the current file. - error: The function to call with any errors found. + line: A line of a string. + + Returns: + True, if the given line is blank. """ - # Note: This test can result in false positives if #ifdef constructs - # get in the way of brace matching. See the testBuildClass test in - # cpplint_unittest.py for an example of this. - for obj in self.stack: - if isinstance(obj, _ClassInfo): - error(filename, obj.starting_linenum, 'build/class', 5, - 'Failed to find complete declaration of class %s' % - obj.name) - elif isinstance(obj, _NamespaceInfo): - error(filename, obj.starting_linenum, 'build/namespaces', 5, - 'Failed to find complete declaration of namespace %s' % - obj.name) - - -def CheckForNonStandardConstructs(filename, clean_lines, linenum, - nesting_state, error): - r"""Logs an error if we see certain non-ANSI constructs ignored by gcc-2. - - Complain about several constructs which gcc-2 accepts, but which are - not standard C++. Warning about these in lint is one way to ease the - transition to new compilers. - - put storage class first (e.g. "static const" instead of "const static"). - - "%lld" instead of %qd" in printf-type functions. - - "%1$d" is non-standard in printf-type functions. - - "\%" is an undefined character escape sequence. - - text after #endif is not allowed. - - invalid inner-style forward declaration. - - >? and ?= and )\?=?\s*(\w+|[+-]?\d+)(\.\d*)?', - line): - error(filename, linenum, 'build/deprecated', 3, - '>? and ))?' - # r'\s*const\s*' + type_name + '\s*&\s*\w+\s*;' - error(filename, linenum, 'runtime/member_string_references', 2, - 'const string& members are dangerous. It is much better to use ' - 'alternatives, such as pointers or simple constants.') - - # Everything else in this function operates on class declarations. - # Return early if the top of the nesting stack is not a class, or if - # the class head is not completed yet. - classinfo = nesting_state.InnermostClass() - if not classinfo or not classinfo.seen_open_brace: - return - - # The class may have been declared with namespace or classname qualifiers. - # The constructor and destructor will not have those qualifiers. - base_classname = classinfo.name.split('::')[-1] - - # Look for single-argument constructors that aren't marked explicit. - # Technically a valid construct, but against style. - explicit_constructor_match = Match( - r'\s+(?:(?:inline|constexpr)\s+)*(explicit\s+)?' - r'(?:(?:inline|constexpr)\s+)*%s\s*' - r'\(((?:[^()]|\([^()]*\))*)\)' - % re.escape(base_classname), - line) - - if explicit_constructor_match: - is_marked_explicit = explicit_constructor_match.group(1) - - if not explicit_constructor_match.group(2): - constructor_args = [] - else: - constructor_args = explicit_constructor_match.group(2).split(',') - - # collapse arguments so that commas in template parameter lists and function - # argument parameter lists don't split arguments in two - i = 0 - while i < len(constructor_args): - constructor_arg = constructor_args[i] - while (constructor_arg.count('<') > constructor_arg.count('>') or - constructor_arg.count('(') > constructor_arg.count(')')): - constructor_arg += ',' + constructor_args[i + 1] - del constructor_args[i + 1] - constructor_args[i] = constructor_arg - i += 1 - - variadic_args = [arg for arg in constructor_args if '&&...' in arg] - defaulted_args = [arg for arg in constructor_args if '=' in arg] - noarg_constructor = (not constructor_args or # empty arg list - # 'void' arg specifier - (len(constructor_args) == 1 and - constructor_args[0].strip() == 'void')) - onearg_constructor = ((len(constructor_args) == 1 and # exactly one arg - not noarg_constructor) or - # all but at most one arg defaulted - (len(constructor_args) >= 1 and - not noarg_constructor and - len(defaulted_args) >= len(constructor_args) - 1) or - # variadic arguments with zero or one argument - (len(constructor_args) <= 2 and - len(variadic_args) >= 1)) - initializer_list_constructor = bool( - onearg_constructor and - Search(r'\bstd\s*::\s*initializer_list\b', constructor_args[0])) - copy_constructor = bool( - onearg_constructor and - Match(r'((const\s+(volatile\s+)?)?|(volatile\s+(const\s+)?))?' - r'%s(\s*<[^>]*>)?(\s+const)?\s*(?:<\w+>\s*)?&' - % re.escape(base_classname), constructor_args[0].strip())) - - if (not is_marked_explicit and - onearg_constructor and - not initializer_list_constructor and - not copy_constructor): - if defaulted_args or variadic_args: - error(filename, linenum, 'runtime/explicit', 5, - 'Constructors callable with one argument ' - 'should be marked explicit.') - else: - error(filename, linenum, 'runtime/explicit', 5, - 'Single-parameter constructors should be marked explicit.') - elif is_marked_explicit and not onearg_constructor: - if noarg_constructor: - error(filename, linenum, 'runtime/explicit', 5, - 'Zero-parameter constructors should not be marked explicit.') + return not line or line.isspace() -def CheckSpacingForFunctionCall(filename, clean_lines, linenum, error): - """Checks for the correctness of various spacing around function calls. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Since function calls often occur inside if/for/while/switch - # expressions - which have their own, more liberal conventions - we - # first see if we should be looking inside such an expression for a - # function call, to which we can apply more strict standards. - fncall = line # if there's no control flow construct, look at whole line - for pattern in (r'\bif\s*\((.*)\)\s*{', - r'\bfor\s*\((.*)\)\s*{', - r'\bwhile\s*\((.*)\)\s*[{;]', - r'\bswitch\s*\((.*)\)\s*{'): - match = Search(pattern, line) - if match: - fncall = match.group(1) # look inside the parens for function calls - break - - # Except in if/for/while/switch, there should never be space - # immediately inside parens (eg "f( 3, 4 )"). We make an exception - # for nested parens ( (a+b) + c ). Likewise, there should never be - # a space before a ( when it's a function argument. I assume it's a - # function argument when the char before the whitespace is legal in - # a function name (alnum + _) and we're not starting a macro. Also ignore - # pointers and references to arrays and functions coz they're too tricky: - # we use a very simple way to recognize these: - # " (something)(maybe-something)" or - # " (something)(maybe-something," or - # " (something)[something]" - # Note that we assume the contents of [] to be short enough that - # they'll never need to wrap. - if ( # Ignore control structures. - not Search(r'\b(if|elif|for|while|switch|return|new|delete|catch|sizeof)\b', - fncall) and - # Ignore pointers/references to functions. - not Search(r' \([^)]+\)\([^)]*(\)|,$)', fncall) and - # Ignore pointers/references to arrays. - not Search(r' \([^)]+\)\[[^\]]+\]', fncall)): - if Search(r'\w\s*\(\s(?!\s*\\$)', fncall): # a ( used for a fn call - error(filename, linenum, 'whitespace/parens', 4, - 'Extra space after ( in function call') - elif Search(r'\(\s+(?!(\s*\\)|\()', fncall): - error(filename, linenum, 'whitespace/parens', 2, - 'Extra space after (') - if (Search(r'\w\s+\(', fncall) and - not Search(r'_{0,2}asm_{0,2}\s+_{0,2}volatile_{0,2}\s+\(', fncall) and - not Search(r'#\s*define|typedef|using\s+\w+\s*=', fncall) and - not Search(r'\w\s+\((\w+::)*\*\w+\)\(', fncall) and - not Search(r'\bcase\s+\(', fncall)): - # TODO(unknown): Space after an operator function seem to be a common - # error, silence those for now by restricting them to highest verbosity. - if Search(r'\boperator_*\b', line): - error(filename, linenum, 'whitespace/parens', 0, - 'Extra space before ( in function call') - else: - error(filename, linenum, 'whitespace/parens', 4, - 'Extra space before ( in function call') - # If the ) is followed only by a newline or a { + newline, assume it's - # part of a control statement (if/while/etc), and don't complain - if Search(r'[^)]\s+\)\s*[^{\s]', fncall): - # If the closing parenthesis is preceded by only whitespaces, - # try to give a more descriptive error message. - if Search(r'^\s+\)', fncall): - error(filename, linenum, 'whitespace/parens', 2, - 'Closing ) should be moved to the previous line') - else: - error(filename, linenum, 'whitespace/parens', 2, - 'Extra space before )') +def CheckForNamespaceIndentation(filename, nesting_state, clean_lines, line, error): + is_namespace_indent_item = len(nesting_state.stack) >= 1 and ( + isinstance(nesting_state.stack[-1], _NamespaceInfo) + or (isinstance(nesting_state.previous_stack_top, _NamespaceInfo)) + ) + if ShouldCheckNamespaceIndentation( + nesting_state, is_namespace_indent_item, clean_lines.elided, line + ): + CheckItemIndentationInNamespace(filename, clean_lines.elided, line, error) -def IsBlankLine(line): - """Returns true if the given line is blank. - - We consider a line to be blank if the line is empty or consists of - only white spaces. - - Args: - line: A line of a string. - - Returns: - True, if the given line is blank. - """ - return not line or line.isspace() - - -def CheckForNamespaceIndentation(filename, nesting_state, clean_lines, line, - error): - is_namespace_indent_item = ( - len(nesting_state.stack) > 1 and - nesting_state.stack[-1].check_namespace_indentation and - isinstance(nesting_state.previous_stack_top, _NamespaceInfo) and - nesting_state.previous_stack_top == nesting_state.stack[-2]) - - if ShouldCheckNamespaceIndentation(nesting_state, is_namespace_indent_item, - clean_lines.elided, line): - CheckItemIndentationInNamespace(filename, clean_lines.elided, - line, error) - - -def CheckForFunctionLengths(filename, clean_lines, linenum, - function_state, error): - """Reports for long function bodies. - - For an overview why this is done, see: - https://google.github.io/styleguide/cppguide.html#Write_Short_Functions - - Uses a simplistic algorithm assuming other style guidelines - (especially spacing) are followed. - Only checks unindented functions, so class members are unchecked. - Trivial bodies are unchecked, so constructors with huge initializer lists - may be missed. - Blank/comment lines are not counted so as to avoid encouraging the removal - of vertical space and comments just to get through a lint check. - NOLINT *on the last line of a function* disables this check. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - function_state: Current function name and lines in body so far. - error: The function to call with any errors found. - """ - lines = clean_lines.lines - line = lines[linenum] - joined_line = '' - - starting_func = False - regexp = r'(\w(\w|::|\*|\&|\s)*)\(' # decls * & space::name( ... - match_result = Match(regexp, line) - if match_result: - # If the name is all caps and underscores, figure it's a macro and - # ignore it, unless it's TEST or TEST_F. - function_name = match_result.group(1).split()[-1] - if function_name == 'TEST' or function_name == 'TEST_F' or ( - not Match(r'[A-Z_]+$', function_name)): - starting_func = True - - if starting_func: - body_found = False - for start_linenum in xrange(linenum, clean_lines.NumLines()): - start_line = lines[start_linenum] - joined_line += ' ' + start_line.lstrip() - if Search(r'(;|})', start_line): # Declarations and trivial functions - body_found = True - break # ... ignore - if Search(r'{', start_line): - body_found = True - function = Search(r'((\w|:)*)\(', line).group(1) - if Match(r'TEST', function): # Handle TEST... macros - parameter_regexp = Search(r'(\(.*\))', joined_line) - if parameter_regexp: # Ignore bad syntax - function += parameter_regexp.group(1) - else: - function += '()' - function_state.Begin(function) - break - if not body_found: - # No body for the function (or evidence of a non-function) was found. - error(filename, linenum, 'readability/fn_size', 5, - 'Lint failed to find start of function body.') - elif Match(r'^\}\s*$', line): # function end - function_state.Check(error, filename, linenum) - function_state.End() - elif not Match(r'^\s*$', line): - function_state.Count() # Count non-blank/non-comment lines. +def CheckForFunctionLengths(filename, clean_lines, linenum, function_state, error): + """Reports for long function bodies. + + For an overview why this is done, see: + https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Write_Short_Functions -_RE_PATTERN_TODO = re.compile(r'^//(\s*)TODO(\(.+?\))?:?(\s|$)?') + Uses a simplistic algorithm assuming other style guidelines + (especially spacing) are followed. + Only checks unindented functions, so class members are unchecked. + Trivial bodies are unchecked, so constructors with huge initializer lists + may be missed. + Blank/comment lines are not counted so as to avoid encouraging the removal + of vertical space and comments just to get through a lint check. + NOLINT *on the last line of a function* disables this check. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + function_state: Current function name and lines in body so far. + error: The function to call with any errors found. + """ + lines = clean_lines.lines + line = lines[linenum] + joined_line = "" + + starting_func = False + regexp = r"(\w(\w|::|\*|\&|\s)*)\(" # decls * & space::name( ... + if match_result := re.match(regexp, line): + # If the name is all caps and underscores, figure it's a macro and + # ignore it, unless it's TEST or TEST_F. + function_name = match_result.group(1).split()[-1] + if function_name in {"TEST", "TEST_F"} or not re.match(r"[A-Z_]+$", function_name): + starting_func = True + + if starting_func: + body_found = False + for start_linenum in range(linenum, clean_lines.NumLines()): + start_line = lines[start_linenum] + joined_line += " " + start_line.lstrip() + if re.search(r"(;|})", start_line): # Declarations and trivial functions + body_found = True + break # ... ignore + if re.search(r"{", start_line): + body_found = True + function = re.search(r"((\w|:)*)\(", line).group(1) + if re.match(r"TEST", function): # Handle TEST... macros + parameter_regexp = re.search(r"(\(.*\))", joined_line) + if parameter_regexp: # Ignore bad syntax + function += parameter_regexp.group(1) + else: + function += "()" + function_state.Begin(function) + break + if not body_found: + # No body for the function (or evidence of a non-function) was found. + error( + filename, + linenum, + "readability/fn_size", + 5, + "Lint failed to find start of function body.", + ) + elif re.match(r"^\}\s*$", line): # function end + function_state.Check(error, filename, linenum) + function_state.End() + elif not re.match(r"^\s*$", line): + function_state.Count() # Count non-blank/non-comment lines. + + +_RE_PATTERN_TODO = re.compile(r"^//(\s*)TODO(\(.+?\))?:?(\s|$)?") def CheckComment(line, filename, linenum, next_line_start, error): - """Checks for common mistakes in comments. - - Args: - line: The line in question. - filename: The name of the current file. - linenum: The number of the line to check. - next_line_start: The first non-whitespace column of the next line. - error: The function to call with any errors found. - """ - commentpos = line.find('//') - if commentpos != -1: - # Check if the // may be in quotes. If so, ignore it - if re.sub(r'\\.', '', line[0:commentpos]).count('"') % 2 == 0: - # Allow one space for new scopes, two spaces otherwise: - if (not (Match(r'^.*{ *//', line) and next_line_start == commentpos) and - ((commentpos >= 1 and - line[commentpos-1] not in string.whitespace) or - (commentpos >= 2 and - line[commentpos-2] not in string.whitespace))): - error(filename, linenum, 'whitespace/comments', 2, - 'At least two spaces is best between code and comments') - - # Checks for common mistakes in TODO comments. - comment = line[commentpos:] - match = _RE_PATTERN_TODO.match(comment) - if match: - # One whitespace is correct; zero whitespace is handled elsewhere. - leading_whitespace = match.group(1) - if len(leading_whitespace) > 1: - error(filename, linenum, 'whitespace/todo', 2, - 'Too many spaces before TODO') - - username = match.group(2) - if not username: - error(filename, linenum, 'readability/todo', 2, - 'Missing username in TODO; it should look like ' - '"// TODO(my_username): Stuff."') - - middle_whitespace = match.group(3) - # Comparisons made explicit for correctness -- pylint: disable=g-explicit-bool-comparison - if middle_whitespace != ' ' and middle_whitespace != '': - error(filename, linenum, 'whitespace/todo', 2, - 'TODO(my_username) should be followed by a space') - - # If the comment contains an alphanumeric character, there - # should be a space somewhere between it and the // unless - # it's a /// or //! Doxygen comment. - if (Match(r'//[^ ]*\w', comment) and - not Match(r'(///|//\!)(\s+|$)', comment)): - error(filename, linenum, 'whitespace/comments', 4, - 'Should have a space between // and comment') + """Checks for common mistakes in comments. + + Args: + line: The line in question. + filename: The name of the current file. + linenum: The number of the line to check. + next_line_start: The first non-whitespace column of the next line. + error: The function to call with any errors found. + """ + commentpos = line.find("//") + if commentpos != -1: + # Check if the // may be in quotes. If so, ignore it + if re.sub(r"\\.", "", line[0:commentpos]).count('"') % 2 == 0: + # Allow one space for new scopes, two spaces otherwise: + if not (re.match(r"^.*{ *//", line) and next_line_start == commentpos) and ( + (commentpos >= 1 and line[commentpos - 1] not in string.whitespace) + or (commentpos >= 2 and line[commentpos - 2] not in string.whitespace) + ): + error( + filename, + linenum, + "whitespace/comments", + 2, + "At least two spaces is best between code and comments", + ) + + # Checks for common mistakes in TODO comments. + comment = line[commentpos:] + match = _RE_PATTERN_TODO.match(comment) + if match: + # One whitespace is correct; zero whitespace is handled elsewhere. + leading_whitespace = match.group(1) + if len(leading_whitespace) > 1: + error(filename, linenum, "whitespace/todo", 2, "Too many spaces before TODO") + + username = match.group(2) + if not username: + error( + filename, + linenum, + "readability/todo", + 2, + "Missing username in TODO; it should look like " + '"// TODO(my_username): Stuff."', + ) + + middle_whitespace = match.group(3) + # Comparisons made explicit for correctness + # -- pylint: disable=g-explicit-bool-comparison + if middle_whitespace not in {" ", ""}: + error( + filename, + linenum, + "whitespace/todo", + 2, + "TODO(my_username) should be followed by a space", + ) + + # If the comment contains an alphanumeric character, there + # should be a space somewhere between it and the // unless + # it's a /// or //! Doxygen comment. + if re.match(r"//[^ ]*\w", comment) and not re.match(r"(///|//\!)(\s+|$)", comment): + error( + filename, + linenum, + "whitespace/comments", + 4, + "Should have a space between // and comment", + ) def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): - """Checks for the correctness of various spacing issues in the code. - - Things we check for: spaces around operators, spaces after - if/for/while/switch, no spaces around parens in function calls, two - spaces between code and comment, don't start a block with a blank - line, don't end a function with a blank line, don't add a blank line - after public/protected/private, don't have too many blank lines in a row. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - - # Don't use "elided" lines here, otherwise we can't check commented lines. - # Don't want to use "raw" either, because we don't want to check inside C++11 - # raw strings, - raw = clean_lines.lines_without_raw_strings - line = raw[linenum] - - # Before nixing comments, check if the line is blank for no good - # reason. This includes the first line after a block is opened, and - # blank lines at the end of a function (ie, right before a line like '}' - # - # Skip all the blank line checks if we are immediately inside a - # namespace body. In other words, don't issue blank line warnings - # for this block: - # namespace { - # - # } - # - # A warning about missing end of namespace comments will be issued instead. - # - # Also skip blank line checks for 'extern "C"' blocks, which are formatted - # like namespaces. - if (IsBlankLine(line) and - not nesting_state.InNamespaceBody() and - not nesting_state.InExternC()): - elided = clean_lines.elided - prev_line = elided[linenum - 1] - prevbrace = prev_line.rfind('{') - # TODO(unknown): Don't complain if line before blank line, and line after, - # both start with alnums and are indented the same amount. - # This ignores whitespace at the start of a namespace block - # because those are not usually indented. - if prevbrace != -1 and prev_line[prevbrace:].find('}') == -1: - # OK, we have a blank line at the start of a code block. Before we - # complain, we check if it is an exception to the rule: The previous - # non-empty line has the parameters of a function header that are indented - # 4 spaces (because they did not fit in a 80 column line when placed on - # the same line as the function name). We also check for the case where - # the previous line is indented 6 spaces, which may happen when the - # initializers of a constructor do not fit into a 80 column line. - exception = False - if Match(r' {6}\w', prev_line): # Initializer list? - # We are looking for the opening column of initializer list, which - # should be indented 4 spaces to cause 6 space indentation afterwards. - search_position = linenum-2 - while (search_position >= 0 - and Match(r' {6}\w', elided[search_position])): - search_position -= 1 - exception = (search_position >= 0 - and elided[search_position][:5] == ' :') - else: - # Search for the function arguments or an initializer list. We use a - # simple heuristic here: If the line is indented 4 spaces; and we have a - # closing paren, without the opening paren, followed by an opening brace - # or colon (for initializer lists) we assume that it is the last line of - # a function header. If we have a colon indented 4 spaces, it is an - # initializer list. - exception = (Match(r' {4}\w[^\(]*\)\s*(const\s*)?(\{\s*$|:)', - prev_line) - or Match(r' {4}:', prev_line)) - - if not exception: - error(filename, linenum, 'whitespace/blank_line', 2, - 'Redundant blank line at the start of a code block ' - 'should be deleted.') - # Ignore blank lines at the end of a block in a long if-else - # chain, like this: - # if (condition1) { - # // Something followed by a blank line - # - # } else if (condition2) { - # // Something else - # } - if linenum + 1 < clean_lines.NumLines(): - next_line = raw[linenum + 1] - if (next_line - and Match(r'\s*}', next_line) - and next_line.find('} else ') == -1): - error(filename, linenum, 'whitespace/blank_line', 3, - 'Redundant blank line at the end of a code block ' - 'should be deleted.') - - matched = Match(r'\s*(public|protected|private):', prev_line) - if matched: - error(filename, linenum, 'whitespace/blank_line', 3, - 'Do not leave a blank line after "%s:"' % matched.group(1)) - - # Next, check comments - next_line_start = 0 - if linenum + 1 < clean_lines.NumLines(): - next_line = raw[linenum + 1] - next_line_start = len(next_line) - len(next_line.lstrip()) - CheckComment(line, filename, linenum, next_line_start, error) - - # get rid of comments and strings - line = clean_lines.elided[linenum] - - # You shouldn't have spaces before your brackets, except for C++11 attributes - # or maybe after 'delete []', 'return []() {};', or 'auto [abc, ...] = ...;'. - if (Search(r'\w\s+\[(?!\[)', line) and - not Search(r'(?:auto&?|delete|return)\s+\[', line)): - error(filename, linenum, 'whitespace/braces', 5, - 'Extra space before [') - - # In range-based for, we wanted spaces before and after the colon, but - # not around "::" tokens that might appear. - if (Search(r'for *\(.*[^:]:[^: ]', line) or - Search(r'for *\(.*[^: ]:[^:]', line)): - error(filename, linenum, 'whitespace/forcolon', 2, - 'Missing space around colon in range-based for loop') + """Checks for the correctness of various spacing issues in the code. + Things we check for: spaces around operators, spaces after + if/for/while/switch, no spaces around parens in function calls, two + spaces between code and comment, don't start a block with a blank + line, don't end a function with a blank line, don't add a blank line + after public/protected/private, don't have too many blank lines in a row. -def CheckOperatorSpacing(filename, clean_lines, linenum, error): - """Checks for horizontal spacing around operators. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Don't try to do spacing checks for operator methods. Do this by - # replacing the troublesome characters with something else, - # preserving column position for all other characters. - # - # The replacement is done repeatedly to avoid false positives from - # operators that call operators. - while True: - match = Match(r'^(.*\boperator\b)(\S+)(\s*\(.*)$', line) - if match: - line = match.group(1) + ('_' * len(match.group(2))) + match.group(3) - else: - break - - # We allow no-spaces around = within an if: "if ( (a=Foo()) == 0 )". - # Otherwise not. Note we only check for non-spaces on *both* sides; - # sometimes people put non-spaces on one side when aligning ='s among - # many lines (not that this is behavior that I approve of...) - if ((Search(r'[\w.]=', line) or - Search(r'=[\w.]', line)) - and not Search(r'\b(if|while|for) ', line) - # Operators taken from [lex.operators] in C++11 standard. - and not Search(r'(>=|<=|==|!=|&=|\^=|\|=|\+=|\*=|\/=|\%=)', line) - and not Search(r'operator=', line)): - error(filename, linenum, 'whitespace/operators', 4, - 'Missing spaces around =') - - # It's ok not to have spaces around binary operators like + - * /, but if - # there's too little whitespace, we get concerned. It's hard to tell, - # though, so we punt on this one for now. TODO. - - # You should always have whitespace around binary operators. - # - # Check <= and >= first to avoid false positives with < and >, then - # check non-include lines for spacing around < and >. - # - # If the operator is followed by a comma, assume it's be used in a - # macro context and don't do any checks. This avoids false - # positives. - # - # Note that && is not included here. This is because there are too - # many false positives due to RValue references. - match = Search(r'[^<>=!\s](==|!=|<=|>=|\|\|)[^<>=!\s,;\)]', line) - if match: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around %s' % match.group(1)) - elif not Match(r'#.*include', line): - # Look for < that is not surrounded by spaces. This is only - # triggered if both sides are missing spaces, even though - # technically should should flag if at least one side is missing a - # space. This is done to avoid some false positives with shifts. - match = Match(r'^(.*[^\s<])<[^\s=<,]', line) - if match: - (_, _, end_pos) = CloseExpression( - clean_lines, linenum, len(match.group(1))) - if end_pos <= -1: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around <') - - # Look for > that is not surrounded by spaces. Similar to the - # above, we only trigger if both sides are missing spaces to avoid - # false positives with shifts. - match = Match(r'^(.*[^-\s>])>[^\s=>,]', line) - if match: - (_, _, start_pos) = ReverseCloseExpression( - clean_lines, linenum, len(match.group(1))) - if start_pos <= -1: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around >') - - # We allow no-spaces around << when used like this: 10<<20, but - # not otherwise (particularly, not when used as streams) - # - # We also allow operators following an opening parenthesis, since - # those tend to be macros that deal with operators. - match = Search(r'(operator|[^\s(<])(?:L|UL|LL|ULL|l|ul|ll|ull)?<<([^\s,=<])', line) - if (match and not (match.group(1).isdigit() and match.group(2).isdigit()) and - not (match.group(1) == 'operator' and match.group(2) == ';')): - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around <<') - - # We allow no-spaces around >> for almost anything. This is because - # C++11 allows ">>" to close nested templates, which accounts for - # most cases when ">>" is not followed by a space. - # - # We still warn on ">>" followed by alpha character, because that is - # likely due to ">>" being used for right shifts, e.g.: - # value >> alpha - # - # When ">>" is used to close templates, the alphanumeric letter that - # follows would be part of an identifier, and there should still be - # a space separating the template type and the identifier. - # type> alpha - match = Search(r'>>[a-zA-Z_]', line) - if match: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around >>') - - # There shouldn't be space around unary operators - match = Search(r'(!\s|~\s|[\s]--[\s;]|[\s]\+\+[\s;])', line) - if match: - error(filename, linenum, 'whitespace/operators', 4, - 'Extra space for operator %s' % match.group(1)) + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + nesting_state: A NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + # Don't use "elided" lines here, otherwise we can't check commented lines. + # Don't want to use "raw" either, because we don't want to check inside C++11 + # raw strings, + raw = clean_lines.lines_without_raw_strings + line = raw[linenum] -def CheckParenthesisSpacing(filename, clean_lines, linenum, error): - """Checks for horizontal spacing around parentheses. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # No spaces after an if, while, switch, or for - match = Search(r' (if\(|for\(|while\(|switch\()', line) - if match: - error(filename, linenum, 'whitespace/parens', 5, - 'Missing space before ( in %s' % match.group(1)) - - # For if/for/while/switch, the left and right parens should be - # consistent about how many spaces are inside the parens, and - # there should either be zero or one spaces inside the parens. - # We don't want: "if ( foo)" or "if ( foo )". - # Exception: "for ( ; foo; bar)" and "for (foo; bar; )" are allowed. - match = Search(r'\b(if|for|while|switch)\s*' - r'\(([ ]*)(.).*[^ ]+([ ]*)\)\s*{\s*$', - line) - if match: - if len(match.group(2)) != len(match.group(4)): - if not (match.group(3) == ';' and - len(match.group(2)) == 1 + len(match.group(4)) or - not match.group(2) and Search(r'\bfor\s*\(.*; \)', line)): - error(filename, linenum, 'whitespace/parens', 5, - 'Mismatching spaces inside () in %s' % match.group(1)) - if len(match.group(2)) not in [0, 1]: - error(filename, linenum, 'whitespace/parens', 5, - 'Should have zero or one spaces inside ( and ) in %s' % - match.group(1)) + # Before nixing comments, check if the line is blank for no good + # reason. This includes the first line after a block is opened, and + # blank lines at the end of a function (ie, right before a line like '}' + # + # Skip all the blank line checks if we are immediately inside a + # namespace body. In other words, don't issue blank line warnings + # for this block: + # namespace { + # + # } + # + # A warning about missing end of namespace comments will be issued instead. + # + # Also skip blank line checks for 'extern "C"' blocks, which are formatted + # like namespaces. + if IsBlankLine(line) and not nesting_state.InNamespaceBody() and not nesting_state.InExternC(): + elided = clean_lines.elided + prev_line = elided[linenum - 1] + prevbrace = prev_line.rfind("{") + # TODO(google): Don't complain if line before blank line, and line after, + # both start with alnums and are indented the same amount. + # This ignores whitespace at the start of a namespace block + # because those are not usually indented. + if prevbrace != -1 and prev_line[prevbrace:].find("}") == -1: + # OK, we have a blank line at the start of a code block. Before we + # complain, we check if it is an exception to the rule: The previous + # non-empty line has the parameters of a function header that are indented + # 4 spaces (because they did not fit in a 80 column line when placed on + # the same line as the function name). We also check for the case where + # the previous line is indented 6 spaces, which may happen when the + # initializers of a constructor do not fit into a 80 column line. + exception = False + if re.match(r" {6}\w", prev_line): # Initializer list? + # We are looking for the opening column of initializer list, which + # should be indented 4 spaces to cause 6 space indentation afterwards. + search_position = linenum - 2 + while search_position >= 0 and re.match(r" {6}\w", elided[search_position]): + search_position -= 1 + exception = search_position >= 0 and elided[search_position][:5] == " :" + else: + # Search for the function arguments or an initializer list. We use a + # simple heuristic here: If the line is indented 4 spaces; and we have a + # closing paren, without the opening paren, followed by an opening brace + # or colon (for initializer lists) we assume that it is the last line of + # a function header. If we have a colon indented 4 spaces, it is an + # initializer list. + exception = re.match( + r" {4}\w[^\(]*\)\s*(const\s*)?(\{\s*$|:)", prev_line + ) or re.match(r" {4}:", prev_line) + + if not exception: + error( + filename, + linenum, + "whitespace/blank_line", + 2, + "Redundant blank line at the start of a code block should be deleted.", + ) + # Ignore blank lines at the end of a block in a long if-else + # chain, like this: + # if (condition1) { + # // Something followed by a blank line + # + # } else if (condition2) { + # // Something else + # } + if linenum + 1 < clean_lines.NumLines(): + next_line = raw[linenum + 1] + if next_line and re.match(r"\s*}", next_line) and next_line.find("} else ") == -1: + error( + filename, + linenum, + "whitespace/blank_line", + 3, + "Redundant blank line at the end of a code block should be deleted.", + ) + + matched = re.match(r"\s*(public|protected|private):", prev_line) + if matched: + error( + filename, + linenum, + "whitespace/blank_line", + 3, + f'Do not leave a blank line after "{matched.group(1)}:"', + ) + + # Next, check comments + next_line_start = 0 + if linenum + 1 < clean_lines.NumLines(): + next_line = raw[linenum + 1] + next_line_start = len(next_line) - len(next_line.lstrip()) + CheckComment(line, filename, linenum, next_line_start, error) + # get rid of comments and strings + line = clean_lines.elided[linenum] -def CheckCommaSpacing(filename, clean_lines, linenum, error): - """Checks for horizontal spacing near commas and semicolons. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - raw = clean_lines.lines_without_raw_strings - line = clean_lines.elided[linenum] - - # You should always have a space after a comma (either as fn arg or operator) - # - # This does not apply when the non-space character following the - # comma is another comma, since the only time when that happens is - # for empty macro arguments. - # - # We run this check in two passes: first pass on elided lines to - # verify that lines contain missing whitespaces, second pass on raw - # lines to confirm that those missing whitespaces are not due to - # elided comments. - if (Search(r',[^,\s]', ReplaceAll(r'\boperator\s*,\s*\(', 'F(', line)) and - Search(r',[^,\s]', raw[linenum])): - error(filename, linenum, 'whitespace/comma', 3, - 'Missing space after ,') - - # You should always have a space after a semicolon - # except for few corner cases - # TODO(unknown): clarify if 'if (1) { return 1;}' is requires one more - # space after ; - if Search(r';[^\s};\\)/]', line): - error(filename, linenum, 'whitespace/semicolon', 3, - 'Missing space after ;') + # You shouldn't have spaces before your brackets, except for C++11 attributes + # or maybe after 'delete []', 'return []() {};', or 'auto [abc, ...] = ...;'. + if re.search(r"\w\s+\[(?!\[)", line) and not re.search(r"(?:auto&?|delete|return)\s+\[", line): + error(filename, linenum, "whitespace/braces", 5, "Extra space before [") + # In range-based for, we wanted spaces before and after the colon, but + # not around "::" tokens that might appear. + if re.search(r"for *\(.*[^:]:[^: ]", line) or re.search(r"for *\(.*[^: ]:[^:]", line): + error( + filename, + linenum, + "whitespace/forcolon", + 2, + "Missing space around colon in range-based for loop", + ) -def _IsType(clean_lines, nesting_state, expr): - """Check if expression looks like a type name, returns true if so. - - Args: - clean_lines: A CleansedLines instance containing the file. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - expr: The expression to check. - Returns: - True, if token looks like a type. - """ - # Keep only the last token in the expression - last_word = Match(r'^.*(\b\S+)$', expr) - if last_word: - token = last_word.group(1) - else: - token = expr - - # Match native types and stdint types - if _TYPES.match(token): - return True - # Try a bit harder to match templated types. Walk up the nesting - # stack until we find something that resembles a typename - # declaration for what we are looking for. - typename_pattern = (r'\b(?:typename|class|struct)\s+' + re.escape(token) + - r'\b') - block_index = len(nesting_state.stack) - 1 - while block_index >= 0: - if isinstance(nesting_state.stack[block_index], _NamespaceInfo): - return False - - # Found where the opening brace is. We want to scan from this - # line up to the beginning of the function, minus a few lines. - # template - # class C - # : public ... { // start scanning here - last_line = nesting_state.stack[block_index].starting_linenum - - next_block_start = 0 - if block_index > 0: - next_block_start = nesting_state.stack[block_index - 1].starting_linenum - first_line = last_line - while first_line >= next_block_start: - if clean_lines.elided[first_line].find('template') >= 0: - break - first_line -= 1 - if first_line < next_block_start: - # Didn't find any "template" keyword before reaching the next block, - # there are probably no template things to check for this block - block_index -= 1 - continue - - # Look for typename in the specified range - for i in xrange(first_line, last_line + 1, 1): - if Search(typename_pattern, clean_lines.elided[i]): - return True - block_index -= 1 +def CheckOperatorSpacing(filename, clean_lines, linenum, error): + """Checks for horizontal spacing around operators. - return False + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + # Don't try to do spacing checks for operator methods. Do this by + # replacing the troublesome characters with something else, + # preserving column position for all other characters. + # + # The replacement is done repeatedly to avoid false positives from + # operators that call operators. + while True: + match = re.match(r"^(.*\boperator\b)(\S+)(\s*\(.*)$", line) + if match: + line = match.group(1) + ("_" * len(match.group(2))) + match.group(3) + else: + break -def CheckBracesSpacing(filename, clean_lines, linenum, nesting_state, error): - """Checks for horizontal spacing near commas. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Except after an opening paren, or after another opening brace (in case of - # an initializer list, for instance), you should have spaces before your - # braces when they are delimiting blocks, classes, namespaces etc. - # And since you should never have braces at the beginning of a line, - # this is an easy test. Except that braces used for initialization don't - # follow the same rule; we often don't want spaces before those. - match = Match(r'^(.*[^ ({>]){', line) - - if match: - # Try a bit harder to check for brace initialization. This - # happens in one of the following forms: - # Constructor() : initializer_list_{} { ... } - # Constructor{}.MemberFunction() - # Type variable{}; - # FunctionCall(type{}, ...); - # LastArgument(..., type{}); - # LOG(INFO) << type{} << " ..."; - # map_of_type[{...}] = ...; - # ternary = expr ? new type{} : nullptr; - # OuterTemplate{}> + # We allow no-spaces around = within an if: "if ( (a=Foo()) == 0 )". + # Otherwise not. Note we only check for non-spaces on *both* sides; + # sometimes people put non-spaces on one side when aligning ='s among + # many lines (not that this is behavior that I approve of...) + if ( + (re.search(r"[\w.]=", line) or re.search(r"=[\w.]", line)) + and not re.search(r"\b(if|while|for) ", line) + # Operators taken from [lex.operators] in C++11 standard. + and not re.search(r"(>=|<=|==|!=|&=|\^=|\|=|\+=|\*=|\/=|\%=)", line) + and not re.search(r"operator=", line) + ): + error(filename, linenum, "whitespace/operators", 4, "Missing spaces around =") + + # It's ok not to have spaces around binary operators like + - * /, but if + # there's too little whitespace, we get concerned. It's hard to tell, + # though, so we punt on this one for now. TODO(google). + + # You should always have whitespace around binary operators. # - # We check for the character following the closing brace, and - # silence the warning if it's one of those listed above, i.e. - # "{.;,)<>]:". + # Check <= and >= first to avoid false positives with < and >, then + # check non-include lines for spacing around < and >. # - # To account for nested initializer list, we allow any number of - # closing braces up to "{;,)<". We can't simply silence the - # warning on first sight of closing brace, because that would - # cause false negatives for things that are not initializer lists. - # Silence this: But not this: - # Outer{ if (...) { - # Inner{...} if (...){ // Missing space before { - # }; } + # If the operator is followed by a comma, assume it's be used in a + # macro context and don't do any checks. This avoids false + # positives. # - # There is a false negative with this approach if people inserted - # spurious semicolons, e.g. "if (cond){};", but we will catch the - # spurious semicolon with a separate check. - leading_text = match.group(1) - (endline, endlinenum, endpos) = CloseExpression( - clean_lines, linenum, len(match.group(1))) - trailing_text = '' - if endpos > -1: - trailing_text = endline[endpos:] - for offset in xrange(endlinenum + 1, - min(endlinenum + 3, clean_lines.NumLines() - 1)): - trailing_text += clean_lines.elided[offset] - # We also suppress warnings for `uint64_t{expression}` etc., as the style - # guide recommends brace initialization for integral types to avoid - # overflow/truncation. - if (not Match(r'^[\s}]*[{.;,)<>\]:]', trailing_text) - and not _IsType(clean_lines, nesting_state, leading_text)): - error(filename, linenum, 'whitespace/braces', 5, - 'Missing space before {') - - # Make sure '} else {' has spaces. - if Search(r'}else', line): - error(filename, linenum, 'whitespace/braces', 5, - 'Missing space before else') - - # You shouldn't have a space before a semicolon at the end of the line. - # There's a special case for "for" since the style guide allows space before - # the semicolon there. - if Search(r':\s*;\s*$', line): - error(filename, linenum, 'whitespace/semicolon', 5, - 'Semicolon defining empty statement. Use {} instead.') - elif Search(r'^\s*;\s*$', line): - error(filename, linenum, 'whitespace/semicolon', 5, - 'Line contains only semicolon. If this should be an empty statement, ' - 'use {} instead.') - elif (Search(r'\s+;\s*$', line) and - not Search(r'\bfor\b', line)): - error(filename, linenum, 'whitespace/semicolon', 5, - 'Extra space before last semicolon. If this should be an empty ' - 'statement, use {} instead.') + # Note that && is not included here. This is because there are too + # many false positives due to RValue references. + match = re.search(r"[^<>=!\s](==|!=|<=|>=|\|\|)[^<>=!\s,;\)]", line) + if match: + # TODO(google): support alternate operators + error( + filename, linenum, "whitespace/operators", 3, f"Missing spaces around {match.group(1)}" + ) + elif not re.match(r"#.*include", line): + # Look for < that is not surrounded by spaces. This is only + # triggered if both sides are missing spaces, even though + # technically should should flag if at least one side is missing a + # space. This is done to avoid some false positives with shifts. + match = re.match(r"^(.*[^\s<])<[^\s=<,]", line) + if match: + (_, _, end_pos) = CloseExpression(clean_lines, linenum, len(match.group(1))) + if end_pos <= -1: + error(filename, linenum, "whitespace/operators", 3, "Missing spaces around <") + + # Look for > that is not surrounded by spaces. Similar to the + # above, we only trigger if both sides are missing spaces to avoid + # false positives with shifts. + match = re.match(r"^(.*[^-\s>])>[^\s=>,]", line) + if match: + (_, _, start_pos) = ReverseCloseExpression(clean_lines, linenum, len(match.group(1))) + if start_pos <= -1: + error(filename, linenum, "whitespace/operators", 3, "Missing spaces around >") + # We allow no-spaces around << when used like this: 10<<20, but + # not otherwise (particularly, not when used as streams) + # + # We also allow operators following an opening parenthesis, since + # those tend to be macros that deal with operators. + match = re.search(r"(operator|[^\s(<])(?:L|UL|LL|ULL|l|ul|ll|ull)?<<([^\s,=<])", line) + if ( + match + and not (match.group(1).isdigit() and match.group(2).isdigit()) + and not (match.group(1) == "operator" and match.group(2) == ";") + ): + error(filename, linenum, "whitespace/operators", 3, "Missing spaces around <<") + + # We allow no-spaces around >> for almost anything. This is because + # C++11 allows ">>" to close nested templates, which accounts for + # most cases when ">>" is not followed by a space. + # + # We still warn on ">>" followed by alpha character, because that is + # likely due to ">>" being used for right shifts, e.g.: + # value >> alpha + # + # When ">>" is used to close templates, the alphanumeric letter that + # follows would be part of an identifier, and there should still be + # a space separating the template type and the identifier. + # type> alpha + match = re.search(r">>[a-zA-Z_]", line) + if match: + error(filename, linenum, "whitespace/operators", 3, "Missing spaces around >>") -def IsDecltype(clean_lines, linenum, column): - """Check if the token ending on (linenum, column) is decltype(). - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: the number of the line to check. - column: end column of the token to check. - Returns: - True if this token is decltype() expression, False otherwise. - """ - (text, _, start_col) = ReverseCloseExpression(clean_lines, linenum, column) - if start_col < 0: - return False - if Search(r'\bdecltype\s*$', text[0:start_col]): - return True - return False + # There shouldn't be space around unary operators + match = re.search(r"(!\s|~\s|[\s]--[\s;]|[\s]\+\+[\s;])", line) + if match: + error( + filename, + linenum, + "whitespace/operators", + 4, + f"Extra space for operator {match.group(1)}", + ) -def CheckSectionSpacing(filename, clean_lines, class_info, linenum, error): - """Checks for additional blank line issues related to sections. - - Currently the only thing checked here is blank line before protected/private. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - class_info: A _ClassInfo objects. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - # Skip checks if the class is small, where small means 25 lines or less. - # 25 lines seems like a good cutoff since that's the usual height of - # terminals, and any class that can't fit in one screen can't really - # be considered "small". - # - # Also skip checks if we are on the first line. This accounts for - # classes that look like - # class Foo { public: ... }; - # - # If we didn't find the end of the class, last_line would be zero, - # and the check will be skipped by the first condition. - if (class_info.last_line - class_info.starting_linenum <= 24 or - linenum <= class_info.starting_linenum): - return - - matched = Match(r'\s*(public|protected|private):', clean_lines.lines[linenum]) - if matched: - # Issue warning if the line before public/protected/private was - # not a blank line, but don't do this if the previous line contains - # "class" or "struct". This can happen two ways: - # - We are at the beginning of the class. - # - We are forward-declaring an inner class that is semantically - # private, but needed to be public for implementation reasons. - # Also ignores cases where the previous line ends with a backslash as can be - # common when defining classes in C macros. - prev_line = clean_lines.lines[linenum - 1] - if (not IsBlankLine(prev_line) and - not Search(r'\b(class|struct)\b', prev_line) and - not Search(r'\\$', prev_line)): - # Try a bit harder to find the beginning of the class. This is to - # account for multi-line base-specifier lists, e.g.: - # class Derived - # : public Base { - end_class_head = class_info.starting_linenum - for i in range(class_info.starting_linenum, linenum): - if Search(r'\{\s*$', clean_lines.lines[i]): - end_class_head = i - break - if end_class_head < linenum - 1: - error(filename, linenum, 'whitespace/blank_line', 3, - '"%s:" should be preceded by a blank line' % matched.group(1)) + +def CheckParenthesisSpacing(filename, clean_lines, linenum, error): + """Checks for horizontal spacing around parentheses. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # No spaces after an if, while, switch, or for + match = re.search(r" (if\(|for\(|while\(|switch\()", line) + if match: + error( + filename, linenum, "whitespace/parens", 5, f"Missing space before ( in {match.group(1)}" + ) + + # For if/for/while/switch, the left and right parens should be + # consistent about how many spaces are inside the parens, and + # there should either be zero or one spaces inside the parens. + # We don't want: "if ( foo)" or "if ( foo )". + # Exception: "for ( ; foo; bar)" and "for (foo; bar; )" are allowed. + match = re.search( + r"\b(if|for|while|switch)\s*" + r"\(([ ]*)(.).*[^ ]+([ ]*)\)\s*{\s*$", + line, + ) + if match: + if len(match.group(2)) != len(match.group(4)) and not ( + match.group(3) == ";" + and len(match.group(2)) == 1 + len(match.group(4)) + or not match.group(2) + and re.search(r"\bfor\s*\(.*; \)", line) + ): + error( + filename, + linenum, + "whitespace/parens", + 5, + f"Mismatching spaces inside () in {match.group(1)}", + ) + if len(match.group(2)) not in [0, 1]: + error( + filename, + linenum, + "whitespace/parens", + 5, + f"Should have zero or one spaces inside ( and ) in {match.group(1)}", + ) + + +def CheckCommaSpacing(filename, clean_lines, linenum, error): + """Checks for horizontal spacing near commas and semicolons. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + raw = clean_lines.lines_without_raw_strings + line = clean_lines.elided[linenum] + + # You should always have a space after a comma (either as fn arg or operator) + # + # This does not apply when the non-space character following the + # comma is another comma, since the only time when that happens is + # for empty macro arguments. + # + # We run this check in two passes: first pass on elided lines to + # verify that lines contain missing whitespaces, second pass on raw + # lines to confirm that those missing whitespaces are not due to + # elided comments. + match = re.search( + r",[^,\s]", re.sub(r"\b__VA_OPT__\s*\(,\)", "", re.sub(r"\boperator\s*,\s*\(", "F(", line)) + ) + if match and re.search(r",[^,\s]", raw[linenum]): + error(filename, linenum, "whitespace/comma", 3, "Missing space after ,") + + # You should always have a space after a semicolon + # except for few corner cases + # TODO(google): clarify if 'if (1) { return 1;}' is requires one more + # space after ; + if re.search(r";[^\s};\\)/]", line): + error(filename, linenum, "whitespace/semicolon", 3, "Missing space after ;") + + +def _IsType(clean_lines, nesting_state, expr): + """Check if expression looks like a type name, returns true if so. + + Args: + clean_lines: A CleansedLines instance containing the file. + nesting_state: A NestingState instance which maintains information about + the current stack of nested blocks being parsed. + expr: The expression to check. + Returns: + True, if token looks like a type. + """ + # Keep only the last token in the expression + if last_word := re.match(r"^.*(\b\S+)$", expr): + token = last_word.group(1) + else: + token = expr + + # Match native types and stdint types + if _TYPES.match(token): + return True + + # Try a bit harder to match templated types. Walk up the nesting + # stack until we find something that resembles a typename + # declaration for what we are looking for. + typename_pattern = r"\b(?:typename|class|struct)\s+" + re.escape(token) + r"\b" + block_index = len(nesting_state.stack) - 1 + while block_index >= 0: + if isinstance(nesting_state.stack[block_index], _NamespaceInfo): + return False + + # Found where the opening brace is. We want to scan from this + # line up to the beginning of the function, minus a few lines. + # template + # class C + # : public ... { // start scanning here + last_line = nesting_state.stack[block_index].starting_linenum + + next_block_start = 0 + if block_index > 0: + next_block_start = nesting_state.stack[block_index - 1].starting_linenum + first_line = last_line + while first_line >= next_block_start: + if clean_lines.elided[first_line].find("template") >= 0: + break + first_line -= 1 + if first_line < next_block_start: + # Didn't find any "template" keyword before reaching the next block, + # there are probably no template things to check for this block + block_index -= 1 + continue + + # Look for typename in the specified range + for i in range(first_line, last_line + 1, 1): + if re.search(typename_pattern, clean_lines.elided[i]): + return True + block_index -= 1 + + return False + + +def CheckBracesSpacing(filename, clean_lines, linenum, nesting_state, error): + """Checks for horizontal spacing near commas. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + nesting_state: A NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Except after an opening paren, or after another opening brace (in case of + # an initializer list, for instance), you should have spaces before your + # braces when they are delimiting blocks, classes, namespaces etc. + # And since you should never have braces at the beginning of a line, + # this is an easy test. Except that braces used for initialization don't + # follow the same rule; we often don't want spaces before those. + + if match := re.match(r"^(.*[^ ({>]){", line): + # Try a bit harder to check for brace initialization. This + # happens in one of the following forms: + # Constructor() : initializer_list_{} { ... } + # Constructor{}.MemberFunction() + # Type variable{}; + # FunctionCall(type{}, ...); + # LastArgument(..., type{}); + # LOG(INFO) << type{} << " ..."; + # map_of_type[{...}] = ...; + # ternary = expr ? new type{} : nullptr; + # OuterTemplate{}> + # + # We check for the character following the closing brace, and + # silence the warning if it's one of those listed above, i.e. + # "{.;,)<>]:". + # + # To account for nested initializer list, we allow any number of + # closing braces up to "{;,)<". We can't simply silence the + # warning on first sight of closing brace, because that would + # cause false negatives for things that are not initializer lists. + # Silence this: But not this: + # Outer{ if (...) { + # Inner{...} if (...){ // Missing space before { + # }; } + # + # There is a false negative with this approach if people inserted + # spurious semicolons, e.g. "if (cond){};", but we will catch the + # spurious semicolon with a separate check. + leading_text = match.group(1) + (endline, endlinenum, endpos) = CloseExpression(clean_lines, linenum, len(match.group(1))) + trailing_text = "" + if endpos > -1: + trailing_text = endline[endpos:] + for offset in range(endlinenum + 1, min(endlinenum + 3, clean_lines.NumLines() - 1)): + trailing_text += clean_lines.elided[offset] + # We also suppress warnings for `uint64_t{expression}` etc., as the style + # guide recommends brace initialization for integral types to avoid + # overflow/truncation. + if not re.match(r"^[\s}]*[{.;,)<>\]:]", trailing_text) and not _IsType( + clean_lines, nesting_state, leading_text + ): + error(filename, linenum, "whitespace/braces", 5, "Missing space before {") + + # Make sure '} else {' has spaces. + if re.search(r"}else", line): + error(filename, linenum, "whitespace/braces", 5, "Missing space before else") + + # You shouldn't have a space before a semicolon at the end of the line. + # There's a special case for "for" since the style guide allows space before + # the semicolon there. + if re.search(r":\s*;\s*$", line): + error( + filename, + linenum, + "whitespace/semicolon", + 5, + "Semicolon defining empty statement. Use {} instead.", + ) + elif re.search(r"^\s*;\s*$", line): + error( + filename, + linenum, + "whitespace/semicolon", + 5, + "Line contains only semicolon. If this should be an empty statement, use {} instead.", + ) + elif re.search(r"\s+;\s*$", line) and not re.search(r"\bfor\b", line): + error( + filename, + linenum, + "whitespace/semicolon", + 5, + "Extra space before last semicolon. If this should be an empty " + "statement, use {} instead.", + ) + + +def IsDecltype(clean_lines, linenum, column): + """Check if the token ending on (linenum, column) is decltype(). + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: the number of the line to check. + column: end column of the token to check. + Returns: + True if this token is decltype() expression, False otherwise. + """ + (text, _, start_col) = ReverseCloseExpression(clean_lines, linenum, column) + if start_col < 0: + return False + return bool(re.search(r"\bdecltype\s*$", text[0:start_col])) + + +def CheckSectionSpacing(filename, clean_lines, class_info, linenum, error): + """Checks for additional blank line issues related to sections. + + Currently the only thing checked here is blank line before protected/private. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + class_info: A _ClassInfo objects. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + # Skip checks if the class is small, where small means 25 lines or less. + # 25 lines seems like a good cutoff since that's the usual height of + # terminals, and any class that can't fit in one screen can't really + # be considered "small". + # + # Also skip checks if we are on the first line. This accounts for + # classes that look like + # class Foo { public: ... }; + # + # If we didn't find the end of the class, last_line would be zero, + # and the check will be skipped by the first condition. + if ( + class_info.last_line - class_info.starting_linenum <= 24 + or linenum <= class_info.starting_linenum + ): + return + + matched = re.match(r"\s*(public|protected|private):", clean_lines.lines[linenum]) + if matched: + # Issue warning if the line before public/protected/private was + # not a blank line, but don't do this if the previous line contains + # "class" or "struct". This can happen two ways: + # - We are at the beginning of the class. + # - We are forward-declaring an inner class that is semantically + # private, but needed to be public for implementation reasons. + # Also ignores cases where the previous line ends with a backslash as can be + # common when defining classes in C macros. + prev_line = clean_lines.lines[linenum - 1] + if ( + not IsBlankLine(prev_line) + and not re.search(r"\b(class|struct)\b", prev_line) + and not re.search(r"\\$", prev_line) + ): + # Try a bit harder to find the beginning of the class. This is to + # account for multi-line base-specifier lists, e.g.: + # class Derived + # : public Base { + end_class_head = class_info.starting_linenum + for i in range(class_info.starting_linenum, linenum): + if re.search(r"\{\s*$", clean_lines.lines[i]): + end_class_head = i + break + if end_class_head < linenum - 1: + error( + filename, + linenum, + "whitespace/blank_line", + 3, + f'"{matched.group(1)}:" should be preceded by a blank line', + ) def GetPreviousNonBlankLine(clean_lines, linenum): - """Return the most recent non-blank line and its line number. + """Return the most recent non-blank line and its line number. + + Args: + clean_lines: A CleansedLines instance containing the file contents. + linenum: The number of the line to check. + + Returns: + A tuple with two elements. The first element is the contents of the last + non-blank line before the current line, or the empty string if this is the + first non-blank line. The second is the line number of that line, or -1 + if this is the first non-blank line. + """ + + prevlinenum = linenum - 1 + while prevlinenum >= 0: + prevline = clean_lines.elided[prevlinenum] + if not IsBlankLine(prevline): # if not a blank line... + return (prevline, prevlinenum) + prevlinenum -= 1 + return ("", -1) + + +def CheckBraces(filename, clean_lines, linenum, error): + """Looks for misplaced braces (e.g. at the end of line). + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + line = clean_lines.elided[linenum] # get rid of comments and strings + + if re.match(r"\s*{\s*$", line): + # We allow an open brace to start a line in the case where someone is using + # braces in a block to explicitly create a new scope, which is commonly used + # to control the lifetime of stack-allocated variables. Braces are also + # used for brace initializers inside function calls. We don't detect this + # perfectly: we just don't complain if the last non-whitespace character on + # the previous non-blank line is ',', ';', ':', '(', '{', or '}', or if the + # previous line starts a preprocessor block. We also allow a brace on the + # following line if it is part of an array initialization and would not fit + # within the 80 character limit of the preceding line. + prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] + if ( + not re.search(r"[,;:}{(]\s*$", prevline) + and not re.match(r"\s*#", prevline) + and not (GetLineWidth(prevline) > _line_length - 2 and "[]" in prevline) + ): + error( + filename, + linenum, + "whitespace/braces", + 4, + "{ should almost always be at the end of the previous line", + ) + + # An else clause should be on the same line as the preceding closing brace. + if last_wrong := re.match(r"\s*else\b\s*(?:if\b|\{|$)", line): + prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] + if re.match(r"\s*}\s*$", prevline): + error( + filename, + linenum, + "whitespace/newline", + 4, + "An else should appear on the same line as the preceding }", + ) + else: + last_wrong = False + + # If braces come on one side of an else, they should be on both. + # However, we have to worry about "else if" that spans multiple lines! + if re.search(r"else if\s*\(", line): # could be multi-line if + brace_on_left = bool(re.search(r"}\s*else if\s*\(", line)) + # find the ( after the if + pos = line.find("else if") + pos = line.find("(", pos) + if pos > 0: + (endline, _, endpos) = CloseExpression(clean_lines, linenum, pos) + brace_on_right = endline[endpos:].find("{") != -1 + if brace_on_left != brace_on_right: # must be brace after if + error( + filename, + linenum, + "readability/braces", + 5, + "If an else has a brace on one side, it should have it on both", + ) + # Prevent detection if statement has { and we detected an improper newline after } + elif re.search(r"}\s*else[^{]*$", line) or ( + re.match(r"[^}]*else\s*{", line) and not last_wrong + ): + error( + filename, + linenum, + "readability/braces", + 5, + "If an else has a brace on one side, it should have it on both", + ) + + # No control clauses with braces should have its contents on the same line + # Exclude } which will be covered by empty-block detect + # Exclude ; which may be used by while in a do-while + if ( + keyword := re.search( + r"\b(else if|if|while|for|switch)" # These have parens + r"\s*\(.*\)\s*(?:\[\[(?:un)?likely\]\]\s*)?{\s*[^\s\\};]", + line, + ) + ) or ( + keyword := re.search( + r"\b(else|do|try)" # These don't have parens + r"\s*(?:\[\[(?:un)?likely\]\]\s*)?{\s*[^\s\\}]", + line, + ) + ): + error( + filename, + linenum, + "whitespace/newline", + 5, + f"Controlled statements inside brackets of {keyword.group(1)} clause" + " should be on a separate line", + ) + + # TODO(aaronliu0130): Err on if...else and do...while statements without braces; + # style guide has changed since the below comment was written + + # Check single-line if/else bodies. The style guide says 'curly braces are not + # required for single-line statements'. We additionally allow multi-line, + # single statements, but we reject anything with more than one semicolon in + # it. This means that the first semicolon after the if should be at the end of + # its line, and the line after that should have an indent level equal to or + # lower than the if. We also check for ambiguous if/else nesting without + # braces. + if_else_match = re.search(r"\b(if\s*(|constexpr)\s*\(|else\b)", line) + if if_else_match and not re.match(r"\s*#", line): + if_indent = GetIndentLevel(line) + endline, endlinenum, endpos = line, linenum, if_else_match.end() + if_match = re.search(r"\bif\s*(|constexpr)\s*\(", line) + if if_match: + # This could be a multiline if condition, so find the end first. + pos = if_match.end() - 1 + (endline, endlinenum, endpos) = CloseExpression(clean_lines, linenum, pos) + # Check for an opening brace, either directly after the if or on the next + # line. If found, this isn't a single-statement conditional. + if not re.match(r"\s*(?:\[\[(?:un)?likely\]\]\s*)?{", endline[endpos:]) and not ( + re.match(r"\s*$", endline[endpos:]) + and endlinenum < (len(clean_lines.elided) - 1) + and re.match(r"\s*{", clean_lines.elided[endlinenum + 1]) + ): + while ( + endlinenum < len(clean_lines.elided) + and ";" not in clean_lines.elided[endlinenum][endpos:] + ): + endlinenum += 1 + endpos = 0 + if endlinenum < len(clean_lines.elided): + endline = clean_lines.elided[endlinenum] + # We allow a mix of whitespace and closing braces (e.g. for one-liner + # methods) and a single \ after the semicolon (for macros) + endpos = endline.find(";") + if not re.match(r";[\s}]*(\\?)$", endline[endpos:]): + # Semicolon isn't the last character, there's something trailing. + # Output a warning if the semicolon is not contained inside + # a lambda expression. + if not re.match(r"^[^{};]*\[[^\[\]]*\][^{}]*\{[^{}]*\}\s*\)*[;,]\s*$", endline): + error( + filename, + linenum, + "readability/braces", + 4, + "If/else bodies with multiple statements require braces", + ) + elif endlinenum < len(clean_lines.elided) - 1: + # Make sure the next line is dedented + next_line = clean_lines.elided[endlinenum + 1] + next_indent = GetIndentLevel(next_line) + # With ambiguous nested if statements, this will error out on the + # if that *doesn't* match the else, regardless of whether it's the + # inner one or outer one. + if if_match and re.match(r"\s*else\b", next_line) and next_indent != if_indent: + error( + filename, + linenum, + "readability/braces", + 4, + "Else clause should be indented at the same level as if. " + "Ambiguous nested if/else chains require braces.", + ) + elif next_indent > if_indent: + error( + filename, + linenum, + "readability/braces", + 4, + "If/else bodies with multiple statements require braces", + ) + + +def CheckTrailingSemicolon(filename, clean_lines, linenum, error): + """Looks for redundant trailing semicolon. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + line = clean_lines.elided[linenum] + + # Block bodies should not be followed by a semicolon. Due to C++11 + # brace initialization, there are more places where semicolons are + # required than not, so we explicitly list the allowed rules rather + # than listing the disallowed ones. These are the places where "};" + # should be replaced by just "}": + # 1. Some flavor of block following closing parenthesis: + # for (;;) {}; + # while (...) {}; + # switch (...) {}; + # Function(...) {}; + # if (...) {}; + # if (...) else if (...) {}; + # + # 2. else block: + # if (...) else {}; + # + # 3. const member function: + # Function(...) const {}; + # + # 4. Block following some statement: + # x = 42; + # {}; + # + # 5. Block at the beginning of a function: + # Function(...) { + # {}; + # } + # + # Note that naively checking for the preceding "{" will also match + # braces inside multi-dimensional arrays, but this is fine since + # that expression will not contain semicolons. + # + # 6. Block following another block: + # while (true) {} + # {}; + # + # 7. End of namespaces: + # namespace {}; + # + # These semicolons seems far more common than other kinds of + # redundant semicolons, possibly due to people converting classes + # to namespaces. For now we do not warn for this case. + # + # Try matching case 1 first. + match = re.match(r"^(.*\)\s*)\{", line) + if match: + # Matched closing parenthesis (case 1). Check the token before the + # matching opening parenthesis, and don't warn if it looks like a + # macro. This avoids these false positives: + # - macro that defines a base class + # - multi-line macro that defines a base class + # - macro that defines the whole class-head + # + # But we still issue warnings for macros that we know are safe to + # warn, specifically: + # - TEST, TEST_F, TEST_P, MATCHER, MATCHER_P + # - TYPED_TEST + # - INTERFACE_DEF + # - EXCLUSIVE_LOCKS_REQUIRED, SHARED_LOCKS_REQUIRED, LOCKS_EXCLUDED: + # + # We implement a list of safe macros instead of a list of + # unsafe macros, even though the latter appears less frequently in + # google code and would have been easier to implement. This is because + # the downside for getting the allowed checks wrong means some extra + # semicolons, while the downside for getting disallowed checks wrong + # would result in compile errors. + # + # In addition to macros, we also don't want to warn on + # - Compound literals + # - Lambdas + # - alignas specifier with anonymous structs + # - decltype + # - concepts (requires expression) + closing_brace_pos = match.group(1).rfind(")") + opening_parenthesis = ReverseCloseExpression(clean_lines, linenum, closing_brace_pos) + if opening_parenthesis[2] > -1: + line_prefix = opening_parenthesis[0][0 : opening_parenthesis[2]] + macro = re.search(r"\b([A-Z_][A-Z0-9_]*)\s*$", line_prefix) + func = re.match(r"^(.*\])\s*$", line_prefix) + if ( + ( + macro + and macro.group(1) + not in ( + "TEST", + "TEST_F", + "MATCHER", + "MATCHER_P", + "TYPED_TEST", + "EXCLUSIVE_LOCKS_REQUIRED", + "SHARED_LOCKS_REQUIRED", + "LOCKS_EXCLUDED", + "INTERFACE_DEF", + ) + ) + or (func and not re.search(r"\boperator\s*\[\s*\]", func.group(1))) + or re.search(r"\b(?:struct|union)\s+alignas\s*$", line_prefix) + or re.search(r"\bdecltype$", line_prefix) + or re.search(r"\brequires.*$", line_prefix) + or re.search(r"\s+=\s*$", line_prefix) + ): + match = None + if ( + match + and opening_parenthesis[1] > 1 + and re.search(r"\]\s*$", clean_lines.elided[opening_parenthesis[1] - 1]) + ): + # Multi-line lambda-expression + match = None + + else: + # Try matching cases 2-3. + match = re.match(r"^(.*(?:else|\)\s*const)\s*)\{", line) + if not match: + # Try matching cases 4-6. These are always matched on separate lines. + # + # Note that we can't simply concatenate the previous line to the + # current line and do a single match, otherwise we may output + # duplicate warnings for the blank line case: + # if (cond) { + # // blank line + # } + prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] + if prevline and re.search(r"[;{}]\s*$", prevline): + match = re.match(r"^(\s*)\{", line) + + # Check matching closing brace + if match: + (endline, endlinenum, endpos) = CloseExpression(clean_lines, linenum, len(match.group(1))) + if endpos > -1 and re.match(r"^\s*;", endline[endpos:]): + # Current {} pair is eligible for semicolon check, and we have found + # the redundant semicolon, output warning here. + # + # Note: because we are scanning forward for opening braces, and + # outputting warnings for the matching closing brace, if there are + # nested blocks with trailing semicolons, we will get the error + # messages in reversed order. + + # We need to check the line forward for NOLINT + raw_lines = clean_lines.raw_lines + ParseNolintSuppressions(filename, raw_lines[endlinenum - 1], endlinenum - 1, error) + ParseNolintSuppressions(filename, raw_lines[endlinenum], endlinenum, error) + + error(filename, endlinenum, "readability/braces", 4, "You don't need a ; after a }") + + +def CheckEmptyBlockBody(filename, clean_lines, linenum, error): + """Look for empty loop/conditional body with only a single semicolon. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + # Search for loop keywords at the beginning of the line. Because only + # whitespaces are allowed before the keywords, this will also ignore most + # do-while-loops, since those lines should start with closing brace. + # + # We also check "if" blocks here, since an empty conditional block + # is likely an error. + line = clean_lines.elided[linenum] + if matched := re.match(r"\s*(for|while|if)\s*\(", line): + # Find the end of the conditional expression. + (end_line, end_linenum, end_pos) = CloseExpression(clean_lines, linenum, line.find("(")) + + # Output warning if what follows the condition expression is a semicolon. + # No warning for all other cases, including whitespace or newline, since we + # have a separate check for semicolons preceded by whitespace. + if end_pos >= 0 and re.match(r";", end_line[end_pos:]): + if matched.group(1) == "if": + error( + filename, + end_linenum, + "whitespace/empty_conditional_body", + 5, + "Empty conditional bodies should use {}", + ) + else: + error( + filename, + end_linenum, + "whitespace/empty_loop_body", + 5, + "Empty loop bodies should use {} or continue", + ) + + # Check for if statements that have completely empty bodies (no comments) + # and no else clauses. + if end_pos >= 0 and matched.group(1) == "if": + # Find the position of the opening { for the if statement. + # Return without logging an error if it has no brackets. + opening_linenum = end_linenum + opening_line_fragment = end_line[end_pos:] + # Loop until EOF or find anything that's not whitespace or opening {. + while not re.search(r"^\s*\{", opening_line_fragment): + if re.search(r"^(?!\s*$)", opening_line_fragment): + # Conditional has no brackets. + return + opening_linenum += 1 + if opening_linenum == len(clean_lines.elided): + # Couldn't find conditional's opening { or any code before EOF. + return + opening_line_fragment = clean_lines.elided[opening_linenum] + # Set opening_line (opening_line_fragment may not be entire opening line). + opening_line = clean_lines.elided[opening_linenum] + + # Find the position of the closing }. + opening_pos = opening_line_fragment.find("{") + if opening_linenum == end_linenum: + # We need to make opening_pos relative to the start of the entire line. + opening_pos += end_pos + (closing_line, closing_linenum, closing_pos) = CloseExpression( + clean_lines, opening_linenum, opening_pos + ) + if closing_pos < 0: + return + + # Now construct the body of the conditional. This consists of the portion + # of the opening line after the {, all lines until the closing line, + # and the portion of the closing line before the }. + if clean_lines.raw_lines[opening_linenum] != CleanseComments( + clean_lines.raw_lines[opening_linenum] + ): + # Opening line ends with a comment, so conditional isn't empty. + return + if closing_linenum > opening_linenum: + # Opening line after the {. Ignore comments here since we checked above. + bodylist = list(opening_line[opening_pos + 1 :]) + # All lines until closing line, excluding closing line, with comments. + bodylist.extend(clean_lines.raw_lines[opening_linenum + 1 : closing_linenum]) + # Closing line before the }. Won't (and can't) have comments. + bodylist.append(clean_lines.elided[closing_linenum][: closing_pos - 1]) + body = "\n".join(bodylist) + else: + # If statement has brackets and fits on a single line. + body = opening_line[opening_pos + 1 : closing_pos - 1] + + # Check if the body is empty + if not _EMPTY_CONDITIONAL_BODY_PATTERN.search(body): + return + # The body is empty. Now make sure there's not an else clause. + current_linenum = closing_linenum + current_line_fragment = closing_line[closing_pos:] + # Loop until EOF or find anything that's not whitespace or else clause. + while re.search(r"^\s*$|^(?=\s*else)", current_line_fragment): + if re.search(r"^(?=\s*else)", current_line_fragment): + # Found an else clause, so don't log an error. + return + current_linenum += 1 + if current_linenum == len(clean_lines.elided): + break + current_line_fragment = clean_lines.elided[current_linenum] + + # The body is empty and there's no else clause until EOF or other code. + error( + filename, + end_linenum, + "whitespace/empty_if_body", + 4, + ("If statement had no body and no else clause"), + ) + + +def FindCheckMacro(line): + """Find a replaceable CHECK-like macro. + + Args: + line: line to search on. + Returns: + (macro name, start position), or (None, -1) if no replaceable + macro is found. + """ + for macro in _CHECK_MACROS: + i = line.find(macro) + if i >= 0: + # Find opening parenthesis. Do a regular expression match here + # to make sure that we are matching the expected CHECK macro, as + # opposed to some other macro that happens to contain the CHECK + # substring. + matched = re.match(r"^(.*\b" + macro + r"\s*)\(", line) + if not matched: + continue + return (macro, len(matched.group(1))) + return (None, -1) + + +def CheckCheck(filename, clean_lines, linenum, error): + """Checks the use of CHECK and EXPECT macros. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + # Decide the set of replacement macros that should be suggested + lines = clean_lines.elided + (check_macro, start_pos) = FindCheckMacro(lines[linenum]) + if not check_macro: + return + + # Find end of the boolean expression by matching parentheses + (last_line, end_line, end_pos) = CloseExpression(clean_lines, linenum, start_pos) + if end_pos < 0: + return + + # If the check macro is followed by something other than a + # semicolon, assume users will log their own custom error messages + # and don't suggest any replacements. + if not re.match(r"\s*;", last_line[end_pos:]): + return + + if linenum == end_line: + expression = lines[linenum][start_pos + 1 : end_pos - 1] + else: + expression = lines[linenum][start_pos + 1 :] + for i in range(linenum + 1, end_line): + expression += lines[i] + expression += last_line[0 : end_pos - 1] + + # Parse expression so that we can take parentheses into account. + # This avoids false positives for inputs like "CHECK((a < 4) == b)", + # which is not replaceable by CHECK_LE. + lhs = "" + rhs = "" + operator = None + while expression: + matched = re.match( + r"^\s*(<<|<<=|>>|>>=|->\*|->|&&|\|\||" + r"==|!=|>=|>|<=|<|\()(.*)$", + expression, + ) + if matched: + token = matched.group(1) + if token == "(": + # Parenthesized operand + expression = matched.group(2) + (end, _) = FindEndOfExpressionInLine(expression, 0, ["("]) + if end < 0: + return # Unmatched parenthesis + lhs += "(" + expression[0:end] + expression = expression[end:] + elif token in ("&&", "||"): + # Logical and/or operators. This means the expression + # contains more than one term, for example: + # CHECK(42 < a && a < b); + # + # These are not replaceable with CHECK_LE, so bail out early. + return + elif token in ("<<", "<<=", ">>", ">>=", "->*", "->"): + # Non-relational operator + lhs += token + expression = matched.group(2) + else: + # Relational operator + operator = token + rhs = matched.group(2) + break + else: + # Unparenthesized operand. Instead of appending to lhs one character + # at a time, we do another regular expression match to consume several + # characters at once if possible. Trivial benchmark shows that this + # is more efficient when the operands are longer than a single + # character, which is generally the case. + matched = re.match(r"^([^-=!<>()&|]+)(.*)$", expression) + if not matched: + matched = re.match(r"^(\s*\S)(.*)$", expression) + if not matched: + break + lhs += matched.group(1) + expression = matched.group(2) + + # Only apply checks if we got all parts of the boolean expression + if not (lhs and operator and rhs): + return + + # Check that rhs do not contain logical operators. We already know + # that lhs is fine since the loop above parses out && and ||. + if rhs.find("&&") > -1 or rhs.find("||") > -1: + return + + # At least one of the operands must be a constant literal. This is + # to avoid suggesting replacements for unprintable things like + # CHECK(variable != iterator) + # + # The following pattern matches decimal, hex integers, strings, and + # characters (in that order). + lhs = lhs.strip() + rhs = rhs.strip() + match_constant = r'^([-+]?(\d+|0[xX][0-9a-fA-F]+)[lLuU]{0,3}|".*"|\'.*\')$' + if re.match(match_constant, lhs) or re.match(match_constant, rhs): + # Note: since we know both lhs and rhs, we can provide a more + # descriptive error message like: + # Consider using CHECK_EQ(x, 42) instead of CHECK(x == 42) + # Instead of: + # Consider using CHECK_EQ instead of CHECK(a == b) + # + # We are still keeping the less descriptive message because if lhs + # or rhs gets long, the error message might become unreadable. + error( + filename, + linenum, + "readability/check", + 2, + f"Consider using {_CHECK_REPLACEMENT[check_macro][operator]}" + f" instead of {check_macro}(a {operator} b)", + ) + + +def CheckAltTokens(filename, clean_lines, linenum, error): + """Check alternative keywords being used in boolean expressions. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Avoid preprocessor lines + if re.match(r"^\s*#", line): + return + + # Last ditch effort to avoid multi-line comments. This will not help + # if the comment started before the current line or ended after the + # current line, but it catches most of the false positives. At least, + # it provides a way to workaround this warning for people who use + # multi-line comments in preprocessor macros. + # + # TODO(google): remove this once cpplint has better support for + # multi-line comments. + if line.find("/*") >= 0 or line.find("*/") >= 0: + return + + for match in _ALT_TOKEN_REPLACEMENT_PATTERN.finditer(line): + error( + filename, + linenum, + "readability/alt_tokens", + 2, + f"Use operator {_ALT_TOKEN_REPLACEMENT[match.group(2)]} instead of {match.group(2)}", + ) + + +def GetLineWidth(line): + """Determines the width of the line in column positions. + + Args: + line: A string, which may be a Unicode string. + + Returns: + The width of the line in column positions, accounting for Unicode + combining characters and wide characters. + """ + if isinstance(line, str): + width = 0 + for uc in unicodedata.normalize("NFC", line): + if unicodedata.east_asian_width(uc) in ("W", "F"): + width += 2 + elif not unicodedata.combining(uc): + # Issue 337 + # https://mail.python.org/pipermail/python-list/2012-August/628809.html + if (sys.version_info.major, sys.version_info.minor) <= (3, 2): + # https://github.com/python/cpython/blob/2.7/Include/unicodeobject.h#L81 + is_wide_build = sysconfig.get_config_var("Py_UNICODE_SIZE") >= 4 + # https://github.com/python/cpython/blob/2.7/Objects/unicodeobject.c#L564 + is_low_surrogate = 0xDC00 <= ord(uc) <= 0xDFFF + if not is_wide_build and is_low_surrogate: + width -= 1 + + width += 1 + return width + return len(line) + + +def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, error, cppvar=None): + """Checks rules from the 'C++ style rules' section of cppguide.html. + + Most of these rules are hard to test (naming, comment style), but we + do what we can. In particular we check for 2-space indents, line lengths, + tab usage, spaces inside code, etc. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + file_extension: The extension (without the dot) of the filename. + nesting_state: A NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + cppvar: The header guard variable returned by GetHeaderGuardCPPVar. + """ + + # Don't use "elided" lines here, otherwise we can't check commented lines. + # Don't want to use "raw" either, because we don't want to check inside C++11 + # raw strings, + raw_lines = clean_lines.lines_without_raw_strings + line = raw_lines[linenum] + prev = raw_lines[linenum - 1] if linenum > 0 else "" + + if line.find("\t") != -1: + error(filename, linenum, "whitespace/tab", 1, "Tab found; better to use spaces") + + # One or three blank spaces at the beginning of the line is weird; it's + # hard to reconcile that with 2-space indents. + # NOTE: here are the conditions rob pike used for his tests. Mine aren't + # as sophisticated, but it may be worth becoming so: RLENGTH==initial_spaces + # if(RLENGTH > 20) complain = 0; + # if(match($0, " +(error|private|public|protected):")) complain = 0; + # if(match(prev, "&& *$")) complain = 0; + # if(match(prev, "\\|\\| *$")) complain = 0; + # if(match(prev, "[\",=><] *$")) complain = 0; + # if(match($0, " <<")) complain = 0; + # if(match(prev, " +for \\(")) complain = 0; + # if(prevodd && match(prevprev, " +for \\(")) complain = 0; + scope_or_label_pattern = r"\s*(?:public|private|protected|signals)(?:\s+(?:slots\s*)?)?:\s*\\?$" + classinfo = nesting_state.InnermostClass() + initial_spaces = 0 + cleansed_line = clean_lines.elided[linenum] + while initial_spaces < len(line) and line[initial_spaces] == " ": + initial_spaces += 1 + # There are certain situations we allow one space, notably for + # section labels, and also lines containing multi-line raw strings. + # We also don't check for lines that look like continuation lines + # (of lines ending in double quotes, commas, equals, or angle brackets) + # because the rules for how to indent those are non-trivial. + if ( + not re.search(r'[",=><] *$', prev) + and (initial_spaces in {1, 3}) + and not re.match(scope_or_label_pattern, cleansed_line) + and not (clean_lines.raw_lines[linenum] != line and re.match(r'^\s*""', line)) + ): + error( + filename, + linenum, + "whitespace/indent", + 3, + "Weird number of spaces at line-start. Are you using a 2-space indent?", + ) + + if line and line[-1].isspace(): + error( + filename, + linenum, + "whitespace/end_of_line", + 4, + "Line ends in whitespace. Consider deleting these extra spaces.", + ) + + # Check if the line is a header guard. + is_header_guard = IsHeaderExtension(file_extension) and line.startswith( + (f"#ifndef {cppvar}", f"#define {cppvar}", f"#endif // {cppvar}") + ) + # #include lines and header guards can be long, since there's no clean way to + # split them. + # + # URLs can be long too. It's possible to split these, but it makes them + # harder to cut&paste. + # + # The "$Id:...$" comment may also get very long without it being the + # developers fault. + # + # Doxygen documentation copying can get pretty long when using an overloaded + # function declaration + if ( + not line.startswith("#include") + and not is_header_guard + and not re.match(r"^\s*//.*http(s?)://\S*$", line) + and not re.match(r"^\s*//\s*[^\s]*$", line) + and not re.match(r"^// \$Id:.*#[0-9]+ \$$", line) + and not re.match(r"^\s*/// [@\\](copydoc|copydetails|copybrief) .*$", line) + ): + line_width = GetLineWidth(line) + if line_width > _line_length: + error( + filename, + linenum, + "whitespace/line_length", + 2, + f"Lines should be <= {_line_length} characters long", + ) + + if ( + cleansed_line.count(";") > 1 + and + # allow simple single line lambdas + not re.match(r"^[^{};]*\[[^\[\]]*\][^{}]*\{[^{}\n\r]*\}", line) + and + # for loops are allowed two ;'s (and may run over two lines). + cleansed_line.find("for") == -1 + and ( + GetPreviousNonBlankLine(clean_lines, linenum)[0].find("for") == -1 + or GetPreviousNonBlankLine(clean_lines, linenum)[0].find(";") != -1 + ) + and + # It's ok to have many commands in a switch case that fits in 1 line + not ( + (cleansed_line.find("case ") != -1 or cleansed_line.find("default:") != -1) + and cleansed_line.find("break;") != -1 + ) + ): + error(filename, linenum, "whitespace/newline", 0, "More than one command on the same line") + + # Some more style checks + CheckBraces(filename, clean_lines, linenum, error) + CheckTrailingSemicolon(filename, clean_lines, linenum, error) + CheckEmptyBlockBody(filename, clean_lines, linenum, error) + CheckSpacing(filename, clean_lines, linenum, nesting_state, error) + CheckOperatorSpacing(filename, clean_lines, linenum, error) + CheckParenthesisSpacing(filename, clean_lines, linenum, error) + CheckCommaSpacing(filename, clean_lines, linenum, error) + CheckBracesSpacing(filename, clean_lines, linenum, nesting_state, error) + CheckSpacingForFunctionCall(filename, clean_lines, linenum, error) + CheckCheck(filename, clean_lines, linenum, error) + CheckAltTokens(filename, clean_lines, linenum, error) + classinfo = nesting_state.InnermostClass() + if classinfo: + CheckSectionSpacing(filename, clean_lines, classinfo, linenum, error) + + +_RE_PATTERN_INCLUDE = re.compile(r'^\s*#\s*include\s*([<"])([^>"]*)[>"].*$') +# Matches the first component of a filename delimited by -s and _s. That is: +# _RE_FIRST_COMPONENT.match('foo').group(0) == 'foo' +# _RE_FIRST_COMPONENT.match('foo.cc').group(0) == 'foo' +# _RE_FIRST_COMPONENT.match('foo-bar_baz.cc').group(0) == 'foo' +# _RE_FIRST_COMPONENT.match('foo_bar-baz.cc').group(0) == 'foo' +_RE_FIRST_COMPONENT = re.compile(r"^[^-_.]+") + + +def _DropCommonSuffixes(filename): + """Drops common suffixes like _test.cc or -inl.h from filename. + + For example: + >>> _DropCommonSuffixes('foo/foo-inl.h') + 'foo/foo' + >>> _DropCommonSuffixes('foo/bar/foo.cc') + 'foo/bar/foo' + >>> _DropCommonSuffixes('foo/foo_internal.h') + 'foo/foo' + >>> _DropCommonSuffixes('foo/foo_unusualinternal.h') + 'foo/foo_unusualinternal' + + Args: + filename: The input filename. + + Returns: + The filename with the common suffix removed. + """ + for suffix in itertools.chain( + ( + f"{test_suffix.lstrip('_')}.{ext}" + for test_suffix, ext in itertools.product(_test_suffixes, GetNonHeaderExtensions()) + ), + ( + f"{suffix}.{ext}" + for suffix, ext in itertools.product(["inl", "imp", "internal"], GetHeaderExtensions()) + ), + ): + if ( + filename.endswith(suffix) + and len(filename) > len(suffix) + and filename[-len(suffix) - 1] in ("-", "_") + ): + return filename[: -len(suffix) - 1] + return os.path.splitext(filename)[0] + + +def _ClassifyInclude(fileinfo, include, used_angle_brackets, include_order="default"): + """Figures out what kind of header 'include' is. + + Args: + fileinfo: The current file cpplint is running over. A FileInfo instance. + include: The path to a #included file. + used_angle_brackets: True if the #include used <> rather than "". + include_order: "default" or other value allowed in program arguments + + Returns: + One of the _XXX_HEADER constants. + + For example: + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'stdio.h', True) + _C_SYS_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'string', True) + _CPP_SYS_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/foo.h', True, "standardcfirst") + _OTHER_SYS_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/foo.h', False) + _LIKELY_MY_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo_unknown_extension.cc'), + ... 'bar/foo_other_ext.h', False) + _POSSIBLE_MY_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/bar.h', False) + _OTHER_HEADER + """ + # This is a list of all standard c++ header files, except + # those already checked for above. + is_cpp_header = include in _CPP_HEADERS + + # Mark include as C header if in list or in a known folder for standard-ish C headers. + is_std_c_header = (include_order == "default") or ( + include in _C_HEADERS + # additional linux glibc header folders + or re.search(rf"(?:{'|'.join(C_STANDARD_HEADER_FOLDERS)})\/.*\.h", include) + ) + + # Headers with C++ extensions shouldn't be considered C system headers + include_ext = os.path.splitext(include)[1] + is_system = used_angle_brackets and include_ext not in [".hh", ".hpp", ".hxx", ".h++"] + + if is_system: + if is_cpp_header: + return _CPP_SYS_HEADER + if is_std_c_header: + return _C_SYS_HEADER + return _OTHER_SYS_HEADER + + # If the target file and the include we're checking share a + # basename when we drop common extensions, and the include + # lives in . , then it's likely to be owned by the target file. + target_dir, target_base = os.path.split(_DropCommonSuffixes(fileinfo.RepositoryName())) + include_dir, include_base = os.path.split(_DropCommonSuffixes(include)) + target_dir_pub = os.path.normpath(target_dir + "/../public") + target_dir_pub = target_dir_pub.replace("\\", "/") + if target_base == include_base and (include_dir in (target_dir, target_dir_pub)): + return _LIKELY_MY_HEADER + + # If the target and include share some initial basename + # component, it's possible the target is implementing the + # include, so it's allowed to be first, but we'll never + # complain if it's not there. + target_first_component = _RE_FIRST_COMPONENT.match(target_base) + include_first_component = _RE_FIRST_COMPONENT.match(include_base) + if ( + target_first_component + and include_first_component + and target_first_component.group(0) == include_first_component.group(0) + ): + return _POSSIBLE_MY_HEADER + + return _OTHER_HEADER + + +def CheckIncludeLine(filename, clean_lines, linenum, include_state, error): + """Check rules that are applicable to #include lines. + + Strings on #include lines are NOT removed from elided line, to make + certain tasks easier. However, to prevent false positives, checks + applicable to #include lines in CheckLanguage must be put here. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + include_state: An _IncludeState instance in which the headers are inserted. + error: The function to call with any errors found. + """ + fileinfo = FileInfo(filename) + line = clean_lines.lines[linenum] + + # "include" should use the new style "foo/bar.h" instead of just "bar.h" + # Only do this check if the included header follows google naming + # conventions. If not, assume that it's a 3rd party API that + # requires special include conventions. + # + # We also make an exception for Lua headers, which follow google + # naming convention but not the include convention. + match = re.match(r'#include\s*"([^/]+\.(.*))"', line) + if ( + match + and IsHeaderExtension(match.group(2)) + and not _third_party_headers_pattern.match(match.group(1)) + ): + error( + filename, + linenum, + "build/include_subdir", + 4, + "Include the directory when naming header files", + ) + + # we shouldn't include a file more than once. actually, there are a + # handful of instances where doing so is okay, but in general it's + # not. + match = _RE_PATTERN_INCLUDE.search(line) + if match: + include = match.group(2) + used_angle_brackets = match.group(1) == "<" + duplicate_line = include_state.FindHeader(include) + if duplicate_line >= 0: + error( + filename, + linenum, + "build/include", + 4, + f'"{include}" already included at {filename}:{duplicate_line}', + ) + return + + for extension in GetNonHeaderExtensions(): + if include.endswith("." + extension) and os.path.dirname( + fileinfo.RepositoryName() + ) != os.path.dirname(include): + error( + filename, + linenum, + "build/include", + 4, + "Do not include ." + extension + " files from other packages", + ) + return + + # We DO want to include a 3rd party looking header if it matches the + # filename. Otherwise we get an erroneous error "...should include its + # header" error later. + third_src_header = False + for ext in GetHeaderExtensions(): + basefilename = filename[0 : len(filename) - len(fileinfo.Extension())] + headerfile = basefilename + "." + ext + headername = FileInfo(headerfile).RepositoryName() + if headername in include or include in headername: + third_src_header = True + break + + if third_src_header or not _third_party_headers_pattern.match(include): + include_state.include_list[-1].append((include, linenum)) + + # We want to ensure that headers appear in the right order: + # 1) for foo.cc, foo.h (preferred location) + # 2) c system files + # 3) cpp system files + # 4) for foo.cc, foo.h (deprecated location) + # 5) other google headers + # + # We classify each include statement as one of those 5 types + # using a number of techniques. The include_state object keeps + # track of the highest type seen, and complains if we see a + # lower type after that. + error_message = include_state.CheckNextIncludeOrder( + _ClassifyInclude(fileinfo, include, used_angle_brackets, _include_order) + ) + if error_message: + error( + filename, + linenum, + "build/include_order", + 4, + f"{error_message}. Should be: {fileinfo.BaseName()}.h, c system," + " c++ system, other.", + ) + canonical_include = include_state.CanonicalizeAlphabeticalOrder(include) + if not include_state.IsInAlphabeticalOrder(clean_lines, linenum, canonical_include): + error( + filename, + linenum, + "build/include_alpha", + 4, + f'Include "{include}" not in alphabetical order', + ) + include_state.SetLastHeader(canonical_include) + + +def _GetTextInside(text, start_pattern): + r"""Retrieves all the text between matching open and close parentheses. + + Given a string of lines and a regular expression string, retrieve all the text + following the expression and between opening punctuation symbols like + (, [, or {, and the matching close-punctuation symbol. This properly nested + occurrences of the punctuation, so for the text like + printf(a(), b(c())); + a call to _GetTextInside(text, r'printf\(') will return 'a(), b(c())'. + start_pattern must match string having an open punctuation symbol at the end. + + Args: + text: The lines to extract text. Its comments and strings must be elided. + It can be single line and can span multiple lines. + start_pattern: The regexp string indicating where to start extracting + the text. + Returns: + The extracted text. + None if either the opening string or ending punctuation could not be found. + """ + # TODO(google): Audit cpplint.py to see what places could be profitably + # rewritten to use _GetTextInside (and use inferior regexp matching today). + + # Give opening punctuation to get the matching close-punctuation. + matching_punctuation = {"(": ")", "{": "}", "[": "]"} + closing_punctuation = set(dict.values(matching_punctuation)) + + # Find the position to start extracting text. + match = re.search(start_pattern, text, re.MULTILINE) + if not match: # start_pattern not found in text. + return None + start_position = match.end(0) + + assert start_position > 0, "start_pattern must ends with an opening punctuation." + assert text[start_position - 1] in matching_punctuation, ( + "start_pattern must ends with an opening punctuation." + ) + # Stack of closing punctuation we expect to have in text after position. + punctuation_stack = [matching_punctuation[text[start_position - 1]]] + position = start_position + while punctuation_stack and position < len(text): + if text[position] == punctuation_stack[-1]: + punctuation_stack.pop() + elif text[position] in closing_punctuation: + # A closing punctuation without matching opening punctuation. + return None + elif text[position] in matching_punctuation: + punctuation_stack.append(matching_punctuation[text[position]]) + position += 1 + if punctuation_stack: + # Opening punctuation left without matching close-punctuation. + return None + # punctuation match. + return text[start_position : position - 1] + + +# Patterns for matching call-by-reference parameters. +# +# Supports nested templates up to 2 levels deep using this messy pattern: +# < (?: < (?: < [^<>]* +# > +# | [^<>] )* +# > +# | [^<>] )* +# > +_RE_PATTERN_IDENT = r"[_a-zA-Z]\w*" # =~ [[:alpha:]][[:alnum:]]* +_RE_PATTERN_TYPE = ( + r"(?:const\s+)?(?:typename\s+|class\s+|struct\s+|union\s+|enum\s+)?" + r"(?:\w|" + r"\s*<(?:<(?:<[^<>]*>|[^<>])*>|[^<>])*>|" + r"::)+" +) +# A call-by-reference parameter ends with '& identifier'. +_RE_PATTERN_REF_PARAM = re.compile( + r"(" + _RE_PATTERN_TYPE + r"(?:\s*(?:\bconst\b|[*]))*\s*" + r"&\s*" + _RE_PATTERN_IDENT + r")\s*(?:=[^,()]+)?[,)]" +) +# A call-by-const-reference parameter either ends with 'const& identifier' +# or looks like 'const type& identifier' when 'type' is atomic. +_RE_PATTERN_CONST_REF_PARAM = ( + r"(?:.*\s*\bconst\s*&\s*" + + _RE_PATTERN_IDENT + + r"|const\s+" + + _RE_PATTERN_TYPE + + r"\s*&\s*" + + _RE_PATTERN_IDENT + + r")" +) +# Stream types. +_RE_PATTERN_REF_STREAM_PARAM = r"(?:.*stream\s*&\s*" + _RE_PATTERN_IDENT + r")" + + +def CheckLanguage( + filename, clean_lines, linenum, file_extension, include_state, nesting_state, error +): + """Checks rules from the 'C++ language rules' section of cppguide.html. + + Some of these rules are hard to test (function overloading, using + uint32_t inappropriately), but we do the best we can. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + file_extension: The extension (without the dot) of the filename. + include_state: An _IncludeState instance in which the headers are inserted. + nesting_state: A NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + # If the line is empty or consists of entirely a comment, no need to + # check it. + line = clean_lines.elided[linenum] + if not line: + return + + match = _RE_PATTERN_INCLUDE.search(line) + if match: + CheckIncludeLine(filename, clean_lines, linenum, include_state, error) + return + + # Reset include state across preprocessor directives. This is meant + # to silence warnings for conditional includes. + match = re.match(r"^\s*#\s*(if|ifdef|ifndef|elif|else|endif)\b", line) + if match: + include_state.ResetSection(match.group(1)) + + # Perform other checks now that we are sure that this is not an include line + CheckCasts(filename, clean_lines, linenum, error) + CheckGlobalStatic(filename, clean_lines, linenum, error) + CheckPrintf(filename, clean_lines, linenum, error) + + if IsHeaderExtension(file_extension): + # TODO(google): check that 1-arg constructors are explicit. + # How to tell it's a constructor? + # (handled in CheckForNonStandardConstructs for now) + # TODO(google): check that classes declare or disable copy/assign + # (level 1 error) + pass + + # Check if people are using the verboten C basic types. The only exception + # we regularly allow is "unsigned short port" for port. + if re.search(r"\bshort port\b", line): + if not re.search(r"\bunsigned short port\b", line): + error( + filename, linenum, "runtime/int", 4, 'Use "unsigned short" for ports, not "short"' + ) + else: + match = re.search(r"\b(short|long(?! +double)|long long)\b", line) + if match: + error( + filename, + linenum, + "runtime/int", + 4, + f"Use int16_t/int64_t/etc, rather than the C type {match.group(1)}", + ) + + # Check if some verboten operator overloading is going on + # TODO(google): catch out-of-line unary operator&: + # class X {}; + # int operator&(const X& x) { return 42; } // unary operator& + # The trick is it's hard to tell apart from binary operator&: + # class Y { int operator&(const Y& x) { return 23; } }; // binary operator& + if re.search(r"\boperator\s*&\s*\(\s*\)", line): + error( + filename, + linenum, + "runtime/operator", + 4, + "Unary operator& is dangerous. Do not use it.", + ) + + # Check for suspicious usage of "if" like + # } if (a == b) { + if re.search(r"\}\s*if\s*\(", line): + error( + filename, + linenum, + "readability/braces", + 4, + 'Did you mean "else if"? If not, start a new line for "if".', + ) + + # Check for potential format string bugs like printf(foo). + # We constrain the pattern not to pick things like DocidForPrintf(foo). + # Not perfect but it can catch printf(foo.c_str()) and printf(foo->c_str()) + # TODO(google): Catch the following case. Need to change the calling + # convention of the whole function to process multiple line to handle it. + # printf( + # boy_this_is_a_really_long_variable_that_cannot_fit_on_the_prev_line); + if printf_args := _GetTextInside(line, r"(?i)\b(string)?printf\s*\("): + match = re.match(r"([\w.\->()]+)$", printf_args) + if match and match.group(1) != "__VA_ARGS__": + function_name = re.search(r"\b((?:string)?printf)\s*\(", line, re.IGNORECASE).group(1) + error( + filename, + linenum, + "runtime/printf", + 4, + f'Potential format string bug. Do {function_name}("%s", {match.group(1)}) instead.', + ) + + # Check for potential memset bugs like memset(buf, sizeof(buf), 0). + match = re.search(r"memset\s*\(([^,]*),\s*([^,]*),\s*0\s*\)", line) + if match and not re.match(r"^''|-?[0-9]+|0x[0-9A-Fa-f]$", match.group(2)): + error( + filename, + linenum, + "runtime/memset", + 4, + f'Did you mean "memset({match.group(1)}, 0, {match.group(2)})"?', + ) + + if re.search(r"\busing namespace\b", line): + is_literals = re.search(r"\bliterals\b", line) is not None + is_header = not _IsSourceExtension(file_extension) + file_type = "header" if is_header else "source" + + # Check for the block scope for multiline blocks. + # Check if the line starts with the using directive as a heuristic in case it's all one line + is_block_scope = nesting_state.InBlockScope() or not line.startswith("using namespace") + + scope_type = "block" if is_block_scope else "namespace" + literal_type = "literals" if is_literals else "nonliterals" + + specific_category = f"build/namespaces/{file_type}/{scope_type}/{literal_type}" + + error( + filename, + linenum, + specific_category, + 5, + "Do not use namespace using-directives. Use using-declarations instead.", + ) + + # Detect variable-length arrays. + match = re.match(r"\s*(.+::)?(\w+) [a-z]\w*\[(.+)];", line) + if ( + match + and match.group(2) != "return" + and match.group(2) != "delete" + and match.group(3).find("]") == -1 + ): + # Split the size using space and arithmetic operators as delimiters. + # If any of the resulting tokens are not compile time constants then + # report the error. + tokens = re.split(r"\s|\+|\-|\*|\/|<<|>>]", match.group(3)) + is_const = True + skip_next = False + for tok in tokens: + if skip_next: + skip_next = False + continue + + if re.search(r"sizeof\(.+\)", tok): + continue + if re.search(r"arraysize\(\w+\)", tok): + continue + + tok = tok.lstrip("(") + tok = tok.rstrip(")") + if not tok: + continue + if re.match(r"\d+", tok): + continue + if re.match(r"0[xX][0-9a-fA-F]+", tok): + continue + if re.match(r"k[A-Z0-9]\w*", tok): + continue + if re.match(r"(.+::)?k[A-Z0-9]\w*", tok): + continue + if re.match(r"(.+::)?[A-Z][A-Z0-9_]*", tok): + continue + # A catch all for tricky sizeof cases, including 'sizeof expression', + # 'sizeof(*type)', 'sizeof(const type)', 'sizeof(struct StructName)' + # requires skipping the next token because we split on ' ' and '*'. + if tok.startswith("sizeof"): + skip_next = True + continue + is_const = False + break + if not is_const: + error( + filename, + linenum, + "runtime/arrays", + 1, + "Do not use variable-length arrays. Use an appropriately named " + "('k' followed by CamelCase) compile-time constant for the size.", + ) + + # Check for use of unnamed namespaces in header files. Registration + # macros are typically OK, so we allow use of "namespace {" on lines + # that end with backslashes. + if ( + IsHeaderExtension(file_extension) + and re.search(r"\bnamespace\s*{", line) + and line[-1] != "\\" + ): + error( + filename, + linenum, + "build/namespaces_headers", + 4, + "Do not use unnamed namespaces in header files. See " + "https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Namespaces" + " for more information.", + ) + + +def CheckGlobalStatic(filename, clean_lines, linenum, error): + """Check for unsafe global or static objects. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Match two lines at a time to support multiline declarations + if linenum + 1 < clean_lines.NumLines() and not re.search(r"[;({]", line): + line += clean_lines.elided[linenum + 1].strip() + + # Check for people declaring static/global STL strings at the top level. + # This is dangerous because the C++ language does not guarantee that + # globals with constructors are initialized before the first access, and + # also because globals can be destroyed when some threads are still running. + # TODO(google): Generalize this to also find static unique_ptr instances. + # TODO(google): File bugs for clang-tidy to find these. + match = re.match( + r"((?:|static +)(?:|const +))(?::*std::)?string( +const)? +" + r"([a-zA-Z0-9_:]+)\b(.*)", + line, + ) + + # Remove false positives: + # - String pointers (as opposed to values). + # string *pointer + # const string *pointer + # string const *pointer + # string *const pointer + # + # - Functions and template specializations. + # string Function(... + # string Class::Method(... + # + # - Operators. These are matched separately because operator names + # cross non-word boundaries, and trying to match both operators + # and functions at the same time would decrease accuracy of + # matching identifiers. + # string Class::operator*() + if ( + match + and not re.search(r"\bstring\b(\s+const)?\s*[\*\&]\s*(const\s+)?\w", line) + and not re.search(r"\boperator\W", line) + and not re.match(r'\s*(<.*>)?(::[a-zA-Z0-9_]+)*\s*\(([^"]|$)', match.group(4)) + ): + if re.search(r"\bconst\b", line): + error( + filename, + linenum, + "runtime/string", + 4, + "For a static/global string constant, use a C style string instead:" + f' "{match.group(1)}char{match.group(2) or ""} {match.group(3)}[]".', + ) + else: + error( + filename, + linenum, + "runtime/string", + 4, + "Static/global string variables are not permitted.", + ) + + if re.search(r"\b([A-Za-z0-9_]*_)\(\1\)", line) or re.search( + r"\b([A-Za-z0-9_]*_)\(CHECK_NOTNULL\(\1\)\)", line + ): + error( + filename, + linenum, + "runtime/init", + 4, + "You seem to be initializing a member variable with itself.", + ) + + +def CheckPrintf(filename, clean_lines, linenum, error): + """Check for printf related issues. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # When snprintf is used, the second argument shouldn't be a literal. + match = re.search(r"snprintf\s*\(([^,]*),\s*([0-9]*)\s*,", line) + if match and match.group(2) != "0": + # If 2nd arg is zero, snprintf is used to calculate size. + error( + filename, + linenum, + "runtime/printf", + 3, + "If you can, use" + f" sizeof({match.group(1)}) instead of {match.group(2)}" + " as the 2nd arg to snprintf.", + ) + + # Check if some verboten C functions are being used. + if re.search(r"\bsprintf\s*\(", line): + error(filename, linenum, "runtime/printf", 5, "Never use sprintf. Use snprintf instead.") + match = re.search(r"\b(strcpy|strcat)\s*\(", line) + if match: + error( + filename, + linenum, + "runtime/printf", + 4, + f"Almost always, snprintf is better than {match.group(1)}", + ) + + +def IsDerivedFunction(clean_lines, linenum): + """Check if current line contains an inherited function. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + Returns: + True if current line contains a function with "override" + virt-specifier. + """ + # Scan back a few lines for start of current function + for i in range(linenum, max(-1, linenum - 10), -1): + match = re.match(r"^([^()]*\w+)\(", clean_lines.elided[i]) + if match: + # Look for "override" after the matching closing parenthesis + line, _, closing_paren = CloseExpression(clean_lines, i, len(match.group(1))) + return closing_paren >= 0 and re.search(r"\boverride\b", line[closing_paren:]) + return False + + +def IsOutOfLineMethodDefinition(clean_lines, linenum): + """Check if current line contains an out-of-line method definition. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + Returns: + True if current line contains an out-of-line method definition. + """ + # Scan back a few lines for start of current function + for i in range(linenum, max(-1, linenum - 10), -1): + if re.match(r"^([^()]*\w+)\(", clean_lines.elided[i]): + return re.match(r"^[^()]*\w+::\w+\(", clean_lines.elided[i]) is not None + return False + + +def IsInitializerList(clean_lines, linenum): + """Check if current line is inside constructor initializer list. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + Returns: + True if current line appears to be inside constructor initializer + list, False otherwise. + """ + for i in range(linenum, 1, -1): + line = clean_lines.elided[i] + if i == linenum: + remove_function_body = re.match(r"^(.*)\{\s*$", line) + if remove_function_body: + line = remove_function_body.group(1) + + if re.search(r"\s:\s*\w+[({]", line): + # A lone colon tend to indicate the start of a constructor + # initializer list. It could also be a ternary operator, which + # also tend to appear in constructor initializer lists as + # opposed to parameter lists. + return True + if re.search(r"\}\s*,\s*$", line): + # A closing brace followed by a comma is probably the end of a + # brace-initialized member in constructor initializer list. + return True + if re.search(r"[{};]\s*$", line): + # Found one of the following: + # - A closing brace or semicolon, probably the end of the previous + # function. + # - An opening brace, probably the start of current class or namespace. + # + # Current line is probably not inside an initializer list since + # we saw one of those things without seeing the starting colon. + return False + + # Got to the beginning of the file without seeing the start of + # constructor initializer list. + return False + + +def CheckForNonConstReference(filename, clean_lines, linenum, nesting_state, error): + """Check for non-const references. + + Separate from CheckLanguage since it scans backwards from current + line, instead of scanning forward. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + nesting_state: A NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + # Do nothing if there is no '&' on current line. + line = clean_lines.elided[linenum] + if "&" not in line: + return + + # If a function is inherited, current function doesn't have much of + # a choice, so any non-const references should not be blamed on + # derived function. + if IsDerivedFunction(clean_lines, linenum): + return + + # Don't warn on out-of-line method definitions, as we would warn on the + # in-line declaration, if it isn't marked with 'override'. + if IsOutOfLineMethodDefinition(clean_lines, linenum): + return + + # Long type names may be broken across multiple lines, usually in one + # of these forms: + # LongType + # ::LongTypeContinued &identifier + # LongType:: + # LongTypeContinued &identifier + # LongType< + # ...>::LongTypeContinued &identifier + # + # If we detected a type split across two lines, join the previous + # line to current line so that we can match const references + # accordingly. + # + # Note that this only scans back one line, since scanning back + # arbitrary number of lines would be expensive. If you have a type + # that spans more than 2 lines, please use a typedef. + if linenum > 1: + previous = None + if re.match(r"\s*::(?:[\w<>]|::)+\s*&\s*\S", line): + # previous_line\n + ::current_line + previous = re.search( + r"\b((?:const\s*)?(?:[\w<>]|::)+[\w<>])\s*$", clean_lines.elided[linenum - 1] + ) + elif re.match(r"\s*[a-zA-Z_]([\w<>]|::)+\s*&\s*\S", line): + # previous_line::\n + current_line + previous = re.search( + r"\b((?:const\s*)?(?:[\w<>]|::)+::)\s*$", clean_lines.elided[linenum - 1] + ) + if previous: + line = previous.group(1) + line.lstrip() + else: + # Check for templated parameter that is split across multiple lines + endpos = line.rfind(">") + if endpos > -1: + (_, startline, startpos) = ReverseCloseExpression(clean_lines, linenum, endpos) + if startpos > -1 and startline < linenum: + # Found the matching < on an earlier line, collect all + # pieces up to current line. + line = "" + for i in range(startline, linenum + 1): + line += clean_lines.elided[i].strip() + + # Check for non-const references in function parameters. A single '&' may + # found in the following places: + # inside expression: binary & for bitwise AND + # inside expression: unary & for taking the address of something + # inside declarators: reference parameter + # We will exclude the first two cases by checking that we are not inside a + # function body, including one that was just introduced by a trailing '{'. + # TODO(google): Doesn't account for 'catch(Exception& e)' [rare]. + if nesting_state.previous_stack_top and not ( + isinstance(nesting_state.previous_stack_top, (_ClassInfo, _NamespaceInfo)) + ): + # Not at toplevel, not within a class, and not within a namespace + return + + # Avoid initializer lists. We only need to scan back from the + # current line for something that starts with ':'. + # + # We don't need to check the current line, since the '&' would + # appear inside the second set of parentheses on the current line as + # opposed to the first set. + if linenum > 0: + for i in range(linenum - 1, max(0, linenum - 10), -1): + previous_line = clean_lines.elided[i] + if not re.search(r"[),]\s*$", previous_line): + break + if re.match(r"^\s*:\s+\S", previous_line): + return + + # Avoid preprocessors + if re.search(r"\\\s*$", line): + return + + # Avoid constructor initializer lists + if IsInitializerList(clean_lines, linenum): + return + + # We allow non-const references in a few standard places, like functions + # called "swap()" or iostream operators like "<<" or ">>". Do not check + # those function parameters. + # + # We also accept & in static_assert, which looks like a function but + # it's actually a declaration expression. + allowed_functions = ( + r"(?:[sS]wap(?:<\w:+>)?|" + r"operator\s*[<>][<>]|" + r"static_assert|COMPILE_ASSERT" + r")\s*\(" + ) + if re.search(allowed_functions, line): + return + if not re.search(r"\S+\([^)]*$", line): + # Don't see an allowed function on this line. Actually we + # didn't see any function name on this line, so this is likely a + # multi-line parameter list. Try a bit harder to catch this case. + for i in range(2): + if linenum > i and re.search(allowed_functions, clean_lines.elided[linenum - i - 1]): + return + + decls = re.sub(r"{[^}]*}", " ", line) # exclude function body + for parameter in re.findall(_RE_PATTERN_REF_PARAM, decls): + if not re.match(_RE_PATTERN_CONST_REF_PARAM, parameter) and not re.match( + _RE_PATTERN_REF_STREAM_PARAM, parameter + ): + error( + filename, + linenum, + "runtime/references", + 2, + "Is this a non-const reference? " + "If so, make const or use a pointer: " + re.sub(" *<", "<", parameter), + ) + + +def CheckCasts(filename, clean_lines, linenum, error): + """Various cast related checks. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Check to see if they're using an conversion function cast. + # I just try to capture the most common basic types, though there are more. + # Parameterless conversion functions, such as bool(), are allowed as they are + # probably a member operator declaration or default constructor. + match = re.search( + r"(\bnew\s+(?:const\s+)?|\S<\s*(?:const\s+)?)?\b" + r"(int|float|double|bool|char|int16_t|uint16_t|int32_t|uint32_t|int64_t|uint64_t)" + r"(\([^)].*)", + line, + ) + expecting_function = ExpectingFunctionArgs(clean_lines, linenum) + if match and not expecting_function: + matched_type = match.group(2) + + # matched_new_or_template is used to silence two false positives: + # - New operators + # - Template arguments with function types + # + # For template arguments, we match on types immediately following + # an opening bracket without any spaces. This is a fast way to + # silence the common case where the function type is the first + # template argument. False negative with less-than comparison is + # avoided because those operators are usually followed by a space. + # + # function // bracket + no space = false positive + # value < double(42) // bracket + space = true positive + matched_new_or_template = match.group(1) + + # Avoid arrays by looking for brackets that come after the closing + # parenthesis. + if re.match(r"\([^()]+\)\s*\[", match.group(3)): + return + + # Other things to ignore: + # - Function pointers + # - Casts to pointer types + # - Placement new + # - Alias declarations + matched_funcptr = match.group(3) + if ( + matched_new_or_template is None + and not ( + matched_funcptr + and ( + re.match(r"\((?:[^() ]+::\s*\*\s*)?[^() ]+\)\s*\(", matched_funcptr) + or matched_funcptr.startswith("(*)") + ) + ) + and not re.match(r"\s*using\s+\S+\s*=\s*" + matched_type, line) + and not re.search(r"new\(\S+\)\s*" + matched_type, line) + ): + error( + filename, + linenum, + "readability/casting", + 4, + f"Using deprecated casting style. Use static_cast<{matched_type}>(...) instead", + ) + + if not expecting_function: + CheckCStyleCast( + filename, + clean_lines, + linenum, + "static_cast", + r"\((int|float|double|bool|char|u?int(16|32|64)_t|size_t)\)", + error, + ) + + # This doesn't catch all cases. Consider (const char * const)"hello". + # + # (char *) "foo" should always be a const_cast (reinterpret_cast won't + # compile). + if CheckCStyleCast( + filename, clean_lines, linenum, "const_cast", r'\((char\s?\*+\s?)\)\s*"', error + ): + pass + else: + # Check pointer casts for other than string constants + CheckCStyleCast( + filename, clean_lines, linenum, "reinterpret_cast", r"\((\w+\s?\*+\s?)\)", error + ) + + # In addition, we look for people taking the address of a cast. This + # is dangerous -- casts can assign to temporaries, so the pointer doesn't + # point where you think. + # + # Some non-identifier character is required before the '&' for the + # expression to be recognized as a cast. These are casts: + # expression = &static_cast(temporary()); + # function(&(int*)(temporary())); + # + # This is not a cast: + # reference_type&(int* function_param); + match = re.search( + r"(?:[^\w]&\(([^)*][^)]*)\)[\w(])|" + r"(?:[^\w]&(static|dynamic|down|reinterpret)_cast\b)", + line, + ) + if match: + # Try a better error message when the & is bound to something + # dereferenced by the casted pointer, as opposed to the casted + # pointer itself. + parenthesis_error = False + match = re.match(r"^(.*&(?:static|dynamic|down|reinterpret)_cast\b)<", line) + if match: + _, y1, x1 = CloseExpression(clean_lines, linenum, len(match.group(1))) + if x1 >= 0 and clean_lines.elided[y1][x1] == "(": + _, y2, x2 = CloseExpression(clean_lines, y1, x1) + if x2 >= 0: + extended_line = clean_lines.elided[y2][x2:] + if y2 < clean_lines.NumLines() - 1: + extended_line += clean_lines.elided[y2 + 1] + if re.match(r"\s*(?:->|\[)", extended_line): + parenthesis_error = True + + if parenthesis_error: + error( + filename, + linenum, + "readability/casting", + 4, + ( + "Are you taking an address of something dereferenced " + "from a cast? Wrapping the dereferenced expression in " + "parentheses will make the binding more obvious" + ), + ) + else: + error( + filename, + linenum, + "runtime/casting", + 4, + ( + "Are you taking an address of a cast? " + "This is dangerous: could be a temp var. " + "Take the address before doing the cast, rather than after" + ), + ) + + +def CheckCStyleCast(filename, clean_lines, linenum, cast_type, pattern, error): + """Checks for a C-style cast by looking for the pattern. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + cast_type: The string for the C++ cast to recommend. This is either + reinterpret_cast, static_cast, or const_cast, depending. + pattern: The regular expression used to find C-style casts. + error: The function to call with any errors found. + + Returns: + True if an error was emitted. + False otherwise. + """ + line = clean_lines.elided[linenum] + match = re.search(pattern, line) + if not match: + return False + + # Exclude lines with keywords that tend to look like casts + context = line[0 : match.start(1) - 1] + if re.match(r".*\b(?:sizeof|alignof|alignas|[_A-Z][_A-Z0-9]*)\s*$", context): + return False + + # Try expanding current context to see if we one level of + # parentheses inside a macro. + if linenum > 0: + for i in range(linenum - 1, max(0, linenum - 5), -1): + context = clean_lines.elided[i] + context + if re.match(r".*\b[_A-Z][_A-Z0-9]*\s*\((?:\([^()]*\)|[^()])*$", context): + return False + + # operator++(int) and operator--(int) + if context.endswith((" operator++", " operator--", "::operator++", "::operator--")): + return False + + # A single unnamed argument for a function tends to look like old style cast. + # If we see those, don't issue warnings for deprecated casts. + remainder = line[match.end(0) :] + if re.match(r"^\s*(?:;|const\b|throw\b|final\b|override\b|[=>{),]|->)", remainder): + return False + + # At this point, all that should be left is actual casts. + error( + filename, + linenum, + "readability/casting", + 4, + f"Using C-style cast. Use {cast_type}<{match.group(1)}>(...) instead", + ) + + return True + + +def ExpectingFunctionArgs(clean_lines, linenum): + """Checks whether where function type arguments are expected. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + + Returns: + True if the line at 'linenum' is inside something that expects arguments + of function types. + """ + line = clean_lines.elided[linenum] + return re.match(r"^\s*MOCK_(CONST_)?METHOD\d+(_T)?\(", line) or ( + linenum >= 2 + and ( + re.match( + r"^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\((?:\S+,)?\s*$", + clean_lines.elided[linenum - 1], + ) + or re.match( + r"^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\(\s*$", clean_lines.elided[linenum - 2] + ) + or re.search(r"\bstd::m?function\s*\<\s*$", clean_lines.elided[linenum - 1]) + ) + ) + + +_HEADERS_CONTAINING_TEMPLATES: tuple[tuple[str, tuple[str, ...]], ...] = ( + ("", ("deque",)), + ( + "", + ( + "unary_function", + "binary_function", + "plus", + "minus", + "multiplies", + "divides", + "modulus", + "negate", + "equal_to", + "not_equal_to", + "greater", + "less", + "greater_equal", + "less_equal", + "logical_and", + "logical_or", + "logical_not", + "unary_negate", + "not1", + "binary_negate", + "not2", + "bind1st", + "bind2nd", + "pointer_to_unary_function", + "pointer_to_binary_function", + "ptr_fun", + "mem_fun_t", + "mem_fun", + "mem_fun1_t", + "mem_fun1_ref_t", + "mem_fun_ref_t", + "const_mem_fun_t", + "const_mem_fun1_t", + "const_mem_fun_ref_t", + "const_mem_fun1_ref_t", + "mem_fun_ref", + ), + ), + ("", ("numeric_limits",)), + ("", ("list",)), + ("", ("multimap",)), + ( + "", + ("allocator", "make_shared", "make_unique", "shared_ptr", "unique_ptr", "weak_ptr"), + ), + ( + "", + ( + "queue", + "priority_queue", + ), + ), + ( + "", + ( + "set", + "multiset", + ), + ), + ("", ("stack",)), + ( + "", + ( + "char_traits", + "basic_string", + ), + ), + ("", ("tuple",)), + ("", ("unordered_map", "unordered_multimap")), + ("", ("unordered_set", "unordered_multiset")), + ("", ("pair",)), + ("", ("vector",)), + # gcc extensions. + # Note: std::hash is their hash, ::hash is our hash + ( + "", + ( + "hash_map", + "hash_multimap", + ), + ), + ( + "", + ( + "hash_set", + "hash_multiset", + ), + ), + ("", ("slist",)), +) + +_HEADERS_MAYBE_TEMPLATES: tuple[tuple[str, tuple[str, ...]], ...] = ( + ( + "", + ( + "copy", + "max", + "min", + "min_element", + "sort", + "transform", + ), + ), + ("", ("forward", "make_pair", "move", "swap")), +) + +# Non templated types or global objects +_HEADERS_TYPES_OR_OBJS: tuple[tuple[str, tuple[str, ...]], ...] = ( + # String and others are special -- it is a non-templatized type in STL. + ("", ("string",)), + ("", ("cin", "cout", "cerr", "clog", "wcin", "wcout", "wcerr", "wclog")), + ("", ("FILE", "fpos_t")), +) + +# Non templated functions +_HEADERS_FUNCTIONS: tuple[tuple[str, tuple[str, ...]], ...] = ( + ( + "", + ( + "fopen", + "freopen", + "fclose", + "fflush", + "setbuf", + "setvbuf", + "fread", + "fwrite", + "fgetc", + "getc", + "fgets", + "fputc", + "putc", + "fputs", + "getchar", + "gets", + "putchar", + "puts", + "ungetc", + "scanf", + "fscanf", + "sscanf", + "vscanf", + "vfscanf", + "vsscanf", + "printf", + "fprintf", + "sprintf", + "snprintf", + "vprintf", + "vfprintf", + "vsprintf", + "vsnprintf", + "ftell", + "fgetpos", + "fseek", + "fsetpos", + "clearerr", + "feof", + "ferror", + "perror", + "tmpfile", + "tmpnam", + ), + ), +) + +_re_pattern_headers_maybe_templates: list[tuple[re.Pattern, str, str]] = [] +for _header, _templates in _HEADERS_MAYBE_TEMPLATES: + # Match max(..., ...), max(..., ...), but not foo->max, foo.max or + # 'type::max()'. + _re_pattern_headers_maybe_templates.extend( + (re.compile(r"((\bstd::)|[^>.:])\b" + _template + r"(<.*?>)?\([^\)]"), _template, _header) + for _template in _templates + ) + +# Map is often overloaded. Only check, if it is fully qualified. +# Match 'std::map(...)', but not 'map(...)'' +_re_pattern_headers_maybe_templates.append( + (re.compile(r"(std\b::\bmap\s*\<)|(^(std\b::\b)map\b\(\s*\<)"), "map<>", "") +) + +# Other scripts may reach in and modify this pattern. +_re_pattern_templates: list[tuple[re.Pattern, str, str]] = [] +for _header, _templates in _HEADERS_CONTAINING_TEMPLATES: + _re_pattern_templates.extend( + ( + re.compile(r"((^|(^|\s|((^|\W)::))std::)|[^>.:]\b)" + _template + r"\s*\<"), + _template + "<>", + _header, + ) + for _template in _templates + ) - Args: - clean_lines: A CleansedLines instance containing the file contents. - linenum: The number of the line to check. +_re_pattern_types_or_objs: list[tuple[re.Pattern, object | type, str]] = [] +for _header, _types_or_objs in _HEADERS_TYPES_OR_OBJS: + _re_pattern_types_or_objs.extend( + (re.compile(r"\b" + _type_or_obj + r"\b"), _type_or_obj, _header) + for _type_or_obj in _types_or_objs + ) - Returns: - A tuple with two elements. The first element is the contents of the last - non-blank line before the current line, or the empty string if this is the - first non-blank line. The second is the line number of that line, or -1 - if this is the first non-blank line. - """ +_re_pattern_functions: list[tuple[re.Pattern, str, str]] = [] +for _header, _functions in _HEADERS_FUNCTIONS: + # Match printf(..., ...), but not foo->printf, foo.printf or + # 'type::printf()'. + _re_pattern_functions.extend( + (re.compile(r"([^>.]|^)\b" + _function + r"\([^\)]"), _function, _header) + for _function in _functions + ) - prevlinenum = linenum - 1 - while prevlinenum >= 0: - prevline = clean_lines.elided[prevlinenum] - if not IsBlankLine(prevline): # if not a blank line... - return (prevline, prevlinenum) - prevlinenum -= 1 - return ('', -1) +def FilesBelongToSameModule(filename_cc, filename_h): + """Check if these two filenames belong to the same module. -def CheckBraces(filename, clean_lines, linenum, error): - """Looks for misplaced braces (e.g. at the end of line). - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - line = clean_lines.elided[linenum] # get rid of comments and strings - - if Match(r'\s*{\s*$', line): - # We allow an open brace to start a line in the case where someone is using - # braces in a block to explicitly create a new scope, which is commonly used - # to control the lifetime of stack-allocated variables. Braces are also - # used for brace initializers inside function calls. We don't detect this - # perfectly: we just don't complain if the last non-whitespace character on - # the previous non-blank line is ',', ';', ':', '(', '{', or '}', or if the - # previous line starts a preprocessor block. We also allow a brace on the - # following line if it is part of an array initialization and would not fit - # within the 80 character limit of the preceding line. - prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] - if (not Search(r'[,;:}{(]\s*$', prevline) and - not Match(r'\s*#', prevline) and - not (GetLineWidth(prevline) > _line_length - 2 and '[]' in prevline)): - error(filename, linenum, 'whitespace/braces', 4, - '{ should almost always be at the end of the previous line') - - # An else clause should be on the same line as the preceding closing brace. - if Match(r'\s*else\b\s*(?:if\b|\{|$)', line): - prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] - if Match(r'\s*}\s*$', prevline): - error(filename, linenum, 'whitespace/newline', 4, - 'An else should appear on the same line as the preceding }') - - # If braces come on one side of an else, they should be on both. - # However, we have to worry about "else if" that spans multiple lines! - if Search(r'else if\s*\(', line): # could be multi-line if - brace_on_left = bool(Search(r'}\s*else if\s*\(', line)) - # find the ( after the if - pos = line.find('else if') - pos = line.find('(', pos) - if pos > 0: - (endline, _, endpos) = CloseExpression(clean_lines, linenum, pos) - brace_on_right = endline[endpos:].find('{') != -1 - if brace_on_left != brace_on_right: # must be brace after if - error(filename, linenum, 'readability/braces', 5, - 'If an else has a brace on one side, it should have it on both') - elif Search(r'}\s*else[^{]*$', line) or Match(r'[^}]*else\s*{', line): - error(filename, linenum, 'readability/braces', 5, - 'If an else has a brace on one side, it should have it on both') - - # Likewise, an else should never have the else clause on the same line - if Search(r'\belse [^\s{]', line) and not Search(r'\belse if\b', line): - error(filename, linenum, 'whitespace/newline', 4, - 'Else clause should never be on same line as else (use 2 lines)') - - # In the same way, a do/while should never be on one line - if Match(r'\s*do [^\s{]', line): - error(filename, linenum, 'whitespace/newline', 4, - 'do/while clauses should not be on a single line') - - # Check single-line if/else bodies. The style guide says 'curly braces are not - # required for single-line statements'. We additionally allow multi-line, - # single statements, but we reject anything with more than one semicolon in - # it. This means that the first semicolon after the if should be at the end of - # its line, and the line after that should have an indent level equal to or - # lower than the if. We also check for ambiguous if/else nesting without - # braces. - if_else_match = Search(r'\b(if\s*(|constexpr)\s*\(|else\b)', line) - if if_else_match and not Match(r'\s*#', line): - if_indent = GetIndentLevel(line) - endline, endlinenum, endpos = line, linenum, if_else_match.end() - if_match = Search(r'\bif\s*(|constexpr)\s*\(', line) - if if_match: - # This could be a multiline if condition, so find the end first. - pos = if_match.end() - 1 - (endline, endlinenum, endpos) = CloseExpression(clean_lines, linenum, pos) - # Check for an opening brace, either directly after the if or on the next - # line. If found, this isn't a single-statement conditional. - if (not Match(r'\s*{', endline[endpos:]) - and not (Match(r'\s*$', endline[endpos:]) - and endlinenum < (len(clean_lines.elided) - 1) - and Match(r'\s*{', clean_lines.elided[endlinenum + 1]))): - while (endlinenum < len(clean_lines.elided) - and ';' not in clean_lines.elided[endlinenum][endpos:]): - endlinenum += 1 - endpos = 0 - if endlinenum < len(clean_lines.elided): - endline = clean_lines.elided[endlinenum] - # We allow a mix of whitespace and closing braces (e.g. for one-liner - # methods) and a single \ after the semicolon (for macros) - endpos = endline.find(';') - if not Match(r';[\s}]*(\\?)$', endline[endpos:]): - # Semicolon isn't the last character, there's something trailing. - # Output a warning if the semicolon is not contained inside - # a lambda expression. - if not Match(r'^[^{};]*\[[^\[\]]*\][^{}]*\{[^{}]*\}\s*\)*[;,]\s*$', - endline): - error(filename, linenum, 'readability/braces', 4, - 'If/else bodies with multiple statements require braces') - elif endlinenum < len(clean_lines.elided) - 1: - # Make sure the next line is dedented - next_line = clean_lines.elided[endlinenum + 1] - next_indent = GetIndentLevel(next_line) - # With ambiguous nested if statements, this will error out on the - # if that *doesn't* match the else, regardless of whether it's the - # inner one or outer one. - if (if_match and Match(r'\s*else\b', next_line) - and next_indent != if_indent): - error(filename, linenum, 'readability/braces', 4, - 'Else clause should be indented at the same level as if. ' - 'Ambiguous nested if/else chains require braces.') - elif next_indent > if_indent: - error(filename, linenum, 'readability/braces', 4, - 'If/else bodies with multiple statements require braces') + The concept of a 'module' here is a as follows: + foo.h, foo-inl.h, foo.cc, foo_test.cc and foo_unittest.cc belong to the + same 'module' if they are in the same directory. + some/path/public/xyzzy and some/path/internal/xyzzy are also considered + to belong to the same module here. + If the filename_cc contains a longer path than the filename_h, for example, + '/absolute/path/to/base/sysinfo.cc', and this file would include + 'base/sysinfo.h', this function also produces the prefix needed to open the + header. This is used by the caller of this function to more robustly open the + header file. We don't have access to the real include paths in this context, + so we need this guesswork here. -def CheckTrailingSemicolon(filename, clean_lines, linenum, error): - """Looks for redundant trailing semicolon. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - line = clean_lines.elided[linenum] - - # Block bodies should not be followed by a semicolon. Due to C++11 - # brace initialization, there are more places where semicolons are - # required than not, so we explicitly list the allowed rules rather - # than listing the disallowed ones. These are the places where "};" - # should be replaced by just "}": - # 1. Some flavor of block following closing parenthesis: - # for (;;) {}; - # while (...) {}; - # switch (...) {}; - # Function(...) {}; - # if (...) {}; - # if (...) else if (...) {}; - # - # 2. else block: - # if (...) else {}; - # - # 3. const member function: - # Function(...) const {}; - # - # 4. Block following some statement: - # x = 42; - # {}; - # - # 5. Block at the beginning of a function: - # Function(...) { - # {}; - # } - # - # Note that naively checking for the preceding "{" will also match - # braces inside multi-dimensional arrays, but this is fine since - # that expression will not contain semicolons. - # - # 6. Block following another block: - # while (true) {} - # {}; - # - # 7. End of namespaces: - # namespace {}; - # - # These semicolons seems far more common than other kinds of - # redundant semicolons, possibly due to people converting classes - # to namespaces. For now we do not warn for this case. - # - # Try matching case 1 first. - match = Match(r'^(.*\)\s*)\{', line) - if match: - # Matched closing parenthesis (case 1). Check the token before the - # matching opening parenthesis, and don't warn if it looks like a - # macro. This avoids these false positives: - # - macro that defines a base class - # - multi-line macro that defines a base class - # - macro that defines the whole class-head - # - # But we still issue warnings for macros that we know are safe to - # warn, specifically: - # - TEST, TEST_F, TEST_P, MATCHER, MATCHER_P - # - TYPED_TEST - # - INTERFACE_DEF - # - EXCLUSIVE_LOCKS_REQUIRED, SHARED_LOCKS_REQUIRED, LOCKS_EXCLUDED: - # - # We implement a list of safe macros instead of a list of - # unsafe macros, even though the latter appears less frequently in - # google code and would have been easier to implement. This is because - # the downside for getting the allowed checks wrong means some extra - # semicolons, while the downside for getting disallowed checks wrong - # would result in compile errors. - # - # In addition to macros, we also don't want to warn on - # - Compound literals - # - Lambdas - # - alignas specifier with anonymous structs - # - decltype - closing_brace_pos = match.group(1).rfind(')') - opening_parenthesis = ReverseCloseExpression( - clean_lines, linenum, closing_brace_pos) - if opening_parenthesis[2] > -1: - line_prefix = opening_parenthesis[0][0:opening_parenthesis[2]] - macro = Search(r'\b([A-Z_][A-Z0-9_]*)\s*$', line_prefix) - func = Match(r'^(.*\])\s*$', line_prefix) - if ((macro and - macro.group(1) not in ( - 'TEST', 'TEST_F', 'MATCHER', 'MATCHER_P', 'TYPED_TEST', - 'EXCLUSIVE_LOCKS_REQUIRED', 'SHARED_LOCKS_REQUIRED', - 'LOCKS_EXCLUDED', 'INTERFACE_DEF')) or - (func and not Search(r'\boperator\s*\[\s*\]', func.group(1))) or - Search(r'\b(?:struct|union)\s+alignas\s*$', line_prefix) or - Search(r'\bdecltype$', line_prefix) or - Search(r'\s+=\s*$', line_prefix)): - match = None - if (match and - opening_parenthesis[1] > 1 and - Search(r'\]\s*$', clean_lines.elided[opening_parenthesis[1] - 1])): - # Multi-line lambda-expression - match = None - - else: - # Try matching cases 2-3. - match = Match(r'^(.*(?:else|\)\s*const)\s*)\{', line) - if not match: - # Try matching cases 4-6. These are always matched on separate lines. - # - # Note that we can't simply concatenate the previous line to the - # current line and do a single match, otherwise we may output - # duplicate warnings for the blank line case: - # if (cond) { - # // blank line - # } - prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] - if prevline and Search(r'[;{}]\s*$', prevline): - match = Match(r'^(\s*)\{', line) - - # Check matching closing brace - if match: - (endline, endlinenum, endpos) = CloseExpression( - clean_lines, linenum, len(match.group(1))) - if endpos > -1 and Match(r'^\s*;', endline[endpos:]): - # Current {} pair is eligible for semicolon check, and we have found - # the redundant semicolon, output warning here. - # - # Note: because we are scanning forward for opening braces, and - # outputting warnings for the matching closing brace, if there are - # nested blocks with trailing semicolons, we will get the error - # messages in reversed order. - - # We need to check the line forward for NOLINT - raw_lines = clean_lines.raw_lines - ParseNolintSuppressions(filename, raw_lines[endlinenum-1], endlinenum-1, - error) - ParseNolintSuppressions(filename, raw_lines[endlinenum], endlinenum, - error) - - error(filename, endlinenum, 'readability/braces', 4, - "You don't need a ; after a }") + Known bugs: tools/base/bar.cc and base/bar.h belong to the same module + according to this implementation. Because of this, this function gives + some false positives. This should be sufficiently rare in practice. + Args: + filename_cc: is the path for the source (e.g. .cc) file + filename_h: is the path for the header path -def CheckEmptyBlockBody(filename, clean_lines, linenum, error): - """Look for empty loop/conditional body with only a single semicolon. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - # Search for loop keywords at the beginning of the line. Because only - # whitespaces are allowed before the keywords, this will also ignore most - # do-while-loops, since those lines should start with closing brace. - # - # We also check "if" blocks here, since an empty conditional block - # is likely an error. - line = clean_lines.elided[linenum] - matched = Match(r'\s*(for|while|if)\s*\(', line) - if matched: - # Find the end of the conditional expression. - (end_line, end_linenum, end_pos) = CloseExpression( - clean_lines, linenum, line.find('(')) - - # Output warning if what follows the condition expression is a semicolon. - # No warning for all other cases, including whitespace or newline, since we - # have a separate check for semicolons preceded by whitespace. - if end_pos >= 0 and Match(r';', end_line[end_pos:]): - if matched.group(1) == 'if': - error(filename, end_linenum, 'whitespace/empty_conditional_body', 5, - 'Empty conditional bodies should use {}') - else: - error(filename, end_linenum, 'whitespace/empty_loop_body', 5, - 'Empty loop bodies should use {} or continue') - - # Check for if statements that have completely empty bodies (no comments) - # and no else clauses. - if end_pos >= 0 and matched.group(1) == 'if': - # Find the position of the opening { for the if statement. - # Return without logging an error if it has no brackets. - opening_linenum = end_linenum - opening_line_fragment = end_line[end_pos:] - # Loop until EOF or find anything that's not whitespace or opening {. - while not Search(r'^\s*\{', opening_line_fragment): - if Search(r'^(?!\s*$)', opening_line_fragment): - # Conditional has no brackets. - return - opening_linenum += 1 - if opening_linenum == len(clean_lines.elided): - # Couldn't find conditional's opening { or any code before EOF. - return - opening_line_fragment = clean_lines.elided[opening_linenum] - # Set opening_line (opening_line_fragment may not be entire opening line). - opening_line = clean_lines.elided[opening_linenum] - - # Find the position of the closing }. - opening_pos = opening_line_fragment.find('{') - if opening_linenum == end_linenum: - # We need to make opening_pos relative to the start of the entire line. - opening_pos += end_pos - (closing_line, closing_linenum, closing_pos) = CloseExpression( - clean_lines, opening_linenum, opening_pos) - if closing_pos < 0: - return + Returns: + Tuple with a bool and a string: + bool: True if filename_cc and filename_h belong to the same module. + string: the additional prefix needed to open the header file. + """ + fileinfo_cc = FileInfo(filename_cc) + if fileinfo_cc.Extension().lstrip(".") not in GetNonHeaderExtensions(): + return (False, "") - # Now construct the body of the conditional. This consists of the portion - # of the opening line after the {, all lines until the closing line, - # and the portion of the closing line before the }. - if (clean_lines.raw_lines[opening_linenum] != - CleanseComments(clean_lines.raw_lines[opening_linenum])): - # Opening line ends with a comment, so conditional isn't empty. - return - if closing_linenum > opening_linenum: - # Opening line after the {. Ignore comments here since we checked above. - bodylist = list(opening_line[opening_pos+1:]) - # All lines until closing line, excluding closing line, with comments. - bodylist.extend(clean_lines.raw_lines[opening_linenum+1:closing_linenum]) - # Closing line before the }. Won't (and can't) have comments. - bodylist.append(clean_lines.elided[closing_linenum][:closing_pos-1]) - body = '\n'.join(bodylist) - else: - # If statement has brackets and fits on a single line. - body = opening_line[opening_pos+1:closing_pos-1] - - # Check if the body is empty - if not _EMPTY_CONDITIONAL_BODY_PATTERN.search(body): - return - # The body is empty. Now make sure there's not an else clause. - current_linenum = closing_linenum - current_line_fragment = closing_line[closing_pos:] - # Loop until EOF or find anything that's not whitespace or else clause. - while Search(r'^\s*$|^(?=\s*else)', current_line_fragment): - if Search(r'^(?=\s*else)', current_line_fragment): - # Found an else clause, so don't log an error. - return - current_linenum += 1 - if current_linenum == len(clean_lines.elided): - break - current_line_fragment = clean_lines.elided[current_linenum] - - # The body is empty and there's no else clause until EOF or other code. - error(filename, end_linenum, 'whitespace/empty_if_body', 4, - ('If statement had no body and no else clause')) + fileinfo_h = FileInfo(filename_h) + if not IsHeaderExtension(fileinfo_h.Extension().lstrip(".")): + return (False, "") + filename_cc = filename_cc[: -(len(fileinfo_cc.Extension()))] + if matched_test_suffix := re.search(_TEST_FILE_SUFFIX, fileinfo_cc.BaseName()): + filename_cc = filename_cc[: -len(matched_test_suffix.group(1))] -def FindCheckMacro(line): - """Find a replaceable CHECK-like macro. - - Args: - line: line to search on. - Returns: - (macro name, start position), or (None, -1) if no replaceable - macro is found. - """ - for macro in _CHECK_MACROS: - i = line.find(macro) - if i >= 0: - # Find opening parenthesis. Do a regular expression match here - # to make sure that we are matching the expected CHECK macro, as - # opposed to some other macro that happens to contain the CHECK - # substring. - matched = Match(r'^(.*\b' + macro + r'\s*)\(', line) - if not matched: - continue - return (macro, len(matched.group(1))) - return (None, -1) + filename_cc = filename_cc.replace("/public/", "/") + filename_cc = filename_cc.replace("/internal/", "/") + filename_h = filename_h[: -(len(fileinfo_h.Extension()))] + filename_h = filename_h.removesuffix("-inl") + filename_h = filename_h.replace("/public/", "/") + filename_h = filename_h.replace("/internal/", "/") -def CheckCheck(filename, clean_lines, linenum, error): - """Checks the use of CHECK and EXPECT macros. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - # Decide the set of replacement macros that should be suggested - lines = clean_lines.elided - (check_macro, start_pos) = FindCheckMacro(lines[linenum]) - if not check_macro: - return - - # Find end of the boolean expression by matching parentheses - (last_line, end_line, end_pos) = CloseExpression( - clean_lines, linenum, start_pos) - if end_pos < 0: - return - - # If the check macro is followed by something other than a - # semicolon, assume users will log their own custom error messages - # and don't suggest any replacements. - if not Match(r'\s*;', last_line[end_pos:]): - return - - if linenum == end_line: - expression = lines[linenum][start_pos + 1:end_pos - 1] - else: - expression = lines[linenum][start_pos + 1:] - for i in xrange(linenum + 1, end_line): - expression += lines[i] - expression += last_line[0:end_pos - 1] - - # Parse expression so that we can take parentheses into account. - # This avoids false positives for inputs like "CHECK((a < 4) == b)", - # which is not replaceable by CHECK_LE. - lhs = '' - rhs = '' - operator = None - while expression: - matched = Match(r'^\s*(<<|<<=|>>|>>=|->\*|->|&&|\|\||' - r'==|!=|>=|>|<=|<|\()(.*)$', expression) - if matched: - token = matched.group(1) - if token == '(': - # Parenthesized operand - expression = matched.group(2) - (end, _) = FindEndOfExpressionInLine(expression, 0, ['(']) - if end < 0: - return # Unmatched parenthesis - lhs += '(' + expression[0:end] - expression = expression[end:] - elif token in ('&&', '||'): - # Logical and/or operators. This means the expression - # contains more than one term, for example: - # CHECK(42 < a && a < b); - # - # These are not replaceable with CHECK_LE, so bail out early. - return - elif token in ('<<', '<<=', '>>', '>>=', '->*', '->'): - # Non-relational operator - lhs += token - expression = matched.group(2) - else: - # Relational operator - operator = token - rhs = matched.group(2) - break - else: - # Unparenthesized operand. Instead of appending to lhs one character - # at a time, we do another regular expression match to consume several - # characters at once if possible. Trivial benchmark shows that this - # is more efficient when the operands are longer than a single - # character, which is generally the case. - matched = Match(r'^([^-=!<>()&|]+)(.*)$', expression) - if not matched: - matched = Match(r'^(\s*\S)(.*)$', expression) - if not matched: - break - lhs += matched.group(1) - expression = matched.group(2) - - # Only apply checks if we got all parts of the boolean expression - if not (lhs and operator and rhs): - return - - # Check that rhs do not contain logical operators. We already know - # that lhs is fine since the loop above parses out && and ||. - if rhs.find('&&') > -1 or rhs.find('||') > -1: - return - - # At least one of the operands must be a constant literal. This is - # to avoid suggesting replacements for unprintable things like - # CHECK(variable != iterator) - # - # The following pattern matches decimal, hex integers, strings, and - # characters (in that order). - lhs = lhs.strip() - rhs = rhs.strip() - match_constant = r'^([-+]?(\d+|0[xX][0-9a-fA-F]+)[lLuU]{0,3}|".*"|\'.*\')$' - if Match(match_constant, lhs) or Match(match_constant, rhs): - # Note: since we know both lhs and rhs, we can provide a more - # descriptive error message like: - # Consider using CHECK_EQ(x, 42) instead of CHECK(x == 42) - # Instead of: - # Consider using CHECK_EQ instead of CHECK(a == b) - # - # We are still keeping the less descriptive message because if lhs - # or rhs gets long, the error message might become unreadable. - error(filename, linenum, 'readability/check', 2, - 'Consider using %s instead of %s(a %s b)' % ( - _CHECK_REPLACEMENT[check_macro][operator], - check_macro, operator)) + files_belong_to_same_module = filename_cc.endswith(filename_h) + common_path = "" + if files_belong_to_same_module: + common_path = filename_cc[: -len(filename_h)] + return files_belong_to_same_module, common_path -def CheckAltTokens(filename, clean_lines, linenum, error): - """Check alternative keywords being used in boolean expressions. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Avoid preprocessor lines - if Match(r'^\s*#', line): - return - - # Last ditch effort to avoid multi-line comments. This will not help - # if the comment started before the current line or ended after the - # current line, but it catches most of the false positives. At least, - # it provides a way to workaround this warning for people who use - # multi-line comments in preprocessor macros. - # - # TODO(unknown): remove this once cpplint has better support for - # multi-line comments. - if line.find('/*') >= 0 or line.find('*/') >= 0: - return - - for match in _ALT_TOKEN_REPLACEMENT_PATTERN.finditer(line): - error(filename, linenum, 'readability/alt_tokens', 2, - 'Use operator %s instead of %s' % ( - _ALT_TOKEN_REPLACEMENT[match.group(1)], match.group(1))) - -def CheckNullTokens(filename, clean_lines, linenum, error): - """Check NULL usage. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Avoid preprocessor lines - if Match(r'^\s*#', line): - return - - if line.find('/*') >= 0 or line.find('*/') >= 0: - return - - for match in _NULL_TOKEN_PATTERN.finditer(line): - error(filename, linenum, 'readability/null_usage', 2, - 'Use nullptr instead of NULL') - -def CheckV8PersistentTokens(filename, clean_lines, linenum, error): - """Check v8::Persistent usage. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Avoid preprocessor lines - if Match(r'^\s*#', line): - return - - if line.find('/*') >= 0 or line.find('*/') >= 0: - return - - for match in _V8_PERSISTENT_PATTERN.finditer(line): - error(filename, linenum, 'runtime/v8_persistent', 2, - 'Use v8::Global instead of v8::Persistent') - -def CheckLeftLeaningPointer(filename, clean_lines, linenum, error): - """Check for left-leaning pointer placement. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Avoid preprocessor lines - if Match(r'^\s*#', line): - return - - if '/*' in line or '*/' in line: - return - - for match in _RIGHT_LEANING_POINTER_PATTERN.finditer(line): - error(filename, linenum, 'readability/pointer_notation', 2, - 'Use left leaning pointer instead of right leaning') +def CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error, io=codecs): + """Reports for missing stl includes. -def GetLineWidth(line): - """Determines the width of the line in column positions. - - Args: - line: A string, which may be a Unicode string. - - Returns: - The width of the line in column positions, accounting for Unicode - combining characters and wide characters. - """ - if isinstance(line, unicode): - width = 0 - for uc in unicodedata.normalize('NFC', line): - if unicodedata.east_asian_width(uc) in ('W', 'F'): - width += 2 - elif not unicodedata.combining(uc): - # Issue 337 - # https://mail.python.org/pipermail/python-list/2012-August/628809.html - if (sys.version_info.major, sys.version_info.minor) <= (3, 2): - # https://github.com/python/cpython/blob/2.7/Include/unicodeobject.h#L81 - is_wide_build = sysconfig.get_config_var("Py_UNICODE_SIZE") >= 4 - # https://github.com/python/cpython/blob/2.7/Objects/unicodeobject.c#L564 - is_low_surrogate = 0xDC00 <= ord(uc) <= 0xDFFF - if not is_wide_build and is_low_surrogate: - width -= 1 - - width += 1 - return width - else: - return len(line) + This function will output warnings to make sure you are including the headers + necessary for the stl containers and functions that you use. We only give one + reason to include a header. For example, if you use both equal_to<> and + less<> in a .h file, only one (the latter in the file) of these will be + reported as a reason to include the . + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + include_state: An _IncludeState instance. + error: The function to call with any errors found. + io: The IO factory to use to read the header file. Provided for unittest + injection. + """ + required = {} # A map of header name to linenumber and the template entity. + # Example of required: { '': (1219, 'less<>') } -def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, - error): - """Checks rules from the 'C++ style rules' section of cppguide.html. - - Most of these rules are hard to test (naming, comment style), but we - do what we can. In particular we check for 2-space indents, line lengths, - tab usage, spaces inside code, etc. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - file_extension: The extension (without the dot) of the filename. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - - # Don't use "elided" lines here, otherwise we can't check commented lines. - # Don't want to use "raw" either, because we don't want to check inside C++11 - # raw strings, - raw_lines = clean_lines.lines_without_raw_strings - line = raw_lines[linenum] - prev = raw_lines[linenum - 1] if linenum > 0 else '' - - if line.find('\t') != -1: - error(filename, linenum, 'whitespace/tab', 1, - 'Tab found; better to use spaces') - - # One or three blank spaces at the beginning of the line is weird; it's - # hard to reconcile that with 2-space indents. - # NOTE: here are the conditions rob pike used for his tests. Mine aren't - # as sophisticated, but it may be worth becoming so: RLENGTH==initial_spaces - # if(RLENGTH > 20) complain = 0; - # if(match($0, " +(error|private|public|protected):")) complain = 0; - # if(match(prev, "&& *$")) complain = 0; - # if(match(prev, "\\|\\| *$")) complain = 0; - # if(match(prev, "[\",=><] *$")) complain = 0; - # if(match($0, " <<")) complain = 0; - # if(match(prev, " +for \\(")) complain = 0; - # if(prevodd && match(prevprev, " +for \\(")) complain = 0; - scope_or_label_pattern = r'\s*(?:public|private|protected|signals)(?:\s+(?:slots\s*)?)?:\s*\\?$' - classinfo = nesting_state.InnermostClass() - initial_spaces = 0 - cleansed_line = clean_lines.elided[linenum] - while initial_spaces < len(line) and line[initial_spaces] == ' ': - initial_spaces += 1 - # There are certain situations we allow one space, notably for - # section labels, and also lines containing multi-line raw strings. - # We also don't check for lines that look like continuation lines - # (of lines ending in double quotes, commas, equals, or angle brackets) - # because the rules for how to indent those are non-trivial. - if (not Search(r'[",=><] *$', prev) and - (initial_spaces == 1 or initial_spaces == 3) and - not Match(scope_or_label_pattern, cleansed_line) and - not (clean_lines.raw_lines[linenum] != line and - Match(r'^\s*""', line))): - error(filename, linenum, 'whitespace/indent', 3, - 'Weird number of spaces at line-start. ' - 'Are you using a 2-space indent?') - - if line and line[-1].isspace(): - error(filename, linenum, 'whitespace/end_of_line', 4, - 'Line ends in whitespace. Consider deleting these extra spaces.') - - # Check if the line is a header guard. - is_header_guard = False - if IsHeaderExtension(file_extension): - cppvar = GetHeaderGuardCPPVariable(filename) - if (line.startswith('#ifndef %s' % cppvar) or - line.startswith('#define %s' % cppvar) or - line.startswith('#endif // %s' % cppvar)): - is_header_guard = True - # #include lines and header guards can be long, since there's no clean way to - # split them. - # - # URLs can be long too. It's possible to split these, but it makes them - # harder to cut&paste. - # - # The "$Id:...$" comment may also get very long without it being the - # developers fault. - # - # Doxygen documentation copying can get pretty long when using an overloaded - # function declaration - if (not line.startswith('#include') and not is_header_guard and - not Match(r'^\s*//.*http(s?)://\S*$', line) and - not Match(r'^\s*//\s*[^\s]*$', line) and - not Match(r'^// \$Id:.*#[0-9]+ \$$', line) and - not Match(r'^\s*/// [@\\](copydoc|copydetails|copybrief) .*$', line)): - line_width = GetLineWidth(line) - if line_width > _line_length: - error(filename, linenum, 'whitespace/line_length', 2, - 'Lines should be <= %i characters long' % _line_length) - - if (cleansed_line.count(';') > 1 and - # allow simple single line lambdas - not Match(r'^[^{};]*\[[^\[\]]*\][^{}]*\{[^{}\n\r]*\}', - line) and - # for loops are allowed two ;'s (and may run over two lines). - cleansed_line.find('for') == -1 and - (GetPreviousNonBlankLine(clean_lines, linenum)[0].find('for') == -1 or - GetPreviousNonBlankLine(clean_lines, linenum)[0].find(';') != -1) and - # It's ok to have many commands in a switch case that fits in 1 line - not ((cleansed_line.find('case ') != -1 or - cleansed_line.find('default:') != -1) and - cleansed_line.find('break;') != -1)): - error(filename, linenum, 'whitespace/newline', 0, - 'More than one command on the same line') - - # Some more style checks - CheckBraces(filename, clean_lines, linenum, error) - CheckTrailingSemicolon(filename, clean_lines, linenum, error) - CheckEmptyBlockBody(filename, clean_lines, linenum, error) - CheckSpacing(filename, clean_lines, linenum, nesting_state, error) - CheckOperatorSpacing(filename, clean_lines, linenum, error) - CheckParenthesisSpacing(filename, clean_lines, linenum, error) - CheckCommaSpacing(filename, clean_lines, linenum, error) - CheckBracesSpacing(filename, clean_lines, linenum, nesting_state, error) - CheckSpacingForFunctionCall(filename, clean_lines, linenum, error) - CheckCheck(filename, clean_lines, linenum, error) - CheckAltTokens(filename, clean_lines, linenum, error) - CheckNullTokens(filename, clean_lines, linenum, error) - CheckV8PersistentTokens(filename, clean_lines, linenum, error) - CheckLeftLeaningPointer(filename, clean_lines, linenum, error) - classinfo = nesting_state.InnermostClass() - if classinfo: - CheckSectionSpacing(filename, clean_lines, classinfo, linenum, error) + for linenum in range(clean_lines.NumLines()): + line = clean_lines.elided[linenum] + if not line or line[0] == "#": + continue + _re_patterns = [] + _re_patterns.extend(_re_pattern_types_or_objs) + _re_patterns.extend(_re_pattern_functions) + for pattern, item, header in _re_patterns: + matched = pattern.search(line) + if matched: + # Don't warn about strings in non-STL namespaces: + # (We check only the first match per line; good enough.) + prefix = line[: matched.start()] + if prefix.endswith("std::") or not prefix.endswith("::"): + required[header] = (linenum, item) + + for pattern, template, header in _re_pattern_headers_maybe_templates: + if pattern.search(line): + required[header] = (linenum, template) + + # The following function is just a speed up, no semantics are changed. + if "<" not in line: # Reduces the cpu time usage by skipping lines. + continue -_RE_PATTERN_INCLUDE = re.compile(r'^\s*#\s*include\s*([<"])([^>"]*)[>"].*$') -# Matches the first component of a filename delimited by -s and _s. That is: -# _RE_FIRST_COMPONENT.match('foo').group(0) == 'foo' -# _RE_FIRST_COMPONENT.match('foo.cc').group(0) == 'foo' -# _RE_FIRST_COMPONENT.match('foo-bar_baz.cc').group(0) == 'foo' -# _RE_FIRST_COMPONENT.match('foo_bar-baz.cc').group(0) == 'foo' -_RE_FIRST_COMPONENT = re.compile(r'^[^-_.]+') + for pattern, template, header in _re_pattern_templates: + matched = pattern.search(line) + if matched: + # Don't warn about IWYU in non-STL namespaces: + # (We check only the first match per line; good enough.) + prefix = line[: matched.start()] + if prefix.endswith("std::") or not prefix.endswith("::"): + required[header] = (linenum, template) + + # Let's flatten the include_state include_list and copy it into a dictionary. + include_dict = dict([item for sublist in include_state.include_list for item in sublist]) + + # All the lines have been processed, report the errors found. + for header in sorted(required, key=required.__getitem__): + template = required[header][1] + header_stripped = header.strip('<>"') + if header_stripped not in include_dict and not ( + header_stripped[0] == "c" and (header_stripped[1:] + ".h") in include_dict + ): + error( + filename, + required[header][0], + "build/include_what_you_use", + 4, + "Add #include " + header + " for " + template, + ) + + +_RE_PATTERN_EXPLICIT_MAKEPAIR = re.compile(r"\bmake_pair\s*<") -def _DropCommonSuffixes(filename): - """Drops common suffixes like _test.cc or -inl.h from filename. - - For example: - >>> _DropCommonSuffixes('foo/foo-inl.h') - 'foo/foo' - >>> _DropCommonSuffixes('foo/bar/foo.cc') - 'foo/bar/foo' - >>> _DropCommonSuffixes('foo/foo_internal.h') - 'foo/foo' - >>> _DropCommonSuffixes('foo/foo_unusualinternal.h') - 'foo/foo_unusualinternal' - - Args: - filename: The input filename. - - Returns: - The filename with the common suffix removed. - """ - for suffix in itertools.chain( - ('%s.%s' % (test_suffix.lstrip('_'), ext) - for test_suffix, ext in itertools.product(_test_suffixes, GetNonHeaderExtensions())), - ('%s.%s' % (suffix, ext) - for suffix, ext in itertools.product(['inl', 'imp', 'internal'], GetHeaderExtensions()))): - if (filename.endswith(suffix) and len(filename) > len(suffix) and - filename[-len(suffix) - 1] in ('-', '_')): - return filename[:-len(suffix) - 1] - return os.path.splitext(filename)[0] +def CheckMakePairUsesDeduction(filename, clean_lines, linenum, error): + """Check that make_pair's template arguments are deduced. + G++ 4.6 in C++11 mode fails badly if make_pair's template arguments are + specified explicitly, and such use isn't intended in any case. -def _ClassifyInclude(fileinfo, include, used_angle_brackets, include_order="default"): - """Figures out what kind of header 'include' is. - - Args: - fileinfo: The current file cpplint is running over. A FileInfo instance. - include: The path to a #included file. - used_angle_brackets: True if the #include used <> rather than "". - include_order: "default" or other value allowed in program arguments - - Returns: - One of the _XXX_HEADER constants. - - For example: - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'stdio.h', True) - _C_SYS_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'string', True) - _CPP_SYS_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/foo.h', True, "standardcfirst") - _OTHER_SYS_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/foo.h', False) - _LIKELY_MY_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo_unknown_extension.cc'), - ... 'bar/foo_other_ext.h', False) - _POSSIBLE_MY_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/bar.h', False) - _OTHER_HEADER - """ - # This is a list of all standard c++ header files, except - # those already checked for above. - is_cpp_header = include in _CPP_HEADERS - - # Mark include as C header if in list or in a known folder for standard-ish C headers. - is_std_c_header = (include_order == "default") or (include in _C_HEADERS - # additional linux glibc header folders - or Search(r'(?:%s)\/.*\.h' % "|".join(C_STANDARD_HEADER_FOLDERS), include)) - - # Headers with C++ extensions shouldn't be considered C system headers - include_ext = os.path.splitext(include)[1] - is_system = used_angle_brackets and not include_ext in ['.hh', '.hpp', '.hxx', '.h++'] - - if is_system: - if is_cpp_header: - return _CPP_SYS_HEADER - if is_std_c_header: - return _C_SYS_HEADER - else: - return _OTHER_SYS_HEADER - - # If the target file and the include we're checking share a - # basename when we drop common extensions, and the include - # lives in . , then it's likely to be owned by the target file. - target_dir, target_base = ( - os.path.split(_DropCommonSuffixes(fileinfo.RepositoryName()))) - include_dir, include_base = os.path.split(_DropCommonSuffixes(include)) - target_dir_pub = os.path.normpath(target_dir + '/../public') - target_dir_pub = target_dir_pub.replace('\\', '/') - if target_base == include_base and ( - include_dir == target_dir or - include_dir == target_dir_pub): - return _LIKELY_MY_HEADER - - # If the target and include share some initial basename - # component, it's possible the target is implementing the - # include, so it's allowed to be first, but we'll never - # complain if it's not there. - target_first_component = _RE_FIRST_COMPONENT.match(target_base) - include_first_component = _RE_FIRST_COMPONENT.match(include_base) - if (target_first_component and include_first_component and - target_first_component.group(0) == - include_first_component.group(0)): - return _POSSIBLE_MY_HEADER - - return _OTHER_HEADER + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + match = _RE_PATTERN_EXPLICIT_MAKEPAIR.search(line) + if match: + error( + filename, + linenum, + "build/explicit_make_pair", + 4, # 4 = high confidence + "For C++11-compatibility, omit template arguments from make_pair" + " OR use pair directly OR if appropriate, construct a pair directly", + ) +def CheckRedundantVirtual(filename, clean_lines, linenum, error): + """Check if line contains a redundant "virtual" function-specifier. -def CheckIncludeLine(filename, clean_lines, linenum, include_state, error): - """Check rules that are applicable to #include lines. - - Strings on #include lines are NOT removed from elided line, to make - certain tasks easier. However, to prevent false positives, checks - applicable to #include lines in CheckLanguage must be put here. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - include_state: An _IncludeState instance in which the headers are inserted. - error: The function to call with any errors found. - """ - fileinfo = FileInfo(filename) - line = clean_lines.lines[linenum] - - # "include" should use the new style "foo/bar.h" instead of just "bar.h" - # Only do this check if the included header follows google naming - # conventions. If not, assume that it's a 3rd party API that - # requires special include conventions. - # - # We also make an exception for Lua headers, which follow google - # naming convention but not the include convention. - match = Match(r'#include\s*"([^/]+\.(.*))"', line) - if match: - if (IsHeaderExtension(match.group(2)) and - not _THIRD_PARTY_HEADERS_PATTERN.match(match.group(1))): - error(filename, linenum, 'build/include_subdir', 4, - 'Include the directory when naming header files') - - # we shouldn't include a file more than once. actually, there are a - # handful of instances where doing so is okay, but in general it's - # not. - match = _RE_PATTERN_INCLUDE.search(line) - if match: - include = match.group(2) - used_angle_brackets = match.group(1) == '<' - duplicate_line = include_state.FindHeader(include) - if duplicate_line >= 0: - error(filename, linenum, 'build/include', 4, - '"%s" already included at %s:%s' % - (include, filename, duplicate_line)) - return - - for extension in GetNonHeaderExtensions(): - if (include.endswith('.' + extension) and - os.path.dirname(fileinfo.RepositoryName()) != os.path.dirname(include)): - error(filename, linenum, 'build/include', 4, - 'Do not include .' + extension + ' files from other packages') + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + # Look for "virtual" on current line. + line = clean_lines.elided[linenum] + virtual = re.match(r"^(.*)(\bvirtual\b)(.*)$", line) + if not virtual: return - # We DO want to include a 3rd party looking header if it matches the - # filename. Otherwise we get an erroneous error "...should include its - # header" error later. - third_src_header = False - for ext in GetHeaderExtensions(): - basefilename = filename[0:len(filename) - len(fileinfo.Extension())] - headerfile = basefilename + '.' + ext - headername = FileInfo(headerfile).RepositoryName() - if headername in include or include in headername: - third_src_header = True - break - - if third_src_header or not _THIRD_PARTY_HEADERS_PATTERN.match(include): - include_state.include_list[-1].append((include, linenum)) - - # We want to ensure that headers appear in the right order: - # 1) for foo.cc, foo.h - # 2) other project headers - # 3) c system files - # 4) cpp system files - # - # We classify each include statement as one of those 5 types - # using a number of techniques. The include_state object keeps - # track of the highest type seen, and complains if we see a - # lower type after that. - error_message = include_state.CheckNextIncludeOrder( - _ClassifyInclude(fileinfo, include, used_angle_brackets, _include_order)) - if error_message: - error(filename, linenum, 'build/include_order', 4, - '%s. Should be: %s.h, c system, c++ system, other.' % - (error_message, fileinfo.BaseName())) - canonical_include = include_state.CanonicalizeAlphabeticalOrder(include) - if not include_state.IsInAlphabeticalOrder( - clean_lines, linenum, canonical_include): - error(filename, linenum, 'build/include_alpha', 4, - 'Include "%s" not in alphabetical order' % include) - include_state.SetLastHeader(canonical_include) - + # Ignore "virtual" keywords that are near access-specifiers. These + # are only used in class base-specifier and do not apply to member + # functions. + if re.search(r"\b(public|protected|private)\s+$", virtual.group(1)) or re.match( + r"^\s+(public|protected|private)\b", virtual.group(3) + ): + return + # Ignore the "virtual" keyword from virtual base classes. Usually + # there is a column on the same line in these cases (virtual base + # classes are rare in google3 because multiple inheritance is rare). + if re.match(r"^.*[^:]:[^:].*$", line): + return -def _GetTextInside(text, start_pattern): - r"""Retrieves all the text between matching open and close parentheses. - - Given a string of lines and a regular expression string, retrieve all the text - following the expression and between opening punctuation symbols like - (, [, or {, and the matching close-punctuation symbol. This properly nested - occurrences of the punctuations, so for the text like - printf(a(), b(c())); - a call to _GetTextInside(text, r'printf\(') will return 'a(), b(c())'. - start_pattern must match string having an open punctuation symbol at the end. - - Args: - text: The lines to extract text. Its comments and strings must be elided. - It can be single line and can span multiple lines. - start_pattern: The regexp string indicating where to start extracting - the text. - Returns: - The extracted text. - None if either the opening string or ending punctuation could not be found. - """ - # TODO(unknown): Audit cpplint.py to see what places could be profitably - # rewritten to use _GetTextInside (and use inferior regexp matching today). - - # Give opening punctuations to get the matching close-punctuations. - matching_punctuation = {'(': ')', '{': '}', '[': ']'} - closing_punctuation = set(itervalues(matching_punctuation)) - - # Find the position to start extracting text. - match = re.search(start_pattern, text, re.M) - if not match: # start_pattern not found in text. - return None - start_position = match.end(0) - - assert start_position > 0, ( - 'start_pattern must ends with an opening punctuation.') - assert text[start_position - 1] in matching_punctuation, ( - 'start_pattern must ends with an opening punctuation.') - # Stack of closing punctuations we expect to have in text after position. - punctuation_stack = [matching_punctuation[text[start_position - 1]]] - position = start_position - while punctuation_stack and position < len(text): - if text[position] == punctuation_stack[-1]: - punctuation_stack.pop() - elif text[position] in closing_punctuation: - # A closing punctuation without matching opening punctuations. - return None - elif text[position] in matching_punctuation: - punctuation_stack.append(matching_punctuation[text[position]]) - position += 1 - if punctuation_stack: - # Opening punctuations left without matching close-punctuations. - return None - # punctuations match. - return text[start_position:position - 1] + # Look for the next opening parenthesis. This is the start of the + # parameter list (possibly on the next line shortly after virtual). + # TODO(google): doesn't work if there are virtual functions with + # decltype() or other things that use parentheses, but csearch suggests + # that this is rare. + end_col = -1 + end_line = -1 + start_col = len(virtual.group(2)) + for start_line in range(linenum, min(linenum + 3, clean_lines.NumLines())): + line = clean_lines.elided[start_line][start_col:] + parameter_list = re.match(r"^([^(]*)\(", line) + if parameter_list: + # Match parentheses to find the end of the parameter list + (_, end_line, end_col) = CloseExpression( + clean_lines, start_line, start_col + len(parameter_list.group(1)) + ) + break + start_col = 0 + if end_col < 0: + return # Couldn't find end of parameter list, give up -# Patterns for matching call-by-reference parameters. -# -# Supports nested templates up to 2 levels deep using this messy pattern: -# < (?: < (?: < [^<>]* -# > -# | [^<>] )* -# > -# | [^<>] )* -# > -_RE_PATTERN_IDENT = r'[_a-zA-Z]\w*' # =~ [[:alpha:]][[:alnum:]]* -_RE_PATTERN_TYPE = ( - r'(?:const\s+)?(?:typename\s+|class\s+|struct\s+|union\s+|enum\s+)?' - r'(?:\w|' - r'\s*<(?:<(?:<[^<>]*>|[^<>])*>|[^<>])*>|' - r'::)+') -# A call-by-reference parameter ends with '& identifier'. -_RE_PATTERN_REF_PARAM = re.compile( - r'(' + _RE_PATTERN_TYPE + r'(?:\s*(?:\bconst\b|[*]))*\s*' - r'&\s*' + _RE_PATTERN_IDENT + r')\s*(?:=[^,()]+)?[,)]') -# A call-by-const-reference parameter either ends with 'const& identifier' -# or looks like 'const type& identifier' when 'type' is atomic. -_RE_PATTERN_CONST_REF_PARAM = ( - r'(?:.*\s*\bconst\s*&\s*' + _RE_PATTERN_IDENT + - r'|const\s+' + _RE_PATTERN_TYPE + r'\s*&\s*' + _RE_PATTERN_IDENT + r')') -# Stream types. -_RE_PATTERN_REF_STREAM_PARAM = ( - r'(?:.*stream\s*&\s*' + _RE_PATTERN_IDENT + r')') - - -def CheckLanguage(filename, clean_lines, linenum, file_extension, - include_state, nesting_state, error): - """Checks rules from the 'C++ language rules' section of cppguide.html. - - Some of these rules are hard to test (function overloading, using - uint32 inappropriately), but we do the best we can. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - file_extension: The extension (without the dot) of the filename. - include_state: An _IncludeState instance in which the headers are inserted. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - # If the line is empty or consists of entirely a comment, no need to - # check it. - line = clean_lines.elided[linenum] - if not line: - return - - match = _RE_PATTERN_INCLUDE.search(line) - if match: - CheckIncludeLine(filename, clean_lines, linenum, include_state, error) - return - - # Reset include state across preprocessor directives. This is meant - # to silence warnings for conditional includes. - match = Match(r'^\s*#\s*(if|ifdef|ifndef|elif|else|endif)\b', line) - if match: - include_state.ResetSection(match.group(1)) - - - # Perform other checks now that we are sure that this is not an include line - CheckCasts(filename, clean_lines, linenum, error) - CheckGlobalStatic(filename, clean_lines, linenum, error) - CheckPrintf(filename, clean_lines, linenum, error) - - if IsHeaderExtension(file_extension): - # TODO(unknown): check that 1-arg constructors are explicit. - # How to tell it's a constructor? - # (handled in CheckForNonStandardConstructs for now) - # TODO(unknown): check that classes declare or disable copy/assign - # (level 1 error) - pass + # Look for "override" or "final" after the parameter list + # (possibly on the next few lines). + for i in range(end_line, min(end_line + 3, clean_lines.NumLines())): + line = clean_lines.elided[i][end_col:] + match = re.search(r"\b(override|final)\b", line) + if match: + error( + filename, + linenum, + "readability/inheritance", + 4, + ( + '"virtual" is redundant since function is ' + f'already declared as "{match.group(1)}"' + ), + ) + + # Set end_col to check whole lines after we are done with the + # first line. + end_col = 0 + if re.search(r"[^\w]\s*$", line): + break - # Check if people are using the verboten C basic types. The only exception - # we regularly allow is "unsigned short port" for port. - if Search(r'\bshort port\b', line): - if not Search(r'\bunsigned short port\b', line): - error(filename, linenum, 'runtime/int', 4, - 'Use "unsigned short" for ports, not "short"') - else: - match = Search(r'\b(short|long(?! +double)|long long)\b', line) - if match: - error(filename, linenum, 'runtime/int', 4, - 'Use int16/int64/etc, rather than the C type %s' % match.group(1)) - - # Check if some verboten operator overloading is going on - # TODO(unknown): catch out-of-line unary operator&: - # class X {}; - # int operator&(const X& x) { return 42; } // unary operator& - # The trick is it's hard to tell apart from binary operator&: - # class Y { int operator&(const Y& x) { return 23; } }; // binary operator& - if Search(r'\boperator\s*&\s*\(\s*\)', line): - error(filename, linenum, 'runtime/operator', 4, - 'Unary operator& is dangerous. Do not use it.') - - # Check for suspicious usage of "if" like - # } if (a == b) { - if Search(r'\}\s*if\s*\(', line): - error(filename, linenum, 'readability/braces', 4, - 'Did you mean "else if"? If not, start a new line for "if".') - - # Check for potential format string bugs like printf(foo). - # We constrain the pattern not to pick things like DocidForPrintf(foo). - # Not perfect but it can catch printf(foo.c_str()) and printf(foo->c_str()) - # TODO(unknown): Catch the following case. Need to change the calling - # convention of the whole function to process multiple line to handle it. - # printf( - # boy_this_is_a_really_long_variable_that_cannot_fit_on_the_prev_line); - printf_args = _GetTextInside(line, r'(?i)\b(string)?printf\s*\(') - if printf_args: - match = Match(r'([\w.\->()]+)$', printf_args) - if match and match.group(1) != '__VA_ARGS__': - function_name = re.search(r'\b((?:string)?printf)\s*\(', - line, re.I).group(1) - error(filename, linenum, 'runtime/printf', 4, - 'Potential format string bug. Do %s("%%s", %s) instead.' - % (function_name, match.group(1))) - - # Check for potential memset bugs like memset(buf, sizeof(buf), 0). - match = Search(r'memset\s*\(([^,]*),\s*([^,]*),\s*0\s*\)', line) - if match and not Match(r"^''|-?[0-9]+|0x[0-9A-Fa-f]$", match.group(2)): - error(filename, linenum, 'runtime/memset', 4, - 'Did you mean "memset(%s, 0, %s)"?' - % (match.group(1), match.group(2))) - - if Search(r'\busing namespace\b', line): - if Search(r'\bliterals\b', line): - error(filename, linenum, 'build/namespaces_literals', 5, - 'Do not use namespace using-directives. ' - 'Use using-declarations instead.') - else: - error(filename, linenum, 'build/namespaces', 5, - 'Do not use namespace using-directives. ' - 'Use using-declarations instead.') - - # Detect variable-length arrays. - match = Match(r'\s*(.+::)?(\w+) [a-z]\w*\[(.+)];', line) - if (match and match.group(2) != 'return' and match.group(2) != 'delete' and - match.group(3).find(']') == -1): - # Split the size using space and arithmetic operators as delimiters. - # If any of the resulting tokens are not compile time constants then - # report the error. - tokens = re.split(r'\s|\+|\-|\*|\/|<<|>>]', match.group(3)) - is_const = True - skip_next = False - for tok in tokens: - if skip_next: - skip_next = False - continue - - if Search(r'sizeof\(.+\)', tok): continue - if Search(r'arraysize\(\w+\)', tok): continue - - tok = tok.lstrip('(') - tok = tok.rstrip(')') - if not tok: continue - if Match(r'\d+', tok): continue - if Match(r'0[xX][0-9a-fA-F]+', tok): continue - if Match(r'k[A-Z0-9]\w*', tok): continue - if Match(r'(.+::)?k[A-Z0-9]\w*', tok): continue - if Match(r'(.+::)?[A-Z][A-Z0-9_]*', tok): continue - # A catch all for tricky sizeof cases, including 'sizeof expression', - # 'sizeof(*type)', 'sizeof(const type)', 'sizeof(struct StructName)' - # requires skipping the next token because we split on ' ' and '*'. - if tok.startswith('sizeof'): - skip_next = True - continue - is_const = False - break - if not is_const: - error(filename, linenum, 'runtime/arrays', 1, - 'Do not use variable-length arrays. Use an appropriately named ' - "('k' followed by CamelCase) compile-time constant for the size.") - - # Check for use of unnamed namespaces in header files. Registration - # macros are typically OK, so we allow use of "namespace {" on lines - # that end with backslashes. - if (IsHeaderExtension(file_extension) - and Search(r'\bnamespace\s*{', line) - and line[-1] != '\\'): - error(filename, linenum, 'build/namespaces_headers', 4, - 'Do not use unnamed namespaces in header files. See ' - 'https://google.github.io/styleguide/cppguide.html#Namespaces' - ' for more information.') +def CheckRedundantOverrideOrFinal(filename, clean_lines, linenum, error): + """Check if line contains a redundant "override" or "final" virt-specifier. -def CheckGlobalStatic(filename, clean_lines, linenum, error): - """Check for unsafe global or static objects. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Match two lines at a time to support multiline declarations - if linenum + 1 < clean_lines.NumLines() and not Search(r'[;({]', line): - line += clean_lines.elided[linenum + 1].strip() - - # Check for people declaring static/global STL strings at the top level. - # This is dangerous because the C++ language does not guarantee that - # globals with constructors are initialized before the first access, and - # also because globals can be destroyed when some threads are still running. - # TODO(unknown): Generalize this to also find static unique_ptr instances. - # TODO(unknown): File bugs for clang-tidy to find these. - match = Match( - r'((?:|static +)(?:|const +))(?::*std::)?string( +const)? +' - r'([a-zA-Z0-9_:]+)\b(.*)', - line) - - # Remove false positives: - # - String pointers (as opposed to values). - # string *pointer - # const string *pointer - # string const *pointer - # string *const pointer - # - # - Functions and template specializations. - # string Function(... - # string Class::Method(... - # - # - Operators. These are matched separately because operator names - # cross non-word boundaries, and trying to match both operators - # and functions at the same time would decrease accuracy of - # matching identifiers. - # string Class::operator*() - if (match and - not Search(r'\bstring\b(\s+const)?\s*[\*\&]\s*(const\s+)?\w', line) and - not Search(r'\boperator\W', line) and - not Match(r'\s*(<.*>)?(::[a-zA-Z0-9_]+)*\s*\(([^"]|$)', match.group(4))): - if Search(r'\bconst\b', line): - error(filename, linenum, 'runtime/string', 4, - 'For a static/global string constant, use a C style string ' - 'instead: "%schar%s %s[]".' % - (match.group(1), match.group(2) or '', match.group(3))) + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + # Look for closing parenthesis nearby. We need one to confirm where + # the declarator ends and where the virt-specifier starts to avoid + # false positives. + line = clean_lines.elided[linenum] + if (declarator_end := line.rfind(")")) >= 0: + fragment = line[declarator_end:] else: - error(filename, linenum, 'runtime/string', 4, - 'Static/global string variables are not permitted.') - - if (Search(r'\b([A-Za-z0-9_]*_)\(\1\)', line) or - Search(r'\b([A-Za-z0-9_]*_)\(CHECK_NOTNULL\(\1\)\)', line)): - error(filename, linenum, 'runtime/init', 4, - 'You seem to be initializing a member variable with itself.') + if linenum > 1 and clean_lines.elided[linenum - 1].rfind(")") >= 0: + fragment = line + else: + return + # Check that at most one of "override" or "final" is present, not both + if re.search(r"\boverride\b", fragment) and re.search(r"\bfinal\b", fragment): + error( + filename, + linenum, + "readability/inheritance", + 4, + ('"override" is redundant since function is already declared as "final"'), + ) -def CheckPrintf(filename, clean_lines, linenum, error): - """Check for printf related issues. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # When snprintf is used, the second argument shouldn't be a literal. - match = Search(r'snprintf\s*\(([^,]*),\s*([0-9]*)\s*,', line) - if match and match.group(2) != '0': - # If 2nd arg is zero, snprintf is used to calculate size. - error(filename, linenum, 'runtime/printf', 3, - 'If you can, use sizeof(%s) instead of %s as the 2nd arg ' - 'to snprintf.' % (match.group(1), match.group(2))) - - # Check if some verboten C functions are being used. - if Search(r'\bsprintf\s*\(', line): - error(filename, linenum, 'runtime/printf', 5, - 'Never use sprintf. Use snprintf instead.') - match = Search(r'\b(strcpy|strcat)\s*\(', line) - if match: - error(filename, linenum, 'runtime/printf', 4, - 'Almost always, snprintf is better than %s' % match.group(1)) +# Returns true if we are at a new block, and it is directly +# inside of a namespace. +def IsBlockInNameSpace(nesting_state: NestingState, is_forward_declaration: bool): # noqa: FBT001 + """Checks that the new block is directly in a namespace. -def IsDerivedFunction(clean_lines, linenum): - """Check if current line contains an inherited function. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - Returns: - True if current line contains a function with "override" - virt-specifier. - """ - # Scan back a few lines for start of current function - for i in xrange(linenum, max(-1, linenum - 10), -1): - match = Match(r'^([^()]*\w+)\(', clean_lines.elided[i]) - if match: - # Look for "override" after the matching closing parenthesis - line, _, closing_paren = CloseExpression( - clean_lines, i, len(match.group(1))) - return (closing_paren >= 0 and - Search(r'\boverride\b', line[closing_paren:])) - return False + Args: + nesting_state: The NestingState object that contains info about our state. + is_forward_declaration: If the class is a forward declared class. + Returns: + Whether or not the new block is directly in a namespace. + """ + if is_forward_declaration: + return len(nesting_state.stack) >= 1 and ( + isinstance(nesting_state.stack[-1], _NamespaceInfo) + ) + + if len(nesting_state.stack) >= 1: + if isinstance(nesting_state.stack[-1], _NamespaceInfo): + return True + if ( + len(nesting_state.stack) > 1 + and isinstance(nesting_state.previous_stack_top, _NamespaceInfo) + and ( + isinstance(nesting_state.stack[-2], _NamespaceInfo) + or len(nesting_state.stack) > 2 # Accommodate for WrappedInfo + and issubclass(type(nesting_state.stack[-1]), _WrappedInfo) + and not nesting_state.stack[-2].seen_open_brace + and isinstance(nesting_state.stack[-3], _NamespaceInfo) + ) + ): + return True + return False -def IsOutOfLineMethodDefinition(clean_lines, linenum): - """Check if current line contains an out-of-line method definition. +def ShouldCheckNamespaceIndentation( + nesting_state: NestingState, is_namespace_indent_item, raw_lines_no_comments, linenum +): + """This method determines if we should apply our namespace indentation check. - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - Returns: - True if current line contains an out-of-line method definition. - """ - # Scan back a few lines for start of current function - for i in xrange(linenum, max(-1, linenum - 10), -1): - if Match(r'^([^()]*\w+)\(', clean_lines.elided[i]): - return Match(r'^[^()]*\w+::\w+\(', clean_lines.elided[i]) is not None - return False + Args: + nesting_state: The current nesting state. + is_namespace_indent_item: If we just put a new class on the stack, True. + If the top of the stack is not a class, or we did not recently + add the class, False. + raw_lines_no_comments: The lines without the comments. + linenum: The current line number we are processing. + Returns: + True if we should apply our namespace indentation check. Currently, it + only works for classes and namespaces inside of a namespace. + """ -def IsInitializerList(clean_lines, linenum): - """Check if current line is inside constructor initializer list. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - Returns: - True if current line appears to be inside constructor initializer - list, False otherwise. - """ - for i in xrange(linenum, 1, -1): - line = clean_lines.elided[i] - if i == linenum: - remove_function_body = Match(r'^(.*)\{\s*$', line) - if remove_function_body: - line = remove_function_body.group(1) - - if Search(r'\s:\s*\w+[({]', line): - # A lone colon tend to indicate the start of a constructor - # initializer list. It could also be a ternary operator, which - # also tend to appear in constructor initializer lists as - # opposed to parameter lists. - return True - if Search(r'\}\s*,\s*$', line): - # A closing brace followed by a comma is probably the end of a - # brace-initialized member in constructor initializer list. - return True - if Search(r'[{};]\s*$', line): - # Found one of the following: - # - A closing brace or semicolon, probably the end of the previous - # function. - # - An opening brace, probably the start of current class or namespace. - # - # Current line is probably not inside an initializer list since - # we saw one of those things without seeing the starting colon. - return False - - # Got to the beginning of the file without seeing the start of - # constructor initializer list. - return False - - -def CheckForNonConstReference(filename, clean_lines, linenum, - nesting_state, error): - """Check for non-const references. - - Separate from CheckLanguage since it scans backwards from current - line, instead of scanning forward. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - # Do nothing if there is no '&' on current line. - line = clean_lines.elided[linenum] - if '&' not in line: - return - - # If a function is inherited, current function doesn't have much of - # a choice, so any non-const references should not be blamed on - # derived function. - if IsDerivedFunction(clean_lines, linenum): - return - - # Don't warn on out-of-line method definitions, as we would warn on the - # in-line declaration, if it isn't marked with 'override'. - if IsOutOfLineMethodDefinition(clean_lines, linenum): - return - - # Long type names may be broken across multiple lines, usually in one - # of these forms: - # LongType - # ::LongTypeContinued &identifier - # LongType:: - # LongTypeContinued &identifier - # LongType< - # ...>::LongTypeContinued &identifier - # - # If we detected a type split across two lines, join the previous - # line to current line so that we can match const references - # accordingly. - # - # Note that this only scans back one line, since scanning back - # arbitrary number of lines would be expensive. If you have a type - # that spans more than 2 lines, please use a typedef. - if linenum > 1: - previous = None - if Match(r'\s*::(?:[\w<>]|::)+\s*&\s*\S', line): - # previous_line\n + ::current_line - previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+[\w<>])\s*$', - clean_lines.elided[linenum - 1]) - elif Match(r'\s*[a-zA-Z_]([\w<>]|::)+\s*&\s*\S', line): - # previous_line::\n + current_line - previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+::)\s*$', - clean_lines.elided[linenum - 1]) - if previous: - line = previous.group(1) + line.lstrip() - else: - # Check for templated parameter that is split across multiple lines - endpos = line.rfind('>') - if endpos > -1: - (_, startline, startpos) = ReverseCloseExpression( - clean_lines, linenum, endpos) - if startpos > -1 and startline < linenum: - # Found the matching < on an earlier line, collect all - # pieces up to current line. - line = '' - for i in xrange(startline, linenum + 1): - line += clean_lines.elided[i].strip() - - # Check for non-const references in function parameters. A single '&' may - # found in the following places: - # inside expression: binary & for bitwise AND - # inside expression: unary & for taking the address of something - # inside declarators: reference parameter - # We will exclude the first two cases by checking that we are not inside a - # function body, including one that was just introduced by a trailing '{'. - # TODO(unknown): Doesn't account for 'catch(Exception& e)' [rare]. - if (nesting_state.previous_stack_top and - not (isinstance(nesting_state.previous_stack_top, _ClassInfo) or - isinstance(nesting_state.previous_stack_top, _NamespaceInfo))): - # Not at toplevel, not within a class, and not within a namespace - return - - # Avoid initializer lists. We only need to scan back from the - # current line for something that starts with ':'. - # - # We don't need to check the current line, since the '&' would - # appear inside the second set of parentheses on the current line as - # opposed to the first set. - if linenum > 0: - for i in xrange(linenum - 1, max(0, linenum - 10), -1): - previous_line = clean_lines.elided[i] - if not Search(r'[),]\s*$', previous_line): - break - if Match(r'^\s*:\s+\S', previous_line): - return + # Required by all checks involving nesting_state + if not nesting_state.stack: + return False - # Avoid preprocessors - if Search(r'\\\s*$', line): - return - - # Avoid constructor initializer lists - if IsInitializerList(clean_lines, linenum): - return - - # We allow non-const references in a few standard places, like functions - # called "swap()" or iostream operators like "<<" or ">>". Do not check - # those function parameters. - # - # We also accept & in static_assert, which looks like a function but - # it's actually a declaration expression. - allowed_functions = (r'(?:[sS]wap(?:<\w:+>)?|' - r'operator\s*[<>][<>]|' - r'static_assert|COMPILE_ASSERT' - r')\s*\(') - if Search(allowed_functions, line): - return - elif not Search(r'\S+\([^)]*$', line): - # Don't see an allowed function on this line. Actually we - # didn't see any function name on this line, so this is likely a - # multi-line parameter list. Try a bit harder to catch this case. - for i in xrange(2): - if (linenum > i and - Search(allowed_functions, clean_lines.elided[linenum - i - 1])): - return + is_forward_declaration = IsForwardClassDeclaration(raw_lines_no_comments, linenum) - decls = ReplaceAll(r'{[^}]*}', ' ', line) # exclude function body - for parameter in re.findall(_RE_PATTERN_REF_PARAM, decls): - if (not Match(_RE_PATTERN_CONST_REF_PARAM, parameter) and - not Match(_RE_PATTERN_REF_STREAM_PARAM, parameter)): - error(filename, linenum, 'runtime/references', 2, - 'Is this a non-const reference? ' - 'If so, make const or use a pointer: ' + - ReplaceAll(' *<', '<', parameter)) + if not (is_namespace_indent_item or is_forward_declaration): + return False + # If we are in a macro, we do not want to check the namespace indentation. + if IsMacroDefinition(raw_lines_no_comments, linenum): + return False -def CheckCasts(filename, clean_lines, linenum, error): - """Various cast related checks. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Check to see if they're using an conversion function cast. - # I just try to capture the most common basic types, though there are more. - # Parameterless conversion functions, such as bool(), are allowed as they are - # probably a member operator declaration or default constructor. - match = Search( - r'(\bnew\s+(?:const\s+)?|\S<\s*(?:const\s+)?)?\b' - r'(int|float|double|bool|char|int32|uint32|int64|uint64)' - r'(\([^)].*)', line) - expecting_function = ExpectingFunctionArgs(clean_lines, linenum) - if match and not expecting_function: - matched_type = match.group(2) - - # matched_new_or_template is used to silence two false positives: - # - New operators - # - Template arguments with function types - # - # For template arguments, we match on types immediately following - # an opening bracket without any spaces. This is a fast way to - # silence the common case where the function type is the first - # template argument. False negative with less-than comparison is - # avoided because those operators are usually followed by a space. - # - # function // bracket + no space = false positive - # value < double(42) // bracket + space = true positive - matched_new_or_template = match.group(1) - - # Avoid arrays by looking for brackets that come after the closing - # parenthesis. - if Match(r'\([^()]+\)\s*\[', match.group(3)): - return - - # Other things to ignore: - # - Function pointers - # - Casts to pointer types - # - Placement new - # - Alias declarations - matched_funcptr = match.group(3) - if (matched_new_or_template is None and - not (matched_funcptr and - (Match(r'\((?:[^() ]+::\s*\*\s*)?[^() ]+\)\s*\(', - matched_funcptr) or - matched_funcptr.startswith('(*)'))) and - not Match(r'\s*using\s+\S+\s*=\s*' + matched_type, line) and - not Search(r'new\(\S+\)\s*' + matched_type, line)): - error(filename, linenum, 'readability/casting', 4, - 'Using deprecated casting style. ' - 'Use static_cast<%s>(...) instead' % - matched_type) - - if not expecting_function: - CheckCStyleCast(filename, clean_lines, linenum, 'static_cast', - r'\((int|float|double|bool|char|u?int(16|32|64)|size_t)\)', error) - - # This doesn't catch all cases. Consider (const char * const)"hello". - # - # (char *) "foo" should always be a const_cast (reinterpret_cast won't - # compile). - if CheckCStyleCast(filename, clean_lines, linenum, 'const_cast', - r'\((char\s?\*+\s?)\)\s*"', error): - pass - else: - # Check pointer casts for other than string constants - CheckCStyleCast(filename, clean_lines, linenum, 'reinterpret_cast', - r'\((\w+\s?\*+\s?)\)', error) - - # In addition, we look for people taking the address of a cast. This - # is dangerous -- casts can assign to temporaries, so the pointer doesn't - # point where you think. - # - # Some non-identifier character is required before the '&' for the - # expression to be recognized as a cast. These are casts: - # expression = &static_cast(temporary()); - # function(&(int*)(temporary())); - # - # This is not a cast: - # reference_type&(int* function_param); - match = Search( - r'(?:[^\w]&\(([^)*][^)]*)\)[\w(])|' - r'(?:[^\w]&(static|dynamic|down|reinterpret)_cast\b)', line) - if match: - # Try a better error message when the & is bound to something - # dereferenced by the casted pointer, as opposed to the casted - # pointer itself. - parenthesis_error = False - match = Match(r'^(.*&(?:static|dynamic|down|reinterpret)_cast\b)<', line) - if match: - _, y1, x1 = CloseExpression(clean_lines, linenum, len(match.group(1))) - if x1 >= 0 and clean_lines.elided[y1][x1] == '(': - _, y2, x2 = CloseExpression(clean_lines, y1, x1) - if x2 >= 0: - extended_line = clean_lines.elided[y2][x2:] - if y2 < clean_lines.NumLines() - 1: - extended_line += clean_lines.elided[y2 + 1] - if Match(r'\s*(?:->|\[)', extended_line): - parenthesis_error = True - - if parenthesis_error: - error(filename, linenum, 'readability/casting', 4, - ('Are you taking an address of something dereferenced ' - 'from a cast? Wrapping the dereferenced expression in ' - 'parentheses will make the binding more obvious')) - else: - error(filename, linenum, 'runtime/casting', 4, - ('Are you taking an address of a cast? ' - 'This is dangerous: could be a temp var. ' - 'Take the address before doing the cast, rather than after')) + # Skip if we are inside an open parenthesis block (e.g. function parameters). + if nesting_state.previous_stack_top and nesting_state.previous_open_parentheses > 0: + return False + # Skip if we are extra-indenting a member initializer list. + if ( + isinstance(nesting_state.previous_stack_top, _ConstructorInfo) # F/N (A::A() : _a(0) {/{}) + and ( + isinstance(nesting_state.stack[-1], _MemInitListInfo) + or isinstance(nesting_state.popped_top, _MemInitListInfo) + ) + ) or ( # popping constructor after MemInitList on the same line (: _a(a) {}) + isinstance(nesting_state.previous_stack_top, _ConstructorInfo) + and isinstance(nesting_state.popped_top, _ConstructorInfo) + and re.search(r"[^:]:[^:]", raw_lines_no_comments[linenum]) + ): + return False -def CheckCStyleCast(filename, clean_lines, linenum, cast_type, pattern, error): - """Checks for a C-style cast by looking for the pattern. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - cast_type: The string for the C++ cast to recommend. This is either - reinterpret_cast, static_cast, or const_cast, depending. - pattern: The regular expression used to find C-style casts. - error: The function to call with any errors found. - - Returns: - True if an error was emitted. - False otherwise. - """ - line = clean_lines.elided[linenum] - match = Search(pattern, line) - if not match: - return False + return IsBlockInNameSpace(nesting_state, is_forward_declaration) - # Exclude lines with keywords that tend to look like casts - context = line[0:match.start(1) - 1] - if Match(r'.*\b(?:sizeof|alignof|alignas|[_A-Z][_A-Z0-9]*)\s*$', context): - return False - # Try expanding current context to see if we one level of - # parentheses inside a macro. - if linenum > 0: - for i in xrange(linenum - 1, max(0, linenum - 5), -1): - context = clean_lines.elided[i] + context - if Match(r'.*\b[_A-Z][_A-Z0-9]*\s*\((?:\([^()]*\)|[^()])*$', context): - return False +# Call this method if the line is directly inside of a namespace. +# If the line above is blank (excluding comments) or the start of +# an inner namespace, it cannot be indented. +def CheckItemIndentationInNamespace(filename, raw_lines_no_comments, linenum, error): + line = raw_lines_no_comments[linenum] + if re.match(r"^\s+", line): + error( + filename, linenum, "whitespace/indent_namespace", 4, "Do not indent within a namespace." + ) + + +def ProcessLine( + filename, + file_extension, + clean_lines, + line, + include_state, + function_state, + nesting_state, + error, + extra_check_functions=None, + cppvar=None, +): + """Processes a single line in the file. - # operator++(int) and operator--(int) - if (context.endswith(' operator++') or context.endswith(' operator--') or - context.endswith('::operator++') or context.endswith('::operator--')): - return False + Args: + filename: Filename of the file that is being processed. + file_extension: The extension (dot not included) of the file. + clean_lines: An array of strings, each representing a line of the file, + with comments stripped. + line: Number of line being processed. + include_state: An _IncludeState instance in which the headers are inserted. + function_state: A _FunctionState instance which counts function lines, etc. + nesting_state: A NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: A callable to which errors are reported, which takes 4 arguments: + filename, line number, error level, and message + extra_check_functions: An array of additional check functions that will be + run on each source line. Each function takes 4 + arguments: filename, clean_lines, line, error + cppvar: The header guard variable returned by GetHeaderGuardCPPVar. + """ + raw_lines = clean_lines.raw_lines + ParseNolintSuppressions(filename, raw_lines[line], line, error) + nesting_state.Update(filename, clean_lines, line, error) + CheckForNamespaceIndentation(filename, nesting_state, clean_lines, line, error) + if nesting_state.InAsmBlock(): + return + CheckForFunctionLengths(filename, clean_lines, line, function_state, error) + CheckForMultilineCommentsAndStrings(filename, clean_lines, line, error) + CheckStyle(filename, clean_lines, line, file_extension, nesting_state, error, cppvar) + CheckLanguage(filename, clean_lines, line, file_extension, include_state, nesting_state, error) + CheckForNonConstReference(filename, clean_lines, line, nesting_state, error) + CheckForNonStandardConstructs(filename, clean_lines, line, nesting_state, error) + CheckVlogArguments(filename, clean_lines, line, error) + CheckPosixThreading(filename, clean_lines, line, error) + CheckInvalidIncrement(filename, clean_lines, line, error) + CheckMakePairUsesDeduction(filename, clean_lines, line, error) + CheckRedundantVirtual(filename, clean_lines, line, error) + CheckRedundantOverrideOrFinal(filename, clean_lines, line, error) + if extra_check_functions: + for check_fn in extra_check_functions: + check_fn(filename, clean_lines, line, error) + + +def FlagCxxHeaders(filename, clean_lines, linenum, error): + """Flag C++ headers that the styleguide restricts. - # A single unnamed argument for a function tends to look like old style cast. - # If we see those, don't issue warnings for deprecated casts. - remainder = line[match.end(0):] - if Match(r'^\s*(?:;|const\b|throw\b|final\b|override\b|[=>{),]|->)', - remainder): - return False + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] - # At this point, all that should be left is actual casts. - error(filename, linenum, 'readability/casting', 4, - 'Using C-style cast. Use %s<%s>(...) instead' % - (cast_type, match.group(1))) + include = re.match(r'\s*#\s*include\s+[<"]([^<"]+)[">]', line) - return True + # Flag unapproved C++11 headers. + if include and include.group(1) in ( + "cfenv", + "fenv.h", + "ratio", + ): + error( + filename, + linenum, + "build/c++11", + 5, + f"<{include.group(1)}> is an unapproved C++11 header.", + ) + # filesystem is the only unapproved C++17 header + if include and include.group(1) == "filesystem": + error(filename, linenum, "build/c++17", 5, " is an unapproved C++17 header.") -def ExpectingFunctionArgs(clean_lines, linenum): - """Checks whether where function type arguments are expected. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - - Returns: - True if the line at 'linenum' is inside something that expects arguments - of function types. - """ - line = clean_lines.elided[linenum] - return (Match(r'^\s*MOCK_(CONST_)?METHOD\d+(_T)?\(', line) or - (linenum >= 2 and - (Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\((?:\S+,)?\s*$', - clean_lines.elided[linenum - 1]) or - Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\(\s*$', - clean_lines.elided[linenum - 2]) or - Search(r'\bstd::m?function\s*\<\s*$', - clean_lines.elided[linenum - 1])))) - - -_HEADERS_CONTAINING_TEMPLATES = ( - ('', ('deque',)), - ('', ('unary_function', 'binary_function', - 'plus', 'minus', 'multiplies', 'divides', 'modulus', - 'negate', - 'equal_to', 'not_equal_to', 'greater', 'less', - 'greater_equal', 'less_equal', - 'logical_and', 'logical_or', 'logical_not', - 'unary_negate', 'not1', 'binary_negate', 'not2', - 'bind1st', 'bind2nd', - 'pointer_to_unary_function', - 'pointer_to_binary_function', - 'ptr_fun', - 'mem_fun_t', 'mem_fun', 'mem_fun1_t', 'mem_fun1_ref_t', - 'mem_fun_ref_t', - 'const_mem_fun_t', 'const_mem_fun1_t', - 'const_mem_fun_ref_t', 'const_mem_fun1_ref_t', - 'mem_fun_ref', - )), - ('', ('numeric_limits',)), - ('', ('list',)), - ('', ('multimap',)), - ('', ('allocator', 'make_shared', 'make_unique', 'shared_ptr', - 'unique_ptr', 'weak_ptr')), - ('', ('queue', 'priority_queue',)), - ('', ('multiset',)), - ('', ('stack',)), - ('', ('char_traits', 'basic_string',)), - ('', ('tuple',)), - ('', ('unordered_map', 'unordered_multimap')), - ('', ('unordered_set', 'unordered_multiset')), - ('', ('pair',)), - ('', ('vector',)), - # gcc extensions. - # Note: std::hash is their hash, ::hash is our hash - ('', ('hash_map', 'hash_multimap',)), - ('', ('hash_set', 'hash_multiset',)), - ('', ('slist',)), - ) +def ProcessFileData(filename, file_extension, lines, error, extra_check_functions=None): + """Performs lint checks and reports any errors to the given error function. -_HEADERS_MAYBE_TEMPLATES = ( - ('', ('copy', 'max', 'min', 'min_element', 'sort', - 'transform', - )), - ('', ('forward', 'make_pair', 'move', 'swap')), + Args: + filename: Filename of the file that is being processed. + file_extension: The extension (dot not included) of the file. + lines: An array of strings, each representing a line of the file, with the + last element being empty if the file is terminated with a newline. + error: A callable to which errors are reported, which takes 4 arguments: + filename, line number, error level, and message + extra_check_functions: An array of additional check functions that will be + run on each source line. Each function takes 4 + arguments: filename, clean_lines, line, error + """ + lines = ( + ["// marker so line numbers and indices both start at 1"] + + lines + + ["// marker so line numbers end in a known way"] ) -_RE_PATTERN_STRING = re.compile(r'\bstring\b') - -_re_pattern_headers_maybe_templates = [] -for _header, _templates in _HEADERS_MAYBE_TEMPLATES: - for _template in _templates: - # Match max(..., ...), max(..., ...), but not foo->max, foo.max or - # 'type::max()'. - _re_pattern_headers_maybe_templates.append( - (re.compile(r'[^>.]\b' + _template + r'(<.*?>)?\([^\)]'), - _template, - _header)) -# Match set, but not foo->set, foo.set -_re_pattern_headers_maybe_templates.append( - (re.compile(r'[^>.]\bset\s*\<'), - 'set<>', - '')) -# Match 'map var' and 'std::map(...)', but not 'map(...)'' -_re_pattern_headers_maybe_templates.append( - (re.compile(r'(std\b::\bmap\s*\<)|(^(std\b::\b)map\b\(\s*\<)'), - 'map<>', - '')) - -# Other scripts may reach in and modify this pattern. -_re_pattern_templates = [] -for _header, _templates in _HEADERS_CONTAINING_TEMPLATES: - for _template in _templates: - _re_pattern_templates.append( - (re.compile(r'(\<|\b)' + _template + r'\s*\<'), - _template + '<>', - _header)) - + include_state = _IncludeState() + function_state = _FunctionState() + nesting_state = NestingState() + + ResetNolintSuppressions() + + CheckForCopyright(filename, lines, error) + ProcessGlobalSuppressions(filename, lines) + RemoveMultiLineComments(filename, lines, error) + clean_lines = CleansedLines(lines) + + cppvar = None + if IsHeaderExtension(file_extension): + cppvar = GetHeaderGuardCPPVariable(filename) + CheckForHeaderGuard(filename, clean_lines, error, cppvar) + + for line in range(clean_lines.NumLines()): + ProcessLine( + filename, + file_extension, + clean_lines, + line, + include_state, + function_state, + nesting_state, + error, + extra_check_functions, + cppvar, + ) + FlagCxxHeaders(filename, clean_lines, line, error) + if _error_suppressions.HasOpenBlock(): + error( + filename, + _error_suppressions.GetOpenBlockStart(), + "readability/nolint", + 5, + "NONLINT block never ended", + ) + + CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error) + + # Check that the .cc file has included its header if it exists. + if _IsSourceExtension(file_extension): + CheckHeaderFileIncluded(filename, include_state, error) + + # We check here rather than inside ProcessLine so that we see raw + # lines rather than "cleaned" lines. + CheckForBadCharacters(filename, lines, error) + + CheckForNewlineAtEOF(filename, lines, error) -def FilesBelongToSameModule(filename_cc, filename_h): - """Check if these two filenames belong to the same module. - - The concept of a 'module' here is a as follows: - foo.h, foo-inl.h, foo.cc, foo_test.cc and foo_unittest.cc belong to the - same 'module' if they are in the same directory. - some/path/public/xyzzy and some/path/internal/xyzzy are also considered - to belong to the same module here. - - If the filename_cc contains a longer path than the filename_h, for example, - '/absolute/path/to/base/sysinfo.cc', and this file would include - 'base/sysinfo.h', this function also produces the prefix needed to open the - header. This is used by the caller of this function to more robustly open the - header file. We don't have access to the real include paths in this context, - so we need this guesswork here. - - Known bugs: tools/base/bar.cc and base/bar.h belong to the same module - according to this implementation. Because of this, this function gives - some false positives. This should be sufficiently rare in practice. - - Args: - filename_cc: is the path for the source (e.g. .cc) file - filename_h: is the path for the header path - - Returns: - Tuple with a bool and a string: - bool: True if filename_cc and filename_h belong to the same module. - string: the additional prefix needed to open the header file. - """ - fileinfo_cc = FileInfo(filename_cc) - if not fileinfo_cc.Extension().lstrip('.') in GetNonHeaderExtensions(): - return (False, '') - - fileinfo_h = FileInfo(filename_h) - if not IsHeaderExtension(fileinfo_h.Extension().lstrip('.')): - return (False, '') - - filename_cc = filename_cc[:-(len(fileinfo_cc.Extension()))] - matched_test_suffix = Search(_TEST_FILE_SUFFIX, fileinfo_cc.BaseName()) - if matched_test_suffix: - filename_cc = filename_cc[:-len(matched_test_suffix.group(1))] - - filename_cc = filename_cc.replace('/public/', '/') - filename_cc = filename_cc.replace('/internal/', '/') - - filename_h = filename_h[:-(len(fileinfo_h.Extension()))] - if filename_h.endswith('-inl'): - filename_h = filename_h[:-len('-inl')] - filename_h = filename_h.replace('/public/', '/') - filename_h = filename_h.replace('/internal/', '/') - - files_belong_to_same_module = filename_cc.endswith(filename_h) - common_path = '' - if files_belong_to_same_module: - common_path = filename_cc[:-len(filename_h)] - return files_belong_to_same_module, common_path - - -def UpdateIncludeState(filename, include_dict, io=codecs): - """Fill up the include_dict with new includes found from the file. - - Args: - filename: the name of the header to read. - include_dict: a dictionary in which the headers are inserted. - io: The io factory to use to read the file. Provided for testability. - - Returns: - True if a header was successfully added. False otherwise. - """ - headerfile = None - try: - with io.open(filename, 'r', 'utf8', 'replace') as headerfile: - linenum = 0 - for line in headerfile: - linenum += 1 - clean_line = CleanseComments(line) - match = _RE_PATTERN_INCLUDE.search(clean_line) - if match: - include = match.group(2) - include_dict.setdefault(include, linenum) - return True - except IOError: - return False +def ProcessConfigOverrides(filename): + """Loads the configuration files and processes the config overrides. + Args: + filename: The name of the file being processed by the linter. + Returns: + False if the current |filename| should not be processed further. + """ -def CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error, - io=codecs): - """Reports for missing stl includes. + abs_filename = os.path.abspath(filename) + cfg_filters = [] + keep_looking = True + while keep_looking: + abs_path, base_name = os.path.split(abs_filename) + if not base_name: + break # Reached the root directory. + + cfg_file = os.path.join(abs_path, _config_filename) + abs_filename = abs_path + if not os.path.isfile(cfg_file): + continue - This function will output warnings to make sure you are including the headers - necessary for the stl containers and functions that you use. We only give one - reason to include a header. For example, if you use both equal_to<> and - less<> in a .h file, only one (the latter in the file) of these will be - reported as a reason to include the . + try: + with open(cfg_file, encoding="utf8", errors="replace") as file_handle: + for line in file_handle: + line, _, _ = line.partition("#") # Remove comments. + if not line.strip(): + continue + + name, _, val = line.partition("=") + name = name.strip() + val = val.strip() + if name == "set noparent": + keep_looking = False + elif name == "filter": + cfg_filters.append(val) + elif name == "exclude_files": + # When matching exclude_files pattern, use the base_name of + # the current file name or the directory name we are processing. + # For example, if we are checking for lint errors in /foo/bar/baz.cc + # and we found the .cfg file at /foo/CPPLINT.cfg, then the config + # file's "exclude_files" filter is meant to be checked against "bar" + # and not "baz" nor "bar/baz.cc". + if base_name: + pattern = re.compile(val) + if pattern.match(base_name): + if _cpplint_state.quiet: + # Suppress "Ignoring file" warning when using --quiet. + return False + _cpplint_state.PrintInfo( + f'Ignoring "{filename}": file excluded by "{cfg_file}". ' + 'File path component "%s" matches ' + 'pattern "%s"\n' % (base_name, val) + ) + return False + elif name == "linelength": + global _line_length + try: + _line_length = int(val) + except ValueError: + _cpplint_state.PrintError("Line length must be numeric.") + elif name == "extensions": + ProcessExtensionsOption(val) + elif name == "root": + global _root + # root directories are specified relative to CPPLINT.cfg dir. + _root = os.path.join(os.path.dirname(cfg_file), val) + elif name == "headers": + ProcessHppHeadersOption(val) + elif name == "third_party_headers": + ProcessThirdPartyHeadersOption(val) + elif name == "includeorder": + ProcessIncludeOrderOption(val) + else: + _cpplint_state.PrintError( + f"Invalid configuration option ({name}) in file {cfg_file}\n" + ) + + except OSError: + _cpplint_state.PrintError( + f"Skipping config file '{cfg_file}': Can't open for reading\n" + ) + keep_looking = False - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - include_state: An _IncludeState instance. - error: The function to call with any errors found. - io: The IO factory to use to read the header file. Provided for unittest - injection. - """ - required = {} # A map of header name to linenumber and the template entity. - # Example of required: { '': (1219, 'less<>') } + # Apply all the accumulated filters in reverse order (top-level directory + # config options having the least priority). + for cfg_filter in reversed(cfg_filters): + _AddFilters(cfg_filter) - for linenum in xrange(clean_lines.NumLines()): - line = clean_lines.elided[linenum] - if not line or line[0] == '#': - continue + return True - # String is special -- it is a non-templatized type in STL. - matched = _RE_PATTERN_STRING.search(line) - if matched: - # Don't warn about strings in non-STL namespaces: - # (We check only the first match per line; good enough.) - prefix = line[:matched.start()] - if prefix.endswith('std::') or not prefix.endswith('::'): - required[''] = (linenum, 'string') - - for pattern, template, header in _re_pattern_headers_maybe_templates: - if pattern.search(line): - required[header] = (linenum, template) - - # The following function is just a speed up, no semantics are changed. - if not '<' in line: # Reduces the cpu time usage by skipping lines. - continue - - for pattern, template, header in _re_pattern_templates: - matched = pattern.search(line) - if matched: - # Don't warn about IWYU in non-STL namespaces: - # (We check only the first match per line; good enough.) - prefix = line[:matched.start()] - if prefix.endswith('std::') or not prefix.endswith('::'): - required[header] = (linenum, template) - - # The policy is that if you #include something in foo.h you don't need to - # include it again in foo.cc. Here, we will look at possible includes. - # Let's flatten the include_state include_list and copy it into a dictionary. - include_dict = dict([item for sublist in include_state.include_list - for item in sublist]) - - # Did we find the header for this file (if any) and successfully load it? - header_found = False - - # Use the absolute path so that matching works properly. - abs_filename = FileInfo(filename).FullName() - - # For Emacs's flymake. - # If cpplint is invoked from Emacs's flymake, a temporary file is generated - # by flymake and that file name might end with '_flymake.cc'. In that case, - # restore original file name here so that the corresponding header file can be - # found. - # e.g. If the file name is 'foo_flymake.cc', we should search for 'foo.h' - # instead of 'foo_flymake.h' - abs_filename = re.sub(r'_flymake\.cc$', '.cc', abs_filename) - - # include_dict is modified during iteration, so we iterate over a copy of - # the keys. - header_keys = list(include_dict.keys()) - for header in header_keys: - (same_module, common_path) = FilesBelongToSameModule(abs_filename, header) - fullpath = common_path + header - if same_module and UpdateIncludeState(fullpath, include_dict, io): - header_found = True - - # If we can't find the header file for a .cc, assume it's because we don't - # know where to look. In that case we'll give up as we're not sure they - # didn't include it in the .h file. - # TODO(unknown): Do a better job of finding .h files so we are confident that - # not having the .h file means there isn't one. - if not header_found: - for extension in GetNonHeaderExtensions(): - if filename.endswith('.' + extension): - return - # All the lines have been processed, report the errors found. - for required_header_unstripped in sorted(required, key=required.__getitem__): - template = required[required_header_unstripped][1] - if required_header_unstripped.strip('<>"') not in include_dict: - error(filename, required[required_header_unstripped][0], - 'build/include_what_you_use', 4, - 'Add #include ' + required_header_unstripped + ' for ' + template) +def ProcessFile(filename, vlevel, extra_check_functions=None): + """Does google-lint on a single file. + Args: + filename: The name of the file to parse. -_RE_PATTERN_EXPLICIT_MAKEPAIR = re.compile(r'\bmake_pair\s*<') + vlevel: The level of errors to report. Every error of confidence + >= verbose_level will be reported. 0 is a good default. + extra_check_functions: An array of additional check functions that will be + run on each source line. Each function takes 4 + arguments: filename, clean_lines, line, error + """ -def CheckMakePairUsesDeduction(filename, clean_lines, linenum, error): - """Check that make_pair's template arguments are deduced. - - G++ 4.6 in C++11 mode fails badly if make_pair's template arguments are - specified explicitly, and such use isn't intended in any case. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - match = _RE_PATTERN_EXPLICIT_MAKEPAIR.search(line) - if match: - error(filename, linenum, 'build/explicit_make_pair', - 4, # 4 = high confidence - 'For C++11-compatibility, omit template arguments from make_pair' - ' OR use pair directly OR if appropriate, construct a pair directly') + _SetVerboseLevel(vlevel) + _BackupFilters() + old_errors = _cpplint_state.error_count + if not ProcessConfigOverrides(filename): + _RestoreFilters() + return -def CheckRedundantVirtual(filename, clean_lines, linenum, error): - """Check if line contains a redundant "virtual" function-specifier. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - # Look for "virtual" on current line. - line = clean_lines.elided[linenum] - virtual = Match(r'^(.*)(\bvirtual\b)(.*)$', line) - if not virtual: return - - # Ignore "virtual" keywords that are near access-specifiers. These - # are only used in class base-specifier and do not apply to member - # functions. - if (Search(r'\b(public|protected|private)\s+$', virtual.group(1)) or - Match(r'^\s+(public|protected|private)\b', virtual.group(3))): - return - - # Ignore the "virtual" keyword from virtual base classes. Usually - # there is a column on the same line in these cases (virtual base - # classes are rare in google3 because multiple inheritance is rare). - if Match(r'^.*[^:]:[^:].*$', line): return - - # Look for the next opening parenthesis. This is the start of the - # parameter list (possibly on the next line shortly after virtual). - # TODO(unknown): doesn't work if there are virtual functions with - # decltype() or other things that use parentheses, but csearch suggests - # that this is rare. - end_col = -1 - end_line = -1 - start_col = len(virtual.group(2)) - for start_line in xrange(linenum, min(linenum + 3, clean_lines.NumLines())): - line = clean_lines.elided[start_line][start_col:] - parameter_list = Match(r'^([^(]*)\(', line) - if parameter_list: - # Match parentheses to find the end of the parameter list - (_, end_line, end_col) = CloseExpression( - clean_lines, start_line, start_col + len(parameter_list.group(1))) - break - start_col = 0 - - if end_col < 0: - return # Couldn't find end of parameter list, give up - - # Look for "override" or "final" after the parameter list - # (possibly on the next few lines). - for i in xrange(end_line, min(end_line + 3, clean_lines.NumLines())): - line = clean_lines.elided[i][end_col:] - match = Search(r'\b(override|final)\b', line) - if match: - error(filename, linenum, 'readability/inheritance', 4, - ('"virtual" is redundant since function is ' - 'already declared as "%s"' % match.group(1))) + try: + # Support the UNIX convention of using "-" for stdin. + if filename == "-": + lines = sys.stdin.read().split("\n") + else: + with open(filename, encoding="utf8", errors="replace", newline=None) as target_file: + lines = target_file.read().split("\n") - # Set end_col to check whole lines after we are done with the - # first line. - end_col = 0 - if Search(r'[^\w]\s*$', line): - break + except OSError: + # TODO(aaronliu0130): Maybe make this have an exit code of 2 after all is done + _cpplint_state.PrintError(f"Skipping input '{filename}': Can't open for reading\n") + _RestoreFilters() + return + # Note, if no dot is found, this will give the entire filename as the ext. + file_extension = filename[filename.rfind(".") + 1 :] -def CheckRedundantOverrideOrFinal(filename, clean_lines, linenum, error): - """Check if line contains a redundant "override" or "final" virt-specifier. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - # Look for closing parenthesis nearby. We need one to confirm where - # the declarator ends and where the virt-specifier starts to avoid - # false positives. - line = clean_lines.elided[linenum] - declarator_end = line.rfind(')') - if declarator_end >= 0: - fragment = line[declarator_end:] - else: - if linenum > 1 and clean_lines.elided[linenum - 1].rfind(')') >= 0: - fragment = line + # When reading from stdin, the extension is unknown, so no cpplint tests + # should rely on the extension. + if filename != "-" and file_extension not in GetAllExtensions(): + _cpplint_state.PrintError( + f"Ignoring {filename}; not a valid file name ({(', '.join(GetAllExtensions()))})\n" + ) else: - return + ProcessFileData(filename, file_extension, lines, Error, extra_check_functions) - # Check that at most one of "override" or "final" is present, not both - if Search(r'\boverride\b', fragment) and Search(r'\bfinal\b', fragment): - error(filename, linenum, 'readability/inheritance', 4, - ('"override" is redundant since function is ' - 'already declared as "final"')) + # Suppress printing anything if --quiet was passed unless the error + # count has increased after processing this file. + if not _cpplint_state.quiet or old_errors != _cpplint_state.error_count: + _cpplint_state.PrintInfo(f"Done processing {filename}\n") + _RestoreFilters() +def PrintUsage(message): + """Prints a brief usage string and exits, optionally with an error message. + Args: + message: The optional error message. + """ + sys.stderr.write( + _USAGE + % ( + sorted(GetAllExtensions()), + ",".join(sorted(GetAllExtensions())), + sorted(GetHeaderExtensions()), + ",".join(sorted(GetHeaderExtensions())), + ) + ) -# Returns true if we are at a new block, and it is directly -# inside of a namespace. -def IsBlockInNameSpace(nesting_state, is_forward_declaration): - """Checks that the new block is directly in a namespace. - - Args: - nesting_state: The _NestingState object that contains info about our state. - is_forward_declaration: If the class is a forward declared class. - Returns: - Whether or not the new block is directly in a namespace. - """ - if is_forward_declaration: - return len(nesting_state.stack) >= 1 and ( - isinstance(nesting_state.stack[-1], _NamespaceInfo)) - - - return (len(nesting_state.stack) > 1 and - nesting_state.stack[-1].check_namespace_indentation and - isinstance(nesting_state.stack[-2], _NamespaceInfo)) - - -def ShouldCheckNamespaceIndentation(nesting_state, is_namespace_indent_item, - raw_lines_no_comments, linenum): - """This method determines if we should apply our namespace indentation check. - - Args: - nesting_state: The current nesting state. - is_namespace_indent_item: If we just put a new class on the stack, True. - If the top of the stack is not a class, or we did not recently - add the class, False. - raw_lines_no_comments: The lines without the comments. - linenum: The current line number we are processing. - - Returns: - True if we should apply our namespace indentation check. Currently, it - only works for classes and namespaces inside of a namespace. - """ - - is_forward_declaration = IsForwardClassDeclaration(raw_lines_no_comments, - linenum) - - if not (is_namespace_indent_item or is_forward_declaration): - return False + if message: + sys.exit("\nFATAL ERROR: " + message) + else: + sys.exit(0) - # If we are in a macro, we do not want to check the namespace indentation. - if IsMacroDefinition(raw_lines_no_comments, linenum): - return False - return IsBlockInNameSpace(nesting_state, is_forward_declaration) +def PrintVersion(): + sys.stdout.write("Cpplint fork (https://github.com/cpplint/cpplint)\n") + sys.stdout.write("cpplint " + __VERSION__ + "\n") + sys.stdout.write("Python " + sys.version + "\n") + sys.exit(0) -# Call this method if the line is directly inside of a namespace. -# If the line above is blank (excluding comments) or the start of -# an inner namespace, it cannot be indented. -def CheckItemIndentationInNamespace(filename, raw_lines_no_comments, linenum, - error): - line = raw_lines_no_comments[linenum] - if Match(r'^\s+', line): - error(filename, linenum, 'runtime/indentation_namespace', 4, - 'Do not indent within a namespace') - -def CheckLocalVectorUsage(filename, lines, error): - """Logs an error if std::vector> is used. - Args: - filename: The name of the current file. - lines: An array of strings, each representing a line of the file. - error: The function to call with any errors found. - """ - for linenum, line in enumerate(lines): - if (Search(r'\bstd::vector]+>>', line) or - Search(r'\bstd::vector]+>>', line)): - error(filename, linenum, 'runtime/local_vector', 5, - 'Do not use std::vector>. ' - 'Use v8::LocalVector instead.') - -def ProcessLine(filename, file_extension, clean_lines, line, - include_state, function_state, nesting_state, error, - extra_check_functions=None): - """Processes a single line in the file. - - Args: - filename: Filename of the file that is being processed. - file_extension: The extension (dot not included) of the file. - clean_lines: An array of strings, each representing a line of the file, - with comments stripped. - line: Number of line being processed. - include_state: An _IncludeState instance in which the headers are inserted. - function_state: A _FunctionState instance which counts function lines, etc. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: A callable to which errors are reported, which takes 4 arguments: - filename, line number, error level, and message - extra_check_functions: An array of additional check functions that will be - run on each source line. Each function takes 4 - arguments: filename, clean_lines, line, error - """ - raw_lines = clean_lines.raw_lines - ParseNolintSuppressions(filename, raw_lines[line], line, error) - nesting_state.Update(filename, clean_lines, line, error) - CheckForNamespaceIndentation(filename, nesting_state, clean_lines, line, - error) - if nesting_state.InAsmBlock(): return - CheckForFunctionLengths(filename, clean_lines, line, function_state, error) - CheckForMultilineCommentsAndStrings(filename, clean_lines, line, error) - CheckStyle(filename, clean_lines, line, file_extension, nesting_state, error) - CheckLanguage(filename, clean_lines, line, file_extension, include_state, - nesting_state, error) - CheckForNonConstReference(filename, clean_lines, line, nesting_state, error) - CheckForNonStandardConstructs(filename, clean_lines, line, - nesting_state, error) - CheckVlogArguments(filename, clean_lines, line, error) - CheckPosixThreading(filename, clean_lines, line, error) - CheckInvalidIncrement(filename, clean_lines, line, error) - CheckMakePairUsesDeduction(filename, clean_lines, line, error) - CheckRedundantVirtual(filename, clean_lines, line, error) - CheckRedundantOverrideOrFinal(filename, clean_lines, line, error) - if extra_check_functions: - for check_fn in extra_check_functions: - check_fn(filename, clean_lines, line, error) - -def FlagCxx11Features(filename, clean_lines, linenum, error): - """Flag those c++11 features that we only allow in certain places. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - include = Match(r'\s*#\s*include\s+[<"]([^<"]+)[">]', line) - - # Flag unapproved C++ TR1 headers. - if include and include.group(1).startswith('tr1/'): - error(filename, linenum, 'build/c++tr1', 5, - ('C++ TR1 headers such as <%s> are unapproved.') % include.group(1)) - - # Flag unapproved C++11 headers. - if include and include.group(1) in ('cfenv', - 'condition_variable', - 'fenv.h', - 'future', - 'mutex', - 'thread', - 'chrono', - 'ratio', - 'regex', - 'system_error', - ): - error(filename, linenum, 'build/c++11', 5, - ('<%s> is an unapproved C++11 header.') % include.group(1)) - - # The only place where we need to worry about C++11 keywords and library - # features in preprocessor directives is in macro definitions. - if Match(r'\s*#', line) and not Match(r'\s*#\s*define\b', line): return - - # These are classes and free functions. The classes are always - # mentioned as std::*, but we only catch the free functions if - # they're not found by ADL. They're alphabetical by header. - for top_name in ( - # type_traits - 'alignment_of', - 'aligned_union', - ): - if Search(r'\bstd::%s\b' % top_name, line): - error(filename, linenum, 'build/c++11', 5, - ('std::%s is an unapproved C++11 class or function. Send c-style ' - 'an example of where it would make your code more readable, and ' - 'they may let you use it.') % top_name) - - -def FlagCxx14Features(filename, clean_lines, linenum, error): - """Flag those C++14 features that we restrict. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - include = Match(r'\s*#\s*include\s+[<"]([^<"]+)[">]', line) - - # Flag unapproved C++14 headers. - if include and include.group(1) in ('scoped_allocator', 'shared_mutex'): - error(filename, linenum, 'build/c++14', 5, - ('<%s> is an unapproved C++14 header.') % include.group(1)) - - -def ProcessFileData(filename, file_extension, lines, error, - extra_check_functions=None): - """Performs lint checks and reports any errors to the given error function. - - Args: - filename: Filename of the file that is being processed. - file_extension: The extension (dot not included) of the file. - lines: An array of strings, each representing a line of the file, with the - last element being empty if the file is terminated with a newline. - error: A callable to which errors are reported, which takes 4 arguments: - filename, line number, error level, and message - extra_check_functions: An array of additional check functions that will be - run on each source line. Each function takes 4 - arguments: filename, clean_lines, line, error - """ - lines = (['// marker so line numbers and indices both start at 1'] + lines + - ['// marker so line numbers end in a known way']) - - include_state = _IncludeState() - function_state = _FunctionState() - nesting_state = NestingState() - - ResetNolintSuppressions() - - CheckForCopyright(filename, lines, error) - ProcessGlobalSuppresions(lines) - RemoveMultiLineComments(filename, lines, error) - clean_lines = CleansedLines(lines) - - if IsHeaderExtension(file_extension): - CheckForHeaderGuard(filename, clean_lines, error) - - for line in xrange(clean_lines.NumLines()): - ProcessLine(filename, file_extension, clean_lines, line, - include_state, function_state, nesting_state, error, - extra_check_functions) - FlagCxx11Features(filename, clean_lines, line, error) - nesting_state.CheckCompletedBlocks(filename, error) - - CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error) - - # Check that the .cc file has included its header if it exists. - if _IsSourceExtension(file_extension): - CheckHeaderFileIncluded(filename, include_state, error) - - # We check here rather than inside ProcessLine so that we see raw - # lines rather than "cleaned" lines. - CheckForBadCharacters(filename, lines, error) - - CheckForNewlineAtEOF(filename, lines, error) - - CheckInlineHeader(filename, include_state, error) - - CheckLocalVectorUsage(filename, lines, error) +def PrintCategories(): + """Prints a list of all the error-categories used by error messages. -def ProcessConfigOverrides(filename): - """ Loads the configuration files and processes the config overrides. + These are the categories used to filter messages via --filter. + """ + sys.stderr.write("".join(f" {cat}\n" for cat in _ERROR_CATEGORIES)) + sys.exit(0) - Args: - filename: The name of the file being processed by the linter. - Returns: - False if the current |filename| should not be processed further. - """ +def ParseArguments(args): + """Parses the command line arguments. - abs_filename = os.path.abspath(filename) - cfg_filters = [] - keep_looking = True - while keep_looking: - abs_path, base_name = os.path.split(abs_filename) - if not base_name: - break # Reached the root directory. + This may set the output format and verbosity level as side-effects. - cfg_file = os.path.join(abs_path, ".cpplint") - abs_filename = abs_path - if not os.path.isfile(cfg_file): - continue + Args: + args: The command line arguments: + Returns: + The list of filenames to lint. + """ try: - with codecs.open(cfg_file, 'r', 'utf8', 'replace') as file_handle: - for line in file_handle: - line, _, _ = line.partition('#') # Remove comments. - if not line.strip(): - continue - - name, _, val = line.partition('=') - name = name.strip() - val = val.strip() - if name == 'set noparent': - keep_looking = False - elif name == 'filter': - cfg_filters.append(val) - elif name == 'exclude_files': - # When matching exclude_files pattern, use the base_name of - # the current file name or the directory name we are processing. - # For example, if we are checking for lint errors in /foo/bar/baz.cc - # and we found the .cfg file at /foo/CPPLINT.cfg, then the config - # file's "exclude_files" filter is meant to be checked against "bar" - # and not "baz" nor "bar/baz.cc". - if base_name: - pattern = re.compile(val) - if pattern.match(base_name): - if _cpplint_state.quiet: - # Suppress "Ignoring file" warning when using --quiet. - return False - _cpplint_state.PrintInfo('Ignoring "%s": file excluded by "%s". ' - 'File path component "%s" matches ' - 'pattern "%s"\n' % - (filename, cfg_file, base_name, val)) - return False - elif name == 'linelength': + (opts, filenames) = getopt.getopt( + args, + "", + [ + "help", + "output=", + "verbose=", + "v=", + "version", + "counting=", + "filter=", + "root=", + "repository=", + "linelength=", + "extensions=", + "exclude=", + "recursive", + "headers=", + "third_party_headers=", + "includeorder=", + "config=", + "quiet", + ], + ) + except getopt.GetoptError: + PrintUsage("Invalid arguments.") + + verbosity = _VerboseLevel() + output_format = _OutputFormat() + filters = "" + quiet = _Quiet() + counting_style = "" + recursive = False + + for opt, val in opts: + if opt == "--help": + PrintUsage(None) + if opt == "--version": + PrintVersion() + elif opt == "--output": + if val not in ("emacs", "vs7", "eclipse", "junit", "sed", "gsed"): + PrintUsage( + "The only allowed output formats are emacs, vs7, eclipse sed, gsed and junit." + ) + output_format = val + elif opt == "--quiet": + quiet = True + elif opt in {"--verbose", "--v"}: + verbosity = int(val) + elif opt == "--filter": + filters = val + if not filters: + PrintCategories() + elif opt == "--counting": + if val not in ("total", "toplevel", "detailed"): + PrintUsage("Valid counting options are total, toplevel, and detailed") + counting_style = val + elif opt == "--root": + global _root + _root = val + elif opt == "--repository": + global _repository + _repository = val + elif opt == "--linelength": global _line_length try: - _line_length = int(val) + _line_length = int(val) except ValueError: - _cpplint_state.PrintError('Line length must be numeric.') - elif name == 'extensions': + PrintUsage("Line length must be digits.") + elif opt == "--exclude": + global _excludes + if not _excludes: + _excludes = set() + _excludes.update(glob.glob(val)) + elif opt == "--extensions": ProcessExtensionsOption(val) - elif name == 'root': - global _root - # root directories are specified relative to CPPLINT.cfg dir. - _root = os.path.join(os.path.dirname(cfg_file), val) - elif name == 'headers': + elif opt == "--headers": ProcessHppHeadersOption(val) - elif name == 'includeorder': + elif opt == "--third_party_headers": + ProcessThirdPartyHeadersOption(val) + elif opt == "--recursive": + recursive = True + elif opt == "--includeorder": ProcessIncludeOrderOption(val) - else: - _cpplint_state.PrintError( - 'Invalid configuration option (%s) in file %s\n' % - (name, cfg_file)) - - except IOError: - _cpplint_state.PrintError( - "Skipping config file '%s': Can't open for reading\n" % cfg_file) - keep_looking = False + elif opt == "--config": + global _config_filename + _config_filename = val + if os.path.basename(_config_filename) != _config_filename: + PrintUsage("Config file name must not include directory components.") - # Apply all the accumulated filters in reverse order (top-level directory - # config options having the least priority). - for cfg_filter in reversed(cfg_filters): - _AddFilters(cfg_filter) + if not filenames: + PrintUsage("No files were specified.") - return True + if recursive: + filenames = _ExpandDirectories(filenames) + if _excludes: + filenames = _FilterExcludedFiles(filenames) -def ProcessFile(filename, vlevel, extra_check_functions=None): - """Does google-lint on a single file. - - Args: - filename: The name of the file to parse. + _SetOutputFormat(output_format) + _SetQuiet(quiet) + _SetVerboseLevel(verbosity) + _SetFilters(filters) + _SetCountingStyle(counting_style) - vlevel: The level of errors to report. Every error of confidence - >= verbose_level will be reported. 0 is a good default. + filenames.sort() + return filenames - extra_check_functions: An array of additional check functions that will be - run on each source line. Each function takes 4 - arguments: filename, clean_lines, line, error - """ - _SetVerboseLevel(vlevel) - _BackupFilters() - old_errors = _cpplint_state.error_count +def _ParseFilterSelector(parameter): + """Parses the given command line parameter for file- and line-specific + exclusions. + readability/casting:file.cpp + readability/casting:file.cpp:43 - if not ProcessConfigOverrides(filename): - _RestoreFilters() - return - - lf_lines = [] - crlf_lines = [] - try: - # Support the UNIX convention of using "-" for stdin. Note that - # we are not opening the file with universal newline support - # (which codecs doesn't support anyway), so the resulting lines do - # contain trailing '\r' characters if we are reading a file that - # has CRLF endings. - # If after the split a trailing '\r' is present, it is removed - # below. - if filename == '-': - lines = codecs.StreamReaderWriter(sys.stdin, - codecs.getreader('utf8'), - codecs.getwriter('utf8'), - 'replace').read().split('\n') - else: - with codecs.open(filename, 'r', 'utf8', 'replace') as target_file: - lines = target_file.read().split('\n') - - # Remove trailing '\r'. - # The -1 accounts for the extra trailing blank line we get from split() - for linenum in range(len(lines) - 1): - if lines[linenum].endswith('\r'): - lines[linenum] = lines[linenum].rstrip('\r') - crlf_lines.append(linenum + 1) - else: - lf_lines.append(linenum + 1) - - except IOError: - _cpplint_state.PrintError( - "Skipping input '%s': Can't open for reading\n" % filename) - _RestoreFilters() - return - - # Note, if no dot is found, this will give the entire filename as the ext. - file_extension = filename[filename.rfind('.') + 1:] - - # When reading from stdin, the extension is unknown, so no cpplint tests - # should rely on the extension. - if filename != '-' and file_extension not in GetAllExtensions(): - _cpplint_state.PrintError('Ignoring %s; not a valid file name ' - '(%s)\n' % (filename, ', '.join(GetAllExtensions()))) - else: - ProcessFileData(filename, file_extension, lines, Error, - extra_check_functions) - - # If end-of-line sequences are a mix of LF and CR-LF, issue - # warnings on the lines with CR. - # - # Don't issue any warnings if all lines are uniformly LF or CR-LF, - # since critique can handle these just fine, and the style guide - # doesn't dictate a particular end of line sequence. - # - # We can't depend on os.linesep to determine what the desired - # end-of-line sequence should be, since that will return the - # server-side end-of-line sequence. - if lf_lines and crlf_lines: - # Warn on every line with CR. An alternative approach might be to - # check whether the file is mostly CRLF or just LF, and warn on the - # minority, we bias toward LF here since most tools prefer LF. - for linenum in crlf_lines: - Error(filename, linenum, 'whitespace/newline', 1, - 'Unexpected \\r (^M) found; better to use only \\n') - - # Suppress printing anything if --quiet was passed unless the error - # count has increased after processing this file. - if not _cpplint_state.quiet or old_errors != _cpplint_state.error_count: - _cpplint_state.PrintInfo('Done processing %s\n' % filename) - _RestoreFilters() + Args: + parameter: The parameter value of --filter + Returns: + [category, filename, line]. + Category is always given. + Filename is either a filename or empty if all files are meant. + Line is either a line in filename or -1 if all lines are meant. + """ + colon_pos = parameter.find(":") + if colon_pos == -1: + return parameter, "", -1 + category = parameter[:colon_pos] + second_colon_pos = parameter.find(":", colon_pos + 1) + if second_colon_pos == -1: + return category, parameter[colon_pos + 1 :], -1 + return ( + category, + parameter[colon_pos + 1 : second_colon_pos], + int(parameter[second_colon_pos + 1 :]), + ) -def PrintUsage(message): - """Prints a brief usage string and exits, optionally with an error message. - - Args: - message: The optional error message. - """ - sys.stderr.write(_USAGE % (sorted(list(GetAllExtensions())), - ','.join(sorted(list(GetAllExtensions()))), - sorted(GetHeaderExtensions()), - ','.join(sorted(GetHeaderExtensions())))) - - if message: - sys.exit('\nFATAL ERROR: ' + message) - else: - sys.exit(0) -def PrintVersion(): - sys.stdout.write('Cpplint fork (https://github.com/cpplint/cpplint)\n') - sys.stdout.write('cpplint ' + __VERSION__ + '\n') - sys.stdout.write('Python ' + sys.version + '\n') - sys.exit(0) +def _ExpandDirectories(filenames): + """Searches a list of filenames and replaces directories in the list with + all files descending from those directories. Files with extensions not in + the valid extensions list are excluded. -def PrintCategories(): - """Prints a list of all the error-categories used by error messages. + Args: + filenames: A list of files or directories - These are the categories used to filter messages via --filter. - """ - sys.stderr.write(''.join(' %s\n' % cat for cat in _ERROR_CATEGORIES)) - sys.exit(0) + Returns: + A list of all files that are members of filenames or descended from a + directory in filenames + """ + expanded = set() + for filename in filenames: + if not os.path.isdir(filename): + expanded.add(filename) + continue + for root, _, files in os.walk(filename): + for loopfile in files: + fullname = os.path.join(root, loopfile) + fullname = fullname.removeprefix("." + os.path.sep) + expanded.add(fullname) -def ParseArguments(args): - """Parses the command line arguments. - - This may set the output format and verbosity level as side-effects. - - Args: - args: The command line arguments: - - Returns: - The list of filenames to lint. - """ - try: - (opts, filenames) = getopt.getopt(args, '', ['help', 'output=', 'verbose=', - 'v=', - 'version', - 'counting=', - 'filter=', - 'root=', - 'repository=', - 'linelength=', - 'extensions=', - 'exclude=', - 'recursive', - 'headers=', - 'includeorder=', - 'quiet']) - except getopt.GetoptError: - PrintUsage('Invalid arguments.') - - verbosity = _VerboseLevel() - output_format = _OutputFormat() - filters = '' - quiet = _Quiet() - counting_style = '' - recursive = False - - for (opt, val) in opts: - if opt == '--help': - PrintUsage(None) - if opt == '--version': - PrintVersion() - elif opt == '--output': - if val not in ('emacs', 'vs7', 'eclipse', 'junit', 'sed', 'gsed'): - PrintUsage('The only allowed output formats are emacs, vs7, eclipse ' - 'sed, gsed and junit.') - output_format = val - elif opt == '--quiet': - quiet = True - elif opt == '--verbose' or opt == '--v': - verbosity = int(val) - elif opt == '--filter': - filters = val - if not filters: - PrintCategories() - elif opt == '--counting': - if val not in ('total', 'toplevel', 'detailed'): - PrintUsage('Valid counting options are total, toplevel, and detailed') - counting_style = val - elif opt == '--root': - global _root - _root = val - elif opt == '--repository': - global _repository - _repository = val - elif opt == '--linelength': - global _line_length - try: - _line_length = int(val) - except ValueError: - PrintUsage('Line length must be digits.') - elif opt == '--exclude': - global _excludes - if not _excludes: - _excludes = set() - _excludes.update(glob.glob(val)) - elif opt == '--extensions': - ProcessExtensionsOption(val) - elif opt == '--headers': - ProcessHppHeadersOption(val) - elif opt == '--recursive': - recursive = True - elif opt == '--includeorder': - ProcessIncludeOrderOption(val) - - if not filenames: - PrintUsage('No files were specified.') - - if recursive: - filenames = _ExpandDirectories(filenames) - - if _excludes: - filenames = _FilterExcludedFiles(filenames) - - _SetOutputFormat(output_format) - _SetQuiet(quiet) - _SetVerboseLevel(verbosity) - _SetFilters(filters) - _SetCountingStyle(counting_style) - - filenames.sort() - return filenames + return [ + filename for filename in expanded if os.path.splitext(filename)[1][1:] in GetAllExtensions() + ] -def _ExpandDirectories(filenames): - """Searches a list of filenames and replaces directories in the list with - all files descending from those directories. Files with extensions not in - the valid extensions list are excluded. - - Args: - filenames: A list of files or directories - - Returns: - A list of all files that are members of filenames or descended from a - directory in filenames - """ - expanded = set() - for filename in filenames: - if not os.path.isdir(filename): - expanded.add(filename) - continue - - for root, _, files in os.walk(filename): - for loopfile in files: - fullname = os.path.join(root, loopfile) - if fullname.startswith('.' + os.path.sep): - fullname = fullname[len('.' + os.path.sep):] - expanded.add(fullname) - - filtered = [] - for filename in expanded: - if os.path.splitext(filename)[1][1:] in GetAllExtensions(): - filtered.append(filename) - return filtered def _FilterExcludedFiles(fnames): - """Filters out files listed in the --exclude command line switch. File paths - in the switch are evaluated relative to the current working directory - """ - exclude_paths = [os.path.abspath(f) for f in _excludes] - # because globbing does not work recursively, exclude all subpath of all excluded entries - return [f for f in fnames - if not any(e for e in exclude_paths - if _IsParentOrSame(e, os.path.abspath(f)))] + """Filters out files listed in the --exclude command line switch. File paths + in the switch are evaluated relative to the current working directory + """ + exclude_paths = [os.path.abspath(f) for f in _excludes] + # because globbing does not work recursively, exclude all subpath of all excluded entries + return [ + f + for f in fnames + if not any(e for e in exclude_paths if _IsParentOrSame(e, os.path.abspath(f))) + ] + def _IsParentOrSame(parent, child): - """Return true if child is subdirectory of parent. - Assumes both paths are absolute and don't contain symlinks. - """ - parent = os.path.normpath(parent) - child = os.path.normpath(child) - if parent == child: - return True + """Return true if child is subdirectory of parent. + Assumes both paths are absolute and don't contain symlinks. + """ + parent = os.path.normpath(parent) + child = os.path.normpath(child) + if parent == child: + return True + + prefix = os.path.commonprefix([parent, child]) + if prefix != parent: + return False + # Note: os.path.commonprefix operates on character basis, so + # take extra care of situations like '/foo/ba' and '/foo/bar/baz' + child_suffix = child[len(prefix) :] + child_suffix = child_suffix.lstrip(os.sep) + return child == os.path.join(prefix, child_suffix) - prefix = os.path.commonprefix([parent, child]) - if prefix != parent: - return False - # Note: os.path.commonprefix operates on character basis, so - # take extra care of situations like '/foo/ba' and '/foo/bar/baz' - child_suffix = child[len(prefix):] - child_suffix = child_suffix.lstrip(os.sep) - return child == os.path.join(prefix, child_suffix) def main(): - filenames = ParseArguments(sys.argv[1:]) - backup_err = sys.stderr - try: - # Change stderr to write with replacement characters so we don't die - # if we try to print something containing non-ASCII characters. - sys.stderr = codecs.StreamReader(sys.stderr, 'replace') - - _cpplint_state.ResetErrorCounts() - for filename in filenames: - ProcessFile(filename, _cpplint_state.verbose_level) - # If --quiet is passed, suppress printing error count unless there are errors. - if not _cpplint_state.quiet or _cpplint_state.error_count > 0: - _cpplint_state.PrintErrorCounts() + filenames = ParseArguments(sys.argv[1:]) + backup_err = sys.stderr + try: + # Change stderr to write with replacement characters so we don't die + # if we try to print something containing non-ASCII characters. + sys.stderr = codecs.StreamReader(sys.stderr, "replace") + + _cpplint_state.ResetErrorCounts() + for filename in filenames: + ProcessFile(filename, _cpplint_state.verbose_level) + # If --quiet is passed, suppress printing error count unless there are errors. + if not _cpplint_state.quiet or _cpplint_state.error_count > 0: + _cpplint_state.PrintErrorCounts() - if _cpplint_state.output_format == 'junit': - sys.stderr.write(_cpplint_state.FormatJUnitXML()) + if _cpplint_state.output_format == "junit": + sys.stderr.write(_cpplint_state.FormatJUnitXML()) - finally: - sys.stderr = backup_err + finally: + sys.stderr = backup_err - sys.exit(_cpplint_state.error_count > 0) + sys.exit(_cpplint_state.error_count > 0) -if __name__ == '__main__': - main() +if __name__ == "__main__": + main() From 3e7010d47f33f64896a225752c4d10fe83cb259b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Wed, 26 Nov 2025 17:37:05 +0100 Subject: [PATCH 013/267] tools: refloat 10 Node.js patches to cpplint.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cherry-pick 12c8b4d15471cb6211b39c3a2ca5b10fa4b9f12b Original commit message: This commit is a suggestion for adding a rule for NULL usages in the code base. This will currently report a number of errors which could be ignored using // NOLINT (readability/null_usage) PR-URL: https://github.com/nodejs/node/pull/17373 Reviewed-By: Jon Moss Reviewed-By: Anna Henningsen Reviewed-By: Timothy Gu Reviewed-By: Colin Ihrig Reviewed-By: Michael Dawson Reviewed-By: Sakthipriyan Vairamani Reviewed-By: Tobias Nießen Refs: https://github.com/nodejs/node/commit/12c8b4d15471cb6211b39c3a2ca5b10fa4b9f12b Cherry-pick fc81e801913de3e3f3c0c8e26c105f983a74e539 Original commit message: Update cpplint.py to check for inline headers when the corresponding header is already included. PR-URL: https://github.com/nodejs/node/pull/21521 Reviewed-By: Ben Noordhuis Reviewed-By: James M Snell Refs: https://github.com/nodejs/node/commit/fc81e801913de3e3f3c0c8e26c105f983a74e539 Cherry-pick cbc3dd997eb90d629d1b9912b7a5a40eb82343df Original commit message: src, tools: add check for left leaning pointers This commit adds a rule to cpplint to check that pointers in the code base lean to the left and not right, and also fixes the violations reported. PR-URL: https://github.com/nodejs/node/pull/21010 Reviewed-By: Ben Noordhuis Reviewed-By: Anna Henningsen Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell Refs: https://github.com/nodejs/node/commit/cbc3dd997eb90d629d1b9912b7a5a40eb82343df Cherry-pick 902998190a55d6915b881936f6dd5b6e9cca6ad8 Original commit message: tools: fix cpplint.py header rules THIS COMMIT SHOULD GO WITH THE NEXT. IT WILL FIND NEW LINT. PR-URL: https://github.com/nodejs/node/pull/26306 Reviewed-By: Gireesh Punathil Refs: https://github.com/nodejs/node/commit/902998190a55d6915b881936f6dd5b6e9cca6ad8 Cherry-pick 0a25ace9c35b62ece4d32fd90b326d8063265109 Original commit message: tools: move cpplint configuration to .cpplint PR-URL: https://github.com/nodejs/node/pull/27098 Reviewed-By: Joyee Cheung Reviewed-By: Daniel Bevenius Refs: https://github.com/nodejs/node/commit/0a25ace9c35b62ece4d32fd90b326d8063265109 Cherry-pick afa9a7206c26a29a2af226696c145c924a6d3754 Original commit message: tools: refloat update link to google styleguide for cpplint This commit updates two old links to Google's C++ styleguide which currently result in a 404 when accessed. PR-URL: https://github.com/nodejs/node/pull/30876 Reviewed-By: Michaël Zasso Reviewed-By: David Carlier Reviewed-By: Colin Ihrig Reviewed-By: Richard Lau Reviewed-By: Rich Trott Refs: https://github.com/nodejs/node/commit/afa9a7206c26a29a2af226696c145c924a6d3754 Cherry-pick e23bf8f771aa0bd60e25ff079985fc29b5846403 Original commit message: tools,src: refloat forbid usage of v8::Persistent `v8::Persistent` comes with the surprising catch that it requires manual cleanup. `v8::Global` doesn’t, making it easier to use, and additionally provides move semantics. New code should always use `v8::Global`. PR-URL: https://github.com/nodejs/node/pull/31018 Reviewed-By: Colin Ihrig Reviewed-By: Richard Lau Reviewed-By: James M Snell Reviewed-By: David Carlier Reviewed-By: Rich Trott Reviewed-By: Gus Caplan Reviewed-By: Joyee Cheung Reviewed-By: Ben Noordhuis Reviewed-By: Stephen Belanger Backport 3d954dcf812bb500a77913ffd5ebec76235714f0 Original commit message: tools: remove readability/fn_size rule PR-URL: https://github.com/nodejs/node/pull/54663 Reviewed-By: Yagiz Nizipli Reviewed-By: Luigi Pinca Refs: https://github.com/nodejs/node/commit/3d954dcf812bb500a77913ffd5ebec76235714f0 Cherry-pick c7d7ec7cda56b7776797cbdef3d4497fc98e8440 Original commit message: tools: check for std::vector in lint PR-URL: https://github.com/nodejs/node/pull/58497 Reviewed-By: James M Snell Reviewed-By: Juan José Arboleda Reviewed-By: Joyee Cheung Refs: https://github.com/nodejs/node/commit/c7d7ec7cda56b7776797cbdef3d4497fc98e8440 Cherry-pick e6d94ef106e08999e5461dabfeb333ff141f59fe Original commit message: tools: add C++ lint rule to avoid using `String::Utf8Value` We should be using our own helpers for this instead. PR-URL: https://github.com/nodejs/node/pull/60244 Reviewed-By: Chengzhong Wu Reviewed-By: Rafael Gonzaga Reviewed-By: Edy Silva Reviewed-By: Colin Ihrig Reviewed-By: Ilyas Shabi Reviewed-By: Yagiz Nizipli Reviewed-By: Vladimir Morozov Refs: https://github.com/nodejs/node/commit/e6d94ef106e08999e5461dabfeb333ff141f59fe PR-URL: https://github.com/nodejs/node/pull/60901 Fixes: https://github.com/nodejs/node/issues/60771 --- tools/cpplint.py | 158 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 149 insertions(+), 9 deletions(-) diff --git a/tools/cpplint.py b/tools/cpplint.py index 6dc72c947fac8d..464d95b8824f95 100755 --- a/tools/cpplint.py +++ b/tools/cpplint.py @@ -306,9 +306,10 @@ "build/forward_decl", "build/header_guard", "build/include", - "build/include_subdir", "build/include_alpha", + "build/include_inline", "build/include_order", + "build/include_subdir", "build/include_what_you_use", "build/namespaces_headers", "build/namespaces/header/block/literals", @@ -351,6 +352,7 @@ "runtime/string", "runtime/threadsafe_fn", "runtime/vlog", + "runtime/v8_persistent", "whitespace/blank_line", "whitespace/braces", "whitespace/comma", @@ -920,6 +922,14 @@ # Match string that indicates we're working on a Linux Kernel file. _SEARCH_KERNEL_FILE = re.compile(r"\b(?:LINT_KERNEL_FILE)") +_NULL_TOKEN_PATTERN = re.compile(r'\bNULL\b') + +_V8_PERSISTENT_PATTERN = re.compile(r'\bv8::Persistent\b') + +_RIGHT_LEANING_POINTER_PATTERN = re.compile(r'[^=|(,\s><);&?:}]' + r'(?= 0 or line.find('*/') >= 0: + return + + for match in _NULL_TOKEN_PATTERN.finditer(line): + error(filename, linenum, 'readability/null_usage', 2, + 'Use nullptr instead of NULL') + + +def CheckV8PersistentTokens(filename, clean_lines, linenum, error): + """Check v8::Persistent usage. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Avoid preprocessor lines + if re.match(r'^\s*#', line): + return + + if line.find('/*') >= 0 or line.find('*/') >= 0: + return + + for match in _V8_PERSISTENT_PATTERN.finditer(line): + error(filename, linenum, 'runtime/v8_persistent', 2, + 'Use v8::Global instead of v8::Persistent') + + +def CheckLeftLeaningPointer(filename, clean_lines, linenum, error): + """Check for left-leaning pointer placement. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Avoid preprocessor lines + if re.match(r'^\s*#', line): + return + + if '/*' in line or '*/' in line: + return + + for match in _RIGHT_LEANING_POINTER_PATTERN.finditer(line): + error(filename, linenum, 'readability/null_usage', 2, + 'Use left leaning pointer instead of right leaning') + + def GetLineWidth(line): """Determines the width of the line in column positions. @@ -5603,6 +5697,9 @@ def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, er CheckSpacingForFunctionCall(filename, clean_lines, linenum, error) CheckCheck(filename, clean_lines, linenum, error) CheckAltTokens(filename, clean_lines, linenum, error) + CheckNullTokens(filename, clean_lines, linenum, error) + CheckV8PersistentTokens(filename, clean_lines, linenum, error) + CheckLeftLeaningPointer(filename, clean_lines, linenum, error) classinfo = nesting_state.InnermostClass() if classinfo: CheckSectionSpacing(filename, clean_lines, classinfo, linenum, error) @@ -6155,7 +6252,7 @@ def CheckLanguage( "build/namespaces_headers", 4, "Do not use unnamed namespaces in header files. See " - "https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Namespaces" + "https://google.github.io/styleguide/cppguide.html#Namespaces" " for more information.", ) @@ -7313,6 +7410,42 @@ def CheckItemIndentationInNamespace(filename, raw_lines_no_comments, linenum, er ) +def CheckLocalVectorUsage(filename, lines, error): + """Logs an error if std::vector> is used. + Args: + filename: The name of the current file. + lines: An array of strings, each representing a line of the file. + error: The function to call with any errors found. + """ + for linenum, line in enumerate(lines): + if (re.search(r'\bstd::vector]+>>', line) or + re.search(r'\bstd::vector]+>>', line)): + error(filename, linenum, 'runtime/local_vector', 5, + 'Do not use std::vector>. ' + 'Use v8::LocalVector instead.') + + +def CheckStringValueUsage(filename, lines, error): + """Logs an error if v8's String::Value/Utf8Value are used. + Args: + filename: The name of the current file. + lines: An array of strings, each representing a line of the file. + error: The function to call with any errors found. + """ + if filename.startswith('test/') or filename.startswith('test\\'): + return # Skip test files, where Node.js headers may not be available + + for linenum, line in enumerate(lines): + if re.search(r'\bString::Utf8Value\b', line): + error(filename, linenum, 'runtime/v8_string_value', 5, + 'Do not use v8::String::Utf8Value. ' + 'Use node::Utf8Value instead.') + if re.search(r'\bString::Value\b', line): + error(filename, linenum, 'runtime/v8_string_value', 5, + 'Do not use v8::String::Value. ' + 'Use node::TwoByteValue instead.') + + def ProcessLine( filename, file_extension, @@ -7470,6 +7603,13 @@ def ProcessFileData(filename, file_extension, lines, error, extra_check_function CheckForNewlineAtEOF(filename, lines, error) + CheckInlineHeader(filename, include_state, error) + + CheckLocalVectorUsage(filename, lines, error) + + CheckStringValueUsage(filename, lines, error) + + def ProcessConfigOverrides(filename): """Loads the configuration files and processes the config overrides. From 68fbc0c6cc49ca2815373a9db21fd495701a28af Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Mon, 8 Dec 2025 16:08:11 +0100 Subject: [PATCH 014/267] module: mark module compile cache as stable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The feature set has been stable without any breaking changes in the past year, and it's been depended enough in the wild by popular packages that we'll likely need to treat any breakages as semver-major in the future anyway. The future TODOs are likely all non-breaking. Potential subtle breakages in implementation details that should not be relied upon (such as the cache layout) are explicitly excluded from the contract. We'll investigate whether it can be enabled by default as a different topic, which can be potentially semver-major. PR-URL: https://github.com/nodejs/node/pull/60971 Reviewed-By: Vinícius Lourenço Claro Cardoso Reviewed-By: Marco Ippolito --- doc/api/cli.md | 6 ++++-- doc/api/module.md | 28 ++++++++++++++++++++-------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/doc/api/cli.md b/doc/api/cli.md index f05686608297e5..38d35b0466c91d 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -3307,10 +3307,12 @@ Any other value will result in colorized output being disabled. -> Stability: 1.1 - Active Development - Enable the [module compile cache][] for the Node.js instance. See the documentation of [module compile cache][] for details. diff --git a/doc/api/module.md b/doc/api/module.md index 3efe0a4354724e..4904b9f172bef4 100644 --- a/doc/api/module.md +++ b/doc/api/module.md @@ -415,6 +415,11 @@ to disk when the Node.js instance is about to exit. This is subject to change. T is flushed to disk in case the application wants to spawn other Node.js instances and let them share the cache long before the parent exits. +The compile cache layout on disk is an implementation detail and should not be +relied upon. The compile cache generated is typically only reusable in the same +version of Node.js, and should be not assumed to be compatible across different +versions of Node.js. + ### Portability of the compile cache By default, caches are invalidated when the absolute paths of the modules being @@ -454,10 +459,12 @@ separately if the same base directory is used to persist the cache, so they can -> Stability: 1.1 - Active Development - The following constants are returned as the `status` field in the object returned by [`module.enableCompileCache()`][] to indicate the result of the attempt to enable the [module compile cache][]. @@ -508,6 +515,9 @@ The following constants are returned as the `status` field in the object returne -> Stability: 1.1 - Active Development - * `options` {string|Object} Optional. If a string is passed, it is considered to be `options.directory`. * `directory` {string} Optional. Directory to store the compile cache. If not specified, the directory specified by the [`NODE_COMPILE_CACHE=dir`][] environment variable @@ -562,10 +570,12 @@ be inherited into the child workers. The directory can be obtained either from t added: - v23.0.0 - v22.10.0 +changes: + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/60971 + description: This feature is no longer experimental. --> -> Stability: 1.1 - Active Development - Flush the [module compile cache][] accumulated from modules already loaded in the current Node.js instance to disk. This returns after all the flushing file system operations come to an end, no matter they succeed or not. If there @@ -576,10 +586,12 @@ interfere with the actual operation of the application. -> Stability: 1.1 - Active Development - * Returns: {string|undefined} Path to the [module compile cache][] directory if it is enabled, or `undefined` otherwise. From 83c38672f7c315d047db72db4531949683685f3f Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Fri, 5 Dec 2025 10:52:01 +0100 Subject: [PATCH 015/267] cli: add --require-module/--no-require-module To replace --experimental-require-module and --no-experimental-require-module. The experimental ones are left as legacy aliases. PR-URL: https://github.com/nodejs/node/pull/60959 Reviewed-By: Jacob Smith Reviewed-By: Marco Ippolito Reviewed-By: Jordan Harband Reviewed-By: Matteo Collina --- doc/api/cli.md | 62 ++++++++++++++++++------------ doc/api/modules.md | 8 ++-- doc/node-config-schema.json | 3 ++ doc/node.1 | 3 ++ lib/internal/bootstrap/node.js | 2 +- lib/internal/modules/cjs/loader.js | 4 +- lib/internal/modules/esm/loader.js | 4 +- lib/internal/modules/esm/utils.js | 2 +- lib/internal/modules/helpers.js | 2 +- src/node_options.cc | 10 ++++- 10 files changed, 62 insertions(+), 38 deletions(-) diff --git a/doc/api/cli.md b/doc/api/cli.md index 38d35b0466c91d..94d01b90ee14cc 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -1137,27 +1137,6 @@ If the ES module being `require()`'d contains top-level `await`, this flag allows Node.js to evaluate the module, try to locate the top-level awaits, and print their location to help users find them. -### `--experimental-require-module` - - - -> Stability: 1.1 - Active Development - -Supports loading a synchronous ES module graph in `require()`. - -See [Loading ECMAScript modules using `require()`][]. - ### `--experimental-sea-config` -> Stability: 1.1 - Active Development - -Disable support for loading a synchronous ES module graph in `require()`. +> Stability: 3 - Legacy: Use [`--no-require-module`][] instead. -See [Loading ECMAScript modules using `require()`][]. +Legacy alias for [`--no-require-module`][]. ### `--no-experimental-sqlite` @@ -1922,6 +1904,34 @@ changes: Disables the family autoselection algorithm unless connection options explicitly enables it. + + +### `--no-require-module` + + + +> Stability: 1.2 - Release Candidate + +Disable support for loading a synchronous ES module graph in `require()`. + +See [Loading ECMAScript modules using `require()`][]. + ### `--no-strip-types` -> Stability: 1.2 - Release Candidate - Disable support for loading a synchronous ES module graph in `require()`. See [Loading ECMAScript modules using `require()`][]. diff --git a/doc/api/errors.md b/doc/api/errors.md index df87ab95b372d8..272a076101f695 100644 --- a/doc/api/errors.md +++ b/doc/api/errors.md @@ -2657,8 +2657,6 @@ A QUIC session failed because version negotiation is required. ### `ERR_REQUIRE_ASYNC_MODULE` -> Stability: 1 - Experimental - When trying to `require()` a [ES Module][], the module turns out to be asynchronous. That is, it contains top-level await. @@ -2670,8 +2668,6 @@ before looking for the top-level awaits). ### `ERR_REQUIRE_CYCLE_MODULE` -> Stability: 1 - Experimental - When trying to `require()` a [ES Module][], a CommonJS to ESM or ESM to CommonJS edge participates in an immediate cycle. This is not allowed because ES Modules cannot be evaluated while they are diff --git a/doc/api/modules.md b/doc/api/modules.md index 28bf33e3f2352f..8cc7369ce67d04 100644 --- a/doc/api/modules.md +++ b/doc/api/modules.md @@ -175,6 +175,10 @@ added: - v22.0.0 - v20.17.0 changes: + - version: + - REPLACEME + pr-url: https://github.com/nodejs/node/pull/60959 + description: This feature is no longer experimental. - version: - v23.5.0 - v22.13.0 @@ -195,8 +199,6 @@ changes: description: Support `'module.exports'` interop export in `require(esm)`. --> -> Stability: 1.2 - Release candidate - The `.mjs` extension is reserved for [ECMAScript Modules][]. See [Determining module system][] section for more info regarding which files are parsed as ECMAScript modules. From e5558b0859d1a2e4e83f86020294308e0a2c8602 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Mon, 15 Dec 2025 17:56:36 +0100 Subject: [PATCH 017/267] assert,util: fix deep comparing invalid dates skipping properties The property comparison of invalid dates regressed when starting to handle invalid dates as being equal. PR-URL: https://github.com/nodejs/node/pull/61076 Reviewed-By: Colin Ihrig Reviewed-By: Yagiz Nizipli Reviewed-By: Antoine du Hamel --- lib/internal/util/comparisons.js | 6 ++++++ test/parallel/test-assert-deep.js | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/internal/util/comparisons.js b/lib/internal/util/comparisons.js index da73f02fa9fec6..da9e22b38eee99 100644 --- a/lib/internal/util/comparisons.js +++ b/lib/internal/util/comparisons.js @@ -302,6 +302,12 @@ function objectComparisonStart(val1, val2, mode, memos) { DatePrototypeGetTime(val1) !== DatePrototypeGetTime(val2)) { return false; } + const time1 = DatePrototypeGetTime(val1); + const time2 = DatePrototypeGetTime(val2); + // eslint-disable-next-line no-self-compare + if (time1 !== time2 && (time1 === time1 || time2 === time2)) { + return false; + } } else if (isRegExp(val1)) { if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) { return false; diff --git a/test/parallel/test-assert-deep.js b/test/parallel/test-assert-deep.js index 14307145a3a860..7fc51890b41749 100644 --- a/test/parallel/test-assert-deep.js +++ b/test/parallel/test-assert-deep.js @@ -779,6 +779,19 @@ test('Additional tests', () => { assertNotDeepOrStrict(new Date(), new Date(2000, 3, 14)); + { + // Invalid dates deep comparison. + const date1 = new Date('foo'); + const date2 = new Date('bar'); + date1.foo = true; + date2.foo = true; + assertDeepAndStrictEqual(date1, date2); + + date1.bar = false; + date2.bar = true; + assertNotDeepOrStrict(date1, date2); + } + assertDeepAndStrictEqual(/a/, /a/); assertDeepAndStrictEqual(/a/g, /a/g); assertDeepAndStrictEqual(/a/i, /a/i); From 5f8ecf3940c71151260c4cc4491f54843cf90495 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Tue, 23 Dec 2025 15:45:21 +0100 Subject: [PATCH 018/267] build: add --debug-symbols to build with -g without enabling DCHECKs This is useful when debugging release builds on Linux without enabling DCHECKs. PR-URL: https://github.com/nodejs/node/pull/61100 Reviewed-By: Yagiz Nizipli Reviewed-By: Chengzhong Wu --- configure.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/configure.py b/configure.py index 98a8b147e4cbfd..fe64e7d9753f53 100755 --- a/configure.py +++ b/configure.py @@ -105,6 +105,12 @@ default=None, help='build the Node.js part of the binary with debugging symbols') +parser.add_argument('--debug-symbols', + action='store_true', + dest='debug_symbols', + default=None, + help='add debugging symbols to release builds (adds -g without enabling DCHECKs)') + parser.add_argument('--dest-cpu', action='store', dest='dest_cpu', @@ -1549,6 +1555,9 @@ def configure_node(o): o['variables']['control_flow_guard'] = b(options.enable_cfg) o['variables']['node_use_amaro'] = b(not options.without_amaro) o['variables']['debug_node'] = b(options.debug_node) + o['variables']['debug_symbols'] = b(options.debug_symbols) + if options.debug_symbols: + o['cflags'] += ['-g'] o['default_configuration'] = 'Debug' if options.debug else 'Release' if options.error_on_warn and options.suppress_all_error_on_warn: raise Exception('--error_on_warn is incompatible with --suppress_all_error_on_warn.') From 148373cea11cf527c39fb9cc6eca4144b0658ebb Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Mon, 29 Dec 2025 23:50:44 +0700 Subject: [PATCH 019/267] assert,util: improve comparison performance This makes sure that the toStringTag symbol is used, if available instead of calculating the toString() value each time, if not needed (the type checks make a brand check, so there is no need to check the toStringTag, if non is defined on the object). PR-URL: https://github.com/nodejs/node/pull/61176 Reviewed-By: Colin Ihrig Reviewed-By: Benjamin Gruenbaum Reviewed-By: Marco Ippolito --- lib/internal/util/comparisons.js | 108 +++++++++++++++++-------------- 1 file changed, 61 insertions(+), 47 deletions(-) diff --git a/lib/internal/util/comparisons.js b/lib/internal/util/comparisons.js index da9e22b38eee99..abb5f57751b1c0 100644 --- a/lib/internal/util/comparisons.js +++ b/lib/internal/util/comparisons.js @@ -41,6 +41,7 @@ const { StringPrototypeValueOf, Symbol, SymbolPrototypeValueOf, + SymbolToStringTag, TypedArrayPrototypeGetByteLength: getByteLength, TypedArrayPrototypeGetSymbolToStringTag, Uint16Array, @@ -114,6 +115,7 @@ const { isFloat64Array, isKeyObject, isCryptoKey, + isPromise, isWeakMap, isWeakSet, } = types; @@ -263,6 +265,17 @@ function innerDeepEqual(val1, val2, mode, memos) { return objectComparisonStart(val1, val2, mode, memos); } +function hasUnequalTag(val1, val2) { + return val1[SymbolToStringTag] !== val2[SymbolToStringTag]; +} + +function slowHasUnequalTag(val1Tag, val1, val2) { + if (val1[SymbolToStringTag] !== undefined && val2[SymbolToStringTag] !== undefined) { + return val1[SymbolToStringTag] !== val2[SymbolToStringTag]; + } + return val1Tag !== ObjectPrototypeToString(val2); +} + function objectComparisonStart(val1, val2, mode, memos) { if (mode === kStrict) { if (wellKnownConstructors.has(val1.constructor) || @@ -275,16 +288,10 @@ function objectComparisonStart(val1, val2, mode, memos) { } } - const val1Tag = ObjectPrototypeToString(val1); - const val2Tag = ObjectPrototypeToString(val2); - - if (val1Tag !== val2Tag) { - return false; - } - if (ArrayIsArray(val1)) { if (!ArrayIsArray(val2) || - (val1.length !== val2.length && (mode !== kPartial || val1.length < val2.length))) { + (val1.length !== val2.length && (mode !== kPartial || val1.length < val2.length)) || + hasUnequalTag(val1, val2)) { return false; } @@ -295,23 +302,29 @@ function objectComparisonStart(val1, val2, mode, memos) { return false; } return keyCheck(val1, val2, mode, memos, kIsArray, keys2); - } else if (val1Tag === '[object Object]') { - return keyCheck(val1, val2, mode, memos, kNoIterator); - } else if (isDate(val1)) { - if (!isDate(val2) || - DatePrototypeGetTime(val1) !== DatePrototypeGetTime(val2)) { + } + + let val1Tag; + if (val1[SymbolToStringTag] === undefined && + (val1Tag = ObjectPrototypeToString(val1)) === '[object Object]') { + if (slowHasUnequalTag(val1Tag, val1, val2)) { return false; } - const time1 = DatePrototypeGetTime(val1); - const time2 = DatePrototypeGetTime(val2); - // eslint-disable-next-line no-self-compare - if (time1 !== time2 && (time1 === time1 || time2 === time2)) { + return keyCheck(val1, val2, mode, memos, kNoIterator); + } else if (isSet(val1)) { + if (!isSet(val2) || + (val1.size !== val2.size && (mode !== kPartial || val1.size < val2.size)) || + hasUnequalTag(val1, val2)) { return false; } - } else if (isRegExp(val1)) { - if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) { + return keyCheck(val1, val2, mode, memos, kIsSet); + } else if (isMap(val1)) { + if (!isMap(val2) || + (val1.size !== val2.size && (mode !== kPartial || val1.size < val2.size)) || + hasUnequalTag(val1, val2)) { return false; } + return keyCheck(val1, val2, mode, memos, kIsMap); } else if (isArrayBufferView(val1)) { if (TypedArrayPrototypeGetSymbolToStringTag(val1) !== TypedArrayPrototypeGetSymbolToStringTag(val2)) { @@ -339,20 +352,22 @@ function objectComparisonStart(val1, val2, mode, memos) { return false; } return keyCheck(val1, val2, mode, memos, kNoIterator, keys2); - } else if (isSet(val1)) { - if (!isSet(val2) || - (val1.size !== val2.size && (mode !== kPartial || val1.size < val2.size))) { + } else if (isDate(val1)) { + if (!isDate(val2) || hasUnequalTag(val1, val2)) { return false; } - return keyCheck(val1, val2, mode, memos, kIsSet); - } else if (isMap(val1)) { - if (!isMap(val2) || - (val1.size !== val2.size && (mode !== kPartial || val1.size < val2.size))) { + const time1 = DatePrototypeGetTime(val1); + const time2 = DatePrototypeGetTime(val2); + // eslint-disable-next-line no-self-compare + if (time1 !== time2 && (time1 === time1 || time2 === time2)) { + return false; + } + } else if (isRegExp(val1)) { + if (!isRegExp(val2) || !areSimilarRegExps(val1, val2) || hasUnequalTag(val1, val2)) { return false; } - return keyCheck(val1, val2, mode, memos, kIsMap); } else if (isAnyArrayBuffer(val1)) { - if (!isAnyArrayBuffer(val2)) { + if (!isAnyArrayBuffer(val2) || hasUnequalTag(val1, val2)) { return false; } if (mode !== kPartial || val1.byteLength === val2.byteLength) { @@ -362,6 +377,15 @@ function objectComparisonStart(val1, val2, mode, memos) { } else if (!isPartialUint8Array(new Uint8Array(val1), new Uint8Array(val2))) { return false; } + } else if (slowHasUnequalTag(val1Tag ?? ObjectPrototypeToString(val1), val1, val2) || + ArrayIsArray(val2) || + isArrayBufferView(val2) || + isSet(val2) || + isMap(val2) || + isDate(val2) || + isRegExp(val2) || + isAnyArrayBuffer(val2)) { + return false; } else if (isError(val1)) { // Do not compare the stack as it might differ even though the error itself // is otherwise identical. @@ -380,17 +404,6 @@ function objectComparisonStart(val1, val2, mode, memos) { if (!isEqualBoxedPrimitive(val1, val2)) { return false; } - } else if (ArrayIsArray(val2) || - isArrayBufferView(val2) || - isSet(val2) || - isMap(val2) || - isDate(val2) || - isRegExp(val2) || - isAnyArrayBuffer(val2) || - isBoxedPrimitive(val2) || - isNativeError(val2) || - val2 instanceof Error) { - return false; } else if (isURL(val1)) { if (!isURL(val2) || val1.href !== val2.href) { return false; @@ -412,7 +425,12 @@ function objectComparisonStart(val1, val2, mode, memos) { ) { return false; } - } else if (isWeakMap(val1) || isWeakSet(val1)) { + } else if (isBoxedPrimitive(val2) || + isNativeError(val2) || + val2 instanceof Error || + isWeakMap(val1) || + isWeakSet(val1) || + isPromise(val1)) { return false; } @@ -884,10 +902,8 @@ function partialSparseArrayEquiv(a, b, mode, memos, startA, startB) { let aPos = startA; const keysA = ObjectKeys(a); const keysB = ObjectKeys(b); - const keysBLength = keysB.length; - const keysALength = keysA.length; - const lenA = keysALength - startA; - const lenB = keysBLength - startB; + const lenA = keysA.length - startA; + const lenB = keysB.length - startB; if (lenA < lenB) { return false; } @@ -895,7 +911,7 @@ function partialSparseArrayEquiv(a, b, mode, memos, startA, startB) { const keyB = keysB[startB + i]; while (!innerDeepEqual(a[keysA[aPos]], b[keyB], mode, memos)) { aPos++; - if (aPos > keysALength - lenB + i) { + if (aPos > keysA.length - lenB + i) { return false; } } @@ -927,8 +943,6 @@ function partialArrayEquiv(a, b, mode, memos) { } function sparseArrayEquiv(a, b, mode, memos, i) { - // TODO(BridgeAR): Use internal method to only get index properties. The - // same applies to the partial implementation. const keysA = ObjectKeys(a); const keysB = ObjectKeys(b); if (keysA.length !== keysB.length) { From 83cffd92b5e9fa597fa5c925774ecbf16fdd8853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerhard=20St=C3=B6bich?= Date: Wed, 31 Dec 2025 15:45:20 +0100 Subject: [PATCH 020/267] async_hooks: enabledHooksExist shall return if hooks are enabled MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correct the implementaton of enabledHooksExist to return true if there are enabled hooks. Adapt callsites which used getHooksArrays() as workaround. PR-URL: https://github.com/nodejs/node/pull/61054 Fixes: https://github.com/nodejs/node/issues/61019 Refs: https://github.com/nodejs/node/pull/59873 Reviewed-By: Matteo Collina Reviewed-By: Gürgün Dayıoğlu --- lib/async_hooks.js | 3 +-- lib/internal/async_hooks.js | 4 ++-- lib/internal/process/task_queues.js | 4 ++-- src/env.cc | 5 ++--- .../test-async-hooks-enabledhooksexits.js | 18 ++++++++++++++++++ 5 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 test/parallel/test-async-hooks-enabledhooksexits.js diff --git a/lib/async_hooks.js b/lib/async_hooks.js index 685dc783c05134..b8a3e5a00d04a8 100644 --- a/lib/async_hooks.js +++ b/lib/async_hooks.js @@ -55,7 +55,6 @@ const { emitBefore, emitAfter, emitDestroy, - enabledHooksExist, initHooksExist, destroyHooksExist, } = internal_async_hooks; @@ -203,7 +202,7 @@ class AsyncResource { this[trigger_async_id_symbol] = triggerAsyncId; if (initHooksExist()) { - if (enabledHooksExist() && type.length === 0) { + if (type.length === 0) { throw new ERR_ASYNC_TYPE(type); } diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js index 46ee92a7bb39c4..c56a035282a963 100644 --- a/lib/internal/async_hooks.js +++ b/lib/internal/async_hooks.js @@ -480,7 +480,7 @@ function hasHooks(key) { } function enabledHooksExist() { - return hasHooks(kCheck); + return active_hooks.array.length > 0; } function initHooksExist() { @@ -562,7 +562,7 @@ function popAsyncContext(asyncId) { const stackLength = async_hook_fields[kStackLength]; if (stackLength === 0) return false; - if (enabledHooksExist() && async_id_fields[kExecutionAsyncId] !== asyncId) { + if (async_hook_fields[kCheck] > 0 && async_id_fields[kExecutionAsyncId] !== asyncId) { // Do the same thing as the native code (i.e. crash hard). return popAsyncContext_(asyncId); } diff --git a/lib/internal/process/task_queues.js b/lib/internal/process/task_queues.js index 518aea930789e0..84f406cd5e8f54 100644 --- a/lib/internal/process/task_queues.js +++ b/lib/internal/process/task_queues.js @@ -25,7 +25,7 @@ const { const { getDefaultTriggerAsyncId, - getHookArrays, + enabledHooksExist, newAsyncId, initHooksExist, emitInit, @@ -160,7 +160,7 @@ function queueMicrotask(callback) { validateFunction(callback, 'callback'); const contextFrame = AsyncContextFrame.current(); - if (contextFrame || getHookArrays()[0].length > 0) { + if (contextFrame || enabledHooksExist()) { const asyncResource = new AsyncResource( 'Microtask', defaultMicrotaskResourceOpts, diff --git a/src/env.cc b/src/env.cc index fdabe48dd7776c..1050e354fab253 100644 --- a/src/env.cc +++ b/src/env.cc @@ -124,8 +124,7 @@ void AsyncHooks::push_async_context(double async_id, double trigger_async_id, Local* resource) { CHECK_IMPLIES(resource != nullptr, !resource->IsEmpty()); - // Since async_hooks is experimental, do only perform the check - // when async_hooks is enabled. + if (fields_[kCheck] > 0) { CHECK_GE(async_id, -1); CHECK_GE(trigger_async_id, -1); @@ -1736,7 +1735,7 @@ AsyncHooks::AsyncHooks(Isolate* isolate, const SerializeInfo* info) clear_async_id_stack(); // Always perform async_hooks checks, not just when async_hooks is enabled. - // TODO(AndreasMadsen): Consider removing this for LTS releases. + // Can be disabled via CLI option --no-force-async-hooks-checks // See discussion in https://github.com/nodejs/node/pull/15454 // When removing this, do it by reverting the commit. Otherwise the test // and flag changes won't be included. diff --git a/test/parallel/test-async-hooks-enabledhooksexits.js b/test/parallel/test-async-hooks-enabledhooksexits.js new file mode 100644 index 00000000000000..11737d65485b3d --- /dev/null +++ b/test/parallel/test-async-hooks-enabledhooksexits.js @@ -0,0 +1,18 @@ +// Flags: --expose-internals +'use strict'; + +require('../common'); +const assert = require('assert'); +const { createHook } = require('async_hooks'); +const { enabledHooksExist } = require('internal/async_hooks'); + +assert.strictEqual(enabledHooksExist(), false); + +const ah = createHook({}); +assert.strictEqual(enabledHooksExist(), false); + +ah.enable(); +assert.strictEqual(enabledHooksExist(), true); + +ah.disable(); +assert.strictEqual(enabledHooksExist(), false); From 5505511dcb3bfdf6c3bde55a23486b67e07a535f Mon Sep 17 00:00:00 2001 From: Ryuhei Shima <65934663+islandryu@users.noreply.github.com> Date: Wed, 28 Jan 2026 13:17:08 +0900 Subject: [PATCH 021/267] build: enable -DV8_ENABLE_CHECKS flag Fixes: https://github.com/nodejs/node/issues/61301 PR-URL: https://github.com/nodejs/node/pull/61327 Reviewed-By: Chengzhong Wu --- configure.py | 2 +- doc/api/util.md | 2 +- lib/util.js | 3 ++- src/heap_utils.cc | 2 +- src/node_builtins.cc | 1 + src/node_util.cc | 2 +- src/util-inl.h | 8 +++++++- test/parallel/test-util-getcallsites.js | 15 +++++++-------- 8 files changed, 21 insertions(+), 14 deletions(-) diff --git a/configure.py b/configure.py index fe64e7d9753f53..b376d79c67ffc8 100755 --- a/configure.py +++ b/configure.py @@ -1809,7 +1809,7 @@ def configure_library(lib, output, pkgname=None): def configure_v8(o, configs): - set_configuration_variable(configs, 'v8_enable_v8_checks', release=1, debug=0) + set_configuration_variable(configs, 'v8_enable_v8_checks', release=0, debug=1) o['variables']['v8_enable_webassembly'] = 0 if options.v8_lite_mode else 1 o['variables']['v8_enable_javascript_promise_hooks'] = 1 diff --git a/doc/api/util.md b/doc/api/util.md index fa4a997a635965..ff224f175f27c5 100644 --- a/doc/api/util.md +++ b/doc/api/util.md @@ -580,7 +580,7 @@ changes: > Stability: 1.1 - Active development -* `frameCount` {number} Optional number of frames to capture as call site objects. +* `frameCount` {integer} Optional number of frames to capture as call site objects. **Default:** `10`. Allowable range is between 1 and 200. * `options` {Object} Optional * `sourceMap` {boolean} Reconstruct the original location in the stacktrace from the source-map. diff --git a/lib/util.js b/lib/util.js index ce9452e8715a68..ebd486addc7eb2 100644 --- a/lib/util.js +++ b/lib/util.js @@ -66,6 +66,7 @@ const { validateString, validateOneOf, validateObject, + validateInteger, } = require('internal/validators'); const { isReadableStream, @@ -452,7 +453,7 @@ function getCallSites(frameCount = 10, options) { } // Using kDefaultMaxCallStackSizeToCapture as reference - validateNumber(frameCount, 'frameCount', 1, 200); + validateInteger(frameCount, 'frameCount', 1, 200); // If options.sourceMaps is true or if sourceMaps are enabled but the option.sourceMaps is not set explicitly to false if (options.sourceMap === true || (getOptionValue('--enable-source-maps') && options.sourceMap !== false)) { return mapCallSite(binding.getCallSites(frameCount)); diff --git a/src/heap_utils.cc b/src/heap_utils.cc index 4708e57e2bb9bb..b64e43eeccb629 100644 --- a/src/heap_utils.cc +++ b/src/heap_utils.cc @@ -89,7 +89,7 @@ class JSGraph : public EmbedderGraph { } Node* V8Node(const Local& value) override { - return V8Node(value.As()); + return V8Node(v8::Local(value)); } Node* AddNode(std::unique_ptr node) override { diff --git a/src/node_builtins.cc b/src/node_builtins.cc index 9a5ef0bfa9cf7b..90f91484fdd5cd 100644 --- a/src/node_builtins.cc +++ b/src/node_builtins.cc @@ -8,6 +8,7 @@ #include "node_threadsafe_cow-inl.h" #include "simdutf.h" #include "util-inl.h" +#include "v8-value.h" namespace node { namespace builtins { diff --git a/src/node_util.cc b/src/node_util.cc index af42a3bd72c3f4..fbfda9c1551e07 100644 --- a/src/node_util.cc +++ b/src/node_util.cc @@ -258,7 +258,7 @@ static void GetCallSites(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(context); CHECK_EQ(args.Length(), 1); - CHECK(args[0]->IsNumber()); + CHECK(args[0]->IsUint32()); const uint32_t frames = args[0].As()->Value(); CHECK(frames >= 1 && frames <= 200); diff --git a/src/util-inl.h b/src/util-inl.h index aae5956742f195..c71c95656c0e76 100644 --- a/src/util-inl.h +++ b/src/util-inl.h @@ -22,6 +22,7 @@ #ifndef SRC_UTIL_INL_H_ #define SRC_UTIL_INL_H_ +#include "v8-isolate.h" #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include @@ -678,10 +679,15 @@ T FromV8Value(v8::Local value) { "Type is out of unsigned integer range"); if constexpr (!loose) { CHECK(value->IsUint32()); + return static_cast(value.As()->Value()); } else { CHECK(value->IsNumber()); + v8::Isolate* isolate = v8::Isolate::GetCurrent(); + v8::Local context = isolate->GetCurrentContext(); + v8::Maybe maybe = value->Uint32Value(context); + CHECK(!maybe.IsNothing()); + return static_cast(maybe.FromJust()); } - return static_cast(value.As()->Value()); } else if constexpr (std::is_integral_v && std::is_signed_v) { static_assert( std::numeric_limits::max() <= std::numeric_limits::max() && diff --git a/test/parallel/test-util-getcallsites.js b/test/parallel/test-util-getcallsites.js index 7cab4f6cac6397..a14fcb3482cdf9 100644 --- a/test/parallel/test-util-getcallsites.js +++ b/test/parallel/test-util-getcallsites.js @@ -31,15 +31,14 @@ const assert = require('node:assert'); ); } -// Guarantee dot-right numbers are ignored +// frameCount must be an integer { - const callSites = getCallSites(3.6); - assert.strictEqual(callSites.length, 3); -} - -{ - const callSites = getCallSites(3.4); - assert.strictEqual(callSites.length, 3); + assert.throws(() => { + const callSites = getCallSites(3.6); + assert.strictEqual(callSites.length, 3); + }, common.expectsError({ + code: 'ERR_OUT_OF_RANGE' + })); } { From 196268cb4cc0082effce89da7b06a6d42b85a08a Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Wed, 14 Jan 2026 14:55:26 -0500 Subject: [PATCH 022/267] deps: V8: cherry-pick c5ff7c4d6cde MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: [builtins] disallow ArrayBuffer transfer with a detach key This allows embedder to disallow `ArrayBuffer.prototype.transfer()` on an arraybuffer that is not detachable. This also fix the check on `ArrayBufferCopyAndDetach` step 8 of `ArrayBuffer.prototype.transfer`. Refs: https://github.com/nodejs/node/issues/61362 Refs: https://tc39.es/ecma262/#sec-arraybuffercopyanddetach Change-Id: I3c6e156a8fad007fd100218d8b16aed5c4e1db68 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7454288 Commit-Queue: Chengzhong Wu Reviewed-by: Olivier Flückiger Cr-Commit-Position: refs/heads/main@{#104697} Refs: https://github.com/v8/v8/commit/c5ff7c4d6cdea06d0319609875c41eaa77b70db0 PR-URL: https://github.com/nodejs/node/pull/61372 Fixes: https://github.com/nodejs/node/issues/61362 Reviewed-By: Anna Henningsen Reviewed-By: René --- common.gypi | 2 +- deps/v8/src/builtins/builtins-arraybuffer.cc | 3 +- .../array-buffer-transfer-detach-key.js | 22 ++++++++++ deps/v8/test/unittests/BUILD.gn | 1 + .../unittests/api/v8-array-buffer-unittest.cc | 40 +++++++++++++++++++ 5 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 deps/v8/test/mjsunit/array-buffer-transfer-detach-key.js create mode 100644 deps/v8/test/unittests/api/v8-array-buffer-unittest.cc diff --git a/common.gypi b/common.gypi index 5fced33791cdcb..21a7aa3e6ceef9 100644 --- a/common.gypi +++ b/common.gypi @@ -38,7 +38,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.45', + 'v8_embedder_string': '-node.46', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/src/builtins/builtins-arraybuffer.cc b/deps/v8/src/builtins/builtins-arraybuffer.cc index 1e23371b9e0c8e..45f1bf0ce66544 100644 --- a/deps/v8/src/builtins/builtins-arraybuffer.cc +++ b/deps/v8/src/builtins/builtins-arraybuffer.cc @@ -631,7 +631,8 @@ Tagged ArrayBufferTransfer(Isolate* isolate, // 8. If arrayBuffer.[[ArrayBufferDetachKey]] is not undefined, throw a // TypeError exception. - if (!array_buffer->is_detachable()) { + if (!IsUndefined(array_buffer->detach_key()) || + !array_buffer->is_detachable()) { THROW_NEW_ERROR_RETURN_FAILURE( isolate, NewTypeError(MessageTemplate::kDataCloneErrorNonDetachableArrayBuffer)); diff --git a/deps/v8/test/mjsunit/array-buffer-transfer-detach-key.js b/deps/v8/test/mjsunit/array-buffer-transfer-detach-key.js new file mode 100644 index 00000000000000..3c262fa88434c4 --- /dev/null +++ b/deps/v8/test/mjsunit/array-buffer-transfer-detach-key.js @@ -0,0 +1,22 @@ +// Copyright 2026 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// Flags: --allow-natives-syntax + +function TestTransferSucceeds() { + const ab = new ArrayBuffer(100); + %ArrayBufferSetDetachKey(ab, undefined); + ab.transfer(); + assertEquals(0, ab.byteLength); // Detached. +} + +function TestTransferFails() { + const ab = new ArrayBuffer(100); + %ArrayBufferSetDetachKey(ab, Symbol()); + assertThrows(() => { ab.transfer(); }, TypeError); + assertEquals(100, ab.byteLength); // Not detached. +} + +TestTransferSucceeds(); +TestTransferFails(); diff --git a/deps/v8/test/unittests/BUILD.gn b/deps/v8/test/unittests/BUILD.gn index 2b12033787bc79..4369550dda965c 100644 --- a/deps/v8/test/unittests/BUILD.gn +++ b/deps/v8/test/unittests/BUILD.gn @@ -264,6 +264,7 @@ v8_source_set("v8_unittests_sources") { "api/remote-object-unittest.cc", "api/resource-constraints-unittest.cc", "api/smi-tagging-unittest.cc", + "api/v8-array-buffer-unittest.cc", "api/v8-array-unittest.cc", "api/v8-maybe-unittest.cc", "api/v8-object-unittest.cc", diff --git a/deps/v8/test/unittests/api/v8-array-buffer-unittest.cc b/deps/v8/test/unittests/api/v8-array-buffer-unittest.cc new file mode 100644 index 00000000000000..4aaec1617f6bd4 --- /dev/null +++ b/deps/v8/test/unittests/api/v8-array-buffer-unittest.cc @@ -0,0 +1,40 @@ +// Copyright 2026 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "include/v8-array-buffer.h" + +#include "test/unittests/test-utils.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace v8 { +namespace { + +using ArrayBufferTest = TestWithContext; + +TEST_F(ArrayBufferTest, TransferWithDetachKey) { + Local ab = ArrayBuffer::New(isolate(), 1); + Local key = Symbol::New(isolate()); + ab->SetDetachKey(key); + Local global = context()->Global(); + Local property_name = + String::NewFromUtf8Literal(isolate(), "test_ab"); + global->Set(context(), property_name, ab).ToChecked(); + + { + TryCatch try_catch(isolate()); + CHECK(TryRunJS("globalThis.test_ab.transfer()").IsEmpty()); + } + + // Didnot transfer. + EXPECT_EQ(ab->ByteLength(), 1u); + + ab->SetDetachKey(Undefined(isolate())); + RunJS("globalThis.test_ab.transfer()"); + + // Transferred. + EXPECT_EQ(ab->ByteLength(), 0u); +} + +} // namespace +} // namespace v8 From 83dfd0be1d23726c4148fd78154669fe471c311e Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Tue, 13 Jan 2026 10:04:58 -0500 Subject: [PATCH 023/267] buffer: disallow ArrayBuffer transfer on pooled buffer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/61372 Fixes: https://github.com/nodejs/node/issues/61362 Refs: https://github.com/v8/v8/commit/c5ff7c4d6cdea06d0319609875c41eaa77b70db0 Reviewed-By: Anna Henningsen Reviewed-By: René --- doc/api/worker_threads.md | 2 ++ lib/buffer.js | 14 ++++++++++++++ lib/internal/buffer.js | 9 +++++++++ src/node_buffer.cc | 13 +++++++++++++ test/parallel/test-bootstrap-modules.js | 1 + test/parallel/test-buffer-pool-untransferable.js | 6 ++++++ 6 files changed, 45 insertions(+) diff --git a/doc/api/worker_threads.md b/doc/api/worker_threads.md index 67074791f09a09..dd945e61215b83 100644 --- a/doc/api/worker_threads.md +++ b/doc/api/worker_threads.md @@ -256,6 +256,8 @@ In particular, this makes sense for objects that can be cloned, rather than transferred, and which are used by other objects on the sending side. For example, Node.js marks the `ArrayBuffer`s it uses for its [`Buffer` pool][`Buffer.allocUnsafe()`] with this. +`ArrayBuffer.prototype.transfer()` is disallowed on such array buffer +instances. This operation cannot be undone. diff --git a/lib/buffer.js b/lib/buffer.js index c1b61fd17fb697..c43f2a2f4a36f9 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -145,6 +145,13 @@ const { utf8Write, } = require('internal/buffer'); +const { + namespace: { + addDeserializeCallback, + isBuildingSnapshot, + }, +} = require('internal/v8/startup_snapshot'); + FastBuffer.prototype.constructor = Buffer; Buffer.prototype = FastBuffer.prototype; addBufferPrototypeMethods(Buffer.prototype); @@ -175,6 +182,13 @@ function createPool() { poolOffset = 0; } createPool(); +if (isBuildingSnapshot()) { + addDeserializeCallback(() => { + // TODO(legendecas): ArrayBuffer.[[ArrayBufferDetachKey]] is not been serialized. + // Remove this callback when snapshot serialization supports it. + createPool(); + }); +} function alignPool() { // Ensure aligned slices diff --git a/lib/internal/buffer.js b/lib/internal/buffer.js index c010496587c19b..d23f5d0ab6abe1 100644 --- a/lib/internal/buffer.js +++ b/lib/internal/buffer.js @@ -6,6 +6,7 @@ const { Float64Array, MathFloor, Number, + Symbol, Uint8Array, } = primordials; @@ -15,6 +16,8 @@ const { ERR_OUT_OF_RANGE, } = require('internal/errors').codes; const { validateNumber } = require('internal/validators'); +const { isArrayBuffer } = require('util/types'); + const { asciiSlice, base64Slice, @@ -31,6 +34,7 @@ const { ucs2Write, utf8WriteStatic, createUnsafeArrayBuffer, + setDetachKey, } = internalBinding('buffer'); const { @@ -1068,12 +1072,17 @@ function addBufferPrototypeMethods(proto) { proto.utf8Write = function(string, offset, length) { return utf8Write(this, string, offset, length); }; } +const kDetachKey = Symbol('detach_key_for_untransferable_arraybuffer'); // This would better be placed in internal/worker/io.js, but that doesn't work // because Buffer needs this and that would introduce a cyclic dependency. function markAsUntransferable(obj) { if ((typeof obj !== 'object' && typeof obj !== 'function') || obj === null) return; // This object is a primitive and therefore already untransferable. obj[untransferable_object_private_symbol] = true; + + if (isArrayBuffer(obj)) { + setDetachKey(obj, kDetachKey); + } } // This simply checks if the object is marked as untransferable and doesn't diff --git a/src/node_buffer.cc b/src/node_buffer.cc index e1bee00825d140..d4a63cf610ca7f 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -1377,6 +1377,15 @@ static void Atob(const FunctionCallbackInfo& args) { args.GetReturnValue().Set(error_code); } +static void SetDetachKey(const FunctionCallbackInfo& args) { + CHECK_EQ(args.Length(), 2); + CHECK(args[0]->IsArrayBuffer()); + + Local ab = args[0].As(); + Local key = args[1]; + ab->SetDetachKey(key); +} + namespace { std::pair DecomposeBufferToParts(Local buffer) { @@ -1661,6 +1670,8 @@ void Initialize(Local target, "utf8WriteStatic", SlowWriteString, &fast_write_string_utf8); + + SetMethod(context, target, "setDetachKey", SetDetachKey); } } // anonymous namespace @@ -1715,6 +1726,8 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) { registry->Register(Atob); registry->Register(Btoa); + + registry->Register(SetDetachKey); } } // namespace Buffer diff --git a/test/parallel/test-bootstrap-modules.js b/test/parallel/test-bootstrap-modules.js index 05d7830a2ab1d2..ae96258e95d89d 100644 --- a/test/parallel/test-bootstrap-modules.js +++ b/test/parallel/test-bootstrap-modules.js @@ -51,6 +51,7 @@ expected.beforePreExec = new Set([ 'NativeModule events', 'Internal Binding buffer', 'Internal Binding string_decoder', + 'NativeModule util/types', 'NativeModule internal/buffer', 'NativeModule buffer', 'Internal Binding messaging', diff --git a/test/parallel/test-buffer-pool-untransferable.js b/test/parallel/test-buffer-pool-untransferable.js index 596bb6b6c91422..bf851625bf83e8 100644 --- a/test/parallel/test-buffer-pool-untransferable.js +++ b/test/parallel/test-buffer-pool-untransferable.js @@ -21,3 +21,9 @@ assert.throws(() => port1.postMessage(a, [ a.buffer ]), { // Verify that the pool ArrayBuffer has not actually been transferred: assert.strictEqual(a.buffer, b.buffer); assert.strictEqual(a.length, length); + +// Verify that ArrayBuffer.prototype.transfer() also throws. +assert.throws(() => a.buffer.transfer(), { + name: 'TypeError', +}); +assert.strictEqual(a.buffer, b.buffer); From c851e76f8ca682cdf672cd3449e9b80efa42bfb4 Mon Sep 17 00:00:00 2001 From: Amol Yadav Date: Mon, 2 Feb 2026 03:23:31 -0800 Subject: [PATCH 024/267] net: add `setTOS` and `getTOS` to `Socket` PR-URL: https://github.com/nodejs/node/pull/61503 Fixes: https://github.com/nodejs/node/issues/61489 Reviewed-By: Matteo Collina Reviewed-By: Robert Nagy Reviewed-By: Anna Henningsen --- doc/api/net.md | 43 ++++ lib/net.js | 68 ++++++ src/tcp_wrap.cc | 302 +++++++++++++++++++-------- src/tcp_wrap.h | 2 + test/parallel/test-net-socket-tos.js | 100 +++++++++ 5 files changed, 429 insertions(+), 86 deletions(-) create mode 100644 test/parallel/test-net-socket-tos.js diff --git a/doc/api/net.md b/doc/api/net.md index 56f6e3226f4311..406fa84e17dc71 100644 --- a/doc/api/net.md +++ b/doc/api/net.md @@ -743,6 +743,9 @@ it to interact with the client. + +* Returns: {integer} The current TOS value. + +Returns the current Type of Service (TOS) field for IPv4 packets or Traffic +Class for IPv6 packets for this socket. + +`setTypeOfService()` may be called before the socket is connected; the value +will be cached and applied when the socket establishes a connection. +`getTypeOfService()` will return the currently set value even before connection. + +On some platforms (e.g., Linux), certain TOS/ECN bits may be masked or ignored, +and behavior can differ between IPv4 and IPv6 or dual-stack sockets. Callers +should verify platform-specific semantics. + +### `socket.setTypeOfService(tos)` + + + +* `tos` {integer} The TOS value to set (0-255). +* Returns: {net.Socket} The socket itself. + +Sets the Type of Service (TOS) field for IPv4 packets or Traffic Class for IPv6 +Packets sent from this socket. This can be used to prioritize network traffic. + +`setTypeOfService()` may be called before the socket is connected; the value +will be cached and applied when the socket establishes a connection. +`getTypeOfService()` will return the currently set value even before connection. + +On some platforms (e.g., Linux), certain TOS/ECN bits may be masked or ignored, +and behavior can differ between IPv4 and IPv6 or dual-stack sockets. Callers +should verify platform-specific semantics. + ### `socket.timeout` -> Stability: 2 - Stable - +> Stability: 2 - Stable + Delivers a JSON-formatted diagnostic summary, written to a file. The report is intended for development, test, and production use, to capture diff --git a/doc/api/synopsis.md b/doc/api/synopsis.md index dda2c5285dc605..24bb35e08f8c93 100644 --- a/doc/api/synopsis.md +++ b/doc/api/synopsis.md @@ -1,11 +1,11 @@ # Usage and example -## Usage - +## Usage + `node [options] [V8 options] [script.js | -e "script" | - ] [arguments]` Please see the [Command-line options][] document for more information. diff --git a/test/doctool/test-doc-api-json.mjs b/test/doctool/test-doc-api-json.mjs index 4fc6e05ff898d8..ffe50075c7bc71 100644 --- a/test/doctool/test-doc-api-json.mjs +++ b/test/doctool/test-doc-api-json.mjs @@ -152,7 +152,8 @@ for await (const dirent of await fs.opendir(new URL('../../out/doc/api/', import 'n-api.md': ['introduced_in', 'stability', 'stabilityText', 'miscs'], 'packages.md': ['introduced_in', 'meta', 'miscs'], 'process.md': ['globals'], - 'report.md': ['introduced_in', 'stability', 'stabilityText', 'meta', 'miscs'], + 'report.md': ['introduced_in', 'meta', 'stability', 'stabilityText', 'miscs'], + 'synopsis.md': ['introduced_in', 'miscs'], }[dirent.name] ?? ['modules'])]); assert.partialDeepStrictEqual(allExpectedKeys, findAllKeys(json)); From e0220f0c35c4849030bbc0ac704327a864e7bc3c Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Tue, 10 Feb 2026 00:26:50 +0100 Subject: [PATCH 038/267] build: build with v8 gdbjit support on supported platform Build it with gdbjit support on supported platforms by default allows debugging JIT-compiled code in gdb when it's also enabled at run time (via --gdbjit). Simply building it in should not incur an overhead if it's not also enabled at run time. PR-URL: https://github.com/nodejs/node/pull/61010 Reviewed-By: Chengzhong Wu --- configure.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/configure.py b/configure.py index b376d79c67ffc8..53a045c626acb1 100755 --- a/configure.py +++ b/configure.py @@ -1814,7 +1814,16 @@ def configure_v8(o, configs): o['variables']['v8_enable_webassembly'] = 0 if options.v8_lite_mode else 1 o['variables']['v8_enable_javascript_promise_hooks'] = 1 o['variables']['v8_enable_lite_mode'] = 1 if options.v8_lite_mode else 0 - o['variables']['v8_enable_gdbjit'] = 1 if options.gdb else 0 + is_gdbjit_supported_arch = ( + 'x64' in o['variables']['target_arch'] or + 'ia32' in o['variables']['target_arch'] or + 'ppc64' in o['variables']['target_arch'] + ) + is_linux = flavor == 'linux' + if (options.gdb is not None): + o['variables']['v8_enable_gdbjit'] = 1 if options.gdb else 0 + else: + o['variables']['v8_enable_gdbjit'] = 1 if is_gdbjit_supported_arch and is_linux else 0 o['variables']['v8_optimized_debug'] = 0 if options.v8_non_optimized_debug else 1 o['variables']['dcheck_always_on'] = 1 if options.v8_with_dchecks else 0 o['variables']['v8_enable_object_print'] = 0 if options.v8_disable_object_print else 1 From 276a32fd10d5ee64922c771faec079223fa08ae0 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Mon, 9 Feb 2026 20:00:58 -0500 Subject: [PATCH 039/267] test: update WPT for url to efb889eb4c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/61728 Reviewed-By: Daeyeon Jeong Reviewed-By: Antoine du Hamel Reviewed-By: Filip Skokan Reviewed-By: Michaël Zasso Reviewed-By: Colin Ihrig Reviewed-By: Yagiz Nizipli Reviewed-By: Luigi Pinca --- test/fixtures/wpt/README.md | 2 +- test/fixtures/wpt/url/resources/percent-encoding.json | 7 +++++++ test/fixtures/wpt/versions.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md index 1a4ad92d752ef7..1130c0f56042be 100644 --- a/test/fixtures/wpt/README.md +++ b/test/fixtures/wpt/README.md @@ -28,7 +28,7 @@ Last update: - resource-timing: https://github.com/web-platform-tests/wpt/tree/22d38586d0/resource-timing - resources: https://github.com/web-platform-tests/wpt/tree/1d2c5fb36a/resources - streams: https://github.com/web-platform-tests/wpt/tree/bc9dcbbf1a/streams -- url: https://github.com/web-platform-tests/wpt/tree/e3c46fdf55/url +- url: https://github.com/web-platform-tests/wpt/tree/efb889eb4c/url - urlpattern: https://github.com/web-platform-tests/wpt/tree/a2e15ad405/urlpattern - user-timing: https://github.com/web-platform-tests/wpt/tree/5ae85bf826/user-timing - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/cde25e7e3c/wasm/jsapi diff --git a/test/fixtures/wpt/url/resources/percent-encoding.json b/test/fixtures/wpt/url/resources/percent-encoding.json index eccd1db62fe601..cba59e4f6cd549 100644 --- a/test/fixtures/wpt/url/resources/percent-encoding.json +++ b/test/fixtures/wpt/url/resources/percent-encoding.json @@ -39,6 +39,13 @@ "utf-8": "%E2%88%92" } }, + { + "input": "\u00A2", + "output": { + "iso-8859-2": "%26%23162%3B", + "utf-8": "%C2%A2" + } + }, { "input": "á|", "output": { diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json index 81a551eb7414ff..4561a4252f2962 100644 --- a/test/fixtures/wpt/versions.json +++ b/test/fixtures/wpt/versions.json @@ -72,7 +72,7 @@ "path": "streams" }, "url": { - "commit": "e3c46fdf5587369127de2863a7e38295f4e07f16", + "commit": "efb889eb4c9ca0b4e3ebd8ab308646b7483a8f54", "path": "url" }, "urlpattern": { From 84c7a23223b3c1ac1f74ef8631477b845809131d Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Mon, 9 Feb 2026 20:01:10 -0500 Subject: [PATCH 040/267] test: update WPT for WebCryptoAPI to 7cbe7e8ed9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/61729 Reviewed-By: Filip Skokan Reviewed-By: Michaël Zasso Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca --- test/fixtures/wpt/README.md | 2 +- .../import_export/ec_importKey.https.any.js | 45 +++++++++++++++++++ test/fixtures/wpt/versions.json | 2 +- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md index 1130c0f56042be..8cb1e30007ac65 100644 --- a/test/fixtures/wpt/README.md +++ b/test/fixtures/wpt/README.md @@ -34,7 +34,7 @@ Last update: - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/cde25e7e3c/wasm/jsapi - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi - web-locks: https://github.com/web-platform-tests/wpt/tree/10a122a6bc/web-locks -- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/1e4933113d/WebCryptoAPI +- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/7cbe7e8ed9/WebCryptoAPI - webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/2f96fa1996/webidl/ecmascript-binding/es-exceptions - webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/6495c91853/webmessaging/broadcastchannel - webstorage: https://github.com/web-platform-tests/wpt/tree/1d2c5fb36a/webstorage diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/ec_importKey.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/ec_importKey.https.any.js index a01bfbb0ef2e18..6a5cc8d4724b57 100644 --- a/test/fixtures/wpt/WebCryptoAPI/import_export/ec_importKey.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/import_export/ec_importKey.https.any.js @@ -16,6 +16,7 @@ raw: new Uint8Array([4, 1, 86, 244, 121, 248, 223, 30, 32, 167, 255, 192, 76, 228, 32, 195, 225, 84, 174, 37, 25, 150, 190, 228, 47, 3, 75, 132, 212, 27, 116, 63, 52, 228, 95, 49, 27, 129, 58, 156, 222, 200, 205, 165, 155, 187, 189, 49, 212, 96, 179, 41, 37, 33, 231, 193, 183, 34, 229, 102, 124, 3, 219, 47, 174, 117, 63, 1, 80, 23, 54, 207, 226, 71, 57, 67, 32, 216, 228, 175, 194, 253, 57, 181, 169, 51, 16, 97, 184, 30, 34, 65, 40, 43, 158, 23, 137, 24, 34, 181, 183, 158, 5, 47, 69, 151, 181, 150, 67, 253, 57, 55, 156, 81, 189, 81, 37, 196, 244, 139, 195, 240, 37, 206, 60, 211, 105, 83, 40, 108, 203, 56, 251]), raw_compressed: new Uint8Array([3, 1, 86, 244, 121, 248, 223, 30, 32, 167, 255, 192, 76, 228, 32, 195, 225, 84, 174, 37, 25, 150, 190, 228, 47, 3, 75, 132, 212, 27, 116, 63, 52, 228, 95, 49, 27, 129, 58, 156, 222, 200, 205, 165, 155, 187, 189, 49, 212, 96, 179, 41, 37, 33, 231, 193, 183, 34, 229, 102, 124, 3, 219, 47, 174, 117, 63]), pkcs8: new Uint8Array([48, 129, 238, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 35, 4, 129, 214, 48, 129, 211, 2, 1, 1, 4, 66, 0, 244, 8, 117, 131, 104, 186, 147, 15, 48, 247, 106, 224, 84, 254, 92, 210, 206, 127, 218, 44, 159, 118, 166, 212, 54, 207, 117, 214, 108, 68, 11, 254, 99, 49, 199, 193, 114, 161, 36, 120, 25, 60, 130, 81, 72, 123, 201, 18, 99, 250, 80, 33, 127, 133, 255, 99, 111, 89, 205, 84, 110, 58, 180, 131, 180, 161, 129, 137, 3, 129, 134, 0, 4, 1, 86, 244, 121, 248, 223, 30, 32, 167, 255, 192, 76, 228, 32, 195, 225, 84, 174, 37, 25, 150, 190, 228, 47, 3, 75, 132, 212, 27, 116, 63, 52, 228, 95, 49, 27, 129, 58, 156, 222, 200, 205, 165, 155, 187, 189, 49, 212, 96, 179, 41, 37, 33, 231, 193, 183, 34, 229, 102, 124, 3, 219, 47, 174, 117, 63, 1, 80, 23, 54, 207, 226, 71, 57, 67, 32, 216, 228, 175, 194, 253, 57, 181, 169, 51, 16, 97, 184, 30, 34, 65, 40, 43, 158, 23, 137, 24, 34, 181, 183, 158, 5, 47, 69, 151, 181, 150, 67, 253, 57, 55, 156, 81, 189, 81, 37, 196, 244, 139, 195, 240, 37, 206, 60, 211, 105, 83, 40, 108, 203, 56, 251]), + pkcs8_private_only: new Uint8Array([48, 96, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 35, 4, 73, 48, 71, 2, 1, 1, 4, 66, 0, 244, 8, 117, 131, 104, 186, 147, 15, 48, 247, 106, 224, 84, 254, 92, 210, 206, 127, 218, 44, 159, 118, 166, 212, 54, 207, 117, 214, 108, 68, 11, 254, 99, 49, 199, 193, 114, 161, 36, 120, 25, 60, 130, 81, 72, 123, 201, 18, 99, 250, 80, 33, 127, 133, 255, 99, 111, 89, 205, 84, 110, 58, 180, 131, 180]), jwk: { kty: "EC", crv: "P-521", @@ -31,6 +32,7 @@ raw: new Uint8Array([4, 210, 16, 176, 166, 249, 217, 240, 18, 134, 128, 88, 180, 63, 164, 244, 113, 1, 133, 67, 187, 160, 12, 146, 80, 223, 146, 87, 194, 172, 174, 93, 209, 206, 3, 117, 82, 212, 129, 69, 12, 227, 155, 77, 16, 149, 112, 27, 23, 91, 250, 179, 75, 142, 108, 9, 158, 24, 241, 193, 152, 53, 131, 97, 232]), raw_compressed: new Uint8Array([2, 210, 16, 176, 166, 249, 217, 240, 18, 134, 128, 88, 180, 63, 164, 244, 113, 1, 133, 67, 187, 160, 12, 146, 80, 223, 146, 87, 194, 172, 174, 93, 209]), pkcs8: new Uint8Array([48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 19, 211, 58, 45, 90, 191, 156, 249, 235, 178, 31, 248, 96, 212, 174, 254, 110, 86, 231, 119, 144, 244, 222, 233, 180, 8, 132, 235, 211, 53, 68, 234, 161, 68, 3, 66, 0, 4, 210, 16, 176, 166, 249, 217, 240, 18, 134, 128, 88, 180, 63, 164, 244, 113, 1, 133, 67, 187, 160, 12, 146, 80, 223, 146, 87, 194, 172, 174, 93, 209, 206, 3, 117, 82, 212, 129, 69, 12, 227, 155, 77, 16, 149, 112, 27, 23, 91, 250, 179, 75, 142, 108, 9, 158, 24, 241, 193, 152, 53, 131, 97, 232]), + pkcs8_private_only: new Uint8Array([48, 65, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 4, 39, 48, 37, 2, 1, 1, 4, 32, 19, 211, 58, 45, 90, 191, 156, 249, 235, 178, 31, 248, 96, 212, 174, 254, 110, 86, 231, 119, 144, 244, 222, 233, 180, 8, 132, 235, 211, 53, 68, 234]), jwk: { kty: "EC", crv: "P-256", @@ -46,6 +48,7 @@ raw: new Uint8Array([4, 33, 156, 20, 214, 102, 23, 179, 110, 198, 216, 133, 107, 56, 91, 115, 167, 77, 52, 79, 216, 174, 117, 239, 4, 100, 53, 221, 165, 78, 59, 68, 189, 95, 189, 235, 209, 208, 141, 214, 158, 45, 125, 193, 220, 33, 140, 180, 53, 189, 40, 19, 140, 199, 120, 51, 122, 132, 47, 107, 214, 27, 36, 14, 116, 36, 159, 36, 102, 124, 42, 88, 16, 167, 107, 252, 40, 224, 51, 95, 136, 166, 80, 29, 236, 1, 151, 109, 168, 90, 251, 0, 134, 156, 182, 172, 232]), raw_compressed: new Uint8Array([2, 33, 156, 20, 214, 102, 23, 179, 110, 198, 216, 133, 107, 56, 91, 115, 167, 77, 52, 79, 216, 174, 117, 239, 4, 100, 53, 221, 165, 78, 59, 68, 189, 95, 189, 235, 209, 208, 141, 214, 158, 45, 125, 193, 220, 33, 140, 180, 53]), pkcs8: new Uint8Array([48, 129, 182, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 4, 129, 158, 48, 129, 155, 2, 1, 1, 4, 48, 69, 55, 181, 153, 7, 132, 211, 194, 210, 46, 150, 168, 249, 47, 161, 170, 73, 46, 232, 115, 229, 118, 164, 21, 130, 225, 68, 24, 60, 152, 136, 209, 14, 107, 158, 180, 206, 212, 178, 204, 64, 18, 228, 172, 94, 168, 64, 115, 161, 100, 3, 98, 0, 4, 33, 156, 20, 214, 102, 23, 179, 110, 198, 216, 133, 107, 56, 91, 115, 167, 77, 52, 79, 216, 174, 117, 239, 4, 100, 53, 221, 165, 78, 59, 68, 189, 95, 189, 235, 209, 208, 141, 214, 158, 45, 125, 193, 220, 33, 140, 180, 53, 189, 40, 19, 140, 199, 120, 51, 122, 132, 47, 107, 214, 27, 36, 14, 116, 36, 159, 36, 102, 124, 42, 88, 16, 167, 107, 252, 40, 224, 51, 95, 136, 166, 80, 29, 236, 1, 151, 109, 168, 90, 251, 0, 134, 156, 182, 172, 232]), + pkcs8_private_only: new Uint8Array([48, 78, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 4, 55, 48, 53, 2, 1, 1, 4, 48, 69, 55, 181, 153, 7, 132, 211, 194, 210, 46, 150, 168, 249, 47, 161, 170, 73, 46, 232, 115, 229, 118, 164, 21, 130, 225, 68, 24, 60, 152, 136, 209, 14, 107, 158, 180, 206, 212, 178, 204, 64, 18, 228, 172, 94, 168, 64, 115]), jwk: { kty: "EC", crv: "P-384", @@ -100,6 +103,14 @@ testEmptyUsages(format, algorithm, data, curve, extractable); }); }); + + { + var algorithm = {name: vector.name, namedCurve: curve}; + var data = keyData[curve]; + allValidUsages(vector.privateUsages).forEach(function(usages) { + testPkcs8PrivateOnly(algorithm, data, curve, usages); + }); + } }); }); @@ -171,6 +182,40 @@ }, "ECDH any JWK alg: " + keySize.toString() + " bits " + parameterString(format, false, keyData, algorithm, extractable, usages)); } + // Test importKey with pkcs8 without public key + // Should succeed in import, re-export as pkcs8, and export as jwk + function testPkcs8PrivateOnly(algorithm, data, keySize, usages) { + const format = "pkcs8"; + const keyData = data.pkcs8_private_only; + promise_test(function(test) { + return subtle.importKey(format, keyData, algorithm, true, usages). + then(function(key) { + assert_equals(key.constructor, CryptoKey, "Imported a CryptoKey object"); + assert_goodCryptoKey(key, algorithm, true, usages, 'private'); + + // Test re-export as pkcs8 + return subtle.exportKey(format, key). + then(function(result) { + assert_true(result instanceof ArrayBuffer, "Re-exported pkcs8 is an ArrayBuffer"); + const equal = equalBuffers(result, keyData.buffer) || equalBuffers(result, data.pkcs8.buffer); + assert_true(equal, "Round trip works"); + // Test export as jwk + return subtle.exportKey('jwk', key); + }).then(function(jwkResult) { + assert_equals(jwkResult.kty, "EC", "Exported JWK has correct kty"); + assert_equals(jwkResult.crv, algorithm.namedCurve, "Exported JWK has correct crv"); + assert_true('x' in jwkResult, "Exported JWK has x"); + assert_true('y' in jwkResult, "Exported JWK has y"); + assert_true('d' in jwkResult, "Exported JWK has d"); + }, function(err) { + assert_unreached("Export threw an unexpected error: " + err.toString()); + }); + }, function(err) { + assert_unreached("Import threw an unexpected error: " + err.toString()); + }); + }, "PKCS8 private-only: " + keySize.toString() + " bits " + parameterString(format, false, keyData, algorithm, true, usages)); + } + // Helper methods follow: diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json index 4561a4252f2962..2f02e8cde230dd 100644 --- a/test/fixtures/wpt/versions.json +++ b/test/fixtures/wpt/versions.json @@ -96,7 +96,7 @@ "path": "web-locks" }, "WebCryptoAPI": { - "commit": "1e4933113d2028e092d07a9e865db8f606b21026", + "commit": "7cbe7e8ed962eac692ba4ad2e6ce3b9daafb65c0", "path": "WebCryptoAPI" }, "webidl/ecmascript-binding/es-exceptions": { From b3387b07b110ca409007ec0bcd684cb9ba37a404 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Mon, 9 Feb 2026 20:42:28 -0500 Subject: [PATCH 041/267] deps: update googletest to 5a9c3f9e8d9b90bbbe8feb32902146cb8f7c1757 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/61731 Reviewed-By: Antoine du Hamel Reviewed-By: Michaël Zasso Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca --- deps/googletest/include/gtest/internal/gtest-port.h | 4 ++-- deps/googletest/src/gtest-port.cc | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/deps/googletest/include/gtest/internal/gtest-port.h b/deps/googletest/include/gtest/internal/gtest-port.h index fa11a391fe5c54..3ea95ba5560714 100644 --- a/deps/googletest/include/gtest/internal/gtest-port.h +++ b/deps/googletest/include/gtest/internal/gtest-port.h @@ -1515,13 +1515,13 @@ class [[nodiscard]] ThreadWithParam : public ThreadWithParamBase { ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start) : ThreadWithParamBase(new RunnableImpl(func, param), thread_can_start) {} - ~ThreadWithParam() override {} + ~ThreadWithParam() override = default; private: class RunnableImpl : public Runnable { public: RunnableImpl(UserThreadFunc* func, T param) : func_(func), param_(param) {} - ~RunnableImpl() override {} + ~RunnableImpl() override = default; void Run() override { func_(param_); } private: diff --git a/deps/googletest/src/gtest-port.cc b/deps/googletest/src/gtest-port.cc index d50d07cdb090d4..f8ecb37c48d943 100644 --- a/deps/googletest/src/gtest-port.cc +++ b/deps/googletest/src/gtest-port.cc @@ -89,6 +89,7 @@ #include "gtest/gtest-message.h" #include "gtest/gtest-spi.h" +#include "gtest/gtest.h" #include "gtest/internal/gtest-internal.h" #include "gtest/internal/gtest-string.h" #include "src/gtest-internal-inl.h" @@ -729,7 +730,7 @@ void RE::Init(const char* regex) { char* const full_pattern = new char[full_regex_len]; snprintf(full_pattern, full_regex_len, "^(%s)$", regex); - is_valid_ = regcomp(&full_regex_, full_pattern, reg_flags) == 0; + int error = regcomp(&full_regex_, full_pattern, reg_flags); // We want to call regcomp(&partial_regex_, ...) even if the // previous expression returns false. Otherwise partial_regex_ may // not be properly initialized can may cause trouble when it's @@ -738,13 +739,13 @@ void RE::Init(const char* regex) { // Some implementation of POSIX regex (e.g. on at least some // versions of Cygwin) doesn't accept the empty string as a valid // regex. We change it to an equivalent form "()" to be safe. - if (is_valid_) { + if (!error) { const char* const partial_regex = (*regex == '\0') ? "()" : regex; - is_valid_ = regcomp(&partial_regex_, partial_regex, reg_flags) == 0; + error = regcomp(&partial_regex_, partial_regex, reg_flags); } - EXPECT_TRUE(is_valid_) - << "Regular expression \"" << regex - << "\" is not a valid POSIX Extended regular expression."; + is_valid_ = error == 0; + EXPECT_EQ(error, 0) << "Regular expression \"" << regex + << "\" is not a valid POSIX Extended regular expression."; delete[] full_pattern; } From 4ff01b5c1029c7bdcc70f511b117598ed9c63bf4 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Tue, 10 Feb 2026 02:15:36 -0500 Subject: [PATCH 042/267] doc: fix spacing in process message event MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/61756 Reviewed-By: René Reviewed-By: Daeyeon Jeong Reviewed-By: Luigi Pinca --- doc/api/process.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/process.md b/doc/api/process.md index 5d671421ef3241..37a3650593bcbe 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -158,7 +158,7 @@ process.on('exit', (code) => { added: v0.5.10 --> -* `message` { Object | boolean | number | string | null } a parsed JSON object +* `message` {Object|boolean|number|string|null} a parsed JSON object or a serializable primitive value. * `sendHandle` {net.Server|net.Socket} a [`net.Server`][] or [`net.Socket`][] object, or undefined. From 49254e3dc0e4896a6868ec597a29b343344b0b45 Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 10 Feb 2026 05:08:47 -0600 Subject: [PATCH 043/267] doc: fix dropdown menu being obscured at <600px due to stacking context PR-URL: https://github.com/nodejs/node/pull/61735 Fixes: https://github.com/nodejs/node/issues/59282 Reviewed-By: Aviv Keller Reviewed-By: Claudio Wunder Reviewed-By: Luigi Pinca --- doc/api_assets/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/api_assets/style.css b/doc/api_assets/style.css index d314f3d990631b..2adbd77459bb0f 100644 --- a/doc/api_assets/style.css +++ b/doc/api_assets/style.css @@ -240,6 +240,7 @@ li.picker-header a span { max-width: 75vw; max-height: min(600px, 60vh); overflow-y: auto; + z-index: 10; } .picker > ul, .picker > ol { From e558b26e7f3c5e93d7332b8a463077505a19f516 Mon Sep 17 00:00:00 2001 From: Lu Yahan Date: Tue, 10 Feb 2026 22:50:13 +0800 Subject: [PATCH 044/267] doc: add riscv64 info into platform list PR-URL: https://github.com/nodejs/node/pull/42251 Reviewed-By: Stewart X Addison --- BUILDING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/BUILDING.md b/BUILDING.md index 88decd2e0f784b..effb206c104ccc 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -115,6 +115,7 @@ platforms. This is true regardless of entries in the table below. | GNU/Linux | ppc64le >=power8 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 2 | e.g. Ubuntu 20.04, RHEL 8 | | GNU/Linux | s390x | kernel >= 4.18[^1], glibc >= 2.28 | Tier 2 | e.g. RHEL 8 | | GNU/Linux | loong64 | kernel >= 5.19, glibc >= 2.36 | Experimental | | +| GNU/Linux | riscv64 | kernel >= 5.19, glibc >= 2.36 | Experimental | | | Windows | x64 | >= Windows 10/Server 2016 | Tier 1 | [^2],[^3] | | Windows | arm64 | >= Windows 10 | Tier 2 | | | macOS | x64 | >= 13.5 | Tier 1 | For notes about compilation see [^4] | From 0312db948d6236ac0c54235f07b93f0b0d2876e1 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 10 Feb 2026 23:05:56 +0100 Subject: [PATCH 045/267] doc: fix methods being documented as properties in `process.md` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/61765 Reviewed-By: René Reviewed-By: Luigi Pinca --- doc/api/process.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/api/process.md b/doc/api/process.md index 37a3650593bcbe..100ff996d82ff1 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -994,7 +994,7 @@ changes: description: Change stability index for this feature from Experimental to Stable. --> -* Type: {number} +* Returns: {number} Gets the amount of free memory that is still available to the process (in bytes). @@ -1166,7 +1166,7 @@ changes: description: Aligned return value with `uv_get_constrained_memory`. --> -* Type: {number} +* Returns: {number} Gets the amount of memory available to the process (in bytes) based on limits imposed by the OS. If there is no such constraint, or the constraint From 6834ca13bb78a4e00d276a836cb471d6fdf43b84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9?= Date: Wed, 11 Feb 2026 02:15:43 +0000 Subject: [PATCH 046/267] stream: rename `Duplex.toWeb()` type option to `readableType` PR-URL: https://github.com/nodejs/node/pull/61632 Refs: https://github.com/nodejs/node/pull/58664 Reviewed-By: James M Snell Reviewed-By: Matteo Collina Reviewed-By: Mattias Buelens --- doc/api/deprecations.md | 16 ++++++++++++++++ doc/api/stream.md | 13 ++++++++++--- lib/internal/webstreams/adapters.js | 14 ++++++++++---- test/parallel/test-stream-duplex.js | 6 +++++- 4 files changed, 41 insertions(+), 8 deletions(-) diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index 8a0a1f93242ea6..9423b2147896d6 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -4320,6 +4320,21 @@ import { opendir } from 'node:fs/promises'; } ``` +### DEP0201: Passing `options.type` to `Duplex.toWeb()` + + + +Type: Documentation-only + +Passing the `type` option to [`Duplex.toWeb()`][] is deprecated. To specify the +type of the readable half of the constructed readable-writable pair, use the +`readableType` option instead. + [DEP0142]: #dep0142-repl_builtinlibs [NIST SP 800-38D]: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf [RFC 6066]: https://tools.ietf.org/html/rfc6066#section-3 @@ -4338,6 +4353,7 @@ import { opendir } from 'node:fs/promises'; [`Buffer.isBuffer()`]: buffer.md#static-method-bufferisbufferobj [`Cipheriv`]: crypto.md#class-cipheriv [`Decipheriv`]: crypto.md#class-decipheriv +[`Duplex.toWeb()`]: stream.md#streamduplextowebstreamduplex-options [`Error.isError`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/isError [`REPLServer.clearBufferedCommand()`]: repl.md#replserverclearbufferedcommand [`ReadStream.open()`]: fs.md#class-fsreadstream diff --git a/doc/api/stream.md b/doc/api/stream.md index 5ae3ed60da1f00..3d3b293ab7bd07 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -3203,7 +3203,8 @@ changes: If no value is provided, the size will be `1` for all the chunks. * `chunk` {any} * Returns: {number} - * `type` {string} Must be 'bytes' or undefined. + * `type` {string} Specifies the type of the created `ReadableStream`. Must be + `'bytes'` or undefined. * Returns: {ReadableStream} ### `stream.Writable.fromWeb(writableStream[, options])` @@ -3376,9 +3377,13 @@ duplex.once('readable', () => console.log('readable', duplex.read())); + + + + + + + diff --git a/test/fixtures/wpt/FileAPI/BlobURL/cross-partition-self-fetch.https.html b/test/fixtures/wpt/FileAPI/BlobURL/cross-partition-self-fetch.https.html new file mode 100644 index 00000000000000..cbff2fa18fa15d --- /dev/null +++ b/test/fixtures/wpt/FileAPI/BlobURL/cross-partition-self-fetch.https.html @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/fixtures/wpt/FileAPI/BlobURL/cross-partition-worker-creation.https.html b/test/fixtures/wpt/FileAPI/BlobURL/cross-partition-worker-creation.https.html new file mode 100644 index 00000000000000..e8d0bad4c97580 --- /dev/null +++ b/test/fixtures/wpt/FileAPI/BlobURL/cross-partition-worker-creation.https.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/fixtures/wpt/FileAPI/BlobURL/cross-partition.https.html b/test/fixtures/wpt/FileAPI/BlobURL/cross-partition.https.html new file mode 100644 index 00000000000000..cb66ebe77093bc --- /dev/null +++ b/test/fixtures/wpt/FileAPI/BlobURL/cross-partition.https.html @@ -0,0 +1,482 @@ + + + + + + + + + + + + + + + + diff --git a/test/fixtures/wpt/FileAPI/BlobURL/cross-partition.tentative.https.html b/test/fixtures/wpt/FileAPI/BlobURL/cross-partition.tentative.https.html deleted file mode 100644 index c75ce07d054eb7..00000000000000 --- a/test/fixtures/wpt/FileAPI/BlobURL/cross-partition.tentative.https.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/test/fixtures/wpt/FileAPI/BlobURL/resources/common.js b/test/fixtures/wpt/FileAPI/BlobURL/resources/common.js new file mode 100644 index 00000000000000..60a97d6a5ea5fe --- /dev/null +++ b/test/fixtures/wpt/FileAPI/BlobURL/resources/common.js @@ -0,0 +1,33 @@ +const add_iframe_js = (iframe_origin, response_queue_uuid) => ` + const importScript = ${importScript}; + await importScript("/html/cross-origin-embedder-policy/credentialless" + + "/resources/common.js"); + await importScript("/html/anonymous-iframe/resources/common.js"); + await importScript("/common/utils.js"); + + // dispatcher.js has already been loaded by the popup this is running in. + await send("${response_queue_uuid}", newIframe("${iframe_origin}")); +`; + +async function create_test_iframes(t, response_queue_uuid) { + const same_site_origin = get_host_info().HTTPS_ORIGIN; + const cross_site_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN; + + assert_equals("https://" + window.location.host, same_site_origin, + "this test assumes that the page's window.location.host corresponds to " + + "get_host_info().HTTPS_ORIGIN"); + + // Create a same-origin iframe in a cross-site popup. + const not_same_site_popup_uuid = newPopup(t, cross_site_origin); + await send(not_same_site_popup_uuid, + add_iframe_js(same_site_origin, response_queue_uuid)); + const cross_site_iframe_uuid = await receive(response_queue_uuid); + + // Create a same-origin iframe in a same-site popup. + const same_origin_popup_uuid = newPopup(t, same_site_origin); + await send(same_origin_popup_uuid, + add_iframe_js(same_site_origin, response_queue_uuid)); + const same_site_iframe_uuid = await receive(response_queue_uuid); + + return [cross_site_iframe_uuid, same_site_iframe_uuid]; +} \ No newline at end of file diff --git a/test/fixtures/wpt/FileAPI/BlobURL/support/file_test2.txt b/test/fixtures/wpt/FileAPI/BlobURL/support/file_test2.txt deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/test/fixtures/wpt/FileAPI/WEB_FEATURES.yml b/test/fixtures/wpt/FileAPI/WEB_FEATURES.yml new file mode 100644 index 00000000000000..8d279ceaaeab21 --- /dev/null +++ b/test/fixtures/wpt/FileAPI/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: file + files: "**" diff --git a/test/fixtures/wpt/FileAPI/blob/Blob-constructor.any.js b/test/fixtures/wpt/FileAPI/blob/Blob-constructor.any.js index 6dc44e8e156cce..03155b99cb20ea 100644 --- a/test/fixtures/wpt/FileAPI/blob/Blob-constructor.any.js +++ b/test/fixtures/wpt/FileAPI/blob/Blob-constructor.any.js @@ -104,6 +104,59 @@ test_blob(function() { desc: "A Uint8Array object should be treated as a sequence for the blobParts argument." }); +test(function() { + assert_throws_js(TypeError, function() { new Blob(true) }); +}, "blobParts not an object: boolean"); + +test(function() { + Boolean.prototype[Symbol.iterator] = () => ["FAIL"][Symbol.iterator]() + this.add_cleanup(function() { delete Boolean.prototype[Symbol.iterator] }); + assert_throws_js(TypeError, function() { new Blob(true) }); +}, "blobParts not an object: boolean with Boolean.prototype[Symbol.iterator]"); + +test(function() { + assert_throws_js(TypeError, function() { new Blob("fail") }); +}, "blobParts not an object: string"); + +test(function() { + const original = String.prototype[Symbol.iterator]; + String.prototype[Symbol.iterator] = () => ["FAIL"][Symbol.iterator]() + this.add_cleanup(function() { String.prototype[Symbol.iterator] = original }); + assert_throws_js(TypeError, function() { new Blob("fail") }); +}, "blobParts not an object: string with String.prototype[Symbol.iterator]"); + +test(function() { + assert_throws_js(TypeError, function() { new Blob(7) }); +}, "blobParts not an object: number"); + +test(function() { + Number.prototype[Symbol.iterator] = () => ["FAIL"][Symbol.iterator]() + this.add_cleanup(function() { delete Number.prototype[Symbol.iterator] }); + assert_throws_js(TypeError, function() { new Blob(7) }); +}, "blobParts not an object: number with Number.prototype[Symbol.iterator]"); + +test(function() { + assert_throws_js(TypeError, function() { new Blob(7n) }); +}, "blobParts not an object: BigInt"); + +test(function() { + BigInt.prototype[Symbol.iterator] = () => ["FAIL"][Symbol.iterator]() + this.add_cleanup(function() { delete BigInt.prototype[Symbol.iterator] }); + assert_throws_js(TypeError, function() { new Blob(7n) }); +}, "blobParts not an object: BigInt with BigInt.prototype[Symbol.iterator]"); + +test(function() { + const symbol = Symbol(); + assert_throws_js(TypeError, function() { new Blob(symbol) }); +}, "blobParts not an object: Symbol"); + +test(function() { + const symbol = Symbol(); + Symbol.prototype[Symbol.iterator] = () => ["FAIL"][Symbol.iterator]() + this.add_cleanup(function() { delete Symbol.prototype[Symbol.iterator] }); + assert_throws_js(TypeError, function() { new Blob(symbol) }); +}, "blobParts not an object: Symbol with Symbol.prototype[Symbol.iterator]"); + var test_error = { name: "test", message: "test error", @@ -290,14 +343,22 @@ test_blob(function() { new Int16Array([0x4150, 0x5353]), new Uint32Array([0x53534150]), new Int32Array([0x53534150]), - new Float16Array([2.65625, 58.59375]), new Float32Array([0xD341500000]) ]); }, { - expected: "PASSPASSPASSPASSPASSPASSPASSPASS", + expected: "PASSPASSPASSPASSPASSPASSPASS", type: "", desc: "Passing typed arrays as elements of the blobParts array should work." }); +test_blob(function() { + return new Blob([ + new Float16Array([2.65625, 58.59375]) + ]); +}, { + expected: "PASS", + type: "", + desc: "Passing a Float16Array as element of the blobParts array should work." +}); test_blob(function() { return new Blob([ // 0x535 3415053534150 diff --git a/test/fixtures/wpt/FileAPI/blob/Blob-newobject.any.js b/test/fixtures/wpt/FileAPI/blob/Blob-newobject.any.js new file mode 100644 index 00000000000000..e036c3a9a743e6 --- /dev/null +++ b/test/fixtures/wpt/FileAPI/blob/Blob-newobject.any.js @@ -0,0 +1,12 @@ +// META: title=Blob methods return new objects ([NewObject]) +// META: global=window,worker +'use strict'; + +['stream', 'text', 'arrayBuffer', 'bytes'].forEach(method => { + test(() => { + const blob = new Blob(['PASS']); + const a = blob[method](); + const b = blob[method](); + assert_not_equals(a, b, `Blob.${method}() must return a new object`); + }, `Blob.${method}() returns [NewObject]`); +}); diff --git a/test/fixtures/wpt/FileAPI/blob/Blob-slice.any.js b/test/fixtures/wpt/FileAPI/blob/Blob-slice.any.js index 1f85d44d269191..bedc8d737302a0 100644 --- a/test/fixtures/wpt/FileAPI/blob/Blob-slice.any.js +++ b/test/fixtures/wpt/FileAPI/blob/Blob-slice.any.js @@ -12,24 +12,50 @@ test_blob(function() { }); test(function() { - var blob1, blob2; + var blob1 = new Blob(["squiggle"]); + var blob2 = new Blob(["steak"], {type: "content/type"}); - test_blob(function() { - return blob1 = new Blob(["squiggle"]); - }, { + test_blob(() => blob1, + { expected: "squiggle", type: "", desc: "blob1." }); - test_blob(function() { - return blob2 = new Blob(["steak"], {type: "content/type"}); - }, { + test_blob(() => blob2, + { expected: "steak", type: "content/type", desc: "blob2." }); + test_blob(function() { + var blob = new Blob(["abcd"]); + return blob.slice(undefined, undefined, "content/type"); + }, { + expected: "abcd", + type: "content/type", + desc: "undefined start/end Blob slice" + }); + + test_blob(function() { + var blob = new Blob(["abcd"]); + return blob.slice(undefined, 2, "content/type"); + }, { + expected: "ab", + type: "content/type", + desc: "undefined start Blob slice" + }); + + test_blob(function() { + var blob = new Blob(["abcd"]); + return blob.slice(2, undefined, "content/type"); + }, { + expected: "cd", + type: "content/type", + desc: "undefined end Blob slice" + }); + test_blob(function() { return new Blob().slice(0,0,null); }, { @@ -74,6 +100,21 @@ test(function() { {start: 7, end: 4, contents: ""}] ], + // Test double start/end values + [ + ["abcd"], + [{start: 0.5, contents: "abcd"}, + {start: 1.5, contents: "cd"}, + {start: 2.5, contents: "cd"}, + {start: 3.5, contents: ""}, + {start: 0, end: 0.5, contents: ""}, + {start: 0, end: 1.5, contents: "ab"}, + {start: 0, end: 2.5, contents: "ab"}, + {start: 0, end: 3.5, contents: "abcd"}, + {start: 1.5, end: 2.5, contents: ""}, + {start: 1.5, end: 3.5, contents: "cd"}] + ], + // Test 3 strings [ ["foo", "bar", "baz"], diff --git a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsArrayBuffer.any.js b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsArrayBuffer.any.js index d06e3170782b7c..88c4f4d26cc0b2 100644 --- a/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsArrayBuffer.any.js +++ b/test/fixtures/wpt/FileAPI/reading-data-section/filereader_readAsArrayBuffer.any.js @@ -7,6 +7,7 @@ reader.onload = this.step_func(function(evt) { assert_equals(reader.result.byteLength, 4, "The byteLength is 4"); assert_true(reader.result instanceof ArrayBuffer, "The result is instanceof ArrayBuffer"); + assert_array_equals(new Uint8Array(reader.result), [84, 69, 83, 84]); assert_equals(reader.readyState, reader.DONE); this.done(); }); diff --git a/test/fixtures/wpt/FileAPI/support/Blob.js b/test/fixtures/wpt/FileAPI/support/Blob.js index 2c249746858918..e8a52425a17085 100644 --- a/test/fixtures/wpt/FileAPI/support/Blob.js +++ b/test/fixtures/wpt/FileAPI/support/Blob.js @@ -5,23 +5,16 @@ self.test_blob = (fn, expectations) => { type = expectations.type, desc = expectations.desc; - var t = async_test(desc); - t.step(function() { + promise_test(async (t) => { var blob = fn(); assert_true(blob instanceof Blob); assert_false(blob instanceof File); assert_equals(blob.type, type); assert_equals(blob.size, expected.length); - var fr = new FileReader(); - fr.onload = t.step_func_done(function(event) { - assert_equals(this.result, expected); - }, fr); - fr.onerror = t.step_func(function(e) { - assert_unreached("got error event on FileReader"); - }); - fr.readAsText(blob, "UTF-8"); - }); + const text = await blob.text(); + assert_equals(text, expected); + }, desc); } self.test_blob_binary = (fn, expectations) => { @@ -29,25 +22,18 @@ self.test_blob_binary = (fn, expectations) => { type = expectations.type, desc = expectations.desc; - var t = async_test(desc); - t.step(function() { + promise_test(async (t) => { var blob = fn(); assert_true(blob instanceof Blob); assert_false(blob instanceof File); assert_equals(blob.type, type); assert_equals(blob.size, expected.length); - var fr = new FileReader(); - fr.onload = t.step_func_done(function(event) { - assert_true(this.result instanceof ArrayBuffer, - "Result should be an ArrayBuffer"); - assert_array_equals(new Uint8Array(this.result), expected); - }, fr); - fr.onerror = t.step_func(function(e) { - assert_unreached("got error event on FileReader"); - }); - fr.readAsArrayBuffer(blob); - }); + const ab = await blob.arrayBuffer(); + assert_true(ab instanceof ArrayBuffer, + "Result should be an ArrayBuffer"); + assert_array_equals(new Uint8Array(ab), expected); + }, desc); } // Assert that two TypedArray objects have the same byte values diff --git a/test/fixtures/wpt/FileAPI/support/send-file-form-helper.js b/test/fixtures/wpt/FileAPI/support/send-file-form-helper.js index 39c73c41b42207..d6adf21ec33795 100644 --- a/test/fixtures/wpt/FileAPI/support/send-file-form-helper.js +++ b/test/fixtures/wpt/FileAPI/support/send-file-form-helper.js @@ -180,7 +180,7 @@ const formPostFileUploadTest = ({ // Used to verify that the browser agrees with the test about // field value replacement and encoding independently of file system - // idiosyncrasies. + // idiosyncracies. form.append(Object.assign(document.createElement('input'), { type: 'hidden', name: 'filename', diff --git a/test/fixtures/wpt/FileAPI/support/send-file-formdata-helper.js b/test/fixtures/wpt/FileAPI/support/send-file-formdata-helper.js index dd62a0e98e92c8..53c8cca7e09b8e 100644 --- a/test/fixtures/wpt/FileAPI/support/send-file-formdata-helper.js +++ b/test/fixtures/wpt/FileAPI/support/send-file-formdata-helper.js @@ -34,7 +34,7 @@ const formDataPostFileUploadTest = ({ // Used to verify that the browser agrees with the test about // field value replacement and encoding independently of file system - // idiosyncrasies. + // idiosyncracies. formData.append("filename", fileBaseName); // Same, but with name and value reversed to ensure field names diff --git a/test/fixtures/wpt/FileAPI/url/url-in-tags.window.js b/test/fixtures/wpt/FileAPI/url/url-in-tags.window.js index f20b3599013bf5..8a722dcac82b66 100644 --- a/test/fixtures/wpt/FileAPI/url/url-in-tags.window.js +++ b/test/fixtures/wpt/FileAPI/url/url-in-tags.window.js @@ -1,3 +1,10 @@ +setup(() => { + const viewport_meta = document.createElement('meta'); + viewport_meta.name = "viewport"; + viewport_meta.content = "width=device-width,initial-scale=1"; + document.head.appendChild(viewport_meta); +}); + async_test(t => { const run_result = 'test_script_OK'; const blob_contents = 'window.test_result = "' + run_result + '";'; diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md index 8cb1e30007ac65..408bd643f79541 100644 --- a/test/fixtures/wpt/README.md +++ b/test/fixtures/wpt/README.md @@ -17,7 +17,7 @@ Last update: - dom/events: https://github.com/web-platform-tests/wpt/tree/0a811c5161/dom/events - encoding: https://github.com/web-platform-tests/wpt/tree/1ac8deee08/encoding - fetch/data-urls/resources: https://github.com/web-platform-tests/wpt/tree/7c79d998ff/fetch/data-urls/resources -- FileAPI: https://github.com/web-platform-tests/wpt/tree/cceaf3628d/FileAPI +- FileAPI: https://github.com/web-platform-tests/wpt/tree/7f51301888/FileAPI - hr-time: https://github.com/web-platform-tests/wpt/tree/34cafd797e/hr-time - html/webappapis/atob: https://github.com/web-platform-tests/wpt/tree/f267e1dca6/html/webappapis/atob - html/webappapis/microtask-queuing: https://github.com/web-platform-tests/wpt/tree/2c5c3c4c27/html/webappapis/microtask-queuing diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json index 2f02e8cde230dd..085a51e61753ea 100644 --- a/test/fixtures/wpt/versions.json +++ b/test/fixtures/wpt/versions.json @@ -28,7 +28,7 @@ "path": "fetch/data-urls/resources" }, "FileAPI": { - "commit": "cceaf3628da950621004d9b5d8c1d1f367073347", + "commit": "7f5130188818b6c12c636491186b459ec2bf131f", "path": "FileAPI" }, "hr-time": { diff --git a/test/wpt/status/FileAPI/blob.json b/test/wpt/status/FileAPI/blob.json index 8ea03bbc019992..3bbd15087a02ac 100644 --- a/test/wpt/status/FileAPI/blob.json +++ b/test/wpt/status/FileAPI/blob.json @@ -4,38 +4,20 @@ }, "Blob-constructor.any.js": { "fail": { - "note": "Depends on File API", "expected": [ - "A plain object with @@iterator should be treated as a sequence for the blobParts argument.", - "A plain object with @@iterator and a length property should be treated as a sequence for the blobParts argument.", - "A String object should be treated as a sequence for the blobParts argument.", - "A Uint8Array object should be treated as a sequence for the blobParts argument.", + "blobParts not an object: boolean with Boolean.prototype[Symbol.iterator]", + "blobParts not an object: number with Number.prototype[Symbol.iterator]", + "blobParts not an object: BigInt with BigInt.prototype[Symbol.iterator]", + "blobParts not an object: Symbol with Symbol.prototype[Symbol.iterator]", "Getters and value conversions should happen in order until an exception is thrown.", - "Changes to the blobParts array should be reflected in the returned Blob (pop).", - "Changes to the blobParts array should be reflected in the returned Blob (unshift).", - "ToString should be called on elements of the blobParts array.", - "ArrayBuffer elements of the blobParts array should be supported.", + "options properties should be accessed in lexicographic order.", + "Arguments should be evaluated from left to right." + ], + "flaky": [ "Passing typed arrays as elements of the blobParts array should work.", + "Passing a Float16Array as element of the blobParts array should work.", "Passing a Float64Array as element of the blobParts array should work.", - "Passing BigInt typed arrays as elements of the blobParts array should work.", - "Array with two blobs", - "Array with two buffers", - "Array with two bufferviews", - "Array with mixed types", - "options properties should be accessed in lexicographic order.", - "Arguments should be evaluated from left to right.", - "Passing null (index 0) for options should use the defaults.", - "Passing null (index 0) for options should use the defaults (with newlines).", - "Passing undefined (index 1) for options should use the defaults.", - "Passing undefined (index 1) for options should use the defaults (with newlines).", - "Passing object \"[object Object]\" (index 2) for options should use the defaults.", - "Passing object \"[object Object]\" (index 2) for options should use the defaults (with newlines).", - "Passing object \"[object Object]\" (index 3) for options should use the defaults.", - "Passing object \"[object Object]\" (index 3) for options should use the defaults (with newlines).", - "Passing object \"/regex/\" (index 4) for options should use the defaults.", - "Passing object \"/regex/\" (index 4) for options should use the defaults (with newlines).", - "Passing function \"function() {}\" (index 5) for options should use the defaults.", - "Passing function \"function() {}\" (index 5) for options should use the defaults (with newlines)." + "Passing BigInt typed arrays as elements of the blobParts array should work." ] } }, @@ -43,6 +25,15 @@ "skip": "Depends on Web Workers API" }, "Blob-slice.any.js": { - "skip": "Depends on File API" + "fail": { + "expected": [ + "Slicing test: slice (1,1).", + "Slicing test: slice (1,3).", + "Slicing test: slice (1,5).", + "Slicing test: slice (1,7).", + "Slicing test: slice (1,8).", + "Slicing test: slice (1,9)." + ] + } } } From a9c5bd29c93124b82722a6332353481d785b4151 Mon Sep 17 00:00:00 2001 From: Andy Weiss <831355+rokob@users.noreply.github.com> Date: Fri, 13 Feb 2026 11:10:17 -0500 Subject: [PATCH 058/267] zlib: add support for brotli compression dictionary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change adds JS API support for custom compression dictionaries with Brotli in the zlib library. The underlying Brotli dependency already supports this and zstd exposes something similar. This follows the zstd approach for using a custom dictionary but for Brotli. Fixes: https://github.com/nodejs/node/issues/52250 PR-URL: https://github.com/nodejs/node/pull/61763 Reviewed-By: Anna Henningsen Reviewed-By: Colin Ihrig Reviewed-By: James M Snell Reviewed-By: Gürgün Dayıoğlu --- lib/zlib.js | 20 ++- src/node_zlib.cc | 94 ++++++++++++-- test/parallel/test-zlib-brotli-dictionary.js | 126 +++++++++++++++++++ 3 files changed, 229 insertions(+), 11 deletions(-) create mode 100644 test/parallel/test-zlib-brotli-dictionary.js diff --git a/lib/zlib.js b/lib/zlib.js index 655dcb517b968b..056b1a13a17392 100644 --- a/lib/zlib.js +++ b/lib/zlib.js @@ -830,11 +830,29 @@ function Brotli(opts, mode) { }); } + let dictionary = opts?.dictionary; + if (dictionary !== undefined && !isArrayBufferView(dictionary)) { + if (isAnyArrayBuffer(dictionary)) { + dictionary = Buffer.from(dictionary); + } else { + throw new ERR_INVALID_ARG_TYPE( + 'options.dictionary', + ['Buffer', 'TypedArray', 'DataView', 'ArrayBuffer'], + dictionary, + ); + } + } + const handle = mode === BROTLI_DECODE ? new binding.BrotliDecoder(mode) : new binding.BrotliEncoder(mode); this._writeState = new Uint32Array(2); - handle.init(brotliInitParamsArray, this._writeState, processCallback); + handle.init( + brotliInitParamsArray, + this._writeState, + processCallback, + dictionary, + ); ZlibBase.call(this, opts, mode, handle, brotliDefaultOpts); } diff --git a/src/node_zlib.cc b/src/node_zlib.cc index d3bd0f6f6540b4..9d49f13d07c125 100644 --- a/src/node_zlib.cc +++ b/src/node_zlib.cc @@ -40,6 +40,7 @@ #include "brotli/decode.h" #include "brotli/encode.h" +#include "brotli/shared_dictionary.h" #include "zlib.h" #include "zstd.h" #include "zstd_errors.h" @@ -256,7 +257,7 @@ class BrotliEncoderContext final : public BrotliContext { public: void Close(); void DoThreadPoolWork(); - CompressionError Init(); + CompressionError Init(std::vector&& dictionary = {}); CompressionError ResetStream(); CompressionError SetParams(int key, uint32_t value); CompressionError GetErrorInfo() const; @@ -268,13 +269,18 @@ class BrotliEncoderContext final : public BrotliContext { private: bool last_result_ = false; DeleteFnPtr state_; + DeleteFnPtr + prepared_dictionary_; + // Dictionary data must remain valid while the prepared dictionary is alive. + std::vector dictionary_; }; class BrotliDecoderContext final : public BrotliContext { public: void Close(); void DoThreadPoolWork(); - CompressionError Init(); + CompressionError Init(std::vector&& dictionary = {}); CompressionError ResetStream(); CompressionError SetParams(int key, uint32_t value); CompressionError GetErrorInfo() const; @@ -288,6 +294,8 @@ class BrotliDecoderContext final : public BrotliContext { BrotliDecoderErrorCode error_ = BROTLI_DECODER_NO_ERROR; std::string error_string_; DeleteFnPtr state_; + // Dictionary data must remain valid for the lifetime of the decoder. + std::vector dictionary_; }; class ZstdContext : public MemoryRetainer { @@ -830,7 +838,8 @@ class BrotliCompressionStream final : static void Init(const FunctionCallbackInfo& args) { BrotliCompressionStream* wrap; ASSIGN_OR_RETURN_UNWRAP(&wrap, args.This()); - CHECK(args.Length() == 3 && "init(params, writeResult, writeCallback)"); + CHECK((args.Length() == 3 || args.Length() == 4) && + "init(params, writeResult, writeCallback[, dictionary])"); CHECK(args[1]->IsUint32Array()); CHECK_GE(args[1].As()->Length(), 2); @@ -841,7 +850,18 @@ class BrotliCompressionStream final : wrap->InitStream(write_result, write_js_callback); AllocScope alloc_scope(wrap); - CompressionError err = wrap->context()->Init(); + std::vector dictionary; + if (args.Length() == 4 && !args[3]->IsUndefined()) { + if (!args[3]->IsArrayBufferView()) { + THROW_ERR_INVALID_ARG_TYPE( + wrap->env(), "dictionary must be an ArrayBufferView if provided"); + return; + } + ArrayBufferViewContents contents(args[3]); + dictionary.assign(contents.data(), contents.data() + contents.length()); + } + + CompressionError err = wrap->context()->Init(std::move(dictionary)); if (err.IsError()) { wrap->EmitError(err); // TODO(addaleax): Sometimes we generate better error codes in C++ land, @@ -1387,23 +1407,57 @@ void BrotliEncoderContext::DoThreadPoolWork() { void BrotliEncoderContext::Close() { state_.reset(); + prepared_dictionary_.reset(); + dictionary_.clear(); mode_ = NONE; } -CompressionError BrotliEncoderContext::Init() { +CompressionError BrotliEncoderContext::Init(std::vector&& dictionary) { brotli_alloc_func alloc = CompressionStreamMemoryOwner::AllocForBrotli; brotli_free_func free = CompressionStreamMemoryOwner::FreeForZlib; void* opaque = CompressionStream::AllocatorOpaquePointerForContext( this); + + // Clean up any previous dictionary state before re-initializing. + prepared_dictionary_.reset(); + dictionary_.clear(); + state_.reset(BrotliEncoderCreateInstance(alloc, free, opaque)); if (!state_) { return CompressionError("Could not initialize Brotli instance", "ERR_ZLIB_INITIALIZATION_FAILED", -1); - } else { - return CompressionError {}; } + + if (!dictionary.empty()) { + // The dictionary data must remain valid for the lifetime of the prepared + // dictionary, so take ownership via move. + dictionary_ = std::move(dictionary); + + prepared_dictionary_.reset( + BrotliEncoderPrepareDictionary(BROTLI_SHARED_DICTIONARY_RAW, + dictionary_.size(), + dictionary_.data(), + BROTLI_MAX_QUALITY, + alloc, + free, + opaque)); + if (!prepared_dictionary_) { + return CompressionError("Failed to prepare brotli dictionary", + "ERR_ZLIB_DICTIONARY_LOAD_FAILED", + -1); + } + + if (!BrotliEncoderAttachPreparedDictionary(state_.get(), + prepared_dictionary_.get())) { + return CompressionError("Failed to attach brotli dictionary", + "ERR_ZLIB_DICTIONARY_LOAD_FAILED", + -1); + } + } + + return CompressionError{}; } CompressionError BrotliEncoderContext::ResetStream() { @@ -1435,6 +1489,7 @@ CompressionError BrotliEncoderContext::GetErrorInfo() const { void BrotliDecoderContext::Close() { state_.reset(); + dictionary_.clear(); mode_ = NONE; } @@ -1455,20 +1510,39 @@ void BrotliDecoderContext::DoThreadPoolWork() { } } -CompressionError BrotliDecoderContext::Init() { +CompressionError BrotliDecoderContext::Init(std::vector&& dictionary) { brotli_alloc_func alloc = CompressionStreamMemoryOwner::AllocForBrotli; brotli_free_func free = CompressionStreamMemoryOwner::FreeForZlib; void* opaque = CompressionStream::AllocatorOpaquePointerForContext( this); + + // Clean up any previous dictionary state before re-initializing. + dictionary_.clear(); + state_.reset(BrotliDecoderCreateInstance(alloc, free, opaque)); if (!state_) { return CompressionError("Could not initialize Brotli instance", "ERR_ZLIB_INITIALIZATION_FAILED", -1); - } else { - return CompressionError {}; } + + if (!dictionary.empty()) { + // The dictionary data must remain valid for the lifetime of the decoder, + // so take ownership via move. + dictionary_ = std::move(dictionary); + + if (!BrotliDecoderAttachDictionary(state_.get(), + BROTLI_SHARED_DICTIONARY_RAW, + dictionary_.size(), + dictionary_.data())) { + return CompressionError("Failed to attach brotli dictionary", + "ERR_ZLIB_DICTIONARY_LOAD_FAILED", + -1); + } + } + + return CompressionError{}; } CompressionError BrotliDecoderContext::ResetStream() { diff --git a/test/parallel/test-zlib-brotli-dictionary.js b/test/parallel/test-zlib-brotli-dictionary.js new file mode 100644 index 00000000000000..1703a5e047041a --- /dev/null +++ b/test/parallel/test-zlib-brotli-dictionary.js @@ -0,0 +1,126 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const zlib = require('zlib'); + +const dictionary = Buffer.from( + `Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.` +); + +const input = Buffer.from( + `Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.` +); + +// Test with convenience methods (async). +zlib.brotliCompress(input, { dictionary }, common.mustSucceed((compressed) => { + assert(compressed.length < input.length, + 'compressed data should be smaller with dictionary'); + zlib.brotliDecompress(compressed, { dictionary }, common.mustSucceed((decompressed) => { + assert.strictEqual(decompressed.toString(), input.toString()); + })); +})); + +// Test with streaming API. +{ + const encoder = zlib.createBrotliCompress({ dictionary }); + const decoder = zlib.createBrotliDecompress({ dictionary }); + + const chunks = []; + decoder.on('data', (chunk) => chunks.push(chunk)); + decoder.on('end', common.mustCall(() => { + const result = Buffer.concat(chunks); + assert.strictEqual(result.toString(), input.toString()); + })); + + encoder.pipe(decoder); + encoder.end(input); +} + +// Test that dictionary improves compression ratio. +{ + const withDict = zlib.brotliCompressSync(input, { dictionary }); + const withoutDict = zlib.brotliCompressSync(input); + + // Dictionary-based compression should be at least as good as without. + assert(withDict.length <= withoutDict.length, + `Dictionary compression (${withDict.length}) should not be ` + + `larger than non-dictionary compression (${withoutDict.length})`); + + // Verify decompression with dictionary works. + const decompressed = zlib.brotliDecompressSync(withDict, { dictionary }); + assert.strictEqual(decompressed.toString(), input.toString()); +} + +// Test that decompression without matching dictionary fails. +{ + const compressed = zlib.brotliCompressSync(input, { dictionary }); + assert.throws(() => { + zlib.brotliDecompressSync(compressed); + }, (err) => { + assert.match(err.code, /ERR_/); + return true; + }); +} + +// Test that decompression with wrong dictionary fails. +{ + const compressed = zlib.brotliCompressSync(input, { dictionary }); + const wrongDictionary = Buffer.from('this is the wrong dictionary'); + assert.throws(() => { + zlib.brotliDecompressSync(compressed, { dictionary: wrongDictionary }); + }, (err) => { + assert.match(err.code, /ERR_/); + return true; + }); +} + +// Test that dictionary works with ArrayBuffer (converted to Buffer). +{ + const arrayBufferDict = dictionary.buffer.slice( + dictionary.byteOffset, + dictionary.byteOffset + dictionary.byteLength, + ); + const compressed = zlib.brotliCompressSync(input, { dictionary: arrayBufferDict }); + const decompressed = zlib.brotliDecompressSync(compressed, { dictionary: arrayBufferDict }); + assert.strictEqual(decompressed.toString(), input.toString()); +} + +// Test that dictionary works with TypedArray (Uint8Array). +{ + const uint8Dict = new Uint8Array(dictionary); + const compressed = zlib.brotliCompressSync(input, { dictionary: uint8Dict }); + const decompressed = zlib.brotliDecompressSync(compressed, { dictionary: uint8Dict }); + assert.strictEqual(decompressed.toString(), input.toString()); +} + +// Test that invalid dictionary type throws ERR_INVALID_ARG_TYPE. +for (const invalidDict of ['string', 123, true, { object: true }, [1, 2, 3]]) { + assert.throws(() => { + zlib.createBrotliCompress({ dictionary: invalidDict }); + }, { code: 'ERR_INVALID_ARG_TYPE' }); + + assert.throws(() => { + zlib.createBrotliDecompress({ dictionary: invalidDict }); + }, { code: 'ERR_INVALID_ARG_TYPE' }); +} + +// Test with streaming API and wrong dictionary emits error event. +{ + const compressed = zlib.brotliCompressSync(input, { dictionary }); + const wrongDict = Buffer.from('wrong dictionary data'); + const decoder = zlib.createBrotliDecompress({ dictionary: wrongDict }); + + decoder.on('error', common.mustCall((err) => { + assert.match(err.code, /ERR_/); + })); + + decoder.write(compressed); + decoder.end(); +} From 9ad02065d55edd590847185fdc4a4bb4d24c37a1 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Fri, 13 Feb 2026 17:10:31 +0100 Subject: [PATCH 059/267] test: adapt buffer test for v8 sandbox MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/61772 Reviewed-By: Michaël Zasso Reviewed-By: Anna Henningsen Reviewed-By: René Reviewed-By: Colin Ihrig Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca --- test/parallel/test-buffer-concat.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/parallel/test-buffer-concat.js b/test/parallel/test-buffer-concat.js index 9f0eadd2f10163..9323126897d691 100644 --- a/test/parallel/test-buffer-concat.js +++ b/test/parallel/test-buffer-concat.js @@ -22,6 +22,7 @@ 'use strict'; const common = require('../common'); const assert = require('assert'); +const { kMaxLength } = require('buffer'); const zero = []; const one = [ Buffer.from('asdf') ]; @@ -84,8 +85,8 @@ assert.throws(() => { Buffer.concat([Buffer.from('hello')], -2); }, { code: 'ERR_OUT_OF_RANGE', - message: 'The value of "length" is out of range. It must be >= 0 && <= 9007199254740991. ' + - 'Received -2' + message: 'The value of "length" is out of range. It must be >= 0 && <= ' + + `${kMaxLength}. Received -2` }); // eslint-disable-next-line node-core/crypto-check From deeeb22e1a21111f5bd8f1299359a4bf6f528b54 Mon Sep 17 00:00:00 2001 From: giulioAZ Date: Fri, 13 Feb 2026 17:30:09 +0100 Subject: [PATCH 060/267] worker: eliminate race condition in process.cwd() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes a race condition in worker thread cwd caching where the counter is incremented before the directory change completes, allowing workers to cache stale directory values. In lib/internal/worker.js, the main thread's process.chdir() wrapper previously incremented the shared counter before calling the actual chdir(), creating a race window where workers could read the old directory but cache it with the new counter value. This caused subsequent cwd() calls to return incorrect paths until the next chdir(). This fix reorders the operations to change the directory first, then increment the counter, ensuring workers are only notified after the directory change completes. Before fix: 54.28% error rate (311/573 races) After fix: 0% error rate (0/832 races) Refs: https://hackerone.com/reports/3407207 Co-authored-by: Giulio Comi Co-authored-by: Caleb Everett Co-authored-by: Utku Yildirim PR-URL: https://github.com/nodejs/node/pull/61664 Reviewed-By: Anna Henningsen Reviewed-By: René --- lib/internal/worker.js | 2 +- .../test-worker-cwd-race-condition.js | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 test/parallel/test-worker-cwd-race-condition.js diff --git a/lib/internal/worker.js b/lib/internal/worker.js index f80190800692d7..13c2f5040f6be8 100644 --- a/lib/internal/worker.js +++ b/lib/internal/worker.js @@ -111,8 +111,8 @@ if (isMainThread) { cwdCounter = new Uint32Array(constructSharedArrayBuffer(4)); const originalChdir = process.chdir; process.chdir = function(path) { - AtomicsAdd(cwdCounter, 0, 1); originalChdir(path); + AtomicsAdd(cwdCounter, 0, 1); }; } diff --git a/test/parallel/test-worker-cwd-race-condition.js b/test/parallel/test-worker-cwd-race-condition.js new file mode 100644 index 00000000000000..19394c85f0d1c4 --- /dev/null +++ b/test/parallel/test-worker-cwd-race-condition.js @@ -0,0 +1,70 @@ +// Flags: --expose-internals --no-warnings +'use strict'; + +const common = require('../common'); +const { isMainThread } = require('worker_threads'); + +if (!isMainThread) { + common.skip('process.chdir is not available in Workers'); +} + +const { internalBinding } = require('internal/test/binding'); + +const assert = require('assert'); +const { Worker } = require('worker_threads'); + +const processBinding = internalBinding('process_methods'); +const originalChdir = processBinding.chdir; + +const cwdOriginal = process.cwd(); +const i32 = new Int32Array(new SharedArrayBuffer(12)); + +processBinding.chdir = common.mustCall(function chdir(path) { + // Signal to the worker that we're inside the chdir call + Atomics.store(i32, 0, 1); + Atomics.notify(i32, 0); + + // Pause the chdir call while the worker calls process.cwd(), + // to simulate a race condition + Atomics.wait(i32, 1, 0); + + return originalChdir(path); +}); + +const worker = new Worker(` + const { + parentPort, + workerData: { i32 }, + } = require('worker_threads'); + + // Wait until the main thread has entered the chdir call + Atomics.wait(i32, 0, 0); + + const cwdDuringChdir = process.cwd(); + + // Signal the main thread to continue the chdir call + Atomics.store(i32, 1, 1); + Atomics.notify(i32, 1); + + // Wait until the main thread has left the chdir call + Atomics.wait(i32, 2, 0); + + const cwdAfterChdir = process.cwd(); + parentPort.postMessage({ cwdDuringChdir, cwdAfterChdir }); +`, { + eval: true, + workerData: { i32 }, +}); + +worker.on('exit', common.mustCall()); +worker.on('error', common.mustNotCall()); +worker.on('message', common.mustCall(({ cwdDuringChdir, cwdAfterChdir }) => { + assert.strictEqual(cwdDuringChdir, cwdOriginal); + assert.strictEqual(cwdAfterChdir, process.cwd()); +})); + +process.chdir('..'); + +// Signal to the worker that the chdir call is completed +Atomics.store(i32, 2, 1); +Atomics.notify(i32, 2); From 1c2064c1f81a0f9298bba282715b7d9cdc601b94 Mon Sep 17 00:00:00 2001 From: Martin Slota <46676886+martinslota@users.noreply.github.com> Date: Fri, 6 Feb 2026 23:29:11 +0700 Subject: [PATCH 061/267] http: fix keep-alive socket reuse race in requestOnFinish When the HTTP response ends before the request's 'finish' event fires, responseOnEnd() and requestOnFinish() can both call responseKeepAlive(), corrupting the socket that the agent may have already handed to another request. This commit adds a !req.destroyed guard to requestOnFinish() so the second call is skipped when the socket has already been released. Fixes: https://github.com/nodejs/node/issues/60001 PR-URL: https://github.com/nodejs/node/pull/61710 Reviewed-By: Tim Perry --- lib/_http_client.js | 6 +- .../test-http-expect-continue-reuse-race.js | 117 ++++++++++++++++++ .../test-https-expect-continue-reuse-race.js | 97 +++++++++++++++ 3 files changed, 219 insertions(+), 1 deletion(-) create mode 100644 test/parallel/test-http-expect-continue-reuse-race.js create mode 100644 test/parallel/test-https-expect-continue-reuse-race.js diff --git a/lib/_http_client.js b/lib/_http_client.js index ee4f47be64ab3c..68fec845695f26 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -870,7 +870,11 @@ function responseOnTimeout() { function requestOnFinish() { const req = this; - if (req.shouldKeepAlive && req._ended) + // If the response ends before this request finishes writing, `responseOnEnd()` + // already released the socket. When `finish` fires later, that socket may + // belong to a different request, so only call `responseKeepAlive()` when the + // original request is still alive (`!req.destroyed`). + if (req.shouldKeepAlive && req._ended && !req.destroyed) responseKeepAlive(req); } diff --git a/test/parallel/test-http-expect-continue-reuse-race.js b/test/parallel/test-http-expect-continue-reuse-race.js new file mode 100644 index 00000000000000..d56319d0e6bab1 --- /dev/null +++ b/test/parallel/test-http-expect-continue-reuse-race.js @@ -0,0 +1,117 @@ +'use strict'; + +// Regression test for a keep-alive socket reuse race condition. +// +// The race is between responseOnEnd() and requestOnFinish(), both of which +// can call responseKeepAlive(). The window is: req.end() has been called, +// the socket write has completed (writableFinished true), but the write +// callback that emits the 'finish' event has not fired yet. +// +// With plain HTTP the window is normally too narrow to hit. This test +// widens it by delaying every client-socket write *callback* by a few +// milliseconds (the actual I/O is not delayed, so writableFinished becomes +// true while the 'finish'-emitting callback is still pending). +// +// With Expect: 100-continue, the server responds quickly while the client +// delays req.end() just slightly (setTimeout 0), creating the perfect +// timing for the response to arrive in that window. +// +// On unpatched Node, the double responseKeepAlive() call corrupts the +// socket by stripping a subsequent request's listeners and emitting a +// spurious 'free' event, causing requests to hang / time out. + +const common = require('../common'); +const assert = require('assert'); +const http = require('http'); + +const REQUEST_COUNT = 100; +const agent = new http.Agent({ keepAlive: true, maxSockets: 1 }); + +// Delay every write *callback* on the client socket so that +// socket.writableLength drops to 0 (writableFinished becomes true) before +// the callback that ultimately emits the 'finish' event fires. With +// HTTPS the TLS layer provides this gap naturally; for plain HTTP we +// need to create it artificially. +const patchedSockets = new WeakSet(); +function patchSocket(socket) { + if (patchedSockets.has(socket)) return; + patchedSockets.add(socket); + const delay = 5; + const origWrite = socket.write; + socket.write = function(chunk, encoding, cb) { + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + if (typeof cb === 'function') { + const orig = cb; + cb = (...args) => setTimeout(() => orig(...args), delay); + } + return origWrite.call(this, chunk, encoding, cb); + }; +} + +const server = http.createServer(common.mustCall((req, res) => { + req.on('error', common.mustNotCall()); + res.writeHead(200); + res.end(); +}, REQUEST_COUNT)); + +server.listen(0, common.mustCall(() => { + const { port } = server.address(); + + async function run() { + try { + for (let i = 0; i < REQUEST_COUNT; i++) { + await sendRequest(port); + } + } finally { + agent.destroy(); + server.close(); + } + } + + run().then(common.mustCall()); +})); + +function sendRequest(port) { + let timeout; + const promise = new Promise((resolve, reject) => { + function done(err) { + clearTimeout(timeout); + if (err) + reject(err); + else + resolve(); + } + + const req = http.request({ + port, + host: '127.0.0.1', + method: 'POST', + agent, + headers: { + 'Content-Length': '0', + 'Expect': '100-continue', + }, + }, common.mustCall((res) => { + assert.strictEqual(res.statusCode, 200); + res.resume(); + res.once('end', done); + res.once('error', done); + })); + + req.on('socket', patchSocket); + + timeout = setTimeout(() => { + const err = new Error('request timed out'); + req.destroy(err); + done(err); + }, common.platformTimeout(5000)); + + req.once('error', done); + + setTimeout(() => req.end(Buffer.alloc(0)), 0); + }); + return promise.finally(() => clearTimeout(timeout)); +} diff --git a/test/parallel/test-https-expect-continue-reuse-race.js b/test/parallel/test-https-expect-continue-reuse-race.js new file mode 100644 index 00000000000000..cc754477b788c3 --- /dev/null +++ b/test/parallel/test-https-expect-continue-reuse-race.js @@ -0,0 +1,97 @@ +'use strict'; + +// Regression test for a keep-alive socket reuse race condition. +// +// The race is between responseOnEnd() and requestOnFinish(), both of which +// can call responseKeepAlive(). The window is: req.end() has been called, +// the socket write has completed (writableFinished true), but the write +// callback that emits the 'finish' event has not fired yet. +// +// HTTPS widens this window because the TLS layer introduces async +// indirection between the actual write completion and the JS callback. +// +// With Expect: 100-continue, the server responds quickly while the client +// delays req.end() just slightly (setTimeout 0), creating the perfect +// timing for the response to arrive in that window. +// +// On unpatched Node, the double responseKeepAlive() call corrupts the +// socket by stripping a subsequent request's listeners and emitting a +// spurious 'free' event, causing requests to hang / time out. + +const common = require('../common'); + +if (!common.hasCrypto) + common.skip('missing crypto'); + +const assert = require('assert'); +const https = require('https'); +const fixtures = require('../common/fixtures'); + +const REQUEST_COUNT = 100; +const agent = new https.Agent({ keepAlive: true, maxSockets: 1 }); + +const key = fixtures.readKey('agent1-key.pem'); +const cert = fixtures.readKey('agent1-cert.pem'); +const server = https.createServer({ key, cert }, common.mustCall((req, res) => { + req.on('error', common.mustNotCall()); + res.writeHead(200); + res.end(); +}, REQUEST_COUNT)); + +server.listen(0, common.mustCall(() => { + const { port } = server.address(); + + async function run() { + try { + for (let i = 0; i < REQUEST_COUNT; i++) { + await sendRequest(port); + } + } finally { + agent.destroy(); + server.close(); + } + } + + run().then(common.mustCall()); +})); + +function sendRequest(port) { + let timeout; + const promise = new Promise((resolve, reject) => { + function done(err) { + clearTimeout(timeout); + if (err) + reject(err); + else + resolve(); + } + + const req = https.request({ + port, + host: '127.0.0.1', + rejectUnauthorized: false, + method: 'POST', + agent, + headers: { + 'Content-Length': '0', + 'Expect': '100-continue', + }, + }, common.mustCall((res) => { + assert.strictEqual(res.statusCode, 200); + res.resume(); + res.once('end', done); + res.once('error', done); + })); + + timeout = setTimeout(() => { + const err = new Error('request timed out'); + req.destroy(err); + done(err); + }, common.platformTimeout(5000)); + + req.once('error', done); + + setTimeout(() => req.end(Buffer.alloc(0)), 0); + }); + return promise.finally(() => clearTimeout(timeout)); +} From 6cda3d30c0211089d482c8f8768bd341caf98bf6 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Sat, 14 Feb 2026 11:45:51 +0100 Subject: [PATCH 062/267] src: remove unnecessary `c_str()` conversions in diagnostic messages PR-URL: https://github.com/nodejs/node/pull/61786 Reviewed-By: Colin Ihrig Reviewed-By: Edy Silva Reviewed-By: Gireesh Punathil Reviewed-By: Chengzhong Wu Reviewed-By: Stephen Belanger Reviewed-By: Luigi Pinca Reviewed-By: Rafael Gonzaga --- src/blob_serializer_deserializer-inl.h | 18 +++++------ src/compile_cache.cc | 4 +-- src/env.cc | 2 +- src/inspector_profiler.cc | 2 +- src/node_builtins.cc | 2 +- src/node_config_file.cc | 32 +++++++++----------- src/node_errors.cc | 6 ++-- src/node_sea.cc | 2 +- src/node_snapshotable.cc | 42 +++++++++++++------------- src/node_sqlite.cc | 2 +- src/permission/fs_permission.cc | 6 ++-- 11 files changed, 55 insertions(+), 63 deletions(-) diff --git a/src/blob_serializer_deserializer-inl.h b/src/blob_serializer_deserializer-inl.h index 7f5a3860b5b7e5..fa258dbe814459 100644 --- a/src/blob_serializer_deserializer-inl.h +++ b/src/blob_serializer_deserializer-inl.h @@ -105,7 +105,7 @@ template std::vector BlobDeserializer::ReadVector() { if (is_debug) { std::string name = GetName(); - Debug("\nReadVector<%s>()(%d-byte)\n", name.c_str(), sizeof(T)); + Debug("\nReadVector<%s>()(%d-byte)\n", name, sizeof(T)); } size_t count = static_cast(ReadArithmetic()); if (count == 0) { @@ -123,7 +123,7 @@ std::vector BlobDeserializer::ReadVector() { if (is_debug) { std::string str = std::is_arithmetic_v ? "" : ToStr(result); std::string name = GetName(); - Debug("ReadVector<%s>() read %s\n", name.c_str(), str.c_str()); + Debug("ReadVector<%s>() read %s\n", name, str); } return result; } @@ -163,7 +163,7 @@ void BlobDeserializer::ReadArithmetic(T* out, size_t count) { DCHECK_GT(count, 0); // Should not read contents for vectors of size 0. if (is_debug) { std::string name = GetName(); - Debug("Read<%s>()(%d-byte), count=%d: ", name.c_str(), sizeof(T), count); + Debug("Read<%s>()(%d-byte), count=%d: ", name, sizeof(T), count); } size_t size = sizeof(T) * count; @@ -172,7 +172,7 @@ void BlobDeserializer::ReadArithmetic(T* out, size_t count) { if (is_debug) { std::string str = "{ " + std::to_string(out[0]) + (count > 1 ? ", ... }" : " }"); - Debug("%s, read %zu bytes\n", str.c_str(), size); + Debug("%s, read %zu bytes\n", str, size); } read_total += size; } @@ -240,10 +240,10 @@ size_t BlobSerializer::WriteVector(const std::vector& data) { std::string name = GetName(); Debug("\nAt 0x%x: WriteVector<%s>() (%d-byte), count=%d: %s\n", sink.size(), - name.c_str(), + name, sizeof(T), data.size(), - str.c_str()); + str); } size_t written_total = WriteArithmetic(data.size()); @@ -259,7 +259,7 @@ size_t BlobSerializer::WriteVector(const std::vector& data) { if (is_debug) { std::string name = GetName(); - Debug("WriteVector<%s>() wrote %d bytes\n", name.c_str(), written_total); + Debug("WriteVector<%s>() wrote %d bytes\n", name, written_total); } return written_total; @@ -319,10 +319,10 @@ size_t BlobSerializer::WriteArithmetic(const T* data, size_t count) { std::string name = GetName(); Debug("At 0x%x: Write<%s>() (%zu-byte), count=%zu: %s", sink.size(), - name.c_str(), + name, sizeof(T), count, - str.c_str()); + str); } size_t size = sizeof(T) * count; diff --git a/src/compile_cache.cc b/src/compile_cache.cc index 0920747012f072..6b054db1ccc2e8 100644 --- a/src/compile_cache.cc +++ b/src/compile_cache.cc @@ -265,8 +265,8 @@ CompileCacheEntry* CompileCacheHandler::GetOrInsert(Local code, if (!relative_path.empty()) { file_path = relative_path; Debug("[compile cache] using relative path %s from %s\n", - file_path.c_str(), - compile_cache_dir_.c_str()); + file_path, + compile_cache_dir_); } } uint32_t key = GetCacheKey(file_path, type); diff --git a/src/env.cc b/src/env.cc index 1050e354fab253..bbb30dd8a50f7b 100644 --- a/src/env.cc +++ b/src/env.cc @@ -2181,7 +2181,7 @@ size_t Environment::NearHeapLimitCallback(void* data, env->RemoveHeapSnapshotNearHeapLimitCallback(0); } - FPrintF(stderr, "Wrote snapshot to %s\n", filename.c_str()); + FPrintF(stderr, "Wrote snapshot to %s\n", filename); // Tell V8 to reset the heap limit once the heap usage falls down to // 95% of the initial limit. env->isolate()->AutomaticallyRestoreInitialHeapLimit(0.95); diff --git a/src/inspector_profiler.cc b/src/inspector_profiler.cc index dd57c779595c80..28653a3939daef 100644 --- a/src/inspector_profiler.cc +++ b/src/inspector_profiler.cc @@ -66,7 +66,7 @@ uint64_t V8ProfilerConnection::DispatchMessage(const char* method, Debug(env(), DebugCategory::INSPECTOR_PROFILER, "Dispatching message %s\n", - message.c_str()); + message); session_->Dispatch(StringView(message_data, message.length())); return id; } diff --git a/src/node_builtins.cc b/src/node_builtins.cc index 90f91484fdd5cd..6506dcea3f4f88 100644 --- a/src/node_builtins.cc +++ b/src/node_builtins.cc @@ -559,7 +559,7 @@ bool BuiltinLoader::CompileAllBuiltinsAndCopyCodeCache( if (bootstrapCatch.HasCaught()) { per_process::Debug(DebugCategory::CODE_CACHE, "Failed to compile code cache for %s\n", - id.data()); + id); all_succeeded = false; PrintCaughtException(context->GetIsolate(), context, bootstrapCatch); } else { diff --git a/src/node_config_file.cc b/src/node_config_file.cc index e6c049b4d14f10..9db6a9b2472aa5 100644 --- a/src/node_config_file.cc +++ b/src/node_config_file.cc @@ -48,7 +48,7 @@ ParseResult ConfigReader::ProcessOptionValue( case options_parser::OptionType::kBoolean: { bool result; if (option_value->get_bool().get(result)) { - FPrintF(stderr, "Invalid value for %s\n", option_name.c_str()); + FPrintF(stderr, "Invalid value for %s\n", option_name); return ParseResult::InvalidContent; } @@ -74,13 +74,13 @@ ParseResult ConfigReader::ProcessOptionValue( std::vector result; simdjson::ondemand::array raw_imports; if (option_value->get_array().get(raw_imports)) { - FPrintF(stderr, "Invalid value for %s\n", option_name.c_str()); + FPrintF(stderr, "Invalid value for %s\n", option_name); return ParseResult::InvalidContent; } for (auto raw_import : raw_imports) { std::string_view import; if (raw_import.get_string(import)) { - FPrintF(stderr, "Invalid value for %s\n", option_name.c_str()); + FPrintF(stderr, "Invalid value for %s\n", option_name); return ParseResult::InvalidContent; } output->push_back(option_name + "=" + std::string(import)); @@ -90,14 +90,14 @@ ParseResult ConfigReader::ProcessOptionValue( case simdjson::ondemand::json_type::string: { std::string result; if (option_value->get_string(result)) { - FPrintF(stderr, "Invalid value for %s\n", option_name.c_str()); + FPrintF(stderr, "Invalid value for %s\n", option_name); return ParseResult::InvalidContent; } output->push_back(option_name + "=" + result); break; } default: - FPrintF(stderr, "Invalid value for %s\n", option_name.c_str()); + FPrintF(stderr, "Invalid value for %s\n", option_name); return ParseResult::InvalidContent; } break; @@ -105,7 +105,7 @@ ParseResult ConfigReader::ProcessOptionValue( case options_parser::OptionType::kString: { std::string result; if (option_value->get_string(result)) { - FPrintF(stderr, "Invalid value for %s\n", option_name.c_str()); + FPrintF(stderr, "Invalid value for %s\n", option_name); return ParseResult::InvalidContent; } output->push_back(option_name + "=" + result); @@ -114,7 +114,7 @@ ParseResult ConfigReader::ProcessOptionValue( case options_parser::OptionType::kInteger: { int64_t result; if (option_value->get_int64().get(result)) { - FPrintF(stderr, "Invalid value for %s\n", option_name.c_str()); + FPrintF(stderr, "Invalid value for %s\n", option_name); return ParseResult::InvalidContent; } output->push_back(option_name + "=" + std::to_string(result)); @@ -124,22 +124,19 @@ ParseResult ConfigReader::ProcessOptionValue( case options_parser::OptionType::kUInteger: { uint64_t result; if (option_value->get_uint64().get(result)) { - FPrintF(stderr, "Invalid value for %s\n", option_name.c_str()); + FPrintF(stderr, "Invalid value for %s\n", option_name); return ParseResult::InvalidContent; } output->push_back(option_name + "=" + std::to_string(result)); break; } case options_parser::OptionType::kNoOp: { - FPrintF(stderr, - "No-op flag %s is currently not supported\n", - option_name.c_str()); + FPrintF( + stderr, "No-op flag %s is currently not supported\n", option_name); return ParseResult::InvalidContent; } case options_parser::OptionType::kV8Option: { - FPrintF(stderr, - "V8 flag %s is currently not supported\n", - option_name.c_str()); + FPrintF(stderr, "V8 flag %s is currently not supported\n", option_name); return ParseResult::InvalidContent; } default: @@ -187,8 +184,7 @@ ParseResult ConfigReader::ParseOptions( if (option != options_map.end()) { // If the option has already been set, return an error if (unique_options->contains(option->first)) { - FPrintF( - stderr, "Option %s is already defined\n", option->first.c_str()); + FPrintF(stderr, "Option %s is already defined\n", option->first); return ParseResult::InvalidContent; } // Add the option to the unique set to prevent duplicates @@ -204,7 +200,7 @@ ParseResult ConfigReader::ParseOptions( FPrintF(stderr, "Unknown or not allowed option %s for namespace %s\n", option_key, - namespace_name.c_str()); + namespace_name); return ParseResult::InvalidContent; } } @@ -277,7 +273,7 @@ ParseResult ConfigReader::ParseConfig(const std::string_view& config_path) { if (field_error) { FPrintF(stderr, "\"%s\" value unexpected for %s (should be an object)\n", - namespace_name.c_str(), + namespace_name, config_path.data()); return ParseResult::InvalidContent; } diff --git a/src/node_errors.cc b/src/node_errors.cc index d148127b89b632..0388e2e31c9739 100644 --- a/src/node_errors.cc +++ b/src/node_errors.cc @@ -156,10 +156,8 @@ static std::string GetErrorSource(Isolate* isolate, end -= script_start; } - std::string buf = SPrintF("%s:%i\n%s\n", - filename_string, - linenum, - sourceline.c_str()); + std::string buf = + SPrintF("%s:%i\n%s\n", filename_string, linenum, sourceline); CHECK_GT(buf.size(), 0); *added_exception_line = true; diff --git a/src/node_sea.cc b/src/node_sea.cc index bea8d27e243853..f387813aa65a7f 100644 --- a/src/node_sea.cc +++ b/src/node_sea.cc @@ -642,7 +642,7 @@ int BuildAssets(const std::unordered_map& config, int r = ReadFileSync(&blob, path.c_str()); if (r != 0) { const char* err = uv_strerror(r); - FPrintF(stderr, "Cannot read asset %s: %s\n", path.c_str(), err); + FPrintF(stderr, "Cannot read asset %s: %s\n", path, err); return r; } assets->emplace(key, std::move(blob)); diff --git a/src/node_snapshotable.cc b/src/node_snapshotable.cc index 56a7facd19a493..6a1bed36dca1fc 100644 --- a/src/node_snapshotable.cc +++ b/src/node_snapshotable.cc @@ -225,7 +225,7 @@ builtins::CodeCacheInfo SnapshotDeserializer::Read() { if (is_debug) { std::string str = ToStr(result); - Debug("Read() %s\n", str.c_str()); + Debug("Read() %s\n", str); } return result; } @@ -234,7 +234,7 @@ template <> size_t SnapshotSerializer::Write(const builtins::CodeCacheInfo& info) { Debug("\nWrite() id = %s" ", length=%d\n", - info.id.c_str(), + info.id, info.data.length); size_t written_total = WriteString(info.id); @@ -263,7 +263,7 @@ PropInfo SnapshotDeserializer::Read() { if (is_debug) { std::string str = ToStr(result); - Debug("Read() %s\n", str.c_str()); + Debug("Read() %s\n", str); } return result; @@ -273,7 +273,7 @@ template <> size_t SnapshotSerializer::Write(const PropInfo& data) { if (is_debug) { std::string str = ToStr(data); - Debug("Write() %s\n", str.c_str()); + Debug("Write() %s\n", str); } size_t written_total = WriteString(data.name); @@ -305,7 +305,7 @@ AsyncHooks::SerializeInfo SnapshotDeserializer::Read() { if (is_debug) { std::string str = ToStr(result); - Debug("Read() %s\n", str.c_str()); + Debug("Read() %s\n", str); } return result; @@ -314,7 +314,7 @@ template <> size_t SnapshotSerializer::Write(const AsyncHooks::SerializeInfo& data) { if (is_debug) { std::string str = ToStr(data); - Debug("Write() %s\n", str.c_str()); + Debug("Write() %s\n", str); } size_t written_total = @@ -341,7 +341,7 @@ TickInfo::SerializeInfo SnapshotDeserializer::Read() { if (is_debug) { std::string str = ToStr(result); - Debug("Read() %s\n", str.c_str()); + Debug("Read() %s\n", str); } return result; @@ -351,7 +351,7 @@ template <> size_t SnapshotSerializer::Write(const TickInfo::SerializeInfo& data) { if (is_debug) { std::string str = ToStr(data); - Debug("Write() %s\n", str.c_str()); + Debug("Write() %s\n", str); } size_t written_total = WriteArithmetic(data.fields); @@ -370,7 +370,7 @@ ImmediateInfo::SerializeInfo SnapshotDeserializer::Read() { result.fields = ReadArithmetic(); if (is_debug) { std::string str = ToStr(result); - Debug("Read() %s\n", str.c_str()); + Debug("Read() %s\n", str); } return result; } @@ -379,7 +379,7 @@ template <> size_t SnapshotSerializer::Write(const ImmediateInfo::SerializeInfo& data) { if (is_debug) { std::string str = ToStr(data); - Debug("Write() %s\n", str.c_str()); + Debug("Write() %s\n", str); } size_t written_total = WriteArithmetic(data.fields); @@ -403,7 +403,7 @@ performance::PerformanceState::SerializeInfo SnapshotDeserializer::Read() { result.observers = ReadArithmetic(); if (is_debug) { std::string str = ToStr(result); - Debug("Read() %s\n", str.c_str()); + Debug("Read() %s\n", str); } return result; } @@ -413,7 +413,7 @@ size_t SnapshotSerializer::Write( const performance::PerformanceState::SerializeInfo& data) { if (is_debug) { std::string str = ToStr(data); - Debug("Write() %s\n", str.c_str()); + Debug("Write() %s\n", str); } size_t written_total = WriteArithmetic(data.root); @@ -439,7 +439,7 @@ IsolateDataSerializeInfo SnapshotDeserializer::Read() { result.template_values = ReadVector(); if (is_debug) { std::string str = ToStr(result); - Debug("Read() %s\n", str.c_str()); + Debug("Read() %s\n", str); } return result; } @@ -448,7 +448,7 @@ template <> size_t SnapshotSerializer::Write(const IsolateDataSerializeInfo& data) { if (is_debug) { std::string str = ToStr(data); - Debug("Write() %s\n", str.c_str()); + Debug("Write() %s\n", str); } size_t written_total = WriteVector(data.primitive_values); @@ -473,7 +473,7 @@ template <> size_t SnapshotSerializer::Write(const RealmSerializeInfo& data) { if (is_debug) { std::string str = ToStr(data); - Debug("\nWrite() %s\n", str.c_str()); + Debug("\nWrite() %s\n", str); } // Use += here to ensure order of evaluation. @@ -507,7 +507,7 @@ template <> size_t SnapshotSerializer::Write(const EnvSerializeInfo& data) { if (is_debug) { std::string str = ToStr(data); - Debug("\nWrite() %s\n", str.c_str()); + Debug("\nWrite() %s\n", str); } // Use += here to ensure order of evaluation. @@ -549,7 +549,7 @@ SnapshotMetadata SnapshotDeserializer::Read() { if (is_debug) { std::string str = ToStr(result); - Debug("Read() %s\n", str.c_str()); + Debug("Read() %s\n", str); } return result; } @@ -558,7 +558,7 @@ template <> size_t SnapshotSerializer::Write(const SnapshotMetadata& data) { if (is_debug) { std::string str = ToStr(data); - Debug("\nWrite() %s\n", str.c_str()); + Debug("\nWrite() %s\n", str); } size_t written_total = 0; // We need the Node.js version, platform and arch to match because @@ -566,7 +566,7 @@ size_t SnapshotSerializer::Write(const SnapshotMetadata& data) { // can be changed in semver-patches. Debug("Write snapshot type %d\n", static_cast(data.type)); written_total += WriteArithmetic(static_cast(data.type)); - Debug("Write Node.js version %s\n", data.node_version.c_str()); + Debug("Write Node.js version %s\n", data.node_version); written_total += WriteString(data.node_version); Debug("Write Node.js arch %s\n", data.node_arch); written_total += WriteString(data.node_arch); @@ -1130,8 +1130,8 @@ ExitCode BuildCodeCacheFromSnapshot(SnapshotData* out, std::string size_str = FormatSize(item.data.length); per_process::Debug(DebugCategory::MKSNAPSHOT, "Generated code cache for %d: %s\n", - item.id.c_str(), - size_str.c_str()); + item.id, + size_str); } } return ExitCode::kNoFailure; diff --git a/src/node_sqlite.cc b/src/node_sqlite.cc index 050d779bdcd2b3..da5ab1eee5fa13 100644 --- a/src/node_sqlite.cc +++ b/src/node_sqlite.cc @@ -886,7 +886,7 @@ std::optional ValidateDatabasePath(Environment* env, THROW_ERR_INVALID_ARG_TYPE(env->isolate(), "The \"%s\" argument must be a string, " "Uint8Array, or URL without null bytes.", - field_name.c_str()); + field_name); return std::nullopt; } diff --git a/src/permission/fs_permission.cc b/src/permission/fs_permission.cc index 63dfc25f536c7c..3b817c5bcdce75 100644 --- a/src/permission/fs_permission.cc +++ b/src/permission/fs_permission.cc @@ -102,10 +102,8 @@ void PrintTree(const node::permission::FSPermission::RadixTree::Node* node, } } - node::per_process::Debug(node::DebugCategory::PERMISSION_MODEL, - "%s%s\n", - indent.c_str(), - node->prefix.c_str()); + node::per_process::Debug( + node::DebugCategory::PERMISSION_MODEL, "%s%s\n", indent, node->prefix); } if (node->children.size() > 0) { From 5cdcba17ccfa7adae8cf766e31c9a357b23cebe1 Mon Sep 17 00:00:00 2001 From: Amol Yadav Date: Sat, 14 Feb 2026 20:41:22 +0530 Subject: [PATCH 063/267] http2: add http1Options for HTTP/1 fallback configuration PR-URL: https://github.com/nodejs/node/pull/61713 Fixes: https://github.com/nodejs/node/issues/59783 Reviewed-By: Robert Nagy Reviewed-By: Stephen Belanger Reviewed-By: Tim Perry --- doc/api/deprecations.md | 38 +++++++++++++++++ doc/api/http2.md | 41 +++++++++++++++++++ lib/internal/http2/core.js | 29 ++++++++----- ...ttp2-https-fallback-http-server-options.js | 11 ++++- 4 files changed, 107 insertions(+), 12 deletions(-) diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index 9423b2147896d6..20913a77b1348d 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -4335,6 +4335,42 @@ Passing the `type` option to [`Duplex.toWeb()`][] is deprecated. To specify the type of the readable half of the constructed readable-writable pair, use the `readableType` option instead. +### DEP0202: `Http1IncomingMessage` and `Http1ServerResponse` options of HTTP/2 servers + + + +Type: Documentation-only + +The `Http1IncomingMessage` and `Http1ServerResponse` options of +[`http2.createServer()`][] and [`http2.createSecureServer()`][] are +deprecated. Use `http1Options.IncomingMessage` and +`http1Options.ServerResponse` instead. + +```cjs +// Deprecated +const server = http2.createSecureServer({ + allowHTTP1: true, + Http1IncomingMessage: MyIncomingMessage, + Http1ServerResponse: MyServerResponse, +}); +``` + +```cjs +// Use this instead +const server = http2.createSecureServer({ + allowHTTP1: true, + http1Options: { + IncomingMessage: MyIncomingMessage, + ServerResponse: MyServerResponse, + }, +}); +``` + [DEP0142]: #dep0142-repl_builtinlibs [NIST SP 800-38D]: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf [RFC 6066]: https://tools.ietf.org/html/rfc6066#section-3 @@ -4416,6 +4452,8 @@ type of the readable half of the constructed readable-writable pair, use the [`http.ServerResponse`]: http.md#class-httpserverresponse [`http.get()`]: http.md#httpgetoptions-callback [`http.request()`]: http.md#httprequestoptions-callback +[`http2.createSecureServer()`]: http2.md#http2createsecureserveroptions-onrequesthandler +[`http2.createServer()`]: http2.md#http2createserveroptions-onrequesthandler [`https.get()`]: https.md#httpsgetoptions-callback [`https.request()`]: https.md#httpsrequestoptions-callback [`message.connection`]: http.md#messageconnection diff --git a/doc/api/http2.md b/doc/api/http2.md index e4a82f4a9642b0..f11b94efdb52db 100644 --- a/doc/api/http2.md +++ b/doc/api/http2.md @@ -2786,6 +2786,10 @@ Throws `ERR_INVALID_ARG_TYPE` for invalid `settings` argument. + +* `data` {Object} + * `tests` {Array} An array of objects containing information about the + interrupted tests. + * `column` {number|undefined} The column number where the test is defined, + or `undefined` if the test was run through the REPL. + * `file` {string|undefined} The path of the test file, + `undefined` if test was run through the REPL. + * `line` {number|undefined} The line number where the test is defined, or + `undefined` if the test was run through the REPL. + * `name` {string} The test name. + * `nesting` {number} The nesting level of the test. + +Emitted when the test runner is interrupted by a `SIGINT` signal (e.g., when +pressing Ctrl+C). The event contains information about +the tests that were running at the time of interruption. + +When using process isolation (the default), the test name will be the file path +since the parent runner only knows about file-level tests. When using +`--test-isolation=none`, the actual test name is shown. + ### Event: `'test:pass'` * `data` {Object} diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js index 6b3b13b2c88d65..5418a14a4410a4 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -3,6 +3,7 @@ const { ArrayPrototypeForEach, ArrayPrototypePush, FunctionPrototypeBind, + Promise, PromiseResolve, PromiseWithResolvers, SafeMap, @@ -32,7 +33,7 @@ const { PassThrough, compose } = require('stream'); const { reportReruns } = require('internal/test_runner/reporter/rerun'); const { queueMicrotask } = require('internal/process/task_queues'); const { TIMEOUT_MAX } = require('internal/timers'); -const { clearInterval, setInterval } = require('timers'); +const { clearInterval, setImmediate, setInterval } = require('timers'); const { bigint: hrtime } = process.hrtime; const testResources = new SafeMap(); let globalRoot; @@ -289,7 +290,33 @@ function setupProcessState(root, globalOptions) { } }; + const findRunningTests = (test, running = []) => { + if (test.startTime !== null && !test.finished) { + for (let i = 0; i < test.subtests.length; i++) { + findRunningTests(test.subtests[i], running); + } + // Only add leaf tests (innermost running tests) + if (test.activeSubtests === 0 && test.name !== '') { + ArrayPrototypePush(running, { + __proto__: null, + name: test.name, + nesting: test.nesting, + file: test.loc?.file, + line: test.loc?.line, + column: test.loc?.column, + }); + } + } + return running; + }; + const terminationHandler = async () => { + const runningTests = findRunningTests(root); + if (runningTests.length > 0) { + root.reporter.interrupted(runningTests); + // Allow the reporter stream to process the interrupted event + await new Promise((resolve) => setImmediate(resolve)); + } await exitHandler(true); process.exit(); }; diff --git a/lib/internal/test_runner/reporter/spec.js b/lib/internal/test_runner/reporter/spec.js index 14c447f316492f..fce0754e25061a 100644 --- a/lib/internal/test_runner/reporter/spec.js +++ b/lib/internal/test_runner/reporter/spec.js @@ -106,8 +106,31 @@ class SpecReporter extends Transform { break; case 'test:watch:restarted': return `\nRestarted at ${DatePrototypeToLocaleString(new Date())}\n`; + case 'test:interrupted': + return this.#formatInterruptedTests(data.tests); } } + #formatInterruptedTests(tests) { + if (tests.length === 0) { + return ''; + } + + const results = [ + `\n${colors.yellow}Interrupted while running:${colors.white}\n`, + ]; + + for (let i = 0; i < tests.length; i++) { + const test = tests[i]; + let msg = `${indent(test.nesting)}${reporterUnicodeSymbolMap['warning:alert']}${test.name}`; + if (test.file) { + const relPath = relative(this.#cwd, test.file); + msg += ` ${colors.gray}(${relPath}:${test.line}:${test.column})${colors.white}`; + } + ArrayPrototypePush(results, msg); + } + + return ArrayPrototypeJoin(results, '\n') + '\n'; + } _transform({ type, data }, encoding, callback) { callback(null, this.#handleEvent({ __proto__: null, type, data })); } diff --git a/lib/internal/test_runner/reporter/tap.js b/lib/internal/test_runner/reporter/tap.js index 01c698871b9134..5d25fdda15959f 100644 --- a/lib/internal/test_runner/reporter/tap.js +++ b/lib/internal/test_runner/reporter/tap.js @@ -61,6 +61,16 @@ async function * tapReporter(source) { case 'test:coverage': yield getCoverageReport(indent(data.nesting), data.summary, '# ', '', true); break; + case 'test:interrupted': + for (let i = 0; i < data.tests.length; i++) { + const test = data.tests[i]; + let msg = `Interrupted while running: ${test.name}`; + if (test.file) { + msg += ` at ${test.file}:${test.line}:${test.column}`; + } + yield `# ${tapEscape(msg)}\n`; + } + break; } } } diff --git a/lib/internal/test_runner/tests_stream.js b/lib/internal/test_runner/tests_stream.js index 7b64487696f53f..17b6890b5fc5df 100644 --- a/lib/internal/test_runner/tests_stream.js +++ b/lib/internal/test_runner/tests_stream.js @@ -149,6 +149,13 @@ class TestsStream extends Readable { }); } + interrupted(tests) { + this[kEmitMessage]('test:interrupted', { + __proto__: null, + tests, + }); + } + end() { this.#tryPush(null); } diff --git a/test/parallel/test-runner-exit-code.js b/test/parallel/test-runner-exit-code.js index 792c5f1717bd60..4024a52841bb28 100644 --- a/test/parallel/test-runner-exit-code.js +++ b/test/parallel/test-runner-exit-code.js @@ -6,7 +6,7 @@ const { spawnSync, spawn } = require('child_process'); const { once } = require('events'); const { finished } = require('stream/promises'); -async function runAndKill(file) { +async function runAndKill(file, expectedTestName) { if (common.isWindows) { common.printSkipMessage(`signals are not supported in windows, skipping ${file}`); return; @@ -21,6 +21,9 @@ async function runAndKill(file) { const [code, signal] = await once(child, 'exit'); await finished(child.stdout); assert(stdout.startsWith('TAP version 13\n')); + // Verify interrupted test message + assert(stdout.includes(`Interrupted while running: ${expectedTestName}`), + `Expected output to contain interrupted test name`); assert.strictEqual(signal, null); assert.strictEqual(code, 1); } @@ -67,6 +70,10 @@ if (process.argv[2] === 'child') { assert.strictEqual(child.status, 1); assert.strictEqual(child.signal, null); - runAndKill(fixtures.path('test-runner', 'never_ending_sync.js')).then(common.mustCall()); - runAndKill(fixtures.path('test-runner', 'never_ending_async.js')).then(common.mustCall()); + // With process isolation (default), the test name shown is the file path + // because the parent runner only knows about file-level tests + const neverEndingSync = fixtures.path('test-runner', 'never_ending_sync.js'); + const neverEndingAsync = fixtures.path('test-runner', 'never_ending_async.js'); + runAndKill(neverEndingSync, neverEndingSync).then(common.mustCall()); + runAndKill(neverEndingAsync, neverEndingAsync).then(common.mustCall()); } From a0316d33b577b55e0dcfd9fe47fd11b587be269c Mon Sep 17 00:00:00 2001 From: Efe Date: Sat, 14 Feb 2026 20:06:30 +0100 Subject: [PATCH 065/267] watch: get flags from execArgv PR-URL: https://github.com/nodejs/node/pull/61779 Reviewed-By: Moshe Atlow Reviewed-By: Yagiz Nizipli Reviewed-By: Colin Ihrig Reviewed-By: Marco Ippolito --- lib/internal/main/watch_mode.js | 9 ++++----- test/sequential/test-watch-mode.mjs | 29 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/lib/internal/main/watch_mode.js b/lib/internal/main/watch_mode.js index 225436661f5e56..06c2c8602da444 100644 --- a/lib/internal/main/watch_mode.js +++ b/lib/internal/main/watch_mode.js @@ -18,7 +18,7 @@ const { triggerUncaughtException, exitCodes: { kNoFailure }, } = internalBinding('errors'); -const { getOptionValue, getOptionsAsFlagsFromBinding } = require('internal/options'); +const { getOptionValue } = require('internal/options'); const { FilesWatcher } = require('internal/watch_mode/files_watcher'); const { green, blue, red, white, clear } = require('internal/util/colors'); const { convertToValidSignal } = require('internal/util'); @@ -44,14 +44,13 @@ const kCommand = ArrayPrototypeSlice(process.argv, 1); const kCommandStr = inspect(ArrayPrototypeJoin(kCommand, ' ')); const argsWithoutWatchOptions = []; -const argsFromBinding = getOptionsAsFlagsFromBinding(); -for (let i = 0; i < argsFromBinding.length; i++) { - const arg = argsFromBinding[i]; +for (let i = 0; i < process.execArgv.length; i++) { + const arg = process.execArgv[i]; if (StringPrototypeStartsWith(arg, '--watch=')) { continue; } if (arg === '--watch') { - const nextArg = argsFromBinding[i + 1]; + const nextArg = process.execArgv[i + 1]; if (nextArg && nextArg[0] !== '-') { // If `--watch` doesn't include `=` and the next // argument is not a flag then it is interpreted as diff --git a/test/sequential/test-watch-mode.mjs b/test/sequential/test-watch-mode.mjs index 4fb0f0acb377c3..a5cac129ad1c21 100644 --- a/test/sequential/test-watch-mode.mjs +++ b/test/sequential/test-watch-mode.mjs @@ -893,4 +893,33 @@ process.on('message', (message) => { await done(); } }); + + it('should respect the order for --env-file and --env-file-if-exists', async () => { + const envKey = `TEST_ENV_${Date.now()}`; + const jsFile = createTmpFile(`console.log('ENV: ' + process.env.${envKey});`); + + const envFile = createTmpFile(`${envKey}=base`, '.env'); + const envFileIfExists = createTmpFile(`${envKey}=override`, '.env'); + + const { done, restart } = runInBackground({ + args: [ + '--watch', + `--env-file=${envFile}`, + `--env-file-if-exists=${envFileIfExists}`, + jsFile, + ], + }); + + try { + const { stdout, stderr } = await restart(); + + assert.strictEqual(stderr, ''); + assert.deepStrictEqual(stdout, [ + 'ENV: override', + `Completed running ${inspect(jsFile)}. Waiting for file changes before restarting...`, + ]); + } finally { + await done(); + } + }); }); From 460f41233de07b3e1376a0699bcca63e7abd8e2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9?= Date: Sat, 14 Feb 2026 23:41:39 +0000 Subject: [PATCH 066/267] test: check stability block position in API markdown MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/58590 Reviewed-By: Yagiz Nizipli Reviewed-By: Luigi Pinca Reviewed-By: Ethan Arrowood Reviewed-By: Gürgün Dayıoğlu --- doc/api/buffer.md | 4 +- doc/api/environment_variables.md | 4 +- .../doctool/test-stability-block-position.mjs | 52 +++++++++++++++++++ 3 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 test/doctool/test-stability-block-position.mjs diff --git a/doc/api/buffer.md b/doc/api/buffer.md index 7c358edbc7c095..a03b95c1ffe3c3 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -3524,13 +3524,13 @@ changes: calculations with them. --> +> Stability: 0 - Deprecated: Use [`buf.subarray`][] instead. + * `start` {integer} Where the new `Buffer` will start. **Default:** `0`. * `end` {integer} Where the new `Buffer` will end (not inclusive). **Default:** [`buf.length`][]. * Returns: {Buffer} -> Stability: 0 - Deprecated: Use [`buf.subarray`][] instead. - Returns a new `Buffer` that references the same memory as the original, but offset and cropped by the `start` and `end` indexes. diff --git a/doc/api/environment_variables.md b/doc/api/environment_variables.md index 114287251f91a2..6e114c1b9dcce7 100644 --- a/doc/api/environment_variables.md +++ b/doc/api/environment_variables.md @@ -18,10 +18,10 @@ For more details refer to the [`process.env` documentation][]. ## DotEnv -Set of utilities for dealing with additional environment variables defined in `.env` files. - > Stability: 2 - Stable +Set of utilities for dealing with additional environment variables defined in `.env` files. + ### .env files `.env` files (also known as dotenv files) are files that define environment variables, diff --git a/test/doctool/test-stability-block-position.mjs b/test/doctool/test-stability-block-position.mjs new file mode 100644 index 00000000000000..d1bd509cd2bd93 --- /dev/null +++ b/test/doctool/test-stability-block-position.mjs @@ -0,0 +1,52 @@ +import '../common/index.mjs'; + +import fs from 'fs'; +import assert from 'assert'; + +import { + remarkParse, + unified, +} from '../../tools/doc/deps.mjs'; + +const ignore = ['deprecations.md', 'documentation.md']; + +const docURL = new URL('../../doc/api/', import.meta.url); +const docList = fs.readdirSync(docURL).filter((filename) => !ignore.includes(filename)); + +const re = /^Stability: \d/; + +for (const file of docList) { + const fileURL = new URL(file, docURL); + const tree = unified() + .use(remarkParse) + .parse(fs.readFileSync(fileURL)); + + // Traverse first-level nodes, ignoring comment blocks + const nodes = tree.children.filter((node) => node.type !== 'html'); + + for (let i = 0; i < nodes.length; i++) { + const { [i]: node, [i - 1]: previousNode } = nodes; + if (node.type !== 'blockquote' || !node.children.length) continue; + + const paragraph = node.children[0]; + if (paragraph.type !== 'paragraph' || !paragraph.children.length) continue; + + const text = paragraph.children[0]; + if (text.type !== 'text' || !re.exec(text.value)) continue; + + // Check that previous node type (excluding comment blocks) is one of: + // * 'heading' + // * 'paragraph' with a leading 'strong' node (pseudo-heading, eg. assert.equal) + try { + assert(previousNode.type === 'heading' || + (previousNode.type === 'paragraph' && previousNode.children[0]?.type === 'strong'), + 'Stability block must be the first content element under heading'); + } catch (error) { + const { line, column } = node.position.start; + error.stack = error.stack.split('\n') + .toSpliced(1, 0, ` at ${fileURL}:${line}:${column}`) + .join('\n'); + throw error; + } + } +} From 08d2e40694a298e4dcb4e5854cc1bd38eabc085f Mon Sep 17 00:00:00 2001 From: RajeshKumar11 Date: Mon, 16 Feb 2026 13:56:48 +0530 Subject: [PATCH 067/267] http: attach error handler to socket synchronously in onSocket Between onSocket and onSocketNT, the socket had no error handler, meaning any errors emitted during that window (e.g. from a blocklist check or custom lookup) would be unhandled even if the user had set up a request error handler. Fix this by attaching socketErrorListener synchronously in onSocket, setting socket._httpMessage so the listener can forward errors to the request. The _destroy path in onSocketNT is also guarded to prevent double-firing if socketErrorListener already emitted the error. Fixes: https://github.com/nodejs/node/issues/48771 Refs: https://github.com/nodejs/node/pull/61658 PR-URL: https://github.com/nodejs/node/pull/61770 Refs: https://github.com/nodejs/node/issues/48771 Reviewed-By: Tim Perry Reviewed-By: Luigi Pinca Reviewed-By: Matteo Collina --- lib/_http_client.js | 20 +++++++++++++------ lib/net.js | 18 +++++------------ ...est-http-request-lookup-error-catchable.js | 4 ++-- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/lib/_http_client.js b/lib/_http_client.js index 68fec845695f26..1358a441c15f90 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -571,7 +571,7 @@ function socketErrorListener(err) { if (req) { // For Safety. Some additional errors might fire later on // and we need to make sure we don't double-fire the error event. - req.socket._hadError = true; + socket._hadError = true; emitErrorEvent(req, err); } @@ -910,7 +910,6 @@ function tickOnSocket(req, socket) { parser.joinDuplicateHeaders = req.joinDuplicateHeaders; parser.onIncoming = parserOnIncomingClient; - socket.on('error', socketErrorListener); socket.on('data', socketOnData); socket.on('end', socketOnEnd); socket.on('close', socketCloseListener); @@ -949,8 +948,15 @@ function listenSocketTimeout(req) { } ClientRequest.prototype.onSocket = function onSocket(socket, err) { - // TODO(ronag): Between here and onSocketNT the socket - // has no 'error' handler. + // Attach the error listener synchronously so that any errors emitted on + // the socket before onSocketNT runs (e.g. from a blocklist check or other + // next-tick error) are forwarded to the request and can be caught by the + // user's error handler. socketErrorListener requires socket._httpMessage + // to be set so we set it here too. + if (socket && !err) { + socket._httpMessage = this; + socket.on('error', socketErrorListener); + } process.nextTick(onSocketNT, this, socket, err); }; @@ -962,8 +968,10 @@ function onSocketNT(req, socket, err) { if (!req.aborted && !err) { err = new ConnResetException('socket hang up'); } - // ERR_PROXY_TUNNEL is handled by the proxying logic - if (err && err.code !== 'ERR_PROXY_TUNNEL') { + // ERR_PROXY_TUNNEL is handled by the proxying logic. + // Skip if the error was already emitted by the early socketErrorListener. + if (err && err.code !== 'ERR_PROXY_TUNNEL' && + !socket?._hadError) { emitErrorEvent(req, err); } req._closed = true; diff --git a/lib/net.js b/lib/net.js index cbde238ba0a2ce..e22ef4bfc4bff0 100644 --- a/lib/net.js +++ b/lib/net.js @@ -1125,7 +1125,7 @@ function internalConnect( err = checkBindError(err, localPort, self._handle); if (err) { const ex = new ExceptionWithHostPort(err, 'bind', localAddress, localPort); - process.nextTick(emitErrorAndDestroy, self, ex); + self.destroy(ex); return; } } @@ -1135,7 +1135,7 @@ function internalConnect( if (addressType === 6 || addressType === 4) { if (self.blockList?.check(address, `ipv${addressType}`)) { - process.nextTick(emitErrorAndDestroy, self, new ERR_IP_BLOCKED(address)); + self.destroy(new ERR_IP_BLOCKED(address)); return; } const req = new TCPConnectWrap(); @@ -1167,20 +1167,12 @@ function internalConnect( } const ex = new ExceptionWithHostPort(err, 'connect', address, port, details); - process.nextTick(emitErrorAndDestroy, self, ex); + self.destroy(ex); } else if ((addressType === 6 || addressType === 4) && hasObserver('net')) { startPerf(self, kPerfHooksNetConnectContext, { type: 'net', name: 'connect', detail: { host: address, port } }); } } -// Helper function to defer socket destruction to the next tick. -// This ensures that error handlers have a chance to be set up -// before the error is emitted, particularly important when using -// http.request with a custom lookup function. -function emitErrorAndDestroy(self, err) { - self.destroy(err); -} - function internalConnectMultiple(context, canceled) { clearTimeout(context[kTimeout]); @@ -1194,11 +1186,11 @@ function internalConnectMultiple(context, canceled) { // All connections have been tried without success, destroy with error if (canceled || context.current === context.addresses.length) { if (context.errors.length === 0) { - process.nextTick(emitErrorAndDestroy, self, new ERR_SOCKET_CONNECTION_TIMEOUT()); + self.destroy(new ERR_SOCKET_CONNECTION_TIMEOUT()); return; } - process.nextTick(emitErrorAndDestroy, self, new NodeAggregateError(context.errors)); + self.destroy(new NodeAggregateError(context.errors)); return; } diff --git a/test/parallel/test-http-request-lookup-error-catchable.js b/test/parallel/test-http-request-lookup-error-catchable.js index 905f841c77c096..242f6ad45a553f 100644 --- a/test/parallel/test-http-request-lookup-error-catchable.js +++ b/test/parallel/test-http-request-lookup-error-catchable.js @@ -13,8 +13,8 @@ const net = require('net'); // 2. The lookup returns an IP that triggers a synchronous error (e.g., blockList) // 3. The error is emitted before http's error handler is set up (via nextTick) // -// The fix defers socket.destroy() calls in internalConnect to the next tick, -// giving http.request() time to set up its error handlers. +// The fix attaches socketErrorListener synchronously in onSocket so that +// socket errors are forwarded to the request before onSocketNT runs. const blockList = new net.BlockList(); blockList.addAddress(common.localhostIPv4); From 2cf77eadd1e0249757c3962112d363ea21347c6a Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Mon, 16 Feb 2026 15:59:14 +0100 Subject: [PATCH 068/267] build: generate_config_gypi.py generates valid JSON PR-URL: https://github.com/nodejs/node/pull/61791 Reviewed-By: Chengzhong Wu Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca --- tools/generate_config_gypi.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/generate_config_gypi.py b/tools/generate_config_gypi.py index abd11e1dbda8d4..436767e633e1f4 100755 --- a/tools/generate_config_gypi.py +++ b/tools/generate_config_gypi.py @@ -58,7 +58,7 @@ def translate_config(out_dir, config, v8_config): 'llvm_version': 13, 'napi_build_version': config['napi_build_version'], 'node_builtin_shareable_builtins': - eval(config['node_builtin_shareable_builtins']), + json.loads(config['node_builtin_shareable_builtins']), 'node_module_version': int(config['node_module_version']), 'node_use_openssl': config['node_use_openssl'], 'node_use_amaro': config['node_use_amaro'], @@ -102,7 +102,8 @@ def main(): # Write output. with open(args.target, 'w') as f: - f.write(repr(translate_config(args.out_dir, config, v8_config))) + f.write(json.dumps(translate_config(args.out_dir, config, v8_config), + sort_keys=True)) # Write depfile. Force regenerating config.gypi when GN configs change. if args.dep_file: From 6fec39782803cb89916adcff344a7a7e78ea8ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9?= Date: Mon, 16 Feb 2026 20:03:40 +0000 Subject: [PATCH 069/267] doc: clean up globals.md PR-URL: https://github.com/nodejs/node/pull/61822 Reviewed-By: Luigi Pinca Reviewed-By: Colin Ihrig --- doc/api/globals.md | 224 +++++++++++++++++++++++---------------------- 1 file changed, 115 insertions(+), 109 deletions(-) diff --git a/doc/api/globals.md b/doc/api/globals.md index 7b62b8ac871b6d..8b96e41bed3f36 100644 --- a/doc/api/globals.md +++ b/doc/api/globals.md @@ -21,6 +21,14 @@ The objects listed here are specific to Node.js. There are [built-in objects][] that are part of the JavaScript language itself, which are also globally accessible. +## `__dirname` + +This variable may appear to be global but is not. See [`__dirname`][]. + +## `__filename` + +This variable may appear to be global but is not. See [`__filename`][]. + ## Class: `AbortController` -* Type: {boolean} True after the `AbortController` has been aborted. +* Type: {boolean} + +True after the `AbortController` has been aborted. -#### `abortSignal.onabort` +### `abortSignal.onabort` - -See {Blob}. - -## Class: `Buffer` - - - -* Type: {Function} - -Used to handle binary data. See the [buffer section][]. - -## Class: `ByteLengthQueuingStrategy` - - - -A browser-compatible implementation of [`ByteLengthQueuingStrategy`][]. - -## `__dirname` - -This variable may appear to be global but is not. See [`__dirname`][]. - -## `__filename` - -This variable may appear to be global but is not. See [`__filename`][]. - ## `atob(data)` + +See {Blob}. + ## Class: `BroadcastChannel` + +* Type: {Function} + +Used to handle binary data. See the [buffer section][]. + +## Class: `ByteLengthQueuingStrategy` + + + +A browser-compatible implementation of [`ByteLengthQueuingStrategy`][]. + ## `clearImmediate(immediateObject)` + +The WHATWG {DOMException} class. + ## Class: `Event` -* Type: {Array} +* Type: {string\[]} The `navigator.languages` read-only property returns an array of strings representing the preferred languages of the Node.js instance. @@ -755,36 +765,6 @@ The fallback value on builds without ICU is `['en-US']`. console.log(`The preferred languages are '${navigator.languages}'`); ``` -### `navigator.platform` - - - -* Type: {string} - -The `navigator.platform` read-only property returns a string identifying the -platform on which the Node.js instance is running. - -```js -console.log(`This process is running on ${navigator.platform}`); -``` - -### `navigator.userAgent` - - - -* Type: {string} - -The `navigator.userAgent` read-only property returns user agent -consisting of the runtime name and major version number. - -```js -console.log(`The user-agent is ${navigator.userAgent}`); // Prints "Node.js/21" -``` - ### `navigator.locks` + +* Type: {string} + +The `navigator.platform` read-only property returns a string identifying the +platform on which the Node.js instance is running. + +```js +console.log(`This process is running on ${navigator.platform}`); +``` + +### `navigator.userAgent` + + + +* Type: {string} + +The `navigator.userAgent` read-only property returns user agent +consisting of the runtime name and major version number. + +```js +console.log(`The user-agent is ${navigator.userAgent}`); // Prints "Node.js/21" +``` + +## `performance` + + + +The [`perf_hooks.performance`][] object. + ## Class: `PerformanceEntry` - -The [`perf_hooks.performance`][] object. - ## `process` -A browser-compatible implementation of {Response}. +A browser-compatible implementation of {Request}. -## Class: `Request` +## `require()` + +This variable may appear to be global but is not. See [`require()`][]. + +## Class: `Response` -A browser-compatible implementation of {Request}. +A browser-compatible implementation of {Response}. ## `sessionStorage` @@ -1138,14 +1148,6 @@ A browser-compatible implementation of {SubtleCrypto}. This global is available only if the Node.js binary was compiled with including support for the `node:crypto` module. -## Class: `DOMException` - - - -The WHATWG {DOMException} class. - ## Class: `TextDecoder` -> Stability: 1.1 - Active development. +> Stability: 1.2 - Release candidate. diff --git a/lib/sqlite.js b/lib/sqlite.js index 6d6ada72008f1c..db781a21ee1ce7 100644 --- a/lib/sqlite.js +++ b/lib/sqlite.js @@ -1,6 +1,3 @@ 'use strict'; -const { emitExperimentalWarning } = require('internal/util'); - -emitExperimentalWarning('SQLite'); module.exports = internalBinding('sqlite'); From 38e9c66e0f26929599dd7250eb68c2a5829a65cf Mon Sep 17 00:00:00 2001 From: Tim Perry <1526883+pimterry@users.noreply.github.com> Date: Sat, 21 Feb 2026 23:58:52 +0100 Subject: [PATCH 089/267] http2: add strictSingleValueFields option to relax header validation Previously it was impossible to send multiple values for any header or trailer defined officially as supporting only a single value. This is a good default, but in practice many of these headers are used in weird & wonderful ways where this can be problematic. This new option allows for relaxing this restriction to support those cases where required. This option defaults to true so validation will still be applied as before, rejecting multiple single-value fields, unless explicitly disabled. PR-URL: https://github.com/nodejs/node/pull/59917 Reviewed-By: Stephen Belanger --- doc/api/http2.md | 14 ++++ lib/internal/http2/core.js | 58 ++++++++++++--- lib/internal/http2/util.js | 29 +++++--- lib/internal/quic/quic.js | 8 ++- ...ttp2-single-headers-validation-disabled.js | 53 ++++++++++++++ ...> test-http2-single-headers-validation.js} | 0 ...st-http2-util-assert-valid-pseudoheader.js | 18 ++--- test/parallel/test-http2-util-headers-list.js | 72 ++++++++++++++----- 8 files changed, 208 insertions(+), 44 deletions(-) create mode 100644 test/parallel/test-http2-single-headers-validation-disabled.js rename test/parallel/{test-http2-single-headers.js => test-http2-single-headers-validation.js} (100%) diff --git a/doc/api/http2.md b/doc/api/http2.md index f11b94efdb52db..d053c31342cd3b 100644 --- a/doc/api/http2.md +++ b/doc/api/http2.md @@ -2786,6 +2786,9 @@ Throws `ERR_INVALID_ARG_TYPE` for invalid `settings` argument. -```js -const vm = require('node:vm'); +```mjs +import { runInThisContext } from 'node:vm'; let localVar = 'initial value'; -const vmResult = vm.runInThisContext('localVar = "vm";'); +const vmResult = runInThisContext('localVar = "vm";'); +console.log(`vmResult: '${vmResult}', localVar: '${localVar}'`); +// Prints: vmResult: 'vm', localVar: 'initial value' + +const evalResult = eval('localVar = "eval";'); +console.log(`evalResult: '${evalResult}', localVar: '${localVar}'`); +// Prints: evalResult: 'eval', localVar: 'eval' +``` + + + +```cjs +const { runInThisContext } = require('node:vm'); +let localVar = 'initial value'; + +const vmResult = runInThisContext('localVar = "vm";'); console.log(`vmResult: '${vmResult}', localVar: '${localVar}'`); // Prints: vmResult: 'vm', localVar: 'initial value' @@ -1799,15 +1983,17 @@ In order to run a simple web server using the `node:http` module the code passed to the context must either call `require('node:http')` on its own, or have a reference to the `node:http` module passed to it. For instance: -```js -'use strict'; -const vm = require('node:vm'); +```mjs +import { runInThisContext } from 'node:vm'; +import { createRequire } from 'node:module'; + +const require = createRequire(import.meta.url); const code = ` ((require) => { - const http = require('node:http'); + const { createServer } = require('node:http'); - http.createServer((request, response) => { + createServer((request, response) => { response.writeHead(200, { 'Content-Type': 'text/plain' }); response.end('Hello World\\n'); }).listen(8124); @@ -1815,7 +2001,25 @@ const code = ` console.log('Server running at http://127.0.0.1:8124/'); })`; -vm.runInThisContext(code)(require); +runInThisContext(code)(require); +``` + +```cjs +const { runInThisContext } = require('node:vm'); + +const code = ` +((require) => { + const { createServer } = require('node:http'); + + createServer((request, response) => { + response.writeHead(200, { 'Content-Type': 'text/plain' }); + response.end('Hello World\\n'); + }).listen(8124); + + console.log('Server running at http://127.0.0.1:8124/'); +})`; + +runInThisContext(code)(require); ``` The `require()` in the above case shares the state with the context it is @@ -1843,19 +2047,34 @@ The contextifying would introduce some quirks to the `globalThis` value in the c For example, it cannot be frozen, and it is not reference equal to the `contextObject` in the outer context. -```js -const vm = require('node:vm'); +```mjs +import { createContext, runInContext } from 'node:vm'; // An undefined `contextObject` option makes the global object contextified. -const context = vm.createContext(); -console.log(vm.runInContext('globalThis', context) === context); // false +const context = createContext(); +console.log(runInContext('globalThis', context) === context); // false // A contextified global object cannot be frozen. try { - vm.runInContext('Object.freeze(globalThis);', context); + runInContext('Object.freeze(globalThis);', context); } catch (e) { - console.log(e); // TypeError: Cannot freeze + console.log(`${e.constructor.name}: ${e.message}`); // TypeError: Cannot freeze } -console.log(vm.runInContext('globalThis.foo = 1; foo;', context)); // 1 +console.log(runInContext('globalThis.foo = 1; foo;', context)); // 1 +``` + +```cjs +const { createContext, runInContext } = require('node:vm'); + +// An undefined `contextObject` option makes the global object contextified. +const context = createContext(); +console.log(runInContext('globalThis', context) === context); // false +// A contextified global object cannot be frozen. +try { + runInContext('Object.freeze(globalThis);', context); +} catch (e) { + console.log(`${e.constructor.name}: ${e.message}`); // TypeError: Cannot freeze +} +console.log(runInContext('globalThis.foo = 1; foo;', context)); // 1 ``` To create a context with an ordinary global object and get access to a global proxy in @@ -1869,16 +2088,29 @@ a context without wrapping its global object with another object in a Node.js-sp As a result, the `globalThis` value inside the new context would behave more closely to an ordinary one. -```js -const vm = require('node:vm'); +```mjs +import { createContext, runInContext, constants } from 'node:vm'; + +// Use vm.constants.DONT_CONTEXTIFY to freeze the global object. +const context = createContext(constants.DONT_CONTEXTIFY); +runInContext('Object.freeze(globalThis);', context); +try { + runInContext('bar = 1; bar;', context); +} catch (e) { + console.log(`${e.constructor.name}: ${e.message}`); // ReferenceError: bar is not defined +} +``` + +```cjs +const { createContext, runInContext, constants } = require('node:vm'); // Use vm.constants.DONT_CONTEXTIFY to freeze the global object. -const context = vm.createContext(vm.constants.DONT_CONTEXTIFY); -vm.runInContext('Object.freeze(globalThis);', context); +const context = createContext(constants.DONT_CONTEXTIFY); +runInContext('Object.freeze(globalThis);', context); try { - vm.runInContext('bar = 1; bar;', context); + runInContext('bar = 1; bar;', context); } catch (e) { - console.log(e); // Uncaught ReferenceError: bar is not defined + console.log(`${e.constructor.name}: ${e.message}`); // ReferenceError: bar is not defined } ``` @@ -1887,27 +2119,51 @@ the returned object is a proxy-like object to the global object in the newly cre fewer Node.js-specific quirks. It is reference equal to the `globalThis` value in the new context, can be modified from outside the context, and can be used to access built-ins in the new context directly. -```js -const vm = require('node:vm'); +```mjs +import { createContext, runInContext, constants } from 'node:vm'; + +const context = createContext(constants.DONT_CONTEXTIFY); + +// Returned object is reference equal to globalThis in the new context. +console.log(runInContext('globalThis', context) === context); // true + +// Can be used to access globals in the new context directly. +console.log(context.Array); // [Function: Array] +runInContext('foo = 1;', context); +console.log(context.foo); // 1 +context.bar = 1; +console.log(runInContext('bar;', context)); // 1 + +// Can be frozen and it affects the inner context. +Object.freeze(context); +try { + runInContext('baz = 1; baz;', context); +} catch (e) { + console.log(`${e.constructor.name}: ${e.message}`); // ReferenceError: baz is not defined +} +``` -const context = vm.createContext(vm.constants.DONT_CONTEXTIFY); +```cjs +const { createContext, runInContext, constants } = require('node:vm'); + +const context = createContext(constants.DONT_CONTEXTIFY); // Returned object is reference equal to globalThis in the new context. -console.log(vm.runInContext('globalThis', context) === context); // true +console.log(runInContext('globalThis', context) === context); // true // Can be used to access globals in the new context directly. console.log(context.Array); // [Function: Array] -vm.runInContext('foo = 1;', context); +runInContext('foo = 1;', context); console.log(context.foo); // 1 context.bar = 1; -console.log(vm.runInContext('bar;', context)); // 1 +console.log(runInContext('bar;', context)); // 1 // Can be frozen and it affects the inner context. Object.freeze(context); try { - vm.runInContext('baz = 1; baz;', context); + runInContext('baz = 1; baz;', context); } catch (e) { - console.log(e); // Uncaught ReferenceError: baz is not defined + console.log(`${e.constructor.name}: ${e.message}`); // ReferenceError: baz is not defined } ``` @@ -1923,34 +2179,65 @@ For example, the following code executed by `vm.runInNewContext()` with a timeout of 5 milliseconds schedules an infinite loop to run after a promise resolves. The scheduled loop is never interrupted by the timeout: -```js -const vm = require('node:vm'); +```mjs +import { runInNewContext } from 'node:vm'; + +function loop() { + console.log('entering loop'); + while (1) console.log(Date.now()); +} + +runInNewContext( + 'Promise.resolve().then(() => loop());', + { loop, console }, + { timeout: 5 }, +); +// This is printed *before* 'entering infinite loop' (!) +console.log('done executing'); +``` + +```cjs +const { runInNewContext } = require('node:vm'); function loop() { console.log('entering loop'); while (1) console.log(Date.now()); } -vm.runInNewContext( +runInNewContext( 'Promise.resolve().then(() => loop());', { loop, console }, { timeout: 5 }, ); -// This is printed *before* 'entering loop' (!) +// This is printed *before* 'entering infinite loop' (!) console.log('done executing'); ``` This can be addressed by passing `microtaskMode: 'afterEvaluate'` to the code that creates the `Context`: -```js -const vm = require('node:vm'); +```mjs +import { runInNewContext } from 'node:vm'; + +function loop() { + while (1) console.log(Date.now()); +} + +runInNewContext( + 'Promise.resolve().then(() => loop());', + { loop, console }, + { timeout: 5, microtaskMode: 'afterEvaluate' }, +); +``` + +```cjs +const { runInNewContext } = require('node:vm'); function loop() { while (1) console.log(Date.now()); } -vm.runInNewContext( +runInNewContext( 'Promise.resolve().then(() => loop());', { loop, console }, { timeout: 5, microtaskMode: 'afterEvaluate' }, @@ -1987,15 +2274,12 @@ flow of the outer context is disrupted in a surprising way: the log statement is never executed. ```mjs -import * as vm from 'node:vm'; +import { createContext, runInContext } from 'node:vm'; -const inner_context = vm.createContext({}, { microtaskMode: 'afterEvaluate' }); +const inner_context = createContext({}, { microtaskMode: 'afterEvaluate' }); // runInContext() returns a Promise created in the inner context. -const inner_promise = vm.runInContext( - 'Promise.resolve()', - context, -); +const inner_promise = runInContext('Promise.resolve()', inner_context); // As part of performing `await`, the JavaScript runtime must enqueue a task // on the microtask queue of the context where `inner_promise` was created. @@ -2009,6 +2293,28 @@ await inner_promise; console.log('this will NOT be printed'); ``` +```cjs +const { createContext, runInContext } = require('node:vm'); + +// runInContext() returns a Promise created in the inner context. +const inner_context = createContext({}, { microtaskMode: 'afterEvaluate' }); + +(async () => { + const inner_promise = runInContext('Promise.resolve()', inner_context); + + // As part of performing `await`, the JavaScript runtime must enqueue a task + // on the microtask queue of the context where `inner_promise` was created. + // A task is added on the inner microtask queue, but **it will not be run + // automatically**: this task will remain pending indefinitely. + // + // Since the outer microtask queue is empty, execution in the outer module + // falls through, and the log statement below is never executed. + await inner_promise; + + console.log('this will NOT be printed'); +})(); +``` + To successfully share promises between contexts with different microtask queues, it is necessary to ensure that tasks on the inner microtask queue will be run **whenever** the outer context enqueues a task on the inner microtask queue. From a5a14482fba85641e83de41b22555aeb2a0cd93a Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Sun, 22 Feb 2026 01:19:13 +0100 Subject: [PATCH 092/267] doc: clarify status of feature request issues PR-URL: https://github.com/nodejs/node/pull/61505 Reviewed-By: Colin Ihrig Reviewed-By: Rafael Gonzaga --- doc/contributing/feature-request-management.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/doc/contributing/feature-request-management.md b/doc/contributing/feature-request-management.md index 9331164314fb0e..bb2ecd9d99660b 100644 --- a/doc/contributing/feature-request-management.md +++ b/doc/contributing/feature-request-management.md @@ -1,13 +1,15 @@ # Feature request management -Feature requests are a valuable source of input to the project. -They help our maintainers understand what additions will be of -value to users of the Node.js runtime. - -At the same time, the project is volunteer run and does not -have the ability to direct resources toward specific work. The -features which are implemented are those for which volunteers -are individually motivated to work on. The best way to ensure +Feature requests are not a valuable source of input for the project. +It is usually more productive to first send the Pull Request implementing the +feature, even imperfectly, and let the discussion happen during code review. +That being said, the project still welcomes feature request issues, either for +features you cannot and/or won't implement yourself, or if you need more input +from the community before starting the work. + +The project is volunteer run and does not have the ability to direct resources +toward specific work. The features which are implemented are those for which +volunteers are individually motivated to work on. The best way to ensure a feature gets implemented is to create a PR to add it. The project strives to support people who do that. From 15f32b4935712cbd8bbbb127c6c604ce7e9830a5 Mon Sep 17 00:00:00 2001 From: Thomas Watson Date: Sun, 22 Feb 2026 01:19:40 +0100 Subject: [PATCH 093/267] stream: fix decoded fromList chunk boundary check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correct `fromList()` in decoded string mode to compare `n` against the current chunk length, not the buffer array length. This prevents over-consuming chunks, which can corrupt readable state and crash with `TypeError` when mixing `setEncoding()` and `read(n)`. PR-URL: https://github.com/nodejs/node/pull/61884 Reviewed-By: Robert Nagy Reviewed-By: Ruben Bridgewater Reviewed-By: Ilyas Shabi Reviewed-By: Gürgün Dayıoğlu Reviewed-By: Luigi Pinca Reviewed-By: Matteo Collina Reviewed-By: Minwoo Jung Reviewed-By: Colin Ihrig Reviewed-By: Ethan Arrowood --- lib/internal/streams/readable.js | 2 +- ...est-stream2-read-correct-num-bytes-in-utf8.js | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 test/parallel/test-stream2-read-correct-num-bytes-in-utf8.js diff --git a/lib/internal/streams/readable.js b/lib/internal/streams/readable.js index 00cf273add0453..51444deb355c3b 100644 --- a/lib/internal/streams/readable.js +++ b/lib/internal/streams/readable.js @@ -1664,7 +1664,7 @@ function fromList(n, state) { n -= str.length; buf[idx++] = null; } else { - if (n === buf.length) { + if (n === str.length) { ret += str; buf[idx++] = null; } else { diff --git a/test/parallel/test-stream2-read-correct-num-bytes-in-utf8.js b/test/parallel/test-stream2-read-correct-num-bytes-in-utf8.js new file mode 100644 index 00000000000000..476f041e3f4087 --- /dev/null +++ b/test/parallel/test-stream2-read-correct-num-bytes-in-utf8.js @@ -0,0 +1,16 @@ +'use strict'; + +require('../common'); +const assert = require('assert'); +const { Readable } = require('stream'); + +const readable = new Readable({ read() {} }); +readable.setEncoding('utf8'); + +readable.push('abc'); +readable.push('defgh'); +readable.push(null); + +assert.strictEqual(readable.read(5), 'abcde'); +assert.strictEqual(readable.read(3), 'fgh'); +assert.strictEqual(readable.read(1), null); From 498abf661e81753942dd844e4fb7f95157e88869 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 22 Feb 2026 22:54:49 +0000 Subject: [PATCH 094/267] meta: bump actions/stale from 10.1.1 to 10.2.0 Bumps [actions/stale](https://github.com/actions/stale) from 10.1.1 to 10.2.0. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/997185467fa4f803885201cee163a9f38240193d...b5d41d4e1d5dceea10e7104786b73624c18a190f) --- updated-dependencies: - dependency-name: actions/stale dependency-version: 10.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] PR-URL: https://github.com/nodejs/node/pull/61908 Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca --- .github/workflows/close-stale-feature-requests.yml | 2 +- .github/workflows/close-stalled.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/close-stale-feature-requests.yml b/.github/workflows/close-stale-feature-requests.yml index b6556a72ed790a..cb308cb044bc84 100644 --- a/.github/workflows/close-stale-feature-requests.yml +++ b/.github/workflows/close-stale-feature-requests.yml @@ -41,7 +41,7 @@ jobs: if: github.repository == 'nodejs/node' runs-on: ubuntu-slim steps: - - uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1 + - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-stale: 180 diff --git a/.github/workflows/close-stalled.yml b/.github/workflows/close-stalled.yml index 0665796700976c..4d36d9e93cbc23 100644 --- a/.github/workflows/close-stalled.yml +++ b/.github/workflows/close-stalled.yml @@ -20,7 +20,7 @@ jobs: if: github.repository == 'nodejs/node' runs-on: ubuntu-slim steps: - - uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1 + - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-close: 30 From 16c839a3dd84385465171e8788301edf30aec425 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 22 Feb 2026 22:54:58 +0000 Subject: [PATCH 095/267] meta: bump step-security/harden-runner from 2.14.1 to 2.14.2 Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.14.1 to 2.14.2. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](https://github.com/step-security/harden-runner/compare/e3f713f2d8f53843e71c69a996d56f51aa9adfb9...5ef0c079ce82195b2a36a210272d6b661572d83e) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-version: 2.14.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] PR-URL: https://github.com/nodejs/node/pull/61909 Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b92abbb1ec7283..c85cfddc342afb 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -34,7 +34,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@e3f713f2d8f53843e71c69a996d56f51aa9adfb9 # v2.14.1 + uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs From 830e5cd1257d8f2785de02257d23a15befa38a7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 22 Feb 2026 22:55:15 +0000 Subject: [PATCH 096/267] meta: bump github/codeql-action from 4.32.0 to 4.32.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.0 to 4.32.4. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/b20883b0cd1f46c72ae0ba6d1090936928f9fa30...89a39a4e59826350b863aa6b6252a07ad50cf83e) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.32.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] PR-URL: https://github.com/nodejs/node/pull/61911 Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Gürgün Dayıoğlu --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d29e734a82fd8c..f34a389bbfb7ba 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -27,15 +27,15 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 + uses: github/codeql-action/init@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 with: languages: ${{ matrix.language }} config-file: ./.github/codeql-config.yml - name: Autobuild - uses: github/codeql-action/autobuild@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 + uses: github/codeql-action/autobuild@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 + uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 with: category: /language:${{matrix.language}} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index c85cfddc342afb..6be0ff92f4649f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -74,6 +74,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 + uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 with: sarif_file: results.sarif From 34b63059331c13d5fe5aa614f7e525ce4a4a4438 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 24 Feb 2026 12:30:30 +0100 Subject: [PATCH 097/267] tools: roll back to x86 runner on `scorecard.yml` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/61944 Refs: https://github.com/nodejs/node/pull/61903 Reviewed-By: René Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Ulises Gascón --- .github/workflows/scorecard.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 6be0ff92f4649f..a00e30bae77e50 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -22,7 +22,8 @@ jobs: analysis: name: Scorecard analysis # cannot use ubuntu-slim here because ossf/scorecard-action is dockerized - runs-on: ubuntu-24.04-arm + # cannot use ubuntu-24.04-arm here because the docker image is x86 only + runs-on: ubuntu-latest permissions: # Needed to upload the results to code-scanning dashboard. security-events: write From d8204d3cdb1215a25ec3e113a25dafdd63fe7e14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9?= Date: Tue, 24 Feb 2026 16:00:47 +0000 Subject: [PATCH 098/267] doc: rename invalid `function` parameter PR-URL: https://github.com/nodejs/node/pull/61942 Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Daeyeon Jeong --- doc/api/sqlite.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/api/sqlite.md b/doc/api/sqlite.md index 63503f7f68c3a4..f893d7584de759 100644 --- a/doc/api/sqlite.md +++ b/doc/api/sqlite.md @@ -313,7 +313,7 @@ This method allows one or more SQL statements to be executed without returning any results. This method is useful when executing SQL statements read from a file. This method is a wrapper around [`sqlite3_exec()`][]. -### `database.function(name[, options], function)` +### `database.function(name[, options], fn)` regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC =\n s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3])\n const isDrive = /^[a-z]:/i.test(s[0])\n if (isUNC) {\n return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]\n } else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n }\n }\n return s.map(ss => this.parse(ss))\n })\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n this.set = set.filter(\n s => s.indexOf(false) === -1,\n ) as ParseReturnFiltered[][]\n\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i]\n if (\n p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])\n ) {\n p[2] = '?'\n }\n }\n }\n\n this.debug(this.pattern, this.set)\n }\n\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts: string[][]) {\n // if we're not in globstar mode, then turn all ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*'\n }\n }\n }\n }\n\n const { optimizationLevel = 1 } = this.options\n\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts)\n globParts = this.secondPhasePreProcess(globParts)\n } else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts)\n } else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts)\n }\n\n return globParts\n }\n\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs\n while (parts[i + 1] === '**') {\n i++\n }\n if (i !== gs) {\n parts.splice(gs, i - gs)\n }\n }\n return parts\n })\n }\n\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n parts = parts.reduce((set: string[], part) => {\n const prev = set[set.length - 1]\n if (part === '**' && prev === '**') {\n return set\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop()\n return set\n }\n }\n set.push(part)\n return set\n }, [])\n return parts.length === 0 ? [''] : parts\n })\n }\n\n levelTwoFileOptimize(parts: string | string[]) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts)\n }\n let didSomething: boolean = false\n do {\n didSomething = false\n //
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {\n    const options = this.options\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined\n      const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [file[fdi], pattern[pdi] as string]\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          if (pdi > fdi) {\n            pattern = pattern.slice(pdi)\n          } else if (fdi > pdi) {\n            file = file.slice(fdi)\n          }\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? starDotExtTestNocaseDot\n            : starDotExtTestNocase\n          : options.dot\n            ? starDotExtTestDot\n            : starDotExtTest\n      )(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? qmarksTestNocaseDot\n            : qmarksTestNocase\n          : options.dot\n            ? qmarksTestDot\n            : qmarksTest\n      )(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar = options.noglobstar\n      ? star\n      : options.dot\n        ? twoStarDot\n        : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return typeof p === 'string'\n            ? regExpEscape(p)\n            : p === GLOBSTAR\n              ? GLOBSTAR\n              : p._src\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  /** do not expand `{x,y}` style braces */\n  nobrace?: boolean\n  /** do not treat patterns starting with `#` as a comment */\n  nocomment?: boolean\n  /** do not treat patterns starting with `!` as a negation */\n  nonegate?: boolean\n  /** print LOTS of debugging output */\n  debug?: boolean\n  /** treat `**` the same as `*` */\n  noglobstar?: boolean\n  /** do not expand extglobs like `+(a|b)` */\n  noext?: boolean\n  /** return the pattern if nothing matches */\n  nonull?: boolean\n  /** treat `\\\\` as a path separator, not an escape character */\n  windowsPathsNoEscape?: boolean\n  /**\n   * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n  /**\n   * Compare a partial path to a pattern. As long as the parts\n   * of the path that are present are not contradicted by the\n   * pattern, it will be treated as a match. This is useful in\n   * applications where you're walking through a folder structure,\n   * and don't yet have the full path, but want to ensure that you\n   * do not walk down paths that can never be a match.\n   */\n  partial?: boolean\n  /** allow matches that start with `.` even if the pattern does not */\n  dot?: boolean\n  /** ignore case */\n  nocase?: boolean\n  /** ignore case only in wildcard patterns */\n  nocaseMagicOnly?: boolean\n  /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n  magicalBraces?: boolean\n  /**\n   * If set, then patterns without slashes will be matched\n   * against the basename of the path if it contains slashes.\n   * For example, `a?b` would match the path `/xyz/123/acb`, but\n   * not `/xyz/acb/123`.\n   */\n  matchBase?: boolean\n  /** invert the results of negated matches */\n  flipNegate?: boolean\n  /** do not collapse multiple `/` into a single `/` */\n  preserveMultipleSlashes?: boolean\n  /**\n   * A number indicating the level of optimization that should be done\n   * to the pattern prior to parsing and using it for matches.\n   */\n  optimizationLevel?: number\n  /** operating system platform */\n  platform?: Platform\n  /**\n   * When a pattern starts with a UNC path or drive letter, and in\n   * `nocase:true` mode, do not convert the root portions of the\n   * pattern into a case-insensitive regular expression, and instead\n   * leave them as strings.\n   *\n   * This is the default when the platform is `win32` and\n   * `nocase:true` is set.\n   */\n  windowsNoMagicRoot?: boolean\n  /**\n   * max number of `{...}` patterns to expand. Default 100_000.\n   */\n  braceExpandMax?: number\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n  !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n  f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n  f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n      process.env &&\n      process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n    process.platform\n  : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n  defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) =>\n      orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (\n      list: string[],\n      pattern: string,\n      options: MinimatchOptions = {},\n    ) => orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    // avoid the annoying deprecation flag lol\n    const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options[awe] === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined ?\n        options.windowsNoMagicRoot\n      : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [\n            ...s.slice(0, 4),\n            ...s.slice(4).map(ss => this.parse(ss)),\n          ]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    const options = this.options\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          if (pdi > fdi) {\n            pattern = pattern.slice(pdi)\n          } else if (fdi > pdi) {\n            file = file.slice(fdi)\n          }\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/commonjs/unescape.js b/deps/minimatch/dist/commonjs/unescape.js
index 171098d8a4ceb5..db8d0c847d21b1 100644
--- a/deps/minimatch/dist/commonjs/unescape.js
+++ b/deps/minimatch/dist/commonjs/unescape.js
@@ -22,14 +22,14 @@ exports.unescape = void 0;
  */
 const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => {
     if (magicalBraces) {
-        return windowsPathsNoEscape
-            ? s.replace(/\[([^\/\\])\]/g, '$1')
+        return windowsPathsNoEscape ?
+            s.replace(/\[([^\/\\])\]/g, '$1')
             : s
                 .replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2')
                 .replace(/\\([^\/])/g, '$1');
     }
-    return windowsPathsNoEscape
-        ? s.replace(/\[([^\/\\{}])\]/g, '$1')
+    return windowsPathsNoEscape ?
+        s.replace(/\[([^\/\\{}])\]/g, '$1')
         : s
             .replace(/((?!\\).|^)\[([^\/\\{}])\]/g, '$1$2')
             .replace(/\\([^\/{}])/g, '$1');
diff --git a/deps/minimatch/dist/commonjs/unescape.js.map b/deps/minimatch/dist/commonjs/unescape.js.map
index c66031e863239c..8039823a097313 100644
--- a/deps/minimatch/dist/commonjs/unescape.js.map
+++ b/deps/minimatch/dist/commonjs/unescape.js.map
@@ -1 +1 @@
-{"version":3,"file":"unescape.js","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEI,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,IAAI,MACgD,EAAE,EACxE,EAAE;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB;YACzB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;YACnC,CAAC,CAAC,CAAC;iBACE,OAAO,CAAC,2BAA2B,EAAE,MAAM,CAAC;iBAC5C,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,oBAAoB;QACzB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;QACrC,CAAC,CAAC,CAAC;aACE,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC;aAC9C,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA;AAnBY,QAAA,QAAQ,YAmBpB","sourcesContent":["import { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = true,\n  }: Pick = {},\n) => {\n  if (magicalBraces) {\n    return windowsPathsNoEscape\n      ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n      : s\n          .replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2')\n          .replace(/\\\\([^\\/])/g, '$1')\n  }\n  return windowsPathsNoEscape\n    ? s.replace(/\\[([^\\/\\\\{}])\\]/g, '$1')\n    : s\n        .replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g, '$1$2')\n        .replace(/\\\\([^\\/{}])/g, '$1')\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"unescape.js","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEI,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,IAAI,MACgD,EAAE,EACxE,EAAE;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,CAAC,CAAC;YACzB,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;YACnC,CAAC,CAAC,CAAC;iBACE,OAAO,CAAC,2BAA2B,EAAE,MAAM,CAAC;iBAC5C,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC;QACzB,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;QACrC,CAAC,CAAC,CAAC;aACE,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC;aAC9C,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA;AAnBY,QAAA,QAAQ,YAmBpB","sourcesContent":["import { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = true,\n  }: Pick = {},\n) => {\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n      : s\n          .replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2')\n          .replace(/\\\\([^\\/])/g, '$1')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/\\[([^\\/\\\\{}])\\]/g, '$1')\n    : s\n        .replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g, '$1$2')\n        .replace(/\\\\([^\\/{}])/g, '$1')\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/ast.d.ts.map b/deps/minimatch/dist/esm/ast.d.ts.map
index e15945067ab3a1..b11316b37b4843 100644
--- a/deps/minimatch/dist/esm/ast.d.ts.map
+++ b/deps/minimatch/dist/esm/ast.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwCvD,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAkCrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;gBAiBtB,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IA+ClB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAY/B,MAAM;IAgBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAsIjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IA2BhC,IAAI,OAAO,qBAEV;IAuED,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CAmMjE"}
\ No newline at end of file
+{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwCvD,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAkCrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;gBAiBtB,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IA+ClB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAe/B,MAAM;IAkBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAsIjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IA2BhC,IAAI,OAAO,qBAEV;IAuED,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CAwMjE"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/ast.js b/deps/minimatch/dist/esm/ast.js
index e4547b16131b6c..3bfb960c24dc39 100644
--- a/deps/minimatch/dist/esm/ast.js
+++ b/deps/minimatch/dist/esm/ast.js
@@ -119,7 +119,8 @@ export class AST {
             if (p === '')
                 continue;
             /* c8 ignore start */
-            if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {
+            if (typeof p !== 'string' &&
+                !(p instanceof AST && p.#parent === this)) {
                 throw new Error('invalid part: ' + p);
             }
             /* c8 ignore stop */
@@ -127,8 +128,10 @@ export class AST {
         }
     }
     toJSON() {
-        const ret = this.type === null
-            ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))
+        const ret = this.type === null ?
+            this.#parts
+                .slice()
+                .map(p => (typeof p === 'string' ? p : p.toJSON()))
             : [this.type, ...this.#parts.map(p => p.toJSON())];
         if (this.isStart() && !this.type)
             ret.unshift([]);
@@ -417,8 +420,8 @@ export class AST {
                 !this.#parts.some(s => typeof s !== 'string');
             const src = this.#parts
                 .map(p => {
-                const [re, _, hasMagic, uflag] = typeof p === 'string'
-                    ? AST.#parseGlob(p, this.#hasMagic, noEmpty)
+                const [re, _, hasMagic, uflag] = typeof p === 'string' ?
+                    AST.#parseGlob(p, this.#hasMagic, noEmpty)
                     : p.toRegExpSource(allowDot);
                 this.#hasMagic = this.#hasMagic || hasMagic;
                 this.#uflag = this.#uflag || uflag;
@@ -447,7 +450,10 @@ export class AST {
                         // no need to prevent dots if it can't match a dot, or if a
                         // sub-pattern will be preventing it anyway.
                         const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));
-                        start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';
+                        start =
+                            needNoTrav ? startNoTraversal
+                                : needNoDot ? startNoDot
+                                    : '';
                     }
                 }
             }
@@ -483,8 +489,8 @@ export class AST {
             return [s, unescape(this.toString()), false, false];
         }
         // XXX abstract out this map method
-        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot
-            ? ''
+        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?
+            ''
             : this.#partsToRegExp(true);
         if (bodyDotAllowed === body) {
             bodyDotAllowed = '';
@@ -498,20 +504,16 @@ export class AST {
             final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;
         }
         else {
-            const close = this.type === '!'
-                ? // !() must match something,but !(x) can match ''
-                    '))' +
-                        (this.isStart() && !dot && !allowDot ? startNoDot : '') +
-                        star +
-                        ')'
-                : this.type === '@'
-                    ? ')'
-                    : this.type === '?'
-                        ? ')?'
-                        : this.type === '+' && bodyDotAllowed
-                            ? ')'
-                            : this.type === '*' && bodyDotAllowed
-                                ? `)?`
+            const close = this.type === '!' ?
+                // !() must match something,but !(x) can match ''
+                '))' +
+                    (this.isStart() && !dot && !allowDot ? startNoDot : '') +
+                    star +
+                    ')'
+                : this.type === '@' ? ')'
+                    : this.type === '?' ? ')?'
+                        : this.type === '+' && bodyDotAllowed ? ')'
+                            : this.type === '*' && bodyDotAllowed ? `)?`
                                 : `)${this.type}`;
             final = start + body + close;
         }
@@ -543,6 +545,8 @@ export class AST {
         let escaping = false;
         let re = '';
         let uflag = false;
+        // multiple stars that aren't globstars coalesce into one *
+        let inStar = false;
         for (let i = 0; i < glob.length; i++) {
             const c = glob.charAt(i);
             if (escaping) {
@@ -550,6 +554,17 @@ export class AST {
                 re += (reSpecials.has(c) ? '\\' : '') + c;
                 continue;
             }
+            if (c === '*') {
+                if (inStar)
+                    continue;
+                inStar = true;
+                re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;
+                hasMagic = true;
+                continue;
+            }
+            else {
+                inStar = false;
+            }
             if (c === '\\') {
                 if (i === glob.length - 1) {
                     re += '\\\\';
@@ -569,11 +584,6 @@ export class AST {
                     continue;
                 }
             }
-            if (c === '*') {
-                re += noEmpty && glob === '*' ? starNoEmpty : star;
-                hasMagic = true;
-                continue;
-            }
             if (c === '?') {
                 re += qmark;
                 hasMagic = true;
diff --git a/deps/minimatch/dist/esm/ast.js.map b/deps/minimatch/dist/esm/ast.js.map
index 87bc3f24662158..32dbfd34c3419e 100644
--- a/deps/minimatch/dist/esm/ast.js.map
+++ b/deps/minimatch/dist/esm/ast.js.map
@@ -1 +1 @@
-{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string): c is ExtglobType =>\n  types.has(c as ExtglobType)\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  readonly #parent?: AST\n  readonly #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {},\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null\n        ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n        : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions,\n  ): number {\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      if (isExtglobType(c) && str.charAt(i) === '(') {\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) this.#fillNegs()\n    if (!this.type) {\n      const noEmpty =\n        this.isStart() &&\n        this.isEnd() &&\n        !this.#parts.some(s => typeof s !== 'string')\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string'\n              ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n              : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      this.#parts = [s]\n      this.type = null\n      this.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    // XXX abstract out this map method\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot\n        ? ''\n        : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!'\n          ? // !() must match something,but !(x) can match ''\n            '))' +\n            (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n            star +\n            ')'\n          : this.type === '@'\n            ? ')'\n            : this.type === '?'\n              ? ')?'\n              : this.type === '+' && bodyDotAllowed\n                ? ')'\n                : this.type === '*' && bodyDotAllowed\n                  ? `)?`\n                  : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #partsToRegExp(dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '*') {\n        re += noEmpty && glob === '*' ? starNoEmpty : star\n        hasMagic = true\n        continue\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string): c is ExtglobType =>\n  types.has(c as ExtglobType)\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  readonly #parent?: AST\n  readonly #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {},\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (\n        typeof p !== 'string' &&\n        !(p instanceof AST && p.#parent === this)\n      ) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null ?\n        this.#parts\n          .slice()\n          .map(p => (typeof p === 'string' ? p : p.toJSON()))\n      : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions,\n  ): number {\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      if (isExtglobType(c) && str.charAt(i) === '(') {\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) this.#fillNegs()\n    if (!this.type) {\n      const noEmpty =\n        this.isStart() &&\n        this.isEnd() &&\n        !this.#parts.some(s => typeof s !== 'string')\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string' ?\n              AST.#parseGlob(p, this.#hasMagic, noEmpty)\n            : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start =\n              needNoTrav ? startNoTraversal\n              : needNoDot ? startNoDot\n              : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      this.#parts = [s]\n      this.type = null\n      this.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    // XXX abstract out this map method\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot ?\n        ''\n      : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!' ?\n          // !() must match something,but !(x) can match ''\n          '))' +\n          (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n          star +\n          ')'\n        : this.type === '@' ? ')'\n        : this.type === '?' ? ')?'\n        : this.type === '+' && bodyDotAllowed ? ')'\n        : this.type === '*' && bodyDotAllowed ? `)?`\n        : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #partsToRegExp(dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    // multiple stars that aren't globstars coalesce into one *\n    let inStar = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '*') {\n        if (inStar) continue\n        inStar = true\n        re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n        hasMagic = true\n        continue\n      } else {\n        inStar = false\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/brace-expressions.d.ts.map b/deps/minimatch/dist/esm/brace-expressions.d.ts.map
index 3293e23708527c..09b4c11060de78 100644
--- a/deps/minimatch/dist/esm/brace-expressions.d.ts.map
+++ b/deps/minimatch/dist/esm/brace-expressions.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"brace-expressions.d.ts","sourceRoot":"","sources":["../../src/brace-expressions.ts"],"names":[],"mappings":"AA+BA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,OAAO;CAClB,CAAA;AAQD,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,EACZ,UAAU,MAAM,KACf,gBA6HF,CAAA"}
\ No newline at end of file
+{"version":3,"file":"brace-expressions.d.ts","sourceRoot":"","sources":["../../src/brace-expressions.ts"],"names":[],"mappings":"AAgCA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,OAAO;CAClB,CAAA;AAQD,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,EACZ,UAAU,MAAM,KACf,gBA2HF,CAAA"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/brace-expressions.js b/deps/minimatch/dist/esm/brace-expressions.js
index c629d6ae816e27..4b49d40bd74210 100644
--- a/deps/minimatch/dist/esm/brace-expressions.js
+++ b/deps/minimatch/dist/esm/brace-expressions.js
@@ -138,10 +138,8 @@ export const parseClass = (glob, position) => {
     }
     const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';
     const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';
-    const comb = ranges.length && negs.length
-        ? '(' + sranges + '|' + snegs + ')'
-        : ranges.length
-            ? sranges
+    const comb = ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'
+        : ranges.length ? sranges
             : snegs;
     return [comb, uflag, endPos - pos, true];
 };
diff --git a/deps/minimatch/dist/esm/brace-expressions.js.map b/deps/minimatch/dist/esm/brace-expressions.js.map
index d988fd9fed0fcd..184b5a89c11f4c 100644
--- a/deps/minimatch/dist/esm/brace-expressions.js.map
+++ b/deps/minimatch/dist/esm/brace-expressions.js.map
@@ -1 +1 @@
-{"version":3,"file":"brace-expressions.js","sourceRoot":"","sources":["../../src/brace-expressions.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,wCAAwC;AAExC,8DAA8D;AAC9D,MAAM,YAAY,GAA0D;IAC1E,WAAW,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC;IAC3C,WAAW,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC;IACpC,WAAW,EAAE,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC;IAC7C,WAAW,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;IACjC,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7B,WAAW,EAAE,CAAC,uBAAuB,EAAE,IAAI,CAAC;IAC5C,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,UAAU,EAAE,CAAC,6BAA6B,EAAE,IAAI,CAAC;IACjD,YAAY,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;CACnC,CAAA;AAED,+DAA+D;AAC/D,mBAAmB;AACnB,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;AACjE,qCAAqC;AACrC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAE/C,4DAA4D;AAC5D,MAAM,cAAc,GAAG,CAAC,MAAgB,EAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AASpE,+DAA+D;AAC/D,kEAAkE;AAClE,mEAAmE;AACnE,yCAAyC;AACzC,iEAAiE;AACjE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAY,EACZ,QAAgB,EACE,EAAE;IACpB,MAAM,GAAG,GAAG,QAAQ,CAAA;IACpB,qBAAqB;IACrB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC9C,CAAC;IACD,oBAAoB;IACpB,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,IAAI,GAAa,EAAE,CAAA;IAEzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;IACf,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,KAAK,GAAG,KAAK,CAAA;IACjB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,MAAM,GAAG,GAAG,CAAA;IAChB,IAAI,UAAU,GAAG,EAAE,CAAA;IACnB,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxB,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,GAAG,IAAI,CAAA;YACb,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAA;YACd,MAAK;QACP,CAAC;QAED,QAAQ,GAAG,IAAI,CAAA;QACf,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAA;gBACf,CAAC,EAAE,CAAA;gBACH,SAAQ;YACV,CAAC;YACD,0DAA0D;QAC5D,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,4DAA4D;YAC5D,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC5B,+CAA+C;oBAC/C,IAAI,UAAU,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;oBAC/C,CAAC;oBACD,CAAC,IAAI,GAAG,CAAC,MAAM,CAAA;oBACf,IAAI,GAAG;wBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;wBACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACtB,KAAK,GAAG,KAAK,IAAI,CAAC,CAAA;oBAClB,SAAS,KAAK,CAAA;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,QAAQ,GAAG,KAAK,CAAA;QAChB,IAAI,UAAU,EAAE,CAAC;YACf,sDAAsD;YACtD,mBAAmB;YACnB,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;YAC7D,CAAC;iBAAM,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;YAC7B,CAAC;YACD,UAAU,GAAG,EAAE,CAAA;YACf,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QAED,qCAAqC;QACrC,8DAA8D;QAC9D,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;YACjC,CAAC,IAAI,CAAC,CAAA;YACN,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChC,UAAU,GAAG,CAAC,CAAA;YACd,CAAC,IAAI,CAAC,CAAA;YACN,SAAQ;QACV,CAAC;QAED,oDAAoD;QACpD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,CAAC,EAAE,CAAA;IACL,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,sDAAsD;QACtD,+CAA+C;QAC/C,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,gEAAgE;IAChE,kEAAkE;IAClE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;IAC/C,CAAC;IAED,yEAAyE;IACzE,sEAAsE;IACtE,yEAAyE;IACzE,sEAAsE;IACtE,IACE,IAAI,CAAC,MAAM,KAAK,CAAC;QACjB,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,MAAM,EACP,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAClE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,CAAC,CAAA;IACtD,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,GAAG,CAAA;IACxE,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;IACpE,MAAM,IAAI,GACR,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;QAC1B,CAAC,CAAC,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG;QACnC,CAAC,CAAC,MAAM,CAAC,MAAM;YACb,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,KAAK,CAAA;IAEb,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;AAC1C,CAAC,CAAA","sourcesContent":["// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { : [, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = {\n  '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n  '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n  '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n  '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n  '[:cntrl:]': ['\\\\p{Cc}', true],\n  '[:digit:]': ['\\\\p{Nd}', true],\n  '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n  '[:lower:]': ['\\\\p{Ll}', true],\n  '[:print:]': ['\\\\p{C}', true],\n  '[:punct:]': ['\\\\p{P}', true],\n  '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n  '[:upper:]': ['\\\\p{Lu}', true],\n  '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n  '[:xdigit:]': ['A-Fa-f0-9', false],\n}\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n  src: string,\n  uFlag: boolean,\n  consumed: number,\n  hasMagic: boolean,\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n  glob: string,\n  position: number,\n): ParseClassResult => {\n  const pos = position\n  /* c8 ignore start */\n  if (glob.charAt(pos) !== '[') {\n    throw new Error('not in a brace expression')\n  }\n  /* c8 ignore stop */\n  const ranges: string[] = []\n  const negs: string[] = []\n\n  let i = pos + 1\n  let sawStart = false\n  let uflag = false\n  let escaping = false\n  let negate = false\n  let endPos = pos\n  let rangeStart = ''\n  WHILE: while (i < glob.length) {\n    const c = glob.charAt(i)\n    if ((c === '!' || c === '^') && i === pos + 1) {\n      negate = true\n      i++\n      continue\n    }\n\n    if (c === ']' && sawStart && !escaping) {\n      endPos = i + 1\n      break\n    }\n\n    sawStart = true\n    if (c === '\\\\') {\n      if (!escaping) {\n        escaping = true\n        i++\n        continue\n      }\n      // escaped \\ char, fall through and treat like normal char\n    }\n    if (c === '[' && !escaping) {\n      // either a posix class, a collation equivalent, or just a [\n      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n        if (glob.startsWith(cls, i)) {\n          // invalid, [a-[] is fine, but not [a-[:alpha]]\n          if (rangeStart) {\n            return ['$.', false, glob.length - pos, true]\n          }\n          i += cls.length\n          if (neg) negs.push(unip)\n          else ranges.push(unip)\n          uflag = uflag || u\n          continue WHILE\n        }\n      }\n    }\n\n    // now it's just a normal character, effectively\n    escaping = false\n    if (rangeStart) {\n      // throw this range away if it's not valid, but others\n      // can still match.\n      if (c > rangeStart) {\n        ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n      } else if (c === rangeStart) {\n        ranges.push(braceEscape(c))\n      }\n      rangeStart = ''\n      i++\n      continue\n    }\n\n    // now might be the start of a range.\n    // can be either c-d or c-] or c] or c] at this point\n    if (glob.startsWith('-]', i + 1)) {\n      ranges.push(braceEscape(c + '-'))\n      i += 2\n      continue\n    }\n    if (glob.startsWith('-', i + 1)) {\n      rangeStart = c\n      i += 2\n      continue\n    }\n\n    // not the start of a range, just a single character\n    ranges.push(braceEscape(c))\n    i++\n  }\n\n  if (endPos < i) {\n    // didn't see the end of the class, not a valid class,\n    // but might still be valid as a literal match.\n    return ['', false, 0, false]\n  }\n\n  // if we got no ranges and no negates, then we have a range that\n  // cannot possibly match anything, and that poisons the whole glob\n  if (!ranges.length && !negs.length) {\n    return ['$.', false, glob.length - pos, true]\n  }\n\n  // if we got one positive range, and it's a single character, then that's\n  // not actually a magic pattern, it's just that one literal character.\n  // we should not treat that as \"magic\", we should just return the literal\n  // character. [_] is a perfectly valid way to escape glob magic chars.\n  if (\n    negs.length === 0 &&\n    ranges.length === 1 &&\n    /^\\\\?.$/.test(ranges[0]) &&\n    !negate\n  ) {\n    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n    return [regexpEscape(r), false, endPos - pos, false]\n  }\n\n  const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n  const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n  const comb =\n    ranges.length && negs.length\n      ? '(' + sranges + '|' + snegs + ')'\n      : ranges.length\n        ? sranges\n        : snegs\n\n  return [comb, uflag, endPos - pos, true]\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"brace-expressions.js","sourceRoot":"","sources":["../../src/brace-expressions.ts"],"names":[],"mappings":"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","sourcesContent":["// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { : [, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } =\n  {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n  }\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n  src: string,\n  uFlag: boolean,\n  consumed: number,\n  hasMagic: boolean,\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n  glob: string,\n  position: number,\n): ParseClassResult => {\n  const pos = position\n  /* c8 ignore start */\n  if (glob.charAt(pos) !== '[') {\n    throw new Error('not in a brace expression')\n  }\n  /* c8 ignore stop */\n  const ranges: string[] = []\n  const negs: string[] = []\n\n  let i = pos + 1\n  let sawStart = false\n  let uflag = false\n  let escaping = false\n  let negate = false\n  let endPos = pos\n  let rangeStart = ''\n  WHILE: while (i < glob.length) {\n    const c = glob.charAt(i)\n    if ((c === '!' || c === '^') && i === pos + 1) {\n      negate = true\n      i++\n      continue\n    }\n\n    if (c === ']' && sawStart && !escaping) {\n      endPos = i + 1\n      break\n    }\n\n    sawStart = true\n    if (c === '\\\\') {\n      if (!escaping) {\n        escaping = true\n        i++\n        continue\n      }\n      // escaped \\ char, fall through and treat like normal char\n    }\n    if (c === '[' && !escaping) {\n      // either a posix class, a collation equivalent, or just a [\n      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n        if (glob.startsWith(cls, i)) {\n          // invalid, [a-[] is fine, but not [a-[:alpha]]\n          if (rangeStart) {\n            return ['$.', false, glob.length - pos, true]\n          }\n          i += cls.length\n          if (neg) negs.push(unip)\n          else ranges.push(unip)\n          uflag = uflag || u\n          continue WHILE\n        }\n      }\n    }\n\n    // now it's just a normal character, effectively\n    escaping = false\n    if (rangeStart) {\n      // throw this range away if it's not valid, but others\n      // can still match.\n      if (c > rangeStart) {\n        ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n      } else if (c === rangeStart) {\n        ranges.push(braceEscape(c))\n      }\n      rangeStart = ''\n      i++\n      continue\n    }\n\n    // now might be the start of a range.\n    // can be either c-d or c-] or c] or c] at this point\n    if (glob.startsWith('-]', i + 1)) {\n      ranges.push(braceEscape(c + '-'))\n      i += 2\n      continue\n    }\n    if (glob.startsWith('-', i + 1)) {\n      rangeStart = c\n      i += 2\n      continue\n    }\n\n    // not the start of a range, just a single character\n    ranges.push(braceEscape(c))\n    i++\n  }\n\n  if (endPos < i) {\n    // didn't see the end of the class, not a valid class,\n    // but might still be valid as a literal match.\n    return ['', false, 0, false]\n  }\n\n  // if we got no ranges and no negates, then we have a range that\n  // cannot possibly match anything, and that poisons the whole glob\n  if (!ranges.length && !negs.length) {\n    return ['$.', false, glob.length - pos, true]\n  }\n\n  // if we got one positive range, and it's a single character, then that's\n  // not actually a magic pattern, it's just that one literal character.\n  // we should not treat that as \"magic\", we should just return the literal\n  // character. [_] is a perfectly valid way to escape glob magic chars.\n  if (\n    negs.length === 0 &&\n    ranges.length === 1 &&\n    /^\\\\?.$/.test(ranges[0]) &&\n    !negate\n  ) {\n    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n    return [regexpEscape(r), false, endPos - pos, false]\n  }\n\n  const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n  const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n  const comb =\n    ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'\n    : ranges.length ? sranges\n    : snegs\n\n  return [comb, uflag, endPos - pos, true]\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/escape.js b/deps/minimatch/dist/esm/escape.js
index bab968ff3d83c9..46d0ec8858e5b3 100644
--- a/deps/minimatch/dist/esm/escape.js
+++ b/deps/minimatch/dist/esm/escape.js
@@ -15,12 +15,12 @@ export const escape = (s, { windowsPathsNoEscape = false, magicalBraces = false,
     // that make those magic, and escaping ! as [!] isn't valid,
     // because [!]] is a valid glob class meaning not ']'.
     if (magicalBraces) {
-        return windowsPathsNoEscape
-            ? s.replace(/[?*()[\]{}]/g, '[$&]')
+        return windowsPathsNoEscape ?
+            s.replace(/[?*()[\]{}]/g, '[$&]')
             : s.replace(/[?*()[\]\\{}]/g, '\\$&');
     }
-    return windowsPathsNoEscape
-        ? s.replace(/[?*()[\]]/g, '[$&]')
+    return windowsPathsNoEscape ?
+        s.replace(/[?*()[\]]/g, '[$&]')
         : s.replace(/[?*()[\]\\]/g, '\\$&');
 };
 //# sourceMappingURL=escape.js.map
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/escape.js.map b/deps/minimatch/dist/esm/escape.js.map
index 5d7f282ad11eb1..f6733c65f13df2 100644
--- a/deps/minimatch/dist/esm/escape.js.map
+++ b/deps/minimatch/dist/esm/escape.js.map
@@ -1 +1 @@
-{"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,KAAK,MAC+C,EAAE,EACxE,EAAE;IACF,wDAAwD;IACxD,4DAA4D;IAC5D,sDAAsD;IACtD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB;YACzB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,oBAAoB;QACzB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA","sourcesContent":["import { MinimatchOptions } from './index.js'\n\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = false,\n  }: Pick = {},\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  if (magicalBraces) {\n    return windowsPathsNoEscape\n      ? s.replace(/[?*()[\\]{}]/g, '[$&]')\n      : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&')\n  }\n  return windowsPathsNoEscape\n    ? s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,KAAK,MAC+C,EAAE,EACxE,EAAE;IACF,wDAAwD;IACxD,4DAA4D;IAC5D,sDAAsD;IACtD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,CAAC,CAAC;YACzB,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC;QACzB,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA","sourcesContent":["import { MinimatchOptions } from './index.js'\n\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = false,\n  }: Pick = {},\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/[?*()[\\]{}]/g, '[$&]')\n      : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/index.d.ts b/deps/minimatch/dist/esm/index.d.ts
index 968eb143d868b2..1556f330559c1e 100644
--- a/deps/minimatch/dist/esm/index.d.ts
+++ b/deps/minimatch/dist/esm/index.d.ts
@@ -1,26 +1,76 @@
 import { AST } from './ast.js';
 export type Platform = 'aix' | 'android' | 'darwin' | 'freebsd' | 'haiku' | 'linux' | 'openbsd' | 'sunos' | 'win32' | 'cygwin' | 'netbsd';
 export interface MinimatchOptions {
+    /** do not expand `{x,y}` style braces */
     nobrace?: boolean;
+    /** do not treat patterns starting with `#` as a comment */
     nocomment?: boolean;
+    /** do not treat patterns starting with `!` as a negation */
     nonegate?: boolean;
+    /** print LOTS of debugging output */
     debug?: boolean;
+    /** treat `**` the same as `*` */
     noglobstar?: boolean;
+    /** do not expand extglobs like `+(a|b)` */
     noext?: boolean;
+    /** return the pattern if nothing matches */
     nonull?: boolean;
+    /** treat `\\` as a path separator, not an escape character */
     windowsPathsNoEscape?: boolean;
+    /**
+     * inverse of {@link MinimatchOptions.windowsPathsNoEscape}
+     * @deprecated
+     */
     allowWindowsEscape?: boolean;
+    /**
+     * Compare a partial path to a pattern. As long as the parts
+     * of the path that are present are not contradicted by the
+     * pattern, it will be treated as a match. This is useful in
+     * applications where you're walking through a folder structure,
+     * and don't yet have the full path, but want to ensure that you
+     * do not walk down paths that can never be a match.
+     */
     partial?: boolean;
+    /** allow matches that start with `.` even if the pattern does not */
     dot?: boolean;
+    /** ignore case */
     nocase?: boolean;
+    /** ignore case only in wildcard patterns */
     nocaseMagicOnly?: boolean;
+    /** consider braces to be "magic" for the purpose of `hasMagic` */
     magicalBraces?: boolean;
+    /**
+     * If set, then patterns without slashes will be matched
+     * against the basename of the path if it contains slashes.
+     * For example, `a?b` would match the path `/xyz/123/acb`, but
+     * not `/xyz/acb/123`.
+     */
     matchBase?: boolean;
+    /** invert the results of negated matches */
     flipNegate?: boolean;
+    /** do not collapse multiple `/` into a single `/` */
     preserveMultipleSlashes?: boolean;
+    /**
+     * A number indicating the level of optimization that should be done
+     * to the pattern prior to parsing and using it for matches.
+     */
     optimizationLevel?: number;
+    /** operating system platform */
     platform?: Platform;
+    /**
+     * When a pattern starts with a UNC path or drive letter, and in
+     * `nocase:true` mode, do not convert the root portions of the
+     * pattern into a case-insensitive regular expression, and instead
+     * leave them as strings.
+     *
+     * This is the default when the platform is `win32` and
+     * `nocase:true` is set.
+     */
     windowsNoMagicRoot?: boolean;
+    /**
+     * max number of `{...}` patterns to expand. Default 100_000.
+     */
+    braceExpandMax?: number;
 }
 export declare const minimatch: {
     (p: string, pattern: string, options?: MinimatchOptions): boolean;
diff --git a/deps/minimatch/dist/esm/index.d.ts.map b/deps/minimatch/dist/esm/index.d.ts.map
index f241c28bf9a753..8e41a6cacdfc3f 100644
--- a/deps/minimatch/dist/esm/index.d.ts.map
+++ b/deps/minimatch/dist/esm/index.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/index.js b/deps/minimatch/dist/esm/index.js
index e83823fa6e1b55..3175327db5efbf 100644
--- a/deps/minimatch/dist/esm/index.js
+++ b/deps/minimatch/dist/esm/index.js
@@ -1,4 +1,4 @@
-import { expand } from '@isaacs/brace-expansion';
+import { expand } from 'brace-expansion';
 import { assertValidPattern } from './assert-valid-pattern.js';
 import { AST } from './ast.js';
 import { escape } from './escape.js';
@@ -63,8 +63,8 @@ const qmarksTestNoExtDot = ([$0]) => {
     return (f) => f.length === len && f !== '.' && f !== '..';
 };
 /* c8 ignore start */
-const defaultPlatform = (typeof process === 'object' && process
-    ? (typeof process.env === 'object' &&
+const defaultPlatform = (typeof process === 'object' && process ?
+    (typeof process.env === 'object' &&
         process.env &&
         process.env.__MINIMATCH_TESTING_PLATFORM__) ||
         process.platform
@@ -148,7 +148,7 @@ export const braceExpand = (pattern, options = {}) => {
         // shortcut. no need to expand.
         return [pattern];
     }
-    return expand(pattern);
+    return expand(pattern, { max: options.braceExpandMax });
 };
 minimatch.braceExpand = braceExpand;
 // parse a component of the expanded set.
@@ -201,8 +201,10 @@ export class Minimatch {
         this.pattern = pattern;
         this.platform = options.platform || defaultPlatform;
         this.isWindows = this.platform === 'win32';
+        // avoid the annoying deprecation flag lol
+        const awe = ('allowWindow' + 'sEscape');
         this.windowsPathsNoEscape =
-            !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
+            !!options.windowsPathsNoEscape || options[awe] === false;
         if (this.windowsPathsNoEscape) {
             this.pattern = this.pattern.replace(/\\/g, '/');
         }
@@ -215,8 +217,8 @@ export class Minimatch {
         this.partial = !!options.partial;
         this.nocase = !!this.options.nocase;
         this.windowsNoMagicRoot =
-            options.windowsNoMagicRoot !== undefined
-                ? options.windowsNoMagicRoot
+            options.windowsNoMagicRoot !== undefined ?
+                options.windowsNoMagicRoot
                 : !!(this.isWindows && this.nocase);
         this.globSet = [];
         this.globParts = [];
@@ -279,7 +281,10 @@ export class Minimatch {
                     !globMagic.test(s[3]);
                 const isDrive = /^[a-z]:/i.test(s[0]);
                 if (isUNC) {
-                    return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];
+                    return [
+                        ...s.slice(0, 4),
+                        ...s.slice(4).map(ss => this.parse(ss)),
+                    ];
                 }
                 else if (isDrive) {
                     return [s[0], ...s.slice(1).map(ss => this.parse(ss))];
@@ -311,7 +316,7 @@ export class Minimatch {
     // to the right as possible, even if it increases the number
     // of patterns that we have to process.
     preprocess(globParts) {
-        // if we're not in globstar mode, then turn all ** into *
+        // if we're not in globstar mode, then turn ** into *
         if (this.options.noglobstar) {
             for (let i = 0; i < globParts.length; i++) {
                 for (let j = 0; j < globParts[i].length; j++) {
@@ -615,10 +620,17 @@ export class Minimatch {
                 pattern[2] === '?' &&
                 typeof pattern[3] === 'string' &&
                 /^[a-z]:$/i.test(pattern[3]);
-            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;
-            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;
+            const fdi = fileUNC ? 3
+                : fileDrive ? 0
+                    : undefined;
+            const pdi = patternUNC ? 3
+                : patternDrive ? 0
+                    : undefined;
             if (typeof fdi === 'number' && typeof pdi === 'number') {
-                const [fd, pd] = [file[fdi], pattern[pdi]];
+                const [fd, pd] = [
+                    file[fdi],
+                    pattern[pdi],
+                ];
                 if (fd.toLowerCase() === pd.toLowerCase()) {
                     pattern[pdi] = fd;
                     if (pdi > fdi) {
@@ -799,21 +811,19 @@ export class Minimatch {
             fastTest = options.dot ? starTestDot : starTest;
         }
         else if ((m = pattern.match(starDotExtRE))) {
-            fastTest = (options.nocase
-                ? options.dot
-                    ? starDotExtTestNocaseDot
+            fastTest = (options.nocase ?
+                options.dot ?
+                    starDotExtTestNocaseDot
                     : starDotExtTestNocase
-                : options.dot
-                    ? starDotExtTestDot
+                : options.dot ? starDotExtTestDot
                     : starDotExtTest)(m[1]);
         }
         else if ((m = pattern.match(qmarksRE))) {
-            fastTest = (options.nocase
-                ? options.dot
-                    ? qmarksTestNocaseDot
+            fastTest = (options.nocase ?
+                options.dot ?
+                    qmarksTestNocaseDot
                     : qmarksTestNocase
-                : options.dot
-                    ? qmarksTestDot
+                : options.dot ? qmarksTestDot
                     : qmarksTest)(m);
         }
         else if ((m = pattern.match(starDotStarRE))) {
@@ -844,10 +854,8 @@ export class Minimatch {
             return this.regexp;
         }
         const options = this.options;
-        const twoStar = options.noglobstar
-            ? star
-            : options.dot
-                ? twoStarDot
+        const twoStar = options.noglobstar ? star
+            : options.dot ? twoStarDot
                 : twoStarNoDot;
         const flags = new Set(options.nocase ? ['i'] : []);
         // regexpify non-globstar patterns
@@ -863,11 +871,9 @@ export class Minimatch {
                     for (const f of p.flags.split(''))
                         flags.add(f);
                 }
-                return typeof p === 'string'
-                    ? regExpEscape(p)
-                    : p === GLOBSTAR
-                        ? GLOBSTAR
-                        : p._src;
+                return (typeof p === 'string' ? regExpEscape(p)
+                    : p === GLOBSTAR ? GLOBSTAR
+                        : p._src);
             });
             pp.forEach((p, i) => {
                 const next = pp[i + 1];
diff --git a/deps/minimatch/dist/esm/index.js.map b/deps/minimatch/dist/esm/index.js.map
index bbbc70e01cc3cd..03716021016ea5 100644
--- a/deps/minimatch/dist/esm/index.js.map
+++ b/deps/minimatch/dist/esm/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from '@isaacs/brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  nobrace?: boolean\n  nocomment?: boolean\n  nonegate?: boolean\n  debug?: boolean\n  noglobstar?: boolean\n  noext?: boolean\n  nonull?: boolean\n  windowsPathsNoEscape?: boolean\n  allowWindowsEscape?: boolean\n  partial?: boolean\n  dot?: boolean\n  nocase?: boolean\n  nocaseMagicOnly?: boolean\n  magicalBraces?: boolean\n  matchBase?: boolean\n  flipNegate?: boolean\n  preserveMultipleSlashes?: boolean\n  optimizationLevel?: number\n  platform?: Platform\n  windowsNoMagicRoot?: boolean\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) => !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) => f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) => f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n      process.platform\n    : 'posix'\n) as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) => orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (list: string[], pattern: string, options: MinimatchOptions = {}) =>\n      orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern)\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options.allowWindowsEscape === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined\n        ? options.windowsNoMagicRoot\n        : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn all ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {\n    const options = this.options\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined\n      const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [file[fdi], pattern[pdi] as string]\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          if (pdi > fdi) {\n            pattern = pattern.slice(pdi)\n          } else if (fdi > pdi) {\n            file = file.slice(fdi)\n          }\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? starDotExtTestNocaseDot\n            : starDotExtTestNocase\n          : options.dot\n            ? starDotExtTestDot\n            : starDotExtTest\n      )(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? qmarksTestNocaseDot\n            : qmarksTestNocase\n          : options.dot\n            ? qmarksTestDot\n            : qmarksTest\n      )(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar = options.noglobstar\n      ? star\n      : options.dot\n        ? twoStarDot\n        : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return typeof p === 'string'\n            ? regExpEscape(p)\n            : p === GLOBSTAR\n              ? GLOBSTAR\n              : p._src\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  /** do not expand `{x,y}` style braces */\n  nobrace?: boolean\n  /** do not treat patterns starting with `#` as a comment */\n  nocomment?: boolean\n  /** do not treat patterns starting with `!` as a negation */\n  nonegate?: boolean\n  /** print LOTS of debugging output */\n  debug?: boolean\n  /** treat `**` the same as `*` */\n  noglobstar?: boolean\n  /** do not expand extglobs like `+(a|b)` */\n  noext?: boolean\n  /** return the pattern if nothing matches */\n  nonull?: boolean\n  /** treat `\\\\` as a path separator, not an escape character */\n  windowsPathsNoEscape?: boolean\n  /**\n   * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n  /**\n   * Compare a partial path to a pattern. As long as the parts\n   * of the path that are present are not contradicted by the\n   * pattern, it will be treated as a match. This is useful in\n   * applications where you're walking through a folder structure,\n   * and don't yet have the full path, but want to ensure that you\n   * do not walk down paths that can never be a match.\n   */\n  partial?: boolean\n  /** allow matches that start with `.` even if the pattern does not */\n  dot?: boolean\n  /** ignore case */\n  nocase?: boolean\n  /** ignore case only in wildcard patterns */\n  nocaseMagicOnly?: boolean\n  /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n  magicalBraces?: boolean\n  /**\n   * If set, then patterns without slashes will be matched\n   * against the basename of the path if it contains slashes.\n   * For example, `a?b` would match the path `/xyz/123/acb`, but\n   * not `/xyz/acb/123`.\n   */\n  matchBase?: boolean\n  /** invert the results of negated matches */\n  flipNegate?: boolean\n  /** do not collapse multiple `/` into a single `/` */\n  preserveMultipleSlashes?: boolean\n  /**\n   * A number indicating the level of optimization that should be done\n   * to the pattern prior to parsing and using it for matches.\n   */\n  optimizationLevel?: number\n  /** operating system platform */\n  platform?: Platform\n  /**\n   * When a pattern starts with a UNC path or drive letter, and in\n   * `nocase:true` mode, do not convert the root portions of the\n   * pattern into a case-insensitive regular expression, and instead\n   * leave them as strings.\n   *\n   * This is the default when the platform is `win32` and\n   * `nocase:true` is set.\n   */\n  windowsNoMagicRoot?: boolean\n  /**\n   * max number of `{...}` patterns to expand. Default 100_000.\n   */\n  braceExpandMax?: number\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n  !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n  f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n  f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n      process.env &&\n      process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n    process.platform\n  : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n  defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) =>\n      orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (\n      list: string[],\n      pattern: string,\n      options: MinimatchOptions = {},\n    ) => orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    // avoid the annoying deprecation flag lol\n    const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options[awe] === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined ?\n        options.windowsNoMagicRoot\n      : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [\n            ...s.slice(0, 4),\n            ...s.slice(4).map(ss => this.parse(ss)),\n          ]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    const options = this.options\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          if (pdi > fdi) {\n            pattern = pattern.slice(pdi)\n          } else if (fdi > pdi) {\n            file = file.slice(fdi)\n          }\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/unescape.js b/deps/minimatch/dist/esm/unescape.js
index dfa408d39853bc..b31bd40a028407 100644
--- a/deps/minimatch/dist/esm/unescape.js
+++ b/deps/minimatch/dist/esm/unescape.js
@@ -19,14 +19,14 @@
  */
 export const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => {
     if (magicalBraces) {
-        return windowsPathsNoEscape
-            ? s.replace(/\[([^\/\\])\]/g, '$1')
+        return windowsPathsNoEscape ?
+            s.replace(/\[([^\/\\])\]/g, '$1')
             : s
                 .replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2')
                 .replace(/\\([^\/])/g, '$1');
     }
-    return windowsPathsNoEscape
-        ? s.replace(/\[([^\/\\{}])\]/g, '$1')
+    return windowsPathsNoEscape ?
+        s.replace(/\[([^\/\\{}])\]/g, '$1')
         : s
             .replace(/((?!\\).|^)\[([^\/\\{}])\]/g, '$1$2')
             .replace(/\\([^\/{}])/g, '$1');
diff --git a/deps/minimatch/dist/esm/unescape.js.map b/deps/minimatch/dist/esm/unescape.js.map
index 4fcd51319ac0a1..288321b86c686d 100644
--- a/deps/minimatch/dist/esm/unescape.js.map
+++ b/deps/minimatch/dist/esm/unescape.js.map
@@ -1 +1 @@
-{"version":3,"file":"unescape.js","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,IAAI,MACgD,EAAE,EACxE,EAAE;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB;YACzB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;YACnC,CAAC,CAAC,CAAC;iBACE,OAAO,CAAC,2BAA2B,EAAE,MAAM,CAAC;iBAC5C,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,oBAAoB;QACzB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;QACrC,CAAC,CAAC,CAAC;aACE,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC;aAC9C,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA","sourcesContent":["import { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = true,\n  }: Pick = {},\n) => {\n  if (magicalBraces) {\n    return windowsPathsNoEscape\n      ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n      : s\n          .replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2')\n          .replace(/\\\\([^\\/])/g, '$1')\n  }\n  return windowsPathsNoEscape\n    ? s.replace(/\\[([^\\/\\\\{}])\\]/g, '$1')\n    : s\n        .replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g, '$1$2')\n        .replace(/\\\\([^\\/{}])/g, '$1')\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"unescape.js","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,IAAI,MACgD,EAAE,EACxE,EAAE;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,CAAC,CAAC;YACzB,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;YACnC,CAAC,CAAC,CAAC;iBACE,OAAO,CAAC,2BAA2B,EAAE,MAAM,CAAC;iBAC5C,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC;QACzB,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;QACrC,CAAC,CAAC,CAAC;aACE,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC;aAC9C,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA","sourcesContent":["import { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = true,\n  }: Pick = {},\n) => {\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n      : s\n          .replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2')\n          .replace(/\\\\([^\\/])/g, '$1')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/\\[([^\\/\\\\{}])\\]/g, '$1')\n    : s\n        .replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g, '$1$2')\n        .replace(/\\\\([^\\/{}])/g, '$1')\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/index.js b/deps/minimatch/index.js
index 519a68f788d64a..971840b54a6557 100644
--- a/deps/minimatch/index.js
+++ b/deps/minimatch/index.js
@@ -4,9 +4,9 @@ var __commonJS = (cb, mod) => function __require() {
   return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
 };
 
-// node_modules/@isaacs/balanced-match/dist/commonjs/index.js
+// node_modules/balanced-match/dist/commonjs/index.js
 var require_commonjs = __commonJS({
-  "node_modules/@isaacs/balanced-match/dist/commonjs/index.js"(exports2) {
+  "node_modules/balanced-match/dist/commonjs/index.js"(exports2) {
     "use strict";
     Object.defineProperty(exports2, "__esModule", { value: true });
     exports2.range = exports2.balanced = void 0;
@@ -66,9 +66,9 @@ var require_commonjs = __commonJS({
   }
 });
 
-// node_modules/@isaacs/brace-expansion/dist/commonjs/index.js
+// node_modules/brace-expansion/dist/commonjs/index.js
 var require_commonjs2 = __commonJS({
-  "node_modules/@isaacs/brace-expansion/dist/commonjs/index.js"(exports2) {
+  "node_modules/brace-expansion/dist/commonjs/index.js"(exports2) {
     "use strict";
     Object.defineProperty(exports2, "__esModule", { value: true });
     exports2.EXPANSION_MAX = void 0;
@@ -829,6 +829,7 @@ var require_ast = __commonJS({
         let escaping = false;
         let re = "";
         let uflag = false;
+        let inStar = false;
         for (let i = 0; i < glob.length; i++) {
           const c = glob.charAt(i);
           if (escaping) {
@@ -836,6 +837,16 @@ var require_ast = __commonJS({
             re += (reSpecials.has(c) ? "\\" : "") + c;
             continue;
           }
+          if (c === "*") {
+            if (inStar)
+              continue;
+            inStar = true;
+            re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star2;
+            hasMagic = true;
+            continue;
+          } else {
+            inStar = false;
+          }
           if (c === "\\") {
             if (i === glob.length - 1) {
               re += "\\\\";
@@ -854,11 +865,6 @@ var require_ast = __commonJS({
               continue;
             }
           }
-          if (c === "*") {
-            re += noEmpty && glob === "*" ? starNoEmpty : star2;
-            hasMagic = true;
-            continue;
-          }
           if (c === "?") {
             re += qmark2;
             hasMagic = true;
@@ -1015,7 +1021,7 @@ var braceExpand = (pattern, options = {}) => {
   if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
     return [pattern];
   }
-  return (0, brace_expansion_1.expand)(pattern);
+  return (0, brace_expansion_1.expand)(pattern, { max: options.braceExpandMax });
 };
 exports.braceExpand = braceExpand;
 exports.minimatch.braceExpand = exports.braceExpand;
@@ -1059,7 +1065,8 @@ var Minimatch = class {
     this.pattern = pattern;
     this.platform = options.platform || defaultPlatform;
     this.isWindows = this.platform === "win32";
-    this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
+    const awe = "allowWindowsEscape";
+    this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options[awe] === false;
     if (this.windowsPathsNoEscape) {
       this.pattern = this.pattern.replace(/\\/g, "/");
     }
@@ -1116,7 +1123,10 @@ var Minimatch = class {
         const isUNC = s[0] === "" && s[1] === "" && (s[2] === "?" || !globMagic.test(s[2])) && !globMagic.test(s[3]);
         const isDrive = /^[a-z]:/i.test(s[0]);
         if (isUNC) {
-          return [...s.slice(0, 4), ...s.slice(4).map((ss) => this.parse(ss))];
+          return [
+            ...s.slice(0, 4),
+            ...s.slice(4).map((ss) => this.parse(ss))
+          ];
         } else if (isDrive) {
           return [s[0], ...s.slice(1).map((ss) => this.parse(ss))];
         }
@@ -1397,7 +1407,10 @@ var Minimatch = class {
       const fdi = fileUNC ? 3 : fileDrive ? 0 : void 0;
       const pdi = patternUNC ? 3 : patternDrive ? 0 : void 0;
       if (typeof fdi === "number" && typeof pdi === "number") {
-        const [fd, pd] = [file[fdi], pattern[pdi]];
+        const [fd, pd] = [
+          file[fdi],
+          pattern[pdi]
+        ];
         if (fd.toLowerCase() === pd.toLowerCase()) {
           pattern[pdi] = fd;
           if (pdi > fdi) {
diff --git a/deps/minimatch/package-lock.json b/deps/minimatch/package-lock.json
index c789330ac0c26e..b0c575fab1e949 100644
--- a/deps/minimatch/package-lock.json
+++ b/deps/minimatch/package-lock.json
@@ -1,27 +1,27 @@
 {
   "name": "minimatch",
-  "version": "10.1.2",
+  "version": "10.2.2",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "minimatch",
-      "version": "10.1.2",
+      "version": "10.2.2",
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "@isaacs/brace-expansion": "^5.0.1"
+        "brace-expansion": "^5.0.2"
       },
       "devDependencies": {
-        "@types/node": "^24.0.0",
+        "@types/node": "^25.3.0",
         "esbuild": "^0.27.3",
         "mkdirp": "^3.0.1",
         "prettier": "^3.6.2",
-        "tap": "^21.1.0",
+        "tap": "^21.6.1",
         "tshy": "^3.0.2",
         "typedoc": "^0.28.5"
       },
       "engines": {
-        "node": "20 || >=22"
+        "node": "18 || 20 || >=22"
       },
       "funding": {
         "url": "https://github.com/sponsors/isaacs"
@@ -527,27 +527,6 @@
         "@shikijs/vscode-textmate": "^10.0.2"
       }
     },
-    "node_modules/@isaacs/balanced-match": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
-      "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
-      "license": "MIT",
-      "engines": {
-        "node": "20 || >=22"
-      }
-    },
-    "node_modules/@isaacs/brace-expansion": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz",
-      "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@isaacs/balanced-match": "^4.0.1"
-      },
-      "engines": {
-        "node": "20 || >=22"
-      }
-    },
     "node_modules/@isaacs/cliui": {
       "version": "9.0.0",
       "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz",
@@ -622,6 +601,19 @@
         "node": ">=0.3.1"
       }
     },
+    "node_modules/@isaacs/which": {
+      "version": "7.0.4",
+      "resolved": "https://registry.npmjs.org/@isaacs/which/-/which-7.0.4.tgz",
+      "integrity": "sha512-qXToWZFY9CKvWsveV3R5VHNJLQkHTIJXO9J4Xa1UgNwVCRA2LEsmvWC84MIdnezFLsjn2Q+GzbL/8yVF1/ozJw==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^4.0.0"
+      },
+      "engines": {
+        "node": "^20.17.0 || >=22.9.0"
+      }
+    },
     "node_modules/@istanbuljs/schema": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
@@ -710,22 +702,6 @@
         "node": "^20.17.0 || >=22.9.0"
       }
     },
-    "node_modules/@npmcli/git/node_modules/which": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz",
-      "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^3.1.1"
-      },
-      "bin": {
-        "node-which": "bin/which.js"
-      },
-      "engines": {
-        "node": "^20.17.0 || >=22.9.0"
-      }
-    },
     "node_modules/@npmcli/installed-package-contents": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz",
@@ -754,9 +730,9 @@
       }
     },
     "node_modules/@npmcli/package-json": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.4.tgz",
-      "integrity": "sha512-0wInJG3j/K40OJt/33ax47WfWMzZTm6OQxB9cDhTt5huCP2a9g2GnlsxmfN+PulItNPIpPrZ+kfwwUil7eHcZQ==",
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.5.tgz",
+      "integrity": "sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
@@ -766,7 +742,7 @@
         "json-parse-even-better-errors": "^5.0.0",
         "proc-log": "^6.0.0",
         "semver": "^7.5.3",
-        "validate-npm-package-license": "^3.0.4"
+        "spdx-expression-parse": "^4.0.0"
       },
       "engines": {
         "node": "^20.17.0 || >=22.9.0"
@@ -785,22 +761,6 @@
         "node": "^20.17.0 || >=22.9.0"
       }
     },
-    "node_modules/@npmcli/promise-spawn/node_modules/which": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz",
-      "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^3.1.1"
-      },
-      "bin": {
-        "node-which": "bin/which.js"
-      },
-      "engines": {
-        "node": "^20.17.0 || >=22.9.0"
-      }
-    },
     "node_modules/@npmcli/redact": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz",
@@ -829,22 +789,6 @@
         "node": "^20.17.0 || >=22.9.0"
       }
     },
-    "node_modules/@npmcli/run-script/node_modules/which": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz",
-      "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^3.1.1"
-      },
-      "bin": {
-        "node-which": "bin/which.js"
-      },
-      "engines": {
-        "node": "^20.17.0 || >=22.9.0"
-      }
-    },
     "node_modules/@pkgjs/parseargs": {
       "version": "0.11.0",
       "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@@ -986,9 +930,9 @@
       }
     },
     "node_modules/@tapjs/after": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.3.1.tgz",
-      "integrity": "sha512-/RZb0DZxfHP74ursSByTpgKU6jVUtNOtoQ3/prf76+5+G7Q7D7QIQtlrH3bUgk84DI89j+4Nc2DTkMCOLy7BWQ==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.3.4.tgz",
+      "integrity": "sha512-Y8DL0F9Ux6Swe7b5g4qLFgJUEFrVr5fhmVOENw4D/x7rDRyx/3c86Ya1p9iJrpkE2RnvdGq9AxR/rTM137Y7Lg==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -998,13 +942,13 @@
         "node": "20 || >=22"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/after-each": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.3.1.tgz",
-      "integrity": "sha512-kgRbmhKisIl31FsCxFkDmZLNj0qCdNte0aarVLsaFq1LVJOtpITdBfnuiKigrLj4Go9XiASmIpGrU8h1uYF2Xw==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.3.4.tgz",
+      "integrity": "sha512-TM1OWz7Ht3aimbT/MLYnoywI9SBGsTus6TQ+94n1yjr1izO3K21PP5Q9UYdqZ2Qq1WiZmGa+CZKUZANUn1ZcvQ==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -1014,13 +958,13 @@
         "node": "20 || >=22"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/asserts": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.3.1.tgz",
-      "integrity": "sha512-PyBE1/umvg/o9Ntg3gryWaamCFHhMV0zSdoD6n5saexa8AYUb9XM6XA4y7uXRisdSFVVnD8/yX0OAWsQhryE0g==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.3.4.tgz",
+      "integrity": "sha512-1kf2q0oQ7LCZKy5l4Oe7/ZVijhJ9YxbS4qmqGtj7cYwOw4Q78KNLwthh14c9EBbI2QHKUDS2LaLM8a1qMLmPiA==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -1036,13 +980,13 @@
         "url": "https://github.com/sponsors/isaacs"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/before": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.3.1.tgz",
-      "integrity": "sha512-zxa+DrruCGJhTQCLjYa8nfyYihLsWBWCEgiSvtwOkQKNZhxcaLmH/W85zEWKJ+MnZaa4wVqkyyRkhAM12eq0Lg==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.3.4.tgz",
+      "integrity": "sha512-53n/8/RktPkbCuZveDTYiplbrzWjFkYAnmYCrFixESsFoUrkfTCPjeCRmojBS14zuRdVe4kLsX6XWYkaUpLdZA==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -1052,13 +996,13 @@
         "node": "20 || >=22"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/before-each": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.3.1.tgz",
-      "integrity": "sha512-vPCbni80H7/6JtQY2LoO4kiRmuyOwPJXpgR2SRrH9Aq07EVveSlgMkKJxomkbuE5lGr/l6zhO/TZDPnuorSvrg==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.3.4.tgz",
+      "integrity": "sha512-WkLsDvCjBrxrRkyhEBpfmGObUsf8Eb+tsqlxnGUG67XbPMkwkP/AoUPonc/g1Nv+pwtR+t5j6maNblrubWuG3A==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -1068,33 +1012,33 @@
         "node": "20 || >=22"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/chdir": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.3.1.tgz",
-      "integrity": "sha512-8awqiQswpJRtlOdag+wV/ezuX1kv9YKiG3DAKcNVr7exkGr61StL7qV1cdHah2rPAXlJv6blgDIYbR80d3s9qA==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.3.4.tgz",
+      "integrity": "sha512-B37eGrs47xseJ7dm9ikhStX7KNqflvZViT2lMqVACeNvoxSpRgy1pu7cPix4wKvBlZCtNYaOD8iDNm+5nDfvSQ==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "engines": {
         "node": "20 || >=22"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/config": {
-      "version": "5.4.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.4.1.tgz",
-      "integrity": "sha512-ZK1Zs58ALGWx6Zxd0fDlN9VlGNxoudpXZqjlr2asC/Zu6v5oyilN9CX2r9PWHyTHNe6b/TpfpOvt2gTCTpuROA==",
+      "version": "5.5.2",
+      "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.5.2.tgz",
+      "integrity": "sha512-GQyKl40fGamoSvT4SsfQfZyaHT8fboNW5OhrA1hhMc34di5j/efiD15VlNVbPGE51BZSs5M3Jw7YukF2/Cg8CA==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "@tapjs/core": "4.4.1",
-        "@tapjs/test": "4.3.1",
+        "@tapjs/core": "4.5.2",
+        "@tapjs/test": "4.4.2",
         "chalk": "^5.6.2",
-        "jackspeak": "^4.1.2",
+        "jackspeak": "^4.2.3",
         "polite-json": "^5.0.0",
         "tap-yaml": "4.3.0",
         "walk-up-path": "^4.0.0"
@@ -1106,20 +1050,20 @@
         "url": "https://github.com/sponsors/isaacs"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1",
-        "@tapjs/test": "4.3.1"
+        "@tapjs/core": "4.5.2",
+        "@tapjs/test": "4.4.2"
       }
     },
     "node_modules/@tapjs/core": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.4.1.tgz",
-      "integrity": "sha512-zEeDgt6YNOKXs4NfGGZ1Lz5aLTlHNCUpwvx5hVl7CuL+/noudWZvL39Vy2rKb+zZnTSgF7b34DqGLoy8+jgpfg==",
+      "version": "4.5.2",
+      "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.5.2.tgz",
+      "integrity": "sha512-0KKabYyBN4W2CRgnD0rOhDvexbMLMPuT0OElQTz5ezCsx1QGtuUHP9TmRXEGCJAoeL44Us0L2DxPpS4BUW1KEQ==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
         "@tapjs/processinfo": "^3.1.9",
         "@tapjs/stack": "4.3.0",
-        "@tapjs/test": "4.3.1",
+        "@tapjs/test": "4.4.2",
         "async-hook-domain": "^4.0.1",
         "diff": "^8.0.2",
         "is-actual-promise": "^1.0.1",
@@ -1151,9 +1095,9 @@
       }
     },
     "node_modules/@tapjs/filter": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.3.1.tgz",
-      "integrity": "sha512-oyoqmUcHjYvr5f7LOryVB9ruEtjTiABdwZghx3XgeRnaNiVX3J9J8/xvdctnkbDB7cq3g9Ao2DYzweDl6Zfvhg==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.3.4.tgz",
+      "integrity": "sha512-Bpbahk/Bv30ZfGoDpZVjGhvg8Cq2yqCZcawd+4qtTTSDY+V7GEpdJGu2/2EvwXP+s4PklPx2kFry8X9m6OtAog==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "engines": {
@@ -1163,13 +1107,13 @@
         "url": "https://github.com/sponsors/isaacs"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/fixture": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.3.1.tgz",
-      "integrity": "sha512-x3w6Ro4H6UAxNSkDTtmz73kVCjZP4TNY2m+wLLiRdi8fa3lCn7WfvHUn9zoATgRFjgOnG4XrXSkjybhqHZ4Ibw==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.3.4.tgz",
+      "integrity": "sha512-zRv1vD2H/2abt0S5Yr5ICV/ZaIqXmusBZ6H4Qbih9oE2jvbs6AVDz5Td0adZbWurtHrPLuOFTIz2UsbJfhCCcw==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -1183,36 +1127,36 @@
         "url": "https://github.com/sponsors/isaacs"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/intercept": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.3.1.tgz",
-      "integrity": "sha512-AvfZwFqAh8g+226HRVMUwoHm1ncf6xMHRQfcsPPIMtjnIrbJZjr2S2uM9qTWTnlk2EVgerqfyh3H8R6ykJsGIg==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.3.4.tgz",
+      "integrity": "sha512-7ifEMPmp4yKHQ7PqdPwCetipFLvCegbIyKigEDds/p03ZNFJjgF06D9T4vc/m0sA5SKkPrHVTOU0UzaSrliP7w==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "@tapjs/after": "3.3.1",
+        "@tapjs/after": "3.3.4",
         "@tapjs/stack": "4.3.0"
       },
       "engines": {
         "node": "20 || >=22"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/mock": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.3.1.tgz",
-      "integrity": "sha512-oiR34RhC0+h0fqLNHkDA5QmQXmVJkujvdGwUEBxR3HzUIKZWp5SfVw4dY2/Lvl33tPBOtsFDFuqnpt3+f6SrXg==",
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.4.2.tgz",
+      "integrity": "sha512-B6SfNWjWCPvjN9CaHe45lEcl2ZFDkQIUoF5jPthwi2mYxHLfyFFEqorZJhguoTs7ToeXvIqquqE/Luk9IeuKBQ==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "@tapjs/after": "3.3.1",
+        "@tapjs/after": "3.3.4",
         "@tapjs/stack": "4.3.0",
-        "resolve-import": "^2.1.1",
+        "resolve-import": "^2.4.0",
         "walk-up-path": "^4.0.0"
       },
       "engines": {
@@ -1222,13 +1166,13 @@
         "url": "https://github.com/sponsors/isaacs"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/node-serialize": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.3.1.tgz",
-      "integrity": "sha512-dOsTr75HFESskVvuv8L6SAw23c2WtF6aoNkaD9SwtbTQZxvZQNGMechWPWYGaMsHB+aB+6EBg1MVnqWHQrOVcw==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.3.4.tgz",
+      "integrity": "sha512-SECDvjBS7NVCiCZ6vEtMwtxxSuR61NHBva+PlIQ1mU0asoTYxV9lpRNEAb9UHFKpquEDlk+bLg2iN01a2nfMuw==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -1243,7 +1187,7 @@
         "url": "https://github.com/sponsors/isaacs"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/processinfo": {
@@ -1264,13 +1208,13 @@
       }
     },
     "node_modules/@tapjs/reporter": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.4.1.tgz",
-      "integrity": "sha512-kOppWVcv3sa0fmsBrpzwJiUZbwEdhixBAg0J39dUDMDdNIYrefVUSJsi7f1Agi9uRRXeJfZlUw23tII4CV06rQ==",
+      "version": "4.4.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.4.4.tgz",
+      "integrity": "sha512-svWmpJgMQxe4iiKOVr/Hi5kGHJNBDp2Nr8gD0aQuAQ4fp9gOh2LFQXa2Jv7LBKhMjC7UaiW/X7k1qEVk2nOfvg==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "@tapjs/config": "5.4.1",
+        "@tapjs/config": "5.5.2",
         "@tapjs/stack": "4.3.0",
         "chalk": "^5.6.2",
         "ink": "^5.2.1",
@@ -1291,44 +1235,44 @@
         "url": "https://github.com/sponsors/isaacs"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/run": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.4.1.tgz",
-      "integrity": "sha512-mVD9FCknr1mkkCv1vMKL2x4pmpka8ArqHufMP8Mb3Etj6blfePNv0Mu75RWVN9bKYzKAkqPGLenDBPb9hnbUgg==",
+      "version": "4.5.2",
+      "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.5.2.tgz",
+      "integrity": "sha512-Oq5YZvoGxEohRWK8P1wHPIAnudEOHPd/bIWawFtRn0ZGvF7bRduZlHpf4eEIrRHKY84G/I3fmC354604cejxiQ==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "@tapjs/after": "3.3.1",
-        "@tapjs/before": "4.3.1",
-        "@tapjs/config": "5.4.1",
+        "@isaacs/which": "^7.0.4",
+        "@tapjs/after": "3.3.4",
+        "@tapjs/before": "4.3.4",
+        "@tapjs/config": "5.5.2",
         "@tapjs/processinfo": "^3.1.9",
-        "@tapjs/reporter": "4.4.1",
-        "@tapjs/spawn": "4.3.1",
-        "@tapjs/stdin": "4.3.1",
-        "@tapjs/test": "4.3.1",
+        "@tapjs/reporter": "4.4.4",
+        "@tapjs/spawn": "4.3.4",
+        "@tapjs/stdin": "4.3.4",
+        "@tapjs/test": "4.4.2",
         "c8": "^10.1.3",
         "chalk": "^5.6.2",
         "chokidar": "^4.0.2",
         "foreground-child": "^4.0.0",
-        "glob": "^13.0.0",
+        "glob": "^13.0.2",
         "minipass": "^7.0.4",
         "mkdirp": "^3.0.1",
         "node-options-to-argv": "^1.0.0",
         "opener": "^1.5.2",
         "pacote": "^21.0.4",
         "path-scurry": "^2.0.0",
-        "resolve-import": "^2.0.0",
+        "resolve-import": "^2.4.0",
         "rimraf": "^6.0.0",
         "semver": "^7.7.2",
         "signal-exit": "^4.1.0",
         "tap-parser": "18.3.0",
         "tap-yaml": "4.3.0",
         "tcompare": "9.3.0",
-        "trivial-deferred": "^2.0.0",
-        "which": "^5.0.0"
+        "trivial-deferred": "^2.0.0"
       },
       "bin": {
         "tap-run": "dist/esm/index.js"
@@ -1340,13 +1284,13 @@
         "url": "https://github.com/sponsors/isaacs"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/snapshot": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.3.1.tgz",
-      "integrity": "sha512-xPE5yxnck9EhpbH2i60xIB9HxgG39wSyn6Hj+UQal/lDgprbdYNG+36Owdp52TNHOL14GcVO3aiqyOy4UdkN6A==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.3.4.tgz",
+      "integrity": "sha512-2sJXaGLJUMakkdJd5iDWRucgyHX7f5eP05m4weqWq9dLzX7p1JFOrWXUwns8RCIY7VX9Vx+4jENlxJOywYjyqg==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -1361,20 +1305,20 @@
         "url": "https://github.com/sponsors/isaacs"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/spawn": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.3.1.tgz",
-      "integrity": "sha512-bQ5Mb0F8Vm07TDe3DYFEzuIN1aCbRyFPYjM6cD62iszT0B4znaXL4PseRXB0VoL9cxJICeNm6AiT0G9PF09z4Q==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.3.4.tgz",
+      "integrity": "sha512-qQY2SSLkXknpL1kndLS1bCPo9vYKV8Ka93UPIllvDEwaY3oUMghh++EOE4dyUxQPgMFpmoUoj8kSbm2hotevbQ==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "engines": {
         "node": "20 || >=22"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/stack": {
@@ -1391,51 +1335,51 @@
       }
     },
     "node_modules/@tapjs/stdin": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.3.1.tgz",
-      "integrity": "sha512-wD4bJM+1LmnDkBpR7aLJ6tlwDM/OT0RaiHPFgRrpDv7FB50LeR3h9wh7s+c+Ysc9OgZDkLNLkvG9jIhb937bZA==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.3.4.tgz",
+      "integrity": "sha512-0kFeaPEGwNWx8R0z9Uq93/CNhAg+9NbTPZW+GXsjuHQSG125g7VZBNBAg2IMeQmVQ9bUWa3+f5TNp/JnLVvJmg==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "engines": {
         "node": "20 || >=22"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/test": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.3.1.tgz",
-      "integrity": "sha512-NOsYB1VhaSPmWqrvsdeVnUuklNtJwFEQnybPHjVCqq0ecjP/SZKW+nnVzt9ISAPF+FDtQisqgJV2/Y54jzhpgA==",
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.4.2.tgz",
+      "integrity": "sha512-YuUgTffPNGzodjeHOsaF/j0/5B/bAqtfgwqUkqa3mWdwqzlmB2AcIA6lBtLaQfbjG8wgGNwYfs3McgxkGRqxfA==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
         "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7",
-        "@tapjs/after": "3.3.1",
-        "@tapjs/after-each": "4.3.1",
-        "@tapjs/asserts": "4.3.1",
-        "@tapjs/before": "4.3.1",
-        "@tapjs/before-each": "4.3.1",
-        "@tapjs/chdir": "3.3.1",
-        "@tapjs/filter": "4.3.1",
-        "@tapjs/fixture": "4.3.1",
-        "@tapjs/intercept": "4.3.1",
-        "@tapjs/mock": "4.3.1",
-        "@tapjs/node-serialize": "4.3.1",
-        "@tapjs/snapshot": "4.3.1",
-        "@tapjs/spawn": "4.3.1",
-        "@tapjs/stdin": "4.3.1",
-        "@tapjs/typescript": "3.5.1",
-        "@tapjs/worker": "4.3.1",
-        "glob": "^13.0.0",
-        "jackspeak": "^4.1.2",
+        "@tapjs/after": "3.3.4",
+        "@tapjs/after-each": "4.3.4",
+        "@tapjs/asserts": "4.3.4",
+        "@tapjs/before": "4.3.4",
+        "@tapjs/before-each": "4.3.4",
+        "@tapjs/chdir": "3.3.4",
+        "@tapjs/filter": "4.3.4",
+        "@tapjs/fixture": "4.3.4",
+        "@tapjs/intercept": "4.3.4",
+        "@tapjs/mock": "4.4.2",
+        "@tapjs/node-serialize": "4.3.4",
+        "@tapjs/snapshot": "4.3.4",
+        "@tapjs/spawn": "4.3.4",
+        "@tapjs/stdin": "4.3.4",
+        "@tapjs/typescript": "3.5.4",
+        "@tapjs/worker": "4.3.4",
+        "glob": "^13.0.2",
+        "jackspeak": "^4.2.3",
         "mkdirp": "^3.0.0",
         "package-json-from-dist": "^1.0.0",
-        "resolve-import": "^2.1.1",
+        "resolve-import": "^2.4.0",
         "rimraf": "^6.0.0",
-        "sync-content": "^2.0.1",
+        "sync-content": "^2.0.4",
         "tap-parser": "18.3.0",
-        "tshy": "^3.1.3",
+        "tshy": "^3.3.2",
         "typescript": "5.9",
         "walk-up-path": "^4.0.0"
       },
@@ -1446,13 +1390,13 @@
         "node": "20 || >=22"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/typescript": {
-      "version": "3.5.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.5.1.tgz",
-      "integrity": "sha512-4clGpzF1OTjLZYlavI167rCseSVsLpd5ygBAf297o468VEtpRAJPYx1IjoPrnGWC/M5iJadsCrTlIuBYABw81g==",
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.5.4.tgz",
+      "integrity": "sha512-z8O10CpbPYoHA876Dlg40qXtM058akP76HNQy+EdNE+AhFo7kold4YBgyjYRU7WDWNlp2B/MPgsy/OZ4PRXQWw==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -1462,20 +1406,20 @@
         "node": "20 || >=22"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tapjs/worker": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.3.1.tgz",
-      "integrity": "sha512-RInbFaGUH+KsAl/ozRVCMhpXaQPsvwEQ7PiKprpXgKjxjUrzwlkAbFAxo4K79axCWWdm6JUD5pH93n0FJ75jYQ==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.3.4.tgz",
+      "integrity": "sha512-AvmfwMgJXB/eOwIti/rOvw1l1eHsxUex3lyrhiC6uK5iOmbHWBOFsGHwEfc7Z4eertPM6FUqnZxkxkTEVGueig==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "engines": {
         "node": "20 || >=22"
       },
       "peerDependencies": {
-        "@tapjs/core": "4.4.1"
+        "@tapjs/core": "4.5.2"
       }
     },
     "node_modules/@tsconfig/node14": {
@@ -1548,13 +1492,13 @@
       "license": "MIT"
     },
     "node_modules/@types/node": {
-      "version": "24.10.12",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.12.tgz",
-      "integrity": "sha512-68e+T28EbdmLSTkPgs3+UacC6rzmqrcWFPQs1C8mwJhI/r5Uxr0yEuQotczNRROd1gq30NGxee+fo0rSIxpyAw==",
+      "version": "25.3.0",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz",
+      "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "undici-types": "~7.16.0"
+        "undici-types": "~7.18.0"
       }
     },
     "node_modules/@types/unist": {
@@ -1564,6 +1508,123 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/@typescript/native-preview": {
+      "version": "7.0.0-dev.20260221.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260221.1.tgz",
+      "integrity": "sha512-tEUzcnj6pD+z1vANchRzhpPl+3RMD+xQRvIN//0+qjtP5zyYB5T+MIaAWycpKDwlHP9C13JnQgcgYnC+LlNkrg==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "bin": {
+        "tsgo": "bin/tsgo.js"
+      },
+      "optionalDependencies": {
+        "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260221.1",
+        "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260221.1",
+        "@typescript/native-preview-linux-arm": "7.0.0-dev.20260221.1",
+        "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260221.1",
+        "@typescript/native-preview-linux-x64": "7.0.0-dev.20260221.1",
+        "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260221.1",
+        "@typescript/native-preview-win32-x64": "7.0.0-dev.20260221.1"
+      }
+    },
+    "node_modules/@typescript/native-preview-darwin-arm64": {
+      "version": "7.0.0-dev.20260221.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260221.1.tgz",
+      "integrity": "sha512-m3ttEpK+eXV7P06RVZZuSuUvNDj8psXODrMJRRQWpTNsk3qITbIdBSgOx2Q/M3tbQ9Mo2IBHt6jUjqOdRW9oZQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@typescript/native-preview-darwin-x64": {
+      "version": "7.0.0-dev.20260221.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260221.1.tgz",
+      "integrity": "sha512-BNaNe3rox2rpkh5sWcnZZob6sDA/at9KK55/WSRAH4W+9dFReOLFAR9YXhKxrLGZ1QpleuIBahKbV8o037S+pA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@typescript/native-preview-linux-arm": {
+      "version": "7.0.0-dev.20260221.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260221.1.tgz",
+      "integrity": "sha512-+/uyIw7vg4FyAnNpsCJHmSOhMiR2m56lqaEo1J5pMAstJmfLTTKQdJ1muIWCDCqc24k2U30IStHOaCqUerp/nQ==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@typescript/native-preview-linux-arm64": {
+      "version": "7.0.0-dev.20260221.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260221.1.tgz",
+      "integrity": "sha512-Y4jsvwDq86LXq63UYRLqCAd+nD1r6C2NVaGNR39H+c6D8SgOBkPLJa8quTH0Ir8E5bsR8vTN4E6xHY9jD4J2PA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@typescript/native-preview-linux-x64": {
+      "version": "7.0.0-dev.20260221.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260221.1.tgz",
+      "integrity": "sha512-7agd5FtVLPp+gRMvsecSDmdQ/XM80q/uaQ6+Kahan9uNrCuPJIyMiAtJvCoYYgT1nXX2AjwZk39DH63fRaw/Mg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@typescript/native-preview-win32-arm64": {
+      "version": "7.0.0-dev.20260221.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260221.1.tgz",
+      "integrity": "sha512-lXbsy5vDzS//oE0evX+QwZBwpKselXTd8H18lT42CBQo2hL2r0+w9YBguaYXrnGkAoHjDXEfKA2xii8yVZKVUg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@typescript/native-preview-win32-x64": {
+      "version": "7.0.0-dev.20260221.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260221.1.tgz",
+      "integrity": "sha512-O02pfQlVlRTsBmp0hODs/bOHm2ic2kXZpIchBP5Qm0wKCp1Ytz/7i3SNT1gN47I+KC4axn/AHhFmkWQyIu9kRQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
     "node_modules/abbrev": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz",
@@ -1575,9 +1636,9 @@
       }
     },
     "node_modules/acorn": {
-      "version": "8.15.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
-      "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+      "version": "8.16.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+      "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
       "dev": true,
       "license": "MIT",
       "bin": {
@@ -1588,9 +1649,9 @@
       }
     },
     "node_modules/acorn-walk": {
-      "version": "8.3.4",
-      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
-      "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
+      "version": "8.3.5",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz",
+      "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -1690,20 +1751,24 @@
       }
     },
     "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true,
-      "license": "MIT"
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz",
+      "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==",
+      "license": "MIT",
+      "engines": {
+        "node": "20 || >=22"
+      }
     },
     "node_modules/brace-expansion": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-      "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-      "dev": true,
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz",
+      "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==",
       "license": "MIT",
       "dependencies": {
-        "balanced-match": "^1.0.0"
+        "balanced-match": "^4.0.2"
+      },
+      "engines": {
+        "node": "20 || >=22"
       }
     },
     "node_modules/c8": {
@@ -2363,9 +2428,9 @@
       }
     },
     "node_modules/get-east-asian-width": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
-      "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",
+      "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",
       "dev": true,
       "license": "MIT",
       "engines": {
@@ -2376,18 +2441,18 @@
       }
     },
     "node_modules/glob": {
-      "version": "13.0.1",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz",
-      "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==",
+      "version": "13.0.6",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
+      "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "minimatch": "^10.1.2",
-        "minipass": "^7.1.2",
-        "path-scurry": "^2.0.0"
+        "minimatch": "^10.2.2",
+        "minipass": "^7.1.3",
+        "path-scurry": "^2.0.2"
       },
       "engines": {
-        "node": "20 || >=22"
+        "node": "18 || 20 || >=22"
       },
       "funding": {
         "url": "https://github.com/sponsors/isaacs"
@@ -2638,9 +2703,9 @@
       }
     },
     "node_modules/isexe": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.3.tgz",
-      "integrity": "sha512-+DAwQUtT9h86RsYHuBuSf583mEx34Z8ZTf8BXVrDDvHkUN/0e9c+UX3SHUUxSsZ3ZDfKY6sK7VdCJ96269O5+A==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
+      "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "engines": {
@@ -2719,6 +2784,15 @@
         "node": "^20.17.0 || >=22.9.0"
       }
     },
+    "node_modules/jsonc-simple-parser": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/jsonc-simple-parser/-/jsonc-simple-parser-3.0.0.tgz",
+      "integrity": "sha512-0qi9Kuj4JPar4/3b9wZteuPZrTeFzXsQyOZj7hksnReCZN3Vr17Doz7w/i3E9XH7vRkVTHhHES+r1h97I+hfww==",
+      "dev": true,
+      "dependencies": {
+        "reghex": "^3.0.2"
+      }
+    },
     "node_modules/jsonparse": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
@@ -2769,9 +2843,9 @@
       }
     },
     "node_modules/lru-cache": {
-      "version": "11.2.5",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz",
-      "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==",
+      "version": "11.2.6",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz",
+      "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "engines": {
@@ -2832,9 +2906,9 @@
       }
     },
     "node_modules/markdown-it": {
-      "version": "14.1.0",
-      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
-      "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
+      "version": "14.1.1",
+      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz",
+      "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -2867,27 +2941,27 @@
       }
     },
     "node_modules/minimatch": {
-      "version": "10.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz",
-      "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==",
+      "version": "10.2.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz",
+      "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "@isaacs/brace-expansion": "^5.0.1"
+        "brace-expansion": "^5.0.2"
       },
       "engines": {
-        "node": "20 || >=22"
+        "node": "18 || 20 || >=22"
       },
       "funding": {
         "url": "https://github.com/sponsors/isaacs"
       }
     },
     "node_modules/minipass": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
-      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+      "version": "7.1.3",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+      "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
       "dev": true,
-      "license": "ISC",
+      "license": "BlueOak-1.0.0",
       "engines": {
         "node": ">=16 || 14 >=14.17"
       }
@@ -3073,22 +3147,6 @@
         "node": "^20.17.0 || >=22.9.0"
       }
     },
-    "node_modules/node-gyp/node_modules/which": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz",
-      "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^3.1.1"
-      },
-      "bin": {
-        "node-which": "bin/which.js"
-      },
-      "engines": {
-        "node": "^20.17.0 || >=22.9.0"
-      }
-    },
     "node_modules/node-options-to-argv": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/node-options-to-argv/-/node-options-to-argv-1.0.0.tgz",
@@ -3165,9 +3223,9 @@
       }
     },
     "node_modules/npm-packlist": {
-      "version": "10.0.3",
-      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.3.tgz",
-      "integrity": "sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==",
+      "version": "10.0.4",
+      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.4.tgz",
+      "integrity": "sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
@@ -3293,9 +3351,9 @@
       "license": "BlueOak-1.0.0"
     },
     "node_modules/pacote": {
-      "version": "21.2.0",
-      "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.2.0.tgz",
-      "integrity": "sha512-OwidJA8uHuGYxoZhe4DBv3JJqGg4ojjVV5dwvVxRKq+bOBpgYMbYd/onIvSU1sv5nQIsb+zp4/0uqv6giFQVjg==",
+      "version": "21.3.1",
+      "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.3.1.tgz",
+      "integrity": "sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
@@ -3355,9 +3413,9 @@
       }
     },
     "node_modules/path-scurry": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
-      "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
+      "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -3365,7 +3423,7 @@
         "minipass": "^7.1.2"
       },
       "engines": {
-        "node": "20 || >=22"
+        "node": "18 || 20 || >=22"
       },
       "funding": {
         "url": "https://github.com/sponsors/isaacs"
@@ -3580,6 +3638,13 @@
         "url": "https://paulmillr.com/funding/"
       }
     },
+    "node_modules/reghex": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/reghex/-/reghex-3.0.2.tgz",
+      "integrity": "sha512-Zb9DJ5u6GhgqRSBnxV2QSnLqEwcKxHWFA1N2yUa4ZUAO1P8jlWKYtWZ6/ooV6yylspGXJX0O/uNzEv0xrCtwaA==",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/require-directory": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -3591,9 +3656,9 @@
       }
     },
     "node_modules/resolve-import": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-2.1.1.tgz",
-      "integrity": "sha512-pgTo41KMWjSZNNA4Ptgs+AtB+/w+a2/MDm6VzZiEnt2op2rXHYK/EYdRYhBsPlGN1naYMogJopBoJxtHgGTHEA==",
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-2.4.0.tgz",
+      "integrity": "sha512-gLWKdA5tiv5j/D7ipR47u3ovbVfzFPrctTdw2Ulnpmr6PPVVSvPKGNWu09jXVNlOSLLAeD6CA13bjIelpWttSw==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -3642,13 +3707,13 @@
       }
     },
     "node_modules/rimraf": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.2.tgz",
-      "integrity": "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==",
+      "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz",
+      "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "glob": "^13.0.0",
+        "glob": "^13.0.3",
         "package-json-from-dist": "^1.0.1"
       },
       "bin": {
@@ -3820,17 +3885,6 @@
         "node": ">= 14"
       }
     },
-    "node_modules/spdx-correct": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
-      "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
     "node_modules/spdx-exceptions": {
       "version": "2.5.0",
       "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
@@ -3839,9 +3893,9 @@
       "license": "CC-BY-3.0"
     },
     "node_modules/spdx-expression-parse": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz",
+      "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -3850,16 +3904,16 @@
       }
     },
     "node_modules/spdx-license-ids": {
-      "version": "3.0.22",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
-      "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
+      "version": "3.0.23",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz",
+      "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==",
       "dev": true,
       "license": "CC0-1.0"
     },
     "node_modules/ssri": {
-      "version": "13.0.0",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz",
-      "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==",
+      "version": "13.0.1",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz",
+      "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
@@ -4026,17 +4080,16 @@
       }
     },
     "node_modules/sync-content": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-2.0.3.tgz",
-      "integrity": "sha512-gKE1q9t4qBDkWqJElji6HSM2OBLK6QooA0LjYg5TYJLE7rca95u2/RKpMZ15WfW9Ri3qbFJRfiS0zbSQqvlf4w==",
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-2.0.4.tgz",
+      "integrity": "sha512-w3ioiBmbaogob33WdLnuwFk+8tpePI58CTWKqtdAgEqc2hfGuSwP02gPETqNX/3PLS5skv5a1wQR0gbaa2W0XQ==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "glob": "^13.0.0",
+        "glob": "^13.0.1",
         "mkdirp": "^3.0.1",
         "path-scurry": "^2.0.0",
-        "rimraf": "^6.0.0",
-        "tshy": "^3.1.0"
+        "rimraf": "^6.0.0"
       },
       "bin": {
         "sync-content": "dist/esm/bin.mjs"
@@ -4049,32 +4102,32 @@
       }
     },
     "node_modules/tap": {
-      "version": "21.5.1",
-      "resolved": "https://registry.npmjs.org/tap/-/tap-21.5.1.tgz",
-      "integrity": "sha512-uhS20sTR4Q+/T2ovawxgVLjdsTQuU+xFz9htRwlx5jwkaWiv+1xes/0ZW5IlO+hlQp9iQH3rj30FNRlnN2ZVtw==",
+      "version": "21.6.2",
+      "resolved": "https://registry.npmjs.org/tap/-/tap-21.6.2.tgz",
+      "integrity": "sha512-rEuxX+EVGQ6JOEyRnLQ80fa7v5s8yutpRA11LAjP6t/B6I0/mTWkaW0NfVoX5XDX3z5x9HVEt2dojSrJLcyp9A==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "@tapjs/after": "3.3.1",
-        "@tapjs/after-each": "4.3.1",
-        "@tapjs/asserts": "4.3.1",
-        "@tapjs/before": "4.3.1",
-        "@tapjs/before-each": "4.3.1",
-        "@tapjs/chdir": "3.3.1",
-        "@tapjs/core": "4.4.1",
-        "@tapjs/filter": "4.3.1",
-        "@tapjs/fixture": "4.3.1",
-        "@tapjs/intercept": "4.3.1",
-        "@tapjs/mock": "4.3.1",
-        "@tapjs/node-serialize": "4.3.1",
-        "@tapjs/run": "4.4.1",
-        "@tapjs/snapshot": "4.3.1",
-        "@tapjs/spawn": "4.3.1",
-        "@tapjs/stdin": "4.3.1",
-        "@tapjs/test": "4.3.1",
-        "@tapjs/typescript": "3.5.1",
-        "@tapjs/worker": "4.3.1",
-        "resolve-import": "^2.1.1"
+        "@tapjs/after": "3.3.4",
+        "@tapjs/after-each": "4.3.4",
+        "@tapjs/asserts": "4.3.4",
+        "@tapjs/before": "4.3.4",
+        "@tapjs/before-each": "4.3.4",
+        "@tapjs/chdir": "3.3.4",
+        "@tapjs/core": "4.5.2",
+        "@tapjs/filter": "4.3.4",
+        "@tapjs/fixture": "4.3.4",
+        "@tapjs/intercept": "4.3.4",
+        "@tapjs/mock": "4.4.2",
+        "@tapjs/node-serialize": "4.3.4",
+        "@tapjs/run": "4.5.2",
+        "@tapjs/snapshot": "4.3.4",
+        "@tapjs/spawn": "4.3.4",
+        "@tapjs/stdin": "4.3.4",
+        "@tapjs/test": "4.4.2",
+        "@tapjs/typescript": "3.5.4",
+        "@tapjs/worker": "4.3.4",
+        "resolve-import": "^2.4.0"
       },
       "bin": {
         "tap": "dist/esm/run.mjs"
@@ -4118,9 +4171,9 @@
       }
     },
     "node_modules/tar": {
-      "version": "7.5.7",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz",
-      "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==",
+      "version": "7.5.9",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz",
+      "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -4181,6 +4234,23 @@
         "node": ">=12"
       }
     },
+    "node_modules/test-exclude/node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/test-exclude/node_modules/brace-expansion": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+      "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
     "node_modules/test-exclude/node_modules/emoji-regex": {
       "version": "9.2.2",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
@@ -4347,19 +4417,21 @@
       }
     },
     "node_modules/tshy": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.1.3.tgz",
-      "integrity": "sha512-ZdPC4TpXbSKJDZoRULD8cwv6F1C0t0XK1lPtPWAtWzmMp7b2JL+YcGpmd+pwwP2jHbbOhPebNpGgg2iwmscSAA==",
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.3.2.tgz",
+      "integrity": "sha512-vOIXkqMtBWNjKUR/c99+6N50LhWdnKG1xE3+5wf8IPdzxx2lcIFPvbGgFdBBgoTMbdNb8mz06MUm7hY+TFnJcw==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
+        "@typescript/native-preview": "^7.0.0-dev.20260218.1",
         "chalk": "^5.6.2",
         "chokidar": "^4.0.3",
         "foreground-child": "^4.0.0",
+        "jsonc-simple-parser": "^3.0.0",
         "minimatch": "^10.0.3",
         "mkdirp": "^3.0.1",
         "polite-json": "^5.0.0",
-        "resolve-import": "^2.1.1",
+        "resolve-import": "^2.4.0",
         "rimraf": "^6.1.2",
         "sync-content": "^2.0.3",
         "typescript": "^5.9.3",
@@ -4401,9 +4473,9 @@
       }
     },
     "node_modules/typedoc": {
-      "version": "0.28.16",
-      "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.16.tgz",
-      "integrity": "sha512-x4xW77QC3i5DUFMBp0qjukOTnr/sSg+oEs86nB3LjDslvAmwe/PUGDWbe3GrIqt59oTqoXK5GRK9tAa0sYMiog==",
+      "version": "0.28.17",
+      "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.17.tgz",
+      "integrity": "sha512-ZkJ2G7mZrbxrKxinTQMjFqsCoYY6a5Luwv2GKbTnBCEgV2ihYm5CflA9JnJAwH0pZWavqfYxmDkFHPt4yx2oDQ==",
       "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
@@ -4424,6 +4496,23 @@
         "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x"
       }
     },
+    "node_modules/typedoc/node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/typedoc/node_modules/brace-expansion": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+      "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
     "node_modules/typedoc/node_modules/minimatch": {
       "version": "9.0.5",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
@@ -4462,9 +4551,9 @@
       "license": "MIT"
     },
     "node_modules/undici-types": {
-      "version": "7.16.0",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
-      "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+      "version": "7.18.2",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
+      "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
       "dev": true,
       "license": "MIT"
     },
@@ -4537,17 +4626,6 @@
         "@jridgewell/sourcemap-codec": "^1.4.14"
       }
     },
-    "node_modules/validate-npm-package-license": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
     "node_modules/validate-npm-package-name": {
       "version": "7.0.2",
       "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz",
@@ -4569,19 +4647,19 @@
       }
     },
     "node_modules/which": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
-      "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz",
+      "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
-        "isexe": "^3.1.1"
+        "isexe": "^4.0.0"
       },
       "bin": {
         "node-which": "bin/which.js"
       },
       "engines": {
-        "node": "^18.17.0 || >=20.5.0"
+        "node": "^20.17.0 || >=22.9.0"
       }
     },
     "node_modules/widest-line": {
diff --git a/deps/minimatch/package.json b/deps/minimatch/package.json
index e303df7cc58550..8c57eb485ac41a 100644
--- a/deps/minimatch/package.json
+++ b/deps/minimatch/package.json
@@ -2,7 +2,7 @@
   "author": "Isaac Z. Schlueter  (http://blog.izs.me)",
   "name": "minimatch",
   "description": "a glob matcher in javascript",
-  "version": "10.1.2",
+  "version": "10.2.2",
   "repository": {
     "type": "git",
     "url": "git@github.com:isaacs/minimatch"
@@ -34,20 +34,20 @@
     "presnap": "npm run prepare",
     "test": "tap",
     "snap": "tap",
-    "format": "prettier --write . --log-level warn",
+    "format": "prettier --write .",
     "benchmark": "node benchmark/index.js",
     "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts",
     "node-build": "esbuild ./dist/commonjs/index.js --bundle --platform=node --outfile=index.js"
   },
   "engines": {
-    "node": "20 || >=22"
+    "node": "18 || 20 || >=22"
   },
   "devDependencies": {
-    "@types/node": "^24.0.0",
+    "@types/node": "^25.3.0",
     "esbuild": "^0.27.3",
     "mkdirp": "^3.0.1",
     "prettier": "^3.6.2",
-    "tap": "^21.1.0",
+    "tap": "^21.6.1",
     "tshy": "^3.0.2",
     "typedoc": "^0.28.5"
   },
@@ -64,6 +64,6 @@
   "type": "module",
   "module": "./dist/esm/index.js",
   "dependencies": {
-    "@isaacs/brace-expansion": "^5.0.1"
+    "brace-expansion": "^5.0.2"
   }
 }

From 8bbe0138cefba271232704d0209cf8dcebd897fa Mon Sep 17 00:00:00 2001
From: Hiroki Osame 
Date: Wed, 25 Feb 2026 04:30:35 +0900
Subject: [PATCH 100/267] util: add fast path to stripVTControlCharacters

PR-URL: https://github.com/nodejs/node/pull/61833
Reviewed-By: Anna Henningsen 
Reviewed-By: Colin Ihrig 
Reviewed-By: Chemi Atlow 
Reviewed-By: Rafael Gonzaga 
Reviewed-By: Luigi Pinca 
---
 benchmark/util/strip-vt-control-characters.js | 36 +++++++++++++++++++
 lib/internal/util/inspect.js                  |  7 ++++
 test/parallel/test-util.js                    | 10 ++++++
 3 files changed, 53 insertions(+)
 create mode 100644 benchmark/util/strip-vt-control-characters.js

diff --git a/benchmark/util/strip-vt-control-characters.js b/benchmark/util/strip-vt-control-characters.js
new file mode 100644
index 00000000000000..a83b03bb2bb26d
--- /dev/null
+++ b/benchmark/util/strip-vt-control-characters.js
@@ -0,0 +1,36 @@
+'use strict';
+
+const common = require('../common.js');
+
+const { stripVTControlCharacters } = require('node:util');
+const assert = require('node:assert');
+
+const bench = common.createBenchmark(main, {
+  input: ['noAnsi-short', 'noAnsi-long', 'ansi-short', 'ansi-long'],
+  n: [1e6],
+});
+
+function main({ input, n }) {
+  let str;
+  switch (input) {
+    case 'noAnsi-short':
+      str = 'This is a plain text string without any ANSI codes';
+      break;
+    case 'noAnsi-long':
+      str = 'Long plain text without ANSI. '.repeat(333);
+      break;
+    case 'ansi-short':
+      str = '\u001B[31mHello\u001B[39m';
+      break;
+    case 'ansi-long':
+      str = ('\u001B[31m' + 'colored text '.repeat(10) + '\u001B[39m').repeat(10);
+      break;
+  }
+
+  bench.start();
+  for (let i = 0; i < n; i++) {
+    const result = stripVTControlCharacters(str);
+    assert.ok(typeof result === 'string');
+  }
+  bench.end(n);
+}
diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js
index e55c9e68d63b08..ff0445214a4bee 100644
--- a/lib/internal/util/inspect.js
+++ b/lib/internal/util/inspect.js
@@ -2764,6 +2764,13 @@ if (internalBinding('config').hasIntl) {
 function stripVTControlCharacters(str) {
   validateString(str, 'str');
 
+  // Short-circuit: all ANSI escape sequences start with either
+  // ESC (\u001B, 7-bit) or CSI (\u009B, 8-bit) introducer.
+  // If neither is present, the string has no VT control characters.
+  if (StringPrototypeIndexOf(str, '\u001B') === -1 &&
+      StringPrototypeIndexOf(str, '\u009B') === -1)
+    return str;
+
   return RegExpPrototypeSymbolReplace(ansi, str, '');
 }
 
diff --git a/test/parallel/test-util.js b/test/parallel/test-util.js
index 1ecddc829a0fdb..ad6c8142b27d0b 100644
--- a/test/parallel/test-util.js
+++ b/test/parallel/test-util.js
@@ -87,3 +87,13 @@ assert.throws(() => {
   message: 'The "str" argument must be of type string.' +
            common.invalidArgTypeHelper({})
 });
+
+// stripVTControlCharacters: fast path returns input when no ANSI codes
+assert.strictEqual(util.stripVTControlCharacters('hello'), 'hello');
+assert.strictEqual(util.stripVTControlCharacters(''), '');
+
+// stripVTControlCharacters: strips 7-bit ESC sequences
+assert.strictEqual(util.stripVTControlCharacters('\u001B[31mfoo\u001B[39m'), 'foo');
+
+// stripVTControlCharacters: strips 8-bit CSI sequences
+assert.strictEqual(util.stripVTControlCharacters('\u009B31mfoo\u009B39m'), 'foo');

From 78fa1a1a4982fd4439f710ab9a8a06b0402393ef Mon Sep 17 00:00:00 2001
From: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>
Date: Tue, 24 Feb 2026 20:30:47 +0100
Subject: [PATCH 101/267] doc: support toolchain Visual Studio 2022 & 2026 +
 Windows 11 SDK

PR-URL: https://github.com/nodejs/node/pull/61864
Refs: https://github.com/nodejs/node/issues/61449
Reviewed-By: Colin Ihrig 
Reviewed-By: Luigi Pinca 
Reviewed-By: Stefan Stojanovic 
Reviewed-By: Chengzhong Wu 
---
 BUILDING.md | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/BUILDING.md b/BUILDING.md
index 0ed918542f6ffc..7e9d76a46d9064 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -154,11 +154,11 @@ platforms. This is true regardless of entries in the table below.
 
 Depending on the host platform, the selection of toolchains may vary.
 
-| Operating System | Compiler Versions                                              |
-| ---------------- | -------------------------------------------------------------- |
-| Linux            | GCC >= 12.2                                                    |
-| Windows          | Visual Studio >= 2022 with the Windows 10 SDK on a 64-bit host |
-| macOS            | Xcode >= 16.1 (Apple LLVM >= 17)                               |
+| Operating System | Compiler Versions                                                         |
+| ---------------- | ------------------------------------------------------------------------- |
+| Linux            | GCC >= 12.2                                                               |
+| Windows          | Visual Studio 2022 or 2026 with the Windows 10 or 11 SDK on a 64-bit host |
+| macOS            | Xcode >= 16.1 (Apple LLVM >= 17)                                          |
 
 ### Official binary platforms and toolchains
 

From 8d0c22ea20ee893349c8d4f34af9242cbd19ca33 Mon Sep 17 00:00:00 2001
From: Nora Dossche <7771979+ndossche@users.noreply.github.com>
Date: Tue, 24 Feb 2026 20:51:58 +0100
Subject: [PATCH 102/267] crypto: fix potential null pointer dereference when
 BIO_meth_new() fails

This function can return null, which will make the calls to
BIO_meth_set_* trigger a null deref.
Even after fixing this, there is an issue with the
`BIOPointer::New(GetMethod())` call in `NodeBIO::New` because the
`New` method cannot handle a null pointer despite other code already
guarding for this
(e.g. the `NodeBIO::New` function already checks `bio`).
This patch solves the issues by adding more null checks.

PR-URL: https://github.com/nodejs/node/pull/61788
Reviewed-By: James M Snell 
Reviewed-By: Anna Henningsen 
Reviewed-By: Colin Ihrig 
Reviewed-By: Rafael Gonzaga 
---
 deps/ncrypto/ncrypto.cc  | 1 +
 src/crypto/crypto_bio.cc | 1 +
 2 files changed, 2 insertions(+)

diff --git a/deps/ncrypto/ncrypto.cc b/deps/ncrypto/ncrypto.cc
index 461819ce0fa732..3a26cfbdcab52e 100644
--- a/deps/ncrypto/ncrypto.cc
+++ b/deps/ncrypto/ncrypto.cc
@@ -1470,6 +1470,7 @@ BIOPointer BIOPointer::NewSecMem() {
 }
 
 BIOPointer BIOPointer::New(const BIO_METHOD* method) {
+  if (method == nullptr) return {};
   return BIOPointer(BIO_new(method));
 }
 
diff --git a/src/crypto/crypto_bio.cc b/src/crypto/crypto_bio.cc
index f32cb1cff7d41d..cdf87c322afd9c 100644
--- a/src/crypto/crypto_bio.cc
+++ b/src/crypto/crypto_bio.cc
@@ -226,6 +226,7 @@ const BIO_METHOD* NodeBIO::GetMethod() {
   // Static initialization ensures that this is safe to use concurrently.
   static const BIO_METHOD* method = [&]() {
     BIO_METHOD* method = BIO_meth_new(BIO_TYPE_MEM, "node.js SSL buffer");
+    CHECK_NOT_NULL(method);
     BIO_meth_set_write(method, Write);
     BIO_meth_set_read(method, Read);
     BIO_meth_set_puts(method, Puts);

From b1199c7bb4b6e430e75ab2dcc3dfe2d87d39c982 Mon Sep 17 00:00:00 2001
From: Ayoub Mabrouk <77799760+Ayoub-Mabrouk@users.noreply.github.com>
Date: Tue, 24 Feb 2026 22:02:18 +0000
Subject: [PATCH 103/267] test_runner: replace native methods with primordials

Replace native methods with primordials.

PR-URL: https://github.com/nodejs/node/pull/61219
Reviewed-By: Colin Ihrig 
Reviewed-By: Chemi Atlow 
Reviewed-By: Jordan Harband 
Reviewed-By: Pietro Marchini 
Reviewed-By: Moshe Atlow 
---
 lib/internal/test_runner/snapshot.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/internal/test_runner/snapshot.js b/lib/internal/test_runner/snapshot.js
index ff3e3c8d0e6ee6..158ec1d44216cd 100644
--- a/lib/internal/test_runner/snapshot.js
+++ b/lib/internal/test_runner/snapshot.js
@@ -9,6 +9,7 @@ const {
   SafeMap,
   String,
   StringPrototypeReplaceAll,
+  StringPrototypeSlice,
 } = primordials;
 const {
   codes: {
@@ -291,7 +292,7 @@ function validateFunctionArray(fns, name) {
 }
 
 function escapeSnapshotKey(str) {
-  let result = JSONStringify(str, null, 2).slice(1, -1);
+  let result = StringPrototypeSlice(JSONStringify(str, null, 2), 1, -1);
   result = StringPrototypeReplaceAll(result, '`', '\\`');
   result = StringPrototypeReplaceAll(result, '${', '\\${');
   return result;

From 1f2025fd1e01bbea016fed511e07169b77ab5bab Mon Sep 17 00:00:00 2001
From: Ali Hassan <24819103+thisalihassan@users.noreply.github.com>
Date: Wed, 25 Feb 2026 04:37:22 +0500
Subject: [PATCH 104/267] test_runner: expose worker ID for concurrent test
 execution

This adds support for identifying which worker is running a test file
when tests execute concurrently, similar to JEST_WORKER_ID in Jest,
VITEST_POOL_ID in Vitest, and MOCHA_WORKER_ID in Mocha.

When running with --test-isolation=process (default), each test file
runs in a separate child process and receives a unique worker ID from
1 to N. When running with --test-isolation=none, all tests run in the
same process and the worker ID is always 1.

This enables users to allocate separate resources (databases, ports,
etc.) for each test worker to avoid conflicts during concurrent
execution.

Changes:
- Add WorkerIdPool class to manage worker ID allocation and reuse
- Set NODE_TEST_WORKER_ID environment variable for child processes
- Add context.workerId getter to TestContext class
- Add tests for worker ID functionality
- Add documentation for context.workerId

Fixes: https://github.com/nodejs/node/issues/55842
PR-URL: https://github.com/nodejs/node/pull/61394
Reviewed-By: Matteo Collina 
Reviewed-By: Pietro Marchini 
Reviewed-By: Jacob Smith 
---
 doc/api/test.md                               |  33 ++++
 lib/internal/test_runner/runner.js            |  51 +++++++
 lib/internal/test_runner/test.js              |   5 +
 .../fixtures/test-runner/worker-id/test-1.mjs |  26 ++++
 .../fixtures/test-runner/worker-id/test-2.mjs |  26 ++++
 .../fixtures/test-runner/worker-id/test-3.mjs |  26 ++++
 test/parallel/test-runner-worker-id.js        | 141 ++++++++++++++++++
 7 files changed, 308 insertions(+)
 create mode 100644 test/fixtures/test-runner/worker-id/test-1.mjs
 create mode 100644 test/fixtures/test-runner/worker-id/test-2.mjs
 create mode 100644 test/fixtures/test-runner/worker-id/test-3.mjs
 create mode 100644 test/parallel/test-runner-worker-id.js

diff --git a/doc/api/test.md b/doc/api/test.md
index 686bd9af0abc59..35e1c715b9c9a4 100644
--- a/doc/api/test.md
+++ b/doc/api/test.md
@@ -3799,6 +3799,39 @@ added: v25.0.0
 
 Number of times the test has been attempted.
 
+### `context.workerId`
+
+
+
+* Type: {number|undefined}
+
+The unique identifier of the worker running the current test file. This value is
+derived from the `NODE_TEST_WORKER_ID` environment variable. When running tests
+with `--test-isolation=process` (the default), each test file runs in a separate
+child process and is assigned a worker ID from 1 to N, where N is the number of
+concurrent workers. When running with `--test-isolation=none`, all tests run in
+the same process and the worker ID is always 1. This value is `undefined` when
+not running in a test context.
+
+This property is useful for splitting resources (like database connections or
+server ports) across concurrent test files:
+
+```mjs
+import { test } from 'node:test';
+import { process } from 'node:process';
+
+test('database operations', async (t) => {
+  // Worker ID is available via context
+  console.log(`Running in worker ${t.workerId}`);
+
+  // Or via environment variable (available at import time)
+  const workerId = process.env.NODE_TEST_WORKER_ID;
+  // Use workerId to allocate separate resources per worker
+});
+```
+
 ### `context.plan(count[,options])`
 
  power
+  //
+  // ((152170 * power ) >> 16) is equal to
+  // floor(log(5**power)/log(2))
+  //
+  // Note that this is not magic: 152170/(1<<16) is
+  // approximately equal to log(5)/log(2).
+  // The 1<<16 value is a power of two; we could use a
+  // larger power of 2 if we wanted to.
+  //
+  int64_t exponent = (((152170 + 65536) * power) >> 16) + 1024 + 63;
+
+
+  // We want the most significant bit of i to be 1. Shift if needed.
+  int lz = leading_zeroes(i);
+  i <<= lz;
+
+
+  // We are going to need to do some 64-bit arithmetic to get a precise product.
+  // We use a table lookup approach.
+  // It is safe because
+  // power >= smallest_power
+  // and power <= largest_power
+  // We recover the mantissa of the power, it has a leading 1. It is always
+  // rounded down.
+  //
+  // We want the most significant 64 bits of the product. We know
+  // this will be non-zero because the most significant bit of i is
+  // 1.
+  const uint32_t index = 2 * uint32_t(power - simdjson::internal::smallest_power);
+  // Optimization: It may be that materializing the index as a variable might confuse some compilers and prevent effective complex-addressing loads. (Done for code clarity.)
+  //
+  // The full_multiplication function computes the 128-bit product of two 64-bit words
+  // with a returned value of type value128 with a "low component" corresponding to the
+  // 64-bit least significant bits of the product and with a "high component" corresponding
+  // to the 64-bit most significant bits of the product.
+#if SIMDJSON_STATIC_REFLECTION
+  simdjson::internal::value128 firstproduct = full_multiplication(i, simdjson::internal::powers_template<>::power_of_five_128[index]);
+#else
+  simdjson::internal::value128 firstproduct = full_multiplication(i, simdjson::internal::power_of_five_128[index]);
+#endif
+
+  // Both i and power_of_five_128[index] have their most significant bit set to 1 which
+  // implies that the either the most or the second most significant bit of the product
+  // is 1. We pack values in this manner for efficiency reasons: it maximizes the use
+  // we make of the product. It also makes it easy to reason about the product: there
+  // is 0 or 1 leading zero in the product.
+
+  // Unless the least significant 9 bits of the high (64-bit) part of the full
+  // product are all 1s, then we know that the most significant 55 bits are
+  // exact and no further work is needed. Having 55 bits is necessary because
+  // we need 53 bits for the mantissa but we have to have one rounding bit and
+  // we can waste a bit if the most significant bit of the product is zero.
+  if((firstproduct.high & 0x1FF) == 0x1FF) {
+    // We want to compute i * 5^q, but only care about the top 55 bits at most.
+    // Consider the scenario where q>=0. Then 5^q may not fit in 64-bits. Doing
+    // the full computation is wasteful. So we do what is called a "truncated
+    // multiplication".
+    // We take the most significant 64-bits, and we put them in
+    // power_of_five_128[index]. Usually, that's good enough to approximate i * 5^q
+    // to the desired approximation using one multiplication. Sometimes it does not suffice.
+    // Then we store the next most significant 64 bits in power_of_five_128[index + 1], and
+    // then we get a better approximation to i * 5^q.
+    //
+    // That's for when q>=0. The logic for q<0 is somewhat similar but it is somewhat
+    // more complicated.
+    //
+    // There is an extra layer of complexity in that we need more than 55 bits of
+    // accuracy in the round-to-even scenario.
+    //
+    // The full_multiplication function computes the 128-bit product of two 64-bit words
+    // with a returned value of type value128 with a "low component" corresponding to the
+    // 64-bit least significant bits of the product and with a "high component" corresponding
+    // to the 64-bit most significant bits of the product.
+#if SIMDJSON_STATIC_REFLECTION
+    simdjson::internal::value128 secondproduct = full_multiplication(i, simdjson::internal::powers_template<>::power_of_five_128[index + 1]);
+#else
+    simdjson::internal::value128 secondproduct = full_multiplication(i, simdjson::internal::power_of_five_128[index + 1]);
+#endif
+    firstproduct.low += secondproduct.high;
+    if(secondproduct.high > firstproduct.low) { firstproduct.high++; }
+    // As it has been proven by Noble Mushtak and Daniel Lemire in "Fast Number Parsing Without
+    // Fallback" (https://arxiv.org/abs/2212.06644), at this point we are sure that the product
+    // is sufficiently accurate, and more computation is not needed.
+  }
+  uint64_t lower = firstproduct.low;
+  uint64_t upper = firstproduct.high;
+  // The final mantissa should be 53 bits with a leading 1.
+  // We shift it so that it occupies 54 bits with a leading 1.
+  ///////
+  uint64_t upperbit = upper >> 63;
+  uint64_t mantissa = upper >> (upperbit + 9);
+  lz += int(1 ^ upperbit);
+
+  // Here we have mantissa < (1<<54).
+  int64_t real_exponent = exponent - lz;
+  if (simdjson_unlikely(real_exponent <= 0)) { // we have a subnormal?
+    // Here have that real_exponent <= 0 so -real_exponent >= 0
+    if(-real_exponent + 1 >= 64) { // if we have more than 64 bits below the minimum exponent, you have a zero for sure.
+      d = negative ? -0.0 : 0.0;
+      return true;
+    }
+    // next line is safe because -real_exponent + 1 < 0
+    mantissa >>= -real_exponent + 1;
+    // Thankfully, we can't have both "round-to-even" and subnormals because
+    // "round-to-even" only occurs for powers close to 0.
+    mantissa += (mantissa & 1); // round up
+    mantissa >>= 1;
+    // There is a weird scenario where we don't have a subnormal but just.
+    // Suppose we start with 2.2250738585072013e-308, we end up
+    // with 0x3fffffffffffff x 2^-1023-53 which is technically subnormal
+    // whereas 0x40000000000000 x 2^-1023-53  is normal. Now, we need to round
+    // up 0x3fffffffffffff x 2^-1023-53  and once we do, we are no longer
+    // subnormal, but we can only know this after rounding.
+    // So we only declare a subnormal if we are smaller than the threshold.
+    real_exponent = (mantissa < (uint64_t(1) << 52)) ? 0 : 1;
+    d = to_double(mantissa, real_exponent, negative);
+    return true;
+  }
+  // We have to round to even. The "to even" part
+  // is only a problem when we are right in between two floats
+  // which we guard against.
+  // If we have lots of trailing zeros, we may fall right between two
+  // floating-point values.
+  //
+  // The round-to-even cases take the form of a number 2m+1 which is in (2^53,2^54]
+  // times a power of two. That is, it is right between a number with binary significand
+  // m and another number with binary significand m+1; and it must be the case
+  // that it cannot be represented by a float itself.
+  //
+  // We must have that w * 10 ^q == (2m+1) * 2^p for some power of two 2^p.
+  // Recall that 10^q = 5^q * 2^q.
+  // When q >= 0, we must have that (2m+1) is divible by 5^q, so 5^q <= 2^54. We have that
+  //  5^23 <=  2^54 and it is the last power of five to qualify, so q <= 23.
+  // When q<0, we have  w  >=  (2m+1) x 5^{-q}.  We must have that w<2^{64} so
+  // (2m+1) x 5^{-q} < 2^{64}. We have that 2m+1>2^{53}. Hence, we must have
+  // 2^{53} x 5^{-q} < 2^{64}.
+  // Hence we have 5^{-q} < 2^{11}$ or q>= -4.
+  //
+  // We require lower <= 1 and not lower == 0 because we could not prove that
+  // that lower == 0 is implied; but we could prove that lower <= 1 is a necessary and sufficient test.
+  if (simdjson_unlikely((lower <= 1) && (power >= -4) && (power <= 23) && ((mantissa & 3) == 1))) {
+    if((mantissa  << (upperbit + 64 - 53 - 2)) ==  upper) {
+      mantissa &= ~1;             // flip it so that we do not round up
+    }
+  }
+
+  mantissa += mantissa & 1;
+  mantissa >>= 1;
+
+  // Here we have mantissa < (1<<53), unless there was an overflow
+  if (mantissa >= (1ULL << 53)) {
+    //////////
+    // This will happen when parsing values such as 7.2057594037927933e+16
+    ////////
+    mantissa = (1ULL << 52);
+    real_exponent++;
+  }
+  mantissa &= ~(1ULL << 52);
+  // we have to check that real_exponent is in range, otherwise we bail out
+  if (simdjson_unlikely(real_exponent > 2046)) {
+    // We have an infinite value!!! We could actually throw an error here if we could.
+    return false;
+  }
+  d = to_double(mantissa, real_exponent, negative);
+  return true;
+}
+
+// We call a fallback floating-point parser that might be slow. Note
+// it will accept JSON numbers, but the JSON spec. is more restrictive so
+// before you call parse_float_fallback, you need to have validated the input
+// string with the JSON grammar.
+// It will return an error (false) if the parsed number is infinite.
+// The string parsing itself always succeeds. We know that there is at least
+// one digit.
+static bool parse_float_fallback(const uint8_t *ptr, double *outDouble) {
+  *outDouble = simdjson::internal::from_chars(reinterpret_cast(ptr));
+  // We do not accept infinite values.
+
+  // Detecting finite values in a portable manner is ridiculously hard, ideally
+  // we would want to do:
+  // return !std::isfinite(*outDouble);
+  // but that mysteriously fails under legacy/old libc++ libraries, see
+  // https://github.com/simdjson/simdjson/issues/1286
+  //
+  // Therefore, fall back to this solution (the extra parens are there
+  // to handle that max may be a macro on windows).
+  return !(*outDouble > (std::numeric_limits::max)() || *outDouble < std::numeric_limits::lowest());
+}
+
+static bool parse_float_fallback(const uint8_t *ptr, const uint8_t *end_ptr, double *outDouble) {
+  *outDouble = simdjson::internal::from_chars(reinterpret_cast(ptr), reinterpret_cast(end_ptr));
+  // We do not accept infinite values.
+
+  // Detecting finite values in a portable manner is ridiculously hard, ideally
+  // we would want to do:
+  // return !std::isfinite(*outDouble);
+  // but that mysteriously fails under legacy/old libc++ libraries, see
+  // https://github.com/simdjson/simdjson/issues/1286
+  //
+  // Therefore, fall back to this solution (the extra parens are there
+  // to handle that max may be a macro on windows).
+  return !(*outDouble > (std::numeric_limits::max)() || *outDouble < std::numeric_limits::lowest());
+}
+
+// check quickly whether the next 8 chars are made of digits
+// at a glance, it looks better than Mula's
+// http://0x80.pl/articles/swar-digits-validate.html
+simdjson_inline bool is_made_of_eight_digits_fast(const uint8_t *chars) {
+  uint64_t val;
+  // this can read up to 7 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(7 <= SIMDJSON_PADDING, "SIMDJSON_PADDING must be bigger than 7");
+  std::memcpy(&val, chars, 8);
+  // a branchy method might be faster:
+  // return (( val & 0xF0F0F0F0F0F0F0F0 ) == 0x3030303030303030)
+  //  && (( (val + 0x0606060606060606) & 0xF0F0F0F0F0F0F0F0 ) ==
+  //  0x3030303030303030);
+  return (((val & 0xF0F0F0F0F0F0F0F0) |
+           (((val + 0x0606060606060606) & 0xF0F0F0F0F0F0F0F0) >> 4)) ==
+          0x3333333333333333);
+}
+
+template
+SIMDJSON_NO_SANITIZE_UNDEFINED // We deliberately allow overflow here and check later
+simdjson_inline bool parse_digit(const uint8_t c, I &i) {
+  const uint8_t digit = static_cast(c - '0');
+  if (digit > 9) {
+    return false;
+  }
+  // PERF NOTE: multiplication by 10 is cheaper than arbitrary integer multiplication
+  i = 10 * i + digit; // might overflow, we will handle the overflow later
+  return true;
+}
+
+simdjson_inline bool is_digit(const uint8_t c) {
+  return static_cast(c - '0') <= 9;
+}
+
+simdjson_warn_unused simdjson_inline error_code parse_decimal_after_separator(simdjson_unused const uint8_t *const src, const uint8_t *&p, uint64_t &i, int64_t &exponent) {
+  // we continue with the fiction that we have an integer. If the
+  // floating point number is representable as x * 10^z for some integer
+  // z that fits in 53 bits, then we will be able to convert back the
+  // the integer into a float in a lossless manner.
+  const uint8_t *const first_after_period = p;
+
+#ifdef SIMDJSON_SWAR_NUMBER_PARSING
+#if SIMDJSON_SWAR_NUMBER_PARSING
+  // this helps if we have lots of decimals!
+  // this turns out to be frequent enough.
+  if (is_made_of_eight_digits_fast(p)) {
+    i = i * 100000000 + parse_eight_digits_unrolled(p);
+    p += 8;
+  }
+#endif // SIMDJSON_SWAR_NUMBER_PARSING
+#endif // #ifdef SIMDJSON_SWAR_NUMBER_PARSING
+  // Unrolling the first digit makes a small difference on some implementations (e.g. westmere)
+  if (parse_digit(*p, i)) { ++p; }
+  while (parse_digit(*p, i)) { p++; }
+  exponent = first_after_period - p;
+  // Decimal without digits (123.) is illegal
+  if (exponent == 0) {
+    return INVALID_NUMBER(src);
+  }
+  return SUCCESS;
+}
+
+simdjson_warn_unused simdjson_inline error_code parse_exponent(simdjson_unused const uint8_t *const src, const uint8_t *&p, int64_t &exponent) {
+  // Exp Sign: -123.456e[-]78
+  bool neg_exp = ('-' == *p);
+  if (neg_exp || '+' == *p) { p++; } // Skip + as well
+
+  // Exponent: -123.456e-[78]
+  auto start_exp = p;
+  int64_t exp_number = 0;
+  while (parse_digit(*p, exp_number)) { ++p; }
+  // It is possible for parse_digit to overflow.
+  // In particular, it could overflow to INT64_MIN, and we cannot do - INT64_MIN.
+  // Thus we *must* check for possible overflow before we negate exp_number.
+
+  // Performance notes: it may seem like combining the two "simdjson_unlikely checks" below into
+  // a single simdjson_unlikely path would be faster. The reasoning is sound, but the compiler may
+  // not oblige and may, in fact, generate two distinct paths in any case. It might be
+  // possible to do uint64_t(p - start_exp - 1) >= 18 but it could end up trading off
+  // instructions for a simdjson_likely branch, an unconclusive gain.
+
+  // If there were no digits, it's an error.
+  if (simdjson_unlikely(p == start_exp)) {
+    return INVALID_NUMBER(src);
+  }
+  // We have a valid positive exponent in exp_number at this point, except that
+  // it may have overflowed.
+
+  // If there were more than 18 digits, we may have overflowed the integer. We have to do
+  // something!!!!
+  if (simdjson_unlikely(p > start_exp+18)) {
+    // Skip leading zeroes: 1e000000000000000000001 is technically valid and does not overflow
+    while (*start_exp == '0') { start_exp++; }
+    // 19 digits could overflow int64_t and is kind of absurd anyway. We don't
+    // support exponents smaller than -999,999,999,999,999,999 and bigger
+    // than 999,999,999,999,999,999.
+    // We can truncate.
+    // Note that 999999999999999999 is assuredly too large. The maximal ieee64 value before
+    // infinity is ~1.8e308. The smallest subnormal is ~5e-324. So, actually, we could
+    // truncate at 324.
+    // Note that there is no reason to fail per se at this point in time.
+    // E.g., 0e999999999999999999999 is a fine number.
+    if (p > start_exp+18) { exp_number = 999999999999999999; }
+  }
+  // At this point, we know that exp_number is a sane, positive, signed integer.
+  // It is <= 999,999,999,999,999,999. As long as 'exponent' is in
+  // [-8223372036854775808, 8223372036854775808], we won't overflow. Because 'exponent'
+  // is bounded in magnitude by the size of the JSON input, we are fine in this universe.
+  // To sum it up: the next line should never overflow.
+  exponent += (neg_exp ? -exp_number : exp_number);
+  return SUCCESS;
+}
+
+simdjson_inline bool check_if_integer(const uint8_t *const src, size_t max_length) {
+  const uint8_t *const srcend = src + max_length;
+  bool negative = (*src == '-'); // we can always read at least one character after the '-'
+  const uint8_t *p = src + uint8_t(negative);
+  if(p == srcend) { return false; }
+  if(*p == '0') {
+    ++p;
+    if(p == srcend) { return true; }
+    if(jsoncharutils::is_not_structural_or_whitespace(*p)) { return false; }
+    return true;
+  }
+  while(p != srcend && is_digit(*p)) { ++p; }
+  if(p == srcend) { return true; }
+  if(jsoncharutils::is_not_structural_or_whitespace(*p)) { return false; }
+  return true;
+}
+
+simdjson_inline size_t significant_digits(const uint8_t * start_digits, size_t digit_count) {
+  // It is possible that the integer had an overflow.
+  // We have to handle the case where we have 0.0000somenumber.
+  const uint8_t *start = start_digits;
+  while ((*start == '0') || (*start == '.')) { ++start; }
+  // we over-decrement by one when there is a '.'
+  return digit_count - size_t(start - start_digits);
+}
+
+} // unnamed namespace
+
+/** @private */
+static error_code slow_float_parsing(simdjson_unused const uint8_t * src, double* answer) {
+  if (parse_float_fallback(src, answer)) {
+    return SUCCESS;
+  }
+  return INVALID_NUMBER(src);
+}
+
+/** @private */
+template
+simdjson_warn_unused simdjson_inline error_code write_float(const uint8_t *const src, bool negative, uint64_t i, const uint8_t * start_digits, size_t digit_count, int64_t exponent, W &writer) {
+  // If we frequently had to deal with long strings of digits,
+  // we could extend our code by using a 128-bit integer instead
+  // of a 64-bit integer. However, this is uncommon in practice.
+  //
+  // 9999999999999999999 < 2**64 so we can accommodate 19 digits.
+  // If we have a decimal separator, then digit_count - 1 is the number of digits, but we
+  // may not have a decimal separator!
+  if (simdjson_unlikely(digit_count > 19 && significant_digits(start_digits, digit_count) > 19)) {
+    // Ok, chances are good that we had an overflow!
+    // this is almost never going to get called!!!
+    // we start anew, going slowly!!!
+    // This will happen in the following examples:
+    // 10000000000000000000000000000000000000000000e+308
+    // 3.1415926535897932384626433832795028841971693993751
+    //
+    // NOTE: We do not pass a reference to the to slow_float_parsing. If we passed our writer
+    // reference to it, it would force it to be stored in memory, preventing the compiler from
+    // picking it apart and putting into registers. i.e. if we pass it as reference,
+    // it gets slow.
+    double d;
+    error_code error = slow_float_parsing(src, &d);
+    writer.append_double(d);
+    return error;
+  }
+  // NOTE: it's weird that the simdjson_unlikely() only wraps half the if, but it seems to get slower any other
+  // way we've tried: https://github.com/simdjson/simdjson/pull/990#discussion_r448497331
+  // To future reader: we'd love if someone found a better way, or at least could explain this result!
+  if (simdjson_unlikely(exponent < simdjson::internal::smallest_power) || (exponent > simdjson::internal::largest_power)) {
+    //
+    // Important: smallest_power is such that it leads to a zero value.
+    // Observe that 18446744073709551615e-343 == 0, i.e. (2**64 - 1) e -343 is zero
+    // so something x 10^-343 goes to zero, but not so with  something x 10^-342.
+    static_assert(simdjson::internal::smallest_power <= -342, "smallest_power is not small enough");
+    //
+    if((exponent < simdjson::internal::smallest_power) || (i == 0)) {
+      // E.g. Parse "-0.0e-999" into the same value as "-0.0". See https://en.wikipedia.org/wiki/Signed_zero
+      WRITE_DOUBLE(negative ? -0.0 : 0.0, src, writer);
+      return SUCCESS;
+    } else { // (exponent > largest_power) and (i != 0)
+      // We have, for sure, an infinite value and simdjson refuses to parse infinite values.
+      return INVALID_NUMBER(src);
+    }
+  }
+  double d;
+  if (!compute_float_64(exponent, i, negative, d)) {
+    // we are almost never going to get here.
+    if (!parse_float_fallback(src, &d)) { return INVALID_NUMBER(src); }
+  }
+  WRITE_DOUBLE(d, src, writer);
+  return SUCCESS;
+}
+
+// parse the number at src
+// define JSON_TEST_NUMBERS for unit testing
+//
+// It is assumed that the number is followed by a structural ({,},],[) character
+// or a white space character. If that is not the case (e.g., when the JSON
+// document is made of a single number), then it is necessary to copy the
+// content and append a space before calling this function.
+//
+// Our objective is accurate parsing (ULP of 0) at high speed.
+template
+simdjson_warn_unused simdjson_inline error_code parse_number(const uint8_t *const src, W &writer);
+
+// for performance analysis, it is sometimes  useful to skip parsing
+#ifdef SIMDJSON_SKIPNUMBERPARSING
+
+template
+simdjson_warn_unused simdjson_inline error_code parse_number(const uint8_t *const, W &writer) {
+  writer.append_s64(0);        // always write zero
+  return SUCCESS;              // always succeeds
+}
+
+simdjson_unused simdjson_inline simdjson_result parse_unsigned(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline simdjson_result parse_integer(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline simdjson_result parse_double(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline simdjson_result parse_unsigned_in_string(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline simdjson_result parse_integer_in_string(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline simdjson_result parse_double_in_string(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline bool is_negative(const uint8_t * src) noexcept  { return false; }
+simdjson_unused simdjson_inline simdjson_result is_integer(const uint8_t * src) noexcept  { return false; }
+simdjson_unused simdjson_inline simdjson_result get_number_type(const uint8_t * src) noexcept { return number_type::signed_integer; }
+#else
+
+// parse the number at src
+// define JSON_TEST_NUMBERS for unit testing
+//
+// It is assumed that the number is followed by a structural ({,},],[) character
+// or a white space character. If that is not the case (e.g., when the JSON
+// document is made of a single number), then it is necessary to copy the
+// content and append a space before calling this function.
+//
+// Our objective is accurate parsing (ULP of 0) at high speed.
+template
+simdjson_warn_unused simdjson_inline error_code parse_number(const uint8_t *const src, W &writer) {
+  //
+  // Check for minus sign
+  //
+  bool negative = (*src == '-');
+  const uint8_t *p = src + uint8_t(negative);
+
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while (parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  if (digit_count == 0 || ('0' == *start_digits && digit_count > 1)) { return INVALID_NUMBER(src); }
+
+  //
+  // Handle floats if there is a . or e (or both)
+  //
+  int64_t exponent = 0;
+  bool is_float = false;
+  if ('.' == *p) {
+    is_float = true;
+    ++p;
+    SIMDJSON_TRY( parse_decimal_after_separator(src, p, i, exponent) );
+    digit_count = int(p - start_digits); // used later to guard against overflows
+  }
+  if (('e' == *p) || ('E' == *p)) {
+    is_float = true;
+    ++p;
+    SIMDJSON_TRY( parse_exponent(src, p, exponent) );
+  }
+  if (is_float) {
+    const bool dirty_end = jsoncharutils::is_not_structural_or_whitespace(*p);
+    SIMDJSON_TRY( write_float(src, negative, i, start_digits, digit_count, exponent, writer) );
+    if (dirty_end) { return INVALID_NUMBER(src); }
+    return SUCCESS;
+  }
+
+  // The longest negative 64-bit number is 19 digits.
+  // The longest positive 64-bit number is 20 digits.
+  // We do it this way so we don't trigger this branch unless we must.
+  size_t longest_digit_count = negative ? 19 : 20;
+  if (digit_count > longest_digit_count) { return BIGINT_NUMBER(src); }
+  if (digit_count == longest_digit_count) {
+    if (negative) {
+      // Anything negative above INT64_MAX+1 is invalid
+      if (i > uint64_t(INT64_MAX)+1) { return BIGINT_NUMBER(src);  }
+      WRITE_INTEGER(~i+1, src, writer);
+      if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
+      return SUCCESS;
+    // Positive overflow check:
+    // - A 20 digit number starting with 2-9 is overflow, because 18,446,744,073,709,551,615 is the
+    //   biggest uint64_t.
+    // - A 20 digit number starting with 1 is overflow if it is less than INT64_MAX.
+    //   If we got here, it's a 20 digit number starting with the digit "1".
+    // - If a 20 digit number starting with 1 overflowed (i*10+digit), the result will be smaller
+    //   than 1,553,255,926,290,448,384.
+    // - That is smaller than the smallest possible 20-digit number the user could write:
+    //   10,000,000,000,000,000,000.
+    // - Therefore, if the number is positive and lower than that, it's overflow.
+    // - The value we are looking at is less than or equal to INT64_MAX.
+    //
+    }  else if (src[0] != uint8_t('1') || i <= uint64_t(INT64_MAX)) { return INVALID_NUMBER(src); }
+  }
+
+  // Write unsigned if it does not fit in a signed integer.
+  if (i > uint64_t(INT64_MAX)) {
+    WRITE_UNSIGNED(i, src, writer);
+  } else {
+#if SIMDJSON_MINUS_ZERO_AS_FLOAT
+    if(i == 0 && negative) {
+      // We have to write -0.0 instead of 0
+      WRITE_DOUBLE(-0.0, src, writer);
+    } else {
+      WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
+    }
+#else
+  WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
+#endif
+  }
+  if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
+  return SUCCESS;
+}
+
+// Inlineable functions
+namespace {
+
+// This table can be used to characterize the final character of an integer
+// string. For JSON structural character and allowable white space characters,
+// we return SUCCESS. For 'e', '.' and 'E', we return INCORRECT_TYPE. Otherwise
+// we return NUMBER_ERROR.
+// Optimization note: we could easily reduce the size of the table by half (to 128)
+// at the cost of an extra branch.
+// Optimization note: we want the values to use at most 8 bits (not, e.g., 32 bits):
+static_assert(error_code(uint8_t(NUMBER_ERROR))== NUMBER_ERROR, "bad NUMBER_ERROR cast");
+static_assert(error_code(uint8_t(SUCCESS))== SUCCESS, "bad NUMBER_ERROR cast");
+static_assert(error_code(uint8_t(INCORRECT_TYPE))== INCORRECT_TYPE, "bad NUMBER_ERROR cast");
+
+const uint8_t integer_string_finisher[256] = {
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, SUCCESS,
+    SUCCESS,      NUMBER_ERROR,   NUMBER_ERROR, SUCCESS,      NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   SUCCESS,      NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, SUCCESS,
+    NUMBER_ERROR, INCORRECT_TYPE, NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, SUCCESS,      NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, INCORRECT_TYPE,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, SUCCESS,        NUMBER_ERROR, SUCCESS,      NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, INCORRECT_TYPE, NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, SUCCESS,      NUMBER_ERROR,
+    SUCCESS,      NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR};
+
+// Parse any number from 0 to 18,446,744,073,709,551,615
+simdjson_unused simdjson_inline simdjson_result parse_unsigned(const uint8_t * const src) noexcept {
+  const uint8_t *p = src;
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while (parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  // The longest positive 64-bit number is 20 digits.
+  // We do it this way so we don't trigger this branch unless we must.
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > 20))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > 20)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*p)) {
+  //  return (*p == '.' || *p == 'e' || *p == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if (integer_string_finisher[*p] != SUCCESS) { return error_code(integer_string_finisher[*p]); }
+
+  if (digit_count == 20) {
+    // Positive overflow check:
+    // - A 20 digit number starting with 2-9 is overflow, because 18,446,744,073,709,551,615 is the
+    //   biggest uint64_t.
+    // - A 20 digit number starting with 1 is overflow if it is less than INT64_MAX.
+    //   If we got here, it's a 20 digit number starting with the digit "1".
+    // - If a 20 digit number starting with 1 overflowed (i*10+digit), the result will be smaller
+    //   than 1,553,255,926,290,448,384.
+    // - That is smaller than the smallest possible 20-digit number the user could write:
+    //   10,000,000,000,000,000,000.
+    // - Therefore, if the number is positive and lower than that, it's overflow.
+    // - The value we are looking at is less than or equal to INT64_MAX.
+    //
+    if (src[0] != uint8_t('1') || i <= uint64_t(INT64_MAX)) { return INCORRECT_TYPE; }
+  }
+
+  return i;
+}
+
+
+// Parse any number from 0 to 18,446,744,073,709,551,615
+// Never read at src_end or beyond
+simdjson_unused simdjson_inline simdjson_result parse_unsigned(const uint8_t * const src, const uint8_t * const src_end) noexcept {
+  const uint8_t *p = src;
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while ((p != src_end) && parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  // The longest positive 64-bit number is 20 digits.
+  // We do it this way so we don't trigger this branch unless we must.
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > 20))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > 20)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*p)) {
+  //  return (*p == '.' || *p == 'e' || *p == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if ((p != src_end) && integer_string_finisher[*p] != SUCCESS) { return error_code(integer_string_finisher[*p]); }
+
+  if (digit_count == 20) {
+    // Positive overflow check:
+    // - A 20 digit number starting with 2-9 is overflow, because 18,446,744,073,709,551,615 is the
+    //   biggest uint64_t.
+    // - A 20 digit number starting with 1 is overflow if it is less than INT64_MAX.
+    //   If we got here, it's a 20 digit number starting with the digit "1".
+    // - If a 20 digit number starting with 1 overflowed (i*10+digit), the result will be smaller
+    //   than 1,553,255,926,290,448,384.
+    // - That is smaller than the smallest possible 20-digit number the user could write:
+    //   10,000,000,000,000,000,000.
+    // - Therefore, if the number is positive and lower than that, it's overflow.
+    // - The value we are looking at is less than or equal to INT64_MAX.
+    //
+    if (src[0] != uint8_t('1') || i <= uint64_t(INT64_MAX)) { return INCORRECT_TYPE; }
+  }
+
+  return i;
+}
+
+// Parse any number from 0 to 18,446,744,073,709,551,615
+simdjson_unused simdjson_inline simdjson_result parse_unsigned_in_string(const uint8_t * const src) noexcept {
+  const uint8_t *p = src + 1;
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while (parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  // The longest positive 64-bit number is 20 digits.
+  // We do it this way so we don't trigger this branch unless we must.
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > 20))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > 20)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*p)) {
+  //  return (*p == '.' || *p == 'e' || *p == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if (*p != '"') { return NUMBER_ERROR; }
+
+  if (digit_count == 20) {
+    // Positive overflow check:
+    // - A 20 digit number starting with 2-9 is overflow, because 18,446,744,073,709,551,615 is the
+    //   biggest uint64_t.
+    // - A 20 digit number starting with 1 is overflow if it is less than INT64_MAX.
+    //   If we got here, it's a 20 digit number starting with the digit "1".
+    // - If a 20 digit number starting with 1 overflowed (i*10+digit), the result will be smaller
+    //   than 1,553,255,926,290,448,384.
+    // - That is smaller than the smallest possible 20-digit number the user could write:
+    //   10,000,000,000,000,000,000.
+    // - Therefore, if the number is positive and lower than that, it's overflow.
+    // - The value we are looking at is less than or equal to INT64_MAX.
+    //
+    // Note: we use src[1] and not src[0] because src[0] is the quote character in this
+    // instance.
+    if (src[1] != uint8_t('1') || i <= uint64_t(INT64_MAX)) { return INCORRECT_TYPE; }
+  }
+
+  return i;
+}
+
+// Parse any number from  -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+simdjson_unused simdjson_inline simdjson_result parse_integer(const uint8_t *src) noexcept {
+  //
+  // Check for minus sign
+  //
+  bool negative = (*src == '-');
+  const uint8_t *p = src + uint8_t(negative);
+
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while (parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  // We go from
+  // -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+  // so we can never represent numbers that have more than 19 digits.
+  size_t longest_digit_count = 19;
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > longest_digit_count))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > longest_digit_count)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*p)) {
+  //  return (*p == '.' || *p == 'e' || *p == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if(integer_string_finisher[*p] != SUCCESS) { return error_code(integer_string_finisher[*p]); }
+  // Negative numbers have can go down to - INT64_MAX - 1 whereas positive numbers are limited to INT64_MAX.
+  // Performance note: This check is only needed when digit_count == longest_digit_count but it is
+  // so cheap that we might as well always make it.
+  if(i > uint64_t(INT64_MAX) + uint64_t(negative)) { return INCORRECT_TYPE; }
+  return negative ? (~i+1) : i;
+}
+
+// Parse any number from  -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+// Never read at src_end or beyond
+simdjson_unused simdjson_inline simdjson_result parse_integer(const uint8_t * const src, const uint8_t * const src_end) noexcept {
+  //
+  // Check for minus sign
+  //
+  if(src == src_end) { return NUMBER_ERROR; }
+  bool negative = (*src == '-');
+  const uint8_t *p = src + uint8_t(negative);
+
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while ((p != src_end) && parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  // We go from
+  // -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+  // so we can never represent numbers that have more than 19 digits.
+  size_t longest_digit_count = 19;
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > longest_digit_count))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > longest_digit_count)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*p)) {
+  //  return (*p == '.' || *p == 'e' || *p == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if((p != src_end) && integer_string_finisher[*p] != SUCCESS) { return error_code(integer_string_finisher[*p]); }
+  // Negative numbers have can go down to - INT64_MAX - 1 whereas positive numbers are limited to INT64_MAX.
+  // Performance note: This check is only needed when digit_count == longest_digit_count but it is
+  // so cheap that we might as well always make it.
+  if(i > uint64_t(INT64_MAX) + uint64_t(negative)) { return INCORRECT_TYPE; }
+  return negative ? (~i+1) : i;
+}
+
+// Parse any number from  -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+simdjson_unused simdjson_inline simdjson_result parse_integer_in_string(const uint8_t *src) noexcept {
+  //
+  // Check for minus sign
+  //
+  bool negative = (*(src + 1) == '-');
+  src += uint8_t(negative) + 1;
+
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = src;
+  uint64_t i = 0;
+  while (parse_digit(*src, i)) { src++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(src - start_digits);
+  // We go from
+  // -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+  // so we can never represent numbers that have more than 19 digits.
+  size_t longest_digit_count = 19;
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > longest_digit_count))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > longest_digit_count)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*src)) {
+  //  return (*src == '.' || *src == 'e' || *src == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if(*src != '"') { return NUMBER_ERROR; }
+  // Negative numbers have can go down to - INT64_MAX - 1 whereas positive numbers are limited to INT64_MAX.
+  // Performance note: This check is only needed when digit_count == longest_digit_count but it is
+  // so cheap that we might as well always make it.
+  if(i > uint64_t(INT64_MAX) + uint64_t(negative)) { return INCORRECT_TYPE; }
+  return negative ? (~i+1) : i;
+}
+
+simdjson_unused simdjson_inline simdjson_result parse_double(const uint8_t * src) noexcept {
+  //
+  // Check for minus sign
+  //
+  bool negative = (*src == '-');
+  src += uint8_t(negative);
+
+  //
+  // Parse the integer part.
+  //
+  uint64_t i = 0;
+  const uint8_t *p = src;
+  p += parse_digit(*p, i);
+  bool leading_zero = (i == 0);
+  while (parse_digit(*p, i)) { p++; }
+  // no integer digits, or 0123 (zero must be solo)
+  if ( p == src ) { return INCORRECT_TYPE; }
+  if ( (leading_zero && p != src+1)) { return NUMBER_ERROR; }
+
+  //
+  // Parse the decimal part.
+  //
+  int64_t exponent = 0;
+  bool overflow;
+  if (simdjson_likely(*p == '.')) {
+    p++;
+    const uint8_t *start_decimal_digits = p;
+    if (!parse_digit(*p, i)) { return NUMBER_ERROR; } // no decimal digits
+    p++;
+    while (parse_digit(*p, i)) { p++; }
+    exponent = -(p - start_decimal_digits);
+
+    // Overflow check. More than 19 digits (minus the decimal) may be overflow.
+    overflow = p-src-1 > 19;
+    if (simdjson_unlikely(overflow && leading_zero)) {
+      // Skip leading 0.00000 and see if it still overflows
+      const uint8_t *start_digits = src + 2;
+      while (*start_digits == '0') { start_digits++; }
+      overflow = p-start_digits > 19;
+    }
+  } else {
+    overflow = p-src > 19;
+  }
+
+  //
+  // Parse the exponent
+  //
+  if (*p == 'e' || *p == 'E') {
+    p++;
+    bool exp_neg = *p == '-';
+    p += exp_neg || *p == '+';
+
+    uint64_t exp = 0;
+    const uint8_t *start_exp_digits = p;
+    while (parse_digit(*p, exp)) { p++; }
+    // no exp digits, or 20+ exp digits
+    if (p-start_exp_digits == 0 || p-start_exp_digits > 19) { return NUMBER_ERROR; }
+
+    exponent += exp_neg ? 0-exp : exp;
+  }
+
+  if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return NUMBER_ERROR; }
+
+  overflow = overflow || exponent < simdjson::internal::smallest_power || exponent > simdjson::internal::largest_power;
+
+  //
+  // Assemble (or slow-parse) the float
+  //
+  double d;
+  if (simdjson_likely(!overflow)) {
+    if (compute_float_64(exponent, i, negative, d)) { return d; }
+  }
+  if (!parse_float_fallback(src - uint8_t(negative), &d)) {
+    return NUMBER_ERROR;
+  }
+  return d;
+}
+
+simdjson_unused simdjson_inline bool is_negative(const uint8_t * src) noexcept {
+  return (*src == '-');
+}
+
+simdjson_unused simdjson_inline simdjson_result is_integer(const uint8_t * src) noexcept {
+  bool negative = (*src == '-');
+  src += uint8_t(negative);
+  const uint8_t *p = src;
+  while(static_cast(*p - '0') <= 9) { p++; }
+  if ( p == src ) { return NUMBER_ERROR; }
+  if (jsoncharutils::is_structural_or_whitespace(*p)) { return true; }
+  return false;
+}
+
+simdjson_unused simdjson_inline simdjson_result get_number_type(const uint8_t * src) noexcept {
+  bool negative = (*src == '-');
+  src += uint8_t(negative);
+  const uint8_t *p = src;
+  while(static_cast(*p - '0') <= 9) { p++; }
+  size_t digit_count = size_t(p - src);
+  if ( p == src ) { return NUMBER_ERROR; }
+  if (jsoncharutils::is_structural_or_whitespace(*p)) {
+    static const uint8_t * smaller_big_integer = reinterpret_cast("9223372036854775808");
+    // We have an integer.
+    if(simdjson_unlikely(digit_count > 20)) {
+      return number_type::big_integer;
+    }
+    // If the number is negative and valid, it must be a signed integer.
+    if(negative) {
+      if (simdjson_unlikely(digit_count > 19)) return number_type::big_integer;
+      if (simdjson_unlikely(digit_count == 19 && memcmp(src, smaller_big_integer, 19) > 0)) {
+        return number_type::big_integer;
+      }
+#if SIMDJSON_MINUS_ZERO_AS_FLOAT
+      if(digit_count == 1 && src[0] == '0') {
+        // We have to write -0.0 instead of 0
+        return number_type::floating_point_number;
+      }
+#endif
+      return number_type::signed_integer;
+    }
+    // Let us check if we have a big integer (>=2**64).
+    static const uint8_t * two_to_sixtyfour = reinterpret_cast("18446744073709551616");
+    if((digit_count > 20) || (digit_count == 20 && memcmp(src, two_to_sixtyfour, 20) >= 0)) {
+      return number_type::big_integer;
+    }
+    // The number is positive and smaller than 18446744073709551616 (or 2**64).
+    // We want values larger or equal to 9223372036854775808 to be unsigned
+    // integers, and the other values to be signed integers.
+    if((digit_count == 20) || (digit_count >= 19 && memcmp(src, smaller_big_integer, 19) >= 0)) {
+      return number_type::unsigned_integer;
+    }
+    return number_type::signed_integer;
+  }
+  // Hopefully, we have 'e' or 'E' or '.'.
+  return number_type::floating_point_number;
+}
+
+// Never read at src_end or beyond
+simdjson_unused simdjson_inline simdjson_result parse_double(const uint8_t * src, const uint8_t * const src_end) noexcept {
+  if(src == src_end) { return NUMBER_ERROR; }
+  //
+  // Check for minus sign
+  //
+  bool negative = (*src == '-');
+  src += uint8_t(negative);
+
+  //
+  // Parse the integer part.
+  //
+  uint64_t i = 0;
+  const uint8_t *p = src;
+  if(p == src_end) { return NUMBER_ERROR; }
+  p += parse_digit(*p, i);
+  bool leading_zero = (i == 0);
+  while ((p != src_end) && parse_digit(*p, i)) { p++; }
+  // no integer digits, or 0123 (zero must be solo)
+  if ( p == src ) { return INCORRECT_TYPE; }
+  if ( (leading_zero && p != src+1)) { return NUMBER_ERROR; }
+
+  //
+  // Parse the decimal part.
+  //
+  int64_t exponent = 0;
+  bool overflow;
+  if (simdjson_likely((p != src_end) && (*p == '.'))) {
+    p++;
+    const uint8_t *start_decimal_digits = p;
+    if ((p == src_end) || !parse_digit(*p, i)) { return NUMBER_ERROR; } // no decimal digits
+    p++;
+    while ((p != src_end) && parse_digit(*p, i)) { p++; }
+    exponent = -(p - start_decimal_digits);
+
+    // Overflow check. More than 19 digits (minus the decimal) may be overflow.
+    overflow = p-src-1 > 19;
+    if (simdjson_unlikely(overflow && leading_zero)) {
+      // Skip leading 0.00000 and see if it still overflows
+      const uint8_t *start_digits = src + 2;
+      while (*start_digits == '0') { start_digits++; }
+      overflow = start_digits-src > 19;
+    }
+  } else {
+    overflow = p-src > 19;
+  }
+
+  //
+  // Parse the exponent
+  //
+  if ((p != src_end) && (*p == 'e' || *p == 'E')) {
+    p++;
+    if(p == src_end) { return NUMBER_ERROR; }
+    bool exp_neg = *p == '-';
+    p += exp_neg || *p == '+';
+
+    uint64_t exp = 0;
+    const uint8_t *start_exp_digits = p;
+    while ((p != src_end) && parse_digit(*p, exp)) { p++; }
+    // no exp digits, or 20+ exp digits
+    if (p-start_exp_digits == 0 || p-start_exp_digits > 19) { return NUMBER_ERROR; }
+
+    exponent += exp_neg ? 0-exp : exp;
+  }
+
+  if ((p != src_end) && jsoncharutils::is_not_structural_or_whitespace(*p)) { return NUMBER_ERROR; }
+
+  overflow = overflow || exponent < simdjson::internal::smallest_power || exponent > simdjson::internal::largest_power;
+
+  //
+  // Assemble (or slow-parse) the float
+  //
+  double d;
+  if (simdjson_likely(!overflow)) {
+    if (compute_float_64(exponent, i, negative, d)) { return d; }
+  }
+  if (!parse_float_fallback(src - uint8_t(negative), src_end, &d)) {
+    return NUMBER_ERROR;
+  }
+  return d;
+}
+
+simdjson_unused simdjson_inline simdjson_result parse_double_in_string(const uint8_t * src) noexcept {
+  //
+  // Check for minus sign
+  //
+  bool negative = (*(src + 1) == '-');
+  src += uint8_t(negative) + 1;
+
+  //
+  // Parse the integer part.
+  //
+  uint64_t i = 0;
+  const uint8_t *p = src;
+  p += parse_digit(*p, i);
+  bool leading_zero = (i == 0);
+  while (parse_digit(*p, i)) { p++; }
+  // no integer digits, or 0123 (zero must be solo)
+  if ( p == src ) { return INCORRECT_TYPE; }
+  if ( (leading_zero && p != src+1)) { return NUMBER_ERROR; }
+
+  //
+  // Parse the decimal part.
+  //
+  int64_t exponent = 0;
+  bool overflow;
+  if (simdjson_likely(*p == '.')) {
+    p++;
+    const uint8_t *start_decimal_digits = p;
+    if (!parse_digit(*p, i)) { return NUMBER_ERROR; } // no decimal digits
+    p++;
+    while (parse_digit(*p, i)) { p++; }
+    exponent = -(p - start_decimal_digits);
+
+    // Overflow check. More than 19 digits (minus the decimal) may be overflow.
+    overflow = p-src-1 > 19;
+    if (simdjson_unlikely(overflow && leading_zero)) {
+      // Skip leading 0.00000 and see if it still overflows
+      const uint8_t *start_digits = src + 2;
+      while (*start_digits == '0') { start_digits++; }
+      overflow = p-start_digits > 19;
+    }
+  } else {
+    overflow = p-src > 19;
+  }
+
+  //
+  // Parse the exponent
+  //
+  if (*p == 'e' || *p == 'E') {
+    p++;
+    bool exp_neg = *p == '-';
+    p += exp_neg || *p == '+';
+
+    uint64_t exp = 0;
+    const uint8_t *start_exp_digits = p;
+    while (parse_digit(*p, exp)) { p++; }
+    // no exp digits, or 20+ exp digits
+    if (p-start_exp_digits == 0 || p-start_exp_digits > 19) { return NUMBER_ERROR; }
+
+    exponent += exp_neg ? 0-exp : exp;
+  }
+
+  if (*p != '"') { return NUMBER_ERROR; }
+
+  overflow = overflow || exponent < simdjson::internal::smallest_power || exponent > simdjson::internal::largest_power;
+
+  //
+  // Assemble (or slow-parse) the float
+  //
+  double d;
+  if (simdjson_likely(!overflow)) {
+    if (compute_float_64(exponent, i, negative, d)) { return d; }
+  }
+  if (!parse_float_fallback(src - uint8_t(negative), &d)) {
+    return NUMBER_ERROR;
+  }
+  return d;
+}
+
+} // unnamed namespace
+#endif // SIMDJSON_SKIPNUMBERPARSING
+
+} // namespace numberparsing
+
+inline std::ostream& operator<<(std::ostream& out, number_type type) noexcept {
+    switch (type) {
+        case number_type::signed_integer: out << "integer in [-9223372036854775808,9223372036854775808)"; break;
+        case number_type::unsigned_integer: out << "unsigned integer in [9223372036854775808,18446744073709551616)"; break;
+        case number_type::floating_point_number: out << "floating-point number (binary64)"; break;
+        case number_type::big_integer: out << "big integer"; break;
+        default: SIMDJSON_UNREACHABLE();
+    }
+    return out;
+}
+
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_NUMBERPARSING_H
+/* end file simdjson/generic/numberparsing.h for rvv_vls */
+
+/* including simdjson/generic/implementation_simdjson_result_base-inl.h for rvv_vls: #include "simdjson/generic/implementation_simdjson_result_base-inl.h" */
+/* begin file simdjson/generic/implementation_simdjson_result_base-inl.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+
+//
+// internal::implementation_simdjson_result_base inline implementation
+//
+
+template
+simdjson_inline void implementation_simdjson_result_base::tie(T &value, error_code &error) && noexcept {
+  error = this->second;
+  if (!error) {
+    value = std::forward>(*this).first;
+  }
+}
+
+template
+simdjson_warn_unused simdjson_inline error_code implementation_simdjson_result_base::get(T &value) && noexcept {
+  error_code error;
+  std::forward>(*this).tie(value, error);
+  return error;
+}
+
+template
+simdjson_warn_unused simdjson_inline error_code implementation_simdjson_result_base::error() const noexcept {
+  return this->second;
+}
+
+
+template
+simdjson_warn_unused simdjson_inline bool implementation_simdjson_result_base::has_value() const noexcept {
+  return this->error() == SUCCESS;
+}
+
+#if SIMDJSON_EXCEPTIONS
+
+template
+simdjson_inline T& implementation_simdjson_result_base::operator*() &  noexcept(false) {
+  return this->value();
+}
+
+template
+simdjson_inline T&& implementation_simdjson_result_base::operator*() &&  noexcept(false) {
+  return std::forward>(*this).value();
+}
+
+template
+simdjson_inline T* implementation_simdjson_result_base::operator->() noexcept(false) {
+  if (this->error()) { throw simdjson_error(this->error()); }
+  return &this->first;
+}
+
+
+template
+simdjson_inline const T* implementation_simdjson_result_base::operator->() const noexcept(false) {
+  if (this->error()) { throw simdjson_error(this->error()); }
+  return &this->first;
+}
+
+template
+simdjson_inline T& implementation_simdjson_result_base::value() & noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return this->first;
+}
+
+template
+simdjson_inline T&& implementation_simdjson_result_base::value() && noexcept(false) {
+  return std::forward>(*this).take_value();
+}
+
+template
+simdjson_inline T&& implementation_simdjson_result_base::take_value() && noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return std::forward(this->first);
+}
+
+template
+simdjson_inline implementation_simdjson_result_base::operator T&&() && noexcept(false) {
+  return std::forward>(*this).take_value();
+}
+
+#endif // SIMDJSON_EXCEPTIONS
+
+template
+simdjson_inline const T& implementation_simdjson_result_base::value_unsafe() const& noexcept {
+  return this->first;
+}
+
+template
+simdjson_inline T& implementation_simdjson_result_base::value_unsafe() & noexcept {
+  return this->first;
+}
+
+template
+simdjson_inline T&& implementation_simdjson_result_base::value_unsafe() && noexcept {
+  return std::forward(this->first);
+}
+
+template
+simdjson_inline implementation_simdjson_result_base::implementation_simdjson_result_base(T &&value, error_code error) noexcept
+    : first{std::forward(value)}, second{error} {}
+template
+simdjson_inline implementation_simdjson_result_base::implementation_simdjson_result_base(error_code error) noexcept
+    : implementation_simdjson_result_base(T{}, error) {}
+template
+simdjson_inline implementation_simdjson_result_base::implementation_simdjson_result_base(T &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value), SUCCESS) {}
+
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_INL_H
+/* end file simdjson/generic/implementation_simdjson_result_base-inl.h for rvv_vls */
+/* end file simdjson/generic/amalgamated.h for rvv_vls */
+/* including simdjson/rvv-vls/end.h: #include "simdjson/rvv-vls/end.h" */
+/* begin file simdjson/rvv-vls/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/* undefining SIMDJSON_IMPLEMENTATION from "rvv_vls" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/rvv-vls/end.h */
+
+#endif // SIMDJSON_RVV_VLS_H
+/* end file simdjson/rvv-vls.h */
+/* including simdjson/rvv-vls/implementation.h: #include  */
+/* begin file simdjson/rvv-vls/implementation.h */
+#ifndef SIMDJSON_RVV_VLS_IMPLEMENTATION_H
+#define SIMDJSON_RVV_VLS_IMPLEMENTATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/implementation.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+
+/**
+ * @private
+ */
+class implementation final : public simdjson::implementation {
+public:
+  simdjson_inline implementation() : simdjson::implementation(
+      "rvv_vls",
+      "RISC-V V extension",
+      0
+  ) {}
+  simdjson_warn_unused error_code create_dom_parser_implementation(
+    size_t capacity,
+    size_t max_length,
+    std::unique_ptr& dst
+  ) const noexcept final;
+  simdjson_warn_unused error_code minify(const uint8_t *buf, size_t len, uint8_t *dst, size_t &dst_len) const noexcept final;
+  simdjson_warn_unused bool validate_utf8(const char *buf, size_t len) const noexcept final;
+};
+
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_IMPLEMENTATION_H
+/* end file simdjson/rvv-vls/implementation.h */
+
+/* including simdjson/rvv-vls/begin.h: #include  */
+/* begin file simdjson/rvv-vls/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "rvv_vls" */
+#define SIMDJSON_IMPLEMENTATION rvv_vls
+/* including simdjson/rvv-vls/base.h: #include "simdjson/rvv-vls/base.h" */
+/* begin file simdjson/rvv-vls/base.h */
+#ifndef SIMDJSON_RVV_VLS_BASE_H
+#define SIMDJSON_RVV_VLS_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+/**
+ * RVV-VLS implementation.
+ */
+namespace rvv_vls {
+
+class implementation;
+
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_BASE_H
+/* end file simdjson/rvv-vls/base.h */
+/* including simdjson/rvv-vls/intrinsics.h: #include "simdjson/rvv-vls/intrinsics.h" */
+/* begin file simdjson/rvv-vls/intrinsics.h */
+#ifndef SIMDJSON_RVV_VLS_INTRINSICS_H
+#define SIMDJSON_RVV_VLS_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+#define simdutf_vrgather_u8m1x2(tbl, idx)                                      \
+  __riscv_vcreate_v_u8m1_u8m2(                                                 \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m2_u8m1(idx, 0),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m2_u8m1(idx, 1),          \
+                               __riscv_vsetvlmax_e8m1()))
+
+#define simdutf_vrgather_u8m1x4(tbl, idx)                                      \
+  __riscv_vcreate_v_u8m1_u8m4(                                                 \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 0),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 1),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 2),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 3),          \
+                               __riscv_vsetvlmax_e8m1()))
+
+#if __riscv_zbc
+#include 
+#endif
+
+#endif // SIMDJSON_RVV_VLS_INTRINSICS_H
+/* end file simdjson/rvv-vls/intrinsics.h */
+/* including simdjson/rvv-vls/bitmanipulation.h: #include "simdjson/rvv-vls/bitmanipulation.h" */
+/* begin file simdjson/rvv-vls/bitmanipulation.h */
+#ifndef SIMDJSON_RVV_VLS_BITMANIPULATION_H
+#define SIMDJSON_RVV_VLS_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+  return __builtin_ctzll(input_num);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return input_num & (input_num-1);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+  return __builtin_clzll(input_num);
+}
+
+simdjson_inline long long int count_ones(uint64_t input_num) {
+  return __builtin_popcountll(input_num);
+}
+
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
+                                uint64_t *result) {
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+}
+
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_BITMANIPULATION_H
+/* end file simdjson/rvv-vls/bitmanipulation.h */
+/* including simdjson/rvv-vls/bitmask.h: #include "simdjson/rvv-vls/bitmask.h" */
+/* begin file simdjson/rvv-vls/bitmask.h */
+#ifndef SIMDJSON_RVV_VLS_BITMASK_H
+#define SIMDJSON_RVV_VLS_BITMASK_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+
+//
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
+//
+// For example, prefix_xor(00100100) == 00011100
+//
+simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
+#if __riscv_zbc
+  return __riscv_clmul_64(bitmask, ~(uint64_t)0);
+#elif __riscv_zvbc
+  return __riscv_vmv_x(__riscv_vclmul(__riscv_vmv_s_x_u64m1(bitmask, 1), ~(uint64_t)0, 1));
+#else
+  bitmask ^= bitmask << 1;
+  bitmask ^= bitmask << 2;
+  bitmask ^= bitmask << 4;
+  bitmask ^= bitmask << 8;
+  bitmask ^= bitmask << 16;
+  bitmask ^= bitmask << 32;
+#endif
+  return bitmask;
+}
+
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_BITMASK_H
+
+/* end file simdjson/rvv-vls/bitmask.h */
+/* including simdjson/rvv-vls/simd.h: #include "simdjson/rvv-vls/simd.h" */
+/* begin file simdjson/rvv-vls/simd.h */
+#ifndef SIMDJSON_RVV_VLS_SIMD_H
+#define SIMDJSON_RVV_VLS_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+namespace simd {
+
+#if __riscv_v_fixed_vlen >= 512
+  static constexpr size_t VL8 = 512/8;
+  using vint8_t   = vint8m1_t   __attribute__((riscv_rvv_vector_bits(512)));
+  using vuint8_t  = vuint8m1_t  __attribute__((riscv_rvv_vector_bits(512)));
+  using vbool_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+  using vbitmask_t = uint64_t;
+#else
+  static constexpr size_t VL8 = __riscv_v_fixed_vlen/8;
+  using vint8_t   = vint8m1_t   __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen)));
+  using vuint8_t  = vuint8m1_t  __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen)));
+  using vbool_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen/8)));
+  #if __riscv_v_fixed_vlen == 128
+    using vbitmask_t = uint16_t;
+  #elif __riscv_v_fixed_vlen == 256
+    using vbitmask_t = uint32_t;
+  #endif
+#endif
+
+#if __riscv_v_fixed_vlen == 128
+  using vuint8x64_t = vuint8m4_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool2_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#elif __riscv_v_fixed_vlen == 256
+  using vuint8x64_t = vuint8m2_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool4_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#else
+  using vuint8x64_t = vuint8m1_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#endif
+
+  template
+  struct simd8;
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8 {
+    vbool_t value;
+    using bitmask_t = vbitmask_t;
+    static constexpr int SIZE = sizeof(value);
+
+    simdjson_inline simd8(const vbool_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(__riscv_vmclr_m_b8(VL8)) {}
+    simdjson_inline simd8(bool _value) : simd8(splat(_value)) {}
+
+    simdjson_inline operator const vbool_t&() const { return value; }
+    simdjson_inline operator vbool_t&() { return value; }
+
+    static simdjson_inline simd8 splat(bool _value) {
+      return __riscv_vreinterpret_b8(__riscv_vmv_v_x_u64m1(((uint64_t)!_value)-1, 1));
+    }
+
+    simdjson_inline vbitmask_t to_bitmask() const {
+#if __riscv_v_fixed_vlen == 128
+      return __riscv_vmv_x(__riscv_vreinterpret_u16m1(value));
+#elif __riscv_v_fixed_vlen == 256
+      return __riscv_vmv_x(__riscv_vreinterpret_u32m1(value));
+#else
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(value));
+#endif
+    }
+
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const {  return __riscv_vmor(*this, other, VL8); }
+    simdjson_inline simd8 operator&(const simd8 other) const {  return __riscv_vmand(*this, other, VL8); }
+    simdjson_inline simd8 operator^(const simd8 other) const {  return __riscv_vmxor(*this, other, VL8); }
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return __riscv_vmandn(other, *this, VL8); }
+    simdjson_inline simd8 operator~() const { return __riscv_vmnot(*this, VL8); }
+    simdjson_inline simd8& operator|=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline simd8& operator&=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline simd8& operator^=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8 {
+
+    vuint8_t value;
+    static constexpr int SIZE = sizeof(value);
+
+    simdjson_inline simd8(const vuint8_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(zero()) {}
+    simdjson_inline simd8(const uint8_t values[VL8]) : simd8(load(values)) {}
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    simdjson_inline simd8(simd8 mask) : value(__riscv_vmerge_vxm_u8m1(zero(), -1, (vbool_t)mask, VL8)) {}
+
+    simdjson_inline operator const vuint8_t&() const { return this->value; }
+    simdjson_inline operator vuint8_t&() { return this->value; }
+
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(vuint8_t{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
+
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    static simdjson_inline vuint8_t splat(uint8_t _value) { return __riscv_vmv_v_x_u8m1(_value, VL8); }
+    static simdjson_inline vuint8_t zero() { return splat(0); }
+    static simdjson_inline vuint8_t load(const uint8_t values[VL8]) { return __riscv_vle8_v_u8m1(values, VL8); }
+
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const { return  __riscv_vor_vv_u8m1(  value, other, VL8); }
+    simdjson_inline simd8 operator&(const simd8 other) const { return  __riscv_vand_vv_u8m1( value, other, VL8); }
+    simdjson_inline simd8 operator^(const simd8 other) const { return  __riscv_vxor_vv_u8m1( value, other, VL8); }
+    simdjson_inline simd8 operator~() const { return __riscv_vnot_v_u8m1(value, VL8); }
+#if __riscv_zvbb
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return __riscv_vandn_vv_u8m1(other, value, VL8); }
+#else
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return other & ~*this; }
+#endif
+    simdjson_inline simd8& operator|=(const simd8 other) { value = *this | other; return *this; }
+    simdjson_inline simd8& operator&=(const simd8 other) { value = *this & other; return *this; }
+    simdjson_inline simd8& operator^=(const simd8 other) { value = *this ^ other; return *this; }
+
+    simdjson_inline simd8 operator==(const simd8 other) const { return __riscv_vmseq(value, other, VL8); }
+    simdjson_inline simd8 operator==(uint8_t other) const { return __riscv_vmseq(value, other, VL8); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return __riscv_vslideup(__riscv_vslidedown(prev_chunk, VL8-N, VL8), value, N, VL8);
+    }
+
+    // Store to array
+    simdjson_inline void store(uint8_t dst[VL8]) const { return __riscv_vse8(dst, value, VL8); }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return __riscv_vsaddu(value, other, VL8); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __riscv_vssubu(value, other, VL8); }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return __riscv_vadd(value, other, VL8); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __riscv_vsub(value, other, VL8); }
+    simdjson_inline simd8& operator+=(const simd8 other) { value = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { value = *this - other; return *this; }
+
+    // Order-specific operations
+    simdjson_inline simd8 operator<=(const simd8 other) const { return __riscv_vmsleu(value, other, VL8); }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return __riscv_vmsgeu(value, other, VL8); }
+    simdjson_inline simd8 operator<(const simd8 other) const  { return __riscv_vmsltu(value, other, VL8); }
+    simdjson_inline simd8 operator>(const simd8 other) const  { return __riscv_vmsgtu(value, other, VL8); }
+
+    // Same as >, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero.
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return simd8(*this > other); }
+    // Same as <, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero.
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return simd8(*this < other); }
+
+    // Bit-specific operations
+    simdjson_inline bool any_bits_set_anywhere() const {
+      return __riscv_vfirst(__riscv_vmsne(value, 0, VL8), VL8) >= 0;
+    }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return (*this & bits).any_bits_set_anywhere(); }
+    template
+    simdjson_inline simd8 shr() const { return __riscv_vsrl(value, N, VL8); }
+    template
+    simdjson_inline simd8 shl() const { return __riscv_vsll(value, N, VL8); }
+
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return __riscv_vrgather(lookup_table, value, VL8);
+    }
+
+    // compress inactive elements, to match AVX-512 behavior
+    template
+    simdjson_inline void compress(vbitmask_t mask, L * output) const {
+      mask = (vbitmask_t)~mask;
+#if __riscv_v_fixed_vlen == 128
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u16m1(mask, 1));
+#elif __riscv_v_fixed_vlen == 256
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u32m1(mask, 1));
+#else
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u64m1(mask, 1));
+#endif
+      __riscv_vse8_v_u8m1(output, __riscv_vcompress(value, m, VL8), count_ones(mask));
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 {
+    vint8_t value;
+    static constexpr int SIZE = sizeof(value);
+
+    simdjson_inline simd8(const vint8_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(zero()) {}
+    simdjson_inline simd8(const int8_t values[VL8]) : simd8(load(values)) {}
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+
+    simdjson_inline operator const vint8_t&() const { return this->value; }
+    simdjson_inline operator vint8_t&() { return this->value; }
+
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(vint8_t{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
+
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    static simdjson_inline vint8_t splat(int8_t _value) { return __riscv_vmv_v_x_i8m1(_value, VL8); }
+    static simdjson_inline vint8_t zero() { return splat(0); }
+    static simdjson_inline vint8_t load(const int8_t values[VL8]) { return __riscv_vle8_v_i8m1(values, VL8); }
+
+
+    simdjson_inline void store(int8_t dst[VL8]) const { return __riscv_vse8(dst, value, VL8); }
+
+    // Explicit conversion to/from unsigned
+    simdjson_inline explicit simd8(const vuint8_t other): simd8(__riscv_vreinterpret_i8m1(other)) {}
+    simdjson_inline explicit operator simd8() const { return __riscv_vreinterpret_u8m1(value); }
+
+    // Math
+    simdjson_inline simd8 operator+(const simd8 other) const { return __riscv_vadd(value, other, VL8); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __riscv_vsub(value, other, VL8); }
+    simdjson_inline simd8& operator+=(const simd8 other) { value = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { value = *this - other; return *this; }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val( const simd8 other) const { return __riscv_vmax( value, other, VL8); }
+    simdjson_inline simd8 min_val( const simd8 other) const { return __riscv_vmin( value, other, VL8); }
+    simdjson_inline simd8 operator>( const simd8 other) const { return __riscv_vmsgt(value, other, VL8); }
+    simdjson_inline simd8 operator<( const simd8 other) const { return __riscv_vmslt(value, other, VL8); }
+    simdjson_inline simd8 operator==(const simd8 other) const { return __riscv_vmseq(value, other, VL8); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return __riscv_vslideup(__riscv_vslidedown(prev_chunk, VL8-N, VL8), value, N, VL8);
+    }
+
+    // Perform a lookup assuming no value is larger than 16
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return __riscv_vrgather(lookup_table, value, VL8);
+    }
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  template
+  struct simd8x64;
+  template<>
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    vuint8x64_t value;
+
+#if __riscv_v_fixed_vlen >= 512
+    template simd8 get() const { return value; }
+#else
+    template simd8 get() const { return __riscv_vget_u8m1(value, idx); }
+#endif
+
+    simdjson_inline operator const vuint8x64_t&() const { return this->value; }
+    simdjson_inline operator vuint8x64_t&() { return this->value; }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+#if __riscv_v_fixed_vlen == 128
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m4(ptr, n)) {}
+#elif __riscv_v_fixed_vlen == 256
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m2(ptr, n)) {}
+#else
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m1(ptr, n)) {}
+#endif
+
+    simdjson_inline void store(uint8_t ptr[64]) const {
+      __riscv_vse8(ptr, value, 64);
+    }
+
+    simdjson_inline bool is_ascii() const {
+#if __riscv_v_fixed_vlen == 128
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m4(value), 0, 64), 64) < 0;
+#elif __riscv_v_fixed_vlen == 256
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m2(value), 0, 64), 64) < 0;
+#else
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m1(value), 0, 64), 64) < 0;
+#endif
+    }
+
+    // compress inactive elements, to match AVX-512 behavior
+    simdjson_inline uint64_t compress(uint64_t mask, uint8_t * output) const {
+      mask = ~mask;
+#if __riscv_v_fixed_vlen == 128
+      vboolx64_t m = __riscv_vreinterpret_b2(__riscv_vmv_s_x_u64m1(mask, 1));
+#elif __riscv_v_fixed_vlen == 256
+      vboolx64_t m = __riscv_vreinterpret_b4(__riscv_vmv_s_x_u64m1(mask, 1));
+#else
+      vboolx64_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u64m1(mask, 1));
+#endif
+      size_t cnt = count_ones(mask);
+      __riscv_vse8(output, __riscv_vcompress(value, m, 64), cnt);
+      return cnt;
+    }
+
+    simdjson_inline uint64_t eq(const uint8_t m) const {
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vmseq(value, m, 64)));
+    }
+
+    simdjson_inline uint64_t lteq(const uint8_t m) const {
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vmsleu(value, m, 64)));
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_SIMD_H
+/* end file simdjson/rvv-vls/simd.h */
+/* including simdjson/rvv-vls/stringparsing_defs.h: #include "simdjson/rvv-vls/stringparsing_defs.h" */
+/* begin file simdjson/rvv-vls/stringparsing_defs.h */
+#ifndef SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
+#define SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint64_t BYTES_PROCESSED = sizeof(simd8);
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
+  simdjson_inline bool has_backslash() { return ((quote_bits - 1) & bs_bits) != 0; }
+  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
+  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
+
+  uint64_t bs_bits;
+  uint64_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  return { (v == '\\').to_bitmask(), (v == '"').to_bitmask() };
+}
+
+struct escaping {
+  static constexpr uint64_t BYTES_PROCESSED = sizeof(simd8);
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits) / 4; }
+
+  uint64_t escape_bits;
+}; // struct escaping
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  return { ((v == '"') | (v == '\\') | (v == 32)).to_bitmask() };
+}
+
+
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
+/* end file simdjson/rvv-vls/stringparsing_defs.h */
+/* including simdjson/rvv-vls/numberparsing_defs.h: #include "simdjson/rvv-vls/numberparsing_defs.h" */
+/* begin file simdjson/rvv-vls/numberparsing_defs.h */
+#ifndef SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
+#define SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+#ifdef JSON_TEST_NUMBERS // for unit testing
+void found_invalid_number(const uint8_t *buf);
+void found_integer(int64_t result, const uint8_t *buf);
+void found_unsigned_integer(uint64_t result, const uint8_t *buf);
+void found_float(double result, const uint8_t *buf);
+#endif
+
+namespace simdjson {
+namespace rvv_vls {
+namespace numberparsing {
+
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const char *chars) {
+  uint64_t val;
+#if __riscv_misaligned_fast
+  memcpy(&val, chars, sizeof(uint64_t));
+#else
+  val = __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vlmul_ext_u8m1(__riscv_vle8_v_u8mf2((uint8_t*)chars, 8))));
+#endif
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+}
+
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  return parse_eight_digits_unrolled(reinterpret_cast(chars));
+}
+
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace rvv_vls
+} // namespace simdjson
+
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+
+#endif // SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
+/* end file simdjson/rvv-vls/numberparsing_defs.h */
+
+#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
+/* end file simdjson/rvv-vls/begin.h */
+/* including simdjson/rvv-vls/simd.h: #include  */
+/* begin file simdjson/rvv-vls/simd.h */
+#ifndef SIMDJSON_RVV_VLS_SIMD_H
+#define SIMDJSON_RVV_VLS_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+namespace simd {
+
+#if __riscv_v_fixed_vlen >= 512
+  static constexpr size_t VL8 = 512/8;
+  using vint8_t   = vint8m1_t   __attribute__((riscv_rvv_vector_bits(512)));
+  using vuint8_t  = vuint8m1_t  __attribute__((riscv_rvv_vector_bits(512)));
+  using vbool_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+  using vbitmask_t = uint64_t;
+#else
+  static constexpr size_t VL8 = __riscv_v_fixed_vlen/8;
+  using vint8_t   = vint8m1_t   __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen)));
+  using vuint8_t  = vuint8m1_t  __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen)));
+  using vbool_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen/8)));
+  #if __riscv_v_fixed_vlen == 128
+    using vbitmask_t = uint16_t;
+  #elif __riscv_v_fixed_vlen == 256
+    using vbitmask_t = uint32_t;
+  #endif
+#endif
+
+#if __riscv_v_fixed_vlen == 128
+  using vuint8x64_t = vuint8m4_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool2_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#elif __riscv_v_fixed_vlen == 256
+  using vuint8x64_t = vuint8m2_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool4_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#else
+  using vuint8x64_t = vuint8m1_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#endif
+
+  template
+  struct simd8;
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8 {
+    vbool_t value;
+    using bitmask_t = vbitmask_t;
+    static constexpr int SIZE = sizeof(value);
+
+    simdjson_inline simd8(const vbool_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(__riscv_vmclr_m_b8(VL8)) {}
+    simdjson_inline simd8(bool _value) : simd8(splat(_value)) {}
+
+    simdjson_inline operator const vbool_t&() const { return value; }
+    simdjson_inline operator vbool_t&() { return value; }
+
+    static simdjson_inline simd8 splat(bool _value) {
+      return __riscv_vreinterpret_b8(__riscv_vmv_v_x_u64m1(((uint64_t)!_value)-1, 1));
+    }
+
+    simdjson_inline vbitmask_t to_bitmask() const {
+#if __riscv_v_fixed_vlen == 128
+      return __riscv_vmv_x(__riscv_vreinterpret_u16m1(value));
+#elif __riscv_v_fixed_vlen == 256
+      return __riscv_vmv_x(__riscv_vreinterpret_u32m1(value));
+#else
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(value));
+#endif
+    }
+
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const {  return __riscv_vmor(*this, other, VL8); }
+    simdjson_inline simd8 operator&(const simd8 other) const {  return __riscv_vmand(*this, other, VL8); }
+    simdjson_inline simd8 operator^(const simd8 other) const {  return __riscv_vmxor(*this, other, VL8); }
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return __riscv_vmandn(other, *this, VL8); }
+    simdjson_inline simd8 operator~() const { return __riscv_vmnot(*this, VL8); }
+    simdjson_inline simd8& operator|=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline simd8& operator&=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline simd8& operator^=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8 {
+
+    vuint8_t value;
+    static constexpr int SIZE = sizeof(value);
+
+    simdjson_inline simd8(const vuint8_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(zero()) {}
+    simdjson_inline simd8(const uint8_t values[VL8]) : simd8(load(values)) {}
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    simdjson_inline simd8(simd8 mask) : value(__riscv_vmerge_vxm_u8m1(zero(), -1, (vbool_t)mask, VL8)) {}
+
+    simdjson_inline operator const vuint8_t&() const { return this->value; }
+    simdjson_inline operator vuint8_t&() { return this->value; }
+
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(vuint8_t{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
+
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    static simdjson_inline vuint8_t splat(uint8_t _value) { return __riscv_vmv_v_x_u8m1(_value, VL8); }
+    static simdjson_inline vuint8_t zero() { return splat(0); }
+    static simdjson_inline vuint8_t load(const uint8_t values[VL8]) { return __riscv_vle8_v_u8m1(values, VL8); }
+
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const { return  __riscv_vor_vv_u8m1(  value, other, VL8); }
+    simdjson_inline simd8 operator&(const simd8 other) const { return  __riscv_vand_vv_u8m1( value, other, VL8); }
+    simdjson_inline simd8 operator^(const simd8 other) const { return  __riscv_vxor_vv_u8m1( value, other, VL8); }
+    simdjson_inline simd8 operator~() const { return __riscv_vnot_v_u8m1(value, VL8); }
+#if __riscv_zvbb
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return __riscv_vandn_vv_u8m1(other, value, VL8); }
+#else
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return other & ~*this; }
+#endif
+    simdjson_inline simd8& operator|=(const simd8 other) { value = *this | other; return *this; }
+    simdjson_inline simd8& operator&=(const simd8 other) { value = *this & other; return *this; }
+    simdjson_inline simd8& operator^=(const simd8 other) { value = *this ^ other; return *this; }
+
+    simdjson_inline simd8 operator==(const simd8 other) const { return __riscv_vmseq(value, other, VL8); }
+    simdjson_inline simd8 operator==(uint8_t other) const { return __riscv_vmseq(value, other, VL8); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return __riscv_vslideup(__riscv_vslidedown(prev_chunk, VL8-N, VL8), value, N, VL8);
+    }
+
+    // Store to array
+    simdjson_inline void store(uint8_t dst[VL8]) const { return __riscv_vse8(dst, value, VL8); }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return __riscv_vsaddu(value, other, VL8); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __riscv_vssubu(value, other, VL8); }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return __riscv_vadd(value, other, VL8); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __riscv_vsub(value, other, VL8); }
+    simdjson_inline simd8& operator+=(const simd8 other) { value = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { value = *this - other; return *this; }
+
+    // Order-specific operations
+    simdjson_inline simd8 operator<=(const simd8 other) const { return __riscv_vmsleu(value, other, VL8); }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return __riscv_vmsgeu(value, other, VL8); }
+    simdjson_inline simd8 operator<(const simd8 other) const  { return __riscv_vmsltu(value, other, VL8); }
+    simdjson_inline simd8 operator>(const simd8 other) const  { return __riscv_vmsgtu(value, other, VL8); }
+
+    // Same as >, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero.
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return simd8(*this > other); }
+    // Same as <, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero.
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return simd8(*this < other); }
+
+    // Bit-specific operations
+    simdjson_inline bool any_bits_set_anywhere() const {
+      return __riscv_vfirst(__riscv_vmsne(value, 0, VL8), VL8) >= 0;
+    }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return (*this & bits).any_bits_set_anywhere(); }
+    template
+    simdjson_inline simd8 shr() const { return __riscv_vsrl(value, N, VL8); }
+    template
+    simdjson_inline simd8 shl() const { return __riscv_vsll(value, N, VL8); }
+
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return __riscv_vrgather(lookup_table, value, VL8);
+    }
+
+    // compress inactive elements, to match AVX-512 behavior
+    template
+    simdjson_inline void compress(vbitmask_t mask, L * output) const {
+      mask = (vbitmask_t)~mask;
+#if __riscv_v_fixed_vlen == 128
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u16m1(mask, 1));
+#elif __riscv_v_fixed_vlen == 256
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u32m1(mask, 1));
+#else
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u64m1(mask, 1));
+#endif
+      __riscv_vse8_v_u8m1(output, __riscv_vcompress(value, m, VL8), count_ones(mask));
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 {
+    vint8_t value;
+    static constexpr int SIZE = sizeof(value);
+
+    simdjson_inline simd8(const vint8_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(zero()) {}
+    simdjson_inline simd8(const int8_t values[VL8]) : simd8(load(values)) {}
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+
+    simdjson_inline operator const vint8_t&() const { return this->value; }
+    simdjson_inline operator vint8_t&() { return this->value; }
+
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(vint8_t{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
+
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    static simdjson_inline vint8_t splat(int8_t _value) { return __riscv_vmv_v_x_i8m1(_value, VL8); }
+    static simdjson_inline vint8_t zero() { return splat(0); }
+    static simdjson_inline vint8_t load(const int8_t values[VL8]) { return __riscv_vle8_v_i8m1(values, VL8); }
+
+
+    simdjson_inline void store(int8_t dst[VL8]) const { return __riscv_vse8(dst, value, VL8); }
+
+    // Explicit conversion to/from unsigned
+    simdjson_inline explicit simd8(const vuint8_t other): simd8(__riscv_vreinterpret_i8m1(other)) {}
+    simdjson_inline explicit operator simd8() const { return __riscv_vreinterpret_u8m1(value); }
+
+    // Math
+    simdjson_inline simd8 operator+(const simd8 other) const { return __riscv_vadd(value, other, VL8); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __riscv_vsub(value, other, VL8); }
+    simdjson_inline simd8& operator+=(const simd8 other) { value = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { value = *this - other; return *this; }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val( const simd8 other) const { return __riscv_vmax( value, other, VL8); }
+    simdjson_inline simd8 min_val( const simd8 other) const { return __riscv_vmin( value, other, VL8); }
+    simdjson_inline simd8 operator>( const simd8 other) const { return __riscv_vmsgt(value, other, VL8); }
+    simdjson_inline simd8 operator<( const simd8 other) const { return __riscv_vmslt(value, other, VL8); }
+    simdjson_inline simd8 operator==(const simd8 other) const { return __riscv_vmseq(value, other, VL8); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return __riscv_vslideup(__riscv_vslidedown(prev_chunk, VL8-N, VL8), value, N, VL8);
+    }
+
+    // Perform a lookup assuming no value is larger than 16
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return __riscv_vrgather(lookup_table, value, VL8);
+    }
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  template
+  struct simd8x64;
+  template<>
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    vuint8x64_t value;
+
+#if __riscv_v_fixed_vlen >= 512
+    template simd8 get() const { return value; }
+#else
+    template simd8 get() const { return __riscv_vget_u8m1(value, idx); }
+#endif
+
+    simdjson_inline operator const vuint8x64_t&() const { return this->value; }
+    simdjson_inline operator vuint8x64_t&() { return this->value; }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+#if __riscv_v_fixed_vlen == 128
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m4(ptr, n)) {}
+#elif __riscv_v_fixed_vlen == 256
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m2(ptr, n)) {}
+#else
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m1(ptr, n)) {}
+#endif
+
+    simdjson_inline void store(uint8_t ptr[64]) const {
+      __riscv_vse8(ptr, value, 64);
+    }
+
+    simdjson_inline bool is_ascii() const {
+#if __riscv_v_fixed_vlen == 128
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m4(value), 0, 64), 64) < 0;
+#elif __riscv_v_fixed_vlen == 256
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m2(value), 0, 64), 64) < 0;
+#else
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m1(value), 0, 64), 64) < 0;
+#endif
+    }
+
+    // compress inactive elements, to match AVX-512 behavior
+    simdjson_inline uint64_t compress(uint64_t mask, uint8_t * output) const {
+      mask = ~mask;
+#if __riscv_v_fixed_vlen == 128
+      vboolx64_t m = __riscv_vreinterpret_b2(__riscv_vmv_s_x_u64m1(mask, 1));
+#elif __riscv_v_fixed_vlen == 256
+      vboolx64_t m = __riscv_vreinterpret_b4(__riscv_vmv_s_x_u64m1(mask, 1));
+#else
+      vboolx64_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u64m1(mask, 1));
+#endif
+      size_t cnt = count_ones(mask);
+      __riscv_vse8(output, __riscv_vcompress(value, m, 64), cnt);
+      return cnt;
+    }
+
+    simdjson_inline uint64_t eq(const uint8_t m) const {
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vmseq(value, m, 64)));
+    }
+
+    simdjson_inline uint64_t lteq(const uint8_t m) const {
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vmsleu(value, m, 64)));
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_SIMD_H
+/* end file simdjson/rvv-vls/simd.h */
+/* including generic/amalgamated.h for rvv_vls: #include  */
+/* begin file generic/amalgamated.h for rvv_vls */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_SRC_GENERIC_DEPENDENCIES_H)
+#error generic/dependencies.h must be included before generic/amalgamated.h!
+#endif
+
+/* including generic/base.h for rvv_vls: #include  */
+/* begin file generic/base.h for rvv_vls */
+#ifndef SIMDJSON_SRC_GENERIC_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_SRC_GENERIC_BASE_H */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+
+struct json_character_block;
+
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_SRC_GENERIC_BASE_H
+/* end file generic/base.h for rvv_vls */
+/* including generic/dom_parser_implementation.h for rvv_vls: #include  */
+/* begin file generic/dom_parser_implementation.h for rvv_vls */
+#ifndef SIMDJSON_SRC_GENERIC_DOM_PARSER_IMPLEMENTATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_SRC_GENERIC_DOM_PARSER_IMPLEMENTATION_H */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+// Interface a dom parser implementation must fulfill
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+
+simdjson_inline simd8 must_be_2_3_continuation(const simd8 prev2, const simd8 prev3);
+simdjson_inline bool is_ascii(const simd8x64& input);
+
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_SRC_GENERIC_DOM_PARSER_IMPLEMENTATION_H
+/* end file generic/dom_parser_implementation.h for rvv_vls */
+/* including generic/json_character_block.h for rvv_vls: #include  */
+/* begin file generic/json_character_block.h for rvv_vls */
+#ifndef SIMDJSON_SRC_GENERIC_JSON_CHARACTER_BLOCK_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_SRC_GENERIC_JSON_CHARACTER_BLOCK_H */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+
+struct json_character_block {
+  static simdjson_inline json_character_block classify(const simd::simd8x64& in);
+
+  simdjson_inline uint64_t whitespace() const noexcept { return _whitespace; }
+  simdjson_inline uint64_t op() const noexcept { return _op; }
+  simdjson_inline uint64_t scalar() const noexcept { return ~(op() | whitespace()); }
+
+  uint64_t _whitespace;
+  uint64_t _op;
+};
+
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_SRC_GENERIC_JSON_CHARACTER_BLOCK_H
+/* end file generic/json_character_block.h for rvv_vls */
+/* end file generic/amalgamated.h for rvv_vls */
+/* including generic/stage1/amalgamated.h for rvv_vls: #include  */
+/* begin file generic/stage1/amalgamated.h for rvv_vls */
+// Stuff other things depend on
+/* including generic/stage1/base.h for rvv_vls: #include  */
+/* begin file generic/stage1/base.h for rvv_vls */
+#ifndef SIMDJSON_SRC_GENERIC_STAGE1_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_SRC_GENERIC_STAGE1_BASE_H */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+namespace stage1 {
+
+class bit_indexer;
+template
+struct buf_block_reader;
+struct json_block;
+class json_minifier;
+class json_scanner;
+struct json_string_block;
+class json_string_scanner;
+class json_structural_indexer;
+
+} // namespace stage1
+
+namespace utf8_validation {
+struct utf8_checker;
+} // namespace utf8_validation
+
+using utf8_validation::utf8_checker;
+
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_SRC_GENERIC_STAGE1_BASE_H
+/* end file generic/stage1/base.h for rvv_vls */
+/* including generic/stage1/buf_block_reader.h for rvv_vls: #include  */
+/* begin file generic/stage1/buf_block_reader.h for rvv_vls */
+#ifndef SIMDJSON_SRC_GENERIC_STAGE1_BUF_BLOCK_READER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_SRC_GENERIC_STAGE1_BUF_BLOCK_READER_H */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+namespace stage1 {
+
+// Walks through a buffer in block-sized increments, loading the last part with spaces
+template
+struct buf_block_reader {
+public:
+  simdjson_inline buf_block_reader(const uint8_t *_buf, size_t _len);
+  simdjson_inline size_t block_index();
+  simdjson_inline bool has_full_block() const;
+  simdjson_inline const uint8_t *full_block() const;
+  /**
+   * Get the last block, padded with spaces.
+   *
+   * There will always be a last block, with at least 1 byte, unless len == 0 (in which case this
+   * function fills the buffer with spaces and returns 0. In particular, if len == STEP_SIZE there
+   * will be 0 full_blocks and 1 remainder block with STEP_SIZE bytes and no spaces for padding.
+   *
+   * @return the number of effective characters in the last block.
+   */
+  simdjson_inline size_t get_remainder(uint8_t *dst) const;
+  simdjson_inline void advance();
+private:
+  const uint8_t *buf;
+  const size_t len;
+  const size_t lenminusstep;
+  size_t idx;
+};
+
+// Routines to print masks and text for debugging bitmask operations
+simdjson_unused static char * format_input_text_64(const uint8_t *text) {
+  static char buf[sizeof(simd8x64) + 1];
+  for (size_t i=0; i); i++) {
+    buf[i] = int8_t(text[i]) < ' ' ? '_' : int8_t(text[i]);
+  }
+  buf[sizeof(simd8x64)] = '\0';
+  return buf;
+}
+
+// Routines to print masks and text for debugging bitmask operations
+simdjson_unused static char * format_input_text(const simd8x64& in) {
+  static char buf[sizeof(simd8x64) + 1];
+  in.store(reinterpret_cast(buf));
+  for (size_t i=0; i); i++) {
+    if (buf[i] < ' ') { buf[i] = '_'; }
+  }
+  buf[sizeof(simd8x64)] = '\0';
+  return buf;
+}
+
+simdjson_unused static char * format_input_text(const simd8x64& in, uint64_t mask) {
+  static char buf[sizeof(simd8x64) + 1];
+  in.store(reinterpret_cast(buf));
+  for (size_t i=0; i); i++) {
+    if (buf[i] <= ' ') { buf[i] = '_'; }
+    if (!(mask & (size_t(1) << i))) { buf[i] = ' '; }
+  }
+  buf[sizeof(simd8x64)] = '\0';
+  return buf;
+}
+
+simdjson_unused static char * format_mask(uint64_t mask) {
+  static char buf[sizeof(simd8x64) + 1];
+  for (size_t i=0; i<64; i++) {
+    buf[i] = (mask & (size_t(1) << i)) ? 'X' : ' ';
+  }
+  buf[64] = '\0';
+  return buf;
+}
+
+template
+simdjson_inline buf_block_reader::buf_block_reader(const uint8_t *_buf, size_t _len) : buf{_buf}, len{_len}, lenminusstep{len < STEP_SIZE ? 0 : len - STEP_SIZE}, idx{0} {}
+
+template
+simdjson_inline size_t buf_block_reader::block_index() { return idx; }
+
+template
+simdjson_inline bool buf_block_reader::has_full_block() const {
+  return idx < lenminusstep;
+}
+
+template
+simdjson_inline const uint8_t *buf_block_reader::full_block() const {
+  return &buf[idx];
+}
+
+template
+simdjson_inline size_t buf_block_reader::get_remainder(uint8_t *dst) const {
+  if(len == idx) { return 0; } // memcpy(dst, null, 0) will trigger an error with some sanitizers
+  std::memset(dst, 0x20, STEP_SIZE); // std::memset STEP_SIZE because it's more efficient to write out 8 or 16 bytes at once.
+  std::memcpy(dst, buf + idx, len - idx);
+  return len - idx;
+}
+
+template
+simdjson_inline void buf_block_reader::advance() {
+  idx += STEP_SIZE;
+}
+
+} // namespace stage1
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_SRC_GENERIC_STAGE1_BUF_BLOCK_READER_H
+/* end file generic/stage1/buf_block_reader.h for rvv_vls */
+/* including generic/stage1/json_escape_scanner.h for rvv_vls: #include  */
+/* begin file generic/stage1/json_escape_scanner.h for rvv_vls */
+#ifndef SIMDJSON_SRC_GENERIC_STAGE1_JSON_ESCAPE_SCANNER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_SRC_GENERIC_STAGE1_JSON_ESCAPE_SCANNER_H */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+namespace stage1 {
+
+/**
+ * Scans for escape characters in JSON, taking care with multiple backslashes (\\n vs. \n).
+ */
+struct json_escape_scanner {
+  /** The actual escape characters (the backslashes themselves). */
+  uint64_t next_is_escaped = 0ULL;
+
+  struct escaped_and_escape {
+    /**
+     * Mask of escaped characters.
+     *
+     * ```
+     * \n \\n \\\n \\\\n \
+     * 0100100010100101000
+     *  n  \   \ n  \ \
+     * ```
+     */
+    uint64_t escaped;
+    /**
+     * Mask of escape characters.
+     *
+     * ```
+     * \n \\n \\\n \\\\n \
+     * 1001000101001010001
+     * \  \   \ \  \ \   \
+     * ```
+     */
+    uint64_t escape;
+  };
+
+  /**
+   * Get a mask of both escape and escaped characters (the characters following a backslash).
+   *
+   * @param potential_escape A mask of the character that can escape others (but could be
+   *        escaped itself). e.g. block.eq('\\')
+   */
+  simdjson_really_inline escaped_and_escape next(uint64_t backslash) noexcept {
+
+#if !SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
+    if (!backslash) { return {next_escaped_without_backslashes(), 0}; }
+#endif
+
+    // |                                | Mask (shows characters instead of 1's) | Depth | Instructions        |
+    // |--------------------------------|----------------------------------------|-------|---------------------|
+    // | string                         | `\\n_\\\n___\\\n___\\\\___\\\\__\\\`   |       |                     |
+    // |                                | `    even   odd    even   odd   odd`   |       |                     |
+    // | potential_escape               | ` \  \\\    \\\    \\\\   \\\\  \\\`   | 1     | 1 (backslash & ~first_is_escaped)
+    // | escape_and_terminal_code       | ` \n \ \n   \ \n   \ \    \ \   \ \`   | 5     | 5 (next_escape_and_terminal_code())
+    // | escaped                        | `\    \ n    \ n    \ \    \ \   \ ` X | 6     | 7 (escape_and_terminal_code ^ (potential_escape | first_is_escaped))
+    // | escape                         | `    \ \    \ \    \ \    \ \   \ \`   | 6     | 8 (escape_and_terminal_code & backslash)
+    // | first_is_escaped               | `\                                 `   | 7 (*) | 9 (escape >> 63) ()
+    //                                                                               (*) this is not needed until the next iteration
+    uint64_t escape_and_terminal_code = next_escape_and_terminal_code(backslash & ~this->next_is_escaped);
+    uint64_t escaped = escape_and_terminal_code ^ (backslash | this->next_is_escaped);
+    uint64_t escape = escape_and_terminal_code & backslash;
+    this->next_is_escaped = escape >> 63;
+    return {escaped, escape};
+  }
+
+private:
+  static constexpr const uint64_t ODD_BITS = 0xAAAAAAAAAAAAAAAAULL;
+
+  simdjson_really_inline uint64_t next_escaped_without_backslashes() noexcept {
+    uint64_t escaped = this->next_is_escaped;
+    this->next_is_escaped = 0;
+    return escaped;
+  }
+
+  /**
+   * Returns a mask of the next escape characters (masking out escaped backslashes), along with
+   * any non-backslash escape codes.
+   *
+   * \n \\n \\\n \\\\n returns:
+   * \n \   \ \n \ \
+   * 11 100 1011 10100
+   *
+   * You are expected to mask out the first bit yourself if the previous block had a trailing
+   * escape.
+   *
+   * & the result with potential_escape to get just the escape characters.
+   * ^ the result with (potential_escape | first_is_escaped) to get escaped characters.
+   */
+  static simdjson_really_inline uint64_t next_escape_and_terminal_code(uint64_t potential_escape) noexcept {
+    // If we were to just shift and mask out any odd bits, we'd actually get a *half* right answer:
+    // any even-aligned backslash runs would be correct! Odd-aligned backslash runs would be
+    // inverted (\\\ would be 010 instead of 101).
+    //
+    // ```
+    // string:              | ____\\\\_\\\\_____ |
+    // maybe_escaped | ODD  |     \ \   \ \      |
+    //               even-aligned ^^^  ^^^^ odd-aligned
+    // ```
+    //
+    // Taking that into account, our basic strategy is:
+    //
+    // 1. Use subtraction to produce a mask with 1's for even-aligned runs and 0's for
+    //    odd-aligned runs.
+    // 2. XOR all odd bits, which masks out the odd bits in even-aligned runs, and brings IN the
+    //    odd bits in odd-aligned runs.
+    // 3. & with backslash to clean up any stray bits.
+    // runs are set to 0, and then XORing with "odd":
+    //
+    // |                                | Mask (shows characters instead of 1's) | Instructions        |
+    // |--------------------------------|----------------------------------------|---------------------|
+    // | string                         | `\\n_\\\n___\\\n___\\\\___\\\\__\\\`   |
+    // |                                | `    even   odd    even   odd   odd`   |
+    // | maybe_escaped                  | `  n  \\n    \\n    \\\_   \\\_  \\` X | 1 (potential_escape << 1)
+    // | maybe_escaped_and_odd          | ` \n_ \\n _ \\\n_ _ \\\__ _\\\_ \\\`   | 1 (maybe_escaped | odd)
+    // | even_series_codes_and_odd      | `  n_\\\  _    n_ _\\\\ _     _    `   | 1 (maybe_escaped_and_odd - potential_escape)
+    // | escape_and_terminal_code       | ` \n \ \n   \ \n   \ \    \ \   \ \`   | 1 (^ odd)
+    //
+
+    // Escaped characters are characters following an escape.
+    uint64_t maybe_escaped = potential_escape << 1;
+
+    // To distinguish odd from even escape sequences, therefore, we turn on any *starting*
+    // escapes that are on an odd byte. (We actually bring in all odd bits, for speed.)
+    // - Odd runs of backslashes are 0000, and the code at the end ("n" in \n or \\n) is 1.
+    // - Odd runs of backslashes are 1111, and the code at the end ("n" in \n or \\n) is 0.
+    // - All other odd bytes are 1, and even bytes are 0.
+    uint64_t maybe_escaped_and_odd_bits     = maybe_escaped | ODD_BITS;
+    uint64_t even_series_codes_and_odd_bits = maybe_escaped_and_odd_bits - potential_escape;
+
+    // Now we flip all odd bytes back with xor. This:
+    // - Makes odd runs of backslashes go from 0000 to 1010
+    // - Makes even runs of backslashes go from 1111 to 1010
+    // - Sets actually-escaped codes to 1 (the n in \n and \\n: \n = 11, \\n = 100)
+    // - Resets all other bytes to 0
+    return even_series_codes_and_odd_bits ^ ODD_BITS;
+  }
+};
+
+} // namespace stage1
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_SRC_GENERIC_STAGE1_JSON_STRING_SCANNER_H
+/* end file generic/stage1/json_escape_scanner.h for rvv_vls */
+/* including generic/stage1/json_string_scanner.h for rvv_vls: #include  */
+/* begin file generic/stage1/json_string_scanner.h for rvv_vls */
+#ifndef SIMDJSON_SRC_GENERIC_STAGE1_JSON_STRING_SCANNER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_SRC_GENERIC_STAGE1_JSON_STRING_SCANNER_H */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+namespace stage1 {
+
+struct json_string_block {
+  // We spell out the constructors in the hope of resolving inlining issues with Visual Studio 2017
+  simdjson_really_inline json_string_block(uint64_t escaped, uint64_t quote, uint64_t in_string) :
+  _escaped(escaped), _quote(quote), _in_string(in_string) {}
+
+  // Escaped characters (characters following an escape() character)
+  simdjson_really_inline uint64_t escaped() const { return _escaped; }
+  // Real (non-backslashed) quotes
+  simdjson_really_inline uint64_t quote() const { return _quote; }
+  // Only characters inside the string (not including the quotes)
+  simdjson_really_inline uint64_t string_content() const { return _in_string & ~_quote; }
+  // Return a mask of whether the given characters are inside a string (only works on non-quotes)
+  simdjson_really_inline uint64_t non_quote_inside_string(uint64_t mask) const { return mask & _in_string; }
+  // Return a mask of whether the given characters are inside a string (only works on non-quotes)
+  simdjson_really_inline uint64_t non_quote_outside_string(uint64_t mask) const { return mask & ~_in_string; }
+  // Tail of string (everything except the start quote)
+  simdjson_really_inline uint64_t string_tail() const { return _in_string ^ _quote; }
+
+  // escaped characters (backslashed--does not include the hex characters after \u)
+  uint64_t _escaped;
+  // real quotes (non-escaped ones)
+  uint64_t _quote;
+  // string characters (includes start quote but not end quote)
+  uint64_t _in_string;
+};
+
+// Scans blocks for string characters, storing the state necessary to do so
+class json_string_scanner {
+public:
+  simdjson_really_inline json_string_block next(const simd::simd8x64& in);
+  // Returns either UNCLOSED_STRING or SUCCESS
+  simdjson_really_inline error_code finish();
+
+private:
+  // Scans for escape characters
+  json_escape_scanner escape_scanner{};
+  // Whether the last iteration was still inside a string (all 1's = true, all 0's = false).
+  uint64_t prev_in_string = 0ULL;
+};
+
+//
+// Return a mask of all string characters plus end quotes.
+//
+// prev_escaped is overflow saying whether the next character is escaped.
+// prev_in_string is overflow saying whether we're still in a string.
+//
+// Backslash sequences outside of quotes will be detected in stage 2.
+//
+simdjson_really_inline json_string_block json_string_scanner::next(const simd::simd8x64& in) {
+  const uint64_t backslash = in.eq('\\');
+  const uint64_t escaped = escape_scanner.next(backslash).escaped;
+  const uint64_t quote = in.eq('"') & ~escaped;
+
+  //
+  // prefix_xor flips on bits inside the string (and flips off the end quote).
+  //
+  // Then we xor with prev_in_string: if we were in a string already, its effect is flipped
+  // (characters inside strings are outside, and characters outside strings are inside).
+  //
+  const uint64_t in_string = prefix_xor(quote) ^ prev_in_string;
+
+  //
+  // Check if we're still in a string at the end of the box so the next block will know
+  //
+  prev_in_string = uint64_t(static_cast(in_string) >> 63);
+
+  // Use ^ to turn the beginning quote off, and the end quote on.
+
+  // We are returning a function-local object so either we get a move constructor
+  // or we get copy elision.
+  return json_string_block(escaped, quote, in_string);
+}
+
+simdjson_really_inline error_code json_string_scanner::finish() {
+  if (prev_in_string) {
+    return UNCLOSED_STRING;
+  }
+  return SUCCESS;
+}
+
+} // namespace stage1
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_SRC_GENERIC_STAGE1_JSON_STRING_SCANNER_H
+/* end file generic/stage1/json_string_scanner.h for rvv_vls */
+/* including generic/stage1/utf8_lookup4_algorithm.h for rvv_vls: #include  */
+/* begin file generic/stage1/utf8_lookup4_algorithm.h for rvv_vls */
+#ifndef SIMDJSON_SRC_GENERIC_STAGE1_UTF8_LOOKUP4_ALGORITHM_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_SRC_GENERIC_STAGE1_UTF8_LOOKUP4_ALGORITHM_H */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+namespace utf8_validation {
+
+using namespace simd;
+
+  simdjson_inline simd8 check_special_cases(const simd8 input, const simd8 prev1) {
+// Bit 0 = Too Short (lead byte/ASCII followed by lead byte/ASCII)
+// Bit 1 = Too Long (ASCII followed by continuation)
+// Bit 2 = Overlong 3-byte
+// Bit 4 = Surrogate
+// Bit 5 = Overlong 2-byte
+// Bit 7 = Two Continuations
+    constexpr const uint8_t TOO_SHORT   = 1<<0; // 11______ 0_______
+                                                // 11______ 11______
+    constexpr const uint8_t TOO_LONG    = 1<<1; // 0_______ 10______
+    constexpr const uint8_t OVERLONG_3  = 1<<2; // 11100000 100_____
+    constexpr const uint8_t SURROGATE   = 1<<4; // 11101101 101_____
+    constexpr const uint8_t OVERLONG_2  = 1<<5; // 1100000_ 10______
+    constexpr const uint8_t TWO_CONTS   = 1<<7; // 10______ 10______
+    constexpr const uint8_t TOO_LARGE   = 1<<3; // 11110100 1001____
+                                                // 11110100 101_____
+                                                // 11110101 1001____
+                                                // 11110101 101_____
+                                                // 1111011_ 1001____
+                                                // 1111011_ 101_____
+                                                // 11111___ 1001____
+                                                // 11111___ 101_____
+    constexpr const uint8_t TOO_LARGE_1000 = 1<<6;
+                                                // 11110101 1000____
+                                                // 1111011_ 1000____
+                                                // 11111___ 1000____
+    constexpr const uint8_t OVERLONG_4  = 1<<6; // 11110000 1000____
+
+    const simd8 byte_1_high = prev1.shr<4>().lookup_16(
+      // 0_______ ________ 
+      TOO_LONG, TOO_LONG, TOO_LONG, TOO_LONG,
+      TOO_LONG, TOO_LONG, TOO_LONG, TOO_LONG,
+      // 10______ ________ 
+      TWO_CONTS, TWO_CONTS, TWO_CONTS, TWO_CONTS,
+      // 1100____ ________ 
+      TOO_SHORT | OVERLONG_2,
+      // 1101____ ________ 
+      TOO_SHORT,
+      // 1110____ ________ 
+      TOO_SHORT | OVERLONG_3 | SURROGATE,
+      // 1111____ ________ 
+      TOO_SHORT | TOO_LARGE | TOO_LARGE_1000 | OVERLONG_4
+    );
+    constexpr const uint8_t CARRY = TOO_SHORT | TOO_LONG | TWO_CONTS; // These all have ____ in byte 1 .
+    const simd8 byte_1_low = (prev1 & 0x0F).lookup_16(
+      // ____0000 ________
+      CARRY | OVERLONG_3 | OVERLONG_2 | OVERLONG_4,
+      // ____0001 ________
+      CARRY | OVERLONG_2,
+      // ____001_ ________
+      CARRY,
+      CARRY,
+
+      // ____0100 ________
+      CARRY | TOO_LARGE,
+      // ____0101 ________
+      CARRY | TOO_LARGE | TOO_LARGE_1000,
+      // ____011_ ________
+      CARRY | TOO_LARGE | TOO_LARGE_1000,
+      CARRY | TOO_LARGE | TOO_LARGE_1000,
+
+      // ____1___ ________
+      CARRY | TOO_LARGE | TOO_LARGE_1000,
+      CARRY | TOO_LARGE | TOO_LARGE_1000,
+      CARRY | TOO_LARGE | TOO_LARGE_1000,
+      CARRY | TOO_LARGE | TOO_LARGE_1000,
+      CARRY | TOO_LARGE | TOO_LARGE_1000,
+      // ____1101 ________
+      CARRY | TOO_LARGE | TOO_LARGE_1000 | SURROGATE,
+      CARRY | TOO_LARGE | TOO_LARGE_1000,
+      CARRY | TOO_LARGE | TOO_LARGE_1000
+    );
+    const simd8 byte_2_high = input.shr<4>().lookup_16(
+      // ________ 0_______ 
+      TOO_SHORT, TOO_SHORT, TOO_SHORT, TOO_SHORT,
+      TOO_SHORT, TOO_SHORT, TOO_SHORT, TOO_SHORT,
+
+      // ________ 1000____
+      TOO_LONG | OVERLONG_2 | TWO_CONTS | OVERLONG_3 | TOO_LARGE_1000 | OVERLONG_4,
+      // ________ 1001____
+      TOO_LONG | OVERLONG_2 | TWO_CONTS | OVERLONG_3 | TOO_LARGE,
+      // ________ 101_____
+      TOO_LONG | OVERLONG_2 | TWO_CONTS | SURROGATE  | TOO_LARGE,
+      TOO_LONG | OVERLONG_2 | TWO_CONTS | SURROGATE  | TOO_LARGE,
+
+      // ________ 11______
+      TOO_SHORT, TOO_SHORT, TOO_SHORT, TOO_SHORT
+    );
+    return (byte_1_high & byte_1_low & byte_2_high);
+  }
+  simdjson_inline simd8 check_multibyte_lengths(const simd8 input,
+      const simd8 prev_input, const simd8 sc) {
+    simd8 prev2 = input.prev<2>(prev_input);
+    simd8 prev3 = input.prev<3>(prev_input);
+    simd8 must23 = must_be_2_3_continuation(prev2, prev3);
+    simd8 must23_80 = must23 & uint8_t(0x80);
+    return must23_80 ^ sc;
+  }
+
+  //
+  // Return nonzero if there are incomplete multibyte characters at the end of the block:
+  // e.g. if there is a 4-byte character, but it's 3 bytes from the end.
+  //
+  simdjson_inline simd8 is_incomplete(const simd8 input) {
+    // If the previous input's last 3 bytes match this, they're too short (they ended at EOF):
+    // ... 1111____ 111_____ 11______
+#if SIMDJSON_IMPLEMENTATION_ICELAKE || (SIMDJSON_IMPLEMENTATION_RVV_VLS && __riscv_v_fixed_vlen >= 512)
     static const uint8_t max_array[64] = {
       255, 255, 255, 255, 255, 255, 255, 255,
       255, 255, 255, 255, 255, 255, 255, 255,
@@ -52010,18 +58695,18 @@ using namespace simd;
                 || (simd8x64::NUM_CHUNKS == 4),
                 "We support one, two or four chunks per 64-byte block.");
         SIMDJSON_IF_CONSTEXPR (simd8x64::NUM_CHUNKS == 1) {
-          this->check_utf8_bytes(input.chunks[0], this->prev_input_block);
+          this->check_utf8_bytes(input.get<0>(), this->prev_input_block);
         } else SIMDJSON_IF_CONSTEXPR (simd8x64::NUM_CHUNKS == 2) {
-          this->check_utf8_bytes(input.chunks[0], this->prev_input_block);
-          this->check_utf8_bytes(input.chunks[1], input.chunks[0]);
+          this->check_utf8_bytes(input.get<0>(), this->prev_input_block);
+          this->check_utf8_bytes(input.get<1>(), input.get<0>());
         } else SIMDJSON_IF_CONSTEXPR (simd8x64::NUM_CHUNKS == 4) {
-          this->check_utf8_bytes(input.chunks[0], this->prev_input_block);
-          this->check_utf8_bytes(input.chunks[1], input.chunks[0]);
-          this->check_utf8_bytes(input.chunks[2], input.chunks[1]);
-          this->check_utf8_bytes(input.chunks[3], input.chunks[2]);
+          this->check_utf8_bytes(input.get<0>(), this->prev_input_block);
+          this->check_utf8_bytes(input.get<1>(), input.get<0>());
+          this->check_utf8_bytes(input.get<2>(), input.get<1>());
+          this->check_utf8_bytes(input.get<3>(), input.get<2>());
         }
-        this->prev_incomplete = is_incomplete(input.chunks[simd8x64::NUM_CHUNKS-1]);
-        this->prev_input_block = input.chunks[simd8x64::NUM_CHUNKS-1];
+        this->prev_incomplete = is_incomplete(input.get::NUM_CHUNKS-1>());
+        this->prev_input_block = input.get::NUM_CHUNKS-1>();
       }
     }
     // do not forget to call check_eof!
@@ -52033,13 +58718,13 @@ using namespace simd;
 } // namespace utf8_validation
 
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE1_UTF8_LOOKUP4_ALGORITHM_H
-/* end file generic/stage1/utf8_lookup4_algorithm.h for lasx */
-/* including generic/stage1/json_scanner.h for lasx: #include  */
-/* begin file generic/stage1/json_scanner.h for lasx */
+/* end file generic/stage1/utf8_lookup4_algorithm.h for rvv_vls */
+/* including generic/stage1/json_scanner.h for rvv_vls: #include  */
+/* begin file generic/stage1/json_scanner.h for rvv_vls */
 #ifndef SIMDJSON_SRC_GENERIC_STAGE1_JSON_SCANNER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -52050,7 +58735,7 @@ using namespace simd;
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace stage1 {
 
@@ -52204,15 +58889,15 @@ simdjson_warn_unused simdjson_inline error_code json_scanner::finish() {
 
 } // namespace stage1
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE1_JSON_SCANNER_H
-/* end file generic/stage1/json_scanner.h for lasx */
+/* end file generic/stage1/json_scanner.h for rvv_vls */
 
 // All other declarations
-/* including generic/stage1/find_next_document_index.h for lasx: #include  */
-/* begin file generic/stage1/find_next_document_index.h for lasx */
+/* including generic/stage1/find_next_document_index.h for rvv_vls: #include  */
+/* begin file generic/stage1/find_next_document_index.h for rvv_vls */
 #ifndef SIMDJSON_SRC_GENERIC_STAGE1_FIND_NEXT_DOCUMENT_INDEX_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -52222,7 +58907,7 @@ simdjson_warn_unused simdjson_inline error_code json_scanner::finish() {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace stage1 {
 
@@ -52314,13 +58999,13 @@ simdjson_inline uint32_t find_next_document_index(dom_parser_implementation &par
 
 } // namespace stage1
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE1_FIND_NEXT_DOCUMENT_INDEX_H
-/* end file generic/stage1/find_next_document_index.h for lasx */
-/* including generic/stage1/json_minifier.h for lasx: #include  */
-/* begin file generic/stage1/json_minifier.h for lasx */
+/* end file generic/stage1/find_next_document_index.h for rvv_vls */
+/* including generic/stage1/json_minifier.h for rvv_vls: #include  */
+/* begin file generic/stage1/json_minifier.h for rvv_vls */
 #ifndef SIMDJSON_SRC_GENERIC_STAGE1_JSON_MINIFIER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -52336,7 +59021,7 @@ simdjson_inline uint32_t find_next_document_index(dom_parser_implementation &par
 // "simdjson/stage1.h" (this simplifies amalgation)
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace stage1 {
 
@@ -52421,13 +59106,13 @@ error_code json_minifier::minify(const uint8_t *buf, size_t len, uint8_t *dst, s
 
 } // namespace stage1
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE1_JSON_MINIFIER_H
-/* end file generic/stage1/json_minifier.h for lasx */
-/* including generic/stage1/json_structural_indexer.h for lasx: #include  */
-/* begin file generic/stage1/json_structural_indexer.h for lasx */
+/* end file generic/stage1/json_minifier.h for rvv_vls */
+/* including generic/stage1/json_structural_indexer.h for rvv_vls: #include  */
+/* begin file generic/stage1/json_structural_indexer.h for rvv_vls */
 #ifndef SIMDJSON_SRC_GENERIC_STAGE1_JSON_STRUCTURAL_INDEXER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -52447,7 +59132,7 @@ error_code json_minifier::minify(const uint8_t *buf, size_t len, uint8_t *dst, s
 // "simdjson/stage1.h" (this simplifies amalgation)
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace stage1 {
 
@@ -52779,16 +59464,16 @@ simdjson_inline error_code json_structural_indexer::finish(dom_parser_implementa
 
 } // namespace stage1
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 // Clear CUSTOM_BIT_INDEXER so other implementations can set it if they need to.
 #undef SIMDJSON_GENERIC_JSON_STRUCTURAL_INDEXER_CUSTOM_BIT_INDEXER
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE1_JSON_STRUCTURAL_INDEXER_H
-/* end file generic/stage1/json_structural_indexer.h for lasx */
-/* including generic/stage1/utf8_validator.h for lasx: #include  */
-/* begin file generic/stage1/utf8_validator.h for lasx */
+/* end file generic/stage1/json_structural_indexer.h for rvv_vls */
+/* including generic/stage1/utf8_validator.h for rvv_vls: #include  */
+/* begin file generic/stage1/utf8_validator.h for rvv_vls */
 #ifndef SIMDJSON_SRC_GENERIC_STAGE1_UTF8_VALIDATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -52799,7 +59484,7 @@ simdjson_inline error_code json_structural_indexer::finish(dom_parser_implementa
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace stage1 {
 
@@ -52830,17 +59515,17 @@ bool generic_validate_utf8(const char * input, size_t length) {
 
 } // namespace stage1
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE1_UTF8_VALIDATOR_H
-/* end file generic/stage1/utf8_validator.h for lasx */
-/* end file generic/stage1/amalgamated.h for lasx */
-/* including generic/stage2/amalgamated.h for lasx: #include  */
-/* begin file generic/stage2/amalgamated.h for lasx */
+/* end file generic/stage1/utf8_validator.h for rvv_vls */
+/* end file generic/stage1/amalgamated.h for rvv_vls */
+/* including generic/stage2/amalgamated.h for rvv_vls: #include  */
+/* begin file generic/stage2/amalgamated.h for rvv_vls */
 // Stuff other things depend on
-/* including generic/stage2/base.h for lasx: #include  */
-/* begin file generic/stage2/base.h for lasx */
+/* including generic/stage2/base.h for rvv_vls: #include  */
+/* begin file generic/stage2/base.h for rvv_vls */
 #ifndef SIMDJSON_SRC_GENERIC_STAGE2_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -52849,7 +59534,7 @@ bool generic_validate_utf8(const char * input, size_t length) {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace stage2 {
 
@@ -52860,13 +59545,13 @@ struct tape_writer;
 
 } // namespace stage2
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE2_BASE_H
-/* end file generic/stage2/base.h for lasx */
-/* including generic/stage2/tape_writer.h for lasx: #include  */
-/* begin file generic/stage2/tape_writer.h for lasx */
+/* end file generic/stage2/base.h for rvv_vls */
+/* including generic/stage2/tape_writer.h for rvv_vls: #include  */
+/* begin file generic/stage2/tape_writer.h for rvv_vls */
 #ifndef SIMDJSON_SRC_GENERIC_STAGE2_TAPE_WRITER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -52878,7 +59563,7 @@ struct tape_writer;
 #include 
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace stage2 {
 
@@ -52980,13 +59665,13 @@ simdjson_inline void tape_writer::write(uint64_t &tape_loc, uint64_t val, intern
 
 } // namespace stage2
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE2_TAPE_WRITER_H
-/* end file generic/stage2/tape_writer.h for lasx */
-/* including generic/stage2/logger.h for lasx: #include  */
-/* begin file generic/stage2/logger.h for lasx */
+/* end file generic/stage2/tape_writer.h for rvv_vls */
+/* including generic/stage2/logger.h for rvv_vls: #include  */
+/* begin file generic/stage2/logger.h for rvv_vls */
 #ifndef SIMDJSON_SRC_GENERIC_STAGE2_LOGGER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -53000,7 +59685,7 @@ simdjson_inline void tape_writer::write(uint64_t &tape_loc, uint64_t val, intern
 // This is for an internal-only stage 2 specific logger.
 // Set LOG_ENABLED = true to log what stage 2 is doing!
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace logger {
 
@@ -53083,15 +59768,15 @@ namespace logger {
 
 } // namespace logger
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE2_LOGGER_H
-/* end file generic/stage2/logger.h for lasx */
+/* end file generic/stage2/logger.h for rvv_vls */
 
 // All other declarations
-/* including generic/stage2/json_iterator.h for lasx: #include  */
-/* begin file generic/stage2/json_iterator.h for lasx */
+/* including generic/stage2/json_iterator.h for rvv_vls: #include  */
+/* begin file generic/stage2/json_iterator.h for rvv_vls */
 #ifndef SIMDJSON_SRC_GENERIC_STAGE2_JSON_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -53102,7 +59787,7 @@ namespace logger {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace stage2 {
 
@@ -53416,13 +60101,13 @@ simdjson_warn_unused simdjson_inline error_code json_iterator::visit_primitive(V
 
 } // namespace stage2
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE2_JSON_ITERATOR_H
-/* end file generic/stage2/json_iterator.h for lasx */
-/* including generic/stage2/stringparsing.h for lasx: #include  */
-/* begin file generic/stage2/stringparsing.h for lasx */
+/* end file generic/stage2/json_iterator.h for rvv_vls */
+/* including generic/stage2/stringparsing.h for rvv_vls: #include  */
+/* begin file generic/stage2/stringparsing.h for rvv_vls */
 #include 
 #ifndef SIMDJSON_SRC_GENERIC_STAGE2_STRINGPARSING_H
 
@@ -53436,7 +60121,7 @@ simdjson_warn_unused simdjson_inline error_code json_iterator::visit_primitive(V
 // It is intended to be included multiple times and compiled multiple times
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 /// @private
 namespace stringparsing {
@@ -53667,13 +60352,13 @@ simdjson_warn_unused simdjson_inline uint8_t *parse_wobbly_string(const uint8_t
 } // namespace stringparsing
 
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE2_STRINGPARSING_H
-/* end file generic/stage2/stringparsing.h for lasx */
-/* including generic/stage2/structural_iterator.h for lasx: #include  */
-/* begin file generic/stage2/structural_iterator.h for lasx */
+/* end file generic/stage2/stringparsing.h for rvv_vls */
+/* including generic/stage2/structural_iterator.h for rvv_vls: #include  */
+/* begin file generic/stage2/structural_iterator.h for rvv_vls */
 #ifndef SIMDJSON_SRC_GENERIC_STAGE2_STRUCTURAL_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -53683,7 +60368,7 @@ simdjson_warn_unused simdjson_inline uint8_t *parse_wobbly_string(const uint8_t
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace stage2 {
 
@@ -53734,13 +60419,13 @@ class structural_iterator {
 
 } // namespace stage2
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE2_STRUCTURAL_ITERATOR_H
-/* end file generic/stage2/structural_iterator.h for lasx */
-/* including generic/stage2/tape_builder.h for lasx: #include  */
-/* begin file generic/stage2/tape_builder.h for lasx */
+/* end file generic/stage2/structural_iterator.h for rvv_vls */
+/* including generic/stage2/tape_builder.h for rvv_vls: #include  */
+/* begin file generic/stage2/tape_builder.h for rvv_vls */
 #ifndef SIMDJSON_SRC_GENERIC_STAGE2_TAPE_BUILDER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -53757,7 +60442,7 @@ class structural_iterator {
 
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace stage2 {
 
@@ -54034,18 +60719,18 @@ simdjson_inline void tape_builder::on_end_string(uint8_t *dst) noexcept {
 
 } // namespace stage2
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SRC_GENERIC_STAGE2_TAPE_BUILDER_H
-/* end file generic/stage2/tape_builder.h for lasx */
-/* end file generic/stage2/amalgamated.h for lasx */
+/* end file generic/stage2/tape_builder.h for rvv_vls */
+/* end file generic/stage2/amalgamated.h for rvv_vls */
 
 //
 // Stage 1
 //
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 
 simdjson_warn_unused error_code implementation::create_dom_parser_implementation(
   size_t capacity,
@@ -54066,34 +60751,32 @@ namespace {
 using namespace simd;
 
 simdjson_inline json_character_block json_character_block::classify(const simd::simd8x64& in) {
-  // Inspired by haswell.
-  // LASX use low 5 bits as index. For the 6 operators (:,[]{}), the unique-5bits is [6:2].
-  // The ASCII white-space and operators have these values: (char, hex, unique-5bits)
-  // (' ', 20, 00000) ('\t', 09, 01001) ('\n', 0A, 01010) ('\r', 0D, 01101)
-  // (',', 2C, 01011) (':', 3A, 01110) ('[', 5B, 10110) ('{', 7B, 11110) (']', 5D, 10111) ('}', 7D, 11111)
-  const simd8 ws_table = simd8::repeat_16(
-    ' ', 0, 0, 0, 0, 0, 0, 0, 0, '\t', '\n', 0, 0, '\r', 0, 0
-  );
-  const simd8 op_table_lo = simd8::repeat_16(
-    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ',', 0, 0, ':', 0
-  );
-  const simd8 op_table_hi = simd8::repeat_16(
-    0, 0, 0, 0, 0, 0, '[', ']', 0, 0, 0, 0, 0, 0, '{', '}'
-  );
-  uint64_t ws = in.eq({
-    in.chunks[0].lookup_16(ws_table),
-    in.chunks[1].lookup_16(ws_table),
-  });
-  uint64_t op = in.eq({
-    __lasx_xvshuf_b(op_table_hi, op_table_lo, in.chunks[0].shr<2>()),
-    __lasx_xvshuf_b(op_table_hi, op_table_lo, in.chunks[1].shr<2>()),
-  });
+  static const uint8_t wsTable[16] = { ' ', 100, 100, 100, 17, 100, 113, 2, 100, '\t', '\n', 112, 100, '\r', 100, 100 };
+  static const uint8_t opTable[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ':', '{', ',', '}', 0, 0 };
+  vuint8_t vws = __riscv_vle8_v_u8m1(wsTable, 16);
+  vuint8_t vop = __riscv_vle8_v_u8m1(opTable, 16);
+  vuint8x64_t lo = __riscv_vand(in, 15, 64);
+  vuint8x64_t curl = __riscv_vor(in, 0x20, 64);
+
+#if __riscv_v_fixed_vlen == 128
+  vboolx64_t mws = __riscv_vmseq(simdutf_vrgather_u8m1x4(vws, lo), in, 64);
+  vboolx64_t mop = __riscv_vmseq(simdutf_vrgather_u8m1x4(vop, lo), curl, 64);
+#elif __riscv_v_fixed_vlen == 256
+  vboolx64_t mws = __riscv_vmseq(simdutf_vrgather_u8m1x2(vws, lo), in, 64);
+  vboolx64_t mop = __riscv_vmseq(simdutf_vrgather_u8m1x2(vop, lo), curl, 64);
+#else
+  vboolx64_t mws = __riscv_vmseq(__riscv_vrgather(vws, lo, 64), in, 64);
+  vboolx64_t mop = __riscv_vmseq(__riscv_vrgather(vop, lo, 64), curl, 64);
+#endif
 
-  return { ws, op };
+  return {
+      __riscv_vmv_x(__riscv_vreinterpret_u64m1(mws)),
+      __riscv_vmv_x(__riscv_vreinterpret_u64m1(mop))
+  };
 }
 
 simdjson_inline bool is_ascii(const simd8x64& input) {
-  return input.reduce_or().is_ascii();
+  return input.is_ascii();
 }
 
 simdjson_inline simd8 must_be_2_3_continuation(const simd8 prev2, const simd8 prev3) {
@@ -54103,7 +60786,7 @@ simdjson_inline simd8 must_be_2_3_continuation(const simd8 pre
 }
 
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 //
@@ -54114,20 +60797,20 @@ simdjson_inline simd8 must_be_2_3_continuation(const simd8 pre
 // Implementation-specific overrides
 //
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 
 simdjson_warn_unused error_code implementation::minify(const uint8_t *buf, size_t len, uint8_t *dst, size_t &dst_len) const noexcept {
-  return lasx::stage1::json_minifier::minify<64>(buf, len, dst, dst_len);
+  return rvv_vls::stage1::json_minifier::minify<64>(buf, len, dst, dst_len);
 }
 
 simdjson_warn_unused error_code dom_parser_implementation::stage1(const uint8_t *_buf, size_t _len, stage1_mode streaming) noexcept {
   this->buf = _buf;
   this->len = _len;
-  return lasx::stage1::json_structural_indexer::index<64>(buf, len, *this, streaming);
+  return rvv_vls::stage1::json_structural_indexer::index<64>(buf, len, *this, streaming);
 }
 
 simdjson_warn_unused bool implementation::validate_utf8(const char *buf, size_t len) const noexcept {
-  return lasx::stage1::generic_validate_utf8(buf,len);
+  return rvv_vls::stage1::generic_validate_utf8(buf,len);
 }
 
 simdjson_warn_unused error_code dom_parser_implementation::stage2(dom::document &_doc) noexcept {
@@ -54140,11 +60823,11 @@ simdjson_warn_unused error_code dom_parser_implementation::stage2_next(dom::docu
 
 SIMDJSON_NO_SANITIZE_MEMORY
 simdjson_warn_unused uint8_t *dom_parser_implementation::parse_string(const uint8_t *src, uint8_t *dst, bool allow_replacement) const noexcept {
-  return lasx::stringparsing::parse_string(src, dst, allow_replacement);
+  return rvv_vls::stringparsing::parse_string(src, dst, allow_replacement);
 }
 
 simdjson_warn_unused uint8_t *dom_parser_implementation::parse_wobbly_string(const uint8_t *src, uint8_t *dst) const noexcept {
-  return lasx::stringparsing::parse_wobbly_string(src, dst);
+  return rvv_vls::stringparsing::parse_wobbly_string(src, dst);
 }
 
 simdjson_warn_unused error_code dom_parser_implementation::parse(const uint8_t *_buf, size_t _len, dom::document &_doc) noexcept {
@@ -54153,22 +60836,21 @@ simdjson_warn_unused error_code dom_parser_implementation::parse(const uint8_t *
   return stage2(_doc);
 }
 
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
-/* including simdjson/lasx/end.h: #include  */
-/* begin file simdjson/lasx/end.h */
+/* including simdjson/rvv-vls/end.h: #include  */
+/* begin file simdjson/rvv-vls/end.h */
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
-/* undefining SIMDJSON_IMPLEMENTATION from "lasx" */
+/* undefining SIMDJSON_IMPLEMENTATION from "rvv_vls" */
 #undef SIMDJSON_IMPLEMENTATION
-/* end file simdjson/lasx/end.h */
+/* end file simdjson/rvv-vls/end.h */
 
-#endif // SIMDJSON_SRC_LASX_CPP
-/* end file lasx.cpp */
+#endif // SIMDJSON_SRC_RVV_VLS_CPP
+/* end file rvv-vls.cpp */
 #endif
 #if SIMDJSON_IMPLEMENTATION_FALLBACK
 /* including fallback.cpp: #include  */
@@ -54436,10 +61118,12 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 /* amalgamation skipped (editor-only): #include "simdjson/arm64/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_PPC64 */
 /* amalgamation skipped (editor-only): #include "simdjson/ppc64/begin.h" */
-/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LASX */
 /* amalgamation skipped (editor-only): #include "simdjson/lasx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_RVV_VLS */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_FALLBACK */
 /* amalgamation skipped (editor-only): #include "simdjson/fallback/begin.h" */
 /* amalgamation skipped (editor-only): #else */
diff --git a/deps/simdjson/simdjson.h b/deps/simdjson/simdjson.h
index 1d6560e80fab04..cf2658af259b79 100644
--- a/deps/simdjson/simdjson.h
+++ b/deps/simdjson/simdjson.h
@@ -1,4 +1,4 @@
-/* auto-generated on 2025-12-17 20:32:36 -0500. version 4.2.4 Do not edit! */
+/* auto-generated on 2026-02-20 16:16:37 -0500. version 4.3.1 Do not edit! */
 /* including simdjson.h:  */
 /* begin file simdjson.h */
 #ifndef SIMDJSON_H
@@ -218,24 +218,28 @@ using std::size_t;
 #define SIMDJSON_IS_ARM64 1
 #elif defined(__riscv) && __riscv_xlen == 64
 #define SIMDJSON_IS_RISCV64 1
+
   #if __riscv_v_intrinsic >= 11000
     #define SIMDJSON_HAS_RVV_INTRINSICS 1
   #endif
 
-  #define SIMDJSON_HAS_ZVBB_INTRINSICS                                          \
-    0 // there is currently no way to detect this
+  #if SIMDJSON_HAS_RVV_INTRINSICS && __riscv_vector && __riscv_v_min_vlen >= 128 && __riscv_v_elen >= 64
+    #define SIMDJSON_IS_RVV 1 // RISC-V V extension
+  #endif
 
-  #if SIMDJSON_HAS_RVV_INTRINSICS && __riscv_vector &&                          \
-      __riscv_v_min_vlen >= 128 && __riscv_v_elen >= 64
-    // RISC-V V extension
-    #define SIMDJSON_IS_RVV 1
-    #if SIMDJSON_HAS_ZVBB_INTRINSICS && __riscv_zvbb >= 1000000
-      // RISC-V Vector Basic Bit-manipulation
-      #define SIMDJSON_IS_ZVBB 1
-    #endif
+  // current toolchains don't support fixed-size SIMD types that don't match VLEN directly
+  #if __riscv_v_fixed_vlen >= 128 && __riscv_v_fixed_vlen <= 512
+    #define SIMDJSON_IS_RVV_VLS 1
   #endif
+
 #elif defined(__loongarch_lp64)
 #define SIMDJSON_IS_LOONGARCH64 1
+#if defined(__loongarch_sx) && defined(__loongarch_asx)
+  #define SIMDJSON_IS_LSX 1
+  #define SIMDJSON_IS_LASX 1 // We can always run both
+#elif defined(__loongarch_sx)
+  #define SIMDJSON_IS_LSX 1
+#endif
 #elif defined(__PPC64__) || defined(_M_PPC64)
 #define SIMDJSON_IS_PPC64 1
 #if defined(__ALTIVEC__)
@@ -291,7 +295,7 @@ using std::size_t;
 //
 
 // We are going to use runtime dispatch.
-#if SIMDJSON_IS_X86_64
+#if defined(SIMDJSON_IS_X86_64) || defined(SIMDJSON_IS_LSX)
 #ifdef __clang__
 // clang does not have GCC push pop
 // warning: clang attribute push can't be used within a namespace in clang up
@@ -308,7 +312,7 @@ using std::size_t;
 #define SIMDJSON_UNTARGET_REGION _Pragma("GCC pop_options")
 #endif // clang then gcc
 
-#endif // x86
+#endif // defined(SIMDJSON_IS_X86_64) || defined(SIMDJSON_IS_LSX)
 
 // Default target region macros don't do anything.
 #ifndef SIMDJSON_TARGET_REGION
@@ -377,7 +381,8 @@ using std::size_t;
 #define simdjson_strncasecmp strncasecmp
 #endif
 
-#if defined(NDEBUG) || defined(__OPTIMIZE__) || (defined(_MSC_VER) && !defined(_DEBUG))
+#if (defined(NDEBUG) || defined(__OPTIMIZE__) || (defined(_MSC_VER) && !defined(_DEBUG))) && !SIMDJSON_DEVELOPMENT_CHECKS
+// If SIMDJSON_DEVELOPMENT_CHECKS is undefined or 0, we consider that we are in release mode.
 // If NDEBUG is set, or __OPTIMIZE__ is set, or we are under MSVC in release mode,
 // then do away with asserts and use __assume.
 // We still recommend that our users set NDEBUG in release mode.
@@ -389,7 +394,7 @@ using std::size_t;
 #define SIMDJSON_ASSUME(COND) do { if (!(COND)) __builtin_unreachable(); } while (0)
 #endif
 
-#else // defined(NDEBUG) || defined(__OPTIMIZE__) || (defined(_MSC_VER) && !defined(_DEBUG))
+#else // defined(NDEBUG) || defined(__OPTIMIZE__) || (defined(_MSC_VER) && !defined(_DEBUG)) && !SIMDJSON_DEVELOPMENT_CHECKS
 // This should only ever be enabled in debug mode.
 #define SIMDJSON_UNREACHABLE() assert(0);
 #define SIMDJSON_ASSUME(COND) assert(COND)
@@ -2432,7 +2437,9 @@ namespace std {
 // when the compiler is optimizing.
 // We only set SIMDJSON_DEVELOPMENT_CHECKS if both __OPTIMIZE__
 // and NDEBUG are not defined.
-#if !defined(__OPTIMIZE__) && !defined(NDEBUG)
+// We recognize _DEBUG as overriding __OPTIMIZE__ so that if both
+// __OPTIMIZE__ and _DEBUG are defined, we still set SIMDJSON_DEVELOPMENT_CHECKS.
+#if ((!defined(__OPTIMIZE__) || defined(_DEBUG)) && !defined(NDEBUG))
 #define SIMDJSON_DEVELOPMENT_CHECKS 1
 #endif // __OPTIMIZE__
 #endif // _MSC_VER
@@ -2513,7 +2520,7 @@ namespace std {
 #define SIMDJSON_SIMDJSON_VERSION_H
 
 /** The version of simdjson being used (major.minor.revision) */
-#define SIMDJSON_VERSION "4.2.4"
+#define SIMDJSON_VERSION "4.3.1"
 
 namespace simdjson {
 enum {
@@ -2524,11 +2531,11 @@ enum {
   /**
    * The minor version (major.MINOR.revision) of simdjson being used.
    */
-  SIMDJSON_VERSION_MINOR = 2,
+  SIMDJSON_VERSION_MINOR = 3,
   /**
    * The revision (major.minor.REVISION) of simdjson being used.
    */
-  SIMDJSON_VERSION_REVISION = 4
+  SIMDJSON_VERSION_REVISION = 1
 };
 } // namespace simdjson
 
@@ -3300,7 +3307,7 @@ enum class tape_type;
 namespace simdjson {
 
 inline bool is_fatal(error_code error) noexcept {
-  return error == TAPE_ERROR || error == INCOMPLETE_ARRAY_OR_OBJECT;
+  return error == TAPE_ERROR || error == INCOMPLETE_ARRAY_OR_OBJECT || error == OUT_OF_ORDER_ITERATION || error == DEPTH_ERROR;
 }
 
 namespace internal {
@@ -4140,6 +4147,16 @@ struct padded_string final {
    **/
   char *data() noexcept;
 
+  /**
+   * Append data to the padded string. Return true on success, false on failure.
+   * The complexity is O(n) where n is the new size of the string. If you are
+   * doing multiple appends, consider using padded_string_builder for better performance.
+   *
+   * @param data the buffer to append
+   * @param length the number of bytes to append
+   */
+  inline bool append(const char *data, size_t length) noexcept;
+
   /**
    * Create a std::string_view with the same content.
    */
@@ -4173,7 +4190,7 @@ struct padded_string final {
   /**
    * This function accepts a wide string path (UTF-16) and converts it to
    * UTF-8 before loading the file. This allows windows users to work
-   * with unicode file paths without manually converting the paths everytime.
+   * with unicode file paths without manually converting the paths every time.
    *
    * @return IO_ERROR on error, including conversion failures.
    *
@@ -4183,6 +4200,7 @@ struct padded_string final {
   #endif
 
 private:
+  friend class padded_string_builder;
   padded_string &operator=(const padded_string &o) = delete;
   padded_string(const padded_string &o) = delete;
 
@@ -4191,6 +4209,101 @@ struct padded_string final {
 
 }; // padded_string
 
+/**
+ * Builder for constructing padded_string incrementally.
+ *
+ * This class allows efficient appending of data and then building a padded_string.
+ */
+class padded_string_builder {
+public:
+  /**
+   * Create a new, empty padded string builder.
+   */
+  inline padded_string_builder() noexcept;
+
+  /**
+   * Create a new padded string builder with initial capacity.
+   *
+   * @param capacity the initial capacity of the builder.
+   */
+  inline padded_string_builder(size_t capacity) noexcept;
+
+  /**
+   * Move constructor.
+   */
+  inline padded_string_builder(padded_string_builder &&o) noexcept;
+
+  /**
+   * Move assignment.
+   */
+  inline padded_string_builder &operator=(padded_string_builder &&o) noexcept;
+
+  /**
+   * Copy constructor (deleted).
+   */
+  padded_string_builder(const padded_string_builder &) = delete;
+
+  /**
+   * Copy assignment (deleted).
+   */
+  padded_string_builder &operator=(const padded_string_builder &) = delete;
+
+  /**
+   * Destructor.
+   */
+  inline ~padded_string_builder() noexcept;
+
+  /**
+   * Append data to the builder.
+   *
+   * @param newdata the buffer to append
+   * @param length the number of bytes to append
+   * @return true if the append succeeded, false if allocation failed
+   */
+  inline bool append(const char *newdata, size_t length) noexcept;
+
+  /**
+   * Append a string view to the builder.
+   *
+   * @param sv the string view to append
+   * @return true if the append succeeded, false if allocation failed
+   */
+  inline bool append(std::string_view sv) noexcept;
+
+  /**
+   * Get the current length of the built string.
+   */
+  inline size_t length() const noexcept;
+
+  /**
+   * Build a padded_string from the current content. The builder's content
+   * is not modified. If you want to avoid the copy, use convert() instead.
+   *
+   * @return a padded_string containing a copy of the built content.
+   */
+  inline padded_string build() const noexcept;
+
+  /**
+   * Convert the current content into a padded_string. The
+   * builder's content is emptied, the capacity is lost.
+   *
+   * @return a padded_string containing the built content.
+   */
+  inline padded_string convert() noexcept;
+private:
+  size_t size{0};
+  size_t capacity{0};
+  char *data{nullptr};
+
+  /**
+   * Ensure the builder has enough capacity.
+   *
+   * @param additional the additional capacity needed.
+   * @return true if the reservation succeeded, false if allocation failed
+   */
+  inline bool reserve(size_t additional) noexcept;
+};
+
 /**
  * Send padded_string instance to an output stream.
  *
@@ -4611,6 +4724,33 @@ inline const char *padded_string::data() const noexcept { return data_ptr; }
 
 inline char *padded_string::data() noexcept { return data_ptr; }
 
+inline bool padded_string::append(const char *data, size_t length) noexcept {
+  if (length == 0) {
+    return true; // Nothing to append
+  }
+  size_t new_size = viable_size + length;
+  if (new_size < viable_size) {
+    // Overflow, cannot append
+    return false;
+  }
+  char *new_data_ptr = internal::allocate_padded_buffer(new_size);
+  if (new_data_ptr == nullptr) {
+    // Allocation failed, cannot append
+    return false;
+  }
+  // Copy existing data
+  if (viable_size > 0) {
+    std::memcpy(new_data_ptr, data_ptr, viable_size);
+  }
+  // Copy new data
+  std::memcpy(new_data_ptr + viable_size, data, length);
+  // Update
+  delete[] data_ptr;
+  data_ptr = new_data_ptr;
+  viable_size = new_size;
+  return true;
+}
+
 inline padded_string::operator std::string_view() const simdjson_lifetime_bound { return std::string_view(data(), length()); }
 
 inline padded_string::operator padded_string_view() const noexcept simdjson_lifetime_bound {
@@ -4727,6 +4867,103 @@ inline simdjson_result padded_string::load(std::wstring_view file
 }
 #endif
 
+// padded_string_builder implementations
+
+inline padded_string_builder::padded_string_builder() noexcept = default;
+
+inline padded_string_builder::padded_string_builder(size_t new_capacity) noexcept {
+  if (new_capacity > 0) {
+    data = internal::allocate_padded_buffer(new_capacity);
+    if (data != nullptr) {
+      this->capacity = new_capacity;
+    }
+  }
+}
+
+inline padded_string_builder::padded_string_builder(padded_string_builder &&o) noexcept
+    : size(o.size), capacity(o.capacity), data(o.data) {
+  o.size = 0;
+  o.capacity = 0;
+  o.data = nullptr;
+}
+
+inline padded_string_builder &padded_string_builder::operator=(padded_string_builder &&o) noexcept {
+  if (this != &o) {
+    delete[] data;
+    size = o.size;
+    capacity = o.capacity;
+    data = o.data;
+    o.size = 0;
+    o.capacity = 0;
+    o.data = nullptr;
+  }
+  return *this;
+}
+
+inline padded_string_builder::~padded_string_builder() noexcept {
+  delete[] data;
+}
+
+inline bool padded_string_builder::append(const char *newdata, size_t length) noexcept {
+  if (length == 0) {
+    return true;
+  }
+  if (!reserve(length)) {
+    return false;
+  }
+  std::memcpy(data + size, newdata, length);
+  size += length;
+  return true;
+}
+
+inline bool padded_string_builder::append(std::string_view sv) noexcept {
+  return append(sv.data(), sv.size());
+}
+
+inline size_t padded_string_builder::length() const noexcept {
+  return size;
+}
+
+inline padded_string padded_string_builder::build() const noexcept {
+  return padded_string(data, size);
+}
+
+inline padded_string padded_string_builder::convert() noexcept {
+  padded_string result{};
+  result.data_ptr = data;
+  result.viable_size = size;
+  data = nullptr;
+  size = 0;
+  capacity = 0;
+  return result;
+}
+
+inline bool padded_string_builder::reserve(size_t additional) noexcept {
+  size_t needed = size + additional;
+  if (needed <= capacity) {
+    return true;
+  }
+  size_t new_capacity = needed;
+  // We are going to grow the capacity exponentially to avoid
+  // repeated allocations.
+  if (new_capacity < 4096) {
+    new_capacity *= 2;
+  } else {
+    new_capacity += new_capacity/2; // grow by 1.5x
+  }
+  char *new_data = internal::allocate_padded_buffer(new_capacity);
+  if (new_data == nullptr) {
+    return false; // Allocation failed
+  }
+  if (size > 0) {
+    std::memcpy(new_data, data, size);
+  }
+  delete[] data;
+  data = new_data;
+  capacity = new_capacity;
+  return true;
+}
+
 } // namespace simdjson
 
 inline simdjson::padded_string operator ""_padded(const char *str, size_t len) {
@@ -7389,6 +7626,168 @@ template  std::string prettify(simdjson_result x) {
 
 #endif
 /* end file simdjson/dom/serialization.h */
+/* including simdjson/dom/fractured_json.h: #include "simdjson/dom/fractured_json.h" */
+/* begin file simdjson/dom/fractured_json.h */
+#ifndef SIMDJSON_DOM_FRACTURED_JSON_H
+#define SIMDJSON_DOM_FRACTURED_JSON_H
+
+/* skipped duplicate #include "simdjson/dom/base.h" */
+/* skipped duplicate #include "simdjson/dom/element.h" */
+
+namespace simdjson {
+
+/**
+ * Configuration options for FracturedJson formatting.
+ *
+ * FracturedJson intelligently chooses between different layout strategies
+ * (inline, compact multiline, table, expanded) based on content complexity,
+ * length, and structure similarity.
+ */
+struct fractured_json_options {
+  /**
+   * Maximum total characters per line (default: 120).
+   * Content exceeding this will be expanded to multiple lines.
+   */
+  size_t max_total_line_length = 120;
+
+  /**
+   * Maximum length for inlined elements (default: 80).
+   * Simple arrays/objects shorter than this may be rendered inline.
+   */
+  size_t max_inline_length = 80;
+
+  /**
+   * Maximum nesting depth for inline rendering (default: 2).
+   * Elements with complexity exceeding this will be expanded.
+   * Complexity 0 = scalar, 1 = flat array/object, 2 = one level of nesting.
+   */
+  size_t max_inline_complexity = 2;
+
+  /**
+   * Maximum complexity for compact array formatting (default: 1).
+   * Arrays with elements of this complexity or less may have multiple
+   * items per line.
+   */
+  size_t max_compact_array_complexity = 1;
+
+  /**
+   * Number of spaces per indentation level (default: 4).
+   */
+  size_t indent_spaces = 4;
+
+  /**
+   * Enable tabular formatting for arrays of similar objects (default: true).
+   * When enabled, arrays of objects with identical keys are formatted
+   * as aligned tables.
+   */
+  bool enable_table_format = true;
+
+  /**
+   * Minimum number of rows to trigger table mode (default: 3).
+   */
+  size_t min_table_rows = 3;
+
+  /**
+   * Similarity threshold for table detection (default: 0.8).
+   * Objects must share at least this fraction of keys to be formatted
+   * as a table.
+   */
+  double table_similarity_threshold = 0.8;
+
+  /**
+   * Enable compact multiline arrays (default: true).
+   * When enabled, arrays of simple elements may have multiple items
+   * per line.
+   */
+  bool enable_compact_multiline = true;
+
+  /**
+   * Maximum array items per line in compact mode (default: 10).
+   */
+  size_t max_items_per_line = 10;
+
+  /**
+   * Add space inside brackets for simple containers (default: true).
+   * When true: { "key": "value" }
+   * When false: {"key": "value"}
+   */
+  bool simple_bracket_padding = true;
+
+  /**
+   * Add space after colons (default: true).
+   * When true: "key": "value"
+   * When false: "key":"value"
+   */
+  bool colon_padding = true;
+
+  /**
+   * Add space after commas in inline content (default: true).
+   * When true: [1, 2, 3]
+   * When false: [1,2,3]
+   */
+  bool comma_padding = true;
+};
+
+/**
+ * Format JSON using FracturedJson formatting with default options.
+ *
+ * FracturedJson produces human-readable yet compact output by intelligently
+ * choosing between inline, compact multiline, table, and expanded layouts.
+ *
+ *   dom::parser parser;
+ *   element doc = parser.parse(json_string);
+ *   cout << fractured_json(doc) << endl;
+ */
+template 
+std::string fractured_json(T x);
+
+/**
+ * Format JSON using FracturedJson formatting with custom options.
+ *
+ *   dom::parser parser;
+ *   element doc = parser.parse(json_string);
+ *   fractured_json_options opts;
+ *   opts.max_total_line_length = 80;
+ *   cout << fractured_json(doc, opts) << endl;
+ */
+template 
+std::string fractured_json(T x, const fractured_json_options& options);
+
+#if SIMDJSON_EXCEPTIONS
+template 
+std::string fractured_json(simdjson_result x);
+
+template 
+std::string fractured_json(simdjson_result x, const fractured_json_options& options);
+#endif
+
+/**
+ * Format a JSON string using FracturedJson formatting.
+ *
+ * This is useful for formatting output from the builder/static reflection API
+ * or any valid JSON string.
+ *
+ *   // With static reflection
+ *   MyStruct data = {...};
+ *   auto minified = simdjson::to_json_string(data);
+ *   auto formatted = simdjson::fractured_json_string(minified.value());
+ *
+ *   // Or with any JSON string
+ *   std::string json = R"({"key":"value"})";
+ *   auto formatted = simdjson::fractured_json_string(json);
+ */
+inline std::string fractured_json_string(std::string_view json_str);
+
+/**
+ * Format a JSON string using FracturedJson formatting with custom options.
+ */
+inline std::string fractured_json_string(std::string_view json_str,
+                                          const fractured_json_options& options);
+
+} // namespace simdjson
+
+#endif // SIMDJSON_DOM_FRACTURED_JSON_H
+/* end file simdjson/dom/fractured_json.h */
 
 // Inline functions
 /* including simdjson/dom/array-inl.h: #include "simdjson/dom/array-inl.h" */
@@ -10265,18 +10664,1432 @@ simdjson_inline std::string_view string_builder::str() const {
 
 #endif
 /* end file simdjson/dom/serialization-inl.h */
+/* including simdjson/dom/fractured_json-inl.h: #include "simdjson/dom/fractured_json-inl.h" */
+/* begin file simdjson/dom/fractured_json-inl.h */
+#ifndef SIMDJSON_DOM_FRACTURED_JSON_INL_H
+#define SIMDJSON_DOM_FRACTURED_JSON_INL_H
+
+/* skipped duplicate #include "simdjson/dom/fractured_json.h" */
+/* skipped duplicate #include "simdjson/dom/serialization.h" */
+/* skipped duplicate #include "simdjson/dom/element-inl.h" */
+/* skipped duplicate #include "simdjson/dom/array-inl.h" */
+/* skipped duplicate #include "simdjson/dom/object-inl.h" */
+/* skipped duplicate #include "simdjson/dom/parser-inl.h" */
+/* skipped duplicate #include "simdjson/padded_string.h" */
+/* including simdjson/internal/json_structure_analyzer.h: #include "simdjson/internal/json_structure_analyzer.h" */
+/* begin file simdjson/internal/json_structure_analyzer.h */
+#ifndef SIMDJSON_INTERNAL_JSON_STRUCTURE_ANALYZER_H
+#define SIMDJSON_INTERNAL_JSON_STRUCTURE_ANALYZER_H
+
+/* skipped duplicate #include "simdjson/dom/base.h" */
+/* skipped duplicate #include "simdjson/dom/element.h" */
+/* skipped duplicate #include "simdjson/dom/array.h" */
+/* skipped duplicate #include "simdjson/dom/object.h" */
+/* skipped duplicate #include "simdjson/dom/fractured_json.h" */
+/* skipped duplicate #include "simdjson/internal/tape_type.h" */
+
+#include 
+#include 
+#include 
+#include 
+
+namespace simdjson {
+namespace internal {
+
+/**
+ * Layout mode for fractured JSON formatting.
+ */
+enum class layout_mode {
+  INLINE,              // Single line: [1, 2, 3] or {"a": 1}
+  COMPACT_MULTILINE,   // Multiple items per line with breaks
+  TABLE,               // Tabular format for arrays of similar objects
+  EXPANDED             // Traditional multi-line with indentation
+};
+
+/**
+ * Metrics computed for a JSON element during structure analysis.
+ * These metrics drive layout decisions and contain child metrics for recursive formatting.
+ */
+struct element_metrics {
+  /** Nesting depth score (0 = scalar, 1 = flat container, etc.) */
+  size_t complexity = 0;
+
+  /** Estimated character length if rendered inline (minified + spaces) */
+  size_t estimated_inline_len = 0;
+
+  /** Number of direct children (0 for scalars) */
+  size_t child_count = 0;
+
+  /** Pre-computed: can this element be rendered inline? */
+  bool can_inline = false;
+
+  /** Is this an array where all elements have similar structure? */
+  bool is_uniform_array = false;
+
+  /** For uniform arrays of objects: the common keys */
+  std::vector common_keys{};
+
+  /** Recommended layout mode based on analysis */
+  layout_mode recommended_layout = layout_mode::EXPANDED;
+
+  /** Child metrics for arrays and objects (in order of iteration) */
+  std::vector children{};
+};
+
+/**
+ * Analyzes JSON structure to compute metrics for formatting decisions.
+ *
+ * The analyzer performs a single pass over the DOM to compute:
+ * - Complexity (nesting depth)
+ * - Estimated inline length
+ * - Array uniformity for table detection
+ *
+ * Metrics are stored hierarchically with child metrics embedded in parent metrics,
+ * enabling efficient lookup during formatting without address-based caching.
+ */
+class structure_analyzer {
+public:
+  /** Default constructor */
+  structure_analyzer() : current_opts_(nullptr) {}
+
+  /** Copy constructor - deleted since class has pointer member */
+  structure_analyzer(const structure_analyzer&) = delete;
+
+  /** Copy assignment - deleted since class has pointer member */
+  structure_analyzer& operator=(const structure_analyzer&) = delete;
+
+  /** Move constructor */
+  structure_analyzer(structure_analyzer&&) = default;
+
+  /** Move assignment */
+  structure_analyzer& operator=(structure_analyzer&&) = default;
+
+  /**
+   * Analyze a DOM element and compute metrics.
+   * @param elem The element to analyze
+   * @param opts Formatting options that affect metric computation
+   * @return Metrics for the root element (with child metrics embedded)
+   */
+  element_metrics analyze(const dom::element& elem,
+                          const fractured_json_options& opts);
+
+  /**
+   * Clear state.
+   */
+  void clear();
+
+  /**
+   * Analyze an array element directly (for standalone array formatting).
+   * @param arr The array to analyze
+   * @param opts Formatting options
+   * @return Metrics for the array
+   */
+  element_metrics analyze_array(const dom::array& arr,
+                                const fractured_json_options& opts);
+
+  /**
+   * Analyze an object element directly (for standalone object formatting).
+   * @param obj The object to analyze
+   * @param opts Formatting options
+   * @return Metrics for the object
+   */
+  element_metrics analyze_object(const dom::object& obj,
+                                 const fractured_json_options& opts);
+
+private:
+  const fractured_json_options* current_opts_ = nullptr;
+
+  /** Recursive analysis implementation */
+  element_metrics analyze_element(const dom::element& elem, size_t depth);
+
+  /** Analyze scalar values (strings, numbers, booleans, null) */
+  element_metrics analyze_scalar(const dom::element& elem);
+
+  /** Analyze an array element */
+  element_metrics analyze_array(const dom::array& arr, size_t depth);
+
+  /** Analyze an object element */
+  element_metrics analyze_object(const dom::object& obj, size_t depth);
+
+  /** Estimate inline length for a string (including quotes and escaping) */
+  size_t estimate_string_length(std::string_view s) const;
+
+  /** Estimate inline length for a number */
+  size_t estimate_number_length(double d) const;
+  size_t estimate_number_length(int64_t i) const;
+  size_t estimate_number_length(uint64_t u) const;
+
+  /**
+   * Check if an array contains uniform objects suitable for table formatting.
+   * @param arr The array to check
+   * @param common_keys Output: keys common to all objects
+   * @return true if the array is suitable for table formatting
+   */
+  bool check_array_uniformity(const dom::array& arr,
+                               std::vector& common_keys) const;
+
+  /**
+   * Compute similarity between two objects.
+   * @return Fraction of keys that are common (0.0 to 1.0)
+   */
+  double compute_object_similarity(const dom::object& a,
+                                   const dom::object& b) const;
+
+  /**
+   * Decide the recommended layout mode based on metrics and options.
+   */
+  layout_mode decide_layout(const element_metrics& metrics,
+                            size_t depth,
+                            size_t available_width) const;
+};
+
+} // namespace internal
+} // namespace simdjson
+
+#endif // SIMDJSON_INTERNAL_JSON_STRUCTURE_ANALYZER_H
+/* end file simdjson/internal/json_structure_analyzer.h */
+/* including simdjson/internal/fractured_formatter.h: #include "simdjson/internal/fractured_formatter.h" */
+/* begin file simdjson/internal/fractured_formatter.h */
+#ifndef SIMDJSON_INTERNAL_FRACTURED_FORMATTER_H
+#define SIMDJSON_INTERNAL_FRACTURED_FORMATTER_H
+
+/* skipped duplicate #include "simdjson/dom/serialization.h" */
+/* skipped duplicate #include "simdjson/dom/fractured_json.h" */
+/* skipped duplicate #include "simdjson/internal/json_structure_analyzer.h" */
+
+namespace simdjson {
+namespace internal {
+
+/**
+ * Fractured JSON formatter using CRTP pattern.
+ *
+ * This formatter intelligently chooses between different layout modes
+ * (inline, compact multiline, table, expanded) based on pre-computed
+ * structure metrics.
+ */
+class fractured_formatter : public base_formatter {
+public:
+  explicit fractured_formatter(const fractured_json_options& opts = {});
+
+  /** CRTP hook: print newline (context-aware) */
+  simdjson_inline void print_newline();
+
+  /** CRTP hook: print indentation */
+  simdjson_inline void print_indents(size_t depth);
+
+  /** CRTP hook: print space (context-aware) */
+  simdjson_inline void print_space();
+
+  /** Set the current layout mode */
+  void set_layout_mode(layout_mode mode);
+
+  /** Get the current layout mode */
+  layout_mode get_layout_mode() const;
+
+  /** Set current depth for formatting decisions */
+  void set_depth(size_t depth);
+
+  /** Get current depth */
+  size_t get_depth() const;
+
+  /** Track current line length for compact multiline decisions */
+  void track_line_length(size_t chars);
+
+  /** Reset line length (after newline) */
+  void reset_line_length();
+
+  /** Get current line length */
+  size_t get_line_length() const;
+
+  /** Check if we should break to a new line in compact mode */
+  bool should_break_line(size_t upcoming_length) const;
+
+  /** Get the options */
+  const fractured_json_options& options() const;
+
+  // Table formatting support
+  /** Begin a table row */
+  void begin_table_row();
+
+  /** End a table row */
+  void end_table_row();
+
+  /** Set column widths for table alignment */
+  void set_column_widths(const std::vector& widths);
+
+  /** Get current column index in table mode */
+  size_t get_column_index() const;
+
+  /** Advance to next column */
+  void next_column();
+
+  /** Add padding to align with column width */
+  void align_to_column_width(size_t actual_width);
+
+private:
+  fractured_json_options options_;
+  layout_mode current_layout_ = layout_mode::EXPANDED;
+  size_t current_depth_ = 0;
+  size_t current_line_length_ = 0;
+
+  // Table state
+  bool in_table_mode_ = false;
+  std::vector column_widths_;
+  size_t current_column_ = 0;
+};
+
+/**
+ * Specialized string builder for fractured JSON formatting.
+ *
+ * This builder performs two passes:
+ * 1. Analyze the structure to compute metrics
+ * 2. Format using the metrics to make layout decisions
+ */
+class fractured_string_builder {
+public:
+  fractured_string_builder(const fractured_json_options& opts = {});
+
+  /** Append a DOM element with fractured formatting */
+  void append(const dom::element& value);
+
+  /** Append a DOM array with fractured formatting */
+  void append(const dom::array& value);
+
+  /** Append a DOM object with fractured formatting */
+  void append(const dom::object& value);
+
+  /** Clear the builder */
+  simdjson_inline void clear();
+
+  /** Get the formatted string */
+  simdjson_inline std::string_view str() const;
+
+private:
+  fractured_formatter format_;
+  structure_analyzer analyzer_;
+  fractured_json_options options_;
+
+  /** Format an element using pre-computed metrics */
+  void format_element(const dom::element& elem, const element_metrics& metrics, size_t depth);
+
+  /** Format an array with the appropriate layout */
+  void format_array(const dom::array& arr, const element_metrics& metrics, size_t depth);
+
+  /** Format an array inline: [1, 2, 3] */
+  void format_array_inline(const dom::array& arr, const element_metrics& metrics);
+
+  /** Format an array with compact multiline: multiple items per line */
+  void format_array_compact_multiline(const dom::array& arr, const element_metrics& metrics, size_t depth);
+
+  /** Format an array as a table */
+  void format_array_as_table(const dom::array& arr, const element_metrics& metrics, size_t depth);
+
+  /** Format an array expanded: one item per line */
+  void format_array_expanded(const dom::array& arr, const element_metrics& metrics, size_t depth);
+
+  /** Format an object with the appropriate layout */
+  void format_object(const dom::object& obj, const element_metrics& metrics, size_t depth);
+
+  /** Format an object inline: {"a": 1, "b": 2} */
+  void format_object_inline(const dom::object& obj, const element_metrics& metrics);
+
+  /** Format an object expanded: one key per line */
+  void format_object_expanded(const dom::object& obj, const element_metrics& metrics, size_t depth);
+
+  /** Format a scalar value */
+  void format_scalar(const dom::element& elem);
+
+  /** Calculate column widths for table formatting */
+  std::vector calculate_column_widths(const dom::array& arr,
+                                               const std::vector& columns) const;
+
+  /** Measure the actual formatted length of a value (for alignment) */
+  size_t measure_value_length(const dom::element& elem) const;
+};
+
+} // namespace internal
+} // namespace simdjson
+
+#endif // SIMDJSON_INTERNAL_FRACTURED_FORMATTER_H
+/* end file simdjson/internal/fractured_formatter.h */
+
+#include 
+#include 
+#include 
+
+namespace simdjson {
+namespace internal {
+
+//
+// Structure Analyzer Implementation
+//
+
+inline element_metrics structure_analyzer::analyze(const dom::element& elem,
+                                                    const fractured_json_options& opts) {
+  current_opts_ = &opts;
+  return analyze_element(elem, 0);
+}
+
+inline void structure_analyzer::clear() {
+  current_opts_ = nullptr;
+}
+
+inline element_metrics structure_analyzer::analyze_array(const dom::array& arr,
+                                                          const fractured_json_options& opts) {
+  current_opts_ = &opts;
+  return analyze_array(arr, 0);
+}
+
+inline element_metrics structure_analyzer::analyze_object(const dom::object& obj,
+                                                           const fractured_json_options& opts) {
+  current_opts_ = &opts;
+  return analyze_object(obj, 0);
+}
+
+inline element_metrics structure_analyzer::analyze_element(const dom::element& elem, size_t depth) {
+  switch (elem.type()) {
+    case dom::element_type::ARRAY: {
+      dom::array arr;
+      if (elem.get_array().get(arr) == SUCCESS) {
+        return analyze_array(arr, depth);
+      }
+      break;
+    }
+    case dom::element_type::OBJECT: {
+      dom::object obj;
+      if (elem.get_object().get(obj) == SUCCESS) {
+        return analyze_object(obj, depth);
+      }
+      break;
+    }
+    default:
+      // Handle all scalar types with a helper
+      return analyze_scalar(elem);
+  }
+  return element_metrics{};
+}
+
+inline element_metrics structure_analyzer::analyze_scalar(const dom::element& elem) {
+  element_metrics metrics;
+  metrics.complexity = 0;
+  metrics.child_count = 0;
+  metrics.can_inline = true;
+  metrics.recommended_layout = layout_mode::INLINE;
+
+  switch (elem.type()) {
+    case dom::element_type::STRING: {
+      std::string_view str;
+      if (elem.get_string().get(str) == SUCCESS) {
+        metrics.estimated_inline_len = estimate_string_length(str);
+      }
+      break;
+    }
+    case dom::element_type::INT64: {
+      int64_t val;
+      if (elem.get_int64().get(val) == SUCCESS) {
+        metrics.estimated_inline_len = estimate_number_length(val);
+      }
+      break;
+    }
+    case dom::element_type::UINT64: {
+      uint64_t val;
+      if (elem.get_uint64().get(val) == SUCCESS) {
+        metrics.estimated_inline_len = estimate_number_length(val);
+      }
+      break;
+    }
+    case dom::element_type::DOUBLE: {
+      double val;
+      if (elem.get_double().get(val) == SUCCESS) {
+        metrics.estimated_inline_len = estimate_number_length(val);
+      }
+      break;
+    }
+    case dom::element_type::BOOL: {
+      bool val;
+      if (elem.get_bool().get(val) == SUCCESS) {
+        metrics.estimated_inline_len = val ? 4 : 5; // "true" or "false"
+      }
+      break;
+    }
+    case dom::element_type::NULL_VALUE:
+      metrics.estimated_inline_len = 4; // "null"
+      break;
+    default:
+      break;
+  }
+
+  return metrics;
+}
+
+inline element_metrics structure_analyzer::analyze_array(const dom::array& arr,
+                                                          size_t depth) {
+  element_metrics metrics;
+  metrics.complexity = 1; // At least 1 for being an array
+  metrics.estimated_inline_len = 2; // "[]"
+  metrics.child_count = 0;
+
+  size_t max_child_complexity = 0;
+  bool first = true;
+
+  for (dom::element child : arr) {
+    if (!first) {
+      metrics.estimated_inline_len += 2; // ", "
+    }
+    first = false;
+
+    element_metrics child_metrics = analyze_element(child, depth + 1);
+    metrics.estimated_inline_len += child_metrics.estimated_inline_len;
+    max_child_complexity = (std::max)(max_child_complexity, child_metrics.complexity);
+    metrics.child_count++;
+    metrics.children.push_back(std::move(child_metrics));
+  }
+
+  // Complexity is 1 + max child complexity
+  metrics.complexity = 1 + max_child_complexity;
+
+  // Check if can inline
+  metrics.can_inline = (metrics.complexity <= current_opts_->max_inline_complexity) &&
+                       (metrics.estimated_inline_len <= current_opts_->max_inline_length);
+
+  // Check for uniform array (table formatting)
+  if (current_opts_->enable_table_format &&
+      metrics.child_count >= current_opts_->min_table_rows) {
+    metrics.is_uniform_array = check_array_uniformity(arr, metrics.common_keys);
+  }
+
+  // Decide layout
+  if (metrics.child_count == 0) {
+    metrics.recommended_layout = layout_mode::INLINE;
+  } else if (metrics.can_inline) {
+    metrics.recommended_layout = layout_mode::INLINE;
+  } else if (metrics.is_uniform_array && !metrics.common_keys.empty()) {
+    metrics.recommended_layout = layout_mode::TABLE;
+  } else if (current_opts_->enable_compact_multiline &&
+             max_child_complexity <= current_opts_->max_compact_array_complexity) {
+    metrics.recommended_layout = layout_mode::COMPACT_MULTILINE;
+  } else {
+    metrics.recommended_layout = layout_mode::EXPANDED;
+  }
+
+  return metrics;
+}
+
+inline element_metrics structure_analyzer::analyze_object(const dom::object& obj,
+                                                           size_t depth) {
+  element_metrics metrics;
+  metrics.complexity = 1;
+  metrics.estimated_inline_len = 2; // "{}"
+  metrics.child_count = 0;
+
+  size_t max_child_complexity = 0;
+  bool first = true;
+
+  for (dom::key_value_pair field : obj) {
+    if (!first) {
+      metrics.estimated_inline_len += 2; // ", "
+    }
+    first = false;
+
+    // Key length: quotes + key + colon + space
+    metrics.estimated_inline_len += estimate_string_length(field.key) + 2;
+
+    element_metrics child_metrics = analyze_element(field.value, depth + 1);
+    metrics.estimated_inline_len += child_metrics.estimated_inline_len;
+    max_child_complexity = (std::max)(max_child_complexity, child_metrics.complexity);
+    metrics.child_count++;
+    metrics.children.push_back(std::move(child_metrics));
+  }
+
+  metrics.complexity = 1 + max_child_complexity;
+
+  metrics.can_inline = (metrics.complexity <= current_opts_->max_inline_complexity) &&
+                       (metrics.estimated_inline_len <= current_opts_->max_inline_length);
+
+  // Objects use inline or expanded (no table/compact for objects)
+  if (metrics.child_count == 0 || metrics.can_inline) {
+    metrics.recommended_layout = layout_mode::INLINE;
+  } else {
+    metrics.recommended_layout = layout_mode::EXPANDED;
+  }
+
+  return metrics;
+}
+
+inline size_t structure_analyzer::estimate_string_length(std::string_view s) const {
+  size_t len = 2; // quotes
+  for (char c : s) {
+    if (c == '"' || c == '\\' || static_cast(c) < 32) {
+      len += 2; // escape sequence (at least)
+    } else {
+      len += 1;
+    }
+  }
+  return len;
+}
+
+inline size_t structure_analyzer::estimate_number_length(double d) const {
+  if (std::isnan(d) || std::isinf(d)) {
+    return 4; // "null" for invalid numbers
+  }
+  // Rough estimate: up to 17 significant digits + sign + decimal point + exponent
+  char buf[32];
+  int len = snprintf(buf, sizeof(buf), "%.17g", d);
+  return len > 0 ? static_cast(len) : 20;
+}
+
+inline size_t structure_analyzer::estimate_number_length(int64_t i) const {
+  if (i == 0) return 1;
+  // Handle INT64_MIN specially to avoid overflow when negating
+  if (i == INT64_MIN) return 20; // "-9223372036854775808" is 20 characters
+  size_t len = (i < 0) ? 1 : 0; // negative sign
+  int64_t abs_val = (i < 0) ? -i : i;
+  while (abs_val > 0) {
+    len++;
+    abs_val /= 10;
+  }
+  return len;
+}
+
+inline size_t structure_analyzer::estimate_number_length(uint64_t u) const {
+  if (u == 0) return 1;
+  size_t len = 0;
+  while (u > 0) {
+    len++;
+    u /= 10;
+  }
+  return len;
+}
+
+inline bool structure_analyzer::check_array_uniformity(const dom::array& arr,
+                                                        std::vector& common_keys) const {
+  common_keys.clear();
+
+  std::set shared_keys;
+  dom::object first_obj;
+  bool have_first = false;
+  size_t object_count = 0;
+
+  for (dom::element elem : arr) {
+    if (elem.type() != dom::element_type::OBJECT) {
+      return false; // Not all elements are objects
+    }
+
+    dom::object obj;
+    if (elem.get_object().get(obj) != SUCCESS) {
+      return false;
+    }
+
+    std::set current_keys;
+    for (dom::key_value_pair field : obj) {
+      current_keys.insert(std::string(field.key));
+    }
+
+    if (!have_first) {
+      shared_keys = current_keys;
+      first_obj = obj;
+      have_first = true;
+    } else {
+      // Check similarity threshold against the first object
+      double similarity = compute_object_similarity(first_obj, obj);
+      if (similarity < current_opts_->table_similarity_threshold) {
+        return false; // Objects are too dissimilar for table format
+      }
+
+      // Intersect with current keys
+      std::set intersection;
+      std::set_intersection(shared_keys.begin(), shared_keys.end(),
+                            current_keys.begin(), current_keys.end(),
+                            std::inserter(intersection, intersection.begin()));
+      shared_keys = intersection;
+    }
+
+    object_count++;
+  }
+
+  if (object_count < current_opts_->min_table_rows) {
+    return false;
+  }
+
+  // Require at least one common key for table formatting
+  if (shared_keys.empty()) {
+    return false;
+  }
+
+  common_keys.assign(shared_keys.begin(), shared_keys.end());
+  return true;
+}
+
+inline double structure_analyzer::compute_object_similarity(const dom::object& a,
+                                                             const dom::object& b) const {
+  std::set keys_a, keys_b;
+  for (dom::key_value_pair field : a) {
+    keys_a.insert(std::string(field.key));
+  }
+  for (dom::key_value_pair field : b) {
+    keys_b.insert(std::string(field.key));
+  }
+
+  std::set intersection;
+  std::set_intersection(keys_a.begin(), keys_a.end(),
+                        keys_b.begin(), keys_b.end(),
+                        std::inserter(intersection, intersection.begin()));
+
+  std::set union_set;
+  std::set_union(keys_a.begin(), keys_a.end(),
+                 keys_b.begin(), keys_b.end(),
+                 std::inserter(union_set, union_set.begin()));
+
+  if (union_set.empty()) return 1.0;
+  return static_cast(intersection.size()) / static_cast(union_set.size());
+}
+
+inline layout_mode structure_analyzer::decide_layout(const element_metrics& metrics,
+                                                      size_t depth,
+                                                      size_t available_width) const {
+  if (metrics.child_count == 0) {
+    return layout_mode::INLINE;
+  }
+
+  // Check inline feasibility
+  size_t indent_width = depth * current_opts_->indent_spaces;
+  if (metrics.can_inline &&
+      metrics.estimated_inline_len + indent_width <= available_width) {
+    return layout_mode::INLINE;
+  }
+
+  // Check table mode
+  if (metrics.is_uniform_array && !metrics.common_keys.empty()) {
+    return layout_mode::TABLE;
+  }
+
+  // Check compact multiline
+  if (current_opts_->enable_compact_multiline &&
+      metrics.complexity <= current_opts_->max_compact_array_complexity + 1) {
+    return layout_mode::COMPACT_MULTILINE;
+  }
+
+  return layout_mode::EXPANDED;
+}
+
+//
+// Fractured Formatter Implementation
+//
+
+inline fractured_formatter::fractured_formatter(const fractured_json_options& opts)
+    : options_(opts), column_widths_{} {}
+
+simdjson_inline void fractured_formatter::print_newline() {
+  if (current_layout_ == layout_mode::INLINE) {
+    return; // No newlines in inline mode
+  }
+  one_char('\n');
+  current_line_length_ = 0;
+}
+
+simdjson_inline void fractured_formatter::print_indents(size_t depth) {
+  if (current_layout_ == layout_mode::INLINE) {
+    return; // No indentation in inline mode
+  }
+  for (size_t i = 0; i < depth * options_.indent_spaces; i++) {
+    one_char(' ');
+    current_line_length_++;
+  }
+}
+
+simdjson_inline void fractured_formatter::print_space() {
+  one_char(' ');
+  current_line_length_++;
+}
+
+inline void fractured_formatter::set_layout_mode(layout_mode mode) {
+  current_layout_ = mode;
+}
+
+inline layout_mode fractured_formatter::get_layout_mode() const {
+  return current_layout_;
+}
+
+inline void fractured_formatter::set_depth(size_t depth) {
+  current_depth_ = depth;
+}
+
+inline size_t fractured_formatter::get_depth() const {
+  return current_depth_;
+}
+
+inline void fractured_formatter::track_line_length(size_t chars) {
+  current_line_length_ += chars;
+}
+
+inline void fractured_formatter::reset_line_length() {
+  current_line_length_ = 0;
+}
+
+inline size_t fractured_formatter::get_line_length() const {
+  return current_line_length_;
+}
+
+inline bool fractured_formatter::should_break_line(size_t upcoming_length) const {
+  return (current_line_length_ + upcoming_length) > options_.max_total_line_length;
+}
+
+inline const fractured_json_options& fractured_formatter::options() const {
+  return options_;
+}
+
+inline void fractured_formatter::begin_table_row() {
+  in_table_mode_ = true;
+  current_column_ = 0;
+}
+
+inline void fractured_formatter::end_table_row() {
+  in_table_mode_ = false;
+  current_column_ = 0;
+}
+
+inline void fractured_formatter::set_column_widths(const std::vector& widths) {
+  column_widths_ = widths;
+}
+
+inline size_t fractured_formatter::get_column_index() const {
+  return current_column_;
+}
+
+inline void fractured_formatter::next_column() {
+  current_column_++;
+}
+
+inline void fractured_formatter::align_to_column_width(size_t actual_width) {
+  if (current_column_ < column_widths_.size()) {
+    size_t target_width = column_widths_[current_column_];
+    while (actual_width < target_width) {
+      one_char(' ');
+      actual_width++;
+      current_line_length_++;
+    }
+  }
+}
+
+//
+// Fractured String Builder Implementation
+//
+
+inline fractured_string_builder::fractured_string_builder(const fractured_json_options& opts)
+    : format_(opts), analyzer_{}, options_(opts) {}
+
+inline void fractured_string_builder::append(const dom::element& value) {
+  // Phase 1: Analyze structure (metrics tree is built recursively)
+  element_metrics root_metrics = analyzer_.analyze(value, options_);
+
+  // Phase 2: Format using metrics tree (passed through recursion)
+  format_element(value, root_metrics, 0);
+}
+
+inline void fractured_string_builder::append(const dom::array& value) {
+  // Analyze the array to get proper metrics with children
+  element_metrics metrics = analyzer_.analyze_array(value, options_);
+  format_array(value, metrics, 0);
+}
+
+inline void fractured_string_builder::append(const dom::object& value) {
+  // Analyze the object to get proper metrics with children
+  element_metrics metrics = analyzer_.analyze_object(value, options_);
+  format_object(value, metrics, 0);
+}
+
+simdjson_inline void fractured_string_builder::clear() {
+  format_.clear();
+  analyzer_.clear();
+}
+
+simdjson_inline std::string_view fractured_string_builder::str() const {
+  return format_.str();
+}
+
+inline void fractured_string_builder::format_element(const dom::element& elem,
+                                                       const element_metrics& metrics,
+                                                       size_t depth) {
+  switch (elem.type()) {
+    case dom::element_type::ARRAY: {
+      dom::array arr;
+      if (elem.get_array().get(arr) == SUCCESS) {
+        format_array(arr, metrics, depth);
+      }
+      break;
+    }
+    case dom::element_type::OBJECT: {
+      dom::object obj;
+      if (elem.get_object().get(obj) == SUCCESS) {
+        format_object(obj, metrics, depth);
+      }
+      break;
+    }
+    default:
+      format_scalar(elem);
+      break;
+  }
+}
+
+inline void fractured_string_builder::format_array(const dom::array& arr,
+                                                    const element_metrics& metrics,
+                                                    size_t depth) {
+  switch (metrics.recommended_layout) {
+    case layout_mode::INLINE:
+      format_array_inline(arr, metrics);
+      break;
+    case layout_mode::COMPACT_MULTILINE:
+      format_array_compact_multiline(arr, metrics, depth);
+      break;
+    case layout_mode::TABLE:
+      format_array_as_table(arr, metrics, depth);
+      break;
+    case layout_mode::EXPANDED:
+    default:
+      format_array_expanded(arr, metrics, depth);
+      break;
+  }
+}
+
+inline void fractured_string_builder::format_array_inline(const dom::array& arr,
+                                                            const element_metrics& metrics) {
+  layout_mode prev_layout = format_.get_layout_mode();
+  format_.set_layout_mode(layout_mode::INLINE);
+
+  format_.start_array();
+
+  bool first = true;
+  bool empty = true;
+  size_t child_idx = 0;
+  for (dom::element elem : arr) {
+    empty = false;
+    if (!first) {
+      format_.comma();
+      if (options_.comma_padding) {
+        format_.print_space();
+      }
+    } else if (options_.simple_bracket_padding) {
+      format_.print_space();
+    }
+    first = false;
+    const element_metrics& child_metrics = (child_idx < metrics.children.size())
+        ? metrics.children[child_idx] : element_metrics{};
+    format_element(elem, child_metrics, 0);
+    child_idx++;
+  }
+
+  if (options_.simple_bracket_padding && !empty) {
+    format_.print_space();
+  }
+  format_.end_array();
+
+  format_.set_layout_mode(prev_layout);
+}
+
+inline void fractured_string_builder::format_array_compact_multiline(const dom::array& arr,
+                                                                       const element_metrics& metrics,
+                                                                       size_t depth) {
+  format_.start_array();
+  format_.print_newline();
+  format_.print_indents(depth + 1);
+
+  size_t items_on_line = 0;
+  bool first = true;
+  size_t child_idx = 0;
+
+  for (dom::element elem : arr) {
+    if (!first) {
+      format_.comma();
+
+      // Check if we should break to new line
+      if (items_on_line >= options_.max_items_per_line ||
+          format_.should_break_line(20)) { // 20 is rough estimate for next item
+        format_.print_newline();
+        format_.print_indents(depth + 1);
+        items_on_line = 0;
+      } else if (options_.comma_padding) {
+        format_.print_space();
+      }
+    }
+    first = false;
+
+    // Format element inline
+    layout_mode prev_layout = format_.get_layout_mode();
+    format_.set_layout_mode(layout_mode::INLINE);
+    const element_metrics& child_metrics = (child_idx < metrics.children.size())
+        ? metrics.children[child_idx] : element_metrics{};
+    format_element(elem, child_metrics, depth + 1);
+    format_.set_layout_mode(prev_layout);
+
+    items_on_line++;
+    child_idx++;
+  }
+
+  format_.print_newline();
+  format_.print_indents(depth);
+  format_.end_array();
+}
+
+inline void fractured_string_builder::format_array_as_table(const dom::array& arr,
+                                                             const element_metrics& metrics,
+                                                             size_t depth) {
+  const std::vector& columns = metrics.common_keys;
+  if (columns.empty()) {
+    format_array_expanded(arr, metrics, depth);
+    return;
+  }
+
+  // Calculate column widths for alignment
+  std::vector col_widths = calculate_column_widths(arr, columns);
+  format_.set_column_widths(col_widths);
+
+  format_.start_array();
+  format_.print_newline();
+
+  bool first_row = true;
+  size_t child_idx = 0;
+  for (dom::element elem : arr) {
+    if (!first_row) {
+      format_.comma();
+      format_.print_newline();
+    }
+    first_row = false;
+
+    format_.print_indents(depth + 1);
+    format_.begin_table_row();
+
+    // Format object as inline with aligned columns
+    dom::object obj;
+    if (elem.get_object().get(obj) != SUCCESS) {
+      child_idx++;
+      continue;
+    }
+
+    // Get child metrics for this row (object)
+    const element_metrics& row_metrics = (child_idx < metrics.children.size())
+        ? metrics.children[child_idx] : element_metrics{};
+
+    format_.start_object();
+    if (options_.simple_bracket_padding) {
+      format_.print_space();
+    }
+
+    bool first_col = true;
+    const size_t num_columns = columns.size();
+
+    for (size_t col_idx = 0; col_idx < num_columns; col_idx++) {
+      const std::string& key = columns[col_idx];
+      const bool is_last_col = (col_idx == num_columns - 1);
+
+      if (!first_col) {
+        format_.comma();
+        if (options_.comma_padding) {
+          format_.print_space();
+        }
+      }
+      first_col = false;
+
+      // Write key
+      format_.key(key);
+      if (options_.colon_padding) {
+        format_.print_space();
+      }
+
+      // Find the value for this key and its metrics
+      dom::element value;
+      bool found = false;
+      size_t field_idx = 0;
+      for (dom::key_value_pair field : obj) {
+        if (field.key == key) {
+          value = field.value;
+          found = true;
+          break;
+        }
+        field_idx++;
+      }
+
+      // Write value
+      if (found) {
+        layout_mode prev_layout = format_.get_layout_mode();
+        format_.set_layout_mode(layout_mode::INLINE);
+        const element_metrics& value_metrics = (field_idx < row_metrics.children.size())
+            ? row_metrics.children[field_idx] : element_metrics{};
+        format_element(value, value_metrics, depth + 1);
+        format_.set_layout_mode(prev_layout);
+      } else {
+        format_.null_atom();
+      }
+
+      // Only pad non-last columns to align values across rows
+      if (!is_last_col) {
+        size_t actual_len = found ? measure_value_length(value) : 4; // 4 for "null"
+        size_t target_width = col_widths[col_idx];
+        while (actual_len < target_width) {
+          format_.one_char(' ');
+          actual_len++;
+        }
+      }
+
+      format_.next_column();
+    }
+
+    if (options_.simple_bracket_padding) {
+      format_.print_space();
+    }
+    format_.end_object();
+    format_.end_table_row();
+    child_idx++;
+  }
+
+  format_.print_newline();
+  format_.print_indents(depth);
+  format_.end_array();
+}
+
+inline void fractured_string_builder::format_array_expanded(const dom::array& arr,
+                                                              const element_metrics& metrics,
+                                                              size_t depth) {
+  format_.start_array();
+
+  bool empty = true;
+  bool first = true;
+  size_t child_idx = 0;
+
+  for (dom::element elem : arr) {
+    empty = false;
+    if (!first) {
+      format_.comma();
+    }
+    first = false;
+
+    format_.print_newline();
+    format_.print_indents(depth + 1);
+    const element_metrics& child_metrics = (child_idx < metrics.children.size())
+        ? metrics.children[child_idx] : element_metrics{};
+    format_element(elem, child_metrics, depth + 1);
+    child_idx++;
+  }
+
+  if (!empty) {
+    format_.print_newline();
+    format_.print_indents(depth);
+  }
+  format_.end_array();
+}
+
+inline void fractured_string_builder::format_object(const dom::object& obj,
+                                                     const element_metrics& metrics,
+                                                     size_t depth) {
+  if (metrics.recommended_layout == layout_mode::INLINE || metrics.can_inline) {
+    format_object_inline(obj, metrics);
+  } else {
+    format_object_expanded(obj, metrics, depth);
+  }
+}
+
+inline void fractured_string_builder::format_object_inline(const dom::object& obj,
+                                                             const element_metrics& metrics) {
+  layout_mode prev_layout = format_.get_layout_mode();
+  format_.set_layout_mode(layout_mode::INLINE);
+
+  format_.start_object();
+
+  bool empty = true;
+  bool first = true;
+  size_t child_idx = 0;
+
+  for (dom::key_value_pair field : obj) {
+    empty = false;
+    if (!first) {
+      format_.comma();
+      if (options_.comma_padding) {
+        format_.print_space();
+      }
+    } else if (options_.simple_bracket_padding) {
+      format_.print_space();
+    }
+    first = false;
+
+    format_.key(field.key);
+    if (options_.colon_padding) {
+      format_.print_space();
+    }
+    const element_metrics& child_metrics = (child_idx < metrics.children.size())
+        ? metrics.children[child_idx] : element_metrics{};
+    format_element(field.value, child_metrics, 0);
+    child_idx++;
+  }
+
+  if (options_.simple_bracket_padding && !empty) {
+    format_.print_space();
+  }
+  format_.end_object();
+
+  format_.set_layout_mode(prev_layout);
+}
+
+inline void fractured_string_builder::format_object_expanded(const dom::object& obj,
+                                                               const element_metrics& metrics,
+                                                               size_t depth) {
+  format_.start_object();
+
+  bool empty = true;
+  bool first = true;
+  size_t child_idx = 0;
+
+  for (dom::key_value_pair field : obj) {
+    empty = false;
+    if (!first) {
+      format_.comma();
+    }
+    first = false;
+
+    format_.print_newline();
+    format_.print_indents(depth + 1);
+    format_.key(field.key);
+    if (options_.colon_padding) {
+      format_.print_space();
+    }
+    const element_metrics& child_metrics = (child_idx < metrics.children.size())
+        ? metrics.children[child_idx] : element_metrics{};
+    format_element(field.value, child_metrics, depth + 1);
+    child_idx++;
+  }
+
+  if (!empty) {
+    format_.print_newline();
+    format_.print_indents(depth);
+  }
+  format_.end_object();
+}
+
+inline void fractured_string_builder::format_scalar(const dom::element& elem) {
+  switch (elem.type()) {
+    case dom::element_type::STRING: {
+      std::string_view str;
+      if (elem.get_string().get(str) == SUCCESS) {
+        format_.string(str);
+      }
+      break;
+    }
+    case dom::element_type::INT64: {
+      int64_t val;
+      if (elem.get_int64().get(val) == SUCCESS) {
+        format_.number(val);
+      }
+      break;
+    }
+    case dom::element_type::UINT64: {
+      uint64_t val;
+      if (elem.get_uint64().get(val) == SUCCESS) {
+        format_.number(val);
+      }
+      break;
+    }
+    case dom::element_type::DOUBLE: {
+      double val;
+      if (elem.get_double().get(val) == SUCCESS) {
+        format_.number(val);
+      }
+      break;
+    }
+    case dom::element_type::BOOL: {
+      bool val;
+      if (elem.get_bool().get(val) == SUCCESS) {
+        val ? format_.true_atom() : format_.false_atom();
+      }
+      break;
+    }
+    case dom::element_type::NULL_VALUE:
+      format_.null_atom();
+      break;
+    default:
+      break;
+  }
+}
+
+inline size_t fractured_string_builder::measure_value_length(const dom::element& elem) const {
+  switch (elem.type()) {
+    case dom::element_type::STRING: {
+      std::string_view str;
+      if (elem.get_string().get(str) == SUCCESS) {
+        // Count actual escaped length
+        size_t len = 2; // quotes
+        for (char c : str) {
+          if (c == '"' || c == '\\' || static_cast(c) < 32) {
+            len += 2; // escape sequence
+          } else {
+            len += 1;
+          }
+        }
+        return len;
+      }
+      return 2;
+    }
+    case dom::element_type::INT64: {
+      int64_t val;
+      if (elem.get_int64().get(val) == SUCCESS) {
+        if (val == 0) return 1;
+        // Handle INT64_MIN specially to avoid overflow when negating
+        if (val == INT64_MIN) return 20; // "-9223372036854775808" is 20 characters
+        size_t len = (val < 0) ? 1 : 0;
+        int64_t abs_val = (val < 0) ? -val : val;
+        while (abs_val > 0) { len++; abs_val /= 10; }
+        return len;
+      }
+      return 1;
+    }
+    case dom::element_type::UINT64: {
+      uint64_t val;
+      if (elem.get_uint64().get(val) == SUCCESS) {
+        if (val == 0) return 1;
+        size_t len = 0;
+        while (val > 0) { len++; val /= 10; }
+        return len;
+      }
+      return 1;
+    }
+    case dom::element_type::DOUBLE: {
+      double val;
+      if (elem.get_double().get(val) == SUCCESS) {
+        char buf[32];
+        int len = snprintf(buf, sizeof(buf), "%.17g", val);
+        return len > 0 ? static_cast(len) : 1;
+      }
+      return 1;
+    }
+    case dom::element_type::BOOL: {
+      bool val;
+      if (elem.get_bool().get(val) == SUCCESS) {
+        return val ? 4 : 5; // "true" or "false"
+      }
+      return 5;
+    }
+    case dom::element_type::NULL_VALUE:
+      return 4; // "null"
+    default:
+      return 4;
+  }
+}
+
+inline std::vector fractured_string_builder::calculate_column_widths(
+    const dom::array& arr,
+    const std::vector& columns) const {
+
+  std::vector widths(columns.size(), 0);
+
+  for (dom::element elem : arr) {
+    dom::object obj;
+    if (elem.get_object().get(obj) != SUCCESS) {
+      continue;
+    }
+
+    for (size_t col_idx = 0; col_idx < columns.size(); col_idx++) {
+      const std::string& key = columns[col_idx];
+
+      for (dom::key_value_pair field : obj) {
+        if (field.key == key) {
+          // Measure actual value length
+          size_t len = measure_value_length(field.value);
+          widths[col_idx] = (std::max)(widths[col_idx], len);
+          break;
+        }
+      }
+    }
+  }
+
+  return widths;
+}
+
+} // namespace internal
+
+//
+// Public API Implementation
+//
+
+template 
+std::string fractured_json(T x) {
+  return fractured_json(x, fractured_json_options{});
+}
+
+template 
+std::string fractured_json(T x, const fractured_json_options& options) {
+  internal::fractured_string_builder sb(options);
+  sb.append(x);
+  std::string_view result = sb.str();
+  return std::string(result.data(), result.size());
+}
+
+#if SIMDJSON_EXCEPTIONS
+template 
+std::string fractured_json(simdjson_result x) {
+  if (x.error()) {
+    throw simdjson_error(x.error());
+  }
+  return fractured_json(x.value());
+}
+
+template 
+std::string fractured_json(simdjson_result x, const fractured_json_options& options) {
+  if (x.error()) {
+    throw simdjson_error(x.error());
+  }
+  return fractured_json(x.value(), options);
+}
+#endif
+
+// Explicit template instantiations for common types
+template std::string fractured_json(dom::element x);
+template std::string fractured_json(dom::element x, const fractured_json_options& options);
+template std::string fractured_json(dom::array x);
+template std::string fractured_json(dom::array x, const fractured_json_options& options);
+template std::string fractured_json(dom::object x);
+template std::string fractured_json(dom::object x, const fractured_json_options& options);
+
+#if SIMDJSON_EXCEPTIONS
+template std::string fractured_json(simdjson_result x);
+template std::string fractured_json(simdjson_result x, const fractured_json_options& options);
+#endif
+
+//
+// String-based API for formatting any JSON string
+//
+
+inline std::string fractured_json_string(std::string_view json_str) {
+  return fractured_json_string(json_str, fractured_json_options{});
+}
+
+inline std::string fractured_json_string(std::string_view json_str,
+                                          const fractured_json_options& options) {
+  // Parse the JSON string
+  dom::parser parser;
+  dom::element doc;
+  // Need to pad the string for simdjson
+  auto padded = padded_string(json_str);
+  auto error = parser.parse(padded).get(doc);
+  if (error) {
+    // If parsing fails, return the original string
+    return std::string(json_str);
+  }
+  return fractured_json(doc, options);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_DOM_FRACTURED_JSON_INL_H
+/* end file simdjson/dom/fractured_json-inl.h */
 
 #endif // SIMDJSON_DOM_H
 /* end file simdjson/dom.h */
-/* including simdjson/ondemand.h: #include "simdjson/ondemand.h" */
-/* begin file simdjson/ondemand.h */
-#ifndef SIMDJSON_ONDEMAND_H
-#define SIMDJSON_ONDEMAND_H
+/* including simdjson/builder.h: #include "simdjson/builder.h" */
+/* begin file simdjson/builder.h */
+#ifndef SIMDJSON_BUILDER_H
+#define SIMDJSON_BUILDER_H
 
-/* including simdjson/builtin/ondemand.h: #include "simdjson/builtin/ondemand.h" */
-/* begin file simdjson/builtin/ondemand.h */
-#ifndef SIMDJSON_BUILTIN_ONDEMAND_H
-#define SIMDJSON_BUILTIN_ONDEMAND_H
+/* including simdjson/builtin/builder.h: #include "simdjson/builtin/builder.h" */
+/* begin file simdjson/builtin/builder.h */
+#ifndef SIMDJSON_BUILTIN_BUILDER_H
+#define SIMDJSON_BUILTIN_BUILDER_H
 
 /* including simdjson/builtin.h: #include "simdjson/builtin.h" */
 /* begin file simdjson/builtin.h */
@@ -10305,6 +12118,8 @@ simdjson_inline std::string_view string_builder::str() const {
 #define SIMDJSON_IMPLEMENTATION_ID_westmere 6
 #define SIMDJSON_IMPLEMENTATION_ID_lsx 7
 #define SIMDJSON_IMPLEMENTATION_ID_lasx 8
+//#define SIMDJSON_IMPLEMENTATION_ID_rvv 9
+#define SIMDJSON_IMPLEMENTATION_ID_rvv_vls 10
 
 #define SIMDJSON_IMPLEMENTATION_ID_FOR(IMPL) SIMDJSON_CAT(SIMDJSON_IMPLEMENTATION_ID_, IMPL)
 #define SIMDJSON_IMPLEMENTATION_ID SIMDJSON_IMPLEMENTATION_ID_FOR(SIMDJSON_IMPLEMENTATION)
@@ -10406,22 +12221,27 @@ simdjson_inline std::string_view string_builder::str() const {
 #endif
 
 #ifndef SIMDJSON_IMPLEMENTATION_LASX
-#define SIMDJSON_IMPLEMENTATION_LASX (SIMDJSON_IS_LOONGARCH64 && __loongarch_asx)
+#define SIMDJSON_IMPLEMENTATION_LASX (SIMDJSON_IS_LSX)
 #endif
-#define SIMDJSON_CAN_ALWAYS_RUN_LASX (SIMDJSON_IMPLEMENTATION_LASX)
+#define SIMDJSON_CAN_ALWAYS_RUN_LASX (SIMDJSON_IS_LASX)
 
 #ifndef SIMDJSON_IMPLEMENTATION_LSX
 #if SIMDJSON_CAN_ALWAYS_RUN_LASX
 #define SIMDJSON_IMPLEMENTATION_LSX 0
 #else
-#define SIMDJSON_IMPLEMENTATION_LSX (SIMDJSON_IS_LOONGARCH64 && __loongarch_sx)
+#define SIMDJSON_IMPLEMENTATION_LSX (SIMDJSON_IS_LSX)
 #endif
 #endif
 #define SIMDJSON_CAN_ALWAYS_RUN_LSX (SIMDJSON_IMPLEMENTATION_LSX)
 
+#define SIMDJSON_CAN_ALWAYS_RUN_RVV_VLS SIMDJSON_IS_RVV_VLS
+#ifndef SIMDJSON_IMPLEMENTATION_RVV_VLS
+#define SIMDJSON_IMPLEMENTATION_RVV_VLS SIMDJSON_CAN_ALWAYS_RUN_RVV_VLS
+#endif
+
 // Default Fallback to on unless a builtin implementation has already been selected.
 #ifndef SIMDJSON_IMPLEMENTATION_FALLBACK
-#if SIMDJSON_CAN_ALWAYS_RUN_ARM64 || SIMDJSON_CAN_ALWAYS_RUN_ICELAKE || SIMDJSON_CAN_ALWAYS_RUN_HASWELL || SIMDJSON_CAN_ALWAYS_RUN_WESTMERE || SIMDJSON_CAN_ALWAYS_RUN_PPC64 || SIMDJSON_CAN_ALWAYS_RUN_LSX || SIMDJSON_CAN_ALWAYS_RUN_LASX
+#if SIMDJSON_CAN_ALWAYS_RUN_ARM64 || SIMDJSON_CAN_ALWAYS_RUN_ICELAKE || SIMDJSON_CAN_ALWAYS_RUN_HASWELL || SIMDJSON_CAN_ALWAYS_RUN_WESTMERE || SIMDJSON_CAN_ALWAYS_RUN_PPC64 || SIMDJSON_CAN_ALWAYS_RUN_LSX || SIMDJSON_CAN_ALWAYS_RUN_LASX || SIMDJSON_CAN_ALWAYS_RUN_RVV_VLS
 // if anything at all except fallback can always run, then disable fallback.
 #define SIMDJSON_IMPLEMENTATION_FALLBACK 0
 #else
@@ -10447,6 +12267,8 @@ simdjson_inline std::string_view string_builder::str() const {
 #define SIMDJSON_BUILTIN_IMPLEMENTATION lsx
 #elif SIMDJSON_CAN_ALWAYS_RUN_LASX
 #define SIMDJSON_BUILTIN_IMPLEMENTATION lasx
+#elif SIMDJSON_CAN_ALWAYS_RUN_RVV_VLS
+#define SIMDJSON_BUILTIN_IMPLEMENTATION rvv_vls
 #elif SIMDJSON_CAN_ALWAYS_RUN_FALLBACK
 #define SIMDJSON_BUILTIN_IMPLEMENTATION fallback
 #else
@@ -10478,6 +12300,8 @@ namespace simdjson {
   namespace lsx {}
 #elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(lasx)
   namespace lasx {}
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(rvv_vls)
+  namespace rvv_vls {}
 #else
 #error Unknown SIMDJSON_BUILTIN_IMPLEMENTATION
 #endif
@@ -10592,6 +12416,8 @@ enum instruction_set {
   AVX512VBMI2 = 0x10000,
   LSX = 0x20000,
   LASX = 0x40000,
+  //RVV = 0x80000,
+  RVV_VLS = 0x100000,
 };
 
 } // namespace internal
@@ -11682,6 +13508,44 @@ class implementation final : public simdjson::implementation {
 
 #endif // SIMDJSON_LASX_IMPLEMENTATION_H
 /* end file simdjson/lasx/implementation.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(rvv_vls)
+/* including simdjson/rvv-vls/implementation.h: #include "simdjson/rvv-vls/implementation.h" */
+/* begin file simdjson/rvv-vls/implementation.h */
+#ifndef SIMDJSON_RVV_VLS_IMPLEMENTATION_H
+#define SIMDJSON_RVV_VLS_IMPLEMENTATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/implementation.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+
+/**
+ * @private
+ */
+class implementation final : public simdjson::implementation {
+public:
+  simdjson_inline implementation() : simdjson::implementation(
+      "rvv_vls",
+      "RISC-V V extension",
+      0
+  ) {}
+  simdjson_warn_unused error_code create_dom_parser_implementation(
+    size_t capacity,
+    size_t max_length,
+    std::unique_ptr& dst
+  ) const noexcept final;
+  simdjson_warn_unused error_code minify(const uint8_t *buf, size_t len, uint8_t *dst, size_t &dst_len) const noexcept final;
+  simdjson_warn_unused bool validate_utf8(const char *buf, size_t len) const noexcept final;
+};
+
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_IMPLEMENTATION_H
+/* end file simdjson/rvv-vls/implementation.h */
 #else
 #error Unknown SIMDJSON_BUILTIN_IMPLEMENTATION
 #endif
@@ -12422,6 +14286,7 @@ namespace {
     static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
     static_assert(NUM_CHUNKS == 4, "ARM kernel should use four registers per 64-byte block.");
     const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
     simd8x64(const simd8x64& o) = delete; // no copy allowed
     simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
@@ -12613,10 +14478,12 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #include "simdjson/arm64/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_PPC64 */
 /* amalgamation skipped (editor-only): #include "simdjson/ppc64/begin.h" */
-/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LASX */
 /* amalgamation skipped (editor-only): #include "simdjson/lasx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_RVV_VLS */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_FALLBACK */
 /* amalgamation skipped (editor-only): #include "simdjson/fallback/begin.h" */
 /* amalgamation skipped (editor-only): #else */
@@ -14811,10 +16678,12 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 /* amalgamation skipped (editor-only): #include "simdjson/arm64/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_PPC64 */
 /* amalgamation skipped (editor-only): #include "simdjson/ppc64/begin.h" */
-/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LASX */
 /* amalgamation skipped (editor-only): #include "simdjson/lasx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_RVV_VLS */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_FALLBACK */
 /* amalgamation skipped (editor-only): #include "simdjson/fallback/begin.h" */
 /* amalgamation skipped (editor-only): #else */
@@ -17333,6 +19202,7 @@ namespace simd {
     static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
     static_assert(NUM_CHUNKS == 2, "Haswell kernel should use two registers per 64-byte block.");
     const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
     simd8x64(const simd8x64& o) = delete; // no copy allowed
     simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
@@ -17508,10 +19378,12 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #include "simdjson/arm64/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_PPC64 */
 /* amalgamation skipped (editor-only): #include "simdjson/ppc64/begin.h" */
-/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LASX */
 /* amalgamation skipped (editor-only): #include "simdjson/lasx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_RVV_VLS */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_FALLBACK */
 /* amalgamation skipped (editor-only): #include "simdjson/fallback/begin.h" */
 /* amalgamation skipped (editor-only): #else */
@@ -19985,6 +21857,7 @@ namespace simd {
     static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
     static_assert(NUM_CHUNKS == 1, "Icelake kernel should use one register per 64-byte block.");
     const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
     simd8x64(const simd8x64& o) = delete; // no copy allowed
     simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
@@ -20205,10 +22078,12 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 /* amalgamation skipped (editor-only): #include "simdjson/arm64/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_PPC64 */
 /* amalgamation skipped (editor-only): #include "simdjson/ppc64/begin.h" */
-/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LASX */
 /* amalgamation skipped (editor-only): #include "simdjson/lasx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_RVV_VLS */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_FALLBACK */
 /* amalgamation skipped (editor-only): #include "simdjson/fallback/begin.h" */
 /* amalgamation skipped (editor-only): #else */
@@ -22819,6 +24694,7 @@ template  struct simd8x64 {
   static_assert(NUM_CHUNKS == 4,
                 "PPC64 kernel should use four registers per 64-byte block.");
   const simd8 chunks[NUM_CHUNKS];
+  template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
   simd8x64(const simd8x64 &o) = delete; // no copy allowed
   simd8x64 &
@@ -23017,10 +24893,12 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #include "simdjson/arm64/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_PPC64 */
 /* amalgamation skipped (editor-only): #include "simdjson/ppc64/begin.h" */
-/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LASX */
 /* amalgamation skipped (editor-only): #include "simdjson/lasx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_RVV_VLS */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_FALLBACK */
 /* amalgamation skipped (editor-only): #include "simdjson/fallback/begin.h" */
 /* amalgamation skipped (editor-only): #else */
@@ -25549,6 +27427,7 @@ namespace simd {
     static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
     static_assert(NUM_CHUNKS == 4, "Westmere kernel should use four registers per 64-byte block.");
     const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
     simd8x64(const simd8x64& o) = delete; // no copy allowed
     simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
@@ -25977,6 +27856,7 @@ namespace simd {
     static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
     static_assert(NUM_CHUNKS == 4, "Westmere kernel should use four registers per 64-byte block.");
     const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
     simd8x64(const simd8x64& o) = delete; // no copy allowed
     simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
@@ -26145,10 +28025,12 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #include "simdjson/arm64/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_PPC64 */
 /* amalgamation skipped (editor-only): #include "simdjson/ppc64/begin.h" */
-/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LASX */
 /* amalgamation skipped (editor-only): #include "simdjson/lasx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_RVV_VLS */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_FALLBACK */
 /* amalgamation skipped (editor-only): #include "simdjson/fallback/begin.h" */
 /* amalgamation skipped (editor-only): #else */
@@ -28089,20 +29971,27 @@ SIMDJSON_UNTARGET_REGION
 
 #endif // SIMDJSON_WESTMERE_H
 /* end file simdjson/westmere.h */
-#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(lsx)
-/* including simdjson/lsx.h: #include "simdjson/lsx.h" */
-/* begin file simdjson/lsx.h */
-#ifndef SIMDJSON_LSX_H
-#define SIMDJSON_LSX_H
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(lasx)
+/* including simdjson/lasx.h: #include "simdjson/lasx.h" */
+/* begin file simdjson/lasx.h */
+#ifndef SIMDJSON_LASX_H
+#define SIMDJSON_LASX_H
 
-/* including simdjson/lsx/begin.h: #include "simdjson/lsx/begin.h" */
-/* begin file simdjson/lsx/begin.h */
-/* defining SIMDJSON_IMPLEMENTATION to "lsx" */
-#define SIMDJSON_IMPLEMENTATION lsx
-/* including simdjson/lsx/base.h: #include "simdjson/lsx/base.h" */
-/* begin file simdjson/lsx/base.h */
-#ifndef SIMDJSON_LSX_BASE_H
-#define SIMDJSON_LSX_BASE_H
+/* including simdjson/lasx/begin.h: #include "simdjson/lasx/begin.h" */
+/* begin file simdjson/lasx/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "lasx" */
+#define SIMDJSON_IMPLEMENTATION lasx
+#include  // This is a hack. We should not need to put this include here.
+#if SIMDJSON_CAN_ALWAYS_RUN_LASX
+// nothing needed.
+#else
+SIMDJSON_TARGET_REGION("lasx,lsx")
+#endif
+
+/* including simdjson/lasx/base.h: #include "simdjson/lasx/base.h" */
+/* begin file simdjson/lasx/base.h */
+#ifndef SIMDJSON_LASX_BASE_H
+#define SIMDJSON_LASX_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #include "simdjson/base.h" */
@@ -28110,9 +29999,9 @@ SIMDJSON_UNTARGET_REGION
 
 namespace simdjson {
 /**
- * Implementation for LSX.
+ * Implementation for LASX.
  */
-namespace lsx {
+namespace lasx {
 
 class implementation;
 
@@ -28123,41 +30012,40 @@ template  struct simd8x64;
 } // namespace simd
 } // unnamed namespace
 
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
-#endif // SIMDJSON_LSX_BASE_H
-/* end file simdjson/lsx/base.h */
-/* including simdjson/lsx/intrinsics.h: #include "simdjson/lsx/intrinsics.h" */
-/* begin file simdjson/lsx/intrinsics.h */
-#ifndef SIMDJSON_LSX_INTRINSICS_H
-#define SIMDJSON_LSX_INTRINSICS_H
+#endif // SIMDJSON_LASX_BASE_H
+/* end file simdjson/lasx/base.h */
+/* including simdjson/lasx/intrinsics.h: #include "simdjson/lasx/intrinsics.h" */
+/* begin file simdjson/lasx/intrinsics.h */
+#ifndef SIMDJSON_LASX_INTRINSICS_H
+#define SIMDJSON_LASX_INTRINSICS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-// This should be the correct header whether
-// you use visual studio or other compilers.
 #include 
+#include 
 
-static_assert(sizeof(__m128i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for LoongArch SX");
+static_assert(sizeof(__m256i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for LoongArch ASX");
 
-#endif //  SIMDJSON_LSX_INTRINSICS_H
-/* end file simdjson/lsx/intrinsics.h */
-/* including simdjson/lsx/bitmanipulation.h: #include "simdjson/lsx/bitmanipulation.h" */
-/* begin file simdjson/lsx/bitmanipulation.h */
-#ifndef SIMDJSON_LSX_BITMANIPULATION_H
-#define SIMDJSON_LSX_BITMANIPULATION_H
+#endif //  SIMDJSON_LASX_INTRINSICS_H
+/* end file simdjson/lasx/intrinsics.h */
+/* including simdjson/lasx/bitmanipulation.h: #include "simdjson/lasx/bitmanipulation.h" */
+/* begin file simdjson/lasx/bitmanipulation.h */
+#ifndef SIMDJSON_LASX_BITMANIPULATION_H
+#define SIMDJSON_LASX_BITMANIPULATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/intrinsics.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmask.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmask.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace {
 
 // We sometimes call trailing_zero on inputs that are zero,
@@ -28184,7 +30072,7 @@ simdjson_inline int leading_zeroes(uint64_t input_num) {
 
 /* result might be undefined when input_num is zero */
 simdjson_inline int count_ones(uint64_t input_num) {
-  return __lsx_vpickve2gr_w(__lsx_vpcnt_d(__m128i(v2u64{input_num, 0})), 0);
+  return __lasx_xvpickve2gr_w(__lasx_xvpcnt_d(__m256i(v4u64{input_num, 0, 0, 0})), 0);
 }
 
 simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {
@@ -28193,22 +30081,22 @@ simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *re
 }
 
 } // unnamed namespace
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
-#endif // SIMDJSON_LSX_BITMANIPULATION_H
-/* end file simdjson/lsx/bitmanipulation.h */
-/* including simdjson/lsx/bitmask.h: #include "simdjson/lsx/bitmask.h" */
-/* begin file simdjson/lsx/bitmask.h */
-#ifndef SIMDJSON_LSX_BITMASK_H
-#define SIMDJSON_LSX_BITMASK_H
+#endif // SIMDJSON_LASX_BITMANIPULATION_H
+/* end file simdjson/lasx/bitmanipulation.h */
+/* including simdjson/lasx/bitmask.h: #include "simdjson/lasx/bitmask.h" */
+/* begin file simdjson/lasx/bitmask.h */
+#ifndef SIMDJSON_LASX_BITMASK_H
+#define SIMDJSON_LASX_BITMASK_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace {
 
 //
@@ -28227,26 +30115,26 @@ simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
 }
 
 } // unnamed namespace
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif
-/* end file simdjson/lsx/bitmask.h */
-/* including simdjson/lsx/numberparsing_defs.h: #include "simdjson/lsx/numberparsing_defs.h" */
-/* begin file simdjson/lsx/numberparsing_defs.h */
-#ifndef SIMDJSON_LSX_NUMBERPARSING_DEFS_H
-#define SIMDJSON_LSX_NUMBERPARSING_DEFS_H
+/* end file simdjson/lasx/bitmask.h */
+/* including simdjson/lasx/numberparsing_defs.h: #include "simdjson/lasx/numberparsing_defs.h" */
+/* begin file simdjson/lasx/numberparsing_defs.h */
+#ifndef SIMDJSON_LASX_NUMBERPARSING_DEFS_H
+#define SIMDJSON_LASX_NUMBERPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/intrinsics.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 #include 
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace numberparsing {
 
 // we don't have appropriate instructions, so let us use a scalar function
@@ -28269,7 +30157,7 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 }
 
 } // namespace numberparsing
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #ifndef SIMDJSON_SWAR_NUMBER_PARSING
@@ -28280,46 +30168,46 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 #endif
 #endif
 
-#endif // SIMDJSON_LSX_NUMBERPARSING_DEFS_H
-/* end file simdjson/lsx/numberparsing_defs.h */
-/* including simdjson/lsx/simd.h: #include "simdjson/lsx/simd.h" */
-/* begin file simdjson/lsx/simd.h */
-#ifndef SIMDJSON_LSX_SIMD_H
-#define SIMDJSON_LSX_SIMD_H
+#endif // SIMDJSON_LASX_NUMBERPARSING_DEFS_H
+/* end file simdjson/lasx/numberparsing_defs.h */
+/* including simdjson/lasx/simd.h: #include "simdjson/lasx/simd.h" */
+/* begin file simdjson/lasx/simd.h */
+#ifndef SIMDJSON_LASX_SIMD_H
+#define SIMDJSON_LASX_SIMD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmanipulation.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace {
 namespace simd {
 
   // Forward-declared so they can be used by splat and friends.
   template
   struct base {
-    __m128i value;
+    __m256i value;
 
     // Zero constructor
-    simdjson_inline base() : value{__m128i()} {}
+    simdjson_inline base() : value{__m256i()} {}
 
     // Conversion from SIMD register
-    simdjson_inline base(const __m128i _value) : value(_value) {}
+    simdjson_inline base(const __m256i _value) : value(_value) {}
 
     // Conversion to SIMD register
-    simdjson_inline operator const __m128i&() const { return this->value; }
-    simdjson_inline operator __m128i&() { return this->value; }
-    simdjson_inline operator const v16i8&() const { return (v16i8&)this->value; }
-    simdjson_inline operator v16i8&() { return (v16i8&)this->value; }
+    simdjson_inline operator const __m256i&() const { return this->value; }
+    simdjson_inline operator __m256i&() { return this->value; }
+    simdjson_inline operator const v32i8&() const { return (v32i8&)this->value; }
+    simdjson_inline operator v32i8&() { return (v32i8&)this->value; }
 
     // Bit operations
-    simdjson_inline Child operator|(const Child other) const { return __lsx_vor_v(*this, other); }
-    simdjson_inline Child operator&(const Child other) const { return __lsx_vand_v(*this, other); }
-    simdjson_inline Child operator^(const Child other) const { return __lsx_vxor_v(*this, other); }
-    simdjson_inline Child bit_andnot(const Child other) const { return __lsx_vandn_v(other, *this); }
+    simdjson_inline Child operator|(const Child other) const { return __lasx_xvor_v(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return __lasx_xvand_v(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return __lasx_xvxor_v(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return __lasx_xvandn_v(other, *this); }
     simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
     simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
     simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
@@ -28332,41 +30220,51 @@ namespace simd {
   template>
   struct base8: base> {
     simdjson_inline base8() : base>() {}
-    simdjson_inline base8(const __m128i _value) : base>(_value) {}
+    simdjson_inline base8(const __m256i _value) : base>(_value) {}
 
-    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return __lsx_vseq_b(lhs, rhs); }
+    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return __lasx_xvseq_b(lhs, rhs); }
 
     static const int SIZE = sizeof(base>::value);
 
     template
     simdjson_inline simd8 prev(const simd8 prev_chunk) const {
-      return __lsx_vor_v(__lsx_vbsll_v(*this, N), __lsx_vbsrl_v(prev_chunk, 16 - N));
+        __m256i hi = __lasx_xvbsll_v(*this, N);
+        __m256i lo = __lasx_xvbsrl_v(*this, 16 - N);
+        __m256i tmp = __lasx_xvbsrl_v(prev_chunk, 16 - N);
+        lo = __lasx_xvpermi_q(lo, tmp, 0x21);
+        return __lasx_xvor_v(hi, lo);
     }
   };
 
   // SIMD byte mask type (returned by things like eq and gt)
   template<>
   struct simd8: base8 {
-    static simdjson_inline simd8 splat(bool _value) {
-      return __lsx_vreplgr2vr_b(uint8_t(-(!!_value)));
-    }
+    static simdjson_inline simd8 splat(bool _value) { return __lasx_xvreplgr2vr_b(uint8_t(-(!!_value))); }
 
     simdjson_inline simd8() : base8() {}
-    simdjson_inline simd8(const __m128i _value) : base8(_value) {}
+    simdjson_inline simd8(const __m256i _value) : base8(_value) {}
     // Splat constructor
     simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
 
-    simdjson_inline int to_bitmask() const { return __lsx_vpickve2gr_w(__lsx_vmskltz_b(*this), 0); }
-    simdjson_inline bool any() const { return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(*this), 0); }
+    simdjson_inline int to_bitmask() const {
+      __m256i mask = __lasx_xvmskltz_b(*this);
+      return (__lasx_xvpickve2gr_w(mask, 4) << 16) | (__lasx_xvpickve2gr_w(mask, 0));
+    }
+   simdjson_inline bool any() const {
+      __m256i v = __lasx_xvmsknz_b(*this);
+      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
+    }
     simdjson_inline simd8 operator~() const { return *this ^ true; }
   };
 
   template
   struct base8_numeric: base8 {
-    static simdjson_inline simd8 splat(T _value) { return __lsx_vreplgr2vr_b(_value); }
-    static simdjson_inline simd8 zero() { return __lsx_vldi(0); }
-    static simdjson_inline simd8 load(const T values[16]) {
-      return __lsx_vld(reinterpret_cast(values), 0);
+    static simdjson_inline simd8 splat(T _value) {
+      return __lasx_xvreplgr2vr_b(_value);
+    }
+    static simdjson_inline simd8 zero() { return __lasx_xvldi(0); }
+    static simdjson_inline simd8 load(const T values[32]) {
+      return __lasx_xvld(reinterpret_cast(values), 0);
     }
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     static simdjson_inline simd8 repeat_16(
@@ -28374,22 +30272,24 @@ namespace simd {
       T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
     ) {
       return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15
       );
     }
 
     simdjson_inline base8_numeric() : base8() {}
-    simdjson_inline base8_numeric(const __m128i _value) : base8(_value) {}
+    simdjson_inline base8_numeric(const __m256i _value) : base8(_value) {}
 
     // Store to array
-    simdjson_inline void store(T dst[16]) const {
-      return __lsx_vst(*this, reinterpret_cast<__m128i *>(dst), 0);
+    simdjson_inline void store(T dst[32]) const {
+      return __lasx_xvst(*this, reinterpret_cast<__m256i *>(dst), 0);
     }
 
     // Addition/subtraction are the same for signed and unsigned
-    simdjson_inline simd8 operator+(const simd8 other) const { return __lsx_vadd_b(*this, other); }
-    simdjson_inline simd8 operator-(const simd8 other) const { return __lsx_vsub_b(*this, other); }
+    simdjson_inline simd8 operator+(const simd8 other) const { return __lasx_xvadd_b(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __lasx_xvsub_b(*this, other); }
     simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
     simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
 
@@ -28399,7 +30299,7 @@ namespace simd {
     // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
     template
     simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
-      return __lsx_vshuf_b(lookup_table, lookup_table, *this);
+      return __lasx_xvshuf_b(lookup_table, lookup_table, *this);
     }
 
     // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
@@ -28407,26 +30307,38 @@ namespace simd {
     // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
     // get written.
     template
-    simdjson_inline void compress(uint16_t mask, L * output) const {
+    simdjson_inline void compress(uint32_t mask, L * output) const {
       using internal::thintable_epi8;
       using internal::BitsSetTable256mul2;
       using internal::pshufb_combine_table;
       // this particular implementation was inspired by haswell
-      // lsx do it in 2 steps, first 8 bytes and then second 8 bytes...
+      // lasx do it in 4 steps, first 8 bytes and then second 8 bytes...
       uint8_t mask1 = uint8_t(mask); // least significant 8 bits
-      uint8_t mask2 = uint8_t(mask >> 8); // second least significant 8 bits
-      // next line just loads the 64-bit values thintable_epi8[mask1] and
-      // thintable_epi8[mask2] into a 128-bit register.
-      __m128i shufmask = {int64_t(thintable_epi8[mask1]), int64_t(thintable_epi8[mask2]) + 0x0808080808080808};
+      uint8_t mask2 = uint8_t(mask >> 8); // second significant 8 bits
+      uint8_t mask3 = uint8_t(mask >> 16); // ...
+      uint8_t mask4 = uint8_t(mask >> 24); // ...
+      // next line just loads the 64-bit values thintable_epi8[mask{1,2,3,4}]
+      // into a 256-bit register.
+      __m256i shufmask = {int64_t(thintable_epi8[mask1]), int64_t(thintable_epi8[mask2]) + 0x0808080808080808, int64_t(thintable_epi8[mask3]), int64_t(thintable_epi8[mask4]) + 0x0808080808080808};
       // this is the version "nearly pruned"
-      __m128i pruned = __lsx_vshuf_b(*this, *this, shufmask);
+      __m256i pruned = __lasx_xvshuf_b(*this, *this, shufmask);
       // we still need to put the  pieces back together.
       // we compute the popcount of the first words:
       int pop1 = BitsSetTable256mul2[mask1];
+      int pop2 = BitsSetTable256mul2[mask2];
+      int pop3 = BitsSetTable256mul2[mask3];
+
       // then load the corresponding mask
-      __m128i compactmask = __lsx_vldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop1 * 8);
-      __m128i answer = __lsx_vshuf_b(pruned, pruned, compactmask);
-      __lsx_vst(answer, reinterpret_cast(output), 0);
+      __m256i masklo = __lasx_xvldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop1 * 8);
+      __m256i maskhi = __lasx_xvldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop3 * 8);
+      __m256i compactmask = __lasx_xvpermi_q(maskhi, masklo, 0x20);
+      __m256i answer = __lasx_xvshuf_b(pruned, pruned, compactmask);
+      __lasx_xvst(answer, reinterpret_cast(output), 0);
+      uint64_t value3 = __lasx_xvpickve2gr_du(answer, 2);
+      uint64_t value4 = __lasx_xvpickve2gr_du(answer, 3);
+      uint64_t *pos = reinterpret_cast(reinterpret_cast(output) + 16 - (pop1 + pop2) / 2);
+      pos[0] = value3;
+      pos[1] = value4;
     }
 
     template
@@ -28448,18 +30360,22 @@ namespace simd {
   template<>
   struct simd8 : base8_numeric {
     simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
     // Splat constructor
     simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
     // Array constructor
-    simdjson_inline simd8(const int8_t values[16]) : simd8(load(values)) {}
+    simdjson_inline simd8(const int8_t values[32]) : simd8(load(values)) {}
     // Member-by-member initialization
     simdjson_inline simd8(
       int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
-      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15,
+      int8_t v16, int8_t v17, int8_t v18, int8_t v19, int8_t v20, int8_t v21, int8_t v22, int8_t v23,
+      int8_t v24, int8_t v25, int8_t v26, int8_t v27, int8_t v28, int8_t v29, int8_t v30, int8_t v31
     ) : simd8({
       v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15
+      v8, v9, v10,v11,v12,v13,v14,v15,
+      v16,v17,v18,v19,v20,v21,v22,v23,
+      v24,v25,v26,v27,v28,v29,v30,v31
       }) {}
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
@@ -28467,34 +30383,40 @@ namespace simd {
       int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
     ) {
       return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15
       );
     }
 
     // Order-sensitive comparisons
-    simdjson_inline simd8 max_val(const simd8 other) const { return __lsx_vmax_b(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return __lsx_vmin_b(*this, other); }
-    simdjson_inline simd8 operator>(const simd8 other) const { return __lsx_vslt_b(other, *this); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return __lsx_vslt_b(*this, other); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lasx_xvmax_b(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lasx_xvmin_b(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return __lasx_xvslt_b(other, *this); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return __lasx_xvslt_b(*this, other); }
   };
 
   // Unsigned bytes
   template<>
   struct simd8: base8_numeric {
     simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
     // Splat constructor
     simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
     // Array constructor
-    simdjson_inline simd8(const uint8_t values[16]) : simd8(load(values)) {}
+    simdjson_inline simd8(const uint8_t values[32]) : simd8(load(values)) {}
     // Member-by-member initialization
     simdjson_inline simd8(
       uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
-      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
-    ) : simd8(__m128i(v16u8{
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15,
+      uint8_t v16, uint8_t v17, uint8_t v18, uint8_t v19, uint8_t v20, uint8_t v21, uint8_t v22, uint8_t v23,
+      uint8_t v24, uint8_t v25, uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30, uint8_t v31
+    ) : simd8(__m256i(v32u8{
       v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15
+      v8, v9, v10,v11,v12,v13,v14,v15,
+      v16,v17,v18,v19,v20,v21,v22,v23,
+      v24,v25,v26,v27,v28,v29,v30,v31
     })) {}
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
@@ -28502,18 +30424,20 @@ namespace simd {
       uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
     ) {
       return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15
       );
     }
 
     // Saturated math
-    simdjson_inline simd8 saturating_add(const simd8 other) const { return __lsx_vsadd_bu(*this, other); }
-    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __lsx_vssub_bu(*this, other); }
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return __lasx_xvsadd_bu(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __lasx_xvssub_bu(*this, other); }
 
     // Order-specific operations
-    simdjson_inline simd8 max_val(const simd8 other) const { return __lsx_vmax_bu(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return __lsx_vmin_bu(other, *this); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lasx_xvmax_bu(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lasx_xvmin_bu(other, *this); }
     // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
     simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
     // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
@@ -28528,96 +30452,85 @@ namespace simd {
     simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
     simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
     simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
-    simdjson_inline bool is_ascii() const { return 0 == __lsx_vpickve2gr_w(__lsx_vmskltz_b(*this), 0); }
-    simdjson_inline bool bits_not_set_anywhere() const { return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(*this), 0); }
+    simdjson_inline bool is_ascii() const {
+      __m256i mask = __lasx_xvmskltz_b(*this);
+      return (0 == __lasx_xvpickve2gr_w(mask, 0)) && (0 == __lasx_xvpickve2gr_w(mask, 4));
+    }
+    simdjson_inline bool bits_not_set_anywhere() const {
+      __m256i v = __lasx_xvmsknz_b(*this);
+      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
+    }
     simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
     simdjson_inline bool bits_not_set_anywhere(simd8 bits) const {
-      return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(__lsx_vand_v(*this, bits)), 0);
+      __m256i v = __lasx_xvmsknz_b(__lasx_xvand_v(*this, bits));
+      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
     }
     simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
     template
-    simdjson_inline simd8 shr() const { return simd8(__lsx_vsrli_b(*this, N)); }
+    simdjson_inline simd8 shr() const { return simd8(__lasx_xvsrli_b(*this, N)); }
     template
-    simdjson_inline simd8 shl() const { return simd8(__lsx_vslli_b(*this, N)); }
+    simdjson_inline simd8 shl() const { return simd8(__lasx_xvslli_b(*this, N)); }
   };
 
   template
   struct simd8x64 {
     static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
-    static_assert(NUM_CHUNKS == 4, "LSX kernel should use four registers per 64-byte block.");
+    static_assert(NUM_CHUNKS == 2, "LASX kernel should use two registers per 64-byte block.");
     const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
     simd8x64(const simd8x64& o) = delete; // no copy allowed
     simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
     simd8x64() = delete; // no default constructor allowed
 
-    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
-    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1) : chunks{chunk0, chunk1} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+32)} {}
 
     simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
-      uint16_t mask1 = uint16_t(mask);
-      uint16_t mask2 = uint16_t(mask >> 16);
-      uint16_t mask3 = uint16_t(mask >> 32);
-      uint16_t mask4 = uint16_t(mask >> 48);
-      __m128i zcnt = __lsx_vpcnt_h(__m128i(v2u64{~mask, 0}));
-      uint64_t zcnt1 = __lsx_vpickve2gr_hu(zcnt, 0);
-      uint64_t zcnt2 = __lsx_vpickve2gr_hu(zcnt, 1);
-      uint64_t zcnt3 = __lsx_vpickve2gr_hu(zcnt, 2);
-      uint64_t zcnt4 = __lsx_vpickve2gr_hu(zcnt, 3);
-      uint8_t *voutput = reinterpret_cast(output);
+      uint32_t mask1 = uint32_t(mask);
+      uint32_t mask2 = uint32_t(mask >> 32);
+      __m256i zcnt = __lasx_xvpcnt_w(__m256i(v4u64{~mask, 0, 0, 0}));
+      uint64_t zcnt1 = __lasx_xvpickve2gr_wu(zcnt, 0);
+      uint64_t zcnt2 = __lasx_xvpickve2gr_wu(zcnt, 1);
       // There should be a critical value which processes in scaler is faster.
       if (zcnt1)
-        this->chunks[0].compress(mask1, reinterpret_cast(voutput));
-      voutput += zcnt1;
+        this->chunks[0].compress(mask1, output);
       if (zcnt2)
-        this->chunks[1].compress(mask2, reinterpret_cast(voutput));
-      voutput += zcnt2;
-      if (zcnt3)
-        this->chunks[2].compress(mask3, reinterpret_cast(voutput));
-      voutput += zcnt3;
-      if (zcnt4)
-        this->chunks[3].compress(mask4, reinterpret_cast(voutput));
-      voutput += zcnt4;
-      return reinterpret_cast(voutput) - reinterpret_cast(output);
+        this->chunks[1].compress(mask2, output + zcnt1);
+      return zcnt1 + zcnt2;
     }
 
     simdjson_inline void store(T ptr[64]) const {
       this->chunks[0].store(ptr+sizeof(simd8)*0);
       this->chunks[1].store(ptr+sizeof(simd8)*1);
-      this->chunks[2].store(ptr+sizeof(simd8)*2);
-      this->chunks[3].store(ptr+sizeof(simd8)*3);
     }
 
     simdjson_inline uint64_t to_bitmask() const {
-      __m128i mask1 = __lsx_vmskltz_b(this->chunks[0]);
-      __m128i mask2 = __lsx_vmskltz_b(this->chunks[1]);
-      __m128i mask3 = __lsx_vmskltz_b(this->chunks[2]);
-      __m128i mask4 = __lsx_vmskltz_b(this->chunks[3]);
-      mask1 = __lsx_vilvl_h(mask2, mask1);
-      mask2 = __lsx_vilvl_h(mask4, mask3);
-      return __lsx_vpickve2gr_du(__lsx_vilvl_w(mask2, mask1), 0);
+      __m256i mask0 = __lasx_xvmskltz_b(this->chunks[0]);
+      __m256i mask1 = __lasx_xvmskltz_b(this->chunks[1]);
+      __m256i mask_tmp = __lasx_xvpickve_w(mask0, 4);
+      __m256i tmp = __lasx_xvpickve_w(mask1, 4);
+      mask0 = __lasx_xvinsve0_w(mask0, mask1, 1);
+      mask_tmp = __lasx_xvinsve0_w(mask_tmp, tmp, 1);
+      return __lasx_xvpickve2gr_du(__lasx_xvpackev_h(mask_tmp, mask0), 0);
     }
 
     simdjson_inline simd8 reduce_or() const {
-      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
+      return this->chunks[0] | this->chunks[1];
     }
 
     simdjson_inline uint64_t eq(const T m) const {
       const simd8 mask = simd8::splat(m);
       return  simd8x64(
         this->chunks[0] == mask,
-        this->chunks[1] == mask,
-        this->chunks[2] == mask,
-        this->chunks[3] == mask
+        this->chunks[1] == mask
       ).to_bitmask();
     }
 
     simdjson_inline uint64_t eq(const simd8x64 &other) const {
       return  simd8x64(
         this->chunks[0] == other.chunks[0],
-        this->chunks[1] == other.chunks[1],
-        this->chunks[2] == other.chunks[2],
-        this->chunks[3] == other.chunks[3]
+        this->chunks[1] == other.chunks[1]
       ).to_bitmask();
     }
 
@@ -28625,33 +30538,31 @@ namespace simd {
       const simd8 mask = simd8::splat(m);
       return  simd8x64(
         this->chunks[0] <= mask,
-        this->chunks[1] <= mask,
-        this->chunks[2] <= mask,
-        this->chunks[3] <= mask
+        this->chunks[1] <= mask
       ).to_bitmask();
     }
   }; // struct simd8x64
 
 } // namespace simd
 } // unnamed namespace
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
-#endif // SIMDJSON_LSX_SIMD_H
-/* end file simdjson/lsx/simd.h */
-/* including simdjson/lsx/stringparsing_defs.h: #include "simdjson/lsx/stringparsing_defs.h" */
-/* begin file simdjson/lsx/stringparsing_defs.h */
-#ifndef SIMDJSON_LSX_STRINGPARSING_DEFS_H
-#define SIMDJSON_LSX_STRINGPARSING_DEFS_H
+#endif // SIMDJSON_LASX_SIMD_H
+/* end file simdjson/lasx/simd.h */
+/* including simdjson/lasx/stringparsing_defs.h: #include "simdjson/lasx/stringparsing_defs.h" */
+/* begin file simdjson/lasx/stringparsing_defs.h */
+#ifndef SIMDJSON_LASX_STRINGPARSING_DEFS_H
+#define SIMDJSON_LASX_STRINGPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/simd.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmanipulation.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace {
 
 using namespace simd;
@@ -28675,17 +30586,11 @@ simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uin
   // this can read up to 31 bytes beyond the buffer size, but we require
   // SIMDJSON_PADDING of padding
   static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
-  simd8 v0(src);
-  simd8 v1(src + sizeof(v0));
-  v0.store(dst);
-  v1.store(dst + sizeof(v0));
-
-  // Getting a 64-bit bitmask is much cheaper than multiple 16-bit bitmasks on LSX; therefore, we
-  // smash them together into a 64-byte mask and get the bitmask from there.
-  uint64_t bs_and_quote = simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
+  simd8 v(src);
+  v.store(dst);
   return {
-    uint32_t(bs_and_quote),      // bs_bits
-    uint32_t(bs_and_quote >> 32) // quote_bits
+      static_cast((v == '\\').to_bitmask()),     // bs_bits
+      static_cast((v == '"').to_bitmask()), // quote_bits
   };
 }
 
@@ -28715,22 +30620,24 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 }
 
 } // unnamed namespace
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
-#endif // SIMDJSON_LSX_STRINGPARSING_DEFS_H
-/* end file simdjson/lsx/stringparsing_defs.h */
+#endif // SIMDJSON_LASX_STRINGPARSING_DEFS_H
+/* end file simdjson/lasx/stringparsing_defs.h */
 
 #define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
-/* end file simdjson/lsx/begin.h */
-/* including simdjson/generic/amalgamated.h for lsx: #include "simdjson/generic/amalgamated.h" */
-/* begin file simdjson/generic/amalgamated.h for lsx */
+
+
+/* end file simdjson/lasx/begin.h */
+/* including simdjson/generic/amalgamated.h for lasx: #include "simdjson/generic/amalgamated.h" */
+/* begin file simdjson/generic/amalgamated.h for lasx */
 #if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_DEPENDENCIES_H)
 #error simdjson/generic/dependencies.h must be included before simdjson/generic/amalgamated.h!
 #endif
 
-/* including simdjson/generic/base.h for lsx: #include "simdjson/generic/base.h" */
-/* begin file simdjson/generic/base.h for lsx */
+/* including simdjson/generic/base.h for lasx: #include "simdjson/generic/base.h" */
+/* begin file simdjson/generic/base.h for lasx */
 #ifndef SIMDJSON_GENERIC_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -28750,10 +30657,12 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #include "simdjson/arm64/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_PPC64 */
 /* amalgamation skipped (editor-only): #include "simdjson/ppc64/begin.h" */
-/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LASX */
 /* amalgamation skipped (editor-only): #include "simdjson/lasx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_RVV_VLS */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_FALLBACK */
 /* amalgamation skipped (editor-only): #include "simdjson/fallback/begin.h" */
 /* amalgamation skipped (editor-only): #else */
@@ -28763,7 +30672,7 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 
 struct open_container;
 class dom_parser_implementation;
@@ -28778,13 +30687,13 @@ enum class number_type {
     big_integer              /// a big integer that does not fit in a 64-bit word
 };
 
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_BASE_H
-/* end file simdjson/generic/base.h for lsx */
-/* including simdjson/generic/jsoncharutils.h for lsx: #include "simdjson/generic/jsoncharutils.h" */
-/* begin file simdjson/generic/jsoncharutils.h for lsx */
+/* end file simdjson/generic/base.h for lasx */
+/* including simdjson/generic/jsoncharutils.h for lasx: #include "simdjson/generic/jsoncharutils.h" */
+/* begin file simdjson/generic/jsoncharutils.h for lasx */
 #ifndef SIMDJSON_GENERIC_JSONCHARUTILS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -28795,7 +30704,7 @@ enum class number_type {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace {
 namespace jsoncharutils {
 
@@ -28885,13 +30794,13 @@ static simdjson_inline uint64_t _umul128(uint64_t ab, uint64_t cd, uint64_t *hi)
 
 } // namespace jsoncharutils
 } // unnamed namespace
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_JSONCHARUTILS_H
-/* end file simdjson/generic/jsoncharutils.h for lsx */
-/* including simdjson/generic/atomparsing.h for lsx: #include "simdjson/generic/atomparsing.h" */
-/* begin file simdjson/generic/atomparsing.h for lsx */
+/* end file simdjson/generic/jsoncharutils.h for lasx */
+/* including simdjson/generic/atomparsing.h for lasx: #include "simdjson/generic/atomparsing.h" */
+/* begin file simdjson/generic/atomparsing.h for lasx */
 #ifndef SIMDJSON_GENERIC_ATOMPARSING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -28903,7 +30812,7 @@ static simdjson_inline uint64_t _umul128(uint64_t ab, uint64_t cd, uint64_t *hi)
 #include 
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace {
 /// @private
 namespace atomparsing {
@@ -28965,13 +30874,13 @@ simdjson_inline bool is_valid_null_atom(const uint8_t *src, size_t len) {
 
 } // namespace atomparsing
 } // unnamed namespace
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ATOMPARSING_H
-/* end file simdjson/generic/atomparsing.h for lsx */
-/* including simdjson/generic/dom_parser_implementation.h for lsx: #include "simdjson/generic/dom_parser_implementation.h" */
-/* begin file simdjson/generic/dom_parser_implementation.h for lsx */
+/* end file simdjson/generic/atomparsing.h for lasx */
+/* including simdjson/generic/dom_parser_implementation.h for lasx: #include "simdjson/generic/dom_parser_implementation.h" */
+/* begin file simdjson/generic/dom_parser_implementation.h for lasx */
 #ifndef SIMDJSON_GENERIC_DOM_PARSER_IMPLEMENTATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -28981,7 +30890,7 @@ simdjson_inline bool is_valid_null_atom(const uint8_t *src, size_t len) {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 
 // expectation: sizeof(open_container) = 64/8.
 struct open_container {
@@ -29023,11 +30932,11 @@ class dom_parser_implementation final : public internal::dom_parser_implementati
 
 };
 
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 
 inline dom_parser_implementation::dom_parser_implementation() noexcept = default;
 inline dom_parser_implementation::dom_parser_implementation(dom_parser_implementation &&other) noexcept = default;
@@ -29057,13 +30966,13 @@ inline simdjson_warn_unused error_code dom_parser_implementation::set_max_depth(
   return SUCCESS;
 }
 
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_DOM_PARSER_IMPLEMENTATION_H
-/* end file simdjson/generic/dom_parser_implementation.h for lsx */
-/* including simdjson/generic/implementation_simdjson_result_base.h for lsx: #include "simdjson/generic/implementation_simdjson_result_base.h" */
-/* begin file simdjson/generic/implementation_simdjson_result_base.h for lsx */
+/* end file simdjson/generic/dom_parser_implementation.h for lasx */
+/* including simdjson/generic/implementation_simdjson_result_base.h for lasx: #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* begin file simdjson/generic/implementation_simdjson_result_base.h for lasx */
 #ifndef SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -29072,7 +30981,7 @@ inline simdjson_warn_unused error_code dom_parser_implementation::set_max_depth(
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 
 // This is a near copy of include/error.h's implementation_simdjson_result_base, except it doesn't use std::pair
 // so we can avoid inlining errors
@@ -29213,13 +31122,13 @@ struct implementation_simdjson_result_base {
   error_code second{UNINITIALIZED}; /** Users should never directly access 'second'. **/
 }; // struct implementation_simdjson_result_base
 
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_H
-/* end file simdjson/generic/implementation_simdjson_result_base.h for lsx */
-/* including simdjson/generic/numberparsing.h for lsx: #include "simdjson/generic/numberparsing.h" */
-/* begin file simdjson/generic/numberparsing.h for lsx */
+/* end file simdjson/generic/implementation_simdjson_result_base.h for lasx */
+/* including simdjson/generic/numberparsing.h for lasx: #include "simdjson/generic/numberparsing.h" */
+/* begin file simdjson/generic/numberparsing.h for lasx */
 #ifndef SIMDJSON_GENERIC_NUMBERPARSING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -29234,7 +31143,7 @@ struct implementation_simdjson_result_base {
 #include 
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace numberparsing {
 
 #ifdef JSON_TEST_NUMBERS
@@ -30549,14 +32458,14 @@ inline std::ostream& operator<<(std::ostream& out, number_type type) noexcept {
     return out;
 }
 
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_NUMBERPARSING_H
-/* end file simdjson/generic/numberparsing.h for lsx */
+/* end file simdjson/generic/numberparsing.h for lasx */
 
-/* including simdjson/generic/implementation_simdjson_result_base-inl.h for lsx: #include "simdjson/generic/implementation_simdjson_result_base-inl.h" */
-/* begin file simdjson/generic/implementation_simdjson_result_base-inl.h for lsx */
+/* including simdjson/generic/implementation_simdjson_result_base-inl.h for lasx: #include "simdjson/generic/implementation_simdjson_result_base-inl.h" */
+/* begin file simdjson/generic/implementation_simdjson_result_base-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -30566,7 +32475,7 @@ inline std::ostream& operator<<(std::ostream& out, number_type type) noexcept {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 
 //
 // internal::implementation_simdjson_result_base inline implementation
@@ -30672,39 +32581,46 @@ template
 simdjson_inline implementation_simdjson_result_base::implementation_simdjson_result_base(T &&value) noexcept
     : implementation_simdjson_result_base(std::forward(value), SUCCESS) {}
 
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_INL_H
-/* end file simdjson/generic/implementation_simdjson_result_base-inl.h for lsx */
-/* end file simdjson/generic/amalgamated.h for lsx */
-/* including simdjson/lsx/end.h: #include "simdjson/lsx/end.h" */
-/* begin file simdjson/lsx/end.h */
+/* end file simdjson/generic/implementation_simdjson_result_base-inl.h for lasx */
+/* end file simdjson/generic/amalgamated.h for lasx */
+/* including simdjson/lasx/end.h: #include "simdjson/lasx/end.h" */
+/* begin file simdjson/lasx/end.h */
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 #undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
-/* undefining SIMDJSON_IMPLEMENTATION from "lsx" */
+/* undefining SIMDJSON_IMPLEMENTATION from "lasx" */
 #undef SIMDJSON_IMPLEMENTATION
-/* end file simdjson/lsx/end.h */
 
-#endif // SIMDJSON_LSX_H
-/* end file simdjson/lsx.h */
-#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(lasx)
-/* including simdjson/lasx.h: #include "simdjson/lasx.h" */
-/* begin file simdjson/lasx.h */
-#ifndef SIMDJSON_LASX_H
-#define SIMDJSON_LASX_H
 
-/* including simdjson/lasx/begin.h: #include "simdjson/lasx/begin.h" */
-/* begin file simdjson/lasx/begin.h */
-/* defining SIMDJSON_IMPLEMENTATION to "lasx" */
-#define SIMDJSON_IMPLEMENTATION lasx
-/* including simdjson/lasx/base.h: #include "simdjson/lasx/base.h" */
-/* begin file simdjson/lasx/base.h */
-#ifndef SIMDJSON_LASX_BASE_H
-#define SIMDJSON_LASX_BASE_H
+#if SIMDJSON_CAN_ALWAYS_RUN_LASX
+// nothing needed.
+#else
+SIMDJSON_UNTARGET_REGION
+#endif
+/* end file simdjson/lasx/end.h */
+
+#endif // SIMDJSON_LASX_H
+/* end file simdjson/lasx.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(lsx)
+/* including simdjson/lsx.h: #include "simdjson/lsx.h" */
+/* begin file simdjson/lsx.h */
+#ifndef SIMDJSON_LSX_H
+#define SIMDJSON_LSX_H
+
+/* including simdjson/lsx/begin.h: #include "simdjson/lsx/begin.h" */
+/* begin file simdjson/lsx/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "lsx" */
+#define SIMDJSON_IMPLEMENTATION lsx
+/* including simdjson/lsx/base.h: #include "simdjson/lsx/base.h" */
+/* begin file simdjson/lsx/base.h */
+#ifndef SIMDJSON_LSX_BASE_H
+#define SIMDJSON_LSX_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #include "simdjson/base.h" */
@@ -30712,9 +32628,9 @@ simdjson_inline implementation_simdjson_result_base::implementation_simdjson_
 
 namespace simdjson {
 /**
- * Implementation for LASX.
+ * Implementation for LSX.
  */
-namespace lasx {
+namespace lsx {
 
 class implementation;
 
@@ -30725,41 +32641,39 @@ template  struct simd8x64;
 } // namespace simd
 } // unnamed namespace
 
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
-#endif // SIMDJSON_LASX_BASE_H
-/* end file simdjson/lasx/base.h */
-/* including simdjson/lasx/intrinsics.h: #include "simdjson/lasx/intrinsics.h" */
-/* begin file simdjson/lasx/intrinsics.h */
-#ifndef SIMDJSON_LASX_INTRINSICS_H
-#define SIMDJSON_LASX_INTRINSICS_H
+#endif // SIMDJSON_LSX_BASE_H
+/* end file simdjson/lsx/base.h */
+/* including simdjson/lsx/intrinsics.h: #include "simdjson/lsx/intrinsics.h" */
+/* begin file simdjson/lsx/intrinsics.h */
+#ifndef SIMDJSON_LSX_INTRINSICS_H
+#define SIMDJSON_LSX_INTRINSICS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-// This should be the correct header whether
-// you use visual studio or other compilers.
-#include 
+#include 
 
-static_assert(sizeof(__m256i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for LoongArch ASX");
+static_assert(sizeof(__m128i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for LoongArch SX");
 
-#endif //  SIMDJSON_LASX_INTRINSICS_H
-/* end file simdjson/lasx/intrinsics.h */
-/* including simdjson/lasx/bitmanipulation.h: #include "simdjson/lasx/bitmanipulation.h" */
-/* begin file simdjson/lasx/bitmanipulation.h */
-#ifndef SIMDJSON_LASX_BITMANIPULATION_H
-#define SIMDJSON_LASX_BITMANIPULATION_H
+#endif //  SIMDJSON_LSX_INTRINSICS_H
+/* end file simdjson/lsx/intrinsics.h */
+/* including simdjson/lsx/bitmanipulation.h: #include "simdjson/lsx/bitmanipulation.h" */
+/* begin file simdjson/lsx/bitmanipulation.h */
+#ifndef SIMDJSON_LSX_BITMANIPULATION_H
+#define SIMDJSON_LSX_BITMANIPULATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/intrinsics.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmask.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmask.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 namespace {
 
 // We sometimes call trailing_zero on inputs that are zero,
@@ -30786,7 +32700,7 @@ simdjson_inline int leading_zeroes(uint64_t input_num) {
 
 /* result might be undefined when input_num is zero */
 simdjson_inline int count_ones(uint64_t input_num) {
-  return __lasx_xvpickve2gr_w(__lasx_xvpcnt_d(__m256i(v4u64{input_num, 0, 0, 0})), 0);
+  return __lsx_vpickve2gr_w(__lsx_vpcnt_d(__m128i(v2u64{input_num, 0})), 0);
 }
 
 simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {
@@ -30795,22 +32709,22 @@ simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *re
 }
 
 } // unnamed namespace
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
-#endif // SIMDJSON_LASX_BITMANIPULATION_H
-/* end file simdjson/lasx/bitmanipulation.h */
-/* including simdjson/lasx/bitmask.h: #include "simdjson/lasx/bitmask.h" */
-/* begin file simdjson/lasx/bitmask.h */
-#ifndef SIMDJSON_LASX_BITMASK_H
-#define SIMDJSON_LASX_BITMASK_H
+#endif // SIMDJSON_LSX_BITMANIPULATION_H
+/* end file simdjson/lsx/bitmanipulation.h */
+/* including simdjson/lsx/bitmask.h: #include "simdjson/lsx/bitmask.h" */
+/* begin file simdjson/lsx/bitmask.h */
+#ifndef SIMDJSON_LSX_BITMASK_H
+#define SIMDJSON_LSX_BITMASK_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 namespace {
 
 //
@@ -30829,26 +32743,26 @@ simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
 }
 
 } // unnamed namespace
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
 #endif
-/* end file simdjson/lasx/bitmask.h */
-/* including simdjson/lasx/numberparsing_defs.h: #include "simdjson/lasx/numberparsing_defs.h" */
-/* begin file simdjson/lasx/numberparsing_defs.h */
-#ifndef SIMDJSON_LASX_NUMBERPARSING_DEFS_H
-#define SIMDJSON_LASX_NUMBERPARSING_DEFS_H
+/* end file simdjson/lsx/bitmask.h */
+/* including simdjson/lsx/numberparsing_defs.h: #include "simdjson/lsx/numberparsing_defs.h" */
+/* begin file simdjson/lsx/numberparsing_defs.h */
+#ifndef SIMDJSON_LSX_NUMBERPARSING_DEFS_H
+#define SIMDJSON_LSX_NUMBERPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/intrinsics.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 #include 
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 namespace numberparsing {
 
 // we don't have appropriate instructions, so let us use a scalar function
@@ -30871,7 +32785,7 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 }
 
 } // namespace numberparsing
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
 #ifndef SIMDJSON_SWAR_NUMBER_PARSING
@@ -30882,46 +32796,46 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 #endif
 #endif
 
-#endif // SIMDJSON_LASX_NUMBERPARSING_DEFS_H
-/* end file simdjson/lasx/numberparsing_defs.h */
-/* including simdjson/lasx/simd.h: #include "simdjson/lasx/simd.h" */
-/* begin file simdjson/lasx/simd.h */
-#ifndef SIMDJSON_LASX_SIMD_H
-#define SIMDJSON_LASX_SIMD_H
+#endif // SIMDJSON_LSX_NUMBERPARSING_DEFS_H
+/* end file simdjson/lsx/numberparsing_defs.h */
+/* including simdjson/lsx/simd.h: #include "simdjson/lsx/simd.h" */
+/* begin file simdjson/lsx/simd.h */
+#ifndef SIMDJSON_LSX_SIMD_H
+#define SIMDJSON_LSX_SIMD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmanipulation.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 namespace {
 namespace simd {
 
   // Forward-declared so they can be used by splat and friends.
   template
   struct base {
-    __m256i value;
+    __m128i value;
 
     // Zero constructor
-    simdjson_inline base() : value{__m256i()} {}
+    simdjson_inline base() : value{__m128i()} {}
 
     // Conversion from SIMD register
-    simdjson_inline base(const __m256i _value) : value(_value) {}
+    simdjson_inline base(const __m128i _value) : value(_value) {}
 
     // Conversion to SIMD register
-    simdjson_inline operator const __m256i&() const { return this->value; }
-    simdjson_inline operator __m256i&() { return this->value; }
-    simdjson_inline operator const v32i8&() const { return (v32i8&)this->value; }
-    simdjson_inline operator v32i8&() { return (v32i8&)this->value; }
+    simdjson_inline operator const __m128i&() const { return this->value; }
+    simdjson_inline operator __m128i&() { return this->value; }
+    simdjson_inline operator const v16i8&() const { return (v16i8&)this->value; }
+    simdjson_inline operator v16i8&() { return (v16i8&)this->value; }
 
     // Bit operations
-    simdjson_inline Child operator|(const Child other) const { return __lasx_xvor_v(*this, other); }
-    simdjson_inline Child operator&(const Child other) const { return __lasx_xvand_v(*this, other); }
-    simdjson_inline Child operator^(const Child other) const { return __lasx_xvxor_v(*this, other); }
-    simdjson_inline Child bit_andnot(const Child other) const { return __lasx_xvandn_v(other, *this); }
+    simdjson_inline Child operator|(const Child other) const { return __lsx_vor_v(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return __lsx_vand_v(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return __lsx_vxor_v(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return __lsx_vandn_v(other, *this); }
     simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
     simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
     simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
@@ -30934,51 +32848,41 @@ namespace simd {
   template>
   struct base8: base> {
     simdjson_inline base8() : base>() {}
-    simdjson_inline base8(const __m256i _value) : base>(_value) {}
+    simdjson_inline base8(const __m128i _value) : base>(_value) {}
 
-    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return __lasx_xvseq_b(lhs, rhs); }
+    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return __lsx_vseq_b(lhs, rhs); }
 
     static const int SIZE = sizeof(base>::value);
 
     template
     simdjson_inline simd8 prev(const simd8 prev_chunk) const {
-        __m256i hi = __lasx_xvbsll_v(*this, N);
-        __m256i lo = __lasx_xvbsrl_v(*this, 16 - N);
-        __m256i tmp = __lasx_xvbsrl_v(prev_chunk, 16 - N);
-        lo = __lasx_xvpermi_q(lo, tmp, 0x21);
-        return __lasx_xvor_v(hi, lo);
+      return __lsx_vor_v(__lsx_vbsll_v(*this, N), __lsx_vbsrl_v(prev_chunk, 16 - N));
     }
   };
 
   // SIMD byte mask type (returned by things like eq and gt)
   template<>
   struct simd8: base8 {
-    static simdjson_inline simd8 splat(bool _value) { return __lasx_xvreplgr2vr_b(uint8_t(-(!!_value))); }
+    static simdjson_inline simd8 splat(bool _value) {
+      return __lsx_vreplgr2vr_b(uint8_t(-(!!_value)));
+    }
 
     simdjson_inline simd8() : base8() {}
-    simdjson_inline simd8(const __m256i _value) : base8(_value) {}
+    simdjson_inline simd8(const __m128i _value) : base8(_value) {}
     // Splat constructor
     simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
 
-    simdjson_inline int to_bitmask() const {
-      __m256i mask = __lasx_xvmskltz_b(*this);
-      return (__lasx_xvpickve2gr_w(mask, 4) << 16) | (__lasx_xvpickve2gr_w(mask, 0));
-    }
-   simdjson_inline bool any() const {
-      __m256i v = __lasx_xvmsknz_b(*this);
-      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
-    }
+    simdjson_inline int to_bitmask() const { return __lsx_vpickve2gr_w(__lsx_vmskltz_b(*this), 0); }
+    simdjson_inline bool any() const { return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(*this), 0); }
     simdjson_inline simd8 operator~() const { return *this ^ true; }
   };
 
   template
   struct base8_numeric: base8 {
-    static simdjson_inline simd8 splat(T _value) {
-      return __lasx_xvreplgr2vr_b(_value);
-    }
-    static simdjson_inline simd8 zero() { return __lasx_xvldi(0); }
-    static simdjson_inline simd8 load(const T values[32]) {
-      return __lasx_xvld(reinterpret_cast(values), 0);
+    static simdjson_inline simd8 splat(T _value) { return __lsx_vreplgr2vr_b(_value); }
+    static simdjson_inline simd8 zero() { return __lsx_vldi(0); }
+    static simdjson_inline simd8 load(const T values[16]) {
+      return __lsx_vld(reinterpret_cast(values), 0);
     }
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     static simdjson_inline simd8 repeat_16(
@@ -30986,24 +32890,22 @@ namespace simd {
       T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
     ) {
       return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15
       );
     }
 
     simdjson_inline base8_numeric() : base8() {}
-    simdjson_inline base8_numeric(const __m256i _value) : base8(_value) {}
+    simdjson_inline base8_numeric(const __m128i _value) : base8(_value) {}
 
     // Store to array
-    simdjson_inline void store(T dst[32]) const {
-      return __lasx_xvst(*this, reinterpret_cast<__m256i *>(dst), 0);
+    simdjson_inline void store(T dst[16]) const {
+      return __lsx_vst(*this, reinterpret_cast<__m128i *>(dst), 0);
     }
 
     // Addition/subtraction are the same for signed and unsigned
-    simdjson_inline simd8 operator+(const simd8 other) const { return __lasx_xvadd_b(*this, other); }
-    simdjson_inline simd8 operator-(const simd8 other) const { return __lasx_xvsub_b(*this, other); }
+    simdjson_inline simd8 operator+(const simd8 other) const { return __lsx_vadd_b(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __lsx_vsub_b(*this, other); }
     simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
     simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
 
@@ -31013,7 +32915,7 @@ namespace simd {
     // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
     template
     simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
-      return __lasx_xvshuf_b(lookup_table, lookup_table, *this);
+      return __lsx_vshuf_b(lookup_table, lookup_table, *this);
     }
 
     // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
@@ -31021,38 +32923,26 @@ namespace simd {
     // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
     // get written.
     template
-    simdjson_inline void compress(uint32_t mask, L * output) const {
+    simdjson_inline void compress(uint16_t mask, L * output) const {
       using internal::thintable_epi8;
       using internal::BitsSetTable256mul2;
       using internal::pshufb_combine_table;
       // this particular implementation was inspired by haswell
-      // lasx do it in 4 steps, first 8 bytes and then second 8 bytes...
+      // lsx do it in 2 steps, first 8 bytes and then second 8 bytes...
       uint8_t mask1 = uint8_t(mask); // least significant 8 bits
-      uint8_t mask2 = uint8_t(mask >> 8); // second significant 8 bits
-      uint8_t mask3 = uint8_t(mask >> 16); // ...
-      uint8_t mask4 = uint8_t(mask >> 24); // ...
-      // next line just loads the 64-bit values thintable_epi8[mask{1,2,3,4}]
-      // into a 256-bit register.
-      __m256i shufmask = {int64_t(thintable_epi8[mask1]), int64_t(thintable_epi8[mask2]) + 0x0808080808080808, int64_t(thintable_epi8[mask3]), int64_t(thintable_epi8[mask4]) + 0x0808080808080808};
+      uint8_t mask2 = uint8_t(mask >> 8); // second least significant 8 bits
+      // next line just loads the 64-bit values thintable_epi8[mask1] and
+      // thintable_epi8[mask2] into a 128-bit register.
+      __m128i shufmask = {int64_t(thintable_epi8[mask1]), int64_t(thintable_epi8[mask2]) + 0x0808080808080808};
       // this is the version "nearly pruned"
-      __m256i pruned = __lasx_xvshuf_b(*this, *this, shufmask);
+      __m128i pruned = __lsx_vshuf_b(*this, *this, shufmask);
       // we still need to put the  pieces back together.
       // we compute the popcount of the first words:
       int pop1 = BitsSetTable256mul2[mask1];
-      int pop2 = BitsSetTable256mul2[mask2];
-      int pop3 = BitsSetTable256mul2[mask3];
-
       // then load the corresponding mask
-      __m256i masklo = __lasx_xvldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop1 * 8);
-      __m256i maskhi = __lasx_xvldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop3 * 8);
-      __m256i compactmask = __lasx_xvpermi_q(maskhi, masklo, 0x20);
-      __m256i answer = __lasx_xvshuf_b(pruned, pruned, compactmask);
-      __lasx_xvst(answer, reinterpret_cast(output), 0);
-      uint64_t value3 = __lasx_xvpickve2gr_du(answer, 2);
-      uint64_t value4 = __lasx_xvpickve2gr_du(answer, 3);
-      uint64_t *pos = reinterpret_cast(reinterpret_cast(output) + 16 - (pop1 + pop2) / 2);
-      pos[0] = value3;
-      pos[1] = value4;
+      __m128i compactmask = __lsx_vldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop1 * 8);
+      __m128i answer = __lsx_vshuf_b(pruned, pruned, compactmask);
+      __lsx_vst(answer, reinterpret_cast(output), 0);
     }
 
     template
@@ -31074,22 +32964,18 @@ namespace simd {
   template<>
   struct simd8 : base8_numeric {
     simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
     // Splat constructor
     simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
     // Array constructor
-    simdjson_inline simd8(const int8_t values[32]) : simd8(load(values)) {}
+    simdjson_inline simd8(const int8_t values[16]) : simd8(load(values)) {}
     // Member-by-member initialization
     simdjson_inline simd8(
       int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
-      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15,
-      int8_t v16, int8_t v17, int8_t v18, int8_t v19, int8_t v20, int8_t v21, int8_t v22, int8_t v23,
-      int8_t v24, int8_t v25, int8_t v26, int8_t v27, int8_t v28, int8_t v29, int8_t v30, int8_t v31
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
     ) : simd8({
       v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15,
-      v16,v17,v18,v19,v20,v21,v22,v23,
-      v24,v25,v26,v27,v28,v29,v30,v31
+      v8, v9, v10,v11,v12,v13,v14,v15
       }) {}
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
@@ -31097,40 +32983,34 @@ namespace simd {
       int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
     ) {
       return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15
       );
     }
 
     // Order-sensitive comparisons
-    simdjson_inline simd8 max_val(const simd8 other) const { return __lasx_xvmax_b(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return __lasx_xvmin_b(*this, other); }
-    simdjson_inline simd8 operator>(const simd8 other) const { return __lasx_xvslt_b(other, *this); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return __lasx_xvslt_b(*this, other); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lsx_vmax_b(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lsx_vmin_b(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return __lsx_vslt_b(other, *this); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return __lsx_vslt_b(*this, other); }
   };
 
   // Unsigned bytes
   template<>
   struct simd8: base8_numeric {
     simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
     // Splat constructor
     simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
     // Array constructor
-    simdjson_inline simd8(const uint8_t values[32]) : simd8(load(values)) {}
+    simdjson_inline simd8(const uint8_t values[16]) : simd8(load(values)) {}
     // Member-by-member initialization
     simdjson_inline simd8(
       uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
-      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15,
-      uint8_t v16, uint8_t v17, uint8_t v18, uint8_t v19, uint8_t v20, uint8_t v21, uint8_t v22, uint8_t v23,
-      uint8_t v24, uint8_t v25, uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30, uint8_t v31
-    ) : simd8(__m256i(v32u8{
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(__m128i(v16u8{
       v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15,
-      v16,v17,v18,v19,v20,v21,v22,v23,
-      v24,v25,v26,v27,v28,v29,v30,v31
+      v8, v9, v10,v11,v12,v13,v14,v15
     })) {}
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
@@ -31138,20 +33018,18 @@ namespace simd {
       uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
     ) {
       return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15
       );
     }
 
     // Saturated math
-    simdjson_inline simd8 saturating_add(const simd8 other) const { return __lasx_xvsadd_bu(*this, other); }
-    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __lasx_xvssub_bu(*this, other); }
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return __lsx_vsadd_bu(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __lsx_vssub_bu(*this, other); }
 
     // Order-specific operations
-    simdjson_inline simd8 max_val(const simd8 other) const { return __lasx_xvmax_bu(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return __lasx_xvmin_bu(other, *this); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lsx_vmax_bu(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lsx_vmin_bu(other, *this); }
     // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
     simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
     // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
@@ -31166,84 +33044,97 @@ namespace simd {
     simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
     simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
     simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
-    simdjson_inline bool is_ascii() const {
-      __m256i mask = __lasx_xvmskltz_b(*this);
-      return (0 == __lasx_xvpickve2gr_w(mask, 0)) && (0 == __lasx_xvpickve2gr_w(mask, 4));
-    }
-    simdjson_inline bool bits_not_set_anywhere() const {
-      __m256i v = __lasx_xvmsknz_b(*this);
-      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
-    }
+    simdjson_inline bool is_ascii() const { return 0 == __lsx_vpickve2gr_w(__lsx_vmskltz_b(*this), 0); }
+    simdjson_inline bool bits_not_set_anywhere() const { return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(*this), 0); }
     simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
     simdjson_inline bool bits_not_set_anywhere(simd8 bits) const {
-      __m256i v = __lasx_xvmsknz_b(__lasx_xvand_v(*this, bits));
-      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
+      return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(__lsx_vand_v(*this, bits)), 0);
     }
     simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
     template
-    simdjson_inline simd8 shr() const { return simd8(__lasx_xvsrli_b(*this, N)); }
+    simdjson_inline simd8 shr() const { return simd8(__lsx_vsrli_b(*this, N)); }
     template
-    simdjson_inline simd8 shl() const { return simd8(__lasx_xvslli_b(*this, N)); }
+    simdjson_inline simd8 shl() const { return simd8(__lsx_vslli_b(*this, N)); }
   };
 
   template
   struct simd8x64 {
     static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
-    static_assert(NUM_CHUNKS == 2, "LASX kernel should use two registers per 64-byte block.");
+    static_assert(NUM_CHUNKS == 4, "LSX kernel should use four registers per 64-byte block.");
     const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
     simd8x64(const simd8x64& o) = delete; // no copy allowed
     simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
     simd8x64() = delete; // no default constructor allowed
 
-    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1) : chunks{chunk0, chunk1} {}
-    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+32)} {}
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
 
     simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
-      uint32_t mask1 = uint32_t(mask);
-      uint32_t mask2 = uint32_t(mask >> 32);
-      __m256i zcnt = __lasx_xvpcnt_w(__m256i(v4u64{~mask, 0, 0, 0}));
-      uint64_t zcnt1 = __lasx_xvpickve2gr_wu(zcnt, 0);
-      uint64_t zcnt2 = __lasx_xvpickve2gr_wu(zcnt, 1);
+      uint16_t mask1 = uint16_t(mask);
+      uint16_t mask2 = uint16_t(mask >> 16);
+      uint16_t mask3 = uint16_t(mask >> 32);
+      uint16_t mask4 = uint16_t(mask >> 48);
+      __m128i zcnt = __lsx_vpcnt_h(__m128i(v2u64{~mask, 0}));
+      uint64_t zcnt1 = __lsx_vpickve2gr_hu(zcnt, 0);
+      uint64_t zcnt2 = __lsx_vpickve2gr_hu(zcnt, 1);
+      uint64_t zcnt3 = __lsx_vpickve2gr_hu(zcnt, 2);
+      uint64_t zcnt4 = __lsx_vpickve2gr_hu(zcnt, 3);
+      uint8_t *voutput = reinterpret_cast(output);
       // There should be a critical value which processes in scaler is faster.
       if (zcnt1)
-        this->chunks[0].compress(mask1, output);
+        this->chunks[0].compress(mask1, reinterpret_cast(voutput));
+      voutput += zcnt1;
       if (zcnt2)
-        this->chunks[1].compress(mask2, output + zcnt1);
-      return zcnt1 + zcnt2;
+        this->chunks[1].compress(mask2, reinterpret_cast(voutput));
+      voutput += zcnt2;
+      if (zcnt3)
+        this->chunks[2].compress(mask3, reinterpret_cast(voutput));
+      voutput += zcnt3;
+      if (zcnt4)
+        this->chunks[3].compress(mask4, reinterpret_cast(voutput));
+      voutput += zcnt4;
+      return reinterpret_cast(voutput) - reinterpret_cast(output);
     }
 
     simdjson_inline void store(T ptr[64]) const {
       this->chunks[0].store(ptr+sizeof(simd8)*0);
       this->chunks[1].store(ptr+sizeof(simd8)*1);
+      this->chunks[2].store(ptr+sizeof(simd8)*2);
+      this->chunks[3].store(ptr+sizeof(simd8)*3);
     }
 
     simdjson_inline uint64_t to_bitmask() const {
-      __m256i mask0 = __lasx_xvmskltz_b(this->chunks[0]);
-      __m256i mask1 = __lasx_xvmskltz_b(this->chunks[1]);
-      __m256i mask_tmp = __lasx_xvpickve_w(mask0, 4);
-      __m256i tmp = __lasx_xvpickve_w(mask1, 4);
-      mask0 = __lasx_xvinsve0_w(mask0, mask1, 1);
-      mask_tmp = __lasx_xvinsve0_w(mask_tmp, tmp, 1);
-      return __lasx_xvpickve2gr_du(__lasx_xvpackev_h(mask_tmp, mask0), 0);
+      __m128i mask1 = __lsx_vmskltz_b(this->chunks[0]);
+      __m128i mask2 = __lsx_vmskltz_b(this->chunks[1]);
+      __m128i mask3 = __lsx_vmskltz_b(this->chunks[2]);
+      __m128i mask4 = __lsx_vmskltz_b(this->chunks[3]);
+      mask1 = __lsx_vilvl_h(mask2, mask1);
+      mask2 = __lsx_vilvl_h(mask4, mask3);
+      return __lsx_vpickve2gr_du(__lsx_vilvl_w(mask2, mask1), 0);
     }
 
     simdjson_inline simd8 reduce_or() const {
-      return this->chunks[0] | this->chunks[1];
+      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
     }
 
     simdjson_inline uint64_t eq(const T m) const {
       const simd8 mask = simd8::splat(m);
       return  simd8x64(
         this->chunks[0] == mask,
-        this->chunks[1] == mask
+        this->chunks[1] == mask,
+        this->chunks[2] == mask,
+        this->chunks[3] == mask
       ).to_bitmask();
     }
 
     simdjson_inline uint64_t eq(const simd8x64 &other) const {
       return  simd8x64(
         this->chunks[0] == other.chunks[0],
-        this->chunks[1] == other.chunks[1]
+        this->chunks[1] == other.chunks[1],
+        this->chunks[2] == other.chunks[2],
+        this->chunks[3] == other.chunks[3]
       ).to_bitmask();
     }
 
@@ -31251,31 +33142,33 @@ namespace simd {
       const simd8 mask = simd8::splat(m);
       return  simd8x64(
         this->chunks[0] <= mask,
-        this->chunks[1] <= mask
+        this->chunks[1] <= mask,
+        this->chunks[2] <= mask,
+        this->chunks[3] <= mask
       ).to_bitmask();
     }
   }; // struct simd8x64
 
 } // namespace simd
 } // unnamed namespace
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
-#endif // SIMDJSON_LASX_SIMD_H
-/* end file simdjson/lasx/simd.h */
-/* including simdjson/lasx/stringparsing_defs.h: #include "simdjson/lasx/stringparsing_defs.h" */
-/* begin file simdjson/lasx/stringparsing_defs.h */
-#ifndef SIMDJSON_LASX_STRINGPARSING_DEFS_H
-#define SIMDJSON_LASX_STRINGPARSING_DEFS_H
+#endif // SIMDJSON_LSX_SIMD_H
+/* end file simdjson/lsx/simd.h */
+/* including simdjson/lsx/stringparsing_defs.h: #include "simdjson/lsx/stringparsing_defs.h" */
+/* begin file simdjson/lsx/stringparsing_defs.h */
+#ifndef SIMDJSON_LSX_STRINGPARSING_DEFS_H
+#define SIMDJSON_LSX_STRINGPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/simd.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmanipulation.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 namespace {
 
 using namespace simd;
@@ -31299,11 +33192,17 @@ simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uin
   // this can read up to 31 bytes beyond the buffer size, but we require
   // SIMDJSON_PADDING of padding
   static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
-  simd8 v(src);
-  v.store(dst);
+  simd8 v0(src);
+  simd8 v1(src + sizeof(v0));
+  v0.store(dst);
+  v1.store(dst + sizeof(v0));
+
+  // Getting a 64-bit bitmask is much cheaper than multiple 16-bit bitmasks on LSX; therefore, we
+  // smash them together into a 64-byte mask and get the bitmask from there.
+  uint64_t bs_and_quote = simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
   return {
-      static_cast((v == '\\').to_bitmask()),     // bs_bits
-      static_cast((v == '"').to_bitmask()), // quote_bits
+    uint32_t(bs_and_quote),      // bs_bits
+    uint32_t(bs_and_quote >> 32) // quote_bits
   };
 }
 
@@ -31328,27 +33227,27 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
   simd8 is_backslash = (v == '\\');
   simd8 is_control = (v < 32);
   return {
-    (is_backslash | is_quote | is_control).to_bitmask()
+    static_cast((is_backslash | is_quote | is_control).to_bitmask())
   };
 }
 
 } // unnamed namespace
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
-#endif // SIMDJSON_LASX_STRINGPARSING_DEFS_H
-/* end file simdjson/lasx/stringparsing_defs.h */
+#endif // SIMDJSON_LSX_STRINGPARSING_DEFS_H
+/* end file simdjson/lsx/stringparsing_defs.h */
 
 #define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
-/* end file simdjson/lasx/begin.h */
-/* including simdjson/generic/amalgamated.h for lasx: #include "simdjson/generic/amalgamated.h" */
-/* begin file simdjson/generic/amalgamated.h for lasx */
+/* end file simdjson/lsx/begin.h */
+/* including simdjson/generic/amalgamated.h for lsx: #include "simdjson/generic/amalgamated.h" */
+/* begin file simdjson/generic/amalgamated.h for lsx */
 #if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_DEPENDENCIES_H)
 #error simdjson/generic/dependencies.h must be included before simdjson/generic/amalgamated.h!
 #endif
 
-/* including simdjson/generic/base.h for lasx: #include "simdjson/generic/base.h" */
-/* begin file simdjson/generic/base.h for lasx */
+/* including simdjson/generic/base.h for lsx: #include "simdjson/generic/base.h" */
+/* begin file simdjson/generic/base.h for lsx */
 #ifndef SIMDJSON_GENERIC_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -31368,10 +33267,12 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #include "simdjson/arm64/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_PPC64 */
 /* amalgamation skipped (editor-only): #include "simdjson/ppc64/begin.h" */
-/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LASX */
 /* amalgamation skipped (editor-only): #include "simdjson/lasx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_RVV_VLS */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/begin.h" */
 /* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_FALLBACK */
 /* amalgamation skipped (editor-only): #include "simdjson/fallback/begin.h" */
 /* amalgamation skipped (editor-only): #else */
@@ -31381,7 +33282,7 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 
 struct open_container;
 class dom_parser_implementation;
@@ -31396,13 +33297,13 @@ enum class number_type {
     big_integer              /// a big integer that does not fit in a 64-bit word
 };
 
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_BASE_H
-/* end file simdjson/generic/base.h for lasx */
-/* including simdjson/generic/jsoncharutils.h for lasx: #include "simdjson/generic/jsoncharutils.h" */
-/* begin file simdjson/generic/jsoncharutils.h for lasx */
+/* end file simdjson/generic/base.h for lsx */
+/* including simdjson/generic/jsoncharutils.h for lsx: #include "simdjson/generic/jsoncharutils.h" */
+/* begin file simdjson/generic/jsoncharutils.h for lsx */
 #ifndef SIMDJSON_GENERIC_JSONCHARUTILS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -31413,7 +33314,7 @@ enum class number_type {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 namespace {
 namespace jsoncharutils {
 
@@ -31503,13 +33404,13 @@ static simdjson_inline uint64_t _umul128(uint64_t ab, uint64_t cd, uint64_t *hi)
 
 } // namespace jsoncharutils
 } // unnamed namespace
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_JSONCHARUTILS_H
-/* end file simdjson/generic/jsoncharutils.h for lasx */
-/* including simdjson/generic/atomparsing.h for lasx: #include "simdjson/generic/atomparsing.h" */
-/* begin file simdjson/generic/atomparsing.h for lasx */
+/* end file simdjson/generic/jsoncharutils.h for lsx */
+/* including simdjson/generic/atomparsing.h for lsx: #include "simdjson/generic/atomparsing.h" */
+/* begin file simdjson/generic/atomparsing.h for lsx */
 #ifndef SIMDJSON_GENERIC_ATOMPARSING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -31521,7 +33422,7 @@ static simdjson_inline uint64_t _umul128(uint64_t ab, uint64_t cd, uint64_t *hi)
 #include 
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 namespace {
 /// @private
 namespace atomparsing {
@@ -31583,13 +33484,13 @@ simdjson_inline bool is_valid_null_atom(const uint8_t *src, size_t len) {
 
 } // namespace atomparsing
 } // unnamed namespace
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ATOMPARSING_H
-/* end file simdjson/generic/atomparsing.h for lasx */
-/* including simdjson/generic/dom_parser_implementation.h for lasx: #include "simdjson/generic/dom_parser_implementation.h" */
-/* begin file simdjson/generic/dom_parser_implementation.h for lasx */
+/* end file simdjson/generic/atomparsing.h for lsx */
+/* including simdjson/generic/dom_parser_implementation.h for lsx: #include "simdjson/generic/dom_parser_implementation.h" */
+/* begin file simdjson/generic/dom_parser_implementation.h for lsx */
 #ifndef SIMDJSON_GENERIC_DOM_PARSER_IMPLEMENTATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -31599,7 +33500,7 @@ simdjson_inline bool is_valid_null_atom(const uint8_t *src, size_t len) {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 
 // expectation: sizeof(open_container) = 64/8.
 struct open_container {
@@ -31641,11 +33542,11 @@ class dom_parser_implementation final : public internal::dom_parser_implementati
 
 };
 
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 
 inline dom_parser_implementation::dom_parser_implementation() noexcept = default;
 inline dom_parser_implementation::dom_parser_implementation(dom_parser_implementation &&other) noexcept = default;
@@ -31675,13 +33576,13 @@ inline simdjson_warn_unused error_code dom_parser_implementation::set_max_depth(
   return SUCCESS;
 }
 
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_DOM_PARSER_IMPLEMENTATION_H
-/* end file simdjson/generic/dom_parser_implementation.h for lasx */
-/* including simdjson/generic/implementation_simdjson_result_base.h for lasx: #include "simdjson/generic/implementation_simdjson_result_base.h" */
-/* begin file simdjson/generic/implementation_simdjson_result_base.h for lasx */
+/* end file simdjson/generic/dom_parser_implementation.h for lsx */
+/* including simdjson/generic/implementation_simdjson_result_base.h for lsx: #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* begin file simdjson/generic/implementation_simdjson_result_base.h for lsx */
 #ifndef SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -31690,7 +33591,7 @@ inline simdjson_warn_unused error_code dom_parser_implementation::set_max_depth(
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 
 // This is a near copy of include/error.h's implementation_simdjson_result_base, except it doesn't use std::pair
 // so we can avoid inlining errors
@@ -31831,13 +33732,13 @@ struct implementation_simdjson_result_base {
   error_code second{UNINITIALIZED}; /** Users should never directly access 'second'. **/
 }; // struct implementation_simdjson_result_base
 
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_H
-/* end file simdjson/generic/implementation_simdjson_result_base.h for lasx */
-/* including simdjson/generic/numberparsing.h for lasx: #include "simdjson/generic/numberparsing.h" */
-/* begin file simdjson/generic/numberparsing.h for lasx */
+/* end file simdjson/generic/implementation_simdjson_result_base.h for lsx */
+/* including simdjson/generic/numberparsing.h for lsx: #include "simdjson/generic/numberparsing.h" */
+/* begin file simdjson/generic/numberparsing.h for lsx */
 #ifndef SIMDJSON_GENERIC_NUMBERPARSING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -31852,7 +33753,7 @@ struct implementation_simdjson_result_base {
 #include 
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 namespace numberparsing {
 
 #ifdef JSON_TEST_NUMBERS
@@ -33167,14 +35068,14 @@ inline std::ostream& operator<<(std::ostream& out, number_type type) noexcept {
     return out;
 }
 
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_NUMBERPARSING_H
-/* end file simdjson/generic/numberparsing.h for lasx */
+/* end file simdjson/generic/numberparsing.h for lsx */
 
-/* including simdjson/generic/implementation_simdjson_result_base-inl.h for lasx: #include "simdjson/generic/implementation_simdjson_result_base-inl.h" */
-/* begin file simdjson/generic/implementation_simdjson_result_base-inl.h for lasx */
+/* including simdjson/generic/implementation_simdjson_result_base-inl.h for lsx: #include "simdjson/generic/implementation_simdjson_result_base-inl.h" */
+/* begin file simdjson/generic/implementation_simdjson_result_base-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -33184,7 +35085,7 @@ inline std::ostream& operator<<(std::ostream& out, number_type type) noexcept {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace lsx {
 
 //
 // internal::implementation_simdjson_result_base inline implementation
@@ -33290,76 +35191,40 @@ template
 simdjson_inline implementation_simdjson_result_base::implementation_simdjson_result_base(T &&value) noexcept
     : implementation_simdjson_result_base(std::forward(value), SUCCESS) {}
 
-} // namespace lasx
+} // namespace lsx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_INL_H
-/* end file simdjson/generic/implementation_simdjson_result_base-inl.h for lasx */
-/* end file simdjson/generic/amalgamated.h for lasx */
-/* including simdjson/lasx/end.h: #include "simdjson/lasx/end.h" */
-/* begin file simdjson/lasx/end.h */
+/* end file simdjson/generic/implementation_simdjson_result_base-inl.h for lsx */
+/* end file simdjson/generic/amalgamated.h for lsx */
+/* including simdjson/lsx/end.h: #include "simdjson/lsx/end.h" */
+/* begin file simdjson/lsx/end.h */
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 #undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
-/* undefining SIMDJSON_IMPLEMENTATION from "lasx" */
+/* undefining SIMDJSON_IMPLEMENTATION from "lsx" */
 #undef SIMDJSON_IMPLEMENTATION
-/* end file simdjson/lasx/end.h */
-
-#endif // SIMDJSON_LASX_H
-/* end file simdjson/lasx.h */
-#else
-#error Unknown SIMDJSON_BUILTIN_IMPLEMENTATION
-#endif
-
-/* undefining SIMDJSON_CONDITIONAL_INCLUDE */
-#undef SIMDJSON_CONDITIONAL_INCLUDE
-
-#endif // SIMDJSON_BUILTIN_H
-/* end file simdjson/builtin.h */
-/* skipped duplicate #include "simdjson/builtin/base.h" */
-
-/* including simdjson/generic/ondemand/dependencies.h: #include "simdjson/generic/ondemand/dependencies.h" */
-/* begin file simdjson/generic/ondemand/dependencies.h */
-#ifdef SIMDJSON_CONDITIONAL_INCLUDE
-#error simdjson/generic/ondemand/dependencies.h must be included before defining SIMDJSON_CONDITIONAL_INCLUDE!
-#endif
-
-#ifndef SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H
-#define SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H
-
-// Internal headers needed for ondemand generics.
-// All includes not under simdjson/generic/ondemand must be here!
-// Otherwise, amalgamation will fail.
-/* skipped duplicate #include "simdjson/concepts.h" */
-/* skipped duplicate #include "simdjson/dom/base.h" // for MINIMAL_DOCUMENT_CAPACITY */
-/* skipped duplicate #include "simdjson/implementation.h" */
-/* skipped duplicate #include "simdjson/padded_string.h" */
-/* skipped duplicate #include "simdjson/padded_string_view.h" */
-/* skipped duplicate #include "simdjson/internal/dom_parser_implementation.h" */
-/* skipped duplicate #include "simdjson/jsonpathutil.h" */
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H
-/* end file simdjson/generic/ondemand/dependencies.h */
-
-/* defining SIMDJSON_CONDITIONAL_INCLUDE */
-#define SIMDJSON_CONDITIONAL_INCLUDE
-
-#if SIMDJSON_BUILTIN_IMPLEMENTATION_IS(arm64)
-/* including simdjson/arm64/ondemand.h: #include "simdjson/arm64/ondemand.h" */
-/* begin file simdjson/arm64/ondemand.h */
-#ifndef SIMDJSON_ARM64_ONDEMAND_H
-#define SIMDJSON_ARM64_ONDEMAND_H
+/* end file simdjson/lsx/end.h */
 
-/* including simdjson/arm64/begin.h: #include "simdjson/arm64/begin.h" */
-/* begin file simdjson/arm64/begin.h */
-/* defining SIMDJSON_IMPLEMENTATION to "arm64" */
-#define SIMDJSON_IMPLEMENTATION arm64
-/* including simdjson/arm64/base.h: #include "simdjson/arm64/base.h" */
-/* begin file simdjson/arm64/base.h */
-#ifndef SIMDJSON_ARM64_BASE_H
-#define SIMDJSON_ARM64_BASE_H
+#endif // SIMDJSON_LSX_H
+/* end file simdjson/lsx.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(rvv_vls)
+/* including simdjson/rvv-vls.h: #include "simdjson/rvv-vls.h" */
+/* begin file simdjson/rvv-vls.h */
+#ifndef SIMDJSON_RVV_VLS_H
+#define SIMDJSON_RVV_VLS_H
+
+
+/* including simdjson/rvv-vls/begin.h: #include "simdjson/rvv-vls/begin.h" */
+/* begin file simdjson/rvv-vls/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "rvv_vls" */
+#define SIMDJSON_IMPLEMENTATION rvv_vls
+/* including simdjson/rvv-vls/base.h: #include "simdjson/rvv-vls/base.h" */
+/* begin file simdjson/rvv-vls/base.h */
+#ifndef SIMDJSON_RVV_VLS_BASE_H
+#define SIMDJSON_RVV_VLS_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #include "simdjson/base.h" */
@@ -33367,53 +35232,63 @@ simdjson_inline implementation_simdjson_result_base::implementation_simdjson_
 
 namespace simdjson {
 /**
- * Implementation for NEON (ARMv8).
+ * RVV-VLS implementation.
  */
-namespace arm64 {
+namespace rvv_vls {
 
 class implementation;
 
-namespace {
-namespace simd {
-template  struct simd8;
-template  struct simd8x64;
-} // namespace simd
-} // unnamed namespace
-
-} // namespace arm64
+} // namespace rvv_vls
 } // namespace simdjson
 
-#endif // SIMDJSON_ARM64_BASE_H
-/* end file simdjson/arm64/base.h */
-/* including simdjson/arm64/intrinsics.h: #include "simdjson/arm64/intrinsics.h" */
-/* begin file simdjson/arm64/intrinsics.h */
-#ifndef SIMDJSON_ARM64_INTRINSICS_H
-#define SIMDJSON_ARM64_INTRINSICS_H
+#endif // SIMDJSON_RVV_VLS_BASE_H
+/* end file simdjson/rvv-vls/base.h */
+/* including simdjson/rvv-vls/intrinsics.h: #include "simdjson/rvv-vls/intrinsics.h" */
+/* begin file simdjson/rvv-vls/intrinsics.h */
+#ifndef SIMDJSON_RVV_VLS_INTRINSICS_H
+#define SIMDJSON_RVV_VLS_INTRINSICS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-// This should be the correct header whether
-// you use visual studio or other compilers.
-#include 
-
-static_assert(sizeof(uint8x16_t) <= simdjson::SIMDJSON_PADDING, "insufficient padding for arm64");
-
-#endif //  SIMDJSON_ARM64_INTRINSICS_H
-/* end file simdjson/arm64/intrinsics.h */
-/* including simdjson/arm64/bitmanipulation.h: #include "simdjson/arm64/bitmanipulation.h" */
-/* begin file simdjson/arm64/bitmanipulation.h */
-#ifndef SIMDJSON_ARM64_BITMANIPULATION_H
-#define SIMDJSON_ARM64_BITMANIPULATION_H
+#include 
+
+#define simdutf_vrgather_u8m1x2(tbl, idx)                                      \
+  __riscv_vcreate_v_u8m1_u8m2(                                                 \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m2_u8m1(idx, 0),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m2_u8m1(idx, 1),          \
+                               __riscv_vsetvlmax_e8m1()))
+
+#define simdutf_vrgather_u8m1x4(tbl, idx)                                      \
+  __riscv_vcreate_v_u8m1_u8m4(                                                 \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 0),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 1),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 2),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 3),          \
+                               __riscv_vsetvlmax_e8m1()))
+
+#if __riscv_zbc
+#include 
+#endif
+
+#endif // SIMDJSON_RVV_VLS_INTRINSICS_H
+/* end file simdjson/rvv-vls/intrinsics.h */
+/* including simdjson/rvv-vls/bitmanipulation.h: #include "simdjson/rvv-vls/bitmanipulation.h" */
+/* begin file simdjson/rvv-vls/bitmanipulation.h */
+#ifndef SIMDJSON_RVV_VLS_BITMANIPULATION_H
+#define SIMDJSON_RVV_VLS_BITMANIPULATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace rvv_vls {
 namespace {
 
 // We sometimes call trailing_zero on inputs that are zero,
@@ -33425,15 +35300,7 @@ SIMDJSON_NO_SANITIZE_UNDEFINED
 // See issue https://github.com/simdjson/simdjson/issues/1965
 SIMDJSON_NO_SANITIZE_MEMORY
 simdjson_inline int trailing_zeroes(uint64_t input_num) {
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-  unsigned long ret;
-  // Search the mask data from least significant bit (LSB)
-  // to the most significant bit (MSB) for a set bit (1).
-  _BitScanForward64(&ret, input_num);
-  return (int)ret;
-#else // SIMDJSON_REGULAR_VISUAL_STUDIO
   return __builtin_ctzll(input_num);
-#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
 }
 
 /* result might be undefined when input_num is zero */
@@ -33441,93 +35308,39 @@ simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
   return input_num & (input_num-1);
 }
 
-// We sometimes call leading_zeroes on inputs that are zero,
-// but the algorithms do not end up using the returned value.
-// Sadly, sanitizers are not smart enough to figure it out.
-// Applies only when SIMDJSON_PREFER_REVERSE_BITS is defined and true.
-// (See below.)
-SIMDJSON_NO_SANITIZE_UNDEFINED
 /* result might be undefined when input_num is zero */
 simdjson_inline int leading_zeroes(uint64_t input_num) {
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-  unsigned long leading_zero = 0;
-  // Search the mask data from most significant bit (MSB)
-  // to least significant bit (LSB) for a set bit (1).
-  if (_BitScanReverse64(&leading_zero, input_num))
-    return (int)(63 - leading_zero);
-  else
-    return 64;
-#else
   return __builtin_clzll(input_num);
-#endif// SIMDJSON_REGULAR_VISUAL_STUDIO
-}
-
-/* result might be undefined when input_num is zero */
-simdjson_inline int count_ones(uint64_t input_num) {
-   return vaddv_u8(vcnt_u8(vcreate_u8(input_num)));
-}
-
-
-#if defined(__GNUC__) // catches clang and gcc
-/**
- * ARM has a fast 64-bit "bit reversal function" that is handy. However,
- * it is not generally available as an intrinsic function under Visual
- * Studio (though this might be changing). Even under clang/gcc, we
- * apparently need to invoke inline assembly.
- */
-/*
- * We use SIMDJSON_PREFER_REVERSE_BITS as a hint that algorithms that
- * work well with bit reversal may use it.
- */
-#define SIMDJSON_PREFER_REVERSE_BITS 1
-
-/* reverse the bits */
-simdjson_inline uint64_t reverse_bits(uint64_t input_num) {
-  uint64_t rev_bits;
-  __asm("rbit %0, %1" : "=r"(rev_bits) : "r"(input_num));
-  return rev_bits;
 }
 
-/**
- * Flips bit at index 63 - lz. Thus if you have 'leading_zeroes' leading zeroes,
- * then this will set to zero the leading bit. It is possible for leading_zeroes to be
- * greating or equal to 63 in which case we trigger undefined behavior, but the output
- * of such undefined behavior is never used.
- **/
-SIMDJSON_NO_SANITIZE_UNDEFINED
-simdjson_inline uint64_t zero_leading_bit(uint64_t rev_bits, int leading_zeroes) {
-  return rev_bits ^ (uint64_t(0x8000000000000000) >> leading_zeroes);
+simdjson_inline long long int count_ones(uint64_t input_num) {
+  return __builtin_popcountll(input_num);
 }
 
-#endif
-
-simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-  *result = value1 + value2;
-  return *result < value1;
-#else
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
+                                uint64_t *result) {
   return __builtin_uaddll_overflow(value1, value2,
                                    reinterpret_cast(result));
-#endif
 }
 
 } // unnamed namespace
-} // namespace arm64
+} // namespace rvv_vls
 } // namespace simdjson
 
-#endif // SIMDJSON_ARM64_BITMANIPULATION_H
-/* end file simdjson/arm64/bitmanipulation.h */
-/* including simdjson/arm64/bitmask.h: #include "simdjson/arm64/bitmask.h" */
-/* begin file simdjson/arm64/bitmask.h */
-#ifndef SIMDJSON_ARM64_BITMASK_H
-#define SIMDJSON_ARM64_BITMASK_H
+#endif // SIMDJSON_RVV_VLS_BITMANIPULATION_H
+/* end file simdjson/rvv-vls/bitmanipulation.h */
+/* including simdjson/rvv-vls/bitmask.h: #include "simdjson/rvv-vls/bitmask.h" */
+/* begin file simdjson/rvv-vls/bitmask.h */
+#ifndef SIMDJSON_RVV_VLS_BITMASK_H
+#define SIMDJSON_RVV_VLS_BITMASK_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/intrinsics.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace rvv_vls {
 namespace {
 
 //
@@ -33536,278 +35349,138 @@ namespace {
 // For example, prefix_xor(00100100) == 00011100
 //
 simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
-  /////////////
-  // We could do this with PMULL, but it is apparently slow.
-  //
-  //#ifdef __ARM_FEATURE_CRYPTO // some ARM processors lack this extension
-  //return vmull_p64(-1ULL, bitmask);
-  //#else
-  // Analysis by @sebpop:
-  // When diffing the assembly for src/stage1_find_marks.cpp I see that the eors are all spread out
-  // in between other vector code, so effectively the extra cycles of the sequence do not matter
-  // because the GPR units are idle otherwise and the critical path is on the FP side.
-  // Also the PMULL requires two extra fmovs: GPR->FP (3 cycles in N1, 5 cycles in A72 )
-  // and FP->GPR (2 cycles on N1 and 5 cycles on A72.)
-  ///////////
+#if __riscv_zbc
+  return __riscv_clmul_64(bitmask, ~(uint64_t)0);
+#elif __riscv_zvbc
+  return __riscv_vmv_x(__riscv_vclmul(__riscv_vmv_s_x_u64m1(bitmask, 1), ~(uint64_t)0, 1));
+#else
   bitmask ^= bitmask << 1;
   bitmask ^= bitmask << 2;
   bitmask ^= bitmask << 4;
   bitmask ^= bitmask << 8;
   bitmask ^= bitmask << 16;
   bitmask ^= bitmask << 32;
+#endif
   return bitmask;
 }
 
 } // unnamed namespace
-} // namespace arm64
-} // namespace simdjson
-
-#endif
-/* end file simdjson/arm64/bitmask.h */
-/* including simdjson/arm64/numberparsing_defs.h: #include "simdjson/arm64/numberparsing_defs.h" */
-/* begin file simdjson/arm64/numberparsing_defs.h */
-#ifndef SIMDJSON_ARM64_NUMBERPARSING_DEFS_H
-#define SIMDJSON_ARM64_NUMBERPARSING_DEFS_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/intrinsics.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-#include 
-
-#if SIMDJSON_REGULAR_VISUAL_STUDIO && SIMDJSON_IS_ARM64
-// __umulh requires intrin.h
-#include 
-#endif // SIMDJSON_REGULAR_VISUAL_STUDIO && SIMDJSON_IS_ARM64
-
-namespace simdjson {
-namespace arm64 {
-namespace numberparsing {
-
-// we don't have SSE, so let us use a scalar function
-// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
-/** @private */
-static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
-  uint64_t val;
-  std::memcpy(&val, chars, sizeof(uint64_t));
-  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
-  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
-  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
-}
-
-simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
-  internal::value128 answer;
-#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
-#if SIMDJSON_IS_ARM64
-  // ARM64 has native support for 64-bit multiplications, no need to emultate
-  answer.high = __umulh(value1, value2);
-  answer.low = value1 * value2;
-#else
-  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
-#endif // SIMDJSON_IS_ARM64
-#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
-  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
-  answer.low = uint64_t(r);
-  answer.high = uint64_t(r >> 64);
-#endif
-  return answer;
-}
-
-} // namespace numberparsing
-} // namespace arm64
+} // namespace rvv_vls
 } // namespace simdjson
 
-#ifndef SIMDJSON_SWAR_NUMBER_PARSING
-#if SIMDJSON_IS_BIG_ENDIAN
-#define SIMDJSON_SWAR_NUMBER_PARSING 0
-#else
-#define SIMDJSON_SWAR_NUMBER_PARSING 1
-#endif
-#endif
+#endif // SIMDJSON_RVV_VLS_BITMASK_H
 
-#endif // SIMDJSON_ARM64_NUMBERPARSING_DEFS_H
-/* end file simdjson/arm64/numberparsing_defs.h */
-/* including simdjson/arm64/simd.h: #include "simdjson/arm64/simd.h" */
-/* begin file simdjson/arm64/simd.h */
-#ifndef SIMDJSON_ARM64_SIMD_H
-#define SIMDJSON_ARM64_SIMD_H
+/* end file simdjson/rvv-vls/bitmask.h */
+/* including simdjson/rvv-vls/simd.h: #include "simdjson/rvv-vls/simd.h" */
+/* begin file simdjson/rvv-vls/simd.h */
+#ifndef SIMDJSON_RVV_VLS_SIMD_H
+#define SIMDJSON_RVV_VLS_SIMD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/bitmanipulation.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace rvv_vls {
 namespace {
 namespace simd {
 
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-namespace {
-// Start of private section with Visual Studio workaround
-
-
-#ifndef simdjson_make_uint8x16_t
-#define simdjson_make_uint8x16_t(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, \
-                             x13, x14, x15, x16)                                   \
-   ([=]() {                                                                        \
-     uint8_t array[16] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8,                    \
-                                 x9, x10, x11, x12, x13, x14, x15, x16};           \
-     return vld1q_u8(array);                                                       \
-   }())
-#endif
-#ifndef simdjson_make_int8x16_t
-#define simdjson_make_int8x16_t(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, \
-                             x13, x14, x15, x16)                                  \
-   ([=]() {                                                                       \
-     int8_t array[16] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8,                    \
-                                 x9, x10, x11, x12, x13, x14, x15, x16};          \
-     return vld1q_s8(array);                                                      \
-   }())
+#if __riscv_v_fixed_vlen >= 512
+  static constexpr size_t VL8 = 512/8;
+  using vint8_t   = vint8m1_t   __attribute__((riscv_rvv_vector_bits(512)));
+  using vuint8_t  = vuint8m1_t  __attribute__((riscv_rvv_vector_bits(512)));
+  using vbool_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+  using vbitmask_t = uint64_t;
+#else
+  static constexpr size_t VL8 = __riscv_v_fixed_vlen/8;
+  using vint8_t   = vint8m1_t   __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen)));
+  using vuint8_t  = vuint8m1_t  __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen)));
+  using vbool_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen/8)));
+  #if __riscv_v_fixed_vlen == 128
+    using vbitmask_t = uint16_t;
+  #elif __riscv_v_fixed_vlen == 256
+    using vbitmask_t = uint32_t;
+  #endif
 #endif
 
-#ifndef simdjson_make_uint8x8_t
-#define simdjson_make_uint8x8_t(x1, x2, x3, x4, x5, x6, x7, x8)                \
-   ([=]() {                                                                    \
-     uint8_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};                \
-     return vld1_u8(array);                                                    \
-   }())
-#endif
-#ifndef simdjson_make_int8x8_t
-#define simdjson_make_int8x8_t(x1, x2, x3, x4, x5, x6, x7, x8)                 \
-   ([=]() {                                                                    \
-     int8_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};                 \
-     return vld1_s8(array);                                                    \
-   }())
-#endif
-#ifndef simdjson_make_uint16x8_t
-#define simdjson_make_uint16x8_t(x1, x2, x3, x4, x5, x6, x7, x8)               \
-   ([=]() {                                                                    \
-     uint16_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};               \
-     return vld1q_u16(array);                                                  \
-   }())
-#endif
-#ifndef simdjson_make_int16x8_t
-#define simdjson_make_int16x8_t(x1, x2, x3, x4, x5, x6, x7, x8)                \
-   ([=]() {                                                                    \
-     int16_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};                \
-     return vld1q_s16(array);                                                  \
-   }())
+#if __riscv_v_fixed_vlen == 128
+  using vuint8x64_t = vuint8m4_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool2_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#elif __riscv_v_fixed_vlen == 256
+  using vuint8x64_t = vuint8m2_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool4_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#else
+  using vuint8x64_t = vuint8m1_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(512/8)));
 #endif
 
-// End of private section with Visual Studio workaround
-} // namespace
-#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
-
-
   template
   struct simd8;
 
-  //
-  // Base class of simd8 and simd8, both of which use uint8x16_t internally.
-  //
-  template>
-  struct base_u8 {
-    uint8x16_t value;
-    static const int SIZE = sizeof(value);
-
-    // Conversion from/to SIMD register
-    simdjson_inline base_u8(const uint8x16_t _value) : value(_value) {}
-    simdjson_inline operator const uint8x16_t&() const { return this->value; }
-    simdjson_inline operator uint8x16_t&() { return this->value; }
-
-    // Bit operations
-    simdjson_inline simd8 operator|(const simd8 other) const { return vorrq_u8(*this, other); }
-    simdjson_inline simd8 operator&(const simd8 other) const { return vandq_u8(*this, other); }
-    simdjson_inline simd8 operator^(const simd8 other) const { return veorq_u8(*this, other); }
-    simdjson_inline simd8 bit_andnot(const simd8 other) const { return vbicq_u8(*this, other); }
-    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
-    simdjson_inline simd8& operator|=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast | other; return *this_cast; }
-    simdjson_inline simd8& operator&=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast & other; return *this_cast; }
-    simdjson_inline simd8& operator^=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast ^ other; return *this_cast; }
-
-    friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return vceqq_u8(lhs, rhs); }
-
-    template
-    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
-      return vextq_u8(prev_chunk, *this, 16 - N);
-    }
-  };
-
   // SIMD byte mask type (returned by things like eq and gt)
   template<>
-  struct simd8: base_u8 {
-    typedef uint16_t bitmask_t;
-    typedef uint32_t bitmask2_t;
-
-    static simdjson_inline simd8 splat(bool _value) { return vmovq_n_u8(uint8_t(-(!!_value))); }
+  struct simd8 {
+    vbool_t value;
+    using bitmask_t = vbitmask_t;
+    static constexpr int SIZE = sizeof(value);
 
-    simdjson_inline simd8(const uint8x16_t _value) : base_u8(_value) {}
-    // False constructor
-    simdjson_inline simd8() : simd8(vdupq_n_u8(0)) {}
-    // Splat constructor
+    simdjson_inline simd8(const vbool_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(__riscv_vmclr_m_b8(VL8)) {}
     simdjson_inline simd8(bool _value) : simd8(splat(_value)) {}
 
-    // We return uint32_t instead of uint16_t because that seems to be more efficient for most
-    // purposes (cutting it down to uint16_t costs performance in some compilers).
-    simdjson_inline uint32_t to_bitmask() const {
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-      const uint8x16_t bit_mask =  simdjson_make_uint8x16_t(0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
-                                                   0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80);
+    simdjson_inline operator const vbool_t&() const { return value; }
+    simdjson_inline operator vbool_t&() { return value; }
+
+    static simdjson_inline simd8 splat(bool _value) {
+      return __riscv_vreinterpret_b8(__riscv_vmv_v_x_u64m1(((uint64_t)!_value)-1, 1));
+    }
+
+    simdjson_inline vbitmask_t to_bitmask() const {
+#if __riscv_v_fixed_vlen == 128
+      return __riscv_vmv_x(__riscv_vreinterpret_u16m1(value));
+#elif __riscv_v_fixed_vlen == 256
+      return __riscv_vmv_x(__riscv_vreinterpret_u32m1(value));
 #else
-      const uint8x16_t bit_mask =  {0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
-                                    0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80};
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(value));
 #endif
-      auto minput = *this & bit_mask;
-      uint8x16_t tmp = vpaddq_u8(minput, minput);
-      tmp = vpaddq_u8(tmp, tmp);
-      tmp = vpaddq_u8(tmp, tmp);
-      return vgetq_lane_u16(vreinterpretq_u16_u8(tmp), 0);
-    }
-    // Returns 4-bit out of each byte, alternating between the high 4 bits and low
-    // bits result it is 64 bit.
-    simdjson_inline uint64_t to_bitmask64() const {
-      return vget_lane_u64(
-          vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(*this), 4)), 0);
     }
-    simdjson_inline bool any() const { return vmaxvq_u32(vreinterpretq_u32_u8(*this)) != 0; }
+
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const {  return __riscv_vmor(*this, other, VL8); }
+    simdjson_inline simd8 operator&(const simd8 other) const {  return __riscv_vmand(*this, other, VL8); }
+    simdjson_inline simd8 operator^(const simd8 other) const {  return __riscv_vmxor(*this, other, VL8); }
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return __riscv_vmandn(other, *this, VL8); }
+    simdjson_inline simd8 operator~() const { return __riscv_vmnot(*this, VL8); }
+    simdjson_inline simd8& operator|=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline simd8& operator&=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline simd8& operator^=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast ^ other; return *this_cast; }
   };
 
   // Unsigned bytes
   template<>
-  struct simd8: base_u8 {
-    static simdjson_inline uint8x16_t splat(uint8_t _value) { return vmovq_n_u8(_value); }
-    static simdjson_inline uint8x16_t zero() { return vdupq_n_u8(0); }
-    static simdjson_inline uint8x16_t load(const uint8_t* values) { return vld1q_u8(values); }
+  struct simd8 {
 
-    simdjson_inline simd8(const uint8x16_t _value) : base_u8(_value) {}
-    // Zero constructor
+    vuint8_t value;
+    static constexpr int SIZE = sizeof(value);
+
+    simdjson_inline simd8(const vuint8_t _value) : value(_value) {}
     simdjson_inline simd8() : simd8(zero()) {}
-    // Array constructor
-    simdjson_inline simd8(const uint8_t values[16]) : simd8(load(values)) {}
-    // Splat constructor
+    simdjson_inline simd8(const uint8_t values[VL8]) : simd8(load(values)) {}
     simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
-    // Member-by-member initialization
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-    simdjson_inline simd8(
-      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
-      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
-    ) : simd8(simdjson_make_uint8x16_t(
-      v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15
-    )) {}
-#else
+    simdjson_inline simd8(simd8 mask) : value(__riscv_vmerge_vxm_u8m1(zero(), -1, (vbool_t)mask, VL8)) {}
+
+    simdjson_inline operator const vuint8_t&() const { return this->value; }
+    simdjson_inline operator vuint8_t&() { return this->value; }
+
     simdjson_inline simd8(
       uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
       uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
-    ) : simd8(uint8x16_t{
+    ) : simd8(vuint8_t{
       v0, v1, v2, v3, v4, v5, v6, v7,
       v8, v9, v10,v11,v12,v13,v14,v15
     }) {}
-#endif
 
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
@@ -33820,115 +35493,85 @@ namespace {
       );
     }
 
+    static simdjson_inline vuint8_t splat(uint8_t _value) { return __riscv_vmv_v_x_u8m1(_value, VL8); }
+    static simdjson_inline vuint8_t zero() { return splat(0); }
+    static simdjson_inline vuint8_t load(const uint8_t values[VL8]) { return __riscv_vle8_v_u8m1(values, VL8); }
+
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const { return  __riscv_vor_vv_u8m1(  value, other, VL8); }
+    simdjson_inline simd8 operator&(const simd8 other) const { return  __riscv_vand_vv_u8m1( value, other, VL8); }
+    simdjson_inline simd8 operator^(const simd8 other) const { return  __riscv_vxor_vv_u8m1( value, other, VL8); }
+    simdjson_inline simd8 operator~() const { return __riscv_vnot_v_u8m1(value, VL8); }
+#if __riscv_zvbb
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return __riscv_vandn_vv_u8m1(other, value, VL8); }
+#else
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return other & ~*this; }
+#endif
+    simdjson_inline simd8& operator|=(const simd8 other) { value = *this | other; return *this; }
+    simdjson_inline simd8& operator&=(const simd8 other) { value = *this & other; return *this; }
+    simdjson_inline simd8& operator^=(const simd8 other) { value = *this ^ other; return *this; }
+
+    simdjson_inline simd8 operator==(const simd8 other) const { return __riscv_vmseq(value, other, VL8); }
+    simdjson_inline simd8 operator==(uint8_t other) const { return __riscv_vmseq(value, other, VL8); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return __riscv_vslideup(__riscv_vslidedown(prev_chunk, VL8-N, VL8), value, N, VL8);
+    }
+
     // Store to array
-    simdjson_inline void store(uint8_t dst[16]) const { return vst1q_u8(dst, *this); }
+    simdjson_inline void store(uint8_t dst[VL8]) const { return __riscv_vse8(dst, value, VL8); }
 
     // Saturated math
-    simdjson_inline simd8 saturating_add(const simd8 other) const { return vqaddq_u8(*this, other); }
-    simdjson_inline simd8 saturating_sub(const simd8 other) const { return vqsubq_u8(*this, other); }
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return __riscv_vsaddu(value, other, VL8); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __riscv_vssubu(value, other, VL8); }
 
     // Addition/subtraction are the same for signed and unsigned
-    simdjson_inline simd8 operator+(const simd8 other) const { return vaddq_u8(*this, other); }
-    simdjson_inline simd8 operator-(const simd8 other) const { return vsubq_u8(*this, other); }
-    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *this; }
-    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *this; }
+    simdjson_inline simd8 operator+(const simd8 other) const { return __riscv_vadd(value, other, VL8); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __riscv_vsub(value, other, VL8); }
+    simdjson_inline simd8& operator+=(const simd8 other) { value = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { value = *this - other; return *this; }
 
     // Order-specific operations
-    simdjson_inline uint8_t max_val() const { return vmaxvq_u8(*this); }
-    simdjson_inline uint8_t min_val() const { return vminvq_u8(*this); }
-    simdjson_inline simd8 max_val(const simd8 other) const { return vmaxq_u8(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return vminq_u8(*this, other); }
-    simdjson_inline simd8 operator<=(const simd8 other) const { return vcleq_u8(*this, other); }
-    simdjson_inline simd8 operator>=(const simd8 other) const { return vcgeq_u8(*this, other); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return vcltq_u8(*this, other); }
-    simdjson_inline simd8 operator>(const simd8 other) const { return vcgtq_u8(*this, other); }
-    // Same as >, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero. For ARM, returns all 1's.
+    simdjson_inline simd8 operator<=(const simd8 other) const { return __riscv_vmsleu(value, other, VL8); }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return __riscv_vmsgeu(value, other, VL8); }
+    simdjson_inline simd8 operator<(const simd8 other) const  { return __riscv_vmsltu(value, other, VL8); }
+    simdjson_inline simd8 operator>(const simd8 other) const  { return __riscv_vmsgtu(value, other, VL8); }
+
+    // Same as >, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero.
     simdjson_inline simd8 gt_bits(const simd8 other) const { return simd8(*this > other); }
-    // Same as <, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero. For ARM, returns all 1's.
+    // Same as <, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero.
     simdjson_inline simd8 lt_bits(const simd8 other) const { return simd8(*this < other); }
 
     // Bit-specific operations
-    simdjson_inline simd8 any_bits_set(simd8 bits) const { return vtstq_u8(*this, bits); }
-    simdjson_inline bool any_bits_set_anywhere() const { return vmaxvq_u32(vreinterpretq_u32_u8(*this)) != 0; }
+    simdjson_inline bool any_bits_set_anywhere() const {
+      return __riscv_vfirst(__riscv_vmsne(value, 0, VL8), VL8) >= 0;
+    }
     simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return (*this & bits).any_bits_set_anywhere(); }
     template
-    simdjson_inline simd8 shr() const { return vshrq_n_u8(*this, N); }
+    simdjson_inline simd8 shr() const { return __riscv_vsrl(value, N, VL8); }
     template
-    simdjson_inline simd8 shl() const { return vshlq_n_u8(*this, N); }
+    simdjson_inline simd8 shl() const { return __riscv_vsll(value, N, VL8); }
+
 
     // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
     template
     simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
-      return lookup_table.apply_lookup_16_to(*this);
-    }
-
-    // Returns 4-bit out of each byte, alternating between the high 4 bits and low
-    // bits result it is 64 bit.
-    simdjson_inline uint64_t to_bitmask64() const {
-      return vget_lane_u64(
-          vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(*this), 4)), 0);
-    }
-    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
-    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
-    // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
-    // get written.
-    // Design consideration: it seems like a function with the
-    // signature simd8 compress(uint16_t mask) would be
-    // sensible, but the AVX ISA makes this kind of approach difficult.
-    template
-    simdjson_inline void compress(uint16_t mask, L * output) const {
-      using internal::thintable_epi8;
-      using internal::BitsSetTable256mul2;
-      using internal::pshufb_combine_table;
-      // this particular implementation was inspired by work done by @animetosho
-      // we do it in two steps, first 8 bytes and then second 8 bytes
-      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
-      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
-      // next line just loads the 64-bit values thintable_epi8[mask1] and
-      // thintable_epi8[mask2] into a 128-bit register, using only
-      // two instructions on most compilers.
-      uint64x2_t shufmask64 = {thintable_epi8[mask1], thintable_epi8[mask2]};
-      uint8x16_t shufmask = vreinterpretq_u8_u64(shufmask64);
-      // we increment by 0x08 the second half of the mask
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-      uint8x16_t inc = simdjson_make_uint8x16_t(0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08);
-#else
-      uint8x16_t inc = {0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08};
-#endif
-      shufmask = vaddq_u8(shufmask, inc);
-      // this is the version "nearly pruned"
-      uint8x16_t pruned = vqtbl1q_u8(*this, shufmask);
-      // we still need to put the two halves together.
-      // we compute the popcount of the first half:
-      int pop1 = BitsSetTable256mul2[mask1];
-      // then load the corresponding mask, what it does is to write
-      // only the first pop1 bytes from the first 8 bytes, and then
-      // it fills in with the bytes from the second 8 bytes + some filling
-      // at the end.
-      uint8x16_t compactmask = vld1q_u8(reinterpret_cast(pshufb_combine_table + pop1 * 8));
-      uint8x16_t answer = vqtbl1q_u8(pruned, compactmask);
-      vst1q_u8(reinterpret_cast(output), answer);
+      return __riscv_vrgather(lookup_table, value, VL8);
     }
 
-    // Copies all bytes corresponding to a 0 in the low half of the mask (interpreted as a
-    // bitset) to output1, then those corresponding to a 0 in the high half to output2.
+    // compress inactive elements, to match AVX-512 behavior
     template
-    simdjson_inline void compress_halves(uint16_t mask, L *output1, L *output2) const {
-      using internal::thintable_epi8;
-      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
-      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
-      uint8x8_t compactmask1 = vcreate_u8(thintable_epi8[mask1]);
-      uint8x8_t compactmask2 = vcreate_u8(thintable_epi8[mask2]);
-      // we increment by 0x08 the second half of the mask
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-      uint8x8_t inc = simdjson_make_uint8x8_t(0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08);
+    simdjson_inline void compress(vbitmask_t mask, L * output) const {
+      mask = (vbitmask_t)~mask;
+#if __riscv_v_fixed_vlen == 128
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u16m1(mask, 1));
+#elif __riscv_v_fixed_vlen == 256
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u32m1(mask, 1));
 #else
-      uint8x8_t inc = {0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08};
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u64m1(mask, 1));
 #endif
-      compactmask2 = vadd_u8(compactmask2, inc);
-      // store each result (with the second store possibly overlapping the first)
-      vst1_u8((uint8_t*)output1, vqtbl1_u8(*this, compactmask1));
-      vst1_u8((uint8_t*)output2, vqtbl1_u8(*this, compactmask2));
+      __riscv_vse8_v_u8m1(output, __riscv_vcompress(value, m, VL8), count_ones(mask));
     }
 
     template
@@ -33944,51 +35587,30 @@ namespace {
         replace12, replace13, replace14, replace15
       ));
     }
-
-    template
-    simdjson_inline simd8 apply_lookup_16_to(const simd8 original) {
-      return vqtbl1q_u8(*this, simd8(original));
-    }
   };
 
   // Signed bytes
   template<>
   struct simd8 {
-    int8x16_t value;
-
-    static simdjson_inline simd8 splat(int8_t _value) { return vmovq_n_s8(_value); }
-    static simdjson_inline simd8 zero() { return vdupq_n_s8(0); }
-    static simdjson_inline simd8 load(const int8_t values[16]) { return vld1q_s8(values); }
-
-    // Conversion from/to SIMD register
-    simdjson_inline simd8(const int8x16_t _value) : value{_value} {}
-    simdjson_inline operator const int8x16_t&() const { return this->value; }
-    simdjson_inline operator int8x16_t&() { return this->value; }
+    vint8_t value;
+    static constexpr int SIZE = sizeof(value);
 
-    // Zero constructor
+    simdjson_inline simd8(const vint8_t _value) : value(_value) {}
     simdjson_inline simd8() : simd8(zero()) {}
-    // Splat constructor
+    simdjson_inline simd8(const int8_t values[VL8]) : simd8(load(values)) {}
     simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
-    // Array constructor
-    simdjson_inline simd8(const int8_t* values) : simd8(load(values)) {}
-    // Member-by-member initialization
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-    simdjson_inline simd8(
-      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3, int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
-      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
-    ) : simd8(simdjson_make_int8x16_t(
-      v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15
-    )) {}
-#else
+
+    simdjson_inline operator const vint8_t&() const { return this->value; }
+    simdjson_inline operator vint8_t&() { return this->value; }
+
     simdjson_inline simd8(
-      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3, int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
       int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
-    ) : simd8(int8x16_t{
+    ) : simd8(vint8_t{
       v0, v1, v2, v3, v4, v5, v6, v7,
       v8, v9, v10,v11,v12,v13,v14,v15
     }) {}
-#endif
+
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
       int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
@@ -34000,41 +35622,39 @@ namespace {
       );
     }
 
-    // Store to array
-    simdjson_inline void store(int8_t dst[16]) const { return vst1q_s8(dst, *this); }
+    static simdjson_inline vint8_t splat(int8_t _value) { return __riscv_vmv_v_x_i8m1(_value, VL8); }
+    static simdjson_inline vint8_t zero() { return splat(0); }
+    static simdjson_inline vint8_t load(const int8_t values[VL8]) { return __riscv_vle8_v_i8m1(values, VL8); }
+
+
+    simdjson_inline void store(int8_t dst[VL8]) const { return __riscv_vse8(dst, value, VL8); }
 
     // Explicit conversion to/from unsigned
-    //
-    // Under Visual Studio/ARM64 uint8x16_t and int8x16_t are apparently the same type.
-    // In theory, we could check this occurrence with std::same_as and std::enabled_if but it is C++14
-    // and relatively ugly and hard to read.
-#ifndef SIMDJSON_REGULAR_VISUAL_STUDIO
-    simdjson_inline explicit simd8(const uint8x16_t other): simd8(vreinterpretq_s8_u8(other)) {}
-#endif
-    simdjson_inline explicit operator simd8() const { return vreinterpretq_u8_s8(this->value); }
+    simdjson_inline explicit simd8(const vuint8_t other): simd8(__riscv_vreinterpret_i8m1(other)) {}
+    simdjson_inline explicit operator simd8() const { return __riscv_vreinterpret_u8m1(value); }
 
     // Math
-    simdjson_inline simd8 operator+(const simd8 other) const { return vaddq_s8(*this, other); }
-    simdjson_inline simd8 operator-(const simd8 other) const { return vsubq_s8(*this, other); }
-    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *this; }
-    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *this; }
+    simdjson_inline simd8 operator+(const simd8 other) const { return __riscv_vadd(value, other, VL8); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __riscv_vsub(value, other, VL8); }
+    simdjson_inline simd8& operator+=(const simd8 other) { value = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { value = *this - other; return *this; }
 
     // Order-sensitive comparisons
-    simdjson_inline simd8 max_val(const simd8 other) const { return vmaxq_s8(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return vminq_s8(*this, other); }
-    simdjson_inline simd8 operator>(const simd8 other) const { return vcgtq_s8(*this, other); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return vcltq_s8(*this, other); }
-    simdjson_inline simd8 operator==(const simd8 other) const { return vceqq_s8(*this, other); }
+    simdjson_inline simd8 max_val( const simd8 other) const { return __riscv_vmax( value, other, VL8); }
+    simdjson_inline simd8 min_val( const simd8 other) const { return __riscv_vmin( value, other, VL8); }
+    simdjson_inline simd8 operator>( const simd8 other) const { return __riscv_vmsgt(value, other, VL8); }
+    simdjson_inline simd8 operator<( const simd8 other) const { return __riscv_vmslt(value, other, VL8); }
+    simdjson_inline simd8 operator==(const simd8 other) const { return __riscv_vmseq(value, other, VL8); }
 
     template
     simdjson_inline simd8 prev(const simd8 prev_chunk) const {
-      return vextq_s8(prev_chunk, *this, 16 - N);
+      return __riscv_vslideup(__riscv_vslidedown(prev_chunk, VL8-N, VL8), value, N, VL8);
     }
 
     // Perform a lookup assuming no value is larger than 16
     template
     simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
-      return lookup_table.apply_lookup_16_to(*this);
+      return __riscv_vrgather(lookup_table, value, VL8);
     }
     template
     simdjson_inline simd8 lookup_16(
@@ -34049,110 +35669,92 @@ namespace {
         replace12, replace13, replace14, replace15
       ));
     }
-
-    template
-    simdjson_inline simd8 apply_lookup_16_to(const simd8 original) {
-      return vqtbl1q_s8(*this, simd8(original));
-    }
   };
 
   template
-  struct simd8x64 {
-    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
-    static_assert(NUM_CHUNKS == 4, "ARM kernel should use four registers per 64-byte block.");
-    const simd8 chunks[NUM_CHUNKS];
+  struct simd8x64;
+  template<>
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    vuint8x64_t value;
 
-    simd8x64(const simd8x64& o) = delete; // no copy allowed
-    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
-    simd8x64() = delete; // no default constructor allowed
+#if __riscv_v_fixed_vlen >= 512
+    template simd8 get() const { return value; }
+#else
+    template simd8 get() const { return __riscv_vget_u8m1(value, idx); }
+#endif
 
-    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
-    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
+    simdjson_inline operator const vuint8x64_t&() const { return this->value; }
+    simdjson_inline operator vuint8x64_t&() { return this->value; }
 
-    simdjson_inline void store(T ptr[64]) const {
-      this->chunks[0].store(ptr+sizeof(simd8)*0);
-      this->chunks[1].store(ptr+sizeof(simd8)*1);
-      this->chunks[2].store(ptr+sizeof(simd8)*2);
-      this->chunks[3].store(ptr+sizeof(simd8)*3);
-    }
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
 
-    simdjson_inline simd8 reduce_or() const {
-      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
-    }
+#if __riscv_v_fixed_vlen == 128
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m4(ptr, n)) {}
+#elif __riscv_v_fixed_vlen == 256
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m2(ptr, n)) {}
+#else
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m1(ptr, n)) {}
+#endif
 
+    simdjson_inline void store(uint8_t ptr[64]) const {
+      __riscv_vse8(ptr, value, 64);
+    }
 
-    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
-      uint64_t popcounts = vget_lane_u64(vreinterpret_u64_u8(vcnt_u8(vcreate_u8(~mask))), 0);
-      // compute the prefix sum of the popcounts of each byte
-      uint64_t offsets = popcounts * 0x0101010101010101;
-      this->chunks[0].compress_halves(uint16_t(mask), output, &output[popcounts & 0xFF]);
-      this->chunks[1].compress_halves(uint16_t(mask >> 16), &output[(offsets >> 8) & 0xFF], &output[(offsets >> 16) & 0xFF]);
-      this->chunks[2].compress_halves(uint16_t(mask >> 32), &output[(offsets >> 24) & 0xFF], &output[(offsets >> 32) & 0xFF]);
-      this->chunks[3].compress_halves(uint16_t(mask >> 48), &output[(offsets >> 40) & 0xFF], &output[(offsets >> 48) & 0xFF]);
-      return offsets >> 56;
+    simdjson_inline bool is_ascii() const {
+#if __riscv_v_fixed_vlen == 128
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m4(value), 0, 64), 64) < 0;
+#elif __riscv_v_fixed_vlen == 256
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m2(value), 0, 64), 64) < 0;
+#else
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m1(value), 0, 64), 64) < 0;
+#endif
     }
 
-    simdjson_inline uint64_t to_bitmask() const {
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-      const uint8x16_t bit_mask = simdjson_make_uint8x16_t(
-        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
-        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80
-      );
+    // compress inactive elements, to match AVX-512 behavior
+    simdjson_inline uint64_t compress(uint64_t mask, uint8_t * output) const {
+      mask = ~mask;
+#if __riscv_v_fixed_vlen == 128
+      vboolx64_t m = __riscv_vreinterpret_b2(__riscv_vmv_s_x_u64m1(mask, 1));
+#elif __riscv_v_fixed_vlen == 256
+      vboolx64_t m = __riscv_vreinterpret_b4(__riscv_vmv_s_x_u64m1(mask, 1));
 #else
-      const uint8x16_t bit_mask = {
-        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
-        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80
-      };
+      vboolx64_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u64m1(mask, 1));
 #endif
-      // Add each of the elements next to each other, successively, to stuff each 8 byte mask into one.
-      uint8x16_t sum0 = vpaddq_u8(this->chunks[0] & bit_mask, this->chunks[1] & bit_mask);
-      uint8x16_t sum1 = vpaddq_u8(this->chunks[2] & bit_mask, this->chunks[3] & bit_mask);
-      sum0 = vpaddq_u8(sum0, sum1);
-      sum0 = vpaddq_u8(sum0, sum0);
-      return vgetq_lane_u64(vreinterpretq_u64_u8(sum0), 0);
+      size_t cnt = count_ones(mask);
+      __riscv_vse8(output, __riscv_vcompress(value, m, 64), cnt);
+      return cnt;
     }
 
-    simdjson_inline uint64_t eq(const T m) const {
-      const simd8 mask = simd8::splat(m);
-      return  simd8x64(
-        this->chunks[0] == mask,
-        this->chunks[1] == mask,
-        this->chunks[2] == mask,
-        this->chunks[3] == mask
-      ).to_bitmask();
+    simdjson_inline uint64_t eq(const uint8_t m) const {
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vmseq(value, m, 64)));
     }
 
-    simdjson_inline uint64_t lteq(const T m) const {
-      const simd8 mask = simd8::splat(m);
-      return  simd8x64(
-        this->chunks[0] <= mask,
-        this->chunks[1] <= mask,
-        this->chunks[2] <= mask,
-        this->chunks[3] <= mask
-      ).to_bitmask();
+    simdjson_inline uint64_t lteq(const uint8_t m) const {
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vmsleu(value, m, 64)));
     }
-  }; // struct simd8x64
+  }; // struct simd8x64
 
 } // namespace simd
 } // unnamed namespace
-} // namespace arm64
+} // namespace rvv_vls
 } // namespace simdjson
 
-#endif // SIMDJSON_ARM64_SIMD_H
-/* end file simdjson/arm64/simd.h */
-/* including simdjson/arm64/stringparsing_defs.h: #include "simdjson/arm64/stringparsing_defs.h" */
-/* begin file simdjson/arm64/stringparsing_defs.h */
-#ifndef SIMDJSON_ARM64_STRINGPARSING_DEFS_H
-#define SIMDJSON_ARM64_STRINGPARSING_DEFS_H
+#endif // SIMDJSON_RVV_VLS_SIMD_H
+/* end file simdjson/rvv-vls/simd.h */
+/* including simdjson/rvv-vls/stringparsing_defs.h: #include "simdjson/rvv-vls/stringparsing_defs.h" */
+/* begin file simdjson/rvv-vls/stringparsing_defs.h */
+#ifndef SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
+#define SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/simd.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace rvv_vls {
 namespace {
 
 using namespace simd;
@@ -34160,38 +35762,27 @@ using namespace simd;
 // Holds backslashes and quotes locations.
 struct backslash_and_quote {
 public:
-  static constexpr uint32_t BYTES_PROCESSED = 32;
+  static constexpr uint64_t BYTES_PROCESSED = sizeof(simd8);
   simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
 
   simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
-  simdjson_inline bool has_backslash() { return bs_bits != 0; }
+  simdjson_inline bool has_backslash() { return ((quote_bits - 1) & bs_bits) != 0; }
   simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
   simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
 
-  uint32_t bs_bits;
-  uint32_t quote_bits;
+  uint64_t bs_bits;
+  uint64_t quote_bits;
 }; // struct backslash_and_quote
 
 simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
-  // this can read up to 31 bytes beyond the buffer size, but we require
-  // SIMDJSON_PADDING of padding
   static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
-  simd8 v0(src);
-  simd8 v1(src + sizeof(v0));
-  v0.store(dst);
-  v1.store(dst + sizeof(v0));
-
-  // Getting a 64-bit bitmask is much cheaper than multiple 16-bit bitmasks on ARM; therefore, we
-  // smash them together into a 64-byte mask and get the bitmask from there.
-  uint64_t bs_and_quote = simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
-  return {
-    uint32_t(bs_and_quote),      // bs_bits
-    uint32_t(bs_and_quote >> 32) // quote_bits
-  };
+  simd8 v(src);
+  v.store(dst);
+  return { (v == '\\').to_bitmask(), (v == '"').to_bitmask() };
 }
 
 struct escaping {
-  static constexpr uint32_t BYTES_PROCESSED = 16;
+  static constexpr uint64_t BYTES_PROCESSED = sizeof(simd8);
   simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
 
   simdjson_inline bool has_escape() { return escape_bits != 0; }
@@ -34200,232 +35791,38031 @@ struct escaping {
   uint64_t escape_bits;
 }; // struct escaping
 
-
-
 simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
   static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
   simd8 v(src);
   v.store(dst);
-  simd8 is_quote = (v == '"');
-  simd8 is_backslash = (v == '\\');
-  simd8 is_control = (v < 32);
-  return {
-    (is_backslash | is_quote | is_control).to_bitmask64()
-  };
+  return { ((v == '"') | (v == '\\') | (v == 32)).to_bitmask() };
 }
 
 
-
 } // unnamed namespace
-} // namespace arm64
+} // namespace rvv_vls
 } // namespace simdjson
 
-#endif // SIMDJSON_ARM64_STRINGPARSING_DEFS_H
-/* end file simdjson/arm64/stringparsing_defs.h */
-
-#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
-/* end file simdjson/arm64/begin.h */
-/* including simdjson/generic/ondemand/amalgamated.h for arm64: #include "simdjson/generic/ondemand/amalgamated.h" */
-/* begin file simdjson/generic/ondemand/amalgamated.h for arm64 */
-#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H)
-#error simdjson/generic/ondemand/dependencies.h must be included before simdjson/generic/ondemand/amalgamated.h!
-#endif
-
-// Stuff other things depend on
-/* including simdjson/generic/ondemand/base.h for arm64: #include "simdjson/generic/ondemand/base.h" */
-/* begin file simdjson/generic/ondemand/base.h for arm64 */
-#ifndef SIMDJSON_GENERIC_ONDEMAND_BASE_H
+#endif // SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
+/* end file simdjson/rvv-vls/stringparsing_defs.h */
+/* including simdjson/rvv-vls/numberparsing_defs.h: #include "simdjson/rvv-vls/numberparsing_defs.h" */
+/* begin file simdjson/rvv-vls/numberparsing_defs.h */
+#ifndef SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
+#define SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_BASE_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-namespace simdjson {
-namespace arm64 {
-/**
- * A fast, simple, DOM-like interface that parses JSON as you use it.
- *
- * Designed for maximum speed and a lower memory profile.
- */
-namespace ondemand {
-
-/** Represents the depth of a JSON value (number of nested arrays/objects). */
-using depth_t = int32_t;
-
-/** @copydoc simdjson::arm64::number_type */
-using number_type = simdjson::arm64::number_type;
-
-/** @private Position in the JSON buffer indexes */
-using token_position = const uint32_t *;
-
-class array;
-class array_iterator;
-class document;
-class document_reference;
-class document_stream;
-class field;
-class json_iterator;
-enum class json_type;
-struct number;
-class object;
-class object_iterator;
-class parser;
-class raw_json_string;
-class token_iterator;
-class value;
-class value_iterator;
-
-} // namespace ondemand
-} // namespace arm64
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_BASE_H
-/* end file simdjson/generic/ondemand/base.h for arm64 */
-/* including simdjson/generic/ondemand/deserialize.h for arm64: #include "simdjson/generic/ondemand/deserialize.h" */
-/* begin file simdjson/generic/ondemand/deserialize.h for arm64 */
-#if SIMDJSON_SUPPORTS_CONCEPTS
+#include 
 
-#ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_ONDEMAND_DESERIALIZE_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#ifdef JSON_TEST_NUMBERS // for unit testing
+void found_invalid_number(const uint8_t *buf);
+void found_integer(int64_t result, const uint8_t *buf);
+void found_unsigned_integer(uint64_t result, const uint8_t *buf);
+void found_float(double result, const uint8_t *buf);
+#endif
 
 namespace simdjson {
+namespace rvv_vls {
+namespace numberparsing {
 
-struct deserialize_tag;
-
-/// These types are deserializable in a built-in way
-template  struct is_builtin_deserializable : std::false_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-
-template 
-concept is_builtin_deserializable_v = is_builtin_deserializable::value;
-
-template 
-concept custom_deserializable = tag_invocable;
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const char *chars) {
+  uint64_t val;
+#if __riscv_misaligned_fast
+  memcpy(&val, chars, sizeof(uint64_t));
+#else
+  val = __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vlmul_ext_u8m1(__riscv_vle8_v_u8mf2((uint8_t*)chars, 8))));
+#endif
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+}
 
-template 
-concept deserializable = custom_deserializable || is_builtin_deserializable_v || concepts::optional_type;
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  return parse_eight_digits_unrolled(reinterpret_cast(chars));
+}
 
-template 
-concept nothrow_custom_deserializable = nothrow_tag_invocable;
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+  return answer;
+}
 
-// built-in types are noexcept and if an error happens, the value simply gets ignored and the error is returned.
-template 
-concept nothrow_deserializable = nothrow_custom_deserializable || is_builtin_deserializable_v;
+} // namespace numberparsing
+} // namespace rvv_vls
+} // namespace simdjson
 
-/// Deserialize Tag
-inline constexpr struct deserialize_tag {
-  using array_type = arm64::ondemand::array;
-  using object_type = arm64::ondemand::object;
-  using value_type = arm64::ondemand::value;
-  using document_type = arm64::ondemand::document;
-  using document_reference_type = arm64::ondemand::document_reference;
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
 
-  // Customization Point for array
-  template 
-    requires custom_deserializable
-  simdjson_warn_unused constexpr /* error_code */ auto operator()(array_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
-    return tag_invoke(*this, object, output);
-  }
+#endif // SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
+/* end file simdjson/rvv-vls/numberparsing_defs.h */
 
-  // Customization Point for object
-  template 
-    requires custom_deserializable
-  simdjson_warn_unused constexpr /* error_code */ auto operator()(object_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
-    return tag_invoke(*this, object, output);
-  }
+#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
+/* end file simdjson/rvv-vls/begin.h */
+/* including simdjson/generic/amalgamated.h for rvv_vls: #include "simdjson/generic/amalgamated.h" */
+/* begin file simdjson/generic/amalgamated.h for rvv_vls */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_DEPENDENCIES_H)
+#error simdjson/generic/dependencies.h must be included before simdjson/generic/amalgamated.h!
+#endif
 
-  // Customization Point for value
-  template 
-    requires custom_deserializable
-  simdjson_warn_unused constexpr /* error_code */ auto operator()(value_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
-    return tag_invoke(*this, object, output);
-  }
+/* including simdjson/generic/base.h for rvv_vls: #include "simdjson/generic/base.h" */
+/* begin file simdjson/generic/base.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_BASE_H
 
-  // Customization Point for document
-  template 
-    requires custom_deserializable
-  simdjson_warn_unused constexpr /* error_code */ auto operator()(document_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
-    return tag_invoke(*this, object, output);
-  }
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_BASE_H */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): // If we haven't got an implementation yet, we're in the editor, editing a generic file! Just */
+/* amalgamation skipped (editor-only): // use the most advanced one we can so the most possible stuff can be tested. */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_IMPLEMENTATION */
+/* amalgamation skipped (editor-only): #include "simdjson/implementation_detection.h" */
+/* amalgamation skipped (editor-only): #if SIMDJSON_IMPLEMENTATION_ICELAKE */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_HASWELL */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_WESTMERE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_ARM64 */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_PPC64 */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LASX */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_LSX */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_RVV_VLS */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/begin.h" */
+/* amalgamation skipped (editor-only): #elif SIMDJSON_IMPLEMENTATION_FALLBACK */
+/* amalgamation skipped (editor-only): #include "simdjson/fallback/begin.h" */
+/* amalgamation skipped (editor-only): #else */
+/* amalgamation skipped (editor-only): #error "All possible implementations (including fallback) have been disabled! simdjson will not run." */
+/* amalgamation skipped (editor-only): #endif */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_IMPLEMENTATION */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-  // Customization Point for document reference
-  template 
-    requires custom_deserializable
-  simdjson_warn_unused constexpr /* error_code */ auto operator()(document_reference_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
-    return tag_invoke(*this, object, output);
-  }
+namespace simdjson {
+namespace rvv_vls {
 
+struct open_container;
+class dom_parser_implementation;
 
-} deserialize{};
+/**
+ * The type of a JSON number
+ */
+enum class number_type {
+    floating_point_number=1, /// a binary64 number
+    signed_integer,          /// a signed integer that fits in a 64-bit word using two's complement
+    unsigned_integer,        /// a positive integer larger or equal to 1<<63
+    big_integer              /// a big integer that does not fit in a 64-bit word
+};
 
+} // namespace rvv_vls
 } // namespace simdjson
 
-#endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-/* end file simdjson/generic/ondemand/deserialize.h for arm64 */
-/* including simdjson/generic/ondemand/value_iterator.h for arm64: #include "simdjson/generic/ondemand/value_iterator.h" */
-/* begin file simdjson/generic/ondemand/value_iterator.h for arm64 */
-#ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
+#endif // SIMDJSON_GENERIC_BASE_H
+/* end file simdjson/generic/base.h for rvv_vls */
+/* including simdjson/generic/jsoncharutils.h for rvv_vls: #include "simdjson/generic/jsoncharutils.h" */
+/* begin file simdjson/generic/jsoncharutils.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_JSONCHARUTILS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_JSONCHARUTILS_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/jsoncharutils_tables.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
-namespace ondemand {
-
-/**
- * Iterates through a single JSON value at a particular depth.
- *
- * Does not keep track of the type of value: provides methods for objects, arrays and scalars and expects
- * the caller to call the right ones.
- *
- * @private This is not intended for external use.
- */
-class value_iterator {
-protected:
-  /** The underlying JSON iterator */
-  json_iterator *_json_iter{};
-  /** The depth of this value */
-  depth_t _depth{};
-  /**
-   * The starting token index for this value
-   */
-  token_position _start_position{};
+namespace rvv_vls {
+namespace {
+namespace jsoncharutils {
 
-public:
-  simdjson_inline value_iterator() noexcept = default;
+// return non-zero if not a structural or whitespace char
+// zero otherwise
+simdjson_inline uint32_t is_not_structural_or_whitespace(uint8_t c) {
+  return internal::structural_or_whitespace_negated[c];
+}
 
-  /**
-   * Denote that we're starting a document.
-   */
-  simdjson_inline void start_document() noexcept;
+simdjson_inline uint32_t is_structural_or_whitespace(uint8_t c) {
+  return internal::structural_or_whitespace[c];
+}
 
-  /**
-   * Skips a non-iterated or partially-iterated JSON value, whether it is a scalar, array or object.
-   *
-   * Optimized for scalars.
-   */
-  simdjson_warn_unused simdjson_inline error_code skip_child() noexcept;
+// returns a value with the high 16 bits set if not valid
+// otherwise returns the conversion of the 4 hex digits at src into the bottom
+// 16 bits of the 32-bit return register
+//
+// see
+// https://lemire.me/blog/2019/04/17/parsing-short-hexadecimal-strings-efficiently/
+static inline uint32_t hex_to_u32_nocheck(
+    const uint8_t *src) { // strictly speaking, static inline is a C-ism
+  uint32_t v1 = internal::digit_to_val32[630 + src[0]];
+  uint32_t v2 = internal::digit_to_val32[420 + src[1]];
+  uint32_t v3 = internal::digit_to_val32[210 + src[2]];
+  uint32_t v4 = internal::digit_to_val32[0 + src[3]];
+  return v1 | v2 | v3 | v4;
+}
 
-  /**
+// given a code point cp, writes to c
+// the utf-8 code, outputting the length in
+// bytes, if the length is zero, the code point
+// is invalid
+//
+// This can possibly be made faster using pdep
+// and clz and table lookups, but JSON documents
+// have few escaped code points, and the following
+// function looks cheap.
+//
+// Note: we assume that surrogates are treated separately
+//
+simdjson_inline size_t codepoint_to_utf8(uint32_t cp, uint8_t *c) {
+  if (cp <= 0x7F) {
+    c[0] = uint8_t(cp);
+    return 1; // ascii
+  }
+  if (cp <= 0x7FF) {
+    c[0] = uint8_t((cp >> 6) + 192);
+    c[1] = uint8_t((cp & 63) + 128);
+    return 2; // universal plane
+    //  Surrogates are treated elsewhere...
+    //} //else if (0xd800 <= cp && cp <= 0xdfff) {
+    //  return 0; // surrogates // could put assert here
+  } else if (cp <= 0xFFFF) {
+    c[0] = uint8_t((cp >> 12) + 224);
+    c[1] = uint8_t(((cp >> 6) & 63) + 128);
+    c[2] = uint8_t((cp & 63) + 128);
+    return 3;
+  } else if (cp <= 0x10FFFF) { // if you know you have a valid code point, this
+                               // is not needed
+    c[0] = uint8_t((cp >> 18) + 240);
+    c[1] = uint8_t(((cp >> 12) & 63) + 128);
+    c[2] = uint8_t(((cp >> 6) & 63) + 128);
+    c[3] = uint8_t((cp & 63) + 128);
+    return 4;
+  }
+  // will return 0 when the code point was too large.
+  return 0; // bad r
+}
+
+#if SIMDJSON_IS_32BITS // _umul128 for x86, arm
+// this is a slow emulation routine for 32-bit
+//
+static simdjson_inline uint64_t __emulu(uint32_t x, uint32_t y) {
+  return x * (uint64_t)y;
+}
+static simdjson_inline uint64_t _umul128(uint64_t ab, uint64_t cd, uint64_t *hi) {
+  uint64_t ad = __emulu((uint32_t)(ab >> 32), (uint32_t)cd);
+  uint64_t bd = __emulu((uint32_t)ab, (uint32_t)cd);
+  uint64_t adbc = ad + __emulu((uint32_t)ab, (uint32_t)(cd >> 32));
+  uint64_t adbc_carry = !!(adbc < ad);
+  uint64_t lo = bd + (adbc << 32);
+  *hi = __emulu((uint32_t)(ab >> 32), (uint32_t)(cd >> 32)) + (adbc >> 32) +
+        (adbc_carry << 32) + !!(lo < bd);
+  return lo;
+}
+#endif
+
+} // namespace jsoncharutils
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_JSONCHARUTILS_H
+/* end file simdjson/generic/jsoncharutils.h for rvv_vls */
+/* including simdjson/generic/atomparsing.h for rvv_vls: #include "simdjson/generic/atomparsing.h" */
+/* begin file simdjson/generic/atomparsing.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_ATOMPARSING_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ATOMPARSING_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/jsoncharutils.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+/// @private
+namespace atomparsing {
+
+// The string_to_uint32 is exclusively used to map literal strings to 32-bit values.
+// We use memcpy instead of a pointer cast to avoid undefined behaviors since we cannot
+// be certain that the character pointer will be properly aligned.
+// You might think that using memcpy makes this function expensive, but you'd be wrong.
+// All decent optimizing compilers (GCC, clang, Visual Studio) will compile string_to_uint32("false");
+// to the compile-time constant 1936482662.
+simdjson_inline uint32_t string_to_uint32(const char* str) { uint32_t val; std::memcpy(&val, str, sizeof(uint32_t)); return val; }
+
+
+// Again in str4ncmp we use a memcpy to avoid undefined behavior. The memcpy may appear expensive.
+// Yet all decent optimizing compilers will compile memcpy to a single instruction, just about.
+simdjson_warn_unused
+simdjson_inline uint32_t str4ncmp(const uint8_t *src, const char* atom) {
+  uint32_t srcval; // we want to avoid unaligned 32-bit loads (undefined in C/C++)
+  static_assert(sizeof(uint32_t) <= SIMDJSON_PADDING, "SIMDJSON_PADDING must be larger than 4 bytes");
+  std::memcpy(&srcval, src, sizeof(uint32_t));
+  return srcval ^ string_to_uint32(atom);
+}
+
+simdjson_warn_unused
+simdjson_inline bool is_valid_true_atom(const uint8_t *src) {
+  return (str4ncmp(src, "true") | jsoncharutils::is_not_structural_or_whitespace(src[4])) == 0;
+}
+
+simdjson_warn_unused
+simdjson_inline bool is_valid_true_atom(const uint8_t *src, size_t len) {
+  if (len > 4) { return is_valid_true_atom(src); }
+  else if (len == 4) { return !str4ncmp(src, "true"); }
+  else { return false; }
+}
+
+simdjson_warn_unused
+simdjson_inline bool is_valid_false_atom(const uint8_t *src) {
+  return (str4ncmp(src+1, "alse") | jsoncharutils::is_not_structural_or_whitespace(src[5])) == 0;
+}
+
+simdjson_warn_unused
+simdjson_inline bool is_valid_false_atom(const uint8_t *src, size_t len) {
+  if (len > 5) { return is_valid_false_atom(src); }
+  else if (len == 5) { return !str4ncmp(src+1, "alse"); }
+  else { return false; }
+}
+
+simdjson_warn_unused
+simdjson_inline bool is_valid_null_atom(const uint8_t *src) {
+  return (str4ncmp(src, "null") | jsoncharutils::is_not_structural_or_whitespace(src[4])) == 0;
+}
+
+simdjson_warn_unused
+simdjson_inline bool is_valid_null_atom(const uint8_t *src, size_t len) {
+  if (len > 4) { return is_valid_null_atom(src); }
+  else if (len == 4) { return !str4ncmp(src, "null"); }
+  else { return false; }
+}
+
+} // namespace atomparsing
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ATOMPARSING_H
+/* end file simdjson/generic/atomparsing.h for rvv_vls */
+/* including simdjson/generic/dom_parser_implementation.h for rvv_vls: #include "simdjson/generic/dom_parser_implementation.h" */
+/* begin file simdjson/generic/dom_parser_implementation.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_DOM_PARSER_IMPLEMENTATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_DOM_PARSER_IMPLEMENTATION_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/dom_parser_implementation.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+
+// expectation: sizeof(open_container) = 64/8.
+struct open_container {
+  uint32_t tape_index; // where, on the tape, does the scope ([,{) begins
+  uint32_t count; // how many elements in the scope
+}; // struct open_container
+
+static_assert(sizeof(open_container) == 64/8, "Open container must be 64 bits");
+
+class dom_parser_implementation final : public internal::dom_parser_implementation {
+public:
+  /** Tape location of each open { or [ */
+  std::unique_ptr open_containers{};
+  /** Whether each open container is a [ or { */
+  std::unique_ptr is_array{};
+  /** Buffer passed to stage 1 */
+  const uint8_t *buf{};
+  /** Length passed to stage 1 */
+  size_t len{0};
+  /** Document passed to stage 2 */
+  dom::document *doc{};
+
+  inline dom_parser_implementation() noexcept;
+  inline dom_parser_implementation(dom_parser_implementation &&other) noexcept;
+  inline dom_parser_implementation &operator=(dom_parser_implementation &&other) noexcept;
+  dom_parser_implementation(const dom_parser_implementation &) = delete;
+  dom_parser_implementation &operator=(const dom_parser_implementation &) = delete;
+
+  simdjson_warn_unused error_code parse(const uint8_t *buf, size_t len, dom::document &doc) noexcept final;
+  simdjson_warn_unused error_code stage1(const uint8_t *buf, size_t len, stage1_mode partial) noexcept final;
+  simdjson_warn_unused error_code stage2(dom::document &doc) noexcept final;
+  simdjson_warn_unused error_code stage2_next(dom::document &doc) noexcept final;
+  simdjson_warn_unused uint8_t *parse_string(const uint8_t *src, uint8_t *dst, bool allow_replacement) const noexcept final;
+  simdjson_warn_unused uint8_t *parse_wobbly_string(const uint8_t *src, uint8_t *dst) const noexcept final;
+  inline simdjson_warn_unused error_code set_capacity(size_t capacity) noexcept final;
+  inline simdjson_warn_unused error_code set_max_depth(size_t max_depth) noexcept final;
+private:
+  simdjson_inline simdjson_warn_unused error_code set_capacity_stage1(size_t capacity);
+
+};
+
+} // namespace rvv_vls
+} // namespace simdjson
+
+namespace simdjson {
+namespace rvv_vls {
+
+inline dom_parser_implementation::dom_parser_implementation() noexcept = default;
+inline dom_parser_implementation::dom_parser_implementation(dom_parser_implementation &&other) noexcept = default;
+inline dom_parser_implementation &dom_parser_implementation::operator=(dom_parser_implementation &&other) noexcept = default;
+
+// Leaving these here so they can be inlined if so desired
+inline simdjson_warn_unused error_code dom_parser_implementation::set_capacity(size_t capacity) noexcept {
+  if(capacity > SIMDJSON_MAXSIZE_BYTES) { return CAPACITY; }
+  // Stage 1 index output
+  size_t max_structures = SIMDJSON_ROUNDUP_N(capacity, 64) + 2 + 7;
+  structural_indexes.reset( new (std::nothrow) uint32_t[max_structures] );
+  if (!structural_indexes) { _capacity = 0; return MEMALLOC; }
+  structural_indexes[0] = 0;
+  n_structural_indexes = 0;
+
+  _capacity = capacity;
+  return SUCCESS;
+}
+
+inline simdjson_warn_unused error_code dom_parser_implementation::set_max_depth(size_t max_depth) noexcept {
+  // Stage 2 stacks
+  open_containers.reset(new (std::nothrow) open_container[max_depth]);
+  is_array.reset(new (std::nothrow) bool[max_depth]);
+  if (!is_array || !open_containers) { _max_depth = 0; return MEMALLOC; }
+
+  _max_depth = max_depth;
+  return SUCCESS;
+}
+
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_DOM_PARSER_IMPLEMENTATION_H
+/* end file simdjson/generic/dom_parser_implementation.h for rvv_vls */
+/* including simdjson/generic/implementation_simdjson_result_base.h for rvv_vls: #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* begin file simdjson/generic/implementation_simdjson_result_base.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+
+// This is a near copy of include/error.h's implementation_simdjson_result_base, except it doesn't use std::pair
+// so we can avoid inlining errors
+// TODO reconcile these!
+/**
+ * The result of a simdjson operation that could fail.
+ *
+ * Gives the option of reading error codes, or throwing an exception by casting to the desired result.
+ *
+ * This is a base class for implementations that want to add functions to the result type for
+ * chaining.
+ *
+ * Override like:
+ *
+ *   struct simdjson_result : public internal::implementation_simdjson_result_base {
+ *     simdjson_result() noexcept : internal::implementation_simdjson_result_base() {}
+ *     simdjson_result(error_code error) noexcept : internal::implementation_simdjson_result_base(error) {}
+ *     simdjson_result(T &&value) noexcept : internal::implementation_simdjson_result_base(std::forward(value)) {}
+ *     simdjson_result(T &&value, error_code error) noexcept : internal::implementation_simdjson_result_base(value, error) {}
+ *     // Your extra methods here
+ *   }
+ *
+ * Then any method returning simdjson_result will be chainable with your methods.
+ */
+template
+struct implementation_simdjson_result_base {
+
+  /**
+   * Create a new empty result with error = UNINITIALIZED.
+   */
+  simdjson_inline implementation_simdjson_result_base() noexcept = default;
+
+  /**
+   * Create a new error result.
+   */
+  simdjson_inline implementation_simdjson_result_base(error_code error) noexcept;
+
+  /**
+   * Create a new successful result.
+   */
+  simdjson_inline implementation_simdjson_result_base(T &&value) noexcept;
+
+  /**
+   * Create a new result with both things (use if you don't want to branch when creating the result).
+   */
+  simdjson_inline implementation_simdjson_result_base(T &&value, error_code error) noexcept;
+
+  /**
+   * Move the value and the error to the provided variables.
+   *
+   * @param value The variable to assign the value to. May not be set if there is an error.
+   * @param error The variable to assign the error to. Set to SUCCESS if there is no error.
+   */
+  simdjson_inline void tie(T &value, error_code &error) && noexcept;
+
+  /**
+   * Move the value to the provided variable.
+   *
+   * @param value The variable to assign the value to. May not be set if there is an error.
+   */
+  simdjson_warn_unused simdjson_inline error_code get(T &value) && noexcept;
+
+  /**
+   * The error.
+   */
+  simdjson_warn_unused simdjson_inline error_code error() const noexcept;
+
+  /**
+   * Whether there is a value.
+   */
+  simdjson_warn_unused simdjson_inline bool has_value() const noexcept;
+
+#if SIMDJSON_EXCEPTIONS
+
+  /**
+   * Get the result value.
+   *
+   * @throw simdjson_error if there was an error.
+   */
+  simdjson_inline T& operator*() &  noexcept(false);
+  simdjson_inline T&& operator*() &&  noexcept(false);
+  /**
+   * Arrow operator to access members of the contained value.
+   *
+   * @throw simdjson_error if there was an error.
+   */
+  simdjson_inline T* operator->() noexcept(false);
+  simdjson_inline const T* operator->() const noexcept(false);
+
+  simdjson_inline T& value() & noexcept(false);
+
+  /**
+   * Take the result value (move it).
+   *
+   * @throw simdjson_error if there was an error.
+   */
+  simdjson_inline T&& value() && noexcept(false);
+
+  /**
+   * Take the result value (move it).
+   *
+   * @throw simdjson_error if there was an error.
+   */
+  simdjson_inline T&& take_value() && noexcept(false);
+
+  /**
+   * Cast to the value (will throw on error).
+   *
+   * @throw simdjson_error if there was an error.
+   */
+  simdjson_inline operator T&&() && noexcept(false);
+
+
+#endif // SIMDJSON_EXCEPTIONS
+
+  /**
+   * Get the result value. This function is safe if and only
+   * the error() method returns a value that evaluates to false.
+   */
+  simdjson_inline const T& value_unsafe() const& noexcept;
+  /**
+   * Get the result value. This function is safe if and only
+   * the error() method returns a value that evaluates to false.
+   */
+  simdjson_inline T& value_unsafe() & noexcept;
+  /**
+   * Take the result value (move it). This function is safe if and only
+   * the error() method returns a value that evaluates to false.
+   */
+  simdjson_inline T&& value_unsafe() && noexcept;
+
+  using value_type = T;
+  using error_type = error_code;
+
+protected:
+  /** users should never directly access first and second. **/
+  T first{}; /** Users should never directly access 'first'. **/
+  error_code second{UNINITIALIZED}; /** Users should never directly access 'second'. **/
+}; // struct implementation_simdjson_result_base
+
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_H
+/* end file simdjson/generic/implementation_simdjson_result_base.h for rvv_vls */
+/* including simdjson/generic/numberparsing.h for rvv_vls: #include "simdjson/generic/numberparsing.h" */
+/* begin file simdjson/generic/numberparsing.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_NUMBERPARSING_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_NUMBERPARSING_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/jsoncharutils.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+#include 
+#include 
+
+namespace simdjson {
+namespace rvv_vls {
+namespace numberparsing {
+
+#ifdef JSON_TEST_NUMBERS
+#define INVALID_NUMBER(SRC) (found_invalid_number((SRC)), NUMBER_ERROR)
+#define WRITE_INTEGER(VALUE, SRC, WRITER) (found_integer((VALUE), (SRC)), (WRITER).append_s64((VALUE)))
+#define WRITE_UNSIGNED(VALUE, SRC, WRITER) (found_unsigned_integer((VALUE), (SRC)), (WRITER).append_u64((VALUE)))
+#define WRITE_DOUBLE(VALUE, SRC, WRITER) (found_float((VALUE), (SRC)), (WRITER).append_double((VALUE)))
+#define BIGINT_NUMBER(SRC) (found_invalid_number((SRC)), BIGINT_ERROR)
+#else
+#define INVALID_NUMBER(SRC) (NUMBER_ERROR)
+#define WRITE_INTEGER(VALUE, SRC, WRITER) (WRITER).append_s64((VALUE))
+#define WRITE_UNSIGNED(VALUE, SRC, WRITER) (WRITER).append_u64((VALUE))
+#define WRITE_DOUBLE(VALUE, SRC, WRITER) (WRITER).append_double((VALUE))
+#define BIGINT_NUMBER(SRC) (BIGINT_ERROR)
+#endif
+
+namespace {
+
+// Convert a mantissa, an exponent and a sign bit into an ieee64 double.
+// The real_exponent needs to be in [0, 2046] (technically real_exponent = 2047 would be acceptable).
+// The mantissa should be in [0,1<<53). The bit at index (1ULL << 52) while be zeroed.
+simdjson_inline double to_double(uint64_t mantissa, uint64_t real_exponent, bool negative) {
+    double d;
+    mantissa &= ~(1ULL << 52);
+    mantissa |= real_exponent << 52;
+    mantissa |= ((static_cast(negative)) << 63);
+    std::memcpy(&d, &mantissa, sizeof(d));
+    return d;
+}
+
+// Attempts to compute i * 10^(power) exactly; and if "negative" is
+// true, negate the result.
+// This function will only work in some cases, when it does not work, success is
+// set to false. This should work *most of the time* (like 99% of the time).
+// We assume that power is in the [smallest_power,
+// largest_power] interval: the caller is responsible for this check.
+simdjson_inline bool compute_float_64(int64_t power, uint64_t i, bool negative, double &d) {
+  // we start with a fast path
+  // It was described in
+  // Clinger WD. How to read floating point numbers accurately.
+  // ACM SIGPLAN Notices. 1990
+#ifndef FLT_EVAL_METHOD
+#error "FLT_EVAL_METHOD should be defined, please include cfloat."
+#endif
+#if (FLT_EVAL_METHOD != 1) && (FLT_EVAL_METHOD != 0)
+  // We cannot be certain that x/y is rounded to nearest.
+  if (0 <= power && power <= 22 && i <= 9007199254740991)
+#else
+  if (-22 <= power && power <= 22 && i <= 9007199254740991)
+#endif
+  {
+    // convert the integer into a double. This is lossless since
+    // 0 <= i <= 2^53 - 1.
+    d = double(i);
+    //
+    // The general idea is as follows.
+    // If 0 <= s < 2^53 and if 10^0 <= p <= 10^22 then
+    // 1) Both s and p can be represented exactly as 64-bit floating-point
+    // values
+    // (binary64).
+    // 2) Because s and p can be represented exactly as floating-point values,
+    // then s * p
+    // and s / p will produce correctly rounded values.
+    //
+    if (power < 0) {
+      d = d / simdjson::internal::power_of_ten[-power];
+    } else {
+      d = d * simdjson::internal::power_of_ten[power];
+    }
+    if (negative) {
+      d = -d;
+    }
+    return true;
+  }
+  // When 22 < power && power <  22 + 16, we could
+  // hope for another, secondary fast path.  It was
+  // described by David M. Gay in  "Correctly rounded
+  // binary-decimal and decimal-binary conversions." (1990)
+  // If you need to compute i * 10^(22 + x) for x < 16,
+  // first compute i * 10^x, if you know that result is exact
+  // (e.g., when i * 10^x < 2^53),
+  // then you can still proceed and do (i * 10^x) * 10^22.
+  // Is this worth your time?
+  // You need  22 < power *and* power <  22 + 16 *and* (i * 10^(x-22) < 2^53)
+  // for this second fast path to work.
+  // If you you have 22 < power *and* power <  22 + 16, and then you
+  // optimistically compute "i * 10^(x-22)", there is still a chance that you
+  // have wasted your time if i * 10^(x-22) >= 2^53. It makes the use cases of
+  // this optimization maybe less common than we would like. Source:
+  // http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion/
+  // also used in RapidJSON: https://rapidjson.org/strtod_8h_source.html
+
+  // The fast path has now failed, so we are failing back on the slower path.
+
+  // In the slow path, we need to adjust i so that it is > 1<<63 which is always
+  // possible, except if i == 0, so we handle i == 0 separately.
+  if(i == 0) {
+    d = negative ? -0.0 : 0.0;
+    return true;
+  }
+
+
+  // The exponent is 1024 + 63 + power
+  //     + floor(log(5**power)/log(2)).
+  // The 1024 comes from the ieee64 standard.
+  // The 63 comes from the fact that we use a 64-bit word.
+  //
+  // Computing floor(log(5**power)/log(2)) could be
+  // slow. Instead we use a fast function.
+  //
+  // For power in (-400,350), we have that
+  // (((152170 + 65536) * power ) >> 16);
+  // is equal to
+  //  floor(log(5**power)/log(2)) + power when power >= 0
+  // and it is equal to
+  //  ceil(log(5**-power)/log(2)) + power when power < 0
+  //
+  // The 65536 is (1<<16) and corresponds to
+  // (65536 * power) >> 16 ---> power
+  //
+  // ((152170 * power ) >> 16) is equal to
+  // floor(log(5**power)/log(2))
+  //
+  // Note that this is not magic: 152170/(1<<16) is
+  // approximately equal to log(5)/log(2).
+  // The 1<<16 value is a power of two; we could use a
+  // larger power of 2 if we wanted to.
+  //
+  int64_t exponent = (((152170 + 65536) * power) >> 16) + 1024 + 63;
+
+
+  // We want the most significant bit of i to be 1. Shift if needed.
+  int lz = leading_zeroes(i);
+  i <<= lz;
+
+
+  // We are going to need to do some 64-bit arithmetic to get a precise product.
+  // We use a table lookup approach.
+  // It is safe because
+  // power >= smallest_power
+  // and power <= largest_power
+  // We recover the mantissa of the power, it has a leading 1. It is always
+  // rounded down.
+  //
+  // We want the most significant 64 bits of the product. We know
+  // this will be non-zero because the most significant bit of i is
+  // 1.
+  const uint32_t index = 2 * uint32_t(power - simdjson::internal::smallest_power);
+  // Optimization: It may be that materializing the index as a variable might confuse some compilers and prevent effective complex-addressing loads. (Done for code clarity.)
+  //
+  // The full_multiplication function computes the 128-bit product of two 64-bit words
+  // with a returned value of type value128 with a "low component" corresponding to the
+  // 64-bit least significant bits of the product and with a "high component" corresponding
+  // to the 64-bit most significant bits of the product.
+#if SIMDJSON_STATIC_REFLECTION
+  simdjson::internal::value128 firstproduct = full_multiplication(i, simdjson::internal::powers_template<>::power_of_five_128[index]);
+#else
+  simdjson::internal::value128 firstproduct = full_multiplication(i, simdjson::internal::power_of_five_128[index]);
+#endif
+
+  // Both i and power_of_five_128[index] have their most significant bit set to 1 which
+  // implies that the either the most or the second most significant bit of the product
+  // is 1. We pack values in this manner for efficiency reasons: it maximizes the use
+  // we make of the product. It also makes it easy to reason about the product: there
+  // is 0 or 1 leading zero in the product.
+
+  // Unless the least significant 9 bits of the high (64-bit) part of the full
+  // product are all 1s, then we know that the most significant 55 bits are
+  // exact and no further work is needed. Having 55 bits is necessary because
+  // we need 53 bits for the mantissa but we have to have one rounding bit and
+  // we can waste a bit if the most significant bit of the product is zero.
+  if((firstproduct.high & 0x1FF) == 0x1FF) {
+    // We want to compute i * 5^q, but only care about the top 55 bits at most.
+    // Consider the scenario where q>=0. Then 5^q may not fit in 64-bits. Doing
+    // the full computation is wasteful. So we do what is called a "truncated
+    // multiplication".
+    // We take the most significant 64-bits, and we put them in
+    // power_of_five_128[index]. Usually, that's good enough to approximate i * 5^q
+    // to the desired approximation using one multiplication. Sometimes it does not suffice.
+    // Then we store the next most significant 64 bits in power_of_five_128[index + 1], and
+    // then we get a better approximation to i * 5^q.
+    //
+    // That's for when q>=0. The logic for q<0 is somewhat similar but it is somewhat
+    // more complicated.
+    //
+    // There is an extra layer of complexity in that we need more than 55 bits of
+    // accuracy in the round-to-even scenario.
+    //
+    // The full_multiplication function computes the 128-bit product of two 64-bit words
+    // with a returned value of type value128 with a "low component" corresponding to the
+    // 64-bit least significant bits of the product and with a "high component" corresponding
+    // to the 64-bit most significant bits of the product.
+#if SIMDJSON_STATIC_REFLECTION
+    simdjson::internal::value128 secondproduct = full_multiplication(i, simdjson::internal::powers_template<>::power_of_five_128[index + 1]);
+#else
+    simdjson::internal::value128 secondproduct = full_multiplication(i, simdjson::internal::power_of_five_128[index + 1]);
+#endif
+    firstproduct.low += secondproduct.high;
+    if(secondproduct.high > firstproduct.low) { firstproduct.high++; }
+    // As it has been proven by Noble Mushtak and Daniel Lemire in "Fast Number Parsing Without
+    // Fallback" (https://arxiv.org/abs/2212.06644), at this point we are sure that the product
+    // is sufficiently accurate, and more computation is not needed.
+  }
+  uint64_t lower = firstproduct.low;
+  uint64_t upper = firstproduct.high;
+  // The final mantissa should be 53 bits with a leading 1.
+  // We shift it so that it occupies 54 bits with a leading 1.
+  ///////
+  uint64_t upperbit = upper >> 63;
+  uint64_t mantissa = upper >> (upperbit + 9);
+  lz += int(1 ^ upperbit);
+
+  // Here we have mantissa < (1<<54).
+  int64_t real_exponent = exponent - lz;
+  if (simdjson_unlikely(real_exponent <= 0)) { // we have a subnormal?
+    // Here have that real_exponent <= 0 so -real_exponent >= 0
+    if(-real_exponent + 1 >= 64) { // if we have more than 64 bits below the minimum exponent, you have a zero for sure.
+      d = negative ? -0.0 : 0.0;
+      return true;
+    }
+    // next line is safe because -real_exponent + 1 < 0
+    mantissa >>= -real_exponent + 1;
+    // Thankfully, we can't have both "round-to-even" and subnormals because
+    // "round-to-even" only occurs for powers close to 0.
+    mantissa += (mantissa & 1); // round up
+    mantissa >>= 1;
+    // There is a weird scenario where we don't have a subnormal but just.
+    // Suppose we start with 2.2250738585072013e-308, we end up
+    // with 0x3fffffffffffff x 2^-1023-53 which is technically subnormal
+    // whereas 0x40000000000000 x 2^-1023-53  is normal. Now, we need to round
+    // up 0x3fffffffffffff x 2^-1023-53  and once we do, we are no longer
+    // subnormal, but we can only know this after rounding.
+    // So we only declare a subnormal if we are smaller than the threshold.
+    real_exponent = (mantissa < (uint64_t(1) << 52)) ? 0 : 1;
+    d = to_double(mantissa, real_exponent, negative);
+    return true;
+  }
+  // We have to round to even. The "to even" part
+  // is only a problem when we are right in between two floats
+  // which we guard against.
+  // If we have lots of trailing zeros, we may fall right between two
+  // floating-point values.
+  //
+  // The round-to-even cases take the form of a number 2m+1 which is in (2^53,2^54]
+  // times a power of two. That is, it is right between a number with binary significand
+  // m and another number with binary significand m+1; and it must be the case
+  // that it cannot be represented by a float itself.
+  //
+  // We must have that w * 10 ^q == (2m+1) * 2^p for some power of two 2^p.
+  // Recall that 10^q = 5^q * 2^q.
+  // When q >= 0, we must have that (2m+1) is divible by 5^q, so 5^q <= 2^54. We have that
+  //  5^23 <=  2^54 and it is the last power of five to qualify, so q <= 23.
+  // When q<0, we have  w  >=  (2m+1) x 5^{-q}.  We must have that w<2^{64} so
+  // (2m+1) x 5^{-q} < 2^{64}. We have that 2m+1>2^{53}. Hence, we must have
+  // 2^{53} x 5^{-q} < 2^{64}.
+  // Hence we have 5^{-q} < 2^{11}$ or q>= -4.
+  //
+  // We require lower <= 1 and not lower == 0 because we could not prove that
+  // that lower == 0 is implied; but we could prove that lower <= 1 is a necessary and sufficient test.
+  if (simdjson_unlikely((lower <= 1) && (power >= -4) && (power <= 23) && ((mantissa & 3) == 1))) {
+    if((mantissa  << (upperbit + 64 - 53 - 2)) ==  upper) {
+      mantissa &= ~1;             // flip it so that we do not round up
+    }
+  }
+
+  mantissa += mantissa & 1;
+  mantissa >>= 1;
+
+  // Here we have mantissa < (1<<53), unless there was an overflow
+  if (mantissa >= (1ULL << 53)) {
+    //////////
+    // This will happen when parsing values such as 7.2057594037927933e+16
+    ////////
+    mantissa = (1ULL << 52);
+    real_exponent++;
+  }
+  mantissa &= ~(1ULL << 52);
+  // we have to check that real_exponent is in range, otherwise we bail out
+  if (simdjson_unlikely(real_exponent > 2046)) {
+    // We have an infinite value!!! We could actually throw an error here if we could.
+    return false;
+  }
+  d = to_double(mantissa, real_exponent, negative);
+  return true;
+}
+
+// We call a fallback floating-point parser that might be slow. Note
+// it will accept JSON numbers, but the JSON spec. is more restrictive so
+// before you call parse_float_fallback, you need to have validated the input
+// string with the JSON grammar.
+// It will return an error (false) if the parsed number is infinite.
+// The string parsing itself always succeeds. We know that there is at least
+// one digit.
+static bool parse_float_fallback(const uint8_t *ptr, double *outDouble) {
+  *outDouble = simdjson::internal::from_chars(reinterpret_cast(ptr));
+  // We do not accept infinite values.
+
+  // Detecting finite values in a portable manner is ridiculously hard, ideally
+  // we would want to do:
+  // return !std::isfinite(*outDouble);
+  // but that mysteriously fails under legacy/old libc++ libraries, see
+  // https://github.com/simdjson/simdjson/issues/1286
+  //
+  // Therefore, fall back to this solution (the extra parens are there
+  // to handle that max may be a macro on windows).
+  return !(*outDouble > (std::numeric_limits::max)() || *outDouble < std::numeric_limits::lowest());
+}
+
+static bool parse_float_fallback(const uint8_t *ptr, const uint8_t *end_ptr, double *outDouble) {
+  *outDouble = simdjson::internal::from_chars(reinterpret_cast(ptr), reinterpret_cast(end_ptr));
+  // We do not accept infinite values.
+
+  // Detecting finite values in a portable manner is ridiculously hard, ideally
+  // we would want to do:
+  // return !std::isfinite(*outDouble);
+  // but that mysteriously fails under legacy/old libc++ libraries, see
+  // https://github.com/simdjson/simdjson/issues/1286
+  //
+  // Therefore, fall back to this solution (the extra parens are there
+  // to handle that max may be a macro on windows).
+  return !(*outDouble > (std::numeric_limits::max)() || *outDouble < std::numeric_limits::lowest());
+}
+
+// check quickly whether the next 8 chars are made of digits
+// at a glance, it looks better than Mula's
+// http://0x80.pl/articles/swar-digits-validate.html
+simdjson_inline bool is_made_of_eight_digits_fast(const uint8_t *chars) {
+  uint64_t val;
+  // this can read up to 7 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(7 <= SIMDJSON_PADDING, "SIMDJSON_PADDING must be bigger than 7");
+  std::memcpy(&val, chars, 8);
+  // a branchy method might be faster:
+  // return (( val & 0xF0F0F0F0F0F0F0F0 ) == 0x3030303030303030)
+  //  && (( (val + 0x0606060606060606) & 0xF0F0F0F0F0F0F0F0 ) ==
+  //  0x3030303030303030);
+  return (((val & 0xF0F0F0F0F0F0F0F0) |
+           (((val + 0x0606060606060606) & 0xF0F0F0F0F0F0F0F0) >> 4)) ==
+          0x3333333333333333);
+}
+
+template
+SIMDJSON_NO_SANITIZE_UNDEFINED // We deliberately allow overflow here and check later
+simdjson_inline bool parse_digit(const uint8_t c, I &i) {
+  const uint8_t digit = static_cast(c - '0');
+  if (digit > 9) {
+    return false;
+  }
+  // PERF NOTE: multiplication by 10 is cheaper than arbitrary integer multiplication
+  i = 10 * i + digit; // might overflow, we will handle the overflow later
+  return true;
+}
+
+simdjson_inline bool is_digit(const uint8_t c) {
+  return static_cast(c - '0') <= 9;
+}
+
+simdjson_warn_unused simdjson_inline error_code parse_decimal_after_separator(simdjson_unused const uint8_t *const src, const uint8_t *&p, uint64_t &i, int64_t &exponent) {
+  // we continue with the fiction that we have an integer. If the
+  // floating point number is representable as x * 10^z for some integer
+  // z that fits in 53 bits, then we will be able to convert back the
+  // the integer into a float in a lossless manner.
+  const uint8_t *const first_after_period = p;
+
+#ifdef SIMDJSON_SWAR_NUMBER_PARSING
+#if SIMDJSON_SWAR_NUMBER_PARSING
+  // this helps if we have lots of decimals!
+  // this turns out to be frequent enough.
+  if (is_made_of_eight_digits_fast(p)) {
+    i = i * 100000000 + parse_eight_digits_unrolled(p);
+    p += 8;
+  }
+#endif // SIMDJSON_SWAR_NUMBER_PARSING
+#endif // #ifdef SIMDJSON_SWAR_NUMBER_PARSING
+  // Unrolling the first digit makes a small difference on some implementations (e.g. westmere)
+  if (parse_digit(*p, i)) { ++p; }
+  while (parse_digit(*p, i)) { p++; }
+  exponent = first_after_period - p;
+  // Decimal without digits (123.) is illegal
+  if (exponent == 0) {
+    return INVALID_NUMBER(src);
+  }
+  return SUCCESS;
+}
+
+simdjson_warn_unused simdjson_inline error_code parse_exponent(simdjson_unused const uint8_t *const src, const uint8_t *&p, int64_t &exponent) {
+  // Exp Sign: -123.456e[-]78
+  bool neg_exp = ('-' == *p);
+  if (neg_exp || '+' == *p) { p++; } // Skip + as well
+
+  // Exponent: -123.456e-[78]
+  auto start_exp = p;
+  int64_t exp_number = 0;
+  while (parse_digit(*p, exp_number)) { ++p; }
+  // It is possible for parse_digit to overflow.
+  // In particular, it could overflow to INT64_MIN, and we cannot do - INT64_MIN.
+  // Thus we *must* check for possible overflow before we negate exp_number.
+
+  // Performance notes: it may seem like combining the two "simdjson_unlikely checks" below into
+  // a single simdjson_unlikely path would be faster. The reasoning is sound, but the compiler may
+  // not oblige and may, in fact, generate two distinct paths in any case. It might be
+  // possible to do uint64_t(p - start_exp - 1) >= 18 but it could end up trading off
+  // instructions for a simdjson_likely branch, an unconclusive gain.
+
+  // If there were no digits, it's an error.
+  if (simdjson_unlikely(p == start_exp)) {
+    return INVALID_NUMBER(src);
+  }
+  // We have a valid positive exponent in exp_number at this point, except that
+  // it may have overflowed.
+
+  // If there were more than 18 digits, we may have overflowed the integer. We have to do
+  // something!!!!
+  if (simdjson_unlikely(p > start_exp+18)) {
+    // Skip leading zeroes: 1e000000000000000000001 is technically valid and does not overflow
+    while (*start_exp == '0') { start_exp++; }
+    // 19 digits could overflow int64_t and is kind of absurd anyway. We don't
+    // support exponents smaller than -999,999,999,999,999,999 and bigger
+    // than 999,999,999,999,999,999.
+    // We can truncate.
+    // Note that 999999999999999999 is assuredly too large. The maximal ieee64 value before
+    // infinity is ~1.8e308. The smallest subnormal is ~5e-324. So, actually, we could
+    // truncate at 324.
+    // Note that there is no reason to fail per se at this point in time.
+    // E.g., 0e999999999999999999999 is a fine number.
+    if (p > start_exp+18) { exp_number = 999999999999999999; }
+  }
+  // At this point, we know that exp_number is a sane, positive, signed integer.
+  // It is <= 999,999,999,999,999,999. As long as 'exponent' is in
+  // [-8223372036854775808, 8223372036854775808], we won't overflow. Because 'exponent'
+  // is bounded in magnitude by the size of the JSON input, we are fine in this universe.
+  // To sum it up: the next line should never overflow.
+  exponent += (neg_exp ? -exp_number : exp_number);
+  return SUCCESS;
+}
+
+simdjson_inline bool check_if_integer(const uint8_t *const src, size_t max_length) {
+  const uint8_t *const srcend = src + max_length;
+  bool negative = (*src == '-'); // we can always read at least one character after the '-'
+  const uint8_t *p = src + uint8_t(negative);
+  if(p == srcend) { return false; }
+  if(*p == '0') {
+    ++p;
+    if(p == srcend) { return true; }
+    if(jsoncharutils::is_not_structural_or_whitespace(*p)) { return false; }
+    return true;
+  }
+  while(p != srcend && is_digit(*p)) { ++p; }
+  if(p == srcend) { return true; }
+  if(jsoncharutils::is_not_structural_or_whitespace(*p)) { return false; }
+  return true;
+}
+
+simdjson_inline size_t significant_digits(const uint8_t * start_digits, size_t digit_count) {
+  // It is possible that the integer had an overflow.
+  // We have to handle the case where we have 0.0000somenumber.
+  const uint8_t *start = start_digits;
+  while ((*start == '0') || (*start == '.')) { ++start; }
+  // we over-decrement by one when there is a '.'
+  return digit_count - size_t(start - start_digits);
+}
+
+} // unnamed namespace
+
+/** @private */
+static error_code slow_float_parsing(simdjson_unused const uint8_t * src, double* answer) {
+  if (parse_float_fallback(src, answer)) {
+    return SUCCESS;
+  }
+  return INVALID_NUMBER(src);
+}
+
+/** @private */
+template
+simdjson_warn_unused simdjson_inline error_code write_float(const uint8_t *const src, bool negative, uint64_t i, const uint8_t * start_digits, size_t digit_count, int64_t exponent, W &writer) {
+  // If we frequently had to deal with long strings of digits,
+  // we could extend our code by using a 128-bit integer instead
+  // of a 64-bit integer. However, this is uncommon in practice.
+  //
+  // 9999999999999999999 < 2**64 so we can accommodate 19 digits.
+  // If we have a decimal separator, then digit_count - 1 is the number of digits, but we
+  // may not have a decimal separator!
+  if (simdjson_unlikely(digit_count > 19 && significant_digits(start_digits, digit_count) > 19)) {
+    // Ok, chances are good that we had an overflow!
+    // this is almost never going to get called!!!
+    // we start anew, going slowly!!!
+    // This will happen in the following examples:
+    // 10000000000000000000000000000000000000000000e+308
+    // 3.1415926535897932384626433832795028841971693993751
+    //
+    // NOTE: We do not pass a reference to the to slow_float_parsing. If we passed our writer
+    // reference to it, it would force it to be stored in memory, preventing the compiler from
+    // picking it apart and putting into registers. i.e. if we pass it as reference,
+    // it gets slow.
+    double d;
+    error_code error = slow_float_parsing(src, &d);
+    writer.append_double(d);
+    return error;
+  }
+  // NOTE: it's weird that the simdjson_unlikely() only wraps half the if, but it seems to get slower any other
+  // way we've tried: https://github.com/simdjson/simdjson/pull/990#discussion_r448497331
+  // To future reader: we'd love if someone found a better way, or at least could explain this result!
+  if (simdjson_unlikely(exponent < simdjson::internal::smallest_power) || (exponent > simdjson::internal::largest_power)) {
+    //
+    // Important: smallest_power is such that it leads to a zero value.
+    // Observe that 18446744073709551615e-343 == 0, i.e. (2**64 - 1) e -343 is zero
+    // so something x 10^-343 goes to zero, but not so with  something x 10^-342.
+    static_assert(simdjson::internal::smallest_power <= -342, "smallest_power is not small enough");
+    //
+    if((exponent < simdjson::internal::smallest_power) || (i == 0)) {
+      // E.g. Parse "-0.0e-999" into the same value as "-0.0". See https://en.wikipedia.org/wiki/Signed_zero
+      WRITE_DOUBLE(negative ? -0.0 : 0.0, src, writer);
+      return SUCCESS;
+    } else { // (exponent > largest_power) and (i != 0)
+      // We have, for sure, an infinite value and simdjson refuses to parse infinite values.
+      return INVALID_NUMBER(src);
+    }
+  }
+  double d;
+  if (!compute_float_64(exponent, i, negative, d)) {
+    // we are almost never going to get here.
+    if (!parse_float_fallback(src, &d)) { return INVALID_NUMBER(src); }
+  }
+  WRITE_DOUBLE(d, src, writer);
+  return SUCCESS;
+}
+
+// parse the number at src
+// define JSON_TEST_NUMBERS for unit testing
+//
+// It is assumed that the number is followed by a structural ({,},],[) character
+// or a white space character. If that is not the case (e.g., when the JSON
+// document is made of a single number), then it is necessary to copy the
+// content and append a space before calling this function.
+//
+// Our objective is accurate parsing (ULP of 0) at high speed.
+template
+simdjson_warn_unused simdjson_inline error_code parse_number(const uint8_t *const src, W &writer);
+
+// for performance analysis, it is sometimes  useful to skip parsing
+#ifdef SIMDJSON_SKIPNUMBERPARSING
+
+template
+simdjson_warn_unused simdjson_inline error_code parse_number(const uint8_t *const, W &writer) {
+  writer.append_s64(0);        // always write zero
+  return SUCCESS;              // always succeeds
+}
+
+simdjson_unused simdjson_inline simdjson_result parse_unsigned(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline simdjson_result parse_integer(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline simdjson_result parse_double(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline simdjson_result parse_unsigned_in_string(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline simdjson_result parse_integer_in_string(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline simdjson_result parse_double_in_string(const uint8_t * const src) noexcept { return 0; }
+simdjson_unused simdjson_inline bool is_negative(const uint8_t * src) noexcept  { return false; }
+simdjson_unused simdjson_inline simdjson_result is_integer(const uint8_t * src) noexcept  { return false; }
+simdjson_unused simdjson_inline simdjson_result get_number_type(const uint8_t * src) noexcept { return number_type::signed_integer; }
+#else
+
+// parse the number at src
+// define JSON_TEST_NUMBERS for unit testing
+//
+// It is assumed that the number is followed by a structural ({,},],[) character
+// or a white space character. If that is not the case (e.g., when the JSON
+// document is made of a single number), then it is necessary to copy the
+// content and append a space before calling this function.
+//
+// Our objective is accurate parsing (ULP of 0) at high speed.
+template
+simdjson_warn_unused simdjson_inline error_code parse_number(const uint8_t *const src, W &writer) {
+  //
+  // Check for minus sign
+  //
+  bool negative = (*src == '-');
+  const uint8_t *p = src + uint8_t(negative);
+
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while (parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  if (digit_count == 0 || ('0' == *start_digits && digit_count > 1)) { return INVALID_NUMBER(src); }
+
+  //
+  // Handle floats if there is a . or e (or both)
+  //
+  int64_t exponent = 0;
+  bool is_float = false;
+  if ('.' == *p) {
+    is_float = true;
+    ++p;
+    SIMDJSON_TRY( parse_decimal_after_separator(src, p, i, exponent) );
+    digit_count = int(p - start_digits); // used later to guard against overflows
+  }
+  if (('e' == *p) || ('E' == *p)) {
+    is_float = true;
+    ++p;
+    SIMDJSON_TRY( parse_exponent(src, p, exponent) );
+  }
+  if (is_float) {
+    const bool dirty_end = jsoncharutils::is_not_structural_or_whitespace(*p);
+    SIMDJSON_TRY( write_float(src, negative, i, start_digits, digit_count, exponent, writer) );
+    if (dirty_end) { return INVALID_NUMBER(src); }
+    return SUCCESS;
+  }
+
+  // The longest negative 64-bit number is 19 digits.
+  // The longest positive 64-bit number is 20 digits.
+  // We do it this way so we don't trigger this branch unless we must.
+  size_t longest_digit_count = negative ? 19 : 20;
+  if (digit_count > longest_digit_count) { return BIGINT_NUMBER(src); }
+  if (digit_count == longest_digit_count) {
+    if (negative) {
+      // Anything negative above INT64_MAX+1 is invalid
+      if (i > uint64_t(INT64_MAX)+1) { return BIGINT_NUMBER(src);  }
+      WRITE_INTEGER(~i+1, src, writer);
+      if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
+      return SUCCESS;
+    // Positive overflow check:
+    // - A 20 digit number starting with 2-9 is overflow, because 18,446,744,073,709,551,615 is the
+    //   biggest uint64_t.
+    // - A 20 digit number starting with 1 is overflow if it is less than INT64_MAX.
+    //   If we got here, it's a 20 digit number starting with the digit "1".
+    // - If a 20 digit number starting with 1 overflowed (i*10+digit), the result will be smaller
+    //   than 1,553,255,926,290,448,384.
+    // - That is smaller than the smallest possible 20-digit number the user could write:
+    //   10,000,000,000,000,000,000.
+    // - Therefore, if the number is positive and lower than that, it's overflow.
+    // - The value we are looking at is less than or equal to INT64_MAX.
+    //
+    }  else if (src[0] != uint8_t('1') || i <= uint64_t(INT64_MAX)) { return INVALID_NUMBER(src); }
+  }
+
+  // Write unsigned if it does not fit in a signed integer.
+  if (i > uint64_t(INT64_MAX)) {
+    WRITE_UNSIGNED(i, src, writer);
+  } else {
+#if SIMDJSON_MINUS_ZERO_AS_FLOAT
+    if(i == 0 && negative) {
+      // We have to write -0.0 instead of 0
+      WRITE_DOUBLE(-0.0, src, writer);
+    } else {
+      WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
+    }
+#else
+  WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
+#endif
+  }
+  if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
+  return SUCCESS;
+}
+
+// Inlineable functions
+namespace {
+
+// This table can be used to characterize the final character of an integer
+// string. For JSON structural character and allowable white space characters,
+// we return SUCCESS. For 'e', '.' and 'E', we return INCORRECT_TYPE. Otherwise
+// we return NUMBER_ERROR.
+// Optimization note: we could easily reduce the size of the table by half (to 128)
+// at the cost of an extra branch.
+// Optimization note: we want the values to use at most 8 bits (not, e.g., 32 bits):
+static_assert(error_code(uint8_t(NUMBER_ERROR))== NUMBER_ERROR, "bad NUMBER_ERROR cast");
+static_assert(error_code(uint8_t(SUCCESS))== SUCCESS, "bad NUMBER_ERROR cast");
+static_assert(error_code(uint8_t(INCORRECT_TYPE))== INCORRECT_TYPE, "bad NUMBER_ERROR cast");
+
+const uint8_t integer_string_finisher[256] = {
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, SUCCESS,
+    SUCCESS,      NUMBER_ERROR,   NUMBER_ERROR, SUCCESS,      NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   SUCCESS,      NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, SUCCESS,
+    NUMBER_ERROR, INCORRECT_TYPE, NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, SUCCESS,      NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, INCORRECT_TYPE,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, SUCCESS,        NUMBER_ERROR, SUCCESS,      NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, INCORRECT_TYPE, NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, SUCCESS,      NUMBER_ERROR,
+    SUCCESS,      NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR, NUMBER_ERROR,   NUMBER_ERROR, NUMBER_ERROR, NUMBER_ERROR,
+    NUMBER_ERROR};
+
+// Parse any number from 0 to 18,446,744,073,709,551,615
+simdjson_unused simdjson_inline simdjson_result parse_unsigned(const uint8_t * const src) noexcept {
+  const uint8_t *p = src;
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while (parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  // The longest positive 64-bit number is 20 digits.
+  // We do it this way so we don't trigger this branch unless we must.
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > 20))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > 20)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*p)) {
+  //  return (*p == '.' || *p == 'e' || *p == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if (integer_string_finisher[*p] != SUCCESS) { return error_code(integer_string_finisher[*p]); }
+
+  if (digit_count == 20) {
+    // Positive overflow check:
+    // - A 20 digit number starting with 2-9 is overflow, because 18,446,744,073,709,551,615 is the
+    //   biggest uint64_t.
+    // - A 20 digit number starting with 1 is overflow if it is less than INT64_MAX.
+    //   If we got here, it's a 20 digit number starting with the digit "1".
+    // - If a 20 digit number starting with 1 overflowed (i*10+digit), the result will be smaller
+    //   than 1,553,255,926,290,448,384.
+    // - That is smaller than the smallest possible 20-digit number the user could write:
+    //   10,000,000,000,000,000,000.
+    // - Therefore, if the number is positive and lower than that, it's overflow.
+    // - The value we are looking at is less than or equal to INT64_MAX.
+    //
+    if (src[0] != uint8_t('1') || i <= uint64_t(INT64_MAX)) { return INCORRECT_TYPE; }
+  }
+
+  return i;
+}
+
+
+// Parse any number from 0 to 18,446,744,073,709,551,615
+// Never read at src_end or beyond
+simdjson_unused simdjson_inline simdjson_result parse_unsigned(const uint8_t * const src, const uint8_t * const src_end) noexcept {
+  const uint8_t *p = src;
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while ((p != src_end) && parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  // The longest positive 64-bit number is 20 digits.
+  // We do it this way so we don't trigger this branch unless we must.
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > 20))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > 20)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*p)) {
+  //  return (*p == '.' || *p == 'e' || *p == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if ((p != src_end) && integer_string_finisher[*p] != SUCCESS) { return error_code(integer_string_finisher[*p]); }
+
+  if (digit_count == 20) {
+    // Positive overflow check:
+    // - A 20 digit number starting with 2-9 is overflow, because 18,446,744,073,709,551,615 is the
+    //   biggest uint64_t.
+    // - A 20 digit number starting with 1 is overflow if it is less than INT64_MAX.
+    //   If we got here, it's a 20 digit number starting with the digit "1".
+    // - If a 20 digit number starting with 1 overflowed (i*10+digit), the result will be smaller
+    //   than 1,553,255,926,290,448,384.
+    // - That is smaller than the smallest possible 20-digit number the user could write:
+    //   10,000,000,000,000,000,000.
+    // - Therefore, if the number is positive and lower than that, it's overflow.
+    // - The value we are looking at is less than or equal to INT64_MAX.
+    //
+    if (src[0] != uint8_t('1') || i <= uint64_t(INT64_MAX)) { return INCORRECT_TYPE; }
+  }
+
+  return i;
+}
+
+// Parse any number from 0 to 18,446,744,073,709,551,615
+simdjson_unused simdjson_inline simdjson_result parse_unsigned_in_string(const uint8_t * const src) noexcept {
+  const uint8_t *p = src + 1;
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while (parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  // The longest positive 64-bit number is 20 digits.
+  // We do it this way so we don't trigger this branch unless we must.
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > 20))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > 20)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*p)) {
+  //  return (*p == '.' || *p == 'e' || *p == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if (*p != '"') { return NUMBER_ERROR; }
+
+  if (digit_count == 20) {
+    // Positive overflow check:
+    // - A 20 digit number starting with 2-9 is overflow, because 18,446,744,073,709,551,615 is the
+    //   biggest uint64_t.
+    // - A 20 digit number starting with 1 is overflow if it is less than INT64_MAX.
+    //   If we got here, it's a 20 digit number starting with the digit "1".
+    // - If a 20 digit number starting with 1 overflowed (i*10+digit), the result will be smaller
+    //   than 1,553,255,926,290,448,384.
+    // - That is smaller than the smallest possible 20-digit number the user could write:
+    //   10,000,000,000,000,000,000.
+    // - Therefore, if the number is positive and lower than that, it's overflow.
+    // - The value we are looking at is less than or equal to INT64_MAX.
+    //
+    // Note: we use src[1] and not src[0] because src[0] is the quote character in this
+    // instance.
+    if (src[1] != uint8_t('1') || i <= uint64_t(INT64_MAX)) { return INCORRECT_TYPE; }
+  }
+
+  return i;
+}
+
+// Parse any number from  -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+simdjson_unused simdjson_inline simdjson_result parse_integer(const uint8_t *src) noexcept {
+  //
+  // Check for minus sign
+  //
+  bool negative = (*src == '-');
+  const uint8_t *p = src + uint8_t(negative);
+
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while (parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  // We go from
+  // -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+  // so we can never represent numbers that have more than 19 digits.
+  size_t longest_digit_count = 19;
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > longest_digit_count))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > longest_digit_count)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*p)) {
+  //  return (*p == '.' || *p == 'e' || *p == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if(integer_string_finisher[*p] != SUCCESS) { return error_code(integer_string_finisher[*p]); }
+  // Negative numbers have can go down to - INT64_MAX - 1 whereas positive numbers are limited to INT64_MAX.
+  // Performance note: This check is only needed when digit_count == longest_digit_count but it is
+  // so cheap that we might as well always make it.
+  if(i > uint64_t(INT64_MAX) + uint64_t(negative)) { return INCORRECT_TYPE; }
+  return negative ? (~i+1) : i;
+}
+
+// Parse any number from  -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+// Never read at src_end or beyond
+simdjson_unused simdjson_inline simdjson_result parse_integer(const uint8_t * const src, const uint8_t * const src_end) noexcept {
+  //
+  // Check for minus sign
+  //
+  if(src == src_end) { return NUMBER_ERROR; }
+  bool negative = (*src == '-');
+  const uint8_t *p = src + uint8_t(negative);
+
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = p;
+  uint64_t i = 0;
+  while ((p != src_end) && parse_digit(*p, i)) { p++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(p - start_digits);
+  // We go from
+  // -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+  // so we can never represent numbers that have more than 19 digits.
+  size_t longest_digit_count = 19;
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > longest_digit_count))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > longest_digit_count)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*p)) {
+  //  return (*p == '.' || *p == 'e' || *p == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if((p != src_end) && integer_string_finisher[*p] != SUCCESS) { return error_code(integer_string_finisher[*p]); }
+  // Negative numbers have can go down to - INT64_MAX - 1 whereas positive numbers are limited to INT64_MAX.
+  // Performance note: This check is only needed when digit_count == longest_digit_count but it is
+  // so cheap that we might as well always make it.
+  if(i > uint64_t(INT64_MAX) + uint64_t(negative)) { return INCORRECT_TYPE; }
+  return negative ? (~i+1) : i;
+}
+
+// Parse any number from  -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+simdjson_unused simdjson_inline simdjson_result parse_integer_in_string(const uint8_t *src) noexcept {
+  //
+  // Check for minus sign
+  //
+  bool negative = (*(src + 1) == '-');
+  src += uint8_t(negative) + 1;
+
+  //
+  // Parse the integer part.
+  //
+  // PERF NOTE: we don't use is_made_of_eight_digits_fast because large integers like 123456789 are rare
+  const uint8_t *const start_digits = src;
+  uint64_t i = 0;
+  while (parse_digit(*src, i)) { src++; }
+
+  // If there were no digits, or if the integer starts with 0 and has more than one digit, it's an error.
+  // Optimization note: size_t is expected to be unsigned.
+  size_t digit_count = size_t(src - start_digits);
+  // We go from
+  // -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+  // so we can never represent numbers that have more than 19 digits.
+  size_t longest_digit_count = 19;
+  // Optimization note: the compiler can probably merge
+  // ((digit_count == 0) || (digit_count > longest_digit_count))
+  // into a single  branch since digit_count is unsigned.
+  if ((digit_count == 0) || (digit_count > longest_digit_count)) { return INCORRECT_TYPE; }
+  // Here digit_count > 0.
+  if (('0' == *start_digits) && (digit_count > 1)) { return NUMBER_ERROR; }
+  // We can do the following...
+  // if (!jsoncharutils::is_structural_or_whitespace(*src)) {
+  //  return (*src == '.' || *src == 'e' || *src == 'E') ? INCORRECT_TYPE : NUMBER_ERROR;
+  // }
+  // as a single table lookup:
+  if(*src != '"') { return NUMBER_ERROR; }
+  // Negative numbers have can go down to - INT64_MAX - 1 whereas positive numbers are limited to INT64_MAX.
+  // Performance note: This check is only needed when digit_count == longest_digit_count but it is
+  // so cheap that we might as well always make it.
+  if(i > uint64_t(INT64_MAX) + uint64_t(negative)) { return INCORRECT_TYPE; }
+  return negative ? (~i+1) : i;
+}
+
+simdjson_unused simdjson_inline simdjson_result parse_double(const uint8_t * src) noexcept {
+  //
+  // Check for minus sign
+  //
+  bool negative = (*src == '-');
+  src += uint8_t(negative);
+
+  //
+  // Parse the integer part.
+  //
+  uint64_t i = 0;
+  const uint8_t *p = src;
+  p += parse_digit(*p, i);
+  bool leading_zero = (i == 0);
+  while (parse_digit(*p, i)) { p++; }
+  // no integer digits, or 0123 (zero must be solo)
+  if ( p == src ) { return INCORRECT_TYPE; }
+  if ( (leading_zero && p != src+1)) { return NUMBER_ERROR; }
+
+  //
+  // Parse the decimal part.
+  //
+  int64_t exponent = 0;
+  bool overflow;
+  if (simdjson_likely(*p == '.')) {
+    p++;
+    const uint8_t *start_decimal_digits = p;
+    if (!parse_digit(*p, i)) { return NUMBER_ERROR; } // no decimal digits
+    p++;
+    while (parse_digit(*p, i)) { p++; }
+    exponent = -(p - start_decimal_digits);
+
+    // Overflow check. More than 19 digits (minus the decimal) may be overflow.
+    overflow = p-src-1 > 19;
+    if (simdjson_unlikely(overflow && leading_zero)) {
+      // Skip leading 0.00000 and see if it still overflows
+      const uint8_t *start_digits = src + 2;
+      while (*start_digits == '0') { start_digits++; }
+      overflow = p-start_digits > 19;
+    }
+  } else {
+    overflow = p-src > 19;
+  }
+
+  //
+  // Parse the exponent
+  //
+  if (*p == 'e' || *p == 'E') {
+    p++;
+    bool exp_neg = *p == '-';
+    p += exp_neg || *p == '+';
+
+    uint64_t exp = 0;
+    const uint8_t *start_exp_digits = p;
+    while (parse_digit(*p, exp)) { p++; }
+    // no exp digits, or 20+ exp digits
+    if (p-start_exp_digits == 0 || p-start_exp_digits > 19) { return NUMBER_ERROR; }
+
+    exponent += exp_neg ? 0-exp : exp;
+  }
+
+  if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return NUMBER_ERROR; }
+
+  overflow = overflow || exponent < simdjson::internal::smallest_power || exponent > simdjson::internal::largest_power;
+
+  //
+  // Assemble (or slow-parse) the float
+  //
+  double d;
+  if (simdjson_likely(!overflow)) {
+    if (compute_float_64(exponent, i, negative, d)) { return d; }
+  }
+  if (!parse_float_fallback(src - uint8_t(negative), &d)) {
+    return NUMBER_ERROR;
+  }
+  return d;
+}
+
+simdjson_unused simdjson_inline bool is_negative(const uint8_t * src) noexcept {
+  return (*src == '-');
+}
+
+simdjson_unused simdjson_inline simdjson_result is_integer(const uint8_t * src) noexcept {
+  bool negative = (*src == '-');
+  src += uint8_t(negative);
+  const uint8_t *p = src;
+  while(static_cast(*p - '0') <= 9) { p++; }
+  if ( p == src ) { return NUMBER_ERROR; }
+  if (jsoncharutils::is_structural_or_whitespace(*p)) { return true; }
+  return false;
+}
+
+simdjson_unused simdjson_inline simdjson_result get_number_type(const uint8_t * src) noexcept {
+  bool negative = (*src == '-');
+  src += uint8_t(negative);
+  const uint8_t *p = src;
+  while(static_cast(*p - '0') <= 9) { p++; }
+  size_t digit_count = size_t(p - src);
+  if ( p == src ) { return NUMBER_ERROR; }
+  if (jsoncharutils::is_structural_or_whitespace(*p)) {
+    static const uint8_t * smaller_big_integer = reinterpret_cast("9223372036854775808");
+    // We have an integer.
+    if(simdjson_unlikely(digit_count > 20)) {
+      return number_type::big_integer;
+    }
+    // If the number is negative and valid, it must be a signed integer.
+    if(negative) {
+      if (simdjson_unlikely(digit_count > 19)) return number_type::big_integer;
+      if (simdjson_unlikely(digit_count == 19 && memcmp(src, smaller_big_integer, 19) > 0)) {
+        return number_type::big_integer;
+      }
+#if SIMDJSON_MINUS_ZERO_AS_FLOAT
+      if(digit_count == 1 && src[0] == '0') {
+        // We have to write -0.0 instead of 0
+        return number_type::floating_point_number;
+      }
+#endif
+      return number_type::signed_integer;
+    }
+    // Let us check if we have a big integer (>=2**64).
+    static const uint8_t * two_to_sixtyfour = reinterpret_cast("18446744073709551616");
+    if((digit_count > 20) || (digit_count == 20 && memcmp(src, two_to_sixtyfour, 20) >= 0)) {
+      return number_type::big_integer;
+    }
+    // The number is positive and smaller than 18446744073709551616 (or 2**64).
+    // We want values larger or equal to 9223372036854775808 to be unsigned
+    // integers, and the other values to be signed integers.
+    if((digit_count == 20) || (digit_count >= 19 && memcmp(src, smaller_big_integer, 19) >= 0)) {
+      return number_type::unsigned_integer;
+    }
+    return number_type::signed_integer;
+  }
+  // Hopefully, we have 'e' or 'E' or '.'.
+  return number_type::floating_point_number;
+}
+
+// Never read at src_end or beyond
+simdjson_unused simdjson_inline simdjson_result parse_double(const uint8_t * src, const uint8_t * const src_end) noexcept {
+  if(src == src_end) { return NUMBER_ERROR; }
+  //
+  // Check for minus sign
+  //
+  bool negative = (*src == '-');
+  src += uint8_t(negative);
+
+  //
+  // Parse the integer part.
+  //
+  uint64_t i = 0;
+  const uint8_t *p = src;
+  if(p == src_end) { return NUMBER_ERROR; }
+  p += parse_digit(*p, i);
+  bool leading_zero = (i == 0);
+  while ((p != src_end) && parse_digit(*p, i)) { p++; }
+  // no integer digits, or 0123 (zero must be solo)
+  if ( p == src ) { return INCORRECT_TYPE; }
+  if ( (leading_zero && p != src+1)) { return NUMBER_ERROR; }
+
+  //
+  // Parse the decimal part.
+  //
+  int64_t exponent = 0;
+  bool overflow;
+  if (simdjson_likely((p != src_end) && (*p == '.'))) {
+    p++;
+    const uint8_t *start_decimal_digits = p;
+    if ((p == src_end) || !parse_digit(*p, i)) { return NUMBER_ERROR; } // no decimal digits
+    p++;
+    while ((p != src_end) && parse_digit(*p, i)) { p++; }
+    exponent = -(p - start_decimal_digits);
+
+    // Overflow check. More than 19 digits (minus the decimal) may be overflow.
+    overflow = p-src-1 > 19;
+    if (simdjson_unlikely(overflow && leading_zero)) {
+      // Skip leading 0.00000 and see if it still overflows
+      const uint8_t *start_digits = src + 2;
+      while (*start_digits == '0') { start_digits++; }
+      overflow = start_digits-src > 19;
+    }
+  } else {
+    overflow = p-src > 19;
+  }
+
+  //
+  // Parse the exponent
+  //
+  if ((p != src_end) && (*p == 'e' || *p == 'E')) {
+    p++;
+    if(p == src_end) { return NUMBER_ERROR; }
+    bool exp_neg = *p == '-';
+    p += exp_neg || *p == '+';
+
+    uint64_t exp = 0;
+    const uint8_t *start_exp_digits = p;
+    while ((p != src_end) && parse_digit(*p, exp)) { p++; }
+    // no exp digits, or 20+ exp digits
+    if (p-start_exp_digits == 0 || p-start_exp_digits > 19) { return NUMBER_ERROR; }
+
+    exponent += exp_neg ? 0-exp : exp;
+  }
+
+  if ((p != src_end) && jsoncharutils::is_not_structural_or_whitespace(*p)) { return NUMBER_ERROR; }
+
+  overflow = overflow || exponent < simdjson::internal::smallest_power || exponent > simdjson::internal::largest_power;
+
+  //
+  // Assemble (or slow-parse) the float
+  //
+  double d;
+  if (simdjson_likely(!overflow)) {
+    if (compute_float_64(exponent, i, negative, d)) { return d; }
+  }
+  if (!parse_float_fallback(src - uint8_t(negative), src_end, &d)) {
+    return NUMBER_ERROR;
+  }
+  return d;
+}
+
+simdjson_unused simdjson_inline simdjson_result parse_double_in_string(const uint8_t * src) noexcept {
+  //
+  // Check for minus sign
+  //
+  bool negative = (*(src + 1) == '-');
+  src += uint8_t(negative) + 1;
+
+  //
+  // Parse the integer part.
+  //
+  uint64_t i = 0;
+  const uint8_t *p = src;
+  p += parse_digit(*p, i);
+  bool leading_zero = (i == 0);
+  while (parse_digit(*p, i)) { p++; }
+  // no integer digits, or 0123 (zero must be solo)
+  if ( p == src ) { return INCORRECT_TYPE; }
+  if ( (leading_zero && p != src+1)) { return NUMBER_ERROR; }
+
+  //
+  // Parse the decimal part.
+  //
+  int64_t exponent = 0;
+  bool overflow;
+  if (simdjson_likely(*p == '.')) {
+    p++;
+    const uint8_t *start_decimal_digits = p;
+    if (!parse_digit(*p, i)) { return NUMBER_ERROR; } // no decimal digits
+    p++;
+    while (parse_digit(*p, i)) { p++; }
+    exponent = -(p - start_decimal_digits);
+
+    // Overflow check. More than 19 digits (minus the decimal) may be overflow.
+    overflow = p-src-1 > 19;
+    if (simdjson_unlikely(overflow && leading_zero)) {
+      // Skip leading 0.00000 and see if it still overflows
+      const uint8_t *start_digits = src + 2;
+      while (*start_digits == '0') { start_digits++; }
+      overflow = p-start_digits > 19;
+    }
+  } else {
+    overflow = p-src > 19;
+  }
+
+  //
+  // Parse the exponent
+  //
+  if (*p == 'e' || *p == 'E') {
+    p++;
+    bool exp_neg = *p == '-';
+    p += exp_neg || *p == '+';
+
+    uint64_t exp = 0;
+    const uint8_t *start_exp_digits = p;
+    while (parse_digit(*p, exp)) { p++; }
+    // no exp digits, or 20+ exp digits
+    if (p-start_exp_digits == 0 || p-start_exp_digits > 19) { return NUMBER_ERROR; }
+
+    exponent += exp_neg ? 0-exp : exp;
+  }
+
+  if (*p != '"') { return NUMBER_ERROR; }
+
+  overflow = overflow || exponent < simdjson::internal::smallest_power || exponent > simdjson::internal::largest_power;
+
+  //
+  // Assemble (or slow-parse) the float
+  //
+  double d;
+  if (simdjson_likely(!overflow)) {
+    if (compute_float_64(exponent, i, negative, d)) { return d; }
+  }
+  if (!parse_float_fallback(src - uint8_t(negative), &d)) {
+    return NUMBER_ERROR;
+  }
+  return d;
+}
+
+} // unnamed namespace
+#endif // SIMDJSON_SKIPNUMBERPARSING
+
+} // namespace numberparsing
+
+inline std::ostream& operator<<(std::ostream& out, number_type type) noexcept {
+    switch (type) {
+        case number_type::signed_integer: out << "integer in [-9223372036854775808,9223372036854775808)"; break;
+        case number_type::unsigned_integer: out << "unsigned integer in [9223372036854775808,18446744073709551616)"; break;
+        case number_type::floating_point_number: out << "floating-point number (binary64)"; break;
+        case number_type::big_integer: out << "big integer"; break;
+        default: SIMDJSON_UNREACHABLE();
+    }
+    return out;
+}
+
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_NUMBERPARSING_H
+/* end file simdjson/generic/numberparsing.h for rvv_vls */
+
+/* including simdjson/generic/implementation_simdjson_result_base-inl.h for rvv_vls: #include "simdjson/generic/implementation_simdjson_result_base-inl.h" */
+/* begin file simdjson/generic/implementation_simdjson_result_base-inl.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+
+//
+// internal::implementation_simdjson_result_base inline implementation
+//
+
+template
+simdjson_inline void implementation_simdjson_result_base::tie(T &value, error_code &error) && noexcept {
+  error = this->second;
+  if (!error) {
+    value = std::forward>(*this).first;
+  }
+}
+
+template
+simdjson_warn_unused simdjson_inline error_code implementation_simdjson_result_base::get(T &value) && noexcept {
+  error_code error;
+  std::forward>(*this).tie(value, error);
+  return error;
+}
+
+template
+simdjson_warn_unused simdjson_inline error_code implementation_simdjson_result_base::error() const noexcept {
+  return this->second;
+}
+
+
+template
+simdjson_warn_unused simdjson_inline bool implementation_simdjson_result_base::has_value() const noexcept {
+  return this->error() == SUCCESS;
+}
+
+#if SIMDJSON_EXCEPTIONS
+
+template
+simdjson_inline T& implementation_simdjson_result_base::operator*() &  noexcept(false) {
+  return this->value();
+}
+
+template
+simdjson_inline T&& implementation_simdjson_result_base::operator*() &&  noexcept(false) {
+  return std::forward>(*this).value();
+}
+
+template
+simdjson_inline T* implementation_simdjson_result_base::operator->() noexcept(false) {
+  if (this->error()) { throw simdjson_error(this->error()); }
+  return &this->first;
+}
+
+
+template
+simdjson_inline const T* implementation_simdjson_result_base::operator->() const noexcept(false) {
+  if (this->error()) { throw simdjson_error(this->error()); }
+  return &this->first;
+}
+
+template
+simdjson_inline T& implementation_simdjson_result_base::value() & noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return this->first;
+}
+
+template
+simdjson_inline T&& implementation_simdjson_result_base::value() && noexcept(false) {
+  return std::forward>(*this).take_value();
+}
+
+template
+simdjson_inline T&& implementation_simdjson_result_base::take_value() && noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return std::forward(this->first);
+}
+
+template
+simdjson_inline implementation_simdjson_result_base::operator T&&() && noexcept(false) {
+  return std::forward>(*this).take_value();
+}
+
+#endif // SIMDJSON_EXCEPTIONS
+
+template
+simdjson_inline const T& implementation_simdjson_result_base::value_unsafe() const& noexcept {
+  return this->first;
+}
+
+template
+simdjson_inline T& implementation_simdjson_result_base::value_unsafe() & noexcept {
+  return this->first;
+}
+
+template
+simdjson_inline T&& implementation_simdjson_result_base::value_unsafe() && noexcept {
+  return std::forward(this->first);
+}
+
+template
+simdjson_inline implementation_simdjson_result_base::implementation_simdjson_result_base(T &&value, error_code error) noexcept
+    : first{std::forward(value)}, second{error} {}
+template
+simdjson_inline implementation_simdjson_result_base::implementation_simdjson_result_base(error_code error) noexcept
+    : implementation_simdjson_result_base(T{}, error) {}
+template
+simdjson_inline implementation_simdjson_result_base::implementation_simdjson_result_base(T &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value), SUCCESS) {}
+
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_IMPLEMENTATION_SIMDJSON_RESULT_BASE_INL_H
+/* end file simdjson/generic/implementation_simdjson_result_base-inl.h for rvv_vls */
+/* end file simdjson/generic/amalgamated.h for rvv_vls */
+/* including simdjson/rvv-vls/end.h: #include "simdjson/rvv-vls/end.h" */
+/* begin file simdjson/rvv-vls/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/* undefining SIMDJSON_IMPLEMENTATION from "rvv_vls" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/rvv-vls/end.h */
+
+#endif // SIMDJSON_RVV_VLS_H
+/* end file simdjson/rvv-vls.h */
+#else
+#error Unknown SIMDJSON_BUILTIN_IMPLEMENTATION
+#endif
+
+/* undefining SIMDJSON_CONDITIONAL_INCLUDE */
+#undef SIMDJSON_CONDITIONAL_INCLUDE
+
+#endif // SIMDJSON_BUILTIN_H
+/* end file simdjson/builtin.h */
+/* skipped duplicate #include "simdjson/builtin/base.h" */
+
+/* including simdjson/generic/builder/dependencies.h: #include "simdjson/generic/builder/dependencies.h" */
+/* begin file simdjson/generic/builder/dependencies.h */
+#ifdef SIMDJSON_CONDITIONAL_INCLUDE
+#error simdjson/generic/builder/dependencies.h must be included before defining SIMDJSON_CONDITIONAL_INCLUDE!
+#endif
+
+#ifndef SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H
+#define SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H
+
+// Internal headers needed for builder generics.
+// All includes not under simdjson/generic/builder must be here!
+// Otherwise, amalgamation will fail.
+/* skipped duplicate #include "simdjson/concepts.h" */
+/* skipped duplicate #include "simdjson/dom/fractured_json.h" */
+
+#endif // SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H
+/* end file simdjson/generic/builder/dependencies.h */
+
+/* defining SIMDJSON_CONDITIONAL_INCLUDE */
+#define SIMDJSON_CONDITIONAL_INCLUDE
+
+#if SIMDJSON_BUILTIN_IMPLEMENTATION_IS(arm64)
+/* including simdjson/arm64/builder.h: #include "simdjson/arm64/builder.h" */
+/* begin file simdjson/arm64/builder.h */
+#ifndef SIMDJSON_ARM64_BUILDER_H
+#define SIMDJSON_ARM64_BUILDER_H
+
+/* including simdjson/arm64/begin.h: #include "simdjson/arm64/begin.h" */
+/* begin file simdjson/arm64/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "arm64" */
+#define SIMDJSON_IMPLEMENTATION arm64
+/* including simdjson/arm64/base.h: #include "simdjson/arm64/base.h" */
+/* begin file simdjson/arm64/base.h */
+#ifndef SIMDJSON_ARM64_BASE_H
+#define SIMDJSON_ARM64_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+/**
+ * Implementation for NEON (ARMv8).
+ */
+namespace arm64 {
+
+class implementation;
+
+namespace {
+namespace simd {
+template  struct simd8;
+template  struct simd8x64;
+} // namespace simd
+} // unnamed namespace
+
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_ARM64_BASE_H
+/* end file simdjson/arm64/base.h */
+/* including simdjson/arm64/intrinsics.h: #include "simdjson/arm64/intrinsics.h" */
+/* begin file simdjson/arm64/intrinsics.h */
+#ifndef SIMDJSON_ARM64_INTRINSICS_H
+#define SIMDJSON_ARM64_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+// This should be the correct header whether
+// you use visual studio or other compilers.
+#include 
+
+static_assert(sizeof(uint8x16_t) <= simdjson::SIMDJSON_PADDING, "insufficient padding for arm64");
+
+#endif //  SIMDJSON_ARM64_INTRINSICS_H
+/* end file simdjson/arm64/intrinsics.h */
+/* including simdjson/arm64/bitmanipulation.h: #include "simdjson/arm64/bitmanipulation.h" */
+/* begin file simdjson/arm64/bitmanipulation.h */
+#ifndef SIMDJSON_ARM64_BITMANIPULATION_H
+#define SIMDJSON_ARM64_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long ret;
+  // Search the mask data from least significant bit (LSB)
+  // to the most significant bit (MSB) for a set bit (1).
+  _BitScanForward64(&ret, input_num);
+  return (int)ret;
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO
+  return __builtin_ctzll(input_num);
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return input_num & (input_num-1);
+}
+
+// We sometimes call leading_zeroes on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+// Applies only when SIMDJSON_PREFER_REVERSE_BITS is defined and true.
+// (See below.)
+SIMDJSON_NO_SANITIZE_UNDEFINED
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long leading_zero = 0;
+  // Search the mask data from most significant bit (MSB)
+  // to least significant bit (LSB) for a set bit (1).
+  if (_BitScanReverse64(&leading_zero, input_num))
+    return (int)(63 - leading_zero);
+  else
+    return 64;
+#else
+  return __builtin_clzll(input_num);
+#endif// SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int count_ones(uint64_t input_num) {
+   return vaddv_u8(vcnt_u8(vcreate_u8(input_num)));
+}
+
+
+#if defined(__GNUC__) // catches clang and gcc
+/**
+ * ARM has a fast 64-bit "bit reversal function" that is handy. However,
+ * it is not generally available as an intrinsic function under Visual
+ * Studio (though this might be changing). Even under clang/gcc, we
+ * apparently need to invoke inline assembly.
+ */
+/*
+ * We use SIMDJSON_PREFER_REVERSE_BITS as a hint that algorithms that
+ * work well with bit reversal may use it.
+ */
+#define SIMDJSON_PREFER_REVERSE_BITS 1
+
+/* reverse the bits */
+simdjson_inline uint64_t reverse_bits(uint64_t input_num) {
+  uint64_t rev_bits;
+  __asm("rbit %0, %1" : "=r"(rev_bits) : "r"(input_num));
+  return rev_bits;
+}
+
+/**
+ * Flips bit at index 63 - lz. Thus if you have 'leading_zeroes' leading zeroes,
+ * then this will set to zero the leading bit. It is possible for leading_zeroes to be
+ * greating or equal to 63 in which case we trigger undefined behavior, but the output
+ * of such undefined behavior is never used.
+ **/
+SIMDJSON_NO_SANITIZE_UNDEFINED
+simdjson_inline uint64_t zero_leading_bit(uint64_t rev_bits, int leading_zeroes) {
+  return rev_bits ^ (uint64_t(0x8000000000000000) >> leading_zeroes);
+}
+
+#endif
+
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  *result = value1 + value2;
+  return *result < value1;
+#else
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+#endif
+}
+
+} // unnamed namespace
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_ARM64_BITMANIPULATION_H
+/* end file simdjson/arm64/bitmanipulation.h */
+/* including simdjson/arm64/bitmask.h: #include "simdjson/arm64/bitmask.h" */
+/* begin file simdjson/arm64/bitmask.h */
+#ifndef SIMDJSON_ARM64_BITMASK_H
+#define SIMDJSON_ARM64_BITMASK_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace {
+
+//
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
+//
+// For example, prefix_xor(00100100) == 00011100
+//
+simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
+  /////////////
+  // We could do this with PMULL, but it is apparently slow.
+  //
+  //#ifdef __ARM_FEATURE_CRYPTO // some ARM processors lack this extension
+  //return vmull_p64(-1ULL, bitmask);
+  //#else
+  // Analysis by @sebpop:
+  // When diffing the assembly for src/stage1_find_marks.cpp I see that the eors are all spread out
+  // in between other vector code, so effectively the extra cycles of the sequence do not matter
+  // because the GPR units are idle otherwise and the critical path is on the FP side.
+  // Also the PMULL requires two extra fmovs: GPR->FP (3 cycles in N1, 5 cycles in A72 )
+  // and FP->GPR (2 cycles on N1 and 5 cycles on A72.)
+  ///////////
+  bitmask ^= bitmask << 1;
+  bitmask ^= bitmask << 2;
+  bitmask ^= bitmask << 4;
+  bitmask ^= bitmask << 8;
+  bitmask ^= bitmask << 16;
+  bitmask ^= bitmask << 32;
+  return bitmask;
+}
+
+} // unnamed namespace
+} // namespace arm64
+} // namespace simdjson
+
+#endif
+/* end file simdjson/arm64/bitmask.h */
+/* including simdjson/arm64/numberparsing_defs.h: #include "simdjson/arm64/numberparsing_defs.h" */
+/* begin file simdjson/arm64/numberparsing_defs.h */
+#ifndef SIMDJSON_ARM64_NUMBERPARSING_DEFS_H
+#define SIMDJSON_ARM64_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+#if SIMDJSON_REGULAR_VISUAL_STUDIO && SIMDJSON_IS_ARM64
+// __umulh requires intrin.h
+#include 
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO && SIMDJSON_IS_ARM64
+
+namespace simdjson {
+namespace arm64 {
+namespace numberparsing {
+
+// we don't have SSE, so let us use a scalar function
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  uint64_t val;
+  std::memcpy(&val, chars, sizeof(uint64_t));
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+}
+
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+#if SIMDJSON_IS_ARM64
+  // ARM64 has native support for 64-bit multiplications, no need to emultate
+  answer.high = __umulh(value1, value2);
+  answer.low = value1 * value2;
+#else
+  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
+#endif // SIMDJSON_IS_ARM64
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+#endif
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace arm64
+} // namespace simdjson
+
+#ifndef SIMDJSON_SWAR_NUMBER_PARSING
+#if SIMDJSON_IS_BIG_ENDIAN
+#define SIMDJSON_SWAR_NUMBER_PARSING 0
+#else
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+#endif
+#endif
+
+#endif // SIMDJSON_ARM64_NUMBERPARSING_DEFS_H
+/* end file simdjson/arm64/numberparsing_defs.h */
+/* including simdjson/arm64/simd.h: #include "simdjson/arm64/simd.h" */
+/* begin file simdjson/arm64/simd.h */
+#ifndef SIMDJSON_ARM64_SIMD_H
+#define SIMDJSON_ARM64_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace {
+namespace simd {
+
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+namespace {
+// Start of private section with Visual Studio workaround
+
+
+#ifndef simdjson_make_uint8x16_t
+#define simdjson_make_uint8x16_t(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, \
+                             x13, x14, x15, x16)                                   \
+   ([=]() {                                                                        \
+     uint8_t array[16] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8,                    \
+                                 x9, x10, x11, x12, x13, x14, x15, x16};           \
+     return vld1q_u8(array);                                                       \
+   }())
+#endif
+#ifndef simdjson_make_int8x16_t
+#define simdjson_make_int8x16_t(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, \
+                             x13, x14, x15, x16)                                  \
+   ([=]() {                                                                       \
+     int8_t array[16] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8,                    \
+                                 x9, x10, x11, x12, x13, x14, x15, x16};          \
+     return vld1q_s8(array);                                                      \
+   }())
+#endif
+
+#ifndef simdjson_make_uint8x8_t
+#define simdjson_make_uint8x8_t(x1, x2, x3, x4, x5, x6, x7, x8)                \
+   ([=]() {                                                                    \
+     uint8_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};                \
+     return vld1_u8(array);                                                    \
+   }())
+#endif
+#ifndef simdjson_make_int8x8_t
+#define simdjson_make_int8x8_t(x1, x2, x3, x4, x5, x6, x7, x8)                 \
+   ([=]() {                                                                    \
+     int8_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};                 \
+     return vld1_s8(array);                                                    \
+   }())
+#endif
+#ifndef simdjson_make_uint16x8_t
+#define simdjson_make_uint16x8_t(x1, x2, x3, x4, x5, x6, x7, x8)               \
+   ([=]() {                                                                    \
+     uint16_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};               \
+     return vld1q_u16(array);                                                  \
+   }())
+#endif
+#ifndef simdjson_make_int16x8_t
+#define simdjson_make_int16x8_t(x1, x2, x3, x4, x5, x6, x7, x8)                \
+   ([=]() {                                                                    \
+     int16_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};                \
+     return vld1q_s16(array);                                                  \
+   }())
+#endif
+
+// End of private section with Visual Studio workaround
+} // namespace
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+
+
+  template
+  struct simd8;
+
+  //
+  // Base class of simd8 and simd8, both of which use uint8x16_t internally.
+  //
+  template>
+  struct base_u8 {
+    uint8x16_t value;
+    static const int SIZE = sizeof(value);
+
+    // Conversion from/to SIMD register
+    simdjson_inline base_u8(const uint8x16_t _value) : value(_value) {}
+    simdjson_inline operator const uint8x16_t&() const { return this->value; }
+    simdjson_inline operator uint8x16_t&() { return this->value; }
+
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const { return vorrq_u8(*this, other); }
+    simdjson_inline simd8 operator&(const simd8 other) const { return vandq_u8(*this, other); }
+    simdjson_inline simd8 operator^(const simd8 other) const { return veorq_u8(*this, other); }
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return vbicq_u8(*this, other); }
+    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+    simdjson_inline simd8& operator|=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline simd8& operator&=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline simd8& operator^=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast ^ other; return *this_cast; }
+
+    friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return vceqq_u8(lhs, rhs); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return vextq_u8(prev_chunk, *this, 16 - N);
+    }
+  };
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8: base_u8 {
+    typedef uint16_t bitmask_t;
+    typedef uint32_t bitmask2_t;
+
+    static simdjson_inline simd8 splat(bool _value) { return vmovq_n_u8(uint8_t(-(!!_value))); }
+
+    simdjson_inline simd8(const uint8x16_t _value) : base_u8(_value) {}
+    // False constructor
+    simdjson_inline simd8() : simd8(vdupq_n_u8(0)) {}
+    // Splat constructor
+    simdjson_inline simd8(bool _value) : simd8(splat(_value)) {}
+
+    // We return uint32_t instead of uint16_t because that seems to be more efficient for most
+    // purposes (cutting it down to uint16_t costs performance in some compilers).
+    simdjson_inline uint32_t to_bitmask() const {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+      const uint8x16_t bit_mask =  simdjson_make_uint8x16_t(0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
+                                                   0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80);
+#else
+      const uint8x16_t bit_mask =  {0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
+                                    0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80};
+#endif
+      auto minput = *this & bit_mask;
+      uint8x16_t tmp = vpaddq_u8(minput, minput);
+      tmp = vpaddq_u8(tmp, tmp);
+      tmp = vpaddq_u8(tmp, tmp);
+      return vgetq_lane_u16(vreinterpretq_u16_u8(tmp), 0);
+    }
+    // Returns 4-bit out of each byte, alternating between the high 4 bits and low
+    // bits result it is 64 bit.
+    simdjson_inline uint64_t to_bitmask64() const {
+      return vget_lane_u64(
+          vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(*this), 4)), 0);
+    }
+    simdjson_inline bool any() const { return vmaxvq_u32(vreinterpretq_u32_u8(*this)) != 0; }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8: base_u8 {
+    static simdjson_inline uint8x16_t splat(uint8_t _value) { return vmovq_n_u8(_value); }
+    static simdjson_inline uint8x16_t zero() { return vdupq_n_u8(0); }
+    static simdjson_inline uint8x16_t load(const uint8_t* values) { return vld1q_u8(values); }
+
+    simdjson_inline simd8(const uint8x16_t _value) : base_u8(_value) {}
+    // Zero constructor
+    simdjson_inline simd8() : simd8(zero()) {}
+    // Array constructor
+    simdjson_inline simd8(const uint8_t values[16]) : simd8(load(values)) {}
+    // Splat constructor
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    // Member-by-member initialization
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(simdjson_make_uint8x16_t(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+#else
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(uint8x16_t{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
+#endif
+
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Store to array
+    simdjson_inline void store(uint8_t dst[16]) const { return vst1q_u8(dst, *this); }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return vqaddq_u8(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return vqsubq_u8(*this, other); }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return vaddq_u8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return vsubq_u8(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *this; }
+
+    // Order-specific operations
+    simdjson_inline uint8_t max_val() const { return vmaxvq_u8(*this); }
+    simdjson_inline uint8_t min_val() const { return vminvq_u8(*this); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return vmaxq_u8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return vminq_u8(*this, other); }
+    simdjson_inline simd8 operator<=(const simd8 other) const { return vcleq_u8(*this, other); }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return vcgeq_u8(*this, other); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return vcltq_u8(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return vcgtq_u8(*this, other); }
+    // Same as >, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero. For ARM, returns all 1's.
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return simd8(*this > other); }
+    // Same as <, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero. For ARM, returns all 1's.
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return simd8(*this < other); }
+
+    // Bit-specific operations
+    simdjson_inline simd8 any_bits_set(simd8 bits) const { return vtstq_u8(*this, bits); }
+    simdjson_inline bool any_bits_set_anywhere() const { return vmaxvq_u32(vreinterpretq_u32_u8(*this)) != 0; }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return (*this & bits).any_bits_set_anywhere(); }
+    template
+    simdjson_inline simd8 shr() const { return vshrq_n_u8(*this, N); }
+    template
+    simdjson_inline simd8 shl() const { return vshlq_n_u8(*this, N); }
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return lookup_table.apply_lookup_16_to(*this);
+    }
+
+    // Returns 4-bit out of each byte, alternating between the high 4 bits and low
+    // bits result it is 64 bit.
+    simdjson_inline uint64_t to_bitmask64() const {
+      return vget_lane_u64(
+          vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(*this), 4)), 0);
+    }
+    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
+    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
+    // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
+    // get written.
+    // Design consideration: it seems like a function with the
+    // signature simd8 compress(uint16_t mask) would be
+    // sensible, but the AVX ISA makes this kind of approach difficult.
+    template
+    simdjson_inline void compress(uint16_t mask, L * output) const {
+      using internal::thintable_epi8;
+      using internal::BitsSetTable256mul2;
+      using internal::pshufb_combine_table;
+      // this particular implementation was inspired by work done by @animetosho
+      // we do it in two steps, first 8 bytes and then second 8 bytes
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
+      // next line just loads the 64-bit values thintable_epi8[mask1] and
+      // thintable_epi8[mask2] into a 128-bit register, using only
+      // two instructions on most compilers.
+      uint64x2_t shufmask64 = {thintable_epi8[mask1], thintable_epi8[mask2]};
+      uint8x16_t shufmask = vreinterpretq_u8_u64(shufmask64);
+      // we increment by 0x08 the second half of the mask
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+      uint8x16_t inc = simdjson_make_uint8x16_t(0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08);
+#else
+      uint8x16_t inc = {0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08};
+#endif
+      shufmask = vaddq_u8(shufmask, inc);
+      // this is the version "nearly pruned"
+      uint8x16_t pruned = vqtbl1q_u8(*this, shufmask);
+      // we still need to put the two halves together.
+      // we compute the popcount of the first half:
+      int pop1 = BitsSetTable256mul2[mask1];
+      // then load the corresponding mask, what it does is to write
+      // only the first pop1 bytes from the first 8 bytes, and then
+      // it fills in with the bytes from the second 8 bytes + some filling
+      // at the end.
+      uint8x16_t compactmask = vld1q_u8(reinterpret_cast(pshufb_combine_table + pop1 * 8));
+      uint8x16_t answer = vqtbl1q_u8(pruned, compactmask);
+      vst1q_u8(reinterpret_cast(output), answer);
+    }
+
+    // Copies all bytes corresponding to a 0 in the low half of the mask (interpreted as a
+    // bitset) to output1, then those corresponding to a 0 in the high half to output2.
+    template
+    simdjson_inline void compress_halves(uint16_t mask, L *output1, L *output2) const {
+      using internal::thintable_epi8;
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
+      uint8x8_t compactmask1 = vcreate_u8(thintable_epi8[mask1]);
+      uint8x8_t compactmask2 = vcreate_u8(thintable_epi8[mask2]);
+      // we increment by 0x08 the second half of the mask
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+      uint8x8_t inc = simdjson_make_uint8x8_t(0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08);
+#else
+      uint8x8_t inc = {0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08};
+#endif
+      compactmask2 = vadd_u8(compactmask2, inc);
+      // store each result (with the second store possibly overlapping the first)
+      vst1_u8((uint8_t*)output1, vqtbl1_u8(*this, compactmask1));
+      vst1_u8((uint8_t*)output2, vqtbl1_u8(*this, compactmask2));
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+
+    template
+    simdjson_inline simd8 apply_lookup_16_to(const simd8 original) {
+      return vqtbl1q_u8(*this, simd8(original));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 {
+    int8x16_t value;
+
+    static simdjson_inline simd8 splat(int8_t _value) { return vmovq_n_s8(_value); }
+    static simdjson_inline simd8 zero() { return vdupq_n_s8(0); }
+    static simdjson_inline simd8 load(const int8_t values[16]) { return vld1q_s8(values); }
+
+    // Conversion from/to SIMD register
+    simdjson_inline simd8(const int8x16_t _value) : value{_value} {}
+    simdjson_inline operator const int8x16_t&() const { return this->value; }
+    simdjson_inline operator int8x16_t&() { return this->value; }
+
+    // Zero constructor
+    simdjson_inline simd8() : simd8(zero()) {}
+    // Splat constructor
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const int8_t* values) : simd8(load(values)) {}
+    // Member-by-member initialization
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3, int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(simdjson_make_int8x16_t(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+#else
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3, int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(int8x16_t{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
+#endif
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Store to array
+    simdjson_inline void store(int8_t dst[16]) const { return vst1q_s8(dst, *this); }
+
+    // Explicit conversion to/from unsigned
+    //
+    // Under Visual Studio/ARM64 uint8x16_t and int8x16_t are apparently the same type.
+    // In theory, we could check this occurrence with std::same_as and std::enabled_if but it is C++14
+    // and relatively ugly and hard to read.
+#ifndef SIMDJSON_REGULAR_VISUAL_STUDIO
+    simdjson_inline explicit simd8(const uint8x16_t other): simd8(vreinterpretq_s8_u8(other)) {}
+#endif
+    simdjson_inline explicit operator simd8() const { return vreinterpretq_u8_s8(this->value); }
+
+    // Math
+    simdjson_inline simd8 operator+(const simd8 other) const { return vaddq_s8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return vsubq_s8(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *this; }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val(const simd8 other) const { return vmaxq_s8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return vminq_s8(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return vcgtq_s8(*this, other); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return vcltq_s8(*this, other); }
+    simdjson_inline simd8 operator==(const simd8 other) const { return vceqq_s8(*this, other); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return vextq_s8(prev_chunk, *this, 16 - N);
+    }
+
+    // Perform a lookup assuming no value is larger than 16
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return lookup_table.apply_lookup_16_to(*this);
+    }
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+
+    template
+    simdjson_inline simd8 apply_lookup_16_to(const simd8 original) {
+      return vqtbl1q_s8(*this, simd8(original));
+    }
+  };
+
+  template
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    static_assert(NUM_CHUNKS == 4, "ARM kernel should use four registers per 64-byte block.");
+    const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
+
+    simdjson_inline void store(T ptr[64]) const {
+      this->chunks[0].store(ptr+sizeof(simd8)*0);
+      this->chunks[1].store(ptr+sizeof(simd8)*1);
+      this->chunks[2].store(ptr+sizeof(simd8)*2);
+      this->chunks[3].store(ptr+sizeof(simd8)*3);
+    }
+
+    simdjson_inline simd8 reduce_or() const {
+      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
+    }
+
+
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      uint64_t popcounts = vget_lane_u64(vreinterpret_u64_u8(vcnt_u8(vcreate_u8(~mask))), 0);
+      // compute the prefix sum of the popcounts of each byte
+      uint64_t offsets = popcounts * 0x0101010101010101;
+      this->chunks[0].compress_halves(uint16_t(mask), output, &output[popcounts & 0xFF]);
+      this->chunks[1].compress_halves(uint16_t(mask >> 16), &output[(offsets >> 8) & 0xFF], &output[(offsets >> 16) & 0xFF]);
+      this->chunks[2].compress_halves(uint16_t(mask >> 32), &output[(offsets >> 24) & 0xFF], &output[(offsets >> 32) & 0xFF]);
+      this->chunks[3].compress_halves(uint16_t(mask >> 48), &output[(offsets >> 40) & 0xFF], &output[(offsets >> 48) & 0xFF]);
+      return offsets >> 56;
+    }
+
+    simdjson_inline uint64_t to_bitmask() const {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+      const uint8x16_t bit_mask = simdjson_make_uint8x16_t(
+        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
+        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80
+      );
+#else
+      const uint8x16_t bit_mask = {
+        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
+        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80
+      };
+#endif
+      // Add each of the elements next to each other, successively, to stuff each 8 byte mask into one.
+      uint8x16_t sum0 = vpaddq_u8(this->chunks[0] & bit_mask, this->chunks[1] & bit_mask);
+      uint8x16_t sum1 = vpaddq_u8(this->chunks[2] & bit_mask, this->chunks[3] & bit_mask);
+      sum0 = vpaddq_u8(sum0, sum1);
+      sum0 = vpaddq_u8(sum0, sum0);
+      return vgetq_lane_u64(vreinterpretq_u64_u8(sum0), 0);
+    }
+
+    simdjson_inline uint64_t eq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] == mask,
+        this->chunks[1] == mask,
+        this->chunks[2] == mask,
+        this->chunks[3] == mask
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t lteq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] <= mask,
+        this->chunks[1] <= mask,
+        this->chunks[2] <= mask,
+        this->chunks[3] <= mask
+      ).to_bitmask();
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_ARM64_SIMD_H
+/* end file simdjson/arm64/simd.h */
+/* including simdjson/arm64/stringparsing_defs.h: #include "simdjson/arm64/stringparsing_defs.h" */
+/* begin file simdjson/arm64/stringparsing_defs.h */
+#ifndef SIMDJSON_ARM64_STRINGPARSING_DEFS_H
+#define SIMDJSON_ARM64_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 32;
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
+  simdjson_inline bool has_backslash() { return bs_bits != 0; }
+  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
+  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
+
+  uint32_t bs_bits;
+  uint32_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // this can read up to 31 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v0(src);
+  simd8 v1(src + sizeof(v0));
+  v0.store(dst);
+  v1.store(dst + sizeof(v0));
+
+  // Getting a 64-bit bitmask is much cheaper than multiple 16-bit bitmasks on ARM; therefore, we
+  // smash them together into a 64-byte mask and get the bitmask from there.
+  uint64_t bs_and_quote = simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
+  return {
+    uint32_t(bs_and_quote),      // bs_bits
+    uint32_t(bs_and_quote >> 32) // quote_bits
+  };
+}
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 16;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits) / 4; }
+
+  uint64_t escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  simd8 is_quote = (v == '"');
+  simd8 is_backslash = (v == '\\');
+  simd8 is_control = (v < 32);
+  return {
+    (is_backslash | is_quote | is_control).to_bitmask64()
+  };
+}
+
+
+
+} // unnamed namespace
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_ARM64_STRINGPARSING_DEFS_H
+/* end file simdjson/arm64/stringparsing_defs.h */
+
+#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
+/* end file simdjson/arm64/begin.h */
+/* including simdjson/generic/builder/amalgamated.h for arm64: #include "simdjson/generic/builder/amalgamated.h" */
+/* begin file simdjson/generic/builder/amalgamated.h for arm64 */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
+#error simdjson/generic/builder/dependencies.h must be included before simdjson/generic/builder/amalgamated.h!
+#endif
+
+/* including simdjson/generic/builder/json_string_builder.h for arm64: #include "simdjson/generic/builder/json_string_builder.h" */
+/* begin file simdjson/generic/builder/json_string_builder.h for arm64 */
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace arm64 {
+namespace builder {
+  class string_builder;
+}}
+
+template 
+struct has_custom_serialization : std::false_type {};
+
+inline constexpr struct serialize_tag {
+  template 
+  constexpr void operator()(arm64::builder::string_builder& b, T&& obj) const{
+    return tag_invoke(*this, b, std::forward(obj));
+  }
+
+
+} serialize{};
+template 
+struct has_custom_serialization(), std::declval()))
+>> : std::true_type {};
+
+template 
+constexpr bool require_custom_serialization = has_custom_serialization::value;
+#else
+struct has_custom_serialization : std::false_type {};
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace arm64 {
+namespace builder {
+/**
+ * A builder for JSON strings representing documents. This is a low-level
+ * builder that is not meant to be used directly by end-users. Though it
+ * supports atomic types (Booleans, strings), it does not support composed
+ * types (arrays and objects).
+ *
+ * Ultimately, this class can support kernel-specific optimizations. E.g.,
+ * it may make use of SIMD instructions to escape strings faster.
+ */
+class string_builder {
+public:
+  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
+
+  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
+
+  /**
+   * Append number (includes Booleans). Booleans are mapped to the strings
+   * false and true. Numbers are converted to strings abiding by the JSON standard.
+   * Floating-point numbers are converted to the shortest string that 'correctly'
+   * represents the number.
+   */
+  template::value>::type>
+  simdjson_inline void append(number_type v) noexcept;
+
+  /**
+   * Append character c.
+   */
+  simdjson_inline void append(char c)  noexcept;
+
+  /**
+   * Append the string 'null'.
+   */
+  simdjson_inline void append_null()  noexcept;
+
+  /**
+   * Clear the content.
+   */
+  simdjson_inline void clear()  noexcept;
+
+  /**
+   * Append the std::string_view, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
+
+  /**
+   * Append the std::string_view surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void escape_and_append_with_quotes()  noexcept;
+#endif
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
+
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
+
+  /**
+   * Append the C string directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *c)  noexcept;
+
+  /**
+   * Append "{" to the buffer.
+   */
+  simdjson_inline void start_object()  noexcept;
+
+  /**
+   * Append "}" to the buffer.
+   */
+  simdjson_inline void end_object()  noexcept;
+
+  /**
+   * Append "[" to the buffer.
+   */
+  simdjson_inline void start_array()  noexcept;
+
+  /**
+   * Append "]" to the buffer.
+   */
+  simdjson_inline void end_array()  noexcept;
+
+  /**
+   * Append "," to the buffer.
+   */
+  simdjson_inline void append_comma()  noexcept;
+
+  /**
+   * Append ":" to the buffer.
+   */
+  simdjson_inline void append_colon()  noexcept;
+
+  /**
+   * Append a key-value pair to the buffer.
+   * The key is escaped and surrounded by double quotes.
+   * The value is escaped if it is a string.
+   */
+  template
+  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void append_key_value(value_type value) noexcept;
+
+  // Support for optional types (std::optional, etc.)
+  template 
+  requires(!require_custom_serialization)
+  simdjson_inline void append(const T &opt);
+
+  template 
+  requires(require_custom_serialization)
+  simdjson_inline void append(T &&val);
+
+  // Support for string-like types
+  template 
+  requires(std::is_convertible::value ||
+  std::is_same::value )
+  simdjson_inline void append(const T &value);
+#endif
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+  // Support for range-based appending (std::ranges::view, etc.)
+  template 
+requires (!std::is_convertible::value && !require_custom_serialization)
+  simdjson_inline void append(const R &range) noexcept;
+#endif
+  /**
+   * Append the std::string_view directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(std::string_view input)  noexcept;
+
+  /**
+   * Append len characters from str.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
+#if SIMDJSON_EXCEPTIONS
+  /**
+   * Creates an std::string from the written JSON buffer.
+   * Throws if memory allocation failed
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string() const noexcept(false);
+
+  /**
+   * Creates an std::string_view from the written JSON buffer.
+   * Throws if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
+#endif
+
+  /**
+   * Returns a view on the written JSON buffer. Returns an error
+   * if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result view() const noexcept;
+
+  /**
+   * Appends the null character to the buffer and returns
+   * a pointer to the beginning of the written JSON buffer.
+   * Returns an error if memory allocation failed.
+   * The result is null-terminated.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result c_str() noexcept;
+
+  /**
+   * Return true if the content is valid UTF-8.
+   */
+  simdjson_inline bool validate_unicode() const noexcept;
+
+  /**
+   * Returns the current size of the written JSON buffer.
+   * If an error occurred, returns 0.
+   */
+  simdjson_inline size_t size() const noexcept;
+
+private:
+  /**
+   * Returns true if we can write at least upcoming_bytes bytes.
+   * The underlying buffer is reallocated if needed. It is designed
+   * to be called before writing to the buffer. It should be fast.
+   */
+  simdjson_inline bool capacity_check(size_t upcoming_bytes);
+
+  /**
+   * Grow the buffer to at least desired_capacity bytes.
+   * If the allocation fails, is_valid is set to false. We expect
+   * that this function would not be repeatedly called.
+   */
+  simdjson_inline void grow_buffer(size_t desired_capacity);
+
+  /**
+   * We use this helper function to make sure that is_valid is kept consistent.
+   */
+  simdjson_inline void set_valid(bool valid) noexcept;
+
+  std::unique_ptr buffer{};
+  size_t position{0};
+  size_t capacity{0};
+  bool is_valid{true};
+};
+
+
+
+}
+}
+
+
+#if !SIMDJSON_STATIC_REFLECTION
+// fallback implementation until we have static reflection
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::arm64::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view s;
+  auto e = b.view().get(s);
+  if(e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::arm64::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view sv;
+  auto e = b.view().get(sv);
+  if(e) { return e; }
+  s.assign(sv.data(), sv.size());
+  return simdjson::SUCCESS;
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
+/* end file simdjson/generic/builder/json_string_builder.h for arm64 */
+/* including simdjson/generic/builder/json_builder.h for arm64: #include "simdjson/generic/builder/json_builder.h" */
+/* begin file simdjson/generic/builder/json_builder.h for arm64 */
+#ifndef SIMDJSON_GENERIC_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#if SIMDJSON_STATIC_REFLECTION
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+// #include  // for std::define_static_string - header not available yet
+
+namespace simdjson {
+namespace arm64 {
+namespace builder {
+
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  auto it = t.begin();
+  auto end = t.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+constexpr void atom(string_builder &b, const T &t) {
+  b.escape_and_append_with_quotes(t);
+}
+
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &m) {
+  if (m.empty()) {
+    b.append_raw("{}");
+    return;
+  }
+  b.append('{');
+  bool first = true;
+  for (const auto& [key, value] : m) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    // Keys must be convertible to string_view per the concept
+    b.escape_and_append_with_quotes(key);
+    b.append(':');
+    atom(b, value);
+  }
+  b.append('}');
+}
+
+
+template::value && !std::is_same_v>::type>
+constexpr void atom(string_builder &b, const number_type t) {
+  b.append(t);
+}
+
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, t.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &opt) {
+  if (opt) {
+    atom(b, opt.value());
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &ptr) {
+  if (ptr) {
+    atom(b, *ptr);
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for enums - serialize as string representation using expand approach from P2996R12
+template 
+  requires(std::is_enum_v && !require_custom_serialization)
+void atom(string_builder &b, const T &e) {
+#if SIMDJSON_STATIC_REFLECTION
+  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
+  template for (constexpr auto enum_val : enumerators) {
+    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
+    if (e == [:enum_val:]) {
+      b.append_raw(enum_str);
+      return;
+    }
+  };
+  // Fallback to integer if enum value not found
+  atom(b, static_cast>(e));
+#else
+  // Fallback: serialize as integer if reflection not available
+  atom(b, static_cast>(e));
+#endif
+}
+
+// Support for appendable containers that don't have operator[] (sets, etc.)
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &container) {
+  if (container.empty()) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  bool first = true;
+  for (const auto& item : container) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    atom(b, item);
+  }
+  b.append(']');
+}
+
+// append functions that delegate to atom functions for primitive types
+template 
+  requires(std::is_arithmetic_v && !std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+// works for struct
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, z.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// works for container that have begin() and end() iterators
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  auto it = z.begin();
+  auto end = z.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires (require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  b.append(z);
+}
+
+
+template 
+simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+
+template 
+string_builder& operator<<(string_builder& b, const Z& z) {
+  append(b, z);
+  return b;
+}
+
+// extract_from: Serialize only specific fields from a struct to JSON
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+void extract_from(string_builder &b, const T &obj) {
+  // Helper to check if a field name matches any of the requested fields
+  auto should_extract = [](std::string_view field_name) constexpr -> bool {
+    return ((FieldNames.view() == field_name) || ...);
+  };
+
+  b.append('{');
+  bool first = true;
+
+  // Iterate through all members of T using reflection
+  template for (constexpr auto mem : std::define_static_array(
+      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+
+    if constexpr (std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+
+      // Only serialize this field if it's in our list of requested fields
+      if constexpr (should_extract(key)) {
+        if (!first) {
+          b.append(',');
+        }
+        first = false;
+
+        // Serialize the key
+        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
+        b.append_raw(quoted_key);
+        b.append(':');
+
+        // Serialize the value
+        atom(b, obj.[:mem:]);
+      }
+    }
+  };
+
+  b.append('}');
+}
+
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace builder
+} // namespace arm64
+// Alias the function template to 'to' in the global namespace
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  arm64::builder::string_builder b(initial_capacity);
+  arm64::builder::append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  arm64::builder::string_builder b(initial_capacity);
+  arm64::builder::append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+// Global namespace function for extract_from
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  arm64::builder::string_builder b(initial_capacity);
+  arm64::builder::extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif
+/* end file simdjson/generic/builder/json_builder.h for arm64 */
+/* including simdjson/generic/builder/fractured_json_builder.h for arm64: #include "simdjson/generic/builder/fractured_json_builder.h" */
+/* begin file simdjson/generic/builder/fractured_json_builder.h for arm64 */
+#ifndef SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+#define SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/dom/fractured_json.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_STATIC_REFLECTION
+
+namespace simdjson {
+namespace arm64 {
+namespace builder {
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ *
+ * FracturedJson produces human-readable yet compact JSON output by intelligently
+ * choosing between different layout strategies (inline, compact multiline, table,
+ * expanded) based on content complexity, length, and structure similarity.
+ *
+ * This function combines the builder's serialization with FracturedJson formatting:
+ * 1. Serializes the object to minified JSON using reflection
+ * 2. Parses and reformats using FracturedJson
+ *
+ * Example:
+ *   struct User { int id; std::string name; bool active; };
+ *   User user{1, "Alice", true};
+ *   auto result = to_fractured_json_string(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\", \"active\": true }"
+ *
+ * @param obj The object to serialize (must be a reflectable type)
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string, or an error
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Serialize to minified JSON
+  std::string formatted;
+  auto error = to_json_string(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ *
+ * Example:
+ *   struct User { int id; std::string name; std::string email; bool active; };
+ *   User user{1, "Alice", "alice@example.com", true};
+ *   auto result = extract_fractured_json<"id", "name">(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\" }"
+ *
+ * @param obj The object to serialize
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string containing only the specified fields
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Extract fields to minified JSON
+  std::string formatted;
+  auto error = extract_from(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+} // namespace builder
+} // namespace arm64
+
+// Global namespace convenience functions
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ * Global namespace version for convenience.
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return arm64::builder::to_fractured_json_string(obj, opts, initial_capacity);
+}
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ * Global namespace version for convenience.
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return arm64::builder::extract_fractured_json(obj, opts, initial_capacity);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif // SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+/* end file simdjson/generic/builder/fractured_json_builder.h for arm64 */
+
+
+
+// JSON builder inline definitions
+/* including simdjson/generic/builder/json_string_builder-inl.h for arm64: #include "simdjson/generic/builder/json_string_builder-inl.h" */
+/* begin file simdjson/generic/builder/json_string_builder-inl.h for arm64 */
+#include 
+#include 
+#include 
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/*
+ * Empirically, we have found that an inlined optimization is important for
+ * performance. The following macros are not ideal. We should find a better
+ * way to inline the code.
+ */
+
+#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
+    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
+     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
+#endif
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
+#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+
+namespace simdjson {
+namespace arm64 {
+namespace builder {
+
+static SIMDJSON_CONSTEXPR_LAMBDA std::array
+    json_quotable_character = {
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+/**
+
+A possible SWAR implementation of has_json_escapable_byte. It is not used
+because it is slower than the current implementation. It is kept here for
+reference (to show that we tried it).
+
+inline bool has_json_escapable_byte(uint64_t x) {
+  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
+  uint64_t xor2 = x ^ 0x0202020202020202ULL;
+  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
+  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
+  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
+  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
+}
+
+**/
+
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
+simple_needs_escaping(std::string_view v) {
+  for (char c : v) {
+    // a table lookup is faster than a series of comparisons
+    if (json_quotable_character[static_cast(c)]) {
+      return true;
+    }
+  }
+  return false;
+}
+
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  uint8x16_t running = vdupq_n_u8(0);
+  uint8x16_t v34 = vdupq_n_u8(34);
+  uint8x16_t v92 = vdupq_n_u8(92);
+
+  for (; i + 15 < view.size(); i += 16) {
+    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  if (i < view.size()) {
+    uint8x16_t word =
+        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __m128i running = _mm_setzero_si128();
+  for (; i + 15 < view.size(); i += 16) {
+
+    __m128i word =
+        _mm_loadu_si128(reinterpret_cast(view.data() + i));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  if (i < view.size()) {
+    __m128i word = _mm_loadu_si128(
+        reinterpret_cast(view.data() + view.length() - 16));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  return _mm_movemask_epi8(running) != 0;
+}
+#else
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  return simple_needs_escaping(view);
+}
+#endif
+
+// Scalar fallback for finding next quotable character
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character_scalar(const std::string_view view,
+                                         size_t location) noexcept {
+  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
+    if (json_quotable_character[static_cast(*pos)]) {
+      return pos - view.begin();
+    }
+  }
+  return size_t(view.size());
+}
+
+// SIMD-accelerated position finding that directly locates the first quotable
+// character, combining detection and position extraction in a single pass to
+// minimize redundant work.
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  uint8x16_t v34 = vdupq_n_u8(34);  // '"'
+  uint8x16_t v92 = vdupq_n_u8(92);  // '\\'
+  uint8x16_t v32 = vdupq_n_u8(32);  // control char threshold
+
+  while (remaining >= 16) {
+    uint8x16_t word = vld1q_u8(ptr);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    uint8x16_t needs_escape = vceqq_u8(word, v34);
+    needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
+    needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
+
+    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
+      // Found quotable character - extract exact byte position using ctz
+      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
+      uint64_t lo = vgetq_lane_u64(as64, 0);
+      uint64_t hi = vgetq_lane_u64(as64, 1);
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      if (lo != 0) {
+        _BitScanForward64(&trailing_zero, lo);
+        return offset + trailing_zero / 8;
+      } else {
+        _BitScanForward64(&trailing_zero, hi);
+        return offset + 8 + trailing_zero / 8;
+      }
+#else
+      if (lo != 0) {
+        return offset + __builtin_ctzll(lo) / 8;
+      } else {
+        return offset + 8 + __builtin_ctzll(hi) / 8;
+      }
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants
+  __m128i v34 = _mm_set1_epi8(34);  // '"'
+  __m128i v92 = _mm_set1_epi8(92);  // '\\'
+  __m128i v31 = _mm_set1_epi8(31);  // for control char detection
+
+  while (remaining >= 16) {
+    __m128i word = _mm_loadu_si128(reinterpret_cast(ptr));
+
+    // Check for quotable characters
+    __m128i needs_escape = _mm_cmpeq_epi8(word, v34);
+    needs_escape = _mm_or_si128(needs_escape, _mm_cmpeq_epi8(word, v92));
+    needs_escape = _mm_or_si128(
+        needs_escape,
+        _mm_cmpeq_epi8(_mm_subs_epu8(word, v31), _mm_setzero_si128()));
+
+    int mask = _mm_movemask_epi8(needs_escape);
+    if (mask != 0) {
+      // Found quotable character - use trailing zero count to find position
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      _BitScanForward(&trailing_zero, mask);
+      return offset + trailing_zero;
+#else
+      return offset + __builtin_ctz(mask);
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#else
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  return find_next_json_quotable_character_scalar(view, location);
+}
+#endif
+
+SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
+    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
+    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
+    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
+    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
+    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
+
+// All Unicode characters may be placed within the quotation marks, except for
+// the characters that MUST be escaped: quotation mark, reverse solidus, and the
+// control characters (U+0000 through U+001F). There are two-character sequence
+// escape representations of some popular characters:
+// \", \\, \b, \f, \n, \r, \t.
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline void escape_json_char(char c, char *&out) {
+  if (c == '"') {
+    memcpy(out, "\\\"", 2);
+    out += 2;
+  } else if (c == '\\') {
+    memcpy(out, "\\\\", 2);
+    out += 2;
+  } else {
+    std::string_view v = control_chars[uint8_t(c)];
+    memcpy(out, v.data(), v.size());
+    out += v.size();
+  }
+}
+
+// Writes the escaped version of input to out, returning the number of bytes
+// written. Uses SIMD position finding to locate quotable characters efficiently.
+inline size_t write_string_escaped(const std::string_view input, char *out) {
+  size_t mysize = input.size();
+
+  // Use SIMD position finder directly - it returns mysize if no escape needed
+  size_t location = find_next_json_quotable_character(input, 0);
+  if (location == mysize) {
+    // Fast path: no escaping needed
+    memcpy(out, input.data(), input.size());
+    return input.size();
+  }
+
+  const char *const initout = out;
+  memcpy(out, input.data(), location);
+  out += location;
+  escape_json_char(input[location], out);
+  location += 1;
+  while (location < mysize) {
+    size_t newlocation = find_next_json_quotable_character(input, location);
+    memcpy(out, input.data() + location, newlocation - location);
+    out += newlocation - location;
+    location = newlocation;
+    if (location == mysize) {
+      break;
+    }
+    escape_json_char(input[location], out);
+    location += 1;
+  }
+  return out - initout;
+}
+
+simdjson_inline string_builder::string_builder(size_t initial_capacity)
+    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
+      capacity(buffer.get() != nullptr ? initial_capacity : 0),
+      is_valid(buffer.get() != nullptr) {}
+
+simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
+  // We use the convention that when is_valid is false, then the capacity and
+  // the position are 0.
+  // Most of the time, this function will return true.
+  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
+    return true;
+  }
+  // check for overflow, most of the time there is no overflow
+  if (simdjson_unlikely(position + upcoming_bytes < position)) {
+    return false;
+  }
+  // We will rarely get here.
+  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
+  // If the buffer allocation failed, we set is_valid to false.
+  return is_valid;
+}
+
+simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
+  if (!is_valid) {
+    return;
+  }
+  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
+  if (new_buffer.get() == nullptr) {
+    set_valid(false);
+    return;
+  }
+  std::memcpy(new_buffer.get(), buffer.get(), position);
+  buffer.swap(new_buffer);
+  capacity = desired_capacity;
+}
+
+simdjson_inline void string_builder::set_valid(bool valid) noexcept {
+  if (!valid) {
+    is_valid = false;
+    capacity = 0;
+    position = 0;
+    buffer.reset();
+  } else {
+    is_valid = true;
+  }
+}
+
+simdjson_inline size_t string_builder::size() const noexcept {
+  return position;
+}
+
+simdjson_inline void string_builder::append(char c) noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = c;
+  }
+}
+
+simdjson_inline void string_builder::append_null() noexcept {
+  constexpr char null_literal[] = "null";
+  constexpr size_t null_len = sizeof(null_literal) - 1;
+  if (capacity_check(null_len)) {
+    std::memcpy(buffer.get() + position, null_literal, null_len);
+    position += null_len;
+  }
+}
+
+simdjson_inline void string_builder::clear() noexcept {
+  position = 0;
+  // if it was invalid, we should try to repair it
+  if (!is_valid) {
+    capacity = 0;
+    buffer.reset();
+    is_valid = true;
+  }
+}
+
+namespace internal {
+
+template ::value>::type>
+simdjson_really_inline int int_log2(number_type x) {
+  return 63 - leading_zeroes(uint64_t(x) | 1);
+}
+
+simdjson_really_inline int fast_digit_count_32(uint32_t x) {
+  static uint64_t table[] = {
+      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
+      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
+      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
+      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
+      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
+      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
+      42949672960, 42949672960};
+  return uint32_t((x + table[int_log2(x)]) >> 32);
+}
+
+simdjson_really_inline int fast_digit_count_64(uint64_t x) {
+  static uint64_t table[] = {9,
+                             99,
+                             999,
+                             9999,
+                             99999,
+                             999999,
+                             9999999,
+                             99999999,
+                             999999999,
+                             9999999999,
+                             99999999999,
+                             999999999999,
+                             9999999999999,
+                             99999999999999,
+                             999999999999999ULL,
+                             9999999999999999ULL,
+                             99999999999999999ULL,
+                             999999999999999999ULL,
+                             9999999999999999999ULL};
+  int y = (19 * int_log2(x) >> 6);
+  y += x > table[y];
+  return y + 1;
+}
+
+template ::value>::type>
+simdjson_really_inline size_t digit_count(number_type v) noexcept {
+  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
+                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
+                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
+  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
+    return fast_digit_count_32(static_cast(v));
+  }
+  else {
+    return fast_digit_count_64(static_cast(v));
+  }
+}
+static const char decimal_table[200] = {
+    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
+    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
+    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
+    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
+    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
+    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
+    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
+    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
+    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
+    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
+    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
+    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
+    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
+    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
+    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
+    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
+    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
+};
+} // namespace internal
+
+template 
+simdjson_inline void string_builder::append(number_type v) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_integral::value ||
+                    std::is_floating_point::value,
+                "Unsupported number type");
+  // If C++17 is available, we can 'if constexpr' here.
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    if (v) {
+      constexpr char true_literal[] = "true";
+      constexpr size_t true_len = sizeof(true_literal) - 1;
+      if (capacity_check(true_len)) {
+        std::memcpy(buffer.get() + position, true_literal, true_len);
+        position += true_len;
+      }
+    } else {
+      constexpr char false_literal[] = "false";
+      constexpr size_t false_len = sizeof(false_literal) - 1;
+      if (capacity_check(false_len)) {
+        std::memcpy(buffer.get() + position, false_literal, false_len);
+        position += false_len;
+      }
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
+    // Process 4 digits at a time instead of 2, reducing store operations
+    // and divisions by approximately half for large numbers.
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      unsigned_type pv = static_cast(v);
+      size_t dc = internal::digit_count(pv);
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;  // High 2 digits of remainder
+        unsigned_type r_lo = r % 100;  // Low 2 digits of remainder
+        // Write low 2 digits first (rightmost), then high 2 digits
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits with original 2-digit loop
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
+    // Same 4-digit batching as unsigned path for signed integers
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      bool negative = v < 0;
+      unsigned_type pv = static_cast(v);
+      if (negative) {
+        pv = 0 - pv; // the 0 is for Microsoft
+      }
+      size_t dc = internal::digit_count(pv);
+      // by always writing the minus sign, we avoid the branch.
+      buffer.get()[position] = '-';
+      position += negative ? 1 : 0;
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;
+        unsigned_type r_lo = r % 100;
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
+    constexpr size_t max_number_size = 24;
+    if (capacity_check(max_number_size)) {
+      // We could specialize for float.
+      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
+                                               double(v));
+      position = end - buffer.get();
+    }
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(6 * input.size())) {
+    position += write_string_escaped(input, buffer.get() + position);
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * input.size())) {
+    buffer.get()[position++] = '"';
+    position += write_string_escaped(input, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(char input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * 1)) {
+    buffer.get()[position++] = '"';
+    std::string_view cinput(&input, 1);
+    position += write_string_escaped(cinput, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(const char *input) noexcept {
+  std::string_view cinput(input);
+  escape_and_append_with_quotes(cinput);
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
+  escape_and_append_with_quotes(constevalutil::string_constant::value);
+}
+#endif
+
+simdjson_inline void string_builder::append_raw(const char *c) noexcept {
+  size_t len = std::strlen(c);
+  append_raw(c, len);
+}
+
+simdjson_inline void
+string_builder::append_raw(std::string_view input) noexcept {
+  if (capacity_check(input.size())) {
+    std::memcpy(buffer.get() + position, input.data(), input.size());
+    position += input.size();
+  }
+}
+
+simdjson_inline void string_builder::append_raw(const char *str,
+                                                size_t len) noexcept {
+  if (capacity_check(len)) {
+    std::memcpy(buffer.get() + position, str, len);
+    position += len;
+  }
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+simdjson_inline void string_builder::append(const T &opt) {
+  if (opt) {
+    append(*opt);
+  } else {
+    append_null();
+  }
+}
+
+template 
+  requires(require_custom_serialization)
+simdjson_inline void string_builder::append(T &&val) {
+  serialize(*this, std::forward(val));
+}
+
+template 
+  requires(std::is_convertible::value ||
+           std::is_same::value)
+simdjson_inline void string_builder::append(const T &value) {
+  escape_and_append_with_quotes(value);
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+// Support for range-based appending (std::ranges::view, etc.)
+template 
+  requires(!std::is_convertible::value && !require_custom_serialization)
+simdjson_inline void string_builder::append(const R &range) noexcept {
+  auto it = std::ranges::begin(range);
+  auto end = std::ranges::end(range);
+  if constexpr (concepts::is_pair>) {
+    start_object();
+
+    if (it == end) {
+      end_object();
+      return; // Handle empty range
+    }
+    // Append first item without leading comma
+    append_key_value(it->first, it->second);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append_key_value(it->first, it->second);
+    }
+    end_object();
+  } else {
+    start_array();
+    if (it == end) {
+      end_array();
+      return; // Handle empty range
+    }
+
+    // Append first item without leading comma
+    append(*it);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append(*it);
+    }
+    end_array();
+  }
+}
+
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+simdjson_inline string_builder::operator std::string() const noexcept(false) {
+  return std::string(operator std::string_view());
+}
+
+simdjson_inline string_builder::operator std::string_view() const
+    noexcept(false) simdjson_lifetime_bound {
+  return view();
+}
+#endif
+
+simdjson_inline simdjson_result
+string_builder::view() const noexcept {
+  if (!is_valid) {
+    return simdjson::OUT_OF_CAPACITY;
+  }
+  return std::string_view(buffer.get(), position);
+}
+
+simdjson_inline simdjson_result string_builder::c_str() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position] = '\0';
+    return buffer.get();
+  }
+  return simdjson::OUT_OF_CAPACITY;
+}
+
+simdjson_inline bool string_builder::validate_unicode() const noexcept {
+  return simdjson::validate_utf8(buffer.get(), position);
+}
+
+simdjson_inline void string_builder::start_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '{';
+  }
+}
+
+simdjson_inline void string_builder::end_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '}';
+  }
+}
+
+simdjson_inline void string_builder::start_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '[';
+  }
+}
+
+simdjson_inline void string_builder::end_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ']';
+  }
+}
+
+simdjson_inline void string_builder::append_comma() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ',';
+  }
+}
+
+simdjson_inline void string_builder::append_colon() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ':';
+  }
+}
+
+template 
+simdjson_inline void
+string_builder::append_key_value(key_type key, value_type value) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_convertible::value,
+                "Unsupported key type");
+  escape_and_append_with_quotes(key);
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void
+string_builder::append_key_value(value_type value) noexcept {
+  escape_and_append_with_quotes();
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+#endif
+
+} // namespace builder
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+/* end file simdjson/generic/builder/json_string_builder-inl.h for arm64 */
+
+/* end file simdjson/generic/builder/amalgamated.h for arm64 */
+/* including simdjson/arm64/end.h: #include "simdjson/arm64/end.h" */
+/* begin file simdjson/arm64/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
+/* undefining SIMDJSON_IMPLEMENTATION from "arm64" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/arm64/end.h */
+
+#endif // SIMDJSON_ARM64_BUILDER_H
+/* end file simdjson/arm64/builder.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(fallback)
+/* including simdjson/fallback/builder.h: #include "simdjson/fallback/builder.h" */
+/* begin file simdjson/fallback/builder.h */
+#ifndef SIMDJSON_FALLBACK_BUILDER_H
+#define SIMDJSON_FALLBACK_BUILDER_H
+
+/* including simdjson/fallback/begin.h: #include "simdjson/fallback/begin.h" */
+/* begin file simdjson/fallback/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "fallback" */
+#define SIMDJSON_IMPLEMENTATION fallback
+/* including simdjson/fallback/base.h: #include "simdjson/fallback/base.h" */
+/* begin file simdjson/fallback/base.h */
+#ifndef SIMDJSON_FALLBACK_BASE_H
+#define SIMDJSON_FALLBACK_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+/**
+ * Fallback implementation (runs on any machine).
+ */
+namespace fallback {
+
+class implementation;
+
+} // namespace fallback
+} // namespace simdjson
+
+#endif // SIMDJSON_FALLBACK_BASE_H
+/* end file simdjson/fallback/base.h */
+/* including simdjson/fallback/bitmanipulation.h: #include "simdjson/fallback/bitmanipulation.h" */
+/* begin file simdjson/fallback/bitmanipulation.h */
+#ifndef SIMDJSON_FALLBACK_BITMANIPULATION_H
+#define SIMDJSON_FALLBACK_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace fallback {
+namespace {
+
+#if defined(_MSC_VER) && !defined(_M_ARM64) && !defined(_M_X64)
+static inline unsigned char _BitScanForward64(unsigned long* ret, uint64_t x) {
+  unsigned long x0 = (unsigned long)x, top, bottom;
+  _BitScanForward(&top, (unsigned long)(x >> 32));
+  _BitScanForward(&bottom, x0);
+  *ret = x0 ? bottom : 32 + top;
+  return x != 0;
+}
+static unsigned char _BitScanReverse64(unsigned long* ret, uint64_t x) {
+  unsigned long x1 = (unsigned long)(x >> 32), top, bottom;
+  _BitScanReverse(&top, x1);
+  _BitScanReverse(&bottom, (unsigned long)x);
+  *ret = x1 ? top + 32 : bottom;
+  return x != 0;
+}
+#endif
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+#ifdef _MSC_VER
+  unsigned long leading_zero = 0;
+  // Search the mask data from most significant bit (MSB)
+  // to least significant bit (LSB) for a set bit (1).
+  if (_BitScanReverse64(&leading_zero, input_num))
+    return (int)(63 - leading_zero);
+  else
+    return 64;
+#else
+  return __builtin_clzll(input_num);
+#endif// _MSC_VER
+}
+
+} // unnamed namespace
+} // namespace fallback
+} // namespace simdjson
+
+#endif // SIMDJSON_FALLBACK_BITMANIPULATION_H
+/* end file simdjson/fallback/bitmanipulation.h */
+/* including simdjson/fallback/stringparsing_defs.h: #include "simdjson/fallback/stringparsing_defs.h" */
+/* begin file simdjson/fallback/stringparsing_defs.h */
+#ifndef SIMDJSON_FALLBACK_STRINGPARSING_DEFS_H
+#define SIMDJSON_FALLBACK_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace fallback {
+namespace {
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 1;
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return c == '"'; }
+  simdjson_inline bool has_backslash() { return c == '\\'; }
+  simdjson_inline int quote_index() { return c == '"' ? 0 : 1; }
+  simdjson_inline int backslash_index() { return c == '\\' ? 0 : 1; }
+
+  uint8_t c;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // store to dest unconditionally - we can overwrite the bits we don't like later
+  dst[0] = src[0];
+  return { src[0] };
+}
+
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 1;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits; }
+  simdjson_inline int escape_index() { return 0; }
+
+  bool escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  dst[0] = src[0];
+  return { (src[0] == '\\') || (src[0] == '"') || (src[0] < 32) };
+}
+
+} // unnamed namespace
+} // namespace fallback
+} // namespace simdjson
+
+#endif // SIMDJSON_FALLBACK_STRINGPARSING_DEFS_H
+/* end file simdjson/fallback/stringparsing_defs.h */
+/* including simdjson/fallback/numberparsing_defs.h: #include "simdjson/fallback/numberparsing_defs.h" */
+/* begin file simdjson/fallback/numberparsing_defs.h */
+#ifndef SIMDJSON_FALLBACK_NUMBERPARSING_DEFS_H
+#define SIMDJSON_FALLBACK_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+#ifdef JSON_TEST_NUMBERS // for unit testing
+void found_invalid_number(const uint8_t *buf);
+void found_integer(int64_t result, const uint8_t *buf);
+void found_unsigned_integer(uint64_t result, const uint8_t *buf);
+void found_float(double result, const uint8_t *buf);
+#endif
+
+namespace simdjson {
+namespace fallback {
+namespace numberparsing {
+
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const char *chars) {
+  uint64_t val;
+  memcpy(&val, chars, sizeof(uint64_t));
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+}
+
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  return parse_eight_digits_unrolled(reinterpret_cast(chars));
+}
+
+#if SIMDJSON_IS_32BITS // _umul128 for x86, arm
+// this is a slow emulation routine for 32-bit
+//
+static simdjson_inline uint64_t __emulu(uint32_t x, uint32_t y) {
+  return x * (uint64_t)y;
+}
+static simdjson_inline uint64_t _umul128(uint64_t ab, uint64_t cd, uint64_t *hi) {
+  uint64_t ad = __emulu((uint32_t)(ab >> 32), (uint32_t)cd);
+  uint64_t bd = __emulu((uint32_t)ab, (uint32_t)cd);
+  uint64_t adbc = ad + __emulu((uint32_t)ab, (uint32_t)(cd >> 32));
+  uint64_t adbc_carry = !!(adbc < ad);
+  uint64_t lo = bd + (adbc << 32);
+  *hi = __emulu((uint32_t)(ab >> 32), (uint32_t)(cd >> 32)) + (adbc >> 32) +
+        (adbc_carry << 32) + !!(lo < bd);
+  return lo;
+}
+#endif
+
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+#if SIMDJSON_IS_ARM64
+  // ARM64 has native support for 64-bit multiplications, no need to emultate
+  answer.high = __umulh(value1, value2);
+  answer.low = value1 * value2;
+#else
+  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
+#endif // SIMDJSON_IS_ARM64
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+#endif
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace fallback
+} // namespace simdjson
+
+#ifndef SIMDJSON_SWAR_NUMBER_PARSING
+#if SIMDJSON_IS_BIG_ENDIAN
+#define SIMDJSON_SWAR_NUMBER_PARSING 0
+#else
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+#endif
+#endif
+
+#endif // SIMDJSON_FALLBACK_NUMBERPARSING_DEFS_H
+/* end file simdjson/fallback/numberparsing_defs.h */
+/* end file simdjson/fallback/begin.h */
+/* including simdjson/generic/builder/amalgamated.h for fallback: #include "simdjson/generic/builder/amalgamated.h" */
+/* begin file simdjson/generic/builder/amalgamated.h for fallback */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
+#error simdjson/generic/builder/dependencies.h must be included before simdjson/generic/builder/amalgamated.h!
+#endif
+
+/* including simdjson/generic/builder/json_string_builder.h for fallback: #include "simdjson/generic/builder/json_string_builder.h" */
+/* begin file simdjson/generic/builder/json_string_builder.h for fallback */
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace fallback {
+namespace builder {
+  class string_builder;
+}}
+
+template 
+struct has_custom_serialization : std::false_type {};
+
+inline constexpr struct serialize_tag {
+  template 
+  constexpr void operator()(fallback::builder::string_builder& b, T&& obj) const{
+    return tag_invoke(*this, b, std::forward(obj));
+  }
+
+
+} serialize{};
+template 
+struct has_custom_serialization(), std::declval()))
+>> : std::true_type {};
+
+template 
+constexpr bool require_custom_serialization = has_custom_serialization::value;
+#else
+struct has_custom_serialization : std::false_type {};
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace fallback {
+namespace builder {
+/**
+ * A builder for JSON strings representing documents. This is a low-level
+ * builder that is not meant to be used directly by end-users. Though it
+ * supports atomic types (Booleans, strings), it does not support composed
+ * types (arrays and objects).
+ *
+ * Ultimately, this class can support kernel-specific optimizations. E.g.,
+ * it may make use of SIMD instructions to escape strings faster.
+ */
+class string_builder {
+public:
+  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
+
+  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
+
+  /**
+   * Append number (includes Booleans). Booleans are mapped to the strings
+   * false and true. Numbers are converted to strings abiding by the JSON standard.
+   * Floating-point numbers are converted to the shortest string that 'correctly'
+   * represents the number.
+   */
+  template::value>::type>
+  simdjson_inline void append(number_type v) noexcept;
+
+  /**
+   * Append character c.
+   */
+  simdjson_inline void append(char c)  noexcept;
+
+  /**
+   * Append the string 'null'.
+   */
+  simdjson_inline void append_null()  noexcept;
+
+  /**
+   * Clear the content.
+   */
+  simdjson_inline void clear()  noexcept;
+
+  /**
+   * Append the std::string_view, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
+
+  /**
+   * Append the std::string_view surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void escape_and_append_with_quotes()  noexcept;
+#endif
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
+
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
+
+  /**
+   * Append the C string directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *c)  noexcept;
+
+  /**
+   * Append "{" to the buffer.
+   */
+  simdjson_inline void start_object()  noexcept;
+
+  /**
+   * Append "}" to the buffer.
+   */
+  simdjson_inline void end_object()  noexcept;
+
+  /**
+   * Append "[" to the buffer.
+   */
+  simdjson_inline void start_array()  noexcept;
+
+  /**
+   * Append "]" to the buffer.
+   */
+  simdjson_inline void end_array()  noexcept;
+
+  /**
+   * Append "," to the buffer.
+   */
+  simdjson_inline void append_comma()  noexcept;
+
+  /**
+   * Append ":" to the buffer.
+   */
+  simdjson_inline void append_colon()  noexcept;
+
+  /**
+   * Append a key-value pair to the buffer.
+   * The key is escaped and surrounded by double quotes.
+   * The value is escaped if it is a string.
+   */
+  template
+  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void append_key_value(value_type value) noexcept;
+
+  // Support for optional types (std::optional, etc.)
+  template 
+  requires(!require_custom_serialization)
+  simdjson_inline void append(const T &opt);
+
+  template 
+  requires(require_custom_serialization)
+  simdjson_inline void append(T &&val);
+
+  // Support for string-like types
+  template 
+  requires(std::is_convertible::value ||
+  std::is_same::value )
+  simdjson_inline void append(const T &value);
+#endif
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+  // Support for range-based appending (std::ranges::view, etc.)
+  template 
+requires (!std::is_convertible::value && !require_custom_serialization)
+  simdjson_inline void append(const R &range) noexcept;
+#endif
+  /**
+   * Append the std::string_view directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(std::string_view input)  noexcept;
+
+  /**
+   * Append len characters from str.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
+#if SIMDJSON_EXCEPTIONS
+  /**
+   * Creates an std::string from the written JSON buffer.
+   * Throws if memory allocation failed
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string() const noexcept(false);
+
+  /**
+   * Creates an std::string_view from the written JSON buffer.
+   * Throws if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
+#endif
+
+  /**
+   * Returns a view on the written JSON buffer. Returns an error
+   * if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result view() const noexcept;
+
+  /**
+   * Appends the null character to the buffer and returns
+   * a pointer to the beginning of the written JSON buffer.
+   * Returns an error if memory allocation failed.
+   * The result is null-terminated.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result c_str() noexcept;
+
+  /**
+   * Return true if the content is valid UTF-8.
+   */
+  simdjson_inline bool validate_unicode() const noexcept;
+
+  /**
+   * Returns the current size of the written JSON buffer.
+   * If an error occurred, returns 0.
+   */
+  simdjson_inline size_t size() const noexcept;
+
+private:
+  /**
+   * Returns true if we can write at least upcoming_bytes bytes.
+   * The underlying buffer is reallocated if needed. It is designed
+   * to be called before writing to the buffer. It should be fast.
+   */
+  simdjson_inline bool capacity_check(size_t upcoming_bytes);
+
+  /**
+   * Grow the buffer to at least desired_capacity bytes.
+   * If the allocation fails, is_valid is set to false. We expect
+   * that this function would not be repeatedly called.
+   */
+  simdjson_inline void grow_buffer(size_t desired_capacity);
+
+  /**
+   * We use this helper function to make sure that is_valid is kept consistent.
+   */
+  simdjson_inline void set_valid(bool valid) noexcept;
+
+  std::unique_ptr buffer{};
+  size_t position{0};
+  size_t capacity{0};
+  bool is_valid{true};
+};
+
+
+
+}
+}
+
+
+#if !SIMDJSON_STATIC_REFLECTION
+// fallback implementation until we have static reflection
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::fallback::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view s;
+  auto e = b.view().get(s);
+  if(e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::fallback::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view sv;
+  auto e = b.view().get(sv);
+  if(e) { return e; }
+  s.assign(sv.data(), sv.size());
+  return simdjson::SUCCESS;
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
+/* end file simdjson/generic/builder/json_string_builder.h for fallback */
+/* including simdjson/generic/builder/json_builder.h for fallback: #include "simdjson/generic/builder/json_builder.h" */
+/* begin file simdjson/generic/builder/json_builder.h for fallback */
+#ifndef SIMDJSON_GENERIC_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#if SIMDJSON_STATIC_REFLECTION
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+// #include  // for std::define_static_string - header not available yet
+
+namespace simdjson {
+namespace fallback {
+namespace builder {
+
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  auto it = t.begin();
+  auto end = t.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+constexpr void atom(string_builder &b, const T &t) {
+  b.escape_and_append_with_quotes(t);
+}
+
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &m) {
+  if (m.empty()) {
+    b.append_raw("{}");
+    return;
+  }
+  b.append('{');
+  bool first = true;
+  for (const auto& [key, value] : m) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    // Keys must be convertible to string_view per the concept
+    b.escape_and_append_with_quotes(key);
+    b.append(':');
+    atom(b, value);
+  }
+  b.append('}');
+}
+
+
+template::value && !std::is_same_v>::type>
+constexpr void atom(string_builder &b, const number_type t) {
+  b.append(t);
+}
+
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, t.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &opt) {
+  if (opt) {
+    atom(b, opt.value());
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &ptr) {
+  if (ptr) {
+    atom(b, *ptr);
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for enums - serialize as string representation using expand approach from P2996R12
+template 
+  requires(std::is_enum_v && !require_custom_serialization)
+void atom(string_builder &b, const T &e) {
+#if SIMDJSON_STATIC_REFLECTION
+  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
+  template for (constexpr auto enum_val : enumerators) {
+    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
+    if (e == [:enum_val:]) {
+      b.append_raw(enum_str);
+      return;
+    }
+  };
+  // Fallback to integer if enum value not found
+  atom(b, static_cast>(e));
+#else
+  // Fallback: serialize as integer if reflection not available
+  atom(b, static_cast>(e));
+#endif
+}
+
+// Support for appendable containers that don't have operator[] (sets, etc.)
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &container) {
+  if (container.empty()) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  bool first = true;
+  for (const auto& item : container) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    atom(b, item);
+  }
+  b.append(']');
+}
+
+// append functions that delegate to atom functions for primitive types
+template 
+  requires(std::is_arithmetic_v && !std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+// works for struct
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, z.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// works for container that have begin() and end() iterators
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  auto it = z.begin();
+  auto end = z.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires (require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  b.append(z);
+}
+
+
+template 
+simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+
+template 
+string_builder& operator<<(string_builder& b, const Z& z) {
+  append(b, z);
+  return b;
+}
+
+// extract_from: Serialize only specific fields from a struct to JSON
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+void extract_from(string_builder &b, const T &obj) {
+  // Helper to check if a field name matches any of the requested fields
+  auto should_extract = [](std::string_view field_name) constexpr -> bool {
+    return ((FieldNames.view() == field_name) || ...);
+  };
+
+  b.append('{');
+  bool first = true;
+
+  // Iterate through all members of T using reflection
+  template for (constexpr auto mem : std::define_static_array(
+      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+
+    if constexpr (std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+
+      // Only serialize this field if it's in our list of requested fields
+      if constexpr (should_extract(key)) {
+        if (!first) {
+          b.append(',');
+        }
+        first = false;
+
+        // Serialize the key
+        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
+        b.append_raw(quoted_key);
+        b.append(':');
+
+        // Serialize the value
+        atom(b, obj.[:mem:]);
+      }
+    }
+  };
+
+  b.append('}');
+}
+
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace builder
+} // namespace fallback
+// Alias the function template to 'to' in the global namespace
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  fallback::builder::string_builder b(initial_capacity);
+  fallback::builder::append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  fallback::builder::string_builder b(initial_capacity);
+  fallback::builder::append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+// Global namespace function for extract_from
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  fallback::builder::string_builder b(initial_capacity);
+  fallback::builder::extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif
+/* end file simdjson/generic/builder/json_builder.h for fallback */
+/* including simdjson/generic/builder/fractured_json_builder.h for fallback: #include "simdjson/generic/builder/fractured_json_builder.h" */
+/* begin file simdjson/generic/builder/fractured_json_builder.h for fallback */
+#ifndef SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+#define SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/dom/fractured_json.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_STATIC_REFLECTION
+
+namespace simdjson {
+namespace fallback {
+namespace builder {
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ *
+ * FracturedJson produces human-readable yet compact JSON output by intelligently
+ * choosing between different layout strategies (inline, compact multiline, table,
+ * expanded) based on content complexity, length, and structure similarity.
+ *
+ * This function combines the builder's serialization with FracturedJson formatting:
+ * 1. Serializes the object to minified JSON using reflection
+ * 2. Parses and reformats using FracturedJson
+ *
+ * Example:
+ *   struct User { int id; std::string name; bool active; };
+ *   User user{1, "Alice", true};
+ *   auto result = to_fractured_json_string(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\", \"active\": true }"
+ *
+ * @param obj The object to serialize (must be a reflectable type)
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string, or an error
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Serialize to minified JSON
+  std::string formatted;
+  auto error = to_json_string(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ *
+ * Example:
+ *   struct User { int id; std::string name; std::string email; bool active; };
+ *   User user{1, "Alice", "alice@example.com", true};
+ *   auto result = extract_fractured_json<"id", "name">(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\" }"
+ *
+ * @param obj The object to serialize
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string containing only the specified fields
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Extract fields to minified JSON
+  std::string formatted;
+  auto error = extract_from(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+} // namespace builder
+} // namespace fallback
+
+// Global namespace convenience functions
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ * Global namespace version for convenience.
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return fallback::builder::to_fractured_json_string(obj, opts, initial_capacity);
+}
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ * Global namespace version for convenience.
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return fallback::builder::extract_fractured_json(obj, opts, initial_capacity);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif // SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+/* end file simdjson/generic/builder/fractured_json_builder.h for fallback */
+
+
+
+// JSON builder inline definitions
+/* including simdjson/generic/builder/json_string_builder-inl.h for fallback: #include "simdjson/generic/builder/json_string_builder-inl.h" */
+/* begin file simdjson/generic/builder/json_string_builder-inl.h for fallback */
+#include 
+#include 
+#include 
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/*
+ * Empirically, we have found that an inlined optimization is important for
+ * performance. The following macros are not ideal. We should find a better
+ * way to inline the code.
+ */
+
+#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
+    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
+     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
+#endif
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
+#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+
+namespace simdjson {
+namespace fallback {
+namespace builder {
+
+static SIMDJSON_CONSTEXPR_LAMBDA std::array
+    json_quotable_character = {
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+/**
+
+A possible SWAR implementation of has_json_escapable_byte. It is not used
+because it is slower than the current implementation. It is kept here for
+reference (to show that we tried it).
+
+inline bool has_json_escapable_byte(uint64_t x) {
+  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
+  uint64_t xor2 = x ^ 0x0202020202020202ULL;
+  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
+  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
+  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
+  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
+}
+
+**/
+
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
+simple_needs_escaping(std::string_view v) {
+  for (char c : v) {
+    // a table lookup is faster than a series of comparisons
+    if (json_quotable_character[static_cast(c)]) {
+      return true;
+    }
+  }
+  return false;
+}
+
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  uint8x16_t running = vdupq_n_u8(0);
+  uint8x16_t v34 = vdupq_n_u8(34);
+  uint8x16_t v92 = vdupq_n_u8(92);
+
+  for (; i + 15 < view.size(); i += 16) {
+    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  if (i < view.size()) {
+    uint8x16_t word =
+        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __m128i running = _mm_setzero_si128();
+  for (; i + 15 < view.size(); i += 16) {
+
+    __m128i word =
+        _mm_loadu_si128(reinterpret_cast(view.data() + i));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  if (i < view.size()) {
+    __m128i word = _mm_loadu_si128(
+        reinterpret_cast(view.data() + view.length() - 16));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  return _mm_movemask_epi8(running) != 0;
+}
+#else
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  return simple_needs_escaping(view);
+}
+#endif
+
+// Scalar fallback for finding next quotable character
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character_scalar(const std::string_view view,
+                                         size_t location) noexcept {
+  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
+    if (json_quotable_character[static_cast(*pos)]) {
+      return pos - view.begin();
+    }
+  }
+  return size_t(view.size());
+}
+
+// SIMD-accelerated position finding that directly locates the first quotable
+// character, combining detection and position extraction in a single pass to
+// minimize redundant work.
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  uint8x16_t v34 = vdupq_n_u8(34);  // '"'
+  uint8x16_t v92 = vdupq_n_u8(92);  // '\\'
+  uint8x16_t v32 = vdupq_n_u8(32);  // control char threshold
+
+  while (remaining >= 16) {
+    uint8x16_t word = vld1q_u8(ptr);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    uint8x16_t needs_escape = vceqq_u8(word, v34);
+    needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
+    needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
+
+    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
+      // Found quotable character - extract exact byte position using ctz
+      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
+      uint64_t lo = vgetq_lane_u64(as64, 0);
+      uint64_t hi = vgetq_lane_u64(as64, 1);
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      if (lo != 0) {
+        _BitScanForward64(&trailing_zero, lo);
+        return offset + trailing_zero / 8;
+      } else {
+        _BitScanForward64(&trailing_zero, hi);
+        return offset + 8 + trailing_zero / 8;
+      }
+#else
+      if (lo != 0) {
+        return offset + __builtin_ctzll(lo) / 8;
+      } else {
+        return offset + 8 + __builtin_ctzll(hi) / 8;
+      }
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants
+  __m128i v34 = _mm_set1_epi8(34);  // '"'
+  __m128i v92 = _mm_set1_epi8(92);  // '\\'
+  __m128i v31 = _mm_set1_epi8(31);  // for control char detection
+
+  while (remaining >= 16) {
+    __m128i word = _mm_loadu_si128(reinterpret_cast(ptr));
+
+    // Check for quotable characters
+    __m128i needs_escape = _mm_cmpeq_epi8(word, v34);
+    needs_escape = _mm_or_si128(needs_escape, _mm_cmpeq_epi8(word, v92));
+    needs_escape = _mm_or_si128(
+        needs_escape,
+        _mm_cmpeq_epi8(_mm_subs_epu8(word, v31), _mm_setzero_si128()));
+
+    int mask = _mm_movemask_epi8(needs_escape);
+    if (mask != 0) {
+      // Found quotable character - use trailing zero count to find position
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      _BitScanForward(&trailing_zero, mask);
+      return offset + trailing_zero;
+#else
+      return offset + __builtin_ctz(mask);
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#else
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  return find_next_json_quotable_character_scalar(view, location);
+}
+#endif
+
+SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
+    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
+    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
+    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
+    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
+    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
+
+// All Unicode characters may be placed within the quotation marks, except for
+// the characters that MUST be escaped: quotation mark, reverse solidus, and the
+// control characters (U+0000 through U+001F). There are two-character sequence
+// escape representations of some popular characters:
+// \", \\, \b, \f, \n, \r, \t.
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline void escape_json_char(char c, char *&out) {
+  if (c == '"') {
+    memcpy(out, "\\\"", 2);
+    out += 2;
+  } else if (c == '\\') {
+    memcpy(out, "\\\\", 2);
+    out += 2;
+  } else {
+    std::string_view v = control_chars[uint8_t(c)];
+    memcpy(out, v.data(), v.size());
+    out += v.size();
+  }
+}
+
+// Writes the escaped version of input to out, returning the number of bytes
+// written. Uses SIMD position finding to locate quotable characters efficiently.
+inline size_t write_string_escaped(const std::string_view input, char *out) {
+  size_t mysize = input.size();
+
+  // Use SIMD position finder directly - it returns mysize if no escape needed
+  size_t location = find_next_json_quotable_character(input, 0);
+  if (location == mysize) {
+    // Fast path: no escaping needed
+    memcpy(out, input.data(), input.size());
+    return input.size();
+  }
+
+  const char *const initout = out;
+  memcpy(out, input.data(), location);
+  out += location;
+  escape_json_char(input[location], out);
+  location += 1;
+  while (location < mysize) {
+    size_t newlocation = find_next_json_quotable_character(input, location);
+    memcpy(out, input.data() + location, newlocation - location);
+    out += newlocation - location;
+    location = newlocation;
+    if (location == mysize) {
+      break;
+    }
+    escape_json_char(input[location], out);
+    location += 1;
+  }
+  return out - initout;
+}
+
+simdjson_inline string_builder::string_builder(size_t initial_capacity)
+    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
+      capacity(buffer.get() != nullptr ? initial_capacity : 0),
+      is_valid(buffer.get() != nullptr) {}
+
+simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
+  // We use the convention that when is_valid is false, then the capacity and
+  // the position are 0.
+  // Most of the time, this function will return true.
+  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
+    return true;
+  }
+  // check for overflow, most of the time there is no overflow
+  if (simdjson_unlikely(position + upcoming_bytes < position)) {
+    return false;
+  }
+  // We will rarely get here.
+  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
+  // If the buffer allocation failed, we set is_valid to false.
+  return is_valid;
+}
+
+simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
+  if (!is_valid) {
+    return;
+  }
+  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
+  if (new_buffer.get() == nullptr) {
+    set_valid(false);
+    return;
+  }
+  std::memcpy(new_buffer.get(), buffer.get(), position);
+  buffer.swap(new_buffer);
+  capacity = desired_capacity;
+}
+
+simdjson_inline void string_builder::set_valid(bool valid) noexcept {
+  if (!valid) {
+    is_valid = false;
+    capacity = 0;
+    position = 0;
+    buffer.reset();
+  } else {
+    is_valid = true;
+  }
+}
+
+simdjson_inline size_t string_builder::size() const noexcept {
+  return position;
+}
+
+simdjson_inline void string_builder::append(char c) noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = c;
+  }
+}
+
+simdjson_inline void string_builder::append_null() noexcept {
+  constexpr char null_literal[] = "null";
+  constexpr size_t null_len = sizeof(null_literal) - 1;
+  if (capacity_check(null_len)) {
+    std::memcpy(buffer.get() + position, null_literal, null_len);
+    position += null_len;
+  }
+}
+
+simdjson_inline void string_builder::clear() noexcept {
+  position = 0;
+  // if it was invalid, we should try to repair it
+  if (!is_valid) {
+    capacity = 0;
+    buffer.reset();
+    is_valid = true;
+  }
+}
+
+namespace internal {
+
+template ::value>::type>
+simdjson_really_inline int int_log2(number_type x) {
+  return 63 - leading_zeroes(uint64_t(x) | 1);
+}
+
+simdjson_really_inline int fast_digit_count_32(uint32_t x) {
+  static uint64_t table[] = {
+      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
+      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
+      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
+      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
+      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
+      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
+      42949672960, 42949672960};
+  return uint32_t((x + table[int_log2(x)]) >> 32);
+}
+
+simdjson_really_inline int fast_digit_count_64(uint64_t x) {
+  static uint64_t table[] = {9,
+                             99,
+                             999,
+                             9999,
+                             99999,
+                             999999,
+                             9999999,
+                             99999999,
+                             999999999,
+                             9999999999,
+                             99999999999,
+                             999999999999,
+                             9999999999999,
+                             99999999999999,
+                             999999999999999ULL,
+                             9999999999999999ULL,
+                             99999999999999999ULL,
+                             999999999999999999ULL,
+                             9999999999999999999ULL};
+  int y = (19 * int_log2(x) >> 6);
+  y += x > table[y];
+  return y + 1;
+}
+
+template ::value>::type>
+simdjson_really_inline size_t digit_count(number_type v) noexcept {
+  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
+                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
+                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
+  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
+    return fast_digit_count_32(static_cast(v));
+  }
+  else {
+    return fast_digit_count_64(static_cast(v));
+  }
+}
+static const char decimal_table[200] = {
+    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
+    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
+    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
+    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
+    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
+    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
+    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
+    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
+    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
+    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
+    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
+    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
+    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
+    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
+    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
+    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
+    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
+};
+} // namespace internal
+
+template 
+simdjson_inline void string_builder::append(number_type v) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_integral::value ||
+                    std::is_floating_point::value,
+                "Unsupported number type");
+  // If C++17 is available, we can 'if constexpr' here.
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    if (v) {
+      constexpr char true_literal[] = "true";
+      constexpr size_t true_len = sizeof(true_literal) - 1;
+      if (capacity_check(true_len)) {
+        std::memcpy(buffer.get() + position, true_literal, true_len);
+        position += true_len;
+      }
+    } else {
+      constexpr char false_literal[] = "false";
+      constexpr size_t false_len = sizeof(false_literal) - 1;
+      if (capacity_check(false_len)) {
+        std::memcpy(buffer.get() + position, false_literal, false_len);
+        position += false_len;
+      }
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
+    // Process 4 digits at a time instead of 2, reducing store operations
+    // and divisions by approximately half for large numbers.
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      unsigned_type pv = static_cast(v);
+      size_t dc = internal::digit_count(pv);
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;  // High 2 digits of remainder
+        unsigned_type r_lo = r % 100;  // Low 2 digits of remainder
+        // Write low 2 digits first (rightmost), then high 2 digits
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits with original 2-digit loop
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
+    // Same 4-digit batching as unsigned path for signed integers
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      bool negative = v < 0;
+      unsigned_type pv = static_cast(v);
+      if (negative) {
+        pv = 0 - pv; // the 0 is for Microsoft
+      }
+      size_t dc = internal::digit_count(pv);
+      // by always writing the minus sign, we avoid the branch.
+      buffer.get()[position] = '-';
+      position += negative ? 1 : 0;
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;
+        unsigned_type r_lo = r % 100;
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
+    constexpr size_t max_number_size = 24;
+    if (capacity_check(max_number_size)) {
+      // We could specialize for float.
+      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
+                                               double(v));
+      position = end - buffer.get();
+    }
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(6 * input.size())) {
+    position += write_string_escaped(input, buffer.get() + position);
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * input.size())) {
+    buffer.get()[position++] = '"';
+    position += write_string_escaped(input, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(char input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * 1)) {
+    buffer.get()[position++] = '"';
+    std::string_view cinput(&input, 1);
+    position += write_string_escaped(cinput, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(const char *input) noexcept {
+  std::string_view cinput(input);
+  escape_and_append_with_quotes(cinput);
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
+  escape_and_append_with_quotes(constevalutil::string_constant::value);
+}
+#endif
+
+simdjson_inline void string_builder::append_raw(const char *c) noexcept {
+  size_t len = std::strlen(c);
+  append_raw(c, len);
+}
+
+simdjson_inline void
+string_builder::append_raw(std::string_view input) noexcept {
+  if (capacity_check(input.size())) {
+    std::memcpy(buffer.get() + position, input.data(), input.size());
+    position += input.size();
+  }
+}
+
+simdjson_inline void string_builder::append_raw(const char *str,
+                                                size_t len) noexcept {
+  if (capacity_check(len)) {
+    std::memcpy(buffer.get() + position, str, len);
+    position += len;
+  }
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+simdjson_inline void string_builder::append(const T &opt) {
+  if (opt) {
+    append(*opt);
+  } else {
+    append_null();
+  }
+}
+
+template 
+  requires(require_custom_serialization)
+simdjson_inline void string_builder::append(T &&val) {
+  serialize(*this, std::forward(val));
+}
+
+template 
+  requires(std::is_convertible::value ||
+           std::is_same::value)
+simdjson_inline void string_builder::append(const T &value) {
+  escape_and_append_with_quotes(value);
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+// Support for range-based appending (std::ranges::view, etc.)
+template 
+  requires(!std::is_convertible::value && !require_custom_serialization)
+simdjson_inline void string_builder::append(const R &range) noexcept {
+  auto it = std::ranges::begin(range);
+  auto end = std::ranges::end(range);
+  if constexpr (concepts::is_pair>) {
+    start_object();
+
+    if (it == end) {
+      end_object();
+      return; // Handle empty range
+    }
+    // Append first item without leading comma
+    append_key_value(it->first, it->second);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append_key_value(it->first, it->second);
+    }
+    end_object();
+  } else {
+    start_array();
+    if (it == end) {
+      end_array();
+      return; // Handle empty range
+    }
+
+    // Append first item without leading comma
+    append(*it);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append(*it);
+    }
+    end_array();
+  }
+}
+
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+simdjson_inline string_builder::operator std::string() const noexcept(false) {
+  return std::string(operator std::string_view());
+}
+
+simdjson_inline string_builder::operator std::string_view() const
+    noexcept(false) simdjson_lifetime_bound {
+  return view();
+}
+#endif
+
+simdjson_inline simdjson_result
+string_builder::view() const noexcept {
+  if (!is_valid) {
+    return simdjson::OUT_OF_CAPACITY;
+  }
+  return std::string_view(buffer.get(), position);
+}
+
+simdjson_inline simdjson_result string_builder::c_str() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position] = '\0';
+    return buffer.get();
+  }
+  return simdjson::OUT_OF_CAPACITY;
+}
+
+simdjson_inline bool string_builder::validate_unicode() const noexcept {
+  return simdjson::validate_utf8(buffer.get(), position);
+}
+
+simdjson_inline void string_builder::start_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '{';
+  }
+}
+
+simdjson_inline void string_builder::end_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '}';
+  }
+}
+
+simdjson_inline void string_builder::start_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '[';
+  }
+}
+
+simdjson_inline void string_builder::end_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ']';
+  }
+}
+
+simdjson_inline void string_builder::append_comma() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ',';
+  }
+}
+
+simdjson_inline void string_builder::append_colon() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ':';
+  }
+}
+
+template 
+simdjson_inline void
+string_builder::append_key_value(key_type key, value_type value) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_convertible::value,
+                "Unsupported key type");
+  escape_and_append_with_quotes(key);
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void
+string_builder::append_key_value(value_type value) noexcept {
+  escape_and_append_with_quotes();
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+#endif
+
+} // namespace builder
+} // namespace fallback
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+/* end file simdjson/generic/builder/json_string_builder-inl.h for fallback */
+
+/* end file simdjson/generic/builder/amalgamated.h for fallback */
+/* including simdjson/fallback/end.h: #include "simdjson/fallback/end.h" */
+/* begin file simdjson/fallback/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/* undefining SIMDJSON_IMPLEMENTATION from "fallback" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/fallback/end.h */
+
+#endif // SIMDJSON_FALLBACK_BUILDER_H
+/* end file simdjson/fallback/builder.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(haswell)
+/* including simdjson/haswell/builder.h: #include "simdjson/haswell/builder.h" */
+/* begin file simdjson/haswell/builder.h */
+#ifndef SIMDJSON_HASWELL_BUILDER_H
+#define SIMDJSON_HASWELL_BUILDER_H
+
+/* including simdjson/haswell/begin.h: #include "simdjson/haswell/begin.h" */
+/* begin file simdjson/haswell/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "haswell" */
+#define SIMDJSON_IMPLEMENTATION haswell
+
+/* including simdjson/haswell/base.h: #include "simdjson/haswell/base.h" */
+/* begin file simdjson/haswell/base.h */
+#ifndef SIMDJSON_HASWELL_BASE_H
+#define SIMDJSON_HASWELL_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_HASWELL
+namespace simdjson {
+/**
+ * Implementation for Haswell (Intel AVX2).
+ */
+namespace haswell {
+
+class implementation;
+
+namespace {
+namespace simd {
+template  struct simd8;
+template  struct simd8x64;
+} // namespace simd
+} // unnamed namespace
+
+} // namespace haswell
+} // namespace simdjson
+
+#endif // SIMDJSON_HASWELL_BASE_H
+/* end file simdjson/haswell/base.h */
+/* including simdjson/haswell/intrinsics.h: #include "simdjson/haswell/intrinsics.h" */
+/* begin file simdjson/haswell/intrinsics.h */
+#ifndef SIMDJSON_HASWELL_INTRINSICS_H
+#define SIMDJSON_HASWELL_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_VISUAL_STUDIO
+// under clang within visual studio, this will include 
+#include   // visual studio or clang
+#else
+#include  // elsewhere
+#endif // SIMDJSON_VISUAL_STUDIO
+
+#if SIMDJSON_CLANG_VISUAL_STUDIO
+/**
+ * You are not supposed, normally, to include these
+ * headers directly. Instead you should either include intrin.h
+ * or x86intrin.h. However, when compiling with clang
+ * under Windows (i.e., when _MSC_VER is set), these headers
+ * only get included *if* the corresponding features are detected
+ * from macros:
+ * e.g., if __AVX2__ is set... in turn,  we normally set these
+ * macros by compiling against the corresponding architecture
+ * (e.g., arch:AVX2, -mavx2, etc.) which compiles the whole
+ * software with these advanced instructions. In simdjson, we
+ * want to compile the whole program for a generic target,
+ * and only target our specific kernels. As a workaround,
+ * we directly include the needed headers. These headers would
+ * normally guard against such usage, but we carefully included
+ *   (or ) before, so the headers
+ * are fooled.
+ */
+#include    // for _blsr_u64
+#include  // for  __lzcnt64
+#include    // for most things (AVX2, AVX512, _popcnt64)
+#include 
+#include 
+#include 
+#include 
+#include    // for  _mm_clmulepi64_si128
+// unfortunately, we may not get _blsr_u64, but, thankfully, clang
+// has it as a macro.
+#ifndef _blsr_u64
+// we roll our own
+#define _blsr_u64(n) ((n - 1) & n)
+#endif //  _blsr_u64
+#endif // SIMDJSON_CLANG_VISUAL_STUDIO
+
+static_assert(sizeof(__m256i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for haswell kernel.");
+
+#endif // SIMDJSON_HASWELL_INTRINSICS_H
+/* end file simdjson/haswell/intrinsics.h */
+
+#if !SIMDJSON_CAN_ALWAYS_RUN_HASWELL
+// We enable bmi2 only if LLVM/clang is used, because GCC may not
+// make good use of it. See https://github.com/simdjson/simdjson/pull/2243
+#if defined(__clang__)
+SIMDJSON_TARGET_REGION("avx2,bmi,bmi2,pclmul,lzcnt,popcnt")
+#else
+SIMDJSON_TARGET_REGION("avx2,bmi,pclmul,lzcnt,popcnt")
+#endif
+#endif
+
+/* including simdjson/haswell/bitmanipulation.h: #include "simdjson/haswell/bitmanipulation.h" */
+/* begin file simdjson/haswell/bitmanipulation.h */
+#ifndef SIMDJSON_HASWELL_BITMANIPULATION_H
+#define SIMDJSON_HASWELL_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/bitmask.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace haswell {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  return (int)_tzcnt_u64(input_num);
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO
+  ////////
+  // You might expect the next line to be equivalent to
+  // return (int)_tzcnt_u64(input_num);
+  // but the generated code differs and might be less efficient?
+  ////////
+  return __builtin_ctzll(input_num);
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return _blsr_u64(input_num);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+  return int(_lzcnt_u64(input_num));
+}
+
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+simdjson_inline unsigned __int64 count_ones(uint64_t input_num) {
+  // note: we do not support legacy 32-bit Windows in this kernel
+  return __popcnt64(input_num);// Visual Studio wants two underscores
+}
+#else
+simdjson_inline long long int count_ones(uint64_t input_num) {
+  return _popcnt64(input_num);
+}
+#endif
+
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
+                                uint64_t *result) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  return _addcarry_u64(0, value1, value2,
+                       reinterpret_cast(result));
+#else
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+#endif
+}
+
+} // unnamed namespace
+} // namespace haswell
+} // namespace simdjson
+
+#endif // SIMDJSON_HASWELL_BITMANIPULATION_H
+/* end file simdjson/haswell/bitmanipulation.h */
+/* including simdjson/haswell/bitmask.h: #include "simdjson/haswell/bitmask.h" */
+/* begin file simdjson/haswell/bitmask.h */
+#ifndef SIMDJSON_HASWELL_BITMASK_H
+#define SIMDJSON_HASWELL_BITMASK_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace haswell {
+namespace {
+
+//
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
+//
+// For example, prefix_xor(00100100) == 00011100
+//
+simdjson_inline uint64_t prefix_xor(const uint64_t bitmask) {
+  // There should be no such thing with a processor supporting avx2
+  // but not clmul.
+  __m128i all_ones = _mm_set1_epi8('\xFF');
+  __m128i result = _mm_clmulepi64_si128(_mm_set_epi64x(0ULL, bitmask), all_ones, 0);
+  return _mm_cvtsi128_si64(result);
+}
+
+} // unnamed namespace
+} // namespace haswell
+} // namespace simdjson
+
+#endif // SIMDJSON_HASWELL_BITMASK_H
+/* end file simdjson/haswell/bitmask.h */
+/* including simdjson/haswell/numberparsing_defs.h: #include "simdjson/haswell/numberparsing_defs.h" */
+/* begin file simdjson/haswell/numberparsing_defs.h */
+#ifndef SIMDJSON_HASWELL_NUMBERPARSING_DEFS_H
+#define SIMDJSON_HASWELL_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace haswell {
+namespace numberparsing {
+
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  // this actually computes *16* values so we are being wasteful.
+  const __m128i ascii0 = _mm_set1_epi8('0');
+  const __m128i mul_1_10 =
+      _mm_setr_epi8(10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1);
+  const __m128i mul_1_100 = _mm_setr_epi16(100, 1, 100, 1, 100, 1, 100, 1);
+  const __m128i mul_1_10000 =
+      _mm_setr_epi16(10000, 1, 10000, 1, 10000, 1, 10000, 1);
+  const __m128i input = _mm_sub_epi8(
+      _mm_loadu_si128(reinterpret_cast(chars)), ascii0);
+  const __m128i t1 = _mm_maddubs_epi16(input, mul_1_10);
+  const __m128i t2 = _mm_madd_epi16(t1, mul_1_100);
+  const __m128i t3 = _mm_packus_epi32(t2, t2);
+  const __m128i t4 = _mm_madd_epi16(t3, mul_1_10000);
+  return _mm_cvtsi128_si32(
+      t4); // only captures the sum of the first 8 digits, drop the rest
+}
+
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+#if SIMDJSON_IS_ARM64
+  // ARM64 has native support for 64-bit multiplications, no need to emultate
+  answer.high = __umulh(value1, value2);
+  answer.low = value1 * value2;
+#else
+  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
+#endif // SIMDJSON_IS_ARM64
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+#endif
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace haswell
+} // namespace simdjson
+
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+
+#endif // SIMDJSON_HASWELL_NUMBERPARSING_DEFS_H
+/* end file simdjson/haswell/numberparsing_defs.h */
+/* including simdjson/haswell/simd.h: #include "simdjson/haswell/simd.h" */
+/* begin file simdjson/haswell/simd.h */
+#ifndef SIMDJSON_HASWELL_SIMD_H
+#define SIMDJSON_HASWELL_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace haswell {
+namespace {
+namespace simd {
+
+  // Forward-declared so they can be used by splat and friends.
+  template
+  struct base {
+    __m256i value;
+
+    // Zero constructor
+    simdjson_inline base() : value{__m256i()} {}
+
+    // Conversion from SIMD register
+    simdjson_inline base(const __m256i _value) : value(_value) {}
+
+    // Conversion to SIMD register
+    simdjson_inline operator const __m256i&() const { return this->value; }
+    simdjson_inline operator __m256i&() { return this->value; }
+
+    // Bit operations
+    simdjson_inline Child operator|(const Child other) const { return _mm256_or_si256(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return _mm256_and_si256(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return _mm256_xor_si256(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return _mm256_andnot_si256(other, *this); }
+    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
+
+  // Forward-declared so they can be used by splat and friends.
+  template
+  struct simd8;
+
+  template>
+  struct base8: base> {
+    typedef uint32_t bitmask_t;
+    typedef uint64_t bitmask2_t;
+
+    simdjson_inline base8() : base>() {}
+    simdjson_inline base8(const __m256i _value) : base>(_value) {}
+
+    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return _mm256_cmpeq_epi8(lhs, rhs); }
+
+    static const int SIZE = sizeof(base::value);
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return _mm256_alignr_epi8(*this, _mm256_permute2x128_si256(prev_chunk, *this, 0x21), 16 - N);
+    }
+  };
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8: base8 {
+    static simdjson_inline simd8 splat(bool _value) { return _mm256_set1_epi8(uint8_t(-(!!_value))); }
+
+    simdjson_inline simd8() : base8() {}
+    simdjson_inline simd8(const __m256i _value) : base8(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
+
+    simdjson_inline int to_bitmask() const { return _mm256_movemask_epi8(*this); }
+    simdjson_inline bool any() const { return !_mm256_testz_si256(*this, *this); }
+    simdjson_inline simd8 operator~() const { return *this ^ true; }
+  };
+
+  template
+  struct base8_numeric: base8 {
+    static simdjson_inline simd8 splat(T _value) { return _mm256_set1_epi8(_value); }
+    static simdjson_inline simd8 zero() { return _mm256_setzero_si256(); }
+    static simdjson_inline simd8 load(const T values[32]) {
+      return _mm256_loadu_si256(reinterpret_cast(values));
+    }
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    static simdjson_inline simd8 repeat_16(
+      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
+      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    simdjson_inline base8_numeric() : base8() {}
+    simdjson_inline base8_numeric(const __m256i _value) : base8(_value) {}
+
+    // Store to array
+    simdjson_inline void store(T dst[32]) const { return _mm256_storeu_si256(reinterpret_cast<__m256i *>(dst), *this); }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return _mm256_add_epi8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return _mm256_sub_epi8(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
+
+    // Override to distinguish from bool version
+    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return _mm256_shuffle_epi8(lookup_table, *this);
+    }
+
+    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
+    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
+    // Only the first 32 - count_ones(mask) bytes of the result are significant but 32 bytes
+    // get written.
+    // Design consideration: it seems like a function with the
+    // signature simd8 compress(uint32_t mask) would be
+    // sensible, but the AVX ISA makes this kind of approach difficult.
+    template
+    simdjson_inline void compress(uint32_t mask, L * output) const {
+      using internal::thintable_epi8;
+      using internal::BitsSetTable256mul2;
+      using internal::pshufb_combine_table;
+      // this particular implementation was inspired by work done by @animetosho
+      // we do it in four steps, first 8 bytes and then second 8 bytes...
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // second least significant 8 bits
+      uint8_t mask3 = uint8_t(mask >> 16); // ...
+      uint8_t mask4 = uint8_t(mask >> 24); // ...
+      // next line just loads the 64-bit values thintable_epi8[mask1] and
+      // thintable_epi8[mask2] into a 128-bit register, using only
+      // two instructions on most compilers.
+      __m256i shufmask =  _mm256_set_epi64x(thintable_epi8[mask4], thintable_epi8[mask3],
+        thintable_epi8[mask2], thintable_epi8[mask1]);
+      // we increment by 0x08 the second half of the mask and so forth
+      shufmask =
+      _mm256_add_epi8(shufmask, _mm256_set_epi32(0x18181818, 0x18181818,
+         0x10101010, 0x10101010, 0x08080808, 0x08080808, 0, 0));
+      // this is the version "nearly pruned"
+      __m256i pruned = _mm256_shuffle_epi8(*this, shufmask);
+      // we still need to put the  pieces back together.
+      // we compute the popcount of the first words:
+      int pop1 = BitsSetTable256mul2[mask1];
+      int pop3 = BitsSetTable256mul2[mask3];
+
+      // then load the corresponding mask
+      // could be done with _mm256_loadu2_m128i but many standard libraries omit this intrinsic.
+      __m256i v256 = _mm256_castsi128_si256(
+        _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop1 * 8)));
+      __m256i compactmask = _mm256_insertf128_si256(v256,
+         _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop3 * 8)), 1);
+      __m256i almostthere =  _mm256_shuffle_epi8(pruned, compactmask);
+      // We just need to write out the result.
+      // This is the tricky bit that is hard to do
+      // if we want to return a SIMD register, since there
+      // is no single-instruction approach to recombine
+      // the two 128-bit lanes with an offset.
+      __m128i v128;
+      v128 = _mm256_castsi256_si128(almostthere);
+      _mm_storeu_si128( reinterpret_cast<__m128i *>(output), v128);
+      v128 = _mm256_extractf128_si256(almostthere, 1);
+      _mm_storeu_si128( reinterpret_cast<__m128i *>(output + 16 - count_ones(mask & 0xFFFF)), v128);
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 : base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const int8_t values[32]) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15,
+      int8_t v16, int8_t v17, int8_t v18, int8_t v19, int8_t v20, int8_t v21, int8_t v22, int8_t v23,
+      int8_t v24, int8_t v25, int8_t v26, int8_t v27, int8_t v28, int8_t v29, int8_t v30, int8_t v31
+    ) : simd8(_mm256_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15,
+      v16,v17,v18,v19,v20,v21,v22,v23,
+      v24,v25,v26,v27,v28,v29,v30,v31
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm256_max_epi8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm256_min_epi8(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return _mm256_cmpgt_epi8(*this, other); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return _mm256_cmpgt_epi8(other, *this); }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8: base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const uint8_t values[32]) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15,
+      uint8_t v16, uint8_t v17, uint8_t v18, uint8_t v19, uint8_t v20, uint8_t v21, uint8_t v22, uint8_t v23,
+      uint8_t v24, uint8_t v25, uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30, uint8_t v31
+    ) : simd8(_mm256_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15,
+      v16,v17,v18,v19,v20,v21,v22,v23,
+      v24,v25,v26,v27,v28,v29,v30,v31
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm256_adds_epu8(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm256_subs_epu8(*this, other); }
+
+    // Order-specific operations
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm256_max_epu8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm256_min_epu8(other, *this); }
+    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
+    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
+    simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
+    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return this->lt_bits(other).any_bits_set(); }
+
+    // Bit-specific operations
+    simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
+    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
+    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
+    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
+    simdjson_inline bool is_ascii() const { return _mm256_movemask_epi8(*this) == 0; }
+    simdjson_inline bool bits_not_set_anywhere() const { return _mm256_testz_si256(*this, *this); }
+    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
+    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return _mm256_testz_si256(*this, bits); }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
+    template
+    simdjson_inline simd8 shr() const { return simd8(_mm256_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
+    template
+    simdjson_inline simd8 shl() const { return simd8(_mm256_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
+    // Get one of the bits and make a bitmask out of it.
+    // e.g. value.get_bit<7>() gets the high bit
+    template
+    simdjson_inline int get_bit() const { return _mm256_movemask_epi8(_mm256_slli_epi16(*this, 7-N)); }
+  };
+
+  template
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    static_assert(NUM_CHUNKS == 2, "Haswell kernel should use two registers per 64-byte block.");
+    const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1) : chunks{chunk0, chunk1} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+32)} {}
+
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      uint32_t mask1 = uint32_t(mask);
+      uint32_t mask2 = uint32_t(mask >> 32);
+      this->chunks[0].compress(mask1, output);
+      this->chunks[1].compress(mask2, output + 32 - count_ones(mask1));
+      return 64 - count_ones(mask);
+    }
+
+    simdjson_inline void store(T ptr[64]) const {
+      this->chunks[0].store(ptr+sizeof(simd8)*0);
+      this->chunks[1].store(ptr+sizeof(simd8)*1);
+    }
+
+    simdjson_inline uint64_t to_bitmask() const {
+      uint64_t r_lo = uint32_t(this->chunks[0].to_bitmask());
+      uint64_t r_hi =                       this->chunks[1].to_bitmask();
+      return r_lo | (r_hi << 32);
+    }
+
+    simdjson_inline simd8 reduce_or() const {
+      return this->chunks[0] | this->chunks[1];
+    }
+
+    simdjson_inline simd8x64 bit_or(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return simd8x64(
+        this->chunks[0] | mask,
+        this->chunks[1] | mask
+      );
+    }
+
+    simdjson_inline uint64_t eq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] == mask,
+        this->chunks[1] == mask
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t eq(const simd8x64 &other) const {
+      return  simd8x64(
+        this->chunks[0] == other.chunks[0],
+        this->chunks[1] == other.chunks[1]
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t lteq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] <= mask,
+        this->chunks[1] <= mask
+      ).to_bitmask();
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+
+} // unnamed namespace
+} // namespace haswell
+} // namespace simdjson
+
+#endif // SIMDJSON_HASWELL_SIMD_H
+/* end file simdjson/haswell/simd.h */
+/* including simdjson/haswell/stringparsing_defs.h: #include "simdjson/haswell/stringparsing_defs.h" */
+/* begin file simdjson/haswell/stringparsing_defs.h */
+#ifndef SIMDJSON_HASWELL_STRINGPARSING_DEFS_H
+#define SIMDJSON_HASWELL_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace haswell {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 32;
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
+  simdjson_inline bool has_backslash() { return ((quote_bits - 1) & bs_bits) != 0; }
+  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
+  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
+
+  uint32_t bs_bits;
+  uint32_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // this can read up to 15 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  // store to dest unconditionally - we can overwrite the bits we don't like later
+  v.store(dst);
+  return {
+      static_cast((v == '\\').to_bitmask()),     // bs_bits
+      static_cast((v == '"').to_bitmask()), // quote_bits
+  };
+}
+
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 32;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits); }
+
+  uint64_t escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  simd8 is_quote = (v == '"');
+  simd8 is_backslash = (v == '\\');
+  simd8 is_control = (v < 32);
+  return {
+    uint64_t((is_backslash | is_quote | is_control).to_bitmask())
+  };
+}
+
+} // unnamed namespace
+} // namespace haswell
+} // namespace simdjson
+
+#endif // SIMDJSON_HASWELL_STRINGPARSING_DEFS_H
+/* end file simdjson/haswell/stringparsing_defs.h */
+/* end file simdjson/haswell/begin.h */
+/* including simdjson/generic/builder/amalgamated.h for haswell: #include "simdjson/generic/builder/amalgamated.h" */
+/* begin file simdjson/generic/builder/amalgamated.h for haswell */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
+#error simdjson/generic/builder/dependencies.h must be included before simdjson/generic/builder/amalgamated.h!
+#endif
+
+/* including simdjson/generic/builder/json_string_builder.h for haswell: #include "simdjson/generic/builder/json_string_builder.h" */
+/* begin file simdjson/generic/builder/json_string_builder.h for haswell */
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace haswell {
+namespace builder {
+  class string_builder;
+}}
+
+template 
+struct has_custom_serialization : std::false_type {};
+
+inline constexpr struct serialize_tag {
+  template 
+  constexpr void operator()(haswell::builder::string_builder& b, T&& obj) const{
+    return tag_invoke(*this, b, std::forward(obj));
+  }
+
+
+} serialize{};
+template 
+struct has_custom_serialization(), std::declval()))
+>> : std::true_type {};
+
+template 
+constexpr bool require_custom_serialization = has_custom_serialization::value;
+#else
+struct has_custom_serialization : std::false_type {};
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace haswell {
+namespace builder {
+/**
+ * A builder for JSON strings representing documents. This is a low-level
+ * builder that is not meant to be used directly by end-users. Though it
+ * supports atomic types (Booleans, strings), it does not support composed
+ * types (arrays and objects).
+ *
+ * Ultimately, this class can support kernel-specific optimizations. E.g.,
+ * it may make use of SIMD instructions to escape strings faster.
+ */
+class string_builder {
+public:
+  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
+
+  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
+
+  /**
+   * Append number (includes Booleans). Booleans are mapped to the strings
+   * false and true. Numbers are converted to strings abiding by the JSON standard.
+   * Floating-point numbers are converted to the shortest string that 'correctly'
+   * represents the number.
+   */
+  template::value>::type>
+  simdjson_inline void append(number_type v) noexcept;
+
+  /**
+   * Append character c.
+   */
+  simdjson_inline void append(char c)  noexcept;
+
+  /**
+   * Append the string 'null'.
+   */
+  simdjson_inline void append_null()  noexcept;
+
+  /**
+   * Clear the content.
+   */
+  simdjson_inline void clear()  noexcept;
+
+  /**
+   * Append the std::string_view, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
+
+  /**
+   * Append the std::string_view surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void escape_and_append_with_quotes()  noexcept;
+#endif
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
+
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
+
+  /**
+   * Append the C string directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *c)  noexcept;
+
+  /**
+   * Append "{" to the buffer.
+   */
+  simdjson_inline void start_object()  noexcept;
+
+  /**
+   * Append "}" to the buffer.
+   */
+  simdjson_inline void end_object()  noexcept;
+
+  /**
+   * Append "[" to the buffer.
+   */
+  simdjson_inline void start_array()  noexcept;
+
+  /**
+   * Append "]" to the buffer.
+   */
+  simdjson_inline void end_array()  noexcept;
+
+  /**
+   * Append "," to the buffer.
+   */
+  simdjson_inline void append_comma()  noexcept;
+
+  /**
+   * Append ":" to the buffer.
+   */
+  simdjson_inline void append_colon()  noexcept;
+
+  /**
+   * Append a key-value pair to the buffer.
+   * The key is escaped and surrounded by double quotes.
+   * The value is escaped if it is a string.
+   */
+  template
+  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void append_key_value(value_type value) noexcept;
+
+  // Support for optional types (std::optional, etc.)
+  template 
+  requires(!require_custom_serialization)
+  simdjson_inline void append(const T &opt);
+
+  template 
+  requires(require_custom_serialization)
+  simdjson_inline void append(T &&val);
+
+  // Support for string-like types
+  template 
+  requires(std::is_convertible::value ||
+  std::is_same::value )
+  simdjson_inline void append(const T &value);
+#endif
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+  // Support for range-based appending (std::ranges::view, etc.)
+  template 
+requires (!std::is_convertible::value && !require_custom_serialization)
+  simdjson_inline void append(const R &range) noexcept;
+#endif
+  /**
+   * Append the std::string_view directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(std::string_view input)  noexcept;
+
+  /**
+   * Append len characters from str.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
+#if SIMDJSON_EXCEPTIONS
+  /**
+   * Creates an std::string from the written JSON buffer.
+   * Throws if memory allocation failed
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string() const noexcept(false);
+
+  /**
+   * Creates an std::string_view from the written JSON buffer.
+   * Throws if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
+#endif
+
+  /**
+   * Returns a view on the written JSON buffer. Returns an error
+   * if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result view() const noexcept;
+
+  /**
+   * Appends the null character to the buffer and returns
+   * a pointer to the beginning of the written JSON buffer.
+   * Returns an error if memory allocation failed.
+   * The result is null-terminated.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result c_str() noexcept;
+
+  /**
+   * Return true if the content is valid UTF-8.
+   */
+  simdjson_inline bool validate_unicode() const noexcept;
+
+  /**
+   * Returns the current size of the written JSON buffer.
+   * If an error occurred, returns 0.
+   */
+  simdjson_inline size_t size() const noexcept;
+
+private:
+  /**
+   * Returns true if we can write at least upcoming_bytes bytes.
+   * The underlying buffer is reallocated if needed. It is designed
+   * to be called before writing to the buffer. It should be fast.
+   */
+  simdjson_inline bool capacity_check(size_t upcoming_bytes);
+
+  /**
+   * Grow the buffer to at least desired_capacity bytes.
+   * If the allocation fails, is_valid is set to false. We expect
+   * that this function would not be repeatedly called.
+   */
+  simdjson_inline void grow_buffer(size_t desired_capacity);
+
+  /**
+   * We use this helper function to make sure that is_valid is kept consistent.
+   */
+  simdjson_inline void set_valid(bool valid) noexcept;
+
+  std::unique_ptr buffer{};
+  size_t position{0};
+  size_t capacity{0};
+  bool is_valid{true};
+};
+
+
+
+}
+}
+
+
+#if !SIMDJSON_STATIC_REFLECTION
+// fallback implementation until we have static reflection
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::haswell::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view s;
+  auto e = b.view().get(s);
+  if(e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::haswell::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view sv;
+  auto e = b.view().get(sv);
+  if(e) { return e; }
+  s.assign(sv.data(), sv.size());
+  return simdjson::SUCCESS;
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
+/* end file simdjson/generic/builder/json_string_builder.h for haswell */
+/* including simdjson/generic/builder/json_builder.h for haswell: #include "simdjson/generic/builder/json_builder.h" */
+/* begin file simdjson/generic/builder/json_builder.h for haswell */
+#ifndef SIMDJSON_GENERIC_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#if SIMDJSON_STATIC_REFLECTION
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+// #include  // for std::define_static_string - header not available yet
+
+namespace simdjson {
+namespace haswell {
+namespace builder {
+
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  auto it = t.begin();
+  auto end = t.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+constexpr void atom(string_builder &b, const T &t) {
+  b.escape_and_append_with_quotes(t);
+}
+
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &m) {
+  if (m.empty()) {
+    b.append_raw("{}");
+    return;
+  }
+  b.append('{');
+  bool first = true;
+  for (const auto& [key, value] : m) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    // Keys must be convertible to string_view per the concept
+    b.escape_and_append_with_quotes(key);
+    b.append(':');
+    atom(b, value);
+  }
+  b.append('}');
+}
+
+
+template::value && !std::is_same_v>::type>
+constexpr void atom(string_builder &b, const number_type t) {
+  b.append(t);
+}
+
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, t.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &opt) {
+  if (opt) {
+    atom(b, opt.value());
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &ptr) {
+  if (ptr) {
+    atom(b, *ptr);
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for enums - serialize as string representation using expand approach from P2996R12
+template 
+  requires(std::is_enum_v && !require_custom_serialization)
+void atom(string_builder &b, const T &e) {
+#if SIMDJSON_STATIC_REFLECTION
+  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
+  template for (constexpr auto enum_val : enumerators) {
+    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
+    if (e == [:enum_val:]) {
+      b.append_raw(enum_str);
+      return;
+    }
+  };
+  // Fallback to integer if enum value not found
+  atom(b, static_cast>(e));
+#else
+  // Fallback: serialize as integer if reflection not available
+  atom(b, static_cast>(e));
+#endif
+}
+
+// Support for appendable containers that don't have operator[] (sets, etc.)
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &container) {
+  if (container.empty()) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  bool first = true;
+  for (const auto& item : container) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    atom(b, item);
+  }
+  b.append(']');
+}
+
+// append functions that delegate to atom functions for primitive types
+template 
+  requires(std::is_arithmetic_v && !std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+// works for struct
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, z.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// works for container that have begin() and end() iterators
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  auto it = z.begin();
+  auto end = z.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires (require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  b.append(z);
+}
+
+
+template 
+simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+
+template 
+string_builder& operator<<(string_builder& b, const Z& z) {
+  append(b, z);
+  return b;
+}
+
+// extract_from: Serialize only specific fields from a struct to JSON
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+void extract_from(string_builder &b, const T &obj) {
+  // Helper to check if a field name matches any of the requested fields
+  auto should_extract = [](std::string_view field_name) constexpr -> bool {
+    return ((FieldNames.view() == field_name) || ...);
+  };
+
+  b.append('{');
+  bool first = true;
+
+  // Iterate through all members of T using reflection
+  template for (constexpr auto mem : std::define_static_array(
+      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+
+    if constexpr (std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+
+      // Only serialize this field if it's in our list of requested fields
+      if constexpr (should_extract(key)) {
+        if (!first) {
+          b.append(',');
+        }
+        first = false;
+
+        // Serialize the key
+        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
+        b.append_raw(quoted_key);
+        b.append(':');
+
+        // Serialize the value
+        atom(b, obj.[:mem:]);
+      }
+    }
+  };
+
+  b.append('}');
+}
+
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace builder
+} // namespace haswell
+// Alias the function template to 'to' in the global namespace
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  haswell::builder::string_builder b(initial_capacity);
+  haswell::builder::append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  haswell::builder::string_builder b(initial_capacity);
+  haswell::builder::append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+// Global namespace function for extract_from
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  haswell::builder::string_builder b(initial_capacity);
+  haswell::builder::extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif
+/* end file simdjson/generic/builder/json_builder.h for haswell */
+/* including simdjson/generic/builder/fractured_json_builder.h for haswell: #include "simdjson/generic/builder/fractured_json_builder.h" */
+/* begin file simdjson/generic/builder/fractured_json_builder.h for haswell */
+#ifndef SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+#define SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/dom/fractured_json.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_STATIC_REFLECTION
+
+namespace simdjson {
+namespace haswell {
+namespace builder {
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ *
+ * FracturedJson produces human-readable yet compact JSON output by intelligently
+ * choosing between different layout strategies (inline, compact multiline, table,
+ * expanded) based on content complexity, length, and structure similarity.
+ *
+ * This function combines the builder's serialization with FracturedJson formatting:
+ * 1. Serializes the object to minified JSON using reflection
+ * 2. Parses and reformats using FracturedJson
+ *
+ * Example:
+ *   struct User { int id; std::string name; bool active; };
+ *   User user{1, "Alice", true};
+ *   auto result = to_fractured_json_string(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\", \"active\": true }"
+ *
+ * @param obj The object to serialize (must be a reflectable type)
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string, or an error
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Serialize to minified JSON
+  std::string formatted;
+  auto error = to_json_string(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ *
+ * Example:
+ *   struct User { int id; std::string name; std::string email; bool active; };
+ *   User user{1, "Alice", "alice@example.com", true};
+ *   auto result = extract_fractured_json<"id", "name">(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\" }"
+ *
+ * @param obj The object to serialize
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string containing only the specified fields
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Extract fields to minified JSON
+  std::string formatted;
+  auto error = extract_from(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+} // namespace builder
+} // namespace haswell
+
+// Global namespace convenience functions
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ * Global namespace version for convenience.
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return haswell::builder::to_fractured_json_string(obj, opts, initial_capacity);
+}
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ * Global namespace version for convenience.
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return haswell::builder::extract_fractured_json(obj, opts, initial_capacity);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif // SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+/* end file simdjson/generic/builder/fractured_json_builder.h for haswell */
+
+
+
+// JSON builder inline definitions
+/* including simdjson/generic/builder/json_string_builder-inl.h for haswell: #include "simdjson/generic/builder/json_string_builder-inl.h" */
+/* begin file simdjson/generic/builder/json_string_builder-inl.h for haswell */
+#include 
+#include 
+#include 
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/*
+ * Empirically, we have found that an inlined optimization is important for
+ * performance. The following macros are not ideal. We should find a better
+ * way to inline the code.
+ */
+
+#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
+    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
+     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
+#endif
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
+#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+
+namespace simdjson {
+namespace haswell {
+namespace builder {
+
+static SIMDJSON_CONSTEXPR_LAMBDA std::array
+    json_quotable_character = {
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+/**
+
+A possible SWAR implementation of has_json_escapable_byte. It is not used
+because it is slower than the current implementation. It is kept here for
+reference (to show that we tried it).
+
+inline bool has_json_escapable_byte(uint64_t x) {
+  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
+  uint64_t xor2 = x ^ 0x0202020202020202ULL;
+  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
+  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
+  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
+  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
+}
+
+**/
+
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
+simple_needs_escaping(std::string_view v) {
+  for (char c : v) {
+    // a table lookup is faster than a series of comparisons
+    if (json_quotable_character[static_cast(c)]) {
+      return true;
+    }
+  }
+  return false;
+}
+
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  uint8x16_t running = vdupq_n_u8(0);
+  uint8x16_t v34 = vdupq_n_u8(34);
+  uint8x16_t v92 = vdupq_n_u8(92);
+
+  for (; i + 15 < view.size(); i += 16) {
+    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  if (i < view.size()) {
+    uint8x16_t word =
+        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __m128i running = _mm_setzero_si128();
+  for (; i + 15 < view.size(); i += 16) {
+
+    __m128i word =
+        _mm_loadu_si128(reinterpret_cast(view.data() + i));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  if (i < view.size()) {
+    __m128i word = _mm_loadu_si128(
+        reinterpret_cast(view.data() + view.length() - 16));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  return _mm_movemask_epi8(running) != 0;
+}
+#else
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  return simple_needs_escaping(view);
+}
+#endif
+
+// Scalar fallback for finding next quotable character
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character_scalar(const std::string_view view,
+                                         size_t location) noexcept {
+  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
+    if (json_quotable_character[static_cast(*pos)]) {
+      return pos - view.begin();
+    }
+  }
+  return size_t(view.size());
+}
+
+// SIMD-accelerated position finding that directly locates the first quotable
+// character, combining detection and position extraction in a single pass to
+// minimize redundant work.
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  uint8x16_t v34 = vdupq_n_u8(34);  // '"'
+  uint8x16_t v92 = vdupq_n_u8(92);  // '\\'
+  uint8x16_t v32 = vdupq_n_u8(32);  // control char threshold
+
+  while (remaining >= 16) {
+    uint8x16_t word = vld1q_u8(ptr);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    uint8x16_t needs_escape = vceqq_u8(word, v34);
+    needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
+    needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
+
+    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
+      // Found quotable character - extract exact byte position using ctz
+      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
+      uint64_t lo = vgetq_lane_u64(as64, 0);
+      uint64_t hi = vgetq_lane_u64(as64, 1);
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      if (lo != 0) {
+        _BitScanForward64(&trailing_zero, lo);
+        return offset + trailing_zero / 8;
+      } else {
+        _BitScanForward64(&trailing_zero, hi);
+        return offset + 8 + trailing_zero / 8;
+      }
+#else
+      if (lo != 0) {
+        return offset + __builtin_ctzll(lo) / 8;
+      } else {
+        return offset + 8 + __builtin_ctzll(hi) / 8;
+      }
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants
+  __m128i v34 = _mm_set1_epi8(34);  // '"'
+  __m128i v92 = _mm_set1_epi8(92);  // '\\'
+  __m128i v31 = _mm_set1_epi8(31);  // for control char detection
+
+  while (remaining >= 16) {
+    __m128i word = _mm_loadu_si128(reinterpret_cast(ptr));
+
+    // Check for quotable characters
+    __m128i needs_escape = _mm_cmpeq_epi8(word, v34);
+    needs_escape = _mm_or_si128(needs_escape, _mm_cmpeq_epi8(word, v92));
+    needs_escape = _mm_or_si128(
+        needs_escape,
+        _mm_cmpeq_epi8(_mm_subs_epu8(word, v31), _mm_setzero_si128()));
+
+    int mask = _mm_movemask_epi8(needs_escape);
+    if (mask != 0) {
+      // Found quotable character - use trailing zero count to find position
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      _BitScanForward(&trailing_zero, mask);
+      return offset + trailing_zero;
+#else
+      return offset + __builtin_ctz(mask);
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#else
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  return find_next_json_quotable_character_scalar(view, location);
+}
+#endif
+
+SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
+    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
+    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
+    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
+    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
+    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
+
+// All Unicode characters may be placed within the quotation marks, except for
+// the characters that MUST be escaped: quotation mark, reverse solidus, and the
+// control characters (U+0000 through U+001F). There are two-character sequence
+// escape representations of some popular characters:
+// \", \\, \b, \f, \n, \r, \t.
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline void escape_json_char(char c, char *&out) {
+  if (c == '"') {
+    memcpy(out, "\\\"", 2);
+    out += 2;
+  } else if (c == '\\') {
+    memcpy(out, "\\\\", 2);
+    out += 2;
+  } else {
+    std::string_view v = control_chars[uint8_t(c)];
+    memcpy(out, v.data(), v.size());
+    out += v.size();
+  }
+}
+
+// Writes the escaped version of input to out, returning the number of bytes
+// written. Uses SIMD position finding to locate quotable characters efficiently.
+inline size_t write_string_escaped(const std::string_view input, char *out) {
+  size_t mysize = input.size();
+
+  // Use SIMD position finder directly - it returns mysize if no escape needed
+  size_t location = find_next_json_quotable_character(input, 0);
+  if (location == mysize) {
+    // Fast path: no escaping needed
+    memcpy(out, input.data(), input.size());
+    return input.size();
+  }
+
+  const char *const initout = out;
+  memcpy(out, input.data(), location);
+  out += location;
+  escape_json_char(input[location], out);
+  location += 1;
+  while (location < mysize) {
+    size_t newlocation = find_next_json_quotable_character(input, location);
+    memcpy(out, input.data() + location, newlocation - location);
+    out += newlocation - location;
+    location = newlocation;
+    if (location == mysize) {
+      break;
+    }
+    escape_json_char(input[location], out);
+    location += 1;
+  }
+  return out - initout;
+}
+
+simdjson_inline string_builder::string_builder(size_t initial_capacity)
+    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
+      capacity(buffer.get() != nullptr ? initial_capacity : 0),
+      is_valid(buffer.get() != nullptr) {}
+
+simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
+  // We use the convention that when is_valid is false, then the capacity and
+  // the position are 0.
+  // Most of the time, this function will return true.
+  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
+    return true;
+  }
+  // check for overflow, most of the time there is no overflow
+  if (simdjson_unlikely(position + upcoming_bytes < position)) {
+    return false;
+  }
+  // We will rarely get here.
+  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
+  // If the buffer allocation failed, we set is_valid to false.
+  return is_valid;
+}
+
+simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
+  if (!is_valid) {
+    return;
+  }
+  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
+  if (new_buffer.get() == nullptr) {
+    set_valid(false);
+    return;
+  }
+  std::memcpy(new_buffer.get(), buffer.get(), position);
+  buffer.swap(new_buffer);
+  capacity = desired_capacity;
+}
+
+simdjson_inline void string_builder::set_valid(bool valid) noexcept {
+  if (!valid) {
+    is_valid = false;
+    capacity = 0;
+    position = 0;
+    buffer.reset();
+  } else {
+    is_valid = true;
+  }
+}
+
+simdjson_inline size_t string_builder::size() const noexcept {
+  return position;
+}
+
+simdjson_inline void string_builder::append(char c) noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = c;
+  }
+}
+
+simdjson_inline void string_builder::append_null() noexcept {
+  constexpr char null_literal[] = "null";
+  constexpr size_t null_len = sizeof(null_literal) - 1;
+  if (capacity_check(null_len)) {
+    std::memcpy(buffer.get() + position, null_literal, null_len);
+    position += null_len;
+  }
+}
+
+simdjson_inline void string_builder::clear() noexcept {
+  position = 0;
+  // if it was invalid, we should try to repair it
+  if (!is_valid) {
+    capacity = 0;
+    buffer.reset();
+    is_valid = true;
+  }
+}
+
+namespace internal {
+
+template ::value>::type>
+simdjson_really_inline int int_log2(number_type x) {
+  return 63 - leading_zeroes(uint64_t(x) | 1);
+}
+
+simdjson_really_inline int fast_digit_count_32(uint32_t x) {
+  static uint64_t table[] = {
+      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
+      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
+      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
+      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
+      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
+      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
+      42949672960, 42949672960};
+  return uint32_t((x + table[int_log2(x)]) >> 32);
+}
+
+simdjson_really_inline int fast_digit_count_64(uint64_t x) {
+  static uint64_t table[] = {9,
+                             99,
+                             999,
+                             9999,
+                             99999,
+                             999999,
+                             9999999,
+                             99999999,
+                             999999999,
+                             9999999999,
+                             99999999999,
+                             999999999999,
+                             9999999999999,
+                             99999999999999,
+                             999999999999999ULL,
+                             9999999999999999ULL,
+                             99999999999999999ULL,
+                             999999999999999999ULL,
+                             9999999999999999999ULL};
+  int y = (19 * int_log2(x) >> 6);
+  y += x > table[y];
+  return y + 1;
+}
+
+template ::value>::type>
+simdjson_really_inline size_t digit_count(number_type v) noexcept {
+  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
+                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
+                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
+  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
+    return fast_digit_count_32(static_cast(v));
+  }
+  else {
+    return fast_digit_count_64(static_cast(v));
+  }
+}
+static const char decimal_table[200] = {
+    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
+    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
+    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
+    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
+    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
+    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
+    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
+    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
+    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
+    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
+    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
+    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
+    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
+    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
+    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
+    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
+    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
+};
+} // namespace internal
+
+template 
+simdjson_inline void string_builder::append(number_type v) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_integral::value ||
+                    std::is_floating_point::value,
+                "Unsupported number type");
+  // If C++17 is available, we can 'if constexpr' here.
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    if (v) {
+      constexpr char true_literal[] = "true";
+      constexpr size_t true_len = sizeof(true_literal) - 1;
+      if (capacity_check(true_len)) {
+        std::memcpy(buffer.get() + position, true_literal, true_len);
+        position += true_len;
+      }
+    } else {
+      constexpr char false_literal[] = "false";
+      constexpr size_t false_len = sizeof(false_literal) - 1;
+      if (capacity_check(false_len)) {
+        std::memcpy(buffer.get() + position, false_literal, false_len);
+        position += false_len;
+      }
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
+    // Process 4 digits at a time instead of 2, reducing store operations
+    // and divisions by approximately half for large numbers.
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      unsigned_type pv = static_cast(v);
+      size_t dc = internal::digit_count(pv);
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;  // High 2 digits of remainder
+        unsigned_type r_lo = r % 100;  // Low 2 digits of remainder
+        // Write low 2 digits first (rightmost), then high 2 digits
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits with original 2-digit loop
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
+    // Same 4-digit batching as unsigned path for signed integers
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      bool negative = v < 0;
+      unsigned_type pv = static_cast(v);
+      if (negative) {
+        pv = 0 - pv; // the 0 is for Microsoft
+      }
+      size_t dc = internal::digit_count(pv);
+      // by always writing the minus sign, we avoid the branch.
+      buffer.get()[position] = '-';
+      position += negative ? 1 : 0;
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;
+        unsigned_type r_lo = r % 100;
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
+    constexpr size_t max_number_size = 24;
+    if (capacity_check(max_number_size)) {
+      // We could specialize for float.
+      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
+                                               double(v));
+      position = end - buffer.get();
+    }
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(6 * input.size())) {
+    position += write_string_escaped(input, buffer.get() + position);
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * input.size())) {
+    buffer.get()[position++] = '"';
+    position += write_string_escaped(input, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(char input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * 1)) {
+    buffer.get()[position++] = '"';
+    std::string_view cinput(&input, 1);
+    position += write_string_escaped(cinput, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(const char *input) noexcept {
+  std::string_view cinput(input);
+  escape_and_append_with_quotes(cinput);
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
+  escape_and_append_with_quotes(constevalutil::string_constant::value);
+}
+#endif
+
+simdjson_inline void string_builder::append_raw(const char *c) noexcept {
+  size_t len = std::strlen(c);
+  append_raw(c, len);
+}
+
+simdjson_inline void
+string_builder::append_raw(std::string_view input) noexcept {
+  if (capacity_check(input.size())) {
+    std::memcpy(buffer.get() + position, input.data(), input.size());
+    position += input.size();
+  }
+}
+
+simdjson_inline void string_builder::append_raw(const char *str,
+                                                size_t len) noexcept {
+  if (capacity_check(len)) {
+    std::memcpy(buffer.get() + position, str, len);
+    position += len;
+  }
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+simdjson_inline void string_builder::append(const T &opt) {
+  if (opt) {
+    append(*opt);
+  } else {
+    append_null();
+  }
+}
+
+template 
+  requires(require_custom_serialization)
+simdjson_inline void string_builder::append(T &&val) {
+  serialize(*this, std::forward(val));
+}
+
+template 
+  requires(std::is_convertible::value ||
+           std::is_same::value)
+simdjson_inline void string_builder::append(const T &value) {
+  escape_and_append_with_quotes(value);
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+// Support for range-based appending (std::ranges::view, etc.)
+template 
+  requires(!std::is_convertible::value && !require_custom_serialization)
+simdjson_inline void string_builder::append(const R &range) noexcept {
+  auto it = std::ranges::begin(range);
+  auto end = std::ranges::end(range);
+  if constexpr (concepts::is_pair>) {
+    start_object();
+
+    if (it == end) {
+      end_object();
+      return; // Handle empty range
+    }
+    // Append first item without leading comma
+    append_key_value(it->first, it->second);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append_key_value(it->first, it->second);
+    }
+    end_object();
+  } else {
+    start_array();
+    if (it == end) {
+      end_array();
+      return; // Handle empty range
+    }
+
+    // Append first item without leading comma
+    append(*it);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append(*it);
+    }
+    end_array();
+  }
+}
+
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+simdjson_inline string_builder::operator std::string() const noexcept(false) {
+  return std::string(operator std::string_view());
+}
+
+simdjson_inline string_builder::operator std::string_view() const
+    noexcept(false) simdjson_lifetime_bound {
+  return view();
+}
+#endif
+
+simdjson_inline simdjson_result
+string_builder::view() const noexcept {
+  if (!is_valid) {
+    return simdjson::OUT_OF_CAPACITY;
+  }
+  return std::string_view(buffer.get(), position);
+}
+
+simdjson_inline simdjson_result string_builder::c_str() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position] = '\0';
+    return buffer.get();
+  }
+  return simdjson::OUT_OF_CAPACITY;
+}
+
+simdjson_inline bool string_builder::validate_unicode() const noexcept {
+  return simdjson::validate_utf8(buffer.get(), position);
+}
+
+simdjson_inline void string_builder::start_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '{';
+  }
+}
+
+simdjson_inline void string_builder::end_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '}';
+  }
+}
+
+simdjson_inline void string_builder::start_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '[';
+  }
+}
+
+simdjson_inline void string_builder::end_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ']';
+  }
+}
+
+simdjson_inline void string_builder::append_comma() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ',';
+  }
+}
+
+simdjson_inline void string_builder::append_colon() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ':';
+  }
+}
+
+template 
+simdjson_inline void
+string_builder::append_key_value(key_type key, value_type value) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_convertible::value,
+                "Unsupported key type");
+  escape_and_append_with_quotes(key);
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void
+string_builder::append_key_value(value_type value) noexcept {
+  escape_and_append_with_quotes();
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+#endif
+
+} // namespace builder
+} // namespace haswell
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+/* end file simdjson/generic/builder/json_string_builder-inl.h for haswell */
+
+/* end file simdjson/generic/builder/amalgamated.h for haswell */
+/* including simdjson/haswell/end.h: #include "simdjson/haswell/end.h" */
+/* begin file simdjson/haswell/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if !SIMDJSON_CAN_ALWAYS_RUN_HASWELL
+SIMDJSON_UNTARGET_REGION
+#endif
+
+/* undefining SIMDJSON_IMPLEMENTATION from "haswell" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/haswell/end.h */
+
+#endif // SIMDJSON_HASWELL_BUILDER_H
+/* end file simdjson/haswell/builder.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(icelake)
+/* including simdjson/icelake/builder.h: #include "simdjson/icelake/builder.h" */
+/* begin file simdjson/icelake/builder.h */
+#ifndef SIMDJSON_ICELAKE_BUILDER_H
+#define SIMDJSON_ICELAKE_BUILDER_H
+
+/* including simdjson/icelake/begin.h: #include "simdjson/icelake/begin.h" */
+/* begin file simdjson/icelake/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "icelake" */
+#define SIMDJSON_IMPLEMENTATION icelake
+/* including simdjson/icelake/base.h: #include "simdjson/icelake/base.h" */
+/* begin file simdjson/icelake/base.h */
+#ifndef SIMDJSON_ICELAKE_BASE_H
+#define SIMDJSON_ICELAKE_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_ICELAKE
+namespace simdjson {
+/**
+ * Implementation for Icelake (Intel AVX512).
+ */
+namespace icelake {
+
+class implementation;
+
+} // namespace icelake
+} // namespace simdjson
+
+#endif // SIMDJSON_ICELAKE_BASE_H
+/* end file simdjson/icelake/base.h */
+/* including simdjson/icelake/intrinsics.h: #include "simdjson/icelake/intrinsics.h" */
+/* begin file simdjson/icelake/intrinsics.h */
+#ifndef SIMDJSON_ICELAKE_INTRINSICS_H
+#define SIMDJSON_ICELAKE_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_VISUAL_STUDIO
+// under clang within visual studio, this will include 
+#include   // visual studio or clang
+#else
+#include  // elsewhere
+#endif // SIMDJSON_VISUAL_STUDIO
+
+#if SIMDJSON_CLANG_VISUAL_STUDIO
+/**
+ * You are not supposed, normally, to include these
+ * headers directly. Instead you should either include intrin.h
+ * or x86intrin.h. However, when compiling with clang
+ * under Windows (i.e., when _MSC_VER is set), these headers
+ * only get included *if* the corresponding features are detected
+ * from macros:
+ * e.g., if __AVX2__ is set... in turn,  we normally set these
+ * macros by compiling against the corresponding architecture
+ * (e.g., arch:AVX2, -mavx2, etc.) which compiles the whole
+ * software with these advanced instructions. In simdjson, we
+ * want to compile the whole program for a generic target,
+ * and only target our specific kernels. As a workaround,
+ * we directly include the needed headers. These headers would
+ * normally guard against such usage, but we carefully included
+ *   (or ) before, so the headers
+ * are fooled.
+ */
+#include    // for _blsr_u64
+#include  // for  __lzcnt64
+#include    // for most things (AVX2, AVX512, _popcnt64)
+#include 
+#include 
+#include 
+#include 
+#include    // for  _mm_clmulepi64_si128
+// Important: we need the AVX-512 headers:
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+// unfortunately, we may not get _blsr_u64, but, thankfully, clang
+// has it as a macro.
+#ifndef _blsr_u64
+// we roll our own
+#define _blsr_u64(n) ((n - 1) & n)
+#endif //  _blsr_u64
+#endif // SIMDJSON_CLANG_VISUAL_STUDIO
+
+static_assert(sizeof(__m512i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for icelake");
+
+#endif // SIMDJSON_ICELAKE_INTRINSICS_H
+/* end file simdjson/icelake/intrinsics.h */
+
+#if !SIMDJSON_CAN_ALWAYS_RUN_ICELAKE
+SIMDJSON_TARGET_REGION("avx512f,avx512dq,avx512cd,avx512bw,avx512vbmi,avx512vbmi2,avx512vl,avx2,bmi,pclmul,lzcnt,popcnt")
+#endif
+
+/* including simdjson/icelake/bitmanipulation.h: #include "simdjson/icelake/bitmanipulation.h" */
+/* begin file simdjson/icelake/bitmanipulation.h */
+#ifndef SIMDJSON_ICELAKE_BITMANIPULATION_H
+#define SIMDJSON_ICELAKE_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace icelake {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  return (int)_tzcnt_u64(input_num);
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO
+  ////////
+  // You might expect the next line to be equivalent to
+  // return (int)_tzcnt_u64(input_num);
+  // but the generated code differs and might be less efficient?
+  ////////
+  return __builtin_ctzll(input_num);
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return _blsr_u64(input_num);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+  return int(_lzcnt_u64(input_num));
+}
+
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+simdjson_inline unsigned __int64 count_ones(uint64_t input_num) {
+  // note: we do not support legacy 32-bit Windows
+  return __popcnt64(input_num);// Visual Studio wants two underscores
+}
+#else
+simdjson_inline long long int count_ones(uint64_t input_num) {
+  return _popcnt64(input_num);
+}
+#endif
+
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
+                                uint64_t *result) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  return _addcarry_u64(0, value1, value2,
+                       reinterpret_cast(result));
+#else
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+#endif
+}
+
+} // unnamed namespace
+} // namespace icelake
+} // namespace simdjson
+
+#endif // SIMDJSON_ICELAKE_BITMANIPULATION_H
+/* end file simdjson/icelake/bitmanipulation.h */
+/* including simdjson/icelake/bitmask.h: #include "simdjson/icelake/bitmask.h" */
+/* begin file simdjson/icelake/bitmask.h */
+#ifndef SIMDJSON_ICELAKE_BITMASK_H
+#define SIMDJSON_ICELAKE_BITMASK_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace icelake {
+namespace {
+
+//
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
+//
+// For example, prefix_xor(00100100) == 00011100
+//
+simdjson_inline uint64_t prefix_xor(const uint64_t bitmask) {
+  // There should be no such thing with a processor supporting avx2
+  // but not clmul.
+  __m128i all_ones = _mm_set1_epi8('\xFF');
+  __m128i result = _mm_clmulepi64_si128(_mm_set_epi64x(0ULL, bitmask), all_ones, 0);
+  return _mm_cvtsi128_si64(result);
+}
+
+} // unnamed namespace
+} // namespace icelake
+} // namespace simdjson
+
+#endif // SIMDJSON_ICELAKE_BITMASK_H
+/* end file simdjson/icelake/bitmask.h */
+/* including simdjson/icelake/simd.h: #include "simdjson/icelake/simd.h" */
+/* begin file simdjson/icelake/simd.h */
+#ifndef SIMDJSON_ICELAKE_SIMD_H
+#define SIMDJSON_ICELAKE_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if defined(__GNUC__) && !defined(__clang__)
+#if __GNUC__ == 8
+#define SIMDJSON_GCC8 1
+#endif //  __GNUC__ == 8
+#endif // defined(__GNUC__) && !defined(__clang__)
+
+#if SIMDJSON_GCC8
+/**
+ * GCC 8 fails to provide _mm512_set_epi8. We roll our own.
+ */
+inline __m512i _mm512_set_epi8(uint8_t a0, uint8_t a1, uint8_t a2, uint8_t a3, uint8_t a4, uint8_t a5, uint8_t a6, uint8_t a7, uint8_t a8, uint8_t a9, uint8_t a10, uint8_t a11, uint8_t a12, uint8_t a13, uint8_t a14, uint8_t a15, uint8_t a16, uint8_t a17, uint8_t a18, uint8_t a19, uint8_t a20, uint8_t a21, uint8_t a22, uint8_t a23, uint8_t a24, uint8_t a25, uint8_t a26, uint8_t a27, uint8_t a28, uint8_t a29, uint8_t a30, uint8_t a31, uint8_t a32, uint8_t a33, uint8_t a34, uint8_t a35, uint8_t a36, uint8_t a37, uint8_t a38, uint8_t a39, uint8_t a40, uint8_t a41, uint8_t a42, uint8_t a43, uint8_t a44, uint8_t a45, uint8_t a46, uint8_t a47, uint8_t a48, uint8_t a49, uint8_t a50, uint8_t a51, uint8_t a52, uint8_t a53, uint8_t a54, uint8_t a55, uint8_t a56, uint8_t a57, uint8_t a58, uint8_t a59, uint8_t a60, uint8_t a61, uint8_t a62, uint8_t a63) {
+  return _mm512_set_epi64(uint64_t(a7) + (uint64_t(a6) << 8) + (uint64_t(a5) << 16) + (uint64_t(a4) << 24) + (uint64_t(a3) << 32) + (uint64_t(a2) << 40) + (uint64_t(a1) << 48) + (uint64_t(a0) << 56),
+                          uint64_t(a15) + (uint64_t(a14) << 8) + (uint64_t(a13) << 16) + (uint64_t(a12) << 24) + (uint64_t(a11) << 32) + (uint64_t(a10) << 40) + (uint64_t(a9) << 48) + (uint64_t(a8) << 56),
+                          uint64_t(a23) + (uint64_t(a22) << 8) + (uint64_t(a21) << 16) + (uint64_t(a20) << 24) + (uint64_t(a19) << 32) + (uint64_t(a18) << 40) + (uint64_t(a17) << 48) + (uint64_t(a16) << 56),
+                          uint64_t(a31) + (uint64_t(a30) << 8) + (uint64_t(a29) << 16) + (uint64_t(a28) << 24) + (uint64_t(a27) << 32) + (uint64_t(a26) << 40) + (uint64_t(a25) << 48) + (uint64_t(a24) << 56),
+                          uint64_t(a39) + (uint64_t(a38) << 8) + (uint64_t(a37) << 16) + (uint64_t(a36) << 24) + (uint64_t(a35) << 32) + (uint64_t(a34) << 40) + (uint64_t(a33) << 48) + (uint64_t(a32) << 56),
+                          uint64_t(a47) + (uint64_t(a46) << 8) + (uint64_t(a45) << 16) + (uint64_t(a44) << 24) + (uint64_t(a43) << 32) + (uint64_t(a42) << 40) + (uint64_t(a41) << 48) + (uint64_t(a40) << 56),
+                          uint64_t(a55) + (uint64_t(a54) << 8) + (uint64_t(a53) << 16) + (uint64_t(a52) << 24) + (uint64_t(a51) << 32) + (uint64_t(a50) << 40) + (uint64_t(a49) << 48) + (uint64_t(a48) << 56),
+                          uint64_t(a63) + (uint64_t(a62) << 8) + (uint64_t(a61) << 16) + (uint64_t(a60) << 24) + (uint64_t(a59) << 32) + (uint64_t(a58) << 40) + (uint64_t(a57) << 48) + (uint64_t(a56) << 56));
+}
+#endif // SIMDJSON_GCC8
+
+
+
+namespace simdjson {
+namespace icelake {
+namespace {
+namespace simd {
+
+  // Forward-declared so they can be used by splat and friends.
+  template
+  struct base {
+    __m512i value;
+
+    // Zero constructor
+    simdjson_inline base() : value{__m512i()} {}
+
+    // Conversion from SIMD register
+    simdjson_inline base(const __m512i _value) : value(_value) {}
+
+    // Conversion to SIMD register
+    simdjson_inline operator const __m512i&() const { return this->value; }
+    simdjson_inline operator __m512i&() { return this->value; }
+
+    // Bit operations
+    simdjson_inline Child operator|(const Child other) const { return _mm512_or_si512(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return _mm512_and_si512(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return _mm512_xor_si512(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return _mm512_andnot_si512(other, *this); }
+    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
+
+  // Forward-declared so they can be used by splat and friends.
+  template
+  struct simd8;
+
+  template>
+  struct base8: base> {
+    typedef uint32_t bitmask_t;
+    typedef uint64_t bitmask2_t;
+
+    simdjson_inline base8() : base>() {}
+    simdjson_inline base8(const __m512i _value) : base>(_value) {}
+
+    friend simdjson_really_inline uint64_t operator==(const simd8 lhs, const simd8 rhs) {
+      return _mm512_cmpeq_epi8_mask(lhs, rhs);
+    }
+    static const int SIZE = sizeof(base::value);
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+     // workaround for compilers unable to figure out that 16 - N is a constant (GCC 8)
+      constexpr int shift = 16 - N;
+      return _mm512_alignr_epi8(*this, _mm512_permutex2var_epi64(prev_chunk, _mm512_set_epi64(13, 12, 11, 10, 9, 8, 7, 6), *this), shift);
+    }
+  };
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8: base8 {
+    static simdjson_inline simd8 splat(bool _value) { return _mm512_set1_epi8(uint8_t(-(!!_value))); }
+
+    simdjson_inline simd8() : base8() {}
+    simdjson_inline simd8(const __m512i _value) : base8(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
+    simdjson_inline bool any() const { return !!_mm512_test_epi8_mask (*this, *this); }
+    simdjson_inline simd8 operator~() const { return *this ^ true; }
+  };
+
+  template
+  struct base8_numeric: base8 {
+    static simdjson_inline simd8 splat(T _value) { return _mm512_set1_epi8(_value); }
+    static simdjson_inline simd8 zero() { return _mm512_setzero_si512(); }
+    static simdjson_inline simd8 load(const T values[64]) {
+      return _mm512_loadu_si512(reinterpret_cast(values));
+    }
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    static simdjson_inline simd8 repeat_16(
+      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
+      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    simdjson_inline base8_numeric() : base8() {}
+    simdjson_inline base8_numeric(const __m512i _value) : base8(_value) {}
+
+    // Store to array
+    simdjson_inline void store(T dst[64]) const { return _mm512_storeu_si512(reinterpret_cast<__m512i *>(dst), *this); }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return _mm512_add_epi8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return _mm512_sub_epi8(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
+
+    // Override to distinguish from bool version
+    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return _mm512_shuffle_epi8(lookup_table, *this);
+    }
+
+    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
+    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
+    // Only the first 64 - count_ones(mask) bytes of the result are significant but 64 bytes
+    // get written.
+    // Design consideration: it seems like a function with the
+    // signature simd8 compress(uint32_t mask) would be
+    // sensible, but the AVX ISA makes this kind of approach difficult.
+    template
+    simdjson_inline void compress(uint64_t mask, L * output) const {
+      // we deliberately avoid _mm512_mask_compressstoreu_epi8 for portability
+      // (AMD Zen4 has terrible performance with it, it is effectively broken)
+      // _mm512_mask_compressstoreu_epi8 (output,~mask,*this);
+      __m512i compressed = _mm512_maskz_compress_epi8(~mask, *this);
+      _mm512_storeu_si512(output, compressed); // could use a mask
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 : base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m512i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const int8_t values[64]) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15,
+      int8_t v16, int8_t v17, int8_t v18, int8_t v19, int8_t v20, int8_t v21, int8_t v22, int8_t v23,
+      int8_t v24, int8_t v25, int8_t v26, int8_t v27, int8_t v28, int8_t v29, int8_t v30, int8_t v31,
+      int8_t v32, int8_t v33, int8_t v34, int8_t v35, int8_t v36, int8_t v37, int8_t v38, int8_t v39,
+      int8_t v40, int8_t v41, int8_t v42, int8_t v43, int8_t v44, int8_t v45, int8_t v46, int8_t v47,
+      int8_t v48, int8_t v49, int8_t v50, int8_t v51, int8_t v52, int8_t v53, int8_t v54, int8_t v55,
+      int8_t v56, int8_t v57, int8_t v58, int8_t v59, int8_t v60, int8_t v61, int8_t v62, int8_t v63
+    ) : simd8(_mm512_set_epi8(
+      v63, v62, v61, v60, v59, v58, v57, v56,
+      v55, v54, v53, v52, v51, v50, v49, v48,
+      v47, v46, v45, v44, v43, v42, v41, v40,
+      v39, v38, v37, v36, v35, v34, v33, v32,
+      v31, v30, v29, v28, v27, v26, v25, v24,
+      v23, v22, v21, v20, v19, v18, v17, v16,
+      v15, v14, v13, v12, v11, v10,  v9,  v8,
+       v7,  v6,  v5,  v4,  v3,  v2,  v1,  v0
+    )) {}
+
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm512_max_epi8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm512_min_epi8(*this, other); }
+
+    simdjson_inline simd8 operator>(const simd8 other) const { return _mm512_maskz_abs_epi8(_mm512_cmpgt_epi8_mask(*this, other),_mm512_set1_epi8(uint8_t(0x80))); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return _mm512_maskz_abs_epi8(_mm512_cmpgt_epi8_mask(other, *this),_mm512_set1_epi8(uint8_t(0x80))); }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8: base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m512i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const uint8_t values[64]) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15,
+      uint8_t v16, uint8_t v17, uint8_t v18, uint8_t v19, uint8_t v20, uint8_t v21, uint8_t v22, uint8_t v23,
+      uint8_t v24, uint8_t v25, uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30, uint8_t v31,
+      uint8_t v32, uint8_t v33, uint8_t v34, uint8_t v35, uint8_t v36, uint8_t v37, uint8_t v38, uint8_t v39,
+      uint8_t v40, uint8_t v41, uint8_t v42, uint8_t v43, uint8_t v44, uint8_t v45, uint8_t v46, uint8_t v47,
+      uint8_t v48, uint8_t v49, uint8_t v50, uint8_t v51, uint8_t v52, uint8_t v53, uint8_t v54, uint8_t v55,
+      uint8_t v56, uint8_t v57, uint8_t v58, uint8_t v59, uint8_t v60, uint8_t v61, uint8_t v62, uint8_t v63
+    ) : simd8(_mm512_set_epi8(
+      v63, v62, v61, v60, v59, v58, v57, v56,
+      v55, v54, v53, v52, v51, v50, v49, v48,
+      v47, v46, v45, v44, v43, v42, v41, v40,
+      v39, v38, v37, v36, v35, v34, v33, v32,
+      v31, v30, v29, v28, v27, v26, v25, v24,
+      v23, v22, v21, v20, v19, v18, v17, v16,
+      v15, v14, v13, v12, v11, v10,  v9,  v8,
+       v7,  v6,  v5,  v4,  v3,  v2,  v1,  v0
+    )) {}
+
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm512_adds_epu8(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm512_subs_epu8(*this, other); }
+
+    // Order-specific operations
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm512_max_epu8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm512_min_epu8(other, *this); }
+    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
+    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
+    simdjson_inline uint64_t operator<=(const simd8 other) const { return other.max_val(*this) == other; }
+    simdjson_inline uint64_t operator>=(const simd8 other) const { return other.min_val(*this) == other; }
+    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return this->lt_bits(other).any_bits_set(); }
+
+    // Bit-specific operations
+    simdjson_inline simd8 bits_not_set() const { return _mm512_mask_blend_epi8(*this == uint8_t(0), _mm512_set1_epi8(0), _mm512_set1_epi8(-1)); }
+    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
+    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
+    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
+
+    simdjson_inline bool is_ascii() const { return _mm512_movepi8_mask(*this) == 0; }
+    simdjson_inline bool bits_not_set_anywhere() const {
+      return !_mm512_test_epi8_mask(*this, *this);
+    }
+    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
+    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return !_mm512_test_epi8_mask(*this, bits); }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
+    template
+    simdjson_inline simd8 shr() const { return simd8(_mm512_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
+    template
+    simdjson_inline simd8 shl() const { return simd8(_mm512_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
+    // Get one of the bits and make a bitmask out of it.
+    // e.g. value.get_bit<7>() gets the high bit
+    template
+    simdjson_inline uint64_t get_bit() const { return _mm512_movepi8_mask(_mm512_slli_epi16(*this, 7-N)); }
+  };
+
+  template
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    static_assert(NUM_CHUNKS == 1, "Icelake kernel should use one register per 64-byte block.");
+    const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1) : chunks{chunk0, chunk1} {}
+    simdjson_inline simd8x64(const simd8 chunk0) : chunks{chunk0} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr)} {}
+
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      this->chunks[0].compress(mask, output);
+      return 64 - count_ones(mask);
+    }
+
+    simdjson_inline void store(T ptr[64]) const {
+      this->chunks[0].store(ptr+sizeof(simd8)*0);
+    }
+
+    simdjson_inline simd8 reduce_or() const {
+      return this->chunks[0];
+    }
+
+    simdjson_inline simd8x64 bit_or(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return simd8x64(
+        this->chunks[0] | mask
+      );
+    }
+
+    simdjson_inline uint64_t eq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return this->chunks[0] == mask;
+    }
+
+    simdjson_inline uint64_t eq(const simd8x64 &other) const {
+      return this->chunks[0] == other.chunks[0];
+    }
+
+    simdjson_inline uint64_t lteq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return this->chunks[0] <= mask;
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+
+} // unnamed namespace
+} // namespace icelake
+} // namespace simdjson
+
+#endif // SIMDJSON_ICELAKE_SIMD_H
+/* end file simdjson/icelake/simd.h */
+/* including simdjson/icelake/stringparsing_defs.h: #include "simdjson/icelake/stringparsing_defs.h" */
+/* begin file simdjson/icelake/stringparsing_defs.h */
+#ifndef SIMDJSON_ICELAKE_STRINGPARSING_DEFS_H
+#define SIMDJSON_ICELAKE_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace icelake {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 64;
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
+  simdjson_inline bool has_backslash() { return ((quote_bits - 1) & bs_bits) != 0; }
+  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
+  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
+
+  uint64_t bs_bits;
+  uint64_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // this can read up to 15 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  // store to dest unconditionally - we can overwrite the bits we don't like later
+  v.store(dst);
+  return {
+      static_cast(v == '\\'), // bs_bits
+      static_cast(v == '"'), // quote_bits
+  };
+}
+
+
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 64;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(uint64_t(escape_bits)); }
+
+  __mmask64 escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  __mmask64 is_quote = _mm512_cmpeq_epi8_mask(v, _mm512_set1_epi8('"'));
+  __mmask64 is_backslash = _mm512_cmpeq_epi8_mask(v, _mm512_set1_epi8('\\'));
+  __mmask64 is_control = _mm512_cmplt_epi8_mask(v, _mm512_set1_epi8(32));
+  return {
+    (is_backslash | is_quote | is_control)
+  };
+}
+
+
+
+
+} // unnamed namespace
+} // namespace icelake
+} // namespace simdjson
+
+#endif // SIMDJSON_ICELAKE_STRINGPARSING_DEFS_H
+/* end file simdjson/icelake/stringparsing_defs.h */
+/* including simdjson/icelake/numberparsing_defs.h: #include "simdjson/icelake/numberparsing_defs.h" */
+/* begin file simdjson/icelake/numberparsing_defs.h */
+#ifndef SIMDJSON_ICELAKE_NUMBERPARSING_DEFS_H
+#define SIMDJSON_ICELAKE_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace icelake {
+namespace numberparsing {
+
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  // this actually computes *16* values so we are being wasteful.
+  const __m128i ascii0 = _mm_set1_epi8('0');
+  const __m128i mul_1_10 =
+      _mm_setr_epi8(10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1);
+  const __m128i mul_1_100 = _mm_setr_epi16(100, 1, 100, 1, 100, 1, 100, 1);
+  const __m128i mul_1_10000 =
+      _mm_setr_epi16(10000, 1, 10000, 1, 10000, 1, 10000, 1);
+  const __m128i input = _mm_sub_epi8(
+      _mm_loadu_si128(reinterpret_cast(chars)), ascii0);
+  const __m128i t1 = _mm_maddubs_epi16(input, mul_1_10);
+  const __m128i t2 = _mm_madd_epi16(t1, mul_1_100);
+  const __m128i t3 = _mm_packus_epi32(t2, t2);
+  const __m128i t4 = _mm_madd_epi16(t3, mul_1_10000);
+  return _mm_cvtsi128_si32(
+      t4); // only captures the sum of the first 8 digits, drop the rest
+}
+
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+#if SIMDJSON_IS_ARM64
+  // ARM64 has native support for 64-bit multiplications, no need to emultate
+  answer.high = __umulh(value1, value2);
+  answer.low = value1 * value2;
+#else
+  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
+#endif // SIMDJSON_IS_ARM64
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+#endif
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace icelake
+} // namespace simdjson
+
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+
+#endif // SIMDJSON_ICELAKE_NUMBERPARSING_DEFS_H
+/* end file simdjson/icelake/numberparsing_defs.h */
+/* end file simdjson/icelake/begin.h */
+/* including simdjson/generic/builder/amalgamated.h for icelake: #include "simdjson/generic/builder/amalgamated.h" */
+/* begin file simdjson/generic/builder/amalgamated.h for icelake */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
+#error simdjson/generic/builder/dependencies.h must be included before simdjson/generic/builder/amalgamated.h!
+#endif
+
+/* including simdjson/generic/builder/json_string_builder.h for icelake: #include "simdjson/generic/builder/json_string_builder.h" */
+/* begin file simdjson/generic/builder/json_string_builder.h for icelake */
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace icelake {
+namespace builder {
+  class string_builder;
+}}
+
+template 
+struct has_custom_serialization : std::false_type {};
+
+inline constexpr struct serialize_tag {
+  template 
+  constexpr void operator()(icelake::builder::string_builder& b, T&& obj) const{
+    return tag_invoke(*this, b, std::forward(obj));
+  }
+
+
+} serialize{};
+template 
+struct has_custom_serialization(), std::declval()))
+>> : std::true_type {};
+
+template 
+constexpr bool require_custom_serialization = has_custom_serialization::value;
+#else
+struct has_custom_serialization : std::false_type {};
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace icelake {
+namespace builder {
+/**
+ * A builder for JSON strings representing documents. This is a low-level
+ * builder that is not meant to be used directly by end-users. Though it
+ * supports atomic types (Booleans, strings), it does not support composed
+ * types (arrays and objects).
+ *
+ * Ultimately, this class can support kernel-specific optimizations. E.g.,
+ * it may make use of SIMD instructions to escape strings faster.
+ */
+class string_builder {
+public:
+  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
+
+  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
+
+  /**
+   * Append number (includes Booleans). Booleans are mapped to the strings
+   * false and true. Numbers are converted to strings abiding by the JSON standard.
+   * Floating-point numbers are converted to the shortest string that 'correctly'
+   * represents the number.
+   */
+  template::value>::type>
+  simdjson_inline void append(number_type v) noexcept;
+
+  /**
+   * Append character c.
+   */
+  simdjson_inline void append(char c)  noexcept;
+
+  /**
+   * Append the string 'null'.
+   */
+  simdjson_inline void append_null()  noexcept;
+
+  /**
+   * Clear the content.
+   */
+  simdjson_inline void clear()  noexcept;
+
+  /**
+   * Append the std::string_view, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
+
+  /**
+   * Append the std::string_view surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void escape_and_append_with_quotes()  noexcept;
+#endif
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
+
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
+
+  /**
+   * Append the C string directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *c)  noexcept;
+
+  /**
+   * Append "{" to the buffer.
+   */
+  simdjson_inline void start_object()  noexcept;
+
+  /**
+   * Append "}" to the buffer.
+   */
+  simdjson_inline void end_object()  noexcept;
+
+  /**
+   * Append "[" to the buffer.
+   */
+  simdjson_inline void start_array()  noexcept;
+
+  /**
+   * Append "]" to the buffer.
+   */
+  simdjson_inline void end_array()  noexcept;
+
+  /**
+   * Append "," to the buffer.
+   */
+  simdjson_inline void append_comma()  noexcept;
+
+  /**
+   * Append ":" to the buffer.
+   */
+  simdjson_inline void append_colon()  noexcept;
+
+  /**
+   * Append a key-value pair to the buffer.
+   * The key is escaped and surrounded by double quotes.
+   * The value is escaped if it is a string.
+   */
+  template
+  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void append_key_value(value_type value) noexcept;
+
+  // Support for optional types (std::optional, etc.)
+  template 
+  requires(!require_custom_serialization)
+  simdjson_inline void append(const T &opt);
+
+  template 
+  requires(require_custom_serialization)
+  simdjson_inline void append(T &&val);
+
+  // Support for string-like types
+  template 
+  requires(std::is_convertible::value ||
+  std::is_same::value )
+  simdjson_inline void append(const T &value);
+#endif
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+  // Support for range-based appending (std::ranges::view, etc.)
+  template 
+requires (!std::is_convertible::value && !require_custom_serialization)
+  simdjson_inline void append(const R &range) noexcept;
+#endif
+  /**
+   * Append the std::string_view directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(std::string_view input)  noexcept;
+
+  /**
+   * Append len characters from str.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
+#if SIMDJSON_EXCEPTIONS
+  /**
+   * Creates an std::string from the written JSON buffer.
+   * Throws if memory allocation failed
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string() const noexcept(false);
+
+  /**
+   * Creates an std::string_view from the written JSON buffer.
+   * Throws if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
+#endif
+
+  /**
+   * Returns a view on the written JSON buffer. Returns an error
+   * if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result view() const noexcept;
+
+  /**
+   * Appends the null character to the buffer and returns
+   * a pointer to the beginning of the written JSON buffer.
+   * Returns an error if memory allocation failed.
+   * The result is null-terminated.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result c_str() noexcept;
+
+  /**
+   * Return true if the content is valid UTF-8.
+   */
+  simdjson_inline bool validate_unicode() const noexcept;
+
+  /**
+   * Returns the current size of the written JSON buffer.
+   * If an error occurred, returns 0.
+   */
+  simdjson_inline size_t size() const noexcept;
+
+private:
+  /**
+   * Returns true if we can write at least upcoming_bytes bytes.
+   * The underlying buffer is reallocated if needed. It is designed
+   * to be called before writing to the buffer. It should be fast.
+   */
+  simdjson_inline bool capacity_check(size_t upcoming_bytes);
+
+  /**
+   * Grow the buffer to at least desired_capacity bytes.
+   * If the allocation fails, is_valid is set to false. We expect
+   * that this function would not be repeatedly called.
+   */
+  simdjson_inline void grow_buffer(size_t desired_capacity);
+
+  /**
+   * We use this helper function to make sure that is_valid is kept consistent.
+   */
+  simdjson_inline void set_valid(bool valid) noexcept;
+
+  std::unique_ptr buffer{};
+  size_t position{0};
+  size_t capacity{0};
+  bool is_valid{true};
+};
+
+
+
+}
+}
+
+
+#if !SIMDJSON_STATIC_REFLECTION
+// fallback implementation until we have static reflection
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::icelake::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view s;
+  auto e = b.view().get(s);
+  if(e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::icelake::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view sv;
+  auto e = b.view().get(sv);
+  if(e) { return e; }
+  s.assign(sv.data(), sv.size());
+  return simdjson::SUCCESS;
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
+/* end file simdjson/generic/builder/json_string_builder.h for icelake */
+/* including simdjson/generic/builder/json_builder.h for icelake: #include "simdjson/generic/builder/json_builder.h" */
+/* begin file simdjson/generic/builder/json_builder.h for icelake */
+#ifndef SIMDJSON_GENERIC_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#if SIMDJSON_STATIC_REFLECTION
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+// #include  // for std::define_static_string - header not available yet
+
+namespace simdjson {
+namespace icelake {
+namespace builder {
+
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  auto it = t.begin();
+  auto end = t.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+constexpr void atom(string_builder &b, const T &t) {
+  b.escape_and_append_with_quotes(t);
+}
+
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &m) {
+  if (m.empty()) {
+    b.append_raw("{}");
+    return;
+  }
+  b.append('{');
+  bool first = true;
+  for (const auto& [key, value] : m) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    // Keys must be convertible to string_view per the concept
+    b.escape_and_append_with_quotes(key);
+    b.append(':');
+    atom(b, value);
+  }
+  b.append('}');
+}
+
+
+template::value && !std::is_same_v>::type>
+constexpr void atom(string_builder &b, const number_type t) {
+  b.append(t);
+}
+
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, t.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &opt) {
+  if (opt) {
+    atom(b, opt.value());
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &ptr) {
+  if (ptr) {
+    atom(b, *ptr);
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for enums - serialize as string representation using expand approach from P2996R12
+template 
+  requires(std::is_enum_v && !require_custom_serialization)
+void atom(string_builder &b, const T &e) {
+#if SIMDJSON_STATIC_REFLECTION
+  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
+  template for (constexpr auto enum_val : enumerators) {
+    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
+    if (e == [:enum_val:]) {
+      b.append_raw(enum_str);
+      return;
+    }
+  };
+  // Fallback to integer if enum value not found
+  atom(b, static_cast>(e));
+#else
+  // Fallback: serialize as integer if reflection not available
+  atom(b, static_cast>(e));
+#endif
+}
+
+// Support for appendable containers that don't have operator[] (sets, etc.)
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &container) {
+  if (container.empty()) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  bool first = true;
+  for (const auto& item : container) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    atom(b, item);
+  }
+  b.append(']');
+}
+
+// append functions that delegate to atom functions for primitive types
+template 
+  requires(std::is_arithmetic_v && !std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+// works for struct
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, z.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// works for container that have begin() and end() iterators
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  auto it = z.begin();
+  auto end = z.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires (require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  b.append(z);
+}
+
+
+template 
+simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+
+template 
+string_builder& operator<<(string_builder& b, const Z& z) {
+  append(b, z);
+  return b;
+}
+
+// extract_from: Serialize only specific fields from a struct to JSON
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+void extract_from(string_builder &b, const T &obj) {
+  // Helper to check if a field name matches any of the requested fields
+  auto should_extract = [](std::string_view field_name) constexpr -> bool {
+    return ((FieldNames.view() == field_name) || ...);
+  };
+
+  b.append('{');
+  bool first = true;
+
+  // Iterate through all members of T using reflection
+  template for (constexpr auto mem : std::define_static_array(
+      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+
+    if constexpr (std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+
+      // Only serialize this field if it's in our list of requested fields
+      if constexpr (should_extract(key)) {
+        if (!first) {
+          b.append(',');
+        }
+        first = false;
+
+        // Serialize the key
+        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
+        b.append_raw(quoted_key);
+        b.append(':');
+
+        // Serialize the value
+        atom(b, obj.[:mem:]);
+      }
+    }
+  };
+
+  b.append('}');
+}
+
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace builder
+} // namespace icelake
+// Alias the function template to 'to' in the global namespace
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  icelake::builder::string_builder b(initial_capacity);
+  icelake::builder::append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  icelake::builder::string_builder b(initial_capacity);
+  icelake::builder::append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+// Global namespace function for extract_from
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  icelake::builder::string_builder b(initial_capacity);
+  icelake::builder::extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif
+/* end file simdjson/generic/builder/json_builder.h for icelake */
+/* including simdjson/generic/builder/fractured_json_builder.h for icelake: #include "simdjson/generic/builder/fractured_json_builder.h" */
+/* begin file simdjson/generic/builder/fractured_json_builder.h for icelake */
+#ifndef SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+#define SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/dom/fractured_json.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_STATIC_REFLECTION
+
+namespace simdjson {
+namespace icelake {
+namespace builder {
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ *
+ * FracturedJson produces human-readable yet compact JSON output by intelligently
+ * choosing between different layout strategies (inline, compact multiline, table,
+ * expanded) based on content complexity, length, and structure similarity.
+ *
+ * This function combines the builder's serialization with FracturedJson formatting:
+ * 1. Serializes the object to minified JSON using reflection
+ * 2. Parses and reformats using FracturedJson
+ *
+ * Example:
+ *   struct User { int id; std::string name; bool active; };
+ *   User user{1, "Alice", true};
+ *   auto result = to_fractured_json_string(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\", \"active\": true }"
+ *
+ * @param obj The object to serialize (must be a reflectable type)
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string, or an error
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Serialize to minified JSON
+  std::string formatted;
+  auto error = to_json_string(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ *
+ * Example:
+ *   struct User { int id; std::string name; std::string email; bool active; };
+ *   User user{1, "Alice", "alice@example.com", true};
+ *   auto result = extract_fractured_json<"id", "name">(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\" }"
+ *
+ * @param obj The object to serialize
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string containing only the specified fields
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Extract fields to minified JSON
+  std::string formatted;
+  auto error = extract_from(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+} // namespace builder
+} // namespace icelake
+
+// Global namespace convenience functions
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ * Global namespace version for convenience.
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return icelake::builder::to_fractured_json_string(obj, opts, initial_capacity);
+}
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ * Global namespace version for convenience.
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return icelake::builder::extract_fractured_json(obj, opts, initial_capacity);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif // SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+/* end file simdjson/generic/builder/fractured_json_builder.h for icelake */
+
+
+
+// JSON builder inline definitions
+/* including simdjson/generic/builder/json_string_builder-inl.h for icelake: #include "simdjson/generic/builder/json_string_builder-inl.h" */
+/* begin file simdjson/generic/builder/json_string_builder-inl.h for icelake */
+#include 
+#include 
+#include 
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/*
+ * Empirically, we have found that an inlined optimization is important for
+ * performance. The following macros are not ideal. We should find a better
+ * way to inline the code.
+ */
+
+#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
+    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
+     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
+#endif
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
+#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+
+namespace simdjson {
+namespace icelake {
+namespace builder {
+
+static SIMDJSON_CONSTEXPR_LAMBDA std::array
+    json_quotable_character = {
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+/**
+
+A possible SWAR implementation of has_json_escapable_byte. It is not used
+because it is slower than the current implementation. It is kept here for
+reference (to show that we tried it).
+
+inline bool has_json_escapable_byte(uint64_t x) {
+  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
+  uint64_t xor2 = x ^ 0x0202020202020202ULL;
+  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
+  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
+  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
+  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
+}
+
+**/
+
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
+simple_needs_escaping(std::string_view v) {
+  for (char c : v) {
+    // a table lookup is faster than a series of comparisons
+    if (json_quotable_character[static_cast(c)]) {
+      return true;
+    }
+  }
+  return false;
+}
+
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  uint8x16_t running = vdupq_n_u8(0);
+  uint8x16_t v34 = vdupq_n_u8(34);
+  uint8x16_t v92 = vdupq_n_u8(92);
+
+  for (; i + 15 < view.size(); i += 16) {
+    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  if (i < view.size()) {
+    uint8x16_t word =
+        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __m128i running = _mm_setzero_si128();
+  for (; i + 15 < view.size(); i += 16) {
+
+    __m128i word =
+        _mm_loadu_si128(reinterpret_cast(view.data() + i));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  if (i < view.size()) {
+    __m128i word = _mm_loadu_si128(
+        reinterpret_cast(view.data() + view.length() - 16));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  return _mm_movemask_epi8(running) != 0;
+}
+#else
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  return simple_needs_escaping(view);
+}
+#endif
+
+// Scalar fallback for finding next quotable character
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character_scalar(const std::string_view view,
+                                         size_t location) noexcept {
+  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
+    if (json_quotable_character[static_cast(*pos)]) {
+      return pos - view.begin();
+    }
+  }
+  return size_t(view.size());
+}
+
+// SIMD-accelerated position finding that directly locates the first quotable
+// character, combining detection and position extraction in a single pass to
+// minimize redundant work.
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  uint8x16_t v34 = vdupq_n_u8(34);  // '"'
+  uint8x16_t v92 = vdupq_n_u8(92);  // '\\'
+  uint8x16_t v32 = vdupq_n_u8(32);  // control char threshold
+
+  while (remaining >= 16) {
+    uint8x16_t word = vld1q_u8(ptr);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    uint8x16_t needs_escape = vceqq_u8(word, v34);
+    needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
+    needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
+
+    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
+      // Found quotable character - extract exact byte position using ctz
+      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
+      uint64_t lo = vgetq_lane_u64(as64, 0);
+      uint64_t hi = vgetq_lane_u64(as64, 1);
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      if (lo != 0) {
+        _BitScanForward64(&trailing_zero, lo);
+        return offset + trailing_zero / 8;
+      } else {
+        _BitScanForward64(&trailing_zero, hi);
+        return offset + 8 + trailing_zero / 8;
+      }
+#else
+      if (lo != 0) {
+        return offset + __builtin_ctzll(lo) / 8;
+      } else {
+        return offset + 8 + __builtin_ctzll(hi) / 8;
+      }
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants
+  __m128i v34 = _mm_set1_epi8(34);  // '"'
+  __m128i v92 = _mm_set1_epi8(92);  // '\\'
+  __m128i v31 = _mm_set1_epi8(31);  // for control char detection
+
+  while (remaining >= 16) {
+    __m128i word = _mm_loadu_si128(reinterpret_cast(ptr));
+
+    // Check for quotable characters
+    __m128i needs_escape = _mm_cmpeq_epi8(word, v34);
+    needs_escape = _mm_or_si128(needs_escape, _mm_cmpeq_epi8(word, v92));
+    needs_escape = _mm_or_si128(
+        needs_escape,
+        _mm_cmpeq_epi8(_mm_subs_epu8(word, v31), _mm_setzero_si128()));
+
+    int mask = _mm_movemask_epi8(needs_escape);
+    if (mask != 0) {
+      // Found quotable character - use trailing zero count to find position
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      _BitScanForward(&trailing_zero, mask);
+      return offset + trailing_zero;
+#else
+      return offset + __builtin_ctz(mask);
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#else
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  return find_next_json_quotable_character_scalar(view, location);
+}
+#endif
+
+SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
+    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
+    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
+    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
+    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
+    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
+
+// All Unicode characters may be placed within the quotation marks, except for
+// the characters that MUST be escaped: quotation mark, reverse solidus, and the
+// control characters (U+0000 through U+001F). There are two-character sequence
+// escape representations of some popular characters:
+// \", \\, \b, \f, \n, \r, \t.
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline void escape_json_char(char c, char *&out) {
+  if (c == '"') {
+    memcpy(out, "\\\"", 2);
+    out += 2;
+  } else if (c == '\\') {
+    memcpy(out, "\\\\", 2);
+    out += 2;
+  } else {
+    std::string_view v = control_chars[uint8_t(c)];
+    memcpy(out, v.data(), v.size());
+    out += v.size();
+  }
+}
+
+// Writes the escaped version of input to out, returning the number of bytes
+// written. Uses SIMD position finding to locate quotable characters efficiently.
+inline size_t write_string_escaped(const std::string_view input, char *out) {
+  size_t mysize = input.size();
+
+  // Use SIMD position finder directly - it returns mysize if no escape needed
+  size_t location = find_next_json_quotable_character(input, 0);
+  if (location == mysize) {
+    // Fast path: no escaping needed
+    memcpy(out, input.data(), input.size());
+    return input.size();
+  }
+
+  const char *const initout = out;
+  memcpy(out, input.data(), location);
+  out += location;
+  escape_json_char(input[location], out);
+  location += 1;
+  while (location < mysize) {
+    size_t newlocation = find_next_json_quotable_character(input, location);
+    memcpy(out, input.data() + location, newlocation - location);
+    out += newlocation - location;
+    location = newlocation;
+    if (location == mysize) {
+      break;
+    }
+    escape_json_char(input[location], out);
+    location += 1;
+  }
+  return out - initout;
+}
+
+simdjson_inline string_builder::string_builder(size_t initial_capacity)
+    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
+      capacity(buffer.get() != nullptr ? initial_capacity : 0),
+      is_valid(buffer.get() != nullptr) {}
+
+simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
+  // We use the convention that when is_valid is false, then the capacity and
+  // the position are 0.
+  // Most of the time, this function will return true.
+  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
+    return true;
+  }
+  // check for overflow, most of the time there is no overflow
+  if (simdjson_unlikely(position + upcoming_bytes < position)) {
+    return false;
+  }
+  // We will rarely get here.
+  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
+  // If the buffer allocation failed, we set is_valid to false.
+  return is_valid;
+}
+
+simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
+  if (!is_valid) {
+    return;
+  }
+  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
+  if (new_buffer.get() == nullptr) {
+    set_valid(false);
+    return;
+  }
+  std::memcpy(new_buffer.get(), buffer.get(), position);
+  buffer.swap(new_buffer);
+  capacity = desired_capacity;
+}
+
+simdjson_inline void string_builder::set_valid(bool valid) noexcept {
+  if (!valid) {
+    is_valid = false;
+    capacity = 0;
+    position = 0;
+    buffer.reset();
+  } else {
+    is_valid = true;
+  }
+}
+
+simdjson_inline size_t string_builder::size() const noexcept {
+  return position;
+}
+
+simdjson_inline void string_builder::append(char c) noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = c;
+  }
+}
+
+simdjson_inline void string_builder::append_null() noexcept {
+  constexpr char null_literal[] = "null";
+  constexpr size_t null_len = sizeof(null_literal) - 1;
+  if (capacity_check(null_len)) {
+    std::memcpy(buffer.get() + position, null_literal, null_len);
+    position += null_len;
+  }
+}
+
+simdjson_inline void string_builder::clear() noexcept {
+  position = 0;
+  // if it was invalid, we should try to repair it
+  if (!is_valid) {
+    capacity = 0;
+    buffer.reset();
+    is_valid = true;
+  }
+}
+
+namespace internal {
+
+template ::value>::type>
+simdjson_really_inline int int_log2(number_type x) {
+  return 63 - leading_zeroes(uint64_t(x) | 1);
+}
+
+simdjson_really_inline int fast_digit_count_32(uint32_t x) {
+  static uint64_t table[] = {
+      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
+      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
+      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
+      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
+      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
+      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
+      42949672960, 42949672960};
+  return uint32_t((x + table[int_log2(x)]) >> 32);
+}
+
+simdjson_really_inline int fast_digit_count_64(uint64_t x) {
+  static uint64_t table[] = {9,
+                             99,
+                             999,
+                             9999,
+                             99999,
+                             999999,
+                             9999999,
+                             99999999,
+                             999999999,
+                             9999999999,
+                             99999999999,
+                             999999999999,
+                             9999999999999,
+                             99999999999999,
+                             999999999999999ULL,
+                             9999999999999999ULL,
+                             99999999999999999ULL,
+                             999999999999999999ULL,
+                             9999999999999999999ULL};
+  int y = (19 * int_log2(x) >> 6);
+  y += x > table[y];
+  return y + 1;
+}
+
+template ::value>::type>
+simdjson_really_inline size_t digit_count(number_type v) noexcept {
+  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
+                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
+                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
+  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
+    return fast_digit_count_32(static_cast(v));
+  }
+  else {
+    return fast_digit_count_64(static_cast(v));
+  }
+}
+static const char decimal_table[200] = {
+    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
+    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
+    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
+    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
+    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
+    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
+    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
+    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
+    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
+    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
+    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
+    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
+    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
+    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
+    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
+    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
+    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
+};
+} // namespace internal
+
+template 
+simdjson_inline void string_builder::append(number_type v) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_integral::value ||
+                    std::is_floating_point::value,
+                "Unsupported number type");
+  // If C++17 is available, we can 'if constexpr' here.
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    if (v) {
+      constexpr char true_literal[] = "true";
+      constexpr size_t true_len = sizeof(true_literal) - 1;
+      if (capacity_check(true_len)) {
+        std::memcpy(buffer.get() + position, true_literal, true_len);
+        position += true_len;
+      }
+    } else {
+      constexpr char false_literal[] = "false";
+      constexpr size_t false_len = sizeof(false_literal) - 1;
+      if (capacity_check(false_len)) {
+        std::memcpy(buffer.get() + position, false_literal, false_len);
+        position += false_len;
+      }
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
+    // Process 4 digits at a time instead of 2, reducing store operations
+    // and divisions by approximately half for large numbers.
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      unsigned_type pv = static_cast(v);
+      size_t dc = internal::digit_count(pv);
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;  // High 2 digits of remainder
+        unsigned_type r_lo = r % 100;  // Low 2 digits of remainder
+        // Write low 2 digits first (rightmost), then high 2 digits
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits with original 2-digit loop
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
+    // Same 4-digit batching as unsigned path for signed integers
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      bool negative = v < 0;
+      unsigned_type pv = static_cast(v);
+      if (negative) {
+        pv = 0 - pv; // the 0 is for Microsoft
+      }
+      size_t dc = internal::digit_count(pv);
+      // by always writing the minus sign, we avoid the branch.
+      buffer.get()[position] = '-';
+      position += negative ? 1 : 0;
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;
+        unsigned_type r_lo = r % 100;
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
+    constexpr size_t max_number_size = 24;
+    if (capacity_check(max_number_size)) {
+      // We could specialize for float.
+      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
+                                               double(v));
+      position = end - buffer.get();
+    }
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(6 * input.size())) {
+    position += write_string_escaped(input, buffer.get() + position);
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * input.size())) {
+    buffer.get()[position++] = '"';
+    position += write_string_escaped(input, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(char input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * 1)) {
+    buffer.get()[position++] = '"';
+    std::string_view cinput(&input, 1);
+    position += write_string_escaped(cinput, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(const char *input) noexcept {
+  std::string_view cinput(input);
+  escape_and_append_with_quotes(cinput);
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
+  escape_and_append_with_quotes(constevalutil::string_constant::value);
+}
+#endif
+
+simdjson_inline void string_builder::append_raw(const char *c) noexcept {
+  size_t len = std::strlen(c);
+  append_raw(c, len);
+}
+
+simdjson_inline void
+string_builder::append_raw(std::string_view input) noexcept {
+  if (capacity_check(input.size())) {
+    std::memcpy(buffer.get() + position, input.data(), input.size());
+    position += input.size();
+  }
+}
+
+simdjson_inline void string_builder::append_raw(const char *str,
+                                                size_t len) noexcept {
+  if (capacity_check(len)) {
+    std::memcpy(buffer.get() + position, str, len);
+    position += len;
+  }
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+simdjson_inline void string_builder::append(const T &opt) {
+  if (opt) {
+    append(*opt);
+  } else {
+    append_null();
+  }
+}
+
+template 
+  requires(require_custom_serialization)
+simdjson_inline void string_builder::append(T &&val) {
+  serialize(*this, std::forward(val));
+}
+
+template 
+  requires(std::is_convertible::value ||
+           std::is_same::value)
+simdjson_inline void string_builder::append(const T &value) {
+  escape_and_append_with_quotes(value);
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+// Support for range-based appending (std::ranges::view, etc.)
+template 
+  requires(!std::is_convertible::value && !require_custom_serialization)
+simdjson_inline void string_builder::append(const R &range) noexcept {
+  auto it = std::ranges::begin(range);
+  auto end = std::ranges::end(range);
+  if constexpr (concepts::is_pair>) {
+    start_object();
+
+    if (it == end) {
+      end_object();
+      return; // Handle empty range
+    }
+    // Append first item without leading comma
+    append_key_value(it->first, it->second);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append_key_value(it->first, it->second);
+    }
+    end_object();
+  } else {
+    start_array();
+    if (it == end) {
+      end_array();
+      return; // Handle empty range
+    }
+
+    // Append first item without leading comma
+    append(*it);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append(*it);
+    }
+    end_array();
+  }
+}
+
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+simdjson_inline string_builder::operator std::string() const noexcept(false) {
+  return std::string(operator std::string_view());
+}
+
+simdjson_inline string_builder::operator std::string_view() const
+    noexcept(false) simdjson_lifetime_bound {
+  return view();
+}
+#endif
+
+simdjson_inline simdjson_result
+string_builder::view() const noexcept {
+  if (!is_valid) {
+    return simdjson::OUT_OF_CAPACITY;
+  }
+  return std::string_view(buffer.get(), position);
+}
+
+simdjson_inline simdjson_result string_builder::c_str() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position] = '\0';
+    return buffer.get();
+  }
+  return simdjson::OUT_OF_CAPACITY;
+}
+
+simdjson_inline bool string_builder::validate_unicode() const noexcept {
+  return simdjson::validate_utf8(buffer.get(), position);
+}
+
+simdjson_inline void string_builder::start_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '{';
+  }
+}
+
+simdjson_inline void string_builder::end_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '}';
+  }
+}
+
+simdjson_inline void string_builder::start_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '[';
+  }
+}
+
+simdjson_inline void string_builder::end_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ']';
+  }
+}
+
+simdjson_inline void string_builder::append_comma() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ',';
+  }
+}
+
+simdjson_inline void string_builder::append_colon() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ':';
+  }
+}
+
+template 
+simdjson_inline void
+string_builder::append_key_value(key_type key, value_type value) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_convertible::value,
+                "Unsupported key type");
+  escape_and_append_with_quotes(key);
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void
+string_builder::append_key_value(value_type value) noexcept {
+  escape_and_append_with_quotes();
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+#endif
+
+} // namespace builder
+} // namespace icelake
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+/* end file simdjson/generic/builder/json_string_builder-inl.h for icelake */
+
+/* end file simdjson/generic/builder/amalgamated.h for icelake */
+/* including simdjson/icelake/end.h: #include "simdjson/icelake/end.h" */
+/* begin file simdjson/icelake/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if !SIMDJSON_CAN_ALWAYS_RUN_ICELAKE
+SIMDJSON_UNTARGET_REGION
+#endif
+
+/* undefining SIMDJSON_IMPLEMENTATION from "icelake" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/icelake/end.h */
+
+#endif // SIMDJSON_ICELAKE_BUILDER_H
+/* end file simdjson/icelake/builder.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(ppc64)
+/* including simdjson/ppc64/builder.h: #include "simdjson/ppc64/builder.h" */
+/* begin file simdjson/ppc64/builder.h */
+#ifndef SIMDJSON_PPC64_BUILDER_H
+#define SIMDJSON_PPC64_BUILDER_H
+
+/* including simdjson/ppc64/begin.h: #include "simdjson/ppc64/begin.h" */
+/* begin file simdjson/ppc64/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "ppc64" */
+#define SIMDJSON_IMPLEMENTATION ppc64
+/* including simdjson/ppc64/base.h: #include "simdjson/ppc64/base.h" */
+/* begin file simdjson/ppc64/base.h */
+#ifndef SIMDJSON_PPC64_BASE_H
+#define SIMDJSON_PPC64_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+/**
+ * Implementation for ALTIVEC (PPC64).
+ */
+namespace ppc64 {
+
+class implementation;
+
+namespace {
+namespace simd {
+template  struct simd8;
+template  struct simd8x64;
+} // namespace simd
+} // unnamed namespace
+
+} // namespace ppc64
+} // namespace simdjson
+
+#endif // SIMDJSON_PPC64_BASE_H
+/* end file simdjson/ppc64/base.h */
+/* including simdjson/ppc64/intrinsics.h: #include "simdjson/ppc64/intrinsics.h" */
+/* begin file simdjson/ppc64/intrinsics.h */
+#ifndef SIMDJSON_PPC64_INTRINSICS_H
+#define SIMDJSON_PPC64_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+// This should be the correct header whether
+// you use visual studio or other compilers.
+#include 
+
+// These are defined by altivec.h in GCC toolchain, it is safe to undef them.
+#ifdef bool
+#undef bool
+#endif
+
+#ifdef vector
+#undef vector
+#endif
+
+static_assert(sizeof(__vector unsigned char) <= simdjson::SIMDJSON_PADDING, "insufficient padding for ppc64");
+
+#endif //  SIMDJSON_PPC64_INTRINSICS_H
+/* end file simdjson/ppc64/intrinsics.h */
+/* including simdjson/ppc64/bitmanipulation.h: #include "simdjson/ppc64/bitmanipulation.h" */
+/* begin file simdjson/ppc64/bitmanipulation.h */
+#ifndef SIMDJSON_PPC64_BITMANIPULATION_H
+#define SIMDJSON_PPC64_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace ppc64 {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long ret;
+  // Search the mask data from least significant bit (LSB)
+  // to the most significant bit (MSB) for a set bit (1).
+  _BitScanForward64(&ret, input_num);
+  return (int)ret;
+#else  // SIMDJSON_REGULAR_VISUAL_STUDIO
+  return __builtin_ctzll(input_num);
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return input_num & (input_num - 1);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long leading_zero = 0;
+  // Search the mask data from most significant bit (MSB)
+  // to least significant bit (LSB) for a set bit (1).
+  if (_BitScanReverse64(&leading_zero, input_num))
+    return (int)(63 - leading_zero);
+  else
+    return 64;
+#else
+  return __builtin_clzll(input_num);
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+simdjson_inline int count_ones(uint64_t input_num) {
+  // note: we do not support legacy 32-bit Windows in this kernel
+  return __popcnt64(input_num); // Visual Studio wants two underscores
+}
+#else
+simdjson_inline int count_ones(uint64_t input_num) {
+  return __builtin_popcountll(input_num);
+}
+#endif
+
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
+                                         uint64_t *result) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  *result = value1 + value2;
+  return *result < value1;
+#else
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+#endif
+}
+
+} // unnamed namespace
+} // namespace ppc64
+} // namespace simdjson
+
+#endif // SIMDJSON_PPC64_BITMANIPULATION_H
+/* end file simdjson/ppc64/bitmanipulation.h */
+/* including simdjson/ppc64/bitmask.h: #include "simdjson/ppc64/bitmask.h" */
+/* begin file simdjson/ppc64/bitmask.h */
+#ifndef SIMDJSON_PPC64_BITMASK_H
+#define SIMDJSON_PPC64_BITMASK_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace ppc64 {
+namespace {
+
+//
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is
+// encountered.
+//
+// For example, prefix_xor(00100100) == 00011100
+//
+simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
+  // You can use the version below, however gcc sometimes miscompiles
+  // vec_pmsum_be, it happens somewhere around between 8 and 9th version.
+  // The performance boost was not noticeable, falling back to a usual
+  // implementation.
+  //   __vector unsigned long long all_ones = {~0ull, ~0ull};
+  //   __vector unsigned long long mask = {bitmask, 0};
+  //   // Clang and GCC return different values for pmsum for ull so cast it to one.
+  //   // Generally it is not specified by ALTIVEC ISA what is returned by
+  //   // vec_pmsum_be.
+  // #if defined(__LITTLE_ENDIAN__)
+  //   return (uint64_t)(((__vector unsigned long long)vec_pmsum_be(all_ones, mask))[0]);
+  // #else
+  //   return (uint64_t)(((__vector unsigned long long)vec_pmsum_be(all_ones, mask))[1]);
+  // #endif
+  bitmask ^= bitmask << 1;
+  bitmask ^= bitmask << 2;
+  bitmask ^= bitmask << 4;
+  bitmask ^= bitmask << 8;
+  bitmask ^= bitmask << 16;
+  bitmask ^= bitmask << 32;
+  return bitmask;
+}
+
+} // unnamed namespace
+} // namespace ppc64
+} // namespace simdjson
+
+#endif
+/* end file simdjson/ppc64/bitmask.h */
+/* including simdjson/ppc64/numberparsing_defs.h: #include "simdjson/ppc64/numberparsing_defs.h" */
+/* begin file simdjson/ppc64/numberparsing_defs.h */
+#ifndef SIMDJSON_PPC64_NUMBERPARSING_DEFS_H
+#define SIMDJSON_PPC64_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+#if defined(__linux__)
+#include 
+#elif defined(__FreeBSD__)
+#include 
+#endif
+
+namespace simdjson {
+namespace ppc64 {
+namespace numberparsing {
+
+// we don't have appropriate instructions, so let us use a scalar function
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  uint64_t val;
+  std::memcpy(&val, chars, sizeof(uint64_t));
+#ifdef __BIG_ENDIAN__
+#if defined(__linux__)
+  val = bswap_64(val);
+#elif defined(__FreeBSD__)
+  val = bswap64(val);
+#endif
+#endif
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+}
+
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+#if SIMDJSON_IS_ARM64
+  // ARM64 has native support for 64-bit multiplications, no need to emultate
+  answer.high = __umulh(value1, value2);
+  answer.low = value1 * value2;
+#else
+  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
+#endif // SIMDJSON_IS_ARM64
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+#endif
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace ppc64
+} // namespace simdjson
+
+#ifndef SIMDJSON_SWAR_NUMBER_PARSING
+#if SIMDJSON_IS_BIG_ENDIAN
+#define SIMDJSON_SWAR_NUMBER_PARSING 0
+#else
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+#endif
+#endif
+
+#endif // SIMDJSON_PPC64_NUMBERPARSING_DEFS_H
+/* end file simdjson/ppc64/numberparsing_defs.h */
+/* including simdjson/ppc64/simd.h: #include "simdjson/ppc64/simd.h" */
+/* begin file simdjson/ppc64/simd.h */
+#ifndef SIMDJSON_PPC64_SIMD_H
+#define SIMDJSON_PPC64_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+namespace simdjson {
+namespace ppc64 {
+namespace {
+namespace simd {
+
+using __m128i = __vector unsigned char;
+
+template  struct base {
+  __m128i value;
+
+  // Zero constructor
+  simdjson_inline base() : value{__m128i()} {}
+
+  // Conversion from SIMD register
+  simdjson_inline base(const __m128i _value) : value(_value) {}
+
+  // Conversion to SIMD register
+  simdjson_inline operator const __m128i &() const {
+    return this->value;
+  }
+  simdjson_inline operator __m128i &() { return this->value; }
+
+  // Bit operations
+  simdjson_inline Child operator|(const Child other) const {
+    return vec_or(this->value, (__m128i)other);
+  }
+  simdjson_inline Child operator&(const Child other) const {
+    return vec_and(this->value, (__m128i)other);
+  }
+  simdjson_inline Child operator^(const Child other) const {
+    return vec_xor(this->value, (__m128i)other);
+  }
+  simdjson_inline Child bit_andnot(const Child other) const {
+    return vec_andc(this->value, (__m128i)other);
+  }
+  simdjson_inline Child &operator|=(const Child other) {
+    auto this_cast = static_cast(this);
+    *this_cast = *this_cast | other;
+    return *this_cast;
+  }
+  simdjson_inline Child &operator&=(const Child other) {
+    auto this_cast = static_cast(this);
+    *this_cast = *this_cast & other;
+    return *this_cast;
+  }
+  simdjson_inline Child &operator^=(const Child other) {
+    auto this_cast = static_cast(this);
+    *this_cast = *this_cast ^ other;
+    return *this_cast;
+  }
+};
+
+template >
+struct base8 : base> {
+  typedef uint16_t bitmask_t;
+  typedef uint32_t bitmask2_t;
+
+  simdjson_inline base8() : base>() {}
+  simdjson_inline base8(const __m128i _value) : base>(_value) {}
+
+  friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) {
+    return (__m128i)vec_cmpeq(lhs.value, (__m128i)rhs);
+  }
+
+  static const int SIZE = sizeof(base>::value);
+
+  template 
+  simdjson_inline simd8 prev(simd8 prev_chunk) const {
+    __m128i chunk = this->value;
+#ifdef __LITTLE_ENDIAN__
+    chunk = (__m128i)vec_reve(this->value);
+    prev_chunk = (__m128i)vec_reve((__m128i)prev_chunk);
+#endif
+    chunk = (__m128i)vec_sld((__m128i)prev_chunk, (__m128i)chunk, 16 - N);
+#ifdef __LITTLE_ENDIAN__
+    chunk = (__m128i)vec_reve((__m128i)chunk);
+#endif
+    return chunk;
+  }
+};
+
+// SIMD byte mask type (returned by things like eq and gt)
+template <> struct simd8 : base8 {
+  static simdjson_inline simd8 splat(bool _value) {
+    return (__m128i)vec_splats((unsigned char)(-(!!_value)));
+  }
+
+  simdjson_inline simd8() : base8() {}
+  simdjson_inline simd8(const __m128i _value)
+      : base8(_value) {}
+  // Splat constructor
+  simdjson_inline simd8(bool _value)
+      : base8(splat(_value)) {}
+
+  simdjson_inline int to_bitmask() const {
+    __vector unsigned long long result;
+    const __m128i perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50, 0x48, 0x40,
+                               0x38, 0x30, 0x28, 0x20, 0x18, 0x10, 0x08, 0x00};
+
+    result = ((__vector unsigned long long)vec_vbpermq((__m128i)this->value,
+                                                       (__m128i)perm_mask));
+#ifdef __LITTLE_ENDIAN__
+    return static_cast(result[1]);
+#else
+    return static_cast(result[0]);
+#endif
+  }
+  simdjson_inline bool any() const {
+    return !vec_all_eq(this->value, (__m128i)vec_splats(0));
+  }
+  simdjson_inline simd8 operator~() const {
+    return this->value ^ (__m128i)splat(true);
+  }
+};
+
+template  struct base8_numeric : base8 {
+  static simdjson_inline simd8 splat(T value) {
+    (void)value;
+    return (__m128i)vec_splats(value);
+  }
+  static simdjson_inline simd8 zero() { return splat(0); }
+  static simdjson_inline simd8 load(const T values[16]) {
+    return (__m128i)(vec_vsx_ld(0, reinterpret_cast(values)));
+  }
+  // Repeat 16 values as many times as necessary (usually for lookup tables)
+  static simdjson_inline simd8 repeat_16(T v0, T v1, T v2, T v3, T v4,
+                                                   T v5, T v6, T v7, T v8, T v9,
+                                                   T v10, T v11, T v12, T v13,
+                                                   T v14, T v15) {
+    return simd8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
+                    v14, v15);
+  }
+
+  simdjson_inline base8_numeric() : base8() {}
+  simdjson_inline base8_numeric(const __m128i _value)
+      : base8(_value) {}
+
+  // Store to array
+  simdjson_inline void store(T dst[16]) const {
+    vec_vsx_st(this->value, 0, reinterpret_cast<__m128i *>(dst));
+  }
+
+  // Override to distinguish from bool version
+  simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+
+  // Addition/subtraction are the same for signed and unsigned
+  simdjson_inline simd8 operator+(const simd8 other) const {
+    return (__m128i)((__m128i)this->value + (__m128i)other);
+  }
+  simdjson_inline simd8 operator-(const simd8 other) const {
+    return (__m128i)((__m128i)this->value - (__m128i)other);
+  }
+  simdjson_inline simd8 &operator+=(const simd8 other) {
+    *this = *this + other;
+    return *static_cast *>(this);
+  }
+  simdjson_inline simd8 &operator-=(const simd8 other) {
+    *this = *this - other;
+    return *static_cast *>(this);
+  }
+
+  // Perform a lookup assuming the value is between 0 and 16 (undefined behavior
+  // for out of range values)
+  template 
+  simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+    return (__m128i)vec_perm((__m128i)lookup_table, (__m128i)lookup_table, this->value);
+  }
+
+  // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted
+  // as a bitset). Passing a 0 value for mask would be equivalent to writing out
+  // every byte to output. Only the first 16 - count_ones(mask) bytes of the
+  // result are significant but 16 bytes get written. Design consideration: it
+  // seems like a function with the signature simd8 compress(uint32_t mask)
+  // would be sensible, but the AVX ISA makes this kind of approach difficult.
+  template 
+  simdjson_inline void compress(uint16_t mask, L *output) const {
+    using internal::BitsSetTable256mul2;
+    using internal::pshufb_combine_table;
+    using internal::thintable_epi8;
+    // this particular implementation was inspired by work done by @animetosho
+    // we do it in two steps, first 8 bytes and then second 8 bytes
+    uint8_t mask1 = uint8_t(mask);      // least significant 8 bits
+    uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
+    // next line just loads the 64-bit values thintable_epi8[mask1] and
+    // thintable_epi8[mask2] into a 128-bit register, using only
+    // two instructions on most compilers.
+#ifdef __LITTLE_ENDIAN__
+    __m128i shufmask = (__m128i)(__vector unsigned long long){
+        thintable_epi8[mask1], thintable_epi8[mask2]};
+#else
+    __m128i shufmask = (__m128i)(__vector unsigned long long){
+        thintable_epi8[mask2], thintable_epi8[mask1]};
+    shufmask = (__m128i)vec_reve((__m128i)shufmask);
+#endif
+    // we increment by 0x08 the second half of the mask
+    shufmask = ((__m128i)shufmask) +
+               ((__m128i)(__vector int){0, 0, 0x08080808, 0x08080808});
+
+    // this is the version "nearly pruned"
+    __m128i pruned = vec_perm(this->value, this->value, shufmask);
+    // we still need to put the two halves together.
+    // we compute the popcount of the first half:
+    int pop1 = BitsSetTable256mul2[mask1];
+    // then load the corresponding mask, what it does is to write
+    // only the first pop1 bytes from the first 8 bytes, and then
+    // it fills in with the bytes from the second 8 bytes + some filling
+    // at the end.
+    __m128i compactmask =
+        vec_vsx_ld(0, reinterpret_cast(pshufb_combine_table + pop1 * 8));
+    __m128i answer = vec_perm(pruned, (__m128i)vec_splats(0), compactmask);
+    vec_vsx_st(answer, 0, reinterpret_cast<__m128i *>(output));
+  }
+
+  template 
+  simdjson_inline simd8
+  lookup_16(L replace0, L replace1, L replace2, L replace3, L replace4,
+            L replace5, L replace6, L replace7, L replace8, L replace9,
+            L replace10, L replace11, L replace12, L replace13, L replace14,
+            L replace15) const {
+    return lookup_16(simd8::repeat_16(
+        replace0, replace1, replace2, replace3, replace4, replace5, replace6,
+        replace7, replace8, replace9, replace10, replace11, replace12,
+        replace13, replace14, replace15));
+  }
+};
+
+// Signed bytes
+template <> struct simd8 : base8_numeric {
+  simdjson_inline simd8() : base8_numeric() {}
+  simdjson_inline simd8(const __m128i _value)
+      : base8_numeric(_value) {}
+  // Splat constructor
+  simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+  // Array constructor
+  simdjson_inline simd8(const int8_t *values) : simd8(load(values)) {}
+  // Member-by-member initialization
+  simdjson_inline simd8(int8_t v0, int8_t v1, int8_t v2, int8_t v3,
+                               int8_t v4, int8_t v5, int8_t v6, int8_t v7,
+                               int8_t v8, int8_t v9, int8_t v10, int8_t v11,
+                               int8_t v12, int8_t v13, int8_t v14, int8_t v15)
+      : simd8((__m128i)(__vector signed char){v0, v1, v2, v3, v4, v5, v6, v7,
+                                              v8, v9, v10, v11, v12, v13, v14,
+                                              v15}) {}
+  // Repeat 16 values as many times as necessary (usually for lookup tables)
+  simdjson_inline static simd8
+  repeat_16(int8_t v0, int8_t v1, int8_t v2, int8_t v3, int8_t v4, int8_t v5,
+            int8_t v6, int8_t v7, int8_t v8, int8_t v9, int8_t v10, int8_t v11,
+            int8_t v12, int8_t v13, int8_t v14, int8_t v15) {
+    return simd8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+                         v13, v14, v15);
+  }
+
+  // Order-sensitive comparisons
+  simdjson_inline simd8
+  max_val(const simd8 other) const {
+    return (__m128i)vec_max((__vector signed char)this->value,
+                            (__vector signed char)(__m128i)other);
+  }
+  simdjson_inline simd8
+  min_val(const simd8 other) const {
+    return (__m128i)vec_min((__vector signed char)this->value,
+                            (__vector signed char)(__m128i)other);
+  }
+  simdjson_inline simd8
+  operator>(const simd8 other) const {
+    return (__m128i)vec_cmpgt((__vector signed char)this->value,
+                              (__vector signed char)(__m128i)other);
+  }
+  simdjson_inline simd8
+  operator<(const simd8 other) const {
+    return (__m128i)vec_cmplt((__vector signed char)this->value,
+                              (__vector signed char)(__m128i)other);
+  }
+};
+
+// Unsigned bytes
+template <> struct simd8 : base8_numeric {
+  simdjson_inline simd8() : base8_numeric() {}
+  simdjson_inline simd8(const __m128i _value)
+      : base8_numeric(_value) {}
+  // Splat constructor
+  simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+  // Array constructor
+  simdjson_inline simd8(const uint8_t *values) : simd8(load(values)) {}
+  // Member-by-member initialization
+  simdjson_inline
+  simd8(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4, uint8_t v5,
+        uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9, uint8_t v10,
+        uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15)
+      : simd8((__m128i){v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+                        v13, v14, v15}) {}
+  // Repeat 16 values as many times as necessary (usually for lookup tables)
+  simdjson_inline static simd8
+  repeat_16(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4,
+            uint8_t v5, uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9,
+            uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14,
+            uint8_t v15) {
+    return simd8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+                          v13, v14, v15);
+  }
+
+  // Saturated math
+  simdjson_inline simd8
+  saturating_add(const simd8 other) const {
+    return (__m128i)vec_adds(this->value, (__m128i)other);
+  }
+  simdjson_inline simd8
+  saturating_sub(const simd8 other) const {
+    return (__m128i)vec_subs(this->value, (__m128i)other);
+  }
+
+  // Order-specific operations
+  simdjson_inline simd8
+  max_val(const simd8 other) const {
+    return (__m128i)vec_max(this->value, (__m128i)other);
+  }
+  simdjson_inline simd8
+  min_val(const simd8 other) const {
+    return (__m128i)vec_min(this->value, (__m128i)other);
+  }
+  // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
+  simdjson_inline simd8
+  gt_bits(const simd8 other) const {
+    return this->saturating_sub(other);
+  }
+  // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
+  simdjson_inline simd8
+  lt_bits(const simd8 other) const {
+    return other.saturating_sub(*this);
+  }
+  simdjson_inline simd8
+  operator<=(const simd8 other) const {
+    return other.max_val(*this) == other;
+  }
+  simdjson_inline simd8
+  operator>=(const simd8 other) const {
+    return other.min_val(*this) == other;
+  }
+  simdjson_inline simd8
+  operator>(const simd8 other) const {
+    return this->gt_bits(other).any_bits_set();
+  }
+  simdjson_inline simd8
+  operator<(const simd8 other) const {
+    return this->gt_bits(other).any_bits_set();
+  }
+
+  // Bit-specific operations
+  simdjson_inline simd8 bits_not_set() const {
+    return (__m128i)vec_cmpeq(this->value, (__m128i)vec_splats(uint8_t(0)));
+  }
+  simdjson_inline simd8 bits_not_set(simd8 bits) const {
+    return (*this & bits).bits_not_set();
+  }
+  simdjson_inline simd8 any_bits_set() const {
+    return ~this->bits_not_set();
+  }
+  simdjson_inline simd8 any_bits_set(simd8 bits) const {
+    return ~this->bits_not_set(bits);
+  }
+  simdjson_inline bool bits_not_set_anywhere() const {
+    return vec_all_eq(this->value, (__m128i)vec_splats(0));
+  }
+  simdjson_inline bool any_bits_set_anywhere() const {
+    return !bits_not_set_anywhere();
+  }
+  simdjson_inline bool bits_not_set_anywhere(simd8 bits) const {
+    return vec_all_eq(vec_and(this->value, (__m128i)bits),
+                      (__m128i)vec_splats(0));
+  }
+  simdjson_inline bool any_bits_set_anywhere(simd8 bits) const {
+    return !bits_not_set_anywhere(bits);
+  }
+  template  simdjson_inline simd8 shr() const {
+    return simd8(
+        (__m128i)vec_sr(this->value, (__m128i)vec_splat_u8(N)));
+  }
+  template  simdjson_inline simd8 shl() const {
+    return simd8(
+        (__m128i)vec_sl(this->value, (__m128i)vec_splat_u8(N)));
+  }
+};
+
+template  struct simd8x64 {
+  static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+  static_assert(NUM_CHUNKS == 4,
+                "PPC64 kernel should use four registers per 64-byte block.");
+  const simd8 chunks[NUM_CHUNKS];
+  template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+  simd8x64(const simd8x64 &o) = delete; // no copy allowed
+  simd8x64 &
+  operator=(const simd8& other) = delete; // no assignment allowed
+  simd8x64() = delete;                      // no default constructor allowed
+
+  simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1,
+                                  const simd8 chunk2, const simd8 chunk3)
+      : chunks{chunk0, chunk1, chunk2, chunk3} {}
+  simdjson_inline simd8x64(const T ptr[64])
+      : chunks{simd8::load(ptr), simd8::load(ptr + 16),
+               simd8::load(ptr + 32), simd8::load(ptr + 48)} {}
+
+  simdjson_inline void store(T ptr[64]) const {
+    this->chunks[0].store(ptr + sizeof(simd8) * 0);
+    this->chunks[1].store(ptr + sizeof(simd8) * 1);
+    this->chunks[2].store(ptr + sizeof(simd8) * 2);
+    this->chunks[3].store(ptr + sizeof(simd8) * 3);
+  }
+
+  simdjson_inline simd8 reduce_or() const {
+    return (this->chunks[0] | this->chunks[1]) |
+           (this->chunks[2] | this->chunks[3]);
+  }
+
+  simdjson_inline uint64_t compress(uint64_t mask, T *output) const {
+    this->chunks[0].compress(uint16_t(mask), output);
+    this->chunks[1].compress(uint16_t(mask >> 16),
+                             output + 16 - count_ones(mask & 0xFFFF));
+    this->chunks[2].compress(uint16_t(mask >> 32),
+                             output + 32 - count_ones(mask & 0xFFFFFFFF));
+    this->chunks[3].compress(uint16_t(mask >> 48),
+                             output + 48 - count_ones(mask & 0xFFFFFFFFFFFF));
+    return 64 - count_ones(mask);
+  }
+
+  simdjson_inline uint64_t to_bitmask() const {
+    uint64_t r0 = uint32_t(this->chunks[0].to_bitmask());
+    uint64_t r1 = this->chunks[1].to_bitmask();
+    uint64_t r2 = this->chunks[2].to_bitmask();
+    uint64_t r3 = this->chunks[3].to_bitmask();
+    return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
+  }
+
+  simdjson_inline uint64_t eq(const T m) const {
+    const simd8 mask = simd8::splat(m);
+    return simd8x64(this->chunks[0] == mask, this->chunks[1] == mask,
+                          this->chunks[2] == mask, this->chunks[3] == mask)
+        .to_bitmask();
+  }
+
+  simdjson_inline uint64_t eq(const simd8x64 &other) const {
+    return simd8x64(this->chunks[0] == other.chunks[0],
+                          this->chunks[1] == other.chunks[1],
+                          this->chunks[2] == other.chunks[2],
+                          this->chunks[3] == other.chunks[3])
+        .to_bitmask();
+  }
+
+  simdjson_inline uint64_t lteq(const T m) const {
+    const simd8 mask = simd8::splat(m);
+    return simd8x64(this->chunks[0] <= mask, this->chunks[1] <= mask,
+                          this->chunks[2] <= mask, this->chunks[3] <= mask)
+        .to_bitmask();
+  }
+}; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace ppc64
+} // namespace simdjson
+
+#endif // SIMDJSON_PPC64_SIMD_INPUT_H
+/* end file simdjson/ppc64/simd.h */
+/* including simdjson/ppc64/stringparsing_defs.h: #include "simdjson/ppc64/stringparsing_defs.h" */
+/* begin file simdjson/ppc64/stringparsing_defs.h */
+#ifndef SIMDJSON_PPC64_STRINGPARSING_DEFS_H
+#define SIMDJSON_PPC64_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/simd.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace ppc64 {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 32;
+  simdjson_inline backslash_and_quote
+  copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() {
+    return ((bs_bits - 1) & quote_bits) != 0;
+  }
+  simdjson_inline bool has_backslash() { return bs_bits != 0; }
+  simdjson_inline int quote_index() {
+    return trailing_zeroes(quote_bits);
+  }
+  simdjson_inline int backslash_index() {
+    return trailing_zeroes(bs_bits);
+  }
+
+  uint32_t bs_bits;
+  uint32_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote
+backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // this can read up to 31 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1),
+                "backslash and quote finder must process fewer than "
+                "SIMDJSON_PADDING bytes");
+  simd8 v0(src);
+  simd8 v1(src + sizeof(v0));
+  v0.store(dst);
+  v1.store(dst + sizeof(v0));
+
+  // Getting a 64-bit bitmask is much cheaper than multiple 16-bit bitmasks on
+  // PPC; therefore, we smash them together into a 64-byte mask and get the
+  // bitmask from there.
+  uint64_t bs_and_quote =
+      simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
+  return {
+      uint32_t(bs_and_quote),      // bs_bits
+      uint32_t(bs_and_quote >> 32) // quote_bits
+  };
+}
+
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 16;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits); }
+
+  uint64_t escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  simd8 is_quote = (v == '"');
+  simd8 is_backslash = (v == '\\');
+  simd8 is_control = (v < 32);
+  return {
+    // We store it as a 64-bit bitmask even though we only need 16 bits.
+    uint64_t((is_backslash | is_quote | is_control).to_bitmask())
+  };
+}
+
+} // unnamed namespace
+} // namespace ppc64
+} // namespace simdjson
+
+#endif // SIMDJSON_PPC64_STRINGPARSING_DEFS_H
+/* end file simdjson/ppc64/stringparsing_defs.h */
+
+#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
+/* end file simdjson/ppc64/begin.h */
+/* including simdjson/generic/builder/amalgamated.h for ppc64: #include "simdjson/generic/builder/amalgamated.h" */
+/* begin file simdjson/generic/builder/amalgamated.h for ppc64 */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
+#error simdjson/generic/builder/dependencies.h must be included before simdjson/generic/builder/amalgamated.h!
+#endif
+
+/* including simdjson/generic/builder/json_string_builder.h for ppc64: #include "simdjson/generic/builder/json_string_builder.h" */
+/* begin file simdjson/generic/builder/json_string_builder.h for ppc64 */
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace ppc64 {
+namespace builder {
+  class string_builder;
+}}
+
+template 
+struct has_custom_serialization : std::false_type {};
+
+inline constexpr struct serialize_tag {
+  template 
+  constexpr void operator()(ppc64::builder::string_builder& b, T&& obj) const{
+    return tag_invoke(*this, b, std::forward(obj));
+  }
+
+
+} serialize{};
+template 
+struct has_custom_serialization(), std::declval()))
+>> : std::true_type {};
+
+template 
+constexpr bool require_custom_serialization = has_custom_serialization::value;
+#else
+struct has_custom_serialization : std::false_type {};
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace ppc64 {
+namespace builder {
+/**
+ * A builder for JSON strings representing documents. This is a low-level
+ * builder that is not meant to be used directly by end-users. Though it
+ * supports atomic types (Booleans, strings), it does not support composed
+ * types (arrays and objects).
+ *
+ * Ultimately, this class can support kernel-specific optimizations. E.g.,
+ * it may make use of SIMD instructions to escape strings faster.
+ */
+class string_builder {
+public:
+  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
+
+  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
+
+  /**
+   * Append number (includes Booleans). Booleans are mapped to the strings
+   * false and true. Numbers are converted to strings abiding by the JSON standard.
+   * Floating-point numbers are converted to the shortest string that 'correctly'
+   * represents the number.
+   */
+  template::value>::type>
+  simdjson_inline void append(number_type v) noexcept;
+
+  /**
+   * Append character c.
+   */
+  simdjson_inline void append(char c)  noexcept;
+
+  /**
+   * Append the string 'null'.
+   */
+  simdjson_inline void append_null()  noexcept;
+
+  /**
+   * Clear the content.
+   */
+  simdjson_inline void clear()  noexcept;
+
+  /**
+   * Append the std::string_view, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
+
+  /**
+   * Append the std::string_view surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void escape_and_append_with_quotes()  noexcept;
+#endif
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
+
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
+
+  /**
+   * Append the C string directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *c)  noexcept;
+
+  /**
+   * Append "{" to the buffer.
+   */
+  simdjson_inline void start_object()  noexcept;
+
+  /**
+   * Append "}" to the buffer.
+   */
+  simdjson_inline void end_object()  noexcept;
+
+  /**
+   * Append "[" to the buffer.
+   */
+  simdjson_inline void start_array()  noexcept;
+
+  /**
+   * Append "]" to the buffer.
+   */
+  simdjson_inline void end_array()  noexcept;
+
+  /**
+   * Append "," to the buffer.
+   */
+  simdjson_inline void append_comma()  noexcept;
+
+  /**
+   * Append ":" to the buffer.
+   */
+  simdjson_inline void append_colon()  noexcept;
+
+  /**
+   * Append a key-value pair to the buffer.
+   * The key is escaped and surrounded by double quotes.
+   * The value is escaped if it is a string.
+   */
+  template
+  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void append_key_value(value_type value) noexcept;
+
+  // Support for optional types (std::optional, etc.)
+  template 
+  requires(!require_custom_serialization)
+  simdjson_inline void append(const T &opt);
+
+  template 
+  requires(require_custom_serialization)
+  simdjson_inline void append(T &&val);
+
+  // Support for string-like types
+  template 
+  requires(std::is_convertible::value ||
+  std::is_same::value )
+  simdjson_inline void append(const T &value);
+#endif
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+  // Support for range-based appending (std::ranges::view, etc.)
+  template 
+requires (!std::is_convertible::value && !require_custom_serialization)
+  simdjson_inline void append(const R &range) noexcept;
+#endif
+  /**
+   * Append the std::string_view directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(std::string_view input)  noexcept;
+
+  /**
+   * Append len characters from str.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
+#if SIMDJSON_EXCEPTIONS
+  /**
+   * Creates an std::string from the written JSON buffer.
+   * Throws if memory allocation failed
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string() const noexcept(false);
+
+  /**
+   * Creates an std::string_view from the written JSON buffer.
+   * Throws if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
+#endif
+
+  /**
+   * Returns a view on the written JSON buffer. Returns an error
+   * if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result view() const noexcept;
+
+  /**
+   * Appends the null character to the buffer and returns
+   * a pointer to the beginning of the written JSON buffer.
+   * Returns an error if memory allocation failed.
+   * The result is null-terminated.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result c_str() noexcept;
+
+  /**
+   * Return true if the content is valid UTF-8.
+   */
+  simdjson_inline bool validate_unicode() const noexcept;
+
+  /**
+   * Returns the current size of the written JSON buffer.
+   * If an error occurred, returns 0.
+   */
+  simdjson_inline size_t size() const noexcept;
+
+private:
+  /**
+   * Returns true if we can write at least upcoming_bytes bytes.
+   * The underlying buffer is reallocated if needed. It is designed
+   * to be called before writing to the buffer. It should be fast.
+   */
+  simdjson_inline bool capacity_check(size_t upcoming_bytes);
+
+  /**
+   * Grow the buffer to at least desired_capacity bytes.
+   * If the allocation fails, is_valid is set to false. We expect
+   * that this function would not be repeatedly called.
+   */
+  simdjson_inline void grow_buffer(size_t desired_capacity);
+
+  /**
+   * We use this helper function to make sure that is_valid is kept consistent.
+   */
+  simdjson_inline void set_valid(bool valid) noexcept;
+
+  std::unique_ptr buffer{};
+  size_t position{0};
+  size_t capacity{0};
+  bool is_valid{true};
+};
+
+
+
+}
+}
+
+
+#if !SIMDJSON_STATIC_REFLECTION
+// fallback implementation until we have static reflection
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::ppc64::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view s;
+  auto e = b.view().get(s);
+  if(e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::ppc64::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view sv;
+  auto e = b.view().get(sv);
+  if(e) { return e; }
+  s.assign(sv.data(), sv.size());
+  return simdjson::SUCCESS;
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
+/* end file simdjson/generic/builder/json_string_builder.h for ppc64 */
+/* including simdjson/generic/builder/json_builder.h for ppc64: #include "simdjson/generic/builder/json_builder.h" */
+/* begin file simdjson/generic/builder/json_builder.h for ppc64 */
+#ifndef SIMDJSON_GENERIC_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#if SIMDJSON_STATIC_REFLECTION
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+// #include  // for std::define_static_string - header not available yet
+
+namespace simdjson {
+namespace ppc64 {
+namespace builder {
+
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  auto it = t.begin();
+  auto end = t.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+constexpr void atom(string_builder &b, const T &t) {
+  b.escape_and_append_with_quotes(t);
+}
+
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &m) {
+  if (m.empty()) {
+    b.append_raw("{}");
+    return;
+  }
+  b.append('{');
+  bool first = true;
+  for (const auto& [key, value] : m) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    // Keys must be convertible to string_view per the concept
+    b.escape_and_append_with_quotes(key);
+    b.append(':');
+    atom(b, value);
+  }
+  b.append('}');
+}
+
+
+template::value && !std::is_same_v>::type>
+constexpr void atom(string_builder &b, const number_type t) {
+  b.append(t);
+}
+
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, t.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &opt) {
+  if (opt) {
+    atom(b, opt.value());
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &ptr) {
+  if (ptr) {
+    atom(b, *ptr);
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for enums - serialize as string representation using expand approach from P2996R12
+template 
+  requires(std::is_enum_v && !require_custom_serialization)
+void atom(string_builder &b, const T &e) {
+#if SIMDJSON_STATIC_REFLECTION
+  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
+  template for (constexpr auto enum_val : enumerators) {
+    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
+    if (e == [:enum_val:]) {
+      b.append_raw(enum_str);
+      return;
+    }
+  };
+  // Fallback to integer if enum value not found
+  atom(b, static_cast>(e));
+#else
+  // Fallback: serialize as integer if reflection not available
+  atom(b, static_cast>(e));
+#endif
+}
+
+// Support for appendable containers that don't have operator[] (sets, etc.)
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &container) {
+  if (container.empty()) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  bool first = true;
+  for (const auto& item : container) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    atom(b, item);
+  }
+  b.append(']');
+}
+
+// append functions that delegate to atom functions for primitive types
+template 
+  requires(std::is_arithmetic_v && !std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+// works for struct
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, z.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// works for container that have begin() and end() iterators
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  auto it = z.begin();
+  auto end = z.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires (require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  b.append(z);
+}
+
+
+template 
+simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+
+template 
+string_builder& operator<<(string_builder& b, const Z& z) {
+  append(b, z);
+  return b;
+}
+
+// extract_from: Serialize only specific fields from a struct to JSON
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+void extract_from(string_builder &b, const T &obj) {
+  // Helper to check if a field name matches any of the requested fields
+  auto should_extract = [](std::string_view field_name) constexpr -> bool {
+    return ((FieldNames.view() == field_name) || ...);
+  };
+
+  b.append('{');
+  bool first = true;
+
+  // Iterate through all members of T using reflection
+  template for (constexpr auto mem : std::define_static_array(
+      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+
+    if constexpr (std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+
+      // Only serialize this field if it's in our list of requested fields
+      if constexpr (should_extract(key)) {
+        if (!first) {
+          b.append(',');
+        }
+        first = false;
+
+        // Serialize the key
+        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
+        b.append_raw(quoted_key);
+        b.append(':');
+
+        // Serialize the value
+        atom(b, obj.[:mem:]);
+      }
+    }
+  };
+
+  b.append('}');
+}
+
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace builder
+} // namespace ppc64
+// Alias the function template to 'to' in the global namespace
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  ppc64::builder::string_builder b(initial_capacity);
+  ppc64::builder::append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  ppc64::builder::string_builder b(initial_capacity);
+  ppc64::builder::append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+// Global namespace function for extract_from
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  ppc64::builder::string_builder b(initial_capacity);
+  ppc64::builder::extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif
+/* end file simdjson/generic/builder/json_builder.h for ppc64 */
+/* including simdjson/generic/builder/fractured_json_builder.h for ppc64: #include "simdjson/generic/builder/fractured_json_builder.h" */
+/* begin file simdjson/generic/builder/fractured_json_builder.h for ppc64 */
+#ifndef SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+#define SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/dom/fractured_json.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_STATIC_REFLECTION
+
+namespace simdjson {
+namespace ppc64 {
+namespace builder {
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ *
+ * FracturedJson produces human-readable yet compact JSON output by intelligently
+ * choosing between different layout strategies (inline, compact multiline, table,
+ * expanded) based on content complexity, length, and structure similarity.
+ *
+ * This function combines the builder's serialization with FracturedJson formatting:
+ * 1. Serializes the object to minified JSON using reflection
+ * 2. Parses and reformats using FracturedJson
+ *
+ * Example:
+ *   struct User { int id; std::string name; bool active; };
+ *   User user{1, "Alice", true};
+ *   auto result = to_fractured_json_string(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\", \"active\": true }"
+ *
+ * @param obj The object to serialize (must be a reflectable type)
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string, or an error
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Serialize to minified JSON
+  std::string formatted;
+  auto error = to_json_string(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ *
+ * Example:
+ *   struct User { int id; std::string name; std::string email; bool active; };
+ *   User user{1, "Alice", "alice@example.com", true};
+ *   auto result = extract_fractured_json<"id", "name">(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\" }"
+ *
+ * @param obj The object to serialize
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string containing only the specified fields
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Extract fields to minified JSON
+  std::string formatted;
+  auto error = extract_from(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+} // namespace builder
+} // namespace ppc64
+
+// Global namespace convenience functions
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ * Global namespace version for convenience.
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return ppc64::builder::to_fractured_json_string(obj, opts, initial_capacity);
+}
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ * Global namespace version for convenience.
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return ppc64::builder::extract_fractured_json(obj, opts, initial_capacity);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif // SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+/* end file simdjson/generic/builder/fractured_json_builder.h for ppc64 */
+
+
+
+// JSON builder inline definitions
+/* including simdjson/generic/builder/json_string_builder-inl.h for ppc64: #include "simdjson/generic/builder/json_string_builder-inl.h" */
+/* begin file simdjson/generic/builder/json_string_builder-inl.h for ppc64 */
+#include 
+#include 
+#include 
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/*
+ * Empirically, we have found that an inlined optimization is important for
+ * performance. The following macros are not ideal. We should find a better
+ * way to inline the code.
+ */
+
+#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
+    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
+     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
+#endif
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
+#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+
+namespace simdjson {
+namespace ppc64 {
+namespace builder {
+
+static SIMDJSON_CONSTEXPR_LAMBDA std::array
+    json_quotable_character = {
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+/**
+
+A possible SWAR implementation of has_json_escapable_byte. It is not used
+because it is slower than the current implementation. It is kept here for
+reference (to show that we tried it).
+
+inline bool has_json_escapable_byte(uint64_t x) {
+  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
+  uint64_t xor2 = x ^ 0x0202020202020202ULL;
+  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
+  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
+  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
+  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
+}
+
+**/
+
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
+simple_needs_escaping(std::string_view v) {
+  for (char c : v) {
+    // a table lookup is faster than a series of comparisons
+    if (json_quotable_character[static_cast(c)]) {
+      return true;
+    }
+  }
+  return false;
+}
+
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  uint8x16_t running = vdupq_n_u8(0);
+  uint8x16_t v34 = vdupq_n_u8(34);
+  uint8x16_t v92 = vdupq_n_u8(92);
+
+  for (; i + 15 < view.size(); i += 16) {
+    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  if (i < view.size()) {
+    uint8x16_t word =
+        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __m128i running = _mm_setzero_si128();
+  for (; i + 15 < view.size(); i += 16) {
+
+    __m128i word =
+        _mm_loadu_si128(reinterpret_cast(view.data() + i));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  if (i < view.size()) {
+    __m128i word = _mm_loadu_si128(
+        reinterpret_cast(view.data() + view.length() - 16));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  return _mm_movemask_epi8(running) != 0;
+}
+#else
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  return simple_needs_escaping(view);
+}
+#endif
+
+// Scalar fallback for finding next quotable character
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character_scalar(const std::string_view view,
+                                         size_t location) noexcept {
+  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
+    if (json_quotable_character[static_cast(*pos)]) {
+      return pos - view.begin();
+    }
+  }
+  return size_t(view.size());
+}
+
+// SIMD-accelerated position finding that directly locates the first quotable
+// character, combining detection and position extraction in a single pass to
+// minimize redundant work.
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  uint8x16_t v34 = vdupq_n_u8(34);  // '"'
+  uint8x16_t v92 = vdupq_n_u8(92);  // '\\'
+  uint8x16_t v32 = vdupq_n_u8(32);  // control char threshold
+
+  while (remaining >= 16) {
+    uint8x16_t word = vld1q_u8(ptr);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    uint8x16_t needs_escape = vceqq_u8(word, v34);
+    needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
+    needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
+
+    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
+      // Found quotable character - extract exact byte position using ctz
+      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
+      uint64_t lo = vgetq_lane_u64(as64, 0);
+      uint64_t hi = vgetq_lane_u64(as64, 1);
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      if (lo != 0) {
+        _BitScanForward64(&trailing_zero, lo);
+        return offset + trailing_zero / 8;
+      } else {
+        _BitScanForward64(&trailing_zero, hi);
+        return offset + 8 + trailing_zero / 8;
+      }
+#else
+      if (lo != 0) {
+        return offset + __builtin_ctzll(lo) / 8;
+      } else {
+        return offset + 8 + __builtin_ctzll(hi) / 8;
+      }
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants
+  __m128i v34 = _mm_set1_epi8(34);  // '"'
+  __m128i v92 = _mm_set1_epi8(92);  // '\\'
+  __m128i v31 = _mm_set1_epi8(31);  // for control char detection
+
+  while (remaining >= 16) {
+    __m128i word = _mm_loadu_si128(reinterpret_cast(ptr));
+
+    // Check for quotable characters
+    __m128i needs_escape = _mm_cmpeq_epi8(word, v34);
+    needs_escape = _mm_or_si128(needs_escape, _mm_cmpeq_epi8(word, v92));
+    needs_escape = _mm_or_si128(
+        needs_escape,
+        _mm_cmpeq_epi8(_mm_subs_epu8(word, v31), _mm_setzero_si128()));
+
+    int mask = _mm_movemask_epi8(needs_escape);
+    if (mask != 0) {
+      // Found quotable character - use trailing zero count to find position
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      _BitScanForward(&trailing_zero, mask);
+      return offset + trailing_zero;
+#else
+      return offset + __builtin_ctz(mask);
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#else
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  return find_next_json_quotable_character_scalar(view, location);
+}
+#endif
+
+SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
+    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
+    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
+    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
+    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
+    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
+
+// All Unicode characters may be placed within the quotation marks, except for
+// the characters that MUST be escaped: quotation mark, reverse solidus, and the
+// control characters (U+0000 through U+001F). There are two-character sequence
+// escape representations of some popular characters:
+// \", \\, \b, \f, \n, \r, \t.
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline void escape_json_char(char c, char *&out) {
+  if (c == '"') {
+    memcpy(out, "\\\"", 2);
+    out += 2;
+  } else if (c == '\\') {
+    memcpy(out, "\\\\", 2);
+    out += 2;
+  } else {
+    std::string_view v = control_chars[uint8_t(c)];
+    memcpy(out, v.data(), v.size());
+    out += v.size();
+  }
+}
+
+// Writes the escaped version of input to out, returning the number of bytes
+// written. Uses SIMD position finding to locate quotable characters efficiently.
+inline size_t write_string_escaped(const std::string_view input, char *out) {
+  size_t mysize = input.size();
+
+  // Use SIMD position finder directly - it returns mysize if no escape needed
+  size_t location = find_next_json_quotable_character(input, 0);
+  if (location == mysize) {
+    // Fast path: no escaping needed
+    memcpy(out, input.data(), input.size());
+    return input.size();
+  }
+
+  const char *const initout = out;
+  memcpy(out, input.data(), location);
+  out += location;
+  escape_json_char(input[location], out);
+  location += 1;
+  while (location < mysize) {
+    size_t newlocation = find_next_json_quotable_character(input, location);
+    memcpy(out, input.data() + location, newlocation - location);
+    out += newlocation - location;
+    location = newlocation;
+    if (location == mysize) {
+      break;
+    }
+    escape_json_char(input[location], out);
+    location += 1;
+  }
+  return out - initout;
+}
+
+simdjson_inline string_builder::string_builder(size_t initial_capacity)
+    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
+      capacity(buffer.get() != nullptr ? initial_capacity : 0),
+      is_valid(buffer.get() != nullptr) {}
+
+simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
+  // We use the convention that when is_valid is false, then the capacity and
+  // the position are 0.
+  // Most of the time, this function will return true.
+  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
+    return true;
+  }
+  // check for overflow, most of the time there is no overflow
+  if (simdjson_unlikely(position + upcoming_bytes < position)) {
+    return false;
+  }
+  // We will rarely get here.
+  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
+  // If the buffer allocation failed, we set is_valid to false.
+  return is_valid;
+}
+
+simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
+  if (!is_valid) {
+    return;
+  }
+  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
+  if (new_buffer.get() == nullptr) {
+    set_valid(false);
+    return;
+  }
+  std::memcpy(new_buffer.get(), buffer.get(), position);
+  buffer.swap(new_buffer);
+  capacity = desired_capacity;
+}
+
+simdjson_inline void string_builder::set_valid(bool valid) noexcept {
+  if (!valid) {
+    is_valid = false;
+    capacity = 0;
+    position = 0;
+    buffer.reset();
+  } else {
+    is_valid = true;
+  }
+}
+
+simdjson_inline size_t string_builder::size() const noexcept {
+  return position;
+}
+
+simdjson_inline void string_builder::append(char c) noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = c;
+  }
+}
+
+simdjson_inline void string_builder::append_null() noexcept {
+  constexpr char null_literal[] = "null";
+  constexpr size_t null_len = sizeof(null_literal) - 1;
+  if (capacity_check(null_len)) {
+    std::memcpy(buffer.get() + position, null_literal, null_len);
+    position += null_len;
+  }
+}
+
+simdjson_inline void string_builder::clear() noexcept {
+  position = 0;
+  // if it was invalid, we should try to repair it
+  if (!is_valid) {
+    capacity = 0;
+    buffer.reset();
+    is_valid = true;
+  }
+}
+
+namespace internal {
+
+template ::value>::type>
+simdjson_really_inline int int_log2(number_type x) {
+  return 63 - leading_zeroes(uint64_t(x) | 1);
+}
+
+simdjson_really_inline int fast_digit_count_32(uint32_t x) {
+  static uint64_t table[] = {
+      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
+      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
+      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
+      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
+      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
+      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
+      42949672960, 42949672960};
+  return uint32_t((x + table[int_log2(x)]) >> 32);
+}
+
+simdjson_really_inline int fast_digit_count_64(uint64_t x) {
+  static uint64_t table[] = {9,
+                             99,
+                             999,
+                             9999,
+                             99999,
+                             999999,
+                             9999999,
+                             99999999,
+                             999999999,
+                             9999999999,
+                             99999999999,
+                             999999999999,
+                             9999999999999,
+                             99999999999999,
+                             999999999999999ULL,
+                             9999999999999999ULL,
+                             99999999999999999ULL,
+                             999999999999999999ULL,
+                             9999999999999999999ULL};
+  int y = (19 * int_log2(x) >> 6);
+  y += x > table[y];
+  return y + 1;
+}
+
+template ::value>::type>
+simdjson_really_inline size_t digit_count(number_type v) noexcept {
+  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
+                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
+                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
+  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
+    return fast_digit_count_32(static_cast(v));
+  }
+  else {
+    return fast_digit_count_64(static_cast(v));
+  }
+}
+static const char decimal_table[200] = {
+    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
+    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
+    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
+    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
+    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
+    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
+    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
+    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
+    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
+    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
+    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
+    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
+    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
+    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
+    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
+    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
+    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
+};
+} // namespace internal
+
+template 
+simdjson_inline void string_builder::append(number_type v) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_integral::value ||
+                    std::is_floating_point::value,
+                "Unsupported number type");
+  // If C++17 is available, we can 'if constexpr' here.
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    if (v) {
+      constexpr char true_literal[] = "true";
+      constexpr size_t true_len = sizeof(true_literal) - 1;
+      if (capacity_check(true_len)) {
+        std::memcpy(buffer.get() + position, true_literal, true_len);
+        position += true_len;
+      }
+    } else {
+      constexpr char false_literal[] = "false";
+      constexpr size_t false_len = sizeof(false_literal) - 1;
+      if (capacity_check(false_len)) {
+        std::memcpy(buffer.get() + position, false_literal, false_len);
+        position += false_len;
+      }
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
+    // Process 4 digits at a time instead of 2, reducing store operations
+    // and divisions by approximately half for large numbers.
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      unsigned_type pv = static_cast(v);
+      size_t dc = internal::digit_count(pv);
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;  // High 2 digits of remainder
+        unsigned_type r_lo = r % 100;  // Low 2 digits of remainder
+        // Write low 2 digits first (rightmost), then high 2 digits
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits with original 2-digit loop
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
+    // Same 4-digit batching as unsigned path for signed integers
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      bool negative = v < 0;
+      unsigned_type pv = static_cast(v);
+      if (negative) {
+        pv = 0 - pv; // the 0 is for Microsoft
+      }
+      size_t dc = internal::digit_count(pv);
+      // by always writing the minus sign, we avoid the branch.
+      buffer.get()[position] = '-';
+      position += negative ? 1 : 0;
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;
+        unsigned_type r_lo = r % 100;
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
+    constexpr size_t max_number_size = 24;
+    if (capacity_check(max_number_size)) {
+      // We could specialize for float.
+      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
+                                               double(v));
+      position = end - buffer.get();
+    }
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(6 * input.size())) {
+    position += write_string_escaped(input, buffer.get() + position);
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * input.size())) {
+    buffer.get()[position++] = '"';
+    position += write_string_escaped(input, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(char input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * 1)) {
+    buffer.get()[position++] = '"';
+    std::string_view cinput(&input, 1);
+    position += write_string_escaped(cinput, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(const char *input) noexcept {
+  std::string_view cinput(input);
+  escape_and_append_with_quotes(cinput);
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
+  escape_and_append_with_quotes(constevalutil::string_constant::value);
+}
+#endif
+
+simdjson_inline void string_builder::append_raw(const char *c) noexcept {
+  size_t len = std::strlen(c);
+  append_raw(c, len);
+}
+
+simdjson_inline void
+string_builder::append_raw(std::string_view input) noexcept {
+  if (capacity_check(input.size())) {
+    std::memcpy(buffer.get() + position, input.data(), input.size());
+    position += input.size();
+  }
+}
+
+simdjson_inline void string_builder::append_raw(const char *str,
+                                                size_t len) noexcept {
+  if (capacity_check(len)) {
+    std::memcpy(buffer.get() + position, str, len);
+    position += len;
+  }
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+simdjson_inline void string_builder::append(const T &opt) {
+  if (opt) {
+    append(*opt);
+  } else {
+    append_null();
+  }
+}
+
+template 
+  requires(require_custom_serialization)
+simdjson_inline void string_builder::append(T &&val) {
+  serialize(*this, std::forward(val));
+}
+
+template 
+  requires(std::is_convertible::value ||
+           std::is_same::value)
+simdjson_inline void string_builder::append(const T &value) {
+  escape_and_append_with_quotes(value);
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+// Support for range-based appending (std::ranges::view, etc.)
+template 
+  requires(!std::is_convertible::value && !require_custom_serialization)
+simdjson_inline void string_builder::append(const R &range) noexcept {
+  auto it = std::ranges::begin(range);
+  auto end = std::ranges::end(range);
+  if constexpr (concepts::is_pair>) {
+    start_object();
+
+    if (it == end) {
+      end_object();
+      return; // Handle empty range
+    }
+    // Append first item without leading comma
+    append_key_value(it->first, it->second);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append_key_value(it->first, it->second);
+    }
+    end_object();
+  } else {
+    start_array();
+    if (it == end) {
+      end_array();
+      return; // Handle empty range
+    }
+
+    // Append first item without leading comma
+    append(*it);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append(*it);
+    }
+    end_array();
+  }
+}
+
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+simdjson_inline string_builder::operator std::string() const noexcept(false) {
+  return std::string(operator std::string_view());
+}
+
+simdjson_inline string_builder::operator std::string_view() const
+    noexcept(false) simdjson_lifetime_bound {
+  return view();
+}
+#endif
+
+simdjson_inline simdjson_result
+string_builder::view() const noexcept {
+  if (!is_valid) {
+    return simdjson::OUT_OF_CAPACITY;
+  }
+  return std::string_view(buffer.get(), position);
+}
+
+simdjson_inline simdjson_result string_builder::c_str() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position] = '\0';
+    return buffer.get();
+  }
+  return simdjson::OUT_OF_CAPACITY;
+}
+
+simdjson_inline bool string_builder::validate_unicode() const noexcept {
+  return simdjson::validate_utf8(buffer.get(), position);
+}
+
+simdjson_inline void string_builder::start_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '{';
+  }
+}
+
+simdjson_inline void string_builder::end_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '}';
+  }
+}
+
+simdjson_inline void string_builder::start_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '[';
+  }
+}
+
+simdjson_inline void string_builder::end_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ']';
+  }
+}
+
+simdjson_inline void string_builder::append_comma() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ',';
+  }
+}
+
+simdjson_inline void string_builder::append_colon() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ':';
+  }
+}
+
+template 
+simdjson_inline void
+string_builder::append_key_value(key_type key, value_type value) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_convertible::value,
+                "Unsupported key type");
+  escape_and_append_with_quotes(key);
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void
+string_builder::append_key_value(value_type value) noexcept {
+  escape_and_append_with_quotes();
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+#endif
+
+} // namespace builder
+} // namespace ppc64
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+/* end file simdjson/generic/builder/json_string_builder-inl.h for ppc64 */
+
+/* end file simdjson/generic/builder/amalgamated.h for ppc64 */
+/* including simdjson/ppc64/end.h: #include "simdjson/ppc64/end.h" */
+/* begin file simdjson/ppc64/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
+/* undefining SIMDJSON_IMPLEMENTATION from "ppc64" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/ppc64/end.h */
+
+#endif // SIMDJSON_PPC64_BUILDER_H
+/* end file simdjson/ppc64/builder.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(westmere)
+/* including simdjson/westmere/builder.h: #include "simdjson/westmere/builder.h" */
+/* begin file simdjson/westmere/builder.h */
+#ifndef SIMDJSON_WESTMERE_BUILDER_H
+#define SIMDJSON_WESTMERE_BUILDER_H
+
+/* including simdjson/westmere/begin.h: #include "simdjson/westmere/begin.h" */
+/* begin file simdjson/westmere/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "westmere" */
+#define SIMDJSON_IMPLEMENTATION westmere
+/* including simdjson/westmere/base.h: #include "simdjson/westmere/base.h" */
+/* begin file simdjson/westmere/base.h */
+#ifndef SIMDJSON_WESTMERE_BASE_H
+#define SIMDJSON_WESTMERE_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_WESTMERE
+namespace simdjson {
+/**
+ * Implementation for Westmere (Intel SSE4.2).
+ */
+namespace westmere {
+
+class implementation;
+
+namespace {
+namespace simd {
+
+template  struct simd8;
+template  struct simd8x64;
+
+} // namespace simd
+} // unnamed namespace
+
+} // namespace westmere
+} // namespace simdjson
+
+#endif // SIMDJSON_WESTMERE_BASE_H
+/* end file simdjson/westmere/base.h */
+/* including simdjson/westmere/intrinsics.h: #include "simdjson/westmere/intrinsics.h" */
+/* begin file simdjson/westmere/intrinsics.h */
+#ifndef SIMDJSON_WESTMERE_INTRINSICS_H
+#define SIMDJSON_WESTMERE_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_VISUAL_STUDIO
+// under clang within visual studio, this will include 
+#include  // visual studio or clang
+#else
+#include  // elsewhere
+#endif // SIMDJSON_VISUAL_STUDIO
+
+
+#if SIMDJSON_CLANG_VISUAL_STUDIO
+/**
+ * You are not supposed, normally, to include these
+ * headers directly. Instead you should either include intrin.h
+ * or x86intrin.h. However, when compiling with clang
+ * under Windows (i.e., when _MSC_VER is set), these headers
+ * only get included *if* the corresponding features are detected
+ * from macros:
+ */
+#include   // for _mm_alignr_epi8
+#include   // for  _mm_clmulepi64_si128
+#endif
+
+static_assert(sizeof(__m128i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for westmere");
+
+#endif // SIMDJSON_WESTMERE_INTRINSICS_H
+/* end file simdjson/westmere/intrinsics.h */
+
+#if !SIMDJSON_CAN_ALWAYS_RUN_WESTMERE
+SIMDJSON_TARGET_REGION("sse4.2,pclmul,popcnt")
+#endif
+
+/* including simdjson/westmere/bitmanipulation.h: #include "simdjson/westmere/bitmanipulation.h" */
+/* begin file simdjson/westmere/bitmanipulation.h */
+#ifndef SIMDJSON_WESTMERE_BITMANIPULATION_H
+#define SIMDJSON_WESTMERE_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace westmere {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long ret;
+  // Search the mask data from least significant bit (LSB)
+  // to the most significant bit (MSB) for a set bit (1).
+  _BitScanForward64(&ret, input_num);
+  return (int)ret;
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO
+  return __builtin_ctzll(input_num);
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return input_num & (input_num-1);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long leading_zero = 0;
+  // Search the mask data from most significant bit (MSB)
+  // to least significant bit (LSB) for a set bit (1).
+  if (_BitScanReverse64(&leading_zero, input_num))
+    return (int)(63 - leading_zero);
+  else
+    return 64;
+#else
+  return __builtin_clzll(input_num);
+#endif// SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+simdjson_inline unsigned __int64 count_ones(uint64_t input_num) {
+  // note: we do not support legacy 32-bit Windows in this kernel
+  return __popcnt64(input_num);// Visual Studio wants two underscores
+}
+#else
+simdjson_inline long long int count_ones(uint64_t input_num) {
+  return _popcnt64(input_num);
+}
+#endif
+
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
+                                uint64_t *result) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  return _addcarry_u64(0, value1, value2,
+                       reinterpret_cast(result));
+#else
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+#endif
+}
+
+} // unnamed namespace
+} // namespace westmere
+} // namespace simdjson
+
+#endif // SIMDJSON_WESTMERE_BITMANIPULATION_H
+/* end file simdjson/westmere/bitmanipulation.h */
+/* including simdjson/westmere/bitmask.h: #include "simdjson/westmere/bitmask.h" */
+/* begin file simdjson/westmere/bitmask.h */
+#ifndef SIMDJSON_WESTMERE_BITMASK_H
+#define SIMDJSON_WESTMERE_BITMASK_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace westmere {
+namespace {
+
+//
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
+//
+// For example, prefix_xor(00100100) == 00011100
+//
+simdjson_inline uint64_t prefix_xor(const uint64_t bitmask) {
+  // There should be no such thing with a processing supporting avx2
+  // but not clmul.
+  __m128i all_ones = _mm_set1_epi8('\xFF');
+  __m128i result = _mm_clmulepi64_si128(_mm_set_epi64x(0ULL, bitmask), all_ones, 0);
+  return _mm_cvtsi128_si64(result);
+}
+
+} // unnamed namespace
+} // namespace westmere
+} // namespace simdjson
+
+#endif // SIMDJSON_WESTMERE_BITMASK_H
+/* end file simdjson/westmere/bitmask.h */
+/* including simdjson/westmere/numberparsing_defs.h: #include "simdjson/westmere/numberparsing_defs.h" */
+/* begin file simdjson/westmere/numberparsing_defs.h */
+#ifndef SIMDJSON_WESTMERE_NUMBERPARSING_DEFS_H
+#define SIMDJSON_WESTMERE_NUMBERPARSING_DEFS_H
+
+/* including simdjson/westmere/base.h: #include "simdjson/westmere/base.h" */
+/* begin file simdjson/westmere/base.h */
+#ifndef SIMDJSON_WESTMERE_BASE_H
+#define SIMDJSON_WESTMERE_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_WESTMERE
+namespace simdjson {
+/**
+ * Implementation for Westmere (Intel SSE4.2).
+ */
+namespace westmere {
+
+class implementation;
+
+namespace {
+namespace simd {
+
+template  struct simd8;
+template  struct simd8x64;
+
+} // namespace simd
+} // unnamed namespace
+
+} // namespace westmere
+} // namespace simdjson
+
+#endif // SIMDJSON_WESTMERE_BASE_H
+/* end file simdjson/westmere/base.h */
+/* including simdjson/westmere/intrinsics.h: #include "simdjson/westmere/intrinsics.h" */
+/* begin file simdjson/westmere/intrinsics.h */
+#ifndef SIMDJSON_WESTMERE_INTRINSICS_H
+#define SIMDJSON_WESTMERE_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_VISUAL_STUDIO
+// under clang within visual studio, this will include 
+#include  // visual studio or clang
+#else
+#include  // elsewhere
+#endif // SIMDJSON_VISUAL_STUDIO
+
+
+#if SIMDJSON_CLANG_VISUAL_STUDIO
+/**
+ * You are not supposed, normally, to include these
+ * headers directly. Instead you should either include intrin.h
+ * or x86intrin.h. However, when compiling with clang
+ * under Windows (i.e., when _MSC_VER is set), these headers
+ * only get included *if* the corresponding features are detected
+ * from macros:
+ */
+#include   // for _mm_alignr_epi8
+#include   // for  _mm_clmulepi64_si128
+#endif
+
+static_assert(sizeof(__m128i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for westmere");
+
+#endif // SIMDJSON_WESTMERE_INTRINSICS_H
+/* end file simdjson/westmere/intrinsics.h */
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace westmere {
+namespace numberparsing {
+
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  // this actually computes *16* values so we are being wasteful.
+  const __m128i ascii0 = _mm_set1_epi8('0');
+  const __m128i mul_1_10 =
+      _mm_setr_epi8(10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1);
+  const __m128i mul_1_100 = _mm_setr_epi16(100, 1, 100, 1, 100, 1, 100, 1);
+  const __m128i mul_1_10000 =
+      _mm_setr_epi16(10000, 1, 10000, 1, 10000, 1, 10000, 1);
+  const __m128i input = _mm_sub_epi8(
+      _mm_loadu_si128(reinterpret_cast(chars)), ascii0);
+  const __m128i t1 = _mm_maddubs_epi16(input, mul_1_10);
+  const __m128i t2 = _mm_madd_epi16(t1, mul_1_100);
+  const __m128i t3 = _mm_packus_epi32(t2, t2);
+  const __m128i t4 = _mm_madd_epi16(t3, mul_1_10000);
+  return _mm_cvtsi128_si32(
+      t4); // only captures the sum of the first 8 digits, drop the rest
+}
+
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+#if SIMDJSON_IS_ARM64
+  // ARM64 has native support for 64-bit multiplications, no need to emultate
+  answer.high = __umulh(value1, value2);
+  answer.low = value1 * value2;
+#else
+  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
+#endif // SIMDJSON_IS_ARM64
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+#endif
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace westmere
+} // namespace simdjson
+
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+
+#endif //  SIMDJSON_WESTMERE_NUMBERPARSING_DEFS_H
+/* end file simdjson/westmere/numberparsing_defs.h */
+/* including simdjson/westmere/simd.h: #include "simdjson/westmere/simd.h" */
+/* begin file simdjson/westmere/simd.h */
+#ifndef SIMDJSON_WESTMERE_SIMD_H
+#define SIMDJSON_WESTMERE_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace westmere {
+namespace {
+namespace simd {
+
+  template
+  struct base {
+    __m128i value;
+
+    // Zero constructor
+    simdjson_inline base() : value{__m128i()} {}
+
+    // Conversion from SIMD register
+    simdjson_inline base(const __m128i _value) : value(_value) {}
+
+    // Conversion to SIMD register
+    simdjson_inline operator const __m128i&() const { return this->value; }
+    simdjson_inline operator __m128i&() { return this->value; }
+
+    // Bit operations
+    simdjson_inline Child operator|(const Child other) const { return _mm_or_si128(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return _mm_and_si128(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return _mm_xor_si128(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return _mm_andnot_si128(other, *this); }
+    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
+
+  template>
+  struct base8: base> {
+    typedef uint16_t bitmask_t;
+    typedef uint32_t bitmask2_t;
+
+    simdjson_inline base8() : base>() {}
+    simdjson_inline base8(const __m128i _value) : base>(_value) {}
+
+    friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return _mm_cmpeq_epi8(lhs, rhs); }
+
+    static const int SIZE = sizeof(base>::value);
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return _mm_alignr_epi8(*this, prev_chunk, 16 - N);
+    }
+  };
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8: base8 {
+    static simdjson_inline simd8 splat(bool _value) { return _mm_set1_epi8(uint8_t(-(!!_value))); }
+
+    simdjson_inline simd8() : base8() {}
+    simdjson_inline simd8(const __m128i _value) : base8(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
+
+    simdjson_inline int to_bitmask() const { return _mm_movemask_epi8(*this); }
+    simdjson_inline bool any() const { return !_mm_testz_si128(*this, *this); }
+    simdjson_inline simd8 operator~() const { return *this ^ true; }
+  };
+
+  template
+  struct base8_numeric: base8 {
+    static simdjson_inline simd8 splat(T _value) { return _mm_set1_epi8(_value); }
+    static simdjson_inline simd8 zero() { return _mm_setzero_si128(); }
+    static simdjson_inline simd8 load(const T values[16]) {
+      return _mm_loadu_si128(reinterpret_cast(values));
+    }
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    static simdjson_inline simd8 repeat_16(
+      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
+      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    simdjson_inline base8_numeric() : base8() {}
+    simdjson_inline base8_numeric(const __m128i _value) : base8(_value) {}
+
+    // Store to array
+    simdjson_inline void store(T dst[16]) const { return _mm_storeu_si128(reinterpret_cast<__m128i *>(dst), *this); }
+
+    // Override to distinguish from bool version
+    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return _mm_add_epi8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return _mm_sub_epi8(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return _mm_shuffle_epi8(lookup_table, *this);
+    }
+
+    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
+    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
+    // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
+    // get written.
+    // Design consideration: it seems like a function with the
+    // signature simd8 compress(uint32_t mask) would be
+    // sensible, but the AVX ISA makes this kind of approach difficult.
+    template
+    simdjson_inline void compress(uint16_t mask, L * output) const {
+      using internal::thintable_epi8;
+      using internal::BitsSetTable256mul2;
+      using internal::pshufb_combine_table;
+      // this particular implementation was inspired by work done by @animetosho
+      // we do it in two steps, first 8 bytes and then second 8 bytes
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
+      // next line just loads the 64-bit values thintable_epi8[mask1] and
+      // thintable_epi8[mask2] into a 128-bit register, using only
+      // two instructions on most compilers.
+      __m128i shufmask =  _mm_set_epi64x(thintable_epi8[mask2], thintable_epi8[mask1]);
+      // we increment by 0x08 the second half of the mask
+      shufmask =
+      _mm_add_epi8(shufmask, _mm_set_epi32(0x08080808, 0x08080808, 0, 0));
+      // this is the version "nearly pruned"
+      __m128i pruned = _mm_shuffle_epi8(*this, shufmask);
+      // we still need to put the two halves together.
+      // we compute the popcount of the first half:
+      int pop1 = BitsSetTable256mul2[mask1];
+      // then load the corresponding mask, what it does is to write
+      // only the first pop1 bytes from the first 8 bytes, and then
+      // it fills in with the bytes from the second 8 bytes + some filling
+      // at the end.
+      __m128i compactmask =
+      _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop1 * 8));
+      __m128i answer = _mm_shuffle_epi8(pruned, compactmask);
+      _mm_storeu_si128(reinterpret_cast<__m128i *>(output), answer);
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 : base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const int8_t* values) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(_mm_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epi8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epi8(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return _mm_cmpgt_epi8(*this, other); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return _mm_cmpgt_epi8(other, *this); }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8: base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const uint8_t* values) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(_mm_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm_adds_epu8(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm_subs_epu8(*this, other); }
+
+    // Order-specific operations
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epu8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epu8(*this, other); }
+    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
+    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
+    simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
+    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+
+    // Bit-specific operations
+    simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
+    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
+    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
+    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
+    simdjson_inline bool is_ascii() const { return _mm_movemask_epi8(*this) == 0; }
+    simdjson_inline bool bits_not_set_anywhere() const { return _mm_testz_si128(*this, *this); }
+    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
+    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return _mm_testz_si128(*this, bits); }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
+    template
+    simdjson_inline simd8 shr() const { return simd8(_mm_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
+    template
+    simdjson_inline simd8 shl() const { return simd8(_mm_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
+    // Get one of the bits and make a bitmask out of it.
+    // e.g. value.get_bit<7>() gets the high bit
+    template
+    simdjson_inline int get_bit() const { return _mm_movemask_epi8(_mm_slli_epi16(*this, 7-N)); }
+  };
+
+  template
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    static_assert(NUM_CHUNKS == 4, "Westmere kernel should use four registers per 64-byte block.");
+    const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
+
+    simdjson_inline void store(T ptr[64]) const {
+      this->chunks[0].store(ptr+sizeof(simd8)*0);
+      this->chunks[1].store(ptr+sizeof(simd8)*1);
+      this->chunks[2].store(ptr+sizeof(simd8)*2);
+      this->chunks[3].store(ptr+sizeof(simd8)*3);
+    }
+
+    simdjson_inline simd8 reduce_or() const {
+      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
+    }
+
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      this->chunks[0].compress(uint16_t(mask), output);
+      this->chunks[1].compress(uint16_t(mask >> 16), output + 16 - count_ones(mask & 0xFFFF));
+      this->chunks[2].compress(uint16_t(mask >> 32), output + 32 - count_ones(mask & 0xFFFFFFFF));
+      this->chunks[3].compress(uint16_t(mask >> 48), output + 48 - count_ones(mask & 0xFFFFFFFFFFFF));
+      return 64 - count_ones(mask);
+    }
+
+    simdjson_inline uint64_t to_bitmask() const {
+      uint64_t r0 = uint32_t(this->chunks[0].to_bitmask() );
+      uint64_t r1 =          this->chunks[1].to_bitmask() ;
+      uint64_t r2 =          this->chunks[2].to_bitmask() ;
+      uint64_t r3 =          this->chunks[3].to_bitmask() ;
+      return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
+    }
+
+    simdjson_inline uint64_t eq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] == mask,
+        this->chunks[1] == mask,
+        this->chunks[2] == mask,
+        this->chunks[3] == mask
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t eq(const simd8x64 &other) const {
+      return  simd8x64(
+        this->chunks[0] == other.chunks[0],
+        this->chunks[1] == other.chunks[1],
+        this->chunks[2] == other.chunks[2],
+        this->chunks[3] == other.chunks[3]
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t lteq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] <= mask,
+        this->chunks[1] <= mask,
+        this->chunks[2] <= mask,
+        this->chunks[3] <= mask
+      ).to_bitmask();
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace westmere
+} // namespace simdjson
+
+#endif // SIMDJSON_WESTMERE_SIMD_INPUT_H
+/* end file simdjson/westmere/simd.h */
+/* including simdjson/westmere/stringparsing_defs.h: #include "simdjson/westmere/stringparsing_defs.h" */
+/* begin file simdjson/westmere/stringparsing_defs.h */
+#ifndef SIMDJSON_WESTMERE_STRINGPARSING_DEFS_H
+#define SIMDJSON_WESTMERE_STRINGPARSING_DEFS_H
+
+/* including simdjson/westmere/bitmanipulation.h: #include "simdjson/westmere/bitmanipulation.h" */
+/* begin file simdjson/westmere/bitmanipulation.h */
+#ifndef SIMDJSON_WESTMERE_BITMANIPULATION_H
+#define SIMDJSON_WESTMERE_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace westmere {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long ret;
+  // Search the mask data from least significant bit (LSB)
+  // to the most significant bit (MSB) for a set bit (1).
+  _BitScanForward64(&ret, input_num);
+  return (int)ret;
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO
+  return __builtin_ctzll(input_num);
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return input_num & (input_num-1);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long leading_zero = 0;
+  // Search the mask data from most significant bit (MSB)
+  // to least significant bit (LSB) for a set bit (1).
+  if (_BitScanReverse64(&leading_zero, input_num))
+    return (int)(63 - leading_zero);
+  else
+    return 64;
+#else
+  return __builtin_clzll(input_num);
+#endif// SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+simdjson_inline unsigned __int64 count_ones(uint64_t input_num) {
+  // note: we do not support legacy 32-bit Windows in this kernel
+  return __popcnt64(input_num);// Visual Studio wants two underscores
+}
+#else
+simdjson_inline long long int count_ones(uint64_t input_num) {
+  return _popcnt64(input_num);
+}
+#endif
+
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
+                                uint64_t *result) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  return _addcarry_u64(0, value1, value2,
+                       reinterpret_cast(result));
+#else
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+#endif
+}
+
+} // unnamed namespace
+} // namespace westmere
+} // namespace simdjson
+
+#endif // SIMDJSON_WESTMERE_BITMANIPULATION_H
+/* end file simdjson/westmere/bitmanipulation.h */
+/* including simdjson/westmere/simd.h: #include "simdjson/westmere/simd.h" */
+/* begin file simdjson/westmere/simd.h */
+#ifndef SIMDJSON_WESTMERE_SIMD_H
+#define SIMDJSON_WESTMERE_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace westmere {
+namespace {
+namespace simd {
+
+  template
+  struct base {
+    __m128i value;
+
+    // Zero constructor
+    simdjson_inline base() : value{__m128i()} {}
+
+    // Conversion from SIMD register
+    simdjson_inline base(const __m128i _value) : value(_value) {}
+
+    // Conversion to SIMD register
+    simdjson_inline operator const __m128i&() const { return this->value; }
+    simdjson_inline operator __m128i&() { return this->value; }
+
+    // Bit operations
+    simdjson_inline Child operator|(const Child other) const { return _mm_or_si128(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return _mm_and_si128(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return _mm_xor_si128(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return _mm_andnot_si128(other, *this); }
+    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
+
+  template>
+  struct base8: base> {
+    typedef uint16_t bitmask_t;
+    typedef uint32_t bitmask2_t;
+
+    simdjson_inline base8() : base>() {}
+    simdjson_inline base8(const __m128i _value) : base>(_value) {}
+
+    friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return _mm_cmpeq_epi8(lhs, rhs); }
+
+    static const int SIZE = sizeof(base>::value);
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return _mm_alignr_epi8(*this, prev_chunk, 16 - N);
+    }
+  };
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8: base8 {
+    static simdjson_inline simd8 splat(bool _value) { return _mm_set1_epi8(uint8_t(-(!!_value))); }
+
+    simdjson_inline simd8() : base8() {}
+    simdjson_inline simd8(const __m128i _value) : base8(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
+
+    simdjson_inline int to_bitmask() const { return _mm_movemask_epi8(*this); }
+    simdjson_inline bool any() const { return !_mm_testz_si128(*this, *this); }
+    simdjson_inline simd8 operator~() const { return *this ^ true; }
+  };
+
+  template
+  struct base8_numeric: base8 {
+    static simdjson_inline simd8 splat(T _value) { return _mm_set1_epi8(_value); }
+    static simdjson_inline simd8 zero() { return _mm_setzero_si128(); }
+    static simdjson_inline simd8 load(const T values[16]) {
+      return _mm_loadu_si128(reinterpret_cast(values));
+    }
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    static simdjson_inline simd8 repeat_16(
+      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
+      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    simdjson_inline base8_numeric() : base8() {}
+    simdjson_inline base8_numeric(const __m128i _value) : base8(_value) {}
+
+    // Store to array
+    simdjson_inline void store(T dst[16]) const { return _mm_storeu_si128(reinterpret_cast<__m128i *>(dst), *this); }
+
+    // Override to distinguish from bool version
+    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return _mm_add_epi8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return _mm_sub_epi8(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return _mm_shuffle_epi8(lookup_table, *this);
+    }
+
+    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
+    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
+    // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
+    // get written.
+    // Design consideration: it seems like a function with the
+    // signature simd8 compress(uint32_t mask) would be
+    // sensible, but the AVX ISA makes this kind of approach difficult.
+    template
+    simdjson_inline void compress(uint16_t mask, L * output) const {
+      using internal::thintable_epi8;
+      using internal::BitsSetTable256mul2;
+      using internal::pshufb_combine_table;
+      // this particular implementation was inspired by work done by @animetosho
+      // we do it in two steps, first 8 bytes and then second 8 bytes
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
+      // next line just loads the 64-bit values thintable_epi8[mask1] and
+      // thintable_epi8[mask2] into a 128-bit register, using only
+      // two instructions on most compilers.
+      __m128i shufmask =  _mm_set_epi64x(thintable_epi8[mask2], thintable_epi8[mask1]);
+      // we increment by 0x08 the second half of the mask
+      shufmask =
+      _mm_add_epi8(shufmask, _mm_set_epi32(0x08080808, 0x08080808, 0, 0));
+      // this is the version "nearly pruned"
+      __m128i pruned = _mm_shuffle_epi8(*this, shufmask);
+      // we still need to put the two halves together.
+      // we compute the popcount of the first half:
+      int pop1 = BitsSetTable256mul2[mask1];
+      // then load the corresponding mask, what it does is to write
+      // only the first pop1 bytes from the first 8 bytes, and then
+      // it fills in with the bytes from the second 8 bytes + some filling
+      // at the end.
+      __m128i compactmask =
+      _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop1 * 8));
+      __m128i answer = _mm_shuffle_epi8(pruned, compactmask);
+      _mm_storeu_si128(reinterpret_cast<__m128i *>(output), answer);
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 : base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const int8_t* values) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(_mm_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epi8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epi8(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return _mm_cmpgt_epi8(*this, other); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return _mm_cmpgt_epi8(other, *this); }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8: base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const uint8_t* values) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(_mm_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm_adds_epu8(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm_subs_epu8(*this, other); }
+
+    // Order-specific operations
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epu8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epu8(*this, other); }
+    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
+    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
+    simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
+    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+
+    // Bit-specific operations
+    simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
+    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
+    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
+    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
+    simdjson_inline bool is_ascii() const { return _mm_movemask_epi8(*this) == 0; }
+    simdjson_inline bool bits_not_set_anywhere() const { return _mm_testz_si128(*this, *this); }
+    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
+    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return _mm_testz_si128(*this, bits); }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
+    template
+    simdjson_inline simd8 shr() const { return simd8(_mm_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
+    template
+    simdjson_inline simd8 shl() const { return simd8(_mm_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
+    // Get one of the bits and make a bitmask out of it.
+    // e.g. value.get_bit<7>() gets the high bit
+    template
+    simdjson_inline int get_bit() const { return _mm_movemask_epi8(_mm_slli_epi16(*this, 7-N)); }
+  };
+
+  template
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    static_assert(NUM_CHUNKS == 4, "Westmere kernel should use four registers per 64-byte block.");
+    const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
+
+    simdjson_inline void store(T ptr[64]) const {
+      this->chunks[0].store(ptr+sizeof(simd8)*0);
+      this->chunks[1].store(ptr+sizeof(simd8)*1);
+      this->chunks[2].store(ptr+sizeof(simd8)*2);
+      this->chunks[3].store(ptr+sizeof(simd8)*3);
+    }
+
+    simdjson_inline simd8 reduce_or() const {
+      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
+    }
+
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      this->chunks[0].compress(uint16_t(mask), output);
+      this->chunks[1].compress(uint16_t(mask >> 16), output + 16 - count_ones(mask & 0xFFFF));
+      this->chunks[2].compress(uint16_t(mask >> 32), output + 32 - count_ones(mask & 0xFFFFFFFF));
+      this->chunks[3].compress(uint16_t(mask >> 48), output + 48 - count_ones(mask & 0xFFFFFFFFFFFF));
+      return 64 - count_ones(mask);
+    }
+
+    simdjson_inline uint64_t to_bitmask() const {
+      uint64_t r0 = uint32_t(this->chunks[0].to_bitmask() );
+      uint64_t r1 =          this->chunks[1].to_bitmask() ;
+      uint64_t r2 =          this->chunks[2].to_bitmask() ;
+      uint64_t r3 =          this->chunks[3].to_bitmask() ;
+      return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
+    }
+
+    simdjson_inline uint64_t eq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] == mask,
+        this->chunks[1] == mask,
+        this->chunks[2] == mask,
+        this->chunks[3] == mask
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t eq(const simd8x64 &other) const {
+      return  simd8x64(
+        this->chunks[0] == other.chunks[0],
+        this->chunks[1] == other.chunks[1],
+        this->chunks[2] == other.chunks[2],
+        this->chunks[3] == other.chunks[3]
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t lteq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] <= mask,
+        this->chunks[1] <= mask,
+        this->chunks[2] <= mask,
+        this->chunks[3] <= mask
+      ).to_bitmask();
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace westmere
+} // namespace simdjson
+
+#endif // SIMDJSON_WESTMERE_SIMD_INPUT_H
+/* end file simdjson/westmere/simd.h */
+
+namespace simdjson {
+namespace westmere {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 32;
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
+  simdjson_inline bool has_backslash() { return bs_bits != 0; }
+  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
+  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
+
+  uint32_t bs_bits;
+  uint32_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // this can read up to 31 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v0(src);
+  simd8 v1(src + 16);
+  v0.store(dst);
+  v1.store(dst + 16);
+  uint64_t bs_and_quote = simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
+  return {
+    uint32_t(bs_and_quote),      // bs_bits
+    uint32_t(bs_and_quote >> 32) // quote_bits
+  };
+}
+
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 16;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits); }
+
+  uint64_t escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  simd8 is_quote = (v == '"');
+  simd8 is_backslash = (v == '\\');
+  simd8 is_control = (v < 32);
+  return {
+    uint64_t((is_backslash | is_quote | is_control).to_bitmask())
+  };
+}
+
+} // unnamed namespace
+} // namespace westmere
+} // namespace simdjson
+
+#endif // SIMDJSON_WESTMERE_STRINGPARSING_DEFS_H
+/* end file simdjson/westmere/stringparsing_defs.h */
+/* end file simdjson/westmere/begin.h */
+/* including simdjson/generic/builder/amalgamated.h for westmere: #include "simdjson/generic/builder/amalgamated.h" */
+/* begin file simdjson/generic/builder/amalgamated.h for westmere */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
+#error simdjson/generic/builder/dependencies.h must be included before simdjson/generic/builder/amalgamated.h!
+#endif
+
+/* including simdjson/generic/builder/json_string_builder.h for westmere: #include "simdjson/generic/builder/json_string_builder.h" */
+/* begin file simdjson/generic/builder/json_string_builder.h for westmere */
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace westmere {
+namespace builder {
+  class string_builder;
+}}
+
+template 
+struct has_custom_serialization : std::false_type {};
+
+inline constexpr struct serialize_tag {
+  template 
+  constexpr void operator()(westmere::builder::string_builder& b, T&& obj) const{
+    return tag_invoke(*this, b, std::forward(obj));
+  }
+
+
+} serialize{};
+template 
+struct has_custom_serialization(), std::declval()))
+>> : std::true_type {};
+
+template 
+constexpr bool require_custom_serialization = has_custom_serialization::value;
+#else
+struct has_custom_serialization : std::false_type {};
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace westmere {
+namespace builder {
+/**
+ * A builder for JSON strings representing documents. This is a low-level
+ * builder that is not meant to be used directly by end-users. Though it
+ * supports atomic types (Booleans, strings), it does not support composed
+ * types (arrays and objects).
+ *
+ * Ultimately, this class can support kernel-specific optimizations. E.g.,
+ * it may make use of SIMD instructions to escape strings faster.
+ */
+class string_builder {
+public:
+  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
+
+  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
+
+  /**
+   * Append number (includes Booleans). Booleans are mapped to the strings
+   * false and true. Numbers are converted to strings abiding by the JSON standard.
+   * Floating-point numbers are converted to the shortest string that 'correctly'
+   * represents the number.
+   */
+  template::value>::type>
+  simdjson_inline void append(number_type v) noexcept;
+
+  /**
+   * Append character c.
+   */
+  simdjson_inline void append(char c)  noexcept;
+
+  /**
+   * Append the string 'null'.
+   */
+  simdjson_inline void append_null()  noexcept;
+
+  /**
+   * Clear the content.
+   */
+  simdjson_inline void clear()  noexcept;
+
+  /**
+   * Append the std::string_view, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
+
+  /**
+   * Append the std::string_view surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void escape_and_append_with_quotes()  noexcept;
+#endif
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
+
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
+
+  /**
+   * Append the C string directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *c)  noexcept;
+
+  /**
+   * Append "{" to the buffer.
+   */
+  simdjson_inline void start_object()  noexcept;
+
+  /**
+   * Append "}" to the buffer.
+   */
+  simdjson_inline void end_object()  noexcept;
+
+  /**
+   * Append "[" to the buffer.
+   */
+  simdjson_inline void start_array()  noexcept;
+
+  /**
+   * Append "]" to the buffer.
+   */
+  simdjson_inline void end_array()  noexcept;
+
+  /**
+   * Append "," to the buffer.
+   */
+  simdjson_inline void append_comma()  noexcept;
+
+  /**
+   * Append ":" to the buffer.
+   */
+  simdjson_inline void append_colon()  noexcept;
+
+  /**
+   * Append a key-value pair to the buffer.
+   * The key is escaped and surrounded by double quotes.
+   * The value is escaped if it is a string.
+   */
+  template
+  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void append_key_value(value_type value) noexcept;
+
+  // Support for optional types (std::optional, etc.)
+  template 
+  requires(!require_custom_serialization)
+  simdjson_inline void append(const T &opt);
+
+  template 
+  requires(require_custom_serialization)
+  simdjson_inline void append(T &&val);
+
+  // Support for string-like types
+  template 
+  requires(std::is_convertible::value ||
+  std::is_same::value )
+  simdjson_inline void append(const T &value);
+#endif
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+  // Support for range-based appending (std::ranges::view, etc.)
+  template 
+requires (!std::is_convertible::value && !require_custom_serialization)
+  simdjson_inline void append(const R &range) noexcept;
+#endif
+  /**
+   * Append the std::string_view directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(std::string_view input)  noexcept;
+
+  /**
+   * Append len characters from str.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
+#if SIMDJSON_EXCEPTIONS
+  /**
+   * Creates an std::string from the written JSON buffer.
+   * Throws if memory allocation failed
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string() const noexcept(false);
+
+  /**
+   * Creates an std::string_view from the written JSON buffer.
+   * Throws if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
+#endif
+
+  /**
+   * Returns a view on the written JSON buffer. Returns an error
+   * if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result view() const noexcept;
+
+  /**
+   * Appends the null character to the buffer and returns
+   * a pointer to the beginning of the written JSON buffer.
+   * Returns an error if memory allocation failed.
+   * The result is null-terminated.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result c_str() noexcept;
+
+  /**
+   * Return true if the content is valid UTF-8.
+   */
+  simdjson_inline bool validate_unicode() const noexcept;
+
+  /**
+   * Returns the current size of the written JSON buffer.
+   * If an error occurred, returns 0.
+   */
+  simdjson_inline size_t size() const noexcept;
+
+private:
+  /**
+   * Returns true if we can write at least upcoming_bytes bytes.
+   * The underlying buffer is reallocated if needed. It is designed
+   * to be called before writing to the buffer. It should be fast.
+   */
+  simdjson_inline bool capacity_check(size_t upcoming_bytes);
+
+  /**
+   * Grow the buffer to at least desired_capacity bytes.
+   * If the allocation fails, is_valid is set to false. We expect
+   * that this function would not be repeatedly called.
+   */
+  simdjson_inline void grow_buffer(size_t desired_capacity);
+
+  /**
+   * We use this helper function to make sure that is_valid is kept consistent.
+   */
+  simdjson_inline void set_valid(bool valid) noexcept;
+
+  std::unique_ptr buffer{};
+  size_t position{0};
+  size_t capacity{0};
+  bool is_valid{true};
+};
+
+
+
+}
+}
+
+
+#if !SIMDJSON_STATIC_REFLECTION
+// fallback implementation until we have static reflection
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::westmere::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view s;
+  auto e = b.view().get(s);
+  if(e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::westmere::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view sv;
+  auto e = b.view().get(sv);
+  if(e) { return e; }
+  s.assign(sv.data(), sv.size());
+  return simdjson::SUCCESS;
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
+/* end file simdjson/generic/builder/json_string_builder.h for westmere */
+/* including simdjson/generic/builder/json_builder.h for westmere: #include "simdjson/generic/builder/json_builder.h" */
+/* begin file simdjson/generic/builder/json_builder.h for westmere */
+#ifndef SIMDJSON_GENERIC_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#if SIMDJSON_STATIC_REFLECTION
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+// #include  // for std::define_static_string - header not available yet
+
+namespace simdjson {
+namespace westmere {
+namespace builder {
+
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  auto it = t.begin();
+  auto end = t.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+constexpr void atom(string_builder &b, const T &t) {
+  b.escape_and_append_with_quotes(t);
+}
+
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &m) {
+  if (m.empty()) {
+    b.append_raw("{}");
+    return;
+  }
+  b.append('{');
+  bool first = true;
+  for (const auto& [key, value] : m) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    // Keys must be convertible to string_view per the concept
+    b.escape_and_append_with_quotes(key);
+    b.append(':');
+    atom(b, value);
+  }
+  b.append('}');
+}
+
+
+template::value && !std::is_same_v>::type>
+constexpr void atom(string_builder &b, const number_type t) {
+  b.append(t);
+}
+
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, t.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &opt) {
+  if (opt) {
+    atom(b, opt.value());
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &ptr) {
+  if (ptr) {
+    atom(b, *ptr);
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for enums - serialize as string representation using expand approach from P2996R12
+template 
+  requires(std::is_enum_v && !require_custom_serialization)
+void atom(string_builder &b, const T &e) {
+#if SIMDJSON_STATIC_REFLECTION
+  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
+  template for (constexpr auto enum_val : enumerators) {
+    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
+    if (e == [:enum_val:]) {
+      b.append_raw(enum_str);
+      return;
+    }
+  };
+  // Fallback to integer if enum value not found
+  atom(b, static_cast>(e));
+#else
+  // Fallback: serialize as integer if reflection not available
+  atom(b, static_cast>(e));
+#endif
+}
+
+// Support for appendable containers that don't have operator[] (sets, etc.)
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &container) {
+  if (container.empty()) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  bool first = true;
+  for (const auto& item : container) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    atom(b, item);
+  }
+  b.append(']');
+}
+
+// append functions that delegate to atom functions for primitive types
+template 
+  requires(std::is_arithmetic_v && !std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+// works for struct
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, z.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// works for container that have begin() and end() iterators
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  auto it = z.begin();
+  auto end = z.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires (require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  b.append(z);
+}
+
+
+template 
+simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+
+template 
+string_builder& operator<<(string_builder& b, const Z& z) {
+  append(b, z);
+  return b;
+}
+
+// extract_from: Serialize only specific fields from a struct to JSON
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+void extract_from(string_builder &b, const T &obj) {
+  // Helper to check if a field name matches any of the requested fields
+  auto should_extract = [](std::string_view field_name) constexpr -> bool {
+    return ((FieldNames.view() == field_name) || ...);
+  };
+
+  b.append('{');
+  bool first = true;
+
+  // Iterate through all members of T using reflection
+  template for (constexpr auto mem : std::define_static_array(
+      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+
+    if constexpr (std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+
+      // Only serialize this field if it's in our list of requested fields
+      if constexpr (should_extract(key)) {
+        if (!first) {
+          b.append(',');
+        }
+        first = false;
+
+        // Serialize the key
+        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
+        b.append_raw(quoted_key);
+        b.append(':');
+
+        // Serialize the value
+        atom(b, obj.[:mem:]);
+      }
+    }
+  };
+
+  b.append('}');
+}
+
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace builder
+} // namespace westmere
+// Alias the function template to 'to' in the global namespace
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  westmere::builder::string_builder b(initial_capacity);
+  westmere::builder::append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  westmere::builder::string_builder b(initial_capacity);
+  westmere::builder::append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+// Global namespace function for extract_from
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  westmere::builder::string_builder b(initial_capacity);
+  westmere::builder::extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif
+/* end file simdjson/generic/builder/json_builder.h for westmere */
+/* including simdjson/generic/builder/fractured_json_builder.h for westmere: #include "simdjson/generic/builder/fractured_json_builder.h" */
+/* begin file simdjson/generic/builder/fractured_json_builder.h for westmere */
+#ifndef SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+#define SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/dom/fractured_json.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_STATIC_REFLECTION
+
+namespace simdjson {
+namespace westmere {
+namespace builder {
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ *
+ * FracturedJson produces human-readable yet compact JSON output by intelligently
+ * choosing between different layout strategies (inline, compact multiline, table,
+ * expanded) based on content complexity, length, and structure similarity.
+ *
+ * This function combines the builder's serialization with FracturedJson formatting:
+ * 1. Serializes the object to minified JSON using reflection
+ * 2. Parses and reformats using FracturedJson
+ *
+ * Example:
+ *   struct User { int id; std::string name; bool active; };
+ *   User user{1, "Alice", true};
+ *   auto result = to_fractured_json_string(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\", \"active\": true }"
+ *
+ * @param obj The object to serialize (must be a reflectable type)
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string, or an error
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Serialize to minified JSON
+  std::string formatted;
+  auto error = to_json_string(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ *
+ * Example:
+ *   struct User { int id; std::string name; std::string email; bool active; };
+ *   User user{1, "Alice", "alice@example.com", true};
+ *   auto result = extract_fractured_json<"id", "name">(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\" }"
+ *
+ * @param obj The object to serialize
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string containing only the specified fields
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Extract fields to minified JSON
+  std::string formatted;
+  auto error = extract_from(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+} // namespace builder
+} // namespace westmere
+
+// Global namespace convenience functions
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ * Global namespace version for convenience.
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return westmere::builder::to_fractured_json_string(obj, opts, initial_capacity);
+}
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ * Global namespace version for convenience.
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return westmere::builder::extract_fractured_json(obj, opts, initial_capacity);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif // SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+/* end file simdjson/generic/builder/fractured_json_builder.h for westmere */
+
+
+
+// JSON builder inline definitions
+/* including simdjson/generic/builder/json_string_builder-inl.h for westmere: #include "simdjson/generic/builder/json_string_builder-inl.h" */
+/* begin file simdjson/generic/builder/json_string_builder-inl.h for westmere */
+#include 
+#include 
+#include 
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/*
+ * Empirically, we have found that an inlined optimization is important for
+ * performance. The following macros are not ideal. We should find a better
+ * way to inline the code.
+ */
+
+#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
+    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
+     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
+#endif
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
+#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+
+namespace simdjson {
+namespace westmere {
+namespace builder {
+
+static SIMDJSON_CONSTEXPR_LAMBDA std::array
+    json_quotable_character = {
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+/**
+
+A possible SWAR implementation of has_json_escapable_byte. It is not used
+because it is slower than the current implementation. It is kept here for
+reference (to show that we tried it).
+
+inline bool has_json_escapable_byte(uint64_t x) {
+  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
+  uint64_t xor2 = x ^ 0x0202020202020202ULL;
+  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
+  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
+  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
+  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
+}
+
+**/
+
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
+simple_needs_escaping(std::string_view v) {
+  for (char c : v) {
+    // a table lookup is faster than a series of comparisons
+    if (json_quotable_character[static_cast(c)]) {
+      return true;
+    }
+  }
+  return false;
+}
+
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  uint8x16_t running = vdupq_n_u8(0);
+  uint8x16_t v34 = vdupq_n_u8(34);
+  uint8x16_t v92 = vdupq_n_u8(92);
+
+  for (; i + 15 < view.size(); i += 16) {
+    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  if (i < view.size()) {
+    uint8x16_t word =
+        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __m128i running = _mm_setzero_si128();
+  for (; i + 15 < view.size(); i += 16) {
+
+    __m128i word =
+        _mm_loadu_si128(reinterpret_cast(view.data() + i));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  if (i < view.size()) {
+    __m128i word = _mm_loadu_si128(
+        reinterpret_cast(view.data() + view.length() - 16));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  return _mm_movemask_epi8(running) != 0;
+}
+#else
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  return simple_needs_escaping(view);
+}
+#endif
+
+// Scalar fallback for finding next quotable character
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character_scalar(const std::string_view view,
+                                         size_t location) noexcept {
+  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
+    if (json_quotable_character[static_cast(*pos)]) {
+      return pos - view.begin();
+    }
+  }
+  return size_t(view.size());
+}
+
+// SIMD-accelerated position finding that directly locates the first quotable
+// character, combining detection and position extraction in a single pass to
+// minimize redundant work.
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  uint8x16_t v34 = vdupq_n_u8(34);  // '"'
+  uint8x16_t v92 = vdupq_n_u8(92);  // '\\'
+  uint8x16_t v32 = vdupq_n_u8(32);  // control char threshold
+
+  while (remaining >= 16) {
+    uint8x16_t word = vld1q_u8(ptr);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    uint8x16_t needs_escape = vceqq_u8(word, v34);
+    needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
+    needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
+
+    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
+      // Found quotable character - extract exact byte position using ctz
+      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
+      uint64_t lo = vgetq_lane_u64(as64, 0);
+      uint64_t hi = vgetq_lane_u64(as64, 1);
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      if (lo != 0) {
+        _BitScanForward64(&trailing_zero, lo);
+        return offset + trailing_zero / 8;
+      } else {
+        _BitScanForward64(&trailing_zero, hi);
+        return offset + 8 + trailing_zero / 8;
+      }
+#else
+      if (lo != 0) {
+        return offset + __builtin_ctzll(lo) / 8;
+      } else {
+        return offset + 8 + __builtin_ctzll(hi) / 8;
+      }
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants
+  __m128i v34 = _mm_set1_epi8(34);  // '"'
+  __m128i v92 = _mm_set1_epi8(92);  // '\\'
+  __m128i v31 = _mm_set1_epi8(31);  // for control char detection
+
+  while (remaining >= 16) {
+    __m128i word = _mm_loadu_si128(reinterpret_cast(ptr));
+
+    // Check for quotable characters
+    __m128i needs_escape = _mm_cmpeq_epi8(word, v34);
+    needs_escape = _mm_or_si128(needs_escape, _mm_cmpeq_epi8(word, v92));
+    needs_escape = _mm_or_si128(
+        needs_escape,
+        _mm_cmpeq_epi8(_mm_subs_epu8(word, v31), _mm_setzero_si128()));
+
+    int mask = _mm_movemask_epi8(needs_escape);
+    if (mask != 0) {
+      // Found quotable character - use trailing zero count to find position
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      _BitScanForward(&trailing_zero, mask);
+      return offset + trailing_zero;
+#else
+      return offset + __builtin_ctz(mask);
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#else
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  return find_next_json_quotable_character_scalar(view, location);
+}
+#endif
+
+SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
+    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
+    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
+    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
+    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
+    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
+
+// All Unicode characters may be placed within the quotation marks, except for
+// the characters that MUST be escaped: quotation mark, reverse solidus, and the
+// control characters (U+0000 through U+001F). There are two-character sequence
+// escape representations of some popular characters:
+// \", \\, \b, \f, \n, \r, \t.
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline void escape_json_char(char c, char *&out) {
+  if (c == '"') {
+    memcpy(out, "\\\"", 2);
+    out += 2;
+  } else if (c == '\\') {
+    memcpy(out, "\\\\", 2);
+    out += 2;
+  } else {
+    std::string_view v = control_chars[uint8_t(c)];
+    memcpy(out, v.data(), v.size());
+    out += v.size();
+  }
+}
+
+// Writes the escaped version of input to out, returning the number of bytes
+// written. Uses SIMD position finding to locate quotable characters efficiently.
+inline size_t write_string_escaped(const std::string_view input, char *out) {
+  size_t mysize = input.size();
+
+  // Use SIMD position finder directly - it returns mysize if no escape needed
+  size_t location = find_next_json_quotable_character(input, 0);
+  if (location == mysize) {
+    // Fast path: no escaping needed
+    memcpy(out, input.data(), input.size());
+    return input.size();
+  }
+
+  const char *const initout = out;
+  memcpy(out, input.data(), location);
+  out += location;
+  escape_json_char(input[location], out);
+  location += 1;
+  while (location < mysize) {
+    size_t newlocation = find_next_json_quotable_character(input, location);
+    memcpy(out, input.data() + location, newlocation - location);
+    out += newlocation - location;
+    location = newlocation;
+    if (location == mysize) {
+      break;
+    }
+    escape_json_char(input[location], out);
+    location += 1;
+  }
+  return out - initout;
+}
+
+simdjson_inline string_builder::string_builder(size_t initial_capacity)
+    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
+      capacity(buffer.get() != nullptr ? initial_capacity : 0),
+      is_valid(buffer.get() != nullptr) {}
+
+simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
+  // We use the convention that when is_valid is false, then the capacity and
+  // the position are 0.
+  // Most of the time, this function will return true.
+  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
+    return true;
+  }
+  // check for overflow, most of the time there is no overflow
+  if (simdjson_unlikely(position + upcoming_bytes < position)) {
+    return false;
+  }
+  // We will rarely get here.
+  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
+  // If the buffer allocation failed, we set is_valid to false.
+  return is_valid;
+}
+
+simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
+  if (!is_valid) {
+    return;
+  }
+  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
+  if (new_buffer.get() == nullptr) {
+    set_valid(false);
+    return;
+  }
+  std::memcpy(new_buffer.get(), buffer.get(), position);
+  buffer.swap(new_buffer);
+  capacity = desired_capacity;
+}
+
+simdjson_inline void string_builder::set_valid(bool valid) noexcept {
+  if (!valid) {
+    is_valid = false;
+    capacity = 0;
+    position = 0;
+    buffer.reset();
+  } else {
+    is_valid = true;
+  }
+}
+
+simdjson_inline size_t string_builder::size() const noexcept {
+  return position;
+}
+
+simdjson_inline void string_builder::append(char c) noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = c;
+  }
+}
+
+simdjson_inline void string_builder::append_null() noexcept {
+  constexpr char null_literal[] = "null";
+  constexpr size_t null_len = sizeof(null_literal) - 1;
+  if (capacity_check(null_len)) {
+    std::memcpy(buffer.get() + position, null_literal, null_len);
+    position += null_len;
+  }
+}
+
+simdjson_inline void string_builder::clear() noexcept {
+  position = 0;
+  // if it was invalid, we should try to repair it
+  if (!is_valid) {
+    capacity = 0;
+    buffer.reset();
+    is_valid = true;
+  }
+}
+
+namespace internal {
+
+template ::value>::type>
+simdjson_really_inline int int_log2(number_type x) {
+  return 63 - leading_zeroes(uint64_t(x) | 1);
+}
+
+simdjson_really_inline int fast_digit_count_32(uint32_t x) {
+  static uint64_t table[] = {
+      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
+      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
+      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
+      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
+      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
+      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
+      42949672960, 42949672960};
+  return uint32_t((x + table[int_log2(x)]) >> 32);
+}
+
+simdjson_really_inline int fast_digit_count_64(uint64_t x) {
+  static uint64_t table[] = {9,
+                             99,
+                             999,
+                             9999,
+                             99999,
+                             999999,
+                             9999999,
+                             99999999,
+                             999999999,
+                             9999999999,
+                             99999999999,
+                             999999999999,
+                             9999999999999,
+                             99999999999999,
+                             999999999999999ULL,
+                             9999999999999999ULL,
+                             99999999999999999ULL,
+                             999999999999999999ULL,
+                             9999999999999999999ULL};
+  int y = (19 * int_log2(x) >> 6);
+  y += x > table[y];
+  return y + 1;
+}
+
+template ::value>::type>
+simdjson_really_inline size_t digit_count(number_type v) noexcept {
+  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
+                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
+                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
+  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
+    return fast_digit_count_32(static_cast(v));
+  }
+  else {
+    return fast_digit_count_64(static_cast(v));
+  }
+}
+static const char decimal_table[200] = {
+    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
+    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
+    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
+    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
+    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
+    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
+    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
+    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
+    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
+    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
+    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
+    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
+    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
+    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
+    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
+    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
+    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
+};
+} // namespace internal
+
+template 
+simdjson_inline void string_builder::append(number_type v) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_integral::value ||
+                    std::is_floating_point::value,
+                "Unsupported number type");
+  // If C++17 is available, we can 'if constexpr' here.
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    if (v) {
+      constexpr char true_literal[] = "true";
+      constexpr size_t true_len = sizeof(true_literal) - 1;
+      if (capacity_check(true_len)) {
+        std::memcpy(buffer.get() + position, true_literal, true_len);
+        position += true_len;
+      }
+    } else {
+      constexpr char false_literal[] = "false";
+      constexpr size_t false_len = sizeof(false_literal) - 1;
+      if (capacity_check(false_len)) {
+        std::memcpy(buffer.get() + position, false_literal, false_len);
+        position += false_len;
+      }
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
+    // Process 4 digits at a time instead of 2, reducing store operations
+    // and divisions by approximately half for large numbers.
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      unsigned_type pv = static_cast(v);
+      size_t dc = internal::digit_count(pv);
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;  // High 2 digits of remainder
+        unsigned_type r_lo = r % 100;  // Low 2 digits of remainder
+        // Write low 2 digits first (rightmost), then high 2 digits
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits with original 2-digit loop
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
+    // Same 4-digit batching as unsigned path for signed integers
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      bool negative = v < 0;
+      unsigned_type pv = static_cast(v);
+      if (negative) {
+        pv = 0 - pv; // the 0 is for Microsoft
+      }
+      size_t dc = internal::digit_count(pv);
+      // by always writing the minus sign, we avoid the branch.
+      buffer.get()[position] = '-';
+      position += negative ? 1 : 0;
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;
+        unsigned_type r_lo = r % 100;
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
+    constexpr size_t max_number_size = 24;
+    if (capacity_check(max_number_size)) {
+      // We could specialize for float.
+      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
+                                               double(v));
+      position = end - buffer.get();
+    }
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(6 * input.size())) {
+    position += write_string_escaped(input, buffer.get() + position);
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * input.size())) {
+    buffer.get()[position++] = '"';
+    position += write_string_escaped(input, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(char input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * 1)) {
+    buffer.get()[position++] = '"';
+    std::string_view cinput(&input, 1);
+    position += write_string_escaped(cinput, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(const char *input) noexcept {
+  std::string_view cinput(input);
+  escape_and_append_with_quotes(cinput);
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
+  escape_and_append_with_quotes(constevalutil::string_constant::value);
+}
+#endif
+
+simdjson_inline void string_builder::append_raw(const char *c) noexcept {
+  size_t len = std::strlen(c);
+  append_raw(c, len);
+}
+
+simdjson_inline void
+string_builder::append_raw(std::string_view input) noexcept {
+  if (capacity_check(input.size())) {
+    std::memcpy(buffer.get() + position, input.data(), input.size());
+    position += input.size();
+  }
+}
+
+simdjson_inline void string_builder::append_raw(const char *str,
+                                                size_t len) noexcept {
+  if (capacity_check(len)) {
+    std::memcpy(buffer.get() + position, str, len);
+    position += len;
+  }
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+simdjson_inline void string_builder::append(const T &opt) {
+  if (opt) {
+    append(*opt);
+  } else {
+    append_null();
+  }
+}
+
+template 
+  requires(require_custom_serialization)
+simdjson_inline void string_builder::append(T &&val) {
+  serialize(*this, std::forward(val));
+}
+
+template 
+  requires(std::is_convertible::value ||
+           std::is_same::value)
+simdjson_inline void string_builder::append(const T &value) {
+  escape_and_append_with_quotes(value);
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+// Support for range-based appending (std::ranges::view, etc.)
+template 
+  requires(!std::is_convertible::value && !require_custom_serialization)
+simdjson_inline void string_builder::append(const R &range) noexcept {
+  auto it = std::ranges::begin(range);
+  auto end = std::ranges::end(range);
+  if constexpr (concepts::is_pair>) {
+    start_object();
+
+    if (it == end) {
+      end_object();
+      return; // Handle empty range
+    }
+    // Append first item without leading comma
+    append_key_value(it->first, it->second);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append_key_value(it->first, it->second);
+    }
+    end_object();
+  } else {
+    start_array();
+    if (it == end) {
+      end_array();
+      return; // Handle empty range
+    }
+
+    // Append first item without leading comma
+    append(*it);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append(*it);
+    }
+    end_array();
+  }
+}
+
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+simdjson_inline string_builder::operator std::string() const noexcept(false) {
+  return std::string(operator std::string_view());
+}
+
+simdjson_inline string_builder::operator std::string_view() const
+    noexcept(false) simdjson_lifetime_bound {
+  return view();
+}
+#endif
+
+simdjson_inline simdjson_result
+string_builder::view() const noexcept {
+  if (!is_valid) {
+    return simdjson::OUT_OF_CAPACITY;
+  }
+  return std::string_view(buffer.get(), position);
+}
+
+simdjson_inline simdjson_result string_builder::c_str() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position] = '\0';
+    return buffer.get();
+  }
+  return simdjson::OUT_OF_CAPACITY;
+}
+
+simdjson_inline bool string_builder::validate_unicode() const noexcept {
+  return simdjson::validate_utf8(buffer.get(), position);
+}
+
+simdjson_inline void string_builder::start_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '{';
+  }
+}
+
+simdjson_inline void string_builder::end_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '}';
+  }
+}
+
+simdjson_inline void string_builder::start_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '[';
+  }
+}
+
+simdjson_inline void string_builder::end_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ']';
+  }
+}
+
+simdjson_inline void string_builder::append_comma() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ',';
+  }
+}
+
+simdjson_inline void string_builder::append_colon() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ':';
+  }
+}
+
+template 
+simdjson_inline void
+string_builder::append_key_value(key_type key, value_type value) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_convertible::value,
+                "Unsupported key type");
+  escape_and_append_with_quotes(key);
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void
+string_builder::append_key_value(value_type value) noexcept {
+  escape_and_append_with_quotes();
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+#endif
+
+} // namespace builder
+} // namespace westmere
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+/* end file simdjson/generic/builder/json_string_builder-inl.h for westmere */
+
+/* end file simdjson/generic/builder/amalgamated.h for westmere */
+/* including simdjson/westmere/end.h: #include "simdjson/westmere/end.h" */
+/* begin file simdjson/westmere/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if !SIMDJSON_CAN_ALWAYS_RUN_WESTMERE
+SIMDJSON_UNTARGET_REGION
+#endif
+
+/* undefining SIMDJSON_IMPLEMENTATION from "westmere" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/westmere/end.h */
+
+#endif // SIMDJSON_WESTMERE_BUILDER_H
+/* end file simdjson/westmere/builder.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(lsx)
+/* including simdjson/lsx/builder.h: #include "simdjson/lsx/builder.h" */
+/* begin file simdjson/lsx/builder.h */
+#ifndef SIMDJSON_LSX_BUILDER_H
+#define SIMDJSON_LSX_BUILDER_H
+
+/* including simdjson/lsx/begin.h: #include "simdjson/lsx/begin.h" */
+/* begin file simdjson/lsx/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "lsx" */
+#define SIMDJSON_IMPLEMENTATION lsx
+/* including simdjson/lsx/base.h: #include "simdjson/lsx/base.h" */
+/* begin file simdjson/lsx/base.h */
+#ifndef SIMDJSON_LSX_BASE_H
+#define SIMDJSON_LSX_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+/**
+ * Implementation for LSX.
+ */
+namespace lsx {
+
+class implementation;
+
+namespace {
+namespace simd {
+template  struct simd8;
+template  struct simd8x64;
+} // namespace simd
+} // unnamed namespace
+
+} // namespace lsx
+} // namespace simdjson
+
+#endif // SIMDJSON_LSX_BASE_H
+/* end file simdjson/lsx/base.h */
+/* including simdjson/lsx/intrinsics.h: #include "simdjson/lsx/intrinsics.h" */
+/* begin file simdjson/lsx/intrinsics.h */
+#ifndef SIMDJSON_LSX_INTRINSICS_H
+#define SIMDJSON_LSX_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+static_assert(sizeof(__m128i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for LoongArch SX");
+
+#endif //  SIMDJSON_LSX_INTRINSICS_H
+/* end file simdjson/lsx/intrinsics.h */
+/* including simdjson/lsx/bitmanipulation.h: #include "simdjson/lsx/bitmanipulation.h" */
+/* begin file simdjson/lsx/bitmanipulation.h */
+#ifndef SIMDJSON_LSX_BITMANIPULATION_H
+#define SIMDJSON_LSX_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmask.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace lsx {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+  return __builtin_ctzll(input_num);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return input_num & (input_num-1);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+  return __builtin_clzll(input_num);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int count_ones(uint64_t input_num) {
+  return __lsx_vpickve2gr_w(__lsx_vpcnt_d(__m128i(v2u64{input_num, 0})), 0);
+}
+
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+}
+
+} // unnamed namespace
+} // namespace lsx
+} // namespace simdjson
+
+#endif // SIMDJSON_LSX_BITMANIPULATION_H
+/* end file simdjson/lsx/bitmanipulation.h */
+/* including simdjson/lsx/bitmask.h: #include "simdjson/lsx/bitmask.h" */
+/* begin file simdjson/lsx/bitmask.h */
+#ifndef SIMDJSON_LSX_BITMASK_H
+#define SIMDJSON_LSX_BITMASK_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace lsx {
+namespace {
+
+//
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
+//
+// For example, prefix_xor(00100100) == 00011100
+//
+simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
+  bitmask ^= bitmask << 1;
+  bitmask ^= bitmask << 2;
+  bitmask ^= bitmask << 4;
+  bitmask ^= bitmask << 8;
+  bitmask ^= bitmask << 16;
+  bitmask ^= bitmask << 32;
+  return bitmask;
+}
+
+} // unnamed namespace
+} // namespace lsx
+} // namespace simdjson
+
+#endif
+/* end file simdjson/lsx/bitmask.h */
+/* including simdjson/lsx/numberparsing_defs.h: #include "simdjson/lsx/numberparsing_defs.h" */
+/* begin file simdjson/lsx/numberparsing_defs.h */
+#ifndef SIMDJSON_LSX_NUMBERPARSING_DEFS_H
+#define SIMDJSON_LSX_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+namespace simdjson {
+namespace lsx {
+namespace numberparsing {
+
+// we don't have appropriate instructions, so let us use a scalar function
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  uint64_t val;
+  std::memcpy(&val, chars, sizeof(uint64_t));
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+}
+
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace lsx
+} // namespace simdjson
+
+#ifndef SIMDJSON_SWAR_NUMBER_PARSING
+#if SIMDJSON_IS_BIG_ENDIAN
+#define SIMDJSON_SWAR_NUMBER_PARSING 0
+#else
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+#endif
+#endif
+
+#endif // SIMDJSON_LSX_NUMBERPARSING_DEFS_H
+/* end file simdjson/lsx/numberparsing_defs.h */
+/* including simdjson/lsx/simd.h: #include "simdjson/lsx/simd.h" */
+/* begin file simdjson/lsx/simd.h */
+#ifndef SIMDJSON_LSX_SIMD_H
+#define SIMDJSON_LSX_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace lsx {
+namespace {
+namespace simd {
+
+  // Forward-declared so they can be used by splat and friends.
+  template
+  struct base {
+    __m128i value;
+
+    // Zero constructor
+    simdjson_inline base() : value{__m128i()} {}
+
+    // Conversion from SIMD register
+    simdjson_inline base(const __m128i _value) : value(_value) {}
+
+    // Conversion to SIMD register
+    simdjson_inline operator const __m128i&() const { return this->value; }
+    simdjson_inline operator __m128i&() { return this->value; }
+    simdjson_inline operator const v16i8&() const { return (v16i8&)this->value; }
+    simdjson_inline operator v16i8&() { return (v16i8&)this->value; }
+
+    // Bit operations
+    simdjson_inline Child operator|(const Child other) const { return __lsx_vor_v(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return __lsx_vand_v(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return __lsx_vxor_v(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return __lsx_vandn_v(other, *this); }
+    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
+
+  // Forward-declared so they can be used by splat and friends.
+  template
+  struct simd8;
+
+  template>
+  struct base8: base> {
+    simdjson_inline base8() : base>() {}
+    simdjson_inline base8(const __m128i _value) : base>(_value) {}
+
+    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return __lsx_vseq_b(lhs, rhs); }
+
+    static const int SIZE = sizeof(base>::value);
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return __lsx_vor_v(__lsx_vbsll_v(*this, N), __lsx_vbsrl_v(prev_chunk, 16 - N));
+    }
+  };
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8: base8 {
+    static simdjson_inline simd8 splat(bool _value) {
+      return __lsx_vreplgr2vr_b(uint8_t(-(!!_value)));
+    }
+
+    simdjson_inline simd8() : base8() {}
+    simdjson_inline simd8(const __m128i _value) : base8(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
+
+    simdjson_inline int to_bitmask() const { return __lsx_vpickve2gr_w(__lsx_vmskltz_b(*this), 0); }
+    simdjson_inline bool any() const { return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(*this), 0); }
+    simdjson_inline simd8 operator~() const { return *this ^ true; }
+  };
+
+  template
+  struct base8_numeric: base8 {
+    static simdjson_inline simd8 splat(T _value) { return __lsx_vreplgr2vr_b(_value); }
+    static simdjson_inline simd8 zero() { return __lsx_vldi(0); }
+    static simdjson_inline simd8 load(const T values[16]) {
+      return __lsx_vld(reinterpret_cast(values), 0);
+    }
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    static simdjson_inline simd8 repeat_16(
+      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
+      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    simdjson_inline base8_numeric() : base8() {}
+    simdjson_inline base8_numeric(const __m128i _value) : base8(_value) {}
+
+    // Store to array
+    simdjson_inline void store(T dst[16]) const {
+      return __lsx_vst(*this, reinterpret_cast<__m128i *>(dst), 0);
+    }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return __lsx_vadd_b(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __lsx_vsub_b(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
+
+    // Override to distinguish from bool version
+    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return __lsx_vshuf_b(lookup_table, lookup_table, *this);
+    }
+
+    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
+    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
+    // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
+    // get written.
+    template
+    simdjson_inline void compress(uint16_t mask, L * output) const {
+      using internal::thintable_epi8;
+      using internal::BitsSetTable256mul2;
+      using internal::pshufb_combine_table;
+      // this particular implementation was inspired by haswell
+      // lsx do it in 2 steps, first 8 bytes and then second 8 bytes...
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // second least significant 8 bits
+      // next line just loads the 64-bit values thintable_epi8[mask1] and
+      // thintable_epi8[mask2] into a 128-bit register.
+      __m128i shufmask = {int64_t(thintable_epi8[mask1]), int64_t(thintable_epi8[mask2]) + 0x0808080808080808};
+      // this is the version "nearly pruned"
+      __m128i pruned = __lsx_vshuf_b(*this, *this, shufmask);
+      // we still need to put the  pieces back together.
+      // we compute the popcount of the first words:
+      int pop1 = BitsSetTable256mul2[mask1];
+      // then load the corresponding mask
+      __m128i compactmask = __lsx_vldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop1 * 8);
+      __m128i answer = __lsx_vshuf_b(pruned, pruned, compactmask);
+      __lsx_vst(answer, reinterpret_cast(output), 0);
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 : base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const int8_t values[16]) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8({
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+      }) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lsx_vmax_b(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lsx_vmin_b(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return __lsx_vslt_b(other, *this); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return __lsx_vslt_b(*this, other); }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8: base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const uint8_t values[16]) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(__m128i(v16u8{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    })) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return __lsx_vsadd_bu(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __lsx_vssub_bu(*this, other); }
+
+    // Order-specific operations
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lsx_vmax_bu(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lsx_vmin_bu(other, *this); }
+    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
+    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
+    simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
+    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return this->lt_bits(other).any_bits_set(); }
+
+    // Bit-specific operations
+    simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
+    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
+    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
+    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
+    simdjson_inline bool is_ascii() const { return 0 == __lsx_vpickve2gr_w(__lsx_vmskltz_b(*this), 0); }
+    simdjson_inline bool bits_not_set_anywhere() const { return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(*this), 0); }
+    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
+    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const {
+      return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(__lsx_vand_v(*this, bits)), 0);
+    }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
+    template
+    simdjson_inline simd8 shr() const { return simd8(__lsx_vsrli_b(*this, N)); }
+    template
+    simdjson_inline simd8 shl() const { return simd8(__lsx_vslli_b(*this, N)); }
+  };
+
+  template
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    static_assert(NUM_CHUNKS == 4, "LSX kernel should use four registers per 64-byte block.");
+    const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
+
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      uint16_t mask1 = uint16_t(mask);
+      uint16_t mask2 = uint16_t(mask >> 16);
+      uint16_t mask3 = uint16_t(mask >> 32);
+      uint16_t mask4 = uint16_t(mask >> 48);
+      __m128i zcnt = __lsx_vpcnt_h(__m128i(v2u64{~mask, 0}));
+      uint64_t zcnt1 = __lsx_vpickve2gr_hu(zcnt, 0);
+      uint64_t zcnt2 = __lsx_vpickve2gr_hu(zcnt, 1);
+      uint64_t zcnt3 = __lsx_vpickve2gr_hu(zcnt, 2);
+      uint64_t zcnt4 = __lsx_vpickve2gr_hu(zcnt, 3);
+      uint8_t *voutput = reinterpret_cast(output);
+      // There should be a critical value which processes in scaler is faster.
+      if (zcnt1)
+        this->chunks[0].compress(mask1, reinterpret_cast(voutput));
+      voutput += zcnt1;
+      if (zcnt2)
+        this->chunks[1].compress(mask2, reinterpret_cast(voutput));
+      voutput += zcnt2;
+      if (zcnt3)
+        this->chunks[2].compress(mask3, reinterpret_cast(voutput));
+      voutput += zcnt3;
+      if (zcnt4)
+        this->chunks[3].compress(mask4, reinterpret_cast(voutput));
+      voutput += zcnt4;
+      return reinterpret_cast(voutput) - reinterpret_cast(output);
+    }
+
+    simdjson_inline void store(T ptr[64]) const {
+      this->chunks[0].store(ptr+sizeof(simd8)*0);
+      this->chunks[1].store(ptr+sizeof(simd8)*1);
+      this->chunks[2].store(ptr+sizeof(simd8)*2);
+      this->chunks[3].store(ptr+sizeof(simd8)*3);
+    }
+
+    simdjson_inline uint64_t to_bitmask() const {
+      __m128i mask1 = __lsx_vmskltz_b(this->chunks[0]);
+      __m128i mask2 = __lsx_vmskltz_b(this->chunks[1]);
+      __m128i mask3 = __lsx_vmskltz_b(this->chunks[2]);
+      __m128i mask4 = __lsx_vmskltz_b(this->chunks[3]);
+      mask1 = __lsx_vilvl_h(mask2, mask1);
+      mask2 = __lsx_vilvl_h(mask4, mask3);
+      return __lsx_vpickve2gr_du(__lsx_vilvl_w(mask2, mask1), 0);
+    }
+
+    simdjson_inline simd8 reduce_or() const {
+      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
+    }
+
+    simdjson_inline uint64_t eq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] == mask,
+        this->chunks[1] == mask,
+        this->chunks[2] == mask,
+        this->chunks[3] == mask
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t eq(const simd8x64 &other) const {
+      return  simd8x64(
+        this->chunks[0] == other.chunks[0],
+        this->chunks[1] == other.chunks[1],
+        this->chunks[2] == other.chunks[2],
+        this->chunks[3] == other.chunks[3]
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t lteq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] <= mask,
+        this->chunks[1] <= mask,
+        this->chunks[2] <= mask,
+        this->chunks[3] <= mask
+      ).to_bitmask();
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace lsx
+} // namespace simdjson
+
+#endif // SIMDJSON_LSX_SIMD_H
+/* end file simdjson/lsx/simd.h */
+/* including simdjson/lsx/stringparsing_defs.h: #include "simdjson/lsx/stringparsing_defs.h" */
+/* begin file simdjson/lsx/stringparsing_defs.h */
+#ifndef SIMDJSON_LSX_STRINGPARSING_DEFS_H
+#define SIMDJSON_LSX_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace lsx {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 32;
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
+  simdjson_inline bool has_backslash() { return bs_bits != 0; }
+  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
+  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
+
+  uint32_t bs_bits;
+  uint32_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // this can read up to 31 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v0(src);
+  simd8 v1(src + sizeof(v0));
+  v0.store(dst);
+  v1.store(dst + sizeof(v0));
+
+  // Getting a 64-bit bitmask is much cheaper than multiple 16-bit bitmasks on LSX; therefore, we
+  // smash them together into a 64-byte mask and get the bitmask from there.
+  uint64_t bs_and_quote = simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
+  return {
+    uint32_t(bs_and_quote),      // bs_bits
+    uint32_t(bs_and_quote >> 32) // quote_bits
+  };
+}
+
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 16;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits); }
+
+  uint64_t escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  simd8 is_quote = (v == '"');
+  simd8 is_backslash = (v == '\\');
+  simd8 is_control = (v < 32);
+  return {
+    static_cast((is_backslash | is_quote | is_control).to_bitmask())
+  };
+}
+
+} // unnamed namespace
+} // namespace lsx
+} // namespace simdjson
+
+#endif // SIMDJSON_LSX_STRINGPARSING_DEFS_H
+/* end file simdjson/lsx/stringparsing_defs.h */
+
+#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
+/* end file simdjson/lsx/begin.h */
+/* including simdjson/generic/builder/amalgamated.h for lsx: #include "simdjson/generic/builder/amalgamated.h" */
+/* begin file simdjson/generic/builder/amalgamated.h for lsx */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
+#error simdjson/generic/builder/dependencies.h must be included before simdjson/generic/builder/amalgamated.h!
+#endif
+
+/* including simdjson/generic/builder/json_string_builder.h for lsx: #include "simdjson/generic/builder/json_string_builder.h" */
+/* begin file simdjson/generic/builder/json_string_builder.h for lsx */
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace lsx {
+namespace builder {
+  class string_builder;
+}}
+
+template 
+struct has_custom_serialization : std::false_type {};
+
+inline constexpr struct serialize_tag {
+  template 
+  constexpr void operator()(lsx::builder::string_builder& b, T&& obj) const{
+    return tag_invoke(*this, b, std::forward(obj));
+  }
+
+
+} serialize{};
+template 
+struct has_custom_serialization(), std::declval()))
+>> : std::true_type {};
+
+template 
+constexpr bool require_custom_serialization = has_custom_serialization::value;
+#else
+struct has_custom_serialization : std::false_type {};
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace lsx {
+namespace builder {
+/**
+ * A builder for JSON strings representing documents. This is a low-level
+ * builder that is not meant to be used directly by end-users. Though it
+ * supports atomic types (Booleans, strings), it does not support composed
+ * types (arrays and objects).
+ *
+ * Ultimately, this class can support kernel-specific optimizations. E.g.,
+ * it may make use of SIMD instructions to escape strings faster.
+ */
+class string_builder {
+public:
+  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
+
+  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
+
+  /**
+   * Append number (includes Booleans). Booleans are mapped to the strings
+   * false and true. Numbers are converted to strings abiding by the JSON standard.
+   * Floating-point numbers are converted to the shortest string that 'correctly'
+   * represents the number.
+   */
+  template::value>::type>
+  simdjson_inline void append(number_type v) noexcept;
+
+  /**
+   * Append character c.
+   */
+  simdjson_inline void append(char c)  noexcept;
+
+  /**
+   * Append the string 'null'.
+   */
+  simdjson_inline void append_null()  noexcept;
+
+  /**
+   * Clear the content.
+   */
+  simdjson_inline void clear()  noexcept;
+
+  /**
+   * Append the std::string_view, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
+
+  /**
+   * Append the std::string_view surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void escape_and_append_with_quotes()  noexcept;
+#endif
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
+
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
+
+  /**
+   * Append the C string directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *c)  noexcept;
+
+  /**
+   * Append "{" to the buffer.
+   */
+  simdjson_inline void start_object()  noexcept;
+
+  /**
+   * Append "}" to the buffer.
+   */
+  simdjson_inline void end_object()  noexcept;
+
+  /**
+   * Append "[" to the buffer.
+   */
+  simdjson_inline void start_array()  noexcept;
+
+  /**
+   * Append "]" to the buffer.
+   */
+  simdjson_inline void end_array()  noexcept;
+
+  /**
+   * Append "," to the buffer.
+   */
+  simdjson_inline void append_comma()  noexcept;
+
+  /**
+   * Append ":" to the buffer.
+   */
+  simdjson_inline void append_colon()  noexcept;
+
+  /**
+   * Append a key-value pair to the buffer.
+   * The key is escaped and surrounded by double quotes.
+   * The value is escaped if it is a string.
+   */
+  template
+  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void append_key_value(value_type value) noexcept;
+
+  // Support for optional types (std::optional, etc.)
+  template 
+  requires(!require_custom_serialization)
+  simdjson_inline void append(const T &opt);
+
+  template 
+  requires(require_custom_serialization)
+  simdjson_inline void append(T &&val);
+
+  // Support for string-like types
+  template 
+  requires(std::is_convertible::value ||
+  std::is_same::value )
+  simdjson_inline void append(const T &value);
+#endif
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+  // Support for range-based appending (std::ranges::view, etc.)
+  template 
+requires (!std::is_convertible::value && !require_custom_serialization)
+  simdjson_inline void append(const R &range) noexcept;
+#endif
+  /**
+   * Append the std::string_view directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(std::string_view input)  noexcept;
+
+  /**
+   * Append len characters from str.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
+#if SIMDJSON_EXCEPTIONS
+  /**
+   * Creates an std::string from the written JSON buffer.
+   * Throws if memory allocation failed
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string() const noexcept(false);
+
+  /**
+   * Creates an std::string_view from the written JSON buffer.
+   * Throws if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
+#endif
+
+  /**
+   * Returns a view on the written JSON buffer. Returns an error
+   * if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result view() const noexcept;
+
+  /**
+   * Appends the null character to the buffer and returns
+   * a pointer to the beginning of the written JSON buffer.
+   * Returns an error if memory allocation failed.
+   * The result is null-terminated.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result c_str() noexcept;
+
+  /**
+   * Return true if the content is valid UTF-8.
+   */
+  simdjson_inline bool validate_unicode() const noexcept;
+
+  /**
+   * Returns the current size of the written JSON buffer.
+   * If an error occurred, returns 0.
+   */
+  simdjson_inline size_t size() const noexcept;
+
+private:
+  /**
+   * Returns true if we can write at least upcoming_bytes bytes.
+   * The underlying buffer is reallocated if needed. It is designed
+   * to be called before writing to the buffer. It should be fast.
+   */
+  simdjson_inline bool capacity_check(size_t upcoming_bytes);
+
+  /**
+   * Grow the buffer to at least desired_capacity bytes.
+   * If the allocation fails, is_valid is set to false. We expect
+   * that this function would not be repeatedly called.
+   */
+  simdjson_inline void grow_buffer(size_t desired_capacity);
+
+  /**
+   * We use this helper function to make sure that is_valid is kept consistent.
+   */
+  simdjson_inline void set_valid(bool valid) noexcept;
+
+  std::unique_ptr buffer{};
+  size_t position{0};
+  size_t capacity{0};
+  bool is_valid{true};
+};
+
+
+
+}
+}
+
+
+#if !SIMDJSON_STATIC_REFLECTION
+// fallback implementation until we have static reflection
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::lsx::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view s;
+  auto e = b.view().get(s);
+  if(e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::lsx::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view sv;
+  auto e = b.view().get(sv);
+  if(e) { return e; }
+  s.assign(sv.data(), sv.size());
+  return simdjson::SUCCESS;
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
+/* end file simdjson/generic/builder/json_string_builder.h for lsx */
+/* including simdjson/generic/builder/json_builder.h for lsx: #include "simdjson/generic/builder/json_builder.h" */
+/* begin file simdjson/generic/builder/json_builder.h for lsx */
+#ifndef SIMDJSON_GENERIC_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#if SIMDJSON_STATIC_REFLECTION
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+// #include  // for std::define_static_string - header not available yet
+
+namespace simdjson {
+namespace lsx {
+namespace builder {
+
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  auto it = t.begin();
+  auto end = t.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+constexpr void atom(string_builder &b, const T &t) {
+  b.escape_and_append_with_quotes(t);
+}
+
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &m) {
+  if (m.empty()) {
+    b.append_raw("{}");
+    return;
+  }
+  b.append('{');
+  bool first = true;
+  for (const auto& [key, value] : m) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    // Keys must be convertible to string_view per the concept
+    b.escape_and_append_with_quotes(key);
+    b.append(':');
+    atom(b, value);
+  }
+  b.append('}');
+}
+
+
+template::value && !std::is_same_v>::type>
+constexpr void atom(string_builder &b, const number_type t) {
+  b.append(t);
+}
+
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, t.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &opt) {
+  if (opt) {
+    atom(b, opt.value());
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &ptr) {
+  if (ptr) {
+    atom(b, *ptr);
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for enums - serialize as string representation using expand approach from P2996R12
+template 
+  requires(std::is_enum_v && !require_custom_serialization)
+void atom(string_builder &b, const T &e) {
+#if SIMDJSON_STATIC_REFLECTION
+  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
+  template for (constexpr auto enum_val : enumerators) {
+    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
+    if (e == [:enum_val:]) {
+      b.append_raw(enum_str);
+      return;
+    }
+  };
+  // Fallback to integer if enum value not found
+  atom(b, static_cast>(e));
+#else
+  // Fallback: serialize as integer if reflection not available
+  atom(b, static_cast>(e));
+#endif
+}
+
+// Support for appendable containers that don't have operator[] (sets, etc.)
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &container) {
+  if (container.empty()) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  bool first = true;
+  for (const auto& item : container) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    atom(b, item);
+  }
+  b.append(']');
+}
+
+// append functions that delegate to atom functions for primitive types
+template 
+  requires(std::is_arithmetic_v && !std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+// works for struct
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, z.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// works for container that have begin() and end() iterators
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  auto it = z.begin();
+  auto end = z.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires (require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  b.append(z);
+}
+
+
+template 
+simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+
+template 
+string_builder& operator<<(string_builder& b, const Z& z) {
+  append(b, z);
+  return b;
+}
+
+// extract_from: Serialize only specific fields from a struct to JSON
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+void extract_from(string_builder &b, const T &obj) {
+  // Helper to check if a field name matches any of the requested fields
+  auto should_extract = [](std::string_view field_name) constexpr -> bool {
+    return ((FieldNames.view() == field_name) || ...);
+  };
+
+  b.append('{');
+  bool first = true;
+
+  // Iterate through all members of T using reflection
+  template for (constexpr auto mem : std::define_static_array(
+      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+
+    if constexpr (std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+
+      // Only serialize this field if it's in our list of requested fields
+      if constexpr (should_extract(key)) {
+        if (!first) {
+          b.append(',');
+        }
+        first = false;
+
+        // Serialize the key
+        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
+        b.append_raw(quoted_key);
+        b.append(':');
+
+        // Serialize the value
+        atom(b, obj.[:mem:]);
+      }
+    }
+  };
+
+  b.append('}');
+}
+
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace builder
+} // namespace lsx
+// Alias the function template to 'to' in the global namespace
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  lsx::builder::string_builder b(initial_capacity);
+  lsx::builder::append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  lsx::builder::string_builder b(initial_capacity);
+  lsx::builder::append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+// Global namespace function for extract_from
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  lsx::builder::string_builder b(initial_capacity);
+  lsx::builder::extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif
+/* end file simdjson/generic/builder/json_builder.h for lsx */
+/* including simdjson/generic/builder/fractured_json_builder.h for lsx: #include "simdjson/generic/builder/fractured_json_builder.h" */
+/* begin file simdjson/generic/builder/fractured_json_builder.h for lsx */
+#ifndef SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+#define SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/dom/fractured_json.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_STATIC_REFLECTION
+
+namespace simdjson {
+namespace lsx {
+namespace builder {
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ *
+ * FracturedJson produces human-readable yet compact JSON output by intelligently
+ * choosing between different layout strategies (inline, compact multiline, table,
+ * expanded) based on content complexity, length, and structure similarity.
+ *
+ * This function combines the builder's serialization with FracturedJson formatting:
+ * 1. Serializes the object to minified JSON using reflection
+ * 2. Parses and reformats using FracturedJson
+ *
+ * Example:
+ *   struct User { int id; std::string name; bool active; };
+ *   User user{1, "Alice", true};
+ *   auto result = to_fractured_json_string(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\", \"active\": true }"
+ *
+ * @param obj The object to serialize (must be a reflectable type)
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string, or an error
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Serialize to minified JSON
+  std::string formatted;
+  auto error = to_json_string(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ *
+ * Example:
+ *   struct User { int id; std::string name; std::string email; bool active; };
+ *   User user{1, "Alice", "alice@example.com", true};
+ *   auto result = extract_fractured_json<"id", "name">(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\" }"
+ *
+ * @param obj The object to serialize
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string containing only the specified fields
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Extract fields to minified JSON
+  std::string formatted;
+  auto error = extract_from(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+} // namespace builder
+} // namespace lsx
+
+// Global namespace convenience functions
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ * Global namespace version for convenience.
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return lsx::builder::to_fractured_json_string(obj, opts, initial_capacity);
+}
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ * Global namespace version for convenience.
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return lsx::builder::extract_fractured_json(obj, opts, initial_capacity);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif // SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+/* end file simdjson/generic/builder/fractured_json_builder.h for lsx */
+
+
+
+// JSON builder inline definitions
+/* including simdjson/generic/builder/json_string_builder-inl.h for lsx: #include "simdjson/generic/builder/json_string_builder-inl.h" */
+/* begin file simdjson/generic/builder/json_string_builder-inl.h for lsx */
+#include 
+#include 
+#include 
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/*
+ * Empirically, we have found that an inlined optimization is important for
+ * performance. The following macros are not ideal. We should find a better
+ * way to inline the code.
+ */
+
+#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
+    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
+     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
+#endif
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
+#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+
+namespace simdjson {
+namespace lsx {
+namespace builder {
+
+static SIMDJSON_CONSTEXPR_LAMBDA std::array
+    json_quotable_character = {
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+/**
+
+A possible SWAR implementation of has_json_escapable_byte. It is not used
+because it is slower than the current implementation. It is kept here for
+reference (to show that we tried it).
+
+inline bool has_json_escapable_byte(uint64_t x) {
+  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
+  uint64_t xor2 = x ^ 0x0202020202020202ULL;
+  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
+  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
+  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
+  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
+}
+
+**/
+
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
+simple_needs_escaping(std::string_view v) {
+  for (char c : v) {
+    // a table lookup is faster than a series of comparisons
+    if (json_quotable_character[static_cast(c)]) {
+      return true;
+    }
+  }
+  return false;
+}
+
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  uint8x16_t running = vdupq_n_u8(0);
+  uint8x16_t v34 = vdupq_n_u8(34);
+  uint8x16_t v92 = vdupq_n_u8(92);
+
+  for (; i + 15 < view.size(); i += 16) {
+    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  if (i < view.size()) {
+    uint8x16_t word =
+        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __m128i running = _mm_setzero_si128();
+  for (; i + 15 < view.size(); i += 16) {
+
+    __m128i word =
+        _mm_loadu_si128(reinterpret_cast(view.data() + i));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  if (i < view.size()) {
+    __m128i word = _mm_loadu_si128(
+        reinterpret_cast(view.data() + view.length() - 16));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  return _mm_movemask_epi8(running) != 0;
+}
+#else
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  return simple_needs_escaping(view);
+}
+#endif
+
+// Scalar fallback for finding next quotable character
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character_scalar(const std::string_view view,
+                                         size_t location) noexcept {
+  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
+    if (json_quotable_character[static_cast(*pos)]) {
+      return pos - view.begin();
+    }
+  }
+  return size_t(view.size());
+}
+
+// SIMD-accelerated position finding that directly locates the first quotable
+// character, combining detection and position extraction in a single pass to
+// minimize redundant work.
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  uint8x16_t v34 = vdupq_n_u8(34);  // '"'
+  uint8x16_t v92 = vdupq_n_u8(92);  // '\\'
+  uint8x16_t v32 = vdupq_n_u8(32);  // control char threshold
+
+  while (remaining >= 16) {
+    uint8x16_t word = vld1q_u8(ptr);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    uint8x16_t needs_escape = vceqq_u8(word, v34);
+    needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
+    needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
+
+    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
+      // Found quotable character - extract exact byte position using ctz
+      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
+      uint64_t lo = vgetq_lane_u64(as64, 0);
+      uint64_t hi = vgetq_lane_u64(as64, 1);
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      if (lo != 0) {
+        _BitScanForward64(&trailing_zero, lo);
+        return offset + trailing_zero / 8;
+      } else {
+        _BitScanForward64(&trailing_zero, hi);
+        return offset + 8 + trailing_zero / 8;
+      }
+#else
+      if (lo != 0) {
+        return offset + __builtin_ctzll(lo) / 8;
+      } else {
+        return offset + 8 + __builtin_ctzll(hi) / 8;
+      }
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants
+  __m128i v34 = _mm_set1_epi8(34);  // '"'
+  __m128i v92 = _mm_set1_epi8(92);  // '\\'
+  __m128i v31 = _mm_set1_epi8(31);  // for control char detection
+
+  while (remaining >= 16) {
+    __m128i word = _mm_loadu_si128(reinterpret_cast(ptr));
+
+    // Check for quotable characters
+    __m128i needs_escape = _mm_cmpeq_epi8(word, v34);
+    needs_escape = _mm_or_si128(needs_escape, _mm_cmpeq_epi8(word, v92));
+    needs_escape = _mm_or_si128(
+        needs_escape,
+        _mm_cmpeq_epi8(_mm_subs_epu8(word, v31), _mm_setzero_si128()));
+
+    int mask = _mm_movemask_epi8(needs_escape);
+    if (mask != 0) {
+      // Found quotable character - use trailing zero count to find position
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      _BitScanForward(&trailing_zero, mask);
+      return offset + trailing_zero;
+#else
+      return offset + __builtin_ctz(mask);
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#else
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  return find_next_json_quotable_character_scalar(view, location);
+}
+#endif
+
+SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
+    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
+    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
+    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
+    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
+    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
+
+// All Unicode characters may be placed within the quotation marks, except for
+// the characters that MUST be escaped: quotation mark, reverse solidus, and the
+// control characters (U+0000 through U+001F). There are two-character sequence
+// escape representations of some popular characters:
+// \", \\, \b, \f, \n, \r, \t.
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline void escape_json_char(char c, char *&out) {
+  if (c == '"') {
+    memcpy(out, "\\\"", 2);
+    out += 2;
+  } else if (c == '\\') {
+    memcpy(out, "\\\\", 2);
+    out += 2;
+  } else {
+    std::string_view v = control_chars[uint8_t(c)];
+    memcpy(out, v.data(), v.size());
+    out += v.size();
+  }
+}
+
+// Writes the escaped version of input to out, returning the number of bytes
+// written. Uses SIMD position finding to locate quotable characters efficiently.
+inline size_t write_string_escaped(const std::string_view input, char *out) {
+  size_t mysize = input.size();
+
+  // Use SIMD position finder directly - it returns mysize if no escape needed
+  size_t location = find_next_json_quotable_character(input, 0);
+  if (location == mysize) {
+    // Fast path: no escaping needed
+    memcpy(out, input.data(), input.size());
+    return input.size();
+  }
+
+  const char *const initout = out;
+  memcpy(out, input.data(), location);
+  out += location;
+  escape_json_char(input[location], out);
+  location += 1;
+  while (location < mysize) {
+    size_t newlocation = find_next_json_quotable_character(input, location);
+    memcpy(out, input.data() + location, newlocation - location);
+    out += newlocation - location;
+    location = newlocation;
+    if (location == mysize) {
+      break;
+    }
+    escape_json_char(input[location], out);
+    location += 1;
+  }
+  return out - initout;
+}
+
+simdjson_inline string_builder::string_builder(size_t initial_capacity)
+    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
+      capacity(buffer.get() != nullptr ? initial_capacity : 0),
+      is_valid(buffer.get() != nullptr) {}
+
+simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
+  // We use the convention that when is_valid is false, then the capacity and
+  // the position are 0.
+  // Most of the time, this function will return true.
+  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
+    return true;
+  }
+  // check for overflow, most of the time there is no overflow
+  if (simdjson_unlikely(position + upcoming_bytes < position)) {
+    return false;
+  }
+  // We will rarely get here.
+  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
+  // If the buffer allocation failed, we set is_valid to false.
+  return is_valid;
+}
+
+simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
+  if (!is_valid) {
+    return;
+  }
+  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
+  if (new_buffer.get() == nullptr) {
+    set_valid(false);
+    return;
+  }
+  std::memcpy(new_buffer.get(), buffer.get(), position);
+  buffer.swap(new_buffer);
+  capacity = desired_capacity;
+}
+
+simdjson_inline void string_builder::set_valid(bool valid) noexcept {
+  if (!valid) {
+    is_valid = false;
+    capacity = 0;
+    position = 0;
+    buffer.reset();
+  } else {
+    is_valid = true;
+  }
+}
+
+simdjson_inline size_t string_builder::size() const noexcept {
+  return position;
+}
+
+simdjson_inline void string_builder::append(char c) noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = c;
+  }
+}
+
+simdjson_inline void string_builder::append_null() noexcept {
+  constexpr char null_literal[] = "null";
+  constexpr size_t null_len = sizeof(null_literal) - 1;
+  if (capacity_check(null_len)) {
+    std::memcpy(buffer.get() + position, null_literal, null_len);
+    position += null_len;
+  }
+}
+
+simdjson_inline void string_builder::clear() noexcept {
+  position = 0;
+  // if it was invalid, we should try to repair it
+  if (!is_valid) {
+    capacity = 0;
+    buffer.reset();
+    is_valid = true;
+  }
+}
+
+namespace internal {
+
+template ::value>::type>
+simdjson_really_inline int int_log2(number_type x) {
+  return 63 - leading_zeroes(uint64_t(x) | 1);
+}
+
+simdjson_really_inline int fast_digit_count_32(uint32_t x) {
+  static uint64_t table[] = {
+      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
+      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
+      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
+      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
+      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
+      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
+      42949672960, 42949672960};
+  return uint32_t((x + table[int_log2(x)]) >> 32);
+}
+
+simdjson_really_inline int fast_digit_count_64(uint64_t x) {
+  static uint64_t table[] = {9,
+                             99,
+                             999,
+                             9999,
+                             99999,
+                             999999,
+                             9999999,
+                             99999999,
+                             999999999,
+                             9999999999,
+                             99999999999,
+                             999999999999,
+                             9999999999999,
+                             99999999999999,
+                             999999999999999ULL,
+                             9999999999999999ULL,
+                             99999999999999999ULL,
+                             999999999999999999ULL,
+                             9999999999999999999ULL};
+  int y = (19 * int_log2(x) >> 6);
+  y += x > table[y];
+  return y + 1;
+}
+
+template ::value>::type>
+simdjson_really_inline size_t digit_count(number_type v) noexcept {
+  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
+                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
+                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
+  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
+    return fast_digit_count_32(static_cast(v));
+  }
+  else {
+    return fast_digit_count_64(static_cast(v));
+  }
+}
+static const char decimal_table[200] = {
+    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
+    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
+    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
+    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
+    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
+    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
+    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
+    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
+    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
+    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
+    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
+    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
+    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
+    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
+    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
+    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
+    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
+};
+} // namespace internal
+
+template 
+simdjson_inline void string_builder::append(number_type v) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_integral::value ||
+                    std::is_floating_point::value,
+                "Unsupported number type");
+  // If C++17 is available, we can 'if constexpr' here.
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    if (v) {
+      constexpr char true_literal[] = "true";
+      constexpr size_t true_len = sizeof(true_literal) - 1;
+      if (capacity_check(true_len)) {
+        std::memcpy(buffer.get() + position, true_literal, true_len);
+        position += true_len;
+      }
+    } else {
+      constexpr char false_literal[] = "false";
+      constexpr size_t false_len = sizeof(false_literal) - 1;
+      if (capacity_check(false_len)) {
+        std::memcpy(buffer.get() + position, false_literal, false_len);
+        position += false_len;
+      }
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
+    // Process 4 digits at a time instead of 2, reducing store operations
+    // and divisions by approximately half for large numbers.
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      unsigned_type pv = static_cast(v);
+      size_t dc = internal::digit_count(pv);
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;  // High 2 digits of remainder
+        unsigned_type r_lo = r % 100;  // Low 2 digits of remainder
+        // Write low 2 digits first (rightmost), then high 2 digits
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits with original 2-digit loop
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
+    // Same 4-digit batching as unsigned path for signed integers
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      bool negative = v < 0;
+      unsigned_type pv = static_cast(v);
+      if (negative) {
+        pv = 0 - pv; // the 0 is for Microsoft
+      }
+      size_t dc = internal::digit_count(pv);
+      // by always writing the minus sign, we avoid the branch.
+      buffer.get()[position] = '-';
+      position += negative ? 1 : 0;
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;
+        unsigned_type r_lo = r % 100;
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
+    constexpr size_t max_number_size = 24;
+    if (capacity_check(max_number_size)) {
+      // We could specialize for float.
+      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
+                                               double(v));
+      position = end - buffer.get();
+    }
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(6 * input.size())) {
+    position += write_string_escaped(input, buffer.get() + position);
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * input.size())) {
+    buffer.get()[position++] = '"';
+    position += write_string_escaped(input, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(char input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * 1)) {
+    buffer.get()[position++] = '"';
+    std::string_view cinput(&input, 1);
+    position += write_string_escaped(cinput, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(const char *input) noexcept {
+  std::string_view cinput(input);
+  escape_and_append_with_quotes(cinput);
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
+  escape_and_append_with_quotes(constevalutil::string_constant::value);
+}
+#endif
+
+simdjson_inline void string_builder::append_raw(const char *c) noexcept {
+  size_t len = std::strlen(c);
+  append_raw(c, len);
+}
+
+simdjson_inline void
+string_builder::append_raw(std::string_view input) noexcept {
+  if (capacity_check(input.size())) {
+    std::memcpy(buffer.get() + position, input.data(), input.size());
+    position += input.size();
+  }
+}
+
+simdjson_inline void string_builder::append_raw(const char *str,
+                                                size_t len) noexcept {
+  if (capacity_check(len)) {
+    std::memcpy(buffer.get() + position, str, len);
+    position += len;
+  }
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+simdjson_inline void string_builder::append(const T &opt) {
+  if (opt) {
+    append(*opt);
+  } else {
+    append_null();
+  }
+}
+
+template 
+  requires(require_custom_serialization)
+simdjson_inline void string_builder::append(T &&val) {
+  serialize(*this, std::forward(val));
+}
+
+template 
+  requires(std::is_convertible::value ||
+           std::is_same::value)
+simdjson_inline void string_builder::append(const T &value) {
+  escape_and_append_with_quotes(value);
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+// Support for range-based appending (std::ranges::view, etc.)
+template 
+  requires(!std::is_convertible::value && !require_custom_serialization)
+simdjson_inline void string_builder::append(const R &range) noexcept {
+  auto it = std::ranges::begin(range);
+  auto end = std::ranges::end(range);
+  if constexpr (concepts::is_pair>) {
+    start_object();
+
+    if (it == end) {
+      end_object();
+      return; // Handle empty range
+    }
+    // Append first item without leading comma
+    append_key_value(it->first, it->second);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append_key_value(it->first, it->second);
+    }
+    end_object();
+  } else {
+    start_array();
+    if (it == end) {
+      end_array();
+      return; // Handle empty range
+    }
+
+    // Append first item without leading comma
+    append(*it);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append(*it);
+    }
+    end_array();
+  }
+}
+
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+simdjson_inline string_builder::operator std::string() const noexcept(false) {
+  return std::string(operator std::string_view());
+}
+
+simdjson_inline string_builder::operator std::string_view() const
+    noexcept(false) simdjson_lifetime_bound {
+  return view();
+}
+#endif
+
+simdjson_inline simdjson_result
+string_builder::view() const noexcept {
+  if (!is_valid) {
+    return simdjson::OUT_OF_CAPACITY;
+  }
+  return std::string_view(buffer.get(), position);
+}
+
+simdjson_inline simdjson_result string_builder::c_str() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position] = '\0';
+    return buffer.get();
+  }
+  return simdjson::OUT_OF_CAPACITY;
+}
+
+simdjson_inline bool string_builder::validate_unicode() const noexcept {
+  return simdjson::validate_utf8(buffer.get(), position);
+}
+
+simdjson_inline void string_builder::start_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '{';
+  }
+}
+
+simdjson_inline void string_builder::end_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '}';
+  }
+}
+
+simdjson_inline void string_builder::start_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '[';
+  }
+}
+
+simdjson_inline void string_builder::end_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ']';
+  }
+}
+
+simdjson_inline void string_builder::append_comma() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ',';
+  }
+}
+
+simdjson_inline void string_builder::append_colon() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ':';
+  }
+}
+
+template 
+simdjson_inline void
+string_builder::append_key_value(key_type key, value_type value) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_convertible::value,
+                "Unsupported key type");
+  escape_and_append_with_quotes(key);
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void
+string_builder::append_key_value(value_type value) noexcept {
+  escape_and_append_with_quotes();
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+#endif
+
+} // namespace builder
+} // namespace lsx
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+/* end file simdjson/generic/builder/json_string_builder-inl.h for lsx */
+
+/* end file simdjson/generic/builder/amalgamated.h for lsx */
+/* including simdjson/lsx/end.h: #include "simdjson/lsx/end.h" */
+/* begin file simdjson/lsx/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
+/* undefining SIMDJSON_IMPLEMENTATION from "lsx" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/lsx/end.h */
+
+#endif // SIMDJSON_LSX_BUILDER_H
+/* end file simdjson/lsx/builder.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(lasx)
+/* including simdjson/lasx/builder.h: #include "simdjson/lasx/builder.h" */
+/* begin file simdjson/lasx/builder.h */
+#ifndef SIMDJSON_LASX_BUILDER_H
+#define SIMDJSON_LASX_BUILDER_H
+
+/* including simdjson/lasx/begin.h: #include "simdjson/lasx/begin.h" */
+/* begin file simdjson/lasx/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "lasx" */
+#define SIMDJSON_IMPLEMENTATION lasx
+#include  // This is a hack. We should not need to put this include here.
+#if SIMDJSON_CAN_ALWAYS_RUN_LASX
+// nothing needed.
+#else
+SIMDJSON_TARGET_REGION("lasx,lsx")
+#endif
+
+/* including simdjson/lasx/base.h: #include "simdjson/lasx/base.h" */
+/* begin file simdjson/lasx/base.h */
+#ifndef SIMDJSON_LASX_BASE_H
+#define SIMDJSON_LASX_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+/**
+ * Implementation for LASX.
+ */
+namespace lasx {
+
+class implementation;
+
+namespace {
+namespace simd {
+template  struct simd8;
+template  struct simd8x64;
+} // namespace simd
+} // unnamed namespace
+
+} // namespace lasx
+} // namespace simdjson
+
+#endif // SIMDJSON_LASX_BASE_H
+/* end file simdjson/lasx/base.h */
+/* including simdjson/lasx/intrinsics.h: #include "simdjson/lasx/intrinsics.h" */
+/* begin file simdjson/lasx/intrinsics.h */
+#ifndef SIMDJSON_LASX_INTRINSICS_H
+#define SIMDJSON_LASX_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+#include 
+
+static_assert(sizeof(__m256i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for LoongArch ASX");
+
+#endif //  SIMDJSON_LASX_INTRINSICS_H
+/* end file simdjson/lasx/intrinsics.h */
+/* including simdjson/lasx/bitmanipulation.h: #include "simdjson/lasx/bitmanipulation.h" */
+/* begin file simdjson/lasx/bitmanipulation.h */
+#ifndef SIMDJSON_LASX_BITMANIPULATION_H
+#define SIMDJSON_LASX_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmask.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace lasx {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+  return __builtin_ctzll(input_num);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return input_num & (input_num-1);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+  return __builtin_clzll(input_num);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int count_ones(uint64_t input_num) {
+  return __lasx_xvpickve2gr_w(__lasx_xvpcnt_d(__m256i(v4u64{input_num, 0, 0, 0})), 0);
+}
+
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+}
+
+} // unnamed namespace
+} // namespace lasx
+} // namespace simdjson
+
+#endif // SIMDJSON_LASX_BITMANIPULATION_H
+/* end file simdjson/lasx/bitmanipulation.h */
+/* including simdjson/lasx/bitmask.h: #include "simdjson/lasx/bitmask.h" */
+/* begin file simdjson/lasx/bitmask.h */
+#ifndef SIMDJSON_LASX_BITMASK_H
+#define SIMDJSON_LASX_BITMASK_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace lasx {
+namespace {
+
+//
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
+//
+// For example, prefix_xor(00100100) == 00011100
+//
+simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
+  bitmask ^= bitmask << 1;
+  bitmask ^= bitmask << 2;
+  bitmask ^= bitmask << 4;
+  bitmask ^= bitmask << 8;
+  bitmask ^= bitmask << 16;
+  bitmask ^= bitmask << 32;
+  return bitmask;
+}
+
+} // unnamed namespace
+} // namespace lasx
+} // namespace simdjson
+
+#endif
+/* end file simdjson/lasx/bitmask.h */
+/* including simdjson/lasx/numberparsing_defs.h: #include "simdjson/lasx/numberparsing_defs.h" */
+/* begin file simdjson/lasx/numberparsing_defs.h */
+#ifndef SIMDJSON_LASX_NUMBERPARSING_DEFS_H
+#define SIMDJSON_LASX_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+namespace simdjson {
+namespace lasx {
+namespace numberparsing {
+
+// we don't have appropriate instructions, so let us use a scalar function
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  uint64_t val;
+  std::memcpy(&val, chars, sizeof(uint64_t));
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+}
+
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace lasx
+} // namespace simdjson
+
+#ifndef SIMDJSON_SWAR_NUMBER_PARSING
+#if SIMDJSON_IS_BIG_ENDIAN
+#define SIMDJSON_SWAR_NUMBER_PARSING 0
+#else
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+#endif
+#endif
+
+#endif // SIMDJSON_LASX_NUMBERPARSING_DEFS_H
+/* end file simdjson/lasx/numberparsing_defs.h */
+/* including simdjson/lasx/simd.h: #include "simdjson/lasx/simd.h" */
+/* begin file simdjson/lasx/simd.h */
+#ifndef SIMDJSON_LASX_SIMD_H
+#define SIMDJSON_LASX_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace lasx {
+namespace {
+namespace simd {
+
+  // Forward-declared so they can be used by splat and friends.
+  template
+  struct base {
+    __m256i value;
+
+    // Zero constructor
+    simdjson_inline base() : value{__m256i()} {}
+
+    // Conversion from SIMD register
+    simdjson_inline base(const __m256i _value) : value(_value) {}
+
+    // Conversion to SIMD register
+    simdjson_inline operator const __m256i&() const { return this->value; }
+    simdjson_inline operator __m256i&() { return this->value; }
+    simdjson_inline operator const v32i8&() const { return (v32i8&)this->value; }
+    simdjson_inline operator v32i8&() { return (v32i8&)this->value; }
+
+    // Bit operations
+    simdjson_inline Child operator|(const Child other) const { return __lasx_xvor_v(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return __lasx_xvand_v(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return __lasx_xvxor_v(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return __lasx_xvandn_v(other, *this); }
+    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
+
+  // Forward-declared so they can be used by splat and friends.
+  template
+  struct simd8;
+
+  template>
+  struct base8: base> {
+    simdjson_inline base8() : base>() {}
+    simdjson_inline base8(const __m256i _value) : base>(_value) {}
+
+    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return __lasx_xvseq_b(lhs, rhs); }
+
+    static const int SIZE = sizeof(base>::value);
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+        __m256i hi = __lasx_xvbsll_v(*this, N);
+        __m256i lo = __lasx_xvbsrl_v(*this, 16 - N);
+        __m256i tmp = __lasx_xvbsrl_v(prev_chunk, 16 - N);
+        lo = __lasx_xvpermi_q(lo, tmp, 0x21);
+        return __lasx_xvor_v(hi, lo);
+    }
+  };
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8: base8 {
+    static simdjson_inline simd8 splat(bool _value) { return __lasx_xvreplgr2vr_b(uint8_t(-(!!_value))); }
+
+    simdjson_inline simd8() : base8() {}
+    simdjson_inline simd8(const __m256i _value) : base8(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
+
+    simdjson_inline int to_bitmask() const {
+      __m256i mask = __lasx_xvmskltz_b(*this);
+      return (__lasx_xvpickve2gr_w(mask, 4) << 16) | (__lasx_xvpickve2gr_w(mask, 0));
+    }
+   simdjson_inline bool any() const {
+      __m256i v = __lasx_xvmsknz_b(*this);
+      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
+    }
+    simdjson_inline simd8 operator~() const { return *this ^ true; }
+  };
+
+  template
+  struct base8_numeric: base8 {
+    static simdjson_inline simd8 splat(T _value) {
+      return __lasx_xvreplgr2vr_b(_value);
+    }
+    static simdjson_inline simd8 zero() { return __lasx_xvldi(0); }
+    static simdjson_inline simd8 load(const T values[32]) {
+      return __lasx_xvld(reinterpret_cast(values), 0);
+    }
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    static simdjson_inline simd8 repeat_16(
+      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
+      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    simdjson_inline base8_numeric() : base8() {}
+    simdjson_inline base8_numeric(const __m256i _value) : base8(_value) {}
+
+    // Store to array
+    simdjson_inline void store(T dst[32]) const {
+      return __lasx_xvst(*this, reinterpret_cast<__m256i *>(dst), 0);
+    }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return __lasx_xvadd_b(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __lasx_xvsub_b(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
+
+    // Override to distinguish from bool version
+    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return __lasx_xvshuf_b(lookup_table, lookup_table, *this);
+    }
+
+    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
+    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
+    // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
+    // get written.
+    template
+    simdjson_inline void compress(uint32_t mask, L * output) const {
+      using internal::thintable_epi8;
+      using internal::BitsSetTable256mul2;
+      using internal::pshufb_combine_table;
+      // this particular implementation was inspired by haswell
+      // lasx do it in 4 steps, first 8 bytes and then second 8 bytes...
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // second significant 8 bits
+      uint8_t mask3 = uint8_t(mask >> 16); // ...
+      uint8_t mask4 = uint8_t(mask >> 24); // ...
+      // next line just loads the 64-bit values thintable_epi8[mask{1,2,3,4}]
+      // into a 256-bit register.
+      __m256i shufmask = {int64_t(thintable_epi8[mask1]), int64_t(thintable_epi8[mask2]) + 0x0808080808080808, int64_t(thintable_epi8[mask3]), int64_t(thintable_epi8[mask4]) + 0x0808080808080808};
+      // this is the version "nearly pruned"
+      __m256i pruned = __lasx_xvshuf_b(*this, *this, shufmask);
+      // we still need to put the  pieces back together.
+      // we compute the popcount of the first words:
+      int pop1 = BitsSetTable256mul2[mask1];
+      int pop2 = BitsSetTable256mul2[mask2];
+      int pop3 = BitsSetTable256mul2[mask3];
+
+      // then load the corresponding mask
+      __m256i masklo = __lasx_xvldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop1 * 8);
+      __m256i maskhi = __lasx_xvldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop3 * 8);
+      __m256i compactmask = __lasx_xvpermi_q(maskhi, masklo, 0x20);
+      __m256i answer = __lasx_xvshuf_b(pruned, pruned, compactmask);
+      __lasx_xvst(answer, reinterpret_cast(output), 0);
+      uint64_t value3 = __lasx_xvpickve2gr_du(answer, 2);
+      uint64_t value4 = __lasx_xvpickve2gr_du(answer, 3);
+      uint64_t *pos = reinterpret_cast(reinterpret_cast(output) + 16 - (pop1 + pop2) / 2);
+      pos[0] = value3;
+      pos[1] = value4;
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 : base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const int8_t values[32]) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15,
+      int8_t v16, int8_t v17, int8_t v18, int8_t v19, int8_t v20, int8_t v21, int8_t v22, int8_t v23,
+      int8_t v24, int8_t v25, int8_t v26, int8_t v27, int8_t v28, int8_t v29, int8_t v30, int8_t v31
+    ) : simd8({
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15,
+      v16,v17,v18,v19,v20,v21,v22,v23,
+      v24,v25,v26,v27,v28,v29,v30,v31
+      }) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lasx_xvmax_b(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lasx_xvmin_b(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return __lasx_xvslt_b(other, *this); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return __lasx_xvslt_b(*this, other); }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8: base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const uint8_t values[32]) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15,
+      uint8_t v16, uint8_t v17, uint8_t v18, uint8_t v19, uint8_t v20, uint8_t v21, uint8_t v22, uint8_t v23,
+      uint8_t v24, uint8_t v25, uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30, uint8_t v31
+    ) : simd8(__m256i(v32u8{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15,
+      v16,v17,v18,v19,v20,v21,v22,v23,
+      v24,v25,v26,v27,v28,v29,v30,v31
+    })) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return __lasx_xvsadd_bu(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __lasx_xvssub_bu(*this, other); }
+
+    // Order-specific operations
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lasx_xvmax_bu(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lasx_xvmin_bu(other, *this); }
+    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
+    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
+    simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
+    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return this->lt_bits(other).any_bits_set(); }
+
+    // Bit-specific operations
+    simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
+    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
+    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
+    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
+    simdjson_inline bool is_ascii() const {
+      __m256i mask = __lasx_xvmskltz_b(*this);
+      return (0 == __lasx_xvpickve2gr_w(mask, 0)) && (0 == __lasx_xvpickve2gr_w(mask, 4));
+    }
+    simdjson_inline bool bits_not_set_anywhere() const {
+      __m256i v = __lasx_xvmsknz_b(*this);
+      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
+    }
+    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
+    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const {
+      __m256i v = __lasx_xvmsknz_b(__lasx_xvand_v(*this, bits));
+      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
+    }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
+    template
+    simdjson_inline simd8 shr() const { return simd8(__lasx_xvsrli_b(*this, N)); }
+    template
+    simdjson_inline simd8 shl() const { return simd8(__lasx_xvslli_b(*this, N)); }
+  };
+
+  template
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    static_assert(NUM_CHUNKS == 2, "LASX kernel should use two registers per 64-byte block.");
+    const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1) : chunks{chunk0, chunk1} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+32)} {}
+
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      uint32_t mask1 = uint32_t(mask);
+      uint32_t mask2 = uint32_t(mask >> 32);
+      __m256i zcnt = __lasx_xvpcnt_w(__m256i(v4u64{~mask, 0, 0, 0}));
+      uint64_t zcnt1 = __lasx_xvpickve2gr_wu(zcnt, 0);
+      uint64_t zcnt2 = __lasx_xvpickve2gr_wu(zcnt, 1);
+      // There should be a critical value which processes in scaler is faster.
+      if (zcnt1)
+        this->chunks[0].compress(mask1, output);
+      if (zcnt2)
+        this->chunks[1].compress(mask2, output + zcnt1);
+      return zcnt1 + zcnt2;
+    }
+
+    simdjson_inline void store(T ptr[64]) const {
+      this->chunks[0].store(ptr+sizeof(simd8)*0);
+      this->chunks[1].store(ptr+sizeof(simd8)*1);
+    }
+
+    simdjson_inline uint64_t to_bitmask() const {
+      __m256i mask0 = __lasx_xvmskltz_b(this->chunks[0]);
+      __m256i mask1 = __lasx_xvmskltz_b(this->chunks[1]);
+      __m256i mask_tmp = __lasx_xvpickve_w(mask0, 4);
+      __m256i tmp = __lasx_xvpickve_w(mask1, 4);
+      mask0 = __lasx_xvinsve0_w(mask0, mask1, 1);
+      mask_tmp = __lasx_xvinsve0_w(mask_tmp, tmp, 1);
+      return __lasx_xvpickve2gr_du(__lasx_xvpackev_h(mask_tmp, mask0), 0);
+    }
+
+    simdjson_inline simd8 reduce_or() const {
+      return this->chunks[0] | this->chunks[1];
+    }
+
+    simdjson_inline uint64_t eq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] == mask,
+        this->chunks[1] == mask
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t eq(const simd8x64 &other) const {
+      return  simd8x64(
+        this->chunks[0] == other.chunks[0],
+        this->chunks[1] == other.chunks[1]
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t lteq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] <= mask,
+        this->chunks[1] <= mask
+      ).to_bitmask();
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace lasx
+} // namespace simdjson
+
+#endif // SIMDJSON_LASX_SIMD_H
+/* end file simdjson/lasx/simd.h */
+/* including simdjson/lasx/stringparsing_defs.h: #include "simdjson/lasx/stringparsing_defs.h" */
+/* begin file simdjson/lasx/stringparsing_defs.h */
+#ifndef SIMDJSON_LASX_STRINGPARSING_DEFS_H
+#define SIMDJSON_LASX_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace lasx {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 32;
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
+  simdjson_inline bool has_backslash() { return bs_bits != 0; }
+  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
+  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
+
+  uint32_t bs_bits;
+  uint32_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // this can read up to 31 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  return {
+      static_cast((v == '\\').to_bitmask()),     // bs_bits
+      static_cast((v == '"').to_bitmask()), // quote_bits
+  };
+}
+
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 16;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits); }
+
+  uint64_t escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  simd8 is_quote = (v == '"');
+  simd8 is_backslash = (v == '\\');
+  simd8 is_control = (v < 32);
+  return {
+    static_cast((is_backslash | is_quote | is_control).to_bitmask())
+  };
+}
+
+} // unnamed namespace
+} // namespace lasx
+} // namespace simdjson
+
+#endif // SIMDJSON_LASX_STRINGPARSING_DEFS_H
+/* end file simdjson/lasx/stringparsing_defs.h */
+
+#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
+
+
+/* end file simdjson/lasx/begin.h */
+/* including simdjson/generic/builder/amalgamated.h for lasx: #include "simdjson/generic/builder/amalgamated.h" */
+/* begin file simdjson/generic/builder/amalgamated.h for lasx */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
+#error simdjson/generic/builder/dependencies.h must be included before simdjson/generic/builder/amalgamated.h!
+#endif
+
+/* including simdjson/generic/builder/json_string_builder.h for lasx: #include "simdjson/generic/builder/json_string_builder.h" */
+/* begin file simdjson/generic/builder/json_string_builder.h for lasx */
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace lasx {
+namespace builder {
+  class string_builder;
+}}
+
+template 
+struct has_custom_serialization : std::false_type {};
+
+inline constexpr struct serialize_tag {
+  template 
+  constexpr void operator()(lasx::builder::string_builder& b, T&& obj) const{
+    return tag_invoke(*this, b, std::forward(obj));
+  }
+
+
+} serialize{};
+template 
+struct has_custom_serialization(), std::declval()))
+>> : std::true_type {};
+
+template 
+constexpr bool require_custom_serialization = has_custom_serialization::value;
+#else
+struct has_custom_serialization : std::false_type {};
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace lasx {
+namespace builder {
+/**
+ * A builder for JSON strings representing documents. This is a low-level
+ * builder that is not meant to be used directly by end-users. Though it
+ * supports atomic types (Booleans, strings), it does not support composed
+ * types (arrays and objects).
+ *
+ * Ultimately, this class can support kernel-specific optimizations. E.g.,
+ * it may make use of SIMD instructions to escape strings faster.
+ */
+class string_builder {
+public:
+  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
+
+  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
+
+  /**
+   * Append number (includes Booleans). Booleans are mapped to the strings
+   * false and true. Numbers are converted to strings abiding by the JSON standard.
+   * Floating-point numbers are converted to the shortest string that 'correctly'
+   * represents the number.
+   */
+  template::value>::type>
+  simdjson_inline void append(number_type v) noexcept;
+
+  /**
+   * Append character c.
+   */
+  simdjson_inline void append(char c)  noexcept;
+
+  /**
+   * Append the string 'null'.
+   */
+  simdjson_inline void append_null()  noexcept;
+
+  /**
+   * Clear the content.
+   */
+  simdjson_inline void clear()  noexcept;
+
+  /**
+   * Append the std::string_view, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
+
+  /**
+   * Append the std::string_view surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void escape_and_append_with_quotes()  noexcept;
+#endif
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
+
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
+
+  /**
+   * Append the C string directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *c)  noexcept;
+
+  /**
+   * Append "{" to the buffer.
+   */
+  simdjson_inline void start_object()  noexcept;
+
+  /**
+   * Append "}" to the buffer.
+   */
+  simdjson_inline void end_object()  noexcept;
+
+  /**
+   * Append "[" to the buffer.
+   */
+  simdjson_inline void start_array()  noexcept;
+
+  /**
+   * Append "]" to the buffer.
+   */
+  simdjson_inline void end_array()  noexcept;
+
+  /**
+   * Append "," to the buffer.
+   */
+  simdjson_inline void append_comma()  noexcept;
+
+  /**
+   * Append ":" to the buffer.
+   */
+  simdjson_inline void append_colon()  noexcept;
+
+  /**
+   * Append a key-value pair to the buffer.
+   * The key is escaped and surrounded by double quotes.
+   * The value is escaped if it is a string.
+   */
+  template
+  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void append_key_value(value_type value) noexcept;
+
+  // Support for optional types (std::optional, etc.)
+  template 
+  requires(!require_custom_serialization)
+  simdjson_inline void append(const T &opt);
+
+  template 
+  requires(require_custom_serialization)
+  simdjson_inline void append(T &&val);
+
+  // Support for string-like types
+  template 
+  requires(std::is_convertible::value ||
+  std::is_same::value )
+  simdjson_inline void append(const T &value);
+#endif
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+  // Support for range-based appending (std::ranges::view, etc.)
+  template 
+requires (!std::is_convertible::value && !require_custom_serialization)
+  simdjson_inline void append(const R &range) noexcept;
+#endif
+  /**
+   * Append the std::string_view directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(std::string_view input)  noexcept;
+
+  /**
+   * Append len characters from str.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
+#if SIMDJSON_EXCEPTIONS
+  /**
+   * Creates an std::string from the written JSON buffer.
+   * Throws if memory allocation failed
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string() const noexcept(false);
+
+  /**
+   * Creates an std::string_view from the written JSON buffer.
+   * Throws if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
+#endif
+
+  /**
+   * Returns a view on the written JSON buffer. Returns an error
+   * if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result view() const noexcept;
+
+  /**
+   * Appends the null character to the buffer and returns
+   * a pointer to the beginning of the written JSON buffer.
+   * Returns an error if memory allocation failed.
+   * The result is null-terminated.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result c_str() noexcept;
+
+  /**
+   * Return true if the content is valid UTF-8.
+   */
+  simdjson_inline bool validate_unicode() const noexcept;
+
+  /**
+   * Returns the current size of the written JSON buffer.
+   * If an error occurred, returns 0.
+   */
+  simdjson_inline size_t size() const noexcept;
+
+private:
+  /**
+   * Returns true if we can write at least upcoming_bytes bytes.
+   * The underlying buffer is reallocated if needed. It is designed
+   * to be called before writing to the buffer. It should be fast.
+   */
+  simdjson_inline bool capacity_check(size_t upcoming_bytes);
+
+  /**
+   * Grow the buffer to at least desired_capacity bytes.
+   * If the allocation fails, is_valid is set to false. We expect
+   * that this function would not be repeatedly called.
+   */
+  simdjson_inline void grow_buffer(size_t desired_capacity);
+
+  /**
+   * We use this helper function to make sure that is_valid is kept consistent.
+   */
+  simdjson_inline void set_valid(bool valid) noexcept;
+
+  std::unique_ptr buffer{};
+  size_t position{0};
+  size_t capacity{0};
+  bool is_valid{true};
+};
+
+
+
+}
+}
+
+
+#if !SIMDJSON_STATIC_REFLECTION
+// fallback implementation until we have static reflection
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::lasx::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view s;
+  auto e = b.view().get(s);
+  if(e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::lasx::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view sv;
+  auto e = b.view().get(sv);
+  if(e) { return e; }
+  s.assign(sv.data(), sv.size());
+  return simdjson::SUCCESS;
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
+/* end file simdjson/generic/builder/json_string_builder.h for lasx */
+/* including simdjson/generic/builder/json_builder.h for lasx: #include "simdjson/generic/builder/json_builder.h" */
+/* begin file simdjson/generic/builder/json_builder.h for lasx */
+#ifndef SIMDJSON_GENERIC_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#if SIMDJSON_STATIC_REFLECTION
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+// #include  // for std::define_static_string - header not available yet
+
+namespace simdjson {
+namespace lasx {
+namespace builder {
+
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  auto it = t.begin();
+  auto end = t.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+constexpr void atom(string_builder &b, const T &t) {
+  b.escape_and_append_with_quotes(t);
+}
+
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &m) {
+  if (m.empty()) {
+    b.append_raw("{}");
+    return;
+  }
+  b.append('{');
+  bool first = true;
+  for (const auto& [key, value] : m) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    // Keys must be convertible to string_view per the concept
+    b.escape_and_append_with_quotes(key);
+    b.append(':');
+    atom(b, value);
+  }
+  b.append('}');
+}
+
+
+template::value && !std::is_same_v>::type>
+constexpr void atom(string_builder &b, const number_type t) {
+  b.append(t);
+}
+
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, t.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &opt) {
+  if (opt) {
+    atom(b, opt.value());
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &ptr) {
+  if (ptr) {
+    atom(b, *ptr);
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for enums - serialize as string representation using expand approach from P2996R12
+template 
+  requires(std::is_enum_v && !require_custom_serialization)
+void atom(string_builder &b, const T &e) {
+#if SIMDJSON_STATIC_REFLECTION
+  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
+  template for (constexpr auto enum_val : enumerators) {
+    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
+    if (e == [:enum_val:]) {
+      b.append_raw(enum_str);
+      return;
+    }
+  };
+  // Fallback to integer if enum value not found
+  atom(b, static_cast>(e));
+#else
+  // Fallback: serialize as integer if reflection not available
+  atom(b, static_cast>(e));
+#endif
+}
+
+// Support for appendable containers that don't have operator[] (sets, etc.)
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &container) {
+  if (container.empty()) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  bool first = true;
+  for (const auto& item : container) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    atom(b, item);
+  }
+  b.append(']');
+}
+
+// append functions that delegate to atom functions for primitive types
+template 
+  requires(std::is_arithmetic_v && !std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+// works for struct
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, z.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// works for container that have begin() and end() iterators
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  auto it = z.begin();
+  auto end = z.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires (require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  b.append(z);
+}
+
+
+template 
+simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+
+template 
+string_builder& operator<<(string_builder& b, const Z& z) {
+  append(b, z);
+  return b;
+}
+
+// extract_from: Serialize only specific fields from a struct to JSON
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+void extract_from(string_builder &b, const T &obj) {
+  // Helper to check if a field name matches any of the requested fields
+  auto should_extract = [](std::string_view field_name) constexpr -> bool {
+    return ((FieldNames.view() == field_name) || ...);
+  };
+
+  b.append('{');
+  bool first = true;
+
+  // Iterate through all members of T using reflection
+  template for (constexpr auto mem : std::define_static_array(
+      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+
+    if constexpr (std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+
+      // Only serialize this field if it's in our list of requested fields
+      if constexpr (should_extract(key)) {
+        if (!first) {
+          b.append(',');
+        }
+        first = false;
+
+        // Serialize the key
+        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
+        b.append_raw(quoted_key);
+        b.append(':');
+
+        // Serialize the value
+        atom(b, obj.[:mem:]);
+      }
+    }
+  };
+
+  b.append('}');
+}
+
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace builder
+} // namespace lasx
+// Alias the function template to 'to' in the global namespace
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  lasx::builder::string_builder b(initial_capacity);
+  lasx::builder::append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  lasx::builder::string_builder b(initial_capacity);
+  lasx::builder::append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+// Global namespace function for extract_from
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  lasx::builder::string_builder b(initial_capacity);
+  lasx::builder::extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif
+/* end file simdjson/generic/builder/json_builder.h for lasx */
+/* including simdjson/generic/builder/fractured_json_builder.h for lasx: #include "simdjson/generic/builder/fractured_json_builder.h" */
+/* begin file simdjson/generic/builder/fractured_json_builder.h for lasx */
+#ifndef SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+#define SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/dom/fractured_json.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_STATIC_REFLECTION
+
+namespace simdjson {
+namespace lasx {
+namespace builder {
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ *
+ * FracturedJson produces human-readable yet compact JSON output by intelligently
+ * choosing between different layout strategies (inline, compact multiline, table,
+ * expanded) based on content complexity, length, and structure similarity.
+ *
+ * This function combines the builder's serialization with FracturedJson formatting:
+ * 1. Serializes the object to minified JSON using reflection
+ * 2. Parses and reformats using FracturedJson
+ *
+ * Example:
+ *   struct User { int id; std::string name; bool active; };
+ *   User user{1, "Alice", true};
+ *   auto result = to_fractured_json_string(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\", \"active\": true }"
+ *
+ * @param obj The object to serialize (must be a reflectable type)
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string, or an error
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Serialize to minified JSON
+  std::string formatted;
+  auto error = to_json_string(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ *
+ * Example:
+ *   struct User { int id; std::string name; std::string email; bool active; };
+ *   User user{1, "Alice", "alice@example.com", true};
+ *   auto result = extract_fractured_json<"id", "name">(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\" }"
+ *
+ * @param obj The object to serialize
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string containing only the specified fields
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Extract fields to minified JSON
+  std::string formatted;
+  auto error = extract_from(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+} // namespace builder
+} // namespace lasx
+
+// Global namespace convenience functions
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ * Global namespace version for convenience.
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return lasx::builder::to_fractured_json_string(obj, opts, initial_capacity);
+}
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ * Global namespace version for convenience.
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return lasx::builder::extract_fractured_json(obj, opts, initial_capacity);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif // SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+/* end file simdjson/generic/builder/fractured_json_builder.h for lasx */
+
+
+
+// JSON builder inline definitions
+/* including simdjson/generic/builder/json_string_builder-inl.h for lasx: #include "simdjson/generic/builder/json_string_builder-inl.h" */
+/* begin file simdjson/generic/builder/json_string_builder-inl.h for lasx */
+#include 
+#include 
+#include 
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/*
+ * Empirically, we have found that an inlined optimization is important for
+ * performance. The following macros are not ideal. We should find a better
+ * way to inline the code.
+ */
+
+#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
+    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
+     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
+#endif
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
+#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+
+namespace simdjson {
+namespace lasx {
+namespace builder {
+
+static SIMDJSON_CONSTEXPR_LAMBDA std::array
+    json_quotable_character = {
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+/**
+
+A possible SWAR implementation of has_json_escapable_byte. It is not used
+because it is slower than the current implementation. It is kept here for
+reference (to show that we tried it).
+
+inline bool has_json_escapable_byte(uint64_t x) {
+  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
+  uint64_t xor2 = x ^ 0x0202020202020202ULL;
+  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
+  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
+  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
+  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
+}
+
+**/
+
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
+simple_needs_escaping(std::string_view v) {
+  for (char c : v) {
+    // a table lookup is faster than a series of comparisons
+    if (json_quotable_character[static_cast(c)]) {
+      return true;
+    }
+  }
+  return false;
+}
+
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  uint8x16_t running = vdupq_n_u8(0);
+  uint8x16_t v34 = vdupq_n_u8(34);
+  uint8x16_t v92 = vdupq_n_u8(92);
+
+  for (; i + 15 < view.size(); i += 16) {
+    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  if (i < view.size()) {
+    uint8x16_t word =
+        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __m128i running = _mm_setzero_si128();
+  for (; i + 15 < view.size(); i += 16) {
+
+    __m128i word =
+        _mm_loadu_si128(reinterpret_cast(view.data() + i));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  if (i < view.size()) {
+    __m128i word = _mm_loadu_si128(
+        reinterpret_cast(view.data() + view.length() - 16));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  return _mm_movemask_epi8(running) != 0;
+}
+#else
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  return simple_needs_escaping(view);
+}
+#endif
+
+// Scalar fallback for finding next quotable character
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character_scalar(const std::string_view view,
+                                         size_t location) noexcept {
+  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
+    if (json_quotable_character[static_cast(*pos)]) {
+      return pos - view.begin();
+    }
+  }
+  return size_t(view.size());
+}
+
+// SIMD-accelerated position finding that directly locates the first quotable
+// character, combining detection and position extraction in a single pass to
+// minimize redundant work.
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  uint8x16_t v34 = vdupq_n_u8(34);  // '"'
+  uint8x16_t v92 = vdupq_n_u8(92);  // '\\'
+  uint8x16_t v32 = vdupq_n_u8(32);  // control char threshold
+
+  while (remaining >= 16) {
+    uint8x16_t word = vld1q_u8(ptr);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    uint8x16_t needs_escape = vceqq_u8(word, v34);
+    needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
+    needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
+
+    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
+      // Found quotable character - extract exact byte position using ctz
+      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
+      uint64_t lo = vgetq_lane_u64(as64, 0);
+      uint64_t hi = vgetq_lane_u64(as64, 1);
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      if (lo != 0) {
+        _BitScanForward64(&trailing_zero, lo);
+        return offset + trailing_zero / 8;
+      } else {
+        _BitScanForward64(&trailing_zero, hi);
+        return offset + 8 + trailing_zero / 8;
+      }
+#else
+      if (lo != 0) {
+        return offset + __builtin_ctzll(lo) / 8;
+      } else {
+        return offset + 8 + __builtin_ctzll(hi) / 8;
+      }
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants
+  __m128i v34 = _mm_set1_epi8(34);  // '"'
+  __m128i v92 = _mm_set1_epi8(92);  // '\\'
+  __m128i v31 = _mm_set1_epi8(31);  // for control char detection
+
+  while (remaining >= 16) {
+    __m128i word = _mm_loadu_si128(reinterpret_cast(ptr));
+
+    // Check for quotable characters
+    __m128i needs_escape = _mm_cmpeq_epi8(word, v34);
+    needs_escape = _mm_or_si128(needs_escape, _mm_cmpeq_epi8(word, v92));
+    needs_escape = _mm_or_si128(
+        needs_escape,
+        _mm_cmpeq_epi8(_mm_subs_epu8(word, v31), _mm_setzero_si128()));
+
+    int mask = _mm_movemask_epi8(needs_escape);
+    if (mask != 0) {
+      // Found quotable character - use trailing zero count to find position
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      _BitScanForward(&trailing_zero, mask);
+      return offset + trailing_zero;
+#else
+      return offset + __builtin_ctz(mask);
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#else
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  return find_next_json_quotable_character_scalar(view, location);
+}
+#endif
+
+SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
+    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
+    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
+    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
+    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
+    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
+
+// All Unicode characters may be placed within the quotation marks, except for
+// the characters that MUST be escaped: quotation mark, reverse solidus, and the
+// control characters (U+0000 through U+001F). There are two-character sequence
+// escape representations of some popular characters:
+// \", \\, \b, \f, \n, \r, \t.
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline void escape_json_char(char c, char *&out) {
+  if (c == '"') {
+    memcpy(out, "\\\"", 2);
+    out += 2;
+  } else if (c == '\\') {
+    memcpy(out, "\\\\", 2);
+    out += 2;
+  } else {
+    std::string_view v = control_chars[uint8_t(c)];
+    memcpy(out, v.data(), v.size());
+    out += v.size();
+  }
+}
+
+// Writes the escaped version of input to out, returning the number of bytes
+// written. Uses SIMD position finding to locate quotable characters efficiently.
+inline size_t write_string_escaped(const std::string_view input, char *out) {
+  size_t mysize = input.size();
+
+  // Use SIMD position finder directly - it returns mysize if no escape needed
+  size_t location = find_next_json_quotable_character(input, 0);
+  if (location == mysize) {
+    // Fast path: no escaping needed
+    memcpy(out, input.data(), input.size());
+    return input.size();
+  }
+
+  const char *const initout = out;
+  memcpy(out, input.data(), location);
+  out += location;
+  escape_json_char(input[location], out);
+  location += 1;
+  while (location < mysize) {
+    size_t newlocation = find_next_json_quotable_character(input, location);
+    memcpy(out, input.data() + location, newlocation - location);
+    out += newlocation - location;
+    location = newlocation;
+    if (location == mysize) {
+      break;
+    }
+    escape_json_char(input[location], out);
+    location += 1;
+  }
+  return out - initout;
+}
+
+simdjson_inline string_builder::string_builder(size_t initial_capacity)
+    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
+      capacity(buffer.get() != nullptr ? initial_capacity : 0),
+      is_valid(buffer.get() != nullptr) {}
+
+simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
+  // We use the convention that when is_valid is false, then the capacity and
+  // the position are 0.
+  // Most of the time, this function will return true.
+  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
+    return true;
+  }
+  // check for overflow, most of the time there is no overflow
+  if (simdjson_unlikely(position + upcoming_bytes < position)) {
+    return false;
+  }
+  // We will rarely get here.
+  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
+  // If the buffer allocation failed, we set is_valid to false.
+  return is_valid;
+}
+
+simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
+  if (!is_valid) {
+    return;
+  }
+  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
+  if (new_buffer.get() == nullptr) {
+    set_valid(false);
+    return;
+  }
+  std::memcpy(new_buffer.get(), buffer.get(), position);
+  buffer.swap(new_buffer);
+  capacity = desired_capacity;
+}
+
+simdjson_inline void string_builder::set_valid(bool valid) noexcept {
+  if (!valid) {
+    is_valid = false;
+    capacity = 0;
+    position = 0;
+    buffer.reset();
+  } else {
+    is_valid = true;
+  }
+}
+
+simdjson_inline size_t string_builder::size() const noexcept {
+  return position;
+}
+
+simdjson_inline void string_builder::append(char c) noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = c;
+  }
+}
+
+simdjson_inline void string_builder::append_null() noexcept {
+  constexpr char null_literal[] = "null";
+  constexpr size_t null_len = sizeof(null_literal) - 1;
+  if (capacity_check(null_len)) {
+    std::memcpy(buffer.get() + position, null_literal, null_len);
+    position += null_len;
+  }
+}
+
+simdjson_inline void string_builder::clear() noexcept {
+  position = 0;
+  // if it was invalid, we should try to repair it
+  if (!is_valid) {
+    capacity = 0;
+    buffer.reset();
+    is_valid = true;
+  }
+}
+
+namespace internal {
+
+template ::value>::type>
+simdjson_really_inline int int_log2(number_type x) {
+  return 63 - leading_zeroes(uint64_t(x) | 1);
+}
+
+simdjson_really_inline int fast_digit_count_32(uint32_t x) {
+  static uint64_t table[] = {
+      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
+      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
+      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
+      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
+      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
+      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
+      42949672960, 42949672960};
+  return uint32_t((x + table[int_log2(x)]) >> 32);
+}
+
+simdjson_really_inline int fast_digit_count_64(uint64_t x) {
+  static uint64_t table[] = {9,
+                             99,
+                             999,
+                             9999,
+                             99999,
+                             999999,
+                             9999999,
+                             99999999,
+                             999999999,
+                             9999999999,
+                             99999999999,
+                             999999999999,
+                             9999999999999,
+                             99999999999999,
+                             999999999999999ULL,
+                             9999999999999999ULL,
+                             99999999999999999ULL,
+                             999999999999999999ULL,
+                             9999999999999999999ULL};
+  int y = (19 * int_log2(x) >> 6);
+  y += x > table[y];
+  return y + 1;
+}
+
+template ::value>::type>
+simdjson_really_inline size_t digit_count(number_type v) noexcept {
+  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
+                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
+                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
+  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
+    return fast_digit_count_32(static_cast(v));
+  }
+  else {
+    return fast_digit_count_64(static_cast(v));
+  }
+}
+static const char decimal_table[200] = {
+    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
+    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
+    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
+    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
+    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
+    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
+    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
+    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
+    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
+    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
+    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
+    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
+    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
+    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
+    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
+    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
+    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
+};
+} // namespace internal
+
+template 
+simdjson_inline void string_builder::append(number_type v) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_integral::value ||
+                    std::is_floating_point::value,
+                "Unsupported number type");
+  // If C++17 is available, we can 'if constexpr' here.
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    if (v) {
+      constexpr char true_literal[] = "true";
+      constexpr size_t true_len = sizeof(true_literal) - 1;
+      if (capacity_check(true_len)) {
+        std::memcpy(buffer.get() + position, true_literal, true_len);
+        position += true_len;
+      }
+    } else {
+      constexpr char false_literal[] = "false";
+      constexpr size_t false_len = sizeof(false_literal) - 1;
+      if (capacity_check(false_len)) {
+        std::memcpy(buffer.get() + position, false_literal, false_len);
+        position += false_len;
+      }
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
+    // Process 4 digits at a time instead of 2, reducing store operations
+    // and divisions by approximately half for large numbers.
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      unsigned_type pv = static_cast(v);
+      size_t dc = internal::digit_count(pv);
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;  // High 2 digits of remainder
+        unsigned_type r_lo = r % 100;  // Low 2 digits of remainder
+        // Write low 2 digits first (rightmost), then high 2 digits
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits with original 2-digit loop
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
+    // Same 4-digit batching as unsigned path for signed integers
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      bool negative = v < 0;
+      unsigned_type pv = static_cast(v);
+      if (negative) {
+        pv = 0 - pv; // the 0 is for Microsoft
+      }
+      size_t dc = internal::digit_count(pv);
+      // by always writing the minus sign, we avoid the branch.
+      buffer.get()[position] = '-';
+      position += negative ? 1 : 0;
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;
+        unsigned_type r_lo = r % 100;
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
+    constexpr size_t max_number_size = 24;
+    if (capacity_check(max_number_size)) {
+      // We could specialize for float.
+      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
+                                               double(v));
+      position = end - buffer.get();
+    }
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(6 * input.size())) {
+    position += write_string_escaped(input, buffer.get() + position);
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * input.size())) {
+    buffer.get()[position++] = '"';
+    position += write_string_escaped(input, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(char input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * 1)) {
+    buffer.get()[position++] = '"';
+    std::string_view cinput(&input, 1);
+    position += write_string_escaped(cinput, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(const char *input) noexcept {
+  std::string_view cinput(input);
+  escape_and_append_with_quotes(cinput);
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
+  escape_and_append_with_quotes(constevalutil::string_constant::value);
+}
+#endif
+
+simdjson_inline void string_builder::append_raw(const char *c) noexcept {
+  size_t len = std::strlen(c);
+  append_raw(c, len);
+}
+
+simdjson_inline void
+string_builder::append_raw(std::string_view input) noexcept {
+  if (capacity_check(input.size())) {
+    std::memcpy(buffer.get() + position, input.data(), input.size());
+    position += input.size();
+  }
+}
+
+simdjson_inline void string_builder::append_raw(const char *str,
+                                                size_t len) noexcept {
+  if (capacity_check(len)) {
+    std::memcpy(buffer.get() + position, str, len);
+    position += len;
+  }
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+simdjson_inline void string_builder::append(const T &opt) {
+  if (opt) {
+    append(*opt);
+  } else {
+    append_null();
+  }
+}
+
+template 
+  requires(require_custom_serialization)
+simdjson_inline void string_builder::append(T &&val) {
+  serialize(*this, std::forward(val));
+}
+
+template 
+  requires(std::is_convertible::value ||
+           std::is_same::value)
+simdjson_inline void string_builder::append(const T &value) {
+  escape_and_append_with_quotes(value);
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+// Support for range-based appending (std::ranges::view, etc.)
+template 
+  requires(!std::is_convertible::value && !require_custom_serialization)
+simdjson_inline void string_builder::append(const R &range) noexcept {
+  auto it = std::ranges::begin(range);
+  auto end = std::ranges::end(range);
+  if constexpr (concepts::is_pair>) {
+    start_object();
+
+    if (it == end) {
+      end_object();
+      return; // Handle empty range
+    }
+    // Append first item without leading comma
+    append_key_value(it->first, it->second);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append_key_value(it->first, it->second);
+    }
+    end_object();
+  } else {
+    start_array();
+    if (it == end) {
+      end_array();
+      return; // Handle empty range
+    }
+
+    // Append first item without leading comma
+    append(*it);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append(*it);
+    }
+    end_array();
+  }
+}
+
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+simdjson_inline string_builder::operator std::string() const noexcept(false) {
+  return std::string(operator std::string_view());
+}
+
+simdjson_inline string_builder::operator std::string_view() const
+    noexcept(false) simdjson_lifetime_bound {
+  return view();
+}
+#endif
+
+simdjson_inline simdjson_result
+string_builder::view() const noexcept {
+  if (!is_valid) {
+    return simdjson::OUT_OF_CAPACITY;
+  }
+  return std::string_view(buffer.get(), position);
+}
+
+simdjson_inline simdjson_result string_builder::c_str() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position] = '\0';
+    return buffer.get();
+  }
+  return simdjson::OUT_OF_CAPACITY;
+}
+
+simdjson_inline bool string_builder::validate_unicode() const noexcept {
+  return simdjson::validate_utf8(buffer.get(), position);
+}
+
+simdjson_inline void string_builder::start_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '{';
+  }
+}
+
+simdjson_inline void string_builder::end_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '}';
+  }
+}
+
+simdjson_inline void string_builder::start_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '[';
+  }
+}
+
+simdjson_inline void string_builder::end_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ']';
+  }
+}
+
+simdjson_inline void string_builder::append_comma() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ',';
+  }
+}
+
+simdjson_inline void string_builder::append_colon() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ':';
+  }
+}
+
+template 
+simdjson_inline void
+string_builder::append_key_value(key_type key, value_type value) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_convertible::value,
+                "Unsupported key type");
+  escape_and_append_with_quotes(key);
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void
+string_builder::append_key_value(value_type value) noexcept {
+  escape_and_append_with_quotes();
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+#endif
+
+} // namespace builder
+} // namespace lasx
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+/* end file simdjson/generic/builder/json_string_builder-inl.h for lasx */
+
+/* end file simdjson/generic/builder/amalgamated.h for lasx */
+/* including simdjson/lasx/end.h: #include "simdjson/lasx/end.h" */
+/* begin file simdjson/lasx/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
+/* undefining SIMDJSON_IMPLEMENTATION from "lasx" */
+#undef SIMDJSON_IMPLEMENTATION
+
+
+#if SIMDJSON_CAN_ALWAYS_RUN_LASX
+// nothing needed.
+#else
+SIMDJSON_UNTARGET_REGION
+#endif
+/* end file simdjson/lasx/end.h */
+
+#endif // SIMDJSON_LASX_BUILDER_H
+/* end file simdjson/lasx/builder.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(rvv_vls)
+/* including simdjson/rvv-vls/builder.h: #include "simdjson/rvv-vls/builder.h" */
+/* begin file simdjson/rvv-vls/builder.h */
+#ifndef SIMDJSON_RVV_VLS_BUILDER_H
+#define SIMDJSON_RVV_VLS_BUILDER_H
+
+/* including simdjson/rvv-vls/begin.h: #include "simdjson/rvv-vls/begin.h" */
+/* begin file simdjson/rvv-vls/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "rvv_vls" */
+#define SIMDJSON_IMPLEMENTATION rvv_vls
+/* including simdjson/rvv-vls/base.h: #include "simdjson/rvv-vls/base.h" */
+/* begin file simdjson/rvv-vls/base.h */
+#ifndef SIMDJSON_RVV_VLS_BASE_H
+#define SIMDJSON_RVV_VLS_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+/**
+ * RVV-VLS implementation.
+ */
+namespace rvv_vls {
+
+class implementation;
+
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_BASE_H
+/* end file simdjson/rvv-vls/base.h */
+/* including simdjson/rvv-vls/intrinsics.h: #include "simdjson/rvv-vls/intrinsics.h" */
+/* begin file simdjson/rvv-vls/intrinsics.h */
+#ifndef SIMDJSON_RVV_VLS_INTRINSICS_H
+#define SIMDJSON_RVV_VLS_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+#define simdutf_vrgather_u8m1x2(tbl, idx)                                      \
+  __riscv_vcreate_v_u8m1_u8m2(                                                 \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m2_u8m1(idx, 0),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m2_u8m1(idx, 1),          \
+                               __riscv_vsetvlmax_e8m1()))
+
+#define simdutf_vrgather_u8m1x4(tbl, idx)                                      \
+  __riscv_vcreate_v_u8m1_u8m4(                                                 \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 0),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 1),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 2),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 3),          \
+                               __riscv_vsetvlmax_e8m1()))
+
+#if __riscv_zbc
+#include 
+#endif
+
+#endif // SIMDJSON_RVV_VLS_INTRINSICS_H
+/* end file simdjson/rvv-vls/intrinsics.h */
+/* including simdjson/rvv-vls/bitmanipulation.h: #include "simdjson/rvv-vls/bitmanipulation.h" */
+/* begin file simdjson/rvv-vls/bitmanipulation.h */
+#ifndef SIMDJSON_RVV_VLS_BITMANIPULATION_H
+#define SIMDJSON_RVV_VLS_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+  return __builtin_ctzll(input_num);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return input_num & (input_num-1);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+  return __builtin_clzll(input_num);
+}
+
+simdjson_inline long long int count_ones(uint64_t input_num) {
+  return __builtin_popcountll(input_num);
+}
+
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
+                                uint64_t *result) {
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+}
+
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_BITMANIPULATION_H
+/* end file simdjson/rvv-vls/bitmanipulation.h */
+/* including simdjson/rvv-vls/bitmask.h: #include "simdjson/rvv-vls/bitmask.h" */
+/* begin file simdjson/rvv-vls/bitmask.h */
+#ifndef SIMDJSON_RVV_VLS_BITMASK_H
+#define SIMDJSON_RVV_VLS_BITMASK_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+
+//
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
+//
+// For example, prefix_xor(00100100) == 00011100
+//
+simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
+#if __riscv_zbc
+  return __riscv_clmul_64(bitmask, ~(uint64_t)0);
+#elif __riscv_zvbc
+  return __riscv_vmv_x(__riscv_vclmul(__riscv_vmv_s_x_u64m1(bitmask, 1), ~(uint64_t)0, 1));
+#else
+  bitmask ^= bitmask << 1;
+  bitmask ^= bitmask << 2;
+  bitmask ^= bitmask << 4;
+  bitmask ^= bitmask << 8;
+  bitmask ^= bitmask << 16;
+  bitmask ^= bitmask << 32;
+#endif
+  return bitmask;
+}
+
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_BITMASK_H
+
+/* end file simdjson/rvv-vls/bitmask.h */
+/* including simdjson/rvv-vls/simd.h: #include "simdjson/rvv-vls/simd.h" */
+/* begin file simdjson/rvv-vls/simd.h */
+#ifndef SIMDJSON_RVV_VLS_SIMD_H
+#define SIMDJSON_RVV_VLS_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+namespace simd {
+
+#if __riscv_v_fixed_vlen >= 512
+  static constexpr size_t VL8 = 512/8;
+  using vint8_t   = vint8m1_t   __attribute__((riscv_rvv_vector_bits(512)));
+  using vuint8_t  = vuint8m1_t  __attribute__((riscv_rvv_vector_bits(512)));
+  using vbool_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+  using vbitmask_t = uint64_t;
+#else
+  static constexpr size_t VL8 = __riscv_v_fixed_vlen/8;
+  using vint8_t   = vint8m1_t   __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen)));
+  using vuint8_t  = vuint8m1_t  __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen)));
+  using vbool_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen/8)));
+  #if __riscv_v_fixed_vlen == 128
+    using vbitmask_t = uint16_t;
+  #elif __riscv_v_fixed_vlen == 256
+    using vbitmask_t = uint32_t;
+  #endif
+#endif
+
+#if __riscv_v_fixed_vlen == 128
+  using vuint8x64_t = vuint8m4_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool2_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#elif __riscv_v_fixed_vlen == 256
+  using vuint8x64_t = vuint8m2_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool4_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#else
+  using vuint8x64_t = vuint8m1_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#endif
+
+  template
+  struct simd8;
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8 {
+    vbool_t value;
+    using bitmask_t = vbitmask_t;
+    static constexpr int SIZE = sizeof(value);
+
+    simdjson_inline simd8(const vbool_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(__riscv_vmclr_m_b8(VL8)) {}
+    simdjson_inline simd8(bool _value) : simd8(splat(_value)) {}
+
+    simdjson_inline operator const vbool_t&() const { return value; }
+    simdjson_inline operator vbool_t&() { return value; }
+
+    static simdjson_inline simd8 splat(bool _value) {
+      return __riscv_vreinterpret_b8(__riscv_vmv_v_x_u64m1(((uint64_t)!_value)-1, 1));
+    }
+
+    simdjson_inline vbitmask_t to_bitmask() const {
+#if __riscv_v_fixed_vlen == 128
+      return __riscv_vmv_x(__riscv_vreinterpret_u16m1(value));
+#elif __riscv_v_fixed_vlen == 256
+      return __riscv_vmv_x(__riscv_vreinterpret_u32m1(value));
+#else
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(value));
+#endif
+    }
+
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const {  return __riscv_vmor(*this, other, VL8); }
+    simdjson_inline simd8 operator&(const simd8 other) const {  return __riscv_vmand(*this, other, VL8); }
+    simdjson_inline simd8 operator^(const simd8 other) const {  return __riscv_vmxor(*this, other, VL8); }
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return __riscv_vmandn(other, *this, VL8); }
+    simdjson_inline simd8 operator~() const { return __riscv_vmnot(*this, VL8); }
+    simdjson_inline simd8& operator|=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline simd8& operator&=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline simd8& operator^=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8 {
+
+    vuint8_t value;
+    static constexpr int SIZE = sizeof(value);
+
+    simdjson_inline simd8(const vuint8_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(zero()) {}
+    simdjson_inline simd8(const uint8_t values[VL8]) : simd8(load(values)) {}
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    simdjson_inline simd8(simd8 mask) : value(__riscv_vmerge_vxm_u8m1(zero(), -1, (vbool_t)mask, VL8)) {}
+
+    simdjson_inline operator const vuint8_t&() const { return this->value; }
+    simdjson_inline operator vuint8_t&() { return this->value; }
+
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(vuint8_t{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
+
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    static simdjson_inline vuint8_t splat(uint8_t _value) { return __riscv_vmv_v_x_u8m1(_value, VL8); }
+    static simdjson_inline vuint8_t zero() { return splat(0); }
+    static simdjson_inline vuint8_t load(const uint8_t values[VL8]) { return __riscv_vle8_v_u8m1(values, VL8); }
+
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const { return  __riscv_vor_vv_u8m1(  value, other, VL8); }
+    simdjson_inline simd8 operator&(const simd8 other) const { return  __riscv_vand_vv_u8m1( value, other, VL8); }
+    simdjson_inline simd8 operator^(const simd8 other) const { return  __riscv_vxor_vv_u8m1( value, other, VL8); }
+    simdjson_inline simd8 operator~() const { return __riscv_vnot_v_u8m1(value, VL8); }
+#if __riscv_zvbb
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return __riscv_vandn_vv_u8m1(other, value, VL8); }
+#else
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return other & ~*this; }
+#endif
+    simdjson_inline simd8& operator|=(const simd8 other) { value = *this | other; return *this; }
+    simdjson_inline simd8& operator&=(const simd8 other) { value = *this & other; return *this; }
+    simdjson_inline simd8& operator^=(const simd8 other) { value = *this ^ other; return *this; }
+
+    simdjson_inline simd8 operator==(const simd8 other) const { return __riscv_vmseq(value, other, VL8); }
+    simdjson_inline simd8 operator==(uint8_t other) const { return __riscv_vmseq(value, other, VL8); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return __riscv_vslideup(__riscv_vslidedown(prev_chunk, VL8-N, VL8), value, N, VL8);
+    }
+
+    // Store to array
+    simdjson_inline void store(uint8_t dst[VL8]) const { return __riscv_vse8(dst, value, VL8); }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return __riscv_vsaddu(value, other, VL8); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __riscv_vssubu(value, other, VL8); }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return __riscv_vadd(value, other, VL8); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __riscv_vsub(value, other, VL8); }
+    simdjson_inline simd8& operator+=(const simd8 other) { value = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { value = *this - other; return *this; }
+
+    // Order-specific operations
+    simdjson_inline simd8 operator<=(const simd8 other) const { return __riscv_vmsleu(value, other, VL8); }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return __riscv_vmsgeu(value, other, VL8); }
+    simdjson_inline simd8 operator<(const simd8 other) const  { return __riscv_vmsltu(value, other, VL8); }
+    simdjson_inline simd8 operator>(const simd8 other) const  { return __riscv_vmsgtu(value, other, VL8); }
+
+    // Same as >, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero.
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return simd8(*this > other); }
+    // Same as <, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero.
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return simd8(*this < other); }
+
+    // Bit-specific operations
+    simdjson_inline bool any_bits_set_anywhere() const {
+      return __riscv_vfirst(__riscv_vmsne(value, 0, VL8), VL8) >= 0;
+    }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return (*this & bits).any_bits_set_anywhere(); }
+    template
+    simdjson_inline simd8 shr() const { return __riscv_vsrl(value, N, VL8); }
+    template
+    simdjson_inline simd8 shl() const { return __riscv_vsll(value, N, VL8); }
+
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return __riscv_vrgather(lookup_table, value, VL8);
+    }
+
+    // compress inactive elements, to match AVX-512 behavior
+    template
+    simdjson_inline void compress(vbitmask_t mask, L * output) const {
+      mask = (vbitmask_t)~mask;
+#if __riscv_v_fixed_vlen == 128
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u16m1(mask, 1));
+#elif __riscv_v_fixed_vlen == 256
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u32m1(mask, 1));
+#else
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u64m1(mask, 1));
+#endif
+      __riscv_vse8_v_u8m1(output, __riscv_vcompress(value, m, VL8), count_ones(mask));
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 {
+    vint8_t value;
+    static constexpr int SIZE = sizeof(value);
+
+    simdjson_inline simd8(const vint8_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(zero()) {}
+    simdjson_inline simd8(const int8_t values[VL8]) : simd8(load(values)) {}
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+
+    simdjson_inline operator const vint8_t&() const { return this->value; }
+    simdjson_inline operator vint8_t&() { return this->value; }
+
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(vint8_t{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
+
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    static simdjson_inline vint8_t splat(int8_t _value) { return __riscv_vmv_v_x_i8m1(_value, VL8); }
+    static simdjson_inline vint8_t zero() { return splat(0); }
+    static simdjson_inline vint8_t load(const int8_t values[VL8]) { return __riscv_vle8_v_i8m1(values, VL8); }
+
+
+    simdjson_inline void store(int8_t dst[VL8]) const { return __riscv_vse8(dst, value, VL8); }
+
+    // Explicit conversion to/from unsigned
+    simdjson_inline explicit simd8(const vuint8_t other): simd8(__riscv_vreinterpret_i8m1(other)) {}
+    simdjson_inline explicit operator simd8() const { return __riscv_vreinterpret_u8m1(value); }
+
+    // Math
+    simdjson_inline simd8 operator+(const simd8 other) const { return __riscv_vadd(value, other, VL8); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __riscv_vsub(value, other, VL8); }
+    simdjson_inline simd8& operator+=(const simd8 other) { value = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { value = *this - other; return *this; }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val( const simd8 other) const { return __riscv_vmax( value, other, VL8); }
+    simdjson_inline simd8 min_val( const simd8 other) const { return __riscv_vmin( value, other, VL8); }
+    simdjson_inline simd8 operator>( const simd8 other) const { return __riscv_vmsgt(value, other, VL8); }
+    simdjson_inline simd8 operator<( const simd8 other) const { return __riscv_vmslt(value, other, VL8); }
+    simdjson_inline simd8 operator==(const simd8 other) const { return __riscv_vmseq(value, other, VL8); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return __riscv_vslideup(__riscv_vslidedown(prev_chunk, VL8-N, VL8), value, N, VL8);
+    }
+
+    // Perform a lookup assuming no value is larger than 16
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return __riscv_vrgather(lookup_table, value, VL8);
+    }
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  template
+  struct simd8x64;
+  template<>
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    vuint8x64_t value;
+
+#if __riscv_v_fixed_vlen >= 512
+    template simd8 get() const { return value; }
+#else
+    template simd8 get() const { return __riscv_vget_u8m1(value, idx); }
+#endif
+
+    simdjson_inline operator const vuint8x64_t&() const { return this->value; }
+    simdjson_inline operator vuint8x64_t&() { return this->value; }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+#if __riscv_v_fixed_vlen == 128
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m4(ptr, n)) {}
+#elif __riscv_v_fixed_vlen == 256
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m2(ptr, n)) {}
+#else
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m1(ptr, n)) {}
+#endif
+
+    simdjson_inline void store(uint8_t ptr[64]) const {
+      __riscv_vse8(ptr, value, 64);
+    }
+
+    simdjson_inline bool is_ascii() const {
+#if __riscv_v_fixed_vlen == 128
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m4(value), 0, 64), 64) < 0;
+#elif __riscv_v_fixed_vlen == 256
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m2(value), 0, 64), 64) < 0;
+#else
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m1(value), 0, 64), 64) < 0;
+#endif
+    }
+
+    // compress inactive elements, to match AVX-512 behavior
+    simdjson_inline uint64_t compress(uint64_t mask, uint8_t * output) const {
+      mask = ~mask;
+#if __riscv_v_fixed_vlen == 128
+      vboolx64_t m = __riscv_vreinterpret_b2(__riscv_vmv_s_x_u64m1(mask, 1));
+#elif __riscv_v_fixed_vlen == 256
+      vboolx64_t m = __riscv_vreinterpret_b4(__riscv_vmv_s_x_u64m1(mask, 1));
+#else
+      vboolx64_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u64m1(mask, 1));
+#endif
+      size_t cnt = count_ones(mask);
+      __riscv_vse8(output, __riscv_vcompress(value, m, 64), cnt);
+      return cnt;
+    }
+
+    simdjson_inline uint64_t eq(const uint8_t m) const {
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vmseq(value, m, 64)));
+    }
+
+    simdjson_inline uint64_t lteq(const uint8_t m) const {
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vmsleu(value, m, 64)));
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_SIMD_H
+/* end file simdjson/rvv-vls/simd.h */
+/* including simdjson/rvv-vls/stringparsing_defs.h: #include "simdjson/rvv-vls/stringparsing_defs.h" */
+/* begin file simdjson/rvv-vls/stringparsing_defs.h */
+#ifndef SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
+#define SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace rvv_vls {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint64_t BYTES_PROCESSED = sizeof(simd8);
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
+  simdjson_inline bool has_backslash() { return ((quote_bits - 1) & bs_bits) != 0; }
+  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
+  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
+
+  uint64_t bs_bits;
+  uint64_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  return { (v == '\\').to_bitmask(), (v == '"').to_bitmask() };
+}
+
+struct escaping {
+  static constexpr uint64_t BYTES_PROCESSED = sizeof(simd8);
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits) / 4; }
+
+  uint64_t escape_bits;
+}; // struct escaping
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  return { ((v == '"') | (v == '\\') | (v == 32)).to_bitmask() };
+}
+
+
+} // unnamed namespace
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
+/* end file simdjson/rvv-vls/stringparsing_defs.h */
+/* including simdjson/rvv-vls/numberparsing_defs.h: #include "simdjson/rvv-vls/numberparsing_defs.h" */
+/* begin file simdjson/rvv-vls/numberparsing_defs.h */
+#ifndef SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
+#define SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+#ifdef JSON_TEST_NUMBERS // for unit testing
+void found_invalid_number(const uint8_t *buf);
+void found_integer(int64_t result, const uint8_t *buf);
+void found_unsigned_integer(uint64_t result, const uint8_t *buf);
+void found_float(double result, const uint8_t *buf);
+#endif
+
+namespace simdjson {
+namespace rvv_vls {
+namespace numberparsing {
+
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const char *chars) {
+  uint64_t val;
+#if __riscv_misaligned_fast
+  memcpy(&val, chars, sizeof(uint64_t));
+#else
+  val = __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vlmul_ext_u8m1(__riscv_vle8_v_u8mf2((uint8_t*)chars, 8))));
+#endif
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+}
+
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  return parse_eight_digits_unrolled(reinterpret_cast(chars));
+}
+
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace rvv_vls
+} // namespace simdjson
+
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+
+#endif // SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
+/* end file simdjson/rvv-vls/numberparsing_defs.h */
+
+#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
+/* end file simdjson/rvv-vls/begin.h */
+/* including simdjson/generic/builder/amalgamated.h for rvv_vls: #include "simdjson/generic/builder/amalgamated.h" */
+/* begin file simdjson/generic/builder/amalgamated.h for rvv_vls */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
+#error simdjson/generic/builder/dependencies.h must be included before simdjson/generic/builder/amalgamated.h!
+#endif
+
+/* including simdjson/generic/builder/json_string_builder.h for rvv_vls: #include "simdjson/generic/builder/json_string_builder.h" */
+/* begin file simdjson/generic/builder/json_string_builder.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace rvv_vls {
+namespace builder {
+  class string_builder;
+}}
+
+template 
+struct has_custom_serialization : std::false_type {};
+
+inline constexpr struct serialize_tag {
+  template 
+  constexpr void operator()(rvv_vls::builder::string_builder& b, T&& obj) const{
+    return tag_invoke(*this, b, std::forward(obj));
+  }
+
+
+} serialize{};
+template 
+struct has_custom_serialization(), std::declval()))
+>> : std::true_type {};
+
+template 
+constexpr bool require_custom_serialization = has_custom_serialization::value;
+#else
+struct has_custom_serialization : std::false_type {};
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+namespace rvv_vls {
+namespace builder {
+/**
+ * A builder for JSON strings representing documents. This is a low-level
+ * builder that is not meant to be used directly by end-users. Though it
+ * supports atomic types (Booleans, strings), it does not support composed
+ * types (arrays and objects).
+ *
+ * Ultimately, this class can support kernel-specific optimizations. E.g.,
+ * it may make use of SIMD instructions to escape strings faster.
+ */
+class string_builder {
+public:
+  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
+
+  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
+
+  /**
+   * Append number (includes Booleans). Booleans are mapped to the strings
+   * false and true. Numbers are converted to strings abiding by the JSON standard.
+   * Floating-point numbers are converted to the shortest string that 'correctly'
+   * represents the number.
+   */
+  template::value>::type>
+  simdjson_inline void append(number_type v) noexcept;
+
+  /**
+   * Append character c.
+   */
+  simdjson_inline void append(char c)  noexcept;
+
+  /**
+   * Append the string 'null'.
+   */
+  simdjson_inline void append_null()  noexcept;
+
+  /**
+   * Clear the content.
+   */
+  simdjson_inline void clear()  noexcept;
+
+  /**
+   * Append the std::string_view, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
+
+  /**
+   * Append the std::string_view surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void escape_and_append_with_quotes()  noexcept;
+#endif
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
+
+  /**
+   * Append the character surrounded by double quotes, after escaping it.
+   * There is no UTF-8 validation.
+   */
+   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
+
+  /**
+   * Append the C string directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *c)  noexcept;
+
+  /**
+   * Append "{" to the buffer.
+   */
+  simdjson_inline void start_object()  noexcept;
+
+  /**
+   * Append "}" to the buffer.
+   */
+  simdjson_inline void end_object()  noexcept;
+
+  /**
+   * Append "[" to the buffer.
+   */
+  simdjson_inline void start_array()  noexcept;
+
+  /**
+   * Append "]" to the buffer.
+   */
+  simdjson_inline void end_array()  noexcept;
+
+  /**
+   * Append "," to the buffer.
+   */
+  simdjson_inline void append_comma()  noexcept;
+
+  /**
+   * Append ":" to the buffer.
+   */
+  simdjson_inline void append_colon()  noexcept;
+
+  /**
+   * Append a key-value pair to the buffer.
+   * The key is escaped and surrounded by double quotes.
+   * The value is escaped if it is a string.
+   */
+  template
+  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  template
+  simdjson_inline void append_key_value(value_type value) noexcept;
+
+  // Support for optional types (std::optional, etc.)
+  template 
+  requires(!require_custom_serialization)
+  simdjson_inline void append(const T &opt);
+
+  template 
+  requires(require_custom_serialization)
+  simdjson_inline void append(T &&val);
+
+  // Support for string-like types
+  template 
+  requires(std::is_convertible::value ||
+  std::is_same::value )
+  simdjson_inline void append(const T &value);
+#endif
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+  // Support for range-based appending (std::ranges::view, etc.)
+  template 
+requires (!std::is_convertible::value && !require_custom_serialization)
+  simdjson_inline void append(const R &range) noexcept;
+#endif
+  /**
+   * Append the std::string_view directly, without escaping.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(std::string_view input)  noexcept;
+
+  /**
+   * Append len characters from str.
+   * There is no UTF-8 validation.
+   */
+  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
+#if SIMDJSON_EXCEPTIONS
+  /**
+   * Creates an std::string from the written JSON buffer.
+   * Throws if memory allocation failed
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string() const noexcept(false);
+
+  /**
+   * Creates an std::string_view from the written JSON buffer.
+   * Throws if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content if needed.
+   */
+  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
+#endif
+
+  /**
+   * Returns a view on the written JSON buffer. Returns an error
+   * if memory allocation failed.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result view() const noexcept;
+
+  /**
+   * Appends the null character to the buffer and returns
+   * a pointer to the beginning of the written JSON buffer.
+   * Returns an error if memory allocation failed.
+   * The result is null-terminated.
+   *
+   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
+   * Use validate_unicode() to check the content.
+   */
+  simdjson_inline simdjson_result c_str() noexcept;
+
+  /**
+   * Return true if the content is valid UTF-8.
+   */
+  simdjson_inline bool validate_unicode() const noexcept;
+
+  /**
+   * Returns the current size of the written JSON buffer.
+   * If an error occurred, returns 0.
+   */
+  simdjson_inline size_t size() const noexcept;
+
+private:
+  /**
+   * Returns true if we can write at least upcoming_bytes bytes.
+   * The underlying buffer is reallocated if needed. It is designed
+   * to be called before writing to the buffer. It should be fast.
+   */
+  simdjson_inline bool capacity_check(size_t upcoming_bytes);
+
+  /**
+   * Grow the buffer to at least desired_capacity bytes.
+   * If the allocation fails, is_valid is set to false. We expect
+   * that this function would not be repeatedly called.
+   */
+  simdjson_inline void grow_buffer(size_t desired_capacity);
+
+  /**
+   * We use this helper function to make sure that is_valid is kept consistent.
+   */
+  simdjson_inline void set_valid(bool valid) noexcept;
+
+  std::unique_ptr buffer{};
+  size_t position{0};
+  size_t capacity{0};
+  bool is_valid{true};
+};
+
+
+
+}
+}
+
+
+#if !SIMDJSON_STATIC_REFLECTION
+// fallback implementation until we have static reflection
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::rvv_vls::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::rvv_vls::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view s;
+  auto e = b.view().get(s);
+  if(e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::rvv_vls::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  simdjson::rvv_vls::builder::string_builder b(initial_capacity);
+  b.append(z);
+  std::string_view sv;
+  auto e = b.view().get(sv);
+  if(e) { return e; }
+  s.assign(sv.data(), sv.size());
+  return simdjson::SUCCESS;
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
+/* end file simdjson/generic/builder/json_string_builder.h for rvv_vls */
+/* including simdjson/generic/builder/json_builder.h for rvv_vls: #include "simdjson/generic/builder/json_builder.h" */
+/* begin file simdjson/generic/builder/json_builder.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#if SIMDJSON_STATIC_REFLECTION
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+// #include  // for std::define_static_string - header not available yet
+
+namespace simdjson {
+namespace rvv_vls {
+namespace builder {
+
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  auto it = t.begin();
+  auto end = t.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+constexpr void atom(string_builder &b, const T &t) {
+  b.escape_and_append_with_quotes(t);
+}
+
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &m) {
+  if (m.empty()) {
+    b.append_raw("{}");
+    return;
+  }
+  b.append('{');
+  bool first = true;
+  for (const auto& [key, value] : m) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    // Keys must be convertible to string_view per the concept
+    b.escape_and_append_with_quotes(key);
+    b.append(':');
+    atom(b, value);
+  }
+  b.append('}');
+}
+
+
+template::value && !std::is_same_v>::type>
+constexpr void atom(string_builder &b, const number_type t) {
+  b.append(t);
+}
+
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &t) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, t.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &opt) {
+  if (opt) {
+    atom(b, opt.value());
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
+template 
+  requires(!require_custom_serialization)
+constexpr void atom(string_builder &b, const T &ptr) {
+  if (ptr) {
+    atom(b, *ptr);
+  } else {
+    b.append_raw("null");
+  }
+}
+
+// Support for enums - serialize as string representation using expand approach from P2996R12
+template 
+  requires(std::is_enum_v && !require_custom_serialization)
+void atom(string_builder &b, const T &e) {
+#if SIMDJSON_STATIC_REFLECTION
+  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
+  template for (constexpr auto enum_val : enumerators) {
+    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
+    if (e == [:enum_val:]) {
+      b.append_raw(enum_str);
+      return;
+    }
+  };
+  // Fallback to integer if enum value not found
+  atom(b, static_cast>(e));
+#else
+  // Fallback: serialize as integer if reflection not available
+  atom(b, static_cast>(e));
+#endif
+}
+
+// Support for appendable containers that don't have operator[] (sets, etc.)
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+constexpr void atom(string_builder &b, const T &container) {
+  if (container.empty()) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  bool first = true;
+  for (const auto& item : container) {
+    if (!first) {
+      b.append(',');
+    }
+    first = false;
+    atom(b, item);
+  }
+  b.append(']');
+}
+
+// append functions that delegate to atom functions for primitive types
+template 
+  requires(std::is_arithmetic_v && !std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v ||
+           std::is_same_v)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
+           !concepts::optional_type && !concepts::smart_pointer &&
+           !std::is_same_v &&
+           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+template 
+  requires(!require_custom_serialization)
+void append(string_builder &b, const T &t) {
+  atom(b, t);
+}
+
+// works for struct
+template 
+  requires(std::is_class_v && !concepts::container_but_not_string &&
+           !concepts::string_view_keyed_map &&
+           !concepts::optional_type &&
+           !concepts::smart_pointer &&
+           !concepts::appendable_containers &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v &&
+           !std::is_same_v && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  int i = 0;
+  b.append('{');
+  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
+    if (i != 0)
+      b.append(',');
+    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
+    b.append_raw(key);
+    b.append(':');
+    atom(b, z.[:dm:]);
+    i++;
+  };
+  b.append('}');
+}
+
+// works for container that have begin() and end() iterators
+template 
+  requires(concepts::container_but_not_string && !require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  auto it = z.begin();
+  auto end = z.end();
+  if (it == end) {
+    b.append_raw("[]");
+    return;
+  }
+  b.append('[');
+  atom(b, *it);
+  ++it;
+  for (; it != end; ++it) {
+    b.append(',');
+    atom(b, *it);
+  }
+  b.append(']');
+}
+
+template 
+  requires (require_custom_serialization)
+void append(string_builder &b, const Z &z) {
+  b.append(z);
+}
+
+
+template 
+simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+
+template 
+string_builder& operator<<(string_builder& b, const Z& z) {
+  append(b, z);
+  return b;
+}
+
+// extract_from: Serialize only specific fields from a struct to JSON
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+void extract_from(string_builder &b, const T &obj) {
+  // Helper to check if a field name matches any of the requested fields
+  auto should_extract = [](std::string_view field_name) constexpr -> bool {
+    return ((FieldNames.view() == field_name) || ...);
+  };
+
+  b.append('{');
+  bool first = true;
+
+  // Iterate through all members of T using reflection
+  template for (constexpr auto mem : std::define_static_array(
+      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+
+    if constexpr (std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+
+      // Only serialize this field if it's in our list of requested fields
+      if constexpr (should_extract(key)) {
+        if (!first) {
+          b.append(',');
+        }
+        first = false;
+
+        // Serialize the key
+        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
+        b.append_raw(quoted_key);
+        b.append(':');
+
+        // Serialize the value
+        atom(b, obj.[:mem:]);
+      }
+    }
+  };
+
+  b.append('}');
+}
+
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  string_builder b(initial_capacity);
+  extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace builder
+} // namespace rvv_vls
+// Alias the function template to 'to' in the global namespace
+template 
+simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = rvv_vls::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  rvv_vls::builder::string_builder b(initial_capacity);
+  rvv_vls::builder::append(b, z);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+template 
+simdjson_warn_unused error_code to_json(const Z &z, std::string &s, size_t initial_capacity = rvv_vls::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  rvv_vls::builder::string_builder b(initial_capacity);
+  rvv_vls::builder::append(b, z);
+  std::string_view view;
+  if(auto e = b.view().get(view); e) { return e; }
+  s.assign(view);
+  return SUCCESS;
+}
+// Global namespace function for extract_from
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = rvv_vls::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  rvv_vls::builder::string_builder b(initial_capacity);
+  rvv_vls::builder::extract_from(b, obj);
+  std::string_view s;
+  if(auto e = b.view().get(s); e) { return e; }
+  return std::string(s);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif
+/* end file simdjson/generic/builder/json_builder.h for rvv_vls */
+/* including simdjson/generic/builder/fractured_json_builder.h for rvv_vls: #include "simdjson/generic/builder/fractured_json_builder.h" */
+/* begin file simdjson/generic/builder/fractured_json_builder.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+#define SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/dom/fractured_json.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_STATIC_REFLECTION
+
+namespace simdjson {
+namespace rvv_vls {
+namespace builder {
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ *
+ * FracturedJson produces human-readable yet compact JSON output by intelligently
+ * choosing between different layout strategies (inline, compact multiline, table,
+ * expanded) based on content complexity, length, and structure similarity.
+ *
+ * This function combines the builder's serialization with FracturedJson formatting:
+ * 1. Serializes the object to minified JSON using reflection
+ * 2. Parses and reformats using FracturedJson
+ *
+ * Example:
+ *   struct User { int id; std::string name; bool active; };
+ *   User user{1, "Alice", true};
+ *   auto result = to_fractured_json_string(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\", \"active\": true }"
+ *
+ * @param obj The object to serialize (must be a reflectable type)
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string, or an error
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Serialize to minified JSON
+  std::string formatted;
+  auto error = to_json_string(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ *
+ * Example:
+ *   struct User { int id; std::string name; std::string email; bool active; };
+ *   User user{1, "Alice", "alice@example.com", true};
+ *   auto result = extract_fractured_json<"id", "name">(user);
+ *   // result.value() == "{ \"id\": 1, \"name\": \"Alice\" }"
+ *
+ * @param obj The object to serialize
+ * @param opts FracturedJson formatting options
+ * @param initial_capacity Initial buffer capacity for serialization
+ * @return The formatted JSON string containing only the specified fields
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
+  // Step 1: Extract fields to minified JSON
+  std::string formatted;
+  auto error = extract_from(obj, initial_capacity).get(formatted);
+  if (error) {
+    return error;
+  }
+
+  // Step 2: Reformat with FracturedJson
+  return fractured_json_string(formatted, opts);
+}
+
+} // namespace builder
+} // namespace rvv_vls
+
+// Global namespace convenience functions
+
+/**
+ * Serialize an object to a FracturedJson-formatted string.
+ * Global namespace version for convenience.
+ */
+template 
+simdjson_warn_unused simdjson_result to_fractured_json_string(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = rvv_vls::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return rvv_vls::builder::to_fractured_json_string(obj, opts, initial_capacity);
+}
+/**
+ * Extract specific fields from an object and format with FracturedJson.
+ * Global namespace version for convenience.
+ */
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_result extract_fractured_json(
+    const T& obj,
+    const fractured_json_options& opts = {},
+    size_t initial_capacity = rvv_vls::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
+  return rvv_vls::builder::extract_fractured_json(obj, opts, initial_capacity);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+#endif // SIMDJSON_GENERIC_FRACTURED_JSON_BUILDER_H
+/* end file simdjson/generic/builder/fractured_json_builder.h for rvv_vls */
+
+
+
+// JSON builder inline definitions
+/* including simdjson/generic/builder/json_string_builder-inl.h for rvv_vls: #include "simdjson/generic/builder/json_string_builder-inl.h" */
+/* begin file simdjson/generic/builder/json_string_builder-inl.h for rvv_vls */
+#include 
+#include 
+#include 
+#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/*
+ * Empirically, we have found that an inlined optimization is important for
+ * performance. The following macros are not ideal. We should find a better
+ * way to inline the code.
+ */
+
+#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
+    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
+     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
+#endif
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
+#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
+#include 
+#ifdef _MSC_VER
+#include 
+#endif
+#endif
+
+namespace simdjson {
+namespace rvv_vls {
+namespace builder {
+
+static SIMDJSON_CONSTEXPR_LAMBDA std::array
+    json_quotable_character = {
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+/**
+
+A possible SWAR implementation of has_json_escapable_byte. It is not used
+because it is slower than the current implementation. It is kept here for
+reference (to show that we tried it).
+
+inline bool has_json_escapable_byte(uint64_t x) {
+  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
+  uint64_t xor2 = x ^ 0x0202020202020202ULL;
+  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
+  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
+  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
+  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
+}
+
+**/
+
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
+simple_needs_escaping(std::string_view v) {
+  for (char c : v) {
+    // a table lookup is faster than a series of comparisons
+    if (json_quotable_character[static_cast(c)]) {
+      return true;
+    }
+  }
+  return false;
+}
+
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  uint8x16_t running = vdupq_n_u8(0);
+  uint8x16_t v34 = vdupq_n_u8(34);
+  uint8x16_t v92 = vdupq_n_u8(92);
+
+  for (; i + 15 < view.size(); i += 16) {
+    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  if (i < view.size()) {
+    uint8x16_t word =
+        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
+    running = vorrq_u8(running, vceqq_u8(word, v34));
+    running = vorrq_u8(running, vceqq_u8(word, v92));
+    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
+  }
+  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __m128i running = _mm_setzero_si128();
+  for (; i + 15 < view.size(); i += 16) {
+
+    __m128i word =
+        _mm_loadu_si128(reinterpret_cast(view.data() + i));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  if (i < view.size()) {
+    __m128i word = _mm_loadu_si128(
+        reinterpret_cast(view.data() + view.length() - 16));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
+    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
+    running = _mm_or_si128(
+        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
+                                _mm_setzero_si128()));
+  }
+  return _mm_movemask_epi8(running) != 0;
+}
+#else
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  return simple_needs_escaping(view);
+}
+#endif
+
+// Scalar fallback for finding next quotable character
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character_scalar(const std::string_view view,
+                                         size_t location) noexcept {
+  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
+    if (json_quotable_character[static_cast(*pos)]) {
+      return pos - view.begin();
+    }
+  }
+  return size_t(view.size());
+}
+
+// SIMD-accelerated position finding that directly locates the first quotable
+// character, combining detection and position extraction in a single pass to
+// minimize redundant work.
+#if SIMDJSON_EXPERIMENTAL_HAS_NEON
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  uint8x16_t v34 = vdupq_n_u8(34);  // '"'
+  uint8x16_t v92 = vdupq_n_u8(92);  // '\\'
+  uint8x16_t v32 = vdupq_n_u8(32);  // control char threshold
+
+  while (remaining >= 16) {
+    uint8x16_t word = vld1q_u8(ptr);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    uint8x16_t needs_escape = vceqq_u8(word, v34);
+    needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
+    needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
+
+    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
+      // Found quotable character - extract exact byte position using ctz
+      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
+      uint64_t lo = vgetq_lane_u64(as64, 0);
+      uint64_t hi = vgetq_lane_u64(as64, 1);
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      if (lo != 0) {
+        _BitScanForward64(&trailing_zero, lo);
+        return offset + trailing_zero / 8;
+      } else {
+        _BitScanForward64(&trailing_zero, hi);
+        return offset + 8 + trailing_zero / 8;
+      }
+#else
+      if (lo != 0) {
+        return offset + __builtin_ctzll(lo) / 8;
+      } else {
+        return offset + 8 + __builtin_ctzll(hi) / 8;
+      }
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants
+  __m128i v34 = _mm_set1_epi8(34);  // '"'
+  __m128i v92 = _mm_set1_epi8(92);  // '\\'
+  __m128i v31 = _mm_set1_epi8(31);  // for control char detection
+
+  while (remaining >= 16) {
+    __m128i word = _mm_loadu_si128(reinterpret_cast(ptr));
+
+    // Check for quotable characters
+    __m128i needs_escape = _mm_cmpeq_epi8(word, v34);
+    needs_escape = _mm_or_si128(needs_escape, _mm_cmpeq_epi8(word, v92));
+    needs_escape = _mm_or_si128(
+        needs_escape,
+        _mm_cmpeq_epi8(_mm_subs_epu8(word, v31), _mm_setzero_si128()));
+
+    int mask = _mm_movemask_epi8(needs_escape);
+    if (mask != 0) {
+      // Found quotable character - use trailing zero count to find position
+      size_t offset = ptr - reinterpret_cast(view.data());
+#ifdef _MSC_VER
+      unsigned long trailing_zero = 0;
+      _BitScanForward(&trailing_zero, mask);
+      return offset + trailing_zero;
+#else
+      return offset + __builtin_ctz(mask);
+#endif
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#else
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  return find_next_json_quotable_character_scalar(view, location);
+}
+#endif
+
+SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
+    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
+    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
+    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
+    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
+    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
+
+// All Unicode characters may be placed within the quotation marks, except for
+// the characters that MUST be escaped: quotation mark, reverse solidus, and the
+// control characters (U+0000 through U+001F). There are two-character sequence
+// escape representations of some popular characters:
+// \", \\, \b, \f, \n, \r, \t.
+SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline void escape_json_char(char c, char *&out) {
+  if (c == '"') {
+    memcpy(out, "\\\"", 2);
+    out += 2;
+  } else if (c == '\\') {
+    memcpy(out, "\\\\", 2);
+    out += 2;
+  } else {
+    std::string_view v = control_chars[uint8_t(c)];
+    memcpy(out, v.data(), v.size());
+    out += v.size();
+  }
+}
+
+// Writes the escaped version of input to out, returning the number of bytes
+// written. Uses SIMD position finding to locate quotable characters efficiently.
+inline size_t write_string_escaped(const std::string_view input, char *out) {
+  size_t mysize = input.size();
+
+  // Use SIMD position finder directly - it returns mysize if no escape needed
+  size_t location = find_next_json_quotable_character(input, 0);
+  if (location == mysize) {
+    // Fast path: no escaping needed
+    memcpy(out, input.data(), input.size());
+    return input.size();
+  }
+
+  const char *const initout = out;
+  memcpy(out, input.data(), location);
+  out += location;
+  escape_json_char(input[location], out);
+  location += 1;
+  while (location < mysize) {
+    size_t newlocation = find_next_json_quotable_character(input, location);
+    memcpy(out, input.data() + location, newlocation - location);
+    out += newlocation - location;
+    location = newlocation;
+    if (location == mysize) {
+      break;
+    }
+    escape_json_char(input[location], out);
+    location += 1;
+  }
+  return out - initout;
+}
+
+simdjson_inline string_builder::string_builder(size_t initial_capacity)
+    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
+      capacity(buffer.get() != nullptr ? initial_capacity : 0),
+      is_valid(buffer.get() != nullptr) {}
+
+simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
+  // We use the convention that when is_valid is false, then the capacity and
+  // the position are 0.
+  // Most of the time, this function will return true.
+  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
+    return true;
+  }
+  // check for overflow, most of the time there is no overflow
+  if (simdjson_unlikely(position + upcoming_bytes < position)) {
+    return false;
+  }
+  // We will rarely get here.
+  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
+  // If the buffer allocation failed, we set is_valid to false.
+  return is_valid;
+}
+
+simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
+  if (!is_valid) {
+    return;
+  }
+  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
+  if (new_buffer.get() == nullptr) {
+    set_valid(false);
+    return;
+  }
+  std::memcpy(new_buffer.get(), buffer.get(), position);
+  buffer.swap(new_buffer);
+  capacity = desired_capacity;
+}
+
+simdjson_inline void string_builder::set_valid(bool valid) noexcept {
+  if (!valid) {
+    is_valid = false;
+    capacity = 0;
+    position = 0;
+    buffer.reset();
+  } else {
+    is_valid = true;
+  }
+}
+
+simdjson_inline size_t string_builder::size() const noexcept {
+  return position;
+}
+
+simdjson_inline void string_builder::append(char c) noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = c;
+  }
+}
+
+simdjson_inline void string_builder::append_null() noexcept {
+  constexpr char null_literal[] = "null";
+  constexpr size_t null_len = sizeof(null_literal) - 1;
+  if (capacity_check(null_len)) {
+    std::memcpy(buffer.get() + position, null_literal, null_len);
+    position += null_len;
+  }
+}
+
+simdjson_inline void string_builder::clear() noexcept {
+  position = 0;
+  // if it was invalid, we should try to repair it
+  if (!is_valid) {
+    capacity = 0;
+    buffer.reset();
+    is_valid = true;
+  }
+}
+
+namespace internal {
+
+template ::value>::type>
+simdjson_really_inline int int_log2(number_type x) {
+  return 63 - leading_zeroes(uint64_t(x) | 1);
+}
+
+simdjson_really_inline int fast_digit_count_32(uint32_t x) {
+  static uint64_t table[] = {
+      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
+      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
+      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
+      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
+      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
+      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
+      42949672960, 42949672960};
+  return uint32_t((x + table[int_log2(x)]) >> 32);
+}
+
+simdjson_really_inline int fast_digit_count_64(uint64_t x) {
+  static uint64_t table[] = {9,
+                             99,
+                             999,
+                             9999,
+                             99999,
+                             999999,
+                             9999999,
+                             99999999,
+                             999999999,
+                             9999999999,
+                             99999999999,
+                             999999999999,
+                             9999999999999,
+                             99999999999999,
+                             999999999999999ULL,
+                             9999999999999999ULL,
+                             99999999999999999ULL,
+                             999999999999999999ULL,
+                             9999999999999999999ULL};
+  int y = (19 * int_log2(x) >> 6);
+  y += x > table[y];
+  return y + 1;
+}
+
+template ::value>::type>
+simdjson_really_inline size_t digit_count(number_type v) noexcept {
+  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
+                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
+                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
+  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
+    return fast_digit_count_32(static_cast(v));
+  }
+  else {
+    return fast_digit_count_64(static_cast(v));
+  }
+}
+static const char decimal_table[200] = {
+    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
+    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
+    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
+    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
+    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
+    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
+    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
+    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
+    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
+    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
+    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
+    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
+    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
+    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
+    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
+    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
+    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
+};
+} // namespace internal
+
+template 
+simdjson_inline void string_builder::append(number_type v) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_integral::value ||
+                    std::is_floating_point::value,
+                "Unsupported number type");
+  // If C++17 is available, we can 'if constexpr' here.
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    if (v) {
+      constexpr char true_literal[] = "true";
+      constexpr size_t true_len = sizeof(true_literal) - 1;
+      if (capacity_check(true_len)) {
+        std::memcpy(buffer.get() + position, true_literal, true_len);
+        position += true_len;
+      }
+    } else {
+      constexpr char false_literal[] = "false";
+      constexpr size_t false_len = sizeof(false_literal) - 1;
+      if (capacity_check(false_len)) {
+        std::memcpy(buffer.get() + position, false_literal, false_len);
+        position += false_len;
+      }
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
+    // Process 4 digits at a time instead of 2, reducing store operations
+    // and divisions by approximately half for large numbers.
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      unsigned_type pv = static_cast(v);
+      size_t dc = internal::digit_count(pv);
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;  // High 2 digits of remainder
+        unsigned_type r_lo = r % 100;  // Low 2 digits of remainder
+        // Write low 2 digits first (rightmost), then high 2 digits
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits with original 2-digit loop
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
+    // Same 4-digit batching as unsigned path for signed integers
+    constexpr size_t max_number_size = 20;
+    if (capacity_check(max_number_size)) {
+      using unsigned_type = typename std::make_unsigned::type;
+      bool negative = v < 0;
+      unsigned_type pv = static_cast(v);
+      if (negative) {
+        pv = 0 - pv; // the 0 is for Microsoft
+      }
+      size_t dc = internal::digit_count(pv);
+      // by always writing the minus sign, we avoid the branch.
+      buffer.get()[position] = '-';
+      position += negative ? 1 : 0;
+      char *write_pointer = buffer.get() + position + dc - 1;
+
+      // Process 4 digits per iteration for large numbers
+      while (pv >= 10000) {
+        unsigned_type q = pv / 10000;
+        unsigned_type r = pv % 10000;
+        unsigned_type r_hi = r / 100;
+        unsigned_type r_lo = r % 100;
+        memcpy(write_pointer - 1, &internal::decimal_table[r_lo * 2], 2);
+        memcpy(write_pointer - 3, &internal::decimal_table[r_hi * 2], 2);
+        write_pointer -= 4;
+        pv = q;
+      }
+
+      // Handle remaining 1-4 digits
+      while (pv >= 100) {
+        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
+        write_pointer -= 2;
+        pv /= 100;
+      }
+      if (pv >= 10) {
+        *write_pointer-- = char('0' + (pv % 10));
+        pv /= 10;
+      }
+      *write_pointer = char('0' + pv);
+      position += dc;
+    }
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
+    constexpr size_t max_number_size = 24;
+    if (capacity_check(max_number_size)) {
+      // We could specialize for float.
+      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
+                                               double(v));
+      position = end - buffer.get();
+    }
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(6 * input.size())) {
+    position += write_string_escaped(input, buffer.get() + position);
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * input.size())) {
+    buffer.get()[position++] = '"';
+    position += write_string_escaped(input, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(char input) noexcept {
+  // escaping might turn a control character into \x00xx so 6 characters.
+  if (capacity_check(2 + 6 * 1)) {
+    buffer.get()[position++] = '"';
+    std::string_view cinput(&input, 1);
+    position += write_string_escaped(cinput, buffer.get() + position);
+    buffer.get()[position++] = '"';
+  }
+}
+
+simdjson_inline void
+string_builder::escape_and_append_with_quotes(const char *input) noexcept {
+  std::string_view cinput(input);
+  escape_and_append_with_quotes(cinput);
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
+  escape_and_append_with_quotes(constevalutil::string_constant::value);
+}
+#endif
+
+simdjson_inline void string_builder::append_raw(const char *c) noexcept {
+  size_t len = std::strlen(c);
+  append_raw(c, len);
+}
+
+simdjson_inline void
+string_builder::append_raw(std::string_view input) noexcept {
+  if (capacity_check(input.size())) {
+    std::memcpy(buffer.get() + position, input.data(), input.size());
+    position += input.size();
+  }
+}
+
+simdjson_inline void string_builder::append_raw(const char *str,
+                                                size_t len) noexcept {
+  if (capacity_check(len)) {
+    std::memcpy(buffer.get() + position, str, len);
+    position += len;
+  }
+}
+#if SIMDJSON_SUPPORTS_CONCEPTS
+// Support for optional types (std::optional, etc.)
+template 
+  requires(!require_custom_serialization)
+simdjson_inline void string_builder::append(const T &opt) {
+  if (opt) {
+    append(*opt);
+  } else {
+    append_null();
+  }
+}
+
+template 
+  requires(require_custom_serialization)
+simdjson_inline void string_builder::append(T &&val) {
+  serialize(*this, std::forward(val));
+}
+
+template 
+  requires(std::is_convertible::value ||
+           std::is_same::value)
+simdjson_inline void string_builder::append(const T &value) {
+  escape_and_append_with_quotes(value);
+}
+#endif
+
+#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
+// Support for range-based appending (std::ranges::view, etc.)
+template 
+  requires(!std::is_convertible::value && !require_custom_serialization)
+simdjson_inline void string_builder::append(const R &range) noexcept {
+  auto it = std::ranges::begin(range);
+  auto end = std::ranges::end(range);
+  if constexpr (concepts::is_pair>) {
+    start_object();
+
+    if (it == end) {
+      end_object();
+      return; // Handle empty range
+    }
+    // Append first item without leading comma
+    append_key_value(it->first, it->second);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append_key_value(it->first, it->second);
+    }
+    end_object();
+  } else {
+    start_array();
+    if (it == end) {
+      end_array();
+      return; // Handle empty range
+    }
+
+    // Append first item without leading comma
+    append(*it);
+    ++it;
+
+    // Append remaining items with preceding commas
+    for (; it != end; ++it) {
+      append_comma();
+      append(*it);
+    }
+    end_array();
+  }
+}
+
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+simdjson_inline string_builder::operator std::string() const noexcept(false) {
+  return std::string(operator std::string_view());
+}
+
+simdjson_inline string_builder::operator std::string_view() const
+    noexcept(false) simdjson_lifetime_bound {
+  return view();
+}
+#endif
+
+simdjson_inline simdjson_result
+string_builder::view() const noexcept {
+  if (!is_valid) {
+    return simdjson::OUT_OF_CAPACITY;
+  }
+  return std::string_view(buffer.get(), position);
+}
+
+simdjson_inline simdjson_result string_builder::c_str() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position] = '\0';
+    return buffer.get();
+  }
+  return simdjson::OUT_OF_CAPACITY;
+}
+
+simdjson_inline bool string_builder::validate_unicode() const noexcept {
+  return simdjson::validate_utf8(buffer.get(), position);
+}
+
+simdjson_inline void string_builder::start_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '{';
+  }
+}
+
+simdjson_inline void string_builder::end_object() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '}';
+  }
+}
+
+simdjson_inline void string_builder::start_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = '[';
+  }
+}
+
+simdjson_inline void string_builder::end_array() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ']';
+  }
+}
+
+simdjson_inline void string_builder::append_comma() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ',';
+  }
+}
+
+simdjson_inline void string_builder::append_colon() noexcept {
+  if (capacity_check(1)) {
+    buffer.get()[position++] = ':';
+  }
+}
+
+template 
+simdjson_inline void
+string_builder::append_key_value(key_type key, value_type value) noexcept {
+  static_assert(std::is_same::value ||
+                    std::is_convertible::value,
+                "Unsupported key type");
+  escape_and_append_with_quotes(key);
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+template 
+simdjson_inline void
+string_builder::append_key_value(value_type value) noexcept {
+  escape_and_append_with_quotes();
+  append_colon();
+  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    append_null();
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(
+      std::is_convertible::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
+    escape_and_append_with_quotes(value);
+  }
+  else {
+    append(value);
+  }
+}
+#endif
+
+} // namespace builder
+} // namespace rvv_vls
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
+/* end file simdjson/generic/builder/json_string_builder-inl.h for rvv_vls */
+
+/* end file simdjson/generic/builder/amalgamated.h for rvv_vls */
+/* including simdjson/rvv-vls/end.h: #include "simdjson/rvv-vls/end.h" */
+/* begin file simdjson/rvv-vls/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+/* undefining SIMDJSON_IMPLEMENTATION from "rvv_vls" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/rvv-vls/end.h */
+
+#endif // SIMDJSON_RVV_VLS_BUILDER_H
+/* end file simdjson/rvv-vls/builder.h */
+#else
+#error Unknown SIMDJSON_BUILTIN_IMPLEMENTATION
+#endif
+
+/* undefining SIMDJSON_CONDITIONAL_INCLUDE */
+#undef SIMDJSON_CONDITIONAL_INCLUDE
+
+namespace simdjson {
+  /**
+   * @copydoc simdjson::SIMDJSON_BUILTIN_IMPLEMENTATION::builder
+   */
+  namespace builder = SIMDJSON_BUILTIN_IMPLEMENTATION::builder;
+} // namespace simdjson
+
+#endif // SIMDJSON_BUILTIN_BUILDER_H
+/* end file simdjson/builtin/builder.h */
+
+namespace simdjson {
+  /**
+   * @copydoc simdjson::builtin::builder
+   */
+  namespace builder = builtin::builder;
+
+} // namespace simdjson
+
+#endif // SIMDJSON_BUILDER_H
+/* end file simdjson/builder.h */
+/* including simdjson/ondemand.h: #include "simdjson/ondemand.h" */
+/* begin file simdjson/ondemand.h */
+#ifndef SIMDJSON_ONDEMAND_H
+#define SIMDJSON_ONDEMAND_H
+
+/* including simdjson/builtin/ondemand.h: #include "simdjson/builtin/ondemand.h" */
+/* begin file simdjson/builtin/ondemand.h */
+#ifndef SIMDJSON_BUILTIN_ONDEMAND_H
+#define SIMDJSON_BUILTIN_ONDEMAND_H
+
+/* skipped duplicate #include "simdjson/builtin.h" */
+/* skipped duplicate #include "simdjson/builtin/base.h" */
+
+/* including simdjson/generic/ondemand/dependencies.h: #include "simdjson/generic/ondemand/dependencies.h" */
+/* begin file simdjson/generic/ondemand/dependencies.h */
+#ifdef SIMDJSON_CONDITIONAL_INCLUDE
+#error simdjson/generic/ondemand/dependencies.h must be included before defining SIMDJSON_CONDITIONAL_INCLUDE!
+#endif
+
+#ifndef SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H
+#define SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H
+
+// Internal headers needed for ondemand generics.
+// All includes not under simdjson/generic/ondemand must be here!
+// Otherwise, amalgamation will fail.
+/* skipped duplicate #include "simdjson/dom/base.h" // for MINIMAL_DOCUMENT_CAPACITY */
+/* skipped duplicate #include "simdjson/implementation.h" */
+/* skipped duplicate #include "simdjson/padded_string.h" */
+/* skipped duplicate #include "simdjson/padded_string_view.h" */
+/* skipped duplicate #include "simdjson/internal/dom_parser_implementation.h" */
+/* skipped duplicate #include "simdjson/jsonpathutil.h" */
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H
+/* end file simdjson/generic/ondemand/dependencies.h */
+
+/* defining SIMDJSON_CONDITIONAL_INCLUDE */
+#define SIMDJSON_CONDITIONAL_INCLUDE
+
+#if SIMDJSON_BUILTIN_IMPLEMENTATION_IS(arm64)
+/* including simdjson/arm64/ondemand.h: #include "simdjson/arm64/ondemand.h" */
+/* begin file simdjson/arm64/ondemand.h */
+#ifndef SIMDJSON_ARM64_ONDEMAND_H
+#define SIMDJSON_ARM64_ONDEMAND_H
+
+/* including simdjson/arm64/begin.h: #include "simdjson/arm64/begin.h" */
+/* begin file simdjson/arm64/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "arm64" */
+#define SIMDJSON_IMPLEMENTATION arm64
+/* including simdjson/arm64/base.h: #include "simdjson/arm64/base.h" */
+/* begin file simdjson/arm64/base.h */
+#ifndef SIMDJSON_ARM64_BASE_H
+#define SIMDJSON_ARM64_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+/**
+ * Implementation for NEON (ARMv8).
+ */
+namespace arm64 {
+
+class implementation;
+
+namespace {
+namespace simd {
+template  struct simd8;
+template  struct simd8x64;
+} // namespace simd
+} // unnamed namespace
+
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_ARM64_BASE_H
+/* end file simdjson/arm64/base.h */
+/* including simdjson/arm64/intrinsics.h: #include "simdjson/arm64/intrinsics.h" */
+/* begin file simdjson/arm64/intrinsics.h */
+#ifndef SIMDJSON_ARM64_INTRINSICS_H
+#define SIMDJSON_ARM64_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+// This should be the correct header whether
+// you use visual studio or other compilers.
+#include 
+
+static_assert(sizeof(uint8x16_t) <= simdjson::SIMDJSON_PADDING, "insufficient padding for arm64");
+
+#endif //  SIMDJSON_ARM64_INTRINSICS_H
+/* end file simdjson/arm64/intrinsics.h */
+/* including simdjson/arm64/bitmanipulation.h: #include "simdjson/arm64/bitmanipulation.h" */
+/* begin file simdjson/arm64/bitmanipulation.h */
+#ifndef SIMDJSON_ARM64_BITMANIPULATION_H
+#define SIMDJSON_ARM64_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long ret;
+  // Search the mask data from least significant bit (LSB)
+  // to the most significant bit (MSB) for a set bit (1).
+  _BitScanForward64(&ret, input_num);
+  return (int)ret;
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO
+  return __builtin_ctzll(input_num);
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return input_num & (input_num-1);
+}
+
+// We sometimes call leading_zeroes on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+// Applies only when SIMDJSON_PREFER_REVERSE_BITS is defined and true.
+// (See below.)
+SIMDJSON_NO_SANITIZE_UNDEFINED
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long leading_zero = 0;
+  // Search the mask data from most significant bit (MSB)
+  // to least significant bit (LSB) for a set bit (1).
+  if (_BitScanReverse64(&leading_zero, input_num))
+    return (int)(63 - leading_zero);
+  else
+    return 64;
+#else
+  return __builtin_clzll(input_num);
+#endif// SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int count_ones(uint64_t input_num) {
+   return vaddv_u8(vcnt_u8(vcreate_u8(input_num)));
+}
+
+
+#if defined(__GNUC__) // catches clang and gcc
+/**
+ * ARM has a fast 64-bit "bit reversal function" that is handy. However,
+ * it is not generally available as an intrinsic function under Visual
+ * Studio (though this might be changing). Even under clang/gcc, we
+ * apparently need to invoke inline assembly.
+ */
+/*
+ * We use SIMDJSON_PREFER_REVERSE_BITS as a hint that algorithms that
+ * work well with bit reversal may use it.
+ */
+#define SIMDJSON_PREFER_REVERSE_BITS 1
+
+/* reverse the bits */
+simdjson_inline uint64_t reverse_bits(uint64_t input_num) {
+  uint64_t rev_bits;
+  __asm("rbit %0, %1" : "=r"(rev_bits) : "r"(input_num));
+  return rev_bits;
+}
+
+/**
+ * Flips bit at index 63 - lz. Thus if you have 'leading_zeroes' leading zeroes,
+ * then this will set to zero the leading bit. It is possible for leading_zeroes to be
+ * greating or equal to 63 in which case we trigger undefined behavior, but the output
+ * of such undefined behavior is never used.
+ **/
+SIMDJSON_NO_SANITIZE_UNDEFINED
+simdjson_inline uint64_t zero_leading_bit(uint64_t rev_bits, int leading_zeroes) {
+  return rev_bits ^ (uint64_t(0x8000000000000000) >> leading_zeroes);
+}
+
+#endif
+
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  *result = value1 + value2;
+  return *result < value1;
+#else
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+#endif
+}
+
+} // unnamed namespace
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_ARM64_BITMANIPULATION_H
+/* end file simdjson/arm64/bitmanipulation.h */
+/* including simdjson/arm64/bitmask.h: #include "simdjson/arm64/bitmask.h" */
+/* begin file simdjson/arm64/bitmask.h */
+#ifndef SIMDJSON_ARM64_BITMASK_H
+#define SIMDJSON_ARM64_BITMASK_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace {
+
+//
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
+//
+// For example, prefix_xor(00100100) == 00011100
+//
+simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
+  /////////////
+  // We could do this with PMULL, but it is apparently slow.
+  //
+  //#ifdef __ARM_FEATURE_CRYPTO // some ARM processors lack this extension
+  //return vmull_p64(-1ULL, bitmask);
+  //#else
+  // Analysis by @sebpop:
+  // When diffing the assembly for src/stage1_find_marks.cpp I see that the eors are all spread out
+  // in between other vector code, so effectively the extra cycles of the sequence do not matter
+  // because the GPR units are idle otherwise and the critical path is on the FP side.
+  // Also the PMULL requires two extra fmovs: GPR->FP (3 cycles in N1, 5 cycles in A72 )
+  // and FP->GPR (2 cycles on N1 and 5 cycles on A72.)
+  ///////////
+  bitmask ^= bitmask << 1;
+  bitmask ^= bitmask << 2;
+  bitmask ^= bitmask << 4;
+  bitmask ^= bitmask << 8;
+  bitmask ^= bitmask << 16;
+  bitmask ^= bitmask << 32;
+  return bitmask;
+}
+
+} // unnamed namespace
+} // namespace arm64
+} // namespace simdjson
+
+#endif
+/* end file simdjson/arm64/bitmask.h */
+/* including simdjson/arm64/numberparsing_defs.h: #include "simdjson/arm64/numberparsing_defs.h" */
+/* begin file simdjson/arm64/numberparsing_defs.h */
+#ifndef SIMDJSON_ARM64_NUMBERPARSING_DEFS_H
+#define SIMDJSON_ARM64_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+#if SIMDJSON_REGULAR_VISUAL_STUDIO && SIMDJSON_IS_ARM64
+// __umulh requires intrin.h
+#include 
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO && SIMDJSON_IS_ARM64
+
+namespace simdjson {
+namespace arm64 {
+namespace numberparsing {
+
+// we don't have SSE, so let us use a scalar function
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  uint64_t val;
+  std::memcpy(&val, chars, sizeof(uint64_t));
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+}
+
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+#if SIMDJSON_IS_ARM64
+  // ARM64 has native support for 64-bit multiplications, no need to emultate
+  answer.high = __umulh(value1, value2);
+  answer.low = value1 * value2;
+#else
+  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
+#endif // SIMDJSON_IS_ARM64
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+#endif
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace arm64
+} // namespace simdjson
+
+#ifndef SIMDJSON_SWAR_NUMBER_PARSING
+#if SIMDJSON_IS_BIG_ENDIAN
+#define SIMDJSON_SWAR_NUMBER_PARSING 0
+#else
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+#endif
+#endif
+
+#endif // SIMDJSON_ARM64_NUMBERPARSING_DEFS_H
+/* end file simdjson/arm64/numberparsing_defs.h */
+/* including simdjson/arm64/simd.h: #include "simdjson/arm64/simd.h" */
+/* begin file simdjson/arm64/simd.h */
+#ifndef SIMDJSON_ARM64_SIMD_H
+#define SIMDJSON_ARM64_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace {
+namespace simd {
+
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+namespace {
+// Start of private section with Visual Studio workaround
+
+
+#ifndef simdjson_make_uint8x16_t
+#define simdjson_make_uint8x16_t(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, \
+                             x13, x14, x15, x16)                                   \
+   ([=]() {                                                                        \
+     uint8_t array[16] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8,                    \
+                                 x9, x10, x11, x12, x13, x14, x15, x16};           \
+     return vld1q_u8(array);                                                       \
+   }())
+#endif
+#ifndef simdjson_make_int8x16_t
+#define simdjson_make_int8x16_t(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, \
+                             x13, x14, x15, x16)                                  \
+   ([=]() {                                                                       \
+     int8_t array[16] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8,                    \
+                                 x9, x10, x11, x12, x13, x14, x15, x16};          \
+     return vld1q_s8(array);                                                      \
+   }())
+#endif
+
+#ifndef simdjson_make_uint8x8_t
+#define simdjson_make_uint8x8_t(x1, x2, x3, x4, x5, x6, x7, x8)                \
+   ([=]() {                                                                    \
+     uint8_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};                \
+     return vld1_u8(array);                                                    \
+   }())
+#endif
+#ifndef simdjson_make_int8x8_t
+#define simdjson_make_int8x8_t(x1, x2, x3, x4, x5, x6, x7, x8)                 \
+   ([=]() {                                                                    \
+     int8_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};                 \
+     return vld1_s8(array);                                                    \
+   }())
+#endif
+#ifndef simdjson_make_uint16x8_t
+#define simdjson_make_uint16x8_t(x1, x2, x3, x4, x5, x6, x7, x8)               \
+   ([=]() {                                                                    \
+     uint16_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};               \
+     return vld1q_u16(array);                                                  \
+   }())
+#endif
+#ifndef simdjson_make_int16x8_t
+#define simdjson_make_int16x8_t(x1, x2, x3, x4, x5, x6, x7, x8)                \
+   ([=]() {                                                                    \
+     int16_t array[8] = {x1, x2,  x3,  x4,  x5,  x6,  x7,  x8};                \
+     return vld1q_s16(array);                                                  \
+   }())
+#endif
+
+// End of private section with Visual Studio workaround
+} // namespace
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+
+
+  template
+  struct simd8;
+
+  //
+  // Base class of simd8 and simd8, both of which use uint8x16_t internally.
+  //
+  template>
+  struct base_u8 {
+    uint8x16_t value;
+    static const int SIZE = sizeof(value);
+
+    // Conversion from/to SIMD register
+    simdjson_inline base_u8(const uint8x16_t _value) : value(_value) {}
+    simdjson_inline operator const uint8x16_t&() const { return this->value; }
+    simdjson_inline operator uint8x16_t&() { return this->value; }
+
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const { return vorrq_u8(*this, other); }
+    simdjson_inline simd8 operator&(const simd8 other) const { return vandq_u8(*this, other); }
+    simdjson_inline simd8 operator^(const simd8 other) const { return veorq_u8(*this, other); }
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return vbicq_u8(*this, other); }
+    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+    simdjson_inline simd8& operator|=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline simd8& operator&=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline simd8& operator^=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast ^ other; return *this_cast; }
+
+    friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return vceqq_u8(lhs, rhs); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return vextq_u8(prev_chunk, *this, 16 - N);
+    }
+  };
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8: base_u8 {
+    typedef uint16_t bitmask_t;
+    typedef uint32_t bitmask2_t;
+
+    static simdjson_inline simd8 splat(bool _value) { return vmovq_n_u8(uint8_t(-(!!_value))); }
+
+    simdjson_inline simd8(const uint8x16_t _value) : base_u8(_value) {}
+    // False constructor
+    simdjson_inline simd8() : simd8(vdupq_n_u8(0)) {}
+    // Splat constructor
+    simdjson_inline simd8(bool _value) : simd8(splat(_value)) {}
+
+    // We return uint32_t instead of uint16_t because that seems to be more efficient for most
+    // purposes (cutting it down to uint16_t costs performance in some compilers).
+    simdjson_inline uint32_t to_bitmask() const {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+      const uint8x16_t bit_mask =  simdjson_make_uint8x16_t(0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
+                                                   0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80);
+#else
+      const uint8x16_t bit_mask =  {0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
+                                    0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80};
+#endif
+      auto minput = *this & bit_mask;
+      uint8x16_t tmp = vpaddq_u8(minput, minput);
+      tmp = vpaddq_u8(tmp, tmp);
+      tmp = vpaddq_u8(tmp, tmp);
+      return vgetq_lane_u16(vreinterpretq_u16_u8(tmp), 0);
+    }
+    // Returns 4-bit out of each byte, alternating between the high 4 bits and low
+    // bits result it is 64 bit.
+    simdjson_inline uint64_t to_bitmask64() const {
+      return vget_lane_u64(
+          vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(*this), 4)), 0);
+    }
+    simdjson_inline bool any() const { return vmaxvq_u32(vreinterpretq_u32_u8(*this)) != 0; }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8: base_u8 {
+    static simdjson_inline uint8x16_t splat(uint8_t _value) { return vmovq_n_u8(_value); }
+    static simdjson_inline uint8x16_t zero() { return vdupq_n_u8(0); }
+    static simdjson_inline uint8x16_t load(const uint8_t* values) { return vld1q_u8(values); }
+
+    simdjson_inline simd8(const uint8x16_t _value) : base_u8(_value) {}
+    // Zero constructor
+    simdjson_inline simd8() : simd8(zero()) {}
+    // Array constructor
+    simdjson_inline simd8(const uint8_t values[16]) : simd8(load(values)) {}
+    // Splat constructor
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    // Member-by-member initialization
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(simdjson_make_uint8x16_t(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+#else
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(uint8x16_t{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
+#endif
+
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Store to array
+    simdjson_inline void store(uint8_t dst[16]) const { return vst1q_u8(dst, *this); }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return vqaddq_u8(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return vqsubq_u8(*this, other); }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return vaddq_u8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return vsubq_u8(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *this; }
+
+    // Order-specific operations
+    simdjson_inline uint8_t max_val() const { return vmaxvq_u8(*this); }
+    simdjson_inline uint8_t min_val() const { return vminvq_u8(*this); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return vmaxq_u8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return vminq_u8(*this, other); }
+    simdjson_inline simd8 operator<=(const simd8 other) const { return vcleq_u8(*this, other); }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return vcgeq_u8(*this, other); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return vcltq_u8(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return vcgtq_u8(*this, other); }
+    // Same as >, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero. For ARM, returns all 1's.
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return simd8(*this > other); }
+    // Same as <, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero. For ARM, returns all 1's.
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return simd8(*this < other); }
+
+    // Bit-specific operations
+    simdjson_inline simd8 any_bits_set(simd8 bits) const { return vtstq_u8(*this, bits); }
+    simdjson_inline bool any_bits_set_anywhere() const { return vmaxvq_u32(vreinterpretq_u32_u8(*this)) != 0; }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return (*this & bits).any_bits_set_anywhere(); }
+    template
+    simdjson_inline simd8 shr() const { return vshrq_n_u8(*this, N); }
+    template
+    simdjson_inline simd8 shl() const { return vshlq_n_u8(*this, N); }
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return lookup_table.apply_lookup_16_to(*this);
+    }
+
+    // Returns 4-bit out of each byte, alternating between the high 4 bits and low
+    // bits result it is 64 bit.
+    simdjson_inline uint64_t to_bitmask64() const {
+      return vget_lane_u64(
+          vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(*this), 4)), 0);
+    }
+    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
+    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
+    // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
+    // get written.
+    // Design consideration: it seems like a function with the
+    // signature simd8 compress(uint16_t mask) would be
+    // sensible, but the AVX ISA makes this kind of approach difficult.
+    template
+    simdjson_inline void compress(uint16_t mask, L * output) const {
+      using internal::thintable_epi8;
+      using internal::BitsSetTable256mul2;
+      using internal::pshufb_combine_table;
+      // this particular implementation was inspired by work done by @animetosho
+      // we do it in two steps, first 8 bytes and then second 8 bytes
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
+      // next line just loads the 64-bit values thintable_epi8[mask1] and
+      // thintable_epi8[mask2] into a 128-bit register, using only
+      // two instructions on most compilers.
+      uint64x2_t shufmask64 = {thintable_epi8[mask1], thintable_epi8[mask2]};
+      uint8x16_t shufmask = vreinterpretq_u8_u64(shufmask64);
+      // we increment by 0x08 the second half of the mask
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+      uint8x16_t inc = simdjson_make_uint8x16_t(0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08);
+#else
+      uint8x16_t inc = {0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08};
+#endif
+      shufmask = vaddq_u8(shufmask, inc);
+      // this is the version "nearly pruned"
+      uint8x16_t pruned = vqtbl1q_u8(*this, shufmask);
+      // we still need to put the two halves together.
+      // we compute the popcount of the first half:
+      int pop1 = BitsSetTable256mul2[mask1];
+      // then load the corresponding mask, what it does is to write
+      // only the first pop1 bytes from the first 8 bytes, and then
+      // it fills in with the bytes from the second 8 bytes + some filling
+      // at the end.
+      uint8x16_t compactmask = vld1q_u8(reinterpret_cast(pshufb_combine_table + pop1 * 8));
+      uint8x16_t answer = vqtbl1q_u8(pruned, compactmask);
+      vst1q_u8(reinterpret_cast(output), answer);
+    }
+
+    // Copies all bytes corresponding to a 0 in the low half of the mask (interpreted as a
+    // bitset) to output1, then those corresponding to a 0 in the high half to output2.
+    template
+    simdjson_inline void compress_halves(uint16_t mask, L *output1, L *output2) const {
+      using internal::thintable_epi8;
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
+      uint8x8_t compactmask1 = vcreate_u8(thintable_epi8[mask1]);
+      uint8x8_t compactmask2 = vcreate_u8(thintable_epi8[mask2]);
+      // we increment by 0x08 the second half of the mask
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+      uint8x8_t inc = simdjson_make_uint8x8_t(0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08);
+#else
+      uint8x8_t inc = {0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08};
+#endif
+      compactmask2 = vadd_u8(compactmask2, inc);
+      // store each result (with the second store possibly overlapping the first)
+      vst1_u8((uint8_t*)output1, vqtbl1_u8(*this, compactmask1));
+      vst1_u8((uint8_t*)output2, vqtbl1_u8(*this, compactmask2));
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+
+    template
+    simdjson_inline simd8 apply_lookup_16_to(const simd8 original) {
+      return vqtbl1q_u8(*this, simd8(original));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 {
+    int8x16_t value;
+
+    static simdjson_inline simd8 splat(int8_t _value) { return vmovq_n_s8(_value); }
+    static simdjson_inline simd8 zero() { return vdupq_n_s8(0); }
+    static simdjson_inline simd8 load(const int8_t values[16]) { return vld1q_s8(values); }
+
+    // Conversion from/to SIMD register
+    simdjson_inline simd8(const int8x16_t _value) : value{_value} {}
+    simdjson_inline operator const int8x16_t&() const { return this->value; }
+    simdjson_inline operator int8x16_t&() { return this->value; }
+
+    // Zero constructor
+    simdjson_inline simd8() : simd8(zero()) {}
+    // Splat constructor
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const int8_t* values) : simd8(load(values)) {}
+    // Member-by-member initialization
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3, int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(simdjson_make_int8x16_t(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+#else
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3, int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(int8x16_t{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
+#endif
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Store to array
+    simdjson_inline void store(int8_t dst[16]) const { return vst1q_s8(dst, *this); }
+
+    // Explicit conversion to/from unsigned
+    //
+    // Under Visual Studio/ARM64 uint8x16_t and int8x16_t are apparently the same type.
+    // In theory, we could check this occurrence with std::same_as and std::enabled_if but it is C++14
+    // and relatively ugly and hard to read.
+#ifndef SIMDJSON_REGULAR_VISUAL_STUDIO
+    simdjson_inline explicit simd8(const uint8x16_t other): simd8(vreinterpretq_s8_u8(other)) {}
+#endif
+    simdjson_inline explicit operator simd8() const { return vreinterpretq_u8_s8(this->value); }
+
+    // Math
+    simdjson_inline simd8 operator+(const simd8 other) const { return vaddq_s8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return vsubq_s8(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *this; }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val(const simd8 other) const { return vmaxq_s8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return vminq_s8(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return vcgtq_s8(*this, other); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return vcltq_s8(*this, other); }
+    simdjson_inline simd8 operator==(const simd8 other) const { return vceqq_s8(*this, other); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return vextq_s8(prev_chunk, *this, 16 - N);
+    }
+
+    // Perform a lookup assuming no value is larger than 16
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return lookup_table.apply_lookup_16_to(*this);
+    }
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+
+    template
+    simdjson_inline simd8 apply_lookup_16_to(const simd8 original) {
+      return vqtbl1q_s8(*this, simd8(original));
+    }
+  };
+
+  template
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    static_assert(NUM_CHUNKS == 4, "ARM kernel should use four registers per 64-byte block.");
+    const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
+
+    simdjson_inline void store(T ptr[64]) const {
+      this->chunks[0].store(ptr+sizeof(simd8)*0);
+      this->chunks[1].store(ptr+sizeof(simd8)*1);
+      this->chunks[2].store(ptr+sizeof(simd8)*2);
+      this->chunks[3].store(ptr+sizeof(simd8)*3);
+    }
+
+    simdjson_inline simd8 reduce_or() const {
+      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
+    }
+
+
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      uint64_t popcounts = vget_lane_u64(vreinterpret_u64_u8(vcnt_u8(vcreate_u8(~mask))), 0);
+      // compute the prefix sum of the popcounts of each byte
+      uint64_t offsets = popcounts * 0x0101010101010101;
+      this->chunks[0].compress_halves(uint16_t(mask), output, &output[popcounts & 0xFF]);
+      this->chunks[1].compress_halves(uint16_t(mask >> 16), &output[(offsets >> 8) & 0xFF], &output[(offsets >> 16) & 0xFF]);
+      this->chunks[2].compress_halves(uint16_t(mask >> 32), &output[(offsets >> 24) & 0xFF], &output[(offsets >> 32) & 0xFF]);
+      this->chunks[3].compress_halves(uint16_t(mask >> 48), &output[(offsets >> 40) & 0xFF], &output[(offsets >> 48) & 0xFF]);
+      return offsets >> 56;
+    }
+
+    simdjson_inline uint64_t to_bitmask() const {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+      const uint8x16_t bit_mask = simdjson_make_uint8x16_t(
+        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
+        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80
+      );
+#else
+      const uint8x16_t bit_mask = {
+        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
+        0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80
+      };
+#endif
+      // Add each of the elements next to each other, successively, to stuff each 8 byte mask into one.
+      uint8x16_t sum0 = vpaddq_u8(this->chunks[0] & bit_mask, this->chunks[1] & bit_mask);
+      uint8x16_t sum1 = vpaddq_u8(this->chunks[2] & bit_mask, this->chunks[3] & bit_mask);
+      sum0 = vpaddq_u8(sum0, sum1);
+      sum0 = vpaddq_u8(sum0, sum0);
+      return vgetq_lane_u64(vreinterpretq_u64_u8(sum0), 0);
+    }
+
+    simdjson_inline uint64_t eq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] == mask,
+        this->chunks[1] == mask,
+        this->chunks[2] == mask,
+        this->chunks[3] == mask
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t lteq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] <= mask,
+        this->chunks[1] <= mask,
+        this->chunks[2] <= mask,
+        this->chunks[3] <= mask
+      ).to_bitmask();
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_ARM64_SIMD_H
+/* end file simdjson/arm64/simd.h */
+/* including simdjson/arm64/stringparsing_defs.h: #include "simdjson/arm64/stringparsing_defs.h" */
+/* begin file simdjson/arm64/stringparsing_defs.h */
+#ifndef SIMDJSON_ARM64_STRINGPARSING_DEFS_H
+#define SIMDJSON_ARM64_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 32;
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
+  simdjson_inline bool has_backslash() { return bs_bits != 0; }
+  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
+  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
+
+  uint32_t bs_bits;
+  uint32_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // this can read up to 31 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v0(src);
+  simd8 v1(src + sizeof(v0));
+  v0.store(dst);
+  v1.store(dst + sizeof(v0));
+
+  // Getting a 64-bit bitmask is much cheaper than multiple 16-bit bitmasks on ARM; therefore, we
+  // smash them together into a 64-byte mask and get the bitmask from there.
+  uint64_t bs_and_quote = simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
+  return {
+    uint32_t(bs_and_quote),      // bs_bits
+    uint32_t(bs_and_quote >> 32) // quote_bits
+  };
+}
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 16;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits) / 4; }
+
+  uint64_t escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  simd8 is_quote = (v == '"');
+  simd8 is_backslash = (v == '\\');
+  simd8 is_control = (v < 32);
+  return {
+    (is_backslash | is_quote | is_control).to_bitmask64()
+  };
+}
+
+
+
+} // unnamed namespace
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_ARM64_STRINGPARSING_DEFS_H
+/* end file simdjson/arm64/stringparsing_defs.h */
+
+#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
+/* end file simdjson/arm64/begin.h */
+/* including simdjson/generic/ondemand/amalgamated.h for arm64: #include "simdjson/generic/ondemand/amalgamated.h" */
+/* begin file simdjson/generic/ondemand/amalgamated.h for arm64 */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
+#error simdjson/generic/ondemand/dependencies.h must be included before simdjson/generic/ondemand/amalgamated.h!
+#endif
+
+// Stuff other things depend on
+/* including simdjson/generic/ondemand/base.h for arm64: #include "simdjson/generic/ondemand/base.h" */
+/* begin file simdjson/generic/ondemand/base.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_BASE_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+/**
+ * A fast, simple, DOM-like interface that parses JSON as you use it.
+ *
+ * Designed for maximum speed and a lower memory profile.
+ */
+namespace ondemand {
+
+/** Represents the depth of a JSON value (number of nested arrays/objects). */
+using depth_t = int32_t;
+
+/** @copydoc simdjson::arm64::number_type */
+using number_type = simdjson::arm64::number_type;
+
+/** @private Position in the JSON buffer indexes */
+using token_position = const uint32_t *;
+
+class array;
+class array_iterator;
+class document;
+class document_reference;
+class document_stream;
+class field;
+class json_iterator;
+enum class json_type;
+struct number;
+class object;
+class object_iterator;
+class parser;
+class raw_json_string;
+class token_iterator;
+class value;
+class value_iterator;
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_BASE_H
+/* end file simdjson/generic/ondemand/base.h for arm64 */
+/* including simdjson/generic/ondemand/deserialize.h for arm64: #include "simdjson/generic/ondemand/deserialize.h" */
+/* begin file simdjson/generic/ondemand/deserialize.h for arm64 */
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+#ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_ONDEMAND_DESERIALIZE_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+struct deserialize_tag;
+
+/// These types are deserializable in a built-in way
+template  struct is_builtin_deserializable : std::false_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+
+template 
+concept is_builtin_deserializable_v = is_builtin_deserializable::value;
+
+template 
+concept custom_deserializable = tag_invocable;
+
+template 
+concept deserializable = custom_deserializable || is_builtin_deserializable_v || concepts::optional_type;
+
+template 
+concept nothrow_custom_deserializable = nothrow_tag_invocable;
+
+// built-in types are noexcept and if an error happens, the value simply gets ignored and the error is returned.
+template 
+concept nothrow_deserializable = nothrow_custom_deserializable || is_builtin_deserializable_v;
+
+/// Deserialize Tag
+inline constexpr struct deserialize_tag {
+  using array_type = arm64::ondemand::array;
+  using object_type = arm64::ondemand::object;
+  using value_type = arm64::ondemand::value;
+  using document_type = arm64::ondemand::document;
+  using document_reference_type = arm64::ondemand::document_reference;
+
+  // Customization Point for array
+  template 
+    requires custom_deserializable
+  simdjson_warn_unused constexpr /* error_code */ auto operator()(array_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
+    return tag_invoke(*this, object, output);
+  }
+
+  // Customization Point for object
+  template 
+    requires custom_deserializable
+  simdjson_warn_unused constexpr /* error_code */ auto operator()(object_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
+    return tag_invoke(*this, object, output);
+  }
+
+  // Customization Point for value
+  template 
+    requires custom_deserializable
+  simdjson_warn_unused constexpr /* error_code */ auto operator()(value_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
+    return tag_invoke(*this, object, output);
+  }
+
+  // Customization Point for document
+  template 
+    requires custom_deserializable
+  simdjson_warn_unused constexpr /* error_code */ auto operator()(document_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
+    return tag_invoke(*this, object, output);
+  }
+
+  // Customization Point for document reference
+  template 
+    requires custom_deserializable
+  simdjson_warn_unused constexpr /* error_code */ auto operator()(document_reference_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
+    return tag_invoke(*this, object, output);
+  }
+
+
+} deserialize{};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+/* end file simdjson/generic/ondemand/deserialize.h for arm64 */
+/* including simdjson/generic/ondemand/value_iterator.h for arm64: #include "simdjson/generic/ondemand/value_iterator.h" */
+/* begin file simdjson/generic/ondemand/value_iterator.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+/**
+ * Iterates through a single JSON value at a particular depth.
+ *
+ * Does not keep track of the type of value: provides methods for objects, arrays and scalars and expects
+ * the caller to call the right ones.
+ *
+ * @private This is not intended for external use.
+ */
+class value_iterator {
+protected:
+  /** The underlying JSON iterator */
+  json_iterator *_json_iter{};
+  /** The depth of this value */
+  depth_t _depth{};
+  /**
+   * The starting token index for this value
+   */
+  token_position _start_position{};
+
+public:
+  simdjson_inline value_iterator() noexcept = default;
+
+  /**
+   * Denote that we're starting a document.
+   */
+  simdjson_inline void start_document() noexcept;
+
+  /**
+   * Skips a non-iterated or partially-iterated JSON value, whether it is a scalar, array or object.
+   *
+   * Optimized for scalars.
+   */
+  simdjson_warn_unused simdjson_inline error_code skip_child() noexcept;
+
+  /**
+   * Tell whether the iterator is at the EOF mark
+   */
+  simdjson_inline bool at_end() const noexcept;
+
+  /**
+   * Tell whether the iterator is at the start of the value
+   */
+  simdjson_inline bool at_start() const noexcept;
+
+  /**
+   * Tell whether the value is open--if the value has not been used, or the array/object is still open.
+   */
+  simdjson_inline bool is_open() const noexcept;
+
+  /**
+   * Tell whether the value is at an object's first field (just after the {).
+   */
+  simdjson_inline bool at_first_field() const noexcept;
+
+  /**
+   * Abandon all iteration.
+   */
+  simdjson_inline void abandon() noexcept;
+
+  /**
+   * Get the child value as a value_iterator.
+   */
+  simdjson_inline value_iterator child_value() const noexcept;
+
+  /**
+   * Get the depth of this value.
+   */
+  simdjson_inline int32_t depth() const noexcept;
+
+  /**
+   * Get the JSON type of this value.
+   *
+   * @error TAPE_ERROR when the JSON value is a bad token like "}" "," or "alse".
+   */
+  simdjson_inline simdjson_result type() const noexcept;
+
+  /**
+   * @addtogroup object Object iteration
+   *
+   * Methods to iterate and find object fields. These methods generally *assume* the value is
+   * actually an object; the caller is responsible for keeping track of that fact.
+   *
+   * @{
+   */
+
+  /**
+   * Start an object iteration.
+   *
+   * @returns Whether the object had any fields (returns false for empty).
+   * @error INCORRECT_TYPE if there is no opening {
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result start_object() noexcept;
+  /**
+   * Start an object iteration from the root.
+   *
+   * @returns Whether the object had any fields (returns false for empty).
+   * @error INCORRECT_TYPE if there is no opening {
+   * @error TAPE_ERROR if there is no matching } at end of document
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result start_root_object() noexcept;
+  /**
+   * Checks whether an object could be started from the root. May be called by start_root_object.
+   *
+   * @returns SUCCESS if it is possible to safely start an object from the root (document level).
+   * @error INCORRECT_TYPE if there is no opening {
+   * @error TAPE_ERROR if there is no matching } at end of document
+   */
+  simdjson_warn_unused simdjson_inline error_code check_root_object() noexcept;
+  /**
+   * Start an object iteration after the user has already checked and moved past the {.
+   *
+   * Does not move the iterator unless the object is empty ({}).
+   *
+   * @returns Whether the object had any fields (returns false for empty).
+   * @error INCOMPLETE_ARRAY_OR_OBJECT If there are no more tokens (implying the *parent*
+   *        array or object is incomplete). An INCOMPLETE_ARRAY_OR_OBJECT is an unrecoverable error that
+   *        invalidates the document.
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result started_object() noexcept;
+  /**
+   * Start an object iteration from the root, after the user has already checked and moved past the {.
+   *
+   * Does not move the iterator unless the object is empty ({}).
+   *
+   * @returns Whether the object had any fields (returns false for empty).
+   * @error INCOMPLETE_ARRAY_OR_OBJECT If there are no more tokens (implying the *parent*
+   *        array or object is incomplete). An INCOMPLETE_ARRAY_OR_OBJECT is an unrecoverable error that
+   *        invalidates the document.
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result started_root_object() noexcept;
+
+  /**
+   * Moves to the next field in an object.
+   *
+   * Looks for , and }. If } is found, the object is finished and the iterator advances past it.
+   * Otherwise, it advances to the next value.
+   *
+   * @return whether there is another field in the object.
+   * @error TAPE_ERROR If there is a comma missing between fields.
+   * @error TAPE_ERROR If there is a comma, but not enough tokens remaining to have a key, :, and value.
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result has_next_field() noexcept;
+
+  /**
+   * Get the current field's key.
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result field_key() noexcept;
+
+  /**
+   * Pass the : in the field and move to its value.
+   */
+  simdjson_warn_unused simdjson_inline error_code field_value() noexcept;
+
+  /**
+   * Find the next field with the given key.
+   *
+   * Assumes you have called next_field() or otherwise matched the previous value.
+   *
+   * This means the iterator must be sitting at the next key:
+   *
+   * ```
+   * { "a": 1, "b": 2 }
+   *           ^
+   * ```
+   *
+   * Key is *raw JSON,* meaning it will be matched against the verbatim JSON without attempting to
+   * unescape it. This works well for typical ASCII and UTF-8 keys (almost all of them), but may
+   * fail to match some keys with escapes (\u, \n, etc.).
+   */
+  simdjson_warn_unused simdjson_inline error_code find_field(const std::string_view key) noexcept;
+
+  /**
+   * Find the next field with the given key, *without* unescaping. This assumes object order: it
+   * will not find the field if it was already passed when looking for some *other* field.
+   *
+   * Assumes you have called next_field() or otherwise matched the previous value.
+   *
+   * This means the iterator must be sitting at the next key:
+   *
+   * ```
+   * { "a": 1, "b": 2 }
+   *           ^
+   * ```
+   *
+   * Key is *raw JSON,* meaning it will be matched against the verbatim JSON without attempting to
+   * unescape it. This works well for typical ASCII and UTF-8 keys (almost all of them), but may
+   * fail to match some keys with escapes (\u, \n, etc.).
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result find_field_raw(const std::string_view key) noexcept;
+
+  /**
+   * Find the field with the given key without regard to order, and *without* unescaping.
+   *
+   * This is an unordered object lookup: if the field is not found initially, it will cycle around and scan from the beginning.
+   *
+   * Assumes you have called next_field() or otherwise matched the previous value.
+   *
+   * This means the iterator must be sitting at the next key:
+   *
+   * ```
+   * { "a": 1, "b": 2 }
+   *           ^
+   * ```
+   *
+   * Key is *raw JSON,* meaning it will be matched against the verbatim JSON without attempting to
+   * unescape it. This works well for typical ASCII and UTF-8 keys (almost all of them), but may
+   * fail to match some keys with escapes (\u, \n, etc.).
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result find_field_unordered_raw(const std::string_view key) noexcept;
+
+  /** @} */
+
+  /**
+   * @addtogroup array Array iteration
+   * Methods to iterate over array elements. These methods generally *assume* the value is actually
+   * an object; the caller is responsible for keeping track of that fact.
+   * @{
+   */
+
+  /**
+   * Check for an opening [ and start an array iteration.
+   *
+   * @returns Whether the array had any elements (returns false for empty).
+   * @error INCORRECT_TYPE If there is no [.
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result start_array() noexcept;
+  /**
+   * Check for an opening [ and start an array iteration while at the root.
+   *
+   * @returns Whether the array had any elements (returns false for empty).
+   * @error INCORRECT_TYPE If there is no [.
+   * @error TAPE_ERROR if there is no matching ] at end of document
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result start_root_array() noexcept;
+  /**
+   * Checks whether an array could be started from the root. May be called by start_root_array.
+   *
+   * @returns SUCCESS if it is possible to safely start an array from the root (document level).
+   * @error INCORRECT_TYPE If there is no [.
+   * @error TAPE_ERROR if there is no matching ] at end of document
+   */
+  simdjson_warn_unused simdjson_inline error_code check_root_array() noexcept;
+  /**
+   * Start an array iteration, after the user has already checked and moved past the [.
+   *
+   * Does not move the iterator unless the array is empty ([]).
+   *
+   * @returns Whether the array had any elements (returns false for empty).
+   * @error INCOMPLETE_ARRAY_OR_OBJECT If there are no more tokens (implying the *parent*
+   *        array or object is incomplete). An INCOMPLETE_ARRAY_OR_OBJECT is an unrecoverable error that
+   *        invalidates the document.
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result started_array() noexcept;
+  /**
+   * Start an array iteration from the root, after the user has already checked and moved past the [.
+   *
+   * Does not move the iterator unless the array is empty ([]).
+   *
+   * @returns Whether the array had any elements (returns false for empty).
+   * @error INCOMPLETE_ARRAY_OR_OBJECT If there are no more tokens (implying the *parent*
+   *        array or object is incomplete). An INCOMPLETE_ARRAY_OR_OBJECT is an unrecoverable error that
+   *        invalidates the document.
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result started_root_array() noexcept;
+
+  /**
+   * Moves to the next element in an array.
+   *
+   * Looks for , and ]. If ] is found, the array is finished and the iterator advances past it.
+   * Otherwise, it advances to the next value.
+   *
+   * @return Whether there is another element in the array.
+   * @error TAPE_ERROR If there is a comma missing between elements.
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result has_next_element() noexcept;
+
+  /**
+   * Get a child value iterator.
+   */
+  simdjson_warn_unused simdjson_inline value_iterator child() const noexcept;
+
+  /** @} */
+
+  /**
+   * @defgroup scalar Scalar values
+   * @addtogroup scalar
+   * @{
+   */
+
+  simdjson_warn_unused simdjson_inline simdjson_result get_string(bool allow_replacement) noexcept;
+  template 
+  simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_wobbly_string() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_uint64() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_uint64_in_string() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_int64() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_int64_in_string() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_double() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_double_in_string() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_bool() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result is_null() noexcept;
+  simdjson_warn_unused simdjson_inline bool is_negative() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result is_integer() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_number() noexcept;
+
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_string(bool check_trailing, bool allow_replacement) noexcept;
+  template 
+  simdjson_warn_unused simdjson_inline error_code get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_wobbly_string(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_raw_json_string(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_uint64(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_uint64_in_string(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_int64(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_int64_in_string(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_double(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_double_in_string(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_bool(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline bool is_root_negative() noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result is_root_integer(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_number_type(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result get_root_number(bool check_trailing) noexcept;
+  simdjson_warn_unused simdjson_inline simdjson_result is_root_null(bool check_trailing) noexcept;
+
+  simdjson_warn_unused simdjson_inline error_code error() const noexcept;
+  simdjson_inline uint8_t *&string_buf_loc() noexcept;
+  simdjson_inline const json_iterator &json_iter() const noexcept;
+  simdjson_inline json_iterator &json_iter() noexcept;
+
+  simdjson_inline void assert_is_valid() const noexcept;
+  simdjson_inline bool is_valid() const noexcept;
+
+  /** @} */
+protected:
+  /**
+   * Restarts an array iteration.
+   * @returns Whether the array has any elements (returns false for empty).
+   */
+  simdjson_inline simdjson_result reset_array() noexcept;
+  /**
+   * Restarts an object iteration.
+   * @returns Whether the object has any fields (returns false for empty).
+   */
+  simdjson_inline simdjson_result reset_object() noexcept;
+  /**
+   * move_at_start(): moves us so that we are pointing at the beginning of
+   * the container. It updates the index so that at_start() is true and it
+   * syncs the depth. The user can then create a new container instance.
+   *
+   * Usage: used with value::count_elements().
+   **/
+  simdjson_inline void move_at_start() noexcept;
+
+  /**
+   * move_at_container_start(): moves us so that we are pointing at the beginning of
+   * the container so that assert_at_container_start() passes.
+   *
+   * Usage: used with reset_array() and reset_object().
+   **/
+   simdjson_inline void move_at_container_start() noexcept;
+  /* Useful for debugging and logging purposes. */
+  inline std::string to_string() const noexcept;
+  simdjson_inline value_iterator(json_iterator *json_iter, depth_t depth, token_position start_index) noexcept;
+
+  simdjson_inline simdjson_result parse_null(const uint8_t *json) const noexcept;
+  simdjson_inline simdjson_result parse_bool(const uint8_t *json) const noexcept;
+  simdjson_inline const uint8_t *peek_start() const noexcept;
+  simdjson_inline uint32_t peek_start_length() const noexcept;
+  simdjson_inline uint32_t peek_root_length() const noexcept;
+
+  /**
+   * The general idea of the advance_... methods and the peek_* methods
+   * is that you first peek and check that you have desired type. If you do,
+   * and only if you do, then you advance.
+   *
+   * We used to unconditionally advance. But this made reasoning about our
+   * current state difficult.
+   * Suppose you always advance. Look at the 'value' matching the key
+   * "shadowable" in the following example...
+   *
+   * ({"globals":{"a":{"shadowable":[}}}})
+   *
+   * If the user thinks it is a Boolean and asks for it, then we check the '[',
+   * decide it is not a Boolean, but still move into the next character ('}'). Now
+   * we are left pointing at '}' right after a '['. And we have not yet reported
+   * an error, only that we do not have a Boolean.
+   *
+   * If, instead, you just stand your ground until it is content that you know, then
+   * you will only even move beyond the '[' if the user tells you that you have an
+   * array. So you will be at the '}' character inside the array and, hopefully, you
+   * will then catch the error because an array cannot start with '}', but the code
+   * processing Boolean values does not know this.
+   *
+   * So the contract is: first call 'peek_...' and then call 'advance_...' only
+   * if you have determined that it is a type you can handle.
+   *
+   * Unfortunately, it makes the code more verbose, longer and maybe more error prone.
+   */
+
+  simdjson_inline void advance_scalar(const char *type) noexcept;
+  simdjson_inline void advance_root_scalar(const char *type) noexcept;
+  simdjson_inline void advance_non_root_scalar(const char *type) noexcept;
+
+  simdjson_inline const uint8_t *peek_scalar(const char *type) noexcept;
+  simdjson_inline const uint8_t *peek_root_scalar(const char *type) noexcept;
+  simdjson_inline const uint8_t *peek_non_root_scalar(const char *type) noexcept;
+
+
+  simdjson_warn_unused simdjson_inline error_code start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept;
+  simdjson_warn_unused simdjson_inline error_code end_container() noexcept;
+
+  /**
+   * Advance to a place expecting a value (increasing depth).
+   *
+   * @return The current token (the one left behind).
+   * @error TAPE_ERROR If the document ended early.
+   */
+  simdjson_inline simdjson_result advance_to_value() noexcept;
+
+  simdjson_warn_unused simdjson_inline error_code incorrect_type_error(const char *message) const noexcept;
+  simdjson_warn_unused simdjson_inline error_code error_unless_more_tokens(uint32_t tokens=1) const noexcept;
+
+  simdjson_inline bool is_at_start() const noexcept;
+  /**
+   * is_at_iterator_start() returns true on an array or object after it has just been
+   * created, whether the instance is empty or not.
+   *
+   * Usage: used by array::begin() in debug mode (SIMDJSON_DEVELOPMENT_CHECKS)
+   */
+  simdjson_inline bool is_at_iterator_start() const noexcept;
+
+  /**
+   * Assuming that we are within an object, this returns true if we
+   * are pointing at a key.
+   *
+   * Usage: the skip_child() method should never be used while we are pointing
+   * at a key inside an object.
+   */
+  simdjson_inline bool is_at_key() const noexcept;
+
+  inline void assert_at_start() const noexcept;
+  inline void assert_at_container_start() const noexcept;
+  inline void assert_at_root() const noexcept;
+  inline void assert_at_child() const noexcept;
+  inline void assert_at_next() const noexcept;
+  inline void assert_at_non_root_start() const noexcept;
+
+  /** Get the starting position of this value */
+  simdjson_inline token_position start_position() const noexcept;
+
+  /** @copydoc error_code json_iterator::position() const noexcept; */
+  simdjson_inline token_position position() const noexcept;
+  /** @copydoc error_code json_iterator::end_position() const noexcept; */
+  simdjson_inline token_position last_position() const noexcept;
+  /** @copydoc error_code json_iterator::end_position() const noexcept; */
+  simdjson_inline token_position end_position() const noexcept;
+  /** @copydoc error_code json_iterator::report_error(error_code error, const char *message) noexcept; */
+  simdjson_warn_unused simdjson_inline error_code report_error(error_code error, const char *message) noexcept;
+
+  friend class document;
+  friend class object;
+  friend class object_iterator;
+  friend class array;
+  friend class value;
+  friend class field;
+}; // value_iterator
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::value_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
+/* end file simdjson/generic/ondemand/value_iterator.h for arm64 */
+/* including simdjson/generic/ondemand/value.h for arm64: #include "simdjson/generic/ondemand/value.h" */
+/* begin file simdjson/generic/ondemand/value.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_VALUE_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/deserialize.h" */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+namespace simdjson {
+
+namespace arm64 {
+namespace ondemand {
+/**
+ * An ephemeral JSON value returned during iteration. It is only valid for as long as you do
+ * not access more data in the JSON document.
+ */
+class value {
+public:
+  /**
+   * Create a new invalid value.
+   *
+   * Exists so you can declare a variable and later assign to it before use.
+   */
+  simdjson_inline value() noexcept = default;
+
+  /**
+   * Get this value as the given type.
+   *
+   * Supported types: object, array, raw_json_string, string_view, uint64_t, int64_t, double, bool
+   *
+   * You may use get_double(), get_bool(), get_uint64(), get_int64(),
+   * get_object(), get_array(), get_raw_json_string(), or get_string() instead.
+   * When SIMDJSON_SUPPORTS_CONCEPTS is set, custom types are also supported.
+   *
+   * @returns A value of the given type, parsed from the JSON.
+   * @returns INCORRECT_TYPE If the JSON value is not the given type.
+   */
+  template 
+  simdjson_inline simdjson_result get()
+#if SIMDJSON_SUPPORTS_CONCEPTS
+    noexcept(custom_deserializable ? nothrow_custom_deserializable : true)
+#else
+    noexcept
+#endif
+  {
+    static_assert(std::is_default_constructible::value, "The specified type is not default constructible.");
+    T out{};
+    SIMDJSON_TRY(get(out));
+    return out;
+  }
+
+
+  /**
+   * Get this value as the given type.
+   *
+   * Supported types: object, array, raw_json_string, string_view, uint64_t, int64_t, double, bool
+   * If the macro SIMDJSON_SUPPORTS_CONCEPTS is set, then custom types are also supported.
+   *
+   * @param out This is set to a value of the given type, parsed from the JSON. If there is an error, this may not be initialized.
+   * @returns INCORRECT_TYPE If the JSON value is not an object.
+   * @returns SUCCESS If the parse succeeded and the out parameter was set to the value.
+   */
+  template 
+  simdjson_warn_unused simdjson_inline error_code get(T &out)
+#if SIMDJSON_SUPPORTS_CONCEPTS
+    noexcept(custom_deserializable ? nothrow_custom_deserializable : true)
+#else
+    noexcept
+#endif
+ {
+  #if SIMDJSON_SUPPORTS_CONCEPTS
+  if constexpr (custom_deserializable) {
+      return deserialize(*this, out);
+  } else if constexpr (concepts::optional_type) {
+      using value_type = typename std::remove_cvref_t::value_type;
+
+      // Check if the value is null
+      bool is_null_value;
+      SIMDJSON_TRY( is_null().get(is_null_value) );
+      if (is_null_value) {
+        out.reset(); // Set to nullopt
+        return SUCCESS;
+      }
+
+      if (!out) {
+        out.emplace();
+      }
+      return get(out.value());
+  } else {
+    static_assert(!sizeof(T), "The get method with type T is not implemented by the simdjson library. "
+      "And you do not seem to have added support for it. Indeed, we have that "
+      "simdjson::custom_deserializable is false and the type T is not a default type "
+      "such as ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
+      "int64_t, double, or bool.");
+    static_cast(out); // to get rid of unused errors
+    return UNINITIALIZED;
+  }
+#else // SIMDJSON_SUPPORTS_CONCEPTS
+    // Unless the simdjson library or the user provides an inline implementation, calling this method should
+    // immediately fail.
+    static_assert(!sizeof(T), "The get method with given type is not implemented by the simdjson library. "
+      "The supported types are ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
+      "int64_t, double, and bool. We recommend you use get_double(), get_bool(), get_uint64(), get_int64(), "
+      " get_object(), get_array(), get_raw_json_string(), or get_string() instead of the get template."
+      " You may also add support for custom types, see our documentation.");
+    static_cast(out); // to get rid of unused errors
+    return UNINITIALIZED;
+#endif
+  }
+
+  /**
+   * Cast this JSON value to an array.
+   *
+   * @returns An object that can be used to iterate the array.
+   * @returns INCORRECT_TYPE If the JSON value is not an array.
+   */
+  simdjson_inline simdjson_result get_array() noexcept;
+
+  /**
+   * Cast this JSON value to an object.
+   *
+   * @returns An object that can be used to look up or iterate fields.
+   * @returns INCORRECT_TYPE If the JSON value is not an object.
+   */
+  simdjson_inline simdjson_result get_object() noexcept;
+
+  /**
+   * Cast this JSON value to an unsigned integer.
+   *
+   * @returns A unsigned 64-bit integer.
+   * @returns INCORRECT_TYPE If the JSON value is not a 64-bit unsigned integer.
+   */
+  simdjson_inline simdjson_result get_uint64() noexcept;
+
+  /**
+   * Cast this JSON value (inside string) to a unsigned integer.
+   *
+   * @returns A unsigned 64-bit integer.
+   * @returns INCORRECT_TYPE If the JSON value is not a 64-bit unsigned integer.
+   */
+  simdjson_inline simdjson_result get_uint64_in_string() noexcept;
+
+  /**
+   * Cast this JSON value to a signed integer.
+   *
+   * @returns A signed 64-bit integer.
+   * @returns INCORRECT_TYPE If the JSON value is not a 64-bit integer.
+   */
+  simdjson_inline simdjson_result get_int64() noexcept;
+
+  /**
+   * Cast this JSON value (inside string) to a signed integer.
+   *
+   * @returns A signed 64-bit integer.
+   * @returns INCORRECT_TYPE If the JSON value is not a 64-bit integer.
+   */
+  simdjson_inline simdjson_result get_int64_in_string() noexcept;
+
+  /**
+   * Cast this JSON value to a double.
+   *
+   * @returns A double.
+   * @returns INCORRECT_TYPE If the JSON value is not a valid floating-point number.
+   */
+  simdjson_inline simdjson_result get_double() noexcept;
+
+  /**
+   * Cast this JSON value (inside string) to a double
+   *
+   * @returns A double.
+   * @returns INCORRECT_TYPE If the JSON value is not a valid floating-point number.
+   */
+  simdjson_inline simdjson_result get_double_in_string() noexcept;
+
+  /**
+   * Cast this JSON value to a string.
+   *
+   * The string is guaranteed to be valid UTF-8.
+   *
+   * Equivalent to get().
+   *
+   * Important: a value should be consumed once. Calling get_string() twice on the same value
+   * is an error.
+   *
+   * In some instances, you may want to allow replacement of invalid Unicode sequences.
+   * You may do so by passing the allow_replacement parameter as true. In the following
+   * example, the string "431924697b\udff0L\u0001Y" is not valid Unicode. By passing true
+   * to get_string, we allow the replacement of the invalid Unicode sequences with the Unicode
+   * replacement character (U+FFFD).
+   *
+   *   simdjson::ondemand::parser parser;
+   *   auto json = R"({"deviceId":"431924697b\udff0L\u0001Y"})"_padded;
+   *   simdjson::ondemand::document doc = parser.iterate(json);
+   *   auto view = doc["deviceId"].get_string(true);
+   *
+   * @returns An UTF-8 string. The string is stored in the parser and will be invalidated the next
+   *          time it parses a document or when it is destroyed.
+   * @returns INCORRECT_TYPE if the JSON value is not a string.
+   */
+  simdjson_inline simdjson_result get_string(bool allow_replacement = false) noexcept;
+
+  /**
+   * Attempts to fill the provided std::string reference with the parsed value of the current string.
+   *
+   * The string is guaranteed to be valid UTF-8.
+   *
+   * Important: a value should be consumed once. Calling get_string() twice on the same value
+   * is an error.
+   *
+   * Performance: This method may be slower than get_string() or get_string(bool) because it may need to allocate memory.
+   * We recommend you avoid allocating an std::string unless you need to.
+   *
+   * @returns INCORRECT_TYPE if the JSON value is not a string. Otherwise, we return SUCCESS.
+   */
+  template 
+  simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
+
+  /**
+   * Cast this JSON value to a "wobbly" string.
+   *
+   * The string is may not be a valid UTF-8 string.
+   * See https://simonsapin.github.io/wtf-8/
+   *
+   * Important: a value should be consumed once. Calling get_wobbly_string() twice on the same value
+   * is an error.
+   *
+   * @returns An UTF-8 string. The string is stored in the parser and will be invalidated the next
+   *          time it parses a document or when it is destroyed.
+   * @returns INCORRECT_TYPE if the JSON value is not a string.
+   */
+  simdjson_inline simdjson_result get_wobbly_string() noexcept;
+  /**
+   * Cast this JSON value to a raw_json_string.
+   *
+   * The string is guaranteed to be valid UTF-8, and may have escapes in it (e.g. \\ or \n).
+   *
+   * @returns A pointer to the raw JSON for the given string.
+   * @returns INCORRECT_TYPE if the JSON value is not a string.
+   */
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+
+  /**
+   * Cast this JSON value to a bool.
+   *
+   * @returns A bool value.
+   * @returns INCORRECT_TYPE if the JSON value is not true or false.
+   */
+  simdjson_inline simdjson_result get_bool() noexcept;
+
+  /**
+   * Checks if this JSON value is null. If and only if the value is
+   * null, then it is consumed (we advance). If we find a token that
+   * begins with 'n' but is not 'null', then an error is returned.
+   *
+   * @returns Whether the value is null.
+   * @returns INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
+   */
+  simdjson_inline simdjson_result is_null() noexcept;
+
+#if SIMDJSON_EXCEPTIONS
+  /**
+   * Cast this JSON value to an instance of type T. The programmer is responsible for
+   * providing an implementation of get for the type T, if T is not one of the types
+   * supported by the library (object, array, raw_json_string, string_view, uint64_t, etc.).
+   *
+   * See https://github.com/simdjson/simdjson/blob/master/doc/basics.md#adding-support-for-custom-types
+   *
+   * @returns An instance of type T
+   */
+  template 
+  explicit simdjson_inline operator T() noexcept(false);
+  /**
+   * Cast this JSON value to an array.
+   *
+   * @returns An object that can be used to iterate the array.
+   * @exception simdjson_error(INCORRECT_TYPE) If the JSON value is not an array.
+   */
+  simdjson_inline operator array() noexcept(false);
+  /**
+   * Cast this JSON value to an object.
+   *
+   * @returns An object that can be used to look up or iterate fields.
+   * @exception simdjson_error(INCORRECT_TYPE) If the JSON value is not an object.
+   */
+  simdjson_inline operator object() noexcept(false);
+  /**
+   * Cast this JSON value to an unsigned integer.
+   *
+   * @returns A signed 64-bit integer.
+   * @exception simdjson_error(INCORRECT_TYPE) If the JSON value is not a 64-bit unsigned integer.
+   */
+  simdjson_inline operator uint64_t() noexcept(false);
+  /**
+   * Cast this JSON value to a signed integer.
+   *
+   * @returns A signed 64-bit integer.
+   * @exception simdjson_error(INCORRECT_TYPE) If the JSON value is not a 64-bit integer.
+   */
+  simdjson_inline operator int64_t() noexcept(false);
+  /**
+   * Cast this JSON value to a double.
+   *
+   * @returns A double.
+   * @exception simdjson_error(INCORRECT_TYPE) If the JSON value is not a valid floating-point number.
+   */
+  simdjson_inline operator double() noexcept(false);
+  /**
+   * Cast this JSON value to a string.
+   *
+   * The string is guaranteed to be valid UTF-8.
+   *
+   * Equivalent to get().
+   *
+   * @returns An UTF-8 string. The string is stored in the parser and will be invalidated the next
+   *          time it parses a document or when it is destroyed.
+   * @exception simdjson_error(INCORRECT_TYPE) if the JSON value is not a string.
+   */
+  simdjson_inline operator std::string_view() noexcept(false);
+  /**
+   * Cast this JSON value to a raw_json_string.
+   *
+   * The string is guaranteed to be valid UTF-8, and may have escapes in it (e.g. \\ or \n).
+   *
+   * @returns A pointer to the raw JSON for the given string.
+   * @exception simdjson_error(INCORRECT_TYPE) if the JSON value is not a string.
+   */
+  simdjson_inline operator raw_json_string() noexcept(false);
+  /**
+   * Cast this JSON value to a bool.
+   *
+   * @returns A bool value.
+   * @exception simdjson_error(INCORRECT_TYPE) if the JSON value is not true or false.
+   */
+  simdjson_inline operator bool() noexcept(false);
+#endif
+
+  /**
+   * Begin array iteration.
+   *
+   * Part of the std::iterable interface.
+   *
+   * @returns INCORRECT_TYPE If the JSON value is not an array.
+   */
+  simdjson_inline simdjson_result begin() & noexcept;
+  /**
+   * Sentinel representing the end of the array.
+   *
+   * Part of the std::iterable interface.
+   */
+  simdjson_inline simdjson_result end() & noexcept;
+  /**
+   * This method scans the array and counts the number of elements.
+   * The count_elements method should always be called before you have begun
+   * iterating through the array: it is expected that you are pointing at
+   * the beginning of the array.
+   * The runtime complexity is linear in the size of the array. After
+   * calling this function, if successful, the array is 'rewinded' at its
+   * beginning as if it had never been accessed. If the JSON is malformed (e.g.,
+   * there is a missing comma), then an error is returned and it is no longer
+   * safe to continue.
+   *
+   * Performance hint: You should only call count_elements() as a last
+   * resort as it may require scanning the document twice or more.
+   */
+  simdjson_inline simdjson_result count_elements() & noexcept;
+  /**
+   * This method scans the object and counts the number of key-value pairs.
+   * The count_fields method should always be called before you have begun
+   * iterating through the object: it is expected that you are pointing at
+   * the beginning of the object.
+   * The runtime complexity is linear in the size of the object. After
+   * calling this function, if successful, the object is 'rewinded' at its
+   * beginning as if it had never been accessed. If the JSON is malformed (e.g.,
+   * there is a missing comma), then an error is returned and it is no longer
+   * safe to continue.
+   *
+   * To check that an object is empty, it is more performant to use
+   * the is_empty() method on the object instance.
+   *
+   * Performance hint: You should only call count_fields() as a last
+   * resort as it may require scanning the document twice or more.
+   */
+  simdjson_inline simdjson_result count_fields() & noexcept;
+  /**
+   * Get the value at the given index in the array. This function has linear-time complexity.
+   * This function should only be called once on an array instance since the array iterator is not reset between each call.
+   *
+   * @return The value at the given index, or:
+   *         - INDEX_OUT_OF_BOUNDS if the array index is larger than an array length
+   */
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  /**
+   * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
+   * fields must be accessed in the order they appear in the JSON text (although you can
+   * skip fields). See find_field_unordered() and operator[] for an order-insensitive version.
+   *
+   * The following code reads z, then y, then x, and thus will not retrieve x or y if fed the
+   * JSON `{ "x": 1, "y": 2, "z": 3 }`:
+   *
+   * ```cpp
+   * simdjson::ondemand::parser parser;
+   * auto obj = parser.parse(R"( { "x": 1, "y": 2, "z": 3 } )"_padded);
+   * double z = obj.find_field("z");
+   * double y = obj.find_field("y");
+   * double x = obj.find_field("x");
+   * ```
+   * If you have multiple fields with a matching key ({"x": 1,  "x": 1}) be mindful
+   * that only one field is returned.
+
+   * **Raw Keys:** The lookup will be done against the *raw* key, and will not unescape keys.
+   * e.g. `object["a"]` will match `{ "a": 1 }`, but will *not* match `{ "\u0061": 1 }`.
+   *
+   * @param key The key to look up.
+   * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
+   */
+  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field(const char *key) noexcept;
+
+  /**
+   * Look up a field by name on an object, without regard to key order.
+   *
+   * **Performance Notes:** This is a bit less performant than find_field(), though its effect varies
+   * and often appears negligible. It starts out normally, starting out at the last field; but if
+   * the field is not found, it scans from the beginning of the object to see if it missed it. That
+   * missing case has a non-cache-friendly bump and lots of extra scanning, especially if the object
+   * in question is large. The fact that the extra code is there also bumps the executable size.
+   *
+   * We default operator[] on find_field_unordered() for convenience.
+   * It is the default because it would be highly surprising (and hard to debug) if the
+   * default behavior failed to look up a field just because it was in the wrong order--and many
+   * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
+   *
+   * If you have multiple fields with a matching key ({"x": 1,  "x": 1}) be mindful
+   * that only one field is returned.
+   *
+   * Use find_field() if you are sure fields will be in order (or are willing to treat it as if the
+   * field as not there when they are not in order).
+   *
+   * @param key The key to look up.
+   * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
+   */
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](const char *key) noexcept;
+  simdjson_result operator[](int) noexcept = delete;
+
+  /**
+   * Get the type of this JSON value. It does not validate or consume the value.
+   * E.g., you must still call "is_null()" to check that a value is null even if
+   * "type()" returns json_type::null.
+   *
+   * NOTE: If you're only expecting a value to be one type (a typical case), it's generally
+   * better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just
+   * let it throw an exception).
+   *
+   * @return The type of JSON value (json_type::array, json_type::object, json_type::string,
+   *     json_type::number, json_type::boolean, or json_type::null).
+   * @error TAPE_ERROR when the JSON value is a bad token like "}" "," or "alse".
+   */
+  simdjson_inline simdjson_result type() noexcept;
+
+  /**
+   * Checks whether the value is a scalar (string, number, null, Boolean).
+   * Returns false when there it is an array or object.
+   *
+   * @returns true if the type is string, number, null, Boolean
+   * @error TAPE_ERROR when the JSON value is a bad token like "}" "," or "alse".
+   */
+  simdjson_inline simdjson_result is_scalar() noexcept;
+  /**
+   * Checks whether the value is a string.
+   *
+   * @returns true if the type is string
+   * @error TAPE_ERROR when the JSON value is a bad token like "}" "," or "alse".
+   */
+  simdjson_inline simdjson_result is_string() noexcept;
+
+  /**
+   * Checks whether the value is a negative number.
+   *
+   * @returns true if the number if negative.
+   */
+  simdjson_inline bool is_negative() noexcept;
+  /**
+   * Checks whether the value is an integer number. Note that
+   * this requires to partially parse the number string. If
+   * the value is determined to be an integer, it may still
+   * not parse properly as an integer in subsequent steps
+   * (e.g., it might overflow).
+   *
+   * Performance note: if you call this function systematically
+   * before parsing a number, you may have fallen for a performance
+   * anti-pattern.
+   *
+   * @returns true if the number if negative.
+   */
+  simdjson_inline simdjson_result is_integer() noexcept;
+  /**
+   * Determine the number type (integer or floating-point number) as quickly
+   * as possible. This function does not fully validate the input. It is
+   * useful when you only need to classify the numbers, without parsing them.
+   *
+   * If you are planning to retrieve the value or you need full validation,
+   * consider using the get_number() method instead: it will fully parse
+   * and validate the input, and give you access to the type:
+   * get_number().get_number_type().
+   *
+   * get_number_type() is number_type::unsigned_integer if we have
+   * an integer greater or equal to 9223372036854775808.
+   * get_number_type() is number_type::signed_integer if we have an
+   * integer that is less than 9223372036854775808.
+   * get_number_type() is number_type::big_integer for integers that do not fit in 64 bits,
+   * in which case the digit_count is set to the length of the big integer string.
+   * Otherwise, get_number_type() has value number_type::floating_point_number.
+   *
+   * This function requires processing the number string, but it is expected
+   * to be faster than get_number().get_number_type() because it is does not
+   * parse the number value.
+   *
+   * @returns the type of the number
+   */
+  simdjson_inline simdjson_result get_number_type() noexcept;
+
+  /**
+   * Attempt to parse an ondemand::number. An ondemand::number may
+   * contain an integer value or a floating-point value, the simdjson
+   * library will autodetect the type. Thus it is a dynamically typed
+   * number. Before accessing the value, you must determine the detected
+   * type.
+   *
+   * number.get_number_type() is number_type::signed_integer if we have
+   * an integer in [-9223372036854775808,9223372036854775808)
+   * You can recover the value by calling number.get_int64() and you
+   * have that number.is_int64() is true.
+   *
+   * number.get_number_type() is number_type::unsigned_integer if we have
+   * an integer in [9223372036854775808,18446744073709551616)
+   * You can recover the value by calling number.get_uint64() and you
+   * have that number.is_uint64() is true.
+   *
+   * For integers that do not fit in 64 bits, the function returns BIGINT_ERROR error code.
+   *
+   * Otherwise, number.get_number_type() has value number_type::floating_point_number
+   * and we have a binary64 number.
+   * You can recover the value by calling number.get_double() and you
+   * have that number.is_double() is true.
+   *
+   * You must check the type before accessing the value: it is an error
+   * to call "get_int64()" when number.get_number_type() is not
+   * number_type::signed_integer and when number.is_int64() is false.
+   *
+   * Performance note: this is designed with performance in mind. When
+   * calling 'get_number()', you scan the number string only once, determining
+   * efficiently the type and storing it in an efficient manner.
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result get_number() noexcept;
+
+  /**
+   * Get the raw JSON for this token.
+   *
+   * The string_view will always point into the input buffer.
+   *
+   * The string_view will start at the beginning of the token, and include the entire token
+   * *as well as all spaces until the next token (or EOF).* This means, for example, that a
+   * string token always begins with a " and is always terminated by the final ", possibly
+   * followed by a number of spaces.
+   *
+   * The string_view is *not* null-terminated. However, if this is a scalar (string, number,
+   * boolean, or null), the character after the end of the string_view is guaranteed to be
+   * a non-space token.
+   *
+   * Tokens include:
+   * - {
+   * - [
+   * - "a string (possibly with UTF-8 or backslashed characters like \\\")".
+   * - -1.2e-100
+   * - true
+   * - false
+   * - null
+   *
+   * See also value::raw_json().
+   */
+  simdjson_inline std::string_view raw_json_token() noexcept;
+
+  /**
+   * Get a string_view pointing at this value in the JSON document.
+   * If this element is an array or an object, it consumes the array or the object
+   * and returns a string_view instance corresponding to the
+   * array as represented in JSON. It points inside the original document.
+   * If this element is a scalar (string, number, Boolean, null), it returns what
+   * raw_json_token() would return.
+   */
+  simdjson_inline simdjson_result raw_json() noexcept;
+
+  /**
+   * Returns the current location in the document if in bounds.
+   */
+  simdjson_inline simdjson_result current_location() noexcept;
+
+  /**
+   * Returns the current depth in the document if in bounds.
+   *
+   * E.g.,
+   *  0 = finished with document
+   *  1 = document root value (could be [ or {, not yet known)
+   *  2 = , or } inside root array/object
+   *  3 = key or value inside root array/object.
+   */
+  simdjson_inline int32_t current_depth() const noexcept;
+
+  /**
+   * Get the value associated with the given JSON pointer.  We use the RFC 6901
+   * https://tools.ietf.org/html/rfc6901 standard.
+   *
+   *   ondemand::parser parser;
+   *   auto json = R"({ "foo": { "a": [ 10, 20, 30 ] }})"_padded;
+   *   auto doc = parser.iterate(json);
+   *   doc.at_pointer("/foo/a/1") == 20
+   *
+   * It is allowed for a key to be the empty string:
+   *
+   *   ondemand::parser parser;
+   *   auto json = R"({ "": { "a": [ 10, 20, 30 ] }})"_padded;
+   *   auto doc = parser.iterate(json);
+   *   doc.at_pointer("//a/1") == 20
+   *
+   * Note that at_pointer() called on the document automatically calls the document's rewind
+   * method between each call. It invalidates all previously accessed arrays, objects and values
+   * that have not been consumed.
+   *
+   * Calling at_pointer() on non-document instances (e.g., arrays and objects) is not
+   * standardized (by RFC 6901). We provide some experimental support for JSON pointers
+   * on non-document instances.  Yet it is not the case when calling at_pointer on an array
+   * or an object instance: there is no rewind and no invalidation.
+   *
+   * You may only call at_pointer on an array after it has been created, but before it has
+   * been first accessed. When calling at_pointer on an array, the pointer is advanced to
+   * the location indicated by the JSON pointer (in case of success). It is no longer possible
+   * to call at_pointer on the same array.
+   *
+   * You may call at_pointer more than once on an object, but each time the pointer is advanced
+   * to be within the value matched by the key indicated by the JSON pointer query. Thus any preceding
+   * key (as well as the current key) can no longer be used with following JSON pointer calls.
+   *
+   * Also note that at_pointer() relies on find_field() which implies that we do not unescape keys when matching
+   *
+   * @return The value associated with the given JSON pointer, or:
+   *         - NO_SUCH_FIELD if a field does not exist in an object
+   *         - INDEX_OUT_OF_BOUNDS if an array index is larger than an array length
+   *         - INCORRECT_TYPE if a non-integer is used to access an array
+   *         - INVALID_JSON_POINTER if the JSON pointer is invalid and cannot be parsed
+   */
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+
+  /**
+   * Get the value associated with the given JSONPath expression. We only support
+   * JSONPath queries that trivially convertible to JSON Pointer queries: key
+   * names and array indices.
+   *
+   * @return The value associated with the given JSONPath expression, or:
+   *         - INVALID_JSON_POINTER if the JSONPath to JSON Pointer conversion fails
+   *         - NO_SUCH_FIELD if a field does not exist in an object
+   *         - INDEX_OUT_OF_BOUNDS if an array index is larger than an array length
+   *         - INCORRECT_TYPE if a non-integer is used to access an array
+   */
+  simdjson_inline simdjson_result at_path(std::string_view at_path) noexcept;
+
+  /**
+   * Get all values matching the given JSONPath expression with wildcard support.
+   * Supports wildcard character (*) for arrays or ".*" for objects.
+   *
+   * @param json_path JSONPath expression with wildcards
+   * @return Vector of values matching the wildcard pattern
+   */
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+
+protected:
+  /**
+   * Create a value.
+   */
+  simdjson_inline value(const value_iterator &iter) noexcept;
+
+  /**
+   * Skip this value, allowing iteration to continue.
+   */
+  simdjson_inline void skip() noexcept;
+
+  /**
+   * Start a value at the current position.
+   *
+   * (It should already be started; this is just a self-documentation method.)
+   */
+  static simdjson_inline value start(const value_iterator &iter) noexcept;
+
+  /**
+   * Resume a value.
+   */
+  static simdjson_inline value resume(const value_iterator &iter) noexcept;
+
+  /**
+   * Get the object, starting or resuming it as necessary
+   */
+  simdjson_inline simdjson_result start_or_resume_object() noexcept;
+
+  // simdjson_inline void log_value(const char *type) const noexcept;
+  // simdjson_inline void log_error(const char *message) const noexcept;
+
+  value_iterator iter{};
+
+  friend class document;
+  friend class array_iterator;
+  friend class field;
+  friend class object;
+  friend struct simdjson_result;
+  friend struct simdjson_result;
+  friend class field;
+};
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::value &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+
+  simdjson_inline simdjson_result get_array() noexcept;
+  simdjson_inline simdjson_result get_object() noexcept;
+
+  simdjson_inline simdjson_result get_uint64() noexcept;
+  simdjson_inline simdjson_result get_uint64_in_string() noexcept;
+  simdjson_inline simdjson_result get_int64() noexcept;
+  simdjson_inline simdjson_result get_int64_in_string() noexcept;
+  simdjson_inline simdjson_result get_double() noexcept;
+  simdjson_inline simdjson_result get_double_in_string() noexcept;
+  simdjson_inline simdjson_result get_string(bool allow_replacement = false) noexcept;
+  template 
+  simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
+  simdjson_inline simdjson_result get_wobbly_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_bool() noexcept;
+  simdjson_inline simdjson_result is_null() noexcept;
+
+  template simdjson_inline simdjson_result get() noexcept;
+
+  template simdjson_inline error_code get(T &out) noexcept;
+
+#if SIMDJSON_EXCEPTIONS
+  template 
+  explicit simdjson_inline operator T() noexcept(false);
+  simdjson_inline operator arm64::ondemand::array() noexcept(false);
+  simdjson_inline operator arm64::ondemand::object() noexcept(false);
+  simdjson_inline operator uint64_t() noexcept(false);
+  simdjson_inline operator int64_t() noexcept(false);
+  simdjson_inline operator double() noexcept(false);
+  simdjson_inline operator std::string_view() noexcept(false);
+  simdjson_inline operator arm64::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator bool() noexcept(false);
+#endif
+  simdjson_inline simdjson_result count_elements() & noexcept;
+  simdjson_inline simdjson_result count_fields() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+
+  /**
+   * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
+   * fields must be accessed in the order they appear in the JSON text (although you can
+   * skip fields). See find_field_unordered() and operator[] for an order-insensitive version.
+   *
+   * The following code reads z, then y, then x, and thus will not retrieve x or y if fed the
+   * JSON `{ "x": 1, "y": 2, "z": 3 }`:
+   *
+   * ```cpp
+   * simdjson::ondemand::parser parser;
+   * auto obj = parser.parse(R"( { "x": 1, "y": 2, "z": 3 } )"_padded);
+   * double z = obj.find_field("z");
+   * double y = obj.find_field("y");
+   * double x = obj.find_field("x");
+   * ```
+   *
+   * **Raw Keys:** The lookup will be done against the *raw* key, and will not unescape keys.
+   * e.g. `object["a"]` will match `{ "a": 1 }`, but will *not* match `{ "\u0061": 1 }`.
+   *
+   * @param key The key to look up.
+   * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
+   */
+  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field(const char *key) noexcept;
+
+  /**
+   * Look up a field by name on an object, without regard to key order.
+   *
+   * **Performance Notes:** This is a bit less performant than find_field(), though its effect varies
+   * and often appears negligible. It starts out normally, starting out at the last field; but if
+   * the field is not found, it scans from the beginning of the object to see if it missed it. That
+   * missing case has a non-cache-friendly bump and lots of extra scanning, especially if the object
+   * in question is large. The fact that the extra code is there also bumps the executable size.
+   *
+   * We default operator[] on find_field_unordered() for convenience.
+   * It is the default because it would be highly surprising (and hard to debug) if the
+   * default behavior failed to look up a field just because it was in the wrong order--and many
+   * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
+   *
+   * Use find_field() if you are sure fields will be in order (or are willing to treat it as if the
+   * field as not there when they are not in order).
+   *
+   * @param key The key to look up.
+   * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
+   */
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](const char *key) noexcept;
+  simdjson_result operator[](int) noexcept = delete;
+
+  /**
+   * Get the type of this JSON value. It does not validate or consume the value.
+   * E.g., you must still call "is_null()" to check that a value is null even if
+   * "type()" returns json_type::null.
+   *
+   * Given a valid JSON document, the answer can be one of
+   * simdjson::ondemand::json_type::object,
+   * simdjson::ondemand::json_type::array,
+   * simdjson::ondemand::json_type::string,
+   * simdjson::ondemand::json_type::number,
+   * simdjson::ondemand::json_type::boolean,
+   * simdjson::ondemand::json_type::null.
+   *
+   * Starting with simdjson 4.0, this function will return simdjson::ondemand::json_type::unknown
+   * given a bad token.
+   * This allows you to identify a case such as {"key": NaN} and identify the NaN value.
+   * The simdjson::ondemand::json_type::unknown value should only happen with non-valid JSON.
+   *
+   * NOTE: If you're only expecting a value to be one type (a typical case), it's generally
+   * better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just
+   * let it throw an exception).
+   */
+  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result is_scalar() noexcept;
+  simdjson_inline simdjson_result is_string() noexcept;
+  simdjson_inline simdjson_result is_negative() noexcept;
+  simdjson_inline simdjson_result is_integer() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
+
+  /** @copydoc simdjson_inline std::string_view value::raw_json_token() const noexcept */
+  simdjson_inline simdjson_result raw_json_token() noexcept;
+  simdjson_inline simdjson_result raw_json() noexcept;
+
+  /** @copydoc simdjson_inline simdjson_result current_location() noexcept */
+  simdjson_inline simdjson_result current_location() noexcept;
+  /** @copydoc simdjson_inline int32_t current_depth() const noexcept */
+  simdjson_inline simdjson_result current_depth() const noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_H
+/* end file simdjson/generic/ondemand/value.h for arm64 */
+/* including simdjson/generic/ondemand/logger.h for arm64: #include "simdjson/generic/ondemand/logger.h" */
+/* begin file simdjson/generic/ondemand/logger.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_LOGGER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+// Logging should be free unless SIMDJSON_VERBOSE_LOGGING is set. Importantly, it is critical
+// that the call to the log functions be side-effect free. Thus, for example, you should not
+// create temporary std::string instances.
+namespace logger {
+
+enum class log_level : int32_t {
+  info = 0,
+  error = 1
+};
+
+#if SIMDJSON_VERBOSE_LOGGING
+  static constexpr const bool LOG_ENABLED = true;
+#else
+  static constexpr const bool LOG_ENABLED = false;
+#endif
+
+// We do not want these functions to be 'really inlined' since real inlining is
+// for performance purposes and if you are using the loggers, you do not care about
+// performance (or should not).
+static inline void log_headers() noexcept;
+// If args are provided, title will be treated as format string
+template 
+static inline void log_line(const json_iterator &iter, token_position index, depth_t depth, const char *title_prefix, const char *title, std::string_view detail, logger::log_level level, Args&&... args) noexcept;
+template 
+static inline void log_line(const json_iterator &iter, const char *title_prefix, const char *title, std::string_view detail, int delta, int depth_delta, logger::log_level level, Args&&... args) noexcept;
+static inline void log_event(const json_iterator &iter, const char *type, std::string_view detail="", int delta=0, int depth_delta=0) noexcept;
+static inline void log_value(const json_iterator &iter, token_position index, depth_t depth, const char *type, std::string_view detail="") noexcept;
+static inline void log_value(const json_iterator &iter, const char *type, std::string_view detail="", int delta=-1, int depth_delta=0) noexcept;
+static inline void log_start_value(const json_iterator &iter, token_position index, depth_t depth, const char *type, std::string_view detail="") noexcept;
+static inline void log_start_value(const json_iterator &iter, const char *type, int delta=-1, int depth_delta=0) noexcept;
+static inline void log_end_value(const json_iterator &iter, const char *type, int delta=-1, int depth_delta=0) noexcept;
+
+static inline void log_error(const json_iterator &iter, token_position index, depth_t depth, const char *error, const char *detail="") noexcept;
+static inline void log_error(const json_iterator &iter, const char *error, const char *detail="", int delta=-1, int depth_delta=0) noexcept;
+
+static inline void log_event(const value_iterator &iter, const char *type, std::string_view detail="", int delta=0, int depth_delta=0) noexcept;
+static inline void log_value(const value_iterator &iter, const char *type, std::string_view detail="", int delta=-1, int depth_delta=0) noexcept;
+static inline void log_start_value(const value_iterator &iter, const char *type, int delta=-1, int depth_delta=0) noexcept;
+static inline void log_end_value(const value_iterator &iter, const char *type, int delta=-1, int depth_delta=0) noexcept;
+static inline void log_error(const value_iterator &iter, const char *error, const char *detail="", int delta=-1, int depth_delta=0) noexcept;
+
+} // namespace logger
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
+/* end file simdjson/generic/ondemand/logger.h for arm64 */
+/* including simdjson/generic/ondemand/token_iterator.h for arm64: #include "simdjson/generic/ondemand/token_iterator.h" */
+/* begin file simdjson/generic/ondemand/token_iterator.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/logger.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+/**
+ * Iterates through JSON tokens (`{` `}` `[` `]` `,` `:` `""` `123` `true` `false` `null`)
+ * detected by stage 1.
+ *
+ * @private This is not intended for external use.
+ */
+class token_iterator {
+public:
+  /**
+   * Create a new invalid token_iterator.
+   *
+   * Exists so you can declare a variable and later assign to it before use.
+   */
+  simdjson_inline token_iterator() noexcept = default;
+  simdjson_inline token_iterator(token_iterator &&other) noexcept = default;
+  simdjson_inline token_iterator &operator=(token_iterator &&other) noexcept = default;
+  simdjson_inline token_iterator(const token_iterator &other) noexcept = default;
+  simdjson_inline token_iterator &operator=(const token_iterator &other) noexcept = default;
+
+  /**
+   * Advance to the next token (returning the current one).
+   */
+  simdjson_inline const uint8_t *return_current_and_advance() noexcept;
+  /**
+   * Reports the current offset in bytes from the start of the underlying buffer.
+   */
+  simdjson_inline uint32_t current_offset() const noexcept;
+  /**
+   * Get the JSON text for a given token (relative).
+   *
+   * This is not null-terminated; it is a view into the JSON.
+   *
+   * @param delta The relative position of the token to retrieve. e.g. 0 = current token,
+   *              1 = next token, -1 = prev token.
+   *
+   * TODO consider a string_view, assuming the length will get stripped out by the optimizer when
+   * it is not used...
+   */
+  simdjson_inline const uint8_t *peek(int32_t delta=0) const noexcept;
+  /**
+   * Get the maximum length of the JSON text for a given token.
+   *
+   * The length will include any whitespace at the end of the token.
+   *
+   * @param delta The relative position of the token to retrieve. e.g. 0 = current token,
+   *              1 = next token, -1 = prev token.
+   */
+  simdjson_inline uint32_t peek_length(int32_t delta=0) const noexcept;
+
+  /**
+   * Get the JSON text for a given token.
+   *
+   * This is not null-terminated; it is a view into the JSON.
+   *
+   * @param position The position of the token.
+   *
+   */
+  simdjson_inline const uint8_t *peek(token_position position) const noexcept;
+  /**
+   * Get the maximum length of the JSON text for a given token.
+   *
+   * The length will include any whitespace at the end of the token.
+   *
+   * @param position The position of the token.
+   */
+  simdjson_inline uint32_t peek_length(token_position position) const noexcept;
+  /**
+   * Get the maximum length of the JSON text for a root token.
+   *
+   * The length will include any whitespace at the end of the token.
+   *
+   * @param position The position of the token (start of the document).
+   */
+  simdjson_inline uint32_t peek_root_length(token_position position) const noexcept;
+  /**
+   * Return the current index.
+   */
+  simdjson_inline token_position position() const noexcept;
+  /**
+   * Reset to a previously saved index.
+   */
+  simdjson_inline void set_position(token_position target_position) noexcept;
+
+  // NOTE: we don't support a full C++ iterator interface, because we expect people to make
+  // different calls to advance the iterator based on *their own* state.
+
+  simdjson_inline bool operator==(const token_iterator &other) const noexcept;
+  simdjson_inline bool operator!=(const token_iterator &other) const noexcept;
+  simdjson_inline bool operator>(const token_iterator &other) const noexcept;
+  simdjson_inline bool operator>=(const token_iterator &other) const noexcept;
+  simdjson_inline bool operator<(const token_iterator &other) const noexcept;
+  simdjson_inline bool operator<=(const token_iterator &other) const noexcept;
+
+protected:
+  simdjson_inline token_iterator(const uint8_t *buf, token_position position) noexcept;
+
+  /**
+   * Get the index of the JSON text for a given token (relative).
+   *
+   * This is not null-terminated; it is a view into the JSON.
+   *
+   * @param delta The relative position of the token to retrieve. e.g. 0 = current token,
+   *              1 = next token, -1 = prev token.
+   */
+  simdjson_inline uint32_t peek_index(int32_t delta=0) const noexcept;
+  /**
+   * Get the index of the JSON text for a given token.
+   *
+   * This is not null-terminated; it is a view into the JSON.
+   *
+   * @param position The position of the token.
+   *
+   */
+  simdjson_inline uint32_t peek_index(token_position position) const noexcept;
+
+  const uint8_t *buf{};
+  token_position _position{};
+
+  friend class json_iterator;
+  friend class value_iterator;
+  friend class object;
+  template 
+  friend simdjson_inline void logger::log_line(const json_iterator &iter, const char *title_prefix, const char *title, std::string_view detail, int delta, int depth_delta, logger::log_level level, Args&&... args) noexcept;
+  template 
+  friend simdjson_inline void logger::log_line(const json_iterator &iter, token_position index, depth_t depth, const char *title_prefix, const char *title, std::string_view detail, logger::log_level level, Args&&... args) noexcept;
+};
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::token_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+  simdjson_inline ~simdjson_result() noexcept = default; ///< @private
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
+/* end file simdjson/generic/ondemand/token_iterator.h for arm64 */
+/* including simdjson/generic/ondemand/json_iterator.h for arm64: #include "simdjson/generic/ondemand/json_iterator.h" */
+/* begin file simdjson/generic/ondemand/json_iterator.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/token_iterator.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+/**
+ * Iterates through JSON tokens, keeping track of depth and string buffer.
+ *
+ * @private This is not intended for external use.
+ */
+class json_iterator {
+protected:
+  token_iterator token{};
+  ondemand::parser *parser{};
+  /**
+   * Next free location in the string buffer.
+   *
+   * Used by raw_json_string::unescape() to have a place to unescape strings to.
+   */
+  uint8_t *_string_buf_loc{};
+  /**
+   * JSON error, if there is one.
+   *
+   * INCORRECT_TYPE and NO_SUCH_FIELD are *not* stored here, ever.
+   *
+   * PERF NOTE: we *hope* this will be elided into control flow, as it is only used (a) in the first
+   * iteration of the loop, or (b) for the final iteration after a missing comma is found in ++. If
+   * this is not elided, we should make sure it's at least not using up a register. Failing that,
+   * we should store it in document so there's only one of them.
+   */
+  error_code error{SUCCESS};
+  /**
+   * Depth of the current token in the JSON.
+   *
+   * - 0 = finished with document
+   * - 1 = document root value (could be [ or {, not yet known)
+   * - 2 = , or } inside root array/object
+   * - 3 = key or value inside root array/object.
+   */
+  depth_t _depth{};
+  /**
+   * Beginning of the document indexes.
+   * Normally we have root == parser->implementation->structural_indexes.get()
+   * but this may differ, especially in streaming mode (where we have several
+   * documents);
+   */
+  token_position _root{};
+  /**
+   * Normally, a json_iterator operates over a single document, but in
+   * some cases, we may have a stream of documents. This attribute is meant
+   * as meta-data: the json_iterator works the same irrespective of the
+   * value of this attribute.
+   */
+  bool _streaming{false};
+
+public:
+  simdjson_inline json_iterator() noexcept = default;
+  simdjson_inline json_iterator(json_iterator &&other) noexcept;
+  simdjson_inline json_iterator &operator=(json_iterator &&other) noexcept;
+  simdjson_inline explicit json_iterator(const json_iterator &other) noexcept = default;
+  simdjson_inline json_iterator &operator=(const json_iterator &other) noexcept = default;
+  /**
+   * Skips a JSON value, whether it is a scalar, array or object.
+   */
+  simdjson_warn_unused simdjson_inline error_code skip_child(depth_t parent_depth) noexcept;
+
+  /**
+   * Tell whether the iterator is still at the start
+   */
+  simdjson_inline bool at_root() const noexcept;
+
+  /**
+   * Tell whether we should be expected to run in streaming
+   * mode (iterating over many documents). It is pure metadata
+   * that does not affect how the iterator works. It is used by
+   * start_root_array() and start_root_object().
+   */
+  simdjson_inline bool streaming() const noexcept;
+
+  /**
+   * Get the root value iterator
+   */
+  simdjson_inline token_position root_position() const noexcept;
+  /**
+   * Assert that we are at the document depth (== 1)
+   */
+  simdjson_inline void assert_at_document_depth() const noexcept;
+  /**
+   * Assert that we are at the root of the document
+   */
+  simdjson_inline void assert_at_root() const noexcept;
+
+  /**
+   * Tell whether the iterator is at the EOF mark
+   */
+  simdjson_inline bool at_end() const noexcept;
+
+  /**
+   * Tell whether the iterator is live (has not been moved).
+   */
+  simdjson_inline bool is_alive() const noexcept;
+
+  /**
+   * Abandon this iterator, setting depth to 0 (as if the document is finished).
+   */
+  simdjson_inline void abandon() noexcept;
+
+  /**
+   * Advance the current token without modifying depth.
+   */
+  simdjson_inline const uint8_t *return_current_and_advance() noexcept;
+
+  /**
+   * Returns true if there is a single token in the index (i.e., it is
+   * a JSON with a scalar value such as a single number).
+   *
+   * @return whether there is a single token
+   */
+  simdjson_inline bool is_single_token() const noexcept;
+
+  /**
+   * Assert that there are at least the given number of tokens left.
+   *
+   * Has no effect in release builds.
+   */
+  simdjson_inline void assert_more_tokens(uint32_t required_tokens=1) const noexcept;
+  /**
+   * Assert that the given position addresses an actual token (is within bounds).
+   *
+   * Has no effect in release builds.
+   */
+  simdjson_inline void assert_valid_position(token_position position) const noexcept;
+  /**
+   * Get the JSON text for a given token (relative).
+   *
+   * This is not null-terminated; it is a view into the JSON.
+   *
+   * @param delta The relative position of the token to retrieve. e.g. 0 = next token, -1 = prev token.
+   *
+   * TODO consider a string_view, assuming the length will get stripped out by the optimizer when
+   * it is not used ...
+   */
+  simdjson_inline const uint8_t *peek(int32_t delta=0) const noexcept;
+  /**
+   * Get the maximum length of the JSON text for the current token (or relative).
+   *
+   * The length will include any whitespace at the end of the token.
+   *
+   * @param delta The relative position of the token to retrieve. e.g. 0 = next token, -1 = prev token.
+   */
+  simdjson_inline uint32_t peek_length(int32_t delta=0) const noexcept;
+  /**
+   * Get a pointer to the current location in the input buffer.
+   *
+   * This is not null-terminated; it is a view into the JSON.
+   *
+   * You may be pointing outside of the input buffer: it is not generally
+   * safe to dereference this pointer.
+   */
+  simdjson_inline const uint8_t *unsafe_pointer() const noexcept;
+  /**
+   * Get the JSON text for a given token.
+   *
+   * This is not null-terminated; it is a view into the JSON.
+   *
+   * @param position The position of the token to retrieve.
+   *
+   * TODO consider a string_view, assuming the length will get stripped out by the optimizer when
+   * it is not used ...
+   */
+  simdjson_inline const uint8_t *peek(token_position position) const noexcept;
+  /**
+   * Get the maximum length of the JSON text for the current token (or relative).
+   *
+   * The length will include any whitespace at the end of the token.
+   *
+   * @param position The position of the token to retrieve.
+   */
+  simdjson_inline uint32_t peek_length(token_position position) const noexcept;
+  /**
+   * Get the maximum length of the JSON text for the current root token.
+   *
+   * The length will include any whitespace at the end of the token.
+   *
+   * @param position The position of the token to retrieve.
+   */
+  simdjson_inline uint32_t peek_root_length(token_position position) const noexcept;
+  /**
+   * Get the JSON text for the last token in the document.
+   *
+   * This is not null-terminated; it is a view into the JSON.
+   *
+   * TODO consider a string_view, assuming the length will get stripped out by the optimizer when
+   * it is not used ...
+   */
+  simdjson_inline const uint8_t *peek_last() const noexcept;
+
+  /**
+   * Ascend one level.
+   *
+   * Validates that the depth - 1 == parent_depth.
+   *
+   * @param parent_depth the expected parent depth.
+   */
+  simdjson_inline void ascend_to(depth_t parent_depth) noexcept;
+
+  /**
+   * Descend one level.
+   *
+   * Validates that the new depth == child_depth.
+   *
+   * @param child_depth the expected child depth.
+   */
+  simdjson_inline void descend_to(depth_t child_depth) noexcept;
+  simdjson_inline void descend_to(depth_t child_depth, int32_t delta) noexcept;
+
+  /**
+   * Get current depth.
+   */
+  simdjson_inline depth_t depth() const noexcept;
+
+  /**
+   * Get current (writeable) location in the string buffer.
+   */
+  simdjson_inline uint8_t *&string_buf_loc() noexcept;
+
+  /**
+   * Report an unrecoverable error, preventing further iteration.
+   *
+   * @param error The error to report. Must not be SUCCESS, UNINITIALIZED, INCORRECT_TYPE, or NO_SUCH_FIELD.
+   * @param message An error message to report with the error.
+   */
+  simdjson_warn_unused simdjson_inline error_code report_error(error_code error, const char *message) noexcept;
+
+  /**
+   * Log error, but don't stop iteration.
+   * @param error The error to report. Must be INCORRECT_TYPE, or NO_SUCH_FIELD.
+   * @param message An error message to report with the error.
+   */
+  simdjson_warn_unused simdjson_inline error_code optional_error(error_code error, const char *message) noexcept;
+
+  /**
+   * Take an input in json containing max_len characters and attempt to copy it over to tmpbuf, a buffer with
+   * N bytes of capacity. It will return false if N is too small (smaller than max_len) of if it is zero.
+   * The buffer (tmpbuf) is padded with space characters.
+   */
+  simdjson_warn_unused simdjson_inline bool copy_to_buffer(const uint8_t *json, uint32_t max_len, uint8_t *tmpbuf, size_t N) noexcept;
+
+  simdjson_inline token_position position() const noexcept;
+  /**
+   * Write the raw_json_string to the string buffer and return a string_view.
+   * Each raw_json_string should be unescaped once, or else the string buffer might
+   * overflow.
+   */
+  simdjson_inline simdjson_result unescape(raw_json_string in, bool allow_replacement) noexcept;
+  simdjson_inline simdjson_result unescape_wobbly(raw_json_string in) noexcept;
+
+  simdjson_inline void reenter_child(token_position position, depth_t child_depth) noexcept;
+
+  simdjson_warn_unused  simdjson_inline error_code consume_character(char c) noexcept;
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  simdjson_inline token_position start_position(depth_t depth) const noexcept;
+  simdjson_inline void set_start_position(depth_t depth, token_position position) noexcept;
+#endif
+
+  /* Useful for debugging and logging purposes. */
+  inline std::string to_string() const noexcept;
+
+  /**
+   * Returns the current location in the document if in bounds.
+   */
+  inline simdjson_result current_location() const noexcept;
+
+  /**
+   * Updates this json iterator so that it is back at the beginning of the document,
+   * as if it had just been created.
+   */
+  inline void rewind() noexcept;
+  /**
+   * This checks whether the {,},[,] are balanced so that the document
+   * ends with proper zero depth. This requires scanning the whole document
+   * and it may be expensive. It is expected that it will be rarely called.
+   * It does not attempt to match { with } and [ with ].
+   */
+  inline bool balanced() const noexcept;
+protected:
+  simdjson_inline json_iterator(const uint8_t *buf, ondemand::parser *parser) noexcept;
+#ifdef SIMDJSON_EXPERIMENTAL_ALLOW_INCOMPLETE_JSON
+  simdjson_inline json_iterator(const uint8_t *buf, ondemand::parser *parser, bool streaming) noexcept;
+#endif // SIMDJSON_EXPERIMENTAL_ALLOW_INCOMPLETE_JSON
+  /// The last token before the end
+  simdjson_inline token_position last_position() const noexcept;
+  /// The token *at* the end. This points at gibberish and should only be used for comparison.
+  simdjson_inline token_position end_position() const noexcept;
+  /// The end of the buffer.
+  simdjson_inline token_position end() const noexcept;
+
+  friend class document;
+  friend class document_stream;
+  friend class object;
+  friend class array;
+  friend class value;
+  friend class raw_json_string;
+  friend class parser;
+  friend class value_iterator;
+  friend class field;
+  template 
+  friend simdjson_inline void logger::log_line(const json_iterator &iter, const char *title_prefix, const char *title, std::string_view detail, int delta, int depth_delta, logger::log_level level, Args&&... args) noexcept;
+  template 
+  friend simdjson_inline void logger::log_line(const json_iterator &iter, token_position index, depth_t depth, const char *title_prefix, const char *title, std::string_view detail, logger::log_level level, Args&&... args) noexcept;
+}; // json_iterator
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::json_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+
+  simdjson_inline simdjson_result() noexcept = default;
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
+/* end file simdjson/generic/ondemand/json_iterator.h for arm64 */
+/* including simdjson/generic/ondemand/json_type.h for arm64: #include "simdjson/generic/ondemand/json_type.h" */
+/* begin file simdjson/generic/ondemand/json_type.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/numberparsing.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+/**
+ * The type of a JSON value.
+ */
+enum class json_type {
+    unknown=0,
+    // Start at 1 to catch uninitialized / default values more easily
+    array=1, ///< A JSON array   ( [ 1, 2, 3 ... ] )
+    object,  ///< A JSON object  ( { "a": 1, "b" 2, ... } )
+    number,  ///< A JSON number  ( 1 or -2.3 or 4.5e6 ...)
+    string,  ///< A JSON string  ( "a" or "hello world\n" ...)
+    boolean, ///< A JSON boolean (true or false)
+    null     ///< A JSON null    (null)
+};
+
+/**
+ * A type representing a JSON number.
+ * The design of the struct is deliberately straight-forward. All
+ * functions return standard values with no error check.
+ */
+struct number {
+
+  /**
+   * return the automatically determined type of
+   * the number: number_type::floating_point_number,
+   * number_type::signed_integer or number_type::unsigned_integer.
+   *
+   *    enum class number_type {
+   *        floating_point_number=1, /// a binary64 number
+   *        signed_integer,          /// a signed integer that fits in a 64-bit word using two's complement
+   *        unsigned_integer         /// a positive integer larger or equal to 1<<63
+   *    };
+   */
+  simdjson_inline ondemand::number_type get_number_type() const noexcept;
+  /**
+   * return true if the automatically determined type of
+   * the number is number_type::unsigned_integer.
+   */
+  simdjson_inline bool is_uint64() const noexcept;
+  /**
+   * return the value as a uint64_t, only valid if is_uint64() is true.
+   */
+  simdjson_inline uint64_t get_uint64() const noexcept;
+  simdjson_inline operator uint64_t() const noexcept;
+
+  /**
+   * return true if the automatically determined type of
+   * the number is number_type::signed_integer.
+   */
+  simdjson_inline bool is_int64() const noexcept;
+  /**
+   * return the value as a int64_t, only valid if is_int64() is true.
+   */
+  simdjson_inline int64_t get_int64() const noexcept;
+  simdjson_inline operator int64_t() const noexcept;
+
+
+  /**
+   * return true if the automatically determined type of
+   * the number is number_type::floating_point_number.
+   */
+  simdjson_inline bool is_double() const noexcept;
+  /**
+   * return the value as a double, only valid if is_double() is true.
+   */
+  simdjson_inline double get_double() const noexcept;
+  simdjson_inline operator double() const noexcept;
+
+  /**
+   * Convert the number to a double. Though it always succeed, the conversion
+   * may be lossy if the number cannot be represented exactly.
+   */
+  simdjson_inline double as_double() const noexcept;
+
+
+protected:
+  /**
+   * The next block of declaration is designed so that we can call the number parsing
+   * functions on a number type. They are protected and should never be used outside
+   * of the core simdjson library.
+   */
+  friend class value_iterator;
+  template
+  friend error_code numberparsing::write_float(const uint8_t *const src, bool negative, uint64_t i, const uint8_t * start_digits, size_t digit_count, int64_t exponent, W &writer);
+  template
+  friend error_code numberparsing::parse_number(const uint8_t *const src, W &writer);
+  /** Store a signed 64-bit value to the number. */
+  simdjson_inline void append_s64(int64_t value) noexcept;
+  /** Store an unsigned 64-bit value to the number. */
+  simdjson_inline void append_u64(uint64_t value) noexcept;
+  /** Store a double value to the number. */
+  simdjson_inline void append_double(double value) noexcept;
+  /** Specifies that the value is a double, but leave it undefined. */
+  simdjson_inline void skip_double() noexcept;
+  /**
+   * End of friend declarations.
+   */
+
+  /**
+   * Our attributes are a union type (size = 64 bits)
+   * followed by a type indicator.
+   */
+  union {
+    double floating_point_number;
+    int64_t signed_integer;
+    uint64_t unsigned_integer;
+  } payload{0};
+  number_type type{number_type::signed_integer};
+};
+
+/**
+ * Write the JSON type to the output stream
+ *
+ * @param out The output stream.
+ * @param type The json_type.
+ */
+inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept;
+
+#if SIMDJSON_EXCEPTIONS
+/**
+ * Send JSON type to an output stream.
+ *
+ * @param out The output stream.
+ * @param type The json_type.
+ * @throw simdjson_error if the result being printed has an error. If there is an error with the
+ *        underlying output stream, that error will be propagated (simdjson_error will not be
+ *        thrown).
+ */
+inline std::ostream& operator<<(std::ostream& out, simdjson_result &type) noexcept(false);
+#endif
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::json_type &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+  simdjson_inline ~simdjson_result() noexcept = default; ///< @private
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
+/* end file simdjson/generic/ondemand/json_type.h for arm64 */
+/* including simdjson/generic/ondemand/raw_json_string.h for arm64: #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+/**
+ * A string escaped per JSON rules, terminated with quote ("). They are used to represent
+ * unescaped keys inside JSON documents.
+ *
+ * (In other words, a pointer to the beginning of a string, just after the start quote, inside a
+ * JSON file.)
+ *
+ * This class is deliberately simplistic and has little functionality. You can
+ * compare a raw_json_string instance with an unescaped C string, but
+ * that is nearly all you can do.
+ *
+ * The raw_json_string is unescaped. If you wish to write an unescaped version of it to your own
+ * buffer, you may do so using the parser.unescape(string, buff) method, using an ondemand::parser
+ * instance. Doing so requires you to have a sufficiently large buffer.
+ *
+ * The raw_json_string instances originate typically from field instance which in turn represent
+ * key-value pairs from object instances. From a field instance, you get the raw_json_string
+ * instance by calling key(). You can, if you want a more usable string_view instance, call
+ * the unescaped_key() method on the field instance. You may also create a raw_json_string from
+ * any other string value, with the value.get_raw_json_string() method. Again, you can get
+ * a more usable string_view instance by calling get_string().
+ *
+ */
+class raw_json_string {
+public:
+  /**
+   * Create a new invalid raw_json_string.
+   *
+   * Exists so you can declare a variable and later assign to it before use.
+   */
+  simdjson_inline raw_json_string() noexcept = default;
+
+  /**
+   * Create a new invalid raw_json_string pointed at the given location in the JSON.
+   *
+   * The given location must be just *after* the beginning quote (") in the JSON file.
+   *
+   * It *must* be terminated by a ", and be a valid JSON string.
+   */
+  simdjson_inline raw_json_string(const uint8_t * _buf) noexcept;
+  /**
+   * Get the raw pointer to the beginning of the string in the JSON (just after the ").
+   *
+   * It is possible for this function to return a null pointer if the instance
+   * has outlived its existence.
+   */
+  simdjson_inline const char * raw() const noexcept;
+
+  /**
+   * Get the character at index i. This is unchecked.
+   * [0] when the string is of length 0 returns the final quote (").
+   */
+  simdjson_inline char operator[](size_t i) const noexcept;
+
+  /**
+   * This compares the current instance to the std::string_view target: returns true if
+   * they are byte-by-byte equal (no escaping is done) on target.size() characters,
+   * and if the raw_json_string instance has a quote character at byte index target.size().
+   * We never read more than length + 1 bytes in the raw_json_string instance.
+   * If length is smaller than target.size(), this will return false.
+   *
+   * The std::string_view instance may contain any characters. However, the caller
+   * is responsible for setting length so that length bytes may be read in the
+   * raw_json_string.
+   *
+   * Performance: the comparison may be done using memcmp which may be efficient
+   * for long strings.
+   */
+  simdjson_inline bool unsafe_is_equal(size_t length, std::string_view target) const noexcept;
+
+  /**
+   * This compares the current instance to the std::string_view target: returns true if
+   * they are byte-by-byte equal (no escaping is done).
+   * The std::string_view instance should not contain unescaped quote characters:
+   * the caller is responsible for this check. See is_free_from_unescaped_quote.
+   *
+   * Performance: the comparison is done byte-by-byte which might be inefficient for
+   * long strings.
+   *
+   * If target is a compile-time constant, and your compiler likes you,
+   * you should be able to do the following without performance penalty...
+   *
+   *   static_assert(raw_json_string::is_free_from_unescaped_quote(target), "");
+   *   s.unsafe_is_equal(target);
+   */
+  simdjson_inline bool unsafe_is_equal(std::string_view target) const noexcept;
+
+  /**
+   * This compares the current instance to the C string target: returns true if
+   * they are byte-by-byte equal (no escaping is done).
+   * The provided C string should not contain an unescaped quote character:
+   * the caller is responsible for this check. See is_free_from_unescaped_quote.
+   *
+   * If target is a compile-time constant, and your compiler likes you,
+   * you should be able to do the following without performance penalty...
+   *
+   *   static_assert(raw_json_string::is_free_from_unescaped_quote(target), "");
+   *   s.unsafe_is_equal(target);
+   */
+  simdjson_inline bool unsafe_is_equal(const char* target) const noexcept;
+
+  /**
+   * This compares the current instance to the std::string_view target: returns true if
+   * they are byte-by-byte equal (no escaping is done).
+   */
+  simdjson_inline bool is_equal(std::string_view target) const noexcept;
+
+  /**
+   * This compares the current instance to the C string target: returns true if
+   * they are byte-by-byte equal (no escaping is done).
+   */
+  simdjson_inline bool is_equal(const char* target) const noexcept;
+
+  /**
+   * Returns true if target is free from unescaped quote. If target is known at
+   * compile-time, we might expect the computation to happen at compile time with
+   * many compilers (not all!).
+   */
+  static simdjson_inline bool is_free_from_unescaped_quote(std::string_view target) noexcept;
+  static simdjson_inline bool is_free_from_unescaped_quote(const char* target) noexcept;
+
+private:
+
+
+  /**
+   * This will set the inner pointer to zero, effectively making
+   * this instance unusable.
+   */
+  simdjson_inline void consume() noexcept { buf = nullptr; }
+
+  /**
+   * Checks whether the inner pointer is non-null and thus usable.
+   */
+  simdjson_inline simdjson_warn_unused bool alive() const noexcept { return buf != nullptr; }
+
+  /**
+   * Unescape this JSON string, replacing \\ with \, \n with newline, etc.
+   * The result will be a valid UTF-8.
+   *
+   * ## IMPORTANT: string_view lifetime
+   *
+   * The string_view is only valid until the next parse() call on the parser.
+   *
+   * @param iter A json_iterator, which contains a buffer where the string will be written.
+   * @param allow_replacement Whether we allow replacement of invalid surrogate pairs.
+   */
+  simdjson_inline simdjson_warn_unused simdjson_result unescape(json_iterator &iter, bool allow_replacement) const noexcept;
+
+  /**
+   * Unescape this JSON string, replacing \\ with \, \n with newline, etc.
+   * The result may not be a valid UTF-8. https://simonsapin.github.io/wtf-8/
+   *
+   * ## IMPORTANT: string_view lifetime
+   *
+   * The string_view is only valid until the next parse() call on the parser.
+   *
+   * @param iter A json_iterator, which contains a buffer where the string will be written.
+   */
+  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(json_iterator &iter) const noexcept;
+  const uint8_t * buf{};
+  friend class object;
+  friend class field;
+  friend class parser;
+  friend struct simdjson_result;
+};
+
+simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &, const raw_json_string &) noexcept;
+
+/**
+ * Comparisons between raw_json_string and std::string_view instances are potentially unsafe: the user is responsible
+ * for providing a string with no unescaped quote. Note that unescaped quotes cannot be present in valid JSON strings.
+ */
+simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept;
+simdjson_unused simdjson_inline bool operator==(std::string_view c, const raw_json_string &a) noexcept;
+simdjson_unused simdjson_inline bool operator!=(const raw_json_string &a, std::string_view c) noexcept;
+simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_json_string &a) noexcept;
+
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::raw_json_string &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+  simdjson_inline ~simdjson_result() noexcept = default; ///< @private
+
+  simdjson_inline simdjson_result raw() const noexcept;
+  simdjson_inline char operator[](size_t) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape(arm64::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(arm64::ondemand::json_iterator &iter) const noexcept;
+};
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
+/* end file simdjson/generic/ondemand/raw_json_string.h for arm64 */
+/* including simdjson/generic/ondemand/parser.h for arm64: #include "simdjson/generic/ondemand/parser.h" */
+/* begin file simdjson/generic/ondemand/parser.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_PARSER_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+#include 
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+/**
+ * The default batch size for document_stream instances for this On-Demand kernel.
+ * Note that different On-Demand kernel may use a different DEFAULT_BATCH_SIZE value
+ * in the future.
+ */
+static constexpr size_t DEFAULT_BATCH_SIZE = 1000000;
+/**
+ * Some adversary might try to set the batch size to 0 or 1, which might cause problems.
+ * We set a minimum of 32B since anything else is highly likely to be an error. In practice,
+ * most users will want a much larger batch size.
+ *
+ * All non-negative MINIMAL_BATCH_SIZE values should be 'safe' except that, obviously, no JSON
+ * document can ever span 0 or 1 byte and that very large values would create memory allocation issues.
+ */
+static constexpr size_t MINIMAL_BATCH_SIZE = 32;
+
+/**
+ * A JSON fragment iterator.
+ *
+ * This holds the actual iterator as well as the buffer for writing strings.
+ */
+class parser {
+public:
+  /**
+   * Create a JSON parser.
+   *
+   * The new parser will have zero capacity.
+   */
+  inline explicit parser(size_t max_capacity = SIMDJSON_MAXSIZE_BYTES) noexcept;
+
+  inline parser(parser &&other) noexcept = default;
+  simdjson_inline parser(const parser &other) = delete;
+  simdjson_inline parser &operator=(const parser &other) = delete;
+  simdjson_inline parser &operator=(parser &&other) noexcept = default;
+
+  /** Deallocate the JSON parser. */
+  inline ~parser() noexcept = default;
+
+  /**
+   * Start iterating an on-demand JSON document.
+   *
+   *   ondemand::parser parser;
+   *   document doc = parser.iterate(json);
+   *
+   * It is expected that the content is a valid UTF-8 file, containing a valid JSON document.
+   * Otherwise the iterate method may return an error. In particular, the whole input should be
+   * valid: we do not attempt to tolerate incorrect content either before or after a JSON
+   * document. If there is a UTF-8 BOM, the parser skips it.
+   *
+   * ### IMPORTANT: Validate what you use
+   *
+   * Calling iterate on an invalid JSON document may not immediately trigger an error. The call to
+   * iterate does not parse and validate the whole document.
+   *
+   * ### IMPORTANT: Buffer Lifetime
+   *
+   * Because parsing is done while you iterate, you *must* keep the JSON buffer around at least as
+   * long as the document iteration.
+   *
+   * ### IMPORTANT: Document Lifetime
+   *
+   * Only one iteration at a time can happen per parser, and the parser *must* be kept alive during
+   * iteration to ensure intermediate buffers can be accessed. Any document must be destroyed before
+   * you call parse() again or destroy the parser.
+   *
+   * ### REQUIRED: Buffer Padding
+   *
+   * The buffer must have at least SIMDJSON_PADDING extra allocated bytes. It does not matter what
+   * those bytes are initialized to, as long as they are allocated. These bytes will be read: if you
+   * using a sanitizer that verifies that no uninitialized byte is read, then you should initialize the
+   * SIMDJSON_PADDING bytes to avoid runtime warnings.
+   *
+   * ### std::string references
+   *
+   * If you pass a mutable std::string reference (std::string&), the parser will seek to extend
+   * its capacity to SIMDJSON_PADDING bytes beyond the end of the string.
+   *
+   * Whenever you pass an std::string reference, the parser will access the bytes beyond the end of
+   * the string but before the end of the allocated memory (std::string::capacity()).
+   * If you are using a sanitizer that checks for reading uninitialized bytes or std::string's
+   * container-overflow checks, you may encounter sanitizer warnings.
+   * You can safely ignore these warnings. Or you can call simdjson::pad(std::string&) to pad the
+   * string with SIMDJSON_PADDING spaces: this function returns a simdjson::padding_string_view
+   * which can be be passed to the parser's iterate function:
+   *
+   *    std::string json = R"({ "foo": 1 } { "foo": 2 } { "foo": 3 } )";
+   *    document doc = parser.iterate(simdjson::pad(json));
+   *
+   * @param json The JSON to parse.
+   * @param len The length of the JSON.
+   * @param capacity The number of bytes allocated in the JSON (must be at least len+SIMDJSON_PADDING).
+   *
+   * @return The document, or an error:
+   *         - INSUFFICIENT_PADDING if the input has less than SIMDJSON_PADDING extra bytes.
+   *         - MEMALLOC if realloc_if_needed the parser does not have enough capacity, and memory
+   *           allocation fails.
+   *         - EMPTY if the document is all whitespace.
+   *         - UTF8_ERROR if the document is not valid UTF-8.
+   *         - UNESCAPED_CHARS if a string contains control characters that must be escaped
+   *         - UNCLOSED_STRING if there is an unclosed string in the document.
+   */
+  simdjson_warn_unused simdjson_result iterate(padded_string_view json) & noexcept;
+#ifdef SIMDJSON_EXPERIMENTAL_ALLOW_INCOMPLETE_JSON
+  simdjson_warn_unused simdjson_result iterate_allow_incomplete_json(padded_string_view json) & noexcept;
+#endif // SIMDJSON_EXPERIMENTAL_ALLOW_INCOMPLETE_JSON
+  /** @overload simdjson_result iterate(padded_string_view json) & noexcept */
+  simdjson_warn_unused simdjson_result iterate(const char *json, size_t len, size_t capacity) & noexcept;
+  /** @overload simdjson_result iterate(padded_string_view json) & noexcept */
+  simdjson_warn_unused simdjson_result iterate(const uint8_t *json, size_t len, size_t capacity) & noexcept;
+  /** @overload simdjson_result iterate(padded_string_view json) & noexcept */
+  simdjson_warn_unused simdjson_result iterate(std::string_view json, size_t capacity) & noexcept;
+  /** @overload simdjson_result iterate(padded_string_view json) & noexcept */
+  simdjson_warn_unused simdjson_result iterate(const std::string &json) & noexcept;
+  /** @overload simdjson_result iterate(padded_string_view json) & noexcept
+      The string instance might be have its capacity extended. Note that this can still
+      result in AddressSanitizer: container-overflow in some cases. */
+  simdjson_warn_unused simdjson_result iterate(std::string &json) & noexcept;
+  /** @overload simdjson_result iterate(padded_string_view json) & noexcept */
+  simdjson_warn_unused simdjson_result iterate(const simdjson_result &json) & noexcept;
+  /** @overload simdjson_result iterate(padded_string_view json) & noexcept */
+  simdjson_warn_unused simdjson_result iterate(const simdjson_result &json) & noexcept;
+  /** @overload simdjson_result iterate(padded_string_view json) & noexcept */
+  simdjson_warn_unused simdjson_result iterate(padded_string &&json) & noexcept = delete;
+
+  /**
+   * @private
+   *
+   * Start iterating an on-demand JSON document.
+   *
+   *   ondemand::parser parser;
+   *   json_iterator doc = parser.iterate(json);
+   *
+   * ### IMPORTANT: Buffer Lifetime
+   *
+   * Because parsing is done while you iterate, you *must* keep the JSON buffer around at least as
+   * long as the document iteration.
+   *
+   * ### IMPORTANT: Document Lifetime
+   *
+   * Only one iteration at a time can happen per parser, and the parser *must* be kept alive during
+   * iteration to ensure intermediate buffers can be accessed. Any document must be destroyed before
+   * you call parse() again or destroy the parser.
+   *
+   * The ondemand::document instance holds the iterator. The document must remain in scope
+   * while you are accessing instances of ondemand::value, ondemand::object, ondemand::array.
+   *
+   * ### REQUIRED: Buffer Padding
+   *
+   * The buffer must have at least SIMDJSON_PADDING extra allocated bytes. It does not matter what
+   * those bytes are initialized to, as long as they are allocated. These bytes will be read: if you
+   * using a sanitizer that verifies that no uninitialized byte is read, then you should initialize the
+   * SIMDJSON_PADDING bytes to avoid runtime warnings.
+   *
+   * @param json The JSON to parse.
+   *
+   * @return The iterator, or an error:
+   *         - INSUFFICIENT_PADDING if the input has less than SIMDJSON_PADDING extra bytes.
+   *         - MEMALLOC if realloc_if_needed the parser does not have enough capacity, and memory
+   *           allocation fails.
+   *         - EMPTY if the document is all whitespace.
+   *         - UTF8_ERROR if the document is not valid UTF-8.
+   *         - UNESCAPED_CHARS if a string contains control characters that must be escaped
+   *         - UNCLOSED_STRING if there is an unclosed string in the document.
+   */
+  simdjson_warn_unused simdjson_result iterate_raw(padded_string_view json) & noexcept;
+
+
+  /**
+   * Parse a buffer containing many JSON documents.
+   *
+   *   auto json = R"({ "foo": 1 } { "foo": 2 } { "foo": 3 } )"_padded;
+   *   ondemand::parser parser;
+   *   ondemand::document_stream docs = parser.iterate_many(json);
+   *   for (auto & doc : docs) {
+   *     std::cout << doc["foo"] << std::endl;
+   *   }
+   *   // Prints 1 2 3
+   *
+   * No copy of the input buffer is made.
+   *
+   * The function is lazy: it may be that no more than one JSON document at a time is parsed.
+   *
+   * The caller is responsabile to ensure that the input string data remains unchanged and is
+   * not deleted during the loop.
+   *
+   * ### Format
+   *
+   * The buffer must contain a series of one or more JSON documents, concatenated into a single
+   * buffer, separated by ASCII whitespace. It effectively parses until it has a fully valid document,
+   * then starts parsing the next document at that point. (It does this with more parallelism and
+   * lookahead than you might think, though.)
+   *
+   * documents that consist of an object or array may omit the whitespace between them, concatenating
+   * with no separator. Documents that consist of a single primitive (i.e. documents that are not
+   * arrays or objects) MUST be separated with ASCII whitespace.
+   *
+   * The characters inside a JSON document, and between JSON documents, must be valid Unicode (UTF-8).
+   * If there is a UTF-8 BOM, the parser skips it.
+   *
+   * The documents must not exceed batch_size bytes (by default 1MB) or they will fail to parse.
+   * Setting batch_size to excessively large or excessively small values may impact negatively the
+   * performance.
+   *
+   * ### Threads
+   *
+   * When compiled with SIMDJSON_THREADS_ENABLED, this method will use a single thread under the
+   * hood to do some lookahead.
+   *
+   * ### REQUIRED: Buffer Padding
+   *
+   * The buffer must have at least SIMDJSON_PADDING extra allocated bytes. It does not matter what
+   * those bytes are initialized to, as long as they are allocated. These bytes will be read: if you
+   * using a sanitizer that verifies that no uninitialized byte is read, then you should initialize the
+   * SIMDJSON_PADDING bytes to avoid runtime warnings.
+   *
+   * This is checked automatically with all iterate_many function calls, except for the two
+   * that take pointers (const char* or const uint8_t*).
+   *
+   * ### Threads
+   *
+   * ### Parser Capacity
+   *
+   * If the parser's current capacity is less than batch_size, it will allocate enough capacity
+   * to handle it (up to max_capacity).
+   *
+   * @param buf The concatenated JSON to parse.
+   * @param len The length of the concatenated JSON.
+   * @param batch_size The batch size to use. MUST be larger than the largest document. The sweet
+   *                   spot is cache-related: small enough to fit in cache, yet big enough to
+   *                   parse as many documents as possible in one tight loop.
+   *                   Defaults to 10MB, which has been a reasonable sweet spot in our tests.
+   * @param allow_comma_separated (defaults on false) This allows a mode where the documents are
+   *                   separated by commas instead of whitespace. It comes with a performance
+   *                   penalty because the entire document is indexed at once (and the document must be
+   *                   less than 4 GB), and there is no multithreading. In this mode, the batch_size parameter
+   *                   is effectively ignored, as it is set to at least the document size.
+   * @return The stream, or an error. An empty input will yield 0 documents rather than an EMPTY error. Errors:
+   *         - MEMALLOC if the parser does not have enough capacity and memory allocation fails
+   *         - CAPACITY if the parser does not have enough capacity and batch_size > max_capacity.
+   *         - other json errors if parsing fails. You should not rely on these errors to always the same for the
+   *           same document: they may vary under runtime dispatch (so they may vary depending on your system and hardware).
+   */
+  inline simdjson_result iterate_many(const uint8_t *buf, size_t len, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+  /** @overload parse_many(const uint8_t *buf, size_t len, size_t batch_size) */
+  inline simdjson_result iterate_many(padded_string_view json, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+  /** @overload parse_many(const uint8_t *buf, size_t len, size_t batch_size) */
+  inline simdjson_result iterate_many(const char *buf, size_t len, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+  /** @overload parse_many(const uint8_t *buf, size_t len, size_t batch_size) */
+  inline simdjson_result iterate_many(const std::string &s, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+  /** @overload parse_many(const uint8_t *buf, size_t len, size_t batch_size)
+    the string might be automatically padded with up to SIMDJSON_PADDING whitespace characters */
+  inline simdjson_result iterate_many(std::string &s, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+  /** @overload parse_many(const uint8_t *buf, size_t len, size_t batch_size) */
+  inline simdjson_result iterate_many(const padded_string &s, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+  /** @private We do not want to allow implicit conversion from C string to std::string. */
+  simdjson_result iterate_many(const char *buf, size_t batch_size = DEFAULT_BATCH_SIZE) noexcept = delete;
+
+  /** The capacity of this parser (the largest document it can process). */
+  simdjson_pure simdjson_inline size_t capacity() const noexcept;
+  /** The maximum capacity of this parser (the largest document it is allowed to process). */
+  simdjson_pure simdjson_inline size_t max_capacity() const noexcept;
+  simdjson_inline void set_max_capacity(size_t max_capacity) noexcept;
+  /**
+   * The maximum depth of this parser (the most deeply nested objects and arrays it can process).
+   * This parameter is only relevant when the macro SIMDJSON_DEVELOPMENT_CHECKS is set to true.
+   * The document's instance current_depth() method should be used to monitor the parsing
+   * depth and limit it if desired.
+   */
+  simdjson_pure simdjson_inline size_t max_depth() const noexcept;
+
+  /**
+   * Ensure this parser has enough memory to process JSON documents up to `capacity` bytes in length
+   * and `max_depth` depth.
+   *
+   * The max_depth parameter is only relevant when the macro SIMDJSON_DEVELOPMENT_CHECKS is set to true.
+   * The document's instance current_depth() method should be used to monitor the parsing
+   * depth and limit it if desired.
+   *
+   * @param capacity The new capacity.
+   * @param max_depth The new max_depth. Defaults to DEFAULT_MAX_DEPTH.
+   * @return The error, if there is one.
+   */
+  simdjson_warn_unused error_code allocate(size_t capacity, size_t max_depth=DEFAULT_MAX_DEPTH) noexcept;
+
+  #ifdef SIMDJSON_THREADS_ENABLED
+  /**
+   * The parser instance can use threads when they are available to speed up some
+   * operations. It is enabled by default. Changing this attribute will change the
+   * behavior of the parser for future operations.
+   */
+  bool threaded{true};
+  #else
+  /**
+   * When SIMDJSON_THREADS_ENABLED is not defined, the parser instance cannot use threads.
+   */
+  bool threaded{false};
+  #endif
+  /**
+   * Unescape this JSON string, replacing \\ with \, \n with newline, etc. to a user-provided buffer.
+   * The result must be valid UTF-8.
+   * The provided pointer is advanced to the end of the string by reference, and a string_view instance
+   * is returned. You can ensure that your buffer is large enough by allocating a block of memory at least
+   * as large as the input JSON plus SIMDJSON_PADDING and then unescape all strings to this one buffer.
+   *
+   * This unescape function is a low-level function. If you want a more user-friendly approach, you should
+   * avoid raw_json_string instances (e.g., by calling unescaped_key() instead of key() or get_string()
+   * instead of get_raw_json_string()).
+   *
+   * ## IMPORTANT: string_view lifetime
+   *
+   * The string_view is only valid as long as the bytes in dst.
+   *
+   * @param raw_json_string input
+   * @param dst A pointer to a buffer at least large enough to write this string as well as
+   *            an additional SIMDJSON_PADDING bytes.
+   * @param allow_replacement Whether we allow a replacement if the input string contains unmatched surrogate pairs.
+   * @return A string_view pointing at the unescaped string in dst
+   * @error STRING_ERROR if escapes are incorrect.
+   */
+  simdjson_inline simdjson_result unescape(raw_json_string in, uint8_t *&dst, bool allow_replacement = false) const noexcept;
+
+  /**
+   * Unescape this JSON string, replacing \\ with \, \n with newline, etc. to a user-provided buffer.
+   * The result may not be valid UTF-8. See https://simonsapin.github.io/wtf-8/
+   * The provided pointer is advanced to the end of the string by reference, and a string_view instance
+   * is returned. You can ensure that your buffer is large enough by allocating a block of memory at least
+   * as large as the input JSON plus SIMDJSON_PADDING and then unescape all strings to this one buffer.
+   *
+   * This unescape function is a low-level function. If you want a more user-friendly approach, you should
+   * avoid raw_json_string instances (e.g., by calling unescaped_key() instead of key() or get_string()
+   * instead of get_raw_json_string()).
+   *
+   * ## IMPORTANT: string_view lifetime
+   *
+   * The string_view is only valid as long as the bytes in dst.
+   *
+   * @param raw_json_string input
+   * @param dst A pointer to a buffer at least large enough to write this string as well as
+   *            an additional SIMDJSON_PADDING bytes.
+   * @return A string_view pointing at the unescaped string in dst
+   * @error STRING_ERROR if escapes are incorrect.
+   */
+  simdjson_inline simdjson_result unescape_wobbly(raw_json_string in, uint8_t *&dst) const noexcept;
+
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  /**
+   * Returns true if string_buf_loc is outside of the allocated range for the
+   * the string buffer. When true, it indicates that the string buffer has overflowed.
+   * This is a development-time check that is not needed in production. It can be
+   * used to detect buffer overflows in the string buffer and usafe usage of the
+   * string buffer.
+   */
+  bool string_buffer_overflow(const uint8_t *string_buf_loc) const noexcept;
+#endif
+
+  /**
+   * Get a unique parser instance corresponding to the current thread.
+   * This instance can be safely used within the current thread, but it should
+   * not be passed to other threads.
+   *
+   * A parser should only be used for one document at a time.
+   *
+   * Our simdjson::from functions use this parser instance.
+   *
+   * You can free the related parser by calling release_parser().
+   */
+  static simdjson_inline simdjson_warn_unused ondemand::parser& get_parser();
+  /**
+   * Release the parser instance initialized by get_parser() and all the
+   * associated resources (memory). Returns true if a parser instance
+   * was released.
+   */
+  static simdjson_inline bool release_parser();
+
+private:
+  friend bool release_parser();
+  friend ondemand::parser& get_parser();
+  /** Get the thread-local parser instance, allocates it if needed */
+  static simdjson_inline simdjson_warn_unused std::unique_ptr& get_parser_instance();
+  /** Get the thread-local parser instance, it might be null */
+  static simdjson_inline simdjson_warn_unused std::unique_ptr& get_threadlocal_parser_if_exists();
+  /** @private [for benchmarking access] The implementation to use */
+  std::unique_ptr implementation{};
+  size_t _capacity{0};
+  size_t _max_capacity;
+  size_t _max_depth{DEFAULT_MAX_DEPTH};
+  std::unique_ptr string_buf{};
+
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  std::unique_ptr start_positions{};
+#endif
+
+  friend class json_iterator;
+  friend class document_stream;
+};
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::parser &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_H
+/* end file simdjson/generic/ondemand/parser.h for arm64 */
+
+// All other declarations
+/* including simdjson/generic/ondemand/array.h for arm64: #include "simdjson/generic/ondemand/array.h" */
+/* begin file simdjson/generic/ondemand/array.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+/**
+ * A forward-only JSON array.
+ */
+class array {
+public:
+  /**
+   * Create a new invalid array.
+   *
+   * Exists so you can declare a variable and later assign to it before use.
+   */
+  simdjson_inline array() noexcept = default;
+
+  /**
+   * Begin array iteration.
+   *
+   * Part of the std::iterable interface.
+   */
+  simdjson_inline simdjson_result begin() noexcept;
+  /**
+   * Sentinel representing the end of the array.
+   *
+   * Part of the std::iterable interface.
+   */
+  simdjson_inline simdjson_result end() noexcept;
+  /**
+   * This method scans the array and counts the number of elements.
+   * The count_elements method should always be called before you have begun
+   * iterating through the array: it is expected that you are pointing at
+   * the beginning of the array.
+   * The runtime complexity is linear in the size of the array. After
+   * calling this function, if successful, the array is 'rewinded' at its
+   * beginning as if it had never been accessed. If the JSON is malformed (e.g.,
+   * there is a missing comma), then an error is returned and it is no longer
+   * safe to continue. Note that count_elements() does not validate the JSON values,
+   * only the structure of the array.
+   *
+   * To check that an array is empty, it is more performant to use
+   * the is_empty() method.
+   */
+  simdjson_inline simdjson_result count_elements() & noexcept;
+  /**
+   * This method scans the beginning of the array and checks whether the
+   * array is empty.
+   * The runtime complexity is constant time. After
+   * calling this function, if successful, the array is 'rewinded' at its
+   * beginning as if it had never been accessed. If the JSON is malformed (e.g.,
+   * there is a missing comma), then an error is returned and it is no longer
+   * safe to continue.
+   */
+  simdjson_inline simdjson_result is_empty() & noexcept;
+  /**
+   * Reset the iterator so that we are pointing back at the
+   * beginning of the array. You should still consume values only once even if you
+   * can iterate through the array more than once. If you unescape a string
+   * within the array more than once, you have unsafe code. Note that rewinding
+   * an array means that you may need to reparse it anew: it is not a free
+   * operation.
+   *
+   * @returns true if the array contains some elements (not empty)
+   */
+  inline simdjson_result reset() & noexcept;
+  /**
+   * Get the value associated with the given JSON pointer.  We use the RFC 6901
+   * https://tools.ietf.org/html/rfc6901 standard, interpreting the current node
+   * as the root of its own JSON document.
+   *
+   *   ondemand::parser parser;
+   *   auto json = R"([ { "foo": { "a": [ 10, 20, 30 ] }} ])"_padded;
+   *   auto doc = parser.iterate(json);
+   *   doc.at_pointer("/0/foo/a/1") == 20
+   *
+   * Note that at_pointer() called on the document automatically calls the document's rewind
+   * method between each call. It invalidates all previously accessed arrays, objects and values
+   * that have not been consumed. Yet it is not the case when calling at_pointer on an array
+   * instance: there is no rewind and no invalidation.
+   *
+   * You may only call at_pointer on an array after it has been created, but before it has
+   * been first accessed. When calling at_pointer on an array, the pointer is advanced to
+   * the location indicated by the JSON pointer (in case of success). It is no longer possible
+   * to call at_pointer on the same array.
+   *
+   * Also note that at_pointer() relies on find_field() which implies that we do not unescape keys when matching.
+   *
+   * @return The value associated with the given JSON pointer, or:
+   *         - NO_SUCH_FIELD if a field does not exist in an object
+   *         - INDEX_OUT_OF_BOUNDS if an array index is larger than an array length
+   *         - INCORRECT_TYPE if a non-integer is used to access an array
+   *         - INVALID_JSON_POINTER if the JSON pointer is invalid and cannot be parsed
+   */
+  inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+
+  /**
+   * Get the value associated with the given JSONPath expression. We only support
+   * JSONPath queries that trivially convertible to JSON Pointer queries: key
+   * names and array indices.
+   *
+   * https://www.rfc-editor.org/rfc/rfc9535 (RFC 9535)
+   *
+   * @return The value associated with the given JSONPath expression, or:
+   *         - INVALID_JSON_POINTER if the JSONPath to JSON Pointer conversion fails
+   *         - NO_SUCH_FIELD if a field does not exist in an object
+   *         - INDEX_OUT_OF_BOUNDS if an array index is larger than an array length
+   *         - INCORRECT_TYPE if a non-integer is used to access an array
+  */
+  inline simdjson_result at_path(std::string_view json_path) noexcept;
+
+  /**
+   * Get all values matching the given JSONPath expression with wildcard support.
+   * Supports wildcard patterns like "[*]" to match all array elements.
+   *
+   * @param json_path JSONPath expression with wildcards
+   * @return Vector of values matching the wildcard pattern
+  */
+  inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+
+  /**
+   * Consumes the array and returns a string_view instance corresponding to the
+   * array as represented in JSON. It points inside the original document.
+   */
+  simdjson_inline simdjson_result raw_json() noexcept;
+
+  /**
+   * Get the value at the given index. This function has linear-time complexity.
+   * This function should only be called once on an array instance since the array iterator is not reset between each call.
+   *
+   * @return The value at the given index, or:
+   *         - INDEX_OUT_OF_BOUNDS if the array index is larger than an array length
+   */
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  /**
+   * Get this array as the given type.
+   *
+   * @param out This is set to a value of the given type, parsed from the JSON. If there is an error, this may not be initialized.
+   * @returns INCORRECT_TYPE If the JSON array is not of the given type.
+   * @returns SUCCESS If the parse succeeded and the out parameter was set to the value.
+   */
+  template 
+  simdjson_warn_unused simdjson_inline error_code get(T &out)
+     noexcept(custom_deserializable ? nothrow_custom_deserializable : true) {
+    static_assert(custom_deserializable);
+    return deserialize(*this, out);
+  }
+  /**
+   * Get this array as the given type.
+   *
+   * @returns A value of the given type, parsed from the JSON.
+   * @returns INCORRECT_TYPE If the JSON value is not the given type.
+   */
+  template 
+  simdjson_inline simdjson_result get()
+    noexcept(custom_deserializable ? nothrow_custom_deserializable : true)
+  {
+    static_assert(std::is_default_constructible::value, "The specified type is not default constructible.");
+    T out{};
+    SIMDJSON_TRY(get(out));
+    return out;
+  }
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+protected:
+  /**
+   * Go to the end of the array, no matter where you are right now.
+   */
+  simdjson_warn_unused simdjson_inline error_code consume() noexcept;
+
+  /**
+   * Begin array iteration.
+   *
+   * @param iter The iterator. Must be where the initial [ is expected. Will be *moved* into the
+   *        resulting array.
+   * @error INCORRECT_TYPE if the iterator is not at [.
+   */
+  static simdjson_inline simdjson_result start(value_iterator &iter) noexcept;
+  /**
+   * Begin array iteration from the root.
+   *
+   * @param iter The iterator. Must be where the initial [ is expected. Will be *moved* into the
+   *        resulting array.
+   * @error INCORRECT_TYPE if the iterator is not at [.
+   * @error TAPE_ERROR if there is no closing ] at the end of the document.
+   */
+  static simdjson_inline simdjson_result start_root(value_iterator &iter) noexcept;
+  /**
+   * Begin array iteration.
+   *
+   * This version of the method should be called after the initial [ has been verified, and is
+   * intended for use by switch statements that check the type of a value.
+   *
+   * @param iter The iterator. Must be after the initial [. Will be *moved* into the resulting array.
+   */
+  static simdjson_inline simdjson_result started(value_iterator &iter) noexcept;
+
+  /**
+   * Create an array at the given Internal array creation. Call array::start() or array::started() instead of this.
+   *
+   * @param iter The iterator. Must either be at the start of the first element with iter.is_alive()
+   *        == true, or past the [] with is_alive() == false if the array is empty. Will be *moved*
+   *        into the resulting array.
+   */
+  simdjson_inline array(const value_iterator &iter) noexcept;
+
+  /**
+   * Iterator marking current position.
+   *
+   * iter.is_alive() == false indicates iteration is complete.
+   */
+  value_iterator iter{};
+
+  friend class value;
+  friend class document;
+  friend struct simdjson_result;
+  friend struct simdjson_result;
+  friend class array_iterator;
+};
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::array &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
+  inline simdjson_result count_elements() & noexcept;
+  inline simdjson_result is_empty() & noexcept;
+  inline simdjson_result reset() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result raw_json() noexcept;
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  // TODO: move this code into object-inl.h
+
+  template
+  simdjson_inline simdjson_result get() noexcept {
+    if (error()) { return error(); }
+    if constexpr (std::is_same_v) {
+      return first;
+    }
+    return first.get();
+  }
+  template
+  simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
+    if (error()) { return error(); }
+    if constexpr (std::is_same_v) {
+      out = first;
+    } else {
+      SIMDJSON_TRY( first.get(out) );
+    }
+    return SUCCESS;
+  }
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
+/* end file simdjson/generic/ondemand/array.h for arm64 */
+/* including simdjson/generic/ondemand/array_iterator.h for arm64: #include "simdjson/generic/ondemand/array_iterator.h" */
+/* begin file simdjson/generic/ondemand/array_iterator.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+/**
+ * A forward-only JSON array.
+ *
+ * This is an input_iterator, meaning:
+ * - It is forward-only
+ * - * must be called at most once per element.
+ * - ++ must be called exactly once in between each * (*, ++, *, ++, * ...)
+ */
+class array_iterator {
+public:
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
+  /** Create a new, invalid array iterator. */
+  simdjson_inline array_iterator() noexcept = default;
+
+  //
+  // Iterator interface
+  //
+
+  /**
+   * Get the current element.
+   *
+   * Part of the std::iterator interface.
+   */
+  simdjson_inline simdjson_result
+  operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  /**
+   * Check if we are at the end of the JSON.
+   *
+   * Part of the std::iterator interface.
+   *
+   * @return true if there are no more elements in the JSON array.
+   */
+  simdjson_inline bool operator==(const array_iterator &) const noexcept;
+  /**
+   * Check if there are more elements in the JSON array.
+   *
+   * Part of the std::iterator interface.
+   *
+   * @return true if there are more elements in the JSON array.
+   */
+  simdjson_inline bool operator!=(const array_iterator &) const noexcept;
+  /**
+   * Move to the next element.
+   *
+   * Part of the std::iterator interface.
+   */
+  simdjson_inline array_iterator &operator++() noexcept;
+
+  /**
+   * Check if the array is at the end.
+   */
+  simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
+
+private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
+  value_iterator iter{};
+
+  simdjson_inline array_iterator(const value_iterator &iter) noexcept;
+
+  friend class array;
+  friend class value;
+  friend struct simdjson_result;
+};
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
+  simdjson_inline simdjson_result(arm64::ondemand::array_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+
+  //
+  // Iterator interface
+  //
+
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
+
+  simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
+/* end file simdjson/generic/ondemand/array_iterator.h for arm64 */
+/* including simdjson/generic/ondemand/document.h for arm64: #include "simdjson/generic/ondemand/document.h" */
+/* begin file simdjson/generic/ondemand/document.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/deserialize.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+/**
+ * A JSON document. It holds a json_iterator instance.
+ *
+ * Used by tokens to get text, and string buffer location.
+ *
+ * You must keep the document around during iteration.
+ */
+class document {
+public:
+  /**
+   * Create a new invalid document.
+   *
+   * Exists so you can declare a variable and later assign to it before use.
+   */
+  simdjson_inline document() noexcept = default;
+  simdjson_inline document(const document &other) noexcept = delete; // pass your documents by reference, not by copy
+  simdjson_inline document(document &&other) noexcept = default;
+  simdjson_inline document &operator=(const document &other) noexcept = delete;
+  simdjson_inline document &operator=(document &&other) noexcept = default;
+
+  /**
+   * Cast this JSON value to an array.
+   *
+   * @returns An object that can be used to iterate the array.
+   * @returns INCORRECT_TYPE If the JSON value is not an array.
+   */
+  simdjson_inline simdjson_result get_array() & noexcept;
+  /**
+   * Cast this JSON value to an object.
+   *
+   * @returns An object that can be used to look up or iterate fields.
+   * @returns INCORRECT_TYPE If the JSON value is not an object.
+   */
+  simdjson_inline simdjson_result get_object() & noexcept;
+  /**
+   * Cast this JSON value to an unsigned integer.
+   *
+   * @returns A signed 64-bit integer.
+   * @returns INCORRECT_TYPE If the JSON value is not a 64-bit unsigned integer.
+   */
+  simdjson_inline simdjson_result get_uint64() noexcept;
+  /**
+   * Cast this JSON value (inside string) to an unsigned integer.
+   *
+   * @returns A signed 64-bit integer.
+   * @returns INCORRECT_TYPE If the JSON value is not a 64-bit unsigned integer.
+   */
+  simdjson_inline simdjson_result get_uint64_in_string() noexcept;
+  /**
+   * Cast this JSON value to a signed integer.
+   *
+   * @returns A signed 64-bit integer.
+   * @returns INCORRECT_TYPE If the JSON value is not a 64-bit integer.
+   */
+  simdjson_inline simdjson_result get_int64() noexcept;
+  /**
+   * Cast this JSON value (inside string) to a signed integer.
+   *
+   * @returns A signed 64-bit integer.
+   * @returns INCORRECT_TYPE If the JSON value is not a 64-bit integer.
+   */
+  simdjson_inline simdjson_result get_int64_in_string() noexcept;
+  /**
+   * Cast this JSON value to a double.
+   *
+   * @returns A double.
+   * @returns INCORRECT_TYPE If the JSON value is not a valid floating-point number.
+   */
+  simdjson_inline simdjson_result get_double() noexcept;
+
+  /**
+   * Cast this JSON value (inside string) to a double.
+   *
+   * @returns A double.
+   * @returns INCORRECT_TYPE If the JSON value is not a valid floating-point number.
+   */
+  simdjson_inline simdjson_result get_double_in_string() noexcept;
+  /**
+   * Cast this JSON value to a string.
+   *
+   * The string is guaranteed to be valid UTF-8.
+   *
+   * Important: Calling get_string() twice on the same document is an error.
+   *
+   * @param Whether to allow a replacement character for unmatched surrogate pairs.
+   * @returns An UTF-8 string. The string is stored in the parser and will be invalidated the next
+   *          time it parses a document or when it is destroyed.
+   * @returns INCORRECT_TYPE if the JSON value is not a string.
+   */
+  simdjson_inline simdjson_result get_string(bool allow_replacement = false) noexcept;
+  /**
+   * Attempts to fill the provided std::string reference with the parsed value of the current string.
+   *
+   * The string is guaranteed to be valid UTF-8.
+   *
+   * Important: a value should be consumed once. Calling get_string() twice on the same value
+   * is an error.
+   *
+   * Performance: This method may be slower than get_string() or get_string(bool) because it may need to allocate memory.
+   * We recommend you avoid allocating an std::string unless you need to.
+   *
+   * @returns INCORRECT_TYPE if the JSON value is not a string. Otherwise, we return SUCCESS.
+   */
+  template 
+  simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
+  /**
+   * Cast this JSON value to a string.
+   *
+   * The string is not guaranteed to be valid UTF-8. See https://simonsapin.github.io/wtf-8/
+   *
+   * Important: Calling get_wobbly_string() twice on the same document is an error.
+   *
+   * @returns An UTF-8 string. The string is stored in the parser and will be invalidated the next
+   *          time it parses a document or when it is destroyed.
+   * @returns INCORRECT_TYPE if the JSON value is not a string.
+   */
+  simdjson_inline simdjson_result get_wobbly_string() noexcept;
+  /**
+   * Cast this JSON value to a raw_json_string.
+   *
+   * The string is guaranteed to be valid UTF-8, and may have escapes in it (e.g. \\ or \n).
+   *
+   * @returns A pointer to the raw JSON for the given string.
+   * @returns INCORRECT_TYPE if the JSON value is not a string.
+   */
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  /**
+   * Cast this JSON value to a bool.
+   *
+   * @returns A bool value.
+   * @returns INCORRECT_TYPE if the JSON value is not true or false.
+   */
+  simdjson_inline simdjson_result get_bool() noexcept;
+  /**
+   * Cast this JSON value to a value when the document is an object or an array.
+   *
+   * You must not have begun iterating through the object or array. When
+   * SIMDJSON_DEVELOPMENT_CHECKS is set to 1 (which is the case when building in Debug mode
+   * by default), and you have already begun iterating,
+   * you will get an OUT_OF_ORDER_ITERATION error. If you have begun iterating, you can use
+   * rewind() to reset the document to its initial state before calling this method.
+   *
+   * @returns A value if a JSON array or object cannot be found.
+   * @returns SCALAR_DOCUMENT_AS_VALUE error is the document is a scalar (see is_scalar() function).
+   */
+  simdjson_inline simdjson_result get_value() noexcept;
+
+  /**
+   * Checks if this JSON value is null.  If and only if the value is
+   * null, then it is consumed (we advance). If we find a token that
+   * begins with 'n' but is not 'null', then an error is returned.
+   *
+   * @returns Whether the value is null.
+   * @returns INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
+   */
+  simdjson_inline simdjson_result is_null() noexcept;
+
+  /**
+   * Get this value as the given type.
+   *
+   * Supported types: object, array, raw_json_string, string_view, uint64_t, int64_t, double, bool
+   *
+   * You may use get_double(), get_bool(), get_uint64(), get_int64(),
+   * get_object(), get_array(), get_raw_json_string(), or get_string() instead.
+   *
+   * @returns A value of the given type, parsed from the JSON.
+   * @returns INCORRECT_TYPE If the JSON value is not the given type.
+   */
+  template 
+  simdjson_inline simdjson_result get() &
+#if SIMDJSON_SUPPORTS_CONCEPTS
+    noexcept(custom_deserializable ? nothrow_custom_deserializable : true)
+#else
+    noexcept
+#endif
+  {
+    static_assert(std::is_default_constructible::value, "Cannot initialize the specified type.");
+    T out{};
+    SIMDJSON_TRY(get(out));
+    return out;
+  }
+  /**
+   * @overload template simdjson_result get() & noexcept
+   *
+   * We disallow the use tag_invoke CPO on a moved document; it may create UB
+   * if user uses `ondemand::array` or `ondemand::object` in their custom type.
+   *
+   * The member function is still remains specialize-able for compatibility
+   * reasons, but we completely disallow its use when a tag_invoke customization
+   * is provided.
+   */
+  template
+  simdjson_inline simdjson_result get() &&
+#if SIMDJSON_SUPPORTS_CONCEPTS
+    noexcept(custom_deserializable ? nothrow_custom_deserializable : true)
+#else
+    noexcept
+#endif
+  {
+      static_assert(!std::is_same::value && !std::is_same::value, "You should never hold either an ondemand::array or ondemand::object without a corresponding ondemand::document being alive; that would be Undefined Behaviour.");
+      return static_cast(*this).get();
+  }
+
+  /**
+   * Get this value as the given type.
+   *
+   * Supported types: object, array, raw_json_string, string_view, uint64_t, int64_t, double, bool, value
+   *
+   * Be mindful that the document instance must remain in scope while you are accessing object, array and value instances.
+   *
+   * @param out This is set to a value of the given type, parsed from the JSON. If there is an error, this may not be initialized.
+   * @returns INCORRECT_TYPE If the JSON value is of the given type.
+   * @returns SUCCESS If the parse succeeded and the out parameter was set to the value.
+   */
+  template
+  simdjson_warn_unused simdjson_inline error_code get(T &out) &
+#if SIMDJSON_SUPPORTS_CONCEPTS
+    noexcept(custom_deserializable ? nothrow_custom_deserializable : true)
+#else
+    noexcept
+#endif
+  {
+#if SIMDJSON_SUPPORTS_CONCEPTS
+    if constexpr (custom_deserializable) {
+        return deserialize(*this, out);
+    } else {
+      static_assert(!sizeof(T), "The get method with type T is not implemented by the simdjson library. "
+        "And you do not seem to have added support for it. Indeed, we have that "
+        "simdjson::custom_deserializable is false and the type T is not a default type "
+        "such as ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
+        "int64_t, double, or bool.");
+      static_cast(out); // to get rid of unused errors
+      return UNINITIALIZED;
+    }
+#else // SIMDJSON_SUPPORTS_CONCEPTS
+    // Unless the simdjson library or the user provides an inline implementation, calling this method should
+    // immediately fail.
+    static_assert(!sizeof(T), "The get method with given type is not implemented by the simdjson library. "
+      "The supported types are ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
+      "int64_t, double, and bool. We recommend you use get_double(), get_bool(), get_uint64(), get_int64(), "
+      " get_object(), get_array(), get_raw_json_string(), or get_string() instead of the get template."
+      " You may also add support for custom types, see our documentation.");
+    static_cast(out); // to get rid of unused errors
+    return UNINITIALIZED;
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+  }
+
+  /** @overload template error_code get(T &out) & noexcept */
+  template simdjson_deprecated simdjson_inline error_code get(T &out) && noexcept;
+
+#if SIMDJSON_EXCEPTIONS
+  /**
+   * Cast this JSON value to an instance of type T. The programmer is responsible for
+   * providing an implementation of get for the type T, if T is not one of the types
+   * supported by the library (object, array, raw_json_string, string_view, uint64_t, etc.)
+   *
+   * See https://github.com/simdjson/simdjson/blob/master/doc/basics.md#adding-support-for-custom-types
+   *
+   * @returns An instance of type T
+   */
+  template 
+  explicit simdjson_inline operator T() & noexcept(false);
+  template 
+  explicit simdjson_deprecated simdjson_inline operator T() && noexcept(false);
+
+  /**
+   * Cast this JSON value to an array.
+   *
+   * @returns An object that can be used to iterate the array.
+   * @exception simdjson_error(INCORRECT_TYPE) If the JSON value is not an array.
+   */
+  simdjson_inline operator array() & noexcept(false);
+  /**
+   * Cast this JSON value to an object.
+   *
+   * @returns An object that can be used to look up or iterate fields.
+   * @exception simdjson_error(INCORRECT_TYPE) If the JSON value is not an object.
+   */
+  simdjson_inline operator object() & noexcept(false);
+  /**
+   * Cast this JSON value to an unsigned integer.
+   *
+   * @returns A signed 64-bit integer.
+   * @exception simdjson_error(INCORRECT_TYPE) If the JSON value is not a 64-bit unsigned integer.
+   */
+  simdjson_inline operator uint64_t() noexcept(false);
+  /**
+   * Cast this JSON value to a signed integer.
+   *
+   * @returns A signed 64-bit integer.
+   * @exception simdjson_error(INCORRECT_TYPE) If the JSON value is not a 64-bit integer.
+   */
+  simdjson_inline operator int64_t() noexcept(false);
+  /**
+   * Cast this JSON value to a double.
+   *
+   * @returns A double.
+   * @exception simdjson_error(INCORRECT_TYPE) If the JSON value is not a valid floating-point number.
+   */
+  simdjson_inline operator double() noexcept(false);
+  /**
+   * Cast this JSON value to a string.
+   *
+   * The string is guaranteed to be valid UTF-8.
+   *
+   * @returns An UTF-8 string. The string is stored in the parser and will be invalidated the next
+   *          time it parses a document or when it is destroyed.
+   * @exception simdjson_error(INCORRECT_TYPE) if the JSON value is not a string.
+   */
+  simdjson_inline operator std::string_view() noexcept(false) simdjson_lifetime_bound;
+  /**
+   * Cast this JSON value to a raw_json_string.
+   *
+   * The string is guaranteed to be valid UTF-8, and may have escapes in it (e.g. \\ or \n).
+   *
+   * @returns A pointer to the raw JSON for the given string.
+   * @exception simdjson_error(INCORRECT_TYPE) if the JSON value is not a string.
+   */
+  simdjson_inline operator raw_json_string() noexcept(false) simdjson_lifetime_bound;
+  /**
+   * Cast this JSON value to a bool.
+   *
+   * @returns A bool value.
+   * @exception simdjson_error(INCORRECT_TYPE) if the JSON value is not true or false.
+   */
+  simdjson_inline operator bool() noexcept(false);
+  /**
+   * Cast this JSON value to a value when the document is an object or an array.
+   *
+   * You must not have begun iterating through the object or array. When
+   * SIMDJSON_DEVELOPMENT_CHECKS is defined, and you have already begun iterating,
+   * you will get an OUT_OF_ORDER_ITERATION error. If you have begun iterating, you can use
+   * rewind() to reset the document to its initial state before calling this method.
+   *
+   * @returns A value value if a JSON array or object cannot be found.
+   * @exception SCALAR_DOCUMENT_AS_VALUE error is the document is a scalar (see is_scalar() function).
+   */
+  simdjson_inline operator value() noexcept(false);
+#endif
+  /**
+   * This method scans the array and counts the number of elements.
+   * The count_elements method should always be called before you have begun
+   * iterating through the array: it is expected that you are pointing at
+   * the beginning of the array.
+   * The runtime complexity is linear in the size of the array. After
+   * calling this function, if successful, the array is 'rewinded' at its
+   * beginning as if it had never been accessed. If the JSON is malformed (e.g.,
+   * there is a missing comma), then an error is returned and it is no longer
+   * safe to continue. Note that count_elements() does not validate the JSON values,
+   * only the structure of the array.
+   */
+  simdjson_inline simdjson_result count_elements() & noexcept;
+   /**
+   * This method scans the object and counts the number of key-value pairs.
+   * The count_fields method should always be called before you have begun
+   * iterating through the object: it is expected that you are pointing at
+   * the beginning of the object.
+   * The runtime complexity is linear in the size of the object. After
+   * calling this function, if successful, the object is 'rewinded' at its
+   * beginning as if it had never been accessed. If the JSON is malformed (e.g.,
+   * there is a missing comma), then an error is returned and it is no longer
+   * safe to continue.
+   *
+   * To check that an object is empty, it is more performant to use
+   * the is_empty() method.
+   */
+  simdjson_inline simdjson_result count_fields() & noexcept;
+  /**
+   * Get the value at the given index in the array. This function has linear-time complexity.
+   * This function should only be called once on an array instance since the array iterator is not reset between each call.
+   *
+   * @return The value at the given index, or:
+   *         - INDEX_OUT_OF_BOUNDS if the array index is larger than an array length
+   */
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  /**
+   * Begin array iteration.
+   *
+   * Part of the std::iterable interface.
+   */
+  simdjson_inline simdjson_result begin() & noexcept;
+  /**
+   * Sentinel representing the end of the array.
+   *
+   * Part of the std::iterable interface.
+   */
+  simdjson_inline simdjson_result end() & noexcept;
+
+  /**
+   * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
+   * fields must be accessed in the order they appear in the JSON text (although you can
+   * skip fields). See find_field_unordered() and operator[] for an order-insensitive version.
+   *
+   * The following code reads z, then y, then x, and thus will not retrieve x or y if fed the
+   * JSON `{ "x": 1, "y": 2, "z": 3 }`:
+   *
+   * ```cpp
+   * simdjson::ondemand::parser parser;
+   * auto obj = parser.parse(R"( { "x": 1, "y": 2, "z": 3 } )"_padded);
+   * double z = obj.find_field("z");
+   * double y = obj.find_field("y");
+   * double x = obj.find_field("x");
+   * ```
+   *
+   * **Raw Keys:** The lookup will be done against the *raw* key, and will not unescape keys.
+   * e.g. `object["a"]` will match `{ "a": 1 }`, but will *not* match `{ "\u0061": 1 }`.
+   *
+   *
+   * You must consume the fields on an object one at a time. A request for a new key
+   * invalidates previous field values: it makes them unsafe. E.g., the array
+   * given by content["bids"].get_array() should not be accessed after you have called
+   * content["asks"].get_array(). You can detect such mistakes by first compiling and running
+   * the code in Debug mode (or with the macro `SIMDJSON_DEVELOPMENT_CHECKS` set to 1): an
+   * OUT_OF_ORDER_ITERATION error is generated.
+   *
+   * You are expected to access keys only once. You should access the value corresponding to
+   * a key a single time. Doing object["mykey"].to_string()and then again object["mykey"].to_string()
+   * is an error.
+   *
+   * @param key The key to look up.
+   * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
+   */
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) & noexcept; */
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+
+  /**
+   * Look up a field by name on an object, without regard to key order.
+   *
+   * **Performance Notes:** This is a bit less performant than find_field(), though its effect varies
+   * and often appears negligible. It starts out normally, starting out at the last field; but if
+   * the field is not found, it scans from the beginning of the object to see if it missed it. That
+   * missing case has a non-cache-friendly bump and lots of extra scanning, especially if the object
+   * in question is large. The fact that the extra code is there also bumps the executable size.
+   *
+   * We default operator[] on find_field_unordered() for convenience.
+   * It is the default because it would be highly surprising (and hard to debug) if the
+   * default behavior failed to look up a field just because it was in the wrong order--and many
+   * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
+   *
+   * Use find_field() if you are sure fields will be in order (or are willing to treat it as if the
+   * field was not there when they are not in order).
+   *
+   * You must consume the fields on an object one at a time. A request for a new key
+   * invalidates previous field values: it makes them unsafe. E.g., the array
+   * given by content["bids"].get_array() should not be accessed after you have called
+   * content["asks"].get_array(). You can detect such mistakes by first compiling and running
+   * the code in Debug mode (or with the macro `SIMDJSON_DEVELOPMENT_CHECKS` set to 1): an
+   * OUT_OF_ORDER_ITERATION error is generated.
+   *
+   * You are expected to access keys only once. You should access the value corresponding to a key
+   * a single time. Doing object["mykey"].to_string() and then again object["mykey"].to_string()
+   * is an error.
+   *
+   * @param key The key to look up.
+   * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
+   */
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept; */
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+ simdjson_result operator[](int) & noexcept = delete;
+
+  /**
+   * Get the type of this JSON value. It does not validate or consume the value.
+   * E.g., you must still call "is_null()" to check that a value is null even if
+   * "type()" returns json_type::null.
+   *
+   * The answer can be one of
+   * simdjson::ondemand::json_type::object,
+   * simdjson::ondemand::json_type::array,
+   * simdjson::ondemand::json_type::string,
+   * simdjson::ondemand::json_type::number,
+   * simdjson::ondemand::json_type::boolean,
+   * simdjson::ondemand::json_type::null.
+   *
+   * Starting with simdjson 4.0, this function will return simdjson::ondemand::json_type::unknown
+   * given a bad token.
+   * This allows you to identify a case such as {"key": NaN} and identify the NaN value.
+   * The simdjson::ondemand::json_type::unknown value should only happen with non-valid JSON.
+   *
+   * NOTE: If you're only expecting a value to be one type (a typical case), it's generally
+   * better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just
+   * let it throw an exception).
+   *
+   * Prior to simdjson 4.0, this function would return an error given a bad token.
+   * Starting with simdjson 4.0, it will return simdjson::ondemand::json_type::unknown.
+   * This allows you to identify a case such as {"key": NaN} and identify the NaN value.
+   * The simdjson::ondemand::json_type::unknown value should only happen with non-valid JSON.
+   */
+  simdjson_inline simdjson_result type() noexcept;
+
+  /**
+   * Checks whether the document is a scalar (string, number, null, Boolean).
+   * Returns false when there it is an array or object.
+   *
+   * @returns true if the type is string, number, null, Boolean
+   * @error TAPE_ERROR when the JSON value is a bad token like "}" "," or "alse".
+   */
+  simdjson_inline simdjson_result is_scalar() noexcept;
+
+  /**
+   * Checks whether the document is a string.
+   *
+   * @returns true if the type is string
+   * @error TAPE_ERROR when the JSON value is a bad token like "}" "," or "alse".
+   */
+  simdjson_inline simdjson_result is_string() noexcept;
+
+  /**
+   * Checks whether the document is a negative number.
+   *
+   * @returns true if the number if negative.
+   */
+  simdjson_inline bool is_negative() noexcept;
+  /**
+   * Checks whether the document is an integer number. Note that
+   * this requires to partially parse the number string. If
+   * the value is determined to be an integer, it may still
+   * not parse properly as an integer in subsequent steps
+   * (e.g., it might overflow).
+   *
+   * @returns true if the number if negative.
+   */
+  simdjson_inline simdjson_result is_integer() noexcept;
+  /**
+   * Determine the number type (integer or floating-point number) as quickly
+   * as possible. This function does not fully validate the input. It is
+   * useful when you only need to classify the numbers, without parsing them.
+   *
+   * If you are planning to retrieve the value or you need full validation,
+   * consider using the get_number() method instead: it will fully parse
+   * and validate the input, and give you access to the type:
+   * get_number().get_number_type().
+   *
+   * get_number_type() is number_type::unsigned_integer if we have
+   * an integer greater or equal to 9223372036854775808 and no larger than 18446744073709551615.
+   * get_number_type() is number_type::signed_integer if we have an
+   * integer that is less than 9223372036854775808 and greater or equal to -9223372036854775808.
+   * get_number_type() is number_type::big_integer if we have an integer outside
+   * of those ranges (either larger than 18446744073709551615 or smaller than -9223372036854775808).
+   * Otherwise, get_number_type() has value number_type::floating_point_number
+   *
+   * This function requires processing the number string, but it is expected
+   * to be faster than get_number().get_number_type() because it is does not
+   * parse the number value.
+   *
+   * @returns the type of the number
+   */
+  simdjson_inline simdjson_result get_number_type() noexcept;
+
+  /**
+   * Attempt to parse an ondemand::number. An ondemand::number may
+   * contain an integer value or a floating-point value, the simdjson
+   * library will autodetect the type. Thus it is a dynamically typed
+   * number. Before accessing the value, you must determine the detected
+   * type.
+   *
+   * number.get_number_type() is number_type::signed_integer if we have
+   * an integer in [-9223372036854775808,9223372036854775808)
+   * You can recover the value by calling number.get_int64() and you
+   * have that number.is_int64() is true.
+   *
+   * number.get_number_type() is number_type::unsigned_integer if we have
+   * an integer in [9223372036854775808,18446744073709551616)
+   * You can recover the value by calling number.get_uint64() and you
+   * have that number.is_uint64() is true.
+   *
+   * Otherwise, number.get_number_type() has value number_type::floating_point_number
+   * and we have a binary64 number.
+   * You can recover the value by calling number.get_double() and you
+   * have that number.is_double() is true.
+   *
+   * You must check the type before accessing the value: it is an error
+   * to call "get_int64()" when number.get_number_type() is not
+   * number_type::signed_integer and when number.is_int64() is false.
+   */
+  simdjson_warn_unused simdjson_inline simdjson_result get_number() noexcept;
+
+  /**
+   * Get the raw JSON for this token.
+   *
+   * The string_view will always point into the input buffer.
+   *
+   * The string_view will start at the beginning of the token, and include the entire token
+   * *as well as all spaces until the next token (or EOF).* This means, for example, that a
+   * string token always begins with a " and is always terminated by the final ", possibly
+   * followed by a number of spaces.
+   *
+   * The string_view is *not* null-terminated. If this is a scalar (string, number,
+   * boolean, or null), the character after the end of the string_view may be the padded buffer.
+   *
+   * Tokens include:
+   * - {
+   * - [
+   * - "a string (possibly with UTF-8 or backslashed characters like \\\")".
+   * - -1.2e-100
+   * - true
+   * - false
+   * - null
+   */
+  simdjson_inline simdjson_result raw_json_token() noexcept;
+
+  /**
+   * Reset the iterator inside the document instance so we are pointing back at the
+   * beginning of the document, as if it had just been created. It invalidates all
+   * values, objects and arrays that you have created so far (including unescaped strings).
+   */
+  inline void rewind() noexcept;
+  /**
+   * Returns debugging information.
+   */
+  inline std::string to_debug_string() noexcept;
+  /**
+   * Some unrecoverable error conditions may render the document instance unusable.
+   * The is_alive() method returns true when the document is still suitable.
+   */
+  inline bool is_alive() noexcept;
+
+  /**
+   * Returns the current location in the document if in bounds.
+   */
+  inline simdjson_result current_location() const noexcept;
+
+  /**
+   * Returns true if this document has been fully parsed.
+   * If you have consumed the whole document and at_end() returns
+   * false, then there may be trailing content.
+   */
+  inline bool at_end() const noexcept;
+
+  /**
+   * Returns the current depth in the document if in bounds.
+   *
+   * E.g.,
+   *  0 = finished with document
+   *  1 = document root value (could be [ or {, not yet known)
+   *  2 = , or } inside root array/object
+   *  3 = key or value inside root array/object.
+   */
+  simdjson_inline int32_t current_depth() const noexcept;
+
+  /**
+   * Get the value associated with the given JSON pointer.  We use the RFC 6901
+   * https://tools.ietf.org/html/rfc6901 standard.
+   *
+   *   ondemand::parser parser;
+   *   auto json = R"({ "foo": { "a": [ 10, 20, 30 ] }})"_padded;
+   *   auto doc = parser.iterate(json);
+   *   doc.at_pointer("/foo/a/1") == 20
+   *
+   * It is allowed for a key to be the empty string:
+   *
+   *   ondemand::parser parser;
+   *   auto json = R"({ "": { "a": [ 10, 20, 30 ] }})"_padded;
+   *   auto doc = parser.iterate(json);
+   *   doc.at_pointer("//a/1") == 20
+   *
+   * Key values are matched exactly, without unescaping or Unicode normalization.
+   * We do a byte-by-byte comparison. E.g.
+   *
+   *   const padded_string json = "{\"\\u00E9\":123}"_padded;
+   *   auto doc = parser.iterate(json);
+   *   doc.at_pointer("/\\u00E9") == 123
+   *   doc.at_pointer((const char*)u8"/\u00E9") returns an error (NO_SUCH_FIELD)
+   *
+   * Note that at_pointer() automatically calls rewind between each call. Thus
+   * all values, objects and arrays that you have created so far (including unescaped strings)
+   * are invalidated. After calling at_pointer, you need to consume the result: string values
+   * should be stored in your own variables, arrays should be decoded and stored in your own array-like
+   * structures and so forth.
+   *
+   * Also note that at_pointer() relies on find_field() which implies that we do not unescape keys when matching
+   *
+   * @return The value associated with the given JSON pointer, or:
+   *         - NO_SUCH_FIELD if a field does not exist in an object
+   *         - INDEX_OUT_OF_BOUNDS if an array index is larger than an array length
+   *         - INCORRECT_TYPE if a non-integer is used to access an array
+   *         - INVALID_JSON_POINTER if the JSON pointer is invalid and cannot be parsed
+   *         - SCALAR_DOCUMENT_AS_VALUE if the json_pointer is empty and the document is not a scalar (see is_scalar() function).
+   */
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+
+  /**
+   * Get the value associated with the given JSONPath expression. We only support
+   * JSONPath queries that trivially convertible to JSON Pointer queries: key
+   * names and array indices.
+   *
+   * https://www.rfc-editor.org/rfc/rfc9535 (RFC 9535)
+   *
+   * Key values are matched exactly, without unescaping or Unicode normalization.
+   * We do a byte-by-byte comparison. E.g.
+   *
+   *   const padded_string json = "{\"\\u00E9\":123}"_padded;
+   *   auto doc = parser.iterate(json);
+   *   doc.at_path(".\\u00E9") == 123
+   *   doc.at_path((const char*)u8".\u00E9") returns an error (NO_SUCH_FIELD)
+   *
+   * @return The value associated with the given JSONPath expression, or:
+   *         - INVALID_JSON_POINTER if the JSONPath to JSON Pointer conversion fails
+   *         - NO_SUCH_FIELD if a field does not exist in an object
+   *         - INDEX_OUT_OF_BOUNDS if an array index is larger than an array length
+   *         - INCORRECT_TYPE if a non-integer is used to access an array
+   */
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+
+  /**
+   * Get all values matching the given JSONPath expression with wildcard support.
+   *
+   * Supports wildcard patterns like "$.array[*]" or "$.object.*" to match multiple elements.
+   *
+   * This method materializes all matching values into a vector.
+   * The document will be consumed after this call.
+   *
+   * @param json_path JSONPath expression with wildcards
+   * @return Vector of values matching the wildcard pattern, or:
+   *         - INVALID_JSON_POINTER if the JSONPath cannot be parsed
+   *         - NO_SUCH_FIELD if a field does not exist
+   *         - INDEX_OUT_OF_BOUNDS if an array index is out of bounds
+   *         - INCORRECT_TYPE if path traversal encounters wrong type
+   */
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+
+  /**
+   * Consumes the document and returns a string_view instance corresponding to the
+   * document as represented in JSON. It points inside the original byte array containing
+   * the JSON document.
+   */
+  simdjson_inline simdjson_result raw_json() noexcept;
+
+#if SIMDJSON_STATIC_REFLECTION
+  /**
+   * Extract only specific fields from the JSON object into a struct.
+   *
+   * This allows selective deserialization of only the fields you need,
+   * potentially improving performance by skipping unwanted fields.
+   *
+   * Example:
+   * ```cpp
+   * struct Car {
+   *   std::string make;
+   *   std::string model;
+   *   int year;
+   *   double price;
+   * };
+   *
+   * Car car;
+   * doc.extract_into<"make", "model">(car);
+   * // Only 'make' and 'model' fields are extracted from JSON
+   * ```
+   *
+   * @tparam FieldNames Compile-time string literals specifying which fields to extract
+   * @param out The output struct to populate with selected fields
+   * @returns SUCCESS on success, or an error code if a required field is missing or has wrong type
+   */
+  template
+    requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+  simdjson_warn_unused simdjson_inline error_code extract_into(T& out) & noexcept;
+#endif // SIMDJSON_STATIC_REFLECTION
+protected:
+  /**
+   * Consumes the document.
+   */
+  simdjson_warn_unused simdjson_inline error_code consume() noexcept;
+
+  simdjson_inline document(ondemand::json_iterator &&iter) noexcept;
+  simdjson_inline const uint8_t *text(uint32_t idx) const noexcept;
+
+  simdjson_inline value_iterator resume_value_iterator() noexcept;
+  simdjson_inline value_iterator get_root_value_iterator() noexcept;
+  simdjson_inline simdjson_result start_or_resume_object() noexcept;
+  static simdjson_inline document start(ondemand::json_iterator &&iter) noexcept;
+
+  //
+  // Fields
+  //
+  json_iterator iter{}; ///< Current position in the document
+  static constexpr depth_t DOCUMENT_DEPTH = 0; ///< document depth is always 0
+
+  friend class array_iterator;
+  friend class value;
+  friend class ondemand::parser;
+  friend class object;
+  friend class array;
+  friend class field;
+  friend class token;
+  friend class document_stream;
+  friend class document_reference;
+};
+
+
+/**
+ * A document_reference is a thin wrapper around a document reference instance.
+ * The document_reference instances are used primarily/solely for streams of JSON
+ * documents. They differ from document instances when parsing a scalar value
+ * (a document that is not an array or an object). In the case of a document,
+ * we expect the document to be fully consumed. In the case of a document_reference,
+ * we allow trailing content.
+ */
+class document_reference {
+public:
+  simdjson_inline document_reference() noexcept;
+  simdjson_inline document_reference(document &d) noexcept;
+  simdjson_inline document_reference(const document_reference &other) noexcept = default;
+  simdjson_inline document_reference& operator=(const document_reference &other) noexcept = default;
+  simdjson_inline void rewind() noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_uint64() noexcept;
+  simdjson_inline simdjson_result get_uint64_in_string() noexcept;
+  simdjson_inline simdjson_result get_int64() noexcept;
+  simdjson_inline simdjson_result get_int64_in_string() noexcept;
+  simdjson_inline simdjson_result get_double() noexcept;
+  simdjson_inline simdjson_result get_double_in_string() noexcept;
+  simdjson_inline simdjson_result get_string(bool allow_replacement = false) noexcept;
+  template 
+  simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
+  simdjson_inline simdjson_result get_wobbly_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_bool() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
+
+  simdjson_inline simdjson_result is_null() noexcept;
+  template 
+  simdjson_inline simdjson_result get() &
+#if SIMDJSON_SUPPORTS_CONCEPTS
+    noexcept(custom_deserializable ? nothrow_custom_deserializable : true)
+#else
+    noexcept
+#endif
+  {
+    static_assert(std::is_default_constructible::value, "Cannot initialize the specified type.");
+    T out{};
+    SIMDJSON_TRY(get(out));
+    return out;
+  }
+  template
+  simdjson_inline simdjson_result get() &&
+#if SIMDJSON_SUPPORTS_CONCEPTS
+    noexcept(custom_deserializable ? nothrow_custom_deserializable : true)
+#else
+    noexcept
+#endif
+  {
+      static_assert(!std::is_same::value && !std::is_same::value, "You should never hold either an ondemand::array or ondemand::object without a corresponding ondemand::document_reference being alive; that would be Undefined Behaviour.");
+      return static_cast(*this).get();
+  }
+
+  /**
+   * Get this value as the given type.
+   *
+   * Supported types: object, array, raw_json_string, string_view, uint64_t, int64_t, double, bool, value
+   *
+   * Be mindful that the document instance must remain in scope while you are accessing object, array and value instances.
+   *
+   * @param out This is set to a value of the given type, parsed from the JSON. If there is an error, this may not be initialized.
+   * @returns INCORRECT_TYPE If the JSON value is not an object.
+   * @returns SUCCESS If the parse succeeded and the out parameter was set to the value.
+   */
+  template
+  simdjson_warn_unused simdjson_inline error_code get(T &out) &
+#if SIMDJSON_SUPPORTS_CONCEPTS
+    noexcept(custom_deserializable ? nothrow_custom_deserializable : true)
+#else
+    noexcept
+#endif
+  {
+#if SIMDJSON_SUPPORTS_CONCEPTS
+    if constexpr (custom_deserializable) {
+        return deserialize(*this, out);
+    } else {
+      static_assert(!sizeof(T), "The get method with type T is not implemented by the simdjson library. "
+        "And you do not seem to have added support for it. Indeed, we have that "
+        "simdjson::custom_deserializable is false and the type T is not a default type "
+        "such as ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
+        "int64_t, double, or bool.");
+      static_cast(out); // to get rid of unused errors
+      return UNINITIALIZED;
+    }
+#else // SIMDJSON_SUPPORTS_CONCEPTS
+    // Unless the simdjson library or the user provides an inline implementation, calling this method should
+    // immediately fail.
+    static_assert(!sizeof(T), "The get method with given type is not implemented by the simdjson library. "
+      "The supported types are ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
+      "int64_t, double, and bool. We recommend you use get_double(), get_bool(), get_uint64(), get_int64(), "
+      " get_object(), get_array(), get_raw_json_string(), or get_string() instead of the get template."
+      " You may also add support for custom types, see our documentation.");
+    static_cast(out); // to get rid of unused errors
+    return UNINITIALIZED;
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+  }
+
+  /** @overload template error_code get(T &out) & noexcept */
+  template simdjson_inline error_code get(T &out) && noexcept;
+  simdjson_inline simdjson_result raw_json() noexcept;
+#if SIMDJSON_STATIC_REFLECTION
+  template
+    requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+  simdjson_warn_unused simdjson_inline error_code extract_into(T& out) & noexcept;
+#endif // SIMDJSON_STATIC_REFLECTION
+  simdjson_inline operator document&() const noexcept;
+#if SIMDJSON_EXCEPTIONS
+  template 
+  explicit simdjson_inline operator T() noexcept(false);
+  simdjson_inline operator array() & noexcept(false);
+  simdjson_inline operator object() & noexcept(false);
+  simdjson_inline operator uint64_t() noexcept(false);
+  simdjson_inline operator int64_t() noexcept(false);
+  simdjson_inline operator double() noexcept(false);
+  simdjson_inline operator std::string_view() noexcept(false);
+  simdjson_inline operator raw_json_string() noexcept(false);
+  simdjson_inline operator bool() noexcept(false);
+  simdjson_inline operator value() noexcept(false);
+#endif
+  simdjson_inline simdjson_result count_elements() & noexcept;
+  simdjson_inline simdjson_result count_fields() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+
+  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result is_scalar() noexcept;
+  simdjson_inline simdjson_result is_string() noexcept;
+
+  simdjson_inline simdjson_result current_location() noexcept;
+  simdjson_inline int32_t current_depth() const noexcept;
+  simdjson_inline bool is_negative() noexcept;
+  simdjson_inline simdjson_result is_integer() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result raw_json_token() noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+
+private:
+  document *doc{nullptr};
+};
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::document &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+  simdjson_inline error_code rewind() noexcept;
+
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_uint64() noexcept;
+  simdjson_inline simdjson_result get_uint64_in_string() noexcept;
+  simdjson_inline simdjson_result get_int64() noexcept;
+  simdjson_inline simdjson_result get_int64_in_string() noexcept;
+  simdjson_inline simdjson_result get_double() noexcept;
+  simdjson_inline simdjson_result get_double_in_string() noexcept;
+  simdjson_inline simdjson_result get_string(bool allow_replacement = false) noexcept;
+  template 
+  simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
+  simdjson_inline simdjson_result get_wobbly_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_bool() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result is_null() noexcept;
+
+  template simdjson_inline simdjson_result get() & noexcept;
+  template simdjson_deprecated simdjson_inline simdjson_result get() && noexcept;
+
+  template simdjson_inline error_code get(T &out) & noexcept;
+  template simdjson_inline error_code get(T &out) && noexcept;
+#if SIMDJSON_EXCEPTIONS
+
+  using arm64::implementation_simdjson_result_base::operator*;
+  using arm64::implementation_simdjson_result_base::operator->;
+  template ::value == false>::type>
+  explicit simdjson_inline operator T() noexcept(false);
+  simdjson_inline operator arm64::ondemand::array() & noexcept(false);
+  simdjson_inline operator arm64::ondemand::object() & noexcept(false);
+  simdjson_inline operator uint64_t() noexcept(false);
+  simdjson_inline operator int64_t() noexcept(false);
+  simdjson_inline operator double() noexcept(false);
+  simdjson_inline operator std::string_view() noexcept(false);
+  simdjson_inline operator arm64::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator bool() noexcept(false);
+  simdjson_inline operator arm64::ondemand::value() noexcept(false);
+#endif
+  simdjson_inline simdjson_result count_elements() & noexcept;
+  simdjson_inline simdjson_result count_fields() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result is_scalar() noexcept;
+  simdjson_inline simdjson_result is_string() noexcept;
+  simdjson_inline simdjson_result current_location() noexcept;
+  simdjson_inline int32_t current_depth() const noexcept;
+  simdjson_inline bool at_end() const noexcept;
+  simdjson_inline bool is_negative() noexcept;
+  simdjson_inline simdjson_result is_integer() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
+  /** @copydoc simdjson_inline std::string_view document::raw_json_token() const noexcept */
+  simdjson_inline simdjson_result raw_json_token() noexcept;
+
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+#if SIMDJSON_STATIC_REFLECTION
+  template
+    requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+  simdjson_warn_unused simdjson_inline error_code extract_into(T& out) & noexcept;
+#endif // SIMDJSON_STATIC_REFLECTION
+};
+
+
+} // namespace simdjson
+
+
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::document_reference value, error_code error) noexcept;
+  simdjson_inline simdjson_result() noexcept = default;
+  simdjson_inline error_code rewind() noexcept;
+
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_uint64() noexcept;
+  simdjson_inline simdjson_result get_uint64_in_string() noexcept;
+  simdjson_inline simdjson_result get_int64() noexcept;
+  simdjson_inline simdjson_result get_int64_in_string() noexcept;
+  simdjson_inline simdjson_result get_double() noexcept;
+  simdjson_inline simdjson_result get_double_in_string() noexcept;
+  simdjson_inline simdjson_result get_string(bool allow_replacement = false) noexcept;
+  template 
+  simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
+  simdjson_inline simdjson_result get_wobbly_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_bool() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result is_null() noexcept;
+
+  template simdjson_inline simdjson_result get() & noexcept;
+  template simdjson_inline simdjson_result get() && noexcept;
+
+  template simdjson_inline error_code get(T &out) & noexcept;
+  template simdjson_inline error_code get(T &out) && noexcept;
+#if SIMDJSON_EXCEPTIONS
+  template 
+  explicit simdjson_inline operator T() noexcept(false);
+  simdjson_inline operator arm64::ondemand::array() & noexcept(false);
+  simdjson_inline operator arm64::ondemand::object() & noexcept(false);
+  simdjson_inline operator uint64_t() noexcept(false);
+  simdjson_inline operator int64_t() noexcept(false);
+  simdjson_inline operator double() noexcept(false);
+  simdjson_inline operator std::string_view() noexcept(false);
+  simdjson_inline operator arm64::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator bool() noexcept(false);
+  simdjson_inline operator arm64::ondemand::value() noexcept(false);
+#endif
+  simdjson_inline simdjson_result count_elements() & noexcept;
+  simdjson_inline simdjson_result count_fields() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result is_scalar() noexcept;
+  simdjson_inline simdjson_result is_string() noexcept;
+  simdjson_inline simdjson_result current_location() noexcept;
+  simdjson_inline simdjson_result current_depth() const noexcept;
+  simdjson_inline simdjson_result is_negative() noexcept;
+  simdjson_inline simdjson_result is_integer() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
+  /** @copydoc simdjson_inline std::string_view document_reference::raw_json_token() const noexcept */
+  simdjson_inline simdjson_result raw_json_token() noexcept;
+
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+#if SIMDJSON_STATIC_REFLECTION
+  template
+    requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+  simdjson_warn_unused simdjson_inline error_code extract_into(T& out) & noexcept;
+#endif // SIMDJSON_STATIC_REFLECTION
+};
+
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
+/* end file simdjson/generic/ondemand/document.h for arm64 */
+/* including simdjson/generic/ondemand/document_stream.h for arm64: #include "simdjson/generic/ondemand/document_stream.h" */
+/* begin file simdjson/generic/ondemand/document_stream.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/parser.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#ifdef SIMDJSON_THREADS_ENABLED
+#include 
+#include 
+#include 
+#endif
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+#ifdef SIMDJSON_THREADS_ENABLED
+/** @private Custom worker class **/
+struct stage1_worker {
+  stage1_worker() noexcept = default;
+  stage1_worker(const stage1_worker&) = delete;
+  stage1_worker(stage1_worker&&) = delete;
+  stage1_worker operator=(const stage1_worker&) = delete;
+  ~stage1_worker();
+  /**
+   * We only start the thread when it is needed, not at object construction, this may throw.
+   * You should only call this once.
+   **/
+  void start_thread();
+  /**
+   * Start a stage 1 job. You should first call 'run', then 'finish'.
+   * You must call start_thread once before.
+   */
+  void run(document_stream * ds, parser * stage1, size_t next_batch_start);
+  /** Wait for the run to finish (blocking). You should first call 'run', then 'finish'. **/
+  void finish();
+
+private:
+
+  /**
+   * Normally, we would never stop the thread. But we do in the destructor.
+   * This function is only safe assuming that you are not waiting for results. You
+   * should have called run, then finish, and be done.
+   **/
+  void stop_thread();
+
+  std::thread thread{};
+  /** These three variables define the work done by the thread. **/
+  ondemand::parser * stage1_thread_parser{};
+  size_t _next_batch_start{};
+  document_stream * owner{};
+  /**
+   * We have two state variables. This could be streamlined to one variable in the future but
+   * we use two for clarity.
+   */
+  bool has_work{false};
+  bool can_work{true};
+
+  /**
+   * We lock using a mutex.
+   */
+  std::mutex locking_mutex{};
+  std::condition_variable cond_var{};
+
+  friend class document_stream;
+};
+#endif  // SIMDJSON_THREADS_ENABLED
+
+/**
+ * A forward-only stream of documents.
+ *
+ * Produced by parser::iterate_many.
+ *
+ */
+class document_stream {
+public:
+  /**
+   * Construct an uninitialized document_stream.
+   *
+   *  ```cpp
+   *  document_stream docs;
+   *  auto error = parser.iterate_many(json).get(docs);
+   *  ```
+   */
+  simdjson_inline document_stream() noexcept;
+  /** Move one document_stream to another. */
+  simdjson_inline document_stream(document_stream &&other) noexcept = default;
+  /** Move one document_stream to another. */
+  simdjson_inline document_stream &operator=(document_stream &&other) noexcept = default;
+
+  simdjson_inline ~document_stream() noexcept;
+
+  /**
+   * Returns the input size in bytes.
+   */
+  inline size_t size_in_bytes() const noexcept;
+
+  /**
+   * After iterating through the stream, this method
+   * returns the number of bytes that were not parsed at the end
+   * of the stream. If truncated_bytes() differs from zero,
+   * then the input was truncated maybe because incomplete JSON
+   * documents were found at the end of the stream. You
+   * may need to process the bytes in the interval [size_in_bytes()-truncated_bytes(), size_in_bytes()).
+   *
+   * You should only call truncated_bytes() after streaming through all
+   * documents, like so:
+   *
+   *   document_stream stream = parser.iterate_many(json,window);
+   *   for(auto & doc : stream) {
+   *      // do something with doc
+   *   }
+   *   size_t truncated = stream.truncated_bytes();
+   *
+   */
+  inline size_t truncated_bytes() const noexcept;
+
+  class iterator {
+  public:
+    using value_type = simdjson_result;
+    using reference  = simdjson_result;
+    using pointer    = void;
+    using difference_type   = std::ptrdiff_t;
+    using iterator_category = std::input_iterator_tag;
+
+    /**
+     * Default constructor.
+     */
+    simdjson_inline iterator() noexcept;
+    simdjson_inline iterator(const iterator &other) noexcept = default;
+    /**
+     * Get the current document (or error).
+     */
+    simdjson_inline reference operator*() noexcept;
+    /**
+     * Advance to the next document (prefix).
+     */
+    inline iterator& operator++() noexcept;
+    /**
+     * Check if we're at the end yet.
+     * @param other the end iterator to compare to.
+     */
+    simdjson_inline bool operator!=(const iterator &other) const noexcept;
+    simdjson_inline bool operator==(const iterator &other) const noexcept;
+    /**
+     * @private
+     *
+     * Gives the current index in the input document in bytes.
+     *
+     *   document_stream stream = parser.parse_many(json,window);
+     *   for(auto i = stream.begin(); i != stream.end(); ++i) {
+     *      auto doc = *i;
+     *      size_t index = i.current_index();
+     *   }
+     *
+     * This function (current_index()) is experimental and the usage
+     * may change in future versions of simdjson: we find the API somewhat
+     * awkward and we would like to offer something friendlier.
+     */
+     simdjson_inline size_t current_index() const noexcept;
+
+     /**
+     * @private
+     *
+     * Gives a view of the current document at the current position.
+     *
+     *   document_stream stream = parser.iterate_many(json,window);
+     *   for(auto i = stream.begin(); i != stream.end(); ++i) {
+     *      std::string_view v = i.source();
+     *   }
+     *
+     * The returned string_view instance is simply a map to the (unparsed)
+     * source string: it may thus include white-space characters and all manner
+     * of padding.
+     *
+     * This function (source()) is experimental and the usage
+     * may change in future versions of simdjson: we find the API somewhat
+     * awkward and we would like to offer something friendlier.
+     *
+     */
+     simdjson_inline std::string_view source() const noexcept;
+
+    /**
+     * Returns error of the stream (if any).
+     */
+     inline error_code error() const noexcept;
+
+     /**
+      * Returns whether the iterator is at the end.
+      */
+     inline bool at_end() const noexcept;
+
+  private:
+    simdjson_inline iterator(document_stream *s, bool finished) noexcept;
+    /** The document_stream we're iterating through. */
+    document_stream* stream;
+    /** Whether we're finished or not. */
+    bool finished;
+
+    friend class document;
+    friend class document_stream;
+    friend class json_iterator;
+  };
+  using iterator = document_stream::iterator;
+
+  /**
+   * Start iterating the documents in the stream.
+   */
+  simdjson_inline iterator begin() noexcept;
+  /**
+   * The end of the stream, for iterator comparison purposes.
+   */
+  simdjson_inline iterator end() noexcept;
+
+private:
+
+  document_stream &operator=(const document_stream &) = delete; // Disallow copying
+  document_stream(const document_stream &other) = delete; // Disallow copying
+
+  /**
+   * Construct a document_stream. Does not allocate or parse anything until the iterator is
+   * used.
+   *
+   * @param parser is a reference to the parser instance used to generate this document_stream
+   * @param buf is the raw byte buffer we need to process
+   * @param len is the length of the raw byte buffer in bytes
+   * @param batch_size is the size of the windows (must be strictly greater or equal to the largest JSON document)
+   */
+  simdjson_inline document_stream(
+    ondemand::parser &parser,
+    const uint8_t *buf,
+    size_t len,
+    size_t batch_size,
+    bool allow_comma_separated
+  ) noexcept;
+
+  /**
+   * Parse the first document in the buffer. Used by begin(), to handle allocation and
+   * initialization.
+   */
+  inline void start() noexcept;
+
+  /**
+   * Parse the next document found in the buffer previously given to document_stream.
+   *
+   * The content should be a valid JSON document encoded as UTF-8. If there is a
+   * UTF-8 BOM, the parser skips it.
+   *
+   * You do NOT need to pre-allocate a parser.  This function takes care of
+   * pre-allocating a capacity defined by the batch_size defined when creating the
+   * document_stream object.
+   *
+   * The function returns simdjson::EMPTY if there is no more data to be parsed.
+   *
+   * The function returns simdjson::SUCCESS (as integer = 0) in case of success
+   * and indicates that the buffer has successfully been parsed to the end.
+   * Every document it contained has been parsed without error.
+   *
+   * The function returns an error code from simdjson/simdjson.h in case of failure
+   * such as simdjson::CAPACITY, simdjson::MEMALLOC, simdjson::DEPTH_ERROR and so forth;
+   * the simdjson::error_message function converts these error codes into a string).
+   *
+   * You can also check validity by calling parser.is_valid(). The same parser can
+   * and should be reused for the other documents in the buffer.
+   */
+  inline void next() noexcept;
+
+  /** Move the json_iterator of the document to the location of the next document in the stream. */
+  inline void next_document() noexcept;
+
+  /** Get the next document index. */
+  inline size_t next_batch_start() const noexcept;
+
+  /** Pass the next batch through stage 1 with the given parser. */
+  inline error_code run_stage1(ondemand::parser &p, size_t batch_start) noexcept;
+
+  // Fields
+  ondemand::parser *parser;
+  const uint8_t *buf;
+  size_t len;
+  size_t batch_size;
+  bool allow_comma_separated;
+  /**
+   * We are going to use just one document instance. The document owns
+   * the json_iterator. It implies that we only ever pass a reference
+   * to the document to the users.
+   */
+  document doc{};
+  /** The error (or lack thereof) from the current document. */
+  error_code error;
+  size_t batch_start{0};
+  size_t doc_index{};
+
+  #ifdef SIMDJSON_THREADS_ENABLED
+  /** Indicates whether we use threads. Note that this needs to be a constant during the execution of the parsing. */
+  bool use_thread;
+
+  inline void load_from_stage1_thread() noexcept;
+
+  /** Start a thread to run stage 1 on the next batch. */
+  inline void start_stage1_thread() noexcept;
+
+  /** Wait for the stage 1 thread to finish and capture the results. */
+  inline void finish_stage1_thread() noexcept;
+
+  /** The error returned from the stage 1 thread. */
+  error_code stage1_thread_error{UNINITIALIZED};
+  /** The thread used to run stage 1 against the next batch in the background. */
+  std::unique_ptr worker{new(std::nothrow) stage1_worker()};
+  /**
+   * The parser used to run stage 1 in the background. Will be swapped
+   * with the regular parser when finished.
+   */
+  ondemand::parser stage1_thread_parser{};
+
+  friend struct stage1_worker;
+  #endif // SIMDJSON_THREADS_ENABLED
+
+  friend class parser;
+  friend class document;
+  friend class json_iterator;
+  friend struct simdjson_result;
+  friend struct simdjson::internal::simdjson_result_base;
+};  // document_stream
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::document_stream &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
+/* end file simdjson/generic/ondemand/document_stream.h for arm64 */
+/* including simdjson/generic/ondemand/field.h for arm64: #include "simdjson/generic/ondemand/field.h" */
+/* begin file simdjson/generic/ondemand/field.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_FIELD_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+/**
+ * A JSON field (key/value pair) in an object.
+ *
+ * Returned from object iteration.
+ *
+ * Extends from std::pair so you can use C++ algorithms that rely on pairs.
+ */
+class field : public std::pair {
+public:
+  /**
+   * Create a new invalid field.
+   *
+   * Exists so you can declare a variable and later assign to it before use.
+   */
+  simdjson_inline field() noexcept;
+
+  /**
+   * Get the key as a string_view (for higher speed, consider raw_key).
+   * We deliberately use a more cumbersome name (unescaped_key) to force users
+   * to think twice about using it.
+   *
+   * This consumes the key: once you have called unescaped_key(), you cannot
+   * call it again nor can you call key().
+   */
+  simdjson_inline simdjson_warn_unused simdjson_result unescaped_key(bool allow_replacement = false) noexcept;
+  /**
+   * Get the key as a string_view (for higher speed, consider raw_key).
+   * We deliberately use a more cumbersome name (unescaped_key) to force users
+   * to think twice about using it. The content is stored in the receiver.
+   *
+   * This consumes the key: once you have called unescaped_key(), you cannot
+   * call it again nor can you call key().
+   */
+  template 
+  simdjson_inline simdjson_warn_unused error_code unescaped_key(string_type& receiver, bool allow_replacement = false) noexcept;
+  /**
+   * Get the key as a raw_json_string. Can be used for direct comparison with
+   * an unescaped C string: e.g., key() == "test". This does not count as
+   * consumption of the content: you can safely call it repeatedly.
+   * See escaped_key() for a similar function which returns
+   * a more convenient std::string_view result.
+   */
+  simdjson_inline raw_json_string key() const noexcept;
+  /**
+   * Get the unprocessed key as a string_view. This includes the quotes and may include
+   * some spaces after the last quote. This does not count as
+   * consumption of the content: you can safely call it repeatedly.
+   * See escaped_key().
+   */
+  simdjson_inline std::string_view key_raw_json_token() const noexcept;
+  /**
+   * Get the key as a string_view. This does not include the quotes and
+   * the string is unprocessed key so it may contain escape characters
+   * (e.g., \uXXXX or \n). It does not count as a consumption of the content:
+   * you can safely call it repeatedly. Use unescaped_key() to get the unescaped key.
+   */
+  simdjson_inline std::string_view escaped_key() const noexcept;
+  /**
+   * Get the field value.
+   */
+  simdjson_inline ondemand::value &value() & noexcept;
+  /**
+   * @overload ondemand::value &ondemand::value() & noexcept
+   */
+  simdjson_inline ondemand::value value() && noexcept;
+
+protected:
+  simdjson_inline field(raw_json_string key, ondemand::value &&value) noexcept;
+  static simdjson_inline simdjson_result start(value_iterator &parent_iter) noexcept;
+  static simdjson_inline simdjson_result start(const value_iterator &parent_iter, raw_json_string key) noexcept;
+  friend struct simdjson_result;
+  friend class object_iterator;
+};
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::field &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+
+  simdjson_inline simdjson_result unescaped_key(bool allow_replacement = false) noexcept;
+  template
+  simdjson_inline error_code unescaped_key(string_type &receiver, bool allow_replacement = false) noexcept;
+  simdjson_inline simdjson_result key() noexcept;
+  simdjson_inline simdjson_result key_raw_json_token() noexcept;
+  simdjson_inline simdjson_result escaped_key() noexcept;
+  simdjson_inline simdjson_result value() noexcept;
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_H
+/* end file simdjson/generic/ondemand/field.h for arm64 */
+/* including simdjson/generic/ondemand/object.h for arm64: #include "simdjson/generic/ondemand/object.h" */
+/* begin file simdjson/generic/ondemand/object.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_OBJECT_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION && SIMDJSON_SUPPORTS_CONCEPTS */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_string_builder.h"  // for constevalutil::fixed_string */
+/* amalgamation skipped (editor-only): #endif */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+/**
+ * A forward-only JSON object field iterator.
+ */
+class object {
+public:
+  /**
+   * Create a new invalid object.
+   *
+   * Exists so you can declare a variable and later assign to it before use.
+   */
+  simdjson_inline object() noexcept = default;
+
+  /**
+   * Get an iterator to the start of the object. We recommend using a range-based for loop.
+   *
+   * Using the iterator directly is also possible but error-prone and discouraged. In particular,
+   * you must dereference the iterator exactly once per iteration (before calling '++').
+   * Doing otherwise is unsafe and may lead to errors. You are responsible for ensuring
+   */
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
+  /**
+   * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
+   * fields must be accessed in the order they appear in the JSON text (although you can
+   * skip fields). See find_field_unordered() and operator[] for an order-insensitive version.
+   *
+   * The following code reads z, then y, then x, and thus will not retrieve x or y if fed the
+   * JSON `{ "x": 1, "y": 2, "z": 3 }`:
+   *
+   * ```cpp
+   * simdjson::ondemand::parser parser;
+   * auto obj = parser.parse(R"( { "x": 1, "y": 2, "z": 3 } )"_padded);
+   * double z = obj.find_field("z");
+   * double y = obj.find_field("y");
+   * double x = obj.find_field("x");
+   * ```
+   * If you have multiple fields with a matching key ({"x": 1,  "x": 1}) be mindful
+   * that only one field is returned.
+   *
+   * **Raw Keys:** The lookup will be done against the *raw* key, and will not unescape keys.
+   * e.g. `object["a"]` will match `{ "a": 1 }`, but will *not* match `{ "\u0061": 1 }`.
+   *
+   * You must consume the fields on an object one at a time. A request for a new key
+   * invalidates previous field values: it makes them unsafe. The value instance you get
+   * from  `content["bids"]` becomes invalid when you call `content["asks"]`. The array
+   * given by content["bids"].get_array() should not be accessed after you have called
+   * content["asks"].get_array(). You can detect such mistakes by first compiling and running
+   * the code in Debug mode (or with the macro `SIMDJSON_DEVELOPMENT_CHECKS` set to 1): an
+   * OUT_OF_ORDER_ITERATION error is generated.
+   *
+   * You are expected to access keys only once. You should access the value corresponding to a
+   * key a single time. Doing object["mykey"].to_string() and then again object["mykey"].to_string()
+   * is an error.
+   *
+   * If you expect to have keys with escape characters, please review our documentation.
+   *
+   * @param key The key to look up.
+   * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
+   */
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) & noexcept; */
+  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
+
+  /**
+   * Look up a field by name on an object, without regard to key order.
+   *
+   * **Performance Notes:** This is a bit less performant than find_field(), though its effect varies
+   * and often appears negligible. It starts out normally, starting out at the last field; but if
+   * the field is not found, it scans from the beginning of the object to see if it missed it. That
+   * missing case has a non-cache-friendly bump and lots of extra scanning, especially if the object
+   * in question is large. The fact that the extra code is there also bumps the executable size.
+   *
+   * We default operator[] on find_field_unordered() for convenience.
+   * It is the default because it would be highly surprising (and hard to debug) if the
+   * default behavior failed to look up a field just because it was in the wrong order--and many
+   * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
+   *
+   * Use find_field() if you are sure fields will be in order (or are willing to treat it as if the
+   * field was not there when they are not in order).
+   *
+   * If you have multiple fields with a matching key ({"x": 1,  "x": 1}) be mindful
+   * that only one field is returned.
+   *
+   * You must consume the fields on an object one at a time. A request for a new key
+   * invalidates previous field values: it makes them unsafe. The value instance you get
+   * from  `content["bids"]` becomes invalid when you call `content["asks"]`. The array
+   * given by content["bids"].get_array() should not be accessed after you have called
+   * content["asks"].get_array(). You can detect such mistakes by first compiling and running
+   * the code in Debug mode (or with the macro `SIMDJSON_DEVELOPMENT_CHECKS` set to 1): an
+   * OUT_OF_ORDER_ITERATION error is generated.
+   *
+   * You are expected to access keys only once. You should access the value corresponding to a key
+   * a single time. Doing object["mykey"].to_string() and then again object["mykey"].to_string() is an error.
+   *
+   * If you expect to have keys with escape characters, please review our documentation.
+   *
+   * @param key The key to look up.
+   * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
+   */
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
+
+  /**
+   * Get the value associated with the given JSON pointer. We use the RFC 6901
+   * https://tools.ietf.org/html/rfc6901 standard, interpreting the current node
+   * as the root of its own JSON document.
+   *
+   *   ondemand::parser parser;
+   *   auto json = R"({ "foo": { "a": [ 10, 20, 30 ] }})"_padded;
+   *   auto doc = parser.iterate(json);
+   *   doc.at_pointer("/foo/a/1") == 20
+   *
+   * It is allowed for a key to be the empty string:
+   *
+   *   ondemand::parser parser;
+   *   auto json = R"({ "": { "a": [ 10, 20, 30 ] }})"_padded;
+   *   auto doc = parser.iterate(json);
+   *   doc.at_pointer("//a/1") == 20
+   *
+   * Note that at_pointer() called on the document automatically calls the document's rewind
+   * method between each call. It invalidates all previously accessed arrays, objects and values
+   * that have not been consumed. Yet it is not the case when calling at_pointer on an object
+   * instance: there is no rewind and no invalidation.
+   *
+   * You may call at_pointer more than once on an object, but each time the pointer is advanced
+   * to be within the value matched by the key indicated by the JSON pointer query. Thus any preceding
+   * key (as well as the current key) can no longer be used with following JSON pointer calls.
+   *
+   * Also note that at_pointer() relies on find_field() which implies that we do not unescape keys when matching.
+   *
+   * @return The value associated with the given JSON pointer, or:
+   *         - NO_SUCH_FIELD if a field does not exist in an object
+   *         - INDEX_OUT_OF_BOUNDS if an array index is larger than an array length
+   *         - INCORRECT_TYPE if a non-integer is used to access an array
+   *         - INVALID_JSON_POINTER if the JSON pointer is invalid and cannot be parsed
+   */
+  inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+
+  /**
+   * Get the value associated with the given JSONPath expression. We only support
+   * JSONPath queries that trivially convertible to JSON Pointer queries: key
+   * names and array indices.
+   *
+   * @return The value associated with the given JSONPath expression, or:
+   *         - INVALID_JSON_POINTER if the JSONPath to JSON Pointer conversion fails
+   *         - NO_SUCH_FIELD if a field does not exist in an object
+   *         - INDEX_OUT_OF_BOUNDS if an array index is larger than an array length
+   *         - INCORRECT_TYPE if a non-integer is used to access an array
+   */
+  inline simdjson_result at_path(std::string_view json_path) noexcept;
+
+  /**
+   * Get all values matching the given JSONPath expression with wildcard support.
+   * Supports wildcard patterns like ".*" to match all object fields.
+   *
+   * @param json_path JSONPath expression with wildcards
+   * @return Vector of values matching the wildcard pattern
+  */
+  inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+
+  /**
+   * Reset the iterator so that we are pointing back at the
+   * beginning of the object. You should still consume values only once even if you
+   * can iterate through the object more than once. If you unescape a string or a key
+   * within the object more than once, you have unsafe code. Note that rewinding an object
+   * means that you may need to reparse it anew: it is not a free operation.
+   *
+   * @returns true if the object contains some elements (not empty)
+   */
+  inline simdjson_result reset() & noexcept;
+  /**
+   * This method scans the beginning of the object and checks whether the
+   * object is empty.
+   * The runtime complexity is constant time. After
+   * calling this function, if successful, the object is 'rewinded' at its
+   * beginning as if it had never been accessed. If the JSON is malformed (e.g.,
+   * there is a missing comma), then an error is returned and it is no longer
+   * safe to continue.
+   */
+  inline simdjson_result is_empty() & noexcept;
+  /**
+   * This method scans the object and counts the number of key-value pairs.
+   * The count_fields method should always be called before you have begun
+   * iterating through the object: it is expected that you are pointing at
+   * the beginning of the object.
+   * The runtime complexity is linear in the size of the object. After
+   * calling this function, if successful, the object is 'rewinded' at its
+   * beginning as if it had never been accessed. If the JSON is malformed (e.g.,
+   * there is a missing comma), then an error is returned and it is no longer
+   * safe to continue.
+   *
+   * To check that an object is empty, it is more performant to use
+   * the is_empty() method.
+   *
+   * Performance hint: You should only call count_fields() as a last
+   * resort as it may require scanning the document twice or more.
+   */
+  simdjson_inline simdjson_result count_fields() & noexcept;
+  /**
+   * Consumes the object and returns a string_view instance corresponding to the
+   * object as represented in JSON. It points inside the original byte array containing
+   * the JSON document.
+   */
+  simdjson_inline simdjson_result raw_json() noexcept;
+
+#if SIMDJSON_SUPPORTS_CONCEPTS
+  /**
+   * Get this object as the given type.
+   *
+   * @param out This is set to a value of the given type, parsed from the JSON. If there is an error, this may not be initialized.
+   * @returns INCORRECT_TYPE If the JSON object is not of the given type.
+   * @returns SUCCESS If the parse succeeded and the out parameter was set to the value.
+   */
+  template 
+  simdjson_warn_unused simdjson_inline error_code get(T &out)
+     noexcept(custom_deserializable ? nothrow_custom_deserializable : true) {
+    static_assert(custom_deserializable);
+    return deserialize(*this, out);
+  }
+  /**
+   * Get this array as the given type.
+   *
+   * @returns A value of the given type, parsed from the JSON.
+   * @returns INCORRECT_TYPE If the JSON value is not the given type.
+   */
+  template 
+  simdjson_inline simdjson_result get()
+    noexcept(custom_deserializable ? nothrow_custom_deserializable : true)
+  {
+    static_assert(std::is_default_constructible::value, "The specified type is not default constructible.");
+    T out{};
+    SIMDJSON_TRY(get(out));
+    return out;
+  }
+
+#if SIMDJSON_STATIC_REFLECTION
+  /**
+   * Extract only specific fields from the JSON object into a struct.
+   *
+   * This allows selective deserialization of only the fields you need,
+   * potentially improving performance by skipping unwanted fields.
+   *
+   * Example:
+   * ```cpp
+   * struct Car {
+   *   std::string make;
+   *   std::string model;
+   *   int year;
+   *   double price;
+   * };
+   *
+   * Car car;
+   * object.extract_into<"make", "model">(car);
+   * // Only 'make' and 'model' fields are extracted from JSON
+   * ```
+   *
+   * @tparam FieldNames Compile-time string literals specifying which fields to extract
+   * @param out The output struct to populate with selected fields
+   * @returns SUCCESS on success, or an error code if a required field is missing or has wrong type
+   */
+  template
+    requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+  simdjson_warn_unused simdjson_inline error_code extract_into(T& out) & noexcept;
+#endif // SIMDJSON_STATIC_REFLECTION
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+protected:
+  /**
+   * Go to the end of the object, no matter where you are right now.
+   */
+  simdjson_warn_unused simdjson_inline error_code consume() noexcept;
+  static simdjson_inline simdjson_result start(value_iterator &iter) noexcept;
+  static simdjson_inline simdjson_result start_root(value_iterator &iter) noexcept;
+  static simdjson_inline simdjson_result started(value_iterator &iter) noexcept;
+  static simdjson_inline object resume(const value_iterator &iter) noexcept;
+  simdjson_inline object(const value_iterator &iter) noexcept;
+
+  simdjson_warn_unused simdjson_inline error_code find_field_raw(const std::string_view key) noexcept;
+
+  value_iterator iter{};
+
+  friend class value;
+  friend class document;
+  friend struct simdjson_result;
+};
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::object &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  inline simdjson_result reset() noexcept;
+  inline simdjson_result is_empty() noexcept;
+  inline simdjson_result count_fields() & noexcept;
+  inline simdjson_result raw_json() noexcept;
+  #if SIMDJSON_SUPPORTS_CONCEPTS
+  // TODO: move this code into object-inl.h
+
+  template
+  simdjson_inline simdjson_result get() noexcept {
+    if (error()) { return error(); }
+    if constexpr (std::is_same_v) {
+      return first;
+    }
+    return first.get();
+  }
+  template
+  simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
+    if (error()) { return error(); }
+    if constexpr (std::is_same_v) {
+      out = first;
+    } else {
+      SIMDJSON_TRY( first.get(out) );
+    }
+    return SUCCESS;
+  }
+
+#if SIMDJSON_STATIC_REFLECTION
+  // TODO: move this code into object-inl.h
+  template
+    requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+  simdjson_warn_unused simdjson_inline error_code extract_into(T& out) noexcept {
+    if (error()) { return error(); }
+    return first.extract_into(out);
+  }
+#endif // SIMDJSON_STATIC_REFLECTION
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
+/* end file simdjson/generic/ondemand/object.h for arm64 */
+/* including simdjson/generic/ondemand/object_iterator.h for arm64: #include "simdjson/generic/ondemand/object_iterator.h" */
+/* begin file simdjson/generic/ondemand/object_iterator.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+class object_iterator {
+public:
+  /**
+   * Create a new invalid object_iterator.
+   *
+   * Exists so you can declare a variable and later assign to it before use.
+   */
+  simdjson_inline object_iterator() noexcept = default;
+
+  //
+  // Iterator interface
+  //
+
+  // Reads key and value, yielding them to the user.
+  // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline simdjson_result operator*() noexcept;
+  // Assumes it's being compared with the end. true if depth < iter->depth.
+  simdjson_inline bool operator==(const object_iterator &) const noexcept;
+  // Assumes it's being compared with the end. true if depth >= iter->depth.
+  simdjson_inline bool operator!=(const object_iterator &) const noexcept;
+  // Checks for ']' and ','
+  // YOU MUST NOT CALL THIS IF operator* YIELDED AN ERROR.
+  // YOU MUST NOT CALL THIS WITHOUT A CORRESPONDING operator* CALL.
+  simdjson_inline object_iterator &operator++() noexcept;
+
+private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
+  /**
+   * The underlying JSON iterator.
+   *
+   * PERF NOTE: expected to be elided in favor of the parent document: this is set when the object
+   * is first used, and never changes afterwards.
+   */
+  value_iterator iter{};
+
+  simdjson_inline object_iterator(const value_iterator &iter) noexcept;
+  friend struct simdjson_result;
+  friend class object;
+};
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+template<>
+struct simdjson_result : public arm64::implementation_simdjson_result_base {
+public:
+  simdjson_inline simdjson_result(arm64::ondemand::object_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
+  simdjson_inline simdjson_result() noexcept = default;
+
+  //
+  // Iterator interface
+  //
+
+  // Reads key and value, yielding them to the user.
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  // Assumes it's being compared with the end. true if depth < iter->depth.
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  // Assumes it's being compared with the end. true if depth >= iter->depth.
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  // Checks for ']' and ','
+  simdjson_inline simdjson_result &operator++() noexcept;
+};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
+/* end file simdjson/generic/ondemand/object_iterator.h for arm64 */
+/* including simdjson/generic/ondemand/serialization.h for arm64: #include "simdjson/generic/ondemand/serialization.h" */
+/* begin file simdjson/generic/ondemand/serialization.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+/**
+ * Create a string-view instance out of a document instance. The string-view instance
+ * contains JSON text that is suitable to be parsed as JSON again. It does not
+ * validate the content.
+ */
+inline simdjson_result to_json_string(arm64::ondemand::document& x) noexcept;
+/**
+ * Create a string-view instance out of a value instance. The string-view instance
+ * contains JSON text that is suitable to be parsed as JSON again. The value must
+ * not have been accessed previously. It does not
+ * validate the content.
+ */
+inline simdjson_result to_json_string(arm64::ondemand::value& x) noexcept;
+/**
+ * Create a string-view instance out of an object instance. The string-view instance
+ * contains JSON text that is suitable to be parsed as JSON again. It does not
+ * validate the content.
+ */
+inline simdjson_result to_json_string(arm64::ondemand::object& x) noexcept;
+/**
+ * Create a string-view instance out of an array instance. The string-view instance
+ * contains JSON text that is suitable to be parsed as JSON again. It does not
+ * validate the content.
+ */
+inline simdjson_result to_json_string(arm64::ondemand::array& x) noexcept;
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+
+#if SIMDJSON_STATIC_REFLECTION
+/**
+ * Create a JSON string from any user-defined type using static reflection.
+ * Only available when SIMDJSON_STATIC_REFLECTION is enabled.
+ */
+template
+  requires(!std::same_as &&
+           !std::same_as &&
+           !std::same_as &&
+           !std::same_as)
+inline std::string to_json_string(const T& obj);
+#endif
+
+} // namespace simdjson
+
+/**
+ * We want to support argument-dependent lookup (ADL).
+ * Hence we should define operator<< in the namespace
+ * where the argument (here value, object, etc.) resides.
+ * Credit: @madhur4127
+ * See https://github.com/simdjson/simdjson/issues/1768
+ */
+namespace simdjson { namespace arm64 { namespace ondemand {
+
+/**
+ * Print JSON to an output stream.  It does not
+ * validate the content.
+ *
+ * @param out The output stream.
+ * @param value The element.
+ * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
+ */
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::value x);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+#endif
+/**
+ * Print JSON to an output stream. It does not
+ * validate the content.
+ *
+ * @param out The output stream.
+ * @param value The array.
+ * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
+ */
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::array value);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+#endif
+/**
+ * Print JSON to an output stream. It does not
+ * validate the content.
+ *
+ * @param out The output stream.
+ * @param value The array.
+ * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
+ */
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::document& value);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+#endif
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::document_reference& value);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+#endif
+/**
+ * Print JSON to an output stream. It does not
+ * validate the content.
+ *
+ * @param out The output stream.
+ * @param value The object.
+ * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
+ */
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::object value);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+#endif
+}}} // namespace simdjson::arm64::ondemand
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
+/* end file simdjson/generic/ondemand/serialization.h for arm64 */
+
+// Deserialization for standard types
+/* including simdjson/generic/ondemand/std_deserialize.h for arm64: #include "simdjson/generic/ondemand/std_deserialize.h" */
+/* begin file simdjson/generic/ondemand/std_deserialize.h for arm64 */
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+#ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_ONDEMAND_DESERIALIZE_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+#include 
+#if SIMDJSON_STATIC_REFLECTION
+#include 
+// #include  // for std::define_static_string - header not available yet
+#endif
+
+namespace simdjson {
+
+//////////////////////////////
+// Number deserialization
+//////////////////////////////
+
+template 
+error_code tag_invoke(deserialize_tag, auto &val, T &out) noexcept {
+  using limits = std::numeric_limits;
+
+  uint64_t x;
+  SIMDJSON_TRY(val.get_uint64().get(x));
+  if (x > (limits::max)()) {
+    return NUMBER_OUT_OF_RANGE;
+  }
+  out = static_cast(x);
+  return SUCCESS;
+}
+
+template 
+error_code tag_invoke(deserialize_tag, auto &val, T &out) noexcept {
+  double x;
+  SIMDJSON_TRY(val.get_double().get(x));
+  out = static_cast(x);
+  return SUCCESS;
+}
+
+template 
+error_code tag_invoke(deserialize_tag, auto &val, T &out) noexcept {
+  using limits = std::numeric_limits;
+
+  int64_t x;
+  SIMDJSON_TRY(val.get_int64().get(x));
+  if (x > (limits::max)() || x < (limits::min)()) {
+    return NUMBER_OUT_OF_RANGE;
+  }
+  out = static_cast(x);
+  return SUCCESS;
+}
+
+//////////////////////////////
+// String deserialization
+//////////////////////////////
+
+// just a character!
+error_code tag_invoke(deserialize_tag, auto &val, char &out) noexcept {
+  std::string_view x;
+  SIMDJSON_TRY(val.get_string().get(x));
+  if(x.size() != 1) {
+    return INCORRECT_TYPE;
+  }
+  out = x[0];
+  return SUCCESS;
+}
+
+// any string-like type (can be constructed from std::string_view)
+template 
+error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(std::is_nothrow_constructible_v) {
+  std::string_view str;
+  SIMDJSON_TRY(val.get_string().get(str));
+  out = T{str};
+  return SUCCESS;
+}
+
+
+/**
+ * STL containers have several constructors including one that takes a single
+ * size argument. Thus, some compilers (Visual Studio) will not be able to
+ * disambiguate between the size and container constructor. Users should
+ * explicitly specify the type of the container as needed: e.g.,
+ * doc.get>().
+ */
+template 
+error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
+  using value_type = typename std::remove_cvref_t::value_type;
+  static_assert(
+      deserializable,
+      "The specified type inside the container must itself be deserializable");
+  static_assert(
+      std::is_default_constructible_v,
+      "The specified type inside the container must default constructible.");
+  arm64::ondemand::array arr;
+  if constexpr (std::is_same_v, arm64::ondemand::array>) {
+    arr = val;
+  } else {
+    SIMDJSON_TRY(val.get_array().get(arr));
+  }
+
+  for (auto v : arr) {
+    if constexpr (concepts::returns_reference) {
+      if (auto const err = v.get().get(concepts::emplace_one(out));
+          err) {
+        // If an error occurs, the empty element that we just inserted gets
+        // removed. We're not using a temp variable because if T is a heavy
+        // type, we want the valid path to be the fast path and the slow path be
+        // the path that has errors in it.
+        if constexpr (requires { out.pop_back(); }) {
+          static_cast(out.pop_back());
+        }
+        return err;
+      }
+    } else {
+      value_type temp;
+      if (auto const err = v.get().get(temp); err) {
+        return err;
+      }
+      concepts::emplace_one(out, std::move(temp));
+    }
+  }
+  return SUCCESS;
+}
+
+
+/**
+ * We want to support std::map and std::unordered_map but only for
+ * string-keyed types.
+ */
+ template 
+error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
+  using value_type = typename std::remove_cvref_t::mapped_type;
+  static_assert(
+     deserializable,
+     "The specified value type inside the container must itself be deserializable");
+  static_assert(
+      std::is_default_constructible_v,
+      "The specified value type inside the container must default constructible.");
+ arm64::ondemand::object obj;
+ SIMDJSON_TRY(val.get_object().get(obj));
+ for (auto field : obj) {
+    std::string_view key;
+    SIMDJSON_TRY(field.unescaped_key().get(key));
+    value_type this_value;
+    SIMDJSON_TRY(field.value().get().get(this_value));
+    [[maybe_unused]] std::pair result = out.emplace(key, this_value);
+    // unclear what to do if the key already exists
+    // if (result.second == false) {
+    //   // key already exists
+    // }
+ }
+ (void)out;
+ return SUCCESS;
+}
+
+template 
+error_code tag_invoke(deserialize_tag, arm64::ondemand::object &obj, T &out) noexcept {
+  using value_type = typename std::remove_cvref_t::mapped_type;
+
+  out.clear();
+  for (auto field : obj) {
+    std::string_view key;
+    SIMDJSON_TRY(field.unescaped_key().get(key));
+
+    arm64::ondemand::value value_obj;
+    SIMDJSON_TRY(field.value().get(value_obj));
+
+    value_type this_value;
+    SIMDJSON_TRY(value_obj.get(this_value));
+    out.emplace(typename T::key_type(key), std::move(this_value));
+  }
+  return SUCCESS;
+}
+
+template 
+error_code tag_invoke(deserialize_tag, arm64::ondemand::value &val, T &out) noexcept {
+  arm64::ondemand::object obj;
+  SIMDJSON_TRY(val.get_object().get(obj));
+  return simdjson::deserialize(obj, out);
+}
+
+template 
+error_code tag_invoke(deserialize_tag, arm64::ondemand::document &doc, T &out) noexcept {
+  arm64::ondemand::object obj;
+  SIMDJSON_TRY(doc.get_object().get(obj));
+  return simdjson::deserialize(obj, out);
+}
+
+template 
+error_code tag_invoke(deserialize_tag, arm64::ondemand::document_reference &doc, T &out) noexcept {
+  arm64::ondemand::object obj;
+  SIMDJSON_TRY(doc.get_object().get(obj));
+  return simdjson::deserialize(obj, out);
+}
+
+
+/**
+ * This CPO (Customization Point Object) will help deserialize into
+ * smart pointers.
+ *
+ * If constructing T is nothrow, this conversion should be nothrow as well since
+ * we return MEMALLOC if we're not able to allocate memory instead of throwing
+ * the error message.
+ *
+ * @tparam T The type inside the smart pointer
+ * @tparam ValT document/value type
+ * @param val document/value
+ * @param out a reference to the smart pointer
+ * @return status of the conversion
+ */
+template 
+error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(nothrow_deserializable::element_type, ValT>) {
+  using element_type = typename std::remove_cvref_t::element_type;
+
+  // For better error messages, don't use these as constraints on
+  // the tag_invoke CPO.
+  static_assert(
+      deserializable,
+      "The specified type inside the unique_ptr must itself be deserializable");
+  static_assert(
+      std::is_default_constructible_v,
+      "The specified type inside the unique_ptr must default constructible.");
+
+  auto ptr = new (std::nothrow) element_type();
+  if (ptr == nullptr) {
+    return MEMALLOC;
+  }
+  SIMDJSON_TRY(val.template get(*ptr));
+  out.reset(ptr);
+  return SUCCESS;
+}
+
+/**
+ * This CPO (Customization Point Object) will help deserialize into optional types.
+ */
+template 
+error_code tag_invoke(deserialize_tag, auto &val, T &out) noexcept(nothrow_deserializable::value_type, decltype(val)>) {
+  using value_type = typename std::remove_cvref_t::value_type;
+
+  // Check if the value is null
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset(); // Set to nullopt
+    return SUCCESS;
+  }
+
+  if (!out) {
+    out.emplace();
+  }
+  SIMDJSON_TRY(val.template get(out.value()));
+  return SUCCESS;
+}
+
+
+#if SIMDJSON_STATIC_REFLECTION
+
+
+template 
+constexpr bool user_defined_type = (std::is_class_v
+&& !std::is_same_v && !std::is_same_v && !concepts::optional_type &&
+!concepts::appendable_containers);
+
+
+template 
+  requires(user_defined_type && std::is_class_v)
+error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept {
+  arm64::ondemand::object obj;
+  if constexpr (std::is_same_v, arm64::ondemand::object>) {
+    obj = val;
+  } else {
+    SIMDJSON_TRY(val.get_object().get(obj));
+  }
+  template for (constexpr auto mem : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+    if constexpr (!std::meta::is_const(mem) && std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+      if constexpr (concepts::optional_type) {
+        // for optional members, it's ok if the key is missing
+        auto error = obj[key].get(out.[:mem:]);
+        if (error && error != NO_SUCH_FIELD) {
+          if(error == NO_SUCH_FIELD) {
+            out.[:mem:].reset();
+            continue;
+          }
+          return error;
+        }
+      } else {
+        // for non-optional members, the key must be present
+        SIMDJSON_TRY(obj[key].get(out.[:mem:]));
+      }
+    }
+  };
+  return simdjson::SUCCESS;
+}
+
+// Support for enum deserialization - deserialize from string representation using expand approach from P2996R12
+template 
+  requires(std::is_enum_v)
+error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept {
+#if SIMDJSON_STATIC_REFLECTION
+  std::string_view str;
+  SIMDJSON_TRY(val.get_string().get(str));
+  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
+  template for (constexpr auto enum_val : enumerators) {
+    if (str == std::meta::identifier_of(enum_val)) {
+      out = [:enum_val:];
+      return SUCCESS;
+    }
+  };
+
+  return INCORRECT_TYPE;
+#else
+  // Fallback: deserialize as integer if reflection not available
+  std::underlying_type_t int_val;
+  SIMDJSON_TRY(val.get(int_val));
+  out = static_cast(int_val);
+  return SUCCESS;
+#endif
+}
+
+template 
+  requires(user_defined_type>)
+error_code tag_invoke(deserialize_tag, simdjson_value &val, std::unique_ptr &out) noexcept {
+  if (!out) {
+    out = std::make_unique();
+    if (!out) {
+      return MEMALLOC;
+    }
+  }
+  if (auto err = val.get(*out)) {
+    out.reset();
+    return err;
+  }
+  return SUCCESS;
+}
+
+template 
+  requires(user_defined_type>)
+error_code tag_invoke(deserialize_tag, simdjson_value &val, std::shared_ptr &out) noexcept {
+  if (!out) {
+    out = std::make_shared();
+    if (!out) {
+      return MEMALLOC;
+    }
+  }
+  if (auto err = val.get(*out)) {
+    out.reset();
+    return err;
+  }
+  return SUCCESS;
+}
+
+#endif // SIMDJSON_STATIC_REFLECTION
+
+////////////////////////////////////////
+// Unique pointers
+////////////////////////////////////////
+error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noexcept {
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset();
+    return SUCCESS;
+  }
+  if (!out) {
+    out = std::make_unique();
+    if (!out) { return MEMALLOC; }
+  }
+  SIMDJSON_TRY(val.get_bool().get(*out));
+  return SUCCESS;
+}
+
+error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noexcept {
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset();
+    return SUCCESS;
+  }
+  if (!out) {
+    out = std::make_unique();
+    if (!out) { return MEMALLOC; }
+  }
+  SIMDJSON_TRY(val.get_int64().get(*out));
+  return SUCCESS;
+}
+
+error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noexcept {
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset();
+    return SUCCESS;
+  }
+  if (!out) {
+    out = std::make_unique();
+    if (!out) { return MEMALLOC; }
+  }
+  SIMDJSON_TRY(val.get_uint64().get(*out));
+  return SUCCESS;
+}
+
+error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noexcept {
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset();
+    return SUCCESS;
+  }
+  if (!out) {
+    out = std::make_unique();
+    if (!out) { return MEMALLOC; }
+  }
+  SIMDJSON_TRY(val.get_double().get(*out));
+  return SUCCESS;
+}
+
+error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noexcept {
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset();
+    return SUCCESS;
+  }
+  if (!out) {
+    out = std::make_unique();
+    if (!out) { return MEMALLOC; }
+  }
+  SIMDJSON_TRY(val.get_string().get(*out));
+  return SUCCESS;
+}
+
+
+////////////////////////////////////////
+// Shared pointers
+////////////////////////////////////////
+error_code tag_invoke(deserialize_tag, auto &val, std::shared_ptr &out) noexcept {
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset();
+    return SUCCESS;
+  }
+  if (!out) {
+    out = std::make_shared();
+    if (!out) { return MEMALLOC; }
+  }
+  SIMDJSON_TRY(val.get_bool().get(*out));
+  return SUCCESS;
+}
+
+error_code tag_invoke(deserialize_tag, auto &val, std::shared_ptr &out) noexcept {
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset();
+    return SUCCESS;
+  }
+  if (!out) {
+    out = std::make_shared();
+    if (!out) { return MEMALLOC; }
+  }
+  SIMDJSON_TRY(val.get_int64().get(*out));
+  return SUCCESS;
+}
+
+error_code tag_invoke(deserialize_tag, auto &val, std::shared_ptr &out) noexcept {
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset();
+    return SUCCESS;
+  }
+  if (!out) {
+    out = std::make_shared();
+    if (!out) { return MEMALLOC; }
+  }
+  SIMDJSON_TRY(val.get_uint64().get(*out));
+  return SUCCESS;
+}
+
+error_code tag_invoke(deserialize_tag, auto &val, std::shared_ptr &out) noexcept {
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset();
+    return SUCCESS;
+  }
+  if (!out) {
+    out = std::make_shared();
+    if (!out) { return MEMALLOC; }
+  }
+  SIMDJSON_TRY(val.get_double().get(*out));
+  return SUCCESS;
+}
+
+error_code tag_invoke(deserialize_tag, auto &val, std::shared_ptr &out) noexcept {
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset();
+    return SUCCESS;
+  }
+  if (!out) {
+    out = std::make_shared();
+    if (!out) { return MEMALLOC; }
+  }
+  SIMDJSON_TRY(val.get_string().get(*out));
+  return SUCCESS;
+}
+
+
+////////////////////////////////////////
+// Explicit optional specializations
+////////////////////////////////////////
+
+////////////////////////////////////////
+// Explicit smart pointer specializations for string and int types
+////////////////////////////////////////
+error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noexcept {
+  // Check if the value is null
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset(); // Set to nullptr
+    return SUCCESS;
+  }
+
+  if (!out) {
+    out = std::make_unique();
+  }
+  std::string_view str;
+  SIMDJSON_TRY(val.get_string().get(str));
+  *out = std::string{str};
+  return SUCCESS;
+}
+
+error_code tag_invoke(deserialize_tag, auto &val, std::shared_ptr &out) noexcept {
+  // Check if the value is null
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset(); // Set to nullptr
+    return SUCCESS;
+  }
+
+  if (!out) {
+    out = std::make_shared();
+  }
+  std::string_view str;
+  SIMDJSON_TRY(val.get_string().get(str));
+  *out = std::string{str};
+  return SUCCESS;
+}
+
+error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noexcept {
+  // Check if the value is null
+  bool is_null_value;
+  SIMDJSON_TRY( val.is_null().get(is_null_value) );
+  if (is_null_value) {
+    out.reset(); // Set to nullptr
+    return SUCCESS;
+  }
+
+  if (!out) {
+    out = std::make_unique();
+  }
+  int64_t temp;
+  SIMDJSON_TRY(val.get_int64().get(temp));
+  *out = static_cast(temp);
+  return SUCCESS;
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+/* end file simdjson/generic/ondemand/std_deserialize.h for arm64 */
+
+// Inline definitions
+/* including simdjson/generic/ondemand/array-inl.h for arm64: #include "simdjson/generic/ondemand/array-inl.h" */
+/* begin file simdjson/generic/ondemand/array-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/jsonpathutil.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array_iterator-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+//
+// ### Live States
+//
+// While iterating or looking up values, depth >= iter->depth. at_start may vary. Error is
+// always SUCCESS:
+//
+// - Start: This is the state when the array is first found and the iterator is just past the `{`.
+//   In this state, at_start == true.
+// - Next: After we hand a scalar value to the user, or an array/object which they then fully
+//   iterate over, the iterator is at the `,` before the next value (or `]`). In this state,
+//   depth == iter->depth, at_start == false, and error == SUCCESS.
+// - Unfinished Business: When we hand an array/object to the user which they do not fully
+//   iterate over, we need to finish that iteration by skipping child values until we reach the
+//   Next state. In this state, depth > iter->depth, at_start == false, and error == SUCCESS.
+//
+// ## Error States
+//
+// In error states, we will yield exactly one more value before stopping. iter->depth == depth
+// and at_start is always false. We decrement after yielding the error, moving to the Finished
+// state.
+//
+// - Chained Error: When the array iterator is part of an error chain--for example, in
+//   `for (auto tweet : doc["tweets"])`, where the tweet element may be missing or not be an
+//   array--we yield that error in the loop, exactly once. In this state, error != SUCCESS and
+//   iter->depth == depth, and at_start == false. We decrement depth when we yield the error.
+// - Missing Comma Error: When the iterator ++ method discovers there is no comma between elements,
+//   we flag that as an error and treat it exactly the same as a Chained Error. In this state,
+//   error == TAPE_ERROR, iter->depth == depth, and at_start == false.
+//
+// ## Terminal State
+//
+// The terminal state has iter->depth < depth. at_start is always false.
+//
+// - Finished: When we have reached a `]` or have reported an error, we are finished. We signal this
+//   by decrementing depth. In this state, iter->depth < depth, at_start == false, and
+//   error == SUCCESS.
+//
+
+simdjson_inline array::array(const value_iterator &_iter) noexcept
+  : iter{_iter}
+{
+}
+
+simdjson_inline simdjson_result array::start(value_iterator &iter) noexcept {
+  // We don't need to know if the array is empty to start iteration, but we do want to know if there
+  // is an error--thus `simdjson_unused`.
+  simdjson_unused bool has_value;
+  SIMDJSON_TRY( iter.start_array().get(has_value) );
+  return array(iter);
+}
+simdjson_inline simdjson_result array::start_root(value_iterator &iter) noexcept {
+  simdjson_unused bool has_value;
+  SIMDJSON_TRY( iter.start_root_array().get(has_value) );
+  return array(iter);
+}
+simdjson_inline simdjson_result array::started(value_iterator &iter) noexcept {
+  bool has_value;
+  SIMDJSON_TRY(iter.started_array().get(has_value));
+  return array(iter);
+}
+
+simdjson_inline simdjson_result array::begin() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  if (!iter.is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
+#endif
+  return array_iterator(iter);
+}
+simdjson_inline simdjson_result array::end() noexcept {
+  return array_iterator(iter);
+}
+simdjson_warn_unused simdjson_warn_unused simdjson_inline error_code array::consume() noexcept {
+  auto error = iter.json_iter().skip_child(iter.depth()-1);
+  if(error) { iter.abandon(); }
+  return error;
+}
+
+simdjson_inline simdjson_result array::raw_json() noexcept {
+  const uint8_t * starting_point{iter.peek_start()};
+  auto error = consume();
+  if(error) { return error; }
+  // After 'consume()', we could be left pointing just beyond the document, but that
+  // is ok because we are not going to dereference the final pointer position, we just
+  // use it to compute the length in bytes.
+  const uint8_t * final_point{iter._json_iter->unsafe_pointer()};
+  return std::string_view(reinterpret_cast(starting_point), size_t(final_point - starting_point));
+}
+
+SIMDJSON_PUSH_DISABLE_WARNINGS
+SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
+simdjson_inline simdjson_result array::count_elements() & noexcept {
+  size_t count{0};
+  // Important: we do not consume any of the values.
+  for(simdjson_unused auto v : *this) { count++; }
+  // The above loop will always succeed, but we want to report errors.
+  if(iter.error()) { return iter.error(); }
+  // We need to move back at the start because we expect users to iterate through
+  // the array after counting the number of elements.
+  iter.reset_array();
+  return count;
+}
+SIMDJSON_POP_DISABLE_WARNINGS
+
+simdjson_inline simdjson_result array::is_empty() & noexcept {
+  bool is_not_empty;
+  auto error = iter.reset_array().get(is_not_empty);
+  if(error) { return error; }
+  return !is_not_empty;
+}
+
+inline simdjson_result array::reset() & noexcept {
+  return iter.reset_array();
+}
+
+inline simdjson_result array::at_pointer(std::string_view json_pointer) noexcept {
+  if (json_pointer[0] != '/') { return INVALID_JSON_POINTER; }
+  json_pointer = json_pointer.substr(1);
+  // - means "the append position" or "the element after the end of the array"
+  // We don't support this, because we're returning a real element, not a position.
+  if (json_pointer == "-") { return INDEX_OUT_OF_BOUNDS; }
+
+  // Read the array index
+  size_t array_index = 0;
+  size_t i;
+  for (i = 0; i < json_pointer.length() && json_pointer[i] != '/'; i++) {
+    uint8_t digit = uint8_t(json_pointer[i] - '0');
+    // Check for non-digit in array index. If it's there, we're trying to get a field in an object
+    if (digit > 9) { return INCORRECT_TYPE; }
+    array_index = array_index*10 + digit;
+  }
+
+  // 0 followed by other digits is invalid
+  if (i > 1 && json_pointer[0] == '0') { return INVALID_JSON_POINTER; } // "JSON pointer array index has other characters after 0"
+
+  // Empty string is invalid; so is a "/" with no digits before it
+  if (i == 0) { return INVALID_JSON_POINTER; } // "Empty string in JSON pointer array index"
+  // Get the child
+  auto child = at(array_index);
+  // If there is an error, it ends here
+  if(child.error()) {
+    return child;
+  }
+
+  // If there is a /, we're not done yet, call recursively.
+  if (i < json_pointer.length()) {
+    child = child.at_pointer(json_pointer.substr(i));
+  }
+  return child;
+}
+
+inline simdjson_result array::at_path(std::string_view json_path) noexcept {
+  auto json_pointer = json_path_to_pointer_conversion(json_path);
+  if (json_pointer == "-1") { return INVALID_JSON_POINTER; }
+  return at_pointer(json_pointer);
+}
+
+inline simdjson_result> array::at_path_with_wildcard(std::string_view json_path) noexcept {
+  std::vector result;
+
+  auto result_pair = get_next_key_and_json_path(json_path);
+  std::string_view key = result_pair.first;
+  std::string_view remaining_path = result_pair.second;
+  // Wildcard case
+  if(key=="*"){
+    for(auto element: *this){
+
+      if(element.error()){
+        return element.error();
+      }
+
+      if(remaining_path.empty()){
+        // Use value_unsafe() because we've already checked for errors above.
+        // The 'element' is a simdjson_result wrapper, and we need to extract
+        // the underlying value. value_unsafe() is safe here because error() returned false.
+        result.push_back(std::move(element).value_unsafe());
+
+      }else{
+        auto nested_result = element.at_path_with_wildcard(remaining_path);
+
+        if(nested_result.error()){
+          return nested_result.error();
+        }
+        // Same logic as above.
+        std::vector nested_matches = std::move(nested_result).value_unsafe();
+
+        result.insert(result.end(),
+                      std::make_move_iterator(nested_matches.begin()),
+                      std::make_move_iterator(nested_matches.end()));
+      }
+    }
+    return result;
+  }else{
+    // Specific index case in which we access the element at the given index
+    size_t idx=0;
+
+    for(char c:key){
+      if(c < '0' || c > '9'){
+        return INVALID_JSON_POINTER;
+      }
+      idx = idx*10 + (c - '0');
+    }
+
+    auto element = at(idx);
+
+    if(element.error()){
+      return element.error();
+    }
+
+    if(remaining_path.empty()){
+      result.push_back(std::move(element).value_unsafe());
+      return result;
+    }else{
+      return element.at_path_with_wildcard(remaining_path);
+    }
+  }
+}
+
+simdjson_inline simdjson_result array::at(size_t index) noexcept {
+  size_t i = 0;
+  for (auto value : *this) {
+    if (i == index) { return value; }
+    i++;
+  }
+  return INDEX_OUT_OF_BOUNDS;
+}
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(
+  arm64::ondemand::array &&value
+) noexcept
+  : implementation_simdjson_result_base(
+      std::forward(value)
+    )
+{
+}
+simdjson_inline simdjson_result::simdjson_result(
+  error_code error
+) noexcept
+  : implementation_simdjson_result_base(error)
+{
+}
+
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+  if (error()) { return error(); }
+  return first.begin();
+}
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
+  if (error()) { return error(); }
+  return first.end();
+}
+simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
+  if (error()) { return error(); }
+  return first.count_elements();
+}
+simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
+  if (error()) { return error(); }
+  return first.is_empty();
+}
+simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
+  if (error()) { return error(); }
+  return first.at(index);
+}
+simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+  if (error()) { return error(); }
+  return first.at_pointer(json_pointer);
+}
+simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+  if (error()) { return error(); }
+  return first.at_path(json_path);
+}
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+  if (error()) { return error(); }
+  return first.at_path_with_wildcard(json_path);
+}
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+  if (error()) { return error(); }
+  return first.raw_json();
+}
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
+/* end file simdjson/generic/ondemand/array-inl.h for arm64 */
+/* including simdjson/generic/ondemand/array_iterator-inl.h for arm64: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/array_iterator-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+simdjson_inline array_iterator::array_iterator(const value_iterator &_iter) noexcept
+  : iter{_iter}
+{}
+
+simdjson_inline simdjson_result array_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   SIMDJSON_ASSUME(!has_been_referenced);
+   has_been_referenced = true;
+#endif
+  if (iter.error()) { iter.abandon(); return iter.error(); }
+  return value(iter.child());
+}
+simdjson_inline bool array_iterator::operator==(const array_iterator &other) const noexcept {
+  return !(*this != other);
+}
+simdjson_inline bool array_iterator::operator!=(const array_iterator &) const noexcept {
+  return iter.is_open();
+}
+simdjson_inline array_iterator &array_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   has_been_referenced = false;
+#endif
+  error_code error;
+  // PERF NOTE this is a safety rail ... users should exit loops as soon as they receive an error, so we'll never get here.
+  // However, it does not seem to make a perf difference, so we add it out of an abundance of caution.
+  if (( error = iter.error() )) { return *this; }
+  if (( error = iter.skip_child() )) { return *this; }
+  if (( error = iter.has_next_element().error() )) { return *this; }
+  return *this;
+}
+
+simdjson_inline bool array_iterator::at_end() const noexcept {
+  return iter.at_end();
+}
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(
+  arm64::ondemand::array_iterator &&value
+) noexcept
+  : arm64::implementation_simdjson_result_base(std::forward(value))
+{
+  first.iter.assert_is_valid();
+}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : arm64::implementation_simdjson_result_base({}, error)
+{
+}
+
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+  if (error()) { return error(); }
+  return *first;
+}
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+  if (!first.iter.is_valid()) { return !error(); }
+  return first == other.first;
+}
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+  if (!first.iter.is_valid()) { return error(); }
+  return first != other.first;
+}
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+  // Clear the error if there is one, so we don't yield it twice
+  if (error()) { second = SUCCESS; return *this; }
+  ++(first);
+  return *this;
+}
+simdjson_inline bool simdjson_result::at_end() const noexcept {
+  return !first.iter.is_valid() || first.at_end();
+}
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
+/* end file simdjson/generic/ondemand/array_iterator-inl.h for arm64 */
+/* including simdjson/generic/ondemand/value-inl.h for arm64: #include "simdjson/generic/ondemand/value-inl.h" */
+/* begin file simdjson/generic/ondemand/value-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+simdjson_inline value::value(const value_iterator &_iter) noexcept
+  : iter{_iter}
+{
+}
+simdjson_inline value value::start(const value_iterator &iter) noexcept {
+  return iter;
+}
+simdjson_inline value value::resume(const value_iterator &iter) noexcept {
+  return iter;
+}
+
+simdjson_inline simdjson_result value::get_array() noexcept {
+  return array::start(iter);
+}
+simdjson_inline simdjson_result value::get_object() noexcept {
+  return object::start(iter);
+}
+simdjson_inline simdjson_result value::start_or_resume_object() noexcept {
+  if (iter.at_start()) {
+    return get_object();
+  } else {
+    return object::resume(iter);
+  }
+}
+
+simdjson_inline simdjson_result value::get_raw_json_string() noexcept {
+  return iter.get_raw_json_string();
+}
+simdjson_inline simdjson_result value::get_string(bool allow_replacement) noexcept {
+  return iter.get_string(allow_replacement);
+}
+template 
+simdjson_warn_unused simdjson_inline error_code value::get_string(string_type& receiver, bool allow_replacement) noexcept {
+  return iter.get_string(receiver, allow_replacement);
+}
+simdjson_inline simdjson_result value::get_wobbly_string() noexcept {
+  return iter.get_wobbly_string();
+}
+simdjson_inline simdjson_result value::get_double() noexcept {
+  return iter.get_double();
+}
+simdjson_inline simdjson_result value::get_double_in_string() noexcept {
+  return iter.get_double_in_string();
+}
+simdjson_inline simdjson_result value::get_uint64() noexcept {
+  return iter.get_uint64();
+}
+simdjson_inline simdjson_result value::get_uint64_in_string() noexcept {
+  return iter.get_uint64_in_string();
+}
+simdjson_inline simdjson_result value::get_int64() noexcept {
+  return iter.get_int64();
+}
+simdjson_inline simdjson_result value::get_int64_in_string() noexcept {
+  return iter.get_int64_in_string();
+}
+simdjson_inline simdjson_result value::get_bool() noexcept {
+  return iter.get_bool();
+}
+simdjson_inline simdjson_result value::is_null() noexcept {
+  return iter.is_null();
+}
+
+template<> simdjson_inline simdjson_result value::get() noexcept { return get_array(); }
+template<> simdjson_inline simdjson_result value::get() noexcept { return get_object(); }
+template<> simdjson_inline simdjson_result value::get() noexcept { return get_raw_json_string(); }
+template<> simdjson_inline simdjson_result value::get() noexcept { return get_string(false); }
+template<> simdjson_inline simdjson_result value::get() noexcept { return get_number(); }
+template<> simdjson_inline simdjson_result value::get() noexcept { return get_double(); }
+template<> simdjson_inline simdjson_result value::get() noexcept { return get_uint64(); }
+template<> simdjson_inline simdjson_result value::get() noexcept { return get_int64(); }
+template<> simdjson_inline simdjson_result value::get() noexcept { return get_bool(); }
+
+
+template<> simdjson_warn_unused simdjson_inline error_code value::get(array& out) noexcept { return get_array().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code value::get(object& out) noexcept { return get_object().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code value::get(raw_json_string& out) noexcept { return get_raw_json_string().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code value::get(std::string_view& out) noexcept { return get_string(false).get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code value::get(number& out) noexcept { return get_number().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code value::get(double& out) noexcept { return get_double().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code value::get(uint64_t& out) noexcept { return get_uint64().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code value::get(int64_t& out) noexcept { return get_int64().get(out); }
+template<>  simdjson_warn_unused simdjson_inline error_code value::get(bool& out) noexcept { return get_bool().get(out); }
+
+#if SIMDJSON_EXCEPTIONS
+template 
+simdjson_inline value::operator T() noexcept(false) {
+  return get();
+}
+simdjson_inline value::operator array() noexcept(false) {
+  return get_array();
+}
+simdjson_inline value::operator object() noexcept(false) {
+  return get_object();
+}
+simdjson_inline value::operator uint64_t() noexcept(false) {
+  return get_uint64();
+}
+simdjson_inline value::operator int64_t() noexcept(false) {
+  return get_int64();
+}
+simdjson_inline value::operator double() noexcept(false) {
+  return get_double();
+}
+simdjson_inline value::operator std::string_view() noexcept(false) {
+  return get_string(false);
+}
+simdjson_inline value::operator raw_json_string() noexcept(false) {
+  return get_raw_json_string();
+}
+simdjson_inline value::operator bool() noexcept(false) {
+  return get_bool();
+}
+#endif
+
+simdjson_inline simdjson_result value::begin() & noexcept {
+  return get_array().begin();
+}
+simdjson_inline simdjson_result value::end() & noexcept {
+  return {};
+}
+simdjson_inline simdjson_result value::count_elements() & noexcept {
+  simdjson_result answer;
+  auto a = get_array();
+  answer = a.count_elements();
+  // count_elements leaves you pointing inside the array, at the first element.
+  // We need to move back so that the user can create a new array (which requires that
+  // we point at '[').
+  iter.move_at_start();
+  return answer;
+}
+simdjson_inline simdjson_result value::count_fields() & noexcept {
+  simdjson_result answer;
+  auto a = get_object();
+  answer = a.count_fields();
+  iter.move_at_start();
+  return answer;
+}
+simdjson_inline simdjson_result value::at(size_t index) noexcept {
+  auto a = get_array();
+  return a.at(index);
+}
+
+simdjson_inline simdjson_result value::find_field(std::string_view key) noexcept {
+  return start_or_resume_object().find_field(key);
+}
+simdjson_inline simdjson_result value::find_field(const char *key) noexcept {
+  return start_or_resume_object().find_field(key);
+}
+
+simdjson_inline simdjson_result value::find_field_unordered(std::string_view key) noexcept {
+  return start_or_resume_object().find_field_unordered(key);
+}
+simdjson_inline simdjson_result value::find_field_unordered(const char *key) noexcept {
+  return start_or_resume_object().find_field_unordered(key);
+}
+
+simdjson_inline simdjson_result value::operator[](std::string_view key) noexcept {
+  return start_or_resume_object()[key];
+}
+simdjson_inline simdjson_result value::operator[](const char *key) noexcept {
+  return start_or_resume_object()[key];
+}
+
+simdjson_inline simdjson_result value::type() noexcept {
+  return iter.type();
+}
+
+simdjson_inline simdjson_result value::is_scalar() noexcept {
+  json_type this_type;
+  auto error = type().get(this_type);
+  if(error) { return error; }
+  return ! ((this_type == json_type::array) || (this_type == json_type::object));
+}
+
+simdjson_inline simdjson_result value::is_string() noexcept {
+  json_type this_type;
+  auto error = type().get(this_type);
+  if(error) { return error; }
+  return (this_type == json_type::string);
+}
+
+
+simdjson_inline bool value::is_negative() noexcept {
+  return iter.is_negative();
+}
+
+simdjson_inline simdjson_result value::is_integer() noexcept {
+  return iter.is_integer();
+}
+simdjson_warn_unused simdjson_inline simdjson_result value::get_number_type() noexcept {
+  return iter.get_number_type();
+}
+simdjson_warn_unused simdjson_inline simdjson_result value::get_number() noexcept {
+  return iter.get_number();
+}
+
+simdjson_inline std::string_view value::raw_json_token() noexcept {
+  return std::string_view(reinterpret_cast(iter.peek_start()), iter.peek_start_length());
+}
+
+simdjson_inline simdjson_result value::raw_json() noexcept {
+  json_type t;
+  SIMDJSON_TRY(type().get(t));
+  switch (t)
+  {
+    case json_type::array: {
+      ondemand::array array;
+      SIMDJSON_TRY(get_array().get(array));
+      return array.raw_json();
+    }
+    case json_type::object: {
+      ondemand::object object;
+      SIMDJSON_TRY(get_object().get(object));
+      return object.raw_json();
+    }
+    default:
+      return raw_json_token();
+  }
+}
+
+simdjson_inline simdjson_result value::current_location() noexcept {
+  return iter.json_iter().current_location();
+}
+
+simdjson_inline int32_t value::current_depth() const noexcept{
+  return iter.json_iter().depth();
+}
+
+inline bool is_pointer_well_formed(std::string_view json_pointer) noexcept {
+  if (simdjson_unlikely(json_pointer.empty())) { // can't be
+    return false;
+  }
+  if (simdjson_unlikely(json_pointer[0] != '/')) {
+    return false;
+  }
+  size_t escape = json_pointer.find('~');
+  if (escape == std::string_view::npos) {
+    return true;
+  }
+  if (escape == json_pointer.size() - 1) {
+    return false;
+  }
+  if (json_pointer[escape + 1] != '0' && json_pointer[escape + 1] != '1') {
+    return false;
+  }
+  return true;
+}
+
+simdjson_inline simdjson_result value::at_pointer(std::string_view json_pointer) noexcept {
+  json_type t;
+  SIMDJSON_TRY(type().get(t));
+  switch (t)
+  {
+    case json_type::array:
+      return (*this).get_array().at_pointer(json_pointer);
+    case json_type::object:
+      return (*this).get_object().at_pointer(json_pointer);
+    default:
+      // a non-empty string can be invalid, or accessing a primitive (issue 2154)
+      if (is_pointer_well_formed(json_pointer)) {
+        return NO_SUCH_FIELD;
+      }
+      return INVALID_JSON_POINTER;
+  }
+}
+
+simdjson_inline simdjson_result value::at_path(std::string_view json_path) noexcept {
+  json_type t;
+  SIMDJSON_TRY(type().get(t));
+  switch (t) {
+  case json_type::array:
+      return (*this).get_array().at_path(json_path);
+  case json_type::object:
+      return (*this).get_object().at_path(json_path);
+  default:
+      return INVALID_JSON_POINTER;
+  }
+}
+
+inline simdjson_result> value::at_path_with_wildcard(std::string_view json_path) noexcept {
+  json_type t;
+  SIMDJSON_TRY(type().get(t));
+  switch (t) {
+  case json_type::array:
+      return (*this).get_array().at_path_with_wildcard(json_path);
+  case json_type::object:
+      return (*this).get_object().at_path_with_wildcard(json_path);
+  default:
+      return INVALID_JSON_POINTER;
+  }
+}
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(
+  arm64::ondemand::value &&value
+) noexcept :
+    implementation_simdjson_result_base(
+      std::forward(value)
+    )
+{
+}
+simdjson_inline simdjson_result::simdjson_result(
+  error_code error
+) noexcept :
+    implementation_simdjson_result_base(error)
+{
+}
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+  if (error()) { return error(); }
+  return first.count_elements();
+}
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+  if (error()) { return error(); }
+  return first.count_fields();
+}
+simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
+  if (error()) { return error(); }
+  return first.at(index);
+}
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+  if (error()) { return error(); }
+  return first.begin();
+}
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+  if (error()) { return error(); }
+  return {};
+}
+
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
+  if (error()) { return error(); }
+  return first.find_field(key);
+}
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
+  if (error()) { return error(); }
+  return first.find_field(key);
+}
+
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
+  if (error()) { return error(); }
+  return first.find_field_unordered(key);
+}
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
+  if (error()) { return error(); }
+  return first.find_field_unordered(key);
+}
+
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
+  if (error()) { return error(); }
+  return first[key];
+}
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
+  if (error()) { return error(); }
+  return first[key];
+}
+
+simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
+  if (error()) { return error(); }
+  return first.get_array();
+}
+simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
+  if (error()) { return error(); }
+  return first.get_object();
+}
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+  if (error()) { return error(); }
+  return first.get_uint64();
+}
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_uint64_in_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+  if (error()) { return error(); }
+  return first.get_int64();
+}
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_int64_in_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+  if (error()) { return error(); }
+  return first.get_double();
+}
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_double_in_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+  if (error()) { return error(); }
+  return first.get_string(allow_replacement);
+}
+template 
+simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+  if (error()) { return error(); }
+  return first.get_string(receiver, allow_replacement);
+}
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_wobbly_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_raw_json_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+  if (error()) { return error(); }
+  return first.get_bool();
+}
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+  if (error()) { return error(); }
+  return first.is_null();
+}
+
+template<> simdjson_inline error_code simdjson_result::get(arm64::ondemand::value &out) noexcept {
+  if (error()) { return error(); }
+  out = first;
+  return SUCCESS;
+}
+
+template simdjson_inline simdjson_result simdjson_result::get() noexcept {
+  if (error()) { return error(); }
+  return first.get();
+}
+template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
+  if (error()) { return error(); }
+  return first.get(out);
+}
+
+template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
+  if (error()) { return error(); }
+  return std::move(first);
+}
+
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
+  if (error()) { return error(); }
+  return first.type();
+}
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+  if (error()) { return error(); }
+  return first.is_scalar();
+}
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+  if (error()) { return error(); }
+  return first.is_string();
+}
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+  if (error()) { return error(); }
+  return first.is_negative();
+}
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+  if (error()) { return error(); }
+  return first.is_integer();
+}
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+  if (error()) { return error(); }
+  return first.get_number_type();
+}
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+  if (error()) { return error(); }
+  return first.get_number();
+}
+#if SIMDJSON_EXCEPTIONS
+template 
+simdjson_inline simdjson_result::operator T() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first.get();
+}
+simdjson_inline simdjson_result::operator arm64::ondemand::array() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator arm64::ondemand::object() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator double() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator arm64::ondemand::raw_json_string() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+#endif
+
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+  if (error()) { return error(); }
+  return first.raw_json_token();
+}
+
+simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
+  if (error()) { return error(); }
+  return first.raw_json();
+}
+
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+  if (error()) { return error(); }
+  return first.current_location();
+}
+
+simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
+  if (error()) { return error(); }
+  return first.current_depth();
+}
+
+simdjson_inline simdjson_result simdjson_result::at_pointer(
+    std::string_view json_pointer) noexcept {
+  if (error()) {
+      return error();
+  }
+  return first.at_pointer(json_pointer);
+}
+
+simdjson_inline simdjson_result simdjson_result::at_path(
+      std::string_view json_path) noexcept {
+  if (error()) {
+    return error();
+  }
+  return first.at_path(json_path);
+}
+
+inline simdjson_result> simdjson_result::at_path_with_wildcard(
+      std::string_view json_path) noexcept {
+  if (error()) {
+    return error();
+  }
+  return first.at_path_with_wildcard(json_path);
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H
+/* end file simdjson/generic/ondemand/value-inl.h for arm64 */
+/* including simdjson/generic/ondemand/document-inl.h for arm64: #include "simdjson/generic/ondemand/document-inl.h" */
+/* begin file simdjson/generic/ondemand/document-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_iterator-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/deserialize.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+simdjson_inline document::document(ondemand::json_iterator &&_iter) noexcept
+  : iter{std::forward(_iter)}
+{
+  logger::log_start_value(iter, "document");
+}
+
+simdjson_inline document document::start(json_iterator &&iter) noexcept {
+  return document(std::forward(iter));
+}
+
+inline void document::rewind() noexcept {
+  iter.rewind();
+}
+
+inline std::string document::to_debug_string() noexcept {
+  return iter.to_string();
+}
+
+inline simdjson_result document::current_location() const noexcept {
+  return iter.current_location();
+}
+
+inline int32_t document::current_depth() const noexcept {
+  return iter.depth();
+}
+
+inline bool document::at_end() const noexcept {
+  return iter.at_end();
+}
+
+
+inline bool document::is_alive() noexcept {
+  return iter.is_alive();
+}
+simdjson_inline value_iterator document::resume_value_iterator() noexcept {
+  return value_iterator(&iter, 1, iter.root_position());
+}
+simdjson_inline value_iterator document::get_root_value_iterator() noexcept {
+  return resume_value_iterator();
+}
+simdjson_inline simdjson_result document::start_or_resume_object() noexcept {
+  if (iter.at_root()) {
+    return get_object();
+  } else {
+    return object::resume(resume_value_iterator());
+  }
+}
+simdjson_inline simdjson_result document::get_value() noexcept {
+  // Make sure we start any arrays or objects before returning, so that start_root_()
+  // gets called.
+
+  // It is the convention throughout the code that  the macro `SIMDJSON_DEVELOPMENT_CHECKS` determines whether
+  // we check for OUT_OF_ORDER_ITERATION. Proper on::demand code should never trigger this error.
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  if (!iter.at_root()) { return OUT_OF_ORDER_ITERATION; }
+#endif
+  // assert_at_root() serves two purposes: in Debug mode, whether or not
+  // SIMDJSON_DEVELOPMENT_CHECKS is set or not, it checks that we are at the root of
+  // the document (this will typically be redundant). In release mode, it generates
+  // SIMDJSON_ASSUME statements to allow the compiler to make assumptions.
+  iter.assert_at_root();
+  switch (*iter.peek()) {
+    case '[': {
+      // The following lines check that the document ends with ].
+      auto value_iterator = get_root_value_iterator();
+      auto error = value_iterator.check_root_array();
+      if(error) { return error; }
+      return value(get_root_value_iterator());
+    }
+    case '{': {
+      // The following lines would check that the document ends with }.
+      auto value_iterator = get_root_value_iterator();
+      auto error = value_iterator.check_root_object();
+      if(error) { return error; }
+      return value(get_root_value_iterator());
+    }
+    default:
+      // Unfortunately, scalar documents are a special case in simdjson and they cannot
+      // be safely converted to value instances.
+      return SCALAR_DOCUMENT_AS_VALUE;
+  }
+}
+simdjson_inline simdjson_result document::get_array() & noexcept {
+  auto value = get_root_value_iterator();
+  return array::start_root(value);
+}
+simdjson_inline simdjson_result document::get_object() & noexcept {
+  auto value = get_root_value_iterator();
+  return object::start_root(value);
+}
+
+/**
+ * We decided that calling 'get_double()' on the JSON document '1.233 blabla' should
+ * give an error, so we check for trailing content. We want to disallow trailing
+ * content.
+ * Thus, in several implementations below, we pass a 'true' parameter value to
+ * a get_root_value_iterator() method: this indicates that we disallow trailing content.
+ */
+
+simdjson_inline simdjson_result document::get_uint64() noexcept {
+  return get_root_value_iterator().get_root_uint64(true);
+}
+simdjson_inline simdjson_result document::get_uint64_in_string() noexcept {
+  return get_root_value_iterator().get_root_uint64_in_string(true);
+}
+simdjson_inline simdjson_result document::get_int64() noexcept {
+  return get_root_value_iterator().get_root_int64(true);
+}
+simdjson_inline simdjson_result document::get_int64_in_string() noexcept {
+  return get_root_value_iterator().get_root_int64_in_string(true);
+}
+simdjson_inline simdjson_result document::get_double() noexcept {
+  return get_root_value_iterator().get_root_double(true);
+}
+simdjson_inline simdjson_result document::get_double_in_string() noexcept {
+  return get_root_value_iterator().get_root_double_in_string(true);
+}
+simdjson_inline simdjson_result document::get_string(bool allow_replacement) noexcept {
+  return get_root_value_iterator().get_root_string(true, allow_replacement);
+}
+template 
+simdjson_warn_unused simdjson_inline error_code document::get_string(string_type& receiver, bool allow_replacement) noexcept {
+  return get_root_value_iterator().get_root_string(receiver, true, allow_replacement);
+}
+simdjson_inline simdjson_result document::get_wobbly_string() noexcept {
+  return get_root_value_iterator().get_root_wobbly_string(true);
+}
+simdjson_inline simdjson_result document::get_raw_json_string() noexcept {
+  return get_root_value_iterator().get_root_raw_json_string(true);
+}
+simdjson_inline simdjson_result document::get_bool() noexcept {
+  return get_root_value_iterator().get_root_bool(true);
+}
+simdjson_inline simdjson_result document::is_null() noexcept {
+  return get_root_value_iterator().is_root_null(true);
+}
+
+template<> simdjson_inline simdjson_result document::get() & noexcept { return get_array(); }
+template<> simdjson_inline simdjson_result document::get() & noexcept { return get_object(); }
+template<> simdjson_inline simdjson_result document::get() & noexcept { return get_raw_json_string(); }
+template<> simdjson_inline simdjson_result document::get() & noexcept { return get_string(false); }
+template<> simdjson_inline simdjson_result document::get() & noexcept { return get_double(); }
+template<> simdjson_inline simdjson_result document::get() & noexcept { return get_uint64(); }
+template<> simdjson_inline simdjson_result document::get() & noexcept { return get_int64(); }
+template<> simdjson_inline simdjson_result document::get() & noexcept { return get_bool(); }
+template<> simdjson_inline simdjson_result document::get() & noexcept { return get_value(); }
+
+template<> simdjson_warn_unused simdjson_inline error_code document::get(array& out) & noexcept { return get_array().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code document::get(object& out) & noexcept { return get_object().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code document::get(raw_json_string& out) & noexcept { return get_raw_json_string().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code document::get(std::string_view& out) & noexcept { return get_string(false).get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code document::get(double& out) & noexcept { return get_double().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code document::get(uint64_t& out) & noexcept { return get_uint64().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code document::get(int64_t& out) & noexcept { return get_int64().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code document::get(bool& out) & noexcept { return get_bool().get(out); }
+template<> simdjson_warn_unused simdjson_inline error_code document::get(value& out) & noexcept { return get_value().get(out); }
+
+template<> simdjson_deprecated simdjson_inline simdjson_result document::get() && noexcept { return get_raw_json_string(); }
+template<> simdjson_deprecated simdjson_inline simdjson_result document::get() && noexcept { return get_string(false); }
+template<> simdjson_deprecated simdjson_inline simdjson_result document::get() && noexcept { return std::forward(*this).get_double(); }
+template<> simdjson_deprecated simdjson_inline simdjson_result document::get() && noexcept { return std::forward(*this).get_uint64(); }
+template<> simdjson_deprecated simdjson_inline simdjson_result document::get() && noexcept { return std::forward(*this).get_int64(); }
+template<> simdjson_deprecated simdjson_inline simdjson_result document::get() && noexcept { return std::forward(*this).get_bool(); }
+template<> simdjson_deprecated simdjson_inline simdjson_result document::get() && noexcept { return get_value(); }
+
+#if SIMDJSON_EXCEPTIONS
+template 
+simdjson_deprecated simdjson_inline document::operator T() && noexcept(false) { return get(); }
+template 
+simdjson_inline document::operator T() & noexcept(false) { return get(); }
+simdjson_inline document::operator array() & noexcept(false) { return get_array(); }
+simdjson_inline document::operator object() & noexcept(false) { return get_object(); }
+simdjson_inline document::operator uint64_t() noexcept(false) { return get_uint64(); }
+simdjson_inline document::operator int64_t() noexcept(false) { return get_int64(); }
+simdjson_inline document::operator double() noexcept(false) { return get_double(); }
+simdjson_inline document::operator std::string_view() noexcept(false) simdjson_lifetime_bound { return get_string(false); }
+simdjson_inline document::operator raw_json_string() noexcept(false) simdjson_lifetime_bound { return get_raw_json_string(); }
+simdjson_inline document::operator bool() noexcept(false) { return get_bool(); }
+simdjson_inline document::operator value() noexcept(false) { return get_value(); }
+
+#endif
+simdjson_inline simdjson_result document::count_elements() & noexcept {
+  auto a = get_array();
+  simdjson_result answer = a.count_elements();
+  /* If there was an array, we are now left pointing at its first element. */
+  if(answer.error() == SUCCESS) { rewind(); }
+  return answer;
+}
+simdjson_inline simdjson_result document::count_fields() & noexcept {
+  auto a = get_object();
+  simdjson_result answer = a.count_fields();
+  /* If there was an object, we are now left pointing at its first element. */
+  if(answer.error() == SUCCESS) { rewind(); }
+  return answer;
+}
+simdjson_inline simdjson_result document::at(size_t index) & noexcept {
+  auto a = get_array();
+  return a.at(index);
+}
+simdjson_inline simdjson_result document::begin() & noexcept {
+  return get_array().begin();
+}
+simdjson_inline simdjson_result document::end() & noexcept {
+  return {};
+}
+
+simdjson_inline simdjson_result document::find_field(std::string_view key) & noexcept {
+  return start_or_resume_object().find_field(key);
+}
+simdjson_inline simdjson_result document::find_field(const char *key) & noexcept {
+  return start_or_resume_object().find_field(key);
+}
+simdjson_inline simdjson_result document::find_field_unordered(std::string_view key) & noexcept {
+  return start_or_resume_object().find_field_unordered(key);
+}
+simdjson_inline simdjson_result document::find_field_unordered(const char *key) & noexcept {
+  return start_or_resume_object().find_field_unordered(key);
+}
+simdjson_inline simdjson_result document::operator[](std::string_view key) & noexcept {
+  return start_or_resume_object()[key];
+}
+simdjson_inline simdjson_result document::operator[](const char *key) & noexcept {
+  return start_or_resume_object()[key];
+}
+
+simdjson_warn_unused simdjson_inline error_code document::consume() noexcept {
+  bool scalar = false;
+  auto error = is_scalar().get(scalar);
+  if(error) { return error; }
+  if(scalar) {
+    iter.return_current_and_advance();
+    return SUCCESS;
+  }
+  error = iter.skip_child(0);
+  if(error) { iter.abandon(); }
+  return error;
+}
+
+simdjson_inline simdjson_result document::raw_json() noexcept {
+  auto _iter = get_root_value_iterator();
+  const uint8_t * starting_point{_iter.peek_start()};
+  auto error = consume();
+  if(error) { return error; }
+  // After 'consume()', we could be left pointing just beyond the document, but that
+  // is ok because we are not going to dereference the final pointer position, we just
+  // use it to compute the length in bytes.
+  const uint8_t * final_point{iter.unsafe_pointer()};
+  return std::string_view(reinterpret_cast(starting_point), size_t(final_point - starting_point));
+}
+
+simdjson_inline simdjson_result document::type() noexcept {
+  return get_root_value_iterator().type();
+}
+
+simdjson_inline simdjson_result document::is_scalar() noexcept {
+  // For more speed, we could do:
+  // return iter.is_single_token();
+  json_type this_type;
+  auto error = type().get(this_type);
+  if(error) { return error; }
+  return ! ((this_type == json_type::array) || (this_type == json_type::object));
+}
+
+simdjson_inline simdjson_result document::is_string() noexcept {
+  json_type this_type;
+  auto error = type().get(this_type);
+  if(error) { return error; }
+  return (this_type == json_type::string);
+}
+
+simdjson_inline bool document::is_negative() noexcept {
+  return get_root_value_iterator().is_root_negative();
+}
+
+simdjson_inline simdjson_result document::is_integer() noexcept {
+  return get_root_value_iterator().is_root_integer(true);
+}
+
+simdjson_inline simdjson_result document::get_number_type() noexcept {
+  return get_root_value_iterator().get_root_number_type(true);
+}
+
+simdjson_inline simdjson_result document::get_number() noexcept {
+  return get_root_value_iterator().get_root_number(true);
+}
+
+
+simdjson_inline simdjson_result document::raw_json_token() noexcept {
+  auto _iter = get_root_value_iterator();
+  return std::string_view(reinterpret_cast(_iter.peek_start()), _iter.peek_root_length());
+}
+
+simdjson_inline simdjson_result document::at_pointer(std::string_view json_pointer) noexcept {
+  rewind(); // Rewind the document each time at_pointer is called
+  if (json_pointer.empty()) {
+    return this->get_value();
+  }
+  json_type t;
+  SIMDJSON_TRY(type().get(t));
+  switch (t)
+  {
+    case json_type::array:
+      return (*this).get_array().at_pointer(json_pointer);
+    case json_type::object:
+      return (*this).get_object().at_pointer(json_pointer);
+    default:
+      return INVALID_JSON_POINTER;
+  }
+}
+
+simdjson_inline simdjson_result document::at_path(std::string_view json_path) noexcept {
+  rewind(); // Rewind the document each time at_pointer is called
+  if (json_path.empty()) {
+      return this->get_value();
+  }
+  json_type t;
+  SIMDJSON_TRY(type().get(t));
+  switch (t) {
+  case json_type::array:
+      return (*this).get_array().at_path(json_path);
+  case json_type::object:
+      return (*this).get_object().at_path(json_path);
+  default:
+      return INVALID_JSON_POINTER;
+  }
+}
+
+simdjson_inline simdjson_result> document::at_path_with_wildcard(std::string_view json_path) noexcept {
+  rewind(); // Rewind the document each time at_path_with_wildcard is called
+  if (json_path.empty()) {
+      return INVALID_JSON_POINTER;
+  }
+  json_type t;
+  SIMDJSON_TRY(type().get(t));
+  switch (t) {
+  case json_type::array:
+      return (*this).get_array().at_path_with_wildcard(json_path);
+  case json_type::object:
+      return (*this).get_object().at_path_with_wildcard(json_path);
+  default:
+      return INVALID_JSON_POINTER;
+  }
+}
+
+#if SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
+
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_inline error_code document::extract_into(T& out) & noexcept {
+  // Helper to check if a field name matches any of the requested fields
+  auto should_extract = [](std::string_view field_name) constexpr -> bool {
+    return ((FieldNames.view() == field_name) || ...);
+  };
+
+  // Iterate through all members of T using reflection
+  template for (constexpr auto mem : std::define_static_array(
+      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+
+    if constexpr (!std::meta::is_const(mem) && std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+
+      // Only extract this field if it's in our list of requested fields
+      if constexpr (should_extract(key)) {
+        // Try to find and extract the field
+        if constexpr (concepts::optional_type) {
+          // For optional fields, it's ok if they're missing
+          auto field_result = find_field_unordered(key);
+          if (!field_result.error()) {
+            auto error = field_result.get(out.[:mem:]);
+            if (error && error != NO_SUCH_FIELD) {
+              return error;
+            }
+          } else if (field_result.error() != NO_SUCH_FIELD) {
+            return field_result.error();
+          } else {
+            out.[:mem:].reset();
+          }
+        } else {
+          // For required fields (in the requested list), fail if missing
+          SIMDJSON_TRY((*this)[key].get(out.[:mem:]));
+        }
+      }
+    }
+  };
+
+  return SUCCESS;
+}
+
+#endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(
+  arm64::ondemand::document &&value
+) noexcept :
+    implementation_simdjson_result_base(
+      std::forward(value)
+    )
+{
+}
+simdjson_inline simdjson_result::simdjson_result(
+  error_code error
+) noexcept :
+    implementation_simdjson_result_base(
+      error
+    )
+{
+}
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+  if (error()) { return error(); }
+  return first.count_elements();
+}
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+  if (error()) { return error(); }
+  return first.count_fields();
+}
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+  if (error()) { return error(); }
+  return first.at(index);
+}
+simdjson_inline error_code simdjson_result::rewind() noexcept {
+  if (error()) { return error(); }
+  first.rewind();
+  return SUCCESS;
+}
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+  if (error()) { return error(); }
+  return first.begin();
+}
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+  return {};
+}
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+  if (error()) { return error(); }
+  return first.find_field_unordered(key);
+}
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+  if (error()) { return error(); }
+  return first.find_field_unordered(key);
+}
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+  if (error()) { return error(); }
+  return first[key];
+}
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+  if (error()) { return error(); }
+  return first[key];
+}
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+  if (error()) { return error(); }
+  return first.find_field(key);
+}
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+  if (error()) { return error(); }
+  return first.find_field(key);
+}
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+  if (error()) { return error(); }
+  return first.get_array();
+}
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+  if (error()) { return error(); }
+  return first.get_object();
+}
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+  if (error()) { return error(); }
+  return first.get_uint64();
+}
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_uint64_in_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+  if (error()) { return error(); }
+  return first.get_int64();
+}
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_int64_in_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+  if (error()) { return error(); }
+  return first.get_double();
+}
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_double_in_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+  if (error()) { return error(); }
+  return first.get_string(allow_replacement);
+}
+template 
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+  if (error()) { return error(); }
+  return first.get_string(receiver, allow_replacement);
+}
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_wobbly_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_raw_json_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+  if (error()) { return error(); }
+  return first.get_bool();
+}
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+  if (error()) { return error(); }
+  return first.get_value();
+}
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+  if (error()) { return error(); }
+  return first.is_null();
+}
+
+template
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+  if (error()) { return error(); }
+  return first.get();
+}
+template
+simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+  if (error()) { return error(); }
+  return std::forward(first).get();
+}
+template
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+  if (error()) { return error(); }
+  return first.get(out);
+}
+template
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+  if (error()) { return error(); }
+  return std::forward(first).get(out);
+}
+
+template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
+template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+  if (error()) { return error(); }
+  return std::forward(first);
+}
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(arm64::ondemand::document &out) & noexcept = delete;
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(arm64::ondemand::document &out) && noexcept {
+  if (error()) { return error(); }
+  out = std::forward(first);
+  return SUCCESS;
+}
+
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
+  if (error()) { return error(); }
+  return first.type();
+}
+
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+  if (error()) { return error(); }
+  return first.is_scalar();
+}
+
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+  if (error()) { return error(); }
+  return first.is_string();
+}
+
+simdjson_inline bool simdjson_result::is_negative() noexcept {
+  if (error()) { return error(); }
+  return first.is_negative();
+}
+
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+  if (error()) { return error(); }
+  return first.is_integer();
+}
+
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+  if (error()) { return error(); }
+  return first.get_number_type();
+}
+
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+  if (error()) { return error(); }
+  return first.get_number();
+}
+
+
+#if SIMDJSON_EXCEPTIONS
+template ::value == false>::type>
+simdjson_inline simdjson_result::operator T() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator arm64::ondemand::array() & noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator arm64::ondemand::object() & noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator double() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator arm64::ondemand::raw_json_string() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator arm64::ondemand::value() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+#endif
+
+
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+  if (error()) { return error(); }
+  return first.current_location();
+}
+
+simdjson_inline bool simdjson_result::at_end() const noexcept {
+  if (error()) { return error(); }
+  return first.at_end();
+}
+
+
+simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
+  if (error()) { return error(); }
+  return first.current_depth();
+}
+
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+  if (error()) { return error(); }
+  return first.raw_json_token();
+}
+
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+  if (error()) { return error(); }
+  return first.at_pointer(json_pointer);
+}
+
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+  if (error()) { return error(); }
+  return first.at_path(json_path);
+}
+
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+  if (error()) { return error(); }
+  return first.at_path_with_wildcard(json_path);
+}
+
+#if SIMDJSON_STATIC_REFLECTION
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+  if (error()) { return error(); }
+  return first.extract_into(out);
+}
+#endif // SIMDJSON_STATIC_REFLECTION
+
+} // namespace simdjson
+
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+simdjson_inline document_reference::document_reference() noexcept : doc{nullptr} {}
+simdjson_inline document_reference::document_reference(document &d) noexcept : doc(&d) {}
+simdjson_inline void document_reference::rewind() noexcept { doc->rewind(); }
+simdjson_inline simdjson_result document_reference::get_array() & noexcept { return doc->get_array(); }
+simdjson_inline simdjson_result document_reference::get_object() & noexcept { return doc->get_object(); }
+/**
+ * The document_reference instances are used primarily/solely for streams of JSON
+ * documents.
+ * We decided that calling 'get_double()' on the JSON document '1.233 blabla' should
+ * give an error, so we check for trailing content.
+ *
+ * However, for streams of JSON documents, we want to be able to start from
+ * "321" "321" "321"
+ * and parse it successfully as a stream of JSON documents, calling get_uint64_in_string()
+ * successfully each time.
+ *
+ * To achieve this result, we pass a 'false' to a get_root_value_iterator() method:
+ * this indicates that we allow trailing content.
+ */
+simdjson_inline simdjson_result document_reference::get_uint64() noexcept { return doc->get_root_value_iterator().get_root_uint64(false); }
+simdjson_inline simdjson_result document_reference::get_uint64_in_string() noexcept { return doc->get_root_value_iterator().get_root_uint64_in_string(false); }
+simdjson_inline simdjson_result document_reference::get_int64() noexcept { return doc->get_root_value_iterator().get_root_int64(false); }
+simdjson_inline simdjson_result document_reference::get_int64_in_string() noexcept { return doc->get_root_value_iterator().get_root_int64_in_string(false); }
+simdjson_inline simdjson_result document_reference::get_double() noexcept { return doc->get_root_value_iterator().get_root_double(false); }
+simdjson_inline simdjson_result document_reference::get_double_in_string() noexcept { return doc->get_root_value_iterator().get_root_double(false); }
+simdjson_inline simdjson_result document_reference::get_string(bool allow_replacement) noexcept { return doc->get_root_value_iterator().get_root_string(false, allow_replacement); }
+template 
+simdjson_warn_unused simdjson_inline error_code document_reference::get_string(string_type& receiver, bool allow_replacement) noexcept { return doc->get_root_value_iterator().get_root_string(receiver, false, allow_replacement); }
+simdjson_inline simdjson_result document_reference::get_wobbly_string() noexcept { return doc->get_root_value_iterator().get_root_wobbly_string(false); }
+simdjson_inline simdjson_result document_reference::get_raw_json_string() noexcept { return doc->get_root_value_iterator().get_root_raw_json_string(false); }
+simdjson_inline simdjson_result document_reference::get_bool() noexcept { return doc->get_root_value_iterator().get_root_bool(false); }
+simdjson_inline simdjson_result document_reference::get_value() noexcept { return doc->get_value(); }
+simdjson_inline simdjson_result document_reference::is_null() noexcept { return doc->get_root_value_iterator().is_root_null(false); }
+template<> simdjson_inline simdjson_result document_reference::get() & noexcept { return get_array(); }
+template<> simdjson_inline simdjson_result document_reference::get() & noexcept { return get_object(); }
+template<> simdjson_inline simdjson_result document_reference::get() & noexcept { return get_raw_json_string(); }
+template<> simdjson_inline simdjson_result document_reference::get() & noexcept { return get_string(false); }
+template<> simdjson_inline simdjson_result document_reference::get() & noexcept { return get_double(); }
+template<> simdjson_inline simdjson_result document_reference::get() & noexcept { return get_uint64(); }
+template<> simdjson_inline simdjson_result document_reference::get() & noexcept { return get_int64(); }
+template<> simdjson_inline simdjson_result document_reference::get() & noexcept { return get_bool(); }
+template<> simdjson_inline simdjson_result document_reference::get() & noexcept { return get_value(); }
+#if SIMDJSON_EXCEPTIONS
+template 
+simdjson_inline document_reference::operator T() noexcept(false) { return get(); }
+simdjson_inline document_reference::operator array() & noexcept(false) { return array(*doc); }
+simdjson_inline document_reference::operator object() & noexcept(false) { return object(*doc); }
+simdjson_inline document_reference::operator uint64_t() noexcept(false) { return get_uint64(); }
+simdjson_inline document_reference::operator int64_t() noexcept(false) { return get_int64(); }
+simdjson_inline document_reference::operator double() noexcept(false) { return get_double(); }
+simdjson_inline document_reference::operator std::string_view() noexcept(false) { return std::string_view(*doc); }
+simdjson_inline document_reference::operator raw_json_string() noexcept(false) { return get_raw_json_string(); }
+simdjson_inline document_reference::operator bool() noexcept(false) { return get_bool(); }
+simdjson_inline document_reference::operator value() noexcept(false) { return value(*doc); }
+#endif
+simdjson_inline simdjson_result document_reference::count_elements() & noexcept { return doc->count_elements(); }
+simdjson_inline simdjson_result document_reference::count_fields() & noexcept { return doc->count_fields(); }
+simdjson_inline simdjson_result document_reference::at(size_t index) & noexcept { return doc->at(index); }
+simdjson_inline simdjson_result document_reference::begin() & noexcept { return doc->begin(); }
+simdjson_inline simdjson_result document_reference::end() & noexcept { return doc->end(); }
+simdjson_inline simdjson_result document_reference::find_field(std::string_view key) & noexcept { return doc->find_field(key); }
+simdjson_inline simdjson_result document_reference::find_field(const char *key) & noexcept { return doc->find_field(key); }
+simdjson_inline simdjson_result document_reference::operator[](std::string_view key) & noexcept { return (*doc)[key]; }
+simdjson_inline simdjson_result document_reference::operator[](const char *key) & noexcept { return (*doc)[key]; }
+simdjson_inline simdjson_result document_reference::find_field_unordered(std::string_view key) & noexcept { return doc->find_field_unordered(key); }
+simdjson_inline simdjson_result document_reference::find_field_unordered(const char *key) & noexcept { return doc->find_field_unordered(key); }
+simdjson_inline simdjson_result document_reference::type() noexcept { return doc->type(); }
+simdjson_inline simdjson_result document_reference::is_scalar() noexcept { return doc->is_scalar(); }
+simdjson_inline simdjson_result document_reference::is_string() noexcept { return doc->is_string(); }
+simdjson_inline simdjson_result document_reference::current_location() noexcept { return doc->current_location(); }
+simdjson_inline int32_t document_reference::current_depth() const noexcept { return doc->current_depth(); }
+simdjson_inline bool document_reference::is_negative() noexcept { return doc->is_negative(); }
+simdjson_inline simdjson_result document_reference::is_integer() noexcept { return doc->get_root_value_iterator().is_root_integer(false); }
+simdjson_inline simdjson_result document_reference::get_number_type() noexcept { return doc->get_root_value_iterator().get_root_number_type(false); }
+simdjson_inline simdjson_result document_reference::get_number() noexcept { return doc->get_root_value_iterator().get_root_number(false); }
+simdjson_inline simdjson_result document_reference::raw_json_token() noexcept { return doc->raw_json_token(); }
+simdjson_inline simdjson_result document_reference::at_pointer(std::string_view json_pointer) noexcept { return doc->at_pointer(json_pointer); }
+simdjson_inline simdjson_result document_reference::at_path(std::string_view json_path) noexcept { return doc->at_path(json_path); }
+simdjson_inline simdjson_result> document_reference::at_path_with_wildcard(std::string_view json_path) noexcept { return doc->at_path_with_wildcard(json_path); }
+simdjson_inline simdjson_result document_reference::raw_json() noexcept { return doc->raw_json();}
+simdjson_inline document_reference::operator document&() const noexcept { return *doc; }
+#if SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_inline error_code document_reference::extract_into(T& out) & noexcept {
+  return doc->extract_into(out);
+}
+#endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+
+
+namespace simdjson {
+simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::document_reference value, error_code error)
+  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
+
+
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+  if (error()) { return error(); }
+  return first.count_elements();
+}
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+  if (error()) { return error(); }
+  return first.count_fields();
+}
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+  if (error()) { return error(); }
+  return first.at(index);
+}
+simdjson_inline error_code simdjson_result::rewind() noexcept {
+  if (error()) { return error(); }
+  first.rewind();
+  return SUCCESS;
+}
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+  if (error()) { return error(); }
+  return first.begin();
+}
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+  return {};
+}
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+  if (error()) { return error(); }
+  return first.find_field_unordered(key);
+}
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+  if (error()) { return error(); }
+  return first.find_field_unordered(key);
+}
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+  if (error()) { return error(); }
+  return first[key];
+}
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+  if (error()) { return error(); }
+  return first[key];
+}
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+  if (error()) { return error(); }
+  return first.find_field(key);
+}
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+  if (error()) { return error(); }
+  return first.find_field(key);
+}
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+  if (error()) { return error(); }
+  return first.get_array();
+}
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+  if (error()) { return error(); }
+  return first.get_object();
+}
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+  if (error()) { return error(); }
+  return first.get_uint64();
+}
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_uint64_in_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+  if (error()) { return error(); }
+  return first.get_int64();
+}
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_int64_in_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+  if (error()) { return error(); }
+  return first.get_double();
+}
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_double_in_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+  if (error()) { return error(); }
+  return first.get_string(allow_replacement);
+}
+template 
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+  if (error()) { return error(); }
+  return first.get_string(receiver, allow_replacement);
+}
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_wobbly_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+  if (error()) { return error(); }
+  return first.get_raw_json_string();
+}
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+  if (error()) { return error(); }
+  return first.get_bool();
+}
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+  if (error()) { return error(); }
+  return first.get_value();
+}
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+  if (error()) { return error(); }
+  return first.is_null();
+}
+template
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+  if (error()) { return error(); }
+  return first.get();
+}
+template
+simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+  if (error()) { return error(); }
+  return std::forward(first).get();
+}
+template 
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+  if (error()) { return error(); }
+  return first.get(out);
+}
+template 
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+  if (error()) { return error(); }
+  return std::forward(first).get(out);
+}
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
+  if (error()) { return error(); }
+  return first.type();
+}
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+  if (error()) { return error(); }
+  return first.is_scalar();
+}
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+  if (error()) { return error(); }
+  return first.is_string();
+}
+template <>
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(arm64::ondemand::document_reference &out) & noexcept {
+  if (error()) { return error(); }
+  out = first;
+  return SUCCESS;
+}
+template <>
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(arm64::ondemand::document_reference &out) && noexcept {
+  if (error()) { return error(); }
+  out = first;
+  return SUCCESS;
+}
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+  if (error()) { return error(); }
+  return first.is_negative();
+}
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+  if (error()) { return error(); }
+  return first.is_integer();
+}
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+  if (error()) { return error(); }
+  return first.get_number_type();
+}
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+  if (error()) { return error(); }
+  return first.get_number();
+}
+#if SIMDJSON_EXCEPTIONS
+template 
+simdjson_inline simdjson_result::operator T() noexcept(false) {
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+  if (error()) { throw simdjson_error(error()); }
+  return first.get();
+}
+simdjson_inline simdjson_result::operator arm64::ondemand::array() & noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator arm64::ondemand::object() & noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator double() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator arm64::ondemand::raw_json_string() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+simdjson_inline simdjson_result::operator arm64::ondemand::value() noexcept(false) {
+  if (error()) { throw simdjson_error(error()); }
+  return first;
+}
+#endif
+
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+  if (error()) { return error(); }
+  return first.current_location();
+}
+
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+  if (error()) { return error(); }
+  return first.raw_json_token();
+}
+
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+  if (error()) { return error(); }
+  return first.at_pointer(json_pointer);
+}
+
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+  if (error()) {
+      return error();
+  }
+  return first.at_path(json_path);
+}
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+  if (error()) {
+      return error();
+  }
+  return first.at_path_with_wildcard(json_path);
+}
+#if SIMDJSON_STATIC_REFLECTION
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+  if (error()) { return error(); }
+  return first.extract_into(out);
+}
+#endif // SIMDJSON_STATIC_REFLECTION
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_INL_H
+/* end file simdjson/generic/ondemand/document-inl.h for arm64 */
+/* including simdjson/generic/ondemand/document_stream-inl.h for arm64: #include "simdjson/generic/ondemand/document_stream-inl.h" */
+/* begin file simdjson/generic/ondemand/document_stream-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document_stream.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base-inl.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+#include 
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+#ifdef SIMDJSON_THREADS_ENABLED
+
+inline void stage1_worker::finish() {
+  // After calling "run" someone would call finish() to wait
+  // for the end of the processing.
+  // This function will wait until either the thread has done
+  // the processing or, else, the destructor has been called.
+  std::unique_lock lock(locking_mutex);
+  cond_var.wait(lock, [this]{return has_work == false;});
+}
+
+inline stage1_worker::~stage1_worker() {
+  // The thread may never outlive the stage1_worker instance
+  // and will always be stopped/joined before the stage1_worker
+  // instance is gone.
+  stop_thread();
+}
+
+inline void stage1_worker::start_thread() {
+  std::unique_lock lock(locking_mutex);
+  if(thread.joinable()) {
+    return; // This should never happen but we never want to create more than one thread.
+  }
+  thread = std::thread([this]{
+      while(true) {
+        std::unique_lock thread_lock(locking_mutex);
+        // We wait for either "run" or "stop_thread" to be called.
+        cond_var.wait(thread_lock, [this]{return has_work || !can_work;});
+        // If, for some reason, the stop_thread() method was called (i.e., the
+        // destructor of stage1_worker is called, then we want to immediately destroy
+        // the thread (and not do any more processing).
+        if(!can_work) {
+          break;
+        }
+        this->owner->stage1_thread_error = this->owner->run_stage1(*this->stage1_thread_parser,
+              this->_next_batch_start);
+        this->has_work = false;
+        // The condition variable call should be moved after thread_lock.unlock() for performance
+        // reasons but thread sanitizers may report it as a data race if we do.
+        // See https://stackoverflow.com/questions/35775501/c-should-condition-variable-be-notified-under-lock
+        cond_var.notify_one(); // will notify "finish"
+        thread_lock.unlock();
+      }
+    }
+  );
+}
+
+
+inline void stage1_worker::stop_thread() {
+  std::unique_lock lock(locking_mutex);
+  // We have to make sure that all locks can be released.
+  can_work = false;
+  has_work = false;
+  cond_var.notify_all();
+  lock.unlock();
+  if(thread.joinable()) {
+    thread.join();
+  }
+}
+
+inline void stage1_worker::run(document_stream * ds, parser * stage1, size_t next_batch_start) {
+  std::unique_lock lock(locking_mutex);
+  owner = ds;
+  _next_batch_start = next_batch_start;
+  stage1_thread_parser = stage1;
+  has_work = true;
+  // The condition variable call should be moved after thread_lock.unlock() for performance
+  // reasons but thread sanitizers may report it as a data race if we do.
+  // See https://stackoverflow.com/questions/35775501/c-should-condition-variable-be-notified-under-lock
+  cond_var.notify_one(); // will notify the thread lock that we have work
+  lock.unlock();
+}
+
+#endif  // SIMDJSON_THREADS_ENABLED
+
+simdjson_inline document_stream::document_stream(
+  ondemand::parser &_parser,
+  const uint8_t *_buf,
+  size_t _len,
+  size_t _batch_size,
+  bool _allow_comma_separated
+) noexcept
+  : parser{&_parser},
+    buf{_buf},
+    len{_len},
+    batch_size{_batch_size <= MINIMAL_BATCH_SIZE ? MINIMAL_BATCH_SIZE : _batch_size},
+    allow_comma_separated{_allow_comma_separated},
+    error{SUCCESS}
+    #ifdef SIMDJSON_THREADS_ENABLED
+    , use_thread(_parser.threaded) // we need to make a copy because _parser.threaded can change
+    #endif
+{
+#ifdef SIMDJSON_THREADS_ENABLED
+  if(worker.get() == nullptr) {
+    error = MEMALLOC;
+  }
+#endif
+}
+
+simdjson_inline document_stream::document_stream() noexcept
+  : parser{nullptr},
+    buf{nullptr},
+    len{0},
+    batch_size{0},
+    allow_comma_separated{false},
+    error{UNINITIALIZED}
+    #ifdef SIMDJSON_THREADS_ENABLED
+    , use_thread(false)
+    #endif
+{
+}
+
+simdjson_inline document_stream::~document_stream() noexcept
+{
+  #ifdef SIMDJSON_THREADS_ENABLED
+  worker.reset();
+  #endif
+}
+
+inline size_t document_stream::size_in_bytes() const noexcept {
+  return len;
+}
+
+inline size_t document_stream::truncated_bytes() const noexcept {
+  if(error == CAPACITY) { return len - batch_start; }
+  return parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] - parser->implementation->structural_indexes[parser->implementation->n_structural_indexes + 1];
+}
+
+simdjson_inline document_stream::iterator::iterator() noexcept
+  : stream{nullptr}, finished{true} {
+}
+
+simdjson_inline document_stream::iterator::iterator(document_stream* _stream, bool is_end) noexcept
+  : stream{_stream}, finished{is_end} {
+}
+
+simdjson_inline simdjson_result document_stream::iterator::operator*() noexcept {
+  return simdjson_result(stream->doc, stream->error);
+}
+
+simdjson_inline document_stream::iterator& document_stream::iterator::operator++() noexcept {
+  // If there is an error, then we want the iterator
+  // to be finished, no matter what. (E.g., we do not
+  // keep generating documents with errors, or go beyond
+  // a document with errors.)
+  //
+  // Users do not have to call "operator*()" when they use operator++,
+  // so we need to end the stream in the operator++ function.
+  //
+  // Note that setting finished = true is essential otherwise
+  // we would enter an infinite loop.
+  if (stream->error) { finished = true; }
+  // Note that stream->error() is guarded against error conditions
+  // (it will immediately return if stream->error casts to false).
+  // In effect, this next function does nothing when (stream->error)
+  // is true (hence the risk of an infinite loop).
+  stream->next();
+  // If that was the last document, we're finished.
+  // It is the only type of error we do not want to appear
+  // in operator*.
+  if (stream->error == EMPTY) { finished = true; }
+  // If we had any other kind of error (not EMPTY) then we want
+  // to pass it along to the operator* and we cannot mark the result
+  // as "finished" just yet.
+  return *this;
+}
+
+simdjson_inline bool document_stream::iterator::at_end() const noexcept {
+  return finished;
+}
+
+
+simdjson_inline bool document_stream::iterator::operator!=(const document_stream::iterator &other) const noexcept {
+  return finished != other.finished;
+}
+
+simdjson_inline bool document_stream::iterator::operator==(const document_stream::iterator &other) const noexcept {
+  return finished == other.finished;
+}
+
+simdjson_inline document_stream::iterator document_stream::begin() noexcept {
+  start();
+  // If there are no documents, we're finished.
+  return iterator(this, error == EMPTY);
+}
+
+simdjson_inline document_stream::iterator document_stream::end() noexcept {
+  return iterator(this, true);
+}
+
+inline void document_stream::start() noexcept {
+  if (error) { return; }
+  error = parser->allocate(batch_size);
+  if (error) { return; }
+  // Always run the first stage 1 parse immediately
+  batch_start = 0;
+  error = run_stage1(*parser, batch_start);
+  while(error == EMPTY) {
+    // In exceptional cases, we may start with an empty block
+    batch_start = next_batch_start();
+    if (batch_start >= len) { return; }
+    error = run_stage1(*parser, batch_start);
+  }
+  if (error) { return; }
+  doc_index = batch_start;
+  doc = document(json_iterator(&buf[batch_start], parser));
+  doc.iter._streaming = true;
+
+  #ifdef SIMDJSON_THREADS_ENABLED
+  if (use_thread && next_batch_start() < len) {
+    // Kick off the first thread on next batch if needed
+    error = stage1_thread_parser.allocate(batch_size);
+    if (error) { return; }
+    worker->start_thread();
+    start_stage1_thread();
+    if (error) { return; }
+  }
+  #endif // SIMDJSON_THREADS_ENABLED
+}
+
+inline void document_stream::next() noexcept {
+  // We always enter at once once in an error condition.
+  if (error) { return; }
+  next_document();
+  if (error) { return; }
+  auto cur_struct_index = doc.iter._root - parser->implementation->structural_indexes.get();
+  doc_index = batch_start + parser->implementation->structural_indexes[cur_struct_index];
+
+  // Check if at end of structural indexes (i.e. at end of batch)
+  if(cur_struct_index >= static_cast(parser->implementation->n_structural_indexes)) {
+    error = EMPTY;
+    // Load another batch (if available)
+    while (error == EMPTY) {
+      batch_start = next_batch_start();
+      if (batch_start >= len) { break; }
+      #ifdef SIMDJSON_THREADS_ENABLED
+      if(use_thread) {
+        load_from_stage1_thread();
+      } else {
+        error = run_stage1(*parser, batch_start);
+      }
+      #else
+      error = run_stage1(*parser, batch_start);
+      #endif
+      /**
+       * Whenever we move to another window, we need to update all pointers to make
+       * it appear as if the input buffer started at the beginning of the window.
+       *
+       * Take this input:
+       *
+       * {"z":5}  {"1":1,"2":2,"4":4} [7,  10,   9]  [15,  11,   12, 13]  [154,  110,   112, 1311]
+       *
+       * Say you process the following window...
+       *
+       * '{"z":5}  {"1":1,"2":2,"4":4} [7,  10,   9]'
+       *
+       * When you do so, the json_iterator has a pointer at the beginning of the memory region
+       * (pointing at the beginning of '{"z"...'.
+       *
+       * When you move to the window that starts at...
+       *
+       * '[7,  10,   9]  [15,  11,   12, 13] ...
+       *
+       * then it is not sufficient to just run stage 1. You also need to re-anchor the
+       * json_iterator so that it believes we are starting at '[7,  10,   9]...'.
+       *
+       * Under the DOM front-end, this gets done automatically because the parser owns
+       * the pointer the data, and when you call stage1 and then stage2 on the same
+       * parser, then stage2 will run on the pointer acquired by stage1.
+       *
+       * That is, stage1 calls "this->buf = _buf" so the parser remembers the buffer that
+       * we used. But json_iterator has no callback when stage1 is called on the parser.
+       * In fact, I think that the parser is unaware of json_iterator.
+       *
+       *
+       * So we need to re-anchor the json_iterator after each call to stage 1 so that
+       * all of the pointers are in sync.
+       */
+      doc.iter = json_iterator(&buf[batch_start], parser);
+      doc.iter._streaming = true;
+      /**
+       * End of resync.
+       */
+
+      if (error) { continue; } // If the error was EMPTY, we may want to load another batch.
+      doc_index = batch_start;
+    }
+  }
+}
+
+inline void document_stream::next_document() noexcept {
+  // Go to next place where depth=0 (document depth)
+  error = doc.iter.skip_child(0);
+  if (error) { return; }
+  // Always set depth=1 at the start of document
+  doc.iter._depth = 1;
+  // consume comma if comma separated is allowed
+  if (allow_comma_separated) {
+    error_code ignored = doc.iter.consume_character(',');
+    static_cast(ignored); // ignored on purpose
+  }
+  // Resets the string buffer at the beginning, thus invalidating the strings.
+  doc.iter._string_buf_loc = parser->string_buf.get();
+  doc.iter._root = doc.iter.position();
+}
+
+inline size_t document_stream::next_batch_start() const noexcept {
+  return batch_start + parser->implementation->structural_indexes[parser->implementation->n_structural_indexes];
+}
+
+inline error_code document_stream::run_stage1(ondemand::parser &p, size_t _batch_start) noexcept {
+  // This code only updates the structural index in the parser, it does not update any json_iterator
+  // instance.
+  size_t remaining = len - _batch_start;
+  if (remaining <= batch_size) {
+    return p.implementation->stage1(&buf[_batch_start], remaining, stage1_mode::streaming_final);
+  } else {
+    return p.implementation->stage1(&buf[_batch_start], batch_size, stage1_mode::streaming_partial);
+  }
+}
+
+simdjson_inline size_t document_stream::iterator::current_index() const noexcept {
+  return stream->doc_index;
+}
+
+simdjson_inline std::string_view document_stream::iterator::source() const noexcept {
+  auto depth = stream->doc.iter.depth();
+  auto cur_struct_index = stream->doc.iter._root - stream->parser->implementation->structural_indexes.get();
+
+  // If at root, process the first token to determine if scalar value
+  if (stream->doc.iter.at_root()) {
+    switch (stream->buf[stream->batch_start + stream->parser->implementation->structural_indexes[cur_struct_index]]) {
+      case '{': case '[':   // Depth=1 already at start of document
+        break;
+      case '}': case ']':
+        depth--;
+        break;
+      default:    // Scalar value document
+        // TODO: We could remove trailing whitespaces
+        // This returns a string spanning from start of value to the beginning of the next document (excluded)
+        {
+          auto next_index = stream->parser->implementation->structural_indexes[++cur_struct_index];
+          // normally the length would be next_index - current_index() - 1, except for the last document
+          size_t svlen = next_index - current_index();
+          const char *start = reinterpret_cast(stream->buf) + current_index();
+          while(svlen > 1 && (std::isspace(start[svlen-1]) || start[svlen-1] == '\0')) {
+            svlen--;
+          }
+          return std::string_view(start, svlen);
+        }
+    }
+    cur_struct_index++;
+  }
+
+  while (cur_struct_index <= static_cast(stream->parser->implementation->n_structural_indexes)) {
+    switch (stream->buf[stream->batch_start + stream->parser->implementation->structural_indexes[cur_struct_index]]) {
+      case '{': case '[':
+        depth++;
+        break;
+      case '}': case ']':
+        depth--;
+        break;
+    }
+    if (depth == 0) { break; }
+    cur_struct_index++;
+  }
+
+  return std::string_view(reinterpret_cast(stream->buf) + current_index(), stream->parser->implementation->structural_indexes[cur_struct_index] - current_index() + stream->batch_start + 1);;
+}
+
+inline error_code document_stream::iterator::error() const noexcept {
+  return stream->error;
+}
+
+#ifdef SIMDJSON_THREADS_ENABLED
+
+inline void document_stream::load_from_stage1_thread() noexcept {
+  worker->finish();
+  // Swap to the parser that was loaded up in the thread. Make sure the parser has
+  // enough memory to swap to, as well.
+  std::swap(stage1_thread_parser,*parser);
+  error = stage1_thread_error;
+  if (error) { return; }
+
+  // If there's anything left, start the stage 1 thread!
+  if (next_batch_start() < len) {
+    start_stage1_thread();
+  }
+}
+
+inline void document_stream::start_stage1_thread() noexcept {
+  // we call the thread on a lambda that will update
+  // this->stage1_thread_error
+  // there is only one thread that may write to this value
+  // TODO this is NOT exception-safe.
+  this->stage1_thread_error = UNINITIALIZED; // In case something goes wrong, make sure it's an error
+  size_t _next_batch_start = this->next_batch_start();
+
+  worker->run(this, & this->stage1_thread_parser, _next_batch_start);
+}
+
+#endif // SIMDJSON_THREADS_ENABLED
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(
+  error_code error
+) noexcept :
+    implementation_simdjson_result_base(error)
+{
+}
+simdjson_inline simdjson_result::simdjson_result(
+  arm64::ondemand::document_stream &&value
+) noexcept :
+    implementation_simdjson_result_base(
+      std::forward(value)
+    )
+{
+}
+
+}
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H
+/* end file simdjson/generic/ondemand/document_stream-inl.h for arm64 */
+/* including simdjson/generic/ondemand/field-inl.h for arm64: #include "simdjson/generic/ondemand/field-inl.h" */
+/* begin file simdjson/generic/ondemand/field-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/field.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+// clang 6 does not think the default constructor can be noexcept, so we make it explicit
+simdjson_inline field::field() noexcept : std::pair() {}
+
+simdjson_inline field::field(raw_json_string key, ondemand::value &&value) noexcept
+  : std::pair(key, std::forward(value))
+{
+}
+
+simdjson_inline simdjson_result field::start(value_iterator &parent_iter) noexcept {
+  raw_json_string key;
+  SIMDJSON_TRY( parent_iter.field_key().get(key) );
+  SIMDJSON_TRY( parent_iter.field_value() );
+  return field::start(parent_iter, key);
+}
+
+simdjson_inline simdjson_result field::start(const value_iterator &parent_iter, raw_json_string key) noexcept {
+    return field(key, parent_iter.child());
+}
+
+simdjson_inline simdjson_warn_unused simdjson_result field::unescaped_key(bool allow_replacement) noexcept {
+  SIMDJSON_ASSUME(first.buf != nullptr); // We would like to call .alive() but Visual Studio won't let us.
+  simdjson_result answer = first.unescape(second.iter.json_iter(), allow_replacement);
+  first.consume();
+  return answer;
+}
+
+template 
+simdjson_inline simdjson_warn_unused error_code field::unescaped_key(string_type& receiver, bool allow_replacement) noexcept {
+  std::string_view key;
+  SIMDJSON_TRY( unescaped_key(allow_replacement).get(key) );
+  receiver = key;
+  return SUCCESS;
+}
+
+simdjson_inline raw_json_string field::key() const noexcept {
+  SIMDJSON_ASSUME(first.buf != nullptr); // We would like to call .alive() by Visual Studio won't let us.
+  return first;
+}
+
+
+simdjson_inline std::string_view field::key_raw_json_token() const noexcept {
+  SIMDJSON_ASSUME(first.buf != nullptr); // We would like to call .alive() by Visual Studio won't let us.
+  return std::string_view(reinterpret_cast(first.buf-1), second.iter._json_iter->token.peek(-1) - first.buf + 1);
+}
+
+simdjson_inline std::string_view field::escaped_key() const noexcept {
+  SIMDJSON_ASSUME(first.buf != nullptr); // We would like to call .alive() by Visual Studio won't let us.
+  auto end_quote = second.iter._json_iter->token.peek(-1);
+  while(*end_quote != '"') end_quote--;
+  return std::string_view(reinterpret_cast(first.buf), end_quote - first.buf);
+}
+
+simdjson_inline value &field::value() & noexcept {
+  return second;
+}
+
+simdjson_inline value field::value() && noexcept {
+  return std::forward(*this).second;
+}
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(
+  arm64::ondemand::field &&value
+) noexcept :
+    implementation_simdjson_result_base(
+      std::forward(value)
+    )
+{
+}
+simdjson_inline simdjson_result::simdjson_result(
+  error_code error
+) noexcept :
+    implementation_simdjson_result_base(error)
+{
+}
+
+simdjson_inline simdjson_result simdjson_result::key() noexcept {
+  if (error()) { return error(); }
+  return first.key();
+}
+
+simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
+  if (error()) { return error(); }
+  return first.key_raw_json_token();
+}
+
+simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
+  if (error()) { return error(); }
+  return first.escaped_key();
+}
+
+simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
+  if (error()) { return error(); }
+  return first.unescaped_key(allow_replacement);
+}
+
+template
+simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
+  if (error()) { return error(); }
+  return first.unescaped_key(receiver, allow_replacement);
+}
+
+simdjson_inline simdjson_result simdjson_result::value() noexcept {
+  if (error()) { return error(); }
+  return std::move(first.value());
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H
+/* end file simdjson/generic/ondemand/field-inl.h for arm64 */
+/* including simdjson/generic/ondemand/json_iterator-inl.h for arm64: #include "simdjson/generic/ondemand/json_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/json_iterator-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/dom_parser_implementation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/parser.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/logger-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/parser-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/token_iterator-inl.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+simdjson_inline json_iterator::json_iterator(json_iterator &&other) noexcept
+  : token(std::forward(other.token)),
+    parser{other.parser},
+    _string_buf_loc{other._string_buf_loc},
+    error{other.error},
+    _depth{other._depth},
+    _root{other._root},
+    _streaming{other._streaming}
+{
+  other.parser = nullptr;
+}
+simdjson_inline json_iterator &json_iterator::operator=(json_iterator &&other) noexcept {
+  token = other.token;
+  parser = other.parser;
+  _string_buf_loc = other._string_buf_loc;
+  error = other.error;
+  _depth = other._depth;
+  _root = other._root;
+  _streaming = other._streaming;
+  other.parser = nullptr;
+  return *this;
+}
+
+simdjson_inline json_iterator::json_iterator(const uint8_t *buf, ondemand::parser *_parser) noexcept
+  : token(buf, &_parser->implementation->structural_indexes[0]),
+    parser{_parser},
+    _string_buf_loc{parser->string_buf.get()},
+    _depth{1},
+    _root{parser->implementation->structural_indexes.get()},
+    _streaming{false}
+
+{
+  logger::log_headers();
+#if SIMDJSON_CHECK_EOF
+  assert_more_tokens();
+#endif
+}
+
+#ifdef SIMDJSON_EXPERIMENTAL_ALLOW_INCOMPLETE_JSON
+simdjson_inline json_iterator::json_iterator(const uint8_t *buf, ondemand::parser *_parser, bool streaming) noexcept
+    : token(buf, &_parser->implementation->structural_indexes[0]),
+      parser{_parser},
+      _string_buf_loc{parser->string_buf.get()},
+      _depth{1},
+      _root{parser->implementation->structural_indexes.get()},
+      _streaming{streaming}
+
+{
+  logger::log_headers();
+#if SIMDJSON_CHECK_EOF
+  assert_more_tokens();
+#endif
+}
+#endif // SIMDJSON_EXPERIMENTAL_ALLOW_INCOMPLETE_JSON
+
+inline void json_iterator::rewind() noexcept {
+  token.set_position( root_position() );
+  logger::log_headers(); // We start again
+  _string_buf_loc = parser->string_buf.get();
+  _depth = 1;
+}
+
+inline bool json_iterator::balanced() const noexcept {
+  token_iterator ti(token);
+  int32_t count{0};
+  ti.set_position( root_position() );
+  while(ti.peek() <= peek_last()) {
+    switch (*ti.return_current_and_advance())
+    {
+    case '[': case '{':
+      count++;
+      break;
+    case ']': case '}':
+      count--;
+      break;
+    default:
+      break;
+    }
+  }
+  return count == 0;
+}
+
+
+// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
+// relating depth and parent_depth, which is a desired effect. The warning does not show up if the
+// skip_child() function is not marked inline).
+SIMDJSON_PUSH_DISABLE_WARNINGS
+SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
+simdjson_warn_unused simdjson_inline error_code json_iterator::skip_child(depth_t parent_depth) noexcept {
+  if (depth() <= parent_depth) { return SUCCESS; }
+  switch (*return_current_and_advance()) {
+    // TODO consider whether matching braces is a requirement: if non-matching braces indicates
+    // *missing* braces, then future lookups are not in the object/arrays they think they are,
+    // violating the rule "validate enough structure that the user can be confident they are
+    // looking at the right values."
+    // PERF TODO we can eliminate the switch here with a lookup of how much to add to depth
+
+    // For the first open array/object in a value, we've already incremented depth, so keep it the same
+    // We never stop at colon, but if we did, it wouldn't affect depth
+    case '[': case '{': case ':':
+      logger::log_start_value(*this, "skip");
+      break;
+    // If there is a comma, we have just finished a value in an array/object, and need to get back in
+    case ',':
+      logger::log_value(*this, "skip");
+      break;
+    // ] or } means we just finished a value and need to jump out of the array/object
+    case ']': case '}':
+      logger::log_end_value(*this, "skip");
+      _depth--;
+      if (depth() <= parent_depth) { return SUCCESS; }
+#if SIMDJSON_CHECK_EOF
+      // If there are no more tokens, the parent is incomplete.
+      if (at_end()) { return report_error(INCOMPLETE_ARRAY_OR_OBJECT, "Missing [ or { at start"); }
+#endif // SIMDJSON_CHECK_EOF
+      break;
+    case '"':
+      if(*peek() == ':') {
+        // We are at a key!!!
+        // This might happen if you just started an object and you skip it immediately.
+        // Performance note: it would be nice to get rid of this check as it is somewhat
+        // expensive.
+        // https://github.com/simdjson/simdjson/issues/1742
+        logger::log_value(*this, "key");
+        return_current_and_advance(); // eat up the ':'
+        break; // important!!!
+      }
+      simdjson_fallthrough;
+    // Anything else must be a scalar value
+    default:
+      // For the first scalar, we will have incremented depth already, so we decrement it here.
+      logger::log_value(*this, "skip");
+      _depth--;
+      if (depth() <= parent_depth) { return SUCCESS; }
+      break;
+  }
+
+  // Now that we've considered the first value, we only increment/decrement for arrays/objects
+  while (position() < end_position()) {
+    switch (*return_current_and_advance()) {
+      case '[': case '{':
+        logger::log_start_value(*this, "skip");
+        _depth++;
+        break;
+      // TODO consider whether matching braces is a requirement: if non-matching braces indicates
+      // *missing* braces, then future lookups are not in the object/arrays they think they are,
+      // violating the rule "validate enough structure that the user can be confident they are
+      // looking at the right values."
+      // PERF TODO we can eliminate the switch here with a lookup of how much to add to depth
+      case ']': case '}':
+        logger::log_end_value(*this, "skip");
+        _depth--;
+        if (depth() <= parent_depth) { return SUCCESS; }
+        break;
+      default:
+        logger::log_value(*this, "skip", "");
+        break;
+    }
+  }
+
+  return report_error(TAPE_ERROR, "not enough close braces");
+}
+
+SIMDJSON_POP_DISABLE_WARNINGS
+
+simdjson_inline bool json_iterator::at_root() const noexcept {
+  return position() == root_position();
+}
+
+simdjson_inline bool json_iterator::is_single_token() const noexcept {
+  return parser->implementation->n_structural_indexes == 1;
+}
+
+simdjson_inline bool json_iterator::streaming() const noexcept {
+  return _streaming;
+}
+
+simdjson_inline token_position json_iterator::root_position() const noexcept {
+  return _root;
+}
+
+simdjson_inline void json_iterator::assert_at_document_depth() const noexcept {
+  SIMDJSON_ASSUME( _depth == 1 );
+}
+
+simdjson_inline void json_iterator::assert_at_root() const noexcept {
+  SIMDJSON_ASSUME( _depth == 1 );
+#ifndef SIMDJSON_CLANG_VISUAL_STUDIO
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
+  SIMDJSON_ASSUME( token.position() == _root );
+#endif
+}
+
+simdjson_inline void json_iterator::assert_more_tokens(uint32_t required_tokens) const noexcept {
+  assert_valid_position(token._position + required_tokens - 1);
+}
+
+simdjson_inline void json_iterator::assert_valid_position(token_position position) const noexcept {
+  (void)position; // Suppress unused parameter warning
+#ifndef SIMDJSON_CLANG_VISUAL_STUDIO
+  SIMDJSON_ASSUME( position >= &parser->implementation->structural_indexes[0] );
+  SIMDJSON_ASSUME( position < &parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] );
+#endif
+}
+
+simdjson_inline bool json_iterator::at_end() const noexcept {
+  return position() == end_position();
+}
+simdjson_inline token_position json_iterator::end_position() const noexcept {
+  uint32_t n_structural_indexes{parser->implementation->n_structural_indexes};
+  return &parser->implementation->structural_indexes[n_structural_indexes];
+}
+
+inline std::string json_iterator::to_string() const noexcept {
+  if( !is_alive() ) { return "dead json_iterator instance"; }
+  const char * current_structural = reinterpret_cast(token.peek());
+  return std::string("json_iterator [ depth : ") + std::to_string(_depth)
+          + std::string(", structural : '") + std::string(current_structural,1)
+          + std::string("', offset : ") + std::to_string(token.current_offset())
+          + std::string("', error : ") + error_message(error)
+          + std::string(" ]");
+}
+
+inline simdjson_result json_iterator::current_location() const noexcept {
+  if (!is_alive()) {    // Unrecoverable error
+    if (!at_root()) {
+      return reinterpret_cast(token.peek(-1));
+    } else {
+      return reinterpret_cast(token.peek());
+    }
+  }
+  if (at_end()) {
+    return OUT_OF_BOUNDS;
+  }
+  return reinterpret_cast(token.peek());
+}
+
+simdjson_inline bool json_iterator::is_alive() const noexcept {
+  return parser;
+}
+
+simdjson_inline void json_iterator::abandon() noexcept {
+  parser = nullptr;
+  _depth = 0;
+}
+
+simdjson_inline const uint8_t *json_iterator::return_current_and_advance() noexcept {
+#if SIMDJSON_CHECK_EOF
+  assert_more_tokens();
+#endif // SIMDJSON_CHECK_EOF
+  return token.return_current_and_advance();
+}
+
+simdjson_inline const uint8_t *json_iterator::unsafe_pointer() const noexcept {
+  // deliberately done without safety guard:
+  return token.peek();
+}
+
+simdjson_inline const uint8_t *json_iterator::peek(int32_t delta) const noexcept {
+#if SIMDJSON_CHECK_EOF
+  assert_more_tokens(delta+1);
+#endif // SIMDJSON_CHECK_EOF
+  return token.peek(delta);
+}
+
+simdjson_inline uint32_t json_iterator::peek_length(int32_t delta) const noexcept {
+#if SIMDJSON_CHECK_EOF
+  assert_more_tokens(delta+1);
+#endif // #if SIMDJSON_CHECK_EOF
+  return token.peek_length(delta);
+}
+
+simdjson_inline const uint8_t *json_iterator::peek(token_position position) const noexcept {
+  // todo: currently we require end-of-string buffering, but the following
+  // assert_valid_position should be turned on if/when we lift that condition.
+  // assert_valid_position(position);
+  // This is almost surely related to SIMDJSON_CHECK_EOF but given that SIMDJSON_CHECK_EOF
+  // is ON by default, we have no choice but to disable it for real with a comment.
+  return token.peek(position);
+}
+
+simdjson_inline uint32_t json_iterator::peek_length(token_position position) const noexcept {
+#if SIMDJSON_CHECK_EOF
+  assert_valid_position(position);
+#endif // SIMDJSON_CHECK_EOF
+  return token.peek_length(position);
+}
+simdjson_inline uint32_t json_iterator::peek_root_length(token_position position) const noexcept {
+#if SIMDJSON_CHECK_EOF
+  assert_valid_position(position);
+#endif // SIMDJSON_CHECK_EOF
+  return token.peek_root_length(position);
+}
+
+simdjson_inline token_position json_iterator::last_position() const noexcept {
+  // The following line fails under some compilers...
+  // SIMDJSON_ASSUME(parser->implementation->n_structural_indexes > 0);
+  // since it has side-effects.
+  uint32_t n_structural_indexes{parser->implementation->n_structural_indexes};
+  SIMDJSON_ASSUME(n_structural_indexes > 0);
+  return &parser->implementation->structural_indexes[n_structural_indexes - 1];
+}
+simdjson_inline const uint8_t *json_iterator::peek_last() const noexcept {
+  return token.peek(last_position());
+}
+
+simdjson_inline void json_iterator::ascend_to(depth_t parent_depth) noexcept {
+  SIMDJSON_ASSUME(parent_depth >= 0 && parent_depth < INT32_MAX - 1);
+  SIMDJSON_ASSUME(_depth == parent_depth + 1);
+  _depth = parent_depth;
+}
+
+simdjson_inline void json_iterator::descend_to(depth_t child_depth) noexcept {
+  SIMDJSON_ASSUME(child_depth >= 1 && child_depth < INT32_MAX);
+  SIMDJSON_ASSUME(_depth == child_depth - 1);
+  _depth = child_depth;
+}
+
+simdjson_inline depth_t json_iterator::depth() const noexcept {
+  return _depth;
+}
+
+simdjson_inline uint8_t *&json_iterator::string_buf_loc() noexcept {
+  return _string_buf_loc;
+}
+
+simdjson_warn_unused simdjson_inline error_code json_iterator::report_error(error_code _error, const char *message) noexcept {
+  SIMDJSON_ASSUME(_error != SUCCESS && _error != UNINITIALIZED && _error != INCORRECT_TYPE && _error != NO_SUCH_FIELD);
+  logger::log_error(*this, message);
+  error = _error;
+  return error;
+}
+
+simdjson_inline token_position json_iterator::position() const noexcept {
+  return token.position();
+}
+
+simdjson_inline simdjson_result json_iterator::unescape(raw_json_string in, bool allow_replacement) noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  auto result = parser->unescape(in, _string_buf_loc, allow_replacement);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
+  SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  return result;
+#else
+  return parser->unescape(in, _string_buf_loc, allow_replacement);
+#endif
+}
+
+simdjson_inline simdjson_result json_iterator::unescape_wobbly(raw_json_string in) noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  auto result = parser->unescape_wobbly(in, _string_buf_loc);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
+  SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  return result;
+#else
+  return parser->unescape_wobbly(in, _string_buf_loc);
+#endif
+}
+
+simdjson_inline void json_iterator::reenter_child(token_position position, depth_t child_depth) noexcept {
+  SIMDJSON_ASSUME(child_depth >= 1 && child_depth < INT32_MAX);
+  SIMDJSON_ASSUME(_depth == child_depth - 1);
+#if SIMDJSON_DEVELOPMENT_CHECKS
+#ifndef SIMDJSON_CLANG_VISUAL_STUDIO
+  SIMDJSON_ASSUME(size_t(child_depth) < parser->max_depth());
+  SIMDJSON_ASSUME(position >= parser->start_positions[child_depth]);
+#endif
+#endif
+  token.set_position(position);
+  _depth = child_depth;
+}
+
+simdjson_warn_unused simdjson_inline error_code json_iterator::consume_character(char c) noexcept {
+  if (*peek() == c) {
+    return_current_and_advance();
+    return SUCCESS;
+  }
+  return TAPE_ERROR;
+}
+
+#if SIMDJSON_DEVELOPMENT_CHECKS
+
+simdjson_inline token_position json_iterator::start_position(depth_t depth) const noexcept {
+  SIMDJSON_ASSUME(size_t(depth) < parser->max_depth());
+  return size_t(depth) < parser->max_depth() ? parser->start_positions[depth] : 0;
+}
+
+simdjson_inline void json_iterator::set_start_position(depth_t depth, token_position position) noexcept {
+  SIMDJSON_ASSUME(size_t(depth) < parser->max_depth());
+  if(size_t(depth) < parser->max_depth()) { parser->start_positions[depth] = position; }
+}
+
+#endif
+
+
+simdjson_warn_unused simdjson_inline error_code json_iterator::optional_error(error_code _error, const char *message) noexcept {
+  SIMDJSON_ASSUME(_error == INCORRECT_TYPE || _error == NO_SUCH_FIELD);
+  logger::log_error(*this, message);
+  return _error;
+}
+
+
+simdjson_warn_unused simdjson_inline bool json_iterator::copy_to_buffer(const uint8_t *json, uint32_t max_len, uint8_t *tmpbuf, size_t N) noexcept {
+  // This function is not expected to be called in performance-sensitive settings.
+  // Let us guard against silly cases:
+  if((N < max_len) || (N == 0)) { return false; }
+  // Copy to the buffer.
+  std::memcpy(tmpbuf, json, max_len);
+  if(N > max_len) { // We pad whatever remains with ' '.
+    std::memset(tmpbuf + max_len, ' ', N - max_len);
+  }
+  return true;
+}
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::json_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_INL_H
+/* end file simdjson/generic/ondemand/json_iterator-inl.h for arm64 */
+/* including simdjson/generic/ondemand/json_type-inl.h for arm64: #include "simdjson/generic/ondemand/json_type-inl.h" */
+/* begin file simdjson/generic/ondemand/json_type-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base-inl.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept {
+    switch (type) {
+        case json_type::array: out << "array"; break;
+        case json_type::object: out << "object"; break;
+        case json_type::number: out << "number"; break;
+        case json_type::string: out << "string"; break;
+        case json_type::boolean: out << "boolean"; break;
+        case json_type::null: out << "null"; break;
+        default: SIMDJSON_UNREACHABLE();
+    }
+    return out;
+}
+
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson_result &type) noexcept(false) {
+    return out << type.value();
+}
+#endif
+
+
+
+simdjson_inline number_type number::get_number_type() const noexcept {
+  return type;
+}
+
+simdjson_inline bool number::is_uint64() const noexcept {
+  return get_number_type() == number_type::unsigned_integer;
+}
+
+simdjson_inline uint64_t number::get_uint64() const noexcept {
+  return payload.unsigned_integer;
+}
+
+simdjson_inline number::operator uint64_t() const noexcept {
+  return get_uint64();
+}
+
+simdjson_inline bool number::is_int64() const noexcept {
+  return get_number_type() == number_type::signed_integer;
+}
+
+simdjson_inline int64_t number::get_int64() const noexcept {
+  return payload.signed_integer;
+}
+
+simdjson_inline number::operator int64_t() const noexcept {
+  return get_int64();
+}
+
+simdjson_inline bool number::is_double() const noexcept {
+    return get_number_type() == number_type::floating_point_number;
+}
+
+simdjson_inline double number::get_double() const noexcept {
+  return payload.floating_point_number;
+}
+
+simdjson_inline number::operator double() const noexcept {
+  return get_double();
+}
+
+simdjson_inline double number::as_double() const noexcept {
+  if(is_double()) {
+    return payload.floating_point_number;
+  }
+  if(is_int64()) {
+    return double(payload.signed_integer);
+  }
+  return double(payload.unsigned_integer);
+}
+
+simdjson_inline void number::append_s64(int64_t value) noexcept {
+  payload.signed_integer = value;
+  type = number_type::signed_integer;
+}
+
+simdjson_inline void number::append_u64(uint64_t value) noexcept {
+  payload.unsigned_integer = value;
+  type = number_type::unsigned_integer;
+}
+
+simdjson_inline void number::append_double(double value) noexcept {
+  payload.floating_point_number = value;
+  type = number_type::floating_point_number;
+}
+
+simdjson_inline void number::skip_double() noexcept {
+  type = number_type::floating_point_number;
+}
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::json_type &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
+/* end file simdjson/generic/ondemand/json_type-inl.h for arm64 */
+/* including simdjson/generic/ondemand/logger-inl.h for arm64: #include "simdjson/generic/ondemand/logger-inl.h" */
+/* begin file simdjson/generic/ondemand/logger-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/logger.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+#include 
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+namespace logger {
+
+static constexpr const char * DASHES = "----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------";
+static constexpr const int LOG_EVENT_LEN = 20;
+static constexpr const int LOG_BUFFER_LEN = 30;
+static constexpr const int LOG_SMALL_BUFFER_LEN = 10;
+static int log_depth = 0; // Not threadsafe. Log only.
+
+// Helper to turn unprintable or newline characters into spaces
+static inline char printable_char(char c) {
+  if (c >= 0x20) {
+    return c;
+  } else {
+    return ' ';
+  }
+}
+
+template
+static inline std::string string_format(const std::string& format, const Args&... args)
+{
+  SIMDJSON_PUSH_DISABLE_ALL_WARNINGS
+  int size_s = std::snprintf(nullptr, 0, format.c_str(), args...) + 1;
+  auto size = static_cast(size_s);
+  if (size <= 0) return std::string();
+  std::unique_ptr buf(new char[size]);
+  std::snprintf(buf.get(), size, format.c_str(), args...);
+  SIMDJSON_POP_DISABLE_WARNINGS
+  return std::string(buf.get(), buf.get() + size - 1);
+}
+
+static inline log_level get_log_level_from_env()
+{
+  SIMDJSON_PUSH_DISABLE_WARNINGS
+  SIMDJSON_DISABLE_DEPRECATED_WARNING // Disable CRT_SECURE warning on MSVC: manually verified this is safe
+      char *lvl = getenv("SIMDJSON_LOG_LEVEL");
+  SIMDJSON_POP_DISABLE_WARNINGS
+  if (lvl && simdjson_strcasecmp(lvl, "ERROR") == 0) { return log_level::error; }
+  return log_level::info;
+}
+
+static inline log_level log_threshold()
+{
+  static log_level threshold = get_log_level_from_env();
+  return threshold;
+}
+
+static inline bool should_log(log_level level)
+{
+  return level >= log_threshold();
+}
+
+inline void log_event(const json_iterator &iter, const char *type, std::string_view detail, int delta, int depth_delta) noexcept {
+  log_line(iter, "", type, detail, delta, depth_delta, log_level::info);
+}
+
+inline void log_value(const json_iterator &iter, token_position index, depth_t depth, const char *type, std::string_view detail) noexcept {
+  log_line(iter, index, depth, "", type, detail, log_level::info);
+}
+inline void log_value(const json_iterator &iter, const char *type, std::string_view detail, int delta, int depth_delta) noexcept {
+  log_line(iter, "", type, detail, delta, depth_delta, log_level::info);
+}
+
+inline void log_start_value(const json_iterator &iter, token_position index, depth_t depth, const char *type, std::string_view detail) noexcept {
+  log_line(iter, index, depth, "+", type, detail, log_level::info);
+  if (LOG_ENABLED) { log_depth++; }
+}
+inline void log_start_value(const json_iterator &iter, const char *type, int delta, int depth_delta) noexcept {
+  log_line(iter, "+", type, "", delta, depth_delta, log_level::info);
+  if (LOG_ENABLED) { log_depth++; }
+}
+
+inline void log_end_value(const json_iterator &iter, const char *type, int delta, int depth_delta) noexcept {
+  if (LOG_ENABLED) { log_depth--; }
+  log_line(iter, "-", type, "", delta, depth_delta, log_level::info);
+}
+
+inline void log_error(const json_iterator &iter, const char *error, const char *detail, int delta, int depth_delta) noexcept {
+  log_line(iter, "ERROR: ", error, detail, delta, depth_delta, log_level::error);
+}
+inline void log_error(const json_iterator &iter, token_position index, depth_t depth, const char *error, const char *detail) noexcept {
+  log_line(iter, index, depth, "ERROR: ", error, detail, log_level::error);
+}
+
+inline void log_event(const value_iterator &iter, const char *type, std::string_view detail, int delta, int depth_delta) noexcept {
+  log_event(iter.json_iter(), type, detail, delta, depth_delta);
+}
+
+inline void log_value(const value_iterator &iter, const char *type, std::string_view detail, int delta, int depth_delta) noexcept {
+  log_value(iter.json_iter(), type, detail, delta, depth_delta);
+}
+
+inline void log_start_value(const value_iterator &iter, const char *type, int delta, int depth_delta) noexcept {
+  log_start_value(iter.json_iter(), type, delta, depth_delta);
+}
+
+inline void log_end_value(const value_iterator &iter, const char *type, int delta, int depth_delta) noexcept {
+  log_end_value(iter.json_iter(), type, delta, depth_delta);
+}
+
+inline void log_error(const value_iterator &iter, const char *error, const char *detail, int delta, int depth_delta) noexcept {
+  log_error(iter.json_iter(), error, detail, delta, depth_delta);
+}
+
+inline void log_headers() noexcept {
+  if (LOG_ENABLED) {
+    if (simdjson_unlikely(should_log(log_level::info))) {
+      // Technically a static variable is not thread-safe, but if you are using threads and logging... well...
+      static bool displayed_hint{false};
+      log_depth = 0;
+      printf("\n");
+      if (!displayed_hint) {
+        // We only print this helpful header once.
+        printf("# Logging provides the depth and position of the iterator user-visible steps:\n");
+        printf("# +array says 'this is where we were when we discovered the start array'\n");
+        printf(
+            "# -array says 'this is where we were when we ended the array'\n");
+        printf("# skip says 'this is a structural or value I am skipping'\n");
+        printf("# +/-skip says 'this is a start/end array or object I am skipping'\n");
+        printf("#\n");
+        printf("# The indentation of the terms (array, string,...) indicates the depth,\n");
+        printf("# in addition to the depth being displayed.\n");
+        printf("#\n");
+        printf("# Every token in the document has a single depth determined by the tokens before it,\n");
+        printf("# and is not affected by what the token actually is.\n");
+        printf("#\n");
+        printf("# Not all structural elements are presented as tokens in the logs.\n");
+        printf("#\n");
+        printf("# We never give control to the user within an empty array or an empty object.\n");
+        printf("#\n");
+        printf("# Inside an array, having a depth greater than the array's depth means that\n");
+        printf("# we are pointing inside a value.\n");
+        printf("# Having a depth equal to the array means that we are pointing right before a value.\n");
+        printf("# Having a depth smaller than the array means that we have moved beyond the array.\n");
+        displayed_hint = true;
+      }
+      printf("\n");
+      printf("| %-*s ", LOG_EVENT_LEN, "Event");
+      printf("| %-*s ", LOG_BUFFER_LEN, "Buffer");
+      printf("| %-*s ", LOG_SMALL_BUFFER_LEN, "Next");
+      // printf("| %-*s ", 5,                    "Next#");
+      printf("| %-*s ", 5, "Depth");
+      printf("| Detail ");
+      printf("|\n");
+
+      printf("|%.*s", LOG_EVENT_LEN + 2, DASHES);
+      printf("|%.*s", LOG_BUFFER_LEN + 2, DASHES);
+      printf("|%.*s", LOG_SMALL_BUFFER_LEN + 2, DASHES);
+      // printf("|%.*s", 5+2, DASHES);
+      printf("|%.*s", 5 + 2, DASHES);
+      printf("|--------");
+      printf("|\n");
+      fflush(stdout);
+    }
+  }
+}
+
+template 
+inline void log_line(const json_iterator &iter, const char *title_prefix, const char *title, std::string_view detail, int delta, int depth_delta, log_level level, Args&&... args) noexcept {
+  log_line(iter, iter.position()+delta, depth_t(iter.depth()+depth_delta), title_prefix, title, detail, level, std::forward(args)...);
+}
+
+template 
+inline void log_line(const json_iterator &iter, token_position index, depth_t depth, const char *title_prefix, const char *title, std::string_view detail, log_level level, Args&&... args) noexcept {
+  if (LOG_ENABLED) {
+    if (simdjson_unlikely(should_log(level))) {
+      const int indent = depth * 2;
+      const auto buf = iter.token.buf;
+      auto msg = string_format(title, std::forward(args)...);
+      printf("| %*s%s%-*s ", indent, "", title_prefix,
+             LOG_EVENT_LEN - indent - int(strlen(title_prefix)), msg.c_str());
+      {
+        // Print the current structural.
+        printf("| ");
+        // Before we begin, the index might point right before the document.
+        // This could be unsafe, see https://github.com/simdjson/simdjson/discussions/1938
+        if (index < iter._root) {
+          printf("%*s", LOG_BUFFER_LEN, "");
+        } else {
+          auto current_structural = &buf[*index];
+          for (int i = 0; i < LOG_BUFFER_LEN; i++) {
+            printf("%c", printable_char(current_structural[i]));
+          }
+        }
+        printf(" ");
+      }
+      {
+        // Print the next structural.
+        printf("| ");
+        auto next_structural = &buf[*(index + 1)];
+        for (int i = 0; i < LOG_SMALL_BUFFER_LEN; i++) {
+          printf("%c", printable_char(next_structural[i]));
+        }
+        printf(" ");
+      }
+      // printf("| %5u ", *(index+1));
+      printf("| %5i ", depth);
+      printf("| %6.*s ", int(detail.size()), detail.data());
+      printf("|\n");
+      fflush(stdout);
+    }
+  }
+}
+
+} // namespace logger
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
+/* end file simdjson/generic/ondemand/logger-inl.h for arm64 */
+/* including simdjson/generic/ondemand/object-inl.h for arm64: #include "simdjson/generic/ondemand/object-inl.h" */
+/* begin file simdjson/generic/ondemand/object-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/field.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/jsonpathutil.h" */
+/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_string_builder.h"  // for constevalutil::fixed_string */
+/* amalgamation skipped (editor-only): #include  */
+/* amalgamation skipped (editor-only): #endif */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+simdjson_inline simdjson_result object::find_field_unordered(const std::string_view key) & noexcept {
+  bool has_value;
+  SIMDJSON_TRY( iter.find_field_unordered_raw(key).get(has_value) );
+  if (!has_value) {
+    logger::log_line(iter.json_iter(), "ERROR: ", "Cannot find key %.*s", "", -1, 0, logger::log_level::error, static_cast(key.size()), key.data());
+    return NO_SUCH_FIELD;
+  }
+  return value(iter.child());
+}
+simdjson_inline simdjson_result object::find_field_unordered(const std::string_view key) && noexcept {
+  bool has_value;
+  SIMDJSON_TRY( iter.find_field_unordered_raw(key).get(has_value) );
+  if (!has_value) {
+    logger::log_line(iter.json_iter(), "ERROR: ", "Cannot find key %.*s", "", -1, 0, logger::log_level::error, static_cast(key.size()), key.data());
+    return NO_SUCH_FIELD;
+  }
+  return value(iter.child());
+}
+simdjson_inline simdjson_result object::operator[](const std::string_view key) & noexcept {
+  return find_field_unordered(key);
+}
+simdjson_inline simdjson_result object::operator[](const std::string_view key) && noexcept {
+  return std::forward(*this).find_field_unordered(key);
+}
+simdjson_inline simdjson_result object::find_field(const std::string_view key) & noexcept {
+  bool has_value;
+  SIMDJSON_TRY( iter.find_field_raw(key).get(has_value) );
+  if (!has_value) {
+    logger::log_line(iter.json_iter(), "ERROR: ", "Cannot find key %.*s", "", -1, 0, logger::log_level::error, static_cast(key.size()), key.data());
+    return NO_SUCH_FIELD;
+  }
+  return value(iter.child());
+}
+simdjson_inline simdjson_result object::find_field(const std::string_view key) && noexcept {
+  bool has_value;
+  SIMDJSON_TRY( iter.find_field_raw(key).get(has_value) );
+  if (!has_value) {
+    logger::log_line(iter.json_iter(), "ERROR: ", "Cannot find key %.*s", "", -1, 0, logger::log_level::error, static_cast(key.size()), key.data());
+    return NO_SUCH_FIELD;
+  }
+  return value(iter.child());
+}
+
+simdjson_inline simdjson_result object::start(value_iterator &iter) noexcept {
+  SIMDJSON_TRY( iter.start_object().error() );
+  return object(iter);
+}
+simdjson_inline simdjson_result object::start_root(value_iterator &iter) noexcept {
+  SIMDJSON_TRY( iter.start_root_object().error() );
+  return object(iter);
+}
+simdjson_warn_unused simdjson_inline error_code object::consume() noexcept {
+  if(iter.is_at_key()) {
+    /**
+     * whenever you are pointing at a key, calling skip_child() is
+     * unsafe because you will hit a string and you will assume that
+     * it is string value, and this mistake will lead you to make bad
+     * depth computation.
+     */
+    /**
+     * We want to 'consume' the key. We could really
+     * just do _json_iter->return_current_and_advance(); at this
+     * point, but, for clarity, we will use the high-level API to
+     * eat the key. We assume that the compiler optimizes away
+     * most of the work.
+     */
+    simdjson_unused raw_json_string actual_key;
+    auto error = iter.field_key().get(actual_key);
+    if (error) { iter.abandon(); return error; };
+    // Let us move to the value while we are at it.
+    if ((error = iter.field_value())) { iter.abandon(); return error; }
+  }
+  auto error_skip = iter.json_iter().skip_child(iter.depth()-1);
+  if(error_skip) { iter.abandon(); }
+  return error_skip;
+}
+
+simdjson_inline simdjson_result object::raw_json() noexcept {
+  const uint8_t * starting_point{iter.peek_start()};
+  auto error = consume();
+  if(error) { return error; }
+  const uint8_t * final_point{iter._json_iter->peek()};
+  return std::string_view(reinterpret_cast(starting_point), size_t(final_point - starting_point));
+}
+
+simdjson_inline simdjson_result object::started(value_iterator &iter) noexcept {
+  SIMDJSON_TRY( iter.started_object().error() );
+  return object(iter);
+}
+
+simdjson_inline object object::resume(const value_iterator &iter) noexcept {
+  return iter;
+}
+
+simdjson_inline object::object(const value_iterator &_iter) noexcept
+  : iter{_iter}
+{
+}
+
+simdjson_inline simdjson_result object::begin() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  if (!iter.is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
+#endif
+  return object_iterator(iter);
+}
+simdjson_inline simdjson_result object::end() noexcept {
+  return object_iterator(iter);
+}
+
+inline simdjson_result object::at_pointer(std::string_view json_pointer) noexcept {
+  if (json_pointer[0] != '/') { return INVALID_JSON_POINTER; }
+  json_pointer = json_pointer.substr(1);
+  size_t slash = json_pointer.find('/');
+  std::string_view key = json_pointer.substr(0, slash);
+  // Grab the child with the given key
+  simdjson_result child;
+
+  // If there is an escape character in the key, unescape it and then get the child.
+  size_t escape = key.find('~');
+  if (escape != std::string_view::npos) {
+    // Unescape the key
+    std::string unescaped(key);
+    do {
+      switch (unescaped[escape+1]) {
+        case '0':
+          unescaped.replace(escape, 2, "~");
+          break;
+        case '1':
+          unescaped.replace(escape, 2, "/");
+          break;
+        default:
+          return INVALID_JSON_POINTER; // "Unexpected ~ escape character in JSON pointer");
+      }
+      escape = unescaped.find('~', escape+1);
+    } while (escape != std::string::npos);
+    child = find_field(unescaped);  // Take note find_field does not unescape keys when matching
+  } else {
+    child = find_field(key);
+  }
+  if(child.error()) {
+    return child; // we do not continue if there was an error
+  }
+  // If there is a /, we have to recurse and look up more of the path
+  if (slash != std::string_view::npos) {
+    child = child.at_pointer(json_pointer.substr(slash));
+  }
+  return child;
+}
+
+inline simdjson_result object::at_path(std::string_view json_path) noexcept {
+  auto json_pointer = json_path_to_pointer_conversion(json_path);
+  if (json_pointer == "-1") {
+    return INVALID_JSON_POINTER;
+  }
+  return at_pointer(json_pointer);
+}
+
+inline simdjson_result> object::at_path_with_wildcard(std::string_view json_path) noexcept {
+  std::vector result;
+
+  auto result_pair = get_next_key_and_json_path(json_path);
+  std::string_view key = result_pair.first;
+  std::string_view remaining_path = result_pair.second;
+  // Handle when its the case for wildcard
+  if (key == "*") {
+    // Loop through each field in the object
+    for (auto field : *this) {
+      value val;
+      SIMDJSON_TRY(field.value().get(val));
+
+      if (remaining_path.empty()) {
+        result.push_back(std::move(val));
+      } else {
+        auto nested_result = val.at_path_with_wildcard(remaining_path);
+
+        if (nested_result.error()) {
+          return nested_result.error();
+        }
+        // Extract and append all nested matches to our result
+        std::vector nested_vec;
+        SIMDJSON_TRY(std::move(nested_result).get(nested_vec));
+
+        result.insert(result.end(),
+                     std::make_move_iterator(nested_vec.begin()),
+                     std::make_move_iterator(nested_vec.end()));
+      }
+    }
+    return result;
+  } else {
+    value val;
+    SIMDJSON_TRY(find_field(key).get(val));
+
+    if (remaining_path.empty()) {
+      result.push_back(std::move(val));
+      return result;
+    } else {
+      return val.at_path_with_wildcard(remaining_path);
+    }
+  }
+}
+
+simdjson_inline simdjson_result object::count_fields() & noexcept {
+  size_t count{0};
+  // Important: we do not consume any of the values.
+  for(simdjson_unused auto v : *this) { count++; }
+  // The above loop will always succeed, but we want to report errors.
+  if(iter.error()) { return iter.error(); }
+  // We need to move back at the start because we expect users to iterate through
+  // the object after counting the number of elements.
+  iter.reset_object();
+  return count;
+}
+
+simdjson_inline simdjson_result object::is_empty() & noexcept {
+  bool is_not_empty;
+  auto error = iter.reset_object().get(is_not_empty);
+  if(error) { return error; }
+  return !is_not_empty;
+}
+
+simdjson_inline simdjson_result object::reset() & noexcept {
+  return iter.reset_object();
+}
+
+#if SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
+
+template
+  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
+simdjson_warn_unused simdjson_inline error_code object::extract_into(T& out) & noexcept {
+  // Helper to check if a field name matches any of the requested fields
+  auto should_extract = [](std::string_view field_name) constexpr -> bool {
+    return ((FieldNames.view() == field_name) || ...);
+  };
+
+  // Iterate through all members of T using reflection
+  template for (constexpr auto mem : std::define_static_array(
+      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+
+    if constexpr (!std::meta::is_const(mem) && std::meta::is_public(mem)) {
+      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+
+      // Only extract this field if it's in our list of requested fields
+      if constexpr (should_extract(key)) {
+        // Try to find and extract the field
+        if constexpr (concepts::optional_type) {
+          // For optional fields, it's ok if they're missing
+          auto field_result = find_field_unordered(key);
+          if (!field_result.error()) {
+            auto error = field_result.get(out.[:mem:]);
+            if (error && error != NO_SUCH_FIELD) {
+              return error;
+            }
+          } else if (field_result.error() != NO_SUCH_FIELD) {
+            return field_result.error();
+          } else {
+            out.[:mem:].reset();
+          }
+        } else {
+          // For required fields (in the requested list), fail if missing
+          SIMDJSON_TRY((*this)[key].get(out.[:mem:]));
+        }
+      }
+    }
+  };
+
+  return SUCCESS;
+}
+
+#endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::object &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+  if (error()) { return error(); }
+  return first.begin();
+}
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
+  if (error()) { return error(); }
+  return first.end();
+}
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+  if (error()) { return error(); }
+  return first.find_field_unordered(key);
+}
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
+  if (error()) { return error(); }
+  return std::forward(first).find_field_unordered(key);
+}
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+  if (error()) { return error(); }
+  return first[key];
+}
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
+  if (error()) { return error(); }
+  return std::forward(first)[key];
+}
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+  if (error()) { return error(); }
+  return first.find_field(key);
+}
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
+  if (error()) { return error(); }
+  return std::forward(first).find_field(key);
+}
+
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+  if (error()) { return error(); }
+  return first.at_pointer(json_pointer);
+}
+
+simdjson_inline simdjson_result simdjson_result::at_path(
+    std::string_view json_path) noexcept {
+  if (error()) {
+    return error();
+  }
+  return first.at_path(json_path);
+}
+
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+  if (error()) { return error(); }
+  return first.at_path_with_wildcard(json_path);
+}
+
+inline simdjson_result simdjson_result::reset() noexcept {
+  if (error()) { return error(); }
+  return first.reset();
+}
+
+inline simdjson_result simdjson_result::is_empty() noexcept {
+  if (error()) { return error(); }
+  return first.is_empty();
+}
+
+simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
+  if (error()) { return error(); }
+  return first.count_fields();
+}
+
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+  if (error()) { return error(); }
+  return first.raw_json();
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H
+/* end file simdjson/generic/ondemand/object-inl.h for arm64 */
+/* including simdjson/generic/ondemand/object_iterator-inl.h for arm64: #include "simdjson/generic/ondemand/object_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/object_iterator-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/field-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+//
+// object_iterator
+//
+
+simdjson_inline object_iterator::object_iterator(const value_iterator &_iter) noexcept
+  : iter{_iter}
+{}
+
+simdjson_inline simdjson_result object_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  // We must call * once per iteration.
+  SIMDJSON_ASSUME(!has_been_referenced);
+  has_been_referenced = true;
+#endif
+  error_code error = iter.error();
+  if (error) { iter.abandon(); return error; }
+  auto result = field::start(iter);
+  // TODO this is a safety rail ... users should exit loops as soon as they receive an error.
+  // Nonetheless, let's see if performance is OK with this if statement--the compiler may give it to us for free.
+  if (result.error()) { iter.abandon(); }
+  return result;
+}
+simdjson_inline bool object_iterator::operator==(const object_iterator &other) const noexcept {
+  return !(*this != other);
+}
+simdjson_inline bool object_iterator::operator!=(const object_iterator &) const noexcept {
+  return iter.is_open();
+}
+
+SIMDJSON_PUSH_DISABLE_WARNINGS
+SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
+simdjson_inline object_iterator &object_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   // Before calling ++, we must have called *.
+   SIMDJSON_ASSUME(has_been_referenced);
+   has_been_referenced = false;
+#endif
+  // TODO this is a safety rail ... users should exit loops as soon as they receive an error.
+  // Nonetheless, let's see if performance is OK with this if statement--the compiler may give it to us for free.
+  if (!iter.is_open()) { return *this; } // Iterator will be released if there is an error
+
+  simdjson_unused error_code error;
+  if ((error = iter.skip_child() )) { return *this; }
+
+  simdjson_unused bool has_value;
+  if ((error = iter.has_next_field().get(has_value) )) { return *this; };
+  return *this;
+}
+SIMDJSON_POP_DISABLE_WARNINGS
+
+//
+// ### Live States
+//
+// While iterating or looking up values, depth >= iter.depth. at_start may vary. Error is
+// always SUCCESS:
+//
+// - Start: This is the state when the object is first found and the iterator is just past the {.
+//   In this state, at_start == true.
+// - Next: After we hand a scalar value to the user, or an array/object which they then fully
+//   iterate over, the iterator is at the , or } before the next value. In this state,
+//   depth == iter.depth, at_start == false, and error == SUCCESS.
+// - Unfinished Business: When we hand an array/object to the user which they do not fully
+//   iterate over, we need to finish that iteration by skipping child values until we reach the
+//   Next state. In this state, depth > iter.depth, at_start == false, and error == SUCCESS.
+//
+// ## Error States
+//
+// In error states, we will yield exactly one more value before stopping. iter.depth == depth
+// and at_start is always false. We decrement after yielding the error, moving to the Finished
+// state.
+//
+// - Chained Error: When the object iterator is part of an error chain--for example, in
+//   `for (auto tweet : doc["tweets"])`, where the tweet field may be missing or not be an
+//   object--we yield that error in the loop, exactly once. In this state, error != SUCCESS and
+//   iter.depth == depth, and at_start == false. We decrement depth when we yield the error.
+// - Missing Comma Error: When the iterator ++ method discovers there is no comma between fields,
+//   we flag that as an error and treat it exactly the same as a Chained Error. In this state,
+//   error == TAPE_ERROR, iter.depth == depth, and at_start == false.
+//
+// Errors that occur while reading a field to give to the user (such as when the key is not a
+// string or the field is missing a colon) are yielded immediately. Depth is then decremented,
+// moving to the Finished state without transitioning through an Error state at all.
+//
+// ## Terminal State
+//
+// The terminal state has iter.depth < depth. at_start is always false.
+//
+// - Finished: When we have reached a }, we are finished. We signal this by decrementing depth.
+//   In this state, iter.depth < depth, at_start == false, and error == SUCCESS.
+//
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(
+  arm64::ondemand::object_iterator &&value
+) noexcept
+  : implementation_simdjson_result_base(std::forward(value))
+{
+  first.iter.assert_is_valid();
+}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : implementation_simdjson_result_base({}, error)
+{
+}
+
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+  if (error()) { return error(); }
+  return *first;
+}
+// If we're iterating and there is an error, return the error once.
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+  if (!first.iter.is_valid()) { return !error(); }
+  return first == other.first;
+}
+// If we're iterating and there is an error, return the error once.
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+  if (!first.iter.is_valid()) { return error(); }
+  return first != other.first;
+}
+// Checks for ']' and ','
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+  // Clear the error if there is one, so we don't yield it twice
+  if (error()) { second = SUCCESS; return *this; }
+  ++first;
+  return *this;
+}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_INL_H
+/* end file simdjson/generic/ondemand/object_iterator-inl.h for arm64 */
+/* including simdjson/generic/ondemand/parser-inl.h for arm64: #include "simdjson/generic/ondemand/parser-inl.h" */
+/* begin file simdjson/generic/ondemand/parser-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/padded_string.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/padded_string_view.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/implementation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/dom_parser_implementation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/dom/base.h" // for MINIMAL_DOCUMENT_CAPACITY */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document_stream.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/parser.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+simdjson_inline parser::parser(size_t max_capacity) noexcept
+  : _max_capacity{max_capacity} {
+}
+
+simdjson_warn_unused simdjson_inline error_code parser::allocate(size_t new_capacity, size_t new_max_depth) noexcept {
+  if (new_capacity > max_capacity()) { return CAPACITY; }
+  if (string_buf && new_capacity == capacity() && new_max_depth == max_depth()) { return SUCCESS; }
+
+  // string_capacity copied from document::allocate
+  _capacity = 0;
+  size_t string_capacity = SIMDJSON_ROUNDUP_N(5 * new_capacity / 3 + SIMDJSON_PADDING, 64);
+  string_buf.reset(new (std::nothrow) uint8_t[string_capacity]);
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  start_positions.reset(new (std::nothrow) token_position[new_max_depth]);
+#endif
+  if (implementation) {
+    SIMDJSON_TRY( implementation->set_capacity(new_capacity) );
+    SIMDJSON_TRY( implementation->set_max_depth(new_max_depth) );
+  } else {
+    SIMDJSON_TRY( simdjson::get_active_implementation()->create_dom_parser_implementation(new_capacity, new_max_depth, implementation) );
+  }
+  _capacity = new_capacity;
+  _max_depth = new_max_depth;
+  return SUCCESS;
+}
+#if SIMDJSON_DEVELOPMENT_CHECKS
+simdjson_inline simdjson_warn_unused bool parser::string_buffer_overflow(const uint8_t *string_buf_loc) const noexcept {
+  return (string_buf_loc < string_buf.get()) || (size_t(string_buf_loc - string_buf.get()) >= capacity());
+}
+#endif
+
+simdjson_warn_unused simdjson_inline simdjson_result parser::iterate(padded_string_view json) & noexcept {
+  if (!json.has_sufficient_padding()) { return INSUFFICIENT_PADDING; }
+
+  json.remove_utf8_bom();
+
+  // Allocate if needed
+  if (capacity() < json.length() || !string_buf) {
+    SIMDJSON_TRY( allocate(json.length(), max_depth()) );
+  }
+
+  // Run stage 1.
+  SIMDJSON_TRY( implementation->stage1(reinterpret_cast(json.data()), json.length(), stage1_mode::regular) );
+  return document::start({ reinterpret_cast(json.data()), this });
+}
+
+#ifdef SIMDJSON_EXPERIMENTAL_ALLOW_INCOMPLETE_JSON
+simdjson_warn_unused simdjson_inline simdjson_result parser::iterate_allow_incomplete_json(padded_string_view json) & noexcept {
+  if (!json.has_sufficient_padding()) { return INSUFFICIENT_PADDING; }
+
+  json.remove_utf8_bom();
+
+  // Allocate if needed
+  if (capacity() < json.length() || !string_buf) {
+    SIMDJSON_TRY( allocate(json.length(), max_depth()) );
+  }
+
+  // Run stage 1.
+  const simdjson::error_code err = implementation->stage1(reinterpret_cast(json.data()), json.length(), stage1_mode::regular);
+  if (err) {
+    if (err != UNCLOSED_STRING)
+      return err;
+  }
+  return document::start({ reinterpret_cast(json.data()), this, true });
+}
+#endif // SIMDJSON_EXPERIMENTAL_ALLOW_INCOMPLETE_JSON
+
+simdjson_warn_unused simdjson_inline simdjson_result parser::iterate(const char *json, size_t len, size_t allocated) & noexcept {
+  return iterate(padded_string_view(json, len, allocated));
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result parser::iterate(const uint8_t *json, size_t len, size_t allocated) & noexcept {
+  return iterate(padded_string_view(json, len, allocated));
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result parser::iterate(std::string_view json, size_t allocated) & noexcept {
+  return iterate(padded_string_view(json, allocated));
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result parser::iterate(std::string &json) & noexcept {
+  return iterate(pad_with_reserve(json));
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result parser::iterate(const std::string &json) & noexcept {
+  return iterate(padded_string_view(json));
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result parser::iterate(const simdjson_result &result) & noexcept {
+  // We don't presently have a way to temporarily get a const T& from a simdjson_result without throwing an exception
+  SIMDJSON_TRY( result.error() );
+  padded_string_view json = result.value_unsafe();
+  return iterate(json);
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result parser::iterate(const simdjson_result &result) & noexcept {
+  // We don't presently have a way to temporarily get a const T& from a simdjson_result without throwing an exception
+  SIMDJSON_TRY( result.error() );
+  const padded_string &json = result.value_unsafe();
+  return iterate(json);
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result parser::iterate_raw(padded_string_view json) & noexcept {
+  if (!json.has_sufficient_padding()) { return INSUFFICIENT_PADDING; }
+
+  json.remove_utf8_bom();
+
+  // Allocate if needed
+  if (capacity() < json.length()) {
+    SIMDJSON_TRY( allocate(json.length(), max_depth()) );
+  }
+
+  // Run stage 1.
+  SIMDJSON_TRY( implementation->stage1(reinterpret_cast(json.data()), json.length(), stage1_mode::regular) );
+  return json_iterator(reinterpret_cast(json.data()), this);
+}
+
+inline simdjson_result parser::iterate_many(const uint8_t *buf, size_t len, size_t batch_size, bool allow_comma_separated) noexcept {
+  // Warning: no check is done on the buffer padding. We trust the user.
+  if(batch_size < MINIMAL_BATCH_SIZE) { batch_size = MINIMAL_BATCH_SIZE; }
+  if((len >= 3) && (std::memcmp(buf, "\xEF\xBB\xBF", 3) == 0)) {
+    buf += 3;
+    len -= 3;
+  }
+  if(allow_comma_separated && batch_size < len) { batch_size = len; }
+  return document_stream(*this, buf, len, batch_size, allow_comma_separated);
+}
+
+inline simdjson_result parser::iterate_many(const char *buf, size_t len, size_t batch_size, bool allow_comma_separated) noexcept {
+  // Warning: no check is done on the buffer padding. We trust the user.
+  return iterate_many(reinterpret_cast(buf), len, batch_size, allow_comma_separated);
+}
+inline simdjson_result parser::iterate_many(padded_string_view s, size_t batch_size, bool allow_comma_separated) noexcept {
+  if (!s.has_sufficient_padding()) { return INSUFFICIENT_PADDING; }
+  return iterate_many(s.data(), s.length(), batch_size, allow_comma_separated);
+}
+inline simdjson_result parser::iterate_many(const padded_string &s, size_t batch_size, bool allow_comma_separated) noexcept {
+  return iterate_many(padded_string_view(s), batch_size, allow_comma_separated);
+}
+inline simdjson_result parser::iterate_many(const std::string &s, size_t batch_size, bool allow_comma_separated) noexcept {
+  return iterate_many(padded_string_view(s), batch_size, allow_comma_separated);
+}
+inline simdjson_result parser::iterate_many(std::string &s, size_t batch_size, bool allow_comma_separated) noexcept {
+  return iterate_many(pad(s), batch_size, allow_comma_separated);
+}
+simdjson_pure simdjson_inline size_t parser::capacity() const noexcept {
+  return _capacity;
+}
+simdjson_pure simdjson_inline size_t parser::max_capacity() const noexcept {
+  return _max_capacity;
+}
+simdjson_pure simdjson_inline size_t parser::max_depth() const noexcept {
+  return _max_depth;
+}
+
+simdjson_inline void parser::set_max_capacity(size_t max_capacity) noexcept {
+  if(max_capacity < dom::MINIMAL_DOCUMENT_CAPACITY) {
+    _max_capacity = max_capacity;
+  } else {
+    _max_capacity = dom::MINIMAL_DOCUMENT_CAPACITY;
+  }
+}
+
+simdjson_inline simdjson_warn_unused simdjson_result parser::unescape(raw_json_string in, uint8_t *&dst, bool allow_replacement) const noexcept {
+  uint8_t *end = implementation->parse_string(in.buf, dst, allow_replacement);
+  if (!end) { return STRING_ERROR; }
+  std::string_view result(reinterpret_cast(dst), end-dst);
+  dst = end;
+  return result;
+}
+
+simdjson_inline simdjson_warn_unused simdjson_result parser::unescape_wobbly(raw_json_string in, uint8_t *&dst) const noexcept {
+  uint8_t *end = implementation->parse_wobbly_string(in.buf, dst);
+  if (!end) { return STRING_ERROR; }
+  std::string_view result(reinterpret_cast(dst), end-dst);
+  dst = end;
+  return result;
+}
+
+simdjson_inline simdjson_warn_unused ondemand::parser& parser::get_parser() {
+  return *parser::get_parser_instance();
+}
+
+simdjson_inline bool release_parser() {
+  auto &parser_instance = parser::get_threadlocal_parser_if_exists();
+  if (parser_instance) {
+    parser_instance.reset();
+    return true;
+  }
+  return false;
+}
+
+simdjson_inline simdjson_warn_unused std::unique_ptr& parser::get_parser_instance() {
+  std::unique_ptr& parser_instance = get_threadlocal_parser_if_exists();
+  if (!parser_instance) {
+    parser_instance.reset(new ondemand::parser());
+  }
+  return parser_instance;
+}
+
+simdjson_inline simdjson_warn_unused std::unique_ptr& parser::get_threadlocal_parser_if_exists() {
+  // @the-moisrex points out that this could be implemented with std::optional (C++17).
+  thread_local std::unique_ptr parser_instance = nullptr;
+  return parser_instance;
+}
+
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::parser &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
+/* end file simdjson/generic/ondemand/parser-inl.h for arm64 */
+/* including simdjson/generic/ondemand/raw_json_string-inl.h for arm64: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_iterator-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base-inl.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+namespace arm64 {
+namespace ondemand {
+
+simdjson_inline raw_json_string::raw_json_string(const uint8_t * _buf) noexcept : buf{_buf} {}
+
+simdjson_inline const char * raw_json_string::raw() const noexcept {
+  return reinterpret_cast(buf);
+}
+
+simdjson_inline char raw_json_string::operator[](size_t i) const noexcept {
+  return reinterpret_cast(buf)[i];
+}
+
+simdjson_inline bool raw_json_string::is_free_from_unescaped_quote(std::string_view target) noexcept {
+  size_t pos{0};
+  while(pos < target.size()) {
+    pos = target.find('"', pos);
+    if(pos == std::string_view::npos) { return true; }
+    if(pos != 0 && target[pos-1] != '\\') { return false; }
+    if(pos > 1 && target[pos-2] == '\\') {
+      size_t backslash_count{2};
+      for(size_t i = 3; i <= pos; i++) {
+        if(target[pos-i] == '\\') { backslash_count++; }
+        else { break; }
+      }
+      if(backslash_count % 2 == 0) { return false; }
+    }
+    pos++;
+  }
+  return true;
+}
+
+simdjson_inline bool raw_json_string::is_free_from_unescaped_quote(const char* target) noexcept {
+  size_t pos{0};
+  while(target[pos]) {
+    const char * result = strchr(target+pos, '"');
+    if(result == nullptr) { return true; }
+    pos = result - target;
+    if(pos != 0 && target[pos-1] != '\\') { return false; }
+    if(pos > 1 && target[pos-2] == '\\') {
+      size_t backslash_count{2};
+      for(size_t i = 3; i <= pos; i++) {
+        if(target[pos-i] == '\\') { backslash_count++; }
+        else { break; }
+      }
+      if(backslash_count % 2 == 0) { return false; }
+    }
+    pos++;
+  }
+  return true;
+}
+
+
+simdjson_inline bool raw_json_string::unsafe_is_equal(size_t length, std::string_view target) const noexcept {
+  // If we are going to call memcmp, then we must know something about the length of the raw_json_string.
+  return (length >= target.size()) && (raw()[target.size()] == '"') && !memcmp(raw(), target.data(), target.size());
+}
+
+simdjson_inline bool raw_json_string::unsafe_is_equal(std::string_view target) const noexcept {
+  // Assumptions: does not contain unescaped quote characters("), and
+  // the raw content is quote terminated within a valid JSON string.
+  if(target.size() <= SIMDJSON_PADDING) {
+    return (raw()[target.size()] == '"') && !memcmp(raw(), target.data(), target.size());
+  }
+  const char * r{raw()};
+  size_t pos{0};
+  for(;pos < target.size();pos++) {
+    if(r[pos] != target[pos]) { return false; }
+  }
+  if(r[pos] != '"') { return false; }
+  return true;
+}
+
+simdjson_inline bool raw_json_string::is_equal(std::string_view target) const noexcept {
+  const char * r{raw()};
+  size_t pos{0};
+  bool escaping{false};
+  for(;pos < target.size();pos++) {
+    if(r[pos] != target[pos]) { return false; }
+    // if target is a compile-time constant and it is free from
+    // quotes, then the next part could get optimized away through
+    // inlining.
+    if((target[pos] == '"') && !escaping) {
+      // We have reached the end of the raw_json_string but
+      // the target is not done.
+      return false;
+    } else if(target[pos] == '\\') {
+      escaping = !escaping;
+    } else {
+      escaping = false;
+    }
+  }
+  if(r[pos] != '"') { return false; }
+  return true;
+}
+
+
+simdjson_inline bool raw_json_string::unsafe_is_equal(const char * target) const noexcept {
+  // Assumptions: 'target' does not contain unescaped quote characters, is null terminated and
+  // the raw content is quote terminated within a valid JSON string.
+  const char * r{raw()};
+  size_t pos{0};
+  for(;target[pos];pos++) {
+    if(r[pos] != target[pos]) { return false; }
+  }
+  if(r[pos] != '"') { return false; }
+  return true;
+}
+
+simdjson_inline bool raw_json_string::is_equal(const char* target) const noexcept {
+  // Assumptions: does not contain unescaped quote characters, and
+  // the raw content is quote terminated within a valid JSON string.
+  const char * r{raw()};
+  size_t pos{0};
+  bool escaping{false};
+  for(;target[pos];pos++) {
+    if(r[pos] != target[pos]) { return false; }
+    // if target is a compile-time constant and it is free from
+    // quotes, then the next part could get optimized away through
+    // inlining.
+    if((target[pos] == '"') && !escaping) {
+      // We have reached the end of the raw_json_string but
+      // the target is not done.
+      return false;
+    } else if(target[pos] == '\\') {
+      escaping = !escaping;
+    } else {
+      escaping = false;
+    }
+  }
+  if(r[pos] != '"') { return false; }
+  return true;
+}
+
+simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept {
+  return a.unsafe_is_equal(c);
+}
+
+simdjson_unused simdjson_inline bool operator==(std::string_view c, const raw_json_string &a) noexcept {
+  return a == c;
+}
+
+simdjson_unused simdjson_inline bool operator!=(const raw_json_string &a, std::string_view c) noexcept {
+  return !(a == c);
+}
+
+simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_json_string &a) noexcept {
+  return !(a == c);
+}
+
+
+simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape(json_iterator &iter, bool allow_replacement) const noexcept {
+  return iter.unescape(*this, allow_replacement);
+}
+
+simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape_wobbly(json_iterator &iter) const noexcept {
+  return iter.unescape_wobbly(*this);
+}
+
+simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, const raw_json_string &str) noexcept {
+  bool in_escape = false;
+  const char *s = str.raw();
+  while (true) {
+    switch (*s) {
+      case '\\': in_escape = !in_escape; break;
+      case '"': if (in_escape) { in_escape = false; } else { return out; } break;
+      default: if (in_escape) { in_escape = false; }
+    }
+    out << *s;
+    s++;
+  }
+}
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::raw_json_string &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
+  if (error()) { return error(); }
+  return first.raw();
+}
+simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
+  if (error()) { return error(); }
+  return first[i];
+}
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(arm64::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
+  if (error()) { return error(); }
+  return first.unescape(iter, allow_replacement);
+}
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(arm64::ondemand::json_iterator &iter) const noexcept {
+  if (error()) { return error(); }
+  return first.unescape_wobbly(iter);
+}
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
+/* end file simdjson/generic/ondemand/raw_json_string-inl.h for arm64 */
+/* including simdjson/generic/ondemand/token_iterator-inl.h for arm64: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/token_iterator-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/token_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base-inl.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+simdjson_inline token_iterator::token_iterator(
+  const uint8_t *_buf,
+  token_position position
+) noexcept : buf{_buf}, _position{position}
+{
+}
+
+simdjson_inline uint32_t token_iterator::current_offset() const noexcept {
+  return *(_position);
+}
+
+
+simdjson_inline const uint8_t *token_iterator::return_current_and_advance() noexcept {
+  return &buf[*(_position++)];
+}
+
+simdjson_inline const uint8_t *token_iterator::peek(token_position position) const noexcept {
+  return &buf[*position];
+}
+simdjson_inline uint32_t token_iterator::peek_index(token_position position) const noexcept {
+  return *position;
+}
+simdjson_inline uint32_t token_iterator::peek_length(token_position position) const noexcept {
+  return *(position+1) - *position;
+}
+
+simdjson_inline uint32_t token_iterator::peek_root_length(token_position position) const noexcept {
+  return *(position+2) - *(position) > *(position+1) - *(position) ?
+      *(position+1) - *(position)
+      : *(position+2) - *(position);
+}
+simdjson_inline const uint8_t *token_iterator::peek(int32_t delta) const noexcept {
+  return &buf[*(_position+delta)];
+}
+simdjson_inline uint32_t token_iterator::peek_index(int32_t delta) const noexcept {
+  return *(_position+delta);
+}
+simdjson_inline uint32_t token_iterator::peek_length(int32_t delta) const noexcept {
+  return *(_position+delta+1) - *(_position+delta);
+}
+
+simdjson_inline token_position token_iterator::position() const noexcept {
+  return _position;
+}
+simdjson_inline void token_iterator::set_position(token_position target_position) noexcept {
+  _position = target_position;
+}
+
+simdjson_inline bool token_iterator::operator==(const token_iterator &other) const noexcept {
+  return _position == other._position;
+}
+simdjson_inline bool token_iterator::operator!=(const token_iterator &other) const noexcept {
+  return _position != other._position;
+}
+simdjson_inline bool token_iterator::operator>(const token_iterator &other) const noexcept {
+  return _position > other._position;
+}
+simdjson_inline bool token_iterator::operator>=(const token_iterator &other) const noexcept {
+  return _position >= other._position;
+}
+simdjson_inline bool token_iterator::operator<(const token_iterator &other) const noexcept {
+  return _position < other._position;
+}
+simdjson_inline bool token_iterator::operator<=(const token_iterator &other) const noexcept {
+  return _position <= other._position;
+}
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::token_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
+/* end file simdjson/generic/ondemand/token_iterator-inl.h for arm64 */
+/* including simdjson/generic/ondemand/value_iterator-inl.h for arm64: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/value_iterator-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/atomparsing.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/numberparsing.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+
+simdjson_inline value_iterator::value_iterator(
+  json_iterator *json_iter,
+  depth_t depth,
+  token_position start_position
+) noexcept : _json_iter{json_iter}, _depth{depth}, _start_position{start_position}
+{
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::start_object() noexcept {
+  SIMDJSON_TRY( start_container('{', "Not an object", "object") );
+  return started_object();
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::start_root_object() noexcept {
+  SIMDJSON_TRY( start_container('{', "Not an object", "object") );
+  return started_root_object();
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::started_object() noexcept {
+  assert_at_container_start();
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  _json_iter->set_start_position(_depth, start_position());
+#endif
+  if (*_json_iter->peek() == '}') {
+    logger::log_value(*_json_iter, "empty object");
+    _json_iter->return_current_and_advance();
+    SIMDJSON_TRY(end_container());
+    return false;
+  }
+  return true;
+}
+
+simdjson_warn_unused simdjson_inline error_code value_iterator::check_root_object() noexcept {
+  // When in streaming mode, we cannot expect peek_last() to be the last structural element of the
+  // current document. It only works in the normal mode where we have indexed a single document.
+  // Note that adding a check for 'streaming' is not expensive since we only have at most
+  // one root element.
+  if ( ! _json_iter->streaming() ) {
+    // The following lines do not fully protect against garbage content within the
+    // object: e.g., `{"a":2} foo }`. Users concerned with garbage content should
+    // call `at_end()` on the document instance at the end of the processing to
+    // ensure that the processing has finished at the end.
+    //
+    if (*_json_iter->peek_last() != '}') {
+      _json_iter->abandon();
+      return report_error(INCOMPLETE_ARRAY_OR_OBJECT, "missing } at end");
+    }
+    // If the last character is } *and* the first gibberish character is also '}'
+    // then on-demand could accidentally go over. So we need additional checks.
+    // https://github.com/simdjson/simdjson/issues/1834
+    // Checking that the document is balanced requires a full scan which is potentially
+    // expensive, but it only happens in edge cases where the first padding character is
+    // a closing bracket.
+    if ((*_json_iter->peek(_json_iter->end_position()) == '}') && (!_json_iter->balanced())) {
+      _json_iter->abandon();
+      // The exact error would require more work. It will typically be an unclosed object.
+      return report_error(INCOMPLETE_ARRAY_OR_OBJECT, "the document is unbalanced");
+    }
+  }
+  return SUCCESS;
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::started_root_object() noexcept {
+  auto error = check_root_object();
+  if(error) { return error; }
+  return started_object();
+}
+
+simdjson_warn_unused simdjson_inline error_code value_iterator::end_container() noexcept {
+#if SIMDJSON_CHECK_EOF
+    if (depth() > 1 && at_end()) { return report_error(INCOMPLETE_ARRAY_OR_OBJECT, "missing parent ] or }"); }
+    // if (depth() <= 1 && !at_end()) { return report_error(INCOMPLETE_ARRAY_OR_OBJECT, "missing [ or { at start"); }
+#endif // SIMDJSON_CHECK_EOF
+    _json_iter->ascend_to(depth()-1);
+    return SUCCESS;
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::has_next_field() noexcept {
+  assert_at_next();
+  // It's illegal to call this unless there are more tokens: anything that ends in } or ] is
+  // obligated to verify there are more tokens if they are not the top level.
+  switch (*_json_iter->return_current_and_advance()) {
+    case '}':
+      logger::log_end_value(*_json_iter, "object");
+      SIMDJSON_TRY( end_container() );
+      return false;
+    case ',':
+      return true;
+    default:
+      return report_error(TAPE_ERROR, "Missing comma between object fields");
+  }
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::find_field_raw(const std::string_view key) noexcept {
+  error_code error;
+  bool has_value;
+  //
+  // Initially, the object can be in one of a few different places:
+  //
+  // 1. The start of the object, at the first field:
+  //
+  //    ```
+  //    { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //      ^ (depth 2, index 1)
+  //    ```
+  if (at_first_field()) {
+    has_value = true;
+
+  //
+  // 2. When a previous search did not yield a value or the object is empty:
+  //
+  //    ```
+  //    { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //                                     ^ (depth 0)
+  //    { }
+  //        ^ (depth 0, index 2)
+  //    ```
+  //
+  } else if (!is_open()) {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+    // If we're past the end of the object, we're being iterated out of order.
+    // Note: this is not perfect detection. It's possible the user is inside some other object; if so,
+    // this object iterator will blithely scan that object for fields.
+    if (_json_iter->depth() < depth() - 1) { return OUT_OF_ORDER_ITERATION; }
+#endif
+    return false;
+
+  // 3. When a previous search found a field or an iterator yielded a value:
+  //
+  //    ```
+  //    // When a field was not fully consumed (or not even touched at all)
+  //    { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //           ^ (depth 2)
+  //    // When a field was fully consumed
+  //    { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //                   ^ (depth 1)
+  //    // When the last field was fully consumed
+  //    { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //                                   ^ (depth 1)
+  //    ```
+  //
+  } else {
+    if ((error = skip_child() )) { abandon(); return error; }
+    if ((error = has_next_field().get(has_value) )) { abandon(); return error; }
+#if SIMDJSON_DEVELOPMENT_CHECKS
+    if (_json_iter->start_position(_depth) != start_position()) { return OUT_OF_ORDER_ITERATION; }
+#endif
+  }
+  while (has_value) {
+    // Get the key and colon, stopping at the value.
+    raw_json_string actual_key;
+    // size_t max_key_length = _json_iter->peek_length() - 2; // -2 for the two quotes
+    // Note: _json_iter->peek_length() - 2 might overflow if _json_iter->peek_length() < 2.
+    // field_key() advances the pointer and checks that '"' is found (corresponding to a key).
+    // The depth is left unchanged by field_key().
+    if ((error = field_key().get(actual_key) )) { abandon(); return error; };
+    // field_value() will advance and check that we find a ':' separating the
+    // key and the value. It will also increment the depth by one.
+    if ((error = field_value() )) { abandon(); return error; }
+    // If it matches, stop and return
+    // We could do it this way if we wanted to allow arbitrary
+    // key content (including escaped quotes).
+    //if (actual_key.unsafe_is_equal(max_key_length, key)) {
+    // Instead we do the following which may trigger buffer overruns if the
+    // user provides an adversarial key (containing a well placed unescaped quote
+    // character and being longer than the number of bytes remaining in the JSON
+    // input).
+    if (actual_key.unsafe_is_equal(key)) {
+      logger::log_event(*this, "match", key, -2);
+      // If we return here, then we return while pointing at the ':' that we just checked.
+      return true;
+    }
+
+    // No match: skip the value and see if , or } is next
+    logger::log_event(*this, "no match", key, -2);
+    // The call to skip_child is meant to skip over the value corresponding to the key.
+    // After skip_child(), we are right before the next comma (',') or the final brace ('}').
+    SIMDJSON_TRY( skip_child() ); // Skip the value entirely
+    // The has_next_field() advances the pointer and check that either ',' or '}' is found.
+    // It returns true if ',' is found, false otherwise. If anything other than ',' or '}' is found,
+    // then we are in error and we abort.
+    if ((error = has_next_field().get(has_value) )) { abandon(); return error; }
+  }
+
+  // If the loop ended, we're out of fields to look at.
+  return false;
+}
+
+SIMDJSON_PUSH_DISABLE_WARNINGS
+SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::find_field_unordered_raw(const std::string_view key) noexcept {
+  /**
+   * When find_field_unordered_raw is called, we can either be pointing at the
+   * first key, pointing outside (at the closing brace) or if a key was matched
+   * we can be either pointing right afterthe ':' right before the value (that we need skip),
+   * or we may have consumed the value and we might be at a comma or at the
+   * final brace (ready for a call to has_next_field()).
+   */
+  error_code error;
+  bool has_value;
+
+  // First, we scan from that point to the end.
+  // If we don't find a match, we may loop back around, and scan from the beginning to that point.
+  token_position search_start = _json_iter->position();
+
+  // We want to know whether we need to go back to the beginning.
+  bool at_first = at_first_field();
+  ///////////////
+  // Initially, the object can be in one of a few different places:
+  //
+  // 1. At the first key:
+  //
+  //    ```
+  //    { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //      ^ (depth 2, index 1)
+  //    ```
+  //
+  if (at_first) {
+    has_value = true;
+
+  // 2. When a previous search did not yield a value or the object is empty:
+  //
+  //    ```
+  //    { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //                                     ^ (depth 0)
+  //    { }
+  //        ^ (depth 0, index 2)
+  //    ```
+  //
+  } else if (!is_open()) {
+
+#if SIMDJSON_DEVELOPMENT_CHECKS
+    // If we're past the end of the object, we're being iterated out of order.
+    // Note: this is not perfect detection. It's possible the user is inside some other object; if so,
+    // this object iterator will blithely scan that object for fields.
+    if (_json_iter->depth() < depth() - 1) { return OUT_OF_ORDER_ITERATION; }
+#endif
+    SIMDJSON_TRY(reset_object().get(has_value));
+    at_first = true;
+  // 3. When a previous search found a field or an iterator yielded a value:
+  //
+  //    ```
+  //    // When a field was not fully consumed (or not even touched at all)
+  //    { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //           ^ (depth 2)
+  //    // When a field was fully consumed
+  //    { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //                   ^ (depth 1)
+  //    // When the last field was fully consumed
+  //    { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //                                   ^ (depth 1)
+  //    ```
+  //
+  } else {
+    // If someone queried a key but they not did access the value, then we are left pointing
+    // at the ':' and we need to move forward through the value... If the value was
+    // processed then skip_child() does not move the iterator (but may adjust the depth).
+    if ((error = skip_child() )) { abandon(); return error; }
+    search_start = _json_iter->position();
+    if ((error = has_next_field().get(has_value) )) { abandon(); return error; }
+#if SIMDJSON_DEVELOPMENT_CHECKS
+    if (_json_iter->start_position(_depth) != start_position()) { return OUT_OF_ORDER_ITERATION; }
+#endif
+  }
+
+  // After initial processing, we will be in one of two states:
+  //
+  // ```
+  // // At the beginning of a field
+  // { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //   ^ (depth 1)
+  // { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //                  ^ (depth 1)
+  // // At the end of the object
+  // { "a": [ 1, 2 ], "b": [ 3, 4 ] }
+  //                                  ^ (depth 0)
+  // ```
+  //
+  // Next, we find a match starting from the current position.
+  while (has_value) {
+    SIMDJSON_ASSUME( _json_iter->_depth == _depth ); // We must be at the start of a field
+
+    // Get the key and colon, stopping at the value.
+    raw_json_string actual_key;
+    // size_t max_key_length = _json_iter->peek_length() - 2; // -2 for the two quotes
+    // Note: _json_iter->peek_length() - 2 might overflow if _json_iter->peek_length() < 2.
+    // field_key() advances the pointer and checks that '"' is found (corresponding to a key).
+    // The depth is left unchanged by field_key().
+    if ((error = field_key().get(actual_key) )) { abandon(); return error; };
+    // field_value() will advance and check that we find a ':' separating the
+    // key and the value. It will also increment the depth by one.
+    if ((error = field_value() )) { abandon(); return error; }
+
+    // If it matches, stop and return
+    // We could do it this way if we wanted to allow arbitrary
+    // key content (including escaped quotes).
+    // if (actual_key.unsafe_is_equal(max_key_length, key)) {
+    // Instead we do the following which may trigger buffer overruns if the
+    // user provides an adversarial key (containing a well placed unescaped quote
+    // character and being longer than the number of bytes remaining in the JSON
+    // input).
+    if (actual_key.unsafe_is_equal(key)) {
+      logger::log_event(*this, "match", key, -2);
+      // If we return here, then we return while pointing at the ':' that we just checked.
+      return true;
+    }
+
+    // No match: skip the value and see if , or } is next
+    logger::log_event(*this, "no match", key, -2);
+    // The call to skip_child is meant to skip over the value corresponding to the key.
+    // After skip_child(), we are right before the next comma (',') or the final brace ('}').
+    SIMDJSON_TRY( skip_child() );
+    // The has_next_field() advances the pointer and check that either ',' or '}' is found.
+    // It returns true if ',' is found, false otherwise. If anything other than ',' or '}' is found,
+    // then we are in error and we abort.
+    if ((error = has_next_field().get(has_value) )) { abandon(); return error; }
+  }
+  // Performance note: it maybe wasteful to rewind to the beginning when there might be
+  // no other query following. Indeed, it would require reskipping the whole object.
+  // Instead, you can just stay where you are. If there is a new query, there is always time
+  // to rewind.
+  if(at_first) { return false; }
+
+  // If we reach the end without finding a match, search the rest of the fields starting at the
+  // beginning of the object.
+  // (We have already run through the object before, so we've already validated its structure. We
+  // don't check errors in this bit.)
+  SIMDJSON_TRY(reset_object().get(has_value));
+  while (true) {
+    SIMDJSON_ASSUME(has_value); // we should reach search_start before ever reaching the end of the object
+    SIMDJSON_ASSUME( _json_iter->_depth == _depth ); // We must be at the start of a field
+
+    // Get the key and colon, stopping at the value.
+    raw_json_string actual_key;
+    // size_t max_key_length = _json_iter->peek_length() - 2; // -2 for the two quotes
+    // Note: _json_iter->peek_length() - 2 might overflow if _json_iter->peek_length() < 2.
+    // field_key() advances the pointer and checks that '"' is found (corresponding to a key).
+    // The depth is left unchanged by field_key().
+    error = field_key().get(actual_key); SIMDJSON_ASSUME(!error);
+    // field_value() will advance and check that we find a ':' separating the
+    // key and the value.  It will also increment the depth by one.
+    error = field_value(); SIMDJSON_ASSUME(!error);
+
+    // If it matches, stop and return
+    // We could do it this way if we wanted to allow arbitrary
+    // key content (including escaped quotes).
+    // if (actual_key.unsafe_is_equal(max_key_length, key)) {
+    // Instead we do the following which may trigger buffer overruns if the
+    // user provides an adversarial key (containing a well placed unescaped quote
+    // character and being longer than the number of bytes remaining in the JSON
+    // input).
+    if (actual_key.unsafe_is_equal(key)) {
+      logger::log_event(*this, "match", key, -2);
+      // If we return here, then we return while pointing at the ':' that we just checked.
+      return true;
+    }
+
+    // No match: skip the value and see if , or } is next
+    logger::log_event(*this, "no match", key, -2);
+    // The call to skip_child is meant to skip over the value corresponding to the key.
+    // After skip_child(), we are right before the next comma (',') or the final brace ('}').
+    SIMDJSON_TRY( skip_child() );
+    // If we reached the end of the key-value pair we started from, then we know
+    // that the key is not there so we return false. We are either right before
+    // the next comma or the final brace.
+    if(_json_iter->position() == search_start) { return false; }
+    // The has_next_field() advances the pointer and check that either ',' or '}' is found.
+    // It returns true if ',' is found, false otherwise. If anything other than ',' or '}' is found,
+    // then we are in error and we abort.
+    error = has_next_field().get(has_value); SIMDJSON_ASSUME(!error);
+    // If we make the mistake of exiting here, then we could be left pointing at a key
+    // in the middle of an object. That's not an allowable state.
+  }
+  // If the loop ended, we're out of fields to look at. The program should
+  // never reach this point.
+  return false;
+}
+SIMDJSON_POP_DISABLE_WARNINGS
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::field_key() noexcept {
+  assert_at_next();
+
+  const uint8_t *key = _json_iter->return_current_and_advance();
+  if (*(key++) != '"') { return report_error(TAPE_ERROR, "Object key is not a string"); }
+  return raw_json_string(key);
+}
+
+simdjson_warn_unused simdjson_inline error_code value_iterator::field_value() noexcept {
+  assert_at_next();
+
+  if (*_json_iter->return_current_and_advance() != ':') { return report_error(TAPE_ERROR, "Missing colon in object field"); }
+  _json_iter->descend_to(depth()+1);
+  return SUCCESS;
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::start_array() noexcept {
+  SIMDJSON_TRY( start_container('[', "Not an array", "array") );
+  return started_array();
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::start_root_array() noexcept {
+  SIMDJSON_TRY( start_container('[', "Not an array", "array") );
+  return started_root_array();
+}
+
+inline std::string value_iterator::to_string() const noexcept {
+  auto answer = std::string("value_iterator [ depth : ") + std::to_string(_depth) + std::string(", ");
+  if(_json_iter != nullptr) { answer +=  _json_iter->to_string(); }
+  answer += std::string(" ]");
+  return answer;
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::started_array() noexcept {
+  assert_at_container_start();
+  if (*_json_iter->peek() == ']') {
+    logger::log_value(*_json_iter, "empty array");
+    _json_iter->return_current_and_advance();
+    SIMDJSON_TRY( end_container() );
+    return false;
+  }
+  _json_iter->descend_to(depth()+1);
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  _json_iter->set_start_position(_depth, start_position());
+#endif
+  return true;
+}
+
+simdjson_warn_unused simdjson_inline error_code value_iterator::check_root_array() noexcept {
+  // When in streaming mode, we cannot expect peek_last() to be the last structural element of the
+  // current document. It only works in the normal mode where we have indexed a single document.
+  // Note that adding a check for 'streaming' is not expensive since we only have at most
+  // one root element.
+  if ( ! _json_iter->streaming() ) {
+    // The following lines do not fully protect against garbage content within the
+    // array: e.g., `[1, 2] foo]`. Users concerned with garbage content should
+    // also call `at_end()` on the document instance at the end of the processing to
+    // ensure that the processing has finished at the end.
+    //
+    if (*_json_iter->peek_last() != ']') {
+      _json_iter->abandon();
+      return report_error(INCOMPLETE_ARRAY_OR_OBJECT, "missing ] at end");
+    }
+    // If the last character is ] *and* the first gibberish character is also ']'
+    // then on-demand could accidentally go over. So we need additional checks.
+    // https://github.com/simdjson/simdjson/issues/1834
+    // Checking that the document is balanced requires a full scan which is potentially
+    // expensive, but it only happens in edge cases where the first padding character is
+    // a closing bracket.
+    if ((*_json_iter->peek(_json_iter->end_position()) == ']') && (!_json_iter->balanced())) {
+      _json_iter->abandon();
+      // The exact error would require more work. It will typically be an unclosed array.
+      return report_error(INCOMPLETE_ARRAY_OR_OBJECT, "the document is unbalanced");
+    }
+  }
+  return SUCCESS;
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::started_root_array() noexcept {
+  auto error = check_root_array();
+  if (error) { return error; }
+  return started_array();
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::has_next_element() noexcept {
+  assert_at_next();
+
+  logger::log_event(*this, "has_next_element");
+  switch (*_json_iter->return_current_and_advance()) {
+    case ']':
+      logger::log_end_value(*_json_iter, "array");
+      SIMDJSON_TRY( end_container() );
+      return false;
+    case ',':
+      _json_iter->descend_to(depth()+1);
+      return true;
+    default:
+      return report_error(TAPE_ERROR, "Missing comma between array elements");
+  }
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::parse_bool(const uint8_t *json) const noexcept {
+  auto not_true = atomparsing::str4ncmp(json, "true");
+  auto not_false = atomparsing::str4ncmp(json, "fals") | (json[4] ^ 'e');
+  bool error = (not_true && not_false) || jsoncharutils::is_not_structural_or_whitespace(json[not_true ? 5 : 4]);
+  if (error) { return incorrect_type_error("Not a boolean"); }
+  return simdjson_result(!not_true);
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::parse_null(const uint8_t *json) const noexcept {
+  bool is_null_string = !atomparsing::str4ncmp(json, "null") && jsoncharutils::is_structural_or_whitespace(json[4]);
+  // if we start with 'n', we must be a null
+  if(!is_null_string && json[0]=='n') { return incorrect_type_error("Not a null but starts with n"); }
+  return is_null_string;
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_string(bool allow_replacement) noexcept {
+  return get_raw_json_string().unescape(json_iter(), allow_replacement);
+}
+template 
+simdjson_warn_unused simdjson_inline error_code value_iterator::get_string(string_type& receiver, bool allow_replacement) noexcept {
+  std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
+  auto err = get_string(allow_replacement).get(content);
+  if (err) { return err; }
+  receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
+  return SUCCESS;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_wobbly_string() noexcept {
+  return get_raw_json_string().unescape_wobbly(json_iter());
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_raw_json_string() noexcept {
+  auto json = peek_scalar("string");
+  if (*json != '"') { return incorrect_type_error("Not a string"); }
+  advance_scalar("string");
+  return raw_json_string(json+1);
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_uint64() noexcept {
+  auto result = numberparsing::parse_unsigned(peek_non_root_scalar("uint64"));
+  if(result.error() == SUCCESS) { advance_non_root_scalar("uint64"); }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_uint64_in_string() noexcept {
+  auto result = numberparsing::parse_unsigned_in_string(peek_non_root_scalar("uint64"));
+  if(result.error() == SUCCESS) { advance_non_root_scalar("uint64"); }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_int64() noexcept {
+  auto result = numberparsing::parse_integer(peek_non_root_scalar("int64"));
+  if(result.error() == SUCCESS) { advance_non_root_scalar("int64"); }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_int64_in_string() noexcept {
+  auto result = numberparsing::parse_integer_in_string(peek_non_root_scalar("int64"));
+  if(result.error() == SUCCESS) { advance_non_root_scalar("int64"); }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_double() noexcept {
+  auto result = numberparsing::parse_double(peek_non_root_scalar("double"));
+  if(result.error() == SUCCESS) { advance_non_root_scalar("double"); }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_double_in_string() noexcept {
+  auto result = numberparsing::parse_double_in_string(peek_non_root_scalar("double"));
+  if(result.error() == SUCCESS) { advance_non_root_scalar("double"); }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_bool() noexcept {
+  auto result = parse_bool(peek_non_root_scalar("bool"));
+  if(result.error() == SUCCESS) { advance_non_root_scalar("bool"); }
+  return result;
+}
+simdjson_inline simdjson_result value_iterator::is_null() noexcept {
+  bool is_null_value;
+  SIMDJSON_TRY(parse_null(peek_non_root_scalar("null")).get(is_null_value));
+  if(is_null_value) { advance_non_root_scalar("null"); }
+  return is_null_value;
+}
+simdjson_inline bool value_iterator::is_negative() noexcept {
+  return numberparsing::is_negative(peek_non_root_scalar("numbersign"));
+}
+simdjson_inline bool value_iterator::is_root_negative() noexcept {
+  return numberparsing::is_negative(peek_root_scalar("numbersign"));
+}
+simdjson_inline simdjson_result value_iterator::is_integer() noexcept {
+  return numberparsing::is_integer(peek_non_root_scalar("integer"));
+}
+simdjson_inline simdjson_result value_iterator::get_number_type() noexcept {
+  return numberparsing::get_number_type(peek_non_root_scalar("integer"));
+}
+simdjson_inline simdjson_result value_iterator::get_number() noexcept {
+  number num;
+  error_code error =  numberparsing::parse_number(peek_non_root_scalar("number"), num);
+  if(error) { return error; }
+  return num;
+}
+
+simdjson_inline simdjson_result value_iterator::is_root_integer(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("is_root_integer");
+  uint8_t tmpbuf[20+1+1]{}; // <20 digits> is the longest possible unsigned integer
+  tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
+    return false; // if there are more than 20 characters, it cannot be represented as an integer.
+  }
+  auto answer = numberparsing::is_integer(tmpbuf);
+  // If the parsing was a success, we must still check that it is
+  // a single scalar. Note that we parse first because of cases like '[]' where
+  // getting TRAILING_CONTENT is wrong.
+  if(check_trailing && (answer.error() == SUCCESS) && (!_json_iter->is_single_token())) { return TRAILING_CONTENT; }
+  return answer;
+}
+
+simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("number");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1];
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    if(numberparsing::check_if_integer(json, max_len)) {
+      if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+      logger::log_error(*_json_iter, start_position(), depth(), "Found big integer");
+      return number_type::big_integer;
+    }
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters and not a big integer");
+    return NUMBER_ERROR;
+  }
+  auto answer = numberparsing::get_number_type(tmpbuf);
+  if (check_trailing && (answer.error() == SUCCESS)  && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+  return answer;
+}
+simdjson_inline simdjson_result value_iterator::get_root_number(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("number");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  // NOTE: the current approach doesn't work for very big integer numbers containing more than 1074 digits.
+  uint8_t tmpbuf[1074+8+1+1];
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    if(numberparsing::check_if_integer(json, max_len)) {
+      if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+      logger::log_error(*_json_iter, start_position(), depth(), "Found big integer");
+      return BIGINT_ERROR;
+    }
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters and not a big integer");
+    return NUMBER_ERROR;
+  }
+  number num;
+  error_code error =  numberparsing::parse_number(tmpbuf, num);
+  if(error) { return error; }
+  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+  advance_root_scalar("number");
+  return num;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_string(bool check_trailing, bool allow_replacement) noexcept {
+  return get_root_raw_json_string(check_trailing).unescape(json_iter(), allow_replacement);
+}
+template 
+simdjson_warn_unused simdjson_inline error_code value_iterator::get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept {
+  std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
+  auto err = get_root_string(check_trailing, allow_replacement).get(content);
+  if (err) { return err; }
+  receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
+  return SUCCESS;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_wobbly_string(bool check_trailing) noexcept {
+  return get_root_raw_json_string(check_trailing).unescape_wobbly(json_iter());
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_raw_json_string(bool check_trailing) noexcept {
+  auto json = peek_scalar("string");
+  if (*json != '"') { return incorrect_type_error("Not a string"); }
+  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+  advance_scalar("string");
+  return raw_json_string(json+1);
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_uint64(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("uint64");
+  uint8_t tmpbuf[20+1+1]{}; // <20 digits> is the longest possible unsigned integer
+  tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_unsigned(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("uint64");
+  }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_uint64_in_string(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("uint64");
+  uint8_t tmpbuf[20+1+1]{}; // <20 digits> is the longest possible unsigned integer
+  tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_unsigned_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("uint64");
+  }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_int64(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("int64");
+  uint8_t tmpbuf[20+1+1]; // -<19 digits> is the longest possible integer
+  tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
+    return NUMBER_ERROR;
+  }
+
+  auto result = numberparsing::parse_integer(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("int64");
+  }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_int64_in_string(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("int64");
+  uint8_t tmpbuf[20+1+1]; // -<19 digits> is the longest possible integer
+  tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
+    return NUMBER_ERROR;
+  }
+
+  auto result = numberparsing::parse_integer_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("int64");
+  }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_double(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
+  }
+  return result;
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double_in_string(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_double_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
+  }
+  return result;
+}
+
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_bool(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("bool");
+  // We have a boolean if we have either "true" or "false" and the next character is either
+  // a structural character or whitespace. We also check that the length is correct:
+  // "true" and "false" are 4 and 5 characters long, respectively.
+  bool value_true = (max_len >= 4 && !atomparsing::str4ncmp(json, "true") &&
+  (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  bool value_false = (max_len >= 5 && !atomparsing::str4ncmp(json, "false") &&
+  (max_len == 5 || jsoncharutils::is_structural_or_whitespace(json[5])));
+  if(value_true == false && value_false == false) { return incorrect_type_error("Not a boolean"); }
+  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+  advance_root_scalar("bool");
+  return value_true;
+}
+
+simdjson_inline simdjson_result value_iterator::is_root_null(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("null");
+  bool result = (max_len >= 4 && !atomparsing::str4ncmp(json, "null") &&
+         (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  if(result) { // we have something that looks like a null.
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("null");
+  } else if (json[0] == 'n') {
+    return incorrect_type_error("Not a null but starts with n");
+  }
+  return result;
+}
+
+simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
+
+  return _json_iter->skip_child(depth());
+}
+
+simdjson_inline value_iterator value_iterator::child() const noexcept {
+  assert_at_child();
+  return { _json_iter, depth()+1, _json_iter->token.position() };
+}
+
+// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
+// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
+// marked non-inline.
+SIMDJSON_PUSH_DISABLE_WARNINGS
+SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
+simdjson_inline bool value_iterator::is_open() const noexcept {
+  return _json_iter->depth() >= depth();
+}
+SIMDJSON_POP_DISABLE_WARNINGS
+
+simdjson_inline bool value_iterator::at_end() const noexcept {
+  return _json_iter->at_end();
+}
+
+simdjson_inline bool value_iterator::at_start() const noexcept {
+  return _json_iter->token.position() == start_position();
+}
+
+simdjson_inline bool value_iterator::at_first_field() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  return _json_iter->token.position() == start_position() + 1;
+}
+
+simdjson_inline void value_iterator::abandon() noexcept {
+  _json_iter->abandon();
+}
+
+simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
+  return _depth;
+}
+simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
+  return _json_iter->error;
+}
+simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
+  return _json_iter->string_buf_loc();
+}
+simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
+  return *_json_iter;
+}
+simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
+  return *_json_iter;
+}
+
+simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
+  return _json_iter->peek(start_position());
+}
+simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
+  return _json_iter->peek_length(start_position());
+}
+simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
+  return _json_iter->peek_root_length(start_position());
+}
+
+simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return peek_start(); }
+
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  return _json_iter->peek();
+}
+
+simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return; }
+
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
+}
+
+simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
+  logger::log_start_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  const uint8_t *json;
+  if (!is_at_start()) {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
+#endif
+    json = peek_start();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+  } else {
+    assert_at_start();
+    /**
+     * We should be prudent. Let us peek. If it is not the right type, we
+     * return an error. Only once we have determined that we have the right
+     * type are we allowed to advance!
+     */
+    json = _json_iter->peek();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+    _json_iter->return_current_and_advance();
+  }
+
+
+  return SUCCESS;
+}
+
+
+simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
+
+  assert_at_root();
+  return _json_iter->peek();
+}
+simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
+
+  assert_at_non_root_start();
+  return _json_iter->peek();
+}
+
+simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
+
+  assert_at_root();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
+}
+simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
+
+  assert_at_non_root_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
+}
+
+simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
+  logger::log_error(*_json_iter, start_position(), depth(), message);
+  return INCORRECT_TYPE;
+}
+
+simdjson_inline bool value_iterator::is_at_start() const noexcept {
+  return position() == start_position();
+}
+
+simdjson_inline bool value_iterator::is_at_key() const noexcept {
+  // Keys are at the same depth as the object.
+  // Note here that we could be safer and check that we are within an object,
+  // but we do not.
+  //
+  // As long as we are at the object's depth, in a valid document,
+  // we will only ever be at { , : or the actual string key: ".
+  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
+}
+
+simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
+  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
+  auto delta = position() - start_position();
+  return delta == 1 || delta == 2;
+}
+
+inline void value_iterator::assert_at_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
+
+inline void value_iterator::assert_at_container_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
+
+inline void value_iterator::assert_at_next() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
+
+simdjson_inline void value_iterator::move_at_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position);
+}
+
+simdjson_inline void value_iterator::move_at_container_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position + 1);
+}
+
+simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_array();
+}
+
+simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_object();
+}
+
+inline void value_iterator::assert_at_child() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
+
+inline void value_iterator::assert_at_root() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth == 1 );
+}
+
+inline void value_iterator::assert_at_non_root_start() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth > 1 );
+}
+
+inline void value_iterator::assert_is_valid() const noexcept {
+  SIMDJSON_ASSUME( _json_iter != nullptr );
+}
+
+simdjson_inline bool value_iterator::is_valid() const noexcept {
+  return _json_iter != nullptr;
+}
+
+simdjson_inline simdjson_result value_iterator::type() const noexcept {
+  switch (*peek_start()) {
+    case '{':
+      return json_type::object;
+    case '[':
+      return json_type::array;
+    case '"':
+      return json_type::string;
+    case 'n':
+      return json_type::null;
+    case 't': case 'f':
+      return json_type::boolean;
+    case '-':
+    case '0': case '1': case '2': case '3': case '4':
+    case '5': case '6': case '7': case '8': case '9':
+      return json_type::number;
+    default:
+      return json_type::unknown;
+  }
+}
+
+simdjson_inline token_position value_iterator::start_position() const noexcept {
+  return _start_position;
+}
+
+simdjson_inline token_position value_iterator::position() const noexcept {
+  return _json_iter->position();
+}
+
+simdjson_inline token_position value_iterator::end_position() const noexcept {
+  return _json_iter->end_position();
+}
+
+simdjson_inline token_position value_iterator::last_position() const noexcept {
+  return _json_iter->last_position();
+}
+
+simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
+  return _json_iter->report_error(error, message);
+}
+
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::value_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
+/* end file simdjson/generic/ondemand/value_iterator-inl.h for arm64 */
+/* including simdjson/generic/ondemand/serialization-inl.h for arm64: #include "simdjson/generic/ondemand/serialization-inl.h" */
+/* begin file simdjson/generic/ondemand/serialization-inl.h for arm64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #endif */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+inline std::string_view trim(const std::string_view str) noexcept {
+  // We can almost surely do better by rolling our own find_first_not_of function.
+  size_t first = str.find_first_not_of(" \t\n\r");
+  // If we have the empty string (just white space), then no trimming is possible, and
+  // we return the empty string_view.
+  if (std::string_view::npos == first) { return std::string_view(); }
+  size_t last = str.find_last_not_of(" \t\n\r");
+  return str.substr(first, (last - first + 1));
+}
+
+
+inline simdjson_result to_json_string(arm64::ondemand::document& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
+}
+
+inline simdjson_result to_json_string(arm64::ondemand::document_reference& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
+}
+
+inline simdjson_result to_json_string(arm64::ondemand::value& x) noexcept {
+  /**
+   * If we somehow receive a value that has already been consumed,
+   * then the following code could be in trouble. E.g., we create
+   * an array as needed, but if an array was already created, then
+   * it could be bad.
+   */
+  using namespace arm64::ondemand;
+  arm64::ondemand::json_type t;
+  auto error = x.type().get(t);
+  if(error != SUCCESS) { return error; }
+  switch (t)
+  {
+    case json_type::array:
+    {
+      arm64::ondemand::array array;
+      error = x.get_array().get(array);
+      if(error) { return error; }
+      return to_json_string(array);
+    }
+    case json_type::object:
+    {
+      arm64::ondemand::object object;
+      error = x.get_object().get(object);
+      if(error) { return error; }
+      return to_json_string(object);
+    }
+    default:
+      return trim(x.raw_json_token());
+  }
+}
+
+inline simdjson_result to_json_string(arm64::ondemand::object& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
+}
+
+inline simdjson_result to_json_string(arm64::ondemand::array& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
+}
+
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
+
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
+
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
+
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
+
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
+} // namespace simdjson
+
+namespace simdjson { namespace arm64 { namespace ondemand {
+
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::document_reference& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
+
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
+  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
+}}} // namespace simdjson::arm64::ondemand
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+/* end file simdjson/generic/ondemand/serialization-inl.h for arm64 */
+
+// JSON path accessor (compile-time) - must be after inline definitions
+/* including simdjson/generic/ondemand/compile_time_accessors.h for arm64: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
+/* begin file simdjson/generic/ondemand/compile_time_accessors.h for arm64 */
+/**
+ * Compile-time JSON Path and JSON Pointer accessors using C++26 reflection (P2996)
+ *
+ * This file validates JSON paths/pointers against struct definitions at compile time
+ * and generates optimized accessor code with zero runtime overhead.
+ *
+ * ## How It Works
+ *
+ * **Compile Time**: Path is parsed, validated against struct, types are checked
+ * **Runtime**: Direct navigation with no parsing or validation overhead
+ *
+ * Example:
+ * ```cpp
+ * struct User { std::string name; std::vector emails; };
+ *
+ * std::string email;
+ * path_accessor::extract_field(doc, email);
+ *
+ * // Compile time validates:
+ * // 1. User has "emails" field
+ * // 2. "emails" is array-like
+ * // 3. Element type is std::string
+ * // 4. static_assert(^^std::string == ^^std::string)
+ *
+ * // Runtime just navigates:
+ * // doc.get_object().find_field("emails").get_array().at(0).get(email)
+ * ```
+ *
+ * ## Key Reflection APIs
+ *
+ * - `^^Type`: Reflect operator, converts type to std::meta::info
+ * - `std::meta::nonstatic_data_members_of(type)`: Get all fields of a struct
+ * - `std::meta::identifier_of(member)`: Get field name as string_view
+ * - `std::meta::type_of(member)`: Get reflected type of a field
+ * - `std::meta::is_array_type(type)`: Check if C-style array
+ * - `std::meta::remove_extent(array)`: Extract element type from array
+ * - `std::meta::members_of(type)`: Get all members including typedefs
+ * - `std::meta::is_type(member)`: Check if member is a type (vs field)
+ *
+ * All operations execute at compile time in consteval contexts.
+ */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H */
+/* amalgamation skipped (editor-only):  */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+// Arguably, we should just check SIMDJSON_STATIC_REFLECTION since it
+// is unlikely that we will have reflection support without concepts support.
+#if SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
+
+#include 
+#include 
+#include 
+
+namespace simdjson {
+namespace arm64 {
+namespace ondemand {
+/***
+ * JSONPath implementation for compile-time access
+ * RFC 9535 JSONPath: Query Expressions for JSON, https://www.rfc-editor.org/rfc/rfc9535
+ */
+namespace json_path {
+
+// Note: value type must be fully defined before this header is included
+// This is ensured by including this in amalgamated.h after value-inl.h
+
+using ::simdjson::arm64::ondemand::value;
+
+// Path step types
+enum class step_type {
+  field,        // .field_name or ["field_name"]
+  array_index   // [index]
+};
+
+// Represents a single step in a JSON path
+template
+struct path_step {
+  step_type type;
+  char key[N];  // Field name (empty for array indices)
+  std::size_t index;  // Array index (0 for field access)
+
+  constexpr path_step(step_type t, const char (&k)[N], std::size_t idx = 0)
+    : type(t), index(idx) {
+    for (std::size_t i = 0; i < N; ++i) {
+      key[i] = k[i];
+    }
+  }
+
+  constexpr std::string_view key_view() const {
+    return {key, N - 1};
+  }
+};
+
+// Helper to create field step
+template
+consteval auto make_field_step(const char (&name)[N]) {
+  return path_step(step_type::field, name, 0);
+}
+
+// Helper to create array index step
+consteval auto make_index_step(std::size_t idx) {
+  return path_step<1>(step_type::array_index, "", idx);
+}
+
+// Parse state for compile-time JSON path parsing
+struct parse_result {
+  bool success;
+  std::size_t pos;
+  std::string_view error_msg;
+};
+
+// Compile-time JSON path parser
+// Supports subset: .field, ["field"], [index], nested combinations
+template
+struct json_path_parser {
+  static constexpr std::string_view path_str = Path.view();
+
+  // Skip leading $ if present
+  static consteval std::size_t skip_root() {
+    if (!path_str.empty() && path_str[0] == '$') {
+      return 1;
+    }
+    return 0;
+  }
+
+  // Count the number of steps in the path at compile time
+  static consteval std::size_t count_steps() {
+    std::size_t count = 0;
+    std::size_t i = skip_root();
+
+    while (i < path_str.size()) {
+      if (path_str[i] == '.') {
+        // Field access: .field
+        ++i;
+        if (i >= path_str.size()) break;
+
+        // Skip field name
+        while (i < path_str.size() && path_str[i] != '.' && path_str[i] != '[') {
+          ++i;
+        }
+        ++count;
+      } else if (path_str[i] == '[') {
+        // Array or bracket notation
+        ++i;
+        if (i >= path_str.size()) break;
+
+        if (path_str[i] == '"' || path_str[i] == '\'') {
+          // Field access: ["field"] or ['field']
+          char quote = path_str[i];
+          ++i;
+          while (i < path_str.size() && path_str[i] != quote) {
+            ++i;
+          }
+          if (i < path_str.size()) ++i; // skip closing quote
+          if (i < path_str.size() && path_str[i] == ']') ++i;
+        } else {
+          // Array index: [0], [123]
+          while (i < path_str.size() && path_str[i] != ']') {
+            ++i;
+          }
+          if (i < path_str.size()) ++i; // skip ]
+        }
+        ++count;
+      } else {
+        ++i;
+      }
+    }
+
+    return count;
+  }
+
+  // Parse a field name at compile time
+  static consteval std::size_t parse_field_name(std::size_t start, char* out, std::size_t max_len) {
+    std::size_t len = 0;
+    std::size_t i = start;
+
+    while (i < path_str.size() && path_str[i] != '.' && path_str[i] != '[' && len < max_len - 1) {
+      out[len++] = path_str[i++];
+    }
+    out[len] = '\0';
+    return i;
+  }
+
+  // Parse an array index at compile time
+  static consteval std::pair parse_array_index(std::size_t start) {
+    std::size_t index = 0;
+    std::size_t i = start;
+
+    while (i < path_str.size() && path_str[i] >= '0' && path_str[i] <= '9') {
+      index = index * 10 + (path_str[i] - '0');
+      ++i;
+    }
+
+    return {i, index};
+  }
+};
+
+// Compile-time path accessor generator
+template
+struct path_accessor {
+  using value = ::simdjson::arm64::ondemand::value;
+
+  static constexpr auto parser = json_path_parser();
+  static constexpr std::size_t num_steps = parser.count_steps();
+  static constexpr std::string_view path_view = Path.view();
+
+  // Compile-time accessor generation
+  // If T is a struct, validates the path at compile time
+  // If T is void, skips validation
+  template
+  static inline simdjson_result access(DocOrValue& doc_or_val) noexcept {
+    // Validate path at compile time if T is a struct
+    if constexpr (std::is_class_v) {
+      constexpr bool path_valid = validate_path();
+      static_assert(path_valid, "JSON path does not match struct definition");
+    }
+
+    // Parse the path at compile time to build access steps
+    return access_impl(doc_or_val.get_value());
+  }
+
+  // Extract value at path directly into target with compile-time type validation
+  // Example: std::string name; path_accessor::extract_field(doc, name);
+  template
+  static inline error_code extract_field(DocOrValue& doc_or_val, FieldType& target) noexcept {
+    static_assert(std::is_class_v, "extract_field requires T to be a struct type for validation");
+
+    // Validate path exists in struct definition
+    constexpr bool path_valid = validate_path();
+    static_assert(path_valid, "JSON path does not match struct definition");
+
+    // Get the type at the end of the path
+    constexpr auto final_type = get_final_type();
+
+    // Verify target type matches the field type
+    static_assert(final_type == ^^FieldType, "Target type does not match the field type at the path");
+
+    // All validation done at compile time - just navigate and extract
+    auto json_value = access_impl(doc_or_val.get_value());
+    if (json_value.error()) return json_value.error();
+
+    return json_value.get(target);
+  }
+
+private:
+  // Get the final type by walking the path through the struct type
+  template
+  static consteval std::enable_if_t, std::meta::info> get_final_type() {
+    auto current_type = ^^T;
+    std::size_t i = parser.skip_root();
+
+    while (i < path_view.size()) {
+      if (path_view[i] == '.') {
+        // .field syntax
+        ++i;
+        std::size_t field_start = i;
+        while (i < path_view.size() && path_view[i] != '.' && path_view[i] != '[') {
+          ++i;
+        }
+
+        std::string_view field_name = path_view.substr(field_start, i - field_start);
+
+        auto members = std::meta::nonstatic_data_members_of(
+          current_type, std::meta::access_context::unchecked()
+        );
+
+        for (auto mem : members) {
+          if (std::meta::identifier_of(mem) == field_name) {
+            current_type = std::meta::type_of(mem);
+            break;
+          }
+        }
+
+      } else if (path_view[i] == '[') {
+        ++i;
+        if (i >= path_view.size()) break;
+
+        if (path_view[i] == '"' || path_view[i] == '\'') {
+          // ["field"] syntax
+          char quote = path_view[i];
+          ++i;
+          std::size_t field_start = i;
+          while (i < path_view.size() && path_view[i] != quote) {
+            ++i;
+          }
+
+          std::string_view field_name = path_view.substr(field_start, i - field_start);
+          if (i < path_view.size()) ++i; // skip quote
+          if (i < path_view.size() && path_view[i] == ']') ++i;
+
+          auto members = std::meta::nonstatic_data_members_of(
+            current_type, std::meta::access_context::unchecked()
+          );
+
+          for (auto mem : members) {
+            if (std::meta::identifier_of(mem) == field_name) {
+              current_type = std::meta::type_of(mem);
+              break;
+            }
+          }
+
+        } else {
+          // [index] syntax - extract element type
+          while (i < path_view.size() && path_view[i] >= '0' && path_view[i] <= '9') {
+            ++i;
+          }
+          if (i < path_view.size() && path_view[i] == ']') ++i;
+
+          current_type = get_element_type_reflected(current_type);
+        }
+      } else {
+        ++i;
+      }
+    }
+
+    return current_type;
+  }
+
+private:
+  // Walk path and extract directly into final field using compile-time reflection
+  template
+  static inline error_code extract_with_reflection(simdjson_result current, TargetType& target_ref) noexcept {
+    if (current.error()) return current.error();
+
+    // Base case: end of path - extract into target
+    if constexpr (PathPos >= path_view.size()) {
+      return current.get(target_ref);
+    }
+    // Field access: .field_name
+    else if constexpr (path_view[PathPos] == '.') {
+      constexpr auto field_info = parse_next_field(PathPos);
+      constexpr std::string_view field_name = std::get<0>(field_info);
+      constexpr std::size_t next_pos = std::get<1>(field_info);
+
+      constexpr auto member_info = find_member_by_name(CurrentType, field_name);
+      static_assert(member_info != ^^void, "Field not found in struct");
+
+      constexpr auto member_type = std::meta::type_of(member_info);
+
+      auto obj_result = current.get_object();
+      if (obj_result.error()) return obj_result.error();
+      auto obj = obj_result.value_unsafe();
+      auto field_value = obj.find_field_unordered(field_name);
+
+      if constexpr (next_pos >= path_view.size()) {
+        return field_value.get(target_ref);
+      } else {
+        return extract_with_reflection(field_value, target_ref);
+      }
+    }
+    // Bracket notation: [index] or ["field"]
+    else if constexpr (path_view[PathPos] == '[') {
+      constexpr auto bracket_info = parse_bracket(PathPos);
+      constexpr bool is_field = std::get<0>(bracket_info);
+      constexpr std::size_t next_pos = std::get<2>(bracket_info);
+
+      if constexpr (is_field) {
+        constexpr std::string_view field_name = std::get<1>(bracket_info);
+        constexpr auto member_info = find_member_by_name(CurrentType, field_name);
+        static_assert(member_info != ^^void, "Field not found in struct");
+        constexpr auto member_type = std::meta::type_of(member_info);
+
+        auto obj_result = current.get_object();
+        if (obj_result.error()) return obj_result.error();
+        auto obj = obj_result.value_unsafe();
+        auto field_value = obj.find_field_unordered(field_name);
+
+        if constexpr (next_pos >= path_view.size()) {
+          return field_value.get(target_ref);
+        } else {
+          return extract_with_reflection(field_value, target_ref);
+        }
+      } else {
+        constexpr std::size_t index = std::get<3>(bracket_info);
+        constexpr auto elem_type = get_element_type_reflected(CurrentType);
+        static_assert(elem_type != ^^void, "Could not determine array element type");
+
+        auto arr_result = current.get_array();
+        if (arr_result.error()) return arr_result.error();
+        auto arr = arr_result.value_unsafe();
+        auto elem_value = arr.at(index);
+
+        if constexpr (next_pos >= path_view.size()) {
+          return elem_value.get(target_ref);
+        } else {
+          return extract_with_reflection(elem_value, target_ref);
+        }
+      }
+    }
+    // Skip unexpected characters and continue
+    else {
+      return extract_with_reflection(current, target_ref);
+    }
+  }
+
+  // Find member by name in reflected type
+  static consteval std::meta::info find_member_by_name(std::meta::info type_refl, std::string_view name) {
+    auto members = std::meta::nonstatic_data_members_of(type_refl, std::meta::access_context::unchecked());
+    for (auto mem : members) {
+      if (std::meta::identifier_of(mem) == name) {
+        return mem;
+      }
+    }
+  }
+
+  // Generate compile-time accessor code by walking the path
+  template
+  static inline simdjson_result access_impl(simdjson_result current) noexcept {
+    if (current.error()) return current;
+
+    if constexpr (PathPos >= path_view.size()) {
+      return current;
+    } else if constexpr (path_view[PathPos] == '.') {
+      constexpr auto field_info = parse_next_field(PathPos);
+      constexpr std::string_view field_name = std::get<0>(field_info);
+      constexpr std::size_t next_pos = std::get<1>(field_info);
+
+      auto obj_result = current.get_object();
+      if (obj_result.error()) return obj_result.error();
+
+      auto obj = obj_result.value_unsafe();
+      auto next_value = obj.find_field_unordered(field_name);
+
+      return access_impl(next_value);
+
+    } else if constexpr (path_view[PathPos] == '[') {
+      constexpr auto bracket_info = parse_bracket(PathPos);
+      constexpr bool is_field = std::get<0>(bracket_info);
+      constexpr std::size_t next_pos = std::get<2>(bracket_info);
+
+      if constexpr (is_field) {
+        constexpr std::string_view field_name = std::get<1>(bracket_info);
+
+        auto obj_result = current.get_object();
+        if (obj_result.error()) return obj_result.error();
+
+        auto obj = obj_result.value_unsafe();
+        auto next_value = obj.find_field_unordered(field_name);
+
+        return access_impl(next_value);
+
+      } else {
+        constexpr std::size_t index = std::get<3>(bracket_info);
+
+        auto arr_result = current.get_array();
+        if (arr_result.error()) return arr_result.error();
+
+        auto arr = arr_result.value_unsafe();
+        auto next_value = arr.at(index);
+
+        return access_impl(next_value);
+      }
+    } else {
+      return access_impl(current);
+    }
+  }
+
+  // Parse next field name
+  static consteval auto parse_next_field(std::size_t start) {
+    std::size_t i = start + 1;
+    std::size_t field_start = i;
+    while (i < path_view.size() && path_view[i] != '.' && path_view[i] != '[') {
+      ++i;
+    }
+    std::string_view field_name = path_view.substr(field_start, i - field_start);
+    return std::make_tuple(field_name, i);
+  }
+
+  // Parse bracket notation: returns (is_field, field_name, next_pos, index)
+  static consteval auto parse_bracket(std::size_t start) {
+    std::size_t i = start + 1; // skip '['
+
+    if (i < path_view.size() && (path_view[i] == '"' || path_view[i] == '\'')) {
+      // Field access
+      char quote = path_view[i];
+      ++i;
+      std::size_t field_start = i;
+      while (i < path_view.size() && path_view[i] != quote) {
+        ++i;
+      }
+      std::string_view field_name = path_view.substr(field_start, i - field_start);
+      if (i < path_view.size()) ++i; // skip closing quote
+      if (i < path_view.size() && path_view[i] == ']') ++i;
+
+      return std::make_tuple(true, field_name, i, std::size_t(0));
+    } else {
+      // Array index
+      std::size_t index = 0;
+      while (i < path_view.size() && path_view[i] >= '0' && path_view[i] <= '9') {
+        index = index * 10 + (path_view[i] - '0');
+        ++i;
+      }
+      if (i < path_view.size() && path_view[i] == ']') ++i;
+
+      return std::make_tuple(false, std::string_view{}, i, index);
+    }
+  }
+
+public:
+  // Check if reflected type is array-like (C-style array or indexable container)
+  // Uses reflection to test: 1) std::meta::is_array_type() for C arrays
+  //                          2) std::meta::substitute() to test concepts::indexable_container concept
+  static consteval bool is_array_like_reflected(std::meta::info type_reflection) {
+    if (std::meta::is_array_type(type_reflection)) {
+      return true;
+    }
+
+    if (std::meta::can_substitute(^^concepts::indexable_container_v, {type_reflection})) {
+      return std::meta::extract(std::meta::substitute(^^concepts::indexable_container_v, {type_reflection}));
+    }
+    return false;
+  }
+
+  // Extract element type from reflected array or container
+  // For C arrays: uses std::meta::remove_extent()
+  // For containers: finds value_type member using std::meta::members_of()
+  static consteval std::meta::info get_element_type_reflected(std::meta::info type_reflection) {
+    if (std::meta::is_array_type(type_reflection)) {
+      return std::meta::remove_extent(type_reflection);
+    }
+
+    auto members = std::meta::members_of(type_reflection, std::meta::access_context::unchecked());
+    for (auto mem : members) {
+      if (std::meta::is_type(mem)) {
+        auto name = std::meta::identifier_of(mem);
+        if (name == "value_type") {
+          return mem;
+        }
+      }
+    }
+    return ^^void;
+  }
+
+private:
+  // Check if type has member with given name
+  template
+  static consteval bool has_member(std::string_view member_name) {
+    constexpr auto members = std::meta::nonstatic_data_members_of(^^Type, std::meta::access_context::unchecked());
+    for (auto mem : members) {
+      if (std::meta::identifier_of(mem) == member_name) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  // Get type of member by name
+  template
+  static consteval auto get_member_type(std::string_view member_name) {
+    constexpr auto members = std::meta::nonstatic_data_members_of(^^Type, std::meta::access_context::unchecked());
+    for (auto mem : members) {
+      if (std::meta::identifier_of(mem) == member_name) {
+        return std::meta::type_of(mem);
+      }
+    }
+    return ^^void;
+  }
+
+  // Check if non-reflected type is array-like
+  template
+  static consteval bool is_container_type() {
+    using BaseType = std::remove_cvref_t;
+    if constexpr (requires { typename BaseType::value_type; }) {
+      return true;
+    }
+    if constexpr (std::is_array_v) {
+      return true;
+    }
+    return false;
+  }
+
+  // Extract element type from non-reflected container
+  template
+  using extract_element_type = std::conditional_t<
+    requires { typename std::remove_cvref_t::value_type; },
+    typename std::remove_cvref_t::value_type,
+    std::conditional_t<
+      std::is_array_v>,
+      std::remove_extent_t>,
+      void
+    >
+  >;
+
+  // Validate path matches struct definition
+  static consteval bool validate_path() {
+    if constexpr (!std::is_class_v) {
+      return true;
+    }
+
+    auto current_type = ^^T;
+    std::size_t i = parser.skip_root();
+
+    while (i < path_view.size()) {
+      if (path_view[i] == '.') {
+        ++i;
+        std::size_t field_start = i;
+        while (i < path_view.size() && path_view[i] != '.' && path_view[i] != '[') {
+          ++i;
+        }
+
+        std::string_view field_name = path_view.substr(field_start, i - field_start);
+
+        bool found = false;
+        auto members = std::meta::nonstatic_data_members_of(current_type, std::meta::access_context::unchecked());
+
+        for (auto mem : members) {
+          if (std::meta::identifier_of(mem) == field_name) {
+            current_type = std::meta::type_of(mem);
+            found = true;
+            break;
+          }
+        }
+
+        if (!found) {
+          return false;
+        }
+
+      } else if (path_view[i] == '[') {
+        ++i;
+        if (i >= path_view.size()) return false;
+
+        if (path_view[i] == '"' || path_view[i] == '\'') {
+          char quote = path_view[i];
+          ++i;
+          std::size_t field_start = i;
+          while (i < path_view.size() && path_view[i] != quote) {
+            ++i;
+          }
+
+          std::string_view field_name = path_view.substr(field_start, i - field_start);
+          if (i < path_view.size()) ++i;
+          if (i < path_view.size() && path_view[i] == ']') ++i;
+
+          bool found = false;
+          auto members = std::meta::nonstatic_data_members_of(current_type, std::meta::access_context::unchecked());
+
+          for (auto mem : members) {
+            if (std::meta::identifier_of(mem) == field_name) {
+              current_type = std::meta::type_of(mem);
+              found = true;
+              break;
+            }
+          }
+
+          if (!found) {
+            return false;
+          }
+
+        } else {
+          while (i < path_view.size() && path_view[i] >= '0' && path_view[i] <= '9') {
+            ++i;
+          }
+
+          if (i < path_view.size() && path_view[i] == ']') ++i;
+
+          if (!is_array_like_reflected(current_type)) {
+            return false;
+          }
+
+          auto new_type = get_element_type_reflected(current_type);
+
+          if (new_type == ^^void) {
+            return false;
+          }
+
+          current_type = new_type;
+        }
+      } else {
+        ++i;
+      }
+    }
+
+    return true;
+  }
+};
+
+// Compile-time path accessor with validation
+template
+inline simdjson_result<::simdjson::arm64::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+  using accessor = path_accessor;
+  return accessor::access(doc_or_val);
+}
+
+// Overload without type parameter (no validation)
+template
+inline simdjson_result<::simdjson::arm64::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+  using accessor = path_accessor;
+  return accessor::access(doc_or_val);
+}
+
+// ============================================================================
+// JSON Pointer Compile-Time Support (RFC 6901)
+// ============================================================================
+
+// JSON Pointer parser: /field/0/nested (slash-separated)
+template
+struct json_pointer_parser {
+  static constexpr std::string_view pointer_str = Pointer.view();
+
+  // Unescape token: ~0 -> ~, ~1 -> /
+  static consteval void unescape_token(std::string_view src, char* dest, std::size_t& out_len) {
+    out_len = 0;
+    for (std::size_t i = 0; i < src.size(); ++i) {
+      if (src[i] == '~' && i + 1 < src.size()) {
+        if (src[i + 1] == '0') {
+          dest[out_len++] = '~';
+          ++i;
+        } else if (src[i + 1] == '1') {
+          dest[out_len++] = '/';
+          ++i;
+        } else {
+          dest[out_len++] = src[i];
+        }
+      } else {
+        dest[out_len++] = src[i];
+      }
+    }
+  }
+
+  // Check if token is numeric
+  static consteval bool is_numeric(std::string_view token) {
+    if (token.empty()) return false;
+    if (token[0] == '0' && token.size() > 1) return false;
+    for (char c : token) {
+      if (c < '0' || c > '9') return false;
+    }
+    return true;
+  }
+
+  // Parse numeric token to index
+  static consteval std::size_t parse_index(std::string_view token) {
+    std::size_t result = 0;
+    for (char c : token) {
+      result = result * 10 + (c - '0');
+    }
+    return result;
+  }
+
+  // Count tokens in pointer
+  static consteval std::size_t count_tokens() {
+    if (pointer_str.empty() || pointer_str == "/") return 0;
+
+    std::size_t count = 0;
+    std::size_t pos = pointer_str[0] == '/' ? 1 : 0;
+
+    while (pos < pointer_str.size()) {
+      ++count;
+      std::size_t next_slash = pointer_str.find('/', pos);
+      if (next_slash == std::string_view::npos) break;
+      pos = next_slash + 1;
+    }
+
+    return count;
+  }
+
+  // Get Nth token
+  static consteval std::string_view get_token(std::size_t token_index) {
+    std::size_t pos = pointer_str[0] == '/' ? 1 : 0;
+    std::size_t current_token = 0;
+
+    while (current_token < token_index) {
+      std::size_t next_slash = pointer_str.find('/', pos);
+      pos = next_slash + 1;
+      ++current_token;
+    }
+
+    std::size_t token_end = pointer_str.find('/', pos);
+    if (token_end == std::string_view::npos) token_end = pointer_str.size();
+
+    return pointer_str.substr(pos, token_end - pos);
+  }
+};
+
+// JSON Pointer accessor
+template
+struct pointer_accessor {
+  using parser = json_pointer_parser;
+  static constexpr std::string_view pointer_view = Pointer.view();
+  static constexpr std::size_t token_count = parser::count_tokens();
+
+  // Validate pointer against struct definition
+  static consteval bool validate_pointer() {
+    if constexpr (!std::is_class_v) {
+      return true;
+    }
+
+    auto current_type = ^^T;
+    std::size_t pos = pointer_view[0] == '/' ? 1 : 0;
+
+    while (pos < pointer_view.size()) {
+      // Extract token up to next /
+      std::size_t token_end = pointer_view.find('/', pos);
+      if (token_end == std::string_view::npos) token_end = pointer_view.size();
+
+      std::string_view token = pointer_view.substr(pos, token_end - pos);
+
+      if (parser::is_numeric(token)) {
+        if (!path_accessor::is_array_like_reflected(current_type)) {
+          return false;
+        }
+        current_type = path_accessor::get_element_type_reflected(current_type);
+      } else {
+        bool found = false;
+        auto members = std::meta::nonstatic_data_members_of(current_type, std::meta::access_context::unchecked());
+
+        for (auto mem : members) {
+          if (std::meta::identifier_of(mem) == token) {
+            current_type = std::meta::type_of(mem);
+            found = true;
+            break;
+          }
+        }
+
+        if (!found) return false;
+      }
+
+      pos = token_end + 1;
+    }
+
+    return true;
+  }
+
+  // Recursive accessor
+  template
+  static inline simdjson_result access_impl(simdjson_result current) noexcept {
+    if constexpr (TokenIndex >= token_count) {
+      return current;
+    } else {
+      constexpr std::string_view token = parser::get_token(TokenIndex);
+
+      if constexpr (parser::is_numeric(token)) {
+        constexpr std::size_t index = parser::parse_index(token);
+        auto arr = current.get_array().value_unsafe();
+        auto next_value = arr.at(index);
+        return access_impl(next_value);
+      } else {
+        auto obj = current.get_object().value_unsafe();
+        auto next_value = obj.find_field_unordered(token);
+        return access_impl(next_value);
+      }
+    }
+  }
+
+  // Access JSON value at pointer
+  template
+  static inline simdjson_result access(DocOrValue& doc_or_val) noexcept {
+    if constexpr (std::is_class_v) {
+      constexpr bool pointer_valid = validate_pointer();
+      static_assert(pointer_valid, "JSON Pointer does not match struct definition");
+    }
+
+    if (pointer_view.empty() || pointer_view == "/") {
+      if constexpr (requires { doc_or_val.get_value(); }) {
+        return doc_or_val.get_value();
+      } else {
+        return doc_or_val;
+      }
+    }
+
+    simdjson_result current = doc_or_val.get_value();
+    return access_impl<0>(current);
+  }
+
+  // Extract value at pointer directly into target with type validation
+  template
+  static inline error_code extract_field(DocOrValue& doc_or_val, FieldType& target) noexcept {
+    static_assert(std::is_class_v, "extract_field requires T to be a struct type for validation");
+
+    constexpr bool pointer_valid = validate_pointer();
+    static_assert(pointer_valid, "JSON Pointer does not match struct definition");
+
+    constexpr auto final_type = get_final_type();
+    static_assert(final_type == ^^FieldType, "Target type does not match the field type at the pointer");
+
+    simdjson_result current_value = doc_or_val.get_value();
+    auto json_value = access_impl<0>(current_value);
+    if (json_value.error()) return json_value.error();
+
+    return json_value.get(target);
+  }
+
+private:
+  // Get final type by walking pointer through struct
+  template
+  static consteval std::enable_if_t, std::meta::info> get_final_type() {
+    auto current_type = ^^T;
+    std::size_t pos = pointer_view[0] == '/' ? 1 : 0;
+
+    while (pos < pointer_view.size()) {
+      std::size_t token_end = pointer_view.find('/', pos);
+      if (token_end == std::string_view::npos) token_end = pointer_view.size();
+
+      std::string_view token = pointer_view.substr(pos, token_end - pos);
+
+      if (parser::is_numeric(token)) {
+        current_type = path_accessor::get_element_type_reflected(current_type);
+      } else {
+        auto members = std::meta::nonstatic_data_members_of(current_type, std::meta::access_context::unchecked());
+
+        for (auto mem : members) {
+          if (std::meta::identifier_of(mem) == token) {
+            current_type = std::meta::type_of(mem);
+            break;
+          }
+        }
+      }
+
+      pos = token_end + 1;
+    }
+
+    return current_type;
+  }
+};
+
+// Compile-time JSON Pointer accessor with validation
+template
+inline simdjson_result<::simdjson::arm64::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+  using accessor = pointer_accessor;
+  return accessor::access(doc_or_val);
+}
+
+// Overload without type parameter (no validation)
+template
+inline simdjson_result<::simdjson::arm64::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+  using accessor = pointer_accessor;
+  return accessor::access(doc_or_val);
+}
+
+} // namespace json_path
+} // namespace ondemand
+} // namespace arm64
+} // namespace simdjson
+
+#endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
+#endif // SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
+
+/* end file simdjson/generic/ondemand/compile_time_accessors.h for arm64 */
+
+/* end file simdjson/generic/ondemand/amalgamated.h for arm64 */
+/* including simdjson/arm64/end.h: #include "simdjson/arm64/end.h" */
+/* begin file simdjson/arm64/end.h */
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
+/* undefining SIMDJSON_IMPLEMENTATION from "arm64" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/arm64/end.h */
+
+#endif // SIMDJSON_ARM64_ONDEMAND_H
+/* end file simdjson/arm64/ondemand.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(fallback)
+/* including simdjson/fallback/ondemand.h: #include "simdjson/fallback/ondemand.h" */
+/* begin file simdjson/fallback/ondemand.h */
+#ifndef SIMDJSON_FALLBACK_ONDEMAND_H
+#define SIMDJSON_FALLBACK_ONDEMAND_H
+
+/* including simdjson/fallback/begin.h: #include "simdjson/fallback/begin.h" */
+/* begin file simdjson/fallback/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "fallback" */
+#define SIMDJSON_IMPLEMENTATION fallback
+/* including simdjson/fallback/base.h: #include "simdjson/fallback/base.h" */
+/* begin file simdjson/fallback/base.h */
+#ifndef SIMDJSON_FALLBACK_BASE_H
+#define SIMDJSON_FALLBACK_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+/**
+ * Fallback implementation (runs on any machine).
+ */
+namespace fallback {
+
+class implementation;
+
+} // namespace fallback
+} // namespace simdjson
+
+#endif // SIMDJSON_FALLBACK_BASE_H
+/* end file simdjson/fallback/base.h */
+/* including simdjson/fallback/bitmanipulation.h: #include "simdjson/fallback/bitmanipulation.h" */
+/* begin file simdjson/fallback/bitmanipulation.h */
+#ifndef SIMDJSON_FALLBACK_BITMANIPULATION_H
+#define SIMDJSON_FALLBACK_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace fallback {
+namespace {
+
+#if defined(_MSC_VER) && !defined(_M_ARM64) && !defined(_M_X64)
+static inline unsigned char _BitScanForward64(unsigned long* ret, uint64_t x) {
+  unsigned long x0 = (unsigned long)x, top, bottom;
+  _BitScanForward(&top, (unsigned long)(x >> 32));
+  _BitScanForward(&bottom, x0);
+  *ret = x0 ? bottom : 32 + top;
+  return x != 0;
+}
+static unsigned char _BitScanReverse64(unsigned long* ret, uint64_t x) {
+  unsigned long x1 = (unsigned long)(x >> 32), top, bottom;
+  _BitScanReverse(&top, x1);
+  _BitScanReverse(&bottom, (unsigned long)x);
+  *ret = x1 ? top + 32 : bottom;
+  return x != 0;
+}
+#endif
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+#ifdef _MSC_VER
+  unsigned long leading_zero = 0;
+  // Search the mask data from most significant bit (MSB)
+  // to least significant bit (LSB) for a set bit (1).
+  if (_BitScanReverse64(&leading_zero, input_num))
+    return (int)(63 - leading_zero);
+  else
+    return 64;
+#else
+  return __builtin_clzll(input_num);
+#endif// _MSC_VER
+}
+
+} // unnamed namespace
+} // namespace fallback
+} // namespace simdjson
+
+#endif // SIMDJSON_FALLBACK_BITMANIPULATION_H
+/* end file simdjson/fallback/bitmanipulation.h */
+/* including simdjson/fallback/stringparsing_defs.h: #include "simdjson/fallback/stringparsing_defs.h" */
+/* begin file simdjson/fallback/stringparsing_defs.h */
+#ifndef SIMDJSON_FALLBACK_STRINGPARSING_DEFS_H
+#define SIMDJSON_FALLBACK_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace fallback {
+namespace {
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 1;
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return c == '"'; }
+  simdjson_inline bool has_backslash() { return c == '\\'; }
+  simdjson_inline int quote_index() { return c == '"' ? 0 : 1; }
+  simdjson_inline int backslash_index() { return c == '\\' ? 0 : 1; }
+
+  uint8_t c;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // store to dest unconditionally - we can overwrite the bits we don't like later
+  dst[0] = src[0];
+  return { src[0] };
+}
+
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 1;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits; }
+  simdjson_inline int escape_index() { return 0; }
+
+  bool escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  dst[0] = src[0];
+  return { (src[0] == '\\') || (src[0] == '"') || (src[0] < 32) };
+}
+
+} // unnamed namespace
+} // namespace fallback
+} // namespace simdjson
+
+#endif // SIMDJSON_FALLBACK_STRINGPARSING_DEFS_H
+/* end file simdjson/fallback/stringparsing_defs.h */
+/* including simdjson/fallback/numberparsing_defs.h: #include "simdjson/fallback/numberparsing_defs.h" */
+/* begin file simdjson/fallback/numberparsing_defs.h */
+#ifndef SIMDJSON_FALLBACK_NUMBERPARSING_DEFS_H
+#define SIMDJSON_FALLBACK_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+#ifdef JSON_TEST_NUMBERS // for unit testing
+void found_invalid_number(const uint8_t *buf);
+void found_integer(int64_t result, const uint8_t *buf);
+void found_unsigned_integer(uint64_t result, const uint8_t *buf);
+void found_float(double result, const uint8_t *buf);
+#endif
+
+namespace simdjson {
+namespace fallback {
+namespace numberparsing {
+
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const char *chars) {
+  uint64_t val;
+  memcpy(&val, chars, sizeof(uint64_t));
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+}
+
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  return parse_eight_digits_unrolled(reinterpret_cast(chars));
+}
+
+#if SIMDJSON_IS_32BITS // _umul128 for x86, arm
+// this is a slow emulation routine for 32-bit
+//
+static simdjson_inline uint64_t __emulu(uint32_t x, uint32_t y) {
+  return x * (uint64_t)y;
+}
+static simdjson_inline uint64_t _umul128(uint64_t ab, uint64_t cd, uint64_t *hi) {
+  uint64_t ad = __emulu((uint32_t)(ab >> 32), (uint32_t)cd);
+  uint64_t bd = __emulu((uint32_t)ab, (uint32_t)cd);
+  uint64_t adbc = ad + __emulu((uint32_t)ab, (uint32_t)(cd >> 32));
+  uint64_t adbc_carry = !!(adbc < ad);
+  uint64_t lo = bd + (adbc << 32);
+  *hi = __emulu((uint32_t)(ab >> 32), (uint32_t)(cd >> 32)) + (adbc >> 32) +
+        (adbc_carry << 32) + !!(lo < bd);
+  return lo;
+}
+#endif
+
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+#if SIMDJSON_IS_ARM64
+  // ARM64 has native support for 64-bit multiplications, no need to emultate
+  answer.high = __umulh(value1, value2);
+  answer.low = value1 * value2;
+#else
+  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
+#endif // SIMDJSON_IS_ARM64
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+#endif
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace fallback
+} // namespace simdjson
+
+#ifndef SIMDJSON_SWAR_NUMBER_PARSING
+#if SIMDJSON_IS_BIG_ENDIAN
+#define SIMDJSON_SWAR_NUMBER_PARSING 0
+#else
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+#endif
+#endif
+
+#endif // SIMDJSON_FALLBACK_NUMBERPARSING_DEFS_H
+/* end file simdjson/fallback/numberparsing_defs.h */
+/* end file simdjson/fallback/begin.h */
+/* including simdjson/generic/ondemand/amalgamated.h for fallback: #include "simdjson/generic/ondemand/amalgamated.h" */
+/* begin file simdjson/generic/ondemand/amalgamated.h for fallback */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
+#error simdjson/generic/ondemand/dependencies.h must be included before simdjson/generic/ondemand/amalgamated.h!
+#endif
+
+// Stuff other things depend on
+/* including simdjson/generic/ondemand/base.h for fallback: #include "simdjson/generic/ondemand/base.h" */
+/* begin file simdjson/generic/ondemand/base.h for fallback */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_BASE_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_BASE_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace fallback {
+/**
+ * A fast, simple, DOM-like interface that parses JSON as you use it.
+ *
+ * Designed for maximum speed and a lower memory profile.
+ */
+namespace ondemand {
+
+/** Represents the depth of a JSON value (number of nested arrays/objects). */
+using depth_t = int32_t;
+
+/** @copydoc simdjson::fallback::number_type */
+using number_type = simdjson::fallback::number_type;
+
+/** @private Position in the JSON buffer indexes */
+using token_position = const uint32_t *;
+
+class array;
+class array_iterator;
+class document;
+class document_reference;
+class document_stream;
+class field;
+class json_iterator;
+enum class json_type;
+struct number;
+class object;
+class object_iterator;
+class parser;
+class raw_json_string;
+class token_iterator;
+class value;
+class value_iterator;
+
+} // namespace ondemand
+} // namespace fallback
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_BASE_H
+/* end file simdjson/generic/ondemand/base.h for fallback */
+/* including simdjson/generic/ondemand/deserialize.h for fallback: #include "simdjson/generic/ondemand/deserialize.h" */
+/* begin file simdjson/generic/ondemand/deserialize.h for fallback */
+#if SIMDJSON_SUPPORTS_CONCEPTS
+
+#ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_ONDEMAND_DESERIALIZE_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+struct deserialize_tag;
+
+/// These types are deserializable in a built-in way
+template  struct is_builtin_deserializable : std::false_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+
+template 
+concept is_builtin_deserializable_v = is_builtin_deserializable::value;
+
+template 
+concept custom_deserializable = tag_invocable;
+
+template 
+concept deserializable = custom_deserializable || is_builtin_deserializable_v || concepts::optional_type;
+
+template 
+concept nothrow_custom_deserializable = nothrow_tag_invocable;
+
+// built-in types are noexcept and if an error happens, the value simply gets ignored and the error is returned.
+template 
+concept nothrow_deserializable = nothrow_custom_deserializable || is_builtin_deserializable_v;
+
+/// Deserialize Tag
+inline constexpr struct deserialize_tag {
+  using array_type = fallback::ondemand::array;
+  using object_type = fallback::ondemand::object;
+  using value_type = fallback::ondemand::value;
+  using document_type = fallback::ondemand::document;
+  using document_reference_type = fallback::ondemand::document_reference;
+
+  // Customization Point for array
+  template 
+    requires custom_deserializable
+  simdjson_warn_unused constexpr /* error_code */ auto operator()(array_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
+    return tag_invoke(*this, object, output);
+  }
+
+  // Customization Point for object
+  template 
+    requires custom_deserializable
+  simdjson_warn_unused constexpr /* error_code */ auto operator()(object_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
+    return tag_invoke(*this, object, output);
+  }
+
+  // Customization Point for value
+  template 
+    requires custom_deserializable
+  simdjson_warn_unused constexpr /* error_code */ auto operator()(value_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
+    return tag_invoke(*this, object, output);
+  }
+
+  // Customization Point for document
+  template 
+    requires custom_deserializable
+  simdjson_warn_unused constexpr /* error_code */ auto operator()(document_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
+    return tag_invoke(*this, object, output);
+  }
+
+  // Customization Point for document reference
+  template 
+    requires custom_deserializable
+  simdjson_warn_unused constexpr /* error_code */ auto operator()(document_reference_type &object, T& output) const noexcept(nothrow_custom_deserializable) {
+    return tag_invoke(*this, object, output);
+  }
+
+
+} deserialize{};
+
+} // namespace simdjson
+
+#endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
+#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
+/* end file simdjson/generic/ondemand/deserialize.h for fallback */
+/* including simdjson/generic/ondemand/value_iterator.h for fallback: #include "simdjson/generic/ondemand/value_iterator.h" */
+/* begin file simdjson/generic/ondemand/value_iterator.h for fallback */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace fallback {
+namespace ondemand {
+
+/**
+ * Iterates through a single JSON value at a particular depth.
+ *
+ * Does not keep track of the type of value: provides methods for objects, arrays and scalars and expects
+ * the caller to call the right ones.
+ *
+ * @private This is not intended for external use.
+ */
+class value_iterator {
+protected:
+  /** The underlying JSON iterator */
+  json_iterator *_json_iter{};
+  /** The depth of this value */
+  depth_t _depth{};
+  /**
+   * The starting token index for this value
+   */
+  token_position _start_position{};
+
+public:
+  simdjson_inline value_iterator() noexcept = default;
+
+  /**
+   * Denote that we're starting a document.
+   */
+  simdjson_inline void start_document() noexcept;
+
+  /**
+   * Skips a non-iterated or partially-iterated JSON value, whether it is a scalar, array or object.
+   *
+   * Optimized for scalars.
+   */
+  simdjson_warn_unused simdjson_inline error_code skip_child() noexcept;
+
+  /**
    * Tell whether the iterator is at the EOF mark
    */
   simdjson_inline bool at_end() const noexcept;
@@ -34853,21 +74243,22 @@ class value_iterator {
 
   friend class document;
   friend class object;
+  friend class object_iterator;
   friend class array;
   friend class value;
   friend class field;
 }; // value_iterator
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::value_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::value_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -34875,9 +74266,9 @@ struct simdjson_result : public arm64::implemen
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
-/* end file simdjson/generic/ondemand/value_iterator.h for arm64 */
-/* including simdjson/generic/ondemand/value.h for arm64: #include "simdjson/generic/ondemand/value.h" */
-/* begin file simdjson/generic/ondemand/value.h for arm64 */
+/* end file simdjson/generic/ondemand/value_iterator.h for fallback */
+/* including simdjson/generic/ondemand/value.h for fallback: #include "simdjson/generic/ondemand/value.h" */
+/* begin file simdjson/generic/ondemand/value.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -34893,7 +74284,7 @@ struct simdjson_result : public arm64::implemen
 
 namespace simdjson {
 
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 /**
  * An ephemeral JSON value returned during iteration. It is only valid for as long as you do
@@ -35607,20 +74998,20 @@ class value {
 };
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::value &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::value &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result get_array() noexcept;
-  simdjson_inline simdjson_result get_object() noexcept;
+  simdjson_inline simdjson_result get_array() noexcept;
+  simdjson_inline simdjson_result get_object() noexcept;
 
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
@@ -35632,7 +75023,7 @@ struct simdjson_result : public arm64::implementation_si
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
@@ -35643,20 +75034,20 @@ struct simdjson_result : public arm64::implementation_si
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator arm64::ondemand::array() noexcept(false);
-  simdjson_inline operator arm64::ondemand::object() noexcept(false);
+  simdjson_inline operator fallback::ondemand::array() noexcept(false);
+  simdjson_inline operator fallback::ondemand::object() noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator arm64::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator fallback::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
 
   /**
    * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
@@ -35680,9 +75071,9 @@ struct simdjson_result : public arm64::implementation_si
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field(const char *key) noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field(const char *key) noexcept;
 
   /**
    * Look up a field by name on an object, without regard to key order.
@@ -35694,7 +75085,7 @@ struct simdjson_result : public arm64::implementation_si
    * in question is large. The fact that the extra code is there also bumps the executable size.
    *
    * We default operator[] on find_field_unordered() for convenience.
-   * It is the defaul because it would be highly surprising (and hard to debug) if the
+   * It is the default because it would be highly surprising (and hard to debug) if the
    * default behavior failed to look up a field just because it was in the wrong order--and many
    * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
    *
@@ -35704,14 +75095,14 @@ struct simdjson_result : public arm64::implementation_si
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](const char *key) noexcept;
-  simdjson_result operator[](int) noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](const char *key) noexcept;
+  simdjson_result operator[](int) noexcept = delete;
 
   /**
    * Get the type of this JSON value. It does not validate or consume the value.
@@ -35735,13 +75126,13 @@ struct simdjson_result : public arm64::implementation_si
    * better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just
    * let it throw an exception).
    */
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
 
   /** @copydoc simdjson_inline std::string_view value::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
@@ -35751,17 +75142,17 @@ struct simdjson_result : public arm64::implementation_si
   simdjson_inline simdjson_result current_location() noexcept;
   /** @copydoc simdjson_inline int32_t current_depth() const noexcept */
   simdjson_inline simdjson_result current_depth() const noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_H
-/* end file simdjson/generic/ondemand/value.h for arm64 */
-/* including simdjson/generic/ondemand/logger.h for arm64: #include "simdjson/generic/ondemand/logger.h" */
-/* begin file simdjson/generic/ondemand/logger.h for arm64 */
+/* end file simdjson/generic/ondemand/value.h for fallback */
+/* including simdjson/generic/ondemand/logger.h for fallback: #include "simdjson/generic/ondemand/logger.h" */
+/* begin file simdjson/generic/ondemand/logger.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -35770,7 +75161,7 @@ struct simdjson_result : public arm64::implementation_si
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 // Logging should be free unless SIMDJSON_VERBOSE_LOGGING is set. Importantly, it is critical
@@ -35816,13 +75207,13 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 
 } // namespace logger
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
-/* end file simdjson/generic/ondemand/logger.h for arm64 */
-/* including simdjson/generic/ondemand/token_iterator.h for arm64: #include "simdjson/generic/ondemand/token_iterator.h" */
-/* begin file simdjson/generic/ondemand/token_iterator.h for arm64 */
+/* end file simdjson/generic/ondemand/logger.h for fallback */
+/* including simdjson/generic/ondemand/token_iterator.h for fallback: #include "simdjson/generic/ondemand/token_iterator.h" */
+/* begin file simdjson/generic/ondemand/token_iterator.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -35833,7 +75224,7 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 /**
@@ -35964,15 +75355,15 @@ class token_iterator {
 };
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::token_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::token_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -35981,9 +75372,9 @@ struct simdjson_result : public arm64::implemen
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
-/* end file simdjson/generic/ondemand/token_iterator.h for arm64 */
-/* including simdjson/generic/ondemand/json_iterator.h for arm64: #include "simdjson/generic/ondemand/json_iterator.h" */
-/* begin file simdjson/generic/ondemand/json_iterator.h for arm64 */
+/* end file simdjson/generic/ondemand/token_iterator.h for fallback */
+/* including simdjson/generic/ondemand/json_iterator.h for fallback: #include "simdjson/generic/ondemand/json_iterator.h" */
+/* begin file simdjson/generic/ondemand/json_iterator.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -35994,7 +75385,7 @@ struct simdjson_result : public arm64::implemen
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 /**
@@ -36305,15 +75696,15 @@ class json_iterator {
 }; // json_iterator
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::json_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::json_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
 
   simdjson_inline simdjson_result() noexcept = default;
@@ -36322,9 +75713,9 @@ struct simdjson_result : public arm64::implement
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
-/* end file simdjson/generic/ondemand/json_iterator.h for arm64 */
-/* including simdjson/generic/ondemand/json_type.h for arm64: #include "simdjson/generic/ondemand/json_type.h" */
-/* begin file simdjson/generic/ondemand/json_type.h for arm64 */
+/* end file simdjson/generic/ondemand/json_iterator.h for fallback */
+/* including simdjson/generic/ondemand/json_type.h for fallback: #include "simdjson/generic/ondemand/json_type.h" */
+/* begin file simdjson/generic/ondemand/json_type.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -36335,7 +75726,7 @@ struct simdjson_result : public arm64::implement
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 /**
@@ -36469,15 +75860,15 @@ inline std::ostream& operator<<(std::ostream& out, simdjson_result &t
 #endif
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::json_type &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::json_type &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -36486,9 +75877,9 @@ struct simdjson_result : public arm64::implementatio
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
-/* end file simdjson/generic/ondemand/json_type.h for arm64 */
-/* including simdjson/generic/ondemand/raw_json_string.h for arm64: #include "simdjson/generic/ondemand/raw_json_string.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string.h for arm64 */
+/* end file simdjson/generic/ondemand/json_type.h for fallback */
+/* including simdjson/generic/ondemand/raw_json_string.h for fallback: #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -36498,7 +75889,7 @@ struct simdjson_result : public arm64::implementatio
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 /**
@@ -36680,30 +76071,30 @@ simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_js
 
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::raw_json_string &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::raw_json_string &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
 
   simdjson_inline simdjson_result raw() const noexcept;
   simdjson_inline char operator[](size_t) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape(arm64::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(arm64::ondemand::json_iterator &iter) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape(fallback::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(fallback::ondemand::json_iterator &iter) const noexcept;
 };
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
-/* end file simdjson/generic/ondemand/raw_json_string.h for arm64 */
-/* including simdjson/generic/ondemand/parser.h for arm64: #include "simdjson/generic/ondemand/parser.h" */
-/* begin file simdjson/generic/ondemand/parser.h for arm64 */
+/* end file simdjson/generic/ondemand/raw_json_string.h for fallback */
+/* including simdjson/generic/ondemand/parser.h for fallback: #include "simdjson/generic/ondemand/parser.h" */
+/* begin file simdjson/generic/ondemand/parser.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -36716,7 +76107,7 @@ struct simdjson_result : public arm64::impleme
 #include 
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 /**
@@ -37116,15 +76507,15 @@ class parser {
 };
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::parser &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::parser &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -37132,319 +76523,11 @@ struct simdjson_result : public arm64::implementation_s
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_H
-/* end file simdjson/generic/ondemand/parser.h for arm64 */
-
-// JSON builder - needed for extract_into functionality
-/* including simdjson/generic/ondemand/json_string_builder.h for arm64: #include "simdjson/generic/ondemand/json_string_builder.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder.h for arm64 */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace arm64 {
-namespace builder {
-  class string_builder;
-}}
-
-template 
-struct has_custom_serialization : std::false_type {};
-
-inline constexpr struct serialize_tag {
-  template 
-  constexpr void operator()(arm64::builder::string_builder& b, T&& obj) const{
-    return tag_invoke(*this, b, std::forward(obj));
-  }
-
-
-} serialize{};
-template 
-struct has_custom_serialization(), std::declval()))
->> : std::true_type {};
-
-template 
-constexpr bool require_custom_serialization = has_custom_serialization::value;
-#else
-struct has_custom_serialization : std::false_type {};
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace arm64 {
-namespace builder {
-/**
- * A builder for JSON strings representing documents. This is a low-level
- * builder that is not meant to be used directly by end-users. Though it
- * supports atomic types (Booleans, strings), it does not support composed
- * types (arrays and objects).
- *
- * Ultimately, this class can support kernel-specific optimizations. E.g.,
- * it may make use of SIMD instructions to escape strings faster.
- */
-class string_builder {
-public:
-  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
-
-  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
-
-  /**
-   * Append number (includes Booleans). Booleans are mapped to the strings
-   * false and true. Numbers are converted to strings abiding by the JSON standard.
-   * Floating-point numbers are converted to the shortest string that 'correctly'
-   * represents the number.
-   */
-  template::value>::type>
-  simdjson_inline void append(number_type v) noexcept;
-
-  /**
-   * Append character c.
-   */
-  simdjson_inline void append(char c)  noexcept;
-
-  /**
-   * Append the string 'null'.
-   */
-  simdjson_inline void append_null()  noexcept;
-
-  /**
-   * Clear the content.
-   */
-  simdjson_inline void clear()  noexcept;
-
-  /**
-   * Append the std::string_view, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
-
-  /**
-   * Append the std::string_view surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void escape_and_append_with_quotes()  noexcept;
-#endif
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
-
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
-
-  /**
-   * Append the C string directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *c)  noexcept;
-
-  /**
-   * Append "{" to the buffer.
-   */
-  simdjson_inline void start_object()  noexcept;
-
-  /**
-   * Append "}" to the buffer.
-   */
-  simdjson_inline void end_object()  noexcept;
-
-  /**
-   * Append "[" to the buffer.
-   */
-  simdjson_inline void start_array()  noexcept;
-
-  /**
-   * Append "]" to the buffer.
-   */
-  simdjson_inline void end_array()  noexcept;
-
-  /**
-   * Append "," to the buffer.
-   */
-  simdjson_inline void append_comma()  noexcept;
-
-  /**
-   * Append ":" to the buffer.
-   */
-  simdjson_inline void append_colon()  noexcept;
-
-  /**
-   * Append a key-value pair to the buffer.
-   * The key is escaped and surrounded by double quotes.
-   * The value is escaped if it is a string.
-   */
-  template
-  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void append_key_value(value_type value) noexcept;
-
-  // Support for optional types (std::optional, etc.)
-  template 
-  requires(!require_custom_serialization)
-  simdjson_inline void append(const T &opt);
-
-  template 
-  requires(require_custom_serialization)
-  simdjson_inline void append(T &&val);
-
-  // Support for string-like types
-  template 
-  requires(std::is_convertible::value ||
-  std::is_same::value )
-  simdjson_inline void append(const T &value);
-#endif
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-  // Support for range-based appending (std::ranges::view, etc.)
-  template 
-requires (!std::is_convertible::value && !require_custom_serialization)
-  simdjson_inline void append(const R &range) noexcept;
-#endif
-  /**
-   * Append the std::string_view directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(std::string_view input)  noexcept;
-
-  /**
-   * Append len characters from str.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
-#if SIMDJSON_EXCEPTIONS
-  /**
-   * Creates an std::string from the written JSON buffer.
-   * Throws if memory allocation failed
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string() const noexcept(false);
-
-  /**
-   * Creates an std::string_view from the written JSON buffer.
-   * Throws if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
-#endif
-
-  /**
-   * Returns a view on the written JSON buffer. Returns an error
-   * if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result view() const noexcept;
-
-  /**
-   * Appends the null character to the buffer and returns
-   * a pointer to the beginning of the written JSON buffer.
-   * Returns an error if memory allocation failed.
-   * The result is null-terminated.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result c_str() noexcept;
-
-  /**
-   * Return true if the content is valid UTF-8.
-   */
-  simdjson_inline bool validate_unicode() const noexcept;
-
-  /**
-   * Returns the current size of the written JSON buffer.
-   * If an error occurred, returns 0.
-   */
-  simdjson_inline size_t size() const noexcept;
-
-private:
-  /**
-   * Returns true if we can write at least upcoming_bytes bytes.
-   * The underlying buffer is reallocated if needed. It is designed
-   * to be called before writing to the buffer. It should be fast.
-   */
-  simdjson_inline bool capacity_check(size_t upcoming_bytes);
-
-  /**
-   * Grow the buffer to at least desired_capacity bytes.
-   * If the allocation fails, is_valid is set to false. We expect
-   * that this function would not be repeatedly called.
-   */
-  simdjson_inline void grow_buffer(size_t desired_capacity);
-
-  /**
-   * We use this helper function to make sure that is_valid is kept consistent.
-   */
-  simdjson_inline void set_valid(bool valid) noexcept;
-
-  std::unique_ptr buffer{};
-  size_t position{0};
-  size_t capacity{0};
-  bool is_valid{true};
-};
-
-
-
-}
-}
-
-
-#if !SIMDJSON_STATIC_REFLECTION
-// fallback implementation until we have static reflection
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::arm64::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view s;
-  auto e = b.view().get(s);
-  if(e) { return e; }
-  return std::string(s);
-}
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::arm64::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view sv;
-  auto e = b.view().get(sv);
-  if(e) { return e; }
-  s.assign(sv.data(), sv.size());
-  return simdjson::SUCCESS;
-}
-#endif
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
-/* end file simdjson/generic/ondemand/json_string_builder.h for arm64 */
+/* end file simdjson/generic/ondemand/parser.h for fallback */
 
 // All other declarations
-/* including simdjson/generic/ondemand/array.h for arm64: #include "simdjson/generic/ondemand/array.h" */
-/* begin file simdjson/generic/ondemand/array.h for arm64 */
+/* including simdjson/generic/ondemand/array.h for fallback: #include "simdjson/generic/ondemand/array.h" */
+/* begin file simdjson/generic/ondemand/array.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -37456,7 +76539,7 @@ simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t i
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 /**
@@ -37676,27 +76759,27 @@ class array {
 };
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::array &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::array &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
   inline simdjson_result count_elements() & noexcept;
   inline simdjson_result is_empty() & noexcept;
   inline simdjson_result reset() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   simdjson_inline simdjson_result raw_json() noexcept;
 #if SIMDJSON_SUPPORTS_CONCEPTS
   // TODO: move this code into object-inl.h
@@ -37704,7 +76787,7 @@ struct simdjson_result : public arm64::implementation_si
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -37712,7 +76795,7 @@ struct simdjson_result : public arm64::implementation_si
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -37725,13 +76808,14 @@ struct simdjson_result : public arm64::implementation_si
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
-/* end file simdjson/generic/ondemand/array.h for arm64 */
-/* including simdjson/generic/ondemand/array_iterator.h for arm64: #include "simdjson/generic/ondemand/array_iterator.h" */
-/* begin file simdjson/generic/ondemand/array_iterator.h for arm64 */
+/* end file simdjson/generic/ondemand/array.h for fallback */
+/* including simdjson/generic/ondemand/array_iterator.h for fallback: #include "simdjson/generic/ondemand/array_iterator.h" */
+/* begin file simdjson/generic/ondemand/array_iterator.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include  */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
@@ -37739,7 +76823,7 @@ struct simdjson_result : public arm64::implementation_si
 
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 /**
@@ -37747,11 +76831,17 @@ namespace ondemand {
  *
  * This is an input_iterator, meaning:
  * - It is forward-only
- * - * must be called exactly once per element.
+ * - * must be called at most once per element.
  * - ++ must be called exactly once in between each * (*, ++, *, ++, * ...)
  */
 class array_iterator {
 public:
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
   /** Create a new, invalid array iterator. */
   simdjson_inline array_iterator() noexcept = default;
 
@@ -37795,6 +76885,9 @@ class array_iterator {
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   value_iterator iter{};
 
   simdjson_inline array_iterator(const value_iterator &iter) noexcept;
@@ -37805,14 +76898,20 @@ class array_iterator {
 };
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
-  simdjson_inline simdjson_result(arm64::ondemand::array_iterator &&value) noexcept; ///< @private
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
+  simdjson_inline simdjson_result(fallback::ondemand::array_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -37820,10 +76919,10 @@ struct simdjson_result : public arm64::implemen
   // Iterator interface
   //
 
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 };
@@ -37831,9 +76930,9 @@ struct simdjson_result : public arm64::implemen
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
-/* end file simdjson/generic/ondemand/array_iterator.h for arm64 */
-/* including simdjson/generic/ondemand/document.h for arm64: #include "simdjson/generic/ondemand/document.h" */
-/* begin file simdjson/generic/ondemand/document.h for arm64 */
+/* end file simdjson/generic/ondemand/array_iterator.h for fallback */
+/* including simdjson/generic/ondemand/document.h for fallback: #include "simdjson/generic/ondemand/document.h" */
+/* begin file simdjson/generic/ondemand/document.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -37847,7 +76946,7 @@ struct simdjson_result : public arm64::implemen
 
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 /**
@@ -38799,21 +77898,21 @@ class document_reference {
   document *doc{nullptr};
 };
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::document &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::document &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -38824,9 +77923,9 @@ struct simdjson_result : public arm64::implementation
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -38836,33 +77935,33 @@ struct simdjson_result : public arm64::implementation
   template simdjson_inline error_code get(T &out) && noexcept;
 #if SIMDJSON_EXCEPTIONS
 
-  using arm64::implementation_simdjson_result_base::operator*;
-  using arm64::implementation_simdjson_result_base::operator->;
-  template ::value == false>::type>
+  using fallback::implementation_simdjson_result_base::operator*;
+  using fallback::implementation_simdjson_result_base::operator->;
+  template ::value == false>::type>
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator arm64::ondemand::array() & noexcept(false);
-  simdjson_inline operator arm64::ondemand::object() & noexcept(false);
+  simdjson_inline operator fallback::ondemand::array() & noexcept(false);
+  simdjson_inline operator fallback::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator arm64::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator fallback::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator arm64::ondemand::value() noexcept(false);
+  simdjson_inline operator fallback::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
@@ -38870,14 +77969,14 @@ struct simdjson_result : public arm64::implementation
   simdjson_inline bool at_end() const noexcept;
   simdjson_inline bool is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -38893,14 +77992,14 @@ struct simdjson_result : public arm64::implementation
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::document_reference value, error_code error) noexcept;
+  simdjson_inline simdjson_result(fallback::ondemand::document_reference value, error_code error) noexcept;
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -38911,9 +78010,9 @@ struct simdjson_result : public arm64::impl
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -38924,43 +78023,43 @@ struct simdjson_result : public arm64::impl
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator arm64::ondemand::array() & noexcept(false);
-  simdjson_inline operator arm64::ondemand::object() & noexcept(false);
+  simdjson_inline operator fallback::ondemand::array() & noexcept(false);
+  simdjson_inline operator fallback::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator arm64::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator fallback::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator arm64::ondemand::value() noexcept(false);
+  simdjson_inline operator fallback::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
   simdjson_inline simdjson_result current_depth() const noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document_reference::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -38972,9 +78071,9 @@ struct simdjson_result : public arm64::impl
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
-/* end file simdjson/generic/ondemand/document.h for arm64 */
-/* including simdjson/generic/ondemand/document_stream.h for arm64: #include "simdjson/generic/ondemand/document_stream.h" */
-/* begin file simdjson/generic/ondemand/document_stream.h for arm64 */
+/* end file simdjson/generic/ondemand/document.h for fallback */
+/* including simdjson/generic/ondemand/document_stream.h for fallback: #include "simdjson/generic/ondemand/document_stream.h" */
+/* begin file simdjson/generic/ondemand/document_stream.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -38992,7 +78091,7 @@ struct simdjson_result : public arm64::impl
 #endif
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -39305,14 +78404,14 @@ class document_stream {
 };  // document_stream
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::document_stream &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::document_stream &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -39320,9 +78419,9 @@ struct simdjson_result : public arm64::impleme
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
-/* end file simdjson/generic/ondemand/document_stream.h for arm64 */
-/* including simdjson/generic/ondemand/field.h for arm64: #include "simdjson/generic/ondemand/field.h" */
-/* begin file simdjson/generic/ondemand/field.h for arm64 */
+/* end file simdjson/generic/ondemand/document_stream.h for fallback */
+/* including simdjson/generic/ondemand/field.h for fallback: #include "simdjson/generic/ondemand/field.h" */
+/* begin file simdjson/generic/ondemand/field.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -39334,7 +78433,7 @@ struct simdjson_result : public arm64::impleme
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 /**
@@ -39412,33 +78511,33 @@ class field : public std::pair {
 };
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::field &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::field &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
   simdjson_inline simdjson_result unescaped_key(bool allow_replacement = false) noexcept;
   template
   simdjson_inline error_code unescaped_key(string_type &receiver, bool allow_replacement = false) noexcept;
-  simdjson_inline simdjson_result key() noexcept;
+  simdjson_inline simdjson_result key() noexcept;
   simdjson_inline simdjson_result key_raw_json_token() noexcept;
   simdjson_inline simdjson_result escaped_key() noexcept;
-  simdjson_inline simdjson_result value() noexcept;
+  simdjson_inline simdjson_result value() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_H
-/* end file simdjson/generic/ondemand/field.h for arm64 */
-/* including simdjson/generic/ondemand/object.h for arm64: #include "simdjson/generic/ondemand/object.h" */
-/* begin file simdjson/generic/ondemand/object.h for arm64 */
+/* end file simdjson/generic/ondemand/field.h for fallback */
+/* including simdjson/generic/ondemand/object.h for fallback: #include "simdjson/generic/ondemand/object.h" */
+/* begin file simdjson/generic/ondemand/object.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -39453,7 +78552,7 @@ struct simdjson_result : public arm64::implementation_si
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 /**
@@ -39468,6 +78567,13 @@ class object {
    */
   simdjson_inline object() noexcept = default;
 
+  /**
+   * Get an iterator to the start of the object. We recommend using a range-based for loop.
+   *
+   * Using the iterator directly is also possible but error-prone and discouraged. In particular,
+   * you must dereference the iterator exactly once per iteration (before calling '++').
+   * Doing otherwise is unsafe and may lead to errors. You are responsible for ensuring
+   */
   simdjson_inline simdjson_result begin() noexcept;
   simdjson_inline simdjson_result end() noexcept;
   /**
@@ -39740,29 +78846,29 @@ class object {
 };
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::object &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::object &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   inline simdjson_result reset() noexcept;
   inline simdjson_result is_empty() noexcept;
   inline simdjson_result count_fields() & noexcept;
@@ -39773,7 +78879,7 @@ struct simdjson_result : public arm64::implementation_s
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -39781,7 +78887,7 @@ struct simdjson_result : public arm64::implementation_s
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -39804,9 +78910,9 @@ struct simdjson_result : public arm64::implementation_s
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
-/* end file simdjson/generic/ondemand/object.h for arm64 */
-/* including simdjson/generic/ondemand/object_iterator.h for arm64: #include "simdjson/generic/ondemand/object_iterator.h" */
-/* begin file simdjson/generic/ondemand/object_iterator.h for arm64 */
+/* end file simdjson/generic/ondemand/object.h for fallback */
+/* including simdjson/generic/ondemand/object_iterator.h for fallback: #include "simdjson/generic/ondemand/object_iterator.h" */
+/* begin file simdjson/generic/ondemand/object_iterator.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -39817,7 +78923,7 @@ struct simdjson_result : public arm64::implementation_s
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 class object_iterator {
@@ -39841,9 +78947,14 @@ class object_iterator {
   // Assumes it's being compared with the end. true if depth >= iter->depth.
   simdjson_inline bool operator!=(const object_iterator &) const noexcept;
   // Checks for ']' and ','
+  // YOU MUST NOT CALL THIS IF operator* YIELDED AN ERROR.
+  // YOU MUST NOT CALL THIS WITHOUT A CORRESPONDING operator* CALL.
   simdjson_inline object_iterator &operator++() noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   /**
    * The underlying JSON iterator.
    *
@@ -39858,15 +78969,15 @@ class object_iterator {
 };
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public arm64::implementation_simdjson_result_base {
+struct simdjson_result : public fallback::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(arm64::ondemand::object_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(fallback::ondemand::object_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -39875,21 +78986,21 @@ struct simdjson_result : public arm64::impleme
   //
 
   // Reads key and value, yielding them to the user.
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
   // Assumes it's being compared with the end. true if depth < iter->depth.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
   // Assumes it's being compared with the end. true if depth >= iter->depth.
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
   // Checks for ']' and ','
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
-/* end file simdjson/generic/ondemand/object_iterator.h for arm64 */
-/* including simdjson/generic/ondemand/serialization.h for arm64: #include "simdjson/generic/ondemand/serialization.h" */
-/* begin file simdjson/generic/ondemand/serialization.h for arm64 */
+/* end file simdjson/generic/ondemand/object_iterator.h for fallback */
+/* including simdjson/generic/ondemand/serialization.h for fallback: #include "simdjson/generic/ondemand/serialization.h" */
+/* begin file simdjson/generic/ondemand/serialization.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -39903,30 +79014,30 @@ namespace simdjson {
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(arm64::ondemand::document& x) noexcept;
+inline simdjson_result to_json_string(fallback::ondemand::document& x) noexcept;
 /**
  * Create a string-view instance out of a value instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. The value must
  * not have been accessed previously. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(arm64::ondemand::value& x) noexcept;
+inline simdjson_result to_json_string(fallback::ondemand::value& x) noexcept;
 /**
  * Create a string-view instance out of an object instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(arm64::ondemand::object& x) noexcept;
+inline simdjson_result to_json_string(fallback::ondemand::object& x) noexcept;
 /**
  * Create a string-view instance out of an array instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(arm64::ondemand::array& x) noexcept;
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(fallback::ondemand::array& x) noexcept;
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
 
 #if SIMDJSON_STATIC_REFLECTION
 /**
@@ -39934,10 +79045,10 @@ inline simdjson_result to_json_string(simdjson_result
-  requires(!std::same_as &&
-           !std::same_as &&
-           !std::same_as &&
-           !std::same_as)
+  requires(!std::same_as &&
+           !std::same_as &&
+           !std::same_as &&
+           !std::same_as)
 inline std::string to_json_string(const T& obj);
 #endif
 
@@ -39950,7 +79061,7 @@ inline std::string to_json_string(const T& obj);
  * Credit: @madhur4127
  * See https://github.com/simdjson/simdjson/issues/1768
  */
-namespace simdjson { namespace arm64 { namespace ondemand {
+namespace simdjson { namespace fallback { namespace ondemand {
 
 /**
  * Print JSON to an output stream.  It does not
@@ -39960,9 +79071,9 @@ namespace simdjson { namespace arm64 { namespace ondemand {
  * @param value The element.
  * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
  */
-inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::value x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::value x);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -39972,9 +79083,9 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -39984,13 +79095,13 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
-inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::document_reference& value);
+inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::document_reference& value);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -40000,18 +79111,18 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
-}}} // namespace simdjson::arm64::ondemand
+}}} // namespace simdjson::fallback::ondemand
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
-/* end file simdjson/generic/ondemand/serialization.h for arm64 */
+/* end file simdjson/generic/ondemand/serialization.h for fallback */
 
 // Deserialization for standard types
-/* including simdjson/generic/ondemand/std_deserialize.h for arm64: #include "simdjson/generic/ondemand/std_deserialize.h" */
-/* begin file simdjson/generic/ondemand/std_deserialize.h for arm64 */
+/* including simdjson/generic/ondemand/std_deserialize.h for fallback: #include "simdjson/generic/ondemand/std_deserialize.h" */
+/* begin file simdjson/generic/ondemand/std_deserialize.h for fallback */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -40110,8 +79221,8 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified type inside the container must default constructible.");
-  arm64::ondemand::array arr;
-  if constexpr (std::is_same_v, arm64::ondemand::array>) {
+  fallback::ondemand::array arr;
+  if constexpr (std::is_same_v, fallback::ondemand::array>) {
     arr = val;
   } else {
     SIMDJSON_TRY(val.get_array().get(arr));
@@ -40155,7 +79266,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified value type inside the container must default constructible.");
- arm64::ondemand::object obj;
+ fallback::ondemand::object obj;
  SIMDJSON_TRY(val.get_object().get(obj));
  for (auto field : obj) {
     std::string_view key;
@@ -40173,7 +79284,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
 }
 
 template 
-error_code tag_invoke(deserialize_tag, arm64::ondemand::object &obj, T &out) noexcept {
+error_code tag_invoke(deserialize_tag, fallback::ondemand::object &obj, T &out) noexcept {
   using value_type = typename std::remove_cvref_t::mapped_type;
 
   out.clear();
@@ -40181,7 +79292,7 @@ error_code tag_invoke(deserialize_tag, arm64::ondemand::object &obj, T &out) noe
     std::string_view key;
     SIMDJSON_TRY(field.unescaped_key().get(key));
 
-    arm64::ondemand::value value_obj;
+    fallback::ondemand::value value_obj;
     SIMDJSON_TRY(field.value().get(value_obj));
 
     value_type this_value;
@@ -40192,22 +79303,22 @@ error_code tag_invoke(deserialize_tag, arm64::ondemand::object &obj, T &out) noe
 }
 
 template 
-error_code tag_invoke(deserialize_tag, arm64::ondemand::value &val, T &out) noexcept {
-  arm64::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, fallback::ondemand::value &val, T &out) noexcept {
+  fallback::ondemand::object obj;
   SIMDJSON_TRY(val.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, arm64::ondemand::document &doc, T &out) noexcept {
-  arm64::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, fallback::ondemand::document &doc, T &out) noexcept {
+  fallback::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, arm64::ondemand::document_reference &doc, T &out) noexcept {
-  arm64::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, fallback::ondemand::document_reference &doc, T &out) noexcept {
+  fallback::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
@@ -40284,8 +79395,8 @@ constexpr bool user_defined_type = (std::is_class_v
 template 
   requires(user_defined_type && std::is_class_v)
 error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept {
-  arm64::ondemand::object obj;
-  if constexpr (std::is_same_v, arm64::ondemand::object>) {
+  fallback::ondemand::object obj;
+  if constexpr (std::is_same_v, fallback::ondemand::object>) {
     obj = val;
   } else {
     SIMDJSON_TRY(val.get_object().get(obj));
@@ -40594,11 +79705,11 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
-/* end file simdjson/generic/ondemand/std_deserialize.h for arm64 */
+/* end file simdjson/generic/ondemand/std_deserialize.h for fallback */
 
 // Inline definitions
-/* including simdjson/generic/ondemand/array-inl.h for arm64: #include "simdjson/generic/ondemand/array-inl.h" */
-/* begin file simdjson/generic/ondemand/array-inl.h for arm64 */
+/* including simdjson/generic/ondemand/array-inl.h for fallback: #include "simdjson/generic/ondemand/array-inl.h" */
+/* begin file simdjson/generic/ondemand/array-inl.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -40613,7 +79724,7 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 //
@@ -40842,68 +79953,68 @@ simdjson_inline simdjson_result array::at(size_t index) noexcept {
 }
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  arm64::ondemand::array &&value
+simdjson_inline simdjson_result::simdjson_result(
+  fallback::ondemand::array &&value
 ) noexcept
-  : implementation_simdjson_result_base(
-      std::forward(value)
+  : implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept
-  : implementation_simdjson_result_base(error)
+  : implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
-simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
-simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
-/* end file simdjson/generic/ondemand/array-inl.h for arm64 */
-/* including simdjson/generic/ondemand/array_iterator-inl.h for arm64: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/array_iterator-inl.h for arm64 */
+/* end file simdjson/generic/ondemand/array-inl.h for fallback */
+/* including simdjson/generic/ondemand/array_iterator-inl.h for fallback: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/array_iterator-inl.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -40915,7 +80026,7 @@ simdjson_inline  simdjson_result simdjson_result array_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   SIMDJSON_ASSUME(!has_been_referenced);
+   has_been_referenced = true;
+#endif
   if (iter.error()) { iter.abandon(); return iter.error(); }
   return value(iter.child());
 }
@@ -40933,6 +80048,9 @@ simdjson_inline bool array_iterator::operator!=(const array_iterator &) const no
   return iter.is_open();
 }
 simdjson_inline array_iterator &array_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   has_been_referenced = false;
+#endif
   error_code error;
   // PERF NOTE this is a safety rail ... users should exit loops as soon as they receive an error, so we'll never get here.
   // However, it does not seem to make a perf difference, so we add it out of an abundance of caution.
@@ -40946,50 +80064,50 @@ simdjson_inline bool array_iterator::at_end() const noexcept {
   return iter.at_end();
 }
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  arm64::ondemand::array_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  fallback::ondemand::array_iterator &&value
 ) noexcept
-  : arm64::implementation_simdjson_result_base(std::forward(value))
+  : fallback::implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : arm64::implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : fallback::implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++(first);
   return *this;
 }
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   return !first.iter.is_valid() || first.at_end();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/array_iterator-inl.h for arm64 */
-/* including simdjson/generic/ondemand/value-inl.h for arm64: #include "simdjson/generic/ondemand/value-inl.h" */
-/* begin file simdjson/generic/ondemand/value-inl.h for arm64 */
+/* end file simdjson/generic/ondemand/array_iterator-inl.h for fallback */
+/* including simdjson/generic/ondemand/value-inl.h for fallback: #include "simdjson/generic/ondemand/value-inl.h" */
+/* begin file simdjson/generic/ondemand/value-inl.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -41005,7 +80123,7 @@ simdjson_inline bool simdjson_result::at_end()
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 simdjson_inline value::value(const value_iterator &_iter) noexcept
@@ -41302,240 +80420,240 @@ inline simdjson_result> value::at_path_with_wildcard(std::str
 }
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  arm64::ondemand::value &&value
+simdjson_inline simdjson_result::simdjson_result(
+  fallback::ondemand::value &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   if (error()) { return error(); }
   return {};
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
 
-simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
-template<> simdjson_inline error_code simdjson_result::get(arm64::ondemand::value &out) noexcept {
+template<> simdjson_inline error_code simdjson_result::get(fallback::ondemand::value &out) noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 
-template simdjson_inline simdjson_result simdjson_result::get() noexcept {
+template simdjson_inline simdjson_result simdjson_result::get() noexcept {
   if (error()) { return error(); }
   return first.get();
 }
-template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
+template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
+template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
   if (error()) { return error(); }
   return std::move(first);
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator arm64::ondemand::array() noexcept(false) {
+simdjson_inline simdjson_result::operator fallback::ondemand::array() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator arm64::ondemand::object() noexcept(false) {
+simdjson_inline simdjson_result::operator fallback::ondemand::object() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator arm64::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator fallback::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
+simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(
+simdjson_inline simdjson_result simdjson_result::at_pointer(
     std::string_view json_pointer) noexcept {
   if (error()) {
       return error();
@@ -41543,7 +80661,7 @@ simdjson_inline simdjson_result simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -41551,7 +80669,7 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(
+inline simdjson_result> simdjson_result::at_path_with_wildcard(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -41562,9 +80680,9 @@ inline simdjson_result> simdjson_result> simdjson_result::simdjson_result(
-  arm64::ondemand::document &&value
+simdjson_inline simdjson_result::simdjson_result(
+  fallback::ondemand::document &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(
+    implementation_simdjson_result_base(
       error
     )
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
-template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
+template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first);
+  return std::forward(first);
 }
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(arm64::ondemand::document &out) & noexcept = delete;
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(arm64::ondemand::document &out) && noexcept {
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(fallback::ondemand::document &out) & noexcept = delete;
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(fallback::ondemand::document &out) && noexcept {
   if (error()) { return error(); }
-  out = std::forward(first);
+  out = std::forward(first);
   return SUCCESS;
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 
-simdjson_inline bool simdjson_result::is_negative() noexcept {
+simdjson_inline bool simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 
 
 #if SIMDJSON_EXCEPTIONS
-template ::value == false>::type>
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+template ::value == false>::type>
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator arm64::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator fallback::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator arm64::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator fallback::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator arm64::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator fallback::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator arm64::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator fallback::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   if (error()) { return error(); }
   return first.at_end();
 }
 
 
-simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
+simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
 
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
@@ -42262,7 +81380,7 @@ simdjson_inline simdjson_result> simdjson_re
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -42272,7 +81390,7 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result::simdjson_result(arm64::ondemand::document_reference value, error_code error)
-  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
+simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::document_reference value, error_code error)
+  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
 
 
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(arm64::ondemand::document_reference &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(fallback::ondemand::document_reference &out) & noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(arm64::ondemand::document_reference &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(fallback::ondemand::document_reference &out) && noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+simdjson_inline simdjson_result::operator T() noexcept(false) {
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator arm64::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator fallback::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator arm64::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator fallback::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator arm64::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator fallback::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator arm64::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator fallback::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
@@ -42619,7 +81737,7 @@ simdjson_inline simdjson_result> simdjson_re
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -42627,9 +81745,9 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -43051,22 +82169,22 @@ inline void document_stream::start_stage1_thread() noexcept {
 #endif // SIMDJSON_THREADS_ENABLED
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
-  arm64::ondemand::document_stream &&value
+simdjson_inline simdjson_result::simdjson_result(
+  fallback::ondemand::document_stream &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
@@ -43074,9 +82192,9 @@ simdjson_inline simdjson_result::simdjson_resu
 }
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H
-/* end file simdjson/generic/ondemand/document_stream-inl.h for arm64 */
-/* including simdjson/generic/ondemand/field-inl.h for arm64: #include "simdjson/generic/ondemand/field-inl.h" */
-/* begin file simdjson/generic/ondemand/field-inl.h for arm64 */
+/* end file simdjson/generic/ondemand/document_stream-inl.h for fallback */
+/* including simdjson/generic/ondemand/field-inl.h for fallback: #include "simdjson/generic/ondemand/field-inl.h" */
+/* begin file simdjson/generic/ondemand/field-inl.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -43088,7 +82206,7 @@ simdjson_inline simdjson_result::simdjson_resu
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 // clang 6 does not think the default constructor can be noexcept, so we make it explicit
@@ -43152,53 +82270,53 @@ simdjson_inline value field::value() && noexcept {
 }
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  arm64::ondemand::field &&value
+simdjson_inline simdjson_result::simdjson_result(
+  fallback::ondemand::field &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::key() noexcept {
+simdjson_inline simdjson_result simdjson_result::key() noexcept {
   if (error()) { return error(); }
   return first.key();
 }
 
-simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.key_raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
+simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
   if (error()) { return error(); }
   return first.escaped_key();
 }
 
-simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(allow_replacement);
 }
 
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(receiver, allow_replacement);
 }
 
-simdjson_inline simdjson_result simdjson_result::value() noexcept {
+simdjson_inline simdjson_result simdjson_result::value() noexcept {
   if (error()) { return error(); }
   return std::move(first.value());
 }
@@ -43206,9 +82324,9 @@ simdjson_inline simdjson_result simdjson_result simdjson_result= &parser->implementation->structural_indexes[0] );
   SIMDJSON_ASSUME( position < &parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] );
-#else
-  (void)position; // Suppress unused parameter warning
 #endif
 }
 
@@ -43569,7 +82686,11 @@ simdjson_inline token_position json_iterator::position() const noexcept {
 simdjson_inline simdjson_result json_iterator::unescape(raw_json_string in, bool allow_replacement) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape(in, _string_buf_loc, allow_replacement);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape(in, _string_buf_loc, allow_replacement);
@@ -43579,7 +82700,11 @@ simdjson_inline simdjson_result json_iterator::unescape(raw_js
 simdjson_inline simdjson_result json_iterator::unescape_wobbly(raw_json_string in) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape_wobbly(in, _string_buf_loc);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape_wobbly(in, _string_buf_loc);
@@ -43642,22 +82767,22 @@ simdjson_warn_unused simdjson_inline bool json_iterator::copy_to_buffer(const ui
 }
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::json_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::json_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/json_iterator-inl.h for arm64 */
-/* including simdjson/generic/ondemand/json_type-inl.h for arm64: #include "simdjson/generic/ondemand/json_type-inl.h" */
-/* begin file simdjson/generic/ondemand/json_type-inl.h for arm64 */
+/* end file simdjson/generic/ondemand/json_iterator-inl.h for fallback */
+/* including simdjson/generic/ondemand/json_type-inl.h for fallback: #include "simdjson/generic/ondemand/json_type-inl.h" */
+/* begin file simdjson/generic/ondemand/json_type-inl.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -43668,7 +82793,7 @@ simdjson_inline simdjson_result::simdjson_result
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept {
@@ -43762,22 +82887,22 @@ simdjson_inline void number::skip_double() noexcept {
 }
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::json_type &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::json_type &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
-/* end file simdjson/generic/ondemand/json_type-inl.h for arm64 */
-/* including simdjson/generic/ondemand/logger-inl.h for arm64: #include "simdjson/generic/ondemand/logger-inl.h" */
-/* begin file simdjson/generic/ondemand/logger-inl.h for arm64 */
+/* end file simdjson/generic/ondemand/json_type-inl.h for fallback */
+/* including simdjson/generic/ondemand/logger-inl.h for fallback: #include "simdjson/generic/ondemand/logger-inl.h" */
+/* begin file simdjson/generic/ondemand/logger-inl.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -43792,7 +82917,7 @@ simdjson_inline simdjson_result::simdjson_result(err
 #include 
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 namespace logger {
 
@@ -43999,13 +83124,13 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 
 } // namespace logger
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
-/* end file simdjson/generic/ondemand/logger-inl.h for arm64 */
-/* including simdjson/generic/ondemand/object-inl.h for arm64: #include "simdjson/generic/ondemand/object-inl.h" */
-/* begin file simdjson/generic/ondemand/object-inl.h for arm64 */
+/* end file simdjson/generic/ondemand/logger-inl.h for fallback */
+/* including simdjson/generic/ondemand/object-inl.h for fallback: #include "simdjson/generic/ondemand/object-inl.h" */
+/* begin file simdjson/generic/ondemand/object-inl.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -44025,7 +83150,7 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 simdjson_inline simdjson_result object::find_field_unordered(const std::string_view key) & noexcept {
@@ -44299,55 +83424,55 @@ simdjson_warn_unused simdjson_inline error_code object::extract_into(T& out) & n
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::object &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::object &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field_unordered(key);
+  return std::forward(first).find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first)[key];
+  return std::forward(first)[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field(key);
+  return std::forward(first).find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
     std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -44355,27 +83480,27 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
 
-inline simdjson_result simdjson_result::reset() noexcept {
+inline simdjson_result simdjson_result::reset() noexcept {
   if (error()) { return error(); }
   return first.reset();
 }
 
-inline simdjson_result simdjson_result::is_empty() noexcept {
+inline simdjson_result simdjson_result::is_empty() noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
 
-simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
 
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
@@ -44383,9 +83508,9 @@ simdjson_inline  simdjson_result simdjson_result simdjson_result object_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  // We must call * once per iteration.
+  SIMDJSON_ASSUME(!has_been_referenced);
+  has_been_referenced = true;
+#endif
   error_code error = iter.error();
   if (error) { iter.abandon(); return error; }
   auto result = field::start(iter);
@@ -44427,6 +83557,11 @@ simdjson_inline bool object_iterator::operator!=(const object_iterator &) const
 SIMDJSON_PUSH_DISABLE_WARNINGS
 SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
 simdjson_inline object_iterator &object_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   // Before calling ++, we must have called *.
+   SIMDJSON_ASSUME(has_been_referenced);
+   has_been_referenced = false;
+#endif
   // TODO this is a safety rail ... users should exit loops as soon as they receive an error.
   // Nonetheless, let's see if performance is OK with this if statement--the compiler may give it to us for free.
   if (!iter.is_open()) { return *this; } // Iterator will be released if there is an error
@@ -44482,39 +83617,39 @@ SIMDJSON_POP_DISABLE_WARNINGS
 //
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  arm64::ondemand::object_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  fallback::ondemand::object_iterator &&value
 ) noexcept
-  : implementation_simdjson_result_base(std::forward(value))
+  : implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
 // Checks for ']' and ','
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++first;
@@ -44524,9 +83659,9 @@ simdjson_inline simdjson_result &simdjson_resu
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/object_iterator-inl.h for arm64 */
-/* including simdjson/generic/ondemand/parser-inl.h for arm64: #include "simdjson/generic/ondemand/parser-inl.h" */
-/* begin file simdjson/generic/ondemand/parser-inl.h for arm64 */
+/* end file simdjson/generic/ondemand/object_iterator-inl.h for fallback */
+/* including simdjson/generic/ondemand/parser-inl.h for fallback: #include "simdjson/generic/ondemand/parser-inl.h" */
+/* begin file simdjson/generic/ondemand/parser-inl.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -44543,7 +83678,7 @@ simdjson_inline simdjson_result &simdjson_resu
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 simdjson_inline parser::parser(size_t max_capacity) noexcept
@@ -44753,22 +83888,22 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser::
 
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::parser &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::parser &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
-/* end file simdjson/generic/ondemand/parser-inl.h for arm64 */
-/* including simdjson/generic/ondemand/raw_json_string-inl.h for arm64: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for arm64 */
+/* end file simdjson/generic/ondemand/parser-inl.h for fallback */
+/* including simdjson/generic/ondemand/raw_json_string-inl.h for fallback: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -44781,7 +83916,7 @@ simdjson_inline simdjson_result::simdjson_result(error_
 
 namespace simdjson {
 
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 simdjson_inline raw_json_string::raw_json_string(const uint8_t * _buf) noexcept : buf{_buf} {}
@@ -44899,333 +84034,94 @@ simdjson_inline bool raw_json_string::is_equal(const char* target) const noexcep
   for(;target[pos];pos++) {
     if(r[pos] != target[pos]) { return false; }
     // if target is a compile-time constant and it is free from
-    // quotes, then the next part could get optimized away through
-    // inlining.
-    if((target[pos] == '"') && !escaping) {
-      // We have reached the end of the raw_json_string but
-      // the target is not done.
-      return false;
-    } else if(target[pos] == '\\') {
-      escaping = !escaping;
-    } else {
-      escaping = false;
-    }
-  }
-  if(r[pos] != '"') { return false; }
-  return true;
-}
-
-simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept {
-  return a.unsafe_is_equal(c);
-}
-
-simdjson_unused simdjson_inline bool operator==(std::string_view c, const raw_json_string &a) noexcept {
-  return a == c;
-}
-
-simdjson_unused simdjson_inline bool operator!=(const raw_json_string &a, std::string_view c) noexcept {
-  return !(a == c);
-}
-
-simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_json_string &a) noexcept {
-  return !(a == c);
-}
-
-
-simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape(json_iterator &iter, bool allow_replacement) const noexcept {
-  return iter.unescape(*this, allow_replacement);
-}
-
-simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape_wobbly(json_iterator &iter) const noexcept {
-  return iter.unescape_wobbly(*this);
-}
-
-simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, const raw_json_string &str) noexcept {
-  bool in_escape = false;
-  const char *s = str.raw();
-  while (true) {
-    switch (*s) {
-      case '\\': in_escape = !in_escape; break;
-      case '"': if (in_escape) { in_escape = false; } else { return out; } break;
-      default: if (in_escape) { in_escape = false; }
-    }
-    out << *s;
-    s++;
-  }
-}
-
-} // namespace ondemand
-} // namespace arm64
-} // namespace simdjson
-
-namespace simdjson {
-
-simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::raw_json_string &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
-
-simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
-  if (error()) { return error(); }
-  return first.raw();
-}
-simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
-  if (error()) { return error(); }
-  return first[i];
-}
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(arm64::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
-  if (error()) { return error(); }
-  return first.unescape(iter, allow_replacement);
-}
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(arm64::ondemand::json_iterator &iter) const noexcept {
-  if (error()) { return error(); }
-  return first.unescape_wobbly(iter);
-}
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
-/* end file simdjson/generic/ondemand/raw_json_string-inl.h for arm64 */
-/* including simdjson/generic/ondemand/serialization-inl.h for arm64: #include "simdjson/generic/ondemand/serialization-inl.h" */
-/* begin file simdjson/generic/ondemand/serialization-inl.h for arm64 */
-#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
-/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_builder.h" */
-/* amalgamation skipped (editor-only): #endif */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-inline std::string_view trim(const std::string_view str) noexcept {
-  // We can almost surely do better by rolling our own find_first_not_of function.
-  size_t first = str.find_first_not_of(" \t\n\r");
-  // If we have the empty string (just white space), then no trimming is possible, and
-  // we return the empty string_view.
-  if (std::string_view::npos == first) { return std::string_view(); }
-  size_t last = str.find_last_not_of(" \t\n\r");
-  return str.substr(first, (last - first + 1));
-}
-
-
-inline simdjson_result to_json_string(arm64::ondemand::document& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(arm64::ondemand::document_reference& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(arm64::ondemand::value& x) noexcept {
-  /**
-   * If we somehow receive a value that has already been consumed,
-   * then the following code could be in trouble. E.g., we create
-   * an array as needed, but if an array was already created, then
-   * it could be bad.
-   */
-  using namespace arm64::ondemand;
-  arm64::ondemand::json_type t;
-  auto error = x.type().get(t);
-  if(error != SUCCESS) { return error; }
-  switch (t)
-  {
-    case json_type::array:
-    {
-      arm64::ondemand::array array;
-      error = x.get_array().get(array);
-      if(error) { return error; }
-      return to_json_string(array);
-    }
-    case json_type::object:
-    {
-      arm64::ondemand::object object;
-      error = x.get_object().get(object);
-      if(error) { return error; }
-      return to_json_string(object);
+    // quotes, then the next part could get optimized away through
+    // inlining.
+    if((target[pos] == '"') && !escaping) {
+      // We have reached the end of the raw_json_string but
+      // the target is not done.
+      return false;
+    } else if(target[pos] == '\\') {
+      escaping = !escaping;
+    } else {
+      escaping = false;
     }
-    default:
-      return trim(x.raw_json_token());
   }
+  if(r[pos] != '"') { return false; }
+  return true;
 }
 
-inline simdjson_result to_json_string(arm64::ondemand::object& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
+simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept {
+  return a.unsafe_is_equal(c);
 }
 
-inline simdjson_result to_json_string(arm64::ondemand::array& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
+simdjson_unused simdjson_inline bool operator==(std::string_view c, const raw_json_string &a) noexcept {
+  return a == c;
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_unused simdjson_inline bool operator!=(const raw_json_string &a, std::string_view c) noexcept {
+  return !(a == c);
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_json_string &a) noexcept {
+  return !(a == c);
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape(json_iterator &iter, bool allow_replacement) const noexcept {
+  return iter.unescape(*this, allow_replacement);
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape_wobbly(json_iterator &iter) const noexcept {
+  return iter.unescape_wobbly(*this);
 }
-} // namespace simdjson
-
-namespace simdjson { namespace arm64 { namespace ondemand {
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
+simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, const raw_json_string &str) noexcept {
+  bool in_escape = false;
+  const char *s = str.raw();
+  while (true) {
+    switch (*s) {
+      case '\\': in_escape = !in_escape; break;
+      case '"': if (in_escape) { in_escape = false; } else { return out; } break;
+      default: if (in_escape) { in_escape = false; }
+    }
+    out << *s;
+    s++;
   }
 }
-#endif
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
+} // namespace ondemand
+} // namespace fallback
+} // namespace simdjson
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::document_reference& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
+namespace simdjson {
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
+simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::raw_json_string &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
+  if (error()) { return error(); }
+  return first.raw();
 }
-inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
-  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
+simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
+  if (error()) { return error(); }
+  return first[i];
 }
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(fallback::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
+  if (error()) { return error(); }
+  return first.unescape(iter, allow_replacement);
 }
-#endif
-}}} // namespace simdjson::arm64::ondemand
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(fallback::ondemand::json_iterator &iter) const noexcept {
+  if (error()) { return error(); }
+  return first.unescape_wobbly(iter);
+}
+} // namespace simdjson
 
-#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-/* end file simdjson/generic/ondemand/serialization-inl.h for arm64 */
-/* including simdjson/generic/ondemand/token_iterator-inl.h for arm64: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/token_iterator-inl.h for arm64 */
+#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
+/* end file simdjson/generic/ondemand/raw_json_string-inl.h for fallback */
+/* including simdjson/generic/ondemand/token_iterator-inl.h for fallback: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/token_iterator-inl.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -45236,7 +84132,7 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::arm64::ondemand::ob
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 simdjson_inline token_iterator::token_iterator(
@@ -45307,22 +84203,22 @@ simdjson_inline bool token_iterator::operator<=(const token_iterator &other) con
 }
 
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::token_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::token_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/token_iterator-inl.h for arm64 */
-/* including simdjson/generic/ondemand/value_iterator-inl.h for arm64: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/value_iterator-inl.h for arm64 */
+/* end file simdjson/generic/ondemand/token_iterator-inl.h for fallback */
+/* including simdjson/generic/ondemand/value_iterator-inl.h for fallback: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/value_iterator-inl.h for fallback */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -45337,7 +84233,7 @@ simdjson_inline simdjson_result::simdjson_resul
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 
 simdjson_inline value_iterator::value_iterator(
@@ -45419,7 +84315,6 @@ simdjson_warn_unused simdjson_inline error_code value_iterator::end_container()
 
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::has_next_field() noexcept {
   assert_at_next();
-
   // It's illegal to call this unless there are more tokens: anything that ends in } or ] is
   // obligated to verify there are more tokens if they are not the top level.
   switch (*_json_iter->return_current_and_advance()) {
@@ -45841,9 +84736,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_string(string_type& receiver, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_string(allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_wobbly_string() noexcept {
@@ -45931,7 +84830,7 @@ simdjson_inline simdjson_result value_iterator::is_root_integer(bool check
   return answer;
 }
 
-simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
+simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
   auto max_len = peek_root_length();
   auto json = peek_root_scalar("number");
   // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
@@ -45983,9 +84882,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_root_string(check_trailing, allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_wobbly_string(bool check_trailing) noexcept {
@@ -46056,1467 +84959,617 @@ simdjson_warn_unused simdjson_inline simdjson_result value_iterator::ge
     logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
     return NUMBER_ERROR;
   }
-
-  auto result = numberparsing::parse_integer_in_string(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("int64");
-  }
-  return result;
-}
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("double");
-  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
-  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
-  // number: -0.e-308.
-  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
-  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
-    return NUMBER_ERROR;
-  }
-  auto result = numberparsing::parse_double(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("double");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double_in_string(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("double");
-  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
-  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
-  // number: -0.e-308.
-  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
-  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
-    return NUMBER_ERROR;
-  }
-  auto result = numberparsing::parse_double_in_string(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("double");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_bool(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("bool");
-  // We have a boolean if we have either "true" or "false" and the next character is either
-  // a structural character or whitespace. We also check that the length is correct:
-  // "true" and "false" are 4 and 5 characters long, respectively.
-  bool value_true = (max_len >= 4 && !atomparsing::str4ncmp(json, "true") &&
-  (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
-  bool value_false = (max_len >= 5 && !atomparsing::str4ncmp(json, "false") &&
-  (max_len == 5 || jsoncharutils::is_structural_or_whitespace(json[5])));
-  if(value_true == false && value_false == false) { return incorrect_type_error("Not a boolean"); }
-  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-  advance_root_scalar("bool");
-  return value_true;
-}
-
-simdjson_inline simdjson_result value_iterator::is_root_null(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("null");
-  bool result = (max_len >= 4 && !atomparsing::str4ncmp(json, "null") &&
-         (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
-  if(result) { // we have something that looks like a null.
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("null");
-  } else if (json[0] == 'n') {
-    return incorrect_type_error("Not a null but starts with n");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
-
-  return _json_iter->skip_child(depth());
-}
-
-simdjson_inline value_iterator value_iterator::child() const noexcept {
-  assert_at_child();
-  return { _json_iter, depth()+1, _json_iter->token.position() };
-}
-
-// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
-// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
-// marked non-inline.
-SIMDJSON_PUSH_DISABLE_WARNINGS
-SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
-simdjson_inline bool value_iterator::is_open() const noexcept {
-  return _json_iter->depth() >= depth();
-}
-SIMDJSON_POP_DISABLE_WARNINGS
-
-simdjson_inline bool value_iterator::at_end() const noexcept {
-  return _json_iter->at_end();
-}
-
-simdjson_inline bool value_iterator::at_start() const noexcept {
-  return _json_iter->token.position() == start_position();
-}
-
-simdjson_inline bool value_iterator::at_first_field() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  return _json_iter->token.position() == start_position() + 1;
-}
-
-simdjson_inline void value_iterator::abandon() noexcept {
-  _json_iter->abandon();
-}
-
-simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
-  return _depth;
-}
-simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
-  return _json_iter->error;
-}
-simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
-  return _json_iter->string_buf_loc();
-}
-simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
-  return *_json_iter;
-}
-simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
-  return *_json_iter;
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
-  return _json_iter->peek(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
-  return _json_iter->peek_length(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
-  return _json_iter->peek_root_length(start_position());
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return peek_start(); }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return; }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
-  logger::log_start_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  const uint8_t *json;
-  if (!is_at_start()) {
-#if SIMDJSON_DEVELOPMENT_CHECKS
-    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
-#endif
-    json = peek_start();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-  } else {
-    assert_at_start();
-    /**
-     * We should be prudent. Let us peek. If it is not the right type, we
-     * return an error. Only once we have determined that we have the right
-     * type are we allowed to advance!
-     */
-    json = _json_iter->peek();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-    _json_iter->return_current_and_advance();
-  }
-
-
-  return SUCCESS;
-}
-
-
-simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_root();
-  return _json_iter->peek();
-}
-simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_non_root_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_root();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_non_root_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
-  logger::log_error(*_json_iter, start_position(), depth(), message);
-  return INCORRECT_TYPE;
-}
-
-simdjson_inline bool value_iterator::is_at_start() const noexcept {
-  return position() == start_position();
-}
-
-simdjson_inline bool value_iterator::is_at_key() const noexcept {
-  // Keys are at the same depth as the object.
-  // Note here that we could be safer and check that we are within an object,
-  // but we do not.
-  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
-}
-
-simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
-  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
-  auto delta = position() - start_position();
-  return delta == 1 || delta == 2;
-}
-
-inline void value_iterator::assert_at_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_container_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_next() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-simdjson_inline void value_iterator::move_at_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position);
-}
-
-simdjson_inline void value_iterator::move_at_container_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position + 1);
-}
-
-simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_array();
-}
-
-simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_object();
-}
-
-inline void value_iterator::assert_at_child() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_root() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth == 1 );
-}
-
-inline void value_iterator::assert_at_non_root_start() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth > 1 );
-}
-
-inline void value_iterator::assert_is_valid() const noexcept {
-  SIMDJSON_ASSUME( _json_iter != nullptr );
-}
-
-simdjson_inline bool value_iterator::is_valid() const noexcept {
-  return _json_iter != nullptr;
-}
-
-simdjson_inline simdjson_result value_iterator::type() const noexcept {
-  switch (*peek_start()) {
-    case '{':
-      return json_type::object;
-    case '[':
-      return json_type::array;
-    case '"':
-      return json_type::string;
-    case 'n':
-      return json_type::null;
-    case 't': case 'f':
-      return json_type::boolean;
-    case '-':
-    case '0': case '1': case '2': case '3': case '4':
-    case '5': case '6': case '7': case '8': case '9':
-      return json_type::number;
-    default:
-      return json_type::unknown;
-  }
-}
-
-simdjson_inline token_position value_iterator::start_position() const noexcept {
-  return _start_position;
-}
-
-simdjson_inline token_position value_iterator::position() const noexcept {
-  return _json_iter->position();
-}
-
-simdjson_inline token_position value_iterator::end_position() const noexcept {
-  return _json_iter->end_position();
-}
-
-simdjson_inline token_position value_iterator::last_position() const noexcept {
-  return _json_iter->last_position();
-}
-
-simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
-  return _json_iter->report_error(error, message);
-}
-
-} // namespace ondemand
-} // namespace arm64
-} // namespace simdjson
-
-namespace simdjson {
-
-simdjson_inline simdjson_result::simdjson_result(arm64::ondemand::value_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/value_iterator-inl.h for arm64 */
-
-// JSON builder inline definitions
-/* including simdjson/generic/ondemand/json_string_builder-inl.h for arm64: #include "simdjson/generic/ondemand/json_string_builder-inl.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder-inl.h for arm64 */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand
- * directory but we will move it to a builder directory later.
- */
-#include 
-#include 
-#include 
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-/*
- * Empirically, we have found that an inlined optimization is important for
- * performance. The following macros are not ideal. We should find a better
- * way to inline the code.
- */
-
-#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
-    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
-     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
-#endif
-#endif
-
-#if defined(__aarch64__) || defined(_M_ARM64)
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
-#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
-#endif
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-#include 
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#include 
-#endif
-
-namespace simdjson {
-namespace arm64 {
-namespace builder {
-
-static SIMDJSON_CONSTEXPR_LAMBDA std::array
-    json_quotable_character = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-/**
-
-A possible SWAR implementation of has_json_escapable_byte. It is not used
-because it is slower than the current implementation. It is kept here for
-reference (to show that we tried it).
-
-inline bool has_json_escapable_byte(uint64_t x) {
-  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
-  uint64_t xor2 = x ^ 0x0202020202020202ULL;
-  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
-  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
-  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
-  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
-}
-
-**/
-
-SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
-simple_needs_escaping(std::string_view v) {
-  for (char c : v) {
-    // a table lookup is faster than a series of comparisons
-    if (json_quotable_character[static_cast(c)]) {
-      return true;
-    }
-  }
-  return false;
-}
-
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  uint8x16_t running = vdupq_n_u8(0);
-  uint8x16_t v34 = vdupq_n_u8(34);
-  uint8x16_t v92 = vdupq_n_u8(92);
-
-  for (; i + 15 < view.size(); i += 16) {
-    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  if (i < view.size()) {
-    uint8x16_t word =
-        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
-}
-#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  __m128i running = _mm_setzero_si128();
-  for (; i + 15 < view.size(); i += 16) {
-
-    __m128i word =
-        _mm_loadu_si128(reinterpret_cast(view.data() + i));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  if (i < view.size()) {
-    __m128i word = _mm_loadu_si128(
-        reinterpret_cast(view.data() + view.length() - 16));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  return _mm_movemask_epi8(running) != 0;
-}
-#else
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  return simple_needs_escaping(view);
-}
-#endif
-
-SIMDJSON_CONSTEXPR_LAMBDA inline size_t
-find_next_json_quotable_character(const std::string_view view,
-                                  size_t location) noexcept {
-
-  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
-    if (json_quotable_character[static_cast(*pos)]) {
-      return pos - view.begin();
-    }
-  }
-  return size_t(view.size());
-}
-
-SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
-    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
-    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
-    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
-    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
-    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
-
-// All Unicode characters may be placed within the quotation marks, except for
-// the characters that MUST be escaped: quotation mark, reverse solidus, and the
-// control characters (U+0000 through U+001F). There are two-character sequence
-// escape representations of some popular characters:
-// \", \\, \b, \f, \n, \r, \t.
-SIMDJSON_CONSTEXPR_LAMBDA void escape_json_char(char c, char *&out) {
-  if (c == '"') {
-    memcpy(out, "\\\"", 2);
-    out += 2;
-  } else if (c == '\\') {
-    memcpy(out, "\\\\", 2);
-    out += 2;
-  } else {
-    std::string_view v = control_chars[uint8_t(c)];
-    memcpy(out, v.data(), v.size());
-    out += v.size();
-  }
-}
-
-inline size_t write_string_escaped(const std::string_view input, char *out) {
-  size_t mysize = input.size();
-  if (!fast_needs_escaping(input)) { // fast path!
-    memcpy(out, input.data(), input.size());
-    return input.size();
-  }
-  const char *const initout = out;
-  size_t location = find_next_json_quotable_character(input, 0);
-  memcpy(out, input.data(), location);
-  out += location;
-  escape_json_char(input[location], out);
-  location += 1;
-  while (location < mysize) {
-    size_t newlocation = find_next_json_quotable_character(input, location);
-    memcpy(out, input.data() + location, newlocation - location);
-    out += newlocation - location;
-    location = newlocation;
-    if (location == mysize) {
-      break;
-    }
-    escape_json_char(input[location], out);
-    location += 1;
-  }
-  return out - initout;
-}
-
-simdjson_inline string_builder::string_builder(size_t initial_capacity)
-    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
-      capacity(buffer.get() != nullptr ? initial_capacity : 0),
-      is_valid(buffer.get() != nullptr) {}
-
-simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
-  // We use the convention that when is_valid is false, then the capacity and
-  // the position are 0.
-  // Most of the time, this function will return true.
-  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
-    return true;
-  }
-  // check for overflow, most of the time there is no overflow
-  if (simdjson_likely(position + upcoming_bytes < position)) {
-    return false;
-  }
-  // We will rarely get here.
-  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
-  // If the buffer allocation failed, we set is_valid to false.
-  return is_valid;
-}
-
-simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
-  if (!is_valid) {
-    return;
-  }
-  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
-  if (new_buffer.get() == nullptr) {
-    set_valid(false);
-    return;
-  }
-  std::memcpy(new_buffer.get(), buffer.get(), position);
-  buffer.swap(new_buffer);
-  capacity = desired_capacity;
-}
-
-simdjson_inline void string_builder::set_valid(bool valid) noexcept {
-  if (!valid) {
-    is_valid = false;
-    capacity = 0;
-    position = 0;
-    buffer.reset();
-  } else {
-    is_valid = true;
-  }
-}
-
-simdjson_inline size_t string_builder::size() const noexcept {
-  return position;
-}
-
-simdjson_inline void string_builder::append(char c) noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = c;
-  }
-}
-
-simdjson_inline void string_builder::append_null() noexcept {
-  constexpr char null_literal[] = "null";
-  constexpr size_t null_len = sizeof(null_literal) - 1;
-  if (capacity_check(null_len)) {
-    std::memcpy(buffer.get() + position, null_literal, null_len);
-    position += null_len;
-  }
-}
-
-simdjson_inline void string_builder::clear() noexcept {
-  position = 0;
-  // if it was invalid, we should try to repair it
-  if (!is_valid) {
-    capacity = 0;
-    buffer.reset();
-    is_valid = true;
-  }
-}
-
-namespace internal {
-
-template ::value>::type>
-simdjson_really_inline int int_log2(number_type x) {
-  return 63 - leading_zeroes(uint64_t(x) | 1);
-}
-
-simdjson_really_inline int fast_digit_count_32(uint32_t x) {
-  static uint64_t table[] = {
-      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
-      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
-      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
-      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
-      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
-      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
-      42949672960, 42949672960};
-  return uint32_t((x + table[int_log2(x)]) >> 32);
-}
-
-simdjson_really_inline int fast_digit_count_64(uint64_t x) {
-  static uint64_t table[] = {9,
-                             99,
-                             999,
-                             9999,
-                             99999,
-                             999999,
-                             9999999,
-                             99999999,
-                             999999999,
-                             9999999999,
-                             99999999999,
-                             999999999999,
-                             9999999999999,
-                             99999999999999,
-                             999999999999999ULL,
-                             9999999999999999ULL,
-                             99999999999999999ULL,
-                             999999999999999999ULL,
-                             9999999999999999999ULL};
-  int y = (19 * int_log2(x) >> 6);
-  y += x > table[y];
-  return y + 1;
-}
-
-template ::value>::type>
-simdjson_really_inline size_t digit_count(number_type v) noexcept {
-  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
-                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
-                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
-  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
-    return fast_digit_count_32(static_cast(v));
-  }
-  else {
-    return fast_digit_count_64(static_cast(v));
-  }
-}
-static const char decimal_table[200] = {
-    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
-    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
-    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
-    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
-    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
-    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
-    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
-    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
-    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
-    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
-    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
-    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
-    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
-    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
-    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
-    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
-    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
-};
-} // namespace internal
-
-template 
-simdjson_inline void string_builder::append(number_type v) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_integral::value ||
-                    std::is_floating_point::value,
-                "Unsupported number type");
-  // If C++17 is available, we can 'if constexpr' here.
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    if (v) {
-      constexpr char true_literal[] = "true";
-      constexpr size_t true_len = sizeof(true_literal) - 1;
-      if (capacity_check(true_len)) {
-        std::memcpy(buffer.get() + position, true_literal, true_len);
-        position += true_len;
-      }
-    } else {
-      constexpr char false_literal[] = "false";
-      constexpr size_t false_len = sizeof(false_literal) - 1;
-      if (capacity_check(false_len)) {
-        std::memcpy(buffer.get() + position, false_literal, false_len);
-        position += false_len;
-      }
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      unsigned_type pv = static_cast(v);
-      size_t dc = internal::digit_count(pv);
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      bool negative = v < 0;
-      unsigned_type pv = static_cast(v);
-      if (negative) {
-        pv = 0 - pv; // the 0 is for Microsoft
-      }
-      size_t dc = internal::digit_count(pv);
-      // by always writing the minus sign, we avoid the branch.
-      buffer.get()[position] = '-';
-      position += negative ? 1 : 0;
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
+
+  auto result = numberparsing::parse_integer_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("int64");
   }
-  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
-    constexpr size_t max_number_size = 24;
-    if (capacity_check(max_number_size)) {
-      // We could specialize for float.
-      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
-                                               double(v));
-      position = end - buffer.get();
-    }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_double(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
   }
+  return result;
 }
 
-simdjson_inline void
-string_builder::escape_and_append(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(6 * input.size())) {
-    position += write_string_escaped(input, buffer.get() + position);
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double_in_string(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
   }
+  auto result = numberparsing::parse_double_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
+  }
+  return result;
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * input.size())) {
-    buffer.get()[position++] = '"';
-    position += write_string_escaped(input, buffer.get() + position);
-    buffer.get()[position++] = '"';
-  }
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_bool(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("bool");
+  // We have a boolean if we have either "true" or "false" and the next character is either
+  // a structural character or whitespace. We also check that the length is correct:
+  // "true" and "false" are 4 and 5 characters long, respectively.
+  bool value_true = (max_len >= 4 && !atomparsing::str4ncmp(json, "true") &&
+  (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  bool value_false = (max_len >= 5 && !atomparsing::str4ncmp(json, "false") &&
+  (max_len == 5 || jsoncharutils::is_structural_or_whitespace(json[5])));
+  if(value_true == false && value_false == false) { return incorrect_type_error("Not a boolean"); }
+  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+  advance_root_scalar("bool");
+  return value_true;
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(char input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * 1)) {
-    buffer.get()[position++] = '"';
-    std::string_view cinput(&input, 1);
-    position += write_string_escaped(cinput, buffer.get() + position);
-    buffer.get()[position++] = '"';
+simdjson_inline simdjson_result value_iterator::is_root_null(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("null");
+  bool result = (max_len >= 4 && !atomparsing::str4ncmp(json, "null") &&
+         (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  if(result) { // we have something that looks like a null.
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("null");
+  } else if (json[0] == 'n') {
+    return incorrect_type_error("Not a null but starts with n");
   }
+  return result;
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(const char *input) noexcept {
-  std::string_view cinput(input);
-  escape_and_append_with_quotes(cinput);
+simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
+
+  return _json_iter->skip_child(depth());
 }
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
-  escape_and_append_with_quotes(constevalutil::string_constant::value);
+
+simdjson_inline value_iterator value_iterator::child() const noexcept {
+  assert_at_child();
+  return { _json_iter, depth()+1, _json_iter->token.position() };
 }
-#endif
 
-simdjson_inline void string_builder::append_raw(const char *c) noexcept {
-  size_t len = std::strlen(c);
-  append_raw(c, len);
+// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
+// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
+// marked non-inline.
+SIMDJSON_PUSH_DISABLE_WARNINGS
+SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
+simdjson_inline bool value_iterator::is_open() const noexcept {
+  return _json_iter->depth() >= depth();
 }
+SIMDJSON_POP_DISABLE_WARNINGS
 
-simdjson_inline void
-string_builder::append_raw(std::string_view input) noexcept {
-  if (capacity_check(input.size())) {
-    std::memcpy(buffer.get() + position, input.data(), input.size());
-    position += input.size();
-  }
+simdjson_inline bool value_iterator::at_end() const noexcept {
+  return _json_iter->at_end();
 }
 
-simdjson_inline void string_builder::append_raw(const char *str,
-                                                size_t len) noexcept {
-  if (capacity_check(len)) {
-    std::memcpy(buffer.get() + position, str, len);
-    position += len;
-  }
+simdjson_inline bool value_iterator::at_start() const noexcept {
+  return _json_iter->token.position() == start_position();
 }
-#if SIMDJSON_SUPPORTS_CONCEPTS
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-simdjson_inline void string_builder::append(const T &opt) {
-  if (opt) {
-    append(*opt);
-  } else {
-    append_null();
-  }
+
+simdjson_inline bool value_iterator::at_first_field() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  return _json_iter->token.position() == start_position() + 1;
 }
 
-template 
-  requires(require_custom_serialization)
-simdjson_inline void string_builder::append(T &&val) {
-  serialize(*this, std::forward(val));
+simdjson_inline void value_iterator::abandon() noexcept {
+  _json_iter->abandon();
 }
 
-template 
-  requires(std::is_convertible::value ||
-           std::is_same::value)
-simdjson_inline void string_builder::append(const T &value) {
-  escape_and_append_with_quotes(value);
+simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
+  return _depth;
+}
+simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
+  return _json_iter->error;
+}
+simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
+  return _json_iter->string_buf_loc();
+}
+simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
+  return *_json_iter;
+}
+simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
+  return *_json_iter;
 }
-#endif
 
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-// Support for range-based appending (std::ranges::view, etc.)
-template 
-  requires(!std::is_convertible::value && !require_custom_serialization)
-simdjson_inline void string_builder::append(const R &range) noexcept {
-  auto it = std::ranges::begin(range);
-  auto end = std::ranges::end(range);
-  if constexpr (concepts::is_pair>) {
-    start_object();
+simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
+  return _json_iter->peek(start_position());
+}
+simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
+  return _json_iter->peek_length(start_position());
+}
+simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
+  return _json_iter->peek_root_length(start_position());
+}
 
-    if (it == end) {
-      end_object();
-      return; // Handle empty range
-    }
-    // Append first item without leading comma
-    append_key_value(it->first, it->second);
-    ++it;
+simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return peek_start(); }
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append_key_value(it->first, it->second);
-    }
-    end_object();
-  } else {
-    start_array();
-    if (it == end) {
-      end_array();
-      return; // Handle empty range
-    }
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  return _json_iter->peek();
+}
 
-    // Append first item without leading comma
-    append(*it);
-    ++it;
+simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return; }
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append(*it);
-    }
-    end_array();
-  }
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
 
+simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
+  logger::log_start_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  const uint8_t *json;
+  if (!is_at_start()) {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
 #endif
+    json = peek_start();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+  } else {
+    assert_at_start();
+    /**
+     * We should be prudent. Let us peek. If it is not the right type, we
+     * return an error. Only once we have determined that we have the right
+     * type are we allowed to advance!
+     */
+    json = _json_iter->peek();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+    _json_iter->return_current_and_advance();
+  }
 
-#if SIMDJSON_EXCEPTIONS
-simdjson_inline string_builder::operator std::string() const noexcept(false) {
-  return std::string(operator std::string_view());
-}
 
-simdjson_inline string_builder::operator std::string_view() const
-    noexcept(false) simdjson_lifetime_bound {
-  return view();
+  return SUCCESS;
 }
-#endif
 
-simdjson_inline simdjson_result
-string_builder::view() const noexcept {
-  if (!is_valid) {
-    return simdjson::OUT_OF_CAPACITY;
-  }
-  return std::string_view(buffer.get(), position);
-}
 
-simdjson_inline simdjson_result string_builder::c_str() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position] = '\0';
-    return buffer.get();
-  }
-  return simdjson::OUT_OF_CAPACITY;
-}
+simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
 
-simdjson_inline bool string_builder::validate_unicode() const noexcept {
-  return simdjson::validate_utf8(buffer.get(), position);
+  assert_at_root();
+  return _json_iter->peek();
 }
+simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
 
-simdjson_inline void string_builder::start_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '{';
-  }
+  assert_at_non_root_start();
+  return _json_iter->peek();
 }
 
-simdjson_inline void string_builder::end_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '}';
-  }
-}
+simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
 
-simdjson_inline void string_builder::start_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '[';
-  }
+  assert_at_root();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
+simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
 
-simdjson_inline void string_builder::end_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ']';
-  }
+  assert_at_non_root_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
 
-simdjson_inline void string_builder::append_comma() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ',';
-  }
+simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
+  logger::log_error(*_json_iter, start_position(), depth(), message);
+  return INCORRECT_TYPE;
 }
 
-simdjson_inline void string_builder::append_colon() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ':';
-  }
+simdjson_inline bool value_iterator::is_at_start() const noexcept {
+  return position() == start_position();
 }
 
-template 
-simdjson_inline void
-string_builder::append_key_value(key_type key, value_type value) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_convertible::value,
-                "Unsupported key type");
-  escape_and_append_with_quotes(key);
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+simdjson_inline bool value_iterator::is_at_key() const noexcept {
+  // Keys are at the same depth as the object.
+  // Note here that we could be safer and check that we are within an object,
+  // but we do not.
+  //
+  // As long as we are at the object's depth, in a valid document,
+  // we will only ever be at { , : or the actual string key: ".
+  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
 }
 
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void
-string_builder::append_key_value(value_type value) noexcept {
-  escape_and_append_with_quotes();
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
+  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
+  auto delta = position() - start_position();
+  return delta == 1 || delta == 2;
 }
-#endif
 
-} // namespace builder
-} // namespace arm64
-} // namespace simdjson
+inline void value_iterator::assert_at_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-/* end file simdjson/generic/ondemand/json_string_builder-inl.h for arm64 */
-/* including simdjson/generic/ondemand/json_builder.h for arm64: #include "simdjson/generic/ondemand/json_builder.h" */
-/* begin file simdjson/generic/ondemand/json_builder.h for arm64 */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_BUILDER_H
+inline void value_iterator::assert_at_container_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-#if SIMDJSON_STATIC_REFLECTION
+inline void value_iterator::assert_at_next() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-// #include  // for std::define_static_string - header not available yet
+simdjson_inline void value_iterator::move_at_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position);
+}
 
-namespace simdjson {
-namespace arm64 {
-namespace builder {
+simdjson_inline void value_iterator::move_at_container_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position + 1);
+}
 
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  auto it = t.begin();
-  auto end = t.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
-  }
-  b.append(']');
+simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_array();
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-constexpr void atom(string_builder &b, const T &t) {
-  b.escape_and_append_with_quotes(t);
+simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_object();
 }
 
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &m) {
-  if (m.empty()) {
-    b.append_raw("{}");
-    return;
-  }
-  b.append('{');
-  bool first = true;
-  for (const auto& [key, value] : m) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    // Keys must be convertible to string_view per the concept
-    b.escape_and_append_with_quotes(key);
-    b.append(':');
-    atom(b, value);
-  }
-  b.append('}');
+inline void value_iterator::assert_at_child() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
+  SIMDJSON_ASSUME( _depth > 0 );
 }
 
+inline void value_iterator::assert_at_root() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth == 1 );
+}
 
-template::value && !std::is_same_v>::type>
-constexpr void atom(string_builder &b, const number_type t) {
-  b.append(t);
+inline void value_iterator::assert_at_non_root_start() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth > 1 );
 }
 
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, t.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline void value_iterator::assert_is_valid() const noexcept {
+  SIMDJSON_ASSUME( _json_iter != nullptr );
 }
 
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &opt) {
-  if (opt) {
-    atom(b, opt.value());
-  } else {
-    b.append_raw("null");
-  }
+simdjson_inline bool value_iterator::is_valid() const noexcept {
+  return _json_iter != nullptr;
 }
 
-// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &ptr) {
-  if (ptr) {
-    atom(b, *ptr);
-  } else {
-    b.append_raw("null");
+simdjson_inline simdjson_result value_iterator::type() const noexcept {
+  switch (*peek_start()) {
+    case '{':
+      return json_type::object;
+    case '[':
+      return json_type::array;
+    case '"':
+      return json_type::string;
+    case 'n':
+      return json_type::null;
+    case 't': case 'f':
+      return json_type::boolean;
+    case '-':
+    case '0': case '1': case '2': case '3': case '4':
+    case '5': case '6': case '7': case '8': case '9':
+      return json_type::number;
+    default:
+      return json_type::unknown;
   }
 }
 
-// Support for enums - serialize as string representation using expand approach from P2996R12
-template 
-  requires(std::is_enum_v && !require_custom_serialization)
-void atom(string_builder &b, const T &e) {
-#if SIMDJSON_STATIC_REFLECTION
-  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
-  template for (constexpr auto enum_val : enumerators) {
-    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
-    if (e == [:enum_val:]) {
-      b.append_raw(enum_str);
-      return;
-    }
-  };
-  // Fallback to integer if enum value not found
-  atom(b, static_cast>(e));
-#else
-  // Fallback: serialize as integer if reflection not available
-  atom(b, static_cast>(e));
-#endif
+simdjson_inline token_position value_iterator::start_position() const noexcept {
+  return _start_position;
 }
 
-// Support for appendable containers that don't have operator[] (sets, etc.)
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &container) {
-  if (container.empty()) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  bool first = true;
-  for (const auto& item : container) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    atom(b, item);
-  }
-  b.append(']');
+simdjson_inline token_position value_iterator::position() const noexcept {
+  return _json_iter->position();
 }
 
-// append functions that delegate to atom functions for primitive types
-template 
-  requires(std::is_arithmetic_v && !std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::end_position() const noexcept {
+  return _json_iter->end_position();
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::last_position() const noexcept {
+  return _json_iter->last_position();
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
+  return _json_iter->report_error(error, message);
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
+} // namespace ondemand
+} // namespace fallback
+} // namespace simdjson
 
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::value_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
+/* end file simdjson/generic/ondemand/value_iterator-inl.h for fallback */
+/* including simdjson/generic/ondemand/serialization-inl.h for fallback: #include "simdjson/generic/ondemand/serialization-inl.h" */
+/* begin file simdjson/generic/ondemand/serialization-inl.h for fallback */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #endif */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+inline std::string_view trim(const std::string_view str) noexcept {
+  // We can almost surely do better by rolling our own find_first_not_of function.
+  size_t first = str.find_first_not_of(" \t\n\r");
+  // If we have the empty string (just white space), then no trimming is possible, and
+  // we return the empty string_view.
+  if (std::string_view::npos == first) { return std::string_view(); }
+  size_t last = str.find_last_not_of(" \t\n\r");
+  return str.substr(first, (last - first + 1));
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+
+inline simdjson_result to_json_string(fallback::ondemand::document& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// works for struct
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, z.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline simdjson_result to_json_string(fallback::ondemand::document_reference& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// works for container that have begin() and end() iterators
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  auto it = z.begin();
-  auto end = z.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
+inline simdjson_result to_json_string(fallback::ondemand::value& x) noexcept {
+  /**
+   * If we somehow receive a value that has already been consumed,
+   * then the following code could be in trouble. E.g., we create
+   * an array as needed, but if an array was already created, then
+   * it could be bad.
+   */
+  using namespace fallback::ondemand;
+  fallback::ondemand::json_type t;
+  auto error = x.type().get(t);
+  if(error != SUCCESS) { return error; }
+  switch (t)
+  {
+    case json_type::array:
+    {
+      fallback::ondemand::array array;
+      error = x.get_array().get(array);
+      if(error) { return error; }
+      return to_json_string(array);
+    }
+    case json_type::object:
+    {
+      fallback::ondemand::object object;
+      error = x.get_object().get(object);
+      if(error) { return error; }
+      return to_json_string(object);
+    }
+    default:
+      return trim(x.raw_json_token());
   }
-  b.append(']');
 }
 
-template 
-  requires (require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  b.append(z);
+inline simdjson_result to_json_string(fallback::ondemand::object& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-
-template 
-simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline simdjson_result to_json_string(fallback::ondemand::array& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-template 
-string_builder& operator<<(string_builder& b, const Z& z) {
-  append(b, z);
-  return b;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-// extract_from: Serialize only specific fields from a struct to JSON
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-void extract_from(string_builder &b, const T &obj) {
-  // Helper to check if a field name matches any of the requested fields
-  auto should_extract = [](std::string_view field_name) constexpr -> bool {
-    return ((FieldNames.view() == field_name) || ...);
-  };
-
-  b.append('{');
-  bool first = true;
-
-  // Iterate through all members of T using reflection
-  template for (constexpr auto mem : std::define_static_array(
-      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-
-    if constexpr (std::meta::is_public(mem)) {
-      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-      // Only serialize this field if it's in our list of requested fields
-      if constexpr (should_extract(key)) {
-        if (!first) {
-          b.append(',');
-        }
-        first = false;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-        // Serialize the key
-        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
-        b.append_raw(quoted_key);
-        b.append(':');
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
+} // namespace simdjson
 
-        // Serialize the value
-        atom(b, obj.[:mem:]);
-      }
-    }
-  };
+namespace simdjson { namespace fallback { namespace ondemand {
 
-  b.append('}');
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace builder
-} // namespace arm64
-// Alias the function template to 'to' in the global namespace
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  arm64::builder::string_builder b(initial_capacity);
-  arm64::builder::append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  arm64::builder::string_builder b(initial_capacity);
-  arm64::builder::append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
 }
-// Global namespace function for extract_from
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  arm64::builder::string_builder b(initial_capacity);
-  arm64::builder::extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace simdjson
-
-#endif // SIMDJSON_STATIC_REFLECTION
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::document_reference& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
 
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
+  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
 #endif
-/* end file simdjson/generic/ondemand/json_builder.h for arm64 */
+}}} // namespace simdjson::fallback::ondemand
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+/* end file simdjson/generic/ondemand/serialization-inl.h for fallback */
 
 // JSON path accessor (compile-time) - must be after inline definitions
-/* including simdjson/generic/ondemand/compile_time_accessors.h for arm64: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
-/* begin file simdjson/generic/ondemand/compile_time_accessors.h for arm64 */
+/* including simdjson/generic/ondemand/compile_time_accessors.h for fallback: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
+/* begin file simdjson/generic/ondemand/compile_time_accessors.h for fallback */
 /**
  * Compile-time JSON Path and JSON Pointer accessors using C++26 reflection (P2996)
  *
@@ -47574,7 +85627,7 @@ simdjson_warn_unused simdjson_result extract_from(const T &obj, siz
 #include 
 
 namespace simdjson {
-namespace arm64 {
+namespace fallback {
 namespace ondemand {
 /***
  * JSONPath implementation for compile-time access
@@ -47585,7 +85638,7 @@ namespace json_path {
 // Note: value type must be fully defined before this header is included
 // This is ensured by including this in amalgamated.h after value-inl.h
 
-using ::simdjson::arm64::ondemand::value;
+using ::simdjson::fallback::ondemand::value;
 
 // Path step types
 enum class step_type {
@@ -47719,7 +85772,7 @@ struct json_path_parser {
 // Compile-time path accessor generator
 template
 struct path_accessor {
-  using value = ::simdjson::arm64::ondemand::value;
+  using value = ::simdjson::fallback::ondemand::value;
 
   static constexpr auto parser = json_path_parser();
   static constexpr std::size_t num_steps = parser.count_steps();
@@ -48197,14 +86250,14 @@ struct path_accessor {
 
 // Compile-time path accessor with validation
 template
-inline simdjson_result<::simdjson::arm64::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::fallback::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::arm64::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::fallback::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
@@ -48435,237 +86488,291 @@ struct pointer_accessor {
 
 // Compile-time JSON Pointer accessor with validation
 template
-inline simdjson_result<::simdjson::arm64::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::fallback::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::arm64::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::fallback::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 } // namespace json_path
 } // namespace ondemand
-} // namespace arm64
+} // namespace fallback
 } // namespace simdjson
 
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 #endif // SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
 
-/* end file simdjson/generic/ondemand/compile_time_accessors.h for arm64 */
+/* end file simdjson/generic/ondemand/compile_time_accessors.h for fallback */
 
-/* end file simdjson/generic/ondemand/amalgamated.h for arm64 */
-/* including simdjson/arm64/end.h: #include "simdjson/arm64/end.h" */
-/* begin file simdjson/arm64/end.h */
+/* end file simdjson/generic/ondemand/amalgamated.h for fallback */
+/* including simdjson/fallback/end.h: #include "simdjson/fallback/end.h" */
+/* begin file simdjson/fallback/end.h */
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/arm64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
-/* undefining SIMDJSON_IMPLEMENTATION from "arm64" */
+/* undefining SIMDJSON_IMPLEMENTATION from "fallback" */
 #undef SIMDJSON_IMPLEMENTATION
-/* end file simdjson/arm64/end.h */
+/* end file simdjson/fallback/end.h */
 
-#endif // SIMDJSON_ARM64_ONDEMAND_H
-/* end file simdjson/arm64/ondemand.h */
-#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(fallback)
-/* including simdjson/fallback/ondemand.h: #include "simdjson/fallback/ondemand.h" */
-/* begin file simdjson/fallback/ondemand.h */
-#ifndef SIMDJSON_FALLBACK_ONDEMAND_H
-#define SIMDJSON_FALLBACK_ONDEMAND_H
+#endif // SIMDJSON_FALLBACK_ONDEMAND_H
+/* end file simdjson/fallback/ondemand.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(haswell)
+/* including simdjson/haswell/ondemand.h: #include "simdjson/haswell/ondemand.h" */
+/* begin file simdjson/haswell/ondemand.h */
+#ifndef SIMDJSON_HASWELL_ONDEMAND_H
+#define SIMDJSON_HASWELL_ONDEMAND_H
 
-/* including simdjson/fallback/begin.h: #include "simdjson/fallback/begin.h" */
-/* begin file simdjson/fallback/begin.h */
-/* defining SIMDJSON_IMPLEMENTATION to "fallback" */
-#define SIMDJSON_IMPLEMENTATION fallback
-/* including simdjson/fallback/base.h: #include "simdjson/fallback/base.h" */
-/* begin file simdjson/fallback/base.h */
-#ifndef SIMDJSON_FALLBACK_BASE_H
-#define SIMDJSON_FALLBACK_BASE_H
+/* including simdjson/haswell/begin.h: #include "simdjson/haswell/begin.h" */
+/* begin file simdjson/haswell/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "haswell" */
+#define SIMDJSON_IMPLEMENTATION haswell
+
+/* including simdjson/haswell/base.h: #include "simdjson/haswell/base.h" */
+/* begin file simdjson/haswell/base.h */
+#ifndef SIMDJSON_HASWELL_BASE_H
+#define SIMDJSON_HASWELL_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #include "simdjson/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
+// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_HASWELL
 namespace simdjson {
 /**
- * Fallback implementation (runs on any machine).
+ * Implementation for Haswell (Intel AVX2).
  */
-namespace fallback {
+namespace haswell {
 
 class implementation;
 
-} // namespace fallback
+namespace {
+namespace simd {
+template  struct simd8;
+template  struct simd8x64;
+} // namespace simd
+} // unnamed namespace
+
+} // namespace haswell
 } // namespace simdjson
 
-#endif // SIMDJSON_FALLBACK_BASE_H
-/* end file simdjson/fallback/base.h */
-/* including simdjson/fallback/bitmanipulation.h: #include "simdjson/fallback/bitmanipulation.h" */
-/* begin file simdjson/fallback/bitmanipulation.h */
-#ifndef SIMDJSON_FALLBACK_BITMANIPULATION_H
-#define SIMDJSON_FALLBACK_BITMANIPULATION_H
+#endif // SIMDJSON_HASWELL_BASE_H
+/* end file simdjson/haswell/base.h */
+/* including simdjson/haswell/intrinsics.h: #include "simdjson/haswell/intrinsics.h" */
+/* begin file simdjson/haswell/intrinsics.h */
+#ifndef SIMDJSON_HASWELL_INTRINSICS_H
+#define SIMDJSON_HASWELL_INTRINSICS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-namespace simdjson {
-namespace fallback {
-namespace {
+#if SIMDJSON_VISUAL_STUDIO
+// under clang within visual studio, this will include 
+#include   // visual studio or clang
+#else
+#include  // elsewhere
+#endif // SIMDJSON_VISUAL_STUDIO
 
-#if defined(_MSC_VER) && !defined(_M_ARM64) && !defined(_M_X64)
-static inline unsigned char _BitScanForward64(unsigned long* ret, uint64_t x) {
-  unsigned long x0 = (unsigned long)x, top, bottom;
-  _BitScanForward(&top, (unsigned long)(x >> 32));
-  _BitScanForward(&bottom, x0);
-  *ret = x0 ? bottom : 32 + top;
-  return x != 0;
-}
-static unsigned char _BitScanReverse64(unsigned long* ret, uint64_t x) {
-  unsigned long x1 = (unsigned long)(x >> 32), top, bottom;
-  _BitScanReverse(&top, x1);
-  _BitScanReverse(&bottom, (unsigned long)x);
-  *ret = x1 ? top + 32 : bottom;
-  return x != 0;
-}
-#endif
+#if SIMDJSON_CLANG_VISUAL_STUDIO
+/**
+ * You are not supposed, normally, to include these
+ * headers directly. Instead you should either include intrin.h
+ * or x86intrin.h. However, when compiling with clang
+ * under Windows (i.e., when _MSC_VER is set), these headers
+ * only get included *if* the corresponding features are detected
+ * from macros:
+ * e.g., if __AVX2__ is set... in turn,  we normally set these
+ * macros by compiling against the corresponding architecture
+ * (e.g., arch:AVX2, -mavx2, etc.) which compiles the whole
+ * software with these advanced instructions. In simdjson, we
+ * want to compile the whole program for a generic target,
+ * and only target our specific kernels. As a workaround,
+ * we directly include the needed headers. These headers would
+ * normally guard against such usage, but we carefully included
+ *   (or ) before, so the headers
+ * are fooled.
+ */
+#include    // for _blsr_u64
+#include  // for  __lzcnt64
+#include    // for most things (AVX2, AVX512, _popcnt64)
+#include 
+#include 
+#include 
+#include 
+#include    // for  _mm_clmulepi64_si128
+// unfortunately, we may not get _blsr_u64, but, thankfully, clang
+// has it as a macro.
+#ifndef _blsr_u64
+// we roll our own
+#define _blsr_u64(n) ((n - 1) & n)
+#endif //  _blsr_u64
+#endif // SIMDJSON_CLANG_VISUAL_STUDIO
 
-/* result might be undefined when input_num is zero */
-simdjson_inline int leading_zeroes(uint64_t input_num) {
-#ifdef _MSC_VER
-  unsigned long leading_zero = 0;
-  // Search the mask data from most significant bit (MSB)
-  // to least significant bit (LSB) for a set bit (1).
-  if (_BitScanReverse64(&leading_zero, input_num))
-    return (int)(63 - leading_zero);
-  else
-    return 64;
-#else
-  return __builtin_clzll(input_num);
-#endif// _MSC_VER
-}
+static_assert(sizeof(__m256i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for haswell kernel.");
 
-} // unnamed namespace
-} // namespace fallback
-} // namespace simdjson
+#endif // SIMDJSON_HASWELL_INTRINSICS_H
+/* end file simdjson/haswell/intrinsics.h */
 
-#endif // SIMDJSON_FALLBACK_BITMANIPULATION_H
-/* end file simdjson/fallback/bitmanipulation.h */
-/* including simdjson/fallback/stringparsing_defs.h: #include "simdjson/fallback/stringparsing_defs.h" */
-/* begin file simdjson/fallback/stringparsing_defs.h */
-#ifndef SIMDJSON_FALLBACK_STRINGPARSING_DEFS_H
-#define SIMDJSON_FALLBACK_STRINGPARSING_DEFS_H
+#if !SIMDJSON_CAN_ALWAYS_RUN_HASWELL
+// We enable bmi2 only if LLVM/clang is used, because GCC may not
+// make good use of it. See https://github.com/simdjson/simdjson/pull/2243
+#if defined(__clang__)
+SIMDJSON_TARGET_REGION("avx2,bmi,bmi2,pclmul,lzcnt,popcnt")
+#else
+SIMDJSON_TARGET_REGION("avx2,bmi,pclmul,lzcnt,popcnt")
+#endif
+#endif
+
+/* including simdjson/haswell/bitmanipulation.h: #include "simdjson/haswell/bitmanipulation.h" */
+/* begin file simdjson/haswell/bitmanipulation.h */
+#ifndef SIMDJSON_HASWELL_BITMANIPULATION_H
+#define SIMDJSON_HASWELL_BITMANIPULATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/bitmask.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace {
 
-// Holds backslashes and quotes locations.
-struct backslash_and_quote {
-public:
-  static constexpr uint32_t BYTES_PROCESSED = 1;
-  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
-
-  simdjson_inline bool has_quote_first() { return c == '"'; }
-  simdjson_inline bool has_backslash() { return c == '\\'; }
-  simdjson_inline int quote_index() { return c == '"' ? 0 : 1; }
-  simdjson_inline int backslash_index() { return c == '\\' ? 0 : 1; }
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  return (int)_tzcnt_u64(input_num);
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO
+  ////////
+  // You might expect the next line to be equivalent to
+  // return (int)_tzcnt_u64(input_num);
+  // but the generated code differs and might be less efficient?
+  ////////
+  return __builtin_ctzll(input_num);
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+}
 
-  uint8_t c;
-}; // struct backslash_and_quote
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return _blsr_u64(input_num);
+}
 
-simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
-  // store to dest unconditionally - we can overwrite the bits we don't like later
-  dst[0] = src[0];
-  return { src[0] };
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+  return int(_lzcnt_u64(input_num));
 }
 
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+simdjson_inline unsigned __int64 count_ones(uint64_t input_num) {
+  // note: we do not support legacy 32-bit Windows in this kernel
+  return __popcnt64(input_num);// Visual Studio wants two underscores
+}
+#else
+simdjson_inline long long int count_ones(uint64_t input_num) {
+  return _popcnt64(input_num);
+}
+#endif
 
-struct escaping {
-  static constexpr uint32_t BYTES_PROCESSED = 1;
-  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
+                                uint64_t *result) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  return _addcarry_u64(0, value1, value2,
+                       reinterpret_cast(result));
+#else
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
+#endif
+}
 
-  simdjson_inline bool has_escape() { return escape_bits; }
-  simdjson_inline int escape_index() { return 0; }
+} // unnamed namespace
+} // namespace haswell
+} // namespace simdjson
 
-  bool escape_bits;
-}; // struct escaping
+#endif // SIMDJSON_HASWELL_BITMANIPULATION_H
+/* end file simdjson/haswell/bitmanipulation.h */
+/* including simdjson/haswell/bitmask.h: #include "simdjson/haswell/bitmask.h" */
+/* begin file simdjson/haswell/bitmask.h */
+#ifndef SIMDJSON_HASWELL_BITMASK_H
+#define SIMDJSON_HASWELL_BITMASK_H
 
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
+namespace simdjson {
+namespace haswell {
+namespace {
 
-simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
-  dst[0] = src[0];
-  return { (src[0] == '\\') || (src[0] == '"') || (src[0] < 32) };
+//
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
+//
+// For example, prefix_xor(00100100) == 00011100
+//
+simdjson_inline uint64_t prefix_xor(const uint64_t bitmask) {
+  // There should be no such thing with a processor supporting avx2
+  // but not clmul.
+  __m128i all_ones = _mm_set1_epi8('\xFF');
+  __m128i result = _mm_clmulepi64_si128(_mm_set_epi64x(0ULL, bitmask), all_ones, 0);
+  return _mm_cvtsi128_si64(result);
 }
 
 } // unnamed namespace
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
-#endif // SIMDJSON_FALLBACK_STRINGPARSING_DEFS_H
-/* end file simdjson/fallback/stringparsing_defs.h */
-/* including simdjson/fallback/numberparsing_defs.h: #include "simdjson/fallback/numberparsing_defs.h" */
-/* begin file simdjson/fallback/numberparsing_defs.h */
-#ifndef SIMDJSON_FALLBACK_NUMBERPARSING_DEFS_H
-#define SIMDJSON_FALLBACK_NUMBERPARSING_DEFS_H
+#endif // SIMDJSON_HASWELL_BITMASK_H
+/* end file simdjson/haswell/bitmask.h */
+/* including simdjson/haswell/numberparsing_defs.h: #include "simdjson/haswell/numberparsing_defs.h" */
+/* begin file simdjson/haswell/numberparsing_defs.h */
+#ifndef SIMDJSON_HASWELL_NUMBERPARSING_DEFS_H
+#define SIMDJSON_HASWELL_NUMBERPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#include 
-
-#ifdef JSON_TEST_NUMBERS // for unit testing
-void found_invalid_number(const uint8_t *buf);
-void found_integer(int64_t result, const uint8_t *buf);
-void found_unsigned_integer(uint64_t result, const uint8_t *buf);
-void found_float(double result, const uint8_t *buf);
-#endif
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace numberparsing {
 
-// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
-/** @private */
-static simdjson_inline uint32_t parse_eight_digits_unrolled(const char *chars) {
-  uint64_t val;
-  memcpy(&val, chars, sizeof(uint64_t));
-  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
-  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
-  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
-}
-
 /** @private */
 static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
-  return parse_eight_digits_unrolled(reinterpret_cast(chars));
-}
-
-#if SIMDJSON_IS_32BITS // _umul128 for x86, arm
-// this is a slow emulation routine for 32-bit
-//
-static simdjson_inline uint64_t __emulu(uint32_t x, uint32_t y) {
-  return x * (uint64_t)y;
-}
-static simdjson_inline uint64_t _umul128(uint64_t ab, uint64_t cd, uint64_t *hi) {
-  uint64_t ad = __emulu((uint32_t)(ab >> 32), (uint32_t)cd);
-  uint64_t bd = __emulu((uint32_t)ab, (uint32_t)cd);
-  uint64_t adbc = ad + __emulu((uint32_t)ab, (uint32_t)(cd >> 32));
-  uint64_t adbc_carry = !!(adbc < ad);
-  uint64_t lo = bd + (adbc << 32);
-  *hi = __emulu((uint32_t)(ab >> 32), (uint32_t)(cd >> 32)) + (adbc >> 32) +
-        (adbc_carry << 32) + !!(lo < bd);
-  return lo;
+  // this actually computes *16* values so we are being wasteful.
+  const __m128i ascii0 = _mm_set1_epi8('0');
+  const __m128i mul_1_10 =
+      _mm_setr_epi8(10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1);
+  const __m128i mul_1_100 = _mm_setr_epi16(100, 1, 100, 1, 100, 1, 100, 1);
+  const __m128i mul_1_10000 =
+      _mm_setr_epi16(10000, 1, 10000, 1, 10000, 1, 10000, 1);
+  const __m128i input = _mm_sub_epi8(
+      _mm_loadu_si128(reinterpret_cast(chars)), ascii0);
+  const __m128i t1 = _mm_maddubs_epi16(input, mul_1_10);
+  const __m128i t2 = _mm_madd_epi16(t1, mul_1_100);
+  const __m128i t3 = _mm_packus_epi32(t2, t2);
+  const __m128i t4 = _mm_madd_epi16(t3, mul_1_10000);
+  return _mm_cvtsi128_si32(
+      t4); // only captures the sum of the first 8 digits, drop the rest
 }
-#endif
 
 /** @private */
 simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
@@ -48687,29 +86794,475 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 }
 
 } // namespace numberparsing
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
-#ifndef SIMDJSON_SWAR_NUMBER_PARSING
-#if SIMDJSON_IS_BIG_ENDIAN
-#define SIMDJSON_SWAR_NUMBER_PARSING 0
-#else
 #define SIMDJSON_SWAR_NUMBER_PARSING 1
-#endif
-#endif
 
-#endif // SIMDJSON_FALLBACK_NUMBERPARSING_DEFS_H
-/* end file simdjson/fallback/numberparsing_defs.h */
-/* end file simdjson/fallback/begin.h */
-/* including simdjson/generic/ondemand/amalgamated.h for fallback: #include "simdjson/generic/ondemand/amalgamated.h" */
-/* begin file simdjson/generic/ondemand/amalgamated.h for fallback */
-#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H)
+#endif // SIMDJSON_HASWELL_NUMBERPARSING_DEFS_H
+/* end file simdjson/haswell/numberparsing_defs.h */
+/* including simdjson/haswell/simd.h: #include "simdjson/haswell/simd.h" */
+/* begin file simdjson/haswell/simd.h */
+#ifndef SIMDJSON_HASWELL_SIMD_H
+#define SIMDJSON_HASWELL_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace haswell {
+namespace {
+namespace simd {
+
+  // Forward-declared so they can be used by splat and friends.
+  template
+  struct base {
+    __m256i value;
+
+    // Zero constructor
+    simdjson_inline base() : value{__m256i()} {}
+
+    // Conversion from SIMD register
+    simdjson_inline base(const __m256i _value) : value(_value) {}
+
+    // Conversion to SIMD register
+    simdjson_inline operator const __m256i&() const { return this->value; }
+    simdjson_inline operator __m256i&() { return this->value; }
+
+    // Bit operations
+    simdjson_inline Child operator|(const Child other) const { return _mm256_or_si256(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return _mm256_and_si256(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return _mm256_xor_si256(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return _mm256_andnot_si256(other, *this); }
+    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
+
+  // Forward-declared so they can be used by splat and friends.
+  template
+  struct simd8;
+
+  template>
+  struct base8: base> {
+    typedef uint32_t bitmask_t;
+    typedef uint64_t bitmask2_t;
+
+    simdjson_inline base8() : base>() {}
+    simdjson_inline base8(const __m256i _value) : base>(_value) {}
+
+    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return _mm256_cmpeq_epi8(lhs, rhs); }
+
+    static const int SIZE = sizeof(base::value);
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return _mm256_alignr_epi8(*this, _mm256_permute2x128_si256(prev_chunk, *this, 0x21), 16 - N);
+    }
+  };
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8: base8 {
+    static simdjson_inline simd8 splat(bool _value) { return _mm256_set1_epi8(uint8_t(-(!!_value))); }
+
+    simdjson_inline simd8() : base8() {}
+    simdjson_inline simd8(const __m256i _value) : base8(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
+
+    simdjson_inline int to_bitmask() const { return _mm256_movemask_epi8(*this); }
+    simdjson_inline bool any() const { return !_mm256_testz_si256(*this, *this); }
+    simdjson_inline simd8 operator~() const { return *this ^ true; }
+  };
+
+  template
+  struct base8_numeric: base8 {
+    static simdjson_inline simd8 splat(T _value) { return _mm256_set1_epi8(_value); }
+    static simdjson_inline simd8 zero() { return _mm256_setzero_si256(); }
+    static simdjson_inline simd8 load(const T values[32]) {
+      return _mm256_loadu_si256(reinterpret_cast(values));
+    }
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    static simdjson_inline simd8 repeat_16(
+      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
+      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    simdjson_inline base8_numeric() : base8() {}
+    simdjson_inline base8_numeric(const __m256i _value) : base8(_value) {}
+
+    // Store to array
+    simdjson_inline void store(T dst[32]) const { return _mm256_storeu_si256(reinterpret_cast<__m256i *>(dst), *this); }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return _mm256_add_epi8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return _mm256_sub_epi8(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
+
+    // Override to distinguish from bool version
+    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return _mm256_shuffle_epi8(lookup_table, *this);
+    }
+
+    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
+    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
+    // Only the first 32 - count_ones(mask) bytes of the result are significant but 32 bytes
+    // get written.
+    // Design consideration: it seems like a function with the
+    // signature simd8 compress(uint32_t mask) would be
+    // sensible, but the AVX ISA makes this kind of approach difficult.
+    template
+    simdjson_inline void compress(uint32_t mask, L * output) const {
+      using internal::thintable_epi8;
+      using internal::BitsSetTable256mul2;
+      using internal::pshufb_combine_table;
+      // this particular implementation was inspired by work done by @animetosho
+      // we do it in four steps, first 8 bytes and then second 8 bytes...
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // second least significant 8 bits
+      uint8_t mask3 = uint8_t(mask >> 16); // ...
+      uint8_t mask4 = uint8_t(mask >> 24); // ...
+      // next line just loads the 64-bit values thintable_epi8[mask1] and
+      // thintable_epi8[mask2] into a 128-bit register, using only
+      // two instructions on most compilers.
+      __m256i shufmask =  _mm256_set_epi64x(thintable_epi8[mask4], thintable_epi8[mask3],
+        thintable_epi8[mask2], thintable_epi8[mask1]);
+      // we increment by 0x08 the second half of the mask and so forth
+      shufmask =
+      _mm256_add_epi8(shufmask, _mm256_set_epi32(0x18181818, 0x18181818,
+         0x10101010, 0x10101010, 0x08080808, 0x08080808, 0, 0));
+      // this is the version "nearly pruned"
+      __m256i pruned = _mm256_shuffle_epi8(*this, shufmask);
+      // we still need to put the  pieces back together.
+      // we compute the popcount of the first words:
+      int pop1 = BitsSetTable256mul2[mask1];
+      int pop3 = BitsSetTable256mul2[mask3];
+
+      // then load the corresponding mask
+      // could be done with _mm256_loadu2_m128i but many standard libraries omit this intrinsic.
+      __m256i v256 = _mm256_castsi128_si256(
+        _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop1 * 8)));
+      __m256i compactmask = _mm256_insertf128_si256(v256,
+         _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop3 * 8)), 1);
+      __m256i almostthere =  _mm256_shuffle_epi8(pruned, compactmask);
+      // We just need to write out the result.
+      // This is the tricky bit that is hard to do
+      // if we want to return a SIMD register, since there
+      // is no single-instruction approach to recombine
+      // the two 128-bit lanes with an offset.
+      __m128i v128;
+      v128 = _mm256_castsi256_si128(almostthere);
+      _mm_storeu_si128( reinterpret_cast<__m128i *>(output), v128);
+      v128 = _mm256_extractf128_si256(almostthere, 1);
+      _mm_storeu_si128( reinterpret_cast<__m128i *>(output + 16 - count_ones(mask & 0xFFFF)), v128);
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 : base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const int8_t values[32]) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15,
+      int8_t v16, int8_t v17, int8_t v18, int8_t v19, int8_t v20, int8_t v21, int8_t v22, int8_t v23,
+      int8_t v24, int8_t v25, int8_t v26, int8_t v27, int8_t v28, int8_t v29, int8_t v30, int8_t v31
+    ) : simd8(_mm256_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15,
+      v16,v17,v18,v19,v20,v21,v22,v23,
+      v24,v25,v26,v27,v28,v29,v30,v31
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm256_max_epi8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm256_min_epi8(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return _mm256_cmpgt_epi8(*this, other); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return _mm256_cmpgt_epi8(other, *this); }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8: base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const uint8_t values[32]) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15,
+      uint8_t v16, uint8_t v17, uint8_t v18, uint8_t v19, uint8_t v20, uint8_t v21, uint8_t v22, uint8_t v23,
+      uint8_t v24, uint8_t v25, uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30, uint8_t v31
+    ) : simd8(_mm256_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15,
+      v16,v17,v18,v19,v20,v21,v22,v23,
+      v24,v25,v26,v27,v28,v29,v30,v31
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm256_adds_epu8(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm256_subs_epu8(*this, other); }
+
+    // Order-specific operations
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm256_max_epu8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm256_min_epu8(other, *this); }
+    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
+    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
+    simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
+    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return this->lt_bits(other).any_bits_set(); }
+
+    // Bit-specific operations
+    simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
+    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
+    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
+    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
+    simdjson_inline bool is_ascii() const { return _mm256_movemask_epi8(*this) == 0; }
+    simdjson_inline bool bits_not_set_anywhere() const { return _mm256_testz_si256(*this, *this); }
+    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
+    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return _mm256_testz_si256(*this, bits); }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
+    template
+    simdjson_inline simd8 shr() const { return simd8(_mm256_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
+    template
+    simdjson_inline simd8 shl() const { return simd8(_mm256_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
+    // Get one of the bits and make a bitmask out of it.
+    // e.g. value.get_bit<7>() gets the high bit
+    template
+    simdjson_inline int get_bit() const { return _mm256_movemask_epi8(_mm256_slli_epi16(*this, 7-N)); }
+  };
+
+  template
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    static_assert(NUM_CHUNKS == 2, "Haswell kernel should use two registers per 64-byte block.");
+    const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1) : chunks{chunk0, chunk1} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+32)} {}
+
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      uint32_t mask1 = uint32_t(mask);
+      uint32_t mask2 = uint32_t(mask >> 32);
+      this->chunks[0].compress(mask1, output);
+      this->chunks[1].compress(mask2, output + 32 - count_ones(mask1));
+      return 64 - count_ones(mask);
+    }
+
+    simdjson_inline void store(T ptr[64]) const {
+      this->chunks[0].store(ptr+sizeof(simd8)*0);
+      this->chunks[1].store(ptr+sizeof(simd8)*1);
+    }
+
+    simdjson_inline uint64_t to_bitmask() const {
+      uint64_t r_lo = uint32_t(this->chunks[0].to_bitmask());
+      uint64_t r_hi =                       this->chunks[1].to_bitmask();
+      return r_lo | (r_hi << 32);
+    }
+
+    simdjson_inline simd8 reduce_or() const {
+      return this->chunks[0] | this->chunks[1];
+    }
+
+    simdjson_inline simd8x64 bit_or(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return simd8x64(
+        this->chunks[0] | mask,
+        this->chunks[1] | mask
+      );
+    }
+
+    simdjson_inline uint64_t eq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] == mask,
+        this->chunks[1] == mask
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t eq(const simd8x64 &other) const {
+      return  simd8x64(
+        this->chunks[0] == other.chunks[0],
+        this->chunks[1] == other.chunks[1]
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t lteq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] <= mask,
+        this->chunks[1] <= mask
+      ).to_bitmask();
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+
+} // unnamed namespace
+} // namespace haswell
+} // namespace simdjson
+
+#endif // SIMDJSON_HASWELL_SIMD_H
+/* end file simdjson/haswell/simd.h */
+/* including simdjson/haswell/stringparsing_defs.h: #include "simdjson/haswell/stringparsing_defs.h" */
+/* begin file simdjson/haswell/stringparsing_defs.h */
+#ifndef SIMDJSON_HASWELL_STRINGPARSING_DEFS_H
+#define SIMDJSON_HASWELL_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace haswell {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 32;
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
+  simdjson_inline bool has_backslash() { return ((quote_bits - 1) & bs_bits) != 0; }
+  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
+  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
+
+  uint32_t bs_bits;
+  uint32_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // this can read up to 15 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  // store to dest unconditionally - we can overwrite the bits we don't like later
+  v.store(dst);
+  return {
+      static_cast((v == '\\').to_bitmask()),     // bs_bits
+      static_cast((v == '"').to_bitmask()), // quote_bits
+  };
+}
+
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 32;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits); }
+
+  uint64_t escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  simd8 is_quote = (v == '"');
+  simd8 is_backslash = (v == '\\');
+  simd8 is_control = (v < 32);
+  return {
+    uint64_t((is_backslash | is_quote | is_control).to_bitmask())
+  };
+}
+
+} // unnamed namespace
+} // namespace haswell
+} // namespace simdjson
+
+#endif // SIMDJSON_HASWELL_STRINGPARSING_DEFS_H
+/* end file simdjson/haswell/stringparsing_defs.h */
+/* end file simdjson/haswell/begin.h */
+/* including simdjson/generic/ondemand/amalgamated.h for haswell: #include "simdjson/generic/ondemand/amalgamated.h" */
+/* begin file simdjson/generic/ondemand/amalgamated.h for haswell */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
 #error simdjson/generic/ondemand/dependencies.h must be included before simdjson/generic/ondemand/amalgamated.h!
 #endif
 
 // Stuff other things depend on
-/* including simdjson/generic/ondemand/base.h for fallback: #include "simdjson/generic/ondemand/base.h" */
-/* begin file simdjson/generic/ondemand/base.h for fallback */
+/* including simdjson/generic/ondemand/base.h for haswell: #include "simdjson/generic/ondemand/base.h" */
+/* begin file simdjson/generic/ondemand/base.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -48718,7 +87271,7 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 /**
  * A fast, simple, DOM-like interface that parses JSON as you use it.
  *
@@ -48729,8 +87282,8 @@ namespace ondemand {
 /** Represents the depth of a JSON value (number of nested arrays/objects). */
 using depth_t = int32_t;
 
-/** @copydoc simdjson::fallback::number_type */
-using number_type = simdjson::fallback::number_type;
+/** @copydoc simdjson::haswell::number_type */
+using number_type = simdjson::haswell::number_type;
 
 /** @private Position in the JSON buffer indexes */
 using token_position = const uint32_t *;
@@ -48753,13 +87306,13 @@ class value;
 class value_iterator;
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_BASE_H
-/* end file simdjson/generic/ondemand/base.h for fallback */
-/* including simdjson/generic/ondemand/deserialize.h for fallback: #include "simdjson/generic/ondemand/deserialize.h" */
-/* begin file simdjson/generic/ondemand/deserialize.h for fallback */
+/* end file simdjson/generic/ondemand/base.h for haswell */
+/* including simdjson/generic/ondemand/deserialize.h for haswell: #include "simdjson/generic/ondemand/deserialize.h" */
+/* begin file simdjson/generic/ondemand/deserialize.h for haswell */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -48779,35 +87332,35 @@ template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 
 template 
 concept is_builtin_deserializable_v = is_builtin_deserializable::value;
 
-template 
+template 
 concept custom_deserializable = tag_invocable;
 
-template 
+template 
 concept deserializable = custom_deserializable || is_builtin_deserializable_v || concepts::optional_type;
 
-template 
+template 
 concept nothrow_custom_deserializable = nothrow_tag_invocable;
 
 // built-in types are noexcept and if an error happens, the value simply gets ignored and the error is returned.
-template 
+template 
 concept nothrow_deserializable = nothrow_custom_deserializable || is_builtin_deserializable_v;
 
 /// Deserialize Tag
 inline constexpr struct deserialize_tag {
-  using array_type = fallback::ondemand::array;
-  using object_type = fallback::ondemand::object;
-  using value_type = fallback::ondemand::value;
-  using document_type = fallback::ondemand::document;
-  using document_reference_type = fallback::ondemand::document_reference;
+  using array_type = haswell::ondemand::array;
+  using object_type = haswell::ondemand::object;
+  using value_type = haswell::ondemand::value;
+  using document_type = haswell::ondemand::document;
+  using document_reference_type = haswell::ondemand::document_reference;
 
   // Customization Point for array
   template 
@@ -48852,9 +87405,9 @@ inline constexpr struct deserialize_tag {
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
 
-/* end file simdjson/generic/ondemand/deserialize.h for fallback */
-/* including simdjson/generic/ondemand/value_iterator.h for fallback: #include "simdjson/generic/ondemand/value_iterator.h" */
-/* begin file simdjson/generic/ondemand/value_iterator.h for fallback */
+/* end file simdjson/generic/ondemand/deserialize.h for haswell */
+/* including simdjson/generic/ondemand/value_iterator.h for haswell: #include "simdjson/generic/ondemand/value_iterator.h" */
+/* begin file simdjson/generic/ondemand/value_iterator.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -48864,7 +87417,7 @@ inline constexpr struct deserialize_tag {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 /**
@@ -49329,21 +87882,22 @@ class value_iterator {
 
   friend class document;
   friend class object;
+  friend class object_iterator;
   friend class array;
   friend class value;
   friend class field;
 }; // value_iterator
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::value_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::value_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -49351,9 +87905,9 @@ struct simdjson_result : public fallback::im
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
-/* end file simdjson/generic/ondemand/value_iterator.h for fallback */
-/* including simdjson/generic/ondemand/value.h for fallback: #include "simdjson/generic/ondemand/value.h" */
-/* begin file simdjson/generic/ondemand/value.h for fallback */
+/* end file simdjson/generic/ondemand/value_iterator.h for haswell */
+/* including simdjson/generic/ondemand/value.h for haswell: #include "simdjson/generic/ondemand/value.h" */
+/* begin file simdjson/generic/ondemand/value.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -49369,7 +87923,7 @@ struct simdjson_result : public fallback::im
 
 namespace simdjson {
 
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 /**
  * An ephemeral JSON value returned during iteration. It is only valid for as long as you do
@@ -50083,20 +88637,20 @@ class value {
 };
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::value &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::value &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result get_array() noexcept;
-  simdjson_inline simdjson_result get_object() noexcept;
+  simdjson_inline simdjson_result get_array() noexcept;
+  simdjson_inline simdjson_result get_object() noexcept;
 
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
@@ -50108,7 +88662,7 @@ struct simdjson_result : public fallback::implementat
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
@@ -50119,20 +88673,20 @@ struct simdjson_result : public fallback::implementat
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator fallback::ondemand::array() noexcept(false);
-  simdjson_inline operator fallback::ondemand::object() noexcept(false);
+  simdjson_inline operator haswell::ondemand::array() noexcept(false);
+  simdjson_inline operator haswell::ondemand::object() noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator fallback::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator haswell::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
 
   /**
    * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
@@ -50156,9 +88710,9 @@ struct simdjson_result : public fallback::implementat
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field(const char *key) noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field(const char *key) noexcept;
 
   /**
    * Look up a field by name on an object, without regard to key order.
@@ -50170,7 +88724,7 @@ struct simdjson_result : public fallback::implementat
    * in question is large. The fact that the extra code is there also bumps the executable size.
    *
    * We default operator[] on find_field_unordered() for convenience.
-   * It is the defaul because it would be highly surprising (and hard to debug) if the
+   * It is the default because it would be highly surprising (and hard to debug) if the
    * default behavior failed to look up a field just because it was in the wrong order--and many
    * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
    *
@@ -50180,14 +88734,14 @@ struct simdjson_result : public fallback::implementat
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](const char *key) noexcept;
-  simdjson_result operator[](int) noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](const char *key) noexcept;
+  simdjson_result operator[](int) noexcept = delete;
 
   /**
    * Get the type of this JSON value. It does not validate or consume the value.
@@ -50211,13 +88765,13 @@ struct simdjson_result : public fallback::implementat
    * better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just
    * let it throw an exception).
    */
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
 
   /** @copydoc simdjson_inline std::string_view value::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
@@ -50227,17 +88781,17 @@ struct simdjson_result : public fallback::implementat
   simdjson_inline simdjson_result current_location() noexcept;
   /** @copydoc simdjson_inline int32_t current_depth() const noexcept */
   simdjson_inline simdjson_result current_depth() const noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_H
-/* end file simdjson/generic/ondemand/value.h for fallback */
-/* including simdjson/generic/ondemand/logger.h for fallback: #include "simdjson/generic/ondemand/logger.h" */
-/* begin file simdjson/generic/ondemand/logger.h for fallback */
+/* end file simdjson/generic/ondemand/value.h for haswell */
+/* including simdjson/generic/ondemand/logger.h for haswell: #include "simdjson/generic/ondemand/logger.h" */
+/* begin file simdjson/generic/ondemand/logger.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -50246,7 +88800,7 @@ struct simdjson_result : public fallback::implementat
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 // Logging should be free unless SIMDJSON_VERBOSE_LOGGING is set. Importantly, it is critical
@@ -50292,13 +88846,13 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 
 } // namespace logger
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
-/* end file simdjson/generic/ondemand/logger.h for fallback */
-/* including simdjson/generic/ondemand/token_iterator.h for fallback: #include "simdjson/generic/ondemand/token_iterator.h" */
-/* begin file simdjson/generic/ondemand/token_iterator.h for fallback */
+/* end file simdjson/generic/ondemand/logger.h for haswell */
+/* including simdjson/generic/ondemand/token_iterator.h for haswell: #include "simdjson/generic/ondemand/token_iterator.h" */
+/* begin file simdjson/generic/ondemand/token_iterator.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -50309,7 +88863,7 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 /**
@@ -50440,15 +88994,15 @@ class token_iterator {
 };
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::token_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::token_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -50457,9 +89011,9 @@ struct simdjson_result : public fallback::im
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
-/* end file simdjson/generic/ondemand/token_iterator.h for fallback */
-/* including simdjson/generic/ondemand/json_iterator.h for fallback: #include "simdjson/generic/ondemand/json_iterator.h" */
-/* begin file simdjson/generic/ondemand/json_iterator.h for fallback */
+/* end file simdjson/generic/ondemand/token_iterator.h for haswell */
+/* including simdjson/generic/ondemand/json_iterator.h for haswell: #include "simdjson/generic/ondemand/json_iterator.h" */
+/* begin file simdjson/generic/ondemand/json_iterator.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -50470,7 +89024,7 @@ struct simdjson_result : public fallback::im
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 /**
@@ -50781,15 +89335,15 @@ class json_iterator {
 }; // json_iterator
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::json_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::json_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
 
   simdjson_inline simdjson_result() noexcept = default;
@@ -50798,9 +89352,9 @@ struct simdjson_result : public fallback::imp
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
-/* end file simdjson/generic/ondemand/json_iterator.h for fallback */
-/* including simdjson/generic/ondemand/json_type.h for fallback: #include "simdjson/generic/ondemand/json_type.h" */
-/* begin file simdjson/generic/ondemand/json_type.h for fallback */
+/* end file simdjson/generic/ondemand/json_iterator.h for haswell */
+/* including simdjson/generic/ondemand/json_type.h for haswell: #include "simdjson/generic/ondemand/json_type.h" */
+/* begin file simdjson/generic/ondemand/json_type.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -50811,7 +89365,7 @@ struct simdjson_result : public fallback::imp
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 /**
@@ -50945,15 +89499,15 @@ inline std::ostream& operator<<(std::ostream& out, simdjson_result &t
 #endif
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::json_type &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::json_type &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -50962,9 +89516,9 @@ struct simdjson_result : public fallback::impleme
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
-/* end file simdjson/generic/ondemand/json_type.h for fallback */
-/* including simdjson/generic/ondemand/raw_json_string.h for fallback: #include "simdjson/generic/ondemand/raw_json_string.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string.h for fallback */
+/* end file simdjson/generic/ondemand/json_type.h for haswell */
+/* including simdjson/generic/ondemand/raw_json_string.h for haswell: #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -50974,7 +89528,7 @@ struct simdjson_result : public fallback::impleme
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 /**
@@ -51156,30 +89710,30 @@ simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_js
 
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::raw_json_string &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::raw_json_string &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
 
   simdjson_inline simdjson_result raw() const noexcept;
   simdjson_inline char operator[](size_t) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape(fallback::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(fallback::ondemand::json_iterator &iter) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape(haswell::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(haswell::ondemand::json_iterator &iter) const noexcept;
 };
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
-/* end file simdjson/generic/ondemand/raw_json_string.h for fallback */
-/* including simdjson/generic/ondemand/parser.h for fallback: #include "simdjson/generic/ondemand/parser.h" */
-/* begin file simdjson/generic/ondemand/parser.h for fallback */
+/* end file simdjson/generic/ondemand/raw_json_string.h for haswell */
+/* including simdjson/generic/ondemand/parser.h for haswell: #include "simdjson/generic/ondemand/parser.h" */
+/* begin file simdjson/generic/ondemand/parser.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -51192,7 +89746,7 @@ struct simdjson_result : public fallback::i
 #include 
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 /**
@@ -51592,15 +90146,15 @@ class parser {
 };
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::parser &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::parser &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -51608,319 +90162,11 @@ struct simdjson_result : public fallback::implementa
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_H
-/* end file simdjson/generic/ondemand/parser.h for fallback */
-
-// JSON builder - needed for extract_into functionality
-/* including simdjson/generic/ondemand/json_string_builder.h for fallback: #include "simdjson/generic/ondemand/json_string_builder.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder.h for fallback */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace fallback {
-namespace builder {
-  class string_builder;
-}}
-
-template 
-struct has_custom_serialization : std::false_type {};
-
-inline constexpr struct serialize_tag {
-  template 
-  constexpr void operator()(fallback::builder::string_builder& b, T&& obj) const{
-    return tag_invoke(*this, b, std::forward(obj));
-  }
-
-
-} serialize{};
-template 
-struct has_custom_serialization(), std::declval()))
->> : std::true_type {};
-
-template 
-constexpr bool require_custom_serialization = has_custom_serialization::value;
-#else
-struct has_custom_serialization : std::false_type {};
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace fallback {
-namespace builder {
-/**
- * A builder for JSON strings representing documents. This is a low-level
- * builder that is not meant to be used directly by end-users. Though it
- * supports atomic types (Booleans, strings), it does not support composed
- * types (arrays and objects).
- *
- * Ultimately, this class can support kernel-specific optimizations. E.g.,
- * it may make use of SIMD instructions to escape strings faster.
- */
-class string_builder {
-public:
-  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
-
-  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
-
-  /**
-   * Append number (includes Booleans). Booleans are mapped to the strings
-   * false and true. Numbers are converted to strings abiding by the JSON standard.
-   * Floating-point numbers are converted to the shortest string that 'correctly'
-   * represents the number.
-   */
-  template::value>::type>
-  simdjson_inline void append(number_type v) noexcept;
-
-  /**
-   * Append character c.
-   */
-  simdjson_inline void append(char c)  noexcept;
-
-  /**
-   * Append the string 'null'.
-   */
-  simdjson_inline void append_null()  noexcept;
-
-  /**
-   * Clear the content.
-   */
-  simdjson_inline void clear()  noexcept;
-
-  /**
-   * Append the std::string_view, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
-
-  /**
-   * Append the std::string_view surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void escape_and_append_with_quotes()  noexcept;
-#endif
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
-
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
-
-  /**
-   * Append the C string directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *c)  noexcept;
-
-  /**
-   * Append "{" to the buffer.
-   */
-  simdjson_inline void start_object()  noexcept;
-
-  /**
-   * Append "}" to the buffer.
-   */
-  simdjson_inline void end_object()  noexcept;
-
-  /**
-   * Append "[" to the buffer.
-   */
-  simdjson_inline void start_array()  noexcept;
-
-  /**
-   * Append "]" to the buffer.
-   */
-  simdjson_inline void end_array()  noexcept;
-
-  /**
-   * Append "," to the buffer.
-   */
-  simdjson_inline void append_comma()  noexcept;
-
-  /**
-   * Append ":" to the buffer.
-   */
-  simdjson_inline void append_colon()  noexcept;
-
-  /**
-   * Append a key-value pair to the buffer.
-   * The key is escaped and surrounded by double quotes.
-   * The value is escaped if it is a string.
-   */
-  template
-  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void append_key_value(value_type value) noexcept;
-
-  // Support for optional types (std::optional, etc.)
-  template 
-  requires(!require_custom_serialization)
-  simdjson_inline void append(const T &opt);
-
-  template 
-  requires(require_custom_serialization)
-  simdjson_inline void append(T &&val);
-
-  // Support for string-like types
-  template 
-  requires(std::is_convertible::value ||
-  std::is_same::value )
-  simdjson_inline void append(const T &value);
-#endif
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-  // Support for range-based appending (std::ranges::view, etc.)
-  template 
-requires (!std::is_convertible::value && !require_custom_serialization)
-  simdjson_inline void append(const R &range) noexcept;
-#endif
-  /**
-   * Append the std::string_view directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(std::string_view input)  noexcept;
-
-  /**
-   * Append len characters from str.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
-#if SIMDJSON_EXCEPTIONS
-  /**
-   * Creates an std::string from the written JSON buffer.
-   * Throws if memory allocation failed
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string() const noexcept(false);
-
-  /**
-   * Creates an std::string_view from the written JSON buffer.
-   * Throws if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
-#endif
-
-  /**
-   * Returns a view on the written JSON buffer. Returns an error
-   * if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result view() const noexcept;
-
-  /**
-   * Appends the null character to the buffer and returns
-   * a pointer to the beginning of the written JSON buffer.
-   * Returns an error if memory allocation failed.
-   * The result is null-terminated.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result c_str() noexcept;
-
-  /**
-   * Return true if the content is valid UTF-8.
-   */
-  simdjson_inline bool validate_unicode() const noexcept;
-
-  /**
-   * Returns the current size of the written JSON buffer.
-   * If an error occurred, returns 0.
-   */
-  simdjson_inline size_t size() const noexcept;
-
-private:
-  /**
-   * Returns true if we can write at least upcoming_bytes bytes.
-   * The underlying buffer is reallocated if needed. It is designed
-   * to be called before writing to the buffer. It should be fast.
-   */
-  simdjson_inline bool capacity_check(size_t upcoming_bytes);
-
-  /**
-   * Grow the buffer to at least desired_capacity bytes.
-   * If the allocation fails, is_valid is set to false. We expect
-   * that this function would not be repeatedly called.
-   */
-  simdjson_inline void grow_buffer(size_t desired_capacity);
-
-  /**
-   * We use this helper function to make sure that is_valid is kept consistent.
-   */
-  simdjson_inline void set_valid(bool valid) noexcept;
-
-  std::unique_ptr buffer{};
-  size_t position{0};
-  size_t capacity{0};
-  bool is_valid{true};
-};
-
-
-
-}
-}
-
-
-#if !SIMDJSON_STATIC_REFLECTION
-// fallback implementation until we have static reflection
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::fallback::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view s;
-  auto e = b.view().get(s);
-  if(e) { return e; }
-  return std::string(s);
-}
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::fallback::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view sv;
-  auto e = b.view().get(sv);
-  if(e) { return e; }
-  s.assign(sv.data(), sv.size());
-  return simdjson::SUCCESS;
-}
-#endif
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
-/* end file simdjson/generic/ondemand/json_string_builder.h for fallback */
+/* end file simdjson/generic/ondemand/parser.h for haswell */
 
 // All other declarations
-/* including simdjson/generic/ondemand/array.h for fallback: #include "simdjson/generic/ondemand/array.h" */
-/* begin file simdjson/generic/ondemand/array.h for fallback */
+/* including simdjson/generic/ondemand/array.h for haswell: #include "simdjson/generic/ondemand/array.h" */
+/* begin file simdjson/generic/ondemand/array.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -51932,7 +90178,7 @@ simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t i
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 /**
@@ -52152,27 +90398,27 @@ class array {
 };
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::array &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::array &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
   inline simdjson_result count_elements() & noexcept;
   inline simdjson_result is_empty() & noexcept;
   inline simdjson_result reset() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   simdjson_inline simdjson_result raw_json() noexcept;
 #if SIMDJSON_SUPPORTS_CONCEPTS
   // TODO: move this code into object-inl.h
@@ -52180,7 +90426,7 @@ struct simdjson_result : public fallback::implementat
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -52188,7 +90434,7 @@ struct simdjson_result : public fallback::implementat
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -52201,13 +90447,14 @@ struct simdjson_result : public fallback::implementat
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
-/* end file simdjson/generic/ondemand/array.h for fallback */
-/* including simdjson/generic/ondemand/array_iterator.h for fallback: #include "simdjson/generic/ondemand/array_iterator.h" */
-/* begin file simdjson/generic/ondemand/array_iterator.h for fallback */
+/* end file simdjson/generic/ondemand/array.h for haswell */
+/* including simdjson/generic/ondemand/array_iterator.h for haswell: #include "simdjson/generic/ondemand/array_iterator.h" */
+/* begin file simdjson/generic/ondemand/array_iterator.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include  */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
@@ -52215,7 +90462,7 @@ struct simdjson_result : public fallback::implementat
 
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 /**
@@ -52223,11 +90470,17 @@ namespace ondemand {
  *
  * This is an input_iterator, meaning:
  * - It is forward-only
- * - * must be called exactly once per element.
+ * - * must be called at most once per element.
  * - ++ must be called exactly once in between each * (*, ++, *, ++, * ...)
  */
 class array_iterator {
 public:
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
   /** Create a new, invalid array iterator. */
   simdjson_inline array_iterator() noexcept = default;
 
@@ -52271,6 +90524,9 @@ class array_iterator {
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   value_iterator iter{};
 
   simdjson_inline array_iterator(const value_iterator &iter) noexcept;
@@ -52281,14 +90537,20 @@ class array_iterator {
 };
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
-  simdjson_inline simdjson_result(fallback::ondemand::array_iterator &&value) noexcept; ///< @private
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
+  simdjson_inline simdjson_result(haswell::ondemand::array_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -52296,10 +90558,10 @@ struct simdjson_result : public fallback::im
   // Iterator interface
   //
 
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 };
@@ -52307,9 +90569,9 @@ struct simdjson_result : public fallback::im
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
-/* end file simdjson/generic/ondemand/array_iterator.h for fallback */
-/* including simdjson/generic/ondemand/document.h for fallback: #include "simdjson/generic/ondemand/document.h" */
-/* begin file simdjson/generic/ondemand/document.h for fallback */
+/* end file simdjson/generic/ondemand/array_iterator.h for haswell */
+/* including simdjson/generic/ondemand/document.h for haswell: #include "simdjson/generic/ondemand/document.h" */
+/* begin file simdjson/generic/ondemand/document.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -52323,7 +90585,7 @@ struct simdjson_result : public fallback::im
 
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 /**
@@ -53275,21 +91537,21 @@ class document_reference {
   document *doc{nullptr};
 };
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::document &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::document &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -53300,9 +91562,9 @@ struct simdjson_result : public fallback::implemen
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -53312,33 +91574,33 @@ struct simdjson_result : public fallback::implemen
   template simdjson_inline error_code get(T &out) && noexcept;
 #if SIMDJSON_EXCEPTIONS
 
-  using fallback::implementation_simdjson_result_base::operator*;
-  using fallback::implementation_simdjson_result_base::operator->;
-  template ::value == false>::type>
+  using haswell::implementation_simdjson_result_base::operator*;
+  using haswell::implementation_simdjson_result_base::operator->;
+  template ::value == false>::type>
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator fallback::ondemand::array() & noexcept(false);
-  simdjson_inline operator fallback::ondemand::object() & noexcept(false);
+  simdjson_inline operator haswell::ondemand::array() & noexcept(false);
+  simdjson_inline operator haswell::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator fallback::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator haswell::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator fallback::ondemand::value() noexcept(false);
+  simdjson_inline operator haswell::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
@@ -53346,14 +91608,14 @@ struct simdjson_result : public fallback::implemen
   simdjson_inline bool at_end() const noexcept;
   simdjson_inline bool is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -53369,14 +91631,14 @@ struct simdjson_result : public fallback::implemen
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::document_reference value, error_code error) noexcept;
+  simdjson_inline simdjson_result(haswell::ondemand::document_reference value, error_code error) noexcept;
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -53387,9 +91649,9 @@ struct simdjson_result : public fallback
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -53400,43 +91662,43 @@ struct simdjson_result : public fallback
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator fallback::ondemand::array() & noexcept(false);
-  simdjson_inline operator fallback::ondemand::object() & noexcept(false);
+  simdjson_inline operator haswell::ondemand::array() & noexcept(false);
+  simdjson_inline operator haswell::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator fallback::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator haswell::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator fallback::ondemand::value() noexcept(false);
+  simdjson_inline operator haswell::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
   simdjson_inline simdjson_result current_depth() const noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document_reference::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -53448,9 +91710,9 @@ struct simdjson_result : public fallback
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
-/* end file simdjson/generic/ondemand/document.h for fallback */
-/* including simdjson/generic/ondemand/document_stream.h for fallback: #include "simdjson/generic/ondemand/document_stream.h" */
-/* begin file simdjson/generic/ondemand/document_stream.h for fallback */
+/* end file simdjson/generic/ondemand/document.h for haswell */
+/* including simdjson/generic/ondemand/document_stream.h for haswell: #include "simdjson/generic/ondemand/document_stream.h" */
+/* begin file simdjson/generic/ondemand/document_stream.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -53468,7 +91730,7 @@ struct simdjson_result : public fallback
 #endif
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -53781,14 +92043,14 @@ class document_stream {
 };  // document_stream
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::document_stream &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::document_stream &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -53796,9 +92058,9 @@ struct simdjson_result : public fallback::i
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
-/* end file simdjson/generic/ondemand/document_stream.h for fallback */
-/* including simdjson/generic/ondemand/field.h for fallback: #include "simdjson/generic/ondemand/field.h" */
-/* begin file simdjson/generic/ondemand/field.h for fallback */
+/* end file simdjson/generic/ondemand/document_stream.h for haswell */
+/* including simdjson/generic/ondemand/field.h for haswell: #include "simdjson/generic/ondemand/field.h" */
+/* begin file simdjson/generic/ondemand/field.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -53810,7 +92072,7 @@ struct simdjson_result : public fallback::i
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 /**
@@ -53888,33 +92150,33 @@ class field : public std::pair {
 };
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::field &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::field &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
   simdjson_inline simdjson_result unescaped_key(bool allow_replacement = false) noexcept;
   template
   simdjson_inline error_code unescaped_key(string_type &receiver, bool allow_replacement = false) noexcept;
-  simdjson_inline simdjson_result key() noexcept;
+  simdjson_inline simdjson_result key() noexcept;
   simdjson_inline simdjson_result key_raw_json_token() noexcept;
   simdjson_inline simdjson_result escaped_key() noexcept;
-  simdjson_inline simdjson_result value() noexcept;
+  simdjson_inline simdjson_result value() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_H
-/* end file simdjson/generic/ondemand/field.h for fallback */
-/* including simdjson/generic/ondemand/object.h for fallback: #include "simdjson/generic/ondemand/object.h" */
-/* begin file simdjson/generic/ondemand/object.h for fallback */
+/* end file simdjson/generic/ondemand/field.h for haswell */
+/* including simdjson/generic/ondemand/object.h for haswell: #include "simdjson/generic/ondemand/object.h" */
+/* begin file simdjson/generic/ondemand/object.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -53929,7 +92191,7 @@ struct simdjson_result : public fallback::implementat
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 /**
@@ -53944,6 +92206,13 @@ class object {
    */
   simdjson_inline object() noexcept = default;
 
+  /**
+   * Get an iterator to the start of the object. We recommend using a range-based for loop.
+   *
+   * Using the iterator directly is also possible but error-prone and discouraged. In particular,
+   * you must dereference the iterator exactly once per iteration (before calling '++').
+   * Doing otherwise is unsafe and may lead to errors. You are responsible for ensuring
+   */
   simdjson_inline simdjson_result begin() noexcept;
   simdjson_inline simdjson_result end() noexcept;
   /**
@@ -54216,29 +92485,29 @@ class object {
 };
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::object &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::object &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   inline simdjson_result reset() noexcept;
   inline simdjson_result is_empty() noexcept;
   inline simdjson_result count_fields() & noexcept;
@@ -54249,7 +92518,7 @@ struct simdjson_result : public fallback::implementa
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -54257,7 +92526,7 @@ struct simdjson_result : public fallback::implementa
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -54280,9 +92549,9 @@ struct simdjson_result : public fallback::implementa
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
-/* end file simdjson/generic/ondemand/object.h for fallback */
-/* including simdjson/generic/ondemand/object_iterator.h for fallback: #include "simdjson/generic/ondemand/object_iterator.h" */
-/* begin file simdjson/generic/ondemand/object_iterator.h for fallback */
+/* end file simdjson/generic/ondemand/object.h for haswell */
+/* including simdjson/generic/ondemand/object_iterator.h for haswell: #include "simdjson/generic/ondemand/object_iterator.h" */
+/* begin file simdjson/generic/ondemand/object_iterator.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -54293,7 +92562,7 @@ struct simdjson_result : public fallback::implementa
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 class object_iterator {
@@ -54317,9 +92586,14 @@ class object_iterator {
   // Assumes it's being compared with the end. true if depth >= iter->depth.
   simdjson_inline bool operator!=(const object_iterator &) const noexcept;
   // Checks for ']' and ','
+  // YOU MUST NOT CALL THIS IF operator* YIELDED AN ERROR.
+  // YOU MUST NOT CALL THIS WITHOUT A CORRESPONDING operator* CALL.
   simdjson_inline object_iterator &operator++() noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   /**
    * The underlying JSON iterator.
    *
@@ -54334,15 +92608,15 @@ class object_iterator {
 };
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public fallback::implementation_simdjson_result_base {
+struct simdjson_result : public haswell::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(fallback::ondemand::object_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(haswell::ondemand::object_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -54351,21 +92625,21 @@ struct simdjson_result : public fallback::i
   //
 
   // Reads key and value, yielding them to the user.
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
   // Assumes it's being compared with the end. true if depth < iter->depth.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
   // Assumes it's being compared with the end. true if depth >= iter->depth.
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
   // Checks for ']' and ','
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
-/* end file simdjson/generic/ondemand/object_iterator.h for fallback */
-/* including simdjson/generic/ondemand/serialization.h for fallback: #include "simdjson/generic/ondemand/serialization.h" */
-/* begin file simdjson/generic/ondemand/serialization.h for fallback */
+/* end file simdjson/generic/ondemand/object_iterator.h for haswell */
+/* including simdjson/generic/ondemand/serialization.h for haswell: #include "simdjson/generic/ondemand/serialization.h" */
+/* begin file simdjson/generic/ondemand/serialization.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -54379,30 +92653,30 @@ namespace simdjson {
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(fallback::ondemand::document& x) noexcept;
+inline simdjson_result to_json_string(haswell::ondemand::document& x) noexcept;
 /**
  * Create a string-view instance out of a value instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. The value must
  * not have been accessed previously. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(fallback::ondemand::value& x) noexcept;
+inline simdjson_result to_json_string(haswell::ondemand::value& x) noexcept;
 /**
  * Create a string-view instance out of an object instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(fallback::ondemand::object& x) noexcept;
+inline simdjson_result to_json_string(haswell::ondemand::object& x) noexcept;
 /**
  * Create a string-view instance out of an array instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(fallback::ondemand::array& x) noexcept;
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(haswell::ondemand::array& x) noexcept;
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
 
 #if SIMDJSON_STATIC_REFLECTION
 /**
@@ -54410,10 +92684,10 @@ inline simdjson_result to_json_string(simdjson_result
-  requires(!std::same_as &&
-           !std::same_as &&
-           !std::same_as &&
-           !std::same_as)
+  requires(!std::same_as &&
+           !std::same_as &&
+           !std::same_as &&
+           !std::same_as)
 inline std::string to_json_string(const T& obj);
 #endif
 
@@ -54426,7 +92700,7 @@ inline std::string to_json_string(const T& obj);
  * Credit: @madhur4127
  * See https://github.com/simdjson/simdjson/issues/1768
  */
-namespace simdjson { namespace fallback { namespace ondemand {
+namespace simdjson { namespace haswell { namespace ondemand {
 
 /**
  * Print JSON to an output stream.  It does not
@@ -54436,9 +92710,9 @@ namespace simdjson { namespace fallback { namespace ondemand {
  * @param value The element.
  * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
  */
-inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::value x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::value x);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -54448,9 +92722,9 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -54460,13 +92734,13 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
-inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::document_reference& value);
+inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::document_reference& value);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -54476,18 +92750,18 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
-}}} // namespace simdjson::fallback::ondemand
+}}} // namespace simdjson::haswell::ondemand
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
-/* end file simdjson/generic/ondemand/serialization.h for fallback */
+/* end file simdjson/generic/ondemand/serialization.h for haswell */
 
 // Deserialization for standard types
-/* including simdjson/generic/ondemand/std_deserialize.h for fallback: #include "simdjson/generic/ondemand/std_deserialize.h" */
-/* begin file simdjson/generic/ondemand/std_deserialize.h for fallback */
+/* including simdjson/generic/ondemand/std_deserialize.h for haswell: #include "simdjson/generic/ondemand/std_deserialize.h" */
+/* begin file simdjson/generic/ondemand/std_deserialize.h for haswell */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -54586,8 +92860,8 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified type inside the container must default constructible.");
-  fallback::ondemand::array arr;
-  if constexpr (std::is_same_v, fallback::ondemand::array>) {
+  haswell::ondemand::array arr;
+  if constexpr (std::is_same_v, haswell::ondemand::array>) {
     arr = val;
   } else {
     SIMDJSON_TRY(val.get_array().get(arr));
@@ -54631,7 +92905,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified value type inside the container must default constructible.");
- fallback::ondemand::object obj;
+ haswell::ondemand::object obj;
  SIMDJSON_TRY(val.get_object().get(obj));
  for (auto field : obj) {
     std::string_view key;
@@ -54649,7 +92923,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
 }
 
 template 
-error_code tag_invoke(deserialize_tag, fallback::ondemand::object &obj, T &out) noexcept {
+error_code tag_invoke(deserialize_tag, haswell::ondemand::object &obj, T &out) noexcept {
   using value_type = typename std::remove_cvref_t::mapped_type;
 
   out.clear();
@@ -54657,7 +92931,7 @@ error_code tag_invoke(deserialize_tag, fallback::ondemand::object &obj, T &out)
     std::string_view key;
     SIMDJSON_TRY(field.unescaped_key().get(key));
 
-    fallback::ondemand::value value_obj;
+    haswell::ondemand::value value_obj;
     SIMDJSON_TRY(field.value().get(value_obj));
 
     value_type this_value;
@@ -54668,22 +92942,22 @@ error_code tag_invoke(deserialize_tag, fallback::ondemand::object &obj, T &out)
 }
 
 template 
-error_code tag_invoke(deserialize_tag, fallback::ondemand::value &val, T &out) noexcept {
-  fallback::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, haswell::ondemand::value &val, T &out) noexcept {
+  haswell::ondemand::object obj;
   SIMDJSON_TRY(val.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, fallback::ondemand::document &doc, T &out) noexcept {
-  fallback::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, haswell::ondemand::document &doc, T &out) noexcept {
+  haswell::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, fallback::ondemand::document_reference &doc, T &out) noexcept {
-  fallback::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, haswell::ondemand::document_reference &doc, T &out) noexcept {
+  haswell::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
@@ -54760,8 +93034,8 @@ constexpr bool user_defined_type = (std::is_class_v
 template 
   requires(user_defined_type && std::is_class_v)
 error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept {
-  fallback::ondemand::object obj;
-  if constexpr (std::is_same_v, fallback::ondemand::object>) {
+  haswell::ondemand::object obj;
+  if constexpr (std::is_same_v, haswell::ondemand::object>) {
     obj = val;
   } else {
     SIMDJSON_TRY(val.get_object().get(obj));
@@ -55070,11 +93344,11 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
-/* end file simdjson/generic/ondemand/std_deserialize.h for fallback */
+/* end file simdjson/generic/ondemand/std_deserialize.h for haswell */
 
 // Inline definitions
-/* including simdjson/generic/ondemand/array-inl.h for fallback: #include "simdjson/generic/ondemand/array-inl.h" */
-/* begin file simdjson/generic/ondemand/array-inl.h for fallback */
+/* including simdjson/generic/ondemand/array-inl.h for haswell: #include "simdjson/generic/ondemand/array-inl.h" */
+/* begin file simdjson/generic/ondemand/array-inl.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -55089,7 +93363,7 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 //
@@ -55318,68 +93592,68 @@ simdjson_inline simdjson_result array::at(size_t index) noexcept {
 }
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  fallback::ondemand::array &&value
+simdjson_inline simdjson_result::simdjson_result(
+  haswell::ondemand::array &&value
 ) noexcept
-  : implementation_simdjson_result_base(
-      std::forward(value)
+  : implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept
-  : implementation_simdjson_result_base(error)
+  : implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
-simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
-simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
-/* end file simdjson/generic/ondemand/array-inl.h for fallback */
-/* including simdjson/generic/ondemand/array_iterator-inl.h for fallback: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/array_iterator-inl.h for fallback */
+/* end file simdjson/generic/ondemand/array-inl.h for haswell */
+/* including simdjson/generic/ondemand/array_iterator-inl.h for haswell: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/array_iterator-inl.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -55391,7 +93665,7 @@ simdjson_inline  simdjson_result simdjson_result array_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   SIMDJSON_ASSUME(!has_been_referenced);
+   has_been_referenced = true;
+#endif
   if (iter.error()) { iter.abandon(); return iter.error(); }
   return value(iter.child());
 }
@@ -55409,6 +93687,9 @@ simdjson_inline bool array_iterator::operator!=(const array_iterator &) const no
   return iter.is_open();
 }
 simdjson_inline array_iterator &array_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   has_been_referenced = false;
+#endif
   error_code error;
   // PERF NOTE this is a safety rail ... users should exit loops as soon as they receive an error, so we'll never get here.
   // However, it does not seem to make a perf difference, so we add it out of an abundance of caution.
@@ -55422,50 +93703,50 @@ simdjson_inline bool array_iterator::at_end() const noexcept {
   return iter.at_end();
 }
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  fallback::ondemand::array_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  haswell::ondemand::array_iterator &&value
 ) noexcept
-  : fallback::implementation_simdjson_result_base(std::forward(value))
+  : haswell::implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : fallback::implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : haswell::implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++(first);
   return *this;
 }
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   return !first.iter.is_valid() || first.at_end();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/array_iterator-inl.h for fallback */
-/* including simdjson/generic/ondemand/value-inl.h for fallback: #include "simdjson/generic/ondemand/value-inl.h" */
-/* begin file simdjson/generic/ondemand/value-inl.h for fallback */
+/* end file simdjson/generic/ondemand/array_iterator-inl.h for haswell */
+/* including simdjson/generic/ondemand/value-inl.h for haswell: #include "simdjson/generic/ondemand/value-inl.h" */
+/* begin file simdjson/generic/ondemand/value-inl.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -55481,7 +93762,7 @@ simdjson_inline bool simdjson_result::at_end
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 simdjson_inline value::value(const value_iterator &_iter) noexcept
@@ -55778,240 +94059,240 @@ inline simdjson_result> value::at_path_with_wildcard(std::str
 }
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  fallback::ondemand::value &&value
+simdjson_inline simdjson_result::simdjson_result(
+  haswell::ondemand::value &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   if (error()) { return error(); }
   return {};
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
 
-simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
-template<> simdjson_inline error_code simdjson_result::get(fallback::ondemand::value &out) noexcept {
+template<> simdjson_inline error_code simdjson_result::get(haswell::ondemand::value &out) noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 
-template simdjson_inline simdjson_result simdjson_result::get() noexcept {
+template simdjson_inline simdjson_result simdjson_result::get() noexcept {
   if (error()) { return error(); }
   return first.get();
 }
-template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
+template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
+template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
   if (error()) { return error(); }
   return std::move(first);
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator fallback::ondemand::array() noexcept(false) {
+simdjson_inline simdjson_result::operator haswell::ondemand::array() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator fallback::ondemand::object() noexcept(false) {
+simdjson_inline simdjson_result::operator haswell::ondemand::object() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator fallback::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator haswell::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
+simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(
+simdjson_inline simdjson_result simdjson_result::at_pointer(
     std::string_view json_pointer) noexcept {
   if (error()) {
       return error();
@@ -56019,7 +94300,7 @@ simdjson_inline simdjson_result simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -56027,7 +94308,7 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(
+inline simdjson_result> simdjson_result::at_path_with_wildcard(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -56038,9 +94319,9 @@ inline simdjson_result> simdjson_result> simdjson_result::simdjson_result(
-  fallback::ondemand::document &&value
+simdjson_inline simdjson_result::simdjson_result(
+  haswell::ondemand::document &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(
+    implementation_simdjson_result_base(
       error
     )
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
-template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
+template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first);
+  return std::forward(first);
 }
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(fallback::ondemand::document &out) & noexcept = delete;
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(fallback::ondemand::document &out) && noexcept {
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(haswell::ondemand::document &out) & noexcept = delete;
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(haswell::ondemand::document &out) && noexcept {
   if (error()) { return error(); }
-  out = std::forward(first);
+  out = std::forward(first);
   return SUCCESS;
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 
-simdjson_inline bool simdjson_result::is_negative() noexcept {
+simdjson_inline bool simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 
 
 #if SIMDJSON_EXCEPTIONS
-template ::value == false>::type>
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+template ::value == false>::type>
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator fallback::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator haswell::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator fallback::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator haswell::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator fallback::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator haswell::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator fallback::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator haswell::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   if (error()) { return error(); }
   return first.at_end();
 }
 
 
-simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
+simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
 
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
@@ -56738,7 +95019,7 @@ simdjson_inline simdjson_result> simdjson
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -56748,7 +95029,7 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result::simdjson_result(fallback::ondemand::document_reference value, error_code error)
-  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
+simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::document_reference value, error_code error)
+  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
 
 
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(fallback::ondemand::document_reference &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(haswell::ondemand::document_reference &out) & noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(fallback::ondemand::document_reference &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(haswell::ondemand::document_reference &out) && noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+simdjson_inline simdjson_result::operator T() noexcept(false) {
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator fallback::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator haswell::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator fallback::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator haswell::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator fallback::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator haswell::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator fallback::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator haswell::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
@@ -57095,7 +95376,7 @@ simdjson_inline simdjson_result> simdjson
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -57103,9 +95384,9 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -57527,22 +95808,22 @@ inline void document_stream::start_stage1_thread() noexcept {
 #endif // SIMDJSON_THREADS_ENABLED
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
-  fallback::ondemand::document_stream &&value
+simdjson_inline simdjson_result::simdjson_result(
+  haswell::ondemand::document_stream &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
@@ -57550,9 +95831,9 @@ simdjson_inline simdjson_result::simdjson_r
 }
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H
-/* end file simdjson/generic/ondemand/document_stream-inl.h for fallback */
-/* including simdjson/generic/ondemand/field-inl.h for fallback: #include "simdjson/generic/ondemand/field-inl.h" */
-/* begin file simdjson/generic/ondemand/field-inl.h for fallback */
+/* end file simdjson/generic/ondemand/document_stream-inl.h for haswell */
+/* including simdjson/generic/ondemand/field-inl.h for haswell: #include "simdjson/generic/ondemand/field-inl.h" */
+/* begin file simdjson/generic/ondemand/field-inl.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -57564,7 +95845,7 @@ simdjson_inline simdjson_result::simdjson_r
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 // clang 6 does not think the default constructor can be noexcept, so we make it explicit
@@ -57628,53 +95909,53 @@ simdjson_inline value field::value() && noexcept {
 }
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  fallback::ondemand::field &&value
+simdjson_inline simdjson_result::simdjson_result(
+  haswell::ondemand::field &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::key() noexcept {
+simdjson_inline simdjson_result simdjson_result::key() noexcept {
   if (error()) { return error(); }
   return first.key();
 }
 
-simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.key_raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
+simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
   if (error()) { return error(); }
   return first.escaped_key();
 }
 
-simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(allow_replacement);
 }
 
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(receiver, allow_replacement);
 }
 
-simdjson_inline simdjson_result simdjson_result::value() noexcept {
+simdjson_inline simdjson_result simdjson_result::value() noexcept {
   if (error()) { return error(); }
   return std::move(first.value());
 }
@@ -57682,9 +95963,9 @@ simdjson_inline simdjson_result simdjson_result simdjson_result= &parser->implementation->structural_indexes[0] );
   SIMDJSON_ASSUME( position < &parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] );
-#else
-  (void)position; // Suppress unused parameter warning
 #endif
 }
 
@@ -58045,7 +96325,11 @@ simdjson_inline token_position json_iterator::position() const noexcept {
 simdjson_inline simdjson_result json_iterator::unescape(raw_json_string in, bool allow_replacement) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape(in, _string_buf_loc, allow_replacement);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape(in, _string_buf_loc, allow_replacement);
@@ -58055,7 +96339,11 @@ simdjson_inline simdjson_result json_iterator::unescape(raw_js
 simdjson_inline simdjson_result json_iterator::unescape_wobbly(raw_json_string in) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape_wobbly(in, _string_buf_loc);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape_wobbly(in, _string_buf_loc);
@@ -58118,22 +96406,22 @@ simdjson_warn_unused simdjson_inline bool json_iterator::copy_to_buffer(const ui
 }
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::json_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::json_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/json_iterator-inl.h for fallback */
-/* including simdjson/generic/ondemand/json_type-inl.h for fallback: #include "simdjson/generic/ondemand/json_type-inl.h" */
-/* begin file simdjson/generic/ondemand/json_type-inl.h for fallback */
+/* end file simdjson/generic/ondemand/json_iterator-inl.h for haswell */
+/* including simdjson/generic/ondemand/json_type-inl.h for haswell: #include "simdjson/generic/ondemand/json_type-inl.h" */
+/* begin file simdjson/generic/ondemand/json_type-inl.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -58144,7 +96432,7 @@ simdjson_inline simdjson_result::simdjson_res
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept {
@@ -58238,22 +96526,22 @@ simdjson_inline void number::skip_double() noexcept {
 }
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::json_type &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::json_type &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
-/* end file simdjson/generic/ondemand/json_type-inl.h for fallback */
-/* including simdjson/generic/ondemand/logger-inl.h for fallback: #include "simdjson/generic/ondemand/logger-inl.h" */
-/* begin file simdjson/generic/ondemand/logger-inl.h for fallback */
+/* end file simdjson/generic/ondemand/json_type-inl.h for haswell */
+/* including simdjson/generic/ondemand/logger-inl.h for haswell: #include "simdjson/generic/ondemand/logger-inl.h" */
+/* begin file simdjson/generic/ondemand/logger-inl.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -58268,7 +96556,7 @@ simdjson_inline simdjson_result::simdjson_result(
 #include 
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 namespace logger {
 
@@ -58475,13 +96763,13 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 
 } // namespace logger
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
-/* end file simdjson/generic/ondemand/logger-inl.h for fallback */
-/* including simdjson/generic/ondemand/object-inl.h for fallback: #include "simdjson/generic/ondemand/object-inl.h" */
-/* begin file simdjson/generic/ondemand/object-inl.h for fallback */
+/* end file simdjson/generic/ondemand/logger-inl.h for haswell */
+/* including simdjson/generic/ondemand/object-inl.h for haswell: #include "simdjson/generic/ondemand/object-inl.h" */
+/* begin file simdjson/generic/ondemand/object-inl.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -58501,7 +96789,7 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 simdjson_inline simdjson_result object::find_field_unordered(const std::string_view key) & noexcept {
@@ -58775,55 +97063,55 @@ simdjson_warn_unused simdjson_inline error_code object::extract_into(T& out) & n
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::object &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::object &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field_unordered(key);
+  return std::forward(first).find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first)[key];
+  return std::forward(first)[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field(key);
+  return std::forward(first).find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
     std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -58831,27 +97119,27 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
 
-inline simdjson_result simdjson_result::reset() noexcept {
+inline simdjson_result simdjson_result::reset() noexcept {
   if (error()) { return error(); }
   return first.reset();
 }
 
-inline simdjson_result simdjson_result::is_empty() noexcept {
+inline simdjson_result simdjson_result::is_empty() noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
 
-simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
 
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
@@ -58859,9 +97147,9 @@ simdjson_inline  simdjson_result simdjson_result simdjson_result object_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  // We must call * once per iteration.
+  SIMDJSON_ASSUME(!has_been_referenced);
+  has_been_referenced = true;
+#endif
   error_code error = iter.error();
   if (error) { iter.abandon(); return error; }
   auto result = field::start(iter);
@@ -58903,6 +97196,11 @@ simdjson_inline bool object_iterator::operator!=(const object_iterator &) const
 SIMDJSON_PUSH_DISABLE_WARNINGS
 SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
 simdjson_inline object_iterator &object_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   // Before calling ++, we must have called *.
+   SIMDJSON_ASSUME(has_been_referenced);
+   has_been_referenced = false;
+#endif
   // TODO this is a safety rail ... users should exit loops as soon as they receive an error.
   // Nonetheless, let's see if performance is OK with this if statement--the compiler may give it to us for free.
   if (!iter.is_open()) { return *this; } // Iterator will be released if there is an error
@@ -58958,39 +97256,39 @@ SIMDJSON_POP_DISABLE_WARNINGS
 //
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  fallback::ondemand::object_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  haswell::ondemand::object_iterator &&value
 ) noexcept
-  : implementation_simdjson_result_base(std::forward(value))
+  : implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
 // Checks for ']' and ','
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++first;
@@ -59000,9 +97298,9 @@ simdjson_inline simdjson_result &simdjson_r
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/object_iterator-inl.h for fallback */
-/* including simdjson/generic/ondemand/parser-inl.h for fallback: #include "simdjson/generic/ondemand/parser-inl.h" */
-/* begin file simdjson/generic/ondemand/parser-inl.h for fallback */
+/* end file simdjson/generic/ondemand/object_iterator-inl.h for haswell */
+/* including simdjson/generic/ondemand/parser-inl.h for haswell: #include "simdjson/generic/ondemand/parser-inl.h" */
+/* begin file simdjson/generic/ondemand/parser-inl.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -59019,7 +97317,7 @@ simdjson_inline simdjson_result &simdjson_r
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 simdjson_inline parser::parser(size_t max_capacity) noexcept
@@ -59229,22 +97527,22 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser::
 
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::parser &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::parser &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
-/* end file simdjson/generic/ondemand/parser-inl.h for fallback */
-/* including simdjson/generic/ondemand/raw_json_string-inl.h for fallback: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for fallback */
+/* end file simdjson/generic/ondemand/parser-inl.h for haswell */
+/* including simdjson/generic/ondemand/raw_json_string-inl.h for haswell: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -59257,7 +97555,7 @@ simdjson_inline simdjson_result::simdjson_result(err
 
 namespace simdjson {
 
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 simdjson_inline raw_json_string::raw_json_string(const uint8_t * _buf) noexcept : buf{_buf} {}
@@ -59375,333 +97673,94 @@ simdjson_inline bool raw_json_string::is_equal(const char* target) const noexcep
   for(;target[pos];pos++) {
     if(r[pos] != target[pos]) { return false; }
     // if target is a compile-time constant and it is free from
-    // quotes, then the next part could get optimized away through
-    // inlining.
-    if((target[pos] == '"') && !escaping) {
-      // We have reached the end of the raw_json_string but
-      // the target is not done.
-      return false;
-    } else if(target[pos] == '\\') {
-      escaping = !escaping;
-    } else {
-      escaping = false;
-    }
-  }
-  if(r[pos] != '"') { return false; }
-  return true;
-}
-
-simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept {
-  return a.unsafe_is_equal(c);
-}
-
-simdjson_unused simdjson_inline bool operator==(std::string_view c, const raw_json_string &a) noexcept {
-  return a == c;
-}
-
-simdjson_unused simdjson_inline bool operator!=(const raw_json_string &a, std::string_view c) noexcept {
-  return !(a == c);
-}
-
-simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_json_string &a) noexcept {
-  return !(a == c);
-}
-
-
-simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape(json_iterator &iter, bool allow_replacement) const noexcept {
-  return iter.unescape(*this, allow_replacement);
-}
-
-simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape_wobbly(json_iterator &iter) const noexcept {
-  return iter.unescape_wobbly(*this);
-}
-
-simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, const raw_json_string &str) noexcept {
-  bool in_escape = false;
-  const char *s = str.raw();
-  while (true) {
-    switch (*s) {
-      case '\\': in_escape = !in_escape; break;
-      case '"': if (in_escape) { in_escape = false; } else { return out; } break;
-      default: if (in_escape) { in_escape = false; }
-    }
-    out << *s;
-    s++;
-  }
-}
-
-} // namespace ondemand
-} // namespace fallback
-} // namespace simdjson
-
-namespace simdjson {
-
-simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::raw_json_string &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
-
-simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
-  if (error()) { return error(); }
-  return first.raw();
-}
-simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
-  if (error()) { return error(); }
-  return first[i];
-}
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(fallback::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
-  if (error()) { return error(); }
-  return first.unescape(iter, allow_replacement);
-}
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(fallback::ondemand::json_iterator &iter) const noexcept {
-  if (error()) { return error(); }
-  return first.unescape_wobbly(iter);
-}
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
-/* end file simdjson/generic/ondemand/raw_json_string-inl.h for fallback */
-/* including simdjson/generic/ondemand/serialization-inl.h for fallback: #include "simdjson/generic/ondemand/serialization-inl.h" */
-/* begin file simdjson/generic/ondemand/serialization-inl.h for fallback */
-#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
-/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_builder.h" */
-/* amalgamation skipped (editor-only): #endif */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-inline std::string_view trim(const std::string_view str) noexcept {
-  // We can almost surely do better by rolling our own find_first_not_of function.
-  size_t first = str.find_first_not_of(" \t\n\r");
-  // If we have the empty string (just white space), then no trimming is possible, and
-  // we return the empty string_view.
-  if (std::string_view::npos == first) { return std::string_view(); }
-  size_t last = str.find_last_not_of(" \t\n\r");
-  return str.substr(first, (last - first + 1));
-}
-
-
-inline simdjson_result to_json_string(fallback::ondemand::document& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(fallback::ondemand::document_reference& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(fallback::ondemand::value& x) noexcept {
-  /**
-   * If we somehow receive a value that has already been consumed,
-   * then the following code could be in trouble. E.g., we create
-   * an array as needed, but if an array was already created, then
-   * it could be bad.
-   */
-  using namespace fallback::ondemand;
-  fallback::ondemand::json_type t;
-  auto error = x.type().get(t);
-  if(error != SUCCESS) { return error; }
-  switch (t)
-  {
-    case json_type::array:
-    {
-      fallback::ondemand::array array;
-      error = x.get_array().get(array);
-      if(error) { return error; }
-      return to_json_string(array);
-    }
-    case json_type::object:
-    {
-      fallback::ondemand::object object;
-      error = x.get_object().get(object);
-      if(error) { return error; }
-      return to_json_string(object);
+    // quotes, then the next part could get optimized away through
+    // inlining.
+    if((target[pos] == '"') && !escaping) {
+      // We have reached the end of the raw_json_string but
+      // the target is not done.
+      return false;
+    } else if(target[pos] == '\\') {
+      escaping = !escaping;
+    } else {
+      escaping = false;
     }
-    default:
-      return trim(x.raw_json_token());
   }
+  if(r[pos] != '"') { return false; }
+  return true;
 }
 
-inline simdjson_result to_json_string(fallback::ondemand::object& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
+simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept {
+  return a.unsafe_is_equal(c);
 }
 
-inline simdjson_result to_json_string(fallback::ondemand::array& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
+simdjson_unused simdjson_inline bool operator==(std::string_view c, const raw_json_string &a) noexcept {
+  return a == c;
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_unused simdjson_inline bool operator!=(const raw_json_string &a, std::string_view c) noexcept {
+  return !(a == c);
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_json_string &a) noexcept {
+  return !(a == c);
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape(json_iterator &iter, bool allow_replacement) const noexcept {
+  return iter.unescape(*this, allow_replacement);
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape_wobbly(json_iterator &iter) const noexcept {
+  return iter.unescape_wobbly(*this);
 }
-} // namespace simdjson
-
-namespace simdjson { namespace fallback { namespace ondemand {
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
+simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, const raw_json_string &str) noexcept {
+  bool in_escape = false;
+  const char *s = str.raw();
+  while (true) {
+    switch (*s) {
+      case '\\': in_escape = !in_escape; break;
+      case '"': if (in_escape) { in_escape = false; } else { return out; } break;
+      default: if (in_escape) { in_escape = false; }
+    }
+    out << *s;
+    s++;
   }
 }
-#endif
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
+} // namespace ondemand
+} // namespace haswell
+} // namespace simdjson
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::document_reference& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
+namespace simdjson {
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
+simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::raw_json_string &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
+  if (error()) { return error(); }
+  return first.raw();
 }
-inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
-  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
+simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
+  if (error()) { return error(); }
+  return first[i];
 }
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(haswell::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
+  if (error()) { return error(); }
+  return first.unescape(iter, allow_replacement);
 }
-#endif
-}}} // namespace simdjson::fallback::ondemand
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(haswell::ondemand::json_iterator &iter) const noexcept {
+  if (error()) { return error(); }
+  return first.unescape_wobbly(iter);
+}
+} // namespace simdjson
 
-#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-/* end file simdjson/generic/ondemand/serialization-inl.h for fallback */
-/* including simdjson/generic/ondemand/token_iterator-inl.h for fallback: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/token_iterator-inl.h for fallback */
+#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
+/* end file simdjson/generic/ondemand/raw_json_string-inl.h for haswell */
+/* including simdjson/generic/ondemand/token_iterator-inl.h for haswell: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/token_iterator-inl.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -59712,7 +97771,7 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::fallback::ondemand:
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 simdjson_inline token_iterator::token_iterator(
@@ -59783,22 +97842,22 @@ simdjson_inline bool token_iterator::operator<=(const token_iterator &other) con
 }
 
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::token_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::token_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/token_iterator-inl.h for fallback */
-/* including simdjson/generic/ondemand/value_iterator-inl.h for fallback: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/value_iterator-inl.h for fallback */
+/* end file simdjson/generic/ondemand/token_iterator-inl.h for haswell */
+/* including simdjson/generic/ondemand/value_iterator-inl.h for haswell: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/value_iterator-inl.h for haswell */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -59813,7 +97872,7 @@ simdjson_inline simdjson_result::simdjson_re
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 
 simdjson_inline value_iterator::value_iterator(
@@ -59895,7 +97954,6 @@ simdjson_warn_unused simdjson_inline error_code value_iterator::end_container()
 
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::has_next_field() noexcept {
   assert_at_next();
-
   // It's illegal to call this unless there are more tokens: anything that ends in } or ] is
   // obligated to verify there are more tokens if they are not the top level.
   switch (*_json_iter->return_current_and_advance()) {
@@ -60317,9 +98375,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_string(string_type& receiver, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_string(allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_wobbly_string() noexcept {
@@ -60407,7 +98469,7 @@ simdjson_inline simdjson_result value_iterator::is_root_integer(bool check
   return answer;
 }
 
-simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
+simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
   auto max_len = peek_root_length();
   auto json = peek_root_scalar("number");
   // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
@@ -60459,9 +98521,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_root_string(check_trailing, allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_wobbly_string(bool check_trailing) noexcept {
@@ -60532,1467 +98598,617 @@ simdjson_warn_unused simdjson_inline simdjson_result value_iterator::ge
     logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
     return NUMBER_ERROR;
   }
-
-  auto result = numberparsing::parse_integer_in_string(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("int64");
-  }
-  return result;
-}
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("double");
-  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
-  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
-  // number: -0.e-308.
-  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
-  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
-    return NUMBER_ERROR;
-  }
-  auto result = numberparsing::parse_double(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("double");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double_in_string(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("double");
-  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
-  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
-  // number: -0.e-308.
-  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
-  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
-    return NUMBER_ERROR;
-  }
-  auto result = numberparsing::parse_double_in_string(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("double");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_bool(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("bool");
-  // We have a boolean if we have either "true" or "false" and the next character is either
-  // a structural character or whitespace. We also check that the length is correct:
-  // "true" and "false" are 4 and 5 characters long, respectively.
-  bool value_true = (max_len >= 4 && !atomparsing::str4ncmp(json, "true") &&
-  (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
-  bool value_false = (max_len >= 5 && !atomparsing::str4ncmp(json, "false") &&
-  (max_len == 5 || jsoncharutils::is_structural_or_whitespace(json[5])));
-  if(value_true == false && value_false == false) { return incorrect_type_error("Not a boolean"); }
-  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-  advance_root_scalar("bool");
-  return value_true;
-}
-
-simdjson_inline simdjson_result value_iterator::is_root_null(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("null");
-  bool result = (max_len >= 4 && !atomparsing::str4ncmp(json, "null") &&
-         (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
-  if(result) { // we have something that looks like a null.
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("null");
-  } else if (json[0] == 'n') {
-    return incorrect_type_error("Not a null but starts with n");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
-
-  return _json_iter->skip_child(depth());
-}
-
-simdjson_inline value_iterator value_iterator::child() const noexcept {
-  assert_at_child();
-  return { _json_iter, depth()+1, _json_iter->token.position() };
-}
-
-// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
-// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
-// marked non-inline.
-SIMDJSON_PUSH_DISABLE_WARNINGS
-SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
-simdjson_inline bool value_iterator::is_open() const noexcept {
-  return _json_iter->depth() >= depth();
-}
-SIMDJSON_POP_DISABLE_WARNINGS
-
-simdjson_inline bool value_iterator::at_end() const noexcept {
-  return _json_iter->at_end();
-}
-
-simdjson_inline bool value_iterator::at_start() const noexcept {
-  return _json_iter->token.position() == start_position();
-}
-
-simdjson_inline bool value_iterator::at_first_field() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  return _json_iter->token.position() == start_position() + 1;
-}
-
-simdjson_inline void value_iterator::abandon() noexcept {
-  _json_iter->abandon();
-}
-
-simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
-  return _depth;
-}
-simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
-  return _json_iter->error;
-}
-simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
-  return _json_iter->string_buf_loc();
-}
-simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
-  return *_json_iter;
-}
-simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
-  return *_json_iter;
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
-  return _json_iter->peek(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
-  return _json_iter->peek_length(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
-  return _json_iter->peek_root_length(start_position());
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return peek_start(); }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return; }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
-  logger::log_start_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  const uint8_t *json;
-  if (!is_at_start()) {
-#if SIMDJSON_DEVELOPMENT_CHECKS
-    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
-#endif
-    json = peek_start();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-  } else {
-    assert_at_start();
-    /**
-     * We should be prudent. Let us peek. If it is not the right type, we
-     * return an error. Only once we have determined that we have the right
-     * type are we allowed to advance!
-     */
-    json = _json_iter->peek();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-    _json_iter->return_current_and_advance();
-  }
-
-
-  return SUCCESS;
-}
-
-
-simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_root();
-  return _json_iter->peek();
-}
-simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_non_root_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_root();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_non_root_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
-  logger::log_error(*_json_iter, start_position(), depth(), message);
-  return INCORRECT_TYPE;
-}
-
-simdjson_inline bool value_iterator::is_at_start() const noexcept {
-  return position() == start_position();
-}
-
-simdjson_inline bool value_iterator::is_at_key() const noexcept {
-  // Keys are at the same depth as the object.
-  // Note here that we could be safer and check that we are within an object,
-  // but we do not.
-  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
-}
-
-simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
-  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
-  auto delta = position() - start_position();
-  return delta == 1 || delta == 2;
-}
-
-inline void value_iterator::assert_at_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_container_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_next() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-simdjson_inline void value_iterator::move_at_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position);
-}
-
-simdjson_inline void value_iterator::move_at_container_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position + 1);
-}
-
-simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_array();
-}
-
-simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_object();
-}
-
-inline void value_iterator::assert_at_child() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_root() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth == 1 );
-}
-
-inline void value_iterator::assert_at_non_root_start() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth > 1 );
-}
-
-inline void value_iterator::assert_is_valid() const noexcept {
-  SIMDJSON_ASSUME( _json_iter != nullptr );
-}
-
-simdjson_inline bool value_iterator::is_valid() const noexcept {
-  return _json_iter != nullptr;
-}
-
-simdjson_inline simdjson_result value_iterator::type() const noexcept {
-  switch (*peek_start()) {
-    case '{':
-      return json_type::object;
-    case '[':
-      return json_type::array;
-    case '"':
-      return json_type::string;
-    case 'n':
-      return json_type::null;
-    case 't': case 'f':
-      return json_type::boolean;
-    case '-':
-    case '0': case '1': case '2': case '3': case '4':
-    case '5': case '6': case '7': case '8': case '9':
-      return json_type::number;
-    default:
-      return json_type::unknown;
-  }
-}
-
-simdjson_inline token_position value_iterator::start_position() const noexcept {
-  return _start_position;
-}
-
-simdjson_inline token_position value_iterator::position() const noexcept {
-  return _json_iter->position();
-}
-
-simdjson_inline token_position value_iterator::end_position() const noexcept {
-  return _json_iter->end_position();
-}
-
-simdjson_inline token_position value_iterator::last_position() const noexcept {
-  return _json_iter->last_position();
-}
-
-simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
-  return _json_iter->report_error(error, message);
-}
-
-} // namespace ondemand
-} // namespace fallback
-} // namespace simdjson
-
-namespace simdjson {
-
-simdjson_inline simdjson_result::simdjson_result(fallback::ondemand::value_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/value_iterator-inl.h for fallback */
-
-// JSON builder inline definitions
-/* including simdjson/generic/ondemand/json_string_builder-inl.h for fallback: #include "simdjson/generic/ondemand/json_string_builder-inl.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder-inl.h for fallback */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand
- * directory but we will move it to a builder directory later.
- */
-#include 
-#include 
-#include 
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-/*
- * Empirically, we have found that an inlined optimization is important for
- * performance. The following macros are not ideal. We should find a better
- * way to inline the code.
- */
-
-#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
-    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
-     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
-#endif
-#endif
-
-#if defined(__aarch64__) || defined(_M_ARM64)
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
-#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
-#endif
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-#include 
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#include 
-#endif
-
-namespace simdjson {
-namespace fallback {
-namespace builder {
-
-static SIMDJSON_CONSTEXPR_LAMBDA std::array
-    json_quotable_character = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-/**
-
-A possible SWAR implementation of has_json_escapable_byte. It is not used
-because it is slower than the current implementation. It is kept here for
-reference (to show that we tried it).
-
-inline bool has_json_escapable_byte(uint64_t x) {
-  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
-  uint64_t xor2 = x ^ 0x0202020202020202ULL;
-  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
-  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
-  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
-  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
-}
-
-**/
-
-SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
-simple_needs_escaping(std::string_view v) {
-  for (char c : v) {
-    // a table lookup is faster than a series of comparisons
-    if (json_quotable_character[static_cast(c)]) {
-      return true;
-    }
-  }
-  return false;
-}
-
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  uint8x16_t running = vdupq_n_u8(0);
-  uint8x16_t v34 = vdupq_n_u8(34);
-  uint8x16_t v92 = vdupq_n_u8(92);
-
-  for (; i + 15 < view.size(); i += 16) {
-    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  if (i < view.size()) {
-    uint8x16_t word =
-        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
-}
-#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  __m128i running = _mm_setzero_si128();
-  for (; i + 15 < view.size(); i += 16) {
-
-    __m128i word =
-        _mm_loadu_si128(reinterpret_cast(view.data() + i));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  if (i < view.size()) {
-    __m128i word = _mm_loadu_si128(
-        reinterpret_cast(view.data() + view.length() - 16));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  return _mm_movemask_epi8(running) != 0;
-}
-#else
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  return simple_needs_escaping(view);
-}
-#endif
-
-SIMDJSON_CONSTEXPR_LAMBDA inline size_t
-find_next_json_quotable_character(const std::string_view view,
-                                  size_t location) noexcept {
-
-  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
-    if (json_quotable_character[static_cast(*pos)]) {
-      return pos - view.begin();
-    }
-  }
-  return size_t(view.size());
-}
-
-SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
-    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
-    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
-    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
-    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
-    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
-
-// All Unicode characters may be placed within the quotation marks, except for
-// the characters that MUST be escaped: quotation mark, reverse solidus, and the
-// control characters (U+0000 through U+001F). There are two-character sequence
-// escape representations of some popular characters:
-// \", \\, \b, \f, \n, \r, \t.
-SIMDJSON_CONSTEXPR_LAMBDA void escape_json_char(char c, char *&out) {
-  if (c == '"') {
-    memcpy(out, "\\\"", 2);
-    out += 2;
-  } else if (c == '\\') {
-    memcpy(out, "\\\\", 2);
-    out += 2;
-  } else {
-    std::string_view v = control_chars[uint8_t(c)];
-    memcpy(out, v.data(), v.size());
-    out += v.size();
-  }
-}
-
-inline size_t write_string_escaped(const std::string_view input, char *out) {
-  size_t mysize = input.size();
-  if (!fast_needs_escaping(input)) { // fast path!
-    memcpy(out, input.data(), input.size());
-    return input.size();
-  }
-  const char *const initout = out;
-  size_t location = find_next_json_quotable_character(input, 0);
-  memcpy(out, input.data(), location);
-  out += location;
-  escape_json_char(input[location], out);
-  location += 1;
-  while (location < mysize) {
-    size_t newlocation = find_next_json_quotable_character(input, location);
-    memcpy(out, input.data() + location, newlocation - location);
-    out += newlocation - location;
-    location = newlocation;
-    if (location == mysize) {
-      break;
-    }
-    escape_json_char(input[location], out);
-    location += 1;
-  }
-  return out - initout;
-}
-
-simdjson_inline string_builder::string_builder(size_t initial_capacity)
-    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
-      capacity(buffer.get() != nullptr ? initial_capacity : 0),
-      is_valid(buffer.get() != nullptr) {}
-
-simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
-  // We use the convention that when is_valid is false, then the capacity and
-  // the position are 0.
-  // Most of the time, this function will return true.
-  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
-    return true;
-  }
-  // check for overflow, most of the time there is no overflow
-  if (simdjson_likely(position + upcoming_bytes < position)) {
-    return false;
-  }
-  // We will rarely get here.
-  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
-  // If the buffer allocation failed, we set is_valid to false.
-  return is_valid;
-}
-
-simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
-  if (!is_valid) {
-    return;
-  }
-  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
-  if (new_buffer.get() == nullptr) {
-    set_valid(false);
-    return;
-  }
-  std::memcpy(new_buffer.get(), buffer.get(), position);
-  buffer.swap(new_buffer);
-  capacity = desired_capacity;
-}
-
-simdjson_inline void string_builder::set_valid(bool valid) noexcept {
-  if (!valid) {
-    is_valid = false;
-    capacity = 0;
-    position = 0;
-    buffer.reset();
-  } else {
-    is_valid = true;
-  }
-}
-
-simdjson_inline size_t string_builder::size() const noexcept {
-  return position;
-}
-
-simdjson_inline void string_builder::append(char c) noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = c;
-  }
-}
-
-simdjson_inline void string_builder::append_null() noexcept {
-  constexpr char null_literal[] = "null";
-  constexpr size_t null_len = sizeof(null_literal) - 1;
-  if (capacity_check(null_len)) {
-    std::memcpy(buffer.get() + position, null_literal, null_len);
-    position += null_len;
-  }
-}
-
-simdjson_inline void string_builder::clear() noexcept {
-  position = 0;
-  // if it was invalid, we should try to repair it
-  if (!is_valid) {
-    capacity = 0;
-    buffer.reset();
-    is_valid = true;
-  }
-}
-
-namespace internal {
-
-template ::value>::type>
-simdjson_really_inline int int_log2(number_type x) {
-  return 63 - leading_zeroes(uint64_t(x) | 1);
-}
-
-simdjson_really_inline int fast_digit_count_32(uint32_t x) {
-  static uint64_t table[] = {
-      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
-      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
-      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
-      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
-      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
-      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
-      42949672960, 42949672960};
-  return uint32_t((x + table[int_log2(x)]) >> 32);
-}
-
-simdjson_really_inline int fast_digit_count_64(uint64_t x) {
-  static uint64_t table[] = {9,
-                             99,
-                             999,
-                             9999,
-                             99999,
-                             999999,
-                             9999999,
-                             99999999,
-                             999999999,
-                             9999999999,
-                             99999999999,
-                             999999999999,
-                             9999999999999,
-                             99999999999999,
-                             999999999999999ULL,
-                             9999999999999999ULL,
-                             99999999999999999ULL,
-                             999999999999999999ULL,
-                             9999999999999999999ULL};
-  int y = (19 * int_log2(x) >> 6);
-  y += x > table[y];
-  return y + 1;
-}
-
-template ::value>::type>
-simdjson_really_inline size_t digit_count(number_type v) noexcept {
-  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
-                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
-                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
-  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
-    return fast_digit_count_32(static_cast(v));
-  }
-  else {
-    return fast_digit_count_64(static_cast(v));
-  }
-}
-static const char decimal_table[200] = {
-    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
-    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
-    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
-    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
-    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
-    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
-    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
-    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
-    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
-    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
-    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
-    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
-    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
-    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
-    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
-    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
-    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
-};
-} // namespace internal
-
-template 
-simdjson_inline void string_builder::append(number_type v) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_integral::value ||
-                    std::is_floating_point::value,
-                "Unsupported number type");
-  // If C++17 is available, we can 'if constexpr' here.
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    if (v) {
-      constexpr char true_literal[] = "true";
-      constexpr size_t true_len = sizeof(true_literal) - 1;
-      if (capacity_check(true_len)) {
-        std::memcpy(buffer.get() + position, true_literal, true_len);
-        position += true_len;
-      }
-    } else {
-      constexpr char false_literal[] = "false";
-      constexpr size_t false_len = sizeof(false_literal) - 1;
-      if (capacity_check(false_len)) {
-        std::memcpy(buffer.get() + position, false_literal, false_len);
-        position += false_len;
-      }
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      unsigned_type pv = static_cast(v);
-      size_t dc = internal::digit_count(pv);
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      bool negative = v < 0;
-      unsigned_type pv = static_cast(v);
-      if (negative) {
-        pv = 0 - pv; // the 0 is for Microsoft
-      }
-      size_t dc = internal::digit_count(pv);
-      // by always writing the minus sign, we avoid the branch.
-      buffer.get()[position] = '-';
-      position += negative ? 1 : 0;
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
+
+  auto result = numberparsing::parse_integer_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("int64");
   }
-  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
-    constexpr size_t max_number_size = 24;
-    if (capacity_check(max_number_size)) {
-      // We could specialize for float.
-      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
-                                               double(v));
-      position = end - buffer.get();
-    }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_double(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
   }
+  return result;
 }
 
-simdjson_inline void
-string_builder::escape_and_append(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(6 * input.size())) {
-    position += write_string_escaped(input, buffer.get() + position);
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double_in_string(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
   }
+  auto result = numberparsing::parse_double_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
+  }
+  return result;
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * input.size())) {
-    buffer.get()[position++] = '"';
-    position += write_string_escaped(input, buffer.get() + position);
-    buffer.get()[position++] = '"';
-  }
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_bool(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("bool");
+  // We have a boolean if we have either "true" or "false" and the next character is either
+  // a structural character or whitespace. We also check that the length is correct:
+  // "true" and "false" are 4 and 5 characters long, respectively.
+  bool value_true = (max_len >= 4 && !atomparsing::str4ncmp(json, "true") &&
+  (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  bool value_false = (max_len >= 5 && !atomparsing::str4ncmp(json, "false") &&
+  (max_len == 5 || jsoncharutils::is_structural_or_whitespace(json[5])));
+  if(value_true == false && value_false == false) { return incorrect_type_error("Not a boolean"); }
+  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+  advance_root_scalar("bool");
+  return value_true;
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(char input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * 1)) {
-    buffer.get()[position++] = '"';
-    std::string_view cinput(&input, 1);
-    position += write_string_escaped(cinput, buffer.get() + position);
-    buffer.get()[position++] = '"';
+simdjson_inline simdjson_result value_iterator::is_root_null(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("null");
+  bool result = (max_len >= 4 && !atomparsing::str4ncmp(json, "null") &&
+         (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  if(result) { // we have something that looks like a null.
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("null");
+  } else if (json[0] == 'n') {
+    return incorrect_type_error("Not a null but starts with n");
   }
+  return result;
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(const char *input) noexcept {
-  std::string_view cinput(input);
-  escape_and_append_with_quotes(cinput);
+simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
+
+  return _json_iter->skip_child(depth());
 }
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
-  escape_and_append_with_quotes(constevalutil::string_constant::value);
+
+simdjson_inline value_iterator value_iterator::child() const noexcept {
+  assert_at_child();
+  return { _json_iter, depth()+1, _json_iter->token.position() };
 }
-#endif
 
-simdjson_inline void string_builder::append_raw(const char *c) noexcept {
-  size_t len = std::strlen(c);
-  append_raw(c, len);
+// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
+// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
+// marked non-inline.
+SIMDJSON_PUSH_DISABLE_WARNINGS
+SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
+simdjson_inline bool value_iterator::is_open() const noexcept {
+  return _json_iter->depth() >= depth();
 }
+SIMDJSON_POP_DISABLE_WARNINGS
 
-simdjson_inline void
-string_builder::append_raw(std::string_view input) noexcept {
-  if (capacity_check(input.size())) {
-    std::memcpy(buffer.get() + position, input.data(), input.size());
-    position += input.size();
-  }
+simdjson_inline bool value_iterator::at_end() const noexcept {
+  return _json_iter->at_end();
 }
 
-simdjson_inline void string_builder::append_raw(const char *str,
-                                                size_t len) noexcept {
-  if (capacity_check(len)) {
-    std::memcpy(buffer.get() + position, str, len);
-    position += len;
-  }
+simdjson_inline bool value_iterator::at_start() const noexcept {
+  return _json_iter->token.position() == start_position();
 }
-#if SIMDJSON_SUPPORTS_CONCEPTS
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-simdjson_inline void string_builder::append(const T &opt) {
-  if (opt) {
-    append(*opt);
-  } else {
-    append_null();
-  }
+
+simdjson_inline bool value_iterator::at_first_field() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  return _json_iter->token.position() == start_position() + 1;
 }
 
-template 
-  requires(require_custom_serialization)
-simdjson_inline void string_builder::append(T &&val) {
-  serialize(*this, std::forward(val));
+simdjson_inline void value_iterator::abandon() noexcept {
+  _json_iter->abandon();
 }
 
-template 
-  requires(std::is_convertible::value ||
-           std::is_same::value)
-simdjson_inline void string_builder::append(const T &value) {
-  escape_and_append_with_quotes(value);
+simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
+  return _depth;
+}
+simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
+  return _json_iter->error;
+}
+simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
+  return _json_iter->string_buf_loc();
+}
+simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
+  return *_json_iter;
+}
+simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
+  return *_json_iter;
 }
-#endif
 
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-// Support for range-based appending (std::ranges::view, etc.)
-template 
-  requires(!std::is_convertible::value && !require_custom_serialization)
-simdjson_inline void string_builder::append(const R &range) noexcept {
-  auto it = std::ranges::begin(range);
-  auto end = std::ranges::end(range);
-  if constexpr (concepts::is_pair>) {
-    start_object();
+simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
+  return _json_iter->peek(start_position());
+}
+simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
+  return _json_iter->peek_length(start_position());
+}
+simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
+  return _json_iter->peek_root_length(start_position());
+}
 
-    if (it == end) {
-      end_object();
-      return; // Handle empty range
-    }
-    // Append first item without leading comma
-    append_key_value(it->first, it->second);
-    ++it;
+simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return peek_start(); }
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append_key_value(it->first, it->second);
-    }
-    end_object();
-  } else {
-    start_array();
-    if (it == end) {
-      end_array();
-      return; // Handle empty range
-    }
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  return _json_iter->peek();
+}
 
-    // Append first item without leading comma
-    append(*it);
-    ++it;
+simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return; }
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append(*it);
-    }
-    end_array();
-  }
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
 
+simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
+  logger::log_start_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  const uint8_t *json;
+  if (!is_at_start()) {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
 #endif
+    json = peek_start();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+  } else {
+    assert_at_start();
+    /**
+     * We should be prudent. Let us peek. If it is not the right type, we
+     * return an error. Only once we have determined that we have the right
+     * type are we allowed to advance!
+     */
+    json = _json_iter->peek();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+    _json_iter->return_current_and_advance();
+  }
 
-#if SIMDJSON_EXCEPTIONS
-simdjson_inline string_builder::operator std::string() const noexcept(false) {
-  return std::string(operator std::string_view());
-}
 
-simdjson_inline string_builder::operator std::string_view() const
-    noexcept(false) simdjson_lifetime_bound {
-  return view();
+  return SUCCESS;
 }
-#endif
 
-simdjson_inline simdjson_result
-string_builder::view() const noexcept {
-  if (!is_valid) {
-    return simdjson::OUT_OF_CAPACITY;
-  }
-  return std::string_view(buffer.get(), position);
-}
 
-simdjson_inline simdjson_result string_builder::c_str() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position] = '\0';
-    return buffer.get();
-  }
-  return simdjson::OUT_OF_CAPACITY;
-}
+simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
 
-simdjson_inline bool string_builder::validate_unicode() const noexcept {
-  return simdjson::validate_utf8(buffer.get(), position);
+  assert_at_root();
+  return _json_iter->peek();
 }
+simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
 
-simdjson_inline void string_builder::start_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '{';
-  }
+  assert_at_non_root_start();
+  return _json_iter->peek();
 }
 
-simdjson_inline void string_builder::end_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '}';
-  }
-}
+simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
 
-simdjson_inline void string_builder::start_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '[';
-  }
+  assert_at_root();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
+simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
 
-simdjson_inline void string_builder::end_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ']';
-  }
+  assert_at_non_root_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
 
-simdjson_inline void string_builder::append_comma() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ',';
-  }
+simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
+  logger::log_error(*_json_iter, start_position(), depth(), message);
+  return INCORRECT_TYPE;
 }
 
-simdjson_inline void string_builder::append_colon() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ':';
-  }
+simdjson_inline bool value_iterator::is_at_start() const noexcept {
+  return position() == start_position();
 }
 
-template 
-simdjson_inline void
-string_builder::append_key_value(key_type key, value_type value) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_convertible::value,
-                "Unsupported key type");
-  escape_and_append_with_quotes(key);
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+simdjson_inline bool value_iterator::is_at_key() const noexcept {
+  // Keys are at the same depth as the object.
+  // Note here that we could be safer and check that we are within an object,
+  // but we do not.
+  //
+  // As long as we are at the object's depth, in a valid document,
+  // we will only ever be at { , : or the actual string key: ".
+  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
 }
 
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void
-string_builder::append_key_value(value_type value) noexcept {
-  escape_and_append_with_quotes();
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
+  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
+  auto delta = position() - start_position();
+  return delta == 1 || delta == 2;
 }
-#endif
 
-} // namespace builder
-} // namespace fallback
-} // namespace simdjson
+inline void value_iterator::assert_at_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-/* end file simdjson/generic/ondemand/json_string_builder-inl.h for fallback */
-/* including simdjson/generic/ondemand/json_builder.h for fallback: #include "simdjson/generic/ondemand/json_builder.h" */
-/* begin file simdjson/generic/ondemand/json_builder.h for fallback */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_BUILDER_H
+inline void value_iterator::assert_at_container_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-#if SIMDJSON_STATIC_REFLECTION
+inline void value_iterator::assert_at_next() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-// #include  // for std::define_static_string - header not available yet
+simdjson_inline void value_iterator::move_at_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position);
+}
 
-namespace simdjson {
-namespace fallback {
-namespace builder {
+simdjson_inline void value_iterator::move_at_container_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position + 1);
+}
 
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  auto it = t.begin();
-  auto end = t.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
-  }
-  b.append(']');
+simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_array();
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-constexpr void atom(string_builder &b, const T &t) {
-  b.escape_and_append_with_quotes(t);
+simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_object();
 }
 
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &m) {
-  if (m.empty()) {
-    b.append_raw("{}");
-    return;
-  }
-  b.append('{');
-  bool first = true;
-  for (const auto& [key, value] : m) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    // Keys must be convertible to string_view per the concept
-    b.escape_and_append_with_quotes(key);
-    b.append(':');
-    atom(b, value);
-  }
-  b.append('}');
+inline void value_iterator::assert_at_child() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
+  SIMDJSON_ASSUME( _depth > 0 );
 }
 
+inline void value_iterator::assert_at_root() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth == 1 );
+}
 
-template::value && !std::is_same_v>::type>
-constexpr void atom(string_builder &b, const number_type t) {
-  b.append(t);
+inline void value_iterator::assert_at_non_root_start() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth > 1 );
 }
 
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, t.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline void value_iterator::assert_is_valid() const noexcept {
+  SIMDJSON_ASSUME( _json_iter != nullptr );
 }
 
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &opt) {
-  if (opt) {
-    atom(b, opt.value());
-  } else {
-    b.append_raw("null");
-  }
+simdjson_inline bool value_iterator::is_valid() const noexcept {
+  return _json_iter != nullptr;
 }
 
-// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &ptr) {
-  if (ptr) {
-    atom(b, *ptr);
-  } else {
-    b.append_raw("null");
+simdjson_inline simdjson_result value_iterator::type() const noexcept {
+  switch (*peek_start()) {
+    case '{':
+      return json_type::object;
+    case '[':
+      return json_type::array;
+    case '"':
+      return json_type::string;
+    case 'n':
+      return json_type::null;
+    case 't': case 'f':
+      return json_type::boolean;
+    case '-':
+    case '0': case '1': case '2': case '3': case '4':
+    case '5': case '6': case '7': case '8': case '9':
+      return json_type::number;
+    default:
+      return json_type::unknown;
   }
 }
 
-// Support for enums - serialize as string representation using expand approach from P2996R12
-template 
-  requires(std::is_enum_v && !require_custom_serialization)
-void atom(string_builder &b, const T &e) {
-#if SIMDJSON_STATIC_REFLECTION
-  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
-  template for (constexpr auto enum_val : enumerators) {
-    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
-    if (e == [:enum_val:]) {
-      b.append_raw(enum_str);
-      return;
-    }
-  };
-  // Fallback to integer if enum value not found
-  atom(b, static_cast>(e));
-#else
-  // Fallback: serialize as integer if reflection not available
-  atom(b, static_cast>(e));
-#endif
+simdjson_inline token_position value_iterator::start_position() const noexcept {
+  return _start_position;
 }
 
-// Support for appendable containers that don't have operator[] (sets, etc.)
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &container) {
-  if (container.empty()) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  bool first = true;
-  for (const auto& item : container) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    atom(b, item);
-  }
-  b.append(']');
+simdjson_inline token_position value_iterator::position() const noexcept {
+  return _json_iter->position();
 }
 
-// append functions that delegate to atom functions for primitive types
-template 
-  requires(std::is_arithmetic_v && !std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::end_position() const noexcept {
+  return _json_iter->end_position();
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::last_position() const noexcept {
+  return _json_iter->last_position();
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
+  return _json_iter->report_error(error, message);
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
+} // namespace ondemand
+} // namespace haswell
+} // namespace simdjson
 
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::value_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
+/* end file simdjson/generic/ondemand/value_iterator-inl.h for haswell */
+/* including simdjson/generic/ondemand/serialization-inl.h for haswell: #include "simdjson/generic/ondemand/serialization-inl.h" */
+/* begin file simdjson/generic/ondemand/serialization-inl.h for haswell */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #endif */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+inline std::string_view trim(const std::string_view str) noexcept {
+  // We can almost surely do better by rolling our own find_first_not_of function.
+  size_t first = str.find_first_not_of(" \t\n\r");
+  // If we have the empty string (just white space), then no trimming is possible, and
+  // we return the empty string_view.
+  if (std::string_view::npos == first) { return std::string_view(); }
+  size_t last = str.find_last_not_of(" \t\n\r");
+  return str.substr(first, (last - first + 1));
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+
+inline simdjson_result to_json_string(haswell::ondemand::document& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// works for struct
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, z.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline simdjson_result to_json_string(haswell::ondemand::document_reference& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// works for container that have begin() and end() iterators
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  auto it = z.begin();
-  auto end = z.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
+inline simdjson_result to_json_string(haswell::ondemand::value& x) noexcept {
+  /**
+   * If we somehow receive a value that has already been consumed,
+   * then the following code could be in trouble. E.g., we create
+   * an array as needed, but if an array was already created, then
+   * it could be bad.
+   */
+  using namespace haswell::ondemand;
+  haswell::ondemand::json_type t;
+  auto error = x.type().get(t);
+  if(error != SUCCESS) { return error; }
+  switch (t)
+  {
+    case json_type::array:
+    {
+      haswell::ondemand::array array;
+      error = x.get_array().get(array);
+      if(error) { return error; }
+      return to_json_string(array);
+    }
+    case json_type::object:
+    {
+      haswell::ondemand::object object;
+      error = x.get_object().get(object);
+      if(error) { return error; }
+      return to_json_string(object);
+    }
+    default:
+      return trim(x.raw_json_token());
   }
-  b.append(']');
 }
 
-template 
-  requires (require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  b.append(z);
+inline simdjson_result to_json_string(haswell::ondemand::object& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-
-template 
-simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline simdjson_result to_json_string(haswell::ondemand::array& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-template 
-string_builder& operator<<(string_builder& b, const Z& z) {
-  append(b, z);
-  return b;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-// extract_from: Serialize only specific fields from a struct to JSON
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-void extract_from(string_builder &b, const T &obj) {
-  // Helper to check if a field name matches any of the requested fields
-  auto should_extract = [](std::string_view field_name) constexpr -> bool {
-    return ((FieldNames.view() == field_name) || ...);
-  };
-
-  b.append('{');
-  bool first = true;
-
-  // Iterate through all members of T using reflection
-  template for (constexpr auto mem : std::define_static_array(
-      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-
-    if constexpr (std::meta::is_public(mem)) {
-      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-      // Only serialize this field if it's in our list of requested fields
-      if constexpr (should_extract(key)) {
-        if (!first) {
-          b.append(',');
-        }
-        first = false;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-        // Serialize the key
-        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
-        b.append_raw(quoted_key);
-        b.append(':');
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
+} // namespace simdjson
 
-        // Serialize the value
-        atom(b, obj.[:mem:]);
-      }
-    }
-  };
+namespace simdjson { namespace haswell { namespace ondemand {
 
-  b.append('}');
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace builder
-} // namespace fallback
-// Alias the function template to 'to' in the global namespace
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  fallback::builder::string_builder b(initial_capacity);
-  fallback::builder::append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  fallback::builder::string_builder b(initial_capacity);
-  fallback::builder::append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
 }
-// Global namespace function for extract_from
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  fallback::builder::string_builder b(initial_capacity);
-  fallback::builder::extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace simdjson
-
-#endif // SIMDJSON_STATIC_REFLECTION
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::document_reference& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
 
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
+  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
 #endif
-/* end file simdjson/generic/ondemand/json_builder.h for fallback */
+}}} // namespace simdjson::haswell::ondemand
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+/* end file simdjson/generic/ondemand/serialization-inl.h for haswell */
 
 // JSON path accessor (compile-time) - must be after inline definitions
-/* including simdjson/generic/ondemand/compile_time_accessors.h for fallback: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
-/* begin file simdjson/generic/ondemand/compile_time_accessors.h for fallback */
+/* including simdjson/generic/ondemand/compile_time_accessors.h for haswell: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
+/* begin file simdjson/generic/ondemand/compile_time_accessors.h for haswell */
 /**
  * Compile-time JSON Path and JSON Pointer accessors using C++26 reflection (P2996)
  *
@@ -62050,7 +99266,7 @@ simdjson_warn_unused simdjson_result extract_from(const T &obj, siz
 #include 
 
 namespace simdjson {
-namespace fallback {
+namespace haswell {
 namespace ondemand {
 /***
  * JSONPath implementation for compile-time access
@@ -62061,7 +99277,7 @@ namespace json_path {
 // Note: value type must be fully defined before this header is included
 // This is ensured by including this in amalgamated.h after value-inl.h
 
-using ::simdjson::fallback::ondemand::value;
+using ::simdjson::haswell::ondemand::value;
 
 // Path step types
 enum class step_type {
@@ -62195,7 +99411,7 @@ struct json_path_parser {
 // Compile-time path accessor generator
 template
 struct path_accessor {
-  using value = ::simdjson::fallback::ondemand::value;
+  using value = ::simdjson::haswell::ondemand::value;
 
   static constexpr auto parser = json_path_parser();
   static constexpr std::size_t num_steps = parser.count_steps();
@@ -62673,14 +99889,14 @@ struct path_accessor {
 
 // Compile-time path accessor with validation
 template
-inline simdjson_result<::simdjson::fallback::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::haswell::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::fallback::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::haswell::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
@@ -62911,89 +100127,85 @@ struct pointer_accessor {
 
 // Compile-time JSON Pointer accessor with validation
 template
-inline simdjson_result<::simdjson::fallback::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::haswell::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::fallback::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::haswell::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 } // namespace json_path
 } // namespace ondemand
-} // namespace fallback
+} // namespace haswell
 } // namespace simdjson
 
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 #endif // SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
 
-/* end file simdjson/generic/ondemand/compile_time_accessors.h for fallback */
+/* end file simdjson/generic/ondemand/compile_time_accessors.h for haswell */
 
-/* end file simdjson/generic/ondemand/amalgamated.h for fallback */
-/* including simdjson/fallback/end.h: #include "simdjson/fallback/end.h" */
-/* begin file simdjson/fallback/end.h */
+/* end file simdjson/generic/ondemand/amalgamated.h for haswell */
+/* including simdjson/haswell/end.h: #include "simdjson/haswell/end.h" */
+/* begin file simdjson/haswell/end.h */
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/fallback/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-/* undefining SIMDJSON_IMPLEMENTATION from "fallback" */
-#undef SIMDJSON_IMPLEMENTATION
-/* end file simdjson/fallback/end.h */
+#if !SIMDJSON_CAN_ALWAYS_RUN_HASWELL
+SIMDJSON_UNTARGET_REGION
+#endif
 
-#endif // SIMDJSON_FALLBACK_ONDEMAND_H
-/* end file simdjson/fallback/ondemand.h */
-#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(haswell)
-/* including simdjson/haswell/ondemand.h: #include "simdjson/haswell/ondemand.h" */
-/* begin file simdjson/haswell/ondemand.h */
-#ifndef SIMDJSON_HASWELL_ONDEMAND_H
-#define SIMDJSON_HASWELL_ONDEMAND_H
+/* undefining SIMDJSON_IMPLEMENTATION from "haswell" */
+#undef SIMDJSON_IMPLEMENTATION
+/* end file simdjson/haswell/end.h */
 
-/* including simdjson/haswell/begin.h: #include "simdjson/haswell/begin.h" */
-/* begin file simdjson/haswell/begin.h */
-/* defining SIMDJSON_IMPLEMENTATION to "haswell" */
-#define SIMDJSON_IMPLEMENTATION haswell
+#endif // SIMDJSON_HASWELL_ONDEMAND_H
+/* end file simdjson/haswell/ondemand.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(icelake)
+/* including simdjson/icelake/ondemand.h: #include "simdjson/icelake/ondemand.h" */
+/* begin file simdjson/icelake/ondemand.h */
+#ifndef SIMDJSON_ICELAKE_ONDEMAND_H
+#define SIMDJSON_ICELAKE_ONDEMAND_H
 
-/* including simdjson/haswell/base.h: #include "simdjson/haswell/base.h" */
-/* begin file simdjson/haswell/base.h */
-#ifndef SIMDJSON_HASWELL_BASE_H
-#define SIMDJSON_HASWELL_BASE_H
+/* including simdjson/icelake/begin.h: #include "simdjson/icelake/begin.h" */
+/* begin file simdjson/icelake/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "icelake" */
+#define SIMDJSON_IMPLEMENTATION icelake
+/* including simdjson/icelake/base.h: #include "simdjson/icelake/base.h" */
+/* begin file simdjson/icelake/base.h */
+#ifndef SIMDJSON_ICELAKE_BASE_H
+#define SIMDJSON_ICELAKE_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #include "simdjson/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_HASWELL
+// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_ICELAKE
 namespace simdjson {
 /**
- * Implementation for Haswell (Intel AVX2).
+ * Implementation for Icelake (Intel AVX512).
  */
-namespace haswell {
+namespace icelake {
 
 class implementation;
 
-namespace {
-namespace simd {
-template  struct simd8;
-template  struct simd8x64;
-} // namespace simd
-} // unnamed namespace
-
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
-#endif // SIMDJSON_HASWELL_BASE_H
-/* end file simdjson/haswell/base.h */
-/* including simdjson/haswell/intrinsics.h: #include "simdjson/haswell/intrinsics.h" */
-/* begin file simdjson/haswell/intrinsics.h */
-#ifndef SIMDJSON_HASWELL_INTRINSICS_H
-#define SIMDJSON_HASWELL_INTRINSICS_H
+#endif // SIMDJSON_ICELAKE_BASE_H
+/* end file simdjson/icelake/base.h */
+/* including simdjson/icelake/intrinsics.h: #include "simdjson/icelake/intrinsics.h" */
+/* begin file simdjson/icelake/intrinsics.h */
+#ifndef SIMDJSON_ICELAKE_INTRINSICS_H
+#define SIMDJSON_ICELAKE_INTRINSICS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 #if SIMDJSON_VISUAL_STUDIO
@@ -63030,6 +100242,14 @@ template  struct simd8x64;
 #include 
 #include 
 #include    // for  _mm_clmulepi64_si128
+// Important: we need the AVX-512 headers:
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
 // unfortunately, we may not get _blsr_u64, but, thankfully, clang
 // has it as a macro.
 #ifndef _blsr_u64
@@ -63038,34 +100258,27 @@ template  struct simd8x64;
 #endif //  _blsr_u64
 #endif // SIMDJSON_CLANG_VISUAL_STUDIO
 
-static_assert(sizeof(__m256i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for haswell kernel.");
+static_assert(sizeof(__m512i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for icelake");
 
-#endif // SIMDJSON_HASWELL_INTRINSICS_H
-/* end file simdjson/haswell/intrinsics.h */
+#endif // SIMDJSON_ICELAKE_INTRINSICS_H
+/* end file simdjson/icelake/intrinsics.h */
 
-#if !SIMDJSON_CAN_ALWAYS_RUN_HASWELL
-// We enable bmi2 only if LLVM/clang is used, because GCC may not
-// make good use of it. See https://github.com/simdjson/simdjson/pull/2243
-#if defined(__clang__)
-SIMDJSON_TARGET_REGION("avx2,bmi,bmi2,pclmul,lzcnt,popcnt")
-#else
-SIMDJSON_TARGET_REGION("avx2,bmi,pclmul,lzcnt,popcnt")
-#endif
+#if !SIMDJSON_CAN_ALWAYS_RUN_ICELAKE
+SIMDJSON_TARGET_REGION("avx512f,avx512dq,avx512cd,avx512bw,avx512vbmi,avx512vbmi2,avx512vl,avx2,bmi,pclmul,lzcnt,popcnt")
 #endif
 
-/* including simdjson/haswell/bitmanipulation.h: #include "simdjson/haswell/bitmanipulation.h" */
-/* begin file simdjson/haswell/bitmanipulation.h */
-#ifndef SIMDJSON_HASWELL_BITMANIPULATION_H
-#define SIMDJSON_HASWELL_BITMANIPULATION_H
+/* including simdjson/icelake/bitmanipulation.h: #include "simdjson/icelake/bitmanipulation.h" */
+/* begin file simdjson/icelake/bitmanipulation.h */
+#ifndef SIMDJSON_ICELAKE_BITMANIPULATION_H
+#define SIMDJSON_ICELAKE_BITMANIPULATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/bitmask.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace {
 
 // We sometimes call trailing_zero on inputs that are zero,
@@ -63101,7 +100314,7 @@ simdjson_inline int leading_zeroes(uint64_t input_num) {
 
 #if SIMDJSON_REGULAR_VISUAL_STUDIO
 simdjson_inline unsigned __int64 count_ones(uint64_t input_num) {
-  // note: we do not support legacy 32-bit Windows in this kernel
+  // note: we do not support legacy 32-bit Windows
   return __popcnt64(input_num);// Visual Studio wants two underscores
 }
 #else
@@ -63122,23 +100335,23 @@ simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
 }
 
 } // unnamed namespace
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
-#endif // SIMDJSON_HASWELL_BITMANIPULATION_H
-/* end file simdjson/haswell/bitmanipulation.h */
-/* including simdjson/haswell/bitmask.h: #include "simdjson/haswell/bitmask.h" */
-/* begin file simdjson/haswell/bitmask.h */
-#ifndef SIMDJSON_HASWELL_BITMASK_H
-#define SIMDJSON_HASWELL_BITMASK_H
+#endif // SIMDJSON_ICELAKE_BITMANIPULATION_H
+/* end file simdjson/icelake/bitmanipulation.h */
+/* including simdjson/icelake/bitmask.h: #include "simdjson/icelake/bitmask.h" */
+/* begin file simdjson/icelake/bitmask.h */
+#ifndef SIMDJSON_ICELAKE_BITMASK_H
+#define SIMDJSON_ICELAKE_BITMASK_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace {
 
 //
@@ -63155,112 +100368,72 @@ simdjson_inline uint64_t prefix_xor(const uint64_t bitmask) {
 }
 
 } // unnamed namespace
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
-#endif // SIMDJSON_HASWELL_BITMASK_H
-/* end file simdjson/haswell/bitmask.h */
-/* including simdjson/haswell/numberparsing_defs.h: #include "simdjson/haswell/numberparsing_defs.h" */
-/* begin file simdjson/haswell/numberparsing_defs.h */
-#ifndef SIMDJSON_HASWELL_NUMBERPARSING_DEFS_H
-#define SIMDJSON_HASWELL_NUMBERPARSING_DEFS_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#endif // SIMDJSON_ICELAKE_BITMASK_H
+/* end file simdjson/icelake/bitmask.h */
+/* including simdjson/icelake/simd.h: #include "simdjson/icelake/simd.h" */
+/* begin file simdjson/icelake/simd.h */
+#ifndef SIMDJSON_ICELAKE_SIMD_H
+#define SIMDJSON_ICELAKE_SIMD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-namespace simdjson {
-namespace haswell {
-namespace numberparsing {
-
-/** @private */
-static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
-  // this actually computes *16* values so we are being wasteful.
-  const __m128i ascii0 = _mm_set1_epi8('0');
-  const __m128i mul_1_10 =
-      _mm_setr_epi8(10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1);
-  const __m128i mul_1_100 = _mm_setr_epi16(100, 1, 100, 1, 100, 1, 100, 1);
-  const __m128i mul_1_10000 =
-      _mm_setr_epi16(10000, 1, 10000, 1, 10000, 1, 10000, 1);
-  const __m128i input = _mm_sub_epi8(
-      _mm_loadu_si128(reinterpret_cast(chars)), ascii0);
-  const __m128i t1 = _mm_maddubs_epi16(input, mul_1_10);
-  const __m128i t2 = _mm_madd_epi16(t1, mul_1_100);
-  const __m128i t3 = _mm_packus_epi32(t2, t2);
-  const __m128i t4 = _mm_madd_epi16(t3, mul_1_10000);
-  return _mm_cvtsi128_si32(
-      t4); // only captures the sum of the first 8 digits, drop the rest
-}
+#if defined(__GNUC__) && !defined(__clang__)
+#if __GNUC__ == 8
+#define SIMDJSON_GCC8 1
+#endif //  __GNUC__ == 8
+#endif // defined(__GNUC__) && !defined(__clang__)
 
-/** @private */
-simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
-  internal::value128 answer;
-#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
-#if SIMDJSON_IS_ARM64
-  // ARM64 has native support for 64-bit multiplications, no need to emultate
-  answer.high = __umulh(value1, value2);
-  answer.low = value1 * value2;
-#else
-  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
-#endif // SIMDJSON_IS_ARM64
-#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
-  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
-  answer.low = uint64_t(r);
-  answer.high = uint64_t(r >> 64);
-#endif
-  return answer;
+#if SIMDJSON_GCC8
+/**
+ * GCC 8 fails to provide _mm512_set_epi8. We roll our own.
+ */
+inline __m512i _mm512_set_epi8(uint8_t a0, uint8_t a1, uint8_t a2, uint8_t a3, uint8_t a4, uint8_t a5, uint8_t a6, uint8_t a7, uint8_t a8, uint8_t a9, uint8_t a10, uint8_t a11, uint8_t a12, uint8_t a13, uint8_t a14, uint8_t a15, uint8_t a16, uint8_t a17, uint8_t a18, uint8_t a19, uint8_t a20, uint8_t a21, uint8_t a22, uint8_t a23, uint8_t a24, uint8_t a25, uint8_t a26, uint8_t a27, uint8_t a28, uint8_t a29, uint8_t a30, uint8_t a31, uint8_t a32, uint8_t a33, uint8_t a34, uint8_t a35, uint8_t a36, uint8_t a37, uint8_t a38, uint8_t a39, uint8_t a40, uint8_t a41, uint8_t a42, uint8_t a43, uint8_t a44, uint8_t a45, uint8_t a46, uint8_t a47, uint8_t a48, uint8_t a49, uint8_t a50, uint8_t a51, uint8_t a52, uint8_t a53, uint8_t a54, uint8_t a55, uint8_t a56, uint8_t a57, uint8_t a58, uint8_t a59, uint8_t a60, uint8_t a61, uint8_t a62, uint8_t a63) {
+  return _mm512_set_epi64(uint64_t(a7) + (uint64_t(a6) << 8) + (uint64_t(a5) << 16) + (uint64_t(a4) << 24) + (uint64_t(a3) << 32) + (uint64_t(a2) << 40) + (uint64_t(a1) << 48) + (uint64_t(a0) << 56),
+                          uint64_t(a15) + (uint64_t(a14) << 8) + (uint64_t(a13) << 16) + (uint64_t(a12) << 24) + (uint64_t(a11) << 32) + (uint64_t(a10) << 40) + (uint64_t(a9) << 48) + (uint64_t(a8) << 56),
+                          uint64_t(a23) + (uint64_t(a22) << 8) + (uint64_t(a21) << 16) + (uint64_t(a20) << 24) + (uint64_t(a19) << 32) + (uint64_t(a18) << 40) + (uint64_t(a17) << 48) + (uint64_t(a16) << 56),
+                          uint64_t(a31) + (uint64_t(a30) << 8) + (uint64_t(a29) << 16) + (uint64_t(a28) << 24) + (uint64_t(a27) << 32) + (uint64_t(a26) << 40) + (uint64_t(a25) << 48) + (uint64_t(a24) << 56),
+                          uint64_t(a39) + (uint64_t(a38) << 8) + (uint64_t(a37) << 16) + (uint64_t(a36) << 24) + (uint64_t(a35) << 32) + (uint64_t(a34) << 40) + (uint64_t(a33) << 48) + (uint64_t(a32) << 56),
+                          uint64_t(a47) + (uint64_t(a46) << 8) + (uint64_t(a45) << 16) + (uint64_t(a44) << 24) + (uint64_t(a43) << 32) + (uint64_t(a42) << 40) + (uint64_t(a41) << 48) + (uint64_t(a40) << 56),
+                          uint64_t(a55) + (uint64_t(a54) << 8) + (uint64_t(a53) << 16) + (uint64_t(a52) << 24) + (uint64_t(a51) << 32) + (uint64_t(a50) << 40) + (uint64_t(a49) << 48) + (uint64_t(a48) << 56),
+                          uint64_t(a63) + (uint64_t(a62) << 8) + (uint64_t(a61) << 16) + (uint64_t(a60) << 24) + (uint64_t(a59) << 32) + (uint64_t(a58) << 40) + (uint64_t(a57) << 48) + (uint64_t(a56) << 56));
 }
+#endif // SIMDJSON_GCC8
 
-} // namespace numberparsing
-} // namespace haswell
-} // namespace simdjson
-
-#define SIMDJSON_SWAR_NUMBER_PARSING 1
 
-#endif // SIMDJSON_HASWELL_NUMBERPARSING_DEFS_H
-/* end file simdjson/haswell/numberparsing_defs.h */
-/* including simdjson/haswell/simd.h: #include "simdjson/haswell/simd.h" */
-/* begin file simdjson/haswell/simd.h */
-#ifndef SIMDJSON_HASWELL_SIMD_H
-#define SIMDJSON_HASWELL_SIMD_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/intrinsics.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/bitmanipulation.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace {
 namespace simd {
 
   // Forward-declared so they can be used by splat and friends.
   template
   struct base {
-    __m256i value;
+    __m512i value;
 
     // Zero constructor
-    simdjson_inline base() : value{__m256i()} {}
+    simdjson_inline base() : value{__m512i()} {}
 
     // Conversion from SIMD register
-    simdjson_inline base(const __m256i _value) : value(_value) {}
+    simdjson_inline base(const __m512i _value) : value(_value) {}
 
     // Conversion to SIMD register
-    simdjson_inline operator const __m256i&() const { return this->value; }
-    simdjson_inline operator __m256i&() { return this->value; }
+    simdjson_inline operator const __m512i&() const { return this->value; }
+    simdjson_inline operator __m512i&() { return this->value; }
 
     // Bit operations
-    simdjson_inline Child operator|(const Child other) const { return _mm256_or_si256(*this, other); }
-    simdjson_inline Child operator&(const Child other) const { return _mm256_and_si256(*this, other); }
-    simdjson_inline Child operator^(const Child other) const { return _mm256_xor_si256(*this, other); }
-    simdjson_inline Child bit_andnot(const Child other) const { return _mm256_andnot_si256(other, *this); }
+    simdjson_inline Child operator|(const Child other) const { return _mm512_or_si512(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return _mm512_and_si512(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return _mm512_xor_si512(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return _mm512_andnot_si512(other, *this); }
     simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
     simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
     simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
@@ -63276,39 +100449,40 @@ namespace simd {
     typedef uint64_t bitmask2_t;
 
     simdjson_inline base8() : base>() {}
-    simdjson_inline base8(const __m256i _value) : base>(_value) {}
-
-    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return _mm256_cmpeq_epi8(lhs, rhs); }
+    simdjson_inline base8(const __m512i _value) : base>(_value) {}
 
+    friend simdjson_really_inline uint64_t operator==(const simd8 lhs, const simd8 rhs) {
+      return _mm512_cmpeq_epi8_mask(lhs, rhs);
+    }
     static const int SIZE = sizeof(base::value);
 
     template
     simdjson_inline simd8 prev(const simd8 prev_chunk) const {
-      return _mm256_alignr_epi8(*this, _mm256_permute2x128_si256(prev_chunk, *this, 0x21), 16 - N);
+     // workaround for compilers unable to figure out that 16 - N is a constant (GCC 8)
+      constexpr int shift = 16 - N;
+      return _mm512_alignr_epi8(*this, _mm512_permutex2var_epi64(prev_chunk, _mm512_set_epi64(13, 12, 11, 10, 9, 8, 7, 6), *this), shift);
     }
   };
 
   // SIMD byte mask type (returned by things like eq and gt)
   template<>
   struct simd8: base8 {
-    static simdjson_inline simd8 splat(bool _value) { return _mm256_set1_epi8(uint8_t(-(!!_value))); }
+    static simdjson_inline simd8 splat(bool _value) { return _mm512_set1_epi8(uint8_t(-(!!_value))); }
 
     simdjson_inline simd8() : base8() {}
-    simdjson_inline simd8(const __m256i _value) : base8(_value) {}
+    simdjson_inline simd8(const __m512i _value) : base8(_value) {}
     // Splat constructor
     simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
-
-    simdjson_inline int to_bitmask() const { return _mm256_movemask_epi8(*this); }
-    simdjson_inline bool any() const { return !_mm256_testz_si256(*this, *this); }
+    simdjson_inline bool any() const { return !!_mm512_test_epi8_mask (*this, *this); }
     simdjson_inline simd8 operator~() const { return *this ^ true; }
   };
 
   template
   struct base8_numeric: base8 {
-    static simdjson_inline simd8 splat(T _value) { return _mm256_set1_epi8(_value); }
-    static simdjson_inline simd8 zero() { return _mm256_setzero_si256(); }
-    static simdjson_inline simd8 load(const T values[32]) {
-      return _mm256_loadu_si256(reinterpret_cast(values));
+    static simdjson_inline simd8 splat(T _value) { return _mm512_set1_epi8(_value); }
+    static simdjson_inline simd8 zero() { return _mm512_setzero_si512(); }
+    static simdjson_inline simd8 load(const T values[64]) {
+      return _mm512_loadu_si512(reinterpret_cast(values));
     }
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     static simdjson_inline simd8 repeat_16(
@@ -63316,6 +100490,10 @@ namespace simd {
       T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
     ) {
       return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
@@ -63324,14 +100502,14 @@ namespace simd {
     }
 
     simdjson_inline base8_numeric() : base8() {}
-    simdjson_inline base8_numeric(const __m256i _value) : base8(_value) {}
+    simdjson_inline base8_numeric(const __m512i _value) : base8(_value) {}
 
     // Store to array
-    simdjson_inline void store(T dst[32]) const { return _mm256_storeu_si256(reinterpret_cast<__m256i *>(dst), *this); }
+    simdjson_inline void store(T dst[64]) const { return _mm512_storeu_si512(reinterpret_cast<__m512i *>(dst), *this); }
 
     // Addition/subtraction are the same for signed and unsigned
-    simdjson_inline simd8 operator+(const simd8 other) const { return _mm256_add_epi8(*this, other); }
-    simdjson_inline simd8 operator-(const simd8 other) const { return _mm256_sub_epi8(*this, other); }
+    simdjson_inline simd8 operator+(const simd8 other) const { return _mm512_add_epi8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return _mm512_sub_epi8(*this, other); }
     simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
     simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
 
@@ -63341,60 +100519,23 @@ namespace simd {
     // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
     template
     simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
-      return _mm256_shuffle_epi8(lookup_table, *this);
+      return _mm512_shuffle_epi8(lookup_table, *this);
     }
 
     // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
     // Passing a 0 value for mask would be equivalent to writing out every byte to output.
-    // Only the first 32 - count_ones(mask) bytes of the result are significant but 32 bytes
+    // Only the first 64 - count_ones(mask) bytes of the result are significant but 64 bytes
     // get written.
     // Design consideration: it seems like a function with the
     // signature simd8 compress(uint32_t mask) would be
     // sensible, but the AVX ISA makes this kind of approach difficult.
     template
-    simdjson_inline void compress(uint32_t mask, L * output) const {
-      using internal::thintable_epi8;
-      using internal::BitsSetTable256mul2;
-      using internal::pshufb_combine_table;
-      // this particular implementation was inspired by work done by @animetosho
-      // we do it in four steps, first 8 bytes and then second 8 bytes...
-      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
-      uint8_t mask2 = uint8_t(mask >> 8); // second least significant 8 bits
-      uint8_t mask3 = uint8_t(mask >> 16); // ...
-      uint8_t mask4 = uint8_t(mask >> 24); // ...
-      // next line just loads the 64-bit values thintable_epi8[mask1] and
-      // thintable_epi8[mask2] into a 128-bit register, using only
-      // two instructions on most compilers.
-      __m256i shufmask =  _mm256_set_epi64x(thintable_epi8[mask4], thintable_epi8[mask3],
-        thintable_epi8[mask2], thintable_epi8[mask1]);
-      // we increment by 0x08 the second half of the mask and so forth
-      shufmask =
-      _mm256_add_epi8(shufmask, _mm256_set_epi32(0x18181818, 0x18181818,
-         0x10101010, 0x10101010, 0x08080808, 0x08080808, 0, 0));
-      // this is the version "nearly pruned"
-      __m256i pruned = _mm256_shuffle_epi8(*this, shufmask);
-      // we still need to put the  pieces back together.
-      // we compute the popcount of the first words:
-      int pop1 = BitsSetTable256mul2[mask1];
-      int pop3 = BitsSetTable256mul2[mask3];
-
-      // then load the corresponding mask
-      // could be done with _mm256_loadu2_m128i but many standard libraries omit this intrinsic.
-      __m256i v256 = _mm256_castsi128_si256(
-        _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop1 * 8)));
-      __m256i compactmask = _mm256_insertf128_si256(v256,
-         _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop3 * 8)), 1);
-      __m256i almostthere =  _mm256_shuffle_epi8(pruned, compactmask);
-      // We just need to write out the result.
-      // This is the tricky bit that is hard to do
-      // if we want to return a SIMD register, since there
-      // is no single-instruction approach to recombine
-      // the two 128-bit lanes with an offset.
-      __m128i v128;
-      v128 = _mm256_castsi256_si128(almostthere);
-      _mm_storeu_si128( reinterpret_cast<__m128i *>(output), v128);
-      v128 = _mm256_extractf128_si256(almostthere, 1);
-      _mm_storeu_si128( reinterpret_cast<__m128i *>(output + 16 - count_ones(mask & 0xFFFF)), v128);
+    simdjson_inline void compress(uint64_t mask, L * output) const {
+      // we deliberately avoid _mm512_mask_compressstoreu_epi8 for portability
+      // (AMD Zen4 has terrible performance with it, it is effectively broken)
+      // _mm512_mask_compressstoreu_epi8 (output,~mask,*this);
+      __m512i compressed = _mm512_maskz_compress_epi8(~mask, *this);
+      _mm512_storeu_si512(output, compressed); // could use a mask
     }
 
     template
@@ -63416,29 +100557,42 @@ namespace simd {
   template<>
   struct simd8 : base8_numeric {
     simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
+    simdjson_inline simd8(const __m512i _value) : base8_numeric(_value) {}
     // Splat constructor
     simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
     // Array constructor
-    simdjson_inline simd8(const int8_t values[32]) : simd8(load(values)) {}
+    simdjson_inline simd8(const int8_t values[64]) : simd8(load(values)) {}
     // Member-by-member initialization
     simdjson_inline simd8(
       int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
       int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15,
       int8_t v16, int8_t v17, int8_t v18, int8_t v19, int8_t v20, int8_t v21, int8_t v22, int8_t v23,
-      int8_t v24, int8_t v25, int8_t v26, int8_t v27, int8_t v28, int8_t v29, int8_t v30, int8_t v31
-    ) : simd8(_mm256_setr_epi8(
-      v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15,
-      v16,v17,v18,v19,v20,v21,v22,v23,
-      v24,v25,v26,v27,v28,v29,v30,v31
+      int8_t v24, int8_t v25, int8_t v26, int8_t v27, int8_t v28, int8_t v29, int8_t v30, int8_t v31,
+      int8_t v32, int8_t v33, int8_t v34, int8_t v35, int8_t v36, int8_t v37, int8_t v38, int8_t v39,
+      int8_t v40, int8_t v41, int8_t v42, int8_t v43, int8_t v44, int8_t v45, int8_t v46, int8_t v47,
+      int8_t v48, int8_t v49, int8_t v50, int8_t v51, int8_t v52, int8_t v53, int8_t v54, int8_t v55,
+      int8_t v56, int8_t v57, int8_t v58, int8_t v59, int8_t v60, int8_t v61, int8_t v62, int8_t v63
+    ) : simd8(_mm512_set_epi8(
+      v63, v62, v61, v60, v59, v58, v57, v56,
+      v55, v54, v53, v52, v51, v50, v49, v48,
+      v47, v46, v45, v44, v43, v42, v41, v40,
+      v39, v38, v37, v36, v35, v34, v33, v32,
+      v31, v30, v29, v28, v27, v26, v25, v24,
+      v23, v22, v21, v20, v19, v18, v17, v16,
+      v15, v14, v13, v12, v11, v10,  v9,  v8,
+       v7,  v6,  v5,  v4,  v3,  v2,  v1,  v0
     )) {}
+
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
       int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
       int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
     ) {
       return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
@@ -63447,39 +100601,53 @@ namespace simd {
     }
 
     // Order-sensitive comparisons
-    simdjson_inline simd8 max_val(const simd8 other) const { return _mm256_max_epi8(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return _mm256_min_epi8(*this, other); }
-    simdjson_inline simd8 operator>(const simd8 other) const { return _mm256_cmpgt_epi8(*this, other); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return _mm256_cmpgt_epi8(other, *this); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm512_max_epi8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm512_min_epi8(*this, other); }
+
+    simdjson_inline simd8 operator>(const simd8 other) const { return _mm512_maskz_abs_epi8(_mm512_cmpgt_epi8_mask(*this, other),_mm512_set1_epi8(uint8_t(0x80))); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return _mm512_maskz_abs_epi8(_mm512_cmpgt_epi8_mask(other, *this),_mm512_set1_epi8(uint8_t(0x80))); }
   };
 
   // Unsigned bytes
   template<>
   struct simd8: base8_numeric {
     simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
+    simdjson_inline simd8(const __m512i _value) : base8_numeric(_value) {}
     // Splat constructor
     simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
     // Array constructor
-    simdjson_inline simd8(const uint8_t values[32]) : simd8(load(values)) {}
+    simdjson_inline simd8(const uint8_t values[64]) : simd8(load(values)) {}
     // Member-by-member initialization
     simdjson_inline simd8(
       uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
       uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15,
       uint8_t v16, uint8_t v17, uint8_t v18, uint8_t v19, uint8_t v20, uint8_t v21, uint8_t v22, uint8_t v23,
-      uint8_t v24, uint8_t v25, uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30, uint8_t v31
-    ) : simd8(_mm256_setr_epi8(
-      v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15,
-      v16,v17,v18,v19,v20,v21,v22,v23,
-      v24,v25,v26,v27,v28,v29,v30,v31
+      uint8_t v24, uint8_t v25, uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30, uint8_t v31,
+      uint8_t v32, uint8_t v33, uint8_t v34, uint8_t v35, uint8_t v36, uint8_t v37, uint8_t v38, uint8_t v39,
+      uint8_t v40, uint8_t v41, uint8_t v42, uint8_t v43, uint8_t v44, uint8_t v45, uint8_t v46, uint8_t v47,
+      uint8_t v48, uint8_t v49, uint8_t v50, uint8_t v51, uint8_t v52, uint8_t v53, uint8_t v54, uint8_t v55,
+      uint8_t v56, uint8_t v57, uint8_t v58, uint8_t v59, uint8_t v60, uint8_t v61, uint8_t v62, uint8_t v63
+    ) : simd8(_mm512_set_epi8(
+      v63, v62, v61, v60, v59, v58, v57, v56,
+      v55, v54, v53, v52, v51, v50, v49, v48,
+      v47, v46, v45, v44, v43, v42, v41, v40,
+      v39, v38, v37, v36, v35, v34, v33, v32,
+      v31, v30, v29, v28, v27, v26, v25, v24,
+      v23, v22, v21, v20, v19, v18, v17, v16,
+      v15, v14, v13, v12, v11, v10,  v9,  v8,
+       v7,  v6,  v5,  v4,  v3,  v2,  v1,  v0
     )) {}
+
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
       uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
       uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
     ) {
       return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
@@ -63488,130 +100656,115 @@ namespace simd {
     }
 
     // Saturated math
-    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm256_adds_epu8(*this, other); }
-    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm256_subs_epu8(*this, other); }
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm512_adds_epu8(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm512_subs_epu8(*this, other); }
 
     // Order-specific operations
-    simdjson_inline simd8 max_val(const simd8 other) const { return _mm256_max_epu8(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return _mm256_min_epu8(other, *this); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm512_max_epu8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm512_min_epu8(other, *this); }
     // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
     simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
     // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
     simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
-    simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
-    simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
+    simdjson_inline uint64_t operator<=(const simd8 other) const { return other.max_val(*this) == other; }
+    simdjson_inline uint64_t operator>=(const simd8 other) const { return other.min_val(*this) == other; }
     simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
     simdjson_inline simd8 operator<(const simd8 other) const { return this->lt_bits(other).any_bits_set(); }
 
     // Bit-specific operations
-    simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
+    simdjson_inline simd8 bits_not_set() const { return _mm512_mask_blend_epi8(*this == uint8_t(0), _mm512_set1_epi8(0), _mm512_set1_epi8(-1)); }
     simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
     simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
     simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
-    simdjson_inline bool is_ascii() const { return _mm256_movemask_epi8(*this) == 0; }
-    simdjson_inline bool bits_not_set_anywhere() const { return _mm256_testz_si256(*this, *this); }
+
+    simdjson_inline bool is_ascii() const { return _mm512_movepi8_mask(*this) == 0; }
+    simdjson_inline bool bits_not_set_anywhere() const {
+      return !_mm512_test_epi8_mask(*this, *this);
+    }
     simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
-    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return _mm256_testz_si256(*this, bits); }
+    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return !_mm512_test_epi8_mask(*this, bits); }
     simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
     template
-    simdjson_inline simd8 shr() const { return simd8(_mm256_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
+    simdjson_inline simd8 shr() const { return simd8(_mm512_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
     template
-    simdjson_inline simd8 shl() const { return simd8(_mm256_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
+    simdjson_inline simd8 shl() const { return simd8(_mm512_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
     // Get one of the bits and make a bitmask out of it.
     // e.g. value.get_bit<7>() gets the high bit
     template
-    simdjson_inline int get_bit() const { return _mm256_movemask_epi8(_mm256_slli_epi16(*this, 7-N)); }
+    simdjson_inline uint64_t get_bit() const { return _mm512_movepi8_mask(_mm512_slli_epi16(*this, 7-N)); }
   };
 
   template
   struct simd8x64 {
     static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
-    static_assert(NUM_CHUNKS == 2, "Haswell kernel should use two registers per 64-byte block.");
+    static_assert(NUM_CHUNKS == 1, "Icelake kernel should use one register per 64-byte block.");
     const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
     simd8x64(const simd8x64& o) = delete; // no copy allowed
     simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
     simd8x64() = delete; // no default constructor allowed
 
     simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1) : chunks{chunk0, chunk1} {}
-    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+32)} {}
+    simdjson_inline simd8x64(const simd8 chunk0) : chunks{chunk0} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr)} {}
 
     simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
-      uint32_t mask1 = uint32_t(mask);
-      uint32_t mask2 = uint32_t(mask >> 32);
-      this->chunks[0].compress(mask1, output);
-      this->chunks[1].compress(mask2, output + 32 - count_ones(mask1));
+      this->chunks[0].compress(mask, output);
       return 64 - count_ones(mask);
     }
 
     simdjson_inline void store(T ptr[64]) const {
       this->chunks[0].store(ptr+sizeof(simd8)*0);
-      this->chunks[1].store(ptr+sizeof(simd8)*1);
-    }
-
-    simdjson_inline uint64_t to_bitmask() const {
-      uint64_t r_lo = uint32_t(this->chunks[0].to_bitmask());
-      uint64_t r_hi =                       this->chunks[1].to_bitmask();
-      return r_lo | (r_hi << 32);
     }
 
     simdjson_inline simd8 reduce_or() const {
-      return this->chunks[0] | this->chunks[1];
+      return this->chunks[0];
     }
 
     simdjson_inline simd8x64 bit_or(const T m) const {
       const simd8 mask = simd8::splat(m);
       return simd8x64(
-        this->chunks[0] | mask,
-        this->chunks[1] | mask
+        this->chunks[0] | mask
       );
     }
 
     simdjson_inline uint64_t eq(const T m) const {
       const simd8 mask = simd8::splat(m);
-      return  simd8x64(
-        this->chunks[0] == mask,
-        this->chunks[1] == mask
-      ).to_bitmask();
+      return this->chunks[0] == mask;
     }
 
     simdjson_inline uint64_t eq(const simd8x64 &other) const {
-      return  simd8x64(
-        this->chunks[0] == other.chunks[0],
-        this->chunks[1] == other.chunks[1]
-      ).to_bitmask();
+      return this->chunks[0] == other.chunks[0];
     }
 
     simdjson_inline uint64_t lteq(const T m) const {
       const simd8 mask = simd8::splat(m);
-      return  simd8x64(
-        this->chunks[0] <= mask,
-        this->chunks[1] <= mask
-      ).to_bitmask();
+      return this->chunks[0] <= mask;
     }
   }; // struct simd8x64
 
 } // namespace simd
 
 } // unnamed namespace
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
-#endif // SIMDJSON_HASWELL_SIMD_H
-/* end file simdjson/haswell/simd.h */
-/* including simdjson/haswell/stringparsing_defs.h: #include "simdjson/haswell/stringparsing_defs.h" */
-/* begin file simdjson/haswell/stringparsing_defs.h */
-#ifndef SIMDJSON_HASWELL_STRINGPARSING_DEFS_H
-#define SIMDJSON_HASWELL_STRINGPARSING_DEFS_H
+#endif // SIMDJSON_ICELAKE_SIMD_H
+/* end file simdjson/icelake/simd.h */
+/* including simdjson/icelake/stringparsing_defs.h: #include "simdjson/icelake/stringparsing_defs.h" */
+/* begin file simdjson/icelake/stringparsing_defs.h */
+#ifndef SIMDJSON_ICELAKE_STRINGPARSING_DEFS_H
+#define SIMDJSON_ICELAKE_STRINGPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/simd.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/bitmanipulation.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace {
 
 using namespace simd;
@@ -63619,7 +100772,7 @@ using namespace simd;
 // Holds backslashes and quotes locations.
 struct backslash_and_quote {
 public:
-  static constexpr uint32_t BYTES_PROCESSED = 32;
+  static constexpr uint32_t BYTES_PROCESSED = 64;
   simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
 
   simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
@@ -63627,8 +100780,8 @@ struct backslash_and_quote {
   simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
   simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
 
-  uint32_t bs_bits;
-  uint32_t quote_bits;
+  uint64_t bs_bits;
+  uint64_t quote_bits;
 }; // struct backslash_and_quote
 
 simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
@@ -63639,20 +100792,21 @@ simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uin
   // store to dest unconditionally - we can overwrite the bits we don't like later
   v.store(dst);
   return {
-      static_cast((v == '\\').to_bitmask()),     // bs_bits
-      static_cast((v == '"').to_bitmask()), // quote_bits
+      static_cast(v == '\\'), // bs_bits
+      static_cast(v == '"'), // quote_bits
   };
 }
 
 
+
 struct escaping {
-  static constexpr uint32_t BYTES_PROCESSED = 32;
+  static constexpr uint32_t BYTES_PROCESSED = 64;
   simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
 
   simdjson_inline bool has_escape() { return escape_bits != 0; }
-  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits); }
+  simdjson_inline int escape_index() { return trailing_zeroes(uint64_t(escape_bits)); }
 
-  uint64_t escape_bits;
+  __mmask64 escape_bits;
 }; // struct escaping
 
 
@@ -63661,30 +100815,93 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
   static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
   simd8 v(src);
   v.store(dst);
-  simd8 is_quote = (v == '"');
-  simd8 is_backslash = (v == '\\');
-  simd8 is_control = (v < 32);
+  __mmask64 is_quote = _mm512_cmpeq_epi8_mask(v, _mm512_set1_epi8('"'));
+  __mmask64 is_backslash = _mm512_cmpeq_epi8_mask(v, _mm512_set1_epi8('\\'));
+  __mmask64 is_control = _mm512_cmplt_epi8_mask(v, _mm512_set1_epi8(32));
   return {
-    uint64_t((is_backslash | is_quote | is_control).to_bitmask())
+    (is_backslash | is_quote | is_control)
   };
 }
 
+
+
+
 } // unnamed namespace
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
-#endif // SIMDJSON_HASWELL_STRINGPARSING_DEFS_H
-/* end file simdjson/haswell/stringparsing_defs.h */
-/* end file simdjson/haswell/begin.h */
-/* including simdjson/generic/ondemand/amalgamated.h for haswell: #include "simdjson/generic/ondemand/amalgamated.h" */
-/* begin file simdjson/generic/ondemand/amalgamated.h for haswell */
-#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H)
+#endif // SIMDJSON_ICELAKE_STRINGPARSING_DEFS_H
+/* end file simdjson/icelake/stringparsing_defs.h */
+/* including simdjson/icelake/numberparsing_defs.h: #include "simdjson/icelake/numberparsing_defs.h" */
+/* begin file simdjson/icelake/numberparsing_defs.h */
+#ifndef SIMDJSON_ICELAKE_NUMBERPARSING_DEFS_H
+#define SIMDJSON_ICELAKE_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace icelake {
+namespace numberparsing {
+
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  // this actually computes *16* values so we are being wasteful.
+  const __m128i ascii0 = _mm_set1_epi8('0');
+  const __m128i mul_1_10 =
+      _mm_setr_epi8(10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1);
+  const __m128i mul_1_100 = _mm_setr_epi16(100, 1, 100, 1, 100, 1, 100, 1);
+  const __m128i mul_1_10000 =
+      _mm_setr_epi16(10000, 1, 10000, 1, 10000, 1, 10000, 1);
+  const __m128i input = _mm_sub_epi8(
+      _mm_loadu_si128(reinterpret_cast(chars)), ascii0);
+  const __m128i t1 = _mm_maddubs_epi16(input, mul_1_10);
+  const __m128i t2 = _mm_madd_epi16(t1, mul_1_100);
+  const __m128i t3 = _mm_packus_epi32(t2, t2);
+  const __m128i t4 = _mm_madd_epi16(t3, mul_1_10000);
+  return _mm_cvtsi128_si32(
+      t4); // only captures the sum of the first 8 digits, drop the rest
+}
+
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+#if SIMDJSON_IS_ARM64
+  // ARM64 has native support for 64-bit multiplications, no need to emultate
+  answer.high = __umulh(value1, value2);
+  answer.low = value1 * value2;
+#else
+  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
+#endif // SIMDJSON_IS_ARM64
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+#endif
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace icelake
+} // namespace simdjson
+
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+
+#endif // SIMDJSON_ICELAKE_NUMBERPARSING_DEFS_H
+/* end file simdjson/icelake/numberparsing_defs.h */
+/* end file simdjson/icelake/begin.h */
+/* including simdjson/generic/ondemand/amalgamated.h for icelake: #include "simdjson/generic/ondemand/amalgamated.h" */
+/* begin file simdjson/generic/ondemand/amalgamated.h for icelake */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
 #error simdjson/generic/ondemand/dependencies.h must be included before simdjson/generic/ondemand/amalgamated.h!
 #endif
 
 // Stuff other things depend on
-/* including simdjson/generic/ondemand/base.h for haswell: #include "simdjson/generic/ondemand/base.h" */
-/* begin file simdjson/generic/ondemand/base.h for haswell */
+/* including simdjson/generic/ondemand/base.h for icelake: #include "simdjson/generic/ondemand/base.h" */
+/* begin file simdjson/generic/ondemand/base.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -63693,7 +100910,7 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 /**
  * A fast, simple, DOM-like interface that parses JSON as you use it.
  *
@@ -63704,8 +100921,8 @@ namespace ondemand {
 /** Represents the depth of a JSON value (number of nested arrays/objects). */
 using depth_t = int32_t;
 
-/** @copydoc simdjson::haswell::number_type */
-using number_type = simdjson::haswell::number_type;
+/** @copydoc simdjson::icelake::number_type */
+using number_type = simdjson::icelake::number_type;
 
 /** @private Position in the JSON buffer indexes */
 using token_position = const uint32_t *;
@@ -63728,13 +100945,13 @@ class value;
 class value_iterator;
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_BASE_H
-/* end file simdjson/generic/ondemand/base.h for haswell */
-/* including simdjson/generic/ondemand/deserialize.h for haswell: #include "simdjson/generic/ondemand/deserialize.h" */
-/* begin file simdjson/generic/ondemand/deserialize.h for haswell */
+/* end file simdjson/generic/ondemand/base.h for icelake */
+/* including simdjson/generic/ondemand/deserialize.h for icelake: #include "simdjson/generic/ondemand/deserialize.h" */
+/* begin file simdjson/generic/ondemand/deserialize.h for icelake */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -63754,35 +100971,35 @@ template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 
 template 
 concept is_builtin_deserializable_v = is_builtin_deserializable::value;
 
-template 
+template 
 concept custom_deserializable = tag_invocable;
 
-template 
+template 
 concept deserializable = custom_deserializable || is_builtin_deserializable_v || concepts::optional_type;
 
-template 
+template 
 concept nothrow_custom_deserializable = nothrow_tag_invocable;
 
 // built-in types are noexcept and if an error happens, the value simply gets ignored and the error is returned.
-template 
+template 
 concept nothrow_deserializable = nothrow_custom_deserializable || is_builtin_deserializable_v;
 
 /// Deserialize Tag
 inline constexpr struct deserialize_tag {
-  using array_type = haswell::ondemand::array;
-  using object_type = haswell::ondemand::object;
-  using value_type = haswell::ondemand::value;
-  using document_type = haswell::ondemand::document;
-  using document_reference_type = haswell::ondemand::document_reference;
+  using array_type = icelake::ondemand::array;
+  using object_type = icelake::ondemand::object;
+  using value_type = icelake::ondemand::value;
+  using document_type = icelake::ondemand::document;
+  using document_reference_type = icelake::ondemand::document_reference;
 
   // Customization Point for array
   template 
@@ -63827,9 +101044,9 @@ inline constexpr struct deserialize_tag {
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
 
-/* end file simdjson/generic/ondemand/deserialize.h for haswell */
-/* including simdjson/generic/ondemand/value_iterator.h for haswell: #include "simdjson/generic/ondemand/value_iterator.h" */
-/* begin file simdjson/generic/ondemand/value_iterator.h for haswell */
+/* end file simdjson/generic/ondemand/deserialize.h for icelake */
+/* including simdjson/generic/ondemand/value_iterator.h for icelake: #include "simdjson/generic/ondemand/value_iterator.h" */
+/* begin file simdjson/generic/ondemand/value_iterator.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -63839,7 +101056,7 @@ inline constexpr struct deserialize_tag {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 /**
@@ -64304,21 +101521,22 @@ class value_iterator {
 
   friend class document;
   friend class object;
+  friend class object_iterator;
   friend class array;
   friend class value;
   friend class field;
 }; // value_iterator
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::value_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::value_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -64326,9 +101544,9 @@ struct simdjson_result : public haswell::impl
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
-/* end file simdjson/generic/ondemand/value_iterator.h for haswell */
-/* including simdjson/generic/ondemand/value.h for haswell: #include "simdjson/generic/ondemand/value.h" */
-/* begin file simdjson/generic/ondemand/value.h for haswell */
+/* end file simdjson/generic/ondemand/value_iterator.h for icelake */
+/* including simdjson/generic/ondemand/value.h for icelake: #include "simdjson/generic/ondemand/value.h" */
+/* begin file simdjson/generic/ondemand/value.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -64344,7 +101562,7 @@ struct simdjson_result : public haswell::impl
 
 namespace simdjson {
 
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 /**
  * An ephemeral JSON value returned during iteration. It is only valid for as long as you do
@@ -65058,20 +102276,20 @@ class value {
 };
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::value &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::value &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result get_array() noexcept;
-  simdjson_inline simdjson_result get_object() noexcept;
+  simdjson_inline simdjson_result get_array() noexcept;
+  simdjson_inline simdjson_result get_object() noexcept;
 
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
@@ -65083,7 +102301,7 @@ struct simdjson_result : public haswell::implementatio
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
@@ -65094,20 +102312,20 @@ struct simdjson_result : public haswell::implementatio
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator haswell::ondemand::array() noexcept(false);
-  simdjson_inline operator haswell::ondemand::object() noexcept(false);
+  simdjson_inline operator icelake::ondemand::array() noexcept(false);
+  simdjson_inline operator icelake::ondemand::object() noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator haswell::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator icelake::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
 
   /**
    * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
@@ -65131,9 +102349,9 @@ struct simdjson_result : public haswell::implementatio
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field(const char *key) noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field(const char *key) noexcept;
 
   /**
    * Look up a field by name on an object, without regard to key order.
@@ -65145,7 +102363,7 @@ struct simdjson_result : public haswell::implementatio
    * in question is large. The fact that the extra code is there also bumps the executable size.
    *
    * We default operator[] on find_field_unordered() for convenience.
-   * It is the defaul because it would be highly surprising (and hard to debug) if the
+   * It is the default because it would be highly surprising (and hard to debug) if the
    * default behavior failed to look up a field just because it was in the wrong order--and many
    * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
    *
@@ -65155,14 +102373,14 @@ struct simdjson_result : public haswell::implementatio
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](const char *key) noexcept;
-  simdjson_result operator[](int) noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](const char *key) noexcept;
+  simdjson_result operator[](int) noexcept = delete;
 
   /**
    * Get the type of this JSON value. It does not validate or consume the value.
@@ -65186,13 +102404,13 @@ struct simdjson_result : public haswell::implementatio
    * better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just
    * let it throw an exception).
    */
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
 
   /** @copydoc simdjson_inline std::string_view value::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
@@ -65202,17 +102420,17 @@ struct simdjson_result : public haswell::implementatio
   simdjson_inline simdjson_result current_location() noexcept;
   /** @copydoc simdjson_inline int32_t current_depth() const noexcept */
   simdjson_inline simdjson_result current_depth() const noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_H
-/* end file simdjson/generic/ondemand/value.h for haswell */
-/* including simdjson/generic/ondemand/logger.h for haswell: #include "simdjson/generic/ondemand/logger.h" */
-/* begin file simdjson/generic/ondemand/logger.h for haswell */
+/* end file simdjson/generic/ondemand/value.h for icelake */
+/* including simdjson/generic/ondemand/logger.h for icelake: #include "simdjson/generic/ondemand/logger.h" */
+/* begin file simdjson/generic/ondemand/logger.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -65221,7 +102439,7 @@ struct simdjson_result : public haswell::implementatio
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 // Logging should be free unless SIMDJSON_VERBOSE_LOGGING is set. Importantly, it is critical
@@ -65267,13 +102485,13 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 
 } // namespace logger
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
-/* end file simdjson/generic/ondemand/logger.h for haswell */
-/* including simdjson/generic/ondemand/token_iterator.h for haswell: #include "simdjson/generic/ondemand/token_iterator.h" */
-/* begin file simdjson/generic/ondemand/token_iterator.h for haswell */
+/* end file simdjson/generic/ondemand/logger.h for icelake */
+/* including simdjson/generic/ondemand/token_iterator.h for icelake: #include "simdjson/generic/ondemand/token_iterator.h" */
+/* begin file simdjson/generic/ondemand/token_iterator.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -65284,7 +102502,7 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 /**
@@ -65415,15 +102633,15 @@ class token_iterator {
 };
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::token_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::token_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -65432,9 +102650,9 @@ struct simdjson_result : public haswell::impl
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
-/* end file simdjson/generic/ondemand/token_iterator.h for haswell */
-/* including simdjson/generic/ondemand/json_iterator.h for haswell: #include "simdjson/generic/ondemand/json_iterator.h" */
-/* begin file simdjson/generic/ondemand/json_iterator.h for haswell */
+/* end file simdjson/generic/ondemand/token_iterator.h for icelake */
+/* including simdjson/generic/ondemand/json_iterator.h for icelake: #include "simdjson/generic/ondemand/json_iterator.h" */
+/* begin file simdjson/generic/ondemand/json_iterator.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -65445,7 +102663,7 @@ struct simdjson_result : public haswell::impl
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 /**
@@ -65756,15 +102974,15 @@ class json_iterator {
 }; // json_iterator
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::json_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::json_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
 
   simdjson_inline simdjson_result() noexcept = default;
@@ -65773,9 +102991,9 @@ struct simdjson_result : public haswell::imple
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
-/* end file simdjson/generic/ondemand/json_iterator.h for haswell */
-/* including simdjson/generic/ondemand/json_type.h for haswell: #include "simdjson/generic/ondemand/json_type.h" */
-/* begin file simdjson/generic/ondemand/json_type.h for haswell */
+/* end file simdjson/generic/ondemand/json_iterator.h for icelake */
+/* including simdjson/generic/ondemand/json_type.h for icelake: #include "simdjson/generic/ondemand/json_type.h" */
+/* begin file simdjson/generic/ondemand/json_type.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -65786,7 +103004,7 @@ struct simdjson_result : public haswell::imple
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 /**
@@ -65920,15 +103138,15 @@ inline std::ostream& operator<<(std::ostream& out, simdjson_result &t
 #endif
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::json_type &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::json_type &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -65937,9 +103155,9 @@ struct simdjson_result : public haswell::implement
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
-/* end file simdjson/generic/ondemand/json_type.h for haswell */
-/* including simdjson/generic/ondemand/raw_json_string.h for haswell: #include "simdjson/generic/ondemand/raw_json_string.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string.h for haswell */
+/* end file simdjson/generic/ondemand/json_type.h for icelake */
+/* including simdjson/generic/ondemand/raw_json_string.h for icelake: #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -65949,7 +103167,7 @@ struct simdjson_result : public haswell::implement
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 /**
@@ -66131,30 +103349,30 @@ simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_js
 
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::raw_json_string &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::raw_json_string &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
 
   simdjson_inline simdjson_result raw() const noexcept;
   simdjson_inline char operator[](size_t) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape(haswell::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(haswell::ondemand::json_iterator &iter) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape(icelake::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(icelake::ondemand::json_iterator &iter) const noexcept;
 };
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
-/* end file simdjson/generic/ondemand/raw_json_string.h for haswell */
-/* including simdjson/generic/ondemand/parser.h for haswell: #include "simdjson/generic/ondemand/parser.h" */
-/* begin file simdjson/generic/ondemand/parser.h for haswell */
+/* end file simdjson/generic/ondemand/raw_json_string.h for icelake */
+/* including simdjson/generic/ondemand/parser.h for icelake: #include "simdjson/generic/ondemand/parser.h" */
+/* begin file simdjson/generic/ondemand/parser.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -66167,7 +103385,7 @@ struct simdjson_result : public haswell::imp
 #include 
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 /**
@@ -66567,15 +103785,15 @@ class parser {
 };
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::parser &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::parser &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -66583,319 +103801,11 @@ struct simdjson_result : public haswell::implementati
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_H
-/* end file simdjson/generic/ondemand/parser.h for haswell */
-
-// JSON builder - needed for extract_into functionality
-/* including simdjson/generic/ondemand/json_string_builder.h for haswell: #include "simdjson/generic/ondemand/json_string_builder.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder.h for haswell */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace haswell {
-namespace builder {
-  class string_builder;
-}}
-
-template 
-struct has_custom_serialization : std::false_type {};
-
-inline constexpr struct serialize_tag {
-  template 
-  constexpr void operator()(haswell::builder::string_builder& b, T&& obj) const{
-    return tag_invoke(*this, b, std::forward(obj));
-  }
-
-
-} serialize{};
-template 
-struct has_custom_serialization(), std::declval()))
->> : std::true_type {};
-
-template 
-constexpr bool require_custom_serialization = has_custom_serialization::value;
-#else
-struct has_custom_serialization : std::false_type {};
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace haswell {
-namespace builder {
-/**
- * A builder for JSON strings representing documents. This is a low-level
- * builder that is not meant to be used directly by end-users. Though it
- * supports atomic types (Booleans, strings), it does not support composed
- * types (arrays and objects).
- *
- * Ultimately, this class can support kernel-specific optimizations. E.g.,
- * it may make use of SIMD instructions to escape strings faster.
- */
-class string_builder {
-public:
-  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
-
-  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
-
-  /**
-   * Append number (includes Booleans). Booleans are mapped to the strings
-   * false and true. Numbers are converted to strings abiding by the JSON standard.
-   * Floating-point numbers are converted to the shortest string that 'correctly'
-   * represents the number.
-   */
-  template::value>::type>
-  simdjson_inline void append(number_type v) noexcept;
-
-  /**
-   * Append character c.
-   */
-  simdjson_inline void append(char c)  noexcept;
-
-  /**
-   * Append the string 'null'.
-   */
-  simdjson_inline void append_null()  noexcept;
-
-  /**
-   * Clear the content.
-   */
-  simdjson_inline void clear()  noexcept;
-
-  /**
-   * Append the std::string_view, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
-
-  /**
-   * Append the std::string_view surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void escape_and_append_with_quotes()  noexcept;
-#endif
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
-
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
-
-  /**
-   * Append the C string directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *c)  noexcept;
-
-  /**
-   * Append "{" to the buffer.
-   */
-  simdjson_inline void start_object()  noexcept;
-
-  /**
-   * Append "}" to the buffer.
-   */
-  simdjson_inline void end_object()  noexcept;
-
-  /**
-   * Append "[" to the buffer.
-   */
-  simdjson_inline void start_array()  noexcept;
-
-  /**
-   * Append "]" to the buffer.
-   */
-  simdjson_inline void end_array()  noexcept;
-
-  /**
-   * Append "," to the buffer.
-   */
-  simdjson_inline void append_comma()  noexcept;
-
-  /**
-   * Append ":" to the buffer.
-   */
-  simdjson_inline void append_colon()  noexcept;
-
-  /**
-   * Append a key-value pair to the buffer.
-   * The key is escaped and surrounded by double quotes.
-   * The value is escaped if it is a string.
-   */
-  template
-  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void append_key_value(value_type value) noexcept;
-
-  // Support for optional types (std::optional, etc.)
-  template 
-  requires(!require_custom_serialization)
-  simdjson_inline void append(const T &opt);
-
-  template 
-  requires(require_custom_serialization)
-  simdjson_inline void append(T &&val);
-
-  // Support for string-like types
-  template 
-  requires(std::is_convertible::value ||
-  std::is_same::value )
-  simdjson_inline void append(const T &value);
-#endif
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-  // Support for range-based appending (std::ranges::view, etc.)
-  template 
-requires (!std::is_convertible::value && !require_custom_serialization)
-  simdjson_inline void append(const R &range) noexcept;
-#endif
-  /**
-   * Append the std::string_view directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(std::string_view input)  noexcept;
-
-  /**
-   * Append len characters from str.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
-#if SIMDJSON_EXCEPTIONS
-  /**
-   * Creates an std::string from the written JSON buffer.
-   * Throws if memory allocation failed
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string() const noexcept(false);
-
-  /**
-   * Creates an std::string_view from the written JSON buffer.
-   * Throws if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
-#endif
-
-  /**
-   * Returns a view on the written JSON buffer. Returns an error
-   * if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result view() const noexcept;
-
-  /**
-   * Appends the null character to the buffer and returns
-   * a pointer to the beginning of the written JSON buffer.
-   * Returns an error if memory allocation failed.
-   * The result is null-terminated.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result c_str() noexcept;
-
-  /**
-   * Return true if the content is valid UTF-8.
-   */
-  simdjson_inline bool validate_unicode() const noexcept;
-
-  /**
-   * Returns the current size of the written JSON buffer.
-   * If an error occurred, returns 0.
-   */
-  simdjson_inline size_t size() const noexcept;
-
-private:
-  /**
-   * Returns true if we can write at least upcoming_bytes bytes.
-   * The underlying buffer is reallocated if needed. It is designed
-   * to be called before writing to the buffer. It should be fast.
-   */
-  simdjson_inline bool capacity_check(size_t upcoming_bytes);
-
-  /**
-   * Grow the buffer to at least desired_capacity bytes.
-   * If the allocation fails, is_valid is set to false. We expect
-   * that this function would not be repeatedly called.
-   */
-  simdjson_inline void grow_buffer(size_t desired_capacity);
-
-  /**
-   * We use this helper function to make sure that is_valid is kept consistent.
-   */
-  simdjson_inline void set_valid(bool valid) noexcept;
-
-  std::unique_ptr buffer{};
-  size_t position{0};
-  size_t capacity{0};
-  bool is_valid{true};
-};
-
-
-
-}
-}
-
-
-#if !SIMDJSON_STATIC_REFLECTION
-// fallback implementation until we have static reflection
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::haswell::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view s;
-  auto e = b.view().get(s);
-  if(e) { return e; }
-  return std::string(s);
-}
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::haswell::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view sv;
-  auto e = b.view().get(sv);
-  if(e) { return e; }
-  s.assign(sv.data(), sv.size());
-  return simdjson::SUCCESS;
-}
-#endif
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
-/* end file simdjson/generic/ondemand/json_string_builder.h for haswell */
+/* end file simdjson/generic/ondemand/parser.h for icelake */
 
 // All other declarations
-/* including simdjson/generic/ondemand/array.h for haswell: #include "simdjson/generic/ondemand/array.h" */
-/* begin file simdjson/generic/ondemand/array.h for haswell */
+/* including simdjson/generic/ondemand/array.h for icelake: #include "simdjson/generic/ondemand/array.h" */
+/* begin file simdjson/generic/ondemand/array.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -66907,7 +103817,7 @@ simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t i
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 /**
@@ -67127,27 +104037,27 @@ class array {
 };
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::array &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::array &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
   inline simdjson_result count_elements() & noexcept;
   inline simdjson_result is_empty() & noexcept;
   inline simdjson_result reset() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   simdjson_inline simdjson_result raw_json() noexcept;
 #if SIMDJSON_SUPPORTS_CONCEPTS
   // TODO: move this code into object-inl.h
@@ -67155,7 +104065,7 @@ struct simdjson_result : public haswell::implementatio
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -67163,7 +104073,7 @@ struct simdjson_result : public haswell::implementatio
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -67176,13 +104086,14 @@ struct simdjson_result : public haswell::implementatio
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
-/* end file simdjson/generic/ondemand/array.h for haswell */
-/* including simdjson/generic/ondemand/array_iterator.h for haswell: #include "simdjson/generic/ondemand/array_iterator.h" */
-/* begin file simdjson/generic/ondemand/array_iterator.h for haswell */
+/* end file simdjson/generic/ondemand/array.h for icelake */
+/* including simdjson/generic/ondemand/array_iterator.h for icelake: #include "simdjson/generic/ondemand/array_iterator.h" */
+/* begin file simdjson/generic/ondemand/array_iterator.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include  */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
@@ -67190,7 +104101,7 @@ struct simdjson_result : public haswell::implementatio
 
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 /**
@@ -67198,11 +104109,17 @@ namespace ondemand {
  *
  * This is an input_iterator, meaning:
  * - It is forward-only
- * - * must be called exactly once per element.
+ * - * must be called at most once per element.
  * - ++ must be called exactly once in between each * (*, ++, *, ++, * ...)
  */
 class array_iterator {
 public:
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
   /** Create a new, invalid array iterator. */
   simdjson_inline array_iterator() noexcept = default;
 
@@ -67246,6 +104163,9 @@ class array_iterator {
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   value_iterator iter{};
 
   simdjson_inline array_iterator(const value_iterator &iter) noexcept;
@@ -67256,14 +104176,20 @@ class array_iterator {
 };
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
-  simdjson_inline simdjson_result(haswell::ondemand::array_iterator &&value) noexcept; ///< @private
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
+  simdjson_inline simdjson_result(icelake::ondemand::array_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -67271,10 +104197,10 @@ struct simdjson_result : public haswell::impl
   // Iterator interface
   //
 
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 };
@@ -67282,9 +104208,9 @@ struct simdjson_result : public haswell::impl
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
-/* end file simdjson/generic/ondemand/array_iterator.h for haswell */
-/* including simdjson/generic/ondemand/document.h for haswell: #include "simdjson/generic/ondemand/document.h" */
-/* begin file simdjson/generic/ondemand/document.h for haswell */
+/* end file simdjson/generic/ondemand/array_iterator.h for icelake */
+/* including simdjson/generic/ondemand/document.h for icelake: #include "simdjson/generic/ondemand/document.h" */
+/* begin file simdjson/generic/ondemand/document.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -67298,7 +104224,7 @@ struct simdjson_result : public haswell::impl
 
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 /**
@@ -68250,21 +105176,21 @@ class document_reference {
   document *doc{nullptr};
 };
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::document &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::document &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -68275,9 +105201,9 @@ struct simdjson_result : public haswell::implementa
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -68287,33 +105213,33 @@ struct simdjson_result : public haswell::implementa
   template simdjson_inline error_code get(T &out) && noexcept;
 #if SIMDJSON_EXCEPTIONS
 
-  using haswell::implementation_simdjson_result_base::operator*;
-  using haswell::implementation_simdjson_result_base::operator->;
-  template ::value == false>::type>
+  using icelake::implementation_simdjson_result_base::operator*;
+  using icelake::implementation_simdjson_result_base::operator->;
+  template ::value == false>::type>
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator haswell::ondemand::array() & noexcept(false);
-  simdjson_inline operator haswell::ondemand::object() & noexcept(false);
+  simdjson_inline operator icelake::ondemand::array() & noexcept(false);
+  simdjson_inline operator icelake::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator haswell::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator icelake::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator haswell::ondemand::value() noexcept(false);
+  simdjson_inline operator icelake::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
@@ -68321,14 +105247,14 @@ struct simdjson_result : public haswell::implementa
   simdjson_inline bool at_end() const noexcept;
   simdjson_inline bool is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -68344,14 +105270,14 @@ struct simdjson_result : public haswell::implementa
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::document_reference value, error_code error) noexcept;
+  simdjson_inline simdjson_result(icelake::ondemand::document_reference value, error_code error) noexcept;
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -68362,9 +105288,9 @@ struct simdjson_result : public haswell::
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -68375,43 +105301,43 @@ struct simdjson_result : public haswell::
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator haswell::ondemand::array() & noexcept(false);
-  simdjson_inline operator haswell::ondemand::object() & noexcept(false);
+  simdjson_inline operator icelake::ondemand::array() & noexcept(false);
+  simdjson_inline operator icelake::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator haswell::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator icelake::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator haswell::ondemand::value() noexcept(false);
+  simdjson_inline operator icelake::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
   simdjson_inline simdjson_result current_depth() const noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document_reference::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -68423,9 +105349,9 @@ struct simdjson_result : public haswell::
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
-/* end file simdjson/generic/ondemand/document.h for haswell */
-/* including simdjson/generic/ondemand/document_stream.h for haswell: #include "simdjson/generic/ondemand/document_stream.h" */
-/* begin file simdjson/generic/ondemand/document_stream.h for haswell */
+/* end file simdjson/generic/ondemand/document.h for icelake */
+/* including simdjson/generic/ondemand/document_stream.h for icelake: #include "simdjson/generic/ondemand/document_stream.h" */
+/* begin file simdjson/generic/ondemand/document_stream.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -68443,7 +105369,7 @@ struct simdjson_result : public haswell::
 #endif
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -68756,14 +105682,14 @@ class document_stream {
 };  // document_stream
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::document_stream &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::document_stream &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -68771,9 +105697,9 @@ struct simdjson_result : public haswell::imp
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
-/* end file simdjson/generic/ondemand/document_stream.h for haswell */
-/* including simdjson/generic/ondemand/field.h for haswell: #include "simdjson/generic/ondemand/field.h" */
-/* begin file simdjson/generic/ondemand/field.h for haswell */
+/* end file simdjson/generic/ondemand/document_stream.h for icelake */
+/* including simdjson/generic/ondemand/field.h for icelake: #include "simdjson/generic/ondemand/field.h" */
+/* begin file simdjson/generic/ondemand/field.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -68785,7 +105711,7 @@ struct simdjson_result : public haswell::imp
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 /**
@@ -68863,33 +105789,33 @@ class field : public std::pair {
 };
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::field &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::field &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
   simdjson_inline simdjson_result unescaped_key(bool allow_replacement = false) noexcept;
   template
   simdjson_inline error_code unescaped_key(string_type &receiver, bool allow_replacement = false) noexcept;
-  simdjson_inline simdjson_result key() noexcept;
+  simdjson_inline simdjson_result key() noexcept;
   simdjson_inline simdjson_result key_raw_json_token() noexcept;
   simdjson_inline simdjson_result escaped_key() noexcept;
-  simdjson_inline simdjson_result value() noexcept;
+  simdjson_inline simdjson_result value() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_H
-/* end file simdjson/generic/ondemand/field.h for haswell */
-/* including simdjson/generic/ondemand/object.h for haswell: #include "simdjson/generic/ondemand/object.h" */
-/* begin file simdjson/generic/ondemand/object.h for haswell */
+/* end file simdjson/generic/ondemand/field.h for icelake */
+/* including simdjson/generic/ondemand/object.h for icelake: #include "simdjson/generic/ondemand/object.h" */
+/* begin file simdjson/generic/ondemand/object.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -68904,7 +105830,7 @@ struct simdjson_result : public haswell::implementatio
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 /**
@@ -68919,6 +105845,13 @@ class object {
    */
   simdjson_inline object() noexcept = default;
 
+  /**
+   * Get an iterator to the start of the object. We recommend using a range-based for loop.
+   *
+   * Using the iterator directly is also possible but error-prone and discouraged. In particular,
+   * you must dereference the iterator exactly once per iteration (before calling '++').
+   * Doing otherwise is unsafe and may lead to errors. You are responsible for ensuring
+   */
   simdjson_inline simdjson_result begin() noexcept;
   simdjson_inline simdjson_result end() noexcept;
   /**
@@ -69191,29 +106124,29 @@ class object {
 };
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::object &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::object &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   inline simdjson_result reset() noexcept;
   inline simdjson_result is_empty() noexcept;
   inline simdjson_result count_fields() & noexcept;
@@ -69224,7 +106157,7 @@ struct simdjson_result : public haswell::implementati
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -69232,7 +106165,7 @@ struct simdjson_result : public haswell::implementati
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -69255,9 +106188,9 @@ struct simdjson_result : public haswell::implementati
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
-/* end file simdjson/generic/ondemand/object.h for haswell */
-/* including simdjson/generic/ondemand/object_iterator.h for haswell: #include "simdjson/generic/ondemand/object_iterator.h" */
-/* begin file simdjson/generic/ondemand/object_iterator.h for haswell */
+/* end file simdjson/generic/ondemand/object.h for icelake */
+/* including simdjson/generic/ondemand/object_iterator.h for icelake: #include "simdjson/generic/ondemand/object_iterator.h" */
+/* begin file simdjson/generic/ondemand/object_iterator.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -69268,7 +106201,7 @@ struct simdjson_result : public haswell::implementati
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 class object_iterator {
@@ -69292,9 +106225,14 @@ class object_iterator {
   // Assumes it's being compared with the end. true if depth >= iter->depth.
   simdjson_inline bool operator!=(const object_iterator &) const noexcept;
   // Checks for ']' and ','
+  // YOU MUST NOT CALL THIS IF operator* YIELDED AN ERROR.
+  // YOU MUST NOT CALL THIS WITHOUT A CORRESPONDING operator* CALL.
   simdjson_inline object_iterator &operator++() noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   /**
    * The underlying JSON iterator.
    *
@@ -69309,15 +106247,15 @@ class object_iterator {
 };
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public haswell::implementation_simdjson_result_base {
+struct simdjson_result : public icelake::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(haswell::ondemand::object_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(icelake::ondemand::object_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -69326,21 +106264,21 @@ struct simdjson_result : public haswell::imp
   //
 
   // Reads key and value, yielding them to the user.
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
   // Assumes it's being compared with the end. true if depth < iter->depth.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
   // Assumes it's being compared with the end. true if depth >= iter->depth.
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
   // Checks for ']' and ','
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
-/* end file simdjson/generic/ondemand/object_iterator.h for haswell */
-/* including simdjson/generic/ondemand/serialization.h for haswell: #include "simdjson/generic/ondemand/serialization.h" */
-/* begin file simdjson/generic/ondemand/serialization.h for haswell */
+/* end file simdjson/generic/ondemand/object_iterator.h for icelake */
+/* including simdjson/generic/ondemand/serialization.h for icelake: #include "simdjson/generic/ondemand/serialization.h" */
+/* begin file simdjson/generic/ondemand/serialization.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -69354,30 +106292,30 @@ namespace simdjson {
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(haswell::ondemand::document& x) noexcept;
+inline simdjson_result to_json_string(icelake::ondemand::document& x) noexcept;
 /**
  * Create a string-view instance out of a value instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. The value must
  * not have been accessed previously. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(haswell::ondemand::value& x) noexcept;
+inline simdjson_result to_json_string(icelake::ondemand::value& x) noexcept;
 /**
  * Create a string-view instance out of an object instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(haswell::ondemand::object& x) noexcept;
+inline simdjson_result to_json_string(icelake::ondemand::object& x) noexcept;
 /**
  * Create a string-view instance out of an array instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(haswell::ondemand::array& x) noexcept;
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(icelake::ondemand::array& x) noexcept;
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
 
 #if SIMDJSON_STATIC_REFLECTION
 /**
@@ -69385,10 +106323,10 @@ inline simdjson_result to_json_string(simdjson_result
-  requires(!std::same_as &&
-           !std::same_as &&
-           !std::same_as &&
-           !std::same_as)
+  requires(!std::same_as &&
+           !std::same_as &&
+           !std::same_as &&
+           !std::same_as)
 inline std::string to_json_string(const T& obj);
 #endif
 
@@ -69401,7 +106339,7 @@ inline std::string to_json_string(const T& obj);
  * Credit: @madhur4127
  * See https://github.com/simdjson/simdjson/issues/1768
  */
-namespace simdjson { namespace haswell { namespace ondemand {
+namespace simdjson { namespace icelake { namespace ondemand {
 
 /**
  * Print JSON to an output stream.  It does not
@@ -69411,9 +106349,9 @@ namespace simdjson { namespace haswell { namespace ondemand {
  * @param value The element.
  * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
  */
-inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::value x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::value x);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -69423,9 +106361,9 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -69435,13 +106373,13 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
-inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::document_reference& value);
+inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::document_reference& value);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -69451,18 +106389,18 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
-}}} // namespace simdjson::haswell::ondemand
+}}} // namespace simdjson::icelake::ondemand
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
-/* end file simdjson/generic/ondemand/serialization.h for haswell */
+/* end file simdjson/generic/ondemand/serialization.h for icelake */
 
 // Deserialization for standard types
-/* including simdjson/generic/ondemand/std_deserialize.h for haswell: #include "simdjson/generic/ondemand/std_deserialize.h" */
-/* begin file simdjson/generic/ondemand/std_deserialize.h for haswell */
+/* including simdjson/generic/ondemand/std_deserialize.h for icelake: #include "simdjson/generic/ondemand/std_deserialize.h" */
+/* begin file simdjson/generic/ondemand/std_deserialize.h for icelake */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -69561,8 +106499,8 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified type inside the container must default constructible.");
-  haswell::ondemand::array arr;
-  if constexpr (std::is_same_v, haswell::ondemand::array>) {
+  icelake::ondemand::array arr;
+  if constexpr (std::is_same_v, icelake::ondemand::array>) {
     arr = val;
   } else {
     SIMDJSON_TRY(val.get_array().get(arr));
@@ -69606,7 +106544,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified value type inside the container must default constructible.");
- haswell::ondemand::object obj;
+ icelake::ondemand::object obj;
  SIMDJSON_TRY(val.get_object().get(obj));
  for (auto field : obj) {
     std::string_view key;
@@ -69624,7 +106562,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
 }
 
 template 
-error_code tag_invoke(deserialize_tag, haswell::ondemand::object &obj, T &out) noexcept {
+error_code tag_invoke(deserialize_tag, icelake::ondemand::object &obj, T &out) noexcept {
   using value_type = typename std::remove_cvref_t::mapped_type;
 
   out.clear();
@@ -69632,7 +106570,7 @@ error_code tag_invoke(deserialize_tag, haswell::ondemand::object &obj, T &out) n
     std::string_view key;
     SIMDJSON_TRY(field.unescaped_key().get(key));
 
-    haswell::ondemand::value value_obj;
+    icelake::ondemand::value value_obj;
     SIMDJSON_TRY(field.value().get(value_obj));
 
     value_type this_value;
@@ -69643,22 +106581,22 @@ error_code tag_invoke(deserialize_tag, haswell::ondemand::object &obj, T &out) n
 }
 
 template 
-error_code tag_invoke(deserialize_tag, haswell::ondemand::value &val, T &out) noexcept {
-  haswell::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, icelake::ondemand::value &val, T &out) noexcept {
+  icelake::ondemand::object obj;
   SIMDJSON_TRY(val.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, haswell::ondemand::document &doc, T &out) noexcept {
-  haswell::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, icelake::ondemand::document &doc, T &out) noexcept {
+  icelake::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, haswell::ondemand::document_reference &doc, T &out) noexcept {
-  haswell::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, icelake::ondemand::document_reference &doc, T &out) noexcept {
+  icelake::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
@@ -69735,8 +106673,8 @@ constexpr bool user_defined_type = (std::is_class_v
 template 
   requires(user_defined_type && std::is_class_v)
 error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept {
-  haswell::ondemand::object obj;
-  if constexpr (std::is_same_v, haswell::ondemand::object>) {
+  icelake::ondemand::object obj;
+  if constexpr (std::is_same_v, icelake::ondemand::object>) {
     obj = val;
   } else {
     SIMDJSON_TRY(val.get_object().get(obj));
@@ -70045,11 +106983,11 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
-/* end file simdjson/generic/ondemand/std_deserialize.h for haswell */
+/* end file simdjson/generic/ondemand/std_deserialize.h for icelake */
 
 // Inline definitions
-/* including simdjson/generic/ondemand/array-inl.h for haswell: #include "simdjson/generic/ondemand/array-inl.h" */
-/* begin file simdjson/generic/ondemand/array-inl.h for haswell */
+/* including simdjson/generic/ondemand/array-inl.h for icelake: #include "simdjson/generic/ondemand/array-inl.h" */
+/* begin file simdjson/generic/ondemand/array-inl.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -70064,7 +107002,7 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 //
@@ -70293,68 +107231,68 @@ simdjson_inline simdjson_result array::at(size_t index) noexcept {
 }
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  haswell::ondemand::array &&value
+simdjson_inline simdjson_result::simdjson_result(
+  icelake::ondemand::array &&value
 ) noexcept
-  : implementation_simdjson_result_base(
-      std::forward(value)
+  : implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept
-  : implementation_simdjson_result_base(error)
+  : implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
-simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
-simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
-/* end file simdjson/generic/ondemand/array-inl.h for haswell */
-/* including simdjson/generic/ondemand/array_iterator-inl.h for haswell: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/array_iterator-inl.h for haswell */
+/* end file simdjson/generic/ondemand/array-inl.h for icelake */
+/* including simdjson/generic/ondemand/array_iterator-inl.h for icelake: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/array_iterator-inl.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -70366,7 +107304,7 @@ simdjson_inline  simdjson_result simdjson_result array_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   SIMDJSON_ASSUME(!has_been_referenced);
+   has_been_referenced = true;
+#endif
   if (iter.error()) { iter.abandon(); return iter.error(); }
   return value(iter.child());
 }
@@ -70384,6 +107326,9 @@ simdjson_inline bool array_iterator::operator!=(const array_iterator &) const no
   return iter.is_open();
 }
 simdjson_inline array_iterator &array_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   has_been_referenced = false;
+#endif
   error_code error;
   // PERF NOTE this is a safety rail ... users should exit loops as soon as they receive an error, so we'll never get here.
   // However, it does not seem to make a perf difference, so we add it out of an abundance of caution.
@@ -70397,50 +107342,50 @@ simdjson_inline bool array_iterator::at_end() const noexcept {
   return iter.at_end();
 }
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  haswell::ondemand::array_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  icelake::ondemand::array_iterator &&value
 ) noexcept
-  : haswell::implementation_simdjson_result_base(std::forward(value))
+  : icelake::implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : haswell::implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : icelake::implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++(first);
   return *this;
 }
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   return !first.iter.is_valid() || first.at_end();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/array_iterator-inl.h for haswell */
-/* including simdjson/generic/ondemand/value-inl.h for haswell: #include "simdjson/generic/ondemand/value-inl.h" */
-/* begin file simdjson/generic/ondemand/value-inl.h for haswell */
+/* end file simdjson/generic/ondemand/array_iterator-inl.h for icelake */
+/* including simdjson/generic/ondemand/value-inl.h for icelake: #include "simdjson/generic/ondemand/value-inl.h" */
+/* begin file simdjson/generic/ondemand/value-inl.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -70456,7 +107401,7 @@ simdjson_inline bool simdjson_result::at_end(
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 simdjson_inline value::value(const value_iterator &_iter) noexcept
@@ -70753,240 +107698,240 @@ inline simdjson_result> value::at_path_with_wildcard(std::str
 }
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  haswell::ondemand::value &&value
+simdjson_inline simdjson_result::simdjson_result(
+  icelake::ondemand::value &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   if (error()) { return error(); }
   return {};
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
 
-simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
-template<> simdjson_inline error_code simdjson_result::get(haswell::ondemand::value &out) noexcept {
+template<> simdjson_inline error_code simdjson_result::get(icelake::ondemand::value &out) noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 
-template simdjson_inline simdjson_result simdjson_result::get() noexcept {
+template simdjson_inline simdjson_result simdjson_result::get() noexcept {
   if (error()) { return error(); }
   return first.get();
 }
-template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
+template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
+template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
   if (error()) { return error(); }
   return std::move(first);
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator haswell::ondemand::array() noexcept(false) {
+simdjson_inline simdjson_result::operator icelake::ondemand::array() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator haswell::ondemand::object() noexcept(false) {
+simdjson_inline simdjson_result::operator icelake::ondemand::object() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator haswell::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator icelake::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
+simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(
+simdjson_inline simdjson_result simdjson_result::at_pointer(
     std::string_view json_pointer) noexcept {
   if (error()) {
       return error();
@@ -70994,7 +107939,7 @@ simdjson_inline simdjson_result simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -71002,7 +107947,7 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(
+inline simdjson_result> simdjson_result::at_path_with_wildcard(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -71013,9 +107958,9 @@ inline simdjson_result> simdjson_result> simdjson_result::simdjson_result(
-  haswell::ondemand::document &&value
+simdjson_inline simdjson_result::simdjson_result(
+  icelake::ondemand::document &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(
+    implementation_simdjson_result_base(
       error
     )
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
-template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
+template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first);
+  return std::forward(first);
 }
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(haswell::ondemand::document &out) & noexcept = delete;
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(haswell::ondemand::document &out) && noexcept {
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(icelake::ondemand::document &out) & noexcept = delete;
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(icelake::ondemand::document &out) && noexcept {
   if (error()) { return error(); }
-  out = std::forward(first);
+  out = std::forward(first);
   return SUCCESS;
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 
-simdjson_inline bool simdjson_result::is_negative() noexcept {
+simdjson_inline bool simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 
 
 #if SIMDJSON_EXCEPTIONS
-template ::value == false>::type>
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+template ::value == false>::type>
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator haswell::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator icelake::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator haswell::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator icelake::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator haswell::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator icelake::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator haswell::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator icelake::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   if (error()) { return error(); }
   return first.at_end();
 }
 
 
-simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
+simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
 
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
@@ -71713,7 +108658,7 @@ simdjson_inline simdjson_result> simdjson_
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -71723,7 +108668,7 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result::simdjson_result(haswell::ondemand::document_reference value, error_code error)
-  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
+simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::document_reference value, error_code error)
+  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
 
 
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(haswell::ondemand::document_reference &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(icelake::ondemand::document_reference &out) & noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(haswell::ondemand::document_reference &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(icelake::ondemand::document_reference &out) && noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+simdjson_inline simdjson_result::operator T() noexcept(false) {
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator haswell::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator icelake::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator haswell::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator icelake::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator haswell::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator icelake::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator haswell::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator icelake::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
@@ -72070,7 +109015,7 @@ simdjson_inline simdjson_result> simdjson_
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -72078,9 +109023,9 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -72502,22 +109447,22 @@ inline void document_stream::start_stage1_thread() noexcept {
 #endif // SIMDJSON_THREADS_ENABLED
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
-  haswell::ondemand::document_stream &&value
+simdjson_inline simdjson_result::simdjson_result(
+  icelake::ondemand::document_stream &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
@@ -72525,9 +109470,9 @@ simdjson_inline simdjson_result::simdjson_re
 }
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H
-/* end file simdjson/generic/ondemand/document_stream-inl.h for haswell */
-/* including simdjson/generic/ondemand/field-inl.h for haswell: #include "simdjson/generic/ondemand/field-inl.h" */
-/* begin file simdjson/generic/ondemand/field-inl.h for haswell */
+/* end file simdjson/generic/ondemand/document_stream-inl.h for icelake */
+/* including simdjson/generic/ondemand/field-inl.h for icelake: #include "simdjson/generic/ondemand/field-inl.h" */
+/* begin file simdjson/generic/ondemand/field-inl.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -72539,7 +109484,7 @@ simdjson_inline simdjson_result::simdjson_re
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 // clang 6 does not think the default constructor can be noexcept, so we make it explicit
@@ -72603,53 +109548,53 @@ simdjson_inline value field::value() && noexcept {
 }
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  haswell::ondemand::field &&value
+simdjson_inline simdjson_result::simdjson_result(
+  icelake::ondemand::field &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::key() noexcept {
+simdjson_inline simdjson_result simdjson_result::key() noexcept {
   if (error()) { return error(); }
   return first.key();
 }
 
-simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.key_raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
+simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
   if (error()) { return error(); }
   return first.escaped_key();
 }
 
-simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(allow_replacement);
 }
 
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(receiver, allow_replacement);
 }
 
-simdjson_inline simdjson_result simdjson_result::value() noexcept {
+simdjson_inline simdjson_result simdjson_result::value() noexcept {
   if (error()) { return error(); }
   return std::move(first.value());
 }
@@ -72657,9 +109602,9 @@ simdjson_inline simdjson_result simdjson_result simdjson_result= &parser->implementation->structural_indexes[0] );
   SIMDJSON_ASSUME( position < &parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] );
-#else
-  (void)position; // Suppress unused parameter warning
 #endif
 }
 
@@ -73020,7 +109964,11 @@ simdjson_inline token_position json_iterator::position() const noexcept {
 simdjson_inline simdjson_result json_iterator::unescape(raw_json_string in, bool allow_replacement) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape(in, _string_buf_loc, allow_replacement);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape(in, _string_buf_loc, allow_replacement);
@@ -73030,7 +109978,11 @@ simdjson_inline simdjson_result json_iterator::unescape(raw_js
 simdjson_inline simdjson_result json_iterator::unescape_wobbly(raw_json_string in) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape_wobbly(in, _string_buf_loc);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape_wobbly(in, _string_buf_loc);
@@ -73093,22 +110045,22 @@ simdjson_warn_unused simdjson_inline bool json_iterator::copy_to_buffer(const ui
 }
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::json_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::json_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/json_iterator-inl.h for haswell */
-/* including simdjson/generic/ondemand/json_type-inl.h for haswell: #include "simdjson/generic/ondemand/json_type-inl.h" */
-/* begin file simdjson/generic/ondemand/json_type-inl.h for haswell */
+/* end file simdjson/generic/ondemand/json_iterator-inl.h for icelake */
+/* including simdjson/generic/ondemand/json_type-inl.h for icelake: #include "simdjson/generic/ondemand/json_type-inl.h" */
+/* begin file simdjson/generic/ondemand/json_type-inl.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -73119,7 +110071,7 @@ simdjson_inline simdjson_result::simdjson_resu
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept {
@@ -73213,22 +110165,22 @@ simdjson_inline void number::skip_double() noexcept {
 }
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::json_type &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::json_type &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
-/* end file simdjson/generic/ondemand/json_type-inl.h for haswell */
-/* including simdjson/generic/ondemand/logger-inl.h for haswell: #include "simdjson/generic/ondemand/logger-inl.h" */
-/* begin file simdjson/generic/ondemand/logger-inl.h for haswell */
+/* end file simdjson/generic/ondemand/json_type-inl.h for icelake */
+/* including simdjson/generic/ondemand/logger-inl.h for icelake: #include "simdjson/generic/ondemand/logger-inl.h" */
+/* begin file simdjson/generic/ondemand/logger-inl.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -73243,7 +110195,7 @@ simdjson_inline simdjson_result::simdjson_result(e
 #include 
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 namespace logger {
 
@@ -73450,13 +110402,13 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 
 } // namespace logger
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
-/* end file simdjson/generic/ondemand/logger-inl.h for haswell */
-/* including simdjson/generic/ondemand/object-inl.h for haswell: #include "simdjson/generic/ondemand/object-inl.h" */
-/* begin file simdjson/generic/ondemand/object-inl.h for haswell */
+/* end file simdjson/generic/ondemand/logger-inl.h for icelake */
+/* including simdjson/generic/ondemand/object-inl.h for icelake: #include "simdjson/generic/ondemand/object-inl.h" */
+/* begin file simdjson/generic/ondemand/object-inl.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -73476,7 +110428,7 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 simdjson_inline simdjson_result object::find_field_unordered(const std::string_view key) & noexcept {
@@ -73750,55 +110702,55 @@ simdjson_warn_unused simdjson_inline error_code object::extract_into(T& out) & n
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::object &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::object &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field_unordered(key);
+  return std::forward(first).find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first)[key];
+  return std::forward(first)[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field(key);
+  return std::forward(first).find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
     std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -73806,27 +110758,27 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
 
-inline simdjson_result simdjson_result::reset() noexcept {
+inline simdjson_result simdjson_result::reset() noexcept {
   if (error()) { return error(); }
   return first.reset();
 }
 
-inline simdjson_result simdjson_result::is_empty() noexcept {
+inline simdjson_result simdjson_result::is_empty() noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
 
-simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
 
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
@@ -73834,9 +110786,9 @@ simdjson_inline  simdjson_result simdjson_result simdjson_result object_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  // We must call * once per iteration.
+  SIMDJSON_ASSUME(!has_been_referenced);
+  has_been_referenced = true;
+#endif
   error_code error = iter.error();
   if (error) { iter.abandon(); return error; }
   auto result = field::start(iter);
@@ -73878,6 +110835,11 @@ simdjson_inline bool object_iterator::operator!=(const object_iterator &) const
 SIMDJSON_PUSH_DISABLE_WARNINGS
 SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
 simdjson_inline object_iterator &object_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   // Before calling ++, we must have called *.
+   SIMDJSON_ASSUME(has_been_referenced);
+   has_been_referenced = false;
+#endif
   // TODO this is a safety rail ... users should exit loops as soon as they receive an error.
   // Nonetheless, let's see if performance is OK with this if statement--the compiler may give it to us for free.
   if (!iter.is_open()) { return *this; } // Iterator will be released if there is an error
@@ -73933,39 +110895,39 @@ SIMDJSON_POP_DISABLE_WARNINGS
 //
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  haswell::ondemand::object_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  icelake::ondemand::object_iterator &&value
 ) noexcept
-  : implementation_simdjson_result_base(std::forward(value))
+  : implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
 // Checks for ']' and ','
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++first;
@@ -73975,9 +110937,9 @@ simdjson_inline simdjson_result &simdjson_re
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/object_iterator-inl.h for haswell */
-/* including simdjson/generic/ondemand/parser-inl.h for haswell: #include "simdjson/generic/ondemand/parser-inl.h" */
-/* begin file simdjson/generic/ondemand/parser-inl.h for haswell */
+/* end file simdjson/generic/ondemand/object_iterator-inl.h for icelake */
+/* including simdjson/generic/ondemand/parser-inl.h for icelake: #include "simdjson/generic/ondemand/parser-inl.h" */
+/* begin file simdjson/generic/ondemand/parser-inl.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -73994,7 +110956,7 @@ simdjson_inline simdjson_result &simdjson_re
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 simdjson_inline parser::parser(size_t max_capacity) noexcept
@@ -74204,22 +111166,22 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser::
 
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::parser &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::parser &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
-/* end file simdjson/generic/ondemand/parser-inl.h for haswell */
-/* including simdjson/generic/ondemand/raw_json_string-inl.h for haswell: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for haswell */
+/* end file simdjson/generic/ondemand/parser-inl.h for icelake */
+/* including simdjson/generic/ondemand/raw_json_string-inl.h for icelake: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -74232,7 +111194,7 @@ simdjson_inline simdjson_result::simdjson_result(erro
 
 namespace simdjson {
 
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 simdjson_inline raw_json_string::raw_json_string(const uint8_t * _buf) noexcept : buf{_buf} {}
@@ -74406,277 +111368,38 @@ simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, cons
 }
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::raw_json_string &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::raw_json_string &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
+simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
   if (error()) { return error(); }
   return first.raw();
 }
-simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
+simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
   if (error()) { return error(); }
   return first[i];
 }
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(haswell::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(icelake::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
   if (error()) { return error(); }
   return first.unescape(iter, allow_replacement);
 }
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(haswell::ondemand::json_iterator &iter) const noexcept {
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(icelake::ondemand::json_iterator &iter) const noexcept {
   if (error()) { return error(); }
   return first.unescape_wobbly(iter);
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
-/* end file simdjson/generic/ondemand/raw_json_string-inl.h for haswell */
-/* including simdjson/generic/ondemand/serialization-inl.h for haswell: #include "simdjson/generic/ondemand/serialization-inl.h" */
-/* begin file simdjson/generic/ondemand/serialization-inl.h for haswell */
-#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
-/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_builder.h" */
-/* amalgamation skipped (editor-only): #endif */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-inline std::string_view trim(const std::string_view str) noexcept {
-  // We can almost surely do better by rolling our own find_first_not_of function.
-  size_t first = str.find_first_not_of(" \t\n\r");
-  // If we have the empty string (just white space), then no trimming is possible, and
-  // we return the empty string_view.
-  if (std::string_view::npos == first) { return std::string_view(); }
-  size_t last = str.find_last_not_of(" \t\n\r");
-  return str.substr(first, (last - first + 1));
-}
-
-
-inline simdjson_result to_json_string(haswell::ondemand::document& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(haswell::ondemand::document_reference& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(haswell::ondemand::value& x) noexcept {
-  /**
-   * If we somehow receive a value that has already been consumed,
-   * then the following code could be in trouble. E.g., we create
-   * an array as needed, but if an array was already created, then
-   * it could be bad.
-   */
-  using namespace haswell::ondemand;
-  haswell::ondemand::json_type t;
-  auto error = x.type().get(t);
-  if(error != SUCCESS) { return error; }
-  switch (t)
-  {
-    case json_type::array:
-    {
-      haswell::ondemand::array array;
-      error = x.get_array().get(array);
-      if(error) { return error; }
-      return to_json_string(array);
-    }
-    case json_type::object:
-    {
-      haswell::ondemand::object object;
-      error = x.get_object().get(object);
-      if(error) { return error; }
-      return to_json_string(object);
-    }
-    default:
-      return trim(x.raw_json_token());
-  }
-}
-
-inline simdjson_result to_json_string(haswell::ondemand::object& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(haswell::ondemand::array& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-} // namespace simdjson
-
-namespace simdjson { namespace haswell { namespace ondemand {
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::document_reference& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
-  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-}}} // namespace simdjson::haswell::ondemand
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-/* end file simdjson/generic/ondemand/serialization-inl.h for haswell */
-/* including simdjson/generic/ondemand/token_iterator-inl.h for haswell: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/token_iterator-inl.h for haswell */
+/* end file simdjson/generic/ondemand/raw_json_string-inl.h for icelake */
+/* including simdjson/generic/ondemand/token_iterator-inl.h for icelake: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/token_iterator-inl.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -74687,7 +111410,7 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::haswell::ondemand::
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 simdjson_inline token_iterator::token_iterator(
@@ -74758,22 +111481,22 @@ simdjson_inline bool token_iterator::operator<=(const token_iterator &other) con
 }
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::token_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::token_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/token_iterator-inl.h for haswell */
-/* including simdjson/generic/ondemand/value_iterator-inl.h for haswell: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/value_iterator-inl.h for haswell */
+/* end file simdjson/generic/ondemand/token_iterator-inl.h for icelake */
+/* including simdjson/generic/ondemand/value_iterator-inl.h for icelake: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/value_iterator-inl.h for icelake */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -74788,7 +111511,7 @@ simdjson_inline simdjson_result::simdjson_res
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 
 simdjson_inline value_iterator::value_iterator(
@@ -74870,7 +111593,6 @@ simdjson_warn_unused simdjson_inline error_code value_iterator::end_container()
 
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::has_next_field() noexcept {
   assert_at_next();
-
   // It's illegal to call this unless there are more tokens: anything that ends in } or ] is
   // obligated to verify there are more tokens if they are not the top level.
   switch (*_json_iter->return_current_and_advance()) {
@@ -75292,9 +112014,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_string(string_type& receiver, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_string(allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_wobbly_string() noexcept {
@@ -75382,7 +112108,7 @@ simdjson_inline simdjson_result value_iterator::is_root_integer(bool check
   return answer;
 }
 
-simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
+simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
   auto max_len = peek_root_length();
   auto json = peek_root_scalar("number");
   // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
@@ -75434,9 +112160,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_root_string(check_trailing, allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_wobbly_string(bool check_trailing) noexcept {
@@ -75743,6 +112473,9 @@ simdjson_inline bool value_iterator::is_at_key() const noexcept {
   // Keys are at the same depth as the object.
   // Note here that we could be safer and check that we are within an object,
   // but we do not.
+  //
+  // As long as we are at the object's depth, in a valid document,
+  // we will only ever be at { , : or the actual string key: ".
   return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
 }
 
@@ -75858,1116 +112591,263 @@ simdjson_inline error_code value_iterator::report_error(error_code error, const
 }
 
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(haswell::ondemand::value_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::value_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/value_iterator-inl.h for haswell */
-
-// JSON builder inline definitions
-/* including simdjson/generic/ondemand/json_string_builder-inl.h for haswell: #include "simdjson/generic/ondemand/json_string_builder-inl.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder-inl.h for haswell */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand
- * directory but we will move it to a builder directory later.
- */
-#include 
-#include 
-#include 
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-/*
- * Empirically, we have found that an inlined optimization is important for
- * performance. The following macros are not ideal. We should find a better
- * way to inline the code.
- */
-
-#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
-    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
-     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
-#endif
-#endif
-
-#if defined(__aarch64__) || defined(_M_ARM64)
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
-#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
-#endif
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-#include 
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#include 
-#endif
-
-namespace simdjson {
-namespace haswell {
-namespace builder {
-
-static SIMDJSON_CONSTEXPR_LAMBDA std::array
-    json_quotable_character = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-/**
-
-A possible SWAR implementation of has_json_escapable_byte. It is not used
-because it is slower than the current implementation. It is kept here for
-reference (to show that we tried it).
-
-inline bool has_json_escapable_byte(uint64_t x) {
-  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
-  uint64_t xor2 = x ^ 0x0202020202020202ULL;
-  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
-  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
-  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
-  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
-}
-
-**/
-
-SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
-simple_needs_escaping(std::string_view v) {
-  for (char c : v) {
-    // a table lookup is faster than a series of comparisons
-    if (json_quotable_character[static_cast(c)]) {
-      return true;
-    }
-  }
-  return false;
-}
-
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  uint8x16_t running = vdupq_n_u8(0);
-  uint8x16_t v34 = vdupq_n_u8(34);
-  uint8x16_t v92 = vdupq_n_u8(92);
-
-  for (; i + 15 < view.size(); i += 16) {
-    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  if (i < view.size()) {
-    uint8x16_t word =
-        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
-}
-#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  __m128i running = _mm_setzero_si128();
-  for (; i + 15 < view.size(); i += 16) {
-
-    __m128i word =
-        _mm_loadu_si128(reinterpret_cast(view.data() + i));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  if (i < view.size()) {
-    __m128i word = _mm_loadu_si128(
-        reinterpret_cast(view.data() + view.length() - 16));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  return _mm_movemask_epi8(running) != 0;
-}
-#else
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  return simple_needs_escaping(view);
-}
-#endif
-
-SIMDJSON_CONSTEXPR_LAMBDA inline size_t
-find_next_json_quotable_character(const std::string_view view,
-                                  size_t location) noexcept {
-
-  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
-    if (json_quotable_character[static_cast(*pos)]) {
-      return pos - view.begin();
-    }
-  }
-  return size_t(view.size());
-}
-
-SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
-    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
-    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
-    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
-    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
-    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
-
-// All Unicode characters may be placed within the quotation marks, except for
-// the characters that MUST be escaped: quotation mark, reverse solidus, and the
-// control characters (U+0000 through U+001F). There are two-character sequence
-// escape representations of some popular characters:
-// \", \\, \b, \f, \n, \r, \t.
-SIMDJSON_CONSTEXPR_LAMBDA void escape_json_char(char c, char *&out) {
-  if (c == '"') {
-    memcpy(out, "\\\"", 2);
-    out += 2;
-  } else if (c == '\\') {
-    memcpy(out, "\\\\", 2);
-    out += 2;
-  } else {
-    std::string_view v = control_chars[uint8_t(c)];
-    memcpy(out, v.data(), v.size());
-    out += v.size();
-  }
-}
-
-inline size_t write_string_escaped(const std::string_view input, char *out) {
-  size_t mysize = input.size();
-  if (!fast_needs_escaping(input)) { // fast path!
-    memcpy(out, input.data(), input.size());
-    return input.size();
-  }
-  const char *const initout = out;
-  size_t location = find_next_json_quotable_character(input, 0);
-  memcpy(out, input.data(), location);
-  out += location;
-  escape_json_char(input[location], out);
-  location += 1;
-  while (location < mysize) {
-    size_t newlocation = find_next_json_quotable_character(input, location);
-    memcpy(out, input.data() + location, newlocation - location);
-    out += newlocation - location;
-    location = newlocation;
-    if (location == mysize) {
-      break;
-    }
-    escape_json_char(input[location], out);
-    location += 1;
-  }
-  return out - initout;
-}
-
-simdjson_inline string_builder::string_builder(size_t initial_capacity)
-    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
-      capacity(buffer.get() != nullptr ? initial_capacity : 0),
-      is_valid(buffer.get() != nullptr) {}
-
-simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
-  // We use the convention that when is_valid is false, then the capacity and
-  // the position are 0.
-  // Most of the time, this function will return true.
-  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
-    return true;
-  }
-  // check for overflow, most of the time there is no overflow
-  if (simdjson_likely(position + upcoming_bytes < position)) {
-    return false;
-  }
-  // We will rarely get here.
-  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
-  // If the buffer allocation failed, we set is_valid to false.
-  return is_valid;
-}
-
-simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
-  if (!is_valid) {
-    return;
-  }
-  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
-  if (new_buffer.get() == nullptr) {
-    set_valid(false);
-    return;
-  }
-  std::memcpy(new_buffer.get(), buffer.get(), position);
-  buffer.swap(new_buffer);
-  capacity = desired_capacity;
-}
-
-simdjson_inline void string_builder::set_valid(bool valid) noexcept {
-  if (!valid) {
-    is_valid = false;
-    capacity = 0;
-    position = 0;
-    buffer.reset();
-  } else {
-    is_valid = true;
-  }
-}
-
-simdjson_inline size_t string_builder::size() const noexcept {
-  return position;
-}
-
-simdjson_inline void string_builder::append(char c) noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = c;
-  }
-}
-
-simdjson_inline void string_builder::append_null() noexcept {
-  constexpr char null_literal[] = "null";
-  constexpr size_t null_len = sizeof(null_literal) - 1;
-  if (capacity_check(null_len)) {
-    std::memcpy(buffer.get() + position, null_literal, null_len);
-    position += null_len;
-  }
-}
-
-simdjson_inline void string_builder::clear() noexcept {
-  position = 0;
-  // if it was invalid, we should try to repair it
-  if (!is_valid) {
-    capacity = 0;
-    buffer.reset();
-    is_valid = true;
-  }
-}
-
-namespace internal {
-
-template ::value>::type>
-simdjson_really_inline int int_log2(number_type x) {
-  return 63 - leading_zeroes(uint64_t(x) | 1);
-}
-
-simdjson_really_inline int fast_digit_count_32(uint32_t x) {
-  static uint64_t table[] = {
-      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
-      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
-      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
-      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
-      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
-      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
-      42949672960, 42949672960};
-  return uint32_t((x + table[int_log2(x)]) >> 32);
-}
-
-simdjson_really_inline int fast_digit_count_64(uint64_t x) {
-  static uint64_t table[] = {9,
-                             99,
-                             999,
-                             9999,
-                             99999,
-                             999999,
-                             9999999,
-                             99999999,
-                             999999999,
-                             9999999999,
-                             99999999999,
-                             999999999999,
-                             9999999999999,
-                             99999999999999,
-                             999999999999999ULL,
-                             9999999999999999ULL,
-                             99999999999999999ULL,
-                             999999999999999999ULL,
-                             9999999999999999999ULL};
-  int y = (19 * int_log2(x) >> 6);
-  y += x > table[y];
-  return y + 1;
-}
-
-template ::value>::type>
-simdjson_really_inline size_t digit_count(number_type v) noexcept {
-  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
-                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
-                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
-  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
-    return fast_digit_count_32(static_cast(v));
-  }
-  else {
-    return fast_digit_count_64(static_cast(v));
-  }
-}
-static const char decimal_table[200] = {
-    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
-    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
-    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
-    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
-    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
-    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
-    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
-    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
-    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
-    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
-    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
-    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
-    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
-    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
-    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
-    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
-    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
-};
-} // namespace internal
-
-template 
-simdjson_inline void string_builder::append(number_type v) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_integral::value ||
-                    std::is_floating_point::value,
-                "Unsupported number type");
-  // If C++17 is available, we can 'if constexpr' here.
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    if (v) {
-      constexpr char true_literal[] = "true";
-      constexpr size_t true_len = sizeof(true_literal) - 1;
-      if (capacity_check(true_len)) {
-        std::memcpy(buffer.get() + position, true_literal, true_len);
-        position += true_len;
-      }
-    } else {
-      constexpr char false_literal[] = "false";
-      constexpr size_t false_len = sizeof(false_literal) - 1;
-      if (capacity_check(false_len)) {
-        std::memcpy(buffer.get() + position, false_literal, false_len);
-        position += false_len;
-      }
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      unsigned_type pv = static_cast(v);
-      size_t dc = internal::digit_count(pv);
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      bool negative = v < 0;
-      unsigned_type pv = static_cast(v);
-      if (negative) {
-        pv = 0 - pv; // the 0 is for Microsoft
-      }
-      size_t dc = internal::digit_count(pv);
-      // by always writing the minus sign, we avoid the branch.
-      buffer.get()[position] = '-';
-      position += negative ? 1 : 0;
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
-    constexpr size_t max_number_size = 24;
-    if (capacity_check(max_number_size)) {
-      // We could specialize for float.
-      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
-                                               double(v));
-      position = end - buffer.get();
-    }
-  }
-}
-
-simdjson_inline void
-string_builder::escape_and_append(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(6 * input.size())) {
-    position += write_string_escaped(input, buffer.get() + position);
-  }
-}
-
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * input.size())) {
-    buffer.get()[position++] = '"';
-    position += write_string_escaped(input, buffer.get() + position);
-    buffer.get()[position++] = '"';
-  }
-}
-
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(char input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * 1)) {
-    buffer.get()[position++] = '"';
-    std::string_view cinput(&input, 1);
-    position += write_string_escaped(cinput, buffer.get() + position);
-    buffer.get()[position++] = '"';
-  }
-}
-
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(const char *input) noexcept {
-  std::string_view cinput(input);
-  escape_and_append_with_quotes(cinput);
-}
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
-  escape_and_append_with_quotes(constevalutil::string_constant::value);
-}
-#endif
-
-simdjson_inline void string_builder::append_raw(const char *c) noexcept {
-  size_t len = std::strlen(c);
-  append_raw(c, len);
-}
-
-simdjson_inline void
-string_builder::append_raw(std::string_view input) noexcept {
-  if (capacity_check(input.size())) {
-    std::memcpy(buffer.get() + position, input.data(), input.size());
-    position += input.size();
-  }
-}
-
-simdjson_inline void string_builder::append_raw(const char *str,
-                                                size_t len) noexcept {
-  if (capacity_check(len)) {
-    std::memcpy(buffer.get() + position, str, len);
-    position += len;
-  }
-}
-#if SIMDJSON_SUPPORTS_CONCEPTS
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-simdjson_inline void string_builder::append(const T &opt) {
-  if (opt) {
-    append(*opt);
-  } else {
-    append_null();
-  }
-}
-
-template 
-  requires(require_custom_serialization)
-simdjson_inline void string_builder::append(T &&val) {
-  serialize(*this, std::forward(val));
-}
-
-template 
-  requires(std::is_convertible::value ||
-           std::is_same::value)
-simdjson_inline void string_builder::append(const T &value) {
-  escape_and_append_with_quotes(value);
-}
-#endif
-
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-// Support for range-based appending (std::ranges::view, etc.)
-template 
-  requires(!std::is_convertible::value && !require_custom_serialization)
-simdjson_inline void string_builder::append(const R &range) noexcept {
-  auto it = std::ranges::begin(range);
-  auto end = std::ranges::end(range);
-  if constexpr (concepts::is_pair>) {
-    start_object();
-
-    if (it == end) {
-      end_object();
-      return; // Handle empty range
-    }
-    // Append first item without leading comma
-    append_key_value(it->first, it->second);
-    ++it;
-
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append_key_value(it->first, it->second);
-    }
-    end_object();
-  } else {
-    start_array();
-    if (it == end) {
-      end_array();
-      return; // Handle empty range
-    }
-
-    // Append first item without leading comma
-    append(*it);
-    ++it;
-
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append(*it);
-    }
-    end_array();
-  }
-}
-
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-simdjson_inline string_builder::operator std::string() const noexcept(false) {
-  return std::string(operator std::string_view());
-}
-
-simdjson_inline string_builder::operator std::string_view() const
-    noexcept(false) simdjson_lifetime_bound {
-  return view();
-}
-#endif
-
-simdjson_inline simdjson_result
-string_builder::view() const noexcept {
-  if (!is_valid) {
-    return simdjson::OUT_OF_CAPACITY;
-  }
-  return std::string_view(buffer.get(), position);
-}
-
-simdjson_inline simdjson_result string_builder::c_str() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position] = '\0';
-    return buffer.get();
-  }
-  return simdjson::OUT_OF_CAPACITY;
-}
-
-simdjson_inline bool string_builder::validate_unicode() const noexcept {
-  return simdjson::validate_utf8(buffer.get(), position);
-}
-
-simdjson_inline void string_builder::start_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '{';
-  }
-}
-
-simdjson_inline void string_builder::end_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '}';
-  }
-}
-
-simdjson_inline void string_builder::start_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '[';
-  }
-}
-
-simdjson_inline void string_builder::end_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ']';
-  }
-}
-
-simdjson_inline void string_builder::append_comma() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ',';
-  }
-}
-
-simdjson_inline void string_builder::append_colon() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ':';
-  }
-}
-
-template 
-simdjson_inline void
-string_builder::append_key_value(key_type key, value_type value) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_convertible::value,
-                "Unsupported key type");
-  escape_and_append_with_quotes(key);
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
-}
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void
-string_builder::append_key_value(value_type value) noexcept {
-  escape_and_append_with_quotes();
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
-}
-#endif
-
-} // namespace builder
-} // namespace haswell
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-/* end file simdjson/generic/ondemand/json_string_builder-inl.h for haswell */
-/* including simdjson/generic/ondemand/json_builder.h for haswell: #include "simdjson/generic/ondemand/json_builder.h" */
-/* begin file simdjson/generic/ondemand/json_builder.h for haswell */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_BUILDER_H
+/* end file simdjson/generic/ondemand/value_iterator-inl.h for icelake */
+/* including simdjson/generic/ondemand/serialization-inl.h for icelake: #include "simdjson/generic/ondemand/serialization-inl.h" */
+/* begin file simdjson/generic/ondemand/serialization-inl.h for icelake */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #endif */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-#if SIMDJSON_STATIC_REFLECTION
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-// #include  // for std::define_static_string - header not available yet
 
 namespace simdjson {
-namespace haswell {
-namespace builder {
-
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  auto it = t.begin();
-  auto end = t.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
-  }
-  b.append(']');
-}
-
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-constexpr void atom(string_builder &b, const T &t) {
-  b.escape_and_append_with_quotes(t);
-}
-
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &m) {
-  if (m.empty()) {
-    b.append_raw("{}");
-    return;
-  }
-  b.append('{');
-  bool first = true;
-  for (const auto& [key, value] : m) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    // Keys must be convertible to string_view per the concept
-    b.escape_and_append_with_quotes(key);
-    b.append(':');
-    atom(b, value);
-  }
-  b.append('}');
-}
 
-
-template::value && !std::is_same_v>::type>
-constexpr void atom(string_builder &b, const number_type t) {
-  b.append(t);
-}
-
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, t.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline std::string_view trim(const std::string_view str) noexcept {
+  // We can almost surely do better by rolling our own find_first_not_of function.
+  size_t first = str.find_first_not_of(" \t\n\r");
+  // If we have the empty string (just white space), then no trimming is possible, and
+  // we return the empty string_view.
+  if (std::string_view::npos == first) { return std::string_view(); }
+  size_t last = str.find_last_not_of(" \t\n\r");
+  return str.substr(first, (last - first + 1));
 }
 
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &opt) {
-  if (opt) {
-    atom(b, opt.value());
-  } else {
-    b.append_raw("null");
-  }
-}
 
-// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &ptr) {
-  if (ptr) {
-    atom(b, *ptr);
-  } else {
-    b.append_raw("null");
-  }
+inline simdjson_result to_json_string(icelake::ondemand::document& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// Support for enums - serialize as string representation using expand approach from P2996R12
-template 
-  requires(std::is_enum_v && !require_custom_serialization)
-void atom(string_builder &b, const T &e) {
-#if SIMDJSON_STATIC_REFLECTION
-  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
-  template for (constexpr auto enum_val : enumerators) {
-    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
-    if (e == [:enum_val:]) {
-      b.append_raw(enum_str);
-      return;
-    }
-  };
-  // Fallback to integer if enum value not found
-  atom(b, static_cast>(e));
-#else
-  // Fallback: serialize as integer if reflection not available
-  atom(b, static_cast>(e));
-#endif
+inline simdjson_result to_json_string(icelake::ondemand::document_reference& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// Support for appendable containers that don't have operator[] (sets, etc.)
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &container) {
-  if (container.empty()) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  bool first = true;
-  for (const auto& item : container) {
-    if (!first) {
-      b.append(',');
+inline simdjson_result to_json_string(icelake::ondemand::value& x) noexcept {
+  /**
+   * If we somehow receive a value that has already been consumed,
+   * then the following code could be in trouble. E.g., we create
+   * an array as needed, but if an array was already created, then
+   * it could be bad.
+   */
+  using namespace icelake::ondemand;
+  icelake::ondemand::json_type t;
+  auto error = x.type().get(t);
+  if(error != SUCCESS) { return error; }
+  switch (t)
+  {
+    case json_type::array:
+    {
+      icelake::ondemand::array array;
+      error = x.get_array().get(array);
+      if(error) { return error; }
+      return to_json_string(array);
     }
-    first = false;
-    atom(b, item);
-  }
-  b.append(']');
-}
-
-// append functions that delegate to atom functions for primitive types
-template 
-  requires(std::is_arithmetic_v && !std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
-
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
-
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
-
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
-
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
-
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
-
-// works for struct
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, z.[:dm:]);
-    i++;
-  };
-  b.append('}');
-}
-
-// works for container that have begin() and end() iterators
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  auto it = z.begin();
-  auto end = z.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
+    case json_type::object:
+    {
+      icelake::ondemand::object object;
+      error = x.get_object().get(object);
+      if(error) { return error; }
+      return to_json_string(object);
+    }
+    default:
+      return trim(x.raw_json_token());
   }
-  b.append(']');
 }
 
-template 
-  requires (require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  b.append(z);
+inline simdjson_result to_json_string(icelake::ondemand::object& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-
-template 
-simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline simdjson_result to_json_string(icelake::ondemand::array& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-template 
-string_builder& operator<<(string_builder& b, const Z& z) {
-  append(b, z);
-  return b;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-// extract_from: Serialize only specific fields from a struct to JSON
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-void extract_from(string_builder &b, const T &obj) {
-  // Helper to check if a field name matches any of the requested fields
-  auto should_extract = [](std::string_view field_name) constexpr -> bool {
-    return ((FieldNames.view() == field_name) || ...);
-  };
-
-  b.append('{');
-  bool first = true;
-
-  // Iterate through all members of T using reflection
-  template for (constexpr auto mem : std::define_static_array(
-      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-
-    if constexpr (std::meta::is_public(mem)) {
-      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-      // Only serialize this field if it's in our list of requested fields
-      if constexpr (should_extract(key)) {
-        if (!first) {
-          b.append(',');
-        }
-        first = false;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-        // Serialize the key
-        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
-        b.append_raw(quoted_key);
-        b.append(':');
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
+} // namespace simdjson
 
-        // Serialize the value
-        atom(b, obj.[:mem:]);
-      }
-    }
-  };
+namespace simdjson { namespace icelake { namespace ondemand {
 
-  b.append('}');
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace builder
-} // namespace haswell
-// Alias the function template to 'to' in the global namespace
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  haswell::builder::string_builder b(initial_capacity);
-  haswell::builder::append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  haswell::builder::string_builder b(initial_capacity);
-  haswell::builder::append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
 }
-// Global namespace function for extract_from
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  haswell::builder::string_builder b(initial_capacity);
-  haswell::builder::extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace simdjson
-
-#endif // SIMDJSON_STATIC_REFLECTION
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::document_reference& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
 
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
+  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
 #endif
-/* end file simdjson/generic/ondemand/json_builder.h for haswell */
+}}} // namespace simdjson::icelake::ondemand
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+/* end file simdjson/generic/ondemand/serialization-inl.h for icelake */
 
 // JSON path accessor (compile-time) - must be after inline definitions
-/* including simdjson/generic/ondemand/compile_time_accessors.h for haswell: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
-/* begin file simdjson/generic/ondemand/compile_time_accessors.h for haswell */
+/* including simdjson/generic/ondemand/compile_time_accessors.h for icelake: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
+/* begin file simdjson/generic/ondemand/compile_time_accessors.h for icelake */
 /**
  * Compile-time JSON Path and JSON Pointer accessors using C++26 reflection (P2996)
  *
@@ -77025,7 +112905,7 @@ simdjson_warn_unused simdjson_result extract_from(const T &obj, siz
 #include 
 
 namespace simdjson {
-namespace haswell {
+namespace icelake {
 namespace ondemand {
 /***
  * JSONPath implementation for compile-time access
@@ -77036,7 +112916,7 @@ namespace json_path {
 // Note: value type must be fully defined before this header is included
 // This is ensured by including this in amalgamated.h after value-inl.h
 
-using ::simdjson::haswell::ondemand::value;
+using ::simdjson::icelake::ondemand::value;
 
 // Path step types
 enum class step_type {
@@ -77170,7 +113050,7 @@ struct json_path_parser {
 // Compile-time path accessor generator
 template
 struct path_accessor {
-  using value = ::simdjson::haswell::ondemand::value;
+  using value = ::simdjson::icelake::ondemand::value;
 
   static constexpr auto parser = json_path_parser();
   static constexpr std::size_t num_steps = parser.count_steps();
@@ -77648,14 +113528,14 @@ struct path_accessor {
 
 // Compile-time path accessor with validation
 template
-inline simdjson_result<::simdjson::haswell::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::icelake::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::haswell::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::icelake::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
@@ -77886,158 +113766,121 @@ struct pointer_accessor {
 
 // Compile-time JSON Pointer accessor with validation
 template
-inline simdjson_result<::simdjson::haswell::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::icelake::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::haswell::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::icelake::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 } // namespace json_path
 } // namespace ondemand
-} // namespace haswell
+} // namespace icelake
 } // namespace simdjson
 
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 #endif // SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
 
-/* end file simdjson/generic/ondemand/compile_time_accessors.h for haswell */
+/* end file simdjson/generic/ondemand/compile_time_accessors.h for icelake */
 
-/* end file simdjson/generic/ondemand/amalgamated.h for haswell */
-/* including simdjson/haswell/end.h: #include "simdjson/haswell/end.h" */
-/* begin file simdjson/haswell/end.h */
+/* end file simdjson/generic/ondemand/amalgamated.h for icelake */
+/* including simdjson/icelake/end.h: #include "simdjson/icelake/end.h" */
+/* begin file simdjson/icelake/end.h */
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/haswell/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#if !SIMDJSON_CAN_ALWAYS_RUN_HASWELL
+#if !SIMDJSON_CAN_ALWAYS_RUN_ICELAKE
 SIMDJSON_UNTARGET_REGION
 #endif
 
-/* undefining SIMDJSON_IMPLEMENTATION from "haswell" */
+/* undefining SIMDJSON_IMPLEMENTATION from "icelake" */
 #undef SIMDJSON_IMPLEMENTATION
-/* end file simdjson/haswell/end.h */
+/* end file simdjson/icelake/end.h */
 
-#endif // SIMDJSON_HASWELL_ONDEMAND_H
-/* end file simdjson/haswell/ondemand.h */
-#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(icelake)
-/* including simdjson/icelake/ondemand.h: #include "simdjson/icelake/ondemand.h" */
-/* begin file simdjson/icelake/ondemand.h */
-#ifndef SIMDJSON_ICELAKE_ONDEMAND_H
-#define SIMDJSON_ICELAKE_ONDEMAND_H
+#endif // SIMDJSON_ICELAKE_ONDEMAND_H
+/* end file simdjson/icelake/ondemand.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(ppc64)
+/* including simdjson/ppc64/ondemand.h: #include "simdjson/ppc64/ondemand.h" */
+/* begin file simdjson/ppc64/ondemand.h */
+#ifndef SIMDJSON_PPC64_ONDEMAND_H
+#define SIMDJSON_PPC64_ONDEMAND_H
 
-/* including simdjson/icelake/begin.h: #include "simdjson/icelake/begin.h" */
-/* begin file simdjson/icelake/begin.h */
-/* defining SIMDJSON_IMPLEMENTATION to "icelake" */
-#define SIMDJSON_IMPLEMENTATION icelake
-/* including simdjson/icelake/base.h: #include "simdjson/icelake/base.h" */
-/* begin file simdjson/icelake/base.h */
-#ifndef SIMDJSON_ICELAKE_BASE_H
-#define SIMDJSON_ICELAKE_BASE_H
+/* including simdjson/ppc64/begin.h: #include "simdjson/ppc64/begin.h" */
+/* begin file simdjson/ppc64/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "ppc64" */
+#define SIMDJSON_IMPLEMENTATION ppc64
+/* including simdjson/ppc64/base.h: #include "simdjson/ppc64/base.h" */
+/* begin file simdjson/ppc64/base.h */
+#ifndef SIMDJSON_PPC64_BASE_H
+#define SIMDJSON_PPC64_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #include "simdjson/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_ICELAKE
 namespace simdjson {
 /**
- * Implementation for Icelake (Intel AVX512).
+ * Implementation for ALTIVEC (PPC64).
  */
-namespace icelake {
+namespace ppc64 {
 
 class implementation;
 
-} // namespace icelake
+namespace {
+namespace simd {
+template  struct simd8;
+template  struct simd8x64;
+} // namespace simd
+} // unnamed namespace
+
+} // namespace ppc64
 } // namespace simdjson
 
-#endif // SIMDJSON_ICELAKE_BASE_H
-/* end file simdjson/icelake/base.h */
-/* including simdjson/icelake/intrinsics.h: #include "simdjson/icelake/intrinsics.h" */
-/* begin file simdjson/icelake/intrinsics.h */
-#ifndef SIMDJSON_ICELAKE_INTRINSICS_H
-#define SIMDJSON_ICELAKE_INTRINSICS_H
+#endif // SIMDJSON_PPC64_BASE_H
+/* end file simdjson/ppc64/base.h */
+/* including simdjson/ppc64/intrinsics.h: #include "simdjson/ppc64/intrinsics.h" */
+/* begin file simdjson/ppc64/intrinsics.h */
+#ifndef SIMDJSON_PPC64_INTRINSICS_H
+#define SIMDJSON_PPC64_INTRINSICS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#if SIMDJSON_VISUAL_STUDIO
-// under clang within visual studio, this will include 
-#include   // visual studio or clang
-#else
-#include  // elsewhere
-#endif // SIMDJSON_VISUAL_STUDIO
-
-#if SIMDJSON_CLANG_VISUAL_STUDIO
-/**
- * You are not supposed, normally, to include these
- * headers directly. Instead you should either include intrin.h
- * or x86intrin.h. However, when compiling with clang
- * under Windows (i.e., when _MSC_VER is set), these headers
- * only get included *if* the corresponding features are detected
- * from macros:
- * e.g., if __AVX2__ is set... in turn,  we normally set these
- * macros by compiling against the corresponding architecture
- * (e.g., arch:AVX2, -mavx2, etc.) which compiles the whole
- * software with these advanced instructions. In simdjson, we
- * want to compile the whole program for a generic target,
- * and only target our specific kernels. As a workaround,
- * we directly include the needed headers. These headers would
- * normally guard against such usage, but we carefully included
- *   (or ) before, so the headers
- * are fooled.
- */
-#include    // for _blsr_u64
-#include  // for  __lzcnt64
-#include    // for most things (AVX2, AVX512, _popcnt64)
-#include 
-#include 
-#include 
-#include 
-#include    // for  _mm_clmulepi64_si128
-// Important: we need the AVX-512 headers:
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-// unfortunately, we may not get _blsr_u64, but, thankfully, clang
-// has it as a macro.
-#ifndef _blsr_u64
-// we roll our own
-#define _blsr_u64(n) ((n - 1) & n)
-#endif //  _blsr_u64
-#endif // SIMDJSON_CLANG_VISUAL_STUDIO
-
-static_assert(sizeof(__m512i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for icelake");
+// This should be the correct header whether
+// you use visual studio or other compilers.
+#include 
 
-#endif // SIMDJSON_ICELAKE_INTRINSICS_H
-/* end file simdjson/icelake/intrinsics.h */
+// These are defined by altivec.h in GCC toolchain, it is safe to undef them.
+#ifdef bool
+#undef bool
+#endif
 
-#if !SIMDJSON_CAN_ALWAYS_RUN_ICELAKE
-SIMDJSON_TARGET_REGION("avx512f,avx512dq,avx512cd,avx512bw,avx512vbmi,avx512vbmi2,avx512vl,avx2,bmi,pclmul,lzcnt,popcnt")
+#ifdef vector
+#undef vector
 #endif
 
-/* including simdjson/icelake/bitmanipulation.h: #include "simdjson/icelake/bitmanipulation.h" */
-/* begin file simdjson/icelake/bitmanipulation.h */
-#ifndef SIMDJSON_ICELAKE_BITMANIPULATION_H
-#define SIMDJSON_ICELAKE_BITMANIPULATION_H
+static_assert(sizeof(__vector unsigned char) <= simdjson::SIMDJSON_PADDING, "insufficient padding for ppc64");
+
+#endif //  SIMDJSON_PPC64_INTRINSICS_H
+/* end file simdjson/ppc64/intrinsics.h */
+/* including simdjson/ppc64/bitmanipulation.h: #include "simdjson/ppc64/bitmanipulation.h" */
+/* begin file simdjson/ppc64/bitmanipulation.h */
+#ifndef SIMDJSON_PPC64_BITMANIPULATION_H
+#define SIMDJSON_PPC64_BITMANIPULATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace {
 
 // We sometimes call trailing_zero on inputs that are zero,
@@ -78050,43 +113893,52 @@ SIMDJSON_NO_SANITIZE_UNDEFINED
 SIMDJSON_NO_SANITIZE_MEMORY
 simdjson_inline int trailing_zeroes(uint64_t input_num) {
 #if SIMDJSON_REGULAR_VISUAL_STUDIO
-  return (int)_tzcnt_u64(input_num);
-#else // SIMDJSON_REGULAR_VISUAL_STUDIO
-  ////////
-  // You might expect the next line to be equivalent to
-  // return (int)_tzcnt_u64(input_num);
-  // but the generated code differs and might be less efficient?
-  ////////
+  unsigned long ret;
+  // Search the mask data from least significant bit (LSB)
+  // to the most significant bit (MSB) for a set bit (1).
+  _BitScanForward64(&ret, input_num);
+  return (int)ret;
+#else  // SIMDJSON_REGULAR_VISUAL_STUDIO
   return __builtin_ctzll(input_num);
 #endif // SIMDJSON_REGULAR_VISUAL_STUDIO
 }
 
 /* result might be undefined when input_num is zero */
 simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
-  return _blsr_u64(input_num);
+  return input_num & (input_num - 1);
 }
 
 /* result might be undefined when input_num is zero */
 simdjson_inline int leading_zeroes(uint64_t input_num) {
-  return int(_lzcnt_u64(input_num));
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long leading_zero = 0;
+  // Search the mask data from most significant bit (MSB)
+  // to least significant bit (LSB) for a set bit (1).
+  if (_BitScanReverse64(&leading_zero, input_num))
+    return (int)(63 - leading_zero);
+  else
+    return 64;
+#else
+  return __builtin_clzll(input_num);
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
 }
 
 #if SIMDJSON_REGULAR_VISUAL_STUDIO
-simdjson_inline unsigned __int64 count_ones(uint64_t input_num) {
-  // note: we do not support legacy 32-bit Windows
-  return __popcnt64(input_num);// Visual Studio wants two underscores
+simdjson_inline int count_ones(uint64_t input_num) {
+  // note: we do not support legacy 32-bit Windows in this kernel
+  return __popcnt64(input_num); // Visual Studio wants two underscores
 }
 #else
-simdjson_inline long long int count_ones(uint64_t input_num) {
-  return _popcnt64(input_num);
+simdjson_inline int count_ones(uint64_t input_num) {
+  return __builtin_popcountll(input_num);
 }
 #endif
 
 simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
-                                uint64_t *result) {
+                                         uint64_t *result) {
 #if SIMDJSON_REGULAR_VISUAL_STUDIO
-  return _addcarry_u64(0, value1, value2,
-                       reinterpret_cast(result));
+  *result = value1 + value2;
+  return *result < value1;
 #else
   return __builtin_uaddll_overflow(value1, value2,
                                    reinterpret_cast(result));
@@ -78094,533 +113946,99 @@ simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
 }
 
 } // unnamed namespace
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
-#endif // SIMDJSON_ICELAKE_BITMANIPULATION_H
-/* end file simdjson/icelake/bitmanipulation.h */
-/* including simdjson/icelake/bitmask.h: #include "simdjson/icelake/bitmask.h" */
-/* begin file simdjson/icelake/bitmask.h */
-#ifndef SIMDJSON_ICELAKE_BITMASK_H
-#define SIMDJSON_ICELAKE_BITMASK_H
+#endif // SIMDJSON_PPC64_BITMANIPULATION_H
+/* end file simdjson/ppc64/bitmanipulation.h */
+/* including simdjson/ppc64/bitmask.h: #include "simdjson/ppc64/bitmask.h" */
+/* begin file simdjson/ppc64/bitmask.h */
+#ifndef SIMDJSON_PPC64_BITMASK_H
+#define SIMDJSON_PPC64_BITMASK_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace {
 
 //
-// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is
+// encountered.
 //
 // For example, prefix_xor(00100100) == 00011100
 //
-simdjson_inline uint64_t prefix_xor(const uint64_t bitmask) {
-  // There should be no such thing with a processor supporting avx2
-  // but not clmul.
-  __m128i all_ones = _mm_set1_epi8('\xFF');
-  __m128i result = _mm_clmulepi64_si128(_mm_set_epi64x(0ULL, bitmask), all_ones, 0);
-  return _mm_cvtsi128_si64(result);
-}
-
-} // unnamed namespace
-} // namespace icelake
-} // namespace simdjson
-
-#endif // SIMDJSON_ICELAKE_BITMASK_H
-/* end file simdjson/icelake/bitmask.h */
-/* including simdjson/icelake/simd.h: #include "simdjson/icelake/simd.h" */
-/* begin file simdjson/icelake/simd.h */
-#ifndef SIMDJSON_ICELAKE_SIMD_H
-#define SIMDJSON_ICELAKE_SIMD_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/bitmanipulation.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-#if defined(__GNUC__) && !defined(__clang__)
-#if __GNUC__ == 8
-#define SIMDJSON_GCC8 1
-#endif //  __GNUC__ == 8
-#endif // defined(__GNUC__) && !defined(__clang__)
-
-#if SIMDJSON_GCC8
-/**
- * GCC 8 fails to provide _mm512_set_epi8. We roll our own.
- */
-inline __m512i _mm512_set_epi8(uint8_t a0, uint8_t a1, uint8_t a2, uint8_t a3, uint8_t a4, uint8_t a5, uint8_t a6, uint8_t a7, uint8_t a8, uint8_t a9, uint8_t a10, uint8_t a11, uint8_t a12, uint8_t a13, uint8_t a14, uint8_t a15, uint8_t a16, uint8_t a17, uint8_t a18, uint8_t a19, uint8_t a20, uint8_t a21, uint8_t a22, uint8_t a23, uint8_t a24, uint8_t a25, uint8_t a26, uint8_t a27, uint8_t a28, uint8_t a29, uint8_t a30, uint8_t a31, uint8_t a32, uint8_t a33, uint8_t a34, uint8_t a35, uint8_t a36, uint8_t a37, uint8_t a38, uint8_t a39, uint8_t a40, uint8_t a41, uint8_t a42, uint8_t a43, uint8_t a44, uint8_t a45, uint8_t a46, uint8_t a47, uint8_t a48, uint8_t a49, uint8_t a50, uint8_t a51, uint8_t a52, uint8_t a53, uint8_t a54, uint8_t a55, uint8_t a56, uint8_t a57, uint8_t a58, uint8_t a59, uint8_t a60, uint8_t a61, uint8_t a62, uint8_t a63) {
-  return _mm512_set_epi64(uint64_t(a7) + (uint64_t(a6) << 8) + (uint64_t(a5) << 16) + (uint64_t(a4) << 24) + (uint64_t(a3) << 32) + (uint64_t(a2) << 40) + (uint64_t(a1) << 48) + (uint64_t(a0) << 56),
-                          uint64_t(a15) + (uint64_t(a14) << 8) + (uint64_t(a13) << 16) + (uint64_t(a12) << 24) + (uint64_t(a11) << 32) + (uint64_t(a10) << 40) + (uint64_t(a9) << 48) + (uint64_t(a8) << 56),
-                          uint64_t(a23) + (uint64_t(a22) << 8) + (uint64_t(a21) << 16) + (uint64_t(a20) << 24) + (uint64_t(a19) << 32) + (uint64_t(a18) << 40) + (uint64_t(a17) << 48) + (uint64_t(a16) << 56),
-                          uint64_t(a31) + (uint64_t(a30) << 8) + (uint64_t(a29) << 16) + (uint64_t(a28) << 24) + (uint64_t(a27) << 32) + (uint64_t(a26) << 40) + (uint64_t(a25) << 48) + (uint64_t(a24) << 56),
-                          uint64_t(a39) + (uint64_t(a38) << 8) + (uint64_t(a37) << 16) + (uint64_t(a36) << 24) + (uint64_t(a35) << 32) + (uint64_t(a34) << 40) + (uint64_t(a33) << 48) + (uint64_t(a32) << 56),
-                          uint64_t(a47) + (uint64_t(a46) << 8) + (uint64_t(a45) << 16) + (uint64_t(a44) << 24) + (uint64_t(a43) << 32) + (uint64_t(a42) << 40) + (uint64_t(a41) << 48) + (uint64_t(a40) << 56),
-                          uint64_t(a55) + (uint64_t(a54) << 8) + (uint64_t(a53) << 16) + (uint64_t(a52) << 24) + (uint64_t(a51) << 32) + (uint64_t(a50) << 40) + (uint64_t(a49) << 48) + (uint64_t(a48) << 56),
-                          uint64_t(a63) + (uint64_t(a62) << 8) + (uint64_t(a61) << 16) + (uint64_t(a60) << 24) + (uint64_t(a59) << 32) + (uint64_t(a58) << 40) + (uint64_t(a57) << 48) + (uint64_t(a56) << 56));
+simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
+  // You can use the version below, however gcc sometimes miscompiles
+  // vec_pmsum_be, it happens somewhere around between 8 and 9th version.
+  // The performance boost was not noticeable, falling back to a usual
+  // implementation.
+  //   __vector unsigned long long all_ones = {~0ull, ~0ull};
+  //   __vector unsigned long long mask = {bitmask, 0};
+  //   // Clang and GCC return different values for pmsum for ull so cast it to one.
+  //   // Generally it is not specified by ALTIVEC ISA what is returned by
+  //   // vec_pmsum_be.
+  // #if defined(__LITTLE_ENDIAN__)
+  //   return (uint64_t)(((__vector unsigned long long)vec_pmsum_be(all_ones, mask))[0]);
+  // #else
+  //   return (uint64_t)(((__vector unsigned long long)vec_pmsum_be(all_ones, mask))[1]);
+  // #endif
+  bitmask ^= bitmask << 1;
+  bitmask ^= bitmask << 2;
+  bitmask ^= bitmask << 4;
+  bitmask ^= bitmask << 8;
+  bitmask ^= bitmask << 16;
+  bitmask ^= bitmask << 32;
+  return bitmask;
 }
-#endif // SIMDJSON_GCC8
-
-
-
-namespace simdjson {
-namespace icelake {
-namespace {
-namespace simd {
-
-  // Forward-declared so they can be used by splat and friends.
-  template
-  struct base {
-    __m512i value;
-
-    // Zero constructor
-    simdjson_inline base() : value{__m512i()} {}
-
-    // Conversion from SIMD register
-    simdjson_inline base(const __m512i _value) : value(_value) {}
-
-    // Conversion to SIMD register
-    simdjson_inline operator const __m512i&() const { return this->value; }
-    simdjson_inline operator __m512i&() { return this->value; }
-
-    // Bit operations
-    simdjson_inline Child operator|(const Child other) const { return _mm512_or_si512(*this, other); }
-    simdjson_inline Child operator&(const Child other) const { return _mm512_and_si512(*this, other); }
-    simdjson_inline Child operator^(const Child other) const { return _mm512_xor_si512(*this, other); }
-    simdjson_inline Child bit_andnot(const Child other) const { return _mm512_andnot_si512(other, *this); }
-    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
-    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
-    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
-  };
-
-  // Forward-declared so they can be used by splat and friends.
-  template
-  struct simd8;
-
-  template>
-  struct base8: base> {
-    typedef uint32_t bitmask_t;
-    typedef uint64_t bitmask2_t;
-
-    simdjson_inline base8() : base>() {}
-    simdjson_inline base8(const __m512i _value) : base>(_value) {}
-
-    friend simdjson_really_inline uint64_t operator==(const simd8 lhs, const simd8 rhs) {
-      return _mm512_cmpeq_epi8_mask(lhs, rhs);
-    }
-    static const int SIZE = sizeof(base::value);
-
-    template
-    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
-     // workaround for compilers unable to figure out that 16 - N is a constant (GCC 8)
-      constexpr int shift = 16 - N;
-      return _mm512_alignr_epi8(*this, _mm512_permutex2var_epi64(prev_chunk, _mm512_set_epi64(13, 12, 11, 10, 9, 8, 7, 6), *this), shift);
-    }
-  };
-
-  // SIMD byte mask type (returned by things like eq and gt)
-  template<>
-  struct simd8: base8 {
-    static simdjson_inline simd8 splat(bool _value) { return _mm512_set1_epi8(uint8_t(-(!!_value))); }
-
-    simdjson_inline simd8() : base8() {}
-    simdjson_inline simd8(const __m512i _value) : base8(_value) {}
-    // Splat constructor
-    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
-    simdjson_inline bool any() const { return !!_mm512_test_epi8_mask (*this, *this); }
-    simdjson_inline simd8 operator~() const { return *this ^ true; }
-  };
-
-  template
-  struct base8_numeric: base8 {
-    static simdjson_inline simd8 splat(T _value) { return _mm512_set1_epi8(_value); }
-    static simdjson_inline simd8 zero() { return _mm512_setzero_si512(); }
-    static simdjson_inline simd8 load(const T values[64]) {
-      return _mm512_loadu_si512(reinterpret_cast(values));
-    }
-    // Repeat 16 values as many times as necessary (usually for lookup tables)
-    static simdjson_inline simd8 repeat_16(
-      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
-      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
-    ) {
-      return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15
-      );
-    }
-
-    simdjson_inline base8_numeric() : base8() {}
-    simdjson_inline base8_numeric(const __m512i _value) : base8(_value) {}
-
-    // Store to array
-    simdjson_inline void store(T dst[64]) const { return _mm512_storeu_si512(reinterpret_cast<__m512i *>(dst), *this); }
-
-    // Addition/subtraction are the same for signed and unsigned
-    simdjson_inline simd8 operator+(const simd8 other) const { return _mm512_add_epi8(*this, other); }
-    simdjson_inline simd8 operator-(const simd8 other) const { return _mm512_sub_epi8(*this, other); }
-    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
-    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
-
-    // Override to distinguish from bool version
-    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
-
-    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
-    template
-    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
-      return _mm512_shuffle_epi8(lookup_table, *this);
-    }
-
-    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
-    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
-    // Only the first 64 - count_ones(mask) bytes of the result are significant but 64 bytes
-    // get written.
-    // Design consideration: it seems like a function with the
-    // signature simd8 compress(uint32_t mask) would be
-    // sensible, but the AVX ISA makes this kind of approach difficult.
-    template
-    simdjson_inline void compress(uint64_t mask, L * output) const {
-      // we deliberately avoid _mm512_mask_compressstoreu_epi8 for portability
-      // (AMD Zen4 has terrible performance with it, it is effectively broken)
-      // _mm512_mask_compressstoreu_epi8 (output,~mask,*this);
-      __m512i compressed = _mm512_maskz_compress_epi8(~mask, *this);
-      _mm512_storeu_si512(output, compressed); // could use a mask
-    }
-
-    template
-    simdjson_inline simd8 lookup_16(
-        L replace0,  L replace1,  L replace2,  L replace3,
-        L replace4,  L replace5,  L replace6,  L replace7,
-        L replace8,  L replace9,  L replace10, L replace11,
-        L replace12, L replace13, L replace14, L replace15) const {
-      return lookup_16(simd8::repeat_16(
-        replace0,  replace1,  replace2,  replace3,
-        replace4,  replace5,  replace6,  replace7,
-        replace8,  replace9,  replace10, replace11,
-        replace12, replace13, replace14, replace15
-      ));
-    }
-  };
-
-  // Signed bytes
-  template<>
-  struct simd8 : base8_numeric {
-    simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m512i _value) : base8_numeric(_value) {}
-    // Splat constructor
-    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
-    // Array constructor
-    simdjson_inline simd8(const int8_t values[64]) : simd8(load(values)) {}
-    // Member-by-member initialization
-    simdjson_inline simd8(
-      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
-      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15,
-      int8_t v16, int8_t v17, int8_t v18, int8_t v19, int8_t v20, int8_t v21, int8_t v22, int8_t v23,
-      int8_t v24, int8_t v25, int8_t v26, int8_t v27, int8_t v28, int8_t v29, int8_t v30, int8_t v31,
-      int8_t v32, int8_t v33, int8_t v34, int8_t v35, int8_t v36, int8_t v37, int8_t v38, int8_t v39,
-      int8_t v40, int8_t v41, int8_t v42, int8_t v43, int8_t v44, int8_t v45, int8_t v46, int8_t v47,
-      int8_t v48, int8_t v49, int8_t v50, int8_t v51, int8_t v52, int8_t v53, int8_t v54, int8_t v55,
-      int8_t v56, int8_t v57, int8_t v58, int8_t v59, int8_t v60, int8_t v61, int8_t v62, int8_t v63
-    ) : simd8(_mm512_set_epi8(
-      v63, v62, v61, v60, v59, v58, v57, v56,
-      v55, v54, v53, v52, v51, v50, v49, v48,
-      v47, v46, v45, v44, v43, v42, v41, v40,
-      v39, v38, v37, v36, v35, v34, v33, v32,
-      v31, v30, v29, v28, v27, v26, v25, v24,
-      v23, v22, v21, v20, v19, v18, v17, v16,
-      v15, v14, v13, v12, v11, v10,  v9,  v8,
-       v7,  v6,  v5,  v4,  v3,  v2,  v1,  v0
-    )) {}
-
-    // Repeat 16 values as many times as necessary (usually for lookup tables)
-    simdjson_inline static simd8 repeat_16(
-      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
-      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
-    ) {
-      return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15
-      );
-    }
-
-    // Order-sensitive comparisons
-    simdjson_inline simd8 max_val(const simd8 other) const { return _mm512_max_epi8(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return _mm512_min_epi8(*this, other); }
-
-    simdjson_inline simd8 operator>(const simd8 other) const { return _mm512_maskz_abs_epi8(_mm512_cmpgt_epi8_mask(*this, other),_mm512_set1_epi8(uint8_t(0x80))); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return _mm512_maskz_abs_epi8(_mm512_cmpgt_epi8_mask(other, *this),_mm512_set1_epi8(uint8_t(0x80))); }
-  };
-
-  // Unsigned bytes
-  template<>
-  struct simd8: base8_numeric {
-    simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m512i _value) : base8_numeric(_value) {}
-    // Splat constructor
-    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
-    // Array constructor
-    simdjson_inline simd8(const uint8_t values[64]) : simd8(load(values)) {}
-    // Member-by-member initialization
-    simdjson_inline simd8(
-      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
-      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15,
-      uint8_t v16, uint8_t v17, uint8_t v18, uint8_t v19, uint8_t v20, uint8_t v21, uint8_t v22, uint8_t v23,
-      uint8_t v24, uint8_t v25, uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30, uint8_t v31,
-      uint8_t v32, uint8_t v33, uint8_t v34, uint8_t v35, uint8_t v36, uint8_t v37, uint8_t v38, uint8_t v39,
-      uint8_t v40, uint8_t v41, uint8_t v42, uint8_t v43, uint8_t v44, uint8_t v45, uint8_t v46, uint8_t v47,
-      uint8_t v48, uint8_t v49, uint8_t v50, uint8_t v51, uint8_t v52, uint8_t v53, uint8_t v54, uint8_t v55,
-      uint8_t v56, uint8_t v57, uint8_t v58, uint8_t v59, uint8_t v60, uint8_t v61, uint8_t v62, uint8_t v63
-    ) : simd8(_mm512_set_epi8(
-      v63, v62, v61, v60, v59, v58, v57, v56,
-      v55, v54, v53, v52, v51, v50, v49, v48,
-      v47, v46, v45, v44, v43, v42, v41, v40,
-      v39, v38, v37, v36, v35, v34, v33, v32,
-      v31, v30, v29, v28, v27, v26, v25, v24,
-      v23, v22, v21, v20, v19, v18, v17, v16,
-      v15, v14, v13, v12, v11, v10,  v9,  v8,
-       v7,  v6,  v5,  v4,  v3,  v2,  v1,  v0
-    )) {}
-
-    // Repeat 16 values as many times as necessary (usually for lookup tables)
-    simdjson_inline static simd8 repeat_16(
-      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
-      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
-    ) {
-      return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15
-      );
-    }
-
-    // Saturated math
-    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm512_adds_epu8(*this, other); }
-    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm512_subs_epu8(*this, other); }
-
-    // Order-specific operations
-    simdjson_inline simd8 max_val(const simd8 other) const { return _mm512_max_epu8(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return _mm512_min_epu8(other, *this); }
-    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
-    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
-    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
-    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
-    simdjson_inline uint64_t operator<=(const simd8 other) const { return other.max_val(*this) == other; }
-    simdjson_inline uint64_t operator>=(const simd8 other) const { return other.min_val(*this) == other; }
-    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return this->lt_bits(other).any_bits_set(); }
-
-    // Bit-specific operations
-    simdjson_inline simd8 bits_not_set() const { return _mm512_mask_blend_epi8(*this == uint8_t(0), _mm512_set1_epi8(0), _mm512_set1_epi8(-1)); }
-    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
-    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
-    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
-
-    simdjson_inline bool is_ascii() const { return _mm512_movepi8_mask(*this) == 0; }
-    simdjson_inline bool bits_not_set_anywhere() const {
-      return !_mm512_test_epi8_mask(*this, *this);
-    }
-    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
-    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return !_mm512_test_epi8_mask(*this, bits); }
-    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
-    template
-    simdjson_inline simd8 shr() const { return simd8(_mm512_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
-    template
-    simdjson_inline simd8 shl() const { return simd8(_mm512_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
-    // Get one of the bits and make a bitmask out of it.
-    // e.g. value.get_bit<7>() gets the high bit
-    template
-    simdjson_inline uint64_t get_bit() const { return _mm512_movepi8_mask(_mm512_slli_epi16(*this, 7-N)); }
-  };
-
-  template
-  struct simd8x64 {
-    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
-    static_assert(NUM_CHUNKS == 1, "Icelake kernel should use one register per 64-byte block.");
-    const simd8 chunks[NUM_CHUNKS];
-
-    simd8x64(const simd8x64& o) = delete; // no copy allowed
-    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
-    simd8x64() = delete; // no default constructor allowed
-
-    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1) : chunks{chunk0, chunk1} {}
-    simdjson_inline simd8x64(const simd8 chunk0) : chunks{chunk0} {}
-    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr)} {}
-
-    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
-      this->chunks[0].compress(mask, output);
-      return 64 - count_ones(mask);
-    }
-
-    simdjson_inline void store(T ptr[64]) const {
-      this->chunks[0].store(ptr+sizeof(simd8)*0);
-    }
-
-    simdjson_inline simd8 reduce_or() const {
-      return this->chunks[0];
-    }
-
-    simdjson_inline simd8x64 bit_or(const T m) const {
-      const simd8 mask = simd8::splat(m);
-      return simd8x64(
-        this->chunks[0] | mask
-      );
-    }
-
-    simdjson_inline uint64_t eq(const T m) const {
-      const simd8 mask = simd8::splat(m);
-      return this->chunks[0] == mask;
-    }
-
-    simdjson_inline uint64_t eq(const simd8x64 &other) const {
-      return this->chunks[0] == other.chunks[0];
-    }
-
-    simdjson_inline uint64_t lteq(const T m) const {
-      const simd8 mask = simd8::splat(m);
-      return this->chunks[0] <= mask;
-    }
-  }; // struct simd8x64
-
-} // namespace simd
 
 } // unnamed namespace
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
-#endif // SIMDJSON_ICELAKE_SIMD_H
-/* end file simdjson/icelake/simd.h */
-/* including simdjson/icelake/stringparsing_defs.h: #include "simdjson/icelake/stringparsing_defs.h" */
-/* begin file simdjson/icelake/stringparsing_defs.h */
-#ifndef SIMDJSON_ICELAKE_STRINGPARSING_DEFS_H
-#define SIMDJSON_ICELAKE_STRINGPARSING_DEFS_H
+#endif
+/* end file simdjson/ppc64/bitmask.h */
+/* including simdjson/ppc64/numberparsing_defs.h: #include "simdjson/ppc64/numberparsing_defs.h" */
+/* begin file simdjson/ppc64/numberparsing_defs.h */
+#ifndef SIMDJSON_PPC64_NUMBERPARSING_DEFS_H
+#define SIMDJSON_PPC64_NUMBERPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/simd.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-namespace simdjson {
-namespace icelake {
-namespace {
-
-using namespace simd;
-
-// Holds backslashes and quotes locations.
-struct backslash_and_quote {
-public:
-  static constexpr uint32_t BYTES_PROCESSED = 64;
-  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
-
-  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
-  simdjson_inline bool has_backslash() { return ((quote_bits - 1) & bs_bits) != 0; }
-  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
-  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
-
-  uint64_t bs_bits;
-  uint64_t quote_bits;
-}; // struct backslash_and_quote
-
-simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
-  // this can read up to 15 bytes beyond the buffer size, but we require
-  // SIMDJSON_PADDING of padding
-  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
-  simd8 v(src);
-  // store to dest unconditionally - we can overwrite the bits we don't like later
-  v.store(dst);
-  return {
-      static_cast(v == '\\'), // bs_bits
-      static_cast(v == '"'), // quote_bits
-  };
-}
-
-
-
-struct escaping {
-  static constexpr uint32_t BYTES_PROCESSED = 64;
-  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
-
-  simdjson_inline bool has_escape() { return escape_bits != 0; }
-  simdjson_inline int escape_index() { return trailing_zeroes(uint64_t(escape_bits)); }
-
-  __mmask64 escape_bits;
-}; // struct escaping
-
-
-
-simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
-  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
-  simd8 v(src);
-  v.store(dst);
-  __mmask64 is_quote = _mm512_cmpeq_epi8_mask(v, _mm512_set1_epi8('"'));
-  __mmask64 is_backslash = _mm512_cmpeq_epi8_mask(v, _mm512_set1_epi8('\\'));
-  __mmask64 is_control = _mm512_cmplt_epi8_mask(v, _mm512_set1_epi8(32));
-  return {
-    (is_backslash | is_quote | is_control)
-  };
-}
-
-
-
-
-} // unnamed namespace
-} // namespace icelake
-} // namespace simdjson
-
-#endif // SIMDJSON_ICELAKE_STRINGPARSING_DEFS_H
-/* end file simdjson/icelake/stringparsing_defs.h */
-/* including simdjson/icelake/numberparsing_defs.h: #include "simdjson/icelake/numberparsing_defs.h" */
-/* begin file simdjson/icelake/numberparsing_defs.h */
-#ifndef SIMDJSON_ICELAKE_NUMBERPARSING_DEFS_H
-#define SIMDJSON_ICELAKE_NUMBERPARSING_DEFS_H
+#include 
 
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/intrinsics.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#if defined(__linux__)
+#include 
+#elif defined(__FreeBSD__)
+#include 
+#endif
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace numberparsing {
 
+// we don't have appropriate instructions, so let us use a scalar function
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
 static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
-  // this actually computes *16* values so we are being wasteful.
-  const __m128i ascii0 = _mm_set1_epi8('0');
-  const __m128i mul_1_10 =
-      _mm_setr_epi8(10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1);
-  const __m128i mul_1_100 = _mm_setr_epi16(100, 1, 100, 1, 100, 1, 100, 1);
-  const __m128i mul_1_10000 =
-      _mm_setr_epi16(10000, 1, 10000, 1, 10000, 1, 10000, 1);
-  const __m128i input = _mm_sub_epi8(
-      _mm_loadu_si128(reinterpret_cast(chars)), ascii0);
-  const __m128i t1 = _mm_maddubs_epi16(input, mul_1_10);
-  const __m128i t2 = _mm_madd_epi16(t1, mul_1_100);
-  const __m128i t3 = _mm_packus_epi32(t2, t2);
-  const __m128i t4 = _mm_madd_epi16(t3, mul_1_10000);
-  return _mm_cvtsi128_si32(
-      t4); // only captures the sum of the first 8 digits, drop the rest
+  uint64_t val;
+  std::memcpy(&val, chars, sizeof(uint64_t));
+#ifdef __BIG_ENDIAN__
+#if defined(__linux__)
+  val = bswap_64(val);
+#elif defined(__FreeBSD__)
+  val = bswap64(val);
+#endif
+#endif
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
 }
 
 /** @private */
@@ -78643,23 +114061,601 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 }
 
 } // namespace numberparsing
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
+#ifndef SIMDJSON_SWAR_NUMBER_PARSING
+#if SIMDJSON_IS_BIG_ENDIAN
+#define SIMDJSON_SWAR_NUMBER_PARSING 0
+#else
 #define SIMDJSON_SWAR_NUMBER_PARSING 1
+#endif
+#endif
 
-#endif // SIMDJSON_ICELAKE_NUMBERPARSING_DEFS_H
-/* end file simdjson/icelake/numberparsing_defs.h */
-/* end file simdjson/icelake/begin.h */
-/* including simdjson/generic/ondemand/amalgamated.h for icelake: #include "simdjson/generic/ondemand/amalgamated.h" */
-/* begin file simdjson/generic/ondemand/amalgamated.h for icelake */
-#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H)
+#endif // SIMDJSON_PPC64_NUMBERPARSING_DEFS_H
+/* end file simdjson/ppc64/numberparsing_defs.h */
+/* including simdjson/ppc64/simd.h: #include "simdjson/ppc64/simd.h" */
+/* begin file simdjson/ppc64/simd.h */
+#ifndef SIMDJSON_PPC64_SIMD_H
+#define SIMDJSON_PPC64_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+namespace simdjson {
+namespace ppc64 {
+namespace {
+namespace simd {
+
+using __m128i = __vector unsigned char;
+
+template  struct base {
+  __m128i value;
+
+  // Zero constructor
+  simdjson_inline base() : value{__m128i()} {}
+
+  // Conversion from SIMD register
+  simdjson_inline base(const __m128i _value) : value(_value) {}
+
+  // Conversion to SIMD register
+  simdjson_inline operator const __m128i &() const {
+    return this->value;
+  }
+  simdjson_inline operator __m128i &() { return this->value; }
+
+  // Bit operations
+  simdjson_inline Child operator|(const Child other) const {
+    return vec_or(this->value, (__m128i)other);
+  }
+  simdjson_inline Child operator&(const Child other) const {
+    return vec_and(this->value, (__m128i)other);
+  }
+  simdjson_inline Child operator^(const Child other) const {
+    return vec_xor(this->value, (__m128i)other);
+  }
+  simdjson_inline Child bit_andnot(const Child other) const {
+    return vec_andc(this->value, (__m128i)other);
+  }
+  simdjson_inline Child &operator|=(const Child other) {
+    auto this_cast = static_cast(this);
+    *this_cast = *this_cast | other;
+    return *this_cast;
+  }
+  simdjson_inline Child &operator&=(const Child other) {
+    auto this_cast = static_cast(this);
+    *this_cast = *this_cast & other;
+    return *this_cast;
+  }
+  simdjson_inline Child &operator^=(const Child other) {
+    auto this_cast = static_cast(this);
+    *this_cast = *this_cast ^ other;
+    return *this_cast;
+  }
+};
+
+template >
+struct base8 : base> {
+  typedef uint16_t bitmask_t;
+  typedef uint32_t bitmask2_t;
+
+  simdjson_inline base8() : base>() {}
+  simdjson_inline base8(const __m128i _value) : base>(_value) {}
+
+  friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) {
+    return (__m128i)vec_cmpeq(lhs.value, (__m128i)rhs);
+  }
+
+  static const int SIZE = sizeof(base>::value);
+
+  template 
+  simdjson_inline simd8 prev(simd8 prev_chunk) const {
+    __m128i chunk = this->value;
+#ifdef __LITTLE_ENDIAN__
+    chunk = (__m128i)vec_reve(this->value);
+    prev_chunk = (__m128i)vec_reve((__m128i)prev_chunk);
+#endif
+    chunk = (__m128i)vec_sld((__m128i)prev_chunk, (__m128i)chunk, 16 - N);
+#ifdef __LITTLE_ENDIAN__
+    chunk = (__m128i)vec_reve((__m128i)chunk);
+#endif
+    return chunk;
+  }
+};
+
+// SIMD byte mask type (returned by things like eq and gt)
+template <> struct simd8 : base8 {
+  static simdjson_inline simd8 splat(bool _value) {
+    return (__m128i)vec_splats((unsigned char)(-(!!_value)));
+  }
+
+  simdjson_inline simd8() : base8() {}
+  simdjson_inline simd8(const __m128i _value)
+      : base8(_value) {}
+  // Splat constructor
+  simdjson_inline simd8(bool _value)
+      : base8(splat(_value)) {}
+
+  simdjson_inline int to_bitmask() const {
+    __vector unsigned long long result;
+    const __m128i perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50, 0x48, 0x40,
+                               0x38, 0x30, 0x28, 0x20, 0x18, 0x10, 0x08, 0x00};
+
+    result = ((__vector unsigned long long)vec_vbpermq((__m128i)this->value,
+                                                       (__m128i)perm_mask));
+#ifdef __LITTLE_ENDIAN__
+    return static_cast(result[1]);
+#else
+    return static_cast(result[0]);
+#endif
+  }
+  simdjson_inline bool any() const {
+    return !vec_all_eq(this->value, (__m128i)vec_splats(0));
+  }
+  simdjson_inline simd8 operator~() const {
+    return this->value ^ (__m128i)splat(true);
+  }
+};
+
+template  struct base8_numeric : base8 {
+  static simdjson_inline simd8 splat(T value) {
+    (void)value;
+    return (__m128i)vec_splats(value);
+  }
+  static simdjson_inline simd8 zero() { return splat(0); }
+  static simdjson_inline simd8 load(const T values[16]) {
+    return (__m128i)(vec_vsx_ld(0, reinterpret_cast(values)));
+  }
+  // Repeat 16 values as many times as necessary (usually for lookup tables)
+  static simdjson_inline simd8 repeat_16(T v0, T v1, T v2, T v3, T v4,
+                                                   T v5, T v6, T v7, T v8, T v9,
+                                                   T v10, T v11, T v12, T v13,
+                                                   T v14, T v15) {
+    return simd8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
+                    v14, v15);
+  }
+
+  simdjson_inline base8_numeric() : base8() {}
+  simdjson_inline base8_numeric(const __m128i _value)
+      : base8(_value) {}
+
+  // Store to array
+  simdjson_inline void store(T dst[16]) const {
+    vec_vsx_st(this->value, 0, reinterpret_cast<__m128i *>(dst));
+  }
+
+  // Override to distinguish from bool version
+  simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+
+  // Addition/subtraction are the same for signed and unsigned
+  simdjson_inline simd8 operator+(const simd8 other) const {
+    return (__m128i)((__m128i)this->value + (__m128i)other);
+  }
+  simdjson_inline simd8 operator-(const simd8 other) const {
+    return (__m128i)((__m128i)this->value - (__m128i)other);
+  }
+  simdjson_inline simd8 &operator+=(const simd8 other) {
+    *this = *this + other;
+    return *static_cast *>(this);
+  }
+  simdjson_inline simd8 &operator-=(const simd8 other) {
+    *this = *this - other;
+    return *static_cast *>(this);
+  }
+
+  // Perform a lookup assuming the value is between 0 and 16 (undefined behavior
+  // for out of range values)
+  template 
+  simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+    return (__m128i)vec_perm((__m128i)lookup_table, (__m128i)lookup_table, this->value);
+  }
+
+  // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted
+  // as a bitset). Passing a 0 value for mask would be equivalent to writing out
+  // every byte to output. Only the first 16 - count_ones(mask) bytes of the
+  // result are significant but 16 bytes get written. Design consideration: it
+  // seems like a function with the signature simd8 compress(uint32_t mask)
+  // would be sensible, but the AVX ISA makes this kind of approach difficult.
+  template 
+  simdjson_inline void compress(uint16_t mask, L *output) const {
+    using internal::BitsSetTable256mul2;
+    using internal::pshufb_combine_table;
+    using internal::thintable_epi8;
+    // this particular implementation was inspired by work done by @animetosho
+    // we do it in two steps, first 8 bytes and then second 8 bytes
+    uint8_t mask1 = uint8_t(mask);      // least significant 8 bits
+    uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
+    // next line just loads the 64-bit values thintable_epi8[mask1] and
+    // thintable_epi8[mask2] into a 128-bit register, using only
+    // two instructions on most compilers.
+#ifdef __LITTLE_ENDIAN__
+    __m128i shufmask = (__m128i)(__vector unsigned long long){
+        thintable_epi8[mask1], thintable_epi8[mask2]};
+#else
+    __m128i shufmask = (__m128i)(__vector unsigned long long){
+        thintable_epi8[mask2], thintable_epi8[mask1]};
+    shufmask = (__m128i)vec_reve((__m128i)shufmask);
+#endif
+    // we increment by 0x08 the second half of the mask
+    shufmask = ((__m128i)shufmask) +
+               ((__m128i)(__vector int){0, 0, 0x08080808, 0x08080808});
+
+    // this is the version "nearly pruned"
+    __m128i pruned = vec_perm(this->value, this->value, shufmask);
+    // we still need to put the two halves together.
+    // we compute the popcount of the first half:
+    int pop1 = BitsSetTable256mul2[mask1];
+    // then load the corresponding mask, what it does is to write
+    // only the first pop1 bytes from the first 8 bytes, and then
+    // it fills in with the bytes from the second 8 bytes + some filling
+    // at the end.
+    __m128i compactmask =
+        vec_vsx_ld(0, reinterpret_cast(pshufb_combine_table + pop1 * 8));
+    __m128i answer = vec_perm(pruned, (__m128i)vec_splats(0), compactmask);
+    vec_vsx_st(answer, 0, reinterpret_cast<__m128i *>(output));
+  }
+
+  template 
+  simdjson_inline simd8
+  lookup_16(L replace0, L replace1, L replace2, L replace3, L replace4,
+            L replace5, L replace6, L replace7, L replace8, L replace9,
+            L replace10, L replace11, L replace12, L replace13, L replace14,
+            L replace15) const {
+    return lookup_16(simd8::repeat_16(
+        replace0, replace1, replace2, replace3, replace4, replace5, replace6,
+        replace7, replace8, replace9, replace10, replace11, replace12,
+        replace13, replace14, replace15));
+  }
+};
+
+// Signed bytes
+template <> struct simd8 : base8_numeric {
+  simdjson_inline simd8() : base8_numeric() {}
+  simdjson_inline simd8(const __m128i _value)
+      : base8_numeric(_value) {}
+  // Splat constructor
+  simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+  // Array constructor
+  simdjson_inline simd8(const int8_t *values) : simd8(load(values)) {}
+  // Member-by-member initialization
+  simdjson_inline simd8(int8_t v0, int8_t v1, int8_t v2, int8_t v3,
+                               int8_t v4, int8_t v5, int8_t v6, int8_t v7,
+                               int8_t v8, int8_t v9, int8_t v10, int8_t v11,
+                               int8_t v12, int8_t v13, int8_t v14, int8_t v15)
+      : simd8((__m128i)(__vector signed char){v0, v1, v2, v3, v4, v5, v6, v7,
+                                              v8, v9, v10, v11, v12, v13, v14,
+                                              v15}) {}
+  // Repeat 16 values as many times as necessary (usually for lookup tables)
+  simdjson_inline static simd8
+  repeat_16(int8_t v0, int8_t v1, int8_t v2, int8_t v3, int8_t v4, int8_t v5,
+            int8_t v6, int8_t v7, int8_t v8, int8_t v9, int8_t v10, int8_t v11,
+            int8_t v12, int8_t v13, int8_t v14, int8_t v15) {
+    return simd8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+                         v13, v14, v15);
+  }
+
+  // Order-sensitive comparisons
+  simdjson_inline simd8
+  max_val(const simd8 other) const {
+    return (__m128i)vec_max((__vector signed char)this->value,
+                            (__vector signed char)(__m128i)other);
+  }
+  simdjson_inline simd8
+  min_val(const simd8 other) const {
+    return (__m128i)vec_min((__vector signed char)this->value,
+                            (__vector signed char)(__m128i)other);
+  }
+  simdjson_inline simd8
+  operator>(const simd8 other) const {
+    return (__m128i)vec_cmpgt((__vector signed char)this->value,
+                              (__vector signed char)(__m128i)other);
+  }
+  simdjson_inline simd8
+  operator<(const simd8 other) const {
+    return (__m128i)vec_cmplt((__vector signed char)this->value,
+                              (__vector signed char)(__m128i)other);
+  }
+};
+
+// Unsigned bytes
+template <> struct simd8 : base8_numeric {
+  simdjson_inline simd8() : base8_numeric() {}
+  simdjson_inline simd8(const __m128i _value)
+      : base8_numeric(_value) {}
+  // Splat constructor
+  simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+  // Array constructor
+  simdjson_inline simd8(const uint8_t *values) : simd8(load(values)) {}
+  // Member-by-member initialization
+  simdjson_inline
+  simd8(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4, uint8_t v5,
+        uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9, uint8_t v10,
+        uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15)
+      : simd8((__m128i){v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+                        v13, v14, v15}) {}
+  // Repeat 16 values as many times as necessary (usually for lookup tables)
+  simdjson_inline static simd8
+  repeat_16(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4,
+            uint8_t v5, uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9,
+            uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14,
+            uint8_t v15) {
+    return simd8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+                          v13, v14, v15);
+  }
+
+  // Saturated math
+  simdjson_inline simd8
+  saturating_add(const simd8 other) const {
+    return (__m128i)vec_adds(this->value, (__m128i)other);
+  }
+  simdjson_inline simd8
+  saturating_sub(const simd8 other) const {
+    return (__m128i)vec_subs(this->value, (__m128i)other);
+  }
+
+  // Order-specific operations
+  simdjson_inline simd8
+  max_val(const simd8 other) const {
+    return (__m128i)vec_max(this->value, (__m128i)other);
+  }
+  simdjson_inline simd8
+  min_val(const simd8 other) const {
+    return (__m128i)vec_min(this->value, (__m128i)other);
+  }
+  // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
+  simdjson_inline simd8
+  gt_bits(const simd8 other) const {
+    return this->saturating_sub(other);
+  }
+  // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
+  simdjson_inline simd8
+  lt_bits(const simd8 other) const {
+    return other.saturating_sub(*this);
+  }
+  simdjson_inline simd8
+  operator<=(const simd8 other) const {
+    return other.max_val(*this) == other;
+  }
+  simdjson_inline simd8
+  operator>=(const simd8 other) const {
+    return other.min_val(*this) == other;
+  }
+  simdjson_inline simd8
+  operator>(const simd8 other) const {
+    return this->gt_bits(other).any_bits_set();
+  }
+  simdjson_inline simd8
+  operator<(const simd8 other) const {
+    return this->gt_bits(other).any_bits_set();
+  }
+
+  // Bit-specific operations
+  simdjson_inline simd8 bits_not_set() const {
+    return (__m128i)vec_cmpeq(this->value, (__m128i)vec_splats(uint8_t(0)));
+  }
+  simdjson_inline simd8 bits_not_set(simd8 bits) const {
+    return (*this & bits).bits_not_set();
+  }
+  simdjson_inline simd8 any_bits_set() const {
+    return ~this->bits_not_set();
+  }
+  simdjson_inline simd8 any_bits_set(simd8 bits) const {
+    return ~this->bits_not_set(bits);
+  }
+  simdjson_inline bool bits_not_set_anywhere() const {
+    return vec_all_eq(this->value, (__m128i)vec_splats(0));
+  }
+  simdjson_inline bool any_bits_set_anywhere() const {
+    return !bits_not_set_anywhere();
+  }
+  simdjson_inline bool bits_not_set_anywhere(simd8 bits) const {
+    return vec_all_eq(vec_and(this->value, (__m128i)bits),
+                      (__m128i)vec_splats(0));
+  }
+  simdjson_inline bool any_bits_set_anywhere(simd8 bits) const {
+    return !bits_not_set_anywhere(bits);
+  }
+  template  simdjson_inline simd8 shr() const {
+    return simd8(
+        (__m128i)vec_sr(this->value, (__m128i)vec_splat_u8(N)));
+  }
+  template  simdjson_inline simd8 shl() const {
+    return simd8(
+        (__m128i)vec_sl(this->value, (__m128i)vec_splat_u8(N)));
+  }
+};
+
+template  struct simd8x64 {
+  static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+  static_assert(NUM_CHUNKS == 4,
+                "PPC64 kernel should use four registers per 64-byte block.");
+  const simd8 chunks[NUM_CHUNKS];
+  template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+  simd8x64(const simd8x64 &o) = delete; // no copy allowed
+  simd8x64 &
+  operator=(const simd8& other) = delete; // no assignment allowed
+  simd8x64() = delete;                      // no default constructor allowed
+
+  simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1,
+                                  const simd8 chunk2, const simd8 chunk3)
+      : chunks{chunk0, chunk1, chunk2, chunk3} {}
+  simdjson_inline simd8x64(const T ptr[64])
+      : chunks{simd8::load(ptr), simd8::load(ptr + 16),
+               simd8::load(ptr + 32), simd8::load(ptr + 48)} {}
+
+  simdjson_inline void store(T ptr[64]) const {
+    this->chunks[0].store(ptr + sizeof(simd8) * 0);
+    this->chunks[1].store(ptr + sizeof(simd8) * 1);
+    this->chunks[2].store(ptr + sizeof(simd8) * 2);
+    this->chunks[3].store(ptr + sizeof(simd8) * 3);
+  }
+
+  simdjson_inline simd8 reduce_or() const {
+    return (this->chunks[0] | this->chunks[1]) |
+           (this->chunks[2] | this->chunks[3]);
+  }
+
+  simdjson_inline uint64_t compress(uint64_t mask, T *output) const {
+    this->chunks[0].compress(uint16_t(mask), output);
+    this->chunks[1].compress(uint16_t(mask >> 16),
+                             output + 16 - count_ones(mask & 0xFFFF));
+    this->chunks[2].compress(uint16_t(mask >> 32),
+                             output + 32 - count_ones(mask & 0xFFFFFFFF));
+    this->chunks[3].compress(uint16_t(mask >> 48),
+                             output + 48 - count_ones(mask & 0xFFFFFFFFFFFF));
+    return 64 - count_ones(mask);
+  }
+
+  simdjson_inline uint64_t to_bitmask() const {
+    uint64_t r0 = uint32_t(this->chunks[0].to_bitmask());
+    uint64_t r1 = this->chunks[1].to_bitmask();
+    uint64_t r2 = this->chunks[2].to_bitmask();
+    uint64_t r3 = this->chunks[3].to_bitmask();
+    return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
+  }
+
+  simdjson_inline uint64_t eq(const T m) const {
+    const simd8 mask = simd8::splat(m);
+    return simd8x64(this->chunks[0] == mask, this->chunks[1] == mask,
+                          this->chunks[2] == mask, this->chunks[3] == mask)
+        .to_bitmask();
+  }
+
+  simdjson_inline uint64_t eq(const simd8x64 &other) const {
+    return simd8x64(this->chunks[0] == other.chunks[0],
+                          this->chunks[1] == other.chunks[1],
+                          this->chunks[2] == other.chunks[2],
+                          this->chunks[3] == other.chunks[3])
+        .to_bitmask();
+  }
+
+  simdjson_inline uint64_t lteq(const T m) const {
+    const simd8 mask = simd8::splat(m);
+    return simd8x64(this->chunks[0] <= mask, this->chunks[1] <= mask,
+                          this->chunks[2] <= mask, this->chunks[3] <= mask)
+        .to_bitmask();
+  }
+}; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace ppc64
+} // namespace simdjson
+
+#endif // SIMDJSON_PPC64_SIMD_INPUT_H
+/* end file simdjson/ppc64/simd.h */
+/* including simdjson/ppc64/stringparsing_defs.h: #include "simdjson/ppc64/stringparsing_defs.h" */
+/* begin file simdjson/ppc64/stringparsing_defs.h */
+#ifndef SIMDJSON_PPC64_STRINGPARSING_DEFS_H
+#define SIMDJSON_PPC64_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/simd.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace ppc64 {
+namespace {
+
+using namespace simd;
+
+// Holds backslashes and quotes locations.
+struct backslash_and_quote {
+public:
+  static constexpr uint32_t BYTES_PROCESSED = 32;
+  simdjson_inline backslash_and_quote
+  copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_quote_first() {
+    return ((bs_bits - 1) & quote_bits) != 0;
+  }
+  simdjson_inline bool has_backslash() { return bs_bits != 0; }
+  simdjson_inline int quote_index() {
+    return trailing_zeroes(quote_bits);
+  }
+  simdjson_inline int backslash_index() {
+    return trailing_zeroes(bs_bits);
+  }
+
+  uint32_t bs_bits;
+  uint32_t quote_bits;
+}; // struct backslash_and_quote
+
+simdjson_inline backslash_and_quote
+backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  // this can read up to 31 bytes beyond the buffer size, but we require
+  // SIMDJSON_PADDING of padding
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1),
+                "backslash and quote finder must process fewer than "
+                "SIMDJSON_PADDING bytes");
+  simd8 v0(src);
+  simd8 v1(src + sizeof(v0));
+  v0.store(dst);
+  v1.store(dst + sizeof(v0));
+
+  // Getting a 64-bit bitmask is much cheaper than multiple 16-bit bitmasks on
+  // PPC; therefore, we smash them together into a 64-byte mask and get the
+  // bitmask from there.
+  uint64_t bs_and_quote =
+      simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
+  return {
+      uint32_t(bs_and_quote),      // bs_bits
+      uint32_t(bs_and_quote >> 32) // quote_bits
+  };
+}
+
+
+struct escaping {
+  static constexpr uint32_t BYTES_PROCESSED = 16;
+  simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
+
+  simdjson_inline bool has_escape() { return escape_bits != 0; }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits); }
+
+  uint64_t escape_bits;
+}; // struct escaping
+
+
+
+simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
+  simd8 v(src);
+  v.store(dst);
+  simd8 is_quote = (v == '"');
+  simd8 is_backslash = (v == '\\');
+  simd8 is_control = (v < 32);
+  return {
+    // We store it as a 64-bit bitmask even though we only need 16 bits.
+    uint64_t((is_backslash | is_quote | is_control).to_bitmask())
+  };
+}
+
+} // unnamed namespace
+} // namespace ppc64
+} // namespace simdjson
+
+#endif // SIMDJSON_PPC64_STRINGPARSING_DEFS_H
+/* end file simdjson/ppc64/stringparsing_defs.h */
+
+#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
+/* end file simdjson/ppc64/begin.h */
+/* including simdjson/generic/ondemand/amalgamated.h for ppc64: #include "simdjson/generic/ondemand/amalgamated.h" */
+/* begin file simdjson/generic/ondemand/amalgamated.h for ppc64 */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
 #error simdjson/generic/ondemand/dependencies.h must be included before simdjson/generic/ondemand/amalgamated.h!
 #endif
 
 // Stuff other things depend on
-/* including simdjson/generic/ondemand/base.h for icelake: #include "simdjson/generic/ondemand/base.h" */
-/* begin file simdjson/generic/ondemand/base.h for icelake */
+/* including simdjson/generic/ondemand/base.h for ppc64: #include "simdjson/generic/ondemand/base.h" */
+/* begin file simdjson/generic/ondemand/base.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -78668,7 +114664,7 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 /**
  * A fast, simple, DOM-like interface that parses JSON as you use it.
  *
@@ -78679,8 +114675,8 @@ namespace ondemand {
 /** Represents the depth of a JSON value (number of nested arrays/objects). */
 using depth_t = int32_t;
 
-/** @copydoc simdjson::icelake::number_type */
-using number_type = simdjson::icelake::number_type;
+/** @copydoc simdjson::ppc64::number_type */
+using number_type = simdjson::ppc64::number_type;
 
 /** @private Position in the JSON buffer indexes */
 using token_position = const uint32_t *;
@@ -78703,13 +114699,13 @@ class value;
 class value_iterator;
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_BASE_H
-/* end file simdjson/generic/ondemand/base.h for icelake */
-/* including simdjson/generic/ondemand/deserialize.h for icelake: #include "simdjson/generic/ondemand/deserialize.h" */
-/* begin file simdjson/generic/ondemand/deserialize.h for icelake */
+/* end file simdjson/generic/ondemand/base.h for ppc64 */
+/* including simdjson/generic/ondemand/deserialize.h for ppc64: #include "simdjson/generic/ondemand/deserialize.h" */
+/* begin file simdjson/generic/ondemand/deserialize.h for ppc64 */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -78729,35 +114725,35 @@ template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 
 template 
 concept is_builtin_deserializable_v = is_builtin_deserializable::value;
 
-template 
+template 
 concept custom_deserializable = tag_invocable;
 
-template 
+template 
 concept deserializable = custom_deserializable || is_builtin_deserializable_v || concepts::optional_type;
 
-template 
+template 
 concept nothrow_custom_deserializable = nothrow_tag_invocable;
 
 // built-in types are noexcept and if an error happens, the value simply gets ignored and the error is returned.
-template 
+template 
 concept nothrow_deserializable = nothrow_custom_deserializable || is_builtin_deserializable_v;
 
 /// Deserialize Tag
 inline constexpr struct deserialize_tag {
-  using array_type = icelake::ondemand::array;
-  using object_type = icelake::ondemand::object;
-  using value_type = icelake::ondemand::value;
-  using document_type = icelake::ondemand::document;
-  using document_reference_type = icelake::ondemand::document_reference;
+  using array_type = ppc64::ondemand::array;
+  using object_type = ppc64::ondemand::object;
+  using value_type = ppc64::ondemand::value;
+  using document_type = ppc64::ondemand::document;
+  using document_reference_type = ppc64::ondemand::document_reference;
 
   // Customization Point for array
   template 
@@ -78802,9 +114798,9 @@ inline constexpr struct deserialize_tag {
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
 
-/* end file simdjson/generic/ondemand/deserialize.h for icelake */
-/* including simdjson/generic/ondemand/value_iterator.h for icelake: #include "simdjson/generic/ondemand/value_iterator.h" */
-/* begin file simdjson/generic/ondemand/value_iterator.h for icelake */
+/* end file simdjson/generic/ondemand/deserialize.h for ppc64 */
+/* including simdjson/generic/ondemand/value_iterator.h for ppc64: #include "simdjson/generic/ondemand/value_iterator.h" */
+/* begin file simdjson/generic/ondemand/value_iterator.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -78814,7 +114810,7 @@ inline constexpr struct deserialize_tag {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 /**
@@ -79279,21 +115275,22 @@ class value_iterator {
 
   friend class document;
   friend class object;
+  friend class object_iterator;
   friend class array;
   friend class value;
   friend class field;
 }; // value_iterator
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::value_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::value_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -79301,9 +115298,9 @@ struct simdjson_result : public icelake::impl
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
-/* end file simdjson/generic/ondemand/value_iterator.h for icelake */
-/* including simdjson/generic/ondemand/value.h for icelake: #include "simdjson/generic/ondemand/value.h" */
-/* begin file simdjson/generic/ondemand/value.h for icelake */
+/* end file simdjson/generic/ondemand/value_iterator.h for ppc64 */
+/* including simdjson/generic/ondemand/value.h for ppc64: #include "simdjson/generic/ondemand/value.h" */
+/* begin file simdjson/generic/ondemand/value.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -79319,7 +115316,7 @@ struct simdjson_result : public icelake::impl
 
 namespace simdjson {
 
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 /**
  * An ephemeral JSON value returned during iteration. It is only valid for as long as you do
@@ -80033,20 +116030,20 @@ class value {
 };
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::value &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::value &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result get_array() noexcept;
-  simdjson_inline simdjson_result get_object() noexcept;
+  simdjson_inline simdjson_result get_array() noexcept;
+  simdjson_inline simdjson_result get_object() noexcept;
 
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
@@ -80058,7 +116055,7 @@ struct simdjson_result : public icelake::implementatio
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
@@ -80069,20 +116066,20 @@ struct simdjson_result : public icelake::implementatio
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator icelake::ondemand::array() noexcept(false);
-  simdjson_inline operator icelake::ondemand::object() noexcept(false);
+  simdjson_inline operator ppc64::ondemand::array() noexcept(false);
+  simdjson_inline operator ppc64::ondemand::object() noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator icelake::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator ppc64::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
 
   /**
    * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
@@ -80106,9 +116103,9 @@ struct simdjson_result : public icelake::implementatio
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field(const char *key) noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field(const char *key) noexcept;
 
   /**
    * Look up a field by name on an object, without regard to key order.
@@ -80120,7 +116117,7 @@ struct simdjson_result : public icelake::implementatio
    * in question is large. The fact that the extra code is there also bumps the executable size.
    *
    * We default operator[] on find_field_unordered() for convenience.
-   * It is the defaul because it would be highly surprising (and hard to debug) if the
+   * It is the default because it would be highly surprising (and hard to debug) if the
    * default behavior failed to look up a field just because it was in the wrong order--and many
    * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
    *
@@ -80130,14 +116127,14 @@ struct simdjson_result : public icelake::implementatio
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](const char *key) noexcept;
-  simdjson_result operator[](int) noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](const char *key) noexcept;
+  simdjson_result operator[](int) noexcept = delete;
 
   /**
    * Get the type of this JSON value. It does not validate or consume the value.
@@ -80161,13 +116158,13 @@ struct simdjson_result : public icelake::implementatio
    * better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just
    * let it throw an exception).
    */
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
 
   /** @copydoc simdjson_inline std::string_view value::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
@@ -80177,17 +116174,17 @@ struct simdjson_result : public icelake::implementatio
   simdjson_inline simdjson_result current_location() noexcept;
   /** @copydoc simdjson_inline int32_t current_depth() const noexcept */
   simdjson_inline simdjson_result current_depth() const noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_H
-/* end file simdjson/generic/ondemand/value.h for icelake */
-/* including simdjson/generic/ondemand/logger.h for icelake: #include "simdjson/generic/ondemand/logger.h" */
-/* begin file simdjson/generic/ondemand/logger.h for icelake */
+/* end file simdjson/generic/ondemand/value.h for ppc64 */
+/* including simdjson/generic/ondemand/logger.h for ppc64: #include "simdjson/generic/ondemand/logger.h" */
+/* begin file simdjson/generic/ondemand/logger.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -80196,7 +116193,7 @@ struct simdjson_result : public icelake::implementatio
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 // Logging should be free unless SIMDJSON_VERBOSE_LOGGING is set. Importantly, it is critical
@@ -80242,13 +116239,13 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 
 } // namespace logger
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
-/* end file simdjson/generic/ondemand/logger.h for icelake */
-/* including simdjson/generic/ondemand/token_iterator.h for icelake: #include "simdjson/generic/ondemand/token_iterator.h" */
-/* begin file simdjson/generic/ondemand/token_iterator.h for icelake */
+/* end file simdjson/generic/ondemand/logger.h for ppc64 */
+/* including simdjson/generic/ondemand/token_iterator.h for ppc64: #include "simdjson/generic/ondemand/token_iterator.h" */
+/* begin file simdjson/generic/ondemand/token_iterator.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -80259,7 +116256,7 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 /**
@@ -80390,15 +116387,15 @@ class token_iterator {
 };
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::token_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::token_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -80407,9 +116404,9 @@ struct simdjson_result : public icelake::impl
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
-/* end file simdjson/generic/ondemand/token_iterator.h for icelake */
-/* including simdjson/generic/ondemand/json_iterator.h for icelake: #include "simdjson/generic/ondemand/json_iterator.h" */
-/* begin file simdjson/generic/ondemand/json_iterator.h for icelake */
+/* end file simdjson/generic/ondemand/token_iterator.h for ppc64 */
+/* including simdjson/generic/ondemand/json_iterator.h for ppc64: #include "simdjson/generic/ondemand/json_iterator.h" */
+/* begin file simdjson/generic/ondemand/json_iterator.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -80420,7 +116417,7 @@ struct simdjson_result : public icelake::impl
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 /**
@@ -80731,15 +116728,15 @@ class json_iterator {
 }; // json_iterator
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::json_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::json_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
 
   simdjson_inline simdjson_result() noexcept = default;
@@ -80748,9 +116745,9 @@ struct simdjson_result : public icelake::imple
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
-/* end file simdjson/generic/ondemand/json_iterator.h for icelake */
-/* including simdjson/generic/ondemand/json_type.h for icelake: #include "simdjson/generic/ondemand/json_type.h" */
-/* begin file simdjson/generic/ondemand/json_type.h for icelake */
+/* end file simdjson/generic/ondemand/json_iterator.h for ppc64 */
+/* including simdjson/generic/ondemand/json_type.h for ppc64: #include "simdjson/generic/ondemand/json_type.h" */
+/* begin file simdjson/generic/ondemand/json_type.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -80761,7 +116758,7 @@ struct simdjson_result : public icelake::imple
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 /**
@@ -80895,15 +116892,15 @@ inline std::ostream& operator<<(std::ostream& out, simdjson_result &t
 #endif
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::json_type &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::json_type &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -80912,9 +116909,9 @@ struct simdjson_result : public icelake::implement
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
-/* end file simdjson/generic/ondemand/json_type.h for icelake */
-/* including simdjson/generic/ondemand/raw_json_string.h for icelake: #include "simdjson/generic/ondemand/raw_json_string.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string.h for icelake */
+/* end file simdjson/generic/ondemand/json_type.h for ppc64 */
+/* including simdjson/generic/ondemand/raw_json_string.h for ppc64: #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -80924,7 +116921,7 @@ struct simdjson_result : public icelake::implement
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 /**
@@ -81106,30 +117103,30 @@ simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_js
 
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::raw_json_string &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::raw_json_string &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
 
   simdjson_inline simdjson_result raw() const noexcept;
   simdjson_inline char operator[](size_t) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape(icelake::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(icelake::ondemand::json_iterator &iter) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape(ppc64::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(ppc64::ondemand::json_iterator &iter) const noexcept;
 };
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
-/* end file simdjson/generic/ondemand/raw_json_string.h for icelake */
-/* including simdjson/generic/ondemand/parser.h for icelake: #include "simdjson/generic/ondemand/parser.h" */
-/* begin file simdjson/generic/ondemand/parser.h for icelake */
+/* end file simdjson/generic/ondemand/raw_json_string.h for ppc64 */
+/* including simdjson/generic/ondemand/parser.h for ppc64: #include "simdjson/generic/ondemand/parser.h" */
+/* begin file simdjson/generic/ondemand/parser.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -81142,7 +117139,7 @@ struct simdjson_result : public icelake::imp
 #include 
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 /**
@@ -81542,15 +117539,15 @@ class parser {
 };
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::parser &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::parser &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -81558,319 +117555,11 @@ struct simdjson_result : public icelake::implementati
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_H
-/* end file simdjson/generic/ondemand/parser.h for icelake */
-
-// JSON builder - needed for extract_into functionality
-/* including simdjson/generic/ondemand/json_string_builder.h for icelake: #include "simdjson/generic/ondemand/json_string_builder.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder.h for icelake */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace icelake {
-namespace builder {
-  class string_builder;
-}}
-
-template 
-struct has_custom_serialization : std::false_type {};
-
-inline constexpr struct serialize_tag {
-  template 
-  constexpr void operator()(icelake::builder::string_builder& b, T&& obj) const{
-    return tag_invoke(*this, b, std::forward(obj));
-  }
-
-
-} serialize{};
-template 
-struct has_custom_serialization(), std::declval()))
->> : std::true_type {};
-
-template 
-constexpr bool require_custom_serialization = has_custom_serialization::value;
-#else
-struct has_custom_serialization : std::false_type {};
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace icelake {
-namespace builder {
-/**
- * A builder for JSON strings representing documents. This is a low-level
- * builder that is not meant to be used directly by end-users. Though it
- * supports atomic types (Booleans, strings), it does not support composed
- * types (arrays and objects).
- *
- * Ultimately, this class can support kernel-specific optimizations. E.g.,
- * it may make use of SIMD instructions to escape strings faster.
- */
-class string_builder {
-public:
-  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
-
-  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
-
-  /**
-   * Append number (includes Booleans). Booleans are mapped to the strings
-   * false and true. Numbers are converted to strings abiding by the JSON standard.
-   * Floating-point numbers are converted to the shortest string that 'correctly'
-   * represents the number.
-   */
-  template::value>::type>
-  simdjson_inline void append(number_type v) noexcept;
-
-  /**
-   * Append character c.
-   */
-  simdjson_inline void append(char c)  noexcept;
-
-  /**
-   * Append the string 'null'.
-   */
-  simdjson_inline void append_null()  noexcept;
-
-  /**
-   * Clear the content.
-   */
-  simdjson_inline void clear()  noexcept;
-
-  /**
-   * Append the std::string_view, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
-
-  /**
-   * Append the std::string_view surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void escape_and_append_with_quotes()  noexcept;
-#endif
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
-
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
-
-  /**
-   * Append the C string directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *c)  noexcept;
-
-  /**
-   * Append "{" to the buffer.
-   */
-  simdjson_inline void start_object()  noexcept;
-
-  /**
-   * Append "}" to the buffer.
-   */
-  simdjson_inline void end_object()  noexcept;
-
-  /**
-   * Append "[" to the buffer.
-   */
-  simdjson_inline void start_array()  noexcept;
-
-  /**
-   * Append "]" to the buffer.
-   */
-  simdjson_inline void end_array()  noexcept;
-
-  /**
-   * Append "," to the buffer.
-   */
-  simdjson_inline void append_comma()  noexcept;
-
-  /**
-   * Append ":" to the buffer.
-   */
-  simdjson_inline void append_colon()  noexcept;
-
-  /**
-   * Append a key-value pair to the buffer.
-   * The key is escaped and surrounded by double quotes.
-   * The value is escaped if it is a string.
-   */
-  template
-  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void append_key_value(value_type value) noexcept;
-
-  // Support for optional types (std::optional, etc.)
-  template 
-  requires(!require_custom_serialization)
-  simdjson_inline void append(const T &opt);
-
-  template 
-  requires(require_custom_serialization)
-  simdjson_inline void append(T &&val);
-
-  // Support for string-like types
-  template 
-  requires(std::is_convertible::value ||
-  std::is_same::value )
-  simdjson_inline void append(const T &value);
-#endif
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-  // Support for range-based appending (std::ranges::view, etc.)
-  template 
-requires (!std::is_convertible::value && !require_custom_serialization)
-  simdjson_inline void append(const R &range) noexcept;
-#endif
-  /**
-   * Append the std::string_view directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(std::string_view input)  noexcept;
-
-  /**
-   * Append len characters from str.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
-#if SIMDJSON_EXCEPTIONS
-  /**
-   * Creates an std::string from the written JSON buffer.
-   * Throws if memory allocation failed
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string() const noexcept(false);
-
-  /**
-   * Creates an std::string_view from the written JSON buffer.
-   * Throws if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
-#endif
-
-  /**
-   * Returns a view on the written JSON buffer. Returns an error
-   * if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result view() const noexcept;
-
-  /**
-   * Appends the null character to the buffer and returns
-   * a pointer to the beginning of the written JSON buffer.
-   * Returns an error if memory allocation failed.
-   * The result is null-terminated.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result c_str() noexcept;
-
-  /**
-   * Return true if the content is valid UTF-8.
-   */
-  simdjson_inline bool validate_unicode() const noexcept;
-
-  /**
-   * Returns the current size of the written JSON buffer.
-   * If an error occurred, returns 0.
-   */
-  simdjson_inline size_t size() const noexcept;
-
-private:
-  /**
-   * Returns true if we can write at least upcoming_bytes bytes.
-   * The underlying buffer is reallocated if needed. It is designed
-   * to be called before writing to the buffer. It should be fast.
-   */
-  simdjson_inline bool capacity_check(size_t upcoming_bytes);
-
-  /**
-   * Grow the buffer to at least desired_capacity bytes.
-   * If the allocation fails, is_valid is set to false. We expect
-   * that this function would not be repeatedly called.
-   */
-  simdjson_inline void grow_buffer(size_t desired_capacity);
-
-  /**
-   * We use this helper function to make sure that is_valid is kept consistent.
-   */
-  simdjson_inline void set_valid(bool valid) noexcept;
-
-  std::unique_ptr buffer{};
-  size_t position{0};
-  size_t capacity{0};
-  bool is_valid{true};
-};
-
-
-
-}
-}
-
-
-#if !SIMDJSON_STATIC_REFLECTION
-// fallback implementation until we have static reflection
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::icelake::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view s;
-  auto e = b.view().get(s);
-  if(e) { return e; }
-  return std::string(s);
-}
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::icelake::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view sv;
-  auto e = b.view().get(sv);
-  if(e) { return e; }
-  s.assign(sv.data(), sv.size());
-  return simdjson::SUCCESS;
-}
-#endif
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
-/* end file simdjson/generic/ondemand/json_string_builder.h for icelake */
+/* end file simdjson/generic/ondemand/parser.h for ppc64 */
 
 // All other declarations
-/* including simdjson/generic/ondemand/array.h for icelake: #include "simdjson/generic/ondemand/array.h" */
-/* begin file simdjson/generic/ondemand/array.h for icelake */
+/* including simdjson/generic/ondemand/array.h for ppc64: #include "simdjson/generic/ondemand/array.h" */
+/* begin file simdjson/generic/ondemand/array.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -81882,7 +117571,7 @@ simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t i
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 /**
@@ -82102,27 +117791,27 @@ class array {
 };
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::array &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::array &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
   inline simdjson_result count_elements() & noexcept;
   inline simdjson_result is_empty() & noexcept;
   inline simdjson_result reset() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   simdjson_inline simdjson_result raw_json() noexcept;
 #if SIMDJSON_SUPPORTS_CONCEPTS
   // TODO: move this code into object-inl.h
@@ -82130,7 +117819,7 @@ struct simdjson_result : public icelake::implementatio
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -82138,7 +117827,7 @@ struct simdjson_result : public icelake::implementatio
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -82151,13 +117840,14 @@ struct simdjson_result : public icelake::implementatio
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
-/* end file simdjson/generic/ondemand/array.h for icelake */
-/* including simdjson/generic/ondemand/array_iterator.h for icelake: #include "simdjson/generic/ondemand/array_iterator.h" */
-/* begin file simdjson/generic/ondemand/array_iterator.h for icelake */
+/* end file simdjson/generic/ondemand/array.h for ppc64 */
+/* including simdjson/generic/ondemand/array_iterator.h for ppc64: #include "simdjson/generic/ondemand/array_iterator.h" */
+/* begin file simdjson/generic/ondemand/array_iterator.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include  */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
@@ -82165,7 +117855,7 @@ struct simdjson_result : public icelake::implementatio
 
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 /**
@@ -82173,11 +117863,17 @@ namespace ondemand {
  *
  * This is an input_iterator, meaning:
  * - It is forward-only
- * - * must be called exactly once per element.
+ * - * must be called at most once per element.
  * - ++ must be called exactly once in between each * (*, ++, *, ++, * ...)
  */
 class array_iterator {
 public:
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
   /** Create a new, invalid array iterator. */
   simdjson_inline array_iterator() noexcept = default;
 
@@ -82221,6 +117917,9 @@ class array_iterator {
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   value_iterator iter{};
 
   simdjson_inline array_iterator(const value_iterator &iter) noexcept;
@@ -82231,14 +117930,20 @@ class array_iterator {
 };
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
-  simdjson_inline simdjson_result(icelake::ondemand::array_iterator &&value) noexcept; ///< @private
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
+  simdjson_inline simdjson_result(ppc64::ondemand::array_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -82246,10 +117951,10 @@ struct simdjson_result : public icelake::impl
   // Iterator interface
   //
 
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 };
@@ -82257,9 +117962,9 @@ struct simdjson_result : public icelake::impl
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
-/* end file simdjson/generic/ondemand/array_iterator.h for icelake */
-/* including simdjson/generic/ondemand/document.h for icelake: #include "simdjson/generic/ondemand/document.h" */
-/* begin file simdjson/generic/ondemand/document.h for icelake */
+/* end file simdjson/generic/ondemand/array_iterator.h for ppc64 */
+/* including simdjson/generic/ondemand/document.h for ppc64: #include "simdjson/generic/ondemand/document.h" */
+/* begin file simdjson/generic/ondemand/document.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -82273,7 +117978,7 @@ struct simdjson_result : public icelake::impl
 
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 /**
@@ -83225,21 +118930,21 @@ class document_reference {
   document *doc{nullptr};
 };
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::document &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::document &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -83250,9 +118955,9 @@ struct simdjson_result : public icelake::implementa
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -83262,33 +118967,33 @@ struct simdjson_result : public icelake::implementa
   template simdjson_inline error_code get(T &out) && noexcept;
 #if SIMDJSON_EXCEPTIONS
 
-  using icelake::implementation_simdjson_result_base::operator*;
-  using icelake::implementation_simdjson_result_base::operator->;
-  template ::value == false>::type>
+  using ppc64::implementation_simdjson_result_base::operator*;
+  using ppc64::implementation_simdjson_result_base::operator->;
+  template ::value == false>::type>
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator icelake::ondemand::array() & noexcept(false);
-  simdjson_inline operator icelake::ondemand::object() & noexcept(false);
+  simdjson_inline operator ppc64::ondemand::array() & noexcept(false);
+  simdjson_inline operator ppc64::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator icelake::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator ppc64::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator icelake::ondemand::value() noexcept(false);
+  simdjson_inline operator ppc64::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
@@ -83296,14 +119001,14 @@ struct simdjson_result : public icelake::implementa
   simdjson_inline bool at_end() const noexcept;
   simdjson_inline bool is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -83319,14 +119024,14 @@ struct simdjson_result : public icelake::implementa
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::document_reference value, error_code error) noexcept;
+  simdjson_inline simdjson_result(ppc64::ondemand::document_reference value, error_code error) noexcept;
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -83337,9 +119042,9 @@ struct simdjson_result : public icelake::
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -83350,43 +119055,43 @@ struct simdjson_result : public icelake::
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator icelake::ondemand::array() & noexcept(false);
-  simdjson_inline operator icelake::ondemand::object() & noexcept(false);
+  simdjson_inline operator ppc64::ondemand::array() & noexcept(false);
+  simdjson_inline operator ppc64::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator icelake::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator ppc64::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator icelake::ondemand::value() noexcept(false);
+  simdjson_inline operator ppc64::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
   simdjson_inline simdjson_result current_depth() const noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document_reference::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -83398,9 +119103,9 @@ struct simdjson_result : public icelake::
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
-/* end file simdjson/generic/ondemand/document.h for icelake */
-/* including simdjson/generic/ondemand/document_stream.h for icelake: #include "simdjson/generic/ondemand/document_stream.h" */
-/* begin file simdjson/generic/ondemand/document_stream.h for icelake */
+/* end file simdjson/generic/ondemand/document.h for ppc64 */
+/* including simdjson/generic/ondemand/document_stream.h for ppc64: #include "simdjson/generic/ondemand/document_stream.h" */
+/* begin file simdjson/generic/ondemand/document_stream.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -83418,7 +119123,7 @@ struct simdjson_result : public icelake::
 #endif
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -83731,14 +119436,14 @@ class document_stream {
 };  // document_stream
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::document_stream &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::document_stream &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -83746,9 +119451,9 @@ struct simdjson_result : public icelake::imp
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
-/* end file simdjson/generic/ondemand/document_stream.h for icelake */
-/* including simdjson/generic/ondemand/field.h for icelake: #include "simdjson/generic/ondemand/field.h" */
-/* begin file simdjson/generic/ondemand/field.h for icelake */
+/* end file simdjson/generic/ondemand/document_stream.h for ppc64 */
+/* including simdjson/generic/ondemand/field.h for ppc64: #include "simdjson/generic/ondemand/field.h" */
+/* begin file simdjson/generic/ondemand/field.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -83760,7 +119465,7 @@ struct simdjson_result : public icelake::imp
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 /**
@@ -83838,33 +119543,33 @@ class field : public std::pair {
 };
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::field &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::field &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
   simdjson_inline simdjson_result unescaped_key(bool allow_replacement = false) noexcept;
   template
   simdjson_inline error_code unescaped_key(string_type &receiver, bool allow_replacement = false) noexcept;
-  simdjson_inline simdjson_result key() noexcept;
+  simdjson_inline simdjson_result key() noexcept;
   simdjson_inline simdjson_result key_raw_json_token() noexcept;
   simdjson_inline simdjson_result escaped_key() noexcept;
-  simdjson_inline simdjson_result value() noexcept;
+  simdjson_inline simdjson_result value() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_H
-/* end file simdjson/generic/ondemand/field.h for icelake */
-/* including simdjson/generic/ondemand/object.h for icelake: #include "simdjson/generic/ondemand/object.h" */
-/* begin file simdjson/generic/ondemand/object.h for icelake */
+/* end file simdjson/generic/ondemand/field.h for ppc64 */
+/* including simdjson/generic/ondemand/object.h for ppc64: #include "simdjson/generic/ondemand/object.h" */
+/* begin file simdjson/generic/ondemand/object.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -83879,7 +119584,7 @@ struct simdjson_result : public icelake::implementatio
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 /**
@@ -83894,6 +119599,13 @@ class object {
    */
   simdjson_inline object() noexcept = default;
 
+  /**
+   * Get an iterator to the start of the object. We recommend using a range-based for loop.
+   *
+   * Using the iterator directly is also possible but error-prone and discouraged. In particular,
+   * you must dereference the iterator exactly once per iteration (before calling '++').
+   * Doing otherwise is unsafe and may lead to errors. You are responsible for ensuring
+   */
   simdjson_inline simdjson_result begin() noexcept;
   simdjson_inline simdjson_result end() noexcept;
   /**
@@ -84166,29 +119878,29 @@ class object {
 };
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::object &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::object &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   inline simdjson_result reset() noexcept;
   inline simdjson_result is_empty() noexcept;
   inline simdjson_result count_fields() & noexcept;
@@ -84199,7 +119911,7 @@ struct simdjson_result : public icelake::implementati
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -84207,7 +119919,7 @@ struct simdjson_result : public icelake::implementati
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -84230,9 +119942,9 @@ struct simdjson_result : public icelake::implementati
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
-/* end file simdjson/generic/ondemand/object.h for icelake */
-/* including simdjson/generic/ondemand/object_iterator.h for icelake: #include "simdjson/generic/ondemand/object_iterator.h" */
-/* begin file simdjson/generic/ondemand/object_iterator.h for icelake */
+/* end file simdjson/generic/ondemand/object.h for ppc64 */
+/* including simdjson/generic/ondemand/object_iterator.h for ppc64: #include "simdjson/generic/ondemand/object_iterator.h" */
+/* begin file simdjson/generic/ondemand/object_iterator.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -84243,7 +119955,7 @@ struct simdjson_result : public icelake::implementati
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 class object_iterator {
@@ -84267,9 +119979,14 @@ class object_iterator {
   // Assumes it's being compared with the end. true if depth >= iter->depth.
   simdjson_inline bool operator!=(const object_iterator &) const noexcept;
   // Checks for ']' and ','
+  // YOU MUST NOT CALL THIS IF operator* YIELDED AN ERROR.
+  // YOU MUST NOT CALL THIS WITHOUT A CORRESPONDING operator* CALL.
   simdjson_inline object_iterator &operator++() noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   /**
    * The underlying JSON iterator.
    *
@@ -84284,15 +120001,15 @@ class object_iterator {
 };
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public icelake::implementation_simdjson_result_base {
+struct simdjson_result : public ppc64::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(icelake::ondemand::object_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(ppc64::ondemand::object_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -84301,21 +120018,21 @@ struct simdjson_result : public icelake::imp
   //
 
   // Reads key and value, yielding them to the user.
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
   // Assumes it's being compared with the end. true if depth < iter->depth.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
   // Assumes it's being compared with the end. true if depth >= iter->depth.
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
   // Checks for ']' and ','
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
-/* end file simdjson/generic/ondemand/object_iterator.h for icelake */
-/* including simdjson/generic/ondemand/serialization.h for icelake: #include "simdjson/generic/ondemand/serialization.h" */
-/* begin file simdjson/generic/ondemand/serialization.h for icelake */
+/* end file simdjson/generic/ondemand/object_iterator.h for ppc64 */
+/* including simdjson/generic/ondemand/serialization.h for ppc64: #include "simdjson/generic/ondemand/serialization.h" */
+/* begin file simdjson/generic/ondemand/serialization.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -84329,30 +120046,30 @@ namespace simdjson {
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(icelake::ondemand::document& x) noexcept;
+inline simdjson_result to_json_string(ppc64::ondemand::document& x) noexcept;
 /**
  * Create a string-view instance out of a value instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. The value must
  * not have been accessed previously. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(icelake::ondemand::value& x) noexcept;
+inline simdjson_result to_json_string(ppc64::ondemand::value& x) noexcept;
 /**
  * Create a string-view instance out of an object instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(icelake::ondemand::object& x) noexcept;
+inline simdjson_result to_json_string(ppc64::ondemand::object& x) noexcept;
 /**
  * Create a string-view instance out of an array instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(icelake::ondemand::array& x) noexcept;
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(ppc64::ondemand::array& x) noexcept;
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
 
 #if SIMDJSON_STATIC_REFLECTION
 /**
@@ -84360,10 +120077,10 @@ inline simdjson_result to_json_string(simdjson_result
-  requires(!std::same_as &&
-           !std::same_as &&
-           !std::same_as &&
-           !std::same_as)
+  requires(!std::same_as &&
+           !std::same_as &&
+           !std::same_as &&
+           !std::same_as)
 inline std::string to_json_string(const T& obj);
 #endif
 
@@ -84376,7 +120093,7 @@ inline std::string to_json_string(const T& obj);
  * Credit: @madhur4127
  * See https://github.com/simdjson/simdjson/issues/1768
  */
-namespace simdjson { namespace icelake { namespace ondemand {
+namespace simdjson { namespace ppc64 { namespace ondemand {
 
 /**
  * Print JSON to an output stream.  It does not
@@ -84386,9 +120103,9 @@ namespace simdjson { namespace icelake { namespace ondemand {
  * @param value The element.
  * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
  */
-inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::value x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::value x);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -84398,9 +120115,9 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -84410,13 +120127,13 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
-inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::document_reference& value);
+inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::document_reference& value);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -84426,18 +120143,18 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
-}}} // namespace simdjson::icelake::ondemand
+}}} // namespace simdjson::ppc64::ondemand
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
-/* end file simdjson/generic/ondemand/serialization.h for icelake */
+/* end file simdjson/generic/ondemand/serialization.h for ppc64 */
 
 // Deserialization for standard types
-/* including simdjson/generic/ondemand/std_deserialize.h for icelake: #include "simdjson/generic/ondemand/std_deserialize.h" */
-/* begin file simdjson/generic/ondemand/std_deserialize.h for icelake */
+/* including simdjson/generic/ondemand/std_deserialize.h for ppc64: #include "simdjson/generic/ondemand/std_deserialize.h" */
+/* begin file simdjson/generic/ondemand/std_deserialize.h for ppc64 */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -84536,8 +120253,8 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified type inside the container must default constructible.");
-  icelake::ondemand::array arr;
-  if constexpr (std::is_same_v, icelake::ondemand::array>) {
+  ppc64::ondemand::array arr;
+  if constexpr (std::is_same_v, ppc64::ondemand::array>) {
     arr = val;
   } else {
     SIMDJSON_TRY(val.get_array().get(arr));
@@ -84581,7 +120298,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified value type inside the container must default constructible.");
- icelake::ondemand::object obj;
+ ppc64::ondemand::object obj;
  SIMDJSON_TRY(val.get_object().get(obj));
  for (auto field : obj) {
     std::string_view key;
@@ -84599,7 +120316,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
 }
 
 template 
-error_code tag_invoke(deserialize_tag, icelake::ondemand::object &obj, T &out) noexcept {
+error_code tag_invoke(deserialize_tag, ppc64::ondemand::object &obj, T &out) noexcept {
   using value_type = typename std::remove_cvref_t::mapped_type;
 
   out.clear();
@@ -84607,7 +120324,7 @@ error_code tag_invoke(deserialize_tag, icelake::ondemand::object &obj, T &out) n
     std::string_view key;
     SIMDJSON_TRY(field.unescaped_key().get(key));
 
-    icelake::ondemand::value value_obj;
+    ppc64::ondemand::value value_obj;
     SIMDJSON_TRY(field.value().get(value_obj));
 
     value_type this_value;
@@ -84618,22 +120335,22 @@ error_code tag_invoke(deserialize_tag, icelake::ondemand::object &obj, T &out) n
 }
 
 template 
-error_code tag_invoke(deserialize_tag, icelake::ondemand::value &val, T &out) noexcept {
-  icelake::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, ppc64::ondemand::value &val, T &out) noexcept {
+  ppc64::ondemand::object obj;
   SIMDJSON_TRY(val.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, icelake::ondemand::document &doc, T &out) noexcept {
-  icelake::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, ppc64::ondemand::document &doc, T &out) noexcept {
+  ppc64::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, icelake::ondemand::document_reference &doc, T &out) noexcept {
-  icelake::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, ppc64::ondemand::document_reference &doc, T &out) noexcept {
+  ppc64::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
@@ -84710,8 +120427,8 @@ constexpr bool user_defined_type = (std::is_class_v
 template 
   requires(user_defined_type && std::is_class_v)
 error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept {
-  icelake::ondemand::object obj;
-  if constexpr (std::is_same_v, icelake::ondemand::object>) {
+  ppc64::ondemand::object obj;
+  if constexpr (std::is_same_v, ppc64::ondemand::object>) {
     obj = val;
   } else {
     SIMDJSON_TRY(val.get_object().get(obj));
@@ -85020,11 +120737,11 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
-/* end file simdjson/generic/ondemand/std_deserialize.h for icelake */
+/* end file simdjson/generic/ondemand/std_deserialize.h for ppc64 */
 
 // Inline definitions
-/* including simdjson/generic/ondemand/array-inl.h for icelake: #include "simdjson/generic/ondemand/array-inl.h" */
-/* begin file simdjson/generic/ondemand/array-inl.h for icelake */
+/* including simdjson/generic/ondemand/array-inl.h for ppc64: #include "simdjson/generic/ondemand/array-inl.h" */
+/* begin file simdjson/generic/ondemand/array-inl.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -85039,7 +120756,7 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 //
@@ -85268,68 +120985,68 @@ simdjson_inline simdjson_result array::at(size_t index) noexcept {
 }
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  icelake::ondemand::array &&value
+simdjson_inline simdjson_result::simdjson_result(
+  ppc64::ondemand::array &&value
 ) noexcept
-  : implementation_simdjson_result_base(
-      std::forward(value)
+  : implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept
-  : implementation_simdjson_result_base(error)
+  : implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
-simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
-simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
-/* end file simdjson/generic/ondemand/array-inl.h for icelake */
-/* including simdjson/generic/ondemand/array_iterator-inl.h for icelake: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/array_iterator-inl.h for icelake */
+/* end file simdjson/generic/ondemand/array-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/array_iterator-inl.h for ppc64: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/array_iterator-inl.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -85341,7 +121058,7 @@ simdjson_inline  simdjson_result simdjson_result array_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   SIMDJSON_ASSUME(!has_been_referenced);
+   has_been_referenced = true;
+#endif
   if (iter.error()) { iter.abandon(); return iter.error(); }
   return value(iter.child());
 }
@@ -85359,6 +121080,9 @@ simdjson_inline bool array_iterator::operator!=(const array_iterator &) const no
   return iter.is_open();
 }
 simdjson_inline array_iterator &array_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   has_been_referenced = false;
+#endif
   error_code error;
   // PERF NOTE this is a safety rail ... users should exit loops as soon as they receive an error, so we'll never get here.
   // However, it does not seem to make a perf difference, so we add it out of an abundance of caution.
@@ -85372,50 +121096,50 @@ simdjson_inline bool array_iterator::at_end() const noexcept {
   return iter.at_end();
 }
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  icelake::ondemand::array_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  ppc64::ondemand::array_iterator &&value
 ) noexcept
-  : icelake::implementation_simdjson_result_base(std::forward(value))
+  : ppc64::implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : icelake::implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : ppc64::implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++(first);
   return *this;
 }
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   return !first.iter.is_valid() || first.at_end();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/array_iterator-inl.h for icelake */
-/* including simdjson/generic/ondemand/value-inl.h for icelake: #include "simdjson/generic/ondemand/value-inl.h" */
-/* begin file simdjson/generic/ondemand/value-inl.h for icelake */
+/* end file simdjson/generic/ondemand/array_iterator-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/value-inl.h for ppc64: #include "simdjson/generic/ondemand/value-inl.h" */
+/* begin file simdjson/generic/ondemand/value-inl.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -85431,7 +121155,7 @@ simdjson_inline bool simdjson_result::at_end(
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 simdjson_inline value::value(const value_iterator &_iter) noexcept
@@ -85728,240 +121452,240 @@ inline simdjson_result> value::at_path_with_wildcard(std::str
 }
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  icelake::ondemand::value &&value
+simdjson_inline simdjson_result::simdjson_result(
+  ppc64::ondemand::value &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   if (error()) { return error(); }
   return {};
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
 
-simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
-template<> simdjson_inline error_code simdjson_result::get(icelake::ondemand::value &out) noexcept {
+template<> simdjson_inline error_code simdjson_result::get(ppc64::ondemand::value &out) noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 
-template simdjson_inline simdjson_result simdjson_result::get() noexcept {
+template simdjson_inline simdjson_result simdjson_result::get() noexcept {
   if (error()) { return error(); }
   return first.get();
 }
-template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
+template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
+template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
   if (error()) { return error(); }
   return std::move(first);
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator icelake::ondemand::array() noexcept(false) {
+simdjson_inline simdjson_result::operator ppc64::ondemand::array() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator icelake::ondemand::object() noexcept(false) {
+simdjson_inline simdjson_result::operator ppc64::ondemand::object() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator icelake::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator ppc64::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
+simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(
+simdjson_inline simdjson_result simdjson_result::at_pointer(
     std::string_view json_pointer) noexcept {
   if (error()) {
       return error();
@@ -85969,7 +121693,7 @@ simdjson_inline simdjson_result simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -85977,7 +121701,7 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(
+inline simdjson_result> simdjson_result::at_path_with_wildcard(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -85988,9 +121712,9 @@ inline simdjson_result> simdjson_result> simdjson_result::simdjson_result(
-  icelake::ondemand::document &&value
+simdjson_inline simdjson_result::simdjson_result(
+  ppc64::ondemand::document &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(
+    implementation_simdjson_result_base(
       error
     )
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
-template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
+template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first);
+  return std::forward(first);
 }
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(icelake::ondemand::document &out) & noexcept = delete;
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(icelake::ondemand::document &out) && noexcept {
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(ppc64::ondemand::document &out) & noexcept = delete;
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(ppc64::ondemand::document &out) && noexcept {
   if (error()) { return error(); }
-  out = std::forward(first);
+  out = std::forward(first);
   return SUCCESS;
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 
-simdjson_inline bool simdjson_result::is_negative() noexcept {
+simdjson_inline bool simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 
 
 #if SIMDJSON_EXCEPTIONS
-template ::value == false>::type>
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+template ::value == false>::type>
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator icelake::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator ppc64::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator icelake::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator ppc64::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator icelake::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator ppc64::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator icelake::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator ppc64::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   if (error()) { return error(); }
   return first.at_end();
 }
 
 
-simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
+simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
 
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
@@ -86688,7 +122412,7 @@ simdjson_inline simdjson_result> simdjson_
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -86698,7 +122422,7 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result::simdjson_result(icelake::ondemand::document_reference value, error_code error)
-  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
+simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::document_reference value, error_code error)
+  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
 
 
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(icelake::ondemand::document_reference &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(ppc64::ondemand::document_reference &out) & noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(icelake::ondemand::document_reference &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(ppc64::ondemand::document_reference &out) && noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+simdjson_inline simdjson_result::operator T() noexcept(false) {
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator icelake::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator ppc64::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator icelake::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator ppc64::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator icelake::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator ppc64::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator icelake::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator ppc64::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
@@ -87045,7 +122769,7 @@ simdjson_inline simdjson_result> simdjson_
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -87053,9 +122777,9 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -87477,22 +123201,22 @@ inline void document_stream::start_stage1_thread() noexcept {
 #endif // SIMDJSON_THREADS_ENABLED
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
-  icelake::ondemand::document_stream &&value
+simdjson_inline simdjson_result::simdjson_result(
+  ppc64::ondemand::document_stream &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
@@ -87500,9 +123224,9 @@ simdjson_inline simdjson_result::simdjson_re
 }
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H
-/* end file simdjson/generic/ondemand/document_stream-inl.h for icelake */
-/* including simdjson/generic/ondemand/field-inl.h for icelake: #include "simdjson/generic/ondemand/field-inl.h" */
-/* begin file simdjson/generic/ondemand/field-inl.h for icelake */
+/* end file simdjson/generic/ondemand/document_stream-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/field-inl.h for ppc64: #include "simdjson/generic/ondemand/field-inl.h" */
+/* begin file simdjson/generic/ondemand/field-inl.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -87514,7 +123238,7 @@ simdjson_inline simdjson_result::simdjson_re
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 // clang 6 does not think the default constructor can be noexcept, so we make it explicit
@@ -87578,53 +123302,53 @@ simdjson_inline value field::value() && noexcept {
 }
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  icelake::ondemand::field &&value
+simdjson_inline simdjson_result::simdjson_result(
+  ppc64::ondemand::field &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::key() noexcept {
+simdjson_inline simdjson_result simdjson_result::key() noexcept {
   if (error()) { return error(); }
   return first.key();
 }
 
-simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.key_raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
+simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
   if (error()) { return error(); }
   return first.escaped_key();
 }
 
-simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(allow_replacement);
 }
 
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(receiver, allow_replacement);
 }
 
-simdjson_inline simdjson_result simdjson_result::value() noexcept {
+simdjson_inline simdjson_result simdjson_result::value() noexcept {
   if (error()) { return error(); }
   return std::move(first.value());
 }
@@ -87632,9 +123356,9 @@ simdjson_inline simdjson_result simdjson_result simdjson_result= &parser->implementation->structural_indexes[0] );
   SIMDJSON_ASSUME( position < &parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] );
-#else
-  (void)position; // Suppress unused parameter warning
 #endif
 }
 
@@ -87995,7 +123718,11 @@ simdjson_inline token_position json_iterator::position() const noexcept {
 simdjson_inline simdjson_result json_iterator::unescape(raw_json_string in, bool allow_replacement) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape(in, _string_buf_loc, allow_replacement);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape(in, _string_buf_loc, allow_replacement);
@@ -88005,7 +123732,11 @@ simdjson_inline simdjson_result json_iterator::unescape(raw_js
 simdjson_inline simdjson_result json_iterator::unescape_wobbly(raw_json_string in) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape_wobbly(in, _string_buf_loc);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape_wobbly(in, _string_buf_loc);
@@ -88068,22 +123799,22 @@ simdjson_warn_unused simdjson_inline bool json_iterator::copy_to_buffer(const ui
 }
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::json_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::json_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/json_iterator-inl.h for icelake */
-/* including simdjson/generic/ondemand/json_type-inl.h for icelake: #include "simdjson/generic/ondemand/json_type-inl.h" */
-/* begin file simdjson/generic/ondemand/json_type-inl.h for icelake */
+/* end file simdjson/generic/ondemand/json_iterator-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/json_type-inl.h for ppc64: #include "simdjson/generic/ondemand/json_type-inl.h" */
+/* begin file simdjson/generic/ondemand/json_type-inl.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -88094,7 +123825,7 @@ simdjson_inline simdjson_result::simdjson_resu
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept {
@@ -88188,22 +123919,22 @@ simdjson_inline void number::skip_double() noexcept {
 }
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::json_type &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::json_type &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
-/* end file simdjson/generic/ondemand/json_type-inl.h for icelake */
-/* including simdjson/generic/ondemand/logger-inl.h for icelake: #include "simdjson/generic/ondemand/logger-inl.h" */
-/* begin file simdjson/generic/ondemand/logger-inl.h for icelake */
+/* end file simdjson/generic/ondemand/json_type-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/logger-inl.h for ppc64: #include "simdjson/generic/ondemand/logger-inl.h" */
+/* begin file simdjson/generic/ondemand/logger-inl.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -88218,7 +123949,7 @@ simdjson_inline simdjson_result::simdjson_result(e
 #include 
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 namespace logger {
 
@@ -88425,13 +124156,13 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 
 } // namespace logger
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
-/* end file simdjson/generic/ondemand/logger-inl.h for icelake */
-/* including simdjson/generic/ondemand/object-inl.h for icelake: #include "simdjson/generic/ondemand/object-inl.h" */
-/* begin file simdjson/generic/ondemand/object-inl.h for icelake */
+/* end file simdjson/generic/ondemand/logger-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/object-inl.h for ppc64: #include "simdjson/generic/ondemand/object-inl.h" */
+/* begin file simdjson/generic/ondemand/object-inl.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -88451,7 +124182,7 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 simdjson_inline simdjson_result object::find_field_unordered(const std::string_view key) & noexcept {
@@ -88725,55 +124456,55 @@ simdjson_warn_unused simdjson_inline error_code object::extract_into(T& out) & n
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::object &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::object &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field_unordered(key);
+  return std::forward(first).find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first)[key];
+  return std::forward(first)[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field(key);
+  return std::forward(first).find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
     std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -88781,27 +124512,27 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
 
-inline simdjson_result simdjson_result::reset() noexcept {
+inline simdjson_result simdjson_result::reset() noexcept {
   if (error()) { return error(); }
   return first.reset();
 }
 
-inline simdjson_result simdjson_result::is_empty() noexcept {
+inline simdjson_result simdjson_result::is_empty() noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
 
-simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
 
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
@@ -88809,9 +124540,9 @@ simdjson_inline  simdjson_result simdjson_result simdjson_result object_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  // We must call * once per iteration.
+  SIMDJSON_ASSUME(!has_been_referenced);
+  has_been_referenced = true;
+#endif
   error_code error = iter.error();
   if (error) { iter.abandon(); return error; }
   auto result = field::start(iter);
@@ -88853,6 +124589,11 @@ simdjson_inline bool object_iterator::operator!=(const object_iterator &) const
 SIMDJSON_PUSH_DISABLE_WARNINGS
 SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
 simdjson_inline object_iterator &object_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   // Before calling ++, we must have called *.
+   SIMDJSON_ASSUME(has_been_referenced);
+   has_been_referenced = false;
+#endif
   // TODO this is a safety rail ... users should exit loops as soon as they receive an error.
   // Nonetheless, let's see if performance is OK with this if statement--the compiler may give it to us for free.
   if (!iter.is_open()) { return *this; } // Iterator will be released if there is an error
@@ -88908,39 +124649,39 @@ SIMDJSON_POP_DISABLE_WARNINGS
 //
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  icelake::ondemand::object_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  ppc64::ondemand::object_iterator &&value
 ) noexcept
-  : implementation_simdjson_result_base(std::forward(value))
+  : implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
 // Checks for ']' and ','
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++first;
@@ -88950,9 +124691,9 @@ simdjson_inline simdjson_result &simdjson_re
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/object_iterator-inl.h for icelake */
-/* including simdjson/generic/ondemand/parser-inl.h for icelake: #include "simdjson/generic/ondemand/parser-inl.h" */
-/* begin file simdjson/generic/ondemand/parser-inl.h for icelake */
+/* end file simdjson/generic/ondemand/object_iterator-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/parser-inl.h for ppc64: #include "simdjson/generic/ondemand/parser-inl.h" */
+/* begin file simdjson/generic/ondemand/parser-inl.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -88969,7 +124710,7 @@ simdjson_inline simdjson_result &simdjson_re
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 simdjson_inline parser::parser(size_t max_capacity) noexcept
@@ -89179,22 +124920,22 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser::
 
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::parser &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::parser &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
-/* end file simdjson/generic/ondemand/parser-inl.h for icelake */
-/* including simdjson/generic/ondemand/raw_json_string-inl.h for icelake: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for icelake */
+/* end file simdjson/generic/ondemand/parser-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/raw_json_string-inl.h for ppc64: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -89207,7 +124948,7 @@ simdjson_inline simdjson_result::simdjson_result(erro
 
 namespace simdjson {
 
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 simdjson_inline raw_json_string::raw_json_string(const uint8_t * _buf) noexcept : buf{_buf} {}
@@ -89381,277 +125122,38 @@ simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, cons
 }
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::raw_json_string &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::raw_json_string &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
+simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
   if (error()) { return error(); }
   return first.raw();
 }
-simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
+simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
   if (error()) { return error(); }
   return first[i];
 }
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(icelake::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(ppc64::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
   if (error()) { return error(); }
   return first.unescape(iter, allow_replacement);
 }
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(icelake::ondemand::json_iterator &iter) const noexcept {
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(ppc64::ondemand::json_iterator &iter) const noexcept {
   if (error()) { return error(); }
   return first.unescape_wobbly(iter);
 }
 } // namespace simdjson
 
-#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
-/* end file simdjson/generic/ondemand/raw_json_string-inl.h for icelake */
-/* including simdjson/generic/ondemand/serialization-inl.h for icelake: #include "simdjson/generic/ondemand/serialization-inl.h" */
-/* begin file simdjson/generic/ondemand/serialization-inl.h for icelake */
-#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
-/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_builder.h" */
-/* amalgamation skipped (editor-only): #endif */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-inline std::string_view trim(const std::string_view str) noexcept {
-  // We can almost surely do better by rolling our own find_first_not_of function.
-  size_t first = str.find_first_not_of(" \t\n\r");
-  // If we have the empty string (just white space), then no trimming is possible, and
-  // we return the empty string_view.
-  if (std::string_view::npos == first) { return std::string_view(); }
-  size_t last = str.find_last_not_of(" \t\n\r");
-  return str.substr(first, (last - first + 1));
-}
-
-
-inline simdjson_result to_json_string(icelake::ondemand::document& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(icelake::ondemand::document_reference& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(icelake::ondemand::value& x) noexcept {
-  /**
-   * If we somehow receive a value that has already been consumed,
-   * then the following code could be in trouble. E.g., we create
-   * an array as needed, but if an array was already created, then
-   * it could be bad.
-   */
-  using namespace icelake::ondemand;
-  icelake::ondemand::json_type t;
-  auto error = x.type().get(t);
-  if(error != SUCCESS) { return error; }
-  switch (t)
-  {
-    case json_type::array:
-    {
-      icelake::ondemand::array array;
-      error = x.get_array().get(array);
-      if(error) { return error; }
-      return to_json_string(array);
-    }
-    case json_type::object:
-    {
-      icelake::ondemand::object object;
-      error = x.get_object().get(object);
-      if(error) { return error; }
-      return to_json_string(object);
-    }
-    default:
-      return trim(x.raw_json_token());
-  }
-}
-
-inline simdjson_result to_json_string(icelake::ondemand::object& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(icelake::ondemand::array& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-} // namespace simdjson
-
-namespace simdjson { namespace icelake { namespace ondemand {
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::document_reference& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
-  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-}}} // namespace simdjson::icelake::ondemand
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-/* end file simdjson/generic/ondemand/serialization-inl.h for icelake */
-/* including simdjson/generic/ondemand/token_iterator-inl.h for icelake: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/token_iterator-inl.h for icelake */
+#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
+/* end file simdjson/generic/ondemand/raw_json_string-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/token_iterator-inl.h for ppc64: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/token_iterator-inl.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -89662,7 +125164,7 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::icelake::ondemand::
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 simdjson_inline token_iterator::token_iterator(
@@ -89733,22 +125235,22 @@ simdjson_inline bool token_iterator::operator<=(const token_iterator &other) con
 }
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::token_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::token_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/token_iterator-inl.h for icelake */
-/* including simdjson/generic/ondemand/value_iterator-inl.h for icelake: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/value_iterator-inl.h for icelake */
+/* end file simdjson/generic/ondemand/token_iterator-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/value_iterator-inl.h for ppc64: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/value_iterator-inl.h for ppc64 */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -89763,7 +125265,7 @@ simdjson_inline simdjson_result::simdjson_res
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 
 simdjson_inline value_iterator::value_iterator(
@@ -89845,7 +125347,6 @@ simdjson_warn_unused simdjson_inline error_code value_iterator::end_container()
 
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::has_next_field() noexcept {
   assert_at_next();
-
   // It's illegal to call this unless there are more tokens: anything that ends in } or ] is
   // obligated to verify there are more tokens if they are not the top level.
   switch (*_json_iter->return_current_and_advance()) {
@@ -90267,9 +125768,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_string(string_type& receiver, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_string(allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_wobbly_string() noexcept {
@@ -90357,7 +125862,7 @@ simdjson_inline simdjson_result value_iterator::is_root_integer(bool check
   return answer;
 }
 
-simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
+simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
   auto max_len = peek_root_length();
   auto json = peek_root_scalar("number");
   // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
@@ -90409,9 +125914,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_root_string(check_trailing, allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_wobbly_string(bool check_trailing) noexcept {
@@ -90718,6 +126227,9 @@ simdjson_inline bool value_iterator::is_at_key() const noexcept {
   // Keys are at the same depth as the object.
   // Note here that we could be safer and check that we are within an object,
   // but we do not.
+  //
+  // As long as we are at the object's depth, in a valid document,
+  // we will only ever be at { , : or the actual string key: ".
   return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
 }
 
@@ -90833,1116 +126345,263 @@ simdjson_inline error_code value_iterator::report_error(error_code error, const
 }
 
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(icelake::ondemand::value_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::value_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/value_iterator-inl.h for icelake */
-
-// JSON builder inline definitions
-/* including simdjson/generic/ondemand/json_string_builder-inl.h for icelake: #include "simdjson/generic/ondemand/json_string_builder-inl.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder-inl.h for icelake */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand
- * directory but we will move it to a builder directory later.
- */
-#include 
-#include 
-#include 
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-/*
- * Empirically, we have found that an inlined optimization is important for
- * performance. The following macros are not ideal. We should find a better
- * way to inline the code.
- */
-
-#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
-    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
-     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
-#endif
-#endif
-
-#if defined(__aarch64__) || defined(_M_ARM64)
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
-#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
-#endif
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-#include 
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#include 
-#endif
-
-namespace simdjson {
-namespace icelake {
-namespace builder {
-
-static SIMDJSON_CONSTEXPR_LAMBDA std::array
-    json_quotable_character = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-/**
-
-A possible SWAR implementation of has_json_escapable_byte. It is not used
-because it is slower than the current implementation. It is kept here for
-reference (to show that we tried it).
-
-inline bool has_json_escapable_byte(uint64_t x) {
-  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
-  uint64_t xor2 = x ^ 0x0202020202020202ULL;
-  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
-  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
-  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
-  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
-}
-
-**/
-
-SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
-simple_needs_escaping(std::string_view v) {
-  for (char c : v) {
-    // a table lookup is faster than a series of comparisons
-    if (json_quotable_character[static_cast(c)]) {
-      return true;
-    }
-  }
-  return false;
-}
-
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  uint8x16_t running = vdupq_n_u8(0);
-  uint8x16_t v34 = vdupq_n_u8(34);
-  uint8x16_t v92 = vdupq_n_u8(92);
-
-  for (; i + 15 < view.size(); i += 16) {
-    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  if (i < view.size()) {
-    uint8x16_t word =
-        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
-}
-#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  __m128i running = _mm_setzero_si128();
-  for (; i + 15 < view.size(); i += 16) {
-
-    __m128i word =
-        _mm_loadu_si128(reinterpret_cast(view.data() + i));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  if (i < view.size()) {
-    __m128i word = _mm_loadu_si128(
-        reinterpret_cast(view.data() + view.length() - 16));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  return _mm_movemask_epi8(running) != 0;
-}
-#else
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  return simple_needs_escaping(view);
-}
-#endif
-
-SIMDJSON_CONSTEXPR_LAMBDA inline size_t
-find_next_json_quotable_character(const std::string_view view,
-                                  size_t location) noexcept {
-
-  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
-    if (json_quotable_character[static_cast(*pos)]) {
-      return pos - view.begin();
-    }
-  }
-  return size_t(view.size());
-}
-
-SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
-    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
-    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
-    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
-    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
-    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
-
-// All Unicode characters may be placed within the quotation marks, except for
-// the characters that MUST be escaped: quotation mark, reverse solidus, and the
-// control characters (U+0000 through U+001F). There are two-character sequence
-// escape representations of some popular characters:
-// \", \\, \b, \f, \n, \r, \t.
-SIMDJSON_CONSTEXPR_LAMBDA void escape_json_char(char c, char *&out) {
-  if (c == '"') {
-    memcpy(out, "\\\"", 2);
-    out += 2;
-  } else if (c == '\\') {
-    memcpy(out, "\\\\", 2);
-    out += 2;
-  } else {
-    std::string_view v = control_chars[uint8_t(c)];
-    memcpy(out, v.data(), v.size());
-    out += v.size();
-  }
-}
-
-inline size_t write_string_escaped(const std::string_view input, char *out) {
-  size_t mysize = input.size();
-  if (!fast_needs_escaping(input)) { // fast path!
-    memcpy(out, input.data(), input.size());
-    return input.size();
-  }
-  const char *const initout = out;
-  size_t location = find_next_json_quotable_character(input, 0);
-  memcpy(out, input.data(), location);
-  out += location;
-  escape_json_char(input[location], out);
-  location += 1;
-  while (location < mysize) {
-    size_t newlocation = find_next_json_quotable_character(input, location);
-    memcpy(out, input.data() + location, newlocation - location);
-    out += newlocation - location;
-    location = newlocation;
-    if (location == mysize) {
-      break;
-    }
-    escape_json_char(input[location], out);
-    location += 1;
-  }
-  return out - initout;
-}
-
-simdjson_inline string_builder::string_builder(size_t initial_capacity)
-    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
-      capacity(buffer.get() != nullptr ? initial_capacity : 0),
-      is_valid(buffer.get() != nullptr) {}
-
-simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
-  // We use the convention that when is_valid is false, then the capacity and
-  // the position are 0.
-  // Most of the time, this function will return true.
-  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
-    return true;
-  }
-  // check for overflow, most of the time there is no overflow
-  if (simdjson_likely(position + upcoming_bytes < position)) {
-    return false;
-  }
-  // We will rarely get here.
-  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
-  // If the buffer allocation failed, we set is_valid to false.
-  return is_valid;
-}
-
-simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
-  if (!is_valid) {
-    return;
-  }
-  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
-  if (new_buffer.get() == nullptr) {
-    set_valid(false);
-    return;
-  }
-  std::memcpy(new_buffer.get(), buffer.get(), position);
-  buffer.swap(new_buffer);
-  capacity = desired_capacity;
-}
-
-simdjson_inline void string_builder::set_valid(bool valid) noexcept {
-  if (!valid) {
-    is_valid = false;
-    capacity = 0;
-    position = 0;
-    buffer.reset();
-  } else {
-    is_valid = true;
-  }
-}
-
-simdjson_inline size_t string_builder::size() const noexcept {
-  return position;
-}
-
-simdjson_inline void string_builder::append(char c) noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = c;
-  }
-}
-
-simdjson_inline void string_builder::append_null() noexcept {
-  constexpr char null_literal[] = "null";
-  constexpr size_t null_len = sizeof(null_literal) - 1;
-  if (capacity_check(null_len)) {
-    std::memcpy(buffer.get() + position, null_literal, null_len);
-    position += null_len;
-  }
-}
-
-simdjson_inline void string_builder::clear() noexcept {
-  position = 0;
-  // if it was invalid, we should try to repair it
-  if (!is_valid) {
-    capacity = 0;
-    buffer.reset();
-    is_valid = true;
-  }
-}
-
-namespace internal {
-
-template ::value>::type>
-simdjson_really_inline int int_log2(number_type x) {
-  return 63 - leading_zeroes(uint64_t(x) | 1);
-}
-
-simdjson_really_inline int fast_digit_count_32(uint32_t x) {
-  static uint64_t table[] = {
-      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
-      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
-      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
-      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
-      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
-      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
-      42949672960, 42949672960};
-  return uint32_t((x + table[int_log2(x)]) >> 32);
-}
-
-simdjson_really_inline int fast_digit_count_64(uint64_t x) {
-  static uint64_t table[] = {9,
-                             99,
-                             999,
-                             9999,
-                             99999,
-                             999999,
-                             9999999,
-                             99999999,
-                             999999999,
-                             9999999999,
-                             99999999999,
-                             999999999999,
-                             9999999999999,
-                             99999999999999,
-                             999999999999999ULL,
-                             9999999999999999ULL,
-                             99999999999999999ULL,
-                             999999999999999999ULL,
-                             9999999999999999999ULL};
-  int y = (19 * int_log2(x) >> 6);
-  y += x > table[y];
-  return y + 1;
-}
-
-template ::value>::type>
-simdjson_really_inline size_t digit_count(number_type v) noexcept {
-  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
-                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
-                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
-  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
-    return fast_digit_count_32(static_cast(v));
-  }
-  else {
-    return fast_digit_count_64(static_cast(v));
-  }
-}
-static const char decimal_table[200] = {
-    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
-    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
-    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
-    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
-    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
-    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
-    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
-    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
-    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
-    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
-    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
-    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
-    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
-    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
-    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
-    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
-    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
-};
-} // namespace internal
-
-template 
-simdjson_inline void string_builder::append(number_type v) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_integral::value ||
-                    std::is_floating_point::value,
-                "Unsupported number type");
-  // If C++17 is available, we can 'if constexpr' here.
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    if (v) {
-      constexpr char true_literal[] = "true";
-      constexpr size_t true_len = sizeof(true_literal) - 1;
-      if (capacity_check(true_len)) {
-        std::memcpy(buffer.get() + position, true_literal, true_len);
-        position += true_len;
-      }
-    } else {
-      constexpr char false_literal[] = "false";
-      constexpr size_t false_len = sizeof(false_literal) - 1;
-      if (capacity_check(false_len)) {
-        std::memcpy(buffer.get() + position, false_literal, false_len);
-        position += false_len;
-      }
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      unsigned_type pv = static_cast(v);
-      size_t dc = internal::digit_count(pv);
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      bool negative = v < 0;
-      unsigned_type pv = static_cast(v);
-      if (negative) {
-        pv = 0 - pv; // the 0 is for Microsoft
-      }
-      size_t dc = internal::digit_count(pv);
-      // by always writing the minus sign, we avoid the branch.
-      buffer.get()[position] = '-';
-      position += negative ? 1 : 0;
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
-    constexpr size_t max_number_size = 24;
-    if (capacity_check(max_number_size)) {
-      // We could specialize for float.
-      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
-                                               double(v));
-      position = end - buffer.get();
-    }
-  }
-}
-
-simdjson_inline void
-string_builder::escape_and_append(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(6 * input.size())) {
-    position += write_string_escaped(input, buffer.get() + position);
-  }
-}
-
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * input.size())) {
-    buffer.get()[position++] = '"';
-    position += write_string_escaped(input, buffer.get() + position);
-    buffer.get()[position++] = '"';
-  }
-}
-
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(char input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * 1)) {
-    buffer.get()[position++] = '"';
-    std::string_view cinput(&input, 1);
-    position += write_string_escaped(cinput, buffer.get() + position);
-    buffer.get()[position++] = '"';
-  }
-}
-
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(const char *input) noexcept {
-  std::string_view cinput(input);
-  escape_and_append_with_quotes(cinput);
-}
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
-  escape_and_append_with_quotes(constevalutil::string_constant::value);
-}
-#endif
-
-simdjson_inline void string_builder::append_raw(const char *c) noexcept {
-  size_t len = std::strlen(c);
-  append_raw(c, len);
-}
-
-simdjson_inline void
-string_builder::append_raw(std::string_view input) noexcept {
-  if (capacity_check(input.size())) {
-    std::memcpy(buffer.get() + position, input.data(), input.size());
-    position += input.size();
-  }
-}
-
-simdjson_inline void string_builder::append_raw(const char *str,
-                                                size_t len) noexcept {
-  if (capacity_check(len)) {
-    std::memcpy(buffer.get() + position, str, len);
-    position += len;
-  }
-}
-#if SIMDJSON_SUPPORTS_CONCEPTS
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-simdjson_inline void string_builder::append(const T &opt) {
-  if (opt) {
-    append(*opt);
-  } else {
-    append_null();
-  }
-}
-
-template 
-  requires(require_custom_serialization)
-simdjson_inline void string_builder::append(T &&val) {
-  serialize(*this, std::forward(val));
-}
-
-template 
-  requires(std::is_convertible::value ||
-           std::is_same::value)
-simdjson_inline void string_builder::append(const T &value) {
-  escape_and_append_with_quotes(value);
-}
-#endif
-
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-// Support for range-based appending (std::ranges::view, etc.)
-template 
-  requires(!std::is_convertible::value && !require_custom_serialization)
-simdjson_inline void string_builder::append(const R &range) noexcept {
-  auto it = std::ranges::begin(range);
-  auto end = std::ranges::end(range);
-  if constexpr (concepts::is_pair>) {
-    start_object();
-
-    if (it == end) {
-      end_object();
-      return; // Handle empty range
-    }
-    // Append first item without leading comma
-    append_key_value(it->first, it->second);
-    ++it;
-
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append_key_value(it->first, it->second);
-    }
-    end_object();
-  } else {
-    start_array();
-    if (it == end) {
-      end_array();
-      return; // Handle empty range
-    }
-
-    // Append first item without leading comma
-    append(*it);
-    ++it;
-
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append(*it);
-    }
-    end_array();
-  }
-}
-
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-simdjson_inline string_builder::operator std::string() const noexcept(false) {
-  return std::string(operator std::string_view());
-}
-
-simdjson_inline string_builder::operator std::string_view() const
-    noexcept(false) simdjson_lifetime_bound {
-  return view();
-}
-#endif
-
-simdjson_inline simdjson_result
-string_builder::view() const noexcept {
-  if (!is_valid) {
-    return simdjson::OUT_OF_CAPACITY;
-  }
-  return std::string_view(buffer.get(), position);
-}
-
-simdjson_inline simdjson_result string_builder::c_str() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position] = '\0';
-    return buffer.get();
-  }
-  return simdjson::OUT_OF_CAPACITY;
-}
-
-simdjson_inline bool string_builder::validate_unicode() const noexcept {
-  return simdjson::validate_utf8(buffer.get(), position);
-}
-
-simdjson_inline void string_builder::start_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '{';
-  }
-}
-
-simdjson_inline void string_builder::end_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '}';
-  }
-}
-
-simdjson_inline void string_builder::start_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '[';
-  }
-}
-
-simdjson_inline void string_builder::end_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ']';
-  }
-}
-
-simdjson_inline void string_builder::append_comma() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ',';
-  }
-}
-
-simdjson_inline void string_builder::append_colon() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ':';
-  }
-}
-
-template 
-simdjson_inline void
-string_builder::append_key_value(key_type key, value_type value) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_convertible::value,
-                "Unsupported key type");
-  escape_and_append_with_quotes(key);
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
-}
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void
-string_builder::append_key_value(value_type value) noexcept {
-  escape_and_append_with_quotes();
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
-}
-#endif
-
-} // namespace builder
-} // namespace icelake
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-/* end file simdjson/generic/ondemand/json_string_builder-inl.h for icelake */
-/* including simdjson/generic/ondemand/json_builder.h for icelake: #include "simdjson/generic/ondemand/json_builder.h" */
-/* begin file simdjson/generic/ondemand/json_builder.h for icelake */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_BUILDER_H
+/* end file simdjson/generic/ondemand/value_iterator-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/serialization-inl.h for ppc64: #include "simdjson/generic/ondemand/serialization-inl.h" */
+/* begin file simdjson/generic/ondemand/serialization-inl.h for ppc64 */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #endif */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-#if SIMDJSON_STATIC_REFLECTION
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-// #include  // for std::define_static_string - header not available yet
 
 namespace simdjson {
-namespace icelake {
-namespace builder {
-
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  auto it = t.begin();
-  auto end = t.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
-  }
-  b.append(']');
-}
-
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-constexpr void atom(string_builder &b, const T &t) {
-  b.escape_and_append_with_quotes(t);
-}
-
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &m) {
-  if (m.empty()) {
-    b.append_raw("{}");
-    return;
-  }
-  b.append('{');
-  bool first = true;
-  for (const auto& [key, value] : m) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    // Keys must be convertible to string_view per the concept
-    b.escape_and_append_with_quotes(key);
-    b.append(':');
-    atom(b, value);
-  }
-  b.append('}');
-}
-
-
-template::value && !std::is_same_v>::type>
-constexpr void atom(string_builder &b, const number_type t) {
-  b.append(t);
-}
-
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, t.[:dm:]);
-    i++;
-  };
-  b.append('}');
-}
-
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &opt) {
-  if (opt) {
-    atom(b, opt.value());
-  } else {
-    b.append_raw("null");
-  }
-}
-
-// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &ptr) {
-  if (ptr) {
-    atom(b, *ptr);
-  } else {
-    b.append_raw("null");
-  }
-}
-
-// Support for enums - serialize as string representation using expand approach from P2996R12
-template 
-  requires(std::is_enum_v && !require_custom_serialization)
-void atom(string_builder &b, const T &e) {
-#if SIMDJSON_STATIC_REFLECTION
-  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
-  template for (constexpr auto enum_val : enumerators) {
-    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
-    if (e == [:enum_val:]) {
-      b.append_raw(enum_str);
-      return;
-    }
-  };
-  // Fallback to integer if enum value not found
-  atom(b, static_cast>(e));
-#else
-  // Fallback: serialize as integer if reflection not available
-  atom(b, static_cast>(e));
-#endif
-}
-
-// Support for appendable containers that don't have operator[] (sets, etc.)
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &container) {
-  if (container.empty()) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  bool first = true;
-  for (const auto& item : container) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    atom(b, item);
-  }
-  b.append(']');
-}
-
-// append functions that delegate to atom functions for primitive types
-template 
-  requires(std::is_arithmetic_v && !std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
-
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
-
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+inline std::string_view trim(const std::string_view str) noexcept {
+  // We can almost surely do better by rolling our own find_first_not_of function.
+  size_t first = str.find_first_not_of(" \t\n\r");
+  // If we have the empty string (just white space), then no trimming is possible, and
+  // we return the empty string_view.
+  if (std::string_view::npos == first) { return std::string_view(); }
+  size_t last = str.find_last_not_of(" \t\n\r");
+  return str.substr(first, (last - first + 1));
 }
 
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+inline simdjson_result to_json_string(ppc64::ondemand::document& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// works for struct
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, z.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline simdjson_result to_json_string(ppc64::ondemand::document_reference& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// works for container that have begin() and end() iterators
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  auto it = z.begin();
-  auto end = z.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
+inline simdjson_result to_json_string(ppc64::ondemand::value& x) noexcept {
+  /**
+   * If we somehow receive a value that has already been consumed,
+   * then the following code could be in trouble. E.g., we create
+   * an array as needed, but if an array was already created, then
+   * it could be bad.
+   */
+  using namespace ppc64::ondemand;
+  ppc64::ondemand::json_type t;
+  auto error = x.type().get(t);
+  if(error != SUCCESS) { return error; }
+  switch (t)
+  {
+    case json_type::array:
+    {
+      ppc64::ondemand::array array;
+      error = x.get_array().get(array);
+      if(error) { return error; }
+      return to_json_string(array);
+    }
+    case json_type::object:
+    {
+      ppc64::ondemand::object object;
+      error = x.get_object().get(object);
+      if(error) { return error; }
+      return to_json_string(object);
+    }
+    default:
+      return trim(x.raw_json_token());
   }
-  b.append(']');
 }
 
-template 
-  requires (require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  b.append(z);
+inline simdjson_result to_json_string(ppc64::ondemand::object& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-
-template 
-simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline simdjson_result to_json_string(ppc64::ondemand::array& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-template 
-string_builder& operator<<(string_builder& b, const Z& z) {
-  append(b, z);
-  return b;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-// extract_from: Serialize only specific fields from a struct to JSON
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-void extract_from(string_builder &b, const T &obj) {
-  // Helper to check if a field name matches any of the requested fields
-  auto should_extract = [](std::string_view field_name) constexpr -> bool {
-    return ((FieldNames.view() == field_name) || ...);
-  };
-
-  b.append('{');
-  bool first = true;
-
-  // Iterate through all members of T using reflection
-  template for (constexpr auto mem : std::define_static_array(
-      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-
-    if constexpr (std::meta::is_public(mem)) {
-      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-      // Only serialize this field if it's in our list of requested fields
-      if constexpr (should_extract(key)) {
-        if (!first) {
-          b.append(',');
-        }
-        first = false;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-        // Serialize the key
-        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
-        b.append_raw(quoted_key);
-        b.append(':');
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
+} // namespace simdjson
 
-        // Serialize the value
-        atom(b, obj.[:mem:]);
-      }
-    }
-  };
+namespace simdjson { namespace ppc64 { namespace ondemand {
 
-  b.append('}');
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace builder
-} // namespace icelake
-// Alias the function template to 'to' in the global namespace
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  icelake::builder::string_builder b(initial_capacity);
-  icelake::builder::append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  icelake::builder::string_builder b(initial_capacity);
-  icelake::builder::append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
 }
-// Global namespace function for extract_from
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  icelake::builder::string_builder b(initial_capacity);
-  icelake::builder::extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace simdjson
-
-#endif // SIMDJSON_STATIC_REFLECTION
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::document_reference& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
 
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
+  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
 #endif
-/* end file simdjson/generic/ondemand/json_builder.h for icelake */
+}}} // namespace simdjson::ppc64::ondemand
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+/* end file simdjson/generic/ondemand/serialization-inl.h for ppc64 */
 
 // JSON path accessor (compile-time) - must be after inline definitions
-/* including simdjson/generic/ondemand/compile_time_accessors.h for icelake: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
-/* begin file simdjson/generic/ondemand/compile_time_accessors.h for icelake */
+/* including simdjson/generic/ondemand/compile_time_accessors.h for ppc64: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
+/* begin file simdjson/generic/ondemand/compile_time_accessors.h for ppc64 */
 /**
  * Compile-time JSON Path and JSON Pointer accessors using C++26 reflection (P2996)
  *
@@ -92000,7 +126659,7 @@ simdjson_warn_unused simdjson_result extract_from(const T &obj, siz
 #include 
 
 namespace simdjson {
-namespace icelake {
+namespace ppc64 {
 namespace ondemand {
 /***
  * JSONPath implementation for compile-time access
@@ -92011,7 +126670,7 @@ namespace json_path {
 // Note: value type must be fully defined before this header is included
 // This is ensured by including this in amalgamated.h after value-inl.h
 
-using ::simdjson::icelake::ondemand::value;
+using ::simdjson::ppc64::ondemand::value;
 
 // Path step types
 enum class step_type {
@@ -92145,7 +126804,7 @@ struct json_path_parser {
 // Compile-time path accessor generator
 template
 struct path_accessor {
-  using value = ::simdjson::icelake::ondemand::value;
+  using value = ::simdjson::ppc64::ondemand::value;
 
   static constexpr auto parser = json_path_parser();
   static constexpr std::size_t num_steps = parser.count_steps();
@@ -92623,14 +127282,14 @@ struct path_accessor {
 
 // Compile-time path accessor with validation
 template
-inline simdjson_result<::simdjson::icelake::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::ppc64::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::icelake::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::ppc64::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
@@ -92861,121 +127520,135 @@ struct pointer_accessor {
 
 // Compile-time JSON Pointer accessor with validation
 template
-inline simdjson_result<::simdjson::icelake::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::ppc64::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::icelake::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::ppc64::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 } // namespace json_path
 } // namespace ondemand
-} // namespace icelake
+} // namespace ppc64
 } // namespace simdjson
 
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 #endif // SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
 
-/* end file simdjson/generic/ondemand/compile_time_accessors.h for icelake */
+/* end file simdjson/generic/ondemand/compile_time_accessors.h for ppc64 */
 
-/* end file simdjson/generic/ondemand/amalgamated.h for icelake */
-/* including simdjson/icelake/end.h: #include "simdjson/icelake/end.h" */
-/* begin file simdjson/icelake/end.h */
+/* end file simdjson/generic/ondemand/amalgamated.h for ppc64 */
+/* including simdjson/ppc64/end.h: #include "simdjson/ppc64/end.h" */
+/* begin file simdjson/ppc64/end.h */
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/icelake/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#if !SIMDJSON_CAN_ALWAYS_RUN_ICELAKE
-SIMDJSON_UNTARGET_REGION
-#endif
-
-/* undefining SIMDJSON_IMPLEMENTATION from "icelake" */
+#undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
+/* undefining SIMDJSON_IMPLEMENTATION from "ppc64" */
 #undef SIMDJSON_IMPLEMENTATION
-/* end file simdjson/icelake/end.h */
+/* end file simdjson/ppc64/end.h */
 
-#endif // SIMDJSON_ICELAKE_ONDEMAND_H
-/* end file simdjson/icelake/ondemand.h */
-#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(ppc64)
-/* including simdjson/ppc64/ondemand.h: #include "simdjson/ppc64/ondemand.h" */
-/* begin file simdjson/ppc64/ondemand.h */
-#ifndef SIMDJSON_PPC64_ONDEMAND_H
-#define SIMDJSON_PPC64_ONDEMAND_H
+#endif // SIMDJSON_PPC64_ONDEMAND_H
+/* end file simdjson/ppc64/ondemand.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(westmere)
+/* including simdjson/westmere/ondemand.h: #include "simdjson/westmere/ondemand.h" */
+/* begin file simdjson/westmere/ondemand.h */
+#ifndef SIMDJSON_WESTMERE_ONDEMAND_H
+#define SIMDJSON_WESTMERE_ONDEMAND_H
 
-/* including simdjson/ppc64/begin.h: #include "simdjson/ppc64/begin.h" */
-/* begin file simdjson/ppc64/begin.h */
-/* defining SIMDJSON_IMPLEMENTATION to "ppc64" */
-#define SIMDJSON_IMPLEMENTATION ppc64
-/* including simdjson/ppc64/base.h: #include "simdjson/ppc64/base.h" */
-/* begin file simdjson/ppc64/base.h */
-#ifndef SIMDJSON_PPC64_BASE_H
-#define SIMDJSON_PPC64_BASE_H
+/* including simdjson/westmere/begin.h: #include "simdjson/westmere/begin.h" */
+/* begin file simdjson/westmere/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "westmere" */
+#define SIMDJSON_IMPLEMENTATION westmere
+/* including simdjson/westmere/base.h: #include "simdjson/westmere/base.h" */
+/* begin file simdjson/westmere/base.h */
+#ifndef SIMDJSON_WESTMERE_BASE_H
+#define SIMDJSON_WESTMERE_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #include "simdjson/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
+// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_WESTMERE
 namespace simdjson {
 /**
- * Implementation for ALTIVEC (PPC64).
+ * Implementation for Westmere (Intel SSE4.2).
  */
-namespace ppc64 {
+namespace westmere {
 
 class implementation;
 
 namespace {
 namespace simd {
+
 template  struct simd8;
 template  struct simd8x64;
+
 } // namespace simd
 } // unnamed namespace
 
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
-#endif // SIMDJSON_PPC64_BASE_H
-/* end file simdjson/ppc64/base.h */
-/* including simdjson/ppc64/intrinsics.h: #include "simdjson/ppc64/intrinsics.h" */
-/* begin file simdjson/ppc64/intrinsics.h */
-#ifndef SIMDJSON_PPC64_INTRINSICS_H
-#define SIMDJSON_PPC64_INTRINSICS_H
+#endif // SIMDJSON_WESTMERE_BASE_H
+/* end file simdjson/westmere/base.h */
+/* including simdjson/westmere/intrinsics.h: #include "simdjson/westmere/intrinsics.h" */
+/* begin file simdjson/westmere/intrinsics.h */
+#ifndef SIMDJSON_WESTMERE_INTRINSICS_H
+#define SIMDJSON_WESTMERE_INTRINSICS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-// This should be the correct header whether
-// you use visual studio or other compilers.
-#include 
+#if SIMDJSON_VISUAL_STUDIO
+// under clang within visual studio, this will include 
+#include  // visual studio or clang
+#else
+#include  // elsewhere
+#endif // SIMDJSON_VISUAL_STUDIO
 
-// These are defined by altivec.h in GCC toolchain, it is safe to undef them.
-#ifdef bool
-#undef bool
-#endif
 
-#ifdef vector
-#undef vector
+#if SIMDJSON_CLANG_VISUAL_STUDIO
+/**
+ * You are not supposed, normally, to include these
+ * headers directly. Instead you should either include intrin.h
+ * or x86intrin.h. However, when compiling with clang
+ * under Windows (i.e., when _MSC_VER is set), these headers
+ * only get included *if* the corresponding features are detected
+ * from macros:
+ */
+#include   // for _mm_alignr_epi8
+#include   // for  _mm_clmulepi64_si128
 #endif
 
-static_assert(sizeof(__vector unsigned char) <= simdjson::SIMDJSON_PADDING, "insufficient padding for ppc64");
+static_assert(sizeof(__m128i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for westmere");
 
-#endif //  SIMDJSON_PPC64_INTRINSICS_H
-/* end file simdjson/ppc64/intrinsics.h */
-/* including simdjson/ppc64/bitmanipulation.h: #include "simdjson/ppc64/bitmanipulation.h" */
-/* begin file simdjson/ppc64/bitmanipulation.h */
-#ifndef SIMDJSON_PPC64_BITMANIPULATION_H
-#define SIMDJSON_PPC64_BITMANIPULATION_H
+#endif // SIMDJSON_WESTMERE_INTRINSICS_H
+/* end file simdjson/westmere/intrinsics.h */
+
+#if !SIMDJSON_CAN_ALWAYS_RUN_WESTMERE
+SIMDJSON_TARGET_REGION("sse4.2,pclmul,popcnt")
+#endif
+
+/* including simdjson/westmere/bitmanipulation.h: #include "simdjson/westmere/bitmanipulation.h" */
+/* begin file simdjson/westmere/bitmanipulation.h */
+#ifndef SIMDJSON_WESTMERE_BITMANIPULATION_H
+#define SIMDJSON_WESTMERE_BITMANIPULATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/intrinsics.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace {
 
 // We sometimes call trailing_zero on inputs that are zero,
@@ -92993,14 +127666,14 @@ simdjson_inline int trailing_zeroes(uint64_t input_num) {
   // to the most significant bit (MSB) for a set bit (1).
   _BitScanForward64(&ret, input_num);
   return (int)ret;
-#else  // SIMDJSON_REGULAR_VISUAL_STUDIO
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO
   return __builtin_ctzll(input_num);
 #endif // SIMDJSON_REGULAR_VISUAL_STUDIO
 }
 
 /* result might be undefined when input_num is zero */
 simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
-  return input_num & (input_num - 1);
+  return input_num & (input_num-1);
 }
 
 /* result might be undefined when input_num is zero */
@@ -93015,25 +127688,25 @@ simdjson_inline int leading_zeroes(uint64_t input_num) {
     return 64;
 #else
   return __builtin_clzll(input_num);
-#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+#endif// SIMDJSON_REGULAR_VISUAL_STUDIO
 }
 
 #if SIMDJSON_REGULAR_VISUAL_STUDIO
-simdjson_inline int count_ones(uint64_t input_num) {
+simdjson_inline unsigned __int64 count_ones(uint64_t input_num) {
   // note: we do not support legacy 32-bit Windows in this kernel
-  return __popcnt64(input_num); // Visual Studio wants two underscores
+  return __popcnt64(input_num);// Visual Studio wants two underscores
 }
 #else
-simdjson_inline int count_ones(uint64_t input_num) {
-  return __builtin_popcountll(input_num);
+simdjson_inline long long int count_ones(uint64_t input_num) {
+  return _popcnt64(input_num);
 }
 #endif
 
 simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
-                                         uint64_t *result) {
+                                uint64_t *result) {
 #if SIMDJSON_REGULAR_VISUAL_STUDIO
-  *result = value1 + value2;
-  return *result < value1;
+  return _addcarry_u64(0, value1, value2,
+                       reinterpret_cast(result));
 #else
   return __builtin_uaddll_overflow(value1, value2,
                                    reinterpret_cast(result));
@@ -93041,622 +127714,944 @@ simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
 }
 
 } // unnamed namespace
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
-#endif // SIMDJSON_PPC64_BITMANIPULATION_H
-/* end file simdjson/ppc64/bitmanipulation.h */
-/* including simdjson/ppc64/bitmask.h: #include "simdjson/ppc64/bitmask.h" */
-/* begin file simdjson/ppc64/bitmask.h */
-#ifndef SIMDJSON_PPC64_BITMASK_H
-#define SIMDJSON_PPC64_BITMASK_H
+#endif // SIMDJSON_WESTMERE_BITMANIPULATION_H
+/* end file simdjson/westmere/bitmanipulation.h */
+/* including simdjson/westmere/bitmask.h: #include "simdjson/westmere/bitmask.h" */
+/* begin file simdjson/westmere/bitmask.h */
+#ifndef SIMDJSON_WESTMERE_BITMASK_H
+#define SIMDJSON_WESTMERE_BITMASK_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/intrinsics.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace {
 
 //
-// Perform a "cumulative bitwise xor," flipping bits each time a 1 is
-// encountered.
+// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
 //
 // For example, prefix_xor(00100100) == 00011100
 //
-simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
-  // You can use the version below, however gcc sometimes miscompiles
-  // vec_pmsum_be, it happens somewhere around between 8 and 9th version.
-  // The performance boost was not noticeable, falling back to a usual
-  // implementation.
-  //   __vector unsigned long long all_ones = {~0ull, ~0ull};
-  //   __vector unsigned long long mask = {bitmask, 0};
-  //   // Clang and GCC return different values for pmsum for ull so cast it to one.
-  //   // Generally it is not specified by ALTIVEC ISA what is returned by
-  //   // vec_pmsum_be.
-  // #if defined(__LITTLE_ENDIAN__)
-  //   return (uint64_t)(((__vector unsigned long long)vec_pmsum_be(all_ones, mask))[0]);
-  // #else
-  //   return (uint64_t)(((__vector unsigned long long)vec_pmsum_be(all_ones, mask))[1]);
-  // #endif
-  bitmask ^= bitmask << 1;
-  bitmask ^= bitmask << 2;
-  bitmask ^= bitmask << 4;
-  bitmask ^= bitmask << 8;
-  bitmask ^= bitmask << 16;
-  bitmask ^= bitmask << 32;
-  return bitmask;
+simdjson_inline uint64_t prefix_xor(const uint64_t bitmask) {
+  // There should be no such thing with a processing supporting avx2
+  // but not clmul.
+  __m128i all_ones = _mm_set1_epi8('\xFF');
+  __m128i result = _mm_clmulepi64_si128(_mm_set_epi64x(0ULL, bitmask), all_ones, 0);
+  return _mm_cvtsi128_si64(result);
 }
 
 } // unnamed namespace
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
-#endif
-/* end file simdjson/ppc64/bitmask.h */
-/* including simdjson/ppc64/numberparsing_defs.h: #include "simdjson/ppc64/numberparsing_defs.h" */
-/* begin file simdjson/ppc64/numberparsing_defs.h */
-#ifndef SIMDJSON_PPC64_NUMBERPARSING_DEFS_H
-#define SIMDJSON_PPC64_NUMBERPARSING_DEFS_H
+#endif // SIMDJSON_WESTMERE_BITMASK_H
+/* end file simdjson/westmere/bitmask.h */
+/* including simdjson/westmere/numberparsing_defs.h: #include "simdjson/westmere/numberparsing_defs.h" */
+/* begin file simdjson/westmere/numberparsing_defs.h */
+#ifndef SIMDJSON_WESTMERE_NUMBERPARSING_DEFS_H
+#define SIMDJSON_WESTMERE_NUMBERPARSING_DEFS_H
+
+/* including simdjson/westmere/base.h: #include "simdjson/westmere/base.h" */
+/* begin file simdjson/westmere/base.h */
+#ifndef SIMDJSON_WESTMERE_BASE_H
+#define SIMDJSON_WESTMERE_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/ppc64/intrinsics.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#include 
+// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_WESTMERE
+namespace simdjson {
+/**
+ * Implementation for Westmere (Intel SSE4.2).
+ */
+namespace westmere {
 
-#if defined(__linux__)
-#include 
-#elif defined(__FreeBSD__)
-#include 
+class implementation;
+
+namespace {
+namespace simd {
+
+template  struct simd8;
+template  struct simd8x64;
+
+} // namespace simd
+} // unnamed namespace
+
+} // namespace westmere
+} // namespace simdjson
+
+#endif // SIMDJSON_WESTMERE_BASE_H
+/* end file simdjson/westmere/base.h */
+/* including simdjson/westmere/intrinsics.h: #include "simdjson/westmere/intrinsics.h" */
+/* begin file simdjson/westmere/intrinsics.h */
+#ifndef SIMDJSON_WESTMERE_INTRINSICS_H
+#define SIMDJSON_WESTMERE_INTRINSICS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#if SIMDJSON_VISUAL_STUDIO
+// under clang within visual studio, this will include 
+#include  // visual studio or clang
+#else
+#include  // elsewhere
+#endif // SIMDJSON_VISUAL_STUDIO
+
+
+#if SIMDJSON_CLANG_VISUAL_STUDIO
+/**
+ * You are not supposed, normally, to include these
+ * headers directly. Instead you should either include intrin.h
+ * or x86intrin.h. However, when compiling with clang
+ * under Windows (i.e., when _MSC_VER is set), these headers
+ * only get included *if* the corresponding features are detected
+ * from macros:
+ */
+#include   // for _mm_alignr_epi8
+#include   // for  _mm_clmulepi64_si128
 #endif
 
+static_assert(sizeof(__m128i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for westmere");
+
+#endif // SIMDJSON_WESTMERE_INTRINSICS_H
+/* end file simdjson/westmere/intrinsics.h */
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace numberparsing {
 
-// we don't have appropriate instructions, so let us use a scalar function
-// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
 /** @private */
 static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
-  uint64_t val;
-  std::memcpy(&val, chars, sizeof(uint64_t));
-#ifdef __BIG_ENDIAN__
-#if defined(__linux__)
-  val = bswap_64(val);
-#elif defined(__FreeBSD__)
-  val = bswap64(val);
-#endif
+  // this actually computes *16* values so we are being wasteful.
+  const __m128i ascii0 = _mm_set1_epi8('0');
+  const __m128i mul_1_10 =
+      _mm_setr_epi8(10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1);
+  const __m128i mul_1_100 = _mm_setr_epi16(100, 1, 100, 1, 100, 1, 100, 1);
+  const __m128i mul_1_10000 =
+      _mm_setr_epi16(10000, 1, 10000, 1, 10000, 1, 10000, 1);
+  const __m128i input = _mm_sub_epi8(
+      _mm_loadu_si128(reinterpret_cast(chars)), ascii0);
+  const __m128i t1 = _mm_maddubs_epi16(input, mul_1_10);
+  const __m128i t2 = _mm_madd_epi16(t1, mul_1_100);
+  const __m128i t3 = _mm_packus_epi32(t2, t2);
+  const __m128i t4 = _mm_madd_epi16(t3, mul_1_10000);
+  return _mm_cvtsi128_si32(
+      t4); // only captures the sum of the first 8 digits, drop the rest
+}
+
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+#if SIMDJSON_IS_ARM64
+  // ARM64 has native support for 64-bit multiplications, no need to emultate
+  answer.high = __umulh(value1, value2);
+  answer.low = value1 * value2;
+#else
+  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
+#endif // SIMDJSON_IS_ARM64
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
 #endif
-  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
-  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
-  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace westmere
+} // namespace simdjson
+
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+
+#endif //  SIMDJSON_WESTMERE_NUMBERPARSING_DEFS_H
+/* end file simdjson/westmere/numberparsing_defs.h */
+/* including simdjson/westmere/simd.h: #include "simdjson/westmere/simd.h" */
+/* begin file simdjson/westmere/simd.h */
+#ifndef SIMDJSON_WESTMERE_SIMD_H
+#define SIMDJSON_WESTMERE_SIMD_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace westmere {
+namespace {
+namespace simd {
+
+  template
+  struct base {
+    __m128i value;
+
+    // Zero constructor
+    simdjson_inline base() : value{__m128i()} {}
+
+    // Conversion from SIMD register
+    simdjson_inline base(const __m128i _value) : value(_value) {}
+
+    // Conversion to SIMD register
+    simdjson_inline operator const __m128i&() const { return this->value; }
+    simdjson_inline operator __m128i&() { return this->value; }
+
+    // Bit operations
+    simdjson_inline Child operator|(const Child other) const { return _mm_or_si128(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return _mm_and_si128(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return _mm_xor_si128(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return _mm_andnot_si128(other, *this); }
+    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
+
+  template>
+  struct base8: base> {
+    typedef uint16_t bitmask_t;
+    typedef uint32_t bitmask2_t;
+
+    simdjson_inline base8() : base>() {}
+    simdjson_inline base8(const __m128i _value) : base>(_value) {}
+
+    friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return _mm_cmpeq_epi8(lhs, rhs); }
+
+    static const int SIZE = sizeof(base>::value);
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return _mm_alignr_epi8(*this, prev_chunk, 16 - N);
+    }
+  };
+
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8: base8 {
+    static simdjson_inline simd8 splat(bool _value) { return _mm_set1_epi8(uint8_t(-(!!_value))); }
+
+    simdjson_inline simd8() : base8() {}
+    simdjson_inline simd8(const __m128i _value) : base8(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
+
+    simdjson_inline int to_bitmask() const { return _mm_movemask_epi8(*this); }
+    simdjson_inline bool any() const { return !_mm_testz_si128(*this, *this); }
+    simdjson_inline simd8 operator~() const { return *this ^ true; }
+  };
+
+  template
+  struct base8_numeric: base8 {
+    static simdjson_inline simd8 splat(T _value) { return _mm_set1_epi8(_value); }
+    static simdjson_inline simd8 zero() { return _mm_setzero_si128(); }
+    static simdjson_inline simd8 load(const T values[16]) {
+      return _mm_loadu_si128(reinterpret_cast(values));
+    }
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    static simdjson_inline simd8 repeat_16(
+      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
+      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    simdjson_inline base8_numeric() : base8() {}
+    simdjson_inline base8_numeric(const __m128i _value) : base8(_value) {}
+
+    // Store to array
+    simdjson_inline void store(T dst[16]) const { return _mm_storeu_si128(reinterpret_cast<__m128i *>(dst), *this); }
+
+    // Override to distinguish from bool version
+    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return _mm_add_epi8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return _mm_sub_epi8(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
+
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return _mm_shuffle_epi8(lookup_table, *this);
+    }
+
+    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
+    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
+    // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
+    // get written.
+    // Design consideration: it seems like a function with the
+    // signature simd8 compress(uint32_t mask) would be
+    // sensible, but the AVX ISA makes this kind of approach difficult.
+    template
+    simdjson_inline void compress(uint16_t mask, L * output) const {
+      using internal::thintable_epi8;
+      using internal::BitsSetTable256mul2;
+      using internal::pshufb_combine_table;
+      // this particular implementation was inspired by work done by @animetosho
+      // we do it in two steps, first 8 bytes and then second 8 bytes
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
+      // next line just loads the 64-bit values thintable_epi8[mask1] and
+      // thintable_epi8[mask2] into a 128-bit register, using only
+      // two instructions on most compilers.
+      __m128i shufmask =  _mm_set_epi64x(thintable_epi8[mask2], thintable_epi8[mask1]);
+      // we increment by 0x08 the second half of the mask
+      shufmask =
+      _mm_add_epi8(shufmask, _mm_set_epi32(0x08080808, 0x08080808, 0, 0));
+      // this is the version "nearly pruned"
+      __m128i pruned = _mm_shuffle_epi8(*this, shufmask);
+      // we still need to put the two halves together.
+      // we compute the popcount of the first half:
+      int pop1 = BitsSetTable256mul2[mask1];
+      // then load the corresponding mask, what it does is to write
+      // only the first pop1 bytes from the first 8 bytes, and then
+      // it fills in with the bytes from the second 8 bytes + some filling
+      // at the end.
+      __m128i compactmask =
+      _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop1 * 8));
+      __m128i answer = _mm_shuffle_epi8(pruned, compactmask);
+      _mm_storeu_si128(reinterpret_cast<__m128i *>(output), answer);
+    }
+
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
+
+  // Signed bytes
+  template<>
+  struct simd8 : base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const int8_t* values) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(_mm_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epi8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epi8(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return _mm_cmpgt_epi8(*this, other); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return _mm_cmpgt_epi8(other, *this); }
+  };
+
+  // Unsigned bytes
+  template<>
+  struct simd8: base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const uint8_t* values) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(_mm_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm_adds_epu8(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm_subs_epu8(*this, other); }
+
+    // Order-specific operations
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epu8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epu8(*this, other); }
+    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
+    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
+    simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
+    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+
+    // Bit-specific operations
+    simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
+    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
+    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
+    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
+    simdjson_inline bool is_ascii() const { return _mm_movemask_epi8(*this) == 0; }
+    simdjson_inline bool bits_not_set_anywhere() const { return _mm_testz_si128(*this, *this); }
+    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
+    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return _mm_testz_si128(*this, bits); }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
+    template
+    simdjson_inline simd8 shr() const { return simd8(_mm_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
+    template
+    simdjson_inline simd8 shl() const { return simd8(_mm_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
+    // Get one of the bits and make a bitmask out of it.
+    // e.g. value.get_bit<7>() gets the high bit
+    template
+    simdjson_inline int get_bit() const { return _mm_movemask_epi8(_mm_slli_epi16(*this, 7-N)); }
+  };
+
+  template
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    static_assert(NUM_CHUNKS == 4, "Westmere kernel should use four registers per 64-byte block.");
+    const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
+
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
+
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
+
+    simdjson_inline void store(T ptr[64]) const {
+      this->chunks[0].store(ptr+sizeof(simd8)*0);
+      this->chunks[1].store(ptr+sizeof(simd8)*1);
+      this->chunks[2].store(ptr+sizeof(simd8)*2);
+      this->chunks[3].store(ptr+sizeof(simd8)*3);
+    }
+
+    simdjson_inline simd8 reduce_or() const {
+      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
+    }
+
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      this->chunks[0].compress(uint16_t(mask), output);
+      this->chunks[1].compress(uint16_t(mask >> 16), output + 16 - count_ones(mask & 0xFFFF));
+      this->chunks[2].compress(uint16_t(mask >> 32), output + 32 - count_ones(mask & 0xFFFFFFFF));
+      this->chunks[3].compress(uint16_t(mask >> 48), output + 48 - count_ones(mask & 0xFFFFFFFFFFFF));
+      return 64 - count_ones(mask);
+    }
+
+    simdjson_inline uint64_t to_bitmask() const {
+      uint64_t r0 = uint32_t(this->chunks[0].to_bitmask() );
+      uint64_t r1 =          this->chunks[1].to_bitmask() ;
+      uint64_t r2 =          this->chunks[2].to_bitmask() ;
+      uint64_t r3 =          this->chunks[3].to_bitmask() ;
+      return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
+    }
+
+    simdjson_inline uint64_t eq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] == mask,
+        this->chunks[1] == mask,
+        this->chunks[2] == mask,
+        this->chunks[3] == mask
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t eq(const simd8x64 &other) const {
+      return  simd8x64(
+        this->chunks[0] == other.chunks[0],
+        this->chunks[1] == other.chunks[1],
+        this->chunks[2] == other.chunks[2],
+        this->chunks[3] == other.chunks[3]
+      ).to_bitmask();
+    }
+
+    simdjson_inline uint64_t lteq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] <= mask,
+        this->chunks[1] <= mask,
+        this->chunks[2] <= mask,
+        this->chunks[3] <= mask
+      ).to_bitmask();
+    }
+  }; // struct simd8x64
+
+} // namespace simd
+} // unnamed namespace
+} // namespace westmere
+} // namespace simdjson
+
+#endif // SIMDJSON_WESTMERE_SIMD_INPUT_H
+/* end file simdjson/westmere/simd.h */
+/* including simdjson/westmere/stringparsing_defs.h: #include "simdjson/westmere/stringparsing_defs.h" */
+/* begin file simdjson/westmere/stringparsing_defs.h */
+#ifndef SIMDJSON_WESTMERE_STRINGPARSING_DEFS_H
+#define SIMDJSON_WESTMERE_STRINGPARSING_DEFS_H
+
+/* including simdjson/westmere/bitmanipulation.h: #include "simdjson/westmere/bitmanipulation.h" */
+/* begin file simdjson/westmere/bitmanipulation.h */
+#ifndef SIMDJSON_WESTMERE_BITMANIPULATION_H
+#define SIMDJSON_WESTMERE_BITMANIPULATION_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/intrinsics.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+namespace westmere {
+namespace {
+
+// We sometimes call trailing_zero on inputs that are zero,
+// but the algorithms do not end up using the returned value.
+// Sadly, sanitizers are not smart enough to figure it out.
+SIMDJSON_NO_SANITIZE_UNDEFINED
+// This function can be used safely even if not all bytes have been
+// initialized.
+// See issue https://github.com/simdjson/simdjson/issues/1965
+SIMDJSON_NO_SANITIZE_MEMORY
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long ret;
+  // Search the mask data from least significant bit (LSB)
+  // to the most significant bit (MSB) for a set bit (1).
+  _BitScanForward64(&ret, input_num);
+  return (int)ret;
+#else // SIMDJSON_REGULAR_VISUAL_STUDIO
+  return __builtin_ctzll(input_num);
+#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
+  return input_num & (input_num-1);
+}
+
+/* result might be undefined when input_num is zero */
+simdjson_inline int leading_zeroes(uint64_t input_num) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  unsigned long leading_zero = 0;
+  // Search the mask data from most significant bit (MSB)
+  // to least significant bit (LSB) for a set bit (1).
+  if (_BitScanReverse64(&leading_zero, input_num))
+    return (int)(63 - leading_zero);
+  else
+    return 64;
+#else
+  return __builtin_clzll(input_num);
+#endif// SIMDJSON_REGULAR_VISUAL_STUDIO
+}
+
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+simdjson_inline unsigned __int64 count_ones(uint64_t input_num) {
+  // note: we do not support legacy 32-bit Windows in this kernel
+  return __popcnt64(input_num);// Visual Studio wants two underscores
+}
+#else
+simdjson_inline long long int count_ones(uint64_t input_num) {
+  return _popcnt64(input_num);
 }
+#endif
 
-/** @private */
-simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
-  internal::value128 answer;
-#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
-#if SIMDJSON_IS_ARM64
-  // ARM64 has native support for 64-bit multiplications, no need to emultate
-  answer.high = __umulh(value1, value2);
-  answer.low = value1 * value2;
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
+                                uint64_t *result) {
+#if SIMDJSON_REGULAR_VISUAL_STUDIO
+  return _addcarry_u64(0, value1, value2,
+                       reinterpret_cast(result));
 #else
-  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
-#endif // SIMDJSON_IS_ARM64
-#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
-  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
-  answer.low = uint64_t(r);
-  answer.high = uint64_t(r >> 64);
+  return __builtin_uaddll_overflow(value1, value2,
+                                   reinterpret_cast(result));
 #endif
-  return answer;
 }
 
-} // namespace numberparsing
-} // namespace ppc64
+} // unnamed namespace
+} // namespace westmere
 } // namespace simdjson
 
-#ifndef SIMDJSON_SWAR_NUMBER_PARSING
-#if SIMDJSON_IS_BIG_ENDIAN
-#define SIMDJSON_SWAR_NUMBER_PARSING 0
-#else
-#define SIMDJSON_SWAR_NUMBER_PARSING 1
-#endif
-#endif
-
-#endif // SIMDJSON_PPC64_NUMBERPARSING_DEFS_H
-/* end file simdjson/ppc64/numberparsing_defs.h */
-/* including simdjson/ppc64/simd.h: #include "simdjson/ppc64/simd.h" */
-/* begin file simdjson/ppc64/simd.h */
-#ifndef SIMDJSON_PPC64_SIMD_H
-#define SIMDJSON_PPC64_SIMD_H
+#endif // SIMDJSON_WESTMERE_BITMANIPULATION_H
+/* end file simdjson/westmere/bitmanipulation.h */
+/* including simdjson/westmere/simd.h: #include "simdjson/westmere/simd.h" */
+/* begin file simdjson/westmere/simd.h */
+#ifndef SIMDJSON_WESTMERE_SIMD_H
+#define SIMDJSON_WESTMERE_SIMD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/ppc64/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/bitmanipulation.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#include 
-
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace {
 namespace simd {
 
-using __m128i = __vector unsigned char;
-
-template  struct base {
-  __m128i value;
-
-  // Zero constructor
-  simdjson_inline base() : value{__m128i()} {}
-
-  // Conversion from SIMD register
-  simdjson_inline base(const __m128i _value) : value(_value) {}
+  template
+  struct base {
+    __m128i value;
 
-  // Conversion to SIMD register
-  simdjson_inline operator const __m128i &() const {
-    return this->value;
-  }
-  simdjson_inline operator __m128i &() { return this->value; }
+    // Zero constructor
+    simdjson_inline base() : value{__m128i()} {}
 
-  // Bit operations
-  simdjson_inline Child operator|(const Child other) const {
-    return vec_or(this->value, (__m128i)other);
-  }
-  simdjson_inline Child operator&(const Child other) const {
-    return vec_and(this->value, (__m128i)other);
-  }
-  simdjson_inline Child operator^(const Child other) const {
-    return vec_xor(this->value, (__m128i)other);
-  }
-  simdjson_inline Child bit_andnot(const Child other) const {
-    return vec_andc(this->value, (__m128i)other);
-  }
-  simdjson_inline Child &operator|=(const Child other) {
-    auto this_cast = static_cast(this);
-    *this_cast = *this_cast | other;
-    return *this_cast;
-  }
-  simdjson_inline Child &operator&=(const Child other) {
-    auto this_cast = static_cast(this);
-    *this_cast = *this_cast & other;
-    return *this_cast;
-  }
-  simdjson_inline Child &operator^=(const Child other) {
-    auto this_cast = static_cast(this);
-    *this_cast = *this_cast ^ other;
-    return *this_cast;
-  }
-};
+    // Conversion from SIMD register
+    simdjson_inline base(const __m128i _value) : value(_value) {}
 
-template >
-struct base8 : base> {
-  typedef uint16_t bitmask_t;
-  typedef uint32_t bitmask2_t;
+    // Conversion to SIMD register
+    simdjson_inline operator const __m128i&() const { return this->value; }
+    simdjson_inline operator __m128i&() { return this->value; }
 
-  simdjson_inline base8() : base>() {}
-  simdjson_inline base8(const __m128i _value) : base>(_value) {}
+    // Bit operations
+    simdjson_inline Child operator|(const Child other) const { return _mm_or_si128(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return _mm_and_si128(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return _mm_xor_si128(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return _mm_andnot_si128(other, *this); }
+    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
+  };
 
-  friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) {
-    return (__m128i)vec_cmpeq(lhs.value, (__m128i)rhs);
-  }
+  template>
+  struct base8: base> {
+    typedef uint16_t bitmask_t;
+    typedef uint32_t bitmask2_t;
 
-  static const int SIZE = sizeof(base>::value);
+    simdjson_inline base8() : base>() {}
+    simdjson_inline base8(const __m128i _value) : base>(_value) {}
 
-  template 
-  simdjson_inline simd8 prev(simd8 prev_chunk) const {
-    __m128i chunk = this->value;
-#ifdef __LITTLE_ENDIAN__
-    chunk = (__m128i)vec_reve(this->value);
-    prev_chunk = (__m128i)vec_reve((__m128i)prev_chunk);
-#endif
-    chunk = (__m128i)vec_sld((__m128i)prev_chunk, (__m128i)chunk, 16 - N);
-#ifdef __LITTLE_ENDIAN__
-    chunk = (__m128i)vec_reve((__m128i)chunk);
-#endif
-    return chunk;
-  }
-};
+    friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return _mm_cmpeq_epi8(lhs, rhs); }
 
-// SIMD byte mask type (returned by things like eq and gt)
-template <> struct simd8 : base8 {
-  static simdjson_inline simd8 splat(bool _value) {
-    return (__m128i)vec_splats((unsigned char)(-(!!_value)));
-  }
+    static const int SIZE = sizeof(base>::value);
 
-  simdjson_inline simd8() : base8() {}
-  simdjson_inline simd8(const __m128i _value)
-      : base8(_value) {}
-  // Splat constructor
-  simdjson_inline simd8(bool _value)
-      : base8(splat(_value)) {}
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return _mm_alignr_epi8(*this, prev_chunk, 16 - N);
+    }
+  };
 
-  simdjson_inline int to_bitmask() const {
-    __vector unsigned long long result;
-    const __m128i perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50, 0x48, 0x40,
-                               0x38, 0x30, 0x28, 0x20, 0x18, 0x10, 0x08, 0x00};
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8: base8 {
+    static simdjson_inline simd8 splat(bool _value) { return _mm_set1_epi8(uint8_t(-(!!_value))); }
 
-    result = ((__vector unsigned long long)vec_vbpermq((__m128i)this->value,
-                                                       (__m128i)perm_mask));
-#ifdef __LITTLE_ENDIAN__
-    return static_cast(result[1]);
-#else
-    return static_cast(result[0]);
-#endif
-  }
-  simdjson_inline bool any() const {
-    return !vec_all_eq(this->value, (__m128i)vec_splats(0));
-  }
-  simdjson_inline simd8 operator~() const {
-    return this->value ^ (__m128i)splat(true);
-  }
-};
+    simdjson_inline simd8() : base8() {}
+    simdjson_inline simd8(const __m128i _value) : base8(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
 
-template  struct base8_numeric : base8 {
-  static simdjson_inline simd8 splat(T value) {
-    (void)value;
-    return (__m128i)vec_splats(value);
-  }
-  static simdjson_inline simd8 zero() { return splat(0); }
-  static simdjson_inline simd8 load(const T values[16]) {
-    return (__m128i)(vec_vsx_ld(0, reinterpret_cast(values)));
-  }
-  // Repeat 16 values as many times as necessary (usually for lookup tables)
-  static simdjson_inline simd8 repeat_16(T v0, T v1, T v2, T v3, T v4,
-                                                   T v5, T v6, T v7, T v8, T v9,
-                                                   T v10, T v11, T v12, T v13,
-                                                   T v14, T v15) {
-    return simd8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
-                    v14, v15);
-  }
+    simdjson_inline int to_bitmask() const { return _mm_movemask_epi8(*this); }
+    simdjson_inline bool any() const { return !_mm_testz_si128(*this, *this); }
+    simdjson_inline simd8 operator~() const { return *this ^ true; }
+  };
 
-  simdjson_inline base8_numeric() : base8() {}
-  simdjson_inline base8_numeric(const __m128i _value)
-      : base8(_value) {}
+  template
+  struct base8_numeric: base8 {
+    static simdjson_inline simd8 splat(T _value) { return _mm_set1_epi8(_value); }
+    static simdjson_inline simd8 zero() { return _mm_setzero_si128(); }
+    static simdjson_inline simd8 load(const T values[16]) {
+      return _mm_loadu_si128(reinterpret_cast(values));
+    }
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    static simdjson_inline simd8 repeat_16(
+      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
+      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
 
-  // Store to array
-  simdjson_inline void store(T dst[16]) const {
-    vec_vsx_st(this->value, 0, reinterpret_cast<__m128i *>(dst));
-  }
+    simdjson_inline base8_numeric() : base8() {}
+    simdjson_inline base8_numeric(const __m128i _value) : base8(_value) {}
 
-  // Override to distinguish from bool version
-  simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+    // Store to array
+    simdjson_inline void store(T dst[16]) const { return _mm_storeu_si128(reinterpret_cast<__m128i *>(dst), *this); }
 
-  // Addition/subtraction are the same for signed and unsigned
-  simdjson_inline simd8 operator+(const simd8 other) const {
-    return (__m128i)((__m128i)this->value + (__m128i)other);
-  }
-  simdjson_inline simd8 operator-(const simd8 other) const {
-    return (__m128i)((__m128i)this->value - (__m128i)other);
-  }
-  simdjson_inline simd8 &operator+=(const simd8 other) {
-    *this = *this + other;
-    return *static_cast *>(this);
-  }
-  simdjson_inline simd8 &operator-=(const simd8 other) {
-    *this = *this - other;
-    return *static_cast *>(this);
-  }
+    // Override to distinguish from bool version
+    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
 
-  // Perform a lookup assuming the value is between 0 and 16 (undefined behavior
-  // for out of range values)
-  template 
-  simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
-    return (__m128i)vec_perm((__m128i)lookup_table, (__m128i)lookup_table, this->value);
-  }
+    // Addition/subtraction are the same for signed and unsigned
+    simdjson_inline simd8 operator+(const simd8 other) const { return _mm_add_epi8(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return _mm_sub_epi8(*this, other); }
+    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
+    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
 
-  // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted
-  // as a bitset). Passing a 0 value for mask would be equivalent to writing out
-  // every byte to output. Only the first 16 - count_ones(mask) bytes of the
-  // result are significant but 16 bytes get written. Design consideration: it
-  // seems like a function with the signature simd8 compress(uint32_t mask)
-  // would be sensible, but the AVX ISA makes this kind of approach difficult.
-  template 
-  simdjson_inline void compress(uint16_t mask, L *output) const {
-    using internal::BitsSetTable256mul2;
-    using internal::pshufb_combine_table;
-    using internal::thintable_epi8;
-    // this particular implementation was inspired by work done by @animetosho
-    // we do it in two steps, first 8 bytes and then second 8 bytes
-    uint8_t mask1 = uint8_t(mask);      // least significant 8 bits
-    uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
-    // next line just loads the 64-bit values thintable_epi8[mask1] and
-    // thintable_epi8[mask2] into a 128-bit register, using only
-    // two instructions on most compilers.
-#ifdef __LITTLE_ENDIAN__
-    __m128i shufmask = (__m128i)(__vector unsigned long long){
-        thintable_epi8[mask1], thintable_epi8[mask2]};
-#else
-    __m128i shufmask = (__m128i)(__vector unsigned long long){
-        thintable_epi8[mask2], thintable_epi8[mask1]};
-    shufmask = (__m128i)vec_reve((__m128i)shufmask);
-#endif
-    // we increment by 0x08 the second half of the mask
-    shufmask = ((__m128i)shufmask) +
-               ((__m128i)(__vector int){0, 0, 0x08080808, 0x08080808});
+    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return _mm_shuffle_epi8(lookup_table, *this);
+    }
 
-    // this is the version "nearly pruned"
-    __m128i pruned = vec_perm(this->value, this->value, shufmask);
-    // we still need to put the two halves together.
-    // we compute the popcount of the first half:
-    int pop1 = BitsSetTable256mul2[mask1];
-    // then load the corresponding mask, what it does is to write
-    // only the first pop1 bytes from the first 8 bytes, and then
-    // it fills in with the bytes from the second 8 bytes + some filling
-    // at the end.
-    __m128i compactmask =
-        vec_vsx_ld(0, reinterpret_cast(pshufb_combine_table + pop1 * 8));
-    __m128i answer = vec_perm(pruned, (__m128i)vec_splats(0), compactmask);
-    vec_vsx_st(answer, 0, reinterpret_cast<__m128i *>(output));
-  }
+    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
+    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
+    // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
+    // get written.
+    // Design consideration: it seems like a function with the
+    // signature simd8 compress(uint32_t mask) would be
+    // sensible, but the AVX ISA makes this kind of approach difficult.
+    template
+    simdjson_inline void compress(uint16_t mask, L * output) const {
+      using internal::thintable_epi8;
+      using internal::BitsSetTable256mul2;
+      using internal::pshufb_combine_table;
+      // this particular implementation was inspired by work done by @animetosho
+      // we do it in two steps, first 8 bytes and then second 8 bytes
+      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
+      // next line just loads the 64-bit values thintable_epi8[mask1] and
+      // thintable_epi8[mask2] into a 128-bit register, using only
+      // two instructions on most compilers.
+      __m128i shufmask =  _mm_set_epi64x(thintable_epi8[mask2], thintable_epi8[mask1]);
+      // we increment by 0x08 the second half of the mask
+      shufmask =
+      _mm_add_epi8(shufmask, _mm_set_epi32(0x08080808, 0x08080808, 0, 0));
+      // this is the version "nearly pruned"
+      __m128i pruned = _mm_shuffle_epi8(*this, shufmask);
+      // we still need to put the two halves together.
+      // we compute the popcount of the first half:
+      int pop1 = BitsSetTable256mul2[mask1];
+      // then load the corresponding mask, what it does is to write
+      // only the first pop1 bytes from the first 8 bytes, and then
+      // it fills in with the bytes from the second 8 bytes + some filling
+      // at the end.
+      __m128i compactmask =
+      _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop1 * 8));
+      __m128i answer = _mm_shuffle_epi8(pruned, compactmask);
+      _mm_storeu_si128(reinterpret_cast<__m128i *>(output), answer);
+    }
 
-  template 
-  simdjson_inline simd8
-  lookup_16(L replace0, L replace1, L replace2, L replace3, L replace4,
-            L replace5, L replace6, L replace7, L replace8, L replace9,
-            L replace10, L replace11, L replace12, L replace13, L replace14,
-            L replace15) const {
-    return lookup_16(simd8::repeat_16(
-        replace0, replace1, replace2, replace3, replace4, replace5, replace6,
-        replace7, replace8, replace9, replace10, replace11, replace12,
-        replace13, replace14, replace15));
-  }
-};
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
+    }
+  };
 
-// Signed bytes
-template <> struct simd8 : base8_numeric {
-  simdjson_inline simd8() : base8_numeric() {}
-  simdjson_inline simd8(const __m128i _value)
-      : base8_numeric(_value) {}
-  // Splat constructor
-  simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
-  // Array constructor
-  simdjson_inline simd8(const int8_t *values) : simd8(load(values)) {}
-  // Member-by-member initialization
-  simdjson_inline simd8(int8_t v0, int8_t v1, int8_t v2, int8_t v3,
-                               int8_t v4, int8_t v5, int8_t v6, int8_t v7,
-                               int8_t v8, int8_t v9, int8_t v10, int8_t v11,
-                               int8_t v12, int8_t v13, int8_t v14, int8_t v15)
-      : simd8((__m128i)(__vector signed char){v0, v1, v2, v3, v4, v5, v6, v7,
-                                              v8, v9, v10, v11, v12, v13, v14,
-                                              v15}) {}
-  // Repeat 16 values as many times as necessary (usually for lookup tables)
-  simdjson_inline static simd8
-  repeat_16(int8_t v0, int8_t v1, int8_t v2, int8_t v3, int8_t v4, int8_t v5,
-            int8_t v6, int8_t v7, int8_t v8, int8_t v9, int8_t v10, int8_t v11,
-            int8_t v12, int8_t v13, int8_t v14, int8_t v15) {
-    return simd8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
-                         v13, v14, v15);
-  }
+  // Signed bytes
+  template<>
+  struct simd8 : base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const int8_t* values) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(_mm_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
 
-  // Order-sensitive comparisons
-  simdjson_inline simd8
-  max_val(const simd8 other) const {
-    return (__m128i)vec_max((__vector signed char)this->value,
-                            (__vector signed char)(__m128i)other);
-  }
-  simdjson_inline simd8
-  min_val(const simd8 other) const {
-    return (__m128i)vec_min((__vector signed char)this->value,
-                            (__vector signed char)(__m128i)other);
-  }
-  simdjson_inline simd8
-  operator>(const simd8 other) const {
-    return (__m128i)vec_cmpgt((__vector signed char)this->value,
-                              (__vector signed char)(__m128i)other);
-  }
-  simdjson_inline simd8
-  operator<(const simd8 other) const {
-    return (__m128i)vec_cmplt((__vector signed char)this->value,
-                              (__vector signed char)(__m128i)other);
-  }
-};
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epi8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epi8(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return _mm_cmpgt_epi8(*this, other); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return _mm_cmpgt_epi8(other, *this); }
+  };
 
-// Unsigned bytes
-template <> struct simd8 : base8_numeric {
-  simdjson_inline simd8() : base8_numeric() {}
-  simdjson_inline simd8(const __m128i _value)
-      : base8_numeric(_value) {}
-  // Splat constructor
-  simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
-  // Array constructor
-  simdjson_inline simd8(const uint8_t *values) : simd8(load(values)) {}
-  // Member-by-member initialization
-  simdjson_inline
-  simd8(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4, uint8_t v5,
-        uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9, uint8_t v10,
-        uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15)
-      : simd8((__m128i){v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
-                        v13, v14, v15}) {}
-  // Repeat 16 values as many times as necessary (usually for lookup tables)
-  simdjson_inline static simd8
-  repeat_16(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4,
-            uint8_t v5, uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9,
-            uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14,
-            uint8_t v15) {
-    return simd8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
-                          v13, v14, v15);
-  }
+  // Unsigned bytes
+  template<>
+  struct simd8: base8_numeric {
+    simdjson_inline simd8() : base8_numeric() {}
+    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    // Splat constructor
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    // Array constructor
+    simdjson_inline simd8(const uint8_t* values) : simd8(load(values)) {}
+    // Member-by-member initialization
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(_mm_setr_epi8(
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    )) {}
+    // Repeat 16 values as many times as necessary (usually for lookup tables)
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) {
+      return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15
+      );
+    }
 
-  // Saturated math
-  simdjson_inline simd8
-  saturating_add(const simd8 other) const {
-    return (__m128i)vec_adds(this->value, (__m128i)other);
-  }
-  simdjson_inline simd8
-  saturating_sub(const simd8 other) const {
-    return (__m128i)vec_subs(this->value, (__m128i)other);
-  }
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm_adds_epu8(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm_subs_epu8(*this, other); }
 
-  // Order-specific operations
-  simdjson_inline simd8
-  max_val(const simd8 other) const {
-    return (__m128i)vec_max(this->value, (__m128i)other);
-  }
-  simdjson_inline simd8
-  min_val(const simd8 other) const {
-    return (__m128i)vec_min(this->value, (__m128i)other);
-  }
-  // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
-  simdjson_inline simd8
-  gt_bits(const simd8 other) const {
-    return this->saturating_sub(other);
-  }
-  // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
-  simdjson_inline simd8
-  lt_bits(const simd8 other) const {
-    return other.saturating_sub(*this);
-  }
-  simdjson_inline simd8
-  operator<=(const simd8 other) const {
-    return other.max_val(*this) == other;
-  }
-  simdjson_inline simd8
-  operator>=(const simd8 other) const {
-    return other.min_val(*this) == other;
-  }
-  simdjson_inline simd8
-  operator>(const simd8 other) const {
-    return this->gt_bits(other).any_bits_set();
-  }
-  simdjson_inline simd8
-  operator<(const simd8 other) const {
-    return this->gt_bits(other).any_bits_set();
-  }
+    // Order-specific operations
+    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epu8(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epu8(*this, other); }
+    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
+    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
+    simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
+    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
 
-  // Bit-specific operations
-  simdjson_inline simd8 bits_not_set() const {
-    return (__m128i)vec_cmpeq(this->value, (__m128i)vec_splats(uint8_t(0)));
-  }
-  simdjson_inline simd8 bits_not_set(simd8 bits) const {
-    return (*this & bits).bits_not_set();
-  }
-  simdjson_inline simd8 any_bits_set() const {
-    return ~this->bits_not_set();
-  }
-  simdjson_inline simd8 any_bits_set(simd8 bits) const {
-    return ~this->bits_not_set(bits);
-  }
-  simdjson_inline bool bits_not_set_anywhere() const {
-    return vec_all_eq(this->value, (__m128i)vec_splats(0));
-  }
-  simdjson_inline bool any_bits_set_anywhere() const {
-    return !bits_not_set_anywhere();
-  }
-  simdjson_inline bool bits_not_set_anywhere(simd8 bits) const {
-    return vec_all_eq(vec_and(this->value, (__m128i)bits),
-                      (__m128i)vec_splats(0));
-  }
-  simdjson_inline bool any_bits_set_anywhere(simd8 bits) const {
-    return !bits_not_set_anywhere(bits);
-  }
-  template  simdjson_inline simd8 shr() const {
-    return simd8(
-        (__m128i)vec_sr(this->value, (__m128i)vec_splat_u8(N)));
-  }
-  template  simdjson_inline simd8 shl() const {
-    return simd8(
-        (__m128i)vec_sl(this->value, (__m128i)vec_splat_u8(N)));
-  }
-};
+    // Bit-specific operations
+    simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
+    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
+    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
+    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
+    simdjson_inline bool is_ascii() const { return _mm_movemask_epi8(*this) == 0; }
+    simdjson_inline bool bits_not_set_anywhere() const { return _mm_testz_si128(*this, *this); }
+    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
+    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return _mm_testz_si128(*this, bits); }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
+    template
+    simdjson_inline simd8 shr() const { return simd8(_mm_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
+    template
+    simdjson_inline simd8 shl() const { return simd8(_mm_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
+    // Get one of the bits and make a bitmask out of it.
+    // e.g. value.get_bit<7>() gets the high bit
+    template
+    simdjson_inline int get_bit() const { return _mm_movemask_epi8(_mm_slli_epi16(*this, 7-N)); }
+  };
 
-template  struct simd8x64 {
-  static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
-  static_assert(NUM_CHUNKS == 4,
-                "PPC64 kernel should use four registers per 64-byte block.");
-  const simd8 chunks[NUM_CHUNKS];
+  template
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    static_assert(NUM_CHUNKS == 4, "Westmere kernel should use four registers per 64-byte block.");
+    const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
-  simd8x64(const simd8x64 &o) = delete; // no copy allowed
-  simd8x64 &
-  operator=(const simd8& other) = delete; // no assignment allowed
-  simd8x64() = delete;                      // no default constructor allowed
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
 
-  simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1,
-                                  const simd8 chunk2, const simd8 chunk3)
-      : chunks{chunk0, chunk1, chunk2, chunk3} {}
-  simdjson_inline simd8x64(const T ptr[64])
-      : chunks{simd8::load(ptr), simd8::load(ptr + 16),
-               simd8::load(ptr + 32), simd8::load(ptr + 48)} {}
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
 
-  simdjson_inline void store(T ptr[64]) const {
-    this->chunks[0].store(ptr + sizeof(simd8) * 0);
-    this->chunks[1].store(ptr + sizeof(simd8) * 1);
-    this->chunks[2].store(ptr + sizeof(simd8) * 2);
-    this->chunks[3].store(ptr + sizeof(simd8) * 3);
-  }
+    simdjson_inline void store(T ptr[64]) const {
+      this->chunks[0].store(ptr+sizeof(simd8)*0);
+      this->chunks[1].store(ptr+sizeof(simd8)*1);
+      this->chunks[2].store(ptr+sizeof(simd8)*2);
+      this->chunks[3].store(ptr+sizeof(simd8)*3);
+    }
 
-  simdjson_inline simd8 reduce_or() const {
-    return (this->chunks[0] | this->chunks[1]) |
-           (this->chunks[2] | this->chunks[3]);
-  }
+    simdjson_inline simd8 reduce_or() const {
+      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
+    }
 
-  simdjson_inline uint64_t compress(uint64_t mask, T *output) const {
-    this->chunks[0].compress(uint16_t(mask), output);
-    this->chunks[1].compress(uint16_t(mask >> 16),
-                             output + 16 - count_ones(mask & 0xFFFF));
-    this->chunks[2].compress(uint16_t(mask >> 32),
-                             output + 32 - count_ones(mask & 0xFFFFFFFF));
-    this->chunks[3].compress(uint16_t(mask >> 48),
-                             output + 48 - count_ones(mask & 0xFFFFFFFFFFFF));
-    return 64 - count_ones(mask);
-  }
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      this->chunks[0].compress(uint16_t(mask), output);
+      this->chunks[1].compress(uint16_t(mask >> 16), output + 16 - count_ones(mask & 0xFFFF));
+      this->chunks[2].compress(uint16_t(mask >> 32), output + 32 - count_ones(mask & 0xFFFFFFFF));
+      this->chunks[3].compress(uint16_t(mask >> 48), output + 48 - count_ones(mask & 0xFFFFFFFFFFFF));
+      return 64 - count_ones(mask);
+    }
 
-  simdjson_inline uint64_t to_bitmask() const {
-    uint64_t r0 = uint32_t(this->chunks[0].to_bitmask());
-    uint64_t r1 = this->chunks[1].to_bitmask();
-    uint64_t r2 = this->chunks[2].to_bitmask();
-    uint64_t r3 = this->chunks[3].to_bitmask();
-    return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
-  }
+    simdjson_inline uint64_t to_bitmask() const {
+      uint64_t r0 = uint32_t(this->chunks[0].to_bitmask() );
+      uint64_t r1 =          this->chunks[1].to_bitmask() ;
+      uint64_t r2 =          this->chunks[2].to_bitmask() ;
+      uint64_t r3 =          this->chunks[3].to_bitmask() ;
+      return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
+    }
 
-  simdjson_inline uint64_t eq(const T m) const {
-    const simd8 mask = simd8::splat(m);
-    return simd8x64(this->chunks[0] == mask, this->chunks[1] == mask,
-                          this->chunks[2] == mask, this->chunks[3] == mask)
-        .to_bitmask();
-  }
+    simdjson_inline uint64_t eq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] == mask,
+        this->chunks[1] == mask,
+        this->chunks[2] == mask,
+        this->chunks[3] == mask
+      ).to_bitmask();
+    }
 
-  simdjson_inline uint64_t eq(const simd8x64 &other) const {
-    return simd8x64(this->chunks[0] == other.chunks[0],
-                          this->chunks[1] == other.chunks[1],
-                          this->chunks[2] == other.chunks[2],
-                          this->chunks[3] == other.chunks[3])
-        .to_bitmask();
-  }
+    simdjson_inline uint64_t eq(const simd8x64 &other) const {
+      return  simd8x64(
+        this->chunks[0] == other.chunks[0],
+        this->chunks[1] == other.chunks[1],
+        this->chunks[2] == other.chunks[2],
+        this->chunks[3] == other.chunks[3]
+      ).to_bitmask();
+    }
 
-  simdjson_inline uint64_t lteq(const T m) const {
-    const simd8 mask = simd8::splat(m);
-    return simd8x64(this->chunks[0] <= mask, this->chunks[1] <= mask,
-                          this->chunks[2] <= mask, this->chunks[3] <= mask)
-        .to_bitmask();
-  }
-}; // struct simd8x64
+    simdjson_inline uint64_t lteq(const T m) const {
+      const simd8 mask = simd8::splat(m);
+      return  simd8x64(
+        this->chunks[0] <= mask,
+        this->chunks[1] <= mask,
+        this->chunks[2] <= mask,
+        this->chunks[3] <= mask
+      ).to_bitmask();
+    }
+  }; // struct simd8x64
 
 } // namespace simd
 } // unnamed namespace
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
-#endif // SIMDJSON_PPC64_SIMD_INPUT_H
-/* end file simdjson/ppc64/simd.h */
-/* including simdjson/ppc64/stringparsing_defs.h: #include "simdjson/ppc64/stringparsing_defs.h" */
-/* begin file simdjson/ppc64/stringparsing_defs.h */
-#ifndef SIMDJSON_PPC64_STRINGPARSING_DEFS_H
-#define SIMDJSON_PPC64_STRINGPARSING_DEFS_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/ppc64/bitmanipulation.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/ppc64/simd.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#endif // SIMDJSON_WESTMERE_SIMD_INPUT_H
+/* end file simdjson/westmere/simd.h */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace {
 
 using namespace simd;
@@ -93665,44 +128660,29 @@ using namespace simd;
 struct backslash_and_quote {
 public:
   static constexpr uint32_t BYTES_PROCESSED = 32;
-  simdjson_inline backslash_and_quote
-  copy_and_find(const uint8_t *src, uint8_t *dst);
+  simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
 
-  simdjson_inline bool has_quote_first() {
-    return ((bs_bits - 1) & quote_bits) != 0;
-  }
+  simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
   simdjson_inline bool has_backslash() { return bs_bits != 0; }
-  simdjson_inline int quote_index() {
-    return trailing_zeroes(quote_bits);
-  }
-  simdjson_inline int backslash_index() {
-    return trailing_zeroes(bs_bits);
-  }
+  simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
+  simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
 
   uint32_t bs_bits;
   uint32_t quote_bits;
 }; // struct backslash_and_quote
 
-simdjson_inline backslash_and_quote
-backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
+simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
   // this can read up to 31 bytes beyond the buffer size, but we require
   // SIMDJSON_PADDING of padding
-  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1),
-                "backslash and quote finder must process fewer than "
-                "SIMDJSON_PADDING bytes");
+  static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
   simd8 v0(src);
-  simd8 v1(src + sizeof(v0));
+  simd8 v1(src + 16);
   v0.store(dst);
-  v1.store(dst + sizeof(v0));
-
-  // Getting a 64-bit bitmask is much cheaper than multiple 16-bit bitmasks on
-  // PPC; therefore, we smash them together into a 64-byte mask and get the
-  // bitmask from there.
-  uint64_t bs_and_quote =
-      simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
+  v1.store(dst + 16);
+  uint64_t bs_and_quote = simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
   return {
-      uint32_t(bs_and_quote),      // bs_bits
-      uint32_t(bs_and_quote >> 32) // quote_bits
+    uint32_t(bs_and_quote),      // bs_bits
+    uint32_t(bs_and_quote >> 32) // quote_bits
   };
 }
 
@@ -93727,29 +128707,26 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
   simd8 is_backslash = (v == '\\');
   simd8 is_control = (v < 32);
   return {
-    // We store it as a 64-bit bitmask even though we only need 16 bits.
     uint64_t((is_backslash | is_quote | is_control).to_bitmask())
   };
 }
 
 } // unnamed namespace
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
-#endif // SIMDJSON_PPC64_STRINGPARSING_DEFS_H
-/* end file simdjson/ppc64/stringparsing_defs.h */
-
-#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
-/* end file simdjson/ppc64/begin.h */
-/* including simdjson/generic/ondemand/amalgamated.h for ppc64: #include "simdjson/generic/ondemand/amalgamated.h" */
-/* begin file simdjson/generic/ondemand/amalgamated.h for ppc64 */
-#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H)
+#endif // SIMDJSON_WESTMERE_STRINGPARSING_DEFS_H
+/* end file simdjson/westmere/stringparsing_defs.h */
+/* end file simdjson/westmere/begin.h */
+/* including simdjson/generic/ondemand/amalgamated.h for westmere: #include "simdjson/generic/ondemand/amalgamated.h" */
+/* begin file simdjson/generic/ondemand/amalgamated.h for westmere */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
 #error simdjson/generic/ondemand/dependencies.h must be included before simdjson/generic/ondemand/amalgamated.h!
 #endif
 
 // Stuff other things depend on
-/* including simdjson/generic/ondemand/base.h for ppc64: #include "simdjson/generic/ondemand/base.h" */
-/* begin file simdjson/generic/ondemand/base.h for ppc64 */
+/* including simdjson/generic/ondemand/base.h for westmere: #include "simdjson/generic/ondemand/base.h" */
+/* begin file simdjson/generic/ondemand/base.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -93758,7 +128735,7 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 /**
  * A fast, simple, DOM-like interface that parses JSON as you use it.
  *
@@ -93769,8 +128746,8 @@ namespace ondemand {
 /** Represents the depth of a JSON value (number of nested arrays/objects). */
 using depth_t = int32_t;
 
-/** @copydoc simdjson::ppc64::number_type */
-using number_type = simdjson::ppc64::number_type;
+/** @copydoc simdjson::westmere::number_type */
+using number_type = simdjson::westmere::number_type;
 
 /** @private Position in the JSON buffer indexes */
 using token_position = const uint32_t *;
@@ -93793,13 +128770,13 @@ class value;
 class value_iterator;
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_BASE_H
-/* end file simdjson/generic/ondemand/base.h for ppc64 */
-/* including simdjson/generic/ondemand/deserialize.h for ppc64: #include "simdjson/generic/ondemand/deserialize.h" */
-/* begin file simdjson/generic/ondemand/deserialize.h for ppc64 */
+/* end file simdjson/generic/ondemand/base.h for westmere */
+/* including simdjson/generic/ondemand/deserialize.h for westmere: #include "simdjson/generic/ondemand/deserialize.h" */
+/* begin file simdjson/generic/ondemand/deserialize.h for westmere */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -93819,35 +128796,35 @@ template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 
 template 
 concept is_builtin_deserializable_v = is_builtin_deserializable::value;
 
-template 
+template 
 concept custom_deserializable = tag_invocable;
 
-template 
+template 
 concept deserializable = custom_deserializable || is_builtin_deserializable_v || concepts::optional_type;
 
-template 
+template 
 concept nothrow_custom_deserializable = nothrow_tag_invocable;
 
 // built-in types are noexcept and if an error happens, the value simply gets ignored and the error is returned.
-template 
+template 
 concept nothrow_deserializable = nothrow_custom_deserializable || is_builtin_deserializable_v;
 
 /// Deserialize Tag
 inline constexpr struct deserialize_tag {
-  using array_type = ppc64::ondemand::array;
-  using object_type = ppc64::ondemand::object;
-  using value_type = ppc64::ondemand::value;
-  using document_type = ppc64::ondemand::document;
-  using document_reference_type = ppc64::ondemand::document_reference;
+  using array_type = westmere::ondemand::array;
+  using object_type = westmere::ondemand::object;
+  using value_type = westmere::ondemand::value;
+  using document_type = westmere::ondemand::document;
+  using document_reference_type = westmere::ondemand::document_reference;
 
   // Customization Point for array
   template 
@@ -93892,9 +128869,9 @@ inline constexpr struct deserialize_tag {
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
 
-/* end file simdjson/generic/ondemand/deserialize.h for ppc64 */
-/* including simdjson/generic/ondemand/value_iterator.h for ppc64: #include "simdjson/generic/ondemand/value_iterator.h" */
-/* begin file simdjson/generic/ondemand/value_iterator.h for ppc64 */
+/* end file simdjson/generic/ondemand/deserialize.h for westmere */
+/* including simdjson/generic/ondemand/value_iterator.h for westmere: #include "simdjson/generic/ondemand/value_iterator.h" */
+/* begin file simdjson/generic/ondemand/value_iterator.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -93904,7 +128881,7 @@ inline constexpr struct deserialize_tag {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 /**
@@ -94369,21 +129346,22 @@ class value_iterator {
 
   friend class document;
   friend class object;
+  friend class object_iterator;
   friend class array;
   friend class value;
   friend class field;
 }; // value_iterator
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::value_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::value_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -94391,9 +129369,9 @@ struct simdjson_result : public ppc64::implemen
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
-/* end file simdjson/generic/ondemand/value_iterator.h for ppc64 */
-/* including simdjson/generic/ondemand/value.h for ppc64: #include "simdjson/generic/ondemand/value.h" */
-/* begin file simdjson/generic/ondemand/value.h for ppc64 */
+/* end file simdjson/generic/ondemand/value_iterator.h for westmere */
+/* including simdjson/generic/ondemand/value.h for westmere: #include "simdjson/generic/ondemand/value.h" */
+/* begin file simdjson/generic/ondemand/value.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -94409,7 +129387,7 @@ struct simdjson_result : public ppc64::implemen
 
 namespace simdjson {
 
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 /**
  * An ephemeral JSON value returned during iteration. It is only valid for as long as you do
@@ -95123,20 +130101,20 @@ class value {
 };
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::value &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::value &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result get_array() noexcept;
-  simdjson_inline simdjson_result get_object() noexcept;
+  simdjson_inline simdjson_result get_array() noexcept;
+  simdjson_inline simdjson_result get_object() noexcept;
 
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
@@ -95148,7 +130126,7 @@ struct simdjson_result : public ppc64::implementation_si
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
@@ -95159,20 +130137,20 @@ struct simdjson_result : public ppc64::implementation_si
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator ppc64::ondemand::array() noexcept(false);
-  simdjson_inline operator ppc64::ondemand::object() noexcept(false);
+  simdjson_inline operator westmere::ondemand::array() noexcept(false);
+  simdjson_inline operator westmere::ondemand::object() noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator ppc64::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator westmere::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
 
   /**
    * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
@@ -95196,9 +130174,9 @@ struct simdjson_result : public ppc64::implementation_si
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field(const char *key) noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field(const char *key) noexcept;
 
   /**
    * Look up a field by name on an object, without regard to key order.
@@ -95210,7 +130188,7 @@ struct simdjson_result : public ppc64::implementation_si
    * in question is large. The fact that the extra code is there also bumps the executable size.
    *
    * We default operator[] on find_field_unordered() for convenience.
-   * It is the defaul because it would be highly surprising (and hard to debug) if the
+   * It is the default because it would be highly surprising (and hard to debug) if the
    * default behavior failed to look up a field just because it was in the wrong order--and many
    * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
    *
@@ -95220,14 +130198,14 @@ struct simdjson_result : public ppc64::implementation_si
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](const char *key) noexcept;
-  simdjson_result operator[](int) noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](const char *key) noexcept;
+  simdjson_result operator[](int) noexcept = delete;
 
   /**
    * Get the type of this JSON value. It does not validate or consume the value.
@@ -95251,13 +130229,13 @@ struct simdjson_result : public ppc64::implementation_si
    * better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just
    * let it throw an exception).
    */
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
 
   /** @copydoc simdjson_inline std::string_view value::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
@@ -95267,17 +130245,17 @@ struct simdjson_result : public ppc64::implementation_si
   simdjson_inline simdjson_result current_location() noexcept;
   /** @copydoc simdjson_inline int32_t current_depth() const noexcept */
   simdjson_inline simdjson_result current_depth() const noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_H
-/* end file simdjson/generic/ondemand/value.h for ppc64 */
-/* including simdjson/generic/ondemand/logger.h for ppc64: #include "simdjson/generic/ondemand/logger.h" */
-/* begin file simdjson/generic/ondemand/logger.h for ppc64 */
+/* end file simdjson/generic/ondemand/value.h for westmere */
+/* including simdjson/generic/ondemand/logger.h for westmere: #include "simdjson/generic/ondemand/logger.h" */
+/* begin file simdjson/generic/ondemand/logger.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -95286,7 +130264,7 @@ struct simdjson_result : public ppc64::implementation_si
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 // Logging should be free unless SIMDJSON_VERBOSE_LOGGING is set. Importantly, it is critical
@@ -95332,13 +130310,13 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 
 } // namespace logger
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
-/* end file simdjson/generic/ondemand/logger.h for ppc64 */
-/* including simdjson/generic/ondemand/token_iterator.h for ppc64: #include "simdjson/generic/ondemand/token_iterator.h" */
-/* begin file simdjson/generic/ondemand/token_iterator.h for ppc64 */
+/* end file simdjson/generic/ondemand/logger.h for westmere */
+/* including simdjson/generic/ondemand/token_iterator.h for westmere: #include "simdjson/generic/ondemand/token_iterator.h" */
+/* begin file simdjson/generic/ondemand/token_iterator.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -95349,7 +130327,7 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 /**
@@ -95480,15 +130458,15 @@ class token_iterator {
 };
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::token_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::token_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -95497,9 +130475,9 @@ struct simdjson_result : public ppc64::implemen
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
-/* end file simdjson/generic/ondemand/token_iterator.h for ppc64 */
-/* including simdjson/generic/ondemand/json_iterator.h for ppc64: #include "simdjson/generic/ondemand/json_iterator.h" */
-/* begin file simdjson/generic/ondemand/json_iterator.h for ppc64 */
+/* end file simdjson/generic/ondemand/token_iterator.h for westmere */
+/* including simdjson/generic/ondemand/json_iterator.h for westmere: #include "simdjson/generic/ondemand/json_iterator.h" */
+/* begin file simdjson/generic/ondemand/json_iterator.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -95510,7 +130488,7 @@ struct simdjson_result : public ppc64::implemen
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 /**
@@ -95821,15 +130799,15 @@ class json_iterator {
 }; // json_iterator
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::json_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::json_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
 
   simdjson_inline simdjson_result() noexcept = default;
@@ -95838,9 +130816,9 @@ struct simdjson_result : public ppc64::implement
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
-/* end file simdjson/generic/ondemand/json_iterator.h for ppc64 */
-/* including simdjson/generic/ondemand/json_type.h for ppc64: #include "simdjson/generic/ondemand/json_type.h" */
-/* begin file simdjson/generic/ondemand/json_type.h for ppc64 */
+/* end file simdjson/generic/ondemand/json_iterator.h for westmere */
+/* including simdjson/generic/ondemand/json_type.h for westmere: #include "simdjson/generic/ondemand/json_type.h" */
+/* begin file simdjson/generic/ondemand/json_type.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -95851,7 +130829,7 @@ struct simdjson_result : public ppc64::implement
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 /**
@@ -95985,15 +130963,15 @@ inline std::ostream& operator<<(std::ostream& out, simdjson_result &t
 #endif
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::json_type &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::json_type &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -96002,9 +130980,9 @@ struct simdjson_result : public ppc64::implementatio
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
-/* end file simdjson/generic/ondemand/json_type.h for ppc64 */
-/* including simdjson/generic/ondemand/raw_json_string.h for ppc64: #include "simdjson/generic/ondemand/raw_json_string.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string.h for ppc64 */
+/* end file simdjson/generic/ondemand/json_type.h for westmere */
+/* including simdjson/generic/ondemand/raw_json_string.h for westmere: #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -96014,7 +130992,7 @@ struct simdjson_result : public ppc64::implementatio
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 /**
@@ -96196,30 +131174,30 @@ simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_js
 
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::raw_json_string &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::raw_json_string &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
 
   simdjson_inline simdjson_result raw() const noexcept;
   simdjson_inline char operator[](size_t) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape(ppc64::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(ppc64::ondemand::json_iterator &iter) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape(westmere::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(westmere::ondemand::json_iterator &iter) const noexcept;
 };
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
-/* end file simdjson/generic/ondemand/raw_json_string.h for ppc64 */
-/* including simdjson/generic/ondemand/parser.h for ppc64: #include "simdjson/generic/ondemand/parser.h" */
-/* begin file simdjson/generic/ondemand/parser.h for ppc64 */
+/* end file simdjson/generic/ondemand/raw_json_string.h for westmere */
+/* including simdjson/generic/ondemand/parser.h for westmere: #include "simdjson/generic/ondemand/parser.h" */
+/* begin file simdjson/generic/ondemand/parser.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -96232,7 +131210,7 @@ struct simdjson_result : public ppc64::impleme
 #include 
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 /**
@@ -96632,15 +131610,15 @@ class parser {
 };
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::parser &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::parser &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -96648,319 +131626,11 @@ struct simdjson_result : public ppc64::implementation_s
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_H
-/* end file simdjson/generic/ondemand/parser.h for ppc64 */
-
-// JSON builder - needed for extract_into functionality
-/* including simdjson/generic/ondemand/json_string_builder.h for ppc64: #include "simdjson/generic/ondemand/json_string_builder.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder.h for ppc64 */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace ppc64 {
-namespace builder {
-  class string_builder;
-}}
-
-template 
-struct has_custom_serialization : std::false_type {};
-
-inline constexpr struct serialize_tag {
-  template 
-  constexpr void operator()(ppc64::builder::string_builder& b, T&& obj) const{
-    return tag_invoke(*this, b, std::forward(obj));
-  }
-
-
-} serialize{};
-template 
-struct has_custom_serialization(), std::declval()))
->> : std::true_type {};
-
-template 
-constexpr bool require_custom_serialization = has_custom_serialization::value;
-#else
-struct has_custom_serialization : std::false_type {};
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace ppc64 {
-namespace builder {
-/**
- * A builder for JSON strings representing documents. This is a low-level
- * builder that is not meant to be used directly by end-users. Though it
- * supports atomic types (Booleans, strings), it does not support composed
- * types (arrays and objects).
- *
- * Ultimately, this class can support kernel-specific optimizations. E.g.,
- * it may make use of SIMD instructions to escape strings faster.
- */
-class string_builder {
-public:
-  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
-
-  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
-
-  /**
-   * Append number (includes Booleans). Booleans are mapped to the strings
-   * false and true. Numbers are converted to strings abiding by the JSON standard.
-   * Floating-point numbers are converted to the shortest string that 'correctly'
-   * represents the number.
-   */
-  template::value>::type>
-  simdjson_inline void append(number_type v) noexcept;
-
-  /**
-   * Append character c.
-   */
-  simdjson_inline void append(char c)  noexcept;
-
-  /**
-   * Append the string 'null'.
-   */
-  simdjson_inline void append_null()  noexcept;
-
-  /**
-   * Clear the content.
-   */
-  simdjson_inline void clear()  noexcept;
-
-  /**
-   * Append the std::string_view, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
-
-  /**
-   * Append the std::string_view surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void escape_and_append_with_quotes()  noexcept;
-#endif
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
-
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
-
-  /**
-   * Append the C string directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *c)  noexcept;
-
-  /**
-   * Append "{" to the buffer.
-   */
-  simdjson_inline void start_object()  noexcept;
-
-  /**
-   * Append "}" to the buffer.
-   */
-  simdjson_inline void end_object()  noexcept;
-
-  /**
-   * Append "[" to the buffer.
-   */
-  simdjson_inline void start_array()  noexcept;
-
-  /**
-   * Append "]" to the buffer.
-   */
-  simdjson_inline void end_array()  noexcept;
-
-  /**
-   * Append "," to the buffer.
-   */
-  simdjson_inline void append_comma()  noexcept;
-
-  /**
-   * Append ":" to the buffer.
-   */
-  simdjson_inline void append_colon()  noexcept;
-
-  /**
-   * Append a key-value pair to the buffer.
-   * The key is escaped and surrounded by double quotes.
-   * The value is escaped if it is a string.
-   */
-  template
-  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void append_key_value(value_type value) noexcept;
-
-  // Support for optional types (std::optional, etc.)
-  template 
-  requires(!require_custom_serialization)
-  simdjson_inline void append(const T &opt);
-
-  template 
-  requires(require_custom_serialization)
-  simdjson_inline void append(T &&val);
-
-  // Support for string-like types
-  template 
-  requires(std::is_convertible::value ||
-  std::is_same::value )
-  simdjson_inline void append(const T &value);
-#endif
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-  // Support for range-based appending (std::ranges::view, etc.)
-  template 
-requires (!std::is_convertible::value && !require_custom_serialization)
-  simdjson_inline void append(const R &range) noexcept;
-#endif
-  /**
-   * Append the std::string_view directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(std::string_view input)  noexcept;
-
-  /**
-   * Append len characters from str.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
-#if SIMDJSON_EXCEPTIONS
-  /**
-   * Creates an std::string from the written JSON buffer.
-   * Throws if memory allocation failed
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string() const noexcept(false);
-
-  /**
-   * Creates an std::string_view from the written JSON buffer.
-   * Throws if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
-#endif
-
-  /**
-   * Returns a view on the written JSON buffer. Returns an error
-   * if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result view() const noexcept;
-
-  /**
-   * Appends the null character to the buffer and returns
-   * a pointer to the beginning of the written JSON buffer.
-   * Returns an error if memory allocation failed.
-   * The result is null-terminated.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result c_str() noexcept;
-
-  /**
-   * Return true if the content is valid UTF-8.
-   */
-  simdjson_inline bool validate_unicode() const noexcept;
-
-  /**
-   * Returns the current size of the written JSON buffer.
-   * If an error occurred, returns 0.
-   */
-  simdjson_inline size_t size() const noexcept;
-
-private:
-  /**
-   * Returns true if we can write at least upcoming_bytes bytes.
-   * The underlying buffer is reallocated if needed. It is designed
-   * to be called before writing to the buffer. It should be fast.
-   */
-  simdjson_inline bool capacity_check(size_t upcoming_bytes);
-
-  /**
-   * Grow the buffer to at least desired_capacity bytes.
-   * If the allocation fails, is_valid is set to false. We expect
-   * that this function would not be repeatedly called.
-   */
-  simdjson_inline void grow_buffer(size_t desired_capacity);
-
-  /**
-   * We use this helper function to make sure that is_valid is kept consistent.
-   */
-  simdjson_inline void set_valid(bool valid) noexcept;
-
-  std::unique_ptr buffer{};
-  size_t position{0};
-  size_t capacity{0};
-  bool is_valid{true};
-};
-
-
-
-}
-}
-
-
-#if !SIMDJSON_STATIC_REFLECTION
-// fallback implementation until we have static reflection
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::ppc64::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view s;
-  auto e = b.view().get(s);
-  if(e) { return e; }
-  return std::string(s);
-}
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::ppc64::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view sv;
-  auto e = b.view().get(sv);
-  if(e) { return e; }
-  s.assign(sv.data(), sv.size());
-  return simdjson::SUCCESS;
-}
-#endif
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
-/* end file simdjson/generic/ondemand/json_string_builder.h for ppc64 */
+/* end file simdjson/generic/ondemand/parser.h for westmere */
 
 // All other declarations
-/* including simdjson/generic/ondemand/array.h for ppc64: #include "simdjson/generic/ondemand/array.h" */
-/* begin file simdjson/generic/ondemand/array.h for ppc64 */
+/* including simdjson/generic/ondemand/array.h for westmere: #include "simdjson/generic/ondemand/array.h" */
+/* begin file simdjson/generic/ondemand/array.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -96972,7 +131642,7 @@ simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t i
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 /**
@@ -97192,27 +131862,27 @@ class array {
 };
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::array &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::array &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
   inline simdjson_result count_elements() & noexcept;
   inline simdjson_result is_empty() & noexcept;
   inline simdjson_result reset() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   simdjson_inline simdjson_result raw_json() noexcept;
 #if SIMDJSON_SUPPORTS_CONCEPTS
   // TODO: move this code into object-inl.h
@@ -97220,7 +131890,7 @@ struct simdjson_result : public ppc64::implementation_si
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -97228,7 +131898,7 @@ struct simdjson_result : public ppc64::implementation_si
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -97241,13 +131911,14 @@ struct simdjson_result : public ppc64::implementation_si
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
-/* end file simdjson/generic/ondemand/array.h for ppc64 */
-/* including simdjson/generic/ondemand/array_iterator.h for ppc64: #include "simdjson/generic/ondemand/array_iterator.h" */
-/* begin file simdjson/generic/ondemand/array_iterator.h for ppc64 */
+/* end file simdjson/generic/ondemand/array.h for westmere */
+/* including simdjson/generic/ondemand/array_iterator.h for westmere: #include "simdjson/generic/ondemand/array_iterator.h" */
+/* begin file simdjson/generic/ondemand/array_iterator.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include  */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
@@ -97255,7 +131926,7 @@ struct simdjson_result : public ppc64::implementation_si
 
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 /**
@@ -97263,11 +131934,17 @@ namespace ondemand {
  *
  * This is an input_iterator, meaning:
  * - It is forward-only
- * - * must be called exactly once per element.
+ * - * must be called at most once per element.
  * - ++ must be called exactly once in between each * (*, ++, *, ++, * ...)
  */
 class array_iterator {
 public:
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
   /** Create a new, invalid array iterator. */
   simdjson_inline array_iterator() noexcept = default;
 
@@ -97311,6 +131988,9 @@ class array_iterator {
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   value_iterator iter{};
 
   simdjson_inline array_iterator(const value_iterator &iter) noexcept;
@@ -97321,14 +132001,20 @@ class array_iterator {
 };
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
-  simdjson_inline simdjson_result(ppc64::ondemand::array_iterator &&value) noexcept; ///< @private
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
+  simdjson_inline simdjson_result(westmere::ondemand::array_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -97336,10 +132022,10 @@ struct simdjson_result : public ppc64::implemen
   // Iterator interface
   //
 
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 };
@@ -97347,9 +132033,9 @@ struct simdjson_result : public ppc64::implemen
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
-/* end file simdjson/generic/ondemand/array_iterator.h for ppc64 */
-/* including simdjson/generic/ondemand/document.h for ppc64: #include "simdjson/generic/ondemand/document.h" */
-/* begin file simdjson/generic/ondemand/document.h for ppc64 */
+/* end file simdjson/generic/ondemand/array_iterator.h for westmere */
+/* including simdjson/generic/ondemand/document.h for westmere: #include "simdjson/generic/ondemand/document.h" */
+/* begin file simdjson/generic/ondemand/document.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -97363,7 +132049,7 @@ struct simdjson_result : public ppc64::implemen
 
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 /**
@@ -98315,21 +133001,21 @@ class document_reference {
   document *doc{nullptr};
 };
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::document &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::document &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -98340,9 +133026,9 @@ struct simdjson_result : public ppc64::implementation
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -98352,33 +133038,33 @@ struct simdjson_result : public ppc64::implementation
   template simdjson_inline error_code get(T &out) && noexcept;
 #if SIMDJSON_EXCEPTIONS
 
-  using ppc64::implementation_simdjson_result_base::operator*;
-  using ppc64::implementation_simdjson_result_base::operator->;
-  template ::value == false>::type>
+  using westmere::implementation_simdjson_result_base::operator*;
+  using westmere::implementation_simdjson_result_base::operator->;
+  template ::value == false>::type>
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator ppc64::ondemand::array() & noexcept(false);
-  simdjson_inline operator ppc64::ondemand::object() & noexcept(false);
+  simdjson_inline operator westmere::ondemand::array() & noexcept(false);
+  simdjson_inline operator westmere::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator ppc64::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator westmere::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator ppc64::ondemand::value() noexcept(false);
+  simdjson_inline operator westmere::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
@@ -98386,14 +133072,14 @@ struct simdjson_result : public ppc64::implementation
   simdjson_inline bool at_end() const noexcept;
   simdjson_inline bool is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -98409,14 +133095,14 @@ struct simdjson_result : public ppc64::implementation
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::document_reference value, error_code error) noexcept;
+  simdjson_inline simdjson_result(westmere::ondemand::document_reference value, error_code error) noexcept;
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -98427,9 +133113,9 @@ struct simdjson_result : public ppc64::impl
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -98440,43 +133126,43 @@ struct simdjson_result : public ppc64::impl
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator ppc64::ondemand::array() & noexcept(false);
-  simdjson_inline operator ppc64::ondemand::object() & noexcept(false);
+  simdjson_inline operator westmere::ondemand::array() & noexcept(false);
+  simdjson_inline operator westmere::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator ppc64::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator westmere::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator ppc64::ondemand::value() noexcept(false);
+  simdjson_inline operator westmere::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
   simdjson_inline simdjson_result current_depth() const noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document_reference::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -98488,9 +133174,9 @@ struct simdjson_result : public ppc64::impl
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
-/* end file simdjson/generic/ondemand/document.h for ppc64 */
-/* including simdjson/generic/ondemand/document_stream.h for ppc64: #include "simdjson/generic/ondemand/document_stream.h" */
-/* begin file simdjson/generic/ondemand/document_stream.h for ppc64 */
+/* end file simdjson/generic/ondemand/document.h for westmere */
+/* including simdjson/generic/ondemand/document_stream.h for westmere: #include "simdjson/generic/ondemand/document_stream.h" */
+/* begin file simdjson/generic/ondemand/document_stream.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -98508,7 +133194,7 @@ struct simdjson_result : public ppc64::impl
 #endif
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -98821,14 +133507,14 @@ class document_stream {
 };  // document_stream
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::document_stream &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::document_stream &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -98836,9 +133522,9 @@ struct simdjson_result : public ppc64::impleme
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
-/* end file simdjson/generic/ondemand/document_stream.h for ppc64 */
-/* including simdjson/generic/ondemand/field.h for ppc64: #include "simdjson/generic/ondemand/field.h" */
-/* begin file simdjson/generic/ondemand/field.h for ppc64 */
+/* end file simdjson/generic/ondemand/document_stream.h for westmere */
+/* including simdjson/generic/ondemand/field.h for westmere: #include "simdjson/generic/ondemand/field.h" */
+/* begin file simdjson/generic/ondemand/field.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -98850,7 +133536,7 @@ struct simdjson_result : public ppc64::impleme
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 /**
@@ -98928,33 +133614,33 @@ class field : public std::pair {
 };
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::field &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::field &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
   simdjson_inline simdjson_result unescaped_key(bool allow_replacement = false) noexcept;
   template
   simdjson_inline error_code unescaped_key(string_type &receiver, bool allow_replacement = false) noexcept;
-  simdjson_inline simdjson_result key() noexcept;
+  simdjson_inline simdjson_result key() noexcept;
   simdjson_inline simdjson_result key_raw_json_token() noexcept;
   simdjson_inline simdjson_result escaped_key() noexcept;
-  simdjson_inline simdjson_result value() noexcept;
+  simdjson_inline simdjson_result value() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_H
-/* end file simdjson/generic/ondemand/field.h for ppc64 */
-/* including simdjson/generic/ondemand/object.h for ppc64: #include "simdjson/generic/ondemand/object.h" */
-/* begin file simdjson/generic/ondemand/object.h for ppc64 */
+/* end file simdjson/generic/ondemand/field.h for westmere */
+/* including simdjson/generic/ondemand/object.h for westmere: #include "simdjson/generic/ondemand/object.h" */
+/* begin file simdjson/generic/ondemand/object.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -98969,7 +133655,7 @@ struct simdjson_result : public ppc64::implementation_si
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 /**
@@ -98984,6 +133670,13 @@ class object {
    */
   simdjson_inline object() noexcept = default;
 
+  /**
+   * Get an iterator to the start of the object. We recommend using a range-based for loop.
+   *
+   * Using the iterator directly is also possible but error-prone and discouraged. In particular,
+   * you must dereference the iterator exactly once per iteration (before calling '++').
+   * Doing otherwise is unsafe and may lead to errors. You are responsible for ensuring
+   */
   simdjson_inline simdjson_result begin() noexcept;
   simdjson_inline simdjson_result end() noexcept;
   /**
@@ -99256,29 +133949,29 @@ class object {
 };
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::object &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::object &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   inline simdjson_result reset() noexcept;
   inline simdjson_result is_empty() noexcept;
   inline simdjson_result count_fields() & noexcept;
@@ -99289,7 +133982,7 @@ struct simdjson_result : public ppc64::implementation_s
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -99297,7 +133990,7 @@ struct simdjson_result : public ppc64::implementation_s
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -99320,9 +134013,9 @@ struct simdjson_result : public ppc64::implementation_s
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
-/* end file simdjson/generic/ondemand/object.h for ppc64 */
-/* including simdjson/generic/ondemand/object_iterator.h for ppc64: #include "simdjson/generic/ondemand/object_iterator.h" */
-/* begin file simdjson/generic/ondemand/object_iterator.h for ppc64 */
+/* end file simdjson/generic/ondemand/object.h for westmere */
+/* including simdjson/generic/ondemand/object_iterator.h for westmere: #include "simdjson/generic/ondemand/object_iterator.h" */
+/* begin file simdjson/generic/ondemand/object_iterator.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -99333,7 +134026,7 @@ struct simdjson_result : public ppc64::implementation_s
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 class object_iterator {
@@ -99357,9 +134050,14 @@ class object_iterator {
   // Assumes it's being compared with the end. true if depth >= iter->depth.
   simdjson_inline bool operator!=(const object_iterator &) const noexcept;
   // Checks for ']' and ','
+  // YOU MUST NOT CALL THIS IF operator* YIELDED AN ERROR.
+  // YOU MUST NOT CALL THIS WITHOUT A CORRESPONDING operator* CALL.
   simdjson_inline object_iterator &operator++() noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   /**
    * The underlying JSON iterator.
    *
@@ -99374,15 +134072,15 @@ class object_iterator {
 };
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public ppc64::implementation_simdjson_result_base {
+struct simdjson_result : public westmere::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(ppc64::ondemand::object_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(westmere::ondemand::object_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -99391,21 +134089,21 @@ struct simdjson_result : public ppc64::impleme
   //
 
   // Reads key and value, yielding them to the user.
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
   // Assumes it's being compared with the end. true if depth < iter->depth.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
   // Assumes it's being compared with the end. true if depth >= iter->depth.
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
   // Checks for ']' and ','
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
-/* end file simdjson/generic/ondemand/object_iterator.h for ppc64 */
-/* including simdjson/generic/ondemand/serialization.h for ppc64: #include "simdjson/generic/ondemand/serialization.h" */
-/* begin file simdjson/generic/ondemand/serialization.h for ppc64 */
+/* end file simdjson/generic/ondemand/object_iterator.h for westmere */
+/* including simdjson/generic/ondemand/serialization.h for westmere: #include "simdjson/generic/ondemand/serialization.h" */
+/* begin file simdjson/generic/ondemand/serialization.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -99419,30 +134117,30 @@ namespace simdjson {
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(ppc64::ondemand::document& x) noexcept;
+inline simdjson_result to_json_string(westmere::ondemand::document& x) noexcept;
 /**
  * Create a string-view instance out of a value instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. The value must
  * not have been accessed previously. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(ppc64::ondemand::value& x) noexcept;
+inline simdjson_result to_json_string(westmere::ondemand::value& x) noexcept;
 /**
  * Create a string-view instance out of an object instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(ppc64::ondemand::object& x) noexcept;
+inline simdjson_result to_json_string(westmere::ondemand::object& x) noexcept;
 /**
  * Create a string-view instance out of an array instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(ppc64::ondemand::array& x) noexcept;
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(westmere::ondemand::array& x) noexcept;
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
 
 #if SIMDJSON_STATIC_REFLECTION
 /**
@@ -99450,10 +134148,10 @@ inline simdjson_result to_json_string(simdjson_result
-  requires(!std::same_as &&
-           !std::same_as &&
-           !std::same_as &&
-           !std::same_as)
+  requires(!std::same_as &&
+           !std::same_as &&
+           !std::same_as &&
+           !std::same_as)
 inline std::string to_json_string(const T& obj);
 #endif
 
@@ -99466,7 +134164,7 @@ inline std::string to_json_string(const T& obj);
  * Credit: @madhur4127
  * See https://github.com/simdjson/simdjson/issues/1768
  */
-namespace simdjson { namespace ppc64 { namespace ondemand {
+namespace simdjson { namespace westmere { namespace ondemand {
 
 /**
  * Print JSON to an output stream.  It does not
@@ -99476,9 +134174,9 @@ namespace simdjson { namespace ppc64 { namespace ondemand {
  * @param value The element.
  * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
  */
-inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::value x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::value x);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -99488,9 +134186,9 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -99500,13 +134198,13 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
-inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::document_reference& value);
+inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::document_reference& value);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -99516,18 +134214,18 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
-}}} // namespace simdjson::ppc64::ondemand
+}}} // namespace simdjson::westmere::ondemand
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
-/* end file simdjson/generic/ondemand/serialization.h for ppc64 */
+/* end file simdjson/generic/ondemand/serialization.h for westmere */
 
 // Deserialization for standard types
-/* including simdjson/generic/ondemand/std_deserialize.h for ppc64: #include "simdjson/generic/ondemand/std_deserialize.h" */
-/* begin file simdjson/generic/ondemand/std_deserialize.h for ppc64 */
+/* including simdjson/generic/ondemand/std_deserialize.h for westmere: #include "simdjson/generic/ondemand/std_deserialize.h" */
+/* begin file simdjson/generic/ondemand/std_deserialize.h for westmere */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -99626,8 +134324,8 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified type inside the container must default constructible.");
-  ppc64::ondemand::array arr;
-  if constexpr (std::is_same_v, ppc64::ondemand::array>) {
+  westmere::ondemand::array arr;
+  if constexpr (std::is_same_v, westmere::ondemand::array>) {
     arr = val;
   } else {
     SIMDJSON_TRY(val.get_array().get(arr));
@@ -99671,7 +134369,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified value type inside the container must default constructible.");
- ppc64::ondemand::object obj;
+ westmere::ondemand::object obj;
  SIMDJSON_TRY(val.get_object().get(obj));
  for (auto field : obj) {
     std::string_view key;
@@ -99689,7 +134387,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
 }
 
 template 
-error_code tag_invoke(deserialize_tag, ppc64::ondemand::object &obj, T &out) noexcept {
+error_code tag_invoke(deserialize_tag, westmere::ondemand::object &obj, T &out) noexcept {
   using value_type = typename std::remove_cvref_t::mapped_type;
 
   out.clear();
@@ -99697,7 +134395,7 @@ error_code tag_invoke(deserialize_tag, ppc64::ondemand::object &obj, T &out) noe
     std::string_view key;
     SIMDJSON_TRY(field.unescaped_key().get(key));
 
-    ppc64::ondemand::value value_obj;
+    westmere::ondemand::value value_obj;
     SIMDJSON_TRY(field.value().get(value_obj));
 
     value_type this_value;
@@ -99708,22 +134406,22 @@ error_code tag_invoke(deserialize_tag, ppc64::ondemand::object &obj, T &out) noe
 }
 
 template 
-error_code tag_invoke(deserialize_tag, ppc64::ondemand::value &val, T &out) noexcept {
-  ppc64::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, westmere::ondemand::value &val, T &out) noexcept {
+  westmere::ondemand::object obj;
   SIMDJSON_TRY(val.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, ppc64::ondemand::document &doc, T &out) noexcept {
-  ppc64::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, westmere::ondemand::document &doc, T &out) noexcept {
+  westmere::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, ppc64::ondemand::document_reference &doc, T &out) noexcept {
-  ppc64::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, westmere::ondemand::document_reference &doc, T &out) noexcept {
+  westmere::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
@@ -99800,8 +134498,8 @@ constexpr bool user_defined_type = (std::is_class_v
 template 
   requires(user_defined_type && std::is_class_v)
 error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept {
-  ppc64::ondemand::object obj;
-  if constexpr (std::is_same_v, ppc64::ondemand::object>) {
+  westmere::ondemand::object obj;
+  if constexpr (std::is_same_v, westmere::ondemand::object>) {
     obj = val;
   } else {
     SIMDJSON_TRY(val.get_object().get(obj));
@@ -100110,11 +134808,11 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
-/* end file simdjson/generic/ondemand/std_deserialize.h for ppc64 */
+/* end file simdjson/generic/ondemand/std_deserialize.h for westmere */
 
 // Inline definitions
-/* including simdjson/generic/ondemand/array-inl.h for ppc64: #include "simdjson/generic/ondemand/array-inl.h" */
-/* begin file simdjson/generic/ondemand/array-inl.h for ppc64 */
+/* including simdjson/generic/ondemand/array-inl.h for westmere: #include "simdjson/generic/ondemand/array-inl.h" */
+/* begin file simdjson/generic/ondemand/array-inl.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -100129,7 +134827,7 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 //
@@ -100358,68 +135056,68 @@ simdjson_inline simdjson_result array::at(size_t index) noexcept {
 }
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  ppc64::ondemand::array &&value
+simdjson_inline simdjson_result::simdjson_result(
+  westmere::ondemand::array &&value
 ) noexcept
-  : implementation_simdjson_result_base(
-      std::forward(value)
+  : implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept
-  : implementation_simdjson_result_base(error)
+  : implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
-simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
-simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
-/* end file simdjson/generic/ondemand/array-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/array_iterator-inl.h for ppc64: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/array_iterator-inl.h for ppc64 */
+/* end file simdjson/generic/ondemand/array-inl.h for westmere */
+/* including simdjson/generic/ondemand/array_iterator-inl.h for westmere: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/array_iterator-inl.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -100431,7 +135129,7 @@ simdjson_inline  simdjson_result simdjson_result array_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   SIMDJSON_ASSUME(!has_been_referenced);
+   has_been_referenced = true;
+#endif
   if (iter.error()) { iter.abandon(); return iter.error(); }
   return value(iter.child());
 }
@@ -100449,6 +135151,9 @@ simdjson_inline bool array_iterator::operator!=(const array_iterator &) const no
   return iter.is_open();
 }
 simdjson_inline array_iterator &array_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   has_been_referenced = false;
+#endif
   error_code error;
   // PERF NOTE this is a safety rail ... users should exit loops as soon as they receive an error, so we'll never get here.
   // However, it does not seem to make a perf difference, so we add it out of an abundance of caution.
@@ -100462,50 +135167,50 @@ simdjson_inline bool array_iterator::at_end() const noexcept {
   return iter.at_end();
 }
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  ppc64::ondemand::array_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  westmere::ondemand::array_iterator &&value
 ) noexcept
-  : ppc64::implementation_simdjson_result_base(std::forward(value))
+  : westmere::implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : ppc64::implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : westmere::implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++(first);
   return *this;
 }
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   return !first.iter.is_valid() || first.at_end();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/array_iterator-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/value-inl.h for ppc64: #include "simdjson/generic/ondemand/value-inl.h" */
-/* begin file simdjson/generic/ondemand/value-inl.h for ppc64 */
+/* end file simdjson/generic/ondemand/array_iterator-inl.h for westmere */
+/* including simdjson/generic/ondemand/value-inl.h for westmere: #include "simdjson/generic/ondemand/value-inl.h" */
+/* begin file simdjson/generic/ondemand/value-inl.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -100521,7 +135226,7 @@ simdjson_inline bool simdjson_result::at_end()
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 simdjson_inline value::value(const value_iterator &_iter) noexcept
@@ -100818,240 +135523,240 @@ inline simdjson_result> value::at_path_with_wildcard(std::str
 }
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  ppc64::ondemand::value &&value
+simdjson_inline simdjson_result::simdjson_result(
+  westmere::ondemand::value &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   if (error()) { return error(); }
   return {};
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
 
-simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
-template<> simdjson_inline error_code simdjson_result::get(ppc64::ondemand::value &out) noexcept {
+template<> simdjson_inline error_code simdjson_result::get(westmere::ondemand::value &out) noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 
-template simdjson_inline simdjson_result simdjson_result::get() noexcept {
+template simdjson_inline simdjson_result simdjson_result::get() noexcept {
   if (error()) { return error(); }
   return first.get();
 }
-template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
+template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
+template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
   if (error()) { return error(); }
   return std::move(first);
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator ppc64::ondemand::array() noexcept(false) {
+simdjson_inline simdjson_result::operator westmere::ondemand::array() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator ppc64::ondemand::object() noexcept(false) {
+simdjson_inline simdjson_result::operator westmere::ondemand::object() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator ppc64::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator westmere::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
+simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(
+simdjson_inline simdjson_result simdjson_result::at_pointer(
     std::string_view json_pointer) noexcept {
   if (error()) {
       return error();
@@ -101059,7 +135764,7 @@ simdjson_inline simdjson_result simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -101067,7 +135772,7 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(
+inline simdjson_result> simdjson_result::at_path_with_wildcard(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -101078,9 +135783,9 @@ inline simdjson_result> simdjson_result> simdjson_result::simdjson_result(
-  ppc64::ondemand::document &&value
+simdjson_inline simdjson_result::simdjson_result(
+  westmere::ondemand::document &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(
+    implementation_simdjson_result_base(
       error
     )
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
-template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
+template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first);
+  return std::forward(first);
 }
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(ppc64::ondemand::document &out) & noexcept = delete;
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(ppc64::ondemand::document &out) && noexcept {
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(westmere::ondemand::document &out) & noexcept = delete;
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(westmere::ondemand::document &out) && noexcept {
   if (error()) { return error(); }
-  out = std::forward(first);
+  out = std::forward(first);
   return SUCCESS;
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 
-simdjson_inline bool simdjson_result::is_negative() noexcept {
+simdjson_inline bool simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 
 
 #if SIMDJSON_EXCEPTIONS
-template ::value == false>::type>
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+template ::value == false>::type>
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator ppc64::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator westmere::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator ppc64::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator westmere::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator ppc64::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator westmere::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator ppc64::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator westmere::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   if (error()) { return error(); }
   return first.at_end();
 }
 
 
-simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
+simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
 
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
@@ -101778,7 +136483,7 @@ simdjson_inline simdjson_result> simdjson_re
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -101788,7 +136493,7 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result::simdjson_result(ppc64::ondemand::document_reference value, error_code error)
-  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
+simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::document_reference value, error_code error)
+  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
 
 
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(ppc64::ondemand::document_reference &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(westmere::ondemand::document_reference &out) & noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(ppc64::ondemand::document_reference &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(westmere::ondemand::document_reference &out) && noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+simdjson_inline simdjson_result::operator T() noexcept(false) {
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator ppc64::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator westmere::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator ppc64::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator westmere::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator ppc64::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator westmere::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator ppc64::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator westmere::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
@@ -102135,7 +136840,7 @@ simdjson_inline simdjson_result> simdjson_re
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -102143,9 +136848,9 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -102567,22 +137272,22 @@ inline void document_stream::start_stage1_thread() noexcept {
 #endif // SIMDJSON_THREADS_ENABLED
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
-  ppc64::ondemand::document_stream &&value
+simdjson_inline simdjson_result::simdjson_result(
+  westmere::ondemand::document_stream &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
@@ -102590,9 +137295,9 @@ simdjson_inline simdjson_result::simdjson_resu
 }
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H
-/* end file simdjson/generic/ondemand/document_stream-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/field-inl.h for ppc64: #include "simdjson/generic/ondemand/field-inl.h" */
-/* begin file simdjson/generic/ondemand/field-inl.h for ppc64 */
+/* end file simdjson/generic/ondemand/document_stream-inl.h for westmere */
+/* including simdjson/generic/ondemand/field-inl.h for westmere: #include "simdjson/generic/ondemand/field-inl.h" */
+/* begin file simdjson/generic/ondemand/field-inl.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -102604,7 +137309,7 @@ simdjson_inline simdjson_result::simdjson_resu
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 // clang 6 does not think the default constructor can be noexcept, so we make it explicit
@@ -102668,53 +137373,53 @@ simdjson_inline value field::value() && noexcept {
 }
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  ppc64::ondemand::field &&value
+simdjson_inline simdjson_result::simdjson_result(
+  westmere::ondemand::field &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::key() noexcept {
+simdjson_inline simdjson_result simdjson_result::key() noexcept {
   if (error()) { return error(); }
   return first.key();
 }
 
-simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.key_raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
+simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
   if (error()) { return error(); }
   return first.escaped_key();
 }
 
-simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(allow_replacement);
 }
 
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(receiver, allow_replacement);
 }
 
-simdjson_inline simdjson_result simdjson_result::value() noexcept {
+simdjson_inline simdjson_result simdjson_result::value() noexcept {
   if (error()) { return error(); }
   return std::move(first.value());
 }
@@ -102722,9 +137427,9 @@ simdjson_inline simdjson_result simdjson_result simdjson_result= &parser->implementation->structural_indexes[0] );
   SIMDJSON_ASSUME( position < &parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] );
-#else
-  (void)position; // Suppress unused parameter warning
 #endif
 }
 
@@ -103085,7 +137789,11 @@ simdjson_inline token_position json_iterator::position() const noexcept {
 simdjson_inline simdjson_result json_iterator::unescape(raw_json_string in, bool allow_replacement) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape(in, _string_buf_loc, allow_replacement);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape(in, _string_buf_loc, allow_replacement);
@@ -103095,7 +137803,11 @@ simdjson_inline simdjson_result json_iterator::unescape(raw_js
 simdjson_inline simdjson_result json_iterator::unescape_wobbly(raw_json_string in) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape_wobbly(in, _string_buf_loc);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape_wobbly(in, _string_buf_loc);
@@ -103158,22 +137870,22 @@ simdjson_warn_unused simdjson_inline bool json_iterator::copy_to_buffer(const ui
 }
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::json_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::json_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/json_iterator-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/json_type-inl.h for ppc64: #include "simdjson/generic/ondemand/json_type-inl.h" */
-/* begin file simdjson/generic/ondemand/json_type-inl.h for ppc64 */
+/* end file simdjson/generic/ondemand/json_iterator-inl.h for westmere */
+/* including simdjson/generic/ondemand/json_type-inl.h for westmere: #include "simdjson/generic/ondemand/json_type-inl.h" */
+/* begin file simdjson/generic/ondemand/json_type-inl.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -103184,7 +137896,7 @@ simdjson_inline simdjson_result::simdjson_result
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept {
@@ -103278,22 +137990,22 @@ simdjson_inline void number::skip_double() noexcept {
 }
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::json_type &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::json_type &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
-/* end file simdjson/generic/ondemand/json_type-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/logger-inl.h for ppc64: #include "simdjson/generic/ondemand/logger-inl.h" */
-/* begin file simdjson/generic/ondemand/logger-inl.h for ppc64 */
+/* end file simdjson/generic/ondemand/json_type-inl.h for westmere */
+/* including simdjson/generic/ondemand/logger-inl.h for westmere: #include "simdjson/generic/ondemand/logger-inl.h" */
+/* begin file simdjson/generic/ondemand/logger-inl.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -103308,7 +138020,7 @@ simdjson_inline simdjson_result::simdjson_result(err
 #include 
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 namespace logger {
 
@@ -103515,13 +138227,13 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 
 } // namespace logger
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
-/* end file simdjson/generic/ondemand/logger-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/object-inl.h for ppc64: #include "simdjson/generic/ondemand/object-inl.h" */
-/* begin file simdjson/generic/ondemand/object-inl.h for ppc64 */
+/* end file simdjson/generic/ondemand/logger-inl.h for westmere */
+/* including simdjson/generic/ondemand/object-inl.h for westmere: #include "simdjson/generic/ondemand/object-inl.h" */
+/* begin file simdjson/generic/ondemand/object-inl.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -103541,7 +138253,7 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 simdjson_inline simdjson_result object::find_field_unordered(const std::string_view key) & noexcept {
@@ -103815,55 +138527,55 @@ simdjson_warn_unused simdjson_inline error_code object::extract_into(T& out) & n
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::object &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::object &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field_unordered(key);
+  return std::forward(first).find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first)[key];
+  return std::forward(first)[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field(key);
+  return std::forward(first).find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
     std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -103871,27 +138583,27 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
 
-inline simdjson_result simdjson_result::reset() noexcept {
+inline simdjson_result simdjson_result::reset() noexcept {
   if (error()) { return error(); }
   return first.reset();
 }
 
-inline simdjson_result simdjson_result::is_empty() noexcept {
+inline simdjson_result simdjson_result::is_empty() noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
 
-simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
 
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
@@ -103899,9 +138611,9 @@ simdjson_inline  simdjson_result simdjson_result simdjson_result object_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  // We must call * once per iteration.
+  SIMDJSON_ASSUME(!has_been_referenced);
+  has_been_referenced = true;
+#endif
   error_code error = iter.error();
   if (error) { iter.abandon(); return error; }
   auto result = field::start(iter);
@@ -103943,6 +138660,11 @@ simdjson_inline bool object_iterator::operator!=(const object_iterator &) const
 SIMDJSON_PUSH_DISABLE_WARNINGS
 SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
 simdjson_inline object_iterator &object_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   // Before calling ++, we must have called *.
+   SIMDJSON_ASSUME(has_been_referenced);
+   has_been_referenced = false;
+#endif
   // TODO this is a safety rail ... users should exit loops as soon as they receive an error.
   // Nonetheless, let's see if performance is OK with this if statement--the compiler may give it to us for free.
   if (!iter.is_open()) { return *this; } // Iterator will be released if there is an error
@@ -103998,39 +138720,39 @@ SIMDJSON_POP_DISABLE_WARNINGS
 //
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  ppc64::ondemand::object_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  westmere::ondemand::object_iterator &&value
 ) noexcept
-  : implementation_simdjson_result_base(std::forward(value))
+  : implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
 // Checks for ']' and ','
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++first;
@@ -104040,9 +138762,9 @@ simdjson_inline simdjson_result &simdjson_resu
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/object_iterator-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/parser-inl.h for ppc64: #include "simdjson/generic/ondemand/parser-inl.h" */
-/* begin file simdjson/generic/ondemand/parser-inl.h for ppc64 */
+/* end file simdjson/generic/ondemand/object_iterator-inl.h for westmere */
+/* including simdjson/generic/ondemand/parser-inl.h for westmere: #include "simdjson/generic/ondemand/parser-inl.h" */
+/* begin file simdjson/generic/ondemand/parser-inl.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -104059,7 +138781,7 @@ simdjson_inline simdjson_result &simdjson_resu
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 simdjson_inline parser::parser(size_t max_capacity) noexcept
@@ -104269,22 +138991,22 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser::
 
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::parser &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::parser &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
-/* end file simdjson/generic/ondemand/parser-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/raw_json_string-inl.h for ppc64: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for ppc64 */
+/* end file simdjson/generic/ondemand/parser-inl.h for westmere */
+/* including simdjson/generic/ondemand/raw_json_string-inl.h for westmere: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -104297,7 +139019,7 @@ simdjson_inline simdjson_result::simdjson_result(error_
 
 namespace simdjson {
 
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 simdjson_inline raw_json_string::raw_json_string(const uint8_t * _buf) noexcept : buf{_buf} {}
@@ -104471,277 +139193,38 @@ simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, cons
 }
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::raw_json_string &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::raw_json_string &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
+simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
   if (error()) { return error(); }
   return first.raw();
 }
-simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
+simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
   if (error()) { return error(); }
   return first[i];
 }
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(ppc64::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(westmere::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
   if (error()) { return error(); }
   return first.unescape(iter, allow_replacement);
 }
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(ppc64::ondemand::json_iterator &iter) const noexcept {
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(westmere::ondemand::json_iterator &iter) const noexcept {
   if (error()) { return error(); }
   return first.unescape_wobbly(iter);
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
-/* end file simdjson/generic/ondemand/raw_json_string-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/serialization-inl.h for ppc64: #include "simdjson/generic/ondemand/serialization-inl.h" */
-/* begin file simdjson/generic/ondemand/serialization-inl.h for ppc64 */
-#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
-/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_builder.h" */
-/* amalgamation skipped (editor-only): #endif */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-inline std::string_view trim(const std::string_view str) noexcept {
-  // We can almost surely do better by rolling our own find_first_not_of function.
-  size_t first = str.find_first_not_of(" \t\n\r");
-  // If we have the empty string (just white space), then no trimming is possible, and
-  // we return the empty string_view.
-  if (std::string_view::npos == first) { return std::string_view(); }
-  size_t last = str.find_last_not_of(" \t\n\r");
-  return str.substr(first, (last - first + 1));
-}
-
-
-inline simdjson_result to_json_string(ppc64::ondemand::document& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(ppc64::ondemand::document_reference& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(ppc64::ondemand::value& x) noexcept {
-  /**
-   * If we somehow receive a value that has already been consumed,
-   * then the following code could be in trouble. E.g., we create
-   * an array as needed, but if an array was already created, then
-   * it could be bad.
-   */
-  using namespace ppc64::ondemand;
-  ppc64::ondemand::json_type t;
-  auto error = x.type().get(t);
-  if(error != SUCCESS) { return error; }
-  switch (t)
-  {
-    case json_type::array:
-    {
-      ppc64::ondemand::array array;
-      error = x.get_array().get(array);
-      if(error) { return error; }
-      return to_json_string(array);
-    }
-    case json_type::object:
-    {
-      ppc64::ondemand::object object;
-      error = x.get_object().get(object);
-      if(error) { return error; }
-      return to_json_string(object);
-    }
-    default:
-      return trim(x.raw_json_token());
-  }
-}
-
-inline simdjson_result to_json_string(ppc64::ondemand::object& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(ppc64::ondemand::array& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-} // namespace simdjson
-
-namespace simdjson { namespace ppc64 { namespace ondemand {
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::document_reference& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
-  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-}}} // namespace simdjson::ppc64::ondemand
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-/* end file simdjson/generic/ondemand/serialization-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/token_iterator-inl.h for ppc64: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/token_iterator-inl.h for ppc64 */
+/* end file simdjson/generic/ondemand/raw_json_string-inl.h for westmere */
+/* including simdjson/generic/ondemand/token_iterator-inl.h for westmere: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/token_iterator-inl.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -104752,7 +139235,7 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::ppc64::ondemand::ob
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 simdjson_inline token_iterator::token_iterator(
@@ -104823,22 +139306,22 @@ simdjson_inline bool token_iterator::operator<=(const token_iterator &other) con
 }
 
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::token_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::token_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/token_iterator-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/value_iterator-inl.h for ppc64: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/value_iterator-inl.h for ppc64 */
+/* end file simdjson/generic/ondemand/token_iterator-inl.h for westmere */
+/* including simdjson/generic/ondemand/value_iterator-inl.h for westmere: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/value_iterator-inl.h for westmere */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -104853,7 +139336,7 @@ simdjson_inline simdjson_result::simdjson_resul
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 
 simdjson_inline value_iterator::value_iterator(
@@ -104935,7 +139418,6 @@ simdjson_warn_unused simdjson_inline error_code value_iterator::end_container()
 
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::has_next_field() noexcept {
   assert_at_next();
-
   // It's illegal to call this unless there are more tokens: anything that ends in } or ] is
   // obligated to verify there are more tokens if they are not the top level.
   switch (*_json_iter->return_current_and_advance()) {
@@ -105357,9 +139839,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_string(string_type& receiver, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_string(allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_wobbly_string() noexcept {
@@ -105447,7 +139933,7 @@ simdjson_inline simdjson_result value_iterator::is_root_integer(bool check
   return answer;
 }
 
-simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
+simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
   auto max_len = peek_root_length();
   auto json = peek_root_scalar("number");
   // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
@@ -105499,9 +139985,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_root_string(check_trailing, allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_wobbly_string(bool check_trailing) noexcept {
@@ -105570,1469 +140060,619 @@ simdjson_warn_unused simdjson_inline simdjson_result value_iterator::ge
   tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
   if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
     logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
-    return NUMBER_ERROR;
-  }
-
-  auto result = numberparsing::parse_integer_in_string(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("int64");
-  }
-  return result;
-}
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("double");
-  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
-  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
-  // number: -0.e-308.
-  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
-  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
-    return NUMBER_ERROR;
-  }
-  auto result = numberparsing::parse_double(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("double");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double_in_string(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("double");
-  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
-  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
-  // number: -0.e-308.
-  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
-  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
-    return NUMBER_ERROR;
-  }
-  auto result = numberparsing::parse_double_in_string(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("double");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_bool(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("bool");
-  // We have a boolean if we have either "true" or "false" and the next character is either
-  // a structural character or whitespace. We also check that the length is correct:
-  // "true" and "false" are 4 and 5 characters long, respectively.
-  bool value_true = (max_len >= 4 && !atomparsing::str4ncmp(json, "true") &&
-  (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
-  bool value_false = (max_len >= 5 && !atomparsing::str4ncmp(json, "false") &&
-  (max_len == 5 || jsoncharutils::is_structural_or_whitespace(json[5])));
-  if(value_true == false && value_false == false) { return incorrect_type_error("Not a boolean"); }
-  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-  advance_root_scalar("bool");
-  return value_true;
-}
-
-simdjson_inline simdjson_result value_iterator::is_root_null(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("null");
-  bool result = (max_len >= 4 && !atomparsing::str4ncmp(json, "null") &&
-         (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
-  if(result) { // we have something that looks like a null.
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("null");
-  } else if (json[0] == 'n') {
-    return incorrect_type_error("Not a null but starts with n");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
-
-  return _json_iter->skip_child(depth());
-}
-
-simdjson_inline value_iterator value_iterator::child() const noexcept {
-  assert_at_child();
-  return { _json_iter, depth()+1, _json_iter->token.position() };
-}
-
-// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
-// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
-// marked non-inline.
-SIMDJSON_PUSH_DISABLE_WARNINGS
-SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
-simdjson_inline bool value_iterator::is_open() const noexcept {
-  return _json_iter->depth() >= depth();
-}
-SIMDJSON_POP_DISABLE_WARNINGS
-
-simdjson_inline bool value_iterator::at_end() const noexcept {
-  return _json_iter->at_end();
-}
-
-simdjson_inline bool value_iterator::at_start() const noexcept {
-  return _json_iter->token.position() == start_position();
-}
-
-simdjson_inline bool value_iterator::at_first_field() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  return _json_iter->token.position() == start_position() + 1;
-}
-
-simdjson_inline void value_iterator::abandon() noexcept {
-  _json_iter->abandon();
-}
-
-simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
-  return _depth;
-}
-simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
-  return _json_iter->error;
-}
-simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
-  return _json_iter->string_buf_loc();
-}
-simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
-  return *_json_iter;
-}
-simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
-  return *_json_iter;
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
-  return _json_iter->peek(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
-  return _json_iter->peek_length(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
-  return _json_iter->peek_root_length(start_position());
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return peek_start(); }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return; }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
-  logger::log_start_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  const uint8_t *json;
-  if (!is_at_start()) {
-#if SIMDJSON_DEVELOPMENT_CHECKS
-    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
-#endif
-    json = peek_start();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-  } else {
-    assert_at_start();
-    /**
-     * We should be prudent. Let us peek. If it is not the right type, we
-     * return an error. Only once we have determined that we have the right
-     * type are we allowed to advance!
-     */
-    json = _json_iter->peek();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-    _json_iter->return_current_and_advance();
-  }
-
-
-  return SUCCESS;
-}
-
-
-simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_root();
-  return _json_iter->peek();
-}
-simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_non_root_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_root();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_non_root_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
-  logger::log_error(*_json_iter, start_position(), depth(), message);
-  return INCORRECT_TYPE;
-}
-
-simdjson_inline bool value_iterator::is_at_start() const noexcept {
-  return position() == start_position();
-}
-
-simdjson_inline bool value_iterator::is_at_key() const noexcept {
-  // Keys are at the same depth as the object.
-  // Note here that we could be safer and check that we are within an object,
-  // but we do not.
-  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
-}
-
-simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
-  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
-  auto delta = position() - start_position();
-  return delta == 1 || delta == 2;
-}
-
-inline void value_iterator::assert_at_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_container_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_next() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-simdjson_inline void value_iterator::move_at_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position);
-}
-
-simdjson_inline void value_iterator::move_at_container_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position + 1);
-}
-
-simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_array();
-}
-
-simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_object();
-}
-
-inline void value_iterator::assert_at_child() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_root() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth == 1 );
-}
-
-inline void value_iterator::assert_at_non_root_start() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth > 1 );
-}
-
-inline void value_iterator::assert_is_valid() const noexcept {
-  SIMDJSON_ASSUME( _json_iter != nullptr );
-}
-
-simdjson_inline bool value_iterator::is_valid() const noexcept {
-  return _json_iter != nullptr;
-}
-
-simdjson_inline simdjson_result value_iterator::type() const noexcept {
-  switch (*peek_start()) {
-    case '{':
-      return json_type::object;
-    case '[':
-      return json_type::array;
-    case '"':
-      return json_type::string;
-    case 'n':
-      return json_type::null;
-    case 't': case 'f':
-      return json_type::boolean;
-    case '-':
-    case '0': case '1': case '2': case '3': case '4':
-    case '5': case '6': case '7': case '8': case '9':
-      return json_type::number;
-    default:
-      return json_type::unknown;
-  }
-}
-
-simdjson_inline token_position value_iterator::start_position() const noexcept {
-  return _start_position;
-}
-
-simdjson_inline token_position value_iterator::position() const noexcept {
-  return _json_iter->position();
-}
-
-simdjson_inline token_position value_iterator::end_position() const noexcept {
-  return _json_iter->end_position();
-}
-
-simdjson_inline token_position value_iterator::last_position() const noexcept {
-  return _json_iter->last_position();
-}
-
-simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
-  return _json_iter->report_error(error, message);
-}
-
-} // namespace ondemand
-} // namespace ppc64
-} // namespace simdjson
-
-namespace simdjson {
-
-simdjson_inline simdjson_result::simdjson_result(ppc64::ondemand::value_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/value_iterator-inl.h for ppc64 */
-
-// JSON builder inline definitions
-/* including simdjson/generic/ondemand/json_string_builder-inl.h for ppc64: #include "simdjson/generic/ondemand/json_string_builder-inl.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder-inl.h for ppc64 */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand
- * directory but we will move it to a builder directory later.
- */
-#include 
-#include 
-#include 
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-/*
- * Empirically, we have found that an inlined optimization is important for
- * performance. The following macros are not ideal. We should find a better
- * way to inline the code.
- */
-
-#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
-    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
-     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
-#endif
-#endif
-
-#if defined(__aarch64__) || defined(_M_ARM64)
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
-#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
-#endif
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-#include 
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#include 
-#endif
-
-namespace simdjson {
-namespace ppc64 {
-namespace builder {
-
-static SIMDJSON_CONSTEXPR_LAMBDA std::array
-    json_quotable_character = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-/**
-
-A possible SWAR implementation of has_json_escapable_byte. It is not used
-because it is slower than the current implementation. It is kept here for
-reference (to show that we tried it).
-
-inline bool has_json_escapable_byte(uint64_t x) {
-  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
-  uint64_t xor2 = x ^ 0x0202020202020202ULL;
-  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
-  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
-  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
-  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
-}
-
-**/
-
-SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
-simple_needs_escaping(std::string_view v) {
-  for (char c : v) {
-    // a table lookup is faster than a series of comparisons
-    if (json_quotable_character[static_cast(c)]) {
-      return true;
-    }
-  }
-  return false;
-}
-
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  uint8x16_t running = vdupq_n_u8(0);
-  uint8x16_t v34 = vdupq_n_u8(34);
-  uint8x16_t v92 = vdupq_n_u8(92);
-
-  for (; i + 15 < view.size(); i += 16) {
-    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  if (i < view.size()) {
-    uint8x16_t word =
-        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
-}
-#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  __m128i running = _mm_setzero_si128();
-  for (; i + 15 < view.size(); i += 16) {
-
-    __m128i word =
-        _mm_loadu_si128(reinterpret_cast(view.data() + i));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  if (i < view.size()) {
-    __m128i word = _mm_loadu_si128(
-        reinterpret_cast(view.data() + view.length() - 16));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  return _mm_movemask_epi8(running) != 0;
-}
-#else
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  return simple_needs_escaping(view);
-}
-#endif
-
-SIMDJSON_CONSTEXPR_LAMBDA inline size_t
-find_next_json_quotable_character(const std::string_view view,
-                                  size_t location) noexcept {
-
-  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
-    if (json_quotable_character[static_cast(*pos)]) {
-      return pos - view.begin();
-    }
-  }
-  return size_t(view.size());
-}
-
-SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
-    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
-    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
-    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
-    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
-    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
-
-// All Unicode characters may be placed within the quotation marks, except for
-// the characters that MUST be escaped: quotation mark, reverse solidus, and the
-// control characters (U+0000 through U+001F). There are two-character sequence
-// escape representations of some popular characters:
-// \", \\, \b, \f, \n, \r, \t.
-SIMDJSON_CONSTEXPR_LAMBDA void escape_json_char(char c, char *&out) {
-  if (c == '"') {
-    memcpy(out, "\\\"", 2);
-    out += 2;
-  } else if (c == '\\') {
-    memcpy(out, "\\\\", 2);
-    out += 2;
-  } else {
-    std::string_view v = control_chars[uint8_t(c)];
-    memcpy(out, v.data(), v.size());
-    out += v.size();
-  }
-}
-
-inline size_t write_string_escaped(const std::string_view input, char *out) {
-  size_t mysize = input.size();
-  if (!fast_needs_escaping(input)) { // fast path!
-    memcpy(out, input.data(), input.size());
-    return input.size();
-  }
-  const char *const initout = out;
-  size_t location = find_next_json_quotable_character(input, 0);
-  memcpy(out, input.data(), location);
-  out += location;
-  escape_json_char(input[location], out);
-  location += 1;
-  while (location < mysize) {
-    size_t newlocation = find_next_json_quotable_character(input, location);
-    memcpy(out, input.data() + location, newlocation - location);
-    out += newlocation - location;
-    location = newlocation;
-    if (location == mysize) {
-      break;
-    }
-    escape_json_char(input[location], out);
-    location += 1;
-  }
-  return out - initout;
-}
-
-simdjson_inline string_builder::string_builder(size_t initial_capacity)
-    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
-      capacity(buffer.get() != nullptr ? initial_capacity : 0),
-      is_valid(buffer.get() != nullptr) {}
-
-simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
-  // We use the convention that when is_valid is false, then the capacity and
-  // the position are 0.
-  // Most of the time, this function will return true.
-  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
-    return true;
-  }
-  // check for overflow, most of the time there is no overflow
-  if (simdjson_likely(position + upcoming_bytes < position)) {
-    return false;
-  }
-  // We will rarely get here.
-  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
-  // If the buffer allocation failed, we set is_valid to false.
-  return is_valid;
-}
-
-simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
-  if (!is_valid) {
-    return;
-  }
-  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
-  if (new_buffer.get() == nullptr) {
-    set_valid(false);
-    return;
+    return NUMBER_ERROR;
   }
-  std::memcpy(new_buffer.get(), buffer.get(), position);
-  buffer.swap(new_buffer);
-  capacity = desired_capacity;
-}
 
-simdjson_inline void string_builder::set_valid(bool valid) noexcept {
-  if (!valid) {
-    is_valid = false;
-    capacity = 0;
-    position = 0;
-    buffer.reset();
-  } else {
-    is_valid = true;
+  auto result = numberparsing::parse_integer_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("int64");
   }
+  return result;
 }
-
-simdjson_inline size_t string_builder::size() const noexcept {
-  return position;
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_double(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
+  }
+  return result;
 }
 
-simdjson_inline void string_builder::append(char c) noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = c;
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double_in_string(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_double_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
   }
+  return result;
 }
 
-simdjson_inline void string_builder::append_null() noexcept {
-  constexpr char null_literal[] = "null";
-  constexpr size_t null_len = sizeof(null_literal) - 1;
-  if (capacity_check(null_len)) {
-    std::memcpy(buffer.get() + position, null_literal, null_len);
-    position += null_len;
-  }
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_bool(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("bool");
+  // We have a boolean if we have either "true" or "false" and the next character is either
+  // a structural character or whitespace. We also check that the length is correct:
+  // "true" and "false" are 4 and 5 characters long, respectively.
+  bool value_true = (max_len >= 4 && !atomparsing::str4ncmp(json, "true") &&
+  (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  bool value_false = (max_len >= 5 && !atomparsing::str4ncmp(json, "false") &&
+  (max_len == 5 || jsoncharutils::is_structural_or_whitespace(json[5])));
+  if(value_true == false && value_false == false) { return incorrect_type_error("Not a boolean"); }
+  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+  advance_root_scalar("bool");
+  return value_true;
 }
 
-simdjson_inline void string_builder::clear() noexcept {
-  position = 0;
-  // if it was invalid, we should try to repair it
-  if (!is_valid) {
-    capacity = 0;
-    buffer.reset();
-    is_valid = true;
+simdjson_inline simdjson_result value_iterator::is_root_null(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("null");
+  bool result = (max_len >= 4 && !atomparsing::str4ncmp(json, "null") &&
+         (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  if(result) { // we have something that looks like a null.
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("null");
+  } else if (json[0] == 'n') {
+    return incorrect_type_error("Not a null but starts with n");
   }
+  return result;
 }
 
-namespace internal {
+simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
 
-template ::value>::type>
-simdjson_really_inline int int_log2(number_type x) {
-  return 63 - leading_zeroes(uint64_t(x) | 1);
+  return _json_iter->skip_child(depth());
 }
 
-simdjson_really_inline int fast_digit_count_32(uint32_t x) {
-  static uint64_t table[] = {
-      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
-      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
-      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
-      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
-      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
-      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
-      42949672960, 42949672960};
-  return uint32_t((x + table[int_log2(x)]) >> 32);
+simdjson_inline value_iterator value_iterator::child() const noexcept {
+  assert_at_child();
+  return { _json_iter, depth()+1, _json_iter->token.position() };
 }
 
-simdjson_really_inline int fast_digit_count_64(uint64_t x) {
-  static uint64_t table[] = {9,
-                             99,
-                             999,
-                             9999,
-                             99999,
-                             999999,
-                             9999999,
-                             99999999,
-                             999999999,
-                             9999999999,
-                             99999999999,
-                             999999999999,
-                             9999999999999,
-                             99999999999999,
-                             999999999999999ULL,
-                             9999999999999999ULL,
-                             99999999999999999ULL,
-                             999999999999999999ULL,
-                             9999999999999999999ULL};
-  int y = (19 * int_log2(x) >> 6);
-  y += x > table[y];
-  return y + 1;
+// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
+// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
+// marked non-inline.
+SIMDJSON_PUSH_DISABLE_WARNINGS
+SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
+simdjson_inline bool value_iterator::is_open() const noexcept {
+  return _json_iter->depth() >= depth();
 }
+SIMDJSON_POP_DISABLE_WARNINGS
 
-template ::value>::type>
-simdjson_really_inline size_t digit_count(number_type v) noexcept {
-  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
-                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
-                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
-  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
-    return fast_digit_count_32(static_cast(v));
-  }
-  else {
-    return fast_digit_count_64(static_cast(v));
-  }
+simdjson_inline bool value_iterator::at_end() const noexcept {
+  return _json_iter->at_end();
 }
-static const char decimal_table[200] = {
-    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
-    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
-    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
-    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
-    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
-    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
-    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
-    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
-    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
-    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
-    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
-    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
-    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
-    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
-    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
-    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
-    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
-};
-} // namespace internal
 
-template 
-simdjson_inline void string_builder::append(number_type v) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_integral::value ||
-                    std::is_floating_point::value,
-                "Unsupported number type");
-  // If C++17 is available, we can 'if constexpr' here.
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    if (v) {
-      constexpr char true_literal[] = "true";
-      constexpr size_t true_len = sizeof(true_literal) - 1;
-      if (capacity_check(true_len)) {
-        std::memcpy(buffer.get() + position, true_literal, true_len);
-        position += true_len;
-      }
-    } else {
-      constexpr char false_literal[] = "false";
-      constexpr size_t false_len = sizeof(false_literal) - 1;
-      if (capacity_check(false_len)) {
-        std::memcpy(buffer.get() + position, false_literal, false_len);
-        position += false_len;
-      }
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      unsigned_type pv = static_cast(v);
-      size_t dc = internal::digit_count(pv);
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      bool negative = v < 0;
-      unsigned_type pv = static_cast(v);
-      if (negative) {
-        pv = 0 - pv; // the 0 is for Microsoft
-      }
-      size_t dc = internal::digit_count(pv);
-      // by always writing the minus sign, we avoid the branch.
-      buffer.get()[position] = '-';
-      position += negative ? 1 : 0;
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
-    constexpr size_t max_number_size = 24;
-    if (capacity_check(max_number_size)) {
-      // We could specialize for float.
-      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
-                                               double(v));
-      position = end - buffer.get();
-    }
-  }
+simdjson_inline bool value_iterator::at_start() const noexcept {
+  return _json_iter->token.position() == start_position();
 }
 
-simdjson_inline void
-string_builder::escape_and_append(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(6 * input.size())) {
-    position += write_string_escaped(input, buffer.get() + position);
-  }
+simdjson_inline bool value_iterator::at_first_field() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  return _json_iter->token.position() == start_position() + 1;
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * input.size())) {
-    buffer.get()[position++] = '"';
-    position += write_string_escaped(input, buffer.get() + position);
-    buffer.get()[position++] = '"';
-  }
+simdjson_inline void value_iterator::abandon() noexcept {
+  _json_iter->abandon();
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(char input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * 1)) {
-    buffer.get()[position++] = '"';
-    std::string_view cinput(&input, 1);
-    position += write_string_escaped(cinput, buffer.get() + position);
-    buffer.get()[position++] = '"';
-  }
+simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
+  return _depth;
 }
-
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(const char *input) noexcept {
-  std::string_view cinput(input);
-  escape_and_append_with_quotes(cinput);
+simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
+  return _json_iter->error;
 }
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
-  escape_and_append_with_quotes(constevalutil::string_constant::value);
+simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
+  return _json_iter->string_buf_loc();
 }
-#endif
-
-simdjson_inline void string_builder::append_raw(const char *c) noexcept {
-  size_t len = std::strlen(c);
-  append_raw(c, len);
+simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
+  return *_json_iter;
 }
-
-simdjson_inline void
-string_builder::append_raw(std::string_view input) noexcept {
-  if (capacity_check(input.size())) {
-    std::memcpy(buffer.get() + position, input.data(), input.size());
-    position += input.size();
-  }
+simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
+  return *_json_iter;
 }
 
-simdjson_inline void string_builder::append_raw(const char *str,
-                                                size_t len) noexcept {
-  if (capacity_check(len)) {
-    std::memcpy(buffer.get() + position, str, len);
-    position += len;
-  }
+simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
+  return _json_iter->peek(start_position());
 }
-#if SIMDJSON_SUPPORTS_CONCEPTS
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-simdjson_inline void string_builder::append(const T &opt) {
-  if (opt) {
-    append(*opt);
-  } else {
-    append_null();
-  }
+simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
+  return _json_iter->peek_length(start_position());
 }
-
-template 
-  requires(require_custom_serialization)
-simdjson_inline void string_builder::append(T &&val) {
-  serialize(*this, std::forward(val));
+simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
+  return _json_iter->peek_root_length(start_position());
 }
 
-template 
-  requires(std::is_convertible::value ||
-           std::is_same::value)
-simdjson_inline void string_builder::append(const T &value) {
-  escape_and_append_with_quotes(value);
+simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return peek_start(); }
+
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  return _json_iter->peek();
 }
-#endif
 
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-// Support for range-based appending (std::ranges::view, etc.)
-template 
-  requires(!std::is_convertible::value && !require_custom_serialization)
-simdjson_inline void string_builder::append(const R &range) noexcept {
-  auto it = std::ranges::begin(range);
-  auto end = std::ranges::end(range);
-  if constexpr (concepts::is_pair>) {
-    start_object();
+simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return; }
 
-    if (it == end) {
-      end_object();
-      return; // Handle empty range
-    }
-    // Append first item without leading comma
-    append_key_value(it->first, it->second);
-    ++it;
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
+}
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append_key_value(it->first, it->second);
-    }
-    end_object();
+simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
+  logger::log_start_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  const uint8_t *json;
+  if (!is_at_start()) {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
+#endif
+    json = peek_start();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
   } else {
-    start_array();
-    if (it == end) {
-      end_array();
-      return; // Handle empty range
-    }
+    assert_at_start();
+    /**
+     * We should be prudent. Let us peek. If it is not the right type, we
+     * return an error. Only once we have determined that we have the right
+     * type are we allowed to advance!
+     */
+    json = _json_iter->peek();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+    _json_iter->return_current_and_advance();
+  }
 
-    // Append first item without leading comma
-    append(*it);
-    ++it;
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append(*it);
-    }
-    end_array();
-  }
+  return SUCCESS;
 }
 
-#endif
 
-#if SIMDJSON_EXCEPTIONS
-simdjson_inline string_builder::operator std::string() const noexcept(false) {
-  return std::string(operator std::string_view());
-}
+simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
 
-simdjson_inline string_builder::operator std::string_view() const
-    noexcept(false) simdjson_lifetime_bound {
-  return view();
+  assert_at_root();
+  return _json_iter->peek();
 }
-#endif
+simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
 
-simdjson_inline simdjson_result
-string_builder::view() const noexcept {
-  if (!is_valid) {
-    return simdjson::OUT_OF_CAPACITY;
-  }
-  return std::string_view(buffer.get(), position);
+  assert_at_non_root_start();
+  return _json_iter->peek();
 }
 
-simdjson_inline simdjson_result string_builder::c_str() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position] = '\0';
-    return buffer.get();
-  }
-  return simdjson::OUT_OF_CAPACITY;
-}
+simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
 
-simdjson_inline bool string_builder::validate_unicode() const noexcept {
-  return simdjson::validate_utf8(buffer.get(), position);
+  assert_at_root();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
+simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
 
-simdjson_inline void string_builder::start_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '{';
-  }
+  assert_at_non_root_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
 
-simdjson_inline void string_builder::end_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '}';
-  }
+simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
+  logger::log_error(*_json_iter, start_position(), depth(), message);
+  return INCORRECT_TYPE;
 }
 
-simdjson_inline void string_builder::start_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '[';
-  }
+simdjson_inline bool value_iterator::is_at_start() const noexcept {
+  return position() == start_position();
 }
 
-simdjson_inline void string_builder::end_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ']';
-  }
+simdjson_inline bool value_iterator::is_at_key() const noexcept {
+  // Keys are at the same depth as the object.
+  // Note here that we could be safer and check that we are within an object,
+  // but we do not.
+  //
+  // As long as we are at the object's depth, in a valid document,
+  // we will only ever be at { , : or the actual string key: ".
+  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
 }
 
-simdjson_inline void string_builder::append_comma() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ',';
-  }
+simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
+  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
+  auto delta = position() - start_position();
+  return delta == 1 || delta == 2;
 }
 
-simdjson_inline void string_builder::append_colon() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ':';
-  }
+inline void value_iterator::assert_at_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
 }
 
-template 
-simdjson_inline void
-string_builder::append_key_value(key_type key, value_type value) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_convertible::value,
-                "Unsupported key type");
-  escape_and_append_with_quotes(key);
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+inline void value_iterator::assert_at_container_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
 }
 
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void
-string_builder::append_key_value(value_type value) noexcept {
-  escape_and_append_with_quotes();
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+inline void value_iterator::assert_at_next() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
 }
-#endif
-
-} // namespace builder
-} // namespace ppc64
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-/* end file simdjson/generic/ondemand/json_string_builder-inl.h for ppc64 */
-/* including simdjson/generic/ondemand/json_builder.h for ppc64: #include "simdjson/generic/ondemand/json_builder.h" */
-/* begin file simdjson/generic/ondemand/json_builder.h for ppc64 */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_BUILDER_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-#if SIMDJSON_STATIC_REFLECTION
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-// #include  // for std::define_static_string - header not available yet
-
-namespace simdjson {
-namespace ppc64 {
-namespace builder {
 
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  auto it = t.begin();
-  auto end = t.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
-  }
-  b.append(']');
+simdjson_inline void value_iterator::move_at_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position);
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-constexpr void atom(string_builder &b, const T &t) {
-  b.escape_and_append_with_quotes(t);
+simdjson_inline void value_iterator::move_at_container_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position + 1);
 }
 
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &m) {
-  if (m.empty()) {
-    b.append_raw("{}");
-    return;
-  }
-  b.append('{');
-  bool first = true;
-  for (const auto& [key, value] : m) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    // Keys must be convertible to string_view per the concept
-    b.escape_and_append_with_quotes(key);
-    b.append(':');
-    atom(b, value);
-  }
-  b.append('}');
+simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_array();
 }
 
+simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_object();
+}
 
-template::value && !std::is_same_v>::type>
-constexpr void atom(string_builder &b, const number_type t) {
-  b.append(t);
+inline void value_iterator::assert_at_child() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
+  SIMDJSON_ASSUME( _depth > 0 );
 }
 
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, t.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline void value_iterator::assert_at_root() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth == 1 );
 }
 
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &opt) {
-  if (opt) {
-    atom(b, opt.value());
-  } else {
-    b.append_raw("null");
-  }
+inline void value_iterator::assert_at_non_root_start() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth > 1 );
 }
 
-// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &ptr) {
-  if (ptr) {
-    atom(b, *ptr);
-  } else {
-    b.append_raw("null");
-  }
+inline void value_iterator::assert_is_valid() const noexcept {
+  SIMDJSON_ASSUME( _json_iter != nullptr );
 }
 
-// Support for enums - serialize as string representation using expand approach from P2996R12
-template 
-  requires(std::is_enum_v && !require_custom_serialization)
-void atom(string_builder &b, const T &e) {
-#if SIMDJSON_STATIC_REFLECTION
-  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
-  template for (constexpr auto enum_val : enumerators) {
-    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
-    if (e == [:enum_val:]) {
-      b.append_raw(enum_str);
-      return;
-    }
-  };
-  // Fallback to integer if enum value not found
-  atom(b, static_cast>(e));
-#else
-  // Fallback: serialize as integer if reflection not available
-  atom(b, static_cast>(e));
-#endif
+simdjson_inline bool value_iterator::is_valid() const noexcept {
+  return _json_iter != nullptr;
 }
 
-// Support for appendable containers that don't have operator[] (sets, etc.)
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &container) {
-  if (container.empty()) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  bool first = true;
-  for (const auto& item : container) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    atom(b, item);
+simdjson_inline simdjson_result value_iterator::type() const noexcept {
+  switch (*peek_start()) {
+    case '{':
+      return json_type::object;
+    case '[':
+      return json_type::array;
+    case '"':
+      return json_type::string;
+    case 'n':
+      return json_type::null;
+    case 't': case 'f':
+      return json_type::boolean;
+    case '-':
+    case '0': case '1': case '2': case '3': case '4':
+    case '5': case '6': case '7': case '8': case '9':
+      return json_type::number;
+    default:
+      return json_type::unknown;
   }
-  b.append(']');
 }
 
-// append functions that delegate to atom functions for primitive types
-template 
-  requires(std::is_arithmetic_v && !std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::start_position() const noexcept {
+  return _start_position;
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::position() const noexcept {
+  return _json_iter->position();
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::end_position() const noexcept {
+  return _json_iter->end_position();
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::last_position() const noexcept {
+  return _json_iter->last_position();
 }
 
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
+  return _json_iter->report_error(error, message);
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
+} // namespace ondemand
+} // namespace westmere
+} // namespace simdjson
 
-// works for struct
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, z.[:dm:]);
-    i++;
-  };
-  b.append('}');
-}
+namespace simdjson {
 
-// works for container that have begin() and end() iterators
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  auto it = z.begin();
-  auto end = z.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
-  }
-  b.append(']');
-}
+simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::value_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-template 
-  requires (require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  b.append(z);
-}
+} // namespace simdjson
 
+#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
+/* end file simdjson/generic/ondemand/value_iterator-inl.h for westmere */
+/* including simdjson/generic/ondemand/serialization-inl.h for westmere: #include "simdjson/generic/ondemand/serialization-inl.h" */
+/* begin file simdjson/generic/ondemand/serialization-inl.h for westmere */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
 
-template 
-simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
-}
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #endif */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+namespace simdjson {
+
+inline std::string_view trim(const std::string_view str) noexcept {
+  // We can almost surely do better by rolling our own find_first_not_of function.
+  size_t first = str.find_first_not_of(" \t\n\r");
+  // If we have the empty string (just white space), then no trimming is possible, and
+  // we return the empty string_view.
+  if (std::string_view::npos == first) { return std::string_view(); }
+  size_t last = str.find_last_not_of(" \t\n\r");
+  return str.substr(first, (last - first + 1));
 }
 
-template 
-string_builder& operator<<(string_builder& b, const Z& z) {
-  append(b, z);
-  return b;
+
+inline simdjson_result to_json_string(westmere::ondemand::document& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// extract_from: Serialize only specific fields from a struct to JSON
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-void extract_from(string_builder &b, const T &obj) {
-  // Helper to check if a field name matches any of the requested fields
-  auto should_extract = [](std::string_view field_name) constexpr -> bool {
-    return ((FieldNames.view() == field_name) || ...);
-  };
+inline simdjson_result to_json_string(westmere::ondemand::document_reference& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
+}
 
-  b.append('{');
-  bool first = true;
+inline simdjson_result to_json_string(westmere::ondemand::value& x) noexcept {
+  /**
+   * If we somehow receive a value that has already been consumed,
+   * then the following code could be in trouble. E.g., we create
+   * an array as needed, but if an array was already created, then
+   * it could be bad.
+   */
+  using namespace westmere::ondemand;
+  westmere::ondemand::json_type t;
+  auto error = x.type().get(t);
+  if(error != SUCCESS) { return error; }
+  switch (t)
+  {
+    case json_type::array:
+    {
+      westmere::ondemand::array array;
+      error = x.get_array().get(array);
+      if(error) { return error; }
+      return to_json_string(array);
+    }
+    case json_type::object:
+    {
+      westmere::ondemand::object object;
+      error = x.get_object().get(object);
+      if(error) { return error; }
+      return to_json_string(object);
+    }
+    default:
+      return trim(x.raw_json_token());
+  }
+}
 
-  // Iterate through all members of T using reflection
-  template for (constexpr auto mem : std::define_static_array(
-      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
+inline simdjson_result to_json_string(westmere::ondemand::object& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
+}
 
-    if constexpr (std::meta::is_public(mem)) {
-      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+inline simdjson_result to_json_string(westmere::ondemand::array& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
+}
 
-      // Only serialize this field if it's in our list of requested fields
-      if constexpr (should_extract(key)) {
-        if (!first) {
-          b.append(',');
-        }
-        first = false;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-        // Serialize the key
-        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
-        b.append_raw(quoted_key);
-        b.append(':');
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-        // Serialize the value
-        atom(b, obj.[:mem:]);
-      }
-    }
-  };
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-  b.append('}');
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
+} // namespace simdjson
 
-} // namespace builder
-} // namespace ppc64
-// Alias the function template to 'to' in the global namespace
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  ppc64::builder::string_builder b(initial_capacity);
-  ppc64::builder::append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+namespace simdjson { namespace westmere { namespace ondemand {
+
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  ppc64::builder::string_builder b(initial_capacity);
-  ppc64::builder::append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
 }
-// Global namespace function for extract_from
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  ppc64::builder::string_builder b(initial_capacity);
-  ppc64::builder::extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace simdjson
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
 
-#endif // SIMDJSON_STATIC_REFLECTION
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::document_reference& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
 
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
+  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
 #endif
-/* end file simdjson/generic/ondemand/json_builder.h for ppc64 */
+}}} // namespace simdjson::westmere::ondemand
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+/* end file simdjson/generic/ondemand/serialization-inl.h for westmere */
 
 // JSON path accessor (compile-time) - must be after inline definitions
-/* including simdjson/generic/ondemand/compile_time_accessors.h for ppc64: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
-/* begin file simdjson/generic/ondemand/compile_time_accessors.h for ppc64 */
+/* including simdjson/generic/ondemand/compile_time_accessors.h for westmere: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
+/* begin file simdjson/generic/ondemand/compile_time_accessors.h for westmere */
 /**
  * Compile-time JSON Path and JSON Pointer accessors using C++26 reflection (P2996)
  *
@@ -107090,7 +140730,7 @@ simdjson_warn_unused simdjson_result extract_from(const T &obj, siz
 #include 
 
 namespace simdjson {
-namespace ppc64 {
+namespace westmere {
 namespace ondemand {
 /***
  * JSONPath implementation for compile-time access
@@ -107101,7 +140741,7 @@ namespace json_path {
 // Note: value type must be fully defined before this header is included
 // This is ensured by including this in amalgamated.h after value-inl.h
 
-using ::simdjson::ppc64::ondemand::value;
+using ::simdjson::westmere::ondemand::value;
 
 // Path step types
 enum class step_type {
@@ -107235,7 +140875,7 @@ struct json_path_parser {
 // Compile-time path accessor generator
 template
 struct path_accessor {
-  using value = ::simdjson::ppc64::ondemand::value;
+  using value = ::simdjson::westmere::ondemand::value;
 
   static constexpr auto parser = json_path_parser();
   static constexpr std::size_t num_steps = parser.count_steps();
@@ -107713,14 +141353,14 @@ struct path_accessor {
 
 // Compile-time path accessor with validation
 template
-inline simdjson_result<::simdjson::ppc64::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::westmere::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::ppc64::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::westmere::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
@@ -107951,135 +141591,112 @@ struct pointer_accessor {
 
 // Compile-time JSON Pointer accessor with validation
 template
-inline simdjson_result<::simdjson::ppc64::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::westmere::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::ppc64::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::westmere::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 } // namespace json_path
 } // namespace ondemand
-} // namespace ppc64
+} // namespace westmere
 } // namespace simdjson
 
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 #endif // SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
 
-/* end file simdjson/generic/ondemand/compile_time_accessors.h for ppc64 */
+/* end file simdjson/generic/ondemand/compile_time_accessors.h for westmere */
 
-/* end file simdjson/generic/ondemand/amalgamated.h for ppc64 */
-/* including simdjson/ppc64/end.h: #include "simdjson/ppc64/end.h" */
-/* begin file simdjson/ppc64/end.h */
+/* end file simdjson/generic/ondemand/amalgamated.h for westmere */
+/* including simdjson/westmere/end.h: #include "simdjson/westmere/end.h" */
+/* begin file simdjson/westmere/end.h */
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/ppc64/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
-/* undefining SIMDJSON_IMPLEMENTATION from "ppc64" */
+#if !SIMDJSON_CAN_ALWAYS_RUN_WESTMERE
+SIMDJSON_UNTARGET_REGION
+#endif
+
+/* undefining SIMDJSON_IMPLEMENTATION from "westmere" */
 #undef SIMDJSON_IMPLEMENTATION
-/* end file simdjson/ppc64/end.h */
+/* end file simdjson/westmere/end.h */
 
-#endif // SIMDJSON_PPC64_ONDEMAND_H
-/* end file simdjson/ppc64/ondemand.h */
-#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(westmere)
-/* including simdjson/westmere/ondemand.h: #include "simdjson/westmere/ondemand.h" */
-/* begin file simdjson/westmere/ondemand.h */
-#ifndef SIMDJSON_WESTMERE_ONDEMAND_H
-#define SIMDJSON_WESTMERE_ONDEMAND_H
+#endif // SIMDJSON_WESTMERE_IMPLEMENTATION_H
+/* end file simdjson/westmere/ondemand.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(lsx)
+/* including simdjson/lsx/ondemand.h: #include "simdjson/lsx/ondemand.h" */
+/* begin file simdjson/lsx/ondemand.h */
+#ifndef SIMDJSON_LSX_ONDEMAND_H
+#define SIMDJSON_LSX_ONDEMAND_H
 
-/* including simdjson/westmere/begin.h: #include "simdjson/westmere/begin.h" */
-/* begin file simdjson/westmere/begin.h */
-/* defining SIMDJSON_IMPLEMENTATION to "westmere" */
-#define SIMDJSON_IMPLEMENTATION westmere
-/* including simdjson/westmere/base.h: #include "simdjson/westmere/base.h" */
-/* begin file simdjson/westmere/base.h */
-#ifndef SIMDJSON_WESTMERE_BASE_H
-#define SIMDJSON_WESTMERE_BASE_H
+/* including simdjson/lsx/begin.h: #include "simdjson/lsx/begin.h" */
+/* begin file simdjson/lsx/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "lsx" */
+#define SIMDJSON_IMPLEMENTATION lsx
+/* including simdjson/lsx/base.h: #include "simdjson/lsx/base.h" */
+/* begin file simdjson/lsx/base.h */
+#ifndef SIMDJSON_LSX_BASE_H
+#define SIMDJSON_LSX_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #include "simdjson/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_WESTMERE
 namespace simdjson {
 /**
- * Implementation for Westmere (Intel SSE4.2).
+ * Implementation for LSX.
  */
-namespace westmere {
+namespace lsx {
 
 class implementation;
 
 namespace {
 namespace simd {
-
 template  struct simd8;
 template  struct simd8x64;
-
 } // namespace simd
 } // unnamed namespace
 
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
-#endif // SIMDJSON_WESTMERE_BASE_H
-/* end file simdjson/westmere/base.h */
-/* including simdjson/westmere/intrinsics.h: #include "simdjson/westmere/intrinsics.h" */
-/* begin file simdjson/westmere/intrinsics.h */
-#ifndef SIMDJSON_WESTMERE_INTRINSICS_H
-#define SIMDJSON_WESTMERE_INTRINSICS_H
+#endif // SIMDJSON_LSX_BASE_H
+/* end file simdjson/lsx/base.h */
+/* including simdjson/lsx/intrinsics.h: #include "simdjson/lsx/intrinsics.h" */
+/* begin file simdjson/lsx/intrinsics.h */
+#ifndef SIMDJSON_LSX_INTRINSICS_H
+#define SIMDJSON_LSX_INTRINSICS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#if SIMDJSON_VISUAL_STUDIO
-// under clang within visual studio, this will include 
-#include  // visual studio or clang
-#else
-#include  // elsewhere
-#endif // SIMDJSON_VISUAL_STUDIO
-
-
-#if SIMDJSON_CLANG_VISUAL_STUDIO
-/**
- * You are not supposed, normally, to include these
- * headers directly. Instead you should either include intrin.h
- * or x86intrin.h. However, when compiling with clang
- * under Windows (i.e., when _MSC_VER is set), these headers
- * only get included *if* the corresponding features are detected
- * from macros:
- */
-#include   // for _mm_alignr_epi8
-#include   // for  _mm_clmulepi64_si128
-#endif
-
-static_assert(sizeof(__m128i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for westmere");
-
-#endif // SIMDJSON_WESTMERE_INTRINSICS_H
-/* end file simdjson/westmere/intrinsics.h */
+#include 
 
-#if !SIMDJSON_CAN_ALWAYS_RUN_WESTMERE
-SIMDJSON_TARGET_REGION("sse4.2,pclmul,popcnt")
-#endif
+static_assert(sizeof(__m128i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for LoongArch SX");
 
-/* including simdjson/westmere/bitmanipulation.h: #include "simdjson/westmere/bitmanipulation.h" */
-/* begin file simdjson/westmere/bitmanipulation.h */
-#ifndef SIMDJSON_WESTMERE_BITMANIPULATION_H
-#define SIMDJSON_WESTMERE_BITMANIPULATION_H
+#endif //  SIMDJSON_LSX_INTRINSICS_H
+/* end file simdjson/lsx/intrinsics.h */
+/* including simdjson/lsx/bitmanipulation.h: #include "simdjson/lsx/bitmanipulation.h" */
+/* begin file simdjson/lsx/bitmanipulation.h */
+#ifndef SIMDJSON_LSX_BITMANIPULATION_H
+#define SIMDJSON_LSX_BITMANIPULATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmask.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace {
 
 // We sometimes call trailing_zero on inputs that are zero,
@@ -108091,15 +141708,7 @@ SIMDJSON_NO_SANITIZE_UNDEFINED
 // See issue https://github.com/simdjson/simdjson/issues/1965
 SIMDJSON_NO_SANITIZE_MEMORY
 simdjson_inline int trailing_zeroes(uint64_t input_num) {
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-  unsigned long ret;
-  // Search the mask data from least significant bit (LSB)
-  // to the most significant bit (MSB) for a set bit (1).
-  _BitScanForward64(&ret, input_num);
-  return (int)ret;
-#else // SIMDJSON_REGULAR_VISUAL_STUDIO
   return __builtin_ctzll(input_num);
-#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
 }
 
 /* result might be undefined when input_num is zero */
@@ -108109,59 +141718,36 @@ simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
 
 /* result might be undefined when input_num is zero */
 simdjson_inline int leading_zeroes(uint64_t input_num) {
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-  unsigned long leading_zero = 0;
-  // Search the mask data from most significant bit (MSB)
-  // to least significant bit (LSB) for a set bit (1).
-  if (_BitScanReverse64(&leading_zero, input_num))
-    return (int)(63 - leading_zero);
-  else
-    return 64;
-#else
   return __builtin_clzll(input_num);
-#endif// SIMDJSON_REGULAR_VISUAL_STUDIO
 }
 
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-simdjson_inline unsigned __int64 count_ones(uint64_t input_num) {
-  // note: we do not support legacy 32-bit Windows in this kernel
-  return __popcnt64(input_num);// Visual Studio wants two underscores
-}
-#else
-simdjson_inline long long int count_ones(uint64_t input_num) {
-  return _popcnt64(input_num);
+/* result might be undefined when input_num is zero */
+simdjson_inline int count_ones(uint64_t input_num) {
+  return __lsx_vpickve2gr_w(__lsx_vpcnt_d(__m128i(v2u64{input_num, 0})), 0);
 }
-#endif
 
-simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
-                                uint64_t *result) {
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-  return _addcarry_u64(0, value1, value2,
-                       reinterpret_cast(result));
-#else
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {
   return __builtin_uaddll_overflow(value1, value2,
                                    reinterpret_cast(result));
-#endif
 }
 
 } // unnamed namespace
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
-#endif // SIMDJSON_WESTMERE_BITMANIPULATION_H
-/* end file simdjson/westmere/bitmanipulation.h */
-/* including simdjson/westmere/bitmask.h: #include "simdjson/westmere/bitmask.h" */
-/* begin file simdjson/westmere/bitmask.h */
-#ifndef SIMDJSON_WESTMERE_BITMASK_H
-#define SIMDJSON_WESTMERE_BITMASK_H
+#endif // SIMDJSON_LSX_BITMANIPULATION_H
+/* end file simdjson/lsx/bitmanipulation.h */
+/* including simdjson/lsx/bitmask.h: #include "simdjson/lsx/bitmask.h" */
+/* begin file simdjson/lsx/bitmask.h */
+#ifndef SIMDJSON_LSX_BITMASK_H
+#define SIMDJSON_LSX_BITMASK_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace {
 
 //
@@ -108169,162 +141755,89 @@ namespace {
 //
 // For example, prefix_xor(00100100) == 00011100
 //
-simdjson_inline uint64_t prefix_xor(const uint64_t bitmask) {
-  // There should be no such thing with a processing supporting avx2
-  // but not clmul.
-  __m128i all_ones = _mm_set1_epi8('\xFF');
-  __m128i result = _mm_clmulepi64_si128(_mm_set_epi64x(0ULL, bitmask), all_ones, 0);
-  return _mm_cvtsi128_si64(result);
+simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
+  bitmask ^= bitmask << 1;
+  bitmask ^= bitmask << 2;
+  bitmask ^= bitmask << 4;
+  bitmask ^= bitmask << 8;
+  bitmask ^= bitmask << 16;
+  bitmask ^= bitmask << 32;
+  return bitmask;
 }
 
 } // unnamed namespace
-} // namespace westmere
-} // namespace simdjson
-
-#endif // SIMDJSON_WESTMERE_BITMASK_H
-/* end file simdjson/westmere/bitmask.h */
-/* including simdjson/westmere/numberparsing_defs.h: #include "simdjson/westmere/numberparsing_defs.h" */
-/* begin file simdjson/westmere/numberparsing_defs.h */
-#ifndef SIMDJSON_WESTMERE_NUMBERPARSING_DEFS_H
-#define SIMDJSON_WESTMERE_NUMBERPARSING_DEFS_H
-
-/* including simdjson/westmere/base.h: #include "simdjson/westmere/base.h" */
-/* begin file simdjson/westmere/base.h */
-#ifndef SIMDJSON_WESTMERE_BASE_H
-#define SIMDJSON_WESTMERE_BASE_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/base.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-// The constructor may be executed on any host, so we take care not to use SIMDJSON_TARGET_WESTMERE
-namespace simdjson {
-/**
- * Implementation for Westmere (Intel SSE4.2).
- */
-namespace westmere {
-
-class implementation;
-
-namespace {
-namespace simd {
-
-template  struct simd8;
-template  struct simd8x64;
-
-} // namespace simd
-} // unnamed namespace
-
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
-#endif // SIMDJSON_WESTMERE_BASE_H
-/* end file simdjson/westmere/base.h */
-/* including simdjson/westmere/intrinsics.h: #include "simdjson/westmere/intrinsics.h" */
-/* begin file simdjson/westmere/intrinsics.h */
-#ifndef SIMDJSON_WESTMERE_INTRINSICS_H
-#define SIMDJSON_WESTMERE_INTRINSICS_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-#if SIMDJSON_VISUAL_STUDIO
-// under clang within visual studio, this will include 
-#include  // visual studio or clang
-#else
-#include  // elsewhere
-#endif // SIMDJSON_VISUAL_STUDIO
-
-
-#if SIMDJSON_CLANG_VISUAL_STUDIO
-/**
- * You are not supposed, normally, to include these
- * headers directly. Instead you should either include intrin.h
- * or x86intrin.h. However, when compiling with clang
- * under Windows (i.e., when _MSC_VER is set), these headers
- * only get included *if* the corresponding features are detected
- * from macros:
- */
-#include   // for _mm_alignr_epi8
-#include   // for  _mm_clmulepi64_si128
 #endif
-
-static_assert(sizeof(__m128i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for westmere");
-
-#endif // SIMDJSON_WESTMERE_INTRINSICS_H
-/* end file simdjson/westmere/intrinsics.h */
+/* end file simdjson/lsx/bitmask.h */
+/* including simdjson/lsx/numberparsing_defs.h: #include "simdjson/lsx/numberparsing_defs.h" */
+/* begin file simdjson/lsx/numberparsing_defs.h */
+#ifndef SIMDJSON_LSX_NUMBERPARSING_DEFS_H
+#define SIMDJSON_LSX_NUMBERPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/intrinsics.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
+#include 
+
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace numberparsing {
 
+// we don't have appropriate instructions, so let us use a scalar function
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
 /** @private */
 static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
-  // this actually computes *16* values so we are being wasteful.
-  const __m128i ascii0 = _mm_set1_epi8('0');
-  const __m128i mul_1_10 =
-      _mm_setr_epi8(10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1);
-  const __m128i mul_1_100 = _mm_setr_epi16(100, 1, 100, 1, 100, 1, 100, 1);
-  const __m128i mul_1_10000 =
-      _mm_setr_epi16(10000, 1, 10000, 1, 10000, 1, 10000, 1);
-  const __m128i input = _mm_sub_epi8(
-      _mm_loadu_si128(reinterpret_cast(chars)), ascii0);
-  const __m128i t1 = _mm_maddubs_epi16(input, mul_1_10);
-  const __m128i t2 = _mm_madd_epi16(t1, mul_1_100);
-  const __m128i t3 = _mm_packus_epi32(t2, t2);
-  const __m128i t4 = _mm_madd_epi16(t3, mul_1_10000);
-  return _mm_cvtsi128_si32(
-      t4); // only captures the sum of the first 8 digits, drop the rest
+  uint64_t val;
+  std::memcpy(&val, chars, sizeof(uint64_t));
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
 }
 
-/** @private */
 simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
   internal::value128 answer;
-#if SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
-#if SIMDJSON_IS_ARM64
-  // ARM64 has native support for 64-bit multiplications, no need to emultate
-  answer.high = __umulh(value1, value2);
-  answer.low = value1 * value2;
-#else
-  answer.low = _umul128(value1, value2, &answer.high); // _umul128 not available on ARM64
-#endif // SIMDJSON_IS_ARM64
-#else // SIMDJSON_REGULAR_VISUAL_STUDIO || SIMDJSON_IS_32BITS
   __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
   answer.low = uint64_t(r);
   answer.high = uint64_t(r >> 64);
-#endif
   return answer;
 }
 
 } // namespace numberparsing
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
+#ifndef SIMDJSON_SWAR_NUMBER_PARSING
+#if SIMDJSON_IS_BIG_ENDIAN
+#define SIMDJSON_SWAR_NUMBER_PARSING 0
+#else
 #define SIMDJSON_SWAR_NUMBER_PARSING 1
+#endif
+#endif
 
-#endif //  SIMDJSON_WESTMERE_NUMBERPARSING_DEFS_H
-/* end file simdjson/westmere/numberparsing_defs.h */
-/* including simdjson/westmere/simd.h: #include "simdjson/westmere/simd.h" */
-/* begin file simdjson/westmere/simd.h */
-#ifndef SIMDJSON_WESTMERE_SIMD_H
-#define SIMDJSON_WESTMERE_SIMD_H
+#endif // SIMDJSON_LSX_NUMBERPARSING_DEFS_H
+/* end file simdjson/lsx/numberparsing_defs.h */
+/* including simdjson/lsx/simd.h: #include "simdjson/lsx/simd.h" */
+/* begin file simdjson/lsx/simd.h */
+#ifndef SIMDJSON_LSX_SIMD_H
+#define SIMDJSON_LSX_SIMD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmanipulation.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace {
 namespace simd {
 
+  // Forward-declared so they can be used by splat and friends.
   template
   struct base {
     __m128i value;
@@ -108338,56 +141851,61 @@ namespace simd {
     // Conversion to SIMD register
     simdjson_inline operator const __m128i&() const { return this->value; }
     simdjson_inline operator __m128i&() { return this->value; }
+    simdjson_inline operator const v16i8&() const { return (v16i8&)this->value; }
+    simdjson_inline operator v16i8&() { return (v16i8&)this->value; }
 
     // Bit operations
-    simdjson_inline Child operator|(const Child other) const { return _mm_or_si128(*this, other); }
-    simdjson_inline Child operator&(const Child other) const { return _mm_and_si128(*this, other); }
-    simdjson_inline Child operator^(const Child other) const { return _mm_xor_si128(*this, other); }
-    simdjson_inline Child bit_andnot(const Child other) const { return _mm_andnot_si128(other, *this); }
+    simdjson_inline Child operator|(const Child other) const { return __lsx_vor_v(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return __lsx_vand_v(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return __lsx_vxor_v(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return __lsx_vandn_v(other, *this); }
     simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
     simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
     simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
   };
 
+  // Forward-declared so they can be used by splat and friends.
+  template
+  struct simd8;
+
   template>
   struct base8: base> {
-    typedef uint16_t bitmask_t;
-    typedef uint32_t bitmask2_t;
-
     simdjson_inline base8() : base>() {}
     simdjson_inline base8(const __m128i _value) : base>(_value) {}
 
-    friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return _mm_cmpeq_epi8(lhs, rhs); }
+    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return __lsx_vseq_b(lhs, rhs); }
 
     static const int SIZE = sizeof(base>::value);
 
     template
     simdjson_inline simd8 prev(const simd8 prev_chunk) const {
-      return _mm_alignr_epi8(*this, prev_chunk, 16 - N);
+      return __lsx_vor_v(__lsx_vbsll_v(*this, N), __lsx_vbsrl_v(prev_chunk, 16 - N));
     }
   };
 
   // SIMD byte mask type (returned by things like eq and gt)
   template<>
   struct simd8: base8 {
-    static simdjson_inline simd8 splat(bool _value) { return _mm_set1_epi8(uint8_t(-(!!_value))); }
+    static simdjson_inline simd8 splat(bool _value) {
+      return __lsx_vreplgr2vr_b(uint8_t(-(!!_value)));
+    }
 
     simdjson_inline simd8() : base8() {}
     simdjson_inline simd8(const __m128i _value) : base8(_value) {}
     // Splat constructor
     simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
 
-    simdjson_inline int to_bitmask() const { return _mm_movemask_epi8(*this); }
-    simdjson_inline bool any() const { return !_mm_testz_si128(*this, *this); }
+    simdjson_inline int to_bitmask() const { return __lsx_vpickve2gr_w(__lsx_vmskltz_b(*this), 0); }
+    simdjson_inline bool any() const { return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(*this), 0); }
     simdjson_inline simd8 operator~() const { return *this ^ true; }
   };
 
   template
   struct base8_numeric: base8 {
-    static simdjson_inline simd8 splat(T _value) { return _mm_set1_epi8(_value); }
-    static simdjson_inline simd8 zero() { return _mm_setzero_si128(); }
+    static simdjson_inline simd8 splat(T _value) { return __lsx_vreplgr2vr_b(_value); }
+    static simdjson_inline simd8 zero() { return __lsx_vldi(0); }
     static simdjson_inline simd8 load(const T values[16]) {
-      return _mm_loadu_si128(reinterpret_cast(values));
+      return __lsx_vld(reinterpret_cast(values), 0);
     }
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     static simdjson_inline simd8 repeat_16(
@@ -108404,487 +141922,50 @@ namespace simd {
     simdjson_inline base8_numeric(const __m128i _value) : base8(_value) {}
 
     // Store to array
-    simdjson_inline void store(T dst[16]) const { return _mm_storeu_si128(reinterpret_cast<__m128i *>(dst), *this); }
-
-    // Override to distinguish from bool version
-    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
+    simdjson_inline void store(T dst[16]) const {
+      return __lsx_vst(*this, reinterpret_cast<__m128i *>(dst), 0);
+    }
 
     // Addition/subtraction are the same for signed and unsigned
-    simdjson_inline simd8 operator+(const simd8 other) const { return _mm_add_epi8(*this, other); }
-    simdjson_inline simd8 operator-(const simd8 other) const { return _mm_sub_epi8(*this, other); }
+    simdjson_inline simd8 operator+(const simd8 other) const { return __lsx_vadd_b(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __lsx_vsub_b(*this, other); }
     simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
     simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
 
-    // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
-    template
-    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
-      return _mm_shuffle_epi8(lookup_table, *this);
-    }
-
-    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
-    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
-    // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
-    // get written.
-    // Design consideration: it seems like a function with the
-    // signature simd8 compress(uint32_t mask) would be
-    // sensible, but the AVX ISA makes this kind of approach difficult.
-    template
-    simdjson_inline void compress(uint16_t mask, L * output) const {
-      using internal::thintable_epi8;
-      using internal::BitsSetTable256mul2;
-      using internal::pshufb_combine_table;
-      // this particular implementation was inspired by work done by @animetosho
-      // we do it in two steps, first 8 bytes and then second 8 bytes
-      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
-      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
-      // next line just loads the 64-bit values thintable_epi8[mask1] and
-      // thintable_epi8[mask2] into a 128-bit register, using only
-      // two instructions on most compilers.
-      __m128i shufmask =  _mm_set_epi64x(thintable_epi8[mask2], thintable_epi8[mask1]);
-      // we increment by 0x08 the second half of the mask
-      shufmask =
-      _mm_add_epi8(shufmask, _mm_set_epi32(0x08080808, 0x08080808, 0, 0));
-      // this is the version "nearly pruned"
-      __m128i pruned = _mm_shuffle_epi8(*this, shufmask);
-      // we still need to put the two halves together.
-      // we compute the popcount of the first half:
-      int pop1 = BitsSetTable256mul2[mask1];
-      // then load the corresponding mask, what it does is to write
-      // only the first pop1 bytes from the first 8 bytes, and then
-      // it fills in with the bytes from the second 8 bytes + some filling
-      // at the end.
-      __m128i compactmask =
-      _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop1 * 8));
-      __m128i answer = _mm_shuffle_epi8(pruned, compactmask);
-      _mm_storeu_si128(reinterpret_cast<__m128i *>(output), answer);
-    }
-
-    template
-    simdjson_inline simd8 lookup_16(
-        L replace0,  L replace1,  L replace2,  L replace3,
-        L replace4,  L replace5,  L replace6,  L replace7,
-        L replace8,  L replace9,  L replace10, L replace11,
-        L replace12, L replace13, L replace14, L replace15) const {
-      return lookup_16(simd8::repeat_16(
-        replace0,  replace1,  replace2,  replace3,
-        replace4,  replace5,  replace6,  replace7,
-        replace8,  replace9,  replace10, replace11,
-        replace12, replace13, replace14, replace15
-      ));
-    }
-  };
-
-  // Signed bytes
-  template<>
-  struct simd8 : base8_numeric {
-    simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
-    // Splat constructor
-    simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
-    // Array constructor
-    simdjson_inline simd8(const int8_t* values) : simd8(load(values)) {}
-    // Member-by-member initialization
-    simdjson_inline simd8(
-      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
-      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
-    ) : simd8(_mm_setr_epi8(
-      v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15
-    )) {}
-    // Repeat 16 values as many times as necessary (usually for lookup tables)
-    simdjson_inline static simd8 repeat_16(
-      int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
-      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
-    ) {
-      return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15
-      );
-    }
-
-    // Order-sensitive comparisons
-    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epi8(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epi8(*this, other); }
-    simdjson_inline simd8 operator>(const simd8 other) const { return _mm_cmpgt_epi8(*this, other); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return _mm_cmpgt_epi8(other, *this); }
-  };
-
-  // Unsigned bytes
-  template<>
-  struct simd8: base8_numeric {
-    simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
-    // Splat constructor
-    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
-    // Array constructor
-    simdjson_inline simd8(const uint8_t* values) : simd8(load(values)) {}
-    // Member-by-member initialization
-    simdjson_inline simd8(
-      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
-      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
-    ) : simd8(_mm_setr_epi8(
-      v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15
-    )) {}
-    // Repeat 16 values as many times as necessary (usually for lookup tables)
-    simdjson_inline static simd8 repeat_16(
-      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
-      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
-    ) {
-      return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15
-      );
-    }
-
-    // Saturated math
-    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm_adds_epu8(*this, other); }
-    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm_subs_epu8(*this, other); }
-
-    // Order-specific operations
-    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epu8(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epu8(*this, other); }
-    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
-    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
-    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
-    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
-    simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
-    simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
-    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
-
-    // Bit-specific operations
-    simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
-    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
-    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
-    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
-    simdjson_inline bool is_ascii() const { return _mm_movemask_epi8(*this) == 0; }
-    simdjson_inline bool bits_not_set_anywhere() const { return _mm_testz_si128(*this, *this); }
-    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
-    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return _mm_testz_si128(*this, bits); }
-    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
-    template
-    simdjson_inline simd8 shr() const { return simd8(_mm_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
-    template
-    simdjson_inline simd8 shl() const { return simd8(_mm_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
-    // Get one of the bits and make a bitmask out of it.
-    // e.g. value.get_bit<7>() gets the high bit
-    template
-    simdjson_inline int get_bit() const { return _mm_movemask_epi8(_mm_slli_epi16(*this, 7-N)); }
-  };
-
-  template
-  struct simd8x64 {
-    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
-    static_assert(NUM_CHUNKS == 4, "Westmere kernel should use four registers per 64-byte block.");
-    const simd8 chunks[NUM_CHUNKS];
-
-    simd8x64(const simd8x64& o) = delete; // no copy allowed
-    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
-    simd8x64() = delete; // no default constructor allowed
-
-    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
-    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
-
-    simdjson_inline void store(T ptr[64]) const {
-      this->chunks[0].store(ptr+sizeof(simd8)*0);
-      this->chunks[1].store(ptr+sizeof(simd8)*1);
-      this->chunks[2].store(ptr+sizeof(simd8)*2);
-      this->chunks[3].store(ptr+sizeof(simd8)*3);
-    }
-
-    simdjson_inline simd8 reduce_or() const {
-      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
-    }
-
-    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
-      this->chunks[0].compress(uint16_t(mask), output);
-      this->chunks[1].compress(uint16_t(mask >> 16), output + 16 - count_ones(mask & 0xFFFF));
-      this->chunks[2].compress(uint16_t(mask >> 32), output + 32 - count_ones(mask & 0xFFFFFFFF));
-      this->chunks[3].compress(uint16_t(mask >> 48), output + 48 - count_ones(mask & 0xFFFFFFFFFFFF));
-      return 64 - count_ones(mask);
-    }
-
-    simdjson_inline uint64_t to_bitmask() const {
-      uint64_t r0 = uint32_t(this->chunks[0].to_bitmask() );
-      uint64_t r1 =          this->chunks[1].to_bitmask() ;
-      uint64_t r2 =          this->chunks[2].to_bitmask() ;
-      uint64_t r3 =          this->chunks[3].to_bitmask() ;
-      return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
-    }
-
-    simdjson_inline uint64_t eq(const T m) const {
-      const simd8 mask = simd8::splat(m);
-      return  simd8x64(
-        this->chunks[0] == mask,
-        this->chunks[1] == mask,
-        this->chunks[2] == mask,
-        this->chunks[3] == mask
-      ).to_bitmask();
-    }
-
-    simdjson_inline uint64_t eq(const simd8x64 &other) const {
-      return  simd8x64(
-        this->chunks[0] == other.chunks[0],
-        this->chunks[1] == other.chunks[1],
-        this->chunks[2] == other.chunks[2],
-        this->chunks[3] == other.chunks[3]
-      ).to_bitmask();
-    }
-
-    simdjson_inline uint64_t lteq(const T m) const {
-      const simd8 mask = simd8::splat(m);
-      return  simd8x64(
-        this->chunks[0] <= mask,
-        this->chunks[1] <= mask,
-        this->chunks[2] <= mask,
-        this->chunks[3] <= mask
-      ).to_bitmask();
-    }
-  }; // struct simd8x64
-
-} // namespace simd
-} // unnamed namespace
-} // namespace westmere
-} // namespace simdjson
-
-#endif // SIMDJSON_WESTMERE_SIMD_INPUT_H
-/* end file simdjson/westmere/simd.h */
-/* including simdjson/westmere/stringparsing_defs.h: #include "simdjson/westmere/stringparsing_defs.h" */
-/* begin file simdjson/westmere/stringparsing_defs.h */
-#ifndef SIMDJSON_WESTMERE_STRINGPARSING_DEFS_H
-#define SIMDJSON_WESTMERE_STRINGPARSING_DEFS_H
-
-/* including simdjson/westmere/bitmanipulation.h: #include "simdjson/westmere/bitmanipulation.h" */
-/* begin file simdjson/westmere/bitmanipulation.h */
-#ifndef SIMDJSON_WESTMERE_BITMANIPULATION_H
-#define SIMDJSON_WESTMERE_BITMANIPULATION_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/intrinsics.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-namespace westmere {
-namespace {
-
-// We sometimes call trailing_zero on inputs that are zero,
-// but the algorithms do not end up using the returned value.
-// Sadly, sanitizers are not smart enough to figure it out.
-SIMDJSON_NO_SANITIZE_UNDEFINED
-// This function can be used safely even if not all bytes have been
-// initialized.
-// See issue https://github.com/simdjson/simdjson/issues/1965
-SIMDJSON_NO_SANITIZE_MEMORY
-simdjson_inline int trailing_zeroes(uint64_t input_num) {
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-  unsigned long ret;
-  // Search the mask data from least significant bit (LSB)
-  // to the most significant bit (MSB) for a set bit (1).
-  _BitScanForward64(&ret, input_num);
-  return (int)ret;
-#else // SIMDJSON_REGULAR_VISUAL_STUDIO
-  return __builtin_ctzll(input_num);
-#endif // SIMDJSON_REGULAR_VISUAL_STUDIO
-}
-
-/* result might be undefined when input_num is zero */
-simdjson_inline uint64_t clear_lowest_bit(uint64_t input_num) {
-  return input_num & (input_num-1);
-}
-
-/* result might be undefined when input_num is zero */
-simdjson_inline int leading_zeroes(uint64_t input_num) {
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-  unsigned long leading_zero = 0;
-  // Search the mask data from most significant bit (MSB)
-  // to least significant bit (LSB) for a set bit (1).
-  if (_BitScanReverse64(&leading_zero, input_num))
-    return (int)(63 - leading_zero);
-  else
-    return 64;
-#else
-  return __builtin_clzll(input_num);
-#endif// SIMDJSON_REGULAR_VISUAL_STUDIO
-}
-
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-simdjson_inline unsigned __int64 count_ones(uint64_t input_num) {
-  // note: we do not support legacy 32-bit Windows in this kernel
-  return __popcnt64(input_num);// Visual Studio wants two underscores
-}
-#else
-simdjson_inline long long int count_ones(uint64_t input_num) {
-  return _popcnt64(input_num);
-}
-#endif
-
-simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
-                                uint64_t *result) {
-#if SIMDJSON_REGULAR_VISUAL_STUDIO
-  return _addcarry_u64(0, value1, value2,
-                       reinterpret_cast(result));
-#else
-  return __builtin_uaddll_overflow(value1, value2,
-                                   reinterpret_cast(result));
-#endif
-}
-
-} // unnamed namespace
-} // namespace westmere
-} // namespace simdjson
-
-#endif // SIMDJSON_WESTMERE_BITMANIPULATION_H
-/* end file simdjson/westmere/bitmanipulation.h */
-/* including simdjson/westmere/simd.h: #include "simdjson/westmere/simd.h" */
-/* begin file simdjson/westmere/simd.h */
-#ifndef SIMDJSON_WESTMERE_SIMD_H
-#define SIMDJSON_WESTMERE_SIMD_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/bitmanipulation.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-namespace westmere {
-namespace {
-namespace simd {
-
-  template
-  struct base {
-    __m128i value;
-
-    // Zero constructor
-    simdjson_inline base() : value{__m128i()} {}
-
-    // Conversion from SIMD register
-    simdjson_inline base(const __m128i _value) : value(_value) {}
-
-    // Conversion to SIMD register
-    simdjson_inline operator const __m128i&() const { return this->value; }
-    simdjson_inline operator __m128i&() { return this->value; }
-
-    // Bit operations
-    simdjson_inline Child operator|(const Child other) const { return _mm_or_si128(*this, other); }
-    simdjson_inline Child operator&(const Child other) const { return _mm_and_si128(*this, other); }
-    simdjson_inline Child operator^(const Child other) const { return _mm_xor_si128(*this, other); }
-    simdjson_inline Child bit_andnot(const Child other) const { return _mm_andnot_si128(other, *this); }
-    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
-    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
-    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
-  };
-
-  template>
-  struct base8: base> {
-    typedef uint16_t bitmask_t;
-    typedef uint32_t bitmask2_t;
-
-    simdjson_inline base8() : base>() {}
-    simdjson_inline base8(const __m128i _value) : base>(_value) {}
-
-    friend simdjson_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return _mm_cmpeq_epi8(lhs, rhs); }
-
-    static const int SIZE = sizeof(base>::value);
-
-    template
-    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
-      return _mm_alignr_epi8(*this, prev_chunk, 16 - N);
-    }
-  };
-
-  // SIMD byte mask type (returned by things like eq and gt)
-  template<>
-  struct simd8: base8 {
-    static simdjson_inline simd8 splat(bool _value) { return _mm_set1_epi8(uint8_t(-(!!_value))); }
-
-    simdjson_inline simd8() : base8() {}
-    simdjson_inline simd8(const __m128i _value) : base8(_value) {}
-    // Splat constructor
-    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
-
-    simdjson_inline int to_bitmask() const { return _mm_movemask_epi8(*this); }
-    simdjson_inline bool any() const { return !_mm_testz_si128(*this, *this); }
-    simdjson_inline simd8 operator~() const { return *this ^ true; }
-  };
-
-  template
-  struct base8_numeric: base8 {
-    static simdjson_inline simd8 splat(T _value) { return _mm_set1_epi8(_value); }
-    static simdjson_inline simd8 zero() { return _mm_setzero_si128(); }
-    static simdjson_inline simd8 load(const T values[16]) {
-      return _mm_loadu_si128(reinterpret_cast(values));
-    }
-    // Repeat 16 values as many times as necessary (usually for lookup tables)
-    static simdjson_inline simd8 repeat_16(
-      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
-      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
-    ) {
-      return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15
-      );
-    }
-
-    simdjson_inline base8_numeric() : base8() {}
-    simdjson_inline base8_numeric(const __m128i _value) : base8(_value) {}
-
-    // Store to array
-    simdjson_inline void store(T dst[16]) const { return _mm_storeu_si128(reinterpret_cast<__m128i *>(dst), *this); }
-
     // Override to distinguish from bool version
     simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
 
-    // Addition/subtraction are the same for signed and unsigned
-    simdjson_inline simd8 operator+(const simd8 other) const { return _mm_add_epi8(*this, other); }
-    simdjson_inline simd8 operator-(const simd8 other) const { return _mm_sub_epi8(*this, other); }
-    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
-    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
-
     // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
     template
     simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
-      return _mm_shuffle_epi8(lookup_table, *this);
+      return __lsx_vshuf_b(lookup_table, lookup_table, *this);
     }
 
     // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
     // Passing a 0 value for mask would be equivalent to writing out every byte to output.
     // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
     // get written.
-    // Design consideration: it seems like a function with the
-    // signature simd8 compress(uint32_t mask) would be
-    // sensible, but the AVX ISA makes this kind of approach difficult.
     template
     simdjson_inline void compress(uint16_t mask, L * output) const {
       using internal::thintable_epi8;
       using internal::BitsSetTable256mul2;
       using internal::pshufb_combine_table;
-      // this particular implementation was inspired by work done by @animetosho
-      // we do it in two steps, first 8 bytes and then second 8 bytes
+      // this particular implementation was inspired by haswell
+      // lsx do it in 2 steps, first 8 bytes and then second 8 bytes...
       uint8_t mask1 = uint8_t(mask); // least significant 8 bits
-      uint8_t mask2 = uint8_t(mask >> 8); // most significant 8 bits
+      uint8_t mask2 = uint8_t(mask >> 8); // second least significant 8 bits
       // next line just loads the 64-bit values thintable_epi8[mask1] and
-      // thintable_epi8[mask2] into a 128-bit register, using only
-      // two instructions on most compilers.
-      __m128i shufmask =  _mm_set_epi64x(thintable_epi8[mask2], thintable_epi8[mask1]);
-      // we increment by 0x08 the second half of the mask
-      shufmask =
-      _mm_add_epi8(shufmask, _mm_set_epi32(0x08080808, 0x08080808, 0, 0));
+      // thintable_epi8[mask2] into a 128-bit register.
+      __m128i shufmask = {int64_t(thintable_epi8[mask1]), int64_t(thintable_epi8[mask2]) + 0x0808080808080808};
       // this is the version "nearly pruned"
-      __m128i pruned = _mm_shuffle_epi8(*this, shufmask);
-      // we still need to put the two halves together.
-      // we compute the popcount of the first half:
+      __m128i pruned = __lsx_vshuf_b(*this, *this, shufmask);
+      // we still need to put the  pieces back together.
+      // we compute the popcount of the first words:
       int pop1 = BitsSetTable256mul2[mask1];
-      // then load the corresponding mask, what it does is to write
-      // only the first pop1 bytes from the first 8 bytes, and then
-      // it fills in with the bytes from the second 8 bytes + some filling
-      // at the end.
-      __m128i compactmask =
-      _mm_loadu_si128(reinterpret_cast(pshufb_combine_table + pop1 * 8));
-      __m128i answer = _mm_shuffle_epi8(pruned, compactmask);
-      _mm_storeu_si128(reinterpret_cast<__m128i *>(output), answer);
+      // then load the corresponding mask
+      __m128i compactmask = __lsx_vldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop1 * 8);
+      __m128i answer = __lsx_vshuf_b(pruned, pruned, compactmask);
+      __lsx_vst(answer, reinterpret_cast(output), 0);
     }
 
     template
@@ -108910,15 +141991,15 @@ namespace simd {
     // Splat constructor
     simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
     // Array constructor
-    simdjson_inline simd8(const int8_t* values) : simd8(load(values)) {}
+    simdjson_inline simd8(const int8_t values[16]) : simd8(load(values)) {}
     // Member-by-member initialization
     simdjson_inline simd8(
       int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
       int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
-    ) : simd8(_mm_setr_epi8(
+    ) : simd8({
       v0, v1, v2, v3, v4, v5, v6, v7,
       v8, v9, v10,v11,v12,v13,v14,v15
-    )) {}
+      }) {}
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
       int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
@@ -108931,10 +142012,10 @@ namespace simd {
     }
 
     // Order-sensitive comparisons
-    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epi8(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epi8(*this, other); }
-    simdjson_inline simd8 operator>(const simd8 other) const { return _mm_cmpgt_epi8(*this, other); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return _mm_cmpgt_epi8(other, *this); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lsx_vmax_b(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lsx_vmin_b(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return __lsx_vslt_b(other, *this); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return __lsx_vslt_b(*this, other); }
   };
 
   // Unsigned bytes
@@ -108945,15 +142026,15 @@ namespace simd {
     // Splat constructor
     simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
     // Array constructor
-    simdjson_inline simd8(const uint8_t* values) : simd8(load(values)) {}
+    simdjson_inline simd8(const uint8_t values[16]) : simd8(load(values)) {}
     // Member-by-member initialization
     simdjson_inline simd8(
       uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
       uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
-    ) : simd8(_mm_setr_epi8(
+    ) : simd8(__m128i(v16u8{
       v0, v1, v2, v3, v4, v5, v6, v7,
       v8, v9, v10,v11,v12,v13,v14,v15
-    )) {}
+    })) {}
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
       uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
@@ -108966,12 +142047,12 @@ namespace simd {
     }
 
     // Saturated math
-    simdjson_inline simd8 saturating_add(const simd8 other) const { return _mm_adds_epu8(*this, other); }
-    simdjson_inline simd8 saturating_sub(const simd8 other) const { return _mm_subs_epu8(*this, other); }
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return __lsx_vsadd_bu(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __lsx_vssub_bu(*this, other); }
 
     // Order-specific operations
-    simdjson_inline simd8 max_val(const simd8 other) const { return _mm_max_epu8(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return _mm_min_epu8(*this, other); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lsx_vmax_bu(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lsx_vmin_bu(other, *this); }
     // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
     simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
     // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
@@ -108979,33 +142060,32 @@ namespace simd {
     simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
     simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
     simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return this->lt_bits(other).any_bits_set(); }
 
     // Bit-specific operations
     simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
     simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
     simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
     simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
-    simdjson_inline bool is_ascii() const { return _mm_movemask_epi8(*this) == 0; }
-    simdjson_inline bool bits_not_set_anywhere() const { return _mm_testz_si128(*this, *this); }
+    simdjson_inline bool is_ascii() const { return 0 == __lsx_vpickve2gr_w(__lsx_vmskltz_b(*this), 0); }
+    simdjson_inline bool bits_not_set_anywhere() const { return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(*this), 0); }
     simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
-    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const { return _mm_testz_si128(*this, bits); }
+    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const {
+      return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(__lsx_vand_v(*this, bits)), 0);
+    }
     simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
     template
-    simdjson_inline simd8 shr() const { return simd8(_mm_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
-    template
-    simdjson_inline simd8 shl() const { return simd8(_mm_slli_epi16(*this, N)) & uint8_t(0xFFu << N); }
-    // Get one of the bits and make a bitmask out of it.
-    // e.g. value.get_bit<7>() gets the high bit
+    simdjson_inline simd8 shr() const { return simd8(__lsx_vsrli_b(*this, N)); }
     template
-    simdjson_inline int get_bit() const { return _mm_movemask_epi8(_mm_slli_epi16(*this, 7-N)); }
+    simdjson_inline simd8 shl() const { return simd8(__lsx_vslli_b(*this, N)); }
   };
 
   template
   struct simd8x64 {
     static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
-    static_assert(NUM_CHUNKS == 4, "Westmere kernel should use four registers per 64-byte block.");
+    static_assert(NUM_CHUNKS == 4, "LSX kernel should use four registers per 64-byte block.");
     const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
     simd8x64(const simd8x64& o) = delete; // no copy allowed
     simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
@@ -109014,6 +142094,33 @@ namespace simd {
     simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
     simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
 
+    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
+      uint16_t mask1 = uint16_t(mask);
+      uint16_t mask2 = uint16_t(mask >> 16);
+      uint16_t mask3 = uint16_t(mask >> 32);
+      uint16_t mask4 = uint16_t(mask >> 48);
+      __m128i zcnt = __lsx_vpcnt_h(__m128i(v2u64{~mask, 0}));
+      uint64_t zcnt1 = __lsx_vpickve2gr_hu(zcnt, 0);
+      uint64_t zcnt2 = __lsx_vpickve2gr_hu(zcnt, 1);
+      uint64_t zcnt3 = __lsx_vpickve2gr_hu(zcnt, 2);
+      uint64_t zcnt4 = __lsx_vpickve2gr_hu(zcnt, 3);
+      uint8_t *voutput = reinterpret_cast(output);
+      // There should be a critical value which processes in scaler is faster.
+      if (zcnt1)
+        this->chunks[0].compress(mask1, reinterpret_cast(voutput));
+      voutput += zcnt1;
+      if (zcnt2)
+        this->chunks[1].compress(mask2, reinterpret_cast(voutput));
+      voutput += zcnt2;
+      if (zcnt3)
+        this->chunks[2].compress(mask3, reinterpret_cast(voutput));
+      voutput += zcnt3;
+      if (zcnt4)
+        this->chunks[3].compress(mask4, reinterpret_cast(voutput));
+      voutput += zcnt4;
+      return reinterpret_cast(voutput) - reinterpret_cast(output);
+    }
+
     simdjson_inline void store(T ptr[64]) const {
       this->chunks[0].store(ptr+sizeof(simd8)*0);
       this->chunks[1].store(ptr+sizeof(simd8)*1);
@@ -109021,24 +142128,18 @@ namespace simd {
       this->chunks[3].store(ptr+sizeof(simd8)*3);
     }
 
-    simdjson_inline simd8 reduce_or() const {
-      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
-    }
-
-    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
-      this->chunks[0].compress(uint16_t(mask), output);
-      this->chunks[1].compress(uint16_t(mask >> 16), output + 16 - count_ones(mask & 0xFFFF));
-      this->chunks[2].compress(uint16_t(mask >> 32), output + 32 - count_ones(mask & 0xFFFFFFFF));
-      this->chunks[3].compress(uint16_t(mask >> 48), output + 48 - count_ones(mask & 0xFFFFFFFFFFFF));
-      return 64 - count_ones(mask);
+    simdjson_inline uint64_t to_bitmask() const {
+      __m128i mask1 = __lsx_vmskltz_b(this->chunks[0]);
+      __m128i mask2 = __lsx_vmskltz_b(this->chunks[1]);
+      __m128i mask3 = __lsx_vmskltz_b(this->chunks[2]);
+      __m128i mask4 = __lsx_vmskltz_b(this->chunks[3]);
+      mask1 = __lsx_vilvl_h(mask2, mask1);
+      mask2 = __lsx_vilvl_h(mask4, mask3);
+      return __lsx_vpickve2gr_du(__lsx_vilvl_w(mask2, mask1), 0);
     }
 
-    simdjson_inline uint64_t to_bitmask() const {
-      uint64_t r0 = uint32_t(this->chunks[0].to_bitmask() );
-      uint64_t r1 =          this->chunks[1].to_bitmask() ;
-      uint64_t r2 =          this->chunks[2].to_bitmask() ;
-      uint64_t r3 =          this->chunks[3].to_bitmask() ;
-      return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
+    simdjson_inline simd8 reduce_or() const {
+      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
     }
 
     simdjson_inline uint64_t eq(const T m) const {
@@ -109073,14 +142174,24 @@ namespace simd {
 
 } // namespace simd
 } // unnamed namespace
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
-#endif // SIMDJSON_WESTMERE_SIMD_INPUT_H
-/* end file simdjson/westmere/simd.h */
+#endif // SIMDJSON_LSX_SIMD_H
+/* end file simdjson/lsx/simd.h */
+/* including simdjson/lsx/stringparsing_defs.h: #include "simdjson/lsx/stringparsing_defs.h" */
+/* begin file simdjson/lsx/stringparsing_defs.h */
+#ifndef SIMDJSON_LSX_STRINGPARSING_DEFS_H
+#define SIMDJSON_LSX_STRINGPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace {
 
 using namespace simd;
@@ -109105,9 +142216,12 @@ simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uin
   // SIMDJSON_PADDING of padding
   static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
   simd8 v0(src);
-  simd8 v1(src + 16);
+  simd8 v1(src + sizeof(v0));
   v0.store(dst);
-  v1.store(dst + 16);
+  v1.store(dst + sizeof(v0));
+
+  // Getting a 64-bit bitmask is much cheaper than multiple 16-bit bitmasks on LSX; therefore, we
+  // smash them together into a 64-byte mask and get the bitmask from there.
   uint64_t bs_and_quote = simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
   return {
     uint32_t(bs_and_quote),      // bs_bits
@@ -109136,26 +142250,28 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
   simd8 is_backslash = (v == '\\');
   simd8 is_control = (v < 32);
   return {
-    uint64_t((is_backslash | is_quote | is_control).to_bitmask())
+    static_cast((is_backslash | is_quote | is_control).to_bitmask())
   };
 }
 
 } // unnamed namespace
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
-#endif // SIMDJSON_WESTMERE_STRINGPARSING_DEFS_H
-/* end file simdjson/westmere/stringparsing_defs.h */
-/* end file simdjson/westmere/begin.h */
-/* including simdjson/generic/ondemand/amalgamated.h for westmere: #include "simdjson/generic/ondemand/amalgamated.h" */
-/* begin file simdjson/generic/ondemand/amalgamated.h for westmere */
-#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H)
+#endif // SIMDJSON_LSX_STRINGPARSING_DEFS_H
+/* end file simdjson/lsx/stringparsing_defs.h */
+
+#define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
+/* end file simdjson/lsx/begin.h */
+/* including simdjson/generic/ondemand/amalgamated.h for lsx: #include "simdjson/generic/ondemand/amalgamated.h" */
+/* begin file simdjson/generic/ondemand/amalgamated.h for lsx */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
 #error simdjson/generic/ondemand/dependencies.h must be included before simdjson/generic/ondemand/amalgamated.h!
 #endif
 
 // Stuff other things depend on
-/* including simdjson/generic/ondemand/base.h for westmere: #include "simdjson/generic/ondemand/base.h" */
-/* begin file simdjson/generic/ondemand/base.h for westmere */
+/* including simdjson/generic/ondemand/base.h for lsx: #include "simdjson/generic/ondemand/base.h" */
+/* begin file simdjson/generic/ondemand/base.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -109164,7 +142280,7 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 /**
  * A fast, simple, DOM-like interface that parses JSON as you use it.
  *
@@ -109175,8 +142291,8 @@ namespace ondemand {
 /** Represents the depth of a JSON value (number of nested arrays/objects). */
 using depth_t = int32_t;
 
-/** @copydoc simdjson::westmere::number_type */
-using number_type = simdjson::westmere::number_type;
+/** @copydoc simdjson::lsx::number_type */
+using number_type = simdjson::lsx::number_type;
 
 /** @private Position in the JSON buffer indexes */
 using token_position = const uint32_t *;
@@ -109199,13 +142315,13 @@ class value;
 class value_iterator;
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_BASE_H
-/* end file simdjson/generic/ondemand/base.h for westmere */
-/* including simdjson/generic/ondemand/deserialize.h for westmere: #include "simdjson/generic/ondemand/deserialize.h" */
-/* begin file simdjson/generic/ondemand/deserialize.h for westmere */
+/* end file simdjson/generic/ondemand/base.h for lsx */
+/* including simdjson/generic/ondemand/deserialize.h for lsx: #include "simdjson/generic/ondemand/deserialize.h" */
+/* begin file simdjson/generic/ondemand/deserialize.h for lsx */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -109225,35 +142341,35 @@ template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 
 template 
 concept is_builtin_deserializable_v = is_builtin_deserializable::value;
 
-template 
+template 
 concept custom_deserializable = tag_invocable;
 
-template 
+template 
 concept deserializable = custom_deserializable || is_builtin_deserializable_v || concepts::optional_type;
 
-template 
+template 
 concept nothrow_custom_deserializable = nothrow_tag_invocable;
 
 // built-in types are noexcept and if an error happens, the value simply gets ignored and the error is returned.
-template 
+template 
 concept nothrow_deserializable = nothrow_custom_deserializable || is_builtin_deserializable_v;
 
 /// Deserialize Tag
 inline constexpr struct deserialize_tag {
-  using array_type = westmere::ondemand::array;
-  using object_type = westmere::ondemand::object;
-  using value_type = westmere::ondemand::value;
-  using document_type = westmere::ondemand::document;
-  using document_reference_type = westmere::ondemand::document_reference;
+  using array_type = lsx::ondemand::array;
+  using object_type = lsx::ondemand::object;
+  using value_type = lsx::ondemand::value;
+  using document_type = lsx::ondemand::document;
+  using document_reference_type = lsx::ondemand::document_reference;
 
   // Customization Point for array
   template 
@@ -109298,9 +142414,9 @@ inline constexpr struct deserialize_tag {
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
 
-/* end file simdjson/generic/ondemand/deserialize.h for westmere */
-/* including simdjson/generic/ondemand/value_iterator.h for westmere: #include "simdjson/generic/ondemand/value_iterator.h" */
-/* begin file simdjson/generic/ondemand/value_iterator.h for westmere */
+/* end file simdjson/generic/ondemand/deserialize.h for lsx */
+/* including simdjson/generic/ondemand/value_iterator.h for lsx: #include "simdjson/generic/ondemand/value_iterator.h" */
+/* begin file simdjson/generic/ondemand/value_iterator.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -109310,7 +142426,7 @@ inline constexpr struct deserialize_tag {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 /**
@@ -109775,21 +142891,22 @@ class value_iterator {
 
   friend class document;
   friend class object;
+  friend class object_iterator;
   friend class array;
   friend class value;
   friend class field;
 }; // value_iterator
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::value_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::value_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -109797,9 +142914,9 @@ struct simdjson_result : public westmere::im
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
-/* end file simdjson/generic/ondemand/value_iterator.h for westmere */
-/* including simdjson/generic/ondemand/value.h for westmere: #include "simdjson/generic/ondemand/value.h" */
-/* begin file simdjson/generic/ondemand/value.h for westmere */
+/* end file simdjson/generic/ondemand/value_iterator.h for lsx */
+/* including simdjson/generic/ondemand/value.h for lsx: #include "simdjson/generic/ondemand/value.h" */
+/* begin file simdjson/generic/ondemand/value.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -109815,7 +142932,7 @@ struct simdjson_result : public westmere::im
 
 namespace simdjson {
 
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 /**
  * An ephemeral JSON value returned during iteration. It is only valid for as long as you do
@@ -110529,20 +143646,20 @@ class value {
 };
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::value &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::value &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result get_array() noexcept;
-  simdjson_inline simdjson_result get_object() noexcept;
+  simdjson_inline simdjson_result get_array() noexcept;
+  simdjson_inline simdjson_result get_object() noexcept;
 
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
@@ -110554,7 +143671,7 @@ struct simdjson_result : public westmere::implementat
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
@@ -110565,20 +143682,20 @@ struct simdjson_result : public westmere::implementat
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator westmere::ondemand::array() noexcept(false);
-  simdjson_inline operator westmere::ondemand::object() noexcept(false);
+  simdjson_inline operator lsx::ondemand::array() noexcept(false);
+  simdjson_inline operator lsx::ondemand::object() noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator westmere::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator lsx::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
 
   /**
    * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
@@ -110602,9 +143719,9 @@ struct simdjson_result : public westmere::implementat
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field(const char *key) noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field(const char *key) noexcept;
 
   /**
    * Look up a field by name on an object, without regard to key order.
@@ -110616,7 +143733,7 @@ struct simdjson_result : public westmere::implementat
    * in question is large. The fact that the extra code is there also bumps the executable size.
    *
    * We default operator[] on find_field_unordered() for convenience.
-   * It is the defaul because it would be highly surprising (and hard to debug) if the
+   * It is the default because it would be highly surprising (and hard to debug) if the
    * default behavior failed to look up a field just because it was in the wrong order--and many
    * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
    *
@@ -110626,14 +143743,14 @@ struct simdjson_result : public westmere::implementat
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](const char *key) noexcept;
-  simdjson_result operator[](int) noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](const char *key) noexcept;
+  simdjson_result operator[](int) noexcept = delete;
 
   /**
    * Get the type of this JSON value. It does not validate or consume the value.
@@ -110657,13 +143774,13 @@ struct simdjson_result : public westmere::implementat
    * better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just
    * let it throw an exception).
    */
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
 
   /** @copydoc simdjson_inline std::string_view value::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
@@ -110673,17 +143790,17 @@ struct simdjson_result : public westmere::implementat
   simdjson_inline simdjson_result current_location() noexcept;
   /** @copydoc simdjson_inline int32_t current_depth() const noexcept */
   simdjson_inline simdjson_result current_depth() const noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_H
-/* end file simdjson/generic/ondemand/value.h for westmere */
-/* including simdjson/generic/ondemand/logger.h for westmere: #include "simdjson/generic/ondemand/logger.h" */
-/* begin file simdjson/generic/ondemand/logger.h for westmere */
+/* end file simdjson/generic/ondemand/value.h for lsx */
+/* including simdjson/generic/ondemand/logger.h for lsx: #include "simdjson/generic/ondemand/logger.h" */
+/* begin file simdjson/generic/ondemand/logger.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -110692,7 +143809,7 @@ struct simdjson_result : public westmere::implementat
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 // Logging should be free unless SIMDJSON_VERBOSE_LOGGING is set. Importantly, it is critical
@@ -110738,13 +143855,13 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 
 } // namespace logger
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
-/* end file simdjson/generic/ondemand/logger.h for westmere */
-/* including simdjson/generic/ondemand/token_iterator.h for westmere: #include "simdjson/generic/ondemand/token_iterator.h" */
-/* begin file simdjson/generic/ondemand/token_iterator.h for westmere */
+/* end file simdjson/generic/ondemand/logger.h for lsx */
+/* including simdjson/generic/ondemand/token_iterator.h for lsx: #include "simdjson/generic/ondemand/token_iterator.h" */
+/* begin file simdjson/generic/ondemand/token_iterator.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -110755,7 +143872,7 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 /**
@@ -110886,15 +144003,15 @@ class token_iterator {
 };
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::token_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::token_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -110903,9 +144020,9 @@ struct simdjson_result : public westmere::im
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
-/* end file simdjson/generic/ondemand/token_iterator.h for westmere */
-/* including simdjson/generic/ondemand/json_iterator.h for westmere: #include "simdjson/generic/ondemand/json_iterator.h" */
-/* begin file simdjson/generic/ondemand/json_iterator.h for westmere */
+/* end file simdjson/generic/ondemand/token_iterator.h for lsx */
+/* including simdjson/generic/ondemand/json_iterator.h for lsx: #include "simdjson/generic/ondemand/json_iterator.h" */
+/* begin file simdjson/generic/ondemand/json_iterator.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -110916,7 +144033,7 @@ struct simdjson_result : public westmere::im
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 /**
@@ -111227,15 +144344,15 @@ class json_iterator {
 }; // json_iterator
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::json_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::json_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
 
   simdjson_inline simdjson_result() noexcept = default;
@@ -111244,9 +144361,9 @@ struct simdjson_result : public westmere::imp
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
-/* end file simdjson/generic/ondemand/json_iterator.h for westmere */
-/* including simdjson/generic/ondemand/json_type.h for westmere: #include "simdjson/generic/ondemand/json_type.h" */
-/* begin file simdjson/generic/ondemand/json_type.h for westmere */
+/* end file simdjson/generic/ondemand/json_iterator.h for lsx */
+/* including simdjson/generic/ondemand/json_type.h for lsx: #include "simdjson/generic/ondemand/json_type.h" */
+/* begin file simdjson/generic/ondemand/json_type.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -111257,7 +144374,7 @@ struct simdjson_result : public westmere::imp
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 /**
@@ -111391,15 +144508,15 @@ inline std::ostream& operator<<(std::ostream& out, simdjson_result &t
 #endif
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::json_type &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::json_type &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -111408,9 +144525,9 @@ struct simdjson_result : public westmere::impleme
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
-/* end file simdjson/generic/ondemand/json_type.h for westmere */
-/* including simdjson/generic/ondemand/raw_json_string.h for westmere: #include "simdjson/generic/ondemand/raw_json_string.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string.h for westmere */
+/* end file simdjson/generic/ondemand/json_type.h for lsx */
+/* including simdjson/generic/ondemand/raw_json_string.h for lsx: #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -111420,7 +144537,7 @@ struct simdjson_result : public westmere::impleme
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 /**
@@ -111602,30 +144719,30 @@ simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_js
 
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::raw_json_string &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::raw_json_string &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
 
   simdjson_inline simdjson_result raw() const noexcept;
   simdjson_inline char operator[](size_t) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape(westmere::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(westmere::ondemand::json_iterator &iter) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape(lsx::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(lsx::ondemand::json_iterator &iter) const noexcept;
 };
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
-/* end file simdjson/generic/ondemand/raw_json_string.h for westmere */
-/* including simdjson/generic/ondemand/parser.h for westmere: #include "simdjson/generic/ondemand/parser.h" */
-/* begin file simdjson/generic/ondemand/parser.h for westmere */
+/* end file simdjson/generic/ondemand/raw_json_string.h for lsx */
+/* including simdjson/generic/ondemand/parser.h for lsx: #include "simdjson/generic/ondemand/parser.h" */
+/* begin file simdjson/generic/ondemand/parser.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -111638,7 +144755,7 @@ struct simdjson_result : public westmere::i
 #include 
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 /**
@@ -112038,15 +145155,15 @@ class parser {
 };
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::parser &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::parser &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -112054,319 +145171,11 @@ struct simdjson_result : public westmere::implementa
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_H
-/* end file simdjson/generic/ondemand/parser.h for westmere */
-
-// JSON builder - needed for extract_into functionality
-/* including simdjson/generic/ondemand/json_string_builder.h for westmere: #include "simdjson/generic/ondemand/json_string_builder.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder.h for westmere */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace westmere {
-namespace builder {
-  class string_builder;
-}}
-
-template 
-struct has_custom_serialization : std::false_type {};
-
-inline constexpr struct serialize_tag {
-  template 
-  constexpr void operator()(westmere::builder::string_builder& b, T&& obj) const{
-    return tag_invoke(*this, b, std::forward(obj));
-  }
-
-
-} serialize{};
-template 
-struct has_custom_serialization(), std::declval()))
->> : std::true_type {};
-
-template 
-constexpr bool require_custom_serialization = has_custom_serialization::value;
-#else
-struct has_custom_serialization : std::false_type {};
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace westmere {
-namespace builder {
-/**
- * A builder for JSON strings representing documents. This is a low-level
- * builder that is not meant to be used directly by end-users. Though it
- * supports atomic types (Booleans, strings), it does not support composed
- * types (arrays and objects).
- *
- * Ultimately, this class can support kernel-specific optimizations. E.g.,
- * it may make use of SIMD instructions to escape strings faster.
- */
-class string_builder {
-public:
-  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
-
-  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
-
-  /**
-   * Append number (includes Booleans). Booleans are mapped to the strings
-   * false and true. Numbers are converted to strings abiding by the JSON standard.
-   * Floating-point numbers are converted to the shortest string that 'correctly'
-   * represents the number.
-   */
-  template::value>::type>
-  simdjson_inline void append(number_type v) noexcept;
-
-  /**
-   * Append character c.
-   */
-  simdjson_inline void append(char c)  noexcept;
-
-  /**
-   * Append the string 'null'.
-   */
-  simdjson_inline void append_null()  noexcept;
-
-  /**
-   * Clear the content.
-   */
-  simdjson_inline void clear()  noexcept;
-
-  /**
-   * Append the std::string_view, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
-
-  /**
-   * Append the std::string_view surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void escape_and_append_with_quotes()  noexcept;
-#endif
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
-
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
-
-  /**
-   * Append the C string directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *c)  noexcept;
-
-  /**
-   * Append "{" to the buffer.
-   */
-  simdjson_inline void start_object()  noexcept;
-
-  /**
-   * Append "}" to the buffer.
-   */
-  simdjson_inline void end_object()  noexcept;
-
-  /**
-   * Append "[" to the buffer.
-   */
-  simdjson_inline void start_array()  noexcept;
-
-  /**
-   * Append "]" to the buffer.
-   */
-  simdjson_inline void end_array()  noexcept;
-
-  /**
-   * Append "," to the buffer.
-   */
-  simdjson_inline void append_comma()  noexcept;
-
-  /**
-   * Append ":" to the buffer.
-   */
-  simdjson_inline void append_colon()  noexcept;
-
-  /**
-   * Append a key-value pair to the buffer.
-   * The key is escaped and surrounded by double quotes.
-   * The value is escaped if it is a string.
-   */
-  template
-  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void append_key_value(value_type value) noexcept;
-
-  // Support for optional types (std::optional, etc.)
-  template 
-  requires(!require_custom_serialization)
-  simdjson_inline void append(const T &opt);
-
-  template 
-  requires(require_custom_serialization)
-  simdjson_inline void append(T &&val);
-
-  // Support for string-like types
-  template 
-  requires(std::is_convertible::value ||
-  std::is_same::value )
-  simdjson_inline void append(const T &value);
-#endif
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-  // Support for range-based appending (std::ranges::view, etc.)
-  template 
-requires (!std::is_convertible::value && !require_custom_serialization)
-  simdjson_inline void append(const R &range) noexcept;
-#endif
-  /**
-   * Append the std::string_view directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(std::string_view input)  noexcept;
-
-  /**
-   * Append len characters from str.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
-#if SIMDJSON_EXCEPTIONS
-  /**
-   * Creates an std::string from the written JSON buffer.
-   * Throws if memory allocation failed
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string() const noexcept(false);
-
-  /**
-   * Creates an std::string_view from the written JSON buffer.
-   * Throws if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
-#endif
-
-  /**
-   * Returns a view on the written JSON buffer. Returns an error
-   * if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result view() const noexcept;
-
-  /**
-   * Appends the null character to the buffer and returns
-   * a pointer to the beginning of the written JSON buffer.
-   * Returns an error if memory allocation failed.
-   * The result is null-terminated.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result c_str() noexcept;
-
-  /**
-   * Return true if the content is valid UTF-8.
-   */
-  simdjson_inline bool validate_unicode() const noexcept;
-
-  /**
-   * Returns the current size of the written JSON buffer.
-   * If an error occurred, returns 0.
-   */
-  simdjson_inline size_t size() const noexcept;
-
-private:
-  /**
-   * Returns true if we can write at least upcoming_bytes bytes.
-   * The underlying buffer is reallocated if needed. It is designed
-   * to be called before writing to the buffer. It should be fast.
-   */
-  simdjson_inline bool capacity_check(size_t upcoming_bytes);
-
-  /**
-   * Grow the buffer to at least desired_capacity bytes.
-   * If the allocation fails, is_valid is set to false. We expect
-   * that this function would not be repeatedly called.
-   */
-  simdjson_inline void grow_buffer(size_t desired_capacity);
-
-  /**
-   * We use this helper function to make sure that is_valid is kept consistent.
-   */
-  simdjson_inline void set_valid(bool valid) noexcept;
-
-  std::unique_ptr buffer{};
-  size_t position{0};
-  size_t capacity{0};
-  bool is_valid{true};
-};
-
-
-
-}
-}
-
-
-#if !SIMDJSON_STATIC_REFLECTION
-// fallback implementation until we have static reflection
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::westmere::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view s;
-  auto e = b.view().get(s);
-  if(e) { return e; }
-  return std::string(s);
-}
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::westmere::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view sv;
-  auto e = b.view().get(sv);
-  if(e) { return e; }
-  s.assign(sv.data(), sv.size());
-  return simdjson::SUCCESS;
-}
-#endif
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
-/* end file simdjson/generic/ondemand/json_string_builder.h for westmere */
+/* end file simdjson/generic/ondemand/parser.h for lsx */
 
 // All other declarations
-/* including simdjson/generic/ondemand/array.h for westmere: #include "simdjson/generic/ondemand/array.h" */
-/* begin file simdjson/generic/ondemand/array.h for westmere */
+/* including simdjson/generic/ondemand/array.h for lsx: #include "simdjson/generic/ondemand/array.h" */
+/* begin file simdjson/generic/ondemand/array.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -112378,7 +145187,7 @@ simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t i
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 /**
@@ -112598,27 +145407,27 @@ class array {
 };
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::array &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::array &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
   inline simdjson_result count_elements() & noexcept;
   inline simdjson_result is_empty() & noexcept;
   inline simdjson_result reset() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   simdjson_inline simdjson_result raw_json() noexcept;
 #if SIMDJSON_SUPPORTS_CONCEPTS
   // TODO: move this code into object-inl.h
@@ -112626,7 +145435,7 @@ struct simdjson_result : public westmere::implementat
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -112634,7 +145443,7 @@ struct simdjson_result : public westmere::implementat
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -112647,13 +145456,14 @@ struct simdjson_result : public westmere::implementat
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
-/* end file simdjson/generic/ondemand/array.h for westmere */
-/* including simdjson/generic/ondemand/array_iterator.h for westmere: #include "simdjson/generic/ondemand/array_iterator.h" */
-/* begin file simdjson/generic/ondemand/array_iterator.h for westmere */
+/* end file simdjson/generic/ondemand/array.h for lsx */
+/* including simdjson/generic/ondemand/array_iterator.h for lsx: #include "simdjson/generic/ondemand/array_iterator.h" */
+/* begin file simdjson/generic/ondemand/array_iterator.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include  */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
@@ -112661,7 +145471,7 @@ struct simdjson_result : public westmere::implementat
 
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 /**
@@ -112669,11 +145479,17 @@ namespace ondemand {
  *
  * This is an input_iterator, meaning:
  * - It is forward-only
- * - * must be called exactly once per element.
+ * - * must be called at most once per element.
  * - ++ must be called exactly once in between each * (*, ++, *, ++, * ...)
  */
 class array_iterator {
 public:
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
   /** Create a new, invalid array iterator. */
   simdjson_inline array_iterator() noexcept = default;
 
@@ -112717,6 +145533,9 @@ class array_iterator {
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   value_iterator iter{};
 
   simdjson_inline array_iterator(const value_iterator &iter) noexcept;
@@ -112727,14 +145546,20 @@ class array_iterator {
 };
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
-  simdjson_inline simdjson_result(westmere::ondemand::array_iterator &&value) noexcept; ///< @private
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
+  simdjson_inline simdjson_result(lsx::ondemand::array_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -112742,10 +145567,10 @@ struct simdjson_result : public westmere::im
   // Iterator interface
   //
 
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 };
@@ -112753,9 +145578,9 @@ struct simdjson_result : public westmere::im
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
-/* end file simdjson/generic/ondemand/array_iterator.h for westmere */
-/* including simdjson/generic/ondemand/document.h for westmere: #include "simdjson/generic/ondemand/document.h" */
-/* begin file simdjson/generic/ondemand/document.h for westmere */
+/* end file simdjson/generic/ondemand/array_iterator.h for lsx */
+/* including simdjson/generic/ondemand/document.h for lsx: #include "simdjson/generic/ondemand/document.h" */
+/* begin file simdjson/generic/ondemand/document.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -112769,7 +145594,7 @@ struct simdjson_result : public westmere::im
 
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 /**
@@ -113721,21 +146546,21 @@ class document_reference {
   document *doc{nullptr};
 };
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::document &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::document &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -113746,9 +146571,9 @@ struct simdjson_result : public westmere::implemen
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -113758,33 +146583,33 @@ struct simdjson_result : public westmere::implemen
   template simdjson_inline error_code get(T &out) && noexcept;
 #if SIMDJSON_EXCEPTIONS
 
-  using westmere::implementation_simdjson_result_base::operator*;
-  using westmere::implementation_simdjson_result_base::operator->;
-  template ::value == false>::type>
+  using lsx::implementation_simdjson_result_base::operator*;
+  using lsx::implementation_simdjson_result_base::operator->;
+  template ::value == false>::type>
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator westmere::ondemand::array() & noexcept(false);
-  simdjson_inline operator westmere::ondemand::object() & noexcept(false);
+  simdjson_inline operator lsx::ondemand::array() & noexcept(false);
+  simdjson_inline operator lsx::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator westmere::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator lsx::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator westmere::ondemand::value() noexcept(false);
+  simdjson_inline operator lsx::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
@@ -113792,14 +146617,14 @@ struct simdjson_result : public westmere::implemen
   simdjson_inline bool at_end() const noexcept;
   simdjson_inline bool is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -113815,14 +146640,14 @@ struct simdjson_result : public westmere::implemen
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::document_reference value, error_code error) noexcept;
+  simdjson_inline simdjson_result(lsx::ondemand::document_reference value, error_code error) noexcept;
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -113833,9 +146658,9 @@ struct simdjson_result : public westmere
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -113846,43 +146671,43 @@ struct simdjson_result : public westmere
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator westmere::ondemand::array() & noexcept(false);
-  simdjson_inline operator westmere::ondemand::object() & noexcept(false);
+  simdjson_inline operator lsx::ondemand::array() & noexcept(false);
+  simdjson_inline operator lsx::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator westmere::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator lsx::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator westmere::ondemand::value() noexcept(false);
+  simdjson_inline operator lsx::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
   simdjson_inline simdjson_result current_depth() const noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document_reference::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -113894,9 +146719,9 @@ struct simdjson_result : public westmere
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
-/* end file simdjson/generic/ondemand/document.h for westmere */
-/* including simdjson/generic/ondemand/document_stream.h for westmere: #include "simdjson/generic/ondemand/document_stream.h" */
-/* begin file simdjson/generic/ondemand/document_stream.h for westmere */
+/* end file simdjson/generic/ondemand/document.h for lsx */
+/* including simdjson/generic/ondemand/document_stream.h for lsx: #include "simdjson/generic/ondemand/document_stream.h" */
+/* begin file simdjson/generic/ondemand/document_stream.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -113914,7 +146739,7 @@ struct simdjson_result : public westmere
 #endif
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -114227,14 +147052,14 @@ class document_stream {
 };  // document_stream
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::document_stream &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::document_stream &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -114242,9 +147067,9 @@ struct simdjson_result : public westmere::i
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
-/* end file simdjson/generic/ondemand/document_stream.h for westmere */
-/* including simdjson/generic/ondemand/field.h for westmere: #include "simdjson/generic/ondemand/field.h" */
-/* begin file simdjson/generic/ondemand/field.h for westmere */
+/* end file simdjson/generic/ondemand/document_stream.h for lsx */
+/* including simdjson/generic/ondemand/field.h for lsx: #include "simdjson/generic/ondemand/field.h" */
+/* begin file simdjson/generic/ondemand/field.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -114256,7 +147081,7 @@ struct simdjson_result : public westmere::i
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 /**
@@ -114334,33 +147159,33 @@ class field : public std::pair {
 };
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::field &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::field &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
   simdjson_inline simdjson_result unescaped_key(bool allow_replacement = false) noexcept;
   template
   simdjson_inline error_code unescaped_key(string_type &receiver, bool allow_replacement = false) noexcept;
-  simdjson_inline simdjson_result key() noexcept;
+  simdjson_inline simdjson_result key() noexcept;
   simdjson_inline simdjson_result key_raw_json_token() noexcept;
   simdjson_inline simdjson_result escaped_key() noexcept;
-  simdjson_inline simdjson_result value() noexcept;
+  simdjson_inline simdjson_result value() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_H
-/* end file simdjson/generic/ondemand/field.h for westmere */
-/* including simdjson/generic/ondemand/object.h for westmere: #include "simdjson/generic/ondemand/object.h" */
-/* begin file simdjson/generic/ondemand/object.h for westmere */
+/* end file simdjson/generic/ondemand/field.h for lsx */
+/* including simdjson/generic/ondemand/object.h for lsx: #include "simdjson/generic/ondemand/object.h" */
+/* begin file simdjson/generic/ondemand/object.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -114375,7 +147200,7 @@ struct simdjson_result : public westmere::implementat
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 /**
@@ -114390,6 +147215,13 @@ class object {
    */
   simdjson_inline object() noexcept = default;
 
+  /**
+   * Get an iterator to the start of the object. We recommend using a range-based for loop.
+   *
+   * Using the iterator directly is also possible but error-prone and discouraged. In particular,
+   * you must dereference the iterator exactly once per iteration (before calling '++').
+   * Doing otherwise is unsafe and may lead to errors. You are responsible for ensuring
+   */
   simdjson_inline simdjson_result begin() noexcept;
   simdjson_inline simdjson_result end() noexcept;
   /**
@@ -114662,29 +147494,29 @@ class object {
 };
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::object &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::object &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   inline simdjson_result reset() noexcept;
   inline simdjson_result is_empty() noexcept;
   inline simdjson_result count_fields() & noexcept;
@@ -114695,7 +147527,7 @@ struct simdjson_result : public westmere::implementa
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -114703,7 +147535,7 @@ struct simdjson_result : public westmere::implementa
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -114726,9 +147558,9 @@ struct simdjson_result : public westmere::implementa
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
-/* end file simdjson/generic/ondemand/object.h for westmere */
-/* including simdjson/generic/ondemand/object_iterator.h for westmere: #include "simdjson/generic/ondemand/object_iterator.h" */
-/* begin file simdjson/generic/ondemand/object_iterator.h for westmere */
+/* end file simdjson/generic/ondemand/object.h for lsx */
+/* including simdjson/generic/ondemand/object_iterator.h for lsx: #include "simdjson/generic/ondemand/object_iterator.h" */
+/* begin file simdjson/generic/ondemand/object_iterator.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -114739,7 +147571,7 @@ struct simdjson_result : public westmere::implementa
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 class object_iterator {
@@ -114763,9 +147595,14 @@ class object_iterator {
   // Assumes it's being compared with the end. true if depth >= iter->depth.
   simdjson_inline bool operator!=(const object_iterator &) const noexcept;
   // Checks for ']' and ','
+  // YOU MUST NOT CALL THIS IF operator* YIELDED AN ERROR.
+  // YOU MUST NOT CALL THIS WITHOUT A CORRESPONDING operator* CALL.
   simdjson_inline object_iterator &operator++() noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   /**
    * The underlying JSON iterator.
    *
@@ -114780,15 +147617,15 @@ class object_iterator {
 };
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public westmere::implementation_simdjson_result_base {
+struct simdjson_result : public lsx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(westmere::ondemand::object_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lsx::ondemand::object_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -114797,21 +147634,21 @@ struct simdjson_result : public westmere::i
   //
 
   // Reads key and value, yielding them to the user.
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
   // Assumes it's being compared with the end. true if depth < iter->depth.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
   // Assumes it's being compared with the end. true if depth >= iter->depth.
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
   // Checks for ']' and ','
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
-/* end file simdjson/generic/ondemand/object_iterator.h for westmere */
-/* including simdjson/generic/ondemand/serialization.h for westmere: #include "simdjson/generic/ondemand/serialization.h" */
-/* begin file simdjson/generic/ondemand/serialization.h for westmere */
+/* end file simdjson/generic/ondemand/object_iterator.h for lsx */
+/* including simdjson/generic/ondemand/serialization.h for lsx: #include "simdjson/generic/ondemand/serialization.h" */
+/* begin file simdjson/generic/ondemand/serialization.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -114825,30 +147662,30 @@ namespace simdjson {
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(westmere::ondemand::document& x) noexcept;
+inline simdjson_result to_json_string(lsx::ondemand::document& x) noexcept;
 /**
  * Create a string-view instance out of a value instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. The value must
  * not have been accessed previously. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(westmere::ondemand::value& x) noexcept;
+inline simdjson_result to_json_string(lsx::ondemand::value& x) noexcept;
 /**
  * Create a string-view instance out of an object instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(westmere::ondemand::object& x) noexcept;
+inline simdjson_result to_json_string(lsx::ondemand::object& x) noexcept;
 /**
  * Create a string-view instance out of an array instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(westmere::ondemand::array& x) noexcept;
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(lsx::ondemand::array& x) noexcept;
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
 
 #if SIMDJSON_STATIC_REFLECTION
 /**
@@ -114856,10 +147693,10 @@ inline simdjson_result to_json_string(simdjson_result
-  requires(!std::same_as &&
-           !std::same_as &&
-           !std::same_as &&
-           !std::same_as)
+  requires(!std::same_as &&
+           !std::same_as &&
+           !std::same_as &&
+           !std::same_as)
 inline std::string to_json_string(const T& obj);
 #endif
 
@@ -114872,7 +147709,7 @@ inline std::string to_json_string(const T& obj);
  * Credit: @madhur4127
  * See https://github.com/simdjson/simdjson/issues/1768
  */
-namespace simdjson { namespace westmere { namespace ondemand {
+namespace simdjson { namespace lsx { namespace ondemand {
 
 /**
  * Print JSON to an output stream.  It does not
@@ -114882,9 +147719,9 @@ namespace simdjson { namespace westmere { namespace ondemand {
  * @param value The element.
  * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
  */
-inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::value x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::value x);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -114894,9 +147731,9 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -114906,13 +147743,13 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
-inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::document_reference& value);
+inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::document_reference& value);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -114922,18 +147759,18 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
-}}} // namespace simdjson::westmere::ondemand
+}}} // namespace simdjson::lsx::ondemand
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
-/* end file simdjson/generic/ondemand/serialization.h for westmere */
+/* end file simdjson/generic/ondemand/serialization.h for lsx */
 
 // Deserialization for standard types
-/* including simdjson/generic/ondemand/std_deserialize.h for westmere: #include "simdjson/generic/ondemand/std_deserialize.h" */
-/* begin file simdjson/generic/ondemand/std_deserialize.h for westmere */
+/* including simdjson/generic/ondemand/std_deserialize.h for lsx: #include "simdjson/generic/ondemand/std_deserialize.h" */
+/* begin file simdjson/generic/ondemand/std_deserialize.h for lsx */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -115032,8 +147869,8 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified type inside the container must default constructible.");
-  westmere::ondemand::array arr;
-  if constexpr (std::is_same_v, westmere::ondemand::array>) {
+  lsx::ondemand::array arr;
+  if constexpr (std::is_same_v, lsx::ondemand::array>) {
     arr = val;
   } else {
     SIMDJSON_TRY(val.get_array().get(arr));
@@ -115077,7 +147914,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified value type inside the container must default constructible.");
- westmere::ondemand::object obj;
+ lsx::ondemand::object obj;
  SIMDJSON_TRY(val.get_object().get(obj));
  for (auto field : obj) {
     std::string_view key;
@@ -115095,7 +147932,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
 }
 
 template 
-error_code tag_invoke(deserialize_tag, westmere::ondemand::object &obj, T &out) noexcept {
+error_code tag_invoke(deserialize_tag, lsx::ondemand::object &obj, T &out) noexcept {
   using value_type = typename std::remove_cvref_t::mapped_type;
 
   out.clear();
@@ -115103,7 +147940,7 @@ error_code tag_invoke(deserialize_tag, westmere::ondemand::object &obj, T &out)
     std::string_view key;
     SIMDJSON_TRY(field.unescaped_key().get(key));
 
-    westmere::ondemand::value value_obj;
+    lsx::ondemand::value value_obj;
     SIMDJSON_TRY(field.value().get(value_obj));
 
     value_type this_value;
@@ -115114,22 +147951,22 @@ error_code tag_invoke(deserialize_tag, westmere::ondemand::object &obj, T &out)
 }
 
 template 
-error_code tag_invoke(deserialize_tag, westmere::ondemand::value &val, T &out) noexcept {
-  westmere::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, lsx::ondemand::value &val, T &out) noexcept {
+  lsx::ondemand::object obj;
   SIMDJSON_TRY(val.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, westmere::ondemand::document &doc, T &out) noexcept {
-  westmere::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, lsx::ondemand::document &doc, T &out) noexcept {
+  lsx::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, westmere::ondemand::document_reference &doc, T &out) noexcept {
-  westmere::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, lsx::ondemand::document_reference &doc, T &out) noexcept {
+  lsx::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
@@ -115206,8 +148043,8 @@ constexpr bool user_defined_type = (std::is_class_v
 template 
   requires(user_defined_type && std::is_class_v)
 error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept {
-  westmere::ondemand::object obj;
-  if constexpr (std::is_same_v, westmere::ondemand::object>) {
+  lsx::ondemand::object obj;
+  if constexpr (std::is_same_v, lsx::ondemand::object>) {
     obj = val;
   } else {
     SIMDJSON_TRY(val.get_object().get(obj));
@@ -115516,11 +148353,11 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
-/* end file simdjson/generic/ondemand/std_deserialize.h for westmere */
+/* end file simdjson/generic/ondemand/std_deserialize.h for lsx */
 
 // Inline definitions
-/* including simdjson/generic/ondemand/array-inl.h for westmere: #include "simdjson/generic/ondemand/array-inl.h" */
-/* begin file simdjson/generic/ondemand/array-inl.h for westmere */
+/* including simdjson/generic/ondemand/array-inl.h for lsx: #include "simdjson/generic/ondemand/array-inl.h" */
+/* begin file simdjson/generic/ondemand/array-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -115535,7 +148372,7 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 //
@@ -115764,68 +148601,68 @@ simdjson_inline simdjson_result array::at(size_t index) noexcept {
 }
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  westmere::ondemand::array &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lsx::ondemand::array &&value
 ) noexcept
-  : implementation_simdjson_result_base(
-      std::forward(value)
+  : implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept
-  : implementation_simdjson_result_base(error)
+  : implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
-simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
-simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
-/* end file simdjson/generic/ondemand/array-inl.h for westmere */
-/* including simdjson/generic/ondemand/array_iterator-inl.h for westmere: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/array_iterator-inl.h for westmere */
+/* end file simdjson/generic/ondemand/array-inl.h for lsx */
+/* including simdjson/generic/ondemand/array_iterator-inl.h for lsx: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/array_iterator-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -115837,7 +148674,7 @@ simdjson_inline  simdjson_result simdjson_result array_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   SIMDJSON_ASSUME(!has_been_referenced);
+   has_been_referenced = true;
+#endif
   if (iter.error()) { iter.abandon(); return iter.error(); }
   return value(iter.child());
 }
@@ -115855,6 +148696,9 @@ simdjson_inline bool array_iterator::operator!=(const array_iterator &) const no
   return iter.is_open();
 }
 simdjson_inline array_iterator &array_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   has_been_referenced = false;
+#endif
   error_code error;
   // PERF NOTE this is a safety rail ... users should exit loops as soon as they receive an error, so we'll never get here.
   // However, it does not seem to make a perf difference, so we add it out of an abundance of caution.
@@ -115868,50 +148712,50 @@ simdjson_inline bool array_iterator::at_end() const noexcept {
   return iter.at_end();
 }
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  westmere::ondemand::array_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lsx::ondemand::array_iterator &&value
 ) noexcept
-  : westmere::implementation_simdjson_result_base(std::forward(value))
+  : lsx::implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : westmere::implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : lsx::implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++(first);
   return *this;
 }
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   return !first.iter.is_valid() || first.at_end();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/array_iterator-inl.h for westmere */
-/* including simdjson/generic/ondemand/value-inl.h for westmere: #include "simdjson/generic/ondemand/value-inl.h" */
-/* begin file simdjson/generic/ondemand/value-inl.h for westmere */
+/* end file simdjson/generic/ondemand/array_iterator-inl.h for lsx */
+/* including simdjson/generic/ondemand/value-inl.h for lsx: #include "simdjson/generic/ondemand/value-inl.h" */
+/* begin file simdjson/generic/ondemand/value-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -115927,7 +148771,7 @@ simdjson_inline bool simdjson_result::at_end
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 simdjson_inline value::value(const value_iterator &_iter) noexcept
@@ -116224,240 +149068,240 @@ inline simdjson_result> value::at_path_with_wildcard(std::str
 }
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  westmere::ondemand::value &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lsx::ondemand::value &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   if (error()) { return error(); }
   return {};
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
 
-simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
-template<> simdjson_inline error_code simdjson_result::get(westmere::ondemand::value &out) noexcept {
+template<> simdjson_inline error_code simdjson_result::get(lsx::ondemand::value &out) noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 
-template simdjson_inline simdjson_result simdjson_result::get() noexcept {
+template simdjson_inline simdjson_result simdjson_result::get() noexcept {
   if (error()) { return error(); }
   return first.get();
 }
-template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
+template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
+template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
   if (error()) { return error(); }
   return std::move(first);
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator westmere::ondemand::array() noexcept(false) {
+simdjson_inline simdjson_result::operator lsx::ondemand::array() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator westmere::ondemand::object() noexcept(false) {
+simdjson_inline simdjson_result::operator lsx::ondemand::object() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator westmere::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator lsx::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
+simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(
+simdjson_inline simdjson_result simdjson_result::at_pointer(
     std::string_view json_pointer) noexcept {
   if (error()) {
       return error();
@@ -116465,7 +149309,7 @@ simdjson_inline simdjson_result simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -116473,7 +149317,7 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(
+inline simdjson_result> simdjson_result::at_path_with_wildcard(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -116484,9 +149328,9 @@ inline simdjson_result> simdjson_result> simdjson_result::simdjson_result(
-  westmere::ondemand::document &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lsx::ondemand::document &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(
+    implementation_simdjson_result_base(
       error
     )
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
-template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
+template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first);
+  return std::forward(first);
 }
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(westmere::ondemand::document &out) & noexcept = delete;
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(westmere::ondemand::document &out) && noexcept {
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lsx::ondemand::document &out) & noexcept = delete;
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lsx::ondemand::document &out) && noexcept {
   if (error()) { return error(); }
-  out = std::forward(first);
+  out = std::forward(first);
   return SUCCESS;
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 
-simdjson_inline bool simdjson_result::is_negative() noexcept {
+simdjson_inline bool simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 
 
 #if SIMDJSON_EXCEPTIONS
-template ::value == false>::type>
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+template ::value == false>::type>
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator westmere::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator lsx::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator westmere::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator lsx::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator westmere::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator lsx::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator westmere::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator lsx::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   if (error()) { return error(); }
   return first.at_end();
 }
 
 
-simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
+simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
 
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
@@ -117184,7 +150028,7 @@ simdjson_inline simdjson_result> simdjson
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -117194,7 +150038,7 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result::simdjson_result(westmere::ondemand::document_reference value, error_code error)
-  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
+simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::document_reference value, error_code error)
+  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
 
 
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(westmere::ondemand::document_reference &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lsx::ondemand::document_reference &out) & noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(westmere::ondemand::document_reference &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lsx::ondemand::document_reference &out) && noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+simdjson_inline simdjson_result::operator T() noexcept(false) {
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator westmere::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator lsx::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator westmere::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator lsx::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator westmere::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator lsx::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator westmere::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator lsx::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
@@ -117541,7 +150385,7 @@ simdjson_inline simdjson_result> simdjson
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -117549,9 +150393,9 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -117973,22 +150817,22 @@ inline void document_stream::start_stage1_thread() noexcept {
 #endif // SIMDJSON_THREADS_ENABLED
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
-  westmere::ondemand::document_stream &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lsx::ondemand::document_stream &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
@@ -117996,9 +150840,9 @@ simdjson_inline simdjson_result::simdjson_r
 }
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H
-/* end file simdjson/generic/ondemand/document_stream-inl.h for westmere */
-/* including simdjson/generic/ondemand/field-inl.h for westmere: #include "simdjson/generic/ondemand/field-inl.h" */
-/* begin file simdjson/generic/ondemand/field-inl.h for westmere */
+/* end file simdjson/generic/ondemand/document_stream-inl.h for lsx */
+/* including simdjson/generic/ondemand/field-inl.h for lsx: #include "simdjson/generic/ondemand/field-inl.h" */
+/* begin file simdjson/generic/ondemand/field-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -118010,7 +150854,7 @@ simdjson_inline simdjson_result::simdjson_r
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 // clang 6 does not think the default constructor can be noexcept, so we make it explicit
@@ -118074,53 +150918,53 @@ simdjson_inline value field::value() && noexcept {
 }
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  westmere::ondemand::field &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lsx::ondemand::field &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::key() noexcept {
+simdjson_inline simdjson_result simdjson_result::key() noexcept {
   if (error()) { return error(); }
   return first.key();
 }
 
-simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.key_raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
+simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
   if (error()) { return error(); }
   return first.escaped_key();
 }
 
-simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(allow_replacement);
 }
 
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(receiver, allow_replacement);
 }
 
-simdjson_inline simdjson_result simdjson_result::value() noexcept {
+simdjson_inline simdjson_result simdjson_result::value() noexcept {
   if (error()) { return error(); }
   return std::move(first.value());
 }
@@ -118128,9 +150972,9 @@ simdjson_inline simdjson_result simdjson_result simdjson_result= &parser->implementation->structural_indexes[0] );
   SIMDJSON_ASSUME( position < &parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] );
-#else
-  (void)position; // Suppress unused parameter warning
 #endif
 }
 
@@ -118491,7 +151334,11 @@ simdjson_inline token_position json_iterator::position() const noexcept {
 simdjson_inline simdjson_result json_iterator::unescape(raw_json_string in, bool allow_replacement) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape(in, _string_buf_loc, allow_replacement);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape(in, _string_buf_loc, allow_replacement);
@@ -118501,7 +151348,11 @@ simdjson_inline simdjson_result json_iterator::unescape(raw_js
 simdjson_inline simdjson_result json_iterator::unescape_wobbly(raw_json_string in) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape_wobbly(in, _string_buf_loc);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape_wobbly(in, _string_buf_loc);
@@ -118564,22 +151415,22 @@ simdjson_warn_unused simdjson_inline bool json_iterator::copy_to_buffer(const ui
 }
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::json_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::json_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/json_iterator-inl.h for westmere */
-/* including simdjson/generic/ondemand/json_type-inl.h for westmere: #include "simdjson/generic/ondemand/json_type-inl.h" */
-/* begin file simdjson/generic/ondemand/json_type-inl.h for westmere */
+/* end file simdjson/generic/ondemand/json_iterator-inl.h for lsx */
+/* including simdjson/generic/ondemand/json_type-inl.h for lsx: #include "simdjson/generic/ondemand/json_type-inl.h" */
+/* begin file simdjson/generic/ondemand/json_type-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -118590,7 +151441,7 @@ simdjson_inline simdjson_result::simdjson_res
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept {
@@ -118684,22 +151535,22 @@ simdjson_inline void number::skip_double() noexcept {
 }
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::json_type &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::json_type &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
-/* end file simdjson/generic/ondemand/json_type-inl.h for westmere */
-/* including simdjson/generic/ondemand/logger-inl.h for westmere: #include "simdjson/generic/ondemand/logger-inl.h" */
-/* begin file simdjson/generic/ondemand/logger-inl.h for westmere */
+/* end file simdjson/generic/ondemand/json_type-inl.h for lsx */
+/* including simdjson/generic/ondemand/logger-inl.h for lsx: #include "simdjson/generic/ondemand/logger-inl.h" */
+/* begin file simdjson/generic/ondemand/logger-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -118714,7 +151565,7 @@ simdjson_inline simdjson_result::simdjson_result(
 #include 
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 namespace logger {
 
@@ -118921,13 +151772,13 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 
 } // namespace logger
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
-/* end file simdjson/generic/ondemand/logger-inl.h for westmere */
-/* including simdjson/generic/ondemand/object-inl.h for westmere: #include "simdjson/generic/ondemand/object-inl.h" */
-/* begin file simdjson/generic/ondemand/object-inl.h for westmere */
+/* end file simdjson/generic/ondemand/logger-inl.h for lsx */
+/* including simdjson/generic/ondemand/object-inl.h for lsx: #include "simdjson/generic/ondemand/object-inl.h" */
+/* begin file simdjson/generic/ondemand/object-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -118947,7 +151798,7 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 simdjson_inline simdjson_result object::find_field_unordered(const std::string_view key) & noexcept {
@@ -119221,55 +152072,55 @@ simdjson_warn_unused simdjson_inline error_code object::extract_into(T& out) & n
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::object &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::object &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field_unordered(key);
+  return std::forward(first).find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first)[key];
+  return std::forward(first)[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field(key);
+  return std::forward(first).find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
     std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -119277,27 +152128,27 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
 
-inline simdjson_result simdjson_result::reset() noexcept {
+inline simdjson_result simdjson_result::reset() noexcept {
   if (error()) { return error(); }
   return first.reset();
 }
 
-inline simdjson_result simdjson_result::is_empty() noexcept {
+inline simdjson_result simdjson_result::is_empty() noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
 
-simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
 
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
@@ -119305,9 +152156,9 @@ simdjson_inline  simdjson_result simdjson_result simdjson_result object_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  // We must call * once per iteration.
+  SIMDJSON_ASSUME(!has_been_referenced);
+  has_been_referenced = true;
+#endif
   error_code error = iter.error();
   if (error) { iter.abandon(); return error; }
   auto result = field::start(iter);
@@ -119349,6 +152205,11 @@ simdjson_inline bool object_iterator::operator!=(const object_iterator &) const
 SIMDJSON_PUSH_DISABLE_WARNINGS
 SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
 simdjson_inline object_iterator &object_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   // Before calling ++, we must have called *.
+   SIMDJSON_ASSUME(has_been_referenced);
+   has_been_referenced = false;
+#endif
   // TODO this is a safety rail ... users should exit loops as soon as they receive an error.
   // Nonetheless, let's see if performance is OK with this if statement--the compiler may give it to us for free.
   if (!iter.is_open()) { return *this; } // Iterator will be released if there is an error
@@ -119404,39 +152265,39 @@ SIMDJSON_POP_DISABLE_WARNINGS
 //
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  westmere::ondemand::object_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lsx::ondemand::object_iterator &&value
 ) noexcept
-  : implementation_simdjson_result_base(std::forward(value))
+  : implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
 // Checks for ']' and ','
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++first;
@@ -119446,9 +152307,9 @@ simdjson_inline simdjson_result &simdjson_r
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/object_iterator-inl.h for westmere */
-/* including simdjson/generic/ondemand/parser-inl.h for westmere: #include "simdjson/generic/ondemand/parser-inl.h" */
-/* begin file simdjson/generic/ondemand/parser-inl.h for westmere */
+/* end file simdjson/generic/ondemand/object_iterator-inl.h for lsx */
+/* including simdjson/generic/ondemand/parser-inl.h for lsx: #include "simdjson/generic/ondemand/parser-inl.h" */
+/* begin file simdjson/generic/ondemand/parser-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -119465,7 +152326,7 @@ simdjson_inline simdjson_result &simdjson_r
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 simdjson_inline parser::parser(size_t max_capacity) noexcept
@@ -119675,22 +152536,22 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser::
 
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::parser &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::parser &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
-/* end file simdjson/generic/ondemand/parser-inl.h for westmere */
-/* including simdjson/generic/ondemand/raw_json_string-inl.h for westmere: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for westmere */
+/* end file simdjson/generic/ondemand/parser-inl.h for lsx */
+/* including simdjson/generic/ondemand/raw_json_string-inl.h for lsx: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -119703,7 +152564,7 @@ simdjson_inline simdjson_result::simdjson_result(err
 
 namespace simdjson {
 
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 simdjson_inline raw_json_string::raw_json_string(const uint8_t * _buf) noexcept : buf{_buf} {}
@@ -119817,337 +152678,98 @@ simdjson_inline bool raw_json_string::is_equal(const char* target) const noexcep
   // the raw content is quote terminated within a valid JSON string.
   const char * r{raw()};
   size_t pos{0};
-  bool escaping{false};
-  for(;target[pos];pos++) {
-    if(r[pos] != target[pos]) { return false; }
-    // if target is a compile-time constant and it is free from
-    // quotes, then the next part could get optimized away through
-    // inlining.
-    if((target[pos] == '"') && !escaping) {
-      // We have reached the end of the raw_json_string but
-      // the target is not done.
-      return false;
-    } else if(target[pos] == '\\') {
-      escaping = !escaping;
-    } else {
-      escaping = false;
-    }
-  }
-  if(r[pos] != '"') { return false; }
-  return true;
-}
-
-simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept {
-  return a.unsafe_is_equal(c);
-}
-
-simdjson_unused simdjson_inline bool operator==(std::string_view c, const raw_json_string &a) noexcept {
-  return a == c;
-}
-
-simdjson_unused simdjson_inline bool operator!=(const raw_json_string &a, std::string_view c) noexcept {
-  return !(a == c);
-}
-
-simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_json_string &a) noexcept {
-  return !(a == c);
-}
-
-
-simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape(json_iterator &iter, bool allow_replacement) const noexcept {
-  return iter.unescape(*this, allow_replacement);
-}
-
-simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape_wobbly(json_iterator &iter) const noexcept {
-  return iter.unescape_wobbly(*this);
-}
-
-simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, const raw_json_string &str) noexcept {
-  bool in_escape = false;
-  const char *s = str.raw();
-  while (true) {
-    switch (*s) {
-      case '\\': in_escape = !in_escape; break;
-      case '"': if (in_escape) { in_escape = false; } else { return out; } break;
-      default: if (in_escape) { in_escape = false; }
-    }
-    out << *s;
-    s++;
-  }
-}
-
-} // namespace ondemand
-} // namespace westmere
-} // namespace simdjson
-
-namespace simdjson {
-
-simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::raw_json_string &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
-
-simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
-  if (error()) { return error(); }
-  return first.raw();
-}
-simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
-  if (error()) { return error(); }
-  return first[i];
-}
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(westmere::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
-  if (error()) { return error(); }
-  return first.unescape(iter, allow_replacement);
-}
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(westmere::ondemand::json_iterator &iter) const noexcept {
-  if (error()) { return error(); }
-  return first.unescape_wobbly(iter);
-}
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
-/* end file simdjson/generic/ondemand/raw_json_string-inl.h for westmere */
-/* including simdjson/generic/ondemand/serialization-inl.h for westmere: #include "simdjson/generic/ondemand/serialization-inl.h" */
-/* begin file simdjson/generic/ondemand/serialization-inl.h for westmere */
-#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
-/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_builder.h" */
-/* amalgamation skipped (editor-only): #endif */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-inline std::string_view trim(const std::string_view str) noexcept {
-  // We can almost surely do better by rolling our own find_first_not_of function.
-  size_t first = str.find_first_not_of(" \t\n\r");
-  // If we have the empty string (just white space), then no trimming is possible, and
-  // we return the empty string_view.
-  if (std::string_view::npos == first) { return std::string_view(); }
-  size_t last = str.find_last_not_of(" \t\n\r");
-  return str.substr(first, (last - first + 1));
-}
-
-
-inline simdjson_result to_json_string(westmere::ondemand::document& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(westmere::ondemand::document_reference& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(westmere::ondemand::value& x) noexcept {
-  /**
-   * If we somehow receive a value that has already been consumed,
-   * then the following code could be in trouble. E.g., we create
-   * an array as needed, but if an array was already created, then
-   * it could be bad.
-   */
-  using namespace westmere::ondemand;
-  westmere::ondemand::json_type t;
-  auto error = x.type().get(t);
-  if(error != SUCCESS) { return error; }
-  switch (t)
-  {
-    case json_type::array:
-    {
-      westmere::ondemand::array array;
-      error = x.get_array().get(array);
-      if(error) { return error; }
-      return to_json_string(array);
-    }
-    case json_type::object:
-    {
-      westmere::ondemand::object object;
-      error = x.get_object().get(object);
-      if(error) { return error; }
-      return to_json_string(object);
+  bool escaping{false};
+  for(;target[pos];pos++) {
+    if(r[pos] != target[pos]) { return false; }
+    // if target is a compile-time constant and it is free from
+    // quotes, then the next part could get optimized away through
+    // inlining.
+    if((target[pos] == '"') && !escaping) {
+      // We have reached the end of the raw_json_string but
+      // the target is not done.
+      return false;
+    } else if(target[pos] == '\\') {
+      escaping = !escaping;
+    } else {
+      escaping = false;
     }
-    default:
-      return trim(x.raw_json_token());
   }
+  if(r[pos] != '"') { return false; }
+  return true;
 }
 
-inline simdjson_result to_json_string(westmere::ondemand::object& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
+simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept {
+  return a.unsafe_is_equal(c);
 }
 
-inline simdjson_result to_json_string(westmere::ondemand::array& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
+simdjson_unused simdjson_inline bool operator==(std::string_view c, const raw_json_string &a) noexcept {
+  return a == c;
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_unused simdjson_inline bool operator!=(const raw_json_string &a, std::string_view c) noexcept {
+  return !(a == c);
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_json_string &a) noexcept {
+  return !(a == c);
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape(json_iterator &iter, bool allow_replacement) const noexcept {
+  return iter.unescape(*this, allow_replacement);
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape_wobbly(json_iterator &iter) const noexcept {
+  return iter.unescape_wobbly(*this);
 }
-} // namespace simdjson
-
-namespace simdjson { namespace westmere { namespace ondemand {
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
+simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, const raw_json_string &str) noexcept {
+  bool in_escape = false;
+  const char *s = str.raw();
+  while (true) {
+    switch (*s) {
+      case '\\': in_escape = !in_escape; break;
+      case '"': if (in_escape) { in_escape = false; } else { return out; } break;
+      default: if (in_escape) { in_escape = false; }
+    }
+    out << *s;
+    s++;
   }
 }
-#endif
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
+} // namespace ondemand
+} // namespace lsx
+} // namespace simdjson
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::document_reference& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
+namespace simdjson {
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
+simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::raw_json_string &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
+  if (error()) { return error(); }
+  return first.raw();
 }
-inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
-  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
+simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
+  if (error()) { return error(); }
+  return first[i];
 }
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(lsx::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
+  if (error()) { return error(); }
+  return first.unescape(iter, allow_replacement);
 }
-#endif
-}}} // namespace simdjson::westmere::ondemand
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(lsx::ondemand::json_iterator &iter) const noexcept {
+  if (error()) { return error(); }
+  return first.unescape_wobbly(iter);
+}
+} // namespace simdjson
 
-#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-/* end file simdjson/generic/ondemand/serialization-inl.h for westmere */
-/* including simdjson/generic/ondemand/token_iterator-inl.h for westmere: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/token_iterator-inl.h for westmere */
+#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
+/* end file simdjson/generic/ondemand/raw_json_string-inl.h for lsx */
+/* including simdjson/generic/ondemand/token_iterator-inl.h for lsx: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/token_iterator-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -120158,7 +152780,7 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::westmere::ondemand:
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 simdjson_inline token_iterator::token_iterator(
@@ -120229,22 +152851,22 @@ simdjson_inline bool token_iterator::operator<=(const token_iterator &other) con
 }
 
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::token_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::token_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/token_iterator-inl.h for westmere */
-/* including simdjson/generic/ondemand/value_iterator-inl.h for westmere: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/value_iterator-inl.h for westmere */
+/* end file simdjson/generic/ondemand/token_iterator-inl.h for lsx */
+/* including simdjson/generic/ondemand/value_iterator-inl.h for lsx: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/value_iterator-inl.h for lsx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -120259,7 +152881,7 @@ simdjson_inline simdjson_result::simdjson_re
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 
 simdjson_inline value_iterator::value_iterator(
@@ -120341,7 +152963,6 @@ simdjson_warn_unused simdjson_inline error_code value_iterator::end_container()
 
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::has_next_field() noexcept {
   assert_at_next();
-
   // It's illegal to call this unless there are more tokens: anything that ends in } or ] is
   // obligated to verify there are more tokens if they are not the top level.
   switch (*_json_iter->return_current_and_advance()) {
@@ -120763,9 +153384,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_string(string_type& receiver, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_string(allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_wobbly_string() noexcept {
@@ -120853,7 +153478,7 @@ simdjson_inline simdjson_result value_iterator::is_root_integer(bool check
   return answer;
 }
 
-simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
+simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
   auto max_len = peek_root_length();
   auto json = peek_root_scalar("number");
   // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
@@ -120905,9 +153530,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_root_string(check_trailing, allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_wobbly_string(bool check_trailing) noexcept {
@@ -120982,1463 +153611,613 @@ simdjson_warn_unused simdjson_inline simdjson_result value_iterator::ge
   auto result = numberparsing::parse_integer_in_string(tmpbuf);
   if(result.error() == SUCCESS) {
     if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("int64");
-  }
-  return result;
-}
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("double");
-  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
-  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
-  // number: -0.e-308.
-  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
-  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
-    return NUMBER_ERROR;
-  }
-  auto result = numberparsing::parse_double(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("double");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double_in_string(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("double");
-  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
-  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
-  // number: -0.e-308.
-  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
-  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
-    return NUMBER_ERROR;
-  }
-  auto result = numberparsing::parse_double_in_string(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("double");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_bool(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("bool");
-  // We have a boolean if we have either "true" or "false" and the next character is either
-  // a structural character or whitespace. We also check that the length is correct:
-  // "true" and "false" are 4 and 5 characters long, respectively.
-  bool value_true = (max_len >= 4 && !atomparsing::str4ncmp(json, "true") &&
-  (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
-  bool value_false = (max_len >= 5 && !atomparsing::str4ncmp(json, "false") &&
-  (max_len == 5 || jsoncharutils::is_structural_or_whitespace(json[5])));
-  if(value_true == false && value_false == false) { return incorrect_type_error("Not a boolean"); }
-  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-  advance_root_scalar("bool");
-  return value_true;
-}
-
-simdjson_inline simdjson_result value_iterator::is_root_null(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("null");
-  bool result = (max_len >= 4 && !atomparsing::str4ncmp(json, "null") &&
-         (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
-  if(result) { // we have something that looks like a null.
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("null");
-  } else if (json[0] == 'n') {
-    return incorrect_type_error("Not a null but starts with n");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
-
-  return _json_iter->skip_child(depth());
-}
-
-simdjson_inline value_iterator value_iterator::child() const noexcept {
-  assert_at_child();
-  return { _json_iter, depth()+1, _json_iter->token.position() };
-}
-
-// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
-// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
-// marked non-inline.
-SIMDJSON_PUSH_DISABLE_WARNINGS
-SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
-simdjson_inline bool value_iterator::is_open() const noexcept {
-  return _json_iter->depth() >= depth();
-}
-SIMDJSON_POP_DISABLE_WARNINGS
-
-simdjson_inline bool value_iterator::at_end() const noexcept {
-  return _json_iter->at_end();
-}
-
-simdjson_inline bool value_iterator::at_start() const noexcept {
-  return _json_iter->token.position() == start_position();
-}
-
-simdjson_inline bool value_iterator::at_first_field() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  return _json_iter->token.position() == start_position() + 1;
-}
-
-simdjson_inline void value_iterator::abandon() noexcept {
-  _json_iter->abandon();
-}
-
-simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
-  return _depth;
-}
-simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
-  return _json_iter->error;
-}
-simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
-  return _json_iter->string_buf_loc();
-}
-simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
-  return *_json_iter;
-}
-simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
-  return *_json_iter;
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
-  return _json_iter->peek(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
-  return _json_iter->peek_length(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
-  return _json_iter->peek_root_length(start_position());
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return peek_start(); }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return; }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
-  logger::log_start_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  const uint8_t *json;
-  if (!is_at_start()) {
-#if SIMDJSON_DEVELOPMENT_CHECKS
-    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
-#endif
-    json = peek_start();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-  } else {
-    assert_at_start();
-    /**
-     * We should be prudent. Let us peek. If it is not the right type, we
-     * return an error. Only once we have determined that we have the right
-     * type are we allowed to advance!
-     */
-    json = _json_iter->peek();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-    _json_iter->return_current_and_advance();
-  }
-
-
-  return SUCCESS;
-}
-
-
-simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_root();
-  return _json_iter->peek();
-}
-simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_non_root_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_root();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_non_root_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
-  logger::log_error(*_json_iter, start_position(), depth(), message);
-  return INCORRECT_TYPE;
-}
-
-simdjson_inline bool value_iterator::is_at_start() const noexcept {
-  return position() == start_position();
-}
-
-simdjson_inline bool value_iterator::is_at_key() const noexcept {
-  // Keys are at the same depth as the object.
-  // Note here that we could be safer and check that we are within an object,
-  // but we do not.
-  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
-}
-
-simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
-  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
-  auto delta = position() - start_position();
-  return delta == 1 || delta == 2;
-}
-
-inline void value_iterator::assert_at_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_container_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_next() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-simdjson_inline void value_iterator::move_at_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position);
-}
-
-simdjson_inline void value_iterator::move_at_container_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position + 1);
-}
-
-simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_array();
-}
-
-simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_object();
-}
-
-inline void value_iterator::assert_at_child() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_root() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth == 1 );
-}
-
-inline void value_iterator::assert_at_non_root_start() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth > 1 );
-}
-
-inline void value_iterator::assert_is_valid() const noexcept {
-  SIMDJSON_ASSUME( _json_iter != nullptr );
-}
-
-simdjson_inline bool value_iterator::is_valid() const noexcept {
-  return _json_iter != nullptr;
-}
-
-simdjson_inline simdjson_result value_iterator::type() const noexcept {
-  switch (*peek_start()) {
-    case '{':
-      return json_type::object;
-    case '[':
-      return json_type::array;
-    case '"':
-      return json_type::string;
-    case 'n':
-      return json_type::null;
-    case 't': case 'f':
-      return json_type::boolean;
-    case '-':
-    case '0': case '1': case '2': case '3': case '4':
-    case '5': case '6': case '7': case '8': case '9':
-      return json_type::number;
-    default:
-      return json_type::unknown;
-  }
-}
-
-simdjson_inline token_position value_iterator::start_position() const noexcept {
-  return _start_position;
-}
-
-simdjson_inline token_position value_iterator::position() const noexcept {
-  return _json_iter->position();
-}
-
-simdjson_inline token_position value_iterator::end_position() const noexcept {
-  return _json_iter->end_position();
-}
-
-simdjson_inline token_position value_iterator::last_position() const noexcept {
-  return _json_iter->last_position();
-}
-
-simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
-  return _json_iter->report_error(error, message);
-}
-
-} // namespace ondemand
-} // namespace westmere
-} // namespace simdjson
-
-namespace simdjson {
-
-simdjson_inline simdjson_result::simdjson_result(westmere::ondemand::value_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/value_iterator-inl.h for westmere */
-
-// JSON builder inline definitions
-/* including simdjson/generic/ondemand/json_string_builder-inl.h for westmere: #include "simdjson/generic/ondemand/json_string_builder-inl.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder-inl.h for westmere */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand
- * directory but we will move it to a builder directory later.
- */
-#include 
-#include 
-#include 
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-/*
- * Empirically, we have found that an inlined optimization is important for
- * performance. The following macros are not ideal. We should find a better
- * way to inline the code.
- */
-
-#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
-    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
-     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
-#endif
-#endif
-
-#if defined(__aarch64__) || defined(_M_ARM64)
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
-#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
-#endif
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-#include 
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#include 
-#endif
-
-namespace simdjson {
-namespace westmere {
-namespace builder {
-
-static SIMDJSON_CONSTEXPR_LAMBDA std::array
-    json_quotable_character = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-/**
-
-A possible SWAR implementation of has_json_escapable_byte. It is not used
-because it is slower than the current implementation. It is kept here for
-reference (to show that we tried it).
-
-inline bool has_json_escapable_byte(uint64_t x) {
-  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
-  uint64_t xor2 = x ^ 0x0202020202020202ULL;
-  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
-  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
-  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
-  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
-}
-
-**/
-
-SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
-simple_needs_escaping(std::string_view v) {
-  for (char c : v) {
-    // a table lookup is faster than a series of comparisons
-    if (json_quotable_character[static_cast(c)]) {
-      return true;
-    }
-  }
-  return false;
-}
-
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  uint8x16_t running = vdupq_n_u8(0);
-  uint8x16_t v34 = vdupq_n_u8(34);
-  uint8x16_t v92 = vdupq_n_u8(92);
-
-  for (; i + 15 < view.size(); i += 16) {
-    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  if (i < view.size()) {
-    uint8x16_t word =
-        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
-}
-#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  __m128i running = _mm_setzero_si128();
-  for (; i + 15 < view.size(); i += 16) {
-
-    __m128i word =
-        _mm_loadu_si128(reinterpret_cast(view.data() + i));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  if (i < view.size()) {
-    __m128i word = _mm_loadu_si128(
-        reinterpret_cast(view.data() + view.length() - 16));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  return _mm_movemask_epi8(running) != 0;
-}
-#else
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  return simple_needs_escaping(view);
-}
-#endif
-
-SIMDJSON_CONSTEXPR_LAMBDA inline size_t
-find_next_json_quotable_character(const std::string_view view,
-                                  size_t location) noexcept {
-
-  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
-    if (json_quotable_character[static_cast(*pos)]) {
-      return pos - view.begin();
-    }
-  }
-  return size_t(view.size());
-}
-
-SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
-    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
-    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
-    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
-    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
-    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
-
-// All Unicode characters may be placed within the quotation marks, except for
-// the characters that MUST be escaped: quotation mark, reverse solidus, and the
-// control characters (U+0000 through U+001F). There are two-character sequence
-// escape representations of some popular characters:
-// \", \\, \b, \f, \n, \r, \t.
-SIMDJSON_CONSTEXPR_LAMBDA void escape_json_char(char c, char *&out) {
-  if (c == '"') {
-    memcpy(out, "\\\"", 2);
-    out += 2;
-  } else if (c == '\\') {
-    memcpy(out, "\\\\", 2);
-    out += 2;
-  } else {
-    std::string_view v = control_chars[uint8_t(c)];
-    memcpy(out, v.data(), v.size());
-    out += v.size();
-  }
-}
-
-inline size_t write_string_escaped(const std::string_view input, char *out) {
-  size_t mysize = input.size();
-  if (!fast_needs_escaping(input)) { // fast path!
-    memcpy(out, input.data(), input.size());
-    return input.size();
-  }
-  const char *const initout = out;
-  size_t location = find_next_json_quotable_character(input, 0);
-  memcpy(out, input.data(), location);
-  out += location;
-  escape_json_char(input[location], out);
-  location += 1;
-  while (location < mysize) {
-    size_t newlocation = find_next_json_quotable_character(input, location);
-    memcpy(out, input.data() + location, newlocation - location);
-    out += newlocation - location;
-    location = newlocation;
-    if (location == mysize) {
-      break;
-    }
-    escape_json_char(input[location], out);
-    location += 1;
-  }
-  return out - initout;
-}
-
-simdjson_inline string_builder::string_builder(size_t initial_capacity)
-    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
-      capacity(buffer.get() != nullptr ? initial_capacity : 0),
-      is_valid(buffer.get() != nullptr) {}
-
-simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
-  // We use the convention that when is_valid is false, then the capacity and
-  // the position are 0.
-  // Most of the time, this function will return true.
-  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
-    return true;
-  }
-  // check for overflow, most of the time there is no overflow
-  if (simdjson_likely(position + upcoming_bytes < position)) {
-    return false;
-  }
-  // We will rarely get here.
-  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
-  // If the buffer allocation failed, we set is_valid to false.
-  return is_valid;
-}
-
-simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
-  if (!is_valid) {
-    return;
-  }
-  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
-  if (new_buffer.get() == nullptr) {
-    set_valid(false);
-    return;
-  }
-  std::memcpy(new_buffer.get(), buffer.get(), position);
-  buffer.swap(new_buffer);
-  capacity = desired_capacity;
-}
-
-simdjson_inline void string_builder::set_valid(bool valid) noexcept {
-  if (!valid) {
-    is_valid = false;
-    capacity = 0;
-    position = 0;
-    buffer.reset();
-  } else {
-    is_valid = true;
-  }
-}
-
-simdjson_inline size_t string_builder::size() const noexcept {
-  return position;
-}
-
-simdjson_inline void string_builder::append(char c) noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = c;
-  }
-}
-
-simdjson_inline void string_builder::append_null() noexcept {
-  constexpr char null_literal[] = "null";
-  constexpr size_t null_len = sizeof(null_literal) - 1;
-  if (capacity_check(null_len)) {
-    std::memcpy(buffer.get() + position, null_literal, null_len);
-    position += null_len;
-  }
-}
-
-simdjson_inline void string_builder::clear() noexcept {
-  position = 0;
-  // if it was invalid, we should try to repair it
-  if (!is_valid) {
-    capacity = 0;
-    buffer.reset();
-    is_valid = true;
-  }
-}
-
-namespace internal {
-
-template ::value>::type>
-simdjson_really_inline int int_log2(number_type x) {
-  return 63 - leading_zeroes(uint64_t(x) | 1);
-}
-
-simdjson_really_inline int fast_digit_count_32(uint32_t x) {
-  static uint64_t table[] = {
-      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
-      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
-      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
-      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
-      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
-      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
-      42949672960, 42949672960};
-  return uint32_t((x + table[int_log2(x)]) >> 32);
-}
-
-simdjson_really_inline int fast_digit_count_64(uint64_t x) {
-  static uint64_t table[] = {9,
-                             99,
-                             999,
-                             9999,
-                             99999,
-                             999999,
-                             9999999,
-                             99999999,
-                             999999999,
-                             9999999999,
-                             99999999999,
-                             999999999999,
-                             9999999999999,
-                             99999999999999,
-                             999999999999999ULL,
-                             9999999999999999ULL,
-                             99999999999999999ULL,
-                             999999999999999999ULL,
-                             9999999999999999999ULL};
-  int y = (19 * int_log2(x) >> 6);
-  y += x > table[y];
-  return y + 1;
-}
-
-template ::value>::type>
-simdjson_really_inline size_t digit_count(number_type v) noexcept {
-  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
-                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
-                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
-  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
-    return fast_digit_count_32(static_cast(v));
-  }
-  else {
-    return fast_digit_count_64(static_cast(v));
-  }
-}
-static const char decimal_table[200] = {
-    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
-    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
-    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
-    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
-    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
-    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
-    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
-    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
-    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
-    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
-    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
-    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
-    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
-    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
-    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
-    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
-    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
-};
-} // namespace internal
-
-template 
-simdjson_inline void string_builder::append(number_type v) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_integral::value ||
-                    std::is_floating_point::value,
-                "Unsupported number type");
-  // If C++17 is available, we can 'if constexpr' here.
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    if (v) {
-      constexpr char true_literal[] = "true";
-      constexpr size_t true_len = sizeof(true_literal) - 1;
-      if (capacity_check(true_len)) {
-        std::memcpy(buffer.get() + position, true_literal, true_len);
-        position += true_len;
-      }
-    } else {
-      constexpr char false_literal[] = "false";
-      constexpr size_t false_len = sizeof(false_literal) - 1;
-      if (capacity_check(false_len)) {
-        std::memcpy(buffer.get() + position, false_literal, false_len);
-        position += false_len;
-      }
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      unsigned_type pv = static_cast(v);
-      size_t dc = internal::digit_count(pv);
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      bool negative = v < 0;
-      unsigned_type pv = static_cast(v);
-      if (negative) {
-        pv = 0 - pv; // the 0 is for Microsoft
-      }
-      size_t dc = internal::digit_count(pv);
-      // by always writing the minus sign, we avoid the branch.
-      buffer.get()[position] = '-';
-      position += negative ? 1 : 0;
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
+    advance_root_scalar("int64");
   }
-  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
-    constexpr size_t max_number_size = 24;
-    if (capacity_check(max_number_size)) {
-      // We could specialize for float.
-      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
-                                               double(v));
-      position = end - buffer.get();
-    }
+  return result;
+}
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_double(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
   }
+  return result;
 }
 
-simdjson_inline void
-string_builder::escape_and_append(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(6 * input.size())) {
-    position += write_string_escaped(input, buffer.get() + position);
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double_in_string(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_double_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
   }
+  return result;
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * input.size())) {
-    buffer.get()[position++] = '"';
-    position += write_string_escaped(input, buffer.get() + position);
-    buffer.get()[position++] = '"';
-  }
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_bool(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("bool");
+  // We have a boolean if we have either "true" or "false" and the next character is either
+  // a structural character or whitespace. We also check that the length is correct:
+  // "true" and "false" are 4 and 5 characters long, respectively.
+  bool value_true = (max_len >= 4 && !atomparsing::str4ncmp(json, "true") &&
+  (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  bool value_false = (max_len >= 5 && !atomparsing::str4ncmp(json, "false") &&
+  (max_len == 5 || jsoncharutils::is_structural_or_whitespace(json[5])));
+  if(value_true == false && value_false == false) { return incorrect_type_error("Not a boolean"); }
+  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+  advance_root_scalar("bool");
+  return value_true;
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(char input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * 1)) {
-    buffer.get()[position++] = '"';
-    std::string_view cinput(&input, 1);
-    position += write_string_escaped(cinput, buffer.get() + position);
-    buffer.get()[position++] = '"';
+simdjson_inline simdjson_result value_iterator::is_root_null(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("null");
+  bool result = (max_len >= 4 && !atomparsing::str4ncmp(json, "null") &&
+         (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  if(result) { // we have something that looks like a null.
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("null");
+  } else if (json[0] == 'n') {
+    return incorrect_type_error("Not a null but starts with n");
   }
+  return result;
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(const char *input) noexcept {
-  std::string_view cinput(input);
-  escape_and_append_with_quotes(cinput);
+simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
+
+  return _json_iter->skip_child(depth());
 }
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
-  escape_and_append_with_quotes(constevalutil::string_constant::value);
+
+simdjson_inline value_iterator value_iterator::child() const noexcept {
+  assert_at_child();
+  return { _json_iter, depth()+1, _json_iter->token.position() };
 }
-#endif
 
-simdjson_inline void string_builder::append_raw(const char *c) noexcept {
-  size_t len = std::strlen(c);
-  append_raw(c, len);
+// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
+// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
+// marked non-inline.
+SIMDJSON_PUSH_DISABLE_WARNINGS
+SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
+simdjson_inline bool value_iterator::is_open() const noexcept {
+  return _json_iter->depth() >= depth();
 }
+SIMDJSON_POP_DISABLE_WARNINGS
 
-simdjson_inline void
-string_builder::append_raw(std::string_view input) noexcept {
-  if (capacity_check(input.size())) {
-    std::memcpy(buffer.get() + position, input.data(), input.size());
-    position += input.size();
-  }
+simdjson_inline bool value_iterator::at_end() const noexcept {
+  return _json_iter->at_end();
 }
 
-simdjson_inline void string_builder::append_raw(const char *str,
-                                                size_t len) noexcept {
-  if (capacity_check(len)) {
-    std::memcpy(buffer.get() + position, str, len);
-    position += len;
-  }
+simdjson_inline bool value_iterator::at_start() const noexcept {
+  return _json_iter->token.position() == start_position();
 }
-#if SIMDJSON_SUPPORTS_CONCEPTS
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-simdjson_inline void string_builder::append(const T &opt) {
-  if (opt) {
-    append(*opt);
-  } else {
-    append_null();
-  }
+
+simdjson_inline bool value_iterator::at_first_field() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  return _json_iter->token.position() == start_position() + 1;
 }
 
-template 
-  requires(require_custom_serialization)
-simdjson_inline void string_builder::append(T &&val) {
-  serialize(*this, std::forward(val));
+simdjson_inline void value_iterator::abandon() noexcept {
+  _json_iter->abandon();
 }
 
-template 
-  requires(std::is_convertible::value ||
-           std::is_same::value)
-simdjson_inline void string_builder::append(const T &value) {
-  escape_and_append_with_quotes(value);
+simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
+  return _depth;
+}
+simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
+  return _json_iter->error;
+}
+simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
+  return _json_iter->string_buf_loc();
+}
+simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
+  return *_json_iter;
+}
+simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
+  return *_json_iter;
 }
-#endif
 
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-// Support for range-based appending (std::ranges::view, etc.)
-template 
-  requires(!std::is_convertible::value && !require_custom_serialization)
-simdjson_inline void string_builder::append(const R &range) noexcept {
-  auto it = std::ranges::begin(range);
-  auto end = std::ranges::end(range);
-  if constexpr (concepts::is_pair>) {
-    start_object();
+simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
+  return _json_iter->peek(start_position());
+}
+simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
+  return _json_iter->peek_length(start_position());
+}
+simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
+  return _json_iter->peek_root_length(start_position());
+}
 
-    if (it == end) {
-      end_object();
-      return; // Handle empty range
-    }
-    // Append first item without leading comma
-    append_key_value(it->first, it->second);
-    ++it;
+simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return peek_start(); }
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append_key_value(it->first, it->second);
-    }
-    end_object();
-  } else {
-    start_array();
-    if (it == end) {
-      end_array();
-      return; // Handle empty range
-    }
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  return _json_iter->peek();
+}
 
-    // Append first item without leading comma
-    append(*it);
-    ++it;
+simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return; }
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append(*it);
-    }
-    end_array();
-  }
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
 
+simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
+  logger::log_start_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  const uint8_t *json;
+  if (!is_at_start()) {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
 #endif
+    json = peek_start();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+  } else {
+    assert_at_start();
+    /**
+     * We should be prudent. Let us peek. If it is not the right type, we
+     * return an error. Only once we have determined that we have the right
+     * type are we allowed to advance!
+     */
+    json = _json_iter->peek();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+    _json_iter->return_current_and_advance();
+  }
 
-#if SIMDJSON_EXCEPTIONS
-simdjson_inline string_builder::operator std::string() const noexcept(false) {
-  return std::string(operator std::string_view());
-}
 
-simdjson_inline string_builder::operator std::string_view() const
-    noexcept(false) simdjson_lifetime_bound {
-  return view();
+  return SUCCESS;
 }
-#endif
 
-simdjson_inline simdjson_result
-string_builder::view() const noexcept {
-  if (!is_valid) {
-    return simdjson::OUT_OF_CAPACITY;
-  }
-  return std::string_view(buffer.get(), position);
-}
 
-simdjson_inline simdjson_result string_builder::c_str() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position] = '\0';
-    return buffer.get();
-  }
-  return simdjson::OUT_OF_CAPACITY;
-}
+simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
 
-simdjson_inline bool string_builder::validate_unicode() const noexcept {
-  return simdjson::validate_utf8(buffer.get(), position);
+  assert_at_root();
+  return _json_iter->peek();
 }
+simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
 
-simdjson_inline void string_builder::start_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '{';
-  }
+  assert_at_non_root_start();
+  return _json_iter->peek();
 }
 
-simdjson_inline void string_builder::end_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '}';
-  }
-}
+simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
 
-simdjson_inline void string_builder::start_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '[';
-  }
+  assert_at_root();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
+simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
 
-simdjson_inline void string_builder::end_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ']';
-  }
+  assert_at_non_root_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
 
-simdjson_inline void string_builder::append_comma() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ',';
-  }
+simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
+  logger::log_error(*_json_iter, start_position(), depth(), message);
+  return INCORRECT_TYPE;
 }
 
-simdjson_inline void string_builder::append_colon() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ':';
-  }
+simdjson_inline bool value_iterator::is_at_start() const noexcept {
+  return position() == start_position();
 }
 
-template 
-simdjson_inline void
-string_builder::append_key_value(key_type key, value_type value) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_convertible::value,
-                "Unsupported key type");
-  escape_and_append_with_quotes(key);
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+simdjson_inline bool value_iterator::is_at_key() const noexcept {
+  // Keys are at the same depth as the object.
+  // Note here that we could be safer and check that we are within an object,
+  // but we do not.
+  //
+  // As long as we are at the object's depth, in a valid document,
+  // we will only ever be at { , : or the actual string key: ".
+  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
 }
 
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void
-string_builder::append_key_value(value_type value) noexcept {
-  escape_and_append_with_quotes();
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
+  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
+  auto delta = position() - start_position();
+  return delta == 1 || delta == 2;
 }
-#endif
 
-} // namespace builder
-} // namespace westmere
-} // namespace simdjson
+inline void value_iterator::assert_at_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-/* end file simdjson/generic/ondemand/json_string_builder-inl.h for westmere */
-/* including simdjson/generic/ondemand/json_builder.h for westmere: #include "simdjson/generic/ondemand/json_builder.h" */
-/* begin file simdjson/generic/ondemand/json_builder.h for westmere */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_BUILDER_H
+inline void value_iterator::assert_at_container_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-#if SIMDJSON_STATIC_REFLECTION
+inline void value_iterator::assert_at_next() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-// #include  // for std::define_static_string - header not available yet
+simdjson_inline void value_iterator::move_at_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position);
+}
 
-namespace simdjson {
-namespace westmere {
-namespace builder {
+simdjson_inline void value_iterator::move_at_container_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position + 1);
+}
 
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  auto it = t.begin();
-  auto end = t.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
-  }
-  b.append(']');
+simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_array();
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-constexpr void atom(string_builder &b, const T &t) {
-  b.escape_and_append_with_quotes(t);
+simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_object();
 }
 
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &m) {
-  if (m.empty()) {
-    b.append_raw("{}");
-    return;
-  }
-  b.append('{');
-  bool first = true;
-  for (const auto& [key, value] : m) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    // Keys must be convertible to string_view per the concept
-    b.escape_and_append_with_quotes(key);
-    b.append(':');
-    atom(b, value);
-  }
-  b.append('}');
+inline void value_iterator::assert_at_child() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
+  SIMDJSON_ASSUME( _depth > 0 );
 }
 
+inline void value_iterator::assert_at_root() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth == 1 );
+}
 
-template::value && !std::is_same_v>::type>
-constexpr void atom(string_builder &b, const number_type t) {
-  b.append(t);
+inline void value_iterator::assert_at_non_root_start() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth > 1 );
 }
 
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, t.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline void value_iterator::assert_is_valid() const noexcept {
+  SIMDJSON_ASSUME( _json_iter != nullptr );
 }
 
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &opt) {
-  if (opt) {
-    atom(b, opt.value());
-  } else {
-    b.append_raw("null");
-  }
+simdjson_inline bool value_iterator::is_valid() const noexcept {
+  return _json_iter != nullptr;
 }
 
-// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &ptr) {
-  if (ptr) {
-    atom(b, *ptr);
-  } else {
-    b.append_raw("null");
+simdjson_inline simdjson_result value_iterator::type() const noexcept {
+  switch (*peek_start()) {
+    case '{':
+      return json_type::object;
+    case '[':
+      return json_type::array;
+    case '"':
+      return json_type::string;
+    case 'n':
+      return json_type::null;
+    case 't': case 'f':
+      return json_type::boolean;
+    case '-':
+    case '0': case '1': case '2': case '3': case '4':
+    case '5': case '6': case '7': case '8': case '9':
+      return json_type::number;
+    default:
+      return json_type::unknown;
   }
 }
 
-// Support for enums - serialize as string representation using expand approach from P2996R12
-template 
-  requires(std::is_enum_v && !require_custom_serialization)
-void atom(string_builder &b, const T &e) {
-#if SIMDJSON_STATIC_REFLECTION
-  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
-  template for (constexpr auto enum_val : enumerators) {
-    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
-    if (e == [:enum_val:]) {
-      b.append_raw(enum_str);
-      return;
-    }
-  };
-  // Fallback to integer if enum value not found
-  atom(b, static_cast>(e));
-#else
-  // Fallback: serialize as integer if reflection not available
-  atom(b, static_cast>(e));
-#endif
+simdjson_inline token_position value_iterator::start_position() const noexcept {
+  return _start_position;
 }
 
-// Support for appendable containers that don't have operator[] (sets, etc.)
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &container) {
-  if (container.empty()) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  bool first = true;
-  for (const auto& item : container) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    atom(b, item);
-  }
-  b.append(']');
+simdjson_inline token_position value_iterator::position() const noexcept {
+  return _json_iter->position();
 }
 
-// append functions that delegate to atom functions for primitive types
-template 
-  requires(std::is_arithmetic_v && !std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::end_position() const noexcept {
+  return _json_iter->end_position();
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::last_position() const noexcept {
+  return _json_iter->last_position();
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
+  return _json_iter->report_error(error, message);
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
+} // namespace ondemand
+} // namespace lsx
+} // namespace simdjson
 
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::value_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
+/* end file simdjson/generic/ondemand/value_iterator-inl.h for lsx */
+/* including simdjson/generic/ondemand/serialization-inl.h for lsx: #include "simdjson/generic/ondemand/serialization-inl.h" */
+/* begin file simdjson/generic/ondemand/serialization-inl.h for lsx */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #endif */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+inline std::string_view trim(const std::string_view str) noexcept {
+  // We can almost surely do better by rolling our own find_first_not_of function.
+  size_t first = str.find_first_not_of(" \t\n\r");
+  // If we have the empty string (just white space), then no trimming is possible, and
+  // we return the empty string_view.
+  if (std::string_view::npos == first) { return std::string_view(); }
+  size_t last = str.find_last_not_of(" \t\n\r");
+  return str.substr(first, (last - first + 1));
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+
+inline simdjson_result to_json_string(lsx::ondemand::document& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// works for struct
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, z.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline simdjson_result to_json_string(lsx::ondemand::document_reference& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// works for container that have begin() and end() iterators
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  auto it = z.begin();
-  auto end = z.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
+inline simdjson_result to_json_string(lsx::ondemand::value& x) noexcept {
+  /**
+   * If we somehow receive a value that has already been consumed,
+   * then the following code could be in trouble. E.g., we create
+   * an array as needed, but if an array was already created, then
+   * it could be bad.
+   */
+  using namespace lsx::ondemand;
+  lsx::ondemand::json_type t;
+  auto error = x.type().get(t);
+  if(error != SUCCESS) { return error; }
+  switch (t)
+  {
+    case json_type::array:
+    {
+      lsx::ondemand::array array;
+      error = x.get_array().get(array);
+      if(error) { return error; }
+      return to_json_string(array);
+    }
+    case json_type::object:
+    {
+      lsx::ondemand::object object;
+      error = x.get_object().get(object);
+      if(error) { return error; }
+      return to_json_string(object);
+    }
+    default:
+      return trim(x.raw_json_token());
   }
-  b.append(']');
 }
 
-template 
-  requires (require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  b.append(z);
+inline simdjson_result to_json_string(lsx::ondemand::object& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-
-template 
-simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline simdjson_result to_json_string(lsx::ondemand::array& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-template 
-string_builder& operator<<(string_builder& b, const Z& z) {
-  append(b, z);
-  return b;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-// extract_from: Serialize only specific fields from a struct to JSON
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-void extract_from(string_builder &b, const T &obj) {
-  // Helper to check if a field name matches any of the requested fields
-  auto should_extract = [](std::string_view field_name) constexpr -> bool {
-    return ((FieldNames.view() == field_name) || ...);
-  };
-
-  b.append('{');
-  bool first = true;
-
-  // Iterate through all members of T using reflection
-  template for (constexpr auto mem : std::define_static_array(
-      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-
-    if constexpr (std::meta::is_public(mem)) {
-      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-      // Only serialize this field if it's in our list of requested fields
-      if constexpr (should_extract(key)) {
-        if (!first) {
-          b.append(',');
-        }
-        first = false;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-        // Serialize the key
-        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
-        b.append_raw(quoted_key);
-        b.append(':');
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
+} // namespace simdjson
 
-        // Serialize the value
-        atom(b, obj.[:mem:]);
-      }
-    }
-  };
+namespace simdjson { namespace lsx { namespace ondemand {
 
-  b.append('}');
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace builder
-} // namespace westmere
-// Alias the function template to 'to' in the global namespace
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  westmere::builder::string_builder b(initial_capacity);
-  westmere::builder::append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  westmere::builder::string_builder b(initial_capacity);
-  westmere::builder::append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
 }
-// Global namespace function for extract_from
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  westmere::builder::string_builder b(initial_capacity);
-  westmere::builder::extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace simdjson
-
-#endif // SIMDJSON_STATIC_REFLECTION
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::document_reference& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
 
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
+  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
 #endif
-/* end file simdjson/generic/ondemand/json_builder.h for westmere */
+}}} // namespace simdjson::lsx::ondemand
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+/* end file simdjson/generic/ondemand/serialization-inl.h for lsx */
 
 // JSON path accessor (compile-time) - must be after inline definitions
-/* including simdjson/generic/ondemand/compile_time_accessors.h for westmere: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
-/* begin file simdjson/generic/ondemand/compile_time_accessors.h for westmere */
+/* including simdjson/generic/ondemand/compile_time_accessors.h for lsx: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
+/* begin file simdjson/generic/ondemand/compile_time_accessors.h for lsx */
 /**
  * Compile-time JSON Path and JSON Pointer accessors using C++26 reflection (P2996)
  *
@@ -122496,7 +154275,7 @@ simdjson_warn_unused simdjson_result extract_from(const T &obj, siz
 #include 
 
 namespace simdjson {
-namespace westmere {
+namespace lsx {
 namespace ondemand {
 /***
  * JSONPath implementation for compile-time access
@@ -122507,7 +154286,7 @@ namespace json_path {
 // Note: value type must be fully defined before this header is included
 // This is ensured by including this in amalgamated.h after value-inl.h
 
-using ::simdjson::westmere::ondemand::value;
+using ::simdjson::lsx::ondemand::value;
 
 // Path step types
 enum class step_type {
@@ -122641,7 +154420,7 @@ struct json_path_parser {
 // Compile-time path accessor generator
 template
 struct path_accessor {
-  using value = ::simdjson::westmere::ondemand::value;
+  using value = ::simdjson::lsx::ondemand::value;
 
   static constexpr auto parser = json_path_parser();
   static constexpr std::size_t num_steps = parser.count_steps();
@@ -123119,14 +154898,14 @@ struct path_accessor {
 
 // Compile-time path accessor with validation
 template
-inline simdjson_result<::simdjson::westmere::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::lsx::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::westmere::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::lsx::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
@@ -123357,59 +155136,63 @@ struct pointer_accessor {
 
 // Compile-time JSON Pointer accessor with validation
 template
-inline simdjson_result<::simdjson::westmere::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::lsx::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::westmere::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::lsx::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 } // namespace json_path
 } // namespace ondemand
-} // namespace westmere
+} // namespace lsx
 } // namespace simdjson
 
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 #endif // SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
 
-/* end file simdjson/generic/ondemand/compile_time_accessors.h for westmere */
+/* end file simdjson/generic/ondemand/compile_time_accessors.h for lsx */
 
-/* end file simdjson/generic/ondemand/amalgamated.h for westmere */
-/* including simdjson/westmere/end.h: #include "simdjson/westmere/end.h" */
-/* begin file simdjson/westmere/end.h */
+/* end file simdjson/generic/ondemand/amalgamated.h for lsx */
+/* including simdjson/lsx/end.h: #include "simdjson/lsx/end.h" */
+/* begin file simdjson/lsx/end.h */
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/westmere/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#if !SIMDJSON_CAN_ALWAYS_RUN_WESTMERE
-SIMDJSON_UNTARGET_REGION
-#endif
-
-/* undefining SIMDJSON_IMPLEMENTATION from "westmere" */
+#undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
+/* undefining SIMDJSON_IMPLEMENTATION from "lsx" */
 #undef SIMDJSON_IMPLEMENTATION
-/* end file simdjson/westmere/end.h */
+/* end file simdjson/lsx/end.h */
 
-#endif // SIMDJSON_WESTMERE_IMPLEMENTATION_H
-/* end file simdjson/westmere/ondemand.h */
-#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(lsx)
-/* including simdjson/lsx/ondemand.h: #include "simdjson/lsx/ondemand.h" */
-/* begin file simdjson/lsx/ondemand.h */
-#ifndef SIMDJSON_LSX_ONDEMAND_H
-#define SIMDJSON_LSX_ONDEMAND_H
+#endif // SIMDJSON_LSX_ONDEMAND_H
+/* end file simdjson/lsx/ondemand.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(lasx)
+/* including simdjson/lasx/ondemand.h: #include "simdjson/lasx/ondemand.h" */
+/* begin file simdjson/lasx/ondemand.h */
+#ifndef SIMDJSON_LASX_ONDEMAND_H
+#define SIMDJSON_LASX_ONDEMAND_H
 
-/* including simdjson/lsx/begin.h: #include "simdjson/lsx/begin.h" */
-/* begin file simdjson/lsx/begin.h */
-/* defining SIMDJSON_IMPLEMENTATION to "lsx" */
-#define SIMDJSON_IMPLEMENTATION lsx
-/* including simdjson/lsx/base.h: #include "simdjson/lsx/base.h" */
-/* begin file simdjson/lsx/base.h */
-#ifndef SIMDJSON_LSX_BASE_H
-#define SIMDJSON_LSX_BASE_H
+/* including simdjson/lasx/begin.h: #include "simdjson/lasx/begin.h" */
+/* begin file simdjson/lasx/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "lasx" */
+#define SIMDJSON_IMPLEMENTATION lasx
+#include  // This is a hack. We should not need to put this include here.
+#if SIMDJSON_CAN_ALWAYS_RUN_LASX
+// nothing needed.
+#else
+SIMDJSON_TARGET_REGION("lasx,lsx")
+#endif
+
+/* including simdjson/lasx/base.h: #include "simdjson/lasx/base.h" */
+/* begin file simdjson/lasx/base.h */
+#ifndef SIMDJSON_LASX_BASE_H
+#define SIMDJSON_LASX_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #include "simdjson/base.h" */
@@ -123417,9 +155200,9 @@ SIMDJSON_UNTARGET_REGION
 
 namespace simdjson {
 /**
- * Implementation for LSX.
+ * Implementation for LASX.
  */
-namespace lsx {
+namespace lasx {
 
 class implementation;
 
@@ -123430,41 +155213,40 @@ template  struct simd8x64;
 } // namespace simd
 } // unnamed namespace
 
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
-#endif // SIMDJSON_LSX_BASE_H
-/* end file simdjson/lsx/base.h */
-/* including simdjson/lsx/intrinsics.h: #include "simdjson/lsx/intrinsics.h" */
-/* begin file simdjson/lsx/intrinsics.h */
-#ifndef SIMDJSON_LSX_INTRINSICS_H
-#define SIMDJSON_LSX_INTRINSICS_H
+#endif // SIMDJSON_LASX_BASE_H
+/* end file simdjson/lasx/base.h */
+/* including simdjson/lasx/intrinsics.h: #include "simdjson/lasx/intrinsics.h" */
+/* begin file simdjson/lasx/intrinsics.h */
+#ifndef SIMDJSON_LASX_INTRINSICS_H
+#define SIMDJSON_LASX_INTRINSICS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-// This should be the correct header whether
-// you use visual studio or other compilers.
 #include 
+#include 
 
-static_assert(sizeof(__m128i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for LoongArch SX");
+static_assert(sizeof(__m256i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for LoongArch ASX");
 
-#endif //  SIMDJSON_LSX_INTRINSICS_H
-/* end file simdjson/lsx/intrinsics.h */
-/* including simdjson/lsx/bitmanipulation.h: #include "simdjson/lsx/bitmanipulation.h" */
-/* begin file simdjson/lsx/bitmanipulation.h */
-#ifndef SIMDJSON_LSX_BITMANIPULATION_H
-#define SIMDJSON_LSX_BITMANIPULATION_H
+#endif //  SIMDJSON_LASX_INTRINSICS_H
+/* end file simdjson/lasx/intrinsics.h */
+/* including simdjson/lasx/bitmanipulation.h: #include "simdjson/lasx/bitmanipulation.h" */
+/* begin file simdjson/lasx/bitmanipulation.h */
+#ifndef SIMDJSON_LASX_BITMANIPULATION_H
+#define SIMDJSON_LASX_BITMANIPULATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/intrinsics.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmask.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmask.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace {
 
 // We sometimes call trailing_zero on inputs that are zero,
@@ -123491,7 +155273,7 @@ simdjson_inline int leading_zeroes(uint64_t input_num) {
 
 /* result might be undefined when input_num is zero */
 simdjson_inline int count_ones(uint64_t input_num) {
-  return __lsx_vpickve2gr_w(__lsx_vpcnt_d(__m128i(v2u64{input_num, 0})), 0);
+  return __lasx_xvpickve2gr_w(__lasx_xvpcnt_d(__m256i(v4u64{input_num, 0, 0, 0})), 0);
 }
 
 simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {
@@ -123500,22 +155282,22 @@ simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *re
 }
 
 } // unnamed namespace
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
-#endif // SIMDJSON_LSX_BITMANIPULATION_H
-/* end file simdjson/lsx/bitmanipulation.h */
-/* including simdjson/lsx/bitmask.h: #include "simdjson/lsx/bitmask.h" */
-/* begin file simdjson/lsx/bitmask.h */
-#ifndef SIMDJSON_LSX_BITMASK_H
-#define SIMDJSON_LSX_BITMASK_H
+#endif // SIMDJSON_LASX_BITMANIPULATION_H
+/* end file simdjson/lasx/bitmanipulation.h */
+/* including simdjson/lasx/bitmask.h: #include "simdjson/lasx/bitmask.h" */
+/* begin file simdjson/lasx/bitmask.h */
+#ifndef SIMDJSON_LASX_BITMASK_H
+#define SIMDJSON_LASX_BITMASK_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace {
 
 //
@@ -123534,26 +155316,26 @@ simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
 }
 
 } // unnamed namespace
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif
-/* end file simdjson/lsx/bitmask.h */
-/* including simdjson/lsx/numberparsing_defs.h: #include "simdjson/lsx/numberparsing_defs.h" */
-/* begin file simdjson/lsx/numberparsing_defs.h */
-#ifndef SIMDJSON_LSX_NUMBERPARSING_DEFS_H
-#define SIMDJSON_LSX_NUMBERPARSING_DEFS_H
+/* end file simdjson/lasx/bitmask.h */
+/* including simdjson/lasx/numberparsing_defs.h: #include "simdjson/lasx/numberparsing_defs.h" */
+/* begin file simdjson/lasx/numberparsing_defs.h */
+#ifndef SIMDJSON_LASX_NUMBERPARSING_DEFS_H
+#define SIMDJSON_LASX_NUMBERPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/intrinsics.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/intrinsics.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 #include 
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace numberparsing {
 
 // we don't have appropriate instructions, so let us use a scalar function
@@ -123576,7 +155358,7 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 }
 
 } // namespace numberparsing
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #ifndef SIMDJSON_SWAR_NUMBER_PARSING
@@ -123587,46 +155369,46 @@ simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t
 #endif
 #endif
 
-#endif // SIMDJSON_LSX_NUMBERPARSING_DEFS_H
-/* end file simdjson/lsx/numberparsing_defs.h */
-/* including simdjson/lsx/simd.h: #include "simdjson/lsx/simd.h" */
-/* begin file simdjson/lsx/simd.h */
-#ifndef SIMDJSON_LSX_SIMD_H
-#define SIMDJSON_LSX_SIMD_H
+#endif // SIMDJSON_LASX_NUMBERPARSING_DEFS_H
+/* end file simdjson/lasx/numberparsing_defs.h */
+/* including simdjson/lasx/simd.h: #include "simdjson/lasx/simd.h" */
+/* begin file simdjson/lasx/simd.h */
+#ifndef SIMDJSON_LASX_SIMD_H
+#define SIMDJSON_LASX_SIMD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmanipulation.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace {
 namespace simd {
 
   // Forward-declared so they can be used by splat and friends.
   template
   struct base {
-    __m128i value;
+    __m256i value;
 
     // Zero constructor
-    simdjson_inline base() : value{__m128i()} {}
+    simdjson_inline base() : value{__m256i()} {}
 
     // Conversion from SIMD register
-    simdjson_inline base(const __m128i _value) : value(_value) {}
+    simdjson_inline base(const __m256i _value) : value(_value) {}
 
     // Conversion to SIMD register
-    simdjson_inline operator const __m128i&() const { return this->value; }
-    simdjson_inline operator __m128i&() { return this->value; }
-    simdjson_inline operator const v16i8&() const { return (v16i8&)this->value; }
-    simdjson_inline operator v16i8&() { return (v16i8&)this->value; }
+    simdjson_inline operator const __m256i&() const { return this->value; }
+    simdjson_inline operator __m256i&() { return this->value; }
+    simdjson_inline operator const v32i8&() const { return (v32i8&)this->value; }
+    simdjson_inline operator v32i8&() { return (v32i8&)this->value; }
 
     // Bit operations
-    simdjson_inline Child operator|(const Child other) const { return __lsx_vor_v(*this, other); }
-    simdjson_inline Child operator&(const Child other) const { return __lsx_vand_v(*this, other); }
-    simdjson_inline Child operator^(const Child other) const { return __lsx_vxor_v(*this, other); }
-    simdjson_inline Child bit_andnot(const Child other) const { return __lsx_vandn_v(other, *this); }
+    simdjson_inline Child operator|(const Child other) const { return __lasx_xvor_v(*this, other); }
+    simdjson_inline Child operator&(const Child other) const { return __lasx_xvand_v(*this, other); }
+    simdjson_inline Child operator^(const Child other) const { return __lasx_xvxor_v(*this, other); }
+    simdjson_inline Child bit_andnot(const Child other) const { return __lasx_xvandn_v(other, *this); }
     simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
     simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
     simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
@@ -123639,41 +155421,51 @@ namespace simd {
   template>
   struct base8: base> {
     simdjson_inline base8() : base>() {}
-    simdjson_inline base8(const __m128i _value) : base>(_value) {}
+    simdjson_inline base8(const __m256i _value) : base>(_value) {}
 
-    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return __lsx_vseq_b(lhs, rhs); }
+    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return __lasx_xvseq_b(lhs, rhs); }
 
     static const int SIZE = sizeof(base>::value);
 
     template
     simdjson_inline simd8 prev(const simd8 prev_chunk) const {
-      return __lsx_vor_v(__lsx_vbsll_v(*this, N), __lsx_vbsrl_v(prev_chunk, 16 - N));
+        __m256i hi = __lasx_xvbsll_v(*this, N);
+        __m256i lo = __lasx_xvbsrl_v(*this, 16 - N);
+        __m256i tmp = __lasx_xvbsrl_v(prev_chunk, 16 - N);
+        lo = __lasx_xvpermi_q(lo, tmp, 0x21);
+        return __lasx_xvor_v(hi, lo);
     }
   };
 
   // SIMD byte mask type (returned by things like eq and gt)
   template<>
   struct simd8: base8 {
-    static simdjson_inline simd8 splat(bool _value) {
-      return __lsx_vreplgr2vr_b(uint8_t(-(!!_value)));
-    }
+    static simdjson_inline simd8 splat(bool _value) { return __lasx_xvreplgr2vr_b(uint8_t(-(!!_value))); }
 
     simdjson_inline simd8() : base8() {}
-    simdjson_inline simd8(const __m128i _value) : base8(_value) {}
+    simdjson_inline simd8(const __m256i _value) : base8(_value) {}
     // Splat constructor
     simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
 
-    simdjson_inline int to_bitmask() const { return __lsx_vpickve2gr_w(__lsx_vmskltz_b(*this), 0); }
-    simdjson_inline bool any() const { return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(*this), 0); }
+    simdjson_inline int to_bitmask() const {
+      __m256i mask = __lasx_xvmskltz_b(*this);
+      return (__lasx_xvpickve2gr_w(mask, 4) << 16) | (__lasx_xvpickve2gr_w(mask, 0));
+    }
+   simdjson_inline bool any() const {
+      __m256i v = __lasx_xvmsknz_b(*this);
+      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
+    }
     simdjson_inline simd8 operator~() const { return *this ^ true; }
   };
 
   template
   struct base8_numeric: base8 {
-    static simdjson_inline simd8 splat(T _value) { return __lsx_vreplgr2vr_b(_value); }
-    static simdjson_inline simd8 zero() { return __lsx_vldi(0); }
-    static simdjson_inline simd8 load(const T values[16]) {
-      return __lsx_vld(reinterpret_cast(values), 0);
+    static simdjson_inline simd8 splat(T _value) {
+      return __lasx_xvreplgr2vr_b(_value);
+    }
+    static simdjson_inline simd8 zero() { return __lasx_xvldi(0); }
+    static simdjson_inline simd8 load(const T values[32]) {
+      return __lasx_xvld(reinterpret_cast(values), 0);
     }
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     static simdjson_inline simd8 repeat_16(
@@ -123681,22 +155473,24 @@ namespace simd {
       T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
     ) {
       return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15
       );
     }
 
     simdjson_inline base8_numeric() : base8() {}
-    simdjson_inline base8_numeric(const __m128i _value) : base8(_value) {}
+    simdjson_inline base8_numeric(const __m256i _value) : base8(_value) {}
 
     // Store to array
-    simdjson_inline void store(T dst[16]) const {
-      return __lsx_vst(*this, reinterpret_cast<__m128i *>(dst), 0);
+    simdjson_inline void store(T dst[32]) const {
+      return __lasx_xvst(*this, reinterpret_cast<__m256i *>(dst), 0);
     }
 
     // Addition/subtraction are the same for signed and unsigned
-    simdjson_inline simd8 operator+(const simd8 other) const { return __lsx_vadd_b(*this, other); }
-    simdjson_inline simd8 operator-(const simd8 other) const { return __lsx_vsub_b(*this, other); }
+    simdjson_inline simd8 operator+(const simd8 other) const { return __lasx_xvadd_b(*this, other); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __lasx_xvsub_b(*this, other); }
     simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
     simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
 
@@ -123706,7 +155500,7 @@ namespace simd {
     // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
     template
     simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
-      return __lsx_vshuf_b(lookup_table, lookup_table, *this);
+      return __lasx_xvshuf_b(lookup_table, lookup_table, *this);
     }
 
     // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
@@ -123714,26 +155508,38 @@ namespace simd {
     // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
     // get written.
     template
-    simdjson_inline void compress(uint16_t mask, L * output) const {
+    simdjson_inline void compress(uint32_t mask, L * output) const {
       using internal::thintable_epi8;
       using internal::BitsSetTable256mul2;
       using internal::pshufb_combine_table;
       // this particular implementation was inspired by haswell
-      // lsx do it in 2 steps, first 8 bytes and then second 8 bytes...
+      // lasx do it in 4 steps, first 8 bytes and then second 8 bytes...
       uint8_t mask1 = uint8_t(mask); // least significant 8 bits
-      uint8_t mask2 = uint8_t(mask >> 8); // second least significant 8 bits
-      // next line just loads the 64-bit values thintable_epi8[mask1] and
-      // thintable_epi8[mask2] into a 128-bit register.
-      __m128i shufmask = {int64_t(thintable_epi8[mask1]), int64_t(thintable_epi8[mask2]) + 0x0808080808080808};
+      uint8_t mask2 = uint8_t(mask >> 8); // second significant 8 bits
+      uint8_t mask3 = uint8_t(mask >> 16); // ...
+      uint8_t mask4 = uint8_t(mask >> 24); // ...
+      // next line just loads the 64-bit values thintable_epi8[mask{1,2,3,4}]
+      // into a 256-bit register.
+      __m256i shufmask = {int64_t(thintable_epi8[mask1]), int64_t(thintable_epi8[mask2]) + 0x0808080808080808, int64_t(thintable_epi8[mask3]), int64_t(thintable_epi8[mask4]) + 0x0808080808080808};
       // this is the version "nearly pruned"
-      __m128i pruned = __lsx_vshuf_b(*this, *this, shufmask);
+      __m256i pruned = __lasx_xvshuf_b(*this, *this, shufmask);
       // we still need to put the  pieces back together.
       // we compute the popcount of the first words:
       int pop1 = BitsSetTable256mul2[mask1];
+      int pop2 = BitsSetTable256mul2[mask2];
+      int pop3 = BitsSetTable256mul2[mask3];
+
       // then load the corresponding mask
-      __m128i compactmask = __lsx_vldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop1 * 8);
-      __m128i answer = __lsx_vshuf_b(pruned, pruned, compactmask);
-      __lsx_vst(answer, reinterpret_cast(output), 0);
+      __m256i masklo = __lasx_xvldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop1 * 8);
+      __m256i maskhi = __lasx_xvldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop3 * 8);
+      __m256i compactmask = __lasx_xvpermi_q(maskhi, masklo, 0x20);
+      __m256i answer = __lasx_xvshuf_b(pruned, pruned, compactmask);
+      __lasx_xvst(answer, reinterpret_cast(output), 0);
+      uint64_t value3 = __lasx_xvpickve2gr_du(answer, 2);
+      uint64_t value4 = __lasx_xvpickve2gr_du(answer, 3);
+      uint64_t *pos = reinterpret_cast(reinterpret_cast(output) + 16 - (pop1 + pop2) / 2);
+      pos[0] = value3;
+      pos[1] = value4;
     }
 
     template
@@ -123755,18 +155561,22 @@ namespace simd {
   template<>
   struct simd8 : base8_numeric {
     simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
     // Splat constructor
     simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
     // Array constructor
-    simdjson_inline simd8(const int8_t values[16]) : simd8(load(values)) {}
+    simdjson_inline simd8(const int8_t values[32]) : simd8(load(values)) {}
     // Member-by-member initialization
     simdjson_inline simd8(
       int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
-      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15,
+      int8_t v16, int8_t v17, int8_t v18, int8_t v19, int8_t v20, int8_t v21, int8_t v22, int8_t v23,
+      int8_t v24, int8_t v25, int8_t v26, int8_t v27, int8_t v28, int8_t v29, int8_t v30, int8_t v31
     ) : simd8({
       v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15
+      v8, v9, v10,v11,v12,v13,v14,v15,
+      v16,v17,v18,v19,v20,v21,v22,v23,
+      v24,v25,v26,v27,v28,v29,v30,v31
       }) {}
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
@@ -123774,34 +155584,40 @@ namespace simd {
       int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
     ) {
       return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15
       );
     }
 
     // Order-sensitive comparisons
-    simdjson_inline simd8 max_val(const simd8 other) const { return __lsx_vmax_b(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return __lsx_vmin_b(*this, other); }
-    simdjson_inline simd8 operator>(const simd8 other) const { return __lsx_vslt_b(other, *this); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return __lsx_vslt_b(*this, other); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lasx_xvmax_b(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lasx_xvmin_b(*this, other); }
+    simdjson_inline simd8 operator>(const simd8 other) const { return __lasx_xvslt_b(other, *this); }
+    simdjson_inline simd8 operator<(const simd8 other) const { return __lasx_xvslt_b(*this, other); }
   };
 
   // Unsigned bytes
   template<>
   struct simd8: base8_numeric {
     simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m128i _value) : base8_numeric(_value) {}
+    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
     // Splat constructor
     simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
     // Array constructor
-    simdjson_inline simd8(const uint8_t values[16]) : simd8(load(values)) {}
+    simdjson_inline simd8(const uint8_t values[32]) : simd8(load(values)) {}
     // Member-by-member initialization
     simdjson_inline simd8(
       uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
-      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
-    ) : simd8(__m128i(v16u8{
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15,
+      uint8_t v16, uint8_t v17, uint8_t v18, uint8_t v19, uint8_t v20, uint8_t v21, uint8_t v22, uint8_t v23,
+      uint8_t v24, uint8_t v25, uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30, uint8_t v31
+    ) : simd8(__m256i(v32u8{
       v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15
+      v8, v9, v10,v11,v12,v13,v14,v15,
+      v16,v17,v18,v19,v20,v21,v22,v23,
+      v24,v25,v26,v27,v28,v29,v30,v31
     })) {}
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
@@ -123809,18 +155625,20 @@ namespace simd {
       uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
     ) {
       return simd8(
+        v0, v1, v2, v3, v4, v5, v6, v7,
+        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15
       );
     }
 
     // Saturated math
-    simdjson_inline simd8 saturating_add(const simd8 other) const { return __lsx_vsadd_bu(*this, other); }
-    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __lsx_vssub_bu(*this, other); }
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return __lasx_xvsadd_bu(*this, other); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __lasx_xvssub_bu(*this, other); }
 
     // Order-specific operations
-    simdjson_inline simd8 max_val(const simd8 other) const { return __lsx_vmax_bu(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return __lsx_vmin_bu(other, *this); }
+    simdjson_inline simd8 max_val(const simd8 other) const { return __lasx_xvmax_bu(*this, other); }
+    simdjson_inline simd8 min_val(const simd8 other) const { return __lasx_xvmin_bu(other, *this); }
     // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
     simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
     // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
@@ -123835,96 +155653,85 @@ namespace simd {
     simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
     simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
     simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
-    simdjson_inline bool is_ascii() const { return 0 == __lsx_vpickve2gr_w(__lsx_vmskltz_b(*this), 0); }
-    simdjson_inline bool bits_not_set_anywhere() const { return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(*this), 0); }
+    simdjson_inline bool is_ascii() const {
+      __m256i mask = __lasx_xvmskltz_b(*this);
+      return (0 == __lasx_xvpickve2gr_w(mask, 0)) && (0 == __lasx_xvpickve2gr_w(mask, 4));
+    }
+    simdjson_inline bool bits_not_set_anywhere() const {
+      __m256i v = __lasx_xvmsknz_b(*this);
+      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
+    }
     simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
     simdjson_inline bool bits_not_set_anywhere(simd8 bits) const {
-      return 0 == __lsx_vpickve2gr_hu(__lsx_vmsknz_b(__lsx_vand_v(*this, bits)), 0);
+      __m256i v = __lasx_xvmsknz_b(__lasx_xvand_v(*this, bits));
+      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
     }
     simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
     template
-    simdjson_inline simd8 shr() const { return simd8(__lsx_vsrli_b(*this, N)); }
+    simdjson_inline simd8 shr() const { return simd8(__lasx_xvsrli_b(*this, N)); }
     template
-    simdjson_inline simd8 shl() const { return simd8(__lsx_vslli_b(*this, N)); }
+    simdjson_inline simd8 shl() const { return simd8(__lasx_xvslli_b(*this, N)); }
   };
 
   template
   struct simd8x64 {
     static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
-    static_assert(NUM_CHUNKS == 4, "LSX kernel should use four registers per 64-byte block.");
+    static_assert(NUM_CHUNKS == 2, "LASX kernel should use two registers per 64-byte block.");
     const simd8 chunks[NUM_CHUNKS];
+    template simd8 get() const { return idx < NUM_CHUNKS ? chunks[idx] : simd8(); }
 
     simd8x64(const simd8x64& o) = delete; // no copy allowed
     simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
     simd8x64() = delete; // no default constructor allowed
 
-    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1, const simd8 chunk2, const simd8 chunk3) : chunks{chunk0, chunk1, chunk2, chunk3} {}
-    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+16), simd8::load(ptr+32), simd8::load(ptr+48)} {}
+    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1) : chunks{chunk0, chunk1} {}
+    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+32)} {}
 
     simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
-      uint16_t mask1 = uint16_t(mask);
-      uint16_t mask2 = uint16_t(mask >> 16);
-      uint16_t mask3 = uint16_t(mask >> 32);
-      uint16_t mask4 = uint16_t(mask >> 48);
-      __m128i zcnt = __lsx_vpcnt_h(__m128i(v2u64{~mask, 0}));
-      uint64_t zcnt1 = __lsx_vpickve2gr_hu(zcnt, 0);
-      uint64_t zcnt2 = __lsx_vpickve2gr_hu(zcnt, 1);
-      uint64_t zcnt3 = __lsx_vpickve2gr_hu(zcnt, 2);
-      uint64_t zcnt4 = __lsx_vpickve2gr_hu(zcnt, 3);
-      uint8_t *voutput = reinterpret_cast(output);
+      uint32_t mask1 = uint32_t(mask);
+      uint32_t mask2 = uint32_t(mask >> 32);
+      __m256i zcnt = __lasx_xvpcnt_w(__m256i(v4u64{~mask, 0, 0, 0}));
+      uint64_t zcnt1 = __lasx_xvpickve2gr_wu(zcnt, 0);
+      uint64_t zcnt2 = __lasx_xvpickve2gr_wu(zcnt, 1);
       // There should be a critical value which processes in scaler is faster.
       if (zcnt1)
-        this->chunks[0].compress(mask1, reinterpret_cast(voutput));
-      voutput += zcnt1;
+        this->chunks[0].compress(mask1, output);
       if (zcnt2)
-        this->chunks[1].compress(mask2, reinterpret_cast(voutput));
-      voutput += zcnt2;
-      if (zcnt3)
-        this->chunks[2].compress(mask3, reinterpret_cast(voutput));
-      voutput += zcnt3;
-      if (zcnt4)
-        this->chunks[3].compress(mask4, reinterpret_cast(voutput));
-      voutput += zcnt4;
-      return reinterpret_cast(voutput) - reinterpret_cast(output);
+        this->chunks[1].compress(mask2, output + zcnt1);
+      return zcnt1 + zcnt2;
     }
 
     simdjson_inline void store(T ptr[64]) const {
       this->chunks[0].store(ptr+sizeof(simd8)*0);
       this->chunks[1].store(ptr+sizeof(simd8)*1);
-      this->chunks[2].store(ptr+sizeof(simd8)*2);
-      this->chunks[3].store(ptr+sizeof(simd8)*3);
     }
 
     simdjson_inline uint64_t to_bitmask() const {
-      __m128i mask1 = __lsx_vmskltz_b(this->chunks[0]);
-      __m128i mask2 = __lsx_vmskltz_b(this->chunks[1]);
-      __m128i mask3 = __lsx_vmskltz_b(this->chunks[2]);
-      __m128i mask4 = __lsx_vmskltz_b(this->chunks[3]);
-      mask1 = __lsx_vilvl_h(mask2, mask1);
-      mask2 = __lsx_vilvl_h(mask4, mask3);
-      return __lsx_vpickve2gr_du(__lsx_vilvl_w(mask2, mask1), 0);
+      __m256i mask0 = __lasx_xvmskltz_b(this->chunks[0]);
+      __m256i mask1 = __lasx_xvmskltz_b(this->chunks[1]);
+      __m256i mask_tmp = __lasx_xvpickve_w(mask0, 4);
+      __m256i tmp = __lasx_xvpickve_w(mask1, 4);
+      mask0 = __lasx_xvinsve0_w(mask0, mask1, 1);
+      mask_tmp = __lasx_xvinsve0_w(mask_tmp, tmp, 1);
+      return __lasx_xvpickve2gr_du(__lasx_xvpackev_h(mask_tmp, mask0), 0);
     }
 
     simdjson_inline simd8 reduce_or() const {
-      return (this->chunks[0] | this->chunks[1]) | (this->chunks[2] | this->chunks[3]);
+      return this->chunks[0] | this->chunks[1];
     }
 
     simdjson_inline uint64_t eq(const T m) const {
       const simd8 mask = simd8::splat(m);
       return  simd8x64(
         this->chunks[0] == mask,
-        this->chunks[1] == mask,
-        this->chunks[2] == mask,
-        this->chunks[3] == mask
+        this->chunks[1] == mask
       ).to_bitmask();
     }
 
     simdjson_inline uint64_t eq(const simd8x64 &other) const {
       return  simd8x64(
         this->chunks[0] == other.chunks[0],
-        this->chunks[1] == other.chunks[1],
-        this->chunks[2] == other.chunks[2],
-        this->chunks[3] == other.chunks[3]
+        this->chunks[1] == other.chunks[1]
       ).to_bitmask();
     }
 
@@ -123932,33 +155739,31 @@ namespace simd {
       const simd8 mask = simd8::splat(m);
       return  simd8x64(
         this->chunks[0] <= mask,
-        this->chunks[1] <= mask,
-        this->chunks[2] <= mask,
-        this->chunks[3] <= mask
+        this->chunks[1] <= mask
       ).to_bitmask();
     }
   }; // struct simd8x64
 
 } // namespace simd
 } // unnamed namespace
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
-#endif // SIMDJSON_LSX_SIMD_H
-/* end file simdjson/lsx/simd.h */
-/* including simdjson/lsx/stringparsing_defs.h: #include "simdjson/lsx/stringparsing_defs.h" */
-/* begin file simdjson/lsx/stringparsing_defs.h */
-#ifndef SIMDJSON_LSX_STRINGPARSING_DEFS_H
-#define SIMDJSON_LSX_STRINGPARSING_DEFS_H
+#endif // SIMDJSON_LASX_SIMD_H
+/* end file simdjson/lasx/simd.h */
+/* including simdjson/lasx/stringparsing_defs.h: #include "simdjson/lasx/stringparsing_defs.h" */
+/* begin file simdjson/lasx/stringparsing_defs.h */
+#ifndef SIMDJSON_LASX_STRINGPARSING_DEFS_H
+#define SIMDJSON_LASX_STRINGPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/simd.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/simd.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmanipulation.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace {
 
 using namespace simd;
@@ -123982,17 +155787,11 @@ simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uin
   // this can read up to 31 bytes beyond the buffer size, but we require
   // SIMDJSON_PADDING of padding
   static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
-  simd8 v0(src);
-  simd8 v1(src + sizeof(v0));
-  v0.store(dst);
-  v1.store(dst + sizeof(v0));
-
-  // Getting a 64-bit bitmask is much cheaper than multiple 16-bit bitmasks on LSX; therefore, we
-  // smash them together into a 64-byte mask and get the bitmask from there.
-  uint64_t bs_and_quote = simd8x64(v0 == '\\', v1 == '\\', v0 == '"', v1 == '"').to_bitmask();
+  simd8 v(src);
+  v.store(dst);
   return {
-    uint32_t(bs_and_quote),      // bs_bits
-    uint32_t(bs_and_quote >> 32) // quote_bits
+      static_cast((v == '\\').to_bitmask()),     // bs_bits
+      static_cast((v == '"').to_bitmask()), // quote_bits
   };
 }
 
@@ -124022,23 +155821,25 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 }
 
 } // unnamed namespace
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
-#endif // SIMDJSON_LSX_STRINGPARSING_DEFS_H
-/* end file simdjson/lsx/stringparsing_defs.h */
+#endif // SIMDJSON_LASX_STRINGPARSING_DEFS_H
+/* end file simdjson/lasx/stringparsing_defs.h */
 
 #define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
-/* end file simdjson/lsx/begin.h */
-/* including simdjson/generic/ondemand/amalgamated.h for lsx: #include "simdjson/generic/ondemand/amalgamated.h" */
-/* begin file simdjson/generic/ondemand/amalgamated.h for lsx */
-#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H)
+
+
+/* end file simdjson/lasx/begin.h */
+/* including simdjson/generic/ondemand/amalgamated.h for lasx: #include "simdjson/generic/ondemand/amalgamated.h" */
+/* begin file simdjson/generic/ondemand/amalgamated.h for lasx */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
 #error simdjson/generic/ondemand/dependencies.h must be included before simdjson/generic/ondemand/amalgamated.h!
 #endif
 
 // Stuff other things depend on
-/* including simdjson/generic/ondemand/base.h for lsx: #include "simdjson/generic/ondemand/base.h" */
-/* begin file simdjson/generic/ondemand/base.h for lsx */
+/* including simdjson/generic/ondemand/base.h for lasx: #include "simdjson/generic/ondemand/base.h" */
+/* begin file simdjson/generic/ondemand/base.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -124047,7 +155848,7 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 /**
  * A fast, simple, DOM-like interface that parses JSON as you use it.
  *
@@ -124058,8 +155859,8 @@ namespace ondemand {
 /** Represents the depth of a JSON value (number of nested arrays/objects). */
 using depth_t = int32_t;
 
-/** @copydoc simdjson::lsx::number_type */
-using number_type = simdjson::lsx::number_type;
+/** @copydoc simdjson::lasx::number_type */
+using number_type = simdjson::lasx::number_type;
 
 /** @private Position in the JSON buffer indexes */
 using token_position = const uint32_t *;
@@ -124082,13 +155883,13 @@ class value;
 class value_iterator;
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_BASE_H
-/* end file simdjson/generic/ondemand/base.h for lsx */
-/* including simdjson/generic/ondemand/deserialize.h for lsx: #include "simdjson/generic/ondemand/deserialize.h" */
-/* begin file simdjson/generic/ondemand/deserialize.h for lsx */
+/* end file simdjson/generic/ondemand/base.h for lasx */
+/* including simdjson/generic/ondemand/deserialize.h for lasx: #include "simdjson/generic/ondemand/deserialize.h" */
+/* begin file simdjson/generic/ondemand/deserialize.h for lasx */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -124108,35 +155909,35 @@ template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 
 template 
 concept is_builtin_deserializable_v = is_builtin_deserializable::value;
 
-template 
+template 
 concept custom_deserializable = tag_invocable;
 
-template 
+template 
 concept deserializable = custom_deserializable || is_builtin_deserializable_v || concepts::optional_type;
 
-template 
+template 
 concept nothrow_custom_deserializable = nothrow_tag_invocable;
 
 // built-in types are noexcept and if an error happens, the value simply gets ignored and the error is returned.
-template 
+template 
 concept nothrow_deserializable = nothrow_custom_deserializable || is_builtin_deserializable_v;
 
 /// Deserialize Tag
 inline constexpr struct deserialize_tag {
-  using array_type = lsx::ondemand::array;
-  using object_type = lsx::ondemand::object;
-  using value_type = lsx::ondemand::value;
-  using document_type = lsx::ondemand::document;
-  using document_reference_type = lsx::ondemand::document_reference;
+  using array_type = lasx::ondemand::array;
+  using object_type = lasx::ondemand::object;
+  using value_type = lasx::ondemand::value;
+  using document_type = lasx::ondemand::document;
+  using document_reference_type = lasx::ondemand::document_reference;
 
   // Customization Point for array
   template 
@@ -124181,9 +155982,9 @@ inline constexpr struct deserialize_tag {
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
 
-/* end file simdjson/generic/ondemand/deserialize.h for lsx */
-/* including simdjson/generic/ondemand/value_iterator.h for lsx: #include "simdjson/generic/ondemand/value_iterator.h" */
-/* begin file simdjson/generic/ondemand/value_iterator.h for lsx */
+/* end file simdjson/generic/ondemand/deserialize.h for lasx */
+/* including simdjson/generic/ondemand/value_iterator.h for lasx: #include "simdjson/generic/ondemand/value_iterator.h" */
+/* begin file simdjson/generic/ondemand/value_iterator.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -124193,7 +155994,7 @@ inline constexpr struct deserialize_tag {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 /**
@@ -124658,21 +156459,22 @@ class value_iterator {
 
   friend class document;
   friend class object;
+  friend class object_iterator;
   friend class array;
   friend class value;
   friend class field;
 }; // value_iterator
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::value_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::value_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -124680,9 +156482,9 @@ struct simdjson_result : public lsx::implementati
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
-/* end file simdjson/generic/ondemand/value_iterator.h for lsx */
-/* including simdjson/generic/ondemand/value.h for lsx: #include "simdjson/generic/ondemand/value.h" */
-/* begin file simdjson/generic/ondemand/value.h for lsx */
+/* end file simdjson/generic/ondemand/value_iterator.h for lasx */
+/* including simdjson/generic/ondemand/value.h for lasx: #include "simdjson/generic/ondemand/value.h" */
+/* begin file simdjson/generic/ondemand/value.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -124698,7 +156500,7 @@ struct simdjson_result : public lsx::implementati
 
 namespace simdjson {
 
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 /**
  * An ephemeral JSON value returned during iteration. It is only valid for as long as you do
@@ -125412,20 +157214,20 @@ class value {
 };
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::value &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::value &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result get_array() noexcept;
-  simdjson_inline simdjson_result get_object() noexcept;
+  simdjson_inline simdjson_result get_array() noexcept;
+  simdjson_inline simdjson_result get_object() noexcept;
 
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
@@ -125437,7 +157239,7 @@ struct simdjson_result : public lsx::implementation_simdjs
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
@@ -125448,20 +157250,20 @@ struct simdjson_result : public lsx::implementation_simdjs
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator lsx::ondemand::array() noexcept(false);
-  simdjson_inline operator lsx::ondemand::object() noexcept(false);
+  simdjson_inline operator lasx::ondemand::array() noexcept(false);
+  simdjson_inline operator lasx::ondemand::object() noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator lsx::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator lasx::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
 
   /**
    * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
@@ -125485,9 +157287,9 @@ struct simdjson_result : public lsx::implementation_simdjs
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field(const char *key) noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field(const char *key) noexcept;
 
   /**
    * Look up a field by name on an object, without regard to key order.
@@ -125499,7 +157301,7 @@ struct simdjson_result : public lsx::implementation_simdjs
    * in question is large. The fact that the extra code is there also bumps the executable size.
    *
    * We default operator[] on find_field_unordered() for convenience.
-   * It is the defaul because it would be highly surprising (and hard to debug) if the
+   * It is the default because it would be highly surprising (and hard to debug) if the
    * default behavior failed to look up a field just because it was in the wrong order--and many
    * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
    *
@@ -125509,14 +157311,14 @@ struct simdjson_result : public lsx::implementation_simdjs
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](const char *key) noexcept;
-  simdjson_result operator[](int) noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](const char *key) noexcept;
+  simdjson_result operator[](int) noexcept = delete;
 
   /**
    * Get the type of this JSON value. It does not validate or consume the value.
@@ -125540,13 +157342,13 @@ struct simdjson_result : public lsx::implementation_simdjs
    * better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just
    * let it throw an exception).
    */
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
 
   /** @copydoc simdjson_inline std::string_view value::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
@@ -125556,17 +157358,17 @@ struct simdjson_result : public lsx::implementation_simdjs
   simdjson_inline simdjson_result current_location() noexcept;
   /** @copydoc simdjson_inline int32_t current_depth() const noexcept */
   simdjson_inline simdjson_result current_depth() const noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_H
-/* end file simdjson/generic/ondemand/value.h for lsx */
-/* including simdjson/generic/ondemand/logger.h for lsx: #include "simdjson/generic/ondemand/logger.h" */
-/* begin file simdjson/generic/ondemand/logger.h for lsx */
+/* end file simdjson/generic/ondemand/value.h for lasx */
+/* including simdjson/generic/ondemand/logger.h for lasx: #include "simdjson/generic/ondemand/logger.h" */
+/* begin file simdjson/generic/ondemand/logger.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -125575,7 +157377,7 @@ struct simdjson_result : public lsx::implementation_simdjs
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 // Logging should be free unless SIMDJSON_VERBOSE_LOGGING is set. Importantly, it is critical
@@ -125621,13 +157423,13 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 
 } // namespace logger
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
-/* end file simdjson/generic/ondemand/logger.h for lsx */
-/* including simdjson/generic/ondemand/token_iterator.h for lsx: #include "simdjson/generic/ondemand/token_iterator.h" */
-/* begin file simdjson/generic/ondemand/token_iterator.h for lsx */
+/* end file simdjson/generic/ondemand/logger.h for lasx */
+/* including simdjson/generic/ondemand/token_iterator.h for lasx: #include "simdjson/generic/ondemand/token_iterator.h" */
+/* begin file simdjson/generic/ondemand/token_iterator.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -125638,7 +157440,7 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 /**
@@ -125769,15 +157571,15 @@ class token_iterator {
 };
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::token_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::token_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -125786,9 +157588,9 @@ struct simdjson_result : public lsx::implementati
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
-/* end file simdjson/generic/ondemand/token_iterator.h for lsx */
-/* including simdjson/generic/ondemand/json_iterator.h for lsx: #include "simdjson/generic/ondemand/json_iterator.h" */
-/* begin file simdjson/generic/ondemand/json_iterator.h for lsx */
+/* end file simdjson/generic/ondemand/token_iterator.h for lasx */
+/* including simdjson/generic/ondemand/json_iterator.h for lasx: #include "simdjson/generic/ondemand/json_iterator.h" */
+/* begin file simdjson/generic/ondemand/json_iterator.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -125799,7 +157601,7 @@ struct simdjson_result : public lsx::implementati
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 /**
@@ -126110,15 +157912,15 @@ class json_iterator {
 }; // json_iterator
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::json_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::json_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
 
   simdjson_inline simdjson_result() noexcept = default;
@@ -126127,9 +157929,9 @@ struct simdjson_result : public lsx::implementatio
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
-/* end file simdjson/generic/ondemand/json_iterator.h for lsx */
-/* including simdjson/generic/ondemand/json_type.h for lsx: #include "simdjson/generic/ondemand/json_type.h" */
-/* begin file simdjson/generic/ondemand/json_type.h for lsx */
+/* end file simdjson/generic/ondemand/json_iterator.h for lasx */
+/* including simdjson/generic/ondemand/json_type.h for lasx: #include "simdjson/generic/ondemand/json_type.h" */
+/* begin file simdjson/generic/ondemand/json_type.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -126140,7 +157942,7 @@ struct simdjson_result : public lsx::implementatio
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 /**
@@ -126274,15 +158076,15 @@ inline std::ostream& operator<<(std::ostream& out, simdjson_result &t
 #endif
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::json_type &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::json_type &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -126291,9 +158093,9 @@ struct simdjson_result : public lsx::implementation_si
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
-/* end file simdjson/generic/ondemand/json_type.h for lsx */
-/* including simdjson/generic/ondemand/raw_json_string.h for lsx: #include "simdjson/generic/ondemand/raw_json_string.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string.h for lsx */
+/* end file simdjson/generic/ondemand/json_type.h for lasx */
+/* including simdjson/generic/ondemand/raw_json_string.h for lasx: #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -126303,7 +158105,7 @@ struct simdjson_result : public lsx::implementation_si
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 /**
@@ -126485,30 +158287,30 @@ simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_js
 
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::raw_json_string &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::raw_json_string &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
 
   simdjson_inline simdjson_result raw() const noexcept;
   simdjson_inline char operator[](size_t) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape(lsx::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(lsx::ondemand::json_iterator &iter) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape(lasx::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(lasx::ondemand::json_iterator &iter) const noexcept;
 };
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
-/* end file simdjson/generic/ondemand/raw_json_string.h for lsx */
-/* including simdjson/generic/ondemand/parser.h for lsx: #include "simdjson/generic/ondemand/parser.h" */
-/* begin file simdjson/generic/ondemand/parser.h for lsx */
+/* end file simdjson/generic/ondemand/raw_json_string.h for lasx */
+/* including simdjson/generic/ondemand/parser.h for lasx: #include "simdjson/generic/ondemand/parser.h" */
+/* begin file simdjson/generic/ondemand/parser.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -126521,7 +158323,7 @@ struct simdjson_result : public lsx::implementat
 #include 
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 /**
@@ -126921,15 +158723,15 @@ class parser {
 };
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::parser &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::parser &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -126937,319 +158739,11 @@ struct simdjson_result : public lsx::implementation_simdj
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_H
-/* end file simdjson/generic/ondemand/parser.h for lsx */
-
-// JSON builder - needed for extract_into functionality
-/* including simdjson/generic/ondemand/json_string_builder.h for lsx: #include "simdjson/generic/ondemand/json_string_builder.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder.h for lsx */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace lsx {
-namespace builder {
-  class string_builder;
-}}
-
-template 
-struct has_custom_serialization : std::false_type {};
-
-inline constexpr struct serialize_tag {
-  template 
-  constexpr void operator()(lsx::builder::string_builder& b, T&& obj) const{
-    return tag_invoke(*this, b, std::forward(obj));
-  }
-
-
-} serialize{};
-template 
-struct has_custom_serialization(), std::declval()))
->> : std::true_type {};
-
-template 
-constexpr bool require_custom_serialization = has_custom_serialization::value;
-#else
-struct has_custom_serialization : std::false_type {};
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace lsx {
-namespace builder {
-/**
- * A builder for JSON strings representing documents. This is a low-level
- * builder that is not meant to be used directly by end-users. Though it
- * supports atomic types (Booleans, strings), it does not support composed
- * types (arrays and objects).
- *
- * Ultimately, this class can support kernel-specific optimizations. E.g.,
- * it may make use of SIMD instructions to escape strings faster.
- */
-class string_builder {
-public:
-  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
-
-  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
-
-  /**
-   * Append number (includes Booleans). Booleans are mapped to the strings
-   * false and true. Numbers are converted to strings abiding by the JSON standard.
-   * Floating-point numbers are converted to the shortest string that 'correctly'
-   * represents the number.
-   */
-  template::value>::type>
-  simdjson_inline void append(number_type v) noexcept;
-
-  /**
-   * Append character c.
-   */
-  simdjson_inline void append(char c)  noexcept;
-
-  /**
-   * Append the string 'null'.
-   */
-  simdjson_inline void append_null()  noexcept;
-
-  /**
-   * Clear the content.
-   */
-  simdjson_inline void clear()  noexcept;
-
-  /**
-   * Append the std::string_view, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
-
-  /**
-   * Append the std::string_view surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void escape_and_append_with_quotes()  noexcept;
-#endif
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
-
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
-
-  /**
-   * Append the C string directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *c)  noexcept;
-
-  /**
-   * Append "{" to the buffer.
-   */
-  simdjson_inline void start_object()  noexcept;
-
-  /**
-   * Append "}" to the buffer.
-   */
-  simdjson_inline void end_object()  noexcept;
-
-  /**
-   * Append "[" to the buffer.
-   */
-  simdjson_inline void start_array()  noexcept;
-
-  /**
-   * Append "]" to the buffer.
-   */
-  simdjson_inline void end_array()  noexcept;
-
-  /**
-   * Append "," to the buffer.
-   */
-  simdjson_inline void append_comma()  noexcept;
-
-  /**
-   * Append ":" to the buffer.
-   */
-  simdjson_inline void append_colon()  noexcept;
-
-  /**
-   * Append a key-value pair to the buffer.
-   * The key is escaped and surrounded by double quotes.
-   * The value is escaped if it is a string.
-   */
-  template
-  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void append_key_value(value_type value) noexcept;
-
-  // Support for optional types (std::optional, etc.)
-  template 
-  requires(!require_custom_serialization)
-  simdjson_inline void append(const T &opt);
-
-  template 
-  requires(require_custom_serialization)
-  simdjson_inline void append(T &&val);
-
-  // Support for string-like types
-  template 
-  requires(std::is_convertible::value ||
-  std::is_same::value )
-  simdjson_inline void append(const T &value);
-#endif
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-  // Support for range-based appending (std::ranges::view, etc.)
-  template 
-requires (!std::is_convertible::value && !require_custom_serialization)
-  simdjson_inline void append(const R &range) noexcept;
-#endif
-  /**
-   * Append the std::string_view directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(std::string_view input)  noexcept;
-
-  /**
-   * Append len characters from str.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
-#if SIMDJSON_EXCEPTIONS
-  /**
-   * Creates an std::string from the written JSON buffer.
-   * Throws if memory allocation failed
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string() const noexcept(false);
-
-  /**
-   * Creates an std::string_view from the written JSON buffer.
-   * Throws if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
-#endif
-
-  /**
-   * Returns a view on the written JSON buffer. Returns an error
-   * if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result view() const noexcept;
-
-  /**
-   * Appends the null character to the buffer and returns
-   * a pointer to the beginning of the written JSON buffer.
-   * Returns an error if memory allocation failed.
-   * The result is null-terminated.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result c_str() noexcept;
-
-  /**
-   * Return true if the content is valid UTF-8.
-   */
-  simdjson_inline bool validate_unicode() const noexcept;
-
-  /**
-   * Returns the current size of the written JSON buffer.
-   * If an error occurred, returns 0.
-   */
-  simdjson_inline size_t size() const noexcept;
-
-private:
-  /**
-   * Returns true if we can write at least upcoming_bytes bytes.
-   * The underlying buffer is reallocated if needed. It is designed
-   * to be called before writing to the buffer. It should be fast.
-   */
-  simdjson_inline bool capacity_check(size_t upcoming_bytes);
-
-  /**
-   * Grow the buffer to at least desired_capacity bytes.
-   * If the allocation fails, is_valid is set to false. We expect
-   * that this function would not be repeatedly called.
-   */
-  simdjson_inline void grow_buffer(size_t desired_capacity);
-
-  /**
-   * We use this helper function to make sure that is_valid is kept consistent.
-   */
-  simdjson_inline void set_valid(bool valid) noexcept;
-
-  std::unique_ptr buffer{};
-  size_t position{0};
-  size_t capacity{0};
-  bool is_valid{true};
-};
-
-
-
-}
-}
-
-
-#if !SIMDJSON_STATIC_REFLECTION
-// fallback implementation until we have static reflection
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::lsx::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view s;
-  auto e = b.view().get(s);
-  if(e) { return e; }
-  return std::string(s);
-}
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::lsx::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view sv;
-  auto e = b.view().get(sv);
-  if(e) { return e; }
-  s.assign(sv.data(), sv.size());
-  return simdjson::SUCCESS;
-}
-#endif
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
-/* end file simdjson/generic/ondemand/json_string_builder.h for lsx */
+/* end file simdjson/generic/ondemand/parser.h for lasx */
 
 // All other declarations
-/* including simdjson/generic/ondemand/array.h for lsx: #include "simdjson/generic/ondemand/array.h" */
-/* begin file simdjson/generic/ondemand/array.h for lsx */
+/* including simdjson/generic/ondemand/array.h for lasx: #include "simdjson/generic/ondemand/array.h" */
+/* begin file simdjson/generic/ondemand/array.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -127261,7 +158755,7 @@ simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t i
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 /**
@@ -127481,27 +158975,27 @@ class array {
 };
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::array &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::array &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
   inline simdjson_result count_elements() & noexcept;
   inline simdjson_result is_empty() & noexcept;
   inline simdjson_result reset() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   simdjson_inline simdjson_result raw_json() noexcept;
 #if SIMDJSON_SUPPORTS_CONCEPTS
   // TODO: move this code into object-inl.h
@@ -127509,7 +159003,7 @@ struct simdjson_result : public lsx::implementation_simdjs
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -127517,7 +159011,7 @@ struct simdjson_result : public lsx::implementation_simdjs
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -127530,13 +159024,14 @@ struct simdjson_result : public lsx::implementation_simdjs
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
-/* end file simdjson/generic/ondemand/array.h for lsx */
-/* including simdjson/generic/ondemand/array_iterator.h for lsx: #include "simdjson/generic/ondemand/array_iterator.h" */
-/* begin file simdjson/generic/ondemand/array_iterator.h for lsx */
+/* end file simdjson/generic/ondemand/array.h for lasx */
+/* including simdjson/generic/ondemand/array_iterator.h for lasx: #include "simdjson/generic/ondemand/array_iterator.h" */
+/* begin file simdjson/generic/ondemand/array_iterator.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include  */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
@@ -127544,7 +159039,7 @@ struct simdjson_result : public lsx::implementation_simdjs
 
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 /**
@@ -127552,11 +159047,17 @@ namespace ondemand {
  *
  * This is an input_iterator, meaning:
  * - It is forward-only
- * - * must be called exactly once per element.
+ * - * must be called at most once per element.
  * - ++ must be called exactly once in between each * (*, ++, *, ++, * ...)
  */
 class array_iterator {
 public:
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
   /** Create a new, invalid array iterator. */
   simdjson_inline array_iterator() noexcept = default;
 
@@ -127600,6 +159101,9 @@ class array_iterator {
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   value_iterator iter{};
 
   simdjson_inline array_iterator(const value_iterator &iter) noexcept;
@@ -127610,14 +159114,20 @@ class array_iterator {
 };
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
-  simdjson_inline simdjson_result(lsx::ondemand::array_iterator &&value) noexcept; ///< @private
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
+  simdjson_inline simdjson_result(lasx::ondemand::array_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -127625,10 +159135,10 @@ struct simdjson_result : public lsx::implementati
   // Iterator interface
   //
 
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 };
@@ -127636,9 +159146,9 @@ struct simdjson_result : public lsx::implementati
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
-/* end file simdjson/generic/ondemand/array_iterator.h for lsx */
-/* including simdjson/generic/ondemand/document.h for lsx: #include "simdjson/generic/ondemand/document.h" */
-/* begin file simdjson/generic/ondemand/document.h for lsx */
+/* end file simdjson/generic/ondemand/array_iterator.h for lasx */
+/* including simdjson/generic/ondemand/document.h for lasx: #include "simdjson/generic/ondemand/document.h" */
+/* begin file simdjson/generic/ondemand/document.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -127652,7 +159162,7 @@ struct simdjson_result : public lsx::implementati
 
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 /**
@@ -128604,21 +160114,21 @@ class document_reference {
   document *doc{nullptr};
 };
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::document &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::document &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -128629,9 +160139,9 @@ struct simdjson_result : public lsx::implementation_sim
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -128641,33 +160151,33 @@ struct simdjson_result : public lsx::implementation_sim
   template simdjson_inline error_code get(T &out) && noexcept;
 #if SIMDJSON_EXCEPTIONS
 
-  using lsx::implementation_simdjson_result_base::operator*;
-  using lsx::implementation_simdjson_result_base::operator->;
-  template ::value == false>::type>
+  using lasx::implementation_simdjson_result_base::operator*;
+  using lasx::implementation_simdjson_result_base::operator->;
+  template ::value == false>::type>
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator lsx::ondemand::array() & noexcept(false);
-  simdjson_inline operator lsx::ondemand::object() & noexcept(false);
+  simdjson_inline operator lasx::ondemand::array() & noexcept(false);
+  simdjson_inline operator lasx::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator lsx::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator lasx::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator lsx::ondemand::value() noexcept(false);
+  simdjson_inline operator lasx::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
@@ -128675,14 +160185,14 @@ struct simdjson_result : public lsx::implementation_sim
   simdjson_inline bool at_end() const noexcept;
   simdjson_inline bool is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -128698,14 +160208,14 @@ struct simdjson_result : public lsx::implementation_sim
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::document_reference value, error_code error) noexcept;
+  simdjson_inline simdjson_result(lasx::ondemand::document_reference value, error_code error) noexcept;
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -128716,9 +160226,9 @@ struct simdjson_result : public lsx::implemen
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -128729,43 +160239,43 @@ struct simdjson_result : public lsx::implemen
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator lsx::ondemand::array() & noexcept(false);
-  simdjson_inline operator lsx::ondemand::object() & noexcept(false);
+  simdjson_inline operator lasx::ondemand::array() & noexcept(false);
+  simdjson_inline operator lasx::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator lsx::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator lasx::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator lsx::ondemand::value() noexcept(false);
+  simdjson_inline operator lasx::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
   simdjson_inline simdjson_result current_depth() const noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document_reference::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -128777,9 +160287,9 @@ struct simdjson_result : public lsx::implemen
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
-/* end file simdjson/generic/ondemand/document.h for lsx */
-/* including simdjson/generic/ondemand/document_stream.h for lsx: #include "simdjson/generic/ondemand/document_stream.h" */
-/* begin file simdjson/generic/ondemand/document_stream.h for lsx */
+/* end file simdjson/generic/ondemand/document.h for lasx */
+/* including simdjson/generic/ondemand/document_stream.h for lasx: #include "simdjson/generic/ondemand/document_stream.h" */
+/* begin file simdjson/generic/ondemand/document_stream.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -128797,7 +160307,7 @@ struct simdjson_result : public lsx::implemen
 #endif
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -129110,14 +160620,14 @@ class document_stream {
 };  // document_stream
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::document_stream &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::document_stream &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -129125,9 +160635,9 @@ struct simdjson_result : public lsx::implementat
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
-/* end file simdjson/generic/ondemand/document_stream.h for lsx */
-/* including simdjson/generic/ondemand/field.h for lsx: #include "simdjson/generic/ondemand/field.h" */
-/* begin file simdjson/generic/ondemand/field.h for lsx */
+/* end file simdjson/generic/ondemand/document_stream.h for lasx */
+/* including simdjson/generic/ondemand/field.h for lasx: #include "simdjson/generic/ondemand/field.h" */
+/* begin file simdjson/generic/ondemand/field.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -129139,7 +160649,7 @@ struct simdjson_result : public lsx::implementat
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 /**
@@ -129217,33 +160727,33 @@ class field : public std::pair {
 };
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::field &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::field &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
   simdjson_inline simdjson_result unescaped_key(bool allow_replacement = false) noexcept;
   template
   simdjson_inline error_code unescaped_key(string_type &receiver, bool allow_replacement = false) noexcept;
-  simdjson_inline simdjson_result key() noexcept;
+  simdjson_inline simdjson_result key() noexcept;
   simdjson_inline simdjson_result key_raw_json_token() noexcept;
   simdjson_inline simdjson_result escaped_key() noexcept;
-  simdjson_inline simdjson_result value() noexcept;
+  simdjson_inline simdjson_result value() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_H
-/* end file simdjson/generic/ondemand/field.h for lsx */
-/* including simdjson/generic/ondemand/object.h for lsx: #include "simdjson/generic/ondemand/object.h" */
-/* begin file simdjson/generic/ondemand/object.h for lsx */
+/* end file simdjson/generic/ondemand/field.h for lasx */
+/* including simdjson/generic/ondemand/object.h for lasx: #include "simdjson/generic/ondemand/object.h" */
+/* begin file simdjson/generic/ondemand/object.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -129258,7 +160768,7 @@ struct simdjson_result : public lsx::implementation_simdjs
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 /**
@@ -129273,6 +160783,13 @@ class object {
    */
   simdjson_inline object() noexcept = default;
 
+  /**
+   * Get an iterator to the start of the object. We recommend using a range-based for loop.
+   *
+   * Using the iterator directly is also possible but error-prone and discouraged. In particular,
+   * you must dereference the iterator exactly once per iteration (before calling '++').
+   * Doing otherwise is unsafe and may lead to errors. You are responsible for ensuring
+   */
   simdjson_inline simdjson_result begin() noexcept;
   simdjson_inline simdjson_result end() noexcept;
   /**
@@ -129545,29 +161062,29 @@ class object {
 };
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::object &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::object &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   inline simdjson_result reset() noexcept;
   inline simdjson_result is_empty() noexcept;
   inline simdjson_result count_fields() & noexcept;
@@ -129578,7 +161095,7 @@ struct simdjson_result : public lsx::implementation_simdj
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -129586,7 +161103,7 @@ struct simdjson_result : public lsx::implementation_simdj
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -129609,9 +161126,9 @@ struct simdjson_result : public lsx::implementation_simdj
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
-/* end file simdjson/generic/ondemand/object.h for lsx */
-/* including simdjson/generic/ondemand/object_iterator.h for lsx: #include "simdjson/generic/ondemand/object_iterator.h" */
-/* begin file simdjson/generic/ondemand/object_iterator.h for lsx */
+/* end file simdjson/generic/ondemand/object.h for lasx */
+/* including simdjson/generic/ondemand/object_iterator.h for lasx: #include "simdjson/generic/ondemand/object_iterator.h" */
+/* begin file simdjson/generic/ondemand/object_iterator.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -129622,7 +161139,7 @@ struct simdjson_result : public lsx::implementation_simdj
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 class object_iterator {
@@ -129646,9 +161163,14 @@ class object_iterator {
   // Assumes it's being compared with the end. true if depth >= iter->depth.
   simdjson_inline bool operator!=(const object_iterator &) const noexcept;
   // Checks for ']' and ','
+  // YOU MUST NOT CALL THIS IF operator* YIELDED AN ERROR.
+  // YOU MUST NOT CALL THIS WITHOUT A CORRESPONDING operator* CALL.
   simdjson_inline object_iterator &operator++() noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   /**
    * The underlying JSON iterator.
    *
@@ -129663,15 +161185,15 @@ class object_iterator {
 };
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lsx::implementation_simdjson_result_base {
+struct simdjson_result : public lasx::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lsx::ondemand::object_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(lasx::ondemand::object_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -129680,21 +161202,21 @@ struct simdjson_result : public lsx::implementat
   //
 
   // Reads key and value, yielding them to the user.
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
   // Assumes it's being compared with the end. true if depth < iter->depth.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
   // Assumes it's being compared with the end. true if depth >= iter->depth.
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
   // Checks for ']' and ','
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
-/* end file simdjson/generic/ondemand/object_iterator.h for lsx */
-/* including simdjson/generic/ondemand/serialization.h for lsx: #include "simdjson/generic/ondemand/serialization.h" */
-/* begin file simdjson/generic/ondemand/serialization.h for lsx */
+/* end file simdjson/generic/ondemand/object_iterator.h for lasx */
+/* including simdjson/generic/ondemand/serialization.h for lasx: #include "simdjson/generic/ondemand/serialization.h" */
+/* begin file simdjson/generic/ondemand/serialization.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -129708,30 +161230,30 @@ namespace simdjson {
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(lsx::ondemand::document& x) noexcept;
+inline simdjson_result to_json_string(lasx::ondemand::document& x) noexcept;
 /**
  * Create a string-view instance out of a value instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. The value must
  * not have been accessed previously. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(lsx::ondemand::value& x) noexcept;
+inline simdjson_result to_json_string(lasx::ondemand::value& x) noexcept;
 /**
  * Create a string-view instance out of an object instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(lsx::ondemand::object& x) noexcept;
+inline simdjson_result to_json_string(lasx::ondemand::object& x) noexcept;
 /**
  * Create a string-view instance out of an array instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(lsx::ondemand::array& x) noexcept;
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(lasx::ondemand::array& x) noexcept;
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
 
 #if SIMDJSON_STATIC_REFLECTION
 /**
@@ -129739,10 +161261,10 @@ inline simdjson_result to_json_string(simdjson_result
-  requires(!std::same_as &&
-           !std::same_as &&
-           !std::same_as &&
-           !std::same_as)
+  requires(!std::same_as &&
+           !std::same_as &&
+           !std::same_as &&
+           !std::same_as)
 inline std::string to_json_string(const T& obj);
 #endif
 
@@ -129755,7 +161277,7 @@ inline std::string to_json_string(const T& obj);
  * Credit: @madhur4127
  * See https://github.com/simdjson/simdjson/issues/1768
  */
-namespace simdjson { namespace lsx { namespace ondemand {
+namespace simdjson { namespace lasx { namespace ondemand {
 
 /**
  * Print JSON to an output stream.  It does not
@@ -129765,9 +161287,9 @@ namespace simdjson { namespace lsx { namespace ondemand {
  * @param value The element.
  * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
  */
-inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::value x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::value x);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -129777,9 +161299,9 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -129789,13 +161311,13 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
-inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::document_reference& value);
+inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::document_reference& value);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -129805,18 +161327,18 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
-}}} // namespace simdjson::lsx::ondemand
+}}} // namespace simdjson::lasx::ondemand
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
-/* end file simdjson/generic/ondemand/serialization.h for lsx */
+/* end file simdjson/generic/ondemand/serialization.h for lasx */
 
 // Deserialization for standard types
-/* including simdjson/generic/ondemand/std_deserialize.h for lsx: #include "simdjson/generic/ondemand/std_deserialize.h" */
-/* begin file simdjson/generic/ondemand/std_deserialize.h for lsx */
+/* including simdjson/generic/ondemand/std_deserialize.h for lasx: #include "simdjson/generic/ondemand/std_deserialize.h" */
+/* begin file simdjson/generic/ondemand/std_deserialize.h for lasx */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -129915,8 +161437,8 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified type inside the container must default constructible.");
-  lsx::ondemand::array arr;
-  if constexpr (std::is_same_v, lsx::ondemand::array>) {
+  lasx::ondemand::array arr;
+  if constexpr (std::is_same_v, lasx::ondemand::array>) {
     arr = val;
   } else {
     SIMDJSON_TRY(val.get_array().get(arr));
@@ -129960,7 +161482,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified value type inside the container must default constructible.");
- lsx::ondemand::object obj;
+ lasx::ondemand::object obj;
  SIMDJSON_TRY(val.get_object().get(obj));
  for (auto field : obj) {
     std::string_view key;
@@ -129978,7 +161500,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
 }
 
 template 
-error_code tag_invoke(deserialize_tag, lsx::ondemand::object &obj, T &out) noexcept {
+error_code tag_invoke(deserialize_tag, lasx::ondemand::object &obj, T &out) noexcept {
   using value_type = typename std::remove_cvref_t::mapped_type;
 
   out.clear();
@@ -129986,7 +161508,7 @@ error_code tag_invoke(deserialize_tag, lsx::ondemand::object &obj, T &out) noexc
     std::string_view key;
     SIMDJSON_TRY(field.unescaped_key().get(key));
 
-    lsx::ondemand::value value_obj;
+    lasx::ondemand::value value_obj;
     SIMDJSON_TRY(field.value().get(value_obj));
 
     value_type this_value;
@@ -129997,22 +161519,22 @@ error_code tag_invoke(deserialize_tag, lsx::ondemand::object &obj, T &out) noexc
 }
 
 template 
-error_code tag_invoke(deserialize_tag, lsx::ondemand::value &val, T &out) noexcept {
-  lsx::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, lasx::ondemand::value &val, T &out) noexcept {
+  lasx::ondemand::object obj;
   SIMDJSON_TRY(val.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, lsx::ondemand::document &doc, T &out) noexcept {
-  lsx::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, lasx::ondemand::document &doc, T &out) noexcept {
+  lasx::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, lsx::ondemand::document_reference &doc, T &out) noexcept {
-  lsx::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, lasx::ondemand::document_reference &doc, T &out) noexcept {
+  lasx::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
@@ -130089,8 +161611,8 @@ constexpr bool user_defined_type = (std::is_class_v
 template 
   requires(user_defined_type && std::is_class_v)
 error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept {
-  lsx::ondemand::object obj;
-  if constexpr (std::is_same_v, lsx::ondemand::object>) {
+  lasx::ondemand::object obj;
+  if constexpr (std::is_same_v, lasx::ondemand::object>) {
     obj = val;
   } else {
     SIMDJSON_TRY(val.get_object().get(obj));
@@ -130399,11 +161921,11 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
-/* end file simdjson/generic/ondemand/std_deserialize.h for lsx */
+/* end file simdjson/generic/ondemand/std_deserialize.h for lasx */
 
 // Inline definitions
-/* including simdjson/generic/ondemand/array-inl.h for lsx: #include "simdjson/generic/ondemand/array-inl.h" */
-/* begin file simdjson/generic/ondemand/array-inl.h for lsx */
+/* including simdjson/generic/ondemand/array-inl.h for lasx: #include "simdjson/generic/ondemand/array-inl.h" */
+/* begin file simdjson/generic/ondemand/array-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -130418,7 +161940,7 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 //
@@ -130647,68 +162169,68 @@ simdjson_inline simdjson_result array::at(size_t index) noexcept {
 }
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  lsx::ondemand::array &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lasx::ondemand::array &&value
 ) noexcept
-  : implementation_simdjson_result_base(
-      std::forward(value)
+  : implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept
-  : implementation_simdjson_result_base(error)
+  : implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
-simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
-simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
-/* end file simdjson/generic/ondemand/array-inl.h for lsx */
-/* including simdjson/generic/ondemand/array_iterator-inl.h for lsx: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/array_iterator-inl.h for lsx */
+/* end file simdjson/generic/ondemand/array-inl.h for lasx */
+/* including simdjson/generic/ondemand/array_iterator-inl.h for lasx: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/array_iterator-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -130720,7 +162242,7 @@ simdjson_inline  simdjson_result simdjson_result array_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   SIMDJSON_ASSUME(!has_been_referenced);
+   has_been_referenced = true;
+#endif
   if (iter.error()) { iter.abandon(); return iter.error(); }
   return value(iter.child());
 }
@@ -130738,6 +162264,9 @@ simdjson_inline bool array_iterator::operator!=(const array_iterator &) const no
   return iter.is_open();
 }
 simdjson_inline array_iterator &array_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   has_been_referenced = false;
+#endif
   error_code error;
   // PERF NOTE this is a safety rail ... users should exit loops as soon as they receive an error, so we'll never get here.
   // However, it does not seem to make a perf difference, so we add it out of an abundance of caution.
@@ -130751,50 +162280,50 @@ simdjson_inline bool array_iterator::at_end() const noexcept {
   return iter.at_end();
 }
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  lsx::ondemand::array_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lasx::ondemand::array_iterator &&value
 ) noexcept
-  : lsx::implementation_simdjson_result_base(std::forward(value))
+  : lasx::implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : lsx::implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : lasx::implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++(first);
   return *this;
 }
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   return !first.iter.is_valid() || first.at_end();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/array_iterator-inl.h for lsx */
-/* including simdjson/generic/ondemand/value-inl.h for lsx: #include "simdjson/generic/ondemand/value-inl.h" */
-/* begin file simdjson/generic/ondemand/value-inl.h for lsx */
+/* end file simdjson/generic/ondemand/array_iterator-inl.h for lasx */
+/* including simdjson/generic/ondemand/value-inl.h for lasx: #include "simdjson/generic/ondemand/value-inl.h" */
+/* begin file simdjson/generic/ondemand/value-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -130810,7 +162339,7 @@ simdjson_inline bool simdjson_result::at_end() co
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 simdjson_inline value::value(const value_iterator &_iter) noexcept
@@ -131107,240 +162636,240 @@ inline simdjson_result> value::at_path_with_wildcard(std::str
 }
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  lsx::ondemand::value &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lasx::ondemand::value &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   if (error()) { return error(); }
   return {};
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
 
-simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
-template<> simdjson_inline error_code simdjson_result::get(lsx::ondemand::value &out) noexcept {
+template<> simdjson_inline error_code simdjson_result::get(lasx::ondemand::value &out) noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 
-template simdjson_inline simdjson_result simdjson_result::get() noexcept {
+template simdjson_inline simdjson_result simdjson_result::get() noexcept {
   if (error()) { return error(); }
   return first.get();
 }
-template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
+template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
+template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
   if (error()) { return error(); }
   return std::move(first);
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator lsx::ondemand::array() noexcept(false) {
+simdjson_inline simdjson_result::operator lasx::ondemand::array() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lsx::ondemand::object() noexcept(false) {
+simdjson_inline simdjson_result::operator lasx::ondemand::object() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lsx::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator lasx::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
+simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(
+simdjson_inline simdjson_result simdjson_result::at_pointer(
     std::string_view json_pointer) noexcept {
   if (error()) {
       return error();
@@ -131348,7 +162877,7 @@ simdjson_inline simdjson_result simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -131356,7 +162885,7 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(
+inline simdjson_result> simdjson_result::at_path_with_wildcard(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -131367,9 +162896,9 @@ inline simdjson_result> simdjson_result> simdjson_result::simdjson_result(
-  lsx::ondemand::document &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lasx::ondemand::document &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(
+    implementation_simdjson_result_base(
       error
     )
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
-template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
+template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first);
+  return std::forward(first);
 }
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lsx::ondemand::document &out) & noexcept = delete;
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lsx::ondemand::document &out) && noexcept {
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lasx::ondemand::document &out) & noexcept = delete;
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lasx::ondemand::document &out) && noexcept {
   if (error()) { return error(); }
-  out = std::forward(first);
+  out = std::forward(first);
   return SUCCESS;
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 
-simdjson_inline bool simdjson_result::is_negative() noexcept {
+simdjson_inline bool simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 
 
 #if SIMDJSON_EXCEPTIONS
-template ::value == false>::type>
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+template ::value == false>::type>
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lsx::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator lasx::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lsx::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator lasx::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lsx::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator lasx::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lsx::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator lasx::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   if (error()) { return error(); }
   return first.at_end();
 }
 
 
-simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
+simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
 
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
@@ -132067,7 +163596,7 @@ simdjson_inline simdjson_result> simdjson_resu
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -132077,7 +163606,7 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result::simdjson_result(lsx::ondemand::document_reference value, error_code error)
-  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
+simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::document_reference value, error_code error)
+  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
 
 
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lsx::ondemand::document_reference &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lasx::ondemand::document_reference &out) & noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lsx::ondemand::document_reference &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lasx::ondemand::document_reference &out) && noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+simdjson_inline simdjson_result::operator T() noexcept(false) {
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator lsx::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator lasx::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lsx::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator lasx::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lsx::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator lasx::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lsx::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator lasx::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
@@ -132424,7 +163953,7 @@ simdjson_inline simdjson_result> simdjson_resu
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -132432,9 +163961,9 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -132856,22 +164385,22 @@ inline void document_stream::start_stage1_thread() noexcept {
 #endif // SIMDJSON_THREADS_ENABLED
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
-  lsx::ondemand::document_stream &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lasx::ondemand::document_stream &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
@@ -132879,9 +164408,9 @@ simdjson_inline simdjson_result::simdjson_result
 }
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H
-/* end file simdjson/generic/ondemand/document_stream-inl.h for lsx */
-/* including simdjson/generic/ondemand/field-inl.h for lsx: #include "simdjson/generic/ondemand/field-inl.h" */
-/* begin file simdjson/generic/ondemand/field-inl.h for lsx */
+/* end file simdjson/generic/ondemand/document_stream-inl.h for lasx */
+/* including simdjson/generic/ondemand/field-inl.h for lasx: #include "simdjson/generic/ondemand/field-inl.h" */
+/* begin file simdjson/generic/ondemand/field-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -132893,7 +164422,7 @@ simdjson_inline simdjson_result::simdjson_result
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 // clang 6 does not think the default constructor can be noexcept, so we make it explicit
@@ -132957,53 +164486,53 @@ simdjson_inline value field::value() && noexcept {
 }
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  lsx::ondemand::field &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lasx::ondemand::field &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::key() noexcept {
+simdjson_inline simdjson_result simdjson_result::key() noexcept {
   if (error()) { return error(); }
   return first.key();
 }
 
-simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.key_raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
+simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
   if (error()) { return error(); }
   return first.escaped_key();
 }
 
-simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(allow_replacement);
 }
 
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(receiver, allow_replacement);
 }
 
-simdjson_inline simdjson_result simdjson_result::value() noexcept {
+simdjson_inline simdjson_result simdjson_result::value() noexcept {
   if (error()) { return error(); }
   return std::move(first.value());
 }
@@ -133011,9 +164540,9 @@ simdjson_inline simdjson_result simdjson_result simdjson_result= &parser->implementation->structural_indexes[0] );
   SIMDJSON_ASSUME( position < &parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] );
-#else
-  (void)position; // Suppress unused parameter warning
 #endif
 }
 
@@ -133374,7 +164902,11 @@ simdjson_inline token_position json_iterator::position() const noexcept {
 simdjson_inline simdjson_result json_iterator::unescape(raw_json_string in, bool allow_replacement) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape(in, _string_buf_loc, allow_replacement);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape(in, _string_buf_loc, allow_replacement);
@@ -133384,7 +164916,11 @@ simdjson_inline simdjson_result json_iterator::unescape(raw_js
 simdjson_inline simdjson_result json_iterator::unescape_wobbly(raw_json_string in) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape_wobbly(in, _string_buf_loc);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape_wobbly(in, _string_buf_loc);
@@ -133447,22 +164983,22 @@ simdjson_warn_unused simdjson_inline bool json_iterator::copy_to_buffer(const ui
 }
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::json_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::json_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/json_iterator-inl.h for lsx */
-/* including simdjson/generic/ondemand/json_type-inl.h for lsx: #include "simdjson/generic/ondemand/json_type-inl.h" */
-/* begin file simdjson/generic/ondemand/json_type-inl.h for lsx */
+/* end file simdjson/generic/ondemand/json_iterator-inl.h for lasx */
+/* including simdjson/generic/ondemand/json_type-inl.h for lasx: #include "simdjson/generic/ondemand/json_type-inl.h" */
+/* begin file simdjson/generic/ondemand/json_type-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -133473,7 +165009,7 @@ simdjson_inline simdjson_result::simdjson_result(e
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept {
@@ -133567,22 +165103,22 @@ simdjson_inline void number::skip_double() noexcept {
 }
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::json_type &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::json_type &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
-/* end file simdjson/generic/ondemand/json_type-inl.h for lsx */
-/* including simdjson/generic/ondemand/logger-inl.h for lsx: #include "simdjson/generic/ondemand/logger-inl.h" */
-/* begin file simdjson/generic/ondemand/logger-inl.h for lsx */
+/* end file simdjson/generic/ondemand/json_type-inl.h for lasx */
+/* including simdjson/generic/ondemand/logger-inl.h for lasx: #include "simdjson/generic/ondemand/logger-inl.h" */
+/* begin file simdjson/generic/ondemand/logger-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -133597,7 +165133,7 @@ simdjson_inline simdjson_result::simdjson_result(error
 #include 
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 namespace logger {
 
@@ -133804,13 +165340,13 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 
 } // namespace logger
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
-/* end file simdjson/generic/ondemand/logger-inl.h for lsx */
-/* including simdjson/generic/ondemand/object-inl.h for lsx: #include "simdjson/generic/ondemand/object-inl.h" */
-/* begin file simdjson/generic/ondemand/object-inl.h for lsx */
+/* end file simdjson/generic/ondemand/logger-inl.h for lasx */
+/* including simdjson/generic/ondemand/object-inl.h for lasx: #include "simdjson/generic/ondemand/object-inl.h" */
+/* begin file simdjson/generic/ondemand/object-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -133830,7 +165366,7 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 simdjson_inline simdjson_result object::find_field_unordered(const std::string_view key) & noexcept {
@@ -134104,55 +165640,55 @@ simdjson_warn_unused simdjson_inline error_code object::extract_into(T& out) & n
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::object &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::object &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field_unordered(key);
+  return std::forward(first).find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first)[key];
+  return std::forward(first)[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field(key);
+  return std::forward(first).find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
     std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -134160,27 +165696,27 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
 
-inline simdjson_result simdjson_result::reset() noexcept {
+inline simdjson_result simdjson_result::reset() noexcept {
   if (error()) { return error(); }
   return first.reset();
 }
 
-inline simdjson_result simdjson_result::is_empty() noexcept {
+inline simdjson_result simdjson_result::is_empty() noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
 
-simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
 
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
@@ -134188,9 +165724,9 @@ simdjson_inline  simdjson_result simdjson_result simdjson_result object_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  // We must call * once per iteration.
+  SIMDJSON_ASSUME(!has_been_referenced);
+  has_been_referenced = true;
+#endif
   error_code error = iter.error();
   if (error) { iter.abandon(); return error; }
   auto result = field::start(iter);
@@ -134232,6 +165773,11 @@ simdjson_inline bool object_iterator::operator!=(const object_iterator &) const
 SIMDJSON_PUSH_DISABLE_WARNINGS
 SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
 simdjson_inline object_iterator &object_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   // Before calling ++, we must have called *.
+   SIMDJSON_ASSUME(has_been_referenced);
+   has_been_referenced = false;
+#endif
   // TODO this is a safety rail ... users should exit loops as soon as they receive an error.
   // Nonetheless, let's see if performance is OK with this if statement--the compiler may give it to us for free.
   if (!iter.is_open()) { return *this; } // Iterator will be released if there is an error
@@ -134287,39 +165833,39 @@ SIMDJSON_POP_DISABLE_WARNINGS
 //
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  lsx::ondemand::object_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  lasx::ondemand::object_iterator &&value
 ) noexcept
-  : implementation_simdjson_result_base(std::forward(value))
+  : implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
 // Checks for ']' and ','
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++first;
@@ -134329,9 +165875,9 @@ simdjson_inline simdjson_result &simdjson_result
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/object_iterator-inl.h for lsx */
-/* including simdjson/generic/ondemand/parser-inl.h for lsx: #include "simdjson/generic/ondemand/parser-inl.h" */
-/* begin file simdjson/generic/ondemand/parser-inl.h for lsx */
+/* end file simdjson/generic/ondemand/object_iterator-inl.h for lasx */
+/* including simdjson/generic/ondemand/parser-inl.h for lasx: #include "simdjson/generic/ondemand/parser-inl.h" */
+/* begin file simdjson/generic/ondemand/parser-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -134348,7 +165894,7 @@ simdjson_inline simdjson_result &simdjson_result
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 simdjson_inline parser::parser(size_t max_capacity) noexcept
@@ -134558,22 +166104,22 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser::
 
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::parser &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
-
+simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::parser &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
-/* end file simdjson/generic/ondemand/parser-inl.h for lsx */
-/* including simdjson/generic/ondemand/raw_json_string-inl.h for lsx: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for lsx */
+/* end file simdjson/generic/ondemand/parser-inl.h for lasx */
+/* including simdjson/generic/ondemand/raw_json_string-inl.h for lasx: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -134586,7 +166132,7 @@ simdjson_inline simdjson_result::simdjson_result(error_co
 
 namespace simdjson {
 
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 simdjson_inline raw_json_string::raw_json_string(const uint8_t * _buf) noexcept : buf{_buf} {}
@@ -134760,277 +166306,38 @@ simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, cons
 }
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::raw_json_string &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::raw_json_string &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
+simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
   if (error()) { return error(); }
   return first.raw();
 }
-simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
+simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
   if (error()) { return error(); }
   return first[i];
 }
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(lsx::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(lasx::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
   if (error()) { return error(); }
   return first.unescape(iter, allow_replacement);
 }
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(lsx::ondemand::json_iterator &iter) const noexcept {
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(lasx::ondemand::json_iterator &iter) const noexcept {
   if (error()) { return error(); }
   return first.unescape_wobbly(iter);
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
-/* end file simdjson/generic/ondemand/raw_json_string-inl.h for lsx */
-/* including simdjson/generic/ondemand/serialization-inl.h for lsx: #include "simdjson/generic/ondemand/serialization-inl.h" */
-/* begin file simdjson/generic/ondemand/serialization-inl.h for lsx */
-#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
-/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_builder.h" */
-/* amalgamation skipped (editor-only): #endif */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-inline std::string_view trim(const std::string_view str) noexcept {
-  // We can almost surely do better by rolling our own find_first_not_of function.
-  size_t first = str.find_first_not_of(" \t\n\r");
-  // If we have the empty string (just white space), then no trimming is possible, and
-  // we return the empty string_view.
-  if (std::string_view::npos == first) { return std::string_view(); }
-  size_t last = str.find_last_not_of(" \t\n\r");
-  return str.substr(first, (last - first + 1));
-}
-
-
-inline simdjson_result to_json_string(lsx::ondemand::document& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(lsx::ondemand::document_reference& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(lsx::ondemand::value& x) noexcept {
-  /**
-   * If we somehow receive a value that has already been consumed,
-   * then the following code could be in trouble. E.g., we create
-   * an array as needed, but if an array was already created, then
-   * it could be bad.
-   */
-  using namespace lsx::ondemand;
-  lsx::ondemand::json_type t;
-  auto error = x.type().get(t);
-  if(error != SUCCESS) { return error; }
-  switch (t)
-  {
-    case json_type::array:
-    {
-      lsx::ondemand::array array;
-      error = x.get_array().get(array);
-      if(error) { return error; }
-      return to_json_string(array);
-    }
-    case json_type::object:
-    {
-      lsx::ondemand::object object;
-      error = x.get_object().get(object);
-      if(error) { return error; }
-      return to_json_string(object);
-    }
-    default:
-      return trim(x.raw_json_token());
-  }
-}
-
-inline simdjson_result to_json_string(lsx::ondemand::object& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(lsx::ondemand::array& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
-}
-} // namespace simdjson
-
-namespace simdjson { namespace lsx { namespace ondemand {
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::document_reference& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
-  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
-}
-#endif
-}}} // namespace simdjson::lsx::ondemand
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-/* end file simdjson/generic/ondemand/serialization-inl.h for lsx */
-/* including simdjson/generic/ondemand/token_iterator-inl.h for lsx: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/token_iterator-inl.h for lsx */
+/* end file simdjson/generic/ondemand/raw_json_string-inl.h for lasx */
+/* including simdjson/generic/ondemand/token_iterator-inl.h for lasx: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/token_iterator-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -135041,7 +166348,7 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::lsx::ondemand::obje
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 simdjson_inline token_iterator::token_iterator(
@@ -135112,22 +166419,22 @@ simdjson_inline bool token_iterator::operator<=(const token_iterator &other) con
 }
 
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::token_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::token_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/token_iterator-inl.h for lsx */
-/* including simdjson/generic/ondemand/value_iterator-inl.h for lsx: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/value_iterator-inl.h for lsx */
+/* end file simdjson/generic/ondemand/token_iterator-inl.h for lasx */
+/* including simdjson/generic/ondemand/value_iterator-inl.h for lasx: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/value_iterator-inl.h for lasx */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -135142,7 +166449,7 @@ simdjson_inline simdjson_result::simdjson_result(
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 
 simdjson_inline value_iterator::value_iterator(
@@ -135224,7 +166531,6 @@ simdjson_warn_unused simdjson_inline error_code value_iterator::end_container()
 
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::has_next_field() noexcept {
   assert_at_next();
-
   // It's illegal to call this unless there are more tokens: anything that ends in } or ] is
   // obligated to verify there are more tokens if they are not the top level.
   switch (*_json_iter->return_current_and_advance()) {
@@ -135646,9 +166952,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_string(string_type& receiver, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_string(allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_wobbly_string() noexcept {
@@ -135736,7 +167046,7 @@ simdjson_inline simdjson_result value_iterator::is_root_integer(bool check
   return answer;
 }
 
-simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
+simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
   auto max_len = peek_root_length();
   auto json = peek_root_scalar("number");
   // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
@@ -135788,9 +167098,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_root_string(check_trailing, allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_wobbly_string(bool check_trailing) noexcept {
@@ -135940,1388 +167254,538 @@ simdjson_inline simdjson_result value_iterator::is_root_null(bool check_tr
 }
 
 simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
-
-  return _json_iter->skip_child(depth());
-}
-
-simdjson_inline value_iterator value_iterator::child() const noexcept {
-  assert_at_child();
-  return { _json_iter, depth()+1, _json_iter->token.position() };
-}
-
-// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
-// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
-// marked non-inline.
-SIMDJSON_PUSH_DISABLE_WARNINGS
-SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
-simdjson_inline bool value_iterator::is_open() const noexcept {
-  return _json_iter->depth() >= depth();
-}
-SIMDJSON_POP_DISABLE_WARNINGS
-
-simdjson_inline bool value_iterator::at_end() const noexcept {
-  return _json_iter->at_end();
-}
-
-simdjson_inline bool value_iterator::at_start() const noexcept {
-  return _json_iter->token.position() == start_position();
-}
-
-simdjson_inline bool value_iterator::at_first_field() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  return _json_iter->token.position() == start_position() + 1;
-}
-
-simdjson_inline void value_iterator::abandon() noexcept {
-  _json_iter->abandon();
-}
-
-simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
-  return _depth;
-}
-simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
-  return _json_iter->error;
-}
-simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
-  return _json_iter->string_buf_loc();
-}
-simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
-  return *_json_iter;
-}
-simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
-  return *_json_iter;
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
-  return _json_iter->peek(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
-  return _json_iter->peek_length(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
-  return _json_iter->peek_root_length(start_position());
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return peek_start(); }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return; }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
-  logger::log_start_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  const uint8_t *json;
-  if (!is_at_start()) {
-#if SIMDJSON_DEVELOPMENT_CHECKS
-    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
-#endif
-    json = peek_start();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-  } else {
-    assert_at_start();
-    /**
-     * We should be prudent. Let us peek. If it is not the right type, we
-     * return an error. Only once we have determined that we have the right
-     * type are we allowed to advance!
-     */
-    json = _json_iter->peek();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-    _json_iter->return_current_and_advance();
-  }
-
-
-  return SUCCESS;
-}
-
-
-simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_root();
-  return _json_iter->peek();
-}
-simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_non_root_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_root();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_non_root_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
-  logger::log_error(*_json_iter, start_position(), depth(), message);
-  return INCORRECT_TYPE;
-}
-
-simdjson_inline bool value_iterator::is_at_start() const noexcept {
-  return position() == start_position();
-}
-
-simdjson_inline bool value_iterator::is_at_key() const noexcept {
-  // Keys are at the same depth as the object.
-  // Note here that we could be safer and check that we are within an object,
-  // but we do not.
-  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
-}
-
-simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
-  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
-  auto delta = position() - start_position();
-  return delta == 1 || delta == 2;
-}
-
-inline void value_iterator::assert_at_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_container_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_next() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-simdjson_inline void value_iterator::move_at_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position);
-}
-
-simdjson_inline void value_iterator::move_at_container_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position + 1);
-}
-
-simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_array();
-}
-
-simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_object();
-}
-
-inline void value_iterator::assert_at_child() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_root() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth == 1 );
-}
-
-inline void value_iterator::assert_at_non_root_start() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth > 1 );
-}
-
-inline void value_iterator::assert_is_valid() const noexcept {
-  SIMDJSON_ASSUME( _json_iter != nullptr );
-}
-
-simdjson_inline bool value_iterator::is_valid() const noexcept {
-  return _json_iter != nullptr;
-}
-
-simdjson_inline simdjson_result value_iterator::type() const noexcept {
-  switch (*peek_start()) {
-    case '{':
-      return json_type::object;
-    case '[':
-      return json_type::array;
-    case '"':
-      return json_type::string;
-    case 'n':
-      return json_type::null;
-    case 't': case 'f':
-      return json_type::boolean;
-    case '-':
-    case '0': case '1': case '2': case '3': case '4':
-    case '5': case '6': case '7': case '8': case '9':
-      return json_type::number;
-    default:
-      return json_type::unknown;
-  }
-}
-
-simdjson_inline token_position value_iterator::start_position() const noexcept {
-  return _start_position;
-}
-
-simdjson_inline token_position value_iterator::position() const noexcept {
-  return _json_iter->position();
-}
-
-simdjson_inline token_position value_iterator::end_position() const noexcept {
-  return _json_iter->end_position();
-}
-
-simdjson_inline token_position value_iterator::last_position() const noexcept {
-  return _json_iter->last_position();
-}
-
-simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
-  return _json_iter->report_error(error, message);
-}
-
-} // namespace ondemand
-} // namespace lsx
-} // namespace simdjson
-
-namespace simdjson {
-
-simdjson_inline simdjson_result::simdjson_result(lsx::ondemand::value_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/value_iterator-inl.h for lsx */
-
-// JSON builder inline definitions
-/* including simdjson/generic/ondemand/json_string_builder-inl.h for lsx: #include "simdjson/generic/ondemand/json_string_builder-inl.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder-inl.h for lsx */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand
- * directory but we will move it to a builder directory later.
- */
-#include 
-#include 
-#include 
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-/*
- * Empirically, we have found that an inlined optimization is important for
- * performance. The following macros are not ideal. We should find a better
- * way to inline the code.
- */
-
-#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
-    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
-     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
-#endif
-#endif
-
-#if defined(__aarch64__) || defined(_M_ARM64)
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
-#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
-#endif
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-#include 
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#include 
-#endif
-
-namespace simdjson {
-namespace lsx {
-namespace builder {
-
-static SIMDJSON_CONSTEXPR_LAMBDA std::array
-    json_quotable_character = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-/**
-
-A possible SWAR implementation of has_json_escapable_byte. It is not used
-because it is slower than the current implementation. It is kept here for
-reference (to show that we tried it).
-
-inline bool has_json_escapable_byte(uint64_t x) {
-  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
-  uint64_t xor2 = x ^ 0x0202020202020202ULL;
-  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
-  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
-  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
-  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
-}
-
-**/
-
-SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
-simple_needs_escaping(std::string_view v) {
-  for (char c : v) {
-    // a table lookup is faster than a series of comparisons
-    if (json_quotable_character[static_cast(c)]) {
-      return true;
-    }
-  }
-  return false;
-}
-
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  uint8x16_t running = vdupq_n_u8(0);
-  uint8x16_t v34 = vdupq_n_u8(34);
-  uint8x16_t v92 = vdupq_n_u8(92);
-
-  for (; i + 15 < view.size(); i += 16) {
-    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  if (i < view.size()) {
-    uint8x16_t word =
-        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
-}
-#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  __m128i running = _mm_setzero_si128();
-  for (; i + 15 < view.size(); i += 16) {
-
-    __m128i word =
-        _mm_loadu_si128(reinterpret_cast(view.data() + i));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  if (i < view.size()) {
-    __m128i word = _mm_loadu_si128(
-        reinterpret_cast(view.data() + view.length() - 16));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  return _mm_movemask_epi8(running) != 0;
-}
-#else
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  return simple_needs_escaping(view);
-}
-#endif
-
-SIMDJSON_CONSTEXPR_LAMBDA inline size_t
-find_next_json_quotable_character(const std::string_view view,
-                                  size_t location) noexcept {
-
-  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
-    if (json_quotable_character[static_cast(*pos)]) {
-      return pos - view.begin();
-    }
-  }
-  return size_t(view.size());
-}
-
-SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
-    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
-    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
-    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
-    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
-    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
-
-// All Unicode characters may be placed within the quotation marks, except for
-// the characters that MUST be escaped: quotation mark, reverse solidus, and the
-// control characters (U+0000 through U+001F). There are two-character sequence
-// escape representations of some popular characters:
-// \", \\, \b, \f, \n, \r, \t.
-SIMDJSON_CONSTEXPR_LAMBDA void escape_json_char(char c, char *&out) {
-  if (c == '"') {
-    memcpy(out, "\\\"", 2);
-    out += 2;
-  } else if (c == '\\') {
-    memcpy(out, "\\\\", 2);
-    out += 2;
-  } else {
-    std::string_view v = control_chars[uint8_t(c)];
-    memcpy(out, v.data(), v.size());
-    out += v.size();
-  }
-}
-
-inline size_t write_string_escaped(const std::string_view input, char *out) {
-  size_t mysize = input.size();
-  if (!fast_needs_escaping(input)) { // fast path!
-    memcpy(out, input.data(), input.size());
-    return input.size();
-  }
-  const char *const initout = out;
-  size_t location = find_next_json_quotable_character(input, 0);
-  memcpy(out, input.data(), location);
-  out += location;
-  escape_json_char(input[location], out);
-  location += 1;
-  while (location < mysize) {
-    size_t newlocation = find_next_json_quotable_character(input, location);
-    memcpy(out, input.data() + location, newlocation - location);
-    out += newlocation - location;
-    location = newlocation;
-    if (location == mysize) {
-      break;
-    }
-    escape_json_char(input[location], out);
-    location += 1;
-  }
-  return out - initout;
-}
-
-simdjson_inline string_builder::string_builder(size_t initial_capacity)
-    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
-      capacity(buffer.get() != nullptr ? initial_capacity : 0),
-      is_valid(buffer.get() != nullptr) {}
-
-simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
-  // We use the convention that when is_valid is false, then the capacity and
-  // the position are 0.
-  // Most of the time, this function will return true.
-  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
-    return true;
-  }
-  // check for overflow, most of the time there is no overflow
-  if (simdjson_likely(position + upcoming_bytes < position)) {
-    return false;
-  }
-  // We will rarely get here.
-  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
-  // If the buffer allocation failed, we set is_valid to false.
-  return is_valid;
-}
-
-simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
-  if (!is_valid) {
-    return;
-  }
-  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
-  if (new_buffer.get() == nullptr) {
-    set_valid(false);
-    return;
-  }
-  std::memcpy(new_buffer.get(), buffer.get(), position);
-  buffer.swap(new_buffer);
-  capacity = desired_capacity;
-}
-
-simdjson_inline void string_builder::set_valid(bool valid) noexcept {
-  if (!valid) {
-    is_valid = false;
-    capacity = 0;
-    position = 0;
-    buffer.reset();
-  } else {
-    is_valid = true;
-  }
-}
-
-simdjson_inline size_t string_builder::size() const noexcept {
-  return position;
-}
-
-simdjson_inline void string_builder::append(char c) noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = c;
-  }
-}
-
-simdjson_inline void string_builder::append_null() noexcept {
-  constexpr char null_literal[] = "null";
-  constexpr size_t null_len = sizeof(null_literal) - 1;
-  if (capacity_check(null_len)) {
-    std::memcpy(buffer.get() + position, null_literal, null_len);
-    position += null_len;
-  }
-}
-
-simdjson_inline void string_builder::clear() noexcept {
-  position = 0;
-  // if it was invalid, we should try to repair it
-  if (!is_valid) {
-    capacity = 0;
-    buffer.reset();
-    is_valid = true;
-  }
-}
-
-namespace internal {
-
-template ::value>::type>
-simdjson_really_inline int int_log2(number_type x) {
-  return 63 - leading_zeroes(uint64_t(x) | 1);
-}
-
-simdjson_really_inline int fast_digit_count_32(uint32_t x) {
-  static uint64_t table[] = {
-      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
-      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
-      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
-      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
-      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
-      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
-      42949672960, 42949672960};
-  return uint32_t((x + table[int_log2(x)]) >> 32);
-}
-
-simdjson_really_inline int fast_digit_count_64(uint64_t x) {
-  static uint64_t table[] = {9,
-                             99,
-                             999,
-                             9999,
-                             99999,
-                             999999,
-                             9999999,
-                             99999999,
-                             999999999,
-                             9999999999,
-                             99999999999,
-                             999999999999,
-                             9999999999999,
-                             99999999999999,
-                             999999999999999ULL,
-                             9999999999999999ULL,
-                             99999999999999999ULL,
-                             999999999999999999ULL,
-                             9999999999999999999ULL};
-  int y = (19 * int_log2(x) >> 6);
-  y += x > table[y];
-  return y + 1;
-}
-
-template ::value>::type>
-simdjson_really_inline size_t digit_count(number_type v) noexcept {
-  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
-                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
-                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
-  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
-    return fast_digit_count_32(static_cast(v));
-  }
-  else {
-    return fast_digit_count_64(static_cast(v));
-  }
-}
-static const char decimal_table[200] = {
-    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
-    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
-    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
-    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
-    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
-    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
-    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
-    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
-    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
-    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
-    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
-    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
-    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
-    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
-    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
-    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
-    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
-};
-} // namespace internal
-
-template 
-simdjson_inline void string_builder::append(number_type v) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_integral::value ||
-                    std::is_floating_point::value,
-                "Unsupported number type");
-  // If C++17 is available, we can 'if constexpr' here.
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    if (v) {
-      constexpr char true_literal[] = "true";
-      constexpr size_t true_len = sizeof(true_literal) - 1;
-      if (capacity_check(true_len)) {
-        std::memcpy(buffer.get() + position, true_literal, true_len);
-        position += true_len;
-      }
-    } else {
-      constexpr char false_literal[] = "false";
-      constexpr size_t false_len = sizeof(false_literal) - 1;
-      if (capacity_check(false_len)) {
-        std::memcpy(buffer.get() + position, false_literal, false_len);
-        position += false_len;
-      }
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      unsigned_type pv = static_cast(v);
-      size_t dc = internal::digit_count(pv);
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      bool negative = v < 0;
-      unsigned_type pv = static_cast(v);
-      if (negative) {
-        pv = 0 - pv; // the 0 is for Microsoft
-      }
-      size_t dc = internal::digit_count(pv);
-      // by always writing the minus sign, we avoid the branch.
-      buffer.get()[position] = '-';
-      position += negative ? 1 : 0;
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
-    constexpr size_t max_number_size = 24;
-    if (capacity_check(max_number_size)) {
-      // We could specialize for float.
-      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
-                                               double(v));
-      position = end - buffer.get();
-    }
-  }
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
+
+  return _json_iter->skip_child(depth());
 }
 
-simdjson_inline void
-string_builder::escape_and_append(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(6 * input.size())) {
-    position += write_string_escaped(input, buffer.get() + position);
-  }
+simdjson_inline value_iterator value_iterator::child() const noexcept {
+  assert_at_child();
+  return { _json_iter, depth()+1, _json_iter->token.position() };
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * input.size())) {
-    buffer.get()[position++] = '"';
-    position += write_string_escaped(input, buffer.get() + position);
-    buffer.get()[position++] = '"';
-  }
+// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
+// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
+// marked non-inline.
+SIMDJSON_PUSH_DISABLE_WARNINGS
+SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
+simdjson_inline bool value_iterator::is_open() const noexcept {
+  return _json_iter->depth() >= depth();
 }
+SIMDJSON_POP_DISABLE_WARNINGS
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(char input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * 1)) {
-    buffer.get()[position++] = '"';
-    std::string_view cinput(&input, 1);
-    position += write_string_escaped(cinput, buffer.get() + position);
-    buffer.get()[position++] = '"';
-  }
+simdjson_inline bool value_iterator::at_end() const noexcept {
+  return _json_iter->at_end();
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(const char *input) noexcept {
-  std::string_view cinput(input);
-  escape_and_append_with_quotes(cinput);
+simdjson_inline bool value_iterator::at_start() const noexcept {
+  return _json_iter->token.position() == start_position();
 }
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
-  escape_and_append_with_quotes(constevalutil::string_constant::value);
+
+simdjson_inline bool value_iterator::at_first_field() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  return _json_iter->token.position() == start_position() + 1;
 }
-#endif
 
-simdjson_inline void string_builder::append_raw(const char *c) noexcept {
-  size_t len = std::strlen(c);
-  append_raw(c, len);
+simdjson_inline void value_iterator::abandon() noexcept {
+  _json_iter->abandon();
 }
 
-simdjson_inline void
-string_builder::append_raw(std::string_view input) noexcept {
-  if (capacity_check(input.size())) {
-    std::memcpy(buffer.get() + position, input.data(), input.size());
-    position += input.size();
-  }
+simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
+  return _depth;
+}
+simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
+  return _json_iter->error;
+}
+simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
+  return _json_iter->string_buf_loc();
+}
+simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
+  return *_json_iter;
+}
+simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
+  return *_json_iter;
 }
 
-simdjson_inline void string_builder::append_raw(const char *str,
-                                                size_t len) noexcept {
-  if (capacity_check(len)) {
-    std::memcpy(buffer.get() + position, str, len);
-    position += len;
-  }
+simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
+  return _json_iter->peek(start_position());
 }
-#if SIMDJSON_SUPPORTS_CONCEPTS
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-simdjson_inline void string_builder::append(const T &opt) {
-  if (opt) {
-    append(*opt);
-  } else {
-    append_null();
-  }
+simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
+  return _json_iter->peek_length(start_position());
+}
+simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
+  return _json_iter->peek_root_length(start_position());
 }
 
-template 
-  requires(require_custom_serialization)
-simdjson_inline void string_builder::append(T &&val) {
-  serialize(*this, std::forward(val));
+simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return peek_start(); }
+
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  return _json_iter->peek();
 }
 
-template 
-  requires(std::is_convertible::value ||
-           std::is_same::value)
-simdjson_inline void string_builder::append(const T &value) {
-  escape_and_append_with_quotes(value);
+simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return; }
+
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
+
+simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
+  logger::log_start_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  const uint8_t *json;
+  if (!is_at_start()) {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
 #endif
+    json = peek_start();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+  } else {
+    assert_at_start();
+    /**
+     * We should be prudent. Let us peek. If it is not the right type, we
+     * return an error. Only once we have determined that we have the right
+     * type are we allowed to advance!
+     */
+    json = _json_iter->peek();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+    _json_iter->return_current_and_advance();
+  }
 
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-// Support for range-based appending (std::ranges::view, etc.)
-template 
-  requires(!std::is_convertible::value && !require_custom_serialization)
-simdjson_inline void string_builder::append(const R &range) noexcept {
-  auto it = std::ranges::begin(range);
-  auto end = std::ranges::end(range);
-  if constexpr (concepts::is_pair>) {
-    start_object();
 
-    if (it == end) {
-      end_object();
-      return; // Handle empty range
-    }
-    // Append first item without leading comma
-    append_key_value(it->first, it->second);
-    ++it;
+  return SUCCESS;
+}
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append_key_value(it->first, it->second);
-    }
-    end_object();
-  } else {
-    start_array();
-    if (it == end) {
-      end_array();
-      return; // Handle empty range
-    }
 
-    // Append first item without leading comma
-    append(*it);
-    ++it;
+simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append(*it);
-    }
-    end_array();
-  }
+  assert_at_root();
+  return _json_iter->peek();
 }
+simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
 
-#endif
+  assert_at_non_root_start();
+  return _json_iter->peek();
+}
 
-#if SIMDJSON_EXCEPTIONS
-simdjson_inline string_builder::operator std::string() const noexcept(false) {
-  return std::string(operator std::string_view());
+simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
+
+  assert_at_root();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
+simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
 
-simdjson_inline string_builder::operator std::string_view() const
-    noexcept(false) simdjson_lifetime_bound {
-  return view();
+  assert_at_non_root_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
-#endif
 
-simdjson_inline simdjson_result
-string_builder::view() const noexcept {
-  if (!is_valid) {
-    return simdjson::OUT_OF_CAPACITY;
-  }
-  return std::string_view(buffer.get(), position);
+simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
+  logger::log_error(*_json_iter, start_position(), depth(), message);
+  return INCORRECT_TYPE;
 }
 
-simdjson_inline simdjson_result string_builder::c_str() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position] = '\0';
-    return buffer.get();
-  }
-  return simdjson::OUT_OF_CAPACITY;
+simdjson_inline bool value_iterator::is_at_start() const noexcept {
+  return position() == start_position();
 }
 
-simdjson_inline bool string_builder::validate_unicode() const noexcept {
-  return simdjson::validate_utf8(buffer.get(), position);
+simdjson_inline bool value_iterator::is_at_key() const noexcept {
+  // Keys are at the same depth as the object.
+  // Note here that we could be safer and check that we are within an object,
+  // but we do not.
+  //
+  // As long as we are at the object's depth, in a valid document,
+  // we will only ever be at { , : or the actual string key: ".
+  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
 }
 
-simdjson_inline void string_builder::start_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '{';
-  }
+simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
+  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
+  auto delta = position() - start_position();
+  return delta == 1 || delta == 2;
 }
 
-simdjson_inline void string_builder::end_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '}';
-  }
+inline void value_iterator::assert_at_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
 }
 
-simdjson_inline void string_builder::start_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '[';
-  }
+inline void value_iterator::assert_at_container_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
 }
 
-simdjson_inline void string_builder::end_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ']';
-  }
+inline void value_iterator::assert_at_next() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
 }
 
-simdjson_inline void string_builder::append_comma() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ',';
-  }
+simdjson_inline void value_iterator::move_at_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position);
 }
 
-simdjson_inline void string_builder::append_colon() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ':';
-  }
+simdjson_inline void value_iterator::move_at_container_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position + 1);
 }
 
-template 
-simdjson_inline void
-string_builder::append_key_value(key_type key, value_type value) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_convertible::value,
-                "Unsupported key type");
-  escape_and_append_with_quotes(key);
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_array();
 }
 
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void
-string_builder::append_key_value(value_type value) noexcept {
-  escape_and_append_with_quotes();
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_object();
 }
-#endif
 
-} // namespace builder
-} // namespace lsx
-} // namespace simdjson
+inline void value_iterator::assert_at_child() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-/* end file simdjson/generic/ondemand/json_string_builder-inl.h for lsx */
-/* including simdjson/generic/ondemand/json_builder.h for lsx: #include "simdjson/generic/ondemand/json_builder.h" */
-/* begin file simdjson/generic/ondemand/json_builder.h for lsx */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_BUILDER_H
+inline void value_iterator::assert_at_root() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth == 1 );
+}
 
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-#if SIMDJSON_STATIC_REFLECTION
+inline void value_iterator::assert_at_non_root_start() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth > 1 );
+}
 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-// #include  // for std::define_static_string - header not available yet
+inline void value_iterator::assert_is_valid() const noexcept {
+  SIMDJSON_ASSUME( _json_iter != nullptr );
+}
 
-namespace simdjson {
-namespace lsx {
-namespace builder {
+simdjson_inline bool value_iterator::is_valid() const noexcept {
+  return _json_iter != nullptr;
+}
 
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  auto it = t.begin();
-  auto end = t.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
+simdjson_inline simdjson_result value_iterator::type() const noexcept {
+  switch (*peek_start()) {
+    case '{':
+      return json_type::object;
+    case '[':
+      return json_type::array;
+    case '"':
+      return json_type::string;
+    case 'n':
+      return json_type::null;
+    case 't': case 'f':
+      return json_type::boolean;
+    case '-':
+    case '0': case '1': case '2': case '3': case '4':
+    case '5': case '6': case '7': case '8': case '9':
+      return json_type::number;
+    default:
+      return json_type::unknown;
   }
-  b.append(']');
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-constexpr void atom(string_builder &b, const T &t) {
-  b.escape_and_append_with_quotes(t);
+simdjson_inline token_position value_iterator::start_position() const noexcept {
+  return _start_position;
 }
 
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &m) {
-  if (m.empty()) {
-    b.append_raw("{}");
-    return;
-  }
-  b.append('{');
-  bool first = true;
-  for (const auto& [key, value] : m) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    // Keys must be convertible to string_view per the concept
-    b.escape_and_append_with_quotes(key);
-    b.append(':');
-    atom(b, value);
-  }
-  b.append('}');
+simdjson_inline token_position value_iterator::position() const noexcept {
+  return _json_iter->position();
 }
 
+simdjson_inline token_position value_iterator::end_position() const noexcept {
+  return _json_iter->end_position();
+}
 
-template::value && !std::is_same_v>::type>
-constexpr void atom(string_builder &b, const number_type t) {
-  b.append(t);
+simdjson_inline token_position value_iterator::last_position() const noexcept {
+  return _json_iter->last_position();
 }
 
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, t.[:dm:]);
-    i++;
-  };
-  b.append('}');
+simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
+  return _json_iter->report_error(error, message);
 }
 
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &opt) {
-  if (opt) {
-    atom(b, opt.value());
-  } else {
-    b.append_raw("null");
-  }
+} // namespace ondemand
+} // namespace lasx
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::value_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
+/* end file simdjson/generic/ondemand/value_iterator-inl.h for lasx */
+/* including simdjson/generic/ondemand/serialization-inl.h for lasx: #include "simdjson/generic/ondemand/serialization-inl.h" */
+/* begin file simdjson/generic/ondemand/serialization-inl.h for lasx */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #endif */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+inline std::string_view trim(const std::string_view str) noexcept {
+  // We can almost surely do better by rolling our own find_first_not_of function.
+  size_t first = str.find_first_not_of(" \t\n\r");
+  // If we have the empty string (just white space), then no trimming is possible, and
+  // we return the empty string_view.
+  if (std::string_view::npos == first) { return std::string_view(); }
+  size_t last = str.find_last_not_of(" \t\n\r");
+  return str.substr(first, (last - first + 1));
 }
 
-// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &ptr) {
-  if (ptr) {
-    atom(b, *ptr);
-  } else {
-    b.append_raw("null");
-  }
+
+inline simdjson_result to_json_string(lasx::ondemand::document& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// Support for enums - serialize as string representation using expand approach from P2996R12
-template 
-  requires(std::is_enum_v && !require_custom_serialization)
-void atom(string_builder &b, const T &e) {
-#if SIMDJSON_STATIC_REFLECTION
-  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
-  template for (constexpr auto enum_val : enumerators) {
-    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
-    if (e == [:enum_val:]) {
-      b.append_raw(enum_str);
-      return;
-    }
-  };
-  // Fallback to integer if enum value not found
-  atom(b, static_cast>(e));
-#else
-  // Fallback: serialize as integer if reflection not available
-  atom(b, static_cast>(e));
-#endif
+inline simdjson_result to_json_string(lasx::ondemand::document_reference& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// Support for appendable containers that don't have operator[] (sets, etc.)
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &container) {
-  if (container.empty()) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  bool first = true;
-  for (const auto& item : container) {
-    if (!first) {
-      b.append(',');
+inline simdjson_result to_json_string(lasx::ondemand::value& x) noexcept {
+  /**
+   * If we somehow receive a value that has already been consumed,
+   * then the following code could be in trouble. E.g., we create
+   * an array as needed, but if an array was already created, then
+   * it could be bad.
+   */
+  using namespace lasx::ondemand;
+  lasx::ondemand::json_type t;
+  auto error = x.type().get(t);
+  if(error != SUCCESS) { return error; }
+  switch (t)
+  {
+    case json_type::array:
+    {
+      lasx::ondemand::array array;
+      error = x.get_array().get(array);
+      if(error) { return error; }
+      return to_json_string(array);
     }
-    first = false;
-    atom(b, item);
+    case json_type::object:
+    {
+      lasx::ondemand::object object;
+      error = x.get_object().get(object);
+      if(error) { return error; }
+      return to_json_string(object);
+    }
+    default:
+      return trim(x.raw_json_token());
   }
-  b.append(']');
 }
 
-// append functions that delegate to atom functions for primitive types
-template 
-  requires(std::is_arithmetic_v && !std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+inline simdjson_result to_json_string(lasx::ondemand::object& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+inline simdjson_result to_json_string(lasx::ondemand::array& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-// works for struct
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, z.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
+} // namespace simdjson
 
-// works for container that have begin() and end() iterators
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  auto it = z.begin();
-  auto end = z.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
+namespace simdjson { namespace lasx { namespace ondemand {
+
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
   }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
   }
-  b.append(']');
 }
+#endif
 
-template 
-  requires (require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  b.append(z);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-
-
-template 
-simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
 }
-
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-template 
-string_builder& operator<<(string_builder& b, const Z& z) {
-  append(b, z);
-  return b;
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-
-// extract_from: Serialize only specific fields from a struct to JSON
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-void extract_from(string_builder &b, const T &obj) {
-  // Helper to check if a field name matches any of the requested fields
-  auto should_extract = [](std::string_view field_name) constexpr -> bool {
-    return ((FieldNames.view() == field_name) || ...);
-  };
-
-  b.append('{');
-  bool first = true;
-
-  // Iterate through all members of T using reflection
-  template for (constexpr auto mem : std::define_static_array(
-      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-
-    if constexpr (std::meta::is_public(mem)) {
-      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
-
-      // Only serialize this field if it's in our list of requested fields
-      if constexpr (should_extract(key)) {
-        if (!first) {
-          b.append(',');
-        }
-        first = false;
-
-        // Serialize the key
-        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
-        b.append_raw(quoted_key);
-        b.append(':');
-
-        // Serialize the value
-        atom(b, obj.[:mem:]);
-      }
-    }
-  };
-
-  b.append('}');
+inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::document_reference& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
 }
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
 
-} // namespace builder
-} // namespace lsx
-// Alias the function template to 'to' in the global namespace
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  lsx::builder::string_builder b(initial_capacity);
-  lsx::builder::append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  lsx::builder::string_builder b(initial_capacity);
-  lsx::builder::append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
+  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
 }
-// Global namespace function for extract_from
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  lsx::builder::string_builder b(initial_capacity);
-  lsx::builder::extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
-
-} // namespace simdjson
-
-#endif // SIMDJSON_STATIC_REFLECTION
-
 #endif
-/* end file simdjson/generic/ondemand/json_builder.h for lsx */
+}}} // namespace simdjson::lasx::ondemand
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+/* end file simdjson/generic/ondemand/serialization-inl.h for lasx */
 
 // JSON path accessor (compile-time) - must be after inline definitions
-/* including simdjson/generic/ondemand/compile_time_accessors.h for lsx: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
-/* begin file simdjson/generic/ondemand/compile_time_accessors.h for lsx */
+/* including simdjson/generic/ondemand/compile_time_accessors.h for lasx: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
+/* begin file simdjson/generic/ondemand/compile_time_accessors.h for lasx */
 /**
  * Compile-time JSON Path and JSON Pointer accessors using C++26 reflection (P2996)
  *
@@ -137379,7 +167843,7 @@ simdjson_warn_unused simdjson_result extract_from(const T &obj, siz
 #include 
 
 namespace simdjson {
-namespace lsx {
+namespace lasx {
 namespace ondemand {
 /***
  * JSONPath implementation for compile-time access
@@ -137390,7 +167854,7 @@ namespace json_path {
 // Note: value type must be fully defined before this header is included
 // This is ensured by including this in amalgamated.h after value-inl.h
 
-using ::simdjson::lsx::ondemand::value;
+using ::simdjson::lasx::ondemand::value;
 
 // Path step types
 enum class step_type {
@@ -137524,7 +167988,7 @@ struct json_path_parser {
 // Compile-time path accessor generator
 template
 struct path_accessor {
-  using value = ::simdjson::lsx::ondemand::value;
+  using value = ::simdjson::lasx::ondemand::value;
 
   static constexpr auto parser = json_path_parser();
   static constexpr std::size_t num_steps = parser.count_steps();
@@ -138002,14 +168466,14 @@ struct path_accessor {
 
 // Compile-time path accessor with validation
 template
-inline simdjson_result<::simdjson::lsx::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::lasx::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::lsx::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::lasx::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
@@ -138240,56 +168704,63 @@ struct pointer_accessor {
 
 // Compile-time JSON Pointer accessor with validation
 template
-inline simdjson_result<::simdjson::lsx::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::lasx::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::lsx::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::lasx::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 } // namespace json_path
 } // namespace ondemand
-} // namespace lsx
+} // namespace lasx
 } // namespace simdjson
 
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 #endif // SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
 
-/* end file simdjson/generic/ondemand/compile_time_accessors.h for lsx */
+/* end file simdjson/generic/ondemand/compile_time_accessors.h for lasx */
 
-/* end file simdjson/generic/ondemand/amalgamated.h for lsx */
-/* including simdjson/lsx/end.h: #include "simdjson/lsx/end.h" */
-/* begin file simdjson/lsx/end.h */
+/* end file simdjson/generic/ondemand/amalgamated.h for lasx */
+/* including simdjson/lasx/end.h: #include "simdjson/lasx/end.h" */
+/* begin file simdjson/lasx/end.h */
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lsx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 #undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
-/* undefining SIMDJSON_IMPLEMENTATION from "lsx" */
+/* undefining SIMDJSON_IMPLEMENTATION from "lasx" */
 #undef SIMDJSON_IMPLEMENTATION
-/* end file simdjson/lsx/end.h */
 
-#endif // SIMDJSON_LSX_ONDEMAND_H
-/* end file simdjson/lsx/ondemand.h */
-#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(lasx)
-/* including simdjson/lasx/ondemand.h: #include "simdjson/lasx/ondemand.h" */
-/* begin file simdjson/lasx/ondemand.h */
-#ifndef SIMDJSON_LASX_ONDEMAND_H
-#define SIMDJSON_LASX_ONDEMAND_H
 
-/* including simdjson/lasx/begin.h: #include "simdjson/lasx/begin.h" */
-/* begin file simdjson/lasx/begin.h */
-/* defining SIMDJSON_IMPLEMENTATION to "lasx" */
-#define SIMDJSON_IMPLEMENTATION lasx
-/* including simdjson/lasx/base.h: #include "simdjson/lasx/base.h" */
-/* begin file simdjson/lasx/base.h */
-#ifndef SIMDJSON_LASX_BASE_H
-#define SIMDJSON_LASX_BASE_H
+#if SIMDJSON_CAN_ALWAYS_RUN_LASX
+// nothing needed.
+#else
+SIMDJSON_UNTARGET_REGION
+#endif
+/* end file simdjson/lasx/end.h */
+
+#endif // SIMDJSON_LASX_ONDEMAND_H
+/* end file simdjson/lasx/ondemand.h */
+#elif SIMDJSON_BUILTIN_IMPLEMENTATION_IS(rvv_vls)
+/* including simdjson/rvv-vls/ondemand.h: #include "simdjson/rvv-vls/ondemand.h" */
+/* begin file simdjson/rvv-vls/ondemand.h */
+#ifndef SIMDJSON_RVV_VLS_ONDEMAND_H
+#define SIMDJSON_RVV_VLS_ONDEMAND_H
+
+/* including simdjson/rvv-vls/begin.h: #include "simdjson/rvv-vls/begin.h" */
+/* begin file simdjson/rvv-vls/begin.h */
+/* defining SIMDJSON_IMPLEMENTATION to "rvv_vls" */
+#define SIMDJSON_IMPLEMENTATION rvv_vls
+/* including simdjson/rvv-vls/base.h: #include "simdjson/rvv-vls/base.h" */
+/* begin file simdjson/rvv-vls/base.h */
+#ifndef SIMDJSON_RVV_VLS_BASE_H
+#define SIMDJSON_RVV_VLS_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #include "simdjson/base.h" */
@@ -138297,54 +168768,63 @@ inline simdjson_result<::simdjson::lsx::ondemand::value> at_pointer_compiled(Doc
 
 namespace simdjson {
 /**
- * Implementation for LASX.
+ * RVV-VLS implementation.
  */
-namespace lasx {
+namespace rvv_vls {
 
 class implementation;
 
-namespace {
-namespace simd {
-template  struct simd8;
-template  struct simd8x64;
-} // namespace simd
-} // unnamed namespace
-
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
-#endif // SIMDJSON_LASX_BASE_H
-/* end file simdjson/lasx/base.h */
-/* including simdjson/lasx/intrinsics.h: #include "simdjson/lasx/intrinsics.h" */
-/* begin file simdjson/lasx/intrinsics.h */
-#ifndef SIMDJSON_LASX_INTRINSICS_H
-#define SIMDJSON_LASX_INTRINSICS_H
+#endif // SIMDJSON_RVV_VLS_BASE_H
+/* end file simdjson/rvv-vls/base.h */
+/* including simdjson/rvv-vls/intrinsics.h: #include "simdjson/rvv-vls/intrinsics.h" */
+/* begin file simdjson/rvv-vls/intrinsics.h */
+#ifndef SIMDJSON_RVV_VLS_INTRINSICS_H
+#define SIMDJSON_RVV_VLS_INTRINSICS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-// This should be the correct header whether
-// you use visual studio or other compilers.
-#include 
-
-static_assert(sizeof(__m256i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for LoongArch ASX");
-
-#endif //  SIMDJSON_LASX_INTRINSICS_H
-/* end file simdjson/lasx/intrinsics.h */
-/* including simdjson/lasx/bitmanipulation.h: #include "simdjson/lasx/bitmanipulation.h" */
-/* begin file simdjson/lasx/bitmanipulation.h */
-#ifndef SIMDJSON_LASX_BITMANIPULATION_H
-#define SIMDJSON_LASX_BITMANIPULATION_H
+#include 
+
+#define simdutf_vrgather_u8m1x2(tbl, idx)                                      \
+  __riscv_vcreate_v_u8m1_u8m2(                                                 \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m2_u8m1(idx, 0),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m2_u8m1(idx, 1),          \
+                               __riscv_vsetvlmax_e8m1()))
+
+#define simdutf_vrgather_u8m1x4(tbl, idx)                                      \
+  __riscv_vcreate_v_u8m1_u8m4(                                                 \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 0),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 1),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 2),          \
+                               __riscv_vsetvlmax_e8m1()),                      \
+      __riscv_vrgather_vv_u8m1(tbl, __riscv_vget_v_u8m4_u8m1(idx, 3),          \
+                               __riscv_vsetvlmax_e8m1()))
+
+#if __riscv_zbc
+#include 
+#endif
+
+#endif // SIMDJSON_RVV_VLS_INTRINSICS_H
+/* end file simdjson/rvv-vls/intrinsics.h */
+/* including simdjson/rvv-vls/bitmanipulation.h: #include "simdjson/rvv-vls/bitmanipulation.h" */
+/* begin file simdjson/rvv-vls/bitmanipulation.h */
+#ifndef SIMDJSON_RVV_VLS_BITMANIPULATION_H
+#define SIMDJSON_RVV_VLS_BITMANIPULATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/intrinsics.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmask.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 
 // We sometimes call trailing_zero on inputs that are zero,
@@ -138369,33 +168849,34 @@ simdjson_inline int leading_zeroes(uint64_t input_num) {
   return __builtin_clzll(input_num);
 }
 
-/* result might be undefined when input_num is zero */
-simdjson_inline int count_ones(uint64_t input_num) {
-  return __lasx_xvpickve2gr_w(__lasx_xvpcnt_d(__m256i(v4u64{input_num, 0, 0, 0})), 0);
+simdjson_inline long long int count_ones(uint64_t input_num) {
+  return __builtin_popcountll(input_num);
 }
 
-simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {
+simdjson_inline bool add_overflow(uint64_t value1, uint64_t value2,
+                                uint64_t *result) {
   return __builtin_uaddll_overflow(value1, value2,
                                    reinterpret_cast(result));
 }
 
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
-#endif // SIMDJSON_LASX_BITMANIPULATION_H
-/* end file simdjson/lasx/bitmanipulation.h */
-/* including simdjson/lasx/bitmask.h: #include "simdjson/lasx/bitmask.h" */
-/* begin file simdjson/lasx/bitmask.h */
-#ifndef SIMDJSON_LASX_BITMASK_H
-#define SIMDJSON_LASX_BITMASK_H
+#endif // SIMDJSON_RVV_VLS_BITMANIPULATION_H
+/* end file simdjson/rvv-vls/bitmanipulation.h */
+/* including simdjson/rvv-vls/bitmask.h: #include "simdjson/rvv-vls/bitmask.h" */
+/* begin file simdjson/rvv-vls/bitmask.h */
+#ifndef SIMDJSON_RVV_VLS_BITMASK_H
+#define SIMDJSON_RVV_VLS_BITMASK_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/intrinsics.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 
 //
@@ -138404,240 +168885,229 @@ namespace {
 // For example, prefix_xor(00100100) == 00011100
 //
 simdjson_inline uint64_t prefix_xor(uint64_t bitmask) {
+#if __riscv_zbc
+  return __riscv_clmul_64(bitmask, ~(uint64_t)0);
+#elif __riscv_zvbc
+  return __riscv_vmv_x(__riscv_vclmul(__riscv_vmv_s_x_u64m1(bitmask, 1), ~(uint64_t)0, 1));
+#else
   bitmask ^= bitmask << 1;
   bitmask ^= bitmask << 2;
   bitmask ^= bitmask << 4;
   bitmask ^= bitmask << 8;
   bitmask ^= bitmask << 16;
   bitmask ^= bitmask << 32;
+#endif
   return bitmask;
 }
 
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
-#endif
-/* end file simdjson/lasx/bitmask.h */
-/* including simdjson/lasx/numberparsing_defs.h: #include "simdjson/lasx/numberparsing_defs.h" */
-/* begin file simdjson/lasx/numberparsing_defs.h */
-#ifndef SIMDJSON_LASX_NUMBERPARSING_DEFS_H
-#define SIMDJSON_LASX_NUMBERPARSING_DEFS_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/intrinsics.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+#endif // SIMDJSON_RVV_VLS_BITMASK_H
 
-#include 
-
-namespace simdjson {
-namespace lasx {
-namespace numberparsing {
-
-// we don't have appropriate instructions, so let us use a scalar function
-// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
-/** @private */
-static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
-  uint64_t val;
-  std::memcpy(&val, chars, sizeof(uint64_t));
-  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
-  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
-  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
-}
-
-simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
-  internal::value128 answer;
-  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
-  answer.low = uint64_t(r);
-  answer.high = uint64_t(r >> 64);
-  return answer;
-}
-
-} // namespace numberparsing
-} // namespace lasx
-} // namespace simdjson
-
-#ifndef SIMDJSON_SWAR_NUMBER_PARSING
-#if SIMDJSON_IS_BIG_ENDIAN
-#define SIMDJSON_SWAR_NUMBER_PARSING 0
-#else
-#define SIMDJSON_SWAR_NUMBER_PARSING 1
-#endif
-#endif
-
-#endif // SIMDJSON_LASX_NUMBERPARSING_DEFS_H
-/* end file simdjson/lasx/numberparsing_defs.h */
-/* including simdjson/lasx/simd.h: #include "simdjson/lasx/simd.h" */
-/* begin file simdjson/lasx/simd.h */
-#ifndef SIMDJSON_LASX_SIMD_H
-#define SIMDJSON_LASX_SIMD_H
+/* end file simdjson/rvv-vls/bitmask.h */
+/* including simdjson/rvv-vls/simd.h: #include "simdjson/rvv-vls/simd.h" */
+/* begin file simdjson/rvv-vls/simd.h */
+#ifndef SIMDJSON_RVV_VLS_SIMD_H
+#define SIMDJSON_RVV_VLS_SIMD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/bitmanipulation.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/internal/simdprune_tables.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 namespace simd {
 
-  // Forward-declared so they can be used by splat and friends.
-  template
-  struct base {
-    __m256i value;
-
-    // Zero constructor
-    simdjson_inline base() : value{__m256i()} {}
-
-    // Conversion from SIMD register
-    simdjson_inline base(const __m256i _value) : value(_value) {}
-
-    // Conversion to SIMD register
-    simdjson_inline operator const __m256i&() const { return this->value; }
-    simdjson_inline operator __m256i&() { return this->value; }
-    simdjson_inline operator const v32i8&() const { return (v32i8&)this->value; }
-    simdjson_inline operator v32i8&() { return (v32i8&)this->value; }
+#if __riscv_v_fixed_vlen >= 512
+  static constexpr size_t VL8 = 512/8;
+  using vint8_t   = vint8m1_t   __attribute__((riscv_rvv_vector_bits(512)));
+  using vuint8_t  = vuint8m1_t  __attribute__((riscv_rvv_vector_bits(512)));
+  using vbool_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+  using vbitmask_t = uint64_t;
+#else
+  static constexpr size_t VL8 = __riscv_v_fixed_vlen/8;
+  using vint8_t   = vint8m1_t   __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen)));
+  using vuint8_t  = vuint8m1_t  __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen)));
+  using vbool_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(__riscv_v_fixed_vlen/8)));
+  #if __riscv_v_fixed_vlen == 128
+    using vbitmask_t = uint16_t;
+  #elif __riscv_v_fixed_vlen == 256
+    using vbitmask_t = uint32_t;
+  #endif
+#endif
 
-    // Bit operations
-    simdjson_inline Child operator|(const Child other) const { return __lasx_xvor_v(*this, other); }
-    simdjson_inline Child operator&(const Child other) const { return __lasx_xvand_v(*this, other); }
-    simdjson_inline Child operator^(const Child other) const { return __lasx_xvxor_v(*this, other); }
-    simdjson_inline Child bit_andnot(const Child other) const { return __lasx_xvandn_v(other, *this); }
-    simdjson_inline Child& operator|=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast | other; return *this_cast; }
-    simdjson_inline Child& operator&=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast & other; return *this_cast; }
-    simdjson_inline Child& operator^=(const Child other) { auto this_cast = static_cast(this); *this_cast = *this_cast ^ other; return *this_cast; }
-  };
+#if __riscv_v_fixed_vlen == 128
+  using vuint8x64_t = vuint8m4_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool2_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#elif __riscv_v_fixed_vlen == 256
+  using vuint8x64_t = vuint8m2_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool4_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#else
+  using vuint8x64_t = vuint8m1_t __attribute__((riscv_rvv_vector_bits(512)));
+  using vboolx64_t    = vbool8_t  __attribute__((riscv_rvv_vector_bits(512/8)));
+#endif
 
-  // Forward-declared so they can be used by splat and friends.
   template
   struct simd8;
 
-  template>
-  struct base8: base> {
-    simdjson_inline base8() : base>() {}
-    simdjson_inline base8(const __m256i _value) : base>(_value) {}
+  // SIMD byte mask type (returned by things like eq and gt)
+  template<>
+  struct simd8 {
+    vbool_t value;
+    using bitmask_t = vbitmask_t;
+    static constexpr int SIZE = sizeof(value);
 
-    friend simdjson_really_inline Mask operator==(const simd8 lhs, const simd8 rhs) { return __lasx_xvseq_b(lhs, rhs); }
+    simdjson_inline simd8(const vbool_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(__riscv_vmclr_m_b8(VL8)) {}
+    simdjson_inline simd8(bool _value) : simd8(splat(_value)) {}
 
-    static const int SIZE = sizeof(base>::value);
+    simdjson_inline operator const vbool_t&() const { return value; }
+    simdjson_inline operator vbool_t&() { return value; }
 
-    template
-    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
-        __m256i hi = __lasx_xvbsll_v(*this, N);
-        __m256i lo = __lasx_xvbsrl_v(*this, 16 - N);
-        __m256i tmp = __lasx_xvbsrl_v(prev_chunk, 16 - N);
-        lo = __lasx_xvpermi_q(lo, tmp, 0x21);
-        return __lasx_xvor_v(hi, lo);
+    static simdjson_inline simd8 splat(bool _value) {
+      return __riscv_vreinterpret_b8(__riscv_vmv_v_x_u64m1(((uint64_t)!_value)-1, 1));
+    }
+
+    simdjson_inline vbitmask_t to_bitmask() const {
+#if __riscv_v_fixed_vlen == 128
+      return __riscv_vmv_x(__riscv_vreinterpret_u16m1(value));
+#elif __riscv_v_fixed_vlen == 256
+      return __riscv_vmv_x(__riscv_vreinterpret_u32m1(value));
+#else
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(value));
+#endif
     }
+
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const {  return __riscv_vmor(*this, other, VL8); }
+    simdjson_inline simd8 operator&(const simd8 other) const {  return __riscv_vmand(*this, other, VL8); }
+    simdjson_inline simd8 operator^(const simd8 other) const {  return __riscv_vmxor(*this, other, VL8); }
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return __riscv_vmandn(other, *this, VL8); }
+    simdjson_inline simd8 operator~() const { return __riscv_vmnot(*this, VL8); }
+    simdjson_inline simd8& operator|=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast | other; return *this_cast; }
+    simdjson_inline simd8& operator&=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast & other; return *this_cast; }
+    simdjson_inline simd8& operator^=(const simd8 other) { auto this_cast = static_cast*>(this); *this_cast = *this_cast ^ other; return *this_cast; }
   };
 
-  // SIMD byte mask type (returned by things like eq and gt)
+  // Unsigned bytes
   template<>
-  struct simd8: base8 {
-    static simdjson_inline simd8 splat(bool _value) { return __lasx_xvreplgr2vr_b(uint8_t(-(!!_value))); }
+  struct simd8 {
 
-    simdjson_inline simd8() : base8() {}
-    simdjson_inline simd8(const __m256i _value) : base8(_value) {}
-    // Splat constructor
-    simdjson_inline simd8(bool _value) : base8(splat(_value)) {}
+    vuint8_t value;
+    static constexpr int SIZE = sizeof(value);
 
-    simdjson_inline int to_bitmask() const {
-      __m256i mask = __lasx_xvmskltz_b(*this);
-      return (__lasx_xvpickve2gr_w(mask, 4) << 16) | (__lasx_xvpickve2gr_w(mask, 0));
-    }
-   simdjson_inline bool any() const {
-      __m256i v = __lasx_xvmsknz_b(*this);
-      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
-    }
-    simdjson_inline simd8 operator~() const { return *this ^ true; }
-  };
+    simdjson_inline simd8(const vuint8_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(zero()) {}
+    simdjson_inline simd8(const uint8_t values[VL8]) : simd8(load(values)) {}
+    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
+    simdjson_inline simd8(simd8 mask) : value(__riscv_vmerge_vxm_u8m1(zero(), -1, (vbool_t)mask, VL8)) {}
+
+    simdjson_inline operator const vuint8_t&() const { return this->value; }
+    simdjson_inline operator vuint8_t&() { return this->value; }
+
+    simdjson_inline simd8(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
+    ) : simd8(vuint8_t{
+      v0, v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
 
-  template
-  struct base8_numeric: base8 {
-    static simdjson_inline simd8 splat(T _value) {
-      return __lasx_xvreplgr2vr_b(_value);
-    }
-    static simdjson_inline simd8 zero() { return __lasx_xvldi(0); }
-    static simdjson_inline simd8 load(const T values[32]) {
-      return __lasx_xvld(reinterpret_cast(values), 0);
-    }
     // Repeat 16 values as many times as necessary (usually for lookup tables)
-    static simdjson_inline simd8 repeat_16(
-      T v0,  T v1,  T v2,  T v3,  T v4,  T v5,  T v6,  T v7,
-      T v8,  T v9,  T v10, T v11, T v12, T v13, T v14, T v15
+    simdjson_inline static simd8 repeat_16(
+      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
+      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
     ) {
-      return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
+      return simd8(
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15
       );
     }
 
-    simdjson_inline base8_numeric() : base8() {}
-    simdjson_inline base8_numeric(const __m256i _value) : base8(_value) {}
+    static simdjson_inline vuint8_t splat(uint8_t _value) { return __riscv_vmv_v_x_u8m1(_value, VL8); }
+    static simdjson_inline vuint8_t zero() { return splat(0); }
+    static simdjson_inline vuint8_t load(const uint8_t values[VL8]) { return __riscv_vle8_v_u8m1(values, VL8); }
 
-    // Store to array
-    simdjson_inline void store(T dst[32]) const {
-      return __lasx_xvst(*this, reinterpret_cast<__m256i *>(dst), 0);
+    // Bit operations
+    simdjson_inline simd8 operator|(const simd8 other) const { return  __riscv_vor_vv_u8m1(  value, other, VL8); }
+    simdjson_inline simd8 operator&(const simd8 other) const { return  __riscv_vand_vv_u8m1( value, other, VL8); }
+    simdjson_inline simd8 operator^(const simd8 other) const { return  __riscv_vxor_vv_u8m1( value, other, VL8); }
+    simdjson_inline simd8 operator~() const { return __riscv_vnot_v_u8m1(value, VL8); }
+#if __riscv_zvbb
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return __riscv_vandn_vv_u8m1(other, value, VL8); }
+#else
+    simdjson_inline simd8 bit_andnot(const simd8 other) const { return other & ~*this; }
+#endif
+    simdjson_inline simd8& operator|=(const simd8 other) { value = *this | other; return *this; }
+    simdjson_inline simd8& operator&=(const simd8 other) { value = *this & other; return *this; }
+    simdjson_inline simd8& operator^=(const simd8 other) { value = *this ^ other; return *this; }
+
+    simdjson_inline simd8 operator==(const simd8 other) const { return __riscv_vmseq(value, other, VL8); }
+    simdjson_inline simd8 operator==(uint8_t other) const { return __riscv_vmseq(value, other, VL8); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return __riscv_vslideup(__riscv_vslidedown(prev_chunk, VL8-N, VL8), value, N, VL8);
     }
 
+    // Store to array
+    simdjson_inline void store(uint8_t dst[VL8]) const { return __riscv_vse8(dst, value, VL8); }
+
+    // Saturated math
+    simdjson_inline simd8 saturating_add(const simd8 other) const { return __riscv_vsaddu(value, other, VL8); }
+    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __riscv_vssubu(value, other, VL8); }
+
     // Addition/subtraction are the same for signed and unsigned
-    simdjson_inline simd8 operator+(const simd8 other) const { return __lasx_xvadd_b(*this, other); }
-    simdjson_inline simd8 operator-(const simd8 other) const { return __lasx_xvsub_b(*this, other); }
-    simdjson_inline simd8& operator+=(const simd8 other) { *this = *this + other; return *static_cast*>(this); }
-    simdjson_inline simd8& operator-=(const simd8 other) { *this = *this - other; return *static_cast*>(this); }
+    simdjson_inline simd8 operator+(const simd8 other) const { return __riscv_vadd(value, other, VL8); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __riscv_vsub(value, other, VL8); }
+    simdjson_inline simd8& operator+=(const simd8 other) { value = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { value = *this - other; return *this; }
+
+    // Order-specific operations
+    simdjson_inline simd8 operator<=(const simd8 other) const { return __riscv_vmsleu(value, other, VL8); }
+    simdjson_inline simd8 operator>=(const simd8 other) const { return __riscv_vmsgeu(value, other, VL8); }
+    simdjson_inline simd8 operator<(const simd8 other) const  { return __riscv_vmsltu(value, other, VL8); }
+    simdjson_inline simd8 operator>(const simd8 other) const  { return __riscv_vmsgtu(value, other, VL8); }
+
+    // Same as >, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero.
+    simdjson_inline simd8 gt_bits(const simd8 other) const { return simd8(*this > other); }
+    // Same as <, but instead of guaranteeing all 1's == true, false = 0 and true = nonzero.
+    simdjson_inline simd8 lt_bits(const simd8 other) const { return simd8(*this < other); }
+
+    // Bit-specific operations
+    simdjson_inline bool any_bits_set_anywhere() const {
+      return __riscv_vfirst(__riscv_vmsne(value, 0, VL8), VL8) >= 0;
+    }
+    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return (*this & bits).any_bits_set_anywhere(); }
+    template
+    simdjson_inline simd8 shr() const { return __riscv_vsrl(value, N, VL8); }
+    template
+    simdjson_inline simd8 shl() const { return __riscv_vsll(value, N, VL8); }
 
-    // Override to distinguish from bool version
-    simdjson_inline simd8 operator~() const { return *this ^ 0xFFu; }
 
     // Perform a lookup assuming the value is between 0 and 16 (undefined behavior for out of range values)
     template
     simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
-      return __lasx_xvshuf_b(lookup_table, lookup_table, *this);
+      return __riscv_vrgather(lookup_table, value, VL8);
     }
 
-    // Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
-    // Passing a 0 value for mask would be equivalent to writing out every byte to output.
-    // Only the first 16 - count_ones(mask) bytes of the result are significant but 16 bytes
-    // get written.
+    // compress inactive elements, to match AVX-512 behavior
     template
-    simdjson_inline void compress(uint32_t mask, L * output) const {
-      using internal::thintable_epi8;
-      using internal::BitsSetTable256mul2;
-      using internal::pshufb_combine_table;
-      // this particular implementation was inspired by haswell
-      // lasx do it in 4 steps, first 8 bytes and then second 8 bytes...
-      uint8_t mask1 = uint8_t(mask); // least significant 8 bits
-      uint8_t mask2 = uint8_t(mask >> 8); // second significant 8 bits
-      uint8_t mask3 = uint8_t(mask >> 16); // ...
-      uint8_t mask4 = uint8_t(mask >> 24); // ...
-      // next line just loads the 64-bit values thintable_epi8[mask{1,2,3,4}]
-      // into a 256-bit register.
-      __m256i shufmask = {int64_t(thintable_epi8[mask1]), int64_t(thintable_epi8[mask2]) + 0x0808080808080808, int64_t(thintable_epi8[mask3]), int64_t(thintable_epi8[mask4]) + 0x0808080808080808};
-      // this is the version "nearly pruned"
-      __m256i pruned = __lasx_xvshuf_b(*this, *this, shufmask);
-      // we still need to put the  pieces back together.
-      // we compute the popcount of the first words:
-      int pop1 = BitsSetTable256mul2[mask1];
-      int pop2 = BitsSetTable256mul2[mask2];
-      int pop3 = BitsSetTable256mul2[mask3];
-
-      // then load the corresponding mask
-      __m256i masklo = __lasx_xvldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop1 * 8);
-      __m256i maskhi = __lasx_xvldx(reinterpret_cast(reinterpret_cast(pshufb_combine_table)), pop3 * 8);
-      __m256i compactmask = __lasx_xvpermi_q(maskhi, masklo, 0x20);
-      __m256i answer = __lasx_xvshuf_b(pruned, pruned, compactmask);
-      __lasx_xvst(answer, reinterpret_cast(output), 0);
-      uint64_t value3 = __lasx_xvpickve2gr_du(answer, 2);
-      uint64_t value4 = __lasx_xvpickve2gr_du(answer, 3);
-      uint64_t *pos = reinterpret_cast(reinterpret_cast(output) + 16 - (pop1 + pop2) / 2);
-      pos[0] = value3;
-      pos[1] = value4;
+    simdjson_inline void compress(vbitmask_t mask, L * output) const {
+      mask = (vbitmask_t)~mask;
+#if __riscv_v_fixed_vlen == 128
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u16m1(mask, 1));
+#elif __riscv_v_fixed_vlen == 256
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u32m1(mask, 1));
+#else
+      vbool8_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u64m1(mask, 1));
+#endif
+      __riscv_vse8_v_u8m1(output, __riscv_vcompress(value, m, VL8), count_ones(mask));
     }
 
     template
@@ -138657,210 +169127,170 @@ namespace simd {
 
   // Signed bytes
   template<>
-  struct simd8 : base8_numeric {
-    simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
-    // Splat constructor
+  struct simd8 {
+    vint8_t value;
+    static constexpr int SIZE = sizeof(value);
+
+    simdjson_inline simd8(const vint8_t _value) : value(_value) {}
+    simdjson_inline simd8() : simd8(zero()) {}
+    simdjson_inline simd8(const int8_t values[VL8]) : simd8(load(values)) {}
     simdjson_inline simd8(int8_t _value) : simd8(splat(_value)) {}
-    // Array constructor
-    simdjson_inline simd8(const int8_t values[32]) : simd8(load(values)) {}
-    // Member-by-member initialization
+
+    simdjson_inline operator const vint8_t&() const { return this->value; }
+    simdjson_inline operator vint8_t&() { return this->value; }
+
     simdjson_inline simd8(
       int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
-      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15,
-      int8_t v16, int8_t v17, int8_t v18, int8_t v19, int8_t v20, int8_t v21, int8_t v22, int8_t v23,
-      int8_t v24, int8_t v25, int8_t v26, int8_t v27, int8_t v28, int8_t v29, int8_t v30, int8_t v31
-    ) : simd8({
+      int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
+    ) : simd8(vint8_t{
       v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15,
-      v16,v17,v18,v19,v20,v21,v22,v23,
-      v24,v25,v26,v27,v28,v29,v30,v31
-      }) {}
+      v8, v9, v10,v11,v12,v13,v14,v15
+    }) {}
+
     // Repeat 16 values as many times as necessary (usually for lookup tables)
     simdjson_inline static simd8 repeat_16(
       int8_t v0,  int8_t v1,  int8_t v2,  int8_t v3,  int8_t v4,  int8_t v5,  int8_t v6,  int8_t v7,
       int8_t v8,  int8_t v9,  int8_t v10, int8_t v11, int8_t v12, int8_t v13, int8_t v14, int8_t v15
     ) {
       return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
         v0, v1, v2, v3, v4, v5, v6, v7,
         v8, v9, v10,v11,v12,v13,v14,v15
       );
     }
 
-    // Order-sensitive comparisons
-    simdjson_inline simd8 max_val(const simd8 other) const { return __lasx_xvmax_b(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return __lasx_xvmin_b(*this, other); }
-    simdjson_inline simd8 operator>(const simd8 other) const { return __lasx_xvslt_b(other, *this); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return __lasx_xvslt_b(*this, other); }
-  };
+    static simdjson_inline vint8_t splat(int8_t _value) { return __riscv_vmv_v_x_i8m1(_value, VL8); }
+    static simdjson_inline vint8_t zero() { return splat(0); }
+    static simdjson_inline vint8_t load(const int8_t values[VL8]) { return __riscv_vle8_v_i8m1(values, VL8); }
 
-  // Unsigned bytes
-  template<>
-  struct simd8: base8_numeric {
-    simdjson_inline simd8() : base8_numeric() {}
-    simdjson_inline simd8(const __m256i _value) : base8_numeric(_value) {}
-    // Splat constructor
-    simdjson_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
-    // Array constructor
-    simdjson_inline simd8(const uint8_t values[32]) : simd8(load(values)) {}
-    // Member-by-member initialization
-    simdjson_inline simd8(
-      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
-      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15,
-      uint8_t v16, uint8_t v17, uint8_t v18, uint8_t v19, uint8_t v20, uint8_t v21, uint8_t v22, uint8_t v23,
-      uint8_t v24, uint8_t v25, uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30, uint8_t v31
-    ) : simd8(__m256i(v32u8{
-      v0, v1, v2, v3, v4, v5, v6, v7,
-      v8, v9, v10,v11,v12,v13,v14,v15,
-      v16,v17,v18,v19,v20,v21,v22,v23,
-      v24,v25,v26,v27,v28,v29,v30,v31
-    })) {}
-    // Repeat 16 values as many times as necessary (usually for lookup tables)
-    simdjson_inline static simd8 repeat_16(
-      uint8_t v0,  uint8_t v1,  uint8_t v2,  uint8_t v3,  uint8_t v4,  uint8_t v5,  uint8_t v6,  uint8_t v7,
-      uint8_t v8,  uint8_t v9,  uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15
-    ) {
-      return simd8(
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15,
-        v0, v1, v2, v3, v4, v5, v6, v7,
-        v8, v9, v10,v11,v12,v13,v14,v15
-      );
-    }
 
-    // Saturated math
-    simdjson_inline simd8 saturating_add(const simd8 other) const { return __lasx_xvsadd_bu(*this, other); }
-    simdjson_inline simd8 saturating_sub(const simd8 other) const { return __lasx_xvssub_bu(*this, other); }
+    simdjson_inline void store(int8_t dst[VL8]) const { return __riscv_vse8(dst, value, VL8); }
 
-    // Order-specific operations
-    simdjson_inline simd8 max_val(const simd8 other) const { return __lasx_xvmax_bu(*this, other); }
-    simdjson_inline simd8 min_val(const simd8 other) const { return __lasx_xvmin_bu(other, *this); }
-    // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
-    simdjson_inline simd8 gt_bits(const simd8 other) const { return this->saturating_sub(other); }
-    // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
-    simdjson_inline simd8 lt_bits(const simd8 other) const { return other.saturating_sub(*this); }
-    simdjson_inline simd8 operator<=(const simd8 other) const { return other.max_val(*this) == other; }
-    simdjson_inline simd8 operator>=(const simd8 other) const { return other.min_val(*this) == other; }
-    simdjson_inline simd8 operator>(const simd8 other) const { return this->gt_bits(other).any_bits_set(); }
-    simdjson_inline simd8 operator<(const simd8 other) const { return this->lt_bits(other).any_bits_set(); }
+    // Explicit conversion to/from unsigned
+    simdjson_inline explicit simd8(const vuint8_t other): simd8(__riscv_vreinterpret_i8m1(other)) {}
+    simdjson_inline explicit operator simd8() const { return __riscv_vreinterpret_u8m1(value); }
 
-    // Bit-specific operations
-    simdjson_inline simd8 bits_not_set() const { return *this == uint8_t(0); }
-    simdjson_inline simd8 bits_not_set(simd8 bits) const { return (*this & bits).bits_not_set(); }
-    simdjson_inline simd8 any_bits_set() const { return ~this->bits_not_set(); }
-    simdjson_inline simd8 any_bits_set(simd8 bits) const { return ~this->bits_not_set(bits); }
-    simdjson_inline bool is_ascii() const {
-      __m256i mask = __lasx_xvmskltz_b(*this);
-      return (0 == __lasx_xvpickve2gr_w(mask, 0)) && (0 == __lasx_xvpickve2gr_w(mask, 4));
+    // Math
+    simdjson_inline simd8 operator+(const simd8 other) const { return __riscv_vadd(value, other, VL8); }
+    simdjson_inline simd8 operator-(const simd8 other) const { return __riscv_vsub(value, other, VL8); }
+    simdjson_inline simd8& operator+=(const simd8 other) { value = *this + other; return *this; }
+    simdjson_inline simd8& operator-=(const simd8 other) { value = *this - other; return *this; }
+
+    // Order-sensitive comparisons
+    simdjson_inline simd8 max_val( const simd8 other) const { return __riscv_vmax( value, other, VL8); }
+    simdjson_inline simd8 min_val( const simd8 other) const { return __riscv_vmin( value, other, VL8); }
+    simdjson_inline simd8 operator>( const simd8 other) const { return __riscv_vmsgt(value, other, VL8); }
+    simdjson_inline simd8 operator<( const simd8 other) const { return __riscv_vmslt(value, other, VL8); }
+    simdjson_inline simd8 operator==(const simd8 other) const { return __riscv_vmseq(value, other, VL8); }
+
+    template
+    simdjson_inline simd8 prev(const simd8 prev_chunk) const {
+      return __riscv_vslideup(__riscv_vslidedown(prev_chunk, VL8-N, VL8), value, N, VL8);
     }
-    simdjson_inline bool bits_not_set_anywhere() const {
-      __m256i v = __lasx_xvmsknz_b(*this);
-      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
+
+    // Perform a lookup assuming no value is larger than 16
+    template
+    simdjson_inline simd8 lookup_16(simd8 lookup_table) const {
+      return __riscv_vrgather(lookup_table, value, VL8);
     }
-    simdjson_inline bool any_bits_set_anywhere() const { return !bits_not_set_anywhere(); }
-    simdjson_inline bool bits_not_set_anywhere(simd8 bits) const {
-      __m256i v = __lasx_xvmsknz_b(__lasx_xvand_v(*this, bits));
-      return (0 == __lasx_xvpickve2gr_w(v, 0)) && (0 == __lasx_xvpickve2gr_w(v, 4));
+    template
+    simdjson_inline simd8 lookup_16(
+        L replace0,  L replace1,  L replace2,  L replace3,
+        L replace4,  L replace5,  L replace6,  L replace7,
+        L replace8,  L replace9,  L replace10, L replace11,
+        L replace12, L replace13, L replace14, L replace15) const {
+      return lookup_16(simd8::repeat_16(
+        replace0,  replace1,  replace2,  replace3,
+        replace4,  replace5,  replace6,  replace7,
+        replace8,  replace9,  replace10, replace11,
+        replace12, replace13, replace14, replace15
+      ));
     }
-    simdjson_inline bool any_bits_set_anywhere(simd8 bits) const { return !bits_not_set_anywhere(bits); }
-    template
-    simdjson_inline simd8 shr() const { return simd8(__lasx_xvsrli_b(*this, N)); }
-    template
-    simdjson_inline simd8 shl() const { return simd8(__lasx_xvslli_b(*this, N)); }
   };
 
   template
-  struct simd8x64 {
-    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
-    static_assert(NUM_CHUNKS == 2, "LASX kernel should use two registers per 64-byte block.");
-    const simd8 chunks[NUM_CHUNKS];
+  struct simd8x64;
+  template<>
+  struct simd8x64 {
+    static constexpr int NUM_CHUNKS = 64 / sizeof(simd8);
+    vuint8x64_t value;
 
-    simd8x64(const simd8x64& o) = delete; // no copy allowed
-    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
-    simd8x64() = delete; // no default constructor allowed
+#if __riscv_v_fixed_vlen >= 512
+    template simd8 get() const { return value; }
+#else
+    template simd8 get() const { return __riscv_vget_u8m1(value, idx); }
+#endif
 
-    simdjson_inline simd8x64(const simd8 chunk0, const simd8 chunk1) : chunks{chunk0, chunk1} {}
-    simdjson_inline simd8x64(const T ptr[64]) : chunks{simd8::load(ptr), simd8::load(ptr+32)} {}
+    simdjson_inline operator const vuint8x64_t&() const { return this->value; }
+    simdjson_inline operator vuint8x64_t&() { return this->value; }
 
-    simdjson_inline uint64_t compress(uint64_t mask, T * output) const {
-      uint32_t mask1 = uint32_t(mask);
-      uint32_t mask2 = uint32_t(mask >> 32);
-      __m256i zcnt = __lasx_xvpcnt_w(__m256i(v4u64{~mask, 0, 0, 0}));
-      uint64_t zcnt1 = __lasx_xvpickve2gr_wu(zcnt, 0);
-      uint64_t zcnt2 = __lasx_xvpickve2gr_wu(zcnt, 1);
-      // There should be a critical value which processes in scaler is faster.
-      if (zcnt1)
-        this->chunks[0].compress(mask1, output);
-      if (zcnt2)
-        this->chunks[1].compress(mask2, output + zcnt1);
-      return zcnt1 + zcnt2;
-    }
+    simd8x64(const simd8x64& o) = delete; // no copy allowed
+    simd8x64& operator=(const simd8& other) = delete; // no assignment allowed
+    simd8x64() = delete; // no default constructor allowed
 
-    simdjson_inline void store(T ptr[64]) const {
-      this->chunks[0].store(ptr+sizeof(simd8)*0);
-      this->chunks[1].store(ptr+sizeof(simd8)*1);
-    }
+#if __riscv_v_fixed_vlen == 128
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m4(ptr, n)) {}
+#elif __riscv_v_fixed_vlen == 256
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m2(ptr, n)) {}
+#else
+    simdjson_inline simd8x64(const uint8_t *ptr, size_t n = 64) : value(__riscv_vle8_v_u8m1(ptr, n)) {}
+#endif
 
-    simdjson_inline uint64_t to_bitmask() const {
-      __m256i mask0 = __lasx_xvmskltz_b(this->chunks[0]);
-      __m256i mask1 = __lasx_xvmskltz_b(this->chunks[1]);
-      __m256i mask_tmp = __lasx_xvpickve_w(mask0, 4);
-      __m256i tmp = __lasx_xvpickve_w(mask1, 4);
-      mask0 = __lasx_xvinsve0_w(mask0, mask1, 1);
-      mask_tmp = __lasx_xvinsve0_w(mask_tmp, tmp, 1);
-      return __lasx_xvpickve2gr_du(__lasx_xvpackev_h(mask_tmp, mask0), 0);
+    simdjson_inline void store(uint8_t ptr[64]) const {
+      __riscv_vse8(ptr, value, 64);
     }
 
-    simdjson_inline simd8 reduce_or() const {
-      return this->chunks[0] | this->chunks[1];
+    simdjson_inline bool is_ascii() const {
+#if __riscv_v_fixed_vlen == 128
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m4(value), 0, 64), 64) < 0;
+#elif __riscv_v_fixed_vlen == 256
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m2(value), 0, 64), 64) < 0;
+#else
+      return __riscv_vfirst(__riscv_vmslt(__riscv_vreinterpret_i8m1(value), 0, 64), 64) < 0;
+#endif
     }
 
-    simdjson_inline uint64_t eq(const T m) const {
-      const simd8 mask = simd8::splat(m);
-      return  simd8x64(
-        this->chunks[0] == mask,
-        this->chunks[1] == mask
-      ).to_bitmask();
+    // compress inactive elements, to match AVX-512 behavior
+    simdjson_inline uint64_t compress(uint64_t mask, uint8_t * output) const {
+      mask = ~mask;
+#if __riscv_v_fixed_vlen == 128
+      vboolx64_t m = __riscv_vreinterpret_b2(__riscv_vmv_s_x_u64m1(mask, 1));
+#elif __riscv_v_fixed_vlen == 256
+      vboolx64_t m = __riscv_vreinterpret_b4(__riscv_vmv_s_x_u64m1(mask, 1));
+#else
+      vboolx64_t m = __riscv_vreinterpret_b8(__riscv_vmv_s_x_u64m1(mask, 1));
+#endif
+      size_t cnt = count_ones(mask);
+      __riscv_vse8(output, __riscv_vcompress(value, m, 64), cnt);
+      return cnt;
     }
 
-    simdjson_inline uint64_t eq(const simd8x64 &other) const {
-      return  simd8x64(
-        this->chunks[0] == other.chunks[0],
-        this->chunks[1] == other.chunks[1]
-      ).to_bitmask();
+    simdjson_inline uint64_t eq(const uint8_t m) const {
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vmseq(value, m, 64)));
     }
 
-    simdjson_inline uint64_t lteq(const T m) const {
-      const simd8 mask = simd8::splat(m);
-      return  simd8x64(
-        this->chunks[0] <= mask,
-        this->chunks[1] <= mask
-      ).to_bitmask();
+    simdjson_inline uint64_t lteq(const uint8_t m) const {
+      return __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vmsleu(value, m, 64)));
     }
-  }; // struct simd8x64
+  }; // struct simd8x64
 
 } // namespace simd
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
-#endif // SIMDJSON_LASX_SIMD_H
-/* end file simdjson/lasx/simd.h */
-/* including simdjson/lasx/stringparsing_defs.h: #include "simdjson/lasx/stringparsing_defs.h" */
-/* begin file simdjson/lasx/stringparsing_defs.h */
-#ifndef SIMDJSON_LASX_STRINGPARSING_DEFS_H
-#define SIMDJSON_LASX_STRINGPARSING_DEFS_H
+#endif // SIMDJSON_RVV_VLS_SIMD_H
+/* end file simdjson/rvv-vls/simd.h */
+/* including simdjson/rvv-vls/stringparsing_defs.h: #include "simdjson/rvv-vls/stringparsing_defs.h" */
+/* begin file simdjson/rvv-vls/stringparsing_defs.h */
+#ifndef SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
+#define SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/simd.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/bitmanipulation.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace {
 
 using namespace simd;
@@ -138868,73 +169298,120 @@ using namespace simd;
 // Holds backslashes and quotes locations.
 struct backslash_and_quote {
 public:
-  static constexpr uint32_t BYTES_PROCESSED = 32;
+  static constexpr uint64_t BYTES_PROCESSED = sizeof(simd8);
   simdjson_inline backslash_and_quote copy_and_find(const uint8_t *src, uint8_t *dst);
 
   simdjson_inline bool has_quote_first() { return ((bs_bits - 1) & quote_bits) != 0; }
-  simdjson_inline bool has_backslash() { return bs_bits != 0; }
+  simdjson_inline bool has_backslash() { return ((quote_bits - 1) & bs_bits) != 0; }
   simdjson_inline int quote_index() { return trailing_zeroes(quote_bits); }
   simdjson_inline int backslash_index() { return trailing_zeroes(bs_bits); }
 
-  uint32_t bs_bits;
-  uint32_t quote_bits;
+  uint64_t bs_bits;
+  uint64_t quote_bits;
 }; // struct backslash_and_quote
 
 simdjson_inline backslash_and_quote backslash_and_quote::copy_and_find(const uint8_t *src, uint8_t *dst) {
-  // this can read up to 31 bytes beyond the buffer size, but we require
-  // SIMDJSON_PADDING of padding
   static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "backslash and quote finder must process fewer than SIMDJSON_PADDING bytes");
   simd8 v(src);
   v.store(dst);
-  return {
-      static_cast((v == '\\').to_bitmask()),     // bs_bits
-      static_cast((v == '"').to_bitmask()), // quote_bits
-  };
+  return { (v == '\\').to_bitmask(), (v == '"').to_bitmask() };
 }
 
-
 struct escaping {
-  static constexpr uint32_t BYTES_PROCESSED = 16;
+  static constexpr uint64_t BYTES_PROCESSED = sizeof(simd8);
   simdjson_inline static escaping copy_and_find(const uint8_t *src, uint8_t *dst);
 
   simdjson_inline bool has_escape() { return escape_bits != 0; }
-  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits); }
+  simdjson_inline int escape_index() { return trailing_zeroes(escape_bits) / 4; }
 
   uint64_t escape_bits;
 }; // struct escaping
 
-
-
 simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *dst) {
   static_assert(SIMDJSON_PADDING >= (BYTES_PROCESSED - 1), "escaping finder must process fewer than SIMDJSON_PADDING bytes");
   simd8 v(src);
   v.store(dst);
-  simd8 is_quote = (v == '"');
-  simd8 is_backslash = (v == '\\');
-  simd8 is_control = (v < 32);
-  return {
-    (is_backslash | is_quote | is_control).to_bitmask()
-  };
+  return { ((v == '"') | (v == '\\') | (v == 32)).to_bitmask() };
 }
 
+
 } // unnamed namespace
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
-#endif // SIMDJSON_LASX_STRINGPARSING_DEFS_H
-/* end file simdjson/lasx/stringparsing_defs.h */
+#endif // SIMDJSON_RVV_VLS_STRINGPARSING_DEFS_H
+/* end file simdjson/rvv-vls/stringparsing_defs.h */
+/* including simdjson/rvv-vls/numberparsing_defs.h: #include "simdjson/rvv-vls/numberparsing_defs.h" */
+/* begin file simdjson/rvv-vls/numberparsing_defs.h */
+#ifndef SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
+#define SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/internal/numberparsing_tables.h" */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+#include 
+
+#ifdef JSON_TEST_NUMBERS // for unit testing
+void found_invalid_number(const uint8_t *buf);
+void found_integer(int64_t result, const uint8_t *buf);
+void found_unsigned_integer(uint64_t result, const uint8_t *buf);
+void found_float(double result, const uint8_t *buf);
+#endif
+
+namespace simdjson {
+namespace rvv_vls {
+namespace numberparsing {
+
+// credit: https://johnnylee-sde.github.io/Fast-numeric-string-to-int/
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const char *chars) {
+  uint64_t val;
+#if __riscv_misaligned_fast
+  memcpy(&val, chars, sizeof(uint64_t));
+#else
+  val = __riscv_vmv_x(__riscv_vreinterpret_u64m1(__riscv_vlmul_ext_u8m1(__riscv_vle8_v_u8mf2((uint8_t*)chars, 8))));
+#endif
+  val = (val & 0x0F0F0F0F0F0F0F0F) * 2561 >> 8;
+  val = (val & 0x00FF00FF00FF00FF) * 6553601 >> 16;
+  return uint32_t((val & 0x0000FFFF0000FFFF) * 42949672960001 >> 32);
+}
+
+/** @private */
+static simdjson_inline uint32_t parse_eight_digits_unrolled(const uint8_t *chars) {
+  return parse_eight_digits_unrolled(reinterpret_cast(chars));
+}
+
+/** @private */
+simdjson_inline internal::value128 full_multiplication(uint64_t value1, uint64_t value2) {
+  internal::value128 answer;
+  __uint128_t r = (static_cast<__uint128_t>(value1)) * value2;
+  answer.low = uint64_t(r);
+  answer.high = uint64_t(r >> 64);
+  return answer;
+}
+
+} // namespace numberparsing
+} // namespace rvv_vls
+} // namespace simdjson
+
+#define SIMDJSON_SWAR_NUMBER_PARSING 1
+
+#endif // SIMDJSON_RVV_VLS_NUMBERPARSING_DEFS_H
+/* end file simdjson/rvv-vls/numberparsing_defs.h */
 
 #define SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT 1
-/* end file simdjson/lasx/begin.h */
-/* including simdjson/generic/ondemand/amalgamated.h for lasx: #include "simdjson/generic/ondemand/amalgamated.h" */
-/* begin file simdjson/generic/ondemand/amalgamated.h for lasx */
-#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_ONDEMAND_DEPENDENCIES_H)
+/* end file simdjson/rvv-vls/begin.h */
+/* including simdjson/generic/ondemand/amalgamated.h for rvv_vls: #include "simdjson/generic/ondemand/amalgamated.h" */
+/* begin file simdjson/generic/ondemand/amalgamated.h for rvv_vls */
+#if defined(SIMDJSON_CONDITIONAL_INCLUDE) && !defined(SIMDJSON_GENERIC_BUILDER_DEPENDENCIES_H)
 #error simdjson/generic/ondemand/dependencies.h must be included before simdjson/generic/ondemand/amalgamated.h!
 #endif
 
 // Stuff other things depend on
-/* including simdjson/generic/ondemand/base.h for lasx: #include "simdjson/generic/ondemand/base.h" */
-/* begin file simdjson/generic/ondemand/base.h for lasx */
+/* including simdjson/generic/ondemand/base.h for rvv_vls: #include "simdjson/generic/ondemand/base.h" */
+/* begin file simdjson/generic/ondemand/base.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_BASE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -138943,7 +169420,7 @@ simdjson_inline escaping escaping::copy_and_find(const uint8_t *src, uint8_t *ds
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 /**
  * A fast, simple, DOM-like interface that parses JSON as you use it.
  *
@@ -138954,8 +169431,8 @@ namespace ondemand {
 /** Represents the depth of a JSON value (number of nested arrays/objects). */
 using depth_t = int32_t;
 
-/** @copydoc simdjson::lasx::number_type */
-using number_type = simdjson::lasx::number_type;
+/** @copydoc simdjson::rvv_vls::number_type */
+using number_type = simdjson::rvv_vls::number_type;
 
 /** @private Position in the JSON buffer indexes */
 using token_position = const uint32_t *;
@@ -138978,13 +169455,13 @@ class value;
 class value_iterator;
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_BASE_H
-/* end file simdjson/generic/ondemand/base.h for lasx */
-/* including simdjson/generic/ondemand/deserialize.h for lasx: #include "simdjson/generic/ondemand/deserialize.h" */
-/* begin file simdjson/generic/ondemand/deserialize.h for lasx */
+/* end file simdjson/generic/ondemand/base.h for rvv_vls */
+/* including simdjson/generic/ondemand/deserialize.h for rvv_vls: #include "simdjson/generic/ondemand/deserialize.h" */
+/* begin file simdjson/generic/ondemand/deserialize.h for rvv_vls */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -139004,35 +169481,35 @@ template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
-template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
+template <> struct is_builtin_deserializable : std::true_type {};
 template <> struct is_builtin_deserializable : std::true_type {};
 
 template 
 concept is_builtin_deserializable_v = is_builtin_deserializable::value;
 
-template 
+template 
 concept custom_deserializable = tag_invocable;
 
-template 
+template 
 concept deserializable = custom_deserializable || is_builtin_deserializable_v || concepts::optional_type;
 
-template 
+template 
 concept nothrow_custom_deserializable = nothrow_tag_invocable;
 
 // built-in types are noexcept and if an error happens, the value simply gets ignored and the error is returned.
-template 
+template 
 concept nothrow_deserializable = nothrow_custom_deserializable || is_builtin_deserializable_v;
 
 /// Deserialize Tag
 inline constexpr struct deserialize_tag {
-  using array_type = lasx::ondemand::array;
-  using object_type = lasx::ondemand::object;
-  using value_type = lasx::ondemand::value;
-  using document_type = lasx::ondemand::document;
-  using document_reference_type = lasx::ondemand::document_reference;
+  using array_type = rvv_vls::ondemand::array;
+  using object_type = rvv_vls::ondemand::object;
+  using value_type = rvv_vls::ondemand::value;
+  using document_type = rvv_vls::ondemand::document;
+  using document_reference_type = rvv_vls::ondemand::document_reference;
 
   // Customization Point for array
   template 
@@ -139077,9 +169554,9 @@ inline constexpr struct deserialize_tag {
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
 
-/* end file simdjson/generic/ondemand/deserialize.h for lasx */
-/* including simdjson/generic/ondemand/value_iterator.h for lasx: #include "simdjson/generic/ondemand/value_iterator.h" */
-/* begin file simdjson/generic/ondemand/value_iterator.h for lasx */
+/* end file simdjson/generic/ondemand/deserialize.h for rvv_vls */
+/* including simdjson/generic/ondemand/value_iterator.h for rvv_vls: #include "simdjson/generic/ondemand/value_iterator.h" */
+/* begin file simdjson/generic/ondemand/value_iterator.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -139089,7 +169566,7 @@ inline constexpr struct deserialize_tag {
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 /**
@@ -139554,21 +170031,22 @@ class value_iterator {
 
   friend class document;
   friend class object;
+  friend class object_iterator;
   friend class array;
   friend class value;
   friend class field;
 }; // value_iterator
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::value_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::value_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -139576,9 +170054,9 @@ struct simdjson_result : public lasx::implementa
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_H
-/* end file simdjson/generic/ondemand/value_iterator.h for lasx */
-/* including simdjson/generic/ondemand/value.h for lasx: #include "simdjson/generic/ondemand/value.h" */
-/* begin file simdjson/generic/ondemand/value.h for lasx */
+/* end file simdjson/generic/ondemand/value_iterator.h for rvv_vls */
+/* including simdjson/generic/ondemand/value.h for rvv_vls: #include "simdjson/generic/ondemand/value.h" */
+/* begin file simdjson/generic/ondemand/value.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -139594,7 +170072,7 @@ struct simdjson_result : public lasx::implementa
 
 namespace simdjson {
 
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 /**
  * An ephemeral JSON value returned during iteration. It is only valid for as long as you do
@@ -140308,20 +170786,20 @@ class value {
 };
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::value &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::value &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result get_array() noexcept;
-  simdjson_inline simdjson_result get_object() noexcept;
+  simdjson_inline simdjson_result get_array() noexcept;
+  simdjson_inline simdjson_result get_object() noexcept;
 
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
@@ -140333,7 +170811,7 @@ struct simdjson_result : public lasx::implementation_simd
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
@@ -140344,20 +170822,20 @@ struct simdjson_result : public lasx::implementation_simd
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator lasx::ondemand::array() noexcept(false);
-  simdjson_inline operator lasx::ondemand::object() noexcept(false);
+  simdjson_inline operator rvv_vls::ondemand::array() noexcept(false);
+  simdjson_inline operator rvv_vls::ondemand::object() noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator lasx::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator rvv_vls::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
 
   /**
    * Look up a field by name on an object (order-sensitive). By order-sensitive, we mean that
@@ -140381,9 +170859,9 @@ struct simdjson_result : public lasx::implementation_simd
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field(const char *key) noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field(const char *key) noexcept;
 
   /**
    * Look up a field by name on an object, without regard to key order.
@@ -140395,7 +170873,7 @@ struct simdjson_result : public lasx::implementation_simd
    * in question is large. The fact that the extra code is there also bumps the executable size.
    *
    * We default operator[] on find_field_unordered() for convenience.
-   * It is the defaul because it would be highly surprising (and hard to debug) if the
+   * It is the default because it would be highly surprising (and hard to debug) if the
    * default behavior failed to look up a field just because it was in the wrong order--and many
    * APIs assume this. Therefore, you must be explicit if you want to treat objects as out of order.
    *
@@ -140405,14 +170883,14 @@ struct simdjson_result : public lasx::implementation_simd
    * @param key The key to look up.
    * @returns The value of the field, or NO_SUCH_FIELD if the field is not in the object.
    */
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
-  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
-  simdjson_inline simdjson_result operator[](const char *key) noexcept;
-  simdjson_result operator[](int) noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result find_field_unordered(const char *key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](std::string_view key) noexcept;
+  /** @overload simdjson_inline simdjson_result find_field_unordered(std::string_view key) noexcept; */
+  simdjson_inline simdjson_result operator[](const char *key) noexcept;
+  simdjson_result operator[](int) noexcept = delete;
 
   /**
    * Get the type of this JSON value. It does not validate or consume the value.
@@ -140436,13 +170914,13 @@ struct simdjson_result : public lasx::implementation_simd
    * better to just call .get_double, .get_string, etc. and check for INCORRECT_TYPE (or just
    * let it throw an exception).
    */
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
 
   /** @copydoc simdjson_inline std::string_view value::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
@@ -140452,17 +170930,17 @@ struct simdjson_result : public lasx::implementation_simd
   simdjson_inline simdjson_result current_location() noexcept;
   /** @copydoc simdjson_inline int32_t current_depth() const noexcept */
   simdjson_inline simdjson_result current_depth() const noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_H
-/* end file simdjson/generic/ondemand/value.h for lasx */
-/* including simdjson/generic/ondemand/logger.h for lasx: #include "simdjson/generic/ondemand/logger.h" */
-/* begin file simdjson/generic/ondemand/logger.h for lasx */
+/* end file simdjson/generic/ondemand/value.h for rvv_vls */
+/* including simdjson/generic/ondemand/logger.h for rvv_vls: #include "simdjson/generic/ondemand/logger.h" */
+/* begin file simdjson/generic/ondemand/logger.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -140471,7 +170949,7 @@ struct simdjson_result : public lasx::implementation_simd
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 // Logging should be free unless SIMDJSON_VERBOSE_LOGGING is set. Importantly, it is critical
@@ -140517,13 +170995,13 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 
 } // namespace logger
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_H
-/* end file simdjson/generic/ondemand/logger.h for lasx */
-/* including simdjson/generic/ondemand/token_iterator.h for lasx: #include "simdjson/generic/ondemand/token_iterator.h" */
-/* begin file simdjson/generic/ondemand/token_iterator.h for lasx */
+/* end file simdjson/generic/ondemand/logger.h for rvv_vls */
+/* including simdjson/generic/ondemand/token_iterator.h for rvv_vls: #include "simdjson/generic/ondemand/token_iterator.h" */
+/* begin file simdjson/generic/ondemand/token_iterator.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -140534,7 +171012,7 @@ static inline void log_error(const value_iterator &iter, const char *error, cons
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 /**
@@ -140665,15 +171143,15 @@ class token_iterator {
 };
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::token_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::token_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -140682,9 +171160,9 @@ struct simdjson_result : public lasx::implementa
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_H
-/* end file simdjson/generic/ondemand/token_iterator.h for lasx */
-/* including simdjson/generic/ondemand/json_iterator.h for lasx: #include "simdjson/generic/ondemand/json_iterator.h" */
-/* begin file simdjson/generic/ondemand/json_iterator.h for lasx */
+/* end file simdjson/generic/ondemand/token_iterator.h for rvv_vls */
+/* including simdjson/generic/ondemand/json_iterator.h for rvv_vls: #include "simdjson/generic/ondemand/json_iterator.h" */
+/* begin file simdjson/generic/ondemand/json_iterator.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -140695,7 +171173,7 @@ struct simdjson_result : public lasx::implementa
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 /**
@@ -141006,15 +171484,15 @@ class json_iterator {
 }; // json_iterator
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::json_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::json_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
 
   simdjson_inline simdjson_result() noexcept = default;
@@ -141023,9 +171501,9 @@ struct simdjson_result : public lasx::implementat
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_H
-/* end file simdjson/generic/ondemand/json_iterator.h for lasx */
-/* including simdjson/generic/ondemand/json_type.h for lasx: #include "simdjson/generic/ondemand/json_type.h" */
-/* begin file simdjson/generic/ondemand/json_type.h for lasx */
+/* end file simdjson/generic/ondemand/json_iterator.h for rvv_vls */
+/* including simdjson/generic/ondemand/json_type.h for rvv_vls: #include "simdjson/generic/ondemand/json_type.h" */
+/* begin file simdjson/generic/ondemand/json_type.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -141036,7 +171514,7 @@ struct simdjson_result : public lasx::implementat
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 /**
@@ -141170,15 +171648,15 @@ inline std::ostream& operator<<(std::ostream& out, simdjson_result &t
 #endif
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::json_type &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::json_type &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
@@ -141187,9 +171665,9 @@ struct simdjson_result : public lasx::implementation_
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
-/* end file simdjson/generic/ondemand/json_type.h for lasx */
-/* including simdjson/generic/ondemand/raw_json_string.h for lasx: #include "simdjson/generic/ondemand/raw_json_string.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string.h for lasx */
+/* end file simdjson/generic/ondemand/json_type.h for rvv_vls */
+/* including simdjson/generic/ondemand/raw_json_string.h for rvv_vls: #include "simdjson/generic/ondemand/raw_json_string.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -141199,7 +171677,7 @@ struct simdjson_result : public lasx::implementation_
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 /**
@@ -141381,30 +171859,30 @@ simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_js
 
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::raw_json_string &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::raw_json_string &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline ~simdjson_result() noexcept = default; ///< @private
 
   simdjson_inline simdjson_result raw() const noexcept;
   simdjson_inline char operator[](size_t) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape(lasx::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
-  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(lasx::ondemand::json_iterator &iter) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape(rvv_vls::ondemand::json_iterator &iter, bool allow_replacement) const noexcept;
+  simdjson_inline simdjson_warn_unused simdjson_result unescape_wobbly(rvv_vls::ondemand::json_iterator &iter) const noexcept;
 };
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
-/* end file simdjson/generic/ondemand/raw_json_string.h for lasx */
-/* including simdjson/generic/ondemand/parser.h for lasx: #include "simdjson/generic/ondemand/parser.h" */
-/* begin file simdjson/generic/ondemand/parser.h for lasx */
+/* end file simdjson/generic/ondemand/raw_json_string.h for rvv_vls */
+/* including simdjson/generic/ondemand/parser.h for rvv_vls: #include "simdjson/generic/ondemand/parser.h" */
+/* begin file simdjson/generic/ondemand/parser.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -141417,7 +171895,7 @@ struct simdjson_result : public lasx::implement
 #include 
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 /**
@@ -141817,15 +172295,15 @@ class parser {
 };
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::parser &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::parser &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -141833,319 +172311,11 @@ struct simdjson_result : public lasx::implementation_sim
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_H
-/* end file simdjson/generic/ondemand/parser.h for lasx */
-
-// JSON builder - needed for extract_into functionality
-/* including simdjson/generic/ondemand/json_string_builder.h for lasx: #include "simdjson/generic/ondemand/json_string_builder.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder.h for lasx */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace lasx {
-namespace builder {
-  class string_builder;
-}}
-
-template 
-struct has_custom_serialization : std::false_type {};
-
-inline constexpr struct serialize_tag {
-  template 
-  constexpr void operator()(lasx::builder::string_builder& b, T&& obj) const{
-    return tag_invoke(*this, b, std::forward(obj));
-  }
-
-
-} serialize{};
-template 
-struct has_custom_serialization(), std::declval()))
->> : std::true_type {};
-
-template 
-constexpr bool require_custom_serialization = has_custom_serialization::value;
-#else
-struct has_custom_serialization : std::false_type {};
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-namespace lasx {
-namespace builder {
-/**
- * A builder for JSON strings representing documents. This is a low-level
- * builder that is not meant to be used directly by end-users. Though it
- * supports atomic types (Booleans, strings), it does not support composed
- * types (arrays and objects).
- *
- * Ultimately, this class can support kernel-specific optimizations. E.g.,
- * it may make use of SIMD instructions to escape strings faster.
- */
-class string_builder {
-public:
-  simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
-
-  static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
-
-  /**
-   * Append number (includes Booleans). Booleans are mapped to the strings
-   * false and true. Numbers are converted to strings abiding by the JSON standard.
-   * Floating-point numbers are converted to the shortest string that 'correctly'
-   * represents the number.
-   */
-  template::value>::type>
-  simdjson_inline void append(number_type v) noexcept;
-
-  /**
-   * Append character c.
-   */
-  simdjson_inline void append(char c)  noexcept;
-
-  /**
-   * Append the string 'null'.
-   */
-  simdjson_inline void append_null()  noexcept;
-
-  /**
-   * Clear the content.
-   */
-  simdjson_inline void clear()  noexcept;
-
-  /**
-   * Append the std::string_view, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append(std::string_view input)  noexcept;
-
-  /**
-   * Append the std::string_view surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(std::string_view input)  noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void escape_and_append_with_quotes()  noexcept;
-#endif
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void escape_and_append_with_quotes(char input)  noexcept;
-
-  /**
-   * Append the character surrounded by double quotes, after escaping it.
-   * There is no UTF-8 validation.
-   */
-   simdjson_inline void escape_and_append_with_quotes(const char* input)  noexcept;
-
-  /**
-   * Append the C string directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *c)  noexcept;
-
-  /**
-   * Append "{" to the buffer.
-   */
-  simdjson_inline void start_object()  noexcept;
-
-  /**
-   * Append "}" to the buffer.
-   */
-  simdjson_inline void end_object()  noexcept;
-
-  /**
-   * Append "[" to the buffer.
-   */
-  simdjson_inline void start_array()  noexcept;
-
-  /**
-   * Append "]" to the buffer.
-   */
-  simdjson_inline void end_array()  noexcept;
-
-  /**
-   * Append "," to the buffer.
-   */
-  simdjson_inline void append_comma()  noexcept;
-
-  /**
-   * Append ":" to the buffer.
-   */
-  simdjson_inline void append_colon()  noexcept;
-
-  /**
-   * Append a key-value pair to the buffer.
-   * The key is escaped and surrounded by double quotes.
-   * The value is escaped if it is a string.
-   */
-  template
-  simdjson_inline void append_key_value(key_type key, value_type value) noexcept;
-#if SIMDJSON_SUPPORTS_CONCEPTS
-  template
-  simdjson_inline void append_key_value(value_type value) noexcept;
-
-  // Support for optional types (std::optional, etc.)
-  template 
-  requires(!require_custom_serialization)
-  simdjson_inline void append(const T &opt);
-
-  template 
-  requires(require_custom_serialization)
-  simdjson_inline void append(T &&val);
-
-  // Support for string-like types
-  template 
-  requires(std::is_convertible::value ||
-  std::is_same::value )
-  simdjson_inline void append(const T &value);
-#endif
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-  // Support for range-based appending (std::ranges::view, etc.)
-  template 
-requires (!std::is_convertible::value && !require_custom_serialization)
-  simdjson_inline void append(const R &range) noexcept;
-#endif
-  /**
-   * Append the std::string_view directly, without escaping.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(std::string_view input)  noexcept;
-
-  /**
-   * Append len characters from str.
-   * There is no UTF-8 validation.
-   */
-  simdjson_inline void append_raw(const char *str, size_t len) noexcept;
-#if SIMDJSON_EXCEPTIONS
-  /**
-   * Creates an std::string from the written JSON buffer.
-   * Throws if memory allocation failed
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string() const noexcept(false);
-
-  /**
-   * Creates an std::string_view from the written JSON buffer.
-   * Throws if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content if needed.
-   */
-  simdjson_inline operator std::string_view() const noexcept(false) simdjson_lifetime_bound;
-#endif
-
-  /**
-   * Returns a view on the written JSON buffer. Returns an error
-   * if memory allocation failed.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result view() const noexcept;
-
-  /**
-   * Appends the null character to the buffer and returns
-   * a pointer to the beginning of the written JSON buffer.
-   * Returns an error if memory allocation failed.
-   * The result is null-terminated.
-   *
-   * The result may not be valid UTF-8 if some of your content was not valid UTF-8.
-   * Use validate_unicode() to check the content.
-   */
-  simdjson_inline simdjson_result c_str() noexcept;
-
-  /**
-   * Return true if the content is valid UTF-8.
-   */
-  simdjson_inline bool validate_unicode() const noexcept;
-
-  /**
-   * Returns the current size of the written JSON buffer.
-   * If an error occurred, returns 0.
-   */
-  simdjson_inline size_t size() const noexcept;
-
-private:
-  /**
-   * Returns true if we can write at least upcoming_bytes bytes.
-   * The underlying buffer is reallocated if needed. It is designed
-   * to be called before writing to the buffer. It should be fast.
-   */
-  simdjson_inline bool capacity_check(size_t upcoming_bytes);
-
-  /**
-   * Grow the buffer to at least desired_capacity bytes.
-   * If the allocation fails, is_valid is set to false. We expect
-   * that this function would not be repeatedly called.
-   */
-  simdjson_inline void grow_buffer(size_t desired_capacity);
-
-  /**
-   * We use this helper function to make sure that is_valid is kept consistent.
-   */
-  simdjson_inline void set_valid(bool valid) noexcept;
-
-  std::unique_ptr buffer{};
-  size_t position{0};
-  size_t capacity{0};
-  bool is_valid{true};
-};
-
-
-
-}
-}
-
-
-#if !SIMDJSON_STATIC_REFLECTION
-// fallback implementation until we have static reflection
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::lasx::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view s;
-  auto e = b.view().get(s);
-  if(e) { return e; }
-  return std::string(s);
-}
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  simdjson::lasx::builder::string_builder b(initial_capacity);
-  b.append(z);
-  std::string_view sv;
-  auto e = b.view().get(sv);
-  if(e) { return e; }
-  s.assign(sv.data(), sv.size());
-  return simdjson::SUCCESS;
-}
-#endif
-
-#if SIMDJSON_SUPPORTS_CONCEPTS
-#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_H
-/* end file simdjson/generic/ondemand/json_string_builder.h for lasx */
+/* end file simdjson/generic/ondemand/parser.h for rvv_vls */
 
 // All other declarations
-/* including simdjson/generic/ondemand/array.h for lasx: #include "simdjson/generic/ondemand/array.h" */
-/* begin file simdjson/generic/ondemand/array.h for lasx */
+/* including simdjson/generic/ondemand/array.h for rvv_vls: #include "simdjson/generic/ondemand/array.h" */
+/* begin file simdjson/generic/ondemand/array.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -142157,7 +172327,7 @@ simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t i
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 /**
@@ -142377,27 +172547,27 @@ class array {
 };
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::array &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::array &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
   inline simdjson_result count_elements() & noexcept;
   inline simdjson_result is_empty() & noexcept;
   inline simdjson_result reset() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at(size_t index) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   simdjson_inline simdjson_result raw_json() noexcept;
 #if SIMDJSON_SUPPORTS_CONCEPTS
   // TODO: move this code into object-inl.h
@@ -142405,7 +172575,7 @@ struct simdjson_result : public lasx::implementation_simd
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -142413,7 +172583,7 @@ struct simdjson_result : public lasx::implementation_simd
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -142426,13 +172596,14 @@ struct simdjson_result : public lasx::implementation_simd
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_H
-/* end file simdjson/generic/ondemand/array.h for lasx */
-/* including simdjson/generic/ondemand/array_iterator.h for lasx: #include "simdjson/generic/ondemand/array_iterator.h" */
-/* begin file simdjson/generic/ondemand/array_iterator.h for lasx */
+/* end file simdjson/generic/ondemand/array.h for rvv_vls */
+/* including simdjson/generic/ondemand/array_iterator.h for rvv_vls: #include "simdjson/generic/ondemand/array_iterator.h" */
+/* begin file simdjson/generic/ondemand/array_iterator.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
 /* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H */
+/* amalgamation skipped (editor-only): #include  */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/implementation_simdjson_result_base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
 /* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value_iterator.h" */
@@ -142440,7 +172611,7 @@ struct simdjson_result : public lasx::implementation_simd
 
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 /**
@@ -142448,11 +172619,17 @@ namespace ondemand {
  *
  * This is an input_iterator, meaning:
  * - It is forward-only
- * - * must be called exactly once per element.
+ * - * must be called at most once per element.
  * - ++ must be called exactly once in between each * (*, ++, *, ++, * ...)
  */
 class array_iterator {
 public:
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
   /** Create a new, invalid array iterator. */
   simdjson_inline array_iterator() noexcept = default;
 
@@ -142496,6 +172673,9 @@ class array_iterator {
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   value_iterator iter{};
 
   simdjson_inline array_iterator(const value_iterator &iter) noexcept;
@@ -142506,14 +172686,20 @@ class array_iterator {
 };
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
-  simdjson_inline simdjson_result(lasx::ondemand::array_iterator &&value) noexcept; ///< @private
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
+  using iterator_category = std::input_iterator_tag;
+  using value_type = simdjson_result;
+  using difference_type = std::ptrdiff_t;
+  using pointer = void;
+  using reference = value_type;
+
+  simdjson_inline simdjson_result(rvv_vls::ondemand::array_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -142521,10 +172707,10 @@ struct simdjson_result : public lasx::implementa
   // Iterator interface
   //
 
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 
   simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
 };
@@ -142532,9 +172718,9 @@ struct simdjson_result : public lasx::implementa
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_H
-/* end file simdjson/generic/ondemand/array_iterator.h for lasx */
-/* including simdjson/generic/ondemand/document.h for lasx: #include "simdjson/generic/ondemand/document.h" */
-/* begin file simdjson/generic/ondemand/document.h for lasx */
+/* end file simdjson/generic/ondemand/array_iterator.h for rvv_vls */
+/* including simdjson/generic/ondemand/document.h for rvv_vls: #include "simdjson/generic/ondemand/document.h" */
+/* begin file simdjson/generic/ondemand/document.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -142548,7 +172734,7 @@ struct simdjson_result : public lasx::implementa
 
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 /**
@@ -143500,21 +173686,21 @@ class document_reference {
   document *doc{nullptr};
 };
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::document &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::document &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -143525,9 +173711,9 @@ struct simdjson_result : public lasx::implementation_s
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -143537,33 +173723,33 @@ struct simdjson_result : public lasx::implementation_s
   template simdjson_inline error_code get(T &out) && noexcept;
 #if SIMDJSON_EXCEPTIONS
 
-  using lasx::implementation_simdjson_result_base::operator*;
-  using lasx::implementation_simdjson_result_base::operator->;
-  template ::value == false>::type>
+  using rvv_vls::implementation_simdjson_result_base::operator*;
+  using rvv_vls::implementation_simdjson_result_base::operator->;
+  template ::value == false>::type>
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator lasx::ondemand::array() & noexcept(false);
-  simdjson_inline operator lasx::ondemand::object() & noexcept(false);
+  simdjson_inline operator rvv_vls::ondemand::array() & noexcept(false);
+  simdjson_inline operator rvv_vls::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator lasx::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator rvv_vls::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator lasx::ondemand::value() noexcept(false);
+  simdjson_inline operator rvv_vls::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
@@ -143571,14 +173757,14 @@ struct simdjson_result : public lasx::implementation_s
   simdjson_inline bool at_end() const noexcept;
   simdjson_inline bool is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -143594,14 +173780,14 @@ struct simdjson_result : public lasx::implementation_s
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::document_reference value, error_code error) noexcept;
+  simdjson_inline simdjson_result(rvv_vls::ondemand::document_reference value, error_code error) noexcept;
   simdjson_inline simdjson_result() noexcept = default;
   simdjson_inline error_code rewind() noexcept;
 
-  simdjson_inline simdjson_result get_array() & noexcept;
-  simdjson_inline simdjson_result get_object() & noexcept;
+  simdjson_inline simdjson_result get_array() & noexcept;
+  simdjson_inline simdjson_result get_object() & noexcept;
   simdjson_inline simdjson_result get_uint64() noexcept;
   simdjson_inline simdjson_result get_uint64_in_string() noexcept;
   simdjson_inline simdjson_result get_int64() noexcept;
@@ -143612,9 +173798,9 @@ struct simdjson_result : public lasx::implem
   template 
   simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
   simdjson_inline simdjson_result get_wobbly_string() noexcept;
-  simdjson_inline simdjson_result get_raw_json_string() noexcept;
+  simdjson_inline simdjson_result get_raw_json_string() noexcept;
   simdjson_inline simdjson_result get_bool() noexcept;
-  simdjson_inline simdjson_result get_value() noexcept;
+  simdjson_inline simdjson_result get_value() noexcept;
   simdjson_inline simdjson_result is_null() noexcept;
 
   template simdjson_inline simdjson_result get() & noexcept;
@@ -143625,43 +173811,43 @@ struct simdjson_result : public lasx::implem
 #if SIMDJSON_EXCEPTIONS
   template 
   explicit simdjson_inline operator T() noexcept(false);
-  simdjson_inline operator lasx::ondemand::array() & noexcept(false);
-  simdjson_inline operator lasx::ondemand::object() & noexcept(false);
+  simdjson_inline operator rvv_vls::ondemand::array() & noexcept(false);
+  simdjson_inline operator rvv_vls::ondemand::object() & noexcept(false);
   simdjson_inline operator uint64_t() noexcept(false);
   simdjson_inline operator int64_t() noexcept(false);
   simdjson_inline operator double() noexcept(false);
   simdjson_inline operator std::string_view() noexcept(false);
-  simdjson_inline operator lasx::ondemand::raw_json_string() noexcept(false);
+  simdjson_inline operator rvv_vls::ondemand::raw_json_string() noexcept(false);
   simdjson_inline operator bool() noexcept(false);
-  simdjson_inline operator lasx::ondemand::value() noexcept(false);
+  simdjson_inline operator rvv_vls::ondemand::value() noexcept(false);
 #endif
   simdjson_inline simdjson_result count_elements() & noexcept;
   simdjson_inline simdjson_result count_fields() & noexcept;
-  simdjson_inline simdjson_result at(size_t index) & noexcept;
-  simdjson_inline simdjson_result begin() & noexcept;
-  simdjson_inline simdjson_result end() & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
-  simdjson_result operator[](int) & noexcept = delete;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
-  simdjson_inline simdjson_result type() noexcept;
+  simdjson_inline simdjson_result at(size_t index) & noexcept;
+  simdjson_inline simdjson_result begin() & noexcept;
+  simdjson_inline simdjson_result end() & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(const char *key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](const char *key) & noexcept;
+  simdjson_result operator[](int) & noexcept = delete;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(const char *key) & noexcept;
+  simdjson_inline simdjson_result type() noexcept;
   simdjson_inline simdjson_result is_scalar() noexcept;
   simdjson_inline simdjson_result is_string() noexcept;
   simdjson_inline simdjson_result current_location() noexcept;
   simdjson_inline simdjson_result current_depth() const noexcept;
   simdjson_inline simdjson_result is_negative() noexcept;
   simdjson_inline simdjson_result is_integer() noexcept;
-  simdjson_inline simdjson_result get_number_type() noexcept;
-  simdjson_inline simdjson_result get_number() noexcept;
+  simdjson_inline simdjson_result get_number_type() noexcept;
+  simdjson_inline simdjson_result get_number() noexcept;
   /** @copydoc simdjson_inline std::string_view document_reference::raw_json_token() const noexcept */
   simdjson_inline simdjson_result raw_json_token() noexcept;
 
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
 #if SIMDJSON_STATIC_REFLECTION
   template
     requires(std::is_class_v && (sizeof...(FieldNames) > 0))
@@ -143673,9 +173859,9 @@ struct simdjson_result : public lasx::implem
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_H
-/* end file simdjson/generic/ondemand/document.h for lasx */
-/* including simdjson/generic/ondemand/document_stream.h for lasx: #include "simdjson/generic/ondemand/document_stream.h" */
-/* begin file simdjson/generic/ondemand/document_stream.h for lasx */
+/* end file simdjson/generic/ondemand/document.h for rvv_vls */
+/* including simdjson/generic/ondemand/document_stream.h for rvv_vls: #include "simdjson/generic/ondemand/document_stream.h" */
+/* begin file simdjson/generic/ondemand/document_stream.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -143693,7 +173879,7 @@ struct simdjson_result : public lasx::implem
 #endif
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -144006,14 +174192,14 @@ class document_stream {
 };  // document_stream
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::document_stream &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::document_stream &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 };
@@ -144021,9 +174207,9 @@ struct simdjson_result : public lasx::implement
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
-/* end file simdjson/generic/ondemand/document_stream.h for lasx */
-/* including simdjson/generic/ondemand/field.h for lasx: #include "simdjson/generic/ondemand/field.h" */
-/* begin file simdjson/generic/ondemand/field.h for lasx */
+/* end file simdjson/generic/ondemand/document_stream.h for rvv_vls */
+/* including simdjson/generic/ondemand/field.h for rvv_vls: #include "simdjson/generic/ondemand/field.h" */
+/* begin file simdjson/generic/ondemand/field.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -144035,7 +174221,7 @@ struct simdjson_result : public lasx::implement
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 /**
@@ -144113,33 +174299,33 @@ class field : public std::pair {
 };
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::field &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::field &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
   simdjson_inline simdjson_result unescaped_key(bool allow_replacement = false) noexcept;
   template
   simdjson_inline error_code unescaped_key(string_type &receiver, bool allow_replacement = false) noexcept;
-  simdjson_inline simdjson_result key() noexcept;
+  simdjson_inline simdjson_result key() noexcept;
   simdjson_inline simdjson_result key_raw_json_token() noexcept;
   simdjson_inline simdjson_result escaped_key() noexcept;
-  simdjson_inline simdjson_result value() noexcept;
+  simdjson_inline simdjson_result value() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_H
-/* end file simdjson/generic/ondemand/field.h for lasx */
-/* including simdjson/generic/ondemand/object.h for lasx: #include "simdjson/generic/ondemand/object.h" */
-/* begin file simdjson/generic/ondemand/object.h for lasx */
+/* end file simdjson/generic/ondemand/field.h for rvv_vls */
+/* including simdjson/generic/ondemand/object.h for rvv_vls: #include "simdjson/generic/ondemand/object.h" */
+/* begin file simdjson/generic/ondemand/object.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -144154,7 +174340,7 @@ struct simdjson_result : public lasx::implementation_simd
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 /**
@@ -144169,6 +174355,13 @@ class object {
    */
   simdjson_inline object() noexcept = default;
 
+  /**
+   * Get an iterator to the start of the object. We recommend using a range-based for loop.
+   *
+   * Using the iterator directly is also possible but error-prone and discouraged. In particular,
+   * you must dereference the iterator exactly once per iteration (before calling '++').
+   * Doing otherwise is unsafe and may lead to errors. You are responsible for ensuring
+   */
   simdjson_inline simdjson_result begin() noexcept;
   simdjson_inline simdjson_result end() noexcept;
   /**
@@ -144441,29 +174634,29 @@ class object {
 };
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::object &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::object &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
-  simdjson_inline simdjson_result begin() noexcept;
-  simdjson_inline simdjson_result end() noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
-  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
-  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
-  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
-  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
-  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result begin() noexcept;
+  simdjson_inline simdjson_result end() noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) & noexcept;
+  simdjson_inline simdjson_result find_field_unordered(std::string_view key) && noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) & noexcept;
+  simdjson_inline simdjson_result operator[](std::string_view key) && noexcept;
+  simdjson_inline simdjson_result at_pointer(std::string_view json_pointer) noexcept;
+  simdjson_inline simdjson_result at_path(std::string_view json_path) noexcept;
+  simdjson_inline simdjson_result> at_path_with_wildcard(std::string_view json_path) noexcept;
   inline simdjson_result reset() noexcept;
   inline simdjson_result is_empty() noexcept;
   inline simdjson_result count_fields() & noexcept;
@@ -144474,7 +174667,7 @@ struct simdjson_result : public lasx::implementation_sim
   template
   simdjson_inline simdjson_result get() noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       return first;
     }
     return first.get();
@@ -144482,7 +174675,7 @@ struct simdjson_result : public lasx::implementation_sim
   template
   simdjson_warn_unused simdjson_inline error_code get(T& out) noexcept {
     if (error()) { return error(); }
-    if constexpr (std::is_same_v) {
+    if constexpr (std::is_same_v) {
       out = first;
     } else {
       SIMDJSON_TRY( first.get(out) );
@@ -144505,9 +174698,9 @@ struct simdjson_result : public lasx::implementation_sim
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
-/* end file simdjson/generic/ondemand/object.h for lasx */
-/* including simdjson/generic/ondemand/object_iterator.h for lasx: #include "simdjson/generic/ondemand/object_iterator.h" */
-/* begin file simdjson/generic/ondemand/object_iterator.h for lasx */
+/* end file simdjson/generic/ondemand/object.h for rvv_vls */
+/* including simdjson/generic/ondemand/object_iterator.h for rvv_vls: #include "simdjson/generic/ondemand/object_iterator.h" */
+/* begin file simdjson/generic/ondemand/object_iterator.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -144518,7 +174711,7 @@ struct simdjson_result : public lasx::implementation_sim
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 class object_iterator {
@@ -144542,9 +174735,14 @@ class object_iterator {
   // Assumes it's being compared with the end. true if depth >= iter->depth.
   simdjson_inline bool operator!=(const object_iterator &) const noexcept;
   // Checks for ']' and ','
+  // YOU MUST NOT CALL THIS IF operator* YIELDED AN ERROR.
+  // YOU MUST NOT CALL THIS WITHOUT A CORRESPONDING operator* CALL.
   simdjson_inline object_iterator &operator++() noexcept;
 
 private:
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   bool has_been_referenced{false};
+#endif
   /**
    * The underlying JSON iterator.
    *
@@ -144559,15 +174757,15 @@ class object_iterator {
 };
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
 template<>
-struct simdjson_result : public lasx::implementation_simdjson_result_base {
+struct simdjson_result : public rvv_vls::implementation_simdjson_result_base {
 public:
-  simdjson_inline simdjson_result(lasx::ondemand::object_iterator &&value) noexcept; ///< @private
+  simdjson_inline simdjson_result(rvv_vls::ondemand::object_iterator &&value) noexcept; ///< @private
   simdjson_inline simdjson_result(error_code error) noexcept; ///< @private
   simdjson_inline simdjson_result() noexcept = default;
 
@@ -144576,21 +174774,21 @@ struct simdjson_result : public lasx::implement
   //
 
   // Reads key and value, yielding them to the user.
-  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+  simdjson_inline simdjson_result operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
   // Assumes it's being compared with the end. true if depth < iter->depth.
-  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator==(const simdjson_result &) const noexcept;
   // Assumes it's being compared with the end. true if depth >= iter->depth.
-  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
+  simdjson_inline bool operator!=(const simdjson_result &) const noexcept;
   // Checks for ']' and ','
-  simdjson_inline simdjson_result &operator++() noexcept;
+  simdjson_inline simdjson_result &operator++() noexcept;
 };
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
-/* end file simdjson/generic/ondemand/object_iterator.h for lasx */
-/* including simdjson/generic/ondemand/serialization.h for lasx: #include "simdjson/generic/ondemand/serialization.h" */
-/* begin file simdjson/generic/ondemand/serialization.h for lasx */
+/* end file simdjson/generic/ondemand/object_iterator.h for rvv_vls */
+/* including simdjson/generic/ondemand/serialization.h for rvv_vls: #include "simdjson/generic/ondemand/serialization.h" */
+/* begin file simdjson/generic/ondemand/serialization.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -144604,30 +174802,30 @@ namespace simdjson {
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(lasx::ondemand::document& x) noexcept;
+inline simdjson_result to_json_string(rvv_vls::ondemand::document& x) noexcept;
 /**
  * Create a string-view instance out of a value instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. The value must
  * not have been accessed previously. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(lasx::ondemand::value& x) noexcept;
+inline simdjson_result to_json_string(rvv_vls::ondemand::value& x) noexcept;
 /**
  * Create a string-view instance out of an object instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(lasx::ondemand::object& x) noexcept;
+inline simdjson_result to_json_string(rvv_vls::ondemand::object& x) noexcept;
 /**
  * Create a string-view instance out of an array instance. The string-view instance
  * contains JSON text that is suitable to be parsed as JSON again. It does not
  * validate the content.
  */
-inline simdjson_result to_json_string(lasx::ondemand::array& x) noexcept;
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
-inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(rvv_vls::ondemand::array& x) noexcept;
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
+inline simdjson_result to_json_string(simdjson_result x);
 
 #if SIMDJSON_STATIC_REFLECTION
 /**
@@ -144635,10 +174833,10 @@ inline simdjson_result to_json_string(simdjson_result
-  requires(!std::same_as &&
-           !std::same_as &&
-           !std::same_as &&
-           !std::same_as)
+  requires(!std::same_as &&
+           !std::same_as &&
+           !std::same_as &&
+           !std::same_as)
 inline std::string to_json_string(const T& obj);
 #endif
 
@@ -144651,7 +174849,7 @@ inline std::string to_json_string(const T& obj);
  * Credit: @madhur4127
  * See https://github.com/simdjson/simdjson/issues/1768
  */
-namespace simdjson { namespace lasx { namespace ondemand {
+namespace simdjson { namespace rvv_vls { namespace ondemand {
 
 /**
  * Print JSON to an output stream.  It does not
@@ -144661,9 +174859,9 @@ namespace simdjson { namespace lasx { namespace ondemand {
  * @param value The element.
  * @throw if there is an error with the underlying output stream. simdjson itself will not throw.
  */
-inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::value x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::rvv_vls::ondemand::value x);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -144673,9 +174871,9 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -144685,13 +174883,13 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
-inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::document_reference& value);
+inline std::ostream& operator<<(std::ostream& out, simdjson::rvv_vls::ondemand::document_reference& value);
 #if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x);
 #endif
 /**
  * Print JSON to an output stream. It does not
@@ -144701,18 +174899,18 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x);
 #endif
-}}} // namespace simdjson::lasx::ondemand
+}}} // namespace simdjson::rvv_vls::ondemand
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_H
-/* end file simdjson/generic/ondemand/serialization.h for lasx */
+/* end file simdjson/generic/ondemand/serialization.h for rvv_vls */
 
 // Deserialization for standard types
-/* including simdjson/generic/ondemand/std_deserialize.h for lasx: #include "simdjson/generic/ondemand/std_deserialize.h" */
-/* begin file simdjson/generic/ondemand/std_deserialize.h for lasx */
+/* including simdjson/generic/ondemand/std_deserialize.h for rvv_vls: #include "simdjson/generic/ondemand/std_deserialize.h" */
+/* begin file simdjson/generic/ondemand/std_deserialize.h for rvv_vls */
 #if SIMDJSON_SUPPORTS_CONCEPTS
 
 #ifndef SIMDJSON_ONDEMAND_DESERIALIZE_H
@@ -144811,8 +175009,8 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified type inside the container must default constructible.");
-  lasx::ondemand::array arr;
-  if constexpr (std::is_same_v, lasx::ondemand::array>) {
+  rvv_vls::ondemand::array arr;
+  if constexpr (std::is_same_v, rvv_vls::ondemand::array>) {
     arr = val;
   } else {
     SIMDJSON_TRY(val.get_array().get(arr));
@@ -144856,7 +175054,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
   static_assert(
       std::is_default_constructible_v,
       "The specified value type inside the container must default constructible.");
- lasx::ondemand::object obj;
+ rvv_vls::ondemand::object obj;
  SIMDJSON_TRY(val.get_object().get(obj));
  for (auto field : obj) {
     std::string_view key;
@@ -144874,7 +175072,7 @@ error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept(false) {
 }
 
 template 
-error_code tag_invoke(deserialize_tag, lasx::ondemand::object &obj, T &out) noexcept {
+error_code tag_invoke(deserialize_tag, rvv_vls::ondemand::object &obj, T &out) noexcept {
   using value_type = typename std::remove_cvref_t::mapped_type;
 
   out.clear();
@@ -144882,7 +175080,7 @@ error_code tag_invoke(deserialize_tag, lasx::ondemand::object &obj, T &out) noex
     std::string_view key;
     SIMDJSON_TRY(field.unescaped_key().get(key));
 
-    lasx::ondemand::value value_obj;
+    rvv_vls::ondemand::value value_obj;
     SIMDJSON_TRY(field.value().get(value_obj));
 
     value_type this_value;
@@ -144893,22 +175091,22 @@ error_code tag_invoke(deserialize_tag, lasx::ondemand::object &obj, T &out) noex
 }
 
 template 
-error_code tag_invoke(deserialize_tag, lasx::ondemand::value &val, T &out) noexcept {
-  lasx::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, rvv_vls::ondemand::value &val, T &out) noexcept {
+  rvv_vls::ondemand::object obj;
   SIMDJSON_TRY(val.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, lasx::ondemand::document &doc, T &out) noexcept {
-  lasx::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, rvv_vls::ondemand::document &doc, T &out) noexcept {
+  rvv_vls::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
 
 template 
-error_code tag_invoke(deserialize_tag, lasx::ondemand::document_reference &doc, T &out) noexcept {
-  lasx::ondemand::object obj;
+error_code tag_invoke(deserialize_tag, rvv_vls::ondemand::document_reference &doc, T &out) noexcept {
+  rvv_vls::ondemand::object obj;
   SIMDJSON_TRY(doc.get_object().get(obj));
   return simdjson::deserialize(obj, out);
 }
@@ -144985,8 +175183,8 @@ constexpr bool user_defined_type = (std::is_class_v
 template 
   requires(user_defined_type && std::is_class_v)
 error_code tag_invoke(deserialize_tag, ValT &val, T &out) noexcept {
-  lasx::ondemand::object obj;
-  if constexpr (std::is_same_v, lasx::ondemand::object>) {
+  rvv_vls::ondemand::object obj;
+  if constexpr (std::is_same_v, rvv_vls::ondemand::object>) {
     obj = val;
   } else {
     SIMDJSON_TRY(val.get_object().get(obj));
@@ -145295,11 +175493,11 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 
 #endif // SIMDJSON_ONDEMAND_DESERIALIZE_H
 #endif // SIMDJSON_SUPPORTS_CONCEPTS
-/* end file simdjson/generic/ondemand/std_deserialize.h for lasx */
+/* end file simdjson/generic/ondemand/std_deserialize.h for rvv_vls */
 
 // Inline definitions
-/* including simdjson/generic/ondemand/array-inl.h for lasx: #include "simdjson/generic/ondemand/array-inl.h" */
-/* begin file simdjson/generic/ondemand/array-inl.h for lasx */
+/* including simdjson/generic/ondemand/array-inl.h for rvv_vls: #include "simdjson/generic/ondemand/array-inl.h" */
+/* begin file simdjson/generic/ondemand/array-inl.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -145314,7 +175512,7 @@ error_code tag_invoke(deserialize_tag, auto &val, std::unique_ptr &out) noe
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 //
@@ -145543,68 +175741,68 @@ simdjson_inline simdjson_result array::at(size_t index) noexcept {
 }
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  lasx::ondemand::array &&value
+simdjson_inline simdjson_result::simdjson_result(
+  rvv_vls::ondemand::array &&value
 ) noexcept
-  : implementation_simdjson_result_base(
-      std::forward(value)
+  : implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept
-  : implementation_simdjson_result_base(error)
+  : implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::is_empty() & noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
-simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
-simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline  simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_INL_H
-/* end file simdjson/generic/ondemand/array-inl.h for lasx */
-/* including simdjson/generic/ondemand/array_iterator-inl.h for lasx: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/array_iterator-inl.h for lasx */
+/* end file simdjson/generic/ondemand/array-inl.h for rvv_vls */
+/* including simdjson/generic/ondemand/array_iterator-inl.h for rvv_vls: #include "simdjson/generic/ondemand/array_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/array_iterator-inl.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -145616,7 +175814,7 @@ simdjson_inline  simdjson_result simdjson_result array_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   SIMDJSON_ASSUME(!has_been_referenced);
+   has_been_referenced = true;
+#endif
   if (iter.error()) { iter.abandon(); return iter.error(); }
   return value(iter.child());
 }
@@ -145634,6 +175836,9 @@ simdjson_inline bool array_iterator::operator!=(const array_iterator &) const no
   return iter.is_open();
 }
 simdjson_inline array_iterator &array_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   has_been_referenced = false;
+#endif
   error_code error;
   // PERF NOTE this is a safety rail ... users should exit loops as soon as they receive an error, so we'll never get here.
   // However, it does not seem to make a perf difference, so we add it out of an abundance of caution.
@@ -145647,50 +175852,50 @@ simdjson_inline bool array_iterator::at_end() const noexcept {
   return iter.at_end();
 }
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  lasx::ondemand::array_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  rvv_vls::ondemand::array_iterator &&value
 ) noexcept
-  : lasx::implementation_simdjson_result_base(std::forward(value))
+  : rvv_vls::implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : lasx::implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : rvv_vls::implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++(first);
   return *this;
 }
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   return !first.iter.is_valid() || first.at_end();
 }
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_ARRAY_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/array_iterator-inl.h for lasx */
-/* including simdjson/generic/ondemand/value-inl.h for lasx: #include "simdjson/generic/ondemand/value-inl.h" */
-/* begin file simdjson/generic/ondemand/value-inl.h for lasx */
+/* end file simdjson/generic/ondemand/array_iterator-inl.h for rvv_vls */
+/* including simdjson/generic/ondemand/value-inl.h for rvv_vls: #include "simdjson/generic/ondemand/value-inl.h" */
+/* begin file simdjson/generic/ondemand/value-inl.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -145706,7 +175911,7 @@ simdjson_inline bool simdjson_result::at_end() c
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 simdjson_inline value::value(const value_iterator &_iter) noexcept
@@ -146003,240 +176208,240 @@ inline simdjson_result> value::at_path_with_wildcard(std::str
 }
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  lasx::ondemand::value &&value
+simdjson_inline simdjson_result::simdjson_result(
+  rvv_vls::ondemand::value &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   if (error()) { return error(); }
   return {};
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) noexcept {
   if (error()) { return error(); }
   return first[key];
 }
 
-simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
-template<> simdjson_inline error_code simdjson_result::get(lasx::ondemand::value &out) noexcept {
+template<> simdjson_inline error_code simdjson_result::get(rvv_vls::ondemand::value &out) noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 
-template simdjson_inline simdjson_result simdjson_result::get() noexcept {
+template simdjson_inline simdjson_result simdjson_result::get() noexcept {
   if (error()) { return error(); }
   return first.get();
 }
-template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
+template simdjson_inline error_code simdjson_result::get(T &out) noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
+template<> simdjson_inline simdjson_result simdjson_result::get() noexcept  {
   if (error()) { return error(); }
   return std::move(first);
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator lasx::ondemand::array() noexcept(false) {
+simdjson_inline simdjson_result::operator rvv_vls::ondemand::array() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lasx::ondemand::object() noexcept(false) {
+simdjson_inline simdjson_result::operator rvv_vls::ondemand::object() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lasx::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator rvv_vls::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
+simdjson_inline simdjson_result simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(
+simdjson_inline simdjson_result simdjson_result::at_pointer(
     std::string_view json_pointer) noexcept {
   if (error()) {
       return error();
@@ -146244,7 +176449,7 @@ simdjson_inline simdjson_result simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -146252,7 +176457,7 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(
+inline simdjson_result> simdjson_result::at_path_with_wildcard(
       std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -146263,9 +176468,9 @@ inline simdjson_result> simdjson_result> simdjson_result::simdjson_result(
-  lasx::ondemand::document &&value
+simdjson_inline simdjson_result::simdjson_result(
+  rvv_vls::ondemand::document &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(
+    implementation_simdjson_result_base(
       error
     )
 {
 }
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
 
-template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
-template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+template<> simdjson_inline simdjson_result simdjson_result::get() & noexcept = delete;
+template<> simdjson_deprecated simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first);
+  return std::forward(first);
 }
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lasx::ondemand::document &out) & noexcept = delete;
-template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lasx::ondemand::document &out) && noexcept {
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(rvv_vls::ondemand::document &out) & noexcept = delete;
+template<> simdjson_warn_unused simdjson_inline error_code simdjson_result::get(rvv_vls::ondemand::document &out) && noexcept {
   if (error()) { return error(); }
-  out = std::forward(first);
+  out = std::forward(first);
   return SUCCESS;
 }
 
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 
-simdjson_inline bool simdjson_result::is_negative() noexcept {
+simdjson_inline bool simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
 
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
 
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 
 
 #if SIMDJSON_EXCEPTIONS
-template ::value == false>::type>
-simdjson_inline simdjson_result::operator T() noexcept(false) {
+template ::value == false>::type>
+simdjson_inline simdjson_result::operator T() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lasx::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator rvv_vls::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lasx::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator rvv_vls::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lasx::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator rvv_vls::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lasx::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator rvv_vls::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline bool simdjson_result::at_end() const noexcept {
+simdjson_inline bool simdjson_result::at_end() const noexcept {
   if (error()) { return error(); }
   return first.at_end();
 }
 
 
-simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
+simdjson_inline int32_t simdjson_result::current_depth() const noexcept {
   if (error()) { return error(); }
   return first.current_depth();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path(json_path);
 }
 
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
@@ -146963,7 +177168,7 @@ simdjson_inline simdjson_result> simdjson_res
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -146973,7 +177178,7 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result::simdjson_result(lasx::ondemand::document_reference value, error_code error)
-  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
+simdjson_inline simdjson_result::simdjson_result(rvv_vls::ondemand::document_reference value, error_code error)
+  noexcept : implementation_simdjson_result_base(std::forward(value), error) {}
 
 
-simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_elements() & noexcept {
   if (error()) { return error(); }
   return first.count_elements();
 }
-simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
-simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
+simdjson_inline simdjson_result simdjson_result::at(size_t index) & noexcept {
   if (error()) { return error(); }
   return first.at(index);
 }
-simdjson_inline error_code simdjson_result::rewind() noexcept {
+simdjson_inline error_code simdjson_result::rewind() noexcept {
   if (error()) { return error(); }
   first.rewind();
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() & noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() & noexcept {
+simdjson_inline simdjson_result simdjson_result::end() & noexcept {
   return {};
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](const char *key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(const char *key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_array() & noexcept {
   if (error()) { return error(); }
   return first.get_array();
 }
-simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get_object() & noexcept {
   if (error()) { return error(); }
   return first.get_object();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64() noexcept {
   if (error()) { return error(); }
   return first.get_uint64();
 }
-simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_uint64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_uint64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64() noexcept {
   if (error()) { return error(); }
   return first.get_int64();
 }
-simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_int64_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_int64_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double() noexcept {
   if (error()) { return error(); }
   return first.get_double();
 }
-simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_double_in_string() noexcept {
   if (error()) { return error(); }
   return first.get_double_in_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::get_string(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(allow_replacement);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get_string(string_type& receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.get_string(receiver, allow_replacement);
 }
-simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_wobbly_string() noexcept {
   if (error()) { return error(); }
   return first.get_wobbly_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_raw_json_string() noexcept {
   if (error()) { return error(); }
   return first.get_raw_json_string();
 }
-simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_bool() noexcept {
   if (error()) { return error(); }
   return first.get_bool();
 }
-simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_value() noexcept {
   if (error()) { return error(); }
   return first.get_value();
 }
-simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_null() noexcept {
   if (error()) { return error(); }
   return first.is_null();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() & noexcept {
+simdjson_inline simdjson_result simdjson_result::get() & noexcept {
   if (error()) { return error(); }
   return first.get();
 }
 template
-simdjson_inline simdjson_result simdjson_result::get() && noexcept {
+simdjson_inline simdjson_result simdjson_result::get() && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get();
+  return std::forward(first).get();
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) & noexcept {
   if (error()) { return error(); }
   return first.get(out);
 }
 template 
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(T &out) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).get(out);
+  return std::forward(first).get(out);
 }
-simdjson_inline simdjson_result simdjson_result::type() noexcept {
+simdjson_inline simdjson_result simdjson_result::type() noexcept {
   if (error()) { return error(); }
   return first.type();
 }
-simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_scalar() noexcept {
   if (error()) { return error(); }
   return first.is_scalar();
 }
-simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_string() noexcept {
   if (error()) { return error(); }
   return first.is_string();
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lasx::ondemand::document_reference &out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(rvv_vls::ondemand::document_reference &out) & noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
 template <>
-simdjson_warn_unused simdjson_inline error_code simdjson_result::get(lasx::ondemand::document_reference &out) && noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::get(rvv_vls::ondemand::document_reference &out) && noexcept {
   if (error()) { return error(); }
   out = first;
   return SUCCESS;
 }
-simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_negative() noexcept {
   if (error()) { return error(); }
   return first.is_negative();
 }
-simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
+simdjson_inline simdjson_result simdjson_result::is_integer() noexcept {
   if (error()) { return error(); }
   return first.is_integer();
 }
-simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number_type() noexcept {
   if (error()) { return error(); }
   return first.get_number_type();
 }
-simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
+simdjson_inline simdjson_result simdjson_result::get_number() noexcept {
   if (error()) { return error(); }
   return first.get_number();
 }
 #if SIMDJSON_EXCEPTIONS
 template 
-simdjson_inline simdjson_result::operator T() noexcept(false) {
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
-  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+simdjson_inline simdjson_result::operator T() noexcept(false) {
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
+  static_assert(std::is_same::value == false, "You should not call get when T is a document");
   if (error()) { throw simdjson_error(error()); }
   return first.get();
 }
-simdjson_inline simdjson_result::operator lasx::ondemand::array() & noexcept(false) {
+simdjson_inline simdjson_result::operator rvv_vls::ondemand::array() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lasx::ondemand::object() & noexcept(false) {
+simdjson_inline simdjson_result::operator rvv_vls::ondemand::object() & noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator uint64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
+simdjson_inline simdjson_result::operator int64_t() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator double() noexcept(false) {
+simdjson_inline simdjson_result::operator double() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
+simdjson_inline simdjson_result::operator std::string_view() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lasx::ondemand::raw_json_string() noexcept(false) {
+simdjson_inline simdjson_result::operator rvv_vls::ondemand::raw_json_string() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator bool() noexcept(false) {
+simdjson_inline simdjson_result::operator bool() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
-simdjson_inline simdjson_result::operator lasx::ondemand::value() noexcept(false) {
+simdjson_inline simdjson_result::operator rvv_vls::ondemand::value() noexcept(false) {
   if (error()) { throw simdjson_error(error()); }
   return first;
 }
 #endif
 
-simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
+simdjson_inline simdjson_result simdjson_result::current_location() noexcept {
   if (error()) { return error(); }
   return first.current_location();
 }
 
-simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_path(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
   return first.at_path(json_path);
 }
-simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) {
       return error();
   }
@@ -147320,7 +177525,7 @@ simdjson_inline simdjson_result> simdjson_res
 #if SIMDJSON_STATIC_REFLECTION
 template
   requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::extract_into(T& out) & noexcept {
   if (error()) { return error(); }
   return first.extract_into(out);
 }
@@ -147328,9 +177533,9 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 #ifdef SIMDJSON_THREADS_ENABLED
@@ -147752,22 +177957,22 @@ inline void document_stream::start_stage1_thread() noexcept {
 #endif // SIMDJSON_THREADS_ENABLED
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
-  lasx::ondemand::document_stream &&value
+simdjson_inline simdjson_result::simdjson_result(
+  rvv_vls::ondemand::document_stream &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
@@ -147775,9 +177980,9 @@ simdjson_inline simdjson_result::simdjson_resul
 }
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H
-/* end file simdjson/generic/ondemand/document_stream-inl.h for lasx */
-/* including simdjson/generic/ondemand/field-inl.h for lasx: #include "simdjson/generic/ondemand/field-inl.h" */
-/* begin file simdjson/generic/ondemand/field-inl.h for lasx */
+/* end file simdjson/generic/ondemand/document_stream-inl.h for rvv_vls */
+/* including simdjson/generic/ondemand/field-inl.h for rvv_vls: #include "simdjson/generic/ondemand/field-inl.h" */
+/* begin file simdjson/generic/ondemand/field-inl.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -147789,7 +177994,7 @@ simdjson_inline simdjson_result::simdjson_resul
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 // clang 6 does not think the default constructor can be noexcept, so we make it explicit
@@ -147853,53 +178058,53 @@ simdjson_inline value field::value() && noexcept {
 }
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  lasx::ondemand::field &&value
+simdjson_inline simdjson_result::simdjson_result(
+  rvv_vls::ondemand::field &&value
 ) noexcept :
-    implementation_simdjson_result_base(
-      std::forward(value)
+    implementation_simdjson_result_base(
+      std::forward(value)
     )
 {
 }
-simdjson_inline simdjson_result::simdjson_result(
+simdjson_inline simdjson_result::simdjson_result(
   error_code error
 ) noexcept :
-    implementation_simdjson_result_base(error)
+    implementation_simdjson_result_base(error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::key() noexcept {
+simdjson_inline simdjson_result simdjson_result::key() noexcept {
   if (error()) { return error(); }
   return first.key();
 }
 
-simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
+simdjson_inline simdjson_result simdjson_result::key_raw_json_token() noexcept {
   if (error()) { return error(); }
   return first.key_raw_json_token();
 }
 
-simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
+simdjson_inline simdjson_result simdjson_result::escaped_key() noexcept {
   if (error()) { return error(); }
   return first.escaped_key();
 }
 
-simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
+simdjson_inline simdjson_result simdjson_result::unescaped_key(bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(allow_replacement);
 }
 
 template
-simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
+simdjson_warn_unused simdjson_inline error_code simdjson_result::unescaped_key(string_type &receiver, bool allow_replacement) noexcept {
   if (error()) { return error(); }
   return first.unescaped_key(receiver, allow_replacement);
 }
 
-simdjson_inline simdjson_result simdjson_result::value() noexcept {
+simdjson_inline simdjson_result simdjson_result::value() noexcept {
   if (error()) { return error(); }
   return std::move(first.value());
 }
@@ -147907,9 +178112,9 @@ simdjson_inline simdjson_result simdjson_result simdjson_result= &parser->implementation->structural_indexes[0] );
   SIMDJSON_ASSUME( position < &parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] );
-#else
-  (void)position; // Suppress unused parameter warning
 #endif
 }
 
@@ -148270,7 +178474,11 @@ simdjson_inline token_position json_iterator::position() const noexcept {
 simdjson_inline simdjson_result json_iterator::unescape(raw_json_string in, bool allow_replacement) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape(in, _string_buf_loc, allow_replacement);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape(in, _string_buf_loc, allow_replacement);
@@ -148280,7 +178488,11 @@ simdjson_inline simdjson_result json_iterator::unescape(raw_js
 simdjson_inline simdjson_result json_iterator::unescape_wobbly(raw_json_string in) noexcept {
 #if SIMDJSON_DEVELOPMENT_CHECKS
   auto result = parser->unescape_wobbly(in, _string_buf_loc);
+#if !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
+  // Under Visual Studio, the next SIMDJSON_ASSUME fails with: the argument
+  // has side effects that will be discarded.
   SIMDJSON_ASSUME(!parser->string_buffer_overflow(_string_buf_loc));
+#endif // !defined(SIMDJSON_VISUAL_STUDIO) && !defined(SIMDJSON_CLANG_VISUAL_STUDIO)
   return result;
 #else
   return parser->unescape_wobbly(in, _string_buf_loc);
@@ -148343,22 +178555,22 @@ simdjson_warn_unused simdjson_inline bool json_iterator::copy_to_buffer(const ui
 }
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::json_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(rvv_vls::ondemand::json_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/json_iterator-inl.h for lasx */
-/* including simdjson/generic/ondemand/json_type-inl.h for lasx: #include "simdjson/generic/ondemand/json_type-inl.h" */
-/* begin file simdjson/generic/ondemand/json_type-inl.h for lasx */
+/* end file simdjson/generic/ondemand/json_iterator-inl.h for rvv_vls */
+/* including simdjson/generic/ondemand/json_type-inl.h for rvv_vls: #include "simdjson/generic/ondemand/json_type-inl.h" */
+/* begin file simdjson/generic/ondemand/json_type-inl.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -148369,7 +178581,7 @@ simdjson_inline simdjson_result::simdjson_result(
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept {
@@ -148463,22 +178675,22 @@ simdjson_inline void number::skip_double() noexcept {
 }
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::json_type &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(rvv_vls::ondemand::json_type &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
-/* end file simdjson/generic/ondemand/json_type-inl.h for lasx */
-/* including simdjson/generic/ondemand/logger-inl.h for lasx: #include "simdjson/generic/ondemand/logger-inl.h" */
-/* begin file simdjson/generic/ondemand/logger-inl.h for lasx */
+/* end file simdjson/generic/ondemand/json_type-inl.h for rvv_vls */
+/* including simdjson/generic/ondemand/logger-inl.h for rvv_vls: #include "simdjson/generic/ondemand/logger-inl.h" */
+/* begin file simdjson/generic/ondemand/logger-inl.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -148493,7 +178705,7 @@ simdjson_inline simdjson_result::simdjson_result(erro
 #include 
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 namespace logger {
 
@@ -148700,13 +178912,13 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 
 } // namespace logger
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_LOGGER_INL_H
-/* end file simdjson/generic/ondemand/logger-inl.h for lasx */
-/* including simdjson/generic/ondemand/object-inl.h for lasx: #include "simdjson/generic/ondemand/object-inl.h" */
-/* begin file simdjson/generic/ondemand/object-inl.h for lasx */
+/* end file simdjson/generic/ondemand/logger-inl.h for rvv_vls */
+/* including simdjson/generic/ondemand/object-inl.h for rvv_vls: #include "simdjson/generic/ondemand/object-inl.h" */
+/* begin file simdjson/generic/ondemand/object-inl.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -148726,7 +178938,7 @@ inline void log_line(const json_iterator &iter, token_position index, depth_t de
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 simdjson_inline simdjson_result object::find_field_unordered(const std::string_view key) & noexcept {
@@ -149000,55 +179212,55 @@ simdjson_warn_unused simdjson_inline error_code object::extract_into(T& out) & n
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::object &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(rvv_vls::ondemand::object &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
-simdjson_inline simdjson_result simdjson_result::begin() noexcept {
+simdjson_inline simdjson_result simdjson_result::begin() noexcept {
   if (error()) { return error(); }
   return first.begin();
 }
-simdjson_inline simdjson_result simdjson_result::end() noexcept {
+simdjson_inline simdjson_result simdjson_result::end() noexcept {
   if (error()) { return error(); }
   return first.end();
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field_unordered(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field_unordered(key);
+  return std::forward(first).find_field_unordered(key);
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first[key];
 }
-simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::operator[](std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first)[key];
+  return std::forward(first)[key];
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) & noexcept {
   if (error()) { return error(); }
   return first.find_field(key);
 }
-simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
+simdjson_inline simdjson_result simdjson_result::find_field(std::string_view key) && noexcept {
   if (error()) { return error(); }
-  return std::forward(first).find_field(key);
+  return std::forward(first).find_field(key);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
+simdjson_inline simdjson_result simdjson_result::at_pointer(std::string_view json_pointer) noexcept {
   if (error()) { return error(); }
   return first.at_pointer(json_pointer);
 }
 
-simdjson_inline simdjson_result simdjson_result::at_path(
+simdjson_inline simdjson_result simdjson_result::at_path(
     std::string_view json_path) noexcept {
   if (error()) {
     return error();
@@ -149056,27 +179268,27 @@ simdjson_inline simdjson_result simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
+simdjson_inline simdjson_result> simdjson_result::at_path_with_wildcard(std::string_view json_path) noexcept {
   if (error()) { return error(); }
   return first.at_path_with_wildcard(json_path);
 }
 
-inline simdjson_result simdjson_result::reset() noexcept {
+inline simdjson_result simdjson_result::reset() noexcept {
   if (error()) { return error(); }
   return first.reset();
 }
 
-inline simdjson_result simdjson_result::is_empty() noexcept {
+inline simdjson_result simdjson_result::is_empty() noexcept {
   if (error()) { return error(); }
   return first.is_empty();
 }
 
-simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
+simdjson_inline  simdjson_result simdjson_result::count_fields() & noexcept {
   if (error()) { return error(); }
   return first.count_fields();
 }
 
-simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
+simdjson_inline  simdjson_result simdjson_result::raw_json() noexcept {
   if (error()) { return error(); }
   return first.raw_json();
 }
@@ -149084,9 +179296,9 @@ simdjson_inline  simdjson_result simdjson_result simdjson_result object_iterator::operator*() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+  // We must call * once per iteration.
+  SIMDJSON_ASSUME(!has_been_referenced);
+  has_been_referenced = true;
+#endif
   error_code error = iter.error();
   if (error) { iter.abandon(); return error; }
   auto result = field::start(iter);
@@ -149128,6 +179345,11 @@ simdjson_inline bool object_iterator::operator!=(const object_iterator &) const
 SIMDJSON_PUSH_DISABLE_WARNINGS
 SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
 simdjson_inline object_iterator &object_iterator::operator++() noexcept {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+   // Before calling ++, we must have called *.
+   SIMDJSON_ASSUME(has_been_referenced);
+   has_been_referenced = false;
+#endif
   // TODO this is a safety rail ... users should exit loops as soon as they receive an error.
   // Nonetheless, let's see if performance is OK with this if statement--the compiler may give it to us for free.
   if (!iter.is_open()) { return *this; } // Iterator will be released if there is an error
@@ -149183,39 +179405,39 @@ SIMDJSON_POP_DISABLE_WARNINGS
 //
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(
-  lasx::ondemand::object_iterator &&value
+simdjson_inline simdjson_result::simdjson_result(
+  rvv_vls::ondemand::object_iterator &&value
 ) noexcept
-  : implementation_simdjson_result_base(std::forward(value))
+  : implementation_simdjson_result_base(std::forward(value))
 {
   first.iter.assert_is_valid();
 }
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-  : implementation_simdjson_result_base({}, error)
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+  : implementation_simdjson_result_base({}, error)
 {
 }
 
-simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
+simdjson_inline simdjson_result simdjson_result::operator*() noexcept {
   if (error()) { return error(); }
   return *first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator==(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return !error(); }
   return first == other.first;
 }
 // If we're iterating and there is an error, return the error once.
-simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
+simdjson_inline bool simdjson_result::operator!=(const simdjson_result &other) const noexcept {
   if (!first.iter.is_valid()) { return error(); }
   return first != other.first;
 }
 // Checks for ']' and ','
-simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
+simdjson_inline simdjson_result &simdjson_result::operator++() noexcept {
   // Clear the error if there is one, so we don't yield it twice
   if (error()) { second = SUCCESS; return *this; }
   ++first;
@@ -149225,9 +179447,9 @@ simdjson_inline simdjson_result &simdjson_resul
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/object_iterator-inl.h for lasx */
-/* including simdjson/generic/ondemand/parser-inl.h for lasx: #include "simdjson/generic/ondemand/parser-inl.h" */
-/* begin file simdjson/generic/ondemand/parser-inl.h for lasx */
+/* end file simdjson/generic/ondemand/object_iterator-inl.h for rvv_vls */
+/* including simdjson/generic/ondemand/parser-inl.h for rvv_vls: #include "simdjson/generic/ondemand/parser-inl.h" */
+/* begin file simdjson/generic/ondemand/parser-inl.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -149244,7 +179466,7 @@ simdjson_inline simdjson_result &simdjson_resul
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 simdjson_inline parser::parser(size_t max_capacity) noexcept
@@ -149454,22 +179676,22 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser::
 
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::parser &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(rvv_vls::ondemand::parser &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
-/* end file simdjson/generic/ondemand/parser-inl.h for lasx */
-/* including simdjson/generic/ondemand/raw_json_string-inl.h for lasx: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
-/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for lasx */
+/* end file simdjson/generic/ondemand/parser-inl.h for rvv_vls */
+/* including simdjson/generic/ondemand/raw_json_string-inl.h for rvv_vls: #include "simdjson/generic/ondemand/raw_json_string-inl.h" */
+/* begin file simdjson/generic/ondemand/raw_json_string-inl.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -149482,7 +179704,7 @@ simdjson_inline simdjson_result::simdjson_result(error_c
 
 namespace simdjson {
 
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 simdjson_inline raw_json_string::raw_json_string(const uint8_t * _buf) noexcept : buf{_buf} {}
@@ -149611,322 +179833,83 @@ simdjson_inline bool raw_json_string::is_equal(const char* target) const noexcep
     } else {
       escaping = false;
     }
-  }
-  if(r[pos] != '"') { return false; }
-  return true;
-}
-
-simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept {
-  return a.unsafe_is_equal(c);
-}
-
-simdjson_unused simdjson_inline bool operator==(std::string_view c, const raw_json_string &a) noexcept {
-  return a == c;
-}
-
-simdjson_unused simdjson_inline bool operator!=(const raw_json_string &a, std::string_view c) noexcept {
-  return !(a == c);
-}
-
-simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_json_string &a) noexcept {
-  return !(a == c);
-}
-
-
-simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape(json_iterator &iter, bool allow_replacement) const noexcept {
-  return iter.unescape(*this, allow_replacement);
-}
-
-simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape_wobbly(json_iterator &iter) const noexcept {
-  return iter.unescape_wobbly(*this);
-}
-
-simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, const raw_json_string &str) noexcept {
-  bool in_escape = false;
-  const char *s = str.raw();
-  while (true) {
-    switch (*s) {
-      case '\\': in_escape = !in_escape; break;
-      case '"': if (in_escape) { in_escape = false; } else { return out; } break;
-      default: if (in_escape) { in_escape = false; }
-    }
-    out << *s;
-    s++;
-  }
-}
-
-} // namespace ondemand
-} // namespace lasx
-} // namespace simdjson
-
-namespace simdjson {
-
-simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::raw_json_string &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
-
-simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
-  if (error()) { return error(); }
-  return first.raw();
-}
-simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
-  if (error()) { return error(); }
-  return first[i];
-}
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(lasx::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
-  if (error()) { return error(); }
-  return first.unescape(iter, allow_replacement);
-}
-simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(lasx::ondemand::json_iterator &iter) const noexcept {
-  if (error()) { return error(); }
-  return first.unescape_wobbly(iter);
-}
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
-/* end file simdjson/generic/ondemand/raw_json_string-inl.h for lasx */
-/* including simdjson/generic/ondemand/serialization-inl.h for lasx: #include "simdjson/generic/ondemand/serialization-inl.h" */
-/* begin file simdjson/generic/ondemand/serialization-inl.h for lasx */
-#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
-/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_builder.h" */
-/* amalgamation skipped (editor-only): #endif */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-namespace simdjson {
-
-inline std::string_view trim(const std::string_view str) noexcept {
-  // We can almost surely do better by rolling our own find_first_not_of function.
-  size_t first = str.find_first_not_of(" \t\n\r");
-  // If we have the empty string (just white space), then no trimming is possible, and
-  // we return the empty string_view.
-  if (std::string_view::npos == first) { return std::string_view(); }
-  size_t last = str.find_last_not_of(" \t\n\r");
-  return str.substr(first, (last - first + 1));
-}
-
-
-inline simdjson_result to_json_string(lasx::ondemand::document& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(lasx::ondemand::document_reference& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(lasx::ondemand::value& x) noexcept {
-  /**
-   * If we somehow receive a value that has already been consumed,
-   * then the following code could be in trouble. E.g., we create
-   * an array as needed, but if an array was already created, then
-   * it could be bad.
-   */
-  using namespace lasx::ondemand;
-  lasx::ondemand::json_type t;
-  auto error = x.type().get(t);
-  if(error != SUCCESS) { return error; }
-  switch (t)
-  {
-    case json_type::array:
-    {
-      lasx::ondemand::array array;
-      error = x.get_array().get(array);
-      if(error) { return error; }
-      return to_json_string(array);
-    }
-    case json_type::object:
-    {
-      lasx::ondemand::object object;
-      error = x.get_object().get(object);
-      if(error) { return error; }
-      return to_json_string(object);
-    }
-    default:
-      return trim(x.raw_json_token());
-  }
-}
-
-inline simdjson_result to_json_string(lasx::ondemand::object& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(lasx::ondemand::array& x) noexcept {
-  std::string_view v;
-  auto error = x.raw_json().get(v);
-  if(error) {return error; }
-  return trim(v);
-}
-
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+  }
+  if(r[pos] != '"') { return false; }
+  return true;
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept {
+  return a.unsafe_is_equal(c);
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_unused simdjson_inline bool operator==(std::string_view c, const raw_json_string &a) noexcept {
+  return a == c;
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_unused simdjson_inline bool operator!=(const raw_json_string &a, std::string_view c) noexcept {
+  return !(a == c);
 }
 
-inline simdjson_result to_json_string(simdjson_result x) {
-  if (x.error()) { return x.error(); }
-  return to_json_string(x.value_unsafe());
+simdjson_unused simdjson_inline bool operator!=(std::string_view c, const raw_json_string &a) noexcept {
+  return !(a == c);
 }
-} // namespace simdjson
 
-namespace simdjson { namespace lasx { namespace ondemand {
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::value x) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(x).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
+simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape(json_iterator &iter, bool allow_replacement) const noexcept {
+  return iter.unescape(*this, allow_replacement);
 }
-#endif
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::array value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
+simdjson_inline simdjson_warn_unused simdjson_result raw_json_string::unescape_wobbly(json_iterator &iter) const noexcept {
+  return iter.unescape_wobbly(*this);
 }
-#endif
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::document_reference& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
-  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
-}
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::document& value)  {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
+simdjson_unused simdjson_inline std::ostream &operator<<(std::ostream &out, const raw_json_string &str) noexcept {
+  bool in_escape = false;
+  const char *s = str.raw();
+  while (true) {
+    switch (*s) {
+      case '\\': in_escape = !in_escape; break;
+      case '"': if (in_escape) { in_escape = false; } else { return out; } break;
+      default: if (in_escape) { in_escape = false; }
+    }
+    out << *s;
+    s++;
   }
 }
-#endif
 
-#if SIMDJSON_EXCEPTIONS
-inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    throw simdjson::simdjson_error(error);
-  }
+} // namespace ondemand
+} // namespace rvv_vls
+} // namespace simdjson
+
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(rvv_vls::ondemand::raw_json_string &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+simdjson_inline simdjson_result simdjson_result::raw() const noexcept {
+  if (error()) { return error(); }
+  return first.raw();
 }
-inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
-  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
-  return (out << x.value());
+simdjson_inline char simdjson_result::operator[](size_t i) const noexcept {
+  if (error()) { return error(); }
+  return first[i];
 }
-#else
-inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::object value) {
-  std::string_view v;
-  auto error = simdjson::to_json_string(value).get(v);
-  if(error == simdjson::SUCCESS) {
-    return (out << v);
-  } else {
-    return (out << error);
-  }
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape(rvv_vls::ondemand::json_iterator &iter, bool allow_replacement) const noexcept {
+  if (error()) { return error(); }
+  return first.unescape(iter, allow_replacement);
 }
-#endif
-}}} // namespace simdjson::lasx::ondemand
+simdjson_inline simdjson_warn_unused simdjson_result simdjson_result::unescape_wobbly(rvv_vls::ondemand::json_iterator &iter) const noexcept {
+  if (error()) { return error(); }
+  return first.unescape_wobbly(iter);
+}
+} // namespace simdjson
 
-#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
-/* end file simdjson/generic/ondemand/serialization-inl.h for lasx */
-/* including simdjson/generic/ondemand/token_iterator-inl.h for lasx: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/token_iterator-inl.h for lasx */
+#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
+/* end file simdjson/generic/ondemand/raw_json_string-inl.h for rvv_vls */
+/* including simdjson/generic/ondemand/token_iterator-inl.h for rvv_vls: #include "simdjson/generic/ondemand/token_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/token_iterator-inl.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -149937,7 +179920,7 @@ inline std::ostream& operator<<(std::ostream& out, simdjson::lasx::ondemand::obj
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 simdjson_inline token_iterator::token_iterator(
@@ -150008,22 +179991,22 @@ simdjson_inline bool token_iterator::operator<=(const token_iterator &other) con
 }
 
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 namespace simdjson {
 
-simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::token_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
+simdjson_inline simdjson_result::simdjson_result(rvv_vls::ondemand::token_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
 
 } // namespace simdjson
 
 #endif // SIMDJSON_GENERIC_ONDEMAND_TOKEN_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/token_iterator-inl.h for lasx */
-/* including simdjson/generic/ondemand/value_iterator-inl.h for lasx: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
-/* begin file simdjson/generic/ondemand/value_iterator-inl.h for lasx */
+/* end file simdjson/generic/ondemand/token_iterator-inl.h for rvv_vls */
+/* including simdjson/generic/ondemand/value_iterator-inl.h for rvv_vls: #include "simdjson/generic/ondemand/value_iterator-inl.h" */
+/* begin file simdjson/generic/ondemand/value_iterator-inl.h for rvv_vls */
 #ifndef SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
 
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
@@ -150038,7 +180021,7 @@ simdjson_inline simdjson_result::simdjson_result
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 
 simdjson_inline value_iterator::value_iterator(
@@ -150120,7 +180103,6 @@ simdjson_warn_unused simdjson_inline error_code value_iterator::end_container()
 
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::has_next_field() noexcept {
   assert_at_next();
-
   // It's illegal to call this unless there are more tokens: anything that ends in } or ] is
   // obligated to verify there are more tokens if they are not the top level.
   switch (*_json_iter->return_current_and_advance()) {
@@ -150542,9 +180524,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_string(string_type& receiver, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_string(allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_wobbly_string() noexcept {
@@ -150632,7 +180618,7 @@ simdjson_inline simdjson_result value_iterator::is_root_integer(bool check
   return answer;
 }
 
-simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
+simdjson_inline simdjson_result value_iterator::get_root_number_type(bool check_trailing) noexcept {
   auto max_len = peek_root_length();
   auto json = peek_root_scalar("number");
   // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
@@ -150684,9 +180670,13 @@ simdjson_warn_unused simdjson_inline simdjson_result value_ite
 template 
 simdjson_warn_unused simdjson_inline error_code value_iterator::get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept {
   std::string_view content;
+  // Save the string buffer location so that we can restore it after get_string
+  auto saved_string_buf_loc = _json_iter->string_buf_loc();
   auto err = get_root_string(check_trailing, allow_replacement).get(content);
   if (err) { return err; }
   receiver = content;
+  // Restore the string buffer location, effectively discarding any temporary string storage
+  _json_iter->string_buf_loc() = saved_string_buf_loc;
   return SUCCESS;
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_wobbly_string(bool check_trailing) noexcept {
@@ -150717,1507 +180707,657 @@ simdjson_warn_unused simdjson_inline simdjson_result value_iterator::g
 }
 simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_uint64_in_string(bool check_trailing) noexcept {
   auto max_len = peek_root_length();
-  auto json = peek_root_scalar("uint64");
-  uint8_t tmpbuf[20+1+1]{}; // <20 digits> is the longest possible unsigned integer
-  tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
-    return NUMBER_ERROR;
-  }
-  auto result = numberparsing::parse_unsigned_in_string(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("uint64");
-  }
-  return result;
-}
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_int64(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("int64");
-  uint8_t tmpbuf[20+1+1]; // -<19 digits> is the longest possible integer
-  tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
-    return NUMBER_ERROR;
-  }
-
-  auto result = numberparsing::parse_integer(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("int64");
-  }
-  return result;
-}
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_int64_in_string(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("int64");
-  uint8_t tmpbuf[20+1+1]; // -<19 digits> is the longest possible integer
-  tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
-    return NUMBER_ERROR;
-  }
-
-  auto result = numberparsing::parse_integer_in_string(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("int64");
-  }
-  return result;
-}
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("double");
-  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
-  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
-  // number: -0.e-308.
-  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
-  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
-    return NUMBER_ERROR;
-  }
-  auto result = numberparsing::parse_double(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("double");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double_in_string(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("double");
-  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
-  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
-  // number: -0.e-308.
-  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
-  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
-  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
-    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
-    return NUMBER_ERROR;
-  }
-  auto result = numberparsing::parse_double_in_string(tmpbuf);
-  if(result.error() == SUCCESS) {
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("double");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_bool(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("bool");
-  // We have a boolean if we have either "true" or "false" and the next character is either
-  // a structural character or whitespace. We also check that the length is correct:
-  // "true" and "false" are 4 and 5 characters long, respectively.
-  bool value_true = (max_len >= 4 && !atomparsing::str4ncmp(json, "true") &&
-  (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
-  bool value_false = (max_len >= 5 && !atomparsing::str4ncmp(json, "false") &&
-  (max_len == 5 || jsoncharutils::is_structural_or_whitespace(json[5])));
-  if(value_true == false && value_false == false) { return incorrect_type_error("Not a boolean"); }
-  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-  advance_root_scalar("bool");
-  return value_true;
-}
-
-simdjson_inline simdjson_result value_iterator::is_root_null(bool check_trailing) noexcept {
-  auto max_len = peek_root_length();
-  auto json = peek_root_scalar("null");
-  bool result = (max_len >= 4 && !atomparsing::str4ncmp(json, "null") &&
-         (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
-  if(result) { // we have something that looks like a null.
-    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
-    advance_root_scalar("null");
-  } else if (json[0] == 'n') {
-    return incorrect_type_error("Not a null but starts with n");
-  }
-  return result;
-}
-
-simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
-
-  return _json_iter->skip_child(depth());
-}
-
-simdjson_inline value_iterator value_iterator::child() const noexcept {
-  assert_at_child();
-  return { _json_iter, depth()+1, _json_iter->token.position() };
-}
-
-// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
-// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
-// marked non-inline.
-SIMDJSON_PUSH_DISABLE_WARNINGS
-SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
-simdjson_inline bool value_iterator::is_open() const noexcept {
-  return _json_iter->depth() >= depth();
-}
-SIMDJSON_POP_DISABLE_WARNINGS
-
-simdjson_inline bool value_iterator::at_end() const noexcept {
-  return _json_iter->at_end();
-}
-
-simdjson_inline bool value_iterator::at_start() const noexcept {
-  return _json_iter->token.position() == start_position();
-}
-
-simdjson_inline bool value_iterator::at_first_field() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  return _json_iter->token.position() == start_position() + 1;
-}
-
-simdjson_inline void value_iterator::abandon() noexcept {
-  _json_iter->abandon();
-}
-
-simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
-  return _depth;
-}
-simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
-  return _json_iter->error;
-}
-simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
-  return _json_iter->string_buf_loc();
-}
-simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
-  return *_json_iter;
-}
-simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
-  return *_json_iter;
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
-  return _json_iter->peek(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
-  return _json_iter->peek_length(start_position());
-}
-simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
-  return _json_iter->peek_root_length(start_position());
-}
-
-simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return peek_start(); }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  if (!is_at_start()) { return; }
-
-  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
-  assert_at_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
-  logger::log_start_value(*_json_iter, start_position(), depth(), type);
-  // If we're not at the position anymore, we don't want to advance the cursor.
-  const uint8_t *json;
-  if (!is_at_start()) {
-#if SIMDJSON_DEVELOPMENT_CHECKS
-    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
-#endif
-    json = peek_start();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-  } else {
-    assert_at_start();
-    /**
-     * We should be prudent. Let us peek. If it is not the right type, we
-     * return an error. Only once we have determined that we have the right
-     * type are we allowed to advance!
-     */
-    json = _json_iter->peek();
-    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
-    _json_iter->return_current_and_advance();
-  }
-
-
-  return SUCCESS;
-}
-
-
-simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_root();
-  return _json_iter->peek();
-}
-simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return peek_start(); }
-
-  assert_at_non_root_start();
-  return _json_iter->peek();
-}
-
-simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_root();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
-  logger::log_value(*_json_iter, start_position(), depth(), type);
-  if (!is_at_start()) { return; }
-
-  assert_at_non_root_start();
-  _json_iter->return_current_and_advance();
-  _json_iter->ascend_to(depth()-1);
-}
-
-simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
-  logger::log_error(*_json_iter, start_position(), depth(), message);
-  return INCORRECT_TYPE;
-}
-
-simdjson_inline bool value_iterator::is_at_start() const noexcept {
-  return position() == start_position();
-}
-
-simdjson_inline bool value_iterator::is_at_key() const noexcept {
-  // Keys are at the same depth as the object.
-  // Note here that we could be safer and check that we are within an object,
-  // but we do not.
-  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
-}
-
-simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
-  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
-  auto delta = position() - start_position();
-  return delta == 1 || delta == 2;
-}
-
-inline void value_iterator::assert_at_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_container_start() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_next() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-simdjson_inline void value_iterator::move_at_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position);
-}
-
-simdjson_inline void value_iterator::move_at_container_start() noexcept {
-  _json_iter->_depth = _depth;
-  _json_iter->token.set_position(_start_position + 1);
-}
-
-simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_array();
-}
-
-simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
-  if(error()) { return error(); }
-  move_at_container_start();
-  return started_object();
-}
-
-inline void value_iterator::assert_at_child() const noexcept {
-  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
-  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
-  SIMDJSON_ASSUME( _depth > 0 );
-}
-
-inline void value_iterator::assert_at_root() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth == 1 );
-}
-
-inline void value_iterator::assert_at_non_root_start() const noexcept {
-  assert_at_start();
-  SIMDJSON_ASSUME( _depth > 1 );
-}
-
-inline void value_iterator::assert_is_valid() const noexcept {
-  SIMDJSON_ASSUME( _json_iter != nullptr );
-}
-
-simdjson_inline bool value_iterator::is_valid() const noexcept {
-  return _json_iter != nullptr;
-}
-
-simdjson_inline simdjson_result value_iterator::type() const noexcept {
-  switch (*peek_start()) {
-    case '{':
-      return json_type::object;
-    case '[':
-      return json_type::array;
-    case '"':
-      return json_type::string;
-    case 'n':
-      return json_type::null;
-    case 't': case 'f':
-      return json_type::boolean;
-    case '-':
-    case '0': case '1': case '2': case '3': case '4':
-    case '5': case '6': case '7': case '8': case '9':
-      return json_type::number;
-    default:
-      return json_type::unknown;
-  }
-}
-
-simdjson_inline token_position value_iterator::start_position() const noexcept {
-  return _start_position;
-}
-
-simdjson_inline token_position value_iterator::position() const noexcept {
-  return _json_iter->position();
-}
-
-simdjson_inline token_position value_iterator::end_position() const noexcept {
-  return _json_iter->end_position();
-}
-
-simdjson_inline token_position value_iterator::last_position() const noexcept {
-  return _json_iter->last_position();
-}
-
-simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
-  return _json_iter->report_error(error, message);
-}
-
-} // namespace ondemand
-} // namespace lasx
-} // namespace simdjson
-
-namespace simdjson {
-
-simdjson_inline simdjson_result::simdjson_result(lasx::ondemand::value_iterator &&value) noexcept
-    : implementation_simdjson_result_base(std::forward(value)) {}
-simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
-    : implementation_simdjson_result_base(error) {}
-
-} // namespace simdjson
-
-#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
-/* end file simdjson/generic/ondemand/value_iterator-inl.h for lasx */
-
-// JSON builder inline definitions
-/* including simdjson/generic/ondemand/json_string_builder-inl.h for lasx: #include "simdjson/generic/ondemand/json_string_builder-inl.h" */
-/* begin file simdjson/generic/ondemand/json_string_builder-inl.h for lasx */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand
- * directory but we will move it to a builder directory later.
- */
-#include 
-#include 
-#include 
-#ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_INL_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-
-/*
- * Empirically, we have found that an inlined optimization is important for
- * performance. The following macros are not ideal. We should find a better
- * way to inline the code.
- */
-
-#if defined(__SSE2__) || defined(__x86_64__) || defined(__x86_64) ||           \
-    (defined(_M_AMD64) || defined(_M_X64) ||                                   \
-     (defined(_M_IX86_FP) && _M_IX86_FP == 2))
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#define SIMDJSON_EXPERIMENTAL_HAS_SSE2 1
-#endif
-#endif
-
-#if defined(__aarch64__) || defined(_M_ARM64)
-#ifndef SIMDJSON_EXPERIMENTAL_HAS_NEON
-#define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
-#endif
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-#include 
-#endif
-#if SIMDJSON_EXPERIMENTAL_HAS_SSE2
-#include 
-#endif
-
-namespace simdjson {
-namespace lasx {
-namespace builder {
-
-static SIMDJSON_CONSTEXPR_LAMBDA std::array
-    json_quotable_character = {
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-        1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-/**
-
-A possible SWAR implementation of has_json_escapable_byte. It is not used
-because it is slower than the current implementation. It is kept here for
-reference (to show that we tried it).
-
-inline bool has_json_escapable_byte(uint64_t x) {
-  uint64_t is_ascii = 0x8080808080808080ULL & ~x;
-  uint64_t xor2 = x ^ 0x0202020202020202ULL;
-  uint64_t lt32_or_eq34 = xor2 - 0x2121212121212121ULL;
-  uint64_t sub92 = x ^ 0x5C5C5C5C5C5C5C5CULL;
-  uint64_t eq92 = (sub92 - 0x0101010101010101ULL);
-  return ((lt32_or_eq34 | eq92) & is_ascii) != 0;
-}
-
-**/
-
-SIMDJSON_CONSTEXPR_LAMBDA simdjson_inline bool
-simple_needs_escaping(std::string_view v) {
-  for (char c : v) {
-    // a table lookup is faster than a series of comparisons
-    if (json_quotable_character[static_cast(c)]) {
-      return true;
-    }
-  }
-  return false;
-}
-
-#if SIMDJSON_EXPERIMENTAL_HAS_NEON
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  uint8x16_t running = vdupq_n_u8(0);
-  uint8x16_t v34 = vdupq_n_u8(34);
-  uint8x16_t v92 = vdupq_n_u8(92);
-
-  for (; i + 15 < view.size(); i += 16) {
-    uint8x16_t word = vld1q_u8((const uint8_t *)view.data() + i);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  if (i < view.size()) {
-    uint8x16_t word =
-        vld1q_u8((const uint8_t *)view.data() + view.length() - 16);
-    running = vorrq_u8(running, vceqq_u8(word, v34));
-    running = vorrq_u8(running, vceqq_u8(word, v92));
-    running = vorrq_u8(running, vcltq_u8(word, vdupq_n_u8(32)));
-  }
-  return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0;
-}
-#elif SIMDJSON_EXPERIMENTAL_HAS_SSE2
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  if (view.size() < 16) {
-    return simple_needs_escaping(view);
-  }
-  size_t i = 0;
-  __m128i running = _mm_setzero_si128();
-  for (; i + 15 < view.size(); i += 16) {
-
-    __m128i word =
-        _mm_loadu_si128(reinterpret_cast(view.data() + i));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  if (i < view.size()) {
-    __m128i word = _mm_loadu_si128(
-        reinterpret_cast(view.data() + view.length() - 16));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(34)));
-    running = _mm_or_si128(running, _mm_cmpeq_epi8(word, _mm_set1_epi8(92)));
-    running = _mm_or_si128(
-        running, _mm_cmpeq_epi8(_mm_subs_epu8(word, _mm_set1_epi8(31)),
-                                _mm_setzero_si128()));
-  }
-  return _mm_movemask_epi8(running) != 0;
-}
-#else
-simdjson_inline bool fast_needs_escaping(std::string_view view) {
-  return simple_needs_escaping(view);
-}
-#endif
-
-SIMDJSON_CONSTEXPR_LAMBDA inline size_t
-find_next_json_quotable_character(const std::string_view view,
-                                  size_t location) noexcept {
-
-  for (auto pos = view.begin() + location; pos != view.end(); ++pos) {
-    if (json_quotable_character[static_cast(*pos)]) {
-      return pos - view.begin();
-    }
-  }
-  return size_t(view.size());
-}
-
-SIMDJSON_CONSTEXPR_LAMBDA static std::string_view control_chars[] = {
-    "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006",
-    "\\u0007", "\\b",     "\\t",     "\\n",     "\\u000b", "\\f",     "\\r",
-    "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014",
-    "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b",
-    "\\u001c", "\\u001d", "\\u001e", "\\u001f"};
-
-// All Unicode characters may be placed within the quotation marks, except for
-// the characters that MUST be escaped: quotation mark, reverse solidus, and the
-// control characters (U+0000 through U+001F). There are two-character sequence
-// escape representations of some popular characters:
-// \", \\, \b, \f, \n, \r, \t.
-SIMDJSON_CONSTEXPR_LAMBDA void escape_json_char(char c, char *&out) {
-  if (c == '"') {
-    memcpy(out, "\\\"", 2);
-    out += 2;
-  } else if (c == '\\') {
-    memcpy(out, "\\\\", 2);
-    out += 2;
-  } else {
-    std::string_view v = control_chars[uint8_t(c)];
-    memcpy(out, v.data(), v.size());
-    out += v.size();
-  }
-}
-
-inline size_t write_string_escaped(const std::string_view input, char *out) {
-  size_t mysize = input.size();
-  if (!fast_needs_escaping(input)) { // fast path!
-    memcpy(out, input.data(), input.size());
-    return input.size();
-  }
-  const char *const initout = out;
-  size_t location = find_next_json_quotable_character(input, 0);
-  memcpy(out, input.data(), location);
-  out += location;
-  escape_json_char(input[location], out);
-  location += 1;
-  while (location < mysize) {
-    size_t newlocation = find_next_json_quotable_character(input, location);
-    memcpy(out, input.data() + location, newlocation - location);
-    out += newlocation - location;
-    location = newlocation;
-    if (location == mysize) {
-      break;
-    }
-    escape_json_char(input[location], out);
-    location += 1;
-  }
-  return out - initout;
-}
-
-simdjson_inline string_builder::string_builder(size_t initial_capacity)
-    : buffer(new(std::nothrow) char[initial_capacity]), position(0),
-      capacity(buffer.get() != nullptr ? initial_capacity : 0),
-      is_valid(buffer.get() != nullptr) {}
-
-simdjson_inline bool string_builder::capacity_check(size_t upcoming_bytes) {
-  // We use the convention that when is_valid is false, then the capacity and
-  // the position are 0.
-  // Most of the time, this function will return true.
-  if (simdjson_likely(upcoming_bytes <= capacity - position)) {
-    return true;
-  }
-  // check for overflow, most of the time there is no overflow
-  if (simdjson_likely(position + upcoming_bytes < position)) {
-    return false;
-  }
-  // We will rarely get here.
-  grow_buffer((std::max)(capacity * 2, position + upcoming_bytes));
-  // If the buffer allocation failed, we set is_valid to false.
-  return is_valid;
-}
-
-simdjson_inline void string_builder::grow_buffer(size_t desired_capacity) {
-  if (!is_valid) {
-    return;
-  }
-  std::unique_ptr new_buffer(new (std::nothrow) char[desired_capacity]);
-  if (new_buffer.get() == nullptr) {
-    set_valid(false);
-    return;
-  }
-  std::memcpy(new_buffer.get(), buffer.get(), position);
-  buffer.swap(new_buffer);
-  capacity = desired_capacity;
-}
-
-simdjson_inline void string_builder::set_valid(bool valid) noexcept {
-  if (!valid) {
-    is_valid = false;
-    capacity = 0;
-    position = 0;
-    buffer.reset();
-  } else {
-    is_valid = true;
-  }
-}
-
-simdjson_inline size_t string_builder::size() const noexcept {
-  return position;
-}
-
-simdjson_inline void string_builder::append(char c) noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = c;
-  }
-}
-
-simdjson_inline void string_builder::append_null() noexcept {
-  constexpr char null_literal[] = "null";
-  constexpr size_t null_len = sizeof(null_literal) - 1;
-  if (capacity_check(null_len)) {
-    std::memcpy(buffer.get() + position, null_literal, null_len);
-    position += null_len;
-  }
-}
-
-simdjson_inline void string_builder::clear() noexcept {
-  position = 0;
-  // if it was invalid, we should try to repair it
-  if (!is_valid) {
-    capacity = 0;
-    buffer.reset();
-    is_valid = true;
-  }
-}
-
-namespace internal {
-
-template ::value>::type>
-simdjson_really_inline int int_log2(number_type x) {
-  return 63 - leading_zeroes(uint64_t(x) | 1);
-}
-
-simdjson_really_inline int fast_digit_count_32(uint32_t x) {
-  static uint64_t table[] = {
-      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
-      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
-      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
-      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
-      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
-      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
-      42949672960, 42949672960};
-  return uint32_t((x + table[int_log2(x)]) >> 32);
-}
-
-simdjson_really_inline int fast_digit_count_64(uint64_t x) {
-  static uint64_t table[] = {9,
-                             99,
-                             999,
-                             9999,
-                             99999,
-                             999999,
-                             9999999,
-                             99999999,
-                             999999999,
-                             9999999999,
-                             99999999999,
-                             999999999999,
-                             9999999999999,
-                             99999999999999,
-                             999999999999999ULL,
-                             9999999999999999ULL,
-                             99999999999999999ULL,
-                             999999999999999999ULL,
-                             9999999999999999999ULL};
-  int y = (19 * int_log2(x) >> 6);
-  y += x > table[y];
-  return y + 1;
-}
-
-template ::value>::type>
-simdjson_really_inline size_t digit_count(number_type v) noexcept {
-  static_assert(sizeof(number_type) == 8 || sizeof(number_type) == 4 ||
-                    sizeof(number_type) == 2 || sizeof(number_type) == 1,
-                "We only support 8-bit, 16-bit, 32-bit and 64-bit numbers");
-  SIMDJSON_IF_CONSTEXPR(sizeof(number_type) <= 4) {
-    return fast_digit_count_32(static_cast(v));
-  }
-  else {
-    return fast_digit_count_64(static_cast(v));
-  }
-}
-static const char decimal_table[200] = {
-    0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35,
-    0x30, 0x36, 0x30, 0x37, 0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31,
-    0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37,
-    0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33,
-    0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39,
-    0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35,
-    0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31,
-    0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37,
-    0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33,
-    0x35, 0x34, 0x35, 0x35, 0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39,
-    0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, 0x36, 0x34, 0x36, 0x35,
-    0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31,
-    0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37,
-    0x37, 0x38, 0x37, 0x39, 0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33,
-    0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, 0x38, 0x39,
-    0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35,
-    0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39,
-};
-} // namespace internal
-
-template 
-simdjson_inline void string_builder::append(number_type v) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_integral::value ||
-                    std::is_floating_point::value,
-                "Unsupported number type");
-  // If C++17 is available, we can 'if constexpr' here.
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    if (v) {
-      constexpr char true_literal[] = "true";
-      constexpr size_t true_len = sizeof(true_literal) - 1;
-      if (capacity_check(true_len)) {
-        std::memcpy(buffer.get() + position, true_literal, true_len);
-        position += true_len;
-      }
-    } else {
-      constexpr char false_literal[] = "false";
-      constexpr size_t false_len = sizeof(false_literal) - 1;
-      if (capacity_check(false_len)) {
-        std::memcpy(buffer.get() + position, false_literal, false_len);
-        position += false_len;
-      }
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_unsigned::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      unsigned_type pv = static_cast(v);
-      size_t dc = internal::digit_count(pv);
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_integral::value) {
-    constexpr size_t max_number_size = 20;
-    if (capacity_check(max_number_size)) {
-      using unsigned_type = typename std::make_unsigned::type;
-      bool negative = v < 0;
-      unsigned_type pv = static_cast(v);
-      if (negative) {
-        pv = 0 - pv; // the 0 is for Microsoft
-      }
-      size_t dc = internal::digit_count(pv);
-      // by always writing the minus sign, we avoid the branch.
-      buffer.get()[position] = '-';
-      position += negative ? 1 : 0;
-      char *write_pointer = buffer.get() + position + dc - 1;
-      while (pv >= 100) {
-        memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
-        write_pointer -= 2;
-        pv /= 100;
-      }
-      if (pv >= 10) {
-        *write_pointer-- = char('0' + (pv % 10));
-        pv /= 10;
-      }
-      *write_pointer = char('0' + pv);
-      position += dc;
-    }
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_floating_point::value) {
-    constexpr size_t max_number_size = 24;
-    if (capacity_check(max_number_size)) {
-      // We could specialize for float.
-      char *end = simdjson::internal::to_chars(buffer.get() + position, nullptr,
-                                               double(v));
-      position = end - buffer.get();
-    }
+  auto json = peek_root_scalar("uint64");
+  uint8_t tmpbuf[20+1+1]{}; // <20 digits> is the longest possible unsigned integer
+  tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_unsigned_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("uint64");
   }
+  return result;
 }
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_int64(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("int64");
+  uint8_t tmpbuf[20+1+1]; // -<19 digits> is the longest possible integer
+  tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
+    return NUMBER_ERROR;
+  }
 
-simdjson_inline void
-string_builder::escape_and_append(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(6 * input.size())) {
-    position += write_string_escaped(input, buffer.get() + position);
+  auto result = numberparsing::parse_integer(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("int64");
   }
+  return result;
 }
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_int64_in_string(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("int64");
+  uint8_t tmpbuf[20+1+1]; // -<19 digits> is the longest possible integer
+  tmpbuf[20+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 20+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 20 characters");
+    return NUMBER_ERROR;
+  }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(std::string_view input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * input.size())) {
-    buffer.get()[position++] = '"';
-    position += write_string_escaped(input, buffer.get() + position);
-    buffer.get()[position++] = '"';
+  auto result = numberparsing::parse_integer_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("int64");
   }
+  return result;
 }
-
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(char input) noexcept {
-  // escaping might turn a control character into \x00xx so 6 characters.
-  if (capacity_check(2 + 6 * 1)) {
-    buffer.get()[position++] = '"';
-    std::string_view cinput(&input, 1);
-    position += write_string_escaped(cinput, buffer.get() + position);
-    buffer.get()[position++] = '"';
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
   }
+  auto result = numberparsing::parse_double(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
+  }
+  return result;
 }
 
-simdjson_inline void
-string_builder::escape_and_append_with_quotes(const char *input) noexcept {
-  std::string_view cinput(input);
-  escape_and_append_with_quotes(cinput);
-}
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void string_builder::escape_and_append_with_quotes() noexcept {
-  escape_and_append_with_quotes(constevalutil::string_constant::value);
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_double_in_string(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("double");
+  // Per https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/,
+  // 1074 is the maximum number of significant fractional digits. Add 8 more digits for the biggest
+  // number: -0.e-308.
+  uint8_t tmpbuf[1074+8+1+1]; // +1 for null termination.
+  tmpbuf[1074+8+1] = '\0'; // make sure that buffer is always null terminated.
+  if (!_json_iter->copy_to_buffer(json, max_len, tmpbuf, 1074+8+1)) {
+    logger::log_error(*_json_iter, start_position(), depth(), "Root number more than 1082 characters");
+    return NUMBER_ERROR;
+  }
+  auto result = numberparsing::parse_double_in_string(tmpbuf);
+  if(result.error() == SUCCESS) {
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("double");
+  }
+  return result;
 }
-#endif
 
-simdjson_inline void string_builder::append_raw(const char *c) noexcept {
-  size_t len = std::strlen(c);
-  append_raw(c, len);
+simdjson_warn_unused simdjson_inline simdjson_result value_iterator::get_root_bool(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("bool");
+  // We have a boolean if we have either "true" or "false" and the next character is either
+  // a structural character or whitespace. We also check that the length is correct:
+  // "true" and "false" are 4 and 5 characters long, respectively.
+  bool value_true = (max_len >= 4 && !atomparsing::str4ncmp(json, "true") &&
+  (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  bool value_false = (max_len >= 5 && !atomparsing::str4ncmp(json, "false") &&
+  (max_len == 5 || jsoncharutils::is_structural_or_whitespace(json[5])));
+  if(value_true == false && value_false == false) { return incorrect_type_error("Not a boolean"); }
+  if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+  advance_root_scalar("bool");
+  return value_true;
 }
 
-simdjson_inline void
-string_builder::append_raw(std::string_view input) noexcept {
-  if (capacity_check(input.size())) {
-    std::memcpy(buffer.get() + position, input.data(), input.size());
-    position += input.size();
+simdjson_inline simdjson_result value_iterator::is_root_null(bool check_trailing) noexcept {
+  auto max_len = peek_root_length();
+  auto json = peek_root_scalar("null");
+  bool result = (max_len >= 4 && !atomparsing::str4ncmp(json, "null") &&
+         (max_len == 4 || jsoncharutils::is_structural_or_whitespace(json[4])));
+  if(result) { // we have something that looks like a null.
+    if (check_trailing && !_json_iter->is_single_token()) { return TRAILING_CONTENT; }
+    advance_root_scalar("null");
+  } else if (json[0] == 'n') {
+    return incorrect_type_error("Not a null but starts with n");
   }
+  return result;
 }
 
-simdjson_inline void string_builder::append_raw(const char *str,
-                                                size_t len) noexcept {
-  if (capacity_check(len)) {
-    std::memcpy(buffer.get() + position, str, len);
-    position += len;
-  }
+simdjson_warn_unused simdjson_inline error_code value_iterator::skip_child() noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth >= _depth );
+
+  return _json_iter->skip_child(depth());
 }
-#if SIMDJSON_SUPPORTS_CONCEPTS
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-simdjson_inline void string_builder::append(const T &opt) {
-  if (opt) {
-    append(*opt);
-  } else {
-    append_null();
-  }
+
+simdjson_inline value_iterator value_iterator::child() const noexcept {
+  assert_at_child();
+  return { _json_iter, depth()+1, _json_iter->token.position() };
 }
 
-template 
-  requires(require_custom_serialization)
-simdjson_inline void string_builder::append(T &&val) {
-  serialize(*this, std::forward(val));
+// GCC 7 warns when the first line of this function is inlined away into oblivion due to the caller
+// relating depth and iterator depth, which is a desired effect. It does not happen if is_open is
+// marked non-inline.
+SIMDJSON_PUSH_DISABLE_WARNINGS
+SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
+simdjson_inline bool value_iterator::is_open() const noexcept {
+  return _json_iter->depth() >= depth();
 }
+SIMDJSON_POP_DISABLE_WARNINGS
 
-template 
-  requires(std::is_convertible::value ||
-           std::is_same::value)
-simdjson_inline void string_builder::append(const T &value) {
-  escape_and_append_with_quotes(value);
+simdjson_inline bool value_iterator::at_end() const noexcept {
+  return _json_iter->at_end();
 }
-#endif
 
-#if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS
-// Support for range-based appending (std::ranges::view, etc.)
-template 
-  requires(!std::is_convertible::value && !require_custom_serialization)
-simdjson_inline void string_builder::append(const R &range) noexcept {
-  auto it = std::ranges::begin(range);
-  auto end = std::ranges::end(range);
-  if constexpr (concepts::is_pair>) {
-    start_object();
+simdjson_inline bool value_iterator::at_start() const noexcept {
+  return _json_iter->token.position() == start_position();
+}
 
-    if (it == end) {
-      end_object();
-      return; // Handle empty range
-    }
-    // Append first item without leading comma
-    append_key_value(it->first, it->second);
-    ++it;
+simdjson_inline bool value_iterator::at_first_field() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  return _json_iter->token.position() == start_position() + 1;
+}
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append_key_value(it->first, it->second);
-    }
-    end_object();
-  } else {
-    start_array();
-    if (it == end) {
-      end_array();
-      return; // Handle empty range
-    }
+simdjson_inline void value_iterator::abandon() noexcept {
+  _json_iter->abandon();
+}
 
-    // Append first item without leading comma
-    append(*it);
-    ++it;
+simdjson_warn_unused simdjson_inline depth_t value_iterator::depth() const noexcept {
+  return _depth;
+}
+simdjson_warn_unused simdjson_inline error_code value_iterator::error() const noexcept {
+  return _json_iter->error;
+}
+simdjson_warn_unused simdjson_inline uint8_t *&value_iterator::string_buf_loc() noexcept {
+  return _json_iter->string_buf_loc();
+}
+simdjson_warn_unused simdjson_inline const json_iterator &value_iterator::json_iter() const noexcept {
+  return *_json_iter;
+}
+simdjson_warn_unused simdjson_inline json_iterator &value_iterator::json_iter() noexcept {
+  return *_json_iter;
+}
 
-    // Append remaining items with preceding commas
-    for (; it != end; ++it) {
-      append_comma();
-      append(*it);
-    }
-    end_array();
-  }
+simdjson_inline const uint8_t *value_iterator::peek_start() const noexcept {
+  return _json_iter->peek(start_position());
+}
+simdjson_inline uint32_t value_iterator::peek_start_length() const noexcept {
+  return _json_iter->peek_length(start_position());
+}
+simdjson_inline uint32_t value_iterator::peek_root_length() const noexcept {
+  return _json_iter->peek_root_length(start_position());
 }
 
-#endif
+simdjson_inline const uint8_t *value_iterator::peek_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return peek_start(); }
 
-#if SIMDJSON_EXCEPTIONS
-simdjson_inline string_builder::operator std::string() const noexcept(false) {
-  return std::string(operator std::string_view());
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  return _json_iter->peek();
 }
 
-simdjson_inline string_builder::operator std::string_view() const
-    noexcept(false) simdjson_lifetime_bound {
-  return view();
-}
-#endif
+simdjson_inline void value_iterator::advance_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  if (!is_at_start()) { return; }
 
-simdjson_inline simdjson_result
-string_builder::view() const noexcept {
-  if (!is_valid) {
-    return simdjson::OUT_OF_CAPACITY;
-  }
-  return std::string_view(buffer.get(), position);
+  // Get the JSON and advance the cursor, decreasing depth to signify that we have retrieved the value.
+  assert_at_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
 
-simdjson_inline simdjson_result string_builder::c_str() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position] = '\0';
-    return buffer.get();
+simdjson_warn_unused simdjson_inline error_code value_iterator::start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept {
+  logger::log_start_value(*_json_iter, start_position(), depth(), type);
+  // If we're not at the position anymore, we don't want to advance the cursor.
+  const uint8_t *json;
+  if (!is_at_start()) {
+#if SIMDJSON_DEVELOPMENT_CHECKS
+    if (!is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
+#endif
+    json = peek_start();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+  } else {
+    assert_at_start();
+    /**
+     * We should be prudent. Let us peek. If it is not the right type, we
+     * return an error. Only once we have determined that we have the right
+     * type are we allowed to advance!
+     */
+    json = _json_iter->peek();
+    if (*json != start_char) { return incorrect_type_error(incorrect_type_message); }
+    _json_iter->return_current_and_advance();
   }
-  return simdjson::OUT_OF_CAPACITY;
-}
 
-simdjson_inline bool string_builder::validate_unicode() const noexcept {
-  return simdjson::validate_utf8(buffer.get(), position);
+
+  return SUCCESS;
 }
 
-simdjson_inline void string_builder::start_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '{';
-  }
+
+simdjson_inline const uint8_t *value_iterator::peek_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
+
+  assert_at_root();
+  return _json_iter->peek();
 }
+simdjson_inline const uint8_t *value_iterator::peek_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return peek_start(); }
 
-simdjson_inline void string_builder::end_object() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '}';
-  }
+  assert_at_non_root_start();
+  return _json_iter->peek();
 }
 
-simdjson_inline void string_builder::start_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = '[';
-  }
+simdjson_inline void value_iterator::advance_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
+
+  assert_at_root();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
+simdjson_inline void value_iterator::advance_non_root_scalar(const char *type) noexcept {
+  logger::log_value(*_json_iter, start_position(), depth(), type);
+  if (!is_at_start()) { return; }
 
-simdjson_inline void string_builder::end_array() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ']';
-  }
+  assert_at_non_root_start();
+  _json_iter->return_current_and_advance();
+  _json_iter->ascend_to(depth()-1);
 }
 
-simdjson_inline void string_builder::append_comma() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ',';
-  }
+simdjson_inline error_code value_iterator::incorrect_type_error(const char *message) const noexcept {
+  logger::log_error(*_json_iter, start_position(), depth(), message);
+  return INCORRECT_TYPE;
 }
 
-simdjson_inline void string_builder::append_colon() noexcept {
-  if (capacity_check(1)) {
-    buffer.get()[position++] = ':';
-  }
+simdjson_inline bool value_iterator::is_at_start() const noexcept {
+  return position() == start_position();
 }
 
-template 
-simdjson_inline void
-string_builder::append_key_value(key_type key, value_type value) noexcept {
-  static_assert(std::is_same::value ||
-                    std::is_convertible::value,
-                "Unsupported key type");
-  escape_and_append_with_quotes(key);
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+simdjson_inline bool value_iterator::is_at_key() const noexcept {
+  // Keys are at the same depth as the object.
+  // Note here that we could be safer and check that we are within an object,
+  // but we do not.
+  //
+  // As long as we are at the object's depth, in a valid document,
+  // we will only ever be at { , : or the actual string key: ".
+  return _depth == _json_iter->_depth && *_json_iter->peek() == '"';
 }
 
-#if SIMDJSON_SUPPORTS_CONCEPTS
-template 
-simdjson_inline void
-string_builder::append_key_value(value_type value) noexcept {
-  escape_and_append_with_quotes();
-  append_colon();
-  SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    append_null();
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(
-      std::is_convertible::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else SIMDJSON_IF_CONSTEXPR(std::is_same::value) {
-    escape_and_append_with_quotes(value);
-  }
-  else {
-    append(value);
-  }
+simdjson_inline bool value_iterator::is_at_iterator_start() const noexcept {
+  // We can legitimately be either at the first value ([1]), or after the array if it's empty ([]).
+  auto delta = position() - start_position();
+  return delta == 1 || delta == 2;
 }
-#endif
 
-} // namespace builder
-} // namespace lasx
-} // namespace simdjson
+inline void value_iterator::assert_at_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-#endif // SIMDJSON_GENERIC_STRING_BUILDER_INL_H
-/* end file simdjson/generic/ondemand/json_string_builder-inl.h for lasx */
-/* including simdjson/generic/ondemand/json_builder.h for lasx: #include "simdjson/generic/ondemand/json_builder.h" */
-/* begin file simdjson/generic/ondemand/json_builder.h for lasx */
-/**
- * This file is part of the builder API. It is temporarily in the ondemand directory
- * but we will move it to a builder directory later.
- */
-#ifndef SIMDJSON_GENERIC_BUILDER_H
+inline void value_iterator::assert_at_container_start() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position == _start_position + 1 );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_STRING_BUILDER_H */
-/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_string_builder.h" */
-/* amalgamation skipped (editor-only): #include "simdjson/concepts.h" */
-/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
-#if SIMDJSON_STATIC_REFLECTION
+inline void value_iterator::assert_at_next() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth );
+  SIMDJSON_ASSUME( _depth > 0 );
+}
 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-// #include  // for std::define_static_string - header not available yet
+simdjson_inline void value_iterator::move_at_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position);
+}
 
-namespace simdjson {
-namespace lasx {
-namespace builder {
+simdjson_inline void value_iterator::move_at_container_start() noexcept {
+  _json_iter->_depth = _depth;
+  _json_iter->token.set_position(_start_position + 1);
+}
 
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  auto it = t.begin();
-  auto end = t.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
-  }
-  b.append(']');
+simdjson_inline simdjson_result value_iterator::reset_array() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_array();
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-constexpr void atom(string_builder &b, const T &t) {
-  b.escape_and_append_with_quotes(t);
+simdjson_inline simdjson_result value_iterator::reset_object() noexcept {
+  if(error()) { return error(); }
+  move_at_container_start();
+  return started_object();
 }
 
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &m) {
-  if (m.empty()) {
-    b.append_raw("{}");
-    return;
-  }
-  b.append('{');
-  bool first = true;
-  for (const auto& [key, value] : m) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    // Keys must be convertible to string_view per the concept
-    b.escape_and_append_with_quotes(key);
-    b.append(':');
-    atom(b, value);
-  }
-  b.append('}');
+inline void value_iterator::assert_at_child() const noexcept {
+  SIMDJSON_ASSUME( _json_iter->token._position > _start_position );
+  SIMDJSON_ASSUME( _json_iter->_depth == _depth + 1 );
+  SIMDJSON_ASSUME( _depth > 0 );
 }
 
+inline void value_iterator::assert_at_root() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth == 1 );
+}
 
-template::value && !std::is_same_v>::type>
-constexpr void atom(string_builder &b, const number_type t) {
-  b.append(t);
+inline void value_iterator::assert_at_non_root_start() const noexcept {
+  assert_at_start();
+  SIMDJSON_ASSUME( _depth > 1 );
 }
 
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &t) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, t.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline void value_iterator::assert_is_valid() const noexcept {
+  SIMDJSON_ASSUME( _json_iter != nullptr );
 }
 
-// Support for optional types (std::optional, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &opt) {
-  if (opt) {
-    atom(b, opt.value());
-  } else {
-    b.append_raw("null");
-  }
+simdjson_inline bool value_iterator::is_valid() const noexcept {
+  return _json_iter != nullptr;
 }
 
-// Support for smart pointers (std::unique_ptr, std::shared_ptr, etc.)
-template 
-  requires(!require_custom_serialization)
-constexpr void atom(string_builder &b, const T &ptr) {
-  if (ptr) {
-    atom(b, *ptr);
-  } else {
-    b.append_raw("null");
+simdjson_inline simdjson_result value_iterator::type() const noexcept {
+  switch (*peek_start()) {
+    case '{':
+      return json_type::object;
+    case '[':
+      return json_type::array;
+    case '"':
+      return json_type::string;
+    case 'n':
+      return json_type::null;
+    case 't': case 'f':
+      return json_type::boolean;
+    case '-':
+    case '0': case '1': case '2': case '3': case '4':
+    case '5': case '6': case '7': case '8': case '9':
+      return json_type::number;
+    default:
+      return json_type::unknown;
   }
 }
 
-// Support for enums - serialize as string representation using expand approach from P2996R12
-template 
-  requires(std::is_enum_v && !require_custom_serialization)
-void atom(string_builder &b, const T &e) {
-#if SIMDJSON_STATIC_REFLECTION
-  constexpr auto enumerators = std::define_static_array(std::meta::enumerators_of(^^T));
-  template for (constexpr auto enum_val : enumerators) {
-    constexpr auto enum_str = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(enum_val)));
-    if (e == [:enum_val:]) {
-      b.append_raw(enum_str);
-      return;
-    }
-  };
-  // Fallback to integer if enum value not found
-  atom(b, static_cast>(e));
-#else
-  // Fallback: serialize as integer if reflection not available
-  atom(b, static_cast>(e));
-#endif
+simdjson_inline token_position value_iterator::start_position() const noexcept {
+  return _start_position;
 }
 
-// Support for appendable containers that don't have operator[] (sets, etc.)
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-constexpr void atom(string_builder &b, const T &container) {
-  if (container.empty()) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  bool first = true;
-  for (const auto& item : container) {
-    if (!first) {
-      b.append(',');
-    }
-    first = false;
-    atom(b, item);
-  }
-  b.append(']');
+simdjson_inline token_position value_iterator::position() const noexcept {
+  return _json_iter->position();
 }
 
-// append functions that delegate to atom functions for primitive types
-template 
-  requires(std::is_arithmetic_v && !std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::end_position() const noexcept {
+  return _json_iter->end_position();
 }
 
-template 
-  requires(std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v ||
-           std::is_same_v)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline token_position value_iterator::last_position() const noexcept {
+  return _json_iter->last_position();
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+simdjson_inline error_code value_iterator::report_error(error_code error, const char *message) noexcept {
+  return _json_iter->report_error(error, message);
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
-}
+} // namespace ondemand
+} // namespace rvv_vls
+} // namespace simdjson
 
-template 
-  requires(!concepts::container_but_not_string && !concepts::string_view_keyed_map &&
-           !concepts::optional_type && !concepts::smart_pointer &&
-           !std::is_same_v &&
-           !std::is_same_v && !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+namespace simdjson {
+
+simdjson_inline simdjson_result::simdjson_result(rvv_vls::ondemand::value_iterator &&value) noexcept
+    : implementation_simdjson_result_base(std::forward(value)) {}
+simdjson_inline simdjson_result::simdjson_result(error_code error) noexcept
+    : implementation_simdjson_result_base(error) {}
+
+} // namespace simdjson
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
+/* end file simdjson/generic/ondemand/value_iterator-inl.h for rvv_vls */
+/* including simdjson/generic/ondemand/serialization-inl.h for rvv_vls: #include "simdjson/generic/ondemand/serialization-inl.h" */
+/* begin file simdjson/generic/ondemand/serialization-inl.h for rvv_vls */
+#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+
+/* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
+/* amalgamation skipped (editor-only): #define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/array.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/document-inl.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/json_type.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/object.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/serialization.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/ondemand/value.h" */
+/* amalgamation skipped (editor-only): #if SIMDJSON_STATIC_REFLECTION */
+/* amalgamation skipped (editor-only): #include "simdjson/generic/builder/json_builder.h" */
+/* amalgamation skipped (editor-only): #endif */
+/* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
+
+namespace simdjson {
+
+inline std::string_view trim(const std::string_view str) noexcept {
+  // We can almost surely do better by rolling our own find_first_not_of function.
+  size_t first = str.find_first_not_of(" \t\n\r");
+  // If we have the empty string (just white space), then no trimming is possible, and
+  // we return the empty string_view.
+  if (std::string_view::npos == first) { return std::string_view(); }
+  size_t last = str.find_last_not_of(" \t\n\r");
+  return str.substr(first, (last - first + 1));
 }
 
-template 
-  requires(!require_custom_serialization)
-void append(string_builder &b, const T &t) {
-  atom(b, t);
+
+inline simdjson_result to_json_string(rvv_vls::ondemand::document& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// works for struct
-template 
-  requires(std::is_class_v && !concepts::container_but_not_string &&
-           !concepts::string_view_keyed_map &&
-           !concepts::optional_type &&
-           !concepts::smart_pointer &&
-           !concepts::appendable_containers &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v &&
-           !std::is_same_v && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  int i = 0;
-  b.append('{');
-  template for (constexpr auto dm : std::define_static_array(std::meta::nonstatic_data_members_of(^^Z, std::meta::access_context::unchecked()))) {
-    if (i != 0)
-      b.append(',');
-    constexpr auto key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(dm)));
-    b.append_raw(key);
-    b.append(':');
-    atom(b, z.[:dm:]);
-    i++;
-  };
-  b.append('}');
+inline simdjson_result to_json_string(rvv_vls::ondemand::document_reference& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-// works for container that have begin() and end() iterators
-template 
-  requires(concepts::container_but_not_string && !require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  auto it = z.begin();
-  auto end = z.end();
-  if (it == end) {
-    b.append_raw("[]");
-    return;
-  }
-  b.append('[');
-  atom(b, *it);
-  ++it;
-  for (; it != end; ++it) {
-    b.append(',');
-    atom(b, *it);
+inline simdjson_result to_json_string(rvv_vls::ondemand::value& x) noexcept {
+  /**
+   * If we somehow receive a value that has already been consumed,
+   * then the following code could be in trouble. E.g., we create
+   * an array as needed, but if an array was already created, then
+   * it could be bad.
+   */
+  using namespace rvv_vls::ondemand;
+  rvv_vls::ondemand::json_type t;
+  auto error = x.type().get(t);
+  if(error != SUCCESS) { return error; }
+  switch (t)
+  {
+    case json_type::array:
+    {
+      rvv_vls::ondemand::array array;
+      error = x.get_array().get(array);
+      if(error) { return error; }
+      return to_json_string(array);
+    }
+    case json_type::object:
+    {
+      rvv_vls::ondemand::object object;
+      error = x.get_object().get(object);
+      if(error) { return error; }
+      return to_json_string(object);
+    }
+    default:
+      return trim(x.raw_json_token());
   }
-  b.append(']');
 }
 
-template 
-  requires (require_custom_serialization)
-void append(string_builder &b, const Z &z) {
-  b.append(z);
+inline simdjson_result to_json_string(rvv_vls::ondemand::object& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-
-template 
-simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline simdjson_result to_json_string(rvv_vls::ondemand::array& x) noexcept {
+  std::string_view v;
+  auto error = x.raw_json().get(v);
+  if(error) {return error; }
+  return trim(v);
 }
 
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-template 
-string_builder& operator<<(string_builder& b, const Z& z) {
-  append(b, z);
-  return b;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
 }
 
-// extract_from: Serialize only specific fields from a struct to JSON
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-void extract_from(string_builder &b, const T &obj) {
-  // Helper to check if a field name matches any of the requested fields
-  auto should_extract = [](std::string_view field_name) constexpr -> bool {
-    return ((FieldNames.view() == field_name) || ...);
-  };
-
-  b.append('{');
-  bool first = true;
-
-  // Iterate through all members of T using reflection
-  template for (constexpr auto mem : std::define_static_array(
-      std::meta::nonstatic_data_members_of(^^T, std::meta::access_context::unchecked()))) {
-
-    if constexpr (std::meta::is_public(mem)) {
-      constexpr std::string_view key = std::define_static_string(std::meta::identifier_of(mem));
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-      // Only serialize this field if it's in our list of requested fields
-      if constexpr (should_extract(key)) {
-        if (!first) {
-          b.append(',');
-        }
-        first = false;
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
 
-        // Serialize the key
-        constexpr auto quoted_key = std::define_static_string(constevalutil::consteval_to_quoted_escaped(std::meta::identifier_of(mem)));
-        b.append_raw(quoted_key);
-        b.append(':');
+inline simdjson_result to_json_string(simdjson_result x) {
+  if (x.error()) { return x.error(); }
+  return to_json_string(x.value_unsafe());
+}
+} // namespace simdjson
 
-        // Serialize the value
-        atom(b, obj.[:mem:]);
-      }
-    }
-  };
+namespace simdjson { namespace rvv_vls { namespace ondemand {
 
-  b.append('}');
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::rvv_vls::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) {
-  string_builder b(initial_capacity);
-  extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::rvv_vls::ondemand::value x) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(x).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace builder
-} // namespace lasx
-// Alias the function template to 'to' in the global namespace
-template 
-simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  lasx::builder::string_builder b(initial_capacity);
-  lasx::builder::append(b, z);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::rvv_vls::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
 }
-template 
-simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  lasx::builder::string_builder b(initial_capacity);
-  lasx::builder::append(b, z);
-  std::string_view view;
-  if(auto e = b.view().get(view); e) { return e; }
-  s.assign(view);
-  return SUCCESS;
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
 }
-// Global namespace function for extract_from
-template
-  requires(std::is_class_v && (sizeof...(FieldNames) > 0))
-simdjson_warn_unused simdjson_result extract_from(const T &obj, size_t initial_capacity = lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) {
-  lasx::builder::string_builder b(initial_capacity);
-  lasx::builder::extract_from(b, obj);
-  std::string_view s;
-  if(auto e = b.view().get(s); e) { return e; }
-  return std::string(s);
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::rvv_vls::ondemand::array value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
 }
+#endif
 
-} // namespace simdjson
-
-#endif // SIMDJSON_STATIC_REFLECTION
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::rvv_vls::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::rvv_vls::ondemand::document_reference& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result&& x) {
+  if (x.error()) { throw simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::rvv_vls::ondemand::document& value)  {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
+#endif
 
+#if SIMDJSON_EXCEPTIONS
+inline std::ostream& operator<<(std::ostream& out, simdjson::rvv_vls::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    throw simdjson::simdjson_error(error);
+  }
+}
+inline std::ostream& operator<<(std::ostream& out,  simdjson::simdjson_result x) {
+  if (x.error()) { throw  simdjson::simdjson_error(x.error()); }
+  return (out << x.value());
+}
+#else
+inline std::ostream& operator<<(std::ostream& out, simdjson::rvv_vls::ondemand::object value) {
+  std::string_view v;
+  auto error = simdjson::to_json_string(value).get(v);
+  if(error == simdjson::SUCCESS) {
+    return (out << v);
+  } else {
+    return (out << error);
+  }
+}
 #endif
-/* end file simdjson/generic/ondemand/json_builder.h for lasx */
+}}} // namespace simdjson::rvv_vls::ondemand
+
+#endif // SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
+/* end file simdjson/generic/ondemand/serialization-inl.h for rvv_vls */
 
 // JSON path accessor (compile-time) - must be after inline definitions
-/* including simdjson/generic/ondemand/compile_time_accessors.h for lasx: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
-/* begin file simdjson/generic/ondemand/compile_time_accessors.h for lasx */
+/* including simdjson/generic/ondemand/compile_time_accessors.h for rvv_vls: #include "simdjson/generic/ondemand/compile_time_accessors.h" */
+/* begin file simdjson/generic/ondemand/compile_time_accessors.h for rvv_vls */
 /**
  * Compile-time JSON Path and JSON Pointer accessors using C++26 reflection (P2996)
  *
@@ -152275,7 +181415,7 @@ simdjson_warn_unused simdjson_result extract_from(const T &obj, siz
 #include 
 
 namespace simdjson {
-namespace lasx {
+namespace rvv_vls {
 namespace ondemand {
 /***
  * JSONPath implementation for compile-time access
@@ -152286,7 +181426,7 @@ namespace json_path {
 // Note: value type must be fully defined before this header is included
 // This is ensured by including this in amalgamated.h after value-inl.h
 
-using ::simdjson::lasx::ondemand::value;
+using ::simdjson::rvv_vls::ondemand::value;
 
 // Path step types
 enum class step_type {
@@ -152420,7 +181560,7 @@ struct json_path_parser {
 // Compile-time path accessor generator
 template
 struct path_accessor {
-  using value = ::simdjson::lasx::ondemand::value;
+  using value = ::simdjson::rvv_vls::ondemand::value;
 
   static constexpr auto parser = json_path_parser();
   static constexpr std::size_t num_steps = parser.count_steps();
@@ -152898,14 +182038,14 @@ struct path_accessor {
 
 // Compile-time path accessor with validation
 template
-inline simdjson_result<::simdjson::lasx::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::rvv_vls::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::lasx::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::rvv_vls::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = path_accessor;
   return accessor::access(doc_or_val);
 }
@@ -153136,42 +182276,41 @@ struct pointer_accessor {
 
 // Compile-time JSON Pointer accessor with validation
 template
-inline simdjson_result<::simdjson::lasx::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::rvv_vls::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 // Overload without type parameter (no validation)
 template
-inline simdjson_result<::simdjson::lasx::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+inline simdjson_result<::simdjson::rvv_vls::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
   using accessor = pointer_accessor;
   return accessor::access(doc_or_val);
 }
 
 } // namespace json_path
 } // namespace ondemand
-} // namespace lasx
+} // namespace rvv_vls
 } // namespace simdjson
 
 #endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
 #endif // SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
 
-/* end file simdjson/generic/ondemand/compile_time_accessors.h for lasx */
+/* end file simdjson/generic/ondemand/compile_time_accessors.h for rvv_vls */
 
-/* end file simdjson/generic/ondemand/amalgamated.h for lasx */
-/* including simdjson/lasx/end.h: #include "simdjson/lasx/end.h" */
-/* begin file simdjson/lasx/end.h */
+/* end file simdjson/generic/ondemand/amalgamated.h for rvv_vls */
+/* including simdjson/rvv-vls/end.h: #include "simdjson/rvv-vls/end.h" */
+/* begin file simdjson/rvv-vls/end.h */
 /* amalgamation skipped (editor-only): #ifndef SIMDJSON_CONDITIONAL_INCLUDE */
-/* amalgamation skipped (editor-only): #include "simdjson/lasx/base.h" */
+/* amalgamation skipped (editor-only): #include "simdjson/rvv-vls/base.h" */
 /* amalgamation skipped (editor-only): #endif // SIMDJSON_CONDITIONAL_INCLUDE */
 
-#undef SIMDJSON_SKIP_BACKSLASH_SHORT_CIRCUIT
-/* undefining SIMDJSON_IMPLEMENTATION from "lasx" */
+/* undefining SIMDJSON_IMPLEMENTATION from "rvv_vls" */
 #undef SIMDJSON_IMPLEMENTATION
-/* end file simdjson/lasx/end.h */
+/* end file simdjson/rvv-vls/end.h */
 
-#endif // SIMDJSON_LASX_ONDEMAND_H
-/* end file simdjson/lasx/ondemand.h */
+#endif // SIMDJSON_RVV_VLS_ONDEMAND_H
+/* end file simdjson/rvv-vls/ondemand.h */
 #else
 #error Unknown SIMDJSON_BUILTIN_IMPLEMENTATION
 #endif

From 7302c7ed2208b2e1c210d6629160d841adc3a2c1 Mon Sep 17 00:00:00 2001
From: Nora Dossche <7771979+ndossche@users.noreply.github.com>
Date: Wed, 25 Feb 2026 14:56:28 +0100
Subject: [PATCH 109/267] crypto: fix handling of null BUF_MEM* in ToV8Value()

The assignment to `bptr` calls `BIO_get_mem_ptr` which can fail and
leave the `bptr` as nullptr. This then later causes a null pointer
deref.
This is inconsistent with uses of the similar function
`BIO_get_mem_data` that do check its return value, e.g.
`node::crypto::X509sToArrayOfStrings()`.
Solve it by checking for a null pointer and handling the `Nothing`
return value at the call sites.

PR-URL: https://github.com/nodejs/node/pull/61885
Reviewed-By: James M Snell 
Reviewed-By: Anna Henningsen 
---
 src/crypto/crypto_keys.cc | 9 ++++++++-
 src/crypto/crypto_x509.cc | 6 ++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/crypto/crypto_keys.cc b/src/crypto/crypto_keys.cc
index 2ace9270381223..0651166f5e74ad 100644
--- a/src/crypto/crypto_keys.cc
+++ b/src/crypto/crypto_keys.cc
@@ -97,8 +97,15 @@ MaybeLocal ToV8Value(
     Environment* env,
     const BIOPointer& bio,
     const EVPKeyPointer::AsymmetricKeyEncodingConfig& config) {
-  if (!bio) return {};
+  if (!bio) {
+    THROW_ERR_CRYPTO_OPERATION_FAILED(env, "Invalid BIO pointer");
+    return {};
+  }
   BUF_MEM* bptr = bio;
+  if (!bptr) {
+    THROW_ERR_CRYPTO_OPERATION_FAILED(env, "Unable to create BUF_MEM pointer");
+    return {};
+  }
   if (config.format == EVPKeyPointer::PKFormatType::PEM) {
     // PEM is an ASCII format, so we will return it as a string.
     return String::NewFromUtf8(
diff --git a/src/crypto/crypto_x509.cc b/src/crypto/crypto_x509.cc
index 2e571db7312d5e..496cb272d4f90f 100644
--- a/src/crypto/crypto_x509.cc
+++ b/src/crypto/crypto_x509.cc
@@ -106,6 +106,8 @@ MaybeLocal ToV8Value(Local context, BIOPointer&& bio) {
   if (!bio) [[unlikely]]
     return {};
   BUF_MEM* mem = bio;
+  if (!mem) [[unlikely]]
+    return {};
   Local ret;
   if (!String::NewFromUtf8(context->GetIsolate(),
                            mem->data,
@@ -120,6 +122,8 @@ MaybeLocal ToV8Value(Local context, const BIOPointer& bio) {
   if (!bio) [[unlikely]]
     return {};
   BUF_MEM* mem = bio;
+  if (!mem) [[unlikely]]
+    return {};
   Local ret;
   if (!String::NewFromUtf8(context->GetIsolate(),
                            mem->data,
@@ -134,6 +138,8 @@ MaybeLocal ToBuffer(Environment* env, BIOPointer* bio) {
   if (bio == nullptr || !*bio) [[unlikely]]
     return {};
   BUF_MEM* mem = *bio;
+  if (!mem) [[unlikely]]
+    return {};
 #ifdef V8_ENABLE_SANDBOX
   // If the v8 sandbox is enabled, then all array buffers must be allocated
   // via the isolate. External buffers are not allowed. So, instead of wrapping

From 54009e9c62d8f41dcfac15e3b85bc9c5fad35073 Mon Sep 17 00:00:00 2001
From: Rafael Gonzaga 
Date: Wed, 25 Feb 2026 19:34:16 -0300
Subject: [PATCH 110/267] doc: explicitly mention Slack handle
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/61986
Reviewed-By: Ulises Gascón 
Reviewed-By: Michaël Zasso 
Reviewed-By: Chengzhong Wu 
Reviewed-By: Ilyas Shabi 
Reviewed-By: Luigi Pinca 
---
 README.md | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index f1bdb6fea738ce..33ec62d271db5e 100644
--- a/README.md
+++ b/README.md
@@ -889,15 +889,15 @@ releases on a rotation basis as outlined in the
   * [bengl](https://github.com/bengl) -
     **Bryan English** <> (he/him)
 * [HeroDevs](https://www.herodevs.com/)
-  * [juanarbol](https://github.com/juanarbol) - OpenJSF handle: `juanarbol`
+  * [juanarbol](https://github.com/juanarbol) - OpenJS Slack handle: `juanarbol`
     **Juan José Arboleda** <> (he/him)
-  * [marco-ippolito](https://github.com/marco-ippolito) - OpenJSF handle: `Marco Ippolito`
+  * [marco-ippolito](https://github.com/marco-ippolito) - OpenJS Slack handle: `Marco Ippolito`
     **Marco Ippolito** <> (he/him)
 * [NodeSource](https://nodesource.com/)
-  * [RafaelGSS](https://github.com/RafaelGSS) - OpenJSF handle: `RafaelGSS`
+  * [RafaelGSS](https://github.com/RafaelGSS) - OpenJS Slack handle: `RafaelGSS`
     **Rafael Gonzaga** <> (he/him)
 * [Platformatic](https://platformatic.dev/)
-  * [mcollina](https://github.com/mcollina) - OpenJSF handle: `mcollina`
+  * [mcollina](https://github.com/mcollina) - OpenJS Slack handle: `mcollina`
     **Matteo Collina** <> (he/him)
 * [Red Hat](https://redhat.com) / [IBM](https://ibm.com)
   * [BethGriggs](https://github.com/BethGriggs) -

From eb77a7a297222e62ae9e2c0e4d9e54ff8e4660bf Mon Sep 17 00:00:00 2001
From: RafaelGSS 
Date: Fri, 13 Feb 2026 18:11:39 -0300
Subject: [PATCH 111/267] src: add C++ support for diagnostics channels

Add a C++ API for diagnostics channels that allows native code to check
for subscribers and publish messages without unnecessary JS boundary
crossings. Uses a shared AliasedUint32Array buffer between C++ and JS
to track subscriber counts per channel, enabling a fast inline check
(HasSubscribers) that reads the buffer directly.

PR-URL: https://github.com/nodejs/node/pull/61869
Reviewed-By: Stephen Belanger 
---
 lib/diagnostics_channel.js              |  16 +-
 lib/internal/process/pre_execution.js   |  10 +
 node.gyp                                |   2 +
 src/base_object_types.h                 |   1 +
 src/node_binding.cc                     |   1 +
 src/node_binding.h                      |   1 +
 src/node_diagnostics_channel.cc         | 293 ++++++++++++++++++++++++
 src/node_diagnostics_channel.h          | 113 +++++++++
 src/node_external_reference.h           |   1 +
 src/node_snapshotable.cc                |   1 +
 test/cctest/test_diagnostics_channel.cc | 259 +++++++++++++++++++++
 test/parallel/test-bootstrap-modules.js |   1 +
 12 files changed, 698 insertions(+), 1 deletion(-)
 create mode 100644 src/node_diagnostics_channel.cc
 create mode 100644 src/node_diagnostics_channel.h
 create mode 100644 test/cctest/test_diagnostics_channel.cc

diff --git a/lib/diagnostics_channel.js b/lib/diagnostics_channel.js
index 3deb301e7f3cd2..bd17965b131208 100644
--- a/lib/diagnostics_channel.js
+++ b/lib/diagnostics_channel.js
@@ -31,6 +31,9 @@ const {
 
 const { triggerUncaughtException } = internalBinding('errors');
 
+const dc_binding = internalBinding('diagnostics_channel');
+const { subscribers: subscriberCounts } = dc_binding;
+
 const { WeakReference } = require('internal/util');
 
 // Can't delete when weakref count reaches 0 as it could increment again.
@@ -108,6 +111,7 @@ class ActiveChannel {
     this._subscribers = ArrayPrototypeSlice(this._subscribers);
     ArrayPrototypePush(this._subscribers, subscription);
     channels.incRef(this.name);
+    if (this._index !== undefined) subscriberCounts[this._index]++;
   }
 
   unsubscribe(subscription) {
@@ -120,6 +124,7 @@ class ActiveChannel {
     ArrayPrototypePushApply(this._subscribers, after);
 
     channels.decRef(this.name);
+    if (this._index !== undefined) subscriberCounts[this._index]--;
     maybeMarkInactive(this);
 
     return true;
@@ -127,7 +132,10 @@ class ActiveChannel {
 
   bindStore(store, transform) {
     const replacing = this._stores.has(store);
-    if (!replacing) channels.incRef(this.name);
+    if (!replacing) {
+      channels.incRef(this.name);
+      if (this._index !== undefined) subscriberCounts[this._index]++;
+    }
     this._stores.set(store, transform);
   }
 
@@ -139,6 +147,7 @@ class ActiveChannel {
     this._stores.delete(store);
 
     channels.decRef(this.name);
+    if (this._index !== undefined) subscriberCounts[this._index]--;
     maybeMarkInactive(this);
 
     return true;
@@ -183,6 +192,9 @@ class Channel {
     this._subscribers = undefined;
     this._stores = undefined;
     this.name = name;
+    if (typeof name === 'string') {
+      this._index = dc_binding.getOrCreateChannelIndex(name);
+    }
 
     channels.set(name, this);
   }
@@ -434,6 +446,8 @@ function tracingChannel(nameOrChannels) {
   return new TracingChannel(nameOrChannels);
 }
 
+dc_binding.linkNativeChannel((name) => channel(name));
+
 module.exports = {
   channel,
   hasSubscribers,
diff --git a/lib/internal/process/pre_execution.js b/lib/internal/process/pre_execution.js
index c548fd0caeaecd..e9ab2b2a8958e9 100644
--- a/lib/internal/process/pre_execution.js
+++ b/lib/internal/process/pre_execution.js
@@ -124,6 +124,8 @@ function prepareExecution(options) {
   // Process initial diagnostic reporting configuration, if present.
   initializeReport();
 
+  setupDiagnosticsChannel();
+
   // Load permission system API
   initializePermission();
 
@@ -604,6 +606,14 @@ function initializeClusterIPC() {
   }
 }
 
+function setupDiagnosticsChannel() {
+  // Re-link native channels after snapshot deserialization since
+  // JS references are cleared during serialization.
+  const dc = require('diagnostics_channel');
+  const dc_binding = internalBinding('diagnostics_channel');
+  dc_binding.linkNativeChannel((name) => dc.channel(name));
+}
+
 function initializePermission() {
   const permission = getOptionValue('--permission');
   if (permission) {
diff --git a/node.gyp b/node.gyp
index 5f004904d5f16b..0620850e0872cf 100644
--- a/node.gyp
+++ b/node.gyp
@@ -128,6 +128,7 @@
       'src/node_main_instance.cc',
       'src/node_messaging.cc',
       'src/node_metadata.cc',
+      'src/node_diagnostics_channel.cc',
       'src/node_modules.cc',
       'src/node_options.cc',
       'src/node_os.cc',
@@ -264,6 +265,7 @@
       'src/node_messaging.h',
       'src/node_metadata.h',
       'src/node_mutex.h',
+      'src/node_diagnostics_channel.h',
       'src/node_modules.h',
       'src/node_object_wrap.h',
       'src/node_options.h',
diff --git a/src/base_object_types.h b/src/base_object_types.h
index 9cfe6a77f71708..cd1a06e41a3071 100644
--- a/src/base_object_types.h
+++ b/src/base_object_types.h
@@ -10,6 +10,7 @@ namespace node {
 // what the class passes to SET_BINDING_ID(), the second argument should match
 // the C++ class name.
 #define SERIALIZABLE_BINDING_TYPES(V)                                          \
+  V(diagnostics_channel_binding_data, diagnostics_channel::BindingData)        \
   V(encoding_binding_data, encoding_binding::BindingData)                      \
   V(fs_binding_data, fs::BindingData)                                          \
   V(mksnapshot_binding_data, mksnapshot::BindingData)                          \
diff --git a/src/node_binding.cc b/src/node_binding.cc
index 740706e917b7d2..b76ecc8cab47df 100644
--- a/src/node_binding.cc
+++ b/src/node_binding.cc
@@ -48,6 +48,7 @@
   V(constants)                                                                 \
   V(contextify)                                                                \
   V(credentials)                                                               \
+  V(diagnostics_channel)                                                       \
   V(encoding_binding)                                                          \
   V(errors)                                                                    \
   V(fs)                                                                        \
diff --git a/src/node_binding.h b/src/node_binding.h
index a55a9c6a578798..bb6547e5dac408 100644
--- a/src/node_binding.h
+++ b/src/node_binding.h
@@ -48,6 +48,7 @@ static_assert(static_cast(NM_F_LINKED) ==
   V(blob)                                                                      \
   V(builtins)                                                                  \
   V(contextify)                                                                \
+  V(diagnostics_channel)                                                       \
   V(encoding_binding)                                                          \
   V(fs)                                                                        \
   V(fs_dir)                                                                    \
diff --git a/src/node_diagnostics_channel.cc b/src/node_diagnostics_channel.cc
new file mode 100644
index 00000000000000..450a124c86959a
--- /dev/null
+++ b/src/node_diagnostics_channel.cc
@@ -0,0 +1,293 @@
+#include "node_diagnostics_channel.h"
+
+#include "base_object-inl.h"
+#include "env-inl.h"
+#include "node_external_reference.h"
+#include "util-inl.h"
+#include "v8.h"
+
+#include 
+
+namespace node {
+namespace diagnostics_channel {
+
+using v8::Context;
+using v8::Function;
+using v8::FunctionCallbackInfo;
+using v8::FunctionTemplate;
+using v8::HandleScope;
+using v8::Isolate;
+using v8::Local;
+using v8::Object;
+using v8::ObjectTemplate;
+using v8::SnapshotCreator;
+using v8::String;
+using v8::Value;
+
+BindingData::BindingData(Realm* realm,
+                         Local wrap,
+                         InternalFieldInfo* info)
+    : SnapshotableObject(realm, wrap, type_int),
+      subscribers_(
+          realm->isolate(), kMaxChannels, MAYBE_FIELD_PTR(info, subscribers)) {
+  if (info == nullptr) {
+    wrap->Set(realm->context(),
+              FIXED_ONE_BYTE_STRING(realm->isolate(), "subscribers"),
+              subscribers_.GetJSArray())
+        .Check();
+  } else {
+    subscribers_.Deserialize(realm->context());
+  }
+  subscribers_.MakeWeak();
+}
+
+void BindingData::MemoryInfo(MemoryTracker* tracker) const {
+  tracker->TrackField("subscribers", subscribers_);
+}
+
+uint32_t BindingData::GetOrCreateChannelIndex(const std::string& name) {
+  auto it = channel_indices_.find(name);
+  if (it != channel_indices_.end()) {
+    return it->second;
+  }
+  CHECK_LT(next_channel_index_, kMaxChannels);
+  uint32_t index = next_channel_index_++;
+  channel_indices_.emplace(name, index);
+  return index;
+}
+
+void BindingData::GetOrCreateChannelIndex(
+    const FunctionCallbackInfo& args) {
+  Realm* realm = Realm::GetCurrent(args);
+  BindingData* binding = realm->GetBindingData();
+  CHECK_NOT_NULL(binding);
+
+  CHECK(args[0]->IsString());
+  Utf8Value name(realm->isolate(), args[0]);
+
+  uint32_t index = binding->GetOrCreateChannelIndex(*name);
+  args.GetReturnValue().Set(index);
+}
+
+void BindingData::LinkNativeChannel(const FunctionCallbackInfo& args) {
+  Realm* realm = Realm::GetCurrent(args);
+  BindingData* binding = realm->GetBindingData();
+  CHECK_NOT_NULL(binding);
+
+  CHECK(args[0]->IsFunction());
+  Isolate* isolate = realm->isolate();
+  Local context = realm->context();
+  binding->link_callback_.Reset(isolate, args[0].As());
+
+  // Resolve channels created before the link callback was available.
+  for (auto& channel_ptr : binding->channels_) {
+    if (channel_ptr && !channel_ptr->IsLinked()) {
+      Local name =
+          String::NewFromUtf8(isolate, channel_ptr->name_.c_str())
+              .ToLocalChecked();
+      Local argv[] = {name};
+      Local result;
+      if (binding->link_callback_.Get(isolate)
+              ->Call(context, v8::Undefined(isolate), 1, argv)
+              .ToLocal(&result) &&
+          result->IsObject()) {
+        channel_ptr->Link(isolate, result.As());
+      }
+    }
+  }
+}
+
+bool BindingData::PrepareForSerialization(Local context,
+                                          SnapshotCreator* creator) {
+  DCHECK_NULL(internal_field_info_);
+  internal_field_info_ = InternalFieldInfoBase::New(type());
+  internal_field_info_->subscribers = subscribers_.Serialize(context, creator);
+  link_callback_.Reset();
+  channel_wrap_template_.Reset();
+  channels_.clear();
+  return true;
+}
+
+InternalFieldInfoBase* BindingData::Serialize(int index) {
+  DCHECK_IS_SNAPSHOT_SLOT(index);
+  InternalFieldInfo* info = internal_field_info_;
+  internal_field_info_ = nullptr;
+  return info;
+}
+
+void BindingData::Deserialize(Local context,
+                              Local holder,
+                              int index,
+                              InternalFieldInfoBase* info) {
+  DCHECK_IS_SNAPSHOT_SLOT(index);
+  HandleScope scope(Isolate::GetCurrent());
+  Realm* realm = Realm::GetCurrent(context);
+  BindingData* binding = realm->AddBindingData(
+      holder, static_cast(info));
+  CHECK_NOT_NULL(binding);
+}
+
+void BindingData::CreatePerIsolateProperties(IsolateData* isolate_data,
+                                             Local target) {
+  Isolate* isolate = isolate_data->isolate();
+  SetMethod(
+      isolate, target, "getOrCreateChannelIndex", GetOrCreateChannelIndex);
+  SetMethod(isolate, target, "linkNativeChannel", LinkNativeChannel);
+}
+
+void BindingData::CreatePerContextProperties(Local target,
+                                             Local unused,
+                                             Local context,
+                                             void* priv) {
+  Realm* realm = Realm::GetCurrent(context);
+  BindingData* const binding = realm->AddBindingData(target);
+  if (binding == nullptr) return;
+}
+
+void BindingData::RegisterExternalReferences(
+    ExternalReferenceRegistry* registry) {
+  registry->Register(GetOrCreateChannelIndex);
+  registry->Register(LinkNativeChannel);
+}
+
+Channel::Channel(Environment* env,
+                 Local wrap,
+                 BindingData* binding_data,
+                 uint32_t index,
+                 std::string name)
+    : BaseObject(env, wrap),
+      binding_data_(binding_data),
+      index_(index),
+      name_(std::move(name)) {
+  MakeWeak();
+}
+
+void Channel::MemoryInfo(MemoryTracker* tracker) const {
+  tracker->TrackField("js_channel", js_channel_);
+  tracker->TrackField("publish_fn", publish_fn_);
+}
+
+void Channel::Link(Isolate* isolate, Local js_channel) {
+  js_channel_.Reset(isolate, js_channel);
+  // If the channel already has subscribers at link time (JS subscribed before
+  // C++ called Get()), cache publish eagerly so Publish() has no extra work.
+  if (HasSubscribers()) {
+    CachePublishFn(isolate, js_channel);
+  }
+}
+
+void Channel::Unlink() {
+  js_channel_.Reset();
+  publish_fn_.Reset();
+}
+
+Channel* Channel::Get(Environment* env, const char* name) {
+  Realm* realm = env->principal_realm();
+  BindingData* binding = realm->GetBindingData();
+  if (binding == nullptr) {
+    return nullptr;
+  }
+  uint32_t index = binding->GetOrCreateChannelIndex(std::string(name));
+
+  if (index >= binding->channels_.size()) {
+    binding->channels_.resize(index + 1);
+  }
+
+  if (!binding->channels_[index]) {
+    Isolate* isolate = env->isolate();
+    HandleScope handle_scope(isolate);
+    Local context = env->context();
+
+    // Lazily create the wrap template for Channel objects.
+    if (binding->channel_wrap_template_.IsEmpty()) {
+      Local tmpl =
+          BaseObject::MakeLazilyInitializedJSTemplate(env);
+      binding->channel_wrap_template_.Reset(isolate, tmpl);
+    }
+
+    Local wrap;
+    if (!binding->channel_wrap_template_.Get(isolate)
+             ->GetFunction(context)
+             .ToLocalChecked()
+             ->NewInstance(context)
+             .ToLocal(&wrap)) {
+      return nullptr;
+    }
+
+    binding->channels_[index] = MakeDetachedBaseObject(
+        env, wrap, binding, index, std::string(name));
+  }
+
+  Channel* channel = binding->channels_[index].get();
+
+  // Late-bind: link to the JS channel when the callback is available.
+  if (!binding->link_callback_.IsEmpty() && !channel->IsLinked()) {
+    Isolate* isolate = env->isolate();
+    HandleScope handle_scope(isolate);
+    Local context = env->context();
+    Local js_name = String::NewFromUtf8(isolate, name).ToLocalChecked();
+    Local argv[] = {js_name};
+    Local result;
+    if (binding->link_callback_.Get(isolate)
+            ->Call(context, v8::Undefined(isolate), 1, argv)
+            .ToLocal(&result) &&
+        result->IsObject()) {
+      channel->Link(isolate, result.As());
+    }
+  }
+
+  return channel;
+}
+
+void Channel::CachePublishFn(Isolate* isolate, Local js_channel) {
+  Local publish_val;
+  Local context = isolate->GetCurrentContext();
+  if (js_channel->Get(context, FIXED_ONE_BYTE_STRING(isolate, "publish"))
+          .ToLocal(&publish_val) &&
+      publish_val->IsFunction()) {
+    publish_fn_.Reset(isolate, publish_val.As());
+  }
+}
+
+void Channel::Publish(Environment* env, Local message) {
+  if (!HasSubscribers()) return;
+
+  if (binding_data_ == nullptr) return;
+
+  if (js_channel_.IsEmpty()) return;
+
+  // Publishing is not possible during shutdown or GC.
+  DCHECK(env->can_call_into_js());
+  if (!env->can_call_into_js()) return;
+
+  Isolate* isolate = env->isolate();
+  HandleScope handle_scope(isolate);
+  Local context = env->context();
+  Context::Scope context_scope(context);
+
+  Local js_channel = js_channel_.Get(isolate);
+
+  // publish_fn_ is eagerly cached by Link() when the channel already has
+  // subscribers at link time. For channels linked before any JS subscriber
+  // existed, cache it here on the first publish — happens exactly once.
+  if (publish_fn_.IsEmpty()) {
+    CachePublishFn(isolate, js_channel);
+    if (publish_fn_.IsEmpty()) return;
+  }
+
+  Local argv[] = {message};
+  USE(publish_fn_.Get(isolate)->Call(context, js_channel, 1, argv));
+}
+
+}  // namespace diagnostics_channel
+}  // namespace node
+
+NODE_BINDING_CONTEXT_AWARE_INTERNAL(
+    diagnostics_channel,
+    node::diagnostics_channel::BindingData::CreatePerContextProperties)
+NODE_BINDING_PER_ISOLATE_INIT(
+    diagnostics_channel,
+    node::diagnostics_channel::BindingData::CreatePerIsolateProperties)
+NODE_BINDING_EXTERNAL_REFERENCE(
+    diagnostics_channel,
+    node::diagnostics_channel::BindingData::RegisterExternalReferences)
diff --git a/src/node_diagnostics_channel.h b/src/node_diagnostics_channel.h
new file mode 100644
index 00000000000000..1c1831a0f9e45f
--- /dev/null
+++ b/src/node_diagnostics_channel.h
@@ -0,0 +1,113 @@
+#ifndef SRC_NODE_DIAGNOSTICS_CHANNEL_H_
+#define SRC_NODE_DIAGNOSTICS_CHANNEL_H_
+
+#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
+
+#include 
+#include 
+#include 
+#include 
+#include "aliased_buffer.h"
+#include "base_object.h"
+#include "node_snapshotable.h"
+
+namespace node {
+class ExternalReferenceRegistry;
+
+namespace diagnostics_channel {
+
+class Channel;
+
+class BindingData : public SnapshotableObject {
+ public:
+  static constexpr size_t kMaxChannels = 1024;
+
+  struct InternalFieldInfo : public node::InternalFieldInfoBase {
+    AliasedBufferIndex subscribers;
+  };
+
+  BindingData(Realm* realm,
+              v8::Local wrap,
+              InternalFieldInfo* info = nullptr);
+
+  SERIALIZABLE_OBJECT_METHODS()
+  SET_BINDING_ID(diagnostics_channel_binding_data)
+
+  void MemoryInfo(MemoryTracker* tracker) const override;
+  SET_SELF_SIZE(BindingData)
+  SET_MEMORY_INFO_NAME(BindingData)
+
+  AliasedUint32Array subscribers_;
+
+  uint32_t next_channel_index_ = 0;
+  std::unordered_map channel_indices_;
+
+  uint32_t GetOrCreateChannelIndex(const std::string& name);
+
+  v8::Global link_callback_;
+  v8::Global channel_wrap_template_;
+  std::vector> channels_;
+
+  static void GetOrCreateChannelIndex(
+      const v8::FunctionCallbackInfo& args);
+  static void LinkNativeChannel(
+      const v8::FunctionCallbackInfo& args);
+
+  static void CreatePerIsolateProperties(IsolateData* isolate_data,
+                                         v8::Local target);
+  static void CreatePerContextProperties(v8::Local target,
+                                         v8::Local unused,
+                                         v8::Local context,
+                                         void* priv);
+  static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
+
+ private:
+  InternalFieldInfo* internal_field_info_ = nullptr;
+};
+
+class Channel : public BaseObject {
+ public:
+  // Public for MakeDetachedBaseObject.
+  Channel(Environment* env,
+          v8::Local wrap,
+          BindingData* binding_data,
+          uint32_t index,
+          std::string name);
+
+  // Returns a non-owning pointer. Lifetime is managed by BindingData.
+  static Channel* Get(Environment* env, const char* name);
+
+  inline bool HasSubscribers() const {
+    return binding_data_ != nullptr && binding_data_->subscribers_[index_] > 0;
+  }
+
+  void Publish(Environment* env, v8::Local message);
+
+  void Link(v8::Isolate* isolate, v8::Local js_channel);
+
+  inline bool IsLinked() const { return !js_channel_.IsEmpty(); }
+
+  void Unlink();
+
+  void MemoryInfo(MemoryTracker* tracker) const override;
+  SET_MEMORY_INFO_NAME(Channel)
+  SET_SELF_SIZE(Channel)
+
+ private:
+  friend class BindingData;
+
+  void CachePublishFn(v8::Isolate* isolate, v8::Local js_channel);
+
+  BindingData* binding_data_;
+  uint32_t index_;
+  std::string name_;
+  v8::Global js_channel_;
+  v8::Global publish_fn_;
+};
+
+}  // namespace diagnostics_channel
+}  // namespace node
+
+#endif  // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
+
+#endif  // SRC_NODE_DIAGNOSTICS_CHANNEL_H_
diff --git a/src/node_external_reference.h b/src/node_external_reference.h
index 8ab94c9c4a4e8f..a073cde10d1206 100644
--- a/src/node_external_reference.h
+++ b/src/node_external_reference.h
@@ -70,6 +70,7 @@ class ExternalReferenceRegistry {
   V(config)                                                                    \
   V(contextify)                                                                \
   V(credentials)                                                               \
+  V(diagnostics_channel)                                                       \
   V(encoding_binding)                                                          \
   V(env_var)                                                                   \
   V(errors)                                                                    \
diff --git a/src/node_snapshotable.cc b/src/node_snapshotable.cc
index 6a1bed36dca1fc..41b0773f4c37a0 100644
--- a/src/node_snapshotable.cc
+++ b/src/node_snapshotable.cc
@@ -14,6 +14,7 @@
 #include "node_blob.h"
 #include "node_builtins.h"
 #include "node_contextify.h"
+#include "node_diagnostics_channel.h"
 #include "node_errors.h"
 #include "node_external_reference.h"
 #include "node_file.h"
diff --git a/test/cctest/test_diagnostics_channel.cc b/test/cctest/test_diagnostics_channel.cc
new file mode 100644
index 00000000000000..b456f6aaf9eaab
--- /dev/null
+++ b/test/cctest/test_diagnostics_channel.cc
@@ -0,0 +1,259 @@
+#include "node_diagnostics_channel.h"
+
+#include "gtest/gtest.h"
+#include "node_test_fixture.h"
+
+using node::diagnostics_channel::Channel;
+
+class DiagnosticsChannelTest : public EnvironmentTestFixture {};
+
+static v8::Local RunJS(v8::Isolate* isolate, const char* code) {
+  v8::Local context = isolate->GetCurrentContext();
+  v8::Local script =
+      v8::Script::Compile(
+          context, v8::String::NewFromUtf8(isolate, code).ToLocalChecked())
+          .ToLocalChecked();
+  return script->Run(context).ToLocalChecked();
+}
+
+// Channel::HasSubscribers() returns false when there are no subscribers.
+TEST_F(DiagnosticsChannelTest, HasSubscribersReturnsFalseWithoutSubscribers) {
+  const v8::HandleScope handle_scope(isolate_);
+  Argv argv;
+  Env env{handle_scope, argv};
+
+  SetProcessExitHandler(*env, [&](node::Environment* env_, int exit_code) {
+    EXPECT_EQ(exit_code, 0);
+    node::Stop(*env);
+  });
+
+  // Load the environment to initialize bindings.
+  node::LoadEnvironment(*env, "require('diagnostics_channel');");
+
+  auto ch = Channel::Get(*env, "test:cctest:no-subscribers");
+  ASSERT_NE(ch, nullptr);
+  EXPECT_FALSE(ch->HasSubscribers());
+}
+
+// Channel::HasSubscribers() returns true after JS subscribes.
+TEST_F(DiagnosticsChannelTest, HasSubscribersReturnsTrueAfterSubscribe) {
+  const v8::HandleScope handle_scope(isolate_);
+  Argv argv;
+  Env env{handle_scope, argv};
+
+  SetProcessExitHandler(*env, [&](node::Environment* env_, int exit_code) {
+    EXPECT_EQ(exit_code, 0);
+    node::Stop(*env);
+  });
+
+  node::LoadEnvironment(*env,
+                        "const dc = require('diagnostics_channel');"
+                        "dc.subscribe('test:cctest:with-sub', () => {});");
+
+  auto ch = Channel::Get(*env, "test:cctest:with-sub");
+  ASSERT_NE(ch, nullptr);
+  EXPECT_TRUE(ch->HasSubscribers());
+}
+
+// Channel::Get() with the same name returns consistent subscriber state.
+TEST_F(DiagnosticsChannelTest, GetReturnsSameChannelState) {
+  const v8::HandleScope handle_scope(isolate_);
+  Argv argv;
+  Env env{handle_scope, argv};
+
+  SetProcessExitHandler(*env, [&](node::Environment* env_, int exit_code) {
+    EXPECT_EQ(exit_code, 0);
+    node::Stop(*env);
+  });
+
+  node::LoadEnvironment(*env,
+                        "const dc = require('diagnostics_channel');"
+                        "dc.subscribe('test:cctest:same-channel', () => {});");
+
+  auto ch1 = Channel::Get(*env, "test:cctest:same-channel");
+  auto ch2 = Channel::Get(*env, "test:cctest:same-channel");
+  ASSERT_NE(ch1, nullptr);
+  ASSERT_NE(ch2, nullptr);
+  EXPECT_TRUE(ch1->HasSubscribers());
+  EXPECT_TRUE(ch2->HasSubscribers());
+  EXPECT_EQ(ch1, ch2);
+}
+
+// Channel::Publish() delivers messages to JS subscribers.
+TEST_F(DiagnosticsChannelTest, PublishDeliversToJSSubscribers) {
+  const v8::HandleScope handle_scope(isolate_);
+  Argv argv;
+  Env env{handle_scope, argv};
+
+  SetProcessExitHandler(*env, [&](node::Environment* env_, int exit_code) {
+    EXPECT_EQ(exit_code, 0);
+    node::Stop(*env);
+  });
+
+  node::LoadEnvironment(
+      *env,
+      "const dc = require('diagnostics_channel');"
+      "const assert = require('assert');"
+      "dc.subscribe('test:cctest:publish', (message, name) => {"
+      "  assert.strictEqual(name, 'test:cctest:publish');"
+      "  assert.strictEqual(message.value, 42);"
+      "  globalThis.__publishReceived = true;"
+      "});");
+
+  v8::Local context = (*env)->context();
+
+  auto ch = Channel::Get(*env, "test:cctest:publish");
+  ASSERT_NE(ch, nullptr);
+  ASSERT_TRUE(ch->HasSubscribers());
+
+  v8::Local msg = v8::Object::New(isolate_);
+  msg->Set(context,
+           v8::String::NewFromUtf8Literal(isolate_, "value"),
+           v8::Integer::New(isolate_, 42))
+      .Check();
+
+  ch->Publish(*env, msg);
+
+  v8::Local received =
+      context->Global()
+          ->Get(context,
+                v8::String::NewFromUtf8Literal(isolate_, "__publishReceived"))
+          .ToLocalChecked();
+  EXPECT_TRUE(received->IsTrue());
+}
+
+// C++ creates a channel first, then JS subscribes to the same name.
+// Verifies C++ Channel reflects the JS subscriber via the shared buffer.
+TEST_F(DiagnosticsChannelTest, CppChannelVisibleFromJS) {
+  const v8::HandleScope handle_scope(isolate_);
+  Argv argv;
+  Env env{handle_scope, argv};
+
+  SetProcessExitHandler(*env, [&](node::Environment* env_, int exit_code) {
+    EXPECT_EQ(exit_code, 0);
+    node::Stop(*env);
+  });
+
+  // Expose dc on globalThis so RunJS (v8::Script) can access it.
+  node::LoadEnvironment(*env,
+                        "globalThis.__dc = require('diagnostics_channel');");
+
+  auto ch = Channel::Get(*env, "test:cctest:cpp-first");
+  ASSERT_NE(ch, nullptr);
+  EXPECT_FALSE(ch->HasSubscribers());
+
+  // JS subscribes to the same channel name via globalThis.__dc.
+  RunJS(isolate_,
+        "globalThis.__dc.subscribe('test:cctest:cpp-first', () => {});");
+
+  EXPECT_TRUE(ch->HasSubscribers());
+
+  RunJS(isolate_,
+        "globalThis.__cppFirstMsg = null;"
+        "globalThis.__dc.subscribe('test:cctest:cpp-first', (msg) => {"
+        "  globalThis.__cppFirstMsg = msg;"
+        "});");
+
+  v8::Local context = (*env)->context();
+  v8::Local msg = v8::Object::New(isolate_);
+  msg->Set(context,
+           v8::String::NewFromUtf8Literal(isolate_, "from"),
+           v8::String::NewFromUtf8Literal(isolate_, "cpp"))
+      .Check();
+
+  ch->Publish(*env, msg);
+
+  v8::Local received =
+      context->Global()
+          ->Get(context,
+                v8::String::NewFromUtf8Literal(isolate_, "__cppFirstMsg"))
+          .ToLocalChecked();
+  ASSERT_TRUE(received->IsObject());
+  v8::Local from_val =
+      received.As()
+          ->Get(context, v8::String::NewFromUtf8Literal(isolate_, "from"))
+          .ToLocalChecked();
+  v8::String::Utf8Value from_str(isolate_, from_val);
+  EXPECT_STREQ(*from_str, "cpp");
+}
+
+// JS creates a channel and subscribes, then C++ gets the same channel,
+// verifies it shares state, and publishes messages that JS receives.
+TEST_F(DiagnosticsChannelTest, JSChannelVisibleFromCpp) {
+  const v8::HandleScope handle_scope(isolate_);
+  Argv argv;
+  Env env{handle_scope, argv};
+
+  SetProcessExitHandler(*env, [&](node::Environment* env_, int exit_code) {
+    EXPECT_EQ(exit_code, 0);
+    node::Stop(*env);
+  });
+
+  node::LoadEnvironment(*env,
+                        "const dc = require('diagnostics_channel');"
+                        "globalThis.__dc = dc;"
+                        "globalThis.__jsFirstMessages = [];"
+                        "dc.subscribe('test:cctest:js-first', (msg) => {"
+                        "  globalThis.__jsFirstMessages.push(msg);"
+                        "});");
+
+  v8::Local context = (*env)->context();
+
+  auto ch = Channel::Get(*env, "test:cctest:js-first");
+  ASSERT_NE(ch, nullptr);
+  ASSERT_TRUE(ch->HasSubscribers());
+
+  // Publish from C++ — JS subscriber should receive it.
+  v8::Local msg1 = v8::Object::New(isolate_);
+  msg1->Set(context,
+            v8::String::NewFromUtf8Literal(isolate_, "seq"),
+            v8::Integer::New(isolate_, 1))
+      .Check();
+  ch->Publish(*env, msg1);
+
+  v8::Local msg2 = v8::Object::New(isolate_);
+  msg2->Set(context,
+            v8::String::NewFromUtf8Literal(isolate_, "seq"),
+            v8::Integer::New(isolate_, 2))
+      .Check();
+  ch->Publish(*env, msg2);
+
+  v8::Local msgs_val =
+      context->Global()
+          ->Get(context,
+                v8::String::NewFromUtf8Literal(isolate_, "__jsFirstMessages"))
+          .ToLocalChecked();
+  ASSERT_TRUE(msgs_val->IsArray());
+  v8::Local msgs = msgs_val.As();
+  EXPECT_EQ(msgs->Length(), 2u);
+
+  // Check first message: { seq: 1 }
+  v8::Local m1 = msgs->Get(context, 0).ToLocalChecked();
+  ASSERT_TRUE(m1->IsObject());
+  v8::Local seq1 =
+      m1.As()
+          ->Get(context, v8::String::NewFromUtf8Literal(isolate_, "seq"))
+          .ToLocalChecked();
+  EXPECT_EQ(seq1->Int32Value(context).FromJust(), 1);
+
+  // Check second message: { seq: 2 }
+  v8::Local m2 = msgs->Get(context, 1).ToLocalChecked();
+  ASSERT_TRUE(m2->IsObject());
+  v8::Local seq2 =
+      m2.As()
+          ->Get(context, v8::String::NewFromUtf8Literal(isolate_, "seq"))
+          .ToLocalChecked();
+  EXPECT_EQ(seq2->Int32Value(context).FromJust(), 2);
+
+  RunJS(isolate_,
+        "globalThis.__jsHasSubs ="
+        "  globalThis.__dc.hasSubscribers('test:cctest:js-first');");
+
+  v8::Local js_has_subs =
+      context->Global()
+          ->Get(context,
+                v8::String::NewFromUtf8Literal(isolate_, "__jsHasSubs"))
+          .ToLocalChecked();
+  EXPECT_TRUE(js_has_subs->IsTrue());
+  EXPECT_TRUE(ch->HasSubscribers());
+}
diff --git a/test/parallel/test-bootstrap-modules.js b/test/parallel/test-bootstrap-modules.js
index 67a59c3ff7f105..92bf3be1f612ff 100644
--- a/test/parallel/test-bootstrap-modules.js
+++ b/test/parallel/test-bootstrap-modules.js
@@ -105,6 +105,7 @@ expected.beforePreExec = new Set([
   'Internal Binding module_wrap',
   'NativeModule internal/modules/cjs/loader',
   'NativeModule diagnostics_channel',
+  'Internal Binding diagnostics_channel',
   'Internal Binding wasm_web_api',
   'NativeModule internal/events/abort_listener',
   'NativeModule internal/modules/typescript',

From 65aa8f68d058514710f5f860abc598b01f430dd1 Mon Sep 17 00:00:00 2001
From: Matteo Collina 
Date: Thu, 26 Feb 2026 08:54:39 +0100
Subject: [PATCH 112/267] stream: fix pipeTo to defer writes per WHATWG spec

The WHATWG Streams spec requires that pipeTo's chunk handling must
queue a microtask before calling the write algorithm. This ensures
that enqueue() does not synchronously trigger writes.

Previously, PipeToReadableStreamReadRequest[kChunk] would synchronously
call writableStreamDefaultWriterWrite(), which violated the spec and
caused the WPT test "enqueue() must not synchronously call write
algorithm" to fail.

Fix by wrapping the write operation in queueMicrotask(), which defers
it to the next microtask as required by the spec.

Refs: https://github.com/whatwg/streams/issues/1243
PR-URL: https://github.com/nodejs/node/pull/61800
Reviewed-By: James M Snell 
Reviewed-By: Colin Ihrig 
Reviewed-By: Mattias Buelens 
---
 lib/internal/webstreams/readablestream.js | 11 ++++++++---
 test/wpt/status/streams.json              |  8 --------
 2 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/lib/internal/webstreams/readablestream.js b/lib/internal/webstreams/readablestream.js
index 43cfcded03def4..40083ce65ee8f4 100644
--- a/lib/internal/webstreams/readablestream.js
+++ b/lib/internal/webstreams/readablestream.js
@@ -1662,9 +1662,14 @@ class PipeToReadableStreamReadRequest {
   }
 
   [kChunk](chunk) {
-    this.state.currentWrite = writableStreamDefaultWriterWrite(this.writer, chunk);
-    setPromiseHandled(this.state.currentWrite);
-    this.promise.resolve(false);
+    // Per spec, pipeTo must queue a microtask for the write to avoid
+    // synchronous write during enqueue(). See WHATWG Streams spec
+    // "ReadableStreamPipeTo" step 15's "chunk steps".
+    queueMicrotask(() => {
+      this.state.currentWrite = writableStreamDefaultWriterWrite(this.writer, chunk);
+      setPromiseHandled(this.state.currentWrite);
+      this.promise.resolve(false);
+    });
   }
 
   [kClose]() {
diff --git a/test/wpt/status/streams.json b/test/wpt/status/streams.json
index af3646c65ea660..222a68014f4af6 100644
--- a/test/wpt/status/streams.json
+++ b/test/wpt/status/streams.json
@@ -2,14 +2,6 @@
   "idlharness-shadowrealm.window.js": {
     "skip": "ShadowRealm support is not enabled"
   },
-  "piping/general-addition.any.js": {
-    "fail": {
-      "note": "Blocked on https://github.com/whatwg/streams/issues/1243",
-      "expected": [
-        "enqueue() must not synchronously call write algorithm"
-      ]
-    }
-  },
   "queuing-strategies-size-function-per-global.window.js": {
     "skip": "Browser-specific test"
   },

From 8287ca749e605582861a6e5e6bdbc35d25df7938 Mon Sep 17 00:00:00 2001
From: sangwook 
Date: Fri, 27 Feb 2026 00:37:55 +0900
Subject: [PATCH 113/267] test_runner: expose expectFailure message

This change exposes the expectFailure message in the test runner and
adds edge cases for expectFailure ambiguity.

PR-URL: https://github.com/nodejs/node/pull/61563
Fixes: https://github.com/nodejs/node/issues/61570
Reviewed-By: Jordan Harband 
Reviewed-By: Aviv Keller 
Reviewed-By: Jacob Smith 
---
 doc/api/test.md                               |  66 ++++-
 lib/internal/test_runner/reporter/tap.js      |   2 +-
 lib/internal/test_runner/test.js              |  87 +++++-
 .../test-runner-expect-error-but-pass.js      |   3 +-
 test/parallel/test-runner-xfail.js            | 259 ++++++++++++++++++
 5 files changed, 405 insertions(+), 12 deletions(-)
 create mode 100644 test/parallel/test-runner-xfail.js

diff --git a/doc/api/test.md b/doc/api/test.md
index 35e1c715b9c9a4..5dcd944ae921d3 100644
--- a/doc/api/test.md
+++ b/doc/api/test.md
@@ -265,11 +265,12 @@ added:
  - v24.14.0
 -->
 
-This flips the pass/fail reporting for a specific test or suite: A flagged test/test-case must throw
-in order to "pass"; a test/test-case that does not throw, fails.
+This flips the pass/fail reporting for a specific test or suite: a flagged test
+case must throw in order to pass, and a flagged test case that does not throw
+fails.
 
-In the following, `doTheThing()` returns _currently_ `false` (`false` does not equal `true`, causing
-`strictEqual` to throw, so the test-case passes).
+In each of the following, `doTheThing()` fails to return `true`, but since the
+tests are flagged `expectFailure`, they pass.
 
 ```js
 it.expectFailure('should do the thing', () => {
@@ -279,6 +280,50 @@ it.expectFailure('should do the thing', () => {
 it('should do the thing', { expectFailure: true }, () => {
   assert.strictEqual(doTheThing(), true);
 });
+
+it('should do the thing', { expectFailure: 'feature not implemented' }, () => {
+  assert.strictEqual(doTheThing(), true);
+});
+```
+
+If the value of `expectFailure` is a
+[](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) |
+[](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) |
+[](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) |
+[](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error),
+the tests will pass only if they throw a matching value.
+See [`assert.throws`][] for how each value type is handled.
+
+Each of the following tests fails _despite_ being flagged `expectFailure`
+because the failure does not match the specific **expected** failure.
+
+```js
+it('fails because regex does not match', {
+  expectFailure: /expected message/,
+}, () => {
+  throw new Error('different message');
+});
+
+it('fails because object matcher does not match', {
+  expectFailure: { code: 'ERR_EXPECTED' },
+}, () => {
+  const err = new Error('boom');
+  err.code = 'ERR_ACTUAL';
+  throw err;
+});
+```
+
+To supply both a reason and specific error for `expectFailure`, use `{ label, match }`.
+
+```js
+it('should fail with specific error and reason', {
+  expectFailure: {
+    label: 'reason for failure',
+    match: /error message/,
+  },
+}, () => {
+  assert.strictEqual(doTheThing(), true);
+});
 ```
 
 `skip` and/or `todo` are mutually exclusive to `expectFailure`, and `skip` or `todo`
@@ -1684,6 +1729,18 @@ changes:
     thread. If `false`, only one test runs at a time.
     If unspecified, subtests inherit this value from their parent.
     **Default:** `false`.
+  * `expectFailure` {boolean|string|RegExp|Function|Object|Error} If truthy, the
+    test is expected to fail. If a non-empty string is provided, that string is displayed
+    in the test results as the reason why the test is expected to fail. If a
+    [](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp),
+    [](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function),
+    [](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object), or
+    [](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error)
+    is provided directly (without wrapping in `{ match: … }`), the test passes
+    only if the thrown error matches, following the behavior of
+    [`assert.throws`][]. To provide both a reason and validation, pass an object
+    with `label` (string) and `match` (RegExp, Function, Object, or Error).
+    **Default:** `false`.
   * `only` {boolean} If truthy, and the test context is configured to run
     `only` tests, then this test will be run. Otherwise, the test is skipped.
     **Default:** `false`.
@@ -4176,6 +4233,7 @@ Can be used to abort test subtasks when the test has been aborted.
 [`NODE_V8_COVERAGE`]: cli.md#node_v8_coveragedir
 [`SuiteContext`]: #class-suitecontext
 [`TestContext`]: #class-testcontext
+[`assert.throws`]: assert.md#assertthrowsfn-error-message
 [`context.diagnostic`]: #contextdiagnosticmessage
 [`context.skip`]: #contextskipmessage
 [`context.todo`]: #contexttodomessage
diff --git a/lib/internal/test_runner/reporter/tap.js b/lib/internal/test_runner/reporter/tap.js
index 5d25fdda15959f..c3bbd1d144eb35 100644
--- a/lib/internal/test_runner/reporter/tap.js
+++ b/lib/internal/test_runner/reporter/tap.js
@@ -87,7 +87,7 @@ function reportTest(nesting, testNumber, status, name, skip, todo, expectFailure
   } else if (todo !== undefined) {
     line += ` # TODO${typeof todo === 'string' && todo.length ? ` ${tapEscape(todo)}` : ''}`;
   } else if (expectFailure !== undefined) {
-    line += ' # EXPECTED FAILURE';
+    line += ` # EXPECTED FAILURE${typeof expectFailure === 'string' ? ` ${tapEscape(expectFailure)}` : ''}`;
   }
 
   line += '\n';
diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js
index 961565e0c914a9..58421f5a252df7 100644
--- a/lib/internal/test_runner/test.js
+++ b/lib/internal/test_runner/test.js
@@ -1,5 +1,6 @@
 'use strict';
 const {
+  ArrayPrototypeEvery,
   ArrayPrototypePush,
   ArrayPrototypePushApply,
   ArrayPrototypeShift,
@@ -13,6 +14,7 @@ const {
   MathMax,
   Number,
   NumberPrototypeToFixed,
+  ObjectKeys,
   ObjectSeal,
   Promise,
   PromisePrototypeThen,
@@ -40,6 +42,7 @@ const {
   AbortError,
   codes: {
     ERR_INVALID_ARG_TYPE,
+    ERR_INVALID_ARG_VALUE,
     ERR_TEST_FAILURE,
   },
 } = require('internal/errors');
@@ -56,7 +59,8 @@ const {
   once: runOnce,
   setOwnProperty,
 } = require('internal/util');
-const { isPromise } = require('internal/util/types');
+const assert = require('assert');
+const { isPromise, isRegExp } = require('internal/util/types');
 const {
   validateAbortSignal,
   validateFunction,
@@ -492,6 +496,39 @@ class SuiteContext {
   }
 }
 
+function parseExpectFailure(expectFailure) {
+  if (expectFailure === undefined || expectFailure === false) {
+    return false;
+  }
+
+  if (typeof expectFailure === 'string') {
+    return { __proto__: null, label: expectFailure, match: undefined };
+  }
+
+  if (typeof expectFailure === 'function' || isRegExp(expectFailure)) {
+    return { __proto__: null, label: undefined, match: expectFailure };
+  }
+
+  if (typeof expectFailure !== 'object') {
+    return { __proto__: null, label: undefined, match: undefined };
+  }
+
+  const keys = ObjectKeys(expectFailure);
+  if (keys.length === 0) {
+    throw new ERR_INVALID_ARG_VALUE('options.expectFailure', expectFailure, 'must not be an empty object');
+  }
+
+  if (ArrayPrototypeEvery(keys, (k) => k === 'match' || k === 'label')) {
+    return {
+      __proto__: null,
+      label: expectFailure.label,
+      match: expectFailure.match,
+    };
+  }
+
+  return { __proto__: null, label: undefined, match: expectFailure };
+}
+
 class Test extends AsyncResource {
   reportedType = 'test';
   abortController;
@@ -641,7 +678,7 @@ class Test extends AsyncResource {
     this.plan = null;
     this.expectedAssertions = plan;
     this.cancelled = false;
-    this.expectFailure = expectFailure !== undefined && expectFailure !== false;
+    this.expectFailure = parseExpectFailure(expectFailure) || this.parent?.expectFailure;
     this.skipped = skip !== undefined && skip !== false;
     this.isTodo = (todo !== undefined && todo !== false) || this.parent?.isTodo;
     this.startTime = null;
@@ -955,7 +992,30 @@ class Test extends AsyncResource {
       return;
     }
 
-    if (this.expectFailure === true) {
+    if (this.expectFailure) {
+      if (typeof this.expectFailure === 'object' &&
+          this.expectFailure.match !== undefined) {
+        const { match: validation } = this.expectFailure;
+        try {
+          const errorToCheck = (
+            err?.code === 'ERR_TEST_FAILURE' &&
+            err?.failureType === kTestCodeFailure &&
+            err.cause
+          ) ?
+            err.cause :
+            err;
+          // eslint-disable-next-line no-restricted-syntax
+          assert.throws(() => { throw errorToCheck; }, validation);
+        } catch (e) {
+          this.passed = false;
+          this.error = new ERR_TEST_FAILURE(
+            'The test failed, but the error did not match the expected validation',
+            kTestCodeFailure,
+          );
+          this.error.cause = e;
+          return;
+        }
+      }
       this.passed = true;
     } else {
       this.passed = false;
@@ -965,7 +1025,7 @@ class Test extends AsyncResource {
   }
 
   pass() {
-    if (this.error == null && this.expectFailure === true && !this.skipped) {
+    if (this.error == null && this.expectFailure && !this.skipped) {
       this.passed = false;
       this.error = new ERR_TEST_FAILURE(
         'test was expected to fail but passed',
@@ -977,6 +1037,20 @@ class Test extends AsyncResource {
       return;
     }
 
+    if (this.skipped || this.isTodo) {
+      this.passed = true;
+      return;
+    }
+
+    if (this.expectFailure) {
+      this.passed = false;
+      this.error = new ERR_TEST_FAILURE(
+        'Test passed but was expected to fail',
+        kTestCodeFailure,
+      );
+      return;
+    }
+
     this.passed = true;
   }
 
@@ -1366,7 +1440,10 @@ class Test extends AsyncResource {
     } else if (this.isTodo) {
       directive = this.reporter.getTodo(this.message);
     } else if (this.expectFailure) {
-      directive = this.reporter.getXFail(this.expectFailure); // TODO(@JakobJingleheimer): support specifying failure
+      const message = typeof this.expectFailure === 'object' ?
+        this.expectFailure.label :
+        this.expectFailure;
+      directive = this.reporter.getXFail(message);
     }
 
     if (this.reportedType) {
diff --git a/test/parallel/test-runner-expect-error-but-pass.js b/test/parallel/test-runner-expect-error-but-pass.js
index b6900724fa8dbe..e300b705432e89 100644
--- a/test/parallel/test-runner-expect-error-but-pass.js
+++ b/test/parallel/test-runner-expect-error-but-pass.js
@@ -8,10 +8,9 @@ if (!process.env.NODE_TEST_CONTEXT) {
 
   stream.on('test:pass', common.mustNotCall());
   stream.on('test:fail', common.mustCall((event) => {
-    assert.strictEqual(event.expectFailure, true);
     assert.strictEqual(event.details.error.code, 'ERR_TEST_FAILURE');
     assert.strictEqual(event.details.error.failureType, 'expectedFailure');
-    assert.strictEqual(event.details.error.cause, 'test was expected to fail but passed');
+    assert.strictEqual(event.details.error.message, 'test was expected to fail but passed');
   }, 1));
 } else {
   test('passing test', { expectFailure: true }, () => {});
diff --git a/test/parallel/test-runner-xfail.js b/test/parallel/test-runner-xfail.js
new file mode 100644
index 00000000000000..b144156209a8f7
--- /dev/null
+++ b/test/parallel/test-runner-xfail.js
@@ -0,0 +1,259 @@
+'use strict';
+const common = require('../common');
+const { test, suite } = require('node:test');
+const { spawn } = require('child_process');
+const assert = require('node:assert');
+
+if (process.env.CHILD_PROCESS === 'true') {
+  test('fail with message string', { expectFailure: 'reason string' }, () => {
+    assert.fail('boom');
+  });
+
+  test('fail with label object', { expectFailure: { label: 'reason object' } }, () => {
+    assert.fail('boom');
+  });
+
+  test('fail with match regex', { expectFailure: { match: /boom/ } }, () => {
+    assert.fail('boom');
+  });
+
+  test('fail with match object', { expectFailure: { match: { message: 'boom' } } }, () => {
+    assert.fail('boom');
+  });
+
+  test('fail with match class', { expectFailure: { match: assert.AssertionError } }, () => {
+    assert.fail('boom');
+  });
+
+  test('fail with match error (wrong error)', { expectFailure: { match: /bang/ } }, () => {
+    assert.fail('boom'); // Should result in real failure because error doesn't match
+  });
+
+  test('unexpected pass', { expectFailure: true }, () => {
+    // Should result in real failure because it didn't fail
+  });
+
+  test('fail with empty string', { expectFailure: '' }, () => {
+    assert.fail('boom');
+  });
+
+  // 1. Matcher: RegExp
+  test('fails with regex matcher', { expectFailure: /expected error/ }, () => {
+    throw new Error('this is the expected error');
+  });
+
+  test('fails with regex matcher (mismatch)', { expectFailure: /expected error/ }, () => {
+    throw new Error('wrong error'); // Should fail the test
+  });
+
+  // 2. Matcher: Class
+  test('fails with class matcher', { expectFailure: RangeError }, () => {
+    throw new RangeError('out of bounds');
+  });
+
+  test('fails with class matcher (mismatch)', { expectFailure: RangeError }, () => {
+    throw new TypeError('wrong type'); // Should fail the test
+  });
+
+  // 3. Matcher: Function
+  test('fails with function matcher', {
+    expectFailure: (err) => err.code === 'ERR_FUNCTION',
+  }, () => {
+    const err = new Error('boom');
+    err.code = 'ERR_FUNCTION';
+    throw err;
+  });
+
+  test('fails with function matcher (mismatch)', {
+    expectFailure: (err) => err.code === 'ERR_FUNCTION',
+  }, () => {
+    const err = new Error('boom');
+    err.code = 'ERR_WRONG';
+    throw err; // Should fail
+  });
+
+  // 4. Matcher: Object (Properties)
+  test('fails with object matcher', { expectFailure: { code: 'ERR_TEST' } }, () => {
+    const err = new Error('boom');
+    err.code = 'ERR_TEST';
+    throw err;
+  });
+
+  test('fails with object matcher (mismatch)', { expectFailure: { code: 'ERR_TEST' } }, () => {
+    const err = new Error('boom');
+    err.code = 'ERR_WRONG';
+    throw err; // Should fail
+  });
+
+  // 5. Configuration Object: Reason + Validation
+  test('fails with config object (label + match)', {
+    expectFailure: {
+      label: 'Bug #124',
+      match: /boom/
+    }
+  }, () => {
+    throw new Error('boom');
+  });
+
+  test('fails with config object (label only)', {
+    expectFailure: { label: 'Bug #125' }
+  }, () => {
+    throw new Error('boom');
+  });
+
+  test('fails with config object (match only)', {
+    expectFailure: { match: /boom/ }
+  }, () => {
+    throw new Error('boom');
+  });
+
+  // 6. Edge Case: Empty Object (Should throw ERR_INVALID_ARG_VALUE during creation)
+  test('invalid empty object throws', () => {
+    // eslint-disable-next-line no-restricted-syntax
+    assert.throws(() => test('invalid empty object', { expectFailure: {} }, () => {}));
+  });
+
+  // 7. Primitives and Truthiness
+  test('fails with boolean true', { expectFailure: true }, () => {
+    throw new Error('any error');
+  });
+
+  // 8. Unexpected Pass (Enhanced)
+  test('unexpected pass (reason string)', { expectFailure: 'should fail' }, () => {
+    // Pass
+  });
+
+  test('unexpected pass (matcher)', { expectFailure: /boom/ }, () => {
+    // Pass
+  });
+
+  // 9. Test level expectFailure with subtests
+  test('test level expectFailure with subtests', { expectFailure: true }, async (t) => {
+    await t.test('subtest should pass if it throws', () => {
+      throw new Error('fail');
+    });
+
+    await t.test('subtest should fail if it does not throw', () => {
+      // This should fail the test because the suite expects failure,
+      // and this subtest inherited that expectation but didn't throw.
+    });
+  });
+
+  test('test level expectFailure with subtests and matcher', { expectFailure: /suite error/ }, async (t) => {
+    await t.test('subtest match suite expectation', () => {
+      throw new Error('suite error');
+    });
+  });
+
+  // 10. Suite level expectFailure
+  suite('suite level expectFailure', { expectFailure: true }, () => {
+    test('suite subtest should pass if it throws', () => {
+      throw new Error('fail');
+    });
+
+    test('suite subtest should fail if it does not throw', () => {
+      // This should fail the test because the suite expects failure,
+      // and this subtest inherited that expectation but didn't throw.
+    });
+  });
+
+  suite('suite level expectFailure with matcher', { expectFailure: /suite error/ }, () => {
+    test('suite subtest match suite expectation', () => {
+      throw new Error('suite error');
+    });
+  });
+
+  test('correct config with label and match object', {
+    expectFailure: {
+      label: 'Bug #124',
+      match: { code: 'ERR_TEST' }
+    }
+  }, () => {
+    const err = new Error('boom');
+    err.code = 'ERR_TEST';
+    throw err;
+  });
+
+  test('fails with ambiguous config (mixed props)', {
+    expectFailure: {
+      code: 'ERR_TEST',
+      label: 'Bug #124',
+    }
+  }, () => {
+    const err = new Error('boom');
+    err.code = 'ERR_TEST';
+    throw err;
+  });
+
+  test('fails with ambiguous config (mixed props with match)', {
+    expectFailure: {
+      code: 'ERR_TEST',
+      match: /message/
+    }
+  }, () => {
+    const err = new Error('message');
+    err.code = 'ERR_TEST';
+    throw err;
+  });
+
+} else {
+  const child = spawn(process.execPath, ['--test-reporter', 'tap', __filename], {
+    env: { ...process.env, CHILD_PROCESS: 'true' },
+    stdio: 'pipe',
+  });
+
+  let stdout = '';
+  child.stdout.setEncoding('utf8');
+  child.stdout.on('data', (chunk) => { stdout += chunk; });
+
+  child.on('close', common.mustCall((code) => {
+    // We expect exit code 1 because 'unexpected pass' and 'wrong error' should fail the test run
+    assert.strictEqual(code, 1);
+
+    assert.match(stdout, /ok \d+ - fail with message string # EXPECTED FAILURE reason string/);
+    assert.match(stdout, /ok \d+ - fail with label object # EXPECTED FAILURE reason object/);
+    assert.match(stdout, /ok \d+ - fail with match regex # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - fail with match object # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - fail with match class # EXPECTED FAILURE/);
+    assert.match(stdout, /not ok \d+ - fail with match error \(wrong error\) # EXPECTED FAILURE/);
+    assert.match(stdout, /not ok \d+ - unexpected pass # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - fail with empty string # EXPECTED FAILURE/);
+
+    // New tests verification
+    assert.match(stdout, /ok \d+ - fails with regex matcher # EXPECTED FAILURE/);
+    assert.match(stdout, /not ok \d+ - fails with regex matcher \(mismatch\) # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - fails with class matcher # EXPECTED FAILURE/);
+    assert.match(stdout, /not ok \d+ - fails with class matcher \(mismatch\) # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - fails with function matcher # EXPECTED FAILURE/);
+    assert.match(stdout, /not ok \d+ - fails with function matcher \(mismatch\) # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - fails with object matcher # EXPECTED FAILURE/);
+    assert.match(stdout, /not ok \d+ - fails with object matcher \(mismatch\) # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - fails with config object \(label \+ match\) # EXPECTED FAILURE Bug \\#124/);
+    assert.match(stdout, /ok \d+ - fails with config object \(label only\) # EXPECTED FAILURE Bug \\#125/);
+    assert.match(stdout, /ok \d+ - fails with config object \(match only\) # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - fails with boolean true # EXPECTED FAILURE/);
+    assert.match(stdout, /not ok \d+ - unexpected pass \(reason string\) # EXPECTED FAILURE should fail/);
+    assert.match(stdout, /not ok \d+ - unexpected pass \(matcher\) # EXPECTED FAILURE/);
+
+    // Suite inheritance verification
+    assert.match(stdout, /ok \d+ - test level expectFailure with subtests # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - subtest should pass if it throws # EXPECTED FAILURE/);
+    assert.match(stdout, /not ok \d+ - subtest should fail if it does not throw # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - test level expectFailure with subtests and matcher # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - subtest match suite expectation # EXPECTED FAILURE/);
+
+    // Suite level expectFailure verification
+    assert.match(stdout, /ok \d+ - suite level expectFailure # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - suite subtest should pass if it throws # EXPECTED FAILURE/);
+    assert.match(stdout, /not ok \d+ - suite subtest should fail if it does not throw # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - suite level expectFailure with matcher # EXPECTED FAILURE/);
+    assert.match(stdout, /ok \d+ - suite subtest match suite expectation # EXPECTED FAILURE/);
+
+    // Empty object error
+    assert.match(stdout, /ok \d+ - invalid empty object throws/);
+    assert.match(stdout, /ok \d+ - correct config with label and match object # EXPECTED FAILURE Bug \\#124/);
+    assert.match(stdout, /not ok \d+ - fails with ambiguous config \(mixed props\) # EXPECTED FAILURE/);
+    assert.match(stdout, /not ok \d+ - fails with ambiguous config \(mixed props with match\) # EXPECTED FAILURE/);
+
+  }));
+}

From bd5458db29486f2a2716b5e2931e69d5bdc3ff72 Mon Sep 17 00:00:00 2001
From: ndossche 
Date: Thu, 19 Feb 2026 16:46:15 +0100
Subject: [PATCH 114/267] crypto: fix missing nullptr check on RSA_new()

Not checking this can cause a null deref. Since there is already a
null check at the bottom of the function with `NewRSA()`.

PR-URL: https://github.com/nodejs/node/pull/61888
Reviewed-By: Anna Henningsen 
---
 src/crypto/crypto_rsa.cc | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/crypto/crypto_rsa.cc b/src/crypto/crypto_rsa.cc
index e7546cec4c1123..62ee228945c45b 100644
--- a/src/crypto/crypto_rsa.cc
+++ b/src/crypto/crypto_rsa.cc
@@ -385,6 +385,11 @@ KeyObjectData ImportJWKRsaKey(Environment* env,
   KeyType type = d_value->IsString() ? kKeyTypePrivate : kKeyTypePublic;
 
   RSAPointer rsa(RSA_new());
+  if (!rsa) {
+    THROW_ERR_CRYPTO_OPERATION_FAILED(env, "Unable to create RSA pointer");
+    return {};
+  }
+
   ncrypto::Rsa rsa_view(rsa.get());
 
   ByteSource n = ByteSource::FromEncodedString(env, n_value.As());
@@ -435,7 +440,10 @@ KeyObjectData ImportJWKRsaKey(Environment* env,
   }
 
   auto pkey = EVPKeyPointer::NewRSA(std::move(rsa));
-  if (!pkey) return {};
+  if (!pkey) {
+    THROW_ERR_CRYPTO_OPERATION_FAILED(env, "Unable to create key pointer");
+    return {};
+  }
 
   return KeyObjectData::CreateAsymmetric(type, std::move(pkey));
 }

From d74efd683407fff885c118a701e02f8dc843a020 Mon Sep 17 00:00:00 2001
From: Igor Shevelenkov <159804842+igor-shevelenkov@users.noreply.github.com>
Date: Fri, 27 Feb 2026 00:36:23 +0300
Subject: [PATCH 115/267] test_runner: run afterEach on runtime skip

Signed-off-by: Igor 
PR-URL: https://github.com/nodejs/node/pull/61525
Fixes: https://github.com/nodejs/node/issues/61462
Reviewed-By: Colin Ihrig 
Reviewed-By: Chemi Atlow 
Reviewed-By: Moshe Atlow 
Reviewed-By: Pietro Marchini 
Reviewed-By: Jacob Smith 
---
 lib/internal/test_runner/test.js              |  4 ++-
 .../test-runner-aftereach-runtime-skip.js     | 36 +++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)
 create mode 100644 test/parallel/test-runner-aftereach-runtime-skip.js

diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js
index 58421f5a252df7..7cabb3e7525195 100644
--- a/lib/internal/test_runner/test.js
+++ b/lib/internal/test_runner/test.js
@@ -1152,13 +1152,15 @@ class Test extends AsyncResource {
       ctx.plan(this.expectedAssertions);
     }
 
+    const wasSkippedBeforeRun = this.skipped;
+
     const after = async () => {
       if (this.hooks.after.length > 0) {
         await this.runHook('after', hookArgs);
       }
     };
     const afterEach = runOnce(async () => {
-      if (this.parent?.hooks.afterEach.length > 0 && !this.skipped) {
+      if (this.parent?.hooks.afterEach.length > 0 && !wasSkippedBeforeRun) {
         await this.parent.runHook('afterEach', hookArgs);
       }
     }, kRunOnceOptions);
diff --git a/test/parallel/test-runner-aftereach-runtime-skip.js b/test/parallel/test-runner-aftereach-runtime-skip.js
new file mode 100644
index 00000000000000..7a6ba2ea9cbddf
--- /dev/null
+++ b/test/parallel/test-runner-aftereach-runtime-skip.js
@@ -0,0 +1,36 @@
+'use strict';
+
+const common = require('../common');
+const assert = require('node:assert');
+const { beforeEach, afterEach, test } = require('node:test');
+
+let beforeEachTotal = 0;
+let afterEachRuntimeSkip = 0;
+let afterEachTotal = 0;
+
+beforeEach(common.mustCall(() => {
+  beforeEachTotal++;
+}, 2));
+
+afterEach(common.mustCall((t) => {
+  afterEachTotal++;
+  if (t.name === 'runtime skip') {
+    afterEachRuntimeSkip++;
+  }
+}, 2));
+
+test('normal test', (t) => {
+  t.assert.ok(true);
+});
+
+test('runtime skip', (t) => {
+  t.skip('skip after setup');
+});
+
+test('static skip', { skip: true }, common.mustNotCall());
+
+process.on('exit', () => {
+  assert.strictEqual(beforeEachTotal, 2);
+  assert.strictEqual(afterEachRuntimeSkip, 1);
+  assert.strictEqual(afterEachTotal, 2);
+});

From 7de8a303c1f0f0ef52039f207763f6fee9b6c57e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9?= 
Date: Thu, 26 Feb 2026 21:52:14 +0000
Subject: [PATCH 116/267] inspector: unwrap internal/debugger/inspect imports
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/61974
Refs: https://github.com/nodejs/node/pull/38161
Reviewed-By: Kohei Ueno 
Reviewed-By: Colin Ihrig 
Reviewed-By: Chengzhong Wu 
Reviewed-By: Gürgün Dayıoğlu 
---
 lib/internal/debugger/inspect.js | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/lib/internal/debugger/inspect.js b/lib/internal/debugger/inspect.js
index 75636b159ede2e..6a763b7770c0ed 100644
--- a/lib/internal/debugger/inspect.js
+++ b/lib/internal/debugger/inspect.js
@@ -32,11 +32,8 @@ const {
   AbortController,
 } = require('internal/abort_controller');
 
-const { 0: InspectClient, 1: createRepl } =
-    [
-      require('internal/debugger/inspect_client'),
-      require('internal/debugger/inspect_repl'),
-    ];
+const InspectClient = require('internal/debugger/inspect_client');
+const createRepl = require('internal/debugger/inspect_repl');
 
 const debuglog = util.debuglog('inspect');
 

From d91a689d6fc76f6a1cfc7625968fe12172f13b5d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 26 Feb 2026 23:20:16 +0000
Subject: [PATCH 117/267] tools: bump minimatch from 3.1.2 to 3.1.3 in
 /tools/eslint

Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.2 to 3.1.3.
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.3)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] 
PR-URL: https://github.com/nodejs/node/pull/61976
Reviewed-By: Moshe Atlow 
Reviewed-By: Antoine du Hamel 
Reviewed-By: Colin Ihrig 
Reviewed-By: Luigi Pinca 
---
 tools/eslint/package-lock.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/eslint/package-lock.json b/tools/eslint/package-lock.json
index 6b0f01c1e614b5..e2467e7d60a09d 100644
--- a/tools/eslint/package-lock.json
+++ b/tools/eslint/package-lock.json
@@ -2441,9 +2441,9 @@
       "license": "MIT"
     },
     "node_modules/minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz",
+      "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==",
       "license": "ISC",
       "dependencies": {
         "brace-expansion": "^1.1.7"

From c0680d5df727816ff7566c6cda702c645f602023 Mon Sep 17 00:00:00 2001
From: Yuya Inoue <65857152+inoway46@users.noreply.github.com>
Date: Fri, 27 Feb 2026 10:23:58 +0900
Subject: [PATCH 118/267] test: avoid flaky debugger restart waits

PR-URL: https://github.com/nodejs/node/pull/61773
Refs: https://github.com/nodejs/node/issues/61762
Reviewed-By: Matteo Collina 
Reviewed-By: Luigi Pinca 
---
 test/parallel/test-debugger-restart-message.js        | 6 +++++-
 test/parallel/test-debugger-run-after-quit-restart.js | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/test/parallel/test-debugger-restart-message.js b/test/parallel/test-debugger-restart-message.js
index 292a15bd9f4d7a..5803d0ad262058 100644
--- a/test/parallel/test-debugger-restart-message.js
+++ b/test/parallel/test-debugger-restart-message.js
@@ -25,7 +25,11 @@ const startCLI = require('../common/debugger');
       assert.strictEqual(cli.output.match(listeningRegExp).length, 1);
 
       for (let i = 0; i < RESTARTS; i++) {
-        await cli.stepCommand('restart');
+        // For `restart`, sync on attach/prompt instead of BREAK_MESSAGE to avoid flaky races.
+        // https://github.com/nodejs/node/issues/61762
+        await cli.command('restart');
+        await cli.waitFor(/Debugger attached\./);
+        await cli.waitForPrompt();
         assert.strictEqual(cli.output.match(listeningRegExp).length, 1);
       }
     } finally {
diff --git a/test/parallel/test-debugger-run-after-quit-restart.js b/test/parallel/test-debugger-run-after-quit-restart.js
index 538798758601df..8ea8b74035edf6 100644
--- a/test/parallel/test-debugger-run-after-quit-restart.js
+++ b/test/parallel/test-debugger-run-after-quit-restart.js
@@ -57,7 +57,7 @@ const path = require('path');
         { filename: script, line: 2 },
       );
     })
-    .then(() => cli.stepCommand('restart'))
+    .then(() => cli.command('restart'))
     .then(() => cli.waitForInitialBreak())
     .then(() => {
       assert.deepStrictEqual(

From 16b8cc66432b454879db56ba10d64ecb4f5eecf4 Mon Sep 17 00:00:00 2001
From: Ms2ger 
Date: Fri, 27 Feb 2026 11:25:22 +0100
Subject: [PATCH 119/267] lib: improve argument handling in Blob constructor
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

As specified in WebIDL (),
the fields of a dictionary need to be read in lexicographical order.

PR-URL: https://github.com/nodejs/node/pull/61980
Reviewed-By: Jason Zhang 
Reviewed-By: Mattias Buelens 
Reviewed-By: René 
Reviewed-By: Luigi Pinca 
Reviewed-By: Colin Ihrig 
---
 lib/internal/blob.js              | 2 +-
 test/wpt/status/FileAPI/blob.json | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/internal/blob.js b/lib/internal/blob.js
index 46abb4f793c465..e42773a8d03dcc 100644
--- a/lib/internal/blob.js
+++ b/lib/internal/blob.js
@@ -149,8 +149,8 @@ class Blob {
     }
     validateDictionary(options, 'options');
     let {
-      type = '',
       endings = 'transparent',
+      type = '',
     } = options ?? kEmptyObject;
 
     endings = `${endings}`;
diff --git a/test/wpt/status/FileAPI/blob.json b/test/wpt/status/FileAPI/blob.json
index 3bbd15087a02ac..a82a9cb0cfdb11 100644
--- a/test/wpt/status/FileAPI/blob.json
+++ b/test/wpt/status/FileAPI/blob.json
@@ -10,7 +10,6 @@
         "blobParts not an object: BigInt with BigInt.prototype[Symbol.iterator]",
         "blobParts not an object: Symbol with Symbol.prototype[Symbol.iterator]",
         "Getters and value conversions should happen in order until an exception is thrown.",
-        "options properties should be accessed in lexicographic order.",
         "Arguments should be evaluated from left to right."
       ],
       "flaky": [

From 2ea06727c67e4342887bdbe6933a9d1413f5666b Mon Sep 17 00:00:00 2001
From: Richard Lau 
Date: Fri, 27 Feb 2026 16:16:21 +0000
Subject: [PATCH 120/267] test: skip strace test with shared openssl

`parallel/test-strace-openat-openssl` was added to check explicitly
for a list of known files that would be opened for a set workload
(`require("crypto")`). This is not reliable when Node.js is linked
to an external/shared OpenSSL library (e.g. it might be configured
to load configuration files from a different default location and/or
load more than one configuration file) so skip this test when Node.js
is built in that way.

PR-URL: https://github.com/nodejs/node/pull/61987
Fixes: https://github.com/nodejs/node/issues/61966
Reviewed-By: Antoine du Hamel 
Reviewed-By: Yagiz Nizipli 
Reviewed-By: Luigi Pinca 
Reviewed-By: Colin Ihrig 
Reviewed-By: Rafael Gonzaga 
---
 test/parallel/test-strace-openat-openssl.js | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/test/parallel/test-strace-openat-openssl.js b/test/parallel/test-strace-openat-openssl.js
index 234c12f126f093..399c1db443f9f0 100644
--- a/test/parallel/test-strace-openat-openssl.js
+++ b/test/parallel/test-strace-openat-openssl.js
@@ -11,6 +11,9 @@ if (!common.isLinux)
   common.skip('linux only');
 if (common.isASan)
   common.skip('strace does not work well with address sanitizer builds');
+if (process.config.variables.node_shared_openssl) {
+  common.skip('external shared openssl may open other files');
+}
 if (spawnSync('strace').error !== undefined) {
   common.skip('missing strace');
 }

From a82003bf8b199426fb871380690524a12ccf01fa Mon Sep 17 00:00:00 2001
From: Mert Can Altin 
Date: Fri, 27 Feb 2026 21:36:59 +0300
Subject: [PATCH 121/267] buffer: optimize buffer.concat performance
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/61721
Reviewed-By: René 
Reviewed-By: Gürgün Dayıoğlu 
Reviewed-By: Yagiz Nizipli 
---
 lib/buffer.js                       | 49 +++++++++++++++++++++++------
 test/parallel/test-buffer-concat.js | 10 ++++++
 2 files changed, 50 insertions(+), 9 deletions(-)

diff --git a/lib/buffer.js b/lib/buffer.js
index c43f2a2f4a36f9..5ee849edc1d563 100644
--- a/lib/buffer.js
+++ b/lib/buffer.js
@@ -51,6 +51,7 @@ const {
   TypedArrayPrototypeGetLength,
   TypedArrayPrototypeSet,
   TypedArrayPrototypeSlice,
+  TypedArrayPrototypeSubarray,
   Uint8Array,
   Uint8ArrayPrototype,
 } = primordials;
@@ -626,25 +627,55 @@ Buffer.concat = function concat(list, length) {
   if (length === undefined) {
     length = 0;
     for (let i = 0; i < list.length; i++) {
-      if (list[i].length) {
-        length += list[i].length;
+      const buf = list[i];
+      if (!isUint8Array(buf)) {
+        // TODO(BridgeAR): This should not be of type ERR_INVALID_ARG_TYPE.
+        // Instead, find the proper error code for this.
+        throw new ERR_INVALID_ARG_TYPE(
+          `list[${i}]`, ['Buffer', 'Uint8Array'], buf);
       }
+      length += TypedArrayPrototypeGetByteLength(buf);
     }
-  } else {
-    validateOffset(length, 'length');
+
+    const buffer = allocate(length);
+    let pos = 0;
+    for (let i = 0; i < list.length; i++) {
+      const buf = list[i];
+      const bufLength = TypedArrayPrototypeGetByteLength(buf);
+      TypedArrayPrototypeSet(buffer, buf, pos);
+      pos += bufLength;
+    }
+
+    if (pos < length) {
+      TypedArrayPrototypeFill(buffer, 0, pos, length);
+    }
+    return buffer;
   }
 
-  const buffer = Buffer.allocUnsafe(length);
-  let pos = 0;
+  validateOffset(length, 'length');
   for (let i = 0; i < list.length; i++) {
-    const buf = list[i];
-    if (!isUint8Array(buf)) {
+    if (!isUint8Array(list[i])) {
       // TODO(BridgeAR): This should not be of type ERR_INVALID_ARG_TYPE.
       // Instead, find the proper error code for this.
       throw new ERR_INVALID_ARG_TYPE(
         `list[${i}]`, ['Buffer', 'Uint8Array'], list[i]);
     }
-    pos += _copyActual(buf, buffer, pos, 0, buf.length, true);
+  }
+
+  const buffer = allocate(length);
+  let pos = 0;
+  for (let i = 0; i < list.length; i++) {
+    const buf = list[i];
+    const bufLength = TypedArrayPrototypeGetByteLength(buf);
+    if (pos + bufLength > length) {
+      TypedArrayPrototypeSet(buffer,
+                             TypedArrayPrototypeSubarray(buf, 0, length - pos),
+                             pos);
+      pos = length;
+      break;
+    }
+    TypedArrayPrototypeSet(buffer, buf, pos);
+    pos += bufLength;
   }
 
   // Note: `length` is always equal to `buffer.length` at this point
diff --git a/test/parallel/test-buffer-concat.js b/test/parallel/test-buffer-concat.js
index 9323126897d691..b955ce1a8bf6ec 100644
--- a/test/parallel/test-buffer-concat.js
+++ b/test/parallel/test-buffer-concat.js
@@ -123,3 +123,13 @@ assert.deepStrictEqual(
 assert.deepStrictEqual(Buffer.concat([new Uint8Array([0x41, 0x42]),
                                       new Uint8Array([0x43, 0x44])]),
                        Buffer.from('ABCD'));
+
+// Spoofed length getter should not cause uninitialized memory exposure
+{
+  const u8_1 = new Uint8Array([1, 2, 3, 4]);
+  const u8_2 = new Uint8Array([5, 6, 7, 8]);
+  Object.defineProperty(u8_1, 'length', { get() { return 100; } });
+  const buf = Buffer.concat([u8_1, u8_2]);
+  assert.strictEqual(buf.length, 8);
+  assert.deepStrictEqual(buf, Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]));
+}

From 6ac4304c87384b816e41e54c8720443f10ee5a50 Mon Sep 17 00:00:00 2001
From: Mert Can Altin 
Date: Fri, 27 Feb 2026 22:00:28 +0300
Subject: [PATCH 122/267] sqlite: add limits property to DatabaseSync
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/61298
Fixes: https://github.com/nodejs/node/issues/61268
Reviewed-By: René 
Reviewed-By: Yagiz Nizipli 
---
 doc/api/sqlite.md                   |  49 +++++
 src/env_properties.h                |   2 +
 src/node_sqlite.cc                  | 272 +++++++++++++++++++++++++
 src/node_sqlite.h                   |  80 ++++++++
 test/parallel/test-sqlite-limits.js | 304 ++++++++++++++++++++++++++++
 5 files changed, 707 insertions(+)
 create mode 100644 test/parallel/test-sqlite-limits.js

diff --git a/doc/api/sqlite.md b/doc/api/sqlite.md
index f893d7584de759..41db310ebfe77a 100644
--- a/doc/api/sqlite.md
+++ b/doc/api/sqlite.md
@@ -156,6 +156,23 @@ changes:
     language features that allow ordinary SQL to deliberately corrupt the database file are disabled.
     The defensive flag can also be set using `enableDefensive()`.
     **Default:** `true`.
+  * `limits` {Object} Configuration for various SQLite limits. These limits
+    can be used to prevent excessive resource consumption when handling
+    potentially malicious input. See [Run-Time Limits][] and [Limit Constants][]
+    in the SQLite documentation for details. Default values are determined by
+    SQLite's compile-time defaults and may vary depending on how SQLite was
+    built. The following properties are supported:
+    * `length` {number} Maximum length of a string or BLOB.
+    * `sqlLength` {number} Maximum length of an SQL statement.
+    * `column` {number} Maximum number of columns.
+    * `exprDepth` {number} Maximum depth of an expression tree.
+    * `compoundSelect` {number} Maximum number of terms in a compound SELECT.
+    * `vdbeOp` {number} Maximum number of VDBE instructions.
+    * `functionArg` {number} Maximum number of function arguments.
+    * `attach` {number} Maximum number of attached databases.
+    * `likePatternLength` {number} Maximum length of a LIKE pattern.
+    * `variableNumber` {number} Maximum number of SQL variables.
+    * `triggerDepth` {number} Maximum trigger recursion depth.
 
 Constructs a new `DatabaseSync` instance.
 
@@ -437,6 +454,36 @@ added: v24.0.0
 * Type: {boolean} Whether the database is currently within a transaction. This method
   is a wrapper around [`sqlite3_get_autocommit()`][].
 
+### `database.limits`
+
+
+
+* Type: {Object}
+
+An object for getting and setting SQLite database limits at runtime.
+Each property corresponds to an SQLite limit and can be read or written.
+
+```js
+const db = new DatabaseSync(':memory:');
+
+// Read current limit
+console.log(db.limits.length);
+
+// Set a new limit
+db.limits.sqlLength = 100000;
+
+// Reset a limit to its compile-time maximum
+db.limits.sqlLength = Infinity;
+```
+
+Available properties: `length`, `sqlLength`, `column`, `exprDepth`,
+`compoundSelect`, `vdbeOp`, `functionArg`, `attach`, `likePatternLength`,
+`variableNumber`, `triggerDepth`.
+
+Setting a property to `Infinity` resets the limit to its compile-time maximum value.
+
 ### `database.open()`
 
 
 
-Type: Runtime
+Type: Application (non-`node_modules` code only)
 
 The [`punycode`][] module is deprecated. Please use a userland alternative
 instead.

From 8511b1c7840fedbda15de33223cd5cc2afb643ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9?= 
Date: Wed, 25 Feb 2026 21:29:41 +0000
Subject: [PATCH 126/267] doc: fix module.stripTypeScriptTypes indentation

PR-URL: https://github.com/nodejs/node/pull/61992
Reviewed-By: Chengzhong Wu 
Reviewed-By: Jacob Smith 
Reviewed-By: Marco Ippolito 
Reviewed-By: Harshitha K P 
Reviewed-By: Colin Ihrig 
Reviewed-By: Luigi Pinca 
---
 doc/api/module.md | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/doc/api/module.md b/doc/api/module.md
index 4904b9f172bef4..97aec1bbd61edb 100644
--- a/doc/api/module.md
+++ b/doc/api/module.md
@@ -257,16 +257,20 @@ added:
     will be generated for the transformed code.
   * `sourceUrl` {string}  Specifies the source url used in the source map.
 * Returns: {string} The code with type annotations stripped.
-  `module.stripTypeScriptTypes()` removes type annotations from TypeScript code. It
-  can be used to strip type annotations from TypeScript code before running it
-  with `vm.runInContext()` or `vm.compileFunction()`.
-  By default, it will throw an error if the code contains TypeScript features
-  that require transformation such as `Enums`,
-  see [type-stripping][] for more information.
-  When mode is `'transform'`, it also transforms TypeScript features to JavaScript,
-  see [transform TypeScript features][] for more information.
-  When mode is `'strip'`, source maps are not generated, because locations are preserved.
-  If `sourceMap` is provided, when mode is `'strip'`, an error will be thrown.
+
+`module.stripTypeScriptTypes()` removes type annotations from TypeScript code. It
+can be used to strip type annotations from TypeScript code before running it
+with `vm.runInContext()` or `vm.compileFunction()`.
+
+By default, it will throw an error if the code contains TypeScript features
+that require transformation such as `Enums`,
+see [type-stripping][] for more information.
+
+When mode is `'transform'`, it also transforms TypeScript features to JavaScript,
+see [transform TypeScript features][] for more information.
+
+When mode is `'strip'`, source maps are not generated, because locations are preserved.
+If `sourceMap` is provided, when mode is `'strip'`, an error will be thrown.
 
 _WARNING_: The output of this function should not be considered stable across Node.js versions,
 due to changes in the TypeScript parser.

From 131929546728721d9450cf9f962f1d69a598aac1 Mon Sep 17 00:00:00 2001
From: Antoine du Hamel 
Date: Sun, 1 Mar 2026 11:58:04 +0100
Subject: [PATCH 127/267] test: skip `test-url` on `--shared-ada` builds

PR-URL: https://github.com/nodejs/node/pull/62019
Reviewed-By: Filip Skokan 
Reviewed-By: Chengzhong Wu 
Reviewed-By: Richard Lau 
Reviewed-By: Luigi Pinca 
Reviewed-By: Yagiz Nizipli 
---
 test/wpt/test-url.js | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/test/wpt/test-url.js b/test/wpt/test-url.js
index fc84c22a275c38..7f1ae43fc61080 100644
--- a/test/wpt/test-url.js
+++ b/test/wpt/test-url.js
@@ -1,5 +1,11 @@
 'use strict';
 
+const { skip } = require('../common');
+
+if (process.config.variables.node_shared_ada) {
+  skip('Different versions of Ada affect the WPT tests');
+}
+
 const { WPTRunner } = require('../common/wpt');
 
 const runner = new WPTRunner('url');

From f79df03e0bc3eb870a8d624dc03aab359e2b952e Mon Sep 17 00:00:00 2001
From: Antoine du Hamel 
Date: Sun, 1 Mar 2026 12:33:00 +0100
Subject: [PATCH 128/267] test: remove unnecessary `process.exit` calls from
 test files
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62020
Reviewed-By: Jacob Smith 
Reviewed-By: Michaël Zasso 
Reviewed-By: Colin Ihrig 
Reviewed-By: Pietro Marchini 
Reviewed-By: Luigi Pinca 
Reviewed-By: Benjamin Gruenbaum 
---
 benchmark/buffers/buffer-transcode.js          |  2 +-
 ...ocess-fork-advanced-header-serialization.js |  6 ++----
 test/parallel/test-child-process-internal.js   |  3 ---
 test/parallel/test-child-process-silent.js     |  6 ++----
 .../test-child-process-spawnsync-input.js      |  1 -
 .../test-child-process-stdout-flush-exit.js    |  1 -
 test/parallel/test-cli-eval.js                 |  2 +-
 .../test-inspector-port-zero-cluster.js        | 12 ++++--------
 test/parallel/test-net-listen-twice.js         |  2 +-
 .../test-permission-allow-child-process-cli.js |  2 +-
 .../test-permission-allow-worker-cli.js        |  2 +-
 .../test-permission-child-process-cli.js       |  2 +-
 test/parallel/test-process-env.js              |  2 +-
 test/parallel/test-trace-exit.js               | 18 +++++++-----------
 test/parallel/test-worker-safe-getters.js      |  2 --
 .../test-worker-stdio-flush-inflight.js        |  1 -
 test/parallel/test-worker-thread-name.js       |  1 -
 17 files changed, 22 insertions(+), 43 deletions(-)

diff --git a/benchmark/buffers/buffer-transcode.js b/benchmark/buffers/buffer-transcode.js
index cbb3b2e9b16374..4f985ac408459b 100644
--- a/benchmark/buffers/buffer-transcode.js
+++ b/benchmark/buffers/buffer-transcode.js
@@ -8,7 +8,7 @@ const encodings = ['latin1', 'ascii', 'ucs2', 'utf8'];
 
 if (!hasIntl) {
   console.log('Skipping: `transcode` is only available on platforms that support i18n`');
-  process.exit(0);
+  return;
 }
 
 const bench = common.createBenchmark(main, {
diff --git a/test/parallel/test-child-process-fork-advanced-header-serialization.js b/test/parallel/test-child-process-fork-advanced-header-serialization.js
index 27c15649e732d6..85116a1b5d16e0 100644
--- a/test/parallel/test-child-process-fork-advanced-header-serialization.js
+++ b/test/parallel/test-child-process-fork-advanced-header-serialization.js
@@ -13,11 +13,9 @@ if (process.argv[2] === 'child-buffer') {
     v & 0xFF,
   ]);
   const fd = process.channel?.fd;
-  if (fd === undefined) {
-    // skip test
-    process.exit(0);
+  if (fd !== undefined) {
+    fs.writeSync(fd, payload);
   }
-  fs.writeSync(fd, payload);
   return;
 }
 
diff --git a/test/parallel/test-child-process-internal.js b/test/parallel/test-child-process-internal.js
index c6ce0a8e04718c..345d4951742393 100644
--- a/test/parallel/test-child-process-internal.js
+++ b/test/parallel/test-child-process-internal.js
@@ -34,9 +34,6 @@ if (process.argv[2] === 'child') {
 
   // Send internal message
   process.send(internal);
-
-  process.exit(0);
-
 } else {
 
   const fork = require('child_process').fork;
diff --git a/test/parallel/test-child-process-silent.js b/test/parallel/test-child-process-silent.js
index 892c4527c9e2a2..3c0acf97555d0d 100644
--- a/test/parallel/test-child-process-silent.js
+++ b/test/parallel/test-child-process-silent.js
@@ -20,7 +20,7 @@
 // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 'use strict';
-require('../common');
+const common = require('../common');
 const assert = require('assert');
 const childProcess = require('child_process');
 
@@ -44,9 +44,7 @@ if (process.argv[2] === 'pipe') {
   // Allow child process to self terminate
   child.disconnect();
 
-  child.on('exit', function() {
-    process.exit(0);
-  });
+  child.on('exit', common.mustCall());
 
 } else {
   // Testcase | start primary && child IPC test
diff --git a/test/parallel/test-child-process-spawnsync-input.js b/test/parallel/test-child-process-spawnsync-input.js
index 62ae476ae17caa..f0c3d3d78978d0 100644
--- a/test/parallel/test-child-process-spawnsync-input.js
+++ b/test/parallel/test-child-process-spawnsync-input.js
@@ -65,7 +65,6 @@ if (process.argv.includes('spawnchild')) {
       checkSpawnSyncRet(ret);
       break;
   }
-  process.exit(0);
   return;
 }
 
diff --git a/test/parallel/test-child-process-stdout-flush-exit.js b/test/parallel/test-child-process-stdout-flush-exit.js
index 90f746c39ef6d3..4c5de7d9a2b42d 100644
--- a/test/parallel/test-child-process-stdout-flush-exit.js
+++ b/test/parallel/test-child-process-stdout-flush-exit.js
@@ -36,7 +36,6 @@ if (process.argv[2] === 'child') {
     console.log('filler');
   }
   console.log('goodbye');
-  process.exit(0);
 } else {
   // parent process
   const spawn = require('child_process').spawn;
diff --git a/test/parallel/test-cli-eval.js b/test/parallel/test-cli-eval.js
index 8d765f10fbcbdb..2e5b3dc5992abc 100644
--- a/test/parallel/test-cli-eval.js
+++ b/test/parallel/test-cli-eval.js
@@ -35,7 +35,7 @@ const fixtures = require('../common/fixtures');
 
 if (process.argv.length > 2) {
   console.log(process.argv.slice(2).join(' '));
-  process.exit(0);
+  return;
 }
 
 // Assert that nothing is written to stdout.
diff --git a/test/parallel/test-inspector-port-zero-cluster.js b/test/parallel/test-inspector-port-zero-cluster.js
index 5ee7bcf7417345..8b17dbee73500b 100644
--- a/test/parallel/test-inspector-port-zero-cluster.js
+++ b/test/parallel/test-inspector-port-zero-cluster.js
@@ -35,7 +35,7 @@ function serialFork() {
 
 if (cluster.isPrimary) {
   Promise.all([serialFork(), serialFork(), serialFork()])
-    .then(common.mustCall((ports) => {
+    .then((ports) => {
       ports.splice(0, 0, process.debugPort);
       // 4 = [primary, worker1, worker2, worker3].length()
       assert.strictEqual(ports.length, 4);
@@ -44,12 +44,8 @@ if (cluster.isPrimary) {
       assert.strictEqual(ports[0] === 65535 ? 1024 : ports[0] + 1, ports[1]);
       assert.strictEqual(ports[1] === 65535 ? 1024 : ports[1] + 1, ports[2]);
       assert.strictEqual(ports[2] === 65535 ? 1024 : ports[2] + 1, ports[3]);
-    }))
-    .catch(
-      (err) => {
-        console.error(err);
-        process.exit(1);
-      });
+    })
+    .then(common.mustCall());
 } else {
-  process.exit(0);
+  process.disconnect();
 }
diff --git a/test/parallel/test-net-listen-twice.js b/test/parallel/test-net-listen-twice.js
index 5a2399ea217005..281868da5a9eb7 100644
--- a/test/parallel/test-net-listen-twice.js
+++ b/test/parallel/test-net-listen-twice.js
@@ -19,7 +19,7 @@ if (cluster.isPrimary) {
     server.listen();
   } catch (e) {
     console.error(e);
-    process.exit(0);
+    return;
   }
   let i = 0;
   process.on('internalMessage', (msg) => {
diff --git a/test/parallel/test-permission-allow-child-process-cli.js b/test/parallel/test-permission-allow-child-process-cli.js
index d82332ba3d5084..640a043d9f5d25 100644
--- a/test/parallel/test-permission-allow-child-process-cli.js
+++ b/test/parallel/test-permission-allow-child-process-cli.js
@@ -24,7 +24,7 @@ if (process.argv[2] === 'child') {
     code: 'ERR_ACCESS_DENIED',
     permission: 'FileSystemWrite',
   }));
-  process.exit(0);
+  return;
 }
 
 // Guarantee the initial state
diff --git a/test/parallel/test-permission-allow-worker-cli.js b/test/parallel/test-permission-allow-worker-cli.js
index 8ccbc5d4960885..228d1ea5607fc1 100644
--- a/test/parallel/test-permission-allow-worker-cli.js
+++ b/test/parallel/test-permission-allow-worker-cli.js
@@ -6,7 +6,7 @@ const assert = require('assert');
 const { isMainThread, Worker } = require('worker_threads');
 
 if (!isMainThread) {
-  process.exit(0);
+  return;
 }
 
 // Guarantee the initial state
diff --git a/test/parallel/test-permission-child-process-cli.js b/test/parallel/test-permission-child-process-cli.js
index abd4271257b6fa..3330bcddd96f9d 100644
--- a/test/parallel/test-permission-child-process-cli.js
+++ b/test/parallel/test-permission-child-process-cli.js
@@ -12,7 +12,7 @@ const assert = require('assert');
 const childProcess = require('child_process');
 
 if (process.argv[2] === 'child') {
-  process.exit(0);
+  return;
 }
 
 // Guarantee the initial state
diff --git a/test/parallel/test-process-env.js b/test/parallel/test-process-env.js
index f20be5a194dbf9..a27e5eb5ffd347 100644
--- a/test/parallel/test-process-env.js
+++ b/test/parallel/test-process-env.js
@@ -31,7 +31,7 @@ if (process.argv[2] === 'you-are-the-child') {
   assert.strictEqual(process.env.hasOwnProperty, 'asdf');
   const has = Object.hasOwn(process.env, 'hasOwnProperty');
   assert.strictEqual(has, true);
-  process.exit(0);
+  return;
 }
 
 {
diff --git a/test/parallel/test-trace-exit.js b/test/parallel/test-trace-exit.js
index 7a4c222c40f74c..bfe412c5fba9c7 100644
--- a/test/parallel/test-trace-exit.js
+++ b/test/parallel/test-trace-exit.js
@@ -7,26 +7,22 @@ const { Worker, isMainThread, workerData } = require('worker_threads');
 
 const variant = process.argv[process.argv.length - 1];
 switch (true) {
-  case variant === 'main-thread': {
-    return;
-  }
-  case variant === 'main-thread-exit': {
+  case isMainThread ? variant === 'main-thread-exit' : workerData === 'worker-thread-exit':
     return process.exit(0);
-  }
   case variant.startsWith('worker-thread'): {
     const worker = new Worker(__filename, { workerData: variant });
     worker.on('error', common.mustNotCall());
     worker.on('exit', common.mustCall((code) => {
       assert.strictEqual(code, 0);
     }));
-    return;
   }
-  case !isMainThread: {
-    if (workerData === 'worker-thread-exit') {
-      process.exit(0);
-    }
+  // eslint-disable-next-line no-fallthrough
+  case variant === 'main-thread':
+  // eslint-disable-next-line no-fallthrough
+  case variant === 'main-thread-exit':
+  // eslint-disable-next-line no-fallthrough
+  case !isMainThread:
     return;
-  }
 }
 
 (async function() {
diff --git a/test/parallel/test-worker-safe-getters.js b/test/parallel/test-worker-safe-getters.js
index 69856659a5773b..a22f92b3354a4b 100644
--- a/test/parallel/test-worker-safe-getters.js
+++ b/test/parallel/test-worker-safe-getters.js
@@ -29,6 +29,4 @@ if (isMainThread) {
     assert.strictEqual(w.stdout, stdout);
     assert.strictEqual(w.stderr, stderr);
   }));
-} else {
-  process.exit(0);
 }
diff --git a/test/parallel/test-worker-stdio-flush-inflight.js b/test/parallel/test-worker-stdio-flush-inflight.js
index 34b81152811e7b..a51656ca1ec880 100644
--- a/test/parallel/test-worker-stdio-flush-inflight.js
+++ b/test/parallel/test-worker-stdio-flush-inflight.js
@@ -20,5 +20,4 @@ if (isMainThread) {
   process.stdout.write('hello');
   process.stdout.write(' ');
   process.stdout.write('world');
-  process.exit(0);
 }
diff --git a/test/parallel/test-worker-thread-name.js b/test/parallel/test-worker-thread-name.js
index 47e497b07b5164..541761b4e2d1b7 100644
--- a/test/parallel/test-worker-thread-name.js
+++ b/test/parallel/test-worker-thread-name.js
@@ -8,7 +8,6 @@ const name = 'test-worker-thread-name';
 
 if (workerData?.isWorker) {
   assert.strictEqual(threadName, name);
-  process.exit(0);
 } else {
   const w = new Worker(__filename, { name, workerData: { isWorker: true } });
   assert.strictEqual(w.threadName, name);

From 492868a7aa8c9d5f1a442e8261fa3e55a6631ea6 Mon Sep 17 00:00:00 2001
From: Richard Lau 
Date: Sun, 1 Mar 2026 13:50:25 +0000
Subject: [PATCH 129/267] tools: fix permissions for merve update script

Add execute permission for `tools/dep_updaters/update-merve.sh` so that
the "Tools and deps update" workflow can run it.

PR-URL: https://github.com/nodejs/node/pull/62023
Reviewed-By: Rafael Gonzaga 
Reviewed-By: Colin Ihrig 
Reviewed-By: Luigi Pinca 
---
 tools/dep_updaters/update-merve.sh | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 mode change 100644 => 100755 tools/dep_updaters/update-merve.sh

diff --git a/tools/dep_updaters/update-merve.sh b/tools/dep_updaters/update-merve.sh
old mode 100644
new mode 100755

From 191c433db87b0a2f1607159123c00c25567741f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9?= 
Date: Sun, 1 Mar 2026 14:01:51 +0000
Subject: [PATCH 130/267] doc: fix small logic error in DETECT_MODULE_SYNTAX

PR-URL: https://github.com/nodejs/node/pull/62025
Reviewed-By: Jacob Smith 
Reviewed-By: Marco Ippolito 
Reviewed-By: Zijian Liu 
Reviewed-By: Colin Ihrig 
Reviewed-By: Luigi Pinca 
Reviewed-By: Darshan Sen 
---
 doc/api/esm.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/api/esm.md b/doc/api/esm.md
index 838e0810012ad5..d55f7f5c81386a 100644
--- a/doc/api/esm.md
+++ b/doc/api/esm.md
@@ -1263,7 +1263,7 @@ _isImports_, _conditions_)
 >    2. If _source_ contains a top-level lexical declaration (`const`, `let`,
 >       or `class`) of any of the CommonJS wrapper variables (`require`,
 >       `exports`, `module`, `__filename`, or `__dirname`) then return **true**.
-> 3. Else return **false**.
+> 3. Return **false**.
 
 ### Customizing ESM specifier resolution algorithm
 

From de1bcfd54ce07248c350a1e4111420c056faf937 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 1 Mar 2026 14:27:07 +0000
Subject: [PATCH 131/267] tools: bump minimatch from 3.1.2 to 3.1.3 in
 `/tools/clang-format`

Bumps [minimatch](https://github.com/isaacs/minimatch)
from 3.1.2 to 3.1.3.
- [Changelog](http://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.3)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] 
PR-URL: https://github.com/nodejs/node/pull/61977
Reviewed-By: Antoine du Hamel 
Reviewed-By: Richard Lau 
Reviewed-By: Colin Ihrig 
Reviewed-By: Luigi Pinca 
---
 tools/clang-format/package-lock.json | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/clang-format/package-lock.json b/tools/clang-format/package-lock.json
index 3f5dab7088f3d8..e643a65e5d1966 100644
--- a/tools/clang-format/package-lock.json
+++ b/tools/clang-format/package-lock.json
@@ -118,9 +118,9 @@
       }
     },
     "node_modules/minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz",
+      "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==",
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -271,9 +271,9 @@
       }
     },
     "minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz",
+      "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==",
       "requires": {
         "brace-expansion": "^1.1.7"
       }

From 671ddec2b9713a6b4fd26a6a9c32048f14144de6 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" 
Date: Sun, 1 Mar 2026 09:27:16 -0500
Subject: [PATCH 132/267] deps: update minimatch to 10.2.4
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62016
Reviewed-By: Colin Ihrig 
Reviewed-By: Richard Lau 
Reviewed-By: Luigi Pinca 
Reviewed-By: Gürgün Dayıoğlu 
---
 deps/minimatch/README.md                      |  73 ++++
 .../dist/commonjs/assert-valid-pattern.d.ts   |   2 +-
 .../commonjs/assert-valid-pattern.d.ts.map    |   2 +-
 .../dist/commonjs/assert-valid-pattern.js.map |   2 +-
 deps/minimatch/dist/commonjs/ast.d.ts         |   2 +
 deps/minimatch/dist/commonjs/ast.d.ts.map     |   2 +-
 deps/minimatch/dist/commonjs/ast.js           | 287 +++++++++++++-
 deps/minimatch/dist/commonjs/ast.js.map       |   2 +-
 deps/minimatch/dist/commonjs/index.d.ts       |  30 ++
 deps/minimatch/dist/commonjs/index.d.ts.map   |   2 +-
 deps/minimatch/dist/commonjs/index.js         | 270 ++++++++-----
 deps/minimatch/dist/commonjs/index.js.map     |   2 +-
 .../dist/esm/assert-valid-pattern.d.ts        |   2 +-
 .../dist/esm/assert-valid-pattern.d.ts.map    |   2 +-
 .../dist/esm/assert-valid-pattern.js.map      |   2 +-
 deps/minimatch/dist/esm/ast.d.ts              |   2 +
 deps/minimatch/dist/esm/ast.d.ts.map          |   2 +-
 deps/minimatch/dist/esm/ast.js                | 287 +++++++++++++-
 deps/minimatch/dist/esm/ast.js.map            |   2 +-
 deps/minimatch/dist/esm/index.d.ts            |  30 ++
 deps/minimatch/dist/esm/index.d.ts.map        |   2 +-
 deps/minimatch/dist/esm/index.js              | 270 ++++++++-----
 deps/minimatch/dist/esm/index.js.map          |   2 +-
 deps/minimatch/index.js                       | 374 ++++++++++++++----
 deps/minimatch/package-lock.json              | 287 +++++++-------
 deps/minimatch/package.json                   |   4 +-
 26 files changed, 1500 insertions(+), 444 deletions(-)

diff --git a/deps/minimatch/README.md b/deps/minimatch/README.md
index 9b71db5f8888c2..2203ca6718fa18 100644
--- a/deps/minimatch/README.md
+++ b/deps/minimatch/README.md
@@ -7,6 +7,43 @@ This is the matching library used internally by npm.
 It works by converting glob expressions into JavaScript `RegExp`
 objects.
 
+## Important Security Consideration!
+
+> [!WARNING]  
+> This library uses JavaScript regular expressions. Please read
+> the following warning carefully, and be thoughtful about what
+> you provide to this library in production systems.
+
+_Any_ library in JavaScript that deals with matching string
+patterns using regular expressions will be  subject to
+[ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)
+if the pattern is generated using untrusted input.
+
+Efforts have been made to mitigate risk as much as is feasible in
+such a library, providing maximum recursion depths and so forth,
+but these measures can only ultimately protect against accidents,
+not malice. A dedicated attacker can _always_ find patterns that
+cannot be defended against by a bash-compatible glob pattern
+matching system that uses JavaScript regular expressions.
+
+To be extremely clear:
+
+> [!WARNING]  
+> **If you create a system where you take user input, and use
+> that input as the source of a Regular Expression pattern, in
+> this or any extant glob matcher in JavaScript, you will be
+> pwned.**
+
+A future version of this library _may_ use a different matching
+algorithm which does not exhibit backtracking problems. If and
+when that happens, it will likely be a sweeping change, and those
+improvements will **not** be backported to legacy versions.
+
+In the near term, it is not reasonable to continue to play
+whack-a-mole with security advisories, and so any future ReDoS
+reports will be considered "working as intended", and resolved
+entirely by this warning.
+
 ## Usage
 
 ```js
@@ -396,6 +433,42 @@ separators in file paths for comparison.)
 
 Defaults to the value of `process.platform`.
 
+### maxGlobstarRecursion
+
+Max number of non-adjacent `**` patterns to recursively walk
+down.
+
+The default of `200` is almost certainly high enough for most
+purposes, and can handle absurdly excessive patterns.
+
+If the limit is exceeded (which would require very excessively
+long patterns and paths containing lots of `**` patterns!), then
+it is treated as non-matching, even if the path would normally
+match the pattern provided.
+
+That is, this is an intentional false negative, deemed an
+acceptable break in correctness for security and performance.
+
+### maxExtglobRecursion
+
+Max depth to traverse for nested extglobs like `*(a|b|c)`
+
+Default is 2, which is quite low, but any higher value swiftly
+results in punishing performance impacts. Note that this is _not_
+relevant when the globstar types can be safely coalesced into a
+single set.
+
+For example, `*(a|@(b|c)|d)` would be flattened into
+`*(a|b|c|d)`. Thus, many common extglobs will retain good
+performance and never hit this limit, even if they are
+excessively deep and complicated.
+
+If the limit is hit, then the extglob characters are simply not
+parsed, and the pattern effectively switches into `noextglob:
+true` mode for the contents of that nested sub-pattern. This will
+typically _not_ result in a match, but is considered a valid
+trade-off for security and performance.
+
 ## Comparisons to other fnmatch/glob implementations
 
 While strict compliance with the existing standards is a
diff --git a/deps/minimatch/dist/commonjs/assert-valid-pattern.d.ts b/deps/minimatch/dist/commonjs/assert-valid-pattern.d.ts
index 8e318b23a033e2..34d7a78a0c5144 100644
--- a/deps/minimatch/dist/commonjs/assert-valid-pattern.d.ts
+++ b/deps/minimatch/dist/commonjs/assert-valid-pattern.d.ts
@@ -1,2 +1,2 @@
-export declare const assertValidPattern: (pattern: any) => void;
+export declare const assertValidPattern: (pattern: unknown) => void;
 //# sourceMappingURL=assert-valid-pattern.d.ts.map
\ No newline at end of file
diff --git a/deps/minimatch/dist/commonjs/assert-valid-pattern.d.ts.map b/deps/minimatch/dist/commonjs/assert-valid-pattern.d.ts.map
index c61c0310949955..30ddcd51f6eae8 100644
--- a/deps/minimatch/dist/commonjs/assert-valid-pattern.d.ts.map
+++ b/deps/minimatch/dist/commonjs/assert-valid-pattern.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"assert-valid-pattern.d.ts","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,kBAAkB,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAUlD,CAAA"}
\ No newline at end of file
+{"version":3,"file":"assert-valid-pattern.d.ts","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAUtD,CAAA"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/commonjs/assert-valid-pattern.js.map b/deps/minimatch/dist/commonjs/assert-valid-pattern.js.map
index 69fea07aac6213..9fc27a931c7e3f 100644
--- a/deps/minimatch/dist/commonjs/assert-valid-pattern.js.map
+++ b/deps/minimatch/dist/commonjs/assert-valid-pattern.js.map
@@ -1 +1 @@
-{"version":3,"file":"assert-valid-pattern.js","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":";;;AAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAA;AAC7B,MAAM,kBAAkB,GAA2B,CACxD,OAAY,EACe,EAAE;IAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC,CAAA;AAVY,QAAA,kBAAkB,sBAU9B","sourcesContent":["const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: any) => void = (\n  pattern: any,\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"assert-valid-pattern.js","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":";;;AAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAA;AAC7B,MAAM,kBAAkB,GAA+B,CAC5D,OAAgB,EACW,EAAE;IAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC,CAAA;AAVY,QAAA,kBAAkB,sBAU9B","sourcesContent":["const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: unknown) => void = (\n  pattern: unknown,\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/commonjs/ast.d.ts b/deps/minimatch/dist/commonjs/ast.d.ts
index b8c1e5448e6392..27845ea71fb977 100644
--- a/deps/minimatch/dist/commonjs/ast.d.ts
+++ b/deps/minimatch/dist/commonjs/ast.d.ts
@@ -3,6 +3,8 @@ export type ExtglobType = '!' | '?' | '+' | '*' | '@';
 export declare class AST {
     #private;
     type: ExtglobType | null;
+    id: number;
+    get depth(): number;
     constructor(type: ExtglobType | null, parent?: AST, options?: MinimatchOptions);
     get hasMagic(): boolean | undefined;
     toString(): string;
diff --git a/deps/minimatch/dist/commonjs/ast.d.ts.map b/deps/minimatch/dist/commonjs/ast.d.ts.map
index b11316b37b4843..ec7f7898870ff2 100644
--- a/deps/minimatch/dist/commonjs/ast.d.ts.map
+++ b/deps/minimatch/dist/commonjs/ast.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwCvD,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAkCrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;gBAiBtB,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IA+ClB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAe/B,MAAM;IAkBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAsIjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IA2BhC,IAAI,OAAO,qBAEV;IAuED,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CAwMjE"}
\ No newline at end of file
+{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwCvD,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AA6IrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IAexB,EAAE,SAAO;IAET,IAAI,KAAK,IAAI,MAAM,CAElB;gBAgBC,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IA+ClB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAe/B,MAAM;IAkBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAwQjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IA2BhC,IAAI,OAAO,qBAEV;IAuED,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CA6OjE"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/commonjs/ast.js b/deps/minimatch/dist/commonjs/ast.js
index 1ead6d3790a83e..5e657838e669ce 100644
--- a/deps/minimatch/dist/commonjs/ast.js
+++ b/deps/minimatch/dist/commonjs/ast.js
@@ -1,11 +1,113 @@
 "use strict";
 // parse a single path portion
+var _a;
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.AST = void 0;
 const brace_expressions_js_1 = require("./brace-expressions.js");
 const unescape_js_1 = require("./unescape.js");
 const types = new Set(['!', '?', '+', '*', '@']);
 const isExtglobType = (c) => types.has(c);
+const isExtglobAST = (c) => isExtglobType(c.type);
+// Map of which extglob types can adopt the children of a nested extglob
+//
+// anything but ! can adopt a matching type:
+// +(a|+(b|c)|d) => +(a|b|c|d)
+// *(a|*(b|c)|d) => *(a|b|c|d)
+// @(a|@(b|c)|d) => @(a|b|c|d)
+// ?(a|?(b|c)|d) => ?(a|b|c|d)
+//
+// * can adopt anything, because 0 or repetition is allowed
+// *(a|?(b|c)|d) => *(a|b|c|d)
+// *(a|+(b|c)|d) => *(a|b|c|d)
+// *(a|@(b|c)|d) => *(a|b|c|d)
+//
+// + can adopt @, because 1 or repetition is allowed
+// +(a|@(b|c)|d) => +(a|b|c|d)
+//
+// + and @ CANNOT adopt *, because 0 would be allowed
+// +(a|*(b|c)|d) => would match "", on *(b|c)
+// @(a|*(b|c)|d) => would match "", on *(b|c)
+//
+// + and @ CANNOT adopt ?, because 0 would be allowed
+// +(a|?(b|c)|d) => would match "", on ?(b|c)
+// @(a|?(b|c)|d) => would match "", on ?(b|c)
+//
+// ? can adopt @, because 0 or 1 is allowed
+// ?(a|@(b|c)|d) => ?(a|b|c|d)
+//
+// ? and @ CANNOT adopt * or +, because >1 would be allowed
+// ?(a|*(b|c)|d) => would match bbb on *(b|c)
+// @(a|*(b|c)|d) => would match bbb on *(b|c)
+// ?(a|+(b|c)|d) => would match bbb on +(b|c)
+// @(a|+(b|c)|d) => would match bbb on +(b|c)
+//
+// ! CANNOT adopt ! (nothing else can either)
+// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)
+//
+// ! can adopt @
+// !(a|@(b|c)|d) => !(a|b|c|d)
+//
+// ! CANNOT adopt *
+// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed
+//
+// ! CANNOT adopt +
+// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed
+//
+// ! CANNOT adopt ?
+// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match "x"
+const adoptionMap = new Map([
+    ['!', ['@']],
+    ['?', ['?', '@']],
+    ['@', ['@']],
+    ['*', ['*', '+', '?', '@']],
+    ['+', ['+', '@']],
+]);
+// nested extglobs that can be adopted in, but with the addition of
+// a blank '' element.
+const adoptionWithSpaceMap = new Map([
+    ['!', ['?']],
+    ['@', ['?']],
+    ['+', ['?', '*']],
+]);
+// union of the previous two maps
+const adoptionAnyMap = new Map([
+    ['!', ['?', '@']],
+    ['?', ['?', '@']],
+    ['@', ['?', '@']],
+    ['*', ['*', '+', '?', '@']],
+    ['+', ['+', '@', '?', '*']],
+]);
+// Extglobs that can take over their parent if they are the only child
+// the key is parent, value maps child to resulting extglob parent type
+// '@' is omitted because it's a special case. An `@` extglob with a single
+// member can always be usurped by that subpattern.
+const usurpMap = new Map([
+    ['!', new Map([['!', '@']])],
+    [
+        '?',
+        new Map([
+            ['*', '*'],
+            ['+', '*'],
+        ]),
+    ],
+    [
+        '@',
+        new Map([
+            ['!', '!'],
+            ['?', '?'],
+            ['@', '@'],
+            ['*', '*'],
+            ['+', '+'],
+        ]),
+    ],
+    [
+        '+',
+        new Map([
+            ['?', '*'],
+            ['*', '*'],
+        ]),
+    ],
+]);
 // Patterns that get prepended to bind to the start of either the
 // entire string, or just a single path portion, to prevent dots
 // and/or traversal patterns, when needed.
@@ -29,6 +131,7 @@ const star = qmark + '*?';
 const starNoEmpty = qmark + '+?';
 // remove the \ chars that we added if we end up doing a nonmagic compare
 // const deslash = (s: string) => s.replace(/\\(.)/g, '$1')
+let ID = 0;
 class AST {
     type;
     #root;
@@ -44,6 +147,22 @@ class AST {
     // set to true if it's an extglob with no children
     // (which really means one child of '')
     #emptyExt = false;
+    id = ++ID;
+    get depth() {
+        return (this.#parent?.depth ?? -1) + 1;
+    }
+    [Symbol.for('nodejs.util.inspect.custom')]() {
+        return {
+            '@@type': 'AST',
+            id: this.id,
+            type: this.type,
+            root: this.#root.id,
+            parent: this.#parent?.id,
+            depth: this.depth,
+            partsLength: this.#parts.length,
+            parts: this.#parts,
+        };
+    }
     constructor(type, parent, options = {}) {
         this.type = type;
         // extglobs are inherently magical
@@ -123,7 +242,7 @@ class AST {
                 continue;
             /* c8 ignore start */
             if (typeof p !== 'string' &&
-                !(p instanceof AST && p.#parent === this)) {
+                !(p instanceof _a && p.#parent === this)) {
                 throw new Error('invalid part: ' + p);
             }
             /* c8 ignore stop */
@@ -157,7 +276,7 @@ class AST {
         const p = this.#parent;
         for (let i = 0; i < this.#parentIndex; i++) {
             const pp = p.#parts[i];
-            if (!(pp instanceof AST && pp.type === '!')) {
+            if (!(pp instanceof _a && pp.type === '!')) {
                 return false;
             }
         }
@@ -185,13 +304,14 @@ class AST {
             this.push(part.clone(this));
     }
     clone(parent) {
-        const c = new AST(this.type, parent);
+        const c = new _a(this.type, parent);
         for (const p of this.#parts) {
             c.copyIn(p);
         }
         return c;
     }
-    static #parseAST(str, ast, pos, opt) {
+    static #parseAST(str, ast, pos, opt, extDepth) {
+        const maxDepth = opt.maxExtglobRecursion ?? 2;
         let escaping = false;
         let inBrace = false;
         let braceStart = -1;
@@ -228,11 +348,17 @@ class AST {
                     acc += c;
                     continue;
                 }
-                if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {
+                // we don't have to check for adoption here, because that's
+                // done at the other recursion point.
+                const doRecurse = !opt.noext &&
+                    isExtglobType(c) &&
+                    str.charAt(i) === '(' &&
+                    extDepth <= maxDepth;
+                if (doRecurse) {
                     ast.push(acc);
                     acc = '';
-                    const ext = new AST(c, ast);
-                    i = AST.#parseAST(str, ext, i, opt);
+                    const ext = new _a(c, ast);
+                    i = _a.#parseAST(str, ext, i, opt, extDepth + 1);
                     ast.push(ext);
                     continue;
                 }
@@ -244,7 +370,7 @@ class AST {
         // some kind of extglob, pos is at the (
         // find the next | or )
         let i = pos + 1;
-        let part = new AST(null, ast);
+        let part = new _a(null, ast);
         const parts = [];
         let acc = '';
         while (i < str.length) {
@@ -275,19 +401,26 @@ class AST {
                 acc += c;
                 continue;
             }
-            if (isExtglobType(c) && str.charAt(i) === '(') {
+            const doRecurse = !opt.noext &&
+                isExtglobType(c) &&
+                str.charAt(i) === '(' &&
+                /* c8 ignore start - the maxDepth is sufficient here */
+                (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));
+            /* c8 ignore stop */
+            if (doRecurse) {
+                const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;
                 part.push(acc);
                 acc = '';
-                const ext = new AST(c, part);
+                const ext = new _a(c, part);
                 part.push(ext);
-                i = AST.#parseAST(str, ext, i, opt);
+                i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);
                 continue;
             }
             if (c === '|') {
                 part.push(acc);
                 acc = '';
                 parts.push(part);
-                part = new AST(null, ast);
+                part = new _a(null, ast);
                 continue;
             }
             if (c === ')') {
@@ -309,9 +442,82 @@ class AST {
         ast.#parts = [str.substring(pos - 1)];
         return i;
     }
+    #canAdoptWithSpace(child) {
+        return this.#canAdopt(child, adoptionWithSpaceMap);
+    }
+    #canAdopt(child, map = adoptionMap) {
+        if (!child ||
+            typeof child !== 'object' ||
+            child.type !== null ||
+            child.#parts.length !== 1 ||
+            this.type === null) {
+            return false;
+        }
+        const gc = child.#parts[0];
+        if (!gc || typeof gc !== 'object' || gc.type === null) {
+            return false;
+        }
+        return this.#canAdoptType(gc.type, map);
+    }
+    #canAdoptType(c, map = adoptionAnyMap) {
+        return !!map.get(this.type)?.includes(c);
+    }
+    #adoptWithSpace(child, index) {
+        const gc = child.#parts[0];
+        const blank = new _a(null, gc, this.options);
+        blank.#parts.push('');
+        gc.push(blank);
+        this.#adopt(child, index);
+    }
+    #adopt(child, index) {
+        const gc = child.#parts[0];
+        this.#parts.splice(index, 1, ...gc.#parts);
+        for (const p of gc.#parts) {
+            if (typeof p === 'object')
+                p.#parent = this;
+        }
+        this.#toString = undefined;
+    }
+    #canUsurpType(c) {
+        const m = usurpMap.get(this.type);
+        return !!(m?.has(c));
+    }
+    #canUsurp(child) {
+        if (!child ||
+            typeof child !== 'object' ||
+            child.type !== null ||
+            child.#parts.length !== 1 ||
+            this.type === null ||
+            this.#parts.length !== 1) {
+            return false;
+        }
+        const gc = child.#parts[0];
+        if (!gc || typeof gc !== 'object' || gc.type === null) {
+            return false;
+        }
+        return this.#canUsurpType(gc.type);
+    }
+    #usurp(child) {
+        const m = usurpMap.get(this.type);
+        const gc = child.#parts[0];
+        const nt = m?.get(gc.type);
+        /* c8 ignore start - impossible */
+        if (!nt)
+            return false;
+        /* c8 ignore stop */
+        this.#parts = gc.#parts;
+        for (const p of this.#parts) {
+            if (typeof p === 'object') {
+                p.#parent = this;
+            }
+        }
+        this.type = nt;
+        this.#toString = undefined;
+        this.#emptyExt = false;
+    }
     static fromGlob(pattern, options = {}) {
-        const ast = new AST(null, undefined, options);
-        AST.#parseAST(pattern, ast, 0, options);
+        const ast = new _a(null, undefined, options);
+        _a.#parseAST(pattern, ast, 0, options, 0);
         return ast;
     }
     // returns the regular expression if there's magic, or the unescaped
@@ -415,16 +621,18 @@ class AST {
     // or start or whatever) and prepend ^ or / at the Regexp construction.
     toRegExpSource(allowDot) {
         const dot = allowDot ?? !!this.#options.dot;
-        if (this.#root === this)
+        if (this.#root === this) {
+            this.#flatten();
             this.#fillNegs();
-        if (!this.type) {
+        }
+        if (!isExtglobAST(this)) {
             const noEmpty = this.isStart() &&
                 this.isEnd() &&
                 !this.#parts.some(s => typeof s !== 'string');
             const src = this.#parts
                 .map(p => {
                 const [re, _, hasMagic, uflag] = typeof p === 'string' ?
-                    AST.#parseGlob(p, this.#hasMagic, noEmpty)
+                    _a.#parseGlob(p, this.#hasMagic, noEmpty)
                     : p.toRegExpSource(allowDot);
                 this.#hasMagic = this.#hasMagic || hasMagic;
                 this.#uflag = this.#uflag || uflag;
@@ -486,12 +694,12 @@ class AST {
             // invalid extglob, has to at least be *something* present, if it's
             // the entire path portion.
             const s = this.toString();
-            this.#parts = [s];
-            this.type = null;
-            this.#hasMagic = undefined;
+            const me = this;
+            me.#parts = [s];
+            me.type = null;
+            me.#hasMagic = undefined;
             return [s, (0, unescape_js_1.unescape)(this.toString()), false, false];
         }
-        // XXX abstract out this map method
         let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?
             ''
             : this.#partsToRegExp(true);
@@ -527,6 +735,42 @@ class AST {
             this.#uflag,
         ];
     }
+    #flatten() {
+        if (!isExtglobAST(this)) {
+            for (const p of this.#parts) {
+                if (typeof p === 'object') {
+                    p.#flatten();
+                }
+            }
+        }
+        else {
+            // do up to 10 passes to flatten as much as possible
+            let iterations = 0;
+            let done = false;
+            do {
+                done = true;
+                for (let i = 0; i < this.#parts.length; i++) {
+                    const c = this.#parts[i];
+                    if (typeof c === 'object') {
+                        c.#flatten();
+                        if (this.#canAdopt(c)) {
+                            done = false;
+                            this.#adopt(c, i);
+                        }
+                        else if (this.#canAdoptWithSpace(c)) {
+                            done = false;
+                            this.#adoptWithSpace(c, i);
+                        }
+                        else if (this.#canUsurp(c)) {
+                            done = false;
+                            this.#usurp(c);
+                        }
+                    }
+                }
+            } while (!done && ++iterations < 10);
+        }
+        this.#toString = undefined;
+    }
     #partsToRegExp(dot) {
         return this.#parts
             .map(p => {
@@ -598,4 +842,5 @@ class AST {
     }
 }
 exports.AST = AST;
+_a = AST;
 //# sourceMappingURL=ast.js.map
\ No newline at end of file
diff --git a/deps/minimatch/dist/commonjs/ast.js.map b/deps/minimatch/dist/commonjs/ast.js.map
index 93d5c290adcba1..6affc8b7f647a8 100644
--- a/deps/minimatch/dist/commonjs/ast.js.map
+++ b/deps/minimatch/dist/commonjs/ast.js.map
@@ -1 +1 @@
-{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string): c is ExtglobType =>\n  types.has(c as ExtglobType)\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  readonly #parent?: AST\n  readonly #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {},\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (\n        typeof p !== 'string' &&\n        !(p instanceof AST && p.#parent === this)\n      ) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null ?\n        this.#parts\n          .slice()\n          .map(p => (typeof p === 'string' ? p : p.toJSON()))\n      : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions,\n  ): number {\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      if (isExtglobType(c) && str.charAt(i) === '(') {\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) this.#fillNegs()\n    if (!this.type) {\n      const noEmpty =\n        this.isStart() &&\n        this.isEnd() &&\n        !this.#parts.some(s => typeof s !== 'string')\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string' ?\n              AST.#parseGlob(p, this.#hasMagic, noEmpty)\n            : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start =\n              needNoTrav ? startNoTraversal\n              : needNoDot ? startNoDot\n              : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      this.#parts = [s]\n      this.type = null\n      this.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    // XXX abstract out this map method\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot ?\n        ''\n      : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!' ?\n          // !() must match something,but !(x) can match ''\n          '))' +\n          (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n          star +\n          ')'\n        : this.type === '@' ? ')'\n        : this.type === '?' ? ')?'\n        : this.type === '+' && bodyDotAllowed ? ')'\n        : this.type === '*' && bodyDotAllowed ? `)?`\n        : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #partsToRegExp(dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    // multiple stars that aren't globstars coalesce into one *\n    let inStar = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '*') {\n        if (inStar) continue\n        inStar = true\n        re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n        hasMagic = true\n        continue\n      } else {\n        inStar = false\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string | null): c is ExtglobType =>\n  types.has(c as ExtglobType)\nconst isExtglobAST = (c: AST): c is AST & { type: ExtglobType } =>\n  isExtglobType(c.type)\n\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n  ['!', ['@']],\n  ['?', ['?', '@']],\n  ['@', ['@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@']],\n])\n\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n  ['!', ['?']],\n  ['@', ['?']],\n  ['+', ['?', '*']],\n])\n\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n  ['!', ['?', '@']],\n  ['?', ['?', '@']],\n  ['@', ['?', '@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@', '?', '*']],\n])\n\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map>([\n  ['!', new Map([['!', '@']])],\n  [\n    '?',\n    new Map([\n      ['*', '*'],\n      ['+', '*'],\n    ]),\n  ],\n  [\n    '@',\n    new Map([\n      ['!', '!'],\n      ['?', '?'],\n      ['@', '@'],\n      ['*', '*'],\n      ['+', '+'],\n    ]),\n  ],\n  [\n    '+',\n    new Map([\n      ['?', '*'],\n      ['*', '*'],\n    ]),\n  ],\n])\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nlet ID = 0\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  #parent?: AST\n  #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n  id = ++ID\n\n  get depth(): number {\n    return (this.#parent?.depth ?? -1) + 1\n  }\n\n  [Symbol.for('nodejs.util.inspect.custom')]() {\n    return {\n      '@@type': 'AST',\n      id: this.id,\n      type: this.type,\n      root: this.#root.id,\n      parent: this.#parent?.id,\n      depth: this.depth,\n      partsLength: this.#parts.length,\n      parts: this.#parts,\n    }\n  }\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {},\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (\n        typeof p !== 'string' &&\n        !(p instanceof AST && p.#parent === this)\n      ) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null ?\n        this.#parts\n          .slice()\n          .map(p => (typeof p === 'string' ? p : p.toJSON()))\n      : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions,\n    extDepth: number,\n  ): number {\n    const maxDepth = opt.maxExtglobRecursion ?? 2\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        // we don't have to check for adoption here, because that's\n        // done at the other recursion point.\n        const doRecurse =\n          !opt.noext &&\n          isExtglobType(c) &&\n          str.charAt(i) === '(' &&\n          extDepth <= maxDepth\n        if (doRecurse) {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt, extDepth + 1)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      const doRecurse =\n        !opt.noext &&\n        isExtglobType(c) &&\n        str.charAt(i) === '(' &&\n        /* c8 ignore start - the maxDepth is sufficient here */\n        (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)))\n      /* c8 ignore stop */\n      if (doRecurse) {\n        const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt, extDepth + depthAdd)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  #canAdoptWithSpace(child?: AST | string): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    return this.#canAdopt(child, adoptionWithSpaceMap)\n  }\n\n  #canAdopt(\n    child?: AST | string,\n    map: Map = adoptionMap,\n  ): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canAdoptType(\n      gc.type,\n      map,\n    )\n  }\n  #canAdoptType(\n    c: string,\n    map: Map = adoptionAnyMap,\n  ): c is ExtglobType {\n    return !!map.get(this.type as ExtglobType)?.includes(c as ExtglobType)\n  }\n\n  #adoptWithSpace(\n    this: AST & { type: ExtglobType },\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const blank = new AST(null, gc, this.options)\n    blank.#parts.push('')\n    gc.push(blank)\n    this.#adopt(child, index)\n  }\n\n  #adopt(\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    this.#parts.splice(index, 1, ...gc.#parts)\n    for (const p of gc.#parts) {\n      if (typeof p === 'object') p.#parent = this\n    }\n    this.#toString = undefined\n  }\n\n  #canUsurpType(c: string): boolean {\n    const m = usurpMap.get(this.type as ExtglobType)\n    return !!(m?.has(c as ExtglobType))\n  }\n\n  #canUsurp (\n    child?: AST | string,\n  ): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null ||\n      this.#parts.length !== 1\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canUsurpType(gc.type)\n  }\n\n  #usurp(this: AST & { type: ExtglobType }, child: AST & { type: null }) {\n    const m = usurpMap.get(this.type as ExtglobType)\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const nt = m?.get(gc.type)\n    /* c8 ignore start - impossible */\n    if (!nt) return false\n    /* c8 ignore stop */\n    this.#parts = gc.#parts\n    for (const p of this.#parts) {\n      if (typeof p === 'object') {\n        p.#parent = this\n      }\n    }\n    this.type = nt\n    this.#toString = undefined\n    this.#emptyExt = false\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options, 0)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) {\n      this.#flatten()\n      this.#fillNegs()\n    }\n    if (!isExtglobAST(this)) {\n      const noEmpty =\n        this.isStart() &&\n        this.isEnd() &&\n        !this.#parts.some(s => typeof s !== 'string')\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string' ?\n              AST.#parseGlob(p, this.#hasMagic, noEmpty)\n            : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start =\n              needNoTrav ? startNoTraversal\n              : needNoDot ? startNoDot\n              : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      const me = this as AST\n      me.#parts = [s]\n      me.type = null\n      me.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot ?\n        ''\n      : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!' ?\n          // !() must match something,but !(x) can match ''\n          '))' +\n          (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n          star +\n          ')'\n        : this.type === '@' ? ')'\n        : this.type === '?' ? ')?'\n        : this.type === '+' && bodyDotAllowed ? ')'\n        : this.type === '*' && bodyDotAllowed ? `)?`\n        : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #flatten() {\n    if (!isExtglobAST(this)) {\n      for (const p of this.#parts) {\n        if (typeof p === 'object') {\n          p.#flatten()\n        }\n      }\n    } else {\n      // do up to 10 passes to flatten as much as possible\n      let iterations = 0\n      let done = false\n      do {\n        done = true\n        for (let i = 0; i < this.#parts.length; i++) {\n          const c = this.#parts[i]\n          if (typeof c === 'object') {\n            c.#flatten()\n            if (this.#canAdopt(c)) {\n              done = false\n              this.#adopt(c, i)\n            } else if (this.#canAdoptWithSpace(c)) {\n              done = false\n              this.#adoptWithSpace(c, i)\n            } else if (this.#canUsurp(c)) {\n              done = false\n              this.#usurp(c)\n            }\n          }\n        }\n      } while (!done && ++iterations < 10)\n    }\n    this.#toString = undefined\n  }\n\n  #partsToRegExp(this: AST & { type: ExtglobType }, dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    // multiple stars that aren't globstars coalesce into one *\n    let inStar = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '*') {\n        if (inStar) continue\n        inStar = true\n        re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n        hasMagic = true\n        continue\n      } else {\n        inStar = false\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/commonjs/index.d.ts b/deps/minimatch/dist/commonjs/index.d.ts
index 1556f330559c1e..137bd803690752 100644
--- a/deps/minimatch/dist/commonjs/index.d.ts
+++ b/deps/minimatch/dist/commonjs/index.d.ts
@@ -71,6 +71,34 @@ export interface MinimatchOptions {
      * max number of `{...}` patterns to expand. Default 100_000.
      */
     braceExpandMax?: number;
+    /**
+     * Max number of non-adjacent `**` patterns to recursively walk down.
+     *
+     * The default of 200 is almost certainly high enough for most purposes,
+     * and can handle absurdly excessive patterns.
+     */
+    maxGlobstarRecursion?: number;
+    /**
+     * Max depth to traverse for nested extglobs like `*(a|b|c)`
+     *
+     * Default is 2, which is quite low, but any higher value
+     * swiftly results in punishing performance impacts. Note
+     * that this is *not*  relevant when the globstar types can
+     * be safely coalesced into a single set.
+     *
+     * For example, `*(a|@(b|c)|d)` would be flattened into
+     * `*(a|b|c|d)`. Thus, many common extglobs will retain good
+     * performance and  never hit this limit, even if they are
+     * excessively deep and complicated.
+     *
+     * If the limit is hit, then the extglob characters are simply
+     * not parsed, and the pattern effectively switches into
+     * `noextglob: true` mode for the contents of that nested
+     * sub-pattern. This will typically _not_ result in a match,
+     * but is considered a valid trade-off for security and
+     * performance.
+     */
+    maxExtglobRecursion?: number;
 }
 export declare const minimatch: {
     (p: string, pattern: string, options?: MinimatchOptions): boolean;
@@ -101,6 +129,7 @@ export type MMRegExp = RegExp & {
 export type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR;
 export type ParseReturn = ParseReturnFiltered | false;
 export declare class Minimatch {
+    #private;
     options: MinimatchOptions;
     set: ParseReturnFiltered[][];
     pattern: string;
@@ -117,6 +146,7 @@ export declare class Minimatch {
     isWindows: boolean;
     platform: Platform;
     windowsNoMagicRoot: boolean;
+    maxGlobstarRecursion: number;
     regexp: false | null | MMRegExp;
     constructor(pattern: string, options?: MinimatchOptions);
     hasMagic(): boolean;
diff --git a/deps/minimatch/dist/commonjs/index.d.ts.map b/deps/minimatch/dist/commonjs/index.d.ts.map
index 8e41a6cacdfc3f..1c65035ac63c5a 100644
--- a/deps/minimatch/dist/commonjs/index.d.ts.map
+++ b/deps/minimatch/dist/commonjs/index.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/commonjs/index.js b/deps/minimatch/dist/commonjs/index.js
index 5a0ba2a87fb036..c176ffce042b01 100644
--- a/deps/minimatch/dist/commonjs/index.js
+++ b/deps/minimatch/dist/commonjs/index.js
@@ -202,11 +202,13 @@ class Minimatch {
     isWindows;
     platform;
     windowsNoMagicRoot;
+    maxGlobstarRecursion;
     regexp;
     constructor(pattern, options = {}) {
         (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
         options = options || {};
         this.options = options;
+        this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;
         this.pattern = pattern;
         this.platform = options.platform || defaultPlatform;
         this.isWindows = this.platform === 'win32';
@@ -611,7 +613,8 @@ class Minimatch {
     // out of pattern, then that's fine, as long as all
     // the parts match.
     matchOne(file, pattern, partial = false) {
-        const options = this.options;
+        let fileStartIndex = 0;
+        let patternStartIndex = 0;
         // UNC paths like //?/X:/... can match X:/... and vice versa
         // Drive letters in absolute drive or unc paths are always compared
         // case-insensitively.
@@ -640,14 +643,11 @@ class Minimatch {
                     file[fdi],
                     pattern[pdi],
                 ];
+                // start matching at the drive letter index of each
                 if (fd.toLowerCase() === pd.toLowerCase()) {
                     pattern[pdi] = fd;
-                    if (pdi > fdi) {
-                        pattern = pattern.slice(pdi);
-                    }
-                    else if (fdi > pdi) {
-                        file = file.slice(fdi);
-                    }
+                    patternStartIndex = pdi;
+                    fileStartIndex = fdi;
                 }
             }
         }
@@ -657,99 +657,185 @@ class Minimatch {
         if (optimizationLevel >= 2) {
             file = this.levelTwoFileOptimize(file);
         }
-        this.debug('matchOne', this, { file, pattern });
-        this.debug('matchOne', file.length, pattern.length);
-        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+        if (pattern.includes(exports.GLOBSTAR)) {
+            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);
+        }
+        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);
+    }
+    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {
+        // split the pattern into head, tail, and middle of ** delimited parts
+        const firstgs = pattern.indexOf(exports.GLOBSTAR, patternIndex);
+        const lastgs = pattern.lastIndexOf(exports.GLOBSTAR);
+        // split the pattern up into globstar-delimited sections
+        // the tail has to be at the end, and the others just have
+        // to be found in order from the head.
+        const [head, body, tail] = partial ? [
+            pattern.slice(patternIndex, firstgs),
+            pattern.slice(firstgs + 1),
+            [],
+        ] : [
+            pattern.slice(patternIndex, firstgs),
+            pattern.slice(firstgs + 1, lastgs),
+            pattern.slice(lastgs + 1),
+        ];
+        // check the head, from the current file/pattern index.
+        if (head.length) {
+            const fileHead = file.slice(fileIndex, fileIndex + head.length);
+            if (!this.#matchOne(fileHead, head, partial, 0, 0)) {
+                return false;
+            }
+            fileIndex += head.length;
+            patternIndex += head.length;
+        }
+        // now we know the head matches!
+        // if the last portion is not empty, it MUST match the end
+        // check the tail
+        let fileTailMatch = 0;
+        if (tail.length) {
+            // if head + tail > file, then we cannot possibly match
+            if (tail.length + fileIndex > file.length)
+                return false;
+            // try to match the tail
+            let tailStart = file.length - tail.length;
+            if (this.#matchOne(file, tail, partial, tailStart, 0)) {
+                fileTailMatch = tail.length;
+            }
+            else {
+                // affordance for stuff like a/**/* matching a/b/
+                // if the last file portion is '', and there's more to the pattern
+                // then try without the '' bit.
+                if (file[file.length - 1] !== '' ||
+                    fileIndex + tail.length === file.length) {
+                    return false;
+                }
+                tailStart--;
+                if (!this.#matchOne(file, tail, partial, tailStart, 0)) {
+                    return false;
+                }
+                fileTailMatch = tail.length + 1;
+            }
+        }
+        // now we know the tail matches!
+        // the middle is zero or more portions wrapped in **, possibly
+        // containing more ** sections.
+        // so a/**/b/**/c/**/d has become **/b/**/c/**
+        // if it's empty, it means a/**/b, just verify we have no bad dots
+        // if there's no tail, so it ends on /**, then we must have *something*
+        // after the head, or it's not a matc
+        if (!body.length) {
+            let sawSome = !!fileTailMatch;
+            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {
+                const f = String(file[i]);
+                sawSome = true;
+                if (f === '.' ||
+                    f === '..' ||
+                    (!this.options.dot && f.startsWith('.'))) {
+                    return false;
+                }
+            }
+            // in partial mode, we just need to get past all file parts
+            return partial || sawSome;
+        }
+        // now we know that there's one or more body sections, which can
+        // be matched anywhere from the 0 index (because the head was pruned)
+        // through to the length-fileTailMatch index.
+        // split the body up into sections, and note the minimum index it can
+        // be found at (start with the length of all previous segments)
+        // [section, before, after]
+        const bodySegments = [[[], 0]];
+        let currentBody = bodySegments[0];
+        let nonGsParts = 0;
+        const nonGsPartsSums = [0];
+        for (const b of body) {
+            if (b === exports.GLOBSTAR) {
+                nonGsPartsSums.push(nonGsParts);
+                currentBody = [[], 0];
+                bodySegments.push(currentBody);
+            }
+            else {
+                currentBody[0].push(b);
+                nonGsParts++;
+            }
+        }
+        let i = bodySegments.length - 1;
+        const fileLength = file.length - fileTailMatch;
+        for (const b of bodySegments) {
+            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);
+        }
+        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);
+    }
+    // return false for "nope, not matching"
+    // return null for "not matching, cannot keep trying"
+    #matchGlobStarBodySections(file, 
+    // pattern section, last possible position for it
+    bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {
+        // take the first body segment, and walk from fileIndex to its "after"
+        // value at the end
+        // If it doesn't match at that position, we increment, until we hit
+        // that final possible position, and give up.
+        // If it does match, then advance and try to rest.
+        // If any of them fail we keep walking forward.
+        // this is still a bit recursively painful, but it's more constrained
+        // than previous implementations, because we never test something that
+        // can't possibly be a valid matching condition.
+        const bs = bodySegments[bodyIndex];
+        if (!bs) {
+            // just make sure that there's no bad dots
+            for (let i = fileIndex; i < file.length; i++) {
+                sawTail = true;
+                const f = file[i];
+                if (f === '.' ||
+                    f === '..' ||
+                    (!this.options.dot && f.startsWith('.'))) {
+                    return false;
+                }
+            }
+            return sawTail;
+        }
+        // have a non-globstar body section to test
+        const [body, after] = bs;
+        while (fileIndex <= after) {
+            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);
+            // if limit exceeded, no match. intentional false negative,
+            // acceptable break in correctness for security.
+            if (m && globStarDepth < this.maxGlobstarRecursion) {
+                // match! see if the rest match. if so, we're done!
+                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);
+                if (sub !== false) {
+                    return sub;
+                }
+            }
+            const f = file[fileIndex];
+            if (f === '.' ||
+                f === '..' ||
+                (!this.options.dot && f.startsWith('.'))) {
+                return false;
+            }
+            fileIndex++;
+        }
+        // walked off. no point continuing
+        return partial || null;
+    }
+    #matchOne(file, pattern, partial, fileIndex, patternIndex) {
+        let fi;
+        let pi;
+        let pl;
+        let fl;
+        for (fi = fileIndex,
+            pi = patternIndex,
+            fl = file.length,
+            pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
             this.debug('matchOne loop');
-            var p = pattern[pi];
-            var f = file[fi];
+            let p = pattern[pi];
+            let f = file[fi];
             this.debug(pattern, p, f);
             // should be impossible.
             // some invalid regexp stuff in the set.
             /* c8 ignore start */
-            if (p === false) {
+            if (p === false || p === exports.GLOBSTAR) {
                 return false;
             }
             /* c8 ignore stop */
-            if (p === exports.GLOBSTAR) {
-                this.debug('GLOBSTAR', [pattern, p, f]);
-                // "**"
-                // a/**/b/**/c would match the following:
-                // a/b/x/y/z/c
-                // a/x/y/z/b/c
-                // a/b/x/b/x/c
-                // a/b/c
-                // To do this, take the rest of the pattern after
-                // the **, and see if it would match the file remainder.
-                // If so, return success.
-                // If not, the ** "swallows" a segment, and try again.
-                // This is recursively awful.
-                //
-                // a/**/b/**/c matching a/b/x/y/z/c
-                // - a matches a
-                // - doublestar
-                //   - matchOne(b/x/y/z/c, b/**/c)
-                //     - b matches b
-                //     - doublestar
-                //       - matchOne(x/y/z/c, c) -> no
-                //       - matchOne(y/z/c, c) -> no
-                //       - matchOne(z/c, c) -> no
-                //       - matchOne(c, c) yes, hit
-                var fr = fi;
-                var pr = pi + 1;
-                if (pr === pl) {
-                    this.debug('** at the end');
-                    // a ** at the end will just swallow the rest.
-                    // We have found a match.
-                    // however, it will not swallow /.x, unless
-                    // options.dot is set.
-                    // . and .. are *never* matched by **, for explosively
-                    // exponential reasons.
-                    for (; fi < fl; fi++) {
-                        if (file[fi] === '.' ||
-                            file[fi] === '..' ||
-                            (!options.dot && file[fi].charAt(0) === '.'))
-                            return false;
-                    }
-                    return true;
-                }
-                // ok, let's see if we can swallow whatever we can.
-                while (fr < fl) {
-                    var swallowee = file[fr];
-                    this.debug('\nglobstar while', file, fr, pattern, pr, swallowee);
-                    // XXX remove this slice.  Just pass the start index.
-                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
-                        this.debug('globstar found match!', fr, fl, swallowee);
-                        // found a match.
-                        return true;
-                    }
-                    else {
-                        // can't swallow "." or ".." ever.
-                        // can only swallow ".foo" when explicitly asked.
-                        if (swallowee === '.' ||
-                            swallowee === '..' ||
-                            (!options.dot && swallowee.charAt(0) === '.')) {
-                            this.debug('dot detected!', file, fr, pattern, pr);
-                            break;
-                        }
-                        // ** swallows a segment, and continue.
-                        this.debug('globstar swallow a segment, and continue');
-                        fr++;
-                    }
-                }
-                // no match was found.
-                // However, in partial mode, we can't say this is necessarily over.
-                /* c8 ignore start */
-                if (partial) {
-                    // ran out of file
-                    this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
-                    if (fr === fl) {
-                        return true;
-                    }
-                }
-                /* c8 ignore stop */
-                return false;
-            }
             // something other than **
             // non-magic patterns just have to match exactly
             // patterns with magic have been turned into regexps.
diff --git a/deps/minimatch/dist/commonjs/index.js.map b/deps/minimatch/dist/commonjs/index.js.map
index d98b24e962509c..fc4dea5d2f2ff8 100644
--- a/deps/minimatch/dist/commonjs/index.js.map
+++ b/deps/minimatch/dist/commonjs/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  /** do not expand `{x,y}` style braces */\n  nobrace?: boolean\n  /** do not treat patterns starting with `#` as a comment */\n  nocomment?: boolean\n  /** do not treat patterns starting with `!` as a negation */\n  nonegate?: boolean\n  /** print LOTS of debugging output */\n  debug?: boolean\n  /** treat `**` the same as `*` */\n  noglobstar?: boolean\n  /** do not expand extglobs like `+(a|b)` */\n  noext?: boolean\n  /** return the pattern if nothing matches */\n  nonull?: boolean\n  /** treat `\\\\` as a path separator, not an escape character */\n  windowsPathsNoEscape?: boolean\n  /**\n   * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n  /**\n   * Compare a partial path to a pattern. As long as the parts\n   * of the path that are present are not contradicted by the\n   * pattern, it will be treated as a match. This is useful in\n   * applications where you're walking through a folder structure,\n   * and don't yet have the full path, but want to ensure that you\n   * do not walk down paths that can never be a match.\n   */\n  partial?: boolean\n  /** allow matches that start with `.` even if the pattern does not */\n  dot?: boolean\n  /** ignore case */\n  nocase?: boolean\n  /** ignore case only in wildcard patterns */\n  nocaseMagicOnly?: boolean\n  /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n  magicalBraces?: boolean\n  /**\n   * If set, then patterns without slashes will be matched\n   * against the basename of the path if it contains slashes.\n   * For example, `a?b` would match the path `/xyz/123/acb`, but\n   * not `/xyz/acb/123`.\n   */\n  matchBase?: boolean\n  /** invert the results of negated matches */\n  flipNegate?: boolean\n  /** do not collapse multiple `/` into a single `/` */\n  preserveMultipleSlashes?: boolean\n  /**\n   * A number indicating the level of optimization that should be done\n   * to the pattern prior to parsing and using it for matches.\n   */\n  optimizationLevel?: number\n  /** operating system platform */\n  platform?: Platform\n  /**\n   * When a pattern starts with a UNC path or drive letter, and in\n   * `nocase:true` mode, do not convert the root portions of the\n   * pattern into a case-insensitive regular expression, and instead\n   * leave them as strings.\n   *\n   * This is the default when the platform is `win32` and\n   * `nocase:true` is set.\n   */\n  windowsNoMagicRoot?: boolean\n  /**\n   * max number of `{...}` patterns to expand. Default 100_000.\n   */\n  braceExpandMax?: number\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n  !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n  f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n  f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n      process.env &&\n      process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n    process.platform\n  : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n  defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) =>\n      orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (\n      list: string[],\n      pattern: string,\n      options: MinimatchOptions = {},\n    ) => orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    // avoid the annoying deprecation flag lol\n    const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options[awe] === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined ?\n        options.windowsNoMagicRoot\n      : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [\n            ...s.slice(0, 4),\n            ...s.slice(4).map(ss => this.parse(ss)),\n          ]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    const options = this.options\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          if (pdi > fdi) {\n            pattern = pattern.slice(pdi)\n          } else if (fdi > pdi) {\n            file = file.slice(fdi)\n          }\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  /** do not expand `{x,y}` style braces */\n  nobrace?: boolean\n  /** do not treat patterns starting with `#` as a comment */\n  nocomment?: boolean\n  /** do not treat patterns starting with `!` as a negation */\n  nonegate?: boolean\n  /** print LOTS of debugging output */\n  debug?: boolean\n  /** treat `**` the same as `*` */\n  noglobstar?: boolean\n  /** do not expand extglobs like `+(a|b)` */\n  noext?: boolean\n  /** return the pattern if nothing matches */\n  nonull?: boolean\n  /** treat `\\\\` as a path separator, not an escape character */\n  windowsPathsNoEscape?: boolean\n  /**\n   * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n  /**\n   * Compare a partial path to a pattern. As long as the parts\n   * of the path that are present are not contradicted by the\n   * pattern, it will be treated as a match. This is useful in\n   * applications where you're walking through a folder structure,\n   * and don't yet have the full path, but want to ensure that you\n   * do not walk down paths that can never be a match.\n   */\n  partial?: boolean\n  /** allow matches that start with `.` even if the pattern does not */\n  dot?: boolean\n  /** ignore case */\n  nocase?: boolean\n  /** ignore case only in wildcard patterns */\n  nocaseMagicOnly?: boolean\n  /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n  magicalBraces?: boolean\n  /**\n   * If set, then patterns without slashes will be matched\n   * against the basename of the path if it contains slashes.\n   * For example, `a?b` would match the path `/xyz/123/acb`, but\n   * not `/xyz/acb/123`.\n   */\n  matchBase?: boolean\n  /** invert the results of negated matches */\n  flipNegate?: boolean\n  /** do not collapse multiple `/` into a single `/` */\n  preserveMultipleSlashes?: boolean\n  /**\n   * A number indicating the level of optimization that should be done\n   * to the pattern prior to parsing and using it for matches.\n   */\n  optimizationLevel?: number\n  /** operating system platform */\n  platform?: Platform\n  /**\n   * When a pattern starts with a UNC path or drive letter, and in\n   * `nocase:true` mode, do not convert the root portions of the\n   * pattern into a case-insensitive regular expression, and instead\n   * leave them as strings.\n   *\n   * This is the default when the platform is `win32` and\n   * `nocase:true` is set.\n   */\n  windowsNoMagicRoot?: boolean\n  /**\n   * max number of `{...}` patterns to expand. Default 100_000.\n   */\n  braceExpandMax?: number\n  /**\n   * Max number of non-adjacent `**` patterns to recursively walk down.\n   *\n   * The default of 200 is almost certainly high enough for most purposes,\n   * and can handle absurdly excessive patterns.\n   */\n  maxGlobstarRecursion?: number\n\n  /**\n   * Max depth to traverse for nested extglobs like `*(a|b|c)`\n   *\n   * Default is 2, which is quite low, but any higher value\n   * swiftly results in punishing performance impacts. Note\n   * that this is *not*  relevant when the globstar types can\n   * be safely coalesced into a single set.\n   *\n   * For example, `*(a|@(b|c)|d)` would be flattened into\n   * `*(a|b|c|d)`. Thus, many common extglobs will retain good\n   * performance and  never hit this limit, even if they are\n   * excessively deep and complicated.\n   *\n   * If the limit is hit, then the extglob characters are simply\n   * not parsed, and the pattern effectively switches into\n   * `noextglob: true` mode for the contents of that nested\n   * sub-pattern. This will typically _not_ result in a match,\n   * but is considered a valid trade-off for security and\n   * performance.\n   */\n  maxExtglobRecursion?: number\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n  !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n  f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n  f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n      process.env &&\n      process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n    process.platform\n  : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n  defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) =>\n      orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (\n      list: string[],\n      pattern: string,\n      options: MinimatchOptions = {},\n    ) => orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n  maxGlobstarRecursion: number\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    // avoid the annoying deprecation flag lol\n    const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options[awe] === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined ?\n        options.windowsNoMagicRoot\n      : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [\n            ...s.slice(0, 4),\n            ...s.slice(4).map(ss => this.parse(ss)),\n          ]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    let fileStartIndex = 0\n    let patternStartIndex = 0\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        // start matching at the drive letter index of each\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          patternStartIndex = pdi\n          fileStartIndex = fdi\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    if (pattern.includes(GLOBSTAR)) {\n      return this.#matchGlobstar(\n        file,\n        pattern,\n        partial,\n        fileStartIndex,\n        patternStartIndex,\n      )\n    }\n\n    return this.#matchOne(\n      file,\n      pattern,\n      partial,\n      fileStartIndex,\n      patternStartIndex,\n    )\n  }\n\n  #matchGlobstar(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    // split the pattern into head, tail, and middle of ** delimited parts\n    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n    const lastgs = pattern.lastIndexOf(GLOBSTAR)\n\n    // split the pattern up into globstar-delimited sections\n    // the tail has to be at the end, and the others just have\n    // to be found in order from the head.\n    const [head, body, tail] = partial ? [\n      pattern.slice(patternIndex, firstgs),\n      pattern.slice(firstgs + 1),\n      [],\n    ] : [\n      pattern.slice(patternIndex, firstgs),\n      pattern.slice(firstgs + 1, lastgs),\n      pattern.slice(lastgs + 1),\n    ]\n\n    // check the head, from the current file/pattern index.\n    if (head.length) {\n      const fileHead = file.slice(fileIndex, fileIndex + head.length)\n      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n        return false\n      }\n      fileIndex += head.length\n      patternIndex += head.length\n    }\n    // now we know the head matches!\n\n    // if the last portion is not empty, it MUST match the end\n    // check the tail\n    let fileTailMatch: number = 0\n    if (tail.length) {\n      // if head + tail > file, then we cannot possibly match\n      if (tail.length + fileIndex > file.length) return false\n\n      // try to match the tail\n      let tailStart = file.length - tail.length\n      if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n        fileTailMatch = tail.length\n      } else {\n        // affordance for stuff like a/**/* matching a/b/\n        // if the last file portion is '', and there's more to the pattern\n        // then try without the '' bit.\n        if (\n          file[file.length - 1] !== '' ||\n          fileIndex + tail.length === file.length\n        ) {\n          return false\n        }\n        tailStart--\n        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n          return false\n        }\n        fileTailMatch = tail.length + 1\n      }\n    }\n\n    // now we know the tail matches!\n\n    // the middle is zero or more portions wrapped in **, possibly\n    // containing more ** sections.\n    // so a/**/b/**/c/**/d has become **/b/**/c/**\n    // if it's empty, it means a/**/b, just verify we have no bad dots\n    // if there's no tail, so it ends on /**, then we must have *something*\n    // after the head, or it's not a matc\n    if (!body.length) {\n      let sawSome = !!fileTailMatch\n      for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n        const f = String(file[i])\n        sawSome = true\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      // in partial mode, we just need to get past all file parts\n      return partial || sawSome\n    }\n\n    // now we know that there's one or more body sections, which can\n    // be matched anywhere from the 0 index (because the head was pruned)\n    // through to the length-fileTailMatch index.\n    // split the body up into sections, and note the minimum index it can\n    // be found at (start with the length of all previous segments)\n    // [section, before, after]\n    const bodySegments: [ParseReturn[], number][] = [[[], 0]]\n    let currentBody: [ParseReturn[], number] = bodySegments[0]\n    let nonGsParts = 0\n    const nonGsPartsSums: number[] = [0]\n    for (const b of body) {\n      if (b === GLOBSTAR) {\n        nonGsPartsSums.push(nonGsParts)\n        currentBody = [[], 0]\n        bodySegments.push(currentBody)\n      } else {\n        currentBody[0].push(b)\n        nonGsParts++\n      }\n    }\n    let i = bodySegments.length - 1\n    const fileLength = file.length - fileTailMatch\n    for (const b of bodySegments) {\n      b[1] = fileLength - ((nonGsPartsSums[i--] as number) + b[0].length)\n    }\n\n    return !!this.#matchGlobStarBodySections(\n      file,\n      bodySegments,\n      fileIndex,\n      0,\n      partial,\n      0,\n      !!fileTailMatch,\n    )\n  }\n\n  // return false for \"nope, not matching\"\n  // return null for \"not matching, cannot keep trying\"\n  #matchGlobStarBodySections(\n    file: string[],\n    // pattern section, last possible position for it\n    bodySegments: [ParseReturn[], number][],\n    fileIndex: number,\n    bodyIndex: number,\n    partial: boolean,\n    globStarDepth: number,\n    sawTail: boolean,\n  ): boolean | null {\n    // take the first body segment, and walk from fileIndex to its \"after\"\n    // value at the end\n    // If it doesn't match at that position, we increment, until we hit\n    // that final possible position, and give up.\n    // If it does match, then advance and try to rest.\n    // If any of them fail we keep walking forward.\n    // this is still a bit recursively painful, but it's more constrained\n    // than previous implementations, because we never test something that\n    // can't possibly be a valid matching condition.\n    const bs = bodySegments[bodyIndex]\n    if (!bs) {\n      // just make sure that there's no bad dots\n      for (let i = fileIndex; i < file.length; i++) {\n        sawTail = true\n        const f = file[i]\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      return sawTail\n    }\n\n    // have a non-globstar body section to test\n    const [body, after] = bs\n    while (fileIndex <= after) {\n      const m = this.#matchOne(\n        file.slice(0, fileIndex + body.length),\n        body,\n        partial,\n        fileIndex,\n        0,\n      )\n      // if limit exceeded, no match. intentional false negative,\n      // acceptable break in correctness for security.\n      if (m && globStarDepth < this.maxGlobstarRecursion) {\n        // match! see if the rest match. if so, we're done!\n        const sub = this.#matchGlobStarBodySections(\n          file,\n          bodySegments,\n          fileIndex + body.length,\n          bodyIndex + 1,\n          partial,\n          globStarDepth + 1,\n          sawTail,\n        )\n        if (sub !== false) {\n          return sub\n        }\n      }\n      const f = file[fileIndex]\n      if (\n        f === '.' ||\n        f === '..' ||\n        (!this.options.dot && f.startsWith('.'))\n      ) {\n        return false\n      }\n\n      fileIndex++\n    }\n    // walked off. no point continuing\n    return partial || null\n  }\n\n  #matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    let fi: number\n    let pi: number\n    let pl: number\n    let fl: number\n    for (\n      fi = fileIndex,\n        pi = patternIndex,\n        fl = file.length,\n        pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      let p = pattern[pi]\n      let f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false || p === GLOBSTAR) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/assert-valid-pattern.d.ts b/deps/minimatch/dist/esm/assert-valid-pattern.d.ts
index 8e318b23a033e2..34d7a78a0c5144 100644
--- a/deps/minimatch/dist/esm/assert-valid-pattern.d.ts
+++ b/deps/minimatch/dist/esm/assert-valid-pattern.d.ts
@@ -1,2 +1,2 @@
-export declare const assertValidPattern: (pattern: any) => void;
+export declare const assertValidPattern: (pattern: unknown) => void;
 //# sourceMappingURL=assert-valid-pattern.d.ts.map
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/assert-valid-pattern.d.ts.map b/deps/minimatch/dist/esm/assert-valid-pattern.d.ts.map
index c61c0310949955..30ddcd51f6eae8 100644
--- a/deps/minimatch/dist/esm/assert-valid-pattern.d.ts.map
+++ b/deps/minimatch/dist/esm/assert-valid-pattern.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"assert-valid-pattern.d.ts","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,kBAAkB,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAUlD,CAAA"}
\ No newline at end of file
+{"version":3,"file":"assert-valid-pattern.d.ts","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAUtD,CAAA"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/assert-valid-pattern.js.map b/deps/minimatch/dist/esm/assert-valid-pattern.js.map
index c4cd82a9796970..550f61df5a845c 100644
--- a/deps/minimatch/dist/esm/assert-valid-pattern.js.map
+++ b/deps/minimatch/dist/esm/assert-valid-pattern.js.map
@@ -1 +1 @@
-{"version":3,"file":"assert-valid-pattern.js","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAA;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAA2B,CACxD,OAAY,EACe,EAAE;IAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC,CAAA","sourcesContent":["const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: any) => void = (\n  pattern: any,\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"assert-valid-pattern.js","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAA;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAC5D,OAAgB,EACW,EAAE;IAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC,CAAA","sourcesContent":["const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: unknown) => void = (\n  pattern: unknown,\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/ast.d.ts b/deps/minimatch/dist/esm/ast.d.ts
index b8c1e5448e6392..27845ea71fb977 100644
--- a/deps/minimatch/dist/esm/ast.d.ts
+++ b/deps/minimatch/dist/esm/ast.d.ts
@@ -3,6 +3,8 @@ export type ExtglobType = '!' | '?' | '+' | '*' | '@';
 export declare class AST {
     #private;
     type: ExtglobType | null;
+    id: number;
+    get depth(): number;
     constructor(type: ExtglobType | null, parent?: AST, options?: MinimatchOptions);
     get hasMagic(): boolean | undefined;
     toString(): string;
diff --git a/deps/minimatch/dist/esm/ast.d.ts.map b/deps/minimatch/dist/esm/ast.d.ts.map
index b11316b37b4843..ec7f7898870ff2 100644
--- a/deps/minimatch/dist/esm/ast.d.ts.map
+++ b/deps/minimatch/dist/esm/ast.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwCvD,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAkCrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;gBAiBtB,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IA+ClB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAe/B,MAAM;IAkBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAsIjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IA2BhC,IAAI,OAAO,qBAEV;IAuED,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CAwMjE"}
\ No newline at end of file
+{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwCvD,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AA6IrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IAexB,EAAE,SAAO;IAET,IAAI,KAAK,IAAI,MAAM,CAElB;gBAgBC,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IA+ClB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAe/B,MAAM;IAkBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAwQjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IA2BhC,IAAI,OAAO,qBAEV;IAuED,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CA6OjE"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/ast.js b/deps/minimatch/dist/esm/ast.js
index 3bfb960c24dc39..943a86ceb43ac1 100644
--- a/deps/minimatch/dist/esm/ast.js
+++ b/deps/minimatch/dist/esm/ast.js
@@ -1,8 +1,110 @@
 // parse a single path portion
+var _a;
 import { parseClass } from './brace-expressions.js';
 import { unescape } from './unescape.js';
 const types = new Set(['!', '?', '+', '*', '@']);
 const isExtglobType = (c) => types.has(c);
+const isExtglobAST = (c) => isExtglobType(c.type);
+// Map of which extglob types can adopt the children of a nested extglob
+//
+// anything but ! can adopt a matching type:
+// +(a|+(b|c)|d) => +(a|b|c|d)
+// *(a|*(b|c)|d) => *(a|b|c|d)
+// @(a|@(b|c)|d) => @(a|b|c|d)
+// ?(a|?(b|c)|d) => ?(a|b|c|d)
+//
+// * can adopt anything, because 0 or repetition is allowed
+// *(a|?(b|c)|d) => *(a|b|c|d)
+// *(a|+(b|c)|d) => *(a|b|c|d)
+// *(a|@(b|c)|d) => *(a|b|c|d)
+//
+// + can adopt @, because 1 or repetition is allowed
+// +(a|@(b|c)|d) => +(a|b|c|d)
+//
+// + and @ CANNOT adopt *, because 0 would be allowed
+// +(a|*(b|c)|d) => would match "", on *(b|c)
+// @(a|*(b|c)|d) => would match "", on *(b|c)
+//
+// + and @ CANNOT adopt ?, because 0 would be allowed
+// +(a|?(b|c)|d) => would match "", on ?(b|c)
+// @(a|?(b|c)|d) => would match "", on ?(b|c)
+//
+// ? can adopt @, because 0 or 1 is allowed
+// ?(a|@(b|c)|d) => ?(a|b|c|d)
+//
+// ? and @ CANNOT adopt * or +, because >1 would be allowed
+// ?(a|*(b|c)|d) => would match bbb on *(b|c)
+// @(a|*(b|c)|d) => would match bbb on *(b|c)
+// ?(a|+(b|c)|d) => would match bbb on +(b|c)
+// @(a|+(b|c)|d) => would match bbb on +(b|c)
+//
+// ! CANNOT adopt ! (nothing else can either)
+// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)
+//
+// ! can adopt @
+// !(a|@(b|c)|d) => !(a|b|c|d)
+//
+// ! CANNOT adopt *
+// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed
+//
+// ! CANNOT adopt +
+// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed
+//
+// ! CANNOT adopt ?
+// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match "x"
+const adoptionMap = new Map([
+    ['!', ['@']],
+    ['?', ['?', '@']],
+    ['@', ['@']],
+    ['*', ['*', '+', '?', '@']],
+    ['+', ['+', '@']],
+]);
+// nested extglobs that can be adopted in, but with the addition of
+// a blank '' element.
+const adoptionWithSpaceMap = new Map([
+    ['!', ['?']],
+    ['@', ['?']],
+    ['+', ['?', '*']],
+]);
+// union of the previous two maps
+const adoptionAnyMap = new Map([
+    ['!', ['?', '@']],
+    ['?', ['?', '@']],
+    ['@', ['?', '@']],
+    ['*', ['*', '+', '?', '@']],
+    ['+', ['+', '@', '?', '*']],
+]);
+// Extglobs that can take over their parent if they are the only child
+// the key is parent, value maps child to resulting extglob parent type
+// '@' is omitted because it's a special case. An `@` extglob with a single
+// member can always be usurped by that subpattern.
+const usurpMap = new Map([
+    ['!', new Map([['!', '@']])],
+    [
+        '?',
+        new Map([
+            ['*', '*'],
+            ['+', '*'],
+        ]),
+    ],
+    [
+        '@',
+        new Map([
+            ['!', '!'],
+            ['?', '?'],
+            ['@', '@'],
+            ['*', '*'],
+            ['+', '+'],
+        ]),
+    ],
+    [
+        '+',
+        new Map([
+            ['?', '*'],
+            ['*', '*'],
+        ]),
+    ],
+]);
 // Patterns that get prepended to bind to the start of either the
 // entire string, or just a single path portion, to prevent dots
 // and/or traversal patterns, when needed.
@@ -26,6 +128,7 @@ const star = qmark + '*?';
 const starNoEmpty = qmark + '+?';
 // remove the \ chars that we added if we end up doing a nonmagic compare
 // const deslash = (s: string) => s.replace(/\\(.)/g, '$1')
+let ID = 0;
 export class AST {
     type;
     #root;
@@ -41,6 +144,22 @@ export class AST {
     // set to true if it's an extglob with no children
     // (which really means one child of '')
     #emptyExt = false;
+    id = ++ID;
+    get depth() {
+        return (this.#parent?.depth ?? -1) + 1;
+    }
+    [Symbol.for('nodejs.util.inspect.custom')]() {
+        return {
+            '@@type': 'AST',
+            id: this.id,
+            type: this.type,
+            root: this.#root.id,
+            parent: this.#parent?.id,
+            depth: this.depth,
+            partsLength: this.#parts.length,
+            parts: this.#parts,
+        };
+    }
     constructor(type, parent, options = {}) {
         this.type = type;
         // extglobs are inherently magical
@@ -120,7 +239,7 @@ export class AST {
                 continue;
             /* c8 ignore start */
             if (typeof p !== 'string' &&
-                !(p instanceof AST && p.#parent === this)) {
+                !(p instanceof _a && p.#parent === this)) {
                 throw new Error('invalid part: ' + p);
             }
             /* c8 ignore stop */
@@ -154,7 +273,7 @@ export class AST {
         const p = this.#parent;
         for (let i = 0; i < this.#parentIndex; i++) {
             const pp = p.#parts[i];
-            if (!(pp instanceof AST && pp.type === '!')) {
+            if (!(pp instanceof _a && pp.type === '!')) {
                 return false;
             }
         }
@@ -182,13 +301,14 @@ export class AST {
             this.push(part.clone(this));
     }
     clone(parent) {
-        const c = new AST(this.type, parent);
+        const c = new _a(this.type, parent);
         for (const p of this.#parts) {
             c.copyIn(p);
         }
         return c;
     }
-    static #parseAST(str, ast, pos, opt) {
+    static #parseAST(str, ast, pos, opt, extDepth) {
+        const maxDepth = opt.maxExtglobRecursion ?? 2;
         let escaping = false;
         let inBrace = false;
         let braceStart = -1;
@@ -225,11 +345,17 @@ export class AST {
                     acc += c;
                     continue;
                 }
-                if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {
+                // we don't have to check for adoption here, because that's
+                // done at the other recursion point.
+                const doRecurse = !opt.noext &&
+                    isExtglobType(c) &&
+                    str.charAt(i) === '(' &&
+                    extDepth <= maxDepth;
+                if (doRecurse) {
                     ast.push(acc);
                     acc = '';
-                    const ext = new AST(c, ast);
-                    i = AST.#parseAST(str, ext, i, opt);
+                    const ext = new _a(c, ast);
+                    i = _a.#parseAST(str, ext, i, opt, extDepth + 1);
                     ast.push(ext);
                     continue;
                 }
@@ -241,7 +367,7 @@ export class AST {
         // some kind of extglob, pos is at the (
         // find the next | or )
         let i = pos + 1;
-        let part = new AST(null, ast);
+        let part = new _a(null, ast);
         const parts = [];
         let acc = '';
         while (i < str.length) {
@@ -272,19 +398,26 @@ export class AST {
                 acc += c;
                 continue;
             }
-            if (isExtglobType(c) && str.charAt(i) === '(') {
+            const doRecurse = !opt.noext &&
+                isExtglobType(c) &&
+                str.charAt(i) === '(' &&
+                /* c8 ignore start - the maxDepth is sufficient here */
+                (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));
+            /* c8 ignore stop */
+            if (doRecurse) {
+                const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;
                 part.push(acc);
                 acc = '';
-                const ext = new AST(c, part);
+                const ext = new _a(c, part);
                 part.push(ext);
-                i = AST.#parseAST(str, ext, i, opt);
+                i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);
                 continue;
             }
             if (c === '|') {
                 part.push(acc);
                 acc = '';
                 parts.push(part);
-                part = new AST(null, ast);
+                part = new _a(null, ast);
                 continue;
             }
             if (c === ')') {
@@ -306,9 +439,82 @@ export class AST {
         ast.#parts = [str.substring(pos - 1)];
         return i;
     }
+    #canAdoptWithSpace(child) {
+        return this.#canAdopt(child, adoptionWithSpaceMap);
+    }
+    #canAdopt(child, map = adoptionMap) {
+        if (!child ||
+            typeof child !== 'object' ||
+            child.type !== null ||
+            child.#parts.length !== 1 ||
+            this.type === null) {
+            return false;
+        }
+        const gc = child.#parts[0];
+        if (!gc || typeof gc !== 'object' || gc.type === null) {
+            return false;
+        }
+        return this.#canAdoptType(gc.type, map);
+    }
+    #canAdoptType(c, map = adoptionAnyMap) {
+        return !!map.get(this.type)?.includes(c);
+    }
+    #adoptWithSpace(child, index) {
+        const gc = child.#parts[0];
+        const blank = new _a(null, gc, this.options);
+        blank.#parts.push('');
+        gc.push(blank);
+        this.#adopt(child, index);
+    }
+    #adopt(child, index) {
+        const gc = child.#parts[0];
+        this.#parts.splice(index, 1, ...gc.#parts);
+        for (const p of gc.#parts) {
+            if (typeof p === 'object')
+                p.#parent = this;
+        }
+        this.#toString = undefined;
+    }
+    #canUsurpType(c) {
+        const m = usurpMap.get(this.type);
+        return !!(m?.has(c));
+    }
+    #canUsurp(child) {
+        if (!child ||
+            typeof child !== 'object' ||
+            child.type !== null ||
+            child.#parts.length !== 1 ||
+            this.type === null ||
+            this.#parts.length !== 1) {
+            return false;
+        }
+        const gc = child.#parts[0];
+        if (!gc || typeof gc !== 'object' || gc.type === null) {
+            return false;
+        }
+        return this.#canUsurpType(gc.type);
+    }
+    #usurp(child) {
+        const m = usurpMap.get(this.type);
+        const gc = child.#parts[0];
+        const nt = m?.get(gc.type);
+        /* c8 ignore start - impossible */
+        if (!nt)
+            return false;
+        /* c8 ignore stop */
+        this.#parts = gc.#parts;
+        for (const p of this.#parts) {
+            if (typeof p === 'object') {
+                p.#parent = this;
+            }
+        }
+        this.type = nt;
+        this.#toString = undefined;
+        this.#emptyExt = false;
+    }
     static fromGlob(pattern, options = {}) {
-        const ast = new AST(null, undefined, options);
-        AST.#parseAST(pattern, ast, 0, options);
+        const ast = new _a(null, undefined, options);
+        _a.#parseAST(pattern, ast, 0, options, 0);
         return ast;
     }
     // returns the regular expression if there's magic, or the unescaped
@@ -412,16 +618,18 @@ export class AST {
     // or start or whatever) and prepend ^ or / at the Regexp construction.
     toRegExpSource(allowDot) {
         const dot = allowDot ?? !!this.#options.dot;
-        if (this.#root === this)
+        if (this.#root === this) {
+            this.#flatten();
             this.#fillNegs();
-        if (!this.type) {
+        }
+        if (!isExtglobAST(this)) {
             const noEmpty = this.isStart() &&
                 this.isEnd() &&
                 !this.#parts.some(s => typeof s !== 'string');
             const src = this.#parts
                 .map(p => {
                 const [re, _, hasMagic, uflag] = typeof p === 'string' ?
-                    AST.#parseGlob(p, this.#hasMagic, noEmpty)
+                    _a.#parseGlob(p, this.#hasMagic, noEmpty)
                     : p.toRegExpSource(allowDot);
                 this.#hasMagic = this.#hasMagic || hasMagic;
                 this.#uflag = this.#uflag || uflag;
@@ -483,12 +691,12 @@ export class AST {
             // invalid extglob, has to at least be *something* present, if it's
             // the entire path portion.
             const s = this.toString();
-            this.#parts = [s];
-            this.type = null;
-            this.#hasMagic = undefined;
+            const me = this;
+            me.#parts = [s];
+            me.type = null;
+            me.#hasMagic = undefined;
             return [s, unescape(this.toString()), false, false];
         }
-        // XXX abstract out this map method
         let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?
             ''
             : this.#partsToRegExp(true);
@@ -524,6 +732,42 @@ export class AST {
             this.#uflag,
         ];
     }
+    #flatten() {
+        if (!isExtglobAST(this)) {
+            for (const p of this.#parts) {
+                if (typeof p === 'object') {
+                    p.#flatten();
+                }
+            }
+        }
+        else {
+            // do up to 10 passes to flatten as much as possible
+            let iterations = 0;
+            let done = false;
+            do {
+                done = true;
+                for (let i = 0; i < this.#parts.length; i++) {
+                    const c = this.#parts[i];
+                    if (typeof c === 'object') {
+                        c.#flatten();
+                        if (this.#canAdopt(c)) {
+                            done = false;
+                            this.#adopt(c, i);
+                        }
+                        else if (this.#canAdoptWithSpace(c)) {
+                            done = false;
+                            this.#adoptWithSpace(c, i);
+                        }
+                        else if (this.#canUsurp(c)) {
+                            done = false;
+                            this.#usurp(c);
+                        }
+                    }
+                }
+            } while (!done && ++iterations < 10);
+        }
+        this.#toString = undefined;
+    }
     #partsToRegExp(dot) {
         return this.#parts
             .map(p => {
@@ -594,4 +838,5 @@ export class AST {
         return [re, unescape(glob), !!hasMagic, uflag];
     }
 }
+_a = AST;
 //# sourceMappingURL=ast.js.map
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/ast.js.map b/deps/minimatch/dist/esm/ast.js.map
index 32dbfd34c3419e..abf30629460b79 100644
--- a/deps/minimatch/dist/esm/ast.js.map
+++ b/deps/minimatch/dist/esm/ast.js.map
@@ -1 +1 @@
-{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string): c is ExtglobType =>\n  types.has(c as ExtglobType)\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  readonly #parent?: AST\n  readonly #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {},\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (\n        typeof p !== 'string' &&\n        !(p instanceof AST && p.#parent === this)\n      ) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null ?\n        this.#parts\n          .slice()\n          .map(p => (typeof p === 'string' ? p : p.toJSON()))\n      : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions,\n  ): number {\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      if (isExtglobType(c) && str.charAt(i) === '(') {\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) this.#fillNegs()\n    if (!this.type) {\n      const noEmpty =\n        this.isStart() &&\n        this.isEnd() &&\n        !this.#parts.some(s => typeof s !== 'string')\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string' ?\n              AST.#parseGlob(p, this.#hasMagic, noEmpty)\n            : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start =\n              needNoTrav ? startNoTraversal\n              : needNoDot ? startNoDot\n              : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      this.#parts = [s]\n      this.type = null\n      this.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    // XXX abstract out this map method\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot ?\n        ''\n      : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!' ?\n          // !() must match something,but !(x) can match ''\n          '))' +\n          (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n          star +\n          ')'\n        : this.type === '@' ? ')'\n        : this.type === '?' ? ')?'\n        : this.type === '+' && bodyDotAllowed ? ')'\n        : this.type === '*' && bodyDotAllowed ? `)?`\n        : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #partsToRegExp(dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    // multiple stars that aren't globstars coalesce into one *\n    let inStar = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '*') {\n        if (inStar) continue\n        inStar = true\n        re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n        hasMagic = true\n        continue\n      } else {\n        inStar = false\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string | null): c is ExtglobType =>\n  types.has(c as ExtglobType)\nconst isExtglobAST = (c: AST): c is AST & { type: ExtglobType } =>\n  isExtglobType(c.type)\n\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n  ['!', ['@']],\n  ['?', ['?', '@']],\n  ['@', ['@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@']],\n])\n\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n  ['!', ['?']],\n  ['@', ['?']],\n  ['+', ['?', '*']],\n])\n\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n  ['!', ['?', '@']],\n  ['?', ['?', '@']],\n  ['@', ['?', '@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@', '?', '*']],\n])\n\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map>([\n  ['!', new Map([['!', '@']])],\n  [\n    '?',\n    new Map([\n      ['*', '*'],\n      ['+', '*'],\n    ]),\n  ],\n  [\n    '@',\n    new Map([\n      ['!', '!'],\n      ['?', '?'],\n      ['@', '@'],\n      ['*', '*'],\n      ['+', '+'],\n    ]),\n  ],\n  [\n    '+',\n    new Map([\n      ['?', '*'],\n      ['*', '*'],\n    ]),\n  ],\n])\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nlet ID = 0\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  #parent?: AST\n  #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n  id = ++ID\n\n  get depth(): number {\n    return (this.#parent?.depth ?? -1) + 1\n  }\n\n  [Symbol.for('nodejs.util.inspect.custom')]() {\n    return {\n      '@@type': 'AST',\n      id: this.id,\n      type: this.type,\n      root: this.#root.id,\n      parent: this.#parent?.id,\n      depth: this.depth,\n      partsLength: this.#parts.length,\n      parts: this.#parts,\n    }\n  }\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {},\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (\n        typeof p !== 'string' &&\n        !(p instanceof AST && p.#parent === this)\n      ) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null ?\n        this.#parts\n          .slice()\n          .map(p => (typeof p === 'string' ? p : p.toJSON()))\n      : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions,\n    extDepth: number,\n  ): number {\n    const maxDepth = opt.maxExtglobRecursion ?? 2\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        // we don't have to check for adoption here, because that's\n        // done at the other recursion point.\n        const doRecurse =\n          !opt.noext &&\n          isExtglobType(c) &&\n          str.charAt(i) === '(' &&\n          extDepth <= maxDepth\n        if (doRecurse) {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt, extDepth + 1)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      const doRecurse =\n        !opt.noext &&\n        isExtglobType(c) &&\n        str.charAt(i) === '(' &&\n        /* c8 ignore start - the maxDepth is sufficient here */\n        (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)))\n      /* c8 ignore stop */\n      if (doRecurse) {\n        const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt, extDepth + depthAdd)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  #canAdoptWithSpace(child?: AST | string): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    return this.#canAdopt(child, adoptionWithSpaceMap)\n  }\n\n  #canAdopt(\n    child?: AST | string,\n    map: Map = adoptionMap,\n  ): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canAdoptType(\n      gc.type,\n      map,\n    )\n  }\n  #canAdoptType(\n    c: string,\n    map: Map = adoptionAnyMap,\n  ): c is ExtglobType {\n    return !!map.get(this.type as ExtglobType)?.includes(c as ExtglobType)\n  }\n\n  #adoptWithSpace(\n    this: AST & { type: ExtglobType },\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const blank = new AST(null, gc, this.options)\n    blank.#parts.push('')\n    gc.push(blank)\n    this.#adopt(child, index)\n  }\n\n  #adopt(\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    this.#parts.splice(index, 1, ...gc.#parts)\n    for (const p of gc.#parts) {\n      if (typeof p === 'object') p.#parent = this\n    }\n    this.#toString = undefined\n  }\n\n  #canUsurpType(c: string): boolean {\n    const m = usurpMap.get(this.type as ExtglobType)\n    return !!(m?.has(c as ExtglobType))\n  }\n\n  #canUsurp (\n    child?: AST | string,\n  ): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null ||\n      this.#parts.length !== 1\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canUsurpType(gc.type)\n  }\n\n  #usurp(this: AST & { type: ExtglobType }, child: AST & { type: null }) {\n    const m = usurpMap.get(this.type as ExtglobType)\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const nt = m?.get(gc.type)\n    /* c8 ignore start - impossible */\n    if (!nt) return false\n    /* c8 ignore stop */\n    this.#parts = gc.#parts\n    for (const p of this.#parts) {\n      if (typeof p === 'object') {\n        p.#parent = this\n      }\n    }\n    this.type = nt\n    this.#toString = undefined\n    this.#emptyExt = false\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options, 0)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) {\n      this.#flatten()\n      this.#fillNegs()\n    }\n    if (!isExtglobAST(this)) {\n      const noEmpty =\n        this.isStart() &&\n        this.isEnd() &&\n        !this.#parts.some(s => typeof s !== 'string')\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string' ?\n              AST.#parseGlob(p, this.#hasMagic, noEmpty)\n            : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start =\n              needNoTrav ? startNoTraversal\n              : needNoDot ? startNoDot\n              : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      const me = this as AST\n      me.#parts = [s]\n      me.type = null\n      me.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot ?\n        ''\n      : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!' ?\n          // !() must match something,but !(x) can match ''\n          '))' +\n          (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n          star +\n          ')'\n        : this.type === '@' ? ')'\n        : this.type === '?' ? ')?'\n        : this.type === '+' && bodyDotAllowed ? ')'\n        : this.type === '*' && bodyDotAllowed ? `)?`\n        : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #flatten() {\n    if (!isExtglobAST(this)) {\n      for (const p of this.#parts) {\n        if (typeof p === 'object') {\n          p.#flatten()\n        }\n      }\n    } else {\n      // do up to 10 passes to flatten as much as possible\n      let iterations = 0\n      let done = false\n      do {\n        done = true\n        for (let i = 0; i < this.#parts.length; i++) {\n          const c = this.#parts[i]\n          if (typeof c === 'object') {\n            c.#flatten()\n            if (this.#canAdopt(c)) {\n              done = false\n              this.#adopt(c, i)\n            } else if (this.#canAdoptWithSpace(c)) {\n              done = false\n              this.#adoptWithSpace(c, i)\n            } else if (this.#canUsurp(c)) {\n              done = false\n              this.#usurp(c)\n            }\n          }\n        }\n      } while (!done && ++iterations < 10)\n    }\n    this.#toString = undefined\n  }\n\n  #partsToRegExp(this: AST & { type: ExtglobType }, dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    // multiple stars that aren't globstars coalesce into one *\n    let inStar = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '*') {\n        if (inStar) continue\n        inStar = true\n        re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n        hasMagic = true\n        continue\n      } else {\n        inStar = false\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/index.d.ts b/deps/minimatch/dist/esm/index.d.ts
index 1556f330559c1e..137bd803690752 100644
--- a/deps/minimatch/dist/esm/index.d.ts
+++ b/deps/minimatch/dist/esm/index.d.ts
@@ -71,6 +71,34 @@ export interface MinimatchOptions {
      * max number of `{...}` patterns to expand. Default 100_000.
      */
     braceExpandMax?: number;
+    /**
+     * Max number of non-adjacent `**` patterns to recursively walk down.
+     *
+     * The default of 200 is almost certainly high enough for most purposes,
+     * and can handle absurdly excessive patterns.
+     */
+    maxGlobstarRecursion?: number;
+    /**
+     * Max depth to traverse for nested extglobs like `*(a|b|c)`
+     *
+     * Default is 2, which is quite low, but any higher value
+     * swiftly results in punishing performance impacts. Note
+     * that this is *not*  relevant when the globstar types can
+     * be safely coalesced into a single set.
+     *
+     * For example, `*(a|@(b|c)|d)` would be flattened into
+     * `*(a|b|c|d)`. Thus, many common extglobs will retain good
+     * performance and  never hit this limit, even if they are
+     * excessively deep and complicated.
+     *
+     * If the limit is hit, then the extglob characters are simply
+     * not parsed, and the pattern effectively switches into
+     * `noextglob: true` mode for the contents of that nested
+     * sub-pattern. This will typically _not_ result in a match,
+     * but is considered a valid trade-off for security and
+     * performance.
+     */
+    maxExtglobRecursion?: number;
 }
 export declare const minimatch: {
     (p: string, pattern: string, options?: MinimatchOptions): boolean;
@@ -101,6 +129,7 @@ export type MMRegExp = RegExp & {
 export type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR;
 export type ParseReturn = ParseReturnFiltered | false;
 export declare class Minimatch {
+    #private;
     options: MinimatchOptions;
     set: ParseReturnFiltered[][];
     pattern: string;
@@ -117,6 +146,7 @@ export declare class Minimatch {
     isWindows: boolean;
     platform: Platform;
     windowsNoMagicRoot: boolean;
+    maxGlobstarRecursion: number;
     regexp: false | null | MMRegExp;
     constructor(pattern: string, options?: MinimatchOptions);
     hasMagic(): boolean;
diff --git a/deps/minimatch/dist/esm/index.d.ts.map b/deps/minimatch/dist/esm/index.d.ts.map
index 8e41a6cacdfc3f..1c65035ac63c5a 100644
--- a/deps/minimatch/dist/esm/index.d.ts.map
+++ b/deps/minimatch/dist/esm/index.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAe,MAAM,UAAU,CAAA;AAI3C,MAAM,MAAM,QAAQ,GAChB,KAAK,GACL,SAAS,GACT,QAAQ,GACR,SAAS,GACT,OAAO,GACP,OAAO,GACP,SAAS,GACT,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,CAAA;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,iCAAiC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8DAA8D;IAC9D,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qEAAqE;IACrE,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kEAAkE;IAClE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qDAAqD;IACrD,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,eAAO,MAAM,SAAS;QACjB,MAAM,WACA,MAAM,YACN,gBAAgB;;;sBA4Gf,MAAM,YAAW,gBAAgB,MAC1C,GAAG,MAAM;oBAOkB,gBAAgB,KAAG,OAAO,SAAS;2BAuFtD,MAAM,YACN,gBAAgB;sBA2BK,MAAM,YAAW,gBAAgB;kBAKzD,MAAM,EAAE,WACL,MAAM,YACN,gBAAgB;;;;;CApO1B,CAAA;AAkED,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,CAAA;AAQ5B,eAAO,MAAM,GAAG,KAC+C,CAAA;AAG/D,eAAO,MAAM,QAAQ,eAAwB,CAAA;AAmB7C,eAAO,MAAM,MAAM,GAChB,SAAS,MAAM,EAAE,UAAS,gBAAqB,MAC/C,GAAG,MAAM,YACsB,CAAA;AAMlC,eAAO,MAAM,QAAQ,GAAI,KAAK,gBAAgB,KAAG,OAAO,SAyEvD,CAAA;AAaD,eAAO,MAAM,WAAW,GACtB,SAAS,MAAM,EACf,UAAS,gBAAqB,aAY/B,CAAA;AAeD,eAAO,MAAM,MAAM,GAAI,SAAS,MAAM,EAAE,UAAS,gBAAqB,qBAC5B,CAAA;AAG1C,eAAO,MAAM,KAAK,GAChB,MAAM,MAAM,EAAE,EACd,SAAS,MAAM,EACf,UAAS,gBAAqB,aAQ/B,CAAA;AAQD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,QAAQ,CAAA;AACrE,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,KAAK,CAAA;AAErD,qBAAa,SAAS;;IACpB,OAAO,EAAE,gBAAgB,CAAA;IACzB,GAAG,EAAE,mBAAmB,EAAE,EAAE,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IAEf,oBAAoB,EAAE,OAAO,CAAA;IAC7B,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,uBAAuB,EAAE,OAAO,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,MAAM,EAAE,EAAE,CAAA;IACrB,MAAM,EAAE,OAAO,CAAA;IAEf,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,oBAAoB,EAAE,MAAM,CAAA;IAE5B,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAA;gBACnB,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAqC3D,QAAQ,IAAI,OAAO;IAYnB,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;IAEjB,IAAI;IA6FJ,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IA8BhC,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IAiB/C,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IAoBtC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IA6D7C,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IA0F1C,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE;IAkBxD,UAAU,CACR,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,YAAY,GAAE,OAAe,GAC5B,KAAK,GAAG,MAAM,EAAE;IA+CnB,WAAW;IAqBX,QAAQ,CACN,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,WAAW,EAAE,EACtB,OAAO,GAAE,OAAe;IA8W1B,WAAW;IAIX,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IA6CnC,MAAM;IAuGN,UAAU,CAAC,CAAC,EAAE,MAAM;IAepB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,UAAe;IAiEvC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB;CAGtC;AAED,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/index.js b/deps/minimatch/dist/esm/index.js
index 3175327db5efbf..a9e0602187c7fd 100644
--- a/deps/minimatch/dist/esm/index.js
+++ b/deps/minimatch/dist/esm/index.js
@@ -193,11 +193,13 @@ export class Minimatch {
     isWindows;
     platform;
     windowsNoMagicRoot;
+    maxGlobstarRecursion;
     regexp;
     constructor(pattern, options = {}) {
         assertValidPattern(pattern);
         options = options || {};
         this.options = options;
+        this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;
         this.pattern = pattern;
         this.platform = options.platform || defaultPlatform;
         this.isWindows = this.platform === 'win32';
@@ -602,7 +604,8 @@ export class Minimatch {
     // out of pattern, then that's fine, as long as all
     // the parts match.
     matchOne(file, pattern, partial = false) {
-        const options = this.options;
+        let fileStartIndex = 0;
+        let patternStartIndex = 0;
         // UNC paths like //?/X:/... can match X:/... and vice versa
         // Drive letters in absolute drive or unc paths are always compared
         // case-insensitively.
@@ -631,14 +634,11 @@ export class Minimatch {
                     file[fdi],
                     pattern[pdi],
                 ];
+                // start matching at the drive letter index of each
                 if (fd.toLowerCase() === pd.toLowerCase()) {
                     pattern[pdi] = fd;
-                    if (pdi > fdi) {
-                        pattern = pattern.slice(pdi);
-                    }
-                    else if (fdi > pdi) {
-                        file = file.slice(fdi);
-                    }
+                    patternStartIndex = pdi;
+                    fileStartIndex = fdi;
                 }
             }
         }
@@ -648,99 +648,185 @@ export class Minimatch {
         if (optimizationLevel >= 2) {
             file = this.levelTwoFileOptimize(file);
         }
-        this.debug('matchOne', this, { file, pattern });
-        this.debug('matchOne', file.length, pattern.length);
-        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+        if (pattern.includes(GLOBSTAR)) {
+            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);
+        }
+        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);
+    }
+    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {
+        // split the pattern into head, tail, and middle of ** delimited parts
+        const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);
+        const lastgs = pattern.lastIndexOf(GLOBSTAR);
+        // split the pattern up into globstar-delimited sections
+        // the tail has to be at the end, and the others just have
+        // to be found in order from the head.
+        const [head, body, tail] = partial ? [
+            pattern.slice(patternIndex, firstgs),
+            pattern.slice(firstgs + 1),
+            [],
+        ] : [
+            pattern.slice(patternIndex, firstgs),
+            pattern.slice(firstgs + 1, lastgs),
+            pattern.slice(lastgs + 1),
+        ];
+        // check the head, from the current file/pattern index.
+        if (head.length) {
+            const fileHead = file.slice(fileIndex, fileIndex + head.length);
+            if (!this.#matchOne(fileHead, head, partial, 0, 0)) {
+                return false;
+            }
+            fileIndex += head.length;
+            patternIndex += head.length;
+        }
+        // now we know the head matches!
+        // if the last portion is not empty, it MUST match the end
+        // check the tail
+        let fileTailMatch = 0;
+        if (tail.length) {
+            // if head + tail > file, then we cannot possibly match
+            if (tail.length + fileIndex > file.length)
+                return false;
+            // try to match the tail
+            let tailStart = file.length - tail.length;
+            if (this.#matchOne(file, tail, partial, tailStart, 0)) {
+                fileTailMatch = tail.length;
+            }
+            else {
+                // affordance for stuff like a/**/* matching a/b/
+                // if the last file portion is '', and there's more to the pattern
+                // then try without the '' bit.
+                if (file[file.length - 1] !== '' ||
+                    fileIndex + tail.length === file.length) {
+                    return false;
+                }
+                tailStart--;
+                if (!this.#matchOne(file, tail, partial, tailStart, 0)) {
+                    return false;
+                }
+                fileTailMatch = tail.length + 1;
+            }
+        }
+        // now we know the tail matches!
+        // the middle is zero or more portions wrapped in **, possibly
+        // containing more ** sections.
+        // so a/**/b/**/c/**/d has become **/b/**/c/**
+        // if it's empty, it means a/**/b, just verify we have no bad dots
+        // if there's no tail, so it ends on /**, then we must have *something*
+        // after the head, or it's not a matc
+        if (!body.length) {
+            let sawSome = !!fileTailMatch;
+            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {
+                const f = String(file[i]);
+                sawSome = true;
+                if (f === '.' ||
+                    f === '..' ||
+                    (!this.options.dot && f.startsWith('.'))) {
+                    return false;
+                }
+            }
+            // in partial mode, we just need to get past all file parts
+            return partial || sawSome;
+        }
+        // now we know that there's one or more body sections, which can
+        // be matched anywhere from the 0 index (because the head was pruned)
+        // through to the length-fileTailMatch index.
+        // split the body up into sections, and note the minimum index it can
+        // be found at (start with the length of all previous segments)
+        // [section, before, after]
+        const bodySegments = [[[], 0]];
+        let currentBody = bodySegments[0];
+        let nonGsParts = 0;
+        const nonGsPartsSums = [0];
+        for (const b of body) {
+            if (b === GLOBSTAR) {
+                nonGsPartsSums.push(nonGsParts);
+                currentBody = [[], 0];
+                bodySegments.push(currentBody);
+            }
+            else {
+                currentBody[0].push(b);
+                nonGsParts++;
+            }
+        }
+        let i = bodySegments.length - 1;
+        const fileLength = file.length - fileTailMatch;
+        for (const b of bodySegments) {
+            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);
+        }
+        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);
+    }
+    // return false for "nope, not matching"
+    // return null for "not matching, cannot keep trying"
+    #matchGlobStarBodySections(file, 
+    // pattern section, last possible position for it
+    bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {
+        // take the first body segment, and walk from fileIndex to its "after"
+        // value at the end
+        // If it doesn't match at that position, we increment, until we hit
+        // that final possible position, and give up.
+        // If it does match, then advance and try to rest.
+        // If any of them fail we keep walking forward.
+        // this is still a bit recursively painful, but it's more constrained
+        // than previous implementations, because we never test something that
+        // can't possibly be a valid matching condition.
+        const bs = bodySegments[bodyIndex];
+        if (!bs) {
+            // just make sure that there's no bad dots
+            for (let i = fileIndex; i < file.length; i++) {
+                sawTail = true;
+                const f = file[i];
+                if (f === '.' ||
+                    f === '..' ||
+                    (!this.options.dot && f.startsWith('.'))) {
+                    return false;
+                }
+            }
+            return sawTail;
+        }
+        // have a non-globstar body section to test
+        const [body, after] = bs;
+        while (fileIndex <= after) {
+            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);
+            // if limit exceeded, no match. intentional false negative,
+            // acceptable break in correctness for security.
+            if (m && globStarDepth < this.maxGlobstarRecursion) {
+                // match! see if the rest match. if so, we're done!
+                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);
+                if (sub !== false) {
+                    return sub;
+                }
+            }
+            const f = file[fileIndex];
+            if (f === '.' ||
+                f === '..' ||
+                (!this.options.dot && f.startsWith('.'))) {
+                return false;
+            }
+            fileIndex++;
+        }
+        // walked off. no point continuing
+        return partial || null;
+    }
+    #matchOne(file, pattern, partial, fileIndex, patternIndex) {
+        let fi;
+        let pi;
+        let pl;
+        let fl;
+        for (fi = fileIndex,
+            pi = patternIndex,
+            fl = file.length,
+            pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
             this.debug('matchOne loop');
-            var p = pattern[pi];
-            var f = file[fi];
+            let p = pattern[pi];
+            let f = file[fi];
             this.debug(pattern, p, f);
             // should be impossible.
             // some invalid regexp stuff in the set.
             /* c8 ignore start */
-            if (p === false) {
+            if (p === false || p === GLOBSTAR) {
                 return false;
             }
             /* c8 ignore stop */
-            if (p === GLOBSTAR) {
-                this.debug('GLOBSTAR', [pattern, p, f]);
-                // "**"
-                // a/**/b/**/c would match the following:
-                // a/b/x/y/z/c
-                // a/x/y/z/b/c
-                // a/b/x/b/x/c
-                // a/b/c
-                // To do this, take the rest of the pattern after
-                // the **, and see if it would match the file remainder.
-                // If so, return success.
-                // If not, the ** "swallows" a segment, and try again.
-                // This is recursively awful.
-                //
-                // a/**/b/**/c matching a/b/x/y/z/c
-                // - a matches a
-                // - doublestar
-                //   - matchOne(b/x/y/z/c, b/**/c)
-                //     - b matches b
-                //     - doublestar
-                //       - matchOne(x/y/z/c, c) -> no
-                //       - matchOne(y/z/c, c) -> no
-                //       - matchOne(z/c, c) -> no
-                //       - matchOne(c, c) yes, hit
-                var fr = fi;
-                var pr = pi + 1;
-                if (pr === pl) {
-                    this.debug('** at the end');
-                    // a ** at the end will just swallow the rest.
-                    // We have found a match.
-                    // however, it will not swallow /.x, unless
-                    // options.dot is set.
-                    // . and .. are *never* matched by **, for explosively
-                    // exponential reasons.
-                    for (; fi < fl; fi++) {
-                        if (file[fi] === '.' ||
-                            file[fi] === '..' ||
-                            (!options.dot && file[fi].charAt(0) === '.'))
-                            return false;
-                    }
-                    return true;
-                }
-                // ok, let's see if we can swallow whatever we can.
-                while (fr < fl) {
-                    var swallowee = file[fr];
-                    this.debug('\nglobstar while', file, fr, pattern, pr, swallowee);
-                    // XXX remove this slice.  Just pass the start index.
-                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
-                        this.debug('globstar found match!', fr, fl, swallowee);
-                        // found a match.
-                        return true;
-                    }
-                    else {
-                        // can't swallow "." or ".." ever.
-                        // can only swallow ".foo" when explicitly asked.
-                        if (swallowee === '.' ||
-                            swallowee === '..' ||
-                            (!options.dot && swallowee.charAt(0) === '.')) {
-                            this.debug('dot detected!', file, fr, pattern, pr);
-                            break;
-                        }
-                        // ** swallows a segment, and continue.
-                        this.debug('globstar swallow a segment, and continue');
-                        fr++;
-                    }
-                }
-                // no match was found.
-                // However, in partial mode, we can't say this is necessarily over.
-                /* c8 ignore start */
-                if (partial) {
-                    // ran out of file
-                    this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
-                    if (fr === fl) {
-                        return true;
-                    }
-                }
-                /* c8 ignore stop */
-                return false;
-            }
             // something other than **
             // non-magic patterns just have to match exactly
             // patterns with magic have been turned into regexps.
diff --git a/deps/minimatch/dist/esm/index.js.map b/deps/minimatch/dist/esm/index.js.map
index 03716021016ea5..2dc46400d4755b 100644
--- a/deps/minimatch/dist/esm/index.js.map
+++ b/deps/minimatch/dist/esm/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  /** do not expand `{x,y}` style braces */\n  nobrace?: boolean\n  /** do not treat patterns starting with `#` as a comment */\n  nocomment?: boolean\n  /** do not treat patterns starting with `!` as a negation */\n  nonegate?: boolean\n  /** print LOTS of debugging output */\n  debug?: boolean\n  /** treat `**` the same as `*` */\n  noglobstar?: boolean\n  /** do not expand extglobs like `+(a|b)` */\n  noext?: boolean\n  /** return the pattern if nothing matches */\n  nonull?: boolean\n  /** treat `\\\\` as a path separator, not an escape character */\n  windowsPathsNoEscape?: boolean\n  /**\n   * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n  /**\n   * Compare a partial path to a pattern. As long as the parts\n   * of the path that are present are not contradicted by the\n   * pattern, it will be treated as a match. This is useful in\n   * applications where you're walking through a folder structure,\n   * and don't yet have the full path, but want to ensure that you\n   * do not walk down paths that can never be a match.\n   */\n  partial?: boolean\n  /** allow matches that start with `.` even if the pattern does not */\n  dot?: boolean\n  /** ignore case */\n  nocase?: boolean\n  /** ignore case only in wildcard patterns */\n  nocaseMagicOnly?: boolean\n  /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n  magicalBraces?: boolean\n  /**\n   * If set, then patterns without slashes will be matched\n   * against the basename of the path if it contains slashes.\n   * For example, `a?b` would match the path `/xyz/123/acb`, but\n   * not `/xyz/acb/123`.\n   */\n  matchBase?: boolean\n  /** invert the results of negated matches */\n  flipNegate?: boolean\n  /** do not collapse multiple `/` into a single `/` */\n  preserveMultipleSlashes?: boolean\n  /**\n   * A number indicating the level of optimization that should be done\n   * to the pattern prior to parsing and using it for matches.\n   */\n  optimizationLevel?: number\n  /** operating system platform */\n  platform?: Platform\n  /**\n   * When a pattern starts with a UNC path or drive letter, and in\n   * `nocase:true` mode, do not convert the root portions of the\n   * pattern into a case-insensitive regular expression, and instead\n   * leave them as strings.\n   *\n   * This is the default when the platform is `win32` and\n   * `nocase:true` is set.\n   */\n  windowsNoMagicRoot?: boolean\n  /**\n   * max number of `{...}` patterns to expand. Default 100_000.\n   */\n  braceExpandMax?: number\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n  !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n  f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n  f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n      process.env &&\n      process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n    process.platform\n  : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n  defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) =>\n      orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (\n      list: string[],\n      pattern: string,\n      options: MinimatchOptions = {},\n    ) => orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    // avoid the annoying deprecation flag lol\n    const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options[awe] === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined ?\n        options.windowsNoMagicRoot\n      : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [\n            ...s.slice(0, 4),\n            ...s.slice(4).map(ss => this.parse(ss)),\n          ]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    const options = this.options\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          if (pdi > fdi) {\n            pattern = pattern.slice(pdi)\n          } else if (fdi > pdi) {\n            file = file.slice(fdi)\n          }\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  /** do not expand `{x,y}` style braces */\n  nobrace?: boolean\n  /** do not treat patterns starting with `#` as a comment */\n  nocomment?: boolean\n  /** do not treat patterns starting with `!` as a negation */\n  nonegate?: boolean\n  /** print LOTS of debugging output */\n  debug?: boolean\n  /** treat `**` the same as `*` */\n  noglobstar?: boolean\n  /** do not expand extglobs like `+(a|b)` */\n  noext?: boolean\n  /** return the pattern if nothing matches */\n  nonull?: boolean\n  /** treat `\\\\` as a path separator, not an escape character */\n  windowsPathsNoEscape?: boolean\n  /**\n   * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n  /**\n   * Compare a partial path to a pattern. As long as the parts\n   * of the path that are present are not contradicted by the\n   * pattern, it will be treated as a match. This is useful in\n   * applications where you're walking through a folder structure,\n   * and don't yet have the full path, but want to ensure that you\n   * do not walk down paths that can never be a match.\n   */\n  partial?: boolean\n  /** allow matches that start with `.` even if the pattern does not */\n  dot?: boolean\n  /** ignore case */\n  nocase?: boolean\n  /** ignore case only in wildcard patterns */\n  nocaseMagicOnly?: boolean\n  /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n  magicalBraces?: boolean\n  /**\n   * If set, then patterns without slashes will be matched\n   * against the basename of the path if it contains slashes.\n   * For example, `a?b` would match the path `/xyz/123/acb`, but\n   * not `/xyz/acb/123`.\n   */\n  matchBase?: boolean\n  /** invert the results of negated matches */\n  flipNegate?: boolean\n  /** do not collapse multiple `/` into a single `/` */\n  preserveMultipleSlashes?: boolean\n  /**\n   * A number indicating the level of optimization that should be done\n   * to the pattern prior to parsing and using it for matches.\n   */\n  optimizationLevel?: number\n  /** operating system platform */\n  platform?: Platform\n  /**\n   * When a pattern starts with a UNC path or drive letter, and in\n   * `nocase:true` mode, do not convert the root portions of the\n   * pattern into a case-insensitive regular expression, and instead\n   * leave them as strings.\n   *\n   * This is the default when the platform is `win32` and\n   * `nocase:true` is set.\n   */\n  windowsNoMagicRoot?: boolean\n  /**\n   * max number of `{...}` patterns to expand. Default 100_000.\n   */\n  braceExpandMax?: number\n  /**\n   * Max number of non-adjacent `**` patterns to recursively walk down.\n   *\n   * The default of 200 is almost certainly high enough for most purposes,\n   * and can handle absurdly excessive patterns.\n   */\n  maxGlobstarRecursion?: number\n\n  /**\n   * Max depth to traverse for nested extglobs like `*(a|b|c)`\n   *\n   * Default is 2, which is quite low, but any higher value\n   * swiftly results in punishing performance impacts. Note\n   * that this is *not*  relevant when the globstar types can\n   * be safely coalesced into a single set.\n   *\n   * For example, `*(a|@(b|c)|d)` would be flattened into\n   * `*(a|b|c|d)`. Thus, many common extglobs will retain good\n   * performance and  never hit this limit, even if they are\n   * excessively deep and complicated.\n   *\n   * If the limit is hit, then the extglob characters are simply\n   * not parsed, and the pattern effectively switches into\n   * `noextglob: true` mode for the contents of that nested\n   * sub-pattern. This will typically _not_ result in a match,\n   * but is considered a valid trade-off for security and\n   * performance.\n   */\n  maxExtglobRecursion?: number\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n  !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n  f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n  f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n      process.env &&\n      process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n    process.platform\n  : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n  defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) =>\n      orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (\n      list: string[],\n      pattern: string,\n      options: MinimatchOptions = {},\n    ) => orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n  maxGlobstarRecursion: number\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    // avoid the annoying deprecation flag lol\n    const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options[awe] === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined ?\n        options.windowsNoMagicRoot\n      : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [\n            ...s.slice(0, 4),\n            ...s.slice(4).map(ss => this.parse(ss)),\n          ]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    let fileStartIndex = 0\n    let patternStartIndex = 0\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        // start matching at the drive letter index of each\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          patternStartIndex = pdi\n          fileStartIndex = fdi\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    if (pattern.includes(GLOBSTAR)) {\n      return this.#matchGlobstar(\n        file,\n        pattern,\n        partial,\n        fileStartIndex,\n        patternStartIndex,\n      )\n    }\n\n    return this.#matchOne(\n      file,\n      pattern,\n      partial,\n      fileStartIndex,\n      patternStartIndex,\n    )\n  }\n\n  #matchGlobstar(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    // split the pattern into head, tail, and middle of ** delimited parts\n    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n    const lastgs = pattern.lastIndexOf(GLOBSTAR)\n\n    // split the pattern up into globstar-delimited sections\n    // the tail has to be at the end, and the others just have\n    // to be found in order from the head.\n    const [head, body, tail] = partial ? [\n      pattern.slice(patternIndex, firstgs),\n      pattern.slice(firstgs + 1),\n      [],\n    ] : [\n      pattern.slice(patternIndex, firstgs),\n      pattern.slice(firstgs + 1, lastgs),\n      pattern.slice(lastgs + 1),\n    ]\n\n    // check the head, from the current file/pattern index.\n    if (head.length) {\n      const fileHead = file.slice(fileIndex, fileIndex + head.length)\n      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n        return false\n      }\n      fileIndex += head.length\n      patternIndex += head.length\n    }\n    // now we know the head matches!\n\n    // if the last portion is not empty, it MUST match the end\n    // check the tail\n    let fileTailMatch: number = 0\n    if (tail.length) {\n      // if head + tail > file, then we cannot possibly match\n      if (tail.length + fileIndex > file.length) return false\n\n      // try to match the tail\n      let tailStart = file.length - tail.length\n      if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n        fileTailMatch = tail.length\n      } else {\n        // affordance for stuff like a/**/* matching a/b/\n        // if the last file portion is '', and there's more to the pattern\n        // then try without the '' bit.\n        if (\n          file[file.length - 1] !== '' ||\n          fileIndex + tail.length === file.length\n        ) {\n          return false\n        }\n        tailStart--\n        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n          return false\n        }\n        fileTailMatch = tail.length + 1\n      }\n    }\n\n    // now we know the tail matches!\n\n    // the middle is zero or more portions wrapped in **, possibly\n    // containing more ** sections.\n    // so a/**/b/**/c/**/d has become **/b/**/c/**\n    // if it's empty, it means a/**/b, just verify we have no bad dots\n    // if there's no tail, so it ends on /**, then we must have *something*\n    // after the head, or it's not a matc\n    if (!body.length) {\n      let sawSome = !!fileTailMatch\n      for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n        const f = String(file[i])\n        sawSome = true\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      // in partial mode, we just need to get past all file parts\n      return partial || sawSome\n    }\n\n    // now we know that there's one or more body sections, which can\n    // be matched anywhere from the 0 index (because the head was pruned)\n    // through to the length-fileTailMatch index.\n    // split the body up into sections, and note the minimum index it can\n    // be found at (start with the length of all previous segments)\n    // [section, before, after]\n    const bodySegments: [ParseReturn[], number][] = [[[], 0]]\n    let currentBody: [ParseReturn[], number] = bodySegments[0]\n    let nonGsParts = 0\n    const nonGsPartsSums: number[] = [0]\n    for (const b of body) {\n      if (b === GLOBSTAR) {\n        nonGsPartsSums.push(nonGsParts)\n        currentBody = [[], 0]\n        bodySegments.push(currentBody)\n      } else {\n        currentBody[0].push(b)\n        nonGsParts++\n      }\n    }\n    let i = bodySegments.length - 1\n    const fileLength = file.length - fileTailMatch\n    for (const b of bodySegments) {\n      b[1] = fileLength - ((nonGsPartsSums[i--] as number) + b[0].length)\n    }\n\n    return !!this.#matchGlobStarBodySections(\n      file,\n      bodySegments,\n      fileIndex,\n      0,\n      partial,\n      0,\n      !!fileTailMatch,\n    )\n  }\n\n  // return false for \"nope, not matching\"\n  // return null for \"not matching, cannot keep trying\"\n  #matchGlobStarBodySections(\n    file: string[],\n    // pattern section, last possible position for it\n    bodySegments: [ParseReturn[], number][],\n    fileIndex: number,\n    bodyIndex: number,\n    partial: boolean,\n    globStarDepth: number,\n    sawTail: boolean,\n  ): boolean | null {\n    // take the first body segment, and walk from fileIndex to its \"after\"\n    // value at the end\n    // If it doesn't match at that position, we increment, until we hit\n    // that final possible position, and give up.\n    // If it does match, then advance and try to rest.\n    // If any of them fail we keep walking forward.\n    // this is still a bit recursively painful, but it's more constrained\n    // than previous implementations, because we never test something that\n    // can't possibly be a valid matching condition.\n    const bs = bodySegments[bodyIndex]\n    if (!bs) {\n      // just make sure that there's no bad dots\n      for (let i = fileIndex; i < file.length; i++) {\n        sawTail = true\n        const f = file[i]\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      return sawTail\n    }\n\n    // have a non-globstar body section to test\n    const [body, after] = bs\n    while (fileIndex <= after) {\n      const m = this.#matchOne(\n        file.slice(0, fileIndex + body.length),\n        body,\n        partial,\n        fileIndex,\n        0,\n      )\n      // if limit exceeded, no match. intentional false negative,\n      // acceptable break in correctness for security.\n      if (m && globStarDepth < this.maxGlobstarRecursion) {\n        // match! see if the rest match. if so, we're done!\n        const sub = this.#matchGlobStarBodySections(\n          file,\n          bodySegments,\n          fileIndex + body.length,\n          bodyIndex + 1,\n          partial,\n          globStarDepth + 1,\n          sawTail,\n        )\n        if (sub !== false) {\n          return sub\n        }\n      }\n      const f = file[fileIndex]\n      if (\n        f === '.' ||\n        f === '..' ||\n        (!this.options.dot && f.startsWith('.'))\n      ) {\n        return false\n      }\n\n      fileIndex++\n    }\n    // walked off. no point continuing\n    return partial || null\n  }\n\n  #matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    let fi: number\n    let pi: number\n    let pl: number\n    let fl: number\n    for (\n      fi = fileIndex,\n        pi = patternIndex,\n        fl = file.length,\n        pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      let p = pattern[pi]\n      let f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false || p === GLOBSTAR) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/index.js b/deps/minimatch/index.js
index 971840b54a6557..d28609b10808f9 100644
--- a/deps/minimatch/index.js
+++ b/deps/minimatch/index.js
@@ -88,7 +88,7 @@ var require_commonjs2 = __commonJS({
     var openPattern = /\\{/g;
     var closePattern = /\\}/g;
     var commaPattern = /\\,/g;
-    var periodPattern = /\\./g;
+    var periodPattern = /\\\./g;
     exports2.EXPANSION_MAX = 1e5;
     function numeric(str) {
       return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);
@@ -391,12 +391,60 @@ var require_unescape = __commonJS({
 var require_ast = __commonJS({
   "dist/commonjs/ast.js"(exports2) {
     "use strict";
+    var _a;
     Object.defineProperty(exports2, "__esModule", { value: true });
     exports2.AST = void 0;
     var brace_expressions_js_1 = require_brace_expressions();
     var unescape_js_12 = require_unescape();
     var types = /* @__PURE__ */ new Set(["!", "?", "+", "*", "@"]);
     var isExtglobType = (c) => types.has(c);
+    var isExtglobAST = (c) => isExtglobType(c.type);
+    var adoptionMap = /* @__PURE__ */ new Map([
+      ["!", ["@"]],
+      ["?", ["?", "@"]],
+      ["@", ["@"]],
+      ["*", ["*", "+", "?", "@"]],
+      ["+", ["+", "@"]]
+    ]);
+    var adoptionWithSpaceMap = /* @__PURE__ */ new Map([
+      ["!", ["?"]],
+      ["@", ["?"]],
+      ["+", ["?", "*"]]
+    ]);
+    var adoptionAnyMap = /* @__PURE__ */ new Map([
+      ["!", ["?", "@"]],
+      ["?", ["?", "@"]],
+      ["@", ["?", "@"]],
+      ["*", ["*", "+", "?", "@"]],
+      ["+", ["+", "@", "?", "*"]]
+    ]);
+    var usurpMap = /* @__PURE__ */ new Map([
+      ["!", /* @__PURE__ */ new Map([["!", "@"]])],
+      [
+        "?",
+        /* @__PURE__ */ new Map([
+          ["*", "*"],
+          ["+", "*"]
+        ])
+      ],
+      [
+        "@",
+        /* @__PURE__ */ new Map([
+          ["!", "!"],
+          ["?", "?"],
+          ["@", "@"],
+          ["*", "*"],
+          ["+", "+"]
+        ])
+      ],
+      [
+        "+",
+        /* @__PURE__ */ new Map([
+          ["?", "*"],
+          ["*", "*"]
+        ])
+      ]
+    ]);
     var startNoTraversal = "(?!(?:^|/)\\.\\.?(?:$|/))";
     var startNoDot = "(?!\\.)";
     var addPatternStart = /* @__PURE__ */ new Set(["[", "."]);
@@ -406,7 +454,8 @@ var require_ast = __commonJS({
     var qmark2 = "[^/]";
     var star2 = qmark2 + "*?";
     var starNoEmpty = qmark2 + "+?";
-    var AST = class _AST {
+    var ID = 0;
+    var AST = class {
       type;
       #root;
       #hasMagic;
@@ -421,6 +470,22 @@ var require_ast = __commonJS({
       // set to true if it's an extglob with no children
       // (which really means one child of '')
       #emptyExt = false;
+      id = ++ID;
+      get depth() {
+        return (this.#parent?.depth ?? -1) + 1;
+      }
+      [/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")]() {
+        return {
+          "@@type": "AST",
+          id: this.id,
+          type: this.type,
+          root: this.#root.id,
+          parent: this.#parent?.id,
+          depth: this.depth,
+          partsLength: this.#parts.length,
+          parts: this.#parts
+        };
+      }
       constructor(type, parent, options = {}) {
         this.type = type;
         if (type)
@@ -486,7 +551,7 @@ var require_ast = __commonJS({
         for (const p of parts) {
           if (p === "")
             continue;
-          if (typeof p !== "string" && !(p instanceof _AST && p.#parent === this)) {
+          if (typeof p !== "string" && !(p instanceof _a && p.#parent === this)) {
             throw new Error("invalid part: " + p);
           }
           this.#parts.push(p);
@@ -511,7 +576,7 @@ var require_ast = __commonJS({
         const p = this.#parent;
         for (let i = 0; i < this.#parentIndex; i++) {
           const pp = p.#parts[i];
-          if (!(pp instanceof _AST && pp.type === "!")) {
+          if (!(pp instanceof _a && pp.type === "!")) {
             return false;
           }
         }
@@ -536,13 +601,14 @@ var require_ast = __commonJS({
           this.push(part.clone(this));
       }
       clone(parent) {
-        const c = new _AST(this.type, parent);
+        const c = new _a(this.type, parent);
         for (const p of this.#parts) {
           c.copyIn(p);
         }
         return c;
       }
-      static #parseAST(str, ast, pos, opt) {
+      static #parseAST(str, ast, pos, opt, extDepth) {
+        const maxDepth = opt.maxExtglobRecursion ?? 2;
         let escaping = false;
         let inBrace = false;
         let braceStart = -1;
@@ -574,11 +640,12 @@ var require_ast = __commonJS({
               acc2 += c;
               continue;
             }
-            if (!opt.noext && isExtglobType(c) && str.charAt(i2) === "(") {
+            const doRecurse = !opt.noext && isExtglobType(c) && str.charAt(i2) === "(" && extDepth <= maxDepth;
+            if (doRecurse) {
               ast.push(acc2);
               acc2 = "";
-              const ext2 = new _AST(c, ast);
-              i2 = _AST.#parseAST(str, ext2, i2, opt);
+              const ext2 = new _a(c, ast);
+              i2 = _a.#parseAST(str, ext2, i2, opt, extDepth + 1);
               ast.push(ext2);
               continue;
             }
@@ -588,7 +655,7 @@ var require_ast = __commonJS({
           return i2;
         }
         let i = pos + 1;
-        let part = new _AST(null, ast);
+        let part = new _a(null, ast);
         const parts = [];
         let acc = "";
         while (i < str.length) {
@@ -615,19 +682,22 @@ var require_ast = __commonJS({
             acc += c;
             continue;
           }
-          if (isExtglobType(c) && str.charAt(i) === "(") {
+          const doRecurse = !opt.noext && isExtglobType(c) && str.charAt(i) === "(" && /* c8 ignore start - the maxDepth is sufficient here */
+          (extDepth <= maxDepth || ast && ast.#canAdoptType(c));
+          if (doRecurse) {
+            const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;
             part.push(acc);
             acc = "";
-            const ext2 = new _AST(c, part);
+            const ext2 = new _a(c, part);
             part.push(ext2);
-            i = _AST.#parseAST(str, ext2, i, opt);
+            i = _a.#parseAST(str, ext2, i, opt, extDepth + depthAdd);
             continue;
           }
           if (c === "|") {
             part.push(acc);
             acc = "";
             parts.push(part);
-            part = new _AST(null, ast);
+            part = new _a(null, ast);
             continue;
           }
           if (c === ")") {
@@ -646,9 +716,71 @@ var require_ast = __commonJS({
         ast.#parts = [str.substring(pos - 1)];
         return i;
       }
+      #canAdoptWithSpace(child) {
+        return this.#canAdopt(child, adoptionWithSpaceMap);
+      }
+      #canAdopt(child, map = adoptionMap) {
+        if (!child || typeof child !== "object" || child.type !== null || child.#parts.length !== 1 || this.type === null) {
+          return false;
+        }
+        const gc = child.#parts[0];
+        if (!gc || typeof gc !== "object" || gc.type === null) {
+          return false;
+        }
+        return this.#canAdoptType(gc.type, map);
+      }
+      #canAdoptType(c, map = adoptionAnyMap) {
+        return !!map.get(this.type)?.includes(c);
+      }
+      #adoptWithSpace(child, index) {
+        const gc = child.#parts[0];
+        const blank = new _a(null, gc, this.options);
+        blank.#parts.push("");
+        gc.push(blank);
+        this.#adopt(child, index);
+      }
+      #adopt(child, index) {
+        const gc = child.#parts[0];
+        this.#parts.splice(index, 1, ...gc.#parts);
+        for (const p of gc.#parts) {
+          if (typeof p === "object")
+            p.#parent = this;
+        }
+        this.#toString = void 0;
+      }
+      #canUsurpType(c) {
+        const m = usurpMap.get(this.type);
+        return !!m?.has(c);
+      }
+      #canUsurp(child) {
+        if (!child || typeof child !== "object" || child.type !== null || child.#parts.length !== 1 || this.type === null || this.#parts.length !== 1) {
+          return false;
+        }
+        const gc = child.#parts[0];
+        if (!gc || typeof gc !== "object" || gc.type === null) {
+          return false;
+        }
+        return this.#canUsurpType(gc.type);
+      }
+      #usurp(child) {
+        const m = usurpMap.get(this.type);
+        const gc = child.#parts[0];
+        const nt = m?.get(gc.type);
+        if (!nt)
+          return false;
+        this.#parts = gc.#parts;
+        for (const p of this.#parts) {
+          if (typeof p === "object") {
+            p.#parent = this;
+          }
+        }
+        this.type = nt;
+        this.#toString = void 0;
+        this.#emptyExt = false;
+      }
       static fromGlob(pattern, options = {}) {
-        const ast = new _AST(null, void 0, options);
-        _AST.#parseAST(pattern, ast, 0, options);
+        const ast = new _a(null, void 0, options);
+        _a.#parseAST(pattern, ast, 0, options, 0);
         return ast;
       }
       // returns the regular expression if there's magic, or the unescaped
@@ -742,12 +874,14 @@ var require_ast = __commonJS({
       // or start or whatever) and prepend ^ or / at the Regexp construction.
       toRegExpSource(allowDot) {
         const dot = allowDot ?? !!this.#options.dot;
-        if (this.#root === this)
+        if (this.#root === this) {
+          this.#flatten();
           this.#fillNegs();
-        if (!this.type) {
+        }
+        if (!isExtglobAST(this)) {
           const noEmpty = this.isStart() && this.isEnd() && !this.#parts.some((s) => typeof s !== "string");
           const src = this.#parts.map((p) => {
-            const [re, _, hasMagic, uflag] = typeof p === "string" ? _AST.#parseGlob(p, this.#hasMagic, noEmpty) : p.toRegExpSource(allowDot);
+            const [re, _, hasMagic, uflag] = typeof p === "string" ? _a.#parseGlob(p, this.#hasMagic, noEmpty) : p.toRegExpSource(allowDot);
             this.#hasMagic = this.#hasMagic || hasMagic;
             this.#uflag = this.#uflag || uflag;
             return re;
@@ -786,9 +920,10 @@ var require_ast = __commonJS({
         let body = this.#partsToRegExp(dot);
         if (this.isStart() && this.isEnd() && !body && this.type !== "!") {
           const s = this.toString();
-          this.#parts = [s];
-          this.type = null;
-          this.#hasMagic = void 0;
+          const me = this;
+          me.#parts = [s];
+          me.type = null;
+          me.#hasMagic = void 0;
           return [s, (0, unescape_js_12.unescape)(this.toString()), false, false];
         }
         let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ? "" : this.#partsToRegExp(true);
@@ -815,6 +950,38 @@ var require_ast = __commonJS({
           this.#uflag
         ];
       }
+      #flatten() {
+        if (!isExtglobAST(this)) {
+          for (const p of this.#parts) {
+            if (typeof p === "object") {
+              p.#flatten();
+            }
+          }
+        } else {
+          let iterations = 0;
+          let done = false;
+          do {
+            done = true;
+            for (let i = 0; i < this.#parts.length; i++) {
+              const c = this.#parts[i];
+              if (typeof c === "object") {
+                c.#flatten();
+                if (this.#canAdopt(c)) {
+                  done = false;
+                  this.#adopt(c, i);
+                } else if (this.#canAdoptWithSpace(c)) {
+                  done = false;
+                  this.#adoptWithSpace(c, i);
+                } else if (this.#canUsurp(c)) {
+                  done = false;
+                  this.#usurp(c);
+                }
+              }
+            }
+          } while (!done && ++iterations < 10);
+        }
+        this.#toString = void 0;
+      }
       #partsToRegExp(dot) {
         return this.#parts.map((p) => {
           if (typeof p === "string") {
@@ -876,6 +1043,7 @@ var require_ast = __commonJS({
       }
     };
     exports2.AST = AST;
+    _a = AST;
   }
 });
 
@@ -1057,11 +1225,13 @@ var Minimatch = class {
   isWindows;
   platform;
   windowsNoMagicRoot;
+  maxGlobstarRecursion;
   regexp;
   constructor(pattern, options = {}) {
     (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
     options = options || {};
     this.options = options;
+    this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;
     this.pattern = pattern;
     this.platform = options.platform || defaultPlatform;
     this.isWindows = this.platform === "win32";
@@ -1398,7 +1568,8 @@ var Minimatch = class {
   // out of pattern, then that's fine, as long as all
   // the parts match.
   matchOne(file, pattern, partial = false) {
-    const options = this.options;
+    let fileStartIndex = 0;
+    let patternStartIndex = 0;
     if (this.isWindows) {
       const fileDrive = typeof file[0] === "string" && /^[a-z]:$/i.test(file[0]);
       const fileUNC = !fileDrive && file[0] === "" && file[1] === "" && file[2] === "?" && /^[a-z]:$/i.test(file[3]);
@@ -1413,11 +1584,8 @@ var Minimatch = class {
         ];
         if (fd.toLowerCase() === pd.toLowerCase()) {
           pattern[pdi] = fd;
-          if (pdi > fdi) {
-            pattern = pattern.slice(pdi);
-          } else if (fdi > pdi) {
-            file = file.slice(fdi);
-          }
+          patternStartIndex = pdi;
+          fileStartIndex = fdi;
         }
       }
     }
@@ -1425,49 +1593,123 @@ var Minimatch = class {
     if (optimizationLevel >= 2) {
       file = this.levelTwoFileOptimize(file);
     }
-    this.debug("matchOne", this, { file, pattern });
-    this.debug("matchOne", file.length, pattern.length);
-    for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
-      this.debug("matchOne loop");
-      var p = pattern[pi];
-      var f = file[fi];
-      this.debug(pattern, p, f);
-      if (p === false) {
+    if (pattern.includes(exports.GLOBSTAR)) {
+      return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);
+    }
+    return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);
+  }
+  #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {
+    const firstgs = pattern.indexOf(exports.GLOBSTAR, patternIndex);
+    const lastgs = pattern.lastIndexOf(exports.GLOBSTAR);
+    const [head, body, tail] = partial ? [
+      pattern.slice(patternIndex, firstgs),
+      pattern.slice(firstgs + 1),
+      []
+    ] : [
+      pattern.slice(patternIndex, firstgs),
+      pattern.slice(firstgs + 1, lastgs),
+      pattern.slice(lastgs + 1)
+    ];
+    if (head.length) {
+      const fileHead = file.slice(fileIndex, fileIndex + head.length);
+      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {
         return false;
       }
-      if (p === exports.GLOBSTAR) {
-        this.debug("GLOBSTAR", [pattern, p, f]);
-        var fr = fi;
-        var pr = pi + 1;
-        if (pr === pl) {
-          this.debug("** at the end");
-          for (; fi < fl; fi++) {
-            if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".")
-              return false;
-          }
-          return true;
+      fileIndex += head.length;
+      patternIndex += head.length;
+    }
+    let fileTailMatch = 0;
+    if (tail.length) {
+      if (tail.length + fileIndex > file.length)
+        return false;
+      let tailStart = file.length - tail.length;
+      if (this.#matchOne(file, tail, partial, tailStart, 0)) {
+        fileTailMatch = tail.length;
+      } else {
+        if (file[file.length - 1] !== "" || fileIndex + tail.length === file.length) {
+          return false;
         }
-        while (fr < fl) {
-          var swallowee = file[fr];
-          this.debug("\nglobstar while", file, fr, pattern, pr, swallowee);
-          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
-            this.debug("globstar found match!", fr, fl, swallowee);
-            return true;
-          } else {
-            if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") {
-              this.debug("dot detected!", file, fr, pattern, pr);
-              break;
-            }
-            this.debug("globstar swallow a segment, and continue");
-            fr++;
-          }
+        tailStart--;
+        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {
+          return false;
         }
-        if (partial) {
-          this.debug("\n>>> no match, partial?", file, fr, pattern, pr);
-          if (fr === fl) {
-            return true;
-          }
+        fileTailMatch = tail.length + 1;
+      }
+    }
+    if (!body.length) {
+      let sawSome = !!fileTailMatch;
+      for (let i2 = fileIndex; i2 < file.length - fileTailMatch; i2++) {
+        const f = String(file[i2]);
+        sawSome = true;
+        if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
+          return false;
+        }
+      }
+      return partial || sawSome;
+    }
+    const bodySegments = [[[], 0]];
+    let currentBody = bodySegments[0];
+    let nonGsParts = 0;
+    const nonGsPartsSums = [0];
+    for (const b of body) {
+      if (b === exports.GLOBSTAR) {
+        nonGsPartsSums.push(nonGsParts);
+        currentBody = [[], 0];
+        bodySegments.push(currentBody);
+      } else {
+        currentBody[0].push(b);
+        nonGsParts++;
+      }
+    }
+    let i = bodySegments.length - 1;
+    const fileLength = file.length - fileTailMatch;
+    for (const b of bodySegments) {
+      b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);
+    }
+    return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);
+  }
+  // return false for "nope, not matching"
+  // return null for "not matching, cannot keep trying"
+  #matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {
+    const bs = bodySegments[bodyIndex];
+    if (!bs) {
+      for (let i = fileIndex; i < file.length; i++) {
+        sawTail = true;
+        const f = file[i];
+        if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
+          return false;
+        }
+      }
+      return sawTail;
+    }
+    const [body, after] = bs;
+    while (fileIndex <= after) {
+      const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);
+      if (m && globStarDepth < this.maxGlobstarRecursion) {
+        const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);
+        if (sub !== false) {
+          return sub;
         }
+      }
+      const f = file[fileIndex];
+      if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
+        return false;
+      }
+      fileIndex++;
+    }
+    return partial || null;
+  }
+  #matchOne(file, pattern, partial, fileIndex, patternIndex) {
+    let fi;
+    let pi;
+    let pl;
+    let fl;
+    for (fi = fileIndex, pi = patternIndex, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+      this.debug("matchOne loop");
+      let p = pattern[pi];
+      let f = file[fi];
+      this.debug(pattern, p, f);
+      if (p === false || p === exports.GLOBSTAR) {
         return false;
       }
       let hit;
diff --git a/deps/minimatch/package-lock.json b/deps/minimatch/package-lock.json
index b0c575fab1e949..1022f59865f99d 100644
--- a/deps/minimatch/package-lock.json
+++ b/deps/minimatch/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "minimatch",
-  "version": "10.2.2",
+  "version": "10.2.4",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "minimatch",
-      "version": "10.2.2",
+      "version": "10.2.4",
       "license": "BlueOak-1.0.0",
       "dependencies": {
         "brace-expansion": "^5.0.2"
@@ -16,7 +16,7 @@
         "esbuild": "^0.27.3",
         "mkdirp": "^3.0.1",
         "prettier": "^3.6.2",
-        "tap": "^21.6.1",
+        "tap": "^21.6.2",
         "tshy": "^3.0.2",
         "typedoc": "^0.28.5"
       },
@@ -513,17 +513,30 @@
         "node": ">=18"
       }
     },
+    "node_modules/@gar/promise-retry": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.2.tgz",
+      "integrity": "sha512-Lm/ZLhDZcBECta3TmCQSngiQykFdfw+QtI1/GYMsZd4l3nG+P8WLB16XuS7WaBGLQ+9E+cOcWQsth9cayuGt8g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "retry": "^0.13.1"
+      },
+      "engines": {
+        "node": "^20.17.0 || >=22.9.0"
+      }
+    },
     "node_modules/@gerrit0/mini-shiki": {
-      "version": "3.22.0",
-      "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.22.0.tgz",
-      "integrity": "sha512-jMpciqEVUBKE1QwU64S4saNMzpsSza6diNCk4MWAeCxO2+LFi2FIFmL2S0VDLzEJCxuvCbU783xi8Hp/gkM5CQ==",
+      "version": "3.23.0",
+      "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.23.0.tgz",
+      "integrity": "sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@shikijs/engine-oniguruma": "^3.22.0",
-        "@shikijs/langs": "^3.22.0",
-        "@shikijs/themes": "^3.22.0",
-        "@shikijs/types": "^3.22.0",
+        "@shikijs/engine-oniguruma": "^3.23.0",
+        "@shikijs/langs": "^3.23.0",
+        "@shikijs/themes": "^3.23.0",
+        "@shikijs/types": "^3.23.0",
         "@shikijs/vscode-textmate": "^10.0.2"
       }
     },
@@ -683,18 +696,18 @@
       }
     },
     "node_modules/@npmcli/git": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz",
-      "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==",
+      "version": "7.0.2",
+      "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.2.tgz",
+      "integrity": "sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
+        "@gar/promise-retry": "^1.0.0",
         "@npmcli/promise-spawn": "^9.0.0",
         "ini": "^6.0.0",
         "lru-cache": "^11.2.1",
         "npm-pick-manifest": "^11.0.1",
         "proc-log": "^6.0.0",
-        "promise-retry": "^2.0.1",
         "semver": "^7.3.5",
         "which": "^6.0.0"
       },
@@ -772,9 +785,9 @@
       }
     },
     "node_modules/@npmcli/run-script": {
-      "version": "10.0.3",
-      "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.3.tgz",
-      "integrity": "sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==",
+      "version": "10.0.4",
+      "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.4.tgz",
+      "integrity": "sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
@@ -782,8 +795,7 @@
         "@npmcli/package-json": "^7.0.0",
         "@npmcli/promise-spawn": "^9.0.0",
         "node-gyp": "^12.1.0",
-        "proc-log": "^6.0.0",
-        "which": "^6.0.0"
+        "proc-log": "^6.0.0"
       },
       "engines": {
         "node": "^20.17.0 || >=22.9.0"
@@ -801,40 +813,40 @@
       }
     },
     "node_modules/@shikijs/engine-oniguruma": {
-      "version": "3.22.0",
-      "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.22.0.tgz",
-      "integrity": "sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==",
+      "version": "3.23.0",
+      "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz",
+      "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@shikijs/types": "3.22.0",
+        "@shikijs/types": "3.23.0",
         "@shikijs/vscode-textmate": "^10.0.2"
       }
     },
     "node_modules/@shikijs/langs": {
-      "version": "3.22.0",
-      "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.22.0.tgz",
-      "integrity": "sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==",
+      "version": "3.23.0",
+      "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz",
+      "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@shikijs/types": "3.22.0"
+        "@shikijs/types": "3.23.0"
       }
     },
     "node_modules/@shikijs/themes": {
-      "version": "3.22.0",
-      "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.22.0.tgz",
-      "integrity": "sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==",
+      "version": "3.23.0",
+      "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz",
+      "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@shikijs/types": "3.22.0"
+        "@shikijs/types": "3.23.0"
       }
     },
     "node_modules/@shikijs/types": {
-      "version": "3.22.0",
-      "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.22.0.tgz",
-      "integrity": "sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==",
+      "version": "3.23.0",
+      "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz",
+      "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -1492,9 +1504,9 @@
       "license": "MIT"
     },
     "node_modules/@types/node": {
-      "version": "25.3.0",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz",
-      "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==",
+      "version": "25.3.3",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.3.tgz",
+      "integrity": "sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -1509,28 +1521,28 @@
       "license": "MIT"
     },
     "node_modules/@typescript/native-preview": {
-      "version": "7.0.0-dev.20260221.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260221.1.tgz",
-      "integrity": "sha512-tEUzcnj6pD+z1vANchRzhpPl+3RMD+xQRvIN//0+qjtP5zyYB5T+MIaAWycpKDwlHP9C13JnQgcgYnC+LlNkrg==",
+      "version": "7.0.0-dev.20260228.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260228.1.tgz",
+      "integrity": "sha512-kEUE54Shr4VfD1aVlxBkT9EVRkdSklINPxcUdFDwWQYh+uNRfgM/KmGUapbhCnoaat8ALRv30X6r6Eu3WiEhGg==",
       "dev": true,
       "license": "Apache-2.0",
       "bin": {
         "tsgo": "bin/tsgo.js"
       },
       "optionalDependencies": {
-        "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260221.1",
-        "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260221.1",
-        "@typescript/native-preview-linux-arm": "7.0.0-dev.20260221.1",
-        "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260221.1",
-        "@typescript/native-preview-linux-x64": "7.0.0-dev.20260221.1",
-        "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260221.1",
-        "@typescript/native-preview-win32-x64": "7.0.0-dev.20260221.1"
+        "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260228.1",
+        "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260228.1",
+        "@typescript/native-preview-linux-arm": "7.0.0-dev.20260228.1",
+        "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260228.1",
+        "@typescript/native-preview-linux-x64": "7.0.0-dev.20260228.1",
+        "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260228.1",
+        "@typescript/native-preview-win32-x64": "7.0.0-dev.20260228.1"
       }
     },
     "node_modules/@typescript/native-preview-darwin-arm64": {
-      "version": "7.0.0-dev.20260221.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260221.1.tgz",
-      "integrity": "sha512-m3ttEpK+eXV7P06RVZZuSuUvNDj8psXODrMJRRQWpTNsk3qITbIdBSgOx2Q/M3tbQ9Mo2IBHt6jUjqOdRW9oZQ==",
+      "version": "7.0.0-dev.20260228.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260228.1.tgz",
+      "integrity": "sha512-WzU0dbBNrEC/qS/axWxcxSosQNg422SdEq/aPf/98RDjYQVy1ILH0UU1aOyzROujPyUBPeVho71MrFEhb9uh6g==",
       "cpu": [
         "arm64"
       ],
@@ -1542,9 +1554,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-darwin-x64": {
-      "version": "7.0.0-dev.20260221.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260221.1.tgz",
-      "integrity": "sha512-BNaNe3rox2rpkh5sWcnZZob6sDA/at9KK55/WSRAH4W+9dFReOLFAR9YXhKxrLGZ1QpleuIBahKbV8o037S+pA==",
+      "version": "7.0.0-dev.20260228.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260228.1.tgz",
+      "integrity": "sha512-6QJ3PApmZoc87exMhashVL/gjNG+1Ph5OkUT3GXblM5PucXdEuVr1d86TC0O31EBbqUWWKUbp+U/BiTko1gOHw==",
       "cpu": [
         "x64"
       ],
@@ -1556,9 +1568,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-linux-arm": {
-      "version": "7.0.0-dev.20260221.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260221.1.tgz",
-      "integrity": "sha512-+/uyIw7vg4FyAnNpsCJHmSOhMiR2m56lqaEo1J5pMAstJmfLTTKQdJ1muIWCDCqc24k2U30IStHOaCqUerp/nQ==",
+      "version": "7.0.0-dev.20260228.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260228.1.tgz",
+      "integrity": "sha512-H2rKa7vjt/kfzlz+sdXW5VU/f8PcemCbW4JLcAi4esSUSDYDNsOHYCgLdrOrvUA9IBK86kunkTsJVvKJLpy+jQ==",
       "cpu": [
         "arm"
       ],
@@ -1570,9 +1582,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-linux-arm64": {
-      "version": "7.0.0-dev.20260221.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260221.1.tgz",
-      "integrity": "sha512-Y4jsvwDq86LXq63UYRLqCAd+nD1r6C2NVaGNR39H+c6D8SgOBkPLJa8quTH0Ir8E5bsR8vTN4E6xHY9jD4J2PA==",
+      "version": "7.0.0-dev.20260228.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260228.1.tgz",
+      "integrity": "sha512-oVJ689FnZuwm0+MEFtbWcI9kqCfU8+7/z23d2SgMl5M4NKYk5CqUsOtm6IGwZRRLJONKhmSdAzOCSbMN9UTLEg==",
       "cpu": [
         "arm64"
       ],
@@ -1584,9 +1596,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-linux-x64": {
-      "version": "7.0.0-dev.20260221.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260221.1.tgz",
-      "integrity": "sha512-7agd5FtVLPp+gRMvsecSDmdQ/XM80q/uaQ6+Kahan9uNrCuPJIyMiAtJvCoYYgT1nXX2AjwZk39DH63fRaw/Mg==",
+      "version": "7.0.0-dev.20260228.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260228.1.tgz",
+      "integrity": "sha512-W4/N02tp9CSd+ZO5p6KyyKqXmqMA2vtVcvnjBLyPDZQ4KgUAeRMJFzH/7ME2BN3BxZCplX5WFXfmI6fkc+1z+w==",
       "cpu": [
         "x64"
       ],
@@ -1598,9 +1610,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-win32-arm64": {
-      "version": "7.0.0-dev.20260221.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260221.1.tgz",
-      "integrity": "sha512-lXbsy5vDzS//oE0evX+QwZBwpKselXTd8H18lT42CBQo2hL2r0+w9YBguaYXrnGkAoHjDXEfKA2xii8yVZKVUg==",
+      "version": "7.0.0-dev.20260228.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260228.1.tgz",
+      "integrity": "sha512-AB6NhxIInyeIzINJLhIzNo4qQOEHp/YvATptTK6vcngBq9syb2ST6UAMIAtl2Vj1m9wjMpUyHzzcJK/1c1MemA==",
       "cpu": [
         "arm64"
       ],
@@ -1612,9 +1624,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-win32-x64": {
-      "version": "7.0.0-dev.20260221.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260221.1.tgz",
-      "integrity": "sha512-O02pfQlVlRTsBmp0hODs/bOHm2ic2kXZpIchBP5Qm0wKCp1Ytz/7i3SNT1gN47I+KC4axn/AHhFmkWQyIu9kRQ==",
+      "version": "7.0.0-dev.20260228.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260228.1.tgz",
+      "integrity": "sha512-9Wq1d0ZbrJcF6NoODw4+SRNdcZtKMmm2w32Wlo+r6ZIziBF5HFWvJcwGXNE0pbFpX6H/Gs8dhLaDKZU2dLoWOA==",
       "cpu": [
         "x64"
       ],
@@ -1751,24 +1763,24 @@
       }
     },
     "node_modules/balanced-match": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz",
-      "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==",
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+      "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
       "license": "MIT",
       "engines": {
-        "node": "20 || >=22"
+        "node": "18 || 20 || >=22"
       }
     },
     "node_modules/brace-expansion": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz",
-      "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==",
+      "version": "5.0.4",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
+      "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
       "license": "MIT",
       "dependencies": {
         "balanced-match": "^4.0.2"
       },
       "engines": {
-        "node": "20 || >=22"
+        "node": "18 || 20 || >=22"
       }
     },
     "node_modules/c8": {
@@ -2181,17 +2193,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/encoding": {
-      "version": "0.1.13",
-      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
-      "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "iconv-lite": "^0.6.2"
-      }
-    },
     "node_modules/entities": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
@@ -2531,9 +2532,9 @@
       }
     },
     "node_modules/iconv-lite": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
-      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "version": "0.7.2",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
+      "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
       "dev": true,
       "license": "MIT",
       "optional": true,
@@ -2542,6 +2543,10 @@
       },
       "engines": {
         "node": ">=0.10.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/express"
       }
     },
     "node_modules/ignore-walk": {
@@ -2883,12 +2888,13 @@
       "license": "ISC"
     },
     "node_modules/make-fetch-happen": {
-      "version": "15.0.3",
-      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.3.tgz",
-      "integrity": "sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==",
+      "version": "15.0.4",
+      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.4.tgz",
+      "integrity": "sha512-vM2sG+wbVeVGYcCm16mM3d5fuem9oC28n436HjsGO3LcxoTI8LNVa4rwZDn3f76+cWyT4GGJDxjTYU1I2nr6zw==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
+        "@gar/promise-retry": "^1.0.0",
         "@npmcli/agent": "^4.0.0",
         "cacache": "^20.0.1",
         "http-cache-semantics": "^4.1.1",
@@ -2898,7 +2904,6 @@
         "minipass-pipeline": "^1.2.4",
         "negotiator": "^1.0.0",
         "proc-log": "^6.0.0",
-        "promise-retry": "^2.0.1",
         "ssri": "^13.0.0"
       },
       "engines": {
@@ -2941,9 +2946,9 @@
       }
     },
     "node_modules/minimatch": {
-      "version": "10.2.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz",
-      "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==",
+      "version": "10.2.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
+      "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -2980,9 +2985,9 @@
       }
     },
     "node_modules/minipass-fetch": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.1.tgz",
-      "integrity": "sha512-yHK8pb0iCGat0lDrs/D6RZmCdaBT64tULXjdxjSMAqoDi18Q3qKEUTHypHQZQd9+FYpIS+lkvpq6C/R6SbUeRw==",
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz",
+      "integrity": "sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -2994,7 +2999,7 @@
         "node": "^20.17.0 || >=22.9.0"
       },
       "optionalDependencies": {
-        "encoding": "^0.1.13"
+        "iconv-lite": "^0.7.2"
       }
     },
     "node_modules/minipass-flush": {
@@ -3351,12 +3356,13 @@
       "license": "BlueOak-1.0.0"
     },
     "node_modules/pacote": {
-      "version": "21.3.1",
-      "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.3.1.tgz",
-      "integrity": "sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==",
+      "version": "21.4.0",
+      "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.4.0.tgz",
+      "integrity": "sha512-DR7mn7HUOomAX1BORnpYy678qVIidbvOojkBscqy27dRKN+s/hLeQT1MeYYrx1Cxh62jyKjiWiDV7RTTqB+ZEQ==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
+        "@gar/promise-retry": "^1.0.0",
         "@npmcli/git": "^7.0.0",
         "@npmcli/installed-package-contents": "^4.0.0",
         "@npmcli/package-json": "^7.0.0",
@@ -3370,7 +3376,6 @@
         "npm-pick-manifest": "^11.0.1",
         "npm-registry-fetch": "^19.0.0",
         "proc-log": "^6.0.0",
-        "promise-retry": "^2.0.1",
         "sigstore": "^4.0.0",
         "ssri": "^13.0.0",
         "tar": "^7.4.3"
@@ -3546,6 +3551,16 @@
         "node": ">=10"
       }
     },
+    "node_modules/promise-retry/node_modules/retry": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+      "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
     "node_modules/punycode.js": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
@@ -3697,9 +3712,9 @@
       "license": "ISC"
     },
     "node_modules/retry": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+      "version": "0.13.1",
+      "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
+      "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
       "dev": true,
       "license": "MIT",
       "engines": {
@@ -4027,13 +4042,13 @@
       }
     },
     "node_modules/strip-ansi": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
-      "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+      "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "ansi-regex": "^6.0.1"
+        "ansi-regex": "^6.2.2"
       },
       "engines": {
         "node": ">=12"
@@ -4202,15 +4217,15 @@
       }
     },
     "node_modules/test-exclude": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz",
-      "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==",
+      "version": "7.0.2",
+      "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.2.tgz",
+      "integrity": "sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
         "@istanbuljs/schema": "^0.1.2",
         "glob": "^10.4.1",
-        "minimatch": "^9.0.4"
+        "minimatch": "^10.2.2"
       },
       "engines": {
         "node": ">=18"
@@ -4297,6 +4312,22 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
+    "node_modules/test-exclude/node_modules/glob/node_modules/minimatch": {
+      "version": "9.0.9",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+      "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/test-exclude/node_modules/jackspeak": {
       "version": "3.4.3",
       "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
@@ -4320,22 +4351,6 @@
       "dev": true,
       "license": "ISC"
     },
-    "node_modules/test-exclude/node_modules/minimatch": {
-      "version": "9.0.5",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
     "node_modules/test-exclude/node_modules/path-scurry": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
@@ -4514,13 +4529,13 @@
       }
     },
     "node_modules/typedoc/node_modules/minimatch": {
-      "version": "9.0.5",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "version": "9.0.9",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+      "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
-        "brace-expansion": "^2.0.1"
+        "brace-expansion": "^2.0.2"
       },
       "engines": {
         "node": ">=16 || 14 >=14.17"
diff --git a/deps/minimatch/package.json b/deps/minimatch/package.json
index 8c57eb485ac41a..d4d13530281b7e 100644
--- a/deps/minimatch/package.json
+++ b/deps/minimatch/package.json
@@ -2,7 +2,7 @@
   "author": "Isaac Z. Schlueter  (http://blog.izs.me)",
   "name": "minimatch",
   "description": "a glob matcher in javascript",
-  "version": "10.2.2",
+  "version": "10.2.4",
   "repository": {
     "type": "git",
     "url": "git@github.com:isaacs/minimatch"
@@ -47,7 +47,7 @@
     "esbuild": "^0.27.3",
     "mkdirp": "^3.0.1",
     "prettier": "^3.6.2",
-    "tap": "^21.6.1",
+    "tap": "^21.6.2",
     "tshy": "^3.0.2",
     "typedoc": "^0.28.5"
   },

From dbb3551b7b4fc4cdcb1c0963e23ed933893970e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9?= 
Date: Mon, 2 Mar 2026 00:49:18 +0000
Subject: [PATCH 133/267] doc: separate in-types and out-types in SQLite
 conversion docs

PR-URL: https://github.com/nodejs/node/pull/62034
Reviewed-By: Colin Ihrig 
Reviewed-By: Jake Yuesong Li 
---
 doc/api/sqlite.md | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/doc/api/sqlite.md b/doc/api/sqlite.md
index 41db310ebfe77a..b4b83a192daa54 100644
--- a/doc/api/sqlite.md
+++ b/doc/api/sqlite.md
@@ -1175,19 +1175,26 @@ Resets the LRU cache, clearing all stored prepared statements.
 
 ### Type conversion between JavaScript and SQLite
 
-When Node.js writes to or reads from SQLite it is necessary to convert between
+When Node.js writes to or reads from SQLite, it is necessary to convert between
 JavaScript data types and SQLite's [data types][]. Because JavaScript supports
 more data types than SQLite, only a subset of JavaScript types are supported.
 Attempting to write an unsupported data type to SQLite will result in an
 exception.
 
-| SQLite    | JavaScript                 |
-| --------- | -------------------------- |
-| `NULL`    | {null}                     |
-| `INTEGER` | {number} or {bigint}       |
-| `REAL`    | {number}                   |
-| `TEXT`    | {string}                   |
-| `BLOB`    | {TypedArray} or {DataView} |
+| Storage class | JavaScript to SQLite       | SQLite to JavaScript                  |
+| ------------- | -------------------------- | ------------------------------------- |
+| `NULL`        | {null}                     | {null}                                |
+| `INTEGER`     | {number} or {bigint}       | {number} or {bigint} _(configurable)_ |
+| `REAL`        | {number}                   | {number}                              |
+| `TEXT`        | {string}                   | {string}                              |
+| `BLOB`        | {TypedArray} or {DataView} | {Uint8Array}                          |
+
+APIs that read values from SQLite have a configuration option that determines
+whether `INTEGER` values are converted to `number` or `bigint` in JavaScript,
+such as the `readBigInts` option for statements and the `useBigIntArguments`
+option for user-defined functions. If Node.js reads an `INTEGER` value from
+SQLite that is outside the JavaScript [safe integer][] range, and the option to
+read BigInts is not enabled, then an `ERR_OUT_OF_RANGE` error will be thrown.
 
 ## `sqlite.backup(sourceDb, path[, options])`
 
@@ -1551,3 +1558,4 @@ callback function to indicate what type of operation is being authorized.
 [in memory]: https://www.sqlite.org/inmemorydb.html
 [parameters are bound]: https://www.sqlite.org/c3ref/bind_blob.html
 [prepared statement]: https://www.sqlite.org/c3ref/stmt.html
+[safe integer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger

From 2df328d59e76db110d00ff217e0f44eee786d47a Mon Sep 17 00:00:00 2001
From: Weixie Cui 
Date: Mon, 23 Feb 2026 10:56:00 +0800
Subject: [PATCH 134/267] src: fix flags argument offset in JSUdpWrap

Signed-off-by: Weixie Cui 
PR-URL: https://github.com/nodejs/node/pull/61948
Reviewed-By: Anna Henningsen 
Reviewed-By: Colin Ihrig 
Reviewed-By: Luigi Pinca 
---
 src/js_udp_wrap.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/js_udp_wrap.cc b/src/js_udp_wrap.cc
index 51e4f8c45ffd38..6b35871d92ceb1 100644
--- a/src/js_udp_wrap.cc
+++ b/src/js_udp_wrap.cc
@@ -157,7 +157,7 @@ void JSUDPWrap::EmitReceived(const FunctionCallbackInfo& args) {
   int family = args[1].As()->Value() == 4 ? AF_INET : AF_INET6;
   Utf8Value address(env->isolate(), args[2]);
   int port = args[3].As()->Value();
-  int flags = args[3].As()->Value();
+  int flags = args[4].As()->Value();
 
   sockaddr_storage addr;
   CHECK_EQ(sockaddr_for_family(family, *address, port, &addr), 0);

From f8178ac3e603ba3af997d0e08d55dc4870981ae1 Mon Sep 17 00:00:00 2001
From: Richard Clarke 
Date: Mon, 2 Mar 2026 20:49:30 +0800
Subject: [PATCH 135/267] http: validate headers in writeEarlyHints

Add validateHeaderName/validateHeaderValue checks for non-link
headers and checkInvalidHeaderChar for the Link value in HTTP/1.1
writeEarlyHints, closing a CRLF injection gap where header names
and values were concatenated into the raw response without
validation.

Also tighten linkValueRegExp to reject CR/LF inside the <...>
URL portion of Link header values.

PR-URL: https://github.com/nodejs/node/pull/61897
Reviewed-By: Matteo Collina 
Reviewed-By: Tim Perry 
---
 lib/_http_server.js                           | 11 ++++-
 lib/internal/validators.js                    |  2 +-
 .../test-http-early-hints-invalid-argument.js | 41 +++++++++++++++++++
 3 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/lib/_http_server.js b/lib/_http_server.js
index 9c4f31a8541e89..a50ed683170334 100644
--- a/lib/_http_server.js
+++ b/lib/_http_server.js
@@ -53,6 +53,8 @@ const {
   kUniqueHeaders,
   parseUniqueHeadersOption,
   OutgoingMessage,
+  validateHeaderName,
+  validateHeaderValue,
 } = require('_http_outgoing');
 const {
   kOutHeaders,
@@ -330,13 +332,20 @@ ServerResponse.prototype.writeEarlyHints = function writeEarlyHints(hints, cb) {
     return;
   }
 
+  if (checkInvalidHeaderChar(link)) {
+    throw new ERR_INVALID_CHAR('header content', 'Link');
+  }
+
   head += 'Link: ' + link + '\r\n';
 
   const keys = ObjectKeys(hints);
   for (let i = 0; i < keys.length; i++) {
     const key = keys[i];
     if (key !== 'link') {
-      head += key + ': ' + hints[key] + '\r\n';
+      validateHeaderName(key);
+      const value = hints[key];
+      validateHeaderValue(key, value);
+      head += key + ': ' + value + '\r\n';
     }
   }
 
diff --git a/lib/internal/validators.js b/lib/internal/validators.js
index b9845c538bb98f..110b045a063460 100644
--- a/lib/internal/validators.js
+++ b/lib/internal/validators.js
@@ -509,7 +509,7 @@ function validateUnion(value, name, union) {
   (not necessarily a valid URI reference) followed by zero or more
   link-params separated by semicolons.
 */
-const linkValueRegExp = /^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;
+const linkValueRegExp = /^(?:<[^>\r\n]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;
 
 /**
  * @param {any} value
diff --git a/test/parallel/test-http-early-hints-invalid-argument.js b/test/parallel/test-http-early-hints-invalid-argument.js
index f776bcafa40ed3..edf613614bc721 100644
--- a/test/parallel/test-http-early-hints-invalid-argument.js
+++ b/test/parallel/test-http-early-hints-invalid-argument.js
@@ -47,3 +47,44 @@ const testResBody = 'response content\n';
     req.on('information', common.mustNotCall());
   }));
 }
+
+{
+  const server = http.createServer(common.mustCall((req, res) => {
+    debug('Server sending early hints with CRLF injection...');
+
+    assert.throws(() => {
+      res.writeEarlyHints({
+        'link': '; rel=preload; as=style',
+        'X-Custom': 'valid\r\nSet-Cookie: session=evil',
+      });
+    }, (err) => err.code === 'ERR_INVALID_CHAR');
+
+    assert.throws(() => {
+      res.writeEarlyHints({
+        'link': '; rel=preload; as=style',
+        'X-Custom\r\nSet-Cookie: session=evil': 'value',
+      });
+    }, (err) => err.code === 'ERR_INVALID_HTTP_TOKEN');
+
+    assert.throws(() => {
+      res.writeEarlyHints({
+        link: '; rel=preload; as=style',
+      });
+    }, (err) => err.code === 'ERR_INVALID_ARG_VALUE');
+
+    debug('Server sending full response...');
+    res.end(testResBody);
+    server.close();
+  }));
+
+  server.listen(0, common.mustCall(() => {
+    const req = http.request({
+      port: server.address().port, path: '/'
+    });
+
+    req.end();
+    debug('Client sending request...');
+
+    req.on('information', common.mustNotCall());
+  }));
+}

From 309f37ba42786c6ca1462020aee9bd1297da010f Mon Sep 17 00:00:00 2001
From: Rafael Gonzaga 
Date: Mon, 2 Mar 2026 11:51:55 -0300
Subject: [PATCH 136/267] doc: expand SECURITY.md with non-vulnerability
 examples
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/61972
Reviewed-By: Matteo Collina 
Reviewed-By: Juan José Arboleda 
Reviewed-By: Marco Ippolito 
---
 SECURITY.md | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 61 insertions(+), 3 deletions(-)

diff --git a/SECURITY.md b/SECURITY.md
index 3a543216723c66..d44018e915ee80 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -320,9 +320,17 @@ the community they pose.
   * Avoid exposing low-level or dangerous APIs directly to untrusted users.
 
 * Examples of scenarios that are **not** Node.js vulnerabilities:
-  * Allowing untrusted users to register SQLite user-defined functions that can
-    perform arbitrary operations (e.g., closing database connections during query
-    execution, causing crashes or use-after-free conditions).
+  * Allowing untrusted users to register SQLite user-defined functions via
+    `node:sqlite` (`DatabaseSync`) that can perform arbitrary operations
+    (e.g., closing database connections during query execution, causing crashes
+    or use-after-free conditions).
+  * Loading SQLite extensions using the `allowExtension` option in
+    `DatabaseSync` — this option must be explicitly set to `true` by the
+    application, and enabling it is the application operator's responsibility.
+  * Using `node:sqlite` built-in SQL functions or pragmas (e.g.,
+    `ATTACH DATABASE`) to read or write files — `DatabaseSync` operates with
+    the same file-system access as the process itself, and it is the
+    application's responsibility to restrict what SQL is executed.
   * Exposing `child_process.exec()` or similar APIs to untrusted users without
     proper input validation, allowing command injection.
   * Allowing untrusted users to control file paths passed to file system APIs
@@ -362,6 +370,56 @@ the community they pose.
   responsibility to properly handle errors by attaching appropriate
   `'error'` event listeners to EventEmitters that may emit errors.
 
+#### Permission Model Boundaries (`--permission`)
+
+The Node.js [Permission Model](https://nodejs.org/api/permissions.html)
+(`--experimental-permission`) is an opt-in mechanism that limits which
+resources a Node.js process may access. It is designed to reduce the blast
+radius of mistakes in trusted application code, **not** to act as a security
+boundary against intentional misuse or a compromised process.
+
+The following are **not** vulnerabilities in Node.js:
+
+* **Operator-controlled flags**: Behavior unlocked by flags the operator
+  explicitly passes (e.g., `--localstorage-file`) is the operator's
+  responsibility. The permission model does not restrict how Node.js behaves
+  when the operator intentionally configures it.
+
+* **`node:sqlite` and the permission model**: `DatabaseSync` operates with the
+  same file-system privileges as the process. Using SQL pragmas or built-in
+  SQLite mechanisms (e.g., `ATTACH DATABASE`) to access files does not bypass
+  the permission model — the permission model does not intercept SQL-level
+  file operations.
+
+* **Path resolution and symlinks**: `fs.realpathSync()`, `fs.realpath()`, and
+  similar functions resolve a path to its canonical form before the permission
+  check is applied. Accessing a file through a symlink that resolves to an
+  allowed path is the intended behavior, not a bypass. TOCTOU races on
+  symlinks that resolve within the allowed list are similarly not considered
+  permission model bypasses.
+
+* **`worker_threads` with modified `execArgv`**: Workers inherit the permission
+  restrictions of their parent process. Passing an empty or modified `execArgv`
+  to a worker does not grant it additional permissions.
+
+#### V8 Sandbox
+
+The V8 sandbox is an in-process isolation mechanism internal to V8 that is not
+a Node.js security boundary. Node.js does not guarantee or document the V8
+sandbox as a security feature, and it is not enabled in a way that provides
+security guarantees in production Node.js builds. Reports about escaping the V8
+sandbox are not considered Node.js vulnerabilities; they should be reported
+directly to the [V8 project](https://v8.dev/docs/security-bugs).
+
+#### CRLF Injection in `writeEarlyHints()`
+
+`ServerResponse.writeEarlyHints()` accepts a `link` header value that is set
+by the application. Passing arbitrary strings, including CRLF sequences, as
+the `link` value is an application-level misuse of the API, not a Node.js
+vulnerability. Node.js validates the structure of Early Hints per the HTTP spec
+but does not sanitize free-form application data passed to it; that is the
+application's responsibility.
+
 ## Assessing experimental features reports
 
 Experimental features are eligible for security reports just like any other

From 46cfad413853d9c34efaf3c709b2853c036b30d0 Mon Sep 17 00:00:00 2001
From: Joyee Cheung 
Date: Mon, 2 Mar 2026 19:28:25 +0100
Subject: [PATCH 137/267] module: run require.resolve through
 module.registerHooks()

Previously, require.resolve() called Module._resolveFilename() directly,
bypassing any resolve hooks registered via module.registerHooks(). This
patch fixes that.

PR-URL: https://github.com/nodejs/node/pull/62028
Reviewed-By: Geoffrey Booth 
Reviewed-By: Matteo Collina 
Reviewed-By: Marco Ippolito 
---
 lib/internal/modules/cjs/loader.js            | 100 +++++++++++-------
 lib/internal/modules/esm/loader.js            |   7 +-
 lib/internal/modules/esm/translators.js       |  15 ++-
 lib/internal/modules/helpers.js               |  19 +++-
 .../module-hooks/require-resolve-caller.js    |   4 +
 .../require-resolve-paths-caller.js           |  13 +++
 ...e-hooks-resolve-require-resolve-builtin.js |  25 +++++
 ...oks-resolve-require-resolve-consistency.js |  38 +++++++
 ...-resolve-require-resolve-create-require.js |  31 ++++++
 ...oks-resolve-require-resolve-fallthrough.js |  19 ++++
 ...ks-resolve-require-resolve-imported-cjs.js |  29 +++++
 ...olve-require-resolve-loaded-with-source.js |  35 ++++++
 ...ule-hooks-resolve-require-resolve-paths.js |  29 +++++
 ...-hooks-resolve-require-resolve-redirect.js |  29 +++++
 test/parallel/test-repl.js                    |   5 +-
 15 files changed, 348 insertions(+), 50 deletions(-)
 create mode 100644 test/fixtures/module-hooks/require-resolve-caller.js
 create mode 100644 test/fixtures/module-hooks/require-resolve-paths-caller.js
 create mode 100644 test/module-hooks/test-module-hooks-resolve-require-resolve-builtin.js
 create mode 100644 test/module-hooks/test-module-hooks-resolve-require-resolve-consistency.js
 create mode 100644 test/module-hooks/test-module-hooks-resolve-require-resolve-create-require.js
 create mode 100644 test/module-hooks/test-module-hooks-resolve-require-resolve-fallthrough.js
 create mode 100644 test/module-hooks/test-module-hooks-resolve-require-resolve-imported-cjs.js
 create mode 100644 test/module-hooks/test-module-hooks-resolve-require-resolve-loaded-with-source.js
 create mode 100644 test/module-hooks/test-module-hooks-resolve-require-resolve-paths.js
 create mode 100644 test/module-hooks/test-module-hooks-resolve-require-resolve-redirect.js

diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
index 3b48333c2a8cae..493efd5feb57a6 100644
--- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js
@@ -1035,41 +1035,63 @@ function getExportsForCircularRequire(module) {
   return module.exports;
 }
 
+
 /**
- * Resolve a module request for CommonJS, invoking hooks from module.registerHooks()
- * if necessary.
+ * Wraps result of Module._resolveFilename to include additional fields for hooks.
+ * See resolveForCJSWithHooks.
  * @param {string} specifier
  * @param {Module|undefined} parent
  * @param {boolean} isMain
- * @param {boolean} shouldSkipModuleHooks
+ * @param {ResolveFilenameOptions} options
  * @returns {{url?: string, format?: string, parentURL?: string, filename: string}}
  */
-function resolveForCJSWithHooks(specifier, parent, isMain, shouldSkipModuleHooks) {
-  let defaultResolvedURL;
-  let defaultResolvedFilename;
-  let format;
-
-  function defaultResolveImpl(specifier, parent, isMain, options) {
-    // For backwards compatibility, when encountering requests starting with node:,
-    // throw ERR_UNKNOWN_BUILTIN_MODULE on failure or return the normalized ID on success
-    // without going into Module._resolveFilename.
-    let normalized;
-    if (StringPrototypeStartsWith(specifier, 'node:')) {
-      normalized = BuiltinModule.normalizeRequirableId(specifier);
-      if (!normalized) {
-        throw new ERR_UNKNOWN_BUILTIN_MODULE(specifier);
-      }
-      defaultResolvedURL = specifier;
-      format = 'builtin';
-      return normalized;
+function wrapResolveFilename(specifier, parent, isMain, options) {
+  const filename = Module._resolveFilename(specifier, parent, isMain, options).toString();
+  return { __proto__: null, url: undefined, format: undefined, filename };
+}
+
+/**
+ * See resolveForCJSWithHooks.
+ * @param {string} specifier
+ * @param {Module|undefined} parent
+ * @param {boolean} isMain
+ * @param {ResolveFilenameOptions} options
+ * @returns {{url?: string, format?: string, parentURL?: string, filename: string}}
+ */
+function defaultResolveImplForCJSLoading(specifier, parent, isMain, options) {
+  // For backwards compatibility, when encountering requests starting with node:,
+  // throw ERR_UNKNOWN_BUILTIN_MODULE on failure or return the normalized ID on success
+  // without going into Module._resolveFilename.
+  let normalized;
+  if (StringPrototypeStartsWith(specifier, 'node:')) {
+    normalized = BuiltinModule.normalizeRequirableId(specifier);
+    if (!normalized) {
+      throw new ERR_UNKNOWN_BUILTIN_MODULE(specifier);
     }
-    return Module._resolveFilename(specifier, parent, isMain, options).toString();
+    return { __proto__: null, url: specifier, format: 'builtin', filename: normalized };
   }
+  return wrapResolveFilename(specifier, parent, isMain, options);
+}
 
+/**
+ * Resolve a module request for CommonJS, invoking hooks from module.registerHooks()
+ * if necessary.
+ * @param {string} specifier
+ * @param {Module|undefined} parent
+ * @param {boolean} isMain
+ * @param {object} internalResolveOptions
+ * @param {boolean} internalResolveOptions.shouldSkipModuleHooks Whether to skip module hooks.
+ * @param {ResolveFilenameOptions} internalResolveOptions.requireResolveOptions Options from require.resolve().
+ *   Only used when it comes from require.resolve().
+ * @returns {{url?: string, format?: string, parentURL?: string, filename: string}}
+ */
+function resolveForCJSWithHooks(specifier, parent, isMain, internalResolveOptions) {
+  const { requireResolveOptions, shouldSkipModuleHooks } = internalResolveOptions;
+  const defaultResolveImpl = requireResolveOptions ?
+    wrapResolveFilename : defaultResolveImplForCJSLoading;
   // Fast path: no hooks, just return simple results.
   if (!resolveHooks.length || shouldSkipModuleHooks) {
-    const filename = defaultResolveImpl(specifier, parent, isMain);
-    return { __proto__: null, url: defaultResolvedURL, filename, format };
+    return defaultResolveImpl(specifier, parent, isMain, requireResolveOptions);
   }
 
   // Slow path: has hooks, do the URL conversions and invoke hooks with contexts.
@@ -1098,27 +1120,25 @@ function resolveForCJSWithHooks(specifier, parent, isMain, shouldSkipModuleHooks
     } else {
       conditionSet = getCjsConditions();
     }
-    defaultResolvedFilename = defaultResolveImpl(specifier, parent, isMain, {
+
+    const result = defaultResolveImpl(specifier, parent, isMain, {
       __proto__: null,
+      paths: requireResolveOptions?.paths,
       conditions: conditionSet,
     });
+    // If the default resolver does not return a URL, convert it for the public API.
+    result.url ??= convertCJSFilenameToURL(result.filename);
 
-    defaultResolvedURL = convertCJSFilenameToURL(defaultResolvedFilename);
-    return { __proto__: null, url: defaultResolvedURL };
+    // Remove filename because it's not part of the public API.
+    // TODO(joyeecheung): maybe expose it in the public API to avoid re-conversion for users too.
+    return { __proto__: null, url: result.url, format: result.format };
   }
 
   const resolveResult = resolveWithHooks(specifier, parentURL, /* importAttributes */ undefined,
                                          getCjsConditionsArray(), defaultResolve);
-  const { url } = resolveResult;
-  format = resolveResult.format;
-
-  let filename;
-  if (url === defaultResolvedURL) {  // Not overridden, skip the re-conversion.
-    filename = defaultResolvedFilename;
-  } else {
-    filename = convertURLToCJSFilename(url);
-  }
-
+  const { url, format } = resolveResult;
+  // Convert the URL from the hook chain back to a filename for internal use.
+  const filename = convertURLToCJSFilename(url);
   const result = { __proto__: null, url, format, filename, parentURL };
   debug('resolveForCJSWithHooks', specifier, parent?.id, isMain, shouldSkipModuleHooks, '->', result);
   return result;
@@ -1213,10 +1233,10 @@ function loadBuiltinWithHooks(id, url, format) {
  * @param {string} request Specifier of module to load via `require`
  * @param {Module} parent Absolute path of the module importing the child
  * @param {boolean} isMain Whether the module is the main entry point
- * @param {object|undefined} options Additional options for loading the module
+ * @param {object|undefined} internalResolveOptions Additional options for loading the module
  * @returns {object}
  */
-Module._load = function(request, parent, isMain, options = kEmptyObject) {
+Module._load = function(request, parent, isMain, internalResolveOptions = kEmptyObject) {
   let relResolveCacheIdentifier;
   if (parent) {
     debug('Module._load REQUEST %s parent: %s', request, parent.id);
@@ -1239,7 +1259,7 @@ Module._load = function(request, parent, isMain, options = kEmptyObject) {
     }
   }
 
-  const resolveResult = resolveForCJSWithHooks(request, parent, isMain, options.shouldSkipModuleHooks);
+  const resolveResult = resolveForCJSWithHooks(request, parent, isMain, internalResolveOptions);
   let { format } = resolveResult;
   const { url, filename } = resolveResult;
 
diff --git a/lib/internal/modules/esm/loader.js b/lib/internal/modules/esm/loader.js
index 2bf95527daecde..9d08c0819b1cce 100644
--- a/lib/internal/modules/esm/loader.js
+++ b/lib/internal/modules/esm/loader.js
@@ -722,13 +722,16 @@ class ModuleLoader {
    * `module.registerHooks()` hooks.
    * @param {string} [parentURL] See {@link resolve}.
    * @param {ModuleRequest} request See {@link resolve}.
+   * @param {boolean} [shouldSkipSyncHooks] Whether to skip the synchronous hooks registered by module.registerHooks().
+   *   This is used to maintain compatibility for the re-invented require.resolve (in imported CJS customized
+   *   by module.register()`) which invokes the CJS resolution separately from the hook chain.
    * @returns {{ format: string, url: string }}
    */
-  resolveSync(parentURL, request) {
+  resolveSync(parentURL, request, shouldSkipSyncHooks = false) {
     const specifier = `${request.specifier}`;
     const importAttributes = request.attributes ?? kEmptyObject;
 
-    if (syncResolveHooks.length) {
+    if (!shouldSkipSyncHooks && syncResolveHooks.length) {
       // Has module.registerHooks() hooks, chain the asynchronous hooks in the default step.
       return resolveWithSyncHooks(specifier, parentURL, importAttributes, this.#defaultConditions,
                                   this.#resolveAndMaybeBlockOnLoaderThread.bind(this));
diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js
index 065532eaa4d941..22e10587dcea86 100644
--- a/lib/internal/modules/esm/translators.js
+++ b/lib/internal/modules/esm/translators.js
@@ -93,6 +93,8 @@ translators.set('module', function moduleStrategy(url, translateContext, parentU
 
 const { requestTypes: { kRequireInImportedCJS } } = require('internal/modules/esm/utils');
 const kShouldSkipModuleHooks = { __proto__: null, shouldSkipModuleHooks: true };
+const kShouldNotSkipModuleHooks = { __proto__: null, shouldSkipModuleHooks: false };
+
 /**
  * Loads a CommonJS module via the ESM Loader sync CommonJS translator.
  * This translator creates its own version of the `require` function passed into CommonJS modules.
@@ -163,14 +165,17 @@ function loadCJSModule(module, source, url, filename, isMain) {
   };
   setOwnProperty(requireFn, 'resolve', function resolve(specifier) {
     if (!StringPrototypeStartsWith(specifier, 'node:')) {
-      const path = CJSModule._resolveFilename(specifier, module);
-      if (specifier !== path) {
-        specifier = `${pathToFileURL(path)}`;
+      const {
+        filename, url: resolvedURL,
+      } = resolveForCJSWithHooks(specifier, module, false, kShouldNotSkipModuleHooks);
+      if (specifier !== filename) {
+        specifier = resolvedURL ?? `${pathToFileURL(filename)}`;
       }
     }
 
     const request = { specifier, __proto__: null, attributes: kEmptyObject };
-    const { url: resolvedURL } = cascadedLoader.resolveSync(url, request);
+    // Skip sync hooks in resolveSync since resolveForCJSWithHooks already ran them above.
+    const { url: resolvedURL } = cascadedLoader.resolveSync(url, request, /* shouldSkipSyncHooks */ true);
     return urlToFilename(resolvedURL);
   });
   setOwnProperty(requireFn, 'main', process.mainModule);
@@ -400,7 +405,7 @@ function cjsPreparseModuleExports(filename, source, format) {
       let resolved;
       let format;
       try {
-        ({ format, filename: resolved } = resolveForCJSWithHooks(reexport, module, false));
+        ({ format, filename: resolved } = resolveForCJSWithHooks(reexport, module, false, kShouldNotSkipModuleHooks));
       } catch (e) {
         debug(`Failed to resolve '${reexport}', skipping`, e);
         continue;
diff --git a/lib/internal/modules/helpers.js b/lib/internal/modules/helpers.js
index b04ac126cd35b9..87af4da0294469 100644
--- a/lib/internal/modules/helpers.js
+++ b/lib/internal/modules/helpers.js
@@ -40,6 +40,7 @@ const {
   flushCompileCache,
 } = internalBinding('modules');
 
+const lazyCJSLoader = getLazy(() => require('internal/modules/cjs/loader'));
 let debug = require('internal/util/debuglog').debuglog('module', (fn) => {
   debug = fn;
 });
@@ -160,7 +161,23 @@ function makeRequireFunction(mod) {
    */
   function resolve(request, options) {
     validateString(request, 'request');
-    return Module._resolveFilename(request, mod, false, options);
+    const { resolveForCJSWithHooks } = lazyCJSLoader();
+    // require.resolve() has different behaviors from the internal resolution used by
+    // Module._load:
+    // 1. When the request resolves to a non-existent built-in, it throws MODULE_NOT_FOUND
+    //   instead of UNKNOWN_BUILTIN_MODULE. This is handled by resolveForCJSWithHooks.
+    // 2. If the request is a prefixed built-in, the returned value is also prefixed. This
+    //   is handled below.
+    const { filename, url } = resolveForCJSWithHooks(
+      request, mod, /* isMain */ false, {
+        __proto__: null,
+        shouldSkipModuleHooks: false,
+        requireResolveOptions: options ?? {},
+      });
+    if (url === request && StringPrototypeStartsWith(request, 'node:')) {
+      return url;
+    }
+    return filename;
   }
 
   require.resolve = resolve;
diff --git a/test/fixtures/module-hooks/require-resolve-caller.js b/test/fixtures/module-hooks/require-resolve-caller.js
new file mode 100644
index 00000000000000..94736e42d748c4
--- /dev/null
+++ b/test/fixtures/module-hooks/require-resolve-caller.js
@@ -0,0 +1,4 @@
+// Fixture CJS file that calls require.resolve and exports the result.
+'use strict';
+const resolved = require.resolve('test-require-resolve-hook-target');
+module.exports = { resolved };
diff --git a/test/fixtures/module-hooks/require-resolve-paths-caller.js b/test/fixtures/module-hooks/require-resolve-paths-caller.js
new file mode 100644
index 00000000000000..f18b1f37773507
--- /dev/null
+++ b/test/fixtures/module-hooks/require-resolve-paths-caller.js
@@ -0,0 +1,13 @@
+// Fixture CJS file that calls require.resolve with the paths option.
+'use strict';
+const path = require('path');
+const fixturesDir = path.resolve(__dirname, '..', '..');
+const nodeModules = path.join(fixturesDir, 'node_modules');
+
+// Use the paths option to resolve 'bar' from the fixtures node_modules.
+const resolved = require.resolve('bar', { paths: [fixturesDir] });
+const expected = path.join(nodeModules, 'bar.js');
+if (resolved !== expected) {
+  throw new Error(`Expected ${expected}, got ${resolved}`);
+}
+module.exports = { resolved };
diff --git a/test/module-hooks/test-module-hooks-resolve-require-resolve-builtin.js b/test/module-hooks/test-module-hooks-resolve-require-resolve-builtin.js
new file mode 100644
index 00000000000000..1adf73c48a575e
--- /dev/null
+++ b/test/module-hooks/test-module-hooks-resolve-require-resolve-builtin.js
@@ -0,0 +1,25 @@
+'use strict';
+
+// This tests that require.resolve() works with builtin redirection
+// via resolve hooks registered with module.registerHooks().
+
+require('../common');
+const assert = require('assert');
+const { registerHooks } = require('module');
+
+const hook = registerHooks({
+  resolve(specifier, context, nextResolve) {
+    if (specifier === 'assert') {
+      return {
+        url: 'node:zlib',
+        shortCircuit: true,
+      };
+    }
+    return nextResolve(specifier, context);
+  },
+});
+
+const resolved = require.resolve('assert');
+assert.strictEqual(resolved, 'zlib');
+
+hook.deregister();
diff --git a/test/module-hooks/test-module-hooks-resolve-require-resolve-consistency.js b/test/module-hooks/test-module-hooks-resolve-require-resolve-consistency.js
new file mode 100644
index 00000000000000..7a282248a08d83
--- /dev/null
+++ b/test/module-hooks/test-module-hooks-resolve-require-resolve-consistency.js
@@ -0,0 +1,38 @@
+'use strict';
+
+// This tests that require.resolve() and require() both go through the same
+// resolve hooks registered via module.registerHooks().
+
+require('../common');
+const assert = require('assert');
+const { registerHooks } = require('module');
+const fixtures = require('../common/fixtures');
+const { pathToFileURL } = require('url');
+
+const redirectedPath = fixtures.path('module-hooks', 'redirected-assert.js');
+
+const resolvedSpecifiers = [];
+const hook = registerHooks({
+  resolve(specifier, context, nextResolve) {
+    if (specifier === 'test-consistency-target') {
+      resolvedSpecifiers.push(specifier);
+      return {
+        url: pathToFileURL(redirectedPath).href,
+        shortCircuit: true,
+      };
+    }
+    return nextResolve(specifier, context);
+  },
+});
+
+const resolveResult = require.resolve('test-consistency-target');
+const requireResult = require('test-consistency-target');
+
+assert.strictEqual(resolveResult, redirectedPath);
+assert.strictEqual(requireResult.exports_for_test, 'redirected assert');
+assert.deepStrictEqual(resolvedSpecifiers, [
+  'test-consistency-target',
+  'test-consistency-target',
+]);
+
+hook.deregister();
diff --git a/test/module-hooks/test-module-hooks-resolve-require-resolve-create-require.js b/test/module-hooks/test-module-hooks-resolve-require-resolve-create-require.js
new file mode 100644
index 00000000000000..27b103c9ddb57c
--- /dev/null
+++ b/test/module-hooks/test-module-hooks-resolve-require-resolve-create-require.js
@@ -0,0 +1,31 @@
+'use strict';
+
+// This tests that require.resolve() from a require function returned by
+// module.createRequire() goes through resolve hooks registered via
+// module.registerHooks().
+
+require('../common');
+const assert = require('assert');
+const { registerHooks, createRequire } = require('module');
+const fixtures = require('../common/fixtures');
+const { pathToFileURL } = require('url');
+
+const redirectedPath = fixtures.path('module-hooks', 'redirected-assert.js');
+
+const hook = registerHooks({
+  resolve(specifier, context, nextResolve) {
+    if (specifier === 'test-create-require-resolve-target') {
+      return {
+        url: pathToFileURL(redirectedPath).href,
+        shortCircuit: true,
+      };
+    }
+    return nextResolve(specifier, context);
+  },
+});
+
+const customRequire = createRequire(__filename);
+const resolved = customRequire.resolve('test-create-require-resolve-target');
+assert.strictEqual(resolved, redirectedPath);
+
+hook.deregister();
diff --git a/test/module-hooks/test-module-hooks-resolve-require-resolve-fallthrough.js b/test/module-hooks/test-module-hooks-resolve-require-resolve-fallthrough.js
new file mode 100644
index 00000000000000..78cd09fb3890fc
--- /dev/null
+++ b/test/module-hooks/test-module-hooks-resolve-require-resolve-fallthrough.js
@@ -0,0 +1,19 @@
+'use strict';
+
+// This tests that require.resolve() falls through to default resolution
+// when resolve hooks registered via module.registerHooks() don't override.
+
+require('../common');
+const assert = require('assert');
+const { registerHooks } = require('module');
+
+const hook = registerHooks({
+  resolve(specifier, context, nextResolve) {
+    return nextResolve(specifier, context);
+  },
+});
+
+const resolved = require.resolve('assert');
+assert.strictEqual(resolved, 'assert');
+
+hook.deregister();
diff --git a/test/module-hooks/test-module-hooks-resolve-require-resolve-imported-cjs.js b/test/module-hooks/test-module-hooks-resolve-require-resolve-imported-cjs.js
new file mode 100644
index 00000000000000..d6fff2f8a7b956
--- /dev/null
+++ b/test/module-hooks/test-module-hooks-resolve-require-resolve-imported-cjs.js
@@ -0,0 +1,29 @@
+'use strict';
+
+// This tests that require.resolve() in an imported CJS file goes through
+// resolve hooks registered via module.registerHooks().
+
+const common = require('../common');
+const assert = require('assert');
+const { registerHooks } = require('module');
+const fixtures = require('../common/fixtures');
+const { pathToFileURL } = require('url');
+
+const redirectedPath = fixtures.path('module-hooks', 'redirected-assert.js');
+
+const hook = registerHooks({
+  resolve: common.mustCall((specifier, context, nextResolve) => {
+    if (specifier === 'test-require-resolve-hook-target') {
+      return {
+        url: pathToFileURL(redirectedPath).href,
+        shortCircuit: true,
+      };
+    }
+    return nextResolve(specifier, context);
+  }, 2),
+});
+
+import('../fixtures/module-hooks/require-resolve-caller.js').then(common.mustCall((ns) => {
+  assert.strictEqual(ns.default.resolved, redirectedPath);
+  hook.deregister();
+}));
diff --git a/test/module-hooks/test-module-hooks-resolve-require-resolve-loaded-with-source.js b/test/module-hooks/test-module-hooks-resolve-require-resolve-loaded-with-source.js
new file mode 100644
index 00000000000000..de66beda5b2e6c
--- /dev/null
+++ b/test/module-hooks/test-module-hooks-resolve-require-resolve-loaded-with-source.js
@@ -0,0 +1,35 @@
+'use strict';
+
+// This tests that require.resolve() in a CJS file loaded via the re-invented
+// require (triggered when module.register() installs an async loader that
+// provides source for a CJS file) still goes through resolve hooks registered
+// via module.registerHooks().
+
+const common = require('../common');
+const assert = require('assert');
+const { register, registerHooks } = require('module');
+const fixtures = require('../common/fixtures');
+const { pathToFileURL } = require('url');
+
+const redirectedPath = fixtures.path('module-hooks', 'redirected-assert.js');
+
+// Register an async loader that provides source for CJS files, which triggers
+// the re-invented require path.
+register(fixtures.fileURL('module-hooks', 'logger-async-hooks.mjs'));
+
+const hook = registerHooks({
+  resolve: common.mustCall((specifier, context, nextResolve) => {
+    if (specifier === 'test-require-resolve-hook-target') {
+      return {
+        url: pathToFileURL(redirectedPath).href,
+        shortCircuit: true,
+      };
+    }
+    return nextResolve(specifier, context);
+  }, 2),
+});
+
+import('../fixtures/module-hooks/require-resolve-caller.js').then(common.mustCall((ns) => {
+  assert.strictEqual(ns.default.resolved, redirectedPath);
+  hook.deregister();
+}));
diff --git a/test/module-hooks/test-module-hooks-resolve-require-resolve-paths.js b/test/module-hooks/test-module-hooks-resolve-require-resolve-paths.js
new file mode 100644
index 00000000000000..03eafadeb100fb
--- /dev/null
+++ b/test/module-hooks/test-module-hooks-resolve-require-resolve-paths.js
@@ -0,0 +1,29 @@
+'use strict';
+
+// This tests that require.resolve() with the paths option work transparently
+// when resolve hooks are registered via module.registerHooks().
+
+require('../common');
+const assert = require('assert');
+const path = require('path');
+const { registerHooks } = require('module');
+const fixtures = require('../common/fixtures');
+
+const nodeModules = path.join(fixtures.path(), 'node_modules');
+const resolveCallCount = [];
+
+const hook = registerHooks({
+  resolve(specifier, context, nextResolve) {
+    if (specifier === 'bar') {
+      resolveCallCount.push(specifier);
+    }
+    return nextResolve(specifier, context);
+  },
+});
+
+// require.resolve with paths option should go through hooks and resolve correctly.
+const resolved = require.resolve('bar', { paths: [fixtures.path()] });
+assert.strictEqual(resolved, path.join(nodeModules, 'bar.js'));
+assert.deepStrictEqual(resolveCallCount, ['bar']);
+
+hook.deregister();
diff --git a/test/module-hooks/test-module-hooks-resolve-require-resolve-redirect.js b/test/module-hooks/test-module-hooks-resolve-require-resolve-redirect.js
new file mode 100644
index 00000000000000..bbf058bae3c41c
--- /dev/null
+++ b/test/module-hooks/test-module-hooks-resolve-require-resolve-redirect.js
@@ -0,0 +1,29 @@
+'use strict';
+
+// This tests that require.resolve() invokes resolve hooks registered
+// via module.registerHooks() and can redirect to a different file.
+
+require('../common');
+const assert = require('assert');
+const { registerHooks } = require('module');
+const fixtures = require('../common/fixtures');
+const { pathToFileURL } = require('url');
+
+const redirectedPath = fixtures.path('module-hooks', 'redirected-assert.js');
+
+const hook = registerHooks({
+  resolve(specifier, context, nextResolve) {
+    if (specifier === 'test-resolve-target') {
+      return {
+        url: pathToFileURL(redirectedPath).href,
+        shortCircuit: true,
+      };
+    }
+    return nextResolve(specifier, context);
+  },
+});
+
+const resolved = require.resolve('test-resolve-target');
+assert.strictEqual(resolved, redirectedPath);
+
+hook.deregister();
diff --git a/test/parallel/test-repl.js b/test/parallel/test-repl.js
index a8f483e90135cb..714064d552ab4b 100644
--- a/test/parallel/test-repl.js
+++ b/test/parallel/test-repl.js
@@ -608,10 +608,10 @@ const errorTests = [
   // access to internal modules without the --expose-internals flag.
   {
     // Shrink the stack trace to avoid having to update this test whenever the
-    // implementation of require() changes. It's set to 4 because somehow setting it
+    // implementation of require() changes. It's set to 5 because somehow setting it
     // to a lower value breaks the error formatting and the message becomes
     // "Uncaught [Error...", which is probably a bug(?).
-    send: 'Error.stackTraceLimit = 4; require("internal/repl")',
+    send: 'Error.stackTraceLimit = 5; require("internal/repl")',
     expect: [
       /^Uncaught Error: Cannot find module 'internal\/repl'/,
       /^Require stack:/,
@@ -619,6 +619,7 @@ const errorTests = [
       /^ {4}at .*/, // Some stack frame that we have to capture otherwise error message is buggy.
       /^ {4}at .*/, // Some stack frame that we have to capture otherwise error message is buggy.
       /^ {4}at .*/, // Some stack frame that we have to capture otherwise error message is buggy.
+      /^ {4}at .*/, // Some stack frame that we have to capture otherwise error message is buggy.
       "  code: 'MODULE_NOT_FOUND',",
       "  requireStack: [ '' ]",
       '}',

From 0a4ad85ab0445b4793b80a3c7ae38cbf531ff387 Mon Sep 17 00:00:00 2001
From: Matteo Collina 
Date: Mon, 2 Mar 2026 20:10:56 +0100
Subject: [PATCH 138/267] http: validate ClientRequest path on set

The `path` property on `ClientRequest` was only validated at
construction time. Add a getter/setter so that the same
`INVALID_PATH_REGEX` check runs whenever `req.path` is reassigned,
preventing invalid characters from reaching `_implicitHeader()`.

PR-URL: https://github.com/nodejs/node/pull/62030
Reviewed-By: Yagiz Nizipli 
Reviewed-By: Marco Ippolito 
Reviewed-By: Tim Perry 
---
 lib/_http_client.js                           | 20 +++++-
 test/parallel/test-http-client-path-toctou.js | 68 +++++++++++++++++++
 2 files changed, 87 insertions(+), 1 deletion(-)
 create mode 100644 test/parallel/test-http-client-path-toctou.js

diff --git a/lib/_http_client.js b/lib/_http_client.js
index 1358a441c15f90..c14e899dabbf04 100644
--- a/lib/_http_client.js
+++ b/lib/_http_client.js
@@ -27,6 +27,7 @@ const {
   Error,
   NumberIsFinite,
   ObjectAssign,
+  ObjectDefineProperty,
   ObjectKeys,
   ObjectSetPrototypeOf,
   ReflectApply,
@@ -116,6 +117,7 @@ let debug = require('internal/util/debuglog').debuglog('http', (fn) => {
 
 const INVALID_PATH_REGEX = /[^\u0021-\u00ff]/;
 const kError = Symbol('kError');
+const kPath = Symbol('kPath');
 
 const kLenientAll = HTTPParser.kLenientAll | 0;
 const kLenientNone = HTTPParser.kLenientNone | 0;
@@ -303,7 +305,7 @@ function ClientRequest(input, options, cb) {
 
   this.joinDuplicateHeaders = options.joinDuplicateHeaders;
 
-  this.path = options.path || '/';
+  this[kPath] = options.path || '/';
   if (cb) {
     this.once('response', cb);
   }
@@ -446,6 +448,22 @@ function ClientRequest(input, options, cb) {
 ObjectSetPrototypeOf(ClientRequest.prototype, OutgoingMessage.prototype);
 ObjectSetPrototypeOf(ClientRequest, OutgoingMessage);
 
+ObjectDefineProperty(ClientRequest.prototype, 'path', {
+  __proto__: null,
+  get() {
+    return this[kPath];
+  },
+  set(value) {
+    const path = String(value);
+    if (INVALID_PATH_REGEX.test(path)) {
+      throw new ERR_UNESCAPED_CHARACTERS('Request path');
+    }
+    this[kPath] = path;
+  },
+  configurable: true,
+  enumerable: true,
+});
+
 ClientRequest.prototype._finish = function _finish() {
   OutgoingMessage.prototype._finish.call(this);
   if (hasObserver('http')) {
diff --git a/test/parallel/test-http-client-path-toctou.js b/test/parallel/test-http-client-path-toctou.js
new file mode 100644
index 00000000000000..2975ba363d2614
--- /dev/null
+++ b/test/parallel/test-http-client-path-toctou.js
@@ -0,0 +1,68 @@
+'use strict';
+require('../common');
+const assert = require('assert');
+const http = require('http');
+
+// Test that mutating req.path after construction to include
+// invalid characters (e.g. CRLF) throws ERR_UNESCAPED_CHARACTERS.
+// Regression test for a TOCTOU vulnerability where path was only
+// validated at construction time but could be mutated before
+// _implicitHeader() flushed it to the socket.
+
+// Use a createConnection that returns nothing to avoid actual connection.
+const req = new http.ClientRequest({
+  host: '127.0.0.1',
+  port: 1,
+  path: '/valid',
+  method: 'GET',
+  createConnection: () => {},
+});
+
+// Attempting to set path with CRLF must throw
+assert.throws(
+  () => { req.path = '/evil\r\nX-Injected: true\r\n\r\n'; },
+  {
+    code: 'ERR_UNESCAPED_CHARACTERS',
+    name: 'TypeError',
+    message: 'Request path contains unescaped characters',
+  }
+);
+
+// Path must be unchanged after failed mutation
+assert.strictEqual(req.path, '/valid');
+
+// Attempting to set path with lone CR must throw
+assert.throws(
+  () => { req.path = '/evil\rpath'; },
+  {
+    code: 'ERR_UNESCAPED_CHARACTERS',
+    name: 'TypeError',
+  }
+);
+
+// Attempting to set path with lone LF must throw
+assert.throws(
+  () => { req.path = '/evil\npath'; },
+  {
+    code: 'ERR_UNESCAPED_CHARACTERS',
+    name: 'TypeError',
+  }
+);
+
+// Attempting to set path with null byte must throw
+assert.throws(
+  () => { req.path = '/evil\0path'; },
+  {
+    code: 'ERR_UNESCAPED_CHARACTERS',
+    name: 'TypeError',
+  }
+);
+
+// Valid path mutation should succeed
+req.path = '/also-valid';
+assert.strictEqual(req.path, '/also-valid');
+
+req.path = '/path?query=1&other=2';
+assert.strictEqual(req.path, '/path?query=1&other=2');
+
+req.destroy();

From 6f93c4b2876c4810151f548077e71b20c33acc68 Mon Sep 17 00:00:00 2001
From: Antoine du Hamel 
Date: Mon, 2 Mar 2026 20:29:52 +0100
Subject: [PATCH 139/267] tools: fix parsing of commit trailers in
 `lint-release-proposal` GHA

PR-URL: https://github.com/nodejs/node/pull/62077
Reviewed-By: Richard Lau 
Reviewed-By: Stewart X Addison 
---
 .github/workflows/lint-release-proposal.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/lint-release-proposal.yml b/.github/workflows/lint-release-proposal.yml
index 4ebeff30019b34..73617cc43cd012 100644
--- a/.github/workflows/lint-release-proposal.yml
+++ b/.github/workflows/lint-release-proposal.yml
@@ -88,7 +88,7 @@ jobs:
           gh api \
             -H "Accept: application/vnd.github+json" \
             -H "X-GitHub-Api-Version: 2022-11-28" \
-            --jq '.commits.[] | { smallSha: .sha[0:10] } + (.commit.message|capture("^(?.+)\n\n(.*\n)*PR-URL: (?<prURL>.+)\n"))' \
+            --jq '.commits.[] | { smallSha: .sha[0:10] } + (.commit.message|capture("^(?<title>.+)\n\n(.*\n)*PR-URL: (?<prURL>.+)(\n|$)"))' \
             "/repos/${GITHUB_REPOSITORY}/compare/v${MAJOR}.x...$GITHUB_SHA" --paginate \
           | node tools/actions/lint-release-proposal-commit-list.mjs "$CHANGELOG_PATH" "$GITHUB_SHA" \
           | while IFS= read -r PR_URL; do

From 79fb8cbcf561c80b84a855c6a1628ffb71803ecf Mon Sep 17 00:00:00 2001
From: Nikita Skovoroda <chalkerx@gmail.com>
Date: Tue, 3 Mar 2026 02:03:43 +0300
Subject: [PATCH 140/267] src: use validate_ascii_with_errors instead of
 validate_ascii
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It has better performance

PR-URL: https://github.com/nodejs/node/pull/61122
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Daniel Lemire <daniel@lemire.me>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
---
 src/node_buffer.cc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/node_buffer.cc b/src/node_buffer.cc
index d4a63cf610ca7f..e40a21288ee79d 100644
--- a/src/node_buffer.cc
+++ b/src/node_buffer.cc
@@ -1252,7 +1252,8 @@ static void IsAscii(const FunctionCallbackInfo<Value>& args) {
         env, "Cannot validate on a detached buffer");
   }
 
-  args.GetReturnValue().Set(simdutf::validate_ascii(abv.data(), abv.length()));
+  args.GetReturnValue().Set(
+      !simdutf::validate_ascii_with_errors(abv.data(), abv.length()).error);
 }
 
 void SetBufferPrototype(const FunctionCallbackInfo<Value>& args) {

From ad9704512554fe7ab9e0602f9850f200cfeced19 Mon Sep 17 00:00:00 2001
From: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>
Date: Tue, 3 Mar 2026 00:03:53 +0100
Subject: [PATCH 141/267] doc: include url.resolve() in DEP0169 application
 deprecation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Mark url.resolve() as deprecated
Update also DEP0116 with cross-reference to DEP0169

PR-URL: https://github.com/nodejs/node/pull/62002
Fixes: https://github.com/nodejs/node/issues/61816
Refs: https://github.com/nodejs/node/pull/61780
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
---
 doc/api/deprecations.md |  9 +++++++--
 doc/api/url.md          | 10 +++++++++-
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md
index 85b6b6eb5a38e9..71004f6170a933 100644
--- a/doc/api/deprecations.md
+++ b/doc/api/deprecations.md
@@ -2642,11 +2642,15 @@ future release.
 
 <!-- YAML
 changes:
+  - version:
+      - v24.0.0
+    pr-url: https://github.com/nodejs/node/pull/55017
+    description: DEP0169 covers also `url.format()` and `url.resolve()`.
   - version:
       - v19.0.0
       - v18.13.0
     pr-url: https://github.com/nodejs/node/pull/44919
-    description: \`url.parse()` is deprecated again in DEP0169.
+    description: DEP0169 deprecates `url.parse()` again.
   - version:
       - v15.13.0
       - v14.17.0
@@ -3729,7 +3733,7 @@ Type: Application (non-`node_modules` code only)
 have security implications. Use the [WHATWG URL API][] instead. CVEs are not
 issued for `url.parse()` vulnerabilities.
 
-Passing a string argument to [`url.format()`][] invokes `url.parse()`
+Calling [`url.format(urlString)`][] or [`url.resolve()`][] invokes `url.parse()`
 internally, and is therefore also covered by this deprecation.
 
 ### DEP0170: Invalid port when using `url.parse()`
@@ -4503,6 +4507,7 @@ const server = http2.createSecureServer({
 [`tls.createSecureContext()`]: tls.md#tlscreatesecurecontextoptions
 [`tls.createServer()`]: tls.md#tlscreateserveroptions-secureconnectionlistener
 [`url.format()`]: url.md#urlformaturlobject
+[`url.format(urlString)`]: url.md#urlformaturlstring
 [`url.parse()`]: url.md#urlparseurlstring-parsequerystring-slashesdenotehost
 [`url.resolve()`]: url.md#urlresolvefrom-to
 [`util._extend()`]: util.md#util_extendtarget-source
diff --git a/doc/api/url.md b/doc/api/url.md
index 662db7dfa30cd8..3dc955cf997c21 100644
--- a/doc/api/url.md
+++ b/doc/api/url.md
@@ -1833,7 +1833,7 @@ changes:
 
 `url.format(urlString)` is shorthand for `url.format(url.parse(urlString))`.
 
-Because it invokes the deprecated [`url.parse()`][], passing a string argument
+Because it invokes the deprecated [`url.parse()`][] internally, passing a string argument
 to `url.format()` is itself deprecated.
 
 Canonicalizing a URL string can be performed using the WHATWG URL API, by
@@ -1950,6 +1950,10 @@ npx codemod@latest @nodejs/node-url-to-whatwg-url
 <!-- YAML
 added: v0.1.25
 changes:
+  - version:
+      - v24.0.0
+    pr-url: https://github.com/nodejs/node/pull/55017
+    description: Deprecated again through DEP0169.
   - version:
       - v15.13.0
       - v14.17.0
@@ -1973,6 +1977,8 @@ changes:
                  contains a hostname.
 -->
 
+> Stability: 0 - Deprecated: Use the WHATWG URL API instead.
+
 * `from` {string} The base URL to use if `to` is a relative URL.
 * `to` {string} The target URL to resolve.
 
@@ -1986,6 +1992,8 @@ url.resolve('http://example.com/', '/one');    // 'http://example.com/one'
 url.resolve('http://example.com/one', '/two'); // 'http://example.com/two'
 ```
 
+Because it invokes the deprecated [`url.parse()`][] internally, `url.resolve()` is itself deprecated.
+
 To achieve the same result using the WHATWG URL API:
 
 ```js

From d886f27485653a9a63173594555e46e4a8b322a7 Mon Sep 17 00:00:00 2001
From: Antoine du Hamel <duhamelantoine1995@gmail.com>
Date: Tue, 3 Mar 2026 00:04:06 +0100
Subject: [PATCH 142/267] test: fix skipping behavior for
 `test-runner-run-files-undefined`

PR-URL: https://github.com/nodejs/node/pull/62026
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
---
 .../test-runner-run-files-undefined.mjs       | 80 ++++++-------------
 1 file changed, 25 insertions(+), 55 deletions(-)

diff --git a/test/parallel/test-runner-run-files-undefined.mjs b/test/parallel/test-runner-run-files-undefined.mjs
index 9d08b10a4550cd..a0981b307d1999 100644
--- a/test/parallel/test-runner-run-files-undefined.mjs
+++ b/test/parallel/test-runner-run-files-undefined.mjs
@@ -1,61 +1,31 @@
-import * as common from '../common/index.mjs';
+import '../common/index.mjs';
 import tmpdir from '../common/tmpdir.js';
-import { describe, it, run, beforeEach } from 'node:test';
-import { dot, spec, tap } from 'node:test/reporters';
-import { fork } from 'node:child_process';
-import assert from 'node:assert';
-
-if (common.hasCrypto) {
-  console.log('1..0 # Skipped: no crypto');
-  process.exit(0);
-}
-
-if (process.env.CHILD === 'true') {
-  describe('require(\'node:test\').run with no files', { concurrency: true }, () => {
-    beforeEach(() => {
-      tmpdir.refresh();
-      process.chdir(tmpdir.path);
+import { spawnSyncAndExitWithoutError } from '../common/child_process.js';
+
+async function runTests(run, reporters) {
+  for (const reporterName of Object.keys(reporters)) {
+    if (reporterName === 'default') continue;
+    console.log({ reporterName });
+
+    const stream = run({
+      files: undefined
+    }).compose(reporters[reporterName]);
+    stream.on('test:fail', () => {
+      throw new Error('Received test:fail with ' + reporterName);
     });
-
-    it('should neither pass or fail', async () => {
-      const stream = run({
-        files: undefined
-      }).compose(tap);
-      stream.on('test:fail', common.mustNotCall());
-      stream.on('test:pass', common.mustNotCall());
-
-      // eslint-disable-next-line no-unused-vars
-      for await (const _ of stream);
+    stream.on('test:pass', () => {
+      throw new Error('Received test:pass with ' + reporterName);
     });
 
-    it('can use the spec reporter', async () => {
-      const stream = run({
-        files: undefined
-      }).compose(spec);
-      stream.on('test:fail', common.mustNotCall());
-      stream.on('test:pass', common.mustNotCall());
-
-      // eslint-disable-next-line no-unused-vars
-      for await (const _ of stream);
-    });
+    // eslint-disable-next-line no-unused-vars
+    for await (const _ of stream);
+  }
+}
 
-    it('can use the dot reporter', async () => {
-      const stream = run({
-        files: undefined
-      }).compose(dot);
-      stream.on('test:fail', common.mustNotCall());
-      stream.on('test:pass', common.mustNotCall());
+tmpdir.refresh();
+spawnSyncAndExitWithoutError(process.execPath, ['--input-type=module', '-e', `
+  import { run } from 'node:test';
+  import * as reporters from 'node:test/reporters';
 
-      // eslint-disable-next-line no-unused-vars
-      for await (const _ of stream);
-    });
-  });
-} else if (common.isAIX) {
-  console.log('1..0 # Skipped: test runner without specifying files fails on AIX');
-} else {
-  fork(import.meta.filename, [], {
-    env: { CHILD: 'true' }
-  }).on('exit', common.mustCall((code) => {
-    assert.strictEqual(code, 0);
-  }));
-}
+  await (${runTests})(run, reporters);
+`], { cwd: tmpdir.path });

From a3751f22497bdc6cfda98226aca5baaba0c36130 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=EC=88=98=EB=AF=BC?=
 <168920170+suuuuuuminnnnnn@users.noreply.github.com>
Date: Tue, 3 Mar 2026 08:15:09 +0900
Subject: [PATCH 143/267] stream: accept ArrayBuffer in CompressionStream and
 DecompressionStream
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/61913
Fixes: https://github.com/nodejs/node/issues/43433
Reviewed-By: Mattias Buelens <mattias@buelens.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jason Zhang <xzha4350@gmail.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
---
 lib/internal/webstreams/adapters.js           |  7 ++++
 ...st-webstreams-compression-buffer-source.js | 42 +++++++++++++++++++
 ...g-webstreams-adapters-to-writablestream.js | 32 ++++++++++++++
 test/wpt/status/compression.json              |  3 --
 4 files changed, 81 insertions(+), 3 deletions(-)
 create mode 100644 test/parallel/test-webstreams-compression-buffer-source.js

diff --git a/lib/internal/webstreams/adapters.js b/lib/internal/webstreams/adapters.js
index ed9847f250f1ca..83265227a917a9 100644
--- a/lib/internal/webstreams/adapters.js
+++ b/lib/internal/webstreams/adapters.js
@@ -53,6 +53,10 @@ const {
   Buffer,
 } = require('buffer');
 
+const {
+  isArrayBuffer,
+} = require('internal/util/types');
+
 const {
   AbortError,
   ErrnoException,
@@ -213,6 +217,9 @@ function newWritableStreamFromStreamWritable(streamWritable) {
     start(c) { controller = c; },
 
     write(chunk) {
+      if (!streamWritable.writableObjectMode && isArrayBuffer(chunk)) {
+        chunk = new Uint8Array(chunk);
+      }
       if (streamWritable.writableNeedDrain || !streamWritable.write(chunk)) {
         backpressurePromise = PromiseWithResolvers();
         return SafePromisePrototypeFinally(
diff --git a/test/parallel/test-webstreams-compression-buffer-source.js b/test/parallel/test-webstreams-compression-buffer-source.js
new file mode 100644
index 00000000000000..3304a8e64f3175
--- /dev/null
+++ b/test/parallel/test-webstreams-compression-buffer-source.js
@@ -0,0 +1,42 @@
+'use strict';
+require('../common');
+const assert = require('assert');
+const test = require('node:test');
+const { DecompressionStream, CompressionStream } = require('stream/web');
+
+// Minimal gzip-compressed bytes for "hello"
+const compressedGzip = new Uint8Array([
+  31, 139, 8, 0, 0, 0, 0, 0, 0, 3,
+  203, 72, 205, 201, 201, 7, 0, 134, 166, 16, 54, 5, 0, 0, 0,
+]);
+
+test('DecompressionStream accepts ArrayBuffer chunks', async () => {
+  const ds = new DecompressionStream('gzip');
+  const writer = ds.writable.getWriter();
+
+  const writePromise = writer.write(compressedGzip.buffer);
+  writer.close();
+
+  const chunks = await Array.fromAsync(ds.readable);
+  await writePromise;
+  const out = Buffer.concat(chunks.map((c) => Buffer.from(c)));
+  assert.strictEqual(out.toString(), 'hello');
+});
+
+test('CompressionStream round-trip with ArrayBuffer input', async () => {
+  const cs = new CompressionStream('gzip');
+  const ds = new DecompressionStream('gzip');
+
+  const csWriter = cs.writable.getWriter();
+
+  const input = new TextEncoder().encode('hello').buffer;
+
+  await csWriter.write(input);
+  csWriter.close();
+
+  await cs.readable.pipeTo(ds.writable);
+
+  const out = await Array.fromAsync(ds.readable);
+  const result = Buffer.concat(out.map((c) => Buffer.from(c)));
+  assert.strictEqual(result.toString(), 'hello');
+});
diff --git a/test/parallel/test-whatwg-webstreams-adapters-to-writablestream.js b/test/parallel/test-whatwg-webstreams-adapters-to-writablestream.js
index 1527610c513333..23e6319563daa0 100644
--- a/test/parallel/test-whatwg-webstreams-adapters-to-writablestream.js
+++ b/test/parallel/test-whatwg-webstreams-adapters-to-writablestream.js
@@ -165,3 +165,35 @@ class TestWritable extends Writable {
   const writer = writableStream.getWriter();
   writer.closed.then(common.mustCall());
 }
+
+{
+  const duplex = new PassThrough();
+  const writableStream = newWritableStreamFromStreamWritable(duplex);
+  const ec = new TextEncoder();
+  const arrayBuffer = ec.encode('hello').buffer;
+  writableStream
+    .getWriter()
+    .write(arrayBuffer)
+    .then(common.mustCall());
+
+  duplex.on('data', common.mustCall((chunk) => {
+    assert(chunk instanceof Buffer);
+    assert(chunk.equals(Buffer.from('hello')));
+  }));
+}
+
+{
+  const duplex = new PassThrough({ objectMode: true });
+  const writableStream = newWritableStreamFromStreamWritable(duplex);
+  const ec = new TextEncoder();
+  const arrayBuffer = ec.encode('hello').buffer;
+  writableStream
+    .getWriter()
+    .write(arrayBuffer)
+    .then(common.mustCall());
+
+  duplex.on('data', common.mustCall((chunk) => {
+    assert(chunk instanceof ArrayBuffer);
+    assert.strictEqual(chunk, arrayBuffer);
+  }));
+}
diff --git a/test/wpt/status/compression.json b/test/wpt/status/compression.json
index be073427810f0d..619add6fbc25a9 100644
--- a/test/wpt/status/compression.json
+++ b/test/wpt/status/compression.json
@@ -5,9 +5,6 @@
   "decompression-bad-chunks.tentative.any.js": {
     "skip": "Execution \"hangs\", ArrayBuffer and TypedArray is not accepted and throws, instead of rejects during writer.write"
   },
-  "decompression-buffersource.tentative.any.js": {
-    "skip": "ArrayBuffer and TypedArray is not accepted and throws, instead of rejects during writer.write"
-  },
   "compression-with-detach.tentative.window.js": {
     "requires": ["crypto"]
   },

From 2f9c085cf555e269126adc2537d1110f87914572 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= <arauujogui@gmail.com>
Date: Mon, 2 Mar 2026 20:29:14 -0300
Subject: [PATCH 144/267] sqlite: handle stmt invalidation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/61877
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
---
 src/node_sqlite.cc                          | 19 +++++--
 src/node_sqlite.h                           |  3 ++
 test/parallel/test-sqlite-statement-sync.js | 55 +++++++++++++++++++++
 3 files changed, 73 insertions(+), 4 deletions(-)

diff --git a/src/node_sqlite.cc b/src/node_sqlite.cc
index 019c13d2311e7a..7050d26ce44ef6 100644
--- a/src/node_sqlite.cc
+++ b/src/node_sqlite.cc
@@ -2421,6 +2421,11 @@ inline bool StatementSync::IsFinalized() {
   return statement_ == nullptr;
 }
 
+inline int StatementSync::ResetStatement() {
+  reset_generation_++;
+  return sqlite3_reset(statement_);
+}
+
 bool StatementSync::BindParams(const FunctionCallbackInfo<Value>& args) {
   int r = sqlite3_clear_bindings(statement_);
   CHECK_ERROR_OR_THROW(env()->isolate(), db_.get(), r, SQLITE_OK, false);
@@ -2812,7 +2817,7 @@ void StatementSync::All(const FunctionCallbackInfo<Value>& args) {
   THROW_AND_RETURN_ON_BAD_STATE(
       env, stmt->IsFinalized(), "statement has been finalized");
   Isolate* isolate = env->isolate();
-  int r = sqlite3_reset(stmt->statement_);
+  int r = stmt->ResetStatement();
   CHECK_ERROR_OR_THROW(isolate, stmt->db_.get(), r, SQLITE_OK, void());
 
   if (!stmt->BindParams(args)) {
@@ -2838,7 +2843,7 @@ void StatementSync::Iterate(const FunctionCallbackInfo<Value>& args) {
   Environment* env = Environment::GetCurrent(args);
   THROW_AND_RETURN_ON_BAD_STATE(
       env, stmt->IsFinalized(), "statement has been finalized");
-  int r = sqlite3_reset(stmt->statement_);
+  int r = stmt->ResetStatement();
   CHECK_ERROR_OR_THROW(env->isolate(), stmt->db_.get(), r, SQLITE_OK, void());
 
   if (!stmt->BindParams(args)) {
@@ -2861,7 +2866,7 @@ void StatementSync::Get(const FunctionCallbackInfo<Value>& args) {
   Environment* env = Environment::GetCurrent(args);
   THROW_AND_RETURN_ON_BAD_STATE(
       env, stmt->IsFinalized(), "statement has been finalized");
-  int r = sqlite3_reset(stmt->statement_);
+  int r = stmt->ResetStatement();
   CHECK_ERROR_OR_THROW(env->isolate(), stmt->db_.get(), r, SQLITE_OK, void());
 
   if (!stmt->BindParams(args)) {
@@ -2885,7 +2890,7 @@ void StatementSync::Run(const FunctionCallbackInfo<Value>& args) {
   Environment* env = Environment::GetCurrent(args);
   THROW_AND_RETURN_ON_BAD_STATE(
       env, stmt->IsFinalized(), "statement has been finalized");
-  int r = sqlite3_reset(stmt->statement_);
+  int r = stmt->ResetStatement();
   CHECK_ERROR_OR_THROW(env->isolate(), stmt->db_.get(), r, SQLITE_OK, void());
 
   if (!stmt->BindParams(args)) {
@@ -3430,6 +3435,7 @@ StatementSyncIterator::StatementSyncIterator(Environment* env,
     : BaseObject(env, object), stmt_(std::move(stmt)) {
   MakeWeak();
   done_ = false;
+  statement_reset_generation_ = stmt_->reset_generation_;
 }
 
 StatementSyncIterator::~StatementSyncIterator() {}
@@ -3488,6 +3494,11 @@ void StatementSyncIterator::Next(const FunctionCallbackInfo<Value>& args) {
     return;
   }
 
+  THROW_AND_RETURN_ON_BAD_STATE(
+      env,
+      iter->statement_reset_generation_ != iter->stmt_->reset_generation_,
+      "iterator was invalidated");
+
   int r = sqlite3_step(iter->stmt_->statement_);
   if (r != SQLITE_ROW) {
     CHECK_ERROR_OR_THROW(
diff --git a/src/node_sqlite.h b/src/node_sqlite.h
index 9b8fcec2699379..3ee79cc10ec562 100644
--- a/src/node_sqlite.h
+++ b/src/node_sqlite.h
@@ -291,7 +291,9 @@ class StatementSync : public BaseObject {
   bool use_big_ints_;
   bool allow_bare_named_params_;
   bool allow_unknown_named_params_;
+  uint64_t reset_generation_ = 0;
   std::optional<std::map<std::string, std::string>> bare_named_params_;
+  inline int ResetStatement();
   bool BindParams(const v8::FunctionCallbackInfo<v8::Value>& args);
   bool BindValue(const v8::Local<v8::Value>& value, const int index);
 
@@ -321,6 +323,7 @@ class StatementSyncIterator : public BaseObject {
   ~StatementSyncIterator() override;
   BaseObjectPtr<StatementSync> stmt_;
   bool done_;
+  uint64_t statement_reset_generation_;
 };
 
 using Sqlite3ChangesetGenFunc = int (*)(sqlite3_session*, int*, void**);
diff --git a/test/parallel/test-sqlite-statement-sync.js b/test/parallel/test-sqlite-statement-sync.js
index 62e95363f1c46a..aa7a3a73ae6649 100644
--- a/test/parallel/test-sqlite-statement-sync.js
+++ b/test/parallel/test-sqlite-statement-sync.js
@@ -171,6 +171,61 @@ suite('StatementSync.prototype.iterate()', () => {
       { __proto__: null, done: true, value: null },
     );
   });
+
+  test('iterator is invalidated when statement is reset by get/all/run/iterate', (t) => {
+    const db = new DatabaseSync(':memory:');
+    db.exec('CREATE TABLE test (value INTEGER NOT NULL)');
+    for (let i = 0; i < 5; i++) {
+      db.prepare('INSERT INTO test (value) VALUES (?)').run(i);
+    }
+    const stmt = db.prepare('SELECT * FROM test');
+
+    // Invalidated by stmt.get()
+    let it = stmt.iterate();
+    it.next();
+    stmt.get();
+    t.assert.throws(() => { it.next(); }, {
+      code: 'ERR_INVALID_STATE',
+      message: /iterator was invalidated/,
+    });
+
+    // Invalidated by stmt.all()
+    it = stmt.iterate();
+    it.next();
+    stmt.all();
+    t.assert.throws(() => { it.next(); }, {
+      code: 'ERR_INVALID_STATE',
+      message: /iterator was invalidated/,
+    });
+
+    // Invalidated by stmt.run()
+    it = stmt.iterate();
+    it.next();
+    stmt.run();
+    t.assert.throws(() => { it.next(); }, {
+      code: 'ERR_INVALID_STATE',
+      message: /iterator was invalidated/,
+    });
+
+    // Invalidated by a new stmt.iterate()
+    it = stmt.iterate();
+    it.next();
+    const it2 = stmt.iterate();
+    t.assert.throws(() => { it.next(); }, {
+      code: 'ERR_INVALID_STATE',
+      message: /iterator was invalidated/,
+    });
+
+    // New iterator works fine
+    t.assert.strictEqual(it2.next().done, false);
+
+    // Reset on a different statement does NOT invalidate this iterator
+    const stmt2 = db.prepare('SELECT * FROM test');
+    it = stmt.iterate();
+    it.next();
+    stmt2.get();
+    it.next();
+  });
 });
 
 suite('StatementSync.prototype.run()', () => {

From fb1c0bda0aaa8dd4057aca8bbfca15591b6a80b3 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Mon, 2 Mar 2026 19:53:12 -0500
Subject: [PATCH 145/267] test: update WPT for WebCryptoAPI to 42e47329fd

PR-URL: https://github.com/nodejs/node/pull/62048
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 test/fixtures/wpt/README.md                   |   2 +-
 .../digest/cshake.tentative.https.any.js      |  54 ++++++---
 .../WebCryptoAPI/digest/digest.https.any.js   |  44 ++++---
 .../digest/sha3.tentative.https.any.js        |  44 +++++--
 .../wpt/WebCryptoAPI/encrypt_decrypt/aes.js   |  74 +++++++++++-
 .../wpt/WebCryptoAPI/encrypt_decrypt/rsa.js   |  97 ++++++++++++++-
 .../wpt/WebCryptoAPI/sign_verify/ecdsa.js     |  64 ++++++++++
 .../wpt/WebCryptoAPI/sign_verify/eddsa.js     |  42 +++++++
 .../wpt/WebCryptoAPI/sign_verify/hmac.js      |  64 +++++++++-
 .../wpt/WebCryptoAPI/sign_verify/kmac.js      |  72 +++++++++++-
 .../wpt/WebCryptoAPI/sign_verify/mldsa.js     | 110 ++++++++++++++++++
 .../wpt/WebCryptoAPI/sign_verify/rsa.js       |  62 ++++++++++
 test/fixtures/wpt/versions.json               |   2 +-
 test/wpt/status/WebCryptoAPI.cjs              |   6 +-
 14 files changed, 679 insertions(+), 58 deletions(-)

diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md
index 408bd643f79541..df63f173072dcc 100644
--- a/test/fixtures/wpt/README.md
+++ b/test/fixtures/wpt/README.md
@@ -34,7 +34,7 @@ Last update:
 - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/cde25e7e3c/wasm/jsapi
 - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi
 - web-locks: https://github.com/web-platform-tests/wpt/tree/10a122a6bc/web-locks
-- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/7cbe7e8ed9/WebCryptoAPI
+- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/42e47329fd/WebCryptoAPI
 - webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/2f96fa1996/webidl/ecmascript-binding/es-exceptions
 - webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/6495c91853/webmessaging/broadcastchannel
 - webstorage: https://github.com/web-platform-tests/wpt/tree/1d2c5fb36a/webstorage
diff --git a/test/fixtures/wpt/WebCryptoAPI/digest/cshake.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/digest/cshake.tentative.https.any.js
index e793722d8be598..d5f790e42b4982 100644
--- a/test/fixtures/wpt/WebCryptoAPI/digest/cshake.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/digest/cshake.tentative.https.any.js
@@ -171,26 +171,42 @@ Object.keys(digestedData).forEach(function (alg) {
           });
       }, alg + ' with ' + length + ' bit output and ' + size + ' source data');
 
-      promise_test(function (test) {
-        var buffer = new Uint8Array(sourceData[size]);
-        return crypto.subtle
-          .digest({ name: alg, length: length }, buffer)
-          .then(function (result) {
-            // Alter the buffer after calling digest
-            if (buffer.length > 0) {
+      if (sourceData[size].length > 0) {
+        promise_test(function (test) {
+          var buffer = new Uint8Array(sourceData[size]);
+          // Alter the buffer before calling digest
+          buffer[0] = ~buffer[0];
+          return crypto.subtle
+            .digest({
+              get name() {
+                // Alter the buffer back while calling digest
+                buffer[0] = sourceData[size][0];
+                return alg;
+              },
+              length
+            }, buffer)
+            .then(function (result) {
+              assert_true(
+                equalBuffers(result, digestedData[alg][length][size]),
+                'digest matches expected'
+              );
+            });
+        }, alg + ' with ' + length + ' bit output and ' + size + ' source data and altered buffer during call');
+
+        promise_test(function (test) {
+          var buffer = new Uint8Array(sourceData[size]);
+          return crypto.subtle
+            .digest({ name: alg, length: length }, buffer)
+            .then(function (result) {
+              // Alter the buffer after calling digest
               buffer[0] = ~buffer[0];
-            }
-            assert_true(
-              equalBuffers(result, digestedData[alg][length][size]),
-              'digest matches expected'
-            );
-          });
-      }, alg +
-        ' with ' +
-        length +
-        ' bit output and ' +
-        size +
-        ' source data and altered buffer after call');
+              assert_true(
+                equalBuffers(result, digestedData[alg][length][size]),
+                'digest matches expected'
+              );
+            });
+        }, alg + ' with ' + length + ' bit output and ' + size + ' source data and altered buffer after call');
+      }
     });
   });
 });
diff --git a/test/fixtures/wpt/WebCryptoAPI/digest/digest.https.any.js b/test/fixtures/wpt/WebCryptoAPI/digest/digest.https.any.js
index 3b0972b1f2bf7d..e0c85f8f6b30e4 100644
--- a/test/fixtures/wpt/WebCryptoAPI/digest/digest.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/digest/digest.https.any.js
@@ -83,19 +83,37 @@
                 return promise;
             }, mixedCase + " with " + size + " source data");
 
-            promise_test(function(test) {
-                var copiedBuffer = copyBuffer(sourceData[size]);
-                var promise = subtle.digest({name: upCase}, copiedBuffer)
-                .then(function(result) {
-                    assert_true(equalBuffers(result, digestedData[alg][size]), "digest() yielded expected result for " + alg + ":" + size);
-                }, function(err) {
-                    assert_unreached("digest() threw an error for " + alg + ":" + size + " - " + err.message);
-                });
-
-                copiedBuffer[0] = 255 - copiedBuffer;
-                return promise;
-            }, upCase + " with " + size + " source data and altered buffer after call");
-
+            if (sourceData[size].length > 0) {
+                promise_test(function(test) {
+                    var copiedBuffer = copyBuffer(sourceData[size]);
+                    copiedBuffer[0] = 255 - copiedBuffer[0];
+                    var promise = subtle.digest({
+                        get name() {
+                            copiedBuffer[0] = sourceData[size][0];
+                            return upCase;
+                        }
+                    }, copiedBuffer)
+                    .then(function(result) {
+                        assert_true(equalBuffers(result, digestedData[alg][size]), "digest() yielded expected result for " + alg + ":" + size);
+                    }, function(err) {
+                        assert_unreached("digest() threw an error for " + alg + ":" + size + " - " + err.message);
+                    });
+                    return promise;
+                }, upCase + " with " + size + " source data and altered buffer during call");
+
+                promise_test(function(test) {
+                    var copiedBuffer = copyBuffer(sourceData[size]);
+                    var promise = subtle.digest({name: upCase}, copiedBuffer)
+                    .then(function(result) {
+                        assert_true(equalBuffers(result, digestedData[alg][size]), "digest() yielded expected result for " + alg + ":" + size);
+                    }, function(err) {
+                        assert_unreached("digest() threw an error for " + alg + ":" + size + " - " + err.message);
+                    });
+
+                    copiedBuffer[0] = 255 - copiedBuffer[0];
+                    return promise;
+                }, upCase + " with " + size + " source data and altered buffer after call");
+            }
         });
     });
 
diff --git a/test/fixtures/wpt/WebCryptoAPI/digest/sha3.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/digest/sha3.tentative.https.any.js
index 8f84ad08ca1a25..fc33608e07ab14 100644
--- a/test/fixtures/wpt/WebCryptoAPI/digest/sha3.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/digest/sha3.tentative.https.any.js
@@ -109,19 +109,39 @@ Object.keys(sourceData).forEach(function (size) {
         });
     }, alg + ' with ' + size + ' source data');
 
-    promise_test(function (test) {
-      var buffer = new Uint8Array(sourceData[size]);
-      return crypto.subtle.digest(alg, buffer).then(function (result) {
-        // Alter the buffer after calling digest
-        if (buffer.length > 0) {
+    if (sourceData[size].length > 0) {
+      promise_test(function (test) {
+        var buffer = new Uint8Array(sourceData[size]);
+        // Alter the buffer before calling digest
+        buffer[0] = ~buffer[0];
+        return crypto.subtle
+          .digest({
+            get name() {
+              // Alter the buffer back while calling digest
+              buffer[0] = sourceData[size][0];
+              return alg;
+            }
+          }, buffer)
+          .then(function (result) {
+            assert_true(
+              equalBuffers(result, digestedData[alg][size]),
+              'digest matches expected'
+            );
+          });
+      }, alg + ' with ' + size + ' source data and altered buffer during call');
+
+      promise_test(function (test) {
+        var buffer = new Uint8Array(sourceData[size]);
+        return crypto.subtle.digest(alg, buffer).then(function (result) {
+          // Alter the buffer after calling digest
           buffer[0] = ~buffer[0];
-        }
-        assert_true(
-          equalBuffers(result, digestedData[alg][size]),
-          'digest matches expected'
-        );
-      });
-    }, alg + ' with ' + size + ' source data and altered buffer after call');
+          assert_true(
+            equalBuffers(result, digestedData[alg][size]),
+            'digest matches expected'
+          );
+        });
+      }, alg + ' with ' + size + ' source data and altered buffer after call');
+    }
   });
 });
 
diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes.js b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes.js
index d93b60f8b87569..b157a94a0dc4fb 100644
--- a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes.js
+++ b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes.js
@@ -35,6 +35,38 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for successful encryption even if the buffer is changed while calling encrypt.
+    passingVectors.forEach(function(vector) {
+        var plaintext = copyBuffer(vector.plaintext);
+        plaintext[0] = 255 - plaintext[0];
+        var promise = importVectorKey(vector, ["encrypt", "decrypt"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var operation = subtle.encrypt({
+                    ...vector.algorithm,
+                    get name() {
+                        plaintext[0] = vector.plaintext[0];
+                        return vector.algorithm.name;
+                    }
+                }, vector.key, plaintext)
+                .then(function(result) {
+                    assert_true(equalBuffers(result, vector.result), "Should return expected result");
+                }, function(err) {
+                    assert_unreached("encrypt error for test " + vector.name + ": " + err.message);
+                });
+                return operation;
+            }, vector.name + " with altered plaintext during call");
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importKey failed for " + vector.name);
+            }, "importKey step: " + vector.name + " with altered plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful encryption even if the buffer is changed after calling encrypt.
     passingVectors.forEach(function(vector) {
         var plaintext = copyBuffer(vector.plaintext);
@@ -49,13 +81,13 @@ function run_test() {
                 });
                 plaintext[0] = 255 - plaintext[0];
                 return operation;
-            }, vector.name + " with altered plaintext");
+            }, vector.name + " with altered plaintext after call");
         }, function(err) {
             // We need a failed test if the importVectorKey operation fails, so
             // we know we never tested encryption
             promise_test(function(test) {
                 assert_unreached("importKey failed for " + vector.name);
-            }, "importKey step: " + vector.name + " with altered plaintext");
+            }, "importKey step: " + vector.name + " with altered plaintext after call");
         });
 
         all_promises.push(promise);
@@ -84,7 +116,39 @@ function run_test() {
         all_promises.push(promise);
     });
 
-    // Check for successful decryption even if ciphertext is altered.
+    // Check for successful decryption even if ciphertext is altered while calling encrypt.
+    passingVectors.forEach(function(vector) {
+        var ciphertext = copyBuffer(vector.result);
+        ciphertext[0] = 255 - ciphertext[0];
+        var promise = importVectorKey(vector, ["encrypt", "decrypt"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var operation = subtle.decrypt({
+                    ...vector.algorithm,
+                    get name() {
+                        ciphertext[0] = vector.result[0];
+                        return vector.algorithm.name;
+                    }
+                }, vector.key, ciphertext)
+                .then(function(result) {
+                    assert_true(equalBuffers(result, vector.plaintext), "Should return expected result");
+                }, function(err) {
+                    assert_unreached("decrypt error for test " + vector.name + ": " + err.message);
+                });
+                return operation;
+            }, vector.name + " decryption with altered ciphertext during call");
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importKey failed for " + vector.name);
+            }, "importKey step for decryption: " + vector.name + " with altered ciphertext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Check for successful decryption even if ciphertext is altered after calling encrypt.
     passingVectors.forEach(function(vector) {
         var ciphertext = copyBuffer(vector.result);
         var promise = importVectorKey(vector, ["encrypt", "decrypt"])
@@ -98,13 +162,13 @@ function run_test() {
                 });
                 ciphertext[0] = 255 - ciphertext[0];
                 return operation;
-            }, vector.name + " decryption with altered ciphertext");
+            }, vector.name + " decryption with altered ciphertext after call");
         }, function(err) {
             // We need a failed test if the importVectorKey operation fails, so
             // we know we never tested encryption
             promise_test(function(test) {
                 assert_unreached("importKey failed for " + vector.name);
-            }, "importKey step for decryption: " + vector.name + " with altered ciphertext");
+            }, "importKey step for decryption: " + vector.name + " with altered ciphertext after call");
         });
 
         all_promises.push(promise);
diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/rsa.js b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/rsa.js
index 5eae06e474564a..76c90809783205 100644
--- a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/rsa.js
+++ b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/rsa.js
@@ -40,6 +40,44 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Test decryption with an altered buffer during call
+    passingVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["encrypt"], ["decrypt"])
+        .then(function(vectors) {
+            // Get a one byte longer plaintext to encrypt
+            if (!("ciphertext" in vector)) {
+                return;
+            }
+
+            promise_test(function(test) {
+                var ciphertext = copyBuffer(vector.ciphertext);
+                ciphertext[0] = 255 - ciphertext[0];
+                var operation = subtle.decrypt({
+                    ...vector.algorithm,
+                    get name() {
+                        ciphertext[0] = vector.ciphertext[0];
+                        return vector.algorithm.name;
+                    }
+                }, vector.privateKey, ciphertext)
+                .then(function(plaintext) {
+                    assert_true(equalBuffers(plaintext, vector.plaintext, "Decryption works"));
+                }, function(err) {
+                    assert_unreached("Decryption should not throw error " + vector.name + ": " + err.message + "'");
+                });
+                return operation;
+            }, vector.name + " decryption with altered ciphertext during call");
+
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " decryption with altered ciphertext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Test decryption with an altered buffer
     passingVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["encrypt"], ["decrypt"])
@@ -59,14 +97,14 @@ function run_test() {
                 });
                 ciphertext[0] = 255 - ciphertext[0];
                 return operation;
-            }, vector.name + " decryption with altered ciphertext");
+            }, vector.name + " decryption with altered ciphertext after call");
 
         }, function(err) {
             // We need a failed test if the importVectorKey operation fails, so
             // we know we never tested encryption
             promise_test(function(test) {
                 assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
-            }, "importVectorKeys step: " + vector.name + " decryption with altered ciphertext");
+            }, "importVectorKeys step: " + vector.name + " decryption with altered ciphertext after call");
         });
 
         all_promises.push(promise);
@@ -125,6 +163,57 @@ function run_test() {
     });
 
 
+    // Check for successful encryption even if plaintext is altered during call.
+    passingVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["encrypt"], ["decrypt"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                plaintext[0] = 255 - plaintext[0];
+                var operation = subtle.encrypt({
+                    ...vector.algorithm,
+                    get name() {
+                        plaintext[0] = vector.plaintext[0];
+                        return vector.algorithm.name;
+                    }
+                }, vector.publicKey, plaintext)
+                .then(function(ciphertext) {
+                    assert_equals(ciphertext.byteLength * 8, vector.privateKey.algorithm.modulusLength, "Ciphertext length matches modulus length");
+                    // Can we get the original plaintext back via decrypt?
+                    return subtle.decrypt(vector.algorithm, vector.privateKey, ciphertext)
+                    .then(function(result) {
+                        assert_true(equalBuffers(result, vector.plaintext), "Round trip returns original plaintext");
+                        return ciphertext;
+                    }, function(err) {
+                        assert_unreached("decrypt error for test " + vector.name + ": " + err.message + "'");
+                    });
+                })
+                .then(function(priorCiphertext) {
+                    // Will a second encrypt give us different ciphertext, as it should?
+                    return subtle.encrypt(vector.algorithm, vector.publicKey, vector.plaintext)
+                    .then(function(ciphertext) {
+                        assert_false(equalBuffers(priorCiphertext, ciphertext), "Two encrypts give different results")
+                    }, function(err) {
+                        assert_unreached("second time encrypt error for test " + vector.name + ": '" + err.message + "'");
+                    });
+                }, function(err) {
+                    assert_unreached("decrypt error for test " + vector.name + ": '" + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " with altered plaintext during call");
+
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with altered plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful encryption even if plaintext is altered after call.
     passingVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["encrypt"], ["decrypt"])
@@ -157,14 +246,14 @@ function run_test() {
 
                 plaintext[0] = 255 - plaintext[0];
                 return operation;
-            }, vector.name + " with altered plaintext");
+            }, vector.name + " with altered plaintext after call");
 
         }, function(err) {
             // We need a failed test if the importVectorKey operation fails, so
             // we know we never tested encryption
             promise_test(function(test) {
                 assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
-            }, "importVectorKeys step: " + vector.name + " with altered plaintext");
+            }, "importVectorKeys step: " + vector.name + " with altered plaintext after call");
         });
 
         all_promises.push(promise);
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa.js
index 6bf662adcc547f..9b47868fe32bfb 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa.js
@@ -39,6 +39,38 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Test verification with an altered buffer during call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                signature[0] = 255 - signature[0];
+                var algorithm = {
+                    hash: vector.hashName,
+                    get name() {
+                        signature[0] = vector.signature[0];
+                        return vector.algorithmName;
+                    }
+                };
+                var operation = subtle.verify(algorithm, vector.publicKey, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " verification with altered signature during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with altered signature during call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Test verification with an altered buffer after call
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify"], ["sign"])
@@ -65,6 +97,38 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for successful verification even if plaintext is altered during call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                plaintext[0] = 255 - plaintext[0];
+                var algorithm = {
+                    hash: vector.hashName,
+                    get name() {
+                        plaintext[0] = vector.plaintext[0];
+                        return vector.algorithmName;
+                    }
+                };
+                var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " with altered plaintext during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with altered plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful verification even if plaintext is altered after call.
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify"], ["sign"])
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/eddsa.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/eddsa.js
index 4024674e3c3d7f..4bf1887b2ae9bb 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/eddsa.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/eddsa.js
@@ -23,6 +23,27 @@ function run_test(algorithmName) {
           assert_true(isVerified, "Signature verified");
       }, vector.name + " verification");
 
+      // Test verification with an altered buffer during call
+      promise_test(async() => {
+          let isVerified = false;
+          let key;
+          try {
+              key = await subtle.importKey("spki", vector.publicKeyBuffer, algorithm, false, ["verify"]);
+              var signature = copyBuffer(vector.signature);
+              signature[0] = 255 - signature[0];
+              isVerified = await subtle.verify({
+                  get name() {
+                      signature[0] = vector.signature[0];
+                      return vector.algorithmName;
+                  }
+              }, key, signature, vector.data);
+          } catch (err) {
+              assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
+              assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+          };
+          assert_true(isVerified, "Signature verified");
+      }, vector.name + " verification with altered signature during call");
+
       // Test verification with an altered buffer after call
       promise_test(async() => {
           let isVerified = false;
@@ -41,6 +62,27 @@ function run_test(algorithmName) {
           assert_true(isVerified, "Signature verified");
       }, vector.name + " verification with altered signature after call");
 
+      // Check for successful verification even if data is altered during call.
+      promise_test(async() => {
+          let isVerified = false;
+          let key;
+          try {
+              key = await subtle.importKey("spki", vector.publicKeyBuffer, algorithm, false, ["verify"]);
+              var data = copyBuffer(vector.data);
+              data[0] = 255 - data[0];
+              isVerified = await subtle.verify({
+                  get name() {
+                      data[0] = vector.data[0];
+                      return vector.algorithmName;
+                  }
+              }, key, vector.signature, data);
+          } catch (err) {
+              assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
+              assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+          };
+          assert_true(isVerified, "Signature verified");
+      }, vector.name + " with altered data during call");
+
       // Check for successful verification even if data is altered after call.
       promise_test(async() => {
           let isVerified = false;
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.js
index f5e2ad2769cdd8..dff8c994d83de0 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.js
@@ -37,6 +37,37 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Test verification with an altered buffer during call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                signature[0] = 255 - signature[0];
+                var operation = subtle.verify({
+                    hash: vector.hash,
+                    get name() {
+                        signature[0] = vector.signature[0];
+                        return "HMAC";
+                    }
+                }, vector.key, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature is not verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " verification with altered signature during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with altered signature during call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Test verification with an altered buffer after call
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify", "sign"])
@@ -62,6 +93,37 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for successful verification even if plaintext is altered during call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                plaintext[0] = 255 - plaintext[0];
+                var operation = subtle.verify({
+                    hash: vector.hash,
+                    get name() {
+                        plaintext[0] = vector.plaintext[0];
+                        return "HMAC";
+                    }
+                }, vector.key, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " with altered plaintext during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with altered plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful verification even if plaintext is altered after call.
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify", "sign"])
@@ -81,7 +143,7 @@ function run_test() {
         }, function(err) {
             promise_test(function(test) {
                 assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
-            }, "importVectorKeys step: " + vector.name + " with altered plaintext");
+            }, "importVectorKeys step: " + vector.name + " with altered plaintext after call");
         });
 
         all_promises.push(promise);
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.js
index 037dbec1097ddc..57c9dc6f34790a 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.js
@@ -40,6 +40,41 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Test verification with an altered buffer during call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                signature[0] = 255 - signature[0];
+                var algorithmParams = {
+                    length: vector.length,
+                    get name() {
+                        signature[0] = vector.signature[0];
+                        return vector.algorithm;
+                    }
+                };
+                if (vector.customization !== undefined) {
+                    algorithmParams.customization = vector.customization;
+                }
+                var operation = subtle.verify(algorithmParams, vector.key, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature is not verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " verification with altered signature during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with altered signature during call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Test verification with an altered buffer after call
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify", "sign"])
@@ -69,6 +104,41 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for successful verification even if plaintext is altered during call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                plaintext[0] = 255 - plaintext[0];
+                var algorithmParams = {
+                    length: vector.length,
+                    get name() {
+                        plaintext[0] = vector.plaintext[0];
+                        return vector.algorithm;
+                    }
+                };
+                if (vector.customization !== undefined) {
+                    algorithmParams.customization = vector.customization;
+                }
+                var operation = subtle.verify(algorithmParams, vector.key, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " with altered plaintext during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with altered plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful verification even if plaintext is altered after call.
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify", "sign"])
@@ -92,7 +162,7 @@ function run_test() {
         }, function(err) {
             promise_test(function(test) {
                 assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
-            }, "importVectorKeys step: " + vector.name + " with altered plaintext");
+            }, "importVectorKeys step: " + vector.name + " with altered plaintext after call");
         });
 
         all_promises.push(promise);
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.js
index e31d36362b0dc9..88143a33879ed7 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.js
@@ -55,6 +55,61 @@ function run_test() {
     all_promises.push(promise);
   });
 
+  // Test verification with an altered buffer during call
+  testVectors.forEach(function (vector) {
+    var promise = importVectorKeys(vector, ['verify'], ['sign']).then(
+      function (vectors) {
+        promise_test(function (test) {
+          var signature = copyBuffer(vector.signature);
+          signature[0] = 255 - signature[0];
+          var operation = subtle
+            .verify(
+              {
+                get name() {
+                  signature[0] = vector.signature[0];
+                  return vector.algorithmName;
+                },
+              },
+              vector.publicKey,
+              signature,
+              vector.data
+            )
+            .then(
+              function (is_verified) {
+                assert_true(is_verified, 'Signature verified');
+              },
+              function (err) {
+                assert_unreached(
+                  'Verification should not throw error ' +
+                    vector.name +
+                    ': ' +
+                    err.message +
+                    "'"
+                );
+              }
+            );
+
+          return operation;
+        }, vector.name + ' verification with altered signature during call');
+      },
+      function (err) {
+        promise_test(function (test) {
+          assert_unreached(
+            'importVectorKeys failed for ' +
+              vector.name +
+              ". Message: ''" +
+              err.message +
+              "''"
+          );
+        }, 'importVectorKeys step: ' +
+          vector.name +
+          ' verification with altered signature during call');
+      }
+    );
+
+    all_promises.push(promise);
+  });
+
   // Test verification with an altered buffer after call
   testVectors.forEach(function (vector) {
     var promise = importVectorKeys(vector, ['verify'], ['sign']).then(
@@ -101,6 +156,61 @@ function run_test() {
     all_promises.push(promise);
   });
 
+  // Check for successful verification even if plaintext is altered during call.
+  testVectors.forEach(function (vector) {
+    var promise = importVectorKeys(vector, ['verify'], ['sign']).then(
+      function (vectors) {
+        promise_test(function (test) {
+          var plaintext = copyBuffer(vector.data);
+          plaintext[0] = 255 - plaintext[0];
+          var operation = subtle
+            .verify(
+              {
+                get name() {
+                  plaintext[0] = vector.data[0];
+                  return vector.algorithmName;
+                },
+              },
+              vector.publicKey,
+              vector.signature,
+              plaintext
+            )
+            .then(
+              function (is_verified) {
+                assert_true(is_verified, 'Signature verified');
+              },
+              function (err) {
+                assert_unreached(
+                  'Verification should not throw error ' +
+                    vector.name +
+                    ': ' +
+                    err.message +
+                    "'"
+                );
+              }
+            );
+
+          return operation;
+        }, vector.name + ' with altered plaintext during call');
+      },
+      function (err) {
+        promise_test(function (test) {
+          assert_unreached(
+            'importVectorKeys failed for ' +
+              vector.name +
+              ". Message: ''" +
+              err.message +
+              "''"
+          );
+        }, 'importVectorKeys step: ' +
+          vector.name +
+          ' with altered plaintext during call');
+      }
+    );
+
+    all_promises.push(promise);
+  });
+
   // Check for successful verification even if plaintext is altered after call.
   testVectors.forEach(function (vector) {
     var promise = importVectorKeys(vector, ['verify'], ['sign']).then(
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/rsa.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/rsa.js
index 5abadd3d4b8629..f808714cfb11d4 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/rsa.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/rsa.js
@@ -37,6 +37,37 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Test verification with an altered buffer during call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                signature[0] = 255 - signature[0];
+                var operation = subtle.verify({
+                    ...vector.algorithm,
+                    get name() {
+                        signature[0] = vector.signature[0];
+                        return vector.algorithm.name;
+                    }
+                }, vector.publicKey, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " verification with altered signature during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with altered signature during call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Test verification with an altered buffer after call
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify"], ["sign"])
@@ -62,6 +93,37 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for successful verification even if plaintext is altered during call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                plaintext[0] = 255 - plaintext[0];
+                var operation = subtle.verify({
+                    ...vector.algorithm,
+                    get name() {
+                        plaintext[0] = vector.plaintext[0];
+                        return vector.algorithm.name;
+                    }
+                }, vector.publicKey, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " with altered plaintext during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with altered plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful verification even if plaintext is altered after call.
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify"], ["sign"])
diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json
index 085a51e61753ea..00340a256aeebe 100644
--- a/test/fixtures/wpt/versions.json
+++ b/test/fixtures/wpt/versions.json
@@ -96,7 +96,7 @@
     "path": "web-locks"
   },
   "WebCryptoAPI": {
-    "commit": "7cbe7e8ed962eac692ba4ad2e6ce3b9daafb65c0",
+    "commit": "42e47329fdc92c80d58c2816eb66cb2cf2b32a89",
     "path": "WebCryptoAPI"
   },
   "webidl/ecmascript-binding/es-exceptions": {
diff --git a/test/wpt/status/WebCryptoAPI.cjs b/test/wpt/status/WebCryptoAPI.cjs
index d14c617614af34..4d919480da6352 100644
--- a/test/wpt/status/WebCryptoAPI.cjs
+++ b/test/wpt/status/WebCryptoAPI.cjs
@@ -53,8 +53,10 @@ const cshakeExpectedFailures = ['cSHAKE128', 'cSHAKE256'].flatMap((algorithm) =>
       const base = `${algorithm} with ${length} bit output and ${size} source data`;
       return [
         base,
+      ].concat(size !== 'empty' ? [
         `${base} and altered buffer after call`,
-      ];
+        `${base} and altered buffer during call`,
+      ] : []);
     });
   });
 });
@@ -71,7 +73,9 @@ const kmacVectorNames = [
 const kmacExpectedFailures = kmacVectorNames.flatMap((name) => {
   return [
     `${name} verification`,
+    `${name} verification with altered signature during call`,
     `${name} verification with altered signature after call`,
+    `${name} with altered plaintext during call`,
     `${name} with altered plaintext after call`,
     `${name} no verify usage`,
     `${name} round trip`,

From 7ab885b323e8751888692c5d7a0824ed80022761 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Tue, 3 Mar 2026 03:25:23 -0500
Subject: [PATCH 146/267] deps: update ada to 3.4.3

PR-URL: https://github.com/nodejs/node/pull/62049
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
---
 deps/ada/ada.cpp |  8 +++++++-
 deps/ada/ada.h   | 23 +++++++++++++++--------
 2 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/deps/ada/ada.cpp b/deps/ada/ada.cpp
index 732a5245ef0426..6c2db6f9e30a5c 100644
--- a/deps/ada/ada.cpp
+++ b/deps/ada/ada.cpp
@@ -1,4 +1,4 @@
-/* auto-generated on 2026-01-30 13:29:04 -0500. Do not edit! */
+/* auto-generated on 2026-02-23 21:29:24 -0500. Do not edit! */
 /* begin file src/ada.cpp */
 #include "ada.h"
 /* begin file src/checkers.cpp */
@@ -14495,6 +14495,12 @@ bool url_aggregator::set_pathname(const std::string_view input) {
   if (get_pathname().starts_with("//") && !has_authority() && !has_dash_dot()) {
     buffer.insert(components.pathname_start, "/.");
     components.pathname_start += 2;
+    if (components.search_start != url_components::omitted) {
+      components.search_start += 2;
+    }
+    if (components.hash_start != url_components::omitted) {
+      components.hash_start += 2;
+    }
   }
   ADA_ASSERT_TRUE(validate());
   return true;
diff --git a/deps/ada/ada.h b/deps/ada/ada.h
index 898c7dd3042618..1210d7ddb7a123 100644
--- a/deps/ada/ada.h
+++ b/deps/ada/ada.h
@@ -1,4 +1,4 @@
-/* auto-generated on 2026-01-30 13:29:04 -0500. Do not edit! */
+/* auto-generated on 2026-02-23 21:29:24 -0500. Do not edit! */
 /* begin file include/ada.h */
 /**
  * @file ada.h
@@ -8091,6 +8091,12 @@ inline void url_aggregator::update_base_pathname(const std::string_view input) {
     // output.
     buffer.insert(components.pathname_start, "/.");
     components.pathname_start += 2;
+    if (components.search_start != url_components::omitted) {
+      components.search_start += 2;
+    }
+    if (components.hash_start != url_components::omitted) {
+      components.hash_start += 2;
+    }
   }
 
   uint32_t difference = replace_and_resize(
@@ -9530,13 +9536,14 @@ url_pattern_component<regex_provider>::create_component_match_result(
   auto result =
       url_pattern_component_result{.input = std::move(input), .groups = {}};
 
-  // Optimization: Let's reserve the size.
-  result.groups.reserve(exec_result.size());
-
   // We explicitly start iterating from 0 even though the spec
   // says we should start from 1. This case is handled by the
-  // std_regex_provider.
-  for (size_t index = 0; index < exec_result.size(); index++) {
+  // std_regex_provider which removes the full match from index 0.
+  // Use min() to guard against potential mismatches between
+  // exec_result size and group_name_list size.
+  const size_t size = std::min(exec_result.size(), group_name_list.size());
+  result.groups.reserve(size);
+  for (size_t index = 0; index < size; index++) {
     result.groups.emplace(group_name_list[index],
                           std::move(exec_result[index]));
   }
@@ -11221,14 +11228,14 @@ constructor_string_parser<regex_provider>::parse(std::string_view input) {
 #ifndef ADA_ADA_VERSION_H
 #define ADA_ADA_VERSION_H
 
-#define ADA_VERSION "3.4.2"
+#define ADA_VERSION "3.4.3"
 
 namespace ada {
 
 enum {
   ADA_VERSION_MAJOR = 3,
   ADA_VERSION_MINOR = 4,
-  ADA_VERSION_REVISION = 2,
+  ADA_VERSION_REVISION = 3,
 };
 
 }  // namespace ada

From 4213f893ecee67d03907100b88008c11d749cdbe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerhard=20St=C3=B6bich?= <deb2001-github@yahoo.de>
Date: Tue, 3 Mar 2026 15:09:06 +0100
Subject: [PATCH 147/267] src: release context frame in AsyncWrap::EmitDestroy

Release the async context frame in AsyncWrap::EmitDestroy to allow
gc to collect it.

This is in special relevant for reused resources like HTTPParser
otherwise they might keep ALS stores alive.

PR-URL: https://github.com/nodejs/node/pull/61995
Fixes: https://github.com/nodejs/node/issues/61882
Refs: https://github.com/nodejs/node/pull/48528
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
---
 src/async_wrap.cc                             | 20 +++++++++++--
 ...st-async-local-storage-http-parser-leak.js | 29 +++++++++++++++++++
 2 files changed, 46 insertions(+), 3 deletions(-)
 create mode 100644 test/parallel/test-async-local-storage-http-parser-leak.js

diff --git a/src/async_wrap.cc b/src/async_wrap.cc
index 301f77c419f178..69e385d69e9c1c 100644
--- a/src/async_wrap.cc
+++ b/src/async_wrap.cc
@@ -25,6 +25,9 @@
 #include "env-inl.h"
 #include "node_errors.h"
 #include "node_external_reference.h"
+#ifdef DEBUG
+#include <node_process-inl.h>
+#endif
 #include "tracing/traced_value.h"
 #include "util-inl.h"
 
@@ -333,9 +336,12 @@ void AsyncWrap::EmitDestroy(bool from_gc) {
   // Ensure no double destroy is emitted via AsyncReset().
   async_id_ = kInvalidAsyncId;
 
-  if (!persistent().IsEmpty() && !from_gc) {
-    HandleScope handle_scope(env()->isolate());
-    USE(object()->Set(env()->context(), env()->resource_symbol(), object()));
+  if (!from_gc) {
+    if (!persistent().IsEmpty()) {
+      HandleScope handle_scope(env()->isolate());
+      USE(object()->Set(env()->context(), env()->resource_symbol(), object()));
+    }
+    context_frame_.Reset();
   }
 }
 
@@ -659,6 +665,14 @@ MaybeLocal<Value> AsyncWrap::MakeCallback(const Local<Function> cb,
                                           Local<Value>* argv) {
   EmitTraceEventBefore();
 
+#ifdef DEBUG
+  if (context_frame_.IsEmpty()) {
+    ProcessEmitWarning(env(),
+                       "MakeCallback() called without context_frame, "
+                       "likely use after destroy of AsyncWrap.");
+  }
+#endif
+
   ProviderType provider = provider_type();
   async_context context { get_async_id(), get_trigger_async_id() };
   MaybeLocal<Value> ret =
diff --git a/test/parallel/test-async-local-storage-http-parser-leak.js b/test/parallel/test-async-local-storage-http-parser-leak.js
new file mode 100644
index 00000000000000..2992db7c73f575
--- /dev/null
+++ b/test/parallel/test-async-local-storage-http-parser-leak.js
@@ -0,0 +1,29 @@
+// Flags: --expose-gc
+'use strict';
+
+const common = require('../common');
+const { onGC } = require('../common/gc');
+const assert = require('node:assert');
+const { AsyncLocalStorage } = require('node:async_hooks');
+const { freeParser, parsers, HTTPParser } = require('_http_common');
+
+let storeGCed = false;
+
+const als = new AsyncLocalStorage();
+
+function test() {
+  const store = {};
+  onGC(store, { ongc: common.mustCall(() => { storeGCed = true; }) });
+  let parser;
+  als.run(store, common.mustCall(() => {
+    parser = parsers.alloc();
+    parser.initialize(HTTPParser.RESPONSE, {});
+  }));
+  freeParser(parser);
+}
+
+test();
+global.gc();
+setImmediate(common.mustCall(() => {
+  assert.ok(storeGCed);
+}));

From 42057c84e2e48176bf886eedf6c2f688d3651e90 Mon Sep 17 00:00:00 2001
From: Joyee Cheung <joyeec9h3@gmail.com>
Date: Tue, 3 Mar 2026 17:33:28 +0100
Subject: [PATCH 148/267] doc,module: add missing doc for
 syncHooks.deregister()

PR-URL: https://github.com/nodejs/node/pull/61959
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
---
 doc/api/module.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 64 insertions(+), 1 deletion(-)

diff --git a/doc/api/module.md b/doc/api/module.md
index 97aec1bbd61edb..c48f7dac40881d 100644
--- a/doc/api/module.md
+++ b/doc/api/module.md
@@ -234,9 +234,14 @@ changes:
 * `options` {Object}
   * `load` {Function|undefined} See [load hook][]. **Default:** `undefined`.
   * `resolve` {Function|undefined} See [resolve hook][]. **Default:** `undefined`.
+* Returns: {Object} An object with the following property:
+  * `deregister()` {Function} Remove the registered hooks so that they are no
+    longer called. Hooks are otherwise retained for the lifetime of the running
+    process.
 
 Register [hooks][] that customize Node.js module resolution and loading behavior.
-See [Customization hooks][].
+See [Customization hooks][]. The returned object can be used to
+[deregister the hooks][deregistration of synchronous customization hooks].
 
 ### `module.stripTypeScriptTypes(code[, options])`
 
@@ -798,6 +803,63 @@ hook to signal that the chain is intentionally ending at your hook.
 If a hook should be applied when loading other hook modules, the other hook
 modules should be loaded after the hook is registered.
 
+#### Deregistration of synchronous customization hooks
+
+The object returned by `registerHooks()` has a `deregister()` method that can be
+used to remove the hooks from the chain. Once `deregister()` is called, the hooks
+will no longer be invoked during module resolution or loading.
+
+This is currently only available for synchronous hooks registered via `registerHooks()`, not for asynchronous
+hooks registered via `module.register()`.
+
+```mjs
+import { registerHooks } from 'node:module';
+
+const hooks = registerHooks({
+  resolve(specifier, context, nextResolve) {
+    console.log('resolve hook called for', specifier);
+    return nextResolve(specifier, context);
+  },
+  load(url, context, nextLoad) {
+    return nextLoad(url, context);
+  },
+});
+
+// At this point, the hooks are active and will be called for
+// any subsequent import() or require() calls.
+await import('./my-module.mjs');
+
+// Later, remove the hooks from the chain.
+hooks.deregister();
+
+// Subsequent loads will no longer trigger the hooks.
+await import('./another-module.mjs');
+```
+
+```cjs
+const { registerHooks } = require('node:module');
+
+const hooks = registerHooks({
+  resolve(specifier, context, nextResolve) {
+    console.log('resolve hook called for', specifier);
+    return nextResolve(specifier, context);
+  },
+  load(url, context, nextLoad) {
+    return nextLoad(url, context);
+  },
+});
+
+// At this point, the hooks are active and will be called for
+// any subsequent require() calls.
+require('./my-module.cjs');
+
+// Later, remove the hooks from the chain.
+hooks.deregister();
+
+// Subsequent loads will no longer trigger the hooks.
+require('./another-module.cjs');
+```
+
 #### Hook functions accepted by `module.registerHooks()`
 
 <!-- YAML
@@ -2029,6 +2091,7 @@ returned object contains the following keys:
 [asynchronous `resolve` hook]: #asynchronous-resolvespecifier-context-nextresolve
 [asynchronous hook functions]: #asynchronous-hooks-accepted-by-moduleregister
 [caveats of asynchronous customization hooks]: #caveats-of-asynchronous-customization-hooks
+[deregistration of synchronous customization hooks]: #deregistration-of-synchronous-customization-hooks
 [hooks]: #customization-hooks
 [load hook]: #synchronous-loadurl-context-nextload
 [module compile cache]: #module-compile-cache

From 59ad1e45030a2e0ee32970e3a26ca866d4c68abb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= <jlhwung@gmail.com>
Date: Tue, 3 Mar 2026 12:14:32 -0500
Subject: [PATCH 149/267] tools: bump eslint to v10, babel to v8.0.0-rc.2

PR-URL: https://github.com/nodejs/node/pull/61905
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
---
 doc/api/perf_hooks.md                         |   2 +
 doc/api/single-executable-applications.md     |   2 +
 eslint.config.mjs                             |   8 +-
 lib/internal/modules/cjs/loader.js            |   4 +-
 test/common/sea.js                            |  10 +-
 test/es-module/test-esm-detect-ambiguous.mjs  |   1 +
 .../eslint-rules/prefer-optional-chaining.js  |   2 +-
 tools/eslint-rules/require-common-first.js    |  13 +-
 tools/eslint-rules/required-modules.js        |  10 +-
 tools/eslint/package-lock.json                | 852 ++++++++----------
 tools/eslint/package.json                     |  15 +-
 11 files changed, 389 insertions(+), 530 deletions(-)

diff --git a/doc/api/perf_hooks.md b/doc/api/perf_hooks.md
index 6d11ae5ec9c08c..5c838da9b3f2db 100644
--- a/doc/api/perf_hooks.md
+++ b/doc/api/perf_hooks.md
@@ -2191,6 +2191,8 @@ const timedImport = performance.timerify(async (module) => {
 await timedImport('some-module');
 ```
 
+<!-- eslint-disable no-global-assign -->
+
 ```cjs
 'use strict';
 const {
diff --git a/doc/api/single-executable-applications.md b/doc/api/single-executable-applications.md
index 5e92923f4d831e..b0f57a2efc81f6 100644
--- a/doc/api/single-executable-applications.md
+++ b/doc/api/single-executable-applications.md
@@ -459,6 +459,8 @@ This also ensures a more deterministic dependency graph.
 
 However, if a file based `require()` is still needed, that can also be achieved:
 
+<!-- eslint-disable no-global-assign -->
+
 ```js
 const { createRequire } = require('node:module');
 require = createRequire(__filename);
diff --git a/eslint.config.mjs b/eslint.config.mjs
index ef11ccb28cab08..cd66c1392b68c7 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -85,10 +85,9 @@ export default [
   js.configs.recommended,
   jsdoc.configs['flat/recommended'],
   {
-    files: ['**/*.{js,cjs}'],
+    files: ['**/*.js'],
     languageOptions: {
-      // The default is `commonjs` but it's not supported by the Babel parser.
-      sourceType: 'script',
+      sourceType: 'commonjs',
     },
   },
   {
@@ -101,7 +100,6 @@ export default [
       parser: babelEslintParser,
       parserOptions: {
         babelOptions: {
-          parserOpts: { createImportExpressions: true },
           plugins: [
             babelPluginSyntaxImportSource,
           ],
@@ -229,6 +227,7 @@ export default [
         ...noRestrictedSyntaxCommonLib,
       ],
       'no-self-compare': 'error',
+      'no-shadow-restricted-names': ['error', { reportGlobalThis: false }],
       'no-template-curly-in-string': 'error',
       'no-throw-literal': 'error',
       'no-undef': ['error', { typeof: true }],
@@ -256,6 +255,7 @@ export default [
 
       // ESLint recommended rules that we disable.
       'no-inner-declarations': 'off',
+      'no-useless-assignment': 'off',
 
       // JSDoc rules.
       'jsdoc/require-jsdoc': 'off',
diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
index 493efd5feb57a6..df656b86016a87 100644
--- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js
@@ -1799,8 +1799,6 @@ Module.prototype._compile = function(content, filename, format) {
     }
   }
 
-  let redirects;
-
   let compiledWrapper;
   if (format !== 'module') {
     const result = wrapSafe(filename, content, this, format);
@@ -1816,7 +1814,7 @@ Module.prototype._compile = function(content, filename, format) {
   }
 
   const dirname = path.dirname(filename);
-  const require = makeRequireFunction(this, redirects);
+  const require = makeRequireFunction(this);
   let result;
   const exports = this.exports;
   const thisValue = exports;
diff --git a/test/common/sea.js b/test/common/sea.js
index 2ba5de286fdddb..5f3741e0117cc5 100644
--- a/test/common/sea.js
+++ b/test/common/sea.js
@@ -94,7 +94,7 @@ function generateSEA(fixtureDir, options = {}) {
   } catch (e) {
     const message = `Cannot copy ${process.execPath} to ${outputFile}: ${inspect(e)}`;
     if (verifyWorkflow) {
-      throw new Error(message);
+      throw new Error(message, { cause: e });
     }
     common.skip(message);
   }
@@ -132,7 +132,7 @@ function generateSEA(fixtureDir, options = {}) {
   } catch (e) {
     const message = `Cannot inject ${seaPrepBlob} into ${outputFile}: ${inspect(e)}`;
     if (verifyWorkflow) {
-      throw new Error(message);
+      throw new Error(message, { cause: e });
     }
     common.skip(message);
   }
@@ -150,7 +150,7 @@ function signSEA(targetExecutable, verifyWorkflow = false) {
     } catch (e) {
       const message = `Cannot sign ${targetExecutable}: ${inspect(e)}`;
       if (verifyWorkflow) {
-        throw new Error(message);
+        throw new Error(message, { cause: e });
       }
       common.skip(message);
     }
@@ -161,7 +161,7 @@ function signSEA(targetExecutable, verifyWorkflow = false) {
     } catch (e) {
       const message = `Cannot find signtool: ${inspect(e)}`;
       if (verifyWorkflow) {
-        throw new Error(message);
+        throw new Error(message, { cause: e });
       }
       common.skip(message);
     }
@@ -172,7 +172,7 @@ function signSEA(targetExecutable, verifyWorkflow = false) {
     } catch (e) {
       const message = `Cannot sign ${targetExecutable}: ${inspect(e)}\n${stderr}`;
       if (verifyWorkflow) {
-        throw new Error(message);
+        throw new Error(message, { cause: e });
       }
       common.skip(message);
     }
diff --git a/test/es-module/test-esm-detect-ambiguous.mjs b/test/es-module/test-esm-detect-ambiguous.mjs
index 4b2544c42cfbae..170b1569382808 100644
--- a/test/es-module/test-esm-detect-ambiguous.mjs
+++ b/test/es-module/test-esm-detect-ambiguous.mjs
@@ -147,6 +147,7 @@ describe('Module syntax detection', { concurrency: !process.env.TEST_PARALLEL },
     }
 
     it('should not hint wrong format in resolve hook', async () => {
+      // eslint-disable-next-line no-unassigned-vars
       let writeSync;
       const { stdout, stderr, code, signal } = await spawnPromisified(process.execPath, [
         '--no-warnings',
diff --git a/tools/eslint-rules/prefer-optional-chaining.js b/tools/eslint-rules/prefer-optional-chaining.js
index a460ec51bff391..ac3a54ffd4d5a4 100644
--- a/tools/eslint-rules/prefer-optional-chaining.js
+++ b/tools/eslint-rules/prefer-optional-chaining.js
@@ -15,7 +15,7 @@ module.exports = {
   },
 
   create(context) {
-    const sourceCode = context.getSourceCode();
+    const sourceCode = context.sourceCode;
 
     // Helper function: Checks if two nodes have identical tokens
     function equalTokens(left, right) {
diff --git a/tools/eslint-rules/require-common-first.js b/tools/eslint-rules/require-common-first.js
index ffa5e943fac89f..8e387cdbfc3290 100644
--- a/tools/eslint-rules/require-common-first.js
+++ b/tools/eslint-rules/require-common-first.js
@@ -49,12 +49,13 @@ module.exports = {
       // The common module should be loaded in the first place.
         const notLoadedFirst = foundModules.indexOf(requiredModule) !== 0;
         if (notLoadedFirst) {
-          context.report(
-            node,
-            'Mandatory module "{{moduleName}}" must be loaded ' +
-          'before any other modules.',
-            { moduleName: requiredModule },
-          );
+          context.report({
+            node: node.body[0] ?? node,
+            message:
+              'Mandatory module "{{moduleName}}" must be loaded ' +
+              'before any other modules.',
+            data: { moduleName: requiredModule },
+          });
         }
       },
     };
diff --git a/tools/eslint-rules/required-modules.js b/tools/eslint-rules/required-modules.js
index f86b1bc2871e1a..b0def92a1ec5b1 100644
--- a/tools/eslint-rules/required-modules.js
+++ b/tools/eslint-rules/required-modules.js
@@ -66,11 +66,11 @@ module.exports = {
             ([module]) => foundModules.indexOf(module) === -1,
           );
           missingModules.forEach(([moduleName]) => {
-            context.report(
-              node,
-              'Mandatory module "{{moduleName}}" must be loaded.',
-              { moduleName: moduleName },
-            );
+            context.report({
+              node: node.body[0] ?? node,
+              message: 'Mandatory module "{{moduleName}}" must be loaded.',
+              data: { moduleName: moduleName },
+            });
           });
         }
       },
diff --git a/tools/eslint/package-lock.json b/tools/eslint/package-lock.json
index e2467e7d60a09d..515dfae3335769 100644
--- a/tools/eslint/package-lock.json
+++ b/tools/eslint/package-lock.json
@@ -8,294 +8,278 @@
       "name": "eslint-tools",
       "version": "0.0.0",
       "dependencies": {
-        "@babel/core": "^7.28.6",
-        "@babel/eslint-parser": "^7.28.6",
-        "@babel/plugin-syntax-import-source": "^7.28.6",
+        "@babel/core": "^8.0.0-rc.2",
+        "@babel/eslint-parser": "^8.0.0-rc.2",
+        "@babel/plugin-syntax-import-source": "^8.0.0-rc.2",
+        "@eslint/js": "^10.0.1",
         "@eslint/markdown": "^7.5.1",
-        "@stylistic/eslint-plugin": "^5.7.1",
-        "eslint": "^9.39.2",
+        "@stylistic/eslint-plugin": "^5.9.0",
+        "eslint": "^10.0.1",
         "eslint-formatter-tap": "^9.0.1",
-        "eslint-plugin-jsdoc": "^62.4.1",
-        "globals": "^17.2.0"
+        "eslint-plugin-jsdoc": "^62.7.0",
+        "globals": "^17.3.0"
       }
     },
     "node_modules/@babel/code-frame": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
-      "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0-rc.2.tgz",
+      "integrity": "sha512-zbPFBDbQdChkGN02WRc/BcOvZLDTctFJZVeWkciVr82T5V0GVBXztq4/Wi4Ca+ZKx7U+Kdt5b862cpFJ4Cjf1A==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-validator-identifier": "^7.28.5",
-        "js-tokens": "^4.0.0",
-        "picocolors": "^1.1.1"
+        "@babel/helper-validator-identifier": "^8.0.0-rc.2",
+        "js-tokens": "^10.0.0"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/compat-data": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
-      "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-8.0.0-rc.2.tgz",
+      "integrity": "sha512-zDrQeMrDVCkisxxjZmP+xeAyGfZCVOwP+7VECgOvMXttb+1pTUMpeEYI0LaozIzeES/Uvu7OqhHLb3oN1qo6Wg==",
       "license": "MIT",
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/core": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz",
-      "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.28.6",
-        "@babel/generator": "^7.28.6",
-        "@babel/helper-compilation-targets": "^7.28.6",
-        "@babel/helper-module-transforms": "^7.28.6",
-        "@babel/helpers": "^7.28.6",
-        "@babel/parser": "^7.28.6",
-        "@babel/template": "^7.28.6",
-        "@babel/traverse": "^7.28.6",
-        "@babel/types": "^7.28.6",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-8.0.0-rc.2.tgz",
+      "integrity": "sha512-mlBJdKJJEZNGDE+w+P6B5w+FTMkht1liPkxtB4wk39EpGH01Am5tg1htaNlOU5rO9Ge3psMjAFycpc3ru5uaQw==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/code-frame": "^8.0.0-rc.2",
+        "@babel/generator": "^8.0.0-rc.2",
+        "@babel/helper-compilation-targets": "^8.0.0-rc.2",
+        "@babel/helpers": "^8.0.0-rc.2",
+        "@babel/parser": "^8.0.0-rc.2",
+        "@babel/template": "^8.0.0-rc.2",
+        "@babel/traverse": "^8.0.0-rc.2",
+        "@babel/types": "^8.0.0-rc.2",
         "@jridgewell/remapping": "^2.3.5",
+        "@types/gensync": "^1.0.0",
         "convert-source-map": "^2.0.0",
-        "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.2",
+        "import-meta-resolve": "^4.2.0",
         "json5": "^2.2.3",
-        "semver": "^6.3.1"
+        "obug": "^2.1.1",
+        "semver": "^7.7.3"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/babel"
+      },
+      "peerDependencies": {
+        "@babel/preset-typescript": "^8.0.0-0"
+      },
+      "peerDependenciesMeta": {
+        "@babel/preset-typescript": {
+          "optional": true
+        }
       }
     },
     "node_modules/@babel/eslint-parser": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz",
-      "integrity": "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-8.0.0-rc.2.tgz",
+      "integrity": "sha512-hczs5f2oe/BjS3OpQb2ljVVsauEjBIR3UsTmIPNDECIz02olxaVYDHd4mk3GEx0N7PD8gsz2cZ6sqZTctVaMug==",
       "license": "MIT",
       "dependencies": {
-        "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
-        "eslint-visitor-keys": "^2.1.0",
-        "semver": "^6.3.1"
+        "eslint-scope": "^9.1.0",
+        "eslint-visitor-keys": "^5.0.0",
+        "semver": "^7.7.3"
       },
       "engines": {
-        "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
+        "node": "^20.19.0 || >=22.12.0"
       },
       "peerDependencies": {
-        "@babel/core": "^7.11.0",
-        "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0"
+        "@babel/core": "^8.0.0-rc.2",
+        "eslint": "^9.0.0 || ^10.0.0"
       }
     },
     "node_modules/@babel/generator": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.0.tgz",
-      "integrity": "sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0-rc.2.tgz",
+      "integrity": "sha512-oCQ1IKPwkzCeJzAPb7Fv8rQ9k5+1sG8mf2uoHiMInPYvkRfrDJxbTIbH51U+jstlkghus0vAi3EBvkfvEsYNLQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/parser": "^7.29.0",
-        "@babel/types": "^7.29.0",
+        "@babel/parser": "^8.0.0-rc.2",
+        "@babel/types": "^8.0.0-rc.2",
         "@jridgewell/gen-mapping": "^0.3.12",
         "@jridgewell/trace-mapping": "^0.3.28",
+        "@types/jsesc": "^2.5.0",
         "jsesc": "^3.0.2"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/helper-compilation-targets": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
-      "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-8.0.0-rc.2.tgz",
+      "integrity": "sha512-oMIhKru9gl3mj0eKDyKW6wBDAvyWoZd28d6V/m4JTeeiFsJLfOYnqu+s+cnK4jSo87cg/oj4hsATgkmZ3AzsDQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/compat-data": "^7.28.6",
-        "@babel/helper-validator-option": "^7.27.1",
+        "@babel/compat-data": "^8.0.0-rc.2",
+        "@babel/helper-validator-option": "^8.0.0-rc.2",
         "browserslist": "^4.24.0",
-        "lru-cache": "^5.1.1",
-        "semver": "^6.3.1"
+        "lru-cache": "^7.14.1",
+        "semver": "^7.7.3"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/helper-globals": {
-      "version": "7.28.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
-      "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-module-imports": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
-      "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-8.0.0-rc.2.tgz",
+      "integrity": "sha512-Q1AIOaW4EOxkI/8wYJKyLI59gfqTK3imFUfIqxuve0Q3GlOSrOTVmvHU6Gb3Y5GxtoS1hIzhO47k5GkfyGTQEQ==",
       "license": "MIT",
-      "dependencies": {
-        "@babel/traverse": "^7.28.6",
-        "@babel/types": "^7.28.6"
-      },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
-    "node_modules/@babel/helper-module-transforms": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
-      "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-8.0.0-rc.2.tgz",
+      "integrity": "sha512-APa2p8RHBNGUmNPDYshswXQkS2sMNthL8VZSc9soe5lQfT2RXRXM6TwOLaktQwnNSwdoEy+Xu9q3qMdFrV92sg==",
       "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.28.6",
-        "@babel/helper-validator-identifier": "^7.28.5",
-        "@babel/traverse": "^7.28.6"
-      },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       },
       "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-plugin-utils": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
-      "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
+        "@babel/core": "^8.0.0-rc.2"
       }
     },
     "node_modules/@babel/helper-string-parser": {
-      "version": "7.27.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
-      "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0-rc.2.tgz",
+      "integrity": "sha512-noLx87RwlBEMrTzncWd/FvTxoJ9+ycHNg0n8yyYydIoDsLZuxknKgWRJUqcrVkNrJ74uGyhWQzQaS3q8xfGAhQ==",
       "license": "MIT",
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/helper-validator-identifier": {
-      "version": "7.28.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
-      "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0-rc.2.tgz",
+      "integrity": "sha512-xExUBkuXWJjVuIbO7z6q7/BA9bgfJDEhVL0ggrggLMbg0IzCUWGT1hZGE8qUH7Il7/RD/a6cZ3AAFrrlp1LF/A==",
       "license": "MIT",
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/helper-validator-option": {
-      "version": "7.27.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
-      "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-8.0.0-rc.2.tgz",
+      "integrity": "sha512-EtxQopsocKue0ZdjnX5INoDiRN+RCBb1TDh3d0N8bM6aX0lyUhQfRNRQaKB+vCx+YvGjXWRf3JD6/YvTsf2qgQ==",
       "license": "MIT",
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/helpers": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz",
-      "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-8.0.0-rc.2.tgz",
+      "integrity": "sha512-Cc2IpMRiu8PDBUxtQ6oSkML0etJ27kZGnf3XE+qqAJJFGtVl549kyfvDWLywCAFhq16kHUe2WMZMdFUtPz6kWw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/template": "^7.28.6",
-        "@babel/types": "^7.28.6"
+        "@babel/template": "^8.0.0-rc.2",
+        "@babel/types": "^8.0.0-rc.2"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/parser": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
-      "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0-rc.2.tgz",
+      "integrity": "sha512-29AhEtcq4x8Dp3T72qvUMZHx0OMXCj4Jy/TEReQa+KWLln524Cj1fWb3QFi0l/xSpptQBR6y9RNEXuxpFvwiUQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/types": "^7.29.0"
+        "@babel/types": "^8.0.0-rc.2"
       },
       "bin": {
         "parser": "bin/babel-parser.js"
       },
       "engines": {
-        "node": ">=6.0.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/plugin-syntax-import-source": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-source/-/plugin-syntax-import-source-7.28.6.tgz",
-      "integrity": "sha512-lprDfFvdnplRDO3BZOXM/LuWQPLyYQ7M31HgjVOpmh+XLHakpDJOi8t4+2T/dk5ozlyz4nByIgE+0Xb4unYiOg==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-source/-/plugin-syntax-import-source-8.0.0-rc.2.tgz",
+      "integrity": "sha512-aB2h3oetnsvPM1RmH5sm17yuMiQ/vXx4YIJS1gaEWvFoZXrQol/lq/pFh4zVp9Y7uB2XfOOxjAigq9vwrMyIBA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.28.6"
+        "@babel/helper-plugin-utils": "^8.0.0-rc.2"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       },
       "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "@babel/core": "^8.0.0-rc.2"
       }
     },
     "node_modules/@babel/template": {
-      "version": "7.28.6",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
-      "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0-rc.2.tgz",
+      "integrity": "sha512-INp+KufeQpvU+V+gxR7xoiVzU6sRRQo8oOsCU/sTe0wtJ/Adrfgyet0i19qvXXSeuyiZ9+PV8IF/eEPzyJ527g==",
       "license": "MIT",
       "dependencies": {
-        "@babel/code-frame": "^7.28.6",
-        "@babel/parser": "^7.28.6",
-        "@babel/types": "^7.28.6"
+        "@babel/code-frame": "^8.0.0-rc.2",
+        "@babel/parser": "^8.0.0-rc.2",
+        "@babel/types": "^8.0.0-rc.2"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/traverse": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
-      "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-8.0.0-rc.2.tgz",
+      "integrity": "sha512-H9ZChE8gRy4fSloEQaT17ijcFNoayS9JIyE0IUWkjYgldU+Czkg2h5XtuJmfIk6cbuHfDK/FFJox+g/TlmXB7g==",
       "license": "MIT",
       "dependencies": {
-        "@babel/code-frame": "^7.29.0",
-        "@babel/generator": "^7.29.0",
-        "@babel/helper-globals": "^7.28.0",
-        "@babel/parser": "^7.29.0",
-        "@babel/template": "^7.28.6",
-        "@babel/types": "^7.29.0",
-        "debug": "^4.3.1"
+        "@babel/code-frame": "^8.0.0-rc.2",
+        "@babel/generator": "^8.0.0-rc.2",
+        "@babel/helper-globals": "^8.0.0-rc.2",
+        "@babel/parser": "^8.0.0-rc.2",
+        "@babel/template": "^8.0.0-rc.2",
+        "@babel/types": "^8.0.0-rc.2",
+        "obug": "^2.1.1"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/types": {
-      "version": "7.29.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
-      "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
+      "version": "8.0.0-rc.2",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0-rc.2.tgz",
+      "integrity": "sha512-91gAaWRznDwSX4E2tZ1YjBuIfnQVOFDCQ2r0Toby0gu4XEbyF623kXLMA8d4ZbCu+fINcrudkmEcwSUHgDDkNw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-string-parser": "^7.27.1",
-        "@babel/helper-validator-identifier": "^7.28.5"
+        "@babel/helper-string-parser": "^8.0.0-rc.2",
+        "@babel/helper-validator-identifier": "^8.0.0-rc.2"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@es-joy/jsdoccomment": {
-      "version": "0.83.0",
-      "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.83.0.tgz",
-      "integrity": "sha512-e1MHSEPJ4m35zkBvNT6kcdeH1SvMaJDsPC3Xhfseg3hvF50FUE3f46Yn36jgbrPYYXezlWUQnevv23c+lx2MCA==",
+      "version": "0.84.0",
+      "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.84.0.tgz",
+      "integrity": "sha512-0xew1CxOam0gV5OMjh2KjFQZsKL2bByX1+q4j3E73MpYIdyUxcZb/xQct9ccUb+ve5KGUYbCUxyPnYB7RbuP+w==",
       "license": "MIT",
       "dependencies": {
         "@types/estree": "^1.0.8",
-        "@typescript-eslint/types": "^8.53.1",
+        "@typescript-eslint/types": "^8.54.0",
         "comment-parser": "1.4.5",
         "esquery": "^1.7.0",
-        "jsdoc-type-pratt-parser": "~7.1.0"
+        "jsdoc-type-pratt-parser": "~7.1.1"
       },
       "engines": {
         "node": "^20.19.0 || ^22.13.0 || >=24"
@@ -350,88 +334,73 @@
       }
     },
     "node_modules/@eslint/config-array": {
-      "version": "0.21.1",
-      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz",
-      "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==",
+      "version": "0.23.2",
+      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.2.tgz",
+      "integrity": "sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@eslint/object-schema": "^2.1.7",
+        "@eslint/object-schema": "^3.0.2",
         "debug": "^4.3.1",
-        "minimatch": "^3.1.2"
+        "minimatch": "^10.2.1"
       },
       "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+        "node": "^20.19.0 || ^22.13.0 || >=24"
       }
     },
     "node_modules/@eslint/config-helpers": {
-      "version": "0.4.2",
-      "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz",
-      "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==",
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz",
+      "integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@eslint/core": "^0.17.0"
+        "@eslint/core": "^1.1.0"
       },
       "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+        "node": "^20.19.0 || ^22.13.0 || >=24"
       }
     },
-    "node_modules/@eslint/core": {
-      "version": "0.17.0",
-      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
-      "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
+    "node_modules/@eslint/config-helpers/node_modules/@eslint/core": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz",
+      "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==",
       "license": "Apache-2.0",
       "dependencies": {
         "@types/json-schema": "^7.0.15"
       },
       "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+        "node": "^20.19.0 || ^22.13.0 || >=24"
       }
     },
-    "node_modules/@eslint/eslintrc": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz",
-      "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==",
-      "license": "MIT",
+    "node_modules/@eslint/core": {
+      "version": "0.17.0",
+      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
+      "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
+      "license": "Apache-2.0",
       "dependencies": {
-        "ajv": "^6.12.4",
-        "debug": "^4.3.2",
-        "espree": "^10.0.1",
-        "globals": "^14.0.0",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.2.1",
-        "js-yaml": "^4.1.1",
-        "minimatch": "^3.1.2",
-        "strip-json-comments": "^3.1.1"
+        "@types/json-schema": "^7.0.15"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/@eslint/eslintrc/node_modules/globals": {
-      "version": "14.0.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
-      "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/@eslint/js": {
-      "version": "9.39.2",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz",
-      "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==",
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz",
+      "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==",
       "license": "MIT",
       "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+        "node": "^20.19.0 || ^22.13.0 || >=24"
       },
       "funding": {
         "url": "https://eslint.org/donate"
+      },
+      "peerDependencies": {
+        "eslint": "^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "eslint": {
+          "optional": true
+        }
       }
     },
     "node_modules/@eslint/markdown": {
@@ -458,12 +427,12 @@
       }
     },
     "node_modules/@eslint/object-schema": {
-      "version": "2.1.7",
-      "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz",
-      "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.2.tgz",
+      "integrity": "sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==",
       "license": "Apache-2.0",
       "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+        "node": "^20.19.0 || ^22.13.0 || >=24"
       }
     },
     "node_modules/@eslint/plugin-kit": {
@@ -572,15 +541,6 @@
         "@jridgewell/sourcemap-codec": "^1.4.14"
       }
     },
-    "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
-      "version": "5.1.1-v1",
-      "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
-      "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
-      "license": "MIT",
-      "dependencies": {
-        "eslint-scope": "5.1.1"
-      }
-    },
     "node_modules/@sindresorhus/base62": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz",
@@ -594,13 +554,13 @@
       }
     },
     "node_modules/@stylistic/eslint-plugin": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.7.1.tgz",
-      "integrity": "sha512-zjTUwIsEfT+k9BmXwq1QEFYsb4afBlsI1AXFyWQBgggMzwBFOuu92pGrE5OFx90IOjNl+lUbQoTG7f8S0PkOdg==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.9.0.tgz",
+      "integrity": "sha512-FqqSkvDMYJReydrMhlugc71M76yLLQWNfmGq+SIlLa7N3kHp8Qq8i2PyWrVNAfjOyOIY+xv9XaaYwvVW7vroMA==",
       "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.9.1",
-        "@typescript-eslint/types": "^8.53.1",
+        "@typescript-eslint/types": "^8.56.0",
         "eslint-visitor-keys": "^4.2.1",
         "espree": "^10.4.0",
         "estraverse": "^5.3.0",
@@ -610,7 +570,7 @@
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       "peerDependencies": {
-        "eslint": ">=9.0.0"
+        "eslint": "^9.0.0 || ^10.0.0"
       }
     },
     "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": {
@@ -634,12 +594,30 @@
         "@types/ms": "*"
       }
     },
+    "node_modules/@types/esrecurse": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz",
+      "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==",
+      "license": "MIT"
+    },
     "node_modules/@types/estree": {
       "version": "1.0.8",
       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
       "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
       "license": "MIT"
     },
+    "node_modules/@types/gensync": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.4.tgz",
+      "integrity": "sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==",
+      "license": "MIT"
+    },
+    "node_modules/@types/jsesc": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/@types/jsesc/-/jsesc-2.5.1.tgz",
+      "integrity": "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==",
+      "license": "MIT"
+    },
     "node_modules/@types/json-schema": {
       "version": "7.0.15",
       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
@@ -668,9 +646,9 @@
       "license": "MIT"
     },
     "node_modules/@typescript-eslint/types": {
-      "version": "8.54.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz",
-      "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==",
+      "version": "8.56.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.0.tgz",
+      "integrity": "sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==",
       "license": "MIT",
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -681,10 +659,11 @@
       }
     },
     "node_modules/acorn": {
-      "version": "8.15.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
-      "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+      "version": "8.16.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+      "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
       "license": "MIT",
+      "peer": true,
       "bin": {
         "acorn": "bin/acorn"
       },
@@ -702,9 +681,9 @@
       }
     },
     "node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "version": "6.14.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+      "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
       "license": "MIT",
       "dependencies": {
         "fast-deep-equal": "^3.1.1",
@@ -717,21 +696,6 @@
         "url": "https://github.com/sponsors/epoberezkin"
       }
     },
-    "node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
     "node_modules/are-docs-informative": {
       "version": "0.0.2",
       "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz",
@@ -748,28 +712,36 @@
       "license": "Python-2.0"
     },
     "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "license": "MIT"
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz",
+      "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==",
+      "license": "MIT",
+      "engines": {
+        "node": "20 || >=22"
+      }
     },
     "node_modules/baseline-browser-mapping": {
-      "version": "2.9.19",
-      "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
-      "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==",
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz",
+      "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==",
       "license": "Apache-2.0",
       "bin": {
-        "baseline-browser-mapping": "dist/cli.js"
+        "baseline-browser-mapping": "dist/cli.cjs"
+      },
+      "engines": {
+        "node": ">=6.0.0"
       }
     },
     "node_modules/brace-expansion": {
-      "version": "1.1.12",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
-      "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz",
+      "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==",
       "license": "MIT",
       "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
+        "balanced-match": "^4.0.2"
+      },
+      "engines": {
+        "node": "20 || >=22"
       }
     },
     "node_modules/browserslist": {
@@ -791,6 +763,7 @@
         }
       ],
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "baseline-browser-mapping": "^2.9.0",
         "caniuse-lite": "^1.0.30001759",
@@ -805,19 +778,10 @@
         "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
       }
     },
-    "node_modules/callsites": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001766",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz",
-      "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==",
+      "version": "1.0.30001770",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz",
+      "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==",
       "funding": [
         {
           "type": "opencollective",
@@ -844,22 +808,6 @@
         "url": "https://github.com/sponsors/wooorm"
       }
     },
-    "node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
     "node_modules/character-entities": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
@@ -870,24 +818,6 @@
         "url": "https://github.com/sponsors/wooorm"
       }
     },
-    "node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "license": "MIT"
-    },
     "node_modules/comment-parser": {
       "version": "1.4.5",
       "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.5.tgz",
@@ -897,12 +827,6 @@
         "node": ">= 12.0.0"
       }
     },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "license": "MIT"
-    },
     "node_modules/convert-source-map": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
@@ -982,9 +906,9 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.5.283",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz",
-      "integrity": "sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==",
+      "version": "1.5.302",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz",
+      "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==",
       "license": "ISC"
     },
     "node_modules/escalade": {
@@ -1009,32 +933,30 @@
       }
     },
     "node_modules/eslint": {
-      "version": "9.39.2",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz",
-      "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.1.tgz",
+      "integrity": "sha512-20MV9SUdeN6Jd84xESsKhRly+/vxI+hwvpBMA93s+9dAcjdCuCojn4IqUGS3lvVaqjVYGYHSRMCpeFtF2rQYxQ==",
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.8.0",
-        "@eslint-community/regexpp": "^4.12.1",
-        "@eslint/config-array": "^0.21.1",
-        "@eslint/config-helpers": "^0.4.2",
-        "@eslint/core": "^0.17.0",
-        "@eslint/eslintrc": "^3.3.1",
-        "@eslint/js": "9.39.2",
-        "@eslint/plugin-kit": "^0.4.1",
+        "@eslint-community/regexpp": "^4.12.2",
+        "@eslint/config-array": "^0.23.2",
+        "@eslint/config-helpers": "^0.5.2",
+        "@eslint/core": "^1.1.0",
+        "@eslint/plugin-kit": "^0.6.0",
         "@humanfs/node": "^0.16.6",
         "@humanwhocodes/module-importer": "^1.0.1",
         "@humanwhocodes/retry": "^0.4.2",
         "@types/estree": "^1.0.6",
         "ajv": "^6.12.4",
-        "chalk": "^4.0.0",
         "cross-spawn": "^7.0.6",
         "debug": "^4.3.2",
         "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^8.4.0",
-        "eslint-visitor-keys": "^4.2.1",
-        "espree": "^10.4.0",
-        "esquery": "^1.5.0",
+        "eslint-scope": "^9.1.1",
+        "eslint-visitor-keys": "^5.0.1",
+        "espree": "^11.1.1",
+        "esquery": "^1.7.0",
         "esutils": "^2.0.2",
         "fast-deep-equal": "^3.1.3",
         "file-entry-cache": "^8.0.0",
@@ -1044,8 +966,7 @@
         "imurmurhash": "^0.1.4",
         "is-glob": "^4.0.0",
         "json-stable-stringify-without-jsonify": "^1.0.1",
-        "lodash.merge": "^4.6.2",
-        "minimatch": "^3.1.2",
+        "minimatch": "^10.2.1",
         "natural-compare": "^1.4.0",
         "optionator": "^0.9.3"
       },
@@ -1053,7 +974,7 @@
         "eslint": "bin/eslint.js"
       },
       "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+        "node": "^20.19.0 || ^22.13.0 || >=24"
       },
       "funding": {
         "url": "https://eslint.org/donate"
@@ -1080,12 +1001,12 @@
       }
     },
     "node_modules/eslint-plugin-jsdoc": {
-      "version": "62.4.1",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.4.1.tgz",
-      "integrity": "sha512-HgX2iN4j104D/mCUqRbhtzSZbph+KO9jfMHiIJjJ19Q+IwLQ5Na2IqvOJYq4S+4kgvEk1w6KYF4vVus6H2wcHg==",
+      "version": "62.7.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.7.0.tgz",
+      "integrity": "sha512-jootujJOIGMkCLN+/WgDFKtaclCt2MEEy9cZ1RyK19Az1JvVI3awbeMXNlJ6y4h8RWIJpcXqmxsu4t9NThYbNw==",
       "license": "BSD-3-Clause",
       "dependencies": {
-        "@es-joy/jsdoccomment": "~0.83.0",
+        "@es-joy/jsdoccomment": "~0.84.0",
         "@es-joy/resolve.exports": "1.2.0",
         "are-docs-informative": "^0.0.2",
         "comment-parser": "1.4.5",
@@ -1096,7 +1017,7 @@
         "html-entities": "^2.6.0",
         "object-deep-merge": "^2.0.0",
         "parse-imports-exports": "^0.2.4",
-        "semver": "^7.7.3",
+        "semver": "^7.7.4",
         "spdx-expression-parse": "^4.0.0",
         "to-valid-identifier": "^1.0.0"
       },
@@ -1104,30 +1025,18 @@
         "node": "^20.19.0 || ^22.13.0 || >=24"
       },
       "peerDependencies": {
-        "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz",
-      "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==",
-      "license": "Apache-2.0",
-      "engines": {
-        "node": "^20.19.0 || ^22.13.0 || >=24"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
+        "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0"
       }
     },
     "node_modules/eslint-plugin-jsdoc/node_modules/espree": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.0.tgz",
-      "integrity": "sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==",
+      "version": "11.1.1",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz",
+      "integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==",
       "license": "BSD-2-Clause",
       "dependencies": {
-        "acorn": "^8.15.0",
+        "acorn": "^8.16.0",
         "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^5.0.0"
+        "eslint-visitor-keys": "^5.0.1"
       },
       "engines": {
         "node": "^20.19.0 || ^22.13.0 || >=24"
@@ -1136,72 +1045,73 @@
         "url": "https://opencollective.com/eslint"
       }
     },
-    "node_modules/eslint-plugin-jsdoc/node_modules/semver": {
-      "version": "7.7.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
-      "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/eslint-scope": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
-      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "version": "9.1.1",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz",
+      "integrity": "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==",
       "license": "BSD-2-Clause",
       "dependencies": {
+        "@types/esrecurse": "^4.3.1",
+        "@types/estree": "^1.0.8",
         "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
+        "estraverse": "^5.2.0"
       },
       "engines": {
-        "node": ">=8.0.0"
+        "node": "^20.19.0 || ^22.13.0 || >=24"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
       }
     },
-    "node_modules/eslint-scope/node_modules/estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-      "license": "BSD-2-Clause",
+    "node_modules/eslint-visitor-keys": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+      "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
+      "license": "Apache-2.0",
       "engines": {
-        "node": ">=4.0"
+        "node": "^20.19.0 || ^22.13.0 || >=24"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
       }
     },
-    "node_modules/eslint-visitor-keys": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
-      "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+    "node_modules/eslint/node_modules/@eslint/core": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz",
+      "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==",
       "license": "Apache-2.0",
+      "dependencies": {
+        "@types/json-schema": "^7.0.15"
+      },
       "engines": {
-        "node": ">=10"
+        "node": "^20.19.0 || ^22.13.0 || >=24"
       }
     },
-    "node_modules/eslint/node_modules/eslint-scope": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
-      "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
-      "license": "BSD-2-Clause",
+    "node_modules/eslint/node_modules/@eslint/plugin-kit": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz",
+      "integrity": "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==",
+      "license": "Apache-2.0",
       "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^5.2.0"
+        "@eslint/core": "^1.1.0",
+        "levn": "^0.4.1"
       },
       "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
+        "node": "^20.19.0 || ^22.13.0 || >=24"
       }
     },
-    "node_modules/eslint/node_modules/eslint-visitor-keys": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
-      "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
-      "license": "Apache-2.0",
+    "node_modules/eslint/node_modules/espree": {
+      "version": "11.1.1",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz",
+      "integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "acorn": "^8.16.0",
+        "acorn-jsx": "^5.3.2",
+        "eslint-visitor-keys": "^5.0.1"
+      },
       "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+        "node": "^20.19.0 || ^22.13.0 || >=24"
       },
       "funding": {
         "url": "https://opencollective.com/eslint"
@@ -1392,9 +1302,9 @@
       }
     },
     "node_modules/globals": {
-      "version": "17.2.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-17.2.0.tgz",
-      "integrity": "sha512-tovnCz/fEq+Ripoq+p/gN1u7l6A7wwkoBT9pRCzTHzsD/LvADIzXZdjmRymh5Ztf0DYC3Rwg5cZRYjxzBmzbWg==",
+      "version": "17.3.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz",
+      "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==",
       "license": "MIT",
       "engines": {
         "node": ">=18"
@@ -1403,15 +1313,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/html-entities": {
       "version": "2.6.0",
       "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz",
@@ -1437,20 +1338,14 @@
         "node": ">= 4"
       }
     },
-    "node_modules/import-fresh": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
-      "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+    "node_modules/import-meta-resolve": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz",
+      "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==",
       "license": "MIT",
-      "dependencies": {
-        "parent-module": "^1.0.0",
-        "resolve-from": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
       "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
       }
     },
     "node_modules/imurmurhash": {
@@ -1490,9 +1385,9 @@
       "license": "ISC"
     },
     "node_modules/js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "version": "10.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz",
+      "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==",
       "license": "MIT"
     },
     "node_modules/js-yaml": {
@@ -1508,9 +1403,9 @@
       }
     },
     "node_modules/jsdoc-type-pratt-parser": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.1.0.tgz",
-      "integrity": "sha512-SX7q7XyCwzM/MEDCYz0l8GgGbJAACGFII9+WfNYr5SLEKukHWRy2Jk3iWRe7P+lpYJNs7oQ+OSei4JtKGUjd7A==",
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.1.1.tgz",
+      "integrity": "sha512-/2uqY7x6bsrpi3i9LVU6J89352C0rpMk0as8trXxCtvd4kPk1ke/Eyif6wqfSLvoNJqcDG9Vk4UsXgygzCt2xA==",
       "license": "MIT",
       "engines": {
         "node": ">=20.0.0"
@@ -1595,12 +1490,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/lodash.merge": {
-      "version": "4.6.2",
-      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-      "license": "MIT"
-    },
     "node_modules/longest-streak": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
@@ -1612,12 +1501,12 @@
       }
     },
     "node_modules/lru-cache": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "version": "7.18.3",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+      "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
       "license": "ISC",
-      "dependencies": {
-        "yallist": "^3.0.2"
+      "engines": {
+        "node": ">=12"
       }
     },
     "node_modules/markdown-table": {
@@ -2441,15 +2330,18 @@
       "license": "MIT"
     },
     "node_modules/minimatch": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz",
-      "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==",
-      "license": "ISC",
+      "version": "10.2.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
+      "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
+      "license": "BlueOak-1.0.0",
       "dependencies": {
-        "brace-expansion": "^1.1.7"
+        "brace-expansion": "^5.0.2"
       },
       "engines": {
-        "node": "*"
+        "node": "18 || 20 || >=22"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
       }
     },
     "node_modules/ms": {
@@ -2476,6 +2368,16 @@
       "integrity": "sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==",
       "license": "MIT"
     },
+    "node_modules/obug": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz",
+      "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==",
+      "funding": [
+        "https://github.com/sponsors/sxzz",
+        "https://opencollective.com/debug"
+      ],
+      "license": "MIT"
+    },
     "node_modules/optionator": {
       "version": "0.9.4",
       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
@@ -2523,18 +2425,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/parent-module": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-      "license": "MIT",
-      "dependencies": {
-        "callsites": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/parse-imports-exports": {
       "version": "0.2.4",
       "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz",
@@ -2616,22 +2506,16 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/resolve-from": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/semver": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "version": "7.7.4",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+      "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
       "license": "ISC",
       "bin": {
         "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
       }
     },
     "node_modules/shebang-command": {
@@ -2677,30 +2561,6 @@
       "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
       "license": "CC0-1.0"
     },
-    "node_modules/strip-json-comments": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/to-valid-identifier": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz",
@@ -2847,12 +2707,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "license": "ISC"
-    },
     "node_modules/yocto-queue": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/tools/eslint/package.json b/tools/eslint/package.json
index b20e13bae8d2c1..72de28a5bb8080 100644
--- a/tools/eslint/package.json
+++ b/tools/eslint/package.json
@@ -3,14 +3,15 @@
   "version": "0.0.0",
   "private": true,
   "dependencies": {
-    "@babel/core": "^7.28.6",
-    "@babel/eslint-parser": "^7.28.6",
-    "@babel/plugin-syntax-import-source": "^7.28.6",
+    "@babel/core": "^8.0.0-rc.2",
+    "@babel/eslint-parser": "^8.0.0-rc.2",
+    "@babel/plugin-syntax-import-source": "^8.0.0-rc.2",
+    "@eslint/js": "^10.0.1",
     "@eslint/markdown": "^7.5.1",
-    "@stylistic/eslint-plugin": "^5.7.1",
-    "eslint": "^9.39.2",
+    "@stylistic/eslint-plugin": "^5.9.0",
+    "eslint": "^10.0.1",
     "eslint-formatter-tap": "^9.0.1",
-    "eslint-plugin-jsdoc": "^62.4.1",
-    "globals": "^17.2.0"
+    "eslint-plugin-jsdoc": "^62.7.0",
+    "globals": "^17.3.0"
   }
 }

From b067d74d941fe857f6bcb672c9a8d89d9432c7a4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Mar 2026 19:18:30 +0000
Subject: [PATCH 150/267] meta: bump step-security/harden-runner from 2.14.2 to
 2.15.0

Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.14.2 to 2.15.0.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/5ef0c079ce82195b2a36a210272d6b661572d83e...a90bcbc6539c36a85cdfeb73f7e2f433735f215b)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: https://github.com/nodejs/node/pull/62064
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 .github/workflows/scorecard.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index a00e30bae77e50..765f7f79fefa88 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -35,7 +35,7 @@ jobs:
 
     steps:
       - name: Harden Runner
-        uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e  # v2.14.2
+        uses: step-security/harden-runner@a90bcbc6539c36a85cdfeb73f7e2f433735f215b  # v2.15.0
         with:
           egress-policy: audit  # TODO: change to 'egress-policy: block' after couple of runs
 

From 78a9aa8f320327c822961c1c72d34df8455afa0c Mon Sep 17 00:00:00 2001
From: Chengzhong Wu <cwu631@bloomberg.net>
Date: Tue, 3 Mar 2026 15:35:35 -0500
Subject: [PATCH 151/267] lib: fix source map url parse in dynamic imports
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/61990
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
---
 lib/internal/source_map/source_map_cache.js  |  7 ++-
 test/parallel/test-source-map-invalid-url.js | 56 ++++++++++++++++++++
 2 files changed, 61 insertions(+), 2 deletions(-)
 create mode 100644 test/parallel/test-source-map-invalid-url.js

diff --git a/lib/internal/source_map/source_map_cache.js b/lib/internal/source_map/source_map_cache.js
index a4a95ad0ae49c3..95b09090c4739c 100644
--- a/lib/internal/source_map/source_map_cache.js
+++ b/lib/internal/source_map/source_map_cache.js
@@ -247,7 +247,10 @@ function dataFromUrl(sourceURL, sourceMappingURL) {
     }
   }
 
-  const mapURL = new URL(sourceMappingURL, sourceURL).href;
+  const mapURL = URLParse(sourceMappingURL, sourceURL);
+  if (mapURL === null) {
+    return null;
+  }
   return sourceMapFromFile(mapURL);
 }
 
@@ -276,7 +279,7 @@ function lineLengths(content) {
 
 /**
  * Read source map from file.
- * @param {string} mapURL - file url of the source map
+ * @param {URL} mapURL - file url of the source map
  * @returns {object} deserialized source map JSON object
  */
 function sourceMapFromFile(mapURL) {
diff --git a/test/parallel/test-source-map-invalid-url.js b/test/parallel/test-source-map-invalid-url.js
new file mode 100644
index 00000000000000..a968040b4f1e3d
--- /dev/null
+++ b/test/parallel/test-source-map-invalid-url.js
@@ -0,0 +1,56 @@
+// Flags: --enable-source-maps
+'use strict';
+
+const common = require('../common');
+const assert = require('node:assert');
+const childProcess = require('node:child_process');
+
+// TODO(legendecas): c8 will complain if non-file-scheme is used in source maps.
+// https://github.com/bcoe/c8/blob/ee2f1cfc5584d41bb2d51b788d0953dab0c798f8/lib/report.js#L517
+if (process.env.NODE_V8_COVERAGE) {
+  console.log('Spawning with coverage disabled.');
+  const { status } = childProcess.spawnSync(
+    process.execPath,
+    [__filename],
+    {
+      stdio: 'inherit',
+      env: {
+        ...process.env,
+        NODE_V8_COVERAGE: '',
+      },
+    },
+  );
+  assert.strictEqual(status, 0);
+  return;
+}
+
+const sources = [
+  `
+  //# sourceMappingURL=unknown-protocol://invalid/url
+  //# sourceURL=unknown-protocol://invalid/url
+  `,
+  `
+  //# sourceMappingURL=file://invalid:/file/url
+  //# sourceURL=file://invalid:/file/url
+  `,
+  `
+  //# sourceMappingURL=invalid-url
+  //# sourceURL=invalid-url
+  `,
+];
+
+sources.forEach(test);
+
+function test(source) {
+  // Eval should tolerate invalid source map url
+  eval(source);
+
+  const base64 = Buffer.from(source).toString('base64url');
+
+  // Dynamic import should tolerate invalid source map url
+  import(`data:text/javascript;base64,${base64}`)
+    .then(common.mustCall());
+}
+
+// eslint-disable-next-line @stylistic/js/spaced-comment
+//# sourceMappingURL=invalid-url

From 5245900c050495e60d96bcc99951becd28f62dfa Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Mar 2026 23:14:24 +0000
Subject: [PATCH 152/267] tools: bump minimatch from 3.1.3 to 3.1.5 in
 /tools/clang-format
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.3 to 3.1.5.
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.3...v3.1.5)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: https://github.com/nodejs/node/pull/62013
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
---
 tools/clang-format/package-lock.json | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/clang-format/package-lock.json b/tools/clang-format/package-lock.json
index e643a65e5d1966..c951eb9e720d9d 100644
--- a/tools/clang-format/package-lock.json
+++ b/tools/clang-format/package-lock.json
@@ -118,9 +118,9 @@
       }
     },
     "node_modules/minimatch": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz",
-      "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+      "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -271,9 +271,9 @@
       }
     },
     "minimatch": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz",
-      "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+      "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
       "requires": {
         "brace-expansion": "^1.1.7"
       }

From db516eca3a1afcb8acba5c2bfecffb7b7fce91d8 Mon Sep 17 00:00:00 2001
From: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com>
Date: Wed, 4 Mar 2026 15:26:01 +0100
Subject: [PATCH 153/267] doc: fix markdown for `expectFailure` values

PR-URL: https://github.com/nodejs/node/pull/62100
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
---
 doc/api/test.md | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/doc/api/test.md b/doc/api/test.md
index 5dcd944ae921d3..98f875e4e78bfb 100644
--- a/doc/api/test.md
+++ b/doc/api/test.md
@@ -286,11 +286,7 @@ it('should do the thing', { expectFailure: 'feature not implemented' }, () => {
 });
 ```
 
-If the value of `expectFailure` is a
-[<RegExp>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) |
-[<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) |
-[<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) |
-[<Error>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error),
+If the value of `expectFailure` is a {RegExp|Function|Object|Error}
 the tests will pass only if they throw a matching value.
 See [`assert.throws`][] for how each value type is handled.
 
@@ -1731,11 +1727,7 @@ changes:
     **Default:** `false`.
   * `expectFailure` {boolean|string|RegExp|Function|Object|Error} If truthy, the
     test is expected to fail. If a non-empty string is provided, that string is displayed
-    in the test results as the reason why the test is expected to fail. If a
-    [<RegExp>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp),
-    [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function),
-    [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object), or
-    [<Error>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error)
+    in the test results as the reason why the test is expected to fail. If a {RegExp|Function|Object|Error}
     is provided directly (without wrapping in `{ match: … }`), the test passes
     only if the thrown error matches, following the behavior of
     [`assert.throws`][]. To provide both a reason and validation, pass an object

From 531e62cd74b02df760ecdb8f2dadbbdb46d79640 Mon Sep 17 00:00:00 2001
From: Marco <marco.piraccini@gmail.com>
Date: Wed, 4 Mar 2026 17:02:27 +0100
Subject: [PATCH 154/267] stream: fix TransformStream race on cancel with
 pending write

Signed-off-by: marcopiraccini <marco.piraccini@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/62040
Fixes: https://github.com/nodejs/node/issues/62036
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
Reviewed-By: Mattias Buelens <mattias@buelens.com>
---
 lib/internal/webstreams/transformstream.js    |  8 ++-
 ...hatwg-transformstream-cancel-write-race.js | 51 +++++++++++++++++++
 2 files changed, 57 insertions(+), 2 deletions(-)
 create mode 100644 test/parallel/test-whatwg-transformstream-cancel-write-race.js

diff --git a/lib/internal/webstreams/transformstream.js b/lib/internal/webstreams/transformstream.js
index 371b597dc681d6..e2d15c05bca249 100644
--- a/lib/internal/webstreams/transformstream.js
+++ b/lib/internal/webstreams/transformstream.js
@@ -72,7 +72,6 @@ const {
 const assert = require('internal/assert');
 
 const kSkipThrow = Symbol('kSkipThrow');
-
 const getNonWritablePropertyDescriptor = (value) => {
   return {
     __proto__: null,
@@ -524,7 +523,12 @@ function transformStreamDefaultControllerError(controller, error) {
 
 async function transformStreamDefaultControllerPerformTransform(controller, chunk) {
   try {
-    return await controller[kState].transformAlgorithm(chunk, controller);
+    const transformAlgorithm = controller[kState].transformAlgorithm;
+    if (transformAlgorithm === undefined) {
+      // Algorithms were cleared by a concurrent cancel/abort/close.
+      return;
+    }
+    return await transformAlgorithm(chunk, controller);
   } catch (error) {
     transformStreamError(controller[kState].stream, error);
     throw error;
diff --git a/test/parallel/test-whatwg-transformstream-cancel-write-race.js b/test/parallel/test-whatwg-transformstream-cancel-write-race.js
new file mode 100644
index 00000000000000..5c32a25b9246f9
--- /dev/null
+++ b/test/parallel/test-whatwg-transformstream-cancel-write-race.js
@@ -0,0 +1,51 @@
+'use strict';
+
+require('../common');
+const { test } = require('node:test');
+const assert = require('node:assert');
+const { TransformStream } = require('stream/web');
+const { setTimeout } = require('timers/promises');
+
+// https://github.com/nodejs/node/issues/62036
+
+test('Late write racing with reader.cancel() should not throw an internal TypeError', async () => {
+  const stream = new TransformStream({
+    transform(chunk, controller) {
+      controller.enqueue(chunk);
+    },
+  });
+
+  await setTimeout(0);
+
+  const reader = stream.readable.getReader();
+  const writer = stream.writable.getWriter();
+
+  // Release backpressure.
+  const pendingRead = reader.read();
+
+  // Simulate client disconnect / shutdown.
+  const pendingCancel = reader.cancel(new Error('client disconnected'));
+
+  // Late write racing with cancel.
+  const pendingLateWrite = writer.write('late-write');
+
+  const [
+    readResult,
+    cancelResult,
+    lateWriteResult,
+  ] = await Promise.allSettled([
+    pendingRead,
+    pendingCancel,
+    pendingLateWrite,
+  ]);
+
+  assert.strictEqual(readResult.status, 'fulfilled');
+  assert.strictEqual(cancelResult.status, 'fulfilled');
+  if (lateWriteResult.status === 'rejected') {
+    const err = lateWriteResult.reason;
+    const isNotAFunction = err instanceof TypeError &&
+        /transformAlgorithm is not a function/.test(err.message);
+    assert.ok(!isNotAFunction,
+              `Internal implementation error leaked: ${err.message}`);
+  }
+});

From 30476ddff706f0c70254a956196431ff6bd58740 Mon Sep 17 00:00:00 2001
From: Richard Lau <richard.lau@ibm.com>
Date: Wed, 4 Mar 2026 16:43:14 +0000
Subject: [PATCH 155/267] tools: fix example in release proposal linter
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

`changelog-maker` writes 10 character length short form SHA's.
Explicitly set the `git log format` in the example to match.

PR-URL: https://github.com/nodejs/node/pull/62074
Reviewed-By: Tierney Cyren <hello@bnb.im>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
Reviewed-By: Stewart X Addison <sxa@redhat.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
---
 tools/actions/lint-release-proposal-commit-list.mjs | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/actions/lint-release-proposal-commit-list.mjs b/tools/actions/lint-release-proposal-commit-list.mjs
index 9bbc7159fbf17a..a51f0c590026cf 100755
--- a/tools/actions/lint-release-proposal-commit-list.mjs
+++ b/tools/actions/lint-release-proposal-commit-list.mjs
@@ -6,6 +6,7 @@
 // Example:
 // $ git log upstream/vXX.x...upstream/vX.X.X-proposal \
 //     --reverse --format='{"prURL":"%(trailers:key=PR-URL,valueonly,separator=)","title":"%s","smallSha":"%h"}' \
+//     --abbrev=10 \
 //   | sed 's/,"title":"Revert "\([^"]\+\)""/,"title":"Revert \\"\1\\""/g' \
 //   | ./lint-release-proposal-commit-list.mjs "path/to/CHANGELOG.md" "$(git rev-parse upstream/vX.X.X-proposal)"
 

From 54dc797644b8829c1b2eca67cd30cca2a8975d56 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Wed, 4 Mar 2026 18:25:42 +0100
Subject: [PATCH 156/267] tools: fix daily wpt workflow nighly release version
 lookup
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62076
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 .github/workflows/daily-wpt-fyi.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml
index 4137589ebea56c..c537b9ec5120f2 100644
--- a/.github/workflows/daily-wpt-fyi.yml
+++ b/.github/workflows/daily-wpt-fyi.yml
@@ -48,7 +48,7 @@ jobs:
       # install a version and checkout
       - name: Get latest nightly
         if: matrix.node-version == 'latest-nightly'
-        run: echo "NIGHTLY=$(curl -s https://nodejs.org/download/nightly/index.json | jq -r '[.[] | select(.files[] | contains("linux-x64"))][0].version')" >> $GITHUB_ENV
+        run: echo "NIGHTLY=$(curl -s https://nodejs.org/download/nightly/index.json | jq -r '[.[] | select(.files[] | contains("linux-arm64"))][0].version')" >> $GITHUB_ENV
       - name: Install Node.js
         id: setup-node
         uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238  # v6.2.0

From bd34e53a8ee4e30fd65279aa3420bc98a7ca1919 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 5 Mar 2026 17:34:11 +0000
Subject: [PATCH 157/267] tools: bump the eslint group across 1 directory with
 2 updates
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Bumps the eslint group with 2 updates in the /tools/eslint directory: [eslint](https://github.com/eslint/eslint) and [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc).

Updates `eslint` from 10.0.1 to 10.0.2
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.0.1...v10.0.2)

Updates `eslint-plugin-jsdoc` from 62.7.0 to 62.7.1
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v62.7.0...v62.7.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 62.7.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: https://github.com/nodejs/node/pull/62092
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 tools/eslint/package-lock.json | 22 +++++++++-------------
 tools/eslint/package.json      |  4 ++--
 2 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/tools/eslint/package-lock.json b/tools/eslint/package-lock.json
index 515dfae3335769..b8a33ce4881db3 100644
--- a/tools/eslint/package-lock.json
+++ b/tools/eslint/package-lock.json
@@ -14,9 +14,9 @@
         "@eslint/js": "^10.0.1",
         "@eslint/markdown": "^7.5.1",
         "@stylistic/eslint-plugin": "^5.9.0",
-        "eslint": "^10.0.1",
+        "eslint": "^10.0.2",
         "eslint-formatter-tap": "^9.0.1",
-        "eslint-plugin-jsdoc": "^62.7.0",
+        "eslint-plugin-jsdoc": "^62.7.1",
         "globals": "^17.3.0"
       }
     },
@@ -47,7 +47,6 @@
       "resolved": "https://registry.npmjs.org/@babel/core/-/core-8.0.0-rc.2.tgz",
       "integrity": "sha512-mlBJdKJJEZNGDE+w+P6B5w+FTMkht1liPkxtB4wk39EpGH01Am5tg1htaNlOU5rO9Ge3psMjAFycpc3ru5uaQw==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@babel/code-frame": "^8.0.0-rc.2",
         "@babel/generator": "^8.0.0-rc.2",
@@ -663,7 +662,6 @@
       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
       "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
       "license": "MIT",
-      "peer": true,
       "bin": {
         "acorn": "bin/acorn"
       },
@@ -763,7 +761,6 @@
         }
       ],
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "baseline-browser-mapping": "^2.9.0",
         "caniuse-lite": "^1.0.30001759",
@@ -933,11 +930,10 @@
       }
     },
     "node_modules/eslint": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.1.tgz",
-      "integrity": "sha512-20MV9SUdeN6Jd84xESsKhRly+/vxI+hwvpBMA93s+9dAcjdCuCojn4IqUGS3lvVaqjVYGYHSRMCpeFtF2rQYxQ==",
+      "version": "10.0.2",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.2.tgz",
+      "integrity": "sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.8.0",
         "@eslint-community/regexpp": "^4.12.2",
@@ -949,7 +945,7 @@
         "@humanwhocodes/module-importer": "^1.0.1",
         "@humanwhocodes/retry": "^0.4.2",
         "@types/estree": "^1.0.6",
-        "ajv": "^6.12.4",
+        "ajv": "^6.14.0",
         "cross-spawn": "^7.0.6",
         "debug": "^4.3.2",
         "escape-string-regexp": "^4.0.0",
@@ -1001,9 +997,9 @@
       }
     },
     "node_modules/eslint-plugin-jsdoc": {
-      "version": "62.7.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.7.0.tgz",
-      "integrity": "sha512-jootujJOIGMkCLN+/WgDFKtaclCt2MEEy9cZ1RyK19Az1JvVI3awbeMXNlJ6y4h8RWIJpcXqmxsu4t9NThYbNw==",
+      "version": "62.7.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.7.1.tgz",
+      "integrity": "sha512-4Zvx99Q7d1uggYBUX/AIjvoyqXhluGbbKrRmG8SQTLprPFg6fa293tVJH1o1GQwNe3lUydd8ZHzn37OaSncgSQ==",
       "license": "BSD-3-Clause",
       "dependencies": {
         "@es-joy/jsdoccomment": "~0.84.0",
diff --git a/tools/eslint/package.json b/tools/eslint/package.json
index 72de28a5bb8080..6225ad5486c26f 100644
--- a/tools/eslint/package.json
+++ b/tools/eslint/package.json
@@ -9,9 +9,9 @@
     "@eslint/js": "^10.0.1",
     "@eslint/markdown": "^7.5.1",
     "@stylistic/eslint-plugin": "^5.9.0",
-    "eslint": "^10.0.1",
+    "eslint": "^10.0.2",
     "eslint-formatter-tap": "^9.0.1",
-    "eslint-plugin-jsdoc": "^62.7.0",
+    "eslint-plugin-jsdoc": "^62.7.1",
     "globals": "^17.3.0"
   }
 }

From dbe5898379465a22756cee075835a2fca4c470eb Mon Sep 17 00:00:00 2001
From: Matteo Collina <hello@matteocollina.com>
Date: Thu, 5 Mar 2026 20:32:54 +0100
Subject: [PATCH 158/267] stream: fix UTF-8 character corruption in
 fast-utf8-stream

Fix releaseWritingBuf() to correctly handle partial writes that split
multi-byte UTF-8 characters. The previous implementation incorrectly
converted byte counts to character counts, causing:

- 3-byte characters (CJK) to be silently dropped
- 4-byte characters (emoji) to leave lone surrogates in the buffer

The fix backs up from the byte position to find a valid UTF-8 character
boundary by checking for continuation bytes (pattern 10xxxxxx), then
decodes the properly-aligned bytes to get the correct character count.

Also fixes a typo where this._asyncDrainScheduled was used instead of
the private field this.#asyncDrainScheduled.

Fixes: https://github.com/nodejs/node/issues/61744
PR-URL: https://github.com/nodejs/node/pull/61745
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
---
 lib/internal/streams/fast-utf8-stream.js      |  24 +-
 .../test-fastutf8stream-partial-write-utf8.js | 322 ++++++++++++++++++
 2 files changed, 340 insertions(+), 6 deletions(-)
 create mode 100644 test/parallel/test-fastutf8stream-partial-write-utf8.js

diff --git a/lib/internal/streams/fast-utf8-stream.js b/lib/internal/streams/fast-utf8-stream.js
index 25f4771d052a2a..cb86f245302620 100644
--- a/lib/internal/streams/fast-utf8-stream.js
+++ b/lib/internal/streams/fast-utf8-stream.js
@@ -237,7 +237,7 @@ class Utf8Stream extends EventEmitter {
 
     this.on('newListener', (name) => {
       if (name === 'drain') {
-        this._asyncDrainScheduled = false;
+        this.#asyncDrainScheduled = false;
       }
     });
 
@@ -894,11 +894,23 @@ class Utf8Stream extends EventEmitter {
  * @returns {{writingBuf: string | Buffer, len: number}} released writingBuf and length
  */
 function releaseWritingBuf(writingBuf, len, n) {
-  // if Buffer.byteLength is equal to n, that means writingBuf contains no multi-byte character
-  if (typeof writingBuf === 'string' && Buffer.byteLength(writingBuf) !== n) {
-    // Since the fs.write callback parameter `n` means how many bytes the passed of string
-    // We calculate the original string length for avoiding the multi-byte character issue
-    n = Buffer.from(writingBuf).subarray(0, n).toString().length;
+  if (typeof writingBuf === 'string') {
+    const byteLength = Buffer.byteLength(writingBuf);
+    if (byteLength !== n) {
+      // Since fs.write returns the number of bytes written, we need to find
+      // how many complete characters fit within those n bytes.
+      // If a partial write splits a multi-byte UTF-8 character, we must back up
+      // to the start of that character to avoid data corruption.
+      const buf = Buffer.from(writingBuf);
+      // Back up from position n to find a valid UTF-8 character boundary.
+      // UTF-8 continuation bytes have the pattern 10xxxxxx (0x80-0xBF).
+      // We need to find the start of the character that was split.
+      while (n > 0 && (buf[n] & 0xC0) === 0x80) {
+        n--;
+      }
+      // Decode the properly-aligned bytes to get the character count.
+      n = buf.subarray(0, n).toString().length;
+    }
   }
   len = MathMax(len - n, 0);
   writingBuf = writingBuf.slice(n);
diff --git a/test/parallel/test-fastutf8stream-partial-write-utf8.js b/test/parallel/test-fastutf8stream-partial-write-utf8.js
new file mode 100644
index 00000000000000..3a56fcf71a7b44
--- /dev/null
+++ b/test/parallel/test-fastutf8stream-partial-write-utf8.js
@@ -0,0 +1,322 @@
+'use strict';
+
+// Tests for UTF-8 character preservation when partial writes split multi-byte characters.
+// See: https://github.com/nodejs/node/issues/61744
+
+const common = require('../common');
+const tmpdir = require('../common/tmpdir');
+const assert = require('node:assert');
+const {
+  openSync,
+  write,
+  writeSync,
+} = require('node:fs');
+const { Utf8Stream } = require('node:fs');
+const { join } = require('node:path');
+const { isMainThread } = require('node:worker_threads');
+
+tmpdir.refresh();
+if (isMainThread) {
+  process.umask(0o000);
+}
+
+let fileCounter = 0;
+
+function getTempFile() {
+  return join(tmpdir.path, `fastutf8stream-partial-${process.pid}-${Date.now()}-${fileCounter++}.log`);
+}
+
+runTests(false);
+runTests(true);
+
+function runTests(sync) {
+  // Test 1: Partial write splitting a 3-byte UTF-8 character (CJK)
+  // "abc中def" where "中" is 3 bytes (E4 B8 AD)
+  // Simulate partial write of 4 bytes: "abc" (3 bytes) + first byte of "中"
+  // The remaining buffer should be "中def" (not "def")
+  {
+    const dest = getTempFile();
+    const fd = openSync(dest, 'w');
+
+    let firstWrite = true;
+    const writtenChunks = [];
+    const fsOverride = {};
+
+    if (sync) {
+      fsOverride.writeSync = common.mustCall((...args) => {
+        const data = args[1];
+        writtenChunks.push(typeof data === 'string' ? data : data.toString());
+        if (firstWrite) {
+          firstWrite = false;
+          // Simulate partial write: only 4 bytes written out of 9
+          // This splits the 3-byte "中" character
+          return 4;
+        }
+        return writeSync(...args);
+      }, 2);
+    } else {
+      fsOverride.write = common.mustCall((...args) => {
+        const data = args[1];
+        writtenChunks.push(typeof data === 'string' ? data : data.toString());
+        const callback = args[args.length - 1];
+        if (firstWrite) {
+          firstWrite = false;
+          // Simulate partial write: only 4 bytes written out of 9
+          process.nextTick(callback, null, 4);
+          return;
+        }
+        return write(...args);
+      }, 2);
+    }
+
+    const stream = new Utf8Stream({
+      fd,
+      sync,
+      minLength: 0,
+      fs: fsOverride,
+    });
+
+    stream.on('ready', common.mustCall(() => {
+      stream.write('abc中def');
+      stream.end();
+
+      stream.on('finish', common.mustCall(() => {
+        // Verify the second chunk contains the preserved CJK character
+        assert.strictEqual(writtenChunks.length, 2);
+        assert.strictEqual(writtenChunks[0], 'abc中def'); // First attempt
+        assert.strictEqual(writtenChunks[1], '中def'); // Retry with preserved char
+      }));
+    }));
+  }
+
+  // Test 2: Partial write splitting a 4-byte UTF-8 character (emoji)
+  // "hello🌍world" where "🌍" is 4 bytes (F0 9F 8C 8D)
+  // Simulate partial write of 7 bytes: "hello" (5 bytes) + first 2 bytes of "🌍"
+  // The remaining buffer should be "🌍world" (not a lone surrogate + "world")
+  {
+    const dest = getTempFile();
+    const fd = openSync(dest, 'w');
+
+    let firstWrite = true;
+    const writtenChunks = [];
+    const fsOverride = {};
+
+    if (sync) {
+      fsOverride.writeSync = common.mustCall((...args) => {
+        const data = args[1];
+        writtenChunks.push(typeof data === 'string' ? data : data.toString());
+        if (firstWrite) {
+          firstWrite = false;
+          // Simulate partial write: only 7 bytes written
+          return 7;
+        }
+        return writeSync(...args);
+      }, 2);
+    } else {
+      fsOverride.write = common.mustCall((...args) => {
+        const data = args[1];
+        writtenChunks.push(typeof data === 'string' ? data : data.toString());
+        const callback = args[args.length - 1];
+        if (firstWrite) {
+          firstWrite = false;
+          process.nextTick(callback, null, 7);
+          return;
+        }
+        return write(...args);
+      }, 2);
+    }
+
+    const stream = new Utf8Stream({
+      fd,
+      sync,
+      minLength: 0,
+      fs: fsOverride,
+    });
+
+    stream.on('ready', common.mustCall(() => {
+      stream.write('hello🌍world');
+      stream.end();
+
+      stream.on('finish', common.mustCall(() => {
+        assert.strictEqual(writtenChunks.length, 2);
+        assert.strictEqual(writtenChunks[0], 'hello🌍world'); // First attempt
+        assert.strictEqual(writtenChunks[1], '🌍world'); // Retry with preserved emoji
+
+        // Verify no lone surrogates in the retry chunk
+        const retryChunk = writtenChunks[1];
+        for (let i = 0; i < retryChunk.length; i++) {
+          const code = retryChunk.charCodeAt(i);
+          if (code >= 0xD800 && code <= 0xDBFF) {
+            // High surrogate - next must be low surrogate
+            const next = retryChunk.charCodeAt(i + 1);
+            assert.ok(next >= 0xDC00 && next <= 0xDFFF,
+                      `Found lone high surrogate at position ${i}`);
+            i++; // Skip the low surrogate we just verified
+          } else if (code >= 0xDC00 && code <= 0xDFFF) {
+            // Low surrogate without preceding high surrogate
+            assert.fail(`Found lone low surrogate at position ${i}: 0x${code.toString(16)}`);
+          }
+        }
+      }));
+    }));
+  }
+
+  // Test 3: Partial write at exactly 0 bytes (edge case)
+  {
+    const dest = getTempFile();
+    const fd = openSync(dest, 'w');
+
+    let firstWrite = true;
+    const writtenChunks = [];
+    const fsOverride = {};
+
+    if (sync) {
+      fsOverride.writeSync = common.mustCall((...args) => {
+        const data = args[1];
+        writtenChunks.push(typeof data === 'string' ? data : data.toString());
+        if (firstWrite) {
+          firstWrite = false;
+          return 0; // No bytes written
+        }
+        return writeSync(...args);
+      }, 2);
+    } else {
+      fsOverride.write = common.mustCall((...args) => {
+        const data = args[1];
+        writtenChunks.push(typeof data === 'string' ? data : data.toString());
+        const callback = args[args.length - 1];
+        if (firstWrite) {
+          firstWrite = false;
+          process.nextTick(callback, null, 0);
+          return;
+        }
+        return write(...args);
+      }, 2);
+    }
+
+    const stream = new Utf8Stream({
+      fd,
+      sync,
+      minLength: 0,
+      fs: fsOverride,
+    });
+
+    stream.on('ready', common.mustCall(() => {
+      stream.write('中文');
+      stream.end();
+
+      stream.on('finish', common.mustCall(() => {
+        assert.strictEqual(writtenChunks.length, 2);
+        assert.strictEqual(writtenChunks[0], '中文');
+        assert.strictEqual(writtenChunks[1], '中文'); // Entire string retried
+      }));
+    }));
+  }
+
+  // Test 4: Partial write splitting between characters (not mid-character)
+  // This should work the same as before - no character preservation needed
+  {
+    const dest = getTempFile();
+    const fd = openSync(dest, 'w');
+
+    let firstWrite = true;
+    const writtenChunks = [];
+    const fsOverride = {};
+
+    if (sync) {
+      fsOverride.writeSync = common.mustCall((...args) => {
+        const data = args[1];
+        writtenChunks.push(typeof data === 'string' ? data : data.toString());
+        if (firstWrite) {
+          firstWrite = false;
+          // Write exactly 3 bytes ("abc"), which is a clean character boundary
+          return 3;
+        }
+        return writeSync(...args);
+      }, 2);
+    } else {
+      fsOverride.write = common.mustCall((...args) => {
+        const data = args[1];
+        writtenChunks.push(typeof data === 'string' ? data : data.toString());
+        const callback = args[args.length - 1];
+        if (firstWrite) {
+          firstWrite = false;
+          process.nextTick(callback, null, 3);
+          return;
+        }
+        return write(...args);
+      }, 2);
+    }
+
+    const stream = new Utf8Stream({
+      fd,
+      sync,
+      minLength: 0,
+      fs: fsOverride,
+    });
+
+    stream.on('ready', common.mustCall(() => {
+      stream.write('abc中def');
+      stream.end();
+
+      stream.on('finish', common.mustCall(() => {
+        assert.strictEqual(writtenChunks.length, 2);
+        assert.strictEqual(writtenChunks[0], 'abc中def');
+        assert.strictEqual(writtenChunks[1], '中def'); // Remaining after 3 bytes
+      }));
+    }));
+  }
+
+  // Test 5: Single multi-byte character with partial write of 1 byte
+  {
+    const dest = getTempFile();
+    const fd = openSync(dest, 'w');
+
+    let firstWrite = true;
+    const writtenChunks = [];
+    const fsOverride = {};
+
+    if (sync) {
+      fsOverride.writeSync = common.mustCall((...args) => {
+        const data = args[1];
+        writtenChunks.push(typeof data === 'string' ? data : data.toString());
+        if (firstWrite) {
+          firstWrite = false;
+          // Write only 1 byte of a 3-byte character
+          return 1;
+        }
+        return writeSync(...args);
+      }, 2);
+    } else {
+      fsOverride.write = common.mustCall((...args) => {
+        const data = args[1];
+        writtenChunks.push(typeof data === 'string' ? data : data.toString());
+        const callback = args[args.length - 1];
+        if (firstWrite) {
+          firstWrite = false;
+          process.nextTick(callback, null, 1);
+          return;
+        }
+        return write(...args);
+      }, 2);
+    }
+
+    const stream = new Utf8Stream({
+      fd,
+      sync,
+      minLength: 0,
+      fs: fsOverride,
+    });
+
+    stream.on('ready', common.mustCall(() => {
+      stream.write('中');
+      stream.end();
+
+      stream.on('finish', common.mustCall(() => {
+        assert.strictEqual(writtenChunks.length, 2);
+        assert.strictEqual(writtenChunks[0], '中');
+        assert.strictEqual(writtenChunks[1], '中'); // Full character retried
+      }));
+    }));
+  }
+}

From 58e4d50cd0d9a1986baa727a9a0b18cac835abad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerhard=20St=C3=B6bich?= <deb2001-github@yahoo.de>
Date: Fri, 6 Mar 2026 07:01:21 +0100
Subject: [PATCH 159/267] http: fix use-after-free when freeParser is called
 during llhttp_execute

When pipelined requests arrive in one TCP segment, llhttp_execute()
parses them all in a single call. If a synchronous 'close' event
handler invokes freeParser() mid-execution, cleanParser() nulls out
parser state while llhttp_execute() is still on the stack, crashing on
 the next callback.

Add an is_being_freed_ flag that freeParser() sets via
parser.markFreed() before cleaning state. Proxy::Raw checks the flag
before every callback and returns HPE_USER to abort execution early if
set.

PR-URL: https://github.com/nodejs/node/pull/62095
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
---
 lib/_http_common.js                           |  2 +-
 src/node_http_parser.cc                       |  7 ++++++
 .../test-http-parser-freed-during-execute.js  | 23 +++++++++++++++++++
 3 files changed, 31 insertions(+), 1 deletion(-)
 create mode 100644 test/parallel/test-http-parser-freed-during-execute.js

diff --git a/lib/_http_common.js b/lib/_http_common.js
index 019b73a1ff225e..3c389ba054decc 100644
--- a/lib/_http_common.js
+++ b/lib/_http_common.js
@@ -189,8 +189,8 @@ function freeParser(parser, req, socket) {
   if (parser) {
     if (parser._consumed)
       parser.unconsume();
-    cleanParser(parser);
     parser.remove();
+    cleanParser(parser);
     if (parsers.free(parser) === false) {
       // Make sure the parser's stack has unwound before deleting the
       // corresponding C++ object through .close().
diff --git a/src/node_http_parser.cc b/src/node_http_parser.cc
index 8edd9f9523fd6f..50d7f9e6916096 100644
--- a/src/node_http_parser.cc
+++ b/src/node_http_parser.cc
@@ -628,6 +628,8 @@ class Parser : public AsyncWrap, public StreamListener {
     Parser* parser;
     ASSIGN_OR_RETURN_UNWRAP(&parser, args.This());
 
+    parser->is_being_freed_ = true;
+
     if (parser->connectionsList_ != nullptr) {
       parser->connectionsList_->Pop(parser);
       parser->connectionsList_->PopActive(parser);
@@ -1012,6 +1014,7 @@ class Parser : public AsyncWrap, public StreamListener {
     num_values_ = 0;
     have_flushed_ = false;
     got_exception_ = false;
+    is_being_freed_ = false;
     headers_completed_ = false;
     max_http_header_size_ = max_http_header_size;
   }
@@ -1056,6 +1059,7 @@ class Parser : public AsyncWrap, public StreamListener {
   size_t num_values_;
   bool have_flushed_;
   bool got_exception_;
+  bool is_being_freed_ = false;
   size_t current_buffer_len_;
   const char* current_buffer_data_;
   bool headers_completed_ = false;
@@ -1075,6 +1079,9 @@ class Parser : public AsyncWrap, public StreamListener {
   struct Proxy<int (Parser::*)(Args...), Member> {
     static int Raw(llhttp_t* p, Args ... args) {
       Parser* parser = ContainerOf(&Parser::parser_, p);
+      if (parser->is_being_freed_) {
+        return 0;
+      }
       int rv = (parser->*Member)(std::forward<Args>(args)...);
       if (rv == 0) {
         rv = parser->MaybePause();
diff --git a/test/parallel/test-http-parser-freed-during-execute.js b/test/parallel/test-http-parser-freed-during-execute.js
new file mode 100644
index 00000000000000..c7605b75d95aa5
--- /dev/null
+++ b/test/parallel/test-http-parser-freed-during-execute.js
@@ -0,0 +1,23 @@
+'use strict';
+
+const common = require('../common');
+const { createServer } = require('http');
+const { connect } = require('net');
+
+// Regression test: ensure llhttp_execute() is aborted when freeParser() is
+// called synchronously during parsing of pipelined requests.
+const server = createServer(common.mustCall((req, res) => {
+  req.socket.emit('close');
+  res.end();
+}, 1));
+
+server.unref();
+
+server.listen(0, common.mustCall(() => {
+  // Two pipelined requests in one write, processed by a single llhttp_execute().
+  const client = connect(server.address().port);
+  client.end(
+    'GET / HTTP/1.1\r\nHost: localhost\r\nConnection: keep-alive\r\n\r\n' +
+    'GET / HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n',
+  );
+}));

From 8b8db52f655f81351fec85c5f82f77b7085e66df Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Wed, 4 Mar 2026 11:16:25 +0100
Subject: [PATCH 160/267] crypto: fix importKey required argument count check
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62099
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
---
 lib/internal/crypto/webcrypto.js              | 2 +-
 test/parallel/test-webcrypto-export-import.js | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/lib/internal/crypto/webcrypto.js b/lib/internal/crypto/webcrypto.js
index 0fba4e9108c329..031bb9a3669fdf 100644
--- a/lib/internal/crypto/webcrypto.js
+++ b/lib/internal/crypto/webcrypto.js
@@ -865,7 +865,7 @@ async function importKey(
 
   webidl ??= require('internal/crypto/webidl');
   const prefix = "Failed to execute 'importKey' on 'SubtleCrypto'";
-  webidl.requiredArguments(arguments.length, 4, { prefix });
+  webidl.requiredArguments(arguments.length, 5, { prefix });
   format = webidl.converters.KeyFormat(format, {
     prefix,
     context: '1st argument',
diff --git a/test/parallel/test-webcrypto-export-import.js b/test/parallel/test-webcrypto-export-import.js
index faf7aef01a1844..6c8f36a62eccb3 100644
--- a/test/parallel/test-webcrypto-export-import.js
+++ b/test/parallel/test-webcrypto-export-import.js
@@ -435,3 +435,11 @@ if (!process.features.openssl_is_boringssl) {
     subtle.importKey('jwk', jwk, { name: 'HMAC', hash: 'SHA3-256' }, false, ['sign', 'verify']).then(common.mustCall());
   }
 }
+
+{
+  const keyData = new Uint8Array(32);
+  assert.rejects(
+    subtle.importKey('raw', keyData, { name: 'HMAC', hash: 'SHA-256' }, false),
+    { code: 'ERR_MISSING_ARGS' }
+  ).then(common.mustCall());
+}

From e2934162b430e500309cdfdf4b62516c5a44b7f6 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Wed, 4 Mar 2026 11:17:48 +0100
Subject: [PATCH 161/267] crypto: add missing AES dictionaries
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62099
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
---
 lib/internal/crypto/util.js | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/internal/crypto/util.js b/lib/internal/crypto/util.js
index a91a60e09c04dd..5ec1d409ec05b9 100644
--- a/lib/internal/crypto/util.js
+++ b/lib/internal/crypto/util.js
@@ -480,6 +480,8 @@ function createSupportedAlgorithms(algorithmDefs) {
 const kSupportedAlgorithms = createSupportedAlgorithms(kAlgorithmDefinitions);
 
 const simpleAlgorithmDictionaries = {
+  AesCbcParams: { iv: 'BufferSource' },
+  AesCtrParams: { counter: 'BufferSource' },
   AeadParams: { iv: 'BufferSource', additionalData: 'BufferSource' },
   // publicExponent is not strictly a BufferSource but it is a Uint8Array that we normalize
   // this way

From a4466ebdacd7dc4a676cf6319f99c3e2f99aca41 Mon Sep 17 00:00:00 2001
From: Efe <dogukankrskl@gmail.com>
Date: Fri, 6 Mar 2026 17:24:46 +0100
Subject: [PATCH 162/267] doc: add efekrskl as triager
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/61876
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
Reviewed-By: Aviv Keller <me@aviv.sh>
---
 README.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/README.md b/README.md
index 33ec62d271db5e..d9148ca44ab0cd 100644
--- a/README.md
+++ b/README.md
@@ -757,6 +757,8 @@ maintaining the Node.js project.
   **Oliver Medhurst** <<honk@goose.icu>> (they/them)
 * [daeyeon](https://github.com/daeyeon) -
   **Daeyeon Jeong** <<daeyeon.dev@gmail.com>> (he/him)
+* [efekrskl](https://github.com/efekrskl) -
+  **Efe Karasakal** <<hi@efe.dev>> (he/him)
 * [gireeshpunathil](https://github.com/gireeshpunathil) -
   **Gireesh Punathil** <<gpunathi@in.ibm.com>> (he/him)
 * [gurgunday](https://github.com/gurgunday) -

From d788467b6a6eab4bf170cabb4f5c1e2883ec8c0d Mon Sep 17 00:00:00 2001
From: Anna Henningsen <anna@addaleax.net>
Date: Wed, 4 Mar 2026 00:04:37 +0100
Subject: [PATCH 163/267] src: expose async context frame debugging helper to
 JS
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This was invaluable for debugging the previous change,
so I'm suggesting we add it regardless of it being a
debugging-only API.

PR-URL: https://github.com/nodejs/node/pull/62103
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
---
 src/async_wrap.cc | 12 ++++++++++++
 src/async_wrap.h  |  2 ++
 2 files changed, 14 insertions(+)

diff --git a/src/async_wrap.cc b/src/async_wrap.cc
index 69e385d69e9c1c..f71195f1c87480 100644
--- a/src/async_wrap.cc
+++ b/src/async_wrap.cc
@@ -322,6 +322,13 @@ void AsyncWrap::AsyncReset(const FunctionCallbackInfo<Value>& args) {
   wrap->AsyncReset(resource, execution_async_id);
 }
 
+// Useful for debugging async context propagation. Not intended for public use.
+void AsyncWrap::GetAsyncContextFrame(const FunctionCallbackInfo<Value>& args) {
+  AsyncWrap* wrap;
+  ASSIGN_OR_RETURN_UNWRAP(&wrap, args.This());
+
+  args.GetReturnValue().Set(wrap->context_frame());
+}
 
 void AsyncWrap::GetProviderType(const FunctionCallbackInfo<Value>& args) {
   AsyncWrap* wrap;
@@ -372,6 +379,10 @@ Local<FunctionTemplate> AsyncWrap::GetConstructorTemplate(
         FIXED_ONE_BYTE_STRING(isolate_data->isolate(), "AsyncWrap"));
     SetProtoMethod(isolate, tmpl, "getAsyncId", AsyncWrap::GetAsyncId);
     SetProtoMethod(isolate, tmpl, "asyncReset", AsyncWrap::AsyncReset);
+    SetProtoMethod(isolate,
+                   tmpl,
+                   "getAsyncContextFrameForDebuggingOnly",
+                   AsyncWrap::GetAsyncContextFrame);
     SetProtoMethod(
         isolate, tmpl, "getProviderType", AsyncWrap::GetProviderType);
     isolate_data->set_async_wrap_ctor_template(tmpl);
@@ -501,6 +512,7 @@ void AsyncWrap::RegisterExternalReferences(
   registry->Register(RegisterDestroyHook);
   registry->Register(AsyncWrap::GetAsyncId);
   registry->Register(AsyncWrap::AsyncReset);
+  registry->Register(AsyncWrap::GetAsyncContextFrame);
   registry->Register(AsyncWrap::GetProviderType);
 }
 
diff --git a/src/async_wrap.h b/src/async_wrap.h
index efb56a61a3e2d3..c64dea2790d651 100644
--- a/src/async_wrap.h
+++ b/src/async_wrap.h
@@ -162,6 +162,8 @@ class AsyncWrap : public BaseObject {
   static void ClearAsyncIdStack(
       const v8::FunctionCallbackInfo<v8::Value>& args);
   static void AsyncReset(const v8::FunctionCallbackInfo<v8::Value>& args);
+  static void GetAsyncContextFrame(
+      const v8::FunctionCallbackInfo<v8::Value>& args);
   static void GetProviderType(const v8::FunctionCallbackInfo<v8::Value>& args);
   static void QueueDestroyAsyncId(
     const v8::FunctionCallbackInfo<v8::Value>& args);

From 9536e5621b33168985d4e61a27b9cecc12704b70 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Wed, 4 Mar 2026 22:32:02 +0100
Subject: [PATCH 164/267] test: update WPT compression to ae05f5cb53
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62107
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Mattias Buelens <mattias@buelens.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
---
 test/fixtures/wpt/README.md                   |   2 +-
 .../compression/compression-bad-chunks.any.js |  57 +++++
 .../compression-bad-chunks.tentative.any.js   |  74 -------
 ...s => compression-constructor-error.any.js} |   0
 ... compression-including-empty-chunk.any.js} |  29 +--
 .../compression-large-flush-output.any.js     |  28 +--
 .../compression-multiple-chunks.any.js        |  58 +++++
 ...mpression-multiple-chunks.tentative.any.js |  67 ------
 .../compression-output-length.any.js          |  47 ++++
 ...compression-output-length.tentative.any.js |  64 ------
 .../wpt/compression/compression-stream.any.js |  59 +++++
 .../compression-stream.tentative.any.js       |  91 --------
 ...w.js => compression-with-detach.window.js} |   0
 ...any.js => decompression-bad-chunks.any.js} |  19 +-
 .../decompression-buffersource.any.js         |  86 ++++++++
 ...ecompression-buffersource.tentative.any.js | 204 ------------------
 ...=> decompression-constructor-error.any.js} |   0
 .../decompression-correct-input.any.js        |  15 ++
 ...compression-correct-input.tentative.any.js |  39 ----
 ....js => decompression-corrupt-input.any.js} |  24 ++-
 .../decompression-empty-input.any.js          |  24 +++
 ...decompression-empty-input.tentative.any.js |  43 ----
 .../decompression-extra-input.any.js          |  20 ++
 .../decompression-split-chunk.any.js          |  38 ++++
 ...decompression-split-chunk.tentative.any.js |  53 -----
 .../decompression-uint8array-output.any.js    |  16 ++
 ...ression-uint8array-output.tentative.any.js |  30 ---
 ...js => decompression-with-detach.window.js} |   0
 .../wpt/compression/resources/decompress.js   |  31 +++
 .../resources/decompression-input.js          |  20 ++
 .../wpt/compression/resources/formats.js      |   6 +
 test/fixtures/wpt/versions.json               |   2 +-
 test/wpt/status/compression.json              |   6 +-
 33 files changed, 525 insertions(+), 727 deletions(-)
 create mode 100644 test/fixtures/wpt/compression/compression-bad-chunks.any.js
 delete mode 100644 test/fixtures/wpt/compression/compression-bad-chunks.tentative.any.js
 rename test/fixtures/wpt/compression/{compression-constructor-error.tentative.any.js => compression-constructor-error.any.js} (100%)
 rename test/fixtures/wpt/compression/{compression-including-empty-chunk.tentative.any.js => compression-including-empty-chunk.any.js} (52%)
 create mode 100644 test/fixtures/wpt/compression/compression-multiple-chunks.any.js
 delete mode 100644 test/fixtures/wpt/compression/compression-multiple-chunks.tentative.any.js
 create mode 100644 test/fixtures/wpt/compression/compression-output-length.any.js
 delete mode 100644 test/fixtures/wpt/compression/compression-output-length.tentative.any.js
 create mode 100644 test/fixtures/wpt/compression/compression-stream.any.js
 delete mode 100644 test/fixtures/wpt/compression/compression-stream.tentative.any.js
 rename test/fixtures/wpt/compression/{compression-with-detach.tentative.window.js => compression-with-detach.window.js} (100%)
 rename test/fixtures/wpt/compression/{decompression-bad-chunks.tentative.any.js => decompression-bad-chunks.any.js} (82%)
 create mode 100644 test/fixtures/wpt/compression/decompression-buffersource.any.js
 delete mode 100644 test/fixtures/wpt/compression/decompression-buffersource.tentative.any.js
 rename test/fixtures/wpt/compression/{decompression-constructor-error.tentative.any.js => decompression-constructor-error.any.js} (100%)
 create mode 100644 test/fixtures/wpt/compression/decompression-correct-input.any.js
 delete mode 100644 test/fixtures/wpt/compression/decompression-correct-input.tentative.any.js
 rename test/fixtures/wpt/compression/{decompression-corrupt-input.tentative.any.js => decompression-corrupt-input.any.js} (93%)
 create mode 100644 test/fixtures/wpt/compression/decompression-empty-input.any.js
 delete mode 100644 test/fixtures/wpt/compression/decompression-empty-input.tentative.any.js
 create mode 100644 test/fixtures/wpt/compression/decompression-extra-input.any.js
 create mode 100644 test/fixtures/wpt/compression/decompression-split-chunk.any.js
 delete mode 100644 test/fixtures/wpt/compression/decompression-split-chunk.tentative.any.js
 create mode 100644 test/fixtures/wpt/compression/decompression-uint8array-output.any.js
 delete mode 100644 test/fixtures/wpt/compression/decompression-uint8array-output.tentative.any.js
 rename test/fixtures/wpt/compression/{decompression-with-detach.tentative.window.js => decompression-with-detach.window.js} (100%)
 create mode 100644 test/fixtures/wpt/compression/resources/decompress.js
 create mode 100644 test/fixtures/wpt/compression/resources/decompression-input.js
 create mode 100644 test/fixtures/wpt/compression/resources/formats.js

diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md
index df63f173072dcc..ec9fd8763043fd 100644
--- a/test/fixtures/wpt/README.md
+++ b/test/fixtures/wpt/README.md
@@ -11,7 +11,7 @@ See [test/wpt](../../wpt/README.md) for information on how these tests are run.
 Last update:
 
 - common: https://github.com/web-platform-tests/wpt/tree/dbd648158d/common
-- compression: https://github.com/web-platform-tests/wpt/tree/67880a4eb8/compression
+- compression: https://github.com/web-platform-tests/wpt/tree/ae05f5cb53/compression
 - console: https://github.com/web-platform-tests/wpt/tree/e48251b778/console
 - dom/abort: https://github.com/web-platform-tests/wpt/tree/dc928169ee/dom/abort
 - dom/events: https://github.com/web-platform-tests/wpt/tree/0a811c5161/dom/events
diff --git a/test/fixtures/wpt/compression/compression-bad-chunks.any.js b/test/fixtures/wpt/compression/compression-bad-chunks.any.js
new file mode 100644
index 00000000000000..9afab59e2be1db
--- /dev/null
+++ b/test/fixtures/wpt/compression/compression-bad-chunks.any.js
@@ -0,0 +1,57 @@
+// META: global=window,worker,shadowrealm
+// META: script=resources/formats.js
+
+'use strict';
+
+const badChunks = [
+  {
+    name: 'undefined',
+    value: undefined
+  },
+  {
+    name: 'null',
+    value: null
+  },
+  {
+    name: 'numeric',
+    value: 3.14
+  },
+  {
+    name: 'object, not BufferSource',
+    value: {}
+  },
+  {
+    name: 'array',
+    value: [65]
+  },
+  {
+    name: 'SharedArrayBuffer',
+    // Use a getter to postpone construction so that all tests don't fail where
+    // SharedArrayBuffer is not yet implemented.
+    get value() {
+      // See https://github.com/whatwg/html/issues/5380 for why not `new SharedArrayBuffer()`
+      return new WebAssembly.Memory({ shared:true, initial:1, maximum:1 }).buffer;
+    }
+  },
+  {
+    name: 'shared Uint8Array',
+    get value() {
+      // See https://github.com/whatwg/html/issues/5380 for why not `new SharedArrayBuffer()`
+      return new Uint8Array(new WebAssembly.Memory({ shared:true, initial:1, maximum:1 }).buffer)
+    }
+  },
+];
+
+for (const format of formats) {
+  for (const chunk of badChunks) {
+    promise_test(async t => {
+      const cs = new CompressionStream(format);
+      const reader = cs.readable.getReader();
+      const writer = cs.writable.getWriter();
+      const writePromise = writer.write(chunk.value);
+      const readPromise = reader.read();
+      await promise_rejects_js(t, TypeError, writePromise, 'write should reject');
+      await promise_rejects_js(t, TypeError, readPromise, 'read should reject');
+    }, `chunk of type ${chunk.name} should error the stream for ${format}`);
+  }
+}
diff --git a/test/fixtures/wpt/compression/compression-bad-chunks.tentative.any.js b/test/fixtures/wpt/compression/compression-bad-chunks.tentative.any.js
deleted file mode 100644
index 2d0b5684733930..00000000000000
--- a/test/fixtures/wpt/compression/compression-bad-chunks.tentative.any.js
+++ /dev/null
@@ -1,74 +0,0 @@
-// META: global=window,worker,shadowrealm
-
-'use strict';
-
-const badChunks = [
-  {
-    name: 'undefined',
-    value: undefined
-  },
-  {
-    name: 'null',
-    value: null
-  },
-  {
-    name: 'numeric',
-    value: 3.14
-  },
-  {
-    name: 'object, not BufferSource',
-    value: {}
-  },
-  {
-    name: 'array',
-    value: [65]
-  },
-  {
-    name: 'SharedArrayBuffer',
-    // Use a getter to postpone construction so that all tests don't fail where
-    // SharedArrayBuffer is not yet implemented.
-    get value() {
-      // See https://github.com/whatwg/html/issues/5380 for why not `new SharedArrayBuffer()`
-      return new WebAssembly.Memory({ shared:true, initial:1, maximum:1 }).buffer;
-    }
-  },
-  {
-    name: 'shared Uint8Array',
-    get value() {
-      // See https://github.com/whatwg/html/issues/5380 for why not `new SharedArrayBuffer()`
-      return new Uint8Array(new WebAssembly.Memory({ shared:true, initial:1, maximum:1 }).buffer)
-    }
-  },
-];
-
-for (const chunk of badChunks) {
-  promise_test(async t => {
-    const cs = new CompressionStream('gzip');
-    const reader = cs.readable.getReader();
-    const writer = cs.writable.getWriter();
-    const writePromise = writer.write(chunk.value);
-    const readPromise = reader.read();
-    await promise_rejects_js(t, TypeError, writePromise, 'write should reject');
-    await promise_rejects_js(t, TypeError, readPromise, 'read should reject');
-  }, `chunk of type ${chunk.name} should error the stream for gzip`);
-
-  promise_test(async t => {
-    const cs = new CompressionStream('deflate');
-    const reader = cs.readable.getReader();
-    const writer = cs.writable.getWriter();
-    const writePromise = writer.write(chunk.value);
-    const readPromise = reader.read();
-    await promise_rejects_js(t, TypeError, writePromise, 'write should reject');
-    await promise_rejects_js(t, TypeError, readPromise, 'read should reject');
-  }, `chunk of type ${chunk.name} should error the stream for deflate`);
-
-  promise_test(async t => {
-    const cs = new CompressionStream('deflate-raw');
-    const reader = cs.readable.getReader();
-    const writer = cs.writable.getWriter();
-    const writePromise = writer.write(chunk.value);
-    const readPromise = reader.read();
-    await promise_rejects_js(t, TypeError, writePromise, 'write should reject');
-    await promise_rejects_js(t, TypeError, readPromise, 'read should reject');
-  }, `chunk of type ${chunk.name} should error the stream for deflate-raw`);
-}
diff --git a/test/fixtures/wpt/compression/compression-constructor-error.tentative.any.js b/test/fixtures/wpt/compression/compression-constructor-error.any.js
similarity index 100%
rename from test/fixtures/wpt/compression/compression-constructor-error.tentative.any.js
rename to test/fixtures/wpt/compression/compression-constructor-error.any.js
diff --git a/test/fixtures/wpt/compression/compression-including-empty-chunk.tentative.any.js b/test/fixtures/wpt/compression/compression-including-empty-chunk.any.js
similarity index 52%
rename from test/fixtures/wpt/compression/compression-including-empty-chunk.tentative.any.js
rename to test/fixtures/wpt/compression/compression-including-empty-chunk.any.js
index a7fd1ceb24f086..3c7a722b7c19b5 100644
--- a/test/fixtures/wpt/compression/compression-including-empty-chunk.tentative.any.js
+++ b/test/fixtures/wpt/compression/compression-including-empty-chunk.any.js
@@ -1,5 +1,7 @@
 // META: global=window,worker,shadowrealm
 // META: script=third_party/pako/pako_inflate.min.js
+// META: script=resources/decompress.js
+// META: script=resources/formats.js
 // META: timeout=long
 
 'use strict';
@@ -42,22 +44,13 @@ const chunkLists = [
 ];
 const expectedValue = new TextEncoder().encode('HelloHello');
 
-for (const chunkList of chunkLists) {
-  promise_test(async t => {
-    const compressedData = await compressChunkList(chunkList, 'deflate');
-    // decompress with pako, and check that we got the same result as our original string
-    assert_array_equals(expectedValue, pako.inflate(compressedData), 'value should match');
-  }, `the result of compressing [${chunkList}] with deflate should be 'HelloHello'`);
-
-  promise_test(async t => {
-    const compressedData = await compressChunkList(chunkList, 'gzip');
-    // decompress with pako, and check that we got the same result as our original string
-    assert_array_equals(expectedValue, pako.inflate(compressedData), 'value should match');
-  }, `the result of compressing [${chunkList}] with gzip should be 'HelloHello'`);
-
-  promise_test(async t => {
-    const compressedData = await compressChunkList(chunkList, 'deflate-raw');
-    // decompress with pako, and check that we got the same result as our original string
-    assert_array_equals(expectedValue, pako.inflateRaw(compressedData), 'value should match');
-  }, `the result of compressing [${chunkList}] with deflate-raw should be 'HelloHello'`);
+for (const format of formats) {
+  for (const chunkList of chunkLists) {
+    promise_test(async t => {
+      const compressedData = await compressChunkList(chunkList, format);
+      const decompressedData = await decompressDataOrPako(compressedData, format);
+      // check that we got the same result as our original string
+      assert_array_equals(expectedValue, decompressedData, 'value should match');
+    }, `the result of compressing [${chunkList}] with ${format} should be 'HelloHello'`);
+  }
 }
diff --git a/test/fixtures/wpt/compression/compression-large-flush-output.any.js b/test/fixtures/wpt/compression/compression-large-flush-output.any.js
index 6afcb4d52875b9..bc9c553b967394 100644
--- a/test/fixtures/wpt/compression/compression-large-flush-output.any.js
+++ b/test/fixtures/wpt/compression/compression-large-flush-output.any.js
@@ -1,6 +1,8 @@
 // META: global=window,worker,shadowrealm
 // META: script=third_party/pako/pako_inflate.min.js
 // META: script=resources/concatenate-stream.js
+// META: script=resources/decompress.js
+// META: script=resources/formats.js
 // META: timeout=long
 
 'use strict';
@@ -21,21 +23,11 @@ const fullData = new TextEncoder().encode(JSON.stringify(Array.from({ length: 10
 const data = fullData.subarray(0, 35_579);
 const expectedValue = data;
 
-promise_test(async t => {
-  const compressedData = await compressData(data, 'deflate');
-  // decompress with pako, and check that we got the same result as our original string
-  assert_array_equals(expectedValue, pako.inflate(compressedData), 'value should match');
-}, `deflate compression with large flush output`);
-
-promise_test(async t => {
-  const compressedData = await compressData(data, 'gzip');
-  // decompress with pako, and check that we got the same result as our original string
-  assert_array_equals(expectedValue, pako.inflate(compressedData), 'value should match');
-}, `gzip compression with large flush output`);
-
-promise_test(async t => {
-  const compressedData = await compressData(data, 'deflate-raw');
-  // decompress with pako, and check that we got the same result as our original string
-  assert_array_equals(expectedValue, pako.inflateRaw(compressedData), 'value should match');
-}, `deflate-raw compression with large flush output`);
-
+for (const format of formats) {
+  promise_test(async t => {
+    const compressedData = await compressData(data, format);
+    const decompressedData = await decompressDataOrPako(compressedData, format);
+    // check that we got the same result as our original string
+    assert_array_equals(decompressedData, expectedValue, 'value should match');
+  }, `${format} compression with large flush output`);
+}
diff --git a/test/fixtures/wpt/compression/compression-multiple-chunks.any.js b/test/fixtures/wpt/compression/compression-multiple-chunks.any.js
new file mode 100644
index 00000000000000..2a77df2c945249
--- /dev/null
+++ b/test/fixtures/wpt/compression/compression-multiple-chunks.any.js
@@ -0,0 +1,58 @@
+// META: global=window,worker,shadowrealm
+// META: script=third_party/pako/pako_inflate.min.js
+// META: script=resources/decompress.js
+// META: script=resources/formats.js
+// META: timeout=long
+
+'use strict';
+
+// This test asserts that compressing multiple chunks should work.
+
+// Example: ('Hello', 3) => TextEncoder().encode('HelloHelloHello')
+function makeExpectedChunk(input, numberOfChunks) {
+  const expectedChunk = input.repeat(numberOfChunks);
+  return new TextEncoder().encode(expectedChunk);
+}
+
+// Example: ('Hello', 3, 'deflate') => compress ['Hello', 'Hello', Hello']
+async function compressMultipleChunks(input, numberOfChunks, format) {
+  const cs = new CompressionStream(format);
+  const writer = cs.writable.getWriter();
+  const chunk = new TextEncoder().encode(input);
+  for (let i = 0; i < numberOfChunks; ++i) {
+    writer.write(chunk);
+  }
+  const closePromise = writer.close();
+  const out = [];
+  const reader = cs.readable.getReader();
+  let totalSize = 0;
+  while (true) {
+    const { value, done } = await reader.read();
+    if (done)
+      break;
+    out.push(value);
+    totalSize += value.byteLength;
+  }
+  await closePromise;
+  const concatenated = new Uint8Array(totalSize);
+  let offset = 0;
+  for (const array of out) {
+    concatenated.set(array, offset);
+    offset += array.byteLength;
+  }
+  return concatenated;
+}
+
+const hello = 'Hello';
+
+for (const format of formats) {
+  for (let numberOfChunks = 2; numberOfChunks <= 16; ++numberOfChunks) {
+    promise_test(async t => {
+      const compressedData = await compressMultipleChunks(hello, numberOfChunks, format);
+      const decompressedData = await decompressDataOrPako(compressedData, format);
+      const expectedValue = makeExpectedChunk(hello, numberOfChunks);
+      // check that we got the same result as our original string
+      assert_array_equals(decompressedData, expectedValue, 'value should match');
+    }, `compressing ${numberOfChunks} chunks with ${format} should work`);
+  }
+}
diff --git a/test/fixtures/wpt/compression/compression-multiple-chunks.tentative.any.js b/test/fixtures/wpt/compression/compression-multiple-chunks.tentative.any.js
deleted file mode 100644
index 28a90e5ca53902..00000000000000
--- a/test/fixtures/wpt/compression/compression-multiple-chunks.tentative.any.js
+++ /dev/null
@@ -1,67 +0,0 @@
-// META: global=window,worker,shadowrealm
-// META: script=third_party/pako/pako_inflate.min.js
-// META: timeout=long
-
-'use strict';
-
-// This test asserts that compressing multiple chunks should work.
-
-// Example: ('Hello', 3) => TextEncoder().encode('HelloHelloHello')
-function makeExpectedChunk(input, numberOfChunks) {
-  const expectedChunk = input.repeat(numberOfChunks);
-  return new TextEncoder().encode(expectedChunk);
-}
-
-// Example: ('Hello', 3, 'deflate') => compress ['Hello', 'Hello', Hello']
-async function compressMultipleChunks(input, numberOfChunks, format) {
-  const cs = new CompressionStream(format);
-  const writer = cs.writable.getWriter();
-  const chunk = new TextEncoder().encode(input);
-  for (let i = 0; i < numberOfChunks; ++i) {
-    writer.write(chunk);
-  }
-  const closePromise = writer.close();
-  const out = [];
-  const reader = cs.readable.getReader();
-  let totalSize = 0;
-  while (true) {
-    const { value, done } = await reader.read();
-    if (done)
-      break;
-    out.push(value);
-    totalSize += value.byteLength;
-  }
-  await closePromise;
-  const concatenated = new Uint8Array(totalSize);
-  let offset = 0;
-  for (const array of out) {
-    concatenated.set(array, offset);
-    offset += array.byteLength;
-  }
-  return concatenated;
-}
-
-const hello = 'Hello';
-
-for (let numberOfChunks = 2; numberOfChunks <= 16; ++numberOfChunks) {
-  promise_test(async t => {
-    const compressedData = await compressMultipleChunks(hello, numberOfChunks, 'deflate');
-    const expectedValue = makeExpectedChunk(hello, numberOfChunks);
-    // decompress with pako, and check that we got the same result as our original string
-    assert_array_equals(expectedValue, pako.inflate(compressedData), 'value should match');
-  }, `compressing ${numberOfChunks} chunks with deflate should work`);
-
-  promise_test(async t => {
-    const compressedData = await compressMultipleChunks(hello, numberOfChunks, 'gzip');
-    const expectedValue = makeExpectedChunk(hello, numberOfChunks);
-    // decompress with pako, and check that we got the same result as our original string
-    assert_array_equals(expectedValue, pako.inflate(compressedData), 'value should match');
-  }, `compressing ${numberOfChunks} chunks with gzip should work`);
-
-  promise_test(async t => {
-    const compressedData = await compressMultipleChunks(hello, numberOfChunks, 'deflate-raw');
-    const expectedValue = makeExpectedChunk(hello, numberOfChunks);
-    // decompress with pako, and check that we got the same result as our original string
-    assert_array_equals(expectedValue, pako.inflateRaw(compressedData), 'value should match');
-  }, `compressing ${numberOfChunks} chunks with deflate-raw should work`);
-}
diff --git a/test/fixtures/wpt/compression/compression-output-length.any.js b/test/fixtures/wpt/compression/compression-output-length.any.js
new file mode 100644
index 00000000000000..726c32f5ff5e82
--- /dev/null
+++ b/test/fixtures/wpt/compression/compression-output-length.any.js
@@ -0,0 +1,47 @@
+// META: global=window,worker,shadowrealm
+// META: script=resources/formats.js
+
+'use strict';
+
+// This test asserts that compressed data length is shorter than the original
+// data length. If the input is extremely small, the compressed data may be
+// larger than the original data.
+
+const LARGE_FILE = '/media/test-av-384k-44100Hz-1ch-320x240-30fps-10kfr.webm';
+
+async function compressArrayBuffer(input, format) {
+  const cs = new CompressionStream(format);
+  const writer = cs.writable.getWriter();
+  writer.write(input);
+  const closePromise = writer.close();
+  const out = [];
+  const reader = cs.readable.getReader();
+  let totalSize = 0;
+  while (true) {
+    const { value, done } = await reader.read();
+    if (done)
+      break;
+    out.push(value);
+    totalSize += value.byteLength;
+  }
+  await closePromise;
+  const concatenated = new Uint8Array(totalSize);
+  let offset = 0;
+  for (const array of out) {
+    concatenated.set(array, offset);
+    offset += array.byteLength;
+  }
+  return concatenated;
+}
+
+for (const format of formats) {
+  promise_test(async () => {
+    const response = await fetch(LARGE_FILE);
+    const buffer = await response.arrayBuffer();
+    const bufferView = new Uint8Array(buffer);
+    const originalLength = bufferView.length;
+    const compressedData = await compressArrayBuffer(bufferView, format);
+    const compressedLength = compressedData.length;
+    assert_less_than(compressedLength, originalLength, 'output should be smaller');
+  }, `the length of ${format} data should be shorter than that of the original data`);
+}
diff --git a/test/fixtures/wpt/compression/compression-output-length.tentative.any.js b/test/fixtures/wpt/compression/compression-output-length.tentative.any.js
deleted file mode 100644
index 7aa13734500d26..00000000000000
--- a/test/fixtures/wpt/compression/compression-output-length.tentative.any.js
+++ /dev/null
@@ -1,64 +0,0 @@
-// META: global=window,worker,shadowrealm
-
-'use strict';
-
-// This test asserts that compressed data length is shorter than the original
-// data length. If the input is extremely small, the compressed data may be
-// larger than the original data.
-
-const LARGE_FILE = '/media/test-av-384k-44100Hz-1ch-320x240-30fps-10kfr.webm';
-
-async function compressArrayBuffer(input, format) {
-  const cs = new CompressionStream(format);
-  const writer = cs.writable.getWriter();
-  writer.write(input);
-  const closePromise = writer.close();
-  const out = [];
-  const reader = cs.readable.getReader();
-  let totalSize = 0;
-  while (true) {
-    const { value, done } = await reader.read();
-    if (done)
-      break;
-    out.push(value);
-    totalSize += value.byteLength;
-  }
-  await closePromise;
-  const concatenated = new Uint8Array(totalSize);
-  let offset = 0;
-  for (const array of out) {
-    concatenated.set(array, offset);
-    offset += array.byteLength;
-  }
-  return concatenated;
-}
-
-promise_test(async () => {
-  const response = await fetch(LARGE_FILE);
-  const buffer = await response.arrayBuffer();
-  const bufferView = new Uint8Array(buffer);
-  const originalLength = bufferView.length;
-  const compressedData = await compressArrayBuffer(bufferView, 'deflate');
-  const compressedLength = compressedData.length;
-  assert_less_than(compressedLength, originalLength, 'output should be smaller');
-}, 'the length of deflated data should be shorter than that of the original data');
-
-promise_test(async () => {
-  const response = await fetch(LARGE_FILE);
-  const buffer = await response.arrayBuffer();
-  const bufferView = new Uint8Array(buffer);
-  const originalLength = bufferView.length;
-  const compressedData = await compressArrayBuffer(bufferView, 'gzip');
-  const compressedLength = compressedData.length;
-  assert_less_than(compressedLength, originalLength, 'output should be smaller');
-}, 'the length of gzipped data should be shorter than that of the original data');
-
-promise_test(async () => {
-  const response = await fetch(LARGE_FILE);
-  const buffer = await response.arrayBuffer();
-  const bufferView = new Uint8Array(buffer);
-  const originalLength = bufferView.length;
-  const compressedData = await compressArrayBuffer(bufferView, 'deflate-raw');
-  const compressedLength = compressedData.length;
-  assert_less_than(compressedLength, originalLength, 'output should be smaller');
-}, 'the length of deflated (with -raw) data should be shorter than that of the original data');
diff --git a/test/fixtures/wpt/compression/compression-stream.any.js b/test/fixtures/wpt/compression/compression-stream.any.js
new file mode 100644
index 00000000000000..02183da0c63853
--- /dev/null
+++ b/test/fixtures/wpt/compression/compression-stream.any.js
@@ -0,0 +1,59 @@
+// META: global=window,worker,shadowrealm
+// META: script=third_party/pako/pako_inflate.min.js
+// META: script=resources/decompress.js
+// META: script=resources/formats.js
+// META: timeout=long
+
+'use strict';
+
+const SMALL_FILE = "/media/foo.vtt";
+const LARGE_FILE = "/media/test-av-384k-44100Hz-1ch-320x240-30fps-10kfr.webm";
+
+let dataPromiseList = [
+  ["empty data", Promise.resolve(new Uint8Array(0))],
+  ["small amount data", fetch(SMALL_FILE).then(response => response.bytes())],
+  ["large amount data", fetch(LARGE_FILE).then(response => response.bytes())],
+];
+
+async function compressArrayBuffer(input, format) {
+  const cs = new CompressionStream(format);
+  const writer = cs.writable.getWriter();
+  writer.write(input);
+  const closePromise = writer.close();
+  const out = [];
+  const reader = cs.readable.getReader();
+  let totalSize = 0;
+  while (true) {
+    const { value, done } = await reader.read();
+    if (done)
+      break;
+    out.push(value);
+    totalSize += value.byteLength;
+  }
+  await closePromise;
+  const concatenated = new Uint8Array(totalSize);
+  let offset = 0;
+  for (const array of out) {
+    concatenated.set(array, offset);
+    offset += array.byteLength;
+  }
+  return concatenated;
+}
+
+test(() => {
+  assert_throws_js(TypeError, () => {
+    const transformer = new CompressionStream("nonvalid");
+  }, "non supported format should throw");
+}, "CompressionStream constructor should throw on invalid format");
+
+for (const format of formats) {
+  for (const [label, dataPromise] of dataPromiseList) {
+    promise_test(async () => {
+      const bufferView = await dataPromise;
+      const compressedData = await compressArrayBuffer(bufferView, format);
+      const decompressedData = await decompressDataOrPako(compressedData, format);
+      // check that we got the same result as our original string
+      assert_array_equals(decompressedData, bufferView, 'value should match');
+    }, `${format} ${label} should be reinflated back to its origin`);
+  }
+}
diff --git a/test/fixtures/wpt/compression/compression-stream.tentative.any.js b/test/fixtures/wpt/compression/compression-stream.tentative.any.js
deleted file mode 100644
index a7ea0cb908402f..00000000000000
--- a/test/fixtures/wpt/compression/compression-stream.tentative.any.js
+++ /dev/null
@@ -1,91 +0,0 @@
-// META: global=window,worker,shadowrealm
-// META: script=third_party/pako/pako_inflate.min.js
-// META: timeout=long
-
-'use strict';
-
-const SMALL_FILE = "/media/foo.vtt";
-const LARGE_FILE = "/media/test-av-384k-44100Hz-1ch-320x240-30fps-10kfr.webm";
-
-async function compressArrayBuffer(input, format) {
-  const cs = new CompressionStream(format);
-  const writer = cs.writable.getWriter();
-  writer.write(input);
-  const closePromise = writer.close();
-  const out = [];
-  const reader = cs.readable.getReader();
-  let totalSize = 0;
-  while (true) {
-    const { value, done } = await reader.read();
-    if (done)
-      break;
-    out.push(value);
-    totalSize += value.byteLength;
-  }
-  await closePromise;
-  const concatenated = new Uint8Array(totalSize);
-  let offset = 0;
-  for (const array of out) {
-    concatenated.set(array, offset);
-    offset += array.byteLength;
-  }
-  return concatenated;
-}
-
-test(() => {
-  assert_throws_js(TypeError, () => {
-    const transformer = new CompressionStream("nonvalid");
-  }, "non supported format should throw");
-}, "CompressionStream constructor should throw on invalid format");
-
-promise_test(async () => {
-  const buffer = new ArrayBuffer(0);
-  const bufferView = new Uint8Array(buffer);
-  const compressedData = await compressArrayBuffer(bufferView, "deflate");
-  // decompress with pako, and check that we got the same result as our original string
-  assert_array_equals(bufferView, pako.inflate(compressedData));
-}, "deflated empty data should be reinflated back to its origin");
-
-promise_test(async () => {
-  const response = await fetch(SMALL_FILE)
-  const buffer = await response.arrayBuffer();
-  const bufferView = new Uint8Array(buffer);
-  const compressedData = await compressArrayBuffer(bufferView, "deflate");
-  // decompress with pako, and check that we got the same result as our original string
-  assert_array_equals(bufferView, pako.inflate(compressedData));
-}, "deflated small amount data should be reinflated back to its origin");
-
-promise_test(async () => {
-  const response = await fetch(LARGE_FILE)
-  const buffer = await response.arrayBuffer();
-  const bufferView = new Uint8Array(buffer);
-  const compressedData = await compressArrayBuffer(bufferView, "deflate");
-  // decompress with pako, and check that we got the same result as our original string
-  assert_array_equals(bufferView, pako.inflate(compressedData));
-}, "deflated large amount data should be reinflated back to its origin");
-
-promise_test(async () => {
-  const buffer = new ArrayBuffer(0);
-  const bufferView = new Uint8Array(buffer);
-  const compressedData = await compressArrayBuffer(bufferView, "gzip");
-  // decompress with pako, and check that we got the same result as our original string
-  assert_array_equals(bufferView, pako.inflate(compressedData));
-}, "gzipped empty data should be reinflated back to its origin");
-
-promise_test(async () => {
-  const response = await fetch(SMALL_FILE)
-  const buffer = await response.arrayBuffer();
-  const bufferView = new Uint8Array(buffer);
-  const compressedData = await compressArrayBuffer(bufferView, "gzip");
-  // decompress with pako, and check that we got the same result as our original string
-  assert_array_equals(bufferView, pako.inflate(compressedData));
-}, "gzipped small amount data should be reinflated back to its origin");
-
-promise_test(async () => {
-  const response = await fetch(LARGE_FILE)
-  const buffer = await response.arrayBuffer();
-  const bufferView = new Uint8Array(buffer);
-  const compressedData = await compressArrayBuffer(bufferView, "gzip");
-  // decompress with pako, and check that we got the same result as our original string
-  assert_array_equals(bufferView, pako.inflate(compressedData));
-}, "gzipped large amount data should be reinflated back to its origin");
diff --git a/test/fixtures/wpt/compression/compression-with-detach.tentative.window.js b/test/fixtures/wpt/compression/compression-with-detach.window.js
similarity index 100%
rename from test/fixtures/wpt/compression/compression-with-detach.tentative.window.js
rename to test/fixtures/wpt/compression/compression-with-detach.window.js
diff --git a/test/fixtures/wpt/compression/decompression-bad-chunks.tentative.any.js b/test/fixtures/wpt/compression/decompression-bad-chunks.any.js
similarity index 82%
rename from test/fixtures/wpt/compression/decompression-bad-chunks.tentative.any.js
rename to test/fixtures/wpt/compression/decompression-bad-chunks.any.js
index f450b0c4cb2553..57adebb2837228 100644
--- a/test/fixtures/wpt/compression/decompression-bad-chunks.tentative.any.js
+++ b/test/fixtures/wpt/compression/decompression-bad-chunks.any.js
@@ -1,4 +1,5 @@
 // META: global=window,worker,shadowrealm
+// META: script=resources/formats.js
 
 'use strict';
 
@@ -70,16 +71,10 @@ async function decompress(chunk, format, t)
     await promise_rejects_js(t, TypeError, reader.closed, 'read.closed should reject');
 }
 
-for (const chunk of badChunks) {
-  promise_test(async t => {
-    await decompress(chunk, 'gzip', t);
-  }, `chunk of type ${chunk.name} should error the stream for gzip`);
-
-  promise_test(async t => {
-    await decompress(chunk, 'deflate', t);
-  }, `chunk of type ${chunk.name} should error the stream for deflate`);
-
-  promise_test(async t => {
-    await decompress(chunk, 'deflate-raw', t);
-  }, `chunk of type ${chunk.name} should error the stream for deflate-raw`);
+for (const format of formats) {
+  for (const chunk of badChunks) {
+    promise_test(async t => {
+      await decompress(chunk, format, t);
+    }, `chunk of type ${chunk.name} should error the stream for ${format}`);
+  }
 }
diff --git a/test/fixtures/wpt/compression/decompression-buffersource.any.js b/test/fixtures/wpt/compression/decompression-buffersource.any.js
new file mode 100644
index 00000000000000..56216c8bd62372
--- /dev/null
+++ b/test/fixtures/wpt/compression/decompression-buffersource.any.js
@@ -0,0 +1,86 @@
+// META: global=window,worker,shadowrealm
+
+'use strict';
+
+const compressedBytes = [
+  ["deflate", [120, 156, 75, 52, 48, 52, 50, 54, 49, 53, 3, 0, 8, 136, 1, 199]],
+  ["gzip", [31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 75, 52, 48, 52, 2, 0, 216, 252, 63, 136, 4, 0, 0, 0]],
+  ["deflate-raw", [
+    0x00, 0x06, 0x00, 0xf9, 0xff, 0x41, 0x42, 0x43,
+    0x44, 0x45, 0x46, 0x01, 0x00, 0x00, 0xff, 0xff,
+  ]],
+  ["brotli", [0x21, 0x08, 0x00, 0x04, 0x66, 0x6F, 0x6F, 0x03]]
+];
+// These chunk values below were chosen to make the length of the compressed
+// output be a multiple of 8 bytes.
+const expectedChunkValue = new Map(Object.entries({
+  "deflate": new TextEncoder().encode('a0123456'),
+  "gzip": new TextEncoder().encode('a012'),
+  "deflate-raw": new TextEncoder().encode('ABCDEF'),
+  "brotli": new TextEncoder().encode('foo'),
+}));
+
+const bufferSourceChunks = compressedBytes.map(([format, bytes]) => [format, [
+  {
+    name: 'ArrayBuffer',
+    value: new Uint8Array(bytes).buffer
+  },
+  {
+    name: 'Int8Array',
+    value: new Int8Array(new Uint8Array(bytes).buffer)
+  },
+  {
+    name: 'Uint8Array',
+    value: new Uint8Array(new Uint8Array(bytes).buffer)
+  },
+  {
+    name: 'Uint8ClampedArray',
+    value: new Uint8ClampedArray(new Uint8Array(bytes).buffer)
+  },
+  {
+    name: 'Int16Array',
+    value: new Int16Array(new Uint8Array(bytes).buffer)
+  },
+  {
+    name: 'Uint16Array',
+    value: new Uint16Array(new Uint8Array(bytes).buffer)
+  },
+  {
+    name: 'Int32Array',
+    value: new Int32Array(new Uint8Array(bytes).buffer)
+  },
+  {
+    name: 'Uint32Array',
+    value: new Uint32Array(new Uint8Array(bytes).buffer)
+  },
+  {
+    name: 'Float16Array',
+    value: () => new Float16Array(new Uint8Array(bytes).buffer)
+  },
+  {
+    name: 'Float32Array',
+    value: new Float32Array(new Uint8Array(bytes).buffer)
+  },
+  {
+    name: 'Float64Array',
+    value: new Float64Array(new Uint8Array(bytes).buffer)
+  },
+  {
+    name: 'DataView',
+    value: new DataView(new Uint8Array(bytes).buffer)
+  },
+]]);
+
+for (const [format, chunks] of bufferSourceChunks) {
+  for (const chunk of chunks) {
+    promise_test(async t => {
+      const ds = new DecompressionStream(format);
+      const reader = ds.readable.getReader();
+      const writer = ds.writable.getWriter();
+      const writePromise = writer.write(typeof chunk.value === 'function' ? chunk.value() : chunk.value);
+      writer.close();
+      const { value } = await reader.read();
+      assert_array_equals(Array.from(value), expectedChunkValue.get(format), 'value should match');
+    }, `chunk of type ${chunk.name} should work for ${format}`);
+  }
+}
diff --git a/test/fixtures/wpt/compression/decompression-buffersource.tentative.any.js b/test/fixtures/wpt/compression/decompression-buffersource.tentative.any.js
deleted file mode 100644
index f4316ba1fc876e..00000000000000
--- a/test/fixtures/wpt/compression/decompression-buffersource.tentative.any.js
+++ /dev/null
@@ -1,204 +0,0 @@
-// META: global=window,worker,shadowrealm
-
-'use strict';
-
-const compressedBytesWithDeflate = [120, 156, 75, 52, 48, 52, 50, 54, 49, 53, 3, 0, 8, 136, 1, 199];
-const compressedBytesWithGzip = [31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 75, 52, 48, 52, 2, 0, 216, 252, 63, 136, 4, 0, 0, 0];
-const compressedBytesWithDeflateRaw = [
-  0x00, 0x06, 0x00, 0xf9, 0xff, 0x41, 0x42, 0x43,
-  0x44, 0x45, 0x46, 0x01, 0x00, 0x00, 0xff, 0xff,
-];
-// These chunk values below were chosen to make the length of the compressed
-// output be a multiple of 8 bytes.
-const deflateExpectedChunkValue = new TextEncoder().encode('a0123456');
-const gzipExpectedChunkValue = new TextEncoder().encode('a012');
-const deflateRawExpectedChunkValue = new TextEncoder().encode('ABCDEF');
-
-const bufferSourceChunksForDeflate = [
-  {
-    name: 'ArrayBuffer',
-    value: new Uint8Array(compressedBytesWithDeflate).buffer
-  },
-  {
-    name: 'Int8Array',
-    value: new Int8Array(new Uint8Array(compressedBytesWithDeflate).buffer)
-  },
-  {
-    name: 'Uint8Array',
-    value: new Uint8Array(new Uint8Array(compressedBytesWithDeflate).buffer)
-  },
-  {
-    name: 'Uint8ClampedArray',
-    value: new Uint8ClampedArray(new Uint8Array(compressedBytesWithDeflate).buffer)
-  },
-  {
-    name: 'Int16Array',
-    value: new Int16Array(new Uint8Array(compressedBytesWithDeflate).buffer)
-  },
-  {
-    name: 'Uint16Array',
-    value: new Uint16Array(new Uint8Array(compressedBytesWithDeflate).buffer)
-  },
-  {
-    name: 'Int32Array',
-    value: new Int32Array(new Uint8Array(compressedBytesWithDeflate).buffer)
-  },
-  {
-    name: 'Uint32Array',
-    value: new Uint32Array(new Uint8Array(compressedBytesWithDeflate).buffer)
-  },
-  {
-    name: 'Float16Array',
-    value: () => new Float16Array(new Uint8Array(compressedBytesWithDeflate).buffer)
-  },
-  {
-    name: 'Float32Array',
-    value: new Float32Array(new Uint8Array(compressedBytesWithDeflate).buffer)
-  },
-  {
-    name: 'Float64Array',
-    value: new Float64Array(new Uint8Array(compressedBytesWithDeflate).buffer)
-  },
-  {
-    name: 'DataView',
-    value: new DataView(new Uint8Array(compressedBytesWithDeflate).buffer)
-  },
-];
-
-const bufferSourceChunksForGzip = [
-  {
-    name: 'ArrayBuffer',
-    value: new Uint8Array(compressedBytesWithGzip).buffer
-  },
-  {
-    name: 'Int8Array',
-    value: new Int8Array(new Uint8Array(compressedBytesWithGzip).buffer)
-  },
-  {
-    name: 'Uint8Array',
-    value: new Uint8Array(new Uint8Array(compressedBytesWithGzip).buffer)
-  },
-  {
-    name: 'Uint8ClambedArray',
-    value: new Uint8ClampedArray(new Uint8Array(compressedBytesWithGzip).buffer)
-  },
-  {
-    name: 'Int16Array',
-    value: new Int16Array(new Uint8Array(compressedBytesWithGzip).buffer)
-  },
-  {
-    name: 'Uint16Array',
-    value: new Uint16Array(new Uint8Array(compressedBytesWithGzip).buffer)
-  },
-  {
-    name: 'Int32Array',
-    value: new Int32Array(new Uint8Array(compressedBytesWithGzip).buffer)
-  },
-  {
-    name: 'Uint32Array',
-    value: new Uint32Array(new Uint8Array(compressedBytesWithGzip).buffer)
-  },
-  {
-    name: 'Float16Array',
-    value: () => new Float16Array(new Uint8Array(compressedBytesWithGzip).buffer)
-  },
-  {
-    name: 'Float32Array',
-    value: new Float32Array(new Uint8Array(compressedBytesWithGzip).buffer)
-  },
-  {
-    name: 'Float64Array',
-    value: new Float64Array(new Uint8Array(compressedBytesWithGzip).buffer)
-  },
-  {
-    name: 'DataView',
-    value: new DataView(new Uint8Array(compressedBytesWithGzip).buffer)
-  },
-];
-
-const bufferSourceChunksForDeflateRaw = [
-  {
-    name: 'ArrayBuffer',
-    value: new Uint8Array(compressedBytesWithDeflateRaw).buffer
-  },
-  {
-    name: 'Int8Array',
-    value: new Int8Array(new Uint8Array(compressedBytesWithDeflateRaw).buffer)
-  },
-  {
-    name: 'Uint8Array',
-    value: new Uint8Array(new Uint8Array(compressedBytesWithDeflateRaw).buffer)
-  },
-  {
-    name: 'Uint8ClampedArray',
-    value: new Uint8ClampedArray(new Uint8Array(compressedBytesWithDeflateRaw).buffer)
-  },
-  {
-    name: 'Int16Array',
-    value: new Int16Array(new Uint8Array(compressedBytesWithDeflateRaw).buffer)
-  },
-  {
-    name: 'Uint16Array',
-    value: new Uint16Array(new Uint8Array(compressedBytesWithDeflateRaw).buffer)
-  },
-  {
-    name: 'Int32Array',
-    value: new Int32Array(new Uint8Array(compressedBytesWithDeflateRaw).buffer)
-  },
-  {
-    name: 'Uint32Array',
-    value: new Uint32Array(new Uint8Array(compressedBytesWithDeflateRaw).buffer)
-  },
-  {
-    name: 'Float16Array',
-    value: () => new Float16Array(new Uint8Array(compressedBytesWithDeflateRaw).buffer)
-  },
-  {
-    name: 'Float32Array',
-    value: new Float32Array(new Uint8Array(compressedBytesWithDeflateRaw).buffer)
-  },
-  {
-    name: 'Float64Array',
-    value: new Float64Array(new Uint8Array(compressedBytesWithDeflateRaw).buffer)
-  },
-  {
-    name: 'DataView',
-    value: new DataView(new Uint8Array(compressedBytesWithDeflateRaw).buffer)
-  },
-];
-
-for (const chunk of bufferSourceChunksForDeflate) {
-  promise_test(async t => {
-    const ds = new DecompressionStream('deflate');
-    const reader = ds.readable.getReader();
-    const writer = ds.writable.getWriter();
-    const writePromise = writer.write(typeof chunk.value === 'function' ? chunk.value() : chunk.value);
-    writer.close();
-    const { value } = await reader.read();
-    assert_array_equals(Array.from(value), deflateExpectedChunkValue, 'value should match');
-  }, `chunk of type ${chunk.name} should work for deflate`);
-}
-
-for (const chunk of bufferSourceChunksForGzip) {
-  promise_test(async t => {
-    const ds = new DecompressionStream('gzip');
-    const reader = ds.readable.getReader();
-    const writer = ds.writable.getWriter();
-    const writePromise = writer.write(typeof chunk.value === 'function' ? chunk.value() : chunk.value);
-    writer.close();
-    const { value } = await reader.read();
-    assert_array_equals(Array.from(value), gzipExpectedChunkValue, 'value should match');
-  }, `chunk of type ${chunk.name} should work for gzip`);
-}
-
-for (const chunk of bufferSourceChunksForDeflateRaw) {
-  promise_test(async t => {
-    const ds = new DecompressionStream('deflate-raw');
-    const reader = ds.readable.getReader();
-    const writer = ds.writable.getWriter();
-    const writePromise = writer.write(typeof chunk.value === 'function' ? chunk.value() : chunk.value);
-    writer.close();
-    const { value } = await reader.read();
-    assert_array_equals(Array.from(value), deflateRawExpectedChunkValue, 'value should match');
-  }, `chunk of type ${chunk.name} should work for deflate-raw`);
-}
diff --git a/test/fixtures/wpt/compression/decompression-constructor-error.tentative.any.js b/test/fixtures/wpt/compression/decompression-constructor-error.any.js
similarity index 100%
rename from test/fixtures/wpt/compression/decompression-constructor-error.tentative.any.js
rename to test/fixtures/wpt/compression/decompression-constructor-error.any.js
diff --git a/test/fixtures/wpt/compression/decompression-correct-input.any.js b/test/fixtures/wpt/compression/decompression-correct-input.any.js
new file mode 100644
index 00000000000000..0d0d82e714a882
--- /dev/null
+++ b/test/fixtures/wpt/compression/decompression-correct-input.any.js
@@ -0,0 +1,15 @@
+// META: global=window,worker,shadowrealm
+// META: script=resources/decompression-input.js
+
+'use strict';
+
+for (const [format, chunk] of compressedBytes) {
+  promise_test(async t => {
+    const ds = new DecompressionStream(format);
+    const reader = ds.readable.getReader();
+    const writer = ds.writable.getWriter();
+    const writePromise = writer.write(chunk);
+    const { done, value } = await reader.read();
+    assert_array_equals(Array.from(value), expectedChunkValue, "value should match");
+  }, `decompressing ${format} input should work`);
+}
diff --git a/test/fixtures/wpt/compression/decompression-correct-input.tentative.any.js b/test/fixtures/wpt/compression/decompression-correct-input.tentative.any.js
deleted file mode 100644
index 90519445e3667b..00000000000000
--- a/test/fixtures/wpt/compression/decompression-correct-input.tentative.any.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// META: global=window,worker,shadowrealm
-
-'use strict';
-
-const deflateChunkValue = new Uint8Array([120, 156, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 48, 173, 6, 36]);
-const gzipChunkValue = new Uint8Array([31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 176, 1, 57, 179, 15, 0, 0, 0]);
-const deflateRawChunkValue = new Uint8Array([
-    0x4b, 0xad, 0x28, 0x48, 0x4d, 0x2e, 0x49, 0x4d, 0x51, 0xc8,
-    0x2f, 0x2d, 0x29, 0x28, 0x2d, 0x01, 0x00,
-]);
-const trueChunkValue = new TextEncoder().encode('expected output');
-
-promise_test(async t => {
-    const ds = new DecompressionStream('deflate');
-    const reader = ds.readable.getReader();
-    const writer = ds.writable.getWriter();
-    const writePromise = writer.write(deflateChunkValue);
-    const { done, value } = await reader.read();
-    assert_array_equals(Array.from(value), trueChunkValue, "value should match");
-}, 'decompressing deflated input should work');
-
-
-promise_test(async t => {
-    const ds = new DecompressionStream('gzip');
-    const reader = ds.readable.getReader();
-    const writer = ds.writable.getWriter();
-    const writePromise = writer.write(gzipChunkValue);
-    const { done, value } = await reader.read();
-    assert_array_equals(Array.from(value), trueChunkValue, "value should match");
-}, 'decompressing gzip input should work');
-
-promise_test(async t => {
-    const ds = new DecompressionStream('deflate-raw');
-    const reader = ds.readable.getReader();
-    const writer = ds.writable.getWriter();
-    const writePromise = writer.write(deflateRawChunkValue);
-    const { done, value } = await reader.read();
-    assert_array_equals(Array.from(value), trueChunkValue, "value should match");
-}, 'decompressing deflated (with -raw) input should work');
diff --git a/test/fixtures/wpt/compression/decompression-corrupt-input.tentative.any.js b/test/fixtures/wpt/compression/decompression-corrupt-input.any.js
similarity index 93%
rename from test/fixtures/wpt/compression/decompression-corrupt-input.tentative.any.js
rename to test/fixtures/wpt/compression/decompression-corrupt-input.any.js
index fc18197dfbd3db..492232ee92b777 100644
--- a/test/fixtures/wpt/compression/decompression-corrupt-input.tentative.any.js
+++ b/test/fixtures/wpt/compression/decompression-corrupt-input.any.js
@@ -1,4 +1,5 @@
-// META global=window,worker,shadowrealm
+// META: global=window,worker,shadowrealm
+// META: script=resources/decompression-input.js
 
 // This test checks that DecompressionStream behaves according to the standard
 // when the input is corrupted. To avoid a combinatorial explosion in the
@@ -13,8 +14,7 @@ const expectations = [
     format: 'deflate',
 
     // Decompresses to 'expected output'.
-    baseInput: [120, 156, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41,
-                40, 45, 1, 0, 48, 173, 6, 36],
+    baseInput: deflateChunkValue,
 
     // See RFC1950 for the definition of the various fields used by deflate:
     // https://tools.ietf.org/html/rfc1950.
@@ -102,9 +102,7 @@ const expectations = [
     format: 'gzip',
 
     // Decompresses to 'expected output'.
-    baseInput: [31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 75, 173, 40, 72, 77, 46, 73,
-                77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 176, 1, 57, 179, 15, 0,
-                0, 0],
+    baseInput: gzipChunkValue,
 
     // See RFC1952 for the definition of the various fields used by gzip:
     // https://tools.ietf.org/html/rfc1952.
@@ -224,6 +222,14 @@ const expectations = [
         ]
       }
     ]
+  },
+  {
+    format: 'brotli',
+
+    // Decompresses to 'expected output'.
+    baseInput: brotliChunkValue,
+
+    fields: []
   }
 ];
 
@@ -274,18 +280,18 @@ function corruptInput(input, offset, length, value) {
 
 for (const { format, baseInput, fields } of expectations) {
   promise_test(async () => {
-    const { result } = await tryDecompress(new Uint8Array(baseInput), format);
+    const { result } = await tryDecompress(baseInput, format);
     assert_equals(result, 'success', 'decompression should succeed');
   }, `the unchanged input for '${format}' should decompress successfully`);
 
   promise_test(async () => {
-    const truncatedInput = new Uint8Array(baseInput.slice(0, -1));
+    const truncatedInput = baseInput.subarray(0, -1);
     const { result } = await tryDecompress(truncatedInput, format);
     assert_equals(result, 'error', 'decompression should fail');
   }, `truncating the input for '${format}' should give an error`);
 
   promise_test(async () => {
-    const extendedInput = new Uint8Array(baseInput.concat([0]));
+    const extendedInput = new Uint8Array([...baseInput, 0]);
     const { result } = await tryDecompress(extendedInput, format);
     assert_equals(result, 'error', 'decompression should fail');
   }, `trailing junk for '${format}' should give an error`);
diff --git a/test/fixtures/wpt/compression/decompression-empty-input.any.js b/test/fixtures/wpt/compression/decompression-empty-input.any.js
new file mode 100644
index 00000000000000..40a660dbe02898
--- /dev/null
+++ b/test/fixtures/wpt/compression/decompression-empty-input.any.js
@@ -0,0 +1,24 @@
+// META: global=window,worker,shadowrealm
+
+'use strict';
+
+const emptyValues = [
+  ["gzip", new Uint8Array([31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0])],
+  ["deflate", new Uint8Array([120, 156, 3, 0, 0, 0, 0, 1])],
+  ["deflate-raw", new Uint8Array([1, 0, 0, 255, 255])],
+  ["brotli", new Uint8Array([0xa1, 0x01])],
+];
+
+for (const [format, emptyValue] of emptyValues) {
+  promise_test(async t => {
+    const ds = new DecompressionStream(format);
+    const reader = ds.readable.getReader();
+    const writer = ds.writable.getWriter();
+    const writePromise = writer.write(emptyValue);
+    writer.close();
+    const { value, done } = await reader.read();
+    assert_true(done, "read() should set done");
+    assert_equals(value, undefined, "value should be undefined");
+    await writePromise;
+  }, `decompressing ${format} empty input should work`);
+}
diff --git a/test/fixtures/wpt/compression/decompression-empty-input.tentative.any.js b/test/fixtures/wpt/compression/decompression-empty-input.tentative.any.js
deleted file mode 100644
index 201db8ec0b0d7c..00000000000000
--- a/test/fixtures/wpt/compression/decompression-empty-input.tentative.any.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// META: global=window,worker,shadowrealm
-
-'use strict';
-
-const gzipEmptyValue = new Uint8Array([31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
-const deflateEmptyValue = new Uint8Array([120, 156, 3, 0, 0, 0, 0, 1]);
-const deflateRawEmptyValue = new Uint8Array([1, 0, 0, 255, 255]);
-
-promise_test(async t => {
-  const ds = new DecompressionStream('gzip');
-  const reader = ds.readable.getReader();
-  const writer = ds.writable.getWriter();
-  const writePromise = writer.write(gzipEmptyValue);
-  writer.close();
-  const { value, done } = await reader.read();
-  assert_true(done, "read() should set done");
-  assert_equals(value, undefined, "value should be undefined");
-  await writePromise;
-}, 'decompressing gzip empty input should work');
-
-promise_test(async t => {
-  const ds = new DecompressionStream('deflate');
-  const reader = ds.readable.getReader();
-  const writer = ds.writable.getWriter();
-  const writePromise = writer.write(deflateEmptyValue);
-  writer.close();
-  const { value, done } = await reader.read();
-  assert_true(done, "read() should set done");
-  assert_equals(value, undefined, "value should be undefined");
-  await writePromise;
-}, 'decompressing deflate empty input should work');
-
-promise_test(async t => {
-  const ds = new DecompressionStream('deflate-raw');
-  const reader = ds.readable.getReader();
-  const writer = ds.writable.getWriter();
-  const writePromise = writer.write(deflateRawEmptyValue);
-  writer.close();
-  const { value, done } = await reader.read();
-  assert_true(done, "read() should set done");
-  assert_equals(value, undefined, "value should be undefined");
-  await writePromise;
-}, 'decompressing deflate-raw empty input should work');
diff --git a/test/fixtures/wpt/compression/decompression-extra-input.any.js b/test/fixtures/wpt/compression/decompression-extra-input.any.js
new file mode 100644
index 00000000000000..e2c6a10a718516
--- /dev/null
+++ b/test/fixtures/wpt/compression/decompression-extra-input.any.js
@@ -0,0 +1,20 @@
+// META: global=window,worker,shadowrealm
+// META: script=resources/decompression-input.js
+
+'use strict';
+
+const tests = compressedBytes.map(
+  ([format, chunk]) => [format, new Uint8Array([...chunk, 0])]
+);
+
+for (const [format, chunk] of tests) {
+  promise_test(async t => {
+    const ds = new DecompressionStream(format);
+    const reader = ds.readable.getReader();
+    const writer = ds.writable.getWriter();
+    writer.write(chunk).catch(() => { });
+    const { done, value } = await reader.read();
+    assert_array_equals(Array.from(value), expectedChunkValue, "value should match");
+    await promise_rejects_js(t, TypeError, reader.read(), "Extra input should eventually throw");
+  }, `decompressing ${format} input with extra pad should still give the output`);
+}
diff --git a/test/fixtures/wpt/compression/decompression-split-chunk.any.js b/test/fixtures/wpt/compression/decompression-split-chunk.any.js
new file mode 100644
index 00000000000000..0408bfd9cd4336
--- /dev/null
+++ b/test/fixtures/wpt/compression/decompression-split-chunk.any.js
@@ -0,0 +1,38 @@
+// META: global=window,worker,shadowrealm
+// META: script=resources/decompression-input.js
+
+'use strict';
+
+async function decompressArrayBuffer(input, format, chunkSize) {
+  const ds = new DecompressionStream(format);
+  const reader = ds.readable.getReader();
+  const writer = ds.writable.getWriter();
+  for (let beginning = 0; beginning < input.length; beginning += chunkSize) {
+    writer.write(input.slice(beginning, beginning + chunkSize));
+  }
+  writer.close();
+  const out = [];
+  let totalSize = 0;
+  while (true) {
+    const { value, done } = await reader.read();
+    if (done) break;
+    out.push(value);
+    totalSize += value.byteLength;
+  }
+  const concatenated = new Uint8Array(totalSize);
+  let offset = 0;
+  for (const array of out) {
+    concatenated.set(array, offset);
+    offset += array.byteLength;
+  }
+  return concatenated;
+}
+
+for (const [format, bytes] of compressedBytes) {
+  for (let chunkSize = 1; chunkSize < 16; ++chunkSize) {
+    promise_test(async t => {
+      const decompressedData = await decompressArrayBuffer(bytes, format, chunkSize);
+      assert_array_equals(decompressedData, expectedChunkValue, "value should match");
+    }, `decompressing splitted chunk into pieces of size ${chunkSize} should work in ${format}`);
+  }
+}
diff --git a/test/fixtures/wpt/compression/decompression-split-chunk.tentative.any.js b/test/fixtures/wpt/compression/decompression-split-chunk.tentative.any.js
deleted file mode 100644
index eb12c2a2360cd9..00000000000000
--- a/test/fixtures/wpt/compression/decompression-split-chunk.tentative.any.js
+++ /dev/null
@@ -1,53 +0,0 @@
-// META: global=window,worker,shadowrealm
-
-'use strict';
-
-const compressedBytesWithDeflate = new Uint8Array([120, 156, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 48, 173, 6, 36]);
-const compressedBytesWithGzip = new Uint8Array([31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 176, 1, 57, 179, 15, 0, 0, 0]);
-const compressedBytesWithDeflateRaw = new Uint8Array([
-  0x4b, 0xad, 0x28, 0x48, 0x4d, 0x2e, 0x49, 0x4d, 0x51, 0xc8,
-  0x2f, 0x2d, 0x29, 0x28, 0x2d, 0x01, 0x00,
-]);
-const expectedChunkValue = new TextEncoder().encode('expected output');
-
-async function decompressArrayBuffer(input, format, chunkSize) {
-  const ds = new DecompressionStream(format);
-  const reader = ds.readable.getReader();
-  const writer = ds.writable.getWriter();
-  for (let beginning = 0; beginning < input.length; beginning += chunkSize) {
-    writer.write(input.slice(beginning, beginning + chunkSize));
-  }
-  writer.close();
-  const out = [];
-  let totalSize = 0;
-  while (true) {
-    const { value, done } = await reader.read();
-    if (done) break;
-    out.push(value);
-    totalSize += value.byteLength;
-  }
-  const concatenated = new Uint8Array(totalSize);
-  let offset = 0;
-  for (const array of out) {
-    concatenated.set(array, offset);
-    offset += array.byteLength;
-  }
-  return concatenated;
-}
-
-for (let chunkSize = 1; chunkSize < 16; ++chunkSize) {
-  promise_test(async t => {
-    const decompressedData = await decompressArrayBuffer(compressedBytesWithDeflate, 'deflate', chunkSize);
-    assert_array_equals(decompressedData, expectedChunkValue, "value should match");
-  }, `decompressing splitted chunk into pieces of size ${chunkSize} should work in deflate`);
-
-  promise_test(async t => {
-    const decompressedData = await decompressArrayBuffer(compressedBytesWithGzip, 'gzip', chunkSize);
-    assert_array_equals(decompressedData, expectedChunkValue, "value should match");
-  }, `decompressing splitted chunk into pieces of size ${chunkSize} should work in gzip`);
-
-  promise_test(async t => {
-    const decompressedData = await decompressArrayBuffer(compressedBytesWithDeflateRaw, 'deflate-raw', chunkSize);
-    assert_array_equals(decompressedData, expectedChunkValue, "value should match");
-  }, `decompressing splitted chunk into pieces of size ${chunkSize} should work in deflate-raw`);
-}
diff --git a/test/fixtures/wpt/compression/decompression-uint8array-output.any.js b/test/fixtures/wpt/compression/decompression-uint8array-output.any.js
new file mode 100644
index 00000000000000..31e25fa2c6fb86
--- /dev/null
+++ b/test/fixtures/wpt/compression/decompression-uint8array-output.any.js
@@ -0,0 +1,16 @@
+// META: global=window,worker,shadowrealm
+// META: script=resources/decompression-input.js
+
+'use strict';
+
+for (const [format, chunkValue] of compressedBytes) {
+  promise_test(async t => {
+    const ds = new DecompressionStream(format);
+    const reader = ds.readable.getReader();
+    const writer = ds.writable.getWriter();
+    const writePromise = writer.write(chunkValue);
+    const { value } = await reader.read();
+    assert_equals(value.constructor, Uint8Array, "type should match");
+    await writePromise;
+  }, `decompressing ${format} output should give Uint8Array chunks`);
+}
diff --git a/test/fixtures/wpt/compression/decompression-uint8array-output.tentative.any.js b/test/fixtures/wpt/compression/decompression-uint8array-output.tentative.any.js
deleted file mode 100644
index 0c45a0aaa727f1..00000000000000
--- a/test/fixtures/wpt/compression/decompression-uint8array-output.tentative.any.js
+++ /dev/null
@@ -1,30 +0,0 @@
-// META: global=window,worker,shadowrealm
-// META: timeout=long
-//
-// This test isn't actually slow usually, but sometimes it takes >10 seconds on
-// Firefox with service worker for no obvious reason.
-
-'use strict';
-
-const deflateChunkValue = new Uint8Array([120, 156, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 48, 173, 6, 36]);
-const gzipChunkValue = new Uint8Array([31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 176, 1, 57, 179, 15, 0, 0, 0]);
-
-promise_test(async t => {
-  const ds = new DecompressionStream('deflate');
-  const reader = ds.readable.getReader();
-  const writer = ds.writable.getWriter();
-  const writePromise = writer.write(deflateChunkValue);
-  const { value } = await reader.read();
-  assert_equals(value.constructor, Uint8Array, "type should match");
-  await writePromise;
-}, 'decompressing deflated output should give Uint8Array chunks');
-
-promise_test(async t => {
-  const ds = new DecompressionStream('gzip');
-  const reader = ds.readable.getReader();
-  const writer = ds.writable.getWriter();
-  const writePromise = writer.write(gzipChunkValue);
-  const { value } = await reader.read();
-  assert_equals(value.constructor, Uint8Array, "type should match");
-  await writePromise;
-}, 'decompressing gzip output should give Uint8Array chunks');
diff --git a/test/fixtures/wpt/compression/decompression-with-detach.tentative.window.js b/test/fixtures/wpt/compression/decompression-with-detach.window.js
similarity index 100%
rename from test/fixtures/wpt/compression/decompression-with-detach.tentative.window.js
rename to test/fixtures/wpt/compression/decompression-with-detach.window.js
diff --git a/test/fixtures/wpt/compression/resources/decompress.js b/test/fixtures/wpt/compression/resources/decompress.js
new file mode 100644
index 00000000000000..ae7d1b6e4ec2bc
--- /dev/null
+++ b/test/fixtures/wpt/compression/resources/decompress.js
@@ -0,0 +1,31 @@
+/**
+ * @param {Uint8Array} chunk
+ * @param {string} format
+ */
+async function decompressData(chunk, format) {
+  const ds = new DecompressionStream(format);
+  const writer = ds.writable.getWriter();
+  writer.write(chunk);
+  writer.close();
+  const decompressedChunkList = await Array.fromAsync(ds.readable);
+  const mergedBlob = new Blob(decompressedChunkList);
+  return await mergedBlob.bytes();
+}
+
+/**
+ * @param {Uint8Array} chunk
+ * @param {string} format
+ */
+async function decompressDataOrPako(chunk, format) {
+  // Keep using pako for zlib to preserve existing test behavior
+  if (["deflate", "gzip"].includes(format)) {
+    return pako.inflate(chunk);
+  }
+  if (format === "deflate-raw") {
+    return pako.inflateRaw(chunk);
+  }
+
+  // Use DecompressionStream for any newer formats, assuming implementations
+  // always implement decompression if they implement compression.
+  return decompressData(chunk, format);
+}
diff --git a/test/fixtures/wpt/compression/resources/decompression-input.js b/test/fixtures/wpt/compression/resources/decompression-input.js
new file mode 100644
index 00000000000000..ef0acfb9ced799
--- /dev/null
+++ b/test/fixtures/wpt/compression/resources/decompression-input.js
@@ -0,0 +1,20 @@
+const deflateChunkValue = new Uint8Array([120, 156, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 48, 173, 6, 36]);
+const gzipChunkValue = new Uint8Array([31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 176, 1, 57, 179, 15, 0, 0, 0]);
+const deflateRawChunkValue = new Uint8Array([
+    0x4b, 0xad, 0x28, 0x48, 0x4d, 0x2e, 0x49, 0x4d, 0x51, 0xc8,
+    0x2f, 0x2d, 0x29, 0x28, 0x2d, 0x01, 0x00,
+]);
+const brotliChunkValue = new Uint8Array([
+  0x21, 0x38, 0x00, 0x04, 0x65, 0x78, 0x70, 0x65,
+  0x63, 0x74, 0x65, 0x64, 0x20, 0x6F, 0x75, 0x74,
+  0x70, 0x75, 0x74, 0x03
+]);
+
+const compressedBytes = [
+  ["deflate", deflateChunkValue],
+  ["gzip", gzipChunkValue],
+  ["deflate-raw", deflateRawChunkValue],
+  ["brotli", brotliChunkValue],
+];
+
+const expectedChunkValue = new TextEncoder().encode('expected output');
diff --git a/test/fixtures/wpt/compression/resources/formats.js b/test/fixtures/wpt/compression/resources/formats.js
new file mode 100644
index 00000000000000..efbf7c08e580aa
--- /dev/null
+++ b/test/fixtures/wpt/compression/resources/formats.js
@@ -0,0 +1,6 @@
+const formats = [
+  "deflate",
+  "deflate-raw",
+  "gzip",
+  "brotli",
+]
diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json
index 00340a256aeebe..e67f60e8fbc5ea 100644
--- a/test/fixtures/wpt/versions.json
+++ b/test/fixtures/wpt/versions.json
@@ -4,7 +4,7 @@
     "path": "common"
   },
   "compression": {
-    "commit": "67880a4eb83ca9aa732eec4b35a1971ff5bf37ff",
+    "commit": "ae05f5cb53d3e290b91ae1e92069baa188292880",
     "path": "compression"
   },
   "console": {
diff --git a/test/wpt/status/compression.json b/test/wpt/status/compression.json
index 619add6fbc25a9..f9b270b71fc2c2 100644
--- a/test/wpt/status/compression.json
+++ b/test/wpt/status/compression.json
@@ -1,11 +1,11 @@
 {
-  "compression-bad-chunks.tentative.any.js": {
+  "compression-bad-chunks.any.js": {
     "skip": "Execution \"hangs\", ArrayBuffer and TypedArray is not accepted and throws, instead of rejects during writer.write"
   },
-  "decompression-bad-chunks.tentative.any.js": {
+  "decompression-bad-chunks.any.js": {
     "skip": "Execution \"hangs\", ArrayBuffer and TypedArray is not accepted and throws, instead of rejects during writer.write"
   },
-  "compression-with-detach.tentative.window.js": {
+  "compression-with-detach.window.js": {
     "requires": ["crypto"]
   },
   "idlharness-shadowrealm.window.js": {

From dc66a05558d3b5b53d434958ed6e552476a5c980 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Wed, 4 Mar 2026 22:32:21 +0100
Subject: [PATCH 165/267] test: improve WPT report runner
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Add incremental report writing after each spec completes and on
worker errors so that reports survive if the process is killed
before the exit handler runs.

Add bytes() method to readAsFetch() to match the Response API
used by newer WPT tests.

PR-URL: https://github.com/nodejs/node/pull/62107
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Mattias Buelens <mattias@buelens.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
---
 test/common/wpt.js | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/test/common/wpt.js b/test/common/wpt.js
index 584f3c177ab0be..8a0e4bea2ec568 100644
--- a/test/common/wpt.js
+++ b/test/common/wpt.js
@@ -223,6 +223,7 @@ class ResourceLoader {
     return {
       ok: true,
       arrayBuffer() { return data.buffer; },
+      bytes() { return new Uint8Array(data); },
       json() { return JSON.parse(data.toString()); },
       text() { return data.toString(); },
     };
@@ -721,6 +722,7 @@ class WPTRunner {
           // Mark the whole test as failed in wpt.fyi report.
           reportResult?.finish('ERROR');
           this.inProgress.delete(spec);
+          this.report?.write();
         });
 
         await events.once(worker, 'exit').catch(() => {});
@@ -787,6 +789,9 @@ class WPTRunner {
         }
       }
 
+      // Write the report on clean exit. The report is also written
+      // incrementally after each spec completes (see completionCallback)
+      // so that results survive if the process is killed.
       this.report?.write();
 
       const ran = queue.length;
@@ -873,6 +878,9 @@ class WPTRunner {
       reportResult?.finish();
     }
     this.inProgress.delete(spec);
+    // Write report incrementally so results survive even if the process
+    // is killed before the exit handler runs.
+    this.report?.write();
     // Always force termination of the worker. Some tests allocate resources
     // that would otherwise keep it alive.
     this.workers.get(spec).terminate();

From cdec579c6b6c3e070ba335d13ee5b74209232d2c Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Wed, 4 Mar 2026 22:36:41 +0100
Subject: [PATCH 166/267] stream: improve Web Compression spec compliance
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Pass rejectGarbageAfterEnd: true to createInflateRaw() and
createBrotliDecompress(), matching the behavior already in place
for deflate and gzip. The Compression Streams spec treats any
data following a valid compressed payload as an error.

When the underlying Node.js stream throws synchronously from
write() (e.g. zlib rejects an invalid chunk type), destroy the
stream so that the readable side is also errored. Without this,
the readable side hangs forever waiting for data that will never
arrive.

Introduce a kValidateChunk callback option in the webstreams
adapter layer. Compression streams use this to validate that
chunks are BufferSource instances not backed by SharedArrayBuffer,
replacing the previous monkey-patching of the underlying
handle's write method.

Unskip WPT compression bad-chunks tests which now run instead of
hang and mark the remaining expected failures.

PR-URL: https://github.com/nodejs/node/pull/62107
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Mattias Buelens <mattias@buelens.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
---
 lib/internal/webstreams/adapters.js           | 44 ++++++++--
 lib/internal/webstreams/compression.js        | 49 ++++++++---
 ...st-webstreams-adapters-sync-write-error.js | 79 +++++++++++++++++
 .../test-webstreams-compression-bad-chunks.js | 57 ++++++++++++
 ...ebstreams-decompression-reject-trailing.js | 86 +++++++++++++++++++
 test/wpt/status/compression.json              | 10 ++-
 6 files changed, 302 insertions(+), 23 deletions(-)
 create mode 100644 test/parallel/test-webstreams-adapters-sync-write-error.js
 create mode 100644 test/parallel/test-webstreams-compression-bad-chunks.js
 create mode 100644 test/parallel/test-webstreams-decompression-reject-trailing.js

diff --git a/lib/internal/webstreams/adapters.js b/lib/internal/webstreams/adapters.js
index 83265227a917a9..e4695a83dc4247 100644
--- a/lib/internal/webstreams/adapters.js
+++ b/lib/internal/webstreams/adapters.js
@@ -11,6 +11,8 @@ const {
   SafePromiseAll,
   SafePromisePrototypeFinally,
   SafeSet,
+  StringPrototypeStartsWith,
+  Symbol,
   TypeError,
   TypedArrayPrototypeGetBuffer,
   TypedArrayPrototypeGetByteLength,
@@ -94,6 +96,9 @@ const { UV_EOF } = internalBinding('uv');
 
 const encoder = new TextEncoder();
 
+const kValidateChunk = Symbol('kValidateChunk');
+const kDestroyOnSyncError = Symbol('kDestroyOnSyncError');
+
 // Collect all negative (error) ZLIB codes and Z_NEED_DICT
 const ZLIB_FAILURES = new SafeSet([
   ...ArrayPrototypeFilter(
@@ -139,9 +144,10 @@ function handleKnownInternalErrors(cause) {
 
 /**
  * @param {Writable} streamWritable
+ * @param {object} [options]
  * @returns {WritableStream}
  */
-function newWritableStreamFromStreamWritable(streamWritable) {
+function newWritableStreamFromStreamWritable(streamWritable, options = kEmptyObject) {
   // Not using the internal/streams/utils isWritableNodeStream utility
   // here because it will return false if streamWritable is a Duplex
   // whose writable option is false. For a Duplex that is not writable,
@@ -220,12 +226,26 @@ function newWritableStreamFromStreamWritable(streamWritable) {
       if (!streamWritable.writableObjectMode && isArrayBuffer(chunk)) {
         chunk = new Uint8Array(chunk);
       }
-      if (streamWritable.writableNeedDrain || !streamWritable.write(chunk)) {
-        backpressurePromise = PromiseWithResolvers();
-        return SafePromisePrototypeFinally(
-          backpressurePromise.promise, () => {
-            backpressurePromise = undefined;
-          });
+      try {
+        options[kValidateChunk]?.(chunk);
+        if (streamWritable.writableNeedDrain || !streamWritable.write(chunk)) {
+          backpressurePromise = PromiseWithResolvers();
+          return SafePromisePrototypeFinally(
+            backpressurePromise.promise, () => {
+              backpressurePromise = undefined;
+            });
+        }
+      } catch (error) {
+        // When the kDestroyOnSyncError flag is set (e.g. for
+        // CompressionStream), a sync throw must also destroy the
+        // stream so the readable side is errored too. Without this
+        // the readable side hangs forever. This replicates the
+        // TransformStream semantics: error both sides on any throw
+        // in the transform path.
+        if (options[kDestroyOnSyncError]) {
+          destroy(streamWritable, error);
+        }
+        throw error;
       }
     },
 
@@ -662,9 +682,15 @@ function newReadableWritablePairFromDuplex(duplex, options = kEmptyObject) {
     return { readable, writable };
   }
 
+  const writableOptions = {
+    __proto__: null,
+    [kValidateChunk]: options[kValidateChunk],
+    [kDestroyOnSyncError]: options[kDestroyOnSyncError],
+  };
+
   const writable =
     isWritable(duplex) ?
-      newWritableStreamFromStreamWritable(duplex) :
+      newWritableStreamFromStreamWritable(duplex, writableOptions) :
       new WritableStream();
 
   if (!isWritable(duplex))
@@ -1064,4 +1090,6 @@ module.exports = {
   newStreamDuplexFromReadableWritablePair,
   newWritableStreamFromStreamBase,
   newReadableStreamFromStreamBase,
+  kValidateChunk,
+  kDestroyOnSyncError,
 };
diff --git a/lib/internal/webstreams/compression.js b/lib/internal/webstreams/compression.js
index 836c02f7341f70..7ec929d94a0da0 100644
--- a/lib/internal/webstreams/compression.js
+++ b/lib/internal/webstreams/compression.js
@@ -7,15 +7,28 @@ const {
 
 const {
   newReadableWritablePairFromDuplex,
+  kValidateChunk,
+  kDestroyOnSyncError,
 } = require('internal/webstreams/adapters');
 
 const { customInspect } = require('internal/webstreams/util');
 
+const {
+  isArrayBufferView,
+  isSharedArrayBuffer,
+} = require('internal/util/types');
+
 const {
   customInspectSymbol: kInspect,
   kEnumerableProperty,
 } = require('internal/util');
 
+const {
+  codes: {
+    ERR_INVALID_ARG_TYPE,
+  },
+} = require('internal/errors');
+
 const { createEnumConverter } = require('internal/webidl');
 
 let zlib;
@@ -24,6 +37,18 @@ function lazyZlib() {
   return zlib;
 }
 
+// Per the Compression Streams spec, chunks must be BufferSource
+// (ArrayBuffer or ArrayBufferView not backed by SharedArrayBuffer).
+function validateBufferSourceChunk(chunk) {
+  if (isArrayBufferView(chunk) && isSharedArrayBuffer(chunk.buffer)) {
+    throw new ERR_INVALID_ARG_TYPE(
+      'chunk',
+      ['ArrayBuffer', 'Buffer', 'TypedArray', 'DataView'],
+      chunk,
+    );
+  }
+}
+
 const formatConverter = createEnumConverter('CompressionFormat', [
   'deflate',
   'deflate-raw',
@@ -62,7 +87,10 @@ class CompressionStream {
         this.#handle = lazyZlib().createBrotliCompress();
         break;
     }
-    this.#transform = newReadableWritablePairFromDuplex(this.#handle);
+    this.#transform = newReadableWritablePairFromDuplex(this.#handle, {
+      [kValidateChunk]: validateBufferSourceChunk,
+      [kDestroyOnSyncError]: true,
+    });
   }
 
   /**
@@ -108,7 +136,9 @@ class DecompressionStream {
         });
         break;
       case 'deflate-raw':
-        this.#handle = lazyZlib().createInflateRaw();
+        this.#handle = lazyZlib().createInflateRaw({
+          rejectGarbageAfterEnd: true,
+        });
         break;
       case 'gzip':
         this.#handle = lazyZlib().createGunzip({
@@ -116,17 +146,14 @@ class DecompressionStream {
         });
         break;
       case 'brotli':
-        this.#handle = lazyZlib().createBrotliDecompress();
+        this.#handle = lazyZlib().createBrotliDecompress({
+          rejectGarbageAfterEnd: true,
+        });
         break;
     }
-    this.#transform = newReadableWritablePairFromDuplex(this.#handle);
-
-    this.#handle.on('error', (err) => {
-      if (this.#transform?.writable &&
-        !this.#transform.writable.locked &&
-        typeof this.#transform.writable.abort === 'function') {
-        this.#transform.writable.abort(err);
-      }
+    this.#transform = newReadableWritablePairFromDuplex(this.#handle, {
+      [kValidateChunk]: validateBufferSourceChunk,
+      [kDestroyOnSyncError]: true,
     });
   }
 
diff --git a/test/parallel/test-webstreams-adapters-sync-write-error.js b/test/parallel/test-webstreams-adapters-sync-write-error.js
new file mode 100644
index 00000000000000..748f682365ee93
--- /dev/null
+++ b/test/parallel/test-webstreams-adapters-sync-write-error.js
@@ -0,0 +1,79 @@
+'use strict';
+// Flags: --no-warnings --expose-internals
+require('../common');
+const assert = require('assert');
+const test = require('node:test');
+const { Duplex, Writable } = require('stream');
+const {
+  newWritableStreamFromStreamWritable,
+  newReadableWritablePairFromDuplex,
+} = require('internal/webstreams/adapters');
+
+// Verify that when the underlying Node.js stream throws synchronously from
+// write(), the writable web stream properly rejects but does not destroy
+// the stream (destroy-on-sync-throw is only used internally by
+// CompressionStream/DecompressionStream).
+
+test('WritableStream from Node.js stream handles sync write throw', async () => {
+  const error = new TypeError('invalid chunk');
+  const writable = new Writable({
+    write() {
+      throw error;
+    },
+  });
+
+  const ws = newWritableStreamFromStreamWritable(writable);
+  const writer = ws.getWriter();
+
+  await assert.rejects(writer.write('bad'), (err) => {
+    assert.strictEqual(err, error);
+    return true;
+  });
+
+  // Standalone writable should not be destroyed on sync write error
+  assert.strictEqual(writable.destroyed, false);
+});
+
+test('Duplex-backed pair does NOT destroy on sync write throw', async () => {
+  const error = new TypeError('invalid chunk');
+  const duplex = new Duplex({
+    read() {},
+    write() {
+      throw error;
+    },
+  });
+
+  const { writable, readable } = newReadableWritablePairFromDuplex(duplex);
+  const writer = writable.getWriter();
+
+  await assert.rejects(writer.write('bad'), (err) => {
+    assert.strictEqual(err, error);
+    return true;
+  });
+
+  // A plain Duplex should NOT be destroyed on sync write error
+  assert.strictEqual(duplex.destroyed, false);
+
+  // The readable side should still be usable
+  const reader = readable.getReader();
+  reader.cancel();
+});
+
+test('WritableStream from Node.js stream - valid writes still work', async () => {
+  const chunks = [];
+  const writable = new Writable({
+    write(chunk, _encoding, cb) {
+      chunks.push(chunk);
+      cb();
+    },
+  });
+
+  const ws = newWritableStreamFromStreamWritable(writable);
+  const writer = ws.getWriter();
+
+  await writer.write(Buffer.from('hello'));
+  await writer.write(Buffer.from(' world'));
+  await writer.close();
+
+  assert.strictEqual(Buffer.concat(chunks).toString(), 'hello world');
+});
diff --git a/test/parallel/test-webstreams-compression-bad-chunks.js b/test/parallel/test-webstreams-compression-bad-chunks.js
new file mode 100644
index 00000000000000..442eb8b2ac194b
--- /dev/null
+++ b/test/parallel/test-webstreams-compression-bad-chunks.js
@@ -0,0 +1,57 @@
+'use strict';
+require('../common');
+const assert = require('assert');
+const test = require('node:test');
+const { CompressionStream, DecompressionStream } = require('stream/web');
+
+// Verify that writing invalid (non-BufferSource) chunks to
+// CompressionStream and DecompressionStream properly rejects
+// on both the write and the read side, instead of hanging.
+
+const badChunks = [
+  { name: 'undefined', value: undefined, code: 'ERR_INVALID_ARG_TYPE' },
+  { name: 'null', value: null, code: 'ERR_STREAM_NULL_VALUES' },
+  { name: 'number', value: 3.14, code: 'ERR_INVALID_ARG_TYPE' },
+  { name: 'object', value: {}, code: 'ERR_INVALID_ARG_TYPE' },
+  { name: 'array', value: [65], code: 'ERR_INVALID_ARG_TYPE' },
+  {
+    name: 'SharedArrayBuffer',
+    value: new SharedArrayBuffer(1),
+    code: 'ERR_INVALID_ARG_TYPE',
+  },
+  {
+    name: 'Uint8Array backed by SharedArrayBuffer',
+    value: new Uint8Array(new SharedArrayBuffer(1)),
+    code: 'ERR_INVALID_ARG_TYPE',
+  },
+];
+
+for (const format of ['deflate', 'deflate-raw', 'gzip', 'brotli']) {
+  for (const { name, value, code } of badChunks) {
+    const expected = { name: 'TypeError', code };
+
+    test(`CompressionStream rejects bad chunk (${name}) for ${format}`, async () => {
+      const cs = new CompressionStream(format);
+      const writer = cs.writable.getWriter();
+      const reader = cs.readable.getReader();
+
+      const writePromise = writer.write(value);
+      const readPromise = reader.read();
+
+      await assert.rejects(writePromise, expected);
+      await assert.rejects(readPromise, expected);
+    });
+
+    test(`DecompressionStream rejects bad chunk (${name}) for ${format}`, async () => {
+      const ds = new DecompressionStream(format);
+      const writer = ds.writable.getWriter();
+      const reader = ds.readable.getReader();
+
+      const writePromise = writer.write(value);
+      const readPromise = reader.read();
+
+      await assert.rejects(writePromise, expected);
+      await assert.rejects(readPromise, expected);
+    });
+  }
+}
diff --git a/test/parallel/test-webstreams-decompression-reject-trailing.js b/test/parallel/test-webstreams-decompression-reject-trailing.js
new file mode 100644
index 00000000000000..3efc97578e42f7
--- /dev/null
+++ b/test/parallel/test-webstreams-decompression-reject-trailing.js
@@ -0,0 +1,86 @@
+'use strict';
+require('../common');
+const assert = require('assert');
+const test = require('node:test');
+const { CompressionStream, DecompressionStream } = require('stream/web');
+
+// Verify that DecompressionStream rejects trailing data after a valid
+// compressed payload for all four supported formats (deflate, deflate-raw, gzip, brotli).
+
+const input = Buffer.from('hello');
+const trailingJunk = Buffer.from([0xDE, 0xAD]);
+
+async function compress(format, data) {
+  const cs = new CompressionStream(format);
+  const writer = cs.writable.getWriter();
+  writer.write(data);
+  writer.close();
+  const chunks = await Array.fromAsync(cs.readable);
+  return Buffer.concat(chunks.map((c) => Buffer.from(c)));
+}
+
+for (const format of ['deflate', 'deflate-raw', 'gzip', 'brotli']) {
+  test(`DecompressionStream rejects trailing junk for ${format}`, async () => {
+    const compressed = await compress(format, input);
+    const withJunk = Buffer.concat([compressed, trailingJunk]);
+
+    const ds = new DecompressionStream(format);
+    const writer = ds.writable.getWriter();
+    const reader = ds.readable.getReader();
+
+    writer.write(withJunk).catch(() => {});
+    writer.close().catch(() => {});
+
+    await assert.rejects(async () => {
+      const chunks = [];
+      while (true) {
+        const { done, value } = await reader.read();
+        if (done) break;
+        chunks.push(value);
+      }
+    }, (err) => {
+      assert(err instanceof Error, `Expected Error, got ${err?.constructor?.name}`);
+      return true;
+    });
+  });
+
+  test(`DecompressionStream accepts valid ${format} data without trailing junk`, async () => {
+    const compressed = await compress(format, input);
+
+    const ds = new DecompressionStream(format);
+    const writer = ds.writable.getWriter();
+
+    writer.write(compressed);
+    writer.close();
+
+    const chunks = await Array.fromAsync(ds.readable);
+    const result = Buffer.concat(chunks.map((c) => Buffer.from(c)));
+    assert.strictEqual(result.toString(), 'hello');
+  });
+}
+
+// Extra: Verify that trailing data is also rejected when passed as a separate
+// chunk after the valid compressed data has been fully written.
+for (const format of ['deflate', 'deflate-raw', 'gzip', 'brotli']) {
+  test(`DecompressionStream rejects trailing junk as separate chunk for ${format}`, async () => {
+    const compressed = await compress(format, input);
+
+    const ds = new DecompressionStream(format);
+    const writer = ds.writable.getWriter();
+    const reader = ds.readable.getReader();
+
+    writer.write(compressed).catch(() => {});
+    writer.write(trailingJunk).catch(() => {});
+    writer.close().catch(() => {});
+
+    await assert.rejects(async () => {
+      while (true) {
+        const { done } = await reader.read();
+        if (done) break;
+      }
+    }, (err) => {
+      assert(err instanceof Error, `Expected Error, got ${err?.constructor?.name}`);
+      return true;
+    });
+  });
+}
diff --git a/test/wpt/status/compression.json b/test/wpt/status/compression.json
index f9b270b71fc2c2..b5c5877db48b55 100644
--- a/test/wpt/status/compression.json
+++ b/test/wpt/status/compression.json
@@ -1,9 +1,11 @@
 {
-  "compression-bad-chunks.any.js": {
-    "skip": "Execution \"hangs\", ArrayBuffer and TypedArray is not accepted and throws, instead of rejects during writer.write"
-  },
   "decompression-bad-chunks.any.js": {
-    "skip": "Execution \"hangs\", ArrayBuffer and TypedArray is not accepted and throws, instead of rejects during writer.write"
+    "fail": {
+      "expected": [
+        "chunk of type invalid deflate bytes should error the stream for brotli",
+        "chunk of type invalid gzip bytes should error the stream for brotli"
+      ]
+    }
   },
   "compression-with-detach.window.js": {
     "requires": ["crypto"]

From fcf2a9f788aa289cab67781196ed811c872425ae Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Wed, 4 Mar 2026 23:37:06 +0100
Subject: [PATCH 167/267] stream: fix brotli error handling in web compression
 streams
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Convert brotli decompression errors to TypeError to match the
Compression Streams spec, by extending handleKnownInternalErrors()
in the adapters layer to recognize brotli error codes.

This replaces the manual error event handler on DecompressionStream
which was redundant with the adapter's built-in error propagation.

PR-URL: https://github.com/nodejs/node/pull/62107
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Mattias Buelens <mattias@buelens.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
---
 lib/internal/webstreams/adapters.js            |  9 ++++++++-
 .../test-webstreams-compression-bad-chunks.js  | 18 ++++++++++++++++++
 test/wpt/status/compression.json               |  8 --------
 3 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/lib/internal/webstreams/adapters.js b/lib/internal/webstreams/adapters.js
index e4695a83dc4247..1ffb19b4f59a31 100644
--- a/lib/internal/webstreams/adapters.js
+++ b/lib/internal/webstreams/adapters.js
@@ -120,7 +120,14 @@ function handleKnownInternalErrors(cause) {
     case cause?.code === 'ERR_STREAM_PREMATURE_CLOSE': {
       return new AbortError(undefined, { cause });
     }
-    case ZLIB_FAILURES.has(cause?.code): {
+    case ZLIB_FAILURES.has(cause?.code):
+    // Brotli decoder error codes are formatted as 'ERR_' +
+    // BrotliDecoderErrorString(), where the latter returns strings like
+    // '_ERROR_FORMAT_...', '_ERROR_ALLOC_...', '_ERROR_UNREACHABLE', etc.
+    // The resulting JS error codes all start with 'ERR__ERROR_'.
+    // Falls through
+    case cause?.code != null &&
+      StringPrototypeStartsWith(cause.code, 'ERR__ERROR_'): {
       // eslint-disable-next-line no-restricted-syntax
       const error = new TypeError(undefined, { cause });
       error.code = cause.code;
diff --git a/test/parallel/test-webstreams-compression-bad-chunks.js b/test/parallel/test-webstreams-compression-bad-chunks.js
index 442eb8b2ac194b..4a8ca3cff8a27f 100644
--- a/test/parallel/test-webstreams-compression-bad-chunks.js
+++ b/test/parallel/test-webstreams-compression-bad-chunks.js
@@ -55,3 +55,21 @@ for (const format of ['deflate', 'deflate-raw', 'gzip', 'brotli']) {
     });
   }
 }
+
+// Verify that decompression errors (e.g. corrupt data) are surfaced as
+// TypeError, not plain Error, per the Compression Streams spec.
+for (const format of ['deflate', 'deflate-raw', 'gzip', 'brotli']) {
+  test(`DecompressionStream surfaces corrupt data as TypeError for ${format}`, async () => {
+    const ds = new DecompressionStream(format);
+    const writer = ds.writable.getWriter();
+    const reader = ds.readable.getReader();
+
+    const corruptData = new Uint8Array([0, 1, 2, 3, 4, 5]);
+
+    writer.write(corruptData).catch(() => {});
+    reader.read().catch(() => {});
+
+    await assert.rejects(writer.close(), { name: 'TypeError' });
+    await assert.rejects(reader.closed, { name: 'TypeError' });
+  });
+}
diff --git a/test/wpt/status/compression.json b/test/wpt/status/compression.json
index b5c5877db48b55..5c73f02a587176 100644
--- a/test/wpt/status/compression.json
+++ b/test/wpt/status/compression.json
@@ -1,12 +1,4 @@
 {
-  "decompression-bad-chunks.any.js": {
-    "fail": {
-      "expected": [
-        "chunk of type invalid deflate bytes should error the stream for brotli",
-        "chunk of type invalid gzip bytes should error the stream for brotli"
-      ]
-    }
-  },
   "compression-with-detach.window.js": {
     "requires": ["crypto"]
   },

From 840e098e99d13b7fe83db25528622bf5e72a406e Mon Sep 17 00:00:00 2001
From: Rich Trott <rtrott@gmail.com>
Date: Sat, 7 Mar 2026 12:40:33 -0800
Subject: [PATCH 168/267] tools: improve error handling in test426 update
 script

If the current SHA is not found in the README for some reason,
exit with an error.

PR-URL: https://github.com/nodejs/node/pull/62121
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 tools/dep_updaters/update-test426-fixtures.sh | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/tools/dep_updaters/update-test426-fixtures.sh b/tools/dep_updaters/update-test426-fixtures.sh
index 730e7b67e35aa1..a1a97797c29357 100755
--- a/tools/dep_updaters/update-test426-fixtures.sh
+++ b/tools/dep_updaters/update-test426-fixtures.sh
@@ -6,11 +6,17 @@ BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd)
 
 TARGET_DIR="$BASE_DIR/test/fixtures/test426"
 README="$BASE_DIR/test/test426/README.md"
-TARBALL_URL=$(curl -fsIo /dev/null -w '%header{Location}' https://github.com/tc39/source-map-tests/archive/HEAD.tar.gz)
-SHA=$(basename "$TARBALL_URL")
 
 CURRENT_SHA=$(sed -n 's#^.*https://github.com/tc39/source-map-tests/commit/\([0-9a-f]*\).*$#\1#p' "$README")
 
+if [ -z "$CURRENT_SHA" ]; then
+  echo "Could not find source-map-tests commit marker in $README" >&2
+  exit 1
+fi
+
+TARBALL_URL=$(curl -fsIo /dev/null -w '%header{Location}' https://github.com/tc39/source-map-tests/archive/HEAD.tar.gz)
+SHA=$(basename "$TARBALL_URL")
+
 if [ "$CURRENT_SHA" = "$SHA" ]; then
   echo "Already up-to-date"
   exit 0

From 5bb89916eaa83edd2782595a934fc5e1bf8bcd12 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 8 Mar 2026 16:25:17 +0000
Subject: [PATCH 169/267] meta: bump actions/upload-artifact from 6.0.0 to
 7.0.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/b7c566a772e6b6bfb58ed0dc250532a479d7789f...bbbca2ddaa5d8feaa63e36b76fdaad77386f024f)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: https://github.com/nodejs/node/pull/62062
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
---
 .github/workflows/build-tarball.yml | 2 +-
 .github/workflows/daily-wpt-fyi.yml | 2 +-
 .github/workflows/doc.yml           | 2 +-
 .github/workflows/scorecard.yml     | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml
index c01c840f7ae4f1..3a0c4286c07066 100644
--- a/.github/workflows/build-tarball.yml
+++ b/.github/workflows/build-tarball.yml
@@ -57,7 +57,7 @@ jobs:
           export COMMIT=$(git rev-parse --short=10 "$GITHUB_SHA")
           ./configure && make tar -j4 SKIP_XZ=1
       - name: Upload tarball artifact
-        uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f  # v6.0.0
+        uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f  # v7.0.0
         with:
           name: tarballs
           path: '*.tar.gz'
diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml
index c537b9ec5120f2..849f039956a2cb 100644
--- a/.github/workflows/daily-wpt-fyi.yml
+++ b/.github/workflows/daily-wpt-fyi.yml
@@ -102,7 +102,7 @@ jobs:
         run: cp wptreport.json wptreport-${{ steps.setup-node.outputs.node-version }}.json
       - name: Upload GitHub Actions artifact
         if: ${{ env.WPT_REPORT != '' }}
-        uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f  # v6.0.0
+        uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f  # v7.0.0
         with:
           path: out/wpt/wptreport-*.json
           name: WPT Report for ${{ steps.setup-node.outputs.node-version }}
diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml
index 51268b3c475da4..5cbf96d11626be 100644
--- a/.github/workflows/doc.yml
+++ b/.github/workflows/doc.yml
@@ -35,7 +35,7 @@ jobs:
         run: npx envinfo
       - name: Build
         run: NODE=$(command -v node) make doc-only
-      - uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f  # v6.0.0
+      - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f  # v7.0.0
         with:
           name: docs
           path: out/doc
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index 765f7f79fefa88..fa8263a710ddd1 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -67,7 +67,7 @@ jobs:
       # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
       # format to the repository Actions tab.
       - name: Upload artifact
-        uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f  # v6.0.0
+        uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f  # v7.0.0
         with:
           name: SARIF file
           path: results.sarif

From 6462b89d106aeae276d638b70894567b5c07781a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 8 Mar 2026 16:25:28 +0000
Subject: [PATCH 170/267] meta: bump actions/download-artifact from 7.0.0 to
 8.0.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7.0.0 to 8.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/37930b1c2abaa49bbe596cd826c3c89aef350131...70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 8.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: https://github.com/nodejs/node/pull/62063
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
---
 .github/workflows/build-tarball.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml
index 3a0c4286c07066..9311ec2defd9bb 100644
--- a/.github/workflows/build-tarball.yml
+++ b/.github/workflows/build-tarball.yml
@@ -88,7 +88,7 @@ jobs:
       - name: Environment Information
         run: npx envinfo
       - name: Download tarball
-        uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131  # v7.0.0
+        uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3  # v8.0.0
         with:
           name: tarballs
           path: tarballs

From 7f989f02f7ea7a18f08b25bd116fb71d463b6cbe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9?= <contact.9a5d6388@renegade334.me.uk>
Date: Sun, 8 Mar 2026 16:42:35 +0000
Subject: [PATCH 171/267] doc: correct `util.convertProcessSignalToExitCode`
 validation behavior

PR-URL: https://github.com/nodejs/node/pull/62134
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
---
 doc/api/child_process.md |  2 +-
 doc/api/util.md          | 12 +++++++-----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/doc/api/child_process.md b/doc/api/child_process.md
index 6818eec4594b25..7df9fe27e613f8 100644
--- a/doc/api/child_process.md
+++ b/doc/api/child_process.md
@@ -2402,7 +2402,7 @@ or [`child_process.fork()`][].
 [`subprocess.stdin`]: #subprocessstdin
 [`subprocess.stdio`]: #subprocessstdio
 [`subprocess.stdout`]: #subprocessstdout
-[`util.convertProcessSignalToExitCode()`]: util.md#utilconvertprocesssignaltoexitcodesignalcode
+[`util.convertProcessSignalToExitCode()`]: util.md#utilconvertprocesssignaltoexitcodesignal
 [`util.promisify()`]: util.md#utilpromisifyoriginal
 [synchronous counterparts]: #synchronous-process-creation
 [v8.serdes]: v8.md#serialization-api
diff --git a/doc/api/util.md b/doc/api/util.md
index ff224f175f27c5..a798d4befa4559 100644
--- a/doc/api/util.md
+++ b/doc/api/util.md
@@ -89,25 +89,27 @@ callbackFunction((err, ret) => {
 });
 ```
 
-## `util.convertProcessSignalToExitCode(signalCode)`
+## `util.convertProcessSignalToExitCode(signal)`
 
 <!-- YAML
 added: v24.14.0
 -->
 
-* `signalCode` {string} A signal name (e.g., `'SIGTERM'`, `'SIGKILL'`).
-* Returns: {number|null} The exit code, or `null` if the signal is invalid.
+* `signal` {string} A signal name (e.g. `'SIGTERM'`)
+* Returns: {number} The exit code corresponding to `signal`
 
 The `util.convertProcessSignalToExitCode()` method converts a signal name to its
 corresponding POSIX exit code. Following the POSIX standard, the exit code
 for a process terminated by a signal is calculated as `128 + signal number`.
 
+If `signal` is not a valid signal name, then an error will be thrown. See
+[`signal(7)`][] for a list of valid signals.
+
 ```mjs
 import { convertProcessSignalToExitCode } from 'node:util';
 
 console.log(convertProcessSignalToExitCode('SIGTERM')); // 143 (128 + 15)
 console.log(convertProcessSignalToExitCode('SIGKILL')); // 137 (128 + 9)
-console.log(convertProcessSignalToExitCode('INVALID')); // null
 ```
 
 ```cjs
@@ -115,7 +117,6 @@ const { convertProcessSignalToExitCode } = require('node:util');
 
 console.log(convertProcessSignalToExitCode('SIGTERM')); // 143 (128 + 15)
 console.log(convertProcessSignalToExitCode('SIGKILL')); // 137 (128 + 9)
-console.log(convertProcessSignalToExitCode('INVALID')); // null
 ```
 
 This is particularly useful when working with processes to determine
@@ -3835,6 +3836,7 @@ npx codemod@latest @nodejs/util-is
 [`mime.toString()`]: #mimetostring
 [`mimeParams.entries()`]: #mimeparamsentries
 [`napi_create_external()`]: n-api.md#napi_create_external
+[`signal(7)`]: https://man7.org/linux/man-pages/man7/signal.7.html
 [`target` and `handler`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy#terminology
 [`tty.hasColors()`]: tty.md#writestreamhascolorscount-env
 [`util.diff()`]: #utildiffactual-expected

From f6cdfbfaa7f90bf4d6ba05427c214a9190534556 Mon Sep 17 00:00:00 2001
From: Mattias Buelens <649348+MattiasBuelens@users.noreply.github.com>
Date: Mon, 9 Mar 2026 04:18:17 +0100
Subject: [PATCH 172/267] stream: optimize webstreams pipeTo

PR-URL: https://github.com/nodejs/node/pull/62079
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
---
 lib/internal/webstreams/readablestream.js | 26 +++++++++++------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/lib/internal/webstreams/readablestream.js b/lib/internal/webstreams/readablestream.js
index 40083ce65ee8f4..94592cdf01258c 100644
--- a/lib/internal/webstreams/readablestream.js
+++ b/lib/internal/webstreams/readablestream.js
@@ -1532,10 +1532,12 @@ function readableStreamPipeTo(
   }
 
   async function step() {
-    if (shuttingDown)
-      return true;
+    if (shuttingDown) return true;
 
-    await writer[kState].ready.promise;
+    if (dest[kState].backpressure) {
+      await writer[kState].ready.promise;
+      if (shuttingDown) return true;
+    }
 
     const controller = source[kState].controller;
 
@@ -1549,7 +1551,6 @@ function readableStreamPipeTo(
       while (controller[kState].queue.length > 0) {
         if (shuttingDown) return true;
 
-        source[kState].disturbed = true;
         const chunk = dequeueValue(controller);
 
         if (controller[kState].closeRequested && !controller[kState].queue.length) {
@@ -1563,20 +1564,17 @@ function readableStreamPipeTo(
         setPromiseHandled(state.currentWrite);
 
         // Check backpressure after each write
-        if (dest[kState].state === 'writable') {
-          const desiredSize = writer.desiredSize;
-          if (desiredSize !== null && desiredSize <= 0) {
-            // Backpressure - stop batch and wait for ready
-            break;
-          }
+        if (dest[kState].backpressure) {
+          // Backpressure - stop batch and wait for ready
+          break;
+        } else if (dest[kState].state !== 'writable' || writableStreamCloseQueuedOrInFlight(dest)) {
+          // Closing or erroring - stop batch and wait for shutdown
+          break;
         }
       }
 
       // Trigger pull if needed after batch
-      if (source[kState].state === 'readable' &&
-          !controller[kState].closeRequested) {
-        readableStreamDefaultControllerCallPullIfNeeded(controller);
-      }
+      readableStreamDefaultControllerCallPullIfNeeded(controller);
 
       // Check if stream closed during batch
       if (source[kState].state === 'closed') {

From b887657b38c4f504cf7916c36e0a399e01ca3d3c Mon Sep 17 00:00:00 2001
From: Richard Lau <richard.lau@ibm.com>
Date: Mon, 9 Mar 2026 03:18:27 +0000
Subject: [PATCH 173/267] deps: V8: cherry-pick aa0b288f87cc
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Original commit message:

    PPC/S390: [wasm] Fix jump table offset when patching

    ... need to make sure patching of target occurs at the correct spot
    based on what `EmitFarJumpSlot` emits. Also mask the branch offset in
    PPC64 EmitJumpSlot to match `Assembler::b()`.

    Change-Id: I5a8079d0079d8ad427034761d42c90b64d5746dd
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7642190
    Reviewed-by: John <junyan1@ibm.com>
    Commit-Queue: Milad Farazmand <mfarazma@ibm.com>
    Reviewed-by: Clemens Backes <clemensb@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#105646}

Refs: https://github.com/v8/v8/commit/aa0b288f87ccfc2ad25f5d828af6627a7dccc9cb
PR-URL: https://github.com/nodejs/node/pull/62136
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 common.gypi                              | 2 +-
 deps/v8/src/wasm/jump-table-assembler.cc | 9 ++++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/common.gypi b/common.gypi
index 21a7aa3e6ceef9..87d35a2771812c 100644
--- a/common.gypi
+++ b/common.gypi
@@ -38,7 +38,7 @@
 
     # Reset this number to 0 on major V8 upgrades.
     # Increment by one for each non-official patch applied to deps/v8.
-    'v8_embedder_string': '-node.46',
+    'v8_embedder_string': '-node.47',
 
     ##### V8 defaults for Node.js #####
 
diff --git a/deps/v8/src/wasm/jump-table-assembler.cc b/deps/v8/src/wasm/jump-table-assembler.cc
index 7a69ea0902ed1d..80b5511bc17c5e 100644
--- a/deps/v8/src/wasm/jump-table-assembler.cc
+++ b/deps/v8/src/wasm/jump-table-assembler.cc
@@ -426,7 +426,8 @@ void JumpTableAssembler::EmitFarJumpSlot(Address target) {
 // static
 void JumpTableAssembler::PatchFarJumpSlot(WritableJitAllocation& jit_allocation,
                                           Address slot, Address target) {
-  Address target_addr = slot + 8;
+  // See {EmitFarJumpSlot} for the offset of the target.
+  Address target_addr = slot + kFarJumpTableSlotSize - kSystemPointerSize;
   jit_allocation.WriteValue(target_addr, target, kRelaxedStore);
 }
 
@@ -636,7 +637,7 @@ bool JumpTableAssembler::EmitJumpSlot(Address target) {
 
   CHECK((relative_target & (kAAMask | kLKMask)) == 0);
   // The jump table is updated live, so the write has to be atomic.
-  emit<uint32_t>(inst[0] | relative_target, kRelaxedStore);
+  emit<uint32_t>(inst[0] | (relative_target & kImm26Mask), kRelaxedStore);
   return true;
 }
 
@@ -671,7 +672,9 @@ void JumpTableAssembler::EmitFarJumpSlot(Address target) {
 // static
 void JumpTableAssembler::PatchFarJumpSlot(WritableJitAllocation& jit_allocation,
                                           Address slot, Address target) {
-  Address target_addr = slot + kFarJumpTableSlotSize - 8;
+  // See {EmitFarJumpSlot} for the offset of the target.
+  Address target_addr =
+      slot + kFarJumpTableSlotSize - (2 * kInstrSize) - kSystemPointerSize;
   jit_allocation.WriteValue(target_addr, target, kRelaxedStore);
 }
 

From 0b6fa913f14ee8284ab0aac3c358963e0f3f8950 Mon Sep 17 00:00:00 2001
From: Richard Lau <richard.lau@ibm.com>
Date: Mon, 9 Mar 2026 13:06:24 +0000
Subject: [PATCH 174/267] tools: revert timezone update GHA workflow to
 ubuntu-latest

The timezone update script requires `icupkg` which doesn't
appear to be available on `ubuntu-slim`.

PR-URL: https://github.com/nodejs/node/pull/62140
Fixes: https://github.com/nodejs/node/issues/62109
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 .github/workflows/timezone-update.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/timezone-update.yml b/.github/workflows/timezone-update.yml
index 83e411ac6040fc..176944e3bd72d3 100644
--- a/.github/workflows/timezone-update.yml
+++ b/.github/workflows/timezone-update.yml
@@ -16,7 +16,8 @@ jobs:
       pull-requests: write  # to create a PR (gr2m/create-or-update-pull-request-action)
 
     if: github.repository == 'nodejs/node'
-    runs-on: ubuntu-slim
+    # cannot use ubuntu-slim here because it does not have icupkg
+    runs-on: ubuntu-latest
 
     steps:
       - name: Checkout nodejs/node

From 8c46a1ca1ad440d3a4366fc7446ec41187116a26 Mon Sep 17 00:00:00 2001
From: Antoine du Hamel <duhamelantoine1995@gmail.com>
Date: Mon, 9 Mar 2026 22:38:13 +0100
Subject: [PATCH 175/267] doc: copyedit `addons.md`

* Make the intro less C++-centric
* Give a GYP-less build example
* Remove the duplicate Node-API documentation
* Add an ESM example

PR-URL: https://github.com/nodejs/node/pull/62071
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
---
 doc/api/addons.md | 160 ++++++++++++++++++++--------------------------
 1 file changed, 68 insertions(+), 92 deletions(-)

diff --git a/doc/api/addons.md b/doc/api/addons.md
index 8e2864952e0841..48eaeb078456ec 100644
--- a/doc/api/addons.md
+++ b/doc/api/addons.md
@@ -4,22 +4,17 @@
 
 <!-- type=misc -->
 
-_Addons_ are dynamically-linked shared objects written in C++. The
-[`require()`][require] function can load addons as ordinary Node.js modules.
-Addons provide an interface between JavaScript and C/C++ libraries.
+_Addons_ are dynamically-linked shared objects that can be loaded via the
+[`require()`][] function as ordinary Node.js modules.
+Addons provide a foreign function interface between JavaScript and native code.
 
 There are three options for implementing addons:
 
-* Node-API
+* [Node-API][] (recommended)
 * `nan` ([Native Abstractions for Node.js][])
 * direct use of internal V8, libuv, and Node.js libraries
 
-Unless there is a need for direct access to functionality which is not\
-exposed by Node-API, use Node-API.
-Refer to [C/C++ addons with Node-API](n-api.md) for more information on
-Node-API.
-
-When not using Node-API, implementing addons becomes more complex, requiring\
+This rest of this document focuses on the latter, requiring
 knowledge of multiple components and APIs:
 
 * [V8][]: the C++ library Node.js uses to provide the
@@ -28,7 +23,7 @@ knowledge of multiple components and APIs:
   `v8.h` header file (`deps/v8/include/v8.h` in the Node.js source
   tree), and is also available [online][v8-docs].
 
-* [libuv][]: The C library that implements the Node.js event loop, its worker
+* [`libuv`][]: The C library that implements the Node.js event loop, its worker
   threads and all of the asynchronous behaviors of the platform. It also
   serves as a cross-platform abstraction library, giving easy, POSIX-like
   access across all major operating systems to many common system tasks, such
@@ -87,37 +82,40 @@ void Initialize(Local<Object> exports) {
   NODE_SET_METHOD(exports, "hello", Method);
 }
 
-NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
+NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize) // N.B.: no semi-colon, this is not a function
 
 }  // namespace demo
 ```
 
-All Node.js addons must export an initialization function following
-the pattern:
+On most platforms, the following `Makefile` can get us started:
 
-```cpp
-void Initialize(Local<Object> exports);
-NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
+<!--lint disable no-tabs remark-lint-->
+
+```bash
+NODEJS_DEV_ROOT ?= $(shell dirname "$$(command -v node)")/..
+CXXFLAGS = -std=c++23 -I$(NODEJS_DEV_ROOT)/include/node -fPIC -shared -Wl,-undefined,dynamic_lookup
+
+hello.node: hello.cc
+	$(CXX) $(CXXFLAGS) -o $@ $<
 ```
 
-There is no semi-colon after `NODE_MODULE` as it's not a function (see
-`node.h`).
+<!--lint enable no-tabs remark-lint-->
 
-The `module_name` must match the filename of the final binary (excluding
-the `.node` suffix).
+Then running the following commands will compile and run the code:
 
-In the `hello.cc` example, then, the initialization function is `Initialize`
-and the addon module name is `addon`.
+```console
+$ make
+$ node -p 'require("./hello.node").hello()'
+world
+```
+
+To integrate with the npm ecosystem, see the [Building][] section.
 
-When building addons with `node-gyp`, using the macro `NODE_GYP_MODULE_NAME` as
-the first parameter of `NODE_MODULE()` will ensure that the name of the final
-binary will be passed to `NODE_MODULE()`.
+### Context-aware addons
 
 Addons defined with `NODE_MODULE()` can not be loaded in multiple contexts or
 multiple threads at the same time.
 
-### Context-aware addons
-
 There are environments in which Node.js addons may need to be loaded multiple
 times in multiple contexts. For example, the [Electron][] runtime runs multiple
 instances of Node.js in a single process. Each instance will have its own
@@ -257,8 +255,8 @@ changes:
 In order to be loaded from multiple Node.js environments,
 such as a main thread and a Worker thread, an add-on needs to either:
 
-* Be an Node-API addon, or
-* Be declared as context-aware using `NODE_MODULE_INIT()` as described above
+* Be an [Node-API][] addon.
+* Be declared as context-aware using `NODE_MODULE_INIT()` as described above.
 
 In order to support [`Worker`][] threads, addons need to clean up any resources
 they may have allocated when such a thread exits. This can be achieved through
@@ -340,7 +338,7 @@ require('./build/Release/addon');
 Once the source code has been written, it must be compiled into the binary
 `addon.node` file. To do so, create a file called `binding.gyp` in the
 top-level of the project describing the build configuration of the module
-using a JSON-like format. This file is used by [node-gyp][], a tool written
+using a JSON-like format. This file is used by [`node-gyp`][], a tool written
 specifically to compile Node.js addons.
 
 ```json
@@ -375,7 +373,7 @@ version of `node-gyp` to perform this same set of actions, generating a
 compiled version of the addon for the user's platform on demand.
 
 Once built, the binary addon can be used from within Node.js by pointing
-[`require()`][require] to the built `addon.node` module:
+[`require()`][] to the built `addon.node` module:
 
 ```js
 // hello.js
@@ -422,18 +420,46 @@ aware of:
 ### Loading addons using `require()`
 
 The filename extension of the compiled addon binary is `.node` (as opposed
-to `.dll` or `.so`). The [`require()`][require] function is written to look for
+to `.dll` or `.so`). The [`require()`][] function is written to look for
 files with the `.node` file extension and initialize those as dynamically-linked
 libraries.
 
-When calling [`require()`][require], the `.node` extension can usually be
+When calling [`require()`][], the `.node` extension can usually be
 omitted and Node.js will still find and initialize the addon. One caveat,
 however, is that Node.js will first attempt to locate and load modules or
 JavaScript files that happen to share the same base name. For instance, if
 there is a file `addon.js` in the same directory as the binary `addon.node`,
-then [`require('addon')`][require] will give precedence to the `addon.js` file
+then [`require('addon')`][`require()`] will give precedence to the `addon.js` file
 and load it instead.
 
+### Loading addons using `import`
+
+<!-- YAML
+added:
+  - v23.6.0
+  - v22.20.0
+-->
+
+> Stability: 1.0 - Early development
+
+You can use the [`--experimental-addon-modules`][] flag to enable support for
+both static `import` and dynamic `import()` to load binary addons.
+
+If we reuse the Hello World example from earlier, you could do:
+
+```mjs
+// hello.mjs
+import myAddon from './hello.node';
+// N.B.: import {hello} from './hello.node' would not work
+
+console.log(myAddon.hello());
+```
+
+```console
+$ node --experimental-addon-modules hello.mjs
+world
+```
+
 ## Native abstractions for Node.js
 
 Each of the examples illustrated in this document directly use the
@@ -453,59 +479,7 @@ illustration of how it can be used.
 
 > Stability: 2 - Stable
 
-Node-API is an API for building native addons. It is independent from
-the underlying JavaScript runtime (e.g. V8) and is maintained as part of
-Node.js itself. This API will be Application Binary Interface (ABI) stable
-across versions of Node.js. It is intended to insulate addons from
-changes in the underlying JavaScript engine and allow modules
-compiled for one version to run on later versions of Node.js without
-recompilation. Addons are built/packaged with the same approach/tools
-outlined in this document (node-gyp, etc.). The only difference is the
-set of APIs that are used by the native code. Instead of using the V8
-or [Native Abstractions for Node.js][] APIs, the functions available
-in the Node-API are used.
-
-Creating and maintaining an addon that benefits from the ABI stability
-provided by Node-API carries with it certain
-[implementation considerations][].
-
-To use Node-API in the above "Hello world" example, replace the content of
-`hello.cc` with the following. All other instructions remain the same.
-
-```cpp
-// hello.cc using Node-API
-#include <node_api.h>
-
-namespace demo {
-
-napi_value Method(napi_env env, napi_callback_info args) {
-  napi_value greeting;
-  napi_status status;
-
-  status = napi_create_string_utf8(env, "world", NAPI_AUTO_LENGTH, &greeting);
-  if (status != napi_ok) return nullptr;
-  return greeting;
-}
-
-napi_value init(napi_env env, napi_value exports) {
-  napi_status status;
-  napi_value fn;
-
-  status = napi_create_function(env, nullptr, 0, Method, nullptr, &fn);
-  if (status != napi_ok) return nullptr;
-
-  status = napi_set_named_property(env, exports, "hello", fn);
-  if (status != napi_ok) return nullptr;
-  return exports;
-}
-
-NAPI_MODULE(NODE_GYP_MODULE_NAME, init)
-
-}  // namespace demo
-```
-
-The functions available and how to use them are documented in
-[C/C++ addons with Node-API](n-api.md).
+See [C/C++ addons with Node-API][Node-API].
 
 ## Addon examples
 
@@ -1376,18 +1350,20 @@ console.log(result);
 // Prints: 30
 ```
 
+[Building]: #building
 [Electron]: https://electronjs.org/
 [Embedder's Guide]: https://v8.dev/docs/embed
 [Linking to libraries included with Node.js]: #linking-to-libraries-included-with-nodejs
 [Native Abstractions for Node.js]: https://github.com/nodejs/nan
+[Node-API]: n-api.md
 [V8]: https://v8.dev/
+[`--experimental-addon-modules`]: cli.md#--experimental-addon-modules
 [`Worker`]: worker_threads.md#class-worker
+[`libuv`]: https://github.com/libuv/libuv
+[`node-gyp`]: https://github.com/nodejs/node-gyp
+[`require()`]: modules.md#requireid
 [bindings]: https://github.com/TooTallNate/node-bindings
 [download]: https://github.com/nodejs/node-addon-examples
 [examples]: https://github.com/nodejs/nan/tree/HEAD/examples/
-[implementation considerations]: n-api.md#implications-of-abi-stability
 [installation instructions]: https://github.com/nodejs/node-gyp#installation
-[libuv]: https://github.com/libuv/libuv
-[node-gyp]: https://github.com/nodejs/node-gyp
-[require]: modules.md#requireid
 [v8-docs]: https://v8docs.nodesource.com/

From 4e15e5b6473643f09cf11505ba2e2e2f3eee4c8d Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Mon, 9 Mar 2026 20:48:11 -0400
Subject: [PATCH 176/267] test: update WPT for WebCryptoAPI to c9e955840a

PR-URL: https://github.com/nodejs/node/pull/62147
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 test/fixtures/wpt/README.md                   |  2 +-
 .../normalize-algorithm-name.https.any.js     | 52 +++++++++++++++++++
 .../wrapKey_unwrapKey.https.any.js            | 24 +++++++--
 .../wrapKey_unwrapKey_vectors.js              | 10 +++-
 test/fixtures/wpt/versions.json               |  2 +-
 5 files changed, 83 insertions(+), 7 deletions(-)
 create mode 100644 test/fixtures/wpt/WebCryptoAPI/normalize-algorithm-name.https.any.js

diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md
index ec9fd8763043fd..d70134a7c606ab 100644
--- a/test/fixtures/wpt/README.md
+++ b/test/fixtures/wpt/README.md
@@ -34,7 +34,7 @@ Last update:
 - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/cde25e7e3c/wasm/jsapi
 - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi
 - web-locks: https://github.com/web-platform-tests/wpt/tree/10a122a6bc/web-locks
-- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/42e47329fd/WebCryptoAPI
+- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/c9e955840a/WebCryptoAPI
 - webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/2f96fa1996/webidl/ecmascript-binding/es-exceptions
 - webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/6495c91853/webmessaging/broadcastchannel
 - webstorage: https://github.com/web-platform-tests/wpt/tree/1d2c5fb36a/webstorage
diff --git a/test/fixtures/wpt/WebCryptoAPI/normalize-algorithm-name.https.any.js b/test/fixtures/wpt/WebCryptoAPI/normalize-algorithm-name.https.any.js
new file mode 100644
index 00000000000000..5f9779c9dba168
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/normalize-algorithm-name.https.any.js
@@ -0,0 +1,52 @@
+// META: title=WebCryptoAPI: Algorithm normalization matches names ASCII case-insensitively
+// U+212A is the Kelvin Sign
+
+function makeSalt() {
+  return crypto.getRandomValues(new Uint8Array(32));
+}
+
+async function makeKey(algorithm) {
+  const keyData = new Uint8Array([]);
+  return crypto.subtle.importKey("raw", keyData, algorithm, false, ["deriveBits"]);
+}
+
+promise_test(async (t) => {
+  const algorithm = {
+    name: "H\u212ADF",
+    hash: "SHA-256",
+    salt: makeSalt(),
+    info: new TextEncoder().encode(''),
+  };
+  const key = await makeKey("HKDF");
+  const p = crypto.subtle.deriveBits(algorithm, key, 256);
+  return promise_rejects_dom(t, "NotSupportedError", p, algorithm.name);
+}, `"H<U+212A>DF" does not match "HKDF"`);
+
+promise_test(async (t) => {
+  const algorithm = {
+    name: "PB\u212ADF2",
+    hash: "SHA-256",
+    iterations: 1,
+    salt: makeSalt(),
+  };
+  const key = await makeKey("PBKDF2");
+  const p = crypto.subtle.deriveBits(algorithm, key, 256);
+  return promise_rejects_dom(t, "NotSupportedError", p, algorithm.name);
+}, `"PB<U+212A>DF2" does not match "PBKDF2"`);
+
+promise_test(async (t) => {
+  const algorithm = {name: "AES-\u212AW", length: 256};
+  const p = crypto.subtle.generateKey(algorithm, false, ["wrapKey"]);
+  return promise_rejects_dom(t, "NotSupportedError", p, algorithm.name);
+}, `"AES-<U+212A>W" does not match "AES-KW"`);
+
+promise_test(async (t) => {
+  const algorithm = {
+    name: "RSASSA-P\u212ACS1-V1_5",
+    modulusLength: 2048,
+    publicExponent: new Uint8Array([3]),
+    hash: "SHA-256",
+  };
+  const p = crypto.subtle.generateKey(algorithm, false, ["sign"]);
+  return promise_rejects_dom(t, "NotSupportedError", p, algorithm.name);
+}, `"RSASSA-P<U+212A>CS1-V1_5" does not match "RSASSA-PKCS1-V1_5"`);
diff --git a/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js b/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js
index 9dd837b3bf60a9..e40b4b6d35f794 100644
--- a/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js
@@ -40,6 +40,11 @@
             name: "AES-KW",
             importParameters: {name: "AES-KW", length: 128},
             wrapParameters: {name: "AES-KW"}
+        },
+        {
+            name: 'ChaCha20-Poly1305',
+            importParameters: {name: "ChaCha20-Poly1305"},
+            wrapParameters: {name: "ChaCha20-Poly1305", iv: new Uint8Array(12), additionalData: new Uint8Array(16)}
         }
     ];
 
@@ -57,7 +62,8 @@
         {algorithm: {name: "AES-CBC", length: 128}, usages: ["encrypt", "decrypt"]},
         {algorithm: {name: "AES-GCM", length: 128}, usages: ["encrypt", "decrypt"]},
         {algorithm: {name: "AES-KW", length: 128}, usages: ["wrapKey", "unwrapKey"]},
-        {algorithm: {name: "HMAC", length: 128, hash: "SHA-256"}, usages: ["sign", "verify"]}
+        {algorithm: {name: "HMAC", length: 128, hash: "SHA-256"}, usages: ["sign", "verify"]},
+        {algorithm: {name: "ChaCha20-Poly1305"}, usages: ['encrypt', 'decrypt']}
     ];
 
     // Import all the keys needed, then iterate over all combinations
@@ -106,9 +112,15 @@
                               .then(function(key) {
                                   wrappers["RSA-OAEP"].unwrappingKey = key;
                               }));
+            } else if (params.name === "ChaCha20-Poly1305") {
+                var algorithm = {name: params.name};
+                promises.push(subtle.importKey("raw", wrappingKeyData["SYMMETRIC256"].raw, algorithm, true, ["wrapKey", "unwrapKey"])
+                              .then(function(key) {
+                                  wrappers[params.name] = {wrappingKey: key, unwrappingKey: key, parameters: params};
+                              }));
             } else {
                 var algorithm = {name: params.name};
-                promises.push(subtle.importKey("raw", wrappingKeyData["SYMMETRIC"].raw, algorithm, true, ["wrapKey", "unwrapKey"])
+                promises.push(subtle.importKey("raw", wrappingKeyData["SYMMETRIC128"].raw, algorithm, true, ["wrapKey", "unwrapKey"])
                               .then(function(key) {
                                   wrappers[params.name] = {wrappingKey: key, unwrappingKey: key, parameters: params};
                               }));
@@ -151,9 +163,12 @@
                 var keyData = toWrapKeyDataFromAlg(params.algorithm.name);
                 promises.push(importAndExport("spki", keyData.spki, params.algorithm, params.publicUsages, "public key "));
                 promises.push(importAndExport("pkcs8", keyData.pkcs8, params.algorithm, params.privateUsages, "private key "));
+            } else if (params.algorithm.name === "ChaCha20-Poly1305") {
+                keys[params.algorithm.name] = {};
+                promises.push(importAndExport("raw", toWrapKeyData["SYMMETRIC256"].raw, params.algorithm, params.usages, ""));
             } else {
                 keys[params.algorithm.name] = {};
-                promises.push(importAndExport("raw", toWrapKeyData["SYMMETRIC"].raw, params.algorithm, params.usages, ""));
+                promises.push(importAndExport("raw", toWrapKeyData["SYMMETRIC128"].raw, params.algorithm, params.usages, ""));
             }
         });
         // Using allSettled to skip unsupported test cases.
@@ -432,6 +447,9 @@
             case "ECDH" :
                 deriveParams = {name: "ECDH"};
                 break;
+            case "ChaCha20-Poly1305":
+                cryptParams = {name: "ChaCha20-Poly1305", iv: new Uint8Array(12)};
+                break;
             default:
                 throw new Error("Unsupported algorithm for key comparison");
         }
diff --git a/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey_vectors.js b/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey_vectors.js
index 0c29a7df88b15e..cf799a8a8ce3ea 100644
--- a/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey_vectors.js
+++ b/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey_vectors.js
@@ -14,8 +14,11 @@ let wrappingKeyData = {
             qi: "JHmVKb1zwW5iRR6RCeexYnh2fmY-3DrPSdM8Dxhr0F8dayi-tlRqEdnG0hvp45n8gLUskWWcB9EXlUJObZGKDfGuxgMa3g_xeLA2vmFQ12MxPsyH4iCNZvsgmGxx7TuOHrnDh5EBVnM4_de63crEJON2sYI8Ozi-xp2OEmAr2seWKq4sxkFni6exLhqb-NE4m9HMKlng1EtQh2rLBFG1VYD3SYYpMLc5fxzqGvSxn3Fa-Xgg-IZPY3ubrcm52KYgmLUGmnYStfVqGSWSdhDXHlNgI5pdAA0FzpyBk3ZX-JsxhwcnneKrYBBweq06kRMGWgvdbdAQ-7wSeGqqj5VPwA"
         },
     },
-    "SYMMETRIC": {
+    "SYMMETRIC128": {
         raw: new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]),
+    },
+    "SYMMETRIC256": {
+        raw: new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]),
     }
 }
 
@@ -86,8 +89,11 @@ let toWrapKeyData = {
             kty: "OKP"
         }
     },
-    "SYMMETRIC": {
+    "SYMMETRIC128": {
         raw: new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]),
+    },
+    "SYMMETRIC256": {
+        raw: new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]),
     }
 }
 
diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json
index e67f60e8fbc5ea..54df646fee6cf3 100644
--- a/test/fixtures/wpt/versions.json
+++ b/test/fixtures/wpt/versions.json
@@ -96,7 +96,7 @@
     "path": "web-locks"
   },
   "WebCryptoAPI": {
-    "commit": "42e47329fdc92c80d58c2816eb66cb2cf2b32a89",
+    "commit": "c9e955840a21be6e492225a4a53fc4828d8933b9",
     "path": "WebCryptoAPI"
   },
   "webidl/ecmascript-binding/es-exceptions": {

From 12ba2d74fe58de55e29a559cb427b56c75583f89 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Mon, 9 Mar 2026 20:48:21 -0400
Subject: [PATCH 177/267] test: update WPT for url to c928b19ab0

PR-URL: https://github.com/nodejs/node/pull/62148
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Mattias Buelens <mattias@buelens.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 test/fixtures/wpt/README.md                   |  2 +-
 .../wpt/url/resources/setters_tests.json      | 36 +++++++++++
 .../wpt/url/resources/urltestdata.json        | 60 +++++++++++++++++++
 test/fixtures/wpt/versions.json               |  2 +-
 4 files changed, 98 insertions(+), 2 deletions(-)

diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md
index d70134a7c606ab..a33a656e0479db 100644
--- a/test/fixtures/wpt/README.md
+++ b/test/fixtures/wpt/README.md
@@ -28,7 +28,7 @@ Last update:
 - resource-timing: https://github.com/web-platform-tests/wpt/tree/22d38586d0/resource-timing
 - resources: https://github.com/web-platform-tests/wpt/tree/1d2c5fb36a/resources
 - streams: https://github.com/web-platform-tests/wpt/tree/bc9dcbbf1a/streams
-- url: https://github.com/web-platform-tests/wpt/tree/efb889eb4c/url
+- url: https://github.com/web-platform-tests/wpt/tree/c928b19ab0/url
 - urlpattern: https://github.com/web-platform-tests/wpt/tree/a2e15ad405/urlpattern
 - user-timing: https://github.com/web-platform-tests/wpt/tree/5ae85bf826/user-timing
 - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/cde25e7e3c/wasm/jsapi
diff --git a/test/fixtures/wpt/url/resources/setters_tests.json b/test/fixtures/wpt/url/resources/setters_tests.json
index 090598db966df8..fb86654df2196b 100644
--- a/test/fixtures/wpt/url/resources/setters_tests.json
+++ b/test/fixtures/wpt/url/resources/setters_tests.json
@@ -2548,6 +2548,42 @@
                 "href": "http://example.net/#%00",
                 "hash": "#%00"
             }
+        },
+        {
+            "comment": "Fragment with <> on data: URI",
+            "href": "data:text/plain,test",
+            "new_value": "#<foo> <bar>",
+            "expected": {
+                "href": "data:text/plain,test#%3Cfoo%3E%20%3Cbar%3E",
+                "hash": "#%3Cfoo%3E%20%3Cbar%3E"
+            }
+        },
+        {
+            "comment": "Fragment with <> on about:blank",
+            "href": "about:blank",
+            "new_value": "#<foo> <bar>",
+            "expected": {
+                "href": "about:blank#%3Cfoo%3E%20%3Cbar%3E",
+                "hash": "#%3Cfoo%3E%20%3Cbar%3E"
+            }
+        },
+        {
+            "comment": "Fragment percent-encode set on data: URI; tabs and newlines are removed",
+            "href": "data:text/plain,test",
+            "new_value": "#\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
+            "expected": {
+                "href": "data:text/plain,test#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9",
+                "hash": "#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9"
+            }
+        },
+        {
+            "comment": "Fragment percent-encode set on about:blank; tabs and newlines are removed",
+            "href": "about:blank",
+            "new_value": "#\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
+            "expected": {
+                "href": "about:blank#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9",
+                "hash": "#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9"
+            }
         }
     ],
     "href": [
diff --git a/test/fixtures/wpt/url/resources/urltestdata.json b/test/fixtures/wpt/url/resources/urltestdata.json
index fd2201cfe3185d..ec13a88cef0e8b 100644
--- a/test/fixtures/wpt/url/resources/urltestdata.json
+++ b/test/fixtures/wpt/url/resources/urltestdata.json
@@ -10296,5 +10296,65 @@
     "pathname": "/a\\b",
     "search": "",
     "hash": ""
+  },
+  {
+    "comment": "Fragment with <> on data: URI",
+    "input": "data:text/plain,test#<foo> <bar>",
+    "base": null,
+    "href": "data:text/plain,test#%3Cfoo%3E%20%3Cbar%3E",
+    "protocol": "data:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "text/plain,test",
+    "search": "",
+    "hash": "#%3Cfoo%3E%20%3Cbar%3E"
+  },
+  {
+    "comment": "Fragment with <> on about:blank",
+    "input": "about:blank#<foo> <bar>",
+    "base": null,
+    "href": "about:blank#%3Cfoo%3E%20%3Cbar%3E",
+    "protocol": "about:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "blank",
+    "search": "",
+    "hash": "#%3Cfoo%3E%20%3Cbar%3E"
+  },
+  {
+    "comment": "Fragment percent-encode set on data: URI; tabs and newlines are removed",
+    "input":"data:text/plain,test#\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
+    "base": null,
+    "href": "data:text/plain,test#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9",
+    "protocol": "data:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "text/plain,test",
+    "search": "",
+    "hash": "#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9"
+  },
+  {
+    "comment": "Fragment percent-encode set on about:blank; tabs and newlines are removed",
+    "input": "about:blank#\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
+    "base": null,
+    "href": "about:blank#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9",
+    "protocol": "about:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "blank",
+    "search": "",
+    "hash": "#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9"
   }
 ]
diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json
index 54df646fee6cf3..153e72d51858d6 100644
--- a/test/fixtures/wpt/versions.json
+++ b/test/fixtures/wpt/versions.json
@@ -72,7 +72,7 @@
     "path": "streams"
   },
   "url": {
-    "commit": "efb889eb4c9ca0b4e3ebd8ab308646b7483a8f54",
+    "commit": "c928b19ab04a4525807238e9299c23f3a1cca582",
     "path": "url"
   },
   "urlpattern": {

From 43159d0e5fa863f31bf04ddaf654c1e42717ff1f Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Mon, 9 Mar 2026 21:19:50 -0400
Subject: [PATCH 178/267] deps: update sqlite to 3.52.0

PR-URL: https://github.com/nodejs/node/pull/62150
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
---
 deps/sqlite/sqlite3.c    | 8545 ++++++++++++++++++++++----------------
 deps/sqlite/sqlite3.h    |  253 +-
 deps/sqlite/sqlite3ext.h |   11 +-
 3 files changed, 5232 insertions(+), 3577 deletions(-)

diff --git a/deps/sqlite/sqlite3.c b/deps/sqlite/sqlite3.c
index b44fb754da8bdb..76d2887bf034c6 100644
--- a/deps/sqlite/sqlite3.c
+++ b/deps/sqlite/sqlite3.c
@@ -1,6 +1,6 @@
 /******************************************************************************
 ** This file is an amalgamation of many separate C source files from SQLite
-** version 3.51.2.  By combining all the individual C code files into this
+** version 3.52.0.  By combining all the individual C code files into this
 ** single large file, the entire code can be compiled as a single translation
 ** unit.  This allows many compilers to do optimizations that would not be
 ** possible if the files were compiled separately.  Performance improvements
@@ -18,7 +18,7 @@
 ** separate file. This file contains only code for the core SQLite library.
 **
 ** The content in this amalgamation comes from Fossil check-in
-** b270f8339eb13b504d0b2ba154ebca966b7d with changes in files:
+** 557aeb43869d3585137b17690cb3b64f7de6 with changes in files:
 **
 **    
 */
@@ -467,12 +467,12 @@ extern "C" {
 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
 ** [sqlite_version()] and [sqlite_source_id()].
 */
-#define SQLITE_VERSION        "3.51.2"
-#define SQLITE_VERSION_NUMBER 3051002
-#define SQLITE_SOURCE_ID      "2026-01-09 17:27:48 b270f8339eb13b504d0b2ba154ebca966b7dde08e40c3ed7d559749818cb2075"
-#define SQLITE_SCM_BRANCH     "branch-3.51"
-#define SQLITE_SCM_TAGS       "release version-3.51.2"
-#define SQLITE_SCM_DATETIME   "2026-01-09T17:27:48.405Z"
+#define SQLITE_VERSION        "3.52.0"
+#define SQLITE_VERSION_NUMBER 3052000
+#define SQLITE_SOURCE_ID      "2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6"
+#define SQLITE_SCM_BRANCH     "trunk"
+#define SQLITE_SCM_TAGS       "release major-release version-3.52.0"
+#define SQLITE_SCM_DATETIME   "2026-03-06T16:01:44.367Z"
 
 /*
 ** CAPI3REF: Run-Time Library Version Numbers
@@ -1811,7 +1811,7 @@ typedef const char *sqlite3_filename;
 ** greater and the function pointer is not NULL) and will fall back
 ** to xCurrentTime() if xCurrentTimeInt64() is unavailable.
 **
-** ^The xSetSystemCall(), xGetSystemCall(), and xNestSystemCall() interfaces
+** ^The xSetSystemCall(), xGetSystemCall(), and xNextSystemCall() interfaces
 ** are not used by the SQLite core.  These optional interfaces are provided
 ** by some VFSes to facilitate testing of the VFS code. By overriding
 ** system calls with functions under its control, a test program can
@@ -2888,12 +2888,15 @@ struct sqlite3_mem_methods {
 ** [[SQLITE_DBCONFIG_STMT_SCANSTATUS]]
 ** <dt>SQLITE_DBCONFIG_STMT_SCANSTATUS</dt>
 ** <dd>The SQLITE_DBCONFIG_STMT_SCANSTATUS option is only useful in
-** SQLITE_ENABLE_STMT_SCANSTATUS builds. In this case, it sets or clears
-** a flag that enables collection of the sqlite3_stmt_scanstatus_v2()
-** statistics. For statistics to be collected, the flag must be set on
-** the database handle both when the SQL statement is prepared and when it
-** is stepped. The flag is set (collection of statistics is enabled)
-** by default. <p>This option takes two arguments: an integer and a pointer to
+** [SQLITE_ENABLE_STMT_SCANSTATUS] builds. In this case, it sets or clears
+** a flag that enables collection of run-time performance statistics
+** used by [sqlite3_stmt_scanstatus_v2()] and the [nexec and ncycle]
+** columns of the [bytecode virtual table].
+** For statistics to be collected, the flag must be set on
+** the database handle both when the SQL statement is
+** [sqlite3_prepare|prepared] and when it is [sqlite3_step|stepped].
+** The flag is set (collection of statistics is enabled) by default.
+** <p>This option takes two arguments: an integer and a pointer to
 ** an integer.  The first argument is 1, 0, or -1 to enable, disable, or
 ** leave unchanged the statement scanstatus option.  If the second argument
 ** is not NULL, then the value of the statement scanstatus setting after
@@ -2966,6 +2969,22 @@ struct sqlite3_mem_methods {
 ** comments are allowed in SQL text after processing the first argument.
 ** </dd>
 **
+** [[SQLITE_DBCONFIG_FP_DIGITS]]
+** <dt>SQLITE_DBCONFIG_FP_DIGITS</dt>
+** <dd>The SQLITE_DBCONFIG_FP_DIGITS setting is a small integer that determines
+** the number of significant digits that SQLite will attempt to preserve when
+** converting floating point numbers (IEEE 754 "doubles") into text.  The
+** default value 17, as of SQLite version 3.52.0.  The value was 15 in all
+** prior versions.<p>
+** This option takes two arguments which are an integer and a pointer
+** to an integer.  The first argument is a small integer, between 3 and 23, or
+** zero.  The FP_DIGITS setting is changed to that small integer, or left
+** altered if the first argument is zero or out of range.  The second argument
+** is a pointer to an integer.  If the pointer is not NULL, then the value of
+** the FP_DIGITS setting, after possibly being modified by the first
+** arguments, is written into the integer to which the second argument points.
+** </dd>
+**
 ** </dl>
 **
 ** [[DBCONFIG arguments]] <h3>Arguments To SQLITE_DBCONFIG Options</h3>
@@ -2983,9 +3002,10 @@ struct sqlite3_mem_methods {
 ** the first argument.
 **
 ** <p>While most SQLITE_DBCONFIG options use the argument format
-** described in the previous paragraph, the [SQLITE_DBCONFIG_MAINDBNAME]
-** and [SQLITE_DBCONFIG_LOOKASIDE] options are different.  See the
-** documentation of those exceptional options for details.
+** described in the previous paragraph, the [SQLITE_DBCONFIG_MAINDBNAME],
+** [SQLITE_DBCONFIG_LOOKASIDE], and [SQLITE_DBCONFIG_FP_DIGITS] options
+** are different.  See the documentation of those exceptional options for
+** details.
 */
 #define SQLITE_DBCONFIG_MAINDBNAME            1000 /* const char* */
 #define SQLITE_DBCONFIG_LOOKASIDE             1001 /* void* int int */
@@ -3010,7 +3030,8 @@ struct sqlite3_mem_methods {
 #define SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE  1020 /* int int* */
 #define SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE   1021 /* int int* */
 #define SQLITE_DBCONFIG_ENABLE_COMMENTS       1022 /* int int* */
-#define SQLITE_DBCONFIG_MAX                   1022 /* Largest DBCONFIG */
+#define SQLITE_DBCONFIG_FP_DIGITS             1023 /* int int* */
+#define SQLITE_DBCONFIG_MAX                   1023 /* Largest DBCONFIG */
 
 /*
 ** CAPI3REF: Enable Or Disable Extended Result Codes
@@ -4492,6 +4513,7 @@ SQLITE_API void sqlite3_free_filename(sqlite3_filename);
 ** <li> sqlite3_errmsg()
 ** <li> sqlite3_errmsg16()
 ** <li> sqlite3_error_offset()
+** <li> sqlite3_db_handle()
 ** </ul>
 **
 ** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
@@ -4538,7 +4560,7 @@ SQLITE_API const char *sqlite3_errstr(int);
 SQLITE_API int sqlite3_error_offset(sqlite3 *db);
 
 /*
-** CAPI3REF: Set Error Codes And Message
+** CAPI3REF: Set Error Code And Message
 ** METHOD: sqlite3
 **
 ** Set the error code of the database handle passed as the first argument
@@ -4657,6 +4679,10 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 ** [[SQLITE_LIMIT_EXPR_DEPTH]] ^(<dt>SQLITE_LIMIT_EXPR_DEPTH</dt>
 ** <dd>The maximum depth of the parse tree on any expression.</dd>)^
 **
+** [[SQLITE_LIMIT_PARSER_DEPTH]] ^(<dt>SQLITE_LIMIT_PARSER_DEPTH</dt>
+** <dd>The maximum depth of the LALR(1) parser stack used to analyze
+** input SQL statements.</dd>)^
+**
 ** [[SQLITE_LIMIT_COMPOUND_SELECT]] ^(<dt>SQLITE_LIMIT_COMPOUND_SELECT</dt>
 ** <dd>The maximum number of terms in a compound SELECT statement.</dd>)^
 **
@@ -4701,6 +4727,7 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 #define SQLITE_LIMIT_VARIABLE_NUMBER           9
 #define SQLITE_LIMIT_TRIGGER_DEPTH            10
 #define SQLITE_LIMIT_WORKER_THREADS           11
+#define SQLITE_LIMIT_PARSER_DEPTH             12
 
 /*
 ** CAPI3REF: Prepare Flags
@@ -4745,12 +4772,29 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 ** fails, the sqlite3_prepare_v3() call returns the same error indications
 ** with or without this flag; it just omits the call to [sqlite3_log()] that
 ** logs the error.
+**
+** [[SQLITE_PREPARE_FROM_DDL]] <dt>SQLITE_PREPARE_FROM_DDL</dt>
+** <dd>The SQLITE_PREPARE_FROM_DDL flag causes the SQL compiler to enforce
+** security constraints that would otherwise only be enforced when parsing
+** the database schema.  In other words, the SQLITE_PREPARE_FROM_DDL flag
+** causes the SQL compiler to treat the SQL statement being prepared as if
+** it had come from an attacker.  When SQLITE_PREPARE_FROM_DDL is used and
+** [SQLITE_DBCONFIG_TRUSTED_SCHEMA] is off, SQL functions may only be called
+** if they are tagged with [SQLITE_INNOCUOUS] and virtual tables may only
+** be used if they are tagged with [SQLITE_VTAB_INNOCUOUS].  Best practice
+** is to use the SQLITE_PREPARE_FROM_DDL option when preparing any SQL that
+** is derived from parts of the database schema. In particular, virtual
+** table implementations that run SQL statements that are derived from
+** arguments to their CREATE VIRTUAL TABLE statement should always use
+** [sqlite3_prepare_v3()] and set the SQLITE_PREPARE_FROM_DDL flag to
+** prevent bypass of the [SQLITE_DBCONFIG_TRUSTED_SCHEMA] security checks.
 ** </dl>
 */
 #define SQLITE_PREPARE_PERSISTENT              0x01
 #define SQLITE_PREPARE_NORMALIZE               0x02
 #define SQLITE_PREPARE_NO_VTAB                 0x04
 #define SQLITE_PREPARE_DONT_LOG                0x10
+#define SQLITE_PREPARE_FROM_DDL                0x20
 
 /*
 ** CAPI3REF: Compiling An SQL Statement
@@ -4764,8 +4808,9 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 **
 ** The preferred routine to use is [sqlite3_prepare_v2()].  The
 ** [sqlite3_prepare()] interface is legacy and should be avoided.
-** [sqlite3_prepare_v3()] has an extra "prepFlags" option that is used
-** for special purposes.
+** [sqlite3_prepare_v3()] has an extra
+** [SQLITE_PREPARE_FROM_DDL|"prepFlags" option] that is some times
+** needed for special purpose or to pass along security restrictions.
 **
 ** The use of the UTF-8 interfaces is preferred, as SQLite currently
 ** does all parsing using UTF-8.  The UTF-16 interfaces are provided
@@ -5170,8 +5215,8 @@ typedef struct sqlite3_context sqlite3_context;
 ** it should be a pointer to well-formed UTF16 text.
 ** ^If the third parameter to sqlite3_bind_text64() is not NULL, then
 ** it should be a pointer to a well-formed unicode string that is
-** either UTF8 if the sixth parameter is SQLITE_UTF8, or UTF16
-** otherwise.
+** either UTF8 if the sixth parameter is SQLITE_UTF8 or SQLITE_UTF8_ZT,
+** or UTF16 otherwise.
 **
 ** [[byte-order determination rules]] ^The byte-order of
 ** UTF16 input text is determined by the byte-order mark (BOM, U+FEFF)
@@ -5217,10 +5262,15 @@ typedef struct sqlite3_context sqlite3_context;
 ** object and pointer to it must remain valid until then. ^SQLite will then
 ** manage the lifetime of its private copy.
 **
-** ^The sixth argument to sqlite3_bind_text64() must be one of
-** [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE]
-** to specify the encoding of the text in the third parameter.  If
-** the sixth argument to sqlite3_bind_text64() is not one of the
+** ^The sixth argument (the E argument)
+** to sqlite3_bind_text64(S,K,Z,N,D,E) must be one of
+** [SQLITE_UTF8], [SQLITE_UTF8_ZT], [SQLITE_UTF16], [SQLITE_UTF16BE],
+** or [SQLITE_UTF16LE] to specify the encoding of the text in the
+** third parameter, Z.  The special value [SQLITE_UTF8_ZT] means that the
+** string argument is both UTF-8 encoded and is zero-terminated.  In other
+** words, SQLITE_UTF8_ZT means that the Z array is allocated to hold at
+** least N+1 bytes and that the Z[N] byte is zero.  If
+** the E argument to sqlite3_bind_text64(S,K,Z,N,D,E) is not one of the
 ** allowed values shown above, or if the text encoding is different
 ** from the encoding specified by the sixth parameter, then the behavior
 ** is undefined.
@@ -6087,6 +6137,51 @@ SQLITE_API int sqlite3_create_window_function(
 **
 ** These constants define integer codes that represent the various
 ** text encodings supported by SQLite.
+**
+** <dl>
+** [[SQLITE_UTF8]] <dt>SQLITE_UTF8</dt><dd>Text is encoding as UTF-8</dd>
+**
+** [[SQLITE_UTF16LE]] <dt>SQLITE_UTF16LE</dt><dd>Text is encoding as UTF-16
+** with each code point being expressed "little endian" - the least significant
+** byte first.  This is the usual encoding, for example on Windows.</dd>
+**
+** [[SQLITE_UTF16BE]] <dt>SQLITE_UTF16BE</dt><dd>Text is encoding as UTF-16
+** with each code point being expressed "big endian" - the most significant
+** byte first.  This encoding is less common, but is still sometimes seen,
+** specially on older systems.
+**
+** [[SQLITE_UTF16]] <dt>SQLITE_UTF16</dt><dd>Text is encoding as UTF-16
+** with each code point being expressed either little endian or as big
+** endian, according to the native endianness of the host computer.
+**
+** [[SQLITE_ANY]] <dt>SQLITE_ANY</dt><dd>This encoding value may only be used
+** to declare the preferred text for [application-defined SQL functions]
+** created using [sqlite3_create_function()] and similar.  If the preferred
+** encoding (the 4th parameter to sqlite3_create_function() - the eTextRep
+** parameter) is SQLITE_ANY, that indicates that the function does not have
+** a preference regarding the text encoding of its parameters and can take
+** any text encoding that the SQLite core find convenient to supply.  This
+** option is deprecated.  Please do not use it in new applications.
+**
+** [[SQLITE_UTF16_ALIGNED]] <dt>SQLITE_UTF16_ALIGNED</dt><dd>This encoding
+** value may be used as the 3rd parameter (the eTextRep parameter) to
+** [sqlite3_create_collation()] and similar.  This encoding value means
+** that the application-defined collating sequence created expects its
+** input strings to be in UTF16 in native byte order, and that the start
+** of the strings must be aligned to a 2-byte boundary.
+**
+** [[SQLITE_UTF8_ZT]] <dt>SQLITE_UTF8_ZT</dt><dd>This option can only be
+** used to specify the text encoding to strings input to [sqlite3_result_text64()]
+** and [sqlite3_bind_text64()].  It means that the input string (call it "z")
+** is UTF-8 encoded and that it is zero-terminated.  If the length parameter
+** (call it "n") is non-negative, this encoding option means that the caller
+** guarantees that z array contains at least n+1 bytes and that the z[n]
+** byte has a value of zero.
+** This option gives the same output as SQLITE_UTF8, but can be more efficient
+** by avoiding the need to make a copy of the input string, in some cases.
+** However, if z is allocated to hold fewer than n+1 bytes or if the
+** z[n] byte is not zero, undefined behavior may result.
+** </dl>
 */
 #define SQLITE_UTF8           1    /* IMP: R-37514-35566 */
 #define SQLITE_UTF16LE        2    /* IMP: R-03371-37637 */
@@ -6094,6 +6189,7 @@ SQLITE_API int sqlite3_create_window_function(
 #define SQLITE_UTF16          4    /* Use native byte order */
 #define SQLITE_ANY            5    /* Deprecated */
 #define SQLITE_UTF16_ALIGNED  8    /* sqlite3_create_collation only */
+#define SQLITE_UTF8_ZT       16    /* Zero-terminated UTF8 */
 
 /*
 ** CAPI3REF: Function Flags
@@ -6599,10 +6695,14 @@ SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(voi
 **
 ** There is no limit (other than available memory) on the number of different
 ** client data pointers (with different names) that can be attached to a
-** single database connection.  However, the implementation is optimized
-** for the case of having only one or two different client data names.
-** Applications and wrapper libraries are discouraged from using more than
-** one client data name each.
+** single database connection.  However, the current implementation stores
+** the content on a linked list.  Insert and retrieval performance will
+** be proportional to the number of entries.  The design use case, and
+** the use case for which the implementation is optimized, is
+** that an application will store only small number of client data names,
+** typically just one or two.  This interface is not intended to be a
+** generalized key/value store for thousands or millions of keys.  It
+** will work for that, but performance might be disappointing.
 **
 ** There is no way to enumerate the client data pointers
 ** associated with a database connection.  The N parameter can be thought
@@ -6710,10 +6810,14 @@ typedef void (*sqlite3_destructor_type)(void*);
 ** set the return value of the application-defined function to be
 ** a text string which is represented as UTF-8, UTF-16 native byte order,
 ** UTF-16 little endian, or UTF-16 big endian, respectively.
-** ^The sqlite3_result_text64() interface sets the return value of an
+** ^The sqlite3_result_text64(C,Z,N,D,E) interface sets the return value of an
 ** application-defined function to be a text string in an encoding
-** specified by the fifth (and last) parameter, which must be one
-** of [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE].
+** specified the E parameter, which must be one
+** of [SQLITE_UTF8], [SQLITE_UTF8_ZT], [SQLITE_UTF16], [SQLITE_UTF16BE],
+** or [SQLITE_UTF16LE].  ^The special value [SQLITE_UTF8_ZT] means that
+** the result text is both UTF-8 and zero-terminated.  In other words,
+** SQLITE_UTF8_ZT means that the Z array holds at least N+1 byes and that
+** the Z[N] is zero.
 ** ^SQLite takes the text result from the application from
 ** the 2nd parameter of the sqlite3_result_text* interfaces.
 ** ^If the 3rd parameter to any of the sqlite3_result_text* interfaces
@@ -6800,7 +6904,7 @@ SQLITE_API void sqlite3_result_int(sqlite3_context*, int);
 SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
 SQLITE_API void sqlite3_result_null(sqlite3_context*);
 SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
-SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
+SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char *z, sqlite3_uint64 n,
                            void(*)(void*), unsigned char encoding);
 SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
 SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
@@ -7739,7 +7843,7 @@ SQLITE_API int sqlite3_table_column_metadata(
 ** ^The sqlite3_load_extension() interface attempts to load an
 ** [SQLite extension] library contained in the file zFile.  If
 ** the file cannot be loaded directly, attempts are made to load
-** with various operating-system specific extensions added.
+** with various operating-system specific filename extensions added.
 ** So for example, if "samplelib" cannot be loaded, then names like
 ** "samplelib.so" or "samplelib.dylib" or "samplelib.dll" might
 ** be tried also.
@@ -7747,10 +7851,10 @@ SQLITE_API int sqlite3_table_column_metadata(
 ** ^The entry point is zProc.
 ** ^(zProc may be 0, in which case SQLite will try to come up with an
 ** entry point name on its own.  It first tries "sqlite3_extension_init".
-** If that does not work, it constructs a name "sqlite3_X_init" where
-** X consists of the lower-case equivalent of all ASCII alphabetic
-** characters in the filename from the last "/" to the first following
-** "." and omitting any initial "lib".)^
+** If that does not work, it tries names of the form "sqlite3_X_init"
+** where X consists of the lower-case equivalent of all ASCII alphabetic
+** characters or all ASCII alphanumeric characters in the filename from
+** the last "/" to the first following "." and omitting any initial "lib".)^
 ** ^The sqlite3_load_extension() interface returns
 ** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
 ** ^If an error occurs and pzErrMsg is not 0, then the
@@ -9043,17 +9147,22 @@ SQLITE_API sqlite3_str *sqlite3_str_new(sqlite3*);
 ** pass the returned value to [sqlite3_free()] to avoid a memory leak.
 ** ^The [sqlite3_str_finish(X)] interface may return a NULL pointer if any
 ** errors were encountered during construction of the string.  ^The
-** [sqlite3_str_finish(X)] interface will also return a NULL pointer if the
+** [sqlite3_str_finish(X)] interface might also return a NULL pointer if the
 ** string in [sqlite3_str] object X is zero bytes long.
+**
+** ^The [sqlite3_str_free(X)] interface destroys both the sqlite3_str object
+** X and the string content it contains.  Calling sqlite3_str_free(X) is
+** the equivalent of calling [sqlite3_free](sqlite3_str_finish(X)).
 */
 SQLITE_API char *sqlite3_str_finish(sqlite3_str*);
+SQLITE_API void sqlite3_str_free(sqlite3_str*);
 
 /*
 ** CAPI3REF: Add Content To A Dynamic String
 ** METHOD: sqlite3_str
 **
-** These interfaces add content to an sqlite3_str object previously obtained
-** from [sqlite3_str_new()].
+** These interfaces add or remove content to an sqlite3_str object
+** previously obtained from [sqlite3_str_new()].
 **
 ** ^The [sqlite3_str_appendf(X,F,...)] and
 ** [sqlite3_str_vappendf(X,F,V)] interfaces uses the [built-in printf]
@@ -9076,6 +9185,10 @@ SQLITE_API char *sqlite3_str_finish(sqlite3_str*);
 ** ^The [sqlite3_str_reset(X)] method resets the string under construction
 ** inside [sqlite3_str] object X back to zero bytes in length.
 **
+** ^The [sqlite3_str_truncate(X,N)] method changes the length of the string
+** under construction to be N bytes are less.  This routine is a no-op if
+** N is negative or if the string is already N bytes or smaller in size.
+**
 ** These methods do not return a result code.  ^If an error occurs, that fact
 ** is recorded in the [sqlite3_str] object and can be recovered by a
 ** subsequent call to [sqlite3_str_errcode(X)].
@@ -9086,6 +9199,7 @@ SQLITE_API void sqlite3_str_append(sqlite3_str*, const char *zIn, int N);
 SQLITE_API void sqlite3_str_appendall(sqlite3_str*, const char *zIn);
 SQLITE_API void sqlite3_str_appendchar(sqlite3_str*, int N, char C);
 SQLITE_API void sqlite3_str_reset(sqlite3_str*);
+SQLITE_API void sqlite3_str_truncate(sqlite3_str*,int N);
 
 /*
 ** CAPI3REF: Status Of A Dynamic String
@@ -10919,9 +11033,9 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
 ** a variable pointed to by the "pOut" parameter.
 **
 ** The "flags" parameter must be passed a mask of flags. At present only
-** one flag is defined - SQLITE_SCANSTAT_COMPLEX. If SQLITE_SCANSTAT_COMPLEX
+** one flag is defined - [SQLITE_SCANSTAT_COMPLEX]. If SQLITE_SCANSTAT_COMPLEX
 ** is specified, then status information is available for all elements
-** of a query plan that are reported by "EXPLAIN QUERY PLAN" output. If
+** of a query plan that are reported by "[EXPLAIN QUERY PLAN]" output. If
 ** SQLITE_SCANSTAT_COMPLEX is not specified, then only query plan elements
 ** that correspond to query loops (the "SCAN..." and "SEARCH..." elements of
 ** the EXPLAIN QUERY PLAN output) are available. Invoking API
@@ -10935,7 +11049,8 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
 ** elements used to implement the statement - a non-zero value is returned and
 ** the variable that pOut points to is unchanged.
 **
-** See also: [sqlite3_stmt_scanstatus_reset()]
+** See also: [sqlite3_stmt_scanstatus_reset()] and the
+** [nexec and ncycle] columnes of the [bytecode virtual table].
 */
 SQLITE_API int sqlite3_stmt_scanstatus(
   sqlite3_stmt *pStmt,      /* Prepared statement for which info desired */
@@ -11477,19 +11592,41 @@ SQLITE_API int sqlite3_deserialize(
 /*
 ** CAPI3REF: Bind array values to the CARRAY table-valued function
 **
-** The sqlite3_carray_bind(S,I,P,N,F,X) interface binds an array value to
-** one of the first argument of the [carray() table-valued function].  The
-** S parameter is a pointer to the [prepared statement] that uses the carray()
-** functions.  I is the parameter index to be bound.  P is a pointer to the
-** array to be bound, and N is the number of eements in the array.  The
-** F argument is one of constants [SQLITE_CARRAY_INT32], [SQLITE_CARRAY_INT64],
-** [SQLITE_CARRAY_DOUBLE], [SQLITE_CARRAY_TEXT], or [SQLITE_CARRAY_BLOB] to
-** indicate the datatype of the array being bound.  The X argument is not a
-** NULL pointer, then SQLite will invoke the function X on the P parameter
-** after it has finished using P, even if the call to
-** sqlite3_carray_bind() fails. The special-case finalizer
-** SQLITE_TRANSIENT has no effect here.
-*/
+** The sqlite3_carray_bind_v2(S,I,P,N,F,X,D) interface binds an array value to
+** parameter that is the first argument of the [carray() table-valued function].
+** The S parameter is a pointer to the [prepared statement] that uses the carray()
+** functions.  I is the parameter index to be bound.  I must be the index of the
+** parameter that is the first argument to the carray() table-valued function.
+** P is a pointer to the array to be bound, and N is the number of elements in
+** the array.  The F argument is one of constants [SQLITE_CARRAY_INT32],
+** [SQLITE_CARRAY_INT64], [SQLITE_CARRAY_DOUBLE], [SQLITE_CARRAY_TEXT],
+** or [SQLITE_CARRAY_BLOB] to indicate the datatype of the array P.
+**
+** If the X argument is not a NULL pointer or one of the special
+** values [SQLITE_STATIC] or [SQLITE_TRANSIENT], then SQLite will invoke
+** the function X with argument D when it is finished using the data in P.
+** The call to X(D) is a destructor for the array P. The destructor X(D)
+** is invoked even if the call to sqlite3_carray_bind() fails. If the X
+** parameter is the special-case value [SQLITE_STATIC], then SQLite assumes
+** that the data static and the destructor is never invoked.  If the X
+** parameter is the special-case value [SQLITE_TRANSIENT], then
+** sqlite3_carray_bind_v2() makes its own private copy of the data prior
+** to returning and never invokes the destructor X.
+**
+** The sqlite3_carray_bind() function works the same as sqlite_carray_bind_v2()
+** with a D parameter set to P.  In other words,
+** sqlite3_carray_bind(S,I,P,N,F,X) is same as
+** sqlite3_carray_bind(S,I,P,N,F,X,P).
+*/
+SQLITE_API int sqlite3_carray_bind_v2(
+  sqlite3_stmt *pStmt,        /* Statement to be bound */
+  int i,                      /* Parameter index */
+  void *aData,                /* Pointer to array data */
+  int nData,                  /* Number of data elements */
+  int mFlags,                 /* CARRAY flags */
+  void (*xDel)(void*),        /* Destructor for aData */
+  void *pDel                  /* Optional argument to xDel() */
+);
 SQLITE_API int sqlite3_carray_bind(
   sqlite3_stmt *pStmt,        /* Statement to be bound */
   int i,                      /* Parameter index */
@@ -14334,6 +14471,27 @@ struct fts5_api {
 #endif
 #define SQLITE_MIN_LENGTH 30   /* Minimum value for the length limit */
 
+/*
+** Maximum size of any single memory allocation.
+**
+** This is not a limit on the total amount of memory used.  This is
+** a limit on the size parameter to sqlite3_malloc() and sqlite3_realloc().
+**
+** The upper bound is slightly less than 2GiB:  0x7ffffeff == 2,147,483,391
+** This provides a 256-byte safety margin for defense against 32-bit
+** signed integer overflow bugs when computing memory allocation sizes.
+** Paranoid applications might want to reduce the maximum allocation size
+** further for an even larger safety margin.  0x3fffffff or 0x0fffffff
+** or even smaller would be reasonable upper bounds on the size of a memory
+** allocations for most applications.
+*/
+#ifndef SQLITE_MAX_ALLOCATION_SIZE
+# define SQLITE_MAX_ALLOCATION_SIZE  2147483391
+#endif
+#if SQLITE_MAX_ALLOCATION_SIZE>2147483391
+# error Maximum size for SQLITE_MAX_ALLOCATION_SIZE is 2147483391
+#endif
+
 /*
 ** This is the maximum number of
 **
@@ -14369,21 +14527,42 @@ struct fts5_api {
 ** It used to be the case that setting this value to zero would
 ** turn the limit off.  That is no longer true.  It is not possible
 ** to turn this limit off.
+**
+** The hard limit is the largest possible 32-bit signed integer less
+** 1024, or 2147482624.
 */
 #ifndef SQLITE_MAX_SQL_LENGTH
 # define SQLITE_MAX_SQL_LENGTH 1000000000
 #endif
 
 /*
-** The maximum depth of an expression tree. This is limited to
-** some extent by SQLITE_MAX_SQL_LENGTH. But sometime you might
-** want to place more severe limits on the complexity of an
-** expression. A value of 0 means that there is no limit.
+** The maximum depth of an expression tree. The expression tree depth
+** is also limited indirectly by SQLITE_MAX_SQL_LENGTH and by
+** SQLITE_MAX_PARSER_DEPTH.  Reducing the maximum complexity of
+** expressions can help prevent excess memory usage by hostile SQL.
+**
+** A value of 0 for this compile-time option causes all expression
+** depth limiting code to be omitted.
 */
 #ifndef SQLITE_MAX_EXPR_DEPTH
 # define SQLITE_MAX_EXPR_DEPTH 1000
 #endif
 
+/*
+** The maximum depth of the LALR(1) stack used in the parser that
+** interprets SQL inputs. The parser stack depth can also be limited
+** indirectly by SQLITE_MAX_SQL_LENGTH.  Limiting the parser stack
+** depth can help prevent excess memory usage and excess CPU stack
+** usage when processing hostile SQL.
+**
+** Prior to version 3.45.0 (2024-01-15), the parser stack was
+** hard-coded to 100 entries, and that worked fine for almost all
+** applications.  So the upper bound on this limit need not be large.
+*/
+#ifndef SQLITE_MAX_PARSER_DEPTH
+# define SQLITE_MAX_PARSER_DEPTH 2500
+#endif
+
 /*
 ** The maximum number of terms in a compound SELECT statement.
 ** The code generator for compound SELECT statements does one
@@ -15269,6 +15448,7 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*);
 # define float sqlite_int64
 # define fabs(X) ((X)<0?-(X):(X))
 # define sqlite3IsOverflow(X) 0
+# define INFINITY (9223372036854775807LL)
 # ifndef SQLITE_BIG_DBL
 #   define SQLITE_BIG_DBL (((sqlite3_int64)1)<<50)
 # endif
@@ -15678,6 +15858,7 @@ typedef INT16_TYPE LogEst;
 #else
 # define EIGHT_BYTE_ALIGNMENT(X)   ((((uptr)(X) - (uptr)0)&7)==0)
 #endif
+#define TWO_BYTE_ALIGNMENT(X)      ((((uptr)(X) - (uptr)0)&1)==0)
 
 /*
 ** Disable MMAP on platforms where it is known to not work
@@ -17490,7 +17671,7 @@ typedef struct VdbeOpList VdbeOpList;
 ** Additional non-public SQLITE_PREPARE_* flags
 */
 #define SQLITE_PREPARE_SAVESQL  0x80  /* Preserve SQL text */
-#define SQLITE_PREPARE_MASK     0x1f  /* Mask of public flags */
+#define SQLITE_PREPARE_MASK     0x3f  /* Mask of public flags */
 
 /*
 ** Prototypes for the VDBE interface.  See comments on the implementation
@@ -17772,10 +17953,10 @@ struct PgHdr {
   PCache *pCache;                /* PRIVATE: Cache that owns this page */
   PgHdr *pDirty;                 /* Transient list of dirty sorted by pgno */
   Pager *pPager;                 /* The pager this page is part of */
-  Pgno pgno;                     /* Page number for this page */
 #ifdef SQLITE_CHECK_PAGES
-  u32 pageHash;                  /* Hash of page content */
+  u64 pageHash;                  /* Hash of page content */
 #endif
+  Pgno pgno;                     /* Page number for this page */
   u16 flags;                     /* PGHDR flags defined below */
 
   /**********************************************************************
@@ -18115,7 +18296,7 @@ struct Schema {
 ** The number of different kinds of things that can be limited
 ** using the sqlite3_limit() interface.
 */
-#define SQLITE_N_LIMIT (SQLITE_LIMIT_WORKER_THREADS+1)
+#define SQLITE_N_LIMIT (SQLITE_LIMIT_PARSER_DEPTH+1)
 
 /*
 ** Lookaside malloc is a set of fixed-size buffers that can be used
@@ -18269,6 +18450,7 @@ struct sqlite3 {
   u8 noSharedCache;             /* True if no shared-cache backends */
   u8 nSqlExec;                  /* Number of pending OP_SqlExec opcodes */
   u8 eOpenState;                /* Current condition of the connection */
+  u8 nFpDigit;                  /* Significant digits to keep on double->text */
   int nextPagesize;             /* Pagesize after VACUUM if >0 */
   i64 nChange;                  /* Value returned by sqlite3_changes() */
   i64 nTotalChange;             /* Value returned by sqlite3_total_changes() */
@@ -20163,19 +20345,6 @@ struct Upsert {
 /*
 ** An instance of the following structure contains all information
 ** needed to generate code for a single SELECT statement.
-**
-** See the header comment on the computeLimitRegisters() routine for a
-** detailed description of the meaning of the iLimit and iOffset fields.
-**
-** addrOpenEphm[] entries contain the address of OP_OpenEphemeral opcodes.
-** These addresses must be stored so that we can go back and fill in
-** the P4_KEYINFO and P2 parameters later.  Neither the KeyInfo nor
-** the number of columns in P2 can be computed at the same time
-** as the OP_OpenEphm instruction is coded because not
-** enough information about the compound query is known at that point.
-** The KeyInfo for addrOpenTran[0] and [1] contains collating sequences
-** for the result set.  The KeyInfo for addrOpenEphm[2] contains collating
-** sequences for the ORDER BY clause.
 */
 struct Select {
   u8 op;                 /* One of: TK_UNION TK_ALL TK_INTERSECT TK_EXCEPT */
@@ -20183,7 +20352,6 @@ struct Select {
   u32 selFlags;          /* Various SF_* values */
   int iLimit, iOffset;   /* Memory registers holding LIMIT & OFFSET counters */
   u32 selId;             /* Unique identifier number for this SELECT */
-  int addrOpenEphm[2];   /* OP_OpenEphem opcodes related to this select */
   ExprList *pEList;      /* The fields of the result */
   SrcList *pSrc;         /* The FROM clause */
   Expr *pWhere;          /* The WHERE clause */
@@ -20215,7 +20383,7 @@ struct Select {
 #define SF_Resolved      0x0000004 /* Identifiers have been resolved */
 #define SF_Aggregate     0x0000008 /* Contains agg functions or a GROUP BY */
 #define SF_HasAgg        0x0000010 /* Contains aggregate functions */
-#define SF_UsesEphemeral 0x0000020 /* Uses the OpenEphemeral opcode */
+#define SF_ClonedRhsIn   0x0000020 /* Cloned RHS of an IN operator */
 #define SF_Expanded      0x0000040 /* sqlite3SelectExpand() called on this */
 #define SF_HasTypeInfo   0x0000080 /* FROM subqueries have Table metadata */
 #define SF_Compound      0x0000100 /* Part of a compound query */
@@ -20225,14 +20393,14 @@ struct Select {
 #define SF_MinMaxAgg     0x0001000 /* Aggregate containing min() or max() */
 #define SF_Recursive     0x0002000 /* The recursive part of a recursive CTE */
 #define SF_FixedLimit    0x0004000 /* nSelectRow set by a constant LIMIT */
-#define SF_MaybeConvert  0x0008000 /* Need convertCompoundSelectToSubquery() */
+/*                       0x0008000 // available for reuse */
 #define SF_Converted     0x0010000 /* By convertCompoundSelectToSubquery() */
 #define SF_IncludeHidden 0x0020000 /* Include hidden columns in output */
 #define SF_ComplexResult 0x0040000 /* Result contains subquery or function */
 #define SF_WhereBegin    0x0080000 /* Really a WhereBegin() call.  Debug Only */
 #define SF_WinRewrite    0x0100000 /* Window function rewrite accomplished */
 #define SF_View          0x0200000 /* SELECT statement is a view */
-#define SF_NoopOrderBy   0x0400000 /* ORDER BY is ignored for this query */
+/*                       0x0400000 // available for reuse */
 #define SF_UFSrcCheck    0x0800000 /* Check pSrc as required by UPDATE...FROM */
 #define SF_PushDown      0x1000000 /* Modified by WHERE-clause push-down opt */
 #define SF_MultiPart     0x2000000 /* Has multiple incompatible PARTITIONs */
@@ -20252,11 +20420,6 @@ struct Select {
 ** by one of the following macros.  The "SRT" prefix means "SELECT Result
 ** Type".
 **
-**     SRT_Union       Store results as a key in a temporary index
-**                     identified by pDest->iSDParm.
-**
-**     SRT_Except      Remove results from the temporary index pDest->iSDParm.
-**
 **     SRT_Exists      Store a 1 in memory cell pDest->iSDParm if the result
 **                     set is not empty.
 **
@@ -20320,30 +20483,28 @@ struct Select {
 **                     table. (pDest->iSDParm) is the number of key columns in
 **                     each index record in this case.
 */
-#define SRT_Union        1  /* Store result as keys in an index */
-#define SRT_Except       2  /* Remove result from a UNION index */
-#define SRT_Exists       3  /* Store 1 if the result is not empty */
-#define SRT_Discard      4  /* Do not save the results anywhere */
-#define SRT_DistFifo     5  /* Like SRT_Fifo, but unique results only */
-#define SRT_DistQueue    6  /* Like SRT_Queue, but unique results only */
+#define SRT_Exists       1  /* Store 1 if the result is not empty */
+#define SRT_Discard      2  /* Do not save the results anywhere */
+#define SRT_DistFifo     3  /* Like SRT_Fifo, but unique results only */
+#define SRT_DistQueue    4  /* Like SRT_Queue, but unique results only */
 
 /* The DISTINCT clause is ignored for all of the above.  Not that
 ** IgnorableDistinct() implies IgnorableOrderby() */
 #define IgnorableDistinct(X) ((X->eDest)<=SRT_DistQueue)
 
-#define SRT_Queue        7  /* Store result in an queue */
-#define SRT_Fifo         8  /* Store result as data with an automatic rowid */
+#define SRT_Queue        5  /* Store result in an queue */
+#define SRT_Fifo         6  /* Store result as data with an automatic rowid */
 
 /* The ORDER BY clause is ignored for all of the above */
 #define IgnorableOrderby(X) ((X->eDest)<=SRT_Fifo)
 
-#define SRT_Output       9  /* Output each row of result */
-#define SRT_Mem         10  /* Store result in a memory cell */
-#define SRT_Set         11  /* Store results as keys in an index */
-#define SRT_EphemTab    12  /* Create transient tab and store like SRT_Table */
-#define SRT_Coroutine   13  /* Generate a single row of result */
-#define SRT_Table       14  /* Store result as data with an automatic rowid */
-#define SRT_Upfrom      15  /* Store result as data with rowid */
+#define SRT_Output       7  /* Output each row of result */
+#define SRT_Mem          8  /* Store result in a memory cell */
+#define SRT_Set          9  /* Store results as keys in an index */
+#define SRT_EphemTab    10  /* Create transient tab and store like SRT_Table */
+#define SRT_Coroutine   11  /* Generate a single row of result */
+#define SRT_Table       12  /* Store result as data with an automatic rowid */
+#define SRT_Upfrom      13  /* Store result as data with rowid */
 
 /*
 ** An instance of this object describes where to put of the results of
@@ -20479,17 +20640,12 @@ struct Parse {
   u8 nested;           /* Number of nested calls to the parser/code generator */
   u8 nTempReg;         /* Number of temporary registers in aTempReg[] */
   u8 isMultiWrite;     /* True if statement may modify/insert multiple rows */
-  u8 mayAbort;         /* True if statement may throw an ABORT exception */
-  u8 hasCompound;      /* Need to invoke convertCompoundSelectToSubquery() */
   u8 disableLookaside; /* Number of times lookaside has been disabled */
   u8 prepFlags;        /* SQLITE_PREPARE_* flags */
   u8 withinRJSubrtn;   /* Nesting level for RIGHT JOIN body subroutines */
-  u8 bHasExists;       /* Has a correlated "EXISTS (SELECT ....)" expression */
   u8 mSubrtnSig;       /* mini Bloom filter on available SubrtnSig.selId */
   u8 eTriggerOp;       /* TK_UPDATE, TK_INSERT or TK_DELETE */
-  u8 bReturning;       /* Coding a RETURNING trigger */
   u8 eOrconf;          /* Default ON CONFLICT policy for trigger steps */
-  u8 disableTriggers;  /* True to disable triggers */
 #if defined(SQLITE_DEBUG) || defined(SQLITE_COVERAGE_TEST)
   u8 earlyCleanup;     /* OOM inside sqlite3ParserAddCleanup() */
 #endif
@@ -20498,10 +20654,15 @@ struct Parse {
   u8 isCreate;         /* CREATE TABLE, INDEX, or VIEW (but not TRIGGER)
                        ** and ALTER TABLE ADD COLUMN. */
 #endif
-  bft colNamesSet :1;   /* TRUE after OP_ColumnName has been issued to pVdbe */
-  bft bHasWith :1;      /* True if statement contains WITH */
-  bft okConstFactor :1; /* OK to factor out constants */
-  bft checkSchema :1;   /* Causes schema cookie check after an error */
+  bft disableTriggers:1; /* True to disable triggers */
+  bft mayAbort :1;     /* True if statement may throw an ABORT exception */
+  bft hasCompound :1;  /* Need to invoke convertCompoundSelectToSubquery() */
+  bft bReturning :1;   /* Coding a RETURNING trigger */
+  bft bHasExists :1;   /* Has a correlated "EXISTS (SELECT ....)" expression */
+  bft colNamesSet :1;  /* TRUE after OP_ColumnName has been issued to pVdbe */
+  bft bHasWith :1;     /* True if statement contains WITH */
+  bft okConstFactor:1; /* OK to factor out constants */
+  bft checkSchema :1;  /* Causes schema cookie check after an error */
   int nRangeReg;       /* Size of the temporary register block */
   int iRangeReg;       /* First register in temporary register block */
   int nErr;            /* Number of errors seen */
@@ -20730,19 +20891,19 @@ struct Trigger {
 ** orconf    -> stores the ON CONFLICT algorithm
 ** pSelect   -> The content to be inserted - either a SELECT statement or
 **              a VALUES clause.
-** zTarget   -> Dequoted name of the table to insert into.
+** pSrc      -> Table to insert into.
 ** pIdList   -> If this is an INSERT INTO ... (<column-names>) VALUES ...
 **              statement, then this stores the column-names to be
 **              inserted into.
 ** pUpsert   -> The ON CONFLICT clauses for an Upsert
 **
 ** (op == TK_DELETE)
-** zTarget   -> Dequoted name of the table to delete from.
+** pSrc      -> Table to delete from
 ** pWhere    -> The WHERE clause of the DELETE statement if one is specified.
 **              Otherwise NULL.
 **
 ** (op == TK_UPDATE)
-** zTarget   -> Dequoted name of the table to update.
+** pSrc      -> Table to update, followed by any FROM clause tables.
 ** pWhere    -> The WHERE clause of the UPDATE statement if one is specified.
 **              Otherwise NULL.
 ** pExprList -> A list of the columns to update and the expressions to update
@@ -20762,8 +20923,7 @@ struct TriggerStep {
   u8 orconf;           /* OE_Rollback etc. */
   Trigger *pTrig;      /* The trigger that this step is a part of */
   Select *pSelect;     /* SELECT statement or RHS of INSERT INTO SELECT ... */
-  char *zTarget;       /* Target table for DELETE, UPDATE, INSERT */
-  SrcList *pFrom;      /* FROM clause for UPDATE statement (if any) */
+  SrcList *pSrc;       /* Table to insert/update/delete */
   Expr *pWhere;        /* The WHERE clause for DELETE or UPDATE steps */
   ExprList *pExprList; /* SET clause for UPDATE, or RETURNING clause */
   IdList *pIdList;     /* Column names for INSERT */
@@ -20846,10 +21006,11 @@ typedef struct {
 /*
 ** Allowed values for mInitFlags
 */
-#define INITFLAG_AlterMask     0x0003  /* Types of ALTER */
+#define INITFLAG_AlterMask     0x0007  /* Types of ALTER */
 #define INITFLAG_AlterRename   0x0001  /* Reparse after a RENAME */
 #define INITFLAG_AlterDrop     0x0002  /* Reparse after a DROP COLUMN */
 #define INITFLAG_AlterAdd      0x0003  /* Reparse after an ADD COLUMN */
+#define INITFLAG_AlterDropCons 0x0004  /* Reparse after an ADD COLUMN */
 
 /* Tuning parameters are set using SQLITE_TESTCTRL_TUNE and are controlled
 ** on debug-builds of the CLI using ".testctrl tune ID VALUE".  Tuning
@@ -20979,6 +21140,7 @@ struct Walker {
     NameContext *pNC;                         /* Naming context */
     int n;                                    /* A counter */
     int iCur;                                 /* A cursor number */
+    int sz;                                   /* String literal length */
     SrcList *pSrcList;                        /* FROM clause */
     struct CCurHint *pCCurHint;               /* Used by codeCursorHint() */
     struct RefSrcList *pRefSrcList;           /* sqlite3ReferencesSrcList() */
@@ -21383,7 +21545,20 @@ SQLITE_PRIVATE int sqlite3LookasideUsed(sqlite3*,int*);
 SQLITE_PRIVATE sqlite3_mutex *sqlite3Pcache1Mutex(void);
 SQLITE_PRIVATE sqlite3_mutex *sqlite3MallocMutex(void);
 
-#if defined(SQLITE_ENABLE_MULTITHREADED_CHECKS) && !defined(SQLITE_MUTEX_OMIT)
+
+/* The SQLITE_THREAD_MISUSE_WARNINGS compile-time option used to be called
+** SQLITE_ENABLE_MULTITHREADED_CHECKS.  Keep that older macro for backwards
+** compatibility, at least for a while... */
+#ifdef SQLITE_ENABLE_MULTITHREADED_CHECKS
+# define SQLITE_THREAD_MISUSE_WARNINGS 1
+#endif
+
+/* SQLITE_THREAD_MISUSE_ABORT implies SQLITE_THREAD_MISUSE_WARNINGS */
+#ifdef SQLITE_THREAD_MISUSE_ABORT
+# define SQLITE_THREAD_MISUSE_WARNINGS 1
+#endif
+
+#if defined(SQLITE_THREAD_MISUSE_WARNINGS) && !defined(SQLITE_MUTEX_OMIT)
 SQLITE_PRIVATE void sqlite3MutexWarnOnContention(sqlite3_mutex*);
 #else
 # define sqlite3MutexWarnOnContention(x)
@@ -21417,12 +21592,12 @@ struct PrintfArguments {
 ** value into an approximate decimal representation.
 */
 struct FpDecode {
-  char sign;           /* '+' or '-' */
-  char isSpecial;      /* 1: Infinity  2: NaN */
   int n;               /* Significant digits in the decode */
   int iDP;             /* Location of the decimal point */
   char *z;             /* Start of significant digits */
-  char zBuf[24];       /* Storage for significant digits */
+  char zBuf[20];       /* Storage for significant digits */
+  char sign;           /* '+' or '-' */
+  char isSpecial;      /* 1: Infinity  2: NaN */
 };
 
 SQLITE_PRIVATE void sqlite3FpDecode(FpDecode*,double,int,int);
@@ -21511,6 +21686,7 @@ SQLITE_PRIVATE int sqlite3NoTempsInRange(Parse*,int,int);
 #endif
 SQLITE_PRIVATE Expr *sqlite3ExprAlloc(sqlite3*,int,const Token*,int);
 SQLITE_PRIVATE Expr *sqlite3Expr(sqlite3*,int,const char*);
+SQLITE_PRIVATE Expr *sqlite3ExprInt32(sqlite3*,int);
 SQLITE_PRIVATE void sqlite3ExprAttachSubtrees(sqlite3*,Expr*,Expr*,Expr*);
 SQLITE_PRIVATE Expr *sqlite3PExpr(Parse*, int, Expr*, Expr*);
 SQLITE_PRIVATE void sqlite3PExprAddSelect(Parse*, Expr*, Select*);
@@ -21664,6 +21840,7 @@ SQLITE_PRIVATE Select *sqlite3SelectNew(Parse*,ExprList*,SrcList*,Expr*,ExprList
                          Expr*,ExprList*,u32,Expr*);
 SQLITE_PRIVATE void sqlite3SelectDelete(sqlite3*, Select*);
 SQLITE_PRIVATE void sqlite3SelectDeleteGeneric(sqlite3*,void*);
+SQLITE_PRIVATE void sqlite3SelectCheckOnClauses(Parse *pParse, Select *pSelect);
 SQLITE_PRIVATE Table *sqlite3SrcListLookup(Parse*, SrcList*);
 SQLITE_PRIVATE int sqlite3IsReadOnly(Parse*, Table*, Trigger*);
 SQLITE_PRIVATE void sqlite3OpenTable(Parse*, int iCur, int iDb, Table*, int);
@@ -21761,6 +21938,7 @@ SQLITE_PRIVATE int sqlite3ExprContainsSubquery(Expr*);
 SQLITE_PRIVATE int sqlite3ExprIsInteger(const Expr*, int*, Parse*);
 SQLITE_PRIVATE int sqlite3ExprCanBeNull(const Expr*);
 SQLITE_PRIVATE int sqlite3ExprNeedsNoAffinityChange(const Expr*, char);
+SQLITE_PRIVATE int sqlite3ExprIsLikeOperator(const Expr*);
 SQLITE_PRIVATE int sqlite3IsRowid(const char*);
 SQLITE_PRIVATE const char *sqlite3RowidAlias(Table *pTab);
 SQLITE_PRIVATE void sqlite3GenerateRowDelete(
@@ -21829,17 +22007,16 @@ SQLITE_PRIVATE   void sqlite3CodeRowTriggerDirect(Parse *, Trigger *, Table *, i
 SQLITE_PRIVATE   void sqlite3DeleteTriggerStep(sqlite3*, TriggerStep*);
 SQLITE_PRIVATE   TriggerStep *sqlite3TriggerSelectStep(sqlite3*,Select*,
                                         const char*,const char*);
-SQLITE_PRIVATE   TriggerStep *sqlite3TriggerInsertStep(Parse*,Token*, IdList*,
+SQLITE_PRIVATE   TriggerStep *sqlite3TriggerInsertStep(Parse*,SrcList*, IdList*,
                                         Select*,u8,Upsert*,
                                         const char*,const char*);
-SQLITE_PRIVATE   TriggerStep *sqlite3TriggerUpdateStep(Parse*,Token*,SrcList*,ExprList*,
+SQLITE_PRIVATE   TriggerStep *sqlite3TriggerUpdateStep(Parse*,SrcList*,SrcList*,ExprList*,
                                         Expr*, u8, const char*,const char*);
-SQLITE_PRIVATE   TriggerStep *sqlite3TriggerDeleteStep(Parse*,Token*, Expr*,
+SQLITE_PRIVATE   TriggerStep *sqlite3TriggerDeleteStep(Parse*,SrcList*, Expr*,
                                         const char*,const char*);
 SQLITE_PRIVATE   void sqlite3DeleteTrigger(sqlite3*, Trigger*);
 SQLITE_PRIVATE   void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*);
 SQLITE_PRIVATE   u32 sqlite3TriggerColmask(Parse*,Trigger*,ExprList*,int,int,Table*,int);
-SQLITE_PRIVATE   SrcList *sqlite3TriggerStepSrc(Parse*, TriggerStep*);
 # define sqlite3ParseToplevel(p) ((p)->pToplevel ? (p)->pToplevel : (p))
 # define sqlite3IsToplevel(p) ((p)->pToplevel==0)
 #else
@@ -21853,7 +22030,6 @@ SQLITE_PRIVATE   SrcList *sqlite3TriggerStepSrc(Parse*, TriggerStep*);
 # define sqlite3ParseToplevel(p) p
 # define sqlite3IsToplevel(p) 1
 # define sqlite3TriggerColmask(A,B,C,D,E,F,G) 0
-# define sqlite3TriggerStepSrc(A,B) 0
 #endif
 
 SQLITE_PRIVATE int sqlite3JoinType(Parse*, Token*, Token*, Token*);
@@ -21886,7 +22062,7 @@ SQLITE_PRIVATE int sqlite3FixTriggerStep(DbFixer*, TriggerStep*);
 SQLITE_PRIVATE int sqlite3RealSameAsInt(double,sqlite3_int64);
 SQLITE_PRIVATE i64 sqlite3RealToI64(double);
 SQLITE_PRIVATE int sqlite3Int64ToText(i64,char*);
-SQLITE_PRIVATE int sqlite3AtoF(const char *z, double*, int, u8);
+SQLITE_PRIVATE int sqlite3AtoF(const char *z, double*);
 SQLITE_PRIVATE int sqlite3GetInt32(const char *, int*);
 SQLITE_PRIVATE int sqlite3GetUInt32(const char*, u32*);
 SQLITE_PRIVATE int sqlite3Atoi(const char*);
@@ -22030,10 +22206,13 @@ SQLITE_PRIVATE void sqlite3Reindex(Parse*, Token*, Token*);
 SQLITE_PRIVATE void sqlite3AlterFunctions(void);
 SQLITE_PRIVATE void sqlite3AlterRenameTable(Parse*, SrcList*, Token*);
 SQLITE_PRIVATE void sqlite3AlterRenameColumn(Parse*, SrcList*, Token*, Token*);
+SQLITE_PRIVATE void sqlite3AlterDropConstraint(Parse*,SrcList*,Token*,Token*);
+SQLITE_PRIVATE void sqlite3AlterAddConstraint(Parse*,SrcList*,Token*,Token*,const char*,int);
+SQLITE_PRIVATE void sqlite3AlterSetNotNull(Parse*, SrcList*, Token*, Token*);
 SQLITE_PRIVATE i64 sqlite3GetToken(const unsigned char *, int *);
 SQLITE_PRIVATE void sqlite3NestedParse(Parse*, const char*, ...);
 SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3*, int);
-SQLITE_PRIVATE void sqlite3CodeRhsOfIN(Parse*, Expr*, int);
+SQLITE_PRIVATE void sqlite3CodeRhsOfIN(Parse*, Expr*, int, int);
 SQLITE_PRIVATE int sqlite3CodeSubselect(Parse*, Expr*);
 SQLITE_PRIVATE void sqlite3SelectPrep(Parse*, Select*, NameContext*);
 SQLITE_PRIVATE int sqlite3ExpandSubquery(Parse*, SrcItem*);
@@ -24448,6 +24627,7 @@ SQLITE_PRIVATE void sqlite3VdbeMemShallowCopy(Mem*, const Mem*, int);
 SQLITE_PRIVATE void sqlite3VdbeMemMove(Mem*, Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemNulTerminate(Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemSetStr(Mem*, const char*, i64, u8, void(*)(void*));
+SQLITE_PRIVATE int sqlite3VdbeMemSetText(Mem*, const char*, i64, void(*)(void*));
 SQLITE_PRIVATE void sqlite3VdbeMemSetInt64(Mem*, i64);
 #ifdef SQLITE_OMIT_FLOATING_POINT
 # define sqlite3VdbeMemSetDouble sqlite3VdbeMemSetInt64
@@ -24466,13 +24646,14 @@ SQLITE_PRIVATE int sqlite3VdbeMemSetZeroBlob(Mem*,int);
 SQLITE_PRIVATE int sqlite3VdbeMemIsRowSet(const Mem*);
 #endif
 SQLITE_PRIVATE int sqlite3VdbeMemSetRowSet(Mem*);
-SQLITE_PRIVATE void sqlite3VdbeMemZeroTerminateIfAble(Mem*);
+SQLITE_PRIVATE int sqlite3VdbeMemZeroTerminateIfAble(Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem*, u8, u8);
 SQLITE_PRIVATE int sqlite3IntFloatCompare(i64,double);
 SQLITE_PRIVATE i64 sqlite3VdbeIntValue(const Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemIntegerify(Mem*);
 SQLITE_PRIVATE double sqlite3VdbeRealValue(Mem*);
+SQLITE_PRIVATE SQLITE_NOINLINE double sqlite3MemRealValueRC(Mem*, int*);
 SQLITE_PRIVATE int sqlite3VdbeBooleanValue(Mem*, int ifNull);
 SQLITE_PRIVATE void sqlite3VdbeIntegerAffinity(Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemRealify(Mem*);
@@ -25432,7 +25613,7 @@ static int parseDateOrTime(
     return 0;
   }else if( sqlite3StrICmp(zDate,"now")==0 && sqlite3NotPureFunc(context) ){
     return setDateTimeToCurrent(context, p);
-  }else if( sqlite3AtoF(zDate, &r, sqlite3Strlen30(zDate), SQLITE_UTF8)>0 ){
+  }else if( sqlite3AtoF(zDate, &r)>0 ){
     setRawDateNumber(p, r);
     return 0;
   }else if( (sqlite3StrICmp(zDate,"subsec")==0
@@ -25878,7 +26059,7 @@ static int parseModifier(
       ** date is already on the appropriate weekday, this is a no-op.
       */
       if( sqlite3_strnicmp(z, "weekday ", 8)==0
-               && sqlite3AtoF(&z[8], &r, sqlite3Strlen30(&z[8]), SQLITE_UTF8)>0
+               && sqlite3AtoF(&z[8], &r)>0
                && r>=0.0 && r<7.0 && (n=(int)r)==r ){
         sqlite3_int64 Z;
         computeYMD_HMS(p);
@@ -25949,9 +26130,11 @@ static int parseModifier(
     case '8':
     case '9': {
       double rRounder;
-      int i;
+      int i, rx;
       int Y,M,D,h,m,x;
       const char *z2 = z;
+      char *zCopy;
+      sqlite3 *db = sqlite3_context_db_handle(pCtx);
       char z0 = z[0];
       for(n=1; z[n]; n++){
         if( z[n]==':' ) break;
@@ -25961,7 +26144,11 @@ static int parseModifier(
           if( n==6 && getDigits(&z[1], "50f", &Y)==1 ) break;
         }
       }
-      if( sqlite3AtoF(z, &r, n, SQLITE_UTF8)<=0 ){
+      zCopy = sqlite3DbStrNDup(db, z, n);
+      if( zCopy==0 ) break;
+      rx = sqlite3AtoF(zCopy, &r)<=0;
+      sqlite3DbFree(db, zCopy);
+      if( rx ){
         assert( rc==1 );
         break;
       }
@@ -26781,7 +26968,7 @@ static void datedebugFunc(
     char *zJson;
     zJson = sqlite3_mprintf(
       "{iJD:%lld,Y:%d,M:%d,D:%d,h:%d,m:%d,tz:%d,"
-      "s:%.3f,validJD:%d,validYMS:%d,validHMS:%d,"
+      "s:%.3f,validJD:%d,validYMD:%d,validHMS:%d,"
       "nFloor:%d,rawS:%d,isError:%d,useSubsec:%d,"
       "isUtc:%d,isLocal:%d}",
       x.iJD, x.Y, x.M, x.D, x.h, x.m, x.tz,
@@ -29560,23 +29747,28 @@ static SQLITE_WSD int mutexIsInit = 0;
 
 #ifndef SQLITE_MUTEX_OMIT
 
-#ifdef SQLITE_ENABLE_MULTITHREADED_CHECKS
+#ifdef SQLITE_THREAD_MISUSE_WARNINGS
 /*
-** This block (enclosed by SQLITE_ENABLE_MULTITHREADED_CHECKS) contains
+** This block (enclosed by SQLITE_THREAD_MISUSE_WARNINGS) contains
 ** the implementation of a wrapper around the system default mutex
 ** implementation (sqlite3DefaultMutex()).
 **
 ** Most calls are passed directly through to the underlying default
 ** mutex implementation. Except, if a mutex is configured by calling
 ** sqlite3MutexWarnOnContention() on it, then if contention is ever
-** encountered within xMutexEnter() a warning is emitted via sqlite3_log().
+** encountered within xMutexEnter() then a warning is emitted via
+** sqlite3_log().  Furthermore, if SQLITE_THREAD_MISUSE_ABORT is
+** defined then abort() is called after the sqlite3_log() warning.
 **
-** This type of mutex is used as the database handle mutex when testing
-** apps that usually use SQLITE_CONFIG_MULTITHREAD mode.
+** This type of mutex is used on the database handle mutex when testing
+** apps that usually use SQLITE_CONFIG_MULTITHREAD mode.  A failure
+** indicates that the app ought to be using SQLITE_OPEN_FULLMUTEX or
+** similar because it is trying to use the same database handle from
+** two different connections at the same time.
 */
 
 /*
-** Type for all mutexes used when SQLITE_ENABLE_MULTITHREADED_CHECKS
+** Type for all mutexes used when SQLITE_THREAD_MISUSE_WARNINGS
 ** is defined. Variable CheckMutex.mutex is a pointer to the real mutex
 ** allocated by the system mutex implementation. Variable iType is usually set
 ** to the type of mutex requested - SQLITE_MUTEX_RECURSIVE, SQLITE_MUTEX_FAST
@@ -29612,11 +29804,12 @@ static int checkMutexNotheld(sqlite3_mutex *p){
 */
 static int checkMutexInit(void){
   pGlobalMutexMethods = sqlite3DefaultMutex();
-  return SQLITE_OK;
+  return pGlobalMutexMethods->xMutexInit();
 }
 static int checkMutexEnd(void){
+  int rc = pGlobalMutexMethods->xMutexEnd();
   pGlobalMutexMethods = 0;
-  return SQLITE_OK;
+  return rc;
 }
 
 /*
@@ -29693,6 +29886,9 @@ static void checkMutexEnter(sqlite3_mutex *p){
     sqlite3_log(SQLITE_MISUSE,
         "illegal multi-threaded access to database connection"
     );
+#if SQLITE_THREAD_MISUSE_ABORT
+    abort();
+#endif
   }
   pGlobalMutexMethods->xMutexEnter(pCheck->mutex);
 }
@@ -29744,7 +29940,7 @@ SQLITE_PRIVATE void sqlite3MutexWarnOnContention(sqlite3_mutex *p){
     pCheck->iType = SQLITE_MUTEX_WARNONCONTENTION;
   }
 }
-#endif   /* ifdef SQLITE_ENABLE_MULTITHREADED_CHECKS */
+#endif   /* ifdef SQLITE_THREAD_MISUSE_WARNINGS */
 
 /*
 ** Initialize the mutex system.
@@ -29761,7 +29957,7 @@ SQLITE_PRIVATE int sqlite3MutexInit(void){
     sqlite3_mutex_methods *pTo = &sqlite3GlobalConfig.mutex;
 
     if( sqlite3GlobalConfig.bCoreMutex ){
-#ifdef SQLITE_ENABLE_MULTITHREADED_CHECKS
+#ifdef SQLITE_THREAD_MISUSE_WARNINGS
       pFrom = multiThreadedCheckMutex();
 #else
       pFrom = sqlite3DefaultMutex();
@@ -30609,14 +30805,6 @@ SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){
 # define SQLITE_OS_WINCE 0
 #endif
 
-/*
-** Determine if we are dealing with WinRT, which provides only a subset of
-** the full Win32 API.
-*/
-#if !defined(SQLITE_OS_WINRT)
-# define SQLITE_OS_WINRT 0
-#endif
-
 /*
 ** For WinCE, some API function parameters do not appear to be declared as
 ** volatile.
@@ -30631,7 +30819,7 @@ SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){
 ** For some Windows sub-platforms, the _beginthreadex() / _endthreadex()
 ** functions are not available (e.g. those not using MSVC, Cygwin, etc).
 */
-#if SQLITE_OS_WIN && !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && \
+#if SQLITE_OS_WIN && !SQLITE_OS_WINCE && \
     SQLITE_THREADSAFE>0 && !defined(__CYGWIN__)
 # define SQLITE_OS_WIN_THREADS 1
 #else
@@ -30748,11 +30936,7 @@ static int winMutexInit(void){
   if( InterlockedCompareExchange(&winMutex_lock, 1, 0)==0 ){
     int i;
     for(i=0; i<ArraySize(winMutex_staticMutexes); i++){
-#if SQLITE_OS_WINRT
-      InitializeCriticalSectionEx(&winMutex_staticMutexes[i].mutex, 0, 0);
-#else
       InitializeCriticalSection(&winMutex_staticMutexes[i].mutex);
-#endif
     }
     winMutex_isInit = 1;
   }else{
@@ -30842,11 +31026,7 @@ static sqlite3_mutex *winMutexAlloc(int iType){
         p->trace = 1;
 #endif
 #endif
-#if SQLITE_OS_WINRT
-        InitializeCriticalSectionEx(&p->mutex, 0, 0);
-#else
         InitializeCriticalSection(&p->mutex);
-#endif
       }
       break;
     }
@@ -31310,27 +31490,6 @@ static void mallocWithAlarm(int n, void **pp){
   *pp = p;
 }
 
-/*
-** Maximum size of any single memory allocation.
-**
-** This is not a limit on the total amount of memory used.  This is
-** a limit on the size parameter to sqlite3_malloc() and sqlite3_realloc().
-**
-** The upper bound is slightly less than 2GiB:  0x7ffffeff == 2,147,483,391
-** This provides a 256-byte safety margin for defense against 32-bit
-** signed integer overflow bugs when computing memory allocation sizes.
-** Paranoid applications might want to reduce the maximum allocation size
-** further for an even larger safety margin.  0x3fffffff or 0x0fffffff
-** or even smaller would be reasonable upper bounds on the size of a memory
-** allocations for most applications.
-*/
-#ifndef SQLITE_MAX_ALLOCATION_SIZE
-# define SQLITE_MAX_ALLOCATION_SIZE  2147483391
-#endif
-#if SQLITE_MAX_ALLOCATION_SIZE>2147483391
-# error Maximum size for SQLITE_MAX_ALLOCATION_SIZE is 2147483391
-#endif
-
 /*
 ** Allocate memory.  This routine is like sqlite3_malloc() except that it
 ** assumes the memory subsystem has already been initialized.
@@ -31554,8 +31713,7 @@ SQLITE_PRIVATE void *sqlite3Realloc(void *pOld, u64 nBytes){
     sqlite3_free(pOld); /* IMP: R-26507-47431 */
     return 0;
   }
-  if( nBytes>=0x7fffff00 ){
-    /* The 0x7ffff00 limit term is explained in comments on sqlite3Malloc() */
+  if( nBytes>SQLITE_MAX_ALLOCATION_SIZE ){
     return 0;
   }
   nOld = sqlite3MallocSize(pOld);
@@ -32493,7 +32651,7 @@ SQLITE_API void sqlite3_str_vappendf(
         }else{
           iRound = precision+1;
         }
-        sqlite3FpDecode(&s, realvalue, iRound, flag_altform2 ? 26 : 16);
+        sqlite3FpDecode(&s, realvalue, iRound, flag_altform2 ? 20 : 16);
         if( s.isSpecial ){
           if( s.isSpecial==2 ){
             bufpt = flag_zeropad ? "null" : "NaN";
@@ -33172,6 +33330,14 @@ SQLITE_API int sqlite3_str_length(sqlite3_str *p){
   return p ? p->nChar : 0;
 }
 
+/* Truncate the text of the string to be no more than N bytes. */
+SQLITE_API void sqlite3_str_truncate(sqlite3_str *p, int N){
+  if( p!=0 && N>=0 && (u32)N<p->nChar ){
+    p->nChar = N;
+    p->zText[p->nChar] = 0;
+  }
+}
+
 /* Return the current value for p */
 SQLITE_API char *sqlite3_str_value(sqlite3_str *p){
   if( p==0 || p->nChar==0 ) return 0;
@@ -33192,6 +33358,17 @@ SQLITE_API void sqlite3_str_reset(StrAccum *p){
   p->zText = 0;
 }
 
+/*
+** Destroy a dynamically allocate sqlite3_str object and all
+** of its content, all in one call.
+*/
+SQLITE_API void sqlite3_str_free(sqlite3_str *p){
+  if( p ){
+    sqlite3_str_reset(p);
+    sqlite3_free(p);
+  }
+}
+
 /*
 ** Initialize a string accumulator.
 **
@@ -34805,7 +34982,13 @@ SQLITE_PRIVATE void sqlite3TreeViewTrigger(
 SQLITE_PRIVATE void sqlite3ShowExpr(const Expr *p){ sqlite3TreeViewExpr(0,p,0); }
 SQLITE_PRIVATE void sqlite3ShowExprList(const ExprList *p){ sqlite3TreeViewExprList(0,p,0,0);}
 SQLITE_PRIVATE void sqlite3ShowIdList(const IdList *p){ sqlite3TreeViewIdList(0,p,0,0); }
-SQLITE_PRIVATE void sqlite3ShowSrcList(const SrcList *p){ sqlite3TreeViewSrcList(0,p); }
+SQLITE_PRIVATE void sqlite3ShowSrcList(const SrcList *p){
+  TreeView *pView = 0;
+  sqlite3TreeViewPush(&pView, 0);
+  sqlite3TreeViewLine(pView, "SRCLIST");
+  sqlite3TreeViewSrcList(pView,p);
+  sqlite3TreeViewPop(&pView);
+}
 SQLITE_PRIVATE void sqlite3ShowSelect(const Select *p){ sqlite3TreeViewSelect(0,p,0); }
 SQLITE_PRIVATE void sqlite3ShowWith(const With *p){ sqlite3TreeViewWith(0,p,0); }
 SQLITE_PRIVATE void sqlite3ShowUpsert(const Upsert *p){ sqlite3TreeViewUpsert(0,p,0); }
@@ -36325,48 +36508,262 @@ SQLITE_PRIVATE u8 sqlite3StrIHash(const char *z){
   return h;
 }
 
-/* Double-Double multiplication.  (x[0],x[1]) *= (y,yy)
+/*
+** Two inputs are multiplied to get a 128-bit result.  Return
+** the high-order 64 bits of that result.
+*/
+static u64 sqlite3Multiply128(u64 a, u64 b){
+#if (defined(__GNUC__) || defined(__clang__)) \
+        && (defined(__x86_64__) || defined(__aarch64__) || defined(__riscv))
+  return ((__uint128_t)a * b) >> 64;
+#elif defined(_MSC_VER) && defined(_M_X64)
+  return __umulh(a, b);
+#else
+  u64 a1 = (u32)a;
+  u64 a2 = a >> 32;
+  u64 b1 = (u32)b;
+  u64 b2 = b >> 32;
+  u64 p0 = a1 * b1;
+  u64 p1 = a1 * b2;
+  u64 p2 = a2 * b1;
+  u64 p3 = a2 * b2;
+  u64 carry = ((p0 >> 32) + (u32)p1 + (u32)p2) >> 32;
+  return p3 + (p1 >> 32) + (p2 >> 32) + carry;
+#endif
+}
+
+/*
+** Return a u64 with the N-th bit set.
+*/
+#define U64_BIT(N)  (((u64)1)<<(N))
+
+/*
+** Range of powers of 10 that we need to deal with when converting
+** IEEE754 doubles to and from decimal.
+*/
+#define POWERSOF10_FIRST (-348)
+#define POWERSOF10_LAST  (+347)
+
+/*
+** For any p between -348 and +347, return the integer part of
+**
+**    pow(10,p) * pow(2,63-pow10to2(p))
+**
+** Or, in other words, for any p in range, return the most significant
+** 64 bits of pow(10,p).  The pow(10,p) value is shifted left or right,
+** as appropriate so the most significant 64 bits fit exactly into a
+** 64-bit unsigned integer.
+**
+** Algorithm:
+**
+** (1) For p between 0 and 26, return the value directly from the aBase[]
+**     lookup table.
+**
+** (2) For p outside the range 0 to 26, use aScale[] for the initial value
+**     then refine that result (if necessary) by a single multiplication
+**     against aBase[].
+*/
+static u64 powerOfTen(int p){
+  static const u64 aBase[] = {
+    0x8000000000000000LLU, /*  0: 1.0e+0 << 63 */
+    0xa000000000000000LLU, /*  1: 1.0e+1 << 60 */
+    0xc800000000000000LLU, /*  2: 1.0e+2 << 57 */
+    0xfa00000000000000LLU, /*  3: 1.0e+3 << 54 */
+    0x9c40000000000000LLU, /*  4: 1.0e+4 << 50 */
+    0xc350000000000000LLU, /*  5: 1.0e+5 << 47 */
+    0xf424000000000000LLU, /*  6: 1.0e+6 << 44 */
+    0x9896800000000000LLU, /*  7: 1.0e+7 << 40 */
+    0xbebc200000000000LLU, /*  8: 1.0e+8 << 37 */
+    0xee6b280000000000LLU, /*  9: 1.0e+9 << 34 */
+    0x9502f90000000000LLU, /* 10: 1.0e+10 << 30 */
+    0xba43b74000000000LLU, /* 11: 1.0e+11 << 27 */
+    0xe8d4a51000000000LLU, /* 12: 1.0e+12 << 24 */
+    0x9184e72a00000000LLU, /* 13: 1.0e+13 << 20 */
+    0xb5e620f480000000LLU, /* 14: 1.0e+14 << 17 */
+    0xe35fa931a0000000LLU, /* 15: 1.0e+15 << 14 */
+    0x8e1bc9bf04000000LLU, /* 16: 1.0e+16 << 10 */
+    0xb1a2bc2ec5000000LLU, /* 17: 1.0e+17 << 7 */
+    0xde0b6b3a76400000LLU, /* 18: 1.0e+18 << 4 */
+    0x8ac7230489e80000LLU, /* 19: 1.0e+19 >> 0 */
+    0xad78ebc5ac620000LLU, /* 20: 1.0e+20 >> 3 */
+    0xd8d726b7177a8000LLU, /* 21: 1.0e+21 >> 6 */
+    0x878678326eac9000LLU, /* 22: 1.0e+22 >> 10 */
+    0xa968163f0a57b400LLU, /* 23: 1.0e+23 >> 13 */
+    0xd3c21bcecceda100LLU, /* 24: 1.0e+24 >> 16 */
+    0x84595161401484a0LLU, /* 25: 1.0e+25 >> 20 */
+    0xa56fa5b99019a5c8LLU, /* 26: 1.0e+26 >> 23 */
+  };
+  static const u64 aScale[] = {
+    0x8049a4ac0c5811aeLLU, /*  0: 1.0e-351 << 1229 */
+    0xcf42894a5dce35eaLLU, /*  1: 1.0e-324 << 1140 */
+    0xa76c582338ed2622LLU, /*  2: 1.0e-297 << 1050 */
+    0x873e4f75e2224e68LLU, /*  3: 1.0e-270 << 960 */
+    0xda7f5bf590966849LLU, /*  4: 1.0e-243 << 871 */
+    0xb080392cc4349dedLLU, /*  5: 1.0e-216 << 781 */
+    0x8e938662882af53eLLU, /*  6: 1.0e-189 << 691 */
+    0xe65829b3046b0afaLLU, /*  7: 1.0e-162 << 602 */
+    0xba121a4650e4ddecLLU, /*  8: 1.0e-135 << 512 */
+    0x964e858c91ba2655LLU, /*  9: 1.0e-108 << 422 */
+    0xf2d56790ab41c2a3LLU, /* 10: 1.0e-81 << 333 */
+    0xc428d05aa4751e4dLLU, /* 11: 1.0e-54 << 243 */
+    0x9e74d1b791e07e48LLU, /* 12: 1.0e-27 << 153 */
+    0x8000000000000000LLU, /* 13: 1.0e+0 << 63 */
+    0xcecb8f27f4200f3aLLU, /* 14: 1.0e+27 >> 26 */
+    0xa70c3c40a64e6c52LLU, /* 15: 1.0e+54 >> 116 */
+    0x86f0ac99b4e8dafdLLU, /* 16: 1.0e+81 >> 206 */
+    0xda01ee641a708deaLLU, /* 17: 1.0e+108 >> 295 */
+    0xb01ae745b101e9e4LLU, /* 18: 1.0e+135 >> 385 */
+    0x8e41ade9fbebc27dLLU, /* 19: 1.0e+162 >> 475 */
+    0xe5d3ef282a242e82LLU, /* 20: 1.0e+189 >> 564 */
+    0xb9a74a0637ce2ee1LLU, /* 21: 1.0e+216 >> 654 */
+    0x95f83d0a1fb69cd9LLU, /* 22: 1.0e+243 >> 744 */
+    0xf24a01a73cf2dcd0LLU, /* 23: 1.0e+270 >> 833 */
+    0xc3b8358109e84f07LLU, /* 24: 1.0e+297 >> 923 */
+    0x9e19db92b4e31ba9LLU, /* 25: 1.0e+324 >> 1013 */
+  };
+  int g, n;
+  u64 x, y;
+
+  assert( p>=POWERSOF10_FIRST && p<=POWERSOF10_LAST );
+  if( p<0 ){
+    g = p/27;
+    n = p%27;
+    if( n ){
+      g--;
+      n += 27;
+    }
+  }else if( p<27 ){
+    return aBase[p];
+  }else{
+    g = p/27;
+    n = p%27;
+  }
+  y = aScale[g+13];
+  if( n==0 ){
+    return y;
+  }
+  x = sqlite3Multiply128(aBase[n],y);
+  if( (U64_BIT(63) & x)==0 ){
+    x  = (x<<1)|1;
+  }
+  return x;
+}
+
+/*
+** pow10to2(x) computes floor(log2(pow(10,x))).
+** pow2to10(y) computes floor(log10(pow(2,y))).
+**
+** Conceptually, pow10to2(p) converts a base-10 exponent p into
+** a corresponding base-2 exponent, and pow2to10(e) converts a base-2
+** exponent into a base-10 exponent.
+**
+** The conversions are based on the observation that:
+**
+**     ln(10.0)/ln(2.0) == 108853/32768     (approximately)
+**     ln(2.0)/ln(10.0) == 78913/262144     (approximately)
 **
-** Reference:
-**   T. J. Dekker, "A Floating-Point Technique for Extending the
-**   Available Precision".  1971-07-26.
+** These ratios are approximate, but they are accurate to 5 digits,
+** which is close enough for the usage here.  Right-shift is used
+** for division so that rounding of negative numbers happens in the
+** right direction.
 */
-static void dekkerMul2(volatile double *x, double y, double yy){
-  /*
-  ** The "volatile" keywords on parameter x[] and on local variables
-  ** below are needed force intermediate results to be truncated to
-  ** binary64 rather than be carried around in an extended-precision
-  ** format.  The truncation is necessary for the Dekker algorithm to
-  ** work.  Intel x86 floating point might omit the truncation without
-  ** the use of volatile.
-  */
-  volatile double tx, ty, p, q, c, cc;
-  double hx, hy;
-  u64 m;
-  memcpy(&m, (void*)&x[0], 8);
-  m &= 0xfffffffffc000000LL;
-  memcpy(&hx, &m, 8);
-  tx = x[0] - hx;
-  memcpy(&m, &y, 8);
-  m &= 0xfffffffffc000000LL;
-  memcpy(&hy, &m, 8);
-  ty = y - hy;
-  p = hx*hy;
-  q = hx*ty + tx*hy;
-  c = p+q;
-  cc = p - c + q + tx*ty;
-  cc = x[0]*yy + x[1]*y + cc;
-  x[0] = c + cc;
-  x[1] = c - x[0];
-  x[1] += cc;
+static int pwr10to2(int p){ return (p*108853) >> 15; }
+static int pwr2to10(int p){ return (p*78913) >> 18; }
+
+/*
+** Count leading zeros for a 64-bit unsigned integer.
+*/
+static int countLeadingZeros(u64 m){
+#if defined(__GNUC__) || defined(__clang__)
+  return __builtin_clzll(m);
+#else
+  int n = 0;
+  if( m <= 0x00000000ffffffffULL) { n += 32; m <<= 32; }
+  if( m <= 0x0000ffffffffffffULL) { n += 16; m <<= 16; }
+  if( m <= 0x00ffffffffffffffULL) { n += 8;  m <<= 8;  }
+  if( m <= 0x0fffffffffffffffULL) { n += 4;  m <<= 4;  }
+  if( m <= 0x3fffffffffffffffULL) { n += 2;  m <<= 2;  }
+  if( m <= 0x7fffffffffffffffULL) { n += 1;            }
+  return n;
+#endif
+}
+
+/*
+** Given m and e, which represent a quantity r == m*pow(2,e),
+** return values *pD and *pP such that r == (*pD)*pow(10,*pP),
+** approximately.  *pD should contain at least n significant digits.
+**
+** The input m is required to have its highest bit set.  In other words,
+** m should be left-shifted, and e decremented, to maximize the value of m.
+*/
+static void sqlite3Fp2Convert10(u64 m, int e, int n, u64 *pD, int *pP){
+  int p;
+  u64 h;
+  assert( n>=1 && n<=18 );
+  p = n - 1 - pwr2to10(e+63);
+  h = sqlite3Multiply128(m, powerOfTen(p));
+  assert( -(e + pwr10to2(p) + 2) >= 0  );
+  assert( -(e + pwr10to2(p) + 1) <= 63 );
+  if( n==18 ){
+    h >>= -(e + pwr10to2(p) + 2);
+    *pD = (h + ((h<<1)&2))>>1;
+  }else{
+    *pD = h >> -(e + pwr10to2(p) + 1);
+  }
+  *pP = -p;
+}
+
+/*
+** Return an IEEE754 floating point value that approximates d*pow(10,p).
+*/
+static double sqlite3Fp10Convert2(u64 d, int p){
+  u64 out;
+  int e1;
+  int lz;
+  int lp;
+  int x;
+  u64 h;
+  double r;
+  assert( (d & U64_BIT(63))==0 );
+  assert( d!=0 );
+  if( p<POWERSOF10_FIRST ){
+    return 0.0;
+  }
+  if( p>POWERSOF10_LAST ){
+    return INFINITY;
+  }
+  lz = countLeadingZeros(d);
+  lp = pwr10to2(p);
+  e1 = lz - (lp + 11);
+  if( e1>1074 ){
+    if( e1>=1130 ) return 0.0;
+    e1 = 1074;
+  }
+  h = sqlite3Multiply128(d<<lz, powerOfTen(p));
+  x = lz - (e1 + lp + 3);
+  assert( x >= 0  );
+  assert( x <= 63 );
+  out = h >> x;
+  if( out >= U64_BIT(55)-2 ){
+    out >>= 1;
+    e1--;
+  }
+  if( e1<=(-972) ){
+    return INFINITY;
+  }
+  out = (out + 2) >> 2;
+  if( (out & U64_BIT(52))!=0 ){
+    out = (out & ~U64_BIT(52)) | ((u64)(1075-e1)<<52);
+  }
+  memcpy(&r, &out, 8);
+  return r;
 }
 
 /*
 ** The string z[] is an text representation of a real number.
 ** Convert this string to a double and write it into *pResult.
 **
-** The string z[] is length bytes in length (bytes, not characters) and
-** uses the encoding enc.  The string is not necessarily zero-terminated.
+** z[] must be UTF-8 and zero-terminated.
 **
 ** Return TRUE if the result is a valid real number (or integer) and FALSE
 ** if the string is empty or contains extraneous text.  More specifically
@@ -36393,198 +36790,131 @@ static void dekkerMul2(volatile double *x, double y, double yy){
 #if defined(_MSC_VER)
 #pragma warning(disable : 4756)
 #endif
-SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult, int length, u8 enc){
+SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult){
 #ifndef SQLITE_OMIT_FLOATING_POINT
-  int incr;
-  const char *zEnd;
   /* sign * significand * (10 ^ (esign * exponent)) */
-  int sign = 1;    /* sign of significand */
-  u64 s = 0;       /* significand */
-  int d = 0;       /* adjust exponent for shifting decimal point */
-  int esign = 1;   /* sign of exponent */
-  int e = 0;       /* exponent */
-  int eValid = 1;  /* True exponent is either not used or is well-formed */
+  int neg = 0;     /* True for a negative value */
+  u64 s = 0;       /* mantissa */
+  int d = 0;       /* Value is s * pow(10,d) */
   int nDigit = 0;  /* Number of digits processed */
-  int eType = 1;   /* 1: pure integer,  2+: fractional  -1 or less: bad UTF16 */
-  u64 s2;          /* round-tripped significand */
-  double rr[2];
+  int eType = 1;   /* 1: pure integer,  2+: fractional */
 
-  assert( enc==SQLITE_UTF8 || enc==SQLITE_UTF16LE || enc==SQLITE_UTF16BE );
   *pResult = 0.0;   /* Default return value, in case of an error */
-  if( length==0 ) return 0;
-
-  if( enc==SQLITE_UTF8 ){
-    incr = 1;
-    zEnd = z + length;
-  }else{
-    int i;
-    incr = 2;
-    length &= ~1;
-    assert( SQLITE_UTF16LE==2 && SQLITE_UTF16BE==3 );
-    testcase( enc==SQLITE_UTF16LE );
-    testcase( enc==SQLITE_UTF16BE );
-    for(i=3-enc; i<length && z[i]==0; i+=2){}
-    if( i<length ) eType = -100;
-    zEnd = &z[i^1];
-    z += (enc&1);
-  }
 
   /* skip leading spaces */
-  while( z<zEnd && sqlite3Isspace(*z) ) z+=incr;
-  if( z>=zEnd ) return 0;
+  while( sqlite3Isspace(*z) ) z++;
 
   /* get sign of significand */
   if( *z=='-' ){
-    sign = -1;
-    z+=incr;
+    neg = 1;
+    z++;
   }else if( *z=='+' ){
-    z+=incr;
+    z++;
   }
 
   /* copy max significant digits to significand */
-  while( z<zEnd && sqlite3Isdigit(*z) ){
+  while( sqlite3Isdigit(*z) ){
     s = s*10 + (*z - '0');
-    z+=incr; nDigit++;
-    if( s>=((LARGEST_UINT64-9)/10) ){
+    z++; nDigit++;
+    if( s>=((LARGEST_INT64-9)/10) ){
       /* skip non-significant significand digits
       ** (increase exponent by d to shift decimal left) */
-      while( z<zEnd && sqlite3Isdigit(*z) ){ z+=incr; d++; }
+      while( sqlite3Isdigit(*z) ){ z++; d++; }
     }
   }
-  if( z>=zEnd ) goto do_atof_calc;
 
   /* if decimal point is present */
   if( *z=='.' ){
-    z+=incr;
+    z++;
     eType++;
     /* copy digits from after decimal to significand
     ** (decrease exponent by d to shift decimal right) */
-    while( z<zEnd && sqlite3Isdigit(*z) ){
-      if( s<((LARGEST_UINT64-9)/10) ){
+    while( sqlite3Isdigit(*z) ){
+      if( s<((LARGEST_INT64-9)/10) ){
         s = s*10 + (*z - '0');
         d--;
         nDigit++;
       }
-      z+=incr;
+      z++;
     }
   }
-  if( z>=zEnd ) goto do_atof_calc;
 
   /* if exponent is present */
   if( *z=='e' || *z=='E' ){
-    z+=incr;
-    eValid = 0;
+    int esign = 1;   /* sign of exponent */
+    z++;
     eType++;
 
-    /* This branch is needed to avoid a (harmless) buffer overread.  The
-    ** special comment alerts the mutation tester that the correct answer
-    ** is obtained even if the branch is omitted */
-    if( z>=zEnd ) goto do_atof_calc;              /*PREVENTS-HARMLESS-OVERREAD*/
-
     /* get sign of exponent */
     if( *z=='-' ){
       esign = -1;
-      z+=incr;
+      z++;
     }else if( *z=='+' ){
-      z+=incr;
+      z++;
     }
     /* copy digits to exponent */
-    while( z<zEnd && sqlite3Isdigit(*z) ){
-      e = e<10000 ? (e*10 + (*z - '0')) : 10000;
-      z+=incr;
-      eValid = 1;
+    if( sqlite3Isdigit(*z) ){
+      int exp = *z - '0';
+      z++;
+      while( sqlite3Isdigit(*z) ){
+        exp = exp<10000 ? (exp*10 + (*z - '0')) : 10000;
+        z++;
+      }
+      d += esign*exp;
+    }else{
+      eType = -1;
     }
   }
 
   /* skip trailing spaces */
-  while( z<zEnd && sqlite3Isspace(*z) ) z+=incr;
+  while( sqlite3Isspace(*z) ) z++;
 
-do_atof_calc:
   /* Zero is a special case */
   if( s==0 ){
-    *pResult = sign<0 ? -0.0 : +0.0;
-    goto atof_return;
-  }
-
-  /* adjust exponent by d, and update sign */
-  e = (e*esign) + d;
-
-  /* Try to adjust the exponent to make it smaller */
-  while( e>0 && s<((LARGEST_UINT64-0x7ff)/10) ){
-    s *= 10;
-    e--;
-  }
-  while( e<0 && (s%10)==0 ){
-    s /= 10;
-    e++;
-  }
-
-  rr[0] = (double)s;
-  assert( sizeof(s2)==sizeof(rr[0]) );
-#ifdef SQLITE_DEBUG
-  rr[1] = 18446744073709549568.0;
-  memcpy(&s2, &rr[1], sizeof(s2));
-  assert( s2==0x43efffffffffffffLL );
-#endif
-  /* Largest double that can be safely converted to u64
-  **         vvvvvvvvvvvvvvvvvvvvvv   */
-  if( rr[0]<=18446744073709549568.0 ){
-    s2 = (u64)rr[0];
-    rr[1] = s>=s2 ? (double)(s - s2) : -(double)(s2 - s);
+    *pResult = neg ? -0.0 : +0.0;
   }else{
-    rr[1] = 0.0;
+    *pResult = sqlite3Fp10Convert2(s,d);
+    if( neg ) *pResult = -*pResult;
+    assert( !sqlite3IsNaN(*pResult) );
   }
-  assert( rr[1]<=1.0e-10*rr[0] );  /* Equal only when rr[0]==0.0 */
 
-  if( e>0 ){
-    while( e>=100  ){
-      e -= 100;
-      dekkerMul2(rr, 1.0e+100, -1.5902891109759918046e+83);
-    }
-    while( e>=10   ){
-      e -= 10;
-      dekkerMul2(rr, 1.0e+10, 0.0);
-    }
-    while( e>=1    ){
-      e -= 1;
-      dekkerMul2(rr, 1.0e+01, 0.0);
-    }
-  }else{
-    while( e<=-100 ){
-      e += 100;
-      dekkerMul2(rr, 1.0e-100, -1.99918998026028836196e-117);
-    }
-    while( e<=-10  ){
-      e += 10;
-      dekkerMul2(rr, 1.0e-10, -3.6432197315497741579e-27);
-    }
-    while( e<=-1   ){
-      e += 1;
-      dekkerMul2(rr, 1.0e-01, -5.5511151231257827021e-18);
-    }
-  }
-  *pResult = rr[0]+rr[1];
-  if( sqlite3IsNaN(*pResult) ) *pResult = 1e300*1e300;
-  if( sign<0 ) *pResult = -*pResult;
-  assert( !sqlite3IsNaN(*pResult) );
-
-atof_return:
   /* return true if number and no extra non-whitespace characters after */
-  if( z==zEnd && nDigit>0 && eValid && eType>0 ){
+  if( z[0]==0 && nDigit>0 ){
     return eType;
-  }else if( eType>=2 && (eType==3 || eValid) && nDigit>0 ){
+  }else if( eType>=2 && nDigit>0 ){
     return -1;
   }else{
     return 0;
   }
 #else
-  return !sqlite3Atoi64(z, pResult, length, enc);
+  return !sqlite3Atoi64(z, pResult, strlen(z), SQLITE_UTF8);
 #endif /* SQLITE_OMIT_FLOATING_POINT */
 }
 #if defined(_MSC_VER)
 #pragma warning(default : 4756)
 #endif
 
+/*
+** Digit pairs used to convert a U64 or I64 into text, two digits
+** at a time.
+*/
+static const union {
+  char a[201];
+  short int forceAlignment;
+} sqlite3DigitPairs = {
+  "00010203040506070809"
+  "10111213141516171819"
+  "20212223242526272829"
+  "30313233343536373839"
+  "40414243444546474849"
+  "50515253545556575859"
+  "60616263646566676869"
+  "70717273747576777879"
+  "80818283848586878889"
+  "90919293949596979899"
+};
+
+
 /*
 ** Render an signed 64-bit integer as text.  Store the result in zOut[] and
 ** return the length of the string that was stored, in bytes.  The value
@@ -36596,23 +36926,35 @@ SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult, int length, u8 en
 SQLITE_PRIVATE int sqlite3Int64ToText(i64 v, char *zOut){
   int i;
   u64 x;
-  char zTemp[22];
-  if( v<0 ){
-    x = (v==SMALLEST_INT64) ? ((u64)1)<<63 : (u64)-v;
-  }else{
+  union {
+    char a[23];
+    u16 forceAlignment;
+  } u;
+  if( v>0 ){
     x = v;
+  }else if( v==0 ){
+    zOut[0] = '0';
+    zOut[1] = 0;
+    return 1;
+  }else{
+    x = (v==SMALLEST_INT64) ? ((u64)1)<<63 : (u64)-v;
   }
-  i = sizeof(zTemp)-2;
-  zTemp[sizeof(zTemp)-1] = 0;
-  while( 1 /*exit-by-break*/ ){
-    zTemp[i] = (x%10) + '0';
-    x = x/10;
-    if( x==0 ) break;
-    i--;
-  };
-  if( v<0 ) zTemp[--i] = '-';
-  memcpy(zOut, &zTemp[i], sizeof(zTemp)-i);
-  return sizeof(zTemp)-1-i;
+  i = sizeof(u.a)-1;
+  u.a[i] = 0;
+  while( x>=10 ){
+    int kk = (x%100)*2;
+    assert( TWO_BYTE_ALIGNMENT(&sqlite3DigitPairs.a[kk]) );
+    assert( TWO_BYTE_ALIGNMENT(&u.a[i-2]) );
+    *(u16*)(&u.a[i-2]) = *(u16*)&sqlite3DigitPairs.a[kk];
+    i -= 2;
+    x /= 100;
+  }
+  if( x ){
+    u.a[--i] = x + '0';
+  }
+  if( v<0 ) u.a[--i] = '-';
+  memcpy(zOut, &u.a[i], sizeof(u.a)-i);
+  return sizeof(u.a)-1-i;
 }
 
 /*
@@ -36869,7 +37211,7 @@ SQLITE_PRIVATE int sqlite3Atoi(const char *z){
 ** representation.
 **
 ** If iRound<=0 then round to -iRound significant digits to the
-** the left of the decimal point, or to a maximum of mxRound total
+** the right of the decimal point, or to a maximum of mxRound total
 ** significant digits.
 **
 ** If iRound>0 round to min(iRound,mxRound) significant digits total.
@@ -36882,13 +37224,14 @@ SQLITE_PRIVATE int sqlite3Atoi(const char *z){
 ** The p->z[] array is *not* zero-terminated.
 */
 SQLITE_PRIVATE void sqlite3FpDecode(FpDecode *p, double r, int iRound, int mxRound){
-  int i;
-  u64 v;
-  int e, exp = 0;
-  double rr[2];
+  int i;               /* Index into zBuf[] where to put next character */
+  int n;               /* Number of digits */
+  u64 v;               /* mantissa */
+  int e, exp = 0;      /* Base-2 and base-10 exponent */
+  char *zBuf;          /* Local alias for p->zBuf */
+  char *z;             /* Local alias for p->z */
 
   p->isSpecial = 0;
-  p->z = p->zBuf;
   assert( mxRound>0 );
 
   /* Convert negative numbers to positive.  Deal with Infinity, 0.0, and
@@ -36906,78 +37249,94 @@ SQLITE_PRIVATE void sqlite3FpDecode(FpDecode *p, double r, int iRound, int mxRou
     p->sign = '+';
   }
   memcpy(&v,&r,8);
-  e = v>>52;
-  if( (e&0x7ff)==0x7ff ){
+  e = (v>>52)&0x7ff;
+  if( e==0x7ff ){
     p->isSpecial = 1 + (v!=0x7ff0000000000000LL);
     p->n = 0;
     p->iDP = 0;
+    p->z = p->zBuf;
     return;
   }
-
-  /* Multiply r by powers of ten until it lands somewhere in between
-  ** 1.0e+19 and 1.0e+17.
-  **
-  ** Use Dekker-style double-double computation to increase the
-  ** precision.
-  **
-  ** The error terms on constants like 1.0e+100 computed using the
-  ** decimal extension, for example as follows:
-  **
-  **   SELECT decimal_exp(decimal_sub('1.0e+100',decimal(1.0e+100)));
-  */
-  rr[0] = r;
-  rr[1] = 0.0;
-  if( rr[0]>9.223372036854774784e+18 ){
-    while( rr[0]>9.223372036854774784e+118 ){
-      exp += 100;
-      dekkerMul2(rr, 1.0e-100, -1.99918998026028836196e-117);
-    }
-    while( rr[0]>9.223372036854774784e+28 ){
-      exp += 10;
-      dekkerMul2(rr, 1.0e-10, -3.6432197315497741579e-27);
-    }
-    while( rr[0]>9.223372036854774784e+18 ){
-      exp += 1;
-      dekkerMul2(rr, 1.0e-01, -5.5511151231257827021e-18);
-    }
+  v &= 0x000fffffffffffffULL;
+  if( e==0 ){
+    int nn = countLeadingZeros(v);
+    v <<= nn;
+    e = -1074 - nn;
   }else{
-    while( rr[0]<9.223372036854774784e-83  ){
-      exp -= 100;
-      dekkerMul2(rr, 1.0e+100, -1.5902891109759918046e+83);
-    }
-    while( rr[0]<9.223372036854774784e+07  ){
-      exp -= 10;
-      dekkerMul2(rr, 1.0e+10, 0.0);
-    }
-    while( rr[0]<9.22337203685477478e+17  ){
-      exp -= 1;
-      dekkerMul2(rr, 1.0e+01, 0.0);
-    }
+    v = (v<<11) | U64_BIT(63);
+    e -= 1086;
   }
-  v = rr[1]<0.0 ? (u64)rr[0]-(u64)(-rr[1]) : (u64)rr[0]+(u64)rr[1];
+  sqlite3Fp2Convert10(v, e, (iRound<=0||iRound>=18)?18:iRound+1, &v, &exp);
 
-  /* Extract significant digits. */
+  /* Extract significant digits, start at the right-most slot in p->zBuf
+  ** and working back to the right.  "i" keeps track of the next slot in
+  ** which to store a digit. */
   i = sizeof(p->zBuf)-1;
+  zBuf = p->zBuf;
   assert( v>0 );
-  while( v ){  p->zBuf[i--] = (v%10) + '0'; v /= 10; }
+  while( v>=10 ){
+    int kk = (v%100)*2;
+    assert( TWO_BYTE_ALIGNMENT(&sqlite3DigitPairs.a[kk]) );
+    assert( TWO_BYTE_ALIGNMENT(&zBuf[i-1]) );
+    *(u16*)(&zBuf[i-1]) = *(u16*)&sqlite3DigitPairs.a[kk];
+    i -= 2;
+    v /= 100;
+  }
+  if( v ){
+    assert( v<10 );
+    zBuf[i--] = v + '0';
+  }
   assert( i>=0 && i<sizeof(p->zBuf)-1 );
-  p->n = sizeof(p->zBuf) - 1 - i;
-  assert( p->n>0 );
-  assert( p->n<sizeof(p->zBuf) );
-  p->iDP = p->n + exp;
+  n = sizeof(p->zBuf) - 1 - i;  /* Total number of digits extracted */
+  assert( n>0 );
+  assert( n<sizeof(p->zBuf) );
+  testcase( n==sizeof(p->zBuf)-1 );
+  p->iDP = n + exp;
   if( iRound<=0 ){
     iRound = p->iDP - iRound;
-    if( iRound==0 && p->zBuf[i+1]>='5' ){
+    if( iRound==0 && zBuf[i+1]>='5' ){
       iRound = 1;
-      p->zBuf[i--] = '0';
-      p->n++;
+      zBuf[i--] = '0';
+      n++;
       p->iDP++;
     }
   }
-  if( iRound>0 && (iRound<p->n || p->n>mxRound) ){
-    char *z = &p->zBuf[i+1];
+  z = &zBuf[i+1];  /* z points to the first digit */
+  if( iRound>0 && (iRound<n || n>mxRound) ){
     if( iRound>mxRound ) iRound = mxRound;
-    p->n = iRound;
+    if( iRound==17 ){
+      /* If the precision is exactly 17, which only happens with the "!"
+      ** flag (ex: "%!.17g") then try to reduce the precision if that
+      ** yields text that will round-trip to the original floating-point.
+      ** value.  Thus, for exaple, 49.47 will render as 49.47, rather than
+      ** as 49.469999999999999. */
+      if( z[15]=='9' && z[14]=='9' ){
+        int jj, kk;
+        u64 v2;
+        for(jj=14; jj>0 && z[jj-1]=='9'; jj--){}
+        if( jj==0 ){
+          v2 = 1;
+        }else{
+          v2 = z[0] - '0';
+          for(kk=1; kk<jj; kk++) v2 = (v2*10) + z[kk] - '0';
+          v2++;
+        }
+        if( r==sqlite3Fp10Convert2(v2, exp + n - jj) ){
+          iRound = jj+1;
+        }
+      }else if( p->iDP>=n || (z[15]=='0' && z[14]=='0' && z[13]=='0') ){
+        int jj, kk;
+        u64 v2;
+        assert( z[0]!='0' );
+        for(jj=14; z[jj-1]=='0'; jj--){}
+        v2 = z[0] - '0';
+        for(kk=1; kk<jj; kk++) v2 = (v2*10) + z[kk] - '0';
+        if( r==sqlite3Fp10Convert2(v2, exp + n - jj) ){
+          iRound = jj+1;
+        }
+      }
+    }
+    n = iRound;
     if( z[iRound]>='5' ){
       int j = iRound-1;
       while( 1 /*exit-by-break*/ ){
@@ -36985,8 +37344,9 @@ SQLITE_PRIVATE void sqlite3FpDecode(FpDecode *p, double r, int iRound, int mxRou
         if( z[j]<='9' ) break;
         z[j] = '0';
         if( j==0 ){
-          p->z[i--] = '1';
-          p->n++;
+          z--;
+          z[0] = '1';
+          n++;
           p->iDP++;
           break;
         }else{
@@ -36995,13 +37355,13 @@ SQLITE_PRIVATE void sqlite3FpDecode(FpDecode *p, double r, int iRound, int mxRou
       }
     }
   }
-  p->z = &p->zBuf[i+1];
-  assert( i+p->n < sizeof(p->zBuf) );
-  assert( p->n>0 );
-  while( p->z[p->n-1]=='0' ){
-    p->n--;
-    assert( p->n>0 );
+  assert( n>0 );
+  while( z[n-1]=='0' ){
+    n--;
+    assert( n>0 );
   }
+  p->n = n;
+  p->z = z;
 }
 
 /*
@@ -38240,7 +38600,7 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
 ** Debugging logic
 */
 
-/* SQLITE_KV_TRACE() is used for tracing calls to kvstorage routines. */
+/* SQLITE_KV_TRACE() is used for tracing calls to kvrecord routines. */
 #if 0
 #define SQLITE_KV_TRACE(X)  printf X
 #else
@@ -38254,7 +38614,6 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
 #define SQLITE_KV_LOG(X)
 #endif
 
-
 /*
 ** Forward declaration of objects used by this VFS implementation
 */
@@ -38262,6 +38621,11 @@ typedef struct KVVfsFile KVVfsFile;
 
 /* A single open file.  There are only two files represented by this
 ** VFS - the database and the rollback journal.
+**
+** Maintenance reminder: if this struct changes in any way, the JSON
+** rendering of its structure must be updated in
+** sqlite3-wasm.c:sqlite3__wasm_enum_json(). There are no binary
+** compatibility concerns, so it does not need an iVersion member.
 */
 struct KVVfsFile {
   sqlite3_file base;              /* IO methods */
@@ -38311,7 +38675,7 @@ static int kvvfsCurrentTime(sqlite3_vfs*, double*);
 static int kvvfsCurrentTimeInt64(sqlite3_vfs*, sqlite3_int64*);
 
 static sqlite3_vfs sqlite3OsKvvfsObject = {
-  1,                              /* iVersion */
+  2,                              /* iVersion */
   sizeof(KVVfsFile),              /* szOsFile */
   1024,                           /* mxPathname */
   0,                              /* pNext */
@@ -38387,23 +38751,37 @@ static sqlite3_io_methods kvvfs_jrnl_io_methods = {
 
 /* Forward declarations for the low-level storage engine
 */
-static int kvstorageWrite(const char*, const char *zKey, const char *zData);
-static int kvstorageDelete(const char*, const char *zKey);
-static int kvstorageRead(const char*, const char *zKey, char *zBuf, int nBuf);
-#define KVSTORAGE_KEY_SZ  32
+#ifndef SQLITE_WASM
+/* In WASM builds these are implemented in JS. */
+static int kvrecordWrite(const char*, const char *zKey, const char *zData);
+static int kvrecordDelete(const char*, const char *zKey);
+static int kvrecordRead(const char*, const char *zKey, char *zBuf, int nBuf);
+#endif
+#ifndef KVRECORD_KEY_SZ
+#define KVRECORD_KEY_SZ 32
+#endif
 
 /* Expand the key name with an appropriate prefix and put the result
 ** in zKeyOut[].  The zKeyOut[] buffer is assumed to hold at least
-** KVSTORAGE_KEY_SZ bytes.
+** KVRECORD_KEY_SZ bytes.
 */
-static void kvstorageMakeKey(
+static void kvrecordMakeKey(
   const char *zClass,
   const char *zKeyIn,
   char *zKeyOut
 ){
-  sqlite3_snprintf(KVSTORAGE_KEY_SZ, zKeyOut, "kvvfs-%s-%s", zClass, zKeyIn);
+  assert( zKeyIn );
+  assert( zKeyOut );
+  assert( zClass );
+  sqlite3_snprintf(KVRECORD_KEY_SZ, zKeyOut, "kvvfs-%s-%s",
+                   zClass, zKeyIn);
 }
 
+#ifndef SQLITE_WASM
+/* In WASM builds do not define APIs which use fopen(), fwrite(),
+** and the like because those APIs are a portability issue for
+** WASM.
+*/
 /* Write content into a key.  zClass is the particular namespace of the
 ** underlying key/value store to use - either "local" or "session".
 **
@@ -38411,14 +38789,14 @@ static void kvstorageMakeKey(
 **
 ** Return the number of errors.
 */
-static int kvstorageWrite(
+static int kvrecordWrite(
   const char *zClass,
   const char *zKey,
   const char *zData
 ){
   FILE *fd;
-  char zXKey[KVSTORAGE_KEY_SZ];
-  kvstorageMakeKey(zClass, zKey, zXKey);
+  char zXKey[KVRECORD_KEY_SZ];
+  kvrecordMakeKey(zClass, zKey, zXKey);
   fd = fopen(zXKey, "wb");
   if( fd ){
     SQLITE_KV_TRACE(("KVVFS-WRITE  %-15s (%d) %.50s%s\n", zXKey,
@@ -38436,9 +38814,9 @@ static int kvstorageWrite(
 ** namespace given by zClass.  If the key does not previously exist,
 ** this routine is a no-op.
 */
-static int kvstorageDelete(const char *zClass, const char *zKey){
-  char zXKey[KVSTORAGE_KEY_SZ];
-  kvstorageMakeKey(zClass, zKey, zXKey);
+static int kvrecordDelete(const char *zClass, const char *zKey){
+  char zXKey[KVRECORD_KEY_SZ];
+  kvrecordMakeKey(zClass, zKey, zXKey);
   unlink(zXKey);
   SQLITE_KV_TRACE(("KVVFS-DELETE %-15s\n", zXKey));
   return 0;
@@ -38459,7 +38837,7 @@ static int kvstorageDelete(const char *zClass, const char *zKey){
 ** zero-terminates zBuf at zBuf[0] and returns the size of the data
 ** without reading it.
 */
-static int kvstorageRead(
+static int kvrecordRead(
   const char *zClass,
   const char *zKey,
   char *zBuf,
@@ -38467,8 +38845,8 @@ static int kvstorageRead(
 ){
   FILE *fd;
   struct stat buf;
-  char zXKey[KVSTORAGE_KEY_SZ];
-  kvstorageMakeKey(zClass, zKey, zXKey);
+  char zXKey[KVRECORD_KEY_SZ];
+  kvrecordMakeKey(zClass, zKey, zXKey);
   if( access(zXKey, R_OK)!=0
    || stat(zXKey, &buf)!=0
    || !S_ISREG(buf.st_mode)
@@ -38500,6 +38878,8 @@ static int kvstorageRead(
     return (int)n;
   }
 }
+#endif /* #ifndef SQLITE_WASM */
+
 
 /*
 ** An internal level of indirection which enables us to replace the
@@ -38507,17 +38887,27 @@ static int kvstorageRead(
 ** Maintenance reminder: if this struct changes in any way, the JSON
 ** rendering of its structure must be updated in
 ** sqlite3-wasm.c:sqlite3__wasm_enum_json(). There are no binary
-** compatibility concerns, so it does not need an iVersion
-** member.
+** compatibility concerns, so it does not need an iVersion member.
 */
 typedef struct sqlite3_kvvfs_methods sqlite3_kvvfs_methods;
 struct sqlite3_kvvfs_methods {
-  int (*xRead)(const char *zClass, const char *zKey, char *zBuf, int nBuf);
-  int (*xWrite)(const char *zClass, const char *zKey, const char *zData);
-  int (*xDelete)(const char *zClass, const char *zKey);
+  int (*xRcrdRead)(const char*, const char *zKey, char *zBuf, int nBuf);
+  int (*xRcrdWrite)(const char*, const char *zKey, const char *zData);
+  int (*xRcrdDelete)(const char*, const char *zKey);
   const int nKeySize;
+  const int nBufferSize;
+#ifndef SQLITE_WASM
+#  define MAYBE_CONST const
+#else
+#  define MAYBE_CONST
+#endif
+  MAYBE_CONST sqlite3_vfs * pVfs;
+  MAYBE_CONST sqlite3_io_methods *pIoDb;
+  MAYBE_CONST sqlite3_io_methods *pIoJrnl;
+#undef MAYBE_CONST
 };
 
+
 /*
 ** This object holds the kvvfs I/O methods which may be swapped out
 ** for JavaScript-side implementations in WASM builds. In such builds
@@ -38532,10 +38922,20 @@ struct sqlite3_kvvfs_methods {
 const
 #endif
 SQLITE_PRIVATE sqlite3_kvvfs_methods sqlite3KvvfsMethods = {
-kvstorageRead,
-kvstorageWrite,
-kvstorageDelete,
-KVSTORAGE_KEY_SZ
+#ifndef SQLITE_WASM
+  .xRcrdRead       = kvrecordRead,
+  .xRcrdWrite      = kvrecordWrite,
+  .xRcrdDelete     = kvrecordDelete,
+#else
+  .xRcrdRead       = 0,
+  .xRcrdWrite      = 0,
+  .xRcrdDelete     = 0,
+#endif
+  .nKeySize        = KVRECORD_KEY_SZ,
+  .nBufferSize     = SQLITE_KVOS_SZ,
+  .pVfs            = &sqlite3OsKvvfsObject,
+  .pIoDb           = &kvvfs_db_io_methods,
+  .pIoJrnl         = &kvvfs_jrnl_io_methods
 };
 
 /****** Utility subroutines ************************************************/
@@ -38562,7 +38962,10 @@ KVSTORAGE_KEY_SZ
 **      of hexadecimal and base-26 numbers, it is always clear where
 **      one stops and the next begins.
 */
-static int kvvfsEncode(const char *aData, int nData, char *aOut){
+#ifndef SQLITE_WASM
+static
+#endif
+int kvvfsEncode(const char *aData, int nData, char *aOut){
   int i, j;
   const unsigned char *a = (const unsigned char*)aData;
   for(i=j=0; i<nData; i++){
@@ -38613,9 +39016,13 @@ static const signed char kvvfsHexValue[256] = {
 ** Decode the text encoding back to binary.  The binary content is
 ** written into pOut, which must be at least nOut bytes in length.
 **
-** The return value is the number of bytes actually written into aOut[].
+** The return value is the number of bytes actually written into aOut[], or
+** -1 for malformed inputs.
 */
-static int kvvfsDecode(const char *a, char *aOut, int nOut){
+#ifndef SQLITE_WASM
+static
+#endif
+int kvvfsDecode(const char *a, char *aOut, int nOut){
   int i, j;
   int c;
   const unsigned char *aIn = (const unsigned char*)a;
@@ -38640,7 +39047,7 @@ static int kvvfsDecode(const char *a, char *aOut, int nOut){
     }else{
       aOut[j] = c<<4;
       c = kvvfsHexValue[aIn[++i]];
-      if( c<0 ) break;
+      if( c<0 ) return -1 /* hex bytes are always in pairs */;
       aOut[j++] += c;
       i++;
     }
@@ -38693,13 +39100,14 @@ static void kvvfsDecodeJournal(
 static sqlite3_int64 kvvfsReadFileSize(KVVfsFile *pFile){
   char zData[50];
   zData[0] = 0;
-  sqlite3KvvfsMethods.xRead(pFile->zClass, "sz", zData, sizeof(zData)-1);
+  sqlite3KvvfsMethods.xRcrdRead(pFile->zClass, "sz", zData,
+                                sizeof(zData)-1);
   return strtoll(zData, 0, 0);
 }
 static int kvvfsWriteFileSize(KVVfsFile *pFile, sqlite3_int64 sz){
   char zData[50];
   sqlite3_snprintf(sizeof(zData), zData, "%lld", sz);
-  return sqlite3KvvfsMethods.xWrite(pFile->zClass, "sz", zData);
+  return sqlite3KvvfsMethods.xRcrdWrite(pFile->zClass, "sz", zData);
 }
 
 /****** sqlite3_io_methods methods ******************************************/
@@ -38714,6 +39122,9 @@ static int kvvfsClose(sqlite3_file *pProtoFile){
              pFile->isJournal ? "journal" : "db"));
   sqlite3_free(pFile->aJrnl);
   sqlite3_free(pFile->aData);
+#ifdef SQLITE_WASM
+  memset(pFile, 0, sizeof(*pFile));
+#endif
   return SQLITE_OK;
 }
 
@@ -38730,16 +39141,22 @@ static int kvvfsReadJrnl(
   assert( pFile->isJournal );
   SQLITE_KV_LOG(("xRead('%s-journal',%d,%lld)\n", pFile->zClass, iAmt, iOfst));
   if( pFile->aJrnl==0 ){
-    int szTxt = kvstorageRead(pFile->zClass, "jrnl", 0, 0);
+    int rc;
+    int szTxt = sqlite3KvvfsMethods.xRcrdRead(pFile->zClass, "jrnl",
+                                              0, 0);
     char *aTxt;
     if( szTxt<=4 ){
       return SQLITE_IOERR;
     }
     aTxt = sqlite3_malloc64( szTxt+1 );
     if( aTxt==0 ) return SQLITE_NOMEM;
-    kvstorageRead(pFile->zClass, "jrnl", aTxt, szTxt+1);
-    kvvfsDecodeJournal(pFile, aTxt, szTxt);
+    rc = sqlite3KvvfsMethods.xRcrdRead(pFile->zClass, "jrnl",
+                                       aTxt, szTxt+1);
+    if( rc>=0 ){
+      kvvfsDecodeJournal(pFile, aTxt, szTxt);
+    }
     sqlite3_free(aTxt);
+    if( rc ) return rc;
     if( pFile->aJrnl==0 ) return SQLITE_IOERR;
   }
   if( iOfst+iAmt>pFile->nJrnl ){
@@ -38779,8 +39196,8 @@ static int kvvfsReadDb(
     pgno = 1;
   }
   sqlite3_snprintf(sizeof(zKey), zKey, "%u", pgno);
-  got = sqlite3KvvfsMethods.xRead(pFile->zClass, zKey,
-                                  aData, SQLITE_KVOS_SZ-1);
+  got = sqlite3KvvfsMethods.xRcrdRead(pFile->zClass, zKey,
+                                      aData, SQLITE_KVOS_SZ-1);
   if( got<0 ){
     n = 0;
   }else{
@@ -38848,6 +39265,7 @@ static int kvvfsWriteDb(
   unsigned int pgno;
   char zKey[30];
   char *aData = pFile->aData;
+  int rc;
   SQLITE_KV_LOG(("xWrite('%s-db',%d,%lld)\n", pFile->zClass, iAmt, iOfst));
   assert( iAmt>=512 && iAmt<=65536 );
   assert( (iAmt & (iAmt-1))==0 );
@@ -38856,13 +39274,13 @@ static int kvvfsWriteDb(
   pgno = 1 + iOfst/iAmt;
   sqlite3_snprintf(sizeof(zKey), zKey, "%u", pgno);
   kvvfsEncode(zBuf, iAmt, aData);
-  if( sqlite3KvvfsMethods.xWrite(pFile->zClass, zKey, aData) ){
-    return SQLITE_IOERR;
-  }
-  if( iOfst+iAmt > pFile->szDb ){
-    pFile->szDb = iOfst + iAmt;
+  rc = sqlite3KvvfsMethods.xRcrdWrite(pFile->zClass, zKey, aData);
+  if( 0==rc ){
+    if( iOfst+iAmt > pFile->szDb ){
+      pFile->szDb = iOfst + iAmt;
+    }
   }
-  return SQLITE_OK;
+  return rc;
 }
 
 /*
@@ -38872,7 +39290,7 @@ static int kvvfsTruncateJrnl(sqlite3_file *pProtoFile, sqlite_int64 size){
   KVVfsFile *pFile = (KVVfsFile *)pProtoFile;
   SQLITE_KV_LOG(("xTruncate('%s-journal',%lld)\n", pFile->zClass, size));
   assert( size==0 );
-  sqlite3KvvfsMethods.xDelete(pFile->zClass, "jrnl");
+  sqlite3KvvfsMethods.xRcrdDelete(pFile->zClass, "jrnl");
   sqlite3_free(pFile->aJrnl);
   pFile->aJrnl = 0;
   pFile->nJrnl = 0;
@@ -38891,7 +39309,7 @@ static int kvvfsTruncateDb(sqlite3_file *pProtoFile, sqlite_int64 size){
     pgnoMax = 2 + pFile->szDb/pFile->szPage;
     while( pgno<=pgnoMax ){
       sqlite3_snprintf(sizeof(zKey), zKey, "%u", pgno);
-      sqlite3KvvfsMethods.xDelete(pFile->zClass, zKey);
+      sqlite3KvvfsMethods.xRcrdDelete(pFile->zClass, zKey);
       pgno++;
     }
     pFile->szDb = size;
@@ -38923,7 +39341,7 @@ static int kvvfsSyncJrnl(sqlite3_file *pProtoFile, int flags){
   }while( n>0 );
   zOut[i++] = ' ';
   kvvfsEncode(pFile->aJrnl, pFile->nJrnl, &zOut[i]);
-  i = sqlite3KvvfsMethods.xWrite(pFile->zClass, "jrnl", zOut);
+  i = sqlite3KvvfsMethods.xRcrdWrite(pFile->zClass, "jrnl", zOut);
   sqlite3_free(zOut);
   return i ? SQLITE_IOERR : SQLITE_OK;
 }
@@ -39037,33 +39455,32 @@ static int kvvfsOpen(
   KVVfsFile *pFile = (KVVfsFile*)pProtoFile;
   if( zName==0 ) zName = "";
   SQLITE_KV_LOG(("xOpen(\"%s\")\n", zName));
-  if( strcmp(zName, "local")==0
-   || strcmp(zName, "session")==0
-  ){
-    pFile->isJournal = 0;
-    pFile->base.pMethods = &kvvfs_db_io_methods;
-  }else
-  if( strcmp(zName, "local-journal")==0
-   || strcmp(zName, "session-journal")==0
-  ){
+  assert(!pFile->zClass);
+  assert(!pFile->aData);
+  assert(!pFile->aJrnl);
+  assert(!pFile->nJrnl);
+  assert(!pFile->base.pMethods);
+  pFile->szPage = -1;
+  pFile->szDb = -1;
+  if( 0==sqlite3_strglob("*-journal", zName) ){
     pFile->isJournal = 1;
     pFile->base.pMethods = &kvvfs_jrnl_io_methods;
+    if( 0==strcmp("session-journal",zName) ){
+      pFile->zClass = "session";
+    }else if( 0==strcmp("local-journal",zName) ){
+      pFile->zClass = "local";
+    }
   }else{
-    return SQLITE_CANTOPEN;
+    pFile->isJournal = 0;
+    pFile->base.pMethods = &kvvfs_db_io_methods;
   }
-  if( zName[0]=='s' ){
-    pFile->zClass = "session";
-  }else{
-    pFile->zClass = "local";
+  if( !pFile->zClass ){
+    pFile->zClass = zName;
   }
   pFile->aData = sqlite3_malloc64(SQLITE_KVOS_SZ);
   if( pFile->aData==0 ){
     return SQLITE_NOMEM;
   }
-  pFile->aJrnl = 0;
-  pFile->nJrnl = 0;
-  pFile->szPage = -1;
-  pFile->szDb = -1;
   return SQLITE_OK;
 }
 
@@ -39073,13 +39490,17 @@ static int kvvfsOpen(
 ** returning.
 */
 static int kvvfsDelete(sqlite3_vfs *pVfs, const char *zPath, int dirSync){
+  int rc /* The JS impl can fail with OOM in argument conversion */;
   if( strcmp(zPath, "local-journal")==0 ){
-    sqlite3KvvfsMethods.xDelete("local", "jrnl");
+    rc = sqlite3KvvfsMethods.xRcrdDelete("local", "jrnl");
   }else
   if( strcmp(zPath, "session-journal")==0 ){
-    sqlite3KvvfsMethods.xDelete("session", "jrnl");
+    rc = sqlite3KvvfsMethods.xRcrdDelete("session", "jrnl");
   }
-  return SQLITE_OK;
+  else{
+    rc = 0;
+  }
+  return rc;
 }
 
 /*
@@ -39093,21 +39514,42 @@ static int kvvfsAccess(
   int *pResOut
 ){
   SQLITE_KV_LOG(("xAccess(\"%s\")\n", zPath));
+#if 0 && defined(SQLITE_WASM)
+  /*
+  ** This is not having the desired effect in the JS bindings.
+  ** It's ostensibly the same logic as the #else block, but
+  ** it's not behaving that way.
+  **
+  ** In JS we map all zPaths to Storage objects, and -journal files
+  ** are mapped to the storage for the main db (which is is exactly
+  ** what the mapping of "local-journal" -> "local" is doing).
+  */
+  const char *zKey = (0==sqlite3_strglob("*-journal", zPath))
+    ? "jrnl" : "sz";
+  *pResOut =
+    sqlite3KvvfsMethods.xRcrdRead(zPath, zKey, 0, 0)>0;
+#else
   if( strcmp(zPath, "local-journal")==0 ){
-    *pResOut = sqlite3KvvfsMethods.xRead("local", "jrnl", 0, 0)>0;
+    *pResOut =
+      sqlite3KvvfsMethods.xRcrdRead("local", "jrnl", 0, 0)>0;
   }else
   if( strcmp(zPath, "session-journal")==0 ){
-    *pResOut = sqlite3KvvfsMethods.xRead("session", "jrnl", 0, 0)>0;
+    *pResOut =
+      sqlite3KvvfsMethods.xRcrdRead("session", "jrnl", 0, 0)>0;
   }else
   if( strcmp(zPath, "local")==0 ){
-    *pResOut = sqlite3KvvfsMethods.xRead("local", "sz", 0, 0)>0;
+    *pResOut =
+      sqlite3KvvfsMethods.xRcrdRead("local", "sz", 0, 0)>0;
   }else
   if( strcmp(zPath, "session")==0 ){
-    *pResOut = sqlite3KvvfsMethods.xRead("session", "sz", 0, 0)>0;
+    *pResOut =
+      sqlite3KvvfsMethods.xRcrdRead("session", "sz", 0, 0)>0;
   }else
   {
     *pResOut = 0;
   }
+  /*all current JS tests avoid triggering: assert( *pResOut == 0 ); */
+#endif
   SQLITE_KV_LOG(("xAccess returns %d\n",*pResOut));
   return SQLITE_OK;
 }
@@ -44391,7 +44833,7 @@ static int unixShmMap(
     }
 
     /* Map the requested memory region into this processes address space. */
-    apNew = (char **)sqlite3_realloc(
+    apNew = (char **)sqlite3_realloc64(
         pShmNode->apRegion, nReqRegion*sizeof(char *)
     );
     if( !apNew ){
@@ -47836,7 +48278,7 @@ SQLITE_API int sqlite3_os_end(void){
 ** Are most of the Win32 ANSI APIs available (i.e. with certain exceptions
 ** based on the sub-platform)?
 */
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && !defined(SQLITE_WIN32_NO_ANSI)
+#if !SQLITE_OS_WINCE && !defined(SQLITE_WIN32_NO_ANSI)
 #  define SQLITE_WIN32_HAS_ANSI
 #endif
 
@@ -47844,7 +48286,7 @@ SQLITE_API int sqlite3_os_end(void){
 ** Are most of the Win32 Unicode APIs available (i.e. with certain exceptions
 ** based on the sub-platform)?
 */
-#if (SQLITE_OS_WINCE || SQLITE_OS_WINNT || SQLITE_OS_WINRT) && \
+#if (SQLITE_OS_WINCE || SQLITE_OS_WINNT) && \
     !defined(SQLITE_WIN32_NO_WIDE)
 #  define SQLITE_WIN32_HAS_WIDE
 #endif
@@ -47983,16 +48425,7 @@ SQLITE_API int sqlite3_os_end(void){
 */
 #if SQLITE_WIN32_FILEMAPPING_API && \
         (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
-/*
-** Two of the file mapping APIs are different under WinRT.  Figure out which
-** set we need.
-*/
-#if SQLITE_OS_WINRT
-WINBASEAPI HANDLE WINAPI CreateFileMappingFromApp(HANDLE, \
-        LPSECURITY_ATTRIBUTES, ULONG, ULONG64, LPCWSTR);
 
-WINBASEAPI LPVOID WINAPI MapViewOfFileFromApp(HANDLE, ULONG, ULONG64, SIZE_T);
-#else
 #if defined(SQLITE_WIN32_HAS_ANSI)
 WINBASEAPI HANDLE WINAPI CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, \
         DWORD, DWORD, DWORD, LPCSTR);
@@ -48004,7 +48437,6 @@ WINBASEAPI HANDLE WINAPI CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, \
 #endif /* defined(SQLITE_WIN32_HAS_WIDE) */
 
 WINBASEAPI LPVOID WINAPI MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, SIZE_T);
-#endif /* SQLITE_OS_WINRT */
 
 /*
 ** These file mapping APIs are common to both Win32 and WinRT.
@@ -48295,7 +48727,7 @@ static LONG SQLITE_WIN32_VOLATILE sqlite3_os_type = 0;
 ** This function is not available on Windows CE or WinRT.
  */
 
-#if SQLITE_OS_WINCE || SQLITE_OS_WINRT
+#if SQLITE_OS_WINCE
 #  define osAreFileApisANSI()       1
 #endif
 
@@ -48310,7 +48742,7 @@ static struct win_syscall {
   sqlite3_syscall_ptr pCurrent; /* Current value of the system call */
   sqlite3_syscall_ptr pDefault; /* Default value */
 } aSyscall[] = {
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
+#if !SQLITE_OS_WINCE
   { "AreFileApisANSI",         (SYSCALL)AreFileApisANSI,         0 },
 #else
   { "AreFileApisANSI",         (SYSCALL)0,                       0 },
@@ -48349,7 +48781,7 @@ static struct win_syscall {
 #define osCreateFileA ((HANDLE(WINAPI*)(LPCSTR,DWORD,DWORD, \
         LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE))aSyscall[4].pCurrent)
 
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
+#if defined(SQLITE_WIN32_HAS_WIDE)
   { "CreateFileW",             (SYSCALL)CreateFileW,             0 },
 #else
   { "CreateFileW",             (SYSCALL)0,                       0 },
@@ -48358,7 +48790,7 @@ static struct win_syscall {
 #define osCreateFileW ((HANDLE(WINAPI*)(LPCWSTR,DWORD,DWORD, \
         LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE))aSyscall[5].pCurrent)
 
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_ANSI) && \
+#if defined(SQLITE_WIN32_HAS_ANSI) && \
         (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0) && \
         SQLITE_WIN32_CREATEFILEMAPPINGA
   { "CreateFileMappingA",      (SYSCALL)CreateFileMappingA,      0 },
@@ -48369,8 +48801,8 @@ static struct win_syscall {
 #define osCreateFileMappingA ((HANDLE(WINAPI*)(HANDLE,LPSECURITY_ATTRIBUTES, \
         DWORD,DWORD,DWORD,LPCSTR))aSyscall[6].pCurrent)
 
-#if SQLITE_OS_WINCE || (!SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE) && \
-        (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0))
+#if (SQLITE_OS_WINCE || defined(SQLITE_WIN32_HAS_WIDE)) && \
+        (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
   { "CreateFileMappingW",      (SYSCALL)CreateFileMappingW,      0 },
 #else
   { "CreateFileMappingW",      (SYSCALL)0,                       0 },
@@ -48379,7 +48811,7 @@ static struct win_syscall {
 #define osCreateFileMappingW ((HANDLE(WINAPI*)(HANDLE,LPSECURITY_ATTRIBUTES, \
         DWORD,DWORD,DWORD,LPCWSTR))aSyscall[7].pCurrent)
 
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
+#if defined(SQLITE_WIN32_HAS_WIDE)
   { "CreateMutexW",            (SYSCALL)CreateMutexW,            0 },
 #else
   { "CreateMutexW",            (SYSCALL)0,                       0 },
@@ -48465,7 +48897,7 @@ static struct win_syscall {
 #define osGetDiskFreeSpaceA ((BOOL(WINAPI*)(LPCSTR,LPDWORD,LPDWORD,LPDWORD, \
         LPDWORD))aSyscall[18].pCurrent)
 
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
+#if !SQLITE_OS_WINCE && defined(SQLITE_WIN32_HAS_WIDE)
   { "GetDiskFreeSpaceW",       (SYSCALL)GetDiskFreeSpaceW,       0 },
 #else
   { "GetDiskFreeSpaceW",       (SYSCALL)0,                       0 },
@@ -48482,7 +48914,7 @@ static struct win_syscall {
 
 #define osGetFileAttributesA ((DWORD(WINAPI*)(LPCSTR))aSyscall[20].pCurrent)
 
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
+#if defined(SQLITE_WIN32_HAS_WIDE)
   { "GetFileAttributesW",      (SYSCALL)GetFileAttributesW,      0 },
 #else
   { "GetFileAttributesW",      (SYSCALL)0,                       0 },
@@ -48499,11 +48931,7 @@ static struct win_syscall {
 #define osGetFileAttributesExW ((BOOL(WINAPI*)(LPCWSTR,GET_FILEEX_INFO_LEVELS, \
         LPVOID))aSyscall[22].pCurrent)
 
-#if !SQLITE_OS_WINRT
   { "GetFileSize",             (SYSCALL)GetFileSize,             0 },
-#else
-  { "GetFileSize",             (SYSCALL)0,                       0 },
-#endif
 
 #define osGetFileSize ((DWORD(WINAPI*)(HANDLE,LPDWORD))aSyscall[23].pCurrent)
 
@@ -48516,7 +48944,7 @@ static struct win_syscall {
 #define osGetFullPathNameA ((DWORD(WINAPI*)(LPCSTR,DWORD,LPSTR, \
         LPSTR*))aSyscall[24].pCurrent)
 
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
+#if !SQLITE_OS_WINCE && defined(SQLITE_WIN32_HAS_WIDE)
   { "GetFullPathNameW",        (SYSCALL)GetFullPathNameW,        0 },
 #else
   { "GetFullPathNameW",        (SYSCALL)0,                       0 },
@@ -48551,16 +48979,10 @@ static struct win_syscall {
 #define osGetProcAddressA ((FARPROC(WINAPI*)(HMODULE, \
         LPCSTR))aSyscall[27].pCurrent)
 
-#if !SQLITE_OS_WINRT
   { "GetSystemInfo",           (SYSCALL)GetSystemInfo,           0 },
-#else
-  { "GetSystemInfo",           (SYSCALL)0,                       0 },
-#endif
-
 #define osGetSystemInfo ((VOID(WINAPI*)(LPSYSTEM_INFO))aSyscall[28].pCurrent)
 
   { "GetSystemTime",           (SYSCALL)GetSystemTime,           0 },
-
 #define osGetSystemTime ((VOID(WINAPI*)(LPSYSTEMTIME))aSyscall[29].pCurrent)
 
 #if !SQLITE_OS_WINCE
@@ -48580,7 +49002,7 @@ static struct win_syscall {
 
 #define osGetTempPathA ((DWORD(WINAPI*)(DWORD,LPSTR))aSyscall[31].pCurrent)
 
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
+#if defined(SQLITE_WIN32_HAS_WIDE)
   { "GetTempPathW",            (SYSCALL)GetTempPathW,            0 },
 #else
   { "GetTempPathW",            (SYSCALL)0,                       0 },
@@ -48588,11 +49010,7 @@ static struct win_syscall {
 
 #define osGetTempPathW ((DWORD(WINAPI*)(DWORD,LPWSTR))aSyscall[32].pCurrent)
 
-#if !SQLITE_OS_WINRT
   { "GetTickCount",            (SYSCALL)GetTickCount,            0 },
-#else
-  { "GetTickCount",            (SYSCALL)0,                       0 },
-#endif
 
 #define osGetTickCount ((DWORD(WINAPI*)(VOID))aSyscall[33].pCurrent)
 
@@ -48605,7 +49023,7 @@ static struct win_syscall {
 #define osGetVersionExA ((BOOL(WINAPI*)( \
         LPOSVERSIONINFOA))aSyscall[34].pCurrent)
 
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE) && \
+#if defined(SQLITE_WIN32_HAS_WIDE) && \
         SQLITE_WIN32_GETVERSIONEX
   { "GetVersionExW",           (SYSCALL)GetVersionExW,           0 },
 #else
@@ -48620,20 +49038,12 @@ static struct win_syscall {
 #define osHeapAlloc ((LPVOID(WINAPI*)(HANDLE,DWORD, \
         SIZE_T))aSyscall[36].pCurrent)
 
-#if !SQLITE_OS_WINRT
   { "HeapCreate",              (SYSCALL)HeapCreate,              0 },
-#else
-  { "HeapCreate",              (SYSCALL)0,                       0 },
-#endif
 
 #define osHeapCreate ((HANDLE(WINAPI*)(DWORD,SIZE_T, \
         SIZE_T))aSyscall[37].pCurrent)
 
-#if !SQLITE_OS_WINRT
   { "HeapDestroy",             (SYSCALL)HeapDestroy,             0 },
-#else
-  { "HeapDestroy",             (SYSCALL)0,                       0 },
-#endif
 
 #define osHeapDestroy ((BOOL(WINAPI*)(HANDLE))aSyscall[38].pCurrent)
 
@@ -48651,16 +49061,12 @@ static struct win_syscall {
 #define osHeapSize ((SIZE_T(WINAPI*)(HANDLE,DWORD, \
         LPCVOID))aSyscall[41].pCurrent)
 
-#if !SQLITE_OS_WINRT
   { "HeapValidate",            (SYSCALL)HeapValidate,            0 },
-#else
-  { "HeapValidate",            (SYSCALL)0,                       0 },
-#endif
 
 #define osHeapValidate ((BOOL(WINAPI*)(HANDLE,DWORD, \
         LPCVOID))aSyscall[42].pCurrent)
 
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
+#if !SQLITE_OS_WINCE
   { "HeapCompact",             (SYSCALL)HeapCompact,             0 },
 #else
   { "HeapCompact",             (SYSCALL)0,                       0 },
@@ -48676,7 +49082,7 @@ static struct win_syscall {
 
 #define osLoadLibraryA ((HMODULE(WINAPI*)(LPCSTR))aSyscall[44].pCurrent)
 
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE) && \
+#if defined(SQLITE_WIN32_HAS_WIDE) && \
         !defined(SQLITE_OMIT_LOAD_EXTENSION)
   { "LoadLibraryW",            (SYSCALL)LoadLibraryW,            0 },
 #else
@@ -48685,15 +49091,11 @@ static struct win_syscall {
 
 #define osLoadLibraryW ((HMODULE(WINAPI*)(LPCWSTR))aSyscall[45].pCurrent)
 
-#if !SQLITE_OS_WINRT
   { "LocalFree",               (SYSCALL)LocalFree,               0 },
-#else
-  { "LocalFree",               (SYSCALL)0,                       0 },
-#endif
 
 #define osLocalFree ((HLOCAL(WINAPI*)(HLOCAL))aSyscall[46].pCurrent)
 
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
+#if !SQLITE_OS_WINCE
   { "LockFile",                (SYSCALL)LockFile,                0 },
 #else
   { "LockFile",                (SYSCALL)0,                       0 },
@@ -48715,8 +49117,7 @@ static struct win_syscall {
         LPOVERLAPPED))aSyscall[48].pCurrent)
 #endif
 
-#if SQLITE_OS_WINCE || (!SQLITE_OS_WINRT && \
-        (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0))
+#if SQLITE_OS_WINCE || !defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0
   { "MapViewOfFile",           (SYSCALL)MapViewOfFile,           0 },
 #else
   { "MapViewOfFile",           (SYSCALL)0,                       0 },
@@ -48744,20 +49145,12 @@ static struct win_syscall {
 
 #define osSetEndOfFile ((BOOL(WINAPI*)(HANDLE))aSyscall[53].pCurrent)
 
-#if !SQLITE_OS_WINRT
   { "SetFilePointer",          (SYSCALL)SetFilePointer,          0 },
-#else
-  { "SetFilePointer",          (SYSCALL)0,                       0 },
-#endif
 
 #define osSetFilePointer ((DWORD(WINAPI*)(HANDLE,LONG,PLONG, \
         DWORD))aSyscall[54].pCurrent)
 
-#if !SQLITE_OS_WINRT
   { "Sleep",                   (SYSCALL)Sleep,                   0 },
-#else
-  { "Sleep",                   (SYSCALL)0,                       0 },
-#endif
 
 #define osSleep ((VOID(WINAPI*)(DWORD))aSyscall[55].pCurrent)
 
@@ -48766,7 +49159,7 @@ static struct win_syscall {
 #define osSystemTimeToFileTime ((BOOL(WINAPI*)(const SYSTEMTIME*, \
         LPFILETIME))aSyscall[56].pCurrent)
 
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
+#if !SQLITE_OS_WINCE
   { "UnlockFile",              (SYSCALL)UnlockFile,              0 },
 #else
   { "UnlockFile",              (SYSCALL)0,                       0 },
@@ -48804,15 +49197,6 @@ static struct win_syscall {
 #define osWriteFile ((BOOL(WINAPI*)(HANDLE,LPCVOID,DWORD,LPDWORD, \
         LPOVERLAPPED))aSyscall[61].pCurrent)
 
-#if SQLITE_OS_WINRT
-  { "CreateEventExW",          (SYSCALL)CreateEventExW,          0 },
-#else
-  { "CreateEventExW",          (SYSCALL)0,                       0 },
-#endif
-
-#define osCreateEventExW ((HANDLE(WINAPI*)(LPSECURITY_ATTRIBUTES,LPCWSTR, \
-        DWORD,DWORD))aSyscall[62].pCurrent)
-
 /*
 ** For WaitForSingleObject(), MSDN says:
 **
@@ -48822,7 +49206,7 @@ static struct win_syscall {
   { "WaitForSingleObject",     (SYSCALL)WaitForSingleObject,     0 },
 
 #define osWaitForSingleObject ((DWORD(WINAPI*)(HANDLE, \
-        DWORD))aSyscall[63].pCurrent)
+        DWORD))aSyscall[62].pCurrent)
 
 #if !SQLITE_OS_WINCE
   { "WaitForSingleObjectEx",   (SYSCALL)WaitForSingleObjectEx,   0 },
@@ -48831,69 +49215,12 @@ static struct win_syscall {
 #endif
 
 #define osWaitForSingleObjectEx ((DWORD(WINAPI*)(HANDLE,DWORD, \
-        BOOL))aSyscall[64].pCurrent)
-
-#if SQLITE_OS_WINRT
-  { "SetFilePointerEx",        (SYSCALL)SetFilePointerEx,        0 },
-#else
-  { "SetFilePointerEx",        (SYSCALL)0,                       0 },
-#endif
-
-#define osSetFilePointerEx ((BOOL(WINAPI*)(HANDLE,LARGE_INTEGER, \
-        PLARGE_INTEGER,DWORD))aSyscall[65].pCurrent)
+        BOOL))aSyscall[63].pCurrent)
 
-#if SQLITE_OS_WINRT
-  { "GetFileInformationByHandleEx", (SYSCALL)GetFileInformationByHandleEx, 0 },
-#else
-  { "GetFileInformationByHandleEx", (SYSCALL)0,                  0 },
-#endif
-
-#define osGetFileInformationByHandleEx ((BOOL(WINAPI*)(HANDLE, \
-        FILE_INFO_BY_HANDLE_CLASS,LPVOID,DWORD))aSyscall[66].pCurrent)
-
-#if SQLITE_OS_WINRT && (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
-  { "MapViewOfFileFromApp",    (SYSCALL)MapViewOfFileFromApp,    0 },
-#else
-  { "MapViewOfFileFromApp",    (SYSCALL)0,                       0 },
-#endif
-
-#define osMapViewOfFileFromApp ((LPVOID(WINAPI*)(HANDLE,ULONG,ULONG64, \
-        SIZE_T))aSyscall[67].pCurrent)
-
-#if SQLITE_OS_WINRT
-  { "CreateFile2",             (SYSCALL)CreateFile2,             0 },
-#else
-  { "CreateFile2",             (SYSCALL)0,                       0 },
-#endif
-
-#define osCreateFile2 ((HANDLE(WINAPI*)(LPCWSTR,DWORD,DWORD,DWORD, \
-        LPCREATEFILE2_EXTENDED_PARAMETERS))aSyscall[68].pCurrent)
-
-#if SQLITE_OS_WINRT && !defined(SQLITE_OMIT_LOAD_EXTENSION)
-  { "LoadPackagedLibrary",     (SYSCALL)LoadPackagedLibrary,     0 },
-#else
-  { "LoadPackagedLibrary",     (SYSCALL)0,                       0 },
-#endif
-
-#define osLoadPackagedLibrary ((HMODULE(WINAPI*)(LPCWSTR, \
-        DWORD))aSyscall[69].pCurrent)
-
-#if SQLITE_OS_WINRT
-  { "GetTickCount64",          (SYSCALL)GetTickCount64,          0 },
-#else
-  { "GetTickCount64",          (SYSCALL)0,                       0 },
-#endif
-
-#define osGetTickCount64 ((ULONGLONG(WINAPI*)(VOID))aSyscall[70].pCurrent)
-
-#if SQLITE_OS_WINRT
   { "GetNativeSystemInfo",     (SYSCALL)GetNativeSystemInfo,     0 },
-#else
-  { "GetNativeSystemInfo",     (SYSCALL)0,                       0 },
-#endif
 
 #define osGetNativeSystemInfo ((VOID(WINAPI*)( \
-        LPSYSTEM_INFO))aSyscall[71].pCurrent)
+        LPSYSTEM_INFO))aSyscall[64].pCurrent)
 
 #if defined(SQLITE_WIN32_HAS_ANSI)
   { "OutputDebugStringA",      (SYSCALL)OutputDebugStringA,      0 },
@@ -48901,7 +49228,7 @@ static struct win_syscall {
   { "OutputDebugStringA",      (SYSCALL)0,                       0 },
 #endif
 
-#define osOutputDebugStringA ((VOID(WINAPI*)(LPCSTR))aSyscall[72].pCurrent)
+#define osOutputDebugStringA ((VOID(WINAPI*)(LPCSTR))aSyscall[65].pCurrent)
 
 #if defined(SQLITE_WIN32_HAS_WIDE)
   { "OutputDebugStringW",      (SYSCALL)OutputDebugStringW,      0 },
@@ -48909,20 +49236,11 @@ static struct win_syscall {
   { "OutputDebugStringW",      (SYSCALL)0,                       0 },
 #endif
 
-#define osOutputDebugStringW ((VOID(WINAPI*)(LPCWSTR))aSyscall[73].pCurrent)
+#define osOutputDebugStringW ((VOID(WINAPI*)(LPCWSTR))aSyscall[66].pCurrent)
 
   { "GetProcessHeap",          (SYSCALL)GetProcessHeap,          0 },
 
-#define osGetProcessHeap ((HANDLE(WINAPI*)(VOID))aSyscall[74].pCurrent)
-
-#if SQLITE_OS_WINRT && (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
-  { "CreateFileMappingFromApp", (SYSCALL)CreateFileMappingFromApp, 0 },
-#else
-  { "CreateFileMappingFromApp", (SYSCALL)0,                      0 },
-#endif
-
-#define osCreateFileMappingFromApp ((HANDLE(WINAPI*)(HANDLE, \
-        LPSECURITY_ATTRIBUTES,ULONG,ULONG64,LPCWSTR))aSyscall[75].pCurrent)
+#define osGetProcessHeap ((HANDLE(WINAPI*)(VOID))aSyscall[67].pCurrent)
 
 /*
 ** NOTE: On some sub-platforms, the InterlockedCompareExchange "function"
@@ -48937,25 +49255,25 @@ static struct win_syscall {
   { "InterlockedCompareExchange", (SYSCALL)InterlockedCompareExchange, 0 },
 
 #define osInterlockedCompareExchange ((LONG(WINAPI*)(LONG \
-        SQLITE_WIN32_VOLATILE*, LONG,LONG))aSyscall[76].pCurrent)
+        SQLITE_WIN32_VOLATILE*, LONG,LONG))aSyscall[68].pCurrent)
 #endif /* defined(InterlockedCompareExchange) */
 
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
+#if !SQLITE_OS_WINCE && SQLITE_WIN32_USE_UUID
   { "UuidCreate",               (SYSCALL)UuidCreate,             0 },
 #else
   { "UuidCreate",               (SYSCALL)0,                      0 },
 #endif
 
-#define osUuidCreate ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[77].pCurrent)
+#define osUuidCreate ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[69].pCurrent)
 
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
+#if !SQLITE_OS_WINCE && SQLITE_WIN32_USE_UUID
   { "UuidCreateSequential",     (SYSCALL)UuidCreateSequential,   0 },
 #else
   { "UuidCreateSequential",     (SYSCALL)0,                      0 },
 #endif
 
 #define osUuidCreateSequential \
-        ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[78].pCurrent)
+        ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[70].pCurrent)
 
 #if !defined(SQLITE_NO_SYNC) && SQLITE_MAX_MMAP_SIZE>0
   { "FlushViewOfFile",          (SYSCALL)FlushViewOfFile,        0 },
@@ -48964,7 +49282,7 @@ static struct win_syscall {
 #endif
 
 #define osFlushViewOfFile \
-        ((BOOL(WINAPI*)(LPCVOID,SIZE_T))aSyscall[79].pCurrent)
+        ((BOOL(WINAPI*)(LPCVOID,SIZE_T))aSyscall[71].pCurrent)
 
 /*
 ** If SQLITE_ENABLE_SETLK_TIMEOUT is defined, we require CreateEvent()
@@ -48981,7 +49299,7 @@ static struct win_syscall {
 
 #define osCreateEvent ( \
     (HANDLE(WINAPI*) (LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCSTR)) \
-    aSyscall[80].pCurrent \
+    aSyscall[72].pCurrent \
 )
 
 /*
@@ -48998,7 +49316,7 @@ static struct win_syscall {
   { "CancelIo",                 (SYSCALL)0,                      0 },
 #endif
 
-#define osCancelIo ((BOOL(WINAPI*)(HANDLE))aSyscall[81].pCurrent)
+#define osCancelIo ((BOOL(WINAPI*)(HANDLE))aSyscall[73].pCurrent)
 
 #if defined(SQLITE_WIN32_HAS_WIDE) && defined(_WIN32)
   { "GetModuleHandleW",         (SYSCALL)GetModuleHandleW,       0 },
@@ -49006,7 +49324,7 @@ static struct win_syscall {
   { "GetModuleHandleW",         (SYSCALL)0,                      0 },
 #endif
 
-#define osGetModuleHandleW ((HMODULE(WINAPI*)(LPCWSTR))aSyscall[82].pCurrent)
+#define osGetModuleHandleW ((HMODULE(WINAPI*)(LPCWSTR))aSyscall[74].pCurrent)
 
 #ifndef _WIN32
   { "getenv",                   (SYSCALL)getenv,                 0 },
@@ -49014,7 +49332,7 @@ static struct win_syscall {
   { "getenv",                   (SYSCALL)0,                      0 },
 #endif
 
-#define osGetenv ((const char *(*)(const char *))aSyscall[83].pCurrent)
+#define osGetenv ((const char *(*)(const char *))aSyscall[75].pCurrent)
 
 #ifndef _WIN32
   { "getcwd",                   (SYSCALL)getcwd,                 0 },
@@ -49022,7 +49340,7 @@ static struct win_syscall {
   { "getcwd",                   (SYSCALL)0,                      0 },
 #endif
 
-#define osGetcwd ((char*(*)(char*,size_t))aSyscall[84].pCurrent)
+#define osGetcwd ((char*(*)(char*,size_t))aSyscall[76].pCurrent)
 
 #ifndef _WIN32
   { "readlink",                 (SYSCALL)readlink,               0 },
@@ -49030,7 +49348,7 @@ static struct win_syscall {
   { "readlink",                 (SYSCALL)0,                      0 },
 #endif
 
-#define osReadlink ((ssize_t(*)(const char*,char*,size_t))aSyscall[85].pCurrent)
+#define osReadlink ((ssize_t(*)(const char*,char*,size_t))aSyscall[77].pCurrent)
 
 #ifndef _WIN32
   { "lstat",                    (SYSCALL)lstat,                  0 },
@@ -49038,7 +49356,7 @@ static struct win_syscall {
   { "lstat",                    (SYSCALL)0,                      0 },
 #endif
 
-#define osLstat ((int(*)(const char*,struct stat*))aSyscall[86].pCurrent)
+#define osLstat ((int(*)(const char*,struct stat*))aSyscall[78].pCurrent)
 
 #ifndef _WIN32
   { "__errno",                  (SYSCALL)__errno,                0 },
@@ -49046,7 +49364,7 @@ static struct win_syscall {
   { "__errno",                  (SYSCALL)0,                      0 },
 #endif
 
-#define osErrno (*((int*(*)(void))aSyscall[87].pCurrent)())
+#define osErrno (*((int*(*)(void))aSyscall[79].pCurrent)())
 
 #ifndef _WIN32
   { "cygwin_conv_path",         (SYSCALL)cygwin_conv_path,       0 },
@@ -49055,7 +49373,7 @@ static struct win_syscall {
 #endif
 
 #define osCygwin_conv_path ((size_t(*)(unsigned int, \
-    const void *, void *, size_t))aSyscall[88].pCurrent)
+    const void *, void *, size_t))aSyscall[80].pCurrent)
 
 }; /* End of the overrideable system calls */
 
@@ -49159,10 +49477,10 @@ SQLITE_API int sqlite3_win32_compact_heap(LPUINT pnLargest){
   hHeap = winMemGetHeap();
   assert( hHeap!=0 );
   assert( hHeap!=INVALID_HANDLE_VALUE );
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(hHeap, SQLITE_WIN32_HEAP_FLAGS, NULL) );
 #endif
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
+#if !SQLITE_OS_WINCE
   if( (nLargest=osHeapCompact(hHeap, SQLITE_WIN32_HEAP_FLAGS))==0 ){
     DWORD lastErrno = osGetLastError();
     if( lastErrno==NO_ERROR ){
@@ -49275,28 +49593,11 @@ SQLITE_API void sqlite3_win32_write_debug(const char *zBuf, int nBuf){
 }
 #endif /* _WIN32 */
 
-/*
-** The following routine suspends the current thread for at least ms
-** milliseconds.  This is equivalent to the Win32 Sleep() interface.
-*/
-#if SQLITE_OS_WINRT
-static HANDLE sleepObj = NULL;
-#endif
-
 SQLITE_API void sqlite3_win32_sleep(DWORD milliseconds){
-#if SQLITE_OS_WINRT
-  if ( sleepObj==NULL ){
-    sleepObj = osCreateEventExW(NULL, NULL, CREATE_EVENT_MANUAL_RESET,
-                                SYNCHRONIZE);
-  }
-  assert( sleepObj!=NULL );
-  osWaitForSingleObjectEx(sleepObj, milliseconds, FALSE);
-#else
   osSleep(milliseconds);
-#endif
 }
 
-#if SQLITE_MAX_WORKER_THREADS>0 && !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && \
+#if SQLITE_MAX_WORKER_THREADS>0 && !SQLITE_OS_WINCE && \
         SQLITE_THREADSAFE>0
 SQLITE_PRIVATE DWORD sqlite3Win32Wait(HANDLE hObject){
   DWORD rc;
@@ -49320,7 +49621,7 @@ SQLITE_PRIVATE DWORD sqlite3Win32Wait(HANDLE hObject){
 
 #if !SQLITE_WIN32_GETVERSIONEX
 # define osIsNT()  (1)
-#elif SQLITE_OS_WINCE || SQLITE_OS_WINRT || !defined(SQLITE_WIN32_HAS_ANSI)
+#elif SQLITE_OS_WINCE || !defined(SQLITE_WIN32_HAS_ANSI)
 # define osIsNT()  (1)
 #elif !defined(SQLITE_WIN32_HAS_WIDE)
 # define osIsNT()  (0)
@@ -49333,13 +49634,7 @@ SQLITE_PRIVATE DWORD sqlite3Win32Wait(HANDLE hObject){
 ** based on the NT kernel.
 */
 SQLITE_API int sqlite3_win32_is_nt(void){
-#if SQLITE_OS_WINRT
-  /*
-  ** NOTE: The WinRT sub-platform is always assumed to be based on the NT
-  **       kernel.
-  */
-  return 1;
-#elif SQLITE_WIN32_GETVERSIONEX
+#if SQLITE_WIN32_GETVERSIONEX
   if( osInterlockedCompareExchange(&sqlite3_os_type, 0, 0)==0 ){
 #if defined(SQLITE_WIN32_HAS_ANSI)
     OSVERSIONINFOA sInfo;
@@ -49381,7 +49676,7 @@ static void *winMemMalloc(int nBytes){
   hHeap = winMemGetHeap();
   assert( hHeap!=0 );
   assert( hHeap!=INVALID_HANDLE_VALUE );
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(hHeap, SQLITE_WIN32_HEAP_FLAGS, NULL) );
 #endif
   assert( nBytes>=0 );
@@ -49403,7 +49698,7 @@ static void winMemFree(void *pPrior){
   hHeap = winMemGetHeap();
   assert( hHeap!=0 );
   assert( hHeap!=INVALID_HANDLE_VALUE );
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(hHeap, SQLITE_WIN32_HEAP_FLAGS, pPrior) );
 #endif
   if( !pPrior ) return; /* Passing NULL to HeapFree is undefined. */
@@ -49424,7 +49719,7 @@ static void *winMemRealloc(void *pPrior, int nBytes){
   hHeap = winMemGetHeap();
   assert( hHeap!=0 );
   assert( hHeap!=INVALID_HANDLE_VALUE );
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(hHeap, SQLITE_WIN32_HEAP_FLAGS, pPrior) );
 #endif
   assert( nBytes>=0 );
@@ -49452,7 +49747,7 @@ static int winMemSize(void *p){
   hHeap = winMemGetHeap();
   assert( hHeap!=0 );
   assert( hHeap!=INVALID_HANDLE_VALUE );
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(hHeap, SQLITE_WIN32_HEAP_FLAGS, p) );
 #endif
   if( !p ) return 0;
@@ -49482,7 +49777,7 @@ static int winMemInit(void *pAppData){
   assert( pWinMemData->magic1==WINMEM_MAGIC1 );
   assert( pWinMemData->magic2==WINMEM_MAGIC2 );
 
-#if !SQLITE_OS_WINRT && SQLITE_WIN32_HEAP_CREATE
+#if SQLITE_WIN32_HEAP_CREATE
   if( !pWinMemData->hHeap ){
     DWORD dwInitialSize = SQLITE_WIN32_HEAP_INIT_SIZE;
     DWORD dwMaximumSize = (DWORD)sqlite3GlobalConfig.nHeap;
@@ -49515,7 +49810,7 @@ static int winMemInit(void *pAppData){
 #endif
   assert( pWinMemData->hHeap!=0 );
   assert( pWinMemData->hHeap!=INVALID_HANDLE_VALUE );
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(pWinMemData->hHeap, SQLITE_WIN32_HEAP_FLAGS, NULL) );
 #endif
   return SQLITE_OK;
@@ -49533,7 +49828,7 @@ static void winMemShutdown(void *pAppData){
 
   if( pWinMemData->hHeap ){
     assert( pWinMemData->hHeap!=INVALID_HANDLE_VALUE );
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
     assert( osHeapValidate(pWinMemData->hHeap, SQLITE_WIN32_HEAP_FLAGS, NULL) );
 #endif
     if( pWinMemData->bOwned ){
@@ -49914,17 +50209,6 @@ static int winGetLastErrorMsg(DWORD lastErrno, int nBuf, char *zBuf){
   char *zOut = 0;
 
   if( osIsNT() ){
-#if SQLITE_OS_WINRT
-    WCHAR zTempWide[SQLITE_WIN32_MAX_ERRMSG_CHARS+1];
-    dwLen = osFormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM |
-                             FORMAT_MESSAGE_IGNORE_INSERTS,
-                             NULL,
-                             lastErrno,
-                             0,
-                             zTempWide,
-                             SQLITE_WIN32_MAX_ERRMSG_CHARS,
-                             0);
-#else
     LPWSTR zTempWide = NULL;
     dwLen = osFormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER |
                              FORMAT_MESSAGE_FROM_SYSTEM |
@@ -49935,16 +50219,13 @@ static int winGetLastErrorMsg(DWORD lastErrno, int nBuf, char *zBuf){
                              (LPWSTR) &zTempWide,
                              0,
                              0);
-#endif
     if( dwLen > 0 ){
       /* allocate a buffer and convert to UTF8 */
       sqlite3BeginBenignMalloc();
       zOut = winUnicodeToUtf8(zTempWide);
       sqlite3EndBenignMalloc();
-#if !SQLITE_OS_WINRT
       /* free the system buffer allocated by FormatMessage */
       osLocalFree(zTempWide);
-#endif
     }
   }
 #ifdef SQLITE_WIN32_HAS_ANSI
@@ -50605,7 +50886,6 @@ static int winHandleUnlock(HANDLE h, int iOff, int nByte){
 static int winHandleSeek(HANDLE h, sqlite3_int64 iOffset){
   int rc = SQLITE_OK;             /* Return value */
 
-#if !SQLITE_OS_WINRT
   LONG upperBits;                 /* Most sig. 32 bits of new offset */
   LONG lowerBits;                 /* Least sig. 32 bits of new offset */
   DWORD dwRet;                    /* Value returned by SetFilePointer() */
@@ -50627,20 +50907,7 @@ static int winHandleSeek(HANDLE h, sqlite3_int64 iOffset){
       rc = SQLITE_IOERR_SEEK;
     }
   }
-#else
-  /* This implementation works for WinRT. */
-  LARGE_INTEGER x;                /* The new offset */
-  BOOL bRet;                      /* Value returned by SetFilePointerEx() */
-
-  x.QuadPart = iOffset;
-  bRet = osSetFilePointerEx(h, x, 0, FILE_BEGIN);
-
-  if(!bRet){
-    rc = SQLITE_IOERR_SEEK;
-  }
-#endif
-
-  OSTRACE(("SEEK file=%p, offset=%lld rc=%s\n", h, iOffset, sqlite3ErrName(rc)));
+  OSTRACE(("SEEK file=%p, offset=%lld rc=%s\n", h, iOffset,sqlite3ErrName(rc)));
   return rc;
 }
 
@@ -50941,17 +51208,6 @@ static int winHandleTruncate(HANDLE h, sqlite3_int64 nByte){
 */
 static int winHandleSize(HANDLE h, sqlite3_int64 *pnByte){
   int rc = SQLITE_OK;
-
-#if SQLITE_OS_WINRT
-  FILE_STANDARD_INFO info;
-  BOOL b;
-  b = osGetFileInformationByHandleEx(h, FileStandardInfo, &info, sizeof(info));
-  if( b ){
-    *pnByte = info.EndOfFile.QuadPart;
-  }else{
-    rc = SQLITE_IOERR_FSTAT;
-  }
-#else
   DWORD upperBits = 0;
   DWORD lowerBits = 0;
 
@@ -50961,8 +51217,6 @@ static int winHandleSize(HANDLE h, sqlite3_int64 *pnByte){
   if( lowerBits==INVALID_FILE_SIZE && osGetLastError()!=NO_ERROR ){
     rc = SQLITE_IOERR_FSTAT;
   }
-#endif
-
   return rc;
 }
 
@@ -51161,20 +51415,6 @@ static int winFileSize(sqlite3_file *id, sqlite3_int64 *pSize){
   assert( pSize!=0 );
   SimulateIOError(return SQLITE_IOERR_FSTAT);
   OSTRACE(("SIZE file=%p, pSize=%p\n", pFile->h, pSize));
-
-#if SQLITE_OS_WINRT
-  {
-    FILE_STANDARD_INFO info;
-    if( osGetFileInformationByHandleEx(pFile->h, FileStandardInfo,
-                                     &info, sizeof(info)) ){
-      *pSize = info.EndOfFile.QuadPart;
-    }else{
-      pFile->lastErrno = osGetLastError();
-      rc = winLogError(SQLITE_IOERR_FSTAT, pFile->lastErrno,
-                       "winFileSize", pFile->zPath);
-    }
-  }
-#else
   {
     DWORD upperBits;
     DWORD lowerBits;
@@ -51189,7 +51429,6 @@ static int winFileSize(sqlite3_file *id, sqlite3_int64 *pSize){
                        "winFileSize", pFile->zPath);
     }
   }
-#endif
   OSTRACE(("SIZE file=%p, pSize=%p, *pSize=%lld, rc=%s\n",
            pFile->h, pSize, *pSize, sqlite3ErrName(rc)));
   return rc;
@@ -52151,20 +52390,6 @@ static int winHandleOpen(
   ** TODO: retry-on-ioerr.
   */
   if( osIsNT() ){
-#if SQLITE_OS_WINRT
-    CREATEFILE2_EXTENDED_PARAMETERS extendedParameters;
-    memset(&extendedParameters, 0, sizeof(extendedParameters));
-    extendedParameters.dwSize = sizeof(extendedParameters);
-    extendedParameters.dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
-    extendedParameters.dwFileFlags = flag_overlapped;
-    extendedParameters.dwSecurityQosFlags = SECURITY_ANONYMOUS;
-    h = osCreateFile2((LPCWSTR)zConverted,
-        (GENERIC_READ | (bReadonly ? 0 : GENERIC_WRITE)),/* dwDesiredAccess */
-        FILE_SHARE_READ | FILE_SHARE_WRITE,      /* dwShareMode */
-        OPEN_ALWAYS,                             /* dwCreationDisposition */
-        &extendedParameters
-    );
-#else
     h = osCreateFileW((LPCWSTR)zConverted,         /* lpFileName */
         (GENERIC_READ | (bReadonly ? 0 : GENERIC_WRITE)),  /* dwDesiredAccess */
         FILE_SHARE_READ | FILE_SHARE_WRITE,        /* dwShareMode */
@@ -52173,7 +52398,6 @@ static int winHandleOpen(
         FILE_ATTRIBUTE_NORMAL|flag_overlapped,
         NULL
     );
-#endif
   }else{
     /* Due to pre-processor directives earlier in this file,
     ** SQLITE_WIN32_HAS_ANSI is always defined if osIsNT() is false. */
@@ -52641,9 +52865,7 @@ static int winShmMap(
       HANDLE hMap = NULL;         /* file-mapping handle */
       void *pMap = 0;             /* Mapped memory region */
 
-#if SQLITE_OS_WINRT
-      hMap = osCreateFileMappingFromApp(hShared, NULL, protect, nByte, NULL);
-#elif defined(SQLITE_WIN32_HAS_WIDE)
+#if defined(SQLITE_WIN32_HAS_WIDE)
       hMap = osCreateFileMappingW(hShared, NULL, protect, 0, nByte, NULL);
 #elif defined(SQLITE_WIN32_HAS_ANSI) && SQLITE_WIN32_CREATEFILEMAPPINGA
       hMap = osCreateFileMappingA(hShared, NULL, protect, 0, nByte, NULL);
@@ -52655,15 +52877,9 @@ static int winShmMap(
       if( hMap ){
         int iOffset = pShmNode->nRegion*szRegion;
         int iOffsetShift = iOffset % winSysInfo.dwAllocationGranularity;
-#if SQLITE_OS_WINRT
-        pMap = osMapViewOfFileFromApp(hMap, flags,
-            iOffset - iOffsetShift, szRegion + iOffsetShift
-        );
-#else
         pMap = osMapViewOfFile(hMap, flags,
             0, iOffset - iOffsetShift, szRegion + iOffsetShift
         );
-#endif
         OSTRACE(("SHM-MAP-MAP pid=%lu, region=%d, offset=%d, size=%d, rc=%s\n",
                  osGetCurrentProcessId(), pShmNode->nRegion, iOffset,
                  szRegion, pMap ? "ok" : "failed"));
@@ -52796,9 +53012,7 @@ static int winMapfile(winFile *pFd, sqlite3_int64 nByte){
       flags |= FILE_MAP_WRITE;
     }
 #endif
-#if SQLITE_OS_WINRT
-    pFd->hMap = osCreateFileMappingFromApp(pFd->h, NULL, protect, nMap, NULL);
-#elif defined(SQLITE_WIN32_HAS_WIDE)
+#if defined(SQLITE_WIN32_HAS_WIDE)
     pFd->hMap = osCreateFileMappingW(pFd->h, NULL, protect,
                                 (DWORD)((nMap>>32) & 0xffffffff),
                                 (DWORD)(nMap & 0xffffffff), NULL);
@@ -52818,11 +53032,7 @@ static int winMapfile(winFile *pFd, sqlite3_int64 nByte){
     }
     assert( (nMap % winSysInfo.dwPageSize)==0 );
     assert( sizeof(SIZE_T)==sizeof(sqlite3_int64) || nMap<=0xffffffff );
-#if SQLITE_OS_WINRT
-    pNew = osMapViewOfFileFromApp(pFd->hMap, flags, 0, (SIZE_T)nMap);
-#else
     pNew = osMapViewOfFile(pFd->hMap, flags, 0, 0, (SIZE_T)nMap);
-#endif
     if( pNew==NULL ){
       osCloseHandle(pFd->hMap);
       pFd->hMap = NULL;
@@ -53157,7 +53367,6 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){
   }
 #endif
 
-#if !SQLITE_OS_WINRT && defined(_WIN32)
   else if( osIsNT() ){
     char *zMulti;
     LPWSTR zWidePath = sqlite3MallocZero( nMax*sizeof(WCHAR) );
@@ -53211,7 +53420,6 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){
     }
   }
 #endif /* SQLITE_WIN32_HAS_ANSI */
-#endif /* !SQLITE_OS_WINRT */
 
   /*
   ** Check to make sure the temporary directory ends with an appropriate
@@ -53386,13 +53594,6 @@ static int winOpen(
   memset(pFile, 0, sizeof(winFile));
   pFile->h = INVALID_HANDLE_VALUE;
 
-#if SQLITE_OS_WINRT
-  if( !zUtf8Name && !sqlite3_temp_directory ){
-    sqlite3_log(SQLITE_ERROR,
-        "sqlite3_temp_directory variable should be set for WinRT");
-  }
-#endif
-
   /* If the second argument to this function is NULL, generate a
   ** temporary file name to use
   */
@@ -53475,31 +53676,6 @@ static int winOpen(
 #endif
 
   if( osIsNT() ){
-#if SQLITE_OS_WINRT
-    CREATEFILE2_EXTENDED_PARAMETERS extendedParameters;
-    extendedParameters.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS);
-    extendedParameters.dwFileAttributes =
-            dwFlagsAndAttributes & FILE_ATTRIBUTE_MASK;
-    extendedParameters.dwFileFlags = dwFlagsAndAttributes & FILE_FLAG_MASK;
-    extendedParameters.dwSecurityQosFlags = SECURITY_ANONYMOUS;
-    extendedParameters.lpSecurityAttributes = NULL;
-    extendedParameters.hTemplateFile = NULL;
-    do{
-      h = osCreateFile2((LPCWSTR)zConverted,
-                        dwDesiredAccess,
-                        dwShareMode,
-                        dwCreationDisposition,
-                        &extendedParameters);
-      if( h!=INVALID_HANDLE_VALUE ) break;
-      if( isReadWrite ){
-        int rc2;
-        sqlite3BeginBenignMalloc();
-        rc2 = winAccess(pVfs, zUtf8Name, SQLITE_ACCESS_READ|NORETRY, &isRO);
-        sqlite3EndBenignMalloc();
-        if( rc2==SQLITE_OK && isRO ) break;
-      }
-    }while( winRetryIoerr(&cnt, &lastErrno) );
-#else
     do{
       h = osCreateFileW((LPCWSTR)zConverted,
                         dwDesiredAccess,
@@ -53516,7 +53692,6 @@ static int winOpen(
         if( rc2==SQLITE_OK && isRO ) break;
       }
     }while( winRetryIoerr(&cnt, &lastErrno) );
-#endif
   }
 #ifdef SQLITE_WIN32_HAS_ANSI
   else{
@@ -53653,25 +53828,7 @@ static int winDelete(
   }
   if( osIsNT() ){
     do {
-#if SQLITE_OS_WINRT
-      WIN32_FILE_ATTRIBUTE_DATA sAttrData;
-      memset(&sAttrData, 0, sizeof(sAttrData));
-      if ( osGetFileAttributesExW(zConverted, GetFileExInfoStandard,
-                                  &sAttrData) ){
-        attr = sAttrData.dwFileAttributes;
-      }else{
-        lastErrno = osGetLastError();
-        if( lastErrno==ERROR_FILE_NOT_FOUND
-         || lastErrno==ERROR_PATH_NOT_FOUND ){
-          rc = SQLITE_IOERR_DELETE_NOENT; /* Already gone? */
-        }else{
-          rc = SQLITE_ERROR;
-        }
-        break;
-      }
-#else
       attr = osGetFileAttributesW(zConverted);
-#endif
       if ( attr==INVALID_FILE_ATTRIBUTES ){
         lastErrno = osGetLastError();
         if( lastErrno==ERROR_FILE_NOT_FOUND
@@ -53794,6 +53951,7 @@ static int winAccess(
         attr = sAttrData.dwFileAttributes;
       }
     }else{
+      if( noRetry ) lastErrno = osGetLastError();
       winLogIoerr(cnt, __LINE__);
       if( lastErrno!=ERROR_FILE_NOT_FOUND && lastErrno!=ERROR_PATH_NOT_FOUND ){
         sqlite3_free(zConverted);
@@ -53962,7 +54120,7 @@ static int winFullPathnameNoMutex(
   int nFull,                    /* Size of output buffer in bytes */
   char *zFull                   /* Output buffer */
 ){
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
+#if !SQLITE_OS_WINCE
   int nByte;
   void *zConverted;
   char *zOut;
@@ -54051,7 +54209,7 @@ static int winFullPathnameNoMutex(
   }
 #endif /* __CYGWIN__ */
 
-#if (SQLITE_OS_WINCE || SQLITE_OS_WINRT) && defined(_WIN32)
+#if SQLITE_OS_WINCE && defined(_WIN32)
   SimulateIOError( return SQLITE_ERROR );
   /* WinCE has no concept of a relative pathname, or so I am told. */
   /* WinRT has no way to convert a relative path to an absolute one. */
@@ -54070,7 +54228,7 @@ static int winFullPathnameNoMutex(
   return SQLITE_OK;
 #endif
 
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
+#if !SQLITE_OS_WINCE
 #if defined(_WIN32)
   /* It's odd to simulate an io-error here, but really this is just
   ** using the io-error infrastructure to test that SQLite handles this
@@ -54202,11 +54360,7 @@ static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){
     return 0;
   }
   if( osIsNT() ){
-#if SQLITE_OS_WINRT
-    h = osLoadPackagedLibrary((LPCWSTR)zConverted, 0);
-#else
     h = osLoadLibraryW((LPCWSTR)zConverted);
-#endif
   }
 #ifdef SQLITE_WIN32_HAS_ANSI
   else{
@@ -54288,23 +54442,16 @@ static int winRandomness(sqlite3_vfs *pVfs, int nBuf, char *zBuf){
     DWORD pid = osGetCurrentProcessId();
     xorMemory(&e, (unsigned char*)&pid, sizeof(DWORD));
   }
-#if SQLITE_OS_WINRT
-  {
-    ULONGLONG cnt = osGetTickCount64();
-    xorMemory(&e, (unsigned char*)&cnt, sizeof(ULONGLONG));
-  }
-#else
   {
     DWORD cnt = osGetTickCount();
     xorMemory(&e, (unsigned char*)&cnt, sizeof(DWORD));
   }
-#endif /* SQLITE_OS_WINRT */
   {
     LARGE_INTEGER i;
     osQueryPerformanceCounter(&i);
     xorMemory(&e, (unsigned char*)&i, sizeof(LARGE_INTEGER));
   }
-#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
+#if !SQLITE_OS_WINCE && SQLITE_WIN32_USE_UUID
   {
     UUID id;
     memset(&id, 0, sizeof(UUID));
@@ -54314,7 +54461,7 @@ static int winRandomness(sqlite3_vfs *pVfs, int nBuf, char *zBuf){
     osUuidCreateSequential(&id);
     xorMemory(&e, (unsigned char*)&id, sizeof(UUID));
   }
-#endif /* !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID */
+#endif /* !SQLITE_OS_WINCE && SQLITE_WIN32_USE_UUID */
   return e.nXor>nBuf ? nBuf : e.nXor;
 #endif /* defined(SQLITE_TEST) || defined(SQLITE_OMIT_RANDOMNESS) */
 }
@@ -54545,15 +54692,16 @@ SQLITE_API int sqlite3_os_init(void){
 
   /* Double-check that the aSyscall[] array has been constructed
   ** correctly.  See ticket [bb3a86e890c8e96ab] */
-  assert( ArraySize(aSyscall)==89 );
+  assert( ArraySize(aSyscall)==81 );
+  assert( strcmp(aSyscall[0].zName,"AreFileApisANSI")==0 );
+  assert( strcmp(aSyscall[20].zName,"GetFileAttributesA")==0 );
+  assert( strcmp(aSyscall[40].zName,"HeapReAlloc")==0 );
+  assert( strcmp(aSyscall[60].zName,"WideCharToMultiByte")==0 );
+  assert( strcmp(aSyscall[80].zName,"cygwin_conv_path")==0 );
 
   /* get memory map allocation granularity */
   memset(&winSysInfo, 0, sizeof(SYSTEM_INFO));
-#if SQLITE_OS_WINRT
-  osGetNativeSystemInfo(&winSysInfo);
-#else
   osGetSystemInfo(&winSysInfo);
-#endif
   assert( winSysInfo.dwAllocationGranularity>0 );
   assert( winSysInfo.dwPageSize>0 );
 
@@ -54577,17 +54725,9 @@ SQLITE_API int sqlite3_os_init(void){
 }
 
 SQLITE_API int sqlite3_os_end(void){
-#if SQLITE_OS_WINRT
-  if( sleepObj!=NULL ){
-    osCloseHandle(sleepObj);
-    sleepObj = NULL;
-  }
-#endif
-
 #ifndef SQLITE_OMIT_WAL
   winBigLock = 0;
 #endif
-
   return SQLITE_OK;
 }
 
@@ -59736,6 +59876,8 @@ SQLITE_PRIVATE int sqlite3PagerDirectReadOk(Pager *pPager, Pgno pgno){
     (void)sqlite3WalFindFrame(pPager->pWal, pgno, &iRead);
     if( iRead ) return 0;  /* Case (4) */
   }
+#else
+  UNUSED_PARAMETER(pgno);
 #endif
   assert( pPager->fd->pMethods->xDeviceCharacteristics!=0 );
   if( (pPager->fd->pMethods->xDeviceCharacteristics(pPager->fd)
@@ -60156,17 +60298,17 @@ static int jrnlBufferSize(Pager *pPager){
 */
 #ifdef SQLITE_CHECK_PAGES
 /*
-** Return a 32-bit hash of the page data for pPage.
+** Return a 64-bit hash of the page data for pPage.
 */
-static u32 pager_datahash(int nByte, unsigned char *pData){
-  u32 hash = 0;
+static u64 pager_datahash(int nByte, unsigned char *pData){
+  u64 hash = 0;
   int i;
   for(i=0; i<nByte; i++){
     hash = (hash*1039) + pData[i];
   }
   return hash;
 }
-static u32 pager_pagehash(PgHdr *pPage){
+static u64 pager_pagehash(PgHdr *pPage){
   return pager_datahash(pPage->pPager->pageSize, (unsigned char *)pPage->pData);
 }
 static void pager_set_pagehash(PgHdr *pPage){
@@ -63115,6 +63257,8 @@ SQLITE_PRIVATE int sqlite3PagerClose(Pager *pPager, sqlite3 *db){
     sqlite3WalClose(pPager->pWal, db, pPager->walSyncFlags, pPager->pageSize,a);
     pPager->pWal = 0;
   }
+#else
+  UNUSED_PARAMETER(db);
 #endif
   pager_reset(pPager);
   if( MEMDB ){
@@ -69010,68 +69154,82 @@ static int walCheckpoint(
      && (rc = walBusyLock(pWal,xBusy,pBusyArg,WAL_READ_LOCK(0),1))==SQLITE_OK
     ){
       u32 nBackfill = pInfo->nBackfill;
-      pInfo->nBackfillAttempted = mxSafeFrame; SEH_INJECT_FAULT;
-
-      /* Sync the WAL to disk */
-      rc = sqlite3OsSync(pWal->pWalFd, CKPT_SYNC_FLAGS(sync_flags));
-
-      /* If the database may grow as a result of this checkpoint, hint
-      ** about the eventual size of the db file to the VFS layer.
-      */
-      if( rc==SQLITE_OK ){
-        i64 nReq = ((i64)mxPage * szPage);
-        i64 nSize;                    /* Current size of database file */
-        sqlite3OsFileControl(pWal->pDbFd, SQLITE_FCNTL_CKPT_START, 0);
-        rc = sqlite3OsFileSize(pWal->pDbFd, &nSize);
-        if( rc==SQLITE_OK && nSize<nReq ){
-          if( (nSize+65536+(i64)pWal->hdr.mxFrame*szPage)<nReq ){
-            /* If the size of the final database is larger than the current
-            ** database plus the amount of data in the wal file, plus the
-            ** maximum size of the pending-byte page (65536 bytes), then
-            ** must be corruption somewhere.  */
-            rc = SQLITE_CORRUPT_BKPT;
-          }else{
-            sqlite3OsFileControlHint(pWal->pDbFd, SQLITE_FCNTL_SIZE_HINT,&nReq);
+      WalIndexHdr *pLive = (WalIndexHdr*)walIndexHdr(pWal);
+
+      /* Now that read-lock slot 0 is locked, check that the wal has not been
+      ** wrapped since the header was read for this checkpoint. If it was, then
+      ** there was no work to do anyway.  In this case the
+      ** (pInfo->nBackfill<pWal->hdr.mxFrame) test above only passed because
+      ** pInfo->nBackfill had already been set to 0 by the writer that wrapped
+      ** the wal file. It would also be dangerous to proceed, as there may be
+      ** fewer than pWal->hdr.mxFrame valid frames in the wal file.  */
+      int bChg = memcmp(pLive->aSalt, pWal->hdr.aSalt, sizeof(pWal->hdr.aSalt));
+      if( 0==bChg ){
+        pInfo->nBackfillAttempted = mxSafeFrame; SEH_INJECT_FAULT;
+
+        /* Sync the WAL to disk */
+        rc = sqlite3OsSync(pWal->pWalFd, CKPT_SYNC_FLAGS(sync_flags));
+
+        /* If the database may grow as a result of this checkpoint, hint
+        ** about the eventual size of the db file to the VFS layer.
+        */
+        if( rc==SQLITE_OK ){
+          i64 nReq = ((i64)mxPage * szPage);
+          i64 nSize;                    /* Current size of database file */
+          sqlite3OsFileControl(pWal->pDbFd, SQLITE_FCNTL_CKPT_START, 0);
+          rc = sqlite3OsFileSize(pWal->pDbFd, &nSize);
+          if( rc==SQLITE_OK && nSize<nReq ){
+            if( (nSize+65536+(i64)pWal->hdr.mxFrame*szPage)<nReq ){
+              /* If the size of the final database is larger than the current
+              ** database plus the amount of data in the wal file, plus the
+              ** maximum size of the pending-byte page (65536 bytes), then
+              ** must be corruption somewhere.  */
+              rc = SQLITE_CORRUPT_BKPT;
+            }else{
+              sqlite3OsFileControlHint(
+                  pWal->pDbFd, SQLITE_FCNTL_SIZE_HINT, &nReq);
+            }
           }
-        }
-
-      }
 
-      /* Iterate through the contents of the WAL, copying data to the db file */
-      while( rc==SQLITE_OK && 0==walIteratorNext(pIter, &iDbpage, &iFrame) ){
-        i64 iOffset;
-        assert( walFramePgno(pWal, iFrame)==iDbpage );
-        SEH_INJECT_FAULT;
-        if( AtomicLoad(&db->u1.isInterrupted) ){
-          rc = db->mallocFailed ? SQLITE_NOMEM_BKPT : SQLITE_INTERRUPT;
-          break;
-        }
-        if( iFrame<=nBackfill || iFrame>mxSafeFrame || iDbpage>mxPage ){
-          continue;
         }
-        iOffset = walFrameOffset(iFrame, szPage) + WAL_FRAME_HDRSIZE;
-        /* testcase( IS_BIG_INT(iOffset) ); // requires a 4GiB WAL file */
-        rc = sqlite3OsRead(pWal->pWalFd, zBuf, szPage, iOffset);
-        if( rc!=SQLITE_OK ) break;
-        iOffset = (iDbpage-1)*(i64)szPage;
-        testcase( IS_BIG_INT(iOffset) );
-        rc = sqlite3OsWrite(pWal->pDbFd, zBuf, szPage, iOffset);
-        if( rc!=SQLITE_OK ) break;
-      }
-      sqlite3OsFileControl(pWal->pDbFd, SQLITE_FCNTL_CKPT_DONE, 0);
 
-      /* If work was actually accomplished... */
-      if( rc==SQLITE_OK ){
-        if( mxSafeFrame==walIndexHdr(pWal)->mxFrame ){
-          i64 szDb = pWal->hdr.nPage*(i64)szPage;
-          testcase( IS_BIG_INT(szDb) );
-          rc = sqlite3OsTruncate(pWal->pDbFd, szDb);
-          if( rc==SQLITE_OK ){
-            rc = sqlite3OsSync(pWal->pDbFd, CKPT_SYNC_FLAGS(sync_flags));
+        /* Iterate through the contents of the WAL, copying data to the
+        ** db file */
+        while( rc==SQLITE_OK && 0==walIteratorNext(pIter, &iDbpage, &iFrame) ){
+          i64 iOffset;
+          assert( walFramePgno(pWal, iFrame)==iDbpage );
+          SEH_INJECT_FAULT;
+          if( AtomicLoad(&db->u1.isInterrupted) ){
+            rc = db->mallocFailed ? SQLITE_NOMEM_BKPT : SQLITE_INTERRUPT;
+            break;
+          }
+          if( iFrame<=nBackfill || iFrame>mxSafeFrame || iDbpage>mxPage ){
+            continue;
           }
+          iOffset = walFrameOffset(iFrame, szPage) + WAL_FRAME_HDRSIZE;
+          /* testcase( IS_BIG_INT(iOffset) ); // requires a 4GiB WAL file */
+          rc = sqlite3OsRead(pWal->pWalFd, zBuf, szPage, iOffset);
+          if( rc!=SQLITE_OK ) break;
+          iOffset = (iDbpage-1)*(i64)szPage;
+          testcase( IS_BIG_INT(iOffset) );
+          rc = sqlite3OsWrite(pWal->pDbFd, zBuf, szPage, iOffset);
+          if( rc!=SQLITE_OK ) break;
         }
+        sqlite3OsFileControl(pWal->pDbFd, SQLITE_FCNTL_CKPT_DONE, 0);
+
+        /* If work was actually accomplished... */
         if( rc==SQLITE_OK ){
-          AtomicStore(&pInfo->nBackfill, mxSafeFrame); SEH_INJECT_FAULT;
+          if( mxSafeFrame==walIndexHdr(pWal)->mxFrame ){
+            i64 szDb = pWal->hdr.nPage*(i64)szPage;
+            testcase( IS_BIG_INT(szDb) );
+            rc = sqlite3OsTruncate(pWal->pDbFd, szDb);
+            if( rc==SQLITE_OK ){
+              rc = sqlite3OsSync(pWal->pDbFd, CKPT_SYNC_FLAGS(sync_flags));
+            }
+          }
+          if( rc==SQLITE_OK ){
+            AtomicStore(&pInfo->nBackfill, mxSafeFrame); SEH_INJECT_FAULT;
+          }
         }
       }
 
@@ -71121,6 +71279,7 @@ SQLITE_PRIVATE int sqlite3WalCheckpoint(
 
     /* Copy data from the log to the database file. */
     if( rc==SQLITE_OK ){
+      sqlite3FaultSim(660);
       if( pWal->hdr.mxFrame && walPagesize(pWal)!=nBuf ){
         rc = SQLITE_CORRUPT_BKPT;
       }else if( eMode2!=SQLITE_CHECKPOINT_NOOP ){
@@ -76109,6 +76268,30 @@ static SQLITE_NOINLINE int btreeBeginTrans(
     }
 #endif
 
+#ifdef SQLITE_EXPERIMENTAL_PRAGMA_20251114
+    /* If both a read and write transaction will be opened by this call,
+    ** then issue a file-control as if the following pragma command had
+    ** been evaluated:
+    **
+    **     PRAGMA experimental_pragma_20251114 = 1|2
+    **
+    ** where the RHS is "1" if wrflag is 1 (RESERVED lock), or "2" if wrflag
+    ** is 2 (EXCLUSIVE lock). Ignore any result or error returned by the VFS.
+    **
+    ** WARNING: This code will likely remain part of SQLite only temporarily -
+    ** it exists to allow users to experiment with certain types of blocking
+    ** locks in custom VFS implementations. It MAY BE REMOVED AT ANY TIME.  */
+    if( pBt->pPage1==0 && wrflag ){
+      sqlite3_file *fd = sqlite3PagerFile(pPager);
+      char *aFcntl[3] = {0,0,0};
+      aFcntl[1] = "experimental_pragma_20251114";
+      assert( wrflag==1 || wrflag==2 );
+      aFcntl[2] = (wrflag==1 ? "1" : "2");
+      sqlite3OsFileControlHint(fd, SQLITE_FCNTL_PRAGMA, (void*)aFcntl);
+      sqlite3_free(aFcntl[0]);
+    }
+#endif
+
     /* Call lockBtree() until either pBt->pPage1 is populated or
     ** lockBtree() returns something other than SQLITE_OK. lockBtree()
     ** may return SQLITE_OK but leave pBt->pPage1 set to 0 if after
@@ -77556,7 +77739,7 @@ static int accessPayload(
 
   getCellInfo(pCur);
   aPayload = pCur->info.pPayload;
-  assert( offset+amt <= pCur->info.nPayload );
+  assert( (u64)offset+(u64)amt <= (u64)pCur->info.nPayload );
 
   assert( aPayload > pPage->aData );
   if( (uptr)(aPayload - pPage->aData) > (pBt->usableSize - pCur->info.nLocal) ){
@@ -78113,7 +78296,7 @@ SQLITE_PRIVATE int sqlite3BtreeIsEmpty(BtCursor *pCur, int *pRes){
 
   assert( cursorOwnsBtShared(pCur) );
   assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
-  if( pCur->eState==CURSOR_VALID ){
+  if( NEVER(pCur->eState==CURSOR_VALID) ){
     *pRes = 0;
     return SQLITE_OK;
   }
@@ -82194,7 +82377,7 @@ SQLITE_PRIVATE int sqlite3BtreeTransferRow(BtCursor *pDest, BtCursor *pSrc, i64
       }while( rc==SQLITE_OK && nOut>0 );
 
       if( rc==SQLITE_OK && nRem>0 && ALWAYS(pPgnoOut) ){
-        Pgno pgnoNew;
+        Pgno pgnoNew = 0;  /* Prevent harmless static-analyzer warning */
         MemPage *pNew = 0;
         rc = allocateBtreePage(pBt, &pNew, &pgnoNew, 0, 0);
         put4byte(pPgnoOut, pgnoNew);
@@ -84860,21 +85043,27 @@ static void vdbeMemRenderNum(int sz, char *zBuf, Mem *p){
   StrAccum acc;
   assert( p->flags & (MEM_Int|MEM_Real|MEM_IntReal) );
   assert( sz>22 );
-  if( p->flags & MEM_Int ){
-#if GCC_VERSION>=7000000
-    /* Work-around for GCC bug
-    ** https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96270 */
+  if( p->flags & (MEM_Int|MEM_IntReal) ){
+#if GCC_VERSION>=7000000 && GCC_VERSION<15000000 && defined(__i386__)
+    /* Work-around for GCC bug or bugs:
+    ** https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96270
+    ** https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114659
+    ** The problem appears to be fixed in GCC 15 */
     i64 x;
-    assert( (p->flags&MEM_Int)*2==sizeof(x) );
-    memcpy(&x, (char*)&p->u, (p->flags&MEM_Int)*2);
+    assert( (MEM_Str&~p->flags)*4==sizeof(x) );
+    memcpy(&x, (char*)&p->u, (MEM_Str&~p->flags)*4);
     p->n = sqlite3Int64ToText(x, zBuf);
 #else
     p->n = sqlite3Int64ToText(p->u.i, zBuf);
 #endif
+    if( p->flags & MEM_IntReal ){
+      memcpy(zBuf+p->n,".0", 3);
+      p->n += 2;
+    }
   }else{
     sqlite3StrAccumInit(&acc, 0, zBuf, sz, 0);
-    sqlite3_str_appendf(&acc, "%!.15g",
-         (p->flags & MEM_IntReal)!=0 ? (double)p->u.i : p->u.r);
+    sqlite3_str_appendf(&acc, "%!.*g",
+         (p->db ? p->db->nFpDigit : 17), p->u.r);
     assert( acc.zText==zBuf && acc.mxAlloc<=0 );
     zBuf[acc.nChar] = 0; /* Fast version of sqlite3StrAccumFinish(&acc) */
     p->n = acc.nChar;
@@ -84923,6 +85112,9 @@ SQLITE_PRIVATE int sqlite3VdbeMemValidStrRep(Mem *p){
     assert( p->enc==SQLITE_UTF8 || p->z[((p->n+1)&~1)+1]==0 );
   }
   if( (p->flags & (MEM_Int|MEM_Real|MEM_IntReal))==0 ) return 1;
+  if( p->db==0 ){
+    return 1;  /* db->nFpDigit required to validate p->z[] */
+  }
   memcpy(&tmp, p, sizeof(tmp));
   vdbeMemRenderNum(sizeof(zBuf), zBuf, &tmp);
   z = p->z;
@@ -85073,13 +85265,16 @@ SQLITE_PRIVATE int sqlite3VdbeMemClearAndResize(Mem *pMem, int szNew){
 **
 ** This is an optimization.  Correct operation continues even if
 ** this routine is a no-op.
+**
+** Return true if the strig is zero-terminated after this routine is
+** called and false if it is not.
 */
-SQLITE_PRIVATE void sqlite3VdbeMemZeroTerminateIfAble(Mem *pMem){
+SQLITE_PRIVATE int sqlite3VdbeMemZeroTerminateIfAble(Mem *pMem){
   if( (pMem->flags & (MEM_Str|MEM_Term|MEM_Ephem|MEM_Static))!=MEM_Str ){
     /* pMem must be a string, and it cannot be an ephemeral or static string */
-    return;
+    return 0;
   }
-  if( pMem->enc!=SQLITE_UTF8 ) return;
+  if( pMem->enc!=SQLITE_UTF8 ) return 0;
   assert( pMem->z!=0 );
   if( pMem->flags & MEM_Dyn ){
     if( pMem->xDel==sqlite3_free
@@ -85087,18 +85282,19 @@ SQLITE_PRIVATE void sqlite3VdbeMemZeroTerminateIfAble(Mem *pMem){
     ){
       pMem->z[pMem->n] = 0;
       pMem->flags |= MEM_Term;
-      return;
+      return 1;
     }
     if( pMem->xDel==sqlite3RCStrUnref ){
       /* Blindly assume that all RCStr objects are zero-terminated */
       pMem->flags |= MEM_Term;
-      return;
+      return 1;
     }
   }else if( pMem->szMalloc >= pMem->n+1 ){
     pMem->z[pMem->n] = 0;
     pMem->flags |= MEM_Term;
-    return;
+    return 1;
   }
+  return 0;
 }
 
 /*
@@ -85396,18 +85592,70 @@ SQLITE_PRIVATE i64 sqlite3VdbeIntValue(const Mem *pMem){
   }
 }
 
+/*
+** Invoke sqlite3AtoF() on the text value of pMem and return the
+** double result.  If sqlite3AtoF() returns an error code, write
+** that code into *pRC if (*pRC)!=NULL.
+**
+** The caller must ensure that pMem->db!=0 and that pMem is in
+** mode MEM_Str or MEM_Blob.
+*/
+SQLITE_PRIVATE SQLITE_NOINLINE double sqlite3MemRealValueRC(Mem *pMem, int *pRC){
+  double val = (double)0;
+  int rc = 0;
+  assert( pMem->db!=0 );
+  assert( pMem->flags & (MEM_Str|MEM_Blob) );
+  if( pMem->z==0 ){
+    /* no-op */
+  }else if( pMem->enc==SQLITE_UTF8
+   && ((pMem->flags & MEM_Term)!=0 || sqlite3VdbeMemZeroTerminateIfAble(pMem))
+  ){
+    rc = sqlite3AtoF(pMem->z, &val);
+  }else if( pMem->n==0 ){
+    /* no-op */
+  }else if( pMem->enc==SQLITE_UTF8 ){
+    char *zCopy = sqlite3DbStrNDup(pMem->db, pMem->z, pMem->n);
+    if( zCopy ){
+      rc = sqlite3AtoF(zCopy, &val);
+      sqlite3DbFree(pMem->db, zCopy);
+    }
+  }else{
+    int n, i, j;
+    char *zCopy;
+    const char *z;
+
+    n = pMem->n & ~1;
+    zCopy = sqlite3DbMallocRaw(pMem->db, n/2 + 2);
+    if( zCopy ){
+      z = pMem->z;
+      if( pMem->enc==SQLITE_UTF16LE ){
+        for(i=j=0; i<n-1; i+=2, j++){
+          zCopy[j] = z[i];
+          if( z[i+1]!=0 ) break;
+        }
+      }else{
+        for(i=j=0; i<n-1; i+=2, j++){
+          if( z[i]!=0 ) break;
+          zCopy[j] = z[i+1];
+        }
+      }
+      assert( j<=n/2 );
+      zCopy[j] = 0;
+      rc = sqlite3AtoF(zCopy, &val);
+      if( i<n ) rc = -100;
+      sqlite3DbFree(pMem->db, zCopy);
+    }
+  }
+  if( pRC ) *pRC = rc;
+  return val;
+}
+
 /*
 ** Return the best representation of pMem that we can get into a
 ** double.  If pMem is already a double or an integer, return its
 ** value.  If it is a string or blob, try to convert it to a double.
 ** If it is a NULL, return 0.0.
 */
-static SQLITE_NOINLINE double memRealValue(Mem *pMem){
-  /* (double)0 In case of SQLITE_OMIT_FLOATING_POINT... */
-  double val = (double)0;
-  sqlite3AtoF(pMem->z, &val, pMem->n, pMem->enc);
-  return val;
-}
 SQLITE_PRIVATE double sqlite3VdbeRealValue(Mem *pMem){
   assert( pMem!=0 );
   assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
@@ -85418,7 +85666,7 @@ SQLITE_PRIVATE double sqlite3VdbeRealValue(Mem *pMem){
     testcase( pMem->flags & MEM_IntReal );
     return (double)pMem->u.i;
   }else if( pMem->flags & (MEM_Str|MEM_Blob) ){
-    return memRealValue(pMem);
+    return sqlite3MemRealValueRC(pMem, 0);
   }else{
     /* (double)0 In case of SQLITE_OMIT_FLOATING_POINT... */
     return (double)0;
@@ -85542,7 +85790,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemNumerify(Mem *pMem){
     sqlite3_int64 ix;
     assert( (pMem->flags & (MEM_Blob|MEM_Str))!=0 );
     assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
-    rc = sqlite3AtoF(pMem->z, &pMem->u.r, pMem->n, pMem->enc);
+    pMem->u.r = sqlite3MemRealValueRC(pMem, &rc);
     if( ((rc==0 || rc==1) && sqlite3Atoi64(pMem->z, &ix, pMem->n, pMem->enc)<=1)
      || sqlite3RealSameAsInt(pMem->u.r, (ix = sqlite3RealToI64(pMem->u.r)))
     ){
@@ -86007,6 +86255,84 @@ SQLITE_PRIVATE int sqlite3VdbeMemSetStr(
   return SQLITE_OK;
 }
 
+/* Like sqlite3VdbeMemSetStr() except:
+**
+**   enc is always SQLITE_UTF8
+**   pMem->db is always non-NULL
+*/
+SQLITE_PRIVATE int sqlite3VdbeMemSetText(
+  Mem *pMem,          /* Memory cell to set to string value */
+  const char *z,      /* String pointer */
+  i64 n,              /* Bytes in string, or negative */
+  void (*xDel)(void*) /* Destructor function */
+){
+  i64 nByte = n;      /* New value for pMem->n */
+  u16 flags;
+
+  assert( pMem!=0 );
+  assert( pMem->db!=0 );
+  assert( sqlite3_mutex_held(pMem->db->mutex) );
+  assert( !sqlite3VdbeMemIsRowSet(pMem) );
+
+  /* If z is a NULL pointer, set pMem to contain an SQL NULL. */
+  if( !z ){
+    sqlite3VdbeMemSetNull(pMem);
+    return SQLITE_OK;
+  }
+
+  if( nByte<0 ){
+    nByte = strlen(z);
+    flags = MEM_Str|MEM_Term;
+  }else{
+    flags = MEM_Str;
+  }
+  if( nByte>(i64)pMem->db->aLimit[SQLITE_LIMIT_LENGTH] ){
+    if( xDel && xDel!=SQLITE_TRANSIENT ){
+      if( xDel==SQLITE_DYNAMIC ){
+        sqlite3DbFree(pMem->db, (void*)z);
+      }else{
+        xDel((void*)z);
+      }
+    }
+    sqlite3VdbeMemSetNull(pMem);
+    return sqlite3ErrorToParser(pMem->db, SQLITE_TOOBIG);
+  }
+
+  /* The following block sets the new values of Mem.z and Mem.xDel. It
+  ** also sets a flag in local variable "flags" to indicate the memory
+  ** management (one of MEM_Dyn or MEM_Static).
+  */
+  if( xDel==SQLITE_TRANSIENT ){
+    i64 nAlloc = nByte + 1;
+    testcase( nAlloc==31 );
+    testcase( nAlloc==32 );
+    if( sqlite3VdbeMemClearAndResize(pMem, (int)MAX(nAlloc,32)) ){
+      return SQLITE_NOMEM_BKPT;
+    }
+    assert( pMem->z!=0 );
+    memcpy(pMem->z, z, nByte);
+    pMem->z[nByte] = 0;
+  }else{
+    sqlite3VdbeMemRelease(pMem);
+    pMem->z = (char *)z;
+    if( xDel==SQLITE_DYNAMIC ){
+      pMem->zMalloc = pMem->z;
+      pMem->szMalloc = sqlite3DbMallocSize(pMem->db, pMem->zMalloc);
+      pMem->xDel = 0;
+    }else if( xDel==SQLITE_STATIC ){
+      pMem->xDel = xDel;
+      flags |= MEM_Static;
+    }else{
+      pMem->xDel = xDel;
+      flags |= MEM_Dyn;
+    }
+  }
+  pMem->flags = flags;
+  pMem->n = (int)(nByte & 0x7fffffff);
+  pMem->enc = SQLITE_UTF8;
+  return SQLITE_OK;
+}
+
 /*
 ** Move data out of a btree key or data field and into a Mem structure.
 ** The data is payload from the entry that pCur is currently pointing
@@ -86030,7 +86356,12 @@ SQLITE_PRIVATE int sqlite3VdbeMemFromBtree(
 ){
   int rc;
   pMem->flags = MEM_Null;
-  if( sqlite3BtreeMaxRecordSize(pCur)<offset+amt ){
+  testcase( amt==SQLITE_MAX_ALLOCATION_SIZE-1 );
+  testcase( amt==SQLITE_MAX_ALLOCATION_SIZE );
+  if( amt>=SQLITE_MAX_ALLOCATION_SIZE ){
+    return SQLITE_NOMEM_BKPT;
+  }
+  if( (u64)amt + (u64)offset > (u64)sqlite3BtreeMaxRecordSize(pCur) ){
     return SQLITE_CORRUPT_BKPT;
   }
   if( SQLITE_OK==(rc = sqlite3VdbeMemClearAndResize(pMem, amt+1)) ){
@@ -86430,7 +86761,7 @@ static int valueFromExpr(
     if( affinity==SQLITE_AFF_BLOB ){
       if( op==TK_FLOAT ){
         assert( pVal && pVal->z && pVal->flags==(MEM_Str|MEM_Term) );
-        sqlite3AtoF(pVal->z, &pVal->u.r, pVal->n, SQLITE_UTF8);
+        sqlite3AtoF(pVal->z, &pVal->u.r);
         pVal->flags = MEM_Real;
       }else if( op==TK_INTEGER ){
         /* This case is required by -9223372036854775808 and other strings
@@ -86698,6 +87029,11 @@ SQLITE_PRIVATE int sqlite3Stat4ValueFromExpr(
 **
 ** If *ppVal is initially NULL then the caller is responsible for
 ** ensuring that the value written into *ppVal is eventually freed.
+**
+** If the buffer does not contain a well-formed record, this routine may
+** read several bytes past the end of the buffer. Callers must therefore
+** ensure that any buffer which may contain a corrupt record is padded
+** with at least 8 bytes of addressable memory.
 */
 SQLITE_PRIVATE int sqlite3Stat4Column(
   sqlite3 *db,                    /* Database handle */
@@ -89714,7 +90050,7 @@ SQLITE_PRIVATE int sqlite3VdbeSetColName(
   }
   assert( p->aColName!=0 );
   pColName = &(p->aColName[idx+var*p->nResAlloc]);
-  rc = sqlite3VdbeMemSetStr(pColName, zName, -1, SQLITE_UTF8, xDel);
+  rc = sqlite3VdbeMemSetText(pColName, zName, -1, xDel);
   assert( rc!=0 || !zName || (pColName->flags&MEM_Term)!=0 );
   return rc;
 }
@@ -92792,7 +93128,23 @@ static void setResultStrOrError(
   void (*xDel)(void*)     /* Destructor function */
 ){
   Mem *pOut = pCtx->pOut;
-  int rc = sqlite3VdbeMemSetStr(pOut, z, n, enc, xDel);
+  int rc;
+  if( enc==SQLITE_UTF8 ){
+    rc = sqlite3VdbeMemSetText(pOut, z, n, xDel);
+  }else if( enc==SQLITE_UTF8_ZT ){
+    /* It is usually considered improper to assert() on an input. However,
+    ** the following assert() is checking for inputs that are documented
+    ** to result in undefined behavior. */
+    assert( z==0
+         || n<0
+         || n>pOut->db->aLimit[SQLITE_LIMIT_LENGTH]
+         || z[n]==0
+    );
+    rc = sqlite3VdbeMemSetText(pOut, z, n, xDel);
+    pOut->flags |= MEM_Term;
+  }else{
+    rc = sqlite3VdbeMemSetStr(pOut, z, n, enc, xDel);
+  }
   if( rc ){
     if( rc==SQLITE_TOOBIG ){
       sqlite3_result_error_toobig(pCtx);
@@ -92985,7 +93337,7 @@ SQLITE_API void sqlite3_result_text64(
 #endif
   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
   assert( xDel!=SQLITE_DYNAMIC );
-  if( enc!=SQLITE_UTF8 ){
+  if( enc!=SQLITE_UTF8 && enc!=SQLITE_UTF8_ZT ){
     if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
     n &= ~(u64)1;
   }
@@ -93136,6 +93488,8 @@ static int doWalCallbacks(sqlite3 *db){
       }
     }
   }
+#else
+  UNUSED_PARAMETER(db);
 #endif
   return rc;
 }
@@ -93443,7 +93797,7 @@ static int valueFromValueList(
     Mem sMem;     /* Raw content of current row */
     memset(&sMem, 0, sizeof(sMem));
     sz = sqlite3BtreePayloadSize(pRhs->pCsr);
-    rc = sqlite3VdbeMemFromBtreeZeroOffset(pRhs->pCsr,(int)sz,&sMem);
+    rc = sqlite3VdbeMemFromBtreeZeroOffset(pRhs->pCsr,sz,&sMem);
     if( rc==SQLITE_OK ){
       u8 *zBuf = (u8*)sMem.z;
       u32 iSerial;
@@ -94092,13 +94446,25 @@ static int bindText(
     assert( p!=0 && p->aVar!=0 && i>0 && i<=p->nVar ); /* tag-20240917-01 */
     if( zData!=0 ){
       pVar = &p->aVar[i-1];
-      rc = sqlite3VdbeMemSetStr(pVar, zData, nData, encoding, xDel);
-      if( rc==SQLITE_OK ){
-        if( encoding==0 ){
-          pVar->enc = ENC(p->db);
-        }else{
-          rc = sqlite3VdbeChangeEncoding(pVar, ENC(p->db));
-        }
+      if( encoding==SQLITE_UTF8 ){
+        rc = sqlite3VdbeMemSetText(pVar, zData, nData, xDel);
+      }else if( encoding==SQLITE_UTF8_ZT ){
+        /* It is usually consider improper to assert() on an input.
+        ** However, the following assert() is checking for inputs
+        ** that are documented to result in undefined behavior. */
+        assert( zData==0
+             || nData<0
+             || nData>pVar->db->aLimit[SQLITE_LIMIT_LENGTH]
+             || ((u8*)zData)[nData]==0
+        );
+        rc = sqlite3VdbeMemSetText(pVar, zData, nData, xDel);
+        pVar->flags |= MEM_Term;
+      }else{
+        rc = sqlite3VdbeMemSetStr(pVar, zData, nData, encoding, xDel);
+        if( encoding==0 ) pVar->enc = ENC(p->db);
+      }
+      if( rc==SQLITE_OK && encoding!=0 ){
+        rc = sqlite3VdbeChangeEncoding(pVar, ENC(p->db));
       }
       if( rc ){
         sqlite3Error(p->db, rc);
@@ -94210,7 +94576,7 @@ SQLITE_API int sqlite3_bind_text64(
   unsigned char enc
 ){
   assert( xDel!=SQLITE_DYNAMIC );
-  if( enc!=SQLITE_UTF8 ){
+  if( enc!=SQLITE_UTF8 && enc!=SQLITE_UTF8_ZT ){
     if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
     nData &= ~(u64)1;
   }
@@ -95247,17 +95613,19 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
 #ifndef SQLITE_HWTIME_H
 #define SQLITE_HWTIME_H
 
-/*
-** The following routine only works on Pentium-class (or newer) processors.
-** It uses the RDTSC opcode to read the cycle count value out of the
-** processor and returns that value.  This can be used for high-res
-** profiling.
-*/
-#if !defined(__STRICT_ANSI__) && \
-    (defined(__GNUC__) || defined(_MSC_VER)) && \
-    (defined(i386) || defined(__i386__) || defined(_M_IX86))
+#if defined(_MSC_VER) && defined(_WIN32)
 
-  #if defined(__GNUC__)
+/*   #include "windows.h" */
+  #include <profileapi.h>
+
+  __inline sqlite3_uint64 sqlite3Hwtime(void){
+    LARGE_INTEGER tm;
+    QueryPerformanceCounter(&tm);
+    return (sqlite3_uint64)tm.QuadPart;
+  }
+
+#elif !defined(__STRICT_ANSI__) && defined(__GNUC__) && \
+    (defined(i386) || defined(__i386__) || defined(_M_IX86))
 
   __inline__ sqlite_uint64 sqlite3Hwtime(void){
      unsigned int lo, hi;
@@ -95265,17 +95633,6 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
      return (sqlite_uint64)hi << 32 | lo;
   }
 
-  #elif defined(_MSC_VER)
-
-  __declspec(naked) __inline sqlite_uint64 __cdecl sqlite3Hwtime(void){
-     __asm {
-        rdtsc
-        ret       ; return value at EDX:EAX
-     }
-  }
-
-  #endif
-
 #elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__x86_64__))
 
   __inline__ sqlite_uint64 sqlite3Hwtime(void){
@@ -95284,6 +95641,14 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
      return (sqlite_uint64)hi << 32 | lo;
   }
 
+#elif !defined(__STRICT_ANSI__) && defined(__GNUC__) &&  defined(__aarch64__)
+
+  __inline__ sqlite_uint64 sqlite3Hwtime(void){
+     sqlite3_uint64 cnt;
+     __asm__ __volatile__ ("mrs %0, cntvct_el0" : "=r" (cnt));
+     return cnt;
+  }
+
 #elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__ppc__))
 
   __inline__ sqlite_uint64 sqlite3Hwtime(void){
@@ -95642,10 +96007,9 @@ static int alsoAnInt(Mem *pRec, double rValue, i64 *piValue){
 */
 static void applyNumericAffinity(Mem *pRec, int bTryForInt){
   double rValue;
-  u8 enc = pRec->enc;
   int rc;
   assert( (pRec->flags & (MEM_Str|MEM_Int|MEM_Real|MEM_IntReal))==MEM_Str );
-  rc = sqlite3AtoF(pRec->z, &rValue, pRec->n, enc);
+  rValue = sqlite3MemRealValueRC(pRec, &rc);
   if( rc<=0 ) return;
   if( rc==1 && alsoAnInt(pRec, rValue, &pRec->u.i) ){
     pRec->flags |= MEM_Int;
@@ -95727,7 +96091,10 @@ SQLITE_API int sqlite3_value_numeric_type(sqlite3_value *pVal){
   int eType = sqlite3_value_type(pVal);
   if( eType==SQLITE_TEXT ){
     Mem *pMem = (Mem*)pVal;
+    assert( pMem->db!=0 );
+    sqlite3_mutex_enter(pMem->db->mutex);
     applyNumericAffinity(pMem, 0);
+    sqlite3_mutex_leave(pMem->db->mutex);
     eType = sqlite3_value_type(pVal);
   }
   return eType;
@@ -95760,7 +96127,7 @@ static u16 SQLITE_NOINLINE computeNumericType(Mem *pMem){
     pMem->u.i = 0;
     return MEM_Int;
   }
-  rc = sqlite3AtoF(pMem->z, &pMem->u.r, pMem->n, pMem->enc);
+  pMem->u.r = sqlite3MemRealValueRC(pMem, &rc);
   if( rc<=0 ){
     if( rc==0 && sqlite3Atoi64(pMem->z, &ix, pMem->n, pMem->enc)<=1 ){
       pMem->u.i = ix;
@@ -101909,20 +102276,15 @@ case OP_SorterInsert: {     /* in2 */
   break;
 }
 
-/* Opcode: IdxDelete P1 P2 P3 * P5
+/* Opcode: IdxDelete P1 P2 P3 * *
 ** Synopsis: key=r[P2@P3]
 **
 ** The content of P3 registers starting at register P2 form
 ** an unpacked index key. This opcode removes that entry from the
 ** index opened by cursor P1.
 **
-** If P5 is not zero, then raise an SQLITE_CORRUPT_INDEX error
-** if no matching index entry is found.  This happens when running
-** an UPDATE or DELETE statement and the index entry to be updated
-** or deleted is not found.  For some uses of IdxDelete
-** (example:  the EXCEPT operator) it does not matter that no matching
-** entry is found.  For those cases, P5 is zero.  Also, do not raise
-** this (self-correcting and non-critical) error if in writable_schema mode.
+** Raise an SQLITE_CORRUPT_INDEX error if no matching index entry is found
+** and not in writable_schema mode.
 */
 case OP_IdxDelete: {
   VdbeCursor *pC;
@@ -101948,7 +102310,7 @@ case OP_IdxDelete: {
   if( res==0 ){
     rc = sqlite3BtreeDelete(pCrsr, BTREE_AUXDELETE);
     if( rc ) goto abort_due_to_error;
-  }else if( pOp->p5 && !sqlite3WritableSchema(db) ){
+  }else if( !sqlite3WritableSchema(db) ){
     rc = sqlite3ReportError(SQLITE_CORRUPT_INDEX, __LINE__, "index corruption");
     goto abort_due_to_error;
   }
@@ -110042,7 +110404,7 @@ static int exprProbability(Expr *p){
   double r = -1.0;
   if( p->op!=TK_FLOAT ) return -1;
   assert( !ExprHasProperty(p, EP_IntValue) );
-  sqlite3AtoF(p->u.zToken, &r, sqlite3Strlen30(p->u.zToken), SQLITE_UTF8);
+  sqlite3AtoF(p->u.zToken, &r);
   assert( r>=0.0 );
   if( r>1.0 ) return -1;
   return (int)(r*134217728.0);
@@ -110762,10 +111124,8 @@ static int resolveCompoundOrderBy(
         /* Convert the ORDER BY term into an integer column number iCol,
         ** taking care to preserve the COLLATE clause if it exists. */
         if( !IN_RENAME_OBJECT ){
-          Expr *pNew = sqlite3Expr(db, TK_INTEGER, 0);
+          Expr *pNew = sqlite3ExprInt32(db, iCol);
           if( pNew==0 ) return 1;
-          pNew->flags |= EP_IntValue;
-          pNew->u.iValue = iCol;
           if( pItem->pExpr==pE ){
             pItem->pExpr = pNew;
           }else{
@@ -111119,10 +111479,6 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
     }
 #endif
 
-    /* The ORDER BY and GROUP BY clauses may not refer to terms in
-    ** outer queries
-    */
-    sNC.pNext = 0;
     sNC.ncFlags |= NC_AllowAgg|NC_AllowWin;
 
     /* If this is a converted compound query, move the ORDER BY clause from
@@ -111185,6 +111541,14 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
       return WRC_Abort;
     }
 
+    /* If the SELECT statement contains ON clauses that were moved into
+    ** the WHERE clause, go through and verify that none of the terms
+    ** in the ON clauses reference tables to the right of the ON clause. */
+    if( (p->selFlags & SF_OnToWhere) ){
+      sqlite3SelectCheckOnClauses(pParse, p);
+      if( pParse->nErr ) return WRC_Abort;
+    }
+
     /* Advance to the next term of the compound
     */
     p = p->pPrior;
@@ -112361,34 +112725,22 @@ SQLITE_PRIVATE Expr *sqlite3ExprAlloc(
   int dequote             /* True to dequote */
 ){
   Expr *pNew;
-  int nExtra = 0;
-  int iValue = 0;
+  int nExtra = pToken ? pToken->n+1 : 0;
 
   assert( db!=0 );
-  if( pToken ){
-    if( op!=TK_INTEGER || pToken->z==0
-          || sqlite3GetInt32(pToken->z, &iValue)==0 ){
-      nExtra = pToken->n+1;  /* tag-20240227-a */
-      assert( iValue>=0 );
-    }
-  }
   pNew = sqlite3DbMallocRawNN(db, sizeof(Expr)+nExtra);
   if( pNew ){
     memset(pNew, 0, sizeof(Expr));
     pNew->op = (u8)op;
     pNew->iAgg = -1;
-    if( pToken ){
-      if( nExtra==0 ){
-        pNew->flags |= EP_IntValue|EP_Leaf|(iValue?EP_IsTrue:EP_IsFalse);
-        pNew->u.iValue = iValue;
-      }else{
-        pNew->u.zToken = (char*)&pNew[1];
-        assert( pToken->z!=0 || pToken->n==0 );
-        if( pToken->n ) memcpy(pNew->u.zToken, pToken->z, pToken->n);
-        pNew->u.zToken[pToken->n] = 0;
-        if( dequote && sqlite3Isquote(pNew->u.zToken[0]) ){
-          sqlite3DequoteExpr(pNew);
-        }
+    if( nExtra ){
+      assert( pToken!=0 );
+      pNew->u.zToken = (char*)&pNew[1];
+      assert( pToken->z!=0 || pToken->n==0 );
+      if( pToken->n ) memcpy(pNew->u.zToken, pToken->z, pToken->n);
+      pNew->u.zToken[pToken->n] = 0;
+      if( dequote && sqlite3Isquote(pNew->u.zToken[0]) ){
+        sqlite3DequoteExpr(pNew);
       }
     }
 #if SQLITE_MAX_EXPR_DEPTH>0
@@ -112413,6 +112765,24 @@ SQLITE_PRIVATE Expr *sqlite3Expr(
   return sqlite3ExprAlloc(db, op, &x, 0);
 }
 
+/*
+** Allocate an expression for a 32-bit signed integer literal.
+*/
+SQLITE_PRIVATE Expr *sqlite3ExprInt32(sqlite3 *db, int iVal){
+  Expr *pNew = sqlite3DbMallocRawNN(db, sizeof(Expr));
+  if( pNew ){
+    memset(pNew, 0, sizeof(Expr));
+    pNew->op = TK_INTEGER;
+    pNew->iAgg = -1;
+    pNew->flags = EP_IntValue|EP_Leaf|(iVal?EP_IsTrue:EP_IsFalse);
+    pNew->u.iValue = iVal;
+#if SQLITE_MAX_EXPR_DEPTH>0
+    pNew->nHeight = 1;
+#endif
+  }
+  return pNew;
+}
+
 /*
 ** Attach subtrees pLeft and pRight to the Expr node pRoot.
 **
@@ -112575,7 +112945,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprAnd(Parse *pParse, Expr *pLeft, Expr *pRight){
     ){
       sqlite3ExprDeferredDelete(pParse, pLeft);
       sqlite3ExprDeferredDelete(pParse, pRight);
-      return sqlite3Expr(db, TK_INTEGER, "0");
+      return sqlite3ExprInt32(db, 0);
     }else{
       return sqlite3PExpr(pParse, TK_AND, pLeft, pRight);
     }
@@ -112700,7 +113070,9 @@ SQLITE_PRIVATE void sqlite3ExprFunctionUsable(
 ){
   assert( !IN_RENAME_OBJECT );
   assert( (pDef->funcFlags & (SQLITE_FUNC_DIRECT|SQLITE_FUNC_UNSAFE))!=0 );
-  if( ExprHasProperty(pExpr, EP_FromDDL) ){
+  if( ExprHasProperty(pExpr, EP_FromDDL)
+   || pParse->prepFlags & SQLITE_PREPARE_FROM_DDL
+  ){
     if( (pDef->funcFlags & SQLITE_FUNC_DIRECT)!=0
      || (pParse->db->flags & SQLITE_TrustedSchema)==0
     ){
@@ -113396,9 +113768,7 @@ SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3 *db, const Select *pDup, int fla
     pNew->pLimit = sqlite3ExprDup(db, p->pLimit, flags);
     pNew->iLimit = 0;
     pNew->iOffset = 0;
-    pNew->selFlags = p->selFlags & ~(u32)SF_UsesEphemeral;
-    pNew->addrOpenEphm[0] = -1;
-    pNew->addrOpenEphm[1] = -1;
+    pNew->selFlags = p->selFlags;
     pNew->nSelectRow = p->nSelectRow;
     pNew->pWith = sqlite3WithDup(db, p->pWith);
 #ifndef SQLITE_OMIT_WINDOWFUNC
@@ -114050,7 +114420,7 @@ static int exprIsConst(Parse *pParse, Expr *p, int initFlag){
 
 /*
 ** Walk an expression tree.  Return non-zero if the expression is constant
-** and 0 if it involves variables or function calls.
+** or return zero if the expression involves variables or function calls.
 **
 ** For the purposes of this function, a double-quoted string (ex: "abc")
 ** is considered a variable but a single-quoted string (ex: 'abc') is
@@ -114840,6 +115210,7 @@ SQLITE_PRIVATE int sqlite3FindInIndex(
     */
     u32 savedNQueryLoop = pParse->nQueryLoop;
     int rMayHaveNull = 0;
+    int bloomOk = (inFlags & IN_INDEX_MEMBERSHIP)!=0;
     eType = IN_INDEX_EPH;
     if( inFlags & IN_INDEX_LOOP ){
       pParse->nQueryLoop = 0;
@@ -114847,7 +115218,13 @@ SQLITE_PRIVATE int sqlite3FindInIndex(
       *prRhsHasNull = rMayHaveNull = ++pParse->nMem;
     }
     assert( pX->op==TK_IN );
-    sqlite3CodeRhsOfIN(pParse, pX, iTab);
+    if( !bloomOk
+     && ExprUseXSelect(pX)
+     && (pX->x.pSelect->selFlags & SF_ClonedRhsIn)!=0
+    ){
+      bloomOk = 1;
+    }
+    sqlite3CodeRhsOfIN(pParse, pX, iTab, bloomOk);
     if( rMayHaveNull ){
       sqlite3SetHasNullFlag(v, iTab, rMayHaveNull);
     }
@@ -115005,7 +115382,8 @@ static int findCompatibleInRhsSubrtn(
 SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
   Parse *pParse,          /* Parsing context */
   Expr *pExpr,            /* The IN operator */
-  int iTab                /* Use this cursor number */
+  int iTab,               /* Use this cursor number */
+  int allowBloom          /* True to allow the use of a Bloom filter */
 ){
   int addrOnce = 0;           /* Address of the OP_Once instruction at top */
   int addr;                   /* Address of OP_OpenEphemeral instruction */
@@ -115127,7 +115505,10 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
       sqlite3SelectDestInit(&dest, SRT_Set, iTab);
       dest.zAffSdst = exprINAffinity(pParse, pExpr);
       pSelect->iLimit = 0;
-      if( addrOnce && OptimizationEnabled(pParse->db, SQLITE_BloomFilter) ){
+      if( addrOnce
+       && allowBloom
+       && OptimizationEnabled(pParse->db, SQLITE_BloomFilter)
+      ){
         int regBloom = ++pParse->nMem;
         addrBloom = sqlite3VdbeAddOp2(v, OP_Blob, 10000, regBloom);
         VdbeComment((v, "Bloom filter"));
@@ -115348,7 +115729,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(Parse *pParse, Expr *pExpr){
      || (pLeft->u.iValue!=1 && pLeft->u.iValue!=0)
     ){
       sqlite3 *db = pParse->db;
-      pLimit = sqlite3Expr(db, TK_INTEGER, "0");
+      pLimit = sqlite3ExprInt32(db, 0);
       if( pLimit ){
         pLimit->affExpr = SQLITE_AFF_NUMERIC;
         pLimit = sqlite3PExpr(pParse, TK_NE,
@@ -115359,7 +115740,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(Parse *pParse, Expr *pExpr){
     }
   }else{
     /* If there is no pre-existing limit add a limit of 1 */
-    pLimit = sqlite3Expr(pParse->db, TK_INTEGER, "1");
+    pLimit = sqlite3ExprInt32(pParse->db, 1);
     pSel->pLimit = sqlite3PExpr(pParse, TK_LIMIT, pLimit, 0);
   }
   pSel->iLimit = 0;
@@ -115620,8 +116001,9 @@ static void sqlite3ExprCodeIN(
       if( ExprHasProperty(pExpr, EP_Subrtn) ){
         const VdbeOp *pOp = sqlite3VdbeGetOp(v, pExpr->y.sub.iAddr);
         assert( pOp->opcode==OP_Once || pParse->nErr );
-        if( pOp->opcode==OP_Once && pOp->p3>0 ){  /* tag-202407032019 */
-          assert( OptimizationEnabled(pParse->db, SQLITE_BloomFilter) );
+        if( pOp->p3>0 ){  /* tag-202407032019 */
+          assert( OptimizationEnabled(pParse->db, SQLITE_BloomFilter)
+                 || pParse->nErr );
           sqlite3VdbeAddOp4Int(v, OP_Filter, pOp->p3, destIfFalse,
                                rLhs, nVector); VdbeCoverage(v);
         }
@@ -115711,7 +116093,7 @@ static void sqlite3ExprCodeIN(
 static void codeReal(Vdbe *v, const char *z, int negateFlag, int iMem){
   if( ALWAYS(z!=0) ){
     double value;
-    sqlite3AtoF(z, &value, sqlite3Strlen30(z), SQLITE_UTF8);
+    sqlite3AtoF(z, &value);
     assert( !sqlite3IsNaN(value) ); /* The new AtoF never returns NaN */
     if( negateFlag ) value = -value;
     sqlite3VdbeAddOp4Dup8(v, OP_Real, 0, iMem, 0, (u8*)&value, P4_REAL);
@@ -118812,7 +119194,10 @@ static int analyzeAggregate(Walker *pWalker, Expr *pExpr){
       if( pIEpr==0 ) break;
       if( NEVER(!ExprUseYTab(pExpr)) ) break;
       for(i=0; i<pSrcList->nSrc; i++){
-         if( pSrcList->a[0].iCursor==pIEpr->iDataCur ) break;
+         if( pSrcList->a[i].iCursor==pIEpr->iDataCur ){
+           testcase( i>0 );
+           break;
+         }
       }
       if( i>=pSrcList->nSrc ) break;
       if( NEVER(pExpr->pAggInfo!=0) ) break; /* Resolved by outer context */
@@ -119601,7 +119986,7 @@ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
   /* Look up the table being altered. */
   assert( pParse->pNewTable==0 );
   assert( sqlite3BtreeHoldsAllMutexes(db) );
-  if( db->mallocFailed ) goto exit_begin_add_column;
+  if( NEVER(db->mallocFailed) ) goto exit_begin_add_column;
   pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
   if( !pTab ) goto exit_begin_add_column;
 
@@ -119673,7 +120058,7 @@ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
 ** Or, if pTab is not a view or virtual table, zero is returned.
 */
 #if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE)
-static int isRealTable(Parse *pParse, Table *pTab, int bDrop){
+static int isRealTable(Parse *pParse, Table *pTab, int iOp){
   const char *zType = 0;
 #ifndef SQLITE_OMIT_VIEW
   if( IsView(pTab) ){
@@ -119686,9 +120071,12 @@ static int isRealTable(Parse *pParse, Table *pTab, int bDrop){
   }
 #endif
   if( zType ){
+    const char *azMsg[] = {
+      "rename columns of", "drop column from", "edit constraints of"
+    };
+    assert( iOp>=0 && iOp<ArraySize(azMsg) );
     sqlite3ErrorMsg(pParse, "cannot %s %s \"%s\"",
-        (bDrop ? "drop column from" : "rename columns of"),
-        zType, pTab->zName
+        azMsg[iOp], zType, pTab->zName
     );
     return 1;
   }
@@ -120159,6 +120547,25 @@ static RenameToken *renameColumnTokenNext(RenameCtx *pCtx){
   return pBest;
 }
 
+/*
+** Set the error message of the context passed as the first argument to
+** the result of formatting zFmt using printf() style formatting.
+*/
+static void errorMPrintf(sqlite3_context *pCtx, const char *zFmt, ...){
+  sqlite3 *db = sqlite3_context_db_handle(pCtx);
+  char *zErr = 0;
+  va_list ap;
+  va_start(ap, zFmt);
+  zErr = sqlite3VMPrintf(db, zFmt, ap);
+  va_end(ap);
+  if( zErr ){
+    sqlite3_result_error(pCtx, zErr, -1);
+    sqlite3DbFree(db, zErr);
+  }else{
+    sqlite3_result_error_nomem(pCtx);
+  }
+}
+
 /*
 ** An error occurred while parsing or otherwise processing a database
 ** object (either pParse->pNewTable, pNewIndex or pNewTrigger) as part of an
@@ -120456,8 +120863,8 @@ static int renameResolveTrigger(Parse *pParse){
       sqlite3SelectPrep(pParse, pStep->pSelect, &sNC);
       if( pParse->nErr ) rc = pParse->rc;
     }
-    if( rc==SQLITE_OK && pStep->zTarget ){
-      SrcList *pSrc = sqlite3TriggerStepSrc(pParse, pStep);
+    if( rc==SQLITE_OK && pStep->pSrc ){
+      SrcList *pSrc = sqlite3SrcListDup(db, pStep->pSrc, 0);
       if( pSrc ){
         Select *pSel = sqlite3SelectNew(
             pParse, pStep->pExprList, pSrc, 0, 0, 0, 0, 0, 0
@@ -120485,10 +120892,10 @@ static int renameResolveTrigger(Parse *pParse){
           pSel->pSrc = 0;
           sqlite3SelectDelete(db, pSel);
         }
-        if( pStep->pFrom ){
+        if( ALWAYS(pStep->pSrc) ){
           int i;
-          for(i=0; i<pStep->pFrom->nSrc && rc==SQLITE_OK; i++){
-            SrcItem *p = &pStep->pFrom->a[i];
+          for(i=0; i<pStep->pSrc->nSrc && rc==SQLITE_OK; i++){
+            SrcItem *p = &pStep->pSrc->a[i];
             if( p->fg.isSubquery ){
               assert( p->u4.pSubq!=0 );
               sqlite3SelectPrep(pParse, p->u4.pSubq->pSelect, 0);
@@ -120557,13 +120964,13 @@ static void renameWalkTrigger(Walker *pWalker, Trigger *pTrigger){
       sqlite3WalkExpr(pWalker, pUpsert->pUpsertWhere);
       sqlite3WalkExpr(pWalker, pUpsert->pUpsertTargetWhere);
     }
-    if( pStep->pFrom ){
+    if( pStep->pSrc ){
       int i;
-      SrcList *pFrom = pStep->pFrom;
-      for(i=0; i<pFrom->nSrc; i++){
-        if( pFrom->a[i].fg.isSubquery ){
-          assert( pFrom->a[i].u4.pSubq!=0 );
-          sqlite3WalkSelect(pWalker, pFrom->a[i].u4.pSubq->pSelect);
+      SrcList *pSrc = pStep->pSrc;
+      for(i=0; i<pSrc->nSrc; i++){
+        if( pSrc->a[i].fg.isSubquery ){
+          assert( pSrc->a[i].u4.pSubq!=0 );
+          sqlite3WalkSelect(pWalker, pSrc->a[i].u4.pSubq->pSelect);
         }
       }
     }
@@ -120734,8 +121141,8 @@ static void renameColumnFunc(
     if( rc!=SQLITE_OK ) goto renameColumnFunc_done;
 
     for(pStep=sParse.pNewTrigger->step_list; pStep; pStep=pStep->pNext){
-      if( pStep->zTarget ){
-        Table *pTarget = sqlite3LocateTable(&sParse, 0, pStep->zTarget, zDb);
+      if( pStep->pSrc ){
+        Table *pTarget = sqlite3LocateTableItem(&sParse, 0, &pStep->pSrc->a[0]);
         if( pTarget==pTab ){
           if( pStep->pUpsert ){
             ExprList *pUpsertSet = pStep->pUpsert->pUpsertSet;
@@ -120747,7 +121154,6 @@ static void renameColumnFunc(
       }
     }
 
-
     /* Find tokens to edit in UPDATE OF clause */
     if( sParse.pTriggerTab==pTab ){
       renameColumnIdlistNames(&sParse, &sCtx,sParse.pNewTrigger->pColumns,zOld);
@@ -120949,13 +121355,10 @@ static void renameTableFunc(
           if( rc==SQLITE_OK ){
             renameWalkTrigger(&sWalker, pTrigger);
             for(pStep=pTrigger->step_list; pStep; pStep=pStep->pNext){
-              if( pStep->zTarget && 0==sqlite3_stricmp(pStep->zTarget, zOld) ){
-                renameTokenFind(&sParse, &sCtx, pStep->zTarget);
-              }
-              if( pStep->pFrom ){
+              if( pStep->pSrc ){
                 int i;
-                for(i=0; i<pStep->pFrom->nSrc; i++){
-                  SrcItem *pItem = &pStep->pFrom->a[i];
+                for(i=0; i<pStep->pSrc->nSrc; i++){
+                  SrcItem *pItem = &pStep->pSrc->a[i];
                   if( 0==sqlite3_stricmp(pItem->zName, zOld) ){
                     renameTokenFind(&sParse, &sCtx, pItem->zName);
                   }
@@ -121202,6 +121605,57 @@ static void renameTableTest(
 #endif
 }
 
+
+/*
+** Return the number of bytes until the end of the next non-whitespace and
+** non-comment token.  For the purpose of this function, a "(" token includes
+** all of the bytes through and including the matching ")", or until the
+** first illegal token, whichever comes first.
+**
+** Write the token type into *piToken.
+**
+** The value returned is the number of bytes in the token itself plus
+** the number of bytes of leading whitespace and comments skipped plus
+** all bytes through the next matching ")" if the token is TK_LP.
+**
+** Example:    (Note: '.' used in place of '*' in the example z[] text)
+**
+**                                    ,--------- *piToken := TK_RP
+**                                    v
+**    z[] = " /.comment./ --comment\n (two three four) five"
+**          |                                        |
+**          |<-------------------------------------->|
+**                              |
+**                              `--- return value
+*/
+static int getConstraintToken(const u8 *z, int *piToken){
+  int iOff = 0;
+  int t = 0;
+  do {
+    iOff += sqlite3GetToken(&z[iOff], &t);
+  }while( t==TK_SPACE || t==TK_COMMENT );
+
+  *piToken = t;
+
+  if( t==TK_LP ){
+    int nNest = 1;
+    while( nNest>0 ){
+      iOff += sqlite3GetToken(&z[iOff], &t);
+      if( t==TK_LP ){
+        nNest++;
+      }else if( t==TK_RP ){
+        t = TK_LP;
+        nNest--;
+      }else if( t==TK_ILLEGAL ){
+        break;
+      }
+    }
+  }
+
+  *piToken = t;
+  return iOff;
+}
+
 /*
 ** The implementation of internal UDF sqlite_drop_column().
 **
@@ -121246,15 +121700,24 @@ static void dropColumnFunc(
     goto drop_column_done;
   }
 
-  pCol = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol].zCnName);
   if( iCol<pTab->nCol-1 ){
     RenameToken *pEnd;
+    pCol = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol].zCnName);
     pEnd = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol+1].zCnName);
     zEnd = (const char*)pEnd->t.z;
   }else{
+    int eTok;
     assert( IsOrdinaryTable(pTab) );
+    assert( iCol!=0 );
+    /* Point pCol->t.z at the "," immediately preceding the definition of
+    ** the column being dropped. To do this, start at the name of the
+    ** previous column, and tokenize until the next ",".  */
+    pCol = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol-1].zCnName);
+    do {
+      pCol->t.z += getConstraintToken((const u8*)pCol->t.z, &eTok);
+    }while( eTok!=TK_COMMA );
+    pCol->t.z--;
     zEnd = (const char*)&zSql[pTab->u.tab.addColOffset];
-    while( ALWAYS(pCol->t.z[0]!=0) && pCol->t.z[0]!=',' ) pCol->t.z--;
   }
 
   zNew = sqlite3MPrintf(db, "%.*s%s", pCol->t.z-zSql, zSql, zEnd);
@@ -121423,6 +121886,651 @@ SQLITE_PRIVATE void sqlite3AlterDropColumn(Parse *pParse, SrcList *pSrc, const T
   sqlite3SrcListDelete(db, pSrc);
 }
 
+/*
+** Return the number of bytes of leading whitespace/comments in string z[].
+*/
+static int getWhitespace(const u8 *z){
+  int nRet = 0;
+  while( 1 ){
+    int t = 0;
+    int n = sqlite3GetToken(&z[nRet], &t);
+    if( t!=TK_SPACE && t!=TK_COMMENT ) break;
+    nRet += n;
+  }
+  return nRet;
+}
+
+
+/*
+** Argument z points into the body of a constraint - specifically the
+** second token of the constraint definition.  For a named constraint,
+** z points to the first token past the CONSTRAINT keyword.  For an
+** unnamed NOT NULL constraint, z points to the first byte past the NOT
+** keyword.
+**
+** Return the number of bytes until the end of the constraint.
+*/
+static int getConstraint(const u8 *z){
+  int iOff = 0;
+  int t = 0;
+
+  /* Now, the current constraint proceeds until the next occurence of one
+  ** of the following tokens:
+  **
+  **   CONSTRAINT, PRIMARY, NOT, UNIQUE, CHECK, DEFAULT,
+  **   COLLATE, REFERENCES, FOREIGN, GENERATED, AS, RP, or COMMA
+  **
+  ** Also exit the loop if ILLEGAL turns up.
+  */
+  while( 1 ){
+    int n = getConstraintToken(&z[iOff], &t);
+    if( t==TK_CONSTRAINT || t==TK_PRIMARY || t==TK_NOT || t==TK_UNIQUE
+     || t==TK_CHECK || t==TK_DEFAULT || t==TK_COLLATE || t==TK_REFERENCES
+     || t==TK_FOREIGN || t==TK_RP || t==TK_COMMA || t==TK_ILLEGAL
+     || t==TK_AS || t==TK_GENERATED
+    ){
+      break;
+    }
+    iOff += n;
+  }
+
+  return iOff;
+}
+
+/*
+** Compare two constraint names.
+**
+** Summary:   *pRes := zQuote != zCmp
+**
+** Details:
+** Compare the (possibly quoted) constraint name zQuote[0..nQuote-1]
+** against zCmp[].  Write zero into *pRes if they are the same and
+** non-zero if they differ.  Normally return SQLITE_OK, except if there
+** is an OOM, set the OOM error condition on ctx and return SQLITE_NOMEM.
+*/
+static int quotedCompare(
+  sqlite3_context *ctx,  /* Function context on which to report errors */
+  int t,                 /* Token type */
+  const u8 *zQuote,      /* Possibly quoted text.  Not zero-terminated. */
+  int nQuote,            /* Length of zQuote in bytes */
+  const u8 *zCmp,        /* Zero-terminated, unquoted name to compare against */
+  int *pRes              /* OUT: Set to 0 if equal, non-zero if unequal */
+){
+  char *zCopy = 0;       /* De-quoted, zero-terminated copy of zQuote[] */
+
+  if( t==TK_ILLEGAL ){
+    *pRes = 1;
+    return SQLITE_OK;
+  }
+  zCopy = sqlite3MallocZero(nQuote+1);
+  if( zCopy==0 ){
+    sqlite3_result_error_nomem(ctx);
+    return SQLITE_NOMEM_BKPT;
+  }
+  memcpy(zCopy, zQuote, nQuote);
+  sqlite3Dequote(zCopy);
+  *pRes = sqlite3_stricmp((const char*)zCopy, (const char*)zCmp);
+  sqlite3_free(zCopy);
+  return SQLITE_OK;
+}
+
+/*
+** zSql[] is a CREATE TABLE statement, supposedly.  Find the offset
+** into zSql[] of the first character past the first "(" and write
+** that offset into *piOff and return SQLITE_OK.  Or, if not found,
+** set the SQLITE_CORRUPT error code and return SQLITE_ERROR.
+*/
+static int skipCreateTable(sqlite3_context *ctx, const u8 *zSql, int *piOff){
+  int iOff = 0;
+
+  if( zSql==0 ) return SQLITE_ERROR;
+
+  /* Jump past the "CREATE TABLE" bit. */
+  while( 1 ){
+    int t = 0;
+    iOff += sqlite3GetToken(&zSql[iOff], &t);
+    if( t==TK_LP ) break;
+    if( t==TK_ILLEGAL ){
+      sqlite3_result_error_code(ctx, SQLITE_CORRUPT_BKPT);
+      return SQLITE_ERROR;
+    }
+  }
+
+  *piOff = iOff;
+  return SQLITE_OK;
+}
+
+/*
+** Internal SQL function sqlite3_drop_constraint():  Given an input
+** CREATE TABLE statement, return a revised CREATE TABLE statement
+** with a constraint removed.  Two forms, depending on the datatype
+** of argv[2]:
+**
+**   sqlite_drop_constraint(SQL, INT)  -- Omit NOT NULL from the INT-th column
+**   sqlite_drop_constraint(SQL, TEXT) -- OMIT constraint with name TEXT
+**
+** In the first case, the left-most column is 0.
+*/
+static void dropConstraintFunc(
+  sqlite3_context *ctx,
+  int NotUsed,
+  sqlite3_value **argv
+){
+  const u8 *zSql = sqlite3_value_text(argv[0]);
+  const u8 *zCons = 0;
+  int iNotNull = -1;
+  int ii;
+  int iOff = 0;
+  int iStart = 0;
+  int iEnd = 0;
+  char *zNew = 0;
+  int t = 0;
+  sqlite3 *db;
+  UNUSED_PARAMETER(NotUsed);
+
+  if( zSql==0 ) return;
+
+  /* Jump past the "CREATE TABLE" bit. */
+  if( skipCreateTable(ctx, zSql, &iOff) ) return;
+
+  if( sqlite3_value_type(argv[1])==SQLITE_INTEGER ){
+    iNotNull = sqlite3_value_int(argv[1]);
+  }else{
+    zCons = sqlite3_value_text(argv[1]);
+  }
+
+  /* Search for the named constraint within column definitions. */
+  for(ii=0; iEnd==0; ii++){
+
+    /* Now parse the column or table constraint definition. Search
+    ** for the token CONSTRAINT if this is a DROP CONSTRAINT command, or
+    ** NOT in the right column if this is a DROP NOT NULL. */
+    while( 1 ){
+      iStart = iOff;
+      iOff += getConstraintToken(&zSql[iOff], &t);
+      if( t==TK_CONSTRAINT && (zCons || iNotNull==ii) ){
+        /* Check if this is the constraint we are searching for. */
+        int nTok = 0;
+        int cmp = 1;
+
+        /* Skip past any whitespace. */
+        iOff += getWhitespace(&zSql[iOff]);
+
+        /* Compare the next token - which may be quoted - with the name of
+        ** the constraint being dropped.  */
+        nTok = getConstraintToken(&zSql[iOff], &t);
+        if( zCons ){
+          if( quotedCompare(ctx, t, &zSql[iOff], nTok, zCons, &cmp) ) return;
+        }
+        iOff += nTok;
+
+        /* The next token is usually the first token of the constraint
+        ** definition. This is enough to tell the type of the constraint -
+        ** TK_NOT means it is a NOT NULL, TK_CHECK a CHECK constraint etc.
+        **
+        ** There is also the chance that the next token is TK_CONSTRAINT
+        ** (or TK_DEFAULT or TK_COLLATE), for example if a table has been
+        ** created as follows:
+        **
+        **    CREATE TABLE t1(cols, CONSTRAINT one CONSTRAINT two NOT NULL);
+        **
+        ** In this case, allow the "CONSTRAINT one" bit to be dropped by
+        ** this command if that is what is requested, or to advance to
+        ** the next iteration of the loop with &zSql[iOff] still pointing
+        ** to the CONSTRAINT keyword.  */
+        nTok = getConstraintToken(&zSql[iOff], &t);
+        if( t==TK_CONSTRAINT || t==TK_DEFAULT || t==TK_COLLATE
+         || t==TK_COMMA || t==TK_RP || t==TK_GENERATED || t==TK_AS
+        ){
+          t = TK_CHECK;
+        }else{
+          iOff += nTok;
+          iOff += getConstraint(&zSql[iOff]);
+        }
+
+        if( cmp==0 || (iNotNull>=0 && t==TK_NOT) ){
+          if( t!=TK_NOT && t!=TK_CHECK ){
+            errorMPrintf(ctx, "constraint may not be dropped: %s", zCons);
+            return;
+          }
+          iEnd = iOff;
+          break;
+        }
+
+      }else if( t==TK_NOT && iNotNull==ii ){
+        iEnd = iOff + getConstraint(&zSql[iOff]);
+        break;
+      }else if( t==TK_RP || t==TK_ILLEGAL ){
+        iEnd = -1;
+        break;
+      }else if( t==TK_COMMA ){
+        break;
+      }
+    }
+  }
+
+  /* If the constraint has not been found it is an error. */
+  if( iEnd<=0 ){
+    if( zCons ){
+      errorMPrintf(ctx, "no such constraint: %s", zCons);
+    }else{
+      /* SQLite follows postgres in that a DROP NOT NULL on a column that is
+      ** not NOT NULL is not an error. So just return the original SQL here. */
+      sqlite3_result_text(ctx, (const char*)zSql, -1, SQLITE_TRANSIENT);
+    }
+  }else{
+
+    /* Figure out if an extra space should be inserted after the constraint
+    ** is removed. And if an additional comma preceding the constraint
+    ** should be removed. */
+    const char *zSpace = " ";
+    iEnd += getWhitespace(&zSql[iEnd]);
+    sqlite3GetToken(&zSql[iEnd], &t);
+    if( t==TK_RP || t==TK_COMMA ){
+      zSpace = "";
+      if( zSql[iStart-1]==',' ) iStart--;
+    }
+
+    db = sqlite3_context_db_handle(ctx);
+    zNew = sqlite3MPrintf(db, "%.*s%s%s", iStart, zSql, zSpace, &zSql[iEnd]);
+    sqlite3_result_text(ctx, zNew, -1, SQLITE_DYNAMIC);
+  }
+}
+
+/*
+** Internal SQL function:
+**
+**     sqlite_add_constraint(SQL, CONSTRAINT-TEXT, ICOL)
+**
+** SQL is a CREATE TABLE statement.  Return a modified version of
+** SQL that adds CONSTRAINT-TEXT at the end of the ICOL-th column
+** definition.  (The left-most column defintion is 0.)
+*/
+static void addConstraintFunc(
+  sqlite3_context *ctx,
+  int NotUsed,
+  sqlite3_value **argv
+){
+  const u8 *zSql = sqlite3_value_text(argv[0]);
+  const char *zCons = (const char*)sqlite3_value_text(argv[1]);
+  int iCol = sqlite3_value_int(argv[2]);
+  int iOff = 0;
+  int ii;
+  char *zNew = 0;
+  int t = 0;
+  sqlite3 *db;
+  UNUSED_PARAMETER(NotUsed);
+
+  if( skipCreateTable(ctx, zSql, &iOff) ) return;
+
+  for(ii=0; ii<=iCol || (iCol<0 && t!=TK_RP); ii++){
+    iOff += getConstraintToken(&zSql[iOff], &t);
+    while( 1 ){
+      int nTok = getConstraintToken(&zSql[iOff], &t);
+      if( t==TK_COMMA || t==TK_RP ) break;
+      if( t==TK_ILLEGAL ){
+        sqlite3_result_error_code(ctx, SQLITE_CORRUPT_BKPT);
+        return;
+      }
+      iOff += nTok;
+    }
+  }
+
+  iOff += getWhitespace(&zSql[iOff]);
+
+  db = sqlite3_context_db_handle(ctx);
+  if( iCol<0 ){
+    zNew = sqlite3MPrintf(db, "%.*s, %s%s", iOff, zSql, zCons, &zSql[iOff]);
+  }else{
+    zNew = sqlite3MPrintf(db, "%.*s %s%s", iOff, zSql, zCons, &zSql[iOff]);
+  }
+  sqlite3_result_text(ctx, zNew, -1, SQLITE_DYNAMIC);
+}
+
+/*
+** Find a column named pCol in table pTab. If successful, set output
+** parameter *piCol to the index of the column in the table and return
+** SQLITE_OK. Otherwise, set *piCol to -1 and return an SQLite error
+** code.
+*/
+static int alterFindCol(Parse *pParse, Table *pTab, Token *pCol, int *piCol){
+  sqlite3 *db = pParse->db;
+  char *zName = sqlite3NameFromToken(db, pCol);
+  int rc = SQLITE_NOMEM;
+  int iCol = -1;
+
+  if( zName ){
+    iCol = sqlite3ColumnIndex(pTab, zName);
+    if( iCol<0 ){
+      sqlite3ErrorMsg(pParse, "no such column: %s", zName);
+      rc = SQLITE_ERROR;
+    }else{
+      rc = SQLITE_OK;
+    }
+  }
+
+#ifndef SQLITE_OMIT_AUTHORIZATION
+  if( rc==SQLITE_OK ){
+    const char *zDb = db->aDb[sqlite3SchemaToIndex(db, pTab->pSchema)].zDbSName;
+    const char *zCol = pTab->aCol[iCol].zCnName;
+    if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, zDb, pTab->zName, zCol) ){
+      pTab = 0;
+    }
+  }
+#endif
+
+  sqlite3DbFree(db, zName);
+  *piCol = iCol;
+  return rc;
+}
+
+
+/*
+** Find the table named by the first entry in source list pSrc. If successful,
+** return a pointer to the Table structure and set output variable (*pzDb)
+** to point to the name of the database containin the table (i.e. "main",
+** "temp" or the name of an attached database).
+**
+** If the table cannot be located, return NULL. The value of the two output
+** parameters is undefined in this case.
+*/
+static Table *alterFindTable(
+  Parse *pParse,        /* Parsing context */
+  SrcList *pSrc,        /* Name of the table to look for */
+  int *piDb,            /* OUT: write the iDb here */
+  const char **pzDb,    /* OUT: write name of schema here */
+  int bAuth             /* Do ALTER TABLE authorization checks if true */
+){
+  sqlite3 *db = pParse->db;
+  Table *pTab = 0;
+  assert( sqlite3BtreeHoldsAllMutexes(db) );
+  pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
+  if( pTab ){
+    int iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
+    *pzDb = db->aDb[iDb].zDbSName;
+    *piDb = iDb;
+
+    if( SQLITE_OK!=isRealTable(pParse, pTab, 2)
+     || SQLITE_OK!=isAlterableTable(pParse, pTab)
+    ){
+      pTab = 0;
+    }
+  }
+#ifndef SQLITE_OMIT_AUTHORIZATION
+  if( pTab && bAuth ){
+    if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, *pzDb, pTab->zName, 0) ){
+      pTab = 0;
+    }
+  }
+#endif
+  sqlite3SrcListDelete(db, pSrc);
+  return pTab;
+}
+
+/*
+** Generate bytecode for one of:
+**
+**  (1)   ALTER TABLE pSrc DROP CONSTRAINT pCons
+**  (2)   ALTER TABLE pSrc ALTER pCol DROP NOT NULL
+**
+** One of pCons and pCol must be NULL and the other non-null.
+*/
+SQLITE_PRIVATE void sqlite3AlterDropConstraint(
+  Parse *pParse,    /* Parsing context */
+  SrcList *pSrc,    /* The table being altered */
+  Token *pCons,     /* Name of the constraint to drop */
+  Token *pCol       /* Name of the column from which to remove the NOT NULL */
+){
+  sqlite3 *db = pParse->db;
+  Table *pTab = 0;
+  int iDb = 0;
+  const char *zDb = 0;
+  char *zArg = 0;
+
+  assert( (pCol==0)!=(pCons==0) );
+  assert( pSrc->nSrc==1 );
+  pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, pCons!=0);
+  if( !pTab ) return;
+
+  if( pCons ){
+    zArg = sqlite3MPrintf(db, "%.*Q", pCons->n, pCons->z);
+  }else{
+    int iCol;
+    if( alterFindCol(pParse, pTab, pCol, &iCol) ) return;
+    zArg = sqlite3MPrintf(db, "%d", iCol);
+  }
+
+  /* Edit the SQL for the named table. */
+  sqlite3NestedParse(pParse,
+      "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
+      "sql = sqlite_drop_constraint(sql, %s) "
+      "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
+      , zDb, zArg, pTab->zName
+  );
+  sqlite3DbFree(db, zArg);
+
+  /* Finally, reload the database schema. */
+  renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
+}
+
+/*
+** The implementation of SQL function sqlite_fail(MSG). This takes a single
+** argument, and returns it as an error message with the error code set to
+** SQLITE_CONSTRAINT.
+*/
+static void failConstraintFunc(
+  sqlite3_context *ctx,
+  int NotUsed,
+  sqlite3_value **argv
+){
+  const char *zText = (const char*)sqlite3_value_text(argv[0]);
+  int err = sqlite3_value_int(argv[1]);
+  (void)NotUsed;
+  sqlite3_result_error(ctx, zText, -1);
+  sqlite3_result_error_code(ctx, err);
+}
+
+/*
+** Buffer pCons, which is nCons bytes in size, contains the text of a
+** NOT NULL or CHECK constraint that will be inserted into a CREATE TABLE
+** statement. If successful, this function returns the size of the buffer in
+** bytes not including any trailing whitespace or "--" style comments. Or,
+** if an OOM occurs, it returns 0 and sets db->mallocFailed to true.
+**
+** C-style comments at the end are preserved.  "--" style comments are
+** removed because the comment terminator might be \000, and we are about
+** to insert the pCons[] text into the middle of a larger string, and that
+** will have the effect of removing the comment terminator and messing up
+** the syntax.
+*/
+static int alterRtrimConstraint(
+  sqlite3 *db,                    /* used to record OOM error */
+  const char *pCons,              /* Buffer containing constraint */
+  int nCons                       /* Size of pCons in bytes */
+){
+  u8 *zTmp = (u8*)sqlite3MPrintf(db, "%.*s", nCons, pCons);
+  int iOff = 0;
+  int iEnd = 0;
+
+  if( zTmp==0 ) return 0;
+
+  while( 1 ){
+    int t = 0;
+    int nToken = sqlite3GetToken(&zTmp[iOff], &t);
+    if( t==TK_ILLEGAL ) break;
+    if( t!=TK_SPACE && (t!=TK_COMMENT || zTmp[iOff]!='-') ){
+      iEnd = iOff+nToken;
+    }
+    iOff += nToken;
+  }
+
+  sqlite3DbFree(db, zTmp);
+  return iEnd;
+}
+
+/*
+** Prepare a statement of the form:
+**
+**   ALTER TABLE pSrc ALTER pCol SET NOT NULL
+*/
+SQLITE_PRIVATE void sqlite3AlterSetNotNull(
+  Parse *pParse,   /* Parsing context */
+  SrcList *pSrc,   /* Name of the table being altered */
+  Token *pCol,     /* Name of the column to add a NOT NULL constraint to */
+  Token *pFirst    /* The NOT token of the NOT NULL constraint text */
+){
+  Table *pTab = 0;
+  int iCol = 0;
+  int iDb = 0;
+  const char *zDb = 0;
+  const char *pCons = 0;
+  int nCons = 0;
+
+  /* Look up the table being altered. */
+  assert( pSrc->nSrc==1 );
+  pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, 0);
+  if( !pTab ) return;
+
+  /* Find the column being altered. */
+  if( alterFindCol(pParse, pTab, pCol, &iCol) ){
+    return;
+  }
+
+  /* Find the length in bytes of the constraint definition */
+  pCons = pFirst->z;
+  nCons = alterRtrimConstraint(pParse->db, pCons, pParse->sLastToken.z - pCons);
+
+  /* Search for a constraint violation. Throw an exception if one is found. */
+  sqlite3NestedParse(pParse,
+      "SELECT sqlite_fail('constraint failed', %d) "
+      "FROM %Q.%Q AS x WHERE x.%.*s IS NULL",
+      SQLITE_CONSTRAINT, zDb, pTab->zName, (int)pCol->n, pCol->z
+  );
+
+  /* Edit the SQL for the named table. */
+  sqlite3NestedParse(pParse,
+      "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
+      "sql = sqlite_add_constraint(sqlite_drop_constraint(sql, %d), %.*Q, %d) "
+      "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
+      , zDb, iCol, nCons, pCons, iCol, pTab->zName
+  );
+
+  /* Finally, reload the database schema. */
+  renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
+}
+
+/*
+** Implementation of internal SQL function:
+**
+**     sqlite_find_constraint(SQL, CONSTRAINT-NAME)
+**
+** This function returns true if the SQL passed as the first argument is a
+** CREATE TABLE that contains a constraint with the name CONSTRAINT-NAME,
+** or false otherwise.
+*/
+static void findConstraintFunc(
+  sqlite3_context *ctx,
+  int NotUsed,
+  sqlite3_value **argv
+){
+  const u8 *zSql = 0;
+  const u8 *zCons = 0;
+  int iOff = 0;
+  int t = 0;
+
+  (void)NotUsed;
+  zSql = sqlite3_value_text(argv[0]);
+  zCons = sqlite3_value_text(argv[1]);
+
+  if( zSql==0 || zCons==0 ) return;
+  while( t!=TK_LP && t!=TK_ILLEGAL ){
+    iOff += sqlite3GetToken(&zSql[iOff], &t);
+  }
+
+  while( 1 ){
+    iOff += getConstraintToken(&zSql[iOff], &t);
+    if( t==TK_CONSTRAINT ){
+      int nTok = 0;
+      int cmp = 0;
+      iOff += getWhitespace(&zSql[iOff]);
+      nTok = getConstraintToken(&zSql[iOff], &t);
+      if( quotedCompare(ctx, t, &zSql[iOff], nTok, zCons, &cmp) ) return;
+      if( cmp==0 ){
+        sqlite3_result_int(ctx, 1);
+        return;
+      }
+    }else if( t==TK_ILLEGAL ){
+      break;
+    }
+  }
+
+  sqlite3_result_int(ctx, 0);
+}
+
+/*
+** Generate bytecode to implement:
+**
+**    ALTER TABLE pSrc ADD [CONSTRAINT pName] CHECK(pExpr)
+**
+** Any "ON CONFLICT" text that occurs after the "CHECK(...)", up
+** until pParse->sLastToken, is included as part of the new constraint.
+*/
+SQLITE_PRIVATE void sqlite3AlterAddConstraint(
+  Parse *pParse,           /* Parse context */
+  SrcList *pSrc,           /* Table to add constraint to */
+  Token *pFirst,           /* First token of new constraint */
+  Token *pName,            /* Name of new constraint. NULL if name omitted. */
+  const char *pExpr,       /* Text of CHECK expression */
+  int nExpr                /* Size of pExpr in bytes */
+){
+  Table *pTab = 0;         /* Table identified by pSrc */
+  int iDb = 0;             /* Which schema does pTab live in */
+  const char *zDb = 0;     /* Name of the schema in which pTab lives */
+  const char *pCons = 0;   /* Text of the constraint */
+  int nCons;               /* Bytes of text to use from pCons[] */
+
+  /* Look up the table being altered. */
+  assert( pSrc->nSrc==1 );
+  pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, 1);
+  if( !pTab ) return;
+
+  /* If this new constraint has a name, check that it is not a duplicate of
+  ** an existing constraint. It is an error if it is.  */
+  if( pName ){
+    char *zName = sqlite3NameFromToken(pParse->db, pName);
+
+    sqlite3NestedParse(pParse,
+        "SELECT sqlite_fail('constraint %q already exists', %d) "
+        "FROM \"%w\"." LEGACY_SCHEMA_TABLE " "
+        "WHERE type='table' AND tbl_name=%Q COLLATE nocase "
+        "AND sqlite_find_constraint(sql, %Q)",
+        zName, SQLITE_ERROR, zDb, pTab->zName, zName
+    );
+    sqlite3DbFree(pParse->db, zName);
+  }
+
+  /* Search for a constraint violation. Throw an exception if one is found. */
+  sqlite3NestedParse(pParse,
+      "SELECT sqlite_fail('constraint failed', %d) "
+      "FROM %Q.%Q WHERE (%.*s) IS NOT TRUE",
+      SQLITE_CONSTRAINT, zDb, pTab->zName, nExpr, pExpr
+  );
+
+  /* Edit the SQL for the named table. */
+  pCons = pFirst->z;
+  nCons = alterRtrimConstraint(pParse->db, pCons, pParse->sLastToken.z - pCons);
+
+  sqlite3NestedParse(pParse,
+      "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
+      "sql = sqlite_add_constraint(sql, %.*Q, -1) "
+      "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
+      , zDb, nCons, pCons, pTab->zName
+  );
+
+  /* Finally, reload the database schema. */
+  renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
+}
+
 /*
 ** Register built-in functions used to help implement ALTER TABLE
 */
@@ -121433,6 +122541,10 @@ SQLITE_PRIVATE void sqlite3AlterFunctions(void){
     INTERNAL_FUNCTION(sqlite_rename_test,    7, renameTableTest),
     INTERNAL_FUNCTION(sqlite_drop_column,    3, dropColumnFunc),
     INTERNAL_FUNCTION(sqlite_rename_quotefix,2, renameQuotefixFunc),
+    INTERNAL_FUNCTION(sqlite_drop_constraint,2, dropConstraintFunc),
+    INTERNAL_FUNCTION(sqlite_fail,           2, failConstraintFunc),
+    INTERNAL_FUNCTION(sqlite_add_constraint, 3, addConstraintFunc),
+    INTERNAL_FUNCTION(sqlite_find_constraint,2, findConstraintFunc),
   };
   sqlite3InsertBuiltinFuncs(aAlterTableFuncs, ArraySize(aAlterTableFuncs));
 }
@@ -124053,7 +125165,7 @@ SQLITE_PRIVATE int sqlite3FixTriggerStep(
     if( sqlite3WalkSelect(&pFix->w, pStep->pSelect)
      || sqlite3WalkExpr(&pFix->w, pStep->pWhere)
      || sqlite3WalkExprList(&pFix->w, pStep->pExprList)
-     || sqlite3FixSrcList(pFix, pStep->pFrom)
+     || sqlite3FixSrcList(pFix, pStep->pSrc)
     ){
       return 1;
     }
@@ -124160,7 +125272,7 @@ SQLITE_API int sqlite3_set_authorizer(
   sqlite3_mutex_enter(db->mutex);
   db->xAuth = (sqlite3_xauth)xAuth;
   db->pAuthArg = pArg;
-  if( db->xAuth ) sqlite3ExpirePreparedStatements(db, 1);
+  sqlite3ExpirePreparedStatements(db, 1);
   sqlite3_mutex_leave(db->mutex);
   return SQLITE_OK;
 }
@@ -124831,6 +125943,7 @@ SQLITE_PRIVATE Table *sqlite3LocateTableItem(
   const char *zDb;
   if( p->fg.fixedSchema ){
     int iDb = sqlite3SchemaToIndex(pParse->db, p->u4.pSchema);
+    assert( iDb>=0 && iDb<pParse->db->nDb );
     zDb = pParse->db->aDb[iDb].zDbSName;
   }else{
     assert( !p->fg.isSubquery );
@@ -126404,8 +127517,8 @@ SQLITE_PRIVATE void sqlite3ChangeCookie(Parse *pParse, int iDb){
 ** The estimate is conservative.  It might be larger that what is
 ** really needed.
 */
-static int identLength(const char *z){
-  int n;
+static i64 identLength(const char *z){
+  i64 n;
   for(n=0; *z; n++, z++){
     if( *z=='"' ){ n++; }
   }
@@ -126915,13 +128028,14 @@ SQLITE_PRIVATE void sqlite3MarkAllShadowTablesOf(sqlite3 *db, Table *pTab){
 ** restored to its original value prior to this routine returning.
 */
 SQLITE_PRIVATE int sqlite3ShadowTableName(sqlite3 *db, const char *zName){
-  char *zTail;                  /* Pointer to the last "_" in zName */
+  const char *zTail;            /* Pointer to the last "_" in zName */
   Table *pTab;                  /* Table that zName is a shadow of */
+  char *zCopy;
   zTail = strrchr(zName, '_');
   if( zTail==0 ) return 0;
-  *zTail = 0;
-  pTab = sqlite3FindTable(db, zName, 0);
-  *zTail = '_';
+  zCopy = sqlite3DbStrNDup(db, zName, (int)(zTail-zName));
+  pTab = zCopy ? sqlite3FindTable(db, zCopy, 0) : 0;
+  sqlite3DbFree(db, zCopy);
   if( pTab==0 ) return 0;
   if( !IsVirtual(pTab) ) return 0;
   return sqlite3IsShadowTableOf(db, pTab, zName);
@@ -127074,6 +128188,7 @@ SQLITE_PRIVATE void sqlite3EndTable(
     convertToWithoutRowidTable(pParse, p);
   }
   iDb = sqlite3SchemaToIndex(db, p->pSchema);
+  assert( iDb>=0 && iDb<=db->nDb );
 
 #ifndef SQLITE_OMIT_CHECK
   /* Resolve names in all CHECK constraint expressions.
@@ -127369,6 +128484,7 @@ SQLITE_PRIVATE void sqlite3CreateView(
 
   sqlite3TwoPartName(pParse, pName1, pName2, &pName);
   iDb = sqlite3SchemaToIndex(db, p->pSchema);
+  assert( iDb>=0 && iDb<db->nDb );
   sqlite3FixInit(&sFix, pParse, iDb, "view", pName);
   if( sqlite3FixSelect(&sFix, pSelect) ) goto create_view_fail;
 
@@ -128965,6 +130081,7 @@ SQLITE_PRIVATE void sqlite3DropIndex(Parse *pParse, SrcList *pName, int ifExists
     goto exit_drop_index;
   }
   iDb = sqlite3SchemaToIndex(db, pIndex->pSchema);
+  assert( iDb>=0 && iDb<db->nDb );
 #ifndef SQLITE_OMIT_AUTHORIZATION
   {
     int code = SQLITE_DROP_INDEX;
@@ -130799,7 +131916,7 @@ static int vtabIsReadOnly(Parse *pParse, Table *pTab){
   **   *  Only allow DELETE, INSERT, or UPDATE of non-SQLITE_VTAB_INNOCUOUS
   **      virtual tables if PRAGMA trusted_schema=ON.
   */
-  if( pParse->pToplevel!=0
+  if( (pParse->pToplevel!=0 || (pParse->prepFlags & SQLITE_PREPARE_FROM_DDL))
    && pTab->u.vtab.p->eVtabRisk >
            ((pParse->db->flags & SQLITE_TrustedSchema)!=0)
   ){
@@ -131637,7 +132754,6 @@ SQLITE_PRIVATE void sqlite3GenerateRowIndexDelete(
         &iPartIdxLabel, pPrior, r1);
     sqlite3VdbeAddOp3(v, OP_IdxDelete, iIdxCur+i, r1,
         pIdx->uniqNotNull ? pIdx->nKeyCol : pIdx->nColumn);
-    sqlite3VdbeChangeP5(v, 1);  /* Cause IdxDelete to error if no entry found */
     sqlite3ResolvePartIdxLabel(pParse, iPartIdxLabel);
     pPrior = pIdx;
   }
@@ -132212,7 +133328,7 @@ static void roundFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
       sqlite3_result_error_nomem(context);
       return;
     }
-    sqlite3AtoF(zBuf, &r, sqlite3Strlen30(zBuf), SQLITE_UTF8);
+    sqlite3AtoF(zBuf, &r);
     sqlite3_free(zBuf);
   }
   sqlite3_result_double(context, r);
@@ -132850,7 +133966,7 @@ SQLITE_PRIVATE void sqlite3QuoteValue(StrAccum *pStr, sqlite3_value *pValue, int
       sqlite3_str_appendf(pStr, "%!0.15g", r1);
       zVal = sqlite3_str_value(pStr);
       if( zVal ){
-        sqlite3AtoF(zVal, &r2, pStr->nChar, SQLITE_UTF8);
+        sqlite3AtoF(zVal, &r2);
         if( r1!=r2 ){
           sqlite3_str_reset(pStr);
           sqlite3_str_appendf(pStr, "%!0.20e", r1);
@@ -132947,7 +134063,7 @@ static void unistrFunc(
   }
   i = j = 0;
   while( i<nIn ){
-    char *z = strchr(&zIn[i],'\\');
+    const char *z = strchr(&zIn[i],'\\');
     if( z==0 ){
       n = nIn - i;
       memmove(&zOut[j], &zIn[i], n);
@@ -132984,7 +134100,7 @@ static void unistrFunc(
     }
   }
   zOut[j] = 0;
-  sqlite3_result_text64(context, zOut, j, sqlite3_free, SQLITE_UTF8);
+  sqlite3_result_text64(context, zOut, j, sqlite3_free, SQLITE_UTF8_ZT);
   return;
 
 unistr_error:
@@ -133077,7 +134193,7 @@ static void charFunc(
     }                                                    \
   }
   *zOut = 0;
-  sqlite3_result_text64(context, (char*)z, zOut-z, sqlite3_free, SQLITE_UTF8);
+  sqlite3_result_text64(context, (char*)z, zOut-z,sqlite3_free,SQLITE_UTF8_ZT);
 }
 
 /*
@@ -133106,7 +134222,7 @@ static void hexFunc(
     }
     *z = 0;
     sqlite3_result_text64(context, zHex, (u64)(z-zHex),
-                          sqlite3_free, SQLITE_UTF8);
+                          sqlite3_free, SQLITE_UTF8_ZT);
   }
 }
 
@@ -133444,7 +134560,7 @@ static void concatFuncCore(
   }
   z[j] = 0;
   assert( j<=n );
-  sqlite3_result_text64(context, z, j, sqlite3_free, SQLITE_UTF8);
+  sqlite3_result_text64(context, z, j, sqlite3_free, SQLITE_UTF8_ZT);
 }
 
 /*
@@ -134110,6 +135226,8 @@ SQLITE_PRIVATE void sqlite3RegisterLikeFunctions(sqlite3 *db, int caseSensitive)
     sqlite3CreateFunc(db, "like", nArg, SQLITE_UTF8, pInfo, likeFunc,
                       0, 0, 0, 0, 0);
     pDef = sqlite3FindFunction(db, "like", nArg, SQLITE_UTF8, 0);
+    assert( pDef!=0 ); /* The sqlite3CreateFunc() call above cannot fail
+                       ** because the "like" SQL-function already exists */
     pDef->funcFlags |= flags;
     pDef->funcFlags &= ~SQLITE_FUNC_UNSAFE;
   }
@@ -135898,6 +137016,7 @@ SQLITE_PRIVATE FKey *sqlite3FkReferences(Table *pTab){
 static void fkTriggerDelete(sqlite3 *dbMem, Trigger *p){
   if( p ){
     TriggerStep *pStep = p->step_list;
+    sqlite3SrcListDelete(dbMem, pStep->pSrc);
     sqlite3ExprDelete(dbMem, pStep->pWhere);
     sqlite3ExprListDelete(dbMem, pStep->pExprList);
     sqlite3SelectDelete(dbMem, pStep->pSelect);
@@ -136117,6 +137236,7 @@ SQLITE_PRIVATE void sqlite3FkCheck(
   if( !IsOrdinaryTable(pTab) ) return;
 
   iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
+  assert( iDb>=00 && iDb<db->nDb );
   zDb = db->aDb[iDb].zDbSName;
 
   /* Loop through all the foreign key constraints for which pTab is the
@@ -136564,14 +137684,14 @@ static Trigger *fkActionTrigger(
 
     pTrigger = (Trigger *)sqlite3DbMallocZero(db,
         sizeof(Trigger) +         /* struct Trigger */
-        sizeof(TriggerStep) +     /* Single step in trigger program */
-        nFrom + 1                 /* Space for pStep->zTarget */
+        sizeof(TriggerStep)       /* Single step in trigger program */
     );
     if( pTrigger ){
       pStep = pTrigger->step_list = (TriggerStep *)&pTrigger[1];
-      pStep->zTarget = (char *)&pStep[1];
-      memcpy((char *)pStep->zTarget, zFrom, nFrom);
-
+      pStep->pSrc = sqlite3SrcListAppend(pParse, 0, 0, 0);
+      if( pStep->pSrc ){
+        pStep->pSrc->a[0].zName = sqlite3DbStrNDup(db, zFrom, nFrom);
+      }
       pStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE);
       pStep->pExprList = sqlite3ExprListDup(db, pList, EXPRDUP_REDUCE);
       pStep->pSelect = sqlite3SelectDup(db, pSelect, EXPRDUP_REDUCE);
@@ -140628,7 +141748,11 @@ struct sqlite3_api_routines {
   /* Version 3.51.0 and later */
   int (*set_errmsg)(sqlite3*,int,const char*);
   int (*db_status64)(sqlite3*,int,sqlite3_int64*,sqlite3_int64*,int);
-
+  /* Version 3.52.0 and later */
+  void (*str_truncate)(sqlite3_str*,int);
+  void (*str_free)(sqlite3_str*);
+  int (*carray_bind)(sqlite3_stmt*,int,void*,int,int,void(*)(void*));
+  int (*carray_bind_v2)(sqlite3_stmt*,int,void*,int,int,void(*)(void*),void*);
 };
 
 /*
@@ -140967,6 +142091,11 @@ typedef int (*sqlite3_loadext_entry)(
 /* Version 3.51.0 and later */
 #define sqlite3_set_errmsg             sqlite3_api->set_errmsg
 #define sqlite3_db_status64            sqlite3_api->db_status64
+/* Version 3.52.0 and later */
+#define sqlite3_str_truncate           sqlite3_api->str_truncate
+#define sqlite3_str_free               sqlite3_api->str_free
+#define sqlite3_carray_bind            sqlite3_api->carray_bind
+#define sqlite3_carray_bind_v2         sqlite3_api->carray_bind_v2
 #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
 
 #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
@@ -141493,7 +142622,17 @@ static const sqlite3_api_routines sqlite3Apis = {
   sqlite3_setlk_timeout,
   /* Version 3.51.0 and later */
   sqlite3_set_errmsg,
-  sqlite3_db_status64
+  sqlite3_db_status64,
+  /* Version 3.52.0 and later */
+  sqlite3_str_truncate,
+  sqlite3_str_free,
+#ifdef SQLITE_ENABLE_CARRAY
+  sqlite3_carray_bind,
+  sqlite3_carray_bind_v2
+#else
+  0,
+  0
+#endif
 };
 
 /* True if x is the directory separator character
@@ -141595,33 +142734,42 @@ static int sqlite3LoadExtension(
   ** entry point name "sqlite3_extension_init" was not found, then
   ** construct an entry point name "sqlite3_X_init" where the X is
   ** replaced by the lowercase value of every ASCII alphabetic
-  ** character in the filename after the last "/" upto the first ".",
-  ** and eliding the first three characters if they are "lib".
+  ** character in the filename after the last "/" up to the first ".",
+  ** and skipping the first three characters if they are "lib".
   ** Examples:
   **
   **    /usr/local/lib/libExample5.4.3.so ==>  sqlite3_example_init
   **    C:/lib/mathfuncs.dll              ==>  sqlite3_mathfuncs_init
+  **
+  ** If that still finds no entry point, repeat a second time but this
+  ** time include both alphabetic and numeric characters up to the first
+  ** ".".  Example:
+  **
+  **    /usr/local/lib/libExample5.4.3.so ==>  sqlite3_example5_init
   */
   if( xInit==0 && zProc==0 ){
     int iFile, iEntry, c;
     int ncFile = sqlite3Strlen30(zFile);
+    int cnt = 0;
     zAltEntry = sqlite3_malloc64(ncFile+30);
     if( zAltEntry==0 ){
       sqlite3OsDlClose(pVfs, handle);
       return SQLITE_NOMEM_BKPT;
     }
-    memcpy(zAltEntry, "sqlite3_", 8);
-    for(iFile=ncFile-1; iFile>=0 && !DirSep(zFile[iFile]); iFile--){}
-    iFile++;
-    if( sqlite3_strnicmp(zFile+iFile, "lib", 3)==0 ) iFile += 3;
-    for(iEntry=8; (c = zFile[iFile])!=0 && c!='.'; iFile++){
-      if( sqlite3Isalpha(c) ){
-        zAltEntry[iEntry++] = (char)sqlite3UpperToLower[(unsigned)c];
+    do{
+      memcpy(zAltEntry, "sqlite3_", 8);
+      for(iFile=ncFile-1; iFile>=0 && !DirSep(zFile[iFile]); iFile--){}
+      iFile++;
+      if( sqlite3_strnicmp(zFile+iFile, "lib", 3)==0 ) iFile += 3;
+      for(iEntry=8; (c = zFile[iFile])!=0 && c!='.'; iFile++){
+        if( sqlite3Isalpha(c) || (cnt && sqlite3Isdigit(c)) ){
+          zAltEntry[iEntry++] = (char)sqlite3UpperToLower[(unsigned)c];
+        }
       }
-    }
-    memcpy(zAltEntry+iEntry, "_init", 6);
-    zEntry = zAltEntry;
-    xInit = (sqlite3_loadext_entry)sqlite3OsDlSym(pVfs, handle, zEntry);
+      memcpy(zAltEntry+iEntry, "_init", 6);
+      zEntry = zAltEntry;
+      xInit = (sqlite3_loadext_entry)sqlite3OsDlSym(pVfs, handle, zEntry);
+    }while( xInit==0 && (++cnt)<2 );
   }
   if( xInit==0 ){
     if( pzErrMsg ){
@@ -145693,7 +146841,8 @@ static void corruptSchema(
     static const char *azAlterType[] = {
        "rename",
        "drop column",
-       "add column"
+       "add column",
+       "drop constraint"
     };
     *pData->pzErrMsg = sqlite3MPrintf(db,
         "error in %s %s after %s: %s", azObj[0], azObj[1],
@@ -146776,7 +147925,7 @@ SQLITE_API int sqlite3_prepare16_v3(
 */
 typedef struct DistinctCtx DistinctCtx;
 struct DistinctCtx {
-  u8 isTnct;      /* 0: Not distinct. 1: DISTICT  2: DISTINCT and ORDER BY */
+  u8 isTnct;      /* 0: Not distinct. 1: DISTINCT  2: DISTINCT and ORDER BY */
   u8 eTnctType;   /* One of the WHERE_DISTINCT_* operators */
   int tabTnct;    /* Ephemeral table used for DISTINCT processing */
   int addrTnct;   /* Address of OP_OpenEphemeral opcode for tabTnct */
@@ -146906,8 +148055,6 @@ SQLITE_PRIVATE Select *sqlite3SelectNew(
   pNew->iLimit = 0;
   pNew->iOffset = 0;
   pNew->selId = ++pParse->nSelect;
-  pNew->addrOpenEphm[0] = -1;
-  pNew->addrOpenEphm[1] = -1;
   pNew->nSelectRow = 0;
   if( pSrc==0 ) pSrc = sqlite3DbMallocZero(pParse->db, SZ_SRCLIST_1);
   pNew->pSrc = pSrc;
@@ -147416,6 +148563,10 @@ static int sqlite3ProcessJoin(Parse *pParse, Select *p){
       pRight->fg.isOn = 1;
       p->selFlags |= SF_OnToWhere;
     }
+
+    if( IsVirtual(pRightTab) && joinType==EP_OuterON && pRight->u1.pFuncArg ){
+      p->selFlags |= SF_OnToWhere;
+    }
   }
   return 0;
 }
@@ -148055,29 +149206,6 @@ static void selectInnerLoop(
   }
 
   switch( eDest ){
-    /* In this mode, write each query result to the key of the temporary
-    ** table iParm.
-    */
-#ifndef SQLITE_OMIT_COMPOUND_SELECT
-    case SRT_Union: {
-      int r1;
-      r1 = sqlite3GetTempReg(pParse);
-      sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r1);
-      sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, regResult, nResultCol);
-      sqlite3ReleaseTempReg(pParse, r1);
-      break;
-    }
-
-    /* Construct a record from the query result, but instead of
-    ** saving that record, use it as a key to delete elements from
-    ** the temporary table iParm.
-    */
-    case SRT_Except: {
-      sqlite3VdbeAddOp3(v, OP_IdxDelete, iParm, regResult, nResultCol);
-      break;
-    }
-#endif /* SQLITE_OMIT_COMPOUND_SELECT */
-
     /* Store the result as data using a unique key.
     */
     case SRT_Fifo:
@@ -149190,8 +150318,8 @@ SQLITE_PRIVATE void sqlite3SubqueryColumnTypes(
       }
     }
     if( zType ){
-      const i64 k = sqlite3Strlen30(zType);
-      n = sqlite3Strlen30(pCol->zCnName);
+      const i64 k = strlen(zType);
+      n = strlen(pCol->zCnName);
       pCol->zCnName = sqlite3DbReallocOrFree(db, pCol->zCnName, n+k+2);
       pCol->colFlags &= ~(COLFLAG_HASTYPE|COLFLAG_HASCOLL);
       if( pCol->zCnName ){
@@ -149364,9 +150492,9 @@ static CollSeq *multiSelectCollSeq(Parse *pParse, Select *p, int iCol){
 ** function is responsible for ensuring that this structure is eventually
 ** freed.
 */
-static KeyInfo *multiSelectOrderByKeyInfo(Parse *pParse, Select *p, int nExtra){
+static KeyInfo *multiSelectByMergeKeyInfo(Parse *pParse, Select *p, int nExtra){
   ExprList *pOrderBy = p->pOrderBy;
-  int nOrderBy = ALWAYS(pOrderBy!=0) ? pOrderBy->nExpr : 0;
+  int nOrderBy = (pOrderBy!=0) ? pOrderBy->nExpr : 0;
   sqlite3 *db = pParse->db;
   KeyInfo *pRet = sqlite3KeyInfoAlloc(db, nOrderBy+nExtra, 1);
   if( pRet ){
@@ -149499,7 +150627,7 @@ static void generateWithRecursiveQuery(
   regCurrent = ++pParse->nMem;
   sqlite3VdbeAddOp3(v, OP_OpenPseudo, iCurrent, regCurrent, nCol);
   if( pOrderBy ){
-    KeyInfo *pKeyInfo = multiSelectOrderByKeyInfo(pParse, p, 1);
+    KeyInfo *pKeyInfo = multiSelectByMergeKeyInfo(pParse, p, 1);
     sqlite3VdbeAddOp4(v, OP_OpenEphemeral, iQueue, pOrderBy->nExpr+2, 0,
                       (char*)pKeyInfo, P4_KEYINFO);
     destQueue.pOrderBy = pOrderBy;
@@ -149508,8 +150636,28 @@ static void generateWithRecursiveQuery(
   }
   VdbeComment((v, "Queue table"));
   if( iDistinct ){
-    p->addrOpenEphm[0] = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, iDistinct, 0);
-    p->selFlags |= SF_UsesEphemeral;
+    /* Generate an ephemeral table used to enforce distinctness on the
+    ** output of the recursive part of the CTE.
+    */
+    KeyInfo *pKeyInfo;            /* Collating sequence for the result set */
+    CollSeq **apColl;             /* For looping through pKeyInfo->aColl[] */
+
+    assert( p->pNext==0 );
+    assert( p->pEList!=0 );
+    nCol = p->pEList->nExpr;
+    pKeyInfo = sqlite3KeyInfoAlloc(pParse->db, nCol, 1);
+    if( pKeyInfo ){
+      for(i=0, apColl=pKeyInfo->aColl; i<nCol; i++, apColl++){
+        *apColl = multiSelectCollSeq(pParse, p, i);
+        if( 0==*apColl ){
+          *apColl = pParse->db->pDfltColl;
+        }
+      }
+      sqlite3VdbeAddOp4(v, OP_OpenEphemeral, iDistinct, nCol, 0,
+                           (void*)pKeyInfo, P4_KEYINFO);
+    }else{
+      assert( pParse->nErr>0 );
+    }
   }
 
   /* Detach the ORDER BY clause from the compound SELECT */
@@ -149584,7 +150732,7 @@ static void generateWithRecursiveQuery(
 #endif /* SQLITE_OMIT_CTE */
 
 /* Forward references */
-static int multiSelectOrderBy(
+static int multiSelectByMerge(
   Parse *pParse,        /* Parsing context */
   Select *p,            /* The right-most of SELECTs to be coded */
   SelectDest *pDest     /* What to do with query results */
@@ -149733,12 +150881,26 @@ static int multiSelect(
     generateWithRecursiveQuery(pParse, p, &dest);
   }else
 #endif
-
-  /* Compound SELECTs that have an ORDER BY clause are handled separately.
-  */
   if( p->pOrderBy ){
-    return multiSelectOrderBy(pParse, p, pDest);
-  }else{
+    /* If the compound has an ORDER BY clause, then always use the merge
+    ** algorithm. */
+    return multiSelectByMerge(pParse, p, pDest);
+  }else if( p->op!=TK_ALL ){
+    /* If the compound is EXCEPT, INTERSECT, or UNION (anything other than
+    ** UNION ALL) then also always use the merge algorithm.  However, the
+    ** multiSelectByMerge() routine requires that the compound have an
+    ** ORDER BY clause, and it doesn't right now.  So invent one first. */
+    Expr *pOne = sqlite3ExprInt32(db, 1);
+    p->pOrderBy = sqlite3ExprListAppend(pParse, 0, pOne);
+    if( pParse->nErr ) goto multi_select_end;
+    assert( p->pOrderBy!=0 );
+    p->pOrderBy->a[0].u.x.iOrderByCol = 1;
+    return multiSelectByMerge(pParse, p, pDest);
+  }else{
+    /* For a UNION ALL compound without ORDER BY, simply run the left
+    ** query, then run the right query */
+    int addr = 0;
+    int nLimit = 0;  /* Initialize to suppress harmless compiler warning */
 
 #ifndef SQLITE_OMIT_EXPLAIN
     if( pPrior->pPrior==0 ){
@@ -149746,300 +150908,49 @@ static int multiSelect(
       ExplainQueryPlan((pParse, 1, "LEFT-MOST SUBQUERY"));
     }
 #endif
-
-    /* Generate code for the left and right SELECT statements.
-    */
-    switch( p->op ){
-      case TK_ALL: {
-        int addr = 0;
-        int nLimit = 0;  /* Initialize to suppress harmless compiler warning */
-        assert( !pPrior->pLimit );
-        pPrior->iLimit = p->iLimit;
-        pPrior->iOffset = p->iOffset;
-        pPrior->pLimit = p->pLimit;
-        TREETRACE(0x200, pParse, p, ("multiSelect UNION ALL left...\n"));
-        rc = sqlite3Select(pParse, pPrior, &dest);
-        pPrior->pLimit = 0;
-        if( rc ){
-          goto multi_select_end;
-        }
-        p->pPrior = 0;
-        p->iLimit = pPrior->iLimit;
-        p->iOffset = pPrior->iOffset;
-        if( p->iLimit ){
-          addr = sqlite3VdbeAddOp1(v, OP_IfNot, p->iLimit); VdbeCoverage(v);
-          VdbeComment((v, "Jump ahead if LIMIT reached"));
-          if( p->iOffset ){
-            sqlite3VdbeAddOp3(v, OP_OffsetLimit,
-                              p->iLimit, p->iOffset+1, p->iOffset);
-          }
-        }
-        ExplainQueryPlan((pParse, 1, "UNION ALL"));
-        TREETRACE(0x200, pParse, p, ("multiSelect UNION ALL right...\n"));
-        rc = sqlite3Select(pParse, p, &dest);
-        testcase( rc!=SQLITE_OK );
-        pDelete = p->pPrior;
-        p->pPrior = pPrior;
-        p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
-        if( p->pLimit
-         && sqlite3ExprIsInteger(p->pLimit->pLeft, &nLimit, pParse)
-         && nLimit>0 && p->nSelectRow > sqlite3LogEst((u64)nLimit)
-        ){
-          p->nSelectRow = sqlite3LogEst((u64)nLimit);
-        }
-        if( addr ){
-          sqlite3VdbeJumpHere(v, addr);
-        }
-        break;
-      }
-      case TK_EXCEPT:
-      case TK_UNION: {
-        int unionTab;    /* Cursor number of the temp table holding result */
-        u8 op = 0;       /* One of the SRT_ operations to apply to self */
-        int priorOp;     /* The SRT_ operation to apply to prior selects */
-        Expr *pLimit;    /* Saved values of p->nLimit  */
-        int addr;
-        int emptyBypass = 0;   /* IfEmpty opcode to bypass RHS */
-        SelectDest uniondest;
-
-
-        testcase( p->op==TK_EXCEPT );
-        testcase( p->op==TK_UNION );
-        priorOp = SRT_Union;
-        if( dest.eDest==priorOp ){
-          /* We can reuse a temporary table generated by a SELECT to our
-          ** right.
-          */
-          assert( p->pLimit==0 );      /* Not allowed on leftward elements */
-          unionTab = dest.iSDParm;
-        }else{
-          /* We will need to create our own temporary table to hold the
-          ** intermediate results.
-          */
-          unionTab = pParse->nTab++;
-          assert( p->pOrderBy==0 );
-          addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, unionTab, 0);
-          assert( p->addrOpenEphm[0] == -1 );
-          p->addrOpenEphm[0] = addr;
-          findRightmost(p)->selFlags |= SF_UsesEphemeral;
-          assert( p->pEList );
-        }
-
-
-        /* Code the SELECT statements to our left
-        */
-        assert( !pPrior->pOrderBy );
-        sqlite3SelectDestInit(&uniondest, priorOp, unionTab);
-        TREETRACE(0x200, pParse, p, ("multiSelect EXCEPT/UNION left...\n"));
-        rc = sqlite3Select(pParse, pPrior, &uniondest);
-        if( rc ){
-          goto multi_select_end;
-        }
-
-        /* Code the current SELECT statement
-        */
-        if( p->op==TK_EXCEPT ){
-          op = SRT_Except;
-          emptyBypass = sqlite3VdbeAddOp1(v, OP_IfEmpty, unionTab);
-          VdbeCoverage(v);
-        }else{
-          assert( p->op==TK_UNION );
-          op = SRT_Union;
-        }
-        p->pPrior = 0;
-        pLimit = p->pLimit;
-        p->pLimit = 0;
-        uniondest.eDest = op;
-        ExplainQueryPlan((pParse, 1, "%s USING TEMP B-TREE",
-                          sqlite3SelectOpName(p->op)));
-        TREETRACE(0x200, pParse, p, ("multiSelect EXCEPT/UNION right...\n"));
-        rc = sqlite3Select(pParse, p, &uniondest);
-        testcase( rc!=SQLITE_OK );
-        assert( p->pOrderBy==0 );
-        pDelete = p->pPrior;
-        p->pPrior = pPrior;
-        p->pOrderBy = 0;
-        if( p->op==TK_UNION ){
-          p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
-        }
-        if( emptyBypass ) sqlite3VdbeJumpHere(v, emptyBypass);
-        sqlite3ExprDelete(db, p->pLimit);
-        p->pLimit = pLimit;
-        p->iLimit = 0;
-        p->iOffset = 0;
-
-        /* Convert the data in the temporary table into whatever form
-        ** it is that we currently need.
-        */
-        assert( unionTab==dest.iSDParm || dest.eDest!=priorOp );
-        assert( p->pEList || db->mallocFailed );
-        if( dest.eDest!=priorOp && db->mallocFailed==0 ){
-          int iCont, iBreak, iStart;
-          iBreak = sqlite3VdbeMakeLabel(pParse);
-          iCont = sqlite3VdbeMakeLabel(pParse);
-          computeLimitRegisters(pParse, p, iBreak);
-          sqlite3VdbeAddOp2(v, OP_Rewind, unionTab, iBreak); VdbeCoverage(v);
-          iStart = sqlite3VdbeCurrentAddr(v);
-          selectInnerLoop(pParse, p, unionTab,
-                          0, 0, &dest, iCont, iBreak);
-          sqlite3VdbeResolveLabel(v, iCont);
-          sqlite3VdbeAddOp2(v, OP_Next, unionTab, iStart); VdbeCoverage(v);
-          sqlite3VdbeResolveLabel(v, iBreak);
-          sqlite3VdbeAddOp2(v, OP_Close, unionTab, 0);
-        }
-        break;
-      }
-      default: assert( p->op==TK_INTERSECT ); {
-        int tab1, tab2;
-        int iCont, iBreak, iStart;
-        Expr *pLimit;
-        int addr, iLimit, iOffset;
-        SelectDest intersectdest;
-        int r1;
-        int emptyBypass;
-
-        /* INTERSECT is different from the others since it requires
-        ** two temporary tables.  Hence it has its own case.  Begin
-        ** by allocating the tables we will need.
-        */
-        tab1 = pParse->nTab++;
-        tab2 = pParse->nTab++;
-        assert( p->pOrderBy==0 );
-
-        addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, tab1, 0);
-        assert( p->addrOpenEphm[0] == -1 );
-        p->addrOpenEphm[0] = addr;
-        findRightmost(p)->selFlags |= SF_UsesEphemeral;
-        assert( p->pEList );
-
-        /* Code the SELECTs to our left into temporary table "tab1".
-        */
-        sqlite3SelectDestInit(&intersectdest, SRT_Union, tab1);
-        TREETRACE(0x400, pParse, p, ("multiSelect INTERSECT left...\n"));
-        rc = sqlite3Select(pParse, pPrior, &intersectdest);
-        if( rc ){
-          goto multi_select_end;
-        }
-
-        /* Initialize LIMIT counters before checking to see if the LHS
-        ** is empty, in case the jump is taken */
-        iBreak = sqlite3VdbeMakeLabel(pParse);
-        computeLimitRegisters(pParse, p, iBreak);
-        emptyBypass = sqlite3VdbeAddOp1(v, OP_IfEmpty, tab1); VdbeCoverage(v);
-
-        /* Code the current SELECT into temporary table "tab2"
-        */
-        addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, tab2, 0);
-        assert( p->addrOpenEphm[1] == -1 );
-        p->addrOpenEphm[1] = addr;
-
-        /* Disable prior SELECTs and the LIMIT counters during the computation
-        ** of the RHS select */
-        pLimit = p->pLimit;
-        iLimit = p->iLimit;
-        iOffset = p->iOffset;
-        p->pPrior = 0;
-        p->pLimit = 0;
-        p->iLimit = 0;
-        p->iOffset = 0;
-
-        intersectdest.iSDParm = tab2;
-        ExplainQueryPlan((pParse, 1, "%s USING TEMP B-TREE",
-                          sqlite3SelectOpName(p->op)));
-        TREETRACE(0x400, pParse, p, ("multiSelect INTERSECT right...\n"));
-        rc = sqlite3Select(pParse, p, &intersectdest);
-        testcase( rc!=SQLITE_OK );
-        pDelete = p->pPrior;
-        p->pPrior = pPrior;
-        if( p->nSelectRow>pPrior->nSelectRow ){
-          p->nSelectRow = pPrior->nSelectRow;
-        }
-        sqlite3ExprDelete(db, p->pLimit);
-
-        /* Reinstate the LIMIT counters prior to running the final intersect */
-        p->pLimit = pLimit;
-        p->iLimit = iLimit;
-        p->iOffset = iOffset;
-
-        /* Generate code to take the intersection of the two temporary
-        ** tables.
-        */
-        if( rc ) break;
-        assert( p->pEList );
-        sqlite3VdbeAddOp1(v, OP_Rewind, tab1);
-        r1 = sqlite3GetTempReg(pParse);
-        iStart = sqlite3VdbeAddOp2(v, OP_RowData, tab1, r1);
-        iCont = sqlite3VdbeMakeLabel(pParse);
-        sqlite3VdbeAddOp4Int(v, OP_NotFound, tab2, iCont, r1, 0);
-        VdbeCoverage(v);
-        sqlite3ReleaseTempReg(pParse, r1);
-        selectInnerLoop(pParse, p, tab1,
-                        0, 0, &dest, iCont, iBreak);
-        sqlite3VdbeResolveLabel(v, iCont);
-        sqlite3VdbeAddOp2(v, OP_Next, tab1, iStart); VdbeCoverage(v);
-        sqlite3VdbeResolveLabel(v, iBreak);
-        sqlite3VdbeAddOp2(v, OP_Close, tab2, 0);
-        sqlite3VdbeJumpHere(v, emptyBypass);
-        sqlite3VdbeAddOp2(v, OP_Close, tab1, 0);
-        break;
-      }
-    }
-
-  #ifndef SQLITE_OMIT_EXPLAIN
-    if( p->pNext==0 ){
-      ExplainQueryPlanPop(pParse);
-    }
-  #endif
-  }
-  if( pParse->nErr ) goto multi_select_end;
-
-  /* Compute collating sequences used by
-  ** temporary tables needed to implement the compound select.
-  ** Attach the KeyInfo structure to all temporary tables.
-  **
-  ** This section is run by the right-most SELECT statement only.
-  ** SELECT statements to the left always skip this part.  The right-most
-  ** SELECT might also skip this part if it has no ORDER BY clause and
-  ** no temp tables are required.
-  */
-  if( p->selFlags & SF_UsesEphemeral ){
-    int i;                        /* Loop counter */
-    KeyInfo *pKeyInfo;            /* Collating sequence for the result set */
-    Select *pLoop;                /* For looping through SELECT statements */
-    CollSeq **apColl;             /* For looping through pKeyInfo->aColl[] */
-    int nCol;                     /* Number of columns in result set */
-
-    assert( p->pNext==0 );
-    assert( p->pEList!=0 );
-    nCol = p->pEList->nExpr;
-    pKeyInfo = sqlite3KeyInfoAlloc(db, nCol, 1);
-    if( !pKeyInfo ){
-      rc = SQLITE_NOMEM_BKPT;
+    assert( !pPrior->pLimit );
+    pPrior->iLimit = p->iLimit;
+    pPrior->iOffset = p->iOffset;
+    pPrior->pLimit = sqlite3ExprDup(db, p->pLimit, 0);
+    TREETRACE(0x200, pParse, p, ("multiSelect UNION ALL left...\n"));
+    rc = sqlite3Select(pParse, pPrior, &dest);
+    sqlite3ExprDelete(db, pPrior->pLimit);
+    pPrior->pLimit = 0;
+    if( rc ){
       goto multi_select_end;
     }
-    for(i=0, apColl=pKeyInfo->aColl; i<nCol; i++, apColl++){
-      *apColl = multiSelectCollSeq(pParse, p, i);
-      if( 0==*apColl ){
-        *apColl = db->pDfltColl;
-      }
+    p->pPrior = 0;
+    p->iLimit = pPrior->iLimit;
+    p->iOffset = pPrior->iOffset;
+    if( p->iLimit ){
+      addr = sqlite3VdbeAddOp1(v, OP_IfNot, p->iLimit); VdbeCoverage(v);
+      VdbeComment((v, "Jump ahead if LIMIT reached"));
+      if( p->iOffset ){
+        sqlite3VdbeAddOp3(v, OP_OffsetLimit,
+                          p->iLimit, p->iOffset+1, p->iOffset);
+      }
+    }
+    ExplainQueryPlan((pParse, 1, "UNION ALL"));
+    TREETRACE(0x200, pParse, p, ("multiSelect UNION ALL right...\n"));
+    rc = sqlite3Select(pParse, p, &dest);
+    testcase( rc!=SQLITE_OK );
+    pDelete = p->pPrior;
+    p->pPrior = pPrior;
+    p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
+    if( p->pLimit
+     && sqlite3ExprIsInteger(p->pLimit->pLeft, &nLimit, pParse)
+     && nLimit>0 && p->nSelectRow > sqlite3LogEst((u64)nLimit)
+    ){
+      p->nSelectRow = sqlite3LogEst((u64)nLimit);
     }
-
-    for(pLoop=p; pLoop; pLoop=pLoop->pPrior){
-      for(i=0; i<2; i++){
-        int addr = pLoop->addrOpenEphm[i];
-        if( addr<0 ){
-          /* If [0] is unused then [1] is also unused.  So we can
-          ** always safely abort as soon as the first unused slot is found */
-          assert( pLoop->addrOpenEphm[1]<0 );
-          break;
-        }
-        sqlite3VdbeChangeP2(v, addr, nCol);
-        sqlite3VdbeChangeP4(v, addr, (char*)sqlite3KeyInfoRef(pKeyInfo),
-                            P4_KEYINFO);
-        pLoop->addrOpenEphm[i] = -1;
-      }
+    if( addr ){
+      sqlite3VdbeJumpHere(v, addr);
     }
-    sqlite3KeyInfoUnref(pKeyInfo);
+#ifndef SQLITE_OMIT_EXPLAIN
+    if( p->pNext==0 ){
+      ExplainQueryPlanPop(pParse);
+    }
+#endif
   }
 
 multi_select_end:
@@ -150071,8 +150982,8 @@ SQLITE_PRIVATE void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p){
 ** Code an output subroutine for a coroutine implementation of a
 ** SELECT statement.
 **
-** The data to be output is contained in pIn->iSdst.  There are
-** pIn->nSdst columns to be output.  pDest is where the output should
+** The data to be output is contained in an array of pIn->nSdst registers
+** starting at register pIn->iSdst.  pDest is where the output should
 ** be sent.
 **
 ** regReturn is the number of the register holding the subroutine
@@ -150101,6 +151012,8 @@ static int generateOutputSubroutine(
   int iContinue;
   int addr;
 
+  assert( pIn->eDest==SRT_Coroutine );
+
   addr = sqlite3VdbeCurrentAddr(v);
   iContinue = sqlite3VdbeMakeLabel(pParse);
 
@@ -150122,23 +151035,60 @@ static int generateOutputSubroutine(
   */
   codeOffset(v, p->iOffset, iContinue);
 
-  assert( pDest->eDest!=SRT_Exists );
-  assert( pDest->eDest!=SRT_Table );
   switch( pDest->eDest ){
     /* Store the result as data using a unique key.
     */
+    case SRT_Fifo:
+    case SRT_DistFifo:
+    case SRT_Table:
     case SRT_EphemTab: {
       int r1 = sqlite3GetTempReg(pParse);
       int r2 = sqlite3GetTempReg(pParse);
+      int iParm = pDest->iSDParm;
+      testcase( pDest->eDest==SRT_Table );
+      testcase( pDest->eDest==SRT_EphemTab );
+      testcase( pDest->eDest==SRT_Fifo );
+      testcase( pDest->eDest==SRT_DistFifo );
       sqlite3VdbeAddOp3(v, OP_MakeRecord, pIn->iSdst, pIn->nSdst, r1);
-      sqlite3VdbeAddOp2(v, OP_NewRowid, pDest->iSDParm, r2);
-      sqlite3VdbeAddOp3(v, OP_Insert, pDest->iSDParm, r1, r2);
+#if !defined(SQLITE_ENABLE_NULL_TRIM) && defined(SQLITE_DEBUG)
+      /* A destination of SRT_Table and a non-zero iSDParm2 parameter means
+      ** that this is an "UPDATE ... FROM" on a virtual table or view. In this
+      ** case set the p5 parameter of the OP_MakeRecord to OPFLAG_NOCHNG_MAGIC.
+      ** This does not affect operation in any way - it just allows MakeRecord
+      ** to process OPFLAG_NOCHANGE values without an assert() failing. */
+      if( pDest->eDest==SRT_Table && pDest->iSDParm2 ){
+        sqlite3VdbeChangeP5(v, OPFLAG_NOCHNG_MAGIC);
+      }
+#endif
+#ifndef SQLITE_OMIT_CTE
+      if( pDest->eDest==SRT_DistFifo ){
+        /* If the destination is DistFifo, then cursor (iParm+1) is open
+        ** on an ephemeral index that is used to enforce uniqueness on the
+        ** total result.  At this point, we are processing the setup portion
+        ** of the recursive CTE using the merge algorithm, so the results are
+        ** guaranteed to be unique anyhow.  But we still need to populate the
+        ** (iParm+1) cursor for use by the subsequent recursive phase.
+        */
+        sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm+1, r1,
+                             pIn->iSdst, pIn->nSdst);
+      }
+#endif
+      sqlite3VdbeAddOp2(v, OP_NewRowid, iParm, r2);
+      sqlite3VdbeAddOp3(v, OP_Insert, iParm, r1, r2);
       sqlite3VdbeChangeP5(v, OPFLAG_APPEND);
       sqlite3ReleaseTempReg(pParse, r2);
       sqlite3ReleaseTempReg(pParse, r1);
       break;
     }
 
+    /* If any row exist in the result set, record that fact and abort.
+    */
+    case SRT_Exists: {
+      sqlite3VdbeAddOp2(v, OP_Integer, 1, pDest->iSDParm);
+      /* The LIMIT clause will terminate the loop for us */
+      break;
+    }
+
 #ifndef SQLITE_OMIT_SUBQUERY
     /* If we are creating a set for an "expr IN (SELECT ...)".
     */
@@ -150185,9 +151135,51 @@ static int generateOutputSubroutine(
       break;
     }
 
+#ifndef SQLITE_OMIT_CTE
+    /* Write the results into a priority queue that is order according to
+    ** pDest->pOrderBy (in pSO).  pDest->iSDParm (in iParm) is the cursor for an
+    ** index with pSO->nExpr+2 columns.  Build a key using pSO for the first
+    ** pSO->nExpr columns, then make sure all keys are unique by adding a
+    ** final OP_Sequence column.  The last column is the record as a blob.
+    */
+    case SRT_DistQueue:
+    case SRT_Queue: {
+      int nKey;
+      int r1, r2, r3, ii;
+      ExprList *pSO;
+      int iParm = pDest->iSDParm;
+      pSO = pDest->pOrderBy;
+      assert( pSO );
+      nKey = pSO->nExpr;
+      r1 = sqlite3GetTempReg(pParse);
+      r2 = sqlite3GetTempRange(pParse, nKey+2);
+      r3 = r2+nKey+1;
+
+      sqlite3VdbeAddOp3(v, OP_MakeRecord, pIn->iSdst, pIn->nSdst, r3);
+      if( pDest->eDest==SRT_DistQueue ){
+        sqlite3VdbeAddOp2(v, OP_IdxInsert, iParm+1, r3);
+      }
+      for(ii=0; ii<nKey; ii++){
+        sqlite3VdbeAddOp2(v, OP_SCopy,
+                          pIn->iSdst + pSO->a[ii].u.x.iOrderByCol - 1,
+                          r2+ii);
+      }
+      sqlite3VdbeAddOp2(v, OP_Sequence, iParm, r2+nKey);
+      sqlite3VdbeAddOp3(v, OP_MakeRecord, r2, nKey+2, r1);
+      sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, r2, nKey+2);
+      sqlite3ReleaseTempReg(pParse, r1);
+      sqlite3ReleaseTempRange(pParse, r2, nKey+2);
+      break;
+    }
+#endif /* SQLITE_OMIT_CTE */
+
+    /* Ignore the output */
+    case SRT_Discard: {
+      break;
+    }
+
     /* If none of the above, then the result destination must be
-    ** SRT_Output.  This routine is never called with any other
-    ** destination other than the ones handled above or SRT_Output.
+    ** SRT_Output.
     **
     ** For SRT_Output, results are stored in a sequence of registers.
     ** Then the OP_ResultRow opcode is used to cause sqlite3_step() to
@@ -150215,8 +151207,9 @@ static int generateOutputSubroutine(
 }
 
 /*
-** Alternative compound select code generator for cases when there
-** is an ORDER BY clause.
+** Generate code for a compound SELECT statement using a merge
+** algorithm.  The compound must have an ORDER BY clause for this
+** to work.
 **
 ** We assume a query of the following form:
 **
@@ -150233,7 +151226,7 @@ static int generateOutputSubroutine(
 **
 **    outB:    Move the output of the selectB coroutine into the output
 **             of the compound query.  (Only generated for UNION and
-**             UNION ALL.  EXCEPT and INSERTSECT never output a row that
+**             UNION ALL.  EXCEPT and INTERSECT never output a row that
 **             appears only in B.)
 **
 **    AltB:    Called when there is data from both coroutines and A<B.
@@ -150286,10 +151279,8 @@ static int generateOutputSubroutine(
 **    AeqB: ...
 **    AgtB: ...
 **    Init: initialize coroutine registers
-**          yield coA
-**          if eof(A) goto EofA
-**          yield coB
-**          if eof(B) goto EofB
+**          yield coA, on eof goto EofA
+**          yield coB, on eof goto EofB
 **    Cmpr: Compare A, B
 **          Jump AltB, AeqB, AgtB
 **     End: ...
@@ -150297,10 +151288,10 @@ static int generateOutputSubroutine(
 ** We call AltB, AeqB, AgtB, EofA, and EofB "subroutines" but they are not
 ** actually called using Gosub and they do not Return.  EofA and EofB loop
 ** until all data is exhausted then jump to the "end" label.  AltB, AeqB,
-** and AgtB jump to either L2 or to one of EofA or EofB.
+** and AgtB jump to either Cmpr or to one of EofA or EofB.
 */
 #ifndef SQLITE_OMIT_COMPOUND_SELECT
-static int multiSelectOrderBy(
+static int multiSelectByMerge(
   Parse *pParse,        /* Parsing context */
   Select *p,            /* The right-most of SELECTs to be coded */
   SelectDest *pDest     /* What to do with query results */
@@ -150372,10 +151363,8 @@ static int multiSelectOrderBy(
         if( pItem->u.x.iOrderByCol==i ) break;
       }
       if( j==nOrderBy ){
-        Expr *pNew = sqlite3Expr(db, TK_INTEGER, 0);
+        Expr *pNew = sqlite3ExprInt32(db, i);
         if( pNew==0 ) return SQLITE_NOMEM_BKPT;
-        pNew->flags |= EP_IntValue;
-        pNew->u.iValue = i;
         p->pOrderBy = pOrderBy = sqlite3ExprListAppend(pParse, pOrderBy, pNew);
         if( pOrderBy ) pOrderBy->a[nOrderBy++].u.x.iOrderByCol = (u16)i;
       }
@@ -150383,26 +151372,29 @@ static int multiSelectOrderBy(
   }
 
   /* Compute the comparison permutation and keyinfo that is used with
-  ** the permutation used to determine if the next
-  ** row of results comes from selectA or selectB.  Also add explicit
-  ** collations to the ORDER BY clause terms so that when the subqueries
-  ** to the right and the left are evaluated, they use the correct
-  ** collation.
+  ** the permutation to determine if the next row of results comes
+  ** from selectA or selectB.  Also add literal collations to the
+  ** ORDER BY clause terms so that when selectA and selectB are
+  ** evaluated, they use the correct collation.
   */
   aPermute = sqlite3DbMallocRawNN(db, sizeof(u32)*(nOrderBy + 1));
   if( aPermute ){
     struct ExprList_item *pItem;
+    int bKeep = 0;
     aPermute[0] = nOrderBy;
     for(i=1, pItem=pOrderBy->a; i<=nOrderBy; i++, pItem++){
       assert( pItem!=0 );
       assert( pItem->u.x.iOrderByCol>0 );
       assert( pItem->u.x.iOrderByCol<=p->pEList->nExpr );
       aPermute[i] = pItem->u.x.iOrderByCol - 1;
+      if( aPermute[i]!=(u32)i-1 ) bKeep = 1;
+    }
+     if( bKeep==0 ){
+      sqlite3DbFreeNN(db, aPermute);
+      aPermute = 0;
     }
-    pKeyMerge = multiSelectOrderByKeyInfo(pParse, p, 1);
-  }else{
-    pKeyMerge = 0;
   }
+  pKeyMerge = multiSelectByMergeKeyInfo(pParse, p, 1);
 
   /* Allocate a range of temporary registers and the KeyInfo needed
   ** for the logic that removes duplicate result rows when the
@@ -150481,7 +151473,7 @@ static int multiSelectOrderBy(
   */
   addrSelectA = sqlite3VdbeCurrentAddr(v) + 1;
   addr1 = sqlite3VdbeAddOp3(v, OP_InitCoroutine, regAddrA, 0, addrSelectA);
-  VdbeComment((v, "left SELECT"));
+  VdbeComment((v, "SUBR: next-A"));
   pPrior->iLimit = regLimitA;
   ExplainQueryPlan((pParse, 1, "LEFT"));
   sqlite3Select(pParse, pPrior, &destA);
@@ -150493,7 +151485,7 @@ static int multiSelectOrderBy(
   */
   addrSelectB = sqlite3VdbeCurrentAddr(v) + 1;
   addr1 = sqlite3VdbeAddOp3(v, OP_InitCoroutine, regAddrB, 0, addrSelectB);
-  VdbeComment((v, "right SELECT"));
+  VdbeComment((v, "SUBR: next-B"));
   savedLimit = p->iLimit;
   savedOffset = p->iOffset;
   p->iLimit = regLimitB;
@@ -150507,7 +151499,7 @@ static int multiSelectOrderBy(
   /* Generate a subroutine that outputs the current row of the A
   ** select as the next output row of the compound select.
   */
-  VdbeNoopComment((v, "Output routine for A"));
+  VdbeNoopComment((v, "SUBR: out-A"));
   addrOutA = generateOutputSubroutine(pParse,
                  p, &destA, pDest, regOutA,
                  regPrev, pKeyDup, labelEnd);
@@ -150516,7 +151508,7 @@ static int multiSelectOrderBy(
   ** select as the next output row of the compound select.
   */
   if( op==TK_ALL || op==TK_UNION ){
-    VdbeNoopComment((v, "Output routine for B"));
+    VdbeNoopComment((v, "SUBR: out-B"));
     addrOutB = generateOutputSubroutine(pParse,
                  p, &destB, pDest, regOutB,
                  regPrev, pKeyDup, labelEnd);
@@ -150529,10 +151521,12 @@ static int multiSelectOrderBy(
   if( op==TK_EXCEPT || op==TK_INTERSECT ){
     addrEofA_noB = addrEofA = labelEnd;
   }else{
-    VdbeNoopComment((v, "eof-A subroutine"));
+    VdbeNoopComment((v, "SUBR: eof-A"));
     addrEofA = sqlite3VdbeAddOp2(v, OP_Gosub, regOutB, addrOutB);
+    VdbeComment((v, "out-B"));
     addrEofA_noB = sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, labelEnd);
                                      VdbeCoverage(v);
+    VdbeComment((v, "next-B"));
     sqlite3VdbeGoto(v, addrEofA);
     p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
   }
@@ -150544,17 +151538,20 @@ static int multiSelectOrderBy(
     addrEofB = addrEofA;
     if( p->nSelectRow > pPrior->nSelectRow ) p->nSelectRow = pPrior->nSelectRow;
   }else{
-    VdbeNoopComment((v, "eof-B subroutine"));
+    VdbeNoopComment((v, "SUBR: eof-B"));
     addrEofB = sqlite3VdbeAddOp2(v, OP_Gosub, regOutA, addrOutA);
+    VdbeComment((v, "out-A"));
     sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, labelEnd); VdbeCoverage(v);
+    VdbeComment((v, "next-A"));
     sqlite3VdbeGoto(v, addrEofB);
   }
 
   /* Generate code to handle the case of A<B
   */
-  VdbeNoopComment((v, "A-lt-B subroutine"));
   addrAltB = sqlite3VdbeAddOp2(v, OP_Gosub, regOutA, addrOutA);
+  VdbeComment((v, "out-A"));
   sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA); VdbeCoverage(v);
+  VdbeComment((v, "next-A"));
   sqlite3VdbeGoto(v, labelCmpr);
 
   /* Generate code to handle the case of A==B
@@ -150565,36 +151562,48 @@ static int multiSelectOrderBy(
     addrAeqB = addrAltB;
     addrAltB++;
   }else{
-    VdbeNoopComment((v, "A-eq-B subroutine"));
-    addrAeqB =
-    sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA); VdbeCoverage(v);
-    sqlite3VdbeGoto(v, labelCmpr);
+    addrAeqB = addrAltB + 1;
   }
 
   /* Generate code to handle the case of A>B
   */
-  VdbeNoopComment((v, "A-gt-B subroutine"));
   addrAgtB = sqlite3VdbeCurrentAddr(v);
   if( op==TK_ALL || op==TK_UNION ){
     sqlite3VdbeAddOp2(v, OP_Gosub, regOutB, addrOutB);
+    VdbeComment((v, "out-B"));
+    sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, addrEofB); VdbeCoverage(v);
+    VdbeComment((v, "next-B"));
+    sqlite3VdbeGoto(v, labelCmpr);
+  }else{
+    addrAgtB++; /* Just do next-B.  Might as well use the next-B call
+                ** in the next code block */
   }
-  sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, addrEofB); VdbeCoverage(v);
-  sqlite3VdbeGoto(v, labelCmpr);
 
   /* This code runs once to initialize everything.
   */
   sqlite3VdbeJumpHere(v, addr1);
   sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA_noB); VdbeCoverage(v);
+  VdbeComment((v, "next-A"));
+  /* v---  Also the A>B case for EXCEPT and INTERSECT */
   sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, addrEofB); VdbeCoverage(v);
+  VdbeComment((v, "next-B"));
 
   /* Implement the main merge loop
   */
+  if( aPermute!=0 ){
+    sqlite3VdbeAddOp4(v, OP_Permutation, 0, 0, 0, (char*)aPermute, P4_INTARRAY);
+  }
   sqlite3VdbeResolveLabel(v, labelCmpr);
-  sqlite3VdbeAddOp4(v, OP_Permutation, 0, 0, 0, (char*)aPermute, P4_INTARRAY);
   sqlite3VdbeAddOp4(v, OP_Compare, destA.iSdst, destB.iSdst, nOrderBy,
                          (char*)pKeyMerge, P4_KEYINFO);
-  sqlite3VdbeChangeP5(v, OPFLAG_PERMUTE);
-  sqlite3VdbeAddOp3(v, OP_Jump, addrAltB, addrAeqB, addrAgtB); VdbeCoverage(v);
+  if( aPermute!=0 ){
+    sqlite3VdbeChangeP5(v, OPFLAG_PERMUTE);
+  }
+  sqlite3VdbeAddOp3(v, OP_Jump, addrAltB, addrAeqB, addrAgtB);
+  VdbeCoverageIf(v, op==TK_ALL);
+  VdbeCoverageIf(v, op==TK_UNION);
+  VdbeCoverageIf(v, op==TK_EXCEPT);
+  VdbeCoverageIf(v, op==TK_INTERSECT);
 
   /* Jump to the this point in order to terminate the query.
   */
@@ -151511,7 +152520,7 @@ static int flattenSubquery(
     }
     pSubitem->fg.jointype |= jointype;
 
-    /* Now begin substituting subquery result set expressions for
+    /* Begin substituting subquery result set expressions for
     ** references to the iParent in the outer query.
     **
     ** Example:
@@ -151523,7 +152532,7 @@ static int flattenSubquery(
     ** We look at every expression in the outer query and every place we see
     ** "a" we substitute "x*3" and every place we see "b" we substitute "y+10".
     */
-    if( pSub->pOrderBy && (pParent->selFlags & SF_NoopOrderBy)==0 ){
+    if( pSub->pOrderBy ){
       /* At this point, any non-zero iOrderByCol values indicate that the
       ** ORDER BY column expression is identical to the iOrderByCol'th
       ** expression returned by SELECT statement pSub. Since these values
@@ -151531,9 +152540,9 @@ static int flattenSubquery(
       ** zero them before transferring the ORDER BY clause.
       **
       ** Not doing this may cause an error if a subsequent call to this
-      ** function attempts to flatten a compound sub-query into pParent
-      ** (the only way this can happen is if the compound sub-query is
-      ** currently part of pSub->pSrc). See ticket [d11a6e908f].  */
+      ** function attempts to flatten a compound sub-query into pParent.
+      ** See ticket [d11a6e908f].
+      */
       ExprList *pOrderBy = pSub->pOrderBy;
       for(i=0; i<pOrderBy->nExpr; i++){
         pOrderBy->a[i].u.x.iOrderByCol = 0;
@@ -152151,6 +153160,16 @@ static int pushDownWhereTerms(
       x.pEList = pSubq->pEList;
       x.pCList = findLeftmostExprlist(pSubq);
       pNew = substExpr(&x, pNew);
+      assert( pNew!=0 || pParse->nErr!=0 );
+      if( pParse->nErr==0 && pNew->op==TK_IN && ExprUseXSelect(pNew) ){
+        assert( pNew->x.pSelect!=0 );
+        pNew->x.pSelect->selFlags |= SF_ClonedRhsIn;
+        assert( pWhere!=0 );
+        assert( pWhere->op==TK_IN );
+        assert( ExprUseXSelect(pWhere) );
+        assert( pWhere->x.pSelect!=0 );
+        pWhere->x.pSelect->selFlags |= SF_ClonedRhsIn;
+      }
 #ifndef SQLITE_OMIT_WINDOWFUNC
       if( pSubq->pWin && 0==pushDownWindowCheck(pParse, pSubq, pNew) ){
         /* Restriction 6c has prevented push-down in this case */
@@ -152385,14 +153404,14 @@ SQLITE_PRIVATE int sqlite3IndexedByLookup(Parse *pParse, SrcItem *pFrom){
 **    SELECT * FROM (SELECT ... FROM t1 EXCEPT SELECT ... FROM t2)
 **     ORDER BY ... COLLATE ...
 **
-** This transformation is necessary because the multiSelectOrderBy() routine
+** This transformation is necessary because the multiSelectByMerge() routine
 ** above that generates the code for a compound SELECT with an ORDER BY clause
 ** uses a merge algorithm that requires the same collating sequence on the
 ** result columns as on the ORDER BY clause.  See ticket
 ** http://sqlite.org/src/info/6709574d2a
 **
 ** This transformation is only needed for EXCEPT, INTERSECT, and UNION.
-** The UNION ALL operator works fine with multiSelectOrderBy() even when
+** The UNION ALL operator works fine with multiSelectByMerge() even when
 ** there are COLLATE terms in the ORDER BY.
 */
 static int convertCompoundSelectToSubquery(Walker *pWalker, Select *p){
@@ -152938,7 +153957,7 @@ static int selectExpander(Walker *pWalker, Select *p){
         }
 #ifndef SQLITE_OMIT_VIRTUALTABLE
         else if( ALWAYS(IsVirtual(pTab))
-         && pFrom->fg.fromDDL
+         && (pFrom->fg.fromDDL || (pParse->prepFlags & SQLITE_PREPARE_FROM_DDL))
          && ALWAYS(pTab->u.vtab.p!=0)
          && pTab->u.vtab.p->eVtabRisk > ((db->flags & SQLITE_TrustedSchema)!=0)
         ){
@@ -153891,7 +154910,7 @@ static int havingToWhereExprCb(Walker *pWalker, Expr *pExpr){
      && pExpr->pAggInfo==0
     ){
       sqlite3 *db = pWalker->pParse->db;
-      Expr *pNew = sqlite3Expr(db, TK_INTEGER, "1");
+      Expr *pNew = sqlite3ExprInt32(db, 1);
       if( pNew ){
         Expr *pWhere = pS->pWhere;
         SWAP(Expr, *pNew, *pExpr);
@@ -154242,7 +155261,6 @@ static SQLITE_NOINLINE void existsToJoin(
         ExprSetProperty(pWhere, EP_IntValue);
         assert( p->pWhere!=0 );
         pSub->pSrc->a[0].fg.fromExists = 1;
-        pSub->pSrc->a[0].fg.jointype |= JT_CROSS;
         p->pSrc = sqlite3SrcListAppendList(pParse, p->pSrc, pSub->pSrc);
         if( pSubWhere ){
           p->pWhere = sqlite3PExpr(pParse, TK_AND, p->pWhere, pSubWhere);
@@ -154270,6 +155288,7 @@ typedef struct CheckOnCtx CheckOnCtx;
 struct CheckOnCtx {
   SrcList *pSrc;                  /* SrcList for this context */
   int iJoin;                      /* Cursor numbers must be =< than this */
+  int bFuncArg;                   /* True for table-function arg */
   CheckOnCtx *pParent;            /* Parent context */
 };
 
@@ -154321,7 +155340,9 @@ static int selectCheckOnClausesExpr(Walker *pWalker, Expr *pExpr){
       if( iTab>=pSrc->a[0].iCursor && iTab<=pSrc->a[pSrc->nSrc-1].iCursor ){
         if( pCtx->iJoin && iTab>pCtx->iJoin ){
           sqlite3ErrorMsg(pWalker->pParse,
-              "ON clause references tables to its right");
+              "%s references tables to its right",
+              (pCtx->bFuncArg ? "table-function argument" : "ON clause")
+          );
           return WRC_Abort;
         }
         break;
@@ -154356,9 +155377,10 @@ static int selectCheckOnClausesSelect(Walker *pWalker, Select *pSelect){
 ** Check all ON clauses in pSelect to verify that they do not reference
 ** columns to the right.
 */
-static void selectCheckOnClauses(Parse *pParse, Select *pSelect){
+SQLITE_PRIVATE void sqlite3SelectCheckOnClauses(Parse *pParse, Select *pSelect){
   Walker w;
   CheckOnCtx sCtx;
+  int ii;
   assert( pSelect->selFlags & SF_OnToWhere );
   assert( pSelect->pSrc!=0 && pSelect->pSrc->nSrc>=2 );
   memset(&w, 0, sizeof(w));
@@ -154368,8 +155390,46 @@ static void selectCheckOnClauses(Parse *pParse, Select *pSelect){
   w.u.pCheckOnCtx = &sCtx;
   memset(&sCtx, 0, sizeof(sCtx));
   sCtx.pSrc = pSelect->pSrc;
-  sqlite3WalkExprNN(&w, pSelect->pWhere);
+  sqlite3WalkExpr(&w, pSelect->pWhere);
   pSelect->selFlags &= ~SF_OnToWhere;
+
+  /* Check for any table-function args that are attached to virtual tables
+  ** on the RHS of an outer join. They are subject to the same constraints
+  ** as ON clauses. */
+  sCtx.bFuncArg = 1;
+  for(ii=0; ii<pSelect->pSrc->nSrc; ii++){
+    SrcItem *pItem = &pSelect->pSrc->a[ii];
+    if( pItem->fg.isTabFunc
+     && (pItem->fg.jointype & JT_OUTER)
+    ){
+      sCtx.iJoin = pItem->iCursor;
+      sqlite3WalkExprList(&w, pItem->u1.pFuncArg);
+    }
+  }
+}
+
+/*
+** If p2 exists and p1 and p2 have the same number of terms, then change
+** every term of p1 to have the same sort order as p2 and return true.
+**
+** If p2 is NULL or p1 and p2 are different lengths, then make no changes
+** and return false.
+**
+** p1 must be non-NULL.
+*/
+static int sqlite3CopySortOrder(ExprList *p1, ExprList *p2){
+  assert( p1 );
+  if( p2 && p1->nExpr==p2->nExpr ){
+    int ii;
+    for(ii=0; ii<p1->nExpr; ii++){
+      u8 sortFlags;
+      sortFlags = p2->a[ii].fg.sortFlags & KEYINFO_ORDER_DESC;
+      p1->a[ii].fg.sortFlags = sortFlags;
+    }
+    return 1;
+  }else{
+    return 0;
+  }
 }
 
 /*
@@ -154467,8 +155527,7 @@ SQLITE_PRIVATE int sqlite3Select(
   assert( p->pOrderBy==0 || pDest->eDest!=SRT_DistQueue );
   assert( p->pOrderBy==0 || pDest->eDest!=SRT_Queue );
   if( IgnorableDistinct(pDest) ){
-    assert(pDest->eDest==SRT_Exists     || pDest->eDest==SRT_Union ||
-           pDest->eDest==SRT_Except     || pDest->eDest==SRT_Discard ||
+    assert(pDest->eDest==SRT_Exists     || pDest->eDest==SRT_Discard ||
            pDest->eDest==SRT_DistQueue  || pDest->eDest==SRT_DistFifo );
     /* All of these destinations are also able to ignore the ORDER BY clause */
     if( p->pOrderBy ){
@@ -154484,7 +155543,6 @@ SQLITE_PRIVATE int sqlite3Select(
       p->pOrderBy = 0;
     }
     p->selFlags &= ~(u32)SF_Distinct;
-    p->selFlags |= SF_NoopOrderBy;
   }
   sqlite3SelectPrep(pParse, p, 0);
   if( pParse->nErr ){
@@ -154499,18 +155557,6 @@ SQLITE_PRIVATE int sqlite3Select(
   }
 #endif
 
-  /* If the SELECT statement contains ON clauses that were moved into
-  ** the WHERE clause, go through and verify that none of the terms
-  ** in the ON clauses reference tables to the right of the ON clause.
-  ** Do this now, after name resolution, but before query flattening
-  */
-  if( p->selFlags & SF_OnToWhere ){
-    selectCheckOnClauses(pParse, p);
-    if( pParse->nErr ){
-      goto select_end;
-    }
-  }
-
   /* If the SF_UFSrcCheck flag is set, then this function is being called
   ** as part of populating the temp table for an UPDATE...FROM statement.
   ** In this case, it is an error if the target object (pSrc->a[0]) name
@@ -155024,7 +156070,8 @@ SQLITE_PRIVATE int sqlite3Select(
   ** BY and DISTINCT, and an index or separate temp-table for the other.
   */
   if( (p->selFlags & (SF_Distinct|SF_Aggregate))==SF_Distinct
-   && sqlite3ExprListCompare(sSort.pOrderBy, pEList, -1)==0
+   && sqlite3CopySortOrder(pEList, sSort.pOrderBy)
+   && sqlite3ExprListCompare(pEList, sSort.pOrderBy, -1)==0
    && OptimizationEnabled(db, SQLITE_GroupByOrder)
 #ifndef SQLITE_OMIT_WINDOWFUNC
    && p->pWin==0
@@ -155238,21 +156285,10 @@ SQLITE_PRIVATE int sqlite3Select(
       ** but not actually sorted. Either way, record the fact that the
       ** ORDER BY and GROUP BY clauses are the same by setting the orderByGrp
       ** variable.  */
-      if( sSort.pOrderBy && pGroupBy->nExpr==sSort.pOrderBy->nExpr ){
-        int ii;
-        /* The GROUP BY processing doesn't care whether rows are delivered in
-        ** ASC or DESC order - only that each group is returned contiguously.
-        ** So set the ASC/DESC flags in the GROUP BY to match those in the
-        ** ORDER BY to maximize the chances of rows being delivered in an
-        ** order that makes the ORDER BY redundant.  */
-        for(ii=0; ii<pGroupBy->nExpr; ii++){
-          u8 sortFlags;
-          sortFlags = sSort.pOrderBy->a[ii].fg.sortFlags & KEYINFO_ORDER_DESC;
-          pGroupBy->a[ii].fg.sortFlags = sortFlags;
-        }
-        if( sqlite3ExprListCompare(pGroupBy, sSort.pOrderBy, -1)==0 ){
-          orderByGrp = 1;
-        }
+      if( sqlite3CopySortOrder(pGroupBy, sSort.pOrderBy)
+       && sqlite3ExprListCompare(pGroupBy, sSort.pOrderBy, -1)==0
+      ){
+        orderByGrp = 1;
       }
     }else{
       assert( 0==sqlite3LogEst(1) );
@@ -156062,7 +157098,7 @@ SQLITE_PRIVATE void sqlite3DeleteTriggerStep(sqlite3 *db, TriggerStep *pTriggerS
     sqlite3SelectDelete(db, pTmp->pSelect);
     sqlite3IdListDelete(db, pTmp->pIdList);
     sqlite3UpsertDelete(db, pTmp->pUpsert);
-    sqlite3SrcListDelete(db, pTmp->pFrom);
+    sqlite3SrcListDelete(db, pTmp->pSrc);
     sqlite3DbFree(db, pTmp->zSpan);
 
     sqlite3DbFree(db, pTmp);
@@ -156251,11 +157287,16 @@ SQLITE_PRIVATE void sqlite3BeginTrigger(
     }
   }
 
+  /* NB: The SQLITE_ALLOW_TRIGGERS_ON_SYSTEM_TABLES compile-time option is
+  ** experimental and unsupported. Do not use it unless understand the
+  ** implications and you cannot get by without this capability. */
+#if !defined(SQLITE_ALLOW_TRIGGERS_ON_SYSTEM_TABLES) /* Experimental */
   /* Do not create a trigger on a system table */
   if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0 ){
     sqlite3ErrorMsg(pParse, "cannot create trigger on system table");
     goto trigger_cleanup;
   }
+#endif
 
   /* INSTEAD of triggers are only for views and views only support INSTEAD
   ** of triggers.
@@ -156367,6 +157408,7 @@ SQLITE_PRIVATE void sqlite3FinishTrigger(
   if( NEVER(pParse->nErr) || !pTrig ) goto triggerfinish_cleanup;
   zName = pTrig->zName;
   iDb = sqlite3SchemaToIndex(pParse->db, pTrig->pSchema);
+  assert( iDb>=00 && iDb<db->nDb );
   pTrig->step_list = pStepList;
   while( pStepList ){
     pStepList->pTrig = pTrig;
@@ -156401,12 +157443,12 @@ SQLITE_PRIVATE void sqlite3FinishTrigger(
     if( sqlite3ReadOnlyShadowTables(db) ){
       TriggerStep *pStep;
       for(pStep=pTrig->step_list; pStep; pStep=pStep->pNext){
-        if( pStep->zTarget!=0
-         && sqlite3ShadowTableName(db, pStep->zTarget)
+        if( pStep->pSrc!=0
+         && sqlite3ShadowTableName(db, pStep->pSrc->a[0].zName)
         ){
           sqlite3ErrorMsg(pParse,
             "trigger \"%s\" may not write to shadow table \"%s\"",
-            pTrig->zName, pStep->zTarget);
+            pTrig->zName, pStep->pSrc->a[0].zName);
           goto triggerfinish_cleanup;
         }
       }
@@ -156497,26 +157539,39 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerSelectStep(
 static TriggerStep *triggerStepAllocate(
   Parse *pParse,              /* Parser context */
   u8 op,                      /* Trigger opcode */
-  Token *pName,               /* The target name */
+  SrcList *pTabList,          /* Target table */
   const char *zStart,         /* Start of SQL text */
   const char *zEnd            /* End of SQL text */
 ){
+  Trigger *pNew = pParse->pNewTrigger;
   sqlite3 *db = pParse->db;
-  TriggerStep *pTriggerStep;
+  TriggerStep *pTriggerStep = 0;
 
-  if( pParse->nErr ) return 0;
-  pTriggerStep = sqlite3DbMallocZero(db, sizeof(TriggerStep) + pName->n + 1);
-  if( pTriggerStep ){
-    char *z = (char*)&pTriggerStep[1];
-    memcpy(z, pName->z, pName->n);
-    sqlite3Dequote(z);
-    pTriggerStep->zTarget = z;
-    pTriggerStep->op = op;
-    pTriggerStep->zSpan = triggerSpanDup(db, zStart, zEnd);
-    if( IN_RENAME_OBJECT ){
-      sqlite3RenameTokenMap(pParse, pTriggerStep->zTarget, pName);
+  if( pParse->nErr==0 ){
+    if( pNew
+     && pNew->pSchema!=db->aDb[1].pSchema
+     && pTabList->a[0].u4.zDatabase
+    ){
+      sqlite3ErrorMsg(pParse,
+          "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
+          "statements within triggers");
+    }else{
+      pTriggerStep = sqlite3DbMallocZero(db, sizeof(TriggerStep));
+      if( pTriggerStep ){
+        pTriggerStep->pSrc = sqlite3SrcListDup(db, pTabList, EXPRDUP_REDUCE);
+        pTriggerStep->op = op;
+        pTriggerStep->zSpan = triggerSpanDup(db, zStart, zEnd);
+        if( pTriggerStep->pSrc && IN_RENAME_OBJECT ){
+          sqlite3RenameTokenRemap(pParse,
+              pTriggerStep->pSrc->a[0].zName,
+              pTabList->a[0].zName
+          );
+        }
+      }
     }
   }
+
+  sqlite3SrcListDelete(db, pTabList);
   return pTriggerStep;
 }
 
@@ -156529,7 +157584,7 @@ static TriggerStep *triggerStepAllocate(
 */
 SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep(
   Parse *pParse,      /* Parser */
-  Token *pTableName,  /* Name of the table into which we insert */
+  SrcList *pTabList,  /* Table to INSERT into */
   IdList *pColumn,    /* List of columns in pTableName to insert into */
   Select *pSelect,    /* A SELECT statement that supplies values */
   u8 orconf,          /* The conflict algorithm (OE_Abort, OE_Replace, etc.) */
@@ -156542,7 +157597,7 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep(
 
   assert(pSelect != 0 || db->mallocFailed);
 
-  pTriggerStep = triggerStepAllocate(pParse, TK_INSERT, pTableName,zStart,zEnd);
+  pTriggerStep = triggerStepAllocate(pParse, TK_INSERT, pTabList, zStart, zEnd);
   if( pTriggerStep ){
     if( IN_RENAME_OBJECT ){
       pTriggerStep->pSelect = pSelect;
@@ -156574,7 +157629,7 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep(
 */
 SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep(
   Parse *pParse,          /* Parser */
-  Token *pTableName,   /* Name of the table to be updated */
+  SrcList *pTabList,   /* Name of the table to be updated */
   SrcList *pFrom,      /* FROM clause for an UPDATE-FROM, or NULL */
   ExprList *pEList,    /* The SET clause: list of column and new values */
   Expr *pWhere,        /* The WHERE clause */
@@ -156585,21 +157640,36 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep(
   sqlite3 *db = pParse->db;
   TriggerStep *pTriggerStep;
 
-  pTriggerStep = triggerStepAllocate(pParse, TK_UPDATE, pTableName,zStart,zEnd);
+  pTriggerStep = triggerStepAllocate(pParse, TK_UPDATE, pTabList, zStart, zEnd);
   if( pTriggerStep ){
+    SrcList *pFromDup = 0;
     if( IN_RENAME_OBJECT ){
       pTriggerStep->pExprList = pEList;
       pTriggerStep->pWhere = pWhere;
-      pTriggerStep->pFrom = pFrom;
+      pFromDup = pFrom;
       pEList = 0;
       pWhere = 0;
       pFrom = 0;
     }else{
       pTriggerStep->pExprList = sqlite3ExprListDup(db, pEList, EXPRDUP_REDUCE);
       pTriggerStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE);
-      pTriggerStep->pFrom = sqlite3SrcListDup(db, pFrom, EXPRDUP_REDUCE);
+      pFromDup = sqlite3SrcListDup(db, pFrom, EXPRDUP_REDUCE);
     }
     pTriggerStep->orconf = orconf;
+
+    if( pFromDup && !IN_RENAME_OBJECT){
+      Select *pSub;
+      Token as = {0, 0};
+      pSub = sqlite3SelectNew(pParse, 0, pFromDup, 0,0,0,0, SF_NestedFrom, 0);
+      pFromDup = sqlite3SrcListAppendFromTerm(pParse, 0, 0, 0, &as, pSub ,0);
+    }
+    if( pFromDup && pTriggerStep->pSrc ){
+      pTriggerStep->pSrc = sqlite3SrcListAppendList(
+          pParse, pTriggerStep->pSrc, pFromDup
+      );
+    }else{
+      sqlite3SrcListDelete(db, pFromDup);
+    }
   }
   sqlite3ExprListDelete(db, pEList);
   sqlite3ExprDelete(db, pWhere);
@@ -156614,7 +157684,7 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep(
 */
 SQLITE_PRIVATE TriggerStep *sqlite3TriggerDeleteStep(
   Parse *pParse,          /* Parser */
-  Token *pTableName,      /* The table from which rows are deleted */
+  SrcList *pTabList,      /* The table from which rows are deleted */
   Expr *pWhere,           /* The WHERE clause */
   const char *zStart,     /* Start of SQL text */
   const char *zEnd        /* End of SQL text */
@@ -156622,7 +157692,7 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerDeleteStep(
   sqlite3 *db = pParse->db;
   TriggerStep *pTriggerStep;
 
-  pTriggerStep = triggerStepAllocate(pParse, TK_DELETE, pTableName,zStart,zEnd);
+  pTriggerStep = triggerStepAllocate(pParse, TK_DELETE, pTabList, zStart, zEnd);
   if( pTriggerStep ){
     if( IN_RENAME_OBJECT ){
       pTriggerStep->pWhere = pWhere;
@@ -156822,6 +157892,7 @@ static SQLITE_NOINLINE Trigger *triggersReallyExist(
     p = pList;
     if( (pParse->db->flags & SQLITE_EnableTrigger)==0
      && pTab->pTrigger!=0
+     && sqlite3SchemaToIndex(pParse->db, pTab->pTrigger->pSchema)!=1
     ){
       /* The SQLITE_DBCONFIG_ENABLE_TRIGGER setting is off.  That means that
       ** only TEMP triggers are allowed.  Truncate the pList so that it
@@ -156884,52 +157955,6 @@ SQLITE_PRIVATE Trigger *sqlite3TriggersExist(
   return triggersReallyExist(pParse,pTab,op,pChanges,pMask);
 }
 
-/*
-** Convert the pStep->zTarget string into a SrcList and return a pointer
-** to that SrcList.
-**
-** This routine adds a specific database name, if needed, to the target when
-** forming the SrcList.  This prevents a trigger in one database from
-** referring to a target in another database.  An exception is when the
-** trigger is in TEMP in which case it can refer to any other database it
-** wants.
-*/
-SQLITE_PRIVATE SrcList *sqlite3TriggerStepSrc(
-  Parse *pParse,       /* The parsing context */
-  TriggerStep *pStep   /* The trigger containing the target token */
-){
-  sqlite3 *db = pParse->db;
-  SrcList *pSrc;                  /* SrcList to be returned */
-  char *zName = sqlite3DbStrDup(db, pStep->zTarget);
-  pSrc = sqlite3SrcListAppend(pParse, 0, 0, 0);
-  assert( pSrc==0 || pSrc->nSrc==1 );
-  assert( zName || pSrc==0 );
-  if( pSrc ){
-    Schema *pSchema = pStep->pTrig->pSchema;
-    pSrc->a[0].zName = zName;
-    if( pSchema!=db->aDb[1].pSchema ){
-      assert( pSrc->a[0].fg.fixedSchema || pSrc->a[0].u4.zDatabase==0 );
-      pSrc->a[0].u4.pSchema = pSchema;
-      pSrc->a[0].fg.fixedSchema = 1;
-    }
-    if( pStep->pFrom ){
-      SrcList *pDup = sqlite3SrcListDup(db, pStep->pFrom, 0);
-      if( pDup && pDup->nSrc>1 && !IN_RENAME_OBJECT ){
-        Select *pSubquery;
-        Token as;
-        pSubquery = sqlite3SelectNew(pParse,0,pDup,0,0,0,0,SF_NestedFrom,0);
-        as.n = 0;
-        as.z = 0;
-        pDup = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&as,pSubquery,0);
-      }
-      pSrc = sqlite3SrcListAppendList(pParse, pSrc, pDup);
-    }
-  }else{
-    sqlite3DbFree(db, zName);
-  }
-  return pSrc;
-}
-
 /*
 ** Return true if the pExpr term from the RETURNING clause argument
 ** list is of the form "*".  Raise an error if the terms if of the
@@ -157195,7 +158220,7 @@ static int codeTriggerProgram(
     switch( pStep->op ){
       case TK_UPDATE: {
         sqlite3Update(pParse,
-          sqlite3TriggerStepSrc(pParse, pStep),
+          sqlite3SrcListDup(db, pStep->pSrc, 0),
           sqlite3ExprListDup(db, pStep->pExprList, 0),
           sqlite3ExprDup(db, pStep->pWhere, 0),
           pParse->eOrconf, 0, 0, 0
@@ -157205,7 +158230,7 @@ static int codeTriggerProgram(
       }
       case TK_INSERT: {
         sqlite3Insert(pParse,
-          sqlite3TriggerStepSrc(pParse, pStep),
+          sqlite3SrcListDup(db, pStep->pSrc, 0),
           sqlite3SelectDup(db, pStep->pSelect, 0),
           sqlite3IdListDup(db, pStep->pIdList),
           pParse->eOrconf,
@@ -157216,7 +158241,7 @@ static int codeTriggerProgram(
       }
       case TK_DELETE: {
         sqlite3DeleteFrom(pParse,
-          sqlite3TriggerStepSrc(pParse, pStep),
+          sqlite3SrcListDup(db, pStep->pSrc, 0),
           sqlite3ExprDup(db, pStep->pWhere, 0), 0, 0
         );
         sqlite3VdbeAddOp0(v, OP_ResetCount);
@@ -159538,9 +160563,11 @@ SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3RunVacuum(
   pDb = &db->aDb[nDb];
   assert( strcmp(pDb->zDbSName,zDbVacuum)==0 );
   pTemp = pDb->pBt;
+  nRes = sqlite3BtreeGetRequestedReserve(pMain);
   if( pOut ){
     sqlite3_file *id = sqlite3PagerFile(sqlite3BtreePager(pTemp));
     i64 sz = 0;
+    const char *zFilename;
     if( id->pMethods!=0 && (sqlite3OsFileSize(id, &sz)!=SQLITE_OK || sz>0) ){
       rc = SQLITE_ERROR;
       sqlite3SetString(pzErrMsg, db, "output file already exists");
@@ -159552,8 +160579,16 @@ SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3RunVacuum(
     ** they are for the database being vacuumed, except that PAGER_CACHESPILL
     ** is always set. */
     pgflags = db->aDb[iDb].safety_level | (db->flags & PAGER_FLAGS_MASK);
+
+    /* If the VACUUM INTO target file is a URI filename and if the
+    ** "reserve=N" query parameter is present, reset the reserve to the
+    ** amount specified, if the amount is within range */
+    zFilename = sqlite3BtreeGetFilename(pTemp);
+    if( ALWAYS(zFilename) ){
+      int nNew = (int)sqlite3_uri_int64(zFilename, "reserve", nRes);
+      if( nNew>=0 && nNew<=255 ) nRes = nNew;
+    }
   }
-  nRes = sqlite3BtreeGetRequestedReserve(pMain);
 
   sqlite3BtreeSetCacheSize(pTemp, db->aDb[iDb].pSchema->cache_size);
   sqlite3BtreeSetSpillSize(pTemp, sqlite3BtreeSetSpillSize(pMain,0));
@@ -163358,7 +164393,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
         if( SMASKBIT32(j) & pLoop->u.vtab.mHandleIn ){
           int iTab = pParse->nTab++;
           int iCache = ++pParse->nMem;
-          sqlite3CodeRhsOfIN(pParse, pTerm->pExpr, iTab);
+          sqlite3CodeRhsOfIN(pParse, pTerm->pExpr, iTab, 0);
           sqlite3VdbeAddOp3(v, OP_VInitIn, iTab, iTarget, iCache);
         }else{
           codeEqualityTerm(pParse, pTerm, pLevel, j, bRev, iTarget);
@@ -165017,13 +166052,14 @@ static int isLikeOrGlob(
         ){
           int isNum;
           double rDummy;
-          isNum = sqlite3AtoF(zNew, &rDummy, iTo, SQLITE_UTF8);
+          assert( zNew[iTo]==0 );
+          isNum = sqlite3AtoF(zNew, &rDummy);
           if( isNum<=0 ){
             if( iTo==1 && zNew[0]=='-' ){
               isNum = +1;
             }else{
               zNew[iTo-1]++;
-              isNum = sqlite3AtoF(zNew, &rDummy, iTo, SQLITE_UTF8);
+              isNum = sqlite3AtoF(zNew, &rDummy);
               zNew[iTo-1]--;
             }
           }
@@ -165066,6 +166102,34 @@ static int isLikeOrGlob(
 }
 #endif /* SQLITE_OMIT_LIKE_OPTIMIZATION */
 
+/*
+** If pExpr is one of "like", "glob", "match", or "regexp", then
+** return the corresponding SQLITE_INDEX_CONSTRAINT_xxxx value.
+** If not, return 0.
+**
+** pExpr is guaranteed to be a TK_FUNCTION.
+*/
+SQLITE_PRIVATE int sqlite3ExprIsLikeOperator(const Expr *pExpr){
+  static const struct {
+    const char *zOp;
+    unsigned char eOp;
+  } aOp[] = {
+    { "match",  SQLITE_INDEX_CONSTRAINT_MATCH },
+    { "glob",   SQLITE_INDEX_CONSTRAINT_GLOB },
+    { "like",   SQLITE_INDEX_CONSTRAINT_LIKE },
+    { "regexp", SQLITE_INDEX_CONSTRAINT_REGEXP }
+  };
+  int i;
+  assert( pExpr->op==TK_FUNCTION );
+  assert( !ExprHasProperty(pExpr, EP_IntValue) );
+  for(i=0; i<ArraySize(aOp); i++){
+    if( sqlite3StrICmp(pExpr->u.zToken, aOp[i].zOp)==0 ){
+      return aOp[i].eOp;
+    }
+  }
+  return 0;
+}
+
 
 #ifndef SQLITE_OMIT_VIRTUALTABLE
 /*
@@ -165102,15 +166166,6 @@ static int isAuxiliaryVtabOperator(
   Expr **ppRight                  /* Expression to left of MATCH/op2 */
 ){
   if( pExpr->op==TK_FUNCTION ){
-    static const struct Op2 {
-      const char *zOp;
-      unsigned char eOp2;
-    } aOp[] = {
-      { "match",  SQLITE_INDEX_CONSTRAINT_MATCH },
-      { "glob",   SQLITE_INDEX_CONSTRAINT_GLOB },
-      { "like",   SQLITE_INDEX_CONSTRAINT_LIKE },
-      { "regexp", SQLITE_INDEX_CONSTRAINT_REGEXP }
-    };
     ExprList *pList;
     Expr *pCol;                     /* Column reference */
     int i;
@@ -165130,16 +166185,11 @@ static int isAuxiliaryVtabOperator(
     */
     pCol = pList->a[1].pExpr;
     assert( pCol->op!=TK_COLUMN || (ExprUseYTab(pCol) && pCol->y.pTab!=0) );
-    if( ExprIsVtab(pCol) ){
-      for(i=0; i<ArraySize(aOp); i++){
-        assert( !ExprHasProperty(pExpr, EP_IntValue) );
-        if( sqlite3StrICmp(pExpr->u.zToken, aOp[i].zOp)==0 ){
-          *peOp2 = aOp[i].eOp2;
-          *ppRight = pList->a[0].pExpr;
-          *ppLeft = pCol;
-          return 1;
-        }
-      }
+    if( ExprIsVtab(pCol) && (i = sqlite3ExprIsLikeOperator(pExpr))!=0 ){
+      *peOp2 = i;
+      *ppRight = pList->a[0].pExpr;
+      *ppLeft = pCol;
+      return 1;
     }
 
     /* We can also match against the first column of overloaded
@@ -165273,16 +166323,22 @@ static void whereCombineDisjuncts(
   Expr *pNew;            /* New virtual expression */
   int op;                /* Operator for the combined expression */
   int idxNew;            /* Index in pWC of the next virtual term */
+  Expr *pA, *pB;         /* Expressions associated with pOne and pTwo */
 
   if( (pOne->wtFlags | pTwo->wtFlags) & TERM_VNULL ) return;
   if( (pOne->eOperator & (WO_EQ|WO_LT|WO_LE|WO_GT|WO_GE))==0 ) return;
   if( (pTwo->eOperator & (WO_EQ|WO_LT|WO_LE|WO_GT|WO_GE))==0 ) return;
   if( (eOp & (WO_EQ|WO_LT|WO_LE))!=eOp
    && (eOp & (WO_EQ|WO_GT|WO_GE))!=eOp ) return;
-  assert( pOne->pExpr->pLeft!=0 && pOne->pExpr->pRight!=0 );
-  assert( pTwo->pExpr->pLeft!=0 && pTwo->pExpr->pRight!=0 );
-  if( sqlite3ExprCompare(0,pOne->pExpr->pLeft, pTwo->pExpr->pLeft, -1) ) return;
-  if( sqlite3ExprCompare(0,pOne->pExpr->pRight, pTwo->pExpr->pRight,-1) )return;
+  pA = pOne->pExpr;
+  pB = pTwo->pExpr;
+  assert( pA->pLeft!=0 && pA->pRight!=0 );
+  assert( pB->pLeft!=0 && pB->pRight!=0 );
+  if( sqlite3ExprCompare(0,pA->pLeft, pB->pLeft, -1) )  return;
+  if( sqlite3ExprCompare(0,pA->pRight, pB->pRight,-1) ) return;
+  if( ExprHasProperty(pA,EP_Commuted)!=ExprHasProperty(pB,EP_Commuted) ){
+    return;
+  }
   /* If we reach this point, it means the two subterms can be combined */
   if( (eOp & (eOp-1))!=0 ){
     if( eOp & (WO_LT|WO_LE) ){
@@ -165293,7 +166349,7 @@ static void whereCombineDisjuncts(
     }
   }
   db = pWC->pWInfo->pParse->db;
-  pNew = sqlite3ExprDup(db, pOne->pExpr, 0);
+  pNew = sqlite3ExprDup(db, pA, 0);
   if( pNew==0 ) return;
   for(op=TK_EQ; eOp!=(WO_EQ<<(op-TK_EQ)); op++){ assert( op<TK_GE ); }
   pNew->op = op;
@@ -166333,13 +167389,11 @@ static void whereAddLimitExpr(
   int iVal = 0;
 
   if( sqlite3ExprIsInteger(pExpr, &iVal, pParse) && iVal>=0 ){
-    Expr *pVal = sqlite3Expr(db, TK_INTEGER, 0);
+    Expr *pVal = sqlite3ExprInt32(db, iVal);
     if( pVal==0 ) return;
-    ExprSetProperty(pVal, EP_IntValue);
-    pVal->u.iValue = iVal;
     pNew = sqlite3PExpr(pParse, TK_MATCH, 0, pVal);
   }else{
-    Expr *pVal = sqlite3Expr(db, TK_REGISTER, 0);
+    Expr *pVal = sqlite3ExprAlloc(db, TK_REGISTER, 0, 0);
     if( pVal==0 ) return;
     pVal->iTable = iReg;
     pNew = sqlite3PExpr(pParse, TK_MATCH, 0, pVal);
@@ -168166,11 +169220,14 @@ static sqlite3_index_info *allocateIndexInfo(
       break;
     }
     if( i==n ){
+      int bSortByGroup = (pWInfo->wctrlFlags & WHERE_SORTBYGROUP)!=0;
       nOrderBy = n;
       if( (pWInfo->wctrlFlags & WHERE_DISTINCTBY) && !pSrc->fg.rowidUsed ){
-        eDistinct = 2 + ((pWInfo->wctrlFlags & WHERE_SORTBYGROUP)!=0);
+        eDistinct = 2 + bSortByGroup;
       }else if( pWInfo->wctrlFlags & WHERE_GROUPBY ){
-        eDistinct = 1;
+        eDistinct = 1 - bSortByGroup;
+      }else if( pWInfo->wctrlFlags & WHERE_WANT_DISTINCT ){
+        eDistinct = 3;
       }
     }
   }
@@ -169581,6 +170638,67 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){
   return rc;
 }
 
+/*
+** Callback for estLikePatternLength().
+**
+** If this node is a string literal that is longer pWalker->sz, then set
+** pWalker->sz to the byte length of that string literal.
+**
+** pWalker->eCode indicates how to count characters:
+**
+**    eCode==0     Count as a GLOB pattern
+**    eCode==1     Count as a LIKE pattern
+*/
+static int exprNodePatternLengthEst(Walker *pWalker, Expr *pExpr){
+  if( pExpr->op==TK_STRING ){
+    int sz = 0;                    /* Pattern size in bytes */
+    u8 *z = (u8*)pExpr->u.zToken;  /* The pattern */
+    u8 c;                          /* Next character of the pattern */
+    u8 c1, c2, c3;                 /* Wildcards */
+    if( pWalker->eCode ){
+      c1 = '%';
+      c2 = '_';
+      c3 = 0;
+    }else{
+      c1 = '*';
+      c2 = '?';
+      c3 = '[';
+    }
+    while( (c = *(z++))!=0 ){
+      if( c==c3 ){
+        if( *z ) z++;
+        while( *z && *z!=']' ) z++;
+      }else if( c!=c1 && c!=c2 ){
+        sz++;
+      }
+    }
+    if( sz>pWalker->u.sz ) pWalker->u.sz = sz;
+  }
+  return WRC_Continue;
+}
+
+/*
+** Return the length of the longest string literal in the given
+** expression.
+**
+** eCode indicates how to count characters:
+**
+**    eCode==0     Count as a GLOB pattern
+**    eCode==1     Count as a LIKE pattern
+*/
+static int estLikePatternLength(Expr *p, u16 eCode){
+  Walker w;
+  w.u.sz = 0;
+  w.eCode = eCode;
+  w.xExprCallback = exprNodePatternLengthEst;
+  w.xSelectCallback = sqlite3SelectWalkFail;
+#ifdef SQLITE_DEBUG
+  w.xSelectCallback2 = sqlite3SelectWalkAssert2;
+#endif
+  sqlite3WalkExpr(&w, p);
+  return w.u.sz;
+}
+
 /*
 ** Adjust the WhereLoop.nOut value downward to account for terms of the
 ** WHERE clause that reference the loop but which are not used by an
@@ -169609,6 +170727,13 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){
 ** "x" column is boolean or else -1 or 0 or 1 is a common default value
 ** on the "x" column and so in that case only cap the output row estimate
 ** at 1/2 instead of 1/4.
+**
+** Heuristic 3:  If there is a LIKE or GLOB (or REGEXP or MATCH) operator
+** with a large constant pattern, then reduce the size of the search
+** space according to the length of the pattern, under the theory that
+** longer patterns are less likely to match.  This heuristic was added
+** to give better output-row count estimates when preparing queries for
+** the Join-Order Benchmarks.  See forum thread 2026-01-30T09:57:54z
 */
 static void whereLoopOutputAdjust(
   WhereClause *pWC,      /* The WHERE clause */
@@ -169658,13 +170783,14 @@ static void whereLoopOutputAdjust(
       }else{
         /* In the absence of explicit truth probabilities, use heuristics to
         ** guess a reasonable truth probability. */
+        Expr *pOpExpr = pTerm->pExpr;
         pLoop->nOut--;
         if( (pTerm->eOperator&(WO_EQ|WO_IS))!=0
          && (pTerm->wtFlags & TERM_HIGHTRUTH)==0  /* tag-20200224-1 */
         ){
-          Expr *pRight = pTerm->pExpr->pRight;
+          Expr *pRight = pOpExpr->pRight;
           int k = 0;
-          testcase( pTerm->pExpr->op==TK_IS );
+          testcase( pOpExpr->op==TK_IS );
           if( sqlite3ExprIsInteger(pRight, &k, 0) && k>=(-1) && k<=1 ){
             k = 10;
           }else{
@@ -169674,6 +170800,23 @@ static void whereLoopOutputAdjust(
             pTerm->wtFlags |= TERM_HEURTRUTH;
             iReduce = k;
           }
+        }else
+        if( ExprHasProperty(pOpExpr, EP_InfixFunc)
+         && pOpExpr->op==TK_FUNCTION
+        ){
+          int eOp;
+          assert( ExprUseXList(pOpExpr) );
+          assert( pOpExpr->x.pList->nExpr>=2 );
+          eOp = sqlite3ExprIsLikeOperator(pOpExpr);
+          if( ALWAYS(eOp>0) ){
+            int szPattern;
+            Expr *pRHS = pOpExpr->x.pList->a[0].pExpr;
+            eOp = eOp==SQLITE_INDEX_CONSTRAINT_LIKE;
+            szPattern = estLikePatternLength(pRHS, eOp);
+            if( szPattern>0 ){
+              pLoop->nOut -= szPattern*2;
+            }
+          }
         }
       }
     }
@@ -169745,7 +170888,7 @@ static int whereRangeVectorLen(
     idxaff = sqlite3TableColumnAffinity(pIdx->pTable, pLhs->iColumn);
     if( aff!=idxaff ) break;
 
-    pColl = sqlite3BinaryCompareCollSeq(pParse, pLhs, pRhs);
+    pColl = sqlite3ExprCompareCollSeq(pParse, pTerm->pExpr);
     if( pColl==0 ) break;
     if( sqlite3StrICmp(pColl->zName, pIdx->azColl[i+nEq]) ) break;
   }
@@ -170134,6 +171277,7 @@ static int whereLoopAddBtreeIndex(
     pNew->rRun += nInMul + nIn;
     pNew->nOut += nInMul + nIn;
     whereLoopOutputAdjust(pBuilder->pWC, pNew, rSize);
+    if( pSrc->fg.fromExists ) pNew->nOut = 0;
     rc = whereLoopInsert(pBuilder, pNew);
 
     if( pNew->wsFlags & WHERE_COLUMN_RANGE ){
@@ -170730,6 +171874,8 @@ static int whereLoopAddBtree(
       if( pSrc->fg.isSubquery ){
         if( pSrc->fg.viaCoroutine ) pNew->wsFlags |= WHERE_COROUTINE;
         pNew->u.btree.pOrderBy = pSrc->u4.pSubq->pSelect->pOrderBy;
+      }else if( pSrc->fg.fromExists ){
+        pNew->nOut = 0;
       }
       rc = whereLoopInsert(pBuilder, pNew);
       pNew->nOut = rSize;
@@ -170832,6 +171978,7 @@ static int whereLoopAddBtree(
           ** positioned to the correct row during the right-join no-match
           ** loop. */
         }else{
+          if( pSrc->fg.fromExists ) pNew->nOut = 0;
           rc = whereLoopInsert(pBuilder, pNew);
         }
         pNew->nOut = rSize;
@@ -171494,7 +172641,7 @@ static int whereLoopAddAll(WhereLoopBuilder *pBuilder){
   sqlite3 *db = pWInfo->pParse->db;
   int rc = SQLITE_OK;
   int bFirstPastRJ = 0;
-  int hasRightJoin = 0;
+  int hasRightCrossJoin = 0;
   WhereLoop *pNew;
 
 
@@ -171521,15 +172668,34 @@ static int whereLoopAddAll(WhereLoopBuilder *pBuilder){
       ** prevents the right operand of a RIGHT JOIN from being swapped with
       ** other elements even further to the right.
       **
-      ** The JT_LTORJ case and the hasRightJoin flag work together to
-      ** prevent FROM-clause terms from moving from the right side of
-      ** a LEFT JOIN over to the left side of that join if the LEFT JOIN
-      ** is itself on the left side of a RIGHT JOIN.
+      ** The hasRightCrossJoin flag prevent FROM-clause terms from moving
+      ** from the right side of a LEFT JOIN or CROSS JOIN over to the
+      ** left side of that same join.  This is a required restriction in
+      ** the case of LEFT JOIN - an incorrect answer may results if it is
+      ** not enforced.  This restriction is not required for CROSS JOIN.
+      ** It is provided merely as a means of controlling join order, under
+      ** the theory that no real-world queries that care about performance
+      ** actually use the CROSS JOIN syntax.
       */
-      if( pItem->fg.jointype & JT_LTORJ ) hasRightJoin = 1;
+      if( pItem->fg.jointype & (JT_LTORJ|JT_CROSS) ){
+        testcase( pItem->fg.jointype & JT_LTORJ );
+        testcase( pItem->fg.jointype & JT_CROSS );
+        hasRightCrossJoin = 1;
+      }
       mPrereq |= mPrior;
       bFirstPastRJ = (pItem->fg.jointype & JT_RIGHT)!=0;
-    }else if( !hasRightJoin ){
+    }else if( pItem->fg.fromExists ){
+      /* joins that result from the EXISTS-to-JOIN optimization should not
+      ** be moved to the left of any of their dependencies */
+      WhereClause *pWC = &pWInfo->sWC;
+      WhereTerm *pTerm;
+      int i;
+      for(i=pWC->nBase, pTerm=pWC->a; i>0; i--, pTerm++){
+        if( (pNew->maskSelf & pTerm->prereqAll)!=0 ){
+          mPrereq |= (pTerm->prereqAll & (pNew->maskSelf-1));
+        }
+      }
+    }else if( !hasRightCrossJoin ){
       mPrereq = 0;
     }
 #ifndef SQLITE_OMIT_VIRTUALTABLE
@@ -171752,9 +172918,7 @@ static i8 wherePathSatisfiesOrderBy(
       pLoop = pLast;
     }
     if( pLoop->wsFlags & WHERE_VIRTUALTABLE ){
-      if( pLoop->u.vtab.isOrdered
-       && ((wctrlFlags&(WHERE_DISTINCTBY|WHERE_SORTBYGROUP))!=WHERE_DISTINCTBY)
-      ){
+      if( pLoop->u.vtab.isOrdered && pWInfo->pOrderBy==pOrderBy ){
         obSat = obDone;
       }else{
         /* No further ORDER BY terms may be matched. So this call should
@@ -172130,12 +173294,21 @@ static LogEst whereSortingCost(
 **     12    otherwise
 **
 ** For the purposes of this heuristic, a star-query is defined as a query
-** with a large central table that is joined using an INNER JOIN,
-** not CROSS or OUTER JOINs, against four or more smaller tables.
-** The central table is called the "fact" table.  The smaller tables
-** that get joined are "dimension tables".  Also, any table that is
-** self-joined cannot be a dimension table; we assume that dimension
-** tables may only be joined against fact tables.
+** with a central "fact" table that is joined against multiple
+** "dimension" tables, subject to the following constraints:
+**
+**   (aa)  Only a five-way or larger join is considered for this
+**         optimization.  If there are fewer than four terms in the FROM
+**         clause, this heuristic does not apply.
+**
+**   (bb)  The join between the fact table and the dimension tables must
+**         be an INNER join.  CROSS and OUTER JOINs do not qualify.
+**
+**   (cc)  A table must have 3 or more dimension tables in order to be
+**         considered a fact table. (Was 4 prior to 2026-02-10.)
+**
+**   (dd)  A table that is a self-join cannot be a dimension table.
+**         Dimension tables are joined against fact tables.
 **
 ** SIDE EFFECT:  (and really the whole point of this subroutine)
 **
@@ -172188,7 +173361,7 @@ static int computeMxChoice(WhereInfo *pWInfo){
   }
 #endif /* SQLITE_DEBUG */
 
-  if( nLoop>=5
+  if( nLoop>=4  /* Constraint (aa) */
    && !pWInfo->bStarDone
    && OptimizationEnabled(pWInfo->pParse->db, SQLITE_StarQuery)
   ){
@@ -172200,7 +173373,7 @@ static int computeMxChoice(WhereInfo *pWInfo){
 
     pWInfo->bStarDone = 1; /* Only do this computation once */
 
-    /* Look for fact tables with four or more dimensions where the
+    /* Look for fact tables with three or more dimensions where the
     ** dimension tables are not separately from the fact tables by an outer
     ** or cross join.  Adjust cost weights if found.
     */
@@ -172217,18 +173390,17 @@ static int computeMxChoice(WhereInfo *pWInfo){
       if( (pFactTab->fg.jointype & (JT_OUTER|JT_CROSS))!=0 ){
         /* If the candidate fact-table is the right table of an outer join
         ** restrict the search for dimension-tables to be tables to the right
-        ** of the fact-table. */
-        if( iFromIdx+4 > nLoop ) break;  /* Impossible to reach nDep>=4 */
+        ** of the fact-table.  Constraint (bb) */
+        if( iFromIdx+3 > nLoop ){
+          break;  /* ^-- Impossible to reach nDep>=2 - Constraint (cc) */
+        }
         while( pStart && pStart->iTab<=iFromIdx ){
           pStart = pStart->pNextLoop;
         }
       }
       for(pWLoop=pStart; pWLoop; pWLoop=pWLoop->pNextLoop){
         if( (aFromTabs[pWLoop->iTab].fg.jointype & (JT_OUTER|JT_CROSS))!=0 ){
-          /* Fact-tables and dimension-tables cannot be separated by an
-          ** outer join (at least for the definition of fact- and dimension-
-          ** used by this heuristic). */
-          break;
+          break; /* Constraint (bb) */
         }
         if( (pWLoop->prereq & m)!=0        /* pWInfo depends on iFromIdx */
          && (pWLoop->maskSelf & mSeen)==0  /* pWInfo not already a dependency */
@@ -172242,7 +173414,9 @@ static int computeMxChoice(WhereInfo *pWInfo){
           }
         }
       }
-      if( nDep<=3 ) continue;
+      if( nDep<=2 ){
+        continue; /* Constraint (cc) */
+      }
 
       /* If we reach this point, it means that pFactTab is a fact table
       ** with four or more dimensions connected by inner joins.  Proceed
@@ -172255,6 +173429,23 @@ static int computeMxChoice(WhereInfo *pWInfo){
           pWLoop->rStarDelta = 0;
         }
       }
+#endif
+#ifdef WHERETRACE_ENABLED /* 0x80000 */
+      if( sqlite3WhereTrace & 0x80000 ){
+        Bitmask mShow = mSeen;
+        sqlite3DebugPrintf("Fact table %s(%d), dimensions:",
+            pFactTab->zAlias ? pFactTab->zAlias : pFactTab->pSTab->zName,
+            iFromIdx);
+        for(pWLoop=pStart; pWLoop; pWLoop=pWLoop->pNextLoop){
+          if( mShow & pWLoop->maskSelf ){
+            SrcItem *pDim = aFromTabs + pWLoop->iTab;
+            mShow &= ~pWLoop->maskSelf;
+            sqlite3DebugPrintf(" %s(%d)",
+              pDim->zAlias ? pDim->zAlias: pDim->pSTab->zName, pWLoop->iTab);
+          }
+        }
+        sqlite3DebugPrintf("\n");
+      }
 #endif
       pWInfo->bStarUsed = 1;
 
@@ -172278,10 +173469,8 @@ static int computeMxChoice(WhereInfo *pWInfo){
           if( sqlite3WhereTrace & 0x80000 ){
             SrcItem *pDim = aFromTabs + pWLoop->iTab;
             sqlite3DebugPrintf(
-              "Increase SCAN cost of dimension %s(%d) of fact %s(%d) to %d\n",
-              pDim->zAlias ? pDim->zAlias: pDim->pSTab->zName, pWLoop->iTab,
-              pFactTab->zAlias ? pFactTab->zAlias : pFactTab->pSTab->zName,
-              iFromIdx, mxRun
+              "Increase SCAN cost of %s to %d\n",
+              pDim->zAlias ? pDim->zAlias: pDim->pSTab->zName, mxRun
             );
           }
           pWLoop->rStarDelta = mxRun - pWLoop->rRun;
@@ -173095,6 +174284,7 @@ static SQLITE_NOINLINE Bitmask whereOmitNoopJoin(
     for(pTerm=pWInfo->sWC.a; pTerm<pEnd; pTerm++){
       if( (pTerm->prereqAll & pLoop->maskSelf)!=0 ){
         pTerm->wtFlags |= TERM_CODED;
+        pTerm->prereqAll = 0;
       }
     }
     if( i!=pWInfo->nLevel-1 ){
@@ -174082,14 +175272,15 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
       }
 #endif /* SQLITE_DISABLE_SKIPAHEAD_DISTINCT */
     }
-    if( pTabList->a[pLevel->iFrom].fg.fromExists && i==pWInfo->nLevel-1 ){
-      /* If the EXISTS-to-JOIN optimization was applied, then the EXISTS
-      ** loop(s) will be the inner-most loops of the join. There might be
-      ** multiple EXISTS loops, but they will all be nested, and the join
-      ** order will not have been changed by the query planner.  If the
-      ** inner-most EXISTS loop sees a single successful row, it should
-      ** break out of *all* EXISTS loops.  But only the inner-most of the
-      ** nested EXISTS loops should do this breakout. */
+    if( pTabList->a[pLevel->iFrom].fg.fromExists
+     && (i==pWInfo->nLevel-1
+           || pTabList->a[pWInfo->a[i+1].iFrom].fg.fromExists==0)
+    ){
+      /* This is an EXISTS-to-JOIN optimization which is either the
+      ** inner-most loop, or the inner-most of a group of nested
+      ** EXISTS-to-JOIN optimization loops.  If this loop sees a successful
+      ** row, it should break out of itself as well as other EXISTS-to-JOIN
+      ** loops in which is is directly nested. */
       int nOuter = 0; /* Nr of outer EXISTS that this one is nested within */
       while( nOuter<i ){
         if( !pTabList->a[pLevel[-nOuter-1].iFrom].fg.fromExists ) break;
@@ -174097,7 +175288,11 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
       }
       testcase( nOuter>0 );
       sqlite3VdbeAddOp2(v, OP_Goto, 0, pLevel[-nOuter].addrBrk);
-      VdbeComment((v, "EXISTS break"));
+      if( nOuter ){
+        VdbeComment((v, "EXISTS break %d..%d", i-nOuter, i));
+      }else{
+        VdbeComment((v, "EXISTS break %d", i));
+      }
     }
     sqlite3VdbeResolveLabel(v, pLevel->addrCont);
     if( pLevel->op!=OP_Noop ){
@@ -175114,7 +176309,7 @@ SQLITE_PRIVATE void sqlite3WindowUpdate(
           pWin->eEnd = aUp[i].eEnd;
           pWin->eExclude = 0;
           if( pWin->eStart==TK_FOLLOWING ){
-            pWin->pStart = sqlite3Expr(db, TK_INTEGER, "1");
+            pWin->pStart = sqlite3ExprInt32(db, 1);
           }
           break;
         }
@@ -175459,9 +176654,7 @@ SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
     ** keep everything legal in this case.
     */
     if( pSublist==0 ){
-      pSublist = sqlite3ExprListAppend(pParse, 0,
-        sqlite3Expr(db, TK_INTEGER, "0")
-      );
+      pSublist = sqlite3ExprListAppend(pParse, 0, sqlite3ExprInt32(db, 0));
     }
 
     pSub = sqlite3SelectNew(
@@ -177685,8 +178878,23 @@ static void updateDeleteLimitError(
   ** sqlite3_realloc() that includes a call to sqlite3FaultSim() to facilitate
   ** testing.
   */
-  static void *parserStackRealloc(void *pOld, sqlite3_uint64 newSize){
-    return sqlite3FaultSim(700) ? 0 : sqlite3_realloc(pOld, newSize);
+  static void *parserStackRealloc(
+    void *pOld,               /* Prior allocation */
+    sqlite3_uint64 newSize,   /* Requested new alloation size */
+    Parse *pParse             /* Parsing context */
+  ){
+    void *p = sqlite3FaultSim(700) ? 0 : sqlite3_realloc(pOld, newSize);
+    if( p==0 ) sqlite3OomFault(pParse->db);
+    return p;
+  }
+  static void parserStackFree(void *pOld, Parse *pParse){
+    (void)pParse;
+    sqlite3_free(pOld);
+  }
+
+  /* Return an integer that is the maximum allowed stack size */
+  static int parserStackSizeLimit(Parse *pParse){
+    return pParse->db->aLimit[SQLITE_LIMIT_PARSER_DEPTH];
   }
 
 
@@ -177725,15 +178933,46 @@ static void updateDeleteLimitError(
   }
 
 
-  /* A routine to convert a binary TK_IS or TK_ISNOT expression into a
-  ** unary TK_ISNULL or TK_NOTNULL expression. */
-  static void binaryToUnaryIfNull(Parse *pParse, Expr *pY, Expr *pA, int op){
-    sqlite3 *db = pParse->db;
-    if( pA && pY && pY->op==TK_NULL && !IN_RENAME_OBJECT ){
-      pA->op = (u8)op;
-      sqlite3ExprDelete(db, pA->pRight);
-      pA->pRight = 0;
+  /* Create a TK_ISNULL or TK_NOTNULL expression, perhaps optimized to
+  ** to TK_TRUEFALSE, if possible */
+  static Expr *sqlite3PExprIsNull(
+    Parse *pParse,  /* Parsing context */
+    int op,         /* TK_ISNULL or TK_NOTNULL */
+    Expr *pLeft     /* Operand */
+  ){
+    Expr *p = pLeft;
+    assert( op==TK_ISNULL || op==TK_NOTNULL );
+    assert( pLeft!=0 );
+    while( p->op==TK_UPLUS || p->op==TK_UMINUS ){
+      p = p->pLeft;
+      assert( p!=0 );
     }
+    switch( p->op ){
+      case TK_INTEGER:
+      case TK_STRING:
+      case TK_FLOAT:
+      case TK_BLOB:
+        sqlite3ExprDeferredDelete(pParse, pLeft);
+        return sqlite3ExprInt32(pParse->db, op==TK_NOTNULL);
+      default:
+        break;
+    }
+    return sqlite3PExpr(pParse, op, pLeft, 0);
+  }
+
+  /* Create a TK_IS or TK_ISNOT operator, perhaps optimized to
+  ** TK_ISNULL or TK_NOTNULL or TK_TRUEFALSE. */
+  static Expr *sqlite3PExprIs(
+    Parse *pParse,  /* Parsing context */
+    int op,         /* TK_IS or TK_ISNOT */
+    Expr *pLeft,    /* Left operand */
+    Expr *pRight    /* Right operand */
+  ){
+    if( pRight && pRight->op==TK_NULL ){
+      sqlite3ExprDeferredDelete(pParse, pRight);
+      return sqlite3PExprIsNull(pParse, op==TK_IS ? TK_ISNULL : TK_NOTNULL, pLeft);
+    }
+    return sqlite3PExpr(pParse, op, pLeft, pRight);
   }
 
   /* Add a single new term to an ExprList that is used to store a
@@ -178016,63 +179255,72 @@ static void updateDeleteLimitError(
 #endif
 /************* Begin control #defines *****************************************/
 #define YYCODETYPE unsigned short int
-#define YYNOCODE 323
+#define YYNOCODE 322
 #define YYACTIONTYPE unsigned short int
 #define YYWILDCARD 102
 #define sqlite3ParserTOKENTYPE Token
 typedef union {
   int yyinit;
   sqlite3ParserTOKENTYPE yy0;
-  u32 yy9;
-  struct TrigEvent yy28;
-  With* yy125;
-  IdList* yy204;
-  struct FrameBound yy205;
-  TriggerStep* yy319;
-  const char* yy342;
-  Cte* yy361;
-  ExprList* yy402;
-  Upsert* yy403;
-  OnOrUsing yy421;
-  u8 yy444;
-  struct {int value; int mask;} yy481;
-  Window* yy483;
-  int yy502;
-  SrcList* yy563;
-  Expr* yy590;
-  Select* yy637;
+  ExprList* yy14;
+  With* yy59;
+  Cte* yy67;
+  Upsert* yy122;
+  IdList* yy132;
+  int yy144;
+  const char* yy168;
+  SrcList* yy203;
+  Window* yy211;
+  OnOrUsing yy269;
+  struct TrigEvent yy286;
+  struct {int value; int mask;} yy383;
+  u32 yy391;
+  TriggerStep* yy427;
+  Expr* yy454;
+  u8 yy462;
+  struct FrameBound yy509;
+  Select* yy555;
 } YYMINORTYPE;
 #ifndef YYSTACKDEPTH
-#define YYSTACKDEPTH 100
+#define YYSTACKDEPTH 50
 #endif
 #define sqlite3ParserARG_SDECL
 #define sqlite3ParserARG_PDECL
 #define sqlite3ParserARG_PARAM
 #define sqlite3ParserARG_FETCH
 #define sqlite3ParserARG_STORE
+#undef YYREALLOC
 #define YYREALLOC parserStackRealloc
-#define YYFREE sqlite3_free
+#undef YYFREE
+#define YYFREE parserStackFree
+#undef YYDYNSTACK
 #define YYDYNSTACK 1
+#undef YYSIZELIMIT
+#define YYSIZELIMIT parserStackSizeLimit
+#define sqlite3ParserCTX(P) ((P)->pParse)
 #define sqlite3ParserCTX_SDECL Parse *pParse;
 #define sqlite3ParserCTX_PDECL ,Parse *pParse
 #define sqlite3ParserCTX_PARAM ,pParse
 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
+#undef YYERRORSYMBOL
+#undef YYERRSYMDT
+#undef YYFALLBACK
 #define YYFALLBACK 1
-#define YYNSTATE             583
-#define YYNRULE              409
-#define YYNRULE_WITH_ACTION  344
+#define YYNSTATE             600
+#define YYNRULE              412
+#define YYNRULE_WITH_ACTION  348
 #define YYNTOKEN             187
-#define YY_MAX_SHIFT         582
-#define YY_MIN_SHIFTREDUCE   845
-#define YY_MAX_SHIFTREDUCE   1253
-#define YY_ERROR_ACTION      1254
-#define YY_ACCEPT_ACTION     1255
-#define YY_NO_ACTION         1256
-#define YY_MIN_REDUCE        1257
-#define YY_MAX_REDUCE        1665
+#define YY_MAX_SHIFT         599
+#define YY_MIN_SHIFTREDUCE   867
+#define YY_MAX_SHIFTREDUCE   1278
+#define YY_ERROR_ACTION      1279
+#define YY_ACCEPT_ACTION     1280
+#define YY_NO_ACTION         1281
+#define YY_MIN_REDUCE        1282
+#define YY_MAX_REDUCE        1693
 #define YY_MIN_DSTRCTR       206
-#define YY_MAX_DSTRCTR       320
+#define YY_MAX_DSTRCTR       319
 /************* End control #defines *******************************************/
 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
 
@@ -178155,643 +179403,680 @@ typedef union {
 **  yy_default[]       Default action for each state.
 **
 *********** Begin parsing tables **********************************************/
-#define YY_ACTTAB_COUNT (2207)
+#define YY_ACTTAB_COUNT (2379)
 static const YYACTIONTYPE yy_action[] = {
- /*     0 */   130,  127,  234,  282,  282, 1328,  576, 1307,  460,  289,
- /*    10 */   289,  576, 1622,  381,  576, 1328,  573,  576,  562,  413,
- /*    20 */  1300, 1542,  573,  481,  562,  524,  460,  459,  558,   82,
- /*    30 */    82,  983,  294,  375,   51,   51,  498,   61,   61,  984,
- /*    40 */    82,   82, 1577,  137,  138,   91,    7, 1228, 1228, 1063,
- /*    50 */  1066, 1053, 1053,  135,  135,  136,  136,  136,  136,  413,
- /*    60 */   288,  288,  182,  288,  288,  481,  536,  288,  288,  130,
- /*    70 */   127,  234,  432,  573,  525,  562,  573,  557,  562, 1290,
- /*    80 */   573,  421,  562,  137,  138,   91,  559, 1228, 1228, 1063,
- /*    90 */  1066, 1053, 1053,  135,  135,  136,  136,  136,  136,  296,
- /*   100 */   460,  398, 1249,  134,  134,  134,  134,  133,  133,  132,
- /*   110 */   132,  132,  131,  128,  451,  451, 1050, 1050, 1064, 1067,
- /*   120 */  1255,    1,    1,  582,    2, 1259,  581, 1174, 1259, 1174,
- /*   130 */   321,  413,  155,  321, 1584,  155,  379,  112,  481, 1341,
- /*   140 */   456,  299, 1341,  134,  134,  134,  134,  133,  133,  132,
- /*   150 */   132,  132,  131,  128,  451,  137,  138,   91,  498, 1228,
- /*   160 */  1228, 1063, 1066, 1053, 1053,  135,  135,  136,  136,  136,
- /*   170 */   136, 1204,  862, 1281,  288,  288,  283,  288,  288,  523,
- /*   180 */   523, 1250,  139,  578,    7,  578, 1345,  573, 1169,  562,
- /*   190 */   573, 1054,  562,  136,  136,  136,  136,  129,  573,  547,
- /*   200 */   562, 1169,  245, 1541, 1169,  245,  133,  133,  132,  132,
- /*   210 */   132,  131,  128,  451,  302,  134,  134,  134,  134,  133,
- /*   220 */   133,  132,  132,  132,  131,  128,  451, 1575, 1204, 1205,
- /*   230 */  1204,    7,  470,  550,  455,  413,  550,  455,  130,  127,
- /*   240 */   234,  134,  134,  134,  134,  133,  133,  132,  132,  132,
- /*   250 */   131,  128,  451,  136,  136,  136,  136,  538,  483,  137,
- /*   260 */   138,   91, 1019, 1228, 1228, 1063, 1066, 1053, 1053,  135,
- /*   270 */   135,  136,  136,  136,  136, 1085,  576, 1204,  132,  132,
- /*   280 */   132,  131,  128,  451,   93,  214,  134,  134,  134,  134,
- /*   290 */   133,  133,  132,  132,  132,  131,  128,  451,  401,   19,
- /*   300 */    19,  134,  134,  134,  134,  133,  133,  132,  132,  132,
- /*   310 */   131,  128,  451, 1498,  426,  267,  344,  467,  332,  134,
- /*   320 */   134,  134,  134,  133,  133,  132,  132,  132,  131,  128,
- /*   330 */   451, 1281,  576,    6, 1204, 1205, 1204,  257,  576,  413,
- /*   340 */   511,  508,  507, 1279,   94, 1019,  464, 1204,  551,  551,
- /*   350 */   506, 1224, 1571,   44,   38,   51,   51,  411,  576,  413,
- /*   360 */    45,   51,   51,  137,  138,   91,  530, 1228, 1228, 1063,
- /*   370 */  1066, 1053, 1053,  135,  135,  136,  136,  136,  136,  398,
- /*   380 */  1148,   82,   82,  137,  138,   91,   39, 1228, 1228, 1063,
- /*   390 */  1066, 1053, 1053,  135,  135,  136,  136,  136,  136,  344,
- /*   400 */    44,  288,  288,  375, 1204, 1205, 1204,  209, 1204, 1224,
- /*   410 */   320,  567,  471,  576,  573,  576,  562,  576,  316,  264,
- /*   420 */   231,   46,  160,  134,  134,  134,  134,  133,  133,  132,
- /*   430 */   132,  132,  131,  128,  451,  303,   82,   82,   82,   82,
- /*   440 */    82,   82,  442,  134,  134,  134,  134,  133,  133,  132,
- /*   450 */   132,  132,  131,  128,  451, 1582,  544,  320,  567, 1250,
- /*   460 */   874, 1582,  380,  382,  413, 1204, 1205, 1204,  360,  182,
- /*   470 */   288,  288, 1576,  557, 1339,  557,    7,  557, 1277,  472,
- /*   480 */   346,  526,  531,  573,  556,  562,  439, 1511,  137,  138,
- /*   490 */    91,  219, 1228, 1228, 1063, 1066, 1053, 1053,  135,  135,
- /*   500 */   136,  136,  136,  136,  465, 1511, 1513,  532,  413,  288,
- /*   510 */   288,  423,  512,  288,  288,  411,  288,  288,  874,  130,
- /*   520 */   127,  234,  573, 1107,  562, 1204,  573, 1107,  562,  573,
- /*   530 */   560,  562,  137,  138,   91, 1293, 1228, 1228, 1063, 1066,
- /*   540 */  1053, 1053,  135,  135,  136,  136,  136,  136,  134,  134,
- /*   550 */   134,  134,  133,  133,  132,  132,  132,  131,  128,  451,
- /*   560 */   493,  503, 1292, 1204,  257,  288,  288,  511,  508,  507,
- /*   570 */  1204, 1628, 1169,  123,  568,  275,    4,  506,  573, 1511,
- /*   580 */   562,  331, 1204, 1205, 1204, 1169,  548,  548, 1169,  261,
- /*   590 */   571,    7,  134,  134,  134,  134,  133,  133,  132,  132,
- /*   600 */   132,  131,  128,  451,  108,  533,  130,  127,  234, 1204,
- /*   610 */   448,  447,  413, 1451,  452,  983,  886,   96, 1598, 1233,
- /*   620 */  1204, 1205, 1204,  984, 1235, 1450,  565, 1204, 1205, 1204,
- /*   630 */   229,  522, 1234,  534, 1333, 1333,  137,  138,   91, 1449,
- /*   640 */  1228, 1228, 1063, 1066, 1053, 1053,  135,  135,  136,  136,
- /*   650 */   136,  136,  373, 1595,  971, 1040,  413, 1236,  418, 1236,
- /*   660 */   879,  121,  121,  948,  373, 1595, 1204, 1205, 1204,  122,
- /*   670 */  1204,  452,  577,  452,  363,  417, 1028,  882,  373, 1595,
- /*   680 */   137,  138,   91,  462, 1228, 1228, 1063, 1066, 1053, 1053,
- /*   690 */   135,  135,  136,  136,  136,  136,  134,  134,  134,  134,
- /*   700 */   133,  133,  132,  132,  132,  131,  128,  451, 1028, 1028,
- /*   710 */  1030, 1031,   35,  570,  570,  570,  197,  423, 1040,  198,
- /*   720 */  1204,  123,  568, 1204,    4,  320,  567, 1204, 1205, 1204,
- /*   730 */    40,  388,  576,  384,  882, 1029,  423, 1188,  571, 1028,
- /*   740 */   134,  134,  134,  134,  133,  133,  132,  132,  132,  131,
- /*   750 */   128,  451,  529, 1568, 1204,   19,   19, 1204,  575,  492,
- /*   760 */   413,  157,  452,  489, 1187, 1331, 1331,    5, 1204,  949,
- /*   770 */   431, 1028, 1028, 1030,  565,   22,   22, 1204, 1205, 1204,
- /*   780 */  1204, 1205, 1204,  477,  137,  138,   91,  212, 1228, 1228,
- /*   790 */  1063, 1066, 1053, 1053,  135,  135,  136,  136,  136,  136,
- /*   800 */  1188,   48,  111, 1040,  413, 1204,  213,  970, 1041,  121,
- /*   810 */   121, 1204, 1205, 1204, 1204, 1205, 1204,  122,  221,  452,
- /*   820 */   577,  452,   44,  487, 1028, 1204, 1205, 1204,  137,  138,
- /*   830 */    91,  378, 1228, 1228, 1063, 1066, 1053, 1053,  135,  135,
- /*   840 */   136,  136,  136,  136,  134,  134,  134,  134,  133,  133,
- /*   850 */   132,  132,  132,  131,  128,  451, 1028, 1028, 1030, 1031,
- /*   860 */    35,  461, 1204, 1205, 1204, 1569, 1040,  377,  214, 1149,
- /*   870 */  1657,  535, 1657,  437,  902,  320,  567, 1568,  364,  320,
- /*   880 */   567,  412,  329, 1029,  519, 1188,    3, 1028,  134,  134,
- /*   890 */   134,  134,  133,  133,  132,  132,  132,  131,  128,  451,
- /*   900 */  1659,  399, 1169,  307,  893,  307,  515,  576,  413,  214,
- /*   910 */   498,  944, 1024,  540,  903, 1169,  943,  392, 1169, 1028,
- /*   920 */  1028, 1030,  406,  298, 1204,   50, 1149, 1658,  413, 1658,
- /*   930 */   145,  145,  137,  138,   91,  293, 1228, 1228, 1063, 1066,
- /*   940 */  1053, 1053,  135,  135,  136,  136,  136,  136, 1188, 1147,
- /*   950 */   514, 1568,  137,  138,   91, 1505, 1228, 1228, 1063, 1066,
- /*   960 */  1053, 1053,  135,  135,  136,  136,  136,  136,  434,  323,
- /*   970 */   435,  539,  111, 1506,  274,  291,  372,  517,  367,  516,
- /*   980 */   262, 1204, 1205, 1204, 1574,  481,  363,  576,    7, 1569,
- /*   990 */  1568,  377,  134,  134,  134,  134,  133,  133,  132,  132,
- /*  1000 */   132,  131,  128,  451, 1568,  576, 1147,  576,  232,  576,
- /*  1010 */    19,   19,  134,  134,  134,  134,  133,  133,  132,  132,
- /*  1020 */   132,  131,  128,  451, 1169,  433,  576, 1207,   19,   19,
- /*  1030 */    19,   19,   19,   19, 1627,  576,  911, 1169,   47,  120,
- /*  1040 */  1169,  117,  413,  306,  498,  438, 1125,  206,  336,   19,
- /*  1050 */    19, 1435,   49,  449,  449,  449, 1368,  315,   81,   81,
- /*  1060 */   576,  304,  413, 1570,  207,  377,  137,  138,   91,  115,
- /*  1070 */  1228, 1228, 1063, 1066, 1053, 1053,  135,  135,  136,  136,
- /*  1080 */   136,  136,  576,   82,   82, 1207,  137,  138,   91, 1340,
- /*  1090 */  1228, 1228, 1063, 1066, 1053, 1053,  135,  135,  136,  136,
- /*  1100 */   136,  136, 1569,  386,  377,   82,   82,  463, 1126, 1552,
- /*  1110 */   333,  463,  335,  131,  128,  451, 1569,  161,  377,   16,
- /*  1120 */   317,  387,  428, 1127,  448,  447,  134,  134,  134,  134,
- /*  1130 */   133,  133,  132,  132,  132,  131,  128,  451, 1128,  576,
- /*  1140 */  1105,   10,  445,  267,  576, 1554,  134,  134,  134,  134,
- /*  1150 */   133,  133,  132,  132,  132,  131,  128,  451,  532,  576,
- /*  1160 */   922,  576,   19,   19,  576, 1573,  576,  147,  147,    7,
- /*  1170 */   923, 1236,  498, 1236,  576,  487,  413,  552,  285, 1224,
- /*  1180 */   969,  215,   82,   82,   66,   66, 1435,   67,   67,   21,
- /*  1190 */    21, 1110, 1110,  495,  334,  297,  413,   53,   53,  297,
- /*  1200 */   137,  138,   91,  119, 1228, 1228, 1063, 1066, 1053, 1053,
- /*  1210 */   135,  135,  136,  136,  136,  136,  413, 1336, 1311,  446,
- /*  1220 */   137,  138,   91,  227, 1228, 1228, 1063, 1066, 1053, 1053,
- /*  1230 */   135,  135,  136,  136,  136,  136,  574, 1224,  936,  936,
- /*  1240 */   137,  126,   91,  141, 1228, 1228, 1063, 1066, 1053, 1053,
- /*  1250 */   135,  135,  136,  136,  136,  136,  533,  429,  472,  346,
- /*  1260 */   134,  134,  134,  134,  133,  133,  132,  132,  132,  131,
- /*  1270 */   128,  451,  576,  457,  233,  343, 1435,  403,  498, 1550,
- /*  1280 */   134,  134,  134,  134,  133,  133,  132,  132,  132,  131,
- /*  1290 */   128,  451,  576,  324,  576,   82,   82,  487,  576,  969,
- /*  1300 */   134,  134,  134,  134,  133,  133,  132,  132,  132,  131,
- /*  1310 */   128,  451,  288,  288,  546,   68,   68,   54,   54,  553,
- /*  1320 */   413,   69,   69,  351,    6,  573,  944,  562,  410,  409,
- /*  1330 */  1435,  943,  450,  545,  260,  259,  258,  576,  158,  576,
- /*  1340 */   413,  222, 1180,  479,  969,  138,   91,  430, 1228, 1228,
- /*  1350 */  1063, 1066, 1053, 1053,  135,  135,  136,  136,  136,  136,
- /*  1360 */    70,   70,   71,   71,  576, 1126,   91,  576, 1228, 1228,
- /*  1370 */  1063, 1066, 1053, 1053,  135,  135,  136,  136,  136,  136,
- /*  1380 */  1127,  166,  850,  851,  852, 1282,  419,   72,   72,  108,
- /*  1390 */    73,   73, 1310,  358, 1180, 1128,  576,  305,  576,  123,
- /*  1400 */   568,  494,    4,  488,  134,  134,  134,  134,  133,  133,
- /*  1410 */   132,  132,  132,  131,  128,  451,  571,  564,  534,   55,
- /*  1420 */    55,   56,   56,  576,  134,  134,  134,  134,  133,  133,
- /*  1430 */   132,  132,  132,  131,  128,  451,  576, 1104,  233, 1104,
- /*  1440 */   452, 1602,  582,    2, 1259,  576,   57,   57,  576,  321,
- /*  1450 */   576,  155,  565, 1435,  485,  353,  576,  356, 1341,   59,
- /*  1460 */    59,  576,   44,  969,  569,  419,  576,  238,   60,   60,
- /*  1470 */   261,   74,   74,   75,   75,  287,  231,  576, 1366,   76,
- /*  1480 */    76, 1040,  420,  184,   20,   20,  576,  121,  121,   77,
- /*  1490 */    77,   97,  218,  288,  288,  122,  125,  452,  577,  452,
- /*  1500 */   143,  143, 1028,  576,  520,  576,  573,  576,  562,  144,
- /*  1510 */   144,  474,  227, 1244,  478,  123,  568,  576,    4,  320,
- /*  1520 */   567,  245,  411,  576,  443,  411,   78,   78,   62,   62,
- /*  1530 */    79,   79,  571,  319, 1028, 1028, 1030, 1031,   35,  418,
- /*  1540 */    63,   63,  576,  290,  411,    9,   80,   80, 1144,  576,
- /*  1550 */   400,  576,  486,  455,  576, 1223,  452,  576,  325,  342,
- /*  1560 */   576,  111,  576, 1188,  242,   64,   64,  473,  565,  576,
- /*  1570 */    23,  576,  170,  170,  171,  171,  576,   87,   87,  328,
- /*  1580 */    65,   65,  542,   83,   83,  146,  146,  541,  123,  568,
- /*  1590 */   341,    4,   84,   84,  168,  168,  576, 1040,  576,  148,
- /*  1600 */   148,  576, 1380,  121,  121,  571, 1021,  576,  266,  576,
- /*  1610 */   424,  122,  576,  452,  577,  452,  576,  553, 1028,  142,
- /*  1620 */   142,  169,  169,  576,  162,  162,  528,  889,  371,  452,
- /*  1630 */   152,  152,  151,  151, 1379,  149,  149,  109,  370,  150,
- /*  1640 */   150,  565,  576,  480,  576,  266,   86,   86,  576, 1092,
- /*  1650 */  1028, 1028, 1030, 1031,   35,  542,  482,  576,  266,  466,
- /*  1660 */   543,  123,  568, 1616,    4,   88,   88,   85,   85,  475,
- /*  1670 */  1040,   52,   52,  222,  901,  900,  121,  121,  571, 1188,
- /*  1680 */    58,   58,  244, 1032,  122,  889,  452,  577,  452,  908,
- /*  1690 */   909, 1028,  300,  347,  504,  111,  263,  361,  165,  111,
- /*  1700 */   111, 1088,  452,  263,  974, 1153,  266, 1092,  986,  987,
- /*  1710 */   942,  939,  125,  125,  565, 1103,  872, 1103,  159,  941,
- /*  1720 */  1309,  125, 1557, 1028, 1028, 1030, 1031,   35,  542,  337,
- /*  1730 */  1530,  205, 1529,  541,  499, 1589,  490,  348, 1376,  352,
- /*  1740 */   355, 1032,  357, 1040,  359, 1324, 1308,  366,  563,  121,
- /*  1750 */   121,  376, 1188, 1389, 1434, 1362,  280,  122, 1374,  452,
- /*  1760 */   577,  452,  167, 1439, 1028, 1289, 1280, 1268, 1267, 1269,
- /*  1770 */  1609, 1359,  312,  313,  314,  397,   12,  237,  224, 1421,
- /*  1780 */   295, 1416, 1409, 1426,  339,  484,  340,  509, 1371, 1612,
- /*  1790 */  1372, 1425, 1244,  404,  301,  228, 1028, 1028, 1030, 1031,
- /*  1800 */    35, 1601, 1192,  454,  345, 1307,  292,  369, 1502, 1501,
- /*  1810 */   270,  396,  396,  395,  277,  393, 1370, 1369,  859, 1549,
- /*  1820 */   186,  123,  568,  235,    4, 1188,  391,  210,  211,  223,
- /*  1830 */  1547,  239, 1241,  327,  422,   96,  220,  195,  571,  180,
- /*  1840 */   188,  326,  468,  469,  190,  191,  502,  192,  193,  566,
- /*  1850 */   247,  109, 1430,  491,  199,  251,  102,  281,  402,  476,
- /*  1860 */   405, 1496,  452,  497,  253, 1422,   13, 1428,   14, 1427,
- /*  1870 */   203, 1507,  241,  500,  565,  354,  407,   92,   95, 1270,
- /*  1880 */   175,  254,  518,   43, 1327,  255, 1326, 1325,  436, 1518,
- /*  1890 */   350, 1318,  104,  229,  893, 1626,  440,  441, 1625,  408,
- /*  1900 */   240, 1296,  268, 1040,  310,  269, 1297,  527,  444,  121,
- /*  1910 */   121,  368, 1295, 1594, 1624,  311, 1394,  122, 1317,  452,
- /*  1920 */   577,  452,  374, 1580, 1028, 1393,  140,  553,   11,   90,
- /*  1930 */   568,  385,    4,  116,  318,  414, 1579,  110, 1483,  537,
- /*  1940 */   320,  567, 1350,  555,   42,  579,  571, 1349, 1198,  383,
- /*  1950 */   276,  390,  216,  389,  278,  279, 1028, 1028, 1030, 1031,
- /*  1960 */    35,  172,  580, 1265,  458, 1260,  415,  416,  185,  156,
- /*  1970 */   452, 1534, 1535,  173, 1533, 1532,   89,  308,  225,  226,
- /*  1980 */   846,  174,  565,  453,  217, 1188,  322,  236, 1102,  154,
- /*  1990 */  1100,  330,  187,  176, 1223,  243,  189,  925,  338,  246,
- /*  2000 */  1116,  194,  177,  425,  178,  427,   98,  196,   99,  100,
- /*  2010 */   101, 1040,  179, 1119, 1115,  248,  249,  121,  121,  163,
- /*  2020 */    24,  250,  349, 1238,  496,  122, 1108,  452,  577,  452,
- /*  2030 */  1192,  454, 1028,  266,  292,  200,  252,  201,  861,  396,
- /*  2040 */   396,  395,  277,  393,   15,  501,  859,  370,  292,  256,
- /*  2050 */   202,  554,  505,  396,  396,  395,  277,  393,  103,  239,
- /*  2060 */   859,  327,   25,   26, 1028, 1028, 1030, 1031,   35,  326,
- /*  2070 */   362,  510,  891,  239,  365,  327,  513,  904,  105,  309,
- /*  2080 */   164,  181,   27,  326,  106,  521,  107, 1185, 1069, 1155,
- /*  2090 */    17, 1154,  230, 1188,  284,  286,  265,  204,  125, 1171,
- /*  2100 */   241,   28,  978,  972,   29,   41, 1175, 1179,  175, 1173,
- /*  2110 */    30,   43,   31,    8,  241, 1178,   32, 1160,  208,  549,
- /*  2120 */    33,  111,  175, 1083, 1070,   43, 1068, 1072,  240,  113,
- /*  2130 */   114,   34,  561,  118, 1124,  271, 1073,   36,   18,  572,
- /*  2140 */  1033,  873,  240,  124,   37,  935,  272,  273, 1617,  183,
- /*  2150 */   153,  394, 1194, 1193, 1256, 1256, 1256, 1256, 1256, 1256,
- /*  2160 */  1256, 1256, 1256,  414, 1256, 1256, 1256, 1256,  320,  567,
- /*  2170 */  1256, 1256, 1256, 1256, 1256, 1256, 1256,  414, 1256, 1256,
- /*  2180 */  1256, 1256,  320,  567, 1256, 1256, 1256, 1256, 1256, 1256,
- /*  2190 */  1256, 1256,  458, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
- /*  2200 */  1256, 1256, 1256, 1256, 1256, 1256,  458,
+ /*     0 */   134,  131,  238,  290,  290, 1353,  593, 1332,  478, 1606,
+ /*    10 */   593, 1315,  593,    7,  593, 1353,  590,  593,  579,  424,
+ /*    20 */  1566,  134,  131,  238, 1318,  541,  478,  477,  575,   84,
+ /*    30 */    84, 1005,  303,   84,   84,   51,   51,   63,   63, 1006,
+ /*    40 */    84,   84,  498,  141,  142,   93,  442, 1254, 1254, 1085,
+ /*    50 */  1088, 1075, 1075,  139,  139,  140,  140,  140,  140,  424,
+ /*    60 */   296,  296,  498,  296,  296,  567,  553,  296,  296, 1306,
+ /*    70 */   574, 1358, 1358,  590,  542,  579,  590,  574,  579,  548,
+ /*    80 */   590, 1304,  579,  141,  142,   93,  576, 1254, 1254, 1085,
+ /*    90 */  1088, 1075, 1075,  139,  139,  140,  140,  140,  140,  399,
+ /*   100 */   478,  395,    6,  138,  138,  138,  138,  137,  137,  136,
+ /*   110 */   136,  136,  135,  132,  463,   44,  342,  593,  305, 1127,
+ /*   120 */  1280,    1,    1,  599,    2, 1284,  598, 1200, 1284, 1200,
+ /*   130 */   330,  424,  158,  330, 1613,  158,  390,  116,  308, 1366,
+ /*   140 */    51,   51, 1366,  138,  138,  138,  138,  137,  137,  136,
+ /*   150 */   136,  136,  135,  132,  463,  141,  142,   93,  515, 1254,
+ /*   160 */  1254, 1085, 1088, 1075, 1075,  139,  139,  140,  140,  140,
+ /*   170 */   140, 1230,  329,  584,  296,  296,  212,  296,  296,  568,
+ /*   180 */   568,  488,  143, 1072, 1072, 1086, 1089,  590, 1195,  579,
+ /*   190 */   590,  340,  579,  140,  140,  140,  140,  133,  392,  564,
+ /*   200 */   536, 1195,  250,  425, 1195,  250,  137,  137,  136,  136,
+ /*   210 */   136,  135,  132,  463,  291,  138,  138,  138,  138,  137,
+ /*   220 */   137,  136,  136,  136,  135,  132,  463,  966, 1230, 1231,
+ /*   230 */  1230,  412,  965,  467,  412,  424,  467,  489,  357, 1611,
+ /*   240 */   391,  138,  138,  138,  138,  137,  137,  136,  136,  136,
+ /*   250 */   135,  132,  463,  463,  134,  131,  238,  555, 1076,  141,
+ /*   260 */   142,   93,  593, 1254, 1254, 1085, 1088, 1075, 1075,  139,
+ /*   270 */   139,  140,  140,  140,  140, 1317,  134,  131,  238,  424,
+ /*   280 */   549, 1597, 1531,  333,   97,   83,   83,  140,  140,  140,
+ /*   290 */   140,  138,  138,  138,  138,  137,  137,  136,  136,  136,
+ /*   300 */   135,  132,  463,  141,  142,   93, 1657, 1254, 1254, 1085,
+ /*   310 */  1088, 1075, 1075,  139,  139,  140,  140,  140,  140,  138,
+ /*   320 */   138,  138,  138,  137,  137,  136,  136,  136,  135,  132,
+ /*   330 */   463,  591, 1230,  958,  958,  138,  138,  138,  138,  137,
+ /*   340 */   137,  136,  136,  136,  135,  132,  463,   44,  398,  547,
+ /*   350 */  1306,  136,  136,  136,  135,  132,  463,  386,  593,  442,
+ /*   360 */   595,  145,  595,  138,  138,  138,  138,  137,  137,  136,
+ /*   370 */   136,  136,  135,  132,  463,  500, 1230,  112,  550,  460,
+ /*   380 */   459,   51,   51,  424,  296,  296,  479,  334, 1259, 1230,
+ /*   390 */  1231, 1230, 1599, 1261,  388,  312,  444,  590,  246,  579,
+ /*   400 */   546, 1260,  271,  235,  329,  584,  551,  141,  142,   93,
+ /*   410 */   429, 1254, 1254, 1085, 1088, 1075, 1075,  139,  139,  140,
+ /*   420 */   140,  140,  140,   22,   22, 1230, 1262,  424, 1262,  216,
+ /*   430 */   296,  296,   98, 1230, 1231, 1230,  264,  884,   45,  528,
+ /*   440 */   525,  524, 1041,  590, 1269,  579,  421,  420,  393,  523,
+ /*   450 */    44,  141,  142,   93,  498, 1254, 1254, 1085, 1088, 1075,
+ /*   460 */  1075,  139,  139,  140,  140,  140,  140,  138,  138,  138,
+ /*   470 */   138,  137,  137,  136,  136,  136,  135,  132,  463,  593,
+ /*   480 */  1611,  561, 1230, 1231, 1230,   23,  264,  515,  200,  528,
+ /*   490 */   525,  524,  127,  585,  509,    4,  355,  487,  506,  523,
+ /*   500 */   593,  498,   84,   84,  134,  131,  238,  329,  584,  588,
+ /*   510 */  1627,  138,  138,  138,  138,  137,  137,  136,  136,  136,
+ /*   520 */   135,  132,  463,   19,   19,  435, 1230, 1460,  297,  297,
+ /*   530 */   311,  424, 1565,  464, 1631,  599,    2, 1284,  437,  574,
+ /*   540 */  1107,  590,  330,  579,  158,  582,  489,  357,  573,  593,
+ /*   550 */   592, 1366,  409, 1274, 1230,  141,  142,   93, 1364, 1254,
+ /*   560 */  1254, 1085, 1088, 1075, 1075,  139,  139,  140,  140,  140,
+ /*   570 */   140,  389,   84,   84, 1062,  567, 1230,  313, 1523,  593,
+ /*   580 */   125,  125,  970, 1230, 1231, 1230,  296,  296,  126,   46,
+ /*   590 */   464,  594,  464,  296,  296, 1050, 1230,  218,  439,  590,
+ /*   600 */  1604,  579,   84,   84,    7,  403,  590,  515,  579,  325,
+ /*   610 */   417, 1230, 1231, 1230,  250,  138,  138,  138,  138,  137,
+ /*   620 */   137,  136,  136,  136,  135,  132,  463, 1050, 1050, 1052,
+ /*   630 */  1053,   35, 1275, 1230, 1231, 1230,  424, 1370,  993,  574,
+ /*   640 */   371,  414,  274,  412, 1597,  467, 1302,  552,  451,  590,
+ /*   650 */   543,  579, 1530, 1230, 1231, 1230, 1214,  201,  409, 1174,
+ /*   660 */   141,  142,   93,  223, 1254, 1254, 1085, 1088, 1075, 1075,
+ /*   670 */   139,  139,  140,  140,  140,  140,  296,  296, 1250,  593,
+ /*   680 */   424,  296,  296,  236,  529,  296,  296,  515,  100,  590,
+ /*   690 */  1600,  579,   48, 1605,  590, 1230,  579,    7,  590,  577,
+ /*   700 */   579,  904,   84,   84,  141,  142,   93,  496, 1254, 1254,
+ /*   710 */  1085, 1088, 1075, 1075,  139,  139,  140,  140,  140,  140,
+ /*   720 */   138,  138,  138,  138,  137,  137,  136,  136,  136,  135,
+ /*   730 */   132,  463, 1365, 1230,  296,  296, 1250,  115, 1275,  326,
+ /*   740 */   233,  539, 1062,   40,  282,  127,  585,  590,    4,  579,
+ /*   750 */   329,  584, 1230, 1231, 1230, 1598,  593,  388,  904, 1051,
+ /*   760 */  1356, 1356,  588, 1050,  138,  138,  138,  138,  137,  137,
+ /*   770 */   136,  136,  136,  135,  132,  463,  185,  593, 1230,   19,
+ /*   780 */    19, 1230,  971, 1597,  424, 1651,  464,  129,  908, 1195,
+ /*   790 */  1230, 1231, 1230, 1325,  443, 1050, 1050, 1052,  582, 1603,
+ /*   800 */   149,  149, 1195,    7,    5, 1195, 1687,  410,  141,  142,
+ /*   810 */    93, 1536, 1254, 1254, 1085, 1088, 1075, 1075,  139,  139,
+ /*   820 */   140,  140,  140,  140, 1214,  397,  593, 1062,  424, 1536,
+ /*   830 */  1538,   50,  901,  125,  125, 1230, 1231, 1230, 1230, 1231,
+ /*   840 */  1230,  126, 1230,  464,  594,  464,  515, 1230, 1050,   84,
+ /*   850 */    84,    3,  141,  142,   93,  924, 1254, 1254, 1085, 1088,
+ /*   860 */  1075, 1075,  139,  139,  140,  140,  140,  140,  138,  138,
+ /*   870 */   138,  138,  137,  137,  136,  136,  136,  135,  132,  463,
+ /*   880 */  1050, 1050, 1052, 1053,   35,  442,  457,  532,  433, 1230,
+ /*   890 */  1062, 1361,  540,  540, 1598,  925,  388,    7, 1129, 1230,
+ /*   900 */  1231, 1230, 1129, 1536, 1230, 1231, 1230, 1051,  570, 1214,
+ /*   910 */   593, 1050,  138,  138,  138,  138,  137,  137,  136,  136,
+ /*   920 */   136,  135,  132,  463,    6,  185, 1195, 1230,  231,  593,
+ /*   930 */   382,  992,  424,  151,  151,  510, 1213,  557,  482, 1195,
+ /*   940 */   381,  160, 1195, 1050, 1050, 1052, 1230, 1231, 1230,  422,
+ /*   950 */   593,  447,   84,   84,  593,  217,  141,  142,   93,  593,
+ /*   960 */  1254, 1254, 1085, 1088, 1075, 1075,  139,  139,  140,  140,
+ /*   970 */   140,  140, 1214,   19,   19,  593,  424,   19,   19,  442,
+ /*   980 */  1063,  442,   19,   19, 1230, 1231, 1230,  515,  445,  458,
+ /*   990 */  1597,  386,  315, 1175, 1685,  556, 1685,  450,   84,   84,
+ /*  1000 */   141,  142,   93,  505, 1254, 1254, 1085, 1088, 1075, 1075,
+ /*  1010 */   139,  139,  140,  140,  140,  140,  138,  138,  138,  138,
+ /*  1020 */   137,  137,  136,  136,  136,  135,  132,  463,  442, 1147,
+ /*  1030 */   454, 1597,  362, 1041,  593,  462, 1460, 1233,   47, 1393,
+ /*  1040 */   324,  565,  565,  115, 1148,  449,    7,  460,  459,  307,
+ /*  1050 */   375,  354,  593,  113,  593,  329,  584,   19,   19, 1149,
+ /*  1060 */   138,  138,  138,  138,  137,  137,  136,  136,  136,  135,
+ /*  1070 */   132,  463,  209, 1173,  563,   19,   19,   19,   19,   49,
+ /*  1080 */   424,  944, 1175, 1686, 1046, 1686,  218,  355,  484,  343,
+ /*  1090 */   210,  945,  569,  562, 1262, 1233, 1262,  490,  314,  423,
+ /*  1100 */   424, 1598, 1206,  388,  141,  142,   93,  440, 1254, 1254,
+ /*  1110 */  1085, 1088, 1075, 1075,  139,  139,  140,  140,  140,  140,
+ /*  1120 */   352,  316,  531,  316,  141,  142,   93,  549, 1254, 1254,
+ /*  1130 */  1085, 1088, 1075, 1075,  139,  139,  140,  140,  140,  140,
+ /*  1140 */   446,   10, 1598,  274,  388,  915,  281,  299,  383,  534,
+ /*  1150 */   378,  533,  269,  593, 1206,  587,  587,  587,  374,  293,
+ /*  1160 */  1579,  991, 1173,  302,  138,  138,  138,  138,  137,  137,
+ /*  1170 */   136,  136,  136,  135,  132,  463,   53,   53,  520, 1250,
+ /*  1180 */   593, 1147, 1576,  431,  138,  138,  138,  138,  137,  137,
+ /*  1190 */   136,  136,  136,  135,  132,  463, 1148,  301,  593, 1577,
+ /*  1200 */   593, 1307,  431,   54,   54,  593,  268,  593,  461,  461,
+ /*  1210 */   461, 1149,  347,  492,  424,  135,  132,  463, 1146, 1195,
+ /*  1220 */   474,   68,   68,   69,   69,  550,  332,  287,   21,   21,
+ /*  1230 */    55,   55, 1195,  581,  424, 1195,  309, 1250,  141,  142,
+ /*  1240 */    93,  119, 1254, 1254, 1085, 1088, 1075, 1075,  139,  139,
+ /*  1250 */   140,  140,  140,  140,  593,  237,  480, 1476,  141,  142,
+ /*  1260 */    93,  593, 1254, 1254, 1085, 1088, 1075, 1075,  139,  139,
+ /*  1270 */   140,  140,  140,  140,  344,  430,  346,   70,   70,  494,
+ /*  1280 */   991, 1132, 1132,  512,   56,   56, 1269,  593,  268,  593,
+ /*  1290 */   369,  374,  593,  481,  215,  384, 1624,  481,  138,  138,
+ /*  1300 */   138,  138,  137,  137,  136,  136,  136,  135,  132,  463,
+ /*  1310 */    71,   71,   72,   72,  225,   73,   73,  593,  138,  138,
+ /*  1320 */   138,  138,  137,  137,  136,  136,  136,  135,  132,  463,
+ /*  1330 */   586,  431,  593,  872,  873,  874,  593,  911,  593, 1602,
+ /*  1340 */    74,   74,  593,    7, 1460,  242,  593,  306,  424, 1578,
+ /*  1350 */   472,  306,  364,  219,  367,   75,   75,  430,  345,   57,
+ /*  1360 */    57,   58,   58,  432,  187,   59,   59,  593,  424,   61,
+ /*  1370 */    61, 1475,  141,  142,   93,  123, 1254, 1254, 1085, 1088,
+ /*  1380 */  1075, 1075,  139,  139,  140,  140,  140,  140,  424,  570,
+ /*  1390 */    62,   62,  141,  142,   93,  911, 1254, 1254, 1085, 1088,
+ /*  1400 */  1075, 1075,  139,  139,  140,  140,  140,  140,  161,  384,
+ /*  1410 */  1624, 1474,  141,  130,   93,  441, 1254, 1254, 1085, 1088,
+ /*  1420 */  1075, 1075,  139,  139,  140,  140,  140,  140,  267,  266,
+ /*  1430 */   265, 1460,  138,  138,  138,  138,  137,  137,  136,  136,
+ /*  1440 */   136,  135,  132,  463,  593, 1336,  593, 1269, 1460,  384,
+ /*  1450 */  1624,  231,  138,  138,  138,  138,  137,  137,  136,  136,
+ /*  1460 */   136,  135,  132,  463,  593,  163,  593,   76,   76,   77,
+ /*  1470 */    77,  593,  138,  138,  138,  138,  137,  137,  136,  136,
+ /*  1480 */   136,  135,  132,  463,  475,  593,  483,   78,   78,   20,
+ /*  1490 */    20, 1249,  424,  491,   79,   79,  495,  422,  295,  235,
+ /*  1500 */  1574,   38,  511,  896,  422,  335,  240,  422,  147,  147,
+ /*  1510 */   112,  593,  424,  593,  101,  222,  991,  142,   93,  455,
+ /*  1520 */  1254, 1254, 1085, 1088, 1075, 1075,  139,  139,  140,  140,
+ /*  1530 */   140,  140,  593,   39,  148,  148,   80,   80,   93,  551,
+ /*  1540 */  1254, 1254, 1085, 1088, 1075, 1075,  139,  139,  140,  140,
+ /*  1550 */   140,  140,  328,  923,  922,   64,   64,  502, 1656, 1005,
+ /*  1560 */   933,  896,  124,  422,  121,  254,  593, 1006,  593,  226,
+ /*  1570 */   593,  127,  585,  164,    4,   16,  138,  138,  138,  138,
+ /*  1580 */   137,  137,  136,  136,  136,  135,  132,  463,  588,   81,
+ /*  1590 */    81,   65,   65,   82,   82,  593,  138,  138,  138,  138,
+ /*  1600 */   137,  137,  136,  136,  136,  135,  132,  463,  593,  226,
+ /*  1610 */   237,  966,  464,  593,  298,  593,  965,  593,   66,   66,
+ /*  1620 */   593, 1170,  593,  411,  582,  353,  469,  115,  593,  471,
+ /*  1630 */   169,  173,  173,  593,   44,  991,  174,  174,   89,   89,
+ /*  1640 */    67,   67,  593,   85,   85,  150,  150, 1114, 1043,  593,
+ /*  1650 */   273,   86,   86, 1062,  593,  503,  171,  171,  593,  125,
+ /*  1660 */   125,  497,  593,  273,  336,  152,  152,  126, 1335,  464,
+ /*  1670 */   594,  464,  146,  146, 1050,  593,  545,  172,  172,  593,
+ /*  1680 */  1054,  165,  165,  256,  339,  156,  156,  127,  585, 1586,
+ /*  1690 */     4,  329,  584,  499,  358,  273,  115,  348,  155,  155,
+ /*  1700 */   930,  931,  153,  153,  588, 1114, 1050, 1050, 1052, 1053,
+ /*  1710 */    35, 1554,  521,  593,  270, 1008, 1009,    9,  593,  372,
+ /*  1720 */   593,  115,  593,  168,  593,  115,  593, 1110,  464,  270,
+ /*  1730 */   996,  964,  273,  129, 1645, 1214,  154,  154, 1054, 1404,
+ /*  1740 */   582,   88,   88,   90,   90,   87,   87,   52,   52,   60,
+ /*  1750 */    60, 1405,  504,  537,  559, 1179,  961,  507,  129,  558,
+ /*  1760 */   127,  585, 1126,    4, 1126, 1125,  894, 1125,  162, 1062,
+ /*  1770 */   963,  359,  129, 1401,  363,  125,  125,  588,  366,  368,
+ /*  1780 */   370, 1349, 1334,  126, 1333,  464,  594,  464,  377,  387,
+ /*  1790 */  1050, 1391, 1414, 1618, 1459, 1387, 1399,  208,  580, 1464,
+ /*  1800 */  1314,  464,  243,  516, 1305, 1293, 1384, 1292, 1294, 1638,
+ /*  1810 */   288,  170,  228,  582,   12,  408,  321,  322,  241,  323,
+ /*  1820 */   245, 1446, 1050, 1050, 1052, 1053,   35,  559,  304,  350,
+ /*  1830 */   351,  501,  560,  127,  585, 1441,    4, 1451, 1434,  310,
+ /*  1840 */  1450,  526, 1062, 1332,  415,  380,  232, 1527,  125,  125,
+ /*  1850 */   588, 1214, 1396,  356, 1526,  583,  126, 1397,  464,  594,
+ /*  1860 */   464, 1641,  535, 1050, 1581, 1395, 1269, 1583, 1582,  213,
+ /*  1870 */   402,  277,  214,  227,  464, 1573,  239, 1571, 1266, 1394,
+ /*  1880 */   434,  198,  100,  224,   96,  183,  582,  191,  485,  193,
+ /*  1890 */   486,  194,  195,  196,  519, 1050, 1050, 1052, 1053,   35,
+ /*  1900 */   559,  113,  252,  413, 1447,  558,  493,   13, 1455,  416,
+ /*  1910 */  1453, 1452,   14,  202, 1521, 1062, 1532,  508,  258,  106,
+ /*  1920 */   514,  125,  125,   99, 1214, 1543,  289,  260,  206,  126,
+ /*  1930 */   365,  464,  594,  464,  361,  517, 1050,  261,  448, 1295,
+ /*  1940 */   262,  418, 1352, 1351,  108, 1350, 1655, 1654, 1343,  915,
+ /*  1950 */   419, 1322,  233,  452,  319,  379, 1321,  453, 1623,  320,
+ /*  1960 */  1320,  275, 1653,  544,  276, 1609, 1608, 1342, 1050, 1050,
+ /*  1970 */  1052, 1053,   35, 1630, 1218,  466,  385,  456,  300, 1419,
+ /*  1980 */   144, 1418,  570,  407,  407,  406,  284,  404,   11, 1508,
+ /*  1990 */   881,  396,  120,  127,  585,  394,    4, 1214,  327,  114,
+ /*  2000 */  1375, 1374,  220,  247,  400,  338,  401,  554,   42, 1224,
+ /*  2010 */   588,  596,  283,  337,  285,  286,  188,  597, 1290, 1285,
+ /*  2020 */   175, 1558,  176, 1559, 1557, 1556,  159,  317,  229,  177,
+ /*  2030 */   868,  230,   91,  465,  464,  221,  331,  468, 1165,  470,
+ /*  2040 */   473,   94,  244,   95,  249,  189,  582, 1124, 1122,  341,
+ /*  2050 */   427,  190,  178, 1249,  179,   43,  192,  947,  349,  428,
+ /*  2060 */  1138,  197,  251,  180,  181,  436,  102,  182,  438,  103,
+ /*  2070 */   104,  199,  248, 1140,  253, 1062,  105,  255, 1137,  166,
+ /*  2080 */    24,  125,  125,  257, 1264,  273,  360,  513,  259,  126,
+ /*  2090 */    15,  464,  594,  464,  204,  883, 1050,  518,  263,  373,
+ /*  2100 */   381,   92,  585, 1130,    4,  203,  205,  426,  107,  522,
+ /*  2110 */    25,   26,  329,  584,  913,  572,  527,  376,  588,  926,
+ /*  2120 */   530,  109,  184,  318,  167,  110,   27,  538, 1050, 1050,
+ /*  2130 */  1052, 1053,   35, 1211, 1091,   17,  476,  111, 1181,  234,
+ /*  2140 */   292, 1180,  464,  294,  207,  994,  129, 1201,  272, 1000,
+ /*  2150 */    28, 1197,   29,   30,  582, 1199, 1205, 1214,   31, 1204,
+ /*  2160 */    32, 1186,   41,  566,   33, 1105,  211,    8,  115, 1092,
+ /*  2170 */  1090, 1094,   34,  278,  578, 1095,  117,  122,  118, 1145,
+ /*  2180 */    36,   18,  128, 1062, 1055,  895,  957,   37,  589,  125,
+ /*  2190 */   125,  279,  186,  280, 1646,  157,  405,  126, 1220,  464,
+ /*  2200 */   594,  464, 1218,  466, 1050, 1219,  300, 1281, 1281, 1281,
+ /*  2210 */  1281,  407,  407,  406,  284,  404, 1281, 1281,  881, 1281,
+ /*  2220 */   300, 1281, 1281,  571, 1281,  407,  407,  406,  284,  404,
+ /*  2230 */  1281,  247,  881,  338, 1281, 1281, 1050, 1050, 1052, 1053,
+ /*  2240 */    35,  337, 1281, 1281, 1281,  247, 1281,  338, 1281, 1281,
+ /*  2250 */  1281, 1281, 1281, 1281, 1281,  337, 1281, 1281, 1281, 1281,
+ /*  2260 */  1281, 1281, 1281, 1281, 1281, 1214, 1281, 1281, 1281, 1281,
+ /*  2270 */  1281, 1281,  249, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
+ /*  2280 */   178, 1281, 1281,   43, 1281, 1281,  249, 1281, 1281, 1281,
+ /*  2290 */  1281, 1281, 1281, 1281,  178, 1281, 1281,   43, 1281, 1281,
+ /*  2300 */   248, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
+ /*  2310 */  1281, 1281, 1281, 1281,  248, 1281, 1281, 1281, 1281, 1281,
+ /*  2320 */  1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
+ /*  2330 */  1281, 1281, 1281, 1281, 1281,  426, 1281, 1281, 1281, 1281,
+ /*  2340 */   329,  584, 1281, 1281, 1281, 1281, 1281, 1281, 1281,  426,
+ /*  2350 */  1281, 1281, 1281, 1281,  329,  584, 1281, 1281, 1281, 1281,
+ /*  2360 */  1281, 1281, 1281, 1281,  476, 1281, 1281, 1281, 1281, 1281,
+ /*  2370 */  1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,  476,
 };
 static const YYCODETYPE yy_lookahead[] = {
- /*     0 */   277,  278,  279,  241,  242,  225,  195,  227,  195,  241,
- /*    10 */   242,  195,  217,  221,  195,  235,  254,  195,  256,   19,
- /*    20 */   225,  298,  254,  195,  256,  206,  213,  214,  206,  218,
- /*    30 */   219,   31,  206,  195,  218,  219,  195,  218,  219,   39,
- /*    40 */   218,  219,  313,   43,   44,   45,  317,   47,   48,   49,
+ /*     0 */   277,  278,  279,  241,  242,  225,  195,  227,  195,  312,
+ /*    10 */   195,  218,  195,  316,  195,  235,  254,  195,  256,   19,
+ /*    20 */   297,  277,  278,  279,  218,  206,  213,  214,  206,  218,
+ /*    30 */   219,   31,  206,  218,  219,  218,  219,  218,  219,   39,
+ /*    40 */   218,  219,  195,   43,   44,   45,  195,   47,   48,   49,
  /*    50 */    50,   51,   52,   53,   54,   55,   56,   57,   58,   19,
- /*    60 */   241,  242,  195,  241,  242,  195,  255,  241,  242,  277,
- /*    70 */   278,  279,  234,  254,  255,  256,  254,  255,  256,  218,
- /*    80 */   254,  240,  256,   43,   44,   45,  264,   47,   48,   49,
- /*    90 */    50,   51,   52,   53,   54,   55,   56,   57,   58,  271,
- /*   100 */   287,   22,   23,  103,  104,  105,  106,  107,  108,  109,
- /*   110 */   110,  111,  112,  113,  114,  114,   47,   48,   49,   50,
+ /*    60 */   241,  242,  195,  241,  242,  195,  255,  241,  242,  195,
+ /*    70 */   255,  237,  238,  254,  255,  256,  254,  255,  256,  264,
+ /*    80 */   254,  207,  256,   43,   44,   45,  264,   47,   48,   49,
+ /*    90 */    50,   51,   52,   53,   54,   55,   56,   57,   58,  251,
+ /*   100 */   287,  253,  215,  103,  104,  105,  106,  107,  108,  109,
+ /*   110 */   110,  111,  112,  113,  114,   82,  265,  195,  271,   11,
  /*   120 */   187,  188,  189,  190,  191,  192,  190,   87,  192,   89,
- /*   130 */   197,   19,  199,  197,  318,  199,  320,   25,  195,  206,
- /*   140 */   299,  271,  206,  103,  104,  105,  106,  107,  108,  109,
+ /*   130 */   197,   19,  199,  197,  317,  199,  319,   25,  271,  206,
+ /*   140 */   218,  219,  206,  103,  104,  105,  106,  107,  108,  109,
  /*   150 */   110,  111,  112,  113,  114,   43,   44,   45,  195,   47,
  /*   160 */    48,   49,   50,   51,   52,   53,   54,   55,   56,   57,
- /*   170 */    58,   60,   21,  195,  241,  242,  215,  241,  242,  312,
- /*   180 */   313,  102,   70,  205,  317,  207,  242,  254,   77,  256,
- /*   190 */   254,  122,  256,   55,   56,   57,   58,   59,  254,   88,
- /*   200 */   256,   90,  269,  240,   93,  269,  107,  108,  109,  110,
- /*   210 */   111,  112,  113,  114,  271,  103,  104,  105,  106,  107,
- /*   220 */   108,  109,  110,  111,  112,  113,  114,  313,  117,  118,
- /*   230 */   119,  317,   81,  195,  301,   19,  195,  301,  277,  278,
- /*   240 */   279,  103,  104,  105,  106,  107,  108,  109,  110,  111,
- /*   250 */   112,  113,  114,   55,   56,   57,   58,  146,  195,   43,
- /*   260 */    44,   45,   74,   47,   48,   49,   50,   51,   52,   53,
- /*   270 */    54,   55,   56,   57,   58,  124,  195,   60,  109,  110,
- /*   280 */   111,  112,  113,  114,   68,  195,  103,  104,  105,  106,
- /*   290 */   107,  108,  109,  110,  111,  112,  113,  114,  208,  218,
- /*   300 */   219,  103,  104,  105,  106,  107,  108,  109,  110,  111,
- /*   310 */   112,  113,  114,  162,  233,   24,  128,  129,  130,  103,
+ /*   170 */    58,   60,  139,  140,  241,  242,  289,  241,  242,  309,
+ /*   180 */   310,  294,   70,   47,   48,   49,   50,  254,   77,  256,
+ /*   190 */   254,  195,  256,   55,   56,   57,   58,   59,  221,   88,
+ /*   200 */   109,   90,  269,  240,   93,  269,  107,  108,  109,  110,
+ /*   210 */   111,  112,  113,  114,  215,  103,  104,  105,  106,  107,
+ /*   220 */   108,  109,  110,  111,  112,  113,  114,  136,  117,  118,
+ /*   230 */   119,  298,  141,  300,  298,   19,  300,  129,  130,  317,
+ /*   240 */   318,  103,  104,  105,  106,  107,  108,  109,  110,  111,
+ /*   250 */   112,  113,  114,  114,  277,  278,  279,  146,  122,   43,
+ /*   260 */    44,   45,  195,   47,   48,   49,   50,   51,   52,   53,
+ /*   270 */    54,   55,   56,   57,   58,  218,  277,  278,  279,   19,
+ /*   280 */    19,  195,  286,   23,   68,  218,  219,   55,   56,   57,
+ /*   290 */    58,  103,  104,  105,  106,  107,  108,  109,  110,  111,
+ /*   300 */   112,  113,  114,   43,   44,   45,  232,   47,   48,   49,
+ /*   310 */    50,   51,   52,   53,   54,   55,   56,   57,   58,  103,
  /*   320 */   104,  105,  106,  107,  108,  109,  110,  111,  112,  113,
- /*   330 */   114,  195,  195,  215,  117,  118,  119,  120,  195,   19,
- /*   340 */   123,  124,  125,  207,   24,   74,  246,   60,  310,  311,
- /*   350 */   133,   60,  311,   82,   22,  218,  219,  257,  195,   19,
- /*   360 */    73,  218,  219,   43,   44,   45,  206,   47,   48,   49,
- /*   370 */    50,   51,   52,   53,   54,   55,   56,   57,   58,   22,
- /*   380 */    23,  218,  219,   43,   44,   45,   54,   47,   48,   49,
- /*   390 */    50,   51,   52,   53,   54,   55,   56,   57,   58,  128,
- /*   400 */    82,  241,  242,  195,  117,  118,  119,  289,   60,  118,
- /*   410 */   139,  140,  294,  195,  254,  195,  256,  195,  255,  259,
- /*   420 */   260,   73,   22,  103,  104,  105,  106,  107,  108,  109,
- /*   430 */   110,  111,  112,  113,  114,  206,  218,  219,  218,  219,
- /*   440 */   218,  219,  234,  103,  104,  105,  106,  107,  108,  109,
- /*   450 */   110,  111,  112,  113,  114,  318,  319,  139,  140,  102,
- /*   460 */    60,  318,  319,  221,   19,  117,  118,  119,   23,  195,
- /*   470 */   241,  242,  313,  255,  206,  255,  317,  255,  206,  129,
- /*   480 */   130,  206,  264,  254,  264,  256,  264,  195,   43,   44,
- /*   490 */    45,  151,   47,   48,   49,   50,   51,   52,   53,   54,
- /*   500 */    55,   56,   57,   58,  246,  213,  214,   19,   19,  241,
- /*   510 */   242,  195,   23,  241,  242,  257,  241,  242,  118,  277,
- /*   520 */   278,  279,  254,   29,  256,   60,  254,   33,  256,  254,
- /*   530 */   206,  256,   43,   44,   45,  218,   47,   48,   49,   50,
- /*   540 */    51,   52,   53,   54,   55,   56,   57,   58,  103,  104,
- /*   550 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
- /*   560 */    66,   19,  218,   60,  120,  241,  242,  123,  124,  125,
- /*   570 */    60,  232,   77,   19,   20,   26,   22,  133,  254,  287,
- /*   580 */   256,  265,  117,  118,  119,   90,  312,  313,   93,   47,
- /*   590 */    36,  317,  103,  104,  105,  106,  107,  108,  109,  110,
- /*   600 */   111,  112,  113,  114,  116,  117,  277,  278,  279,   60,
- /*   610 */   107,  108,   19,  276,   60,   31,   23,  152,  195,  116,
- /*   620 */   117,  118,  119,   39,  121,  276,   72,  117,  118,  119,
- /*   630 */   166,  167,  129,  145,  237,  238,   43,   44,   45,  276,
- /*   640 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
- /*   650 */    57,   58,  315,  316,  144,  101,   19,  154,  116,  156,
- /*   660 */    23,  107,  108,  109,  315,  316,  117,  118,  119,  115,
- /*   670 */    60,  117,  118,  119,  132,  200,  122,   60,  315,  316,
- /*   680 */    43,   44,   45,  272,   47,   48,   49,   50,   51,   52,
- /*   690 */    53,   54,   55,   56,   57,   58,  103,  104,  105,  106,
- /*   700 */   107,  108,  109,  110,  111,  112,  113,  114,  154,  155,
- /*   710 */   156,  157,  158,  212,  213,  214,   22,  195,  101,   22,
- /*   720 */    60,   19,   20,   60,   22,  139,  140,  117,  118,  119,
- /*   730 */    22,  251,  195,  253,  117,  118,  195,  183,   36,  122,
- /*   740 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
- /*   750 */   113,  114,  195,  195,   60,  218,  219,   60,  195,  284,
- /*   760 */    19,   25,   60,  288,   23,  237,  238,   22,   60,  109,
- /*   770 */   233,  154,  155,  156,   72,  218,  219,  117,  118,  119,
- /*   780 */   117,  118,  119,  116,   43,   44,   45,  265,   47,   48,
- /*   790 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
- /*   800 */   183,  243,   25,  101,   19,   60,  265,  144,   23,  107,
- /*   810 */   108,  117,  118,  119,  117,  118,  119,  115,  151,  117,
- /*   820 */   118,  119,   82,  195,  122,  117,  118,  119,   43,   44,
- /*   830 */    45,  195,   47,   48,   49,   50,   51,   52,   53,   54,
- /*   840 */    55,   56,   57,   58,  103,  104,  105,  106,  107,  108,
- /*   850 */   109,  110,  111,  112,  113,  114,  154,  155,  156,  157,
- /*   860 */   158,  121,  117,  118,  119,  307,  101,  309,  195,   22,
- /*   870 */    23,  195,   25,   19,   35,  139,  140,  195,   24,  139,
- /*   880 */   140,  208,  195,  118,  109,  183,   22,  122,  103,  104,
- /*   890 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
- /*   900 */   304,  305,   77,  230,  127,  232,   67,  195,   19,  195,
- /*   910 */   195,  136,   23,   88,   75,   90,  141,  203,   93,  154,
- /*   920 */   155,  156,  208,  295,   60,  243,   22,   23,   19,   25,
- /*   930 */   218,  219,   43,   44,   45,  100,   47,   48,   49,   50,
- /*   940 */    51,   52,   53,   54,   55,   56,   57,   58,  183,  102,
- /*   950 */    96,  195,   43,   44,   45,  240,   47,   48,   49,   50,
- /*   960 */    51,   52,   53,   54,   55,   56,   57,   58,  114,  134,
- /*   970 */   131,  146,   25,  286,  120,  121,  122,  123,  124,  125,
- /*   980 */   126,  117,  118,  119,  313,  195,  132,  195,  317,  307,
- /*   990 */   195,  309,  103,  104,  105,  106,  107,  108,  109,  110,
- /*  1000 */   111,  112,  113,  114,  195,  195,  102,  195,  195,  195,
- /*  1010 */   218,  219,  103,  104,  105,  106,  107,  108,  109,  110,
- /*  1020 */   111,  112,  113,  114,   77,  233,  195,   60,  218,  219,
- /*  1030 */   218,  219,  218,  219,   23,  195,   25,   90,  243,  159,
- /*  1040 */    93,  161,   19,  233,  195,  233,   23,  233,   16,  218,
- /*  1050 */   219,  195,  243,  212,  213,  214,  262,  263,  218,  219,
- /*  1060 */   195,  271,   19,  307,  233,  309,   43,   44,   45,  160,
- /*  1070 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
- /*  1080 */    57,   58,  195,  218,  219,  118,   43,   44,   45,  240,
- /*  1090 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
- /*  1100 */    57,   58,  307,  195,  309,  218,  219,  263,   12,  195,
- /*  1110 */    78,  267,   80,  112,  113,  114,  307,   22,  309,   24,
- /*  1120 */   255,  281,  266,   27,  107,  108,  103,  104,  105,  106,
- /*  1130 */   107,  108,  109,  110,  111,  112,  113,  114,   42,  195,
- /*  1140 */    11,   22,  255,   24,  195,  195,  103,  104,  105,  106,
- /*  1150 */   107,  108,  109,  110,  111,  112,  113,  114,   19,  195,
- /*  1160 */    64,  195,  218,  219,  195,  313,  195,  218,  219,  317,
- /*  1170 */    74,  154,  195,  156,  195,  195,   19,  233,   23,   60,
- /*  1180 */    25,   24,  218,  219,  218,  219,  195,  218,  219,  218,
- /*  1190 */   219,  128,  129,  130,  162,  263,   19,  218,  219,  267,
- /*  1200 */    43,   44,   45,  160,   47,   48,   49,   50,   51,   52,
- /*  1210 */    53,   54,   55,   56,   57,   58,   19,  240,  228,  255,
- /*  1220 */    43,   44,   45,   25,   47,   48,   49,   50,   51,   52,
- /*  1230 */    53,   54,   55,   56,   57,   58,  135,  118,  137,  138,
- /*  1240 */    43,   44,   45,   22,   47,   48,   49,   50,   51,   52,
- /*  1250 */    53,   54,   55,   56,   57,   58,  117,  266,  129,  130,
- /*  1260 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
- /*  1270 */   113,  114,  195,  195,  119,  295,  195,  206,  195,  195,
- /*  1280 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
- /*  1290 */   113,  114,  195,  195,  195,  218,  219,  195,  195,  144,
- /*  1300 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
- /*  1310 */   113,  114,  241,  242,   67,  218,  219,  218,  219,  146,
- /*  1320 */    19,  218,  219,  240,  215,  254,  136,  256,  107,  108,
- /*  1330 */   195,  141,  255,   86,  128,  129,  130,  195,  165,  195,
- /*  1340 */    19,  143,   95,  272,   25,   44,   45,  266,   47,   48,
- /*  1350 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
- /*  1360 */   218,  219,  218,  219,  195,   12,   45,  195,   47,   48,
- /*  1370 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
- /*  1380 */    27,   23,    7,    8,    9,  210,  211,  218,  219,  116,
- /*  1390 */   218,  219,  228,   16,  147,   42,  195,  295,  195,   19,
- /*  1400 */    20,  266,   22,  294,  103,  104,  105,  106,  107,  108,
- /*  1410 */   109,  110,  111,  112,  113,  114,   36,   64,  145,  218,
- /*  1420 */   219,  218,  219,  195,  103,  104,  105,  106,  107,  108,
- /*  1430 */   109,  110,  111,  112,  113,  114,  195,  154,  119,  156,
- /*  1440 */    60,  189,  190,  191,  192,  195,  218,  219,  195,  197,
- /*  1450 */   195,  199,   72,  195,   19,   78,  195,   80,  206,  218,
- /*  1460 */   219,  195,   82,  144,  210,  211,  195,   15,  218,  219,
- /*  1470 */    47,  218,  219,  218,  219,  259,  260,  195,  261,  218,
- /*  1480 */   219,  101,  302,  303,  218,  219,  195,  107,  108,  218,
- /*  1490 */   219,  150,  151,  241,  242,  115,   25,  117,  118,  119,
- /*  1500 */   218,  219,  122,  195,  146,  195,  254,  195,  256,  218,
- /*  1510 */   219,  246,   25,   61,  246,   19,   20,  195,   22,  139,
- /*  1520 */   140,  269,  257,  195,  266,  257,  218,  219,  218,  219,
- /*  1530 */   218,  219,   36,  246,  154,  155,  156,  157,  158,  116,
- /*  1540 */   218,  219,  195,   22,  257,   49,  218,  219,   23,  195,
- /*  1550 */    25,  195,  117,  301,  195,   25,   60,  195,  195,   23,
- /*  1560 */   195,   25,  195,  183,   24,  218,  219,  130,   72,  195,
- /*  1570 */    22,  195,  218,  219,  218,  219,  195,  218,  219,  195,
- /*  1580 */   218,  219,   86,  218,  219,  218,  219,   91,   19,   20,
- /*  1590 */   153,   22,  218,  219,  218,  219,  195,  101,  195,  218,
- /*  1600 */   219,  195,  195,  107,  108,   36,   23,  195,   25,  195,
- /*  1610 */    62,  115,  195,  117,  118,  119,  195,  146,  122,  218,
- /*  1620 */   219,  218,  219,  195,  218,  219,   19,   60,  122,   60,
- /*  1630 */   218,  219,  218,  219,  195,  218,  219,  150,  132,  218,
- /*  1640 */   219,   72,  195,   23,  195,   25,  218,  219,  195,   60,
- /*  1650 */   154,  155,  156,  157,  158,   86,   23,  195,   25,  195,
- /*  1660 */    91,   19,   20,  142,   22,  218,  219,  218,  219,  130,
- /*  1670 */   101,  218,  219,  143,  121,  122,  107,  108,   36,  183,
- /*  1680 */   218,  219,  142,   60,  115,  118,  117,  118,  119,    7,
- /*  1690 */     8,  122,  153,   23,   23,   25,   25,   23,   23,   25,
- /*  1700 */    25,   23,   60,   25,   23,   98,   25,  118,   84,   85,
- /*  1710 */    23,   23,   25,   25,   72,  154,   23,  156,   25,   23,
- /*  1720 */   228,   25,  195,  154,  155,  156,  157,  158,   86,  195,
- /*  1730 */   195,  258,  195,   91,  291,  322,  195,  195,  195,  195,
- /*  1740 */   195,  118,  195,  101,  195,  195,  195,  195,  238,  107,
- /*  1750 */   108,  195,  183,  195,  195,  195,  290,  115,  195,  117,
- /*  1760 */   118,  119,  244,  195,  122,  195,  195,  195,  195,  195,
- /*  1770 */   195,  258,  258,  258,  258,  193,  245,  300,  216,  274,
- /*  1780 */   247,  270,  270,  274,  296,  296,  248,  222,  262,  198,
- /*  1790 */   262,  274,   61,  274,  248,  231,  154,  155,  156,  157,
- /*  1800 */   158,    0,    1,    2,  247,  227,    5,  221,  221,  221,
- /*  1810 */   142,   10,   11,   12,   13,   14,  262,  262,   17,  202,
- /*  1820 */   300,   19,   20,  300,   22,  183,  247,  251,  251,  245,
- /*  1830 */   202,   30,   38,   32,  202,  152,  151,   22,   36,   43,
- /*  1840 */   236,   40,   18,  202,  239,  239,   18,  239,  239,  283,
- /*  1850 */   201,  150,  236,  202,  236,  201,  159,  202,  248,  248,
- /*  1860 */   248,  248,   60,   63,  201,  275,  273,  275,  273,  275,
- /*  1870 */    22,  286,   71,  223,   72,  202,  223,  297,  297,  202,
- /*  1880 */    79,  201,  116,   82,  220,  201,  220,  220,   65,  293,
- /*  1890 */   292,  229,   22,  166,  127,  226,   24,  114,  226,  223,
- /*  1900 */    99,  222,  202,  101,  285,   92,  220,  308,   83,  107,
- /*  1910 */   108,  220,  220,  316,  220,  285,  268,  115,  229,  117,
- /*  1920 */   118,  119,  223,  321,  122,  268,  149,  146,   22,   19,
- /*  1930 */    20,  202,   22,  159,  282,  134,  321,  148,  280,  147,
- /*  1940 */   139,  140,  252,  141,   25,  204,   36,  252,   13,  251,
- /*  1950 */   196,  248,  250,  249,  196,    6,  154,  155,  156,  157,
- /*  1960 */   158,  209,  194,  194,  163,  194,  306,  306,  303,  224,
- /*  1970 */    60,  215,  215,  209,  215,  215,  215,  224,  216,  216,
- /*  1980 */     4,  209,   72,    3,   22,  183,  164,   15,   23,   16,
- /*  1990 */    23,  140,  152,  131,   25,   24,  143,   20,   16,  145,
- /*  2000 */     1,  143,  131,   62,  131,   37,   54,  152,   54,   54,
- /*  2010 */    54,  101,  131,  117,    1,   34,  142,  107,  108,    5,
- /*  2020 */    22,  116,  162,   76,   41,  115,   69,  117,  118,  119,
- /*  2030 */     1,    2,  122,   25,    5,   69,  142,  116,   20,   10,
- /*  2040 */    11,   12,   13,   14,   24,   19,   17,  132,    5,  126,
- /*  2050 */    22,  141,   68,   10,   11,   12,   13,   14,   22,   30,
- /*  2060 */    17,   32,   22,   22,  154,  155,  156,  157,  158,   40,
- /*  2070 */    23,   68,   60,   30,   24,   32,   97,   28,   22,   68,
- /*  2080 */    23,   37,   34,   40,  150,   22,   25,   23,   23,   23,
- /*  2090 */    22,   98,  142,  183,   23,   23,   34,   22,   25,   89,
- /*  2100 */    71,   34,  117,  144,   34,   22,   76,   76,   79,   87,
- /*  2110 */    34,   82,   34,   44,   71,   94,   34,   23,   25,   24,
- /*  2120 */    34,   25,   79,   23,   23,   82,   23,   23,   99,  143,
- /*  2130 */   143,   22,   25,   25,   23,   22,   11,   22,   22,   25,
- /*  2140 */    23,   23,   99,   22,   22,  136,  142,  142,  142,   25,
- /*  2150 */    23,   15,    1,    1,  323,  323,  323,  323,  323,  323,
- /*  2160 */   323,  323,  323,  134,  323,  323,  323,  323,  139,  140,
- /*  2170 */   323,  323,  323,  323,  323,  323,  323,  134,  323,  323,
- /*  2180 */   323,  323,  139,  140,  323,  323,  323,  323,  323,  323,
- /*  2190 */   323,  323,  163,  323,  323,  323,  323,  323,  323,  323,
- /*  2200 */   323,  323,  323,  323,  323,  323,  163,  323,  323,  323,
- /*  2210 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2220 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2230 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2240 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2250 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2260 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2270 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2280 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2290 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2300 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2310 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2320 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2330 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
- /*  2340 */   323,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2350 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2360 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2370 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2380 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2390 */   187,  187,  187,  187,
+ /*   330 */   114,  135,   60,  137,  138,  103,  104,  105,  106,  107,
+ /*   340 */   108,  109,  110,  111,  112,  113,  114,   82,  281,  206,
+ /*   350 */   195,  109,  110,  111,  112,  113,  114,  195,  195,  195,
+ /*   360 */   205,   22,  207,  103,  104,  105,  106,  107,  108,  109,
+ /*   370 */   110,  111,  112,  113,  114,  195,   60,  116,  117,  107,
+ /*   380 */   108,  218,  219,   19,  241,  242,  121,   23,  116,  117,
+ /*   390 */   118,  119,  306,  121,  308,  206,  234,  254,   15,  256,
+ /*   400 */   195,  129,  259,  260,  139,  140,  145,   43,   44,   45,
+ /*   410 */   200,   47,   48,   49,   50,   51,   52,   53,   54,   55,
+ /*   420 */    56,   57,   58,  218,  219,   60,  154,   19,  156,  265,
+ /*   430 */   241,  242,   24,  117,  118,  119,  120,   21,   73,  123,
+ /*   440 */   124,  125,   74,  254,   61,  256,  107,  108,  221,  133,
+ /*   450 */    82,   43,   44,   45,  195,   47,   48,   49,   50,   51,
+ /*   460 */    52,   53,   54,   55,   56,   57,   58,  103,  104,  105,
+ /*   470 */   106,  107,  108,  109,  110,  111,  112,  113,  114,  195,
+ /*   480 */   317,  318,  117,  118,  119,   22,  120,  195,   22,  123,
+ /*   490 */   124,  125,   19,   20,  284,   22,  128,   81,  288,  133,
+ /*   500 */   195,  195,  218,  219,  277,  278,  279,  139,  140,   36,
+ /*   510 */   195,  103,  104,  105,  106,  107,  108,  109,  110,  111,
+ /*   520 */   112,  113,  114,  218,  219,   62,   60,  195,  241,  242,
+ /*   530 */   271,   19,  240,   60,  189,  190,  191,  192,  233,  255,
+ /*   540 */   124,  254,  197,  256,  199,   72,  129,  130,  264,  195,
+ /*   550 */   195,  206,   22,   23,   60,   43,   44,   45,  206,   47,
+ /*   560 */    48,   49,   50,   51,   52,   53,   54,   55,   56,   57,
+ /*   570 */    58,  195,  218,  219,  101,  195,   60,  271,  162,  195,
+ /*   580 */   107,  108,  109,  117,  118,  119,  241,  242,  115,   73,
+ /*   590 */   117,  118,  119,  241,  242,  122,   60,  195,  266,  254,
+ /*   600 */   312,  256,  218,  219,  316,  203,  254,  195,  256,  255,
+ /*   610 */   208,  117,  118,  119,  269,  103,  104,  105,  106,  107,
+ /*   620 */   108,  109,  110,  111,  112,  113,  114,  154,  155,  156,
+ /*   630 */   157,  158,  102,  117,  118,  119,   19,  242,  144,  255,
+ /*   640 */    23,  206,   24,  298,  195,  300,  206,  195,  264,  254,
+ /*   650 */   206,  256,  240,  117,  118,  119,  183,   22,   22,   23,
+ /*   660 */    43,   44,   45,  151,   47,   48,   49,   50,   51,   52,
+ /*   670 */    53,   54,   55,   56,   57,   58,  241,  242,   60,  195,
+ /*   680 */    19,  241,  242,  195,   23,  241,  242,  195,  152,  254,
+ /*   690 */   310,  256,  243,  312,  254,   60,  256,  316,  254,  206,
+ /*   700 */   256,   60,  218,  219,   43,   44,   45,  272,   47,   48,
+ /*   710 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
+ /*   720 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
+ /*   730 */   113,  114,  240,   60,  241,  242,  118,   25,  102,  255,
+ /*   740 */   166,  167,  101,   22,   26,   19,   20,  254,   22,  256,
+ /*   750 */   139,  140,  117,  118,  119,  306,  195,  308,  117,  118,
+ /*   760 */   237,  238,   36,  122,  103,  104,  105,  106,  107,  108,
+ /*   770 */   109,  110,  111,  112,  113,  114,  195,  195,   60,  218,
+ /*   780 */   219,   60,  109,  195,   19,  217,   60,   25,   23,   77,
+ /*   790 */   117,  118,  119,  225,  233,  154,  155,  156,   72,  312,
+ /*   800 */   218,  219,   90,  316,   22,   93,  303,  304,   43,   44,
+ /*   810 */    45,  195,   47,   48,   49,   50,   51,   52,   53,   54,
+ /*   820 */    55,   56,   57,   58,  183,  195,  195,  101,   19,  213,
+ /*   830 */   214,  243,   23,  107,  108,  117,  118,  119,  117,  118,
+ /*   840 */   119,  115,   60,  117,  118,  119,  195,   60,  122,  218,
+ /*   850 */   219,   22,   43,   44,   45,   35,   47,   48,   49,   50,
+ /*   860 */    51,   52,   53,   54,   55,   56,   57,   58,  103,  104,
+ /*   870 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
+ /*   880 */   154,  155,  156,  157,  158,  195,  255,   67,  195,   60,
+ /*   890 */   101,  240,  311,  312,  306,   75,  308,  316,   29,  117,
+ /*   900 */   118,  119,   33,  287,  117,  118,  119,  118,  146,  183,
+ /*   910 */   195,  122,  103,  104,  105,  106,  107,  108,  109,  110,
+ /*   920 */   111,  112,  113,  114,  215,  195,   77,   60,   25,  195,
+ /*   930 */   122,  144,   19,  218,  219,   66,   23,   88,  246,   90,
+ /*   940 */   132,   25,   93,  154,  155,  156,  117,  118,  119,  257,
+ /*   950 */   195,  131,  218,  219,  195,  265,   43,   44,   45,  195,
+ /*   960 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
+ /*   970 */    57,   58,  183,  218,  219,  195,   19,  218,  219,  195,
+ /*   980 */    23,  195,  218,  219,  117,  118,  119,  195,  233,  255,
+ /*   990 */   195,  195,  233,   22,   23,  146,   25,  233,  218,  219,
+ /*  1000 */    43,   44,   45,  294,   47,   48,   49,   50,   51,   52,
+ /*  1010 */    53,   54,   55,   56,   57,   58,  103,  104,  105,  106,
+ /*  1020 */   107,  108,  109,  110,  111,  112,  113,  114,  195,   12,
+ /*  1030 */   234,  195,  240,   74,  195,  255,  195,   60,  243,  262,
+ /*  1040 */   263,  311,  312,   25,   27,   19,  316,  107,  108,  265,
+ /*  1050 */    24,  265,  195,  150,  195,  139,  140,  218,  219,   42,
+ /*  1060 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
+ /*  1070 */   113,  114,  233,  102,   67,  218,  219,  218,  219,  243,
+ /*  1080 */    19,   64,   22,   23,   23,   25,  195,  128,  129,  130,
+ /*  1090 */   233,   74,  233,   86,  154,  118,  156,  130,  265,  208,
+ /*  1100 */    19,  306,   95,  308,   43,   44,   45,  266,   47,   48,
+ /*  1110 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
+ /*  1120 */   153,  230,   96,  232,   43,   44,   45,   19,   47,   48,
+ /*  1130 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
+ /*  1140 */   114,   22,  306,   24,  308,  127,  120,  121,  122,  123,
+ /*  1150 */   124,  125,  126,  195,  147,  212,  213,  214,  132,   23,
+ /*  1160 */   195,   25,  102,  100,  103,  104,  105,  106,  107,  108,
+ /*  1170 */   109,  110,  111,  112,  113,  114,  218,  219,   19,   60,
+ /*  1180 */   195,   12,  210,  211,  103,  104,  105,  106,  107,  108,
+ /*  1190 */   109,  110,  111,  112,  113,  114,   27,  134,  195,  195,
+ /*  1200 */   195,  210,  211,  218,  219,  195,   47,  195,  212,  213,
+ /*  1210 */   214,   42,   16,  130,   19,  112,  113,  114,   23,   77,
+ /*  1220 */   195,  218,  219,  218,  219,  117,  163,  164,  218,  219,
+ /*  1230 */   218,  219,   90,   64,   19,   93,  153,  118,   43,   44,
+ /*  1240 */    45,  160,   47,   48,   49,   50,   51,   52,   53,   54,
+ /*  1250 */    55,   56,   57,   58,  195,  119,  272,  276,   43,   44,
+ /*  1260 */    45,  195,   47,   48,   49,   50,   51,   52,   53,   54,
+ /*  1270 */    55,   56,   57,   58,   78,  116,   80,  218,  219,  116,
+ /*  1280 */   144,  128,  129,  130,  218,  219,   61,  195,   47,  195,
+ /*  1290 */    16,  132,  195,  263,  195,  314,  315,  267,  103,  104,
+ /*  1300 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
+ /*  1310 */   218,  219,  218,  219,  151,  218,  219,  195,  103,  104,
+ /*  1320 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
+ /*  1330 */   210,  211,  195,    7,    8,    9,  195,   60,  195,  312,
+ /*  1340 */   218,  219,  195,  316,  195,  120,  195,  263,   19,  195,
+ /*  1350 */   125,  267,   78,   24,   80,  218,  219,  116,  162,  218,
+ /*  1360 */   219,  218,  219,  301,  302,  218,  219,  195,   19,  218,
+ /*  1370 */   219,  276,   43,   44,   45,  160,   47,   48,   49,   50,
+ /*  1380 */    51,   52,   53,   54,   55,   56,   57,   58,   19,  146,
+ /*  1390 */   218,  219,   43,   44,   45,  118,   47,   48,   49,   50,
+ /*  1400 */    51,   52,   53,   54,   55,   56,   57,   58,  165,  314,
+ /*  1410 */   315,  276,   43,   44,   45,  266,   47,   48,   49,   50,
+ /*  1420 */    51,   52,   53,   54,   55,   56,   57,   58,  128,  129,
+ /*  1430 */   130,  195,  103,  104,  105,  106,  107,  108,  109,  110,
+ /*  1440 */   111,  112,  113,  114,  195,  228,  195,   61,  195,  314,
+ /*  1450 */   315,   25,  103,  104,  105,  106,  107,  108,  109,  110,
+ /*  1460 */   111,  112,  113,  114,  195,   22,  195,  218,  219,  218,
+ /*  1470 */   219,  195,  103,  104,  105,  106,  107,  108,  109,  110,
+ /*  1480 */   111,  112,  113,  114,  195,  195,  246,  218,  219,  218,
+ /*  1490 */   219,   25,   19,  246,  218,  219,  246,  257,  259,  260,
+ /*  1500 */   195,   22,  266,   60,  257,  195,  120,  257,  218,  219,
+ /*  1510 */   116,  195,   19,  195,  150,  151,   25,   44,   45,  266,
+ /*  1520 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
+ /*  1530 */    57,   58,  195,   54,  218,  219,  218,  219,   45,  145,
+ /*  1540 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
+ /*  1550 */    57,   58,  246,  121,  122,  218,  219,   19,   23,   31,
+ /*  1560 */    25,  118,  159,  257,  161,   24,  195,   39,  195,  143,
+ /*  1570 */   195,   19,   20,   22,   22,   24,  103,  104,  105,  106,
+ /*  1580 */   107,  108,  109,  110,  111,  112,  113,  114,   36,  218,
+ /*  1590 */   219,  218,  219,  218,  219,  195,  103,  104,  105,  106,
+ /*  1600 */   107,  108,  109,  110,  111,  112,  113,  114,  195,  143,
+ /*  1610 */   119,  136,   60,  195,   22,  195,  141,  195,  218,  219,
+ /*  1620 */   195,   23,  195,   25,   72,   23,  131,   25,  195,  134,
+ /*  1630 */    23,  218,  219,  195,   82,  144,  218,  219,  218,  219,
+ /*  1640 */   218,  219,  195,  218,  219,  218,  219,   60,   23,  195,
+ /*  1650 */    25,  218,  219,  101,  195,  117,  218,  219,  195,  107,
+ /*  1660 */   108,   23,  195,   25,  195,  218,  219,  115,  228,  117,
+ /*  1670 */   118,  119,  218,  219,  122,  195,   19,  218,  219,  195,
+ /*  1680 */    60,  218,  219,  142,  195,  218,  219,   19,   20,  195,
+ /*  1690 */    22,  139,  140,   23,   23,   25,   25,  195,  218,  219,
+ /*  1700 */     7,    8,  218,  219,   36,  118,  154,  155,  156,  157,
+ /*  1710 */   158,  195,   23,  195,   25,   84,   85,   49,  195,   23,
+ /*  1720 */   195,   25,  195,   23,  195,   25,  195,   23,   60,   25,
+ /*  1730 */    23,   23,   25,   25,  142,  183,  218,  219,  118,  195,
+ /*  1740 */    72,  218,  219,  218,  219,  218,  219,  218,  219,  218,
+ /*  1750 */   219,  195,  195,  146,   86,   98,   23,  195,   25,   91,
+ /*  1760 */    19,   20,  154,   22,  156,  154,   23,  156,   25,  101,
+ /*  1770 */    23,  195,   25,  195,  195,  107,  108,   36,  195,  195,
+ /*  1780 */   195,  195,  228,  115,  195,  117,  118,  119,  195,  195,
+ /*  1790 */   122,  261,  195,  321,  195,  195,  195,  258,  238,  195,
+ /*  1800 */   195,   60,  299,  291,  195,  195,  258,  195,  195,  195,
+ /*  1810 */   290,  244,  216,   72,  245,  193,  258,  258,  299,  258,
+ /*  1820 */   299,  274,  154,  155,  156,  157,  158,   86,  247,  295,
+ /*  1830 */   248,  295,   91,   19,   20,  270,   22,  274,  270,  248,
+ /*  1840 */   274,  222,  101,  227,  274,  221,  231,  221,  107,  108,
+ /*  1850 */    36,  183,  262,  247,  221,  283,  115,  262,  117,  118,
+ /*  1860 */   119,  198,  116,  122,  220,  262,   61,  220,  220,  251,
+ /*  1870 */   247,  142,  251,  245,   60,  202,  299,  202,   38,  262,
+ /*  1880 */   202,   22,  152,  151,  296,   43,   72,  236,   18,  239,
+ /*  1890 */   202,  239,  239,  239,   18,  154,  155,  156,  157,  158,
+ /*  1900 */    86,  150,  201,  248,  275,   91,  248,  273,  236,  248,
+ /*  1910 */   275,  275,  273,  236,  248,  101,  286,  202,  201,  159,
+ /*  1920 */    63,  107,  108,  296,  183,  293,  202,  201,   22,  115,
+ /*  1930 */   202,  117,  118,  119,  292,  223,  122,  201,   65,  202,
+ /*  1940 */   201,  223,  220,  220,   22,  220,  226,  226,  229,  127,
+ /*  1950 */   223,  220,  166,   24,  285,  220,  222,  114,  315,  285,
+ /*  1960 */   220,  202,  220,  307,   92,  320,  320,  229,  154,  155,
+ /*  1970 */   156,  157,  158,    0,    1,    2,  223,   83,    5,  268,
+ /*  1980 */   149,  268,  146,   10,   11,   12,   13,   14,   22,  280,
+ /*  1990 */    17,  202,  159,   19,   20,  251,   22,  183,  282,  148,
+ /*  2000 */   252,  252,  250,   30,  249,   32,  248,  147,   25,   13,
+ /*  2010 */    36,  204,  196,   40,  196,    6,  302,  194,  194,  194,
+ /*  2020 */   209,  215,  209,  215,  215,  215,  224,  224,  216,  209,
+ /*  2030 */     4,  216,  215,    3,   60,   22,  122,   19,  122,   19,
+ /*  2040 */   125,   22,   15,   22,   71,   16,   72,   23,   23,  140,
+ /*  2050 */   305,  152,   79,   25,  131,   82,  143,   20,   16,  305,
+ /*  2060 */     1,  143,  145,  131,  131,   62,   54,  131,   37,   54,
+ /*  2070 */    54,  152,   99,  117,   34,  101,   54,   24,    1,    5,
+ /*  2080 */    22,  107,  108,  116,   76,   25,  162,   41,  142,  115,
+ /*  2090 */    24,  117,  118,  119,  116,   20,  122,   19,  126,   23,
+ /*  2100 */   132,   19,   20,   69,   22,   69,   22,  134,   22,   68,
+ /*  2110 */    22,   22,  139,  140,   60,  141,   68,   24,   36,   28,
+ /*  2120 */    97,   22,   37,   68,   23,  150,   34,   22,  154,  155,
+ /*  2130 */   156,  157,  158,   23,   23,   22,  163,   25,   23,  142,
+ /*  2140 */    23,   98,   60,   23,   22,  144,   25,   76,   34,  117,
+ /*  2150 */    34,   89,   34,   34,   72,   87,   76,  183,   34,   94,
+ /*  2160 */    34,   23,   22,   24,   34,   23,   25,   44,   25,   23,
+ /*  2170 */    23,   23,   22,   22,   25,   11,  143,   25,  143,   23,
+ /*  2180 */    22,   22,   22,  101,   23,   23,  136,   22,   25,  107,
+ /*  2190 */   108,  142,   25,  142,  142,   23,   15,  115,    1,  117,
+ /*  2200 */   118,  119,    1,    2,  122,    1,    5,  322,  322,  322,
+ /*  2210 */   322,   10,   11,   12,   13,   14,  322,  322,   17,  322,
+ /*  2220 */     5,  322,  322,  141,  322,   10,   11,   12,   13,   14,
+ /*  2230 */   322,   30,   17,   32,  322,  322,  154,  155,  156,  157,
+ /*  2240 */   158,   40,  322,  322,  322,   30,  322,   32,  322,  322,
+ /*  2250 */   322,  322,  322,  322,  322,   40,  322,  322,  322,  322,
+ /*  2260 */   322,  322,  322,  322,  322,  183,  322,  322,  322,  322,
+ /*  2270 */   322,  322,   71,  322,  322,  322,  322,  322,  322,  322,
+ /*  2280 */    79,  322,  322,   82,  322,  322,   71,  322,  322,  322,
+ /*  2290 */   322,  322,  322,  322,   79,  322,  322,   82,  322,  322,
+ /*  2300 */    99,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+ /*  2310 */   322,  322,  322,  322,   99,  322,  322,  322,  322,  322,
+ /*  2320 */   322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+ /*  2330 */   322,  322,  322,  322,  322,  134,  322,  322,  322,  322,
+ /*  2340 */   139,  140,  322,  322,  322,  322,  322,  322,  322,  134,
+ /*  2350 */   322,  322,  322,  322,  139,  140,  322,  322,  322,  322,
+ /*  2360 */   322,  322,  322,  322,  163,  322,  322,  322,  322,  322,
+ /*  2370 */   322,  322,  322,  322,  322,  322,  322,  322,  163,  322,
+ /*  2380 */   322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+ /*  2390 */   322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+ /*  2400 */   322,  322,  322,  322,  322,  322,  322,  322,  187,  187,
+ /*  2410 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2420 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2430 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2440 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2450 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2460 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2470 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2480 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2490 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2500 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2510 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2520 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2530 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2540 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2550 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2560 */   187,  187,  187,  187,  187,  187,
 };
-#define YY_SHIFT_COUNT    (582)
+#define YY_SHIFT_COUNT    (599)
 #define YY_SHIFT_MIN      (0)
-#define YY_SHIFT_MAX      (2152)
+#define YY_SHIFT_MAX      (2215)
 static const unsigned short int yy_shift_ofst[] = {
- /*     0 */  2029, 1801, 2043, 1380, 1380,  318,  271, 1496, 1569, 1642,
- /*    10 */   702,  702,  702,  740,  318,  318,  318,  318,  318,    0,
- /*    20 */     0,  216, 1177,  702,  702,  702,  702,  702,  702,  702,
- /*    30 */   702,  702,  702,  702,  702,  702,  702,  702,  503,  503,
- /*    40 */   111,  111,  217,  287,  348,  610,  610,  736,  736,  736,
- /*    50 */   736,   40,  112,  320,  340,  445,  489,  593,  637,  741,
- /*    60 */   785,  889,  909, 1023, 1043, 1157, 1177, 1177, 1177, 1177,
- /*    70 */  1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
- /*    80 */  1177, 1177, 1177, 1177, 1197, 1177, 1301, 1321, 1321,  554,
- /*    90 */  1802, 1910,  702,  702,  702,  702,  702,  702,  702,  702,
- /*   100 */   702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
- /*   110 */   702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
- /*   120 */   702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
- /*   130 */   702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
- /*   140 */   702,  702,  138,  198,  198,  198,  198,  198,  198,  198,
- /*   150 */   183,   99,  169,  549,  610,  151,  542,  610,  610, 1017,
- /*   160 */  1017,  610, 1001,  350,  464,  464,  464,  586,    1,    1,
- /*   170 */  2207, 2207,  854,  854,  854,  465,  694,  694,  694,  694,
- /*   180 */  1096, 1096,  825,  549,  847,  904,  610,  610,  610,  610,
- /*   190 */   610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
- /*   200 */   610,  610,  610,  610,  610,  488,  947,  947,  610, 1129,
- /*   210 */   495,  495, 1139, 1139,  967,  967, 1173, 2207, 2207, 2207,
- /*   220 */  2207, 2207, 2207, 2207,  617,  765,  765,  697,  444,  708,
- /*   230 */   660,  745,  510,  663,  864,  610,  610,  610,  610,  610,
- /*   240 */   610,  610,  610,  610,  610,  188,  610,  610,  610,  610,
- /*   250 */   610,  610,  610,  610,  610,  610,  610,  610,  839,  839,
- /*   260 */   839,  610,  610,  610, 1155,  610,  610,  610, 1119, 1247,
- /*   270 */   610, 1353,  610,  610,  610,  610,  610,  610,  610,  610,
- /*   280 */  1063,  494, 1101,  291,  291,  291,  291, 1319, 1101, 1101,
- /*   290 */   775, 1221, 1375, 1452,  667, 1341, 1198, 1341, 1435, 1487,
- /*   300 */   667,  667, 1487,  667, 1198, 1435,  777, 1011, 1423,  584,
- /*   310 */   584,  584, 1273, 1273, 1273, 1273, 1471, 1471,  880, 1530,
- /*   320 */  1190, 1095, 1731, 1731, 1668, 1668, 1794, 1794, 1668, 1683,
- /*   330 */  1685, 1815, 1796, 1824, 1824, 1824, 1824, 1668, 1828, 1701,
- /*   340 */  1685, 1685, 1701, 1815, 1796, 1701, 1796, 1701, 1668, 1828,
- /*   350 */  1697, 1800, 1668, 1828, 1848, 1668, 1828, 1668, 1828, 1848,
- /*   360 */  1766, 1766, 1766, 1823, 1870, 1870, 1848, 1766, 1767, 1766,
- /*   370 */  1823, 1766, 1766, 1727, 1872, 1783, 1783, 1848, 1668, 1813,
- /*   380 */  1813, 1825, 1825, 1777, 1781, 1906, 1668, 1774, 1777, 1789,
- /*   390 */  1792, 1701, 1919, 1935, 1935, 1949, 1949, 1949, 2207, 2207,
- /*   400 */  2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207,
- /*   410 */  2207, 2207, 2207,   69, 1032,   79,  357, 1377, 1206,  400,
- /*   420 */  1525,  835,  332, 1540, 1437, 1539, 1536, 1548, 1583, 1620,
- /*   430 */  1633, 1670, 1671, 1674, 1567, 1553, 1682, 1506, 1675, 1358,
- /*   440 */  1607, 1589, 1678, 1681, 1624, 1687, 1688, 1283, 1561, 1693,
- /*   450 */  1696, 1623, 1521, 1976, 1980, 1962, 1822, 1972, 1973, 1965,
- /*   460 */  1967, 1851, 1840, 1862, 1969, 1969, 1971, 1853, 1977, 1854,
- /*   470 */  1982, 1999, 1858, 1871, 1969, 1873, 1941, 1968, 1969, 1855,
- /*   480 */  1952, 1954, 1955, 1956, 1881, 1896, 1981, 1874, 2013, 2014,
- /*   490 */  1998, 1905, 1860, 1957, 2008, 1966, 1947, 1983, 1894, 1921,
- /*   500 */  2020, 2018, 2026, 1915, 1923, 2028, 1984, 2036, 2040, 2047,
- /*   510 */  2041, 2003, 2012, 2050, 1979, 2049, 2056, 2011, 2044, 2057,
- /*   520 */  2048, 1934, 2063, 2064, 2065, 2061, 2066, 2068, 1993, 1950,
- /*   530 */  2071, 2072, 1985, 2062, 2075, 1959, 2073, 2067, 2070, 2076,
- /*   540 */  2078, 2010, 2030, 2022, 2069, 2031, 2021, 2082, 2094, 2083,
- /*   550 */  2095, 2093, 2096, 2086, 1986, 1987, 2100, 2073, 2101, 2103,
- /*   560 */  2104, 2109, 2107, 2108, 2111, 2113, 2125, 2115, 2116, 2117,
- /*   570 */  2118, 2121, 2122, 2114, 2009, 2004, 2005, 2006, 2124, 2127,
- /*   580 */  2136, 2151, 2152,
+ /*     0 */  2201, 1973, 2215, 1552, 1552,   33,  368, 1668, 1741, 1814,
+ /*    10 */   726,  726,  726,  265,   33,   33,   33,   33,   33,    0,
+ /*    20 */     0,  216, 1349,  726,  726,  726,  726,  726,  726,  726,
+ /*    30 */   726,  726,  726,  726,  726,  726,  726,  726,  272,  272,
+ /*    40 */   111,  111,  316,  365,  516,  867,  867,  916,  916,  916,
+ /*    50 */   916,   40,  112,  260,  364,  408,  512,  617,  661,  765,
+ /*    60 */   809,  913,  957, 1061, 1081, 1195, 1215, 1329, 1349, 1349,
+ /*    70 */  1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349,
+ /*    80 */  1349, 1349, 1349, 1349, 1349, 1349, 1369, 1349, 1473, 1493,
+ /*    90 */  1493,  473, 1974, 2082,  726,  726,  726,  726,  726,  726,
+ /*   100 */   726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
+ /*   110 */   726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
+ /*   120 */   726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
+ /*   130 */   726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
+ /*   140 */   726,  726,  726,  726,  726,  726,  138,  232,  232,  232,
+ /*   150 */   232,  232,  232,  232,  188,   99,  242,  718,  416, 1159,
+ /*   160 */   867,  867,  940,  940,  867, 1103,  417,  574,  574,  574,
+ /*   170 */   611,  139,  139, 2379, 2379, 1026, 1026, 1026,  536,  466,
+ /*   180 */   466,  466,  466, 1017, 1017,  849,  718,  971, 1060,  867,
+ /*   190 */   867,  867,  867,  867,  867,  867,  867,  867,  867,  867,
+ /*   200 */   867,  867,  867,  867,  867,  867,  867,  867,  261,  712,
+ /*   210 */   712,  867,  108, 1142, 1142,  977, 1108, 1108,  977,  977,
+ /*   220 */  1243, 2379, 2379, 2379, 2379, 2379, 2379, 2379,  641,  789,
+ /*   230 */   789,  635,  366,  721,  673,  782,  494,  787,  829,  867,
+ /*   240 */   867,  867,  867,  867,  867,  867,  867,  867,  867,  867,
+ /*   250 */   959,  867,  867,  867,  867,  867,  867,  867,  867,  867,
+ /*   260 */   867,  867,  867,  867,  867,  820,  820,  820,  867,  867,
+ /*   270 */   867, 1136,  867,  867,  867, 1119, 1007,  867, 1169,  867,
+ /*   280 */   867,  867,  867,  867,  867,  867,  867, 1225, 1153,  869,
+ /*   290 */   196,  618,  618,  618,  618, 1491,  196,  196,   91,  339,
+ /*   300 */  1326, 1386,  383, 1163, 1364, 1426, 1364, 1538,  903, 1163,
+ /*   310 */  1163,  903, 1163, 1426, 1538, 1018, 1535, 1241, 1528, 1528,
+ /*   320 */  1528, 1394, 1394, 1394, 1394,  762,  762, 1403, 1466, 1475,
+ /*   330 */  1551, 1746, 1805, 1746, 1746, 1729, 1729, 1840, 1840, 1729,
+ /*   340 */  1730, 1732, 1859, 1842, 1870, 1870, 1870, 1870, 1729, 1876,
+ /*   350 */  1751, 1732, 1732, 1751, 1859, 1842, 1751, 1842, 1751, 1729,
+ /*   360 */  1876, 1760, 1857, 1729, 1876, 1906, 1729, 1876, 1729, 1876,
+ /*   370 */  1906, 1746, 1746, 1746, 1873, 1922, 1922, 1906, 1746, 1822,
+ /*   380 */  1746, 1873, 1746, 1746, 1786, 1929, 1843, 1843, 1906, 1729,
+ /*   390 */  1872, 1872, 1894, 1894, 1831, 1836, 1966, 1729, 1833, 1831,
+ /*   400 */  1851, 1860, 1751, 1983, 1996, 1996, 2009, 2009, 2009, 2379,
+ /*   410 */  2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379,
+ /*   420 */  2379, 2379, 2379, 2379,  136, 1063, 1196,  530,  636, 1274,
+ /*   430 */  1300, 1443, 1598, 1495, 1479,  967, 1083, 1602,  463, 1625,
+ /*   440 */  1638, 1670, 1541, 1671, 1689, 1696, 1277, 1432, 1693,  808,
+ /*   450 */  1700, 1607, 1657, 1587, 1704, 1707, 1631, 1708, 1733, 1608,
+ /*   460 */  1611, 1743, 1747, 1620, 1592, 2026, 2030, 2013, 1914, 2018,
+ /*   470 */  1916, 2020, 2019, 2021, 1915, 2027, 2029, 2024, 2025, 1909,
+ /*   480 */  1899, 1923, 2028, 2028, 1913, 2037, 1917, 2042, 2059, 1918,
+ /*   490 */  1932, 2028, 1933, 2003, 2031, 2028, 1919, 2012, 2015, 2016,
+ /*   500 */  2022, 1936, 1956, 2040, 2053, 2077, 2074, 2058, 1967, 1924,
+ /*   510 */  2034, 2060, 2036, 2008, 2046, 1946, 1978, 2066, 2075, 2078,
+ /*   520 */  1968, 1972, 2084, 2041, 2086, 2088, 2076, 2089, 2048, 2054,
+ /*   530 */  2093, 2023, 2091, 2099, 2055, 2085, 2101, 2092, 1975, 2105,
+ /*   540 */  2110, 2111, 2112, 2115, 2113, 2043, 1997, 2117, 2120, 2032,
+ /*   550 */  2114, 2122, 2001, 2121, 2116, 2118, 2119, 2124, 2062, 2071,
+ /*   560 */  2068, 2123, 2080, 2065, 2126, 2138, 2140, 2139, 2141, 2143,
+ /*   570 */  2130, 2033, 2035, 2142, 2121, 2146, 2147, 2148, 2150, 2149,
+ /*   580 */  2152, 2156, 2151, 2164, 2158, 2159, 2161, 2162, 2160, 2165,
+ /*   590 */  2163, 2050, 2049, 2051, 2052, 2167, 2172, 2181, 2197, 2204,
 };
-#define YY_REDUCE_COUNT (412)
-#define YY_REDUCE_MIN   (-277)
-#define YY_REDUCE_MAX   (1772)
+#define YY_REDUCE_COUNT (423)
+#define YY_REDUCE_MIN   (-303)
+#define YY_REDUCE_MAX   (1825)
 static const short yy_reduce_ofst[] = {
- /*     0 */   -67, 1252,  -64, -178, -181,  160, 1071,  143, -184,  137,
- /*    10 */   218,  220,  222, -174,  229,  268,  272,  275,  324, -208,
- /*    20 */   242, -277,  -39,   81,  537,  792,  810,  812, -189,  814,
- /*    30 */   831,  163,  865,  944,  887,  840,  964, 1077, -187,  292,
- /*    40 */  -133,  274,  673,  558,  682,  795,  809, -238, -232, -238,
- /*    50 */  -232,  329,  329,  329,  329,  329,  329,  329,  329,  329,
- /*    60 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
- /*    70 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
- /*    80 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  557,
- /*    90 */   712,  949,  966,  969,  971,  979, 1097, 1099, 1103, 1142,
- /*   100 */  1144, 1169, 1172, 1201, 1203, 1228, 1241, 1250, 1253, 1255,
- /*   110 */  1261, 1266, 1271, 1282, 1291, 1308, 1310, 1312, 1322, 1328,
- /*   120 */  1347, 1354, 1356, 1359, 1362, 1365, 1367, 1374, 1376, 1381,
- /*   130 */  1401, 1403, 1406, 1412, 1414, 1417, 1421, 1428, 1447, 1449,
- /*   140 */  1453, 1462,  329,  329,  329,  329,  329,  329,  329,  329,
- /*   150 */   329,  329,  329,  -22, -159,  475, -220,  756,   38,  501,
- /*   160 */   841,  714,  329,  118,  337,  349,  363,  -56,  329,  329,
- /*   170 */   329,  329, -205, -205, -205,  687, -172, -130,  -57,  790,
- /*   180 */   397,  528, -271,  136,  596,  596,   90,  316,  522,  541,
- /*   190 */   -37,  715,  849,  977,  628,  856,  980,  991, 1081, 1102,
- /*   200 */  1135, 1083, -162,  208, 1258,  794,  -86,  159,   41, 1109,
- /*   210 */   671,  852,  844,  932, 1175, 1254,  480, 1180,  100,  258,
- /*   220 */  1265, 1268, 1216, 1287, -139,  317,  344,   63,  339,  423,
- /*   230 */   563,  636,  676,  813,  908,  914,  950, 1078, 1084, 1098,
- /*   240 */  1363, 1384, 1407, 1439, 1464,  411, 1527, 1534, 1535, 1537,
- /*   250 */  1541, 1542, 1543, 1544, 1545, 1547, 1549, 1550,  990, 1164,
- /*   260 */  1492, 1551, 1552, 1556, 1217, 1558, 1559, 1560, 1473, 1413,
- /*   270 */  1563, 1510, 1568,  563, 1570, 1571, 1572, 1573, 1574, 1575,
- /*   280 */  1443, 1466, 1518, 1513, 1514, 1515, 1516, 1217, 1518, 1518,
- /*   290 */  1531, 1562, 1582, 1477, 1505, 1511, 1533, 1512, 1488, 1538,
- /*   300 */  1509, 1517, 1546, 1519, 1557, 1489, 1565, 1564, 1578, 1586,
- /*   310 */  1587, 1588, 1526, 1528, 1554, 1555, 1576, 1577, 1566, 1579,
- /*   320 */  1584, 1591, 1520, 1523, 1617, 1628, 1580, 1581, 1632, 1585,
- /*   330 */  1590, 1593, 1604, 1605, 1606, 1608, 1609, 1641, 1649, 1610,
- /*   340 */  1592, 1594, 1611, 1595, 1616, 1612, 1618, 1613, 1651, 1654,
- /*   350 */  1596, 1598, 1655, 1663, 1650, 1673, 1680, 1677, 1684, 1653,
- /*   360 */  1664, 1666, 1667, 1662, 1669, 1672, 1676, 1686, 1679, 1691,
- /*   370 */  1689, 1692, 1694, 1597, 1599, 1619, 1630, 1699, 1700, 1602,
- /*   380 */  1615, 1648, 1657, 1690, 1698, 1658, 1729, 1652, 1695, 1702,
- /*   390 */  1704, 1703, 1741, 1754, 1758, 1768, 1769, 1771, 1660, 1661,
- /*   400 */  1665, 1752, 1756, 1757, 1759, 1760, 1764, 1745, 1753, 1762,
- /*   410 */  1763, 1761, 1772,
+ /*     0 */   -67,  345,  -64, -178, -181,  143,  435,  -78, -183,  163,
+ /*    10 */  -185,  284,  384, -174,  189,  352,  440,  444,  493,  -23,
+ /*    20 */   227, -277,   -1,  305,  561,  755,  759,  764, -189,  839,
+ /*    30 */   857,  354,  484,  859,  631,   67,  734,  780, -187,  616,
+ /*    40 */   581,  730,  891,  449,  588,  795,  836, -238,  287, -238,
+ /*    50 */   287, -256, -256, -256, -256, -256, -256, -256, -256, -256,
+ /*    60 */  -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
+ /*    70 */  -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
+ /*    80 */  -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
+ /*    90 */  -256,  205,  582,  715,  958,  985, 1003, 1005, 1010, 1012,
+ /*   100 */  1059, 1066, 1092, 1094, 1097, 1122, 1137, 1141, 1143, 1147,
+ /*   110 */  1151, 1172, 1249, 1251, 1269, 1271, 1276, 1290, 1316, 1318,
+ /*   120 */  1337, 1371, 1373, 1375, 1400, 1413, 1418, 1420, 1422, 1425,
+ /*   130 */  1427, 1433, 1438, 1447, 1454, 1459, 1463, 1467, 1480, 1484,
+ /*   140 */  1518, 1523, 1525, 1527, 1529, 1531, -256, -256, -256, -256,
+ /*   150 */  -256, -256, -256, -256, -256, -256, -256,  155,  210, -220,
+ /*   160 */    86, -130,  943,  996,  402, -256, -113,  981, 1095, 1135,
+ /*   170 */   395, -256, -256, -256, -256,  568,  568,  568,   -4, -153,
+ /*   180 */  -133,  259,  306, -166,  523, -303, -126,  503,  503,  -37,
+ /*   190 */  -149,  164,  690,  292,  412,  492,  651,  784,  332,  786,
+ /*   200 */   841, 1149,  833, 1236,  792,  162,  796, 1253,  777,  288,
+ /*   210 */   381,  380,  709,  487, 1027,  972, 1030, 1084,  991, 1120,
+ /*   220 */  -152, 1062,  692, 1240, 1247, 1250, 1239, 1306, -207, -194,
+ /*   230 */    57,  180,   74,  315,  355,  376,  452,  488,  630,  693,
+ /*   240 */   965, 1004, 1025, 1099, 1154, 1289, 1305, 1310, 1469, 1489,
+ /*   250 */   984, 1494, 1502, 1516, 1544, 1556, 1557, 1562, 1576, 1578,
+ /*   260 */  1579, 1583, 1584, 1585, 1586, 1217, 1440, 1554, 1589, 1593,
+ /*   270 */  1594, 1530, 1597, 1599, 1600, 1539, 1472, 1601, 1560, 1604,
+ /*   280 */   355, 1605, 1609, 1610, 1612, 1613, 1614, 1503, 1512, 1520,
+ /*   290 */  1567, 1548, 1558, 1559, 1561, 1530, 1567, 1567, 1569, 1596,
+ /*   300 */  1622, 1519, 1521, 1547, 1565, 1581, 1568, 1534, 1582, 1563,
+ /*   310 */  1566, 1591, 1570, 1606, 1536, 1619, 1615, 1616, 1624, 1626,
+ /*   320 */  1633, 1590, 1595, 1603, 1617, 1618, 1621, 1572, 1623, 1628,
+ /*   330 */  1663, 1644, 1577, 1647, 1648, 1673, 1675, 1588, 1627, 1678,
+ /*   340 */  1630, 1629, 1634, 1651, 1650, 1652, 1653, 1654, 1688, 1701,
+ /*   350 */  1655, 1635, 1636, 1658, 1639, 1672, 1661, 1677, 1666, 1715,
+ /*   360 */  1717, 1632, 1642, 1724, 1726, 1712, 1728, 1736, 1737, 1739,
+ /*   370 */  1718, 1722, 1723, 1725, 1719, 1720, 1721, 1727, 1731, 1734,
+ /*   380 */  1735, 1738, 1740, 1742, 1643, 1656, 1669, 1674, 1753, 1759,
+ /*   390 */  1645, 1646, 1711, 1713, 1748, 1744, 1709, 1789, 1716, 1749,
+ /*   400 */  1752, 1755, 1758, 1807, 1816, 1818, 1823, 1824, 1825, 1745,
+ /*   410 */  1754, 1714, 1811, 1806, 1808, 1809, 1810, 1813, 1802, 1803,
+ /*   420 */  1812, 1815, 1817, 1820,
 };
 static const YYACTIONTYPE yy_default[] = {
- /*     0 */  1663, 1663, 1663, 1491, 1254, 1367, 1254, 1254, 1254, 1254,
- /*    10 */  1491, 1491, 1491, 1254, 1254, 1254, 1254, 1254, 1254, 1397,
- /*    20 */  1397, 1544, 1287, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*    30 */  1254, 1254, 1254, 1254, 1254, 1490, 1254, 1254, 1254, 1254,
- /*    40 */  1578, 1578, 1254, 1254, 1254, 1254, 1254, 1563, 1562, 1254,
- /*    50 */  1254, 1254, 1406, 1254, 1413, 1254, 1254, 1254, 1254, 1254,
- /*    60 */  1492, 1493, 1254, 1254, 1254, 1254, 1543, 1545, 1508, 1420,
- /*    70 */  1419, 1418, 1417, 1526, 1385, 1411, 1404, 1408, 1487, 1488,
- /*    80 */  1486, 1641, 1493, 1492, 1254, 1407, 1455, 1471, 1454, 1254,
- /*    90 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   100 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   110 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   120 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   130 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   140 */  1254, 1254, 1463, 1470, 1469, 1468, 1477, 1467, 1464, 1457,
- /*   150 */  1456, 1458, 1459, 1278, 1254, 1275, 1329, 1254, 1254, 1254,
- /*   160 */  1254, 1254, 1460, 1287, 1448, 1447, 1446, 1254, 1474, 1461,
- /*   170 */  1473, 1472, 1551, 1615, 1614, 1509, 1254, 1254, 1254, 1254,
- /*   180 */  1254, 1254, 1578, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   190 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   200 */  1254, 1254, 1254, 1254, 1254, 1387, 1578, 1578, 1254, 1287,
- /*   210 */  1578, 1578, 1388, 1388, 1283, 1283, 1391, 1558, 1358, 1358,
- /*   220 */  1358, 1358, 1367, 1358, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   230 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1548,
- /*   240 */  1546, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   250 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   260 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1363, 1254,
- /*   270 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1608,
- /*   280 */  1254, 1521, 1343, 1363, 1363, 1363, 1363, 1365, 1344, 1342,
- /*   290 */  1357, 1288, 1261, 1655, 1423, 1412, 1364, 1412, 1652, 1410,
- /*   300 */  1423, 1423, 1410, 1423, 1364, 1652, 1304, 1630, 1299, 1397,
- /*   310 */  1397, 1397, 1387, 1387, 1387, 1387, 1391, 1391, 1489, 1364,
- /*   320 */  1357, 1254, 1655, 1655, 1373, 1373, 1654, 1654, 1373, 1509,
- /*   330 */  1638, 1432, 1332, 1338, 1338, 1338, 1338, 1373, 1272, 1410,
- /*   340 */  1638, 1638, 1410, 1432, 1332, 1410, 1332, 1410, 1373, 1272,
- /*   350 */  1525, 1649, 1373, 1272, 1499, 1373, 1272, 1373, 1272, 1499,
- /*   360 */  1330, 1330, 1330, 1319, 1254, 1254, 1499, 1330, 1304, 1330,
- /*   370 */  1319, 1330, 1330, 1596, 1254, 1503, 1503, 1499, 1373, 1588,
- /*   380 */  1588, 1400, 1400, 1405, 1391, 1494, 1373, 1254, 1405, 1403,
- /*   390 */  1401, 1410, 1322, 1611, 1611, 1607, 1607, 1607, 1660, 1660,
- /*   400 */  1558, 1623, 1287, 1287, 1287, 1287, 1623, 1306, 1306, 1288,
- /*   410 */  1288, 1287, 1623, 1254, 1254, 1254, 1254, 1254, 1254, 1618,
- /*   420 */  1254, 1553, 1510, 1377, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   430 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   440 */  1564, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   450 */  1254, 1254, 1437, 1254, 1257, 1555, 1254, 1254, 1254, 1254,
- /*   460 */  1254, 1254, 1254, 1254, 1414, 1415, 1378, 1254, 1254, 1254,
- /*   470 */  1254, 1254, 1254, 1254, 1429, 1254, 1254, 1254, 1424, 1254,
- /*   480 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1651, 1254, 1254,
- /*   490 */  1254, 1254, 1254, 1254, 1524, 1523, 1254, 1254, 1375, 1254,
- /*   500 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   510 */  1254, 1254, 1302, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   520 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   530 */  1254, 1254, 1254, 1254, 1254, 1254, 1402, 1254, 1254, 1254,
- /*   540 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   550 */  1254, 1593, 1392, 1254, 1254, 1254, 1254, 1642, 1254, 1254,
- /*   560 */  1254, 1254, 1352, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
- /*   570 */  1254, 1254, 1254, 1634, 1346, 1438, 1254, 1441, 1276, 1254,
- /*   580 */  1266, 1254, 1254,
+ /*     0 */  1691, 1691, 1691, 1516, 1279, 1392, 1279, 1279, 1279, 1279,
+ /*    10 */  1516, 1516, 1516, 1279, 1279, 1279, 1279, 1279, 1279, 1422,
+ /*    20 */  1422, 1568, 1312, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*    30 */  1279, 1279, 1279, 1279, 1279, 1515, 1279, 1279, 1279, 1279,
+ /*    40 */  1607, 1607, 1279, 1279, 1279, 1279, 1279, 1592, 1591, 1279,
+ /*    50 */  1279, 1279, 1431, 1279, 1279, 1279, 1438, 1279, 1279, 1279,
+ /*    60 */  1279, 1279, 1517, 1518, 1279, 1279, 1279, 1279, 1567, 1569,
+ /*    70 */  1533, 1445, 1444, 1443, 1442, 1551, 1410, 1436, 1429, 1433,
+ /*    80 */  1512, 1513, 1511, 1670, 1518, 1517, 1279, 1432, 1480, 1496,
+ /*    90 */  1479, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   100 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   110 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   120 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   130 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   140 */  1279, 1279, 1279, 1279, 1279, 1279, 1488, 1495, 1494, 1493,
+ /*   150 */  1502, 1492, 1489, 1482, 1481, 1483, 1484, 1303, 1300, 1354,
+ /*   160 */  1279, 1279, 1279, 1279, 1279, 1485, 1312, 1473, 1472, 1471,
+ /*   170 */  1279, 1499, 1486, 1498, 1497, 1575, 1644, 1643, 1534, 1279,
+ /*   180 */  1279, 1279, 1279, 1279, 1279, 1607, 1279, 1279, 1279, 1279,
+ /*   190 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   200 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1412, 1607,
+ /*   210 */  1607, 1279, 1312, 1607, 1607, 1308, 1413, 1413, 1308, 1308,
+ /*   220 */  1416, 1587, 1383, 1383, 1383, 1383, 1392, 1383, 1279, 1279,
+ /*   230 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   240 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1572, 1570, 1279,
+ /*   250 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   260 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   270 */  1279, 1279, 1279, 1279, 1279, 1388, 1279, 1279, 1279, 1279,
+ /*   280 */  1279, 1279, 1279, 1279, 1279, 1279, 1637, 1683, 1279, 1546,
+ /*   290 */  1368, 1388, 1388, 1388, 1388, 1390, 1369, 1367, 1382, 1313,
+ /*   300 */  1286, 1683, 1683, 1448, 1437, 1389, 1437, 1680, 1435, 1448,
+ /*   310 */  1448, 1435, 1448, 1389, 1680, 1329, 1659, 1324, 1422, 1422,
+ /*   320 */  1422, 1412, 1412, 1412, 1412, 1416, 1416, 1514, 1389, 1382,
+ /*   330 */  1279, 1355, 1683, 1355, 1355, 1398, 1398, 1682, 1682, 1398,
+ /*   340 */  1534, 1667, 1457, 1357, 1363, 1363, 1363, 1363, 1398, 1297,
+ /*   350 */  1435, 1667, 1667, 1435, 1457, 1357, 1435, 1357, 1435, 1398,
+ /*   360 */  1297, 1550, 1678, 1398, 1297, 1524, 1398, 1297, 1398, 1297,
+ /*   370 */  1524, 1355, 1355, 1355, 1344, 1279, 1279, 1524, 1355, 1329,
+ /*   380 */  1355, 1344, 1355, 1355, 1625, 1279, 1528, 1528, 1524, 1398,
+ /*   390 */  1617, 1617, 1425, 1425, 1430, 1416, 1519, 1398, 1279, 1430,
+ /*   400 */  1428, 1426, 1435, 1347, 1640, 1640, 1636, 1636, 1636, 1688,
+ /*   410 */  1688, 1587, 1652, 1312, 1312, 1312, 1312, 1652, 1331, 1331,
+ /*   420 */  1313, 1313, 1312, 1652, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   430 */  1279, 1647, 1279, 1279, 1535, 1279, 1279, 1279, 1279, 1279,
+ /*   440 */  1279, 1279, 1402, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   450 */  1279, 1279, 1593, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   460 */  1279, 1279, 1279, 1279, 1462, 1279, 1282, 1584, 1279, 1279,
+ /*   470 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   480 */  1279, 1279, 1439, 1440, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   490 */  1279, 1454, 1279, 1279, 1279, 1449, 1279, 1279, 1279, 1279,
+ /*   500 */  1279, 1279, 1279, 1279, 1403, 1279, 1279, 1279, 1279, 1279,
+ /*   510 */  1279, 1549, 1548, 1279, 1279, 1400, 1279, 1279, 1279, 1279,
+ /*   520 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1327,
+ /*   530 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   540 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   550 */  1279, 1279, 1279, 1427, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   560 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1622, 1417,
+ /*   570 */  1279, 1279, 1279, 1279, 1671, 1279, 1279, 1279, 1279, 1377,
+ /*   580 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+ /*   590 */  1663, 1371, 1463, 1279, 1466, 1301, 1279, 1291, 1279, 1279,
 };
 /********** End of lemon-generated parsing tables *****************************/
 
@@ -179376,34 +180661,33 @@ static const char *const yyTokenName[] = {
   /*  292 */ "foreach_clause",
   /*  293 */ "when_clause",
   /*  294 */ "trigger_cmd",
-  /*  295 */ "trnm",
-  /*  296 */ "tridxby",
-  /*  297 */ "database_kw_opt",
-  /*  298 */ "key_opt",
-  /*  299 */ "add_column_fullname",
-  /*  300 */ "kwcolumn_opt",
-  /*  301 */ "create_vtab",
-  /*  302 */ "vtabarglist",
-  /*  303 */ "vtabarg",
-  /*  304 */ "vtabargtoken",
-  /*  305 */ "lp",
-  /*  306 */ "anylist",
-  /*  307 */ "wqitem",
-  /*  308 */ "wqas",
-  /*  309 */ "withnm",
-  /*  310 */ "windowdefn_list",
-  /*  311 */ "windowdefn",
-  /*  312 */ "window",
-  /*  313 */ "frame_opt",
-  /*  314 */ "part_opt",
-  /*  315 */ "filter_clause",
-  /*  316 */ "over_clause",
-  /*  317 */ "range_or_rows",
-  /*  318 */ "frame_bound",
-  /*  319 */ "frame_bound_s",
-  /*  320 */ "frame_bound_e",
-  /*  321 */ "frame_exclude_opt",
-  /*  322 */ "frame_exclude",
+  /*  295 */ "tridxby",
+  /*  296 */ "database_kw_opt",
+  /*  297 */ "key_opt",
+  /*  298 */ "alter_add",
+  /*  299 */ "kwcolumn_opt",
+  /*  300 */ "create_vtab",
+  /*  301 */ "vtabarglist",
+  /*  302 */ "vtabarg",
+  /*  303 */ "vtabargtoken",
+  /*  304 */ "lp",
+  /*  305 */ "anylist",
+  /*  306 */ "wqitem",
+  /*  307 */ "wqas",
+  /*  308 */ "withnm",
+  /*  309 */ "windowdefn_list",
+  /*  310 */ "windowdefn",
+  /*  311 */ "window",
+  /*  312 */ "frame_opt",
+  /*  313 */ "part_opt",
+  /*  314 */ "filter_clause",
+  /*  315 */ "over_clause",
+  /*  316 */ "range_or_rows",
+  /*  317 */ "frame_bound",
+  /*  318 */ "frame_bound_s",
+  /*  319 */ "frame_bound_e",
+  /*  320 */ "frame_exclude_opt",
+  /*  321 */ "frame_exclude",
 };
 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
 
@@ -179533,8 +180817,8 @@ static const char *const yyRuleName[] = {
  /* 119 */ "fullname ::= nm DOT nm",
  /* 120 */ "xfullname ::= nm",
  /* 121 */ "xfullname ::= nm DOT nm",
- /* 122 */ "xfullname ::= nm DOT nm AS nm",
- /* 123 */ "xfullname ::= nm AS nm",
+ /* 122 */ "xfullname ::= nm AS nm",
+ /* 123 */ "xfullname ::= nm DOT nm AS nm",
  /* 124 */ "joinop ::= COMMA|JOIN",
  /* 125 */ "joinop ::= JOIN_KW JOIN",
  /* 126 */ "joinop ::= JOIN_KW nm JOIN",
@@ -179683,143 +180967,146 @@ static const char *const yyRuleName[] = {
  /* 269 */ "when_clause ::= WHEN expr",
  /* 270 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
  /* 271 */ "trigger_cmd_list ::= trigger_cmd SEMI",
- /* 272 */ "trnm ::= nm DOT nm",
- /* 273 */ "tridxby ::= INDEXED BY nm",
- /* 274 */ "tridxby ::= NOT INDEXED",
- /* 275 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
- /* 276 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
- /* 277 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
- /* 278 */ "trigger_cmd ::= scanpt select scanpt",
- /* 279 */ "expr ::= RAISE LP IGNORE RP",
- /* 280 */ "expr ::= RAISE LP raisetype COMMA expr RP",
- /* 281 */ "raisetype ::= ROLLBACK",
- /* 282 */ "raisetype ::= ABORT",
- /* 283 */ "raisetype ::= FAIL",
- /* 284 */ "cmd ::= DROP TRIGGER ifexists fullname",
- /* 285 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
- /* 286 */ "cmd ::= DETACH database_kw_opt expr",
- /* 287 */ "key_opt ::=",
- /* 288 */ "key_opt ::= KEY expr",
- /* 289 */ "cmd ::= REINDEX",
- /* 290 */ "cmd ::= REINDEX nm dbnm",
- /* 291 */ "cmd ::= ANALYZE",
- /* 292 */ "cmd ::= ANALYZE nm dbnm",
- /* 293 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
- /* 294 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
+ /* 272 */ "tridxby ::= INDEXED BY nm",
+ /* 273 */ "tridxby ::= NOT INDEXED",
+ /* 274 */ "trigger_cmd ::= UPDATE orconf xfullname tridxby SET setlist from where_opt scanpt",
+ /* 275 */ "trigger_cmd ::= scanpt insert_cmd INTO xfullname idlist_opt select upsert scanpt",
+ /* 276 */ "trigger_cmd ::= DELETE FROM xfullname tridxby where_opt scanpt",
+ /* 277 */ "trigger_cmd ::= scanpt select scanpt",
+ /* 278 */ "expr ::= RAISE LP IGNORE RP",
+ /* 279 */ "expr ::= RAISE LP raisetype COMMA expr RP",
+ /* 280 */ "raisetype ::= ROLLBACK",
+ /* 281 */ "raisetype ::= ABORT",
+ /* 282 */ "raisetype ::= FAIL",
+ /* 283 */ "cmd ::= DROP TRIGGER ifexists fullname",
+ /* 284 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
+ /* 285 */ "cmd ::= DETACH database_kw_opt expr",
+ /* 286 */ "key_opt ::=",
+ /* 287 */ "key_opt ::= KEY expr",
+ /* 288 */ "cmd ::= REINDEX",
+ /* 289 */ "cmd ::= REINDEX nm dbnm",
+ /* 290 */ "cmd ::= ANALYZE",
+ /* 291 */ "cmd ::= ANALYZE nm dbnm",
+ /* 292 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
+ /* 293 */ "cmd ::= alter_add carglist",
+ /* 294 */ "alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken",
  /* 295 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
- /* 296 */ "add_column_fullname ::= fullname",
- /* 297 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
- /* 298 */ "cmd ::= create_vtab",
- /* 299 */ "cmd ::= create_vtab LP vtabarglist RP",
- /* 300 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
- /* 301 */ "vtabarg ::=",
- /* 302 */ "vtabargtoken ::= ANY",
- /* 303 */ "vtabargtoken ::= lp anylist RP",
- /* 304 */ "lp ::= LP",
- /* 305 */ "with ::= WITH wqlist",
- /* 306 */ "with ::= WITH RECURSIVE wqlist",
- /* 307 */ "wqas ::= AS",
- /* 308 */ "wqas ::= AS MATERIALIZED",
- /* 309 */ "wqas ::= AS NOT MATERIALIZED",
- /* 310 */ "wqitem ::= withnm eidlist_opt wqas LP select RP",
- /* 311 */ "withnm ::= nm",
- /* 312 */ "wqlist ::= wqitem",
- /* 313 */ "wqlist ::= wqlist COMMA wqitem",
- /* 314 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
- /* 315 */ "windowdefn ::= nm AS LP window RP",
- /* 316 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
- /* 317 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
- /* 318 */ "window ::= ORDER BY sortlist frame_opt",
- /* 319 */ "window ::= nm ORDER BY sortlist frame_opt",
- /* 320 */ "window ::= nm frame_opt",
- /* 321 */ "frame_opt ::=",
- /* 322 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
- /* 323 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
- /* 324 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
- /* 325 */ "frame_bound_s ::= frame_bound",
- /* 326 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
- /* 327 */ "frame_bound_e ::= frame_bound",
- /* 328 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
- /* 329 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
- /* 330 */ "frame_bound ::= CURRENT ROW",
- /* 331 */ "frame_exclude_opt ::=",
- /* 332 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
- /* 333 */ "frame_exclude ::= NO OTHERS",
- /* 334 */ "frame_exclude ::= CURRENT ROW",
- /* 335 */ "frame_exclude ::= GROUP|TIES",
- /* 336 */ "window_clause ::= WINDOW windowdefn_list",
- /* 337 */ "filter_over ::= filter_clause over_clause",
- /* 338 */ "filter_over ::= over_clause",
- /* 339 */ "filter_over ::= filter_clause",
- /* 340 */ "over_clause ::= OVER LP window RP",
- /* 341 */ "over_clause ::= OVER nm",
- /* 342 */ "filter_clause ::= FILTER LP WHERE expr RP",
- /* 343 */ "term ::= QNUMBER",
- /* 344 */ "input ::= cmdlist",
- /* 345 */ "cmdlist ::= cmdlist ecmd",
- /* 346 */ "cmdlist ::= ecmd",
- /* 347 */ "ecmd ::= SEMI",
- /* 348 */ "ecmd ::= cmdx SEMI",
- /* 349 */ "ecmd ::= explain cmdx SEMI",
- /* 350 */ "trans_opt ::=",
- /* 351 */ "trans_opt ::= TRANSACTION",
- /* 352 */ "trans_opt ::= TRANSACTION nm",
- /* 353 */ "savepoint_opt ::= SAVEPOINT",
- /* 354 */ "savepoint_opt ::=",
- /* 355 */ "cmd ::= create_table create_table_args",
- /* 356 */ "table_option_set ::= table_option",
- /* 357 */ "columnlist ::= columnlist COMMA columnname carglist",
- /* 358 */ "columnlist ::= columnname carglist",
- /* 359 */ "nm ::= ID|INDEXED|JOIN_KW",
- /* 360 */ "nm ::= STRING",
- /* 361 */ "typetoken ::= typename",
- /* 362 */ "typename ::= ID|STRING",
- /* 363 */ "signed ::= plus_num",
- /* 364 */ "signed ::= minus_num",
- /* 365 */ "carglist ::= carglist ccons",
- /* 366 */ "carglist ::=",
- /* 367 */ "ccons ::= NULL onconf",
- /* 368 */ "ccons ::= GENERATED ALWAYS AS generated",
- /* 369 */ "ccons ::= AS generated",
- /* 370 */ "conslist_opt ::= COMMA conslist",
- /* 371 */ "conslist ::= conslist tconscomma tcons",
- /* 372 */ "conslist ::= tcons",
- /* 373 */ "tconscomma ::=",
- /* 374 */ "defer_subclause_opt ::= defer_subclause",
- /* 375 */ "resolvetype ::= raisetype",
- /* 376 */ "selectnowith ::= oneselect",
- /* 377 */ "oneselect ::= values",
- /* 378 */ "sclp ::= selcollist COMMA",
- /* 379 */ "as ::= ID|STRING",
- /* 380 */ "indexed_opt ::= indexed_by",
- /* 381 */ "returning ::=",
- /* 382 */ "expr ::= term",
- /* 383 */ "likeop ::= LIKE_KW|MATCH",
- /* 384 */ "case_operand ::= expr",
- /* 385 */ "exprlist ::= nexprlist",
- /* 386 */ "nmnum ::= plus_num",
- /* 387 */ "nmnum ::= nm",
- /* 388 */ "nmnum ::= ON",
- /* 389 */ "nmnum ::= DELETE",
- /* 390 */ "nmnum ::= DEFAULT",
- /* 391 */ "plus_num ::= INTEGER|FLOAT",
- /* 392 */ "foreach_clause ::=",
- /* 393 */ "foreach_clause ::= FOR EACH ROW",
- /* 394 */ "trnm ::= nm",
- /* 395 */ "tridxby ::=",
- /* 396 */ "database_kw_opt ::= DATABASE",
- /* 397 */ "database_kw_opt ::=",
- /* 398 */ "kwcolumn_opt ::=",
- /* 399 */ "kwcolumn_opt ::= COLUMNKW",
- /* 400 */ "vtabarglist ::= vtabarg",
- /* 401 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
- /* 402 */ "vtabarg ::= vtabarg vtabargtoken",
- /* 403 */ "anylist ::=",
- /* 404 */ "anylist ::= anylist LP anylist RP",
- /* 405 */ "anylist ::= anylist ANY",
- /* 406 */ "with ::=",
- /* 407 */ "windowdefn_list ::= windowdefn",
- /* 408 */ "window ::= frame_opt",
+ /* 296 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
+ /* 297 */ "cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm",
+ /* 298 */ "cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL",
+ /* 299 */ "cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf",
+ /* 300 */ "cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf",
+ /* 301 */ "cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf",
+ /* 302 */ "cmd ::= create_vtab",
+ /* 303 */ "cmd ::= create_vtab LP vtabarglist RP",
+ /* 304 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
+ /* 305 */ "vtabarg ::=",
+ /* 306 */ "vtabargtoken ::= ANY",
+ /* 307 */ "vtabargtoken ::= lp anylist RP",
+ /* 308 */ "lp ::= LP",
+ /* 309 */ "with ::= WITH wqlist",
+ /* 310 */ "with ::= WITH RECURSIVE wqlist",
+ /* 311 */ "wqas ::= AS",
+ /* 312 */ "wqas ::= AS MATERIALIZED",
+ /* 313 */ "wqas ::= AS NOT MATERIALIZED",
+ /* 314 */ "wqitem ::= withnm eidlist_opt wqas LP select RP",
+ /* 315 */ "withnm ::= nm",
+ /* 316 */ "wqlist ::= wqitem",
+ /* 317 */ "wqlist ::= wqlist COMMA wqitem",
+ /* 318 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
+ /* 319 */ "windowdefn ::= nm AS LP window RP",
+ /* 320 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
+ /* 321 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
+ /* 322 */ "window ::= ORDER BY sortlist frame_opt",
+ /* 323 */ "window ::= nm ORDER BY sortlist frame_opt",
+ /* 324 */ "window ::= nm frame_opt",
+ /* 325 */ "frame_opt ::=",
+ /* 326 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
+ /* 327 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
+ /* 328 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
+ /* 329 */ "frame_bound_s ::= frame_bound",
+ /* 330 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
+ /* 331 */ "frame_bound_e ::= frame_bound",
+ /* 332 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
+ /* 333 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
+ /* 334 */ "frame_bound ::= CURRENT ROW",
+ /* 335 */ "frame_exclude_opt ::=",
+ /* 336 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
+ /* 337 */ "frame_exclude ::= NO OTHERS",
+ /* 338 */ "frame_exclude ::= CURRENT ROW",
+ /* 339 */ "frame_exclude ::= GROUP|TIES",
+ /* 340 */ "window_clause ::= WINDOW windowdefn_list",
+ /* 341 */ "filter_over ::= filter_clause over_clause",
+ /* 342 */ "filter_over ::= over_clause",
+ /* 343 */ "filter_over ::= filter_clause",
+ /* 344 */ "over_clause ::= OVER LP window RP",
+ /* 345 */ "over_clause ::= OVER nm",
+ /* 346 */ "filter_clause ::= FILTER LP WHERE expr RP",
+ /* 347 */ "term ::= QNUMBER",
+ /* 348 */ "input ::= cmdlist",
+ /* 349 */ "cmdlist ::= cmdlist ecmd",
+ /* 350 */ "cmdlist ::= ecmd",
+ /* 351 */ "ecmd ::= SEMI",
+ /* 352 */ "ecmd ::= cmdx SEMI",
+ /* 353 */ "ecmd ::= explain cmdx SEMI",
+ /* 354 */ "trans_opt ::=",
+ /* 355 */ "trans_opt ::= TRANSACTION",
+ /* 356 */ "trans_opt ::= TRANSACTION nm",
+ /* 357 */ "savepoint_opt ::= SAVEPOINT",
+ /* 358 */ "savepoint_opt ::=",
+ /* 359 */ "cmd ::= create_table create_table_args",
+ /* 360 */ "table_option_set ::= table_option",
+ /* 361 */ "columnlist ::= columnlist COMMA columnname carglist",
+ /* 362 */ "columnlist ::= columnname carglist",
+ /* 363 */ "nm ::= ID|INDEXED|JOIN_KW",
+ /* 364 */ "nm ::= STRING",
+ /* 365 */ "typetoken ::= typename",
+ /* 366 */ "typename ::= ID|STRING",
+ /* 367 */ "signed ::= plus_num",
+ /* 368 */ "signed ::= minus_num",
+ /* 369 */ "carglist ::= carglist ccons",
+ /* 370 */ "carglist ::=",
+ /* 371 */ "ccons ::= NULL onconf",
+ /* 372 */ "ccons ::= GENERATED ALWAYS AS generated",
+ /* 373 */ "ccons ::= AS generated",
+ /* 374 */ "conslist_opt ::= COMMA conslist",
+ /* 375 */ "conslist ::= conslist tconscomma tcons",
+ /* 376 */ "conslist ::= tcons",
+ /* 377 */ "tconscomma ::=",
+ /* 378 */ "defer_subclause_opt ::= defer_subclause",
+ /* 379 */ "resolvetype ::= raisetype",
+ /* 380 */ "selectnowith ::= oneselect",
+ /* 381 */ "oneselect ::= values",
+ /* 382 */ "sclp ::= selcollist COMMA",
+ /* 383 */ "as ::= ID|STRING",
+ /* 384 */ "indexed_opt ::= indexed_by",
+ /* 385 */ "returning ::=",
+ /* 386 */ "expr ::= term",
+ /* 387 */ "likeop ::= LIKE_KW|MATCH",
+ /* 388 */ "case_operand ::= expr",
+ /* 389 */ "exprlist ::= nexprlist",
+ /* 390 */ "nmnum ::= plus_num",
+ /* 391 */ "nmnum ::= nm",
+ /* 392 */ "nmnum ::= ON",
+ /* 393 */ "nmnum ::= DELETE",
+ /* 394 */ "nmnum ::= DEFAULT",
+ /* 395 */ "plus_num ::= INTEGER|FLOAT",
+ /* 396 */ "foreach_clause ::=",
+ /* 397 */ "foreach_clause ::= FOR EACH ROW",
+ /* 398 */ "tridxby ::=",
+ /* 399 */ "database_kw_opt ::= DATABASE",
+ /* 400 */ "database_kw_opt ::=",
+ /* 401 */ "kwcolumn_opt ::=",
+ /* 402 */ "kwcolumn_opt ::= COLUMNKW",
+ /* 403 */ "vtabarglist ::= vtabarg",
+ /* 404 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
+ /* 405 */ "vtabarg ::= vtabarg vtabargtoken",
+ /* 406 */ "anylist ::=",
+ /* 407 */ "anylist ::= anylist LP anylist RP",
+ /* 408 */ "anylist ::= anylist ANY",
+ /* 409 */ "with ::=",
+ /* 410 */ "windowdefn_list ::= windowdefn",
+ /* 411 */ "window ::= frame_opt",
 };
 #endif /* NDEBUG */
 
@@ -179834,15 +181121,24 @@ static int yyGrowStack(yyParser *p){
   int newSize;
   int idx;
   yyStackEntry *pNew;
+#ifdef YYSIZELIMIT
+  int nLimit = YYSIZELIMIT(sqlite3ParserCTX(p));
+#endif
 
   newSize = oldSize*2 + 100;
+#ifdef YYSIZELIMIT
+  if( newSize>nLimit ){
+    newSize = nLimit;
+    if( newSize<=oldSize ) return 1;
+  }
+#endif
   idx = (int)(p->yytos - p->yystack);
   if( p->yystack==p->yystk0 ){
-    pNew = YYREALLOC(0, newSize*sizeof(pNew[0]));
+    pNew = YYREALLOC(0, newSize*sizeof(pNew[0]), sqlite3ParserCTX(p));
     if( pNew==0 ) return 1;
     memcpy(pNew, p->yystack, oldSize*sizeof(pNew[0]));
   }else{
-    pNew = YYREALLOC(p->yystack, newSize*sizeof(pNew[0]));
+    pNew = YYREALLOC(p->yystack, newSize*sizeof(pNew[0]), sqlite3ParserCTX(p));
     if( pNew==0 ) return 1;
   }
   p->yystack = pNew;
@@ -179949,7 +181245,7 @@ static void yy_destructor(
     case 254: /* values */
     case 256: /* mvalues */
 {
-sqlite3SelectDelete(pParse->db, (yypminor->yy637));
+sqlite3SelectDelete(pParse->db, (yypminor->yy555));
 }
       break;
     case 218: /* term */
@@ -179961,10 +181257,10 @@ sqlite3SelectDelete(pParse->db, (yypminor->yy637));
     case 283: /* case_else */
     case 286: /* vinto */
     case 293: /* when_clause */
-    case 298: /* key_opt */
-    case 315: /* filter_clause */
+    case 297: /* key_opt */
+    case 314: /* filter_clause */
 {
-sqlite3ExprDelete(pParse->db, (yypminor->yy590));
+sqlite3ExprDelete(pParse->db, (yypminor->yy454));
 }
       break;
     case 223: /* eidlist_opt */
@@ -179979,9 +181275,9 @@ sqlite3ExprDelete(pParse->db, (yypminor->yy590));
     case 271: /* setlist */
     case 280: /* paren_exprlist */
     case 282: /* case_exprlist */
-    case 314: /* part_opt */
+    case 313: /* part_opt */
 {
-sqlite3ExprListDelete(pParse->db, (yypminor->yy402));
+sqlite3ExprListDelete(pParse->db, (yypminor->yy14));
 }
       break;
     case 240: /* fullname */
@@ -179990,51 +181286,51 @@ sqlite3ExprListDelete(pParse->db, (yypminor->yy402));
     case 260: /* stl_prefix */
     case 265: /* xfullname */
 {
-sqlite3SrcListDelete(pParse->db, (yypminor->yy563));
+sqlite3SrcListDelete(pParse->db, (yypminor->yy203));
 }
       break;
     case 243: /* wqlist */
 {
-sqlite3WithDelete(pParse->db, (yypminor->yy125));
+sqlite3WithDelete(pParse->db, (yypminor->yy59));
 }
       break;
     case 253: /* window_clause */
-    case 310: /* windowdefn_list */
+    case 309: /* windowdefn_list */
 {
-sqlite3WindowListDelete(pParse->db, (yypminor->yy483));
+sqlite3WindowListDelete(pParse->db, (yypminor->yy211));
 }
       break;
     case 266: /* idlist */
     case 273: /* idlist_opt */
 {
-sqlite3IdListDelete(pParse->db, (yypminor->yy204));
+sqlite3IdListDelete(pParse->db, (yypminor->yy132));
 }
       break;
     case 276: /* filter_over */
-    case 311: /* windowdefn */
-    case 312: /* window */
-    case 313: /* frame_opt */
-    case 316: /* over_clause */
+    case 310: /* windowdefn */
+    case 311: /* window */
+    case 312: /* frame_opt */
+    case 315: /* over_clause */
 {
-sqlite3WindowDelete(pParse->db, (yypminor->yy483));
+sqlite3WindowDelete(pParse->db, (yypminor->yy211));
 }
       break;
     case 289: /* trigger_cmd_list */
     case 294: /* trigger_cmd */
 {
-sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy319));
+sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy427));
 }
       break;
     case 291: /* trigger_event */
 {
-sqlite3IdListDelete(pParse->db, (yypminor->yy28).b);
+sqlite3IdListDelete(pParse->db, (yypminor->yy286).b);
 }
       break;
-    case 318: /* frame_bound */
-    case 319: /* frame_bound_s */
-    case 320: /* frame_bound_e */
+    case 317: /* frame_bound */
+    case 318: /* frame_bound_s */
+    case 319: /* frame_bound_e */
 {
-sqlite3ExprDelete(pParse->db, (yypminor->yy205).pExpr);
+sqlite3ExprDelete(pParse->db, (yypminor->yy509).pExpr);
 }
       break;
 /********* End destructor definitions *****************************************/
@@ -180087,7 +181383,9 @@ SQLITE_PRIVATE void sqlite3ParserFinalize(void *p){
   }
 
 #if YYGROWABLESTACK
-  if( pParser->yystack!=pParser->yystk0 ) YYFREE(pParser->yystack);
+  if( pParser->yystack!=pParser->yystk0 ){
+    YYFREE(pParser->yystack, sqlite3ParserCTX(pParser));
+  }
 #endif
 }
 
@@ -180270,7 +181568,7 @@ static void yyStackOverflow(yyParser *yypParser){
    ** stack every overflows */
 /******** Begin %stack_overflow code ******************************************/
 
-  sqlite3OomFault(pParse->db);
+  if( pParse->nErr==0 ) sqlite3ErrorMsg(pParse, "Recursion limit");
 /******** End %stack_overflow code ********************************************/
    sqlite3ParserARG_STORE /* Suppress warning about unused %extra_argument var */
    sqlite3ParserCTX_STORE
@@ -180458,8 +181756,8 @@ static const YYCODETYPE yyRuleInfoLhs[] = {
    240,  /* (119) fullname ::= nm DOT nm */
    265,  /* (120) xfullname ::= nm */
    265,  /* (121) xfullname ::= nm DOT nm */
-   265,  /* (122) xfullname ::= nm DOT nm AS nm */
-   265,  /* (123) xfullname ::= nm AS nm */
+   265,  /* (122) xfullname ::= nm AS nm */
+   265,  /* (123) xfullname ::= nm DOT nm AS nm */
    261,  /* (124) joinop ::= COMMA|JOIN */
    261,  /* (125) joinop ::= JOIN_KW JOIN */
    261,  /* (126) joinop ::= JOIN_KW nm JOIN */
@@ -180608,143 +181906,146 @@ static const YYCODETYPE yyRuleInfoLhs[] = {
    293,  /* (269) when_clause ::= WHEN expr */
    289,  /* (270) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
    289,  /* (271) trigger_cmd_list ::= trigger_cmd SEMI */
-   295,  /* (272) trnm ::= nm DOT nm */
-   296,  /* (273) tridxby ::= INDEXED BY nm */
-   296,  /* (274) tridxby ::= NOT INDEXED */
-   294,  /* (275) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
-   294,  /* (276) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
-   294,  /* (277) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
-   294,  /* (278) trigger_cmd ::= scanpt select scanpt */
-   219,  /* (279) expr ::= RAISE LP IGNORE RP */
-   219,  /* (280) expr ::= RAISE LP raisetype COMMA expr RP */
-   238,  /* (281) raisetype ::= ROLLBACK */
-   238,  /* (282) raisetype ::= ABORT */
-   238,  /* (283) raisetype ::= FAIL */
-   192,  /* (284) cmd ::= DROP TRIGGER ifexists fullname */
-   192,  /* (285) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
-   192,  /* (286) cmd ::= DETACH database_kw_opt expr */
-   298,  /* (287) key_opt ::= */
-   298,  /* (288) key_opt ::= KEY expr */
-   192,  /* (289) cmd ::= REINDEX */
-   192,  /* (290) cmd ::= REINDEX nm dbnm */
-   192,  /* (291) cmd ::= ANALYZE */
-   192,  /* (292) cmd ::= ANALYZE nm dbnm */
-   192,  /* (293) cmd ::= ALTER TABLE fullname RENAME TO nm */
-   192,  /* (294) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
+   295,  /* (272) tridxby ::= INDEXED BY nm */
+   295,  /* (273) tridxby ::= NOT INDEXED */
+   294,  /* (274) trigger_cmd ::= UPDATE orconf xfullname tridxby SET setlist from where_opt scanpt */
+   294,  /* (275) trigger_cmd ::= scanpt insert_cmd INTO xfullname idlist_opt select upsert scanpt */
+   294,  /* (276) trigger_cmd ::= DELETE FROM xfullname tridxby where_opt scanpt */
+   294,  /* (277) trigger_cmd ::= scanpt select scanpt */
+   219,  /* (278) expr ::= RAISE LP IGNORE RP */
+   219,  /* (279) expr ::= RAISE LP raisetype COMMA expr RP */
+   238,  /* (280) raisetype ::= ROLLBACK */
+   238,  /* (281) raisetype ::= ABORT */
+   238,  /* (282) raisetype ::= FAIL */
+   192,  /* (283) cmd ::= DROP TRIGGER ifexists fullname */
+   192,  /* (284) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+   192,  /* (285) cmd ::= DETACH database_kw_opt expr */
+   297,  /* (286) key_opt ::= */
+   297,  /* (287) key_opt ::= KEY expr */
+   192,  /* (288) cmd ::= REINDEX */
+   192,  /* (289) cmd ::= REINDEX nm dbnm */
+   192,  /* (290) cmd ::= ANALYZE */
+   192,  /* (291) cmd ::= ANALYZE nm dbnm */
+   192,  /* (292) cmd ::= ALTER TABLE fullname RENAME TO nm */
+   192,  /* (293) cmd ::= alter_add carglist */
+   298,  /* (294) alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
    192,  /* (295) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
-   299,  /* (296) add_column_fullname ::= fullname */
-   192,  /* (297) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
-   192,  /* (298) cmd ::= create_vtab */
-   192,  /* (299) cmd ::= create_vtab LP vtabarglist RP */
-   301,  /* (300) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
-   303,  /* (301) vtabarg ::= */
-   304,  /* (302) vtabargtoken ::= ANY */
-   304,  /* (303) vtabargtoken ::= lp anylist RP */
-   305,  /* (304) lp ::= LP */
-   269,  /* (305) with ::= WITH wqlist */
-   269,  /* (306) with ::= WITH RECURSIVE wqlist */
-   308,  /* (307) wqas ::= AS */
-   308,  /* (308) wqas ::= AS MATERIALIZED */
-   308,  /* (309) wqas ::= AS NOT MATERIALIZED */
-   307,  /* (310) wqitem ::= withnm eidlist_opt wqas LP select RP */
-   309,  /* (311) withnm ::= nm */
-   243,  /* (312) wqlist ::= wqitem */
-   243,  /* (313) wqlist ::= wqlist COMMA wqitem */
-   310,  /* (314) windowdefn_list ::= windowdefn_list COMMA windowdefn */
-   311,  /* (315) windowdefn ::= nm AS LP window RP */
-   312,  /* (316) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
-   312,  /* (317) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
-   312,  /* (318) window ::= ORDER BY sortlist frame_opt */
-   312,  /* (319) window ::= nm ORDER BY sortlist frame_opt */
-   312,  /* (320) window ::= nm frame_opt */
-   313,  /* (321) frame_opt ::= */
-   313,  /* (322) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
-   313,  /* (323) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
-   317,  /* (324) range_or_rows ::= RANGE|ROWS|GROUPS */
-   319,  /* (325) frame_bound_s ::= frame_bound */
-   319,  /* (326) frame_bound_s ::= UNBOUNDED PRECEDING */
-   320,  /* (327) frame_bound_e ::= frame_bound */
-   320,  /* (328) frame_bound_e ::= UNBOUNDED FOLLOWING */
-   318,  /* (329) frame_bound ::= expr PRECEDING|FOLLOWING */
-   318,  /* (330) frame_bound ::= CURRENT ROW */
-   321,  /* (331) frame_exclude_opt ::= */
-   321,  /* (332) frame_exclude_opt ::= EXCLUDE frame_exclude */
-   322,  /* (333) frame_exclude ::= NO OTHERS */
-   322,  /* (334) frame_exclude ::= CURRENT ROW */
-   322,  /* (335) frame_exclude ::= GROUP|TIES */
-   253,  /* (336) window_clause ::= WINDOW windowdefn_list */
-   276,  /* (337) filter_over ::= filter_clause over_clause */
-   276,  /* (338) filter_over ::= over_clause */
-   276,  /* (339) filter_over ::= filter_clause */
-   316,  /* (340) over_clause ::= OVER LP window RP */
-   316,  /* (341) over_clause ::= OVER nm */
-   315,  /* (342) filter_clause ::= FILTER LP WHERE expr RP */
-   218,  /* (343) term ::= QNUMBER */
-   187,  /* (344) input ::= cmdlist */
-   188,  /* (345) cmdlist ::= cmdlist ecmd */
-   188,  /* (346) cmdlist ::= ecmd */
-   189,  /* (347) ecmd ::= SEMI */
-   189,  /* (348) ecmd ::= cmdx SEMI */
-   189,  /* (349) ecmd ::= explain cmdx SEMI */
-   194,  /* (350) trans_opt ::= */
-   194,  /* (351) trans_opt ::= TRANSACTION */
-   194,  /* (352) trans_opt ::= TRANSACTION nm */
-   196,  /* (353) savepoint_opt ::= SAVEPOINT */
-   196,  /* (354) savepoint_opt ::= */
-   192,  /* (355) cmd ::= create_table create_table_args */
-   205,  /* (356) table_option_set ::= table_option */
-   203,  /* (357) columnlist ::= columnlist COMMA columnname carglist */
-   203,  /* (358) columnlist ::= columnname carglist */
-   195,  /* (359) nm ::= ID|INDEXED|JOIN_KW */
-   195,  /* (360) nm ::= STRING */
-   210,  /* (361) typetoken ::= typename */
-   211,  /* (362) typename ::= ID|STRING */
-   212,  /* (363) signed ::= plus_num */
-   212,  /* (364) signed ::= minus_num */
-   209,  /* (365) carglist ::= carglist ccons */
-   209,  /* (366) carglist ::= */
-   217,  /* (367) ccons ::= NULL onconf */
-   217,  /* (368) ccons ::= GENERATED ALWAYS AS generated */
-   217,  /* (369) ccons ::= AS generated */
-   204,  /* (370) conslist_opt ::= COMMA conslist */
-   230,  /* (371) conslist ::= conslist tconscomma tcons */
-   230,  /* (372) conslist ::= tcons */
-   231,  /* (373) tconscomma ::= */
-   235,  /* (374) defer_subclause_opt ::= defer_subclause */
-   237,  /* (375) resolvetype ::= raisetype */
-   241,  /* (376) selectnowith ::= oneselect */
-   242,  /* (377) oneselect ::= values */
-   257,  /* (378) sclp ::= selcollist COMMA */
-   258,  /* (379) as ::= ID|STRING */
-   267,  /* (380) indexed_opt ::= indexed_by */
-   275,  /* (381) returning ::= */
-   219,  /* (382) expr ::= term */
-   277,  /* (383) likeop ::= LIKE_KW|MATCH */
-   281,  /* (384) case_operand ::= expr */
-   264,  /* (385) exprlist ::= nexprlist */
-   287,  /* (386) nmnum ::= plus_num */
-   287,  /* (387) nmnum ::= nm */
-   287,  /* (388) nmnum ::= ON */
-   287,  /* (389) nmnum ::= DELETE */
-   287,  /* (390) nmnum ::= DEFAULT */
-   213,  /* (391) plus_num ::= INTEGER|FLOAT */
-   292,  /* (392) foreach_clause ::= */
-   292,  /* (393) foreach_clause ::= FOR EACH ROW */
-   295,  /* (394) trnm ::= nm */
-   296,  /* (395) tridxby ::= */
-   297,  /* (396) database_kw_opt ::= DATABASE */
-   297,  /* (397) database_kw_opt ::= */
-   300,  /* (398) kwcolumn_opt ::= */
-   300,  /* (399) kwcolumn_opt ::= COLUMNKW */
-   302,  /* (400) vtabarglist ::= vtabarg */
-   302,  /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */
-   303,  /* (402) vtabarg ::= vtabarg vtabargtoken */
-   306,  /* (403) anylist ::= */
-   306,  /* (404) anylist ::= anylist LP anylist RP */
-   306,  /* (405) anylist ::= anylist ANY */
-   269,  /* (406) with ::= */
-   310,  /* (407) windowdefn_list ::= windowdefn */
-   312,  /* (408) window ::= frame_opt */
+   192,  /* (296) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
+   192,  /* (297) cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
+   192,  /* (298) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
+   192,  /* (299) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
+   192,  /* (300) cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
+   192,  /* (301) cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
+   192,  /* (302) cmd ::= create_vtab */
+   192,  /* (303) cmd ::= create_vtab LP vtabarglist RP */
+   300,  /* (304) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+   302,  /* (305) vtabarg ::= */
+   303,  /* (306) vtabargtoken ::= ANY */
+   303,  /* (307) vtabargtoken ::= lp anylist RP */
+   304,  /* (308) lp ::= LP */
+   269,  /* (309) with ::= WITH wqlist */
+   269,  /* (310) with ::= WITH RECURSIVE wqlist */
+   307,  /* (311) wqas ::= AS */
+   307,  /* (312) wqas ::= AS MATERIALIZED */
+   307,  /* (313) wqas ::= AS NOT MATERIALIZED */
+   306,  /* (314) wqitem ::= withnm eidlist_opt wqas LP select RP */
+   308,  /* (315) withnm ::= nm */
+   243,  /* (316) wqlist ::= wqitem */
+   243,  /* (317) wqlist ::= wqlist COMMA wqitem */
+   309,  /* (318) windowdefn_list ::= windowdefn_list COMMA windowdefn */
+   310,  /* (319) windowdefn ::= nm AS LP window RP */
+   311,  /* (320) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+   311,  /* (321) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+   311,  /* (322) window ::= ORDER BY sortlist frame_opt */
+   311,  /* (323) window ::= nm ORDER BY sortlist frame_opt */
+   311,  /* (324) window ::= nm frame_opt */
+   312,  /* (325) frame_opt ::= */
+   312,  /* (326) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+   312,  /* (327) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+   316,  /* (328) range_or_rows ::= RANGE|ROWS|GROUPS */
+   318,  /* (329) frame_bound_s ::= frame_bound */
+   318,  /* (330) frame_bound_s ::= UNBOUNDED PRECEDING */
+   319,  /* (331) frame_bound_e ::= frame_bound */
+   319,  /* (332) frame_bound_e ::= UNBOUNDED FOLLOWING */
+   317,  /* (333) frame_bound ::= expr PRECEDING|FOLLOWING */
+   317,  /* (334) frame_bound ::= CURRENT ROW */
+   320,  /* (335) frame_exclude_opt ::= */
+   320,  /* (336) frame_exclude_opt ::= EXCLUDE frame_exclude */
+   321,  /* (337) frame_exclude ::= NO OTHERS */
+   321,  /* (338) frame_exclude ::= CURRENT ROW */
+   321,  /* (339) frame_exclude ::= GROUP|TIES */
+   253,  /* (340) window_clause ::= WINDOW windowdefn_list */
+   276,  /* (341) filter_over ::= filter_clause over_clause */
+   276,  /* (342) filter_over ::= over_clause */
+   276,  /* (343) filter_over ::= filter_clause */
+   315,  /* (344) over_clause ::= OVER LP window RP */
+   315,  /* (345) over_clause ::= OVER nm */
+   314,  /* (346) filter_clause ::= FILTER LP WHERE expr RP */
+   218,  /* (347) term ::= QNUMBER */
+   187,  /* (348) input ::= cmdlist */
+   188,  /* (349) cmdlist ::= cmdlist ecmd */
+   188,  /* (350) cmdlist ::= ecmd */
+   189,  /* (351) ecmd ::= SEMI */
+   189,  /* (352) ecmd ::= cmdx SEMI */
+   189,  /* (353) ecmd ::= explain cmdx SEMI */
+   194,  /* (354) trans_opt ::= */
+   194,  /* (355) trans_opt ::= TRANSACTION */
+   194,  /* (356) trans_opt ::= TRANSACTION nm */
+   196,  /* (357) savepoint_opt ::= SAVEPOINT */
+   196,  /* (358) savepoint_opt ::= */
+   192,  /* (359) cmd ::= create_table create_table_args */
+   205,  /* (360) table_option_set ::= table_option */
+   203,  /* (361) columnlist ::= columnlist COMMA columnname carglist */
+   203,  /* (362) columnlist ::= columnname carglist */
+   195,  /* (363) nm ::= ID|INDEXED|JOIN_KW */
+   195,  /* (364) nm ::= STRING */
+   210,  /* (365) typetoken ::= typename */
+   211,  /* (366) typename ::= ID|STRING */
+   212,  /* (367) signed ::= plus_num */
+   212,  /* (368) signed ::= minus_num */
+   209,  /* (369) carglist ::= carglist ccons */
+   209,  /* (370) carglist ::= */
+   217,  /* (371) ccons ::= NULL onconf */
+   217,  /* (372) ccons ::= GENERATED ALWAYS AS generated */
+   217,  /* (373) ccons ::= AS generated */
+   204,  /* (374) conslist_opt ::= COMMA conslist */
+   230,  /* (375) conslist ::= conslist tconscomma tcons */
+   230,  /* (376) conslist ::= tcons */
+   231,  /* (377) tconscomma ::= */
+   235,  /* (378) defer_subclause_opt ::= defer_subclause */
+   237,  /* (379) resolvetype ::= raisetype */
+   241,  /* (380) selectnowith ::= oneselect */
+   242,  /* (381) oneselect ::= values */
+   257,  /* (382) sclp ::= selcollist COMMA */
+   258,  /* (383) as ::= ID|STRING */
+   267,  /* (384) indexed_opt ::= indexed_by */
+   275,  /* (385) returning ::= */
+   219,  /* (386) expr ::= term */
+   277,  /* (387) likeop ::= LIKE_KW|MATCH */
+   281,  /* (388) case_operand ::= expr */
+   264,  /* (389) exprlist ::= nexprlist */
+   287,  /* (390) nmnum ::= plus_num */
+   287,  /* (391) nmnum ::= nm */
+   287,  /* (392) nmnum ::= ON */
+   287,  /* (393) nmnum ::= DELETE */
+   287,  /* (394) nmnum ::= DEFAULT */
+   213,  /* (395) plus_num ::= INTEGER|FLOAT */
+   292,  /* (396) foreach_clause ::= */
+   292,  /* (397) foreach_clause ::= FOR EACH ROW */
+   295,  /* (398) tridxby ::= */
+   296,  /* (399) database_kw_opt ::= DATABASE */
+   296,  /* (400) database_kw_opt ::= */
+   299,  /* (401) kwcolumn_opt ::= */
+   299,  /* (402) kwcolumn_opt ::= COLUMNKW */
+   301,  /* (403) vtabarglist ::= vtabarg */
+   301,  /* (404) vtabarglist ::= vtabarglist COMMA vtabarg */
+   302,  /* (405) vtabarg ::= vtabarg vtabargtoken */
+   305,  /* (406) anylist ::= */
+   305,  /* (407) anylist ::= anylist LP anylist RP */
+   305,  /* (408) anylist ::= anylist ANY */
+   269,  /* (409) with ::= */
+   309,  /* (410) windowdefn_list ::= windowdefn */
+   311,  /* (411) window ::= frame_opt */
 };
 
 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
@@ -180872,8 +182173,8 @@ static const signed char yyRuleInfoNRhs[] = {
    -3,  /* (119) fullname ::= nm DOT nm */
    -1,  /* (120) xfullname ::= nm */
    -3,  /* (121) xfullname ::= nm DOT nm */
-   -5,  /* (122) xfullname ::= nm DOT nm AS nm */
-   -3,  /* (123) xfullname ::= nm AS nm */
+   -3,  /* (122) xfullname ::= nm AS nm */
+   -5,  /* (123) xfullname ::= nm DOT nm AS nm */
    -1,  /* (124) joinop ::= COMMA|JOIN */
    -2,  /* (125) joinop ::= JOIN_KW JOIN */
    -3,  /* (126) joinop ::= JOIN_KW nm JOIN */
@@ -181022,143 +182323,146 @@ static const signed char yyRuleInfoNRhs[] = {
    -2,  /* (269) when_clause ::= WHEN expr */
    -3,  /* (270) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
    -2,  /* (271) trigger_cmd_list ::= trigger_cmd SEMI */
-   -3,  /* (272) trnm ::= nm DOT nm */
-   -3,  /* (273) tridxby ::= INDEXED BY nm */
-   -2,  /* (274) tridxby ::= NOT INDEXED */
-   -9,  /* (275) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
-   -8,  /* (276) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
-   -6,  /* (277) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
-   -3,  /* (278) trigger_cmd ::= scanpt select scanpt */
-   -4,  /* (279) expr ::= RAISE LP IGNORE RP */
-   -6,  /* (280) expr ::= RAISE LP raisetype COMMA expr RP */
-   -1,  /* (281) raisetype ::= ROLLBACK */
-   -1,  /* (282) raisetype ::= ABORT */
-   -1,  /* (283) raisetype ::= FAIL */
-   -4,  /* (284) cmd ::= DROP TRIGGER ifexists fullname */
-   -6,  /* (285) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
-   -3,  /* (286) cmd ::= DETACH database_kw_opt expr */
-    0,  /* (287) key_opt ::= */
-   -2,  /* (288) key_opt ::= KEY expr */
-   -1,  /* (289) cmd ::= REINDEX */
-   -3,  /* (290) cmd ::= REINDEX nm dbnm */
-   -1,  /* (291) cmd ::= ANALYZE */
-   -3,  /* (292) cmd ::= ANALYZE nm dbnm */
-   -6,  /* (293) cmd ::= ALTER TABLE fullname RENAME TO nm */
-   -7,  /* (294) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
+   -3,  /* (272) tridxby ::= INDEXED BY nm */
+   -2,  /* (273) tridxby ::= NOT INDEXED */
+   -9,  /* (274) trigger_cmd ::= UPDATE orconf xfullname tridxby SET setlist from where_opt scanpt */
+   -8,  /* (275) trigger_cmd ::= scanpt insert_cmd INTO xfullname idlist_opt select upsert scanpt */
+   -6,  /* (276) trigger_cmd ::= DELETE FROM xfullname tridxby where_opt scanpt */
+   -3,  /* (277) trigger_cmd ::= scanpt select scanpt */
+   -4,  /* (278) expr ::= RAISE LP IGNORE RP */
+   -6,  /* (279) expr ::= RAISE LP raisetype COMMA expr RP */
+   -1,  /* (280) raisetype ::= ROLLBACK */
+   -1,  /* (281) raisetype ::= ABORT */
+   -1,  /* (282) raisetype ::= FAIL */
+   -4,  /* (283) cmd ::= DROP TRIGGER ifexists fullname */
+   -6,  /* (284) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+   -3,  /* (285) cmd ::= DETACH database_kw_opt expr */
+    0,  /* (286) key_opt ::= */
+   -2,  /* (287) key_opt ::= KEY expr */
+   -1,  /* (288) cmd ::= REINDEX */
+   -3,  /* (289) cmd ::= REINDEX nm dbnm */
+   -1,  /* (290) cmd ::= ANALYZE */
+   -3,  /* (291) cmd ::= ANALYZE nm dbnm */
+   -6,  /* (292) cmd ::= ALTER TABLE fullname RENAME TO nm */
+   -2,  /* (293) cmd ::= alter_add carglist */
+   -7,  /* (294) alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
    -6,  /* (295) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
-   -1,  /* (296) add_column_fullname ::= fullname */
-   -8,  /* (297) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
-   -1,  /* (298) cmd ::= create_vtab */
-   -4,  /* (299) cmd ::= create_vtab LP vtabarglist RP */
-   -8,  /* (300) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
-    0,  /* (301) vtabarg ::= */
-   -1,  /* (302) vtabargtoken ::= ANY */
-   -3,  /* (303) vtabargtoken ::= lp anylist RP */
-   -1,  /* (304) lp ::= LP */
-   -2,  /* (305) with ::= WITH wqlist */
-   -3,  /* (306) with ::= WITH RECURSIVE wqlist */
-   -1,  /* (307) wqas ::= AS */
-   -2,  /* (308) wqas ::= AS MATERIALIZED */
-   -3,  /* (309) wqas ::= AS NOT MATERIALIZED */
-   -6,  /* (310) wqitem ::= withnm eidlist_opt wqas LP select RP */
-   -1,  /* (311) withnm ::= nm */
-   -1,  /* (312) wqlist ::= wqitem */
-   -3,  /* (313) wqlist ::= wqlist COMMA wqitem */
-   -3,  /* (314) windowdefn_list ::= windowdefn_list COMMA windowdefn */
-   -5,  /* (315) windowdefn ::= nm AS LP window RP */
-   -5,  /* (316) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
-   -6,  /* (317) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
-   -4,  /* (318) window ::= ORDER BY sortlist frame_opt */
-   -5,  /* (319) window ::= nm ORDER BY sortlist frame_opt */
-   -2,  /* (320) window ::= nm frame_opt */
-    0,  /* (321) frame_opt ::= */
-   -3,  /* (322) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
-   -6,  /* (323) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
-   -1,  /* (324) range_or_rows ::= RANGE|ROWS|GROUPS */
-   -1,  /* (325) frame_bound_s ::= frame_bound */
-   -2,  /* (326) frame_bound_s ::= UNBOUNDED PRECEDING */
-   -1,  /* (327) frame_bound_e ::= frame_bound */
-   -2,  /* (328) frame_bound_e ::= UNBOUNDED FOLLOWING */
-   -2,  /* (329) frame_bound ::= expr PRECEDING|FOLLOWING */
-   -2,  /* (330) frame_bound ::= CURRENT ROW */
-    0,  /* (331) frame_exclude_opt ::= */
-   -2,  /* (332) frame_exclude_opt ::= EXCLUDE frame_exclude */
-   -2,  /* (333) frame_exclude ::= NO OTHERS */
-   -2,  /* (334) frame_exclude ::= CURRENT ROW */
-   -1,  /* (335) frame_exclude ::= GROUP|TIES */
-   -2,  /* (336) window_clause ::= WINDOW windowdefn_list */
-   -2,  /* (337) filter_over ::= filter_clause over_clause */
-   -1,  /* (338) filter_over ::= over_clause */
-   -1,  /* (339) filter_over ::= filter_clause */
-   -4,  /* (340) over_clause ::= OVER LP window RP */
-   -2,  /* (341) over_clause ::= OVER nm */
-   -5,  /* (342) filter_clause ::= FILTER LP WHERE expr RP */
-   -1,  /* (343) term ::= QNUMBER */
-   -1,  /* (344) input ::= cmdlist */
-   -2,  /* (345) cmdlist ::= cmdlist ecmd */
-   -1,  /* (346) cmdlist ::= ecmd */
-   -1,  /* (347) ecmd ::= SEMI */
-   -2,  /* (348) ecmd ::= cmdx SEMI */
-   -3,  /* (349) ecmd ::= explain cmdx SEMI */
-    0,  /* (350) trans_opt ::= */
-   -1,  /* (351) trans_opt ::= TRANSACTION */
-   -2,  /* (352) trans_opt ::= TRANSACTION nm */
-   -1,  /* (353) savepoint_opt ::= SAVEPOINT */
-    0,  /* (354) savepoint_opt ::= */
-   -2,  /* (355) cmd ::= create_table create_table_args */
-   -1,  /* (356) table_option_set ::= table_option */
-   -4,  /* (357) columnlist ::= columnlist COMMA columnname carglist */
-   -2,  /* (358) columnlist ::= columnname carglist */
-   -1,  /* (359) nm ::= ID|INDEXED|JOIN_KW */
-   -1,  /* (360) nm ::= STRING */
-   -1,  /* (361) typetoken ::= typename */
-   -1,  /* (362) typename ::= ID|STRING */
-   -1,  /* (363) signed ::= plus_num */
-   -1,  /* (364) signed ::= minus_num */
-   -2,  /* (365) carglist ::= carglist ccons */
-    0,  /* (366) carglist ::= */
-   -2,  /* (367) ccons ::= NULL onconf */
-   -4,  /* (368) ccons ::= GENERATED ALWAYS AS generated */
-   -2,  /* (369) ccons ::= AS generated */
-   -2,  /* (370) conslist_opt ::= COMMA conslist */
-   -3,  /* (371) conslist ::= conslist tconscomma tcons */
-   -1,  /* (372) conslist ::= tcons */
-    0,  /* (373) tconscomma ::= */
-   -1,  /* (374) defer_subclause_opt ::= defer_subclause */
-   -1,  /* (375) resolvetype ::= raisetype */
-   -1,  /* (376) selectnowith ::= oneselect */
-   -1,  /* (377) oneselect ::= values */
-   -2,  /* (378) sclp ::= selcollist COMMA */
-   -1,  /* (379) as ::= ID|STRING */
-   -1,  /* (380) indexed_opt ::= indexed_by */
-    0,  /* (381) returning ::= */
-   -1,  /* (382) expr ::= term */
-   -1,  /* (383) likeop ::= LIKE_KW|MATCH */
-   -1,  /* (384) case_operand ::= expr */
-   -1,  /* (385) exprlist ::= nexprlist */
-   -1,  /* (386) nmnum ::= plus_num */
-   -1,  /* (387) nmnum ::= nm */
-   -1,  /* (388) nmnum ::= ON */
-   -1,  /* (389) nmnum ::= DELETE */
-   -1,  /* (390) nmnum ::= DEFAULT */
-   -1,  /* (391) plus_num ::= INTEGER|FLOAT */
-    0,  /* (392) foreach_clause ::= */
-   -3,  /* (393) foreach_clause ::= FOR EACH ROW */
-   -1,  /* (394) trnm ::= nm */
-    0,  /* (395) tridxby ::= */
-   -1,  /* (396) database_kw_opt ::= DATABASE */
-    0,  /* (397) database_kw_opt ::= */
-    0,  /* (398) kwcolumn_opt ::= */
-   -1,  /* (399) kwcolumn_opt ::= COLUMNKW */
-   -1,  /* (400) vtabarglist ::= vtabarg */
-   -3,  /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */
-   -2,  /* (402) vtabarg ::= vtabarg vtabargtoken */
-    0,  /* (403) anylist ::= */
-   -4,  /* (404) anylist ::= anylist LP anylist RP */
-   -2,  /* (405) anylist ::= anylist ANY */
-    0,  /* (406) with ::= */
-   -1,  /* (407) windowdefn_list ::= windowdefn */
-   -1,  /* (408) window ::= frame_opt */
+   -8,  /* (296) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
+   -6,  /* (297) cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
+   -9,  /* (298) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
+  -10,  /* (299) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
+  -11,  /* (300) cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
+   -9,  /* (301) cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
+   -1,  /* (302) cmd ::= create_vtab */
+   -4,  /* (303) cmd ::= create_vtab LP vtabarglist RP */
+   -8,  /* (304) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+    0,  /* (305) vtabarg ::= */
+   -1,  /* (306) vtabargtoken ::= ANY */
+   -3,  /* (307) vtabargtoken ::= lp anylist RP */
+   -1,  /* (308) lp ::= LP */
+   -2,  /* (309) with ::= WITH wqlist */
+   -3,  /* (310) with ::= WITH RECURSIVE wqlist */
+   -1,  /* (311) wqas ::= AS */
+   -2,  /* (312) wqas ::= AS MATERIALIZED */
+   -3,  /* (313) wqas ::= AS NOT MATERIALIZED */
+   -6,  /* (314) wqitem ::= withnm eidlist_opt wqas LP select RP */
+   -1,  /* (315) withnm ::= nm */
+   -1,  /* (316) wqlist ::= wqitem */
+   -3,  /* (317) wqlist ::= wqlist COMMA wqitem */
+   -3,  /* (318) windowdefn_list ::= windowdefn_list COMMA windowdefn */
+   -5,  /* (319) windowdefn ::= nm AS LP window RP */
+   -5,  /* (320) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+   -6,  /* (321) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+   -4,  /* (322) window ::= ORDER BY sortlist frame_opt */
+   -5,  /* (323) window ::= nm ORDER BY sortlist frame_opt */
+   -2,  /* (324) window ::= nm frame_opt */
+    0,  /* (325) frame_opt ::= */
+   -3,  /* (326) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+   -6,  /* (327) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+   -1,  /* (328) range_or_rows ::= RANGE|ROWS|GROUPS */
+   -1,  /* (329) frame_bound_s ::= frame_bound */
+   -2,  /* (330) frame_bound_s ::= UNBOUNDED PRECEDING */
+   -1,  /* (331) frame_bound_e ::= frame_bound */
+   -2,  /* (332) frame_bound_e ::= UNBOUNDED FOLLOWING */
+   -2,  /* (333) frame_bound ::= expr PRECEDING|FOLLOWING */
+   -2,  /* (334) frame_bound ::= CURRENT ROW */
+    0,  /* (335) frame_exclude_opt ::= */
+   -2,  /* (336) frame_exclude_opt ::= EXCLUDE frame_exclude */
+   -2,  /* (337) frame_exclude ::= NO OTHERS */
+   -2,  /* (338) frame_exclude ::= CURRENT ROW */
+   -1,  /* (339) frame_exclude ::= GROUP|TIES */
+   -2,  /* (340) window_clause ::= WINDOW windowdefn_list */
+   -2,  /* (341) filter_over ::= filter_clause over_clause */
+   -1,  /* (342) filter_over ::= over_clause */
+   -1,  /* (343) filter_over ::= filter_clause */
+   -4,  /* (344) over_clause ::= OVER LP window RP */
+   -2,  /* (345) over_clause ::= OVER nm */
+   -5,  /* (346) filter_clause ::= FILTER LP WHERE expr RP */
+   -1,  /* (347) term ::= QNUMBER */
+   -1,  /* (348) input ::= cmdlist */
+   -2,  /* (349) cmdlist ::= cmdlist ecmd */
+   -1,  /* (350) cmdlist ::= ecmd */
+   -1,  /* (351) ecmd ::= SEMI */
+   -2,  /* (352) ecmd ::= cmdx SEMI */
+   -3,  /* (353) ecmd ::= explain cmdx SEMI */
+    0,  /* (354) trans_opt ::= */
+   -1,  /* (355) trans_opt ::= TRANSACTION */
+   -2,  /* (356) trans_opt ::= TRANSACTION nm */
+   -1,  /* (357) savepoint_opt ::= SAVEPOINT */
+    0,  /* (358) savepoint_opt ::= */
+   -2,  /* (359) cmd ::= create_table create_table_args */
+   -1,  /* (360) table_option_set ::= table_option */
+   -4,  /* (361) columnlist ::= columnlist COMMA columnname carglist */
+   -2,  /* (362) columnlist ::= columnname carglist */
+   -1,  /* (363) nm ::= ID|INDEXED|JOIN_KW */
+   -1,  /* (364) nm ::= STRING */
+   -1,  /* (365) typetoken ::= typename */
+   -1,  /* (366) typename ::= ID|STRING */
+   -1,  /* (367) signed ::= plus_num */
+   -1,  /* (368) signed ::= minus_num */
+   -2,  /* (369) carglist ::= carglist ccons */
+    0,  /* (370) carglist ::= */
+   -2,  /* (371) ccons ::= NULL onconf */
+   -4,  /* (372) ccons ::= GENERATED ALWAYS AS generated */
+   -2,  /* (373) ccons ::= AS generated */
+   -2,  /* (374) conslist_opt ::= COMMA conslist */
+   -3,  /* (375) conslist ::= conslist tconscomma tcons */
+   -1,  /* (376) conslist ::= tcons */
+    0,  /* (377) tconscomma ::= */
+   -1,  /* (378) defer_subclause_opt ::= defer_subclause */
+   -1,  /* (379) resolvetype ::= raisetype */
+   -1,  /* (380) selectnowith ::= oneselect */
+   -1,  /* (381) oneselect ::= values */
+   -2,  /* (382) sclp ::= selcollist COMMA */
+   -1,  /* (383) as ::= ID|STRING */
+   -1,  /* (384) indexed_opt ::= indexed_by */
+    0,  /* (385) returning ::= */
+   -1,  /* (386) expr ::= term */
+   -1,  /* (387) likeop ::= LIKE_KW|MATCH */
+   -1,  /* (388) case_operand ::= expr */
+   -1,  /* (389) exprlist ::= nexprlist */
+   -1,  /* (390) nmnum ::= plus_num */
+   -1,  /* (391) nmnum ::= nm */
+   -1,  /* (392) nmnum ::= ON */
+   -1,  /* (393) nmnum ::= DELETE */
+   -1,  /* (394) nmnum ::= DEFAULT */
+   -1,  /* (395) plus_num ::= INTEGER|FLOAT */
+    0,  /* (396) foreach_clause ::= */
+   -3,  /* (397) foreach_clause ::= FOR EACH ROW */
+    0,  /* (398) tridxby ::= */
+   -1,  /* (399) database_kw_opt ::= DATABASE */
+    0,  /* (400) database_kw_opt ::= */
+    0,  /* (401) kwcolumn_opt ::= */
+   -1,  /* (402) kwcolumn_opt ::= COLUMNKW */
+   -1,  /* (403) vtabarglist ::= vtabarg */
+   -3,  /* (404) vtabarglist ::= vtabarglist COMMA vtabarg */
+   -2,  /* (405) vtabarg ::= vtabarg vtabargtoken */
+    0,  /* (406) anylist ::= */
+   -4,  /* (407) anylist ::= anylist LP anylist RP */
+   -2,  /* (408) anylist ::= anylist ANY */
+    0,  /* (409) with ::= */
+   -1,  /* (410) windowdefn_list ::= windowdefn */
+   -1,  /* (411) window ::= frame_opt */
 };
 
 static void yy_accept(yyParser*);  /* Forward Declaration */
@@ -181210,16 +182514,16 @@ static YYACTIONTYPE yy_reduce(
 { sqlite3FinishCoding(pParse); }
         break;
       case 3: /* cmd ::= BEGIN transtype trans_opt */
-{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy502);}
+{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy144);}
         break;
       case 4: /* transtype ::= */
-{yymsp[1].minor.yy502 = TK_DEFERRED;}
+{yymsp[1].minor.yy144 = TK_DEFERRED;}
         break;
       case 5: /* transtype ::= DEFERRED */
       case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
       case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
-      case 324: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==324);
-{yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-X*/}
+      case 328: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==328);
+{yymsp[0].minor.yy144 = yymsp[0].major; /*A-overwrites-X*/}
         break;
       case 8: /* cmd ::= COMMIT|END trans_opt */
       case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
@@ -181242,7 +182546,7 @@ static YYACTIONTYPE yy_reduce(
         break;
       case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
 {
-   sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy502,0,0,yymsp[-2].minor.yy502);
+   sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy144,0,0,yymsp[-2].minor.yy144);
 }
         break;
       case 14: /* createkw ::= CREATE */
@@ -181258,38 +182562,38 @@ static YYACTIONTYPE yy_reduce(
       case 81: /* ifexists ::= */ yytestcase(yyruleno==81);
       case 100: /* distinct ::= */ yytestcase(yyruleno==100);
       case 246: /* collate ::= */ yytestcase(yyruleno==246);
-{yymsp[1].minor.yy502 = 0;}
+{yymsp[1].minor.yy144 = 0;}
         break;
       case 16: /* ifnotexists ::= IF NOT EXISTS */
-{yymsp[-2].minor.yy502 = 1;}
+{yymsp[-2].minor.yy144 = 1;}
         break;
       case 17: /* temp ::= TEMP */
-{yymsp[0].minor.yy502 = pParse->db->init.busy==0;}
+{yymsp[0].minor.yy144 = pParse->db->init.busy==0;}
         break;
       case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_option_set */
 {
-  sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy9,0);
+  sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy391,0);
 }
         break;
       case 20: /* create_table_args ::= AS select */
 {
-  sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy637);
-  sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy637);
+  sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy555);
+  sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy555);
 }
         break;
       case 21: /* table_option_set ::= */
-{yymsp[1].minor.yy9 = 0;}
+{yymsp[1].minor.yy391 = 0;}
         break;
       case 22: /* table_option_set ::= table_option_set COMMA table_option */
-{yylhsminor.yy9 = yymsp[-2].minor.yy9|yymsp[0].minor.yy9;}
-  yymsp[-2].minor.yy9 = yylhsminor.yy9;
+{yylhsminor.yy391 = yymsp[-2].minor.yy391|yymsp[0].minor.yy391;}
+  yymsp[-2].minor.yy391 = yylhsminor.yy391;
         break;
       case 23: /* table_option ::= WITHOUT nm */
 {
   if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
-    yymsp[-1].minor.yy9 = TF_WithoutRowid | TF_NoVisibleRowid;
+    yymsp[-1].minor.yy391 = TF_WithoutRowid | TF_NoVisibleRowid;
   }else{
-    yymsp[-1].minor.yy9 = 0;
+    yymsp[-1].minor.yy391 = 0;
     sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
   }
 }
@@ -181297,13 +182601,13 @@ static YYACTIONTYPE yy_reduce(
       case 24: /* table_option ::= nm */
 {
   if( yymsp[0].minor.yy0.n==6 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"strict",6)==0 ){
-    yylhsminor.yy9 = TF_Strict;
+    yylhsminor.yy391 = TF_Strict;
   }else{
-    yylhsminor.yy9 = 0;
+    yylhsminor.yy391 = 0;
     sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
   }
 }
-  yymsp[0].minor.yy9 = yylhsminor.yy9;
+  yymsp[0].minor.yy391 = yylhsminor.yy391;
         break;
       case 25: /* columnname ::= nm typetoken */
 {sqlite3AddColumn(pParse,yymsp[-1].minor.yy0,yymsp[0].minor.yy0);}
@@ -181329,7 +182633,7 @@ static YYACTIONTYPE yy_reduce(
       case 30: /* scanpt ::= */
 {
   assert( yyLookahead!=YYNOCODE );
-  yymsp[1].minor.yy342 = yyLookaheadToken.z;
+  yymsp[1].minor.yy168 = yyLookaheadToken.z;
 }
         break;
       case 31: /* scantok ::= */
@@ -181343,17 +182647,17 @@ static YYACTIONTYPE yy_reduce(
 {ASSERT_IS_CREATE; pParse->u1.cr.constraintName = yymsp[0].minor.yy0;}
         break;
       case 33: /* ccons ::= DEFAULT scantok term */
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy590,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy454,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
         break;
       case 34: /* ccons ::= DEFAULT LP expr RP */
-{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy590,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
+{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy454,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
         break;
       case 35: /* ccons ::= DEFAULT PLUS scantok term */
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy590,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy454,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
         break;
       case 36: /* ccons ::= DEFAULT MINUS scantok term */
 {
-  Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy590, 0);
+  Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy454, 0);
   sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
 }
         break;
@@ -181368,133 +182672,133 @@ static YYACTIONTYPE yy_reduce(
 }
         break;
       case 38: /* ccons ::= NOT NULL onconf */
-{sqlite3AddNotNull(pParse, yymsp[0].minor.yy502);}
+{sqlite3AddNotNull(pParse, yymsp[0].minor.yy144);}
         break;
       case 39: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
-{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy502,yymsp[0].minor.yy502,yymsp[-2].minor.yy502);}
+{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy144,yymsp[0].minor.yy144,yymsp[-2].minor.yy144);}
         break;
       case 40: /* ccons ::= UNIQUE onconf */
-{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy502,0,0,0,0,
+{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy144,0,0,0,0,
                                    SQLITE_IDXTYPE_UNIQUE);}
         break;
       case 41: /* ccons ::= CHECK LP expr RP */
-{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy590,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
+{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy454,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
         break;
       case 42: /* ccons ::= REFERENCES nm eidlist_opt refargs */
-{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy402,yymsp[0].minor.yy502);}
+{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy14,yymsp[0].minor.yy144);}
         break;
       case 43: /* ccons ::= defer_subclause */
-{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy502);}
+{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy144);}
         break;
       case 44: /* ccons ::= COLLATE ID|STRING */
 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
         break;
       case 45: /* generated ::= LP expr RP */
-{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy590,0);}
+{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy454,0);}
         break;
       case 46: /* generated ::= LP expr RP ID */
-{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy590,&yymsp[0].minor.yy0);}
+{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy454,&yymsp[0].minor.yy0);}
         break;
       case 48: /* autoinc ::= AUTOINCR */
-{yymsp[0].minor.yy502 = 1;}
+{yymsp[0].minor.yy144 = 1;}
         break;
       case 49: /* refargs ::= */
-{ yymsp[1].minor.yy502 = OE_None*0x0101; /* EV: R-19803-45884 */}
+{ yymsp[1].minor.yy144 = OE_None*0x0101; /* EV: R-19803-45884 */}
         break;
       case 50: /* refargs ::= refargs refarg */
-{ yymsp[-1].minor.yy502 = (yymsp[-1].minor.yy502 & ~yymsp[0].minor.yy481.mask) | yymsp[0].minor.yy481.value; }
+{ yymsp[-1].minor.yy144 = (yymsp[-1].minor.yy144 & ~yymsp[0].minor.yy383.mask) | yymsp[0].minor.yy383.value; }
         break;
       case 51: /* refarg ::= MATCH nm */
-{ yymsp[-1].minor.yy481.value = 0;     yymsp[-1].minor.yy481.mask = 0x000000; }
+{ yymsp[-1].minor.yy383.value = 0;     yymsp[-1].minor.yy383.mask = 0x000000; }
         break;
       case 52: /* refarg ::= ON INSERT refact */
-{ yymsp[-2].minor.yy481.value = 0;     yymsp[-2].minor.yy481.mask = 0x000000; }
+{ yymsp[-2].minor.yy383.value = 0;     yymsp[-2].minor.yy383.mask = 0x000000; }
         break;
       case 53: /* refarg ::= ON DELETE refact */
-{ yymsp[-2].minor.yy481.value = yymsp[0].minor.yy502;     yymsp[-2].minor.yy481.mask = 0x0000ff; }
+{ yymsp[-2].minor.yy383.value = yymsp[0].minor.yy144;     yymsp[-2].minor.yy383.mask = 0x0000ff; }
         break;
       case 54: /* refarg ::= ON UPDATE refact */
-{ yymsp[-2].minor.yy481.value = yymsp[0].minor.yy502<<8;  yymsp[-2].minor.yy481.mask = 0x00ff00; }
+{ yymsp[-2].minor.yy383.value = yymsp[0].minor.yy144<<8;  yymsp[-2].minor.yy383.mask = 0x00ff00; }
         break;
       case 55: /* refact ::= SET NULL */
-{ yymsp[-1].minor.yy502 = OE_SetNull;  /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy144 = OE_SetNull;  /* EV: R-33326-45252 */}
         break;
       case 56: /* refact ::= SET DEFAULT */
-{ yymsp[-1].minor.yy502 = OE_SetDflt;  /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy144 = OE_SetDflt;  /* EV: R-33326-45252 */}
         break;
       case 57: /* refact ::= CASCADE */
-{ yymsp[0].minor.yy502 = OE_Cascade;  /* EV: R-33326-45252 */}
+{ yymsp[0].minor.yy144 = OE_Cascade;  /* EV: R-33326-45252 */}
         break;
       case 58: /* refact ::= RESTRICT */
-{ yymsp[0].minor.yy502 = OE_Restrict; /* EV: R-33326-45252 */}
+{ yymsp[0].minor.yy144 = OE_Restrict; /* EV: R-33326-45252 */}
         break;
       case 59: /* refact ::= NO ACTION */
-{ yymsp[-1].minor.yy502 = OE_None;     /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy144 = OE_None;     /* EV: R-33326-45252 */}
         break;
       case 60: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
-{yymsp[-2].minor.yy502 = 0;}
+{yymsp[-2].minor.yy144 = 0;}
         break;
       case 61: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
       case 76: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==76);
       case 173: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==173);
-{yymsp[-1].minor.yy502 = yymsp[0].minor.yy502;}
+{yymsp[-1].minor.yy144 = yymsp[0].minor.yy144;}
         break;
       case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
       case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
       case 219: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==219);
       case 222: /* in_op ::= NOT IN */ yytestcase(yyruleno==222);
       case 247: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==247);
-{yymsp[-1].minor.yy502 = 1;}
+{yymsp[-1].minor.yy144 = 1;}
         break;
       case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
-{yymsp[-1].minor.yy502 = 0;}
+{yymsp[-1].minor.yy144 = 0;}
         break;
       case 66: /* tconscomma ::= COMMA */
 {ASSERT_IS_CREATE; pParse->u1.cr.constraintName.n = 0;}
         break;
       case 68: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
-{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy402,yymsp[0].minor.yy502,yymsp[-2].minor.yy502,0);}
+{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy14,yymsp[0].minor.yy144,yymsp[-2].minor.yy144,0);}
         break;
       case 69: /* tcons ::= UNIQUE LP sortlist RP onconf */
-{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy402,yymsp[0].minor.yy502,0,0,0,0,
+{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy14,yymsp[0].minor.yy144,0,0,0,0,
                                        SQLITE_IDXTYPE_UNIQUE);}
         break;
       case 70: /* tcons ::= CHECK LP expr RP onconf */
-{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy590,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
+{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy454,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
         break;
       case 71: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
 {
-    sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy402, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy402, yymsp[-1].minor.yy502);
-    sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy502);
+    sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy14, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy14, yymsp[-1].minor.yy144);
+    sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy144);
 }
         break;
       case 73: /* onconf ::= */
       case 75: /* orconf ::= */ yytestcase(yyruleno==75);
-{yymsp[1].minor.yy502 = OE_Default;}
+{yymsp[1].minor.yy144 = OE_Default;}
         break;
       case 74: /* onconf ::= ON CONFLICT resolvetype */
-{yymsp[-2].minor.yy502 = yymsp[0].minor.yy502;}
+{yymsp[-2].minor.yy144 = yymsp[0].minor.yy144;}
         break;
       case 77: /* resolvetype ::= IGNORE */
-{yymsp[0].minor.yy502 = OE_Ignore;}
+{yymsp[0].minor.yy144 = OE_Ignore;}
         break;
       case 78: /* resolvetype ::= REPLACE */
       case 174: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==174);
-{yymsp[0].minor.yy502 = OE_Replace;}
+{yymsp[0].minor.yy144 = OE_Replace;}
         break;
       case 79: /* cmd ::= DROP TABLE ifexists fullname */
 {
-  sqlite3DropTable(pParse, yymsp[0].minor.yy563, 0, yymsp[-1].minor.yy502);
+  sqlite3DropTable(pParse, yymsp[0].minor.yy203, 0, yymsp[-1].minor.yy144);
 }
         break;
       case 82: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
 {
-  sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy402, yymsp[0].minor.yy637, yymsp[-7].minor.yy502, yymsp[-5].minor.yy502);
+  sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy14, yymsp[0].minor.yy555, yymsp[-7].minor.yy144, yymsp[-5].minor.yy144);
 }
         break;
       case 83: /* cmd ::= DROP VIEW ifexists fullname */
 {
-  sqlite3DropTable(pParse, yymsp[0].minor.yy563, 1, yymsp[-1].minor.yy502);
+  sqlite3DropTable(pParse, yymsp[0].minor.yy203, 1, yymsp[-1].minor.yy144);
 }
         break;
       case 84: /* cmd ::= select */
@@ -181503,20 +182807,20 @@ static YYACTIONTYPE yy_reduce(
   if( (pParse->db->mDbFlags & DBFLAG_EncodingFixed)!=0
    || sqlite3ReadSchema(pParse)==SQLITE_OK
   ){
-    sqlite3Select(pParse, yymsp[0].minor.yy637, &dest);
+    sqlite3Select(pParse, yymsp[0].minor.yy555, &dest);
   }
-  sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy637);
+  sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy555);
 }
         break;
       case 85: /* select ::= WITH wqlist selectnowith */
-{yymsp[-2].minor.yy637 = attachWithToSelect(pParse,yymsp[0].minor.yy637,yymsp[-1].minor.yy125);}
+{yymsp[-2].minor.yy555 = attachWithToSelect(pParse,yymsp[0].minor.yy555,yymsp[-1].minor.yy59);}
         break;
       case 86: /* select ::= WITH RECURSIVE wqlist selectnowith */
-{yymsp[-3].minor.yy637 = attachWithToSelect(pParse,yymsp[0].minor.yy637,yymsp[-1].minor.yy125);}
+{yymsp[-3].minor.yy555 = attachWithToSelect(pParse,yymsp[0].minor.yy555,yymsp[-1].minor.yy59);}
         break;
       case 87: /* select ::= selectnowith */
 {
-  Select *p = yymsp[0].minor.yy637;
+  Select *p = yymsp[0].minor.yy555;
   if( p ){
     parserDoubleLinkSelect(pParse, p);
   }
@@ -181524,8 +182828,8 @@ static YYACTIONTYPE yy_reduce(
         break;
       case 88: /* selectnowith ::= selectnowith multiselect_op oneselect */
 {
-  Select *pRhs = yymsp[0].minor.yy637;
-  Select *pLhs = yymsp[-2].minor.yy637;
+  Select *pRhs = yymsp[0].minor.yy555;
+  Select *pLhs = yymsp[-2].minor.yy555;
   if( pRhs && pRhs->pPrior ){
     SrcList *pFrom;
     Token x;
@@ -181535,60 +182839,60 @@ static YYACTIONTYPE yy_reduce(
     pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
   }
   if( pRhs ){
-    pRhs->op = (u8)yymsp[-1].minor.yy502;
+    pRhs->op = (u8)yymsp[-1].minor.yy144;
     pRhs->pPrior = pLhs;
     if( ALWAYS(pLhs) ) pLhs->selFlags &= ~(u32)SF_MultiValue;
     pRhs->selFlags &= ~(u32)SF_MultiValue;
-    if( yymsp[-1].minor.yy502!=TK_ALL ) pParse->hasCompound = 1;
+    if( yymsp[-1].minor.yy144!=TK_ALL ) pParse->hasCompound = 1;
   }else{
     sqlite3SelectDelete(pParse->db, pLhs);
   }
-  yymsp[-2].minor.yy637 = pRhs;
+  yymsp[-2].minor.yy555 = pRhs;
 }
         break;
       case 89: /* multiselect_op ::= UNION */
       case 91: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==91);
-{yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-OP*/}
+{yymsp[0].minor.yy144 = yymsp[0].major; /*A-overwrites-OP*/}
         break;
       case 90: /* multiselect_op ::= UNION ALL */
-{yymsp[-1].minor.yy502 = TK_ALL;}
+{yymsp[-1].minor.yy144 = TK_ALL;}
         break;
       case 92: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
 {
-  yymsp[-8].minor.yy637 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy402,yymsp[-5].minor.yy563,yymsp[-4].minor.yy590,yymsp[-3].minor.yy402,yymsp[-2].minor.yy590,yymsp[-1].minor.yy402,yymsp[-7].minor.yy502,yymsp[0].minor.yy590);
+  yymsp[-8].minor.yy555 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy14,yymsp[-5].minor.yy203,yymsp[-4].minor.yy454,yymsp[-3].minor.yy14,yymsp[-2].minor.yy454,yymsp[-1].minor.yy14,yymsp[-7].minor.yy144,yymsp[0].minor.yy454);
 }
         break;
       case 93: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
 {
-  yymsp[-9].minor.yy637 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy402,yymsp[-6].minor.yy563,yymsp[-5].minor.yy590,yymsp[-4].minor.yy402,yymsp[-3].minor.yy590,yymsp[-1].minor.yy402,yymsp[-8].minor.yy502,yymsp[0].minor.yy590);
-  if( yymsp[-9].minor.yy637 ){
-    yymsp[-9].minor.yy637->pWinDefn = yymsp[-2].minor.yy483;
+  yymsp[-9].minor.yy555 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy14,yymsp[-6].minor.yy203,yymsp[-5].minor.yy454,yymsp[-4].minor.yy14,yymsp[-3].minor.yy454,yymsp[-1].minor.yy14,yymsp[-8].minor.yy144,yymsp[0].minor.yy454);
+  if( yymsp[-9].minor.yy555 ){
+    yymsp[-9].minor.yy555->pWinDefn = yymsp[-2].minor.yy211;
   }else{
-    sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy483);
+    sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy211);
   }
 }
         break;
       case 94: /* values ::= VALUES LP nexprlist RP */
 {
-  yymsp[-3].minor.yy637 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy402,0,0,0,0,0,SF_Values,0);
+  yymsp[-3].minor.yy555 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy14,0,0,0,0,0,SF_Values,0);
 }
         break;
       case 95: /* oneselect ::= mvalues */
 {
-  sqlite3MultiValuesEnd(pParse, yymsp[0].minor.yy637);
+  sqlite3MultiValuesEnd(pParse, yymsp[0].minor.yy555);
 }
         break;
       case 96: /* mvalues ::= values COMMA LP nexprlist RP */
       case 97: /* mvalues ::= mvalues COMMA LP nexprlist RP */ yytestcase(yyruleno==97);
 {
-  yymsp[-4].minor.yy637 = sqlite3MultiValues(pParse, yymsp[-4].minor.yy637, yymsp[-1].minor.yy402);
+  yymsp[-4].minor.yy555 = sqlite3MultiValues(pParse, yymsp[-4].minor.yy555, yymsp[-1].minor.yy14);
 }
         break;
       case 98: /* distinct ::= DISTINCT */
-{yymsp[0].minor.yy502 = SF_Distinct;}
+{yymsp[0].minor.yy144 = SF_Distinct;}
         break;
       case 99: /* distinct ::= ALL */
-{yymsp[0].minor.yy502 = SF_All;}
+{yymsp[0].minor.yy144 = SF_All;}
         break;
       case 101: /* sclp ::= */
       case 134: /* orderby_opt ::= */ yytestcase(yyruleno==134);
@@ -181596,20 +182900,20 @@ static YYACTIONTYPE yy_reduce(
       case 234: /* exprlist ::= */ yytestcase(yyruleno==234);
       case 237: /* paren_exprlist ::= */ yytestcase(yyruleno==237);
       case 242: /* eidlist_opt ::= */ yytestcase(yyruleno==242);
-{yymsp[1].minor.yy402 = 0;}
+{yymsp[1].minor.yy14 = 0;}
         break;
       case 102: /* selcollist ::= sclp scanpt expr scanpt as */
 {
-   yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy402, yymsp[-2].minor.yy590);
-   if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy402, &yymsp[0].minor.yy0, 1);
-   sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy402,yymsp[-3].minor.yy342,yymsp[-1].minor.yy342);
+   yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy14, yymsp[-2].minor.yy454);
+   if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy14, &yymsp[0].minor.yy0, 1);
+   sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy14,yymsp[-3].minor.yy168,yymsp[-1].minor.yy168);
 }
         break;
       case 103: /* selcollist ::= sclp scanpt STAR */
 {
   Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
   sqlite3ExprSetErrorOffset(p, (int)(yymsp[0].minor.yy0.z - pParse->zTail));
-  yymsp[-2].minor.yy402 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy402, p);
+  yymsp[-2].minor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy14, p);
 }
         break;
       case 104: /* selcollist ::= sclp scanpt nm DOT STAR */
@@ -181619,7 +182923,7 @@ static YYACTIONTYPE yy_reduce(
   sqlite3ExprSetErrorOffset(pRight, (int)(yymsp[0].minor.yy0.z - pParse->zTail));
   pLeft = tokenExpr(pParse, TK_ID, yymsp[-2].minor.yy0);
   pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
-  yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy402, pDot);
+  yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, pDot);
 }
         break;
       case 105: /* as ::= AS nm */
@@ -181630,50 +182934,50 @@ static YYACTIONTYPE yy_reduce(
         break;
       case 107: /* from ::= */
       case 110: /* stl_prefix ::= */ yytestcase(yyruleno==110);
-{yymsp[1].minor.yy563 = 0;}
+{yymsp[1].minor.yy203 = 0;}
         break;
       case 108: /* from ::= FROM seltablist */
 {
-  yymsp[-1].minor.yy563 = yymsp[0].minor.yy563;
-  sqlite3SrcListShiftJoinType(pParse,yymsp[-1].minor.yy563);
+  yymsp[-1].minor.yy203 = yymsp[0].minor.yy203;
+  sqlite3SrcListShiftJoinType(pParse,yymsp[-1].minor.yy203);
 }
         break;
       case 109: /* stl_prefix ::= seltablist joinop */
 {
-   if( ALWAYS(yymsp[-1].minor.yy563 && yymsp[-1].minor.yy563->nSrc>0) ) yymsp[-1].minor.yy563->a[yymsp[-1].minor.yy563->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy502;
+   if( ALWAYS(yymsp[-1].minor.yy203 && yymsp[-1].minor.yy203->nSrc>0) ) yymsp[-1].minor.yy203->a[yymsp[-1].minor.yy203->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy144;
 }
         break;
       case 111: /* seltablist ::= stl_prefix nm dbnm as on_using */
 {
-  yymsp[-4].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-4].minor.yy563,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy421);
+  yymsp[-4].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-4].minor.yy203,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy269);
 }
         break;
       case 112: /* seltablist ::= stl_prefix nm dbnm as indexed_by on_using */
 {
-  yymsp[-5].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy563,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,0,&yymsp[0].minor.yy421);
-  sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy563, &yymsp[-1].minor.yy0);
+  yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,0,&yymsp[0].minor.yy269);
+  sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy203, &yymsp[-1].minor.yy0);
 }
         break;
       case 113: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_using */
 {
-  yymsp[-7].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-7].minor.yy563,&yymsp[-6].minor.yy0,&yymsp[-5].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy421);
-  sqlite3SrcListFuncArgs(pParse, yymsp[-7].minor.yy563, yymsp[-3].minor.yy402);
+  yymsp[-7].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-7].minor.yy203,&yymsp[-6].minor.yy0,&yymsp[-5].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy269);
+  sqlite3SrcListFuncArgs(pParse, yymsp[-7].minor.yy203, yymsp[-3].minor.yy14);
 }
         break;
       case 114: /* seltablist ::= stl_prefix LP select RP as on_using */
 {
-    yymsp[-5].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy563,0,0,&yymsp[-1].minor.yy0,yymsp[-3].minor.yy637,&yymsp[0].minor.yy421);
+    yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,0,0,&yymsp[-1].minor.yy0,yymsp[-3].minor.yy555,&yymsp[0].minor.yy269);
   }
         break;
       case 115: /* seltablist ::= stl_prefix LP seltablist RP as on_using */
 {
-    if( yymsp[-5].minor.yy563==0 && yymsp[-1].minor.yy0.n==0 && yymsp[0].minor.yy421.pOn==0 && yymsp[0].minor.yy421.pUsing==0 ){
-      yymsp[-5].minor.yy563 = yymsp[-3].minor.yy563;
-    }else if( ALWAYS(yymsp[-3].minor.yy563!=0) && yymsp[-3].minor.yy563->nSrc==1 ){
-      yymsp[-5].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy563,0,0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy421);
-      if( yymsp[-5].minor.yy563 ){
-        SrcItem *pNew = &yymsp[-5].minor.yy563->a[yymsp[-5].minor.yy563->nSrc-1];
-        SrcItem *pOld = yymsp[-3].minor.yy563->a;
+    if( yymsp[-5].minor.yy203==0 && yymsp[-1].minor.yy0.n==0 && yymsp[0].minor.yy269.pOn==0 && yymsp[0].minor.yy269.pUsing==0 ){
+      yymsp[-5].minor.yy203 = yymsp[-3].minor.yy203;
+    }else if( ALWAYS(yymsp[-3].minor.yy203!=0) && yymsp[-3].minor.yy203->nSrc==1 ){
+      yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,0,0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy269);
+      if( yymsp[-5].minor.yy203 ){
+        SrcItem *pNew = &yymsp[-5].minor.yy203->a[yymsp[-5].minor.yy203->nSrc-1];
+        SrcItem *pOld = yymsp[-3].minor.yy203->a;
         assert( pOld->fg.fixedSchema==0 );
         pNew->zName = pOld->zName;
         assert( pOld->fg.fixedSchema==0 );
@@ -181698,12 +183002,12 @@ static YYACTIONTYPE yy_reduce(
         }
         pOld->zName = 0;
       }
-      sqlite3SrcListDelete(pParse->db, yymsp[-3].minor.yy563);
+      sqlite3SrcListDelete(pParse->db, yymsp[-3].minor.yy203);
     }else{
       Select *pSubquery;
-      sqlite3SrcListShiftJoinType(pParse,yymsp[-3].minor.yy563);
-      pSubquery = sqlite3SelectNew(pParse,0,yymsp[-3].minor.yy563,0,0,0,0,SF_NestedFrom,0);
-      yymsp[-5].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy563,0,0,&yymsp[-1].minor.yy0,pSubquery,&yymsp[0].minor.yy421);
+      sqlite3SrcListShiftJoinType(pParse,yymsp[-3].minor.yy203);
+      pSubquery = sqlite3SelectNew(pParse,0,yymsp[-3].minor.yy203,0,0,0,0,SF_NestedFrom,0);
+      yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,0,0,&yymsp[-1].minor.yy0,pSubquery,&yymsp[0].minor.yy269);
     }
   }
         break;
@@ -181712,57 +183016,67 @@ static YYACTIONTYPE yy_reduce(
 {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
         break;
       case 118: /* fullname ::= nm */
+      case 120: /* xfullname ::= nm */ yytestcase(yyruleno==120);
 {
-  yylhsminor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
-  if( IN_RENAME_OBJECT && yylhsminor.yy563 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy563->a[0].zName, &yymsp[0].minor.yy0);
+  yylhsminor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
+  if( IN_RENAME_OBJECT && yylhsminor.yy203 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy203->a[0].zName, &yymsp[0].minor.yy0);
 }
-  yymsp[0].minor.yy563 = yylhsminor.yy563;
+  yymsp[0].minor.yy203 = yylhsminor.yy203;
         break;
       case 119: /* fullname ::= nm DOT nm */
+      case 121: /* xfullname ::= nm DOT nm */ yytestcase(yyruleno==121);
 {
-  yylhsminor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
-  if( IN_RENAME_OBJECT && yylhsminor.yy563 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy563->a[0].zName, &yymsp[0].minor.yy0);
+  yylhsminor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
+  if( IN_RENAME_OBJECT && yylhsminor.yy203 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy203->a[0].zName, &yymsp[0].minor.yy0);
 }
-  yymsp[-2].minor.yy563 = yylhsminor.yy563;
-        break;
-      case 120: /* xfullname ::= nm */
-{yymsp[0].minor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
+  yymsp[-2].minor.yy203 = yylhsminor.yy203;
         break;
-      case 121: /* xfullname ::= nm DOT nm */
-{yymsp[-2].minor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
-        break;
-      case 122: /* xfullname ::= nm DOT nm AS nm */
+      case 122: /* xfullname ::= nm AS nm */
 {
-   yymsp[-4].minor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
-   if( yymsp[-4].minor.yy563 ) yymsp[-4].minor.yy563->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
+  yylhsminor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0);
+  if( yylhsminor.yy203 ){
+    if( IN_RENAME_OBJECT ){
+      sqlite3RenameTokenMap(pParse, yylhsminor.yy203->a[0].zName, &yymsp[-2].minor.yy0);
+    }else{
+      yylhsminor.yy203->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
+    }
+  }
 }
+  yymsp[-2].minor.yy203 = yylhsminor.yy203;
         break;
-      case 123: /* xfullname ::= nm AS nm */
+      case 123: /* xfullname ::= nm DOT nm AS nm */
 {
-   yymsp[-2].minor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
-   if( yymsp[-2].minor.yy563 ) yymsp[-2].minor.yy563->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
+  yylhsminor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0);
+  if( yylhsminor.yy203 ){
+    if( IN_RENAME_OBJECT ){
+      sqlite3RenameTokenMap(pParse, yylhsminor.yy203->a[0].zName, &yymsp[-2].minor.yy0);
+    }else{
+      yylhsminor.yy203->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
+    }
+  }
 }
+  yymsp[-4].minor.yy203 = yylhsminor.yy203;
         break;
       case 124: /* joinop ::= COMMA|JOIN */
-{ yymsp[0].minor.yy502 = JT_INNER; }
+{ yymsp[0].minor.yy144 = JT_INNER; }
         break;
       case 125: /* joinop ::= JOIN_KW JOIN */
-{yymsp[-1].minor.yy502 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0);  /*X-overwrites-A*/}
+{yymsp[-1].minor.yy144 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0);  /*X-overwrites-A*/}
         break;
       case 126: /* joinop ::= JOIN_KW nm JOIN */
-{yymsp[-2].minor.yy502 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
+{yymsp[-2].minor.yy144 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
         break;
       case 127: /* joinop ::= JOIN_KW nm nm JOIN */
-{yymsp[-3].minor.yy502 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
+{yymsp[-3].minor.yy144 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
         break;
       case 128: /* on_using ::= ON expr */
-{yymsp[-1].minor.yy421.pOn = yymsp[0].minor.yy590; yymsp[-1].minor.yy421.pUsing = 0;}
+{yymsp[-1].minor.yy269.pOn = yymsp[0].minor.yy454; yymsp[-1].minor.yy269.pUsing = 0;}
         break;
       case 129: /* on_using ::= USING LP idlist RP */
-{yymsp[-3].minor.yy421.pOn = 0; yymsp[-3].minor.yy421.pUsing = yymsp[-1].minor.yy204;}
+{yymsp[-3].minor.yy269.pOn = 0; yymsp[-3].minor.yy269.pUsing = yymsp[-1].minor.yy132;}
         break;
       case 130: /* on_using ::= */
-{yymsp[1].minor.yy421.pOn = 0; yymsp[1].minor.yy421.pUsing = 0;}
+{yymsp[1].minor.yy269.pOn = 0; yymsp[1].minor.yy269.pUsing = 0;}
         break;
       case 132: /* indexed_by ::= INDEXED BY nm */
 {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
@@ -181772,35 +183086,35 @@ static YYACTIONTYPE yy_reduce(
         break;
       case 135: /* orderby_opt ::= ORDER BY sortlist */
       case 145: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==145);
-{yymsp[-2].minor.yy402 = yymsp[0].minor.yy402;}
+{yymsp[-2].minor.yy14 = yymsp[0].minor.yy14;}
         break;
       case 136: /* sortlist ::= sortlist COMMA expr sortorder nulls */
 {
-  yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy402,yymsp[-2].minor.yy590);
-  sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy402,yymsp[-1].minor.yy502,yymsp[0].minor.yy502);
+  yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14,yymsp[-2].minor.yy454);
+  sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy14,yymsp[-1].minor.yy144,yymsp[0].minor.yy144);
 }
         break;
       case 137: /* sortlist ::= expr sortorder nulls */
 {
-  yymsp[-2].minor.yy402 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy590); /*A-overwrites-Y*/
-  sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy402,yymsp[-1].minor.yy502,yymsp[0].minor.yy502);
+  yymsp[-2].minor.yy14 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy454); /*A-overwrites-Y*/
+  sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy14,yymsp[-1].minor.yy144,yymsp[0].minor.yy144);
 }
         break;
       case 138: /* sortorder ::= ASC */
-{yymsp[0].minor.yy502 = SQLITE_SO_ASC;}
+{yymsp[0].minor.yy144 = SQLITE_SO_ASC;}
         break;
       case 139: /* sortorder ::= DESC */
-{yymsp[0].minor.yy502 = SQLITE_SO_DESC;}
+{yymsp[0].minor.yy144 = SQLITE_SO_DESC;}
         break;
       case 140: /* sortorder ::= */
       case 143: /* nulls ::= */ yytestcase(yyruleno==143);
-{yymsp[1].minor.yy502 = SQLITE_SO_UNDEFINED;}
+{yymsp[1].minor.yy144 = SQLITE_SO_UNDEFINED;}
         break;
       case 141: /* nulls ::= NULLS FIRST */
-{yymsp[-1].minor.yy502 = SQLITE_SO_ASC;}
+{yymsp[-1].minor.yy144 = SQLITE_SO_ASC;}
         break;
       case 142: /* nulls ::= NULLS LAST */
-{yymsp[-1].minor.yy502 = SQLITE_SO_DESC;}
+{yymsp[-1].minor.yy144 = SQLITE_SO_DESC;}
         break;
       case 146: /* having_opt ::= */
       case 148: /* limit_opt ::= */ yytestcase(yyruleno==148);
@@ -181809,42 +183123,42 @@ static YYACTIONTYPE yy_reduce(
       case 232: /* case_else ::= */ yytestcase(yyruleno==232);
       case 233: /* case_operand ::= */ yytestcase(yyruleno==233);
       case 252: /* vinto ::= */ yytestcase(yyruleno==252);
-{yymsp[1].minor.yy590 = 0;}
+{yymsp[1].minor.yy454 = 0;}
         break;
       case 147: /* having_opt ::= HAVING expr */
       case 154: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==154);
       case 156: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==156);
       case 231: /* case_else ::= ELSE expr */ yytestcase(yyruleno==231);
       case 251: /* vinto ::= INTO expr */ yytestcase(yyruleno==251);
-{yymsp[-1].minor.yy590 = yymsp[0].minor.yy590;}
+{yymsp[-1].minor.yy454 = yymsp[0].minor.yy454;}
         break;
       case 149: /* limit_opt ::= LIMIT expr */
-{yymsp[-1].minor.yy590 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy590,0);}
+{yymsp[-1].minor.yy454 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy454,0);}
         break;
       case 150: /* limit_opt ::= LIMIT expr OFFSET expr */
-{yymsp[-3].minor.yy590 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy590,yymsp[0].minor.yy590);}
+{yymsp[-3].minor.yy454 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy454,yymsp[0].minor.yy454);}
         break;
       case 151: /* limit_opt ::= LIMIT expr COMMA expr */
-{yymsp[-3].minor.yy590 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy590,yymsp[-2].minor.yy590);}
+{yymsp[-3].minor.yy454 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy454,yymsp[-2].minor.yy454);}
         break;
       case 152: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
 {
-  sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy563, &yymsp[-1].minor.yy0);
-  sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy563,yymsp[0].minor.yy590,0,0);
+  sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy203, &yymsp[-1].minor.yy0);
+  sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy203,yymsp[0].minor.yy454,0,0);
 }
         break;
       case 157: /* where_opt_ret ::= RETURNING selcollist */
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy402); yymsp[-1].minor.yy590 = 0;}
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy14); yymsp[-1].minor.yy454 = 0;}
         break;
       case 158: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy402); yymsp[-3].minor.yy590 = yymsp[-2].minor.yy590;}
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy14); yymsp[-3].minor.yy454 = yymsp[-2].minor.yy454;}
         break;
       case 159: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
 {
-  sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy563, &yymsp[-4].minor.yy0);
-  sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy402,"set list");
-  if( yymsp[-1].minor.yy563 ){
-    SrcList *pFromClause = yymsp[-1].minor.yy563;
+  sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy203, &yymsp[-4].minor.yy0);
+  sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy14,"set list");
+  if( yymsp[-1].minor.yy203 ){
+    SrcList *pFromClause = yymsp[-1].minor.yy203;
     if( pFromClause->nSrc>1 ){
       Select *pSubquery;
       Token as;
@@ -181853,90 +183167,90 @@ static YYACTIONTYPE yy_reduce(
       as.z = 0;
       pFromClause = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&as,pSubquery,0);
     }
-    yymsp[-5].minor.yy563 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy563, pFromClause);
+    yymsp[-5].minor.yy203 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy203, pFromClause);
   }
-  sqlite3Update(pParse,yymsp[-5].minor.yy563,yymsp[-2].minor.yy402,yymsp[0].minor.yy590,yymsp[-6].minor.yy502,0,0,0);
+  sqlite3Update(pParse,yymsp[-5].minor.yy203,yymsp[-2].minor.yy14,yymsp[0].minor.yy454,yymsp[-6].minor.yy144,0,0,0);
 }
         break;
       case 160: /* setlist ::= setlist COMMA nm EQ expr */
 {
-  yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy402, yymsp[0].minor.yy590);
-  sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy402, &yymsp[-2].minor.yy0, 1);
+  yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy14, yymsp[0].minor.yy454);
+  sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy14, &yymsp[-2].minor.yy0, 1);
 }
         break;
       case 161: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
 {
-  yymsp[-6].minor.yy402 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy402, yymsp[-3].minor.yy204, yymsp[0].minor.yy590);
+  yymsp[-6].minor.yy14 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy14, yymsp[-3].minor.yy132, yymsp[0].minor.yy454);
 }
         break;
       case 162: /* setlist ::= nm EQ expr */
 {
-  yylhsminor.yy402 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy590);
-  sqlite3ExprListSetName(pParse, yylhsminor.yy402, &yymsp[-2].minor.yy0, 1);
+  yylhsminor.yy14 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy454);
+  sqlite3ExprListSetName(pParse, yylhsminor.yy14, &yymsp[-2].minor.yy0, 1);
 }
-  yymsp[-2].minor.yy402 = yylhsminor.yy402;
+  yymsp[-2].minor.yy14 = yylhsminor.yy14;
         break;
       case 163: /* setlist ::= LP idlist RP EQ expr */
 {
-  yymsp[-4].minor.yy402 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy204, yymsp[0].minor.yy590);
+  yymsp[-4].minor.yy14 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy132, yymsp[0].minor.yy454);
 }
         break;
       case 164: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
 {
-  sqlite3Insert(pParse, yymsp[-3].minor.yy563, yymsp[-1].minor.yy637, yymsp[-2].minor.yy204, yymsp[-5].minor.yy502, yymsp[0].minor.yy403);
+  sqlite3Insert(pParse, yymsp[-3].minor.yy203, yymsp[-1].minor.yy555, yymsp[-2].minor.yy132, yymsp[-5].minor.yy144, yymsp[0].minor.yy122);
 }
         break;
       case 165: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
 {
-  sqlite3Insert(pParse, yymsp[-4].minor.yy563, 0, yymsp[-3].minor.yy204, yymsp[-6].minor.yy502, 0);
+  sqlite3Insert(pParse, yymsp[-4].minor.yy203, 0, yymsp[-3].minor.yy132, yymsp[-6].minor.yy144, 0);
 }
         break;
       case 166: /* upsert ::= */
-{ yymsp[1].minor.yy403 = 0; }
+{ yymsp[1].minor.yy122 = 0; }
         break;
       case 167: /* upsert ::= RETURNING selcollist */
-{ yymsp[-1].minor.yy403 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy402); }
+{ yymsp[-1].minor.yy122 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy14); }
         break;
       case 168: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
-{ yymsp[-11].minor.yy403 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy402,yymsp[-6].minor.yy590,yymsp[-2].minor.yy402,yymsp[-1].minor.yy590,yymsp[0].minor.yy403);}
+{ yymsp[-11].minor.yy122 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy14,yymsp[-6].minor.yy454,yymsp[-2].minor.yy14,yymsp[-1].minor.yy454,yymsp[0].minor.yy122);}
         break;
       case 169: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
-{ yymsp[-8].minor.yy403 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy402,yymsp[-3].minor.yy590,0,0,yymsp[0].minor.yy403); }
+{ yymsp[-8].minor.yy122 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy14,yymsp[-3].minor.yy454,0,0,yymsp[0].minor.yy122); }
         break;
       case 170: /* upsert ::= ON CONFLICT DO NOTHING returning */
-{ yymsp[-4].minor.yy403 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
+{ yymsp[-4].minor.yy122 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
         break;
       case 171: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
-{ yymsp[-7].minor.yy403 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy402,yymsp[-1].minor.yy590,0);}
+{ yymsp[-7].minor.yy122 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy14,yymsp[-1].minor.yy454,0);}
         break;
       case 172: /* returning ::= RETURNING selcollist */
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy402);}
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy14);}
         break;
       case 175: /* idlist_opt ::= */
-{yymsp[1].minor.yy204 = 0;}
+{yymsp[1].minor.yy132 = 0;}
         break;
       case 176: /* idlist_opt ::= LP idlist RP */
-{yymsp[-2].minor.yy204 = yymsp[-1].minor.yy204;}
+{yymsp[-2].minor.yy132 = yymsp[-1].minor.yy132;}
         break;
       case 177: /* idlist ::= idlist COMMA nm */
-{yymsp[-2].minor.yy204 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy204,&yymsp[0].minor.yy0);}
+{yymsp[-2].minor.yy132 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy132,&yymsp[0].minor.yy0);}
         break;
       case 178: /* idlist ::= nm */
-{yymsp[0].minor.yy204 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
+{yymsp[0].minor.yy132 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
         break;
       case 179: /* expr ::= LP expr RP */
-{yymsp[-2].minor.yy590 = yymsp[-1].minor.yy590;}
+{yymsp[-2].minor.yy454 = yymsp[-1].minor.yy454;}
         break;
       case 180: /* expr ::= ID|INDEXED|JOIN_KW */
-{yymsp[0].minor.yy590=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
+{yymsp[0].minor.yy454=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
         break;
       case 181: /* expr ::= nm DOT nm */
 {
   Expr *temp1 = tokenExpr(pParse,TK_ID,yymsp[-2].minor.yy0);
   Expr *temp2 = tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0);
-  yylhsminor.yy590 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
+  yylhsminor.yy454 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
 }
-  yymsp[-2].minor.yy590 = yylhsminor.yy590;
+  yymsp[-2].minor.yy454 = yylhsminor.yy454;
         break;
       case 182: /* expr ::= nm DOT nm DOT nm */
 {
@@ -181947,27 +183261,32 @@ static YYACTIONTYPE yy_reduce(
   if( IN_RENAME_OBJECT ){
     sqlite3RenameTokenRemap(pParse, 0, temp1);
   }
-  yylhsminor.yy590 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
+  yylhsminor.yy454 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
 }
-  yymsp[-4].minor.yy590 = yylhsminor.yy590;
+  yymsp[-4].minor.yy454 = yylhsminor.yy454;
         break;
       case 183: /* term ::= NULL|FLOAT|BLOB */
       case 184: /* term ::= STRING */ yytestcase(yyruleno==184);
-{yymsp[0].minor.yy590=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
+{yymsp[0].minor.yy454=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
         break;
       case 185: /* term ::= INTEGER */
 {
-  yylhsminor.yy590 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
-  if( yylhsminor.yy590 ) yylhsminor.yy590->w.iOfst = (int)(yymsp[0].minor.yy0.z - pParse->zTail);
+  int iValue;
+  if( sqlite3GetInt32(yymsp[0].minor.yy0.z, &iValue)==0 ){
+    yylhsminor.yy454 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 0);
+  }else{
+    yylhsminor.yy454 = sqlite3ExprInt32(pParse->db, iValue);
+  }
+  if( yylhsminor.yy454 ) yylhsminor.yy454->w.iOfst = (int)(yymsp[0].minor.yy0.z - pParse->zTail);
 }
-  yymsp[0].minor.yy590 = yylhsminor.yy590;
+  yymsp[0].minor.yy454 = yylhsminor.yy454;
         break;
       case 186: /* expr ::= VARIABLE */
 {
   if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
     u32 n = yymsp[0].minor.yy0.n;
-    yymsp[0].minor.yy590 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
-    sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy590, n);
+    yymsp[0].minor.yy454 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
+    sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy454, n);
   }else{
     /* When doing a nested parse, one can include terms in an expression
     ** that look like this:   #1 #2 ...  These terms refer to registers
@@ -181976,80 +183295,80 @@ static YYACTIONTYPE yy_reduce(
     assert( t.n>=2 );
     if( pParse->nested==0 ){
       parserSyntaxError(pParse, &t);
-      yymsp[0].minor.yy590 = 0;
+      yymsp[0].minor.yy454 = 0;
     }else{
-      yymsp[0].minor.yy590 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
-      if( yymsp[0].minor.yy590 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy590->iTable);
+      yymsp[0].minor.yy454 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
+      if( yymsp[0].minor.yy454 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy454->iTable);
     }
   }
 }
         break;
       case 187: /* expr ::= expr COLLATE ID|STRING */
 {
-  yymsp[-2].minor.yy590 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy590, &yymsp[0].minor.yy0, 1);
+  yymsp[-2].minor.yy454 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy454, &yymsp[0].minor.yy0, 1);
 }
         break;
       case 188: /* expr ::= CAST LP expr AS typetoken RP */
 {
-  yymsp[-5].minor.yy590 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
-  sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy590, yymsp[-3].minor.yy590, 0);
+  yymsp[-5].minor.yy454 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
+  sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy454, yymsp[-3].minor.yy454, 0);
 }
         break;
       case 189: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP */
 {
-  yylhsminor.yy590 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy402, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy502);
+  yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy14, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy144);
 }
-  yymsp[-4].minor.yy590 = yylhsminor.yy590;
+  yymsp[-4].minor.yy454 = yylhsminor.yy454;
         break;
       case 190: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP */
 {
-  yylhsminor.yy590 = sqlite3ExprFunction(pParse, yymsp[-4].minor.yy402, &yymsp[-7].minor.yy0, yymsp[-5].minor.yy502);
-  sqlite3ExprAddFunctionOrderBy(pParse, yylhsminor.yy590, yymsp[-1].minor.yy402);
+  yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-4].minor.yy14, &yymsp[-7].minor.yy0, yymsp[-5].minor.yy144);
+  sqlite3ExprAddFunctionOrderBy(pParse, yylhsminor.yy454, yymsp[-1].minor.yy14);
 }
-  yymsp[-7].minor.yy590 = yylhsminor.yy590;
+  yymsp[-7].minor.yy454 = yylhsminor.yy454;
         break;
       case 191: /* expr ::= ID|INDEXED|JOIN_KW LP STAR RP */
 {
-  yylhsminor.yy590 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
+  yylhsminor.yy454 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
 }
-  yymsp[-3].minor.yy590 = yylhsminor.yy590;
+  yymsp[-3].minor.yy454 = yylhsminor.yy454;
         break;
       case 192: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP filter_over */
 {
-  yylhsminor.yy590 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy402, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy502);
-  sqlite3WindowAttach(pParse, yylhsminor.yy590, yymsp[0].minor.yy483);
+  yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy14, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy144);
+  sqlite3WindowAttach(pParse, yylhsminor.yy454, yymsp[0].minor.yy211);
 }
-  yymsp[-5].minor.yy590 = yylhsminor.yy590;
+  yymsp[-5].minor.yy454 = yylhsminor.yy454;
         break;
       case 193: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP filter_over */
 {
-  yylhsminor.yy590 = sqlite3ExprFunction(pParse, yymsp[-5].minor.yy402, &yymsp[-8].minor.yy0, yymsp[-6].minor.yy502);
-  sqlite3WindowAttach(pParse, yylhsminor.yy590, yymsp[0].minor.yy483);
-  sqlite3ExprAddFunctionOrderBy(pParse, yylhsminor.yy590, yymsp[-2].minor.yy402);
+  yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-5].minor.yy14, &yymsp[-8].minor.yy0, yymsp[-6].minor.yy144);
+  sqlite3WindowAttach(pParse, yylhsminor.yy454, yymsp[0].minor.yy211);
+  sqlite3ExprAddFunctionOrderBy(pParse, yylhsminor.yy454, yymsp[-2].minor.yy14);
 }
-  yymsp[-8].minor.yy590 = yylhsminor.yy590;
+  yymsp[-8].minor.yy454 = yylhsminor.yy454;
         break;
       case 194: /* expr ::= ID|INDEXED|JOIN_KW LP STAR RP filter_over */
 {
-  yylhsminor.yy590 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
-  sqlite3WindowAttach(pParse, yylhsminor.yy590, yymsp[0].minor.yy483);
+  yylhsminor.yy454 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
+  sqlite3WindowAttach(pParse, yylhsminor.yy454, yymsp[0].minor.yy211);
 }
-  yymsp[-4].minor.yy590 = yylhsminor.yy590;
+  yymsp[-4].minor.yy454 = yylhsminor.yy454;
         break;
       case 195: /* term ::= CTIME_KW */
 {
-  yylhsminor.yy590 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
+  yylhsminor.yy454 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
 }
-  yymsp[0].minor.yy590 = yylhsminor.yy590;
+  yymsp[0].minor.yy454 = yylhsminor.yy454;
         break;
       case 196: /* expr ::= LP nexprlist COMMA expr RP */
 {
-  ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy402, yymsp[-1].minor.yy590);
-  yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
-  if( yymsp[-4].minor.yy590 ){
-    yymsp[-4].minor.yy590->x.pList = pList;
+  ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy14, yymsp[-1].minor.yy454);
+  yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
+  if( yymsp[-4].minor.yy454 ){
+    yymsp[-4].minor.yy454->x.pList = pList;
     if( ALWAYS(pList->nExpr) ){
-      yymsp[-4].minor.yy590->flags |= pList->a[0].pExpr->flags & EP_Propagate;
+      yymsp[-4].minor.yy454->flags |= pList->a[0].pExpr->flags & EP_Propagate;
     }
   }else{
     sqlite3ExprListDelete(pParse->db, pList);
@@ -182057,7 +183376,7 @@ static YYACTIONTYPE yy_reduce(
 }
         break;
       case 197: /* expr ::= expr AND expr */
-{yymsp[-2].minor.yy590=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy590,yymsp[0].minor.yy590);}
+{yymsp[-2].minor.yy454=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy454,yymsp[0].minor.yy454);}
         break;
       case 198: /* expr ::= expr OR expr */
       case 199: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==199);
@@ -182066,7 +183385,7 @@ static YYACTIONTYPE yy_reduce(
       case 202: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==202);
       case 203: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==203);
       case 204: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==204);
-{yymsp[-2].minor.yy590=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy590,yymsp[0].minor.yy590);}
+{yymsp[-2].minor.yy454=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy454,yymsp[0].minor.yy454);}
         break;
       case 205: /* likeop ::= NOT LIKE_KW|MATCH */
 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
@@ -182076,11 +183395,11 @@ static YYACTIONTYPE yy_reduce(
   ExprList *pList;
   int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
   yymsp[-1].minor.yy0.n &= 0x7fffffff;
-  pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy590);
-  pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy590);
-  yymsp[-2].minor.yy590 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
-  if( bNot ) yymsp[-2].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy590, 0);
-  if( yymsp[-2].minor.yy590 ) yymsp[-2].minor.yy590->flags |= EP_InfixFunc;
+  pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy454);
+  pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy454);
+  yymsp[-2].minor.yy454 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
+  if( bNot ) yymsp[-2].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy454, 0);
+  if( yymsp[-2].minor.yy454 ) yymsp[-2].minor.yy454->flags |= EP_InfixFunc;
 }
         break;
       case 207: /* expr ::= expr likeop expr ESCAPE expr */
@@ -182088,91 +183407,87 @@ static YYACTIONTYPE yy_reduce(
   ExprList *pList;
   int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
   yymsp[-3].minor.yy0.n &= 0x7fffffff;
-  pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy590);
-  pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy590);
-  pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy590);
-  yymsp[-4].minor.yy590 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
-  if( bNot ) yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy590, 0);
-  if( yymsp[-4].minor.yy590 ) yymsp[-4].minor.yy590->flags |= EP_InfixFunc;
+  pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy454);
+  pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy454);
+  pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy454);
+  yymsp[-4].minor.yy454 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
+  if( bNot ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0);
+  if( yymsp[-4].minor.yy454 ) yymsp[-4].minor.yy454->flags |= EP_InfixFunc;
 }
         break;
       case 208: /* expr ::= expr ISNULL|NOTNULL */
-{yymsp[-1].minor.yy590 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy590,0);}
+{yymsp[-1].minor.yy454 = sqlite3PExprIsNull(pParse,yymsp[0].major,yymsp[-1].minor.yy454);}
         break;
       case 209: /* expr ::= expr NOT NULL */
-{yymsp[-2].minor.yy590 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy590,0);}
+{yymsp[-2].minor.yy454 = sqlite3PExprIsNull(pParse,TK_NOTNULL,yymsp[-2].minor.yy454);}
         break;
       case 210: /* expr ::= expr IS expr */
 {
-  yymsp[-2].minor.yy590 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy590,yymsp[0].minor.yy590);
-  binaryToUnaryIfNull(pParse, yymsp[0].minor.yy590, yymsp[-2].minor.yy590, TK_ISNULL);
+  yymsp[-2].minor.yy454 = sqlite3PExprIs(pParse, TK_IS, yymsp[-2].minor.yy454, yymsp[0].minor.yy454);
 }
         break;
       case 211: /* expr ::= expr IS NOT expr */
 {
-  yymsp[-3].minor.yy590 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy590,yymsp[0].minor.yy590);
-  binaryToUnaryIfNull(pParse, yymsp[0].minor.yy590, yymsp[-3].minor.yy590, TK_NOTNULL);
+  yymsp[-3].minor.yy454 = sqlite3PExprIs(pParse, TK_ISNOT, yymsp[-3].minor.yy454, yymsp[0].minor.yy454);
 }
         break;
       case 212: /* expr ::= expr IS NOT DISTINCT FROM expr */
 {
-  yymsp[-5].minor.yy590 = sqlite3PExpr(pParse,TK_IS,yymsp[-5].minor.yy590,yymsp[0].minor.yy590);
-  binaryToUnaryIfNull(pParse, yymsp[0].minor.yy590, yymsp[-5].minor.yy590, TK_ISNULL);
+  yymsp[-5].minor.yy454 = sqlite3PExprIs(pParse, TK_IS, yymsp[-5].minor.yy454, yymsp[0].minor.yy454);
 }
         break;
       case 213: /* expr ::= expr IS DISTINCT FROM expr */
 {
-  yymsp[-4].minor.yy590 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-4].minor.yy590,yymsp[0].minor.yy590);
-  binaryToUnaryIfNull(pParse, yymsp[0].minor.yy590, yymsp[-4].minor.yy590, TK_NOTNULL);
+  yymsp[-4].minor.yy454 = sqlite3PExprIs(pParse, TK_ISNOT, yymsp[-4].minor.yy454, yymsp[0].minor.yy454);
 }
         break;
       case 214: /* expr ::= NOT expr */
       case 215: /* expr ::= BITNOT expr */ yytestcase(yyruleno==215);
-{yymsp[-1].minor.yy590 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy590, 0);/*A-overwrites-B*/}
+{yymsp[-1].minor.yy454 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy454, 0);/*A-overwrites-B*/}
         break;
       case 216: /* expr ::= PLUS|MINUS expr */
 {
-  Expr *p = yymsp[0].minor.yy590;
+  Expr *p = yymsp[0].minor.yy454;
   u8 op = yymsp[-1].major + (TK_UPLUS-TK_PLUS);
   assert( TK_UPLUS>TK_PLUS );
   assert( TK_UMINUS == TK_MINUS + (TK_UPLUS - TK_PLUS) );
   if( p && p->op==TK_UPLUS ){
     p->op = op;
-    yymsp[-1].minor.yy590 = p;
+    yymsp[-1].minor.yy454 = p;
   }else{
-    yymsp[-1].minor.yy590 = sqlite3PExpr(pParse, op, p, 0);
+    yymsp[-1].minor.yy454 = sqlite3PExpr(pParse, op, p, 0);
     /*A-overwrites-B*/
   }
 }
         break;
       case 217: /* expr ::= expr PTR expr */
 {
-  ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy590);
-  pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy590);
-  yylhsminor.yy590 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
+  ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy454);
+  pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy454);
+  yylhsminor.yy454 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
 }
-  yymsp[-2].minor.yy590 = yylhsminor.yy590;
+  yymsp[-2].minor.yy454 = yylhsminor.yy454;
         break;
       case 218: /* between_op ::= BETWEEN */
       case 221: /* in_op ::= IN */ yytestcase(yyruleno==221);
-{yymsp[0].minor.yy502 = 0;}
+{yymsp[0].minor.yy144 = 0;}
         break;
       case 220: /* expr ::= expr between_op expr AND expr */
 {
-  ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy590);
-  pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy590);
-  yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy590, 0);
-  if( yymsp[-4].minor.yy590 ){
-    yymsp[-4].minor.yy590->x.pList = pList;
+  ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy454);
+  pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy454);
+  yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy454, 0);
+  if( yymsp[-4].minor.yy454 ){
+    yymsp[-4].minor.yy454->x.pList = pList;
   }else{
     sqlite3ExprListDelete(pParse->db, pList);
   }
-  if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy590, 0);
+  if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0);
 }
         break;
       case 223: /* expr ::= expr in_op LP exprlist RP */
 {
-    if( yymsp[-1].minor.yy402==0 ){
+    if( yymsp[-1].minor.yy14==0 ){
       /* Expressions of the form
       **
       **      expr1 IN ()
@@ -182185,145 +183500,145 @@ static YYACTIONTYPE yy_reduce(
       ** it is or not) and if it is an aggregate, that could change the meaning
       ** of the whole query.
       */
-      Expr *pB = sqlite3Expr(pParse->db, TK_STRING, yymsp[-3].minor.yy502 ? "true" : "false");
+      Expr *pB = sqlite3Expr(pParse->db, TK_STRING, yymsp[-3].minor.yy144 ? "true" : "false");
       if( pB ) sqlite3ExprIdToTrueFalse(pB);
-      if( !ExprHasProperty(yymsp[-4].minor.yy590, EP_HasFunc) ){
-        sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy590);
-        yymsp[-4].minor.yy590 = pB;
+      if( !ExprHasProperty(yymsp[-4].minor.yy454, EP_HasFunc) ){
+        sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy454);
+        yymsp[-4].minor.yy454 = pB;
       }else{
-        yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, yymsp[-3].minor.yy502 ? TK_OR : TK_AND, pB, yymsp[-4].minor.yy590);
+        yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, yymsp[-3].minor.yy144 ? TK_OR : TK_AND, pB, yymsp[-4].minor.yy454);
       }
     }else{
-      Expr *pRHS = yymsp[-1].minor.yy402->a[0].pExpr;
-      if( yymsp[-1].minor.yy402->nExpr==1 && sqlite3ExprIsConstant(pParse,pRHS) && yymsp[-4].minor.yy590->op!=TK_VECTOR ){
-        yymsp[-1].minor.yy402->a[0].pExpr = 0;
-        sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy402);
+      Expr *pRHS = yymsp[-1].minor.yy14->a[0].pExpr;
+      if( yymsp[-1].minor.yy14->nExpr==1 && sqlite3ExprIsConstant(pParse,pRHS) && yymsp[-4].minor.yy454->op!=TK_VECTOR ){
+        yymsp[-1].minor.yy14->a[0].pExpr = 0;
+        sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy14);
         pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
-        yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy590, pRHS);
-      }else if( yymsp[-1].minor.yy402->nExpr==1 && pRHS->op==TK_SELECT ){
-        yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy590, 0);
-        sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy590, pRHS->x.pSelect);
+        yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy454, pRHS);
+      }else if( yymsp[-1].minor.yy14->nExpr==1 && pRHS->op==TK_SELECT ){
+        yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy454, 0);
+        sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy454, pRHS->x.pSelect);
         pRHS->x.pSelect = 0;
-        sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy402);
+        sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy14);
       }else{
-        yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy590, 0);
-        if( yymsp[-4].minor.yy590==0 ){
-          sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy402);
-        }else if( yymsp[-4].minor.yy590->pLeft->op==TK_VECTOR ){
-          int nExpr = yymsp[-4].minor.yy590->pLeft->x.pList->nExpr;
-          Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy402);
+        yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy454, 0);
+        if( yymsp[-4].minor.yy454==0 ){
+          sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy14);
+        }else if( yymsp[-4].minor.yy454->pLeft->op==TK_VECTOR ){
+          int nExpr = yymsp[-4].minor.yy454->pLeft->x.pList->nExpr;
+          Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy14);
           if( pSelectRHS ){
             parserDoubleLinkSelect(pParse, pSelectRHS);
-            sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy590, pSelectRHS);
+            sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy454, pSelectRHS);
           }
         }else{
-          yymsp[-4].minor.yy590->x.pList = yymsp[-1].minor.yy402;
-          sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy590);
+          yymsp[-4].minor.yy454->x.pList = yymsp[-1].minor.yy14;
+          sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy454);
         }
       }
-      if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy590, 0);
+      if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0);
     }
   }
         break;
       case 224: /* expr ::= LP select RP */
 {
-    yymsp[-2].minor.yy590 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
-    sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy590, yymsp[-1].minor.yy637);
+    yymsp[-2].minor.yy454 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
+    sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy454, yymsp[-1].minor.yy555);
   }
         break;
       case 225: /* expr ::= expr in_op LP select RP */
 {
-    yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy590, 0);
-    sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy590, yymsp[-1].minor.yy637);
-    if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy590, 0);
+    yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy454, 0);
+    sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy454, yymsp[-1].minor.yy555);
+    if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0);
   }
         break;
       case 226: /* expr ::= expr in_op nm dbnm paren_exprlist */
 {
     SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
     Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
-    if( yymsp[0].minor.yy402 )  sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy402);
-    yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy590, 0);
-    sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy590, pSelect);
-    if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy590, 0);
+    if( yymsp[0].minor.yy14 )  sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy14);
+    yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy454, 0);
+    sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy454, pSelect);
+    if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0);
   }
         break;
       case 227: /* expr ::= EXISTS LP select RP */
 {
     Expr *p;
-    p = yymsp[-3].minor.yy590 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
-    sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy637);
+    p = yymsp[-3].minor.yy454 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
+    sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy555);
   }
         break;
       case 228: /* expr ::= CASE case_operand case_exprlist case_else END */
 {
-  yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy590, 0);
-  if( yymsp[-4].minor.yy590 ){
-    yymsp[-4].minor.yy590->x.pList = yymsp[-1].minor.yy590 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy402,yymsp[-1].minor.yy590) : yymsp[-2].minor.yy402;
-    sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy590);
+  yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy454, 0);
+  if( yymsp[-4].minor.yy454 ){
+    yymsp[-4].minor.yy454->x.pList = yymsp[-1].minor.yy454 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy14,yymsp[-1].minor.yy454) : yymsp[-2].minor.yy14;
+    sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy454);
   }else{
-    sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy402);
-    sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy590);
+    sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy14);
+    sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy454);
   }
 }
         break;
       case 229: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
 {
-  yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy402, yymsp[-2].minor.yy590);
-  yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy402, yymsp[0].minor.yy590);
+  yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, yymsp[-2].minor.yy454);
+  yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, yymsp[0].minor.yy454);
 }
         break;
       case 230: /* case_exprlist ::= WHEN expr THEN expr */
 {
-  yymsp[-3].minor.yy402 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy590);
-  yymsp[-3].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy402, yymsp[0].minor.yy590);
+  yymsp[-3].minor.yy14 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy454);
+  yymsp[-3].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy14, yymsp[0].minor.yy454);
 }
         break;
       case 235: /* nexprlist ::= nexprlist COMMA expr */
-{yymsp[-2].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy402,yymsp[0].minor.yy590);}
+{yymsp[-2].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy14,yymsp[0].minor.yy454);}
         break;
       case 236: /* nexprlist ::= expr */
-{yymsp[0].minor.yy402 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy590); /*A-overwrites-Y*/}
+{yymsp[0].minor.yy14 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy454); /*A-overwrites-Y*/}
         break;
       case 238: /* paren_exprlist ::= LP exprlist RP */
       case 243: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==243);
-{yymsp[-2].minor.yy402 = yymsp[-1].minor.yy402;}
+{yymsp[-2].minor.yy14 = yymsp[-1].minor.yy14;}
         break;
       case 239: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
 {
   sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
-                     sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy402, yymsp[-10].minor.yy502,
-                      &yymsp[-11].minor.yy0, yymsp[0].minor.yy590, SQLITE_SO_ASC, yymsp[-8].minor.yy502, SQLITE_IDXTYPE_APPDEF);
+                     sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy14, yymsp[-10].minor.yy144,
+                      &yymsp[-11].minor.yy0, yymsp[0].minor.yy454, SQLITE_SO_ASC, yymsp[-8].minor.yy144, SQLITE_IDXTYPE_APPDEF);
   if( IN_RENAME_OBJECT && pParse->pNewIndex ){
     sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
   }
 }
         break;
       case 240: /* uniqueflag ::= UNIQUE */
-      case 282: /* raisetype ::= ABORT */ yytestcase(yyruleno==282);
-{yymsp[0].minor.yy502 = OE_Abort;}
+      case 281: /* raisetype ::= ABORT */ yytestcase(yyruleno==281);
+{yymsp[0].minor.yy144 = OE_Abort;}
         break;
       case 241: /* uniqueflag ::= */
-{yymsp[1].minor.yy502 = OE_None;}
+{yymsp[1].minor.yy144 = OE_None;}
         break;
       case 244: /* eidlist ::= eidlist COMMA nm collate sortorder */
 {
-  yymsp[-4].minor.yy402 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy402, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy502, yymsp[0].minor.yy502);
+  yymsp[-4].minor.yy14 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy14, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy144, yymsp[0].minor.yy144);
 }
         break;
       case 245: /* eidlist ::= nm collate sortorder */
 {
-  yymsp[-2].minor.yy402 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy502, yymsp[0].minor.yy502); /*A-overwrites-Y*/
+  yymsp[-2].minor.yy14 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy144, yymsp[0].minor.yy144); /*A-overwrites-Y*/
 }
         break;
       case 248: /* cmd ::= DROP INDEX ifexists fullname */
-{sqlite3DropIndex(pParse, yymsp[0].minor.yy563, yymsp[-1].minor.yy502);}
+{sqlite3DropIndex(pParse, yymsp[0].minor.yy203, yymsp[-1].minor.yy144);}
         break;
       case 249: /* cmd ::= VACUUM vinto */
-{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy590);}
+{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy454);}
         break;
       case 250: /* cmd ::= VACUUM nm vinto */
-{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy590);}
+{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy454);}
         break;
       case 253: /* cmd ::= PRAGMA nm dbnm */
 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
@@ -182345,12 +183660,12 @@ static YYACTIONTYPE yy_reduce(
   Token all;
   all.z = yymsp[-3].minor.yy0.z;
   all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
-  sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy319, &all);
+  sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy427, &all);
 }
         break;
       case 261: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
 {
-  sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy502, yymsp[-4].minor.yy28.a, yymsp[-4].minor.yy28.b, yymsp[-2].minor.yy563, yymsp[0].minor.yy590, yymsp[-10].minor.yy502, yymsp[-8].minor.yy502);
+  sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy144, yymsp[-4].minor.yy286.a, yymsp[-4].minor.yy286.b, yymsp[-2].minor.yy203, yymsp[0].minor.yy454, yymsp[-10].minor.yy144, yymsp[-8].minor.yy144);
   yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
 #ifdef SQLITE_DEBUG
   assert( pParse->isCreate ); /* Set by createkw reduce action */
@@ -182359,421 +183674,439 @@ static YYACTIONTYPE yy_reduce(
 }
         break;
       case 262: /* trigger_time ::= BEFORE|AFTER */
-{ yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-X*/ }
+{ yymsp[0].minor.yy144 = yymsp[0].major; /*A-overwrites-X*/ }
         break;
       case 263: /* trigger_time ::= INSTEAD OF */
-{ yymsp[-1].minor.yy502 = TK_INSTEAD;}
+{ yymsp[-1].minor.yy144 = TK_INSTEAD;}
         break;
       case 264: /* trigger_time ::= */
-{ yymsp[1].minor.yy502 = TK_BEFORE; }
+{ yymsp[1].minor.yy144 = TK_BEFORE; }
         break;
       case 265: /* trigger_event ::= DELETE|INSERT */
       case 266: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==266);
-{yymsp[0].minor.yy28.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy28.b = 0;}
+{yymsp[0].minor.yy286.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy286.b = 0;}
         break;
       case 267: /* trigger_event ::= UPDATE OF idlist */
-{yymsp[-2].minor.yy28.a = TK_UPDATE; yymsp[-2].minor.yy28.b = yymsp[0].minor.yy204;}
+{yymsp[-2].minor.yy286.a = TK_UPDATE; yymsp[-2].minor.yy286.b = yymsp[0].minor.yy132;}
         break;
       case 268: /* when_clause ::= */
-      case 287: /* key_opt ::= */ yytestcase(yyruleno==287);
-{ yymsp[1].minor.yy590 = 0; }
+      case 286: /* key_opt ::= */ yytestcase(yyruleno==286);
+{ yymsp[1].minor.yy454 = 0; }
         break;
       case 269: /* when_clause ::= WHEN expr */
-      case 288: /* key_opt ::= KEY expr */ yytestcase(yyruleno==288);
-{ yymsp[-1].minor.yy590 = yymsp[0].minor.yy590; }
+      case 287: /* key_opt ::= KEY expr */ yytestcase(yyruleno==287);
+{ yymsp[-1].minor.yy454 = yymsp[0].minor.yy454; }
         break;
       case 270: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
 {
-  assert( yymsp[-2].minor.yy319!=0 );
-  yymsp[-2].minor.yy319->pLast->pNext = yymsp[-1].minor.yy319;
-  yymsp[-2].minor.yy319->pLast = yymsp[-1].minor.yy319;
+  yymsp[-2].minor.yy427->pLast->pNext = yymsp[-1].minor.yy427;
+  yymsp[-2].minor.yy427->pLast = yymsp[-1].minor.yy427;
 }
         break;
       case 271: /* trigger_cmd_list ::= trigger_cmd SEMI */
 {
-  assert( yymsp[-1].minor.yy319!=0 );
-  yymsp[-1].minor.yy319->pLast = yymsp[-1].minor.yy319;
+  yymsp[-1].minor.yy427->pLast = yymsp[-1].minor.yy427;
 }
         break;
-      case 272: /* trnm ::= nm DOT nm */
-{
-  yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
-  sqlite3ErrorMsg(pParse,
-        "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
-        "statements within triggers");
-}
-        break;
-      case 273: /* tridxby ::= INDEXED BY nm */
+      case 272: /* tridxby ::= INDEXED BY nm */
 {
   sqlite3ErrorMsg(pParse,
         "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
         "within triggers");
 }
         break;
-      case 274: /* tridxby ::= NOT INDEXED */
+      case 273: /* tridxby ::= NOT INDEXED */
 {
   sqlite3ErrorMsg(pParse,
         "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
         "within triggers");
 }
         break;
-      case 275: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
-{yylhsminor.yy319 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy563, yymsp[-3].minor.yy402, yymsp[-1].minor.yy590, yymsp[-7].minor.yy502, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy342);}
-  yymsp[-8].minor.yy319 = yylhsminor.yy319;
+      case 274: /* trigger_cmd ::= UPDATE orconf xfullname tridxby SET setlist from where_opt scanpt */
+{yylhsminor.yy427 = sqlite3TriggerUpdateStep(pParse, yymsp[-6].minor.yy203, yymsp[-2].minor.yy203, yymsp[-3].minor.yy14, yymsp[-1].minor.yy454, yymsp[-7].minor.yy144, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy168);}
+  yymsp[-8].minor.yy427 = yylhsminor.yy427;
         break;
-      case 276: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
+      case 275: /* trigger_cmd ::= scanpt insert_cmd INTO xfullname idlist_opt select upsert scanpt */
 {
-   yylhsminor.yy319 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy204,yymsp[-2].minor.yy637,yymsp[-6].minor.yy502,yymsp[-1].minor.yy403,yymsp[-7].minor.yy342,yymsp[0].minor.yy342);/*yylhsminor.yy319-overwrites-yymsp[-6].minor.yy502*/
+   yylhsminor.yy427 = sqlite3TriggerInsertStep(pParse,yymsp[-4].minor.yy203,yymsp[-3].minor.yy132,yymsp[-2].minor.yy555,yymsp[-6].minor.yy144,yymsp[-1].minor.yy122,yymsp[-7].minor.yy168,yymsp[0].minor.yy168);/*yylhsminor.yy427-overwrites-yymsp[-6].minor.yy144*/
 }
-  yymsp[-7].minor.yy319 = yylhsminor.yy319;
+  yymsp[-7].minor.yy427 = yylhsminor.yy427;
         break;
-      case 277: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
-{yylhsminor.yy319 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy590, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy342);}
-  yymsp[-5].minor.yy319 = yylhsminor.yy319;
+      case 276: /* trigger_cmd ::= DELETE FROM xfullname tridxby where_opt scanpt */
+{yylhsminor.yy427 = sqlite3TriggerDeleteStep(pParse, yymsp[-3].minor.yy203, yymsp[-1].minor.yy454, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy168);}
+  yymsp[-5].minor.yy427 = yylhsminor.yy427;
         break;
-      case 278: /* trigger_cmd ::= scanpt select scanpt */
-{yylhsminor.yy319 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy637, yymsp[-2].minor.yy342, yymsp[0].minor.yy342); /*yylhsminor.yy319-overwrites-yymsp[-1].minor.yy637*/}
-  yymsp[-2].minor.yy319 = yylhsminor.yy319;
+      case 277: /* trigger_cmd ::= scanpt select scanpt */
+{yylhsminor.yy427 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy555, yymsp[-2].minor.yy168, yymsp[0].minor.yy168); /*yylhsminor.yy427-overwrites-yymsp[-1].minor.yy555*/}
+  yymsp[-2].minor.yy427 = yylhsminor.yy427;
         break;
-      case 279: /* expr ::= RAISE LP IGNORE RP */
+      case 278: /* expr ::= RAISE LP IGNORE RP */
 {
-  yymsp[-3].minor.yy590 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
-  if( yymsp[-3].minor.yy590 ){
-    yymsp[-3].minor.yy590->affExpr = OE_Ignore;
+  yymsp[-3].minor.yy454 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
+  if( yymsp[-3].minor.yy454 ){
+    yymsp[-3].minor.yy454->affExpr = OE_Ignore;
   }
 }
         break;
-      case 280: /* expr ::= RAISE LP raisetype COMMA expr RP */
+      case 279: /* expr ::= RAISE LP raisetype COMMA expr RP */
 {
-  yymsp[-5].minor.yy590 = sqlite3PExpr(pParse, TK_RAISE, yymsp[-1].minor.yy590, 0);
-  if( yymsp[-5].minor.yy590 ) {
-    yymsp[-5].minor.yy590->affExpr = (char)yymsp[-3].minor.yy502;
+  yymsp[-5].minor.yy454 = sqlite3PExpr(pParse, TK_RAISE, yymsp[-1].minor.yy454, 0);
+  if( yymsp[-5].minor.yy454 ) {
+    yymsp[-5].minor.yy454->affExpr = (char)yymsp[-3].minor.yy144;
   }
 }
         break;
-      case 281: /* raisetype ::= ROLLBACK */
-{yymsp[0].minor.yy502 = OE_Rollback;}
+      case 280: /* raisetype ::= ROLLBACK */
+{yymsp[0].minor.yy144 = OE_Rollback;}
         break;
-      case 283: /* raisetype ::= FAIL */
-{yymsp[0].minor.yy502 = OE_Fail;}
+      case 282: /* raisetype ::= FAIL */
+{yymsp[0].minor.yy144 = OE_Fail;}
         break;
-      case 284: /* cmd ::= DROP TRIGGER ifexists fullname */
+      case 283: /* cmd ::= DROP TRIGGER ifexists fullname */
 {
-  sqlite3DropTrigger(pParse,yymsp[0].minor.yy563,yymsp[-1].minor.yy502);
+  sqlite3DropTrigger(pParse,yymsp[0].minor.yy203,yymsp[-1].minor.yy144);
 }
         break;
-      case 285: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+      case 284: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
 {
-  sqlite3Attach(pParse, yymsp[-3].minor.yy590, yymsp[-1].minor.yy590, yymsp[0].minor.yy590);
+  sqlite3Attach(pParse, yymsp[-3].minor.yy454, yymsp[-1].minor.yy454, yymsp[0].minor.yy454);
 }
         break;
-      case 286: /* cmd ::= DETACH database_kw_opt expr */
+      case 285: /* cmd ::= DETACH database_kw_opt expr */
 {
-  sqlite3Detach(pParse, yymsp[0].minor.yy590);
+  sqlite3Detach(pParse, yymsp[0].minor.yy454);
 }
         break;
-      case 289: /* cmd ::= REINDEX */
+      case 288: /* cmd ::= REINDEX */
 {sqlite3Reindex(pParse, 0, 0);}
         break;
-      case 290: /* cmd ::= REINDEX nm dbnm */
+      case 289: /* cmd ::= REINDEX nm dbnm */
 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
         break;
-      case 291: /* cmd ::= ANALYZE */
+      case 290: /* cmd ::= ANALYZE */
 {sqlite3Analyze(pParse, 0, 0);}
         break;
-      case 292: /* cmd ::= ANALYZE nm dbnm */
+      case 291: /* cmd ::= ANALYZE nm dbnm */
 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
         break;
-      case 293: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
+      case 292: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
 {
-  sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy563,&yymsp[0].minor.yy0);
+  sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy203,&yymsp[0].minor.yy0);
 }
         break;
-      case 294: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
+      case 293: /* cmd ::= alter_add carglist */
 {
   yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
   sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
+}
+        break;
+      case 294: /* alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
+{
+  disableLookaside(pParse);
+  sqlite3AlterBeginAddColumn(pParse, yymsp[-4].minor.yy203);
+  sqlite3AddColumn(pParse, yymsp[-1].minor.yy0, yymsp[0].minor.yy0);
+  yymsp[-6].minor.yy0 = yymsp[-1].minor.yy0;
 }
         break;
       case 295: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
 {
-  sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy563, &yymsp[0].minor.yy0);
+  sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy203, &yymsp[0].minor.yy0);
 }
         break;
-      case 296: /* add_column_fullname ::= fullname */
+      case 296: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
 {
-  disableLookaside(pParse);
-  sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy563);
+  sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy203, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
+}
+        break;
+      case 297: /* cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
+{
+  sqlite3AlterDropConstraint(pParse, yymsp[-3].minor.yy203, &yymsp[0].minor.yy0, 0);
 }
         break;
-      case 297: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
+      case 298: /* cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
 {
-  sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy563, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
+  sqlite3AlterDropConstraint(pParse, yymsp[-6].minor.yy203, 0, &yymsp[-3].minor.yy0);
 }
         break;
-      case 298: /* cmd ::= create_vtab */
+      case 299: /* cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
+{
+  sqlite3AlterSetNotNull(pParse, yymsp[-7].minor.yy203, &yymsp[-4].minor.yy0, &yymsp[-2].minor.yy0);
+}
+        break;
+      case 300: /* cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
+{
+  sqlite3AlterAddConstraint(pParse, yymsp[-8].minor.yy203, &yymsp[-6].minor.yy0, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy0.z+1, (yymsp[-1].minor.yy0.z-yymsp[-3].minor.yy0.z-1));
+}
+  yy_destructor(yypParser,219,&yymsp[-2].minor);
+        break;
+      case 301: /* cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
+{
+  sqlite3AlterAddConstraint(pParse, yymsp[-6].minor.yy203, &yymsp[-4].minor.yy0, 0, yymsp[-3].minor.yy0.z+1, (yymsp[-1].minor.yy0.z-yymsp[-3].minor.yy0.z-1));
+}
+  yy_destructor(yypParser,219,&yymsp[-2].minor);
+        break;
+      case 302: /* cmd ::= create_vtab */
 {sqlite3VtabFinishParse(pParse,0);}
         break;
-      case 299: /* cmd ::= create_vtab LP vtabarglist RP */
+      case 303: /* cmd ::= create_vtab LP vtabarglist RP */
 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
         break;
-      case 300: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+      case 304: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
 {
-    sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy502);
+    sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy144);
 }
         break;
-      case 301: /* vtabarg ::= */
+      case 305: /* vtabarg ::= */
 {sqlite3VtabArgInit(pParse);}
         break;
-      case 302: /* vtabargtoken ::= ANY */
-      case 303: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==303);
-      case 304: /* lp ::= LP */ yytestcase(yyruleno==304);
+      case 306: /* vtabargtoken ::= ANY */
+      case 307: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==307);
+      case 308: /* lp ::= LP */ yytestcase(yyruleno==308);
 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
         break;
-      case 305: /* with ::= WITH wqlist */
-      case 306: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==306);
-{ sqlite3WithPush(pParse, yymsp[0].minor.yy125, 1); }
+      case 309: /* with ::= WITH wqlist */
+      case 310: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==310);
+{ sqlite3WithPush(pParse, yymsp[0].minor.yy59, 1); }
         break;
-      case 307: /* wqas ::= AS */
-{yymsp[0].minor.yy444 = M10d_Any;}
+      case 311: /* wqas ::= AS */
+{yymsp[0].minor.yy462 = M10d_Any;}
         break;
-      case 308: /* wqas ::= AS MATERIALIZED */
-{yymsp[-1].minor.yy444 = M10d_Yes;}
+      case 312: /* wqas ::= AS MATERIALIZED */
+{yymsp[-1].minor.yy462 = M10d_Yes;}
         break;
-      case 309: /* wqas ::= AS NOT MATERIALIZED */
-{yymsp[-2].minor.yy444 = M10d_No;}
+      case 313: /* wqas ::= AS NOT MATERIALIZED */
+{yymsp[-2].minor.yy462 = M10d_No;}
         break;
-      case 310: /* wqitem ::= withnm eidlist_opt wqas LP select RP */
+      case 314: /* wqitem ::= withnm eidlist_opt wqas LP select RP */
 {
-  yymsp[-5].minor.yy361 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy402, yymsp[-1].minor.yy637, yymsp[-3].minor.yy444); /*A-overwrites-X*/
+  yymsp[-5].minor.yy67 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy14, yymsp[-1].minor.yy555, yymsp[-3].minor.yy462); /*A-overwrites-X*/
 }
         break;
-      case 311: /* withnm ::= nm */
+      case 315: /* withnm ::= nm */
 {pParse->bHasWith = 1;}
         break;
-      case 312: /* wqlist ::= wqitem */
+      case 316: /* wqlist ::= wqitem */
 {
-  yymsp[0].minor.yy125 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy361); /*A-overwrites-X*/
+  yymsp[0].minor.yy59 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy67); /*A-overwrites-X*/
 }
         break;
-      case 313: /* wqlist ::= wqlist COMMA wqitem */
+      case 317: /* wqlist ::= wqlist COMMA wqitem */
 {
-  yymsp[-2].minor.yy125 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy125, yymsp[0].minor.yy361);
+  yymsp[-2].minor.yy59 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy59, yymsp[0].minor.yy67);
 }
         break;
-      case 314: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
+      case 318: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
 {
-  assert( yymsp[0].minor.yy483!=0 );
-  sqlite3WindowChain(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy483);
-  yymsp[0].minor.yy483->pNextWin = yymsp[-2].minor.yy483;
-  yylhsminor.yy483 = yymsp[0].minor.yy483;
+  assert( yymsp[0].minor.yy211!=0 );
+  sqlite3WindowChain(pParse, yymsp[0].minor.yy211, yymsp[-2].minor.yy211);
+  yymsp[0].minor.yy211->pNextWin = yymsp[-2].minor.yy211;
+  yylhsminor.yy211 = yymsp[0].minor.yy211;
 }
-  yymsp[-2].minor.yy483 = yylhsminor.yy483;
+  yymsp[-2].minor.yy211 = yylhsminor.yy211;
         break;
-      case 315: /* windowdefn ::= nm AS LP window RP */
+      case 319: /* windowdefn ::= nm AS LP window RP */
 {
-  if( ALWAYS(yymsp[-1].minor.yy483) ){
-    yymsp[-1].minor.yy483->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
+  if( ALWAYS(yymsp[-1].minor.yy211) ){
+    yymsp[-1].minor.yy211->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
   }
-  yylhsminor.yy483 = yymsp[-1].minor.yy483;
+  yylhsminor.yy211 = yymsp[-1].minor.yy211;
 }
-  yymsp[-4].minor.yy483 = yylhsminor.yy483;
+  yymsp[-4].minor.yy211 = yylhsminor.yy211;
         break;
-      case 316: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+      case 320: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
 {
-  yymsp[-4].minor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy402, yymsp[-1].minor.yy402, 0);
+  yymsp[-4].minor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, yymsp[-2].minor.yy14, yymsp[-1].minor.yy14, 0);
 }
         break;
-      case 317: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+      case 321: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
 {
-  yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy402, yymsp[-1].minor.yy402, &yymsp[-5].minor.yy0);
+  yylhsminor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, yymsp[-2].minor.yy14, yymsp[-1].minor.yy14, &yymsp[-5].minor.yy0);
 }
-  yymsp[-5].minor.yy483 = yylhsminor.yy483;
+  yymsp[-5].minor.yy211 = yylhsminor.yy211;
         break;
-      case 318: /* window ::= ORDER BY sortlist frame_opt */
+      case 322: /* window ::= ORDER BY sortlist frame_opt */
 {
-  yymsp[-3].minor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy402, 0);
+  yymsp[-3].minor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, 0, yymsp[-1].minor.yy14, 0);
 }
         break;
-      case 319: /* window ::= nm ORDER BY sortlist frame_opt */
+      case 323: /* window ::= nm ORDER BY sortlist frame_opt */
 {
-  yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy402, &yymsp[-4].minor.yy0);
+  yylhsminor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, 0, yymsp[-1].minor.yy14, &yymsp[-4].minor.yy0);
 }
-  yymsp[-4].minor.yy483 = yylhsminor.yy483;
+  yymsp[-4].minor.yy211 = yylhsminor.yy211;
         break;
-      case 320: /* window ::= nm frame_opt */
+      case 324: /* window ::= nm frame_opt */
 {
-  yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, 0, &yymsp[-1].minor.yy0);
+  yylhsminor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, 0, 0, &yymsp[-1].minor.yy0);
 }
-  yymsp[-1].minor.yy483 = yylhsminor.yy483;
+  yymsp[-1].minor.yy211 = yylhsminor.yy211;
         break;
-      case 321: /* frame_opt ::= */
+      case 325: /* frame_opt ::= */
 {
-  yymsp[1].minor.yy483 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
+  yymsp[1].minor.yy211 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
 }
         break;
-      case 322: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+      case 326: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
 {
-  yylhsminor.yy483 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy502, yymsp[-1].minor.yy205.eType, yymsp[-1].minor.yy205.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy444);
+  yylhsminor.yy211 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy144, yymsp[-1].minor.yy509.eType, yymsp[-1].minor.yy509.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy462);
 }
-  yymsp[-2].minor.yy483 = yylhsminor.yy483;
+  yymsp[-2].minor.yy211 = yylhsminor.yy211;
         break;
-      case 323: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+      case 327: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
 {
-  yylhsminor.yy483 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy502, yymsp[-3].minor.yy205.eType, yymsp[-3].minor.yy205.pExpr, yymsp[-1].minor.yy205.eType, yymsp[-1].minor.yy205.pExpr, yymsp[0].minor.yy444);
+  yylhsminor.yy211 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy144, yymsp[-3].minor.yy509.eType, yymsp[-3].minor.yy509.pExpr, yymsp[-1].minor.yy509.eType, yymsp[-1].minor.yy509.pExpr, yymsp[0].minor.yy462);
 }
-  yymsp[-5].minor.yy483 = yylhsminor.yy483;
+  yymsp[-5].minor.yy211 = yylhsminor.yy211;
         break;
-      case 325: /* frame_bound_s ::= frame_bound */
-      case 327: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==327);
-{yylhsminor.yy205 = yymsp[0].minor.yy205;}
-  yymsp[0].minor.yy205 = yylhsminor.yy205;
+      case 329: /* frame_bound_s ::= frame_bound */
+      case 331: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==331);
+{yylhsminor.yy509 = yymsp[0].minor.yy509;}
+  yymsp[0].minor.yy509 = yylhsminor.yy509;
         break;
-      case 326: /* frame_bound_s ::= UNBOUNDED PRECEDING */
-      case 328: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==328);
-      case 330: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==330);
-{yylhsminor.yy205.eType = yymsp[-1].major; yylhsminor.yy205.pExpr = 0;}
-  yymsp[-1].minor.yy205 = yylhsminor.yy205;
+      case 330: /* frame_bound_s ::= UNBOUNDED PRECEDING */
+      case 332: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==332);
+      case 334: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==334);
+{yylhsminor.yy509.eType = yymsp[-1].major; yylhsminor.yy509.pExpr = 0;}
+  yymsp[-1].minor.yy509 = yylhsminor.yy509;
         break;
-      case 329: /* frame_bound ::= expr PRECEDING|FOLLOWING */
-{yylhsminor.yy205.eType = yymsp[0].major; yylhsminor.yy205.pExpr = yymsp[-1].minor.yy590;}
-  yymsp[-1].minor.yy205 = yylhsminor.yy205;
+      case 333: /* frame_bound ::= expr PRECEDING|FOLLOWING */
+{yylhsminor.yy509.eType = yymsp[0].major; yylhsminor.yy509.pExpr = yymsp[-1].minor.yy454;}
+  yymsp[-1].minor.yy509 = yylhsminor.yy509;
         break;
-      case 331: /* frame_exclude_opt ::= */
-{yymsp[1].minor.yy444 = 0;}
+      case 335: /* frame_exclude_opt ::= */
+{yymsp[1].minor.yy462 = 0;}
         break;
-      case 332: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
-{yymsp[-1].minor.yy444 = yymsp[0].minor.yy444;}
+      case 336: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
+{yymsp[-1].minor.yy462 = yymsp[0].minor.yy462;}
         break;
-      case 333: /* frame_exclude ::= NO OTHERS */
-      case 334: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==334);
-{yymsp[-1].minor.yy444 = yymsp[-1].major; /*A-overwrites-X*/}
+      case 337: /* frame_exclude ::= NO OTHERS */
+      case 338: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==338);
+{yymsp[-1].minor.yy462 = yymsp[-1].major; /*A-overwrites-X*/}
         break;
-      case 335: /* frame_exclude ::= GROUP|TIES */
-{yymsp[0].minor.yy444 = yymsp[0].major; /*A-overwrites-X*/}
+      case 339: /* frame_exclude ::= GROUP|TIES */
+{yymsp[0].minor.yy462 = yymsp[0].major; /*A-overwrites-X*/}
         break;
-      case 336: /* window_clause ::= WINDOW windowdefn_list */
-{ yymsp[-1].minor.yy483 = yymsp[0].minor.yy483; }
+      case 340: /* window_clause ::= WINDOW windowdefn_list */
+{ yymsp[-1].minor.yy211 = yymsp[0].minor.yy211; }
         break;
-      case 337: /* filter_over ::= filter_clause over_clause */
+      case 341: /* filter_over ::= filter_clause over_clause */
 {
-  if( yymsp[0].minor.yy483 ){
-    yymsp[0].minor.yy483->pFilter = yymsp[-1].minor.yy590;
+  if( yymsp[0].minor.yy211 ){
+    yymsp[0].minor.yy211->pFilter = yymsp[-1].minor.yy454;
   }else{
-    sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy590);
+    sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy454);
   }
-  yylhsminor.yy483 = yymsp[0].minor.yy483;
+  yylhsminor.yy211 = yymsp[0].minor.yy211;
 }
-  yymsp[-1].minor.yy483 = yylhsminor.yy483;
+  yymsp[-1].minor.yy211 = yylhsminor.yy211;
         break;
-      case 338: /* filter_over ::= over_clause */
+      case 342: /* filter_over ::= over_clause */
 {
-  yylhsminor.yy483 = yymsp[0].minor.yy483;
+  yylhsminor.yy211 = yymsp[0].minor.yy211;
 }
-  yymsp[0].minor.yy483 = yylhsminor.yy483;
+  yymsp[0].minor.yy211 = yylhsminor.yy211;
         break;
-      case 339: /* filter_over ::= filter_clause */
+      case 343: /* filter_over ::= filter_clause */
 {
-  yylhsminor.yy483 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
-  if( yylhsminor.yy483 ){
-    yylhsminor.yy483->eFrmType = TK_FILTER;
-    yylhsminor.yy483->pFilter = yymsp[0].minor.yy590;
+  yylhsminor.yy211 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
+  if( yylhsminor.yy211 ){
+    yylhsminor.yy211->eFrmType = TK_FILTER;
+    yylhsminor.yy211->pFilter = yymsp[0].minor.yy454;
   }else{
-    sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy590);
+    sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy454);
   }
 }
-  yymsp[0].minor.yy483 = yylhsminor.yy483;
+  yymsp[0].minor.yy211 = yylhsminor.yy211;
         break;
-      case 340: /* over_clause ::= OVER LP window RP */
+      case 344: /* over_clause ::= OVER LP window RP */
 {
-  yymsp[-3].minor.yy483 = yymsp[-1].minor.yy483;
-  assert( yymsp[-3].minor.yy483!=0 );
+  yymsp[-3].minor.yy211 = yymsp[-1].minor.yy211;
+  assert( yymsp[-3].minor.yy211!=0 );
 }
         break;
-      case 341: /* over_clause ::= OVER nm */
+      case 345: /* over_clause ::= OVER nm */
 {
-  yymsp[-1].minor.yy483 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
-  if( yymsp[-1].minor.yy483 ){
-    yymsp[-1].minor.yy483->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
+  yymsp[-1].minor.yy211 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
+  if( yymsp[-1].minor.yy211 ){
+    yymsp[-1].minor.yy211->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
   }
 }
         break;
-      case 342: /* filter_clause ::= FILTER LP WHERE expr RP */
-{ yymsp[-4].minor.yy590 = yymsp[-1].minor.yy590; }
+      case 346: /* filter_clause ::= FILTER LP WHERE expr RP */
+{ yymsp[-4].minor.yy454 = yymsp[-1].minor.yy454; }
         break;
-      case 343: /* term ::= QNUMBER */
+      case 347: /* term ::= QNUMBER */
 {
-  yylhsminor.yy590=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0);
-  sqlite3DequoteNumber(pParse, yylhsminor.yy590);
+  yylhsminor.yy454=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0);
+  sqlite3DequoteNumber(pParse, yylhsminor.yy454);
 }
-  yymsp[0].minor.yy590 = yylhsminor.yy590;
+  yymsp[0].minor.yy454 = yylhsminor.yy454;
         break;
       default:
-      /* (344) input ::= cmdlist */ yytestcase(yyruleno==344);
-      /* (345) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==345);
-      /* (346) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=346);
-      /* (347) ecmd ::= SEMI */ yytestcase(yyruleno==347);
-      /* (348) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==348);
-      /* (349) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=349);
-      /* (350) trans_opt ::= */ yytestcase(yyruleno==350);
-      /* (351) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==351);
-      /* (352) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==352);
-      /* (353) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==353);
-      /* (354) savepoint_opt ::= */ yytestcase(yyruleno==354);
-      /* (355) cmd ::= create_table create_table_args */ yytestcase(yyruleno==355);
-      /* (356) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=356);
-      /* (357) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==357);
-      /* (358) columnlist ::= columnname carglist */ yytestcase(yyruleno==358);
-      /* (359) nm ::= ID|INDEXED|JOIN_KW */ yytestcase(yyruleno==359);
-      /* (360) nm ::= STRING */ yytestcase(yyruleno==360);
-      /* (361) typetoken ::= typename */ yytestcase(yyruleno==361);
-      /* (362) typename ::= ID|STRING */ yytestcase(yyruleno==362);
-      /* (363) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=363);
-      /* (364) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=364);
-      /* (365) carglist ::= carglist ccons */ yytestcase(yyruleno==365);
-      /* (366) carglist ::= */ yytestcase(yyruleno==366);
-      /* (367) ccons ::= NULL onconf */ yytestcase(yyruleno==367);
-      /* (368) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==368);
-      /* (369) ccons ::= AS generated */ yytestcase(yyruleno==369);
-      /* (370) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==370);
-      /* (371) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==371);
-      /* (372) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=372);
-      /* (373) tconscomma ::= */ yytestcase(yyruleno==373);
-      /* (374) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=374);
-      /* (375) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=375);
-      /* (376) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=376);
-      /* (377) oneselect ::= values */ yytestcase(yyruleno==377);
-      /* (378) sclp ::= selcollist COMMA */ yytestcase(yyruleno==378);
-      /* (379) as ::= ID|STRING */ yytestcase(yyruleno==379);
-      /* (380) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=380);
-      /* (381) returning ::= */ yytestcase(yyruleno==381);
-      /* (382) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=382);
-      /* (383) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==383);
-      /* (384) case_operand ::= expr */ yytestcase(yyruleno==384);
-      /* (385) exprlist ::= nexprlist */ yytestcase(yyruleno==385);
-      /* (386) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=386);
-      /* (387) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=387);
-      /* (388) nmnum ::= ON */ yytestcase(yyruleno==388);
-      /* (389) nmnum ::= DELETE */ yytestcase(yyruleno==389);
-      /* (390) nmnum ::= DEFAULT */ yytestcase(yyruleno==390);
-      /* (391) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==391);
-      /* (392) foreach_clause ::= */ yytestcase(yyruleno==392);
-      /* (393) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==393);
-      /* (394) trnm ::= nm */ yytestcase(yyruleno==394);
-      /* (395) tridxby ::= */ yytestcase(yyruleno==395);
-      /* (396) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==396);
-      /* (397) database_kw_opt ::= */ yytestcase(yyruleno==397);
-      /* (398) kwcolumn_opt ::= */ yytestcase(yyruleno==398);
-      /* (399) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==399);
-      /* (400) vtabarglist ::= vtabarg */ yytestcase(yyruleno==400);
-      /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==401);
-      /* (402) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==402);
-      /* (403) anylist ::= */ yytestcase(yyruleno==403);
-      /* (404) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==404);
-      /* (405) anylist ::= anylist ANY */ yytestcase(yyruleno==405);
-      /* (406) with ::= */ yytestcase(yyruleno==406);
-      /* (407) windowdefn_list ::= windowdefn (OPTIMIZED OUT) */ assert(yyruleno!=407);
-      /* (408) window ::= frame_opt (OPTIMIZED OUT) */ assert(yyruleno!=408);
+      /* (348) input ::= cmdlist */ yytestcase(yyruleno==348);
+      /* (349) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==349);
+      /* (350) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=350);
+      /* (351) ecmd ::= SEMI */ yytestcase(yyruleno==351);
+      /* (352) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==352);
+      /* (353) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=353);
+      /* (354) trans_opt ::= */ yytestcase(yyruleno==354);
+      /* (355) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==355);
+      /* (356) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==356);
+      /* (357) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==357);
+      /* (358) savepoint_opt ::= */ yytestcase(yyruleno==358);
+      /* (359) cmd ::= create_table create_table_args */ yytestcase(yyruleno==359);
+      /* (360) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=360);
+      /* (361) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==361);
+      /* (362) columnlist ::= columnname carglist */ yytestcase(yyruleno==362);
+      /* (363) nm ::= ID|INDEXED|JOIN_KW */ yytestcase(yyruleno==363);
+      /* (364) nm ::= STRING */ yytestcase(yyruleno==364);
+      /* (365) typetoken ::= typename */ yytestcase(yyruleno==365);
+      /* (366) typename ::= ID|STRING */ yytestcase(yyruleno==366);
+      /* (367) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=367);
+      /* (368) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=368);
+      /* (369) carglist ::= carglist ccons */ yytestcase(yyruleno==369);
+      /* (370) carglist ::= */ yytestcase(yyruleno==370);
+      /* (371) ccons ::= NULL onconf */ yytestcase(yyruleno==371);
+      /* (372) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==372);
+      /* (373) ccons ::= AS generated */ yytestcase(yyruleno==373);
+      /* (374) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==374);
+      /* (375) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==375);
+      /* (376) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=376);
+      /* (377) tconscomma ::= */ yytestcase(yyruleno==377);
+      /* (378) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=378);
+      /* (379) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=379);
+      /* (380) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=380);
+      /* (381) oneselect ::= values */ yytestcase(yyruleno==381);
+      /* (382) sclp ::= selcollist COMMA */ yytestcase(yyruleno==382);
+      /* (383) as ::= ID|STRING */ yytestcase(yyruleno==383);
+      /* (384) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=384);
+      /* (385) returning ::= */ yytestcase(yyruleno==385);
+      /* (386) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=386);
+      /* (387) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==387);
+      /* (388) case_operand ::= expr */ yytestcase(yyruleno==388);
+      /* (389) exprlist ::= nexprlist */ yytestcase(yyruleno==389);
+      /* (390) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=390);
+      /* (391) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=391);
+      /* (392) nmnum ::= ON */ yytestcase(yyruleno==392);
+      /* (393) nmnum ::= DELETE */ yytestcase(yyruleno==393);
+      /* (394) nmnum ::= DEFAULT */ yytestcase(yyruleno==394);
+      /* (395) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==395);
+      /* (396) foreach_clause ::= */ yytestcase(yyruleno==396);
+      /* (397) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==397);
+      /* (398) tridxby ::= */ yytestcase(yyruleno==398);
+      /* (399) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==399);
+      /* (400) database_kw_opt ::= */ yytestcase(yyruleno==400);
+      /* (401) kwcolumn_opt ::= */ yytestcase(yyruleno==401);
+      /* (402) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==402);
+      /* (403) vtabarglist ::= vtabarg */ yytestcase(yyruleno==403);
+      /* (404) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==404);
+      /* (405) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==405);
+      /* (406) anylist ::= */ yytestcase(yyruleno==406);
+      /* (407) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==407);
+      /* (408) anylist ::= anylist ANY */ yytestcase(yyruleno==408);
+      /* (409) with ::= */ yytestcase(yyruleno==409);
+      /* (410) windowdefn_list ::= windowdefn (OPTIMIZED OUT) */ assert(yyruleno!=410);
+      /* (411) window ::= frame_opt (OPTIMIZED OUT) */ assert(yyruleno!=411);
         break;
 /********** End reduce actions ************************************************/
   };
@@ -183552,8 +184885,8 @@ static const unsigned char aKWCode[148] = {0,
 /* Check to see if z[0..n-1] is a keyword. If it is, write the
 ** parser symbol code for that keyword into *pType.  Always
 ** return the integer n (the length of the token). */
-static int keywordCode(const char *z, int n, int *pType){
-  int i, j;
+static i64 keywordCode(const char *z, i64 n, int *pType){
+  i64 i, j;
   const char *zKW;
   assert( n>=2 );
   i = ((charMap(z[0])*4) ^ (charMap(z[n-1])*3) ^ n*1) % 127;
@@ -184107,7 +185440,7 @@ SQLITE_PRIVATE i64 sqlite3GetToken(const unsigned char *z, int *tokenType){
     }
     case CC_DOLLAR:
     case CC_VARALPHA: {
-      int n = 0;
+      i64 n = 0;
       testcase( z[0]=='$' );  testcase( z[0]=='@' );
       testcase( z[0]==':' );  testcase( z[0]=='#' );
       *tokenType = TK_VARIABLE;
@@ -184203,7 +185536,7 @@ SQLITE_PRIVATE int sqlite3RunParser(Parse *pParse, const char *zSql){
   int tokenType;                  /* type of the next token */
   int lastTokenParsed = -1;       /* type of the previous token */
   sqlite3 *db = pParse->db;       /* The database connection */
-  int mxSqlLen;                   /* Max length of an SQL string */
+  i64 mxSqlLen;                   /* Max length of an SQL string */
   Parse *pParentParse = 0;        /* Outer parse context, if any */
 #ifdef sqlite3Parser_ENGINEALWAYSONSTACK
   yyParser sEngine;    /* Space to hold the Lemon-generated Parser object */
@@ -185859,6 +187192,14 @@ SQLITE_API int sqlite3_db_config(sqlite3 *db, int op, ...){
       rc = setupLookaside(db, pBuf, sz, cnt);
       break;
     }
+    case SQLITE_DBCONFIG_FP_DIGITS: {
+      int nIn = va_arg(ap, int);
+      int *pOut = va_arg(ap, int*);
+      if( nIn>3 && nIn<24 ) db->nFpDigit = (u8)nIn;
+      if( pOut ) *pOut = db->nFpDigit;
+      rc = SQLITE_OK;
+      break;
+    }
     default: {
       static const struct {
         int op;      /* The opcode */
@@ -187414,6 +188755,9 @@ SQLITE_API void *sqlite3_wal_hook(
   sqlite3_mutex_leave(db->mutex);
   return pRet;
 #else
+  UNUSED_PARAMETER(db);
+  UNUSED_PARAMETER(xCallback);
+  UNUSED_PARAMETER(pArg);
   return 0;
 #endif
 }
@@ -187429,6 +188773,11 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
   int *pnCkpt                     /* OUT: Total number of frames checkpointed */
 ){
 #ifdef SQLITE_OMIT_WAL
+  UNUSED_PARAMETER(db);
+  UNUSED_PARAMETER(zDb);
+  UNUSED_PARAMETER(eMode);
+  UNUSED_PARAMETER(pnLog);
+  UNUSED_PARAMETER(pnCkpt);
   return SQLITE_OK;
 #else
   int rc;                         /* Return code */
@@ -187442,11 +188791,12 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
   if( pnLog ) *pnLog = -1;
   if( pnCkpt ) *pnCkpt = -1;
 
+  assert( SQLITE_CHECKPOINT_NOOP==-1 );
   assert( SQLITE_CHECKPOINT_PASSIVE==0 );
   assert( SQLITE_CHECKPOINT_FULL==1 );
   assert( SQLITE_CHECKPOINT_RESTART==2 );
   assert( SQLITE_CHECKPOINT_TRUNCATE==3 );
-  if( eMode<SQLITE_CHECKPOINT_PASSIVE || eMode>SQLITE_CHECKPOINT_TRUNCATE ){
+  if( eMode<SQLITE_CHECKPOINT_NOOP || eMode>SQLITE_CHECKPOINT_TRUNCATE ){
     /* EVIDENCE-OF: R-03996-12088 The M parameter must be a valid checkpoint
     ** mode: */
     return SQLITE_MISUSE_BKPT;
@@ -187810,6 +189160,7 @@ static const int aHardLimit[] = {
   SQLITE_MAX_VARIABLE_NUMBER,      /* IMP: R-38091-32352 */
   SQLITE_MAX_TRIGGER_DEPTH,
   SQLITE_MAX_WORKER_THREADS,
+  SQLITE_MAX_PARSER_DEPTH,
 };
 
 /*
@@ -187824,6 +189175,9 @@ static const int aHardLimit[] = {
 #if SQLITE_MAX_SQL_LENGTH>SQLITE_MAX_LENGTH
 # error SQLITE_MAX_SQL_LENGTH must not be greater than SQLITE_MAX_LENGTH
 #endif
+#if SQLITE_MAX_SQL_LENGTH>2147482624     /* 1024 less than 2^31 */
+# error SQLITE_MAX_SQL_LENGTH must not be greater than 2147482624
+#endif
 #if SQLITE_MAX_COMPOUND_SELECT<2
 # error SQLITE_MAX_COMPOUND_SELECT must be at least 2
 #endif
@@ -187879,6 +189233,7 @@ SQLITE_API int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){
   assert( aHardLimit[SQLITE_LIMIT_SQL_LENGTH]==SQLITE_MAX_SQL_LENGTH );
   assert( aHardLimit[SQLITE_LIMIT_COLUMN]==SQLITE_MAX_COLUMN );
   assert( aHardLimit[SQLITE_LIMIT_EXPR_DEPTH]==SQLITE_MAX_EXPR_DEPTH );
+  assert( aHardLimit[SQLITE_LIMIT_PARSER_DEPTH]==SQLITE_MAX_PARSER_DEPTH );
   assert( aHardLimit[SQLITE_LIMIT_COMPOUND_SELECT]==SQLITE_MAX_COMPOUND_SELECT);
   assert( aHardLimit[SQLITE_LIMIT_VDBE_OP]==SQLITE_MAX_VDBE_OP );
   assert( aHardLimit[SQLITE_LIMIT_FUNCTION_ARG]==SQLITE_MAX_FUNCTION_ARG );
@@ -187888,7 +189243,7 @@ SQLITE_API int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){
   assert( aHardLimit[SQLITE_LIMIT_VARIABLE_NUMBER]==SQLITE_MAX_VARIABLE_NUMBER);
   assert( aHardLimit[SQLITE_LIMIT_TRIGGER_DEPTH]==SQLITE_MAX_TRIGGER_DEPTH );
   assert( aHardLimit[SQLITE_LIMIT_WORKER_THREADS]==SQLITE_MAX_WORKER_THREADS );
-  assert( SQLITE_LIMIT_WORKER_THREADS==(SQLITE_N_LIMIT-1) );
+  assert( SQLITE_LIMIT_PARSER_DEPTH==(SQLITE_N_LIMIT-1) );
 
 
   if( limitId<0 || limitId>=SQLITE_N_LIMIT ){
@@ -188252,7 +189607,7 @@ static int openDatabase(
   db = sqlite3MallocZero( sizeof(sqlite3) );
   if( db==0 ) goto opendb_out;
   if( isThreadsafe
-#ifdef SQLITE_ENABLE_MULTITHREADED_CHECKS
+#if defined(SQLITE_THREAD_MISUSE_WARNINGS)
    || sqlite3GlobalConfig.bCoreMutex
 #endif
   ){
@@ -188273,6 +189628,7 @@ static int openDatabase(
   db->aDb = db->aDbStatic;
   db->lookaside.bDisable = 1;
   db->lookaside.sz = 0;
+  db->nFpDigit = 17;
 
   assert( sizeof(db->aLimit)==sizeof(aHardLimit) );
   memcpy(db->aLimit, aHardLimit, sizeof(db->aLimit));
@@ -188718,6 +190074,12 @@ SQLITE_API int sqlite3_collation_needed16(
 */
 SQLITE_API void *sqlite3_get_clientdata(sqlite3 *db, const char *zName){
   DbClientData *p;
+#ifdef SQLITE_ENABLE_API_ARMOR
+  if( !zName || !sqlite3SafetyCheckOk(db) ){
+    (void)SQLITE_MISUSE_BKPT;
+    return 0;
+  }
+#endif
   sqlite3_mutex_enter(db->mutex);
   for(p=db->pDbData; p; p=p->pNext){
     if( strcmp(p->zName, zName)==0 ){
@@ -189791,6 +191153,7 @@ SQLITE_API const char *sqlite3_filename_journal(const char *zFilename){
 }
 SQLITE_API const char *sqlite3_filename_wal(const char *zFilename){
 #ifdef SQLITE_OMIT_WAL
+  UNUSED_PARAMETER(zFilename);
   return 0;
 #else
   zFilename = sqlite3_filename_journal(zFilename);
@@ -191562,6 +192925,15 @@ SQLITE_PRIVATE int sqlite3Fts3Incrmerge(Fts3Table*,int,int);
   (*(u8*)(p)&0x80) ? sqlite3Fts3GetVarint32(p, piVal) : (*piVal=*(u8*)(p), 1) \
 )
 
+SQLITE_PRIVATE int sqlite3Fts3PrepareStmt(
+  Fts3Table *p,                   /* Prepare for this connection */
+  const char *zSql,               /* SQL to prepare */
+  int bPersist,                   /* True to set SQLITE_PREPARE_PERSISTENT */
+  int bAllowVtab,                 /* True to omit SQLITE_PREPARE_NO_VTAB */
+  sqlite3_stmt **pp               /* OUT: Prepared statement */
+);
+
+
 /* fts3.c */
 SQLITE_PRIVATE void sqlite3Fts3ErrMsg(char**,const char*,...);
 SQLITE_PRIVATE int sqlite3Fts3PutVarint(char *, sqlite3_int64);
@@ -193169,9 +194541,7 @@ static int fts3CursorSeekStmt(Fts3Cursor *pCsr){
       zSql = sqlite3_mprintf("SELECT %s WHERE rowid = ?", p->zReadExprlist);
       if( !zSql ) return SQLITE_NOMEM;
       p->bLock++;
-      rc = sqlite3_prepare_v3(
-          p->db, zSql,-1,SQLITE_PREPARE_PERSISTENT,&pCsr->pStmt,0
-      );
+      rc = sqlite3Fts3PrepareStmt(p, zSql, 1, 1, &pCsr->pStmt);
       p->bLock--;
       sqlite3_free(zSql);
     }
@@ -194746,9 +196116,7 @@ static int fts3FilterMethod(
     }
     if( zSql ){
       p->bLock++;
-      rc = sqlite3_prepare_v3(
-          p->db,zSql,-1,SQLITE_PREPARE_PERSISTENT,&pCsr->pStmt,0
-      );
+      rc = sqlite3Fts3PrepareStmt(p, zSql, 1, 1, &pCsr->pStmt);
       p->bLock--;
       sqlite3_free(zSql);
     }else{
@@ -195371,6 +196739,7 @@ static int fts3IntegrityMethod(
 
   UNUSED_PARAMETER(isQuick);
   rc = sqlite3Fts3IntegrityCheck(p, &bOk);
+  assert( pVtab->zErrMsg==0 || rc!=SQLITE_OK );
   assert( rc!=SQLITE_CORRUPT_VTAB );
   if( rc==SQLITE_ERROR || (rc&0xFF)==SQLITE_CORRUPT ){
     *pzErr = sqlite3_mprintf("unable to validate the inverted index for"
@@ -201808,9 +203177,9 @@ typedef struct SegmentWriter SegmentWriter;
 ** incrementally. See function fts3PendingListAppend() for details.
 */
 struct PendingList {
-  int nData;
+  sqlite3_int64 nData;
   char *aData;
-  int nSpace;
+  sqlite3_int64 nSpace;
   sqlite3_int64 iLastDocid;
   sqlite3_int64 iLastCol;
   sqlite3_int64 iLastPos;
@@ -201983,6 +203352,24 @@ struct SegmentNode {
 #define SQL_UPDATE_LEVEL_IDX          38
 #define SQL_UPDATE_LEVEL              39
 
+/*
+** Wrapper around sqlite3_prepare_v3() to ensure that SQLITE_PREPARE_FROM_DDL
+** is always set.
+*/
+SQLITE_PRIVATE int sqlite3Fts3PrepareStmt(
+  Fts3Table *p,                   /* Prepare for this connection */
+  const char *zSql,               /* SQL to prepare */
+  int bPersist,                   /* True to set SQLITE_PREPARE_PERSISTENT */
+  int bAllowVtab,                 /* True to omit SQLITE_PREPARE_NO_VTAB */
+  sqlite3_stmt **pp               /* OUT: Prepared statement */
+){
+  int f = SQLITE_PREPARE_FROM_DDL
+         |((bAllowVtab==0) ? SQLITE_PREPARE_NO_VTAB : 0)
+         |(bPersist ? SQLITE_PREPARE_PERSISTENT : 0);
+
+  return sqlite3_prepare_v3(p->db, zSql, -1, f, pp, NULL);
+}
+
 /*
 ** This function is used to obtain an SQLite prepared statement handle
 ** for the statement identified by the second argument. If successful,
@@ -202108,12 +203495,12 @@ static int fts3SqlStmt(
 
   pStmt = p->aStmt[eStmt];
   if( !pStmt ){
-    int f = SQLITE_PREPARE_PERSISTENT|SQLITE_PREPARE_NO_VTAB;
+    int bAllowVtab = 0;
     char *zSql;
     if( eStmt==SQL_CONTENT_INSERT ){
       zSql = sqlite3_mprintf(azSql[eStmt], p->zDb, p->zName, p->zWriteExprlist);
     }else if( eStmt==SQL_SELECT_CONTENT_BY_ROWID ){
-      f &= ~SQLITE_PREPARE_NO_VTAB;
+      bAllowVtab = 1;
       zSql = sqlite3_mprintf(azSql[eStmt], p->zReadExprlist);
     }else{
       zSql = sqlite3_mprintf(azSql[eStmt], p->zDb, p->zName);
@@ -202121,7 +203508,7 @@ static int fts3SqlStmt(
     if( !zSql ){
       rc = SQLITE_NOMEM;
     }else{
-      rc = sqlite3_prepare_v3(p->db, zSql, -1, f, &pStmt, NULL);
+      rc = sqlite3Fts3PrepareStmt(p, zSql, 1, bAllowVtab, &pStmt);
       sqlite3_free(zSql);
       assert( rc==SQLITE_OK || pStmt==0 );
       p->aStmt[eStmt] = pStmt;
@@ -202470,7 +203857,9 @@ static int fts3PendingTermsAddOne(
 
   pList = (PendingList *)fts3HashFind(pHash, zToken, nToken);
   if( pList ){
-    p->nPendingData -= (pList->nData + nToken + sizeof(Fts3HashElem));
+    assert( (i64)pList->nData+(i64)nToken+(i64)sizeof(Fts3HashElem)
+             <= (i64)p->nPendingData );
+    p->nPendingData -= (int)(pList->nData + nToken + sizeof(Fts3HashElem));
   }
   if( fts3PendingListAppend(&pList, p->iPrevDocid, iCol, iPos, &rc) ){
     if( pList==fts3HashInsert(pHash, zToken, nToken, pList) ){
@@ -202483,7 +203872,9 @@ static int fts3PendingTermsAddOne(
     }
   }
   if( rc==SQLITE_OK ){
-    p->nPendingData += (pList->nData + nToken + sizeof(Fts3HashElem));
+    assert( (i64)p->nPendingData + pList->nData + nToken
+             + sizeof(Fts3HashElem) <= 0x3fffffff );
+    p->nPendingData += (int)(pList->nData + nToken + sizeof(Fts3HashElem));
   }
   return rc;
 }
@@ -205284,7 +206675,7 @@ static int fts3DoRebuild(Fts3Table *p){
     if( !zSql ){
       rc = SQLITE_NOMEM;
     }else{
-      rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0);
+      rc = sqlite3Fts3PrepareStmt(p, zSql, 0, 1, &pStmt);
       sqlite3_free(zSql);
     }
 
@@ -207037,7 +208428,7 @@ SQLITE_PRIVATE int sqlite3Fts3IntegrityCheck(Fts3Table *p, int *pbOk){
     if( !zSql ){
       rc = SQLITE_NOMEM;
     }else{
-      rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0);
+      rc = sqlite3Fts3PrepareStmt(p, zSql, 0, 1, &pStmt);
       sqlite3_free(zSql);
     }
 
@@ -207167,7 +208558,7 @@ static int fts3SpecialInsert(Fts3Table *p, sqlite3_value *pVal){
       v = atoi(&zVal[9]);
       if( v>=24 && v<=p->nPgsz-35 ) p->nNodeSize = v;
       rc = SQLITE_OK;
-    }else if( nVal>11 && 0==sqlite3_strnicmp(zVal, "maxpending=", 9) ){
+    }else if( nVal>11 && 0==sqlite3_strnicmp(zVal, "maxpending=", 11) ){
       v = atoi(&zVal[11]);
       if( v>=64 && v<=FTS3_MAX_PENDING_DATA ) p->nMaxPendingData = v;
       rc = SQLITE_OK;
@@ -210442,7 +211833,10 @@ struct JsonString {
 #define JSON_SQL       0x02        /* Result is always SQL */
 #define JSON_ABPATH    0x03        /* Allow abbreviated JSON path specs */
 #define JSON_ISSET     0x04        /* json_set(), not json_insert() */
-#define JSON_BLOB      0x08        /* Use the BLOB output format */
+#define JSON_AINS      0x08        /* json_array_insert(), not json_insert() */
+#define JSON_BLOB      0x10        /* Use the BLOB output format */
+
+#define JSON_INSERT_TYPE(X)  (((X)&0xC)>>2)
 
 
 /* A parsed JSON value.  Lifecycle:
@@ -210488,6 +211882,7 @@ struct JsonParse {
 #define JEDIT_REPL  2   /* Overwrite if exists */
 #define JEDIT_INS   3   /* Insert if not exists */
 #define JEDIT_SET   4   /* Insert or overwrite */
+#define JEDIT_AINS  5   /* array_insert() */
 
 /*
 ** Maximum nesting depth of JSON for this implementation.
@@ -212984,7 +214379,8 @@ static int jsonLabelCompare(
 */
 #define JSON_LOOKUP_ERROR      0xffffffff
 #define JSON_LOOKUP_NOTFOUND   0xfffffffe
-#define JSON_LOOKUP_PATHERROR  0xfffffffd
+#define JSON_LOOKUP_NOTARRAY   0xfffffffd
+#define JSON_LOOKUP_PATHERROR  0xfffffffc
 #define JSON_LOOKUP_ISERROR(x) ((x)>=JSON_LOOKUP_PATHERROR)
 
 /* Forward declaration */
@@ -213013,7 +214409,7 @@ static u32 jsonLookupStep(JsonParse*,u32,const char*,u32);
 static u32 jsonCreateEditSubstructure(
   JsonParse *pParse,  /* The original JSONB that is being edited */
   JsonParse *pIns,    /* Populate this with the blob data to insert */
-  const char *zTail   /* Tail of the path that determins substructure */
+  const char *zTail   /* Tail of the path that determines substructure */
 ){
   static const u8 emptyObject[] = { JSONB_ARRAY, JSONB_OBJECT };
   int rc;
@@ -213048,9 +214444,9 @@ static u32 jsonCreateEditSubstructure(
 ** Return one of the JSON_LOOKUP error codes if problems are seen.
 **
 ** This routine will also modify the blob.  If pParse->eEdit is one of
-** JEDIT_DEL, JEDIT_REPL, JEDIT_INS, or JEDIT_SET, then changes might be
-** made to the selected value.  If an edit is performed, then the return
-** value does not necessarily point to the select element.  If an edit
+** JEDIT_DEL, JEDIT_REPL, JEDIT_INS, JEDIT_SET, or JEDIT_AINS, then changes
+** might be made to the selected value. If an edit is performed, then the
+** return value does not necessarily point to the select element. If an edit
 ** is performed, the return value is only useful for detecting error
 ** conditions.
 */
@@ -213076,6 +214472,13 @@ static u32 jsonLookupStep(
         jsonBlobEdit(pParse, iRoot, sz, 0, 0);
       }else if( pParse->eEdit==JEDIT_INS ){
         /* Already exists, so json_insert() is a no-op */
+      }else if( pParse->eEdit==JEDIT_AINS ){
+        /* json_array_insert() */
+        if( zPath[-1]!=']' ){
+          return JSON_LOOKUP_NOTARRAY;
+        }else{
+          jsonBlobEdit(pParse, iRoot, 0, pParse->aIns, pParse->nIns);
+        }
       }else{
         /* json_set() or json_replace() */
         jsonBlobEdit(pParse, iRoot, sz, pParse->aIns, pParse->nIns);
@@ -213147,6 +214550,10 @@ static u32 jsonLookupStep(
       JsonParse ix;      /* Header of the label to be inserted */
       testcase( pParse->eEdit==JEDIT_INS );
       testcase( pParse->eEdit==JEDIT_SET );
+      testcase( pParse->eEdit==JEDIT_AINS );
+      if( pParse->eEdit==JEDIT_AINS && sqlite3_strglob("*]",&zPath[i])!=0 ){
+        return JSON_LOOKUP_NOTARRAY;
+      }
       memset(&ix, 0, sizeof(ix));
       ix.db = pParse->db;
       jsonBlobAppendNode(&ix, rawKey?JSONB_TEXTRAW:JSONB_TEXT5, nKey, 0);
@@ -213174,28 +214581,32 @@ static u32 jsonLookupStep(
       return rc;
     }
   }else if( zPath[0]=='[' ){
+    u64 kk = 0;
     x = pParse->aBlob[iRoot] & 0x0f;
     if( x!=JSONB_ARRAY )  return JSON_LOOKUP_NOTFOUND;
     n = jsonbPayloadSize(pParse, iRoot, &sz);
-    k = 0;
     i = 1;
     while( sqlite3Isdigit(zPath[i]) ){
-      k = k*10 + zPath[i] - '0';
+      if( kk<0xffffffff ) kk = kk*10 + zPath[i] - '0';
+      /*     ^^^^^^^^^^--- Allow kk to be bigger than any JSON array so that
+      ** we get NOTFOUND instead of PATHERROR, without overflowing kk. */
       i++;
     }
     if( i<2 || zPath[i]!=']' ){
       if( zPath[1]=='#' ){
-        k = jsonbArrayCount(pParse, iRoot);
+        kk = jsonbArrayCount(pParse, iRoot);
         i = 2;
         if( zPath[2]=='-' && sqlite3Isdigit(zPath[3]) ){
-          unsigned int nn = 0;
+          u64 nn = 0;
           i = 3;
           do{
-            nn = nn*10 + zPath[i] - '0';
+            if( nn<0xffffffff ) nn = nn*10 + zPath[i] - '0';
+            /*     ^^^^^^^^^^--- Allow nn to be bigger than any JSON array to
+            ** get NOTFOUND instead of PATHERROR, without overflowing nn. */
             i++;
           }while( sqlite3Isdigit(zPath[i]) );
-          if( nn>k ) return JSON_LOOKUP_NOTFOUND;
-          k -= nn;
+          if( nn>kk ) return JSON_LOOKUP_NOTFOUND;
+          kk -= nn;
         }
         if( zPath[i]!=']' ){
           return JSON_LOOKUP_PATHERROR;
@@ -213207,21 +214618,22 @@ static u32 jsonLookupStep(
     j = iRoot+n;
     iEnd = j+sz;
     while( j<iEnd ){
-      if( k==0 ){
+      if( kk==0 ){
         rc = jsonLookupStep(pParse, j, &zPath[i+1], 0);
         if( pParse->delta ) jsonAfterEditSizeAdjust(pParse, iRoot);
         return rc;
       }
-      k--;
+      kk--;
       n = jsonbPayloadSize(pParse, j, &sz);
       if( n==0 ) return JSON_LOOKUP_ERROR;
       j += n+sz;
     }
     if( j>iEnd ) return JSON_LOOKUP_ERROR;
-    if( k>0 ) return JSON_LOOKUP_NOTFOUND;
+    if( kk>0 ) return JSON_LOOKUP_NOTFOUND;
     if( pParse->eEdit>=JEDIT_INS ){
       JsonParse v;
       testcase( pParse->eEdit==JEDIT_INS );
+      testcase( pParse->eEdit==JEDIT_AINS );
       testcase( pParse->eEdit==JEDIT_SET );
       rc = jsonCreateEditSubstructure(pParse, &v, &zPath[i+1]);
       if( !JSON_LOOKUP_ISERROR(rc)
@@ -213359,7 +214771,7 @@ static void jsonReturnFromBlob(
     to_double:
       z = sqlite3DbStrNDup(db, (const char*)&pParse->aBlob[i+n], (int)sz);
       if( z==0 ) goto returnfromblob_oom;
-      rc = sqlite3AtoF(z, &r, sqlite3Strlen30(z), SQLITE_UTF8);
+      rc = sqlite3AtoF(z, &r);
       sqlite3DbFree(db, z);
       if( rc<=0 ) goto returnfromblob_malformed;
       sqlite3_result_double(pCtx, r);
@@ -213546,9 +214958,15 @@ static int jsonFunctionArgToBlob(
 */
 static char *jsonBadPathError(
   sqlite3_context *ctx,     /* The function call containing the error */
-  const char *zPath         /* The path with the problem */
+  const char *zPath,        /* The path with the problem */
+  int rc                    /* Maybe JSON_LOOKUP_NOTARRAY */
 ){
-  char *zMsg = sqlite3_mprintf("bad JSON path: %Q", zPath);
+  char *zMsg;
+  if( rc==(int)JSON_LOOKUP_NOTARRAY ){
+    zMsg = sqlite3_mprintf("not an array element: %Q", zPath);
+  }else{
+    zMsg = sqlite3_mprintf("bad JSON path: %Q", zPath);
+  }
   if( ctx==0 ) return zMsg;
   if( zMsg ){
     sqlite3_result_error(ctx, zMsg, -1);
@@ -213565,13 +214983,13 @@ static char *jsonBadPathError(
 ** and return the result.
 **
 ** The specific operation is determined by eEdit, which can be one
-** of JEDIT_INS, JEDIT_REPL, or JEDIT_SET.
+** of JEDIT_INS, JEDIT_REPL, JEDIT_SET, or JEDIT_AINS.
 */
 static void jsonInsertIntoBlob(
   sqlite3_context *ctx,
   int argc,
   sqlite3_value **argv,
-  int eEdit                /* JEDIT_INS, JEDIT_REPL, or JEDIT_SET */
+  int eEdit                /* JEDIT_INS, JEDIT_REPL, JEDIT_SET, JEDIT_AINS */
 ){
   int i;
   u32 rc = 0;
@@ -213623,7 +215041,7 @@ static void jsonInsertIntoBlob(
   if( rc==JSON_LOOKUP_ERROR ){
     sqlite3_result_error(ctx, "malformed JSON", -1);
   }else{
-    jsonBadPathError(ctx, zPath);
+    jsonBadPathError(ctx, zPath, rc);
   }
   return;
 }
@@ -214065,7 +215483,7 @@ static void jsonArrayLengthFunc(
       if( i==JSON_LOOKUP_NOTFOUND ){
         /* no-op */
       }else if( i==JSON_LOOKUP_PATHERROR ){
-        jsonBadPathError(ctx, zPath);
+        jsonBadPathError(ctx, zPath, 0);
       }else{
         sqlite3_result_error(ctx, "malformed JSON", -1);
       }
@@ -214170,7 +215588,7 @@ static void jsonExtractFunc(
       j = jsonLookupStep(p, 0, jx.zBuf, 0);
       jsonStringReset(&jx);
     }else{
-      jsonBadPathError(ctx, zPath);
+      jsonBadPathError(ctx, zPath, 0);
       goto json_extract_error;
     }
     if( j<p->nBlob ){
@@ -214205,7 +215623,7 @@ static void jsonExtractFunc(
       sqlite3_result_error(ctx, "malformed JSON", -1);
       goto json_extract_error;
     }else{
-      jsonBadPathError(ctx, zPath);
+      jsonBadPathError(ctx, zPath, 0);
       goto json_extract_error;
     }
   }
@@ -214534,7 +215952,7 @@ static void jsonRemoveFunc(
       if( rc==JSON_LOOKUP_NOTFOUND ){
         continue;  /* No-op */
       }else if( rc==JSON_LOOKUP_PATHERROR ){
-        jsonBadPathError(ctx, zPath);
+        jsonBadPathError(ctx, zPath, rc);
       }else{
         sqlite3_result_error(ctx, "malformed JSON", -1);
       }
@@ -214546,7 +215964,7 @@ static void jsonRemoveFunc(
   return;
 
 json_remove_patherror:
-  jsonBadPathError(ctx, zPath);
+  jsonBadPathError(ctx, zPath, 0);
 
 json_remove_done:
   jsonParseFree(p);
@@ -214590,16 +216008,18 @@ static void jsonSetFunc(
   int argc,
   sqlite3_value **argv
 ){
-
   int flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
-  int bIsSet = (flags&JSON_ISSET)!=0;
+  int eInsType = JSON_INSERT_TYPE(flags);
+  static const char *azInsType[] = { "insert", "set", "array_insert" };
+  static const u8 aEditType[] = { JEDIT_INS, JEDIT_SET, JEDIT_AINS };
 
   if( argc<1 ) return;
+  assert( eInsType>=0 && eInsType<=2 );
   if( (argc&1)==0 ) {
-    jsonWrongNumArgs(ctx, bIsSet ? "set" : "insert");
+    jsonWrongNumArgs(ctx, azInsType[eInsType]);
     return;
   }
-  jsonInsertIntoBlob(ctx, argc, argv, bIsSet ? JEDIT_SET : JEDIT_INS);
+  jsonInsertIntoBlob(ctx, argc, argv, aEditType[eInsType]);
 }
 
 /*
@@ -214624,7 +216044,7 @@ static void jsonTypeFunc(
     zPath = (const char*)sqlite3_value_text(argv[1]);
     if( zPath==0 ) goto json_type_done;
     if( zPath[0]!='$' ){
-      jsonBadPathError(ctx, zPath);
+      jsonBadPathError(ctx, zPath, 0);
       goto json_type_done;
     }
     i = jsonLookupStep(p, 0, zPath+1, 0);
@@ -214632,7 +216052,7 @@ static void jsonTypeFunc(
       if( i==JSON_LOOKUP_NOTFOUND ){
         /* no-op */
       }else if( i==JSON_LOOKUP_PATHERROR ){
-        jsonBadPathError(ctx, zPath);
+        jsonBadPathError(ctx, zPath, 0);
       }else{
         sqlite3_result_error(ctx, "malformed JSON", -1);
       }
@@ -214888,12 +216308,11 @@ static void jsonArrayStep(
 }
 static void jsonArrayCompute(sqlite3_context *ctx, int isFinal){
   JsonString *pStr;
+  int flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
   pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0);
   if( pStr ){
-    int flags;
     pStr->pCtx = ctx;
     jsonAppendChar(pStr, ']');
-    flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
     if( pStr->eErr ){
       jsonReturnString(pStr, 0, 0);
       return;
@@ -214914,6 +216333,9 @@ static void jsonArrayCompute(sqlite3_context *ctx, int isFinal){
       sqlite3_result_text(ctx, pStr->zBuf, (int)pStr->nUsed, SQLITE_TRANSIENT);
       jsonStringTrimOneChar(pStr);
     }
+  }else if( flags & JSON_BLOB ){
+    static const u8 emptyArray = 0x0b;
+    sqlite3_result_blob(ctx, &emptyArray, 1, SQLITE_STATIC);
   }else{
     sqlite3_result_text(ctx, "[]", 2, SQLITE_STATIC);
   }
@@ -215010,12 +216432,11 @@ static void jsonObjectStep(
 }
 static void jsonObjectCompute(sqlite3_context *ctx, int isFinal){
   JsonString *pStr;
+  int flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
   pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0);
   if( pStr ){
-    int flags;
     jsonAppendChar(pStr, '}');
     pStr->pCtx = ctx;
-    flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
     if( pStr->eErr ){
       jsonReturnString(pStr, 0, 0);
       return;
@@ -215036,6 +216457,9 @@ static void jsonObjectCompute(sqlite3_context *ctx, int isFinal){
       sqlite3_result_text(ctx, pStr->zBuf, (int)pStr->nUsed, SQLITE_TRANSIENT);
       jsonStringTrimOneChar(pStr);
     }
+  }else if( flags & JSON_BLOB ){
+    static const unsigned char emptyObject = 0x0c;
+    sqlite3_result_blob(ctx, &emptyObject, 1, SQLITE_STATIC);
   }else{
     sqlite3_result_text(ctx, "{}", 2, SQLITE_STATIC);
   }
@@ -215536,7 +216960,7 @@ static int jsonEachFilter(
     if( zRoot==0 ) return SQLITE_OK;
     if( zRoot[0]!='$' ){
       sqlite3_free(cur->pVtab->zErrMsg);
-      cur->pVtab->zErrMsg = jsonBadPathError(0, zRoot);
+      cur->pVtab->zErrMsg = jsonBadPathError(0, zRoot, 0);
       jsonEachCursorReset(p);
       return cur->pVtab->zErrMsg ? SQLITE_ERROR : SQLITE_NOMEM;
     }
@@ -215554,7 +216978,7 @@ static int jsonEachFilter(
           return SQLITE_OK;
         }
         sqlite3_free(cur->pVtab->zErrMsg);
-        cur->pVtab->zErrMsg = jsonBadPathError(0, zRoot);
+        cur->pVtab->zErrMsg = jsonBadPathError(0, zRoot, 0);
         jsonEachCursorReset(p);
         return cur->pVtab->zErrMsg ? SQLITE_ERROR : SQLITE_NOMEM;
       }
@@ -215644,6 +217068,8 @@ SQLITE_PRIVATE void sqlite3RegisterJsonFunctions(void){
     JFUNCTION(jsonb,              1,1,0, 0,1,0,          jsonRemoveFunc),
     JFUNCTION(json_array,        -1,0,1, 1,0,0,          jsonArrayFunc),
     JFUNCTION(jsonb_array,       -1,0,1, 1,1,0,          jsonArrayFunc),
+    JFUNCTION(json_array_insert, -1,1,1, 1,0,JSON_AINS,  jsonSetFunc),
+    JFUNCTION(jsonb_array_insert,-1,1,0, 1,1,JSON_AINS,  jsonSetFunc),
     JFUNCTION(json_array_length,  1,1,0, 0,0,0,          jsonArrayLengthFunc),
     JFUNCTION(json_array_length,  2,1,0, 0,0,0,          jsonArrayLengthFunc),
     JFUNCTION(json_error_position,1,1,0, 0,0,0,          jsonErrorFunc),
@@ -220224,7 +221650,7 @@ static int geopolyParseNumber(GeoParse *p, GeoCoord *pVal){
      /* The sqlite3AtoF() routine is much much faster than atof(), if it
      ** is available */
      double r;
-     (void)sqlite3AtoF((const char*)p->z, &r, j, SQLITE_UTF8);
+     (void)sqlite3AtoF((const char*)p->z, &r);
      *pVal = r;
 #else
      *pVal = (GeoCoord)atof((const char*)p->z);
@@ -224163,7 +225589,7 @@ static int rbuDeltaApply(
           /* ERROR: copy exceeds output file size */
           return -1;
         }
-        if( (int)(ofst+cnt) > lenSrc ){
+        if( (u64)ofst+(u64)cnt > (u64)lenSrc ){
           /* ERROR: copy extends past end of input */
           return -1;
         }
@@ -225809,8 +227235,8 @@ static char *rbuObjIterGetIndexWhere(sqlite3rbu *p, RbuObjIter *pIter){
 
           /* If necessary, grow the pIter->aIdxCol[] array */
           if( iIdxCol==nIdxAlloc ){
-            RbuSpan *aIdxCol = (RbuSpan*)sqlite3_realloc(
-                pIter->aIdxCol, (nIdxAlloc+16)*sizeof(RbuSpan)
+            RbuSpan *aIdxCol = (RbuSpan*)sqlite3_realloc64(
+                pIter->aIdxCol, nIdxAlloc*sizeof(RbuSpan) + 16*sizeof(RbuSpan)
             );
             if( aIdxCol==0 ){
               rc = SQLITE_NOMEM;
@@ -230483,6 +231909,7 @@ struct carray_bind {
   int nData;                  /* Number of elements */
   int mFlags;                 /* Control flags */
   void (*xDel)(void*);        /* Destructor for aData */
+  void *pDel;                 /* Alternative argument to xDel() */
 };
 
 
@@ -230815,7 +232242,7 @@ static sqlite3_module carrayModule = {
 static void carrayBindDel(void *pPtr){
   carray_bind *p = (carray_bind*)pPtr;
   if( p->xDel!=SQLITE_STATIC ){
-     p->xDel(p->aData);
+    p->xDel(p->pDel);
   }
   sqlite3_free(p);
 }
@@ -230823,14 +232250,26 @@ static void carrayBindDel(void *pPtr){
 /*
 ** Invoke this interface in order to bind to the single-argument
 ** version of CARRAY().
+**
+**    pStmt        The prepared statement to which to bind
+**    idx          The index of the parameter of pStmt to which to bind
+**    aData        The data to be bound
+**    nData        The number of elements in aData
+**    mFlags       One of SQLITE_CARRAY_xxxx indicating datatype of aData
+**    xDestroy     Destructor for pDestroy or aData if pDestroy==NULL.
+**    pDestroy     Invoke xDestroy on this pointer if not NULL
+**
+** The destructor is called pDestroy if pDestroy!=NULL, or against
+** aData if pDestroy==NULL.
 */
-SQLITE_API int sqlite3_carray_bind(
+SQLITE_API int sqlite3_carray_bind_v2(
   sqlite3_stmt *pStmt,
   int idx,
   void *aData,
   int nData,
   int mFlags,
-  void (*xDestroy)(void*)
+  void (*xDestroy)(void*),
+  void *pDestroy
 ){
   carray_bind *pNew = 0;
   int i;
@@ -230907,20 +232346,38 @@ SQLITE_API int sqlite3_carray_bind(
       memcpy(pNew->aData, aData, sz);
     }
     pNew->xDel = sqlite3_free;
+    pNew->pDel = pNew->aData;
   }else{
     pNew->aData = aData;
     pNew->xDel = xDestroy;
+    pNew->pDel = pDestroy;
   }
   return sqlite3_bind_pointer(pStmt, idx, pNew, "carray-bind", carrayBindDel);
 
  carray_bind_error:
   if( xDestroy!=SQLITE_STATIC && xDestroy!=SQLITE_TRANSIENT ){
-    xDestroy(aData);
+    xDestroy(pDestroy);
   }
   sqlite3_free(pNew);
   return rc;
 }
 
+/*
+** Invoke this interface in order to bind to the single-argument
+** version of CARRAY().  Same as sqlite3_carray_bind_v2() with the
+** pDestroy parameter set to NULL.
+*/
+SQLITE_API int sqlite3_carray_bind(
+  sqlite3_stmt *pStmt,
+  int idx,
+  void *aData,
+  int nData,
+  int mFlags,
+  void (*xDestroy)(void*)
+){
+  return sqlite3_carray_bind_v2(pStmt,idx,aData,nData,mFlags,xDestroy,aData);
+}
+
 /*
 ** Invoke this routine to register the carray() function.
 */
@@ -231283,6 +232740,20 @@ static int sessionVarintGet(const u8 *aBuf, int *piVal){
   return getVarint32(aBuf, *piVal);
 }
 
+/*
+** Read a varint value from buffer aBuf[], size nBuf bytes, into *piVal.
+** Return the number of bytes read.
+*/
+static int sessionVarintGetSafe(const u8 *aBuf, int nBuf, int *piVal){
+  u8 aCopy[5];
+  const u8 *aRead = aBuf;
+  if( nBuf<5 ){
+    memcpy(aCopy, aBuf, nBuf);
+    aRead = aCopy;
+  }
+  return getVarint32(aRead, *piVal);
+}
+
 /* Load an unaligned and unsigned 32-bit integer */
 #define SESSION_UINT32(x) (((u32)(x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3])
 
@@ -231577,14 +233048,10 @@ static unsigned int sessionChangeHash(
     int isPK = pTab->abPK[i];
     if( bPkOnly && isPK==0 ) continue;
 
-    /* It is not possible for eType to be SQLITE_NULL here. The session
-    ** module does not record changes for rows with NULL values stored in
-    ** primary key columns. */
     assert( eType==SQLITE_INTEGER || eType==SQLITE_FLOAT
          || eType==SQLITE_TEXT || eType==SQLITE_BLOB
          || eType==SQLITE_NULL || eType==0
     );
-    assert( !isPK || (eType!=0 && eType!=SQLITE_NULL) );
 
     if( isPK ){
       a++;
@@ -231592,12 +233059,16 @@ static unsigned int sessionChangeHash(
       if( eType==SQLITE_INTEGER || eType==SQLITE_FLOAT ){
         h = sessionHashAppendI64(h, sessionGetI64(a));
         a += 8;
-      }else{
+      }else if( eType==SQLITE_TEXT || eType==SQLITE_BLOB ){
         int n;
         a += sessionVarintGet(a, &n);
         h = sessionHashAppendBlob(h, n, a);
         a += n;
       }
+      /* It should not be possible for eType to be SQLITE_NULL or 0x00 here,
+      ** as the session module does not record changes for rows with NULL
+      ** values stored in primary key columns. But a corrupt changesets
+      ** may contain such a value.  */
     }else{
       a += sessionSerialLen(a);
     }
@@ -234006,10 +235477,13 @@ static int sessionGenerateChangeset(
   }
 
   if( pSession->rc ) return pSession->rc;
-  rc = sqlite3_exec(pSession->db, "SAVEPOINT changeset", 0, 0, 0);
-  if( rc!=SQLITE_OK ) return rc;
 
   sqlite3_mutex_enter(sqlite3_db_mutex(db));
+  rc = sqlite3_exec(pSession->db, "SAVEPOINT changeset", 0, 0, 0);
+  if( rc!=SQLITE_OK ){
+    sqlite3_mutex_leave(sqlite3_db_mutex(db));
+    return rc;
+  }
 
   for(pTab=pSession->pTable; rc==SQLITE_OK && pTab; pTab=pTab->pNext){
     if( pTab->nEntry ){
@@ -234492,7 +235966,8 @@ static int sessionReadRecord(
       u8 *aVal = &pIn->aData[pIn->iNext];
       if( eType==SQLITE_TEXT || eType==SQLITE_BLOB ){
         int nByte;
-        pIn->iNext += sessionVarintGet(aVal, &nByte);
+        int nRem = pIn->nData - pIn->iNext;
+        pIn->iNext += sessionVarintGetSafe(aVal, nRem, &nByte);
         rc = sessionInputBuffer(pIn, nByte);
         if( rc==SQLITE_OK ){
           if( nByte<0 || nByte>pIn->nData-pIn->iNext ){
@@ -234545,7 +236020,8 @@ static int sessionChangesetBufferTblhdr(SessionInput *pIn, int *pnByte){
 
   rc = sessionInputBuffer(pIn, 9);
   if( rc==SQLITE_OK ){
-    nRead += sessionVarintGet(&pIn->aData[pIn->iNext + nRead], &nCol);
+    int nBuf = pIn->nData - pIn->iNext;
+    nRead += sessionVarintGetSafe(&pIn->aData[pIn->iNext], nBuf, &nCol);
     /* The hard upper limit for the number of columns in an SQLite
     ** database table is, according to sqliteLimit.h, 32676. So
     ** consider any table-header that purports to have more than 65536
@@ -234565,8 +236041,15 @@ static int sessionChangesetBufferTblhdr(SessionInput *pIn, int *pnByte){
     while( (pIn->iNext + nRead)<pIn->nData && pIn->aData[pIn->iNext + nRead] ){
       nRead++;
     }
+
+    /* Break out of the loop if if the nul-terminator byte has been found.
+    ** Otherwise, read some more input data and keep seeking. If there is
+    ** no more input data, consider the changeset corrupt.  */
     if( (pIn->iNext + nRead)<pIn->nData ) break;
     rc = sessionInputBuffer(pIn, nRead + 100);
+    if( rc==SQLITE_OK && (pIn->iNext + nRead)>=pIn->nData ){
+      rc = SQLITE_CORRUPT_BKPT;
+    }
   }
   *pnByte = nRead+1;
   return rc;
@@ -234698,10 +236181,10 @@ static int sessionChangesetNextOne(
     memset(p->apValue, 0, sizeof(sqlite3_value*)*p->nCol*2);
   }
 
-  /* Make sure the buffer contains at least 10 bytes of input data, or all
-  ** remaining data if there are less than 10 bytes available. This is
-  ** sufficient either for the 'T' or 'P' byte and the varint that follows
-  ** it, or for the two single byte values otherwise. */
+  /* Make sure the buffer contains at least 2 bytes of input data, or all
+  ** remaining data if there are less than 2 bytes available. This is
+  ** sufficient either for the 'T' or 'P' byte that begins a new table,
+  ** or for the "op" and "bIndirect" single bytes otherwise. */
   p->rc = sessionInputBuffer(&p->in, 2);
   if( p->rc!=SQLITE_OK ) return p->rc;
 
@@ -234731,11 +236214,13 @@ static int sessionChangesetNextOne(
     return (p->rc = SQLITE_CORRUPT_BKPT);
   }
 
-  p->op = op;
-  p->bIndirect = p->in.aData[p->in.iNext++];
-  if( p->op!=SQLITE_UPDATE && p->op!=SQLITE_DELETE && p->op!=SQLITE_INSERT ){
+  if( (op!=SQLITE_UPDATE && op!=SQLITE_DELETE && op!=SQLITE_INSERT)
+   || (p->in.iNext>=p->in.nData)
+  ){
     return (p->rc = SQLITE_CORRUPT_BKPT);
   }
+  p->op = op;
+  p->bIndirect = p->in.aData[p->in.iNext++];
 
   if( paRec ){
     int nVal;                     /* Number of values to buffer */
@@ -239623,14 +241108,22 @@ typedef union {
 #define sqlite3Fts5ParserARG_PARAM ,pParse
 #define sqlite3Fts5ParserARG_FETCH Fts5Parse *pParse=fts5yypParser->pParse;
 #define sqlite3Fts5ParserARG_STORE fts5yypParser->pParse=pParse;
+#undef fts5YYREALLOC
 #define fts5YYREALLOC realloc
+#undef fts5YYFREE
 #define fts5YYFREE free
+#undef fts5YYDYNSTACK
 #define fts5YYDYNSTACK 0
+#undef fts5YYSIZELIMIT
+#define sqlite3Fts5ParserCTX(P) 0
 #define sqlite3Fts5ParserCTX_SDECL
 #define sqlite3Fts5ParserCTX_PDECL
 #define sqlite3Fts5ParserCTX_PARAM
 #define sqlite3Fts5ParserCTX_FETCH
 #define sqlite3Fts5ParserCTX_STORE
+#undef fts5YYERRORSYMBOL
+#undef fts5YYERRSYMDT
+#undef fts5YYFALLBACK
 #define fts5YYNSTATE             35
 #define fts5YYNRULE              28
 #define fts5YYNRULE_WITH_ACTION  28
@@ -239955,15 +241448,24 @@ static int fts5yyGrowStack(fts5yyParser *p){
   int newSize;
   int idx;
   fts5yyStackEntry *pNew;
+#ifdef fts5YYSIZELIMIT
+  int nLimit = fts5YYSIZELIMIT(sqlite3Fts5ParserCTX(p));
+#endif
 
   newSize = oldSize*2 + 100;
+#ifdef fts5YYSIZELIMIT
+  if( newSize>nLimit ){
+    newSize = nLimit;
+    if( newSize<=oldSize ) return 1;
+  }
+#endif
   idx = (int)(p->fts5yytos - p->fts5yystack);
   if( p->fts5yystack==p->fts5yystk0 ){
-    pNew = fts5YYREALLOC(0, newSize*sizeof(pNew[0]));
+    pNew = fts5YYREALLOC(0, newSize*sizeof(pNew[0]), sqlite3Fts5ParserCTX(p));
     if( pNew==0 ) return 1;
     memcpy(pNew, p->fts5yystack, oldSize*sizeof(pNew[0]));
   }else{
-    pNew = fts5YYREALLOC(p->fts5yystack, newSize*sizeof(pNew[0]));
+    pNew = fts5YYREALLOC(p->fts5yystack, newSize*sizeof(pNew[0]), sqlite3Fts5ParserCTX(p));
     if( pNew==0 ) return 1;
   }
   p->fts5yystack = pNew;
@@ -240143,7 +241645,9 @@ static void sqlite3Fts5ParserFinalize(void *p){
   }
 
 #if fts5YYGROWABLESTACK
-  if( pParser->fts5yystack!=pParser->fts5yystk0 ) fts5YYFREE(pParser->fts5yystack);
+  if( pParser->fts5yystack!=pParser->fts5yystk0 ){
+    fts5YYFREE(pParser->fts5yystack, sqlite3Fts5ParserCTX(pParser));
+  }
 #endif
 }
 
@@ -241425,7 +242929,7 @@ static void fts5SnippetFunction(
 
   iBestCol = (iCol>=0 ? iCol : 0);
   nPhrase = pApi->xPhraseCount(pFts);
-  aSeen = sqlite3_malloc(nPhrase);
+  aSeen = sqlite3_malloc64(nPhrase);
   if( aSeen==0 ){
     rc = SQLITE_NOMEM;
   }
@@ -242080,7 +243584,7 @@ static char *sqlite3Fts5Strndup(int *pRc, const char *pIn, int nIn){
     if( nIn<0 ){
       nIn = (int)strlen(pIn);
     }
-    zRet = (char*)sqlite3_malloc(nIn+1);
+    zRet = (char*)sqlite3_malloc64((i64)nIn+1);
     if( zRet ){
       memcpy(zRet, pIn, nIn);
       zRet[nIn] = '\0';
@@ -242780,7 +244284,7 @@ static int sqlite3Fts5ConfigParse(
   sqlite3_int64 nByte;
   int bUnindexed = 0;             /* True if there are one or more UNINDEXED */
 
-  *ppOut = pRet = (Fts5Config*)sqlite3_malloc(sizeof(Fts5Config));
+  *ppOut = pRet = (Fts5Config*)sqlite3_malloc64(sizeof(Fts5Config));
   if( pRet==0 ) return SQLITE_NOMEM;
   memset(pRet, 0, sizeof(Fts5Config));
   pRet->pGlobal = pGlobal;
@@ -243328,8 +244832,6 @@ static void sqlite3Fts5ConfigErrmsg(Fts5Config *pConfig, const char *zFmt, ...){
   va_end(ap);
 }
 
-
-
 /*
 ** 2014 May 31
 **
@@ -243646,7 +245148,7 @@ static int sqlite3Fts5ExprNew(
 
   assert( sParse.rc!=SQLITE_OK || sParse.zErr==0 );
   if( sParse.rc==SQLITE_OK ){
-    *ppNew = pNew = sqlite3_malloc(sizeof(Fts5Expr));
+    *ppNew = pNew = sqlite3_malloc64(sizeof(Fts5Expr));
     if( pNew==0 ){
       sParse.rc = SQLITE_NOMEM;
       sqlite3Fts5ParseNodeFree(sParse.pExpr);
@@ -243798,7 +245300,7 @@ static int sqlite3Fts5ExprAnd(Fts5Expr **pp1, Fts5Expr *p2){
     p2->pRoot = 0;
 
     if( sParse.rc==SQLITE_OK ){
-      Fts5ExprPhrase **ap = (Fts5ExprPhrase**)sqlite3_realloc(
+      Fts5ExprPhrase **ap = (Fts5ExprPhrase**)sqlite3_realloc64(
           p1->apExprPhrase, nPhrase * sizeof(Fts5ExprPhrase*)
       );
       if( ap==0 ){
@@ -246710,7 +248212,7 @@ static int sqlite3Fts5HashNew(Fts5Config *pConfig, Fts5Hash **ppNew, int *pnByte
   int rc = SQLITE_OK;
   Fts5Hash *pNew;
 
-  *ppNew = pNew = (Fts5Hash*)sqlite3_malloc(sizeof(Fts5Hash));
+  *ppNew = pNew = (Fts5Hash*)sqlite3_malloc64(sizeof(Fts5Hash));
   if( pNew==0 ){
     rc = SQLITE_NOMEM;
   }else{
@@ -249303,7 +250805,7 @@ static void fts5SegIterReverseInitPage(Fts5Index *p, Fts5SegIter *pIter){
 
     /* If necessary, grow the pIter->aRowidOffset[] array. */
     if( iRowidOffset>=pIter->nRowidOffset ){
-      int nNew = pIter->nRowidOffset + 8;
+      i64 nNew = pIter->nRowidOffset + 8;
       int *aNew = (int*)sqlite3_realloc64(pIter->aRowidOffset,nNew*sizeof(int));
       if( aNew==0 ){
         p->rc = SQLITE_NOMEM;
@@ -252450,7 +253952,7 @@ static void fts5DoSecureDelete(
   int iSegid = pSeg->pSeg->iSegid;
   u8 *aPg = pSeg->pLeaf->p;
   int nPg = pSeg->pLeaf->nn;
-  int iPgIdx = pSeg->pLeaf->szLeaf;
+  int iPgIdx = pSeg->pLeaf->szLeaf;         /* Offset of page footer */
 
   u64 iDelta = 0;
   int iNextOff = 0;
@@ -252529,7 +254031,7 @@ static void fts5DoSecureDelete(
         iSOP += fts5GetVarint32(&aPg[iSOP], nPos);
       }
       assert_nc( iSOP==pSeg->iLeafOffset );
-      iNextOff = pSeg->iLeafOffset + pSeg->nPos;
+      iNextOff = iSOP + pSeg->nPos;
     }
   }
 
@@ -252609,31 +254111,31 @@ static void fts5DoSecureDelete(
       ** is another term following it on this page. So the subsequent term
       ** needs to be moved to replace the term associated with the entry
       ** being removed. */
-      int nPrefix = 0;
-      int nSuffix = 0;
-      int nPrefix2 = 0;
-      int nSuffix2 = 0;
+      u64 nPrefix = 0;
+      u64 nSuffix = 0;
+      u64 nPrefix2 = 0;
+      u64 nSuffix2 = 0;
 
       iDelKeyOff = iNextOff;
-      iNextOff += fts5GetVarint32(&aPg[iNextOff], nPrefix2);
-      iNextOff += fts5GetVarint32(&aPg[iNextOff], nSuffix2);
+      iNextOff += fts5GetVarint(&aPg[iNextOff], &nPrefix2);
+      iNextOff += fts5GetVarint(&aPg[iNextOff], &nSuffix2);
 
       if( iKey!=1 ){
-        iKeyOff += fts5GetVarint32(&aPg[iKeyOff], nPrefix);
+        iKeyOff += fts5GetVarint(&aPg[iKeyOff], &nPrefix);
       }
-      iKeyOff += fts5GetVarint32(&aPg[iKeyOff], nSuffix);
+      iKeyOff += fts5GetVarint(&aPg[iKeyOff], &nSuffix);
 
       nPrefix = MIN(nPrefix, nPrefix2);
       nSuffix = (nPrefix2 + nSuffix2) - nPrefix;
 
-      if( (iKeyOff+nSuffix)>iPgIdx || (iNextOff+nSuffix2)>iPgIdx ){
+      if( (iKeyOff+nSuffix)>(u64)iPgIdx || (iNextOff+nSuffix2)>(u64)iPgIdx ){
         FTS5_CORRUPT_IDX(p);
       }else{
         if( iKey!=1 ){
           iOff += sqlite3Fts5PutVarint(&aPg[iOff], nPrefix);
         }
         iOff += sqlite3Fts5PutVarint(&aPg[iOff], nSuffix);
-        if( nPrefix2>pSeg->term.n ){
+        if( nPrefix2>(u64)pSeg->term.n ){
           FTS5_CORRUPT_IDX(p);
         }else if( nPrefix2>nPrefix ){
           memcpy(&aPg[iOff], &pSeg->term.p[nPrefix], nPrefix2-nPrefix);
@@ -252664,7 +254166,7 @@ static void fts5DoSecureDelete(
         u8 *aTermIdx = &pTerm->p[pTerm->szLeaf];
         int nTermIdx = pTerm->nn - pTerm->szLeaf;
         int iTermIdx = 0;
-        int iTermOff = 0;
+        i64 iTermOff = 0;
 
         while( 1 ){
           u32 iVal = 0;
@@ -252675,12 +254177,15 @@ static void fts5DoSecureDelete(
         }
         nTermIdx = iTermIdx;
 
-        memmove(&pTerm->p[iTermOff], &pTerm->p[pTerm->szLeaf], nTermIdx);
-        fts5PutU16(&pTerm->p[2], iTermOff);
-
-        fts5DataWrite(p, iId, pTerm->p, iTermOff+nTermIdx);
-        if( nTermIdx==0 ){
-          fts5SecureDeleteIdxEntry(p, iSegid, pSeg->iTermLeafPgno);
+        if( iTermOff>pTerm->szLeaf ){
+          FTS5_CORRUPT_IDX(p);
+        }else{
+          memmove(&pTerm->p[iTermOff], &pTerm->p[pTerm->szLeaf], nTermIdx);
+          fts5PutU16(&pTerm->p[2], iTermOff);
+          fts5DataWrite(p, iId, pTerm->p, iTermOff+nTermIdx);
+          if( nTermIdx==0 ){
+            fts5SecureDeleteIdxEntry(p, iSegid, pSeg->iTermLeafPgno);
+          }
         }
       }
       fts5DataRelease(pTerm);
@@ -252703,7 +254208,9 @@ static void fts5DoSecureDelete(
     int iPrevKeyOut = 0;
     int iKeyIn = 0;
 
-    memmove(&aPg[iOff], &aPg[iNextOff], nMove);
+    if( nMove>0 ){
+      memmove(&aPg[iOff], &aPg[iNextOff], nMove);
+    }
     iPgIdx -= nShift;
     nPg = iPgIdx;
     fts5PutU16(&aPg[2], iPgIdx);
@@ -253623,16 +255130,16 @@ struct Fts5TokenDataMap {
 ** aMap[] variables.
 */
 struct Fts5TokenDataIter {
-  int nMapAlloc;                  /* Allocated size of aMap[] in entries */
-  int nMap;                       /* Number of valid entries in aMap[] */
+  i64 nMapAlloc;                  /* Allocated size of aMap[] in entries */
+  i64 nMap;                       /* Number of valid entries in aMap[] */
   Fts5TokenDataMap *aMap;         /* Array of (rowid+pos -> token) mappings */
 
   /* The following are used for prefix-queries only. */
   Fts5Buffer terms;
 
   /* The following are used for other full-token tokendata queries only. */
-  int nIter;
-  int nIterAlloc;
+  i64 nIter;
+  i64 nIterAlloc;
   Fts5PoslistReader *aPoslistReader;
   int *aPoslistToIter;
   Fts5Iter *apIter[FLEXARRAY];
@@ -253688,11 +255195,11 @@ static void fts5TokendataIterAppendMap(
 ){
   if( p->rc==SQLITE_OK ){
     if( pT->nMap==pT->nMapAlloc ){
-      int nNew = pT->nMapAlloc ? pT->nMapAlloc*2 : 64;
-      int nAlloc = nNew * sizeof(Fts5TokenDataMap);
+      i64 nNew = pT->nMapAlloc ? pT->nMapAlloc*2 : 64;
+      i64 nAlloc = nNew * sizeof(Fts5TokenDataMap);
       Fts5TokenDataMap *aNew;
 
-      aNew = (Fts5TokenDataMap*)sqlite3_realloc(pT->aMap, nAlloc);
+      aNew = (Fts5TokenDataMap*)sqlite3_realloc64(pT->aMap, nAlloc);
       if( aNew==0 ){
         p->rc = SQLITE_NOMEM;
         return;
@@ -253718,7 +255225,7 @@ static void fts5TokendataIterAppendMap(
 */
 static void fts5TokendataIterSortMap(Fts5Index *p, Fts5TokenDataIter *pT){
   Fts5TokenDataMap *aTmp = 0;
-  int nByte = pT->nMap * sizeof(Fts5TokenDataMap);
+  i64 nByte = pT->nMap * sizeof(Fts5TokenDataMap);
 
   aTmp = (Fts5TokenDataMap*)sqlite3Fts5MallocZero(&p->rc, nByte);
   if( aTmp ){
@@ -254252,9 +255759,10 @@ static Fts5TokenDataIter *fts5AppendTokendataIter(
 
   if( p->rc==SQLITE_OK ){
     if( pIn==0 || pIn->nIter==pIn->nIterAlloc ){
-      int nAlloc = pIn ? pIn->nIterAlloc*2 : 16;
-      int nByte = SZ_FTS5TOKENDATAITER(nAlloc+1);
-      Fts5TokenDataIter *pNew = (Fts5TokenDataIter*)sqlite3_realloc(pIn, nByte);
+      i64 nAlloc = pIn ? pIn->nIterAlloc*2 : 16;
+      i64 nByte = SZ_FTS5TOKENDATAITER(nAlloc+1);
+      Fts5TokenDataIter *pNew;
+      pNew = (Fts5TokenDataIter*)sqlite3_realloc64(pIn, nByte);
 
       if( pNew==0 ){
         p->rc = SQLITE_NOMEM;
@@ -254351,8 +255859,8 @@ static void fts5IterSetOutputsTokendata(Fts5Iter *pIter){
 
       /* Ensure the token-mapping is large enough */
       if( eDetail==FTS5_DETAIL_FULL && pT->nMapAlloc<(pT->nMap + nByte) ){
-        int nNew = (pT->nMapAlloc + nByte) * 2;
-        Fts5TokenDataMap *aNew = (Fts5TokenDataMap*)sqlite3_realloc(
+        i64 nNew = (pT->nMapAlloc + nByte) * 2;
+        Fts5TokenDataMap *aNew = (Fts5TokenDataMap*)sqlite3_realloc64(
             pT->aMap, nNew*sizeof(Fts5TokenDataMap)
         );
         if( aNew==0 ){
@@ -257381,7 +258889,7 @@ static int fts5BestIndexMethod(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){
     return SQLITE_ERROR;
   }
 
-  idxStr = (char*)sqlite3_malloc(pInfo->nConstraint * 8 + 1);
+  idxStr = (char*)sqlite3_malloc64((i64)pInfo->nConstraint * 8 + 1);
   if( idxStr==0 ) return SQLITE_NOMEM;
   pInfo->idxStr = idxStr;
   pInfo->needToFreeIdxStr = 1;
@@ -258831,6 +260339,7 @@ static int fts5UpdateMethod(
   }
 
  update_out:
+  sqlite3Fts5IndexCloseReader(pTab->p.pIndex);
   pTab->p.pConfig->pzErrmsg = 0;
   return rc;
 }
@@ -260348,7 +261857,7 @@ static void fts5SourceIdFunc(
 ){
   assert( nArg==0 );
   UNUSED_PARAM2(nArg, apUnused);
-  sqlite3_result_text(pCtx, "fts5: 2026-01-09 17:27:48 b270f8339eb13b504d0b2ba154ebca966b7dde08e40c3ed7d559749818cb2075", -1, SQLITE_TRANSIENT);
+  sqlite3_result_text(pCtx, "fts5: 2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6", -1, SQLITE_TRANSIENT);
 }
 
 /*
@@ -260512,7 +262021,7 @@ static int fts5Init(sqlite3 *db){
   int rc;
   Fts5Global *pGlobal = 0;
 
-  pGlobal = (Fts5Global*)sqlite3_malloc(sizeof(Fts5Global));
+  pGlobal = (Fts5Global*)sqlite3_malloc64(sizeof(Fts5Global));
   if( pGlobal==0 ){
     rc = SQLITE_NOMEM;
   }else{
@@ -262228,7 +263737,7 @@ static int fts5AsciiCreate(
   if( nArg%2 ){
     rc = SQLITE_ERROR;
   }else{
-    p = sqlite3_malloc(sizeof(AsciiTokenizer));
+    p = sqlite3_malloc64(sizeof(AsciiTokenizer));
     if( p==0 ){
       rc = SQLITE_NOMEM;
     }else{
@@ -262523,7 +264032,7 @@ static int fts5UnicodeCreate(
   if( nArg%2 ){
     rc = SQLITE_ERROR;
   }else{
-    p = (Unicode61Tokenizer*)sqlite3_malloc(sizeof(Unicode61Tokenizer));
+    p = (Unicode61Tokenizer*)sqlite3_malloc64(sizeof(Unicode61Tokenizer));
     if( p ){
       const char *zCat = "L* N* Co";
       int i;
@@ -262746,7 +264255,7 @@ static int fts5PorterCreate(
     zBase = azArg[0];
   }
 
-  pRet = (PorterTokenizer*)sqlite3_malloc(sizeof(PorterTokenizer));
+  pRet = (PorterTokenizer*)sqlite3_malloc64(sizeof(PorterTokenizer));
   if( pRet ){
     memset(pRet, 0, sizeof(PorterTokenizer));
     rc = pApi->xFindTokenizer_v2(pApi, zBase, &pUserdata, &pV2);
@@ -263453,7 +264962,7 @@ static int fts5TriCreate(
     rc = SQLITE_ERROR;
   }else{
     int i;
-    pNew = (TrigramTokenizer*)sqlite3_malloc(sizeof(*pNew));
+    pNew = (TrigramTokenizer*)sqlite3_malloc64(sizeof(*pNew));
     if( pNew==0 ){
       rc = SQLITE_NOMEM;
     }else{
@@ -265439,7 +266948,7 @@ static int fts5VocabFilterMethod(
       const char *zCopy = (const char *)sqlite3_value_text(pLe);
       if( zCopy==0 ) zCopy = "";
       pCsr->nLeTerm = sqlite3_value_bytes(pLe);
-      pCsr->zLeTerm = sqlite3_malloc(pCsr->nLeTerm+1);
+      pCsr->zLeTerm = sqlite3_malloc64((i64)pCsr->nLeTerm+1);
       if( pCsr->zLeTerm==0 ){
         rc = SQLITE_NOMEM;
       }else{
diff --git a/deps/sqlite/sqlite3.h b/deps/sqlite/sqlite3.h
index 6e975a6d199273..33856750dd35a9 100644
--- a/deps/sqlite/sqlite3.h
+++ b/deps/sqlite/sqlite3.h
@@ -146,12 +146,12 @@ extern "C" {
 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
 ** [sqlite_version()] and [sqlite_source_id()].
 */
-#define SQLITE_VERSION        "3.51.2"
-#define SQLITE_VERSION_NUMBER 3051002
-#define SQLITE_SOURCE_ID      "2026-01-09 17:27:48 b270f8339eb13b504d0b2ba154ebca966b7dde08e40c3ed7d559749818cb2075"
-#define SQLITE_SCM_BRANCH     "branch-3.51"
-#define SQLITE_SCM_TAGS       "release version-3.51.2"
-#define SQLITE_SCM_DATETIME   "2026-01-09T17:27:48.405Z"
+#define SQLITE_VERSION        "3.52.0"
+#define SQLITE_VERSION_NUMBER 3052000
+#define SQLITE_SOURCE_ID      "2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6"
+#define SQLITE_SCM_BRANCH     "trunk"
+#define SQLITE_SCM_TAGS       "release major-release version-3.52.0"
+#define SQLITE_SCM_DATETIME   "2026-03-06T16:01:44.367Z"
 
 /*
 ** CAPI3REF: Run-Time Library Version Numbers
@@ -1490,7 +1490,7 @@ typedef const char *sqlite3_filename;
 ** greater and the function pointer is not NULL) and will fall back
 ** to xCurrentTime() if xCurrentTimeInt64() is unavailable.
 **
-** ^The xSetSystemCall(), xGetSystemCall(), and xNestSystemCall() interfaces
+** ^The xSetSystemCall(), xGetSystemCall(), and xNextSystemCall() interfaces
 ** are not used by the SQLite core.  These optional interfaces are provided
 ** by some VFSes to facilitate testing of the VFS code. By overriding
 ** system calls with functions under its control, a test program can
@@ -2567,12 +2567,15 @@ struct sqlite3_mem_methods {
 ** [[SQLITE_DBCONFIG_STMT_SCANSTATUS]]
 ** <dt>SQLITE_DBCONFIG_STMT_SCANSTATUS</dt>
 ** <dd>The SQLITE_DBCONFIG_STMT_SCANSTATUS option is only useful in
-** SQLITE_ENABLE_STMT_SCANSTATUS builds. In this case, it sets or clears
-** a flag that enables collection of the sqlite3_stmt_scanstatus_v2()
-** statistics. For statistics to be collected, the flag must be set on
-** the database handle both when the SQL statement is prepared and when it
-** is stepped. The flag is set (collection of statistics is enabled)
-** by default. <p>This option takes two arguments: an integer and a pointer to
+** [SQLITE_ENABLE_STMT_SCANSTATUS] builds. In this case, it sets or clears
+** a flag that enables collection of run-time performance statistics
+** used by [sqlite3_stmt_scanstatus_v2()] and the [nexec and ncycle]
+** columns of the [bytecode virtual table].
+** For statistics to be collected, the flag must be set on
+** the database handle both when the SQL statement is
+** [sqlite3_prepare|prepared] and when it is [sqlite3_step|stepped].
+** The flag is set (collection of statistics is enabled) by default.
+** <p>This option takes two arguments: an integer and a pointer to
 ** an integer.  The first argument is 1, 0, or -1 to enable, disable, or
 ** leave unchanged the statement scanstatus option.  If the second argument
 ** is not NULL, then the value of the statement scanstatus setting after
@@ -2645,6 +2648,22 @@ struct sqlite3_mem_methods {
 ** comments are allowed in SQL text after processing the first argument.
 ** </dd>
 **
+** [[SQLITE_DBCONFIG_FP_DIGITS]]
+** <dt>SQLITE_DBCONFIG_FP_DIGITS</dt>
+** <dd>The SQLITE_DBCONFIG_FP_DIGITS setting is a small integer that determines
+** the number of significant digits that SQLite will attempt to preserve when
+** converting floating point numbers (IEEE 754 "doubles") into text.  The
+** default value 17, as of SQLite version 3.52.0.  The value was 15 in all
+** prior versions.<p>
+** This option takes two arguments which are an integer and a pointer
+** to an integer.  The first argument is a small integer, between 3 and 23, or
+** zero.  The FP_DIGITS setting is changed to that small integer, or left
+** altered if the first argument is zero or out of range.  The second argument
+** is a pointer to an integer.  If the pointer is not NULL, then the value of
+** the FP_DIGITS setting, after possibly being modified by the first
+** arguments, is written into the integer to which the second argument points.
+** </dd>
+**
 ** </dl>
 **
 ** [[DBCONFIG arguments]] <h3>Arguments To SQLITE_DBCONFIG Options</h3>
@@ -2662,9 +2681,10 @@ struct sqlite3_mem_methods {
 ** the first argument.
 **
 ** <p>While most SQLITE_DBCONFIG options use the argument format
-** described in the previous paragraph, the [SQLITE_DBCONFIG_MAINDBNAME]
-** and [SQLITE_DBCONFIG_LOOKASIDE] options are different.  See the
-** documentation of those exceptional options for details.
+** described in the previous paragraph, the [SQLITE_DBCONFIG_MAINDBNAME],
+** [SQLITE_DBCONFIG_LOOKASIDE], and [SQLITE_DBCONFIG_FP_DIGITS] options
+** are different.  See the documentation of those exceptional options for
+** details.
 */
 #define SQLITE_DBCONFIG_MAINDBNAME            1000 /* const char* */
 #define SQLITE_DBCONFIG_LOOKASIDE             1001 /* void* int int */
@@ -2689,7 +2709,8 @@ struct sqlite3_mem_methods {
 #define SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE  1020 /* int int* */
 #define SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE   1021 /* int int* */
 #define SQLITE_DBCONFIG_ENABLE_COMMENTS       1022 /* int int* */
-#define SQLITE_DBCONFIG_MAX                   1022 /* Largest DBCONFIG */
+#define SQLITE_DBCONFIG_FP_DIGITS             1023 /* int int* */
+#define SQLITE_DBCONFIG_MAX                   1023 /* Largest DBCONFIG */
 
 /*
 ** CAPI3REF: Enable Or Disable Extended Result Codes
@@ -4171,6 +4192,7 @@ SQLITE_API void sqlite3_free_filename(sqlite3_filename);
 ** <li> sqlite3_errmsg()
 ** <li> sqlite3_errmsg16()
 ** <li> sqlite3_error_offset()
+** <li> sqlite3_db_handle()
 ** </ul>
 **
 ** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
@@ -4217,7 +4239,7 @@ SQLITE_API const char *sqlite3_errstr(int);
 SQLITE_API int sqlite3_error_offset(sqlite3 *db);
 
 /*
-** CAPI3REF: Set Error Codes And Message
+** CAPI3REF: Set Error Code And Message
 ** METHOD: sqlite3
 **
 ** Set the error code of the database handle passed as the first argument
@@ -4336,6 +4358,10 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 ** [[SQLITE_LIMIT_EXPR_DEPTH]] ^(<dt>SQLITE_LIMIT_EXPR_DEPTH</dt>
 ** <dd>The maximum depth of the parse tree on any expression.</dd>)^
 **
+** [[SQLITE_LIMIT_PARSER_DEPTH]] ^(<dt>SQLITE_LIMIT_PARSER_DEPTH</dt>
+** <dd>The maximum depth of the LALR(1) parser stack used to analyze
+** input SQL statements.</dd>)^
+**
 ** [[SQLITE_LIMIT_COMPOUND_SELECT]] ^(<dt>SQLITE_LIMIT_COMPOUND_SELECT</dt>
 ** <dd>The maximum number of terms in a compound SELECT statement.</dd>)^
 **
@@ -4380,6 +4406,7 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 #define SQLITE_LIMIT_VARIABLE_NUMBER           9
 #define SQLITE_LIMIT_TRIGGER_DEPTH            10
 #define SQLITE_LIMIT_WORKER_THREADS           11
+#define SQLITE_LIMIT_PARSER_DEPTH             12
 
 /*
 ** CAPI3REF: Prepare Flags
@@ -4424,12 +4451,29 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 ** fails, the sqlite3_prepare_v3() call returns the same error indications
 ** with or without this flag; it just omits the call to [sqlite3_log()] that
 ** logs the error.
+**
+** [[SQLITE_PREPARE_FROM_DDL]] <dt>SQLITE_PREPARE_FROM_DDL</dt>
+** <dd>The SQLITE_PREPARE_FROM_DDL flag causes the SQL compiler to enforce
+** security constraints that would otherwise only be enforced when parsing
+** the database schema.  In other words, the SQLITE_PREPARE_FROM_DDL flag
+** causes the SQL compiler to treat the SQL statement being prepared as if
+** it had come from an attacker.  When SQLITE_PREPARE_FROM_DDL is used and
+** [SQLITE_DBCONFIG_TRUSTED_SCHEMA] is off, SQL functions may only be called
+** if they are tagged with [SQLITE_INNOCUOUS] and virtual tables may only
+** be used if they are tagged with [SQLITE_VTAB_INNOCUOUS].  Best practice
+** is to use the SQLITE_PREPARE_FROM_DDL option when preparing any SQL that
+** is derived from parts of the database schema. In particular, virtual
+** table implementations that run SQL statements that are derived from
+** arguments to their CREATE VIRTUAL TABLE statement should always use
+** [sqlite3_prepare_v3()] and set the SQLITE_PREPARE_FROM_DDL flag to
+** prevent bypass of the [SQLITE_DBCONFIG_TRUSTED_SCHEMA] security checks.
 ** </dl>
 */
 #define SQLITE_PREPARE_PERSISTENT              0x01
 #define SQLITE_PREPARE_NORMALIZE               0x02
 #define SQLITE_PREPARE_NO_VTAB                 0x04
 #define SQLITE_PREPARE_DONT_LOG                0x10
+#define SQLITE_PREPARE_FROM_DDL                0x20
 
 /*
 ** CAPI3REF: Compiling An SQL Statement
@@ -4443,8 +4487,9 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 **
 ** The preferred routine to use is [sqlite3_prepare_v2()].  The
 ** [sqlite3_prepare()] interface is legacy and should be avoided.
-** [sqlite3_prepare_v3()] has an extra "prepFlags" option that is used
-** for special purposes.
+** [sqlite3_prepare_v3()] has an extra
+** [SQLITE_PREPARE_FROM_DDL|"prepFlags" option] that is some times
+** needed for special purpose or to pass along security restrictions.
 **
 ** The use of the UTF-8 interfaces is preferred, as SQLite currently
 ** does all parsing using UTF-8.  The UTF-16 interfaces are provided
@@ -4849,8 +4894,8 @@ typedef struct sqlite3_context sqlite3_context;
 ** it should be a pointer to well-formed UTF16 text.
 ** ^If the third parameter to sqlite3_bind_text64() is not NULL, then
 ** it should be a pointer to a well-formed unicode string that is
-** either UTF8 if the sixth parameter is SQLITE_UTF8, or UTF16
-** otherwise.
+** either UTF8 if the sixth parameter is SQLITE_UTF8 or SQLITE_UTF8_ZT,
+** or UTF16 otherwise.
 **
 ** [[byte-order determination rules]] ^The byte-order of
 ** UTF16 input text is determined by the byte-order mark (BOM, U+FEFF)
@@ -4896,10 +4941,15 @@ typedef struct sqlite3_context sqlite3_context;
 ** object and pointer to it must remain valid until then. ^SQLite will then
 ** manage the lifetime of its private copy.
 **
-** ^The sixth argument to sqlite3_bind_text64() must be one of
-** [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE]
-** to specify the encoding of the text in the third parameter.  If
-** the sixth argument to sqlite3_bind_text64() is not one of the
+** ^The sixth argument (the E argument)
+** to sqlite3_bind_text64(S,K,Z,N,D,E) must be one of
+** [SQLITE_UTF8], [SQLITE_UTF8_ZT], [SQLITE_UTF16], [SQLITE_UTF16BE],
+** or [SQLITE_UTF16LE] to specify the encoding of the text in the
+** third parameter, Z.  The special value [SQLITE_UTF8_ZT] means that the
+** string argument is both UTF-8 encoded and is zero-terminated.  In other
+** words, SQLITE_UTF8_ZT means that the Z array is allocated to hold at
+** least N+1 bytes and that the Z[N] byte is zero.  If
+** the E argument to sqlite3_bind_text64(S,K,Z,N,D,E) is not one of the
 ** allowed values shown above, or if the text encoding is different
 ** from the encoding specified by the sixth parameter, then the behavior
 ** is undefined.
@@ -5766,6 +5816,51 @@ SQLITE_API int sqlite3_create_window_function(
 **
 ** These constants define integer codes that represent the various
 ** text encodings supported by SQLite.
+**
+** <dl>
+** [[SQLITE_UTF8]] <dt>SQLITE_UTF8</dt><dd>Text is encoding as UTF-8</dd>
+**
+** [[SQLITE_UTF16LE]] <dt>SQLITE_UTF16LE</dt><dd>Text is encoding as UTF-16
+** with each code point being expressed "little endian" - the least significant
+** byte first.  This is the usual encoding, for example on Windows.</dd>
+**
+** [[SQLITE_UTF16BE]] <dt>SQLITE_UTF16BE</dt><dd>Text is encoding as UTF-16
+** with each code point being expressed "big endian" - the most significant
+** byte first.  This encoding is less common, but is still sometimes seen,
+** specially on older systems.
+**
+** [[SQLITE_UTF16]] <dt>SQLITE_UTF16</dt><dd>Text is encoding as UTF-16
+** with each code point being expressed either little endian or as big
+** endian, according to the native endianness of the host computer.
+**
+** [[SQLITE_ANY]] <dt>SQLITE_ANY</dt><dd>This encoding value may only be used
+** to declare the preferred text for [application-defined SQL functions]
+** created using [sqlite3_create_function()] and similar.  If the preferred
+** encoding (the 4th parameter to sqlite3_create_function() - the eTextRep
+** parameter) is SQLITE_ANY, that indicates that the function does not have
+** a preference regarding the text encoding of its parameters and can take
+** any text encoding that the SQLite core find convenient to supply.  This
+** option is deprecated.  Please do not use it in new applications.
+**
+** [[SQLITE_UTF16_ALIGNED]] <dt>SQLITE_UTF16_ALIGNED</dt><dd>This encoding
+** value may be used as the 3rd parameter (the eTextRep parameter) to
+** [sqlite3_create_collation()] and similar.  This encoding value means
+** that the application-defined collating sequence created expects its
+** input strings to be in UTF16 in native byte order, and that the start
+** of the strings must be aligned to a 2-byte boundary.
+**
+** [[SQLITE_UTF8_ZT]] <dt>SQLITE_UTF8_ZT</dt><dd>This option can only be
+** used to specify the text encoding to strings input to [sqlite3_result_text64()]
+** and [sqlite3_bind_text64()].  It means that the input string (call it "z")
+** is UTF-8 encoded and that it is zero-terminated.  If the length parameter
+** (call it "n") is non-negative, this encoding option means that the caller
+** guarantees that z array contains at least n+1 bytes and that the z[n]
+** byte has a value of zero.
+** This option gives the same output as SQLITE_UTF8, but can be more efficient
+** by avoiding the need to make a copy of the input string, in some cases.
+** However, if z is allocated to hold fewer than n+1 bytes or if the
+** z[n] byte is not zero, undefined behavior may result.
+** </dl>
 */
 #define SQLITE_UTF8           1    /* IMP: R-37514-35566 */
 #define SQLITE_UTF16LE        2    /* IMP: R-03371-37637 */
@@ -5773,6 +5868,7 @@ SQLITE_API int sqlite3_create_window_function(
 #define SQLITE_UTF16          4    /* Use native byte order */
 #define SQLITE_ANY            5    /* Deprecated */
 #define SQLITE_UTF16_ALIGNED  8    /* sqlite3_create_collation only */
+#define SQLITE_UTF8_ZT       16    /* Zero-terminated UTF8 */
 
 /*
 ** CAPI3REF: Function Flags
@@ -6278,10 +6374,14 @@ SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(voi
 **
 ** There is no limit (other than available memory) on the number of different
 ** client data pointers (with different names) that can be attached to a
-** single database connection.  However, the implementation is optimized
-** for the case of having only one or two different client data names.
-** Applications and wrapper libraries are discouraged from using more than
-** one client data name each.
+** single database connection.  However, the current implementation stores
+** the content on a linked list.  Insert and retrieval performance will
+** be proportional to the number of entries.  The design use case, and
+** the use case for which the implementation is optimized, is
+** that an application will store only small number of client data names,
+** typically just one or two.  This interface is not intended to be a
+** generalized key/value store for thousands or millions of keys.  It
+** will work for that, but performance might be disappointing.
 **
 ** There is no way to enumerate the client data pointers
 ** associated with a database connection.  The N parameter can be thought
@@ -6389,10 +6489,14 @@ typedef void (*sqlite3_destructor_type)(void*);
 ** set the return value of the application-defined function to be
 ** a text string which is represented as UTF-8, UTF-16 native byte order,
 ** UTF-16 little endian, or UTF-16 big endian, respectively.
-** ^The sqlite3_result_text64() interface sets the return value of an
+** ^The sqlite3_result_text64(C,Z,N,D,E) interface sets the return value of an
 ** application-defined function to be a text string in an encoding
-** specified by the fifth (and last) parameter, which must be one
-** of [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE].
+** specified the E parameter, which must be one
+** of [SQLITE_UTF8], [SQLITE_UTF8_ZT], [SQLITE_UTF16], [SQLITE_UTF16BE],
+** or [SQLITE_UTF16LE].  ^The special value [SQLITE_UTF8_ZT] means that
+** the result text is both UTF-8 and zero-terminated.  In other words,
+** SQLITE_UTF8_ZT means that the Z array holds at least N+1 byes and that
+** the Z[N] is zero.
 ** ^SQLite takes the text result from the application from
 ** the 2nd parameter of the sqlite3_result_text* interfaces.
 ** ^If the 3rd parameter to any of the sqlite3_result_text* interfaces
@@ -6479,7 +6583,7 @@ SQLITE_API void sqlite3_result_int(sqlite3_context*, int);
 SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
 SQLITE_API void sqlite3_result_null(sqlite3_context*);
 SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
-SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
+SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char *z, sqlite3_uint64 n,
                            void(*)(void*), unsigned char encoding);
 SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
 SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
@@ -7418,7 +7522,7 @@ SQLITE_API int sqlite3_table_column_metadata(
 ** ^The sqlite3_load_extension() interface attempts to load an
 ** [SQLite extension] library contained in the file zFile.  If
 ** the file cannot be loaded directly, attempts are made to load
-** with various operating-system specific extensions added.
+** with various operating-system specific filename extensions added.
 ** So for example, if "samplelib" cannot be loaded, then names like
 ** "samplelib.so" or "samplelib.dylib" or "samplelib.dll" might
 ** be tried also.
@@ -7426,10 +7530,10 @@ SQLITE_API int sqlite3_table_column_metadata(
 ** ^The entry point is zProc.
 ** ^(zProc may be 0, in which case SQLite will try to come up with an
 ** entry point name on its own.  It first tries "sqlite3_extension_init".
-** If that does not work, it constructs a name "sqlite3_X_init" where
-** X consists of the lower-case equivalent of all ASCII alphabetic
-** characters in the filename from the last "/" to the first following
-** "." and omitting any initial "lib".)^
+** If that does not work, it tries names of the form "sqlite3_X_init"
+** where X consists of the lower-case equivalent of all ASCII alphabetic
+** characters or all ASCII alphanumeric characters in the filename from
+** the last "/" to the first following "." and omitting any initial "lib".)^
 ** ^The sqlite3_load_extension() interface returns
 ** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
 ** ^If an error occurs and pzErrMsg is not 0, then the
@@ -8722,17 +8826,22 @@ SQLITE_API sqlite3_str *sqlite3_str_new(sqlite3*);
 ** pass the returned value to [sqlite3_free()] to avoid a memory leak.
 ** ^The [sqlite3_str_finish(X)] interface may return a NULL pointer if any
 ** errors were encountered during construction of the string.  ^The
-** [sqlite3_str_finish(X)] interface will also return a NULL pointer if the
+** [sqlite3_str_finish(X)] interface might also return a NULL pointer if the
 ** string in [sqlite3_str] object X is zero bytes long.
+**
+** ^The [sqlite3_str_free(X)] interface destroys both the sqlite3_str object
+** X and the string content it contains.  Calling sqlite3_str_free(X) is
+** the equivalent of calling [sqlite3_free](sqlite3_str_finish(X)).
 */
 SQLITE_API char *sqlite3_str_finish(sqlite3_str*);
+SQLITE_API void sqlite3_str_free(sqlite3_str*);
 
 /*
 ** CAPI3REF: Add Content To A Dynamic String
 ** METHOD: sqlite3_str
 **
-** These interfaces add content to an sqlite3_str object previously obtained
-** from [sqlite3_str_new()].
+** These interfaces add or remove content to an sqlite3_str object
+** previously obtained from [sqlite3_str_new()].
 **
 ** ^The [sqlite3_str_appendf(X,F,...)] and
 ** [sqlite3_str_vappendf(X,F,V)] interfaces uses the [built-in printf]
@@ -8755,6 +8864,10 @@ SQLITE_API char *sqlite3_str_finish(sqlite3_str*);
 ** ^The [sqlite3_str_reset(X)] method resets the string under construction
 ** inside [sqlite3_str] object X back to zero bytes in length.
 **
+** ^The [sqlite3_str_truncate(X,N)] method changes the length of the string
+** under construction to be N bytes are less.  This routine is a no-op if
+** N is negative or if the string is already N bytes or smaller in size.
+**
 ** These methods do not return a result code.  ^If an error occurs, that fact
 ** is recorded in the [sqlite3_str] object and can be recovered by a
 ** subsequent call to [sqlite3_str_errcode(X)].
@@ -8765,6 +8878,7 @@ SQLITE_API void sqlite3_str_append(sqlite3_str*, const char *zIn, int N);
 SQLITE_API void sqlite3_str_appendall(sqlite3_str*, const char *zIn);
 SQLITE_API void sqlite3_str_appendchar(sqlite3_str*, int N, char C);
 SQLITE_API void sqlite3_str_reset(sqlite3_str*);
+SQLITE_API void sqlite3_str_truncate(sqlite3_str*,int N);
 
 /*
 ** CAPI3REF: Status Of A Dynamic String
@@ -10598,9 +10712,9 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
 ** a variable pointed to by the "pOut" parameter.
 **
 ** The "flags" parameter must be passed a mask of flags. At present only
-** one flag is defined - SQLITE_SCANSTAT_COMPLEX. If SQLITE_SCANSTAT_COMPLEX
+** one flag is defined - [SQLITE_SCANSTAT_COMPLEX]. If SQLITE_SCANSTAT_COMPLEX
 ** is specified, then status information is available for all elements
-** of a query plan that are reported by "EXPLAIN QUERY PLAN" output. If
+** of a query plan that are reported by "[EXPLAIN QUERY PLAN]" output. If
 ** SQLITE_SCANSTAT_COMPLEX is not specified, then only query plan elements
 ** that correspond to query loops (the "SCAN..." and "SEARCH..." elements of
 ** the EXPLAIN QUERY PLAN output) are available. Invoking API
@@ -10614,7 +10728,8 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
 ** elements used to implement the statement - a non-zero value is returned and
 ** the variable that pOut points to is unchanged.
 **
-** See also: [sqlite3_stmt_scanstatus_reset()]
+** See also: [sqlite3_stmt_scanstatus_reset()] and the
+** [nexec and ncycle] columnes of the [bytecode virtual table].
 */
 SQLITE_API int sqlite3_stmt_scanstatus(
   sqlite3_stmt *pStmt,      /* Prepared statement for which info desired */
@@ -11156,19 +11271,41 @@ SQLITE_API int sqlite3_deserialize(
 /*
 ** CAPI3REF: Bind array values to the CARRAY table-valued function
 **
-** The sqlite3_carray_bind(S,I,P,N,F,X) interface binds an array value to
-** one of the first argument of the [carray() table-valued function].  The
-** S parameter is a pointer to the [prepared statement] that uses the carray()
-** functions.  I is the parameter index to be bound.  P is a pointer to the
-** array to be bound, and N is the number of eements in the array.  The
-** F argument is one of constants [SQLITE_CARRAY_INT32], [SQLITE_CARRAY_INT64],
-** [SQLITE_CARRAY_DOUBLE], [SQLITE_CARRAY_TEXT], or [SQLITE_CARRAY_BLOB] to
-** indicate the datatype of the array being bound.  The X argument is not a
-** NULL pointer, then SQLite will invoke the function X on the P parameter
-** after it has finished using P, even if the call to
-** sqlite3_carray_bind() fails. The special-case finalizer
-** SQLITE_TRANSIENT has no effect here.
-*/
+** The sqlite3_carray_bind_v2(S,I,P,N,F,X,D) interface binds an array value to
+** parameter that is the first argument of the [carray() table-valued function].
+** The S parameter is a pointer to the [prepared statement] that uses the carray()
+** functions.  I is the parameter index to be bound.  I must be the index of the
+** parameter that is the first argument to the carray() table-valued function.
+** P is a pointer to the array to be bound, and N is the number of elements in
+** the array.  The F argument is one of constants [SQLITE_CARRAY_INT32],
+** [SQLITE_CARRAY_INT64], [SQLITE_CARRAY_DOUBLE], [SQLITE_CARRAY_TEXT],
+** or [SQLITE_CARRAY_BLOB] to indicate the datatype of the array P.
+**
+** If the X argument is not a NULL pointer or one of the special
+** values [SQLITE_STATIC] or [SQLITE_TRANSIENT], then SQLite will invoke
+** the function X with argument D when it is finished using the data in P.
+** The call to X(D) is a destructor for the array P. The destructor X(D)
+** is invoked even if the call to sqlite3_carray_bind() fails. If the X
+** parameter is the special-case value [SQLITE_STATIC], then SQLite assumes
+** that the data static and the destructor is never invoked.  If the X
+** parameter is the special-case value [SQLITE_TRANSIENT], then
+** sqlite3_carray_bind_v2() makes its own private copy of the data prior
+** to returning and never invokes the destructor X.
+**
+** The sqlite3_carray_bind() function works the same as sqlite_carray_bind_v2()
+** with a D parameter set to P.  In other words,
+** sqlite3_carray_bind(S,I,P,N,F,X) is same as
+** sqlite3_carray_bind(S,I,P,N,F,X,P).
+*/
+SQLITE_API int sqlite3_carray_bind_v2(
+  sqlite3_stmt *pStmt,        /* Statement to be bound */
+  int i,                      /* Parameter index */
+  void *aData,                /* Pointer to array data */
+  int nData,                  /* Number of data elements */
+  int mFlags,                 /* CARRAY flags */
+  void (*xDel)(void*),        /* Destructor for aData */
+  void *pDel                  /* Optional argument to xDel() */
+);
 SQLITE_API int sqlite3_carray_bind(
   sqlite3_stmt *pStmt,        /* Statement to be bound */
   int i,                      /* Parameter index */
diff --git a/deps/sqlite/sqlite3ext.h b/deps/sqlite/sqlite3ext.h
index 5258faaed313c7..cad1a2a0016041 100644
--- a/deps/sqlite/sqlite3ext.h
+++ b/deps/sqlite/sqlite3ext.h
@@ -371,7 +371,11 @@ struct sqlite3_api_routines {
   /* Version 3.51.0 and later */
   int (*set_errmsg)(sqlite3*,int,const char*);
   int (*db_status64)(sqlite3*,int,sqlite3_int64*,sqlite3_int64*,int);
-  
+  /* Version 3.52.0 and later */
+  void (*str_truncate)(sqlite3_str*,int);
+  void (*str_free)(sqlite3_str*);
+  int (*carray_bind)(sqlite3_stmt*,int,void*,int,int,void(*)(void*));
+  int (*carray_bind_v2)(sqlite3_stmt*,int,void*,int,int,void(*)(void*),void*);
 };
 
 /*
@@ -710,6 +714,11 @@ typedef int (*sqlite3_loadext_entry)(
 /* Version 3.51.0 and later */
 #define sqlite3_set_errmsg             sqlite3_api->set_errmsg
 #define sqlite3_db_status64            sqlite3_api->db_status64
+/* Version 3.52.0 and later */
+#define sqlite3_str_truncate           sqlite3_api->str_truncate
+#define sqlite3_str_free               sqlite3_api->str_free
+#define sqlite3_carray_bind            sqlite3_api->carray_bind
+#define sqlite3_carray_bind_v2         sqlite3_api->carray_bind_v2
 #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
 
 #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)

From 84f60c26f75446e74358142c8273b9409a817407 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Mon, 9 Mar 2026 23:09:52 -0400
Subject: [PATCH 179/267] deps: update amaro to 1.1.8

PR-URL: https://github.com/nodejs/node/pull/62151
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com>
---
 deps/amaro/README.md         | 26 +++++++++++++++++++++++---
 deps/amaro/dist/index.js     |  6 +++---
 deps/amaro/dist/package.json |  2 +-
 deps/amaro/package.json      |  2 +-
 src/amaro_version.h          |  2 +-
 5 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/deps/amaro/README.md b/deps/amaro/README.md
index 0079b288068147..75653766de7a6b 100644
--- a/deps/amaro/README.md
+++ b/deps/amaro/README.md
@@ -41,11 +41,31 @@ node --import="amaro/strip" file.ts
 Enabling TypeScript feature transformation:
 
 ```bash
-node --experimental-transform-types --import="amaro/transform" file.ts
+node --enable-source-maps --import="amaro/transform" file.ts
 ```
 
-> Note that the "amaro/transform" loader should be used with `--experimental-transform-types` flag, or
-> at least with `--enable-source-maps` flag, to preserve the original source maps.
+> Note that the `amaro/transform` loader should be used with `--enable-source-maps`
+> to preserve accurate source-mapped stack traces.
+
+#### Programmatic registration with `module.register()`
+
+If you want TypeScript to "just work" in an existing codebase without passing `--import` every time, create a small bootstrap file and register Amaro once before loading your TS entrypoint.
+
+```mjs
+// bootstrap.mjs
+import { register } from "node:module";
+
+register("amaro/strip", import.meta.url);
+await import("./src/index.ts");
+```
+
+Then start your app through the bootstrap file:
+
+```bash
+node --watch ./bootstrap.mjs
+```
+
+For transform mode, swap `amaro/strip` with `amaro/transform` and run Node with `--enable-source-maps`.
 
 #### Type stripping in dependencies
 
diff --git a/deps/amaro/dist/index.js b/deps/amaro/dist/index.js
index e11be73ac5021e..b0f6fd4d108780 100644
--- a/deps/amaro/dist/index.js
+++ b/deps/amaro/dist/index.js
@@ -456,8 +456,8 @@ ${val.stack}`;
       const ret = false;
       return ret;
     };
-    module2.exports.__wbindgen_closure_wrapper5340 = function(arg0, arg1, arg2) {
-      const ret = makeMutClosure(arg0, arg1, 905, __wbg_adapter_50);
+    module2.exports.__wbindgen_closure_wrapper5029 = function(arg0, arg1, arg2) {
+      const ret = makeMutClosure(arg0, arg1, 668, __wbg_adapter_50);
       return addHeapObject(ret);
     };
     module2.exports.__wbindgen_debug_string = function(arg0, arg1) {
@@ -545,7 +545,7 @@ ${val.stack}`;
       throw new Error(getStringFromWasm0(arg0, arg1));
     };
     var { Buffer: Buffer2 } = require("node:buffer");
-    var bytes = Buffer2.from("AGFzbQEAAAAB5wRNYAAAYAABf2AAAX5gAX8AYAF/AX9gAX8BfmABfwF8YAJ/fwBgAn9/AX9gAn9/AX5gAn9/AXxgA39/fwBgA39/fwF/YAN/f38BfmAEf39/fwBgBH9/f38Bf2AEf39/fwF+YAV/f39/fwBgBX9/f39/AX9gBn9/f39/fwBgBn9/f39/fwF/YAd/f39/f39/AGAHf39/f39/fwF/YAh/f39/f39/fwBgCH9/f39/f39/AX9gC39/f39/f39/f39/AX9gDX9/f39/f39/f39/f38AYA5/f39/f39/f39/f39/fwF/YA9/f39/f39/f39/f39/f38Bf2ATf39/f39/f39/f39/f39/f39/fwF/YBd/f39/f39/f39/f39/f39/f39/f39/fwF/YAl/f39/f39+fn4AYAV/f39/fgBgBn9/f39+fwBgBH9/f34AYAZ/f39+f38AYAN/f34Bf2AEf39+fwBgBH9/fn8Bf2AFf39+f38AYAZ/f35/fn8AYAV/f31/fwBgBX9/fH9/AGACf34AYAJ/fgF/YAN/fn8AYAN/fn8Bf2AEf35/fwBgBH9+f34BfmADf35+AGADf35+AX9gBH9+fn8AYAV/fn5+fwBgBX9+fn5+AGAEf31/fwBgAn98AGADf3x/AX9gBH98f38AYAR/fH9/AX9gAX4AYAF+AX9gAX4BfmACfn8AYAJ+fwF+YAN+f38Bf2ACfn4AYAJ+fgF+YAN+fn8AYAR+fn9/AX5gBH5+fn8BfmAHfn5+f39/fwF+YAF8AX9gAXwBfGACfH8Bf2ACfH8BfGACfHwBfGADfHx8AXwCyxo9GF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX251bWJlcl9uZXcARxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmluZGdlbl9iaWdpbnRfZnJvbV91NjQAPBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18VX193YmluZGdlbl9zdHJpbmdfbmV3AAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fDV9fd2JpbmRnZW5faW4ACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18WX193YmluZGdlbl9ib29sZWFuX2dldAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX3N0cmluZ19nZXQABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18UX193YmluZGdlbl9pc19vYmplY3QABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18TX193YmluZGdlbl9qc3ZhbF9lcQAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgADGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2Vycm9yX25ldwAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX2JpZ2ludAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX251bWJlcl9nZXQABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18kX193YmdfaXNTYWZlSW50ZWdlcl8zNDNlMmJlZWVlY2UxYmIwAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0ADwYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2xlbmd0aF9lMmQyYTQ5MTMyYzFiMjU2AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fH19fd2JnX2l0ZXJhdG9yXzlhMjRjODhkZjg2MGRjNjUAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18lX193YmdfaW5zdGFuY2VvZl9NYXBfZjM0NjljZTIyNDRkMjQzMAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19zZXRfM2YxZDBiOTg0ZWQyNzJlZAALGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19uZXdfMjNhMjY2NWZhYzgzYzYxMQAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxNfX3diaW5kZ2VuX2lzX2ZhbHN5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJF9fd2JnX2dldHdpdGhyZWZrZXlfMWRjMzYxYmQxMDA1M2JmZQAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX3N0cmluZwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19nZXRfYjliOTMwNDdmZTNjZjQ1YgAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx9fX3diZ190b1N0cmluZ181Mjg1NTk3OTYwNjc2YjdiAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld180MDVlMjJmMzkwNTc2Y2UyAAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld183OGZlYjEwOGI2NDcyNzEzAAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX3NldF8zNzgzNzAyM2YzZDc0MGU4AAsYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxZfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX25leHRfNjU3NGUxYThhNjJkMTA1NQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtfX3diZ19kb25lXzc2OWU1ZWRlNGIzMWM2N2IABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18cX193YmdfdmFsdWVfY2QxZmZhN2IxYWI3OTRmMQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19nZXRfNjdiMmJhNjJmYzMwZGUxMgAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtfX3diZ19uZXh0XzI1ZmVhZGZjMDkxM2ZlYTkABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfY2FsbF82NzJhNGQyMTYzNGQ0YTI0AAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fIF9fd2JnX25ld25vYXJnc18xMDVlZDQ3MTQ3NWFhZjUwAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fLV9fd2JnX3N0YXRpY19hY2Nlc3Nvcl9HTE9CQUxfODhhOTAyZDEzYTU1N2QwNwABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXzJfX3diZ19zdGF0aWNfYWNjZXNzb3JfR0xPQkFMX1RISVNfNTY1NzhiZTdlOWY4MzJiMAABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXy1fX3diZ19zdGF0aWNfYWNjZXNzb3JfV0lORE9XXzVkZTM3MDQzYTkxYTljNDAAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18rX193Ymdfc3RhdGljX2FjY2Vzc29yX1NFTEZfMzdjNWQ0MThlNGJmNTgxOQABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx5fX3diZ19pc0FycmF5X2ExZWFiN2UwZDA2NzM5MWIABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfY2FsbF83Y2NjZGQ2OWUwNzkxYWUyAAwYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2xlbmd0aF9hNDQ2MTkzZGMyMmMxMmY4AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fEV9fd2JpbmRnZW5fbWVtb3J5AAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2J1ZmZlcl82MDljYzNlZWU1MWVkMTU4AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld19hMTIwMDJhN2Y5MWM3NWJlAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX3NldF82NTU5NWJkZDg2OGIzMDA5AAsYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fLF9fd2JnX2luc3RhbmNlb2ZfVWludDhBcnJheV8xNzE1NmJjZjExODA4NmE5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGV9fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXEACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18tX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl9lMTQ1ODU0MzJlMzczN2ZjAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JnX2VudHJpZXNfMzI2NWQ0MTU4YjMzZTVkYwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxBfX3diaW5kZ2VuX3Rocm93AAcYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHF9fd2JpbmRnZW5fYmlnaW50X2dldF9hc19pNjQABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18XX193YmluZGdlbl9kZWJ1Z19zdHJpbmcABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18SX193YmluZGdlbl9jYl9kcm9wAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX3RoZW5fNDRiNzM5NDZkMmZiM2U3ZAAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyVfX3diZ19xdWV1ZU1pY3JvdGFza185N2Q5MmI0ZmNjOGE2MWM1AAMYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJV9fd2JnX3F1ZXVlTWljcm90YXNrX2QzMjE5ZGVmODI1NTI0ODUABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18eX193YmdfcmVzb2x2ZV80ODUxNzg1YzljNWY1NzNkAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyNTM0MAAMA9AkziQOBxELCxEHBwcHBwsLBw4LCwsLBwcOBwcHBwsLBxMOCw4RDgcLBwcvBw4RBwcHCAcHBw4HOg4HBwsIBwcHDwcLBxMHEwsOEwQHCwcVEQcLCwcLDgsLBw4LBwMHBwcTEwcHBwgLCBMHBwcLBwcTBAcIAwcHBwcRBxUHCwcHDgMLBwcHAxMTExMTBw4HBwMODgcHBwcTAwwHBwcHBwcHBxEHEQcOBwcLBwMHAwcICw5LBwsTEQMHBw4BBw4IBwcLCwcHDgsHBwcISREDEQcLBwMHBwcHEwQMGhEHBw4HCwsRBwwOCAcIDhEIBwgODAsOCwgMBwgICAcTBwcIBwgHEREHDg4HAwcIAQcHAwcVAwcMCwcHBw4LDgcDBwgHBxERCwcICwcHEQcLBwcEBwsOCAgHBwMTDgsLERELDAdMEwcLBwgDAwsEBwcHBAgHBwsHBwcHCwcHBAQHBwcBBxUHCwsOCAcEDgwHAwcHBwcLAwcHCwcDEQcHDgwHCwgLEQcOCwMbBwgHBwcDBwcHCwsDBAsDBAcHBwcHBwsDAwMDAwsICAcNBwcHBAcHDxUDAwMODggWBw8LDgcHAwcHAwcHBwsLBwcHDwsHEwcLBw4PCwwHBwcVEQcLBwcPBwQOAwcHBwcHBwgEBwsHIQwTBwgHBwcHEwMVCAcVCwcLOAsIEQcHCAcIAwcLDA4OCwcHCwcHDAgHBwcHBwsMCAcMBwwODhgHCwcODgsLBwcIBwcHCAMHERELCwoLCAMIBw8PBwsDCwcHCwwIBxMDCwcHDAsHBw4EOgcDAwMOCwMDBwcHBw4HDggHAwgOCwcODAcDCAMLCAgHDAMHAw4ODAsLBwsDAwsIBwwoFQcLCAcHFwsHBwcHCAMLBwcMBwcHBxUHAwMDCAcHBwcIDgcHBwsMBwsREwUHAwsUCAcHBwwHBAcHCwsHEwgMEQMOAwcHBwcLBxMHDgcIAwcHLi0HBwcIDAMrBwsMCxEHBwcICwcOBwcHCw4OCxMHBwcOExMHCA4HBwcHAwcHBw4DBAcDEQcDCwsHEwcHBxMHCwMDFQcLCAsLDhUVBwsTEwsLBwgHEwgHBwcLC0REBwwLCxIIBwcHRAcHBwcHBxETFQMIEwcHFRMHBwRLDAcLBAgDBwcOEwgIBwcDCA4TMQwDBwcICwcHERMLBwgHBwcHCwcHCA4HDAcLBwsHBwcABwcHBwcHBwc+AwQIDgsDCx8HBwcHBwgHBwcHCAsOBwcHCwsLAwcRDg4HBwsOBwcTCAgHE0ALCwcHDgMIBwcLDggIBwcHCwwODg4OBxELBw4DCwcHAwcHCwsDBwQiCw4LDhMHBwgHBBYEBwQIBw4ICAcHCBQEEwcLEwsDAwUISAsTBwsLBwcOCwcOBwcIAwcWBwcHBw8LBwcHDAcVBAgHDg4HBwcHFQ4ICAMMBwsHBwMLCxMgBwcEBwcHBAMHBwcPEwQHCAgHBwsHCw4DBwcHAyUHAwcRDwsICAcHBAcTDgsOAwcLBwsLAwMLBwcRAzALDg4DAwsIBwMHBwsHBwgDBwgLEwgEAwsPBAgjCAMIEQgLBwMECw4TBxMDCwwMDhMTBwcHEhEDBwgICw8IEwcHBwcHDgcDBAgIBwcLBwMHDAMIBwQDAxMOBxMHCAgIBwsEBwcLAwsTCwMDExMLAw4LCwgHCAgICAgICAgIBxMDBwcHCwgIBwsDBwcHBwcHCwsHBwQHBxYODg4OBwQHEg4RCwgTEw4OBwcIAwgDCAcICAMICw4OCwcDEwgDDAgIDgcLDg4HBwsLCgcDAwcIEQsOCwMHBwMHCwMTCAsMDAMICAgFLQMHAwsLBwgHCAQDEQcLDgcHDgcEAwcHBwcHBwcPCwgMBwcDDA8PDxELAw4HBAMHBBEDDAgIBwsHCQsLBwcHBwsDDgsEBwcHCwsrBwcDBAsHBwcHBAcSEQsIBwcHCAMHExMHCxIHBwsFCBEHCwwMBwcHAw4HBwcHBxUDHgcMBy8DDwcHCAsOBAMHBwsHCAsODggICwsHDgMDCAsICAgIEwQIBwcDCAgDCAcICAgDAwcdCwMLCwcHBwcHCAcHDgcHDwMHDwsICAwHJgcLBwsLCAsHAwgHCAcHJgMECAQOCwcDAwMHBwcLCwscDgcPDgsLCAgOCAMREQsRFQcLCwsHAwcDAxEsAwMICAcHBwcIBw4HEQcIBAcOCxkOQBEHEQMMAwQDCAwMCAQTBwgDEQgOFQcHDAwHAwcOBAMHBwMIBw4HBzcOCwsOCAgHBwcIFgcICAcIAwMICAgDCAgIAwMrBwsHCA8EEwMHAwwDEQsHCAgHCAgHCAcHBwcMBwcLCAgDAwgIAwMTDgcHBAQHDgwHAwwLAw4OBwcHCwQEBwcRBwcHBwwHBwgICAgHBwgHCAMDAwgICAgDCAgICAMDDg4PBw4HEQcDCwMLCEoLCAsLEw0RFQcDDgcLBwQIBwcLCAcLCw4IBwQIBwcHCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBwsLBwcHBwMIS0tLBAcHCAgIBwgDBBMHCAgICAgHCAgICAMDCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgHBwcLCw8DBwMMCwsLBwMMDEtLSy0TBAQMCAcDAwMDAwgIAwgIAwMHCA4HEwMLLQMDBw4OCwsHCBEECBMkKwMOEQgLDggIBwcICAcICwMHAwgHBwcDCAgQBwgICAcICAgHEAsHCwMHAwcIFQgRCwQHCw4DBAgHCAQDEwgICAgLCwsHBwcHAwcDBwcMBzUHKxEMBwwIBysIAwcIEwMHBwsRBBELCA8RAwMHBwsPBwMICCQHBwskBwcHCAQEJAwMAwgHCAcHCAgICAgLDhMEAwsDAwsLBwMHBwMHBwcOBA4IDgcDBwMEEQsHBwgLCwMIBwcEAwcHAwcMBwcHBwMHCwcIBwgDBwMDDwsHAwMDAwMDAwMHCwgIDwcLCwcTDwcHBwcICAgIBwctBwgICAgHBwcHBwYLBxERDAdFDgsLAwMDAwgICAgICAgICAgICAgHAwcICAgICAgICAgICAgIAwMHDggIAw4OBwcLBA4LCwcOCxMLCwsLDgsEAwQDBwQHBAUHKwMPAwgDNA8DDAgMBwwMDAwICAgICAgICAgICAhBBwMIDAgHAwgHCAsPCAgIBxEIBwcDCAcDDgcHBwwECAgICAgICAgICAgEBwMHMzMHCAcICAgLDgcICAgICAgICAcEDgsICAgIDAsDDA4TCA4ICAMHAwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBwgICAgICAgICAgICAgICAgICAgICAgICAgICAMEBwcICAQDCAgLCAgLAwMBBAgICAsDCwMDAwgDBwcOBwcHCwsICAsIBwcRCAwOCAMLCwcHCwgICAgICAMDCAgIAwsDAwsICAgICAgICAgICAgLCw4EDggICAgICAgIBwcHCAgICAgIBwcHBwcHCw8ICw8OCAgMCAcLCwsDDgcICAgICAgICAg+CAgICAgICAgHAz4LBwMEBA4LCwsIBBERBwcDAwMDAwQICAgICAgOAwgICAgICAgICAgICAMICAgICAgICAgICAgICAMICAMREQgOERELCwgDCwsLBwgIBwcEBwcHBwgICBEOBz4HBwcLCz4MDAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBwcRBwgLCwsLCAsDEwMDCAgHEQMDBwMDAwcHBwMLCAgDAwMDBAgIAwMLAwgHDAgICEgABwcHBwsHBwcMAwsLBwMRAQcHCAcOBwwDAwMDBwcIAwsDAwcHBwwLDgcDBwMiCyIHAwMDAwMHCwsHCAsIAwQIBwcHBwcHBwMLCwMIEwMICAgIBAcLCAgICAcDBwMDBwMDBwMIBwMHAwMHBwsDCAcOCQkDBwcDAwMDBwMDCAgIAwMDAwMDAwMHAwMDAwcICAgDAwMDAwMDAwMHBwcHAwcDBwcDAwMDBwgLCwcHBwcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAMDAwMDAwMHBwMHBwMHBwMHAwMDAwMDBwMNAwcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQMDAwMIBwMRAwcDAwsHAwMDAwMDBxEREREHBwcDEQQRBw4HAwgDCAgICAgICwQOCAgNCBMICAgICAgICAQHCAgHBwgICAQIAwgHAwcHBxMDCAgDAwcLAwQIBwQLAwMDAwMDRgMDAz8rBw4ICwcLCAgICwcTCwgIQxMHBAICAgICDAwCAgICAgICAgICAgICAgICAgIMAgIHAgICAg4HBwcDCAMIDxUHBw43DAMDAgM7LQIICwcLBwsDAwQHBwgICBEICwsJAwgICAQEDwcDAwcHBwMICAgyMgsICAgICAQHEggPBwgHCAgHCAhCPQgICAgICAgICAgICAcHBwcHBwcHBwgHBwcHDwgOAxEICxEHEQgLCwgIBwcLAwkLBwgDAwMOBwsICAgICAgIDggIBwcECw07DgcICAQ7CAgICAcxAQcDAwAHAwgHBwMHBw4DAAAAAAsAAAgICAgICAgICAgICAgIBwcHCAwDDAAMDAgLSwcDBwMPBwgICAgECAgLBAwICAgJCxERCAgICAgIBAgICAgICAgHAwgICAgHBwcDDwcHBwMHCw4RAwsLDA4MAwMLBwcHBwQOBAMDAwsDCAcHBwcHBwcHBwcHBwcHCwcHAwsHATEHDAMDBwcHDhEDCAMPCAQECAMDAwMDAwcEBwcLBwsIDggICAMICAgIAwMHBAMICAclEQwMDAgIAwMICAMHCAgICAcIDgUDCAMOAwgIDwMDAwMHAwMDDAMDCAgICwQHAwsDAwgDAwcDAwQDBw4DBwgICAgIBAcIDQcHEQcFBwMDCwcHBwgIEwMHEQcHBwcDAwQEBwMHBwcHBwcHAwcHBwMHAwMHBwMDAwQLCBQPCAgDDw8DCA8PDw8HBw8HCwQHDxIREREnKikSCwMLAwsLDQQHDAgIBwcHBwcHBwcEBwcDBw4LAwsOAzIHBwgECzsOCAcBBw0NBAgHBwMDAwMIAwMDAwMLCwsPCwsLBwgOBQUMBwMDAwMDAwcIEQMDBwcDAwcEAwcLCwMDBAMICAMIAwg8CAgDCAMDDg4DBwcHBwcDAwMLBwcHBwMDBAMDAwMDAQEDCAgBAwQBAQEBAQcDAwMDAwMDAwQHBzsHAwMDAwMDAwMDOwMDAwMDAwMHAwMDAwcNAwMDCQgDAwgICAgICAcIAwMDAwsDCAMICAgNCAgBEQcHBwcHAz4DAwMDAwcHBwcHBwcHAwMDAwMHCwMDCAgICAgICAgLAwMDAwcICwcxCAcICAwICAgICAwICAgHDA8LDAgHAwgICAgICAgICAgDAwMDDAwMDAgDCAMDAwMLCAcICAwHDAcHAwcHAwMDAwMDAwMDAwMHCwcHBwcHAwgDAwgDAwEDAwMHAwMLCwgHBwcDBwsDAwQDEQQEBAgIDAMMAwsMDgMMAwwHOwMDAwMDAwMDAwMDAwMDAwcDBwMDAwcICwMHBwcLCAcHCAgICAgODg4ODg4OCAwICAgLBwMICwsDCAcICCsLCwcIBAgDAwMDAwMDAwMDAwMDAwMDAwMLAwcHBwcHBwcHBwcHBwcHCwcECAgHBwMHAwwEBwMIBwcHBwcICwcHBwwMCwgHAwwECwcHAwcDBwcDCAcHAwMHBwcHBwcHBwcHBwcHBw4OCAgICAgHDQMDBwMDBwMLCwsHCwMDBwQEBAcIAwMEBAgICwgLCAsMCAMODAgECAQICAgIAwgICAgEBAQEBAQICAgLBwgIBwQICAcICAgHBAgECAwMBwcHBwcHBwcHBwcHBwcHBwcHBwcHDAwMCAgICAgICAgICAgICAgICAgICAcHCAgICAgHBwcHBwcHBwcHB0E+A0EHBwcHBwcHBwcHBAgIAwMDAwMLBANMBxUIBAsEAgQEBAAHAwECAAMCAgICAgcIAgICAgcHBwIHBwcCAgIHBAcICAgDA0sEBAQEBAQEBAgEBAQEBAQDBAQEBAEDBAQESAQABAQEBAQEBAQEBAQEAAQEDAQEAQsHBwcHBwsEBwFwAbkMuQwFAwEAKAYJAX8BQYCAgAELB9QBCgZtZW1vcnkCAAl0cmFuc2Zvcm0ArRQNdHJhbnNmb3JtU3luYwDfFRNfX3diaW5kZ2VuX2V4cG9ydF8wAMAhE19fd2JpbmRnZW5fZXhwb3J0XzEBABNfX3diaW5kZ2VuX2V4cG9ydF8yAL8bE19fd2JpbmRnZW5fZXhwb3J0XzMArBwfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgCRIxNfX3diaW5kZ2VuX2V4cG9ydF80AK8fE19fd2JpbmRnZW5fZXhwb3J0XzUA+R4J+RgCAEEBC4YHkSC+BPUe0CK1HqkM/wmWIO0hsQi7I/kh9A/KIskhhiKUIKod9CGfEe4Rsw3vEaARvhOrI9AclSDXHbcP9hnZFO4box+cEYIX7RvaGv4b5B2QG6Ua3SCvHMQR4BLdGboc+BqdDdoRrhTgFpAepw+oD6YP4BXtDqERwRPeIIUi9RqaI6oIzh2oJLwEyBuRG5AUlBunJNwa5gP6DJgDkhudDKoPwBPsF6YavQ3IIb8jogapJPEk5yDmIOAF2w6wEJgbsB2KEbYe0h6tD8weyx6aH/kezh7NHtEe0B7PHqojoBvWHaYgpSC8H4sisR24BM4JsiPuIK0IzQ2yHYUY/w3fDbYNphDSHd0CnQOtI5Yd1gqaFJsbryPQFOYV7h3mGd0ftBXRFI4cwgLqCYoK4A3/B48c0xSwI7YfmxSSHN8K5xmzFcgRlBycFK0TjRzSFNUUlhyHGJcchhjWFLQJsA+THLMd5R2YHPoesQ+yD7MPoxGwBPIO/RSZHIMT1BTGHP4S1QfWDPwWoiDIHJEcrhPrDLEMtxToAf4Q/BTKHJoc/hrUBN8b/RbLHOAb5wq1D/0CpCDsA9gKmR3IE+8V9Q6gELEQ4Rn/FPEV1xTmIvAVuh//GpYYrgi2D5IQmBi5HZ0bnhu7DvchlxiPItQX4hm1BuYdkSKxJKEBwCOkEOkbhhO9H60auA+9DsYjwiOsGssIxyOoI5Ii+iDZHv4epyD/HsMjuBzKI6AOtxrpEuoS/BXrEr4drw3/IIAhgSHsEv0V/hW4GuoP6w//Fb8dwB2CIYEeuw+AFtcXjg7aF+cjtxilG5gTgRaCFrgYuRi6GLsYvBjtEpsSvRi+GIMW0BPBDr8Y0ROcEsYdpxLPE8AUiBXCFP8Ohw/pGOoY8gTnDf4dvSShDMEUjhWFF7kVhBaHFbwJiRXeE9kXwBjYF/kO0hOXC8EY1xPnGKwW6xOmEugY6COmG8IYwxjEGIUW0xPUE9UThhaHFtYTnRKeEsUYzwqIFp8Slw3GGIkWxxjIGMkYihaLFqcbshPYE4wWyhjLGI0WjhaPFswYkBaoG4YPuxWsDP0dvx/7HeoC/B3qE7YQ9BvyEuYW/A+8D8cVhA+hG6wjkxblGK0blxaYFqsWkRbKD4MPxhWrDJQWgyG+FNEY+RnvEr0P4BTzG6kb6SOHE6ASzRj6Dt8U4wzOGM8Y7hL7D78P0Bi+D5kTkhajFOEUjQ66FZUW5gjlDbUMtgyxCuoKoRKqG9IY6QuWFpkWwR3qI9MY3BHrI/wO7COrG5oW1BibFtUY1hjaE5wW1xizE50WnhaiEtsToxLmCdgY/CKLFb8U5RSPFYIPhhfDFeQUwhXxEJ8WoBb7Eb0VtQ78Ef0Rtg76HYEP/g7cE6QS2Ri1E/0OmhOWCcIO2hilEtsY3BjdE/4R3RjeGMEPoRaKFbQQtBPfGL4Vnw+/FeAYrBvfE/ASmxPAFekO/hOnGagZoxajCuAT4RPDDuIT4xPmDYwVgA/iGOQT5RPmE8QP7SPDD7UQ4xilFoEN+yL6GaYW4xTnE9oKpxbHD+QY8RKoFsQVqRacE8QO6ROqFu4jhQ+uG+YYwh3PEO8H5hStFssPxR2uFusY8xLwI/0irxuaEXbpGsUjqCCID/EjzxzDFL8J8yPyI5cihRm2GdwKiBntE+4T7xOwFvQjkxXaD/gj2Q+JGYoZixmxFvAT8RPyE7IWsxbzE6sSrBKMGbQWrRKYDY0ZtRaOGY8Ztha2E/QTtxaQGZEZuBa5FroWuxaWD4oPrQzrAocUuRD4Ev8PzA+RFdYVlA/YD78W1RWuDM8WyBT3EtQP7BT1I94XiBOuErAZiQ+SGZ4TvBa9FpMZlBmVGZYZlxn0Eq8SmBmZGb4W9RPGDpoZ9hOwEswdtxKGFMYUxxSPD5MPrRmuGfQE6Q2iDMoVkhX9E5sZ3xf3E5kLnBmdGcAW+BOxEp4Zgw3NFusU0RWrGeAX4ReLD8MWjA/2I8QWnxnFFvkTxhagGbcTxxbIFrIS+hOzEucJoRn+IpYVmBWSD4cX0BXPFfQQyRbKFoMSzBW3DoQShRK4DpAPwRaOD/sTtBKiGbkTjQ+fE5cJxw6jGbUSpBmlGfwThhKmGZUVuBC4E80VzBalCv8TgBTIDoEUghTqDbYSzQ+XFZEOzhaDFOcI6w26DLsMsgrrCqoZ7QvKHfcjoBPQFskO0Q+sGf8i9RLRFtIW0xbTD8sd1BavGeUMsRmyGfYS/g/WD7MZ1Q+hE9UW7RSSDtMVlQ+0Gckd0RDwB+4UuhC1GdYW/RnvFIEj3w71CasgpB/YFYoT2RXgDtoVoRqOIYsT/CP9I5wQuxmUFIAk/yP+I4ETvh6CHvkjiB+MINwI2xbvI90KyRWcHaMQtyGfEJwkmyT2F8QQhxqWBowUAEGIBwuxBa8f7CGwH8sg3h/OINAgzyCLIckgyiDMIM0gjh3fDKkd0AvqIsYilSPbINcgwyGiI8MijxPbGaYk8SG0IoolkyD0GtAkrBfyIboivxeiJJYj2SD1IZAT8h7aIPobVO8k9iHFIvwb8x6lFcEXyxuwHLEc3hm/E+ESlRfbGp8j3ST7IZkg3iSTG8IT3ySuHeAk4SSyHMchoCOhI/MWrAGTH/YEmyP4IZcg1SSjDdoJ1iSsHdck2CTIHsUhnCPVIogR9wGUH+kJnSP6IZgg2SSJEbQN2iStHdsk3CSOGsYhniPWIswUsxy3CLIetBzmCt8Zzgb1FrIGsBSvDMwblQfgGZ0H9haGEJEUtx+vF8wJ4SDgIOIg2iLbIpMU4yDCBPYa5CD5IJcfpCOTHfIkhCWEHPwh/SGzHucd7hyBIoIitB7+If8hgCLcIqokhCKnGqYj9gmJCtEFwxfoILkcpyP7EMMCnSCfIJ4gnCDgIsohnwryIMcRlAnuELUNsxf3BNsJxBPFE7Ej7BnHHOIivxy5H+Eb5SLJHNsbkBzxIM8UgAi1HcoX8R3kJN4btiPeEO4V8yTlJJoF6wOlBbMCiQj0HOkZtSPdEO0V4yS3HfAC8wGlBJsBiAjfEeYSsyPbC4AO4iT0DukC6gH2AoMBhgjCDNwQ7BW0I8cJnA60B/0JpgSHCP4W8hn8JM8XhSX7JJwenQnHCukKwQnSCvId7hn4JMsX9yT5JNwJnwuNDOsJpgztGYUK0gvXDJQK/QyUGO8ZrSTMF4Yl+iTnJK8J4QqJC90J7wrrGcUKnwzCDdAKzw3zHfEZryTOF8YKoAzDDdEK1g2gHPAZriTNF7gj6CSwCeIKigveCfAKgweqGvQk9SSHB+MWiQbHE7gN9RHmJI4i/wiZCqcRtyPeDuoZ9iS4HfAL8QubHq4jxQvtHcQL1BuTGrIVtBSxFc4UthXvHcQc1xu1FZcd5xXyHMMc/BrCHPAgwRyZHsAclRzLIcwhwgmNIeMbzSH1GcwcuSPYFLojoBeOC/Qg5BvzIPUgsg66HfYg6SKhHKEK9yD4IL4jqBH9C+cSzyGiCtIc0RylHMEj5gLJI8gNtiSAJcwQ0CG0JIcliCWJJf4k/yS9C9QLzAi6JLkkuCS3JOkPuyTMI8AfggfLI6QNxAmCI9IhpAqFIe0f6R/AD54fxx3EHfsOhRv+IO8fyQ/FFZ0T5A3ZHbwV8Ay4DN0e7h/ID6YewRWEG/sZ7B/GD6MX2RPTIYQh6h/CD8MdohboE58fpBaNFcgVmhKCDuoW4hTrH8UP4RjyG/EbxwjZDZUB9hy8JJARmQz3HPgcxgyzEPkcpAjEApERYIwC+hz7HIEF1gfiBdoN/Bz9HP4ckhGWIs8j0CPRI9Ij0yPUI9Uj1iPXI9gj2SPaI9sj3CPdI94j3yPgI+Ej4iPjI/8cogiAHYEd7AeBJYUDgQORAskHwSS+JL8kwCTPD6EfkQ+GIdcP1BWiE+gN2h3OFfIMvAzeHtAPyxXSD6QXhBTLFoUUoB/CFpQV0hWpEoQO6hTOD6kZgiWHIYILyyTKJMkkxSTSEJQRgyWnCsQf+yPNJOQe6yTsJO0kgyPUIagKhSP/GbwIiCPuFqsHjiPYIq4iryLvFtwDsCLwFvoHuxSxIvUPvBTKDIgasiKzIu8alRCvC4AVkCLlG6Ek0SS9ErshtSKPI88kvBK6IbciwyC4Ir0htiKdJLwhuSKsDo0b9hufJL4huyKMEI4bix3NB8sCjBu5IZokjAWqItoUgRXKE4wNsRiVEtsUghXLE40NshiWEvIJ4RG+EqkKxCDSJIwdzQjYCaYd4h3wGqQkCpTigAHOJL2xAwKaBH8MfiMAQYAgayIEJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAJYLQAcQQFxDQACQEHMhYQBIAFBMGogAS0APEEDRhsiBS0ADCIGQQJGDQAgBSgCACIHIAcoAgAiCEEBajYCACAIQX9MDQsgBCAGOgBMIAQgBzYCQCAEIAUpAgQ3AkQMCgsCQCABLQBEIgVBAkYNACAFQQFxDQAgBEECOgBMDAoLIAEtAEIhBSAEQQA6AIAbIARC5ICAgKAfNwL4GiAEQoqAgICgATcC8BogBEEANgKICiAEQoCAgIDAADcCgAogBSAFQQJGciEJAkAgA0UNACADQQJ0IQYgAiEFA0AgBEGQD2ogBEHwGmogBSgCABCUAQJAAkAgBCgCkA9BgICAgHhGDQAgBCgCmA8hByAEQQA2ApgPIARBADYC7BogBCAHNgLoGiAEIAQoApQPIgg2AtwaIAQgCCAHQQR0ajYC4BogBCgCgAohByAEIARBkA9qNgLkGgJAIAdBgICAgHhGDQAgBEGACmogBEHcGmoQ1gkgBCgCgApBgICAgHhGDQIgBEGACmoQjwgMAgsgBEHcGmoQ6AoMAQsgBEGACmoQmh4gBEGAgICAeDYCgAoLIAVBBGohBSAEQZAPahCaHiAGQXxqIgYNAAsLAkACQCAJQQFxRQ0AIARBgApqQQEQ5QEMAQsgBCgCgApBgICAgHhGDQACQCAEKAKICiIFQQJJDQAgBCgChAohBgJAIAVBFUkNACAGIAUQmA4MAQsgBUEEdCEHQRAhBQNAIAYgBiAFahDBByAHIAVBEGoiBUcNAAsLIARBgApqEI8ICyAEQaAJakEIaiAEQYAKakEIaigCADYCACAEIAQpAoAKIp4ENwOgCQJAIJ4Ep0GAgICAeEYNACABLQBCIgVBAkYgBXIhCCAEKAKoCSIJQQR0IQUgBCgCpAkiCiEGAkADQCAFRQ0BIAVBcGohBSAGLQAMIQcgBkEQaiEGIAcNAAwCCwsgASgCVEEBRw0AIAEoAlAoAgAiBSgCLA0AIAhBf3MgBSgCGEEAR3JBAXENACAEQZAPaiAKIAkQyAMgBCgCkA8iBUGHgICAeEYNACAELQCWDyEJIAQtAJUPIQggBC0AlA8hBwJAQckARQ0AIARBkBVqIARBkA9qQQdyQckA/AoAAAsCQEHAAkUNACAEQYAKaiAEQeAPakHAAvwKAAALAkACQAJAAkACQAJAAkACQCAFQYCAgIB4cyIGQQQgBkEHSRsOBwYAAQIDBAUGCyAEQRBqIAcgCBDmDkH8l4QBIQUgBCgCECEGDAYLIARBGGogCEH/AXFBCHQgB0H/AXFyIAlBEHRyEK4OQcSXhAEhBSAEKAIYIQYMBQsCQEHIAEUNACAEQZABaiAEQZEVakHIAPwKAAALIARBIGogBEGQAWoQrw5BtJiEASEFIAQoAiAhBgwECyAEIAk6APYaIAQgCDoA9RogBCAHOgD0GiAEIAU2AvAaAkBByQBFDQAgBEH3GmogBEGQFWpByQD8CgAACwJAQcACRQ0AIARBwBtqIARBgApqQcAC/AoAAAsgBEEoaiAEQfAaahCwDkHcmYQBIQUgBCgCKCEGDAMLIAQgCToAghggBCAIOgCBGCAEIAc6AIAYAkBByQBFDQAgBEGDGGogBEGQFWpByQD8CgAACwJAQbQBRQ0AIARBzBhqIARBgApqQbQB/AoAAAsgBEEwaiAEQYAYahCxDkGkmYQBIQUgBCgCMCEGDAILIARBqxRqIARBmBVqLQAAOgAAIAQgCToAohQgBCAIOgChFCAEIAc6AKAUIAQgBCkAkBU3AKMUIARBOGogBEGgFGoQmw5BjJeEASEFIAQoAjghBgwBCyAEQQhqIAcQtA9B7JiEASEFIAQoAgghBgsgBg0HCyADQQFHDQQCQCABKAJURQ0AIAEoAlAoAgAiBSgCGA0FIAUoAiwNBSAFLQAyQQFHDQUCQCABLQBCIgVBAkYNACAFQQFxRQ0GCyACKAIAIgUoAgBBB0cNBUEAIQcgBEEANgKYDyAEQoCAgIDAADcCkA8CQCAFKAIMIgYNAEEEIQZBACEFDAQLIAUoAggiCCAGQRxsaiELQQQhCkEAIQUCQANAIAUhCSAEQQA2AlggBEKAgICAEDcCUCAEIAg2ApABAkACQCAIKAIAIgVBAUYNAAJAIAVBBkYNACAEQQE2AvQaIARB0JCEATYC8BogBEIBNwL8GiAEQfkANgKEGCAEIARBgBhqNgL4GiAEIARBkAFqNgKAGCAEQfAaakHYkIQBEKgdAAsgCCgCDCIGRQ0BIAgoAggiBSAGQRxsaiEHA0AgBCAFNgKQFSAFKAIAQQFHDQQgBEHQAGogBUEEaigCACIGIAYgBUEIaigCAGoQ5BUgBUEcaiIFIAdHDQAMAgsLIARB0ABqIAgoAgQgCCgCCBCNIgsCQCAJIAQoApAPRw0AIARBkA9qQZyPhAEQ8xcgBCgClA8hCgsgBEHQAGpBCGooAgAhBSAKIAlBDGxqIgYgBCkCUDcCACAGQQhqIAU2AgAgBCAJQQFqIgU2ApgPIAhBHGoiCCALRg0EDAALCyAEQQE2AvQaIARB7I+EATYC8BogBEIBNwL8GiAEQfkANgKEGCAEIARBgBhqNgL4GiAEIARBkBVqNgKAGCAEQfAaakH0j4QBEKgdAAtBAEEAQYyPhAEQwxIACyAEQQI6AEwMCAsgCUG2F0sNASAEKAKQDyEHIAQoApQPIQYLIAYgBRCAHCAHIAYQ1CIMAQsgBCgCkA8iB0GAgICAeEYNACAEKAKUDyEIIARB8BpqIAQpApQPIp4EpyCeBEIgiKcQuwEgBC0A+RoiBkEDRw0BIAggBRCAHCAHIAgQ1CILIAQoAqAJQYCAgIB4Rg0CIARBwABqIAQoAqQJIAQoAqgJEN0ODAMLIARBgApqQQhqIARB8BpqQQhqLQAAOgAAIAQgBCkC8Bo3A4AKIAQgBC8B+ho7AYoKIAQgBjoAiQogBCAEQYAKahCbDiAEKAIAIQYgCCAFEIAcIAcgCBDUIkGMl4QBIQULIAAgBTYCCCAAIAY2AgQgAEECNgIAIARBoAlqEJoeDAULIARBAjoATAsgBEGgCWoQmh4LIAEgASgCACIFQQFqNgIAIAVBf0wNAAJAAkAgBC0ATCIFQQJHDQBBAiEMDAELIAQoAkAiCCAIKAIAIgZBAWo2AgAgBkF/TA0BIAQoAkghCyAEKAJEIQ0gBSEMCyABLQBAIQogAS0AQSEOIAEtAEMhBiABLQBKIQcgASgCFCEPIAEoAhAhCSAEQfAaahDXCiAEIA5BCiAKGyIQOgD5GiAEQYCAgAUgDyAJQQJGIgobIhE2AvQaIARBADoA/BogBEEAIAcgB0EDRhs6AP0aIARBAToA+BogBCAGIAZBAkZyQQFxIhI6APoaIARBASAJIAobIhM2AvAaIARBkA9qIARB8BpqIAIgAxBSAkACQAJAIAQoApAPQSpGDQAgBC8AxQ8gBEHHD2otAABBEHRyIQkgBC8AtQ8gBEG3D2otAABBEHRyIQogBC8ApQ8gBEGnD2otAABBEHRyIQYgBCgCzA8hDiAEKALIDyEPIAQtAMQPIRQgBCgCwA8hECAEKAK8DyEVIAQoArgPIRYgBC0AtA8hFyAEKAKwDyEYIAQoAqwPIRkgBCgCqA8hGiAELQCkDyEbIAQoAqAPIRwgBCgCnA8hHSAEKAKYDyEeIAQpA5APIZ4EIARB8BpqEKcJDAELIAQoApQPIQcgBEHwGmoQpwkCQCAFQQJGDQAgCCAIKAIAIgZBAWo2AgAgBkF/TA0DCyAEQQM6APwaIAQgAS0AQiIGQQJGIAZyQQFxIg86AIAbIARB8BpqEJMaIARB8BpqQQhqIgYgCzYCACAEIAU6APwaIARBkA9qQQhqIAYpAgA3AwAgBCANNgL0GiAEIAg2AvAaIAQgBCkC8Bo3A5APIARB8BpqENcKIARBAjoA8BwgBEEDOgDsHCAEQeAcaiEUAkACQCAELQCcDyIGQQNGDQAgBEGCCmogBEGfD2otAAA6AAAgBCAELwCdDzsBgAogBCgCkA8hCSAEKAKUDyEKIAQoApgPIQ4MAQsgBEGQD2oQkxpBAyEGCyAUEJMaIARB7xxqIARBgApqQQJqLQAAOgAAIAQgBjoA7BwgBCAONgLoHCAEIAo2AuQcIAQgCTYC4BwgBCAPOgDwHCAEIAQvAYAKOwDtHCAHIAcoAgAiH0EBajYCACAfQX9MDQICQAJAIAZB/gFxQQJHDQAMAQsgCSAJKAIAIh9BAWo2AgAgH0F/TA0DCyAUEJMaIARB8BpqEKcJIAQgDzoAcCAEIAY6AGwgBCAONgJoIAQgCjYCZCAEIAk2AmAgBCAHNgJcAkAgBUECRg0AIAggCCgCACIGQQFqNgIAIAZBf0wNAwsCQAJAAkACQAJAIAEtAEgiBkECRg0AIAZBAXFFDQELIAEtAEIiBkECRg0BIAZBAXENAQtBAiEOIAVBAkYNASAIIAgoAgAiBUF/ajYCACAFQQFHDQEgCCANEOwQDAILIARBADYC8BogBEEDOgCEGyAEQfAaakEIahCTGiAEQYAbaiIGIAs2AgAgBCAFOgCEGyAEQZAPakEIaiAGKQIANwMAIAQgDTYC/BogBCAINgL4GiAEIAQpAvgaNwOQDyAEQYgbaiIPENcKIARBAzoAhBsgBEEANgLwGgJAAkAgBC0AnA8iBUEDRg0AIARBggpqIARBnw9qLQAAOgAAIAQgBC8AnQ87AYAKIAQoApAPIQYgBCgClA8hCiAEKAKYDyEJDAELIARBkA9qEJMaQQMhBQsgBCgC9BohDiAEQfgaaiIUEJMaIARBhxtqIARBgApqQQJqLQAAOgAAIAQgBToAhBsgBCAJNgKAGyAEIAo2AvwaIAQgBjYC+BogBCAONgL0GiAEQQA2AvAaIAQgBC8BgAo7AIUbIAcgBygCACIOQQFqNgIAIA5Bf0wNBAJAAkAgBUH+AXFBAkcNAAwBCyAGIAYoAgAiDkEBajYCACAOQX9MDQULIBQQkxogDxCnCUEAIQ4MAQsLIARBiwFqIARB8BpqQQJqLQAAOgAAIAQgBC8A8Bo7AIkBIAQgBzYCjAEgBCAFOgCIASAEIAk2AoQBIAQgCjYCgAEgBCAGNgJ8IAQgDjYCdEEDIQkCQAJAAkAgAS0ARyIFQQJGDQAgBUEBcUUNAQsCQCABKAJYIgUoAiwNACAFLwAZQbMGcUUNAQsgAS0AQiEFIAEtAEkhBiABKAIcIQogASgCGCEJIARBjApqIiAQ1wogBEEBOgCJCiAHIAcoAgAiFEEBajYCACAEQYCAwAAgCiAJQQJGIg8bIgo2AoQKIAQgBiAGQQJGckEBcSIGOgCKCiAEIAUgBUECRnJBAXEiDjoAiAogBEEBIAkgDxsiDzYCgAogFEF/TA0EIAQgBzYCoAkCQAJAIAYNAEEAIQUCQEGAAkUNACAEQfAaakEAQYAC/AsACwNAIARB8BpqIAVqIAU6AAAgBUEBaiIFQYACRw0ACwJAQf8BRQ0AIARBkA9qIARB8BpqQf8B/AoAAAsgBC0A7xwhCQwBCwJAQf8BRQ0AIARBkA9qIAdBEGpB/wH8CgAACyAHLQCPAiEJCyAHIAcoAgAiBUEBajYCACAFQX9MDQQgBygC3AIhHyAEQfAaaiAHKALQAiIUQQRBBBCkDiAEKAL0GiEFAkACQAJAAkACQCAEKALwGkEBRg0AIARBgBhqQQhqIiFBADYCACAEIAQoAvgaNgKEGCAEIAU2AoAYIARBgBhqIBQQmw8gBEGQFWpBCGogISgCADYCACAEIAQpAoAYNwOQFSAHKALQAiEFIARCBDcCkBggBEIANwKIGCAEQoCAgIDAADcCgBggBUF/TA0BIARBADYCmBgCQAJAAkAgBUUNACAEQYAYaiAFEJsPIAUgBCgClBgiFEsNAQsgBCAFNgKUGAwBCyAEQYwYaiAFIBRrEJsPCyAEQfQdaiAEQZgYaigCADYCACAEQewdaiAEQZAYaikCADcCACAEQeQdaiAEQYAYakEIaikCADcCACAEIAQpAoAYNwLcHQJAQf8BRSIFDQAgBEH8HWogBEGQD2pB/wH8CgAACyAEQf7///8HNgKYGyAEIAc2ApQbIARCBDcCjBsgBEIANwKEGyAEQoCAgICAATcC/BogBCAGOgD6GiAEQQE6APkaIAQgDjoA+BogBCAKNgL0GiAEIA82AvAaAkAgBQ0AIARBnBtqIARBkA9qQf8B/AoAAAsgBEHMHWogBEGQFWpBCGooAgA2AgAgBEEANgLAHSAEQoCAgIDAADcCuB0gBCAfQQF0NgKoHSAEIAlB/wFxQQFqIgU2AqQdIARBICAFZ2s2AqAdIAQgBTYCnB0gBCAJOgCbHSAEQQA6APwfIARBADYC2B0gBEKAgICAgAE3AtAdIAQgCToA+x8gBCAGOgC2HSAEQQE6ALUdIAQgDjoAtB0gBCAKNgKwHSAEIA82AqwdIAQgBCkDkBU3AsQdIAQgBEGgCWo2AvgdIARBhBtqIRQgBEHcHWohDyAEKAKgCSIOKAK4AiEGA0AgBkUNAwJAAkAgBkEAIAZrcSIFQf8DSg0AAkAgBUE/Sg0AIAVBf2oiCUEfSw0GQQEgCXRBi4GCgHhxDQIMBgsgBUHAAEYNASAFQYABRg0BIAVBgAJHDQUMAQsCQCAFQf8/Sg0AAkAgBUH/D0oNACAFQYAERg0CIAVBgAhHDQYMAgsgBUGAEEYNASAFQYAgRw0FDAELAkAgBUH//wFKDQAgBUGAwABGDQEgBUGAgAFHDQUMAQsgBUGAgAJGDQAgBUGAgAhGDQAgBUGAgARHDQQLIAUgBnMhBiAFQYAETQ0AC0EtIQYMAwsgBSAEKAL4GkH084MBENggAAsgBEEBNgL0GiAEQbzlhAE2AvAaIARCATcC/BogBEEpNgKkFCAEQbDihAE2AqAUIAQgBEGgFGo2AvgaIARB8BpqQbTmhAEQqB0AC0H///8BIQoCQCAOKALcAkH///8BTQ0AQSwhBkEAIQ4MAQtBACEFAkAgDigCxAIiCSgCECIGRQ0AQQAhBSAJKAIMIAZBA3RqIglBeGpFDQAgCUF8aigCACEFCwJAAkBBACAFIAZBAXRrIgYgBiAFSxtBIE0NAEHg9IMBIQVBLiEKDAELIARBgBhqIARB8BpqEL8KIAQoAoQYIQUCQCAEKAKAGCIGQTBGDQAgBCkDiBghngQCQEEwRQ0AIARBkA9qIARBkBhqQTD8CgAACyCeBEIgiKchDiCeBKchCgwCCyAEIAU2ApAVAkACQAJAIAUNACAEKAL4HSgCACIFKALcAiEKIARBgBhqIARB8BpqQQAgBCAFKAKwAhD6CwJAIAQoAoAYIgZBMEYNACAEKAKEGCEFIAQpA4gYIZ4EAkBBMEUNACAEQZAPaiAEQZAYakEw/AoAAAsgngRCIIinIQ4gngSnIQoMBQsgBC0AtR1BAXFFDQIgBCgC+B0oAgAoAtwCIglFDQJBACEFA0AgBSAEKAL4HSgCACIGKALcAk8NAiAEQYAYaiAEQfAaakEBIAUgBigC2AIgBUECdGooAgAQ+gsCQCAEKAKAGCIGQTBHDQAgBUEBaiIFIAlGDQQMAQsLIAQoAoQYIQUgBCkDiBghngQCQEEwRQ0AIARBkA9qIARBkBhqQTD8CgAACyCeBEIgiKchDiCeBKchCgwECyAEQQA2ApAPIARBkBVqIARBkA9qENkbAAtB0PSDARDJIgALAkAgBCgCwB0iBUUNACAKQQF0IR8DQCAEIAVBf2oiBTYCwB0CQAJAIAQoArwdIAVBAnRqKAIAIgUgBCgCzB0iBk8NACAEKALIHSAFQQJ0aigCACEOIARBADoA/B8gBEEANgL0HSAEQYAYaiAEQfAaaiAFQgAQmwgCQCAEKAKAGCIGQTBGDQAgBCgChBghBSAEKQOIGCGeBAJAQTBFDQAgBEGQD2ogBEGQGGpBMPwKAAALIJ4EQiCIpyEOIJ4EpyEKDAYLA0AgBCgC2B0iBUUNAiAEIAVBf2oiBTYC2B0CQAJAAkACQAJAIAQoAtQdIAVBBHRqIgYoAgAiBSAEKAL4HSgCACIJKALQAiIKTw0AIAYpAwghngQCQAJAAkACQAJAAkACQCAJKALMAiAFQRRsaiIGKAIADgkEAAYLAQkCDAMECyAGKAIIIglFDQsgBigCBCEFIAlBA3QhCQwECyAGKAIIIgVFDQogBigCBEF8aiEJIAVBAnQhBQwICyAGKAIEIQUCQCAGKAIQIgYgH0kNAEEBIAYgH2t0IJ4EQgqIp3KtQgqGIJ4EQv8Hg4QhngQLIARBgBhqIARB8BpqIAUgngQQmwggBCgCgBgiBkEwRg0JIAQoAoQYIQUgBCkDiBghngQCQEEwRQ0AIARBkA9qIARBkBhqQTD8CgAACyCeBEIgiKchDiCeBKchCgwPCyAELQD8H0UNBEGk9IMBIQVBKyEKDA0LIARBgBhqIARB8BpqIA4gBkEEaiCeBBDyCCAEKAKAGCIGQTBGDQcgBCgChBghBSAEKQOIGCGeBAJAQTBFDQAgBEGQD2ogBEGQGGpBMPwKAAALIJ4EQiCIpyEOIJ4EpyEKDA0LAkADQCAEQYAYaiAEQfAaaiAOIAUgngQQ8gggBCgCgBgiBkEwRw0BIAVBCGohBSAJQXhqIglFDQgMAAsLIAQoAoQYIQUgBCkDiBghngQCQEEwRQ0AIARBkA9qIARBkBhqQTD8CgAACyCeBEIgiKchDiCeBKchCgwMCyAGKAIIQQJ0IQUgBigCBCEJQQAhCgNAIAVFDQYCQCAJKAIAIgZFDQAgBCAKQf8Bca1CgICAgJAgfiAGrYQ3A5AVIARBgBhqIARB8BpqIA4gBEGQFWogngQQ8gggBCgCgBgiBkEwRg0AIAQoAoQYIQUgBCkDiBghngQCQEEwRQ0AIARBkA9qIARBkBhqQTD8CgAACyCeBEIgiKchDiCeBKchCgwNCyAJQQRqIQkgCkEBaiEKIAVBfGohBQwACwsgBSAKQfC7hAEQwxIACyAGNQIEIZ8EIARBAToA/B8CQCAOIAQoAqAddCAEKAKkHWoiBSAEKAKEGyIGTw0AIAQoAoAbIAVBA3RqIJ8EQiqGIJ4EQv///////wCDhDcDAAwECyAFIAZB0PmDARDDEgALIAYoAgQhBSAEQYAYaiAEQfAaaiAGKAIIIJ4EEJsIAkAgBCgCgBgiBkEwRg0AIAQoAoQYIQUgBCkDiBghngQCQEEwRQ0AIARBkA9qIARBkBhqQTD8CgAACyCeBEIgiKchDiCeBKchCgwJCyAEQYAYaiAEQfAaaiAFIJ4EEJsIIAQoAoAYIgZBMEYNAiAEKAKEGCEFIAQpA4gYIZ4EAkBBMEUNACAEQZAPaiAEQZAYakEw/AoAAAsgngRCIIinIQ4gngSnIQoMCAsCQANAIARBgBhqIARB8BpqIAkgBWooAgAgngQQmwggBCgCgBgiBkEwRw0BIAVBfGoiBUUNAwwACwsgBCgChBghBSAEKQOIGCGeBAJAQTBFDQAgBEGQD2ogBEGQGGpBMPwKAAALIJ4EQiCIpyEOIJ4EpyEKDAcLIARBgBhqIARB8BpqIAYoAgQgngRCgPj/////AIMgBigCCCCeBKdyQf8Hca2EEJsIIAQoAoAYIgZBMEYNAAsgBCgChBghBSAEKQOIGCGeBAJAQTBFDQAgBEGQD2ogBEGQGGpBMPwKAAALIJ4EQiCIpyEOIJ4EpyEKDAULIAUgBkGU9IMBEMMSAAsgBCgCwB0iBQ0ACwsgBEHwGmoQzAMgBCgC+BohBSAEKAL0GiEGIAQoAvAaIQkgBCkC/BohngQCQEGoAkUNACAEQZAPaiAUQagC/AoAAAsgBCgCuB0gBCgCvB1BBEEEEMUSIAQoAsQdIAQoAsgdQQRBBBDFEiAEKALQHSAEKALUHUEIQRAQxRIgDxDWHiCeBEIgiKchDiCeBKchCkEAIQ8MAgtBLyEGCyAEQfAaahDTGSAEKAK4HSAEKAK8HUEEQQQQxRIgBCgCxB0gBCgCyB1BBEEEEMUSIAQoAtAdIAQoAtQdQQhBEBDFEiAEKALcHSAEKALgHUEEQQQQxRIgBCgC6B0gBCgC7B1BBEEEEMUSQQEhDwsgBCgCoAkiFCAUKAIAIhRBf2o2AgACQCAUQQFHDQAgBCgCoAkQ1RsLICAQpwkCQCAPRQ0AIAQgBTYC9BogBCAOrUIghiAKrYQ3A/gaIAQgBjYC8BoCQEEwRQ0AIARBgBtqIARBkA9qQTD8CgAACwJAIAZBKUsNACAEQfAaahD6FgtBAyEJDAILAkBBqAJFDQAgBEHwGmogBEGQD2pBqAL8CgAACyAOrUIghiAKrYQhngQMAQsLIAQgngQ3ApwBIAQgBTYCmAEgBCAGNgKUASAEIAk2ApABAkBBqAJFDQAgBEGkAWogBEHwGmpBqAL8CgAAC0IAIZ4EQgIhnwQCQAJAIAEtAEUiBUECRg0AIAVBAXENAEEAISIMAQsgBEHwGmoQ1wogBEECOgD9GiAEQQE7APsaIAQgEjoA+hogBCAQOgD5GiAEQQE6APgaIAQgETYC9BogBCATNgLwGiAEQZAPaiAEQfAaaiACIAMQUgJAIAQoApAPQSpGDQAgBEHHD2otAABBEHQhBSAELwDFDyEGIARBtw9qLQAAQRB0IQogBC8AtQ8hCyAEQacPai0AAEEQdCERIAQvAKUPIRIgBCgCzA8hDiAEKALIDyEPIAQtAMQPIRQgBCgCwA8hECAEKAK8DyEVIAQoArgPIRYgBC0AtA8hFyAEKAKwDyEYIAQoAqwPIRkgBCgCqA8hGiAELQCkDyEbIAQoAqAPIRwgBCgCnA8hHSAEKAKYDyEeIAQpA5APIZ4EIARB8BpqEKcJAkAgCUEDRg0AIARBkAFqENMZCyAGIAVyIQkgCyAKciEKIBIgEXIhBiAEQfQAahD8GiAEQdwAahDyHCAHIAcoAgAiBUF/ajYCACAFQQFHDQIgBxDVGwwCCyAEKAKUDyEiIARB8BpqEKcJAkAgAS0ARSIFQQJGDQAgBUEBcQ0ADAELAkAgDEECRg0AIAggCCgCACIFQQFqNgIAIAVBf0wNBCABLQBFIQULAkACQAJAIAVB/wFxQQJGDQAgBUEBcUUNAQsgBEHNG2pBAjoAAEIAIZ8EIARCADcD+BogBEIANwPwGiAEQYKEiBA2AMkbIARBAjYCwBsgBEECNgK4GyAEQQA2ArAbIARBAzoArBsgBCABLQBCIgVBAkYgBXJBAXE6AMgbAkAgDEECRg0AIAggCCgCACIFQQFqNgIAIAVBf0wNBiAEIAs2AogKIAQgDTYChAogBCAINgKACkKAgICAECGfBAsgBCAMOgCMCiAEQZAPaiAEQfAaaiAEQYAKahCdFCAEQQE6AOkPAkBBwABFDQAgBEGgCWogBEGQD2pBwAD8CgAACyAEQoGAgICgATcD8AkgBEKBgICAMDcD6AkgBEEBNgLgCSAEKQPoDyGeBCAEIAEoAgxBgICAASABKAIIGyIJNgLkCSAEIJ8EIJ4EQv//g4CAgECDhEKAgARCgIAEQgAgAS0ASSIFQQFxGyAFQQJGGyKgBIRCgICACIQioQQ3A/gJIARB0BtqIhIQ1wogBEHMG2pBggQ7AQAgBEIANwP4GiAEQgA3A/AaIARBgoSIEDYCyBsgBEECNgLAGyAEQQI2ArgbIARBADYCsBsgBEEDOgCsGwJAAkAgBC0A3AkiBUEDRg0AIAVBAkYNACAEKALQCSIGIAYoAgAiCkEBajYCACAKQX9MDQcgBCgC2AkhFCAEKALUCSEQDAELCyCgBEIQiKchCiCfBEIgiKchDiCeBEIIiKchDyCeBKchEQJAAkAgBCgCoAkiH0EBcQ0AQgAhngQMAQsgBEGAGGpBGGogBEHICWopAwA3AwAgBEGQGGogBEHACWopAwA3AwAgBCAEKQOwCTcDgBggBCAEQaAJakEYaikDADcDiBhCASGeBAsgBEGQD2pBGGogBCkDiBg3AwAgBEGwD2ogBEGQGGopAwA3AwAgBEG4D2ogBEGAGGpBGGopAwA3AwAgBCCeBDcDkA8gBEEBOgDrDyAEIAo6AOoPIAQgDzoA6Q8gBCAFOgDMDyAEIBQ2AsgPIAQgEDYCxA8gBCAGNgLADyAEIBE6AOgPIAQgBCkDgBg3A6APIAQgDjoA7A8gBEIANwOYDyAEQQA6AO0PIAQgCTYC1A8gBEEBNgLQDyAEQoGAgIAwNwPYDyAEQoGAgICgATcD4A8gBEHwGmogBEGQD2oQzAUhBiAHIAcoAgAiFEEBajYCACAUQX9MDQUgBEHQCWohEyAEQYAKaiAGIAcQ7QEgBkEwahCTGiASEKcJAkACQAJAIAQpA4AKIp8EQgKFIAQpA4gKIp4EhFBFDQACQEHAAEUNACAEQfAaaiAEQZAKakHAAPwKAAALIAQoAvAaQSlLDQEgBEHwGmoQ+hYMAQsCQEGQBUUNACAEQZAPaiAEQYAKakGQBfwKAAALIARB4BhqIhIQ1wogBEHcGGpBggQ7AQAgBEIANwOIGCAEQgA3A4AYIARBgoSIEDYC2BggBEECNgLQGCAEQQI2AsgYIARBADYCwBggBEEDOgC8GAJAAkAgBUEDRg0AIAVBAkYNACAEKALQCSIGIAYoAgAiFEEBajYCACAUQX9MDQkgBCgC2AkhFCAEKALUCSEQDAELCyChBEIYiKchEQJAAkAgH0EBcQ0AQgAhoAQMAQsgBEHgF2pBGGogBEHICWopAwA3AwAgBEHwF2ogBEHACWopAwA3AwAgBCAEKQOwCTcD4BcgBCAEQaAJakEYaikDADcD6BdCASGgBAsgBEGQFWpBGGogBCkD6Bc3AwAgBEGwFWogBEHwF2opAwA3AwAgBEG4FWogBEHgF2pBGGopAwA3AwAgBCCgBDcDkBUgBCAEKQPgFzcDoBUgBEEAOgDtFSAEIA46AOwVIAQgEToA6xUgBCAKOgDqFSAEIA86AOkVIARBADoA6BUgBEKBgICAoAE3A+AVIARCgYCAgDA3A9gVIAQgCTYC1BUgBCAFOgDMFSAEIBQ2AsgVIAQgEDYCxBUgBCAGNgLAFSAEQgA3A5gVIARBATYC0BUgBEECOgCMFSAEQaAUaiAEQZAVaiAEQYAVahCdFCAEQQA6APwUIARBgBhqIARBoBRqEMwFIQUgIiAiKAIAIgZBAWo2AgAgBkF/TA0HIARB8BpqIAUgIhDtASAFQTBqEJMaIBIQpwkgBCkD8BoioARCAoUgBCkD+BqEQgBSDQECQEHAAEUNACAEQYAYaiAEQYAbakHAAPwKAAALAkAgBCgCgBhBKUsNACAEQYAYahD6FgsgBEGQD2oQ8RwLIBMQkxoMAQsgoASnISMgBEGPG2otAAAhBSAEQfAaakEvai0AACEGIARB8BpqQT9qLQAAIQkgBEHwGmpBzwBqLQAAIQogBEHwGmpB3wBqLQAAIR8gBEHwGmpB7wBqLQAAISEgBEHwGmpB/wBqLQAAISAgBEHwGmpBjwFqLQAAISQgBEHwGmpBnwFqLQAAISUgBEHwGmpBrwFqLQAAISYgBEHwGmpBvwFqLQAAIScgBEHwGmpBzwFqLQAAISggBEHwGmpB3wFqLQAAISkgBEHwGmpB7wFqLQAAISogBEHwGmpB/wFqLQAAISsgBEHwGmpBjwJqLQAAISwgBEHwGmpBnwJqLQAAIS0gBEHwGmpBrwJqLQAAIS4gBEHwGmpBvwJqLQAAIS8gBEHwGmpBzwJqLQAAITAgBEHwGmpB3wJqLQAAITEgBEHwGmpB7wJqLQAAITIgBEHwGmpB/wJqLQAAITMgBEHwGmpBjwNqLQAAITQgBEHwGmpBnwNqLQAAITUgBEHwGmpBrwNqLQAAITYgBEHwGmpBvwNqLQAAITcgBEHwGmpBzwNqLQAAITggBEHwGmpB3wNqLQAAITkgBEHwGmpB7wNqLQAAITogBEHwGmpB/wNqLQAAITsgBEHwGmpBjwRqLQAAITwgBEHwGmpBnwRqLQAAIT0gBEHwGmpBrwRqLQAAIT4gBEHwGmpBvwRqLQAAIT8gBEHwGmpBzwRqLQAAIUAgBEHwGmpB3wRqLQAAIUEgBEHwGmpB7wRqLQAAIUIgBEHwGmpB/wRqLQAAIUMgBEHwGmpBjwVqLQAAIUQgBC0A/B8hRSAEKAL4HyFGIAQoAvQfIUcgBCgC8B8hSCAELQDsHyFJIAQoAugfIUogBCgC5B8hSyAEKALgHyFMIAQtANwfIU0gBCgC2B8hTiAEKALUHyFPIAQoAtAfIVAgBC0AzB8hUSAEKALIHyFSIAQoAsQfIVMgBCgCwB8hVCAELQC8HyFVIAQoArgfIVYgBCgCtB8hVyAEKAKwHyFYIAQtAKwfIVkgBCgCqB8hWiAEKAKkHyFbIAQoAqAfIVwgBC0AnB8hXSAEKAKYHyFeIAQoApQfIV8gBCgCkB8hYCAELQCMHyFhIAQoAogfIWIgBCgChB8hYyAEKAKAHyFkIAQtAPweIWUgBCgC+B4hZiAEKAL0HiFnIAQoAvAeIWggBC0A7B4haSAEKALoHiFqIAQoAuQeIWsgBCgC4B4hbCAELQDcHiFtIAQoAtgeIW4gBCgC1B4hbyAEKALQHiFwIAQtAMweIXEgBCgCyB4hciAEKALEHiFzIAQoAsAeIXQgBC0AvB4hdSAEKAK4HiF2IAQoArQeIXcgBCgCsB4heCAELQCsHiF5IAQoAqgeIXogBCgCpB4heyAEKAKgHiF8IAQtAJweIX0gBCgCmB4hfiAEKAKUHiF/IAQoApAeIYABIAQtAIweIYEBIAQoAogeIYIBIAQoAoQeIYMBIAQoAoAeIYQBIAQtAPwdIYUBIAQoAvgdIYYBIAQoAvQdIYcBIAQoAvAdIYgBIAQtAOwdIYkBIAQoAugdIYoBIAQoAuQdIYsBIAQoAuAdIYwBIAQtANwdIY0BIAQoAtgdIY4BIAQoAtQdIY8BIAQoAtAdIZABIAQtAMwdIZEBIAQoAsgdIZIBIAQoAsQdIZMBIAQoAsAdIZQBIAQtALwdIZUBIAQoArgdIZYBIAQoArQdIZcBIAQoArAdIZgBIAQtAKwdIZkBIAQoAqgdIZoBIAQoAqQdIZsBIAQoAqAdIZwBIAQtAJwdIZ0BIAQoApgdIZ4BIAQoApQdIZ8BIAQoApAdIaABIAQtAIwdIaEBIAQoAogdIaIBIAQoAoQdIaMBIAQoAoAdIaQBIAQtAPwcIaUBIAQoAvgcIaYBIAQoAvQcIacBIAQoAvAcIagBIAQtAOwcIakBIAQoAugcIaoBIAQoAuQcIasBIAQoAuAcIawBIAQtANwcIa0BIAQoAtgcIa4BIAQoAtQcIa8BIAQoAtAcIbABIAQtAMwcIbEBIAQoAsgcIbIBIAQoAsQcIbMBIAQoAsAcIbQBIAQtALwcIbUBIAQoArgcIbYBIAQoArQcIbcBIAQoArAcIbgBIAQtAKwcIbkBIAQoAqgcIboBIAQoAqQcIbsBIAQoAqAcIbwBIAQtAJwcIb0BIAQoApgcIb4BIAQoApQcIb8BIAQoApAcIcABIAQtAIwcIcEBIAQoAogcIcIBIAQoAoQcIcMBIAQoAoAcIcQBIAQtAPwbIcUBIAQoAvgbIcYBIAQoAvQbIccBIAQoAvAbIcgBIAQtAOwbIckBIAQoAugbIcoBIAQoAuQbIcsBIAQoAuAbIcwBIAQtANwbIc0BIAQoAtgbIc4BIAQoAtQbIc8BIAQoAtAbIdABIAQtAMwbIdEBIAQoAsgbIdIBIAQoAsQbIdMBIAQoAsAbIdQBIAQtALwbIdUBIAQoArgbIdYBIAQoArQbIdcBIAQoArAbIdgBIAQtAKwbIdkBIAQoAqgbIdoBIAQoAqQbIdsBIAQoAqAbIdwBIAQtAJwbId0BIAQoApgbId4BIAQoApQbId8BIAQoApAbIeABIAQtAIwbIeEBIAQoAogbIRIgBCgChBshESAEKAKAGyHiASAELwCNGyHjASAELwCdGyHkASAELwCtGyHlASAELwC9GyHmASAELwDNGyHnASAELwDdGyHoASAELwDtGyHpASAELwD9GyHqASAELwCNHCHrASAELwCdHCHsASAELwCtHCHtASAELwC9HCHuASAELwDNHCHvASAELwDdHCHwASAELwDtHCHxASAELwD9HCHyASAELwCNHSHzASAELwCdHSH0ASAELwCtHSH1ASAELwC9HSH2ASAELwDNHSH3ASAELwDdHSH4ASAELwDtHSH5ASAELwD9HSH6ASAELwCNHiH7ASAELwCdHiH8ASAELwCtHiH9ASAELwC9HiH+ASAELwDNHiH/ASAELwDdHiGAAiAELwDtHiGBAiAELwD9HiGCAiAELwCNHyGDAiAELwCdHyGEAiAELwCtHyGFAiAELwC9HyGGAiAELwDNHyGHAiAELwDdHyGIAiAELwDtHyGJAiAELwD9HyGKAiAEQYAYakHgAGoQ1wogBEHcGGpBggQ7AQAgBEIANwOIGCAEQgA3A4AYIARBgoSIEDYC2BggBEECNgLQGCAEQQI2AsgYIARBADYCwBggBEEDOgC8GAJAQdACRQ0AIARBkBVqIARBgBhqQdAC/AoAAAsgBEGcCmo1AgAhoQQgBEGACmpBL2otAAAhiwIgBEGACmpBP2otAAAhjAIgBEGACmpBzwBqLQAAIY0CIARBgApqQd8Aai0AACGOAiAEQYAKakHvAGotAAAhjwIgBEGACmpB/wBqLQAAIZACIARBgApqQY8Bai0AACGRAiAEQYAKakGfAWotAAAhkgIgBEGACmpBrwFqLQAAIZMCIARBgApqQb8Bai0AACGUAiAEQYAKakHPAWotAAAhlQIgBEGACmpB3wFqLQAAIZYCIARBgApqQe8Bai0AACGXAiAEQYAKakH/AWotAAAhmAIgBEGACmpBjwJqLQAAIZkCIARBgApqQZ8Cai0AACGaAiAEQYAKakGvAmotAAAhmwIgBEGACmpBvwJqLQAAIZwCIARBgApqQc8Cai0AACGdAiAEQYAKakHfAmotAAAhngIgBEGACmpB7wJqLQAAIZ8CIARBgApqQf8Cai0AACGgAiAEQYAKakGPA2otAAAhoQIgBEGACmpBnwNqLQAAIaICIARBgApqQa8Dai0AACGjAiAEQYAKakG/A2otAAAhpAIgBEGACmpBzwNqLQAAIaUCIARBgApqQd8D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BSAEQfAaahChICCWBCCWBCgCACIDQX9qNgIAIKgEIAKtQiCGhCCmBEI4hiCpBEIohoSEIaYEAkAgA0EBRw0AIJYEIJoEEOwQCyAYIZYEIB4hmgQMAwsgBSCYBEGQk4QBEMMSAAsgmAQgBCgCiApBoJOEARDYIAALIARBiBhqIARBnA9qKQIANwMAIARBkBhqIARBpA9qKQIANwMAIAQgBCkClA83A4AYIKYEQiCGIJsErYQgA61CKIaEIaYEIAQoApAPIQUgBEHwGmoQoSALIAVBCEYNBCAEQaQPaiAEQZAYaikDADcCACAEQZwPaiAEQYAYakEIaikDADcCACAEIAQpA4AYNwKUDyAEIAU2ApAPIAEtAEMhBSABKAIUIQIgASgCECEDIAEtAEEhGCABLQBAIR4gBEHwGmoQ1wogBEEBOwD7GiAEIBhBCiAeGzoA+RogBEEBOgD4GkECIZcEIARBAjoA/RogBEGAgIAFIAIgA0ECRiIYGzYC9BogBEEBIAMgGBs2AvAaIAQgBSAFQQJGckEBcToA+hogBCAEQZAPajYCgAogBEHgA2ogBEHwGmogBEGACmpBARBSIARB8BpqEKcJAkAgBCgC4ANBKkYNACAEQeADahD6FiCWBCCWBCgCACIFQX9qNgIAAkAgBUEBRw0AIJYEIJoEEOwQCyAEQZAPahChIAwFCyAEKALkAyGYBAJAAkAgAS0ARSIFQQJGDQAgBUEBcQ0AQQAhBUEAIbICQQAhmQRBACGcBAwBCyAEQfAaaiABIJgEENUGIAQvAP0aIAQtAP8aQRB0ciEFIAQtAPwaIbICIAQoAvgaIZkEIAQoAvQaIZwEIAQoAvAaIZcECwJAQYAFRQ0AIARBoARqIARBgBtqQYAF/AoAAAsgBEGQD2oQoSAgsQEhAyCwASECIK8BIRggrgEhHiCqASGuASCrASGvASCsASGwASCtASGxASCmASGqASCnASGrASCoASGsASCpASGtASCiASGmASCjASGnASCkASGoASClASGpASCeASGiASCfASGjASCgASGkASChASGlASCaASGeASCbASGfASCcASGgASCdASGhASCWASGaASCXASGbASCYASGcASCZASGdASCSASGWASCTASGXASCUASGYASCVASGZASCOASGSASCPASGTASCQASGUASCRASGVASCKASGOASCLASGPASCMASGQASCNASGRASCGASGKASCHASGLASCIASGMASCJASGNASCCASGGASCDASGHASCEASGIASCFASGJASB+IYIBIH8hgwEggAEhhAEggQEhhQEgeiF+IHshfyB8IYABIH0hgQEgdiF6IHcheyB4IXwgeSF9IHIhdiBzIXcgdCF4IHUheSBuIXIgbyFzIHAhdCBxIXUgaiFuIGshbyBsIXAgbSFxIGYhaiBnIWsgaCFsIGkhbSBiIWYgYyFnIGQhaCBlIWkgXiFiIF8hYyBgIWQgYSFlIFohXiBbIV8gXCFgIF0hYSBWIVogVyFbIFghXCBZIV0gUiFWIFMhVyBUIVggVSFZIE4hUiBPIVMgUCFUIFEhVSBKIU4gSyFPIEwhUCBNIVEgRiFKIEchSyBIIUwgSSFNIAshRiANIUcgCCFIIEUhSSCNAiELII4CIQ0gjwIhCCAMIUUgtwIhjAIgvwIhtwIgpwQhoAQgnwQhoQQgGiG/AiCQAiGNAiCRAiGOAiCSAiGPAiAZIR0gECEcIBQhGyAPIRogDiEZIAohBiCTAiGQAiCUAiGRAiCVAiGSAiAJIQogPSEJID4hPSA/IT4gQCE/IEEhQCBCIUEglgIhkwIglwIhlAIgmAIhlQIgQyFCIEQhQyDjASFEIJkCIZYCIJoCIZcCIJsCIZgCIOQBIeMBIOUBIeQBIOYBIeUBIOcBIeYBIOgBIecBIOkBIegBIJwCIZkCIJ0CIZoCIJ4CIZsCIOoBIekBIOsBIeoBIOwBIesBIO0BIewBIJ8CIZwCIKACIZ0CIKECIZ4CIO4BIe0BIO8BIe4BIPABIe8BIPEBIfABIPIBIfEBIPMBIfIBIKICIZ8CIKMCIaACIKQCIaECIPQBIfMBIPUBIfQBIKYCIaICIKcCIaMCIKgCIaQCIPYBIfUBIPcBIfYBIPgBIfcBIPkBIfgBIKUCIQ8g+gEh+QEg+wEh+gEg/AEh+wEg/QEh/AEgqQIhpQIgqgIhpgIgqwIhpwIgrAIhqAIg/gEh/QEgFiH+ASD/ASEWIIACIf8BIIECIYACIIICIYECIIMCIYICIIQCIYMCIK0CIakCIK4CIaoCIK8CIasCILACIawCIIUCIYQCIIYCIYUCIIcCIYYCIIgCIYcCIIkCIYgCIIoCIYkCIIMEIYoCIIIEIYMEILECIa0CIMEDIa4CIMIDIa8CIMMDIbACIIEEIYIEIIAEIYEEIP8DIYAEIP4DIf8DIMQDIbECIMUDIcEDIMYDIcIDIMcDIcMDIP0DIf4DIPwDIf0DIPsDIfwDIPoDIfsDIPkDIfoDIPgDIfkDIPcDIfgDIPYDIfcDIMgDIcQDIMkDIcUDIMoDIcYDIMsDIccDIPUDIfYDIPQDIfUDIPMDIfQDIPIDIfMDIPEDIfIDIPADIfEDIO8DIfADIO4DIe8DIMwDIcgDIM0DIckDIM4DIcoDIM8DIcsDIO0DIe4DIOwDIe0DIOsDIewDIOoDIesDIOkDIeoDIOgDIekDIBch6AMgJyEXICghJyDQAyHMAyDRAyHNAyDSAyHOAyDTAyHPAyApISggKiEpICshKiAsISsgLSEsIDwhLSDUAyHQAyDVAyHRAyDWAyHSAyDXAyHTAyAuIQ4gLyEuIDAhLyAxITAgMiExIDMhMiA0ITMgNSE0IDYhNSA3ITYg2AMh1AMg2QMh1QMg2gMh1gMg2wMh1wMgOCE3IDkhOCA6ITkgOyE6IJUEITsgBSGVBCCLAiE8INwDIdgDIN0DIdkDIN4DIdoDIN8DIdsDIOADIdwDIOEDId0DIOIDId4DIOMDId8DIOQDIeADIOUDIeEDIOYDIeIDIOcDIeMDIIgEIeQDIIkEIeUDIIoEIeYDIIsEIecDIIQEIYgEIIUEIYkEIIYEIYoEIIcEIYsEIJQEIYQEICIhhQQgByGGBCABIYcEILICIZQEIJkEISIgnAQhByCXBCEBICYhDCC7AiGyAiCkBCGeBCClBCGfBAwGCyADQRxqIQMgHiAFQQFqIgVHDQALCyCMAiCYBBCWHiCXBCCMAhDhIgwBC0EALQDg9p0BGkEQQdANENoHIgVFDQMgBSCVBDsAzQ0gBSA7OwC9DSAFIDo7AK0NIAUgOTsAnQ0gBSA4OwCNDSAFIDc7AP0MIAUgNjsA7QwgBSA1OwDdDCAFIDQ7AM0MIAUgMzsAvQwgBSAyOwCtDCAFIDE7AJ0MIAUgMDsAjQwgBSAvOwD9CyAFIC47AO0LIAUgiwI7AN0LIAUgPDsAzQsgBSAtOwC9CyAFICw7AK0LIAUgKzsAnQsgBSAqOwCNCyAFICk7AP0KIAUgKDsA7QogBSAnOwDdCiAFIBc7AM0KIAUg6AM7AL0KIAUg6QM7AK0KIAUg6gM7AJ0KIAUg6wM7AI0KIAUg7AM7AP0JIAUg7QM7AO0JIAUg7gM7AN0JIAUg7wM7AM0JIAUg8AM7AL0JIAUg8QM7AK0JIAUg8gM7AJ0JIAUg8wM7AI0JIAUg9AM7AP0IIAUg9QM7AO0IIAUg9gM7AN0IIAUg9wM7AM0IIAUg+AM7AL0IIAUg+QM7AK0IIAUg+gM7AJ0IIAUg+wM7AI0IIAUg/AM7AP0HIAUg/QM7AO0HIAUg/gM7AN0HIAUg/wM7AM0HIAUggAQ7AL0HIAUggQQ7AK0HIAUgggQ7AJ0HIAUggwQ7AI0HIAUgigI7AP0GIAUgiQI7AO0GIAUgiAI7AN0GIAUghwI7AM0GIAUghgI7AL0GIAUghQI7AK0GIAUghAI7AJ0GIAUggwI7AI0GIAUgggI7AP0FIAUggQI7AO0FIAUggAI7AN0FIAUg/wE7AM0FIAUgFjsAvQUgBSD+ATsArQUgBSD9ATsAnQUgBSD8ATsAjQUgBSD7ATsA/QQgBSD6ATsA7QQgBSD5ATsA3QQgBSD4ATsAzQQgBSD3ATsAvQQgBSD2ATsArQQgBSD1ATsAnQQgBSD0ATsAjQQgBSDzATsA/QMgBSDyATsA7QMgBSDxATsA3QMgBSDwATsAzQMgBSDvATsAvQMgBSDuATsArQMgBSDtATsAnQMgBSDsATsAjQMgBSDrATsA/QIgBSDqATsA7QIgBSDpATsA3QIgBSDoATsAzQIgBSDnATsAvQIgBSDmATsArQIgBSDlATsAnQIgBSDkATsAjQIgBSDjATsA/QEgBSBEOwDtASAFIEM7AN0BIAUgQjsAzQEgBSBBOwC9ASAFIEA7AK0BIAUgPzsAnQEgBSA+OwCNASAFID07AH0gBSAJOwBtIAUgCjsAXSAFIAY7AE0gBSCgBDcCNCAFIKQENwMgIAUgowQ3AxAgBSCUBDoAzA0gBSAiNgLIDSAFIAc2AsQNIAUgATYCwA0gBSCEBDoAvA0gBSCFBDYCuA0gBSCGBDYCtA0gBSCHBDYCsA0gBSCIBDoArA0gBSCJBDYCqA0gBSCKBDYCpA0gBSCLBDYCoA0gBSDkAzoAnA0gBSDlAzYCmA0gBSDmAzYClA0gBSDnAzYCkA0gBSDgAzoAjA0gBSDhAzYCiA0gBSDiAzYChA0gBSDjAzYCgA0gBSDcAzoA/AwgBSDdAzYC+AwgBSDeAzYC9AwgBSDfAzYC8AwgBSDYAzoA7AwgBSDZAzYC6AwgBSDaAzYC5AwgBSDbAzYC4AwgBSDUAzoA3AwgBSDVAzYC2AwgBSDWAzYC1AwgBSDXAzYC0AwgBSDQAzoAzAwgBSDRAzYCyAwgBSDSAzYCxAwgBSDTAzYCwAwgBSDMAzoAvAwgBSDNAzYCuAwgBSDOAzYCtAwgBSDPAzYCsAwgBSDIAzoArAwgBSDJAzYCqAwgBSDKAzYCpAwgBSDLAzYCoAwgBSDEAzoAnAwgBSDFAzYCmAwgBSDGAzYClAwgBSDHAzYCkAwgBSCxAjoAjAwgBSDBAzYCiAwgBSDCAzYChAwgBSDDAzYCgAwgBSCtAjoA/AsgBSCuAjYC+AsgBSCvAjYC9AsgBSCwAjYC8AsgBSCpAjoA7AsgBSCqAjYC6AsgBSCrAjYC5AsgBSCsAjYC4AsgBSClAjoA3AsgBSCmAjYC2AsgBSCnAjYC1AsgBSCoAjYC0AsgBSAVOgDMCyAFIKICNgLICyAFIKMCNgLECyAFIKQCNgLACyAFIBM6ALwLIAUgnwI2ArgLIAUgoAI2ArQLIAUgoQI2ArALIAUgHzoArAsgBSCcAjYCqAsgBSCdAjYCpAsgBSCeAjYCoAsgBSAhOgCcCyAFIJkCNgKYCyAFIJoCNgKUCyAFIJsCNgKQCyAFICA6AIwLIAUglgI2AogLIAUglwI2AoQLIAUgmAI2AoALIAUgJDoA/AogBSCTAjYC+AogBSCUAjYC9AogBSCVAjYC8AogBSAlOgDsCiAFIJACNgLoCiAFIJECNgLkCiAFIJICNgLgCiAFICY6ANwKIAUgjQI2AtgKIAUgjgI2AtQKIAUgjwI2AtAKIAUgDDoAzAogBSALNgLICiAFIA02AsQKIAUgCDYCwAogBSBFOgC8CiAFIEY2ArgKIAUgRzYCtAogBSBINgKwCiAFIEk6AKwKIAUgSjYCqAogBSBLNgKkCiAFIEw2AqAKIAUgTToAnAogBSBONgKYCiAFIE82ApQKIAUgUDYCkAogBSBROgCMCiAFIFI2AogKIAUgUzYChAogBSBUNgKACiAFIFU6APwJIAUgVjYC+AkgBSBXNgL0CSAFIFg2AvAJIAUgWToA7AkgBSBaNgLoCSAFIFs2AuQJIAUgXDYC4AkgBSBdOgDcCSAFIF42AtgJIAUgXzYC1AkgBSBgNgLQCSAFIGE6AMwJIAUgYjYCyAkgBSBjNgLECSAFIGQ2AsAJIAUgZToAvAkgBSBmNgK4CSAFIGc2ArQJIAUgaDYCsAkgBSBpOgCsCSAFIGo2AqgJIAUgazYCpAkgBSBsNgKgCSAFIG06AJwJIAUgbjYCmAkgBSBvNgKUCSAFIHA2ApAJIAUgcToAjAkgBSByNgKICSAFIHM2AoQJIAUgdDYCgAkgBSB1OgD8CCAFIHY2AvgIIAUgdzYC9AggBSB4NgLwCCAFIHk6AOwIIAUgejYC6AggBSB7NgLkCCAFIHw2AuAIIAUgfToA3AggBSB+NgLYCCAFIH82AtQIIAUggAE2AtAIIAUggQE6AMwIIAUgggE2AsgIIAUggwE2AsQIIAUghAE2AsAIIAUghQE6ALwIIAUghgE2ArgIIAUghwE2ArQIIAUgiAE2ArAIIAUgiQE6AKwIIAUgigE2AqgIIAUgiwE2AqQIIAUgjAE2AqAIIAUgjQE6AJwIIAUgjgE2ApgIIAUgjwE2ApQIIAUgkAE2ApAIIAUgkQE6AIwIIAUgkgE2AogIIAUgkwE2AoQIIAUglAE2AoAIIAUglQE6APwHIAUglgE2AvgHIAUglwE2AvQHIAUgmAE2AvAHIAUgmQE6AOwHIAUgmgE2AugHIAUgmwE2AuQHIAUgnAE2AuAHIAUgnQE6ANwHIAUgngE2AtgHIAUgnwE2AtQHIAUgoAE2AtAHIAUgoQE6AMwHIAUgogE2AsgHIAUgowE2AsQHIAUgpAE2AsAHIAUgpQE6ALwHIAUgpgE2ArgHIAUgpwE2ArQHIAUgqAE2ArAHIAUgqQE6AKwHIAUgqgE2AqgHIAUgqwE2AqQHIAUgrAE2AqAHIAUgrQE6AJwHIAUgrgE2ApgHIAUgrwE2ApQHIAUgsAE2ApAHIAUgsQE6AIwHIAUgjQQ2AogHIAUgjgQ2AoQHIAUgjwQ2AoAHIAUgkAQ6APwGIAUgsgE2AvgGIAUgswE2AvQGIAUgtAE2AvAGIAUgtQE6AOwGIAUgtgE2AugGIAUgtwE2AuQGIAUguAE2AuAGIAUguQE6ANwGIAUgugE2AtgGIAUguwE2AtQGIAUgvAE2AtAGIAUgvQE6AMwGIAUgvgE2AsgGIAUgvwE2AsQGIAUgwAE2AsAGIAUgwQE6ALwGIAUgwgE2ArgGIAUgwwE2ArQGIAUgxAE2ArAGIAUgxQE6AKwGIAUgxgE2AqgGIAUgxwE2AqQGIAUgyAE2AqAGIAUgyQE6AJwGIAUgygE2ApgGIAUgywE2ApQGIAUgzAE2ApAGIAUgzQE6AIwGIAUgzgE2AogGIAUgzwE2AoQGIAUg0AE2AoAGIAUg0QE6APwFIAUg0gE2AvgFIAUg0wE2AvQFIAUg1AE2AvAFIAUg1QE6AOwFIAUg1gE2AugFIAUg1wE2AuQFIAUg2AE2AuAFIAUg2QE6ANwFIAUg2gE2AtgFIAUg2wE2AtQFIAUg3AE2AtAFIAUg3QE6AMwFIAUg3gE2AsgFIAUg3wE2AsQFIAUg4AE2AsAFIAUgjAQ6ALwFIAUgEjYCuAUgBSARNgK0BSAFIOIBNgKwBSAFIJEEOgCsBSAFIJIENgKoBSAFIOEBNgKkBSAFICM2AqAFIAUgwAM6AJwFIAUgvwM2ApgFIAUgvgM2ApQFIAUgvQM2ApAFIAUgvAM6AIwFIAUguwM2AogFIAUgugM2AoQFIAUguQM2AoAFIAUguAM6APwEIAUgtwM2AvgEIAUgtgM2AvQEIAUgtQM2AvAEIAUgtAM6AOwEIAUgswM2AugEIAUgsgM2AuQEIAUgsQM2AuAEIAUgsAM6ANwEIAUgrwM2AtgEIAUgrgM2AtQEIAUgrQM2AtAEIAUgrAM6AMwEIAUgqwM2AsgEIAUgqgM2AsQEIAUgqQM2AsAEIAUgqAM6ALwEIAUgpwM2ArgEIAUgpgM2ArQEIAUgpQM2ArAEIAUgpAM6AKwEIAUgowM2AqgEIAUgogM2AqQEIAUgoQM2AqAEIAUgoAM6AJwEIAUgnwM2ApgEIAUgngM2ApQEIAUgnQM2ApAEIAUgnAM6AIwEIAUgmwM2AogEIAUgmgM2AoQEIAUgmQM2AoAEIAUgmAM6APwDIAUglwM2AvgDIAUglgM2AvQDIAUglQM2AvADIAUglAM6AOwDIAUgkwM2AugDIAUgkgM2AuQDIAUgkQM2AuADIAUgkAM6ANwDIAUgjwM2AtgDIAUgjgM2AtQDIAUgjQM2AtADIAUgjAM6AMwDIAUgiwM2AsgDIAUgigM2AsQDIAUgiQM2AsADIAUgiAM6ALwDIAUghwM2ArgDIAUghgM2ArQDIAUghQM2ArADIAUghAM6AKwDIAUggwM2AqgDIAUgggM2AqQDIAUggQM2AqADIAUggAM6AJwDIAUg/wI2ApgDIAUg/gI2ApQDIAUg/QI2ApADIAUg/AI6AIwDIAUg+wI2AogDIAUg+gI2AoQDIAUg+QI2AoADIAUg+AI6APwCIAUg9wI2AvgCIAUg9gI2AvQCIAUg9QI2AvACIAUg9AI6AOwCIAUg8wI2AugCIAUg8gI2AuQCIAUg8QI2AuACIAUg8AI6ANwCIAUg7wI2AtgCIAUg7gI2AtQCIAUg7QI2AtACIAUg7AI6AMwCIAUg6wI2AsgCIAUg6gI2AsQCIAUg6QI2AsACIAUg6AI6ALwCIAUg5wI2ArgCIAUg5gI2ArQCIAUg5QI2ArACIAUg5AI6AKwCIAUg4wI2AqgCIAUg4gI2AqQCIAUg4QI2AqACIAUg4AI6AJwCIAUg3wI2ApgCIAUg3gI2ApQCIAUg3QI2ApACIAUg3AI6AIwCIAUg2wI2AogCIAUg2gI2AoQCIAUg2QI2AoACIAUg2AI6APwBIAUg1wI2AvgBIAUg1gI2AvQBIAUg1QI2AvABIAUg1AI6AOwBIAUg0wI2AugBIAUg0gI2AuQBIAUg0QI2AuABIAUg0AI6ANwBIAUgzwI2AtgBIAUgzgI2AtQBIAUgzQI2AtABIAUgzAI6AMwBIAUgywI2AsgBIAUgygI2AsQBIAUgyQI2AsABIAUgyAI6ALwBIAUgxwI2ArgBIAUgxgI2ArQBIAUgxQI2ArABIAUgxAI6AKwBIAUgwwI2AqgBIAUgwgI2AqQBIAUgwQI2AqABIAUgwAI6AJwBIAUgvwI2ApgBIAUgvgI2ApQBIAUgvQI2ApABIAUgvAI6AIwBIAUgtwI2AogBIAUgugI2AoQBIAUguQI2AoABIAUguAI6AHwgBSCTBDYCeCAFILYCNgJ0IAUgtQI2AnAgBSC0AjoAbCAFILMCNgJoIAUgDjYCZCAFIA82AmAgBSAUOgBcIAUgEDYCWCAFIBk2AlQgBSAaNgJQIAUgGzoATCAFIBw2AkggBSAdNgJEIAUguwI2AkAgBSCyAjYCMCAFQQE2AgQgBUEBNgIAIAVBzw1qIJUEQRB2OgAAIAVBvw1qIDtBEHY6AAAgBUGvDWogOkEQdjoAACAFQZ8NaiA5QRB2OgAAIAVBjw1qIDhBEHY6AAAgBUH/DGogN0EQdjoAACAFQe8MaiA2QRB2OgAAIAVB3wxqIDVBEHY6AAAgBUHPDGogNEEQdjoAACAFQb8MaiAzQRB2OgAAIAVBrwxqIDJBEHY6AAAgBUGfDGogMUEQdjoAACAFQY8MaiAwQRB2OgAAIAVB/wtqIC9BEHY6AAAgBUHvC2ogLkEQdjoAACAFQd8LaiCLAkEQdjoAACAFQc8LaiA8QRB2OgAAIAVBvwtqIC1BEHY6AAAgBUGvC2ogLEEQdjoAACAFQZ8LaiArQRB2OgAAIAVBjwtqICpBEHY6AAAgBUH/CmogKUEQdjoAACAFQe8KaiAoQRB2OgAAIAVB3wpqICdBEHY6AAAgBUHPCmogF0EQdjoAACAFQb8KaiDoA0EQdjoAACAFQa8KaiDpA0EQdjoAACAFQZ8KaiDqA0EQdjoAACAFQY8KaiDrA0EQdjoAACAFQf8JaiDsA0EQdjoAACAFQe8JaiDtA0EQdjoAACAFQd8JaiDuA0EQdjoAACAFQc8JaiDvA0EQdjoAACAFQb8JaiDwA0EQdjoAACAFQa8JaiDxA0EQdjoAACAFQZ8JaiDyA0EQdjoAACAFQY8JaiDzA0EQdjoAACAFQf8IaiD0A0EQdjoAACAFQe8IaiD1A0EQdjoAACAFQd8IaiD2A0EQdjoAACAFQc8IaiD3A0EQdjoAACAFQb8IaiD4A0EQdjoAACAFQa8IaiD5A0EQdjoAACAFQZ8IaiD6A0EQdjoAACAFQY8IaiD7A0EQdjoAACAFQf8HaiD8A0EQdjoAACAFQe8HaiD9A0EQdjoAACAFQd8HaiD+A0EQdjoAACAFQc8HaiD/A0EQdjoAACAFQb8HaiCABEEQdjoAACAFQa8HaiCBBEEQdjoAACAFQZ8HaiCCBEEQdjoAACAFQY8HaiCDBEEQdjoAACAFQf8GaiCKAkEQdjoAACAFQe8GaiCJAkEQdjoAACAFQd8GaiCIAkEQdjoAACAFQc8GaiCHAkEQdjoAACAFQb8GaiCGAkEQdjoAACAFQa8GaiCFAkEQdjoAACAFQZ8GaiCEAkEQdjoAACAFQY8GaiCDAkEQdjoAACAFQf8FaiCCAkEQdjoAACAFQe8FaiCBAkEQdjoAACAFQd8FaiCAAkEQdjoAACAFQc8FaiD/AUEQdjoAACAFQb8FaiAWQRB2OgAAIAVBrwVqIP4BQRB2OgAAIAVBnwVqIP0BQRB2OgAAIAVBjwVqIPwBQRB2OgAAIAVB/wRqIPsBQRB2OgAAIAVB7wRqIPoBQRB2OgAAIAVB3wRqIPkBQRB2OgAAIAVBzwRqIPgBQRB2OgAAIAVBvwRqIPcBQRB2OgAAIAVBrwRqIPYBQRB2OgAAIAVBnwRqIPUBQRB2OgAAIAVBjwRqIPQBQRB2OgAAIAVB/wNqIPMBQRB2OgAAIAVB7wNqIPIBQRB2OgAAIAVB3wNqIPEBQRB2OgAAIAVBzwNqIPABQRB2OgAAIAVBvwNqIO8BQRB2OgAAIAVBrwNqIO4BQRB2OgAAIAVBnwNqIO0BQRB2OgAAIAVBjwNqIOwBQRB2OgAAIAVB/wJqIOsBQRB2OgAAIAVB7wJqIOoBQRB2OgAAIAVB3wJqIOkBQRB2OgAAIAVBzwJqIOgBQRB2OgAAIAVBvwJqIOcBQRB2OgAAIAVBrwJqIOYBQRB2OgAAIAVBnwJqIOUBQRB2OgAAIAVBjwJqIOQBQRB2OgAAIAVB/wFqIOMBQRB2OgAAIAVB7wFqIERBEHY6AAAgBUHfAWogQ0EQdjoAACAFQc8BaiBCQRB2OgAAIAVBvwFqIEFBEHY6AAAgBUGvAWogQEEQdjoAACAFQZ8BaiA/QRB2OgAAIAVBjwFqID5BEHY6AAAgBUH/AGogPUEQdjoAACAFQe8AaiAJQRB2OgAAIAVB3wBqIApBEHY6AAAgBUHPAGogBkEQdjoAACAFIKEEPgI8IAUgpQQ3AyggBSCiBDcDGCAAQeSUhAE2AgggACAFNgIEIABBAjYCAAwEC0IAIZ8ECyCQBCEDII8EIQIgjgQhGCCNBCEeILUBIZAEILQBIY8EILMBIY4EILIBIY0EILkBIbUBILgBIbQBILcBIbMBILYBIbIBIL0BIbkBILwBIbgBILsBIbcBILoBIbYBIMEBIb0BIMABIbwBIL8BIbsBIL4BIboBIMUBIcEBIMQBIcABIMMBIb8BIMIBIb4BIMkBIcUBIMgBIcQBIMcBIcMBIMYBIcIBIM0BIckBIMwBIcgBIMsBIccBIMoBIcYBINEBIc0BINABIcwBIM8BIcsBIM4BIcoBINUBIdEBINQBIdABINMBIc8BINIBIc4BINkBIdUBINgBIdQBINcBIdMBINYBIdIBIN0BIdkBINwBIdgBINsBIdcBINoBIdYBIIwEId0BIOABIdwBIN8BIdsBIN4BIdoBIJEEIYwEIOIBIeABIBEh3wEgEiHeASDAAyGRBCAjIeIBIOEBIREgkgQhEiC8AyHAAyC9AyEjIL4DIeEBIL8DIZIEILgDIbwDILkDIb0DILoDIb4DILsDIb8DILQDIbgDILUDIbkDILYDIboDILcDIbsDILADIbQDILEDIbUDILIDIbYDILMDIbcDIKwDIbADIK0DIbEDIK4DIbIDIK8DIbMDIKgDIawDIKkDIa0DIKoDIa4DIKsDIa8DIKQDIagDIKUDIakDIKYDIaoDIKcDIasDIKADIaQDIKEDIaUDIKIDIaYDIKMDIacDIJwDIaADIJ0DIaEDIJ4DIaIDIJ8DIaMDIJgDIZwDIJkDIZ0DIJoDIZ4DIJsDIZ8DIJQDIZgDIJUDIZkDIJYDIZoDIJcDIZsDIJADIZQDIJEDIZUDIJIDIZYDIJMDIZcDIIwDIZADII0DIZEDII4DIZIDII8DIZMDIIgDIYwDIIkDIY0DIIoDIY4DIIsDIY8DIIQDIYgDIIUDIYkDIIYDIYoDIIcDIYsDIIADIYQDIIEDIYUDIIIDIYYDIIMDIYcDIPwCIYADIP0CIYEDIP4CIYIDIP8CIYMDIPgCIfwCIPkCIf0CIPoCIf4CIPsCIf8CIPQCIfgCIPUCIfkCIPYCIfoCIPcCIfsCIPACIfQCIPECIfUCIPICIfYCIPMCIfcCIOwCIfACIO0CIfECIO4CIfICIO8CIfMCIOgCIewCIOkCIe0CIOoCIe4CIOsCIe8CIOQCIegCIOUCIekCIOYCIeoCIOcCIesCIOACIeQCIOECIeUCIOICIeYCIOMCIecCINwCIeACIN0CIeECIN4CIeICIN8CIeMCINgCIdwCINkCId0CINoCId4CINsCId8CINQCIdgCINUCIdkCINYCIdoCINcCIdsCINACIdQCINECIdUCINICIdYCINMCIdcCIMwCIdACIM0CIdECIM4CIdICIM8CIdMCIMgCIcwCIMkCIc0CIMoCIc4CIMsCIc8CIMQCIcgCIMUCIckCIMYCIcoCIMcCIcsCIMACIcQCIMECIcUCIMICIcYCIMMCIccCILwCIcACIL0CIcECIL4CIcICIL8CIcMCIJMEIYwCILgCIbwCILkCIb0CILoCIb4CILMCIZMEILQCIbgCILUCIbkCILYCIboCILsCIb8CIBAhswIgFCG0AiAPIbUCIA4htgIgFSEPIBMhFSAfIRMgISEfIIsCIQ4gICEhICQhICAlISQgJiElIKQEIaIEIKUEIaMECwJAIJ4EQgOFIJ8EhFANAAJAQYAFRQ0AIARB8BpqIARBoARqQYAF/AoAAAtBAC0A4PadARpBEEHwEhDaByIFRQ0BIAUglQQ7AM0NIAUgOzsAvQ0gBSA6OwCtDSAFIDk7AJ0NIAUgODsAjQ0gBSA3OwD9DCAFIDY7AO0MIAUgNTsA3QwgBSA0OwDNDCAFIDM7AL0MIAUgMjsArQwgBSAxOwCdDCAFIDA7AI0MIAUgLzsA/QsgBSAuOwDtCyAFIA47AN0LIAUgPDsAzQsgBSAtOwC9CyAFICw7AK0LIAUgKzsAnQsgBSAqOwCNCyAFICk7AP0KIAUgKDsA7QogBSAnOwDdCiAFIBc7AM0KIAUg6AM7AL0KIAUg6QM7AK0KIAUg6gM7AJ0KIAUg6wM7AI0KIAUg7AM7AP0JIAUg7QM7AO0JIAUg7gM7AN0JIAUg7wM7AM0JIAUg8AM7AL0JIAUg8QM7AK0JIAUg8gM7AJ0JIAUg8wM7AI0JIAUg9AM7AP0IIAUg9QM7AO0IIAUg9gM7AN0IIAUg9wM7AM0IIAUg+AM7AL0IIAUg+QM7AK0IIAUg+gM7AJ0IIAUg+wM7AI0IIAUg/AM7AP0HIAUg/QM7AO0HIAUg/gM7AN0HIAUg/wM7AM0HIAUggAQ7AL0HIAUggQQ7AK0HIAUgggQ7AJ0HIAUggwQ7AI0HIAUgigI7AP0GIAUgiQI7AO0GIAUgiAI7AN0GIAUghwI7AM0GIAUghgI7AL0GIAUghQI7AK0GIAUghAI7AJ0GIAUggwI7AI0GIAUgggI7AP0FIAUggQI7AO0FIAUggAI7AN0FIAUg/wE7AM0FIAUgFjsAvQUgBSD+ATsArQUgBSD9ATsAnQUgBSD8ATsAjQUgBSD7ATsA/QQgBSD6ATsA7QQgBSD5ATsA3QQgBSD4ATsAzQQgBSD3ATsAvQQgBSD2ATsArQQgBSD1ATsAnQQgBSD0ATsAjQQgBSDzATsA/QMgBSDyATsA7QMgBSDxATsA3QMgBSDwATsAzQMgBSDvATsAvQMgBSDuATsArQMgBSDtATsAnQMgBSDsATsAjQMgBSDrATsA/QIgBSDqATsA7QIgBSDpATsA3QIgBSDoATsAzQIgBSDnATsAvQIgBSDmATsArQIgBSDlATsAnQIgBSDkATsAjQIgBSDjATsA/QEgBSBEOwDtASAFIEM7AN0BIAUgQjsAzQEgBSBBOwC9ASAFIEA7AK0BIAUgPzsAnQEgBSA+OwCNASAFID07AH0gBSAJOwBtIAUgCjsAXSAFIAY7AE0gBSCgBDcCNCAFIKIENwMgIAUgngQ3AxAgBSCUBDoAzA0gBSAiNgLIDSAFIAc2AsQNIAUgATYCwA0gBSCEBDoAvA0gBSCFBDYCuA0gBSCGBDYCtA0gBSCHBDYCsA0gBSCIBDoArA0gBSCJBDYCqA0gBSCKBDYCpA0gBSCLBDYCoA0gBSDkAzoAnA0gBSDlAzYCmA0gBSDmAzYClA0gBSDnAzYCkA0gBSDgAzoAjA0gBSDhAzYCiA0gBSDiAzYChA0gBSDjAzYCgA0gBSDcAzoA/AwgBSDdAzYC+AwgBSDeAzYC9AwgBSDfAzYC8AwgBSDYAzoA7AwgBSDZAzYC6AwgBSDaAzYC5AwgBSDbAzYC4AwgBSDUAzoA3AwgBSDVAzYC2AwgBSDWAzYC1AwgBSDXAzYC0AwgBSDQAzoAzAwgBSDRAzYCyAwgBSDSAzYCxAwgBSDTAzYCwAwgBSDMAzoAvAwgBSDNAzYCuAwgBSDOAzYCtAwgBSDPAzYCsAwgBSDIAzoArAwgBSDJAzYCqAwgBSDKAzYCpAwgBSDLAzYCoAwgBSDEAzoAnAwgBSDFAzYCmAwgBSDGAzYClAwgBSDHAzYCkAwgBSCxAjoAjAwgBSDBAzYCiAwgBSDCAzYChAwgBSDDAzYCgAwgBSCtAjoA/AsgBSCuAjYC+AsgBSCvAjYC9AsgBSCwAjYC8AsgBSCpAjoA7AsgBSCqAjYC6AsgBSCrAjYC5AsgBSCsAjYC4AsgBSClAjoA3AsgBSCmAjYC2AsgBSCnAjYC1AsgBSCoAjYC0AsgBSAPOgDMCyAFIKICNgLICyAFIKMCNgLECyAFIKQCNgLACyAFIBU6ALwLIAUgnwI2ArgLIAUgoAI2ArQLIAUgoQI2ArALIAUgEzoArAsgBSCcAjYCqAsgBSCdAjYCpAsgBSCeAjYCoAsgBSAfOgCcCyAFIJkCNgKYCyAFIJoCNgKUCyAFIJsCNgKQCyAFICE6AIwLIAUglgI2AogLIAUglwI2AoQLIAUgmAI2AoALIAUgIDoA/AogBSCTAjYC+AogBSCUAjYC9AogBSCVAjYC8AogBSAkOgDsCiAFIJACNgLoCiAFIJECNgLkCiAFIJICNgLgCiAFICU6ANwKIAUgjQI2AtgKIAUgjgI2AtQKIAUgjwI2AtAKIAUgDDoAzAogBSALNgLICiAFIA02AsQKIAUgCDYCwAogBSBFOgC8CiAFIEY2ArgKIAUgRzYCtAogBSBINgKwCiAFIEk6AKwKIAUgSjYCqAogBSBLNgKkCiAFIEw2AqAKIAUgTToAnAogBSBONgKYCiAFIE82ApQKIAUgUDYCkAogBSBROgCMCiAFIFI2AogKIAUgUzYChAogBSBUNgKACiAFIFU6APwJIAUgVjYC+AkgBSBXNgL0CSAFIFg2AvAJIAUgWToA7AkgBSBaNgLoCSAFIFs2AuQJIAUgXDYC4AkgBSBdOgDcCSAFIF42AtgJIAUgXzYC1AkgBSBgNgLQCSAFIGE6AMwJIAUgYjYCyAkgBSBjNgLECSAFIGQ2AsAJIAUgZToAvAkgBSBmNgK4CSAFIGc2ArQJIAUgaDYCsAkgBSBpOgCsCSAFIGo2AqgJIAUgazYCpAkgBSBsNgKgCSAFIG06AJwJIAUgbjYCmAkgBSBvNgKUCSAFIHA2ApAJIAUgcToAjAkgBSByNgKICSAFIHM2AoQJIAUgdDYCgAkgBSB1OgD8CCAFIHY2AvgIIAUgdzYC9AggBSB4NgLwCCAFIHk6AOwIIAUgejYC6AggBSB7NgLkCCAFIHw2AuAIIAUgfToA3AggBSB+NgLYCCAFIH82AtQIIAUggAE2AtAIIAUggQE6AMwIIAUgggE2AsgIIAUggwE2AsQIIAUghAE2AsAIIAUghQE6ALwIIAUghgE2ArgIIAUghwE2ArQIIAUgiAE2ArAIIAUgiQE6AKwIIAUgigE2AqgIIAUgiwE2AqQIIAUgjAE2AqAIIAUgjQE6AJwIIAUgjgE2ApgIIAUgjwE2ApQIIAUgkAE2ApAIIAUgkQE6AIwIIAUgkgE2AogIIAUgkwE2AoQIIAUglAE2AoAIIAUglQE6APwHIAUglgE2AvgHIAUglwE2AvQHIAUgmAE2AvAHIAUgmQE6AOwHIAUgmgE2AugHIAUgmwE2AuQHIAUgnAE2AuAHIAUgnQE6ANwHIAUgngE2AtgHIAUgnwE2AtQHIAUgoAE2AtAHIAUgoQE6AMwHIAUgogE2AsgHIAUgowE2AsQHIAUgpAE2AsAHIAUgpQE6ALwHIAUgpgE2ArgHIAUgpwE2ArQHIAUgqAE2ArAHIAUgqQE6AKwHIAUgqgE2AqgHIAUgqwE2AqQHIAUgrAE2AqAHIAUgrQE6AJwHIAUgrgE2ApgHIAUgrwE2ApQHIAUgsAE2ApAHIAUgsQE6AIwHIAUgHjYCiAcgBSAYNgKEByAFIAI2AoAHIAUgAzoA/AYgBSCNBDYC+AYgBSCOBDYC9AYgBSCPBDYC8AYgBSCQBDoA7AYgBSCyATYC6AYgBSCzATYC5AYgBSC0ATYC4AYgBSC1AToA3AYgBSC2ATYC2AYgBSC3ATYC1AYgBSC4ATYC0AYgBSC5AToAzAYgBSC6ATYCyAYgBSC7ATYCxAYgBSC8ATYCwAYgBSC9AToAvAYgBSC+ATYCuAYgBSC/ATYCtAYgBSDAATYCsAYgBSDBAToArAYgBSDCATYCqAYgBSDDATYCpAYgBSDEATYCoAYgBSDFAToAnAYgBSDGATYCmAYgBSDHATYClAYgBSDIATYCkAYgBSDJAToAjAYgBSDKATYCiAYgBSDLATYChAYgBSDMATYCgAYgBSDNAToA/AUgBSDOATYC+AUgBSDPATYC9AUgBSDQATYC8AUgBSDRAToA7AUgBSDSATYC6AUgBSDTATYC5AUgBSDUATYC4AUgBSDVAToA3AUgBSDWATYC2AUgBSDXATYC1AUgBSDYATYC0AUgBSDZAToAzAUgBSDaATYCyAUgBSDbATYCxAUgBSDcATYCwAUgBSDdAToAvAUgBSDeATYCuAUgBSDfATYCtAUgBSDgATYCsAUgBSCMBDoArAUgBSASNgKoBSAFIBE2AqQFIAUg4gE2AqAFIAUgkQQ6AJwFIAUgkgQ2ApgFIAUg4QE2ApQFIAUgIzYCkAUgBSDAAzoAjAUgBSC/AzYCiAUgBSC+AzYChAUgBSC9AzYCgAUgBSC8AzoA/AQgBSC7AzYC+AQgBSC6AzYC9AQgBSC5AzYC8AQgBSC4AzoA7AQgBSC3AzYC6AQgBSC2AzYC5AQgBSC1AzYC4AQgBSC0AzoA3AQgBSCzAzYC2AQgBSCyAzYC1AQgBSCxAzYC0AQgBSCwAzoAzAQgBSCvAzYCyAQgBSCuAzYCxAQgBSCtAzYCwAQgBSCsAzoAvAQgBSCrAzYCuAQgBSCqAzYCtAQgBSCpAzYCsAQgBSCoAzoArAQgBSCnAzYCqAQgBSCmAzYCpAQgBSClAzYCoAQgBSCkAzoAnAQgBSCjAzYCmAQgBSCiAzYClAQgBSChAzYCkAQgBSCgAzoAjAQgBSCfAzYCiAQgBSCeAzYChAQgBSCdAzYCgAQgBSCcAzoA/AMgBSCbAzYC+AMgBSCaAzYC9AMgBSCZAzYC8AMgBSCYAzoA7AMgBSCXAzYC6AMgBSCWAzYC5AMgBSCVAzYC4AMgBSCUAzoA3AMgBSCTAzYC2AMgBSCSAzYC1AMgBSCRAzYC0AMgBSCQAzoAzAMgBSCPAzYCyAMgBSCOAzYCxAMgBSCNAzYCwAMgBSCMAzoAvAMgBSCLAzYCuAMgBSCKAzYCtAMgBSCJAzYCsAMgBSCIAzoArAMgBSCHAzYCqAMgBSCGAzYCpAMgBSCFAzYCoAMgBSCEAzoAnAMgBSCDAzYCmAMgBSCCAzYClAMgBSCBAzYCkAMgBSCAAzoAjAMgBSD/AjYCiAMgBSD+AjYChAMgBSD9AjYCgAMgBSD8AjoA/AIgBSD7AjYC+AIgBSD6AjYC9AIgBSD5AjYC8AIgBSD4AjoA7AIgBSD3AjYC6AIgBSD2AjYC5AIgBSD1AjYC4AIgBSD0AjoA3AIgBSDzAjYC2AIgBSDyAjYC1AIgBSDxAjYC0AIgBSDwAjoAzAIgBSDvAjYCyAIgBSDuAjYCxAIgBSDtAjYCwAIgBSDsAjoAvAIgBSDrAjYCuAIgBSDqAjYCtAIgBSDpAjYCsAIgBSDoAjoArAIgBSDnAjYCqAIgBSDmAjYCpAIgBSDlAjYCoAIgBSDkAjoAnAIgBSDjAjYCmAIgBSDiAjYClAIgBSDhAjYCkAIgBSDgAjoAjAIgBSDfAjYCiAIgBSDeAjYChAIgBSDdAjYCgAIgBSDcAjoA/AEgBSDbAjYC+AEgBSDaAjYC9AEgBSDZAjYC8AEgBSDYAjoA7AEgBSDXAjYC6AEgBSDWAjYC5AEgBSDVAjYC4AEgBSDUAjoA3AEgBSDTAjYC2AEgBSDSAjYC1AEgBSDRAjYC0AEgBSDQAjoAzAEgBSDPAjYCyAEgBSDOAjYCxAEgBSDNAjYCwAEgBSDMAjoAvAEgBSDLAjYCuAEgBSDKAjYCtAEgBSDJAjYCsAEgBSDIAjoArAEgBSDHAjYCqAEgBSDGAjYCpAEgBSDFAjYCoAEgBSDEAjoAnAEgBSDDAjYCmAEgBSDCAjYClAEgBSDBAjYCkAEgBSDAAjoAjAEgBSC3AjYCiAEgBSC+AjYChAEgBSC9AjYCgAEgBSC8AjoAfCAFIIwCNgJ4IAUgugI2AnQgBSC5AjYCcCAFILgCOgBsIAUgkwQ2AmggBSC2AjYCZCAFILUCNgJgIAUgtAI6AFwgBSCzAjYCWCAFIBk2AlQgBSAaNgJQIAUgGzoATCAFIBw2AkggBSAdNgJEIAUgvwI2AkAgBSCyAjYCMCAFQQE2AgQgBUEBNgIAIAVBzw1qIJUEQRB2OgAAIAVBvw1qIDtBEHY6AAAgBUGvDWogOkEQdjoAACAFQZ8NaiA5QRB2OgAAIAVBjw1qIDhBEHY6AAAgBUH/DGogN0EQdjoAACAFQe8MaiA2QRB2OgAAIAVB3wxqIDVBEHY6AAAgBUHPDGogNEEQdjoAACAFQb8MaiAzQRB2OgAAIAVBrwxqIDJBEHY6AAAgBUGfDGogMUEQdjoAACAFQY8MaiAwQRB2OgAAIAVB/wtqIC9BEHY6AAAgBUHvC2ogLkEQdjoAACAFQd8LaiAOQRB2OgAAIAVBzwtqIDxBEHY6AAAgBUG/C2ogLUEQdjoAACAFQa8LaiAsQRB2OgAAIAVBnwtqICtBEHY6AAAgBUGPC2ogKkEQdjoAACAFQf8KaiApQRB2OgAAIAVB7wpqIChBEHY6AAAgBUHfCmogJ0EQdjoAACAFQc8KaiAXQRB2OgAAIAVBvwpqIOgDQRB2OgAAIAVBrwpqIOkDQRB2OgAAIAVBnwpqIOoDQRB2OgAAIAVBjwpqIOsDQRB2OgAAIAVB/wlqIOwDQRB2OgAAIAVB7wlqIO0DQRB2OgAAIAVB3wlqIO4DQRB2OgAAIAVBzwlqIO8DQRB2OgAAIAVBvwlqIPADQRB2OgAAIAVBrwlqIPEDQRB2OgAAIAVBnwlqIPIDQRB2OgAAIAVBjwlqIPMDQRB2OgAAIAVB/whqIPQDQRB2OgAAIAVB7whqIPUDQRB2OgAAIAVB3whqIPYDQRB2OgAAIAVBzwhqIPcDQRB2OgAAIAVBvwhqIPgDQRB2OgAAIAVBrwhqIPkDQRB2OgAAIAVBnwhqIPoDQRB2OgAAIAVBjwhqIPsDQRB2OgAAIAVB/wdqIPwDQRB2OgAAIAVB7wdqIP0DQRB2OgAAIAVB3wdqIP4DQRB2OgAAIAVBzwdqIP8DQRB2OgAAIAVBvwdqIIAEQRB2OgAAIAVBrwdqIIEEQRB2OgAAIAVBnwdqIIIEQRB2OgAAIAVBjwdqIIMEQRB2OgAAIAVB/wZqIIoCQRB2OgAAIAVB7wZqIIkCQRB2OgAAIAVB3wZqIIgCQRB2OgAAIAVBzwZqIIcCQRB2OgAAIAVBvwZqIIYCQRB2OgAAIAVBrwZqIIUCQRB2OgAAIAVBnwZqIIQCQRB2OgAAIAVBjwZqIIMCQRB2OgAAIAVB/wVqIIICQRB2OgAAIAVB7wVqIIECQRB2OgAAIAVB3wVqIIACQRB2OgAAIAVBzwVqIP8BQRB2OgAAIAVBvwVqIBZBEHY6AAAgBUGvBWog/gFBEHY6AAAgBUGfBWog/QFBEHY6AAAgBUGPBWog/AFBEHY6AAAgBUH/BGog+wFBEHY6AAAgBUHvBGog+gFBEHY6AAAgBUHfBGog+QFBEHY6AAAgBUHPBGog+AFBEHY6AAAgBUG/BGog9wFBEHY6AAAgBUGvBGog9gFBEHY6AAAgBUGfBGog9QFBEHY6AAAgBUGPBGog9AFBEHY6AAAgBUH/A2og8wFBEHY6AAAgBUHvA2og8gFBEHY6AAAgBUHfA2og8QFBEHY6AAAgBUHPA2og8AFBEHY6AAAgBUG/A2og7wFBEHY6AAAgBUGvA2og7gFBEHY6AAAgBUGfA2og7QFBEHY6AAAgBUGPA2og7AFBEHY6AAAgBUH/Amog6wFBEHY6AAAgBUHvAmog6gFBEHY6AAAgBUHfAmog6QFBEHY6AAAgBUHPAmog6AFBEHY6AAAgBUG/Amog5wFBEHY6AAAgBUGvAmog5gFBEHY6AAAgBUGfAmog5QFBEHY6AAAgBUGPAmog5AFBEHY6AAAgBUH/AWog4wFBEHY6AAAgBUHvAWogREEQdjoAACAFQd8BaiBDQRB2OgAAIAVBzwFqIEJBEHY6AAAgBUG/AWogQUEQdjoAACAFQa8BaiBAQRB2OgAAIAVBnwFqID9BEHY6AAAgBUGPAWogPkEQdjoAACAFQf8AaiA9QRB2OgAAIAVB7wBqIAlBEHY6AAAgBUHfAGogCkEQdjoAACAFQc8AaiAGQRB2OgAAIAUgoQQ+AjwgBSCjBDcDKCAFIJ8ENwMYAkBBgAVFDQAgBUHQDWogBEHwGmpBgAX8CgAACyAFQQA6AOQSIAUgmAQ2AuASIAUgpgQ3A9gSIAUgmgQ2AtQSIAUglgQ2AtASIABBnJWEATYCCCAAIAU2AgQgAEECNgIADAILQQAtAOD2nQEaQRBBwA0Q2gciBUUNACAFIJUEOwC9DSAFIDs7AK0NIAUgOjsAnQ0gBSA5OwCNDSAFIDg7AP0MIAUgNzsA7QwgBSA2OwDdDCAFIDU7AM0MIAUgNDsAvQwgBSAzOwCtDCAFIDI7AJ0MIAUgMTsAjQwgBSAwOwD9CyAFIC87AO0LIAUgLjsA3QsgBSAOOwDNCyAFIDw7AL0LIAUgLTsArQsgBSAsOwCdCyAFICs7AI0LIAUgKjsA/QogBSApOwDtCiAFICg7AN0KIAUgJzsAzQogBSAXOwC9CiAFIOgDOwCtCiAFIOkDOwCdCiAFIOoDOwCNCiAFIOsDOwD9CSAFIOwDOwDtCSAFIO0DOwDdCSAFIO4DOwDNCSAFIO8DOwC9CSAFIPADOwCtCSAFIPEDOwCdCSAFIPIDOwCNCSAFIPMDOwD9CCAFIPQDOwDtCCAFIPUDOwDdCCAFIPYDOwDNCCAFIPcDOwC9CCAFIPgDOwCtCCAFIPkDOwCdCCAFIPoDOwCNCCAFIPsDOwD9ByAFIPwDOwDtByAFIP0DOwDdByAFIP4DOwDNByAFIP8DOwC9ByAFIIAEOwCtByAFIIEEOwCdByAFIIIEOwCNByAFIIMEOwD9BiAFIIoCOwDtBiAFIIkCOwDdBiAFIIgCOwDNBiAFIIcCOwC9BiAFIIYCOwCtBiAFIIUCOwCdBiAFIIQCOwCNBiAFIIMCOwD9BSAFIIICOwDtBSAFIIECOwDdBSAFIIACOwDNBSAFIP8BOwC9BSAFIBY7AK0FIAUg/gE7AJ0FIAUg/QE7AI0FIAUg/AE7AP0EIAUg+wE7AO0EIAUg+gE7AN0EIAUg+QE7AM0EIAUg+AE7AL0EIAUg9wE7AK0EIAUg9gE7AJ0EIAUg9QE7AI0EIAUg9AE7AP0DIAUg8wE7AO0DIAUg8gE7AN0DIAUg8QE7AM0DIAUg8AE7AL0DIAUg7wE7AK0DIAUg7gE7AJ0DIAUg7QE7AI0DIAUg7AE7AP0CIAUg6wE7AO0CIAUg6gE7AN0CIAUg6QE7AM0CIAUg6AE7AL0CIAUg5wE7AK0CIAUg5gE7AJ0CIAUg5QE7AI0CIAUg5AE7AP0BIAUg4wE7AO0BIAUgRDsA3QEgBSBDOwDNASAFIEI7AL0BIAUgQTsArQEgBSBAOwCdASAFID87AI0BIAUgPjsAfSAFID07AG0gBSAJOwBdIAUgCjsATSAFIAY7AD0gBSCgBDcCJCAFIKIENwMQIAUglAQ6ALwNIAUgIjYCuA0gBSAHNgK0DSAFIAE2ArANIAUghAQ6AKwNIAUghQQ2AqgNIAUghgQ2AqQNIAUghwQ2AqANIAUgiAQ6AJwNIAUgiQQ2ApgNIAUgigQ2ApQNIAUgiwQ2ApANIAUg5AM6AIwNIAUg5QM2AogNIAUg5gM2AoQNIAUg5wM2AoANIAUg4AM6APwMIAUg4QM2AvgMIAUg4gM2AvQMIAUg4wM2AvAMIAUg3AM6AOwMIAUg3QM2AugMIAUg3gM2AuQMIAUg3wM2AuAMIAUg2AM6ANwMIAUg2QM2AtgMIAUg2gM2AtQMIAUg2wM2AtAMIAUg1AM6AMwMIAUg1QM2AsgMIAUg1gM2AsQMIAUg1wM2AsAMIAUg0AM6ALwMIAUg0QM2ArgMIAUg0gM2ArQMIAUg0wM2ArAMIAUgzAM6AKwMIAUgzQM2AqgMIAUgzgM2AqQMIAUgzwM2AqAMIAUgyAM6AJwMIAUgyQM2ApgMIAUgygM2ApQMIAUgywM2ApAMIAUgxAM6AIwMIAUgxQM2AogMIAUgxgM2AoQMIAUgxwM2AoAMIAUgsQI6APwLIAUgwQM2AvgLIAUgwgM2AvQLIAUgwwM2AvALIAUgrQI6AOwLIAUgrgI2AugLIAUgrwI2AuQLIAUgsAI2AuALIAUgqQI6ANwLIAUgqgI2AtgLIAUgqwI2AtQLIAUgrAI2AtALIAUgpQI6AMwLIAUgpgI2AsgLIAUgpwI2AsQLIAUgqAI2AsALIAUgDzoAvAsgBSCiAjYCuAsgBSCjAjYCtAsgBSCkAjYCsAsgBSAVOgCsCyAFIJ8CNgKoCyAFIKACNgKkCyAFIKECNgKgCyAFIBM6AJwLIAUgnAI2ApgLIAUgnQI2ApQLIAUgngI2ApALIAUgHzoAjAsgBSCZAjYCiAsgBSCaAjYChAsgBSCbAjYCgAsgBSAhOgD8CiAFIJYCNgL4CiAFIJcCNgL0CiAFIJgCNgLwCiAFICA6AOwKIAUgkwI2AugKIAUglAI2AuQKIAUglQI2AuAKIAUgJDoA3AogBSCQAjYC2AogBSCRAjYC1AogBSCSAjYC0AogBSAlOgDMCiAFII0CNgLICiAFII4CNgLECiAFII8CNgLACiAFIAw6ALwKIAUgCzYCuAogBSANNgK0CiAFIAg2ArAKIAUgRToArAogBSBGNgKoCiAFIEc2AqQKIAUgSDYCoAogBSBJOgCcCiAFIEo2ApgKIAUgSzYClAogBSBMNgKQCiAFIE06AIwKIAUgTjYCiAogBSBPNgKECiAFIFA2AoAKIAUgUToA/AkgBSBSNgL4CSAFIFM2AvQJIAUgVDYC8AkgBSBVOgDsCSAFIFY2AugJIAUgVzYC5AkgBSBYNgLgCSAFIFk6ANwJIAUgWjYC2AkgBSBbNgLUCSAFIFw2AtAJIAUgXToAzAkgBSBeNgLICSAFIF82AsQJIAUgYDYCwAkgBSBhOgC8CSAFIGI2ArgJIAUgYzYCtAkgBSBkNgKwCSAFIGU6AKwJIAUgZjYCqAkgBSBnNgKkCSAFIGg2AqAJIAUgaToAnAkgBSBqNgKYCSAFIGs2ApQJIAUgbDYCkAkgBSBtOgCMCSAFIG42AogJIAUgbzYChAkgBSBwNgKACSAFIHE6APwIIAUgcjYC+AggBSBzNgL0CCAFIHQ2AvAIIAUgdToA7AggBSB2NgLoCCAFIHc2AuQIIAUgeDYC4AggBSB5OgDcCCAFIHo2AtgIIAUgezYC1AggBSB8NgLQCCAFIH06AMwIIAUgfjYCyAggBSB/NgLECCAFIIABNgLACCAFIIEBOgC8CCAFIIIBNgK4CCAFIIMBNgK0CCAFIIQBNgKwCCAFIIUBOgCsCCAFIIYBNgKoCCAFIIcBNgKkCCAFIIgBNgKgCCAFIIkBOgCcCCAFIIoBNgKYCCAFIIsBNgKUCCAFIIwBNgKQCCAFII0BOgCMCCAFII4BNgKICCAFII8BNgKECCAFIJABNgKACCAFIJEBOgD8ByAFIJIBNgL4ByAFIJMBNgL0ByAFIJQBNgLwByAFIJUBOgDsByAFIJYBNgLoByAFIJcBNgLkByAFIJgBNgLgByAFIJkBOgDcByAFIJoBNgLYByAFIJsBNgLUByAFIJwBNgLQByAFIJ0BOgDMByAFIJ4BNgLI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QgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtAA1FDQBBACABKAIAEI0GIQRBh66aAUEQEPkXIQcgAkGXrpoBQR8Q+Rc3A8gGIAJBmAZqIAJByAZqEJQTIAIoApgGIAIoApwGEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtAA5FDQBBACABKAIAEI0GIQRBtq6aAUEZEPkXIQcgAkHPrpoBQSgQ+Rc3A8gGIAJBkAZqIAJByAZqEJQTIAIoApAGIAIoApQGEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCE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AygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtABlFDQBBACABKAIAEI0GIQRB0bOaAUEREPkXIQcgAkHis5oBQSAQ+Rc3A8gGIAJBuAVqIAJByAZqEJQTIAIoArgFIAIoArwFEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtABpFDQBBACABKAIAEI0GIQRBgrSaAUEsEPkXIQcgAkGutJoBQTsQ+Rc3A8gGIAJBsAVqIAJByAZqEJQTIAIoArAFIAIoArQFEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtABtFDQBBACABKAIAEI0GIQRB6bSaAUEfEPkXIQcgAkGItZoBQS4Q+Rc3A8gGIAJBqAVqIAJByAZqEJQTIAIoAqgFIAIoAqwFEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtABxFDQBBACABKAIAEI0GIQRBtrWaAUEVEPkXIQcgAkHLtZoBQSQQ+Rc3A8gGIAJBoAVqIAJByAZqEJQTIAIoAqAFIAIoAqQFEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtAB1FDQBBACABKAIAEI0GIQRB77WaAUEYEPkXIQcgAkGHtpoBQScQ+Rc3A8gGIAJBmAVqIAJByAZqEJQTIAIoApgFIAIoApwFEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtAB5FDQBBACABKAIAEI0GIQRBrraaAUEZEPkXIQcgAkHHtpoBQSgQ+Rc3A8gGIAJBkAVqIAJByAZqEJQTIAIoApAFIAIoApQFEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtAB9FDQBBACABKAIAEI0GIQRB77aaAUEfEPkXIQcgAkGOt5oBQS4Q+Rc3A8gGIAJBiAVqIAJByAZqEJQTIAIoAogFIAIoAowFEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAA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AyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtACpFDQBBACABKAIAEI0GIQRB9LyaAUENEPkXIQcgAkGBvZoBQRwQ+Rc3A8gGIAJBsARqIAJByAZqEJQTIAIoArAEIAIoArQEEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtACtFDQBBACABKAIAEI0GIQRBnb2aAUEJEPkXIQcgAkGmvZoBQRgQ+Rc3A8gGIAJBqARqIAJByAZqEJQTIAIoAqgEIAIoAqwEEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcD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4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtADZFDQBBACABKAIAEI0GIQRB+sCaAUEbEPkXIQcgAkGVwZoBQSoQ+Rc3A8gGIAJB0ANqIAJByAZqEJQTIAIoAtADIAIoAtQDEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtADdFDQBBACABKAIAEI0GIQRBv8GaAUELEPkXIQcgAkHKwZoBQRoQ+Rc3A8gGIAJByANqIAJByAZqEJQTIAIoAsgDIAIoAswDEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtADhFDQBBACABKAIAEI0GIQRB5MGaAUEYEPkXIQcgAkH8wZoBQScQ+Rc3A8gGIAJBwANqIAJByAZqEJQTIAIoAsADIAIoAsQDEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtADlFDQBBACABKAIAEI0GIQRBo8KaAUEZEPkXIQcgAkG8wpoBQSgQ+Rc3A8gGIAJBuANqIAJByAZqEJQTIAIoArgDIAIoArwDEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtADpFDQBBACABKAIAEI0GIQRB5MKaAUETEPkXIQcgAkH3wpoBQSIQ+Rc3A8gGIAJBsANqIAJByAZqEJQTIAIoArADIAIoArQDEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtADtFDQBBACABKAIAEI0GIQRBmcOaAUESEPkXIQcgAkGrw5oBQSEQ+Rc3A8gGIAJBqANqIAJByAZqEJQTIAIoAqgDIAIoAqwDEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABBAC0A4PadARpBGBCEASIFRQ0BIAVCADcDCCAFIAg3AwAgBUEQakIANwMAAkAgACgCCCIGIAAoAgBHDQAgABC4GQsgACgCBCAGQThsaiIEQgA3AhQgBCAFNgIQIARBATYCDCAEIAM2AgggBEKAgICAEDcDACAEQRpqQgA3AQAgACAGQQFqNgIICwJAIAEtADxFDQBBACABKAIAEI0GIQRBzMOaAUEYEPkXIQcgAkHkw5oBQScQ+Rc3A8gGIAJBoANqIAJByAZqEJQTIAIoAqADIAIoAqQDEPoXIQgCQCACKQPIBiIJQgODQgBSDQAgCaciAyADKAIAIgVBf2o2AgAgBUEBRw0AIAMgAygCEBDpHQtBAC0A4PadARpByAAQhAEiA0UNASADQgA3AxAgA0KRvgE3AwggA0IANwMAIANCADcDOCADQQA6ADQgAyAENgIwIANCADcDKCADIAc3AyAgA0EVakIANwAAIANBwABqQQA6AABB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AEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQALRQ0AIAMgAUGU2poBQRMgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAAxFDQAgAyABQafamgFBFyACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ADUUNACADIAFBvtqaAUEPIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAORQ0AIAMgAUHN2poBQRggAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAA9FDQAgAyABQeXamgFBDiACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AEEUNACADIAFB89qaAUESIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQARRQ0AIAMgAUGF25oBQRUgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABJFDQAgAyABQZrbmgFBCyACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AE0UNACADIAFBpduaAUEKIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAURQ0AIAMgAUGv25oBQRsgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABVFDQAgAyABQcrbmgFBIiACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AFkUNACADIAFB7NuaAUEaIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAXRQ0AIAMgAUGG3JoBQRogAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABhFDQAgAyABQaDcmgFBHSACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AGUUNACADIAFBvdyaAUEQIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAaRQ0AIAMgAUHN3JoBQSsgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABtFDQAgAyABQfjcmgFBHiACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AHEUNACADIAFBlt2aAUEUIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAdRQ0AIAMgAUGq3ZoBQRcgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAB5FDQAgAyABQcHdmgFBGCACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AH0UNACADIAFB2d2aAUEeIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAgRQ0AIAMgAUH33ZoBQR0gAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACFFDQAgAyABQZTemgFBFyACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AIkUNACADIAFBq96aAUEaIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAjRQ0AIAMgAUHF3poBQRggAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACRFDQAgAyABQd3emgFBGSACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AJUUNACADIAFB9t6aAUEYIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAmRQ0AIAMgAUGO35oBQSMgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACdFDQAgAyABQbHfmgFBIyACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AKEUNACADIAFB1N+aAUEhIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQApRQ0AIAMgAUH135oBQQkgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACpFDQAgAyABQf7fmgFBDCACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AK0UNACADIAFBiuCaAUEIIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAsRQ0AIAMgAUGS4JoBQQggAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAC1FDQAgAyABQZrgmgFBHCACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ALkUNACADIAFBtuCaAUEPIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAvRQ0AIAMgAUHF4JoBQQsgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADBFDQAgAyABQdfLmwFBByACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AMUUNACADIAFB8LObAUEDIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAyRQ0AIAMgAUHQ4JoBQRAgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADNFDQAgAyABQeDgmgFBCCACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ANEUNACADIAFB6OCaAUEOIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA1RQ0AIAMgAUH24JoBQRsgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADZFDQAgAyABQZHhmgFBGiACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AN0UNACADIAFBlpybAUEKIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA4RQ0AIAMgAUGr4ZoBQRcgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADlFDQAgAyABQcLhmgFBGCACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AOkUNACADIAFB2uGaAUESIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA7RQ0AIAMgAUHs4ZoBQREgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADxFDQAgAyABQf3hmgFBFyACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0APUUNACADIAFBlOKaAUEdIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA+RQ0AIAMgAUGx4poBQQMgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAD9FDQAgAyABQbTimgFBDyACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AQEUNACADIAFBw+KaAUERIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBBRQ0AIAMgAUHU4poBQRMgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAEJFDQAgAyABQefimgFBGiACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AQ0UNACADIAFBgeOaAUENIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBERQ0AIAMgAUGO45oBQRMgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAEVFDQAgAyABQaHjmgFBGSACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ARkUNACADIAFBuuOaAUEfIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBHRQ0AIAMgAUHZ45oBQQ4gAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAEhFDQAgAyABQefjmgFBGyACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ASUUNACADIAFBguSaAUEPIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBKRQ0AIAMgAUHzs5sBQQMgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAEtFDQAgAyABQZHkmgFBECACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ATEUNACADIAFBoeSaAUEZIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBNRQ0AIAMgAUG65JoBQQ8gAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAE5FDQAgAyABQcnkmgFBFSACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AT0UNACADIAFB3uSaAUEPIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBQRQ0AIAMgAUHt5JoBQRcgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFFFDQAgAyABQYTlmgFBHSACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AUkUNACADIAFB8NGbAUEFIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBTRQ0AIAMgAUGh5ZoBQQggAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFRFDQAgAyABQanlmgFBEyACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AVUUNACADIAFBvOWaAUEMIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBWRQ0AIAMgAUHI5ZoBQQ8gAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFdFDQAgAyABQdeEmgFBBiACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AWEUNACADIAFB1+WaAUEHIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBZRQ0AIAMgAUHe5ZoBQR0gAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFpFDQAgAyABQfvlmgFBFCACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AW0UNACADIAFBj+aaAUERIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBcRQ0AIAMgAUGg5poBQRAgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAF1FDQAgAyABQbDmmgFBHyACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AXkUNACADIAFBz+aaAUEmIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBfRQ0AIAMgAUH15poBQR8gAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGBFDQAgAyABQZTnmgFBISACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AYUUNACADIAFBteeaAUEbIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBiRQ0AIAMgAUHQ55oBQQwgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGNFDQAgAyABQdznmgFBIyACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AZEUNACADIAFB/+eaAUELIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBlRQ0AIAMgAUGK6JoBQQwgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGZFDQAgAyABQZbomgFBCyACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AZ0UNACADIAFBoeiaAUEIIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBoRQ0AIAMgAUGp6JoBQQkgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGlFDQAgAyABQbLomgFBGiACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AakUNACADIAFBzOiaAUEUIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBrRQ0AIAMgAUHg6JoBQSQgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGxFDQAgAyABQYTpmgFBESACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AbUUNACADIAFBlemaAUEIIAIoAgAQ6QUCQCAAKAIIIgUgACgCAEcNACAAELcZCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBuRQ0AIAMgAUGd6ZoBQQcgAigCABDpBQJAIAAoAggiBSAAKAIARw0AIAAQtxkLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAG9FDQAgAyABQcXDmwFBBSACKAIAEOkFAkAgACgCCCIFIAAoAgBHDQAgABC3GQsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AcEUNACADIAFBpOmaAUEJIAIoAgAQ6QUCQCAAKAIIIgQgACgCAEcNACAAELcZCyAAKAIEIARBMGxqIgEgAykDADcDACABQShqIANBKGopAwA3AwAgAUEgaiADQSBqKQMANwMAIAFBGGogA0EYaikDADcDACABQRBqIANBEGopAwA3AwAgAUEIaiADQQhqKQMANwMAIAAgBEEBajYCCAsgAiACKAIEQX9qNgIEIANBMGokAAu+iwECJX8DfiMAQdAHayIDJAACQAJAAkAgASgCeCIEQYCAgIAGcQ0AIAEoAsQBIQQgASgCwAEhBSADQcaAgIB4NgKwBiAFIAQgA0GwBmoQhBchBCABLQDIAUGiAUcNASABENcSIQUgARDjDiABIAUQ+hIMAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AyAEiBUHfAEYNACAFQdgARw0DIANB+ABqQQhqIAJBCGooAgA2AgAgAyACKQIANwN4IARBgoCAgAJxQYCAgIACRg0BDBALIAEoAsABIQUCQAJAAkACQAJAAkAgARDkC0H/AXFBCEYNACABEOQLQf8BcUUNAQJAIAEoAngiBEECcQ0AIAEgBEEKcjYCeAsgAS0AyAEiBEHfAEcNAiABEOMOIAEtAMgBQcAARw0DIANBsAZqIAEQ/Q1BCEEYEJkiIgYNBAwWCyADQQhqIAEQhQkgAygCDCEEIAMoAghBAXENFgJAIAEtAMgBQQZHDQAgARDjDgtBCSEHQRIhCCAFIQYgASgCvAEhBQwSCyADQRBqIAEQhQkgAygCFCEEIAMoAhBBAXENFQJAIAEtAMgBQQZHDQAgARDjDgtBCSEHQRIhCCAFIQYgASgCvAEhBQwRCyABKALEASEFIAEoAsABIQYgA0GEAWogBBCGHiADQQE2ArQGIANBlPObATYCsAYgA0IBNwK8BiADQfcGrUIghkHcsJsBrYQ3A6AHIAMgA0GgB2o2ArgGIANByAJqIANBsAZqEI0XIANB3AJqIANBjAFqKAIANgIAIAMgAykChAE3AtQCIAYgBSADQcgCahCEFyEEIAEtAMgBQaIBRw0UIAEQ1xIhBSABEOMOIAEgBRD6EgwUCyADQThqQQRBCEHIAEHwsJsBENkWQQAhBCADQQA2ApgBIAMgAygCPCIHNgKUASADIAMoAjgiCTYCkAEgASgCeCABLQDIASIGEKcXDQFBACEKQQAhCwwKCyAGIAMpA7AGNwMAIAZBEGogA0GwBmpBEGopAwA3AwAgBkEIaiADQbAGakEIaikDADcDACABLQDIASEEQQAhCQJAIAEtAMkBDQACQCAEQfcARg0AIARB8ABHDQELIAEQ4w4gA0GwBmogARBZIAMoArQGIQQCQCADKAKwBiIMQTJHDQAgBhDMHwwUCwJAQThFDQAgA0HIAmpBCGogA0GwBmpBCGpBOPwKAAALIAMgBDYCzAIgAyAMNgLIAiAMQQ5HDQNBBEEUEJkiIglFDRIgCSADQcgCakEEciIEKQIANwIAIAlBEGogBEEQaigCADYCACAJQQhqIARBCGopAgA3AgAgAS0AyAEhBAsCQCAEQf8BcUEGRw0AIAEQ4w4LIAEoArwBIQFBACEHQQghCEEAIQxBACEEQQAhCkEAIQsMDwsgA0GwBmogARCIDiADKAKwBiEMIAMtAMQGIgRBAkYNCyADQaAHakEMaiADQbAGakEMaikCADcCACADQaAHakEXaiADQbAGakEXai0AADoAACADIAMpArQGNwKkByADIAMvAMUGOwC1ByADIAQ6ALQHIAMgDDYCoAcgA0G1B2ohBCADQaAHakEEciEGQQAhCiABLQCBAUEgcUUNAyADQaAHakG4pZsBQQQQpBxFDQNBACELQQEhCiABLQDIASIMQQJGDQQgDEEPRg0EQQAhCiABKAJ4IAwQpxdFDQMCQCAMQf4ARw0AIAEQ5AtB/wFxQf4ARg0AIAEQ5AtB/wFxQRdHDQQgA0GwAWogARCIDAJAIAMpA7ABIihCAFINACADKAK4ASEMDAwLIAMpA7gBISkgAykDoAcQ8x8gA0EAOgC0ByADQQA2ArAHIAMgKTcDqAcgAyAoPgKgByADIChCIIg+AqQHQQEhCgwECyADQbAGaiABEIgOIAMoArAGIQwgAy0AxAYiC0ECRg0KIANBoAFqQQhqIgogA0G8BmopAgA3AwAgA0GcAWpBAmoiCCADQccGai0AADoAACADIAMpArQGNwOgASADIAMvAMUGOwGcASADKQOgBxDzHyAGIAMpA6ABNwIAIAZBCGogCikDADcCACAEIAMvAZwBOwAAIARBAmogCC0AADoAACADIAw2AqAHIAMgCzoAtAdBASEKDAMLIAEgBEEKcjYCeAwOC0GSqZsBQShB4LCbARCMGgALIANBATYCtAYgA0HAr5sBNgKwBiADQgA3ArwGIAMgA0HMB2o2ArgGIANBsAZqQZSwmwEQqB0ACwJAIAEtAIEBQSBxRQ0AIAEtAMgBQf8BcUEXRw0AIANBsAZqQRBqIANBoAdqQRBqKQMANwMAIANBsAZqQQhqIANBoAdqQQhqKQMANwMAIAMgAykDoAc3A7AGIANBGGogASAFIANBsAZqQQAgChDvAkEKQQYgAygCGEEBcRshByADKAIcIQwMCQsgA0EwaiADQaAHahCUEwJAIAMoAjAiDCADKAI0IgtBgLGbAUEGEMIeDQAgDCALQYaxmwFBBRDCHkUNAgsgA0EoaiADQaAHahCUEwJAAkACQCADKAIoIgwgAygCLCILQYCxmwFBBhDCHiIIRQ0AQQEhCwwBCyAMIAtBhrGbAUEFEMIeRQ0BQQIhCwsgAS0AyAEiDEECRg0BIAxBD0YNASABKAJ4IAwQpxchDQJAAkAgDEH+AEYNACANDQELIAEQ5AtB/wFxQf4ARw0DCwJAIAgNAEEAIQsMAgsgA0GwBmogARCIDiADKAKwBiEMIAMtAMQGIghBAkYNByADQcgBakEIaiINIANBvAZqKQIANwMAIANBxAFqQQJqIg4gA0HHBmotAAA6AAAgAyADKQK0BjcDyAEgAyADLwDFBjsBxAEgAykDoAcQ8x8gBiADKQPIATcCACAGQQhqIA0pAwA3AgAgBCADLwHEATsAACAEQQJqIA4tAAA6AAAgAyAMNgKgByADIAg6ALQHDAMLQZKpmwFBKEGMsZsBEIwaAAsgAykDoAcQ8x9BACEEDAILQQAhCwsCQCABLQDIASIEQf4ARg0AIARBB0cNAyABEOMOCyADQbAGakEIaiIEIANBoAdqQQhqIgYpAwA3AwAgA0GwBmpBEGoiDCADQaAHakEQaikDADcDACADIAMpA6AHNwOwBiAGKAIAIQYgAygCrAchCAJAIAkNACADQZABakGcsZsBEPoYIAMoApQBIQcLIAdCAzcDACAHIAg2AgwgByAGNgIIIAcgAykDsAY3AxAgB0EYaiAEKQMANwMAIAdBIGogDCkDADcDAEEBIQQgA0EBNgKYAQsgAS0AyAEhBgsCQAJAAkAgC0EBRg0AIAZB/wFxQQ9GDQELIAsNASAGQf8BcUECRw0BIAEQ4w4gBEHIAGwhD0H3Bq1CIIYiKUG4sJsBrYQhKiADQaAHakEVaiEQIANBsANqQRVqIREgA0GgB2pBBHIhEiADQbADakEEciETIANBkARqQQRyIQkgA0GIA2pBFWohFCADQYgDakEEciEVIANB4AVqQRVqIRYgA0HgBWpBBHIhFyADQagFakEVaiEYIANBqAVqQQRyIRkgA0HIAmpBFGohCCADQYAFakEEciEaIANBsAZqQRRqIRsgA0HgBGpBFWohHCADQeAEakEEciEdIANBgAVqQQxqIR4gA0GQBGpBDGohHyADQbADakEMaiEHIANB+ANqQQRyIQ0CQANAAkACQCABLQDIAUEDRg0AIAEoAsABISAgA0GwA2ogARCjCSADKAK4AyEGAkAgAykDsAMiKEICUg0AIAYhDAwJCyADQeADakEQaiIhIAdBEGoiIigCADYCACADQeADakEIaiIjIAdBCGoiJCkCADcDACADIAcpAgA3A+ADAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAop0EBcUUNACAJIAMpA+ADNwIAIAlBCGoiDiAjKQMANwIAIAlBEGoiJSAhKAIANgIAIAMgBjYCkAQgAS0AyAFB9QBHDQEgARDjDiADQbADaiABQQAQwgUgAygCsAMhDCADLQDEAyIGQQJGDQIgEiATKQIANwIAIBAgESkAADcAACASQQhqIBNBCGopAgA3AgAgEEEHaiARQQdqKAAANgAAIAMgBjoAtAcgAyAMNgKgByADQZgGaiADQaAHahD4FSADQcgCakEIaiAOKQIANwMAIANByAJqQRBqICUoAgA2AgAgCCADKQOYBjcCACAIQQhqIANBmAZqQQhqKQMANwIAIAhBEGogA0GYBmpBEGopAwA3AgAgAyAJKQIANwPIAiADKAKQBCEMIAMoAqQGISVCASEoQQAhDiAgISYMDQsgDSADKQPgAzcCACANQQhqIicgIykDADcCACANQRBqIiMgISgCADYCACADIAY2AvgDQQAhISABLQCBAUEgcUUNBiADQfgDakG4pZsBQQQQpBxFDQYgAS0AyAEiBkG1f2oiIUEfSw0CQQEgIXRBgYCCkHhxRQ0CDAMLIAMoApwEIQQgAygCmAQhBSADQSBqIANBkARqEJMTIANBgAVqIAMoAiAgAygCJBC4CCADIANBgAVqENAdNwO4AyADQfCAgIB4NgKwAyAFIAQgA0GwA2oQhBchDCABLQDIAUGiAUcNACABENcSIQQgARDjDiABIAQQ+hILIAMpA5AEIAMpA6AEEIwkDBMLAkAgBkHAAEYNAEEAISEgBkG0f2pB/wFxQdQASw0FDAELIANBsANqIAEQowkgAygCuAMhDCADKQOwAyIoQgJRDQUgHyAHKQIANwIAIB9BEGoiISAiKAIANgIAIB9BCGoiIyAkKQIANwIAIAMgDDYCmAQgAyAoNwOQBAJAAkACQCABLQDIASIGQfUARw0AIAEQ4w4gA0GwA2ogAUEAEMIFIAMoArADIQYgAy0AxAMiIkECRw0CIAYhDAwBCyABKALEASEMIAEoAsABISEgA0G0BGogBhCGHiADQQE2ArQDIANBlPObATYCsAMgA0IBNwK8AyADICo3A8AEIAMgA0HABGo2ArgDIANBgAVqIANBsANqEI0XIB5BCGogA0G0BGpBCGooAgA2AgAgHiADKQK0BDcCACAhIAwgA0GABWoQhBchDCABLQDIAUGiAUcNACABENcSIQYgARDjDiABIAYQ+hILIANBkARqEOoeDAYLIB0gEykCADcCACAcIBEpAAA3AAAgHUEIaiATQQhqKQIANwIAIBxBB2ogEUEHaigAADYAACADICI6APQEIAMgBjYC4AQgA0HIBGogA0HgBGoQ+BUgCkUNASADKAKEBCEGIAMoAoAEIQ4gA0GngYCAeDYCsAMgASAOIAYgA0GwA2oQ3hwMAQsgA0GYBWogARCIDAJAIAMpA5gFIihCAFINACADKAKgBSEMDAULIANBADYCkAUgAyADKQOgBTcDiAUgA0EAOgCUBSADICg+AoAFIAMgKEIgiD4ChAUCQAJAAkACQAJAAkAgA0GABWpB3LGbAUECEKQcDQAgCg0BDAULAkACQCABLQDIASIhQbV/aiIGQR9LDQBBASAGdEGBgIKQeHENAQsgIUG0f2pB/wFxQdUASQ0AIApFDQQgAygChAQhBiADKAKABCEOIANBp4GAgHg2ArADIAEgDiAGIANBsANqEN4cDAQLIANBsANqIAFBABDCBSADKAKwAyEMAkACQAJAIAMtAMQDIgZBAkYNACAZIBMpAgA3AgAgGCARKQAANwAAIBlBCGogE0EIaiIhKQIANwIAIBhBB2ogEUEHaiIiKAAANgAAIAMgBjoAvAUgAyAMNgKoBSADQZAEaiADQagFahD4FSADQZAEakHcsZsBQQIQpBxFDQICQAJAIAEtAMgBIgxBtX9qIgZBH0sNAEEBIAZ0QYGAgpB4cQ0BCyAMQbR/akH/AXFB1ABLDQMLIANBsANqIAFBABDCBSADKAKwAyEMIAMtAMQDIgZBAkcNASADKQOQBBDzHwsgAykDgAUQ8x8MCwsgFyATKQIANwIAIBYgESkAADcAACAXQQhqICEpAgA3AgAgFkEHaiAiKAAANgAAIAMgBjoA9AUgAyAMNgLgBSADQcgFaiADQeAFahD4FSAKDQIMAwsgCCADKQOQBDcCACAIQQhqIANBkARqQQhqKQMANwIAIAhBEGogA0GQBGpBEGopAwA3AgAgA0HIAmpBCGogJykCADcDACADQcgCakEQaiAjKAIANgIAIAMgDSkCADcDyAIgAygCnAQhJSADKAL4AyEMIAMpA4AFEPMfQQAhDgwLCyADKAKEBCEGIAMoAoAEISEgA0GngYCAeDYCsAMgASAhIAYgA0GwA2oQ3hwMAwsgAygChAQhBiADKAKABCEMIANBp4GAgHg2ArADIAEgDCAGIANBsANqEN4cCyAIIAMpA8gFNwIAIANByAJqQQhqIBpBCGopAgA3AwAgA0HIAmpBEGogGkEQaigCADYCACAIQQhqIANByAVqQQhqKQMANwIAIAhBEGogA0HIBWpBEGopAwA3AgAgAyAaKQIANwPIAiADKAKABSEMIAMoAtQFISUgAykDkAQQ8x9CACEoDAMLIAggAykDgAU3AgAgCEEIaiADQYAFakEIaikDADcCACAIQRBqIANBgAVqQRBqKQMANwIAIAEoArwBISVCAiEoDAILIANBsANqQRBqIgYgA0GABWpBEGopAwA3AwAgA0GwA2pBCGoiISADQYAFakEIaikDADcDACADIAMpA4AFNwOwAyADKQP4AxDzHyADQfgDakEQaiAGKQMANwMAIANB+ANqQQhqICEpAwA3AwAgAyADKQOwAzcD+ANBASEhDAILIBsgAykDyAQ3AgAgA0GwBmpBCGogIykCADcDACADQbAGakEQaiAhKAIANgIAIBtBCGogA0HIBGpBCGopAwA3AgAgG0EQaiADQcgEakEQaikDADcCACADIB8pAgA3A7AGIAMoAtQEISVBLEUNACADQcgCaiADQbAGakEs/AoAAAtBASEOICAhJgwDCyABLQDIASEGCyAGQf8BcUH1AEcNAyABEOMOIANBsANqIAFBABDCBSADKAKwAyEMIAMtAMQDIgZBAkYNACAVIBMpAgA3AgAgFCARKQAANwAAIBVBCGogE0EIaikCADcCACAUQQdqIBFBB2ooAAA2AAAgAyAGOgCcAyADIAw2AogDIANBgAZqIANBiANqEPgVIANByAJqQQhqICcpAgA3AwAgA0HIAmpBEGogIygCADYCACAIIAMpA4AGNwIAIAhBCGogA0GABmpBCGopAwA3AgAgCEEQaiADQYAGakEQaikDADcCACADIA0pAgA3A8gCIAMoAvgDIQwgAygCjAYhJSAhIQ4MAgtCBSEoCyADKQP4AxDzHyAoQgVRDQsMAgtCACEoICAhJgwBCyAIIAMpA/gDNwIAIAhBEGogA0H4A2pBEGopAwA3AgAgCEEIaiADQfgDakEIaikDADcCACABKAK8ASElQgIh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aikDADcDACAfQQhqIANBqAVqQQhqKQMANwMAIANCADcDgAJBACEIDAULIAMoArQFIQUgAygCsAUhCSADQaiBgIB4NgKwBiABIAkgBSADQbAGahDeHAwBCyADQYAGaiABEIgMAkACQCADKQOABiIoUA0AIANBADYCsAcgAyADKQOIBjcDqAcgA0EAOgC0ByADICg+AqAHIAMgKEIgiD4CpAcCQAJAIANBoAdqQdyxmwFBAhCkHEUNAAJAAkAgAS0AyAEiCkG1f2oiBUEfSw0AQQEgBXRBgYCCkHhxDQELIApBtH9qQf8BcUHUAEsNAQsgA0GYBmogARCIDAJAIAMpA5gGIihCAFINACADKAKgBiEKIAMpA6AHEPMfIAMpA+AFEPMfDAQLIChCIIghKSAopyEHIAMoAqQGISAgAygCoAYhIyACRQ0BIAMoArQFIQUgAygCsAUhCSADQaiBgIB4NgKwBiABIAkgBSADQbAGahDeHAwBCyADQZAEakEIaiAZKQIANwMAIANBkARqQRBqIAkoAgA2AgAgA0G8AmpBAmogGkECai0AADoAACADIBApAgA3A5AEIAMgGi8AADsBvAIgAygCqAUhCiADKAK0BSENIAMoAqAHIQcgAygCpAchISADKAKoByEjIAMoAqwHISAgAygCsAchESADLQC0ByEPIAMpA+AFEPMfQgAhKUEAIQhCACEoDAgLICmnISEgA0GQBGpBCGogHUEIaikCADcDACADQZAEakEQaiAdQRBqKAIANgIAIAMgHSkCADcDkAQgAygC4AUhCiADKAK0BSENIAMpA6AHEPMfQQAhD0EBIQhCACEoQgAhKUEAIREMAwsgAygCiAYhCiADKQPgBRDzHwtCAiEoIBghEwwBCyADQZAEakEIaiAdQQhqKQIANwMAIANBkARqQRBqIB1BEGooAgA2AgAgAyAdKQIANwOQBCABKAK8ASENQQEhCEICISlCACEoIAMoAuAFIQoLIAMpA6gFEPMfIChCAlENCwwDCyAfIAMpA+AFNwMAIB9BEGogA0HgBWpBEGopAwA3AwAgH0EIaiADQeAFakEIaikDADcDACADQgA3A4ACIAMpA6gFEPMfQQEhCAtCACEoC0ICISkCQCABLQDIAUH1AEcNACABEOMOIANBsAZqIAEQowkgAygCuAYhBwJAIAMpA7AGIilC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BUEYaiAYNgIAIAVBFGogGTYCACAFQRBqIBI2AgAgBUEMaiAQNgIAIAVBHWogAi8AqAI7AAAgBUEfaiACQagCakECai0AADoAACAFQSBqIBs2AgAgA0EIaiARKAIANgIACyAOIAdBwABqIgdHDQALIAsoAkgiBUUNACALKAJEIhMgBUEGdGohDwNAAkACQCATKAIAQQdGDQACQCATQThqKAIAIgVFDQAgE0E0aigCACEHIAVBDGwhCANAIAAgBygCACIFENMDIAUgABBRAkAgACgCAEUNACAFKAIAQRpHDQAgACAFQQhqIgMQwwUiBEUNACAFEOQBIAVBOGogBEE4aikDADcDACAFQTBqIARBMGopAwA3AwAgBUEoaiAEQShqKQMANwMAIAVBIGogBEEgaikDADcDACAFQRhqIARBGGopAwA3AwAgBUEQaiAEQRBqKQMANwMAIAMgBEEIaikDADcDACAFIAQpAwA3AwAgBEHAAEEIEL0TCyAHQQxqIQcgCEF0aiIIDQALCyATIAAQhgQgACgCAEUNASAAIBMQwwgMAQsCQCATQThqKAIAIgVFDQAgE0E0aigCACEHIAVBDGwhCANAIAAgBygCACIFENMDIAUgABBRAkAgACgCAEUNACAFKAIAQRpHDQAgACAFQQhqIgMQwwUiBEUNACAFEOQBIAVBOGogBEE4aikDADcDACAFQTBqIARBMGopAwA3AwAgBUEoaiAEQShqKQMANwMAIAVBIGogBEEgaikDADcDACAFQRhqIARBGGopAwA3AwAgBUEQaiAEQRBqKQMANwMAIAMgBEEIaikDADcDACAFIAQpAwA3AwAgBEHAAEEIEL0TCyAHQQxqIQcgCEF0aiIIDQALCyATLQAcQQJHDQAgAC0AnAEhBCAAQQE6AJwBIBMoAggiBSAAEIYEAkAgACgCAEUNACAAIAUQwwgLIABBADoAnAEgACATKAIMIgUQ0wMgBSAAEFECQCAAKAIARQ0AIAUoAgBBGkcNACAAIAVBCGoiCBDDBSIHRQ0AIAUQ5AEgBUE4aiAHQThqKQMANwMAIAVBMGogB0EwaikDADcDACAFQShqIAdBKGopAwA3AwAgBUEgaiAHQSBqKQMANwMAIAVBGGogB0EYaikDADcDACAFQRBqIAdBEGopAwA3AwAgCCAHQQhqKQMANwMAIAUgBykD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QYABakEgaikDADcDACABQRhqIAJBgAFqQRhqKQMANwMAIAFBEGogAkGAAWpBEGopAwA3AwAgAUEIaiACQYABakEIaikDADcDACABIAIpA4ABNwMACyADQRBqIQMgBCAMNgIAIARBDGogATYCACAEQQRqIDI3AgAgCkFwaiEKIARBEGohBCALQX9qIgsNAAsLIAAgBTYCFCAAIAY2AhAgACAHNgIMIAAgCTYCCCAAIAg2AgQgAEENNgIADDMLIAEoAgghAyABKAIUIQ0gASgCECEOIAJBgAFqIAEoAgwiBUEEQQwQow4gAigChAEhCSACKAKAAUEBRg0eIAIoAogBIQYCQCAJRQ0AIAVBDGwhCiAGIQQgCSEMA0AgCkUNAQJAAkAgAygCACIHDQBBAC0A4PadARpB8AAQhAEiC0UNNSACQYABaiADQQRqKAIAEPkBAkBB8ABFDQAgCyACQYABakHwAPwKAAALQQAhAQwBC0EALQDg9p0BGiADQQhqKAIAIQggA0EEaigCACELQcAAEIQBIgFFDTQgAkGAAWogBxBFIAFBOGogAkGAAWpBOGopAwA3AwAgAUEwaiACQYABakEwaikDADcDACABQShqIAJBgAFqQShqKQMANwMAIAFBIGogAkGAAWpBIGopAwA3AwAgAUEYaiACQYABakEYaikDADcDACABQRBqIAJBgAFqQRBqKQMANwMAIAFBCGogAkGAAWpBCGopAwA3AwAgASACKQOAATcDAAsgA0EMaiEDIAQgATYCACAEQQhqIAg2AgAgBEEEaiALNgIAIApBdGohCiAEQQxqIQQgDEF/aiIMDQALCyAAIA02AhQgACAONgIQIAAgBTYCDCAAIAY2AgggACAJNgIEIABBDjYCAAwyCwJAAkAgAS0AHCIDQQJHDQAMAQsgASgCGCEMIAEoAhQhCyABKAIQIQogASkDCCIyQgODQgBSDQAgMqciBCAEKAIAIgRBAWo2AgAgBEF/TA0xC0EALQDg9p0BGkHIABCEASIERQ0wIAQgASgCIBCIAiAAIAQ2AiAgACADOgAcIAAgDDYCGCAAIAs2AhQgACAKNgIQIAAgMjcDCCAAQQ82AgAMMQtBAC0A4PadARogAS0AECEDIAEoAgwhCiABKAIIIQtBwAAQhAEiBEUNLyAEIAEoAgQQRSAAIAM6ABAgACAKNgIMIAAgCzYCCCAAIAQ2AgQgAEEQNgIADDALIAAgASkDADcDACAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACAAQQhqIAFBCGopAwA3AwAMLwtBAC0A4PadARogAS0AESEDIAEtABAhCiABKAIIIQsgASgCBCEMQcAAEIQBIgRFDS0gBCABKAIMEEUgACADOgARIAAgCjoAECAAIAQ2AgwgACALNgIIIAAgDDYCBCAAQRE2AgAMLgtBAC0A4PadARogAS0AFCEKIAEoAhAhCyABKAIMIQxBwAAQhAEiBEUNLCAEIAEoAgQQRUEALQDg9p0BGkHAABCEASIDRQ0sIAMgASgCCBBFIAAgCjoAFCAAIAs2AhAgACAMNgIMIAAgAzYCCCAAIAQ2AgQgAEESNgIADC0LIAEtADwhCiABKAI0IQsgASgCMCEMAkAgA0ELRw0AAkACQAJAIAEoAgQOAwABAgALIAJBgAFqIAFBCGoQvQYgAkE4akEIaiACQZQBaikCADcDACACIAIpAowBNwM4IAIoAogBIQggAikDgAEhMkEAIQcMLQsgAkGAAWogAUEIahCyDCACQThqQQhqIAJBlAFqKQIANwMAIAIgAikCjAE3AzggAigCiAEhCCACKQOAASEyQQEhBwwsCyACQcAAaiABQRxqKQIANwMAIAIgASkCFDcDOCABKAIQIQggASkDCCEyQQIhBwwrCwJAAkACQAJAAkACQAJAAkACQAJAAkAgAw4LAAECAwQFBgcICQoACyACQYABaiABQQhqELMMIAJBGGpBCGogAkGUAWopAgA3AwAgAkEoaiACQZwBaigCADYCACACIAIpAowBNwMYDDILIAJBgAFqIAFBCGoQyAogAkEYakEIaiACQZQBaikCADcDACACQShqIAJBnAFqKQIANwMAIAJBMGogAkGkAWooAgA2AgAgAiACKQKMATcDGAwxCyACQYABaiABQQhqEMUMIAJBGGpBCGogAkGUAWopAgA3AwAgAkEoaiACQZwBaikCADcDACACQTBqIAJBpAFqKAIANgIAIAIgAikCjAE3AxgMMAsgAkGAAWogAUEEahCwGgwuCyACQYABaiAB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IDKnIgQgBCgCACIEQQFqNgIAIARBf0wNLAsgASgCJCELIAEoAiAhBAJAIAEpAyAiM1ANACAzQgODUEUNACAzpyIBIAEoAgAiAUEBajYCACABQX9MDSwLIDJCIIinIQwgMqchCAwGCyABKQMYIjJCIIinIQcgASkDECIzQiCIpyEMIAEoAiQhCyABKAIgIQQgASgCDCEBIDKnIQMgM6chCAwGCyABKQMYIjJCIIinIQcgASkDECIzQiCIpyEMIAEoAiQhCyABKAIgIQQgASgCDCEBIDKnIQMgM6chCAwFCyABKAIkIQsgASgCICEEIAEpAxghMiABKAIUIQwgASgCECEIAkAgASkDICIzUA0AIDNCA4NQRQ0AIDOnIgEgASgCACIBQQFqNgIAIAFBf0wNKQsgMkIgiKchByAypyEDDAMLQQAtAOD2nQEaIAEoAhQhDCABKAIQIQhBEBCEASIERQ0nIAEoAiAiA0EEaigCACEFIAMtAAwhByACIANBCGooAgAiA0EEQQRBuOSbARCoFSACKAIAIQkgAigCBCELAkAgA0ECdCIGRQ0AIAsgBSAG/AoAAAsgBCAHOgAMIAQgAzYCCCAEIAs2AgQgBCAJNgIAIAEpAxgiMqchAwJAIDJQDQAgMkIDg1BFDQAgAyADKAIAIgFBAWo2AgAgAUF/TA0oCyAyQiCIpyEHDAILIAEoAiQhCyABKAIgIQQCQCABKQMQIjJCA4NCAFINACAypyIDIAMoAgAiA0EBajYCACADQX9MDScLIAEpAxgiM6chAwJAIDNCA4NCAFINACADIAMoAgAiAUEBajYCACABQX9MDScLIDNCIIinIQcgMkIgiKchDCAypyEIDAELIAEoAiQhCyABKAIgIQQCQCABKQMQIjJCA4NCAFINACAypyIDIAMoAgAiA0EBajYCACADQX9MDSYLIAEpAxgiM6chAwJAIDNCA4NCAFINACADIAMoAgAiAUEBajYCACABQX9MDSYLIDNCIIinIQcgMkIgiKchDCAypyEICwsgACALNgIkIAAgBDYCICAAIAE2AgwgACAKNgIIIABBGzYCACAAIAetQiCGIAOthDcDGCAAIAytQiCGIAithDcDEAwkCyABKAIIIQMgASgCICEFIAEoAhwhBiACQYABaiABKAIMIgdBBEEEEKMOIAIoAoQBIQggAigCgAFBAUYNDSACKAKIASEJAkAgCEUNACAHQQJ0IQogCSELIAghDANAIApFDQFBAC0A4PadARpBwAAQhAEiBEUNJCACQYABaiADKAIAEEUgBEE4aiACQYABakE4aikDADcDACAEQTBqIAJBgAFqQTBqKQMANwMAIARBKGogAkGAAWpBKGopAwA3AwAgBEEgaiACQYABakEgaikDADcDACAEQRhqIAJBgAFqQRhqKQMANwMAIARBEGogAkGAAWpBEGopAwA3AwAgBEEIaiACQYABakEIaikDADcDACAEIAIpA4ABNwMAIAsgBDYCACAKQXxqIQogC0EEaiELIANBBGohAyAMQX9qIgwNAAsLIAJBgAFqIAEoAhQgASgCGBCeCSAAIAc2AgwgACAJNgIIIAAgCDYCBCAAIAU2AiAgACAGNgIcIABBHDYCACAAIAIpAoABNwIQIABBGGogAkGIAWooAgA2AgAMIwtBACEFQQAtAOD2nQEaIAEoAhQhDiABKAIQIQ8gASgCDCEQQcAAEIQBIglFDSEgCSABKAIEEEUCQCABKAIYRQ0AIAFBGGoQyQohBQtBAC0A4PadARpBIBCEASIMRQ0hIAEoAggiCCgCBCEEIAgoAhwhESAIKAIYIRIgAkGAAWogCCgCCCIGQQRBBBCjDiACKAKEASEHIAIoAoABQQFGDQsgAigCiAEhDQJAIAdFDQAgBkECdCEDIA0hCiAHIQsDQCADRQ0BQQAtAOD2nQEaQcAAEIQBIgFFDSMgAkGAAWogBCgCABBFIAFBOGogAkGAAWpBOGopAwA3AwAgAUEwaiACQYABakEwaikDADcDACABQShqIAJBgAFqQShqKQMANwMAIAFBIGogAkGAAWpBIGopAwA3AwAgAUEYaiACQYABakEYaikDADcDACABQRBqIAJBgAFqQRBqKQMANwMAIAFBCGogAkGAAWpBCGopAwA3AwAgASACKQOAATcDACAKIAE2AgAgA0F8aiEDIApBBGohCiAEQQRqIQQgC0F/aiILDQALCyAMQQxqIAhBEGooAgAgCEEUaigCABCeCSAMIBE2AhwgDCASNgIYIAwgBjYCCCAMIA02AgQgDCAHNgIAIAAgBTYCGCAAIA42AhQgACAPNgIQIAAgEDYCDCAAIAw2AgggACAJNgIEIABBHTYCAAwiCyABKAIIIQMgASgCHCEP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AGooAgAhECABQcgAaigCACEPIAFBwABqKQMAIjOnIRQCQCAzQgODQgBSDQAgFCAUKAIAIgRBAWo2AgAgBEF/TA0eCyAzQiCIpyEqDAELIAFBxABqKAIAISogAUHAAGooAgAhFCABQThqKQMAIjKnISkCQCAyQgODQgBSDQAgKSApKAIAIgRBAWo2AgAgBEF/TA0dCyAyQiCIpyEoQgAhMgtBBCEIAkACQCABKAIAIgRBBEcNACArIQQgLCELIC0hDAwBCwJAAkACQAJAAkAgBA4EAAECAwALIAFBFGooAgAhESABQRBqKAIAIRICQCABQQhqKQMAIjNCA4NCAFINACAzpyIEIAQoAgAiBEEBajYCACAEQX9MDSELAkAgAUEYaikDACI1UA0AIDVCA4NQRQ0AIDWnIgEgASgCACIBQQFqNgIAIAFBf0wNIQsgM0IgiKchDCAzpyELQQAhCCAuIQQMAwsgAUEUaigCACERIAFBEGooAgAhEgJAAkAgAUEEaigCACIEQQFHDQBBAC0A4PadARpBwAAQhAEiC0UNISACQYABaiABQQhqKAIAEEUgC0E4aiACQYABakE4aikDADcDACALQTBqIAJBgAFqQTBqKQMANwMAIAtBKGogAkGAAWpBKGopAwA3AwAgC0EgaiACQYABakEgaikDADcDACALQRhqIAJBgAFqQRhqKQMANwMAIAtBEGogAkGAAWpBEGopAwA3AwAgC0EIaiACQYABakEIaikDADcDACALIAIpA4ABNwMAQQEhBCAvIQwMAQsgAUEIaigCACELIAFBDGooAgAiDCEvC0EBIQggBCEuDAILQQAtAOD2nQEaQaABEIQBIgRFDR4gAkGAAWogAUEEaigCABCwAQJAQaABRQ0AIAQgAkGAAWpBoAH8CgAAC0ECIQggMCELIDEhDCAEIS4MAgsgAUEYaikCACE1IAFBFGooAgAhESABQRBqKAIAIRIgAkGAAWogAUEIaigCACABQQxqKAIAEPwDIAFBIGopAgAhNiACKQKEASIzQiCIpyEMIDOnIQtBAyEIIAIoAoABIgQhLgsgCyEwIAwhMQsgKq1CIIYgFK2EITcgKK1CIIYgKa2EITMgBCErIAshLCAMIS0LIBMgA2oiASAINgIAIAFB1ABqIA42AgAgAUHQAGogDTYCACABQcwAaiAQNgIAIAFByABqIA82AgAgAUHAAGogNzcDACABQThqIDM3AwAgAUEwaiAyNwMAIAFBLGogBTYCACABQShqIAY2AgAgAUEgaiA2NwMAIAFBGGogNTcDACABQRRqIBE2AgAgAUEQaiASNgIAIAFBDGogDDYCACABQQhqIAs2AgAgAUEEaiAENgIAIANB2ABqIQMgB0F/aiIHDQALCyAJLQCIASEGAkACQCAJKAJ4IgENAEEAIQgMAQtBAC0A4PadARpBFBCEASIIRQ0ZIAEpAgwhMiAIIAEQhQwgCCAyNwIMCyACQcgAakECaiACQRhqQQJqLQAAOgAAIAIgAi8BGDsBSCAJKAKUASEEIAJBgAFqIAkoApgBIgdBCEEoEKMOIAIoAoQBIQwCQCACKAKAAUEBRg0AIBxBCHQgGkH/AXFyrUIghiEyIBetITMgAigCiAEhBQJAIAxFDQAgB0EobCEDIAUhASAMIQsDQCADRQ0BIAJBgAFqIAQQvAcgAUEgaiACQYABakEgaikDADcDACABQRhqIAJBgAFqQRhqKQMANwMAIAFBEGogAkGAAWpBEGopAwA3AwAgAUEIaiACQYABakEIaikDADcDACABIAIpA4ABNwMAIAFBKGohASADQVhqIQMgBEEoaiEEIAtBf2oiCw0ACwsgMiAzhCEyQQYhAQJAIAktADxBBkYNACAJKAIMIQMgCSgCCCEEIAJBgAFqIAlBEGoQugYgAkHQAGpBKGogAkGAAWpBKGooAgA2AgAgAkHQAGpBIGogAkGAAWpBIGopAwA3AwAgAkHQAGpBGGogAkGAAWpBGGopAwA3AwAgAkHQAGpBEGogAkGAAWpBEGopAwA3AwAgAkHQAGpBCGogAkGAAWpBCGopAwA3AwAgAkHOAGogAkGvAWotAAA6AAAgAiACKQOAATcDUCACIAIvAK0BOwFMIAItAKwBIQELIAogAzYCDCAKIAQ2AgggCiAVNgIEIAogFjYCACAKIAIpA1A3AxAgCiABOgA8IAogAi8BTDsAPSAKQRhqIAJB2ABqKQMANwMAIApBIGogAkHgAGopAwA3AwAgCkEoaiACQdAAakEYaikDADcDACAKQTBqIAJB0ABqQSBqKQMANwMAIApBOGogAkHQAGpBKGooAgA2AgAgCkE/aiACQcwAakECai0AADoAACAKIBs6AGwgCiAdNgJoIAogHjYCZCAKIB82AmAgCiAgNgJcIAogITYCWCAKIDI3A1AgCiAYNgJMIAogGTYCSCAKIDQ3A0AgCiAGOgCIASAKIAc2ApgBIAogBTYClAEgCiAMNgKQASAKICU2AoQBIAogEzYCgAEgCiAmNgJ8IAogCDYCeCAKICM2AnQgCiAkNgJwIAogAi8BSDsAbSAKQe8AaiACQcgAakECai0AADoAACAAIAo2AgQgAEEnNgIADBoLIAwgAigCiAFBiKSaARDYIAALICYgAigCiAFBiKSaARDYIAALIAkgAigCiAFBiKSaARDYIAALIAcgAigCiAFBiKSaARDYIAALIAggAigCiAFBiKSaARDYIAALIAwgAigCiAFBiKSaARDYIAALIAkgAigCiAFBiKSaARDYIAALIAggAigCiAFBiKSaARDYIAwRCyAAIAEpAwA3AwAgAEE4aiABQThqKQMANwMAIABBMGogAUEwaikDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAEEIaiABQQhqKQMANwMADBELQQAtAOD2nQEaIAEtABAhDiABKAIMIQ8gASgCCCEQQSgQhAEiC0UNDwJAAkAgASgCBCIHKAIAQQNHDQBBAC0A4PadARogBygCHCERIAcoAhghEiAHKAIUIRRBwAAQhAEiCUUNESAJIAcoAhAQRSAHKAIIIQQgAkEQaiAHKAIMIgVBBEEQEPMVIAIoAhQhBgJAIAIoAhAiDUUNACAFQQR0IQogBiEDIA0hDANAIApFDQFBAC0A4PadARogBCkCBCEyIAQoAgAhCEHAABCEASIBRQ0TIAJBgAFqIAQoAgwQRSABQThqIAJBgAFqQThqKQMANwMAIAFBMGogAkGAAWpBMGopAwA3AwAgAUEoaiACQYABakEoaikDADcDACABQSBqIAJBgAFqQSBqKQMANwMAIAFBGGogAkGAAWpBGGopAwA3AwAgAUEQaiACQYABakEQaikDADcDACABQQhqIAJBgAFqQQhqKQMANwMAIAEgAikDgAE3AwAgA0EMaiABNgIAIANBBGogMjcCACADIAg2AgAgCkFwaiEKIANBEGohAyAEQRBqIQQgDEF/aiIMDQALC0EDIQQCQCAHKAIgIgMNAEEAIQEMAgtBAC0A4PadARpBFBCEASIBRQ0RIAMpAgwhMiABIAMoAgQgAygCCBCqDCABIDI3AgwMAQtBAC0A4PadARogBygCHCERIAcoAhghEkHAABCEASIBRQ0QIAEgBygCIBBFIAJBgAFqIAcQlgsgAigClAEhFCACKAKQASEJIAIoAowBIQUgAigCiAEhBiACKAKEASENIAIoAoABIQQLIAsgATYCICALIBE2AhwgCyASNgIYIAsgFDYCFCALIAk2AhAgCyAFNgIMIAsgBjYCCCALIA02AgQgCyAENgIAIAAgDjoAECAAIA82AgwgACAQNgIIIAAgCzYCBCAAQTA2AgAMEAsgASgCFCEEIAEoAhAhAwJAIAEpAwgiMkIDg0IAUg0AIDKnIgEgASgCACIBQQFqNgIAIAFBf0wNDwsgACAENgIUIAAgAzYCECAAIDI3AwggAEEvNgIADA8LQQAtAOD2nQEaIAEoAhAhCiABKAIMIQtBwAAQhAEiBEUNDSAEIAEoAgQQRUEALQDg9p0BGkHgABCEASIDRQ0NIAMgASgCCBBlIAAgCjYCECAAIAs2AgwgACADNgIIIAAgBDYCBCAAQS42AgAMDgtBAC0A4PadARogASgCECEGIAEoAgwhDUHAABCEASIHRQ0MIAcgASgCBBBFQQAtAOD2nQEaQRQQhAEiDEUNDCABKAIIIgQoAgQhASAEKAIQIQ4gBCgCDCEPIAJBgAFqIAQoAggiCUEEQQQQow4gAigChAEhCAJAIAIoAoABQQFGDQAgAigCiAEhBQJAIAhFDQAgCUECdCEEIAUhAyAIIQsDQCAERQ0BQQAtAOD2nQEaQeAAEIQBIgpFDQ8gAkGAAWogASgCABBlAkBB4ABFDQAgCiACQYABakHgAPwKAAALIAMgCjYCACADQQRqIQMgBEF8aiEEIAFBBGohASALQX9qIgsNAAsLIAwgDjYCECAMIA82AgwgDCAJNgIIIAwgBTYCBCAMIAg2AgAgACAGNgIQIAAgDTYCDCAAIAw2AgggACAHNgIEIABBLTYCAAwOCyAIIAIoAogBQYikmgEQ2CAAC0EALQDg9p0BGiABKAIQIQogASgCDCELQcAAEIQBIgRFDQsgBCABKAIEEEVBAC0A4PadARpB4AAQhAEiA0UNCyADIAEoAggQZSAAIAo2AhAgACALNgIMIAAgAzYCCCAAIAQ2AgQgAEEsNgIADAwLQQAtAOD2nQEaIAEoAgwhAyABKAIIIQpBwAAQhAEiBEUNCiAEIAEoAgQQRSAAIAM2AgwgACAKNgIIIAAgBDYCBCAAQSs2AgAMCwtBAC0A4PadARogASgCDCEDIAEoAgghCkHAABCEASIERQ0JIAQgASgCBBBFIAAgAzYCDCAAIAo2AgggACAENgIEIABBKjYCAAwKC0EALQDg9p0BGiABKAIQIQogASgCDCELQcAAEIQBIgRFDQggBCABKAIEEEVBAC0A4PadARpB4AAQhAEiA0UNCCADIAEoAggQZSAAIAo2AhAgACALNgIMIAAgAzYCCCAAIAQ2AgQgAEEpNgIADAkLIAEoAgghAyABKAIcIQkgASgCGCEFIAEoAhQhBiABKAIQIQ0gAkGAAWogASgCDCIIQQhBKBCjDiACKAKEASEMAkAgAigCgAFBAUYNACACKAKIASEHAkAgDEUNACAIQShsIQogByEEIAwhCwNAIApFDQEgAkGAAWogAxC8ByAEQSBqIAJBgAFqQSBqKQMANwMAIARBGGogAkGAAWpBGGopAwA3AwAgBEEQaiACQYABakEQaikDADcDACAEQQhqIAJBgAFqQQhqKQMANwMAIAQgAikDgAE3AwAgCkFYaiEKIARBKGohBCADQShqIQMgC0F/aiILDQALCyAAIAk2AhwgACAFNgIYIAAgBjYCFCAAIA02AhAgACAINgIMIAAgBzYCCCAAIAw2AgQgAEEoNgIAIAAgASkDIDcDIAwJCyAMIAIoAogBQYikmgEQ2CAACyABKAIUIREgASgCECENCyABKAIIIQMgAkGAAWogASgCDCIJQQRBEBCjDiACKAKEASEHAkAgAigCgAFBAUYNACACKAKIASEFAkAgB0UNACAJQQR0IQsgBSEKIAchDANAIAtFDQFBAC0A4PadARogAykCBCEyIAMoAgAhCEHAABCEASIERQ0IIAJBgAFqIAMoAgwQRSAEQThqIAJBgAFqQThqKQMANwMAIARBMGogAkGAAWpBMGopAwA3AwAgBEEoaiACQYABakEoaikDADcDACAEQSBqIAJBgAFqQSBqKQMANwMAIARBGGogAkGAAWpBGGopAwA3AwAgBEEQaiACQYABakEQaikDADcDACAEQQhqIAJBgAFqQQhqKQMANwMAIAQgAikDgAE3AwAgCkEMaiAENgIAIApBBGogMjcCACAKIAg2AgAgC0FwaiELIApBEGohCiADQRBqIQMgDEF/aiIMDQALCwJAAkAgASgCKA0AQQAhAQwBCyABQShqEMkKIQELIAAgAi8BGDsAGSAAQRtqIAJBGmotAAA6AAAgACABNgIoIAAgDjYCJCAAIA82AiAgACAQNgIcIAAgBjoAGCAAIBE2AhQgACANNgIQIAAgCTYCDCAAIAU2AgggACAHNgIEIABBFzYCAAwHCyAHIAIoAogBQYikmgEQ2CAACyACKAKMASEIIAIpAoQBITIgAigCgAEhBwwCCyACKQKEASEyIAIoAoABIQcMAQsgAigCiAEhCCACKQOAASEyCyACQThqQQhqIAJBGGpBCGopAwA3AwAgAkGAAWpBCGogAkEwaigCADYCACACIAIpAxg3AzggAiACKQMoNwOAAQtBAC0A4PadARpBwAAQhAEiBEUNACAEIAEoAjgQRSAAIAg2AhAgACACKQM4NwIUIABBHGogAkE4akEIaikDADcCACAAIAIpA4ABNwIkIABBLGogAkGAAWpBCGooAgA2AgAgACAKOgA8IAAgBDYCOCAAIAs2AjQgACAMNgIwIAAgMjcDCCAAIAc2AgQgACADNgIADAELAAsgAkGgAmokAAu0ZAINfwF+IwBBwA9rIgIkACAAKAIAIQMCQAJAAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANBdGoiBEEHIARBJkkbDiYfAB4dGxoZGBcWFRQTEh8fERAPDg0fDAsKHx8JCAcGBQQDAh8BHx8LIAAoAgwiA0UNHiAAKAIIIQAgA0EEdCEDA0ACQCAAKAIAQQJGDQACQCAAQQxqKAIAIgQoAgBBGkcNACACQYAMaiABKAIAIAEoAgQgBEEIaiIFEIINIAIoAoAMQTJGDQEgBBDRASAEQThqIAJBgAxqQThqKQMANwMAIARBMGogAkGADGpBMGopAwA3AwAgBEEoaiACQYAMakEoaikDADcDACAEQSBqIAJBgAxqQSBqKQMANwMAIARBGGogAkGADGpBGGopAwA3AwAgBEEQaiACQYAMakEQaikDADcDACAFIAJBgAxqQQhqKQMANwMAIAQgAikDgAw3AwAMAQsgBCABEEYLIABBEGohACADQXBqIgMNAAwfCwsCQCAAKAIEIgAoAgBBA0cNACAAQQRqIAEQhAcMHgsgACABEMMHDB0LIAAoAgQiACgCACIDQRpHDRkgAkGACWogASgCACABKAIEIABBCGoiARCCDSACKAKACUEyRg0cIAAQ0QEgAEE4aiACQYAJakE4aikDADcDACAAQTBqIAJBgAlqQTBqKQMANwMAIABBKGogAkGACWpBKGopAwA3AwAgAEEgaiACQYAJakEgaikDADcDACAAQRhqIAJBgAlqQRhqKQMANwMAIABBEGogAkGACWpBEGopAwA3AwAgASACQYAJakEIaikDADcDACAAIAIpA4AJNwMADBwLIAAoAgQiACgCACIDQRpHDRggAkHACGogASgCACABKAIEIABBCGoiARCCDSACKALACEEyRg0bIAAQ0QEgAEE4aiACQcAIakE4aikDADcDACAAQTBqIAJBwAhqQTBqKQMANwMAIABBKGogAkHACGpBKGopAwA3AwAgAEEgaiACQcAIakEgaikDADcDACAAQRhqIAJBwAhqQRhqKQMANwMAIABBEGogAkHACGpBEGopAwA3AwAgASACQcAIakEIaikDADcDACAAIAIpA8AINwMADBsLIAAoAgQiACgCACIDQRpHDRcgAkGACGogASgCACABKAIEIABBCGoiARCCDSACKAKACEEyRg0aIAAQ0QEgAEE4aiACQYAIakE4aikDADcDACAAQTBqIAJBgAhqQTBqKQMANwMAIABBKGogAkGACGpBKGopAwA3AwAgAEEgaiACQYAIakEgaikDADcDACAAQRhqIAJBgAhqQRhqKQMANwMAIABBEGogAkGACGpBEGopAwA3AwAgASACQYAIakEIaikDADcDACAAIAIpA4AINwMADBoLIAAoAgQiACgCACIDQRpHDRYgAkHAB2ogASgCACABKAIEIABBCGoiARCCDSACKALAB0EyRg0ZIAAQ0QEgAEE4aiACQcAHakE4aikDADcDACAAQTBqIAJBwAdqQTBqKQMANwMAIABBKGogAkHAB2pBKGopAwA3AwAgAEEgaiACQcAHakEgaikDADcDACAAQRhqIAJBwAdqQRhqKQMANwMAIABBEGogAkHAB2pBEGopAwA3AwAgASACQcAHakEIaikDADcDACAAIAIpA8AHNwMADBkLIAAoAgQiACgCACIDQRpHDRUgAkGAB2ogASgCACABKAIEIABBCGoiARCCDSACKAKAB0EyRg0YIAAQ0QEgAEE4aiACQYAHakE4aikDADcDACAAQTBqIAJBgAdqQTBqKQMANwMAIABBKGogAkGAB2pBKGopAwA3AwAgAEEgaiACQYAHakEgaikDADcDACAAQRhqIAJBgAdqQRhqKQMANwMAIABBEGogAkGAB2pBEGopAwA3AwAgASACQYAHakEIaikDADcDACAAIAIpA4AHNwMADBgLIAAoAgQiACgCACIDQRpHDRQgAkHABmogASgCACABKAIEIABBCGoiARCCDSACKALABkEyRg0XIAAQ0QEgAEE4aiACQcAGakE4aikDADcDACAAQTBqIAJBwAZqQTBqKQMANwMAIABBKGogAkHABmpBKGopAwA3AwAgAEEgaiACQcAGakEgaikDADcDACAAQRhqIAJBwAZqQRhqKQMANwMAIABBEGogAkHABmpBEGopAwA3AwAgASACQcAGakEIaikDADcDACAAIAIpA8AGNwMADBcLIAAoAgwhAyAAKAIIIQAgAiABNgKADyADRQ0WIANBKGwhAQNAIAJBgA9qIAAQzwMgAEEoaiEAIAFBWGoiAQ0ADBcLCyAAKAIEIAEQlwEMFQsgAC0ANEECRw0UIABBCGohAQNAIAEoAhgiAS0ALEECRg0ADBULCyAAKAIEIgAoAgAiA0EaRw0QIAJBgAZqIAEoAgAgASgCBCAAQQhqIgEQgg0gAigCgAZBMkYNEyAAENEBIABBOGogAkGABmpBOGopAwA3AwAgAEEwaiACQYAGakEwaikDADcDACAAQShqIAJBgAZqQShqKQMANwMAIABBIGogAkGABmpBIGopAwA3AwAgAEEYaiACQYAGakEYaikDADcDACAAQRBqIAJBgAZqQRBqKQMANwMAIAEgAkGABmpBCGopAwA3AwAgACACKQOABjcDAAwTCyAAKAIEIgAoAgAiA0EaRw0PIAJBwAVqIAEoAgAgASgCBCAAQQhqIgEQgg0gAigCwAVBMkYNEiAAENEBIABBOGogAkHABWpBOGopAwA3AwAgAEEwaiACQcAFakEwaikDADcDACAAQShqIAJBwAVqQShqKQMANwMAIABBIGogAkHABWpBIGopAwA3AwAgAEEYaiACQcAFakEYaikDADcDACAAQRBqIAJBwAVqQRBqKQMANwMAIAEgAkHABWpBCGopAwA3AwAgACACKQPABTcDAAwSCyAAKAIMIgBFDREgASAAEOQMDBELAkAgACgCICIGQQhqKAIAIgBFDQAgBkEEaigCACEDIABBDGwhBANAAkACQCADKAIAIgAoAgBBGkcNACACQYAOaiABKAIAIAEoAgQgAEEIaiIFEIINIAIoAoAOQTJGDQEgABDRASAAQThqIAJBgA5qQThqKQMANwMAIABBMGogAkGADmpBMGopAwA3AwAgAEEoaiACQYAOakEoaikDADcDACAAQSBqIAJBgA5qQSBqKQMANwMAIABBGGogAkGADmpBGGopAwA3AwAgAEEQaiACQYAOakEQaikDADcDACAFIAJBgA5qQQhqKQMANwMAIAAgAikDgA43AwAMAQsgACABEEYLIANBDGohAyAEQXRqIgQNAAsLAkAgBkEUaigCACIDRQ0AIAZBEGooAgAhACADQdgAbCEDA0AgACABEGkgAEHYAGohACADQah/aiIDDQALCyAGKAIwIgBFDRAgACgCACIDQRpHDQ0gAkHAC2ogASgCACABKAIEIABBCGoiARCCDSACKALAC0EyRg0QIAAQ0QEgAEE4aiACQcALakE4aikDADcDACAAQTBqIAJBwAtqQTBqKQMANwMAIABBKGogAkHAC2pBKGopAwA3AwAgAEEgaiACQcALakEgaikDADcDACAAQRhqIAJBwAtqQRhqKQMANwMAIABBEGogAkHAC2pBEGopAwA3AwAgASACQcALakEIaikDADcDACAAIAIpA8ALNwMADBALAkAgACgCDCIERQ0AIAAoAgghAyAEQShsIQQDQCADIAEQqgMgA0EoaiEDIARBWGoiBA0ACwsCQCAAKAIQIgAoAgBBgICAgHhHDQAgAEEEaiABEM4MDBALIAAoAggiA0UNDyAAKAIEIQAgA0EwbCEDA0AgACABEHAgAEEwaiEAIANBUGoiAw0ADBALCwJAAkAgACgCBCIDKAIAQRpHDQAgAkGABWogASgCACABKAIEIANBCGoiBBCCDSACKAKABUEyRg0BIAMQ0QEgA0E4aiACQYAFakE4aikDADcDACADQTBqIAJBgAVqQTBqKQMANwMAIANBKGogAkGABWpBKGopAwA3AwAgA0EgaiACQYAFakEgaikDADcDACADQRhqIAJBgAVqQRhqKQMANwMAIANBEGogAkGABWpBEGopAwA3AwAgBCACQYAFakEIaikDADcDACADIAIpA4AFNwMADAELIAMgARBGCyAAKAIIIgBBCGooAgAiBEUNDiAAQQRqKAIAIQMgBEECdCEEA0ACQAJAIAMoAgAiACgCAEEaRw0AIAJBgAtqIAEoAgAgASgCBCAAQQhqIgUQgg0gAigCgAtBMkYNASAAENEBIABBOGogAkGAC2pBOGopAwA3AwAgAEEwaiACQYALakEwaikDADcDACAAQShqIAJBgAtqQShqKQMANwMAIABBIGogAkGAC2pBIGopAwA3AwAgAEEYaiACQYALakEYaikDADcDACAAQRBqIAJBgAtqQRBqKQMANwMAIAUgAkGAC2pBCGopAwA3AwAgACACKQOACzcDAAwBCyAAIAEQRgsgA0EEaiEDIARBfGoiBA0ADA8LCyAAKAIMIgRFDQ0gACgCCCEDIARBAnQhBANAAkACQCADKAIAIgAoAgBBGkcNACACQcAKaiABKAIAIAEoAgQgAEEIaiIFEIINIAIoAsAKQTJGDQEgABDRASAAQThqIAJBwApqQThqKQMANwMAIABBMGogAkHACmpBMGopAwA3AwAgAEEoaiACQcAKakEoaikDADcDACAAQSBqIAJBwApqQSBqKQMANwMAIABBGGogAkHACmpBGGopAwA3AwAgAEEQaiACQcAKakEQaikDADcDACAFIAJBwApqQQhqKQMANwMAIAAgAikDwAo3AwAMAQsgACABEEYLIANBBGohAyAEQXxqIgQNAAwOCwsgACgCDCIERQ0MIAAoAgghAyAEQQJ0IQQDQAJAAkAgAygCACIAKAIAQRpHDQAgAkGACmogASgCACABKAIEIABBCGoiBRCCDSACKAKACkEyRg0BIAAQ0QEgAEE4aiACQYAKakE4aikDADcDACAAQTBqIAJBgApqQTBqKQMANwMAIABBKGogAkGACmpBKGopAwA3AwAgAEEgaiACQYAKakEgaikDADcDACAAQRhqIAJBgApqQRhqKQMANwMAIABBEGogAkGACmpBEGopAwA3AwAgBSACQYAKakEIaikDADcDACAAIAIpA4AKNwMADAELIAAgARBGCyADQQRqIQMgBEF8aiIEDQAMDQsLIABBBGohAwJAAkAgACgCECIAKAIAQRpHDQAgAkHABGogASgCACABKAIEIABBCGoiBBCCDSACKALABEEyRg0BIAAQ0QEgAEE4aiACQcAEakE4aikDADcDACAAQTBqIAJBwARqQTBqKQMANwMAIABBKGogAkHABGpBKGopAwA3AwAgAEEgaiACQcAEakEgaikDADcDACAAQRhqIAJBwARqQRhqKQMANwMAIABBEGogAkHABGpBEGopAwA3AwAgBCACQcAEakEIaikDADcDACAAIAIpA8AENwMADAELIAAgARBGCyADKAIAQYCAgIB4Rg0LIAEgAxD2CgwLCwJAIAAtABhBBUcNACABIAAoAhAQ5AwLIAAoAgwiA0UNCiADQQR0IQQgACgCCEEMaiEDA0ACQAJAIAMoAgAiACgCAEEaRw0AIAJBwAlqIAEoAgAgASgCBCAAQQhqIgUQgg0gAigCwAlBMkYNASAAENEBIABBOGogAkHACWpBOGopAwA3AwAgAEEwaiACQcAJakEwaikDADcDACAAQShqIAJBwAlqQShqKQMANwMAIABBIGogAkHACWpBIGopAwA3AwAgAEEYaiACQcAJakEYaikDADcDACAAQRBqIAJBwAlqQRBqKQMANwMAIAUgAkHACWpBCGopAwA3AwAgACACKQPACTcDAAwBCyAAIAEQRgsgA0EQaiEDIARBcGoiBA0ADAsLCwJAAkAgACgCBCIDKAIAQRpHDQAgAkGABGogASgCACABKAIEIANBCGoiBBCCDSACKAKABEEyRg0BIAMQ0QEgA0E4aiACQYAEakE4aikDADcDACADQTBqIAJBgARqQTBqKQMANwMAIANBKGogAkGABGpBKGopAwA3AwAgA0EgaiACQYAEakEgaikDADcDACADQRhqIAJBgARqQRhqKQMANwMAIANBEGogAkGABGpBEGopAwA3AwAgBCACQYAEakEIaikDADcDACADIAIpA4AENwMADAELIAMgARBGCwJAAkAgACgCCCIDKAIAQRpHDQAgAkHAA2ogASgCACABKAIEIANBCGoiBBCCDSACKALAA0EyRg0BIAMQ0QEgA0E4aiACQcADakE4aikDADcDACADQTBqIAJBwANqQTBqKQMANwMAIANBKGogAkHAA2pBKGopAwA3AwAgA0EgaiACQcADakEgaikDADcDACADQRhqIAJBwANqQRhqKQMANwMAIANBEGogAkHAA2pBEGopAwA3AwAgBCACQcADakEIaikDADcDACADIAIpA8ADNwMADAELIAMgARBGCyAAKAIMIgAoAgAiA0EaRw0GIAJBgANqIAEoAgAgASgCBCAAQQhqIgEQgg0gAigCgANBMkYNCSAAENEBIABBOGogAkGAA2pBOGopAwA3AwAgAEEwaiACQYADakEwaikDADcDACAAQShqIAJBgANqQShqKQMANwMAIABBIGogAkGAA2pBIGopAwA3AwAgAEEYaiACQYADakEYaikDADcDACAAQRBqIAJBgANqQRBqKQMANwMAIAEgAkGAA2pBCGopAwA3AwAgACACKQOAAzcDAAwJCyAAKAIIQQFHDQggASAAQQxqEM8MDAgLAkACQCAAKAIoIgMoAgBBGkcNACACQcACaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAsACQTJGDQEgAxDRASADQThqIAJBwAJqQThqKQMANwMAIANBMGogAkHAAmpBMGopAwA3AwAgA0EoaiACQcACakEoaikDADcDACADQSBqIAJBwAJqQSBqKQMANwMAIANBGGogAkHAAmpBGGopAwA3AwAgA0EQaiACQcACakEQaikDADcDACAEIAJBwAJqQQhqKQMANwMAIAMgAikDwAI3AwAMAQsgAyABEEYLIAAoAghBAkkNByABIABBDGoQzwwMBwsCQAJAIANBC0cNAAJAAkAgACgCBA4DAAEDAAsgACgCECIERQ0CIAAoAgwhAyAEQShsIQQDQAJAIAMoAgBBB0YNACADIAEQqgMLIANBKGohAyAEQVhqIgQNAAwDCwsgACgCECIDRQ0BIAAoAgwhBSADQThsIQZBACEDA0ACQAJAAkACQAJAAkACQCAFIANqIgQoAgAOAwABAgALIARBCGooAgBBA0cNBCAEQQxqKAIAIgcoAgBBGkcNAiACQYAPaiABKAIAIAEoAgQgB0EIaiIIEIINIAIoAoAPQTJGDQQgBxDRASAHQThqIAJBgA9qQThqKQMANwMAIAdBMGogAkGAD2pBMGopAwA3AwAgB0EoaiACQYAPakEoaikDADcDACAHQSBqIAJBgA9qQSBqKQMANwMAIAdBGGogAkGAD2pBGGopAwA3AwAgB0EQaiACQYAPakEQaikDADcDACAIIAJBgA9qQQhqKQMANwMAIAcgAikDgA83AwAMBAsgBEEwaigCACIERQ0EIAQoAgBBGkcNAiACQYAPaiABKAIAIAEoAgQgBEEIaiIHEIINIAIoAoAPQTJGDQQgBBDRASAEQThqIAJBgA9qQThqKQMANwMAIARBMGogAkGAD2pBMGopAwA3AwAgBEEoaiACQYAPakEoaikDADcDACAEQSBqIAJBgA9qQSBqKQMANwMAIARBGGogAkGAD2pBGGopAwA3AwAgBEEQaiACQYAPakEQaikDADcDACAHIAJBgA9qQQhqKQMANwMAIAQgAikDgA83AwAMBAsgBEEEaigCACABEKoDDAMLIAcgARBGDAELIAQgARBGDAELIARBKGooAgAgARCqAwsgBiADQThqIgNHDQAMAgsLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDgsUAAECAwQFBgcIFBQLIAAoAigiAygCAEEaRw0IIAJBwA5qIAEoAgAgASgCBCADQQhqIgQQgg0gAigCwA5BMkYNEiADENEBIANBOGogAkHADmpBOGopAwA3AwAgA0EwaiACQcAOakEwaikDADcDACADQShqIAJBwA5qQShqKQMANwMAIANBIGogAkHADmpBIGopAwA3AwAgA0EYaiACQcAOakEYaikDADcDACADQRBqIAJBwA5qQRBqKQMANwMAIAQgAkHADmpBCGopAwA3AwAgAyACKQPADjcDAAwSCyAAKAIIQQFHDRIgACgCDCIDKAIAQRpHDQggAkGAD2ogASgCACABKAIEIANBCGoiBBCCDSACKAKAD0EyRg0SIAMQ0QEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADBILIAAoAgQiAygCAEEaRw0IIAJBgA9qIAEoAgAgASgCBCADQQhqIgQQgg0gAigCgA9BMkYNESADENEBIANBOGogAkGAD2pBOGopAwA3AwAgA0EwaiACQYAPakEwaikDADcDACADQShqIAJBgA9qQShqKQMANwMAIANBIGogAkGAD2pBIGopAwA3AwAgA0EYaiACQYAPakEYaikDADcDACADQRBqIAJBgA9qQRBqKQMANwMAIAQgAkGAD2pBCGopAwA3AwAgAyACKQOADzcDAAwRCwJAIAAoAgQiAygCACIFQQNHDQAgA0EEaiABEIQHDBELIAMoAiAiBCgCAEEaRw0IIAJBwA5qIAEoAgAgASgCBCAEQQhqIgYQgg0gAigCwA5BMkYNDiAEENEBIARBOGogAkHADmpBOGopAwA3AwAgBEEwaiACQcAOakEwaikDADcDACAEQShqIAJBwA5qQShqKQMANwMAIARBIGogAkHADmpBIGopAwA3AwAgBEEYaiACQcAOakEYaikDADcDACAEQRBqIAJBwA5qQRBqKQMANwMAIAYgAkHADmpBCGopAwA3AwAgBCACKQPADjcDAAwOCyAAKAIEIgMoAgBBGkcNCCACQYAPaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAoAPQTJGDQ8gAxDRASADQThqIAJBgA9qQThqKQMANwMAIANBMGogAkGAD2pBMGopAwA3AwAgA0EoaiACQYAPakEoaikDADcDACADQSBqIAJBgA9qQSBqKQMANwMAIANBGGogAkGAD2pBGGopAwA3AwAgA0EQaiACQYAPakEQaikDADcDACAEIAJBgA9qQQhqKQMANwMAIAMgAikDgA83AwAMDwsgACgCBCIDKAIAQRpHDQggAkGAD2ogASgCACABKAIEIANBCGoiBBCCDSACKAKAD0EyRg0OIAMQ0QEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADA4LIAAoAgQiAygCAEEaRw0IIAJBgA9qIAEoAgAgASgCBCADQQhqIgQQgg0gAigCgA9BMkYNDSADENEBIANBOGogAkGAD2pBOGopAwA3AwAgA0EwaiACQYAPakEwaikDADcDACADQShqIAJBgA9qQShqKQMANwMAIANBIGogAkGAD2pBIGopAwA3AwAgA0EYaiACQYAPakEYaikDADcDACADQRBqIAJBgA9qQRBqKQMANwMAIAQgAkGAD2pBCGopAwA3AwAgAyACKQOADzcDAAwNCyAAKAIEIgMoAgBBGkcNCCACQYAPaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAoAPQTJGDQwgAxDRASADQThqIAJBgA9qQThqKQMANwMAIANBMGogAkGAD2pBMGopAwA3AwAgA0EoaiACQYAPakEoaikDADcDACADQSBqIAJBgA9qQSBqKQMANwMAIANBGGogAkGAD2pBGGopAwA3AwAgA0EQaiACQYAPakEQaikDADcDACAEIAJBgA9qQQhqKQMANwMAIAMgAikDgA83AwAMDAsgACgCBCIDKAIAQRpHDQggAkGAD2ogASgCACABKAIEIANBCGoiBBCCDSACKAKAD0EyRg0LIAMQ0QEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADAsLIAMgARBGDAkLIAMgARBGDAkLIAMgARBGDAgLIAQgARBGDAULIAMgARBGDAYLIAMgARBGDAULIAMgARBGDAQLIAMgARBGDAMLIAMgARBGDAILIAVBAkkNAQJAIAMoAgQiAygCAEEaRw0AIAJBgA9qIAEoAgAgASgCBCADQQhqIgQQgg0gAigCgA9BMkYNAiADENEBIANBOGogAkGAD2pBOGopAwA3AwAgA0EwaiACQYAPakEwaikDADcDACADQShqIAJBgA9qQShqKQMANwMAIANBIGogAkGAD2pBIGopAwA3AwAgA0EYaiACQYAPakEYaikDADcDACADQRBqIAJBgA9qQRBqKQMANwMAIAQgAkGAD2pBCGopAwA3AwAgAyACKQOADzcDAAwCCyADIAEQRgwBCyAAKAIIQQJJDQACQCAAKAIMIgMoAgBBGkcNACACQYAPaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAoAPQTJGDQEgAxDRASADQThqIAJBgA9qQThqKQMANwMAIANBMGogAkGAD2pBMGopAwA3AwAgA0EoaiACQYAPakEoaikDADcDACADQSBqIAJBgA9qQSBqKQMANwMAIANBGGogAkGAD2pBGGopAwA3AwAgA0EQaiACQYAPakEQaikDADcDACAEIAJBgA9qQQhqKQMANwMAIAMgAikDgA83AwAMAQsgAyABEEYLIAAoAjgiACgCACIDQRpHDQMgAkGAAmogASgCACABKAIEIABBCGoiARCCDSACKAKAAkEyRg0GIAAQ0QEgAEE4aiACQYACakE4aikDADcDACAAQTBqIAJBgAJqQTBqKQMANwMAIABBKGogAkGAAmpBKGopAwA3AwAgAEEgaiACQYACakEgaikDADcDACAAQRhqIAJBgAJqQRhqKQMANwMAIABBEGogAkGAAmpBEGopAwA3AwAgASACQYACakEIaikDADcDACAAIAIpA4ACNwMADAYLAkACQCAAKAIEIgMoAgBBGkcNACACQcABaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAsABQTJGDQEgAxDRASADQThqIAJBwAFqQThqKQMANwMAIANBMGogAkHAAWpBMGopAwA3AwAgA0EoaiACQcABakEoaikDADcDACADQSBqIAJBwAFqQSBqKQMANwMAIANBGGogAkHAAWpBGGopAwA3AwAgA0EQaiACQcABakEQaikDADcDACAEIAJBwAFqQQhqKQMANwMAIAMgAikDwAE3AwAMAQsgAyABEEYLIAAoAggiACgCACIDQRpHDQIgAkGAAWogASgCACABKAIEIABBCGoiARCCDSACKAKAAUEyRg0FIAAQ0QEgAEE4aiACQYABakE4aikDADcDACAAQTBqIAJBgAFqQTBqKQMANwMAIABBKGogAkGAAWpBKGopAwA3AwAgAEEgaiACQYABakEgaikDADcDACAAQRhqIAJBgAFqQRhqKQMANwMAIABBEGogAkGAAWpBEGopAwA3AwAgASACQYABakEIaikDADcDACAAIAIpA4ABNwMADAULIAAoAgwiACgCACIDQRpHDQEgAkHAAGogASgCACABKAIEIABBCGoiARCCDSACKAJAQTJGDQQgABDRASAAQThqIAJBwABqQThqKQMANwMAIABBMGogAkHAAGpBMGopAwA3AwAgAEEoaiACQcAAakEoaikDADcDACAAQSBqIAJBwABqQSBqKQMANwMAIABBGGogAkHAAGpBGGopAwA3AwAgAEEQaiACQcAAakEQaikDADcDACABIAJBwABqQQhqKQMANwMAIAAgAikDQDcDAAwECyAAKAIEIgAoAgAiA0EaRw0ACyACIAEoAgAgASgCBCAAQQhqIgEQgg0gAigCAEEyRg0CIAAQ0QEgAEE4aiACQThqKQMANwMAIABBMGogAkEwaikDADcDACAAQShqIAJBKGopAwA3AwAgAEEgaiACQSBqKQMANwMAIABBGGogAkEYaikDADcDACAAQRBqIAJBEGopAwA3AwAgASACQQhqKQMANwMAIAAgAikDADcDAAwCCwJAIAAoAiAiCEEIaigCACIARQ0AIAhBBGooAgAiBiAAQQZ0aiEHA0ACQCAGQThqKAIAIgBFDQAgBkE0aigCACEDIABBDGwhBANAAkACQCADKAIAIgAoAgBBGkcNACACQcANaiABKAIAIAEoAgQgAEEIaiIFEIINIAIoAsANQTJGDQEgABDRASAAQThqIAJBwA1qQThqKQMANwMAIABBMGogAkHADWpBMGopAwA3AwAgAEEoaiACQcANakEoaikDADcDACAAQSBqIAJBwA1qQSBqKQMANwMAIABBGGogAkHADWpBGGopAwA3AwAgAEEQaiACQcANakEQaikDADcDACAFIAJBwA1qQQhqKQMANwMAIAAgAikDwA03AwAMAQsgACABEEYLIANBDGohAyAEQXRqIgQNAAsLIAYgARCbBCAGQcAAaiIAIQYgACAHRw0ACwsCQCAIQRRqKAIAIgBFDQAgCEEQaigCACEDIABBDGwhBANAAkACQCADKAIAIgAoAgBBGkcNACACQYANaiABKAIAIAEoAgQgAEEIaiIFEIINIAIoAoANQTJGDQEgABDRASAAQThqIAJBgA1qQThqKQMANwMAIABBMGogAkGADWpBMGopAwA3AwAgAEEoaiACQYANakEoaikDADcDACAAQSBqIAJBgA1qQSBqKQMANwMAIABBGGogAkGADWpBGGopAwA3AwAgAEEQaiACQYANakEQaikDADcDACAFIAJBgA1qQQhqKQMANwMAIAAgAikDgA03AwAMAQsgACABEEYLIANBDGohAyAEQXRqIgQNAAsLIAgoAhhBgICAgHhGDQEgCCgCICIDRQ0BIAgoAhwhACADQTBsIQMDQCAAIAEQcCAAQTBqIQAgA0FQaiIDDQAMAgsLIAAoAgwiA0UNACAAKAIIIgkgA0EMbGohCgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAkoAgAiAA0AAkACQAJAAkACQCAJKAIEIgAoAgAiBEF7aiIDQQQgA0EGSRsOBhAAAQIDBBALIAAoAghBA0cNDiAAKAIMIgMoAgBBGkcNBSACQYAPaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAoAPQTJGDQ4gAxDRASADQThqIAJBgA9qQThqKQMANwMAIANBMGogAkGAD2pBMGopAwA3AwAgA0EoaiACQYAPakEoaikDADcDACADQSBqIAJBgA9qQSBqKQMANwMAIANBGGogAkGAD2pBGGopAwA3AwAgA0EQaiACQYAPakEQaikDADcDACAEIAJBgA9qQQhqKQMANwMAIAMgAikDgA83AwAMDgsgACgCKCIAKAIAQRpHDQUgAkGAD2ogASgCACABKAIEIABBCGoiAxCCDSACKAKAD0EyRg0OIAAQ0QEgAEE4aiACQYAPakE4aikDADcDACAAQTBqIAJBgA9qQTBqKQMANwMAIABBKGogAkGAD2pBKGopAwA3AwAgAEEgaiACQYAPakEgaikDADcDACAAQRhqIAJBgA9qQRhqKQMANwMAIABBEGogAkGAD2pBEGopAwA3AwAgAyACQYAPakEIaikDADcDACAAIAIpA4APNwMADA4LIAAoAghBA0cNCyAAKAIMIgMoAgBBGkcNBSACQYAPaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAoAPQTJGDQsgAxDRASADQThqIAJBgA9qQThqKQMANwMAIANBMGogAkGAD2pBMGopAwA3AwAgA0EoaiACQYAPakEoaikDADcDACADQSBqIAJBgA9qQSBqKQMANwMAIANBGGogAkGAD2pBGGopAwA3AwAgA0EQaiACQYAPakEQaikDADcDACAEIAJBgA9qQQhqKQMANwMAIAMgAikDgA83AwAMCwsgAEEgaiEDIARBA0cNCSAAKAIEIgQoAgBBGkcNBSACQYAPaiABKAIAIAEoAgQgBEEIaiIFEIINIAIoAoAPQTJGDQkgBBDRASAEQThqIAJBgA9qQThqKQMANwMAIARBMGogAkGAD2pBMGopAwA3AwAgBEEoaiACQYAPakEoaikDADcDACAEQSBqIAJBgA9qQSBqKQMANwMAIARBGGogAkGAD2pBGGopAwA3AwAgBEEQaiACQYAPakEQaikDADcDACAFIAJBgA9qQQhqKQMANwMAIAQgAikDgA83AwAMCQsgACgCCEEDRw0HIAAoAgwiAygCAEEaRw0FIAJBwA5qIAEoAgAgASgCBCADQQhqIgQQgg0gAigCwA5BMkYNByADENEBIANBOGogAkHADmpBOGopAwA3AwAgA0EwaiACQcAOakEwaikDADcDACADQShqIAJBwA5qQShqKQMANwMAIANBIGogAkHADmpBIGopAwA3AwAgA0EYaiACQcAOakEYaikDADcDACADQRBqIAJBwA5qQRBqKQMANwMAIAQgAkHADmpBCGopAwA3AwAgAyACKQPADjcDAAwHCyAAKAIAQRpHDQUgAkHADGogASgCACABKAIEIABBCGoiAxCCDSACKALADEEyRg0KIAAQ0QEgAEE4aiACQcAMakE4aikDADcDACAAQTBqIAJBwAxqQTBqKQMANwMAIABBKGogAkHADGpBKGopAwA3AwAgAEEgaiACQcAMakEgaikDADcDACAAQRhqIAJBwAxqQRhqKQMANwMAIABBEGogAkHADGpBEGopAwA3AwAgAyACQcAMakEIaikDADcDACAAIAIpA8AMNwMADAoLIAMgARBGDAgLIAAgARBGDAgLIAMgARBGDAULIAQgARBGDAMLIAMgARBGDAELIAAgARBGDAQLAkAgACgCKCILQQhqKAIAIgBFDQAgC0EEaigCACIMIABBBnRqIQ0DQAJAIAxBOGooAgAiAEUNACAMQTRqKAIAIQMgAEEMbCEEA0ACQAJAIAMoAgAiACgCAEEaRw0AIAEoAgBBAUcNASABKAIEIgYgACgCGEcNAQJAAkAgACkDCCIPQgODQgBSDQAgD6ciBSAFKAIAIgVBAWo2AgAgBUF/TA0BC0EALQDg9p0BGiAAKAIUIQcgACgCECEIIAAtABwhDkHAABCEASIFRQ0AIAUgDjoAHCAFIAY2AhggBUIANwMQIAUgDzcDCCAFQRo2AgAgABDRASAAIAU2AiggACAHNgIkIAAgCDYCICAAQgA3AxggAEKRvgE3AxAgAEEANgIIIABBFDYCAAwCCwALIAAgARBGCyADQQxqIQMgBEF0aiIEDQALCyAMIAEQmwQgDEHA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IAggAkHUAmoQ+wwgAkHUAmoQ2wgaIAJBAToAiAUMGQsgAkHoBGogAkHUAmoQtQEgAigC7AQhAyACKALoBCIaQSJGDRkgAigC/AQhBiACKAL4BCEHIAIoAvQEISYgAigC8AQhIAJAQSRFIgENACACQZAEaiATQST8CgAACyACKAKkBSEEIAENFCACQeACaiACQZAEakEk/AoAAAwUCwJAQSRFDQAgAkG4BGogAkGEA2pBJPwKAAALIAJB6ARqIAJB1AJqIAJBuARqEIkEIAJBgARqQQhqIiAgE0EIaikCADcDACACIBMpAgA3A4AEIAIoAvwEIQYgAigC+AQhByACKAL0BCEBIAIoAvAEIQUgAigC7AQhAyACKALoBCIaQSJGDQcgCiAJKQIANwIAIApBEGogCUEQaigCADYCACAKQQhqIAlBCGopAgA3AgAgAkHgAmpBCGogAkGABGpBCGopAwA3AwAgAiACKQOABDcD4AIMEgsCQEEkRQ0AIAJBuARqIAJBhANqQST8CgAACyACQegEaiACQdQCaiACQbgEahDMAiACQYAEakEIaiIgIBNBCGopAgA3AwAgAiATKQIANwOABCACKAL8BCEGIAIoAvgEIQcgAigC9AQhASACKALwBCEFIAIoAuwEIQMgAigC6AQiGkEiRg0HIAogCSkCADcCACAKQRBqIAlBEGooAgA2AgAgCkEIaiAJQQhqKQIANwIAIAJB4AJqQQhqIAJBgARqQQhqKQMANwMAIAIgAikDgAQ3A+ACDBELAkBBJEUNACACQbgEaiACQYQDakEk/AoAAAsgAkHoBGogAkHUAmogAkG4BGoQhAUgAkGABGpBCGoiICATQQhqKQIANwMAIAIgEykCADcDgAQgAigC/AQhBiACKAL4BCEHIAIoAvQEIQEgAigC8AQhBSACKALsBCEDIAIoAugEIhpBIkYNByAKIAkpAgA3AgAgCkEQaiAJQRBqKAIANgIAIApBCGogCUEIaikCADcCACACQeACakEIaiACQYAEakEIaikDADcDACACIAIpA4AENwPgAgwQCyACQegEaiACQdQCahDtAiACKAKABSEGIAIoAvwEIQcgAigC+AQhJiACKAL0BCEgIAIoAvAEIQMgAigC7AQhGiACKALoBCELAkBBJEUiDA0AIAJBuARqIA5BJPwKAAALIAIoAqgFIQQgC0GJgMQARw0HQSRFDRAgAkHgAmogAkG4BGpBJPwKAAAMEAsCQEEkRQ0AIAJBuARqIAJBhANqQST8CgAACyACQQM2AtQKIAJB6ARqIAJB1AJqIAJBuARqIAJB1ApqEJcEIAJBgARqQQhqIiAgE0EIaikCADcDACACIBMpAgA3A4AEIAIoAvwEIQYgAigC+AQhByACKAL0BCEBIAIoAvAEIQUgAigC7AQhAyACKALoBCIaQSJGDQcgCiAJKQIANwIAIApBEGogCUEQaigCADYCACAKQQhqIAlBCGopAgA3AgAgAkHgAmpBCGogAkGABGpBCGopAwA3AwAgAiACKQOABDcD4AIMDgsCQEEkRQ0AIAJBuARqIAJBhANqQST8CgAACyACQQQ2AtQKIAJB6ARqIAJB1AJqIAJBuARqIAJB1ApqEJcEIAJBgARqQQhqIiAgE0EIaikCADcDACACIBMpAgA3A4AEIAIoAvwEIQYgAigC+AQhByACKAL0BCEBIAIoAvAEIQUgAigC7AQhAyACKALoBCIaQSJGDQcgCiAJKQIANwIAIApBEGogCUEQaigCADYCACAKQQhqIAlBCGopAgA3AgAgAkHgAmpBCGogAkGABGpBCGopAwA3AwAgAiACKQOABDcD4AIMDQsCQEEkRQ0AIAJBuARqIAJBhANqQST8CgAACyACQQU2AtQKIAJB6ARqIAJB1AJqIAJBuARqIAJB1ApqEJcEIAJBgARqQQhqIiAgE0EIaikCADcDACACIBMpAgA3A4AEIAIoAvwEIQYgAigC+AQhByACKAL0BCEBIAIoAvAEIQUgAigC7AQhAyACKALoBCIaQSJGDQcgCiAJKQIANwIAIApBEGogCUEQaigCADYCACAKQQhqIAlBCGopAgA3AgAgAkHgAmpBCGogAkGABGpBCGopAwA3AwAgAiACKQOABDcD4AIMDAsCQEEkRQ0AIAJBuARqIAJBhANqQST8CgAACyACQegEaiACQdQCaiACQbgEahD/ASACQYAEakEIaiIgIBNBCGopAgA3AwAgAiATKQIANwOABCACKAL8BCEGIAIoAvgEIQcgAigC9AQhASACKALwBCEFIAIoAuwEIQMgAigC6AQiGkEiRg0HIAogCSkCADcCACAKQRBqIAlBEGooAgA2AgAgCkEIaiAJQQhqKQIANwIAIAJB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AzYCACACQegEaiABEKUQIAIoAugEQRBHDQFBpLKFARDJIgALIAJBADYC6ARBACACQYQDakGgipsBIAJB6ARqQbSyhQEQxxsACyACQagDakEYaiACQegEakEYaigCADYCACACQagDakEQaiACQegEakEQaikCADcDACACQagDakEIaiACQegEakEIaikCADcDACACIAIpAugENwOoAyAMIAJBqANqEPwJQQEhAUGAgICAeCEDDAgLQZSyhQEQ+BYACyAMIBpBJPwKAAAMBQsgAiAFNgLABCACKAKABCEDIBMhGAwACwtB5PmEARDJIgALIAItAJABISEgAi0AjwEhIyACLQCOASEoIAIoAsQBIQYgAigCwAEhAQJAAkAgAi0AiAEiHEEDRg0AIBxBAkYNACACKAJ8Ih0gHSgCACIDQQFqNgIAIANBf0wNCyACKAKEASEpIAIoAoABISoMAQsLIAItAI0BISsgAi0AjAEhLCACLQCVASEtIAItAJQBIS4gAi0AkwEhLyACKAJ4ITAgAigCdCExIAIoAnAhMiACKAJsITMgAi0AkgEhNCACLQCRASE1IAIoAlghNiACKAJUITcgAigCaCE4IAIoAmQhOSACKAJgITogAigCXCE7IAItAJYBITwgAkHoBGogBkEEQQQQpA4gAigC7AQhPQJAIAIoAugEQQFGDQAgAigC8AQhEEEAIRNBACEZAkAgBkUNACAQIQMgBiEFA0AgAyABNgIAIANBBGohAyABQRxqIQEgBUF/aiIFDQALIAYhGQsgAkEANgLkBCACQoCAgIDAADcC3AQCQAJAIBkNAEEBIRRBBCEVQQAhEUEEISZBACENDAELIAZBAnQhE0EAIQVBBCEHQQAhBgNAIBAgBWooAgAhAxDaHyIBIAMoAhgiAy0AMjoAMiABIAMvATA7ATAgASADKQIoNwIoIAEgAykCIDcCICABIAMpAhg3AhggASADKQIQNwIQIAEgAykCCDcCCCABIAMpAgA3AgACQCAGIAIoAtwERw0AIAJB3ARqEIAYIAIoAuAEIQcLIAcgBWogATYCACACIAZBAWoiBjYC5AQgEyAFQQRqIgVHDQALIAIoAuAEIhFBBGohJiARIAZBAnRqIRUgESgCACIBKAIUIRIgASgCECENQX8hE0EAIRQLQQAhA0EBIQZBASEHQQAhGkEAIR4g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AUHG/IMBEOQVIB5BCGogASgCADYCACAeIAIpAuwBNwIADAwLIAJBMGogAkGoA2oQjwMgAkEBNgLwASACQZTzmwE2AuwBIAJCATcC+AEgAkH1ADYC4AMgAiACQdwDajYC9AEgAiACQTBqNgLcAwJAIAJB1ApqQfDZgwEgAkHsAWoQ9AUNACACQQI2AvABIAJB0J+FATYC7AEgAkIBNwL4ASACQfUANgLgAyACIAJB3ANqNgL0ASACIAJBgARqNgLcAyACQdQKakHw2YMBIAJB7AFqEPQFDQACQCACKAK8AyIBRQ0AQQAhBSACQQA2AtABIAJCgICAgMAANwLIASABQRhsIQcgAigCuAMiA0EQaiEBIANBFGohBkEEIRpBACEDA0AgAkEFNgLgAyACQYCghQE2AtwDIAJCBDcC6AMgBigCACETIAJBDjYCiAIgAkEONgKAAiACQQ42AvgBIAJBDjYC8AEgAiATQX9qNgLUAiACIAE2AvwBIAIgAUF4ajYC9AEgAiABQXRqNgLsASACIAJB7AFqNgLkAyACIAJB1AJqNgKEAiACQeACaiACQdwDahCICgJAIAMgAigCyAFHDQAgAkHIAWoQgxggAigCzAEhGgsgGiAFaiITIAIpAuACNwIAIBNBCGogAkHgAmpBCGooAgA2AgAgAiADQQFqIgM2AtABIAFBGGohASAGQRhqIQYgBUEMaiEFIAdBaGoiBw0ACyACQdwDaiACKALMASADQaimmwFBARDsBCACQfUANgLkAiACQQI2AvABIAJB0J+FATYC7AEgAkIBNwL4ASACIAJB3ANqNgLgAiACIAJB4AJqNgL0ASACQdQKakHw2YMBIAJB7AFqEO0gIQEgAigC3AMgAigC4ANBAUEBENASIAJByAFqEPkWIAENAQsgAkEBNgLwASACQeSehQE2AuwBIAJCATcC+AEgAkH3ADYC4AMgAiAgNgLcAyACIAJB3ANqNgL0ASACQdQKakHw2YMBIAJB7AFqEPQFRQ0DCyACKAIwIAIoAjRBAUEBENASCyACKAKABCACKAKEBEEBQQEQ0BILIAJBqANqEJcUDAULIAIoAjAgAigCNEEBQQEQ0BIgAigCgAQgAigChARBAUEBENASCyACQagDahCXFAwGCyACQTBqIAJBqANqEI8DIAJBATYC8AEgAkGU85sBNgLsASACQgE3AvgBIAJB9QA2AuADIAIgAkHcA2o2AvQBIAIgAkEwajYC3AMCQCACQdQKakHw2YMBIAJB7AFqEPQFDQAgAkECNgLwASACQdCfhQE2AuwBIAJCATcC+AEgAkH1ADYC4AMgAiACQdwDajYC9AEgAiACQYAEajYC3AMgAkHUCmpB8NmDASACQewBahD0BQ0AAkAgAigCvAMiAUUNAEEAIQUgAkEANgLQASACQoCAgIDAADcCyAEgAUEYbCEHIAIoArgDIgNBEGohASADQRRqIQZBBCEaQQAhAwNAIAJBBTYC4AMgAkGAoIUBNgLcAyACQgQ3AugDIAYoAgAhEyACQQ42AogCIAJBDjYCgAIgAkEONgL4ASACQQ42AvABIAIgE0F/ajYC1AIgAiABNgL8ASACIAFBeGo2AvQBIAIgAUF0ajYC7AEgAiACQewBajYC5AMgAiACQdQCajYChAIgAkHgAmogAkHcA2oQiAoCQCADIAIoAsgBRw0AIAJByAFqEIMYIAIoAswBIRoLIBogBWoiEyACKQLgAjcCACATQQhqIAJB4AJqQQhqKAIANgIAIAIgA0EBaiIDNgLQASABQRhqIQEgBkEYaiEGIAVBDGohBSAHQWhqIgcNAAsgAkHcA2ogAigCzAEgA0GoppsBQQEQ7AQgAkH1ADYC5AIgAkECNgLwASACQdCfhQE2AuwBIAJCATcC+AEgAiACQdwDajYC4AIgAiACQeACajYC9AEgAkHUCmpB8NmDASACQewBahDtICEBIAIoAtwDIAIoAuADQQFBARDQEiACQcgBahD5FiABDQELIAJBATYC8AEgAkHknoUBNgLsASACQgE3AvgBIAJB9gA2AuADIAIgIDYC3AMgAiACQdwDajYC9AEgAkHUCmpB8NmDASACQewBahD0BUUNBAsgAigCMCACKAI0QQFBARDQEgsgAigCgAQgAigChARBAUEBENASCyACQagDahCXFAtBmNSbAUE3IAJBvAFqQYjagwFB0NSbARDqEAALIAIoAjAgAigCNEEBQQEQ0BIgAigCgAQgAigChARBAUEBENASCyACQagDahCXFAsgHiACKQLUCjcCACAeQQhqIAJB1ApqQQhqKAIANgIACwJAAkAgAigC6ARFDQACQCACKALwBCIBQV5qQQAgAUFdakEHSRsOAgEAAgsgAigC+ARB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ACAKNgIEIAAgAjYCAAwHCyADQdADaiAFQQRBCBCkDiADKALUAyEGAkACQAJAIAMoAtADQQFGDQBBACECIANBADYC5AEgAyADKALYAyIENgLgASADIAY2AtwBIAVBA3QhBiAKrSEvQQAhBQJAA0AgBiACRg0BIBE1AgAiMEKAAloNAyARNQIEIjFCgAJaDQQCQCAFIAMoAtwBRw0AIANB3AFqQbSwhAEQ8hcgAygC4AEhBAsgEUEIaiERIAQgAmogMEIghiAvhCAxQiiGhDcCACADIAVBAWoiBTYC5AEgAkEIaiECDAALCyADQdADaiABIANB3AFqEIQTIAMoAtQDIQICQCADKALQAyIFQSpGDQACQEE4RQ0AIABBCGogA0HQA2pBCGpBOPwKAAALIAAgAjYCBCAAIAU2AgAMCgsgACAKNgIIIAAgAjYCBCAAQSo2AgAMCQsgBiADKALYA0GEsIQBENggAAtBtKqbAUErIANB0ANqQfjogwFBlLCEARDqEAALQbSqmwFBKyADQdADakH46IMBQaSwhAEQ6hAACwJAAkACQAJAAkAgAS0ADEEBcQ0AIAEoAtgBDQIgAUF/NgLYASABQdwBaiECIAEoAuQBRQ0BIAEgAS8B7AFBAWoiBTsB7AEgBUH//wNxIAVGDQQgA0EANgLYAyADQgA3A9ADIANBADsB3AMgA0GQA2ogA0HQA2ogASgC6AFBrLqEARDECiABKALcASABQeABaigCAEEEQRAQxRIgAkEIaiADQZADakEIaigCADYCACACIAMpApADNwIADAQLAkAgASgChAENACADQcwCaiETIANBzgJqIRQgAUF/NgKEASABQYgBaiIVEJcKIAFBoAFqIRYgAUGsAWohFyADQcgCakEBaiEYIANBkANqQQRqIRkgA0EoakECciEaIAFBkAFqIQcgAUGMAWohCCABQbABaiEbIANBlgNqIRwgA0GZA2ohHSABQaQBaiEeA0AgESASRg0EIANB2AJqIBEoAgAgESgCBBDaGyARQQhqIRECQANAIANBhAJqIANB2AJqEN8CIAMtAIQCQQRGDQEgA0HIAmpBCGogA0GEAmpBCGotAAA6AAAgAyADKQCEAiIwNwPIAgJAAkACQAJAAkAgMKdB/wFxDgQEAAEDBAsgAy8AywIhBSADIAMtAMkCOgDLAiADLQDKAiEC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ICFB/wFxIAUoAgQgJEEDdGoiBS0ABEkNASAFLQAFQf8BcSAiQf8BcU8NBgwBCyAgIAJBhMiEARDDEgALIBUgA0HoAWogGiAlEP8QIQICQCApQQFxDQAgCCgCACAHKAIAICQgICAiICEgAhC/DQwBCyAgIAcoAgAiBU8NAiAkIAgoAgAgI2oiBSgCCCIETw0DIAUoAgQgJEEDdGoiBSAhOgAFIAUgIjoABCAFIAI2AgALICRBAWohJEEAISkgK0EDaiIrIChGDQkMAAsLICAgBUGUyIQBEMMSAAsgJCAEQfTHhAEQwxIACyAgIAJJDQALICAgAkGEyIQBEMMSAAsgAiAGQaTIhAEQwxIACyAgIAJBhMiEARDDEgALQdyzhAFBJEH0xoQBEIwaAAsgCUEEQZzJhAEQvCIACyADKALwASICDQALIAEoAqwBIBsoAgBBBEEQEMUSIBdBCGogA0HoAWpBCGooAgA2AgAgFyADKQPoATcCAAwACwsgAygC2AIgAygC3AJBBEEIEMUSDAALC0HUr4QBEPcWAAsgA0EANgLYAyADQgA3A9ADIANBADsB3AMgA0GQA2ogA0HQA2ogASgC6AFBvLqEARDECiABKALcASABQeABaigCAEEEQRAQxRIgAkEIaiADQZADakEIaigCADYCACACIAMpApADNwIADAILQcSwhAEQ9xYACwJAAkAgASgCIA0AIAFBfzYCIAJAIAEoAmANACABQX82AmAgA0HQA2ogAUEkaiABQeQAahCOByADQZADakEIaiICIANB3ANqKAIANgIAIAMgAykC1AM3A5ADAkAgAygC0AMiBUEqRg0AAkBBMEUNACAAQRBqIANB0ANqQRBqQTD8CgAACyAAQQxqIANBmANqKAIANgIAIAAgAykDkAM3AgQgACAFNgIADAMLIANBKGpBCGogAigCADYCACADIAMpA5ADNwMoAkAgASgCuAENACABQQA2AsQBIAFBfzYCuAECQCABKALIAQ0AIAFBvAFqIQ8gAUEANgLUASABQX82AsgBAkAgASgCvAENACAPQYTGhAEQ8hcLIAFBzAFqIQ0gASgCwAFCATcCACABQZABaiIMKAIAIQYgAUGMAWohCEEBIQICQANAIAEgAkF/aiICNgLEAQJAAkAgASgCwAEgAkEDdGoiAigCACIEIAZPDQAgAigCBCIC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CiAEaiAxQiCGIC+EIDBCKIaENwIAIAMgBkEBaiIGNgLYASAFQX5qIQUgBEEIaiEEDAALCyADQdADaiABIANB0AFqEIQTIAMoAtQDIQICQCADKALQAyIFQSpGDQACQEE4RQ0AIABBCGogA0HQA2pBCGpBOPwKAAALIAAgAjYCBCAAIAU2AgAMBQsgACAJNgIIIAAgAjYCBCAAQSo2AgAMBAsgBSADKALYA0GUr4QBENggAAsCQAJAAkACQCABKAIgDQAgAUF/NgIgIANCADcCkAMgA0HQA2ogAUEkaiINIANBkANqEJ4MIAMoAtQDIQwCQCADKALQAyICQSpGDQACQEE4RQ0AIABBCGogA0HQA2pBCGpBOPwKAAALIAAgDDYCBCAAIAI2AgAgAygC4AIhBCADKALcAiEJDAQLIANBADYCjAIgA0KAgICAwAA3AoQCAkAgAygC4AIiBEUNACADQZACaiADKALcAiIJEMwMIANBKGpBBGohDyADQZACakEYaiEIIANBkAJqQQRqIS4gDK0hMSADQZACakEMaiEHIANBkANqQRBqIQtBBCEOQQAhEANAAkACQAJAAkACQAJAAkAgAygCwAIiAiADKALEAkYNACADIAJBCGo2AsACAkAgAigCACIGIARPDQAgAjEABCEwIAMoApwCIQogAygCpAIhBQJAIAkgBkEYbGooAghFDQACQCAFIApHDQAgB0GIt4QBEPIXCyADKAKgAiAFQQN0aiAwQiiGIDBCIIaENwIAIAMgBUEBajYCpAICQCAQIAMoAoQCRw0AIANBhAJqEIwYIAMoAogCIQ4LAkBBOEUNACAOIBBBOGxqIANBkAJqQTj8CgAACyADIBBBAWoiEDYCjAIgAigCACICIARPDQMgA0GQAmogCSACQRhsahDMDAwJCwJAIAUgCkcNACAHQbi3hAEQ8hcLIAMoAqACIAVBA3RqIDBCIIYgMYQgMEIohoQ3AgAgAyAFQQFqNgKkAgwICyAGIARB+LaEARDDEgALIAMoAqQCDgIFAgELIAIgBEGot4QBEMMSAAsgDyAHKQIANwIAIA9BCGogB0EIaigCADYCACADQQA2AqQCIANCgICAgMAANwKcAiADQQI2AiggA0HQA2ogDSADQShqEJ4MIAMoAtQDIQUgAygC0AMiAkEqRg0CQThFDQEgAEEIaiADQdADakEIakE4/AoAAAwBCyADQQA2AqQCIAMoAqACKQIAITAgA0EBNgIoIAMgMDcCLCADQdADaiANIANBKGoQngwgAygC1AMhBSADKALQAyICQSpGDQFBOEUNACAAQQhqIANB0ANqQQhqQTj8CgAACyAAIAU2AgQgACACNgIAIAMoApACIAMoApQCQQRBBBDFEgwGCwJAIAMoApgCIgIgAygCkAJHDQAgA0GQAmpByLeEARDtFwsgAygClAIgAkECdGogBTYCACADIAJBAWo2ApgCCyADQRhqIAgQ4g8CQCADKAIYIgJFDQAgAygCHCEGAkAgAygCmAIiBSADKAKQAkcNACADQZACakHYt4QBEO0XCyADKAKUAiAFQQJ0aiAMNgIAIAMgBUEBajYCmAIgAyACNgLAAiADIAIgBkEDdGo2AsQCDAELIA8gAykCkAI3AgAgD0EIaiADQZACakEIaigCADYCACADQQY2AiggA0HQA2ogDSADQShqEJ4MIAMoAtQDIQoCQCADKALQAyICQSpGDQACQEE4RQ0AIABBCGogA0HQA2pBCGpBOPwKAAALIAAgCjYCBCAAIAI2AgAMBQsCQCAQDQBBACEQDAQLIAMgEEF/aiIQNgKMAiAOIBBBOGxqIgIoAgAiLUGAgICAeEYNAyACKAIUIQUgAigCECEGIANByAJqQQhqIhUgAkEMaigCADYCACACKQIEITAgCyACQShqKQIANwMAIANBkANqQRhqIiQgAkEwaikCADcDACADQZADakEIaiIrIAJBIGopAgA3AwAgAyAwNwPIAiADIAIpAhg3A5ADAkAgBUUNACAGIAVBA3RqQXhqIgJFDQAgAiAKNgIAIAMoApwCIAMoAqACQQRBCBDFEiAuIAMpA8gCNwIAIC5BCGogFSgCADYCACAIIAMpA5ADNwIAIAhBCGogKykDADcCACAIQRBqIAspAwA3AgAgCEEYaiAkKQMANwIAIAMgLTYCkAIgAyAFNgKkAiADIAY2AqACDAELC0Hot4QBEMkiAAtBAEEAQei2hAEQwxIAC0H0roQBEPcWAAsgACAMNgIIIAAgCjYCBCAAQSo2AgALIAMoApwCIAMoAqACQQRBCBDFEiAOIBAQtBcgAygChAIgDkEEQTgQxRILAkAgBEUNACAJIQIDQCACKAIAIAJBBGooAgBBBEEIEMUSIAJBDGooAgAgAkEQaigCAEEEQQgQxRIgAkEYaiECIARBf2oiBA0ACwsgAygC2AIgCUEEQRgQxRIgASABKAIgQQFqNgIgDAILAAsCQCABKAIgRQ0AQbSxhAEQ9xYACyABQX82AiAgAyACNgKYAyADQgM3ApADIANB0ANqIAFBJGogA0GQA2oQngwgASABKAIgQQFqNgIgIABBCGohBCADKALUAyECAkACQCADKALQAyIFQSpGDQBBOEUNASAEIANB0ANqQQhqQTj8CgAADAELIAQgAjYCAAsgACAFNgIAIAAgAjYCBAsgA0GQBGokAAuOZwIKfwF+IwBB8AFrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCACIEQXRqIgVBByAFQSZJGw4mAAECAwQFBgcICQoLDA0ODycmJSQjIiEgHx4dHBsaGRgXFhUUExIACyABKAIIIQUgA0HIAWogAiABKAIEIgRBABCiAgJAAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCyADIAU2AtABIAMgBDYCzAEgA0EBNgLIASADQbgBaiACIANByAFqQczLmwFBBBCGDSADLQC4AUEERg0wIAMpA7gBIg1C/wGDQgRRDTALIA1C/wGDQgRRDS8gACANNwIADDALIAEoAhQhBiADQbgBaiACIAEoAhAiB0EAEKICAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0uCwJAIAdFDQAgA0G4AWogAiAHEOIcIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINLgsgA0EANgLIASADQbgBaiACIANByAFqQdDLmwFBARCFDQJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINLgsgASgCCCIFIAEoAgwiCEEEdGpBcGohCUHSIiEKAkAgCEUNACAJRQ0AQdKiwABB0iIgCSgCAEECRhshCgsgA0G4AWogAiAHIAggCiAIEIUaAkAgAy0AuAFBBUYNACADKQO4ASENDCwLIANBuAFqELMhIAhFDSogA0EwaiAFEIwXAkAgAi0ATQ0AIANBuAFqIAIQphMgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0sCyADQQA6AJgBIAItAE1FDQ4MKQsgA0HIAWogAUEEaiACEIwBIAMtAMgBQQRGDS0gAykDyAEiDUL/AYNCBFENLSAAIA03AgAMLgsgA0HIAWogAUEIaiACEMcFIAMtAMgBQQRGDSwgAykDyAEiDUL/AYNCBFENLCAAIA03AgAMLQsgA0HIAWogAiABKAIIIgVBABCiAgJAAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCwJAIAVFDQAgA0HIAWogAiAFEOIcIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgAUEEaiEEIANBOGogAS0AECIFEIgeIAMoAjwhCyADKAI4IQwCQAJAAkACQCAFQQNLDQAgA0EANgLIASADQbgBaiACIANByAFqIAwgCxCFDQJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINBQsgBCgCACAFEIANDQEMAwsgA0EANgLIASADQbgBaiACIANByAFqIAwgCxCGDQJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINBAsgBCgCACAFEIANRQ0BCyADQcgBaiACEN0PIAMtAMgBQQRGDQEgAykDyAEiDUL/AYNCBFENAQwCCyACLQBNDQAgA0HIAWogAhDdDyADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELIANByAFqIAQgAhCKIyADLQDIAUEERg0sIAMpA8gBIg1C/wGDQgRRDSwLIA1C/wGDQgRRDSsgACANNwIADCwLIANByAFqIAIgASgCBCIFQQAQogICQAJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsCQCAFRQ0AIANByAFqIAIgBRDiHCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELAkAgAS0AEQ0AIANByAFqIAFBDGogAhCKIwJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAgsgA0EANgLIASADQbgBaiACIANByAFqQaacmwFBpJybASABLQAQG0ECEIgNIAMtALgBQQRGDSwgAykDuAEiDUL/AYNCBFINAQwsCyADQQA2AsgBIANBuAFqIAIgA0HIAWpBppybAUGknJsBIAEtABAbQQIQiA0CQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANByAFqIAFBDGogAhCKIyADLQDIAUEERg0rIAMpA8gBIg1C/wGDQgRRDSsLIA1C/wGDQgRRDSogACANNwIADCsLIANByAFqIAIgASgCDCIFQQAQogICQAJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsCQCAFRQ0AIANByAFqIAIgBRDiHCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELQQAhBSADQQA2AtABIANCgICAgMAANwLIAUF/IQRBBCEKIAFBBGoiByELA0ACQCAEQQFqIgwgAygCyAFHDQAgA0HIAWoQxxkgAygCzAEhCgsgCiAFaiALNgIAIAMgBEECajYC0AEgBUEEaiEFIAsoAgAiBkEEaiELIAwhBCAGKAIAQRJGDQALQQAhBCADKALMASEGIAMoAsgBIQoCQAJAA0AgBUUNASAGIAVqQXxqKAIAIQsCQCAEDQAgA0G4AWogCyACEIojIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAwsCQCAMIARGDQAgA0G4AWogAiALEIUEIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAwsgBEEBaiEEIAVBfGohBQwACwsgBiAKEIwjIANByAFqIAIgBxCFBCADLQDIAUEERg0rIAMpA8gBIg1C/wGDQgRSDQEMKwsgBiAKEIwjCyANQv8Bg0IEUQ0pIAAgDTcCAAwqCyADQcgBaiACIAEoAjBBABCiAgJAAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCwJAAkACQCAEQQtHDQAgAUEIaiEFAkACQAJAAkAgASgCBA4DAAECAAsgA0HIAWogBSACEJsDIAMtAMgBQQRGDQUgAykDyAEiDUL/AYNCBFINAgwFCyADQcgBaiAFIAIQ4gEgAy0AyAFBBEYNBCADKQPIASINQv8Bg0IEUg0BDAQLIANByAFqIAEoAgggASgCDCACEJ4QIAMtAMgBQQRGDQMgAykDyAEiDUL/AYNCBFENAwsgDUL/AYNCBFINAQwCCwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEDgsAAQIDBAUGBwgJCgALIANByAFqIAFBCGogAhC8CiADLQDIAUEERg0MIAMpA8gBIg1C/wGDQgRSDQoMDAsgA0HIAWogAUEIaiACEIkDIAMtAMgBQQRGDQsgAykDyAEiDUL/AYNCBFINCQwLCyADQcgBaiABQQhqIAIQpAcgAy0AyAFBBEYNCiADKQPIASINQv8Bg0IEUg0IDAoLIANByAFqIAFBBGogAhCXCCADLQDIAUEERg0JIAMpA8gBIg1C/wGDQgRSDQcMCQsgA0HIAWogAUEEaiACEJEEIAMtAMgBQQRGDQggAykDyAEiDUL/AYNCBFINBgwICyADQcgBaiABQQRqIAIQ7wggAy0AyAFBBEYNByADKQPIASINQv8Bg0IEUg0FDAcLIANByAFqIAFBBGogAhDwCCADLQDIAUEERg0GIAMpA8gBIg1C/wGDQgRSDQQMBgsgA0HIAWogAUEEaiACEPYMIAMtAMgBQQRGDQUgAykDyAEiDUL/AYNCBFINAwwFCyADQcgBaiABQQRqIAIQxQkgAy0AyAFBBEYNBCADKQPIASINQv8Bg0IEUg0CDAQLIANByAFqIAFBBGogAhCnDSADLQDIAUEERg0DIAMpA8gBIg1C/wGDQgRSDQEMAwsgA0HIAWogASgCBCABKAIIIAIQnhAgAy0AyAFBBEYNAiADKQPIASINQv8Bg0IEUQ0CCyANQv8Bg0IEUQ0BCyANQv8Bg0IEUg0BCwJAIAItAE0NACADQcgBaiACEN0PIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgA0EANgLIASADQbgBaiACIANByAFqIAEtADxBAnQiBUGY5Z0BaigCACAFQdjknQFqKAIAEIgNAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCwJAIAItAE0NACADQcgBaiACEN0PIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgA0HIAWogAUE4aiACEIojIAMtAMgBQQRGDSkgAykDyAEiDUL/AYNCBFENKQsgDUL/AYNCBFENKCAAIA03AgAMKQsgA0HIAWogAUEIaiACEIkDIAMtAMgBQQRGDScgAykDyAEiDUL/AYNCBFENJyAAIA03AgAMKAsgA0HIAWogAUEIaiACEKQHIAMtAMgBQQRGDSYgAykDyAEiDUL/AYNCBFENJiAAIA03AgAMJwsgA0G4AWogAiABKAIQIgVBABCiAgJAAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCwJAIAVFDQAgA0G4AWogAiAFEOIcIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsgA0G4AWogAUEEaiACEIojAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCwJAIAItAE0NACADQbgBaiACEN0PIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsgA0EANgLIASADQbgBaiACIANByAFqQeDLmwFBARCFDQJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsCQCACLQBNDQAgA0G4AWogAhDdDyADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANBuAFqIAFBCGogAhCKIwJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsCQCACLQBNDQAgA0G4AWogAhDdDyADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANBuAFqIAIgA0HIAWpBxcubAUEBEIUNAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCwJAIAItAE0NACADQbgBaiACEN0PIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsgA0G4AWogAUEMaiACEIojIAMtALgBQQRGDSYgAykDuAEiDUL/AYNCBFENJgsgDUL/AYNCBFENJSAAIA03AgAMJgsgASgCICEEIANByAFqIAIgASgCHCIFQQAQogICQAJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsCQCAFRQ0AIANByAFqIAIgBRDiHCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELAkACQAJAAkACQCABLQAYIgxBfWoiC0EBIAtB/wFxQQNJG0H/AXEOAwABAgALIANByAFqIAEoAhAgASgCFCACELsSIAMtAMgBQQRGDQMgAykDyAEiDUL/AYNCBFINAgwDCyADQQE2AuABIAMgASkDEDcC5AEgA0GIAWogAiADQeABakH8vZsBQQYQhg0CQAJAIAMtAIgBQQRGDQAgAykDiAEiDUL/AYNCBFINAQsCQAJAIAwOAwUAAQULIANBADYCuAEgA0HgAWogAiADQbgBakHfy5sBQQEQhQ0CQCADLQDgAUEERg0AIAMpA+ABIg1C/wGDQgRSDQILIANB4AFqIAIgA0G4AWpBgLGbAUEGEIYNIAMtAOABQQRGDQQgAykD4AEiDUL/AYNCBFINAQwECyADQQA2AsgBIANB4AFqIAIgA0HIAWpB38ubAUEBEIUNAkAgAy0A4AFBBEYNACADKQPgASINQv8Bg0IEUg0BCyADQeABaiACIANByAFqQYaxmwFBBRCGDSADLQDgAUEERg0DIAMpA+ABIg1C/wGDQgRRDQMLIA1C/wGDQgRSDQEMAgsCQCABQRBqIgsoAgAiDCgCAEEYRw0AIANByAFqIAIgDEEEakEAEOAEIAMtAMgBQQRGDQIgAykDyAEiDUL/AYNCBFINAQwCCyADQcgBaiALIAIQiiMgAy0AyAFBBEYNASADKQPIASINQv8Bg0IEUQ0BCyANQv8Bg0IEUg0BCwJAIAEoAihFDQAgA0HIAWogAUEoaiACEJ0KIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgA0EANgKYASADQcgBaiACIANBmAFqQfjAmwFBARCFDQJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgA0HIAWogAiAFIAQgASgCCCABKAIMQZAKEI4EAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCyADQcgBaiACIANBmAFqQbOBnQFBARCFDSADLQDIAUEERg0lIAMpA8gBIg1C/wGDQgRRDSULIA1C/wGDQgRRDSQgACANNwIADCULIANByAFqIAIgAUEEakEBEOAEIAMtAMgBQQRGDSMgAykDyAEiDUL/AYNCBFENIyAAIA03AgAMJAsgA0HIAWogAiABKAIQIgVBABCiAgJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINBAsCQCAFRQ0AIANByAFqIAIgBRDiHCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQQLIAEoAgxBAnQhBSABKAIIIQRBASELA0AgBUUNIwJAIAtBAXENACADQQA2AsgBIANBuAFqIAIgA0HIAWpB3subAUEBEIUNAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0GCyACLQBNDQAgA0HIAWogAhDdDyADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQULIANByAFqIAQgAhCKIwJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINBQsgBEEEaiEEIAVBfGohBUEAIQsMAAsLIANByAFqIAFBCGogAhD2FCADLQDIAUEERg0hIAMpA8gBIg1C/wGDQgRRDSEgACANNwIADCILIANByAFqIAIgAUEIaiABKAIIIgRBAnRB2OWdAWooAgBqKAIAIgVBABCiAgJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINGwsCQCAFRQ0AIANByAFqIAIgBRDiHCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDRsLAkACQAJAAkACQAJAAkACQCAEDgcABgECAwQFAAsgA0HIAWogAUEQaiACEIYBIAMtAMgBQQRGDScgAykDyAEiDUL/AYNCBFINIQwnCyADQQA2AsgBIANBuAFqIAIgA0HIAWpB6ambAUEEEIYNIAMtALgBQQRGDSYgAykDuAEiDUL/AYNCBFINIAwmCyADQcgBaiABQRBqIAIQ3BYgAy0AyAFBBEYNJSADKQPIASINQv8Bg0IEUg0fDCULIANByAFqIAFBEGogAhC7AyADLQDIAUEERg0kIAMpA8gBIg1C/wGDQgRSDR4MJAsgA0EANgKIASADQcgBaiACIANBiAFqQYucmwFBARCFDQJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINHgsgA0HQAGogAUEQahCUEyADKAJUIQUgAygCUCEEIAItAEwNAgwbCyADQcgBaiABQRBqIAIQ2BEgAy0AyAFBBEYNIiADKQPIASINQv8Bg0IEUg0cDCILAkAgAS0AFA0AIANBADYCyAEgA0G4AWogAiADQcgBakHE0JsBQQUQhg0gAy0AuAFBBEYNIiADKQO4ASINQv8Bg0IEUg0cDCILIANBADYCyAEgA0G4AWogAiADQcgBakHJ0JsBQQQQhg0gAy0AuAFBBEYNISADKQO4ASINQv8Bg0IEUg0bDCELIAQgBRDXDQ0YIANB4AFqIAUQzRMgAyAENgKoASADIAQgBWo2AqwBA0ACQAJAIANBqAFqEIAbIgVBgIDEAEYNACAFQf8ASQ0BAkACQAJAAkAgBUGAAkkNACAFQdi/f2oOAgECAwsgA0HgAWpBjNWYAUECEKMGIANBATYC3AEgA0GQ1ZgBNgLYASADQQE2AswBIANBlPObATYCyAEgA0EBNgLUASADQeABNgK8ASADIAU6ALQBIAMgA0G4AWo2AtABIAMgA0G0AWo2ArgBIANB4AFqIANByAFqEKIRRQ0FQbSqmwFBKyADQcgBakHI0JgBQajVmAEQ6hAACyADQeABakGf1JgBQQYQowYMBAsgA0HgAWpBpdSYAUEGEKMGDAMLAkAgBUH//wNLDQAgA0EBNgLcASADQeTJmQE2AtgBIANBATYCzAEgA0HcyZkBNgLIASADQQE2AtQBIANB/QY2ArwBIAMgBTsBtAEgAyADQbgBajYC0AEgAyADQbQBajYCuAEgA0HgAWogA0HIAWoQohFFDQNBtKqbAUErIANByAFqQcjQmAFBrNSYARDqEAALIAMgBUGAgHxqQQp2QYCwA2o2ArABIAMgBUH/B3FBgLgDcjYCtAEgA0ECNgLcASADQczUmAE2AtgBIANBAjYCzAEgA0G81JgBNgLIASADQQI2AtQBIANB4QE2AsQBIANB4QE2ArwBIAMgA0G4AWo2AtABIAMgA0G0AWo2AsABIAMgA0GwAWo2ArgBIANB4AFqIANByAFqEKIRRQ0CQbSqmwFBKyADQcgBakHI0JgBQfzUmAEQ6hAACyADQZgBakEIaiADQeABakEIaigCADYCACADIAMpAuABNwOYAQwbCyADQeABaiAFEM4bDAALCyACIAIoAixBAWo2AiwMGgsgDUL/AYNCBFENHiAAIA03AgAMHwsgA0HIAWogASgCBCABKAIIIAIQnhAgAy0AyAFBBEYNHSADKQPIASINQv8Bg0IEUQ0dIAAgDTcCAAweCyADQcgBaiABQQRqIAIQkQQgAy0AyAFBBEYNHCADKQPIASINQv8Bg0IEUQ0cIAAgDTcCAAwdCyADQcgBaiABQQhqIAIQpAkgAy0AyAFBBEYNGyADKQPIASINQv8Bg0IEUQ0bIAAgDTcCAAwcCyADQcgBaiABQQRqIAIQ8AggAy0AyAFBBEYNGiADKQPIASINQv8Bg0IEUQ0aIAAgDTcCAAwbCyADQcgBaiABQQRqIAIQpw0gAy0AyAFBBEYNGSADKQPIASINQv8Bg0IEUQ0ZIAAgDTcCAAwaCyADQcgBaiABQQRqIAIQ7wggAy0AyAFBBEYNGCADKQPIASINQv8Bg0IEUQ0YIAAgDTcCAAwZCyADQcgBaiABQQRqIAIQ9gwgAy0AyAFBBEYNFyADKQPIASINQv8Bg0IEUQ0XIAAgDTcCAAwYCyADQbgBaiACIAEoAghBABCiAgJAAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQbgBaiABQQRqIAIQiiMCQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANBuAFqIAIQ3Q8CQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANBADYCyAEgA0G4AWogAiADQcgBakHcsZsBQQIQhg0CQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANBuAFqIAIQ3Q8CQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANBuAFqIAIgA0HIAWpBr5ubAUEFEIYNIAMtALgBQQRGDRcgAykDuAEiDUL/AYNCBFENFwsgDUL/AYNCBFENFiAAIA03AgAMFwsgA0HIAWogAUEEaiACEMUJIAMtAMgBQQRGDRUgAykDyAEiDUL/AYNCBFENFSAAIA03AgAMFgsgA0HIAWogAUEEaiACEJ4KIAMtAMgBQQRGDRQgAykDyAEiDUL/AYNCBFENFCAAIA03AgAMFQsgA0HIAWogAUEEaiACEIkCIAMtAMgBQQRGDRMgAykDyAEiDUL/AYNCBFENEyAAIA03AgAMFAsgA0HIAWogASgCBCACEN0WIAMtAMgBQQRGDRIgAykDyAEiDUL/AYNCBFENEiAAIA03AgAMEwsgA0HIAWogAUEIaiACEPcMIAMtAMgBQQRGDREgAykDyAEiDUL/AYNCBFENESAAIA03AgAMEgsgA0HIAWogAUEIaiACEL0KIAMtAMgBQQRGDRAgAykDyAEiDUL/AYNCBFENECAAIA03AgAMEQsgA0HIAWogAUEEaiACEJcIIAMtAMgBQQRGDQ8gAykDyAEiDUL/AYNCBFENDyAAIA03AgAMEAsgA0HIAWogAiABKAIIIgVBABCiAgJAAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCwJAIAVFDQAgA0HIAWogAiAFEOIcIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgA0EANgLIASADQbgBaiACIANByAFqQajGmwFBBRCGDQJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsgA0HIAWogAhDdDwJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgA0HIAWogAUEEaiACEIojIAMtAMgBQQRGDQ8gAykDyAEiDUL/AYNCBFENDwsgDUL/AYNCBFENDiAAIA03AgAMDwsgAS0ADCEEIAEoAgQhBQJAAkAgAigCREUNACADQcgBaiACIAVBABCiAiADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELAkAgBUUNACADQcgBaiACIAUQ4hwgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCwJAIARBAXFFDQAgA0EANgLIASADQbgBaiACIANByAFqQf7jmwFBCxCGDSADLQC4AUEERg0PIAMpA7gBIg1C/wGDQgRSDQEMDwsgA0EANgLIASADQbgBaiACIANByAFqQfTjmwFBChCGDSADLQC4AUEERg0OIAMpA7gBIg1C/wGDQgRRDQ4LIA1C/wGDQgRRDQ0gACANNwIADA4LIANBuAFqIAIgASgCBCIFQQAQogICQAJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsCQCAFRQ0AIANBuAFqIAIgBRDiHCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANBADYCyAEgA0G4AWogAiADQcgBakGtxpsBQQUQhg0CQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELAkAgAS0AECIERQ0AIANBuAFqIAIgA0HIAWpBipybAUEBEIgNIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsgASgCDCIFRQ0NAkACQAJAIAIgBRDmBiILDQACQCAEDQAgBRCaCQ0CCyACLQBNDQIgA0G4AWogAhDdDyADLQC4AUEERg0CIAMpA7gBIg1C/wGDQgRRDQIMAwsgA0G4AWogAiADQcgBakH4wJsBQQEQhQ0gAy0AuAFBBEYNASADKQO4ASINQv8Bg0IEUQ0BDAILIANBuAFqIAIQ3Q8gAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQbgBaiABQQxqIAIQkB8CQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIAtFDQ0gA0G4AWogAiADQcgBakGzgZ0BQQEQhQ0gAy0AuAFBBEYNDSADKQO4ASINQv8Bg0IEUQ0NCyANQv8Bg0IEUQ0MIAAgDTcCAAwNCyADQcgBaiABQQhqIAIQtQUgAy0AyAFBBEYNCyADKQPIASINQv8Bg0IEUQ0LIAAgDTcCAAwMCyABKAIYIQogA0HIAWogAiABKAIUIgtBABCiAgJAAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCwJAIAtFDQAgA0HIAWogAiALEOIcIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsCQAJAAkAgAi0ATQ0AIAEtAChFDQIgA0EANgLIASADQbgBaiACIANByAFqQfazmwFBBRCGDSADLQC4AUEERg0BIAMpA7gBIg1C/wGDQgRSDQMMAQtBACEFAkAgASgCDEEBRw0AIAEoAggoAgBFIQULIAEtAChBAUcNASADQQA2AsgBIANBuAFqIAIgA0HIAWpB9rObAUEFEIYNAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0DCyAFDQAgAi0ATQ0BIANByAFqIAIQ3Q8gAy0AyAFBBEYNASADKQPIASINQv8Bg0IEUQ0BDAILIANByAFqIAIQ3Q8gAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCwJAIAEtAClFDQAgA0EANgLIASADQbgBaiACIANByAFqQYqcmwFBARCFDSADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELAkACQAJAIAItAE0NACADQcgBaiABQSBqIAIQjh8gAy0AyAFBBEYNASADKQPIASINQv8Bg0IEUg0DDAELAkACQCABKAIMQQFHDQAgASgCCCIFKAIARQ0BCyADQcgBaiABQSBqIAIQjh8gAy0AyAFBBEYNASADKQPIASINQv8Bg0IEUQ0BDAMLAkACQCACKAJEIgQNAEEAIQUMAQsgBCAFKAIUIAIoAkgoAiwRCAAhBQsgA0HIAWogAUEgaiACEI4fAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0DC0EAIQggBUUNAQsgA0EANgLIAUEBIQggA0G4AWogAiADQcgBakH4wJsBQQEQhQ0gAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyABKAIIIQkgA0HIAWogAiALIAEoAgwiB0GQAiAHEIUaAkACQAJAIAMtAMgBQQVGDQAgAykDyAEhDQwBCyADQcgBahCzIQJAIAdFDQAgA0EBOgDgASADQYABaiAJEKsOIANBADoAuAEgByEEIAkhBUEAIQxBACEGA0ACQAJAAkAgBEUNACADQfgAaiAFEKsOIANByAFqIAIgCkGQAiAMIAYgA0G4AWogA0HgAWoQxgUCQCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQYLIANByAFqIAUgAhDdBgJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINBgsgAy0A4AENASADQQE6AOABDAILAkAgCSAHQShsakFYaiIFRQ0AIANB4ABqIAUQqw4LIANByAFqIAIgCyAKQZACIAwgBhDIAiADLQDIAUEERg0DIAMpA8gBIg1C/wGDQgRSDQQMAwsgAigCREUNACADQfAAaiAFEKsOIANByAFqIAIgAygCdEEAEOoDIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAwsCQCADLQC4AUUNACACIAIoAixBf2o2AiwgA0EAOgC4AQsgBEF/aiEEIANB6ABqIAUQqw4gBUEoaiEFQQEhDCADKAJsIQYMAAsLIANByAFqIAIgCiAHRUGQAhDAESADLQDIAUEERg0BIAMpA8gBIg1C/wGDQgRRDQELIA1C/wGDQgRSDQELAkAgCEUNACADQQA2AsgBIANBuAFqIAIgA0HIAWpBs4GdAUEBEIUNIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsCQCABKAIkRQ0AIANBADYCyAEgA0G4AWogAiADQcgBakHFy5sBQQEQhQ0CQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQILAkAgAi0ATQ0AIANByAFqIAIQ3Q8gAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0CCyADQcgBaiABQSRqIAIQnRACQCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQILIAItAE0NACADQcgBaiACEN0PIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgA0EANgLIASADQbgBaiACIANByAFqQcbLmwFBAhCFDQJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsCQAJAIAEoAhAiBSgCAEGAgICAeEYNACADQcgBaiACIAVBARC/BiADLQDIAUEERg0NIAMpA8gBIg1C/wGDQgRRDQ0MAQsgAiACKAIsQQFqNgIsIANByAFqIAVBBGogAhCKIwJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgAiACKAIsQX9qNgIsDAwLIA1C/wGDQgRRDQsLIA1C/wGDQgRRDQogACANNwIADAsLIAEoAhAhCiADQcgBaiACIAEoAgwiBUEAEKICAkACQCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELAkAgBUUNACADQcgBaiACIAUQ4hwgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCwJAAkAgAUEEaiIFKAIAIgQoAgBBGEcNACADQcgBaiACIARBBGpBABDgBCADLQDIAUEERg0BIAMpA8gBIg1C/wGDQgRRDQEMAgsgA0HIAWogBSACEIojIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgA0HIAWogAUEYaiACEI8fAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCyABKAIIIgQoAhwhByADQbgBaiACIAQoAhgiBUEAEKICAkACQAJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsCQCAFRQ0AIANBuAFqIAIgBRDiHCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANBADYCyAEgA0G4AWogAiADQcgBakG6vpsBQQEQhQ0CQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIAQoAgggBCgCFGohDEEAIQUDQAJAAkACQCAMIAVGDQAgBUEBcQ0BAkACQCAEKAIQIAQoAhQgBUEBdkHQz5sBEMAeIgsoAggiBkUNACADQbgBaiACIAYQ4hwgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQdgAaiALEJQTIANBuAFqIAJBAEEAIAMoAlggAygCXBCVDgJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsgCygCDCILRQ0DIANBuAFqIAIgCxDiHCADLQC4AUEERg0DIAMpA7gBIg1C/wGDQgRRDQMLIA1C/wGDQgRSDQQMAgsgA0G4AWogAiADQcgBakG6vpsBQQEQhQ0CQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQQLIAdFDQQgA0G4AWogAiAHEOIcIAMtALgBQQRGDQQgAykDuAEiDUL/AYNCBFINAwwECyADQbgBaiACIANByAFqQfTLmwFBAhCFDQJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAwsgA0G4AWogBCgCBCAEKAIIIAVBAXZB4M+bARDBHiACEIojAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0DCyADQbgBaiACIANByAFqQcjLmwFBARCFDSADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQILIAVBAWohBQwACwsgDUL/AYNCBFINAQsgCkUNCiADQcgBaiACIAoQ4hwgAy0AyAFBBEYNCiADKQPIASINQv8Bg0IEUQ0KCyANQv8Bg0IEUQ0JIAAgDTcCAAwKCyABKAIgIQcgA0G4AWogAiABKAIcIgVBABCiAgJAAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCwJAIAVFDQAgA0G4AWogAiAFEOIcIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsgA0EANgLIASADQbgBaiACIANByAFqQbq+mwFBARCFDQJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsgASgCDCIGIAEoAhgiC2ohBCABKAIUIQwgASgCCCEKQQAhBQNAAkACQAJAIAQgBUYNACAFQQFxDQEgA0G4AWogDCALIAVBAXZBkN+bARDAHiACEJEBIAMtALgBQQRGDQIgAykDuAEiDUL/AYNCBFINBAwCCyADQbgBaiACIANByAFqQbq+mwFBARCFDQJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINBAsgB0UNDCADQbgBaiACIAcQ4hwgAy0AuAFBBEYNDCADKQO4ASINQv8Bg0IEUQ0MDAMLIANBuAFqIAIgA0HIAWpB9MubAUECEIUNAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0DCyADQbgBaiAKIAYgBUEBdkGg35sBEMEeIAIQiiMCQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQMLIANBuAFqIAIgA0HIAWpByMubAUEBEIUNIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAgsgBUEBaiEFDAALCyANQv8Bg0IEUQ0IIAAgDTcCAAwJCyADQf8BOgCjASADIAU2ApwBIAMgBDYCmAELIANByABqIANBmAFqEIYVIANByAFqIAIgAygCSCADKAJMEOQOAkACQCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELIANByAFqIAIgA0GIAWpBi5ybAUEBEIUNAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCyADQcAAaiABQRhqEJQTIANByAFqIAIgAygCQCADKAJEEOQOAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCyADQZgBahDTHwwHCyADQZgBahDTHwsgDUL/AYNCBFENBSAAIA03AgAMBgsgA0EAOgDgASAIIQRBACELQQAhDANAAkACQAJAIARFDQAgA0EoaiAFEIwXIANBuAFqIAIgBiAKIAsgDCADQeABaiADQZgBahDGBQJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINBgsCQCAFKAIAQQJGDQAgA0G4AWogBSACEKMMIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINBgsgAy0AmAENASADQQE6AJgBDAILAkAgCUUNACADQRBqIAkQjBcLIANBuAFqIAIgByAGIAogCyAMEMgCIAMtALgBQQRGDQMgAykDuAEiDUL/AYNCBFINBAwDCyACKAJERQ0AIANBIGogBRCMFyADQbgBaiACIAMoAiRBABDqAyADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQMLAkAgAy0A4AFFDQAgAiACKAIsQX9qNgIsIANBADoA4AELIARBf2ohBCADQRhqIAUQjBcgBUEQaiEFQQEhCyADKAIcIQwMAAsLIANBuAFqIAIgBiAIRSAKEMARIAMtALgBQQRGDQEgAykDuAEiDUL/AYNCBFENAQsgDUL/AYNCBFINAQsgA0G4AWogAiADQcgBakHRy5sBQQEQhQ0CQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIAZFDQEgA0G4AWogAiAGEOIcIAMtALgBQQRGDQEgAykDuAEiDUL/AYNCBFENAQsgDUL/AYNCBFENACAAIA03AgAMAQsCQAJAIAIoAkRFDQAgA0EIaiABENIDIANByAFqIAIgAygCDEEBEOoDIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgAEEEOgAADAELIAAgDTcCAAsgA0HwAWokAAvGZgI2fwZ+IwBBwAVrIgIkACACQcgAakEgQQhB2ABBvLKbARDZFiACQQA2AlwgAiACKQNINwJUQfcGrUIghiI4QeComwGthCE5IDhBnK2bAa2EITogOEGh2pgBrYQhOCACQaADakEkaiEDIAJBoANqQQhqIQQgAkHIBGpBCGohBSACQaADakEgaiEGIAJBoANqQcAAaiEHIAJByARqQQxqIQggAkGgA2pBHWohCSACQcsDaiEKIAJByARqQQRqIQsgAkGgA2pBBHIhDCACQeAAakEoaiENIAJB+ANqQQhqIQ4gAkGAA2pBCGohDyACQcgEakEUaiEQIAJBgANqQQxqIREgAkGAA2pBFGohEiACQeAAakHAAGohEyACQeAAakEkaiEUIAJB4ABqQQhqIRUgAkHgAGpBBHIhFkEAIRcCQANAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AyAFBfWoOBAABAQIBCyAAIAIpAlQ3AgAgAEEIaiACQdQAakEIaigCADYCAAwKCyABIAEoAngiGEGAgIAQcjYCeCABKALAASEZIAJBoANqIAFBABCAAyACKAKkAyEaAkAgAigCoAMiG0GAgICAeEcNACABIBg2AngMBwsgAiACKAKoAzYCjAIgAiAaNgKIAiACIBs2AoQCIAEtAMgBIRpBAyEcQQAhHSABLwGAASIbQYDAAHFFDQMCQAJAIBpB/wFxIhpB/ABHDQAgARDjDkEDIRwgAS8BgAEiG0GAwABxRQ0BCyACQaADaiABEIEMIAItAKADDQIgAi0AoQMhHCABLwGAASEbIBpB/ABGDQAgAS0AyAEhGiAbQYDAAHFFDQQgGkH/AXFB/ABHDQQgARDjDiABLwGAASEbCyAbQYDAAHEhHgJAIAEtAMgBIhoNACAeQQBHIR8MAwsCQCAeRQ0AQQEhHyAaQRJGDQMgGkE+Rg0DCwJAAkAgAUEBEIMQDQAgHkUNASAaQQpHDQELIAIgGTYCoAIgAkLxyJWbxq2YueUANwOYAiACIAEoArwBNgKkAiACQQA2ApACAkAgHkEARyAaQQpGcSIbRQ0AIAEQ4w4LIAJBADYCoAMgAkHgAGogASAZIAJBhAJqIBwgAkGQAmpBACACQaADaiAbQQBBAEEAQQAQkwIMBgsgASgCvAEhIEEBISEMBAsgARDjDiABKAK8ASEeIAEoArgBIRgCQCACKAJcIhsgAigCVEcNACACQdQAakHcspsBEPYYCyACKAJYIBtB2ABsaiIaIB42AgggGiAYNgIEIBpBCjYCACACIBtBAWo2AlwMBwsgAigCpAMhGyACQQ02AmAgAiAbNgJkIAJBhAJqEPkfDAMLIAEoArwBIRsgA0EIaiACQYQCakEIaigCADYCACADIAIpAoQCNwIAIAIgHDoA3AMgAiAZNgLAAyACQQA6AOADIAIgHyAaQQpGcToA3wMgAkEANgLQAyACQQA7AOEDIAJBADsA3QMgAiAbNgK0AyACIBk2ArADIAJC8ciVm8atmLnlADcDqAMgAkEANgKgAyACQeAAaiABIAJBoANqEO8EDAILQQAhIQsgASgCwAEhIgJAIBpB/wFxQZQBRiIjRQ0AIAEQ4w4gAS0AyAEhGiABLwGAASEbIAEoArwBISRBASEdC0EAISUCQAJAIBtBgAJxDQAMAQsgGkH/AXFBnAFHDQAgASgCwAEhJiABEOMOIAEoArwBIScCQCABLQDIASIaRQ0AAkAgAS8BgAEiG0GAwABxIh5FDQAgGkESRg0BIBpBPkYNAQsCQCABQQEQgxANAEEBISUgHkUNAiAaQQpHDQILELwaITsgAiAnNgLEAiACICY2AsACIAIgOzcDuAIgAkEANgKwAgJAIAEtAIEBQQV2IAEtAMgBQf8BcUEKRnEiG0EBRw0AIAEQ4w4LIAJBADYCoAMgAkHgAGogASAZIAJBhAJqIBwgAkGwAmogIyACQaADaiAbQQAgIUEAQQAQkwIMAgsQuxohOwJAIAEtAIEBQQV2IAEtAMgBQf8BcUEKRnEiG0UNACABEOMOCyADIAIpAoQCNwIAIANBCGogAkGEAmpBCGooAgA2AgAgAiAcOgDcAyACIBk2AsADIAJBADoA4AMgAiAbOgDfAyACICQ2AtgDIAIgIjYC1AMgAiAdNgLQAyACQQA7AOEDIAJBADsA3QMgAiAnNgK0AyACICY2ArADIAIgOzcDqAMgAkEANgKgAyACQeAAaiABIAJBoANqEO8EDAELAkAgHUUNACAbQYDAAHEhHgJAAkACQCAaQf8BcSIaDQAgHkEARyEfDAELIB5FDQFBASEfIBpBEkYNACAaQT5HDQELIAMgAikChAI3AgAgA0EIaiACQYQCakEIaigCADYCACACIBw6ANwDIAIgGTYCwAMgAkEAOgDgAyACQQA2AtADIAJBADsA4QMgAkEAOwDdAyACICQ2ArQDIAIgIjYCsAMgAkLh5tGLxq7aMTcDqAMgAkEANgKgAyACIB8gGkEKRnE6AN8DIAJB4ABqIAEgAkGgA2oQ7wQMAgsCQAJAIAFBABCDEA0AIB5FDQIgGkEKRw0CDAELIBpBAkYNAQsgAiAkNgLkAiACICI2AuACIAJC4ebRi8au2jE3A9gCIAJBADYC0AICQCAeQQBHIBpBCkZxIhtBAUcNACABEOMOCyACICc2AqgDIAIgJjYCpAMgAiAlNgKgAyACQeAAaiABIBkgAkGEAmogHCACQdACakEAIAJBoANqIBtBACAhQQBBABCTAgwBCyACQfACakEIaiIoIAJBhAJqQQhqKAIANgIAIAIgAikChAI3A/ACQQAhKUEAIRpBACEeQQAhKiAdISsCQAJAA0AgG0GAwABxRQ0BIAJBoANqIAFB0LObAUEEQQEQjwQgAigCpAMhGwJAIAIoAqADQQFHDQAgAkENNgJgIAIgGzYCZAwDCyAbRQ0BIAEoArwBIR8gASgCuAEhLAJAAkACQAJAAkACQCAbIAIoAqgDIhpBlKWbAUEIEMIeDQACQCAbIBpBjqebAUEIEMIeDQACQAJAAkAgGyAaQeKmmwFBCBDCHg0AIBsgGkHHs5sBQQYQwh4iGyAecQ0BIBsgK3IhKwwJCyApDQEgHyEtICwhLgwHCyACEL4aNwOwAyACQuHm0YvGrtoxNwOoAyACQfqAgIB4NgKgAyABICwgHyACQaADahDeHEEBIR5BASErDAcLEL8aITsgAkH7gICAeDYCoAMgAiA7NwOoAyABICwgHyACQaADahDeHAwFCyAeQQFxDQECQCApRQ0AEMEaITsgAhDCGjcDsAMgAiA7NwOoAyACQfqAgIB4NgKgAyABICwgHyACQaADahDeHEEBISlBASEeDAYLICENAkEBIR5BACEpIAEtAHpBwABxDQUgAkG0gYCAeDYCoAMgASAsIB8gAkGgA2oQ3hwMBQsgKkEBcQ0CQQEhKiAeQQFxIRtBACEeIBtFDQQQxBohOyACEMUaNwOwAyACIDs3A6gDIAJB+oCAgHg2AqADIAEgLCAfIAJBoANqEN4cQQEhHkEBISoMBAsQwBohOyACQfuAgIB4NgKgAyACIDs3A6gDIAEgLCAfIAJBoANqEN4cQQEhHgwDCxC9GiE7IAJC8ciVm8atmLnlADcDsAMgAiA7NwOoAyACQaCBgIB4NgKgAyABICwgHyACQaADahDeHEEBIR5BACEpDAILEMMaITsgAkH7gICAeDYCoAMgAiA7NwOoAyABICwgHyACQaADahDeHEEBISoMAQtBASEpCyABLwGAASEbQQEhGgwACwsCQAJAICUNAEEAISUCQCABLQCBAUEBcQ0ADAELICkNACABKALAASEmIAEQ5AshJyABLQDIASEbQQAhJQJAICdB/wFxDQAMAgsgG0H/AXFBnAFHDQEgARDjDiABKAK8ASEnQQEhJQsgAS0AyAEhGwsCQAJAICsgG0H/AXEiG0ECRnENACAbQZQBRw0BIAEQ5AtB/wFxQQJHDQECQCAaQQFxRQ0AIAJBm4GAgHg2AqADIAEgLCAfIAJBoANqEN4cCwJAIB1FDQAgAkGbgYCAeDYCoAMgASAiICQgAkGgA2oQ3hwLIAEQ4w4gAkHgAGogASAZEJgPDAILAkAgIUUNACACQZuBgIB4NgKgAyABIBkgICACQaADahDeHAsCQCAcQf8BcUEDRg0AIAEoAsQBIRsgASgCwAEhGiACQZuBgIB4NgKgAyABIBogGyACQaADahDeHAsgAkHgAGogASAZEJgPDAELAkAgHEH/AXEiG0EDRw0AIAEtAIEBQSBxRSAqciAeckEBcQ0AIAJBoANqIAEgGSApQQBHICtBAXEQ9AIgAigCpAMhLwJAAkACQCACKAKgAyIwQYGAgIB4Rw0AIAIgLzYCZEENIRsMAQsgBSAEKQIANwIAIAVBEGogBEEQaigCADYCACAFQQhqIARBCGopAgA3AgAgAiAvNgLMBCACIDA2AsgEIDBBgICAgHhGDQEgFiACKQLIBDcCACAWQRhqIAJByARqQRhqKAIANgIAIBZBEGogAkHIBGpBEGopAgA3AgAgFkEIaiAFKQIANwIAQQkhGwsgAiAbNgJgDAILIAJByARqEK4hCwJAAkACQAJAAkAgAS0AyAEiL0EPRw0AIAEQ4w4gAkGgA2ogARCvCiACKAKkAyEbIAIoAqADIhpBBkcNASACIBs2AmQMAwsCQCApRQ0AIC9Bd2pB/QFxDQAQxhohOyACIC02ApQDIAIgLjYCkAMgAiA7NwOIAyACQQA2AoADDAQLIAJBoANqIAEQrwogAigCpAMhLSACKAKgAyIuQQZGDQEgDyAEKQMANwMAIA9BEGogBEEQaikDADcDACAPQQhqIARBCGopAwA3AwAgAiAtNgKEAyACIC42AoADDAMLIAJB+ANqQRBqIh8gBEEQaiIsKQMAIjs3AwAgDiAEQQhqIicpAwAiPDcDACACIAQpAwAiPTcD+AMgBSA9NwMAIAVBCGogPDcDACAFQRBqIDs3AwAgAiAbNgLMBCACIBo2AsgEAkAgKUUNACABKAK8ASEpIAJB44CAgHg2AqADIAEgGSApIAJBoANqEN4cCwJAIAJByARqEPQJRQ0AIAEoArwBISkgAkHkgICAeDYCoAMgASAZICkgAkGgA2oQ3hwLIAMgAikD8AI3AgAgBCACKQP4AzcDACADQQhqICgoAgA2AgAgJyAOKQMANwMAICwgHykDADcDACACIBw6ANwDIAIgGTYCwAMgAkEAOgDfAyACICQ2AtgDIAIgIjYC1AMgAiAdNgLQAyACIBs2AqQDIAIgGjYCoAMgAiAqQQFxOgDeAyACIB5BAXE6AOADIAJBgAI7AOEDIAJBADoA3QMgAkHgAGogASACQaADahDvBAwECyACIC02AmQLIAJBDTYCYAwBCwJAIAEtAIEBQQV2IAEtAMgBIi1B/wFxQQpGcSIuRQ0AIAEQ4w4gAS0AyAEhLQsCQAJAAkACQAJAIC1B/wFxIi1FDQACQCABLQCBAUEgcUUNACAtQRJGDQEgLUE+Rg0BCwJAIAIoAoADDQAgAS0AyQEhHwJAIA9B8LObAUEDEKQcDQAgD0Hzs5sBQQMQpBxFDQELQQAhGiABQQAQgxAgLUEPRiAfcSIfckEBcQ0AQQAgDyAfGyEsDAILQQAhLEEBIRogAUEBEIMQRQ0BIAJBoANqQRhqIAJBgANqQRhqKQMANwMAIAJBoANqQRBqIAJBgANqQRBqKQMANwMAIAQgDykDADcDACACIAIpA4ADNwOgAyACICc2AtAEIAIgJjYCzAQgAiAlNgLIBCACQeAAaiABIBkgAkHwAmogHCACQaADaiArQQFxIAJByARqIC4gKUEARyAhICpBAXEgHkEBcRCTAgwGCwJAICFFDQAgAkH8gICAeDYCoAMgASAZICAgAkGgA2oQ3hwLAkAgKUUNACABKAK8ASEbIAJB44CAgHg2AqADIBkgGyACQaADahCEFyEbAkAgAS0AyAFBogFHDQAgARDXEiEaIAEQ4w4gASAaEPoSCyACQQ02AmAgAiAbNgJkDAILAkACQCACQYADahD0CQ0AIAMgAikD8AI3AgAgA0EIaiAoKAIANgIAIAQgDykDADcDACACQaADakEQaiIpIAJBgANqQRBqKQMANwMAIAJBoANqQRhqIicgAkGAA2pBGGopAwA3AwAgAiACKQOAAzcDoAMgAiAcOgDcAyACIBk2AsADIAIgLjoA3wMgAiAkNgLYAyACICI2AtQDIAIgHTYC0AMgAiAqQQFxIh86AN4DIAIgHkEBcSIsOgDgAyABIAEoAngiGkH//+9vcUGAgIAQcjYCeCACQQA7AOEDIAJBADoA3QMgAkEoaiABIAMgGUEAQQAQhwogAigCKCEeIAEgGjYCeCACKAIsIRoCQCAeQQFxRQ0AIAJBDTYCYCACIBo2AmQgAkGgA2oQrR8MCAsCQAJAIAIoAqADQQVGDQAgASgCvAEhGyAfDQEMAwsgASgCvAEhKiACKAK0AyEeAkAgG0EDRg0AIAJBtoGAgHg2AsgEIAEgGSAeIBkgHkkbIBkgHiAZIB5LGyACQcgEahDeHAsgCyAEKQIANwIAIAtBCGogBEEIaigCADYCACAWIAIpAsgENwIAIBZBCGogBSkCADcCACACQQY2AmAgAiAsOgCJASACIC46AIgBIAIgHzoAhwEgAkEAOgCFASACIBw6AIQBIAIgGjYCgAEgAiAqNgJ8IAIgGTYCeCACIB42AnQgAiAjOgCGAQwICyAaKAIYQYCAgIB4Rg0BIAJBooGAgHg2AsgEIAEgGSAbIAJByARqEN4cDAELAkAgAS8BgAFBgMAAcSIpQQ12IB5xRQ0AIAEoArwBIRsQyBohOyACQYOBgIB4NgKgAyACIDs3A6gDIAEgGSAbIAJBoANqEN4cIAEvAYABQYDAAHEhKQsgAS0AyAEhGwJAIClFDQAgG0H/AXFBEkcNACABKALAASEbAkACQCABEOQLQf8BcUESRg0AIAJBIGogAUEAQQEQoRUgAigCJCEpAkAgAigCIEEBcUUNACACQQ02AmAgAiApNgJkDAYLIClFDQEgKSgCBCInQTBqIRsgKSgCCEEwbCIeQVBqISMgJyAeaiErICkoAgAhIUEAISYgJyElAkADQCAeICZGDQECQCAlLQAqIiBBAkYNAAJAQSpFDQAgAkGgA2ogJUEq/AoAAAsgCiAlKAArNgAAIApBBGogJUEvai0AADoAACACICA6AMoDIAIoAqADISAgAigCpAMhLSACQYSBgIB4NgLIBCABICAgLSACQcgEahDeHCAbQTBqIRsgI0FQaiEjICZBMGohJiACQaADahDLHyAlQTBqISUMAQsLICsgJyAmakEwakYNACAjQTBuIR4DQCAbEJoSIBtBMGohGyAeQX9qIh4NAAsLICEgJxD2IiApQRRBBBC9EwwBCyABEOMOIAEoAsABIR4gARDjDiABKAK8ASEpIAJBhoGAgHg2AqADIAEgGyApIAJBoANqEN4cIAEoArwBIRsgAkGEgYCAeDYCoAMgASAeIBsgAkGgA2oQ3hwLIAEtAMgBIRsLAkAgG0H/AXENACABEOMOQQAhJiACQQA2ArgEIAJCgICAgIABNwKwBEEIIS1BACEpQQAhI0EAIScCQAJAA0ACQAJAAkACQAJAIAEtAMgBQQFGDQAgJ0H+/3tLDQQgJyAjcg0BDAQLIAIoArQEIRsgAigCsAQiHkGAgICAeEYNBiACICk2AqAEIAIgGzYCnAQgAiAeNgKYBAJAAkACQCABLQDIASIeQQFHDQAgARDjDiABLQCBAUEgcUUNAiABLQDIAUH/AXFBCUcNAiACQQhqIAFBASABKALAARDMDiACKAIMIR4gAigCCEEBcUUNASACQQ02AmAgAiAeNgJkDAULIAEoAsQBIRsgASgCwAEhGiACQfgDaiAeEIYeIAJBATYCpAMgAkGU85sBNgKgAyACQgE3AqwDIAIgOTcD8AQgAiACQfAEajYCqAMgAkHIBGogAkGgA2oQjRcgCEEIaiAOKAIANgIAIAggAikC+AM3AgAgGiAbIAJByARqEIQXIRsCQCABLQDIAUGiAUcNACABENcSIRogARDjDiABIBoQ+hILIAJBDTYCYCACIBs2AmQMBAsgAiAeNgLIBCACIB4oAgAQlw8gAigCBCEeIAIoAgAhJyACQZ2BgIB4NgKgAyABICcgHiACQaADahDeHCACQcgEahCYIQsgGyApQQZ0aiEhQQAhHgJAA0AgJiAeRiInDQECQCAbIB5qKAIAIilBB0YNACApDQILIB5BwABqIR4MAAsLIAJBoANqIAFBAEEAICcQ+wogAigCpAMhJwJAIAIoAqADIiZBgYCAgHhHDQAgAiAnNgJkIAJBDTYCYAwDCyAFIARBCGopAgA3AwAgAiAEKQIANwPIBCAbISkgJkGAgICAeEciJQ0BA0AgKSIeICFGDQIgHiAeICFHQQZ0aiEpIB4oAgBBB0cNACAeKAIsISsgHigCKCEeIAJBqYGAgHg2AqADIAEgHiArIAJBoANqEN4cDAALCyACQfiAgIB4NgKgAyABICcgIyACQaADahDeHAwCCwJAICUNACABLwGAAUGAwABxRQ0AA0AgGyIeICFGDQEgHiAeICFHQQZ0aiEbQRAhKUEMISUCQAJAIB4oAgBBfGoOBAECAgACCyAeLQAcQQJHDQFBFCEpQRAhJQsgHiAlaigCACElIB4gKWooAgAhHiACQaqBgIB4NgKgAyABICUgHiACQaADahDeHAwACwsCQCAdRQ0AIAJBg4GAgHg2AqADIAJC4ebRi8au2jE3A6gDIAEgIiAkIAJBoANqEN4cCwJAIBogKnFBAXFFDQAgAkGfgYCAeDYCoAMgASAsIB8gAkGgA2oQ3hwLAkAgAigCgANBBUYNACATIAIpApgENwIAIBUgDykDADcDACACQeAAakEQaiACQYADakEQaikDADcDACACQeAAakEYaiACQYADakEYaikDADcDACATQQhqIAJBmARqQQhqKAIANgIAIAIgAikDgAM3A2AgASgCvAEhGiACQgA3A7ADIAJCATcDqAMgAkIANwPYA0EAIRsgAkEANgKgAyACQgA3A+gDIAJCgICAgIABNwPgAyACQYCAgIB4NgLAAyACQYAGOwHwAyANIAIpA8gENwIAIA1BCGogBSkDADcCACACIBw6ALEBIAIgLjoAsAEgAkEANgKsASACIBo2ApwBIAIgGTYCmAEgAiAnNgKEASACICY2AoABIAJBoANqEMEZIAcQjyAgBhCXIQwKCyACQQE2AqQDIAJBoLWbATYCoAMgAkIANwKsAyACIAJB+ANqNgKoAyACQaADakGotZsBEKgdAAsgAkGYBGoQjyAMBwsgASgCwAEhJSACQaADaiABQQAQgAMgAigCpAMhGyACKAKgAyIeQYCAgIB4Rg0BIAIgAigCqAM2AsQEIAIgGzYCwAQgAiAeNgK8BAJAAkACQCABLQDIAUEcRyIgDQAgASgCwAEhJyABEOMOIAEoArwBISsgAkGgA2ogAUEAEKABIAIoAqQDIRsCQCACKAKgAyIeQQdGDQAgBSAEKQMANwMAIAVB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AGohBCADLQA3RQ0ACyABIAEoAixBf2o2AixBASEQDAALCyADQShqIAEgAigCKCACKAIsIAIoAjQgAigCOBDqBQJAAkAgAy0AKEEERg0AIAMpAygiFEL/AYNCBFINAQsgA0EoaiABIAItAEgQkQoCQCADLQAoQQRGDQAgAykDKCIUQv8Bg0IEUg0BCwJAIAItAERFDQAgA0EANgIoIANBOGogASADQShqQcezmwFBBhCGDQJAIAMtADhBBEYNACADKQM4IhRC/wGDQgRSDQILIANBKGogARDdDyADLQAoQQRGDQAgAykDKCIUQv8Bg0IEUg0BCwJAIAItAEVFDQAgA0EANgIoIANBOGogASADQShqQZSlmwFBCBCGDQJAIAMtADhBBEYNACADKQM4IhRC/wGDQgRSDQILIANBKGogARDdDyADLQAoQQRGDQAgAykDKCIUQv8Bg0IEUg0BCwJAIAItAEZFDQAgA0EANgIoIANBOGogASADQShqQY6nmwFBCBCGDQJAIAMtADhBBEYNACADKQM4IhRC/wGDQgRSDQILIANBKGogARDdDyADLQAoQQRGDQAgAykDKCIUQv8Bg0IEUg0BCyADQQA2AkAgA0EoaiABIANBwABqQcvSmwFBCBCGDQJAIAMtAChBBEYNACADKQMoIhRC/wGDQgRSDQELIANBKGogARDdDwJAIAMtAChBBEYNACADKQMoIhRC/wGDQgRSDQELAkACQAJAIAJBCGoiBCgCAEEFRg0AIANBKGogBCABEOUFIAMtAChBBEYNAiADKQMoIhRC/wGDQgRSDQEMAgsgA0EoaiACQRBqIAEQpAkgAy0AKEEERg0BIAMpAygiFEL/AYNCBFENAQsgFEL/AYNCBFINAQsCQCACKAJARQ0AAkAgAi0AR0UNACADQShqIAEgA0HAAGpBupubAUEBEIUNIAMtAChBBEYNACADKQMoIhRC/wGDQgRSDQILIANBKGogASADQcAAakHFy5sBQQEQhQ0CQCADLQAoQQRGDQAgAykDKCIUQv8Bg0IEUg0CCyADQShqIAEQ3Q8CQCADLQAoQQRGDQAgAykDKCIUQv8Bg0IEUg0CCyADQShqIAJBwABqIAEQnRAgAy0AKEEERg0AIAMpAygiFEL/AYNCBFINAQsCQCACKAI8RQ0AAkAgAS0ATQ0AIANBKGogARDd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IBAgARDlBSADLQAoQQRGDQMgAykDKCIUQv8Bg0IEUQ0DDAQLIANBKGogARDdDyADLQAoQQRGDQAgAykDKCIUQv8Bg0IEUg0DCyADQShqIBAgARDlBSADLQAoQQRGDQEgAykDKCIUQv8Bg0IEUg0CDAELAkAgES0AREUNACADQQA2AiggA0E4aiABIANBKGpBipybAUEBEIUNIAMtADhBBEYNACADKQM4IhRC/wGDQgRSDQILIANBKGogECABEOUFIAMtAChBBEYNACADKQMoIhRC/wGDQgRSDQELAkAgAi0ANkUNACADQQA2AiggA0E4aiABIANBKGpB4MubAUEBEIUNIAMtADhBBEYNACADKQM4IhRC/wGDQgRSDQELAkAgESgCPEUNACADQShqIBFBPGogARCTBSADLQAoQQRGDQAgAykDKCIUQv8Bg0IEUg0BCyADQQA2AkAgA0EoaiABIANBwABqQfjAmwFBARCFDQJAIAMtAChBBEYNACADKQMoIhRC/wGDQgRSDQELIANBKGogASARKAIwIBEoAjQgESgCBCARKAIIEP8GAkAgAy0AKEEERg0AIAMpAygiFEL/AYNCBFINAQsgA0EoaiABIANBwABqQbOBnQFBARCFDQJAIAMtAChBBEYNACADKQMoIhRC/wGDQgRSDQELAkAgESgCQEUNACADQShqIAEgA0HAAGpBxcubAUEBEIUNAkAgAy0AKEEERg0AIAMpAygiFEL/AYNCBFINAgsCQCABLQBNDQAgA0EoaiABEN0PIAMtAChBBEYNACADKQMoIhRC/wGDQgRSDQILIANBKGogEUHAAGogARCdECADLQAoQQRGDQAgAykDKCIUQv8Bg0IEUg0BCwJAIBEoAhhBgICAgHhGDQACQCABLQBNDQAgA0EoaiABEN0PIAMtAChBBEYNACADKQMoIhRC/wGDQgRSDQILIANBKGogEUEYaiABEN4WIAMtAChBBEYNByADKQMoIhRC/wGDQgRSDQEMBwsgA0EoaiABIANBwABqEIcNIAMtAChBBEYNBiADKQMoIhRC/wGDQgRRDQYLIBRC/wGDQgRSDQQMBQsgA0HAAGogASAMIA9FQZAKEMARIAMtAEBBBEYNASADKQNAIhRC/wGDQgRRDQELIBRC/wGDQgRSDQELIANBwABqIAEgA0EoakGzgZ0BQQEQ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IAAgCzcCAAwBCyAAQQQ6AAALIANBMGokAAvRVAMVfwV+AXwjAEHQB2siAiQAIAEoAsABIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQDIASIEQY1/akH/AXFBLkkNAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQUBqDg4CAgIBAQMEAQEBARAQEAALAkAgBEGcf2oODhABAQEHAQIBCAEQAQEQAAsCQCAEDgULAQkBCgALIARBDkYNBCAEQRpGDQEgBEHaAEYNASAEQd8ARg0FCyACQYAGakEEciAEEIYeIAJBhQE2ApQGIAJBsaubATYCkAYgAkGwgICAeDYCgAYgASgCwAEgASgCxAEgAkGABmoQhBchBEEBIQUgAS0AyAFBogFHDTEgARDXEiEDIAEQ4w4gASADEPoSDDELAkACQCAEQRpHDQAgARDjDiACQQA2AvgGIAJCgICAgMAANwLwBiACQYAGaiABQQAQqQYgAigCgAYhBCACLQCYBiIGQQJGDTAgAkHgBWpBEGoiByACQYAGakEUaigCADYCACACQeAFakEIaiIIIAJBgAZqQQxqKQIANwMAIAIgAikChAY3A+AFIAIgAigAmQY2AsAHIAIgAkGABmpBHGooAAA2AMMHQQhBIBCZIiIFRQ0uIAUgBDYCACAFIAIpA+AFNwIEIAUgBjoAGCAFIAIoAsAHNgAZIAVBHGogAigAwwc2AAAgBUEMaiAIKQMANwIAIAVBFGogBygCADYCACACIAU2ApQHIAJBATYCkAcgAkGZBmohCSACQYAGakEEciEKQQAhCEEEIQtBACEHQQEhBAJAAkADQCACIAQ2ApgHIAZBAXENAgJAIAEtAMgBIgRBPUcNACABEOMOIAJBCGogARDXBCACKAIMIQQgAigCCEEBcQ0zAkAgByACKALwBkcNACACQfAGakHYrJsBELUYIAIoAvQGIQsLIAsgCGogBDYCACACIAdBAWoiBzYC+AYgAS0AyAEiBEEDRw0CIAEQ4w4gAkGABmogAUEAEKkGIAIoAoAGIQQgAi0AmAYiBkECRg0zIAJB6ABqQRBqIgwgCkEQaigCADYCACACQegAakEIaiINIApBCGop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BCACIA8oAAA2AqgHIAIgECgAADYAqwcCQCACKALoBSIJIAIoAuAFRw0AIAJB4AVqQbi/mwEQtBgLIAIoAuQFIgggCUEFdGoiBCAGNgIAIAQgAikDyAQ3AgQgBCAFOgAYIAQgAigCqAc2ABkgBEEMaiANKQMANwIAIARBFGogDCgCADYCACAEQRxqIAIoAKsHNgAAIApBBGohCiAJQQFqIQkMAQsLIAJB4AVqEP0fCyACQcAFahDaIUGAgICAeCEKDCMLIAEQ4w5BASEFAkACQAJAAkAgAS0AyAEiBEG/f2pB/wFxQQFLDQAgAkGABmogARChBiACKAKEBiEEIAIoAoAGIgVBB0YNMCACQcgEakEYaiACQYAGakEYaikDADcDACACQcgEakEQaiACQYAGakEQaikDADcDACACIAIpA4gGNwPQBCACIAQ2AswEIAIgBTYCyAQgBUF9ag4CAgMBCyACQYAGakEEciAEEIYeIAJBITYClAYgAkGQq5sBNgKQBiACQbCAgIB4NgKABiABKALAASABKALEASACQYAGahCEFyEEIAEtAMgBQaIBRw0wIAEQ1xIhAyABEOMOIAEgAxD6EgwwC0GSqZsBQShBgKubARCMGgALIAIoAtQEIQYgAigC0AQhByACIAIrA9gEOQPABSACKQPgBCEYIAJB6ABqQbibmwFBARCcFQJAAkAgGFANACACIBg3A4AGIAJBKGogAkGABmoQlBMgAkHoAGogAigCKCIEIAQgAigCLGoQjxsgAikDgAYQ8x8MAQsgAkEBNgKEBiACQZTzmwE2AoAGIAJCATcCjAYgAkH3Aa1CIIYgAkHABWqthDcD4AUgAiACQeAFajYCiAYgAkHoAGogAkGABmoQrSENCgsgAisDwAUhHCACQYAGakEIaiACQegAakEIaigCADYCACACIAIpAmg3A4AGIAJBgAZqEJgfIhdCgICAgHCDIRggHJohHCAXpyEFQYCAgIB4IQgMIgsgAigC1AQhBiACKALQBCEHIAIgAigC4AQ2AsAFIAIpA9gEIRggAkHoAGpBuJubAUEBEJwVAkAgGFANACACIBg3A4AGIAJBMGogAkGABmoQlBMgAkHoAGogAigCMCIEIAQgAigCNGoQjxsgAikDgAYQ8x8MIQsgAkEBNgKEBiACQZTzmwE2AoAGIAJCATcCjAYgAkHcA61CIIYgAkHABWqthDcD4AUgAiACQeAFajYCiAYgAkHoAGogAkGABmoQrSFFDSBBtKqbAUErIAJBzwdqQaSqmwFB8KqbARDqEAALIAJBgAZqIAEQlgICQCACLQC0BkEERw0AIAIoAoAGIQQMLAsCQEHIAEUNACACQZgCaiACQYAGakHIAPwKAAALQQhB4AAQmSIiBEUNKCAEQRM2AgBB2ABFDSMgBEEIaiACQZgCakHYAPwKAAAMIwsgAkGABmogARDlCyACKAKEBiEGQQEhBQJAIAIoAoAGRQ0AIAYhBAwsCyACKAKIBiEHAkACQCABLQDJAQ0AIAEtAMgBQf8BcUGEAUYNAQtBCEHgABCZIiIERQ0oIAQgBzYCCCAEIAY2AgQgBEEBNgIADCMLIAJBgAZqIAEgA0EAIAYgBxDwDyACLQCkBkECRg0dAkBBKEUNACACQfACaiACQYAGakEo/AoAAAtBCEHgABCZIiIERQ0nIARBEjYCAEHYAEUNIiAEQQhqIAJB8AJqQdgA/AoAAAwiCyABEOMOAkAgAS0AyAFB3wBHDQAgAkGABmogARCWAiACKAKABiEEIAItALQGIgVBBEYNKgJAQTBFDQAgAkHIBGpBBHIgAkGABmpBBHJBMPwKAAALIAJByARqQcQAaiACQYAGakHEAGooAAA2AAAgAkHIBGpBPWogAkGABmpBPWopAAA3AAAgAiACKQC1BjcA/QQMHAsgAkGABmogAUEBEKoFIAIoAoAGIQQgAi0AlAZBA0YNKSACQcgEakEUaiACQYAGakEUaigCADYCACACQcgEakEMaiACQYAGakEMaikCADcCACACIAIpAoQGNwLMBEEEIQUMGwsgAkGABmogARCTAyABIAEoAnhBAXI2AnggARDjDgJAAkACQAJAAkACQAJAAkACQCABLQDIASIEQXNqQQJPDQBBkQEhBAwBCwJAIARBkQFHDQAgARDjDiABLQDIASEECyAEQf8BcUEERw0BIAEQ4w4gASgCeCABLQDIARCnF0UNAUHgACEECyABEOMOIAEtAMgBIQUgASACQYAGahCgBiAFIARHDQEgASgCwAEhByABLQDIASIEQQJHDQIgARDjDiABLQDIASIEQXNqQf8BcUECTw0EIAEQ4w4gAS0AyAEiBUGRAUcNA0EBQQIgBEH/AXFBDUYbIQUMBQsgASACQYAGahCgBgsgASgCwAEhBSACQYAGaiABEIcBIAIoAoQGIQQgAigCgAYiA0GAgICAeEYNLSACKAKIBiEGIAEoArwBIQdBCEHgABCZIiIBRQ0qIAEgBzYCFCABIAU2AhAgASAGNgIMIAEgBDYCCCABIAM2AgQgAUEFNgIAQQAhBSABIQQMLgsgASgCxAEhBSACQbAFaiAEEIYeIAJBATYChAYgAkGU85sBNgKABiACQgE3AowGIAJB9watQiCGQbymmwGthDcD4AUgAiACQeAFajYCiAYgAkHoAGogAkGABmoQjRcgAkH8AGogAkG4BWooAgA2AgAgAiACKQKwBTcCdCAHIAUgAkHoAGoQhBchBCABLQDIAUGiAUcNLCABENcSIQUgARDjDiABIAUQ+hIMLAsgASgCxAEhBCABKALAASEDIAJBhAdqIAUQhh4gAkEBNgKEBiACQZTzmwE2AoAGIAJCATcCjAYgAkH3Bq1CIIZB4aibAa2ENwPgBSACIAJB4AVqNgKIBiACQegAaiACQYAGahCNFyACQfwAaiACQYwHaigCADYCACACIAIpAoQHNwJ0IAMgBCACQegAahCEFyEEIAEtAMgBQaIBRw0rIAEQ1xIhBSABEOMOIAEgBRD6EgwrC0EDIQNBACEFIARB/wFxQZEBRw0BCyABEOMOIAEtAMgBIQQgBSEDCwJAAkAgBEH/AXFBBEcNACABEOMOIAEoAsABIQUgAkHoAGogARCIDCACKAJwIQQgAikDaCIYQgBRDSogAigCdCEIIAJB0ABqIAFB4ABBlJybAUECEJwLIAIoAlQhBiACKAJQQQFxRQ0BIBgQ8x8gBiEEDCoLIAEoAsQBIQUgASgCwAEhAyACQfAGaiAEEIYeIAJBATYChAYgAkGU85sBNgKABiACQgE3AowGIAJB9watQiCGQeKomwGthDcD4AUgAiACQeAFajYCiAYgAkHoAGogAkGABmoQjRcgAkH8AGogAkH4BmooAgA2AgAgAiACKQLwBjcCdCADIAUgAkHoAGoQhBchBCABLQDIAUGiAUcNKSABENcSIQUgARDjDiABIAUQ+hIMKQtBACEKIAJBqAZqQQA7AQAgAiAGNgKgBiACQQA6AJwGIAJBADYCmAYgAiAINgKUBiACIAQ2ApAGIAIgGDcDiAYgAkEANgKkBiACIAEoArwBNgKEBiACQQA6AKoGIAIgBTYCgAYCQCABLQDIASIEQfUARw0AIAEQ4w4gAkHIAGogARDXBCACKAJMIQoCQCACKAJIQQFxRQ0AIAohBAwbCyABLQDIASEECyACIAo2AsAHAkACQAJAAkACQCAEQf8BcUEFRw0AIAEQ4w4gAS0AyAEiBEFzakH/AXFBAk8NAiABEOMOIAEtAMgBIgVBCkcNAUEBQQIgBEH/AXFBDUYbIQUMAwsgASgCxAEhBSABKALAASEDIAJBkAdqIAQQhh4gAkEBNgJsIAJBlPObATYCaCACQgE3AnQgAkH3Bq1CIIZB46ibAa2ENwOgBSACIAJBoAVqNgJwIAJB4AVqIAJB6ABqEI0XIAJB9AVqIAJBmAdqKAIANgIAIAIgAikCkAc3AuwFIAMgBSACQeAFahCEFyEEIAEtAMgBQaIBRw0cIAEQ1xIhBSABEOMOIAEgBRD6EgwcCyABKALEASEEIAEoAsABIQMgAkGoB2ogBRCGHiACQQE2AmwgAkGU85sBNgJoIAJCATcCdCACQfcGrUIghkGoppsBrYQ3A6AFIAIgAkGgBWo2AnAgAkHgBWogAkHoAGoQjRcgAkH0BWogAkGwB2ooAgA2AgAgAiACKQKoBzcC7AUgAyAEIAJB4AVqEIQXIQQgAS0AyAFBogFHDRsgARDXEiEFIAEQ4w4gASAFEPoSDBsLQQMhBkEAIQUgBEH/AXFBCkcNAQsgARDjDiAFIQYLIAJBwABqIAFBCRDtESACKAJEIQUCQCACKAJAQQFxRQ0AIAUhBAwZCyACIAU2ApQFAkACQCABEPQNIgQNACABLQDIASIEQQNGDQEgASgCxAEhBSABKALAASEDIAJBwAVqIAQQhh4gAkEBNgJsIAJBlPObATYCaCACQgE3AnQgAkH3Bq1CIIZBvaabAa2ENwOgBSACIAJBoAVqNgJwIAJB4AVqIAJB6ABqEI0XIAJB9AVqIAJByAVqKAIANgIAIAIgAikCwAU3AuwFIAMgBSACQeAFahCEFyEEIAEtAMgBQaIBRw0AIAEQ1xIhBSABEOMOIAEgBRD6EgsgAkGUBWoQ2yEMGQsgARDjDiABKAK8ASEIAkBBKkUiAQ0AIAJByARqIAJBgAZqQSr8CgAACwJAIAENACACQZgEaiACQcgEakEq/AoAAAtBCEHgABCZIiIERQ0lIAQgCDYCDCAEIAc2AgggBEEQNgIAAkBBKkUNACAEQRBqIAJBmARqQSr8CgAACyAEIAY6AEkgBCADOgBIIAQgBTYCRCAEIAo2AkBBACEFIARBADoAOgwpCyABEOMOIAJBADYCqAUgAkKAgICAgAE3AqAFQfcGrUIghiIZQammmwGthCEaIAJB6ABqQQhqIQYgAkGcB2ohEUEwIQpBCCESQQAhCAJAAkADQCABLQDIAUEFRg0CIAEoAsABIQ4CQAJAIAEtAIEBQSBxRQ0AIAEoAnghByACQYAGaiABEJMDIAEgB0EBcjYCeCABKALAASENAkAgAS0AyAEiC0EcRw0AIAEQ4w4gASgCvAEhCSABKAK4ASEMCyACQfAGaiABEIgMAkACQAJAAkAgAikD8AYiGEIAUg0AIAIgAigC+AY2AswEIAJBCDYCyAQMAQsgAigC+AYhBQJAAkAgAS0AyAEiBEEKRg0AQQAhECACKAL8BiETDAELIAEQ4w4gBSABKAK8ASIPIAUgD0sbIRMgAS0AyAEhBEEBIRAgBSAPIAUgD0kbIQULAkAgBEH/AXFBCUcNACAYQiCIpyEUIBinIRUgARDjDkEAIQ8gC0EcRg0CIBAhFiAVIQ0gFCELIAUhDCATIQkMAwsgASgCxAEhBSABKALAASEHIAJBhAdqIAQQhh4gAkEBNgKsByACQZTzmwE2AqgHIAJCATcCtAcgAiAaNwPAByACIAJBwAdqNgKwByACQZAHaiACQagHahCNFyARQQhqIAJBhAdqQQhqKAIANgIAIBEgAikChAc3AgAgByAFIAJBkAdqEIQXIQQCQCABLQDIAUGiAUcNACABENcSIQUgARDjDiABIAUQ+hILIAJBCDYCyAQgAiAENgLMBCAYEPMfCyABIAJBgAZqEKAGIAJBBzYCaCACQcgEahCKHwwDCyABKAK8ASELQQhBKBCZIiIERQ0qIARBADYCICAEIBA6ABwgBEEANgIYIAQgEzYCFCAEIAU2AhAgBCAUNgIMIAQgFTYCCCAEQQA2AgBBAiEPCyAHQQFxIQUgAkEANgLoBCACIBY6AOQEIAJBADYC4AQgAiAJNgLcBCACIAw2AtgEIAIgCzYC1AQgAiANNgLQBCACIAQ2AswEIAIgDzYCyAQCQEEoRQ0AIAJB6ABqIAJByARqQSj8CgAACyABIAEoAnhBfnEgBXI2AnggAkGABmoQqyEMAQsgAkEHNgJoCwJAAkACQAJAIAEtAMgBQRxHDQAgARDjDiACQRhqIAEQ1wQgAigCHCEFIAIoAhhBAXFFDQEgBSEEDBwLIAJBIGogARDXBCACKAIkIQQgAigCIEEBcQ0bIAEtAMgBQQpHDQEgARDjDiABKAK8ASEJIAIoAmwhDCACKAJoIQdBCEHgABCZIiIFRQ0qIAUgCTYCDCAFIA42AgggBSAENgIEIAVBCDYCACAFIQQMAgsgASgCvAEhCSACKAJsIQwgAigCaCEHQQhB4AAQmSIiBEUNKSAEIAk2AgwgBCAONgIIIAQgBTYCBCAEQQk2AgAMAQsgASgCvAEhCSACKAJsIQwgAigCaCEHCyACQeAFakEYaiIFIAZBGGopAwA3AwAgAkHgBWpBEGoiDSAGQRBqKQMANwMAIAJB4AVqQQhqIgsgBkEIaikDADcDACACIAYpAwA3A+AFAkAgB0EIRw0AIAwhBAwaCyACQcAFakEYaiIPIAUpAwA3AwAgAkHABWpBEGoiECANKQMANwMAIAJBwAVqQQhqIg0gCykDADcDACACIAIpA+AFNwPABQJAIAggAigCoAVHDQAgAkGgBWoQ7BggAigCpAUhEgsgEiAKaiIFQVRqIAw2AgAgBUFQaiAHNgIAIAVBWGoiByACKQPABTcCACAPKQMAIRggECkDACEXIA0pAwAhGyAFIAQ2AgAgBUF8aiAJNgIAIAVBeGogDjYCACAHQQhqIBs3AgAgB0EQaiAXNwIAIAdBGGogGDcCACACIAhBAWoiBDYCqAUCQAJAIAEtAMgBIgVBe2oOAwMBAAELIAEQ4w4gCkE4aiEKIAQhCAwBCwsgASgCxAEhBCABKALAASEDIAJBsAVqIAUQhh4gAkEBNgKEBiACQZTzmwE2AoAGIAJCATcCjAYgAiAZQZytmwGthDcDaCACIAJB6ABqNgKIBiACQcgEaiACQYAGahCNFyACQdwEaiACQbgFaigCADYCACACIAIpArAFNwLUBCADIAQgAkHIBGoQhBchBCABLQDIAUGiAUcNGCABENcSIQUgARDjDiABIAUQ+hIMGAsgCEEBaiEICyACKAKkBSEKAkAgAigCoAUiDkGAgICAeEcNACAKIQQMKAsgARDjDiACIA42ApQFIAIgCDYCnAUgAiAKNgKYBSAKIAhBOGxqIQdBACEJIAohBAJAA0AgBCAHRiIFDQEgBEUNASAEKAIwIQYgBEEAQTggBRtqIgUhBAJAAkAgBigCAEF4ag4CAAIBC0EBIQkgBSEEDAELIAlBAXEhBkEAIQkgBSEEIAZFDQALIAEoArwBIQQgAkHbgICAeDYCgAYgAyAEIAJBgAZqEIQXIQQCQCABLQDIAUGiAUcNACABENcSIQUgARDjDiABIAUQ+hILIAJBlAVqEPwfDCgLIAEoArwBIQFBCEHgABCZIiIERQ0kIAQgATYCFCAEIAM2AhAgBCAINgIMIAQgCjYCCCAEIA42AgQgBEEHNgIADB8LIAEQ4w4gAkEQaiABENcEQQEhBSACKAIUIQYCQCACKAIQQQFxRQ0AIAYhBAwoCyACIAY2AsAFAkAgAS0AyAEiBEEBRg0AIAEoAsQBIQMgASgCwAEhBiACQegAaiAEEIYeIAJBATYChAYgAkGU85sBNgKABiACQgE3AowGIAJB9watQiCGQeComwGthDcD4AUgAiACQeAFajYCiAYgAkHIBGogAkGABmoQjRcgAkHcBGogAkHwAGooAgA2AgAgAiACKQJoNwLUBCAGIAMgAkHIBGoQhBchBAJAIAEtAMgBQaIBRw0AIAEQ1xIhAyABEOMOIAEgAxD6EgsgAkHABWoQmgcMKAsgARDjDgJAIAYNAEEBIQUgAyEEDCgLIAEoArwBIQFBCEHgABCZIiIERQ0jIAQgATYCDCAEIAM2AgggBCAGNgIEIARBDTYCAAweCyAEQfYARg0CDAMLIAIoAuAFIQ4gAigCxAUhBiACKALABSEKDBoLQbSqmwFBKyACQc8HakGkqpsBQeCqmwEQ6hAACyABEOQLQf8BcUHoAEYNASABLQDIASEEC0EBIQUCQCAEQf8BcSIEQf1+ag4HDQ4ODgYHCAALAkAgBEHrfmoOBgkKDgwOCwALAkAgBEGMf2oOBwMODg4OBQQACyAEQeQARg0BQQghBiAEQe4ARw0NDA4LIAEQ4w4gAkGABmogARDlCyACKAKEBiEEIAIoAoAGDSBBASEFIAJBgAZqIAEgA0EBIAQgAigCiAYQ8A8gAi0ApAZBAkYNEwJAQShFDQAgAkGgAWogAkGABmpBKPwKAAALQQhB4AAQmSIiBEUNHSAEQRI2AgBB2ABFDRggBEEIaiACQaABakHYAPwKAAAMGAtBCiEGDAwLQQAhBgwLC0EEIQYMCgtBBSEGDAkLQQshBgwIC0ECIQYMBwtBAyEGDAYLQQYhBgwFC0EHIQYMBAtBASEFQQEhBgwDC0EJIQYMAgtBDCEGDAELQQ0hBkEAIQULAkACQAJAIAEQ5AtB/wFxIgRBpAFGDQAgBSAEQQhHcUUNAQwCCyAFDQELIAEoAsABIQUgAkGABmogARDIDAJAIAItAIAGQQFHDQAgAigChAYhBAwUCyACLQCBBiEGIAJBgAZqIAFBARCqBSACKAKABiEEIAItAJQGIgNBA0YNEyACQcgEakEMaiACQYAGakEMaikCADcCACACQcgEakEXaiACQYAGakEXai0AADoAACACIAIpAoQGNwLMBCACIAIvAJUGOwDdBCACIAM6ANwEIAIgBDYCyARBACEEAkAgAS0AyQENAAJAIAEtAMgBIgdBNUYNACAHQRJHDQELIAIgARCRFyACKAIEIQQCQCACKAIAQQFxRQ0AIAJByARqEKscDBULIAEQ4w4LIAJB3QRqIQcCQCAGQQFxRQ0AIAEoArwBIQYgAkGpgYCAeDYCgAYgASAFIAYgAkGABmoQ3hwLIAJBgAJqQQhqIgggAkHIBGpBCGopAwA3AwAgAkGAAmpBEGoiCiACQcgEakEQaigCADYCACACQfwBakECaiIOIAdBAmotAAA6AAAgAiACKQPIBCIYNwNoIAIgBy8AACIGOwHgBSACIBg3A4ACIAIgBjsB/AEgASgCvAEhBkEIQeAAEJkiIgFFDRAgASAGNgIMIAEgBTYCCCABQQM2AgAgASACKQOAAjcDECABIAM6ACQgASACLwH8ATsAJSABIAQ2AiggAUEYaiAIKQMANwMAIAFBIGogCigCADYCACABQSdqIA4tAAA6AABBACEFIAEhBAwUCyABEOMOIAEoArwBIQFBCEHgABCZIiIERQ0PIAQgBjoADCAEIAE2AgggBCADNgIEQQAhBSAEQQA2AgAMEwsgAkHoAGoQoSELIAJBoAVqEPwfDBALIAJBwAdqENshCyACQYAGahDLHwwOCyACIAU6APwEIAIgBDYCyARBACEGAkAgAS0AyQENACABLQDIAUH/AXFBEkcNACACQThqIAEQkRcgAigCPCEEAkAgAigCOEEBcUUNACACQcgEahDKHwwPCyABEOMOIAQhBgsgASgCvAEhCAJAQTRFIgENACACQegAaiACQcgEakE0/AoAAAsgAkHgBWpBD2oiBCACQYwFaigAADYAACACQeAFakEIaiIHIAJBhQVqKQAANwMAIAIgAikA/QQ3A+AFAkAgAQ0AIAJB4ANqIAJB6ABqQTT8CgAACyACQcgDakEPaiAEKAAANgAAIAJByANqQQhqIAcpAwA3AwAgAiACKQPgBTcDyANBCEHgABCZIiIERQ0KIAQgCDYCDCAEIAM2AgggBEEENgIAAkBBNEUNACAEQRBqIAJB4ANqQTT8CgAACyAEIAU6AEQgBCAGNgJYIAQgAikDyAM3AEUgBEHNAGogAkHQA2opAwA3AAAgBEHUAGogAkHXA2ooAAA2AAAMBQsgAigCgAYhBAwNCyACQYAGakEIaiIIIAIoAsAFIgRBCGooAgA2AgAgAkHgBWpBAmoiCiAEQQ9qLQAAOgAAIAIgBCkCADcDgAYgAiAELwANOwHgBSAELQAMIQRBBEEQEJkiIgVFDQggBSACKQOABjcCACAFIAIvAeAFOwANIAVBAiAEazoADCAFQQhqIAgoAgA2AgAgBUEPaiAKLQAAOgAAIAggAkHoAGpBCGooAgA2AgAgAiACKQJoNwOABiACQYAGahCYHyEYIAIoAsAFQRBBBBC9EyAYvyEcQYOAgIB4IQhCACEYCyABKAK8ASEBQQhB4AAQmSIiBEUNByAEIAE2AiwgBCADNgIoIAQgHDkCGCAEIAY2AhQgBCAHNgIQIAQgCDYCCCAEQRE2AgAgBCAYIAWthDcCIEEAIQUgAigCyARBfWpBAkkNCyACQcgEahCeFQwLC0EBIQUgCkGAgICAeEYNAiAKQYSAgIB4Rg0CIAEoArwBIQUgASgCvAEhAQtBCEHgABCZIiIERQ0FIAQgATYCLCAEIAM2AiggBCAFNgIkIAQgAzYCICAEIAk2AhwgBCAINgIYIAQgDjYCFCAEIAc2AhAgBCAGNgIMIAQgCjYCCCAEQRE2AgALQQAhBQwICyAGIQQMBwsgAigC5AQhBiACKALgBCEHIAIpA9gEIRggAikD0AQhFwsgASgCvAEhCAtBCEHgABCZIiIBRQ0AIAEgCDYCLCABIAM2AiggASAGNgIkIAEgBzYCICABIBg3AxggASAXNwMQIAEgBDYCDCABIAU2AgggAUERNgIAQQAhBSABIQQMBAsACyACQZAHahD9HwsgAkHwBmoQ2iELQQEhBQsgACAENgIEIAAgBTYCACACQdAHaiQAC4xMAQp/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACICQXRqIgNBByADQSZJGw4mHgABAgMEBQYHCAkKCwweHg0ODxARHhITFB4eFRYXGBkaGxweHR4eCyAAKAIMIgNFDR0gACgCCCEAIANBBHQhAgNAAkAgACgCAEECRg0AIAEgAEEMaigCACIDENMDIAMgARBRIAEoAgBFDQAgAygCAEEaRw0AIAEgA0EIaiIEEMMFIgVFDQAgAxDkASADQThqIAVBOGopAwA3AwAgA0EwaiAFQTBqKQMANwMAIANBKGogBUEoaikDADcDACADQSBqIAVBIGopAwA3AwAgA0EYaiAFQRhqKQMANwMAIANBEGogBUEQaikDADcDACAEIAVBCGopAwA3AwAgAyAFKQMANwMAIAVBwABBCBC9EwsgAEEQaiEAIAJBcGoiAg0ADB4LCyAAKAIMIgNFDRwgACgCCCIGIANBDGxqIQcDQAJAAkAgBigCACIADQACQAJAAkACQAJAAkAgBigCBCIIKAIAIgNBe2oiAEEEIABBBkkbDgYFAAECAwQFCwJAIAgoAghBA0cNACABIAgoAgwiABDTAyAAIAEQUSABKAIARQ0AIAAoAgBBGkcNACABIABBCGoiAhDDBSIDRQ0AIAAQ5AEgAEE4aiADQThqKQMANwMAIABBMGogA0EwaikDADcDACAAQShqIANBKGopAwA3AwAgAEEgaiADQSBqKQMANwMAIABBGGogA0EYaikDADcDACAAQRBqIANBEGopAwA3AwAgAiADQQhqKQMANwMAIAAgAykDADcDACADQcAAQQgQvRMLIAEgCCgCKCIAENMDIAAgARBRIAEoAgBFDQYgACgCAEEaRw0EIAEgAEEIaiICEMMFIgNFDQQgABDkASAAQThqIANBOGopAwA3AwAgAEEwaiADQTBqKQMANwMAIABBKGogA0EoaikDADcDACAAQSBqIANBIGopAwA3AwAgAEEYaiADQRhqKQMANwMAIABBEGogA0EQaikDADcDACACIANBCGopAwA3AwAgACADKQMANwMAIANBwABBCBC9EwwECyABIAgoAigiABDTAyAAIAEQUSABKAIARQ0FIAAoAgBBGkcNAyABIABBCGoiAhDDBSIDRQ0DIAAQ5AEgAEE4aiADQThqKQMANwMAIABBMGogA0EwaikDADcDACAAQShqIANBKGopAwA3AwAgAEEgaiADQSBqKQMANwMAIABBGGogA0EYaikDADcDACAAQRBqIANBEGopAwA3AwAgAiADQQhqKQMANwMAIAAgAykDADcDACADQcAAQQgQvRMMAwsgCEEoaiEAAkAgCCgCCEEDRw0AIAEgCCgCDCIDENMDIAMgARBRIAEoAgBFDQAgAygCAEEaRw0AIAEgA0EIaiIFEMMFIgJFDQAgAxDkASADQThqIAJBOGopAwA3AwAgA0EwaiACQTBqKQMANwMAIANBKGogAkEoaikDADcDACADQSBqIAJBIGopAwA3AwAgA0EYaiACQRhqKQMANwMAIANBEGogAkEQaikDADcDACAFIAJBCGopAwA3AwAgAyACKQMANwMAIAJBwABBCBC9EwsgACgCAEGAgICAeEYNAiABIAAQ5AQMAgsgCEEgaiEAAkAgA0EDRw0AIAEgCCgCBCIDENMDIAMgARBRIAEoAgBFDQAgAygCAEEaRw0AIAEgA0EIaiIFEMMFIgJFDQAgAxDkASADQThqIAJBOGopAwA3AwAgA0EwaiACQTBqKQMANwMAIANBKGogAkEoaikDADcDACADQSBqIAJBIGopAwA3AwAgA0EYaiACQRhqKQMANwMAIANBEGogAkEQaikDADcDACAFIAJBCGopAwA3AwAgAyACKQMANwMAIAJBwABBCBC9EwsCQCAAKAIAQQdGDQAgACABEIYEIAEoAgBFDQAgASAAEMMICyAIQcgAaiEAIAgoAmgiAyABEIYEAkAgASgCAEUNACABIAMQwwgLIAAoAgBBgICAgHhGDQEgASAAEOQEDAELAkAgCCgCCEEDRw0AIAEgCCgCDCIAENMDIAAgARBRIAEoAgBFDQAgACgCAEEaRw0AIAEgAEEIaiICEMMFIgNFDQAgABDkASAAQThqIANBOGopAwA3AwAgAEEwaiADQTBqKQMANwMAIABBKGogA0EoaikDADcDACAAQSBqIANBIGopAwA3AwAgAEEYaiADQRhqKQMANwMAIABBEGogA0EQaikDADcDACACIANBCGopAwA3AwAgACADKQMANwMAIANBwABBCBC9EwsCQCAIKAIoIglBCGooAgAiAEUNACAJQQRqKAIAIgogAEEGdGohCwNAAkAgCkE4aigCACIARQ0AIApBNGooAgAhAyAAQQxsIQUDQCABIAMoAgAiABDTAyAAIAEQUQJAIAEoAgBFDQAgACgCAEEaRw0AIAEgAEEIaiIEEMMFIgJFDQAgABDkASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACAEIAJBCGopAwA3AwAgACACKQMANwMAIAJBwABBCBC9EwsgA0EMaiEDIAVBdGoiBQ0ACwsgCiABENcIIApBwABqIgAhCiAAIAtHDQALCyAJQRhqIQoCQCAJQRRqKAIAIgBFDQAgCUEQaigCACEDIABBDGwhBQNAIAEgAygCACIAENMDIAAgARBRAkAgASgCAEUNACAAKAIAQRpHDQAgASAAQQhqIgQQwwUiAkUNACAAEOQBIABBOGogAkE4aikDADcDACAAQTBqIAJBMGopAwA3AwAgAEEoaiACQShqKQMANwMAIABBIGogAkEgaikDADcDACAAQRhqIAJBGGopAwA3AwAgAEEQaiACQRBqKQMANwMAIAQgAkEIaikDADcDACAAIAIpAwA3AwAgAkHAAEEIEL0TCyADQQxqIQMgBUF0aiIFDQALCyAKKAIAQYCAgIB4Rg0AIAEgChDkBAsgASgCAEUNASABIAgQsgsMAQsgASAAENMDIAAgARBRIAEoAgBFDQAgACgCAEEaRw0AIAEgAEEIaiICEMMFIgNFDQAgABDkASAAQThqIANBOGopAwA3AwAgAEEwaiADQTBqKQMANwMAIABBKGogA0EoaikDADcDACAAQSBqIANBIGopAwA3AwAgAEEYaiADQRhqKQMANwMAIABBEGogA0EQaikDADcDACACIANBCGopAwA3AwAgACADKQMANwMAIANBwABBCBC9EwsgBkEMaiIGIAdHDQAMHQsLAkAgACgCICIIQQhqKAIAIgBFDQAgCEEEaigCACIKIABBBnRqIQYDQAJAIApBOGooAgAiAEUNACAKQTRqKAIAIQMgAEEMbCEFA0AgASADKAIAIgAQ0wMgACABEFECQCABKAIARQ0AIAAoAgBBGkcNACABIABBCGoiBBDDBSICRQ0AIAAQ5AEgAEE4aiACQThqKQMANwMAIABBMGogAkEwaikDADcDACAAQShqIAJBKGopAwA3AwAgAEEgaiACQSBqKQMANwMAIABBGGogAkEYaikDADcDACAAQRBqIAJBEGopAwA3AwAgBCACQQhqKQMANwMAIAAgAikDADcDACACQcAAQQgQvRMLIANBDGohAyAFQXRqIgUNAAsLIAogARDXCCAKQcAAaiIAIQogACAGRw0ACwsgCEEYaiEKAkAgCEEUaigCACIARQ0AIAhBEGooAgAhAyAAQQxsIQUDQCABIAMoAgAiABDTAyAAIAEQUQJAIAEoAgBFDQAgACgCAEEaRw0AIAEgAEEIaiIEEMMFIgJFDQAgABDkASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACAEIAJBCGopAwA3AwAgACACKQMANwMAIAJBwABBCBC9EwsgA0EMaiEDIAVBdGoiBQ0ACwsgCigCAEGAgICAeEYNGyABIAoQ5AQPCyABIAAoAgQiABDTAyAAIAEQUSABKAIARQ0aIAAoAgBBGkcNGiABIABBCGoiAxDDBSIBRQ0aIAAQ5AEgAEE4aiABQThqKQMANwMAIABBMGogAUEwaikDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAyABQQhqKQMANwMAIAAgASkDADcDACABQcAAQQgQvRMPCyABLQCcASECIAFBAToAnAEgASAAKAIMIgAQ0wMgACABEFECQCABKAIARQ0AIAAoAgBBGkcNACABIABBCGoiBRDDBSIDRQ0AIAAQ5AEgAEE4aiADQThqKQMANwMAIABBMGogA0EwaikDADcDACAAQShqIANBKGopAwA3AwAgAEEgaiADQSBqKQMANwMAIABBGGogA0EYaikDADcDACAAQRBqIANBEGopAwA3AwAgBSADQQhqKQMANwMAIAAgAykDADcDACADQcAAQQgQvRMLIAEgAjoAnAEPCyABIAAoAgQiAxDTAyADIAEQUQJAIAEoAgBFDQAgAygCAEEaRw0AIAEgA0EIaiIFEMMFIgJFDQAgAxDkASADQThqIAJBOGopAwA3AwAgA0EwaiACQTBqKQMANwMAIANBKGogAkEoaikDADcDACADQSBqIAJBIGopAwA3AwAgA0EYaiACQRhqKQMANwMAIANBEGogAkEQaikDADcDACAFIAJBCGopAwA3AwAgAyACKQMANwMAIAJBwABBCBC9EwsgASAAKAIIIgAQ0wMgACABEFEgASgCAEUNGCAAKAIAQRpHDRggASAAQQhqIgMQwwUiAUUNGCAAEOQBIABBOGogAUE4aikDADcDACAAQTBqIAFBMGopAwA3AwAgAEEoaiABQShqKQMANwMAIABBIGogAUEgaikDADcDACAAQRhqIAFBGGopAwA3AwAgAEEQaiABQRBqKQMANwMAIAMgAUEIaikDADcDACAAIAEpAwA3AwAgAUHAAEEIEL0TDwsgAS0AnAEhCCABQQE6AJwBAkACQCACQQtHDQACQAJAIAAoAgQOAwABAwALIAAoAhAiAkUNAiAAKAIMIQMgAkEobCECA0ACQCADKAIAQQdGDQAgAyABEIYEIAEoAgBFDQAgASADEMMICyADQShqIQMgAkFYaiICDQAMAwsLIAAoAhAiA0UNASAAKAIMIQQgA0E4bCEKQQAhAgNAAkACQAJAAkAgBCACaiIDKAIADgMAAQIACwJAIANBCGooAgBBA0cNACABIANBDGooAgAiBRDTAyAFIAEQUSABKAIARQ0AIAUoAgBBGkcNACABIAVBCGoiCxDDBSIGRQ0AIAUQ5AEgBUE4aiAGQThqKQMANwMAIAVBMGogBkEwaikDADcDACAFQShqIAZBKGopAwA3AwAgBUEgaiAGQSBqKQMANwMAIAVBGGogBkEYaikDADcDACAFQRBqIAZBEGopAwA3AwAgCyAGQQhqKQMANwMAIAUgBikDADcDACAGQcAAQQgQvRMLIANBKGooAgAgARDXCAwCCyABLQCcASEGIAFBADoAnAECQCADQTBqKAIAIgVFDQAgASAFENMDIAUgARBRIAEoAgBFDQAgBSgCAEEaRw0AIAEgBUEIaiIHEMMFIgtFDQAgBRDkASAFQThqIAtBOGopAwA3AwAgBUEwaiALQTBqKQMANwMAIAVBKGogC0EoaikDADcDACAFQSBqIAtBIGopAwA3AwAgBUEYaiALQRhqKQMANwMAIAVBEGogC0EQaikDADcDACAHIAtBCGopAwA3AwAgBSALKQMANwMAIAtBwABBCBC9EwsgASAGOgCcAQwBCyADQQRqKAIAIAEQ1wgLAkAgASgCAEUNACABIAMQ0AQLIAogAkE4aiICRw0ADAILCyAAIAEQ/QEgASgCAEUNACABIAAQywULIAFBADoAnAEgASAAKAI4IgAQ0wMgACABEFECQCABKAIARQ0AIAAoAgBBGkcNACABIABBCGoiAhDDBSIDRQ0AIAAQ5AEgAEE4aiADQThqKQMANwMAIABBMGogA0EwaikDADcDACAAQShqIANBKGopAwA3AwAgAEEgaiADQSBqKQMANwMAIABBGGogA0EYaikDADcDACAAQRBqIANBEGopAwA3AwAgAiADQQhqKQMANwMAIAAgAykDADcDACADQcAAQQgQvRMLIAEgCDoAnAEPCyABLQCcASEFIAFBADoAnAEgASAAKAIoIgMQ0wMgAyABEFECQCABKAIARQ0AIAMoAgBBGkcNACABIANBCGoiBBDDBSICRQ0AIAMQ5AEgA0E4aiACQThqKQMANwMAIANBMGogAkEwaikDADcDACADQShqIAJBKGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgBCACQQhqKQMANwMAIAMgAikDADcDACACQcAAQQgQvRMLAkAgACgCCEECSQ0AIAEgAEEMahCZDQsgASAFOgCcAQ8LIAAoAghBAUcNFSABIABBDGoQmQ0PCyABIAAoAgQiAxDTAyADIAEQUQJAIAEoAgBFDQAgAygCAEEaRw0AIAEgA0EIaiIFEMMFIgJFDQAgAxDkASADQThqIAJBOGopAwA3AwAgA0EwaiACQTBqKQMANwMAIANBKGogAkEoaikDADcDACADQSBqIAJBIGopAwA3AwAgA0EYaiACQRhqKQMANwMAIANBEGogAkEQaikDADcDACAFIAJBCGopAwA3AwAgAyACKQMANwMAIAJBwABBCBC9EwsgASAAKAIIIgMQ0wMgAyABEFECQCABKAIARQ0AIAMoAgBBGkcNACABIANBCGoiBRDDBSICRQ0AIAMQ5AEgA0E4aiACQThqKQMANwMAIANBMGogAkEwaikDADcDACADQShqIAJBKGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgBSACQQhqKQMANwMAIAMgAikDADcDACACQcAAQQgQvRMLIAEgACgCDCIAENMDIAAgARBRIAEoAgBFDRQgACgCAEEaRw0UIAEgAEEIaiIDEMMFIgFFDRQgABDkASAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACADIAFBCGopAwA3AwAgACABKQMANwMAIAFBwABBCBC9Ew8LAkAgAC0AGEEFRw0AIAEgACgCEBClDQsgACgCDCIDRQ0TIANBBHQhBSAAKAIIQQxqIQMDQCABIAMoAgAiABDTAyAAIAEQUQJAIAEoAgBFDQAgACgCAEEaRw0AIAEgAEEIaiIEEMMFIgJFDQAgABDkASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACAEIAJBCGopAwA3AwAgACACKQMANwMAIAJBwABBCBC9EwsgA0EQaiEDIAVBcGoiBQ0ADBQLCyABIAAoAhAiAxDTAyADIAEQUSAAQQRqIQACQCABKAIARQ0AIAMoAgBBGkcNACABIANBCGoiBRDDBSICRQ0AIAMQ5AEgA0E4aiACQThqKQMANwMAIANBMGogAkEwaikDADcDACADQShqIAJBKGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgBSACQQhqKQMANwMAIAMgAikDADcDACACQcAAQQgQvRMLIAAoAgBBgICAgHhGDRIgASAAEKkLDwsgACgCDCICRQ0RIAAoAgghAyACQQJ0IQUDQCABIAMoAgAiABDTAyAAIAEQUQJAIAEoAgBFDQAgACgCAEEaRw0AIAEgAEEIaiIEEMMFIgJFDQAgABDkASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACAEIAJBCGopAwA3AwAgACACKQMANwMAIAJBwABBCBC9EwsgA0EEaiEDIAVBfGoiBQ0ADBILCyAAKAIMIgJFDRAgACgCCCEDIAJBAnQhBQNAIAEgAygCACIAENMDIAAgARBRAkAgASgCAEUNACAAKAIAQRpHDQAgASAAQQhqIgQQwwUiAkUNACAAEOQBIABBOGogAkE4aikDADcDACAAQTBqIAJBMGopAwA3AwAgAEEoaiACQShqKQMANwMAIABBIGogAkEgaikDADcDACAAQRhqIAJBGGopAwA3AwAgAEEQaiACQRBqKQMANwMAIAQgAkEIaikDADcDACAAIAIpAwA3AwAgAkHAAEEIEL0TCyADQQRqIQMgBUF8aiIFDQAMEQsLIAEgACgCBCIDENMDIAMgARBRAkAgASgCAEUNACADKAIAQRpHDQAgASADQQhqIgUQwwUiAkUNACADEOQBIANBOGogAkE4aikDADcDACADQTBqIAJBMGopAwA3AwAgA0EoaiACQShqKQMANwMAIANBIGogAkEgaikDADcDACADQRhqIAJBGGopAwA3AwAgA0EQaiACQRBqKQMANwMAIAUgAkEIaikDADcDACADIAIpAwA3AwAgAkHAAEEIEL0TCyAAKAIIIgBBCGooAgAiAkUNDyAAQQRqKAIAIQMgAkECdCEFA0AgASADKAIAIgAQ0wMgACABEFECQCABKAIARQ0AIAAoAgBBGkcNACABIABBCGoiBBDDBSICRQ0AIAAQ5AEgAEE4aiACQThqKQMANwMAIABBMGogAkEwaikDADcDACAAQShqIAJBKGopAwA3AwAgAEEgaiACQSBqKQMANwMAIABBGGogAkEYaikDADcDACAAQRBqIAJBEGopAwA3AwAgBCACQQhqKQMANwMAIAAgAikDADcDACACQcAAQQgQvRMLIANBBGohAyAFQXxqIgUNAAwQCwsCQCAAKAIMIgJFDQAgACgCCCEDIAJBKGwhAgNAIAMgARCGBAJAIAEoAgBFDQAgASADEMMICyADQShqIQMgAkFYaiICDQALCwJAIAAoAhAiACgCAEGAgICAeEcNACAAQQRqIAEQmg0PCyABIAAQ5AQPCyAAKAIgIgpBDGohBgJAIApBCGooAgAiAEUNACAKQQRqKAIAIQMgAEEMbCEFA0AgASADKAIAIgAQ0wMgACABEFECQCABKAIARQ0AIAAoAgBBGkcNACABIABBCGoiBBDDBSICRQ0AIAAQ5AEgAEE4aiACQThqKQMANwMAIABBMGogAkEwaikDADcDACAAQShqIAJBKGopAwA3AwAgAEEgaiACQSBqKQMANwMAIABBGGogAkEYaikDADcDACAAQRBqIAJBEGopAwA3AwAgBCACQQhqKQMANwMAIAAgAikDADcDACACQcAAQQgQvRMLIANBDGohAyAFQXRqIgUNAAsLIAEgBhBEIAooAjAiAEUNDSABIAAQ0wMgACABEFEgASgCAEUNDSAAKAIAQRpHDQ0gASAAQQhqIgMQwwUiAUUNDSAAEOQBIABBOGogAUE4aikDADcDACAAQTBqIAFBMGopAwA3AwAgAEEoaiABQShqKQMANwMAIABBIGogAUEgaikDADcDACAAQRhqIAFBGGopAwA3AwAgAEEQaiABQRBqKQMANwMAIAMgAUEIaikDADcDACAAIAEpAwA3AwAgAUHAAEEIEL0TDwsgACgCDCIARQ0MIAEgABClDQ8LIAEgACgCBCIAENMDIAAgARBRIAEoAgBFDQsgACgCAEEaRw0LIAEgAEEIaiIDEMMFIgFFDQsgABDkASAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACADIAFBCGopAwA3AwAgACABKQMANwMAIAFBwABBCBC9Ew8LIAEgACgCBCIAENMDIAAgARBRIAEoAgBFDQogACgCAEEaRw0KIAEgAEEIaiIDEMMFIgFFDQogABDkASAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACADIAFBCGopAwA3AwAgACABKQMANwMAIAFBwABBCBC9Ew8LIABBIGohAwJAIAAtADRBAkcNACADIAEQqBwLIAEoAgBFDQkgASADEN8FDwsgACgCBCABEL0BDwsgACgCDCIDRQ0HIANBKGwhAyAAKAIIQQRqIQADQAJAAkACQAJAAkAgAEF8aigCAA4FBAABAgMECyAAKAIAQQFHDQMgASAAQQRqKAIAIgIQ0wMgAiABEFEgASgCAEUNAyACKAIAQRpHDQMgASACQQhqIgQQwwUiBUUNAyACEOQBIAJBOGogBUE4aikDADcDACACQTBqIAVBMGopAwA3AwAgAkEoaiAFQShqKQMANwMAIAJBIGogBUEgaikDADcDACACQRhqIAVBGGopAwA3AwAgAkEQaiAFQRBqKQMANwMAIAQgBUEIaikDADcDACACIAUpAwA3AwAgBUHAAEEIEL0TDAMLIAEgACgCACICENMDIAIgARBRIAEoAgBFDQIgAigCAEEaRw0CIAEgAkEIaiIEEMMFIgVFDQIgAhDkASACQThqIAVBOGopAwA3AwAgAkEwaiAFQTBqKQMANwMAIAJBKGogBUEoaikDADcDACACQSBqIAVBIGopAwA3AwAgAkEYaiAFQRhqKQMANwMAIAJBEGogBUEQaikDADcDACAEIAVBCGopAwA3AwAgAiAFKQMANwMAIAVBwABBCBC9EwwCCyAAIAEQ0QQMAQsgACABEPwCCyAAQShqIQAgA0FYaiIDDQAMCAsLIAEgACgCBCIAENMDIAAgARBRIAEoAgBFDQYgACgCAEEaRw0GIAEgAEEIaiIDEMMFIgFFDQYgABDkASAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACADIAFBCGopAwA3AwAgACABKQMANwMAIAFBwABBCBC9Ew8LIAEgACgCBCIAENMDIAAgARBRIAEoAgBFDQUgACgCAEEaRw0FIAEgAEEIaiIDEMMFIgFFDQUgABDkASAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACADIAFBCGopAwA3AwAgACABKQMANwMAIAFBwABBCBC9Ew8LIAEgACgCBCIAENMDIAAgARBRIAEoAgBFDQQgACgCAEEaRw0EIAEgAEEIaiIDEMMFIgFFDQQgABDkASAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACADIAFBCGopAwA3AwAgACABKQMANwMAIAFBwABBCBC9Ew8LIAEgACgCBCIAENMDIAAgARBRIAEoAgBFDQMgACgCAEEaRw0DIAEgAEEIaiIDEMMFIgFFDQMgABDkASAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACADIAFBCGopAwA3AwAgACABKQMANwMAIAFBwABBCBC9Ew8LIAEgACgCBCIAENMDIAAgARBRIAEoAgBFDQIgACgCAEEaRw0CIAEgAEEIaiIDEMMFIgFFDQIgABDkASAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACADIAFBCGopAwA3AwAgACABKQMANwMAIAFBwABBCBC9Ew8LIAEgACgCBCIAENMDIAAgARBRIAEoAgBFDQEgACgCAEEaRw0BIAEgAEEIaiIDEMMFIgFFDQEgABDkASAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACADIAFBCGopAwA3AwAgACABKQMANwMAIAFBwABBCBC9Ew8LAkAgACgCBCIAKAIAQQNHDQAgAEEEaiABEMAHDwsgACABEN4HCwvDUAIVfwd+IwBBkAprIgQkAAJAAkACQAJAAkACQCADQQBIDQACQCABLQALQQFxRQ0AIAEtAA1BAkcNBAsgASgCIA0BIAFC/////w83AiAgASgCPCEFIAFBADYCPAJAIAVF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NgKoAiACIAQpAgA3A+gCIAtBGGohCyAHQYGAgIB4Rw0ACyACKAKkAiEKIAIoAqACIQkLIAVBsJeAARCRHSAIQQJJDQECQCAIQRVJDQAgCiAIEKwLDAILIAhBGGwhBEEYIQEDQCAEIAFGDQIgCiAKIAFqEJILIAFBGGohAQwACwsgCSACKALwAkGAnZsBENggAAsgBkEIaiENIAJBwABqIAhBBEEgQcyPgAEQ3RUgAkEANgKIASACIAIpA0A3AoABIAogCEEYbCIOaiEPIAAoArQBIRBBACEEIAohAQNAAkACQCAOIARGDQBBgICAgHghBwJAIAEoAgBBgICAgHhGDQAgAkHoAmogCiAEaiIHQQRqKAIAIAdBCGooAgAQrBQgAigC6AIhBwsgB0GBgICAeEYNACACKQLsAiI5QiCIpyERIAEtABQhEiA5pyETIAJBkANqIA1BASABKAIMIgYgASgCECIUIBAgEBCIASACKAKQA0UNASACIAIpApQDNwPQAiACQYwBakEMaiAAQYABai8BADsBACACQcCQgAE2AowBIAIgACkCeDcCkAEgAkGcAWpBDGogAEGoAWoiAS8BADsBACACQQYgESAHQYCAgIB4RiIEGzYC4AIgAkHIkIABIBMgBBs2AtwCIAIgACkCoAE3AqABIAIgAkHcAmo2ApwBIAJBrAFqQQxqIAEvAQA7AQAgAiAGNgLIASACIAApAqABNwKwASACIAJByAFqNgKsASACQYACakEMaiABLwEAOwEAIAIgFDYCxAIgAiAAKQKgATcChAIgAiACQcQCajYCgAIgAkGgAmpBDGogAEGKAWovAQA7AQAgAiAAKQGCATcCpAIgAiACQdACajYCoAIgAkEWNgKMAyACQRc2AoQDIAJBFzYC/AIgAkEYNgL0AiACQRg2AuwCIAIgAkGgAmo2AogDIAIgAkGAAmo2AoADIAIgAkGsAWo2AvgCIAIgAkGcAWo2AvACIAIgAkGMAWo2AugCIAJBADYC6AEgAkEGNgLcASACQeyQgAE2AtgBIAJBBTYC5AEgAiACQegCajYC4AEgAkH0AGogAkHYAWoQ2yAhCyACLQDQAiACKALUAhDxFiAHIBMQxSAgAigChAEhBwJAIAIoAogBIgRFDQAgByEBA0AgASgCACABQQRqKAIAENwgIAFBGGooAgAgAUEcaigCABCSHSABQSBqIQEgBEF/aiIEDQALCyACKAKAASAHQQRBIBDAEiAKIAgQ6hwgCSAKEMgiIAtFDQMMBQsgAigCiAEhBCACKAKEASEBIAIgAigCgAE2ArQBIAIgATYCsAEgAiABNgKsASACIAEgBEEFdGo2ArgBIABBEGohFSAAQcAAaiEWIABBxABqIRcgAEEYaiEYIABBFGohGSAAQSRqIRogAEE4aiEbIABBBGohHCAAKAJwIh0gACgCdEEKbGohHiACQaACakEEaiEfIAJB6AJqQQRqISAgAkHoAmpBIGohISACQegCakEcaiEiIAJB6AJqQRRqISMgACgCuAEhJCACQdgBakEEaiIlQQhqISYCQANAIAIoArABIgEgAigCuAFGDQEgAiABQSBqNgKwASABKAIAIidBgYCAgHhGDQEgASgCHCEoIAEoAhghKSABKAIEISogAkHoAmogDUEBIAEoAgwgASgCECAQIBAQiAECQCACKALoAkEBRw0AIAIoAuwCIAIoAvACEPEWDAYLIAJBMGogAigC7AIiKyACKALwAiIsKAIMEQcAIAJBnAFqIAIoAjAgAigCNBDuBSArICwoAhwRBAAhBCArICwoAhARBAAoAgAhFCACQShqIAIoAqQBIgFBAUEBQbComwEQ3RVBACEGIAJBADYCiAIgAiACKQMoNwKAAiACQSBqQQFBBEEUQaCVgAEQ3RUgAkEANgKoAiACIAIoAiQiEzYCpAIgAiACKAIgNgKgAiACIAEgAigCoAEiB2o2AuABIAIgBzYC3AFBgYDEACEBIBQhCwNAIAJBgYDEADYC2AECQCABQYGAxABHDQAgJRDqDCEBCwJAAkACQCABQYCAxABGDQACQAJAIAFBgAFPDQBBASEHDAELAkAgAUGAEE8NAEECIQcMAQtBA0EEIAFBgIAESRshBwsgByALaiELQQAhBQJAAkAgAUF2ag4EBAEBAAELIAIoAtgBIQcgAkGBgMQANgLYAQJAAkACQCAHQYGAxABHDQACQCACKALcASIMIAIoAuABRw0AQYCAxAAhDAwDCyACIAxBAWo2AtwBIAwtAAAiB8BBf0oNASACIAxBAmo2AtwBIAwtAAFBP3EhESAHQR9xIRICQCAHQd8BSw0AIBJBBnQgEXIhBwwCCyACIAxBA2o2AtwBIBFBBnQgDC0AAkE/cXIhEQJAIAdB8AFPDQAgESASQQx0ciEHDAILIAIgDEEEajYC3AEgEUEGdCAMLQADQT9xciASQRJ0QYCA8ABxciEHC0GAgMQAIQwgB0GAgMQARg0BCyAHIQwgB0EKRg0DCyACIAw2AtgBCyACQYACaiABEKoUIARBf0YNAgJAIAIoAtgBIgFBgYDEAEcNACACICUQ6gwiATYC2AELIARBAWoiBCEFIAFBgIDEAEcNAwwCCyACKQKkAiE5IAIoAqACIQEgAigCgAIgAigChAIQvSIgAigCnAEgAigCoAEQxSAgKyAsEJAdIAFBgICAgHhGDQggAiABNgK8ASACIDk3AsABIAJBADYC+AEgAkIANwLwASACIB42AuwBIAIgHTYC6AEgAiAeNgLkASACIB02AuABIAIgDzYC3AEgAiAKNgLYASACQYACaiACQdgBahDABCA5QiCIpyEFIDmnIRICQAJAIAIoAoACQYGAgIB4Rg0AIAJB6AJqIAJB2AFqEPgbQQEhBEEgIQcgAkEYaiACKALoAkEBaiIBQX8gARsiAUEEIAFBBEsbQQRBIEGAnZsBEN0VIAJBgAJqQQhqKQIAITkgAkGAAmpBEGopAgAhOiACQYACakEYaikCACE7IAIoAhghASACKAIcIgsgAikCgAI3AgAgC0EYaiA7NwIAIAtBEGogOjcCACALQQhqIDk3AgAgAkEBNgKUASACIAs2ApABIAIgATYCjAECQEEkRQ0AIAJB6AJqIAJB2AFqQST8CgAACwJAA0AgAkGgAmogAkHoAmoQwAQgAigCoAJBgYCAgHhGDQECQCAEIAIoAowBRw0AIAJBnAFqIAJB6AJqEPgbIAJBjAFqIAQgAigCnAFBAWoiAUF/IAEbQQRBIBDNGSACKAKQASELCyALIAdqIgEgAikCoAI3AgAgAUEYaiACQaACakEYaikCADcCACABQRBqIAJBoAJqQRBqKQIANwIAIAFBCGogAkGgAmpBCGopAgA3AgAgAiAEQQFqIgQ2ApQBIAdBIGohBwwACwsgAkHIAWpBCGogAkGMAWpBCGooAgAiLDYCACACIAIpAowBNwPIASACKALMASERDAELQQAhLCACQQA2AtABIAJCgICAgMAANwPIAUEEIRELIBEgLEEFdGohFCASIAVBFGxqIS1BACErIBIhBANAAkACQCAEIC1GDQBBACETIBEhBwNAIAciASAURg0CIAFBEGooAgAhCyAEQRBqKAIAIQUCQCABQQxqKAIAIgwgBEEMaigCACIGSQ0AIAFBIGohByALIAxqIAUgBmpNDQELIAFBIGohByATIAYgBSAMIAsQ+hRqIRMMAAsLA0ACQAJAAkACQAJAAkACQAJAIBIgLUYNACArRQ0FQQAhDiACQQA2AqQBIAJCgICAgBA3ApwBIBJBEGoiDCgCACASQQxqIgYoAgAiLmohLyARICxBBXRqIQUgESEEA0ACQCAEIgEgBUcNAEEDIQEMBgsgAUEgaiEEIAYoAgAiCyAMKAIAIhMgAUEMaigCACIHIAFBEGooAgAiFBD6FEUNAAJAAkACQCAHIAtPDQACQCAUIAdqIhQgC0kNACAUIBMgC2pNDQMLIA5BAWohDgJAIAcgLk8NACAUIC9LDQILIAJBnAFqQSAQqhQMAwsgAiAYNgLoAiAgIAEpABQ3AAAgIEEIaiIEIAFBHGoiBy8AADsAACACQdgBaiACQegCahDDESACQZwBaiACKALcASILIAIoAuABEPMhIAIoAtgBIAsQvSIgAkHYAWogACgCABCpFCACQaACaiACKALcASILIAIoAuABQQAgKyAOayIFIAUgK0sbEJ8JIAIgAkGgAmo2AugCICAgASkAFDcAACAEIAcvAAA7AAAgAkGAAmogAkHoAmoQwhEgAkGcAWogAigChAIiBSACKAKIAhDzISACKAKAAiAFEL0iIAIoAqACIAIoAqQCEL0iIAIoAtgBIAsQvSIgAiAZNgLoAiAgIAEpABQ3AAAgBCAHLwAAOwAAIAJB2AFqIAJB6AJqEMMRIAJBnAFqIAIoAtwBIgEgAigC4AEQ8yEgAigC2AEgARC9IgwGCyACIBw2AugCICAgASkAFDcAACAgQQhqIAFBHGovAAA7AAAgAkHYAWogAkHoAmoQwxEgAkGcAWogAigC3AEiASACKALgARDzISACKALYASABEL0iDAELCyACQegCaiABEIgGIAIoAugCIgQgAigC7AIQxSAgAUEUaiEBIARBgICAgHhGDQEgAiAbNgLoAiAgIAEpAAA3AAAgIEEIaiABQQhqLwAAOwAAIAJB2AFqIAJB6AJqEMMRIAJBnAFqIAIoAtwBIgQgAigC4AEQ8yEgAigC2AEgBBC9IgwCCyACQcgBahCTFyACQbwBahCrFyAnICoQxSAgKSAoEJAdDA0LIAIgGjYC6AIgICABKQAANwAAICBBCGogAUEIai8AADsAACACQdgBaiACQegCahDDESACQZwBaiACKALcASIEIAIoAuABEPMhIAIoAtgBIAQQvSILIAJB2AFqIAAoAgAQqRQgAkGgAmogAigC3AEiBCACKALgAUEAICsgDmsiByAHICtLGxCfCSACIAJBoAJqNgLoAiAgIAEpAAA3AAAgIEEIaiIHIAFBCGoiCy8AADsAACACQYACaiACQegCahDCESACQZwBaiACKAKEAiIFIAIoAogCEPMhIAIoAoACIAUQvSIgAigCoAIgAigCpAIQvSIgAigC2AEgBBC9IiACIBk2AugCICAgASkAADcAACAHIAsvAAA7AAAgAkHYAWogAkHoAmoQwxEgAkGcAWogAigC3AEiASACKALgARDzISACKALYASABEL0iC0EBIQELIAIoAqABIQQCQAJAIAIoAqQBIgdBEEkNACAEIAcQ/QUhBAwBCyAEIAcQwxshBAsgAkGgAmpBqJubAUEBQQAgKyAEayIEIAQgK0sbIAFqEJ8JIAJBEzYC5AEgAkETNgLcASACQQI2AuwCIAJBlPWaATYC6AIgAkICNwL0AiACIAJBoAJqNgLgASACIAJBnAFqNgLYASACIAJB2AFqNgLwAiACQfQAaiACQegCahDbICEBIAIoAqACIAIoAqQCEL0iIAIoApwBIAIoAqABEL0iIAENAQsgEkEUaiEwIBIoAgghBCASKAIEIQEgAkEAOgCMAyACQQA2AogDIAIgJDYChAMgAiABIARqIgQ2AoADIAIgATYC/AIgAkEANgL4AiACQgA3AvACIAIgBDYC7AIgAiABNgLoAgJAA0AgAkHoAmoQ6gwiBEGAgMQARg0BICMQ6gwiAUGAgMQARg0BICIgARCbByEBAkAgBEEJRg0AIAJB9ABqIAQQqhQMAQsDQCABRQ0BIAJB9ABqQSAQqhQgAUF/aiEBDAALCwsgAkH0AGpBChCqFCACQQA2AuABIAJCgICAgMAANwLYASACQQA2AvACIAJCgICAgMAANwLoAgJAAkACQAJAICwNAEEEITFBACEyQQAhM0EEITRBACE1QQAhLAwBC0EEIQYDQAJAIBJBDGoiEygCACIEIBJBEGoiDigCACIFIBFBDGooAgAiByARQRBqKAIAIgwQ3hJFDQBBACELIAJB6AJqIQECQCAHIARJDQAgDCAHaiAFIARqSw0AQQEhCyACQdgBaiEBCwJAIAEoAggiBCABKAIARw0AIAFByImAAUG4iYABIAsbEOoXIAIoAtwBIQYLIAYgAigC7AIgCxsgBEECdGogETYCACABIARBAWo2AggLIBFBIGohESAsQX9qIiwNAAsgAigC0AEhLCACKALMASERIAIoAvACITUgAigC7AIhNCACKALoAiEzIAIoAtwBITEgAigC2AEhMiACKALgASIuRQ0AIAAgAkH0AGogKyATKAIAIA4oAgAgESAsQQAQ2wQNAkEAIQQgAkEANgLMAiACQoCAgIAQNwLEAiACQRBqIC5BBEEIQYCdmwEQ3RUgAkEANgLYAiACIAIoAhQiBzYC1AIgAiACKAIQIgs2AtACIC5BAnQhBUEAIQECQCAuIAtNDQAgAkHQAmpBACAuQQRBCBDNGSACKALUAiEHIAIoAtgCIQELIDEgBWohNiABIC5qITcgByABQQN0aiEFIDEhDANAIAwoAgAiASgCECELIAQgACgCuAEgEiABKAIMIgZBARDGCSIHIAQgB0sbIQcCQAJAIAEoAhANACAHQQFqIQsMAQsgB0EBaiIUIAAoArgBIBIgCyAGakEAEMYJIgsgFCALSxshCwsgAkGMAWogFygCABCpFCACQZADaiACKAKQASIvIAIoApQBIAsgB2pBAXYiBiAHaxCfCSAVIRQCQCABKAIQRQ0AIAJB2AFqIAEQiAYgAigC2AEiFCACKALcARDFICAXIBYgFEGAgICAeEYbIRQLIAIgFCgCADYCnAMgAkGAAmogFygCABCpFCACQZwBaiACKAKEAiIUIAIoAogCIAsgBkF/c2oQnwkgIUEAIAcgBGsiOCA4IAdLG0HIk4ABEKQVIAJBEzYChAMgAkEHNgL8AiACQRM2AvQCIAJBCTYC7AIgAkGU85sBNgLoAiACQQQ2AuwBIAJB2JOAATYC6AEgAkEENgLcASACQaiTgAE2AtgBIAJBBTYC5AEgAiACQZwBajYCgAMgAiACQZwDajYC+AIgAiACQZADajYC8AIgAiACQegCajYC4AEgAkHcAmogAkHYAWoQ8hYgAigCnAEgAigCoAEQvSIgAigCgAIgFBC9IiACKAKQAyAC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3AEhEQJAIB8gBkEFdGoiBigCACISQYGAgIB4Rg0AIAYoAhghKyAGKAIcIRcgEiAGKAIEEMUgICsgFxCQHQsgAiAUNgKEAyACIBE2AoADIAJBADoA/AIgAiAsNgL4AiACIAw2AvQCIAIgLTYC8AIgAiAuNgLsAiACIC82AugCIAJBgAFqIAJB6AJqQeyPgAEQjRIgBSALEJAdIAcgExDFIAwDC0Hcj4ABEMkiAAsgAiALNgKEAyACIAU2AoADIAIgEjoA/AIgAiAUNgL4AiACIAY2AvQCIAIgETYC8AIgAiATNgLsAiACIAc2AugCIAJBgAFqIAJB6AJqQYyQgAEQjRIMAQsgAiALNgKEAyACIAU2AoADIAIgEjoA/AIgAiAUNgL4AiACIAY2AvQCIAIgETYC8AIgAiATNgLsAiACIAc2AugCIAJBgAFqIAJB6AJqQfyPgAEQjRILIAFBGGohASAEQRhqIQQMAAsLIAIpAnghOSACKAJ0IQUMAgsgJyAqEMUgICkgKBCQHSACQawBahDfEiAKIAgQ6hwgCSAKEMgiCyACKAJ0IAIoAngQvSJBgICAgHghBQsgAEHAAWohBAsgAygCOCELIAJBCGogAygCPCIBQQRBKEGAnZsBEN0VIAJBADYC4AEgAiACKAIMNgLcASACIAIoAggiBzYC2AECQAJAIAEgB00NACACQdgBakEAIAFBBEEoEM0ZDAELIAENACACQcgAakEIaiACQdgBakEIaigCADYCACACIAIpAtgBNwNIAkACQCADKAIAQQJHDQBBACEBDAELIAMoAgwhByADKAIIIQELAkACQAJAIANBJGooAgBFDQAgAkHoAmogBCgCAEEIaiADQSBqKAIAKAIAEKwDAkACQCACKALoAkUNACACQaACakEIaiACQegCakEIaikCADcDACACIAIpAugCNwOgAgwBCyACQQA2AqACCyADQSRqKAIARQ0BIAJB6AJqIAQoAgBBCGogA0EgaigCACgCBBCsAwJAIAIoAugCRQ0AIAJB2AFqQQhqIAJB6AJqQQhqKQIANwMAIAIgAikC6AI3A9gBDAMLIAJBADYC2AEMAgsgAkEANgKgAgsgAkEANgLYAQsCQAJAAkACQCACKAKgAiILDQBBgICAgHghDAwBCyACQQA2AogCIAJCgICAgBA3AoACIAJB6IiAATYC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IAIoAhAREwACQCADKAIIRQ0AIAMoAgwiAiAETQ0GDAcLIABBADYCAAwZCyAAIAI2AgwgACAJNgIIIABBATYCACAAIAkgAWs2AgQMGAsgCSAVQcjygwEQ0SIAC0EAQQBB7OGDARDDEgALIAIgB0G84YMBEMMSAAsgAiAJQbjygwEQwxIACyAEQQFqIQILIAIhBCACIAVJDQALCyAAQQA2AgAMEAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIAIgCUG48oMBEMMSAAsgAiAHQbzhgwEQwxIAC0EAQQBB7OGDARDDEgALIAkgAkHI8oMBENEiAAsgACADKQIMNwIEIABBDGogA0EIakEMaigCADYCAAsgACACNgIADAkLIAkgASgCuAJLDQAgASgCCCILIAlJDQUgCyAJRg0EIAsgCWshDAJAAkAgASgCBCAJQQJ0aiINLQAAIgtB/wFGDQAgCyALQQJ2aiALQQNxQQBHakECaiELDAELIAEoAihBAmohCwsgCyAMTw0DAkACQCANIAtBAnRqKAIAIhVBf0wNAAJAIAtBAWoiCyAMTw0AIA0gC0ECdGooAgAhEAwCCyALIAxBzOGDARDDEgALIBVB/////wdxIRALIBAgASgCFCILTw0CIAQgASgCECAQQQJ0aigCACILSQ0BIAQgC2shEUEBIQgLIANBCGogByABKAIgIgsoAghBf2pBeHFqQQhqIAIoAggiDyACKAIMIg4gBCAFIAsoAhAREwACQAJAAkACQCADKAIIIgIOAwIBAAILIAFBLGohCiADKAIMIQIMAgsgACADKQIMNwIEIABBDGogA0EIakEMaigCADYCAAsgACACNgIADAgLAkACQAJAAkADQAJAAkACQAJAIAIiEiAFTw0AAkACQAJAAkAgEiAOTw0AAkAgCSABKAIIIhVJDQAgCSENDBMLIAogDyASai0AAGotAAAiAkECaiEGIAEoAgQhFiAJIQ0CQAJAAkACQANAAkACQAJAAkAgFiANQQJ0aigCACIJQf8BcUGCfmoOAgIAAQsgBiANaiIJIBVPDQQgFiAJQQJ0aigCACIJQQFGDQIMCwsgFSANQQJqIhNJDQQgCUECdkE/cSAJQQNxQQBHaiIUIBUgE2siCUsNBSAUQQJ0IQcgFiATQQJ0aiELQX8hDAJAAkACQANAIAdFDQUgDEEBaiEMIAIgCygCACIJQf8BcUYNASACIAlBCHZB/wFxRg0CIAIgCUEQdkH/AXFGDQMgC0EEaiELIAdBfGohByACIAlBGHZHDQALIBQgE2ogDEECdGpBA2oiAiAVSQ0MIAIgFUHI8YMBEMMSAAsgDEECdCAUIBNqaiICIBVJDQsgAiAVQfjxgwEQwxIACyAUIBNqIAxBAnRqQQFqIgIgFUkNCiACIBVB6PGDARDDEgALIBQgE2ogDEECdGpBAmoiAiAVSQ0JIAIgFUHY8YMBEMMSAAsgAiAJQQh2Qf8BcUYNBwsgDUEBaiIJIBVPDQQgFiAJQQJ0aigCACINIBVPDRcMAAsLIAkgFUGY8oMBEMMSAAsgEyAVQajxgwEQ0SIACyAUIAlBuPGDARC8IgALIAkgFUGo8oMBEMMSAAsgEiAOQYydgAEQwxIACyANQQJqIgIgFUkNACACIBVBiPKDARDDEgALIBYgAkECdGooAgAhCQsgCSABKAK0AksNAyAJRQ0AAkAgCSABKAK4AksNACAVIAlJDQYgFSAJRg0HIBUgCWshBwJAAkAgFiAJQQJ0aiILLQAAIgJB/wFGDQAgAiACQQJ2aiACQQNxQQBHakECaiECDAELIAEoAihBAmohAgsgAiAHTw0IAkACQCALIAJBAnRqKAIAIgxBf0wNAAJAIAJBAWoiAiAHTw0AIAsgAkECdGooAgAhEAwCCyACIAdBzOGDARDDEgALIAxB/////wdxIRALIBAgASgCFCICTw0JIBJBAWoiBCABKAIQIBBBAnRqKAIAIgJPDQMgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIANBCGogASgCHCABKAIgIgIoAghBf2pBeHFqQQhqIA8gDiASIAUgAigCEBETACADKAIIRQ0BIAMoAgwiAiASTQ0DDAQLIAAgEDYCDCAAIAQ2AgggACARNgIEIAAgCDYCAAwPCyAAQQA2AgAMDgsgBCACayERQQEhCCAEIQIMAQsgEkEBaiECDAALCyAJIBVByPKDARDRIgALQQBBAEHs4YMBEMMSAAsgAiAHQbzhgwEQwxIACyAQIAJBuPKDARDDEgALIANBADYCGCADQQE2AgwgA0HE5oMBNgIIIANCBDcCECADQQhqQczmgwEQqB0ACyAQIAtBuPKDARDDEgALIAsgDEG84YMBEMMSAAtBAEEAQezhgwEQwxIACyAJIAtByPKDARDRIgALIA0gFUGY8YMBEMMSAAsgACAONgIMIAAgEDYCCCAAIA82AgQgACAKNgIACyADQSBqJAALtT8DD38DfgJ8IwBBsANrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAgBBcGoOFAAIAQgCCAgICAgEBwYICAgICAgFCAsgA0HEAGpBAmogAkETai0AADoAACADIAIvABE7AUQgAigCDCEEIAIoAgghBSACKAIEIQYCQAJAAkAgAi0AECIHQQNLDQAgB0ECRw0BC0EALQDg9p0BGkHAABCEASIIRQ0UIAggBzoAECAIIAQ2AgwgCCAFNgIIIAggBjYCBCAIQRA2AgAgCCADLwFEOwARIAAgCDYCBCAAQQI2AgAgCEETaiADQcQAakECai0AADoAAAwBCyADQfAAaiABIAYQWAJAIAMoAnBBAUcNACADKwN4IRUCQAJAAkACQCAHDgQBAwACAAtBkqmbAUEoQYT1mgEQjBoACyAVmiEVDAELIBUQiBchFQsgAEEBNgIAIAAgFTkDCCADQfAAahCaFQwBCyADQegCaiADQfAAahDJBEEALQDg9p0BGkHAABCEASIIRQ0TIAggAykD6AI3AwAgCEE4aiADQegCakE4aikDADcDACAIQTBqIANB6AJqQTBqKQMANwMAIAhBKGogA0HoAmpBKGopAwA3AwAgCEEgaiADQegCakEgaikDADcDACAIQRhqIANB6AJqQRhqKQMANwMAIAhBEGogA0HoAmpBEGopAwA3AwAgCEEIaiADQegCakEIaikDADcDAEEALQDg9p0BGkHAABCEASIBRQ0TIAEgBzoAECABIAQ2AgwgASAFNgIIIAEgCDYCBCABQRA2AgAgACABNgIEIABBAjYCAAsgAigCAEFwaiIIQRNLDRdBASAIdEGVqCBxDRkgCEELRg0WDBcLIAIoAhAhCSACKAIMIQogAi0AFCEGIAIoAgghBCACKAIEIQUQ4h8hCCADQegCaiAFEEUgCEE4aiADQegCakE4aiILKQMANwMAIAhBMGogA0HoAmpBMGoiDCkDADcDACAIQShqIANB6AJqQShqIg0pAwA3AwAgCEEgaiADQegCakEgaiIOKQMANwMAIAhBGGogA0HoAmpBGGoiDykDADcDACAIQRBqIANB6AJqQRBqIhApAwA3AwAgCEEIaiADQegCakEIaiIRKQMANwMAIAggAykD6AI3AwAQ4h8hByADQegCaiAEEEUgB0E4aiALKQMANwMAIAdBMGogDCkDADcDACAHQShqIA0pAwA3AwAgB0EgaiAOKQMANwMAIAdBGGogDykDADcDACAHQRBqIBApAwA3AwAgB0EIaiARKQMANwMAIAcgAykD6AI3AwACQCAGQXhqQQtJDQAgBkEXRg0AQQAtAOD2nQEaQcAAEIQBIgFFDRIgASAGOgAUIAEgCTYCECABIAo2AgwgASAHNgIIIAEgCDYCBCABQRI2AgAgACABNgIEIABBAjYCACAFIAQQoh8MFQsgA0GAAWogASAFEFggA0GAAWpBEGoiCyABIAQQWCADIAY6AKABIAMoApABIQVBASEMAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMoAoABIgQOAgABKAsgBQ4CAQImCyAFDgICAyULIAZBC0YNEkEAIQUMJAsCQCAGQQtGDQBBASEFDCQLIAMgAykDiAE3A4ACIANB2AJqIAMrA5gBENINIANBAjYC7AIgA0GU9ZoBNgLoAiADQgI3AvQCIANB7AStQiCGIANB2AJqrYQ3A7gCIANB5wStQiCGIANBgAJqrYQ3A7ACIAMgA0GwAmo2AvACIANB6AFqIANB6AJqENENQQAhASADQegBahCYHyESIABBADYCACAAIBI3AwggAygC2AIgAygC3AIQvSIgAykDgAIQ8BsMEwsgBkELRg0BQQAhBQwiCyADKwOYASEVIAMrA4gBIRYgBkF4ag4QAgMEBQYHCAkKCwwBAQEBDQELIAMrA4gBIRUgAyADKQOYATcDgAIgA0HYAmogFRDSDSADQQI2AuwCIANBlPWaATYC6AIgA0ICNwL0AiADQecErUIghiADQYACaq2ENwO4AiADQewErUIghiADQdgCaq2ENwOwAiADIANBsAJqNgLwAiADQegBaiADQegCahDRDSADQegBahCYHyESIABBADYCACAAIBI3AwggAygC2AIgAygC3AIQvSIgAykDgAIQ8BsMDwtBkqmbAUEoQaT1mgEQjBoACyAWIBUQoA8hFQwLCyAWIBUQoQ8hFQwKCyAWIBUQog8hFQwJCyAWIBWgIRUMCAsgFiAVoSEVDAcLIBYgFaIhFQwGCyAWIBWjIRUMBQsgFiAVEIsHIRUMBAsgFiAVEOwPIRUMAwsgFiAVEO0PIRUMAgsgFiAVEO4PIRUMAQsgFiAVEKccIRULIABBATYCACAAIBU5AwhBACEBDAILIAMgAykDiAE3A4ACIAMgAykDmAE3A9gCIANBAjYC7AIgA0GU9ZoBNgLoAiADQgI3AvQCIANB5wStQiCGIhIgA0HYAmqthDcDuAIgAyASIANBgAJqrYQ3A7ACIAMgA0GwAmo2AvACIANB6AFqIANB6AJqENENIANB6AFqEJgfIRIgAEEANgIAIAAgEjcDCCADKQPYAhDwGyADKQOAAhDwGwtBASEBCyAIEOQBIAhBwABBCBC9EyAHEOQBIAdBwABBCBC9EyAEDQEMDgsgA0HIAGpBIGogAkEoaikDADcDACADQcgAakEYaiACQSBqKQMANwMAIANByABqQRBqIAJBGGopAwA3AwAgA0HIAGpBCGogAkEQaikDADcDACADIAIpAwgiEjcDSAJAIBKnIgZBAUcNACADQegCakEkaiACQQhqIghBIGopAgA3AgAgA0HoAmpBHGogCEEYaikCADcCACADQegCakEUaiAIQRBqKQIANwIAIANB6AJqQQxqIAhBCGopAgA3AgBBAC0A4PadARogAyAIKQIANwLsAkHAABCEASIIRQ0RIAhBFDYCACAIIAMpAugCNwIEIAhBDGogA0HwAmopAgA3AgAgCEEUaiADQfgCaikCADcCACAIQRxqIANBgANqKQIANwIAIAhBJGogA0GIA2opAgA3AgAgCEEsaiADQZADaigCADYCACAAQQI2AgAgACAINgIEDA0LIAEoAgQhECADKAJkIQsgAygCYCEMIAMoAmghBBDiHyEBIANB6AJqIAQQRSABQThqIANB6AJqQThqIgUpAwA3AwAgAUEwaiADQegCakEwaiIOKQMANwMAIAFBKGogA0HoAmpBKGopAwA3AwAgAUEgaiADQegCakEgaikDADcDACABQRhqIANB6AJqQRhqKQMANwMAIAFBEGogA0HoAmpBEGopAwA3AwAgAUEIaiADQegCakEIaikDADcDACABIAMpA+gCNwMAAkACQCAGDQAgAygCVCEHIAMoAlAhDSADKAJcIQggAygCWCEOAkAgAykDUCISQgODQgBSDQAgEqciBSAFKAIAIgVBAWo2AgAgBUF/TA0TCyADIAc2AugCIANBgAFqIQUMAQsgAygCVCEIIAMoAlAhDSADKAJMIQ8Q4h8hByADQegCaiAPEEUgB0E4aiAFKQMANwMAIAdBMGogDikDADcDACAHQShqIANB6AJqQShqKQMANwMAIAdBIGogA0HoAmpBIGopAwA3AwAgB0EYaiADQegCakEYaikDADcDACAHQRBqIANB6AJqQRBqKQMANwMAIAdBCGogA0HoAmpBCGopAwA3AwAgByADKQPoAjcDACADQegCaiEFCyAFIAg2AgBBAC0A4PadARogAygCgAEhBSADKALoAiEPQcAAEIQBIghFDRAgCCABNgIoIAggCzYCJCAIIAw2AiAgCCAFNgIcIAggDjYCGCAIIA82AhQgCCANNgIQIAggBzYCDCAIIAY2AgggCEEUNgIAAkACQCAGDgMACgEAC0EBIQFBACEHIAMpA1AhEgwLCwJAAkAgAygCTCIMKAIAQRtHDQAgDCgCCEUNAQsgACAINgIEIABBAjYCACAMEOQBIAxBwABBCBC9E0EAIQFBASEHDAwLIANB+AJqIAxBIGopAwA3AwAgA0HoAmpBCGogDEEYaikDADcDACADIAwpAxA3A+gCIANBEGogA0HoAmoQkxMgAygCECENAkACQCADKAIUIg5FDQAgDSAOaiELIA0hAQNAIAFBAWohBwJAAkAgASwAACIFQX9MDQAgByEBDAELAkACQCAFQWBJDQACQCAFQW1HDQAgByALRg0FIAFBAmogC0YNBSABLQABQZ8BSw0CIAFBA2ohAQwDCyAHIAFBAmogByALRhsiASABIAtHaiEBIAVBcEkNAiABIAEgC0dqIQEMAgsgByABQQJqIAcgC0YbIQEMAQsgA0EIaiADQegCahCTEyADQYABaiADKAIIIAMoAgwQuAggA0GAAWoQ0B0hEgwDCyABIAtHDQALCyANIA4Q+RchEgsgA0HoAmoQqhECQCAMKAIAQRtHDQAgDEEIaiIBKAIARQ0KIAEQrAkMCgsgDBDkAQwJCyADQYABahCaFQwMCyADQSBqIAJBCGoi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CDYChAEgA0ECNgKAASADQYABahCaFQwCCyADQYABahCaFQsgAEEIaiADQYABakEIaikDADcDACADIAg2AoQBIANBAjYCgAEgACADKQOAATcDAAsCQCAUQgBSDQAgE6ciCCAIKAIAIgBBf2o2AgAgAEEBRw0AIAggCCgCEBDpHQsgA0HoAmoQ6RECQCAEKAIAQRpGDQAgBBDkAQsgBEHAAEEIEL0TDAELAkACQCAEKAIAQRpGDQAgBBDkAQwBCyAEKQMIIhJCA4NCAFINACASpyIIIAgoAgAiAEF/ajYCACAAQQFHDQAgCCAIKAIQEOkdCyADKAJoQcAAQQgQvRMCQAJAAkAgBg4DAQACAQsgA0HIAGoQgBAMAgsgB0UNASADKQNQIhJCA4NCAFINASASpyIIIAgoAgAiAEF/ajYCACAAQQFHDQEgCCAIKAIQEOkdDAELIAFFDQAgAygCTCIIEOQBIAhBwABBCBC9EwsgAigCAEFwaiIIQRNLDQhBASAIdEGVqCBxDQogCEELRg0HDAgLIAENBQwECyADQegCaiADQYABahDJBEEALQDg9p0BGkHAABCEASIBRQ0BIAEgAykD6AI3AwAgAUE4aiADQegCakE4aikDADcDACABQTBqIANB6AJqQTBqKQMANwMAIAFBKGogA0HoAmpBKGopAwA3AwAgAUEgaiADQegCakEgaikDADcDACABQRhqIANB6AJqQRhqKQMANwMAIAFBEGogA0HoAmpBEGopAwA3AwAgAUEIaiADQegCakEIaikDADcDACAIEOQBIAhBwABBCBC9EyAEQQFLIQwgASEICwJAAkAgBUEBTQ0AIAchBAwBCyADQegCaiALEMkEQQAtAOD2nQEaQcAAEIQBIgRFDQEgBCADKQPoAjcDACAEQThqIANB6AJqQThqKQMANwMAIARBMGogA0HoAmpBMGopAwA3AwAgBEEoaiADQegCakEoaikDADcDACAEQSBqIANB6AJqQSBqKQMANwMAIARBGGogA0HoAmpBGGopAwA3AwAgBEEQaiADQegCakEQaikDADcDACAEQQhqIANB6AJqQQhqKQMANwMAIAcQ5AEgB0HAAEEIEL0TC0EALQDg9p0BGkHAABCEASIBRQ0AIAEgBjoAFCABIAk2AhAgASAKNgIMIAEgBDYCCCABIAg2AgQgAUESNgIA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IANB0AVqENQgQQEhDiAMQYGAgIB4Rg0BCyADQbgDaiABEKgUAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMoArgDIhRBgICAgHhHIhBFDQAgA0H4AGpBCGogA0G4A2pBCGooAgA2AgAgAyADKQK4AzcDeAwBCwJAIAEQmSMiDg0AQdyXgAFBIxACIQUMAwsgA0HwAWogARAYIhIQqBQgAygC8AFBgICAgHhGDQEgA0H4AGpBCGogA0HwAWpBCGooAgA2AgAgAyADKQLwATcDeCABEMEhIBIQwSELQQhBBBCPHiIOQgA3AgBBBEEEEI8eIhJBADYCACADQYQBakEYakEAKQOY/5wBIiM3AgAgA0EAOgCEASADQoGAgIDw/79/NwKwASADIBI2AqwBIANBATYCqAEgA0EAOgCkASADQQE2ApABIAMgDjYCjAEgA0EBNgKIASADQQApA5D/nAEiJDcClAFBACgCgPadASEcQQAgA0GEAWo2AoD2nQFBjAEQwiEiDkEANgJ0IA5CgICAgMAANwJsIA5BADoAaCAOQcy7mAE2AmQgDkKAgICAEDcCXCAOQoCAgIDAADcCVCAOQQs2AgggDkKCgICAEDcCACAOQQE2AogBIA4gJDcCeCAOQYABaiAjNwIAIAMgDjYC3AFBAUUNAiADQeABakEIaiADQfgAakEIaigCADYCACADIAMpA3g3A+ABQRgQxyIiEkUNAiASQQA2AhQgEkKAgICAwAA3AgwgEkEAOgAIIBJCgYCAgBA3AgACQAJAQQAtAIDynQEOBAAABQEAC0EAQQI6AIDynQFBAC0A4PadARpBgAgQhAEiE0UNA0EAQQM6AIDynQFBACATNgL48Z0BCyADQbgDahDLCSADQaQEaiITEPgNIANCgYCAgMAANwLsBCADQcAGakEBQQAQ+RQgA0HYBmpBAUEAEPkUIANBxAVqQQFBABD5FCADQdAFahDLCSADKQLgBSEjIAMpAoAGISQgAykCiAYhJSADKQKQBiEmIANB+ARqEPgNIANBuANqEJIgIANBiARqIANBwAZqQQhqKAIANgIAIANBlARqIANB2AZqQQhqKAIANgIAIANBoARqIANBxAVqQQhqKAIANgIAIAMgJjcC+AMgAyAlNwLwAyADICQ3AugDIANCoICAgIAENwLgAyADQqCAgICABDcC2AMgA0KggICAgAQ3AtADIAMgIzcCyAMgA0KggICAgAQ3AsADIANCoICAgIAENwK4AyADIAMpAsAGNwKABCADIAMpAtgGNwKMBCADIAMpAsQFNwKYBAJAQcgARQ0AIBMgA0H4BGpByAD8CgAACwJAQbwBRQ0AIANB8AFqIANBuANqQbwB/AoAAAsgAyAONgKwAyADIBI2AqwDIANB0AVqELEeIBIgEigCACIOQQFqNgIAIA5Bf0wNAiADKQLwASEjIAMpAvgBISQgAykCgAIhJSADKQKIAiEmIAMpApACIScgAykCmAIhKCADKQKgAiEpIAMpAqgCISogAykCsAIhKyADQYAEaiADKAK8AiADKALAAhCsFCADQYwEaiADKALIAiADKALMAhCsFCADQZgEaiADKALUAiADKALYAhCsFCADICs3AvgDIAMgKjcC8AMgAyApNwLoAyADICg3AuADIAMgJzcC2AMgAyAmNwLQAyADICU3AsgDIAMgJDcCwAMgAyAjNwK4AyADKALgAiEOIANB0AVqIAMoAuQCIhNBAUEKEKkNIAMoAtQFIR0gAygC0AVBAUYNBCADKALYBSEeAkAgE0EKbCIRRQ0AIB4gDiAR/AoAAAsCQEHsAEUNACADQdAFaiADQbgDakHsAPwKAAALIAMoArADIhEgESgCACIOQQFqNgIAIA5Bf0wNAiADKAKoAyEfIAMoAqQDISACQEHsAEUiIQ0AIANBuANqIANB0AVqQewA/AoAAAsgA0GaA2ohGSADQZADaiEaIANBhgNqIQ8gA0H8AmohFyADQfICaiEYIANB6AJqISJBxAEQwiEhDgJAICENACAOIANBuANqQewA/AoAAAsgDiATNgJ0IA4gHjYCcCAOIB02AmwgDiAiKQIANwJ4IA5BgAFqICJBCGovAQA7AQAgDiAYKQEANwGCASAOQYoBaiAYQQhqLwEAOwEAIA4gFykCADcCjAEgDkGUAWogF0EIai8BADsBACAOIA8pAQA3AZYBIA5BngFqIA9BCGovAQA7AQAgDiAgNgK0ASAOIB82ArgBIA4gEjYCvAEgDiARNgLAASAOQagBaiAaQQhqLwEAOwEAIA4gGikCADcCoAEgDiAZKQEANwGqASAOQbIBaiAZQQhqLwEAOwEAIANBwAZqQQtqQQApA5j/nAEiIzcAACADQfgEakELaiAjNwAAIANB0AVqQQtqICM3AAAgA0EBOgCWBCADQQA2AJcEIANBADoAvAMgA0EANgK4AyADIA42AsADIANB7JWAATYCxAMgA0GAAjsBlAQgA0EAOgDIAyADQQA6ANgDIANBADYC1AMgA0KAgICAwAA3AswDIANBACkDkP+cASIjNwDDBiADICM3APsEIAMgIzcA0wUgA0HoA2ogA0HABmpBD2ooAAA2AAAgA0HhA2ogA0HABmpBCGoiEikAADcAACADIAMpAMAGNwDZAyADQQA6AOwDIANB/ANqIANB+ARqQQ9qKAAANgAAIANB9QNqIANB+ARqQQhqIhMpAAA3AAAgAyADKQD4BDcA7QMgA0EAOgCABCADQZAEaiADQdAFakEPaigAADYAACADQYkEaiADQdAFakEIaiIOKQAANwAAIAMgAykA0AU3AIEEIA4gA0HgAWpBCGooAgA2AgAgAyAVOwDrBSADQe0FaiAVQRB2OgAAIAMgBToA9gUgAyAIOgD1BSADIAk6APQFIAMgCjoA8wUgAyAHNgDvBSADIAY6AO4FIAMgFjsA6QUgAyALOgDoBSADIBs2AuQFIAMgDTYC4AUgAyAMNgLcBSADIAMpA+ABNwPQBSADIANBuANqNgL8BSADIANB3AFqNgL4BUEAKAL89Z0BIQ5BACADQbgDajYC/PWdASADQcAGaiADKALcASADQbgDaiADQdAFaiADQdAFakEMahA/AkACQCADKALABkGAgICAeEcNACADQfgEahDZHyADQdgGakEIaiIMIANB+ARqQQxqKQIANwMAIANB2AZqQRBqIgUgA0GMBWooAgA2AgAgAyADKQL8BDcD2AYgAygC+AQhBkEsEMIhIg0gBjYCBCANQeiKgAE2AgAgDSADKQPYBjcCCCANQRBqIAwpAwA3AgAgDUEYaiAFKAIANgIAIA0gAykCxAY3AhwgDUEkaiADQcAGakEMaikCADcCACADIA02AvwEIANBgICAgHg2AvgEDAELIANB+ARqQRBqIANBwAZqQRBqKQIANwMAIBMgEikCADcDACADIAMpAsAGNwP4BAtB8MWYASAOEPQeAkACQCADKAK4Aw0AIAMoAvwEIQkgAygC+AQiCkGAgICAeEYNByADKQOIBSEkIAMpA4AFISMMAQsgAygCrAMiDUEIahCOFEEAOgAAIA0pAhAhIyANQgQ3AhAgDSgCDCEJIA1BADYCDEGAgICAeCEKAkACQCADKAL4BEGAgICAeEYNACADQfgEahDXHwwBCyADKAL8BCINIA0oAgAoAgARAwALCwJAIAMoArgDDQAgA0G4A2pBEGoiFRCuBCADKALUAyELIANBADYC1AMgAygC0AMiDUHQAGohBUGwfyANayEGIAtB0ABsIgxBsH9qIQ4gDSAMaiEbAkADQCAOQbB/Rg0BAkAgDSgCACIIQQNGDQACQEHMAEUiBw0AIANB0AVqIA1BBGpBzAD8CgAAC0HQAEEEEI8eIgwgCDYCAAJAIAcNACAMQQRqIANB0AVqQcwA/AoAAAsgDUHQAGohDSADQQE6AIAFIAMgDDYC/AQgAyADQbgDajYC+AQgA0H4BGoQxgIgA0H4BGoQjxQgAygC/AQiDBDcGSAMQdAAQQQQvRMgBUHQAGohBSAGQbB/aiEGIA5BsH9qIQ4MAQsLIBsgBUYNACAOQdAAbiENQQAgBmshDgNAIA1FDQEgDUF/aiENIA4Q3BkgDkHQAGohDgwACwsgCw0HIBUQzA0LIAMoAsADIQ4CQCADKALEAyINKAIAIgxFDQAgDiAMEQMACwJAIA0oAgQiDEUNACAOIA0oAgggDBDRIAsgA0HsA2ohBSADQdgDaiEGIAMoAtQDIQ4gAygC0AMhDQJAA0AgDkUNASANQRRqKAIAIgwgDUEYaigCABDrHCANQRBqKAIAIAwQyyICQCANKAIAQQJGDQAgDUEEaigCACANQQhqKAIAEL0iCyANQRxqKAIAIA1BIGooAgAQzCIgDUEsaigCACIMIA1BMGooAgAQ7BwgDUEoaigCACAMEM0iIA1BOGooAgAiDCANQTxqKAIAEK0XIA1BNGooAgAgDBDOIiANQcQAaiIMKAIAIA1ByABqKAIAEKINIA1BwABqKAIAIAwoAgAQzyIgDkF/aiEOIA1B0ABqIQ0MAAsLIAMoAswDIAMoAtADQQRB0AAQvxIgBhDCCyAFEMILAkAgAygCiAQiDUUNACADKAKEBCEOIANB0AVqQRBBECANQQFqEI0QIA4gAygC2AVrIAMoAtAFIAMoAtQFENEgCyADQfABahD6GyADQdwBahDjHUH4xZgBIBwQ9B4gAygCiAEgAygCjAFBBEEIEL8SAkAgAygCmAEiDUUNACADQfABakEMIA1BAWoQ+RAgAygClAEgAygC+AFrIAMoAvABIAMoAvQBENEgCyADKAKoASADKAKsAUEEQQQQvxICQCAKQYCAgIB4Rw0AIAMgCTYC8AEgAyAjNwL0ASAjQv////8PWA0IIANBADYCuAMgI6ciDSgCOCEOIA0oAjQhCiANKAIYIQsgDSgCECEJIA0oAgghByANKAIAIQggDSgCUCEGIA0oAkQhDBAZIQUCQAJAIA5BgICAgHhGDQAgA0HAAGogA0G4A2ogBUGdpZgBQQQgDUE4ahDUECADKAJAQQFxRQ0AIAMoAkQhDQwBCyAFQYD7mQFBByANQSRqKAIAIA1BKGooAgAQwhsCQCAMQYCAgIB4Rg0AIANBOGogA0G4A2ogBUG0mIABQQcgDUHEAGoQ1BAgAygCOEEBcUUNACADKAI8IQ0MAQsCQCAGQYCAgIB4Rg0AIANBMGogA0G4A2ogBUHtgoABQQggDUHQAGoQ1BAgAygCMEEBcUUNACADKAI0IQ0MAQsCQCAIRQ0AIANBKGogA0G4A2ogBUG7mIABQQkgDSgCACANQQRqKAIAEMUQIAMoAihBAXFFDQAgAygCLCENDAELAkAgB0UNACADQSBqIANBuANqIAVBxJiAAUELIA0oAgggDUEMaigCABDFECADKAIgQQFxRQ0AIAMoAiQhDQwBCwJAIAlFDQAgA0EYaiADQbgDaiAFQc+YgAFBByANKAIQIA1BFGooAgAQxRAgAygCGEEBcUUNACADKAIcIQ0MAQsCQCALRQ0AIANBEGogA0G4A2ogBUHWmIABQQkgDSgCGCANQRxqKAIAEMUQIAMoAhBBAXFFDQAgAygCFCENDAELIApFDQogCkEobCEJIA0oAjAhCxAaIQpBACEMQQAhBgJAAkADQCAJIAxGDQEgCyAMaiINQRhqIgcoAgAhCBAZIg5BgPuZAUEHIA1BBGooAgAgDUEIaigCABDCGwJAIAhBgICAgHhGDQAgA0EIaiADQbgDaiAOQbSYgAFBByAHENQQIAMoAghBAXENAwsgDkHtgoABQQggDUEQaigCACANQRRqKAIAEMIbIAMgDUEkaigCAEEAEOgcIAMoAgQhDSAOQdSSmwFBBBCrBSANEBIgCiAGIA4QGyAMQShqIQwgBkEBaiEGDAALCyAFQdSHmgFBCBCrBSAKEBIMCwsgAygCDCENIA4QwSEgChDBIQsgBRDBIUEBIQwMCgsgAyAkNwKAAiADIAk2AvQBIAMgCjYC8AEgAyAjNwL4AUEAIQ4gA0EANgK4AxAZIgxBnaWYAUEEIAkgI6cQwhsgA0HIAGogA0G4A2ogDEHnkpsBQQMgA0H8AWoQ1BACQAJAIAMoAkhBAXEiBQ0AIAwhDQwBCyADKAJMIQ0gDBDBIQsgA0HwAWoQ1x8gBQ0KDAsLQf+XgAFBIxACIQUgARDBISASEMEhCyAMIA0QxSAgDkEBcyEQIAUhDQwICwALIANBADYCgAIgA0EBNgL0ASADQdCumAE2AvABIANCBDcC+AEgA0HwAWpB6KeYARCoHQALIB0gAygC2AVBuOSbARDYIAALIAMgCTYC0AVBhJaAAUE1IANB0AVqQdiJgAFBvJaAARDqEAALIANBADYCiAUgA0EBNgL8BCADQfC5mAE2AvgEIANCBDcCgAUgA0H4BGpB+LmYARCoHQALQQBBAEGkmIABEMMSAAtBACEMIAUhDQsgA0HwAWoQugtBASEOIAxFDQELQQEhDiAEQQFGDQEMBAsgBEEBRg0BDAILIAIQwSEMAgsgAhDBIQsgFEGAgICAeEYNAgwBCyAQRQ0BCyABEMEhCyAAIA02AgQgACAONgIAIANB8AZqJAALkz4CEn8EfiMAQaADayIEJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIODAcACAECCwMEBQYPEAcLIARBrAFqIAEoAgAiASADQQRqKAIAIANBCGooAgAQ5wcgBBCYFDYCxAEgBEEANgKsASABIARBrAFqEK4PDCMLIARB2ABqQRBqIANBEGopAgA3AwAgBEHYAGpBCGogA0EIaikCADcDACAEIAMpAgA3A1ggASgCACIDLAAWIQUgAy0AFSEGIAMtABQhAiADLQASIQcgAy0AF0UNH0EBIQggBUEASA0gIAJB/wFxQQJGIAJyQQFxDR8MIAsgASgCACIBLQAUIgJBAkYgAnIhBSABLQAVIQcgAS0AESEGQQEhAgJAAkACQAJAAkACQAJAAkAgAy0AGA4MDgAPAQIDBAUEBQYHDgtBIEEIIAdBAXEbQQIgBkEBcRshAgwOC0ECIQIMDQtBgAJBwAAgBUEBcRshAgwMC0GABEGAASAFQQFxGyECDAsLQYAgQYAIIAVBAXEbIQIMCgtBgMAAQYAQIAVBAXEbIQIMCQtBgIAEQYCAASAFQQFxGyECDAgLQYCACEGAgAIgBUEBcRshAgwHCyABKAIAIgUtABQiAkECRg0JIAJBAXENCSAEQawBaiABIAMQsAcgBEGIA2oiAyAEQawBakEMaikCADcDACAEIAQpArABNwOAAyAEKAKsASIBQYCAgIB4Rg0IIAAgBCkCwAE3AhQgAEEkaiAEQawBakEkaigCADYCACAAQRxqIARBrAFqQRxqKQIANwIAIABBDGogAykDADcCACAAIAQpA4ADNwIEIAAgATYCAAwhCyABKAIAIgItABQiBUECRg0JIAVBAXENCSAEQawBaiACEKUQIAQoAqwBQRBGDRIgBEGAA2pBGGogBEGsAWpBGGooAgA2AgAgBEGAA2pBEGogBEGsAWpBEGopAgA3AwAgBEGAA2pBCGogBEGsAWpBCGopAgA3AwAgBCAEKQKsATcDgAMgBEHoAmogBEGAA2oQ9xEgBEGsAWogASADQdgAaiADLQBwIARB6AJqEIARIAQoAqwBIgNBgICAgHhGDRQCQEEkRQ0AIABBBGogBEGsAWpBBGpBJPwKAAALIAAgAzYCACAEKALoAiAEKALsAkEBQQIQ0BIMIAsgBEGsAWogASgCACICEKUQIAQoAqwBQRBGDQsgBEGAA2pBGGoiASAEQawBakEYaiIFKAIANgIAIARBgANqQRBqIARBrAFqQRBqKQIANwMAIARBgANqQQhqIgcgBEGsAWpBCGoiBikCADcDACAEIAQpAqwBNwOAAyAEQdQBaiAEQYADahD8CSAEQawBaiACEKUQIAQoAqwBQRBGDQwgASAFKAIANgIAIARBgANqQRBqIARBrAFqQRBqKQIANwMAIAcgBikCADcDACAEIAQpAqwBIhY3A4ADIBanQQtHDQ0gBEGAA2oQnhRBASEHQQEhBQJAAkACQAJAAkAgAygCACIGQX1qIgFBAyABQQNJGyIBDgQdAgEAHQsgAygCBCIBIQUgBg4DHAIDHAtBACEHQQEhAQwaC0EAIQELQQAhBwwYCyADKAIIIQUMGAsgBEGsAWogASgCACICEKUQIAQoAqwBQRBGDQ0gBEGAA2pBGGoiASAEQawBakEYaiIFKAIANgIAIARBgANqQRBqIARBrAFqQRBqKQIANwMAIARBgANqQQhqIgcgBEGsAWpBCGoiBikCADcDACAEIAQpAqwBNwOAAyAEQfABaiAEQYADahD8CSAEQawBaiACEKUQIAQoAqwBQRBGDQ4gASAFKAIANgIAIARBgANqQRBqIARBrAFqQRBqKQIANwMAIAcgBikCADcDACAEIAQpAqwBIhY3A4ADIBanQQxHDQ8gBEGMAmpBBGoiASAEQYADakEIai8BADsBACAEIAQoAoQDNgKMAiAEQYADahCeFCACQRRqIAEvAQA7AAAgAiAEKAKMAjYAEAJAAkACQAJAAkAgAygCAEGAgICAeHMiAUEBIAFBA0kbDgMCAAECCyADKAIkIQcgBEGsAWogA0EEaigCACADQQhqKAIAEKwUIARBCGogBEGsAWpBwI+YARDyESAEKAIMIQYgBCgCCCEIDAILIAQoAogCIQMgBCgChAIhASAEKAKAAiEGIAQoAvwBIQggBCgC+AEhByAEKAL0ASEFIAQoAvABIQkMAgsgAygCBCEHQQAhCAtBAC0A4PadARpBHBCEASIFRQ0ZIAUgBCkC8AE3AgAgBUEYaiAEQfABakEYaigCACIDNgIAIAVBEGogBEHwAWpBEGopAgA3AgAgBUEIaiAEQfABakEIaikCADcCACADKAIsIQkgAygCECEKIAMoAhQhCxDaHyIBIAMoAhwiDDYCHCABIAMoAhgiDTYCGCABIAMpAhA3AhAgASADKAIMIg42AgwgASADKAIIIg82AgggASADKAIEIhA2AgQgASADKAIAIhE2AgAgAy0AMCESIAMoAighEyADKAIkIRQgAygCICEVQQAtAOD2nQEaQTQQhAEiA0UNGSADQQA7ADEgAyASOgAwIAMgEzYCKCADIBQ2AiQgAyAVNgIgIAMgDDYCHCADIA02AhggAyAKNgIQIAMgDjYCDCADIA82AgggAyAQNgIEIAMgETYCACADIAlBAWoiCUF/IAkbNgIsIAMgC0EBaiIJQX8gCRs2AhQgAUE0QQQQvRNBBSEJCyAEIAM2AsQBIAQgATYCwAEgBCAGNgK8ASAEIAg2ArgBIAQgBzYCtAEgBCAFNgKwASAEIAk2AqwBIAIgBEGsAWoQrg8MHQsgBBCYFDYCxAEgBEEANgKsASABKAIAIARBrAFqEK4PDBwLIARBrAFqIAEgAxCLDSAEKQKwASEWIAQoAqwBIgNBgICAgHhGDRMgACAEKQK4ATcCDCAAQSRqIARBrAFqQSRqKAIANgIAIABBHGogBEGsAWpBHGopAgA3AgAgAEEUaiAEQawBakEUaikCADcCACAAIBY3AgQgACADNgIADBwLQRBBBCAHQQFxG0EBIAZBAXEbIQILIAQgAhCZFDYCxAEgBCACNgKwASAEQQM2AqwBIAEgBEGsAWoQrg8MGQsgBEGsAWogASADEOkBIARBiANqIgMgBEGsAWpBDGopAgA3AwAgBCAEKQKwATcDgAMCQCAEKAKsASICQYCAgIB4Rg0AIAAgBCkCwAE3AhQgAEEkaiAEQawBakEkaigCADYCACAAQRxqIARBrAFqQRxqKQIANwIAIABBDGogAykDADcCACAAIAQpA4ADNwIEIAAgAjYCAAwaCyAEQZgBakEMaiADKQMANwIAIAQgBCkDgAM3ApwBIARBADYCmAEgBEGsAWogBEGYAWoQ+AggASgCACAEQawBahCuDwwYCyAEQYQBakEMaiADKQMANwIAIAQgBCkDgAM3AogBIARBATYChAEgBEGsAWogBEGEAWoQ+AggBSAEQawBahCuDwwXCyAEQawBaiABIAMQ9QcgBEGIA2oiAyAEQawBakEMaikCADcDACAEIAQpArABNwOAAwJAIAQoAqwBIgFBgICAgHhGDQAgACAEKQLAATcCFCAAQSRqIARBrAFqQSRqKAIANgIAIABBHGogBEGsAWpBHGopAgA3AgAgAEEMaiADKQMANwIAIAAgBCkDgAM3AgQgACABNgIADBgLIARB8ABqQQxqIAMpAwA3AgAgBCAEKQOAAzcCdCAEQQA2AnAgBEGsAWogBEHwAGoQ+AggBSAEQawBahCuDwwWCyAEQawBaiACEKUQIAQoAqwBQRBGDQkgBEGAA2pBGGogBEGsAWpBGGooAgA2AgAgBEGAA2pBEGogBEGsAWpBEGopAgA3AwAgBEGAA2pBCGogBEGsAWpBCGopAgA3AwAgBCAEKQKsATcDgAMgBEHoAmogBEGAA2oQ+BEgBEGsAWogAiADLQBwIARB6AJqENQdAkAgBCgCrAEiA0GAgICAeEYNAAJAQSRFDQAgAEEEaiAEQawBakEEakEk/AoAAAsgACADNgIAIAQoAugCIAQoAuwCQQRBCBDQEgwXCyAEQYwDaiAEQegCakEIaikCADcCACAEIAQpAugCNwKEAyAEQQA2AoADIARBrAFqIARBgANqEPgIIAIgBEGsAWoQrg8MFQsgBEEANgLEAiAEQoCAgIDAADcCvAIgASgCACEKIARBjANqIQ5BBCEJIARBgANqQQRqIQEgBEGsAWpBBGohAkEYIQZBACEHAkADQCAEQawBaiAKEKUQIAQoAqwBIgNBEEYNASABIAIpAgA3AgAgAUEQaiACQRBqKQIANwIAIAFBCGoiCCACQQhqKQIANwIAIAQgAzYCgAMCQAJAAkACQAJAAkACQAJAAkACQEEAIANBeWoiBSAFIANLGw4JBwABAgMEBQkGBwsgBEHoAmpBCGogCCgCADYCACAEIAEpAgA3A+gCIARBEGogBEHoAmpB9MWFARDyEQJAIAQoAhQiCEUNAEEBIQMgBCgCECILIAgQrw8hDAwIC0EAIQMQmBQhDAwHCyAEQQE2ArABIARB3LyFATYCrAEgBEIANwK4ASAEIARB1AJqNgK0ASAEQawBakHkvIUBEKgdAAsgBEEBNgKwASAEQcS9hQE2AqwBIARCADcCuAEgBCAEQdQCajYCtAEgBEGsAWpBzL2FARCoHQALIARBATYCsAEgBEGsvoUBNgKsASAEQgA3ArgBIAQgBEHUAmo2ArQBIARBrAFqQbS+hQEQqB0ACyAEQQE2ArABIARBkL+FATYCrAEgBEIANwK4ASAEIARB1AJqNgK0ASAEQawBakGYv4UBEKgdAAsgBEEBNgKwASAEQfy/hQE2AqwBIARCADcCuAEgBCAEQdQCajYCtAEgBEGsAWpBhMCFARCoHQALIARBATYCsAEgBEHswIUBNgKsASAEQgA3ArgBIAQgBEHUAmo2ArQBIARBrAFqQfTAhQEQqB0ACyAEQdgAakEIaiAOQQhqKAIANgIAIAQgDikCADcDWCADQQhGDQMgBCgCiAMhCCAEKAKEAyELIAQoApgDIQwLIARByAJqQQhqIg0gBEHYAGpBCGooAgA2AgAgBCAEKQNYNwPIAiAEQawBaiAKEKUQIAQoAqwBQRBGDQ0gBEGAA2pBGGogBEGsAWpBGGooAgA2AgAgBEGAA2pBEGogBEGsAWpBEGopAgA3AwAgBEGAA2pBCGogBEGsAWpBCGopAgA3AwAgBCAEKQKsASIWNwOAAyAWp0EPRw0OIARBgANqEJ4UAkAgByAEKAK8AkcNACAEQbwCakG0s4UBEIIYIAQoAsACIQkLIAkgBmoiBUFwaiAINgIAIAVBbGogCzYCACAFQWhqIAM2AgAgBUF0aiIDIAQpA8gCNwIAIANBCGogDSgCADYCACAFIAw2AgAgBCAHQQFqIgc2AsQCIAZBHGohBgwBCwsgBEGAA2oQnhQLAkAgB0ECSQ0AIAdBAXYhCSAHQRxsIAQoAsACIgdqQWRqIQZBACEIA0BBACEDA0AgByADaiIBKAAAIQIgASAGIANqIgUoAAA2AAAgBSACNgAAIANBBGoiA0EcRw0ACyAHQRxqIQcgBkFkaiEGIAhBAWoiCCAJRw0ACwsgBEGsAWogBEG8AmoQhQEgCiAEQawBahCuDwwUCyAEQQA2ApwCIARCgICAgMAANwKUAiABKAIAIQogBEGgAmpBDGohCCAEQYADakEMaiEMQQQhByAEQYADakEEaiEBIARBrAFqQQRqIQJBACEFA0AgBEGsAWogChClEAJAAkAgBCgCrAEiA0EQRg0AIAEgAikCADcCACABQRBqIAJBEGopAgA3AgAgAUEIaiIJIAJBCGopAgA3AgAgBCADNgKAAwJAAkACQAJAAkACQAJAAkACQAJAQQAgA0F5aiIGIAYgA0sbDgkHAAECAwQJBQYHCyAEQegCakEIaiAJKAIANgIAIAQgASkCADcD6AIgBEEYaiAEQegCakH0xYUBEPIRAkAgBCgCHCIGRQ0AQQEhAyAEKAIYIgkgBhCvDyELDAgLQQAhAxCYFCELDAcLIARBATYCsAEgBEHYt4UBNgKsASAEQgA3ArgBIAQgBEHUAmo2ArQBIARBrAFqQeC3hQEQqB0ACyAEQQE2ArABIARBxLiFATYCrAEgBEIANwK4ASAEIARB1AJqNgK0ASAEQawBakHMuIUBEKgdAAsgBEEBNgKwASAEQbC5hQE2AqwBIARCADcCuAEgBCAEQdQCajYCtAEgBEGsAWpBuLmFARCoHQALIARBATYCsAEgBEGUuoUBNgKsASAEQgA3ArgBIAQgBEHUAmo2ArQBIARBrAFqQZy6hQEQqB0ACyAEQQE2ArABIARBgLuFATYCrAEgBEIANwK4ASAEIARB1AJqNgK0ASAEQawBakGIu4UBEKgdAAsgBEEBNgKwASAEQfC7hQE2AqwBIARCADcCuAEgBCAEQdQCajYCtAEgBEGsAWpB+LuFARCoHQALIARB2ABqQQhqIAxBCGooAgA2AgAgBCAMKQIANwNYIANBCEYNAiAEKAKIAyEGIAQoAoQDIQkgBCgCmAMhCwsgCCAEKQNYNwIAIAhBCGogBEHYAGpBCGooAgA2AgAgBCAGNgKoAiAEIAk2AqQCIAQgAzYCoAIgBCALNgK4AiADRQ0CAkAgBSAEKAKUAkcNACAEQZQCakHEs4UBEIIYIAQoApgCIQcLIARBoAJqQQhqKQIAIRYgBEGgAmpBEGopAgAhFyAEQaACakEYaigCACEGIAcgBUEcbGoiAyAEKQKgAjcCACADQRhqIAY2AgAgA0EQaiAXNwIAIANBCGogFjcCACAEIAVBAWoiBTYCnAIMAwsgBEGAA2oQnhQLAkAgBUECSQ0AIAVBAXYhCSAFQRxsIAdqQWRqIQZBACEIA0BBACEDA0AgByADaiIBKAAAIQIgASAGIANqIgUoAAA2AAAgBSACNgAAIANBBGoiA0EcRw0ACyAHQRxqIQcgBkFkaiEGIAhBAWoiCCAJRw0ACwsgBEGsAWogBEGUAmoQtwEgCiAEQawBahCuDwwVCyAEQaACahCjIAwACwtB5LKFARDJIgALQfSyhQEQySIACyAEQQE2ArABIARB8LCFATYCrAEgBEIBNwK4ASAEQfgANgLsAiAEIARB6AJqNgK0ASAEIARBgANqNgLoAiAEQawBakH4sIUBEKgdAAtBhLOFARDJIgALQZSzhQEQySIACyAEQQE2ArABIARBtLGFATYCrAEgBEIBNwK4ASAEQfgANgLsAiAEIARB6AJqNgK0ASAEIARBgANqNgLoAiAEQawBakG8sYUBEKgdAAtBxLKFARDJIgALQdSyhQEQySIACyAEQYwDaiAEQegCakEIaikCADcCACAEIAQpAugCNwKEAyAEQQE2AoADIARBrAFqIARBgANqEPgIIAIgBEGsAWoQrg8MCgtBpLOFARDJIgALIARBATYCsAEgBEH8sYUBNgKsASAEQgE3ArgBIARB+AA2AuwCIAQgBEHoAmo2ArQBIAQgBEGAA2o2AugCIARBrAFqQYSyhQEQqB0ACwJAAkAgFqdBAXFFDQAgASgCACIDKAIADQEgFkIIiKchAiADQX82AgACQAJAAkAgAygCDCIBRQ0AIAMoAgggAUEcbGoiAUFkaiIFRQ0AIAUoAgBBCEYNAQtBAC0A4PadARpBARCEASIBRQ0GIAEgAjoAAAJAIAMoAgwiAiADKAIERw0AIANBBGpB5LaFARCCGAsgAyACQQFqNgIMIAMoAgggAkEcbGoiAkEBNgIMIAIgATYCCCACQoiAgIAQNwIADAELAkAgAUFwaiIHKAIAIgUgAUFoaiIGKAIARw0AIAZB1LaFARCXDgsgAUFsaigCACAFaiACOgAAIAcgBUEBajYCAAsgAyADKAIAQQFqNgIADAkLIBZCIIinIQICQAJAIAEoAgAiAy0AEEEBcQ0AIARBCDYCsAEMAQsCQCADLQAUIgFBAkYNACABQQFxDQACQCAWQoCAgICAEFQNACAEQQg2ArABDAILAkAgAkHfAHFBv39qQRlLDQBBAC0A4PadARpBAhCEASIBRQ0GIAEgAjoAASABIAI6AAAgBEEBNgK0ASAEIAE2ArABIARBATYCrAEgBEHoAmogBEGsAWoQqRUgBEHoAmoQ+QcgBEGMA2ogBEHwAmopAgA3AgAgBCAEKQLoAjcChAMgBEEBNgKAAyAEQbABaiAEQYADahD4CAwCCyAEQQg2ArABDAELAkAgAiACELkRDQAgBEEINgKwAQwBC0EALQDg9p0BGkEIEIQBIgFFDQQgASACNgIEIAEgAjYCACAEQQE2ArQBIAQgATYCsAEgBEEBNgKsASAEQegCaiAEQawBahCqFSAEQegCahD6BCAEQYwDaiAEQegCakEIaikCADcCACAEIAQpAugCNwKEAyAEQQA2AoADIARBsAFqIARBgANqEPgICyAEQSBqQQhqIgEgBEGsAWpBEGopAgA3AwAgBEEgakEQaiIFIARBxAFqKQIANwMAIAQgBCkCtAE3AyACQCAEKAKwASIHQQhGDQAgBEHAAWogBSkDADcCACAEQbgBaiABKQMANwIAIAQgBCkDIDcCsAEgBCAHNgKsASADIARBrAFqEK4PDAkLIAMgAhDPBgwIC0HEtoUBEPcWAAsLQQAtAOD2nQEaIAMtAEAhCCACLQATIQlBHBCEASIDDQELAAsgAyAEKQLUATcCACADQRhqIARB1AFqQRhqKAIAIgY2AgAgA0EQaiAEQdQBakEQaikCADcCACADQQhqIARB1AFqQQhqKQIANwIAIAQgATYCjAMgBCAFNgKEAyAEIAc2AoADIAQgAzYCiAMgBCAIIAlBAXFzOgCQAwJAAkAgBigCCEEBRw0AIAYoAgwNAEEBIQYgBEEBNgKAAyAEIAFBAEciATYCjAMgBCAFQQBHIAdBAXNyIgU2AoQDDAELIAchBgsCQAJAAkACQAJAIAEOAgABAgsgBkUNASAFDQEQmBQhASADEKMgQQAhBQwCCyAGRQ0AIAVBAUcNACAEQfACaiAEQeABaikCADcDACAEQfgCaiAEQegBaigCADYCACAEIAQpAtgBNwPoAiAEKALsASEBIAQoAtQBIQUMAQsgBEGAA2oQswghASAEQegCakEQaiAEQYADakEQaigCADYCACAEQegCakEIaiAEQYADakEIaikCADcDACAEIAQpAoADNwPoAkEEIQUMAQsgA0EcQQQQvRMLIARBuAFqIARB8AJqKQMANwIAIARBwAFqIARB+AJqKAIANgIAIAQgBTYCrAEgBCAEKQPoAjcCsAEgBCABNgLEASACIARBrAFqEK4PDAMLIAJB/wFxQQJGIAJyIQICQAJAAkACQAJAAkAgB0EBcQ0AAkAgAkEBcQ0AIAZBAXENBCAEQdQCaiAFQQh0IAVB/wFxchDvECAEQdQCahCxBSAEQfQCaiAEQdQCakEIaikCADcCACAEIAQpAtQCNwLsAiAEQQE2AugCIARBgANqIARB6AJqEPgIDAYLIAZBAXENAiAFQX9KDQFBAiEIDAYLIAJBAXENAyAEQewCakGA/gMQ7xAgBEEBNgLoAiAEQYADaiAEQegCahD4CAwECyAEQdQCaiAFrUL/AYMiFkIghiAWhBDwECAEQdQCahCPBSAEQfQCaiAEQdwCaikCADcCACAEIAQpAtQCNwLsAiAEQQA2AugCIARBgANqIARB6AJqEPgIDAMLIARCjoCAgPD/vwg3AvgCIARCi4CAgMABNwLwAiAEQoCAgICQATcC6AIgBEHYAmogBEHoAmoQ2AwgBEEANgLUAiAEQYADaiAEQdQCahD4CAwCCyAEQY7+AzsA2AIgBEGAkqzgADYA1AIgBEHsAmogBEHUAmoQrA0gBEEBNgLoAiAEQYADaiAEQegCahD4CAwBCyAEQewCakKAgICA8P+/CBDwECAEQQA2AugCIARBgANqIARB6AJqEPgICyAEQcgBaiAEQZgDaigCADYCACAEQcABaiAEQZADaikCADcCACAEQbgBaiAEQYgDaikCADcCACAEIAQpAoADNwKwAQwBCyAEQawBaiABKAIEIAEoAgggBEHYAGogCBCTECAEKAKsASIBQYCAgIB4Rg0AIARB0ABqIARBrAFqQRxqKAIAIgM2AgAgBEHIAGogBEGsAWpBFGopAgAiFjcDACAEQcAAaiAEQawBakEMaikCACIXNwMAIAQgBCkCsAEiGDcDOCAEKQLMASEZIABBHGogAzYCACAAQRRqIBY3AgAgAEEMaiAXNwIAIAAgGDcCBCAAIBk3AiAgACABNgIADAILIARB0ABqIARByAFqKAIANgIAIARByABqIARBwAFqKQIANwMAIARBwABqIARBuAFqKQIANwMAIAQgBCkCsAE3AzggAyAEQThqEK4PCyAAQYCAgIB4NgIACyAEQaADaiQAC8U6ARt/IwBBgAFrIgUkACACQQA2AmggAkEANgJUIAJBADYCOCACQQA2AiQgAkEANgIIAkACQAJAAkACQAJAIAMoAhAiBiADKAIUIgdLDQAgAygCDCIIQX9GDQMgAygCCCEJIAVBOGogACADKAIAIAMoAgQQxhMgBS0AOCIKQQJGDQAgAUH/AXFBAkYgAXIhCyAFKAI8IQwgAkHYAGohDSACQShqIQ4gBCgCCCEPIAMtABhBAXEhECAGIREDQCALIA9BAEdxIQMCQAJAAkAgAigCJEUNACARIRIgA0UNAQwCCyADIAogESAGS3FyDQMLAkAgAigCCCIDIAIoAgBHDQAgAkG4w4QBEPMXCyACKAIEIANBDGxqIgEgDDYCBCABQQA2AgAgAiADQQFqIgM2AgggESESIANFDQAgESESA0AgEiETIAIgA0F/aiIDNgIIAkAgAigCBCADQQxsaiIDKAIAIgFBAkcNACATIRIMAgsgAygCBCEDAkACQAJAAkAgAUEBcQ0AIAUgAzYCRAJAIAMgAigCICIBTw0AIAkgE2oiFEF/aiEVIAkgE0F/aiIWaiEXA0AgAigCFCEYAkACQAJAAkACQAJAAkACQAJAIAIoAhwgA0ECdCIZaigCACIaIAIoAiQiAU8NACAaIBhPDQEgAigCECAaQQJ0aigCACADRg0NCyAFIAE2AkggASAYTw0BIAIo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IAJBOGoQ+SICQCACLQAwRQ0AIAAgAigCNDYCBAwHCyACLQAxIQMLAkACQCADQf8BcUFVag4DAAEAAQsgASABKAJcQX9qNgJcIAEgASgCWEEBajYCWCABIAEoAmhBAWo2AmgLIAJBOGogARDSBQJAIAItAEEiCEECRw0AIAAgAigCODYCBAwGCyABKAJoIAVrIQQgASgCYCAFIAEoAmxraiEDIAggBnJBAXENAQtBgICAgHghCAwBCyACQQA2AkAgAkKAgICAEDcCOCACQThqIAMgAyAEahDQBiACKAJAIQQgAigCPCEDIAIoAjghCAsgAkE4aiADIAQQjgECQCACLQA4RQ0AIAIgAi0AOToAMEGIx5kBQR0gAkEwakGAsJkBQajHmQEQ6hAACyACKwNAIRAgCEGAgICAeEYNASAIIAMQvSIMAQsgASAMNgJoIAEgASgCZCAMIANrIghrNgJcIAEgBCAIaiINNgJYIAQgCSADayIJaiEDAkAgBkEBcQ0AIAMgCCAJaxD1CiEQDAELIAJBADYCQCACQoCAgIAQNwI4IAJBOGogAyANENAGIAIoAjghAyACKAI8IgQgAigCQBD1CiEQIANBgICAgHhGDQAgAyAEEL0iCyABKAJcRQ0BIAEoAlgsAAAiA0EASA0BIANBwKyZAWotAABBAUcNASABKAJoIQEgAkGggICAeDYCOCAAIAEgASACQThqEM0jNgIEC0EBIQEMAwsCQCABKAIIQQpGDQAgAUEIahCKCQsgASAQOQMQIAFBBzYCCEHBACEBDAELAAsgACABOgABQQAhAQsgACABOgAAIAJB0ABqJAAL7DgCHX8HfiMAQaAFayIDJAAgASABKAJ4IgRB/79/cTYCeCABKALAASEFAkACQCABQRIQlAwiBkUNACAAQYGAgIB4NgKQASAAIAY2AgAMAQsgAUHAAWohBwJAIAEtAMgBIgZBW2oiCEESSw0AQQEgCHRBg4AacUUNACADQcgCaiABIAEoAsABENIEIAdBCGogA0HIAmpBCGooAgA2AgAgByADKQLIAjcCACABLQDIASEGCwJAIAZB/wFxQRNHDQAgASgCwAEhCCABKALEASEGIANByAJqIAEQ3gEgASAGNgK8ASABIAg2ArgBIAcgAykCyAI3AgAgB0EIaiADQcgCakEIaigCADYCACADQShqIAEQnAIgASgCwAEhCQJAAkAgAUE8EJQMIggNAAJAIAEtAMgBIghBW2oiCkESSw0AQQEgCnRBg4AacUUNACADQcgCaiABIAEoAsABENIEIAdBCGogA0HIAmpBCGooAgA2AgAgByADKQLIAjcCACABLQDIASEICyADQRM6AJgCIAhB/wFxQRNGDQEgASgCxAEhBiABKALAASEJIANBuAFqIAgQhh4gA0EBNgLMAiADQZTzmwE2AsgCIANCATcC1AIgA0H3Bq1CIIYgA0GYAmqthDcDaCADIANB6ABqNgLQAiADQegBaiADQcgCahCNFyADQfwBaiADQcABaigCADYCACADIAMpArgBNwL0ASAJIAYgA0HoAWoQhBchCCABLQDIAUGiAUcNACABENcSIQYgARDjDiABIAYQ+hILIABBgYCAgHg2ApABIAAgCDYCACADQShqEN8hDAILAkACQCACDQAgASgCwAEhCiABKALEASEIIANByAJqIAEQ3gEgASAINgK8ASABIAo2ArgBIAcgAykCyAI3AgAgB0EIaiADQcgCakEIaigCADYCAAwBCyABEOMOIAEoArwBIQgLIAAgAykCKDcCACAAQYCAgIB4NgKQASAAIAg2AiAgACAJNgIcIAAgBjYCGCAAIAU2AhQgACAINgIQIAAgBTYCDCAAQQhqIANBKGpBCGooAgA2AgAMAQsgASABKAJ4IgZB/79/cTYCeCADQcgCaiABEKkEIAEgBjYCeCADKALIAiEIAkAgAy0A9AIiCUEGRg0AAkBBKEUNACADQShqQQRyIANByAJqQQRyQSj8CgAACyADQShqQS9qIANByAJqQS9qLQAAOgAAIAMgAy8A9QI7AFUgAyAJOgBUIAMgCDYCKEEAIQsCQCABLQCBAUEgcUUNAEEAIQsgAS0AyAFB/wFxQRJHDQAgA0HIAmogARCTAyABIAZBAXI2AnggA0EgaiABELQEIAMoAiQhCwJAAkAgAygCIEEBcQ0AIAEQ4w4gCw0BIAEgA0HIAmoQoAZBACELDAILIANBATYC6AEgAyALNgLsASABIANByAJqEKAGIANB6AFqEO4eQQAhCwwBCyABIAEoAnhBfnEgBkEBcXI2AnggA0HIAmoQqyELIANBGGpBCEEIQdgAQfC3mwEQ2RYgAyADKAIcIgg2ApgBIAMgAygCGDYClAEgAUEIaiEMQfcGrUIghiIgQb2mmwGthCEhIANB6AFqQQxqIQ0gA0HcA2ohDiADQcgCakEkaiEPIANByAJqQQxqIRAgA0G4AWpBCGohEUEAIQkCQAJAAkADQCADIAk2ApwBAkAgAS0AyAEiBkFbaiIKQRJLDQBBASAKdEGDgBpxRQ0AIANByAJqIAEgASgCwAEQ0gQgB0EIaiADQcgCakEIaigCADYCACAHIAMpAsgCNwIAIAEtAMgBIQYLAkACQAJAAkACQAJAAkACQAJAIAZB/wFxIgpBcGoOBAEAAAEACwJAAkAgCkECRw0AIAEQ4w4gASgCwAEhEiABQRwQlAwiCA0LIAEoArwBIRMgAyABEPYLIAMoAgQhCiADKAIAQQFxRQ0BIAohCAwLCyABKALAASEUIAEQvwEgA0HIAmogARDUCiADKALIAiEIIAMtANwCQQJGDQogAygC1AIhCSADKALQAiEKIAMoAswCIQYgAS0AyAFBCUcNAiABEOMOIAEQvwEgA0HIAmogARDUCgJAIAMtANwCQQJHDQAgCK0hIiADKALIAiEIICIgBq1CIIaEEPMfDAsLIAmtQiCGIAqthCEjIAatQiCGIAithCEiIAMpA8gCISQgAygC1AIhFSADKALQAiEWIBQhFwwGCyADIAo2AsgCAkAgAUEDEJQMIghFDQAgA0HIAmoQmiEMCgtBBSEYDAYLIAMoApQBIgpBgICAgHhGDQkgAyAJNgJkIAMgCDYCYCADIAo2AlwCQCAGQf8BcUETRw0AIAEpA8ABISIgA0HIAmogARDeASABICI3A7gBIAcgAykCyAI3AgAgB0EIaiADQcgCakEIaigCADYCACABKALAASEGAkBBMEUNACADQcgCaiADQShqQTD8CgAACyADQYwDaiADQdwAakEIaigCADYCACADQQA6AJADIAMgBjYC/AIgAyAFNgL4AiADIAs2AoADIAMgAykCXDcChAMgA0G0AmogARCcAiABKALAASEIIAFBPBCUDCIGDQQgA0HoAWogARCpBCADKALoASEGIAMtAJQCIglBBkYNBAJAQShFDQAgA0G4AWpBBHIgA0HoAWpBBHJBKPwKAAALIANBuAFqQS9qIANB6AFqQS9qLQAAOgAAIAMgAy8AlQI7AOUBIAMgCToA5AEgAyAGNgK4AQJAIAEtAMgBIgZBW2oiCUESSw0AQQEgCXRBg4AacUUNACADQegBaiABIAEoAsABENIEIAdBCGogA0HoAWpBCGooAgA2AgAgByADKQLoATcCACABLQDIASEGCyADQRM6AJQBAkACQAJAIAZB/wFxQRNGDQAgASgCxAEhCCABKALAASEJIANBoAFqIAYQhh4gA0EBNgLsASADQZTzmwE2AugBIANCATcC9AEgAyAgIANBlAFqrYQ3A4gFIAMgA0GIBWo2AvABIANBmAJqIANB6AFqEI0XIANBrAJqIANBqAFqKAIANgIAIAMgAykCoAE3AqQCIAkgCCADQZgCahCEFyEGIAEtAMgBQaIBRw0BIAEQ1xIhCCABEOMOIAEgCBD6EgwBCwJAAkAgAg0AIAEpA8ABISIgA0HoAWogARDeASABICI3A7gBIAcgAykC6AE3AgAgB0EIaiADQegBakEIaigCADYCAAwBCyABEOMOCyADIANByAJqELsINwOYAiADIANBuAFqELsIIiI3A+gBIANBmAJqIANB6AFqEPkLIQYgIhDzHyADKQOYAhDzHyAGDQEgA0HEAWohBiADQbgBakEIaiEIAkACQAJAIAMtAOQBQX1qIglBASAJQf8BcUEDSRtB/wFxDgMCAAECCyADQcwBaiEGIANByAFqIQgMAQsgA0HcAWohBiADQdgBaiEICyAGKAIAIQYgCCgCACEIIANByAJqELsIISIgA0HYgICAeDYC6AEgAyAiNwPwASAIIAYgA0HoAWoQhBchBiABLQDIAUGiAUcNACABENcSIQggARDjDiABIAgQ+hILIANBuAFqEIEaDAULIANB5QFqIQYgASgCvAEhCQJAQSxFDQAgA0HoAGogA0G4AWpBLPwKAAALIANB/ARqQQJqIAZBAmotAAA6AAAgAyAGLwAAOwH8BCAIIQYgAy0A5AEiCkEGRg0EIAAgCTYCDAJAQSxFDQAgAEEQaiADQegAakEs/AoAAAsgAEE/aiADQf4Eai0AADoAACAAIAMvAfwEOwA9IAFBvAFBwAEgAhtqKAIAIQYCQEHQAEUNACAAQcAAaiADQcgCakHQAPwKAAALIAAgCjoAPCAAIAg2AgggACAGNgIEIAAgBTYCACAAQZgBaiADQbwCaigCADYCACAAIAMpArQCNwKQAQwNCyABQRAQlAwiBkUNAQwCCyAJrUIghiAKrYQhJCAG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RQ0CIBogEjYCCCAaIBM2AgQgGiAINgIAIBogAykD4AQ3AgwgGkEUaiAJKQMANwIAIBpBHGogCikDADcCAAJAIBgNACAaQSRqIANB9ANqQewA/AoAAAsgGiAGNgKQASAaIAMpA+gDNwKUASAaQZwBaiAcKAIANgIAQQIhGAwDCyADQbgBaiABEP0NIANB6ABqQQhqIBFBCGopAwA3AwAgAyARKQMANwNoQQAhGCADKAK8ASEeIAMoArgBIR8MAgsgA0HoAGpBEGogCikDADcDACADQegAakEIaiAJKQMANwMAIAMgAykD4AQ3A2hBAyEYIAghGiATIR8gEiEeDAELAAsgASAZNgJ4IANBoAFqQQhqIANB6ABqQQhqKQMANwMAIANBoAFqQRBqIANB6ABqQRBqKQMANwMAIAMgAykDaDcDoAEgASgCvAEhGyAeIRMgHyESIBohCgsgA0GYAmpBEGoiHCADQaABakEQaikDADcDACADQZgCakEIaiIdIANBoAFqQQhqKQMANwMAIAMgAykDoAE3A5gCAkAgAygCnAEiCSADKAKUAUcNACADQZQBahD/GAsgAygCmAEiCCAJQdgAbGoiBiATNgIMIAYgEjYCCCAGIAo2AgQgBiAYNgIAIAYgAykDmAI3AxAgBiAVNgJUIAYgFzYCUCAGIBU2AkwgBiAWNgJIIAYgJDcDQCAGICM3AzggBiAiNwMwIAYgGzYCLCAGIBQ2AiggBkEYaiAdKQMANwMAIAZBIGogHCkDADcDACAJQQFqIQkMAQsLIAEgGTYCeAJAICJCAFINACAjEPMfDAELICIgJBCPJAsgA0GUAWoQgyALIABBgYCAgHg2ApABIAAgCDYCAAsgCxCeIiADQShqEIEaDAELIABBgYCAgHg2ApABIAAgCDYCAAsgASAENgJ4IANBoAVqJAALpUYCAn8BfiMAQdACayICJAACQAJAAkACQAJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCACIDQTQgA0G9gYCAeEgbQf8BcQ69AQABAgMEBQYHCAkKCwwNDg8QERITFBUWvAEXGBkaGxwdHh8gISIjJCUmJygpKissLS4vvQEwMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG5AboBuwEACyAAQQ42AgggAEHY4ZgBNgIEIABBgICAgHg2AgAMvgELIABBGjYCCCAAQebhmAE2AgQgAEGAgICAeDYCAAy9AQsgAEEgNgIIIABBgOKYATYCBCAAQYCAgIB4NgIADLwBCyAAQS82AgggAEGg4pgBNgIEIABBgICAgHg2AgAMuwELIABB0wA2AgggAEHP4pgBNgIEIABBgICAgHg2AgAMugELIABBKTYCCCAAQaLjmAE2AgQgAEGAgICAeDYCAAy5AQsgAEEmNgIIIABBy+OYATYCBCAAQYCAgIB4NgIADLgBCyAAQSo2AgggAEHx45gBNgIEIABBgICAgHg2AgAMtwELIABBETYCCCAAQZvkmAE2AgQgAEGAgICAeDYCAAy2AQsgAEEXNgIIIABBrOSYATYCBCAAQYCAgIB4NgIADLUBCyAAQSw2AgggAEHD5JgBNgIEIABBgICAgHg2AgAMtAELIABB4gA2AgggAEHv5JgBNgIEIABBgICAgHg2AgAMswELIABBGjYCCCAAQdHlmAE2AgQgAEGAgICAeDYCAAyyAQsgAEElNgIIIABB6+WYATYCBCAAQYCAgIB4NgIADLEBCyAAQRw2AgggAEGQ5pgBNgIEIABBgICAgHg2AgAMsAELIABBJzYCCCAAQazmmAE2AgQgAEGAgICAeDYCAAyvAQsgAEEnNgIIIABB0+aYATYCBCAAQYCAgIB4NgIADK4BCyAAQSc2AgggAEH65pgBNgIEIABBgICAgHg2AgAMrQELIABBMDYCCCAAQaHnmAE2AgQgAEGAgICAeDYCAAysAQsgAEEpNgIIIABB0eeYATYCBCAAQYCAgIB4NgIADKsBCyAAQTU2AgggAEH655gBNgIEIABBgICAgHg2AgAMqgELIABBMzYCCCAAQa/omAE2AgQgAEGAgICAeDYCAAypAQsgAEEfNgIIIABB4uiYATYCBCAAQYCAgIB4NgIADKgBCyAAQSg2AgggAEH86ZgBNgIEIABBgICAgHg2AgAMpwELIABBJTYCCCAAQaTqmAE2AgQgAEGAgICAeDYCAAymAQsgAEEaNgIIIABByeqYATYCBCAAQYCAgIB4NgIADKUBCyAAQRw2AgggAEHj6pgBNgIEIABBgICAgHg2AgAMpAELIABBFzYCCCAAQf/qmAE2AgQgAEGAgICAeDYCAAyjAQsgAiABQQhqNgKgAiACQQE2ArwCIAJBxOuYATYCuAIgAkIBNwLEAiACQeoErUIghiACQaACaq2ENwPQASACIAJB0AFqNgLAAiACQRBqIAJBuAJqENENIABBCGogAkEQakEIaigCADYCACAAIAIpAhA3AgAMogELIABBGzYCCCAAQczrmAE2AgQgAEGAgICAeDYCAAyhAQsgAEEVNgIIIABB5+uYATYCBCAAQYCAgIB4NgIADKABCyAAQR82AgggAEH865gBNgIEIABBgICAgHg2AgAMnwELIAIgAUEEajYCoAIgAkEBNgK8AiACQbDsmAE2ArgCIAJCATcCxAIgAkHjBK1CIIYgAkGgAmqthDcD0AEgAiACQdABajYCwAIgAkEcaiACQbgCahDRDSAAQQhqIAJBHGpBCGooAgA2AgAgACACKQIcNwIADJ4BCyAAQRU2AgggAEG47JgBNgIEIABBgICAgHg2AgAMnQELIABBFjYCCCAAQc3smAE2AgQgAEGAgICAeDYCAAycAQsgAiABQQRqNgKgAiACQQE2ArwCIAJBjO2YATYCuAIgAkIBNwLEAiACQQutQiCGIAJBoAJqrYQ3A9ABIAIgAkHQAWo2AsACIAJBKGogAkG4AmoQ0Q0gAEEIaiACQShqQQhqKAIANgIAIAAgAikCKDcCAAybAQsgAEEmNgIIIABBlO2YATYCBCAAQYCAgIB4NgIADJoBCyAAQS02AgggAEG67ZgBNgIEIABBgICAgHg2AgAMmQELIAIgAUEIajYCoAIgAkECNgK8AiACQZjumAE2ArgCIAJCATcCxAIgAkHqBK1CIIYgAkGgAmqthDcD0AEgAiACQdABajYCwAIgAkE0aiACQbgCahDRDSAAQQhqIAJBNGpBCGooAgA2AgAgACACKQI0NwIADJgBCyAAQTs2AgggAEGo7pgBNgIEIABBgICAgHg2AgAMlwELIABBzAA2AgggAEHj7pgBNgIEIABBgICAgHg2AgAMlgELIABBOjYCCCAAQa/vmAE2AgQgAEGAgICAeDYCAAyVAQsgAEHKADYCCCAAQenvmAE2AgQgAEGAgICAeDYCAAyUAQsgAEExNgIIIABBs/CYATYCBCAAQYCAgIB4NgIADJMBCyAAQRQ2AgggAEHk8JgBNgIEIABBgICAgHg2AgAMkgELIABBHzYCCCAAQfjwmAE2AgQgAEGAgICAeDYCAAyRAQsgAEEyNgIIIABBl/GYATYCBCAAQYCAgIB4NgIADJABCyACIAFBBGo2ApACIAIgAUEQajYCoAIgAkECNgK8AiACQejxmAE2ArgCIAJCAjcCxAIgAkELrUIghiACQaACaq2ENwPYASACQfoArUIghiACQZACaq2ENwPQASACIAJB0AFqNgLAAiACQcAAaiACQbgCahDRDSAAQQhqIAJBwABqQQhqKAIANgIAIAAgAikCQDcCAAyPAQsgAEEeNgIIIABBvPKYATYCBCAAQYCAgIB4NgIADI4BCyAAQSU2AgggAEHa8pgBNgIEIABBgICAgHg2AgAMjQELIAIgATYCkAIgAiABQQxqNgKgAiACQQM2ArwCIAJBlPOYATYCuAIgAkICNwLEAiACQfoArUIghiIEIAJBoAJqrYQ3A9gBIAIgBCACQZACaq2ENwPQASACIAJB0AFqNgLAAiACQcwAaiACQbgCahDRDSAAQQhqIAJBzABqQQhqKAIANgIAIAAgAikCTDcCAAyMAQsgAEEaNgIIIABBrPOYATYCBCAAQYCAgIB4NgIADIsBCyAAQdUANgIIIABBxvOYATYCBCAAQYCAgIB4NgIADIoBCyAAQTI2AgggAEGb9JgBNgIEIABBgICAgHg2AgAMiQELIABB0gA2AgggAEHN9JgBNgIEIABBgICAgHg2AgAMiAELIABBLDYCCCAAQZ/1mAE2AgQgAEGAgICAeDYCAAyHAQsgAEEzNgIIIABBy/WYATYCBCAAQYCAgIB4NgIADIYBCyAAQSI2AgggAEH+9ZgBNgIEIABBgICAgHg2AgAMhQELIABBNzYCCCAAQaD2mAE2AgQgAEGAgICAeDYCAAyEAQsgAEEoNgIIIABB1/aYATYCBCAAQYCAgIB4NgIADIMBCyAAQQ02AgggAEH/9pgBNgIEIABBgICAgHg2AgAMggELIABBETYCCCAAQYz3mAE2AgQgAEGAgICAeDYCAAyBAQsgAEEVNgIIIABBnfeYATYCBCAAQYCAgIB4NgIADIABCyAAQRk2AgggAEGy95gBNgIEIABBgICAgHg2AgAMfwsgAEEONgIIIABBy/eYATYCBCAAQYCAgIB4NgIADH4LIABBGjYCCCAAQdn3mAE2AgQgAEGAgICAeDYCAAx9CyACIAFBCGo2AqACIAJBAjYCvAIgAkGQ+JgBNgK4AiACQgE3AsQCIAJB6gStQiCGIAJBoAJqrYQ3A9ABIAIgAkHQAWo2AsACIAJB2ABqIAJBuAJqENENIABBCGogAkHYAGpBCGooAgA2AgAgACACKQJYNwIADHwLIABBJTYCCCAAQaD4mAE2AgQgAEGAgICAeDYCAAx7CyAAQS02AgggAEHF+JgBNgIEIABBgICAgHg2AgAMegsgAEE8NgIIIABB8viYATYCBCAAQYCAgIB4NgIADHkLIABBNDYCCCAAQa75mAE2AgQgAEGAgICAeDYCAAx4CyAAQSs2AgggAEHi+ZgBNgIEIABBgICAgHg2AgAMdwsgAEEtNgIIIABBjfqYATYCBCAAQYCAgIB4NgIADHYLIABBJDYCCCAAQbr6mAE2AgQgAEGAgICAeDYCAAx1CyAAQR02AgggAEHe+pgBNgIEIABBgICAgHg2AgAMdAsgAEEoNgIIIABB+/qYATYCBCAAQYCAgIB4NgIADHMLIABBLjYCCCAAQaP7mAE2AgQgAEGAgICAeDYCAAxyCyAAQSo2AgggAEHR+5gBNgIEIABBgICAgHg2AgAMcQsgAEE2NgIIIABB+/uYATYCBCAAQYCAgIB4NgIADHALIABBPjYCCCAAQbH8mAE2AgQgAEGAgICAeDYCAAxvCyAAQTM2AgggAEHv/JgBNgIEIABBgICAgHg2AgAMbgsgAEEpNgIIIABBov2YATYCBCAAQYCAgIB4NgIADG0LIABBGTYCCCAAQcv9mAE2AgQgAEGAgICAeDYCAAxsCyAAQTs2AgggAEHk/ZgBNgIEIABBgICAgHg2AgAMawsgAEE9NgIIIABBn/6YATYCBCAAQYCAgIB4NgIADGoLIABBLTYCCCAAQdz+mAE2AgQgAEGAgICAeDYCAAxpCyACIAFBCGo2AqACIAJBAjYCvAIgAkG4/5gBNgK4AiACQgE3AsQCIAJB6gStQiCGIAJBoAJqrYQ3A9ABIAIgAkHQAWo2AsACIAJB5ABqIAJBuAJqENENIABBCGogAkHkAGpBCGooAgA2AgAgACACKQJkNwIADGgLIABBOjYCCCAAQcj/mAE2AgQgAEGAgICAeDYCAAxnCyAAQfAANgIIIABBgoCZATYCBCAAQYCAgIB4NgIADGYLIABBNTYCCCAAQfKAmQE2AgQgAEGAgICAeDYCAAxlCyAAQckANgIIIABBp4GZATYCBCAAQYCAgIB4NgIADGQLIABBKTYCCCAAQfCBmQE2AgQgAEGAgICAeDYCAAxjCyAAQSY2AgggAEGZgpkBNgIEIABBgICAgHg2AgAMYgsgAEE7NgIIIABBv4KZATYCBCAAQYCAgIB4NgIADGELIABBODYCCCAAQfqCmQE2AgQgAEGAgICAeDYCAAxgCyACIAFBCGo2AqACIAJBAjYCvAIgAkHog5kBNgK4AiACQgE3AsQCIAJB6gStQiCGIAJBoAJqrYQ3A9ABIAIgAkHQAWo2AsACIAJB8ABqIAJBuAJqENENIABBCGogAkHwAGpBCGooAgA2AgAgACACKQJwNwIADF8LIABBJzYCCCAAQfiDmQE2AgQgAEGAgICAeDYCAAxeCyAAQRs2AgggAEGfhJkBNgIEIABBgICAgHg2AgAMXQsgAEEhNgIIIABBuoSZATYCBCAAQYCAgIB4NgIADFwLIABBJTYCCCAAQduEmQE2AgQgAEGAgICAeDYCAAxbCyAAQc4ANgIIIABBgIWZATYCBCAAQYCAgIB4NgIADFoLIABBHTYCCCAAQc6FmQE2AgQgAEGAgICAeDYCAAxZCyAAQTk2AgggAEHrhZkBNgIEIABBgICAgHg2AgAMWAsgAEE5NgIIIABBpIaZATYCBCAAQYCAgIB4NgIADFcLIABBOTYCCCAAQd2GmQE2AgQgAEGAgICAeDYCAAxWCyAAQTA2AgggAEGWh5kBNgIEIABBgICAgHg2AgAMVQsgAEEuNgIIIABBxoeZATYCBCAAQYCAgIB4NgIADFQLIAIgAUEIajYCoAIgAkECNgK8AiACQZyImQE2ArgCIAJCATcCxAIgAkHqBK1CIIYgAkGgAmqthDcD0AEgAiACQdABajYCwAIgAkH8AGogAkG4AmoQ0Q0gAEEIaiACQfwAakEIaigCADYCACAAIAIpAnw3AgAMUwsgAEE/NgIIIABBrIiZATYCBCAAQYCAgIB4NgIADFILIABBNjYCCCAAQeuImQE2AgQgAEGAgICAeDYCAAxRCyACIAFBCGo2AqACIAJBAjYCvAIgAkGAipkBNgK4AiACQgE3AsQCIAJB6gStQiCGIAJBoAJqrYQ3A9ABIAIgAkHQAWo2AsACIAJBiAFqIAJBuAJqENENIABBCGogAkGIAWpBCGooAgA2AgAgACACKQKIATcCAAxQCyAAQcYANgIIIABBkIqZATYCBCAAQYCAgIB4NgIADE8LIABBKDYCCCAAQdaKmQE2AgQgAEGAgICAeDYCAAxOCyACIAFBBGo2AqACIAJBAjYCvAIgAkGki5kBNgK4AiACQgE3AsQCIAJB6wStQiCGIAJBoAJqrYQ3A9ABIAIgAkHQAWo2AsACIAJBlAFqIAJBuAJqENENIABBCGogAkGUAWpBCGooAgA2AgAgACACKQKUATcCAAxNCyAAQSE2AgggAEG0i5kBNgIEIABBgICAgHg2AgAMTAsgAEEWNgIIIABB1YuZATYCBCAAQYCAgIB4NgIADEsLIABBFDYCCCAAQeuLmQE2AgQgAEGAgICAeDYCAAxKCyAAQR02AgggAEH/i5kBNgIEIABBgICAgHg2AgAMSQsgAEExNgIIIABBnIyZATYCBCAAQYCAgIB4NgIADEgLIABBMzYCCCAAQc2MmQE2AgQgAEGAgICAeDYCAAxHCyACIAFBCGo2ApACIAIgAUEQajYCoAIgAkEDNgK8AiACQaSNmQE2ArgCIAJCAjcCxAIgAkHqBK1CIIYiBCACQaACaq2ENwPYASACIAQgAkGQAmqthDcD0AEgAiACQdABajYCwAIgAkGgAWogAkG4AmoQ0Q0gAEEIaiACQaABakEIaigCADYCACAAIAIpAqABNwIADEYLIAIgAUEIajYCoAIgAkECNgK8AiACQdSNmQE2ArgCIAJCATcCxAIgAkHqBK1CIIYgAkGgAmqthDcD0AEgAiACQdABajYCwAIgAkGsAWogAkG4AmoQ0Q0gAEEIaiACQawBakEIaigCADYCACAAIAIpAqwBNwIADEULIABBPzYCCCAAQeSNmQE2AgQgAEGAgICAeDYCAAxECyAAQcUANgIIIABBo46ZATYCBCAAQYCAgIB4NgIADEMLIABBJDYCCCAAQeiOmQE2AgQgAEGAgICAeDYCAAxCCyAAQSM2AgggAEGMj5kBNgIEIABBgICAgHg2AgAMQQsgAEErNgIIIABBr4+ZATYCBCAAQYCAgIB4NgIADEALIABBODYCCCAAQdqPmQE2AgQgAEGAgICAeDYCAAw/CyAAQc4ANgIIIABBkpCZATYCBCAAQYCAgIB4NgIADD4LIAIgAUEIajYCoAIgAkECNgK8AiACQZiRmQE2ArgCIAJCATcCxAIgAkHqBK1CIIYgAkGgAmqthDcD0AEgAiACQdABajYCwAIgAkG4AWogAkG4AmoQ0Q0gAEEIaiACQbgBakEIaigCADYCACAAIAIpArgBNwIADD0LIABBOjYCCCAAQaiRmQE2AgQgAEGAgICAeDYCAAw8CyAAQTI2AgggAEHikZkBNgIEIABBgICAgHg2AgAMOwsgAEEjNgIIIABBlJKZATYCBCAAQYCAgIB4NgIADDoLIABBKTYCCCAAQbeSmQE2AgQgAEGAgICAeDYCAAw5CyAAQTk2AgggAEHgkpkBNgIEIABBgICAgHg2AgAMOAsgAEHWADYCCCAAQZmTmQE2AgQgAEGAgICAeDYCAAw3CyAAQT82AgggAEHvk5kBNgIEIABBgICAgHg2AgAMNgsgAEEqNgIIIABBrpSZATYCBCAAQYCAgIB4NgIADDULIABBEzYCCCAAQdiUmQE2AgQgAEGAgICAeDYCAAw0CyAAQQ02AgggAEHrlJkBNgIEIABBgICAgHg2AgAMMwsgAEEPNgIIIABB+JSZATYCBCAAQYCAgIB4NgIADDILIABB0wA2AgggAEGHlZkBNgIEIABBgICAgHg2AgAMMQsgAEHGADYCCCAAQdqVmQE2AgQgAEGAgICAeDYCAAwwCyAAQSk2AgggAEGglpkBNgIEIABBgICAgHg2AgAMLwsgAEEyNgIIIABByZaZATYCBCAAQYCAgIB4NgIADC4LIABBLDYCCCAAQfuWmQE2AgQgAEGAgICAeDYCAAwtCyAAQTA2AgggAEGnl5kBNgIEIABBgICAgHg2AgAMLAsgAEE9NgIIIABB15eZATYCBCAAQYCAgIB4NgIADCsLIABBHjYCCCAAQZSYmQE2AgQgAEGAgICAeDYCAAwqCyAAQTI2AgggAEGymJkBNgIEIABBgICAgHg2AgAMKQsgAEEmNgIIIABB5JiZATYCBCAAQYCAgIB4NgIADCgLIABBIDYCCCAAQYqZmQE2AgQgAEGAgICAeDYCAAwnCyAAQTg2AgggAEGqmZkBNgIEIABBgICAgHg2AgAMJgsgAEEcNgIIIABB4pmZATYCBCAAQYCAgIB4NgIADCULIABBIjYCCCAAQf6ZmQE2AgQgAEGAgICAeDYCAAwkCyAAQTo2AgggAEGgmpkBNgIEIABBgICAgHg2AgAMIwsgAEEzNgIIIABB2pqZATYCBCAAQYCAgIB4NgIADCILIABBxAA2AgggAEGNm5kBNgIEIABBgICAgHg2AgAMIQsgAiABQQhqNgKQAiACIAFBEGo2AqACIAJBAzYCvAIgAkH0m5kBNgK4AiACQgI3AsQCIAJB6gStQiCGIgQgAkGgAmqthDcD2AEgAiAEIAJBkAJqrYQ3A9ABIAIgAkHQAWo2AsACIAJBxAFqIAJBuAJqENENIABBCGogAkHEAWpBCGooAgA2AgAgACACKQLEATcCAAwgCyAAQTo2AgggAEGMnJkBNgIEIABBgICAgHg2AgAMHwsgAEEuNgIIIABBxpyZATYCBCAAQYCAgIB4NgIADB4LIABBLTYCCCAAQfScmQE2AgQgAEGAgICAeDYCAAwdCyACIAFBCGo2AqACIAJBAjYCvAIgAkHQnZkBNgK4AiACQgE3AsQCIAJB6gStQiCGIAJBoAJqrYQ3A9ABIAIgAkHQAWo2AsACIAJB4AFqIAJBuAJqENENIABBCGogAkHgAWpBCGooAgA2AgAgACACKQLgATcCAAwcCyACIAFBCGo2AqACIAJBAjYCvAIgAkG0npkBNgK4AiACQgE3AsQCIAJB6gStQiCGIAJBoAJqrYQ3A9ABIAIgAkHQAWo2AsACIAJB7AFqIAJBuAJqENENIABBCGogAkHsAWpBCGooAgA2AgAgACACKQLsATcCAAwbCyACIAFBCGo2AqACIAJBAjYCvAIgAkGUn5kBNgK4AiACQgE3AsQCIAJB6gStQiCGIAJBoAJqrYQ3A9ABIAIgAkHQAWo2AsACIAJB+AFqIAJBuAJqENENIABBCGogAkH4AWpBCGooAgA2AgAgACACKQL4ATcCAAwaCyAAQegANgIIIABBpJ+ZATYCBCAAQYCAgIB4NgIADBkLIABB6AA2AgggAEGMoJkBNgIEIABBgICAgHg2AgAMGAsgAEHEADYCCCAAQfSgmQE2AgQgAEGAgICAeDYCAAwXCyAAQdMANgIIIABBuKGZATYCBCAAQYCAgIB4NgIADBYLIABB1wA2AgggAEGLopkBNgIEIABBgICAgHg2AgAMFQsgAEHaADYCCCAAQeKimQE2AgQgAEGAgICAeDYCAAwUCyAAQRI2AgggAEG8o5kBNgIEIABBgICAgHg2AgAMEwsgAEEZNgIIIABBzqOZATYCBCAAQYCAgIB4NgIADBILIABBKTYCCCAAQeejmQE2AgQgAEGAgICAeDYCAAwRCyAAQckANgIIIABBkKSZATYCBCAAQYCAgIB4NgIADBALIABBzgA2AgggAEHZpJkBNgIEIABBgICAgHg2AgAMDwsgAEHXADYCCCAAQaelmQE2AgQgAEGAgICAeDYCAAwOCyAAQT42AgggAEH+pZkBNgIEIABBgICAgHg2AgAMDQsgAEHqADYCCCAAQbymmQE2AgQgAEGAgICAeDYCAAwMCyAAQeEANgIIIABBpqeZATYCBCAAQYCAgIB4NgIADAsLIABBwwA2AgggAEGHqJkBNgIEIABBgICAgHg2AgAMCgsgAEE1NgIIIABByqiZATYCBCAAQYCAgIB4NgIADAkLIAIgAUEIajYCoAIgAkECNgK8AiACQbypmQE2ArgCIAJCATcCxAIgAkHqBK1CIIYgAkGgAmqthDcD0AEgAiACQdABajYCwAIgAkGEAmogAkG4AmoQ0Q0gAEEIaiACQYQCakEIaigCADYCACAAIAIpAoQCNwIADAgLIAEoAgQoAgBBCGohAQwACwsgAEHhADYCCCAAQcypmQE2AgQgAEGAgICAeDYCAAwFCyAAQe4ANgIIIABBraqZATYCBCAAQYCAgIB4NgIADAQLIABBIzYCCCAAQZurmQE2AgQgAEGAgICAeDYCAAwDCyABLQAEQX5qIgFBB3QgAUH+AXFBAXZyIgNB/wFxIgFBCE8NAUGZASABdkEBcUUNASACQbjpmAE2ArgCIAJCATcCxAIgAkEJrUIghiACQdABaq2ENwOgAiACQQI2ArwCIAIgA0ECdEH8B3EiAUHs4J0BaigCADYC1AEgAiABQczgnQFqKAIANgLQASACIAJBoAJqNgLAAiACQQRqIAJBuAJqENENIABBCGogAkEEakEIaigCADYCACAAIAIpAgQ3AgAMAgsCQAJAIAEoAgwiA0EDSQ0AIAJBoAJqIAEoAggiASADQX9qIgNB+PGYAUEDEO0EIAJBATYCvAIgAkGA8pgBNgK4AiACQgE3AsQCIAJBCa1CIIYgASADQQN0aq2ENwOQAiACIAJBkAJqNgLAAiACQdABaiACQbgCahDRDSACQaACaiACKALUASIBIAEgAigC2AFqEI8bIAJBkAJqQQhqIAJBoAJqQQhqKAIANgIAIAIgAikCoAI3A5ACIAIoAtABIAEQvSIMAQsgAkGQAmogASgCCCADQYjymAFBBBDtBAsgAkECNgK8AiACQazymAE2ArgCIAJCATcCxAIgAkHsBK1CIIYgAkGQAmqthDcD0AEgAiACQdABajYCwAIgAkGsAmogAkG4AmoQ0Q0gAEEIaiACQawCakEIaigCADYCACAAIAIpAqwCNwIAIAIoApACIAIoApQCEL0iDAELQZKpmwFBKEHs6ZgBEIwaAAsgAkHQAmokAAuWNQIYfwR+IwBB0ARrIgIkACABIAAQuxsgAUEwaiEDIAFBEGohBCABQSBqIQUgACgCECIGIAAoAhRB2ABsaiEHIAJB/AJqIQggAkHsAGpBPGohCSACQbgDakE4aiEKIAJBlAJqQRhqIQsgAkGUAmpBCGohDCACQZQDaiENIAJBlAJqQSxqIQ4gAkEgakE8aiEPIAJBuANqQRxqIRAgAkG4A2pBDGohEQNAAkACQAJAAkACQAJAAkACQAJAIAYiEiAHRg0AIBJB2ABqIQYCQCASKAIAIhNBfGpBACATQXtqQQhJGw4JAAcGBQQKCgMCAAsCQAJAIAEtAEUNACACQYACOwCUAgJAIBNBA0cNACASKAIEIAJBlAJqEJgBCwJAIBIoAkgiE0UNACASKAJEIhQgE0EGdGohFQNAAkACQCAUKAIAQQdGDQACQCAUQThqKAIAIhZFDQAgAi0AlAINACAUQTRqKAIAIRMgFkEMbCEWA0ACQCACLQCUAg0AIBMoAgAgAkGUAmoQmAELIBNBDGohEyAWQXRqIhYNAAsLIBQgAkGUAmoQtwkMAQsCQCAUQThqKAIAIhZFDQAgAi0AlAINACAUQTRqKAIAIRMgFkEMbCEWA0ACQCACLQCUAg0AIBMoAgAgAkGUAmoQmAELIBNBDGohEyAWQXRqIhYNAAsLIBQtABxBAkcNACAUKAIIIAJBlAJqELcJIAItAJQCDQAgFCgCDCACQZQCahCYAQsgFEHAAGoiFCAVRw0ACwsCQCASQSBqIhQoAgBBgICAgHhGDQAgEigCKCIWRQ0AIAItAJQCDQAgEigCJCETIBZBMGwhFgNAAkAgAi0AlAINACATIAJBlAJqEIcDCyATQTBqIRMgFkFQaiIWDQALCyACLQCUAg0BCyACQcABakEAIAEoAkBBABDcBwJAQdQARQ0AIA4gAkHAAWpB1AD8CgAACyANQQhqQQApA5j/nAEiGjcCACANQQApA5D/nAEiGzcCACAMIBs3AgAgDEEIaiITIBo3AgAgCyAbNwIAIAtBCGogGjcCACACQQA6AKQDIAJBADYClAIgAkEAOgC8AiACQZQCaiASEOMDIAJBqANqQQhqIhYgEykCADcDACACIAwpAgA3A6gDIAJBuANqIA0QpA8gCiALEKQPIAIgAkGoA2o2AugDIAJBoARqQQhqIhMgGjcDACACIBs3A6AEIAJBIGogAkG4A2oQ5hAgAkGgBGogAigCIBDnHwJAIAIoAtgDQYGAgIB4Rg0AAkBBMEUNACACQSBqIAJBuANqQTD8CgAACwJAA0AgAkGwBGogAkEgahCQDSACKQOwBCIcUA0BIAIgAigCuAQ2AsgEIAIgHDcDwAQCQCACQagDaiACQcAEahC5G0UNACACKQPABBDzHwwBCyACQaAEaiAcEJkGDAALC0IAENYhIAJBIGoQ2x0LAkAgAigCkARBgYCAgHhGDQACQEEwRQ0AIAJBIGogCkEw/AoAAAsCQANAIAJBwARqIAJBIGoQkA0gAikDwAQiHFANASACQaAEaiAcEJkGDAALC0IAENYhIAJBIGoQ2x0LIAkgAikDoAQ3AgAgCUEIaiIUIBMpAwA3AgACQEE8RSIVDQAgAkHsAGogDkE8/AoAAAsgAkGoA2oQ4xcgCBCKIAJAIBUNACACQZQCaiACQewAakE8/AoAAAsgFiAUKQIANwMAIAIgCSkCADcDqAMgAkGUAmoQ+gggAkG4A2ogBRCEESACQbgDaiACQagDahDBCiATIAJBuANqQQhqIhUpAgA3AwAgAiACKQK4AzcDoAQCQCABKAIcIhRFDQAgAkGgBGoQnxUhFyAEKAIAIhYpAwAhHCAXIBRBAWpBAXYgFCACKAKsBBsQ5x8gFkEIaiETIBxCf4VCgIGChIiQoMCAf4MhHANAAkAgHFANAAJAIBYgHHqnQQF0QfABcWtBcGopAwAiHUIDg0IAUg0AIB2nIhggGCgCACIYQQFqNgIAIBhBf0wNDAsgHEJ/fCAcgyEcIBcgHRCZBiAUQX9qIRQMAQsgFEUNASAWQYB/aiEWIBMpAwBCf4VCgIGChIiQoMCAf4MhHCATQQhqIRMMAAsLIAJBADYCwAMgAkKAgICAgAE3ArgDIAJBuANqENYRIAJBsARqQQhqIhcgGjcDACACIBs3A7AEIBUgGjcDACACQQA2AsgDIAIgGzcDuAMgAkGUAmogAkGwBGogAyACQbgDaiAEIAJBoARqIAIoAqQEIAIoAqAEGxCpASACQbgDahCzCyABKAIARQ0JIAEgAigCvAQgBBDNHyACKAKwBCITKQMAIRwgAigCtAQhFiACIAIoArwENgLYASACIBM2AtABIAIgEyAWakEBajYCzAEgAiATQQhqNgLIASACIBxCf4VCgIGChIiQoMCAf4M3A8ABA0AgAkEIaiACQcABahDXGSACKAIIIhNFDQogAigCDCEWAkAgEykDACIcQgODQgBSDQAgHKciFCAUKAIAIhRBAWo2AgAgFEF/TA0KCyACQbgDaiABIBwgEygCCBCPCSACKALAAyEUAkAgAikDuAMiGlANACACKALQAyETIAIpA8gDIRsCQCAWKQMAIhxCA4NCAFINACAcpyIWIBYoAgAiFkEBajYCACAWQX9MDQsLIAIgHDcDyAMgAiAUNgLAAyACIBo3A7gDIBMgGyACQbgDahDvDwwBCwsCQCAUQXhqKQMAIhxCA4NCAFINACAcpyIBIAEoAgAiAUEBajYCACABQX9MDQkLIAJBADYCyAQgAiAcNwPABAJAIBYpAwAiHEIDg0IAUg0AIBynIhYgFigCACIWQQFqNgIAIBZBf0wNCQsgAkEANgIoIAIgHDcDICACQQM2AnAgAkGI05sBNgJsIAJCAzcCeCACQecErUIghiIcIAJBIGqthDcDyAMgAiAcIAJBwARqrYQ3A8ADIAIgHCATrYQ3A7gDIAIgAkG4A2o2AnQgAkHsAGpB7NObARCoHQALIBIgARDQHyASKAJIQQZ0IRYgEigCRCETA0ACQAJAIBZFDQACQCATKAIAQQdGDQAgEyABEKUhDAILIAEgE0EwahC7GyATQRxqLQAAQQJHDQEgE0EIaiABEKYhDAELIBQgARC5IAwLCyATQcAAaiETIBZBQGohFgwACwsgASAAQTBqEKIhIAJB0ARqJAAPCwJAIBIoAghBBUYNACASQQhqIAEQ0B8LIAEgEkE8ahCiISABIBJBMGoQuxsMBwsgEkEEaiABELobDAYLIAEgEkEkahCiISABIBJBLGoQuxsMBQsgEkEIaiABENAfIAEgEkE8ahCiISABIBJBMGoQuxsMBAsCQAJAAkACQCABLQBFQQFHDQAgEigCICEXDAELIAJBgAI7AJQCIBIoAiAiFyACQZQCahCQCiACLQCUAg0BC0EAIRMgAkHsAGpBACABKAJAQQAQ3AcCQEHUAEUiGA0AIA4gAkHsAGpB1AD8CgAACyANQQhqQQApA5j/nAEiHDcCACANQQApA5D/nAEiGjcCACAMIBo3AgAgDEEIaiIZIBw3AgAgCyAaNwIAIAtBCGogHDcCACACQQA6AKQDIAJBADYClAIgAkEAOgC8AiARIBo3AgAgEUEIaiAcNwIAIBAgGjcCACAQQQhqIBw3AgAgAkEAOwGGBCACIAIvAYwDOwGEBCACIAIoAogDNgKABCACQQA2AsADIAJCgICAgIABNwK4AyACQQA2AuwDIAJBADYC/AMgAkEAOwGIBCACQoCAgIDAADcC5AMgAkKAgICAgAE3AvQDIAIgAi0AkgM6AIoEIAJBADoA8AMCQANAIBNB1ABGDQEgAkGUAmogE2pBLGoiFigCACEUIBYgAkG4A2ogE2oiFSgCADYCACAVIBQ2AgAgE0EEaiETDAALCwJAIBgNACACQcABaiACQbgDakHUAPwKAAALAkAgFygCFCITRQ0AIBcoAhAhFiATQQxsIRQgAi0AjQMhFQNAIBYoAgAhEyACQQA6AI0DIAJBADoAvAICQCATKAIAQRpHDQAgAkG4A2ogEykDCCATQRhqKAIAEOcaIA4gAikDuAMgAigCwAMQkAsLIBZBDGohFiATIAJBlAJqEHggAkEAOgC8AiACIBU6AI0DIBRBdGoiFA0ACwsCQCAXKAIIIhZFDQAgFygCBCETIBZBBnQhFgNAIAJBlAJqIBMQ6gsgE0HAAGohEyAWQUBqIhYNAAsLAkAgFygCGEGAgICAeEYNACAXKAIgIhZFDQAgFygCHCETIBZBMGwhFgNAIAJBADoAkQMgEyACQZQCahBsIBNBMGohEyAWQVBqIhYNAAsLIA4gAkHAAWoQpgMgAkGoA2pBCGoiFiAZKQIANwMAIAIgDCkCADcDqAMgAkG4A2ogDRCkDyAKIAsQpA8gAiACQagDajYC6AMgAkGgBGpBCGoiE0EAKQOY/5wBIho3AwAgAkEAKQOQ/5wBIhs3A6AEIAJBwAFqIAJBuANqEOYQIAJBoARqIAIoAsABEOcfAkAgAigC2ANBgYCAgHhGDQACQEEwRQ0AIAJBwAFqIAJBuANqQTD8CgAACwJAA0AgAkGwBGogAkHAAWoQkA0gAikDsAQiHFANASACIAIoArgENgLIBCACIBw3A8AEAkAgAkGoA2ogAkHABGoQuRtFDQAgAikDwAQQ8x8MAQsgAkGgBGogHBCZBgwACwtCABDWISACQcABahDbHQsCQCACKAKQBEGBgICAeEYNAAJAQTBFDQAgAkHAAWogCkEw/AoAAAsCQANAIAJBwARqIAJBwAFqEJANIAIpA8AEIhxQDQEgAkGgBGogHBCZBgwACwtCABDWISACQcABahDbHQsgDyACKQOgBDcCACAPQQhqIhQgEykDADcCAAJAQTxFIhUNACACQSBqIA5BPPwKAAALIAJBqANqEOMXIAgQiiACQCAVDQAgAkGUAmogAkEgakE8/AoAAAsgFiAUKQIANwMAIAIgDykCADcDqAMgAkGUAmoQ+gggAkG4A2ogBRCEESACQbgDaiACQagDahDBCiATIAJBuANqQQhqIhUpAgA3AwAgAiACKQK4AzcDoAQCQCABKAIcIhRFDQAgAkGgBGoQnxUhFyAEKAIAIhYpAwAhHCAXIBRBAWpBAXYgFCACKAKsBBsQ5x8gFkEIaiETIBxCf4VCgIGChIiQoMCAf4MhHANAAkAgHFANAAJAIBYgHHqnQQF0QfABcWtBcGopAwAiHUIDg0IAUg0AIB2nIhggGCgCACIYQQFqNgIAIBhBf0wNBwsgHEJ/fCAcgyEcIBcgHRCZBiAUQX9qIRQMAQsgFEUNASAWQYB/aiEWIBMpAwBCf4VCgIGChIiQoMCAf4MhHCATQQhqIRMMAAsLIAJBADYCwAMgAkKAgICAgAE3ArgDIAJBuANqENYRIAJBsARqQQhqIhcgGjcDACACIBs3A7AEIBUgGjcDACACQQA2AsgDIAIgGzcDuAMgAkGUAmogAkGwBGogAyACQbgDaiAEIAJBoARqIAIoAqQEIAIoAqAEGxCpASACQbgDahCzCyABKAIARQ0BIAEgAigCvAQgBBDNHyACKAKwBCITKQMAIRwgAigCtAQhFiACIAIoArwENgLYASACIBM2AtABIAIgEyAWakEBajYCzAEgAiATQQhqNgLIASACIBxCf4VCgIGChIiQoMCAf4M3A8ABA0AgAkEYaiACQcABahDXGSACKAIYIhNFDQIgAigCHCEWAkAgEykDACIcQgODQgBSDQAgHKciFCAUKAIAIhRBAWo2AgAgFEF/TA0FCyACQbgDaiABIBwgEygCCBCPCSACKALAAyEUAkAgAikDuAMiGlANACACKALQAyETIAIpA8gDIRsCQCAWKQMAIhxCA4NCAFINACAcpyIWIBYoAgAiFkEBajYCACAWQX9MDQYLIAIgHDcDyAMgAiAUNgLAAyACIBo3A7gDIBMgGyACQbgDahDvDwwBCwsCQCAUQXhqKQMAIhxCA4NCAFINACAcpyIBIAEoAgAiAUEBajYCACABQX9MDQQLIAJBADYCyAQgAiAcNwPABAJAIBYpAwAiHEIDg0IAUg0AIBynIhYgFigCACIWQQFqNgIAIBZBf0wNBAsgAkEANgIoIAIgHDcDICACQQM2AnAgAkGI05sBNgJsIAJCAzcCeCACQecErUIghiIcIAJBIGqthDcDyAMgAiAcIAJBwARqrYQ3A8ADIAIgHCATrYQ3A7gDIAIgAkG4A2o2AnQgAkHsAGpB7NObARCoHQALIBJBIGogARCTJAwECyAVIBcpAwA3AwAgAiACKQOwBDcDuAMgAkGgBGoQ5SEgAkGUAmoQixACQCACKALEA0UNACACQQA2ApwCIAJCgICAgIABNwKUAiACIAEpAkA3AqACIAIgAkG4A2o2AqgCIBJBIGogAkGUAmoQlCQgAkGUAmoQ9R8LIAJBuANqENEMDAMLIBJBCGohFQJAAkACQCABLQBFDQAgAkGAAjsAlAICQCAVKAIAQQNHDQAgEigCDCACQZQCahCYAQsgEigCMCACQZQCahDgCSACLQCUAg0BCyACQcABakEAIAEoAkBBABDcBwJAQdQARQ0AIA4gAkHAAWpB1AD8CgAACyANQQhqQQApA5j/nAEiGjcCACANQQApA5D/nAEiGzcCACAMIBs3AgAgDEEIaiITIBo3AgAgCyAbNwIAIAtBCGogGjcCACACQQA6AKQDIAJBADYClAIgAkEAOgC8AiACQZQCaiAVEJkEIAJBqANqQQhqIhYgEykCADcDACACIAwpAgA3A6gDIAJBuANqIA0QpA8gCiALEKQPIAIgAkGoA2o2AugDIAJBoARqQQhqIhMgGjcDACACIBs3A6AEIAJBIGogAkG4A2oQ5hAgAkGgBGogAigCIBDnHwJAIAIoAtgDQYGAgIB4Rg0AAkBBMEUNACACQSBqIAJBuANqQTD8CgAACwJAA0AgAkGwBGogAkEgahCQDSACKQOwBCIcUA0BIAIgAigCuAQ2AsgEIAIgHDcDwAQCQCACQagDaiACQcAEahC5G0UNACACKQPABBDzHwwBCyACQaAEaiAcEJkGDAALC0IAENYhIAJBIGoQ2x0LAkAgAigCkARBgYCAgHhGDQACQEEwRQ0AIAJBIGogCkEw/AoAAAsCQANAIAJBwARqIAJBIGoQkA0gAikDwAQiHFANASACQaAEaiAcEJkGDAALC0IAENYhIAJBIGoQ2x0LIAkgAikDoAQ3AgAgCUEIaiIUIBMpAwA3AgACQEE8RSISDQAgAkHsAGogDkE8/AoAAAsgAkGoA2oQ4xcgCBCKIAJAIBINACACQZQCaiACQewAakE8/AoAAAsgFiAUKQIANwMAIAIgCSkCADcDqAMgAkGUAmoQ+gggAkG4A2ogBRCEESACQbgDaiACQagDahDBCiATIAJBuANqQQhqIhIpAgA3AwAgAiACKQK4AzcDoAQCQCABKAIcIhRFDQAgAkGgBGoQnxUhFyAEKAIAIhYpAwAhHCAXIBRBAWpBAXYgFCACKAKsBBsQ5x8gFkEIaiETIBxCf4VCgIGChIiQoMCAf4MhHANAAkAgHFANAAJAIBYgHHqnQQF0QfABcWtBcGopAwAiHUIDg0IAUg0AIB2nIhggGCgCACIYQQFqNgIAIBhBf0wNBgsgHEJ/fCAcgyEcIBcgHRCZBiAUQX9qIRQMAQsgFEUNASAWQYB/aiEWIBMpAwBCf4VCgIGChIiQoMCAf4MhHCATQQhqIRMMAAsLIAJBADYCwAMgAkKAgICAgAE3ArgDIAJBuANqENYRIAJBsARqQQhqIhcgGjcDACACIBs3A7AEIBIgGjcDACACQQA2AsgDIAIgGzcDuAMgAkGUAmogAkGwBGogAyACQbgDaiAEIAJBoARqIAIoAqQEIAIoAqAEGxCpASACQbgDahCzCyABKAIARQ0BIAEgAigCvAQgBBDNHyACKAKwBCITKQMAIRwgAigCtAQhFiACIAIoArwENgLYASACIBM2AtABIAIgEyAWakEBajYCzAEgAiATQQhqNgLIASACIBxCf4VCgIGChIiQoMCAf4M3A8ABA0AgAkEQaiACQcABahDXGSACKAIQIhNFDQIgAigCFCEWAkAgEykDACIcQgODQgBSDQAgHKciFCAUKAIAIhRBAWo2AgAgFEF/TA0ECyACQbgDaiABIBwgEygCCBCPCSACKALAAyEUAkAgAikDuAMiGlANACACKALQAyETIAIpA8gDIRsCQCAWKQMAIhxCA4NCAFINACAcpyIWIBYoAgAiFkEBajYCACAWQX9MDQULIAIgHDcDyAMgAiAUNgLAAyACIBo3A7gDIBMgGyACQbgDahDvDwwBCwsCQCAUQXhqKQMAIhxCA4NCAFINACAcpyIBIAEoAgAiAUEBajYCACABQX9MDQMLIAJBADYCyAQgAiAcNwPABAJAIBYpAwAiHEIDg0IAUg0AIBynIhYgFigCACIWQQFqNgIAIBZBf0wNAwsgAkEANgIoIAIgHDcDICACQQM2AnAgAkGI05sBNgJsIAJCAzcCeCACQecErUIghiIcIAJBIGqthDcDyAMgAiAcIAJBwARqrYQ3A8ADIAIgHCATrYQ3A7gDIAIgAkG4A2o2AnQgAkHsAGpB7NObARCoHQALIBUgARDQHyASQTBqIAEQkyQMAwsgEiAXKQMANwMAIAIgAikDsAQ3A7gDIAJBoARqEOUhIAJBlAJqEIsQAkAgAigCxANFDQAgAkEANgKcAiACQoCAgICAATcClAIgAiABKQJANwKgAiACIAJBuANqNgKoAiAVIAJBlAJqENEfIAJBlAJqEPUfCyACQbgDahDRDAwCCwALIBUgFykDADcDACACIAIpA7AENwO4AyACQaAEahDlISACQZQCahCLEAJAIAIoAsQDRQ0AIAJBADYCnAIgAkKAgICAgAE3ApQCIAIgASkCQDcCoAIgAiACQbgDajYCqAIgEiACQZQCahDKDSACQZQCahD1HwsgAkG4A2oQ0QwMAAsLzTQCNH8DfiMAQaAEayIEJAACQAJAAkACQCADLQAlQQJGDQAgBEGYAWpBCGogA0EQaikDADcDACAEQZgBakEQaiADQRhqIgUpAwA3AwAgBCADKQMIIjg3A5gBIAUoAgAhBiADKAIgIQUgAygCBCEHIAMoAgAhCAJAIDhCA4NCAFINACA4pyIJIAkoAgAiCUEBajYCACAJQX9MDQILIANBCGohAyAEQTBqQSBqIAVBIGopAwA3AwAgBEEwakEYaiAFQRhqKQMANwMAIARBMGpBEGogBUEQaikDADcDACAEQTBqQQhqIAVBCGopAwA3AwAgBCAFKQMANwMwIARBCGogOCAGIARBMGoQZAJAAkAgAUIDgyI4QgBSDQAgAaciBiAGKAIAIglBAWo2AgAgCUF/TA0DIAQgAjYCOCAEIAE3AzAgBEEgaiADIARBMGoQ8AMgBiAGKAIAIgNBf2o2AgAgA0EBRw0BIAYgBigCEBDpHQwBCyAEIAI2AjggBCABNwMwIARBIGogAyAEQTBqEPADC0EALQDg9p0BGkHAABCEASIDRQ0BIARB/ABqQQxqIARBmAFqQQhqKQMANwIAIARB/ABqQRRqIARBmAFqQRBqKQMANwIAIANBADYCACADQgA3AiAgA0EoakIANwIAIANBMGpBADYCACAEIAQpA5gBNwKAASADIAQpAnw3AgQgA0EMaiAEQfwAakEIaikCADcCACADQRRqIARB/ABqQRBqKQIANwIAIANBHGogBEGUAWooAgA2AgAgA0IENwI0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QQA2AvgDIAIgFzcD8AMgAkEDNgIoIAJBiNObATYCJCACQgM3AjAgAkHnBK1CIIYiFyACQfADaq2ENwP4AiACIBcgAkGgBGqthDcD8AIgAiAXIAathDcD6AIgAiACQegCajYCLCACQSRqQezTmwEQqB0ACyAPIAEQ0B8gEiABELogIBMgARCSJCAQIAEQuSAgACEGDAMLIBIgEykDADcDACACIAIpA+ADNwPoAiACQdADahDlISACQcQBahCLEAJAIAIoAvQCRQ0AIAJBADYCzAEgAkKAgICAgAE3AsQBIAIgASkCQDcC0AEgAiACQegCajYC2AEgDyACQcQBahCjHSACQcQBahD1HwsgAkHoAmoQ0QwgACEGDAILIA9BCGohBgJAAkACQCABLQBFDQAgAkGAAjsAxAECQCAGKAIAQQNHDQAgDygCDCACQcQBahCYAQsgDygCKCACQcQBahCQCiACLQDEAQ0BCyACQfAAakEAIAEoAkBBABDcBwJAQdQARQ0AIA4gAkHwAGpB1AD8CgAACyANQQhqQQApA5j/nAEiFTcCACANQQApA5D/nAEiFjcCACAMIBY3AgAgDEEIaiIRIBU3AgAgCyAWNwIAIAtBCGogFTcCACACQQA6ANQCIAJBADYCxAEgAkEAOgDsAQJAIAYoAgBBA0cNACACLQC9AiEQIAJBADoAvQICQCAPKAIMIgYoAgBBGkcNACACQegCaiAGKQMIIAZBGGooAgAQ5xogDiACKQPoAiACKALwAhCQCwsgBiACQcQBahB4IAJBADoA7AEgAiAQOgC9AgsgAkHEAWogDygCKBD9BCACQdgCakEIaiIQIBEpAgA3AwAgAiAMKQIANwPYAiACQegCaiANEKQPIAogCxCkDyACIAJB2AJqNgKYAyACQdADakEIaiIGIBU3AwAgAiAWNwPQAyACQfADaiACQegCahDmECACQdADaiACKALwAxDnHwJAIAIoAogDQYGAgIB4Rg0AAkBBMEUNACACQfADaiACQegCakEw/AoAAAsCQANAIAJB4ANqIAJB8ANqEJANIAIpA+ADIhdQDQEgAiACKALoAzYCqAQgAiAXNwOgBAJAIAJB2AJqIAJBoARqELkbRQ0AIAIpA6AEEPMfDAELIAJB0ANqIBcQmQYMAAsLQgAQ1iEgAkHwA2oQ2x0LAkAgAigCwANBgYCAgHhGDQACQEEwRQ0AIAJB8ANqIApBMPwKAAALAkADQCACQaAEaiACQfADahCQDSACKQOgBCIXUA0BIAJB0ANqIBcQmQYMAAsLQgAQ1iEgAkHwA2oQ2x0LIAkgAikD0AM3AgAgCUEIaiIRIAYpAwA3AgACQEE8RSISDQAgAkEkaiAOQTz8CgAACyACQdgCahDjFyAIEIogAkAgEg0AIAJBxAFqIAJBJGpBPPwKAAALIBAgESkCADcDACACIAkpAgA3A9gCIAJBxAFqEPoIIAJB6AJqIAUQhBEgAkHoAmogAkHYAmoQwQogBiACQegCakEIaiISKQIANwMAIAIgAikC6AI3A9ADAkAgASgCHCIQRQ0AIAJB0ANqEJ8VIRMgBCgCACIRKQMAIRcgEyAQQQFqQQF2IBAgAigC3AMbEOcfIBFBCGohBiAXQn+FQoCBgoSIkKDAgH+DIRcDQAJAIBdQDQACQCARIBd6p0EBdEHwAXFrQXBqKQMAIhhCA4NCAFINACAYpyIUIBQoAgAiFEEBajYCACAUQX9MDQkLIBdCf3wgF4MhFyATIBgQmQYgEEF/aiEQDAELIBBFDQEgEUGAf2ohESAGKQMAQn+FQoCBgoSIkKDAgH+DIRcgBkEIaiEGDAALCyACQQA2AvACIAJCgICAgIABNwLoAiACQegCahDWESACQeADakEIaiITIBU3AwAgAiAWNwPgAyASIBU3AwAgAkEANgL4AiACIBY3A+gCIAJBxAFqIAJB4ANqIAMgAkHoAmogBCACQdADaiACKALUAyACKALQAxsQqQEgAkHoAmoQswsgASgCAEUNASABIAIoAuwDIAQQzR8gAigC4AMiBikDACEXIAIoAuQDIREgAiACKALsAzYCiAEgAiAGNgKAASACIAYgEWpBAWo2AnwgAiAGQQhqNgJ4IAIgF0J/hUKAgYKEiJCgwIB/gzcDcANAIAJBGGogAkHwAGoQ1xkgAigCGCIGRQ0CIAIoAhwhEQJAIAYpAwAiF0IDg0IAUg0AIBenIhAgECgCACIQQQFqNgIAIBBBf0wNBwsgAkHoAmogASAXIAYoAggQjwkgAigC8AIhEAJAIAIpA+gCIhVQDQAgAigCgAMhBiACKQP4AiEWAkAgESkDACIXQgODQgBSDQAgF6ciESARKAIAIhFBAWo2AgAgEUF/TA0ICyACIBc3A/gCIAIgEDYC8AIgAiAVNwPoAiAGIBYgAkHoAmoQ7w8MAQsLAkAgEEF4aikDACIXQgODQgBSDQAgF6ciASABKAIAIgFBAWo2AgAgAUF/TA0GCyACQQA2AqgEIAIgFzcDoAQCQCARKQMAIhdCA4NCAFINACAXpyIBIAEoAgAiAUEBajYCACABQX9MDQYLIAJBADYC+AMgAiAXNwPwAyACQQM2AiggAkGI05sBNgIkIAJCAzcCMCACQecErUIghiIXIAJB8ANqrYQ3A/gCIAIgFyACQaAEaq2ENwPwAiACIBcgBq2ENwPoAiACIAJB6AJqNgIsIAJBJGpB7NObARCoHQALIAYgARDQHyAPKAIoIAEQphcgACEGDAILIBIgEykDADcDACACIAIpA+ADNwPoAiACQdADahDlISACQcQBahCLEAJAIAIoAvQCRQ0AIAJBADYCzAEgAkKAgICAgAE3AsQBIAIgASkCQDcC0AEgAiACQegCajYC2AEgDygCCCAPKAIMIAJBxAFqEKMhIA8oAiggAkHEAWoQpBMgAkHEAWoQ9R8LIAJB6AJqENEMIAAhBgwBCyAGIAEQxwQgACEGDAALCyACQbAEaiQADwsAC/0rAQd/IwBBgAlrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgNBfGpBACADQXtqQQhJGw4JAAECCAcLCwYFAAsgA0EDRw0JIAAoAgQiAygCAEEaRw0DIAIgASgCACABKAIEIANBCGoiBBCCDSACKAIAQTJGDQkgAxDRASADQThqIAJBOGopAwA3AwAgA0EwaiACQTBqKQMANwMAIANBKGogAkEoaikDADcDACADQSBqIAJBIGopAwA3AwAgA0EYaiACQRhqKQMANwMAIANBEGogAkEQaikDADcDACAEIAJBCGopAwA3AwAgAyACKQMANwMADAkLIAAoAghBA0cNByAAKAIMIgMoAgBBGkcNASACQcAAaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAkBBMkYNByADENEBIANBOGogAkHAAGpBOGopAwA3AwAgA0EwaiACQcAAakEwaikDADcDACADQShqIAJBwABqQShqKQMANwMAIANBIGogAkHAAGpBIGopAwA3AwAgA0EYaiACQcAAakEYaikDADcDACADQRBqIAJBwABqQRBqKQMANwMAIAQgAkHAAGpBCGopAwA3AwAgAyACKQNANwMADAcLAkAgACgCICIFQQhqKAIAIgNFDQAgBUEEaigCACIGIANBBnRqIQADQAJAIAZBOGooAgAiA0UNACAGQTRqKAIAIQQgA0EMbCEHA0ACQAJAIAQoAgAiAygCAEEaRw0AIAJBwAdqIAEoAgAgASgCBCADQQhqIggQgg0gAigCwAdBMkYNASADENEBIANBOGogAkHAB2pBOGopAwA3AwAgA0EwaiACQcAHakEwaikDADcDACADQShqIAJBwAdqQShqKQMANwMAIANBIGogAkHAB2pBIGopAwA3AwAgA0EYaiACQcAHakEYaikDADcDACADQRBqIAJBwAdqQRBqKQMANwMAIAggAkHAB2pBCGopAwA3AwAgAyACKQPABzcDAAwBCyADIAEQRgsgBEEMaiEEIAdBdGoiBw0ACwsgBiABEJsEIAZBwABqIgMhBiADIABHDQALCwJAIAVBFGooAgAiA0UNACAFQRBqKAIAIQQgA0EMbCEHA0ACQAJAIAQoAgAiAygCAEEaRw0AIAJBgAdqIAEoAgAgASgCBCADQQhqIggQgg0gAigCgAdBMkYNASADENEBIANBOGogAkGAB2pBOGopAwA3AwAgA0EwaiACQYAHakEwaikDADcDACADQShqIAJBgAdqQShqKQMANwMAIANBIGogAkGAB2pBIGopAwA3AwAgA0EYaiACQYAHakEYaikDADcDACADQRBqIAJBgAdqQRBqKQMANwMAIAggAkGAB2pBCGopAwA3AwAgAyACKQOABzcDAAwBCyADIAEQRgsgBEEMaiEEIAdBdGoiBw0ACwsgBSgCGEGAgICAeEYNCCAFQSBqKAIAIgRFDQggBUEcaigCACEDIARBMGwhBANAIAMgARBwIANBMGohAyAEQVBqIgQNAAwJCwsgAyABEEYMBQsgAyABEEYMBQsCQCAAKAIIIgNBBUYNACADQQNHDQACQCAAKAIMIgMoAgBBGkcNACACQcAEaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAsAEQTJGDQEgAxDRASADQThqIAJBwARqQThqKQMANwMAIANBMGogAkHABGpBMGopAwA3AwAgA0EoaiACQcAEakEoaikDADcDACADQSBqIAJBwARqQSBqKQMANwMAIANBGGogAkHABGpBGGopAwA3AwAgA0EQaiACQcAEakEQaikDADcDACAEIAJBwARqQQhqKQMANwMAIAMgAikDwAQ3AwAMAQsgAyABEEYLAkAgACgCPCIDRQ0AAkAgAygCAEEaRw0AIAJBgARqIAEoAgAgASgCBCADQQhqIgQQgg0gAigCgARBMkYNASADENEBIANBOGogAkGABGpBOGopAwA3AwAgA0EwaiACQYAEakEwaikDADcDACADQShqIAJBgARqQShqKQMANwMAIANBIGogAkGABGpBIGopAwA3AwAgA0EYaiACQYAEakEYaikDADcDACADQRBqIAJBgARqQRBqKQMANwMAIAQgAkGABGpBCGopAwA3AwAgAyACKQOABDcDAAwBCyADIAEQRgsgACgCOCIDRQ0FIAAoAjQhBCADQQxsIQcDQAJAAkAgBCgCACIDKAIAQRpHDQAgAkHAA2ogASgCACABKAIEIANBCGoiCBCCDSACKALAA0EyRg0BIAMQ0QEgA0E4aiACQcADakE4aikDADcDACADQTBqIAJBwANqQTBqKQMANwMAIANBKGogAkHAA2pBKGopAwA3AwAgA0EgaiACQcADakEgaikDADcDACADQRhqIAJBwANqQRhqKQMANwMAIANBEGogAkHAA2pBEGopAwA3AwAgCCACQcADakEIaikDADcDACADIAIpA8ADNwMADAELIAMgARBGCyAEQQxqIQQgB0F0aiIHDQAMBgsLIAAoAgwiBEUNBCAAKAIIIQMgBEEwbCEEA0AgAyABEHAgA0EwaiEDIARBUGoiBA0ADAULCwJAIAAoAiQiA0UNAAJAIAMoAgBBGkcNACACQYADaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAoADQTJGDQEgAxDRASADQThqIAJBgANqQThqKQMANwMAIANBMGogAkGAA2pBMGopAwA3AwAgA0EoaiACQYADakEoaikDADcDACADQSBqIAJBgANqQSBqKQMANwMAIANBGGogAkGAA2pBGGopAwA3AwAgA0EQaiACQYADakEQaikDADcDACAEIAJBgANqQQhqKQMANwMAIAMgAikDgAM3AwAMAQsgAyABEEYLIAAoAjQiA0UNAyAAKAIwIQQgA0EMbCEHA0ACQAJAIAQoAgAiAygCAEEaRw0AIAJBwAJqIAEoAgAgASgCBCADQQhqIggQgg0gAigCwAJBMkYNASADENEBIANBOGogAkHAAmpBOGopAwA3AwAgA0EwaiACQcACakEwaikDADcDACADQShqIAJBwAJqQShqKQMANwMAIANBIGogAkHAAmpBIGopAwA3AwAgA0EYaiACQcACakEYaikDADcDACADQRBqIAJBwAJqQRBqKQMANwMAIAggAkHAAmpBCGopAwA3AwAgAyACKQPAAjcDAAwBCyADIAEQRgsgBEEMaiEEIAdBdGoiBw0ADAQLCwJAIAAoAghBA0cNAAJAIAAoAgwiAygCAEEaRw0AIAJBgAJqIAEoAgAgASgCBCADQQhqIgQQgg0gAigCgAJBMkYNASADENEBIANBOGogAkGAAmpBOGopAwA3AwAgA0EwaiACQYACakEwaikDADcDACADQShqIAJBgAJqQShqKQMANwMAIANBIGogAkGAAmpBIGopAwA3AwAgA0EYaiACQYACakEYaikDADcDACADQRBqIAJBgAJqQRBqKQMANwMAIAQgAkGAAmpBCGopAwA3AwAgAyACKQOAAjcDAAwBCyADIAEQRgsCQCAAKAI8IgNFDQACQCADKAIAQRpHDQAgAkHAAWogASgCACABKAIEIANBCGoiBBCCDSACKALAAUEyRg0BIAMQ0QEgA0E4aiACQcABakE4aikDADcDACADQTBqIAJBwAFqQTBqKQMANwMAIANBKGogAkHAAWpBKGopAwA3AwAgA0EgaiACQcABakEgaikDADcDACADQRhqIAJBwAFqQRhqKQMANwMAIANBEGogAkHAAWpBEGopAwA3AwAgBCACQcABakEIaikDADcDACADIAIpA8ABNwMADAELIAMgARBGCyAAKAI4IgNFDQIgACgCNCEEIANBDGwhBwNAAkACQCAEKAIAIgMoAgBBGkcNACACQYABaiABKAIAIAEoAgQgA0EIaiIIEIINIAIoAoABQTJGDQEgAxDRASADQThqIAJBgAFqQThqKQMANwMAIANBMGogAkGAAWpBMGopAwA3AwAgA0EoaiACQYABakEoaikDADcDACADQSBqIAJBgAFqQSBqKQMANwMAIANBGGogAkGAAWpBGGopAwA3AwAgA0EQaiACQYABakEQaikDADcDACAIIAJBgAFqQQhqKQMANwMAIAMgAikDgAE3AwAMAQsgAyABEEYLIARBDGohBCAHQXRqIgcNAAwDCwsCQCAAKAIwIgVBCGooAgAiA0UNACAFQQRqKAIAIgYgA0EGdGohAANAAkAgBkE4aigCACIDRQ0AIAZBNGooAgAhBCADQQxsIQcDQAJAAkAgBCgCACIDKAIAQRpHDQAgAkHABmogASgCACABKAIEIANBCGoiCBCCDSACKALABkEyRg0BIAMQ0QEgA0E4aiACQcAGakE4aikDADcDACADQTBqIAJBwAZqQTBqKQMANwMAIANBKGogAkHABmpBKGopAwA3AwAgA0EgaiACQcAGakEgaikDADcDACADQRhqIAJBwAZqQRhqKQMANwMAIANBEGogAkHABmpBEGopAwA3AwAgCCACQcAGakEIaikDADcDACADIAIpA8AGNwMADAELIAMgARBGCyAEQQxqIQQgB0F0aiIHDQALCyAGIAEQmwQgBkHAAGoiAyEGIAMgAEcNAAsLAkAgBUEUaigCACIDRQ0AIAVBEGooAgAhBCADQQxsIQcDQAJAAkAgBCgCACIDKAIAQRpHDQAgAkGABmogASgCACABKAIEIANBCGoiCBCCDSACKAKABkEyRg0BIAMQ0QEgA0E4aiACQYAGakE4aikDADcDACADQTBqIAJBgAZqQTBqKQMANwMAIANBKGogAkGABmpBKGopAwA3AwAgA0EgaiACQYAGakEgaikDADcDACADQRhqIAJBgAZqQRhqKQMANwMAIANBEGogAkGABmpBEGopAwA3AwAgCCACQYAGakEIaikDADcDACADIAIpA4AGNwMADAELIAMgARBGCyAEQQxqIQQgB0F0aiIHDQALCyAFKAIYQYCAgIB4Rg0BIAVBIGooAgAiBEUNASAFQRxqKAIAIQMgBEEwbCEEA0AgAyABEHAgA0EwaiEDIARBUGoiBA0ADAILCwJAIAAoAkgiA0UNACAAKAJEIgYgA0EGdGohBQNAAkACQCAGKAIAQQdGDQACQCAGQThqKAIAIgNFDQAgBkE0aigCACEEIANBDGwhBwNAAkACQCAEKAIAIgMoAgBBGkcNACACQcAFaiABKAIAIAEoAgQgA0EIaiIIEIINIAIoAsAFQTJGDQEgAxDRASADQThqIAJBwAVqQThqKQMANwMAIANBMGogAkHABWpBMGopAwA3AwAgA0EoaiACQcAFakEoaikDADcDACADQSBqIAJBwAVqQSBqKQMANwMAIANBGGogAkHABWpBGGopAwA3AwAgA0EQaiACQcAFakEQaikDADcDACAIIAJBwAVqQQhqKQMANwMAIAMgAikDwAU3AwAMAQsgAyABEEYLIARBDGohBCAHQXRqIgcNAAsLIAYgARCqAwwBCwJAIAZBOGooAgAiA0UNACAGQTRqKAIAIQQgA0EMbCEHA0ACQAJAIAQoAgAiAygCAEEaRw0AIAJBgAVqIAEoAgAgASgCBCADQQhqIggQgg0gAigCgAVBMkYNASADENEBIANBOGogAkGABWpBOGopAwA3AwAgA0EwaiACQYAFakEwaikDADcDACADQShqIAJBgAVqQShqKQMANwMAIANBIGogAkGABWpBIGopAwA3AwAgA0EYaiACQYAFakEYaikDADcDACADQRBqIAJBgAVqQRBqKQMANwMAIAggAkGABWpBCGopAwA3AwAgAyACKQOABTcDAAwBCyADIAEQRgsgBEEMaiEEIAdBdGoiBw0ACwsgBi0AHEECRw0AAkACQAJAAkACQAJAIAYoAggiAygCAA4HBQABAgQFAwULIANBDGooAgAiBEUNBCADQQhqKAIAIQMgBEEobCEEA0ACQCADKAIAQQdGDQAgAyABEKoDCyADQShqIQMgBEFYaiIEDQAMBQsLIAMoAgQgARCqAwwDCyADQQxqKAIAIgRFDQIgA0EIaigCACEDIARBOGwhBANAAkACQAJAAkACQCADKAIADgMAAQIACyADQQhqIAEQowQMAwsgA0EwaigCACIHRQ0CIAcoAgBBGkcNASACQcAIaiABKAIAIAEoAgQgB0EIaiIIEIINIAIoAsAIQTJGDQIgBxDRASAHQThqIAJBwAhqQThqKQMANwMAIAdBMGogAkHACGpBMGopAwA3AwAgB0EoaiACQcAIakEoaikDADcDACAHQSBqIAJBwAhqQSBqKQMANwMAIAdBGGogAkHACGpBGGopAwA3AwAgB0EQaiACQcAIakEQaikDADcDACAIIAJBwAhqQQhqKQMANwMAIAcgAikDwAg3AwAMAgsgA0EEaiABENwFDAELIAcgARBGCyADQThqIQMgBEFIaiIEDQAMAwsLAkAgAygCBCIDKAIAQRpHDQAgAkHACGogASgCACABKAIEIANBCGoiBBCCDSACKALACEEyRg0CIAMQ0QEgA0E4aiACQcAIakE4aikDADcDACADQTBqIAJBwAhqQTBqKQMANwMAIANBKGogAkHACGpBKGopAwA3AwAgA0EgaiACQcAIakEgaikDADcDACADQRhqIAJBwAhqQRhqKQMANwMAIANBEGogAkHACGpBEGopAwA3AwAgBCACQcAIakEIaikDADcDACADIAIpA8AINwMADAILIAMgARBGDAELIAMoAgQgARCqAwJAIAMoAggiAygCAEEaRw0AIAJBwAhqIAEoAgAgASgCBCADQQhqIgQQgg0gAigCwAhBMkYNASADENEBIANBOGogAkHACGpBOGopAwA3AwAgA0EwaiACQcAIakEwaikDADcDACADQShqIAJBwAhqQShqKQMANwMAIANBIGogAkHACGpBIGopAwA3AwAgA0EYaiACQcAIakEYaikDADcDACADQRBqIAJBwAhqQRBqKQMANwMAIAQgAkHACGpBCGopAwA3AwAgAyACKQPACDcDAAwBCyADIAEQRgsCQCAGKAIMIgMoAgBBGkcNACACQYAIaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAoAIQTJGDQEgAxDRASADQThqIAJBgAhqQThqKQMANwMAIANBMGogAkGACGpBMGopAwA3AwAgA0EoaiACQYAIakEoaikDADcDACADQSBqIAJBgAhqQSBqKQMANwMAIANBGGogAkGACGpBGGopAwA3AwAgA0EQaiACQYAIakEQaikDADcDACAEIAJBgAhqQQhqKQMANwMAIAMgAikDgAg3AwAMAQsgAyABEEYLIAZBwABqIgYgBUcNAAsLIAAoAiBBgICAgHhGDQAgACgCKCIERQ0AIAAoAiQhAyAEQTBsIQQDQCADIAEQcCADQTBqIQMgBEFQaiIEDQALCyACQYAJaiQAC6wtAgx/An4jAEHgAGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgNBfGoiBEEEIARBB0kbDgcAAQIDBAUGAAsgAS0ANEEBRw0MIAEoAjAQlxMhBCACQcAAakEIakEAKQOY/5wBIg43AwAgAkHAAGpBEGpBACkDkP+cASIPNwMAIAJBwABqQRhqIA43AwAgAkE0aiABQTRqKAIANgIAIAJBCGogDjcDACACQRBqIA83AwAgAkEYaiAONwMAIAIg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Ai8AOSEEIAJBgQI7ADkgASgCACACEIACIAIgBDsAOQsgA0EoaiIDIAdHDQALCwJAIAAoAhgiAUUNACACLQA0QQFHDQAgAi8AOSEEIAJBgQI7ADkgASgCACACEIACIAIgBDsAOQsCQCACKAIEIgFFDQAgAigCACACKAIMENoMIAEgAUEEdEEXakFwcSIEakEJaiIBRQ0AIAIoAgAgBGsgAUEIEL0TCyACQRBqENYXDAsLIAEtADRBAUcNCiAALQAVRQ0JIAEtADkhBCABQQE6ADkgACgCECABEG0gASAEOgA5DAkLIAAtABQNAwwHCyAALQA0RQ0FIAEtADkhBCABQQE6ADkgACgCMCABEG0gASAEOgA5DAULIAEtADRBAUcNByABKAIwEJcTIQQgAkHAAGpBCGpBACkDmP+cASIONwMAIAJBwABqQRBqQQApA5D/nAEiDzcDACACQcAAakEYaiAONwMAIAJBNGogAUE0aigCADYCACACQQhqIA43AwAgAkEQaiAPNwMAIAJBGGogDjcDACACIA83A0AgAiABKQIsNwIsIAIgDzcDACABLQA4IQMgAS0APSEFIAIgAS8AOzsAOyACQYECOwA5IAJBAToAKCACIAQ2AiQgAiABNgIgIAIgBToAPSACIAM6ADgCQCAAKAIgIgFFDQAgAi0ANEEBRw0AIAJBADoAOSACIAEQoQsgAkEBOgA6CyAALQAkDQIMAwsgAS0ANEEBRw0GIAAoAgwhAyAAKAIIIQQgAiABNgIAAkAgA0UNACADQShsIQMDQCACIAQQngUgBEEoaiEEIANBWGoiAw0ACwsgACgCECIERQ0GIAEtADRBAUcNBiABLwA5IQAgAUGBAjsAOSAEKAIAIAEQgAIgASAAOwA5DAYLIAEtADkhBCABQQE6ADkgACgCBCABEG0gASAEOgA5DAMLIAItADkhASACQQE6ADkgACgCECACEG0gAiABOgA5CwJAIAAoAgwiAUUNACACLQA0QQFHDQAgACgCCCIDIAFBKGxqIQcgAkHAAGpBDGohCCACQcAAakEIaiEJA0ACQCACLQA0QQFHDQACQAJAAkACQCADKAIADgQAAQIDAAsgAi0AOiEEIAItADkhAQJAIAMoAiAiBUUNACACQYECOwA5IAUoAgAgAhCAAiACIAQ6ADoLIAIgAToAOSACIANBCGoQ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ACgCICIEKAIwIgNFDQAgAS0AOSEHIAFBAToAOSADIAEQbSABIAc6ADkLIAEoAjAQlxMhAyACQdABakE0aiABQTRqKAIANgIAIAJBADoAiQIgAkHQAWpBCGpBACkDmP+cASILNwMAIAJB4AFqQQApA5D/nAEiDDcDACACQegBaiALNwMAIAIgATYC8AEgAiADNgL0ASACQQE6APgBIAIgASkCLDcC/AEgAiABKAE6NgGKAiACIAEtADg6AIgCIAIgDDcD0AECQCAALQAcQQJGDQAgAkHQAWogAEEIahCbEQsgAkEBOgCJAiACQdABaiAEEHkCQCACKALUASIBRQ0AIAIoAtABIAIoAtwBENoMIAEgAUEEdEEXakFwcSIAakEJaiIBRQ0AIAIoAtABIABrIAFBCBC9EwsgAkHgAWoQ1hcMDwsgACgCDCIARQ0OIAEtADkhBCABQQE6ADkgACABEG0gASAEOgA5DA4LIAEtADkhBCABQQE6ADkgACgCBCABEG0gASAEOgA5DA0LIAEtADkhBCABQQE6ADkgACgCBCABEG0gASAEOgA5DAwLIABBIGohBAJAIAAtADRBAkcNAANAIAQoAgAiAEEYaiEEIAAtACxBAkYNAAsLIAEgBBCbEQwLCyAAKAIEIAEQ4QEMCgsgACgCDCEEIAAoAgghACACIAE2AtABIARFDQkgBEEobCEBA0AgAkHQAWogABCJBSAAQShqIQAgAUFYaiIBDQAMCgsLAkACQCABLQA0DQAgAS0AOSEEDAELIAEtADkhBCABLQA6IQMgAUGBAjsAOSAAKAIIIAEQgAIgASADOgA6CyABQQE6ADkgACgCBCABEG0gASAEOgA5DAgLIAEtADkhBCABQQE6ADkgACgCBCABEG0gASAEOgA5DAcLIAEtADkhBCABQQE6ADkgACgCBCABEG0gASAEOgA5DAYLAkACQCABLQA0DQAgAS0AOSEEDAELIAEtADkhBCABLQA6IQMgAUGBAjsAOSAAKAIIIAEQgAIgASADOgA6CyABQQE6ADkgACgCBCABEG0gASAEOgA5DAULIAEtADkhByABQQE6ADkgACgCBCABEG0gASAHOgA5IAEtADRBAUcNBCAAKAIIIQAgAS0AOiEGIAFBgQI7ADkCQCAAKAIIIgRFDQAgACgCBCEAIARBAnQhBANAAkAgAS0ANEEBRw0AIAAoAgAhAyABQYECOwA5IAMgARCAAiABQYECOwA5CyAAQQRqIQAgBEF8aiIEDQALCyABIAY6ADogASAHOgA5DAQLAkACQCABLQA0DQAgAS0AOSEEDAELIAEtADkhBCABLQA6IQMgAUGBAjsAOSAAKAIIIAEQgAIgASADOgA6CyABQQE6ADkgACgCBCABEG0gASAEOgA5DAMLAkAgACgCBCIAKAIAQQNHDQAgAEEEaiABENIIDAMLIAAgARCfGgwCCyACIAM2AkALAkAgB0UNACACQSBqEIIRCwJAIAAoAgwiBEUNACAAKAIIIQEgBEEobCEEA0AgASACQdABahCaBCABQShqIQEgBEFYaiIEDQALCyACIAU6AIkCAkACQCAGKAIAQYCAgIB4Rw0AIAYoAgQhASACQQE6AIkCIAEgAkHQAWoQbSACIAU6AIkCDAELAkAgBigCFA0AIAIoAvQBIgFFDQAgBkEAIAEQjQY2AhQLAkAgAi0AjQIiAw0AAkAgBigCCA0AIAJBADoAjQIMAQsgAiAGKAIEIgEoAgAgAUEEaigCABDnFjoAjQILIAJBADsARSACQShqQQApA5j/nAEiCzcDACACQThqIAs3AwAgAiACLQCIAjoARCACQQApA5D/nAEiCzcDICACIAs3AzAgAiACQdABajYCQCACQSBqIAYQqgcgAkEgahDWFyACQTBqENYXAkAgBigCCCIERQ0AIAYoAgQhASAEQTBsIQQDQCABIAJB0AFqEMcBIAFBMGohASAEQVBqIgQNAAsLIAIgAzoAjQILAkAgACgCJCIBRQ0AIAItAIQCQQFHDQAgAi8AiQIhACACQYECOwCJAiABKAIAIAJB0AFqEIACIAIgADsAiQILAkAgAigC1AEiAUUNACACKALQASACKALcARDaDCABIAFBBHRBF2pBcHEiAGpBCWoiAUUNACACKALQASAAayABQQgQvRMLIAJB4AFqENYXCyACQbACaiQAC9IoAQl/IwBBEGsiAiQAIAFBEGohAwJAAkACQAJAAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgRBdGoiBUEHIAVBJkkbDiYdAAECAwQFBgcICQoLDB0dDQ4PEBEdEhITHR0UFRYXFxkaGx0cHR0L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KGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgBCACQQhqKQMANwMAIAMgAikDADcDAAsgACgCCCEADBcLIAAoAgwiAEUNFyAAKAIAQRpHDQ0gAkHABGogASgCACABKAIEIABBCGoiARCCDSACKALABEEyRg0XIAAQ0QEgAEE4aiACQcAEakE4aikDADcDACAAQTBqIAJBwARqQTBqKQMANwMAIABBKGogAkHABGpBKGopAwA3AwAgAEEgaiACQcAEakEgaikDADcDACAAQRhqIAJBwARqQRhqKQMANwMAIABBEGogAkHABGpBEGopAwA3AwAgASACQcAEakEIaikDADcDACAAIAIpA8AENwMADBcLIAAoAighAAwVCyAAKAIEIgMoAgBBGkcNCiACQcAAaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAkBBMkYNEyADENEBIANBOGogAkHAAGpBOGopAwA3AwAgA0EwaiACQcAAakEwaikDADcDACADQShqIAJBwABqQShqKQMANwMAIANBIGogAkHAAGpBIGopAwA3AwAgA0EYaiACQcAAakEYaikDADcDACADQRBqIAJBwABqQRBqKQMANwMAIAQgAkHAAGpBCGopAwA3AwAgAyACKQNANwMADBMLIAAoAhAiAygCAEEaRw0IIAJBgAFqIAEoAgAgASgCBCADQQhqIgQQgg0gAigCgAFBMkYNESADENEBIANBOGogAkGAAWpBOGopAwA3AwAgA0EwaiACQYABakEwaikDADcDACADQShqIAJBgAFqQShqKQMANwMAIANBIGogAkGAAWpBIGopAwA3AwAgA0EYaiACQYABakEYaikDADcDACADQRBqIAJBgAFqQRBqKQMANwMAIAQgAkGAAWpBCGopAwA3AwAgAyACKQOAATcDAAwRCyAAKAIEIgAoAgBBGkcNBiACQcABaiABKAIAIAEoAgQgAEEIaiIBEIINIAIoAsABQTJGDRMgABDRASAAQThqIAJBwAFqQThqKQMANwMAIABBMGogAkHAAWpBMGopAwA3AwAgAEEoaiACQcABakEoaikDADcDACAAQSBqIAJBwAFqQSBqKQMANwMAIABBGGogAkHAAWpBGGopAwA3AwAgAEEQaiACQcABakEQaikDADcDACABIAJBwAFqQQhqKQMANwMAIAAgAikDwAE3AwAMEwsCQCAAKAIEIgQoAlAiA0UNACAEKAJMIQAgA0EwbCEDA0AgACABEHAgAEEwaiEAIANBUGoiAw0ACwsCQAJAAkAgBCgCAEF5ag4CAQIACyAEIAEQqgMLIAQoAjAiA0UNACAEKAIsIQAgA0EwbCEDA0AgACABEHAgAEEwaiEAIANBUGoiAw0ACwsgBCgCYEGAgICAeEYNEiAEKAJoIgNFDRIgBCgCZCEAIANBMGwhAwNAIAAgARBwIABBMGohACADQVBqIgMNAAwTCwsgACgCBCIDKAIAQRpHDQMgAkGAAmogASgCACABKAIEIANBCGoiBBCCDQJAIAIoAoACQTJGDQAgAxDRASADQThqIAJBgAJqQThqKQMANwMAIANBMGogAkGAAmpBMGopAwA3AwAgA0EoaiACQYACakEoaikDADcDACADQSBqIAJBgAJqQSBqKQMANwMAIANBGGogAkGAAmpBGGopAwA3AwAgA0EQaiACQYACakEQaikDADcDACAEIAJBgAJqQQhqKQMANwMAIAMgAikDgAI3AwALIAAoAgghAAwQCyAAKAIEIgMoAgBBGkcNASACQcACaiABKAIAIAEoAgQgA0EIaiIEEIINAkAgAigCwAJBMkYNACADENEBIANBOGogAkHAAmpBOGopAwA3AwAgA0EwaiACQcACakEwaikDADcDACADQShqIAJBwAJqQShqKQMANwMAIANBIGogAkHAAmpBIGopAwA3AwAgA0EYaiACQcACakEYaikDADcDACADQRBqIAJBwAJqQRBqKQMANwMAIAQgAkHAAmpBCGopAwA3AwAgAyACKQPAAjcDAAsgACgCCCEADA8LIAAoAgQiA0ECRg0LAkACQCADQQFxRQ0AIAAoAggiAygCAEEaRw0BIAJBgAZqIAEoAgAgASgCBCADQQhqIgQQgg0gAigCgAZBMkYNDSADENEBIANBOGogAkGABmpBOGopAwA3AwAgA0EwaiACQYAGakEwaikDADcDACADQShqIAJBgAZqQShqKQMANwMAIANBIGogAkGABmpBIGopAwA3AwAgA0EYaiACQYAGakEYaikDADcDACADQRBqIAJBgAZqQRBqKQMANwMAIAQgAkGABmpBCGopAwA3AwAgAyACKQOABjcDAAwNCyAAKAIIIgMoAggiBEUNDCADKAIEIgMgBEE4bGohBQNAIAMgARCqAwJAIANBMGooAgAiBEUNAAJAIAQoAgBBGkcNACACQYAHaiABKAIAIAEoAgQgBEEIaiIGEIINIAIoAoAHQTJGDQEgBBDRASAEQThqIAJBgAdqQThqKQMANwMAIARBMGogAkGAB2pBMGopAwA3AwAgBEEoaiACQYAHakEoaikDADcDACAEQSBqIAJBgAdqQSBqKQMANwMAIARBGGogAkGAB2pBGGopAwA3AwAgBEEQaiACQYAHakEQaikDADcDACAGIAJBgAdqQQhqKQMANwMAIAQgAikDgAc3AwAMAQsgBCABEEYLIANBOGoiAyAFRw0ADA0LCyADIAEQRgwLCyADIAEQRiAAKAIIIQAMDQsgAyABEEYgACgCCCEADAwLIAAgARBGDAwLIAMgARBGDAgLIAMgARBGDAgLIAAgARBGDAkLIAMgARBGIAAoAgghAAwHCwJAIAAoAgQiACgCAEEaRw0AIAJBgARqIAEoAgAgASgCBCAAQQhqIgEQgg0gAigCgARBMkYNCCAAENEBIABBOGogAkGABGpBOGopAwA3AwAgAEEwaiACQYAEakEwaikDADcDACAAQShqIAJBgARqQShqKQMANwMAIABBIGogAkGABGpBIGopAwA3AwAgAEEYaiACQYAEakEYaikDADcDACAAQRBqIAJBgARqQRBqKQMANwMAIAEgAkGABGpBCGopAwA3AwAgACACKQOABDcDAAwICyAAIAEQRgwHCyAAQQhqIAEQzQEMBgsCQAJAAkACQCAAKAIEDgMAAgEACyAAKAIIIgMoAggiBEUNAiADKAIEIgMgBEE4bGohBQNAIAMgARCqAwJAIANBMGooAgAiBEUNAAJAIAQoAgBBGkcNACACQYAHaiABKAIAIAEoAgQgBEEIaiIGEIINIAIoAoAHQTJGDQEgBBDRASAEQThqIAJBgAdqQThqKQMANwMAIARBMGogAkGAB2pBMGopAwA3AwAgBEEoaiACQYAHakEoaikDADcDACAEQSBqIAJBgAdqQSBqKQMANwMAIARBGGogAkGAB2pBGGopAwA3AwAgBEEQaiACQYAHakEQaikDADcDACAGIAJBgAdqQQhqKQMANwMAIAQgAikDgAc3AwAMAQsgBCABEEYLIANBOGoiAyAFRw0ADAMLCyAAKAIIIAEQmwQMAQsgACgCCCIDKAIIIgRFDQAgAygCBCIDIARBOGxqIQUDQCADIAEQqgMCQCADQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkGAB2ogASgCACABKAIEIARBCGoiBhCCDSACKAKAB0EyRg0BIAQQ0QEgBEE4aiACQYAHakE4aikDADcDACAEQTBqIAJBgAdqQTBqKQMANwMAIARBKGogAkGAB2pBKGopAwA3AwAgBEEgaiACQYAHakEgaikDADcDACAEQRhqIAJBgAdqQRhqKQMANwMAIARBEGogAkGAB2pBEGopAwA3AwAgBiACQYAHakEIaikDADcDACAEIAIpA4AHNwMADAELIAQgARBGCyADQThqIgMgBUcNAAsLAkAgACgCDCIDKAIAQRpHDQAgAkHAA2ogASgCACABKAIEIANBCGoiBBCCDQJAIAIoAsADQTJGDQAgAxDRASADQThqIAJBwANqQThqKQMANwMAIANBMGogAkHAA2pBMGopAwA3AwAgA0EoaiACQcADakEoaikDADcDACADQSBqIAJBwANqQSBqKQMANwMAIANBGGogAkHAA2pBGGopAwA3AwAgA0EQaiACQcADakEQaikDADcDACAEIAJBwANqQQhqKQMANwMAIAMgAikDwAM3AwALIAAoAhAhAAwFCyADIAEQRiAAKAIQIQAMBAsCQAJAAkACQCAAKAIEDgMAAgEACyAAKAIIIgMoAggiBEUNAiADKAIEIgMgBEE4bGohBQNAIAMgARCqAwJAIANBMGooAgAiBEUNAAJAIAQoAgBBGkcNACACQYAHaiABKAIAIAEoAgQgBEEIaiIGEIINIAIoAoAHQTJGDQEgBBDRASAEQThqIAJBgAdqQThqKQMANwMAIARBMGogAkGAB2pBMGopAwA3AwAgBEEoaiACQYAHakEoaikDADcDACAEQSBqIAJBgAdqQSBqKQMANwMAIARBGGogAkGAB2pBGGopAwA3AwAgBEEQaiACQYAHakEQaikDADcDACAGIAJBgAdqQQhqKQMANwMAIAQgAikDgAc3AwAMAQsgBCABEEYLIANBOGoiAyAFRw0ADAMLCyAAKAIIIAEQmwQMAQsgACgCCCIDKAIIIgRFDQAgAygCBCIDIARBOGxqIQUDQCADIAEQqgMCQCADQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkGAB2ogASgCACABKAIEIARBCGoiBhCCDSACKAKAB0EyRg0BIAQQ0QEgBEE4aiACQYAHakE4aikDADcDACAEQTBqIAJBgAdqQTBqKQMANwMAIARBKGogAkGAB2pBKGopAwA3AwAgBEEgaiACQYAHakEgaikDADcDACAEQRhqIAJBgAdqQRhqKQMANwMAIARBEGogAkGAB2pBEGopAwA3AwAgBiACQYAHakEIaikDADcDACAEIAIpA4AHNwMADAELIAQgARBGCyADQThqIgMgBUcNAAsLAkAgACgCDCIDKAIAQRpHDQAgAkGAA2ogASgCACABKAIEIANBCGoiBBCCDQJAIAIoAoADQTJGDQAgAxDRASADQThqIAJBgANqQThqKQMANwMAIANBMGogAkGAA2pBMGopAwA3AwAgA0EoaiACQYADakEoaikDADcDACADQSBqIAJBgANqQSBqKQMANwMAIANBGGogAkGAA2pBGGopAwA3AwAgA0EQaiACQYADakEQaikDADcDACAEIAJBgANqQQhqKQMANwMAIAMgAikDgAM3AwALIAAoAhAhAAwECyADIAEQRiAAKAIQIQAMAwsCQCAAKAIYIgNFDQACQCADKAIAQRpHDQAgAkHABWogASgCACABKAIEIANBCGoiBBCCDSACKALABUEyRg0BIAMQ0QEgA0E4aiACQcAFakE4aikDADcDACADQTBqIAJBwAVqQTBqKQMANwMAIANBKGogAkHABWpBKGopAwA3AwAgA0EgaiACQcAFakEgaikDADcDACADQRhqIAJBwAVqQRhqKQMANwMAIANBEGogAkHABWpBEGopAwA3AwAgBCACQcAFakEIaikDADcDACADIAIpA8AFNwMADAELIAMgARBGCwJAAkAgACgCHCIDRQ0AIAMoAgBBGkcNASACQYAFaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAoAFQTJGDQAgAxDRASADQThqIAJBgAVqQThqKQMANwMAIANBMGogAkGABWpBMGopAwA3AwAgA0EoaiACQYAFakEoaikDADcDACADQSBqIAJBgAVqQSBqKQMANwMAIANBGGogAkGABWpBGGopAwA3AwAgA0EQaiACQYAFakEQaikDADcDACAEIAJBgAVqQQhqKQMANwMAIAMgAikDgAU3AwALIAAoAgwhAAwDCyADIAEQRiAAKAIMIQAMAgsgACgCDCIDRQ0CIAAoAggiBCADQRhsaiEFA0ACQCAEKAIUIgBFDQACQCAAKAIAQRpHDQAgAkHABmogASgCACABKAIEIABBCGoiAxCCDSACKALABkEyRg0BIAAQ0QEgAEE4aiACQcAGakE4aikDADcDACAAQTBqIAJBwAZqQTBqKQMANwMAIABBKGogAkHABmpBKGopAwA3AwAgAEEgaiACQcAGakEgaikDADcDACAAQRhqIAJBwAZqQRhqKQMANwMAIABBEGogAkHABmpBEGopAwA3AwAgAyACQcAGakEIaikDADcDACAAIAIpA8AGNwMADAELIAAgARBGCwJAIARBCGooAgAiA0UNACAEQQRqKAIAIQAgA0EwbCEDA0AgACABEHAgAEEwaiEAIANBUGoiAw0ACwsgBEEYaiIEIAVGDQMMAAsLIAAoAgggARBwIAAoAhQiAA0ACwsgAkHAB2okAAuRJwIbfwh+IwBB4A5rIgQkACABvSEfAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAGZRAAAAAAAAPB/Yg0AQQMhBQwBCyAfQoCAgICAgID4/wCDIiBCgICAgICAgPj/AFENBSAfQv////////8HgyIhQoCAgICAgIAIhCAfQgGGQv7///////8PgyAfQjSIp0H/D3EiBRsiIkIBgyEjICBCAFINAiAhUEUNAUEEIQULIAVBfmohBgwDCyAFQc13aiEHICOnQQFzIQZCASEhDAELQoCAgICAgIAgICJCAYYgIkKAgICAgICACFEiCBshIkICQgEgCBshISAjp0EBcyEGQct3Qcx3IAgbIAVqIQcLIAZBfnIiBkUNAQsgA0H//wNxIQlBASEFQbibmwFBuZubASAfQgBTIggbQbibmwFBASAIGyACGyEKQQEgH0I/iKcgAhshCyAGQQMgBkEDSRtBf2oOAwECAwELIARBAzYCxA0gBEH49JoBNgLADSAEQQI7AbwNQQEhCiAEQbwNaiECQQAhC0EBIQUMBAsgBEEDNgLEDSAEQaGMgQE2AsANIARBAjsBvA0gBEG8DWohAgwDC0ECIQUgBEECOwG8DSADQf//A3FFDQEgBCAJNgLMDSAEQQA7AcgNIARBAjYCxA0gBEHM15gBNgLADSAE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B0HY8oMBENEiAAtBAEEAQezhgwEQwxIACyANIAtBjOKDARDDEgALIAEgC0G84YMBEMMSAAsgA0EANgIIQQBBpLeYASADQQRqIANBCGpB3OGDARDHGwALIAEgBkG48oMBEMMSAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIAYgB0HY8oMBENEiAAtBAEEAQezhgwEQwxIACyAEIAxBjOKDARDDEgALIAEgDEG84YMBEMMSAAsgA0EANgIIQQBBpLeYASADQQRqIANBCGpB3OGDARDHGwALIAEgB0G48oMBEMMSAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIAYgB0HY8oMBENEiAAtBAEEAQezhgwEQwxIACyANIAtBjOKDARDDEgALIAEgC0G84YMBEMMSAAsgA0EANgIIQQBBpLeYASADQQRqIANBCGpB3OGDARDHGwALIAEgBkG48oMBEMMSAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIAYgB0HY8oMBENEiAAtBAEEAQezhgwEQwxIACyAEIAxBjOKDARDDEgALIAEgDEG84YMBEMMSAAsgA0EANgIIQQBBpLeYASADQQRqIANBCGpB3OGDARDHGwALIAEgB0G48oMBEMMSAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIAJBADYCGCACIAY2AhQgAkEBNgIQIAIgBDYCICACQQA2AgALAkAgBCAFTw0AIABBLGohDiABKAIMIQ8gASgCCCEQA0ACQAJAAkACQAJAAkACQAJAIAQgD08NAAJAAkAgBiAAKAIIIg1JDQAgBiEIDAELIA4gECAEai0AAGotAAAiAUECaiERIAAoAgQhCSAGIQgDQAJAAkACQAJAIAkgCEECdGooAgAiBkH/AXFBgn5qDgICAAELIBEgCGoiBiANTw0GIAkgBkECdGooAgAiBkEBRg0CDAwLIA0gCEECaiIKSQ0GIAZBAnZBP3EgBkEDcUEAR2oiEiANIAprIgZLDQcgEkECdCEHIAkgCkECdGohC0F/IQwCQAJAAkADQCAHRQ0FIAxBAWohDCABIAsoAgAiBkH/AXFGDQEgASAGQQh2Qf8BcUYNAiABIAZBEHZB/wFxRg0DIAtBBGohCyAHQXxqIQcgASAGQRh2Rw0ACyASIApqIAxBAnRqQQNqIgEgDUkNDSABIA1ByPGDARDDEgALIAxBAnQgEiAKamoiASANSQ0MIAEgDUH48YMBEMMSAAsgEiAKaiAMQQJ0akEBaiIBIA1JDQsgASANQejxgwEQwxIACyASIApqIAxBAnRqQQJqIgEgDUkNCiABIA1B2PGDARDDEgALIAEgBkEIdkH/AXFGDQgLIAhBAWoiBiANTw0GIAkgBkECdGooAgAiCCANSQ0ACwsgCCANQZjxgwEQwxIACyAEIA9BnJ2AARDDEgALIAYgDUGY8oMBEMMSAAsgCiANQajxgwEQ0SIACyASIAZBuPGDARC8IgALIAYgDUGo8oMBEMMSAAsgCEECaiIBIA1JDQAgASANQYjygwEQwxIACyAJIAFBAnRqKAIAIQYLAkACQAJAIAYgACgCtAJNDQAgBCEBDAELIAIgBjYCFCACQQE2AhAgBkUNBgJAAkACQAJAAkACQCAGIAAoArgCSw0AIAJCgYCAgBA3AhggDSAGSQ0BIA0gBkYNAiANIAZrIQcCQAJAIAkgBkECdGoiBi0AACIBQf8BRg0AIAEgAUECdmogAUEDcUEAR2pBAmohAQwBCyAAKAIoQQJqIQELIAEgB08NAwJAAkAgBiABQQJ0aigCACILQX9MDQACQCABQQFqIgEgB08NACAGIAFBAnRqKAIAIQEMAgsgASAHQczhgwEQwxIACyALQf////8HcSEBCyABIAAoAhQiBk8NBCAEQQFqIgYgACgCECABQQJ0aigCACIHSQ0FIAIgATYCDCACIAY2AgggAkEBNgIAIAIgBiAHazYCBAwMCyADQQhqIAAoAhwgACgCICIBKAIIQX9qQXhxakEIaiAQIA8gBCAFIAEoAhAREwAgAygCCEUNCyADKAIMIgQgAigCICIBTQ0FDAYLIAYgDUHI8oMBENEiAAtBAEEAQezhgwEQwxIACyABIAdBvOGDARDDEgALIAEgBkG48oMBEMMSAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIAFBAWohBAsgAiAENgIgIAQgBUkNAAsLIAIgBjYCFCACQQE2AhAMAgsgAkEANgIYIAIgBjYCFCACQQE2AhAgAiAENgIgIAJBADYCAAsCQAJAIAQgBU8NACAEIAEoAgwiEyAEIBNLGyEQIABBLGohDiABKAIIIRQgAS0AEEEBcSESA0ACQAJAAkACQCAEIBBGDQACQAJAAkACQAJAAkAgBiAAKAIIIg1JDQAgBiEIDAELIA4gFCAEai0AAGotAAAiAUECaiEPIAAoAgQhCSAGIQgDQAJAAkACQAJAIAkgCEECdGooAgAiBkH/AXFBgn5qDgICAAELIA8gCGoiBiANTw0FIAkgBkECdGooAgAiBkEBRg0CDAwLIA0gCEECaiIKSQ0FIAZBAnZBP3EgBkEDcUEAR2oiESANIAprIgZLDQYgEUECdCEHIAkgCkECdGohC0F/IQwCQAJAAkADQCAHRQ0FIAxBAWohDCABIAsoAgAiBkH/AXFGDQEgASAGQQh2Qf8BcUYNAiABIAZBEHZB/wFxRg0DIAtBBGohCyAHQXxqIQcgASAGQRh2Rw0ACyARIApqIAxBAnRqQQNqIgEgDUkNDSABIA1ByPGDARDDEgALIAxBAnQgESAKamoiASANSQ0MIAEgDUH48YMBEMMSAAsgESAKaiAMQQJ0akEBaiIBIA1JDQsgASANQejxgwEQwxIACyARIApqIAxBAnRqQQJqIgEgDUkNCiABIA1B2PGDARDDEgALIAEgBkEIdkH/AXFGDQgLAkAgEkUNACACQgE3AhAMDgsgCEEBaiIGIA1PDQUgCSAGQQJ0aigCACIIIA1JDQALCyAIIA1BmPGDARDDEgALIAYgDUGY8oMBEMMSAAsgCiANQajxgwEQ0SIACyARIAZBuPGDARC8IgALIAYgDUGo8oMBEMMSAAsgECATQZydgAEQwxIACyAIQQJqIgEgDUkNACABIA1BiPKDARDDEgALIAkgAUECdGooAgAhBgsCQCAGIAAoArQCSw0AIAIgBjYCFCACQQE2AhAgBkUNBCAGIAAoArgCTQ0DCyACIARBAWoiBDYCICAEIAVHDQALCyACIAY2AhQgAkEBNgIQDAELIAJCgYCAgBA3AhggDSAGSQ0BIA0gBkYNAiANIAZrIQcCQAJAIAkgBkECdGoiBi0AACIBQf8BRg0AIAEgAUECdmogAUEDcUEAR2pBAmohAQwBCyAAKAIoQQJqIQELIAEgB08NAwJAAkAgBiABQQJ0aigCACILQX9MDQACQCABQQFqIgEgB08NACAGIAFBAnRqKAIAIQEMAgsgASAHQczhgwEQwxIACyALQf////8HcSEBCyABIAAoAhQiBk8NBCAEQQFqIgYgACgCECABQQJ0aigCACIHSQ0FIAIgATYCDCACIAY2AgggAkEBNgIAIAIgBiAHazYCBAsgA0EgaiQADwsgBiANQcjygwEQ0SIAC0EAQQBB7OGDARDDEgALIAEgB0G84YMBEMMSAAsgASAGQbjygwEQwxIACyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEKgdAAvoMQECfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAygCACIAQTQgAEG9gYCAeEgbQf8BcQ69AQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGr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AwAgA0EwaiAFQTBqKQMANwMAIANBKGogBUEoaikDADcDACADQSBqIAVBIGopAwA3AwAgA0EYaiAFQRhqKQMANwMAIANBEGogBUEQaikDADcDACAEIAVBCGopAwA3AwAgAyAFKQMANwMAIAVBwABBCBC9EwsgACABKAIIEHcgASgCFCIDRQ0MIAAgAxB3DAwLIAAgASgCECIDENMDIAMgABBRAkAgACgCAEUNACADKAIAQRpHDQAgACADQQhqIgQQwwUiBUUNACADEOQBIANBOGogBUE4aikDADcDACADQTBqIAVBMGopAwA3AwAgA0EoaiAFQShqKQMANwMAIANBIGogBUEgaikDADcDACADQRhqIAVBGGopAwA3AwAgA0EQaiAFQRBqKQMANwMAIAQgBUEIaikDADcDACADIAUpAwA3AwAgBUHAAEEIEL0TCyABKAIMIgVFDQsgASgCCCEDIAVBGGwhBANAAkAgAyIFQRRqKAIAIgNFDQAgACADENMDIAMgABBRIAAoAgBFDQAgAygCAEEaRw0AIAAgA0EIaiIGEMMFIgFFDQAgAxDkASADQThqIAFBOGopAwA3AwAgA0EwaiABQTBqKQMANwMAIANBKGogAUEoaikDADcDACADQSBqIAFBIGopAwA3AwAgA0EYaiABQRhqKQMANwMAIANBEGogAUEQaikDADcDACAGIAFBCGopAwA3AwAgAyABKQMANwMAIAFBwABBCBC9EwsgBUEYaiEDIAAgBRDkBCAEQWhqIgQNAAwMCwsgACABKAIEIgMQ0wMgAyAAEFEgACgCAEUNCiADKAIAQRpHDQogACADQQhqIgQQwwUiBUUNCiADEOQBIANBOGogBUE4aikDADcDACADQTBqIAVBMGopAwA3AwAgA0EoaiAFQShqKQMANwMAIANBIGogBUEgaikDADcDACADQRhqIAVBGGopAwA3AwAgA0EQaiAFQRBqKQMANwMAIAQgBUEIaikDADcDACADIAUpAwA3AwAgBUHAAEEIEL0TDAoLIAAgASgCBCIDQcgAahDkBCADQeAAaiEFAkAgAygCACIEQQhGDQAgA0EoaiEBAkAgBEEHRg0AIAMgABCGBCAAKAIARQ0AIAAgAxDDCAsgACABEOQECyAFKAIAQYCAgIB4Rg0JIAAgBRDkBAwJCyAAIAEoAgQiAxDTAyAD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ADcDACADQShqIAVBKGopAwA3AwAgA0EgaiAFQSBqKQMANwMAIANBGGogBUEYaikDADcDACADQRBqIAVBEGopAwA3AwAgBCAFQQhqKQMANwMAIAMgBSkDADcDACAFQcAAQQgQvRMLIAAgASgCDBB3DAYLAkACQAJAAkAgASgCBA4DAAECAAsgASgCCCIDKAIIIgVFDQIgAygCBCEDIAVBOGwhBQNAIAMgABDCBiADQThqIQMgBUFIaiIFDQAMAwsLIAEoAggiAygCCCIFRQ0BIAMoAgQhAyAFQThsIQUDQCADIAAQwgYgA0E4aiEDIAVBSGoiBQ0ADAILCyABKAIIIAAQ1wgLIAAgASgCDCIDENMDIAMgABBRAkAgACgCAEUNACADKAIAQRpHDQAgACADQQhqIgQQwwUiBUUNACADEOQBIANBOGogBUE4aikDADcDACADQTBqIAVBMGopAwA3AwAgA0EoaiAFQShqKQMANwMAIANBIGogBUEgaikDADcDACADQRhqIAVBGGopAwA3AwAgA0EQaiAFQRBqKQMANwMAIAQgBUEIaikDADcDACADIAUpAwA3AwAgBUHAAEEIEL0TCyAAIAEoAhAQdwwFCwJAAkACQAJAIAEoAgQOAwABAgALIAEoAggiAygCCCIFRQ0CIAMoAgQhAyAFQThsIQUDQCADIAAQwgYgA0E4aiEDIAVBSGoiBQ0ADAMLCyABKAIIIgMoAggiBUUNASADKAIEIQMgBUE4bCEFA0AgAyAAEMIGIANBOGohAyAFQUhqIgUNAAwCCwsgASgCCCAAENcICyAAIAEoAgwiAxDTAyADIAAQUQJAIAAoAgBFDQAgAygCAEEaRw0AIAAgA0EIaiIEEMMFIgVFDQAgAxDkASADQThqIAVBOGopAwA3AwAgA0EwaiAFQTBqKQMANwMAIANBKGogBUEoaikDADcDACADQSBqIAVBIGopAwA3AwAgA0EYaiAFQRhqKQMANwMAIANBEGogBUEQaikDADcDACAEIAVBCGopAwA3AwAgAyAFKQMANwMAIAVBwABBCBC9EwsgACABKAIQEHcMBAsgACABKAIEIgMQ0wMgAyAAEFEgACgCAEUNAyADKAIAQRpHDQMgACADQQhqIgQQwwUiBUUNAyADEOQBIANBOGogBUE4aikDADcDACADQTBqIAVBMGopAwA3AwAgA0EoaiAFQShqKQMANwMAIANBIGogBUEgaikDADcDACADQRhqIAVBGGopAwA3AwAgA0EQaiAFQRBqKQMANwMAIAQgBUEIaikDADcDACADIAUpAwA3AwAgBUHAAEEIEL0TDAMLIAFBCGogABClAgwBCyAAIAFBBGoQ5AQgASgCAEERRw0BCyACQeAAahCcGiACQThqQSBqIAFBKGoiBSkDADcDACACQThqQRhqIAFBIGoiBCkDADcDACACQThqQRBqIAFBGGoiBikDADcDACACQThqQQhqIAFBEGoiBykDADcDACABKQMIIQ0gASACKQNgNwMIIAcgAkHgAGpBCGoiCSkDADcDACAGIAJB4ABqQRBqIgopAwA3AwAgBCACQeAAakEYaiIIKQMANwMAIAUgAkHgAGpBIGoiCykDADcDACACIA03AzggAkEIaiAAIAJBOGpBABBfIAFBCGohAwJAAkACQCACKAIIQW1qIgBBAiAAQQJJGw4DAAECAAsgASkDACENIAFCATcDACACQeAAakEoaiAFKQMANwMAIAsgBCkDADcDACAIIAYpAwA3AwAgCiAHKQMANwMAIAkgAykDADcDACADQQA2AgAgAiANNwNgIAJB4ABqEOkDDAILIAMQlAUgA0EgaiACQQhqQShqKQMANwMAIANBGGogAkEIakEgaikDADcDACADQRBqIAJBCGpBGGopAwA3AwAgA0EIaiACQQhqQRBqKQMANwMAIAMgAikDEDcDAAwBCyABEOkDIAUgAkEIakEoaikDADcDACAEIAJBCGpBIGopAwA3AwAgBiACQQhqQRhqKQMANwMAIAcgAkEIakEQaikDADcDACADIAJBCGpBCGopAwA3AwAgASACKQMINwMACyACQZABaiQAC9gnAgp/AX4jAEHwAGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgNBdGoiBEEHIARBJkkbDiYfAAEDAgQFBgcICQoLDA0fDg8QERIfExQVHx8WFxgZGhscHR8eHx8LIAAoAgwiA0UNHiAAKAIIIQQgA0EEdCEAIAFBLGohBQNAAkAgBCgCAEECRg0AIAEtACghBiABQQA6ACggAS0AeSEHIAFBADoAeQJAIARB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AtQCSw0AIAkgASgCCCIHTw0EAkACQCABKAIEIAlBFGxqKAIIIgdFDQAgByABKAIsIgtJDQEgByALQZzjgwEQwxIAC0H48oMBEMkiAAsgASgCKCAHQQN0aigCACIMIAEoAjgiB08NAyAEIAEoAjQgDEECdGooAgAiB0kNAiAEIAdrIQ1BASEKIAZBAXENAQsCQCAEIAVJDQAgBCEIDBALIAIoAgwiDiAEIA4gBEsbIQ8gAUHIAGohECACKAIIIREgBCESIAQhCANAAkACQAJAAkACQCASIA9GDQACQAJAAkAgCSABKAIIIhNPDQAgESASai0AACEHAkACQCABKAIEIhQgCUEUbGoiCSgCBCICRQ0AIAIgECAHai0AAGoiCSABKAIgIgJPDQMgASgCHCAJQQJ0aiEJDAELA0AgCSgAACIJRQ0aIAkgASgCFCICTw0EIAEoAhAgCUEJbGoiAkEFaiEJIAcgAi0AACILSw0ACyAHIAtHDRkgAkEBaiEJCyAJKAAAIglBAUYNGCAJIAEoAtACSw0HIAlFDRggCSABKALUAksNByAJIBNPDQQCQAJAIBQgCUEUbGooAggiAkUNACACIAEoAiwiB0kNASACIAdBnOODARDDEgALQfjygwEQySIACyABKAIoIAJBA3RqKAIAIgIgASgCOCIHTw0FIBJBAWoiByABKAI0IAJBAnRqKAIAIgtJDQYgByALayILIARLDQdBASEKAkAgBkEBcQ0AIAIhDCAHIQggCyENDAgLIAAgAjYCDCAAIAc2AgggACALNgIEIABBATYCAAwZCyAJIBNBrOODARDDEgALIAkgAkG844MBEMMSAAsgCSACQYzjgwEQwxIACyAPIA5BjJ2AARDDEgALIAkgE0GMroABEMMSAAsgAiAHQejygwEQwxIACyADQQA2AkggA0EBNgI8IANBxOaDATYCOCADQgQ3AkAgA0E4akHM5oMBEKgdAAsgEkEBaiISIAVGDRAMAAsLIAAgDDYCDCAAIAQ2AgggACANNgIEIABBATYCAAwPCyADQQA2AkggA0EBNgI8IANBxOaDATYCOCADQgQ3AkAgA0E4akHM5oMBEKgdAAsgDCAHQejygwEQwxIACyAJIAdBjK6AARDDEgALIABBADYCAAwLCwJAAkAgBkEBcQ0AQQAhCAJAAkACQAJAAkAgASgC2AIi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CyADQThqIAcgASgCQCILKAIIQX9qQXhxakEIaiACKAIIIg8gAigCDCIKIAQgBSALKAIQERMAAkAgAygCOCICDgMEAwAECwJAIAMoAjwiBCAFTw0AIAFByABqIREDQAJAAkACQAJAAkACQAJAAkACQCAEIApPDQACQCAJIAEoAggiDE8NACARIA8gBGotAAAiB2ohDSABKAIEIQYDQCAGIAlBFGxqIhIhCQJAAkACQCASKAIEIgJFDQAgAiANLQAAaiIJIAEoAiAiAk8NByABKAIcIAlBAnRqIQkMAQsDQCAJKAAAIglFDQIgCSABKAIUIgJPDQggASgCECAJQQlsaiICQQVqIQkgByACLQAAIgtLDQALIAcgC0cNASACQQFqIQkLIAkoAAAiCUEBRw0ECyASKAIMIgkgDEkNAAsLIAkgDEGs44MBEMMSAAsgBCAKQYydgAEQwxIACyAJIAEoAtACSw0FIAlFDQICQAJAIAkgASgC1AJLDQAgCSAMTw0FAkACQCAGIAlBFGxqKAIIIglFDQAgCSABKAIsIgJJDQEgCSACQZzjgwEQwxIAC0H48oMBEMkiAAsgASgCKCAJQQN0aigCACIJIAEoAjgiAk8NBiAEQQFqIgIgASgCNCAJQQJ0aigCACIBTw0BIANBADYCSCADQQE2AjwgA0HE5oMBNgI4IANCBDcCQCADQThqQczmgwEQqB0ACyADQThqIAEoAjwgASgCQCICKAIIQX9qQXhxakEIaiAPIAogBCAFIAIoAhAREwACQCADKAI4RQ0AIAMoAjwiAiAETQ0HDAgLIABBADYCAAwXCyAAIAk2AgwgACACNgIIIABBATYCACAAIAIgAWs2AgQMFgsgCSACQbzjgwEQwxIACyAJIAJBjOODARDDEgALIABBADYCAAwTCyAJIAxBjK6AARDDEgALIAkgAkHo8oMBEMMSAAsgBEEBaiECCyACIQQgAiAFSQ0ACwsgAEEANgIADA0LIANBADYCSCADQQE2AjwgA0HE5oMBNgI4IANCBDcCQCADQThqQczmgwEQqB0ACyAJIAJB6PKDARDDEgALIAAgAykCPDcCBCAAQQxqIANBOGpBDGooAgA2AgALIAAgAjYCAAwJCyAJIAEoAtQCSw0AIANBMGogASAJEMkbAkACQCADKAI0IgdFDQAgByADKAIwIgsoAiwi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ACABKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACAAQQhqIAFBCGopAwA3AwAMHAtBAC0A4PadARogASgCECELIAEoAgwhCEHAABCEASIDRQ0VIAMgASgCBBBFQQAtAOD2nQEaQTAQhAEiCkUNFSAKIAEoAggQfyAAIAs2AhAgACAINgIMIAAgCjYCCCAAIAM2AgQgAEEDNgIADBsLIAAgASkDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAEEIaiABQQhqKQMANwMADBoLIAEoAgghAyABKAIEIQoCQAJAIAEoAgwiCw0AQQAhAQwBC0EALQDg9p0BGkHAABCEASIBRQ0UIAEgCxBFCyAAIAE2AgwgACADNgIIIAAgCjYCBCAAQQQ2AgAMGQsgASgCICEKIAEoAhwhCyABKAIYIQggASgCDCEHIAEoAgghCQJAIAEpAxAiHkIDg0IAUg0AIB6nIgMgAygCACIDQQFqNgIAIANBf0wNEwtBAC0A4PadARogAS0AJCEEQTAQhAEiA0UNEiADIAEoAigQfyAAIAM2AiggACAEOgAkIAAgCjYCICAAIAs2AhwgACAINgIYIAAgHjcDECAAIAc2AgwgACAJNgIIIABBBTYCAAwYCyABKAIMIQMgASgCCCEKIAEtACQiC0ECRw0MDA0LIAEoAgwhAyABKAIIIQogAS0AJCILQQJHDQ0MDgtBAC0A4PadARogASgCECELIAEoAgwhCEHAABCEASIDRQ0PIAMgASgCBBBFQQAtAOD2nQEaQTAQhAEiCkUNDyAKIAEoAggQfwJAAkAgASgCFCIHDQBBACEBDAELQQAtAOD2nQEaQTAQhAEiAUUNECABIAcQfwsgACABNgIUIAAgCzYCECAAIAg2AgwgACAKNgIIIAAgAzYCBCAAQQg2AgAMFQtBAC0A4PadARogASgCGCEMIAEoAhQhDUHAABCEASIORQ0OIA4gASgCEBBFIAEoAgghCCACQeAAaiABKAIMIg9BBEEYEKMOIAIoAmQhECACKAJgQQFGDQ8gAigCaCERAkAgEEUNACAIIA9BGGxqIRIgECET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IAIoAvQBIQxBACELQQAtAOD2nQEaIAEQhAEiAUUNBiACQfQBaiEHIAJBADYCsAEgAiABNgKsASACIAU2AqgBIANBAWohCQNAIAFBAWogDCALai0AACIDOgAAIAEgAzoAACABQQJqIQEgCSALQQFqIgtHDQAMBAsLQeTGhQEQySIAC0EAIQ0gAkEANgKwASACQoCAgIAQNwOoASACQfQBaiEHQQEhDEEAIQUMAQtBvP6aARCBHAALIA0gDEEBQQEQ0BIgAikDqAEhESACQagBakEIaiIBIAU2AgAgAiAFRToAtAEgAiARNwOoASACQagBahCDBSAHQQhqIAEpAwA3AgAgByACKQOoATcCACACQQE2AvABIAAgAkHwAWoQ+AgMBwsgBSAMQQFBARDQEgsgAkEANgL4ASACQoCAgIDAADcC8AEgAkHkAGogAkHwAWoQqhUgAkHwAWpBBHIhDSACQagBakEEaiEEIAchDAJAAkADQCAMKAIAQQJHDQICQAJAIAwoAgRBAUcNACAMQRBqKAIAIgFBAXQhBSAMQQxqKAIAIQMCQCABRQ0AIAMgBWoiC0F+akUNACALQX9qLAAAQQBIDQULIAVB/v///wNLDQMgAUEDdCIJQf3///8HTw0DIAFB/////wdxIQtBACEFAkACQCAJDQBBBCEBQQAhCQwBC0EALQDg9p0BGiAJEIQBIgFFDQYgCyEJCyACQQA2AvgBIAIgATYC9AEgAiAJNgLwAQJAIAtFDQBBACEFA0AgASADLQAANgIAIAFBBGogA0EBai0AADYCACABQQhqIQEgA0ECaiEDIAsgBUEBaiIFRw0ACwsgAiACKQPwATcD8AEgAiAFNgL4ASACIAVFOgD8ASACQfABahCVBSACQZgBakEIaiIDIA1BCGooAgA2AgAgAiANKQIANwOYASACKALwASIBQYCAgIB4Rg0EIAQgAikDmAE3AgAgBEEIaiADKAIANgIAIAIgATYCqAEgAkHkAGogAkGoAWoQxgsgASACKAKsAUEEQQgQ0BIMAQsgAkHkAGogDEEIahDGCwsgDEEcaiIMIApHDQALIAJByABqIAJB7ABqKQIANwIAIAIgAikCZDcCQCACQQA2AjwgACACQTxqEPgIDAcLQYCdmwEQgRwACyACKAJkIAIoAmhBBEEIENASIAJBADYC+AEgAkKAgICAEDcC8AEgAkHkAGogAkHwAWoQqRUgAkHwAWpBBHIhDSACQagBakEEaiEEAkACQAJAA0AgBygCAEECRw0DAkACQCAHKAIEQQFHDQAgAkHkAGogB0EIahCjCwwBCyAHQQxqKAIAIQECQCAHQRBqKAIAIgNFDQAgASADQQN0aiIFQXhqRQ0AIAVBfGooAgBB/wBLDQULAkACQCADQf////8BcSIJDQBBACEFIAJBADYC+AEgAkKAgICAEDcD8AEMAQtBAC0A4PadARogA0EBdEH+////A3EQhAEiA0UNBkEAIQUgAkEANgL4ASACIAM2AvQBIAIgCTYC8AEDQCABKAIAIgtBgAJPDQQgAUEEaigCACIMQYACTw0FIAMgCzoAACADQQFqIAw6AAAgA0ECaiEDIAFBCGohASAJIAVBAWoiBUcNAAsLIAIgAikD8AE3A/ABIAIgBTYC+AEgAiAFRToA/AEgAkHwAWoQgwUgAkGYAWpBCGoiAyANQQhqKAIANgIAIAIgDSkCADcDmAEgAigC8AEiAUGAgICAeEYNBCAEIAIpA5gBNwIAIARBCGogAygCADYCACACIAE2AqgBIAJB5ABqIAJBqAFqEKMLIAEgAigCrAFBAUECENASCyAHQRxqIgcgCkcNAAsgAkHcAGogAkHsAGopAgA3AgAgAiACKQJkNwJUIAJBATYCUCAAIAJB0ABqEPgIDAgLQbSqmwFBKyACQeABakHY/IQBQYTHhQEQ6hAAC0G0qpsBQSsgAkHgAWpB2PyEAUGUx4UBEOoQAAsgAigCZCACKAJoQQFBAhDQEgJAAkACQCACKAIIIgFBAkkNACACKAIEIgMoAgBBBkcNACADKAIMIgVFDQAgAygCCCENIAMgAUEcbGohCkEAIQEgAyEHQQEhCwNAAkACQCABQQFxRQ0AIAchASAHIApHDQEMBQsgCyAKIAdrQRxuTw0EIAcgC0EcbGohAQsgASgCAEEGRw0BIAEoAgwiC0UNASABQRxqIQcgCyAFIAsgBUkbIQkgASgCCCEBQQAhDCANIQsCQAJAA0AgCyABEMwERQ0BIAtBHGohCyABQRxqIQEgCSAMQQFqIgxHDQALIAkhBQwBCyAMIAVLDQMgDCEFC0EAIQtBASEBIAUNAAsLIAJB8ABqIAJBCGooAgA2AgAgAiACKQIANwJoDAULIAwgBUHsyIUBELwiAAsgAkEANgKIASACQoCAgIDAADcCgAEgAkEANgKUASACQoCAgIDAADcCjAEgAigCACEBIAIgCjYCpAEgAiABNgKgASACIAM2ApgBIAJBqAFqQQRqIghBEGohDkEAIQtBASEMQQQhDwNAAkACQCADIAtqIgEoAgAiCUEIRg0AIA4gAUEUaikCADcCACAIQQhqIAFBDGoiDSkCADcCACAIIAFBBGoiBCkCADcCACACQfABakEIaiIHIA0oAgA2AgAgAkEANgKoASACIAQpAgA3A/ABIAJBqAFqEKMgIAlBBkYNAUGSqZsBQShB3MiFARCMGgALIAFBHGohCgwECyACQcgBakEIaiIQIAcoAgAiCTYCACACIAIpA/ABNwPIASAJIAVJDQIgCSAFayIGQRxsIQ1BBCEEAkAgCSAFRg0AQQAtAOD2nQEaIA0QhAEiBEUNAgsgAiAFNgLQAQJAIA1FDQAgBCACKALMASAFQRxsaiAN/AoAAAsgAiAGNgLcASACIAQ2AtgBIAIgBjYC1AEgAkHwAWogAkHUAWoQtwECQCAMQX9qIAIoAowBRw0AIAJBjAFqQczIhQEQghggAigCkAEhDwsgDyALaiIJIAIpAvABNwIAIAlBGGogAkHwAWpBGGooAgA2AgAgCUEQaiACQfABakEQaikCADcCACAJQQhqIAcpAgA3AgAgAiAMNgKUAQJAAkAgAigCiAENACACQYABahCYGiACQYABakEIaiAQKAIANgIAIAIgAikDyAE3A4ABDAELIAJByAFqEJgaCyALQRxqIQsgDEEBaiEMIAFBHGogCkcNAAwDCwsACyAFIAkQyBIACyACIAo2ApwBIAJBmAFqELUXIAJB4AFqQQhqIgEgAkGAAWpBCGooAgA2AgAgAiACKQOAATcD4AEgAkHwAWogAkGMAWoQhQECQCABKAIAIgMgAigC4AFHDQAgAkHgAWpBrMiFARCCGAsgAigC5AEgA0EcbGoiASACKQLwATcCACABQQhqIAJB8AFqQQhqKQIANwIAIAFBEGogAkHwAWpBEGopAgA3AgAgAUEYaiACQfABakEYaigCADYCACACIANBAWo2AugBIAJB5ABqIAJB4AFqELcBIAIoAmRBCEYNACAAIAIpAmQ3AgAgAEEYaiACQeQAakEYaigCADYCACAAQRBqIAJB5ABq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3wA2AsABIANB3wA2ArgBIAMgA0G0AWo2AugBIAMgA0GkAWo2ArwBIAMgA0GwAWo2ArQBIANB1AFqIANB4AFqEKIRRQ0LQbSqmwFBKyADQeABakHI0JgBQbjWmAEQ6hAACyADQQE2AvQBIANB5MmZATYC8AEgA0ECNgLkASADQZjWmAE2AuABIANBATYC7AEgA0HfADYCuAEgAyAFNgKkASADIANBtAFqNgLoASADIANBpAFqNgK0ASADQdQBaiADQeABahCiEUUNCkG0qpsBQSsgA0HgAWpByNCYAUGo1pgBEOoQAAsgCg0FIAFBgIDEAEYNBCADQdQBaiABEM4bDAkLIAMgAy8B3AE7AeABIAMgA0HeAWotAAA6AOIBIAMoAtgBIQogAygC1AEhCSADLQDfASEBDAoLQejWmAEQySIAC0HY1ZgBEMkiAAtBiNaYARDJIgALQcjWmAEQySIACyADQdQBakGM1ZgBQQIQowYgA0EBNgLkASADQZTzmwE2AuABIANCATcC7AEgA0HgATYCuAEgAyAFOgCkASADIANBtAFqNgLoASADIANBpAFqNgK0ASADQdQBaiADQeABahCiEUUNA0G0qpsBQSsgA0HgAWpByNCYAUHY1pgBEOoQAAsgA0HUAWpB0NWYAUEGEKMGDAILAkAgAygCiAIiAUECRw0AIANBCGogBBDlCSADIAMoAgw2AowCIAMgAygCCCIBNgKIAgsCQCABQQFxRQ0AIAMoAowCQVBqQQpJDQELIANB1AFqQcjVmAFBAhCjBgwBCyADQdQBakHK1ZgBQQQQowYLIAMoAowCIQUgAygCiAIhAQwACwsgA0GuAWogAy0A4gE6AAAgAyAKNgKoASADIAk2AqQBIAMgAy8B4AE7AawBIAMgAToArwECQCACLQBQRQ0AIANBwABqIANBpAFqEIYVIAMoAkAhASADKAJEIQUgA0EINgKwASADIAU2AtABIAMgATYCzAEgA0EANgLEASADIAEgBWo2AsABIAMgATYCvAEgA0ECNgK0ASADIANBsAFqNgLIASADQThqIANBtAFqQQhqIgYQ1QggAyADKAI8NgK4ASADIAMoAjgiBDYCtAECQAJAAkAgBEEBcUUNACADQdQBaiABIAUQ/wwgA0HgAWpBGGogA0G0AWpBGGopAgA3AwAgA0HgAWpBEGogA0G0AWpBEGopAgA3AwAgA0HgAWpBCGoiCiAGKQIANwMAIAMgAykCtAE3A+ABIANBADYCgAIDQCADKALgASEBIANBAjYC4AECQAJAIAFBAkYNACADKALkASEFDAELIANBMGogChDVCCADKAI0IQUgAygCMCEBCwJAIAFBAXFFDQAgAyADKAKAAkEBaiIBNgKAAiADQRhqIANB1AFqEJAaAkAgASAFaiIBRQ0AAkAgASADKAIcIgVJDQAgASAFRg0BDAYLIAMoAhggAWosAABBv39MDQULIAMtAN8BIQUgAygC2AEhBiADQdQBakEBELsHIANBEGogA0HUAWoQlhcgAygCECABaiEEAkAgBiAFQcAAakH/AXEiCUEMIAlBDEkbIAVB/gFGGyIFIAFrIgFFDQAgBEEBaiAEIAH8CgAACyAEQdwAOgAAIAVBAWohAQJAIAMtAN8BQf4BRg0AIAFBC0sNAiADIAFBwAFyOgDfAQwCCyADIAE2AtgBDAELCyADQYgCakEIaiADQdQBakEIaigCADYCACADIAMpAtQBNwOIAgwBCyADQf8BOgCTAiADIAU2AowCIAMgATYCiAILIANBKGogA0GIAmoQhhUgA0G0AWogAygCKCADKAIsQeDQmwFBBEHk0JsBQQcQiQwgA0HUAWogAygCuAEiCSADKAK8AUHr0JsBQQNB7tCbAUEGEIkMAkACQAJAAkAgAygC1AEiBUH+//8HSw0AIAUNAUEAIQFBgICAgHwhCiADKALYASEEQQAhBgwCCyADKALYASEEIANB4AFqIAMoAtwBIgEQig4gAygC4AEhCiADKALkASEGIAFFDQEgBiAEIAH8CgAADAELIAMoAtgBIQQCQCADKALcASIBQQxNDQAgBUH///8HIAVB////B0kbQYCAgHByIQogBCEGDAILIANBADYA5wEgA0IANwPgASADIAFBwAFyOgDrAQJAIAFFDQAgA0HgAWogBCAB/AoAAAsgAygC6AEhCiADKALkASEBIAMoAuABIQYLIAUgBBCrEwsgA0GkAWoQ0x8gAyAKNgKsASADIAE2AqgBIAMgBjYCpAEgAygCtAEgCRDOJCADQYgCahDTHwwBCyADQQA2ApgCIANBATYCjAIgA0GA1IABNgKIAiADQgQ3ApACIANBiAJqQYjUgAEQqB0ACyADIAw6ALQBIANB4AFq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EgALIANBADYCGCADQQE2AgwgA0HE5oMBNgIIIANCBDcCECADQQhqQczmgwEQqB0ACyAFIARBAWoiBEYNBgwACwsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIBEgB0GE74MBEMMSAAtBAEEAQaTvgwEQwxIACyAHIAtBlO+DARDDEgALAkAgASgC0AIiCA0AQQEQ9h4hASAAQQI2AgAgACABNgIEDAULAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCCABKALMAiIRTQ0AAkAgBCAFTw0AIAIoAgwiBiAEIAYgBEsbIQcgAUHAAGohCyACKAIIIRADQCAHIARGDQogCCALIBAgBGotAABqLQAAaiICIAEoAggiCE8NCQJAIAEoAgQgAkECdGooAgAiCCABKALIAksNACAIRQ0EIAggEU0NBQsgBSAEQQFqIgRHDQALCyAAQQA2AgAMEQsgCCABKAI8dkF+aiICIAEoAhQiCE8NAiABKAIQIAJBDGxqIgIoAghFDQMgAigCBCgCACICIAEoAiAiCE8NBCAEIAEoAhwgAkECdGooAgAiAUkNBSAAIAI2AgwgACAENgIIIABBATYCACAAIAQgAWs2AgQMEAsgAEEANgIADA8LIAggASgCPHZBfmoiAiABKAIUIghPDQYgASgCECACQQxsaiICKAIIRQ0HIAIoAgQoAgAiAiABKAIgIghPDQggBEEBaiIIIAEoAhwgAkECdGooAgAiAUkNCSAAIAI2AgwgACAINgIIIABBATYCACAAIAggAWs2AgQMDgsgAiAIQZTvgwEQwxIAC0EAQQBBpO+DARDDEgALIAIgCEGE74MBEMMSAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIAIgCEH07oMBEMMSAAsgByAGQYydgAEQwxIACyACIAhBlO+DARDDEgALQQBBAEGk74MBEMMSAAsgAiAIQYTvgwEQwxIACyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEKgdAAsgACARNgIMIAAgCTYCCCAAIAw2AgQgACASNgIADAMLAkAgASgC0AIiCA0AQQEQ9h4hASAAQQI2AgAgACABNgIEDAMLAkACQAJAAkACQAJAAkAgCCABKALMAksNACAIIAEoAjx2QX5qIgIgASgCFCIITw0EIAEoAhAgAkEMbGoiAigCCEUNAyACKAIEKAIAIgIgASgCICIITw0CIAQgASgCHCACQQJ0aigCACIBSQ0BIAAgAjYCDCAAIAQ2AgggAEEBNgIAIAAgBCABazYCBAwJCyADQQhqIAcgASgCLCIQKAIIQX9qQXhxakEIaiACKAIIIgsgAigCDCIHIAQgBSAQKAIQERMAAkAgAygCCCICDgMGBQAGCwJAIAMoAgwiAiAFTw0AIAFBwABqIRADQAJAAkACQAJAAkACQCACIAdPDQACQCAIIBAgCyACai0AAGotAABqIgggASgCCCIETw0AIAEoAgQgCEECdGooAgAiCCABKALIAksNBQJAAkACQCAIRQ0AIAggASgCzAJLDQEgCCABKAI8dkF+aiIIIAEoAhQiBE8NBSABKAIQIAhBDGxqIggoAghFDQYgCCgCBCgCACIIIAEoAiAiBE8NByACQQFqIgIgASgCHCAIQQJ0aigCACIBTw0CIANBADYCGCADQQE2AgwgA0HE5oMBNgIIIANCBDcCECADQQhqQczmgwEQqB0ACyAAQQA2AgAMEwsgA0EIaiABKAIoIAEoAiwiBCgCCEF/akF4cWpBCGogCyAHIAIgBSAEKAIQERMAAkAgAygCCEUNACADKAIMIgQgAk0NBwwICyAAQQA2AgAMEgsgACAINgIMIAAgAjYCCCAAQQE2AgAgACACIAFrNgIEDBELIAggBEH07oMBEMMSAAsgAiAHQYydgAEQwxIACyAIIARBlO+DARDDEgALQQBBAEGk74MBEMMSAAsgCCAEQYTvgwEQwxIACyACQQFqIQQLIAQhAiAEIAVJDQALCyAAQQA2AgAMCAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIAIgCEGE74MBEMMSAAtBAEEAQaTvgwEQwxIACyACIAhBlO+DARDDEgALIAAgAykCDDcCBCAAQQxqIANBCGpBDGooAgA2AgALIAAgAjYCAAwCCwJAAkACQAJAAkACQCAIIAEoAswCTQ0AQQAhCQwBCyAIIAEoAjx2QX5qIgsgASgCFCIQTw0EIAEoAhAgC0EMbGoiCygCCEUNAyALKAIEKAIAIgYgASgCICILTw0CIAQgASgCHCAGQQJ0aigCACILSQ0BIAQgC2shEkEBIQkLIANBCGogByABKAIsIhAoAghBf2pBeHFqQQhqIAIoAggiCyACKAIMIgcgBCAFIBAoAhAREwACQAJAAkACQCADKAIIIgIOAwIBAAILIAFBwABqIREgAygCDCEQDAILIAAgAykCDDcCBCAAQQxqIANBCGpBDGooAgA2AgALIAAgAjYCAAwGCwJAAkACQANAAkACQAJAAkACQAJAIBAiAiAFTw0AIAIgB08NBCAIIBEgCyACai0AAGotAABqIgggASgCCCIQTw0DIAEoAgQgCEECdGooAgAiCCABKALIAksNBSAIRQ0AAkAgCCABKALMAksNACAIIAEoAjx2QX5qIgQgASgCFCIQTw0IIAEoAhAgBEEMbGoiBCgCCEUNCSAEKAIEKAIAIgYgASgCICIETw0KIAJBAWoiBCABKAIcIAZBAnRqKAIAIgJPDQMgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIANBCGogASgCKCABKAIsIhAoAghBf2pBeHFqQQhqIAsgByACIAUgECgCEBETACADKAIIRQ0BIAMoAgwiECACTQ0FDAYLIAAgBjYCDCAAIAQ2AgggACASNgIEIAAgCTYCAAwOCyAAQQA2AgAMDQsgBCACayESQQEhCSAEIRAMAwsgCCAQQfTugwEQwxIACyACIAdBjJ2AARDDEgALIAJBAWohEAwACwsgBCAQQZTvgwEQwxIAC0EAQQBBpO+DARDDEgALIAYgBEGE74MBEMMSAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCoHQALIAYgC0GE74MBEMMSAAtBAEEAQaTvgwEQwxIACyALIBBBlO+DARDDEgALIAAgDDYCDCAAIA42AgggACANNgIEIAAgCjYCAAsgA0EgaiQAC8UfAhJ/AX4jAEHwBmsiAyQAIANBIGogARCUEyADQfgAaiADKAIgIAMoAiRBt+ObAUECQaimmwFBARCJDCADQSxqIAMoAnwiBCADKAKAAUENQaimmwFBARDyByADKAJ4IAQQziQCQAJAAkACQCACLQBNDQAgAi0ATEUNASADQRhqIAEQlBMgAygCGCADKAIcENwNDQELIAItAFEh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DQEgACAAKAIQEOkdDwsCQAJAIAAoAgQiACgCAEEDRg0AIAAQvw4MAQsgAEEEahDiDAsgAEEoQQgQvRMLC/MbAQt/IwBBwAFrIgIkAAJAIAAtAGxBAkcNACAAQcAAaiEDA0AgAygCGCIDLQAsQQJGDQALCwJAIAAoAoQBIgNFDQAgACgCgAEiBCADQdgAbGohBQNAAkACQAJAAkAgBCgCACIDQQVHDQAgBCgCBCIDKAIAQRpHDQEgAiABKAIAIAEoAgQgA0EIaiIGEIINIAIoAgBBMkYNAyADENEBIANBOGogAkE4aikDADcDACADQTBqIAJBMGopAwA3AwAgA0EoaiACQShqKQMANwMAIANBIGogAkEgaikDADcDACADQRhqIAJBGGopAwA3AwAgA0EQaiACQRBqKQMANwMAIAYgAkEIaikDADcDACADIAIpAwA3AwAMAwsgA0EERg0CAkACQAJAIAMOBAUAAQQFCyAEKAIEQQFHDQQgBCgCCCIDKAIAQRpHDQEgAkGAAWogASgCACABKAIEIANBCGoiBhCCDSACKAKAAUEyRg0EIAMQ0QEgA0E4aiACQYABakE4aikDADcDACADQTBqIAJBgAFqQTBqKQMANwMAIANBKGogAkGAAWpBKGopAwA3AwAgA0EgaiACQYABakEgaikDADcDACADQRhqIAJBgAFqQRhqKQMANwMAIANBEGogAkGAAWpBEGopAwA3AwAgBiACQYABakEIaikDADcDACADIAIpA4ABNwMADAQLAkAgBCgCBCIHLQBsQQJHDQAgB0HAAGohAwNAIAMoAhgiAy0ALEECRg0ACwsCQCAHKAKEASIGRQ0AIAcoAoABIQMgBkHYAGwhBgNAAkACQAJAAkAgAygCAEF8ag4CAwABCyADQQRqKAIAIggoAgBBGkcNASACQYABaiABKAIAIAEoAgQgCEEIaiIJEIINIAIoAoABQTJGDQIgCBDRASAIQThqIAJBgAFqQThqKQMANwMAIAhBMGogAkGAAWpBMGopAwA3AwAgCEEoaiACQYABakEoaikDADcDACAIQSBqIAJBgAFqQSBqKQMANwMAIAhBGGogAkGAAWpBGGopAwA3AwAgCEEQaiACQYABakEQaikDADcDACAJIAJBgAFqQQhqKQMANwMAIAggAikDgAE3AwAMAgsgAyABEIoCDAELIAggARBGCyADQdgAaiEDIAZBqH9qIgYNAAsLAkAgB0GYAWooAgAiA0UNACAHQZQBaigCACIJIANBKGxqIQoDQAJAAkACQAJAAkACQAJAIAkoAgAOBQYAAQIFBgsgCSgCBEEBRw0FIAkoAggiAygCAEEaRw0DIAJBgAFqIAEoAgAgASgCBCADQQhqIgYQgg0gAigCgAFBMkYNBSADENEBIANBOGogAkGAAWpBOGopAwA3AwAgA0EwaiACQYABakEwaikDADcDACADQShqIAJBgAFqQShqKQMANwMAIANBIGogAkGAAWpBIGopAwA3AwAgA0EYaiACQYABakEYaikDADcDACADQRBqIAJBgAFqQRBqKQMANwMAIAYgAkGAAWpBCGopAwA3AwAgAyACKQOAATcDAAwFCyAJKAIEIgMoAgBBGkcNASACQYABaiABKAIAIAEoAgQgA0EIaiIGEIINIAIoAoABQTJGDQQgAxDRASADQThqIAJBgAFqQThqKQMANwMAIANBMGogAkGAAWpBMGopAwA3AwAgA0EoaiACQYABakEoaikDADcDACADQSBqIAJBgAFqQSBqKQMANwMAIANBGGogAkGAAWpBGGopAwA3AwAgA0EQaiACQYABakEQaikDADcDACAGIAJBgAFqQQhqKQMANwMAIAMgAikDgAE3AwAMBAsCQCAJKAIEIgstAGxBAkcNACALQcAAaiEDA0AgAygCGCIDLQAsQQJGDQALCwJAIAtBhAFqKAIAIgZFDQAgC0GAAWooAgAhAyAGQdgAbCEGA0ACQAJAAkAgAygCAEEFRw0AIANBBGooAgAiCCgCAEEaRw0BIAJBgAFqIAEoAgAgASgCBCAIQQhqIgwQgg0gAigCgAFBMkYNAiAIENEBIAhBOGogAkGAAWpBOGopAwA3AwAgCEEwaiACQYABakEwaikDADcDACAIQShqIAJBgAFqQShqKQMANwMAIAhBIGogAkGAAWpBIGopAwA3AwAgCEEYaiACQYABakEYaikDADcDACAIQRBqIAJBgAFqQRBqKQMANwMAIAwgAkGAAWpBCGopAwA3AwAgCCACKQOAATcDAAwCCyADIAEQ7QgMAQsgCCABEEYLIANB2ABqIQMgBkGof2oiBg0ACwsCQCALQZgBaigCACIGRQ0AIAtBlAFqKAIAIQMgBkEobCEGA0AgASADEMoCIANBKGohAyAGQVhqIgYNAAsLIAstADwiA0EGRg0DIANBAkcNAyALQRBqIQMDQCADKAIYIgMtACxBAkYNAAwECwsgAyABEEYMAgsgAyABEEYMAQsgCSgCDCEGIAkoAgghAyACIAE2AoABIAZFDQAgBkEobCEGA0AgAkGAAWogAxDPAyADQShqIQMgBkFYaiIGDQALCyAJQShqIgkgCkcNAAsLIActADwiA0EGRg0DIANBAkcNAyAHQRBqIQMDQCADKAIYIgMtACxBAkYNAAwECwsgAyABEEYMAgsgAyABEEYMAQsgBCgCDCEGIAQoAgghAyACIAE2AoABIAZFDQAgBkEobCEGA0AgAkGAAWogAxDPAyADQShqIQMgBkFYaiIGDQALCyAEQdgAaiIEIAVHDQALCwJAIAAoApgBIgNFDQAgACgClAEiCSADQShsaiELA0ACQAJAAkACQAJAAkACQCAJKAIADgUGAAECBQYLIAkoAgRBAUcNBSAJKAIIIgMoAgBBGkcNAyACQYABaiABKAIAIAEoAgQgA0EIaiIGEIINIAIoAoABQTJGDQUgAxDRASADQThqIAJBgAFqQThqKQMANwMAIANBMGogAkGAAWpBMGopAwA3AwAgA0EoaiACQYABakEoaikDADcDACADQSBqIAJBgAFqQSBqKQMANwMAIANBGGogAkGAAWpBGGopAwA3AwAgA0EQaiACQYABakEQaikDADcDACAGIAJBgAFqQQhqKQMANwMAIAMgAikDgAE3AwAMBQsgCSgCBCIDKAIAQRpHDQEgAkGAAWogASgCACABKAIEIANBCGoiBhCCDSACKAKAAUEyRg0EIAMQ0QEgA0E4aiACQYABakE4aikDADcDACADQTBqIAJBgAFqQTBqKQMANwMAIANBKGogAkGAAWpBKGopAwA3AwAgA0EgaiACQYABakEgaikDADcDACADQRhqIAJBgAFqQRhqKQMANwMAIANBEGogAkGAAWpBEGopAwA3AwAgBiACQYABakEIaikDADcDACADIAIpA4ABNwMADAQLAkAgCSgCBCIMLQBsQQJHDQAgDEHAAGohAwNAIAMoAhgiAy0ALEECRg0ACwsgDEGQAWohCgJAIAxBhAFqKAIAIgZFDQAgDEGAAWooAgAhAyAGQdgAbCEGA0ACQAJAAkAgAygCAEEFRw0AIANBBGooAgAiCCgCAEEaRw0BIAJBgAFqIAEoAgAgASgCBCAIQQhqIgQQgg0gAigCgAFBMkYNAiAIENEBIAhBOGogAkGAAWpBOGopAwA3AwAgCEEwaiACQYABakEwaikDADcDACAIQShqIAJBgAFqQShqKQMANwMAIAhBIGogAkGAAWpBIGopAwA3AwAgCEEYaiACQYABakEYaikDADcDACAIQRBqIAJBgAFqQRBqKQMANwMAIAQgAkGAAWpBCGopAwA3AwAgCCACKQOAATcDAAwCCyADIAEQ7QgMAQsgCCABEEYLIANB2ABqIQMgBkGof2oiBg0ACwsgCiABEMECIAwtADwiA0EGRg0DIANBAkcNAyAMQRBqIQMDQCADKAIYIgMtACxBAkYNAAwECwsgAyABEEYMAgsgAyABEEYMAQsgCSgCDCIDRQ0AIANBKGwhBiAJKAIIQQRqIQMDQAJAAkACQAJAAkACQAJAIANBfGooAgAOBQYAAQIDBgsgAygCAEEBRw0FIANBBGooAgAiCCgCAEEaRw0DIAJBgAFqIAEoAgAgASgCBCAIQQhqIgQQgg0gAigCgAFBMkYNBSAIENEBIAhBOGogAkGAAWpBOGopAwA3AwAgCEEwaiACQYABakEwaikDADcDACAIQShqIAJBgAFqQShqKQMANwMAIAhBIGogAkGAAWpBIGopAwA3AwAgCEEYaiACQYABakEYaikDADcDACAIQRBqIAJBgAFqQRBqKQMANwMAIAQgAkGAAWpBCGopAwA3AwAgCCACKQOAATcDAAwFCyADKAIAIggoAgBBGkcNAyACQcAAaiABKAIAIAEoAgQgCEEIaiIEEIINIAIoAkBBMkYNBCAIENEBIAhBOGogAkHAAGpBOGopAwA3AwAgCEEwaiACQcAAakEwaikDADcDACAIQShqIAJBwABqQShqKQMANwMAIAhBIGogAkHAAGpBIGopAwA3AwAgCEEYaiACQcAAakEYaikDADcDACAIQRBqIAJBwABqQRBqKQMANwMAIAQgAkHAAGpBCGopAwA3AwAgCCACKQNANwMADAQLIAMgARDpBgwDCyADIAEQwyQMAgsgCCABEEYMAQsgCCABEEYLIANBKGohAyAGQVhqIgYNAAsLIAlBKGoiCSALRw0ACwsCQCAALQA8IgFBBkYNACABQQJHDQAgAEEQaiEBA0AgASgCGCIBLQAsQQJGDQALCyACQcABaiQAC4sdAQZ/AkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgJBdGoiA0EHIANBJkkbDiYfAAECAwQFBgcICQoLDB8fDQ4PEBEfEhMUHx8VFhcYGRobHB8eHx8LIAAoAgwiA0UNHiAAKAIIIQAgA0EEdCEDA0ACQCAAKAIAQQJGDQAgAS0AAA0AIABBDGooAgAgARCYAQsgAEEQaiEAIANBcGoiAw0ADB8LCyAAKAIMIgNFDR0gACgCCCEAIANBDGwhAwNAAkACQCAAKAIAIgINACAAQQRqKAIAIAEQ5gQMAQsgAS0AAA0AIAIgARCYAQsgAEEMaiEAIANBdGoiAw0ADB4LCwJAIAAoAiAiBEEIaigCACIDRQ0AIARBBGooAgAiACADQQZ0aiEFA0ACQCAAIgJBOGooAgAiA0UNACABLQAADQAgAkE0aigCACEAIANBDGwhAwNAAkAgAS0AAA0AIAAoAgAgARCYAQsgAEEMaiEAIANBdGoiAw0ACwsgAiABELcJIAJBwABqIgAgBUcNAAsLIARBGGohAgJAIARBFGooAgAiA0UNACABLQAADQAgBEEQaigCACEAIANBDGwhAwNAAkAgAS0AAA0AIAAoAgAgARCYAQsgAEEMaiEAIANBdGoiAw0ACwsgAigCAEGAgICAeEYNHCABIAIQ3BcPCyABLQAADRsgACgCBCEADBkLIAEtAAANGiAAKAIMIQAMGAsgAS0AAA0ZIAAoAgQgARCYASABLQAAQQFxDRkgACgCCCEADBcLAkACQCACQQtHDQACQAJAIAAoAgQOAwABAwALIAAoAhAiAkUNAiAAKAIMIQMgAkEobCECA0ACQCADKAIAQQdGDQAgAyABELcJCyADQShqIQMgAkFYaiICDQAMAwsLIAAoAhAiA0UNASAAKAIMIgIgA0E4bGohBANAIAIiA0E4aiECAkACQAJAAkAgAygCAA4DAAECAAsCQCADKAIIQQNHDQAgAS0AAA0AIAMoAgwgARCYAQsCQAJAAkACQAJAIAMoAigiAygCAA4HBwABAgMHBAcLIANBDGooAgAiBUUNBiADQQhqKAIAIQMgBUEobCEFA0ACQCADKAIAQQdGDQAgAyABELcJCyADQShqIQMgBUFYaiIFDQAMBwsLIAMoAgQgARC3CQwFCyADQQxqKAIAIgVFDQQgA0EIaigCACEGIAVBOGwhB0EAIQMDQAJAAkACQAJAIAYgA2oiBSgCAA4DAAECAAsCQCAFQQhqKAIAQQNHDQAgAS0AAA0AIAVBDGooAgAgARCYAQsgBUEoaigCACABELcJDAILIAVBMGooAgAiBUUNASABLQAADQEgBSABEJgBDAELIAVBBGooAgAgARC3CQsgByADQThqIgNHDQAMBQsLIAMoAgQgARC3CSABLQAADQMgAygCCCABEJgBDAMLIAEtAAANAiADKAIEIAEQmAEMAgsgAygCMCIDRQ0BIAEtAAANASADIAEQmAEMAQsCQAJAAkACQAJAIAMoAgQiAygCAA4HBQABAgMFBAULIANBDGooAgAiBUUNBCADQQhqKAIAIQMgBUEobCEFA0ACQCADKAIAQQdGDQAgAyABELcJCyADQShqIQMgBUFYaiIFDQAMBQsLIAMoAgQgARC3CQwDCyADQQxqKAIAIgVFDQIgA0EIaigCACEGIAVBOGwhB0EAIQMDQAJAAkACQAJAIAYgA2oiBSgCAA4DAAECAAsCQCAFQQhqKAIAQQNHDQAgAS0AAA0AIAVBDGooAgAgARCYAQsgBUEoaigCACABELcJDAILIAVBMGooAgAiBUUNASABLQAADQEgBSABEJgBDAELIAVBBGooAgAgARC3CQsgByADQThqIgNHDQAMAwsLIAMoAgQgARC3CSABLQAADQEgAygCCCABEJgBDAELIAEtAAANACADKAIEIAEQmAELIAIgBEcNAAwCCwsCQAJAAkACQAJAAkACQAJAAkACQCACDgsKAAECAwQFBgcICgoLAkAgAS0AAA0AIAAoAiggARCYAQsgACgCCEECRw0JIAEtAAANCSAAQQxqIQMMCAsgACgCCEEBRw0IIAEtAAANCCAAQQxqIQMMBwsgAS0AAA0HIABBBGohAwwGCwJAIAAoAgQiAygCACICQQNHDQACQCABLQAADQAgAygCECABEJgBCyADQQxqKAIAIgJFDQcgAS0AAA0HIAJBBHQhAiADQQhqKAIAQQxqIQMDQAJAIAEtAAANACADKAIAIAEQmAELIANBEGohAyACQXBqIgINAAwICwsC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HiACKAIwIQQgBUUNASACKAIsIARBAnRqIAU2AgAgBEEBaiEEDAELIARFDQsgBEEANgIIIARCMTcDACAFKAIAIQMgBSAENgIAAkAgAigCMCIFIAIoAihHDQAgAkEoakGgqJoBELUYCyACKAIsIAVBAnRqIAM2AgAgBUEBaiEECyACIAQ2AjAMAgsgAiAINgJsIAIgC0EBajYCeAsgAkHoAGoQrxYLIApBAWohCSAGIAYgDEdBAnRqIQMgCiANRg0CDAALCyAFIAIoAnBBgKiaARDYIAALIARBAUYNASACKAIsIQMgAigCKCEFIAIgBDYCrAEgBEECSw0CCyACIAQ2AhAgAiADNgIMIAIgBTYCCAwCCyACQegAakEIaiIDIAIoAiwiBCgCACIFQQhqKQMANwMAIAJB6ABqQRBqIgkgBUEQaikDADcDACACQegAakEYaiIIIAVBGGopAwA3AwAgAkHoAGpBIGoiBiAFQSBqKQMANwMAIAJB6ABqQShqIgogBUEoaikDADcDACACQegAakEwaiILIAVBMGopAwA3AwAgAkHoAGpBOGoiByAFQThqKQMANwMAIAIgBSkDADcDaCACKAIoIQAgARDRASABQThqIAcpAwA3AwAgAUEwaiALKQMANwMAIAFBKGogCikDADcDACABQSBqIAYpAwA3AwAgAUEYaiAIKQMANwMAIAFBEGogCSkDADcDACABQQhqIAMpAwA3AwAgASACKQNoNwMAIAVBwABBCBC9EyAEQQAQ1BwgACAEEPEiDAcLIAJBADYCeCACIAU2AnAgAiADNgJsIAIgAzYCaCACIAMgBEECdGo2AnQgAiACQawBajYCfCACQQhqIAJB6ABqEPYICwJAIAAtACQiBQ0AIAIoAhBFDQBBACEFAkACQAJAIAIoAgwoAgAiBCgCAEFuag4GAAMDAwMBAwsgBCgCBCIEKAIAQRdHDQIgBC0AGEEFRw0CIAQoAhAiBCgCAEEPRg0BDAILIAQtABhBBUcNASAEKAIQIgQoAgBBD0cNAQsgACAEELMBIAAtACQhBQsgAkE0aiACQQhqQQhqKAIANgIAIAIgAikCCDcCLCACQRk2AiggAiABKQMQNwM4AkAgBUH/AXFBAkcNACAAIAJBKGoQswELIAJB6ABqQThqIgUgAkEoakE4aikDADcDACACQegAakEwaiIEIAJBKGpBMGopAwA3AwAgAkHoAGpBKGoiAyACQShqQShqKQMANwMAIAJB6ABqQSBqIgkgAkEoakEgaikDADcDACACQegAakEYaiIIIAJBKGpBGGopAwA3AwAgAkHoAGpBEGoiBiACQShqQRBqKQMANwMAIAJB6ABqQQhqIgogAkEoakEIaikDADcDACACIAIpAyg3A2ggARDRASABQThqIAUpAwA3AwAgAUEwaiAEKQMANwMAIAFBKGogAykDADcDACABQSBqIAkpAwA3AwAgAUEYaiAIKQMANwMAIAFBEGogBikDADcDACABQQhqIAopAwA3AwAgASACKQNoNwMADAULAAsgAS0AGEEFRw0DIAEoAhAiBCgCAEF0aiIFQQcgBUEmSRsiBUEWSw0DAkBBASAFdEGAwZACcQ0AIAVBA0cNBAJAAkACQCAALQAkDgQBAAcHAQsgAC0AJQ0BCyAAIAQQswEMBQsgACABELMBDAQLIAAgBBCzAQwDCyABKAIoIgUoAgBBG0cNAiAFKAIIQQNHDQIgBSsDGCIOIA5iDQJEAAAAAAAA8D8gDqZEAAAAAAAA8L9iDQIgACAFELMBDAILAkAgAS0AFEEVRw0AIAAtACYNAQsgAC0AJA0BIAEoAgQiBCgCACIFQR9LDQFBASAFdEGAgIOAeHFFDQEgACAEELMBDAELIAAgARCzAQsgAkGwAWokAAv5JAIEfwJ+IwBBIGsiAiQAIAAgASkDADcDACAAQQhqIQMgAUEIaiEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIIIgVBNCAFQb2BgIB4SBtB/wFxDr0BAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8AQALIANBgICAgHg2AgAMvAELIANBgYCAgHg2AgAMuwELIANBgoCAgHg2AgAMugELIANBg4CAgHg2AgAMuQELIANBhICAgHg2AgAMuAELIANBhYCAgHg2AgAMtwELIANBhoCAgHg2AgAMtgELIANBh4CAgHg2AgAMtQELIANBiICAgHg2AgAMtAELIANBiYCAgHg2AgAMswELIANBioCAgHg2AgAMsgELIANBi4CAgHg2AgAMsQELIANBjICAgHg2AgAMsAELIANBjYCAgHg2AgAMrwELIANBjoCAgHg2AgAMrgELIANBj4CAgHg2AgAMrQELIANBkICAgHg2AgAMrAELIANBkYCAgHg2AgAMqwELIANBkoCAgHg2AgAMqgELIANBk4CAgHg2AgAMqQELIANBlICAgHg2AgAMqAELIANBlYCAgHg2AgAMpwELIANBloCAgHg2AgAMpgELIAMgBCkDADcDACADQRBqIARBEGopAwA3AwAgA0EIaiAEQQhqKQMANwMADKUBCyADQZiAgIB4NgIADKQBCyADQZmAgIB4NgIADKMBCyADQZqAgIB4NgIADKIBCyADQZuAgIB4NgIADKEBCyADQZyAgIB4NgIADKABCwJAIAEpAxAiBkIDg0IAUg0AIAanIgEgASgCACIBQQFqNgIAIAFBf0wNoQELIABBnYCAgHg2AgggACAGNwMQDJ8BCyADQZ6AgIB4NgIADJ4BCyADQZ+AgIB4NgIADJ0BCyADQaCAgIB4NgIADJwBCyADIAQpAwA3AwAgA0EQaiAEQRBqKQMANwMAIANBCGogBEEIaikDADcDAAybAQsgA0GigICAeDYCAAyaAQsgA0GjgICAeDYCAAyZAQsgAyAEKQMANwMAIANBEGogBEEQaikDADcDACADQQhqIARBCGopAwA3AwAMmAELIANBpYCAgHg2AgAMlwELIANBpoCAgHg2AgAMlgELAkAgASkDECIGQgODQgBSDQAgBqciASABKAIAIgFBAWo2AgAgAUF/TA2XAQsgAEGngICAeDYCCCAAIAY3AxAMlQELIANBqICAgHg2AgAMlAELIANBqYCAgHg2AgAMkwELIANBqoCAgHg2AgAMkgELIANBq4CAgHg2AgAMkQELIAJBFGogASgCECABKAIUEKwUIABBrICAgHg2AgggACACKQIUNwIMIABBFGogAkEUakEIaigCADYCACAAIAEpAxg3AxgMkAELIANBrYCAgHg2AgAMjwELIANBroCAgHg2AgAMjgELIANBr4CAgHg2AgAMjQELIAJBFGogASgCECABKAIUEKwUIABBsICAgHg2AgggACACKQIUNwIMIABBFGogAkEUakEIaigCADYCACAAIAEpAxg3AxgMjAELIAJBFGogASgCECABKAIUEKwRIABBsYCAgHg2AgggAEEUaiACQRRqQQhqKAIANgIAIAAgAikCFDcCDAyLAQsgA0GygICAeDYCAAyKAQsgA0GzgICAeDYCAAyJAQsgAkEIaiABKAIMIAEoAhAQrBQgAkEUaiABKAIYIAEoAhwQrBQgA0EIaiACQQhqQQhqKAIANgIAIAMgAikCCDcCACAAIAIpAhQ3AhQgAEEcaiACQRRqQQhqKAIANgIADIgBCyADIAQpAwA3AwAgA0EQaiAEQRBqKQMANwMAIANBCGogBEEIaikDADcDAAyHAQsgA0G2gICAeDYCAAyGAQsgA0G3gICAeDYCAAyFAQsgA0G4gICAeDYCAAyEAQsgAyAEKQMANwMAIANBEGogBEEQaikDADcDACADQQhqIARBCGopAwA3AwAMgwELIANBuoCAgHg2AgAMggELIANBu4CAgHg2AgAMgQELIANBvICAgHg2AgAMgAELIANBvYCAgHg2AgAMfwsgA0G+gICAeDYCAAx+CyADQb+AgIB4NgIADH0LIANBwICA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NgJIIANBkAJqIANBwABqEI0XIANBpAJqIANB0AFqKAIANgIAIAMgAykCyAE3ApwCIAQgAiADQZACahCEFyEKIAEtAMgBQaIBRw0AIAEQ1xIhAiABEOMOIAEgAhD6EgsgAEEHNgIAIAAgCjYCBCADQagBahCEIAwFCyADQRBqIAEgAhDCBQJAAkAgAy0AJEECRg0AIANB3ABqIANBKGopAwA3AgAgA0HUAGogA0EgaikDADcCACADQcwAaiADQRhqKQMANwIAIAMgAykDEDcCRAJAQSRFDQAgAEEEaiADQcAAakEk/AoAAAtBACEBDAELIAAgAygCEDYCBEEHIQELIAAgATYCAAwECyAEQaIBRg0BCyADQcAAakEEciAEEIYeIANBHDYCVCADQZy8mwE2AlAgA0GwgICAeDYCQCABKALAASABKALEASADQcAAahCEFyECAkAgAS0AyAFBogFHDQAgARDXEiEFIAEQ4w4gASAFEPoSCyAAQQc2AgAgACACNgIEDAILIAEQ1xIhAiABEOMOIABBBzYCACAAIAI2AgQMAQsgASABKAJ4IhBB//97cTYCeCABKALAASERIAEQ4w4gA0EIakEIQQhBOEG0yZsBENkWIANBADYCOCADIAMoAgwiCzYCNCADIAMoAgg2AjAgA0HoAWpBCGohAiADQegBakEEaiEMIANBwABqQRBqIRIgA0HoAWpBBHIhEyADQcgBakEIaiEGIANBwABqQQhqIRQgA0HAAGpBBHIhFSABLQDIASEFQQAhCkEAIRYCQAJAA0AgCkE4bCEHAkADQAJAIAVB/wFxIgVBA0cNACABEOMOIAEoArwBIQYgA0HAAGpBCGogA0EwakEIaigCACIENgIAIAMgAykCMDcDQCADIBY2AlggAyAGNgJUIAMgETYCUCADIAE2AkwgBEF/aiEFIAMoAkQiAiAEQThsaiEHIAMgGDcCXCAYQiCIpyEIIBinIQsgFkEBcSEJAkADQAJAAkACQCACIAdGIgQNACACKAIAIQogBUUNASAKQQJHDQIgAigCDCEKIAIoAgghDCADQbuAgIB4NgLoASABIAwgCiADQegBahDeHAwCCwJAAkACQCABLQCBAUEEcQ0AQQAhAiABLQB5QcAAcUUNAiABLQDIAUH/AXFBCkYNAQwCC0EAIQIgAS0AyAFBCkcNAQsgARDj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gHghBQywAQtBiYCAgHghBQyvAQtBioCAgHghBQyuAQtBi4CAgHghBQytAQtBjICAgHghBQysAQtBjYCAgHghBQyrAQtBjoCAgHghBQyqAQtBj4CAgHghBQypAQtBkICAgHghBQyoAQtBkYCAgHghBQynAQtBkoCAgHghBQymAQtBk4CAgHghBQylAQtBlICAgHghBQykAQtBlYCAgHghBQyjAQtBloCAgHghBQyiAQtBmICAgHghBQyhAQtBmYCAgHghBQygAQtBmoCAgHghBQyfAQtBm4CAgHghBQyeAQtBnICAgHghBQydAQsgACkDECIMpyEHAkAgDEIDg0IAUg0AIAcgBygCACIAQQFqNgIAIABBf0wNnwELIAxCIIinIQhBnYCAgHghBQydAQtBnoCAgHghBQybAQtBn4CAgHghBQyaAQtBoICAgHghBQyZAQtBooCAgHghBQyYAQtBo4CAgHghBQyXAQsgACgCHCEJIAAoAhghCiAAKAIUIQggACgCECEHIAAoAgwhCyAGIQUMlwELQaWAgIB4IQUMlQELQaaAgIB4IQUMlAELIAApAxAiDKchBwJAIAxCA4NCAFINACAHIAcoAgAiAEEBajYCACAAQX9MDZYBCyAMQiCIpyEIQaeAgIB4IQUMlAELQaiAgIB4IQUMkgELQamAgIB4IQUMkQELQaqAgIB4IQUMkAELQauAgIB4IQUMjwELIAFBFGogAEEQaigCACAAQRRqKAIAEKwUIAAoAhwhCSAAKAIYIQogASgCHCEIIAEoAhghByABKAIUIQtBrICAgHghBQyPAQtBrYCAgHghBQyNAQtBroCAgHghBQyMAQtBr4CAgHghBQyLAQsgAUEUaiAAQRBqKAIAIABBFGooAgAQrBQgACgCHCEJIAAoAhghCiABKAIcIQggASgCGCEHIAEoAhQhC0GwgICAeCEFDIsBCyABQRRqIABBEGooAgAgAEEUaigCABCsESABKAIcIQggASgCGCEHIAEoAhQhC0GxgICAeCEFDIoBC0GygICAeCEFDIgBC0GzgICAeCEFDIcBCyABQQhqIABBDGooAgAgAEEQaigCABCsFCABQRRqIABBGGooAgAgAEEcaigCABCsFCABKAIcIQkgASgCGCEKIAEoAhQhCCABKAIQIQcgASgCDCELIAEoAgghBQyHAQtBtoCA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ABxBAkYNACAAQQA6ABwLIAAoAiAiAyABEL0EIANBGGohBgJAIANBFGooAgAiBEUNACADQRBqKAIAIQAgBEEMbCEEA0AgASAAKAIAEN0IIABBDGohACAEQXRqIgQNAAsLAkAgBigCAEGAgICAeEYNAAJAIAMoAiAiBEUNACADKAIcIQAgBEEwbCEEA0ACQAJAIAAQwAsNACAAKAIAQQFGDQEgACkDACELIABCATcDACACQShqIABBKGopAwA3AwAgAkEgaiAAQSBqKQMANwMAIAJBGGogAEEYaikDADcDACACQRBqIABBEGopAwA3AwAgAkEIaiAAQQhqIgUpAwA3AwAgBUEANgIAIAIgCzcDACACEOkDDAELIAAgARDTAQsgAEEwaiEAIARBUGoiBA0ACwsgBhDoCAsCQCADKAI8IgFFDQAgARC+DiABKAIAIAFBBGooAgAQ9iIgAUEUQQQQvRMLIANBADYCPAJAIAMoAkAiAUUNACABKAIAIgAQ2AMgAEHgAEEIEL0TIAFBDEEEEL0TCyADQQA2AkALIAJBMGokAAuHFgEEfwJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4TAA8PAQIDDw8EBRAODAsKCQgHBgALIAAoAgwiAkUNDiAAKAIIIQAgAkEwbCECA0AgACABEK8BIABBMGohACACQVBqIgINAAwPCwsgACgCBCABEKUBIAAoAgghAAwLCyAAKAIMIgBFDQwgACABEKUBDwsgACgCKCEADAkLIAAoAgQgARClASAAKAIIIAEQrwEgACgCFCIADQgMCgsgACgCECABEKUBIAAoAgwiAkUNCSAAKAIIIgMgAkEYbGohBANAAkAgAygCFCIARQ0AIAAgARClAQsCQCADQQhqKAIAIgJFDQAgA0EEaigCACEAIAJBMGwhAgNAIAAgARCvASAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNCgwACwsgACgCBCABEKUBDAgLAkACQAJAAkACQAJAAkACQCAAKAIIDggAAQIDBAUGBwALAkAgACgCKCIEQQhqKAIAIgJFDQAgBEEEaigCACEAIAJBDGwhAgNAIAAoAgAgARClASAAQQxqIQAgAkF0aiICDQALCwJAIARBFGooAgAiAkUNACAEQRBqKAIAIQAgAkHYAGwhAgNA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AwA3AwAgBUEYaiACQSBqQRhqKQMANwMAIAVBEGogAkEgakEQaikDADcDACAFQQhqIAJBIGpBCGopAwA3AwAgBSACKQMgNwMAIAVBKGohBSAaQVhqIRogHUEoaiEdIBtBf2oiGw0ACwsgKq1CIIYgK62EIS8gESkCICEwQQMhHQwBCwJAIC5CA4NCAFENAAwBCyAupyIFIAUoAgAiBUEBajYCACAFQX9MDQQLICetQiCGICathCExICCtQiCGICGthCEyIC9CIIinIRogL6chGwsgEUHYAGohESAWIBlB2ABsaiIFICI2AlQgBSAjNgJQIAUgJDYCTCAFICU2AkggBSAxNwNAIAUgMjcDOCAFIC03AzAgBSAeNgIsIAUgHzYCKCAFIDA3AyAgBSAuNwMYIAUgKDYCFCAFICk2AhAgBSAcNgIEIAUgHTYCACAFIBqtQiCGIButhDcDCCAZQQFqIRkgGEF/aiIYDQALCyABLQCIASEbAkACQCABKAJ4IhENAEEAIRgMAQtBAC0A4PadARpBFBCEASIYRQ0BIBEoAgQhBSARKAIQIR4gESgCDCEfIAJBIGogESgCCCIoQQRBBBCjDiACKAIkIRogAigCIEEBRg0EIAIoAighKQJAIBpFDQAgKEECdCERICkhGSAaIR0DQCARRQ0BQQAtAOD2nQEaQeAAEIQBIhxFDQMgAkEgaiAFKAIAEGUCQEHgAEUNACAcIAJBIGpB4AD8CgAACyAZIBw2AgAgGUEEaiEZIBFBfGohESAFQQRqIQUgHUF/aiIdDQALCyAYIB42AhAgGCAfNgIMIBggKDYCCCAYICk2AgQgGCAaNgIACyACQQxqQQJqIhwgAkEQakECai0AADoAACACIAIvARA7AQwgAkEQaiABKAKUASABKAKYARD8A0EGIQUCQAJAIAEtADwiEUEGRw0ADAELIAEoAgwhGiABKAIIIR0CQAJAAkACQCARQX1qIgVBASAFQQNJG0H/AXEOAwABAgALIAEoAiAhIyABKAIcIREgASgCGCEZAkAgASkDECItQgODQgBSDQAgLaciBSAFKAIAIgVBAWo2AgAgBUF/TA0FCyABLQAkISJBAyEFQQAhJAwCCyABKAIkISIgASgCICEjIAJBIGogAUEoahCYCSABKAIcIREgASgCGCEZAkAgASkDECItQgODQgBSDQAg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AjcCDCAAQQI6ACQgACAENgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBqAJqKQMANwIAIABBFGogAkGgAmopAwA3AgAMCgsgAkGwAmogARDIASACKAKwAiEBAkBBOEUNACACQcABaiACQbQCakE4/AoAAAsgAUEiRg0BIAIoAuwCIQMCQEE4RQ0AIABBBGogAkHAAWpBOPwKAAALIAAgAzYCPAwCCyACQbACaiABEPsLIAJBwAFqQQhqIgEgAkGwAmpBDGopAgA3AwAgAkHAAWpBEGoiAyACQbACakEUaikCADcDACACQcABakEYaiIFIAJBsAJqQRxqKQIANwMAIAIgAikCtAI3A8ABAkACQCACKAKwAiIEQSJGDQAgACACKQLUAjcCJCAAQTxqIAJBsAJqQTxqKAIANgIAIABBNGogAkGwAmpBNGopAgA3AgAgAEEsaiACQbACakEsaikCADcCACAAQRxqIAUpAwA3AgAgAEEUaiADKQMANwIAIABBDGogASkDADcCACAAIAIpA8ABNwIEDAELIAJB6ABqQQhqIgYgASkDADcDACACQegAakEQaiADKQMAIgg3AwAgAkHoAGpBGGogBSkDACIJNwMAIAJB6ABqQQxqIAJBCGpBCGooAgA2AgAgAiACKQPAATcDaCAAQYKAgIB4NgIEIABBGGogCDcCACAAQSBqIAk3AgAgAiACKQMINwJsIAAgAikDaDcCCCAAQRBqIAYpAwA3AgALIAAgBDYCAAwICwJAQThFIgMNACACQYgBaiACQcABakE4/AoAAAsgAkGsAWogAkEQaigCADYCACACIAIpAwg3AqQBIAMNACAAQQRqIAJBiAFqQTj8CgAACyAAIAE2AgAMBgsgAkHQAGogARD7DCACQThqQRRqIAJB0ABqQRRqKAIANgIAIAJBOGpBCGogAkEIakEIaigCADYCACACIAIpAlw3AkQgAiACKQMINwM4IAJBIDYCwAEgAkGwAmogASgCBCABKAIIIAJBOGogAkHAAWoQoQ1BwABFDQUgACACQbACakHAAPwKAAAMBQsgACACKQOYAjcCDCAAQQE6ACQgACAENgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBqAJqKQMANwIAIABBFGogAykDADcCAAwECwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIARB7QBKDQACQCAEQURqDgcNAg4CAgkMAAsgBEGff2oOBgIKAQEBAwELAkAgBEGOf2oOCQYBBAEHAQEBCQALIARB7gBGDQQLIAJBCzYCwAEgAkGwAmogASgCBCABKAIIIAJBmAJqIAJBwAFqEKENQcAARQ0RIAAgAkGwAmpBwAD8CgAADBELIAAgAikDmAI3AgwgAEEGOwEkIABBBzYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQagCaikDADcCACAAQRRqIAJBoAJqKQMANwIADBALIAAgAikDmAI3AgwgAEGGAjsBJCAAQQw2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGoAmopAwA3AgAgAEEUaiACQaACaikDADcCAAwPCyAAIAIpA5gCNwIMIABBhgQ7ASQgAEEJNgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBqAJqKQMANwIAIABBFGogAkGgAmopAwA3AgAMDgsgACACKQOYAjcCDCAAQYYGOwEkIABBCjYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQagCaikDADcCACAAQRRqIAJBoAJqKQMANwIADA0LIAAgAikDmAI3AgwgAEGGCDsBJCAAQQ02AgggAEKigICAoICAgIB/NwIAIABBHGogAkGoAmopAwA3AgAgAEEUaiACQaACaikDADcCAAwMCyAAIAIpA5gCNwIMIABBhgo7ASQgAEELNgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBqAJqKQMANwIAIABBFGogAkGgAmopAwA3AgAMCwsgACACKQOYAjcCCCAAQQI6ACAgAEKigICAsICAgIB/NwIAIABBGGogAkGYAmpBEGopAwA3AgAgAEEQaiACQaACaikDADcCAAwKCyAAIAIpA5gCNwIIIABBAzoAICAAQqKAgICwgICAgH83AgAgAEEYaiACQZgCakEQaikDADcCACAAQRBqIAJBoAJqKQMANwIADAkLIAJBwAFqQRBqIgQgAkGYAmpBEGopAwA3AwAgAkHAAWpBCGoiBiACQZgCakEIaikDADcDACACIAIpA5gCNwPAAUEEIQMgBSgCACABKAIIRg0EIAEQgQpB+wBHDQQgAkGwAmogASACQQhqEKgDIAItALQCIQEgAigCsAIiB0EiRg0DAkBBO0UNACAAQQVqIAJBsAJqQQVqQTv8CgAACyAAIAE6AAQgACAHNgIADAgLIAAgAikDmAI3AgggAEEFOgAgIABCooCAgLCAgICAfzcCACAAQRhqIAJBmAJqQRBqKQMANwIAIABBEGogAkGgAmopAwA3AgAMBwsgACACKQOYAjcCCCAAQQg6ACAgAEKigICAsICAgIB/NwIAIABBGGogAkGYAmpBEGopAwA3AgAgAEEQaiACQZgCakEIaikDADcCAAwGCyAAIAIpA5gCNwIIIABBCToAICAAQqKAgICwgICAgH83AgAgAEEYaiACQZgCakEQaikDADcCACAAQRBqIAJBoAJqKQMANwIADAULIAFB/wFxQQxGDQAgAkHUAWogBUEIaigCADYCACACIAUpAgA3AswBIAEhAwsgACACKQPAATcCCCAAIAM6ACAgAEKigICAsICAgIB/NwIAIABBGGogBCkDADcCACAAQRBqIAYpAwA3AgAMAwsCQCADLQBlDQAgAkHQAGogARD7DCACQThqQRRqIAJB0ABqQRRqKAIANgIAIAJBOGpBCGogAkEIakEIaigCADYCACACIAIpAlw3AkQgAiACKQMINwM4IAJBIDYCwAEgAkGwAmogASgCBCABKAIIIAJBOGogAkHAAWoQoQ1BwABFDQMgACACQbACakHAAPwKAAAMAwsgAkEYaiABEL0FIAJBJGogAkEIakEIaigCADYCACAAQqKAgICggICAgH83AgAgAEEYaiACQRhqQRBqKQIANwIAIABBIGogAkEYakEYaikCADcCACACIAIpAwg3AhwgACACKQIYNwIIIABBEGogAkEYakEIaikCADcCAAwCCyACQQA2ArACIAJBBGpBoIeFASACQbACakGkh4UBEOIbAAsgAkH4AWogARCgCiACQfgBakEIaiIBIAJBCGpBCGooAgA2AgAgAEKigICA0ICAgIB/NwIAIAAgAikDCCIINwIIIABBGGogAkH4AWpBEGopAwA3AgAgAEEgaiACQfgBakEYaigCADYCACAAQRBqIAEpAwA3AgAgAiAINwP4AQsgAkHwAmokAAuPFwIWfwF+IwBBgAFrIgMkACADQQY2AiRBuIiAASEEIANBuIiAATYCICADQZWAgIB4NgIIIAMgASACQQV0aiIFNgIcIANB4ABqQQRyIQYgA0H0AGohByADQdAA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AkACQAJAAkAgAygCtBEiCkGAgICAeEcNACADQfAFakEIaiAELwEAOwEAIAMgAykD8A03A/AFDAELAkBBnANFDQAgA0GgFGpBGGogA0GADmpBGGpBnAP8CgAACwJAQegCRQ0AIANBoBRqQbgDaiADQYAOakG4A2pB6AL8CgAACyADQbYUaiADQfANakEIai8BADsBACADIAU6AK0UIAMgBjoArBQgAyAHNgKoFCADIAg2AqQUIAMgCTYCoBQgAyAKNgLUFyADIAMpA/ANNwGuFCADQeAXaiEGAkAgAygC6BciCSADKALgF0cNACAGQbTkgwEQ7xcLIAMoAuQXIAlBCWxqIghCADcAACAIQQhqQQA6AAAgAyAJQQFqNgLoFyADQfgXaiEHAkAgAygCgBgiCSADKAL4F0cNACAHQcTkgwEQ8hcLIANB1BdqIQQgAygC/BcgCUEDdGpCADcCACADIAlBAWo2AoAYIANB7BdqIQUCQCADKAL0FyIJIAMoAuwXRw0AIAVB1OSDARDtFwsgAygC8BcgCUECdGpBADYCACADIAlBAWo2AvQXIANBgA5qIARBABCZDwJAAkACQCADKAKADiIJQQNGDQAgA0HoDWogA0GWDmovAQA7AQAgAyADKQGODjcD4A0MAQsgA0GADmogBEEAEJkPAkAgAygCgA4iCUEDRg0AIANB6A1qIANBlg5qLwEAOwEAIAMgAykBjg43A+ANDAELIANBgA5qIARBABCZDyADKAKEDiEIAkACQCADKAKADiIJQQNGDQAgA0HoDWogA0GWDmovAQA7AQAgAyADKQGODjcD4A0MAQsgAyAINgKsGiADQYAOaiAEQQAQmQ8gAygChA4hCAJAIAMoAoAOIglBA0YNACADQegNaiADQZYOai8BADsBACADIAMpAY4ONwPgDQwBCyADIAg2ArAaIANBgA5qIANBoBRqEKUMAkAgAygCgA4iCUEDRg0AIANB6A1qIANBlg5qLwEAOwEAIAMgAykBjg43A+ANDAILIANBgA5qIANBoBRqENsRAkAgAygCgA4iCUEDRg0AIANB6A1qIANBlg5qLwEAOwEAIAMgAykBjg43A+ANDAILIANBgA5qIANBoBRqIAEgAhCcAwJAIAMoAoAOIglBA0YNACADQegNaiADQZYOai8BADsBACADIAMpAY4ONwPgDQwCCyAEEKsVIANBgA5qIANBoBRqEJ4NAkBBgAJFDQAgA0GcGGogA0GADmpBgAL8CgAACyADQYAOaiADQaAUahCrCAJAIAMoAoAOIglBA0YNACADQegNaiADQZYOai8BADsBACADIAMpAY4ONwPgDQwCCyADQaAUahCrDyADQYAOaiADQaAUahCuBwJAIAMoAoAOIglBA0YNACADQegNaiADQZYOai8BADsBACADIAMpAY4ONwPgDQwCCyADQYAOaiADQaAUahCCAgJAIAMoAoAOIglBA0YNACADQegNaiADQZYOai8BADsBACADIAMpAY4ONwPgDQwCCyADQaAUahD7CSADQaAUahD/AiADQYAOaiADQcAUaiICEKMBIANBkBhqIQkCQCADKAKQGCIIRQ0AIAggCCgCACIEQX9qNgIAIARBAUcNACADKAKQGCADKAKUGBDsEAsgCSADKQKADjcCACAJQQhqIANBgA5qQQhqKAIANgIAIAMgA0GgFGpBkAZBiAYgAygCkBgbaigCADYCpBogBhCsFSAFEK0VIAcQrhUgA0GEGGoQrxUgA0HgDWpBCGoiCCADQe4Xai8BADsBACADIAMpAeYXNwPgDSADKQLUFyELIAMpAtwXIQwgAy8B5BchBgJAQcgCRSIJDQAgA0GYC2ogA0HwF2pByAL8CgAACyACEJUdIANBiAtqQQhqIgcgCC8BADsBACADIAMpA+ANNwOICwJAIAkNACADQagDaiADQZgLakHIAvwKAAALIANB8AVqQQhqIAcvAQAiCDsBACADQZgDakEIaiIHIAg7AQAgAyADKQOICyINNwPwBSADIA03A5gDAkAgCQ0AIANB0ABqIANBqANqQcgC/AoAAAsgA0HOAGogBy8BADsBACADIAY7AUQgAyAMNwI8IAMgCzcCNCADIAMpA5gDNwFGAkACQAJAAkACQAJAAkACQAJAIAMtADAiBg4EAQIDAAELAkBB5AJFDQAgA0GgFGogA0E0akHkAvwKAAALIANBgA5qIANBDGogA0GgFGoQiAkgAygCgA4hCCADKAKEDiEHIAMtAIgOIQYgAy0AMSEFDA0LQQAtAOD2nQEaQewCEIQBIghFDQIgCEKBgICAEDcCAAJAQeQCRQ0AIAhBCGogA0E0akHkAvwKAAALQcTdgwEhB0EAIQYgAy0AMSEFDAwLIANB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AiQAAkACQAJAIAAtAGwiA0EERg0AIANBfWpBA0kNAQsgAEHYAGohBAJAIANBAkcNACAEIAEQqBwLIAEoAgBFDQEgASAEEN8FCyABKAIARQ0AIAAtAGxBA0cNACACIAEgAEHAAGoiAxD5BSACLQAsQQZGDQAgAxDPESADQShqIAJBKGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgA0EIaiACQQhqKQMANwMAIAMgAikDADcDAAsCQCAAKAKEASIDRQ0AIAAoAoABIgQgA0HYAGxqIQUDQAJAAkAgBCgCACIDQQVHDQAgASAEKAIEIgMQ0wMgAyABEFEgASgCAEUNASADKAIAQRpHDQEgASADQQhqIgYQwwUiB0UNASADEOQBIANBOGogB0E4aikDADcDACADQTBqIAdBMGopAwA3AwAgA0EoaiAHQShqKQMANwMAIANBIGogB0EgaikDADcDACADQRhqIAdBGGopAwA3AwAgA0EQaiAHQRBqKQMANwMAIAYgB0EIaikDADcDACADIAcpAwA3AwAgB0HAAEEIEL0TDAELIANBBEYNAAJAAkACQCADDgQDAAECAwsgBCgCBEEBRw0CIAEgBCgCCCIDENMDIAMgARBRIAEoAgBFDQIgAygCAEEaRw0CIAEgA0EIaiIGEMMFIgdFDQIgAxDkASADQThqIAdBOGopAwA3AwAgA0EwaiAHQTBqKQMANwMAIANBKGogB0EoaikDADcDACADQSBqIAdBIGopAwA3AwAgA0EYaiAHQRhqKQMANwMAIANBEGogB0EQaikDADcDACAGIAdBCGopAwA3AwAgAyAHKQMANwMAIAdBwABBCBC9EwwCCyAEKAIEIAEQvQEMAQsgBCgCDCIDRQ0AIANBKGwhByAEKAIIQQRqIQMDQAJAAkACQAJAAkAgA0F8aigCAA4FBAABAgMECyADKAIAQQFHDQMgASADQQRqKAIAIgYQ0wMgBiABEFEgASgCAEUNAyAGKAIAQRpHDQMgASAGQQhqIggQwwUiCUUNAyAGEOQBIAZBOGogCUE4aikDADcDACAGQTBqIAlBMGopAwA3AwAgBkEoaiAJQShqKQMANwMAIAZBIGogCUEgaikDADcDACAGQRhqIAlBGGopAwA3AwAgBkEQaiAJQRBqKQMANwMAIAggCUEIaikDADcDACAGIAkpAwA3AwAgCUHAAEEIEL0TDAMLIAEgAygCACIGENMDIAYgARBRIAEoAgBFDQIgBigCAEEaRw0CIAEgBkEIaiIIEMMFIglFDQIgBhDkASAGQThqIAlBOGopAwA3AwAgBkEwaiAJQTBqKQMANwMAIAZBKGogCUEoaikDADcDACAGQSBqIAlBIGopAwA3AwAgBkEYaiAJQRhqKQMANwMAIAZBEGogCUEQaikDADcDACAIIAlBCGopAwA3AwAgBiAJKQMANwMAIAlBwABBCBC9EwwCCyADIAEQ0QQMAQsgAyABEPwCCyADQShqIQMgB0FYaiIHDQALCyAEQdgAaiIEIAVHDQALCwJAIAAoApgBIgNFDQAgACgClAEiByADQShsaiEJA0ACQAJAAkACQAJAIAcoAgAOBQQAAQIDBAsgBygCBEEBRw0DIAEgBygCCCIDENMDIAMgARBRIAEoAgBFDQMgAygCAEEaRw0DIAEgA0EIaiIGEMMFIgRFDQMgAxDkASADQThqIARBOGopAwA3AwAgA0EwaiAEQTBqKQMANwMAIANBKGogBEEoaikDADcDACADQSBqIARBIGopAwA3AwAgA0EYaiAEQRhqKQMANwMAIANBEGogBEEQaikDADcDACAGIARBCGopAwA3AwAgAyAEKQMANwMAIARBwABBCBC9EwwDCyABIAcoAgQiAxDTAyADIAEQUSABKAIARQ0CIAMoAgBBGkcNAiABIANBCGoiBhDDBSIERQ0CIAMQ5AEgA0E4aiAEQThqKQMANwMAIANBMGogBEEwaikDADcDACADQShqIARBKGopAwA3AwAgA0EgaiAEQSBqKQMANwMAIANBGGogBEEYaikDADcDACADQRBqIARBEGopAwA3AwAgBiAEQQhqKQMANwMAIAMgBCkDADcDACAEQcAAQQgQvRMMAgsgBygCBCIDQcAAaiABEIwDIANBkAFqIAEQ/AIgAy0APCIEQQZGDQECQAJAIARBBEYNACAEQX1qQQNJDQELIANBKGohBgJAIARBAkcNACAGIAEQqBwLIAEoAgBFDQIgASAGEN8FCyABKAIARQ0BIAMtADxBA0cNASACIAEgA0EQaiIDEPkFIAItACxBBkYNASADEM8RIANBKGogAkEoaikDADcDACADQSBqIAJBIGopAwA3AwAgA0EYaiACQRhqKQMANwMAIANBEGogAkEQaikDADcDACADQQhqIAJBCGopAwA3AwAgAyACKQMANwMADAELIAcoAgwiA0UNACADQShsIQQgBygCCEEEaiEDA0ACQAJAAkACQAJAIANBfGooAgAOBQQAAQIDBAsgAygCAEEBRw0DIAEgA0EEaigCACIGENMDIAYgARBRIAEoAgBFDQMgBigCAEEaRw0DIAEgBkEIaiIIEMMFIgVFDQMgBhDkASAGQThqIAVBOGopAwA3AwAgBkEwaiAFQTBqKQMANwMAIAZBKGogBUEoaikDADcDACAGQSBqIAVBIGopAwA3AwAgBkEYaiAFQRhqKQMANwMAIAZBEGogBUEQaikDADcDACAIIAVBCGopAwA3AwAgBiAFKQMANwMAIAVBwABBCBC9EwwDCyABIAMoAgAiBhDTAyAGIAEQUSABKAIARQ0CIAYoAgBBGkcNAiABIAZBCGoiCBDDBSIFRQ0CIAYQ5AEgBkE4aiAFQThqKQMANwMAIAZBMGogBUEwaikDADcDACAGQShqIAVBKGopAwA3AwAgBkEgaiAFQSBqKQMANwMAIAZBGGogBUEYaikDADcDACAGQRBqIAVBEGopAwA3AwAgCCAFQQhqKQMANwMAIAYgBSkDADcDACAFQcAAQQgQvRMMAgsgAyABENEEDAELIAMgARDIJAsgA0EoaiEDIARBWGoiBA0ACwsgB0EoaiIHIAlHDQALCwJAIAAtADwiA0EGRg0AAkACQCADQQRGDQAgA0F9akEDSQ0BCyAAQShqIQQCQCADQQJHDQAgBCABEKgcCyABKAIARQ0BIAEgBBDfBQsgASgCAEUNACAALQA8QQNHDQAgAiABIABBEGoiAxD5BSACLQAsQQZGDQAgAxDPESADQShqIAJBKGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgA0EIaiACQQhqKQMANwMAIAMgAikDADcDAAsgAkEwaiQAC+cUAgt/AX4jAEEwayICJAAgAUEAOgA8IAEoAiAhAyABQQA2AiACQCADRQ0AIAEoAhwhBANAIARBDGooAgAhBSAEKAIAIgYQ5AEgBkHAAEEIEL0TAkAgBUUNACAFEOUaIAUoAgAgBUEEaigCABDxIiAFQRRBBBC9EwsgBEEQaiEEIANBf2oiAw0ACwsCQCABKAIIIgRFDQAgASgCBCEFIARBDGwhBANAIAAgBSgCABDdCCAFQQxqIQUgBEF0aiIEDQALCwJAIAEoAhQiB0UNACABKAIQIgYhBUEAIQQCQANAQTAhCEE1IQkCQAJAAkACQAJAAkACQCAFKAIAIgNBfGpBACADQXtqQQhJGw4JBAIBAwYFBgYABgsgBUHFAGotAABFDQUMBAtBICEIQSchCQsgBSAJai0AAA0CIAUgCGooAgAoAhhBgICAgHhHDQMMAgsgBUHJAGotAAANASAFQcUAai0AAA0BDAILIAVBIGooAgBBgICAgHhHDQELIAUQpwVBASEKIARBAWogB0YNAiAEQX9zIAdqIQNBASEKQQEhCANAQTAhC0E1IQwCQAJAAkACQAJAAkACQAJAIAVB2ABqIgQoAgAiCUF8akEAIAlBe2pBCEkbDgkEAgEDBQYFBQAFCyAFQZ0Bai0AAA0FDAQLQSAhC0EnIQwLIAUgDGpB2ABqLQAADQMgBSALakHYAGooAgAoAhhBgICAgHhGDQMMAgsgBUGhAWotAAANAiAFQZ0Bai0AAEUNAQwCCyAFQfgAaigCAEGAgICAeEYNAQtB2ABFDQEgBSAIQah/bGpB2ABqIARB2AD8CgAADAELIAQQpwUgCEEBaiIKIQgLIAQhBSADQX9qIgMNAAwDCwsgBUHYAGohBSAHIARBAWoiBEcNAAtBACEKCyABIAcgCmsiBTYCFCAFRQ0AIAYgBUHYAGxqIQgDQAJAAkACQAJAAkACQAJAAkACQCAGKAIAIgVBfGpBACAFQXtqQQhJGw4JAQcGBQQACAMCAQsACyAGQQM6AFECQCAFQQNHDQAgACAGKAIEEN0ICwJAIAYoAkgiBUUNACAGKAJEIgMgBUEGdGohCQNAAkACQCADKAIAQQdGDQACQCADKAI4IgRFDQAgAygCNCEFIARBDGwhBANAIAAgBSgCABDdCCAFQQxqIQUgBEF0aiIEDQALCyADIAAQ7AUMAQsCQCADKAI4IgRFDQAgAygCNCEFIARBDGwhBANAIAAgBSgCABDdCCAFQQxqIQUgBEF0aiIEDQALCwJAIAMtABxBAkcNACADKAIIIAAQ7AUgACADKAIMEN0IDAELIANBADoAHAJAIAMoAiAiBUUNACAFKAIAIgQQ2AMgBEHgAEEIEL0TIAVBDEEEEL0TCyADQQA2AiALIANBwABqIgMgCUcNAAsLIAYoAiBBgICAgHhGDQYgBigCKCIHRQ0GIAdBMGwhAyAGKAIkIgQhBQNAAkACQCAFEMALDQAgBSgCAEEBRg0BIAUpAwAhDSAFQgE3AwAgAkEoaiAFQShqKQMANwMAIAJBIGogBUEgaikDADcDACACQRhqIAVBGGopAwA3AwAgAkEQaiAFQRBqKQMANwMAIAJBCGogBUEIaiIJKQMANwMAIAlBADYCACACIA03AwAgAhDpAwwBCyAFIAAQ0wELIAVBMGohBSADQVBqIgMNAAsgBEEwaiEFIAdBf2ohA0EAIQkCQAJAA0ACQCAEKAIAQQFHDQAgBEEEaigCACIMQf7/e0sNAiAEQQhqKAIAIAxyRQ0CCyAFQTBqIQUgA0F/aiEDIARBMGohBCAHIAlBAWoiCUcNAAtBACEMDAELIAQQ6QNBASEMIAlBAWogB0YNAEEBIQwDQAJAAkAgBSgCAEEBRw0AAkAgBUEEaigCACIEQf7/e0sNACAFQQhqKAIAIARyDQELIAUQ6QMgDEEBaiEMDAELIAUgDEFQbGoiBCAFKQMANwMAIARBKGogBUEoaikDADcDACAEQSBqIAVBIGopAwA3AwAgBEEYaiAFQRhqKQMANwMAIARBEGogBUEQaikDADcDACAEQQhqIAVBCGopAwA3AwALIAVBMGohBSADQX9qIgMNAAsLIAYgByAMazYCKAwGCwJAIAYoAkAiBUUNACAFKAIAIgQQ2AMgBEHgAEEIEL0TIAVBDEEEEL0TCyAGQYCAgBg2AEUCQCAGKAIIQQNHDQAgACAGKAIMEN0ICwJAIAYoAjwiBUUNACAAIAUQ3QgLIAZBADYCQCAGKAI4IgRFDQUgBigCNCEFIARBDGwhBANAIAAgBSgCABDdCCAFQQxqIQUgBEF0aiIEDQAMBgsLIAAgBkEEahCUBgwECyAGQQM6ADggBkEANgE6AkAgBigCJCIFRQ0AIAAgBRDdCAsCQCAGKAIoIgVFDQAgBSgCACIEENgDIARB4ABBCBC9EyAFQQxBBBC9EwsgBkEANgIoIAYoAjQiBEUNAyAGKAIwIQUgBEEMbCEEA0AgACAFKAIAEN0IIAVBDGohBSAEQXRqIgQNAAwECwsgBkEANgBFIAZBAzoASyAGQckAakEAOwAAAkAgBigCCEEDRw0AIAAgBigCDBDdCAsCQCAGKAI8IgVFDQAgACAFEN0ICwJAIAYoAkAiBUUNACAFKAIAIgQQ2AMgBEHgAEEIEL0TIAVBDEEEEL0TCyAGQQA2AkAgBigCOCIERQ0CIAYoAjQhBSAEQQxsIQQDQCAAIAUoAgAQ3QggBUEMaiEFIARBdGoiBA0ADAMLCyAGQQA6ACkgBkEAOwAnIAZBAzoAJCAGKAIgIgMgABC9BCADQRhqIQkCQCADQRRqKAIAIgRFDQAgA0EQaigCACEFIARBDGwhBANAIAAgBSgCABDdCCAFQQxqIQUgBEF0aiIEDQALCyAJIAAQjAYCQCADKAI8IgVFDQAgBRC+DiAFKAIAIAVBBGooAgAQ9iIgBUEUQQQQvRMLIANBADYCPAJAIAMoAkAiBUUNACAFKAIAIgQQ2AMgBEHgAEEIEL0TIAVBDEEEEL0TCyADQQA2AkAMAQsgBkEAOgA3IAZBAzoAOSAGQQA7ADUCQCAGKAIIQQNHDQAgACAGKAIMEN0ICyAGKAIwIgMgABC9BCADQRhqIQkCQCADQRRqKAIAIgRFDQAgA0EQaigCACEFIARBDGwhBANAIAAgBSgCABDdCCAFQQxqIQUgBEF0aiIEDQALCyAJIAAQjAYCQCADKAI8IgVFDQAgBRC+DiAFKAIAIAVBBGooAgAQ9iIgBUEUQQQQvRMLIANBADYCPAJAIAMoAkAiBUUNACAFKAIAIgQQ2AMgBEHgAEEIEL0TIAVBDEEEEL0TCyADQQA2AkALIAZB2ABqIgYgCEcNAAsLAkAgASgCMCIFRQ0AIAAgBRDdCAsCQCABKAI0IgVFDQAgBRC+DiAFKAIAIAVBBGooAgAQ9iIgBUEUQQQQvRMLIAFBADYCNAJAIAEoAjgiBUUNACAFEOUaIAUoAgAgBUEEaigCABDxIiAFQRRBBBC9EwsgAUEANgI4IAJBMGokAAugFAIPfwF+IwBB8ABrIgEkAAJAAkACQCAALQDIASICQbV/aiIDQR9LDQBBASADdEGBgIKQeHENAQsgAkG0f2pB/wFxQdQASw0BCwJAAkACQAJAIAAtAB0iBEGkAUYNACAAKALAASEFIAEgBDoAFyABQdgAakEQQQFBARCjDiABKAJcIQMgASgCWEEBRg0BIAFBADYCICABIAEoAmA2AhwgASADNgIYAkACQCAAKAJcIgNFDQADQAJAIAAoAlgiAi0AAEEtRw0AIAEoAiAhBiABQRhqQQEQjh4gASgCHCABKAIgakEtOgAAIAAgA0F/aiIDNgJcIAAgAkEBajYCWCAAIAAoAmhBAWo2AmggASAGQQFqNgIgIAMNAQwGCyAAKAJoIQcgAUHYAGpBEEEBQQEQow4gASgCXCECIAEoAlhBAUYNAkEAIQggAUEANgJQIAEgASgCYCIJNgJMIAEgAjYCSAJAA0ACQAJAIAAoAlgiBiwAACICQX9KDQAgBi0AAUE/cSEKIAJBH3EhCwJAAkAgAkFgTw0AIAtBBnQgCnIhAgwBCyAKQQZ0IAYtAAJBP3FyIQoCQCACQXBPDQAgCiALQQx0ciECDAELIApBBnQgBi0AA0E/cXIgC0ESdEGAgPAAcXIiAkGAgMQARg0ECwJAAkAgAkH/AEsNACACQcCtmQFqLQAARQ0FQQEhCwwBC0Gh2pgBIAJBCXZByPabAWogAkH/gzhLGy0AAEEFdCACQQN2QT9xakGAhZwBai0AACACQQdxdkEBcUUNBAJAIAJBgBBPDQBBAiELDAELQQNBBCACQYCABEkbIQsLIAFByABqIAsQjh4gASgCTCIJIAEoAlBqIQwCQAJAAkACQAJAIAJBgAFJDQAgAkGAEEkNASACQYCABEkNAiAMIAJBP3FBgAFyOgADIAJBBnYhDSACQQx2IQ4gAkESdkFwciEPQQQhCgwDCyAMIAI6AAAgASALIAhqIgg2AlBBASEKDAMLIAwgAkE/cUGAAXI6AAEgDCACQQZ2QcABcjoAACABIAsgCGoiCDYCUEECIQoMAgsgAkEGdiEOIAJBDHZBYHIhD0EDIQogAiENCyAMIA86AAAgDCANQT9xQYABcjoAAiAMIA5BP3FBgAFyOgABIAEgCyAIaiIINgJQCyAAIAMgCmsiAzYCXCAAIAYgCmo2AlggACAAKAJoIApqNgJoDAELAkACQAJAAkACQAJAIAJB/wFxQcCtmQFqLQAADQAgAkHcAEcNCCAAIANBf2oiAjYCXCAAIAZBAWoiCjYCWCAAIAAoAmgiC0EBaiIMNgJoAkACQCACRQ0AIAotAABB9QBGDQELIAFBo4CAgHg2AlggACAMIAFB2ABqEJUiDAYLIAAgC0ECajYCaCAAIANBfmo2AlwgACAGQQJqNgJYIAFB2ABqIAAQxQMCQCABKAJYQQNHDQAgASgCXCIDQQhqEK4DIANBIEEIEL0TIAAoAmghAyABQaOAgIB4NgJYIAAgAyABQdgAahCVIiAAKAJcIQMMCQsCQCABKAJcIgNBgHBxQYCwA0YNAAJAAkAgA0GAAUkiCkUNAEEBIQIMAQsCQCADQYAQTw0AQQIhAgwBC0EDQQQgA0GAgARJGyECCyABQcgAaiACEI4eIAEoAkwiCSABKAJQaiEGIAoNAiADQYAQSQ0DAkAgA0GAgARJDQAgBiADQT9xQYABcjoAAyAGIANBEnZB8AFyOgAAIAYgA0EGdkE/cUGAAXI6AAIgBiADQQx2QT9xQYABcjoAAQwFCyAGIANBP3FBgAFyOgACIAYgA0EMdkHgAXI6AAAgBiADQQZ2QT9xQYABcjoAAQwECyAAKAJoIQMgAUGjgICAeDYCWCAAIAMgAUHYAGoQlSIMBAsgAUHIAGpBARCOHiAAIANBf2oiAzYCXCAAIAZBAWo2AlggASgCTCIJIAEoAlBqIAI6AAAgACAAKAJoQQFqNgJoIAEgCEEBaiIINgJQDAULIAYgAzoAAAwBCyAGIANBP3FBgAFyOgABIAYgA0EGdkHAAXI6AAALIAEgAiAIaiIINgJQCyAAIAAtAIMBQQFyOgCDAQsgACgCXCEDCyADDQALQQAhAwsgASgCSCECIAFBGGogCSAJIAhqEI8bIAIgCRC9IgJAIAAoAmggB0YNACADDQELCyABKAIgDQQLAkAgBEG0f2pB/wFxQdUASQ0AIAAoAgghAyAAQQo2AggCQCADQQpGDQAgA0ECRw0AIAApAxAhEAwGCyABQQE2AlwgAUHws5kBNgJYIAFCATcCZCABQfsGrUIghiAAQQhqrYQ3A0ggASABQcgAajYCYCABQdgAakH4s5kBEKgdAAsgAUHYAGogAUEXahDOESAAKAJ0QQhqIAEoAlwiAyABKAJgEN4DIRAgASgCWCICQYCAgIB4Rg0EIAIgAxC9IgwECyACIAEoAmBBsKibARDYIAALQYyzmQEQySIACyADIAEoAmBBsKibARDYIAALAkACQAJAIARBtH9qQf8BcUHVAEkNACAAKQMIIRAgAEEKNgIIIAFBOGogAEEQaikDADcDACABIBA3AzACQAJAAkAgEKciA0EKRg0AQQIhBiADQQJGDQELIAFBAjYCXCABQZT1mgE2AlggAUICNwJkIAFB7AStQiCGIAFBGGqthDcDUCABQfwGrUIghiABQRdqrYQ3A0ggASABQcgAajYCYCABQSRqIAFB2ABqEIgKQQEhAgwBCyABIAEpAzg3A0AgAUECNgJcIAFBlPWaATYCWCABQgI3AmQgAUHsBK1CIIYgAUEYaq2ENwNQIAFB5wStQiCGIAFBwABqrYQ3A0ggASABQcgAajYCYCABQSRqIAFB2ABqEIgKAkAgASkDQCIQQgODQgBSDQAgEKciAyADKAIAIgJBf2o2AgACQCACQQFHDQAgAyADKAIQEOkdCyABKAIwIQYLQQAhAiAGIQMLIANBCkYNAiADQQJHDQEgAkUNAiABKQM4IhBCA4NCAFINAiAQpyIDIAMoAgAiAkF/ajYCACACQQFHDQIgAyADKAIQEOkdDAILIAFBAjYCXCABQZT1mgE2AlggAUICNwJkIAFB7AStQiCGIAFBGGqthDcDUCABQfwGrUIghiABQRdqrYQ3A0ggASABQcgAajYCYCABQSRqIAFB2ABqEIgKDAELIAFBMGoQigkLIAEoAiQhAyAAKAJ0QQhqIAEoAigiAiABKAIsEN4DIRAgA0GAgICAeEYNACADIAIQvSILIABBwAFqIQMCQCAAKAIIQQpGDQAgAEEIahCKCQsgACAQNwMQIABBAjYCCCABQQhqQQhqIgJByQA6AAAgASAFNgIIIAEgAC0AHDoAESABIAAoAmg2AgwgASgCGCABKAIcEL0iIAAgAUEIahCHDiADQQhqIAIoAgA2AgAgAyABKQIINwIACyABQfAAaiQAC5ISARR/IwBBIGsiBiQAAkACQAJAAkAgAUEhTw0AIAEhBwwBCyACQX5qIQgDQAJAIAQNACAAIAEgAiADQQEQugIMAwsgACABQXhxaiEJIAAgAUEDdiIKQQ5saiEHAkACQCABQcAASQ0AIAAgCSAHIAoQtwshCwwBCwJAAkAgAC0AACIKIAktAAAiDEYNACAKIAxJIQ0MAQsgAC0AASAJLQABSSENCwJAAkAgCiAHLQAAIg5GDQAgCiAOSSEKDAELIAAtAAEgBy0AAUkhCgsgACELIA0gCkcNAAJAAkAgDCAORg0AIAwgDkkhCgwBCyAJLQABIActAAFJIQoLIAcgCSANIApzGyELCyAEQX9qIQQgBiALLQABIg86AAcgBiALLQAAIhA6AAYgCyAAa0EBdiERAkACQCAFRQ0AAkAgBS0AACIJIBBB/wFxIgdHDQAgBS0AASAPQf8BcUkNAQwCCyAJIAdPDQELIAMgAUkNBCACIAFBAXQiEmohDUEAIQcgACEKIBEhEwNAAkACQCAKIABBACATQX1qIgkgCSATSxtBAXRqIhRJDQAgECEVDAELIAstAAAhFUEAIQ4gEEH/AXEhFkEAIQwDQAJAAkAgCiAMaiIJLQAAIhAgFkYNACAQIBZJIRAMAQsgCUEBai0AACAPQf8BcUkhEAsgAiANIA5qIhdBfmogEBsgB0EBdGogCS8AADsAACAHIBBqIRACQAJAIAlBAmoiGC0AACIZIBVB/wFxIgdGDQAgGSAHSSEZDAELIAlBA2otAAAgCy0AASIPSSEZCyACIBdBfGogGRsgEEEBdGogGC8AADsAACAQIBlqIRACQAJAIAlBBGoiGC0AACIZIAdGDQAgGSAHSSEZDAELIAlBBWotAAAgCy0AASIPSSEZCyACIBdBemogGRsgEEEBdGogGC8AADsAACAQIBlqIRACQAJAIAlBBmoiFy0AACIZIAdGDQAgGSAHSSEHDAELIAlBB2otAAAgCy0AASIPSSEHCyACIA5BeGoiDiANaiAHGyAQQQF0aiAXLwAAOwAAIAxBCGohDCAQIAdqIQcgCUEIaiAUSQ0ACyAKIAxqIQogDSAMayENCwJAAkAgCiAAIBNBAXRqIg5JDQAgFSEQDAELIAstAAAhEANAAkACQCAKLQAAIgkgEEH/AXEiDEYNACAJIAxJIQkMAQsgCkEBai0AACALLQABIg9JIQkLIAIgDUF+aiINIAkbIAdBAXRqIAovAAA7AAAgByAJaiEHIApBAmoiCiAOSQ0ACwsCQCATIAFGDQAgDUF+aiINIAdBAXRqIAovAAA7AAAgCkECaiEKIAEhEwwBCwsCQCAHQQF0IgxFDQAgACACIAz8CgAACyABIAdrIQ4CQCABIAdGDQAgCCASaiEJIAAgDGohCiAOIQ0DQCAKIAkvAAA7AAAgCUF+aiEJIApBAmohCiANQX9qIg0NAAsLIAdFDQACQCABIAdPDQAgBkEANgIYIAZBATYCDCAGQZTWmwE2AgggBkIENwIQIAZBCGpBiNmbARCoHQALIAAgDGogDiACIAMgBCAGQQZqEMABIAchASAHQSFJDQIMAQsgAyABSQ0DIAIgAUEBdCIVaiEMQQAhCiAAIQ0DQAJAIA0gAEEAIBFBfWoiCSAJIBFLG0EBdGoiGE8NACALLQAAIRZBACEQQQAhDgNAAkACQCAWQf8BcSIHIA0gDmoiCS0AACIXRg0AIAcgF0khFwwBCyALLQABIAlBAWotAABJIRcLIAwgEGoiGUF+aiACIBcbIApBAXRqIAkvAAA7AAAgCiAXQQFzaiEKAkACQCAHIAlBAmoiDy0AACIXRg0AIAcgF0khFwwBCyALLQABIAlBA2otAABJIRcLIBlBfGogAiAXGyAKQQF0aiAPLwAAOwAAIAogF0EBc2ohCgJAAkAgByAJQQRqIg8tAAAiF0YNACAHIBdJIRcMAQsgCy0AASAJQQVqLQAASSEXCyAZQXpqIAIgFxsgCkEBdGogDy8AADsAACAKIBdBAXNqIQoCQAJAIAcgCUEGaiIXLQAAIhlGDQAgByAZSSEHDAELIAstAAEgCUEHai0AAEkhBwsgEEF4aiIQIAxqIAIgBxsgCkEBdGogFy8AADsAACAOQQhqIQ4gCiAHQQFzaiEKIAlBCGogGEkNAAsgDSAOaiENIAwgDmshDAsCQCANIAAgEUEBdGoiDk8NACALLQAAQf8BcSEHA0ACQAJAIAcgDS0AACIJRg0AIAcgCUkhCQwBCyALLQABIA1BAWotAABJIQkLIAxBfmoiDCACIAkbIApBAXRqIA0vAAA7AAAgCiAJQQFzaiEKIA1BAmoiDSAOSQ0ACwsCQCARIAFGDQAgAiAKQQF0aiANLwAAOwAAIA1BAmohDSAKQQFqIQogDEF+aiEMIAEhEQwBCwsCQCAKQQF0Ig5FDQAgACACIA78CgAACyABIApGDQIgCCAVaiEJIAAgDmohDSABIAprIgchDANAIA0gCS8AADsAACAJQX5qIQkgDUECaiENIAxBf2oiDA0ACwJAIAEgCkkNACAAIA5qIQBBACEFIAchASAHQSFJDQIMAQsLIAogAUGY2ZsBENEiAAsgB0ECSQ0AIAMgB0EQakkNASAHQQF2IRACQAJAAkAgB0EPSw0AIAdBB00NASAAIAIQyQggACAQQQF0IglqIAIgCWoQyQhBBCEXDAILIAAgAiACIAdBAXRqIgkQ2B4gACAQQQF0IgpqIAIgCmogCUEQahDYHkEIIRcMAQsgAiAALwAAOwAAQQEhFyACIBBBAXQiCWogACAJai8AADsAAAtBACEJIAZBADYCEEEAIBdrIQsgACAXQQF0IgpqIRggAiAKaiEWIAYgEDYCFCAHIBBrIRkgBkEQaiEPA0AgCSEOAkAgFyAZIBAgDyAJQQJ0aigCACIJGyIKTw0AIAIgCUEBdCIJaiEMIAsgCmohDSAYIAlqIQogFiAJaiEJA0AgCSAKLwAAOwAAIAwgCRDgCyAKQQJqIQogCUECaiEJIA1Bf2oiDQ0ACwtBASEJIA5BAXFFDQALIAIgByAAEMEICyAGQSBqJAAPCwAL+xICGX8CfiMAQRBrIgYkAAJAAkACQAJAAkACQAJAIAMoAhAiByADKAIUIghLDQAgAkEAIAUgASgCuAIiCWsiCiAKIAVLGyILQSAgC0EgSRsiDDYCDCAMIAIoAggiDUsNBCACKAIEIQ4gBSAJTQ0BIAxBAnQiAkUNAiAOQQAgAvwLAAwCCyAAQQA2AgAMBQsgBUUNAQsgBUECdCICRQ0AIARBACAC/AsACyABKAIkIg8oAtwCIgJFDQEgAkEBdCEQIAdBAWohEUEAIQIgBCENA0AgAiAFTw0CIA0gETYCACANQQhqIQ0gECACQQJqIgJHDQAMAgsLIAwgDUGY/IMBELwiAAsCQAJAAkACQAJAAkACQAJAAkACQAJAIAMoAgAOAwIAAQILIAEoAiBFDQYgASgCHCgCACEQDAILIAMoAgQhAiABLQAJQQFxRQ0CQQAhECACQQFqIgIgASgCIE8NASABKAIcIAJBAnRqKAIAIRAMAQsCQCAPKAKwAiAPKAK0AkYNACAGQQM6AAQgBkEANgIIIAZBBGoQxRwhAiAAQQI2AgAgACACNgIEDAkLIAEoAiBFDQMgASgCHCgCACEQCyAHIAhJDQEgASgCKCESQQAhEQwECyAGIAI2AgwgBkECNgIIIAZBAzoABCAGQQRqEMUcIQIgAEECNgIAIAAgAjYCBAwGCyAKQSAgCkEgSRshEyAHIAMoAgwiFCAHIBRLGyEVIApBAnQhFiAEIAlBAnRqIRcgASgCKCESIAMoAgghGCADLQAYQQFxIRkgAS0ACCICQQJGIAJyQX9zIRpBACERA0ACQAJAAkACQAJAIAciDSAVRg0AIA1BAWohByABIBAgGCANaiIbLQAAEOgZIR8gECASSQ0EIAEgEBD7GiIgpyICQf8HcUUNAyANQQBHIAJxDQQgAkECcQ0EIAJBBHENAQwCCyAVIBRB4PiDARDDEgALIA1FDQAgG0F/ai0AACAPLQDgAkcNAgsCQCACQQhxRQ0AIBstAAAgDy0A4AJHDQILAkAgAkEQcUUNACANRQ0AAkAgG0F/ai0AAEF2ag4EAQMDAAMLIBstAABBCkYNAgsCQAJAAkACQAJAAkAgAkEgcUUNAAJAIBstAABBdmoOBAAICAEICwJAIA1FDQAgG0F/ai0AACIcQQ1GDQhBCiEdIAJBwABxRQ0EDAMLQQohHSACQcAAcQ0BQQohHSACQYABcQ0EDAULIAJBwABxRQ0CIBstAAAhHSANRQ0AIBtBf2otAAAhHAwBCyAdQdTnhAFqLQAARQ0FIAJBgAFxRQ0DDAILIBxB/wFxQdTnhAFqLQAAIB1B1OeEAWotAABGDQQLIAJBgAFxRQ0BIBstAAAhHSANRQ0AIBtBf2otAABB1OeEAWotAAAgHUHU54QBai0AAEcNAwwBCyAdQdTnhAFqLQAADQILAkAgAkGAAnFFDQAgGCAUIA0Q1gRB/wFxRQ0CCyACQYAEcUUNACAYIBQgDRCzA0H/AXFFDQELAkAgIEIqiKciHkEBdEEBciICIAVPDQAgBCACQQJ0aiAHNgIACwJAAkAgBSAJTQ0AIAogDEcNAQJAIBZFDQAgFyAOIBb8CgAACyAgQgqIpyIRRQ0AIAsgEWgiAk0NAANAIBcgAkECdGogBzYCACARQX4gAndxIhFoIgIgE0kNAAsLAkAgGQ0AQQEhESAfQoCAgICAgAGDUCAackEBcQ0CCyAAIB42AgQgAEEBNgIADAgLIAogDEHw+IMBEN0iAAsgEEUNBAJAIB+nIgJB/wdxRQ0AIA1BAEcgAnENBSACQQJxDQUCQCACQQRxRQ0AIA1FDQAgG0F/ai0AACAPLQDgAkcNBgsCQCACQQhxRQ0AIBstAAAgDy0A4AJHDQYLAkAgAkEQcUUNACANRQ0AAkAgG0F/ai0AAEF2ag4EAQcHAAcLIBstAABBCkYNBgsCQAJAAkACQAJAAkAgAkEgcUUNAAJAIBstAABBdmoOBAAMDAEMCwJAIA1FDQAgG0F/ai0AACIdQQ1GDQxBCiEQIAJBwABxDQIMAwtBCiEQIAJBwABxDQNBCiEQIAJBgAFxDQQMBQsgAkHAAHFFDQEgGy0AACEQIA1FDQIgG0F/ai0AACEdCyAdQf8BcUHU54QBai0AACAQQdTnhAFqLQAARg0JCyACQYABcUUNAiAbLQAAIRAgDUUNASAbQX9qLQAAQdTnhAFqLQAAIBBB1OeEAWotAABHDQgMAgsgEEHU54QBai0AAEUNByACQYABcUUNAQsgEEHU54QBai0AAA0GCwJAIAJBgAJxRQ0AIBggFCANENYEQf8BcUUNBgsgAkGABHFFDQAgGCAUIA0QswNB/wFxRQ0FCyAfQiuIISACQCAfQgqIpyINRQ0AIAsgDWgiAk0NAANAIA4gAkECdGogBzYCACANQX4gAndxIg1oIgIgDEkNAAsLICCnIRAgByAIRg0DDAALC0EAQQBBgPmDARDDEgALQQBBAEGA+YMBEMMSAAsgECASSQ0AAkAgASAQEPsaIh+nIgJB/wdxRQ0AIAMoAgwhDSADKAIIIQcCQCAIRQ0AIAJBAXENAgsCQCACQQJxRQ0AIAggDUcNAgsCQCACQQRxRQ0AIAhFDQACQCAIQX9qIhAgDU8NACAHIBBqLQAAIA8tAOACRg0BDAMLIBAgDUGE0oQBEMMSAAsCQCACQQhxRQ0AIAggDUYNAAJAIAggDU8NACAHIAhqLQAAIA8tAOACRg0BDAMLIAggDUGU0oQBEMMSAAsCQCACQRBxRQ0AIAcgDSAIELUURQ0CCwJAIAJBIHFFDQAgByANIAgQ/hRFDQILAkAgAkHAAHFFDQAgByANIAgQ5RJFDQILAkAgAkGAAXFFDQAgByANIAgQkRJFDQILAkAgAkGAAnFFDQAgByANIAgQ1gRB/wFxRQ0CCyACQYAEcUUNACAHIA0gCBCzA0H/AXFFDQELQQEhEQJAIB9CKoinIh5BAXRBAXIiAiAFTw0AIAQgAkECdGogCEEBajYCAAsgBSAJTQ0AIAogDEcNASAEIAlBAnRqIQcCQCAMQQJ0IgJFDQAgByAOIAL8CgAACyAfQgqIpyINRQ0AQQEhESALIA1oIgJNDQAgCEEBaiEOA0AgByACQQJ0aiAONgIAIA1BfiACd3EiDWgiAiAMSQ0ACwsgACAeNgIEIAAgETYCAAwBCyAKIAxB8PiDARDdIgALIAZBEGokAAvnEQETfyMAQSBrIgYkAAJAAkACQAJAIAFBIU8NACABIQcMAQsgAkF4aiEIA0ACQCAEDQAgACABIAIgA0EBELsCDAMLIAAgAUEDdiIJQThsaiEKIAAgCUEFdGohBwJAAkAgAUHAAEkNACAAIAcgCiAJELYLIQsMAQsCQAJAIAAoAgAiCSAHKAIAIgxGDQAgCSAMSSENDAELIAAoAgQgBygCBEkhDQsCQAJAIAkgCigCACIORg0AIAkgDkkhCQwBCyAAKAIEIAooAgRJIQkLIAAhCyANIAlHDQACQAJAIAwgDkYNACAMIA5JIQkMAQsgBygCBCAKKAIESSEJCyAKIAcgDSAJcxshCwsgBEF/aiEEIAYgCygCBCIPNgIEIAYgCygCACIONgIAIAsgAGtBA3YhEAJAAkAgBUUNAAJAIAUoAgAiCiAORw0AIAUoAgQgD0kNAQwCCyAKIA5PDQELIAMgAUkNBCACIAFBA3QiEWohDEEAIQcgACEJIBAhEgNAAkACQCAJIABBACASQX1qIgogCiASSxtBA3RqIhNJDQAgDiENDAELIAsoAgAhDUEAIRRBACEVA0ACQAJAIAkgFWoiCigCACIWIA5GDQAgFiAOSSEWDAELIApBBGooAgAgD0khFgsgAiAMIBRqIhdBeGogFhsgB0EDdGogCikCADcCACAHIBZqIQcCQAJAIApBCGoiGCgCACIWIA1GDQAgFiANSSEWDAELIApBDGooAgAgCygCBCIPSSEWCyACIBdBcGogFhsgB0EDdGogGCkCADcCACAHIBZqIQcCQAJAIApBEGoiGCgCACIWIA1GDQAgFiANSSEWDAELIApBFGooAgAgCygCBCIPSSEWCyACIBdBaGogFhsgB0EDdGogGCkCADcCACAHIBZqIQcCQAJAIApBGGoiFygCACIWIA1GDQAgFiANSSEWDAELIApBHGooAgAgCygCBCIPSSEWCyACIBRBYGoiFCAMaiAWGyAHQQN0aiAXKQIANwIAIBVBIGohFSAHIBZqIQcgCkEgaiATSQ0ACyAJIBVqIQkgDCAVayEMCwJAAkAgCSAAIBJBA3RqIhVJDQAgDSEODAELIAsoAgAhDgNAAkACQCAJKAIAIgogDkYNACAKIA5JIQoMAQsgCUEEaigCACALKAIEIg9JIQoLIAIgDEF4aiIMIAobIAdBA3RqIAkpAgA3AgAgByAKaiEHIAlBCGoiCSAVSQ0ACwsCQCASIAFGDQAgDEF4aiIMIAdBA3RqIAkpAgA3AgAgCUEIaiEJIAEhEgwBCwsCQCAHQQN0IgxFDQAgACACIAz8CgAACyABIAdrIQ4CQCABIAdGDQAgCCARaiEKIAAgDGohCSAOIQ0DQCAJIAopAgA3AgAgCkF4aiEKIAlBCGohCSANQX9qIg0NAAsLIAdFDQACQCABIAdPDQAgBkEANgIYIAZBATYCDCAGQZTWmwE2AgggBkIENwIQIAZBCGpBiNmbARCoHQALIAAgDGogDiACIAMgBCAGEMIBIAchASAHQSFJDQIMAQsgAyABSQ0DIAIgAUEDdCIYaiEMQQAhCSAAIQ0DQAJAIA0gAEEAIBBBfWoiCiAKIBBLG0EDdGoiD08NACALKAIAIQdBACEVQQAhDgNAAkACQCAHIA0gDmoiCigCACIURg0AIAcgFEkhFAwBCyALKAIEIApBBGooAgBJIRQLIAwgFWoiFkF4aiACIBQbIAlBA3RqIAopAgA3AgAgCSAUQQFzaiEJAkACQCAHIApBCGoiFygCACIURg0AIAcgFEkhFAwBCyALKAIEIApBDGooAgBJIRQLIBZBcGogAiAUGyAJQQN0aiAXKQIANwIAIAkgFEEBc2ohCQJAAkAgByAKQRBqIhcoAgAiFEYNACAHIBRJIRQMAQsgCygCBCAKQRRqKAIASSEUCyAWQWhqIAIgFBsgCUEDdGogFykCADcCACAJIBRBAXNqIQkCQAJAIAcgCkEYaiIWKAIAIhRGDQAgByAUSSEUDAELIAsoAgQgCkEcaigCAEkhFAsgFUFgaiIVIAxqIAIgFBsgCUEDdGogFikCADcCACAOQSBqIQ4gCSAUQQFzaiEJIApBIGogD0kNAAsgDSAOaiENIAwgDmshDAsCQCANIAAgEEEDdGoiDk8NACALKAIAIQcDQAJAAkAgByANKAIAIgpGDQAgByAKSSEKDAELIAsoAgQgDUEEaigCAEkhCgsgDEF4aiIMIAIgChsgCUEDdGogDSkCADcCACAJIApBAXNqIQkgDUEIaiINIA5JDQALCwJAIBAgAUYNACACIAlBA3RqIA0pAgA3AgAgDUEIaiENIAlBAWohCSAMQXhqIQwgASEQDAELCwJAIAlBA3QiDkUNACAAIAIgDvwKAAALIAEgCUYNAiAIIBhqIQogACAOaiENIAEgCWsiByEMA0AgDSAKKQIANwIAIApBeGohCiANQQhqIQ0gDEF/aiIMDQALAkAgASAJSQ0AIAAgDmohAEEAIQUgByEBIAdBIUkNAgwBCwsgCSABQZjZmwEQ0SIACyAHQQJJDQAgAyAHQRBqSQ0BIAdBAXYhFQJAAkACQCAHQQ9LDQAgB0EHTQ0BIAAgAhDKCCAAIBVBA3QiCmogAiAKahDKCEEEIRQMAgsgACACIAIgB0EDdGoiChDXHiAAIBVBA3QiCWogAiAJaiAKQcAAahDXHkEIIRQMAQsgAiAAKQIANwIAIAIgFUEDdCIKaiAAIApqKQIANwIAQQEhFAtBACEKIAZBADYCEEEAIBRrIQ8gACAUQQN0IglqIQsgAiAJaiEYIAYgFTYCFCAHIBVrIRYgBkEIakEIaiEXA0AgCiEOAkAgFCAWIBUgFyAKQQJ0aigCACIKGyIJTw0AIAIgCkEDdCIKaiEMIA8gCWohDSALIApqIQkgGCAKaiEKA0AgCiAJKQIANwIAIAwgChDyCyAJQQhqIQkgCkEIaiEKIA1Bf2oiDQ0ACwtBASEKIA5BAXFFDQALIAIgByAAEMYICyAGQSBqJAAPCwAL6RECDn8BfiMAQcAAayIGJAAgAkF0aiEHAkACQAJAA0ACQAJAAkACQCABQSFJDQAgBA0BIAAgASACIANBARDZAgwHCyABQQJJDQYgAyABQRBqSQ0EIAFBAXYhCCABQQ9LDQEgAiAIQQxsIglqIQogACAJaiEJAkAgAUEHTQ0AIAAgAhD3ByAJIAoQ9wdBBCELDAYLIAIgACkCADcCACACQQhqIABBCGooAgA2AgAgCkEIaiAJQQhqKAIANgIAIAogCSkCADcCAEEBIQsMBQsgACABQQN2IglB1ABsaiEKIAAgCUEwbGohDAJAAkAgAUHAAEkNACAAIAwgCiAJENMMIQkMAQsgACEJIAAoAgQiCCAMKAIEIg1JIAAoAgAiDiAMKAIAIgtJIA4gC0YbIg8gCCAKKAIEIhBJIA4gCigCACIISSAOIAhGG0cNACAKIAwgDyANIBBJIAsgCEkgCyAIRhtzGyEJCyAEQX9qIQQgCSkCACEUIAZBGGpBCGogCUEIaigCADYCACAGIBQ3AxggCSAAa0EMbiERAkAgBUUNACAFKAIEIAkoAgRPIAUoAgAiCiAJKAIAIgxPIAogDEYbDQILIAMgAUkNAyACIAFBDGwiEmohDEEAIQ4gACEKIBEhEwNAIABBACATQX1qIgsgCyATSxtBDGxqIRACQANAIAogEE8NASACIAxBdGogCkEEaigCACAJKAIESSAKKAIAIgsgCSgCACIISSALIAhGGyILGyAOQQxsaiIIIAopAgA3AgAgCEEIaiAKQQhqKAIANgIAIAIgDEFoaiAKQRBqKAIAIAkoAgRJIApBDGoiCCgCACINIAkoAgAiD0kgDSAPRhsiDRsgDiALaiIOQQxsaiILIAgpAgA3AgAgC0EIaiAKQRRqKAIANgIAIAIgDEFcaiAKQRxqKAIAIAkoAgRJIApBGGoiCygCACIIIAkoAgAiD0kgCCAPRhsiCBsgDiANaiIOQQxsaiINIAspAgA3AgAgDUEIaiAKQSBqKAIANgIAIAIgDEFQaiIMIApBKGooAgAgCSgCBEkgCkEkaiILKAIAIg0gCSgCACIPSSANIA9GGyINGyAOIAhqIg5BDGxqIgggCykCADcCACAIQQhqIApBLGooAgA2AgAgDiANaiEOIApBMGohCgwACwsgACATQQxsaiENA0ACQCAKIA1JDQACQCATIAFGDQAgDEF0aiIMIA5BDGxqIgsgCikCADcCACALQQhqIApBCGooAgA2AgAgCkEMaiEKIAEhEwwDCwJAIA5BDGwiDEUNACAAIAIgDPwKAAALIAEgDmshCCAHIBJqIQogDiELIAAgDGoiDSEMAkADQCABIAtGDQEgDCAKKQIANwIAIAxBCGogCkEIaigCADYCACALQQFqIQsgCkF0aiEKIAxBDGohDAwACwsgDkUNBAJAIAEgDk8NACAGQQA2AjggBkEBNgIsIAZBlNabATYCKCAGQgQ3AjAgBkEoakGI2ZsBEKgdAAsgDSAIIAIgAyAEIAZBGGoQwwEgDiEBDAULIAIgDEF0aiIMIApBBGooAgAgCSgCBEkgCigCACILIAkoAgAiCEkgCyAIRhsiCxsgDkEMbGoiCCAKKQIANwIAIAhBCGogCkEIaigCADYCACAOIAtqIQ4gCkEMaiEKDAALCwsgACACIAIgAUEMbGoiChDtHiAAIAhBDGwiCWogAiAJaiAKQeAAahDtHkEIIQsMAwsgAyABSQ0BIAIgAUEMbCITaiEMQQAhDiAAIQoDQCAAQQAgEUF9aiILIAsgEUsbQQxsaiEQAkADQCAKIBBPDQEgAiAMQXRqIAkoAgQgCkEEaigCAE8gCSgCACILIAooAgAiCE8gCyAIRhsiCxsgDkEMbGoiCCAKKQIANwIAIAhBCGogCkEIaigCADYCACACIAxBaGogCSgCBCAKQRBqKAIATyAJKAIAIgggCkEMaiINKAIAIg9PIAggD0YbIggbIA4gC2oiDkEMbGoiCyANKQIANwIAIAtBCGogCkEUaigCADYCACACIAxBXGogCSgCBCAKQRxqKAIATyAJKAIAIgsgCkEYaiINKAIAIg9PIAsgD0YbIgsbIA4gCGoiDkEMbGoiCCANKQIANwIAIAhBCGogCkEgaigCADYCACACIAxBUGoiDCAJKAIEIApBKGooAgBPIAkoAgAiCCAKQSRqIg0oAgAiD08gCCAPRhsiCBsgDiALaiIOQQxsaiILIA0pAgA3AgAgC0EIaiAKQSxqKAIANgIAIA4gCGohDiAKQTBqIQoMAAsLIAAgEUEMbGohDQNAAkAgCiANSQ0AAkAgESABRg0AIAIgDkEMbGoiCyAKKQIANwIAIAtBCGogCkEIaigCADYCACAKQQxqIQogDkEBaiEOIAxBdGohDCABIREMAwsCQCAOQQxsIglFDQAgACACIAn8CgAACyABIA5rIQwgByATaiEKIAAgCWohCQJAA0AgDEUNASAJIAopAgA3AgAgCUEIaiAKQQhqKAIANgIAIAxBf2ohDCAKQXRqIQogCUEMaiEJDAALCyAGQRBqIA4gACABQZjZmwEQ3xwgBigCFCEBIAYoAhAhAEEAIQUMAwsgAiAMQXRqIgwgCSgCBCAKQQRqKAIATyAJKAIAIgsgCigCACIITyALIAhGGyILGyAOQQxsaiIIIAopAgA3AgAgCEEIaiAKQQhqKAIANgIAIA4gC2ohDiAKQQxqIQoMAAsLCwsACyAGQoCAgIAgNwIoIAZBADYCMEEAIAtrIQ0gACALQQxsIgpqIQ8gAiAKaiEQIAYgCDYCNCABIAhrIRMCQANAIAZBCGogBkEoahDEGSAGKAIIQQFxRQ0BIA0gEyAIIAYoAgwiChsiCSALIAkgC0sbaiEMIA8gCkEMbCIOaiEJIBAgDmohCiACIA5qIQ4DQCAMRQ0BIAogCSkCADcCACAKQQhqIAlBCGooAgA2AgAgDiAKENIMIAxBf2ohDCAJQQxqIQkgCkEMaiEKDAALCwsgAiABIAAQ6gcLIAZBwABqJAAL6RECDn8BfiMAQcAAayIGJAAgAkF0aiEHAkACQAJAA0ACQAJAAkACQCABQSFJDQAgBA0BIAAgASACIANBARDaAgwHCyABQQJJDQYgAyABQRBqSQ0EIAFBAXYhCCABQQ9LDQEgAiAIQQxsIglqIQogACAJaiEJAkAgAUEHTQ0AIAAgAhD3ByAJIAoQ9wdBBCELDAYLIAIgACkCADcCACACQQhqIABBCGooAgA2AgAgCkEIaiAJQQhqKAIANgIAIAogCSkCADcCAEEBIQsMBQsgACABQQN2IglB1ABsaiEKIAAgCUEwbGohDAJAAkAgAUHAAEkNACAAIAwgCiAJENMMIQkMAQsgACEJIAAoAgQiCCAMKAIEIg1JIAAoAgAiDiAMKAIAIgtJIA4gC0YbIg8gCCAKKAIEIhBJIA4gCigCACIISSAOIAhGG0cNACAKIAwgDyANIBBJIAsgCEkgCyAIRhtzGyEJCyAEQX9qIQQgCSkCACEUIAZBGGpBCGogCUEIaigCADYCACAGIBQ3AxggCSAAa0EMbiERAkAgBUUNACAFKAIEIAkoAgRPIAUoAgAiCiAJKAIAIgxPIAogDEYbDQILIAMgAUkNAyACIAFBDGwiEmohDEEAIQ4gACEKIBEhEwNAIABBACATQX1qIgsgCyATSxtBDGxqIRACQANAIAogEE8NASACIAxBdGogCkEEaigCACAJKAIESSAKKAIAIgsgCSgCACIISSALIAhGGyILGyAOQQxsaiIIIAopAgA3AgAgCEEIaiAKQQhqKAIANgIAIAIgDEFoaiAKQRBqKAIAIAkoAgRJIApBDGoiCCgCACINIAkoAgAiD0kgDSAPRhsiDRsgDiALaiIOQQxsaiILIAgpAgA3AgAgC0EIaiAKQRRqKAIANgIAIAIgDEFcaiAKQRxqKAIAIAkoAgRJIApBGGoiCygCACIIIAkoAgAiD0kgCCAPRhsiCBsgDiANaiIOQQxsaiINIAspAgA3AgAgDUEIaiAKQSBqKAIANgIAIAIgDEFQaiIMIApBKGooAgAgCSgCBEkgCkEkaiILKAIAIg0gCSgCACIPSSANIA9GGyINGyAOIAhqIg5BDGxqIgggCykCADcCACAIQQhqIApBLGooAgA2AgAgDiANaiEOIApBMGohCgwACwsgACATQQxsaiENA0ACQCAKIA1JDQACQCATIAFGDQAgDEF0aiIMIA5BDGxqIgsgCikCADcCACALQQhqIApBCGooAgA2AgAgCkEMaiEKIAEhEwwDCwJAIA5BDGwiDEUNACAAIAIgDPwKAAALIAEgDmshCCAHIBJqIQogDiELIAAgDGoiDSEMAkADQCABIAtGDQEgDCAKKQIANwIAIAxBCGogCkEIaigCADYCACALQQFqIQsgCkF0aiEKIAxBDGohDAwACwsgDkUNBAJAIAEgDk8NACAGQQA2AjggBkEBNgIsIAZBlNabATYCKCAGQgQ3AjAgBkEoakGI2ZsBEKgdAAsgDSAIIAIgAyAEIAZBGGoQxAEgDiEBDAULIAIgDEF0aiIMIApBBGooAgAgCSgCBEkgCigCACILIAkoAgAiCEkgCyAIRhsiCxsgDkEMbGoiCCAKKQIANwIAIAhBCGogCkEIaigCADYCACAOIAtqIQ4gCkEMaiEKDAALCwsgACACIAIgAUEMbGoiChDtHiAAIAhBDGwiCWogAiAJaiAKQeAAahDtHkEIIQsMAwsgAyABSQ0BIAIgAUEMbCITaiEMQQAhDiAAIQoDQCAAQQAgEUF9aiILIAsgEUsbQQxsaiEQAkADQCAKIBBPDQEgAiAMQXRqIAkoAgQgCkEEaigCAE8gCSgCACILIAooAgAiCE8gCyAIRhsiCxsgDkEMbGoiCCAKKQIANwIAIAhBCGogCkEIaigCADYCACACIAxBaGogCSgCBCAKQRBqKAIATyAJKAIAIgggCkEMaiINKAIAIg9PIAggD0YbIggbIA4gC2oiDkEMbGoiCyANKQIANwIAIAtBCGogCkEUaigCADYCACACIAxBXGogCSgCBCAKQRxqKAIATyAJKAIAIgsgCkEYaiINKAIAIg9PIAsgD0YbIgsbIA4gCGoiDkEMbGoiCCANKQIANwIAIAhBCGogCkEgaigCADYCACACIAxBUGoiDCAJKAIEIApBKGooAgBPIAkoAgAiCCAKQSRqIg0oAgAiD08gCCAPRhsiCBsgDiALaiIOQQxsaiILIA0pAgA3AgAgC0EIaiAKQSxqKAIANgIAIA4gCGohDiAKQTBqIQoMAAsLIAAgEUEMbGohDQNAAkAgCiANSQ0AAkAgESABRg0AIAIgDkEMbGoiCyAKKQIANwIAIAtBCGogCkEIaigCADYCACAKQQxqIQogDkEBaiEOIAxBdGohDCABIREMAwsCQCAOQQxsIglFDQAgACACIAn8CgAACyABIA5rIQwgByATaiEKIAAgCWohCQJAA0AgDEUNASAJIAopAgA3AgAgCUEIaiAKQQhqKAIANgIAIAxBf2ohDCAKQXRqIQogCUEMaiEJDAALCyAGQRBqIA4gACABQZjZmwEQ3xwgBigCFCEBIAYoAhAhAEEAIQUMAwsgAiAMQXRqIgwgCSgCBCAKQQRqKAIATyAJKAIAIgsgCigCACIITyALIAhGGyILGyAOQQxsaiIIIAopAgA3AgAgCEEIaiAKQQhqKAIANgIAIA4gC2ohDiAKQQxqIQoMAAsLCwsACyAGQoCAgIAgNwIoIAZBADYCMEEAIAtrIQ0gACALQQxsIgpqIQ8gAiAKaiEQIAYgCDYCNCABIAhrIRMCQANAIAZBCGogBkEoahDEGSAGKAIIQQFxRQ0BIA0gEyAIIAYoAgwiChsiCSALIAkgC0sbaiEMIA8gCkEMbCIOaiEJIBAgDmohCiACIA5qIQ4DQCAMRQ0BIAogCSkCADcCACAKQQhqIAlBCGooAgA2AgAgDiAKENIMIAxBf2ohDCAJQQxqIQkgCkEMaiEKDAALCwsgAiABIAAQ6gcLIAZBwABqJAALlBQCCX8CfiMAQfAAayICJAAgAC0ADCIDIQQCQAJAIAEoAgAiBUFnag4LAQAAAAAAAAAAAAEAC0EAIQQgAEEAOgAMCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQXRqIgZBByAGQSZJGw4mHQABHQIDBAUGBwgJCgsdHQwNDg8QHRESEx0dFBUWFxgZGhsdHB0dCyABKAIMIgZFDRwgASgCCCEFIAZBBHQhBgNAAkAgBSgCAEECRg0AIAAgBUEMaigCABDFAQsgBUEQaiEFIAZBcGoiBg0ADB0LCyABKAIMIgZFDRsgASgCCCEFIAZBDGwhBgNAAkACQCAFKAIAIgQNAAJAAkACQAJAIAVBBGooAgAiBygCAEF7aiIEQQQgBEEGSRsOBgUAAQUFAgULIAdBKGohBCAHKAIIQQNHDQIgACAHKAIMEMUBDAILIAdBKGohBAwBCyAHKAIIQQNHDQIgB0EMaiEECyAEKAIAIQQLIAAgBBDFAQsgBUEMaiEFIAZBdGoiBg0ADBwLCyAAIAEoAgQQxQEMGgsgACABKAIMEMUBDBkLIAAgASgCBBDFASAAIAEoAggQxQEMGAsCQAJAIAVBC0cNACAAIAFBBGoQ4wsMAQsgASAAELoKCyAAIAEoAjgQxQEMFwsgACABKAIoEMUBIAEoAghBAkkNFiAAIAEoAgwQxQEMFgsgASgCCEEBRw0VIAAgASgCDBDFAQwVCyAAIAEoAgQQxQEgACABKAIIEMUBIAAgASgCDBDFAQwUCwJAIAEtABhBBUcNACAAIAEoAhAQxQELIAEoAgwiBUUNEyAFQQR0IQYgASgCCEEMaiEFA0AgACAFKAIAEMUBIAVBEGohBSAGQXBqIgYNAAwUCwsgACABKAIQEMUBIAEoAgRBgICAgHhGDRIgASgCDCIFRQ0SIAVBBHQhBiABKAIIQQxqIQUDQCAAIAUoAgAQxQEgBUEQaiEFIAZBcGoiBg0ADBMLCyABKAIMIgZFDREgAEEBOgAMIAEoAggiBSAGQX9qIghBAnRqIgkoAgAhBwJAIAhFDQAgBkECdEF8aiEGA0AgACAFKAIAEMUBIAVBBGohBSAGQXxqIgYNAAsLIAAgBDoADCAAIAcQxQEgCSAHNgIADBELIAEoAgwiBkUNECABKAIIIQUgBkECdCEGA0AgACAFKAIAEMUBIAVBBGohBSAGQXxqIgYNAAwRCwsgACABKAIEEMUBIAEoAggiBUEIaigCACIGRQ0PIAVBBGooAgAhBSAGQQJ0IQYDQCAAIAUoAgAQxQEgBUEEaiEFIAZBfGoiBg0ADBALCwJAIAEoAgwiBkUNACABKAIIIQUgBkEobCEGA0AgBSAAEPAJIAVBKGohBSAGQVhqIgYNAAsLAkAgASgCECIFKAIAQYCAgIB4Rw0AIAAgBSgCBBDFAQwPCyAFKAIIIgZFDQ4gBSgCBCEFIAZBMGwhBgNAIAUgABCQAyAFQTBqIQUgBkFQaiIGDQAMDwsLAkAgASgCICIEQQhqKAIAIgZFDQAgBEEEaigCACEFIAZBDGwhBgNAIAAgBSgCABDFASAFQQxqIQUgBkF0aiIGDQALCwJAIARBFGooAgAiBkUNACAEQRBqKAIAIQUgBkHYAGwhBgNAIAUgABD8ByAFQdgAaiEFIAZBqH9qIgYNAAsLIAQoAjAiBUUNDSAAIAUQxQEMDQsgASgCDCIFRQ0MIAAgBRDFAQwMCyAAIAEoAgQQxQEMCwsgACABKAIEEMUBDAoLIAEtADRBAkcNCSABQQhqIQUDQCAFKAIYIgUtACxBAkYNAAwKCwsgASgCBCAAELwCDAgLIAEoAgwhBiABKAIIIQUgAiAANgJkIAZFDQcgBkEobCEGA0AgAkHkAGogBRCmByAFQShqIQUgBkFYaiIGDQAMCAsLIAAgASgCBBDFAQwGCyAAIAEoAgQQxQEMBQsgACABKAIEEMUBDAQLIAAgASgCBBDFAQwDCyAAIAEoAgQQxQEMAgsgACABKAIEEMUBDAELAkAgASgCBCIFKAIAQQNHDQAgBUEEaiAAEOQXDAELIAUgABDjHgsgACADOgAMAkACQAJAAkAgASgCAEEXRw0AIAEtABhBA0cNACAAQQE6AA0gASkDACELIAFCMTcDACABQQhqIgUpAwAhDCAFQQA2AgAgAkEIakEIaiIFIAw3AwAgAkEIakEQaiIGIAFBEGopAwA3AwAgAkEIakEYaiIEIAFBGGopAwA3AwAgAkEIakEgaiIHIAFBIGopAwA3AwAgAkEIakEoaiIIIAFBKGopAwA3AwAgAkEIakEwaiIJIAFBMGopAwA3AwAgAkEIakE4aiIKIAFBOGopAwA3AwAgAiALNwMIIAJBzABqIAAoAgQgACgCCBD+DEEALQDg9p0BGkHAABCEASIARQ0DIAAgAikDCDcDACAAQThqIAopAwA3AwAgAEEwaiAJKQMANwMAIABBKGogCCkDADcDACAAQSBqIAcpAwA3AwAgAEEYaiAEKQMANwMAIABBEGogBikDADcDACAAQQhqIAUpAwA3AwAgAigCVCEFIAIoAlAhBiACKAJMIQQCQAJAAkAgA0EBcQ0AQQEhByACQeQAaiAFQQFqQQRBEBCjDiACKAJoIQggAigCZEEBRg0EIAIoAmwiAyAANgIMIANBADYCACACQQA2AmAgAiADNgJcIAIgCDYCWAJAIAVFDQAgA0EcaiEAIAVBAnQiBUF8akECdkECaiEHIAYhAwNAIAAgAygCADYCACAAQXRqQQA2AgAgAEEQaiEAIANBBGohAyAFQXxqIgUNAAsLIAIgBzYCYCAEIAYQ8SJBAC0A4PadARpBwAAQhAEiAA0BDAYLQQEhByACQeQAaiAFQQFqQQRBBBCjDiACKAJoIQggAigCZEEBRg0EIAIoAmwiAyAANgIAIAJBADYCbCACIAM2AmggAiAINgJkAkAgBUUNACADQQRqIQAgBUECdCIFQXxqQQJ2QQJqIQcgBiEDA0AgACADKAIANgIAIABBBGohACADQQRqIQMgBUF8aiIFDQALCyACIAc2AmwgBCAGEPEiIAIoAmQhAyACKQJoIQtBGSEFDAELIABBDTYCACAAIAIpAlg3AgQgAEIANwMQIABBDGogAkHgAGooAgA2AgBBAC0A4PadARpBwAAQhAEiA0UNBCADQgA3AxAgA0EDNgIIIANBGzYCACADQRhqQgA3AwAgA0EgakIANwMAIAOtQiCGQgKEIQtBFCEFCyABEMkBIAEgADYCKCABQgA3AyAgAUIANwMQIAEgCzcDCCABIAM2AgQgASAFNgIACyACQfAAaiQADwsgCCACKAJsQYCdmwEQ2CAACyAIIAIoAmxBgJ2bARDYIAALAAvREwMJfwN+AXwjAEGAAWsiBCQAAkACQAJAAkACQAJAIAJFDQAgAyADQX9qcUUNASADQQpHDQJBACEFAkAgASACELscukRxo3kJT5MKQKObIhBEAAAAAAAA8L9kRQ0AIBBEAAAAAAAA8EFjRQ0AIBCrIQULIARBDGogBUHA74IBEPkaIARBGGogASACEJUUIAQoAiAiBkHAAEkNAyAEQfAAakGQzgAQghMgBhDkGSEDQQEhBwNAAkAgBCgCeCIFIANJDQAgBEHUAGohCANAAkAgBCgCHCAGIAQoAnQiAyAFEOsgDQAgBCgCcCADEN8iDAcLIARByABqIARBGGogBEHwAGoQtgUgBEEoakEIaiIFIARByABqQQhqIgEoAgA2AgAgBEE4akEIaiIJIAhBCGooAgA2AgAgBCAEKQJINwMoIAQgCCkCADcDOCAEKAIYIAQoAhwQ3yIgBEEYakEIaiAFKAIANgIAIAQgBCkDKDcDGEEAIQoDQAJAAkAgCiAHRg0AIARByABqIARBOGpBkM4AENQIIAkgASgCADYCACAEIAQpAkg3AzggBCgCVCEGQQQhBQNAIAVFDQIgBEEMaiAGIAZBCm4iA0EKbGtBgPCCARC8HCAFQX9qIQUgAyEGDAALCyAEKAI4IAQoAjwQ3yIgBCgCeCEFIAQoAiAhBgwCCyAKQQFqIQoMAAsLCyAEQcgAaiAEQfAAaiAEQfAAahD9ECAEKAJwIAQoAnQQ3yIgBEHwAGpBCGogBEHIAGpBCGooAgA2AgAgBCAEKQJINwNwIAdBAXQhBwwACwtBASEHQQFBARC4HyIDQTA6AABBASEKDAQLAkBBICADZ0EfcyIFbiIKIAVsQf8BcUEgRg0AIARByABqIAEgAhC7HCINIAWtIg6AIg8gDSAPIA5+fUIAUq18Ig2nQX8gDUKAgICAEFQbQZDvggEQ+RogASACQQJ0aiEJQX8gBXRBf3MhB0EAIQZBACEDA0ACQAJAIAEgCUYNACABKAIAIAZ0IANyIQMgBkEgaiEGA0AgBkH/AXEiCiAFSQ0CIARByABqIAMgB3FBsO+CARC8HAJAAkAgCkEhTw0AIAMgBXYhAwwBCyABKAIAIAUgBmt2IQMLIAYgBWshBgwACwsCQCAGQf8BcUUNACAEQcgAaiADQaDvggEQvBwLIAQoAlBBf2ohBSAEKAJIIQcgBCgCTCEDAkACQANAIAVBf0YNASADIAVqIgZFDQEgBi0AAA0CIAVBf2ohBQwACwsgBUEBaiEKDAYLIAVBAWohCgwFCyABQQRqIQEMAAsLIARByABqIAEgAhC7HCINIAWtIg6AIg8gDSAPIA5+fUIAUq18Ig2nQX8gDUKAgICAEFQbQcDuggEQ+RogBCABIAIgAkF/aiILQdDuggEQlB5BfyAFdEF/cyEHIAQoAgAiCSAEKAIEQQJ0aiEIA0ACQAJAIAkgCEYNACAJKAIAIQNBACEGA0AgBkH/AXEgCk8NAiAEQcgAaiADIAdxQYDvggEQvBwgAyAFdiEDIAZBAWohBgwACwsgASACIAtB4O6CARC3HigCACEGAkADQCAGRQ0BIARByABqIAYgB3FB8O6CARC8HCAGIAV2IQYMAAsLIAQoAlAhCiAEKAJMIQMgBCgCSCEHDAQLIAlBBGohCQwACwtBACEFAkAgASACELscuiADuBDuJKObIhBEAAAAAAAA8L9kRQ0AIBBEAAAAAAAA8EFjRQ0AIBCrIQULIARBDGogBUHA74IBEPkaIARBGGogASACEJUUIANBA3QiBUGcgIMBaigCACEIIAVBmICDAWooAgAhCQJAIAQoAiAiBkHAAEkNACAEQfAAaiAJEIITIAYQ5BkhCkEBIQEDQAJAIAQoAngiBSAKSQ0AIARB1ABqIQwDQAJAIAQoAhwgBiAEKAJ0IgogBRDrIA0AIAQoAnAgChDfIgwECyAEQcgAaiAEQRhqIARB8ABqELYFIARBKGpBCGoiBSAEQcgAakEIaiICKAIANgIAIARBOGpBCGoiCyAMQQhqKAIANgIAIAQgBCkCSDcDKCAEIAwpAgA3AzggBCgCGCAEKAIcEN8iIARBGGpBCGogBSgCADYCACAEIAQpAyg3AxhBACEHA0ACQAJAIAcgAUYNACAEQcgAaiAEQThqIAkQ1AggCyACKAIANgIAIAQgBCkCSDcDOCAEKAJUIQYgCCEFA0AgBUUNAiAEQQxqIAYgBiADbiIKIANsa0GA8IIBELwcIAVBf2ohBSAKIQYMAAsLIAQoAjggBCgCPBDfIiAEKAJ4IQUgBCgCICEGDAILIAdBAWohBwwACwsLIARByABqIARB8ABqIARB8ABqEP0QIAQoAnAgBCgCdBDfIiAEQfAAakEIaiAEQcgAakEIaigCADYCACAEIAQpAkg3A3AgAUEBdCEBDAALCwJAA0ACQCAEKAIgIgVBAUsNACAEKAIcIAVBAEHQ74IBELceKAIAIQUDQCAFRQ0DIARBDGogBSAFIANuIgYgA2xrQeDvggEQvBwgBiEFDAALCyAEQfAAakEIaiAEQRhqQQhqKAIANgIAIAQgBCkCGDcDcCAEQcgAaiAEQfAAaiAJENQIIARB4ABqQQhqIARByABqQQhqKAIANgIAIAQgBCkCSDcDYCAEKAJUIQYgCCEFAkADQCAFRQ0BIARBDGogBiAGIANuIgogA2xrQfDvggEQvBwgBUF/aiEFIAohBgwACwsgBEEYakEIaiAEQeAAakEIaigCADYCACAEIAQpA2A3AxgMAAsLIAQoAhQhCiAEKAIQIQMgBCgCDCEHIAQoAhggBCgCHBDfIgwBCwJAA0ACQCAEKAIgIgVBAUsNACAEKAIcIAVBAEHQ74IBELceKAIAIQUDQCAFRQ0DIARBDGogBSAFQQpuIgZBCmxrQeDvggEQvBwgBiEFDAALCyAEQfAAakEIaiAEQRhqQQhqKAIANgIAIAQgBCkCGDcDcCAEQcgAaiAEQfAAakGQzgAQ1AggBEHgAGpBCGogBEHIAGpBCGooAgA2AgAgBCAEKQJINwNgIAQoAlQhBkEEIQUCQANAIAVFDQEgBEEMaiAGIAZBCm4iA0EKbGtB8O+CARC8HCAFQX9qIQUgAyEGDAALCyAEQRhqQQhqIARB4ABqQQhqKAIANgIAIAQgBCkDYDcDGAwACwsgBCgCFCEKIAQoAhAhAyAEKAIMIQcgBCgCGCAEKAIcEN8iC0EAIQUDQCAKIAVGDQEgAyAFaiIGIAYtAAAiBkEwciAGQdcAaiAGQQpJGzoAACAFQQFqIQUMAAsLIAAgCjYCCCAAIAM2AgQgACAHNgIAIARBgAFqJAALsBUCBn8CfiMAQZACayICJAACQAJAAkACQAJAAkACQAJAAkADQAJAAkACQAJAAkACQAJAIAAoAgAOEwAQEAECAwQFBggJCgEBCwwNDg8ACyABIABBBGoQ1AcMDwsgAS0AOSEDIAAoAgQhBCABQQE6ADkgBCABEG0gASADOgA5IAAoAgghAAwFCyAAKAIMIgBFDQ0gAS0AOSEDIAFBAToAOSAAIAEQbSABIAM6ADkMDQsgAS0AOSEDIAFBAjoAOSABIABBEGoQmxEgASADOgA5IAAoAighAAwDCyABLQA5IQMgAUECOgA5AkAgAC0AJEECRg0AIAEgAEEQahCbEQsgASADOgA5DAsLIAEtADkhAyABQQI6ADkCQCAALQAkQQJGDQAgASAAQRBqEJsRCyABIAM6ADkMCgsgAS0AOSEDIAFBAToAOSAAKAIEIAEQbSABIAM6ADkgACgCCCABEMcBIAAoAhQiAA0ADAkLCyABLQA5IQMgAUEBOgA5IAAoAhAgARBtIAEgAzoAOSABKAIwEJcTIQMgAkGIAWpBNGogAUE0aigCADYCACACQQA6ALABIAJBiAFqQQhqQQApA5j/nAEiCDcDACACQYgBakEQakEAKQOQ/5wBIgk3AwAgAkGIAWpBGGogCDcDACACIAE2AqgBIAIgAzYCrAEgAkEBOgDBASACIAEpAiw3ArQBIAIgASgBOjYBwgEgAiABLQA4OgDAASACIAk3A4gBAkAgACgCDCIBRQ0AIAAoAggiAyABQRhsaiEFIAJB6AFqQRBqIQQgAkH0AWohBiACQegBakEIaiEHA0AgAkEAOwCNAiAHIAg3AwAgBCAJNwIAIARBCGogCDcCACACIAItAMABOgCMAiACIAk3A+gBIAIgAkGIAWo2AogCIAJB6AFqIAMQqgcgAkHoAWoQ1hcgBBDWFwJAIAMoAggiAEUNACADKAIEIQEgAEEwbCEAA0AgASACQYgBahDHASABQTBqIQEgAEFQaiIADQALCwJAIAMoAhQiAUUNACACQQM2AvABIAItAMEBIQAgAkEBOgDBASABIAJBiAFqEG0gAiAAOgDBASACKALwASIBQQFLDQAgByACQegBahDOGiAHIAIpA+gBEJ4aIAFFDQAgAigC9AEiASABKAIAIgFBf2o2AgAgAUEBRw0AIAYQ4BALIANBGGoiAyAFRw0ACwsCQCACKAKMASIBRQ0AIAIoAogBIAIoApQBENoMIAEgAUEEdEEXakFwcSIAakEJaiIBRQ0AIAIoAogBIABrIAFBCBC9EwsgAkGYAWoQ1hcMBwsgAS0AOSEDIAFBAToAOSAAKAIEIAEQbSABIAM6ADkMBgsgASAAKAIEIgBByABqENQHIABB4ABqIQQCQCAAKAIAIgdBCEYNACABKAIwEJcTIQMgAkGIAWpBNGogAUE0aigCADYCACACQQA6AMEBIAJBiAFqQQhqQQApA5j/nAEiCDcDACACQZgBakEAKQOQ/5wBIgk3AwAgAkGgAWogCDcDACACIAE2AqgBIAIgAzYCrAEgAkEBOgCwASACIAEpAiw3ArQBIAIgASgBOjYBwgEgAiABLQA4OgDAASACIAk3A4gBAkAgB0EHRg0AIAAgAkGIAWoQmgQgAigCrAEhAwsgAEEoaiEHIAJBAToAwQECQCAAKAI8DQAgA0UNACAAQQAgAxCNBjYCPAsgAkEAOwCNAiACQfABakEAKQOY/5wBIgg3AwAgAkGAAmogCDcDACACIAItAMABOgCMAiACQQApA5D/nAEiCDcD6AEgAiAINwP4ASACIAJBiAFqNgKIAiACQegBaiAHEKoHIAJB6AFqENYXIAJB+AFqENYXAkAgACgCMCIDRQ0AIAAoAiwhACADQTBsIQMDQCAAIAJBiAFqEMcBIABBMGohACADQVBqIgMNAAsLAkAgAigCjAEiAEUNACACKAKIASACKAKUARDaDCAAIABBBHRBF2pBcHEiA2pBCWoiAEUNACACKAKIASADayAAQQgQvRMLIAJBmAFqENYXCyAEKAIAQYCAgIB4Rg0FIAQgARDTBwwFCyABKAIwEJcTIQMgAkGIAWpBNGogAUE0aigCADYCACACQZABakEAKQOY/5wBIgg3AwAgAkGYAWpBACkDkP+cASIJNwMAIAJBoAFqIAg3AwAgAiABNgKoASACIAM2AqwBIAJBADoAsAEgAiABKQIsNwK0ASACIAk3A4gBIAIgASgBOjYBwgEgAiABLQA4OgDAASACQQA6AMEBAkAgACgCBCIBQQJGDQACQCABQQFxRQ0AIAJBAToAwQEgACgCCCACQYgBahBtDAELIAJBiAFqIAAoAggQ2woLIAJBAToAwQECQCAAKAIYIgFFDQAgASACQYgBahBtCyACQQE6AMEBAkAgACgCHCIBRQ0AIAEgAkGIAWoQbSACQQE6AMEBCyACIAAoAgw2AugBIAJBiAFqIAJB6AFqEL8HAkAgAigCjAEiAUUNACACKAKIASACKAKUARDaDCABIAFBBHRBF2pBcHEiAGpBCWoiAUUNACACKAKIASAAayABQQgQvRMLIAJBmAFqENYXDAQLIAEoAjAQlxMhAyACQYgBakE0aiABQTRqKAIANgIAIAJBADoAsAEgAkGQAWpBACkDmP+cASIINwMAIAJBmAFqQQApA5D/nAEiCTcDACACQaABaiAINwMAIAIgATYCqAEgAiADNgKsASACQQE6AMEBIAIgASkCLDcCtAEgAiABKAE6NgHCASACIAEtADg6AMABIAIgCTcDiAECQAJAAkACQCAAKAIEDgMAAQIACyACQYgBaiAAKAIIENsKDAILIAJBiAFqIAAoAggQzAsMAQsgACgCCCACQYgBahCaBAsgACgCDCEBIAItAMEBIQMgAkEBOgDBASABIAJBiAFqEG0gAiADOgDBASACIAAoAhA2AugBIAJBiAFqIAJB6AFqEL8HAkAgAigCjAEiAUUNACACKAKIASACKAKUARDaDCABIAFBBHRBF2pBcHEiAGpBCWoiAUUNACACKAKIASAAayABQQgQvRMLIAJBmAFqENYXDAMLIAEoAjAQlxMhAyACQYgBakE0aiABQTRqKAIANgIAIAJBADoAsAEgAkGQAWpBACkDmP+cASIINwMAIAJBmAFqQQApA5D/nAEiCTcDACACQaABaiAINwMAIAIgATYCqAEgAiADNgKsASACQQE6AMEBIAIgASkCLDcCtAEgAiABKAE6NgHCASAC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QSBqIAJBCGpBIGopAwA3AwAgA0EYaiACQQhqQRhqKQMANwMAIANBEGogAkEIakEQaikDADcDACADQQhqIAJBCGpBCGopAwA3AwAgAyACKQMINwMAIApBWGohCiADQShqIQMgBEEoaiEEIAtBf2oiCw0ACwsCQAJAIAEoAhAiBA0AQQAhAwwBC0EALQDg9p0BGkEMEIQBIgNFDQNBAC0A4PadARogBCgCCCELIAQoAgQhBUHgABCEASIKRQ0DIAogBCgCABBlIAMgCzYCCCADIAU2AgQgAyAKNgIACyAAIAM2AhAgACAHNgIMIAAgCTYCCCAAIAg2AgQgAEEKNgIAIAAgAS8BHDsBHCAAIAEpAhQ3AhQLIAJBMGokAA8LIAggAigCEEGIpJoBENggCwALIAggAigCEEGIpJoBENggAAsgCCACKAIQQYikmgEQ2CAACyAIIAIoAhBBiKSaARDYIAALuBICC38BfiMAQYADayICJAACQAJAAkACQAJAAkACQCAAKAIADggABQQDBgYCAQALAkAgACgCICIDQQhqKAIAIgBFDQAgA0EEaigCACEEIABBDGwhBQNAAkACQCAEKAIAIgAoAgBBGkcNACACQcAAaiABKAIAIAEoAgQgAEEIaiIGEIINIAIoAkBBMkYNASAAENEBIABBOGogAkHAAGpBOGopAwA3AwAgAEEwaiACQcAAakEwaikDADcDACAAQShqIAJBwABqQShqKQMANwMAIABBIGogAkHAAGpBIGopAwA3AwAgAEEYaiACQcAAakEYaikDADcDACAAQRBqIAJBwABqQRBqKQMANwMAIAYgAkHAAGpBCGopAwA3AwAgACACKQNANwMADAELIAAgARBGCyAEQQxqIQQgBUF0aiIFDQALCwJAIANBFGooAgAiBEUNACADQRBqKAIAIQAgBEHYAGwhBANAIAAgARBpIABB2ABqIQAgBEGof2oiBA0ACwsgAygCMCIARQ0FAkAgACgCAEEaRw0AIAIgASgCACABKAIEIABBCGoiBBCCDSACKAIAQTJGDQYgABDRASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACAEIAJBCGopAwA3AwAgACACKQMANwMADAYLIAAgARBGDAULIAAoAgQiAC0ARSIEQQNGDQQCQCAEQQJGDQACQCAAKAJAIgAtACVBAkYNACAAQSBqIAEQrhEMBgsgAEEIaigCACIERQ0FIABBBGooAgAhACAEQThsIQQDQAJAAkAgACgCAEEJRw0AIABBCGogARBwDAELIAAgARCuAgsgAEE4aiEAIARBSGoiBA0ADAYLCyAAQShqKAIAIgRFDQQgAEEkaigCACEAIARBOGwhBANAAkACQCAAKAIAQQlHDQAgAEEIaiABEHAMAQsgACABEK4CCyAAQThqIQAgBEFIaiIEDQAMBQsLIAAoAgQiAEEoaigCACIERQ0DIARBMGwhBSAAQSRqKAIAQShqIQQDQAJAIAQoAgAiAEUNAAJAIAAoAgBBGkcNACACQcACaiABKAIAIAEoAgQgAEEIaiIGEIINIAIoAsACQTJGDQEgABDRASAAQThqIAJBwAJqQThqKQMANwMAIABBMGogAkHAAmpBMGopAwA3AwAgAEEoaiACQcACakEoaikDADcDACAAQSBqIAJBwAJqQSBqKQMANwMAIABBGGogAkHAAmpBGGopAwA3AwAgAEEQaiACQcACakEQaikDADcDACAGIAJBwAJqQQhqKQMANwMAIAAgAikDwAI3AwAMAQsgACABEEYLIARBMGohBCAFQVBqIgUNAAwECwsgACgCBCIAQQhqKAIAIgRFDQIgAEEEaigCACIAIARBOGxqIQUDQCAAIAEQqgMCQCAAQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkGAAmogASgCACABKAIEIARBCGoiBhCCDSACKAKAAkEyRg0BIAQQ0QEgBEE4aiACQYACakE4aikDADcDACAEQTBqIAJBgAJqQTBqKQMANwMAIARBKGogAkGAAmpBKGopAwA3AwAgBEEgaiACQYACakEgaikDADcDACAEQRhqIAJBgAJqQRhqKQMANwMAIARBEGogAkGAAmpBEGopAwA3AwAgBiACQYACakEIaikDADcDACAEIAIpA4ACNwMADAELIAQgARBGCyAAQThqIgAgBUcNAAwDCwsgACgCBCIAQQhqKAIAIgRFDQEgAEEEaigCACIAIARBOGxqIQUDQCAAIAEQqgMCQCAAQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkHAAWogASgCACABKAIEIARBCGoiBhCCDSACKALAAUEyRg0BIAQQ0QEgBEE4aiACQcABakE4aikDADcDACAEQTBqIAJBwAFqQTBqKQMANwMAIARBKGogAkHAAWpBKGopAwA3AwAgBEEgaiACQcABakEgaikDADcDACAEQRhqIAJBwAFqQRhqKQMANwMAIARBEGogAkHAAWpBEGopAwA3AwAgBiACQcABakEIaikDADcDACAEIAIpA8ABNwMADAELIAQgARBGCyAAQThqIgAgBUcNAAwCCwsCQCAAKAIgIgdBCGooAgAiAEUNACAHQQRqKAIAIgggAEEGdGohCQNAAkAgCEE4aigCACIARQ0AIAhBNGooAgAhBCAAQQxsIQUDQAJAAkAgBCgCACIAKAIAQRpHDQAgASgCAEEBRw0BIAEoAgQiAyAAKAIYRw0BAkACQCAAKQMIIg1CA4NCAFINACANpyIGIAYoAgAiBkEBajYCACAGQX9MDQELQQAtAOD2nQEaIAAoAhQhCiAAKAIQIQsgAC0AHCEMQcAAEIQBIgZFDQAgBiAMOgAcIAYgAzYCGCAGQgA3AxAgBiANNwMIIAZBGjYCACAAENEBIAAgBjYCKCAAIAo2AiQgACALNgIgIABCADcDGCAAQpG+ATcDECAAQQA2AgggAEEUNgIADAILAAsgACABEEYLIARBDGohBCAFQXRqIgUNAAsLIAggARCbBCAIQcAAaiIAIQggACAJRw0ACwsCQCAHQRRqKAIAIgBFDQAgB0EQaigCACEEIABBDGwhBQNAAkACQCAEKAIAIgAoAgBBGkcNACACQYABaiABKAIAIAEoAgQgAEEIaiIGEIINIAIoAoABQTJGDQEgABDRASAAQThqIAJBgAFqQThqKQMANwMAIABBMGogAkGAAWpBMGopAwA3AwAgAEEoaiACQYABakEoaikDADcDACAAQSBqIAJBgAFqQSBqKQMANwMAIABBGGogAkGAAWpBGGopAwA3AwAgAEEQaiACQYABakEQaikDADcDACAGIAJBgAFqQQhqKQMANwMAIAAgAikDgAE3AwAMAQsgACABEEYLIARBDGohBCAFQXRqIgUNAAsLIAcoAhhBgICAgHhGDQAgB0EgaigCACIERQ0AIAdBHGooAgAhACAEQTBsIQQDQCAAIAEQcCAAQTBqIQAgBEFQ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IAsgE0F4anFqQQhqIA86AAAgCiATQQJ0a0F8aiAENgIAIAAgACgCFCADQQFxazYCFCAAIAAoAhhBAWo2AhggACgCCCIDIAAoAgBHDQMgACgCGCAAKAIUaiIEQebMmTMgBEHmzJkzSRsgA2siBEEBTQ0CIAAgAyAEQQRBFBD0CyEEIAAoAgghAyAEQYGAgIB4Rw0CDAMLIAMgDEGspZoBEMMSAAsgAyAEQYSnmgEQwxIACyAAIANBAUEEQRQQuAsgACgCCCEDCwJAIAMgACgCAEcNACAAEIYZCyAAIANBAWo2AgggACgCBCADQRRsaiIDIAk2AhAgAyAFNgIMIAMgBjYCCCADIAc2AgQgAyAINgIADAELQQAtAOD2nQEaIAEoAgghCUHAABCEASIERQ0BIARBADYCCCAEQjE3AwAgCSgCACEDIAkgBDYCACACQQhqIgQgA0EIaikDADcDACACQRBqIgkgA0EQaikDADcDACACQRhqIgggA0EYaikDADcDACACQSBqIgcgA0EgaikDADcDACACQShqIgogA0EoaikDADcDACACQTBqIgsgA0EwaikDADcDACACQThqIgUgA0E4aikDADcDACACIAMpAwA3AwAgARDRASABQThqIAUpAwA3AwAgAUEwaiALKQMANwMAIAFBKGogCikDADcDACABQSBqIAcpAwA3AwAgAUEYaiAIKQMANwMAIAFBEGogCSkDADcDACABQQhqIAQpAwA3AwAgASACKQMANwMAIANBwABBCBC9EwwACwsAC7gSAQx/IwBBEGsiAiQAAkAgAC0AbEECRw0AIABBwABqIQMDQCADKAIYIgMtACxBAkYNAAsLAkAgACgChAEiA0UNACAAKAKAASIEIANB2ABsaiEFA0ACQAJAIAQoAgAiA0EFRw0AIAEtACQhBiABQQI6ACQgAS0AJSEDIAEgBCgCBCIHEM4BIAcgARBTIAEgAzoAJSABQQI6ACQgASAHEJ0BIAEgAzoAJSABIAY6ACQMAQsgA0EERg0AAkACQAJAAkACQCADDgQFAAECBQsgBCgCBEEBRw0EIAQoAgghAyABLQAkIgcNAyADKAIAQXRqIgZBByAGQSZJG0F7aiIGQR9LDQJBASAGdEGuooCAeHENAyAGDQIgAy0AEQ0CDAMLAkAgBCgCBCIILQBsQQJHDQAgCEHAAGoh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IQYgAEIBNwMAIAJBKGogAEEoaikDADcDACACQSBqIABBIGopAwA3AwAgAkEYaiAAQRhqKQMANwMAIAJBEGogAEEQaikDADcDACACQQhqIABBCGoiASkDADcDACABQQA2AgAgAiAGNwMAIAIQ6QMMEgsgACgCDCIARQ0RIAEgABDdCAwRCyAAQQA6ACQgACgCKCIAEMALDQ8gACgCAEEBRg0QIAApAwAhBiAAQgE3AwAgAkEoaiAAQShqKQMANwMAIAJBIGogAEEgaikDADcDACACQRhqIABBGGopAwA3AwAgAkEQaiAAQRBqKQMANwMAIAJBCGogAEEIaiIBKQMANwMAIAFBADYCACACIAY3AwAgAhDpAwwQCyAALQAkQQJGDQ8gAEEAOgAkDA8LIAAtACRBAkYNDiAAQQA6ACQMDgsgASAAKAIEEN0IIAAoAggiAxDACw0KIAMoAgBBAUYNCyADKQMAIQYgA0IBNwMAIAJBKGogA0EoaikDADcDACACQSBqIANBIGopAwA3AwAgAkEYaiADQRhqKQMANwMAIAJBEGogA0EQaikDADcDACACQQhqIANBCGoiAykDADcDACADQQA2AgAgAiAGNwMAIAIQ6QMMCwsgASAAKAIQEN0IIAAoAgwiA0UNDCAAKAIIIQAgA0EYbCEDA0ACQCAAQRRqKAIAIgRFDQAgASAEEN0ICyAAIAEQlQYgAEEYaiEAIANBaGoiAw0ADA0LCyABIAAoAgQQ3QgMCwsgASAAKAIEIgBByABqEJQGIABB4ABqIQMCQCAAKAIAIgRBCEYNACAAQShqIQUCQCAEQQdGDQAgACABEOwFCyABIAUQlAYLIAMoAgBBgICAgHhGDQogAyABEJUGDAoLIAEgACgCBBDdCCAAKAIIIgAQwAsNCCAAKAIAQQFGDQkgACkDACEGIABCATcDACACQShqIABBKGopAwA3AwAgAkEgaiAAQSBqKQMANwMAIAJBGGogAEEYaikDADcDACACQRBqIABBEGopAwA3AwAgAkEIaiAAQQhqIgEpAwA3AwAgAUEANgIAIAIgBjcDACACEOkDDAkLIAEgACgCBBDdCCAAKAIIIgAQwAsNByAAKAIAQQFGDQggACkDACEGIABCATcDACACQShqIABBKGopAwA3AwAgAkEgaiAAQSBqKQMANwMAIAJBGGogAEEYaikDADcDACACQRBqIABBEGopAwA3AwAgAkEIaiAAQQhqIgEpAwA3AwAgAUEANgIAIAIgBjcDACACEOkDDAgLAkAgACgCBCIDQQJGDQACQCADQQFxRQ0AIAEgACgCCBDdCAwBCyAAKAIIIgMoAggiBEUNACADKAIEIgMgBEE4bGohBQNAIAMgARDsBQJAIANBMGooAgAiBEUNACABIAQQ3QgLIANBOGoiAyAFRw0ACwsCQCAAKAIYIgNFDQAgASADEN0ICwJAIAAoAhwiA0UNACABIAMQ3QgLIAAoAgwiABDACw0GIAAoAgBBAUYNByAAKQMAIQYgAEIBNwMAIAJBKGogAEEoaikDADcDACACQSBqIABBIGopAwA3AwAgAkEYaiAAQRhqKQMANwMAIAJBEGogAEEQaikDADcDACACQQhqIABBCGoiASkDADcDACABQQA2AgAgAiAGNwMAIAIQ6QMMBwsCQAJAAkACQCAAKAIEDgMAAQIACyAAKAIIIgMoAggiBEUNAiADKAIEIgMgBEE4bGohBQNAIAMgARDsBQJAIANBMGooAgAiBEUNACABIAQQ3QgLIANBOGoiAyAFRw0ADAMLCyAAKAIIIgMoAggiBEUNASADKAIEIgMgBEE4bGohBQNAIAMgARDsBQJAIANBMGooAgAiBEUNACABIAQQ3QgLIANBOGoiAyAFRw0ADAILCyAAKAIIIAEQ7AULIAEgACgCDBDdCCAAKAIQIgAQwAsNBSAAKAIAQQFGDQYgACkDACEGIABCATcDACACQShqIABBKGopAwA3AwAgAkEgaiAAQSBqKQMANwMAIAJBGGogAEEYaikDADcDACACQRBqIABBEGopAwA3AwAgAkEIaiAAQQhqIgEpAwA3AwAgAUEANgIAIAIgBjcDACACEOkDDAYLAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCIDKAIIIgRFDQIgAygCBCIDIARBOGxqIQUDQCADIAEQ7AUCQCADQTBqKAIAIgRFDQAgASAEEN0ICyADQThqIgMgBUcNAAwDCwsgACgCCCIDKAIIIgRFDQEgAygCBCIDIARBOGxqIQUDQCADIAEQ7AUCQCADQTBqKAIAIgRFDQAgASAEEN0ICyADQThqIgMgBUcNAAwCCwsgACgCCCABEOwFCyABIAAoAgwQ3QggACgCECIAEMALDQQgACgCAEEBRg0FIAApAwAhBiAAQgE3AwAgAkEoaiAAQShqKQMANwMAIAJBIGogAEEgaikDADcDACACQRhqIABBGGopAwA3AwAgAkEQaiAAQRBqKQMANwMAIAJBCGogAEEIaiIBKQMANwMAIAFBADYCACACIAY3AwAgAhDpAwwFCyAAQQhqIAEQ1QIMBAsgASAAKAIEEN0IDAMLIAMgARDTAQsgACgCFCIARQ0BIAAQwAsNAAsgACgCAEEBRg0AIAApAwAhBiAAQgE3AwAgAkEoaiAAQShqKQMANwMAIAJBIGogAEEgaikDADcDACACQRhqIABBGGopAwA3AwAgAkEQaiAAQRBqKQMANwMAIAJBCGogAEEIaiIBKQMANwMAIAFBADYCACACIAY3AwAgAhDpAwsgAkEwaiQAC/MQAQh/AkACQCAAKAIAIgINAAJAAkACQAJAAkACQCAAKAIEIgMoAgAiAEF7aiICQQQgAkEGSRsOBgUAAQIDBAULAkAgAygCCEEDRw0AIAEgAygCDCICENMDIAIgARBRIAEoAgBFDQAgAigCAEEaRw0AIAEgAkEIaiIEEMMFIgBFDQAgAhDkASACQThqIABBOGopAwA3AwAgAkEwaiAAQTBqKQMANwMAIAJBKGogAEEoaikDADcDACACQSBqIABBIGopAwA3AwAgAkEYaiAAQRhqKQMANwMAIAJBEGogAEEQaikDADcDACAEIABBCGopAwA3AwAgAiAAKQMANwMAIABBwABBCBC9EwsgASADKAIoIgIQ0wMgAiABEFEgASgCAEUNBiACKAIAQRpHDQQgASACQQhqIgQQwwUiAEUNBCACEOQBIAJBOGogAEE4aikDADcDACACQTBqIABBMGopAwA3AwAgAkEoaiAAQShqKQMANwMAIAJBIGogAEEgaikDADcDACACQRhqIABBGGopAwA3AwAgAkEQaiAAQRBqKQMANwMAIAQgAEEIaikDADcDACACIAApAwA3AwAgAEHAAEEIEL0TDAQLIAEgAygCKCICENMDIAIgARBRIAEoAgBFDQUgAigCAEEaRw0DIAEgAkEIaiIEEMMFIgBFDQMgAhDkASACQThqIABBOGopAwA3AwAgAkEwaiAAQTBqKQMANwMAIAJBKGogAEEoaikDADcDACACQSBqIABBIGopAwA3AwAgAkEYaiAAQRhqKQMANwMAIAJBEGogAEEQaikDADcDACAEIABBCGopAwA3AwAgAiAAKQMANwMAIABBwABBCBC9EwwDCyADQShqIQICQCADKAIIQQNHDQAgASADKAIMIgAQ0wMgACABEFEgASgCAEUNACAAKAIAQRpHDQAgASAAQQhqIgUQwwUiBEUNACAAEOQBIABBOGogBEE4aikDADcDACAAQTBqIARBMGopAwA3AwAgAEEoaiAEQShqKQMANwMAIABBIGogBEEgaikDADcDACAAQRhqIARBGGopAwA3AwAgAEEQaiAEQRBqKQMANwMAIAUgBEEIaikDADcDACAAIAQpAwA3AwAgBEHAAEEIEL0TCyACKAIAQYCAgIB4Rg0CIAEgAhDkBAwCCyADQSBqIQICQCAAQQNHDQAgASADKAIEIgAQ0wMgACABEFEgASgCAEUNACAAKAIAQRpHDQAgASAAQQhqIgUQwwUiBEUNACAAEOQBIABBOGogBEE4aikDADcDACAAQTBqIARBMGopAwA3AwAgAEEoaiAEQShqKQMANwMAIABBIGogBEEgaikDADcDACAAQRhqIARBGGopAwA3AwAgAEEQaiAEQRBqKQMANwMAIAUgBEEIaikDADcDACAAIAQpAwA3AwAgBEHAAEEIEL0TCwJAIAIoAgBBB0YNACACIAEQhgQgASgCAEUNACABIAIQwwgLIANByABqIQIgAygCaCIAIAEQhgQCQCABKAIARQ0AIAEgABDDCAsgAigCAEGAgICAeEYNASABIAIQ5AQMAQsCQCADKAIIQQNHDQAgASADKAIMIgIQ0wMgAiABEFEgASgCAEUNACACKAIAQRpHDQAgASACQQhqIgQQwwUiAEUNACACEOQBIAJBOGogAEE4aikDADcDACACQTBqIABBMGopAwA3AwAgAkEoaiAAQShqKQMANwMAIAJBIGogAEEgaikDADcDACACQRhqIABBGGopAwA3AwAgAkEQaiAAQRBqKQMANwMAIAQgAEEIaikDADcDACACIAApAwA3AwAgAEHAAEEIEL0TCwJAIAMoAigiBkEIaigCACICRQ0AIAZBBGooAgAiByACQQZ0aiEIA0ACQCAHKAI4IgJFDQAgBygCNCEAIAJBDGwhBQNAIAEgACgCACICENMDIAIgARBRAkAgASgCAEUNACACKAIAQRpHDQAgASACQQhqIgkQwwUiBEUNACACEOQBIAJBOGogBEE4aikDADcDACACQTBqIARBMGopAwA3AwAgAkEoaiAEQShqKQMANwMAIAJBIGogBEEgaikDADcDACACQRhqIARBGGopAwA3AwAgAkEQaiAEQRBqKQMANwMAIAkgBEEIaikDADcDACACIAQpAwA3AwAgBEHAAEEIEL0TCyAAQQxqIQAgBUF0aiIFDQALCyAHIAEQhgQCQCABKAIARQ0AIAEgBxDDCAsgB0HAAGoiByAIRw0ACwsgBkEYaiEHAkAgBkEUaigCACICRQ0AIAZBEGooAgAhACACQQxsIQUDQCABIAAoAgAiAhDTAyACIAEQUQJAIAEoAgBFDQAgAigCAEEaRw0AIAEgAkEIaiIJEMMFIgRFDQAgAhDkASACQThqIARBOGopAwA3AwAgAkEwaiAEQTBqKQMANwMAIAJBKGogBEEoaikDADcDACACQSBqIARBIGopAwA3AwAgAkEYaiAEQRhqKQMANwMAIAJBEGogBEEQaikDADcDACAJIARBCGopAwA3AwAgAiAEKQMANwMAIARBwABBCBC9EwsgAEEMaiEAIAVBdGoiBQ0ACwsgBygCAEGAgICAeEYNACABIAcQ5AQLIAEoAgBFDQEgASADELILDwsgASACENMDIAIgARBRIAEoAgBFDQAgAigCAEEaRw0AIAEgAkEIaiIAEMMFIgFFDQAgAhDkASACQThqIAFBOGopAwA3AwAgAkEwaiABQTBqKQMANwMAIAJBKGogAUEoaikDADcDACACQSBqIAFBIGopAwA3AwAgAkEYaiABQRhqKQMANwMAIAJBEGogAUEQaikDADcDACAAIAFBCGopAwA3AwAgAiABKQMANwMAIAFBwABBCBC9EwsL6RABBX8jAEHAAmsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAw0AAkACQAJAAkACQCAAKAIEIgMoAgAiBEF7aiIAQQQgAEEGSRsOBhAAAQIDBBALIAMoAghBA0cNDiADKAIMIgAoAgBBGkcNBSACQYACaiABKAIAIAEoAgQgAEEIaiIEEIINIAIoAoACQTJGDQ4gABDRASAAQThqIAJBgAJqQThqKQMANwMAIABBMGogAkGAAmpBMGopAwA3AwAgAEEoaiACQYACakEoaikDADcDACAAQSBqIAJBgAJqQSBqKQMANwMAIABBGGogAkGAAmpBGGopAwA3AwAgAEEQaiACQYACakEQaikDADcDACAEIAJBgAJqQQhqKQMANwMAIAAgAikDgAI3AwAMDgsgAygCKCIDKAIAQRpHDQUgAkHAAGogASgCACABKAIEIANBCGoiARCCDSACKAJAQTJGDQ4gAxDRASADQThqIAJBwABqQThqKQMANwMAIANBMGogAkHAAGpBMGopAwA3AwAgA0EoaiACQcAAakEoaikDADcDACADQSBqIAJBwABqQSBqKQMANwMAIANBGGogAkHAAGpBGGopAwA3AwAgA0EQaiACQcAAakEQaikDADcDACABIAJBwABqQQhqKQMANwMAIAMgAikDQDcDAAwOCyADKAIIQQNHDQsgAygCDCIAKAIAQRpHDQUgAkGAAmogASgCACABKAIEIABBCGoiBBCCDSACKAKAAkEyRg0LIAAQ0QEgAEE4aiACQYACakE4aikDADcDACAAQTBqIAJBgAJqQTBqKQMANwMAIABBKGogAkGAAmpBKGopAwA3AwAgAEEgaiACQYACakEgaikDADcDACAAQRhqIAJBgAJqQRhqKQMANwMAIABBEGogAkGAAmpBEGopAwA3AwAgBCACQYACakEIaikDADcDACAAIAIpA4ACNwMADAsLIANBIGohACAEQQNHDQkgAygCBCIEKAIAQRpHDQUgAkGAAmogASgCACABKAIEIARBCGoiBRCCDSACKAKAAkEyRg0JIAQQ0QEgBEE4aiACQYACakE4aikDADcDACAEQTBqIAJBgAJqQTBqKQMANwMAIARBKGogAkGAAmpBKGopAwA3AwAgBEEgaiACQYACakEgaikDADcDACAEQRhqIAJBgAJqQRhqKQMANwMAIARBEGogAkGAAmpBEGopAwA3AwAgBSACQYACakEIaikDADcDACAEIAIpA4ACNwMADAkLIAMoAghBA0cNByADKAIMIgAoAgBBGkcNBSACQYACaiABKAIAIAEoAgQgAEEIaiIEEIINIAIoAoACQTJGDQcgABDRASAAQThqIAJBgAJqQThqKQMANwMAIABBMGogAkGAAmpBMGopAwA3AwAgAEEoaiACQYACakEoaikDADcDACAAQSBqIAJBgAJqQSBqKQMANwMAIABBGGogAkGAAmpBGGopAwA3AwAgAEEQaiACQYACakEQaikDADcDACAEIAJBgAJqQQhqKQMANwMAIAAgAikDgAI3AwAMBwsgAygCAEEaRw0FIAIgASgCACABKAIEIANBCGoiARCCDSACKAIAQTJGDQogAxDRASADQThqIAJBOGopAwA3AwAgA0EwaiACQTBqKQMANwMAIANBKGogAkEoaikDADcDACADQSBqIAJBIGopAwA3AwAgA0EYaiACQRhqKQMANwMAIANBEGogAkEQaikDADcDACABIAJBCGopAwA3AwAgAyACKQMANwMADAoLIAAgARBGDAgLIAMgARBGDAgLIAAgARBGDAULIAQgARBGDAMLIAAgARBGDAELIAMgARBGDAQLIAMoAigiBiABEJsJAkAgBkEUaigCACIDRQ0AIAZBEGooAgAhACADQQxsIQQDQAJAAkAgACgCACIDKAIAQRpHDQAgAkHAAWogASgCACABKAIEIANBCGoiBRCCDSACKALAAUEyRg0BIAMQ0QEgA0E4aiACQcABakE4aikDADcDACADQTBqIAJBwAFqQTBqKQMANwMAIANBKGogAkHAAWpBKGopAwA3AwAgA0EgaiACQcABakEgaikDADcDACADQRhqIAJBwAFqQRhqKQMANwMAIANBEGogAkHAAWpBEGopAwA3AwAgBSACQcABakEIaikDADcDACADIAIpA8ABNwMADAELIAMgARBGCyAAQQxqIQAgBEF0aiIEDQALCyAGKAIYQYCAgIB4Rg0DIAZBIGooAgAiAEUNAyAGQRxqKAIAIQMgAEEwbCEAA0AgAyABEHAgA0EwaiEDIABBUGoiAA0ADAQLCwJAIAAoAgBBB0YNACAAIAEQqgMLIAMoAmggARCqAyADKAJIQYCAgIB4Rg0CIANB0ABqKAIAIgBFDQIgA0HMAGooAgAhAyAAQTBsIQADQCADIAEQcCADQTBqIQMgAEFQaiIADQAMAwsLIAMoAihBgICAgHhGDQEgA0EwaigCACIARQ0BIANBLGooAgAhAyAAQTBsIQADQCADIAEQcCADQTBqIQMgAEFQaiIADQAMAgsLAkAgAygCKCIDKAIAQRpHDQAgAkGAAWogASgCACABKAIEIANBCGoiARCCDSACKAKAAUEyRg0BIAMQ0QEgA0E4aiACQYABakE4aikDADcDACADQTBqIAJBgAFqQTBqKQMANwMAIANBKGogAkGAAWpBKGopAwA3AwAgA0EgaiACQYABakEgaikDADcDACADQRhqIAJBgAFqQRhqKQMANwMAIANBEGogAkGAAWpBEGopAwA3AwAgASACQYABakEIaikDADcDACADIAIpA4ABNwMADAELIAMgARBGCyACQcACaiQAC9AQAgp/AX4jAEGQAWsiAiQAAkACQAJAIAEoAgAiA0EJRw0AIAAgAUEIahB3IAEoAgBBAUYNAQwCCwJAAkACQAJAAkACQAJAAkAgAw4JAAECAwQFCQYJAAsgASgCHCIBRQ0IIAFBCGooAgAiA0UNCCABQQRqKAIAIQEgA0EMbCEDA0AgASAAENQBIAFBDGohASADQXRqIgMNAAwJCwsgACgCAEUNBSABKAIIQQJHDQUgASgCDCIDKAIIIgRFDQYgAygCBCIFIARBOGxqIQYDQAJAAkACQAJAAkACQAJAIAUoAgAOBwUAAQIDBQQFCyAFQQxqKAIAIgRFDQQgBUEIaigCACEDIARBKGwhBANAAkAgAygCAEEHRg0AIAMgABCGBCAAKAIARQ0AIAAgAxDDCAsgA0EoaiEDIARBWGoiBA0ADAULCyAFKAIEIgMgABCGBCAAKAIARQ0EIAAgAxDDCAwDCyAFQQRqIAAQnwYMAgsgACAFQQRqEKoLDAELIAAgBSgCBCIDENMDIAMgABBRIAAoAgBFDQEgAygCAEEaRw0AIAAgA0EIaiIHEMMFIgRFDQAgAxDkASADQThqIARBOGopAwA3AwAgA0EwaiAEQTBqKQMANwMAIANBKGogBEEoaikDADcDACADQSBqIARBIGopAwA3AwAgA0EYaiAEQRhqKQMANwMAIANBEGogBEEQaikDADcDACAHIARBCGopAwA3AwAgAyAEKQMANwMAIARBwABBCBC9EwsgACgCAEUNACAAIAUQwwgLAkAgBSgCMCIDRQ0AIAAgAxDTAyADIAAQUSAAKAIARQ0AIAMoAgBBGkcNACAAIANBCGoiBxDDBSIERQ0AIAMQ5AEgA0E4aiAEQThqKQMANwMAIANBMGogBEEwaikDADcDACADQShqIARBKGopAwA3AwAgA0EgaiAEQSBqKQMANwMAIANBGGogBEEYaikDADcDACADQRBqIARBEGopAwA3AwAgByAEQQhqKQMANwMAIAMgBCkDADcDACAEQcAAQQgQvRMLIAVBOGoiBSAGRw0ADAcLCyABKAIcIgFFDQYgAUEIaigCACIDRQ0GIAFBBGooAgAhASADQQxsIQMDQCABIAAQ1AEgAUEMaiEBIANBdGoiAw0ADAcLCwJAAkACQCABKAIIDgMAAQgACyABKAIoIAAQrAcgAS0AJEECRw0BDAcLIAEoAiggABD1BSABLQAkQQJGDQYLIAJB2ABqIAEpAxAgASgCIBDnGiAAQSBqIAIpA1ggAigCYBCRBhoMBQsgACABKAIEIgEQ0wMgASAAEFEgACgCAEUNBCABKAIAQRpHDQQgACABQQhqIgMQwwUiAEUNBCABEOQBIAFBOGogAEE4aikDADcDACABQTBqIABBMGopAwA3AwAgAUEoaiAAQShqKQMANwMAIAFBIGogAEEgaikDADcDACABQRhqIABBGGopAwA3AwAgAUEQaiAAQRBqKQMANwMAIAMgAEEIaikDADcDACABIAApAwA3AwAgAEHAAEEIEL0TDAQLIAEoAhAiAUUNAyABQQhqKAIAIgNFDQMgAUEEaigCACEBIANBDGwhAwNAIAEgABDUASABQQxqIQEgA0F0aiIDDQAMBAsLIAAgASgCBCIBENMDIAEgABBRIAAoAgBFDQIgASgCAEEaRw0CIAAgAUEIaiIDEMMFIgBFDQIgARDkASABQThqIABBOGopAwA3AwAgAUEwaiAAQTBqKQMANwMAIAFBKGogAEEoaikDADcDACABQSBqIABBIGopAwA3AwAgAUEYaiAAQRhqKQMANwMAIAFBEGogAEEQaikDADcDACADIABBCGopAwA3AwAgASAAKQMANwMAIABBwABBCBC9EwwCCyABQQhqIAAQpQILIAJB2ABqEJwaIAJBMGpBIGogAUEoaiIEKQMANwMAIAJBMGpBGGogAUEgaiIFKQMANwMAIAJBMGpBEGogAUEYaiIGKQMANwMAIAJBMGpBCGogAUEQaiIDKQMANwMAIAEpAwghDCABIAIpA1g3AwggAyACQdgAakEIaiIIKQMANwMAIAYgAkHYAGpBEGoiCSkDADcDACAFIAJB2ABqQRhqIgopAwA3AwAgBCACQdgAakEgaiILKQMANwMAIAIgDDcDMCACIAAgAkEwakEBEF8gAUEIaiEAAkACQAJAIAIoAgBBbWoiB0ECIAdBAkkbDgMAAQIACyABKQMAIQwgAUEJNgIAIAJB2ABqQTBqIAFBMGopAwA3AwAgAkHYAGpBKGogBCkDADcDACALIAUpAwA3AwAgCiAGKQMANwMAIAkgAykDADcDACAIIAApAwA3AwAgA0EANgIAIABCATcDACACIAw3A1gCQCAMp0EJRg0AIAJB2ABqEM0FDAMLIAJB4ABqEOkDDAILIAAQlAUgAEEgaiACQShqKQMANwMAIABBGGogAkEgaikDADcDACAAQRBqIAJBGGopAwA3AwAgAEEIaiACQRBqKQMANwMAIAAgAikDCDcDAAwBCyACQdgAakEsaiACQShqKQMANwIAIAJB2ABqQSRqIAJBIGopAwA3AgAgAkHYAGpBHGogAkEYaikDADcCACACQdgAakEUaiACQRBqKQMANwIAIAJB2ABqQQxqIAJBCGopAwA3AgAgAiACKQMANwJcIAEQzQUgAUEJNgIAIAEgAikCWDcCBCABQQxqIAgpAgA3AgAgAUEUaiAJKQIANwIAIAFBHGogCikCADcCACABQSRqIAspAgA3AgAgAUEsaiACQdgAakEoaikCADcCACABQTRqIAJBiAFqKAIANgIACyACQZABaiQAC9kQAgh/BX4jAEEQayICJAACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgkJAAECAwQFBwYJCyAAQQhqIAEQ+gIMCAsgAC0AIA0HIAAoAhgNBwJAIAAoAgwiA0UNACAAKAIIIQQgA0HQAGwhAwNAAkACQAJAAkAgBCkDACIKQn58IgtCAiALQgJUG6cOAwABAgALIARBCGooAgANAiACIARBEGopAwAgBEEgaigCABDnGiABIAIpAwAgAigCCBCRBhoMAgsgAiAEQQhqKQMAIARBGGooAgAQ5xogASACKQMAIAIoAggQkQYaDAELIARByABqLQAADQAgCqdBAXENACACIARBCGopAwAgBEEYaigCABDnGiABIAIpAwAgAigCCBCRBhoLIARB0ABqIQQgA0Gwf2oiAw0ACwsgACgCHCIERQ0HIARBCGooAgAiAEUNByAEQQRqKAIAIQQgAEEMbCEAA0ACQAJAIAQoAgAiAw0AIARBBGooAgAgARCtBQwBCyADIAEQjQELIARBDGohBCAAQXRqIgANAAwICwsCQAJAIAAoAggOAwABCAALAkAgACgC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EMAiIQQgAxDBISAERQ0CIAEQwSEgACAINwMIIABBhICAgHg2AgAMDAsgAkHIAGogARCoFAJAIAIoAkhBgICAgHhGDQAgACACKQJINwIEIABBjICAgHg2AgAgAEEMaiACQdAAaigCADYCAAwJCwJAAkAgARCYIw0AIAJB1ABqIAJBxABqEKUPIAIoAlRBgICAgHhGDQEgACACKQJUNwIEIABBjoCAgHg2AgAgAEEMaiACQdwAaigCADYCAAwKCyACIAE2ApABAkAgARCYI0UNACACIAEQDyIBNgLoASACQQA2AuQBIAJBADYC7AEgAiACQZABajYC4AEgAkHQAWogAUGAgAQgAUGAgARJGxDzGiACQZABaiEEA0BBlYCAgHghAQJAIARFDQAgAkEIaiACQeABahDLGUGVgICAeCEBIAIoAghBAXFFDQAgAigCDCEBIAIgAigC7AFBAWo2AuwBIAJBsAFqIAEQ3AEgAigCtAEhAyACKAKwASIBQZWAgIB4Rg0HIAIpA7gBIQgLIAIgCDcDcCACIAM2AmwgAiABNgJoAkAgAUGVgICAeEYNACACQdABaiACQegAahDCFyACKALgASEEDAELCyACQegAahDHICAAIAIpAtABNwIEIABBlICAgHg2AgAgAEEMaiACQdgBaigCADYCAAwMCyACQbABaiABEJwMIAIoArABIQECQAJAAkAgAi0AtAEiA0F+ag4CAgABCyAAQZWAgIB4NgIAIAAgATYCBAwNCyACIAM6ANQBIAIgATYC0AEgAkHgAWpBABDzGgNAIAJBEGogAkHQAWoQ5Q5BlYCAgHghAQJAIAIoAhAiBEECRg0AIAIoAhQhAyAEQQFxDQggAkGwAWogAxDcASACKAK0ASEDIAIoArABIgFBlYCAgHhGDQggAikDuAEhCAsgAiAINwNwIAIgAzYCbCACIAE2AmgCQCABQZWAgIB4Rg0AIAJB4AFqIAJB6ABqEMIXDAELCyACQegAahDHICAAIAIpAuABNwIEIABBlICAgHg2AgAgAEEMaiACQegBaigCADYCAAwLCyAAIAJBkAFqEK0cDAsLIAEQkyNFDQUQECIDIAEQvyIhBCADEMEhAkAgBEUNACABEBFFDQYLIAIgATYCYCACQbABaiABEJwMIAIoArABIQMCQAJAAkAgAi0AtAEiBEF+ag4CAgAB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EQwBCyADQfADakEYaiABQShqKQMANwMAIANBgARqIAFBIGopAwA3AwAgAyABKQMQNwPwAyADIAFBGGopAwA3A/gDQgEhEQsgBmchBiALLQAAIQsgAS0AWyEOIAEtAFkhDyABKQNIIRIgASkDUCETIAEvAVwhAQJAQYACRSIQDQAgAEHgAGogA0HwAWpBgAL8CgAAC0EgIAZrIQYCQCAQDQAgAEHgAmogA0GwBGpBgAL8CgAACyAAQgA3AwggACARNwMAIAAgBzYCiAUgACAGNgKEBSAAIAI2AoAFIAAgATsBXCAAIA46AFsgACALOgBaIAAgDzoAWSAAIAg6AFggACATNwNQIAAgEjcDSCAAIAk2AkQgACAKNgJAIAAgBDoAPCAAIAw2AjggACANNgI0IAAgBTYCMCAAQfgEaiADQdABakEYaikDADcDACAAQfAEaiADQdABakEQaikDADcDACAAQegEaiADKQPYATcDACAAIAMpA9ABNwPgBCAAIAMpA/ADNwMQIABBGGogAykD+AM3AwAgAEEgaiADQfADakEQaikDADcDACAAQShqIANB8ANqQRhqKQMANwMADAILIABCADcDCCAAQgI3AwAgAEGxATYCGCAAQdyFhAE2AhQgAEEsNgIQCyACIAIoAgAiBEF/ajYCACAEQQFHDQAgAhDVGwsgA0GwBmokAAvJDQEPfyMAQSBrIgYkAAJAAkACQAJAIAFBIU8NACABIQcMAQsgAkF8aiEIA0ACQCAEDQAgACABIAIgA0EBEOECDAMLIAAgAUEDdiIJQRxsaiEKIAAgCUEEdGohBwJAAkAgAUHAAEkNACAAIAcgCiAJEOAPIQsMAQsgACAKIAcgACgCACIJIAcoAgAiDEkiDSAMIAooAgAiDklzGyANIAkgDklzGyELCyAEQX9qIQQgBiALKAIAIg02AgQgCyAAa0ECdiEPAkACQAJAAkAgBUUNACAFKAIAIA1PDQELIAMgAUkNBiACIAFBAnQiEGohCkEAIQcgACEJIA8hEQNAAkAgCSAAQQAgEUF9aiIMIAwgEUsbQQJ0aiISTw0AIAsoAgAhDANAIAIgCkF8aiAJKAIAIg4gDUkiExsgB0ECdGogDjYCACACIApBeGogCUEEaigCACIOIAxJIhQbIAcgE2oiB0ECdGogDjYCACACIApBdGogCUEIaigC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QQxqIAJBuAFqQTj8CgAACyAAIAE2AgggACAENgIEIABBhICAgHg2AgAMBwsgAkHEAWogA0EIaigCACIENgIAIAJBsAFqQQhqIAQ2AgAgAiADKQIAIgs3ArwBIAIgCzcDsAEgAkEQaiACQbABahCdF0EALQDg9p0BGiACKAIUIQRBCBCEASIDRQ0EIANBADYCACAAIAIpAiA3AjAgACADNgIsIAAgATYCBCAAQYCAgIB4NgIAIAMgBDYCBCAAQThqIAJBIGpBCGopAgA3AgAgAEHAAGogAkEwaikCADcCAAwGCyADKAIAIgQgASgCCCIFRg0EIAJBsAFqIAEQ+gMgAkHQAGpBCGoiBiACQcgBaikCADcDACACQdAAakEQaiIHIAJB0AFqKQIANwMAIAIgAikCwAE3A1AgAigCvAEhBCACKAK4ASEIIAIoArQBIQkCQCACKAKwASIKQSJGDQAgACACKQLYATcCLCAAQTxqIAJB6AFqKQIANwIAIABBNGogAkHgAWopAgA3AgAgACAENgIQIAAgCDYCDCAAIAk2AgggACACKQNQNwIUIABBHGogBikDADcCACAAQSRqIAcpAwA3AgAgACAKNgIEIABBhICAgHg2AgAMBgsgAkH4AGpBCGogBikDADcDACACQfgAakEQaiAHKQMANwMAIAIgAikDUDcDeCACIAEQgQoiBjYClAEgARDbCBoCQAJAIAZBKUYNACAGQTpGDQEgAkEANgKwASACQZQBakG4hoUBIAJBsAFqQbyGhQEQ4hsACwJAIARFDQAgAkGsAWogA0EIaigCADYCACAAIAIpA3g3AhAgACAENgIMIAAgCDYCCCAAIAk2AgQgAEGDgICAeDYCACACQZgBakEIaiIBIAJBIGpBCGooAgA2AgAgAEEYaiACQfgAakEIaikDADcCACAAQSBqIAJB+ABqQRBqKQMANwIAIAIgAykCADcCpAEgAiACKQIgNwOYASAAQThqIAJBmAFqQRBqKQMANwIAIABBMGogASkDADcCACAAIAIpA5gBNwIoDAcLIAJBGzYCsAEgAEEEaiABKAIEIAUgAkE4aiACQbABahChDSAAQYSAgIB4NgIAIAkgCEEEQRwQ0BIMBgsgACAENgIMIAAgCDYCCCAAIAk2AgQgACACKQN4NwIQIABBGGogAkH4AGpBCGopAwA3AgAgAEEgaiACQfgAakEQaikDADcCACACQcQBaiADQQhqKAIAIgE2AgAgAkGwAWpBCGogATYCACACIAMpAgAiCzcCvAEgAiALNwOwASACQQhqIAJBsAFqEJ0XQQAtAOD2nQEaIAIoAgwhA0EIEIQBIgFFDQMgAUEANgIAIAAgAikCIDcCMCAAIAE2AiwgAEGCgICAeDYCACABIAM2AgQgAEE4aiACQSBqQQhqKQIANwIAIABBwABqIAJBIGpBEGopAgA3AgAMBQsgAkGwAWogASAEEPoBIAIoArABIQECQEEoRQ0AIAJB0ABqIAJBtAFqQSj8CgAACwJAIAFBIkYNACAAIAIpAtwBNwIwIABBwABqIAJB7AFqKAIANgIAIABBOGogAkHkAWopAgA3AgACQEEoRQ0AIABBCGogAkHQAGpBKPwKAAALIABBhICAgHg2AgAgACABNgIEDAULAkBBKEUNACACQbABaiACQdAAakEo/AoAAAsgAkHkAGogA0EIaigCACIBNgIAIAJB0ABqQQhqIAE2AgAgAiADKQIAIgs3AlwgAiALNwNQIAIgAkHQAGoQnRdBAC0A4PadARogAigCBCEDQQgQhAEiAUUNAiABQQA2AgAgACACKQIgNwIwIAEgAzYCBCAAQThqIAJBIGpBCGopAgA3AgAgAEHAAGogAkEwaikCADcCAAJAQShFDQAgACACQbABakEo/AoAAAsgACABNgIsIAAgBToAKAwECyACQQA2ArABIAJBHGpB4ICFASACQbABakHMhoUBEOIbAAsgAkHQAGpBCGogAkEgakEIaigCADYCACACQeQAaiABKAIAIgNB2ABqKAIANgIAIAIgAikCIDcDUCACIAMpAlA3AlwgAkEhNgKwASAAQQRqIAEoAgQgASgCCCACQdAAaiACQbABahChDSAAQYSAgIB4NgIADAILAAsgAkEVNgKwASAAQQRqIAEoAgQgBCACQSBqIAJBsAFqEKENIABBhICAgHg2AgALIAJB8AFqJAALpQ8CFH8BfiMAQdAAayIEJAACQAJAAkAgAigCAEGAgICAeEYNACADKAIAQYCAgIB4Rw0BCyABKAIMIQUMAQtBfyACKAIIrSADNQIIfiIYpyAYQiCIpxsgASgCDCIFTQ0AIAMQ1R0gA0GAgICAeDYCAAsCQAJAAkACQAJAIAEtABAiBkEBRw0AIARBCGogAiADEM8JIAQoAggiB0UNBAJAQX8gBygCCCIIrSAEKAIMIgk1Agh+IhinIgogGEIgiKcbIgNB/////wBLDQAgA0EEdCIDQf3///8HTw0AQQAhC0EEIQwCQCADRQ0AQQAtAOD2nQEaIAMQhAEiDEUNAyAHKAIIIQggCiELCyAHQQA2AgggBygCBCENIAcgDDYCBCAHKAIAIQ4gByALNgIAIAkoAgghDCAJQQA2AgggCSgCBCEDIARCADcCKCAEIAw2AiQgBCAJNgIgIAQgAyAMQQR0aiIPNgIcIAQgAzYCGAJAIAxFDQAgCEEEdCEQIA1BCGohEQNAIAQgA0EQaiISNgIYIAMoAgAiE0GAgICAeEYNASAEIAQoAiwiFEEBajYCLCADKAIEIQoCQCAIRQ0AIAogAygCCCIVaiEWIAMtAAxBAXEhFyAQIQkgESEDA0ACQAJAIANBBGoiDC0AAA0AIBQNASAEQTBqIANBfGooAgAgAygCABC5FCAEIAwtAAA6ADwCQCAHKAIIIgwgBygCAEcNACAHQbSphQEQoxgLIAcgDEEBajYCCCAHKAIEIAxBBHRqIgwgBCkCMDcCACAMQQhqIARBMGpBCGopAgA3AgAMAQsCQCADKAIAIBVqIgxBf0wNAAJAAkAgDA0AQQEhCwwBC0EALQDg9p0BGiAMEIQBIgtFDQkLIARBADYCSCAEIAs2AkQgBCAMNgJAIARBAToATCAEQcAAaiAKIBYQ5BUCQCAELQBMQQFHDQAgBEHAAGogA0F8aigCACIMIAwgAygCAGoQ5BULAkAgFw0AIARBADoATAsCQCAHKAIIIgwgBygCAEcNACAHQdSphQEQoxgLIAcoAgQgDEEEdGoiCyAEKQJANwIAIAtBCGogBEHAAGpBCGopAgA3AgAgByAMQQFqNgIIDAELQcSphQEQgRwACyADQRBqIQMgCUFwaiIJDQALCyATIApBAUEBENASIBIhAyASIA9HDQALCyAEQRhqEOgKAkAgAigCAEGAgICAeEYNACACEI8ICwJAIAhFDQAgDSEDA0AgAygCACADQQRqKAIAQQFBARDQEiADQRBqIQMgCEF/aiIIDQALCyAOIA1BBEEQENASDAULQaSphQEQgRwMAQsgBEEQaiACIAMQzwkgBCgCECIDRQ0DAkBBfyADKAIIIgetIAQoAhQiEzUCCH4iGKciCiAYQiCIpxsiCUH/////AEsNACAJQQR0IglB/f///wdPDQBBACELQQQhDAJAIAlFDQBBAC0A4PadARogCRCEASIMRQ0CIAMoAgghByAKIQsLIANBADYCCCADKAIEIRAgAyAMNgIEIAMoAgAhESADIAs2AgAgECAHQQR0aiEPIBAhFyAHRQ0CIARBMmohEiAQIQcDQCAHQRBqIRcgBygCACIIQYCAgIB4Rg0DIBIgB0EPai0AADoAACAEIAcvAA07ATAgBygCCCEVIAcoAgQhFAJAAkAgBy0ADCIJQQFxDQACQCADKAIIIgwgAygCAEcNACADQfSohQEQoxgLIAMoAgQgDEEEdGoiByAJOgAMIAcgFTYCCCAHIBQ2AgQgByAINgIAIAcgBC8BMDsADSAHQQ9qIBItAAA6AAAgAyAMQQFqNgIIDAELAkACQCATKAIIIgdFDQAgB0EEdCEMIBMoAgRBDGohByAUIBVqIRYDQCAHQXxqIgooAgAgFWoiCUF/TA0CAkACQCAJDQBBASELDAELQQAtAOD2nQEaIAkQhAEiC0UNBwsgBEEANgJIIAQgCzYCRCAEIAk2AkAgBEEBOgBMIARBwABqIBQgFhDkFQJAIAQtAExBAUcNACAEQcAAaiAHQXhqKAIAIgkgCSAKKAIAahDkFQsCQCAHLQAADQAgBEEAOgBMCwJAIAMoAggiCSADKAIARw0AIANBlKmFARCjGAsgAygCBCAJQQR0aiILIAQpAkA3AgAgC0EIaiAEQcAAakEIaikCADcCACADIAlBAWo2AgggB0EQaiEHIAxBcGoiDA0ACwsgCCAUQQFBARDQEgwBC0GEqYUBEIEcAAsgFyEHIBcgD0cNAAwECwtB5KiFARCBHAALAAsgDyAXRg0AIA8gF2tBBHYhAwNAIBcoAgAgF0EEaigCAEEBQQEQ0BIgF0EQaiEXIANBf2oiAw0ACwsgESAQQQRBEBDQEiATKAIIIQMgE0EANgIIIARBADYCKCAEIBM2AiAgBCADNgIkIAQgEygCBCIHNgIYIAQgByADQQR0ajYCHCAEQRhqEOgKIAIoAgBBgICAgHhGDQAgAhCPCAsCQCACKAIAQYCAgIB4Rg0AIAIoAgggBU0NAEHup4UBQcQAQbSohQEQjBoACyABKAIIIAYgAhCaCiAAQQhqIAJBCGooAgA2AgAgACACKQIANwIAIARB0ABqJAALnQ8CGX8CfiMAQcAAayICJAACQAJAIAEoAgAiA0HUtoABQRQgASgCBCIEKAIMIgURDAANACAAKAIEIQYCQCAAKAIIIgEQphUiB0UNACAGIAFBFGxqIQggACgCKCEJIAAoAiwhCiAAKAIQIQsgACgCFCEMIAAoAtwCIQ0gACgC2AIhDiAAKALUAiEPQQAhECAGIREDQAJAAkAgECAHSSISRQ0AQbT7gwEhAQJAAkACQCAQDgIBAgALIBAgDkYgECANRnIhAQJAIBAgD00NAEGsnYABQbD7gwEgARshAQwBC0GunYABQbL7gwEgARshAQtBASETIAMgAUECIAURDAANBiACIBA2AgQgAkECNgI8IAJBrKaAATYCOCACQQM2AiwgAkGUpoABNgIoIAJBAjYCNCACQQ42AgwgAiARKAIMNgIkIAJBDjYCFCACIAJBCGo2AjAgAiACQSRqNgIQIAIgAkEEajYCCCADIAQgAkEoahD0BQ0GAkAgEkUNACAQQQFqIRQgBiAQQRRsaiIVKAIAIQFBACEWQQAhFwNAAkACQAJAAkACQAJAIAFFDQADQAJAAkACQCABIAxPDQAgCyABQQlsaiISLQAAIhitQv8BgyEbIBIoAAUhASASKAABIRICQCAWQQFxRQ0AIBynIRkgEiAcQiCIpyIaRg0CIBxCCIinIRhBASEWIBtCCIYgEq1CIIaEIBuEIRwgGiESDAcLIBtCCIYgEq1CIIaEIBuEIRwgGCEZDAILIAEgDEGM44MBEMMSAAsgG0IIhiAcQv8Bg4QgEq1CIIaEIRwLQQEhFiABDQAMAgsLIBZBAXFFDQIgHEIgiKchEiAcQgiIpyEYIBynIRkLQQAhFkEAIQELIBcNAQwCCyADQaimmwFBASAFEQwADQkCQCAQQX9qIA9JDQAgFCEQDAcLIANB3KaAAUESIAURDAANCQJAIBUoAggiAUUNAEEAIRIDQAJAAkAgASAKTw0AIAkgAUEDdGoiFigCBCEBIBYoAgAhFiASRQ0BIANB046YAUECIAURDAANDQwBCyABIApBnOODARDDEgALQQEhEyACQQE2AiwgAkGU85sBNgIoIAJCATcCNCACQQ42AgwgAiAWNgIkIAIgAkEIajYCMCACIAJBJGo2AgggAyAEIAJBKGoQ9AUNDCASQX9qIRIgAQ0ACwtBASETIBQhECADQaimmwFBASAFEQwADQoMBgsgA0HTjpgBQQIgBREMAA0JCyAXQQFqIRcCQCAZQf8BcSAYQf8BcUYNACACIBk6ACMgAiAYOgAEIAJBAzYCDCACQej7gwE2AgggAkIDNwIUIAJBKTYCPCACQcIANgI0IAJBwgA2AiwgAiASNgIkIAIgAkEoajYCECACIAJBJGo2AjggAiACQQRqNgIwIAIgAkEjajYCKCADIAQgAkEIahD0BQ0JDAELIAIgGToABCACQQI2AiwgAkGA/IMBNgIoIAJCAjcCNCACQSk2AhQgAkHCADYCDCACIBI2AiQgAiACQQhqNgIwIAIgAkEkajYCECACIAJBBGo2AgggAyAEIAJBKGoQ9AUNCAwACwsgECAHQfytgAEQwxIAC0EBIRMgAkEBNgI8IAJBuPuDATYCOEECIRAgAkECNgIsIAJBtKCAATYCKCACQQE2AjQgAkEONgIMIAJBATYCJCACIAJBCGo2AjAgAiACQSRqNgIIIAMgBCACQShqEPQFDQUMAQtBuMaAARDJIgALIBFBFGoiESAIRw0ACwsgAkECNgIsIAJBtJ6AATYCKCACQgE3AjQgAkHDADYCDCACIABB4AJqNgIIIAIgAkEIajYCMCADIAQgAkEoahD0BQ0AIAJBAjYCLCACQdCegAE2AiggAkIBNwI0IAJBxAA2AgwgAiAAKAI8IgFBAEc6ACQgAiACQQhqNgIwIAIgAkEkajYCCCADIAQgAkEoahD0BQ0AIAJBAjYCLCACQaz6gwE2AiggAkIBNwI0IAJBKTYCDCACIAc2AiQgAiACQQhqNgIwIAIgAkEkajYCCCADIAQgAkEoahD0BQ0AIAJBAjYCLCACQcz6gwE2AiggAkIBNwI0IAJBKTYCDCACIAAoAjgiEjYCJCACIAJBCGo2AjAgAiACQSRqNgIIIAMgBCACQShqEPQFDQAgAkECNgIsIAJB/J6AATYCKCACQgE3AjQgAkEpNgIMIAIgAEHIAmo2AgggAiACQQhqNgIwIAMgBCACQShqEN8gDQAgAkECNgIsIAJBpJ+AATYCKCACQgE3AjQgAkEpNgIMIAIgAEHMAmo2AgggAiACQQhqNgIwIAMgBCACQShqEN8gDQAgAkGgoIABNgIoIAJCATcCNCACQSk2AgwgACgCRCEWIAAoAhQhGCAAKAIsIRkgACgCICEMIAJBAjYCLCACIBhBCWwgB0EUbGogGUEDdGogDCASakECdGogFkEAIAEbajYCJCACIAJBCGo2AjAgAiACQSRqNgIIQQEhEyADIAQgAkEoahDfIA0BIAJBADYCOCACQQE2AiwgAkHg+oMBNgIoIAJCBDcCMCADIAQgAkEoahDfICETDAELQQEhEwsgAkHAAGokACATC9kPAgd/AX4jAEHAAWsiAiQAQQAhAwJAAkACQAJAAkACQAJAAkAgACgCACIEQXxqQQAgBEF7akEISRsOCQABAgMEBwcFBgALIAEgABDjAwwGCyABIABBCGoQmQQMBQtBACEDIAJB8ABqQQApA5j/nAEiCTcCACACQYABaiAJNwIAIAJBADYBqgEgAkEANgJkIAJCgICAgIABNwJcIAJCgICAgIABNwKYASACQoCAgIDAADcCiAEgAkEANgKgASACQQA6AJQBIAJBADYCkAEgAiABLwF4OwGoASACIAEoAnQ2AqQBIAJBACkDkP+cASIJNwJoIAIgCTcCeCACIAEtAH46AK4BIAFBLGohBSAAKAIgIQYCQANAIANB1ABGDQEgASADakEsaiIEKAIAIQcgBCACQdwAaiADaiIIKAIANgIAIAggBzYCACADQQRqIQMMAAsLAkAgBigCFCIDRQ0AIAYoAhAhBCADQQxsIQcgAS0AeSEIIAEtACghAANAIAQoAgAhAyABQQA6AHkgAUEAOgAoAkAgAygCAEEaRw0AIAJBsAFqIAMpAwggA0EYaigCABDnGiAFIAIpA7ABIAIoArgBEJALCyAEQQxqIQQgAyABEHggASAAOgAoIAEgCDoAeSAHQXRqIgcNAAsLAkAgBigCCCIERQ0AIAYoAgQhAyAEQQZ0IQQDQCABIAMQ6gsgA0HAAGohAyAEQUBqIgQNAAsLAkAgBigCGEGAgICAeEYNACAGQSBqKAIAIgRFDQAgBkEcaigCACEDIARBMGwhBANAIAFBADoAfSADIAEQbCADQTBqIQMgBEFQaiIEDQALCyAFIAJB3ABqEKYDDAQLAkAgACgCCEEDRw0AIAEtACghBCABQQA6ACggAS0AeSEHIAFBADoAeQJAIAAoAgwiAygCAEEaRw0AIAJBsAFqIAMpAwggA0EYaigCABDnGiABQSxqIAIpA7ABIAIoArgBEJALCyADIAEQeCABIAQ6ACggASAHOgB5CwJAIAAoAjwiA0UNACABLQAoIQQgAUEAOgAoIAEtAHkhByABQQA6AHkCQCADKAIAQRpHDQAgAkGwAWogAykDCCADQRhqKAIAEOcaIAFBLGogAikDsAEgAigCuAEQkAsLIAMgARB4IAEgBDoAKCABIAc6AHkLIAAoAjgiBEUNAyAAKAI0IQMgBEEMbCEHIAFBLGohBSABLQB5IQggAS0AKCEAA0AgAUEAOgB5IAFBADoAKAJAIAMoAgAiBCgCAEEaRw0AIAJBsAFqIAQpAwggBEEYaigCABDnGiAFIAIpA7ABIAIoArgBEJALCyADQQxqIQMgBCABEHggASAAOgAoIAEgCDoAeSAHQXRqIgcNAAwECwsCQCAAKAIkIgNFDQAgAS0AKCEEIAFBADoAKCABLQB5IQcgAUEAOgB5AkAgAygCAEEaRw0AIAJBsAFqIAMpAwggA0EYaigCABDnGiABQSxqIAIpA7ABIAIoArgBEJALCyADIAEQeCABIAQ6ACggASAHOgB5CyAAKAI0IgRFDQIgACgCMCEDIARBDGwhByABQSxqIQUgAS0AeSEIIAEtACghAANAIAFBADoAeSABQQA6ACgCQCADKAIAIgQoAgBBGkcNACACQbABaiAEKQMIIARBGGooAgAQ5xogBSACKQOwASACKAK4ARCQCwsgA0EMaiEDIAQgARB4IAEgADoAKCABIAg6AHkgB0F0aiIHDQAMAwsLIAJBHGpBACkDmP+cASIJNwIAIAJBLGogCTcCACACQQA2AVYgAkEANgIQIAJCgICAgIABNwIIIAJCgICAgIABNwJEIAJCgICAgMAANwI0IAJBADYCTCACQQA6AEAgAkEANgI8IAIgAS8BeDsBVCACIAEoAnQ2AlAgAkEAKQOQ/5wBIgk3AhQgAiAJNwIkIAIgAS0AfjoAWiABQSxqIQUCQANAIANB1ABGDQEgASADakEsaiIEKAIAIQcgBCACQQhqIANqIggoAgA2AgAgCCAHNgIAIANBBGohAwwACwsCQCAAKAIMIgRFDQAgACgCCCEDIARBMGwhBANAIAFBADoAfSADIAEQbCADQTBqIQMgBEFQaiIEDQALCyAFIAJBCGoQpgMMAQsCQCAAKAIIIgNBBUYNACADQQNHDQAgAS0AKCEEIAFBADoAKCABLQB5IQcgAUEAOgB5AkAgACgCDCIDKAIAQRpHDQAgAkGwAWogAykDCCADQRhqKAIAEOcaIAFBLGogAikDsAEgAigCuAEQkAsLIAMgARB4IAEgBDoAKCABIAc6AHkLAkAgACgCPCIDRQ0AIAEtACghBCABQQA6ACggAS0AeSEHIAFBADoAeQJAIAMoAgBBGkcNACACQbABaiADKQMIIANBGGooAgAQ5xogAUEsaiACKQOwASACKAK4ARCQCwsgAyABEHggASAEOgAoIAEgBzoAeQsgACgCOCIERQ0AIAAoAjQhAyAEQQxsIQcgAUEsaiEFIAEtAHkhCCABLQAoIQADQCABQQA6AHkgAUEAOgAoAkAgAygCACIEKAIAQRpHDQAgAkGwAWogBCkDCCAEQRhqKAIAEOcaIAUgAikDsAEgAigCuAEQkAsLIANBDGohAyAEIAEQeCABIAA6ACggASAIOgB5IAdBdGoiBw0ACwsgAkHAAWokAAvxDgIOfwF+IwBBgAFrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgBBe2oiA0EEIANBBkkbDgYAAQIDBAUACyABKAIYIQMgASgCFCEEIAEoAhAhBQJAIAEpAwgiEEIDg0IAUg0AIBCnIgYgBigCACIGQQFqNgIAIAZBf0wNBwsgACADNgIYIAAgBDYCFCAAIAU2AhAgACAQNwMIIABBBTYCACAAIAEtABw6ABwMBQsgAkHQAGogAUEIahCbBUEALQDg9p0BGkHAABCEASIDRQ0FIAMgASgCKBBFIABBIGogAkHQAGpBGGopAwA3AwAgAEEYaiACQdAAakEQaikDADcDACAAQRBqIAJB0ABqQQhqKQMANwMAIAAgAikDUDcDCCAAQQY2AgAgACADNgIoDAQLIAEoAiAhBCABKAIcIQUgASgCGCEGIAEoAgwhByABKAIIIQgCQCABKQMQIhBCA4NCAFINACAQpyIDIAMoAgAiA0EBajYCACADQX9MDQULQQAtAOD2nQEaIAEtACQhCUHAABCEASIDRQ0EIAMgASgCKBBFIAAgAzYCKCAAIAk6ACQgACAENgIgIAAgBTYCHCAAIAY2AhggACAQNwMQIAAgBzYCDCAAIAg2AgggAEEHNgIADAMLIAEoAkQhCCABKAJAIQkgAkEoaiABQQhqEJsFAkACQCABKAJIIgMNAEEAIQYMAQtBAC0A4PadARpBDBCEASIGRQ0EQQAtAOD2nQEaIAMoAgghBSADKAIEIQdB4AAQhAEiBEUNBCAEIAMoAgAQZSAGIAU2AgggBiAHNgIEIAYgBDYCAAtBgICAgHghBwJAAkAgASgCKEGAgICAeEcNAAwBCyABKAIsIQMgASgCPCEKIAEoAjghCyABKAI0IQwgAkHQAGogASgCMCINQQhBMBCjDiACKAJUIQcgAigCUEEBRg0FIAIoAlghDgJAIAdFDQAgDUEwbCEEIA4hASAHIQUDQCAERQ0BIAJB0ABqIAMQfyABQShqIAJB0ABqQShqKQMANwMAIAFBIGogAkHQAGpBIGopAwA3AwAgAUEYaiACQdAAakEYaikDADcDACABQRBqIAJB0ABqQRBqKQMANwMAIAFBCGogAkHQAGpBCGopAwA3AwAgASACKQNQNwMAIAFBMGohASAEQVBqIQQgA0EwaiEDIAVBf2oiBQ0ACwsgDa1CIIYgDq2EIRALIAAgAikDKDcDCCAAQSBqIAJBKGpBGGopAwA3AwAgAEEYaiACQShqQRBqKQMANwMAIABBEGogAkEoakEIaikDADcDACAAIAY2AkggACAINgJEIAAgCTYCQCAAIAo2AjwgACALNgI4IAAgDDYCNCAAIBA3AiwgACAHNgIoIABBCDYCAAwCCyABKAJkIQkgASgCYCEMIAJBCGogARCbBUEHIQgCQCABKAIgQQdGDQAgAkHQAGogAUEgahC1AiACQTBqIAJB3ABqKQIANwMAIAJBOGogAkHkAGopAgA3AwAgAkHAAGogAkHsAGopAgA3AwAgAkEoakEgaiACQfQAaigCADYCACACIAIpAlQ3AyggAigCUCEIC0EALQDg9p0BGkEoEIQBIgdFDQIgByABKAJoELUCQYCAgIB4IQYCQAJAIAEoAkhBgICAgHhHDQAMAQsgASgCTCEDIAEoAlwhDSABKAJYIQogASgCVCELIAJB0ABqIAEoAlAiDkEIQTAQow4gAigCVCEGIAIoAlBBAUYNBSACKAJYIQ8CQCAGRQ0AIA5BMGwhBCAPIQEgBiEFA0AgBEUNASACQdAAaiADEH8gAUEoaiACQdAAakEoaikDADcDACABQSBqIAJB0ABqQSBqKQMANwMAIAFBGGogAkHQAGpBGGopAwA3AwAgAUEQaiACQdAAakEQaikDADcDACABQQhqIAJB0ABqQQhqKQMANwMAIAEgAikDUDcDACABQTBqIQEgBEFQaiEEIANBMGohAyAFQX9qIgUNAAsLIA6tQiCGIA+thCEQCyAAIAIpAwg3AwAgACACKQMoNwIkIABBGGogAkEIakEYaikDADcDACAAQRBqIAJBCGpBEGopAwA3AwAgAEEIaiACQQhqQQhqKQMANwMAIABBLGogAkEoakEIaikDADcCACAAQTRqIAJBKGpBEGopAwA3AgAgAEE8aiACQShqQRhqKQMANwIAIABBxABqIAJByABqKAIANgIAIAAgBzYCaCAAIAk2AmQgACAMNgJgIAAgDTYCXCAAIAo2AlggACALNgJUIAAgEDcCTCAAIAY2AkggACAINgIgDAELIAJB0ABqIAFBCGoQmwVBAC0A4PadARpByAAQhAEiA0UNASADIAEoAigQiAIgAEEgaiACQdAAakEYaikDADcDACAAQRhqIAJB0ABqQRBqKQMANwMAIABBEGogAkHQAGpBCGopAwA3AwAgACACKQNQNwMIIABBCjYCACAAIAM2AigLIAJBgAFqJAAPCwALIAcgAigCWEGIpJoBENggAAsgBiACKAJYQYikmgEQ2CAAC64OAg1/AX4jAEGgAWsiAyQAIAEoAgAiBEHQAGohBQJAAkACQCAEKAJQIgYgASgCCCIHRg0AIAQoAlghCCAEKAJUIQkCQANAIAEQgQpBPkYNASABEIEKIQoCQAJAAkACQAJAAkAgBCgCUCAGRw0AIAQoAlQgCUcNACAEKAJYIAhGDQELIApBpX9qIgtBBE0NAQwCCyAKQd8ARg0DIApB3///AHFBv39qQRpJDQMgCkGAAUkNAiAKEKcIRQ0CDAMLQQEgC3RBFXENAgsgCkEuRg0BIApB3///AHFBv39qQRpJDQECQCAKQYABSQ0AIAoQpwgNAkEAQRUgCkHQqARJGyILIAtBCnIiCyALQQJ0QdyBggFqKAIAQQt0IApBC3QiC0sbIgwgDEEFaiIMIAxBAnRB3IGCAWooAgBBC3QgC0sbIgwgDEEDaiIMIAxBAnRB3IGCAWooAgBBC3QgC0sbIgwgDEEBaiIMIAxBAnRB3IGCAWooAgBBC3QgC0sbIgwgDEEBaiIMIAxBAnRB3IGCAWooAgBBC3QgC0sbIgxBAnRB3IGCAWooAgBBC3QiDSALRiANIAtJaiAMaiIMQQJ0QdyBggFqIg4oAgBBFXYhC0GhAiENAkACQCAMQShLDQAgDigCBEEVdiENIAwNAEEAIQwMAQsgDkF8aigCAEH///8AcSEMCwJAIA0gC0EBakYNACAKIAxrIQwgDUF/aiENQQAhCgNAIAogC0GK5oABai0AAGoiCiAMSw0BIA0gC0EBaiILRw0ACwsgC0EBcUUNAQwCCyAKQVBqQQpJDQELIANB+ABqIAEQ+wwgA0ETNgI4IAAgASgCBCAHIANB+ABqIANBOGoQoQ0MBAsgARDbCA0ACwsCQAJAAkACQAJAAkACQAJAIAQoAlAiCiAHRg0AIAQpAlQhECADIAEQgQoiCzYCDCALQT5HDQIgARDbCBogASgCBCEOIAogBkkNCiAGRQ0BIAYgB08NCiAOIAZqLAAAQb9/Sg0BDAoLIANB+ABqQRRqIAVBCGooAgAiBDYCACADQfgAakEIaiAENgIAIAMgBSkCACIQNwKEASADIBA3A3ggA0EUNgI4IAAgASgCBCAHIANB+ABqIANBOGoQoQ0MCAsCQCAKRQ0AIAogB08NCSAOIApqLAAAQb9/TA0JCwJAAkACQCAKIAZGDQAgCiAGayIBQX9MDQRBAC0A4PadARogARCEASIMRQ0FAkAgAUUNACAMIA4gBmogAfwKAAALIAMgEDcCLCADIAo2AiggAyAINgIkIAMgCTYCICADIAY2AhwgAyACNgI0IAMgATYCGCADIAw2AhQgAyABNgIQIAQoAjANBiADQRxqIQ8gBEF/NgIwIAQoAjghDUEAIQYCQAJAAkAgBCgCPCIKDgICAQALQQAhBgNAIApBAXYiCyAGaiEJIAYgCSANIAlBKGxqIggoAgQgDCAIKAIIIgggASAIIAFJGxCSFyIFIAggAWsgBRtBAEobIQYgCiALayIKQQFLDQALCyANIAZBKGxqIgooAgQgDCAKKAIIIgkgASAJIAFJGxCSFyIIIAkgAWsgCBsiCUUNAiAJQR92IAZqIQoLIANBlAFqIA9BEGopAgA3AgAgA0GMAWogD0EIaikCADcCACADIA8pAgA3AoQBIANB+ABqIAwgARCsFCADIAI2ApwBIAQoAjwiASAKSQ0HAkAgASAEQTRqIgYoAgBHDQAgBhCdGAsgBCgCOCAKQShsaiEGAkAgASAKTQ0AIAEgCmtBKGwiCkUNACAGQShqIAYgCvwKAAALAkBBKEUNACAGIANB+ABqQSj8CgAACyAEIAFBAWo2AjwgBCAEKAIwQQFqNgIwDAILIAMgCDYCjAEgAyAJNgKIASADIAY2AoQBIAMgCDYCgAEgAyAJNgJ8IAMgBjYCeCADQRI2AjggACAOIAcgA0H4AGogA0E4ahChDQwJCyADQfgAakEUaiAKQRxqKQIANwIAIANBhAFqIApBFGopAgA3AgAgA0ERNgJ4IAMgCikCDDcCfCADQThqIA4gByAPIANB+ABqEKENIAQgBCgCMEEBajYCMCADKAI4IgRBIkcNBgsCQEEoRQ0AIABBBGogA0EQakEo/AoAAAsgAEEiNgIADAcLIANBADYCOCADQQxqQdyGhQEgA0E4akHwhoUBEOIbAAtBuOSbARCBHAsAC0GA/oQBEPcWAAsgCiABQZD+hAEQxhIACwJAQTxFDQAgAEEEaiADQThqQQRqQTz8CgAACyAAIAQ2AgAgASAMQQFBARDQEgwBCyADQfgAakEUaiAFQQhqKAIAIgQ2AgAgA0H4AGpBCGogBDYCACADIAUpAgAiEDcChAEgAyAQNwN4IANBFDYCOCAAIAEoAgQgBiADQfgAaiADQThqEKENCyADQaABaiQADwsgDiAHIAYgCkHghoUBEMQhAAumDwILfwF+IwBBMGsiAyQAIAEoAmghBCABKAJYIQVBACEGAkACQAJAAkACQCABKAJcIgdBf2oiCEEhSQ0AQQAhCUEAIQoDQAJAIAUgCmoiC0EBai0AACIMQcDDmQFqLQAARQ0AIAohBgwDCwJAIAtBAmotAAAiDEHAw5kBai0AAEUNAEEBIQkgCiEGDAMLAkAgC0EDai0AACIMQcDDmQFqLQAARQ0AQQIhCSAKIQYMAwsCQCALQQRqLQAAIgxBwMOZAWotAABFDQBBAyEJIAohBgwDCwJAIAtBBWotAAAiDEHAw5kBai0AAEUNAEEEIQkgCiEGDAMLAkAgC0EGai0AACIMQcDDmQFqLQAARQ0AQQUhCSAKIQYMAwsCQCALQQdqLQAAIgxBwMOZAWotAABFDQBBBiEJIAohBgwDCwJAIAtBCGotAAAiDEHAw5kBai0AAEUNAEEHIQkgCiEGDAMLAkAgC0EJai0AACIMQcDDmQFqLQAARQ0AQQghCSAKIQYMAwsCQCALQQpqLQAAIgxBwMOZAWotAABFDQBBCSEJIAohBgwDCwJAIAtBC2otAAAiDEHAw5kBai0AAEUNAEEKIQkgCiEGDAMLAkAgC0EMai0AACIMQcDDmQFqLQAARQ0AQQshCSAKIQYMAwsCQCALQQ1qLQAAIgxBwMOZAWotAABFDQBBDCEJIAohBgwDCwJAIAtBDmotAAAiDEHAw5kBai0AAEUNAEENIQkgCiEGDAMLAkAgC0EPai0AACIMQcDDmQFqLQAARQ0AQQ4hCSAKIQYMAwsCQCALQRBqLQAAIgxBwMOZAWotAABFDQBBDyEJIAohBgwDCwJAIAtBEWotAAAiDEHAw5kBai0AAEUNAEEQIQkgCiEGDAMLAkAgC0ESai0AACIMQcDDmQFqLQAARQ0AQREhCSAKIQYMAwsCQCALQRNqLQAAIgxBwMOZAWotAABFDQBBEiEJIAohBgwDCwJAIAtBFGotAAAiDEHAw5kBai0AAEUNAEETIQkgCiEGDAMLAkAgC0EVai0AACIMQcDDmQFqLQAARQ0AQRQhCSAKIQYMAwsCQCALQRZqLQAAIgxBwMOZAWotAABFDQBBFSEJIAohBgwDCwJAIAtBF2otAAAiDEHAw5kBai0AAEUNAEEWIQkgCiEGDAMLAkAgC0EYai0AACIMQcDDmQFqLQAARQ0AQRchCSAKIQYMAwsCQCALQRlqLQAAIgxBwMOZAWotAABFDQBBGCEJIAohBgwDCwJAIAtBGmotAAAiDEHAw5kBai0AAEUNAEEZIQkgCiEGDAMLAkAgC0Ebai0AACIMQcDDmQFqLQAARQ0AQRohCSAKIQYMAwsCQCALQRxqLQAAIgxBwMOZAWotAABFDQBBGyEJIAohBgwDCwJAIAtBHWotAAAiDEHAw5kBai0AAEUNAEEcIQkgCiEGDAMLAkAgC0Eeai0AACIMQcDDmQFqLQAARQ0AQR0hCSAKIQYMAwsCQCALQR9qLQAAIgxBwMOZAWotAABFDQBBHiEJIAohBgwDCwJAIAtBIGotAAAiDEHAw5kBai0AAEUNAEEfIQkgCiEGDAMLIApBwABqIQsgCkEgaiIGIQogCyAISQ0ACwsgByAGayEKIAUgBmohCSAFIAdqIQ1BASELA0AgCiALRg0CIAkgC2ohDCALQQFqIQsgDC0AACIMQcDDmQFqLQAARQ0ACyALQX5qIQkLIAEgBEEBaiAJIAZqIgtqIgo2AmggASAIIAtrNgJcIAEgBUEBaiALajYCWAJAIAzAQQBIDQAgDEHcAEYNACAKIARrIQcgASgCYCAEIAEoAmxraiELQYCAgIB4IQxBACEJDAILIANBCGogASAEEKkCIAMoAgwhCwJAIAMoAggiDEGBgICAeEYNACADLQAUIQkgAygCECEHDAILIABBAToAACAAIAs2AgQMAgtBACEJIAFBADYCXCABIA02AlggASAHIARqNgJoIAEoAmAgBCABKAJsa2ohC0GAgICAeCEMCwJAAkACQEEBIAsgByACEQwAIgpB/wFxQaQBRg0AIAlBAXENAQwCCyABKAJ0QQhqIAsgBxDeAyEOAkAgDEGAgICAeEYNACAMIAsQvSILAkAgASgCCEEKRg0AIAFBCGoQigkLIAEgDjcDECABQQI2AgggAEGAlgE7AQAMAgsgASgCeCEJAkACQAJAAkACQAJAAkACQAJAAkAgCkH/AXFBtH9qDkkACQkJCQkJCQkJCQkJCQkJCQkJCQkJAQkJCQkJCQkJCQkJCQkJAgoKCgoKCgoKCgoKCQoKCgMECgoKCgoKCgoKCgUGBwgKCgoBCgsgCUGIBXFFDQkMCAsgCUEIcUUNCAwHCyAJQYgCcUUNBwwGCyAJQQhxRQ0GDAULIAlBCHFFDQUMBAsgCUEIcUUNBAwDCyAJQQhxRQ0DDAILIAlBCHFFDQIMAQsgCUEIcUUNAQsgAyAHNgIsIAMgCzYCKCADIAw2AiQgAyADQSRqENAdNwMQIANBnYCAgHg2AgggACABKAJoIAQgA0EIahD5IgwBCyAAQQA6AAAgACAKOgABIAxBgICAgHhGDQAgDCALEL0iCyADQTBqJAALyw8BDX8jAEGQAmsiAiQAIAEoAsABIQMCQAJAAkAgAS0AyAEiBEHfAEYNACAEQeYARw0BIAEQ4w4gAkEDOgBAIAIgAzYCOCACIAEoArwBNgI8IAJBKGogASACQThqQQBBABBnIAIoAiwhBSACKAIoIQQMAgsgARDjDiACQTBqIAEgA0EAENkGIAIoAjQhBSACKAIwIQQMAQsgAkEgaiABEHNBASEEIAIoAiQhBgJAIAIoAiBBAXENAAJAIAYoAgAiBEEeRg0AQQAhBwJAIAEtAIEBQSBxRQ0AAkAgAS0AyAEiBUE1Rg0AIAVBEkcNAQsgASgCeCEEIAJBoAFqIAEQkwMgASAEQQFyNgJ4IAJBGGogARC0BCACKAIcIQcCQAJAAkAgAigCGEEBcQ0AIAEQ4w4CQAJAIAEtAMgBRQ0AIAcQoCIMAQsgBw0CCyABIAJBoAFqEKAGQQAhBwwCCyACIAc2AowBIAJBATYCiAEgASACQaABahCgBiACQYgBahDuHkEAIQcMAQsgASABKAJ4QX5xIARBAXFyNgJ4IAJBoAFqEKshCyAGKAIAIQQLAkACQAJAAkACQAJAAkACQAJAAkAgBEF0aiIEQQxHDQACQCAGKAIEQYCAgIB4Rg0AIAEtAMgBIgUNAgwECyACQaABakEYaiAGQQRqIgRBGGopAgA3AwAgAkGgAWpBEGogBEEQaikCADcDACACQaABakEIaiAEQQhqKQIANwMAIAIgBCkCADcDoAECQAJAAkACQCAHRQ0AIAEtAMgBIgQNASABEOMOCyACKAKsASEBIAIoArgBIQQgAigCtAEhAyACKAKwASEIQQhBwAAQmSIiBQ0BDAoLIAEoAsQBIQUgASgCwAEhAyACQcQAaiAEEIYeQQEhBCACQQE2AowBIAJBlPObATYCiAEgAkIBNwKUASACQfcGrUIghkGh2pgBrYQ3A2ggAiACQegAajYCkAEgAkHQAGogAkGIAWoQjRcgAkHkAGogAkHMAGooAgA2AgAgAiACKQJENwJcIAMgBSACQdAAahCEFyEFAkAgAS0AyAFBogFHDQAgARDXEiEDIAEQ4w4gASADEPoSCyACQawBahCaISACQaABahCdIQwBCyAFQRg2AgAgBSACKQOgATcCBCAFIAc2AiAgBSAENgIcIAUgAzYCGCAFIAg2AhQgBSABNgIQIAVBDGogAkGoAWooAgA2AgBBACEECyACKAK8ARCeIkEBIQFBACEJIARFDQkMBgsgAS0AyAEiBUUNAQsgB0UNCCABKALEASEDIAEoAsABIQggAkH8AGogBRCGHkEBIQQgAkEBNgKkASACQZTzmwE2AqABIAJCATcCrAEgAkH3Bq1CIIZBodqYAa2ENwNQIAIgAkHQAGo2AqgBIAJBiAFqIAJBoAFqEI0XIAJBnAFqIAJBhAFqKAIANgIAIAIgAikCfDcClAEgCCADIAJBiAFqEIQXIQUCQCABLQDIAUGiAUcNACABENcSIQQgARDjDiABIAQQ+hJBASEEC0EBIQlBASEBDAQLIARBDkcNACAGQQhqQfy9mwFBBhCjHA0BC0EAIQlBBSEEIAYhCgwBCyACQRBqIAYQ0gNBASEJQQAhBCACKAIUIQUgAigCECEKCyACQfsAaiACQaABakECai0AADoAACACIAU2AnQgAiAKNgJwIAIgAi8AoAE7AHkgAiAEOgB4IAJBoAFqIAEQigUgBEF9aiELIAIoAqQBIQUCQAJAAkACQAJAIAIoAqABIgxBgICAgHhGDQAgAigCqAEhDSALQQJHDQEgCiEEAkADQAJAIAQoAgAiCEErRg0AIAhBMEYNAgwECyAEKAIEIQQMAAsLIAEoArwBIQ4QsCEhBCACQgA3ArABIAIgBDYCrAEgAkIANwK4ASACQQA2AqgBIAJCgICAgMAANwKgAUEIQSgQmSIiCEUNBiAIIAc2AiAgCEEANgIcIAggDjYCGCAIIAM2AhQgCCAKNgIQIAggDTYCDCAIIAU2AgggCCAMNgIEIAhBAzYCAEEIQcAAEJkiIgRFDQYgBEEAOgAQIAQgDjYCDCAEIAM2AgggBCAINgIEIARBMDYCACACQaABahC3IEEBIQgMAgtBASEEIAxBgICAgHhHDQMgC0ECRw0DDAILIAEoArwBIQogAkIANwK4ASACQQM6ALQBQQAhCCACQQA2ArABIAJCADcCwAEgAkIANwKoASACQoCAgIDAADcCoAFBCEHAABCZIiIERQ0EIAQgDTYCDCAEIAU2AgggBCAMNgIEIARBFzYCACAEIAIpA3A3AxAgBCAHNgIoIARBADYCJCAEIAo2AiAgBCADNgIcIARBGGogAkHwAGpBCGooAgA2AgAgAkGgAWoQtCALIAJBBToAqAEgAiAENgKgASACQQhqIAEgAkGgAWpBAEEAEGcgAigCDCEFIAIoAgghBCAIRQ0EAkAgDEGAgICAeEciAQ0AIAtBAkYNAQsgAQ0EDAELIAJB8ABqEJohCyAJIQELIAcQniIgAUUNBQwCCwALIAlFDQNBASEJCwJAAkAgBigCAEEYRw0AIAlFDQEgBkEEahC1IAwBCyAGEMMGCyAGQcAAQQgQvRMMAgtBACEECyAGIQULIAAgBTYCBCAAIAQ2AgAgAkGQAmokAAumDgEEfwJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCwkAAQIDBAUGBwgJCQsgAS0AnAEhAiABQQA6AJwBIAEgACgCKCIDENMDIAMgARBRAkAgASgCAEUNACADKAIAQRpHDQAgASADQQhqIgQQwwUiBUUNACADEOQBIANBOGogBUE4aikDADcDACADQTBqIAVBMGopAwA3AwAgA0EoaiAFQShqKQMANwMAIANBIGogBUEgaikDADcDACADQRhqIAVBGGopAwA3AwAgA0EQaiAFQRBqKQMANwMAIAQgBUEIaikDADcDACADIAUpAwA3AwAgBUHAAEEIEL0TCwJAIAAoAghBAkkNACABIAAoAgwiABDTAyAAIAEQUSABKAIARQ0AIAAoAgBBGkcNACABIABBCGoiBRDDBSIDRQ0AIAAQ5AEgAEE4aiADQThqKQMANwMAIABBMGogA0EwaikDADcDACAAQShqIANBKGopAwA3AwAgAEEgaiADQSBqKQMANwMAIABBGGogA0EYaikDADcDACAAQRBqIANBEGopAwA3AwAgBSADQQhqKQMANwMAIAAgAykDADcDACADQcAAQQgQvRMLIAEgAjoAnAEPCyAAKAIIQQFHDQcgASAAKAIMIgAQ0wMgACABEFEgASgCAEUNByAAKAIAQRpHDQcgASAAQQhqIgMQwwUiAUUNByAAEOQBIABBOGogAUE4aikDADcDACAAQTBqIAFBMGopAwA3AwAgAEEoaiABQShqKQMANwMAIABBIGogAUEgaikDADcDACAAQRhqIAFBGGopAwA3AwAgAEEQaiABQRBqKQMANwMAIAMgAUEIaikDADcDACAAIAEpAwA3AwAgAUHAAEEIEL0TDwsgASAAKAIEIgAQ0wMgACABEFEgASgCAEUNBiAAKAIAQRpHDQYgASAAQQhqIgMQwwUiAUUNBiAAEOQBIABBOGogAUE4aikDADcDACAAQTBqIAFBMGopAwA3AwAgAEEoaiABQShqKQMANwMAIABBIGogAUEgaikDADcDACAAQRhqIAFBGGopAwA3AwAgAEEQaiABQRBqKQMANwMAIAMgAUEIaikDADcDACAAIAEpAwA3AwAgAUHAAEEIEL0TDwsCQCAAKAIEIgAoAgBBA0cNACAAQQRqIAEQwAcPCyAAIAEQ3gcPCyABIAAoAgQiABDTAyAAIAEQUSABKAIARQ0EIAAoAgBBGkcNBCABIABBCGoiAxDDBSIBRQ0EIAAQ5AEgAEE4aiABQThqKQMANwMAIABBMGogAUEwaikDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAyABQQhqKQMANwMAIAAgASkDADcDACABQcAAQQgQvRMPCyABIAAoAgQiABDTAyAAIAEQUSABKAIARQ0DIAAoAgBBGkcNAyABIABBCGoiAxDDBSIBRQ0DIAAQ5AEgAEE4aiABQThqKQMANwMAIABBMGogAUEwaikDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAyABQQhqKQMANwMAIAAgASkDADcDACABQcAAQQgQvRMPCyABIAAoAgQiABDTAyAAIAEQUSABKAIARQ0CIAAoAgBBGkcNAiABIABBCGoiAxDDBSIBRQ0CIAAQ5AEgAEE4aiABQThqKQMANwMAIABBMGogAUEwaikDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAyABQQhqKQMANwMAIAAgASkDADcDACABQcAAQQgQvRMPCyABIAAoAgQiABDTAyAAIAEQUSABKAIARQ0BIAAoAgBBGkcNASABIABBCGoiAxDDBSIBRQ0BIAAQ5AEgAEE4aiABQThqKQMANwMAIABBMGogAUEwaikDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAyABQQhqKQMANwMAIAAgASkDADcDACABQcAAQQgQvRMPCyABIAAoAgQiABDTAyAAIAEQUSABKAIARQ0AIAAoAgBBGkcNACABIABBCGoiAxDDBSIBRQ0AIAAQ5AEgAEE4aiABQThqKQMANwMAIABBMGogAUEwaikDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAyABQQhqKQMA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AmsiAyQAAkACQAJAAkACQAJAAkACQAJAIAEQgQpB+wBHDQAgA0EIaiABKAIAIgRB2ABqKAIANgIAIAMgBCkCUDcDACAEQdAAaiEFAkACQAJAIAIoAggiBkUNACACIAZBf2oiBzYCCCADIAIoAgQgB0EDdGoiCCgCBCIJNgIUIAMgCCgCACIHNgIQIAdBAkkNASABEPQdDQIgA0GkAWogBUEIaigCADYCACADQZABakEIaiADQQhqKAIANgIAIAMgAykDADcDkAEgAyAFKQIANwKcASADQRo2AuwBIAAgASgCBCABKAIIIANBkAFqIANB7AFqEKENDAkLIANBpAFqIAVBCGooAgAiBDYCACADQZABakEIaiAENgIAIAMgBSkCACIRNwKcASADIBE3A5ABIANBGzYC7AEgACABKAIEIAEoAgggA0GQAWogA0HsAWoQoQ0MCQsgA0GkAWogBUEIaigCACIENgIAIANBkAFqQQhqIAQ2AgAgAyAFKQIAIhE3ApwBIAMgETcDkAEgA0EbNgLsASAAIAEoAgQgASgCCCADQZABaiADQewBahChDQwHCyADQewBaiABEOwCIANBGTYCdCADQQU2AlggA0EYaiADQewBaiADQdgAaiADQfQAahDhBQJAAkACQAJAAkAgBSgCACIKIAEoAggiC0YNACABEIEKQSxHDQIgARD0HQ0DIANBpAFqIAVBCGooAgA2AgAgA0GQAWpBCGogA0EIaigCADYCACADIAMpAwA3A5ABIAMgBSkCADcCnAEgA0EaNgLsASAAIAEoAgQgCyADQZABaiADQewBahChDQwBCyADQaQBaiAFQQhqKAIANgIAIANBkAFqQQhqIANBCGooAgA2AgAgAyADKQMANwOQASADIAUpAgA3ApwBIANBGjYC7AEgACABKAIEIAogA0GQAWogA0HsAWoQoQ0LQQEhBEEBIQoMBgsgAygCHCEMIAMoAhgiBEEiRw0BQQAhDUEBIQ5BACEEQQAhCgwECyABEIEKIQogAygCGCEPAkAgCkH9AEcNACADKAIcIQwCQCAPQSJHDQBBACEEQQEhDkEBIQ1BACEKDAULAkBBOEUNACAAQQhqIANBGGpBCGpBOPwKAAALIAAgDDYCBCAAIA82AgAMCAsCQAJAAkAgD0EiRiIKDQAgD0EZRw0BIAQtAGcNAkHAAEUNCiAAIANBGGpBwAD8CgAADAoLIAMoAhwhDAwECyADKAIcIQECQEE4RQ0AIABBCGogA0EYakEIakE4/AoAAAsgACABNgIEIAAgDzYCAAwICyADKAI0IAMoAjhBAUEBENASQQAhDAwCCwJAQThFDQAgAEEIaiADQRhqQQhqQTj8CgAACyAAIAw2AgQgACAENgIADAYLQfyFhQFBJEGghoUBEIwaDAQLIANB7AFqIAEQ7AIgA0GQAWogA0HsAWogA0HYAGogA0H0AGoQ4QUgAygClAEhDwJAIAMoApABIgRBIkYNAAJAQThFDQAgAEEIaiADQZABakEIakE4/AoAAAsgACAPNgIEIAAgBDYCAEEBIQQMAgtBASEEQQIhDUEAIQ4LAkACQCAFKAIAIAtGDQAgARCBCkH9AEYNAQsgA0GkAWogBUEIaigCADYCACADQZABakEIaiADQQhqKAIANgIAIAMgAykDADcDkAEgAyAFKQIANwKcASADQRo2AuwBIAAgASgCBCALIANBkAFqIANB7AFqEKENDAELQQEhEAJAIAEQ9B1FDQAgARCBCkE/Rw0AIAEQ2wgaQQAhEAsgA0HkAWogBUEIaigCADYCACADQdABakEIaiADQQhqKAIANgIAIAMgAykDADcD0AEgAyAFKQIANwLcASAOIAwgD01yDQEgA0EYNgLsASAAIAEoAgQgCyADQdABaiADQewBahChDQsgCkUNAiAERQ0CIAMoAhhBIkYNAiADKAI0IAMoAjhBAUEBENASDAILIAkhAQJAAkACQAJAAkACQAJAAkAgB0F+ag4KAAcHAQcCAwQFBgALIAlBBGohAQwGCyAJQRxqIQEMBQsgCUHYAGohAQwECyAJQShqIQEMAwsgCUEwaiEBDAILIAlBDGohAQwBCyAJQQxqIQELIANBkAFqQRRqIAVBCGooAgA2AgAgA0GQAWpBCGoiBCABQQhqKAIANgIAIANB7AFqQRRqIANB0AFqQQhqKQMANwIAIANBiAJqIANB0AFqQRBqKQMANwIAIAMgAykD0AE3AvgBQQAtAOD2nQEaIAMgBSkCADcCnAEgAyABKQIANwOQAUEIEIQBIgFFDQAgASAJNgIEIAEgBzYCACADQZwCaiAEKQMANwIAIANBpAJqIANBkAFqQRBqKQMANwIAIAMgAykDkAE3ApQCIAMgEDoA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KAIAIgYgAEEobGohBwNAAkACQAJAAkACQAJAAkAgBigCAA4FBgABAgUGCyAGKAIEQQFHDQUgBigCCCIAKAIAQRpHDQMgAkGQAWogASgCACABKAIEIABBCGoiBBCCDSACKAKQAUEyRg0FIAAQ0QEgAEE4aiACQZABakE4aikDADcDACAAQTBqIAJBkAFqQTBqKQMANwMAIABBKGogAkGQAWpBKGopAwA3AwAgAEEgaiACQZABakEgaikDADcDACAAQRhqIAJBkAFqQRhqKQMANwMAIABBEGogAkGQAWpBEGopAwA3AwAgBCACQZABakEIaikDADcDACAAIAIpA5ABNwMADAULIAYoAgQiACgCAEEaRw0BIAJB0ABqIAEoAgAgASgCBCAAQQhqIgQQgg0gAigCUEEyRg0EIAAQ0QEgAEE4aiACQdAAakE4aikDADcDACAAQTBqIAJB0ABqQTBqKQMANwMAIABBKGogAkHQAGpBKGopAwA3AwAgAEEgaiACQdAAakEgaikDADcDACAAQRhqIAJB0ABqQRhqKQMANwMAIABBEGogAkHQAGpBEGopAwA3AwAgBCACQdAAakEIaikDADcDACAAIAIpA1A3AwAMBAsCQCAGKAIEIggtAGxBAkcNACAIQcAAaiEAA0AgACgCGCIALQAsQQJGDQALCwJAIAhBhAFqKAIAIgRFDQAgCEGAAWooAgAhACAEQdgAbCEEA0ACQAJAAkAgACgCAEEFRw0AIABBBGooAgAiBSgCAEEaRw0BIAJBkAJqIAEoAgAgASgCBCAFQQhqIgkQgg0gAigCkAJBMkYNAiAFENEBIAVBOGogAkGQAmpBOGopAwA3AwAgBUEwaiACQZACakEwaikDADcDACAFQShqIAJBkAJqQShqKQMANwMAIAVBIGogAkGQAmpBIGopAwA3AwAgBUEYaiACQZACakEYaikDADcDACAFQRBqIAJBkAJqQRBqKQMANwMAIAkgAkGQAmpBCGopAwA3AwAgBSACKQOQAjcDAAwCCyAAIAEQ7QgMAQsgBSABEEYLIABB2ABqIQAgBEGof2oiBA0ACwsCQCAIQZgBaigCACIERQ0AIAhBlAFqKAIAIQAgBEEobCEEA0AgASAAEMoCIABBKGohACAEQVhqIgQNAAsLIAgtADwiAEEGRg0DIABBAkcNAyAIQRBqIQAD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AggOAwQQBQQLIAEtABxBAkcNAgwPCyABKAIEIgEoAgAiA0EDRg0GIAMOAwwNCwwLIAEtABxBAkYNDQsgAkEANgIoIAJCgICAgBA3AiAgAkGw9poBNgIMIAJCoICAgA43AhAgAiACQSBqNgIIIAFBCGogAkEIahDPHA0HIAAgAikCIDcCACAAQQhqIAJBIGpBCGooAgA2AgAMDQsgAkHQAGogASgCKBCPAgJAAkAgAigCUEGAgICAeEYNACACQcAAakEIaiACQdAAakEIaigCADYCACACIAIpAlA3A0AMAQsgAkEANgJIIAJCgICAgBA3A0ALIAJBAjYCDCACQaj4mgE2AgggAkICNwIUIAJB5wStQiCGIAFBEGqthDcDKCACQewErUIghiACQcAAaq2ENwMgIAIgAkEgajYCECAAIAJBCGoQiAogAigCQCACKAJEEL0iDAwLIAJBCGogASgCKBCPAgJAAkAgAigCCEGAgICAeEYNACACQTBqQQhqIAJBCGpBCGooAgA2AgAgAiACKQIINwMwDAELIAJBADYCOCACQoCAgIAQNwMwCyACQdAAaiABKAIMEI8CAkACQCACKAJQQYCAgIB4Rg0AIAJBwABqQQhqIAJB0ABqQQhqKAIANgIAIAIgAikCUDcDQAwBCyACQQA2AkggAkKAgICAEDcDQAsgAkECNgIMIAJBqPiaATYCCCACQgI3AhQgAkHsBK1CIIYiCCACQcAAaq2ENwMoIAIgCCACQTBqrYQ3AyAgAiACQSBqNgIQIAAgAkEIahCICiACKAJAIAIoAkQQvSIgAigCMCACKAI0EL0iDAsLAkAgASgCCA0AIAJBATYCDCACQcD4mgE2AgggAkIBNwIUIAJB5wStQiCGIAFBEGqthDcDICACIAJBIGo2AhAgACACQQhqEIgKDAsLIAJBIGogASgCDBCPAgJAAkAgAigCIEGAgICAeEYNACACQdAAakEIaiACQSBqQQhqKAIANgIAIAIgAikCIDcDUAwBCyACQQA2AlggAkKAgICAEDcDUAsgAkEBNgIMIAJBwPiaATYCCCACQgE3AhQgAkHsBK1CIIYgAkHQAGqthDcDQCACIAJBwABqNgIQIAAgAkEIahCICiACKAJQIAIoAlQQvSIMCgsgAS0AGEEFRw0ICyABKAIQIQEMAAsLIAEoAggNBSACIAFBEGoQkxMgAigCACEEAkACQAJAIAIoAgQiBUUNACAEIAVqIQYgBCEBA0AgAUEBaiEDAkACQCABLAAAIgdBf0wNACADIQEMAQsCQCAHQWBJDQACQCAHQW1HDQAgAyAGRg0EIAFBAmogBkYNBCABLQABQZ8BSw0FIAFBA2ohAQwCCyADIAFBAmogAyAGRhsiASABIAZHaiEBIAdBcEkNASABIAEgBkdqIQEMAQsgAyABQQJqIAMgBkYbIQELIAEgBkcNAAsLIARFDQAgAkEIaiAFQQFBARCjDiACKAIMIQMgAigCCEEBRg0BIAIoAhAhAQJAIAVFDQAgASAEIAX8CgAACyAAIAU2AgggACABNgIEIAAgAzYCAAwICyAAQYCAgIB4NgIADAcLIAMgAigCEEG45JsBENggAAtBmNSbAUE3IAJB0ABqQcj2mgFB0NSbARDqEAALIAMgAigCEEG45JsBENggAAsgAkEIaiABKAIgEI8CAkACQCACKAIIQYCAgIB4Rg0AIAJBMGpBCGogAkEIakEIaigCADYCACACIAIpAgg3AzAMAQsgAkEANgI4IAJCgICAgBA3AzALIAJB0ABqIAEoAgQQjwICQAJAIAIoAlBBgICAgHhGDQAgAkHAAGpBCGogAkHQAGpBCGooAgA2AgAgAiACKQJQNwNADAELIAJBADYCSCACQoCAgIAQNwNACyACQQI2AgwgAkGo+JoBNgIIIAJCAjcCFCACQewErUIghiIIIAJBwABqrYQ3AyggAiAIIAJBMGqthDcDICACIAJBIGo2AhAgACACQQhqEIgKIAIoAkAgAigCRBC9IiACKAIwIAIoAjQQvSIMAwsgAkHQAGogASgCIBCPAgJAAkAgAigCUEGAgICAeEYNACACQcAAakEIaiACQdAAakEIaigCADYCACACIAIpAlA3A0AMAQsgAkEANgJIIAJCgICAgBA3A0ALIAJBAjYCDCACQaj4mgE2AgggAkICNwIUIAJB5wStQiCGIAFBCGqthDcDKCACQewErUIghiACQcAAaq2ENwMgIAIgAkEgajYCECAAIAJBCGoQiAogAigCQCACKAJEEL0iDAILIABBgICAgHg2AgAMAQsgAEGAgICAeDYCAAsgAkHgAGokAAvPDAIWfwJ+IwBB0AJrIgYkACABrSIcQv//////////P3wgHIAhHAJA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xAA2AgAgBQ0DIAJBCGoQ5BYMAwsgAEGBgMQANgIAIAAgAykCADcCBCAAQRxqIANBGGopAgA3AgAgAEEUaiADQRBqKQIANwIAIABBDGogA0EIaikCADcCAAwCCyAAQYWAxAA2AgAgACADKQIANwIEIABBHGogA0EYaigCADYCACAAQRRqIANBEGopAgA3AgAgAEEMaiADQQhqKQIANwIADAELIABBhIDEADYCAEE4RQ0AIABBBGogAkEIakE4/AoAAAsgAkHgAmokAAuaDwIMfwF+IwBB8AJrIgMkACADIAI2AhwCQAJAAkAgAS0AyAEiAkE+Rg0AIAJBEkcNAQsgAS0AgQFBIHFFDQAgASgCeCEEIANBIGogARCTAyABIAEoAnhBAXI2AnggA0EQaiABQQBBABDQAiADKAIUIQUCQAJAAkAgAygCEEEBcUUNACADQYGAgIB4NgKQASADIAU2ApQBIAEgA0EgahCgBgwBCwJAAkACQCABLQCAAUEBcUUNACAFKAIIQQFHDQAgBSgCBCICKAIgDQAgBSgCECACKAIEa0EBSw0AQYCAgIB4IQIgA0GAgICAeDYCkAEMAQsCQCABLQDIASICRQ0AIAEoAsQBIQYgASgCwAEhByADQaQBaiACEIYeIANBATYCtAIgA0GU85sBNgKwAiADQgE3ArwCIANB9watQiCGQaHamAGthDcDsAEgAyADQbABajYCuAIgA0HwAWogA0GwAmoQjRcgA0GEAmogA0GsAWooAgA2AgAgAyADKQKkATcC/AEgByAGIANB8AFqEIQXIQYCQCABLQDIAUGiAUcNACABENcSIQIgARDjDiABIAIQ+hILQYGAgIB4IQIgA0GBgICAeDYCkAEgAyAGNgKUAQwBCyABEOMOIANBsAJqIAEQzgIgAygCtAIhBwJAAkACQAJAIAMoArACIghBgICAgHhGDQAgAygCuAJBBnQhCSAIQQZ0IQogA0HgAmohC0EAIQZBACECAkADQCAHIAZqIQwgCSACRg0BIAcgAmohDQJAQcAARSIODQAgA0HwAWogDUHAAPwKAAALAkAgDg0AIANBsAJqIA1BwAD8CgAACyALEPkfAkBBKEUNACAMIANB8AFqQSj8CgAACyAGQShqIQYgAkHAAGohAgwACwsgA0EINgK8ASADQQA2AsQBQQBBCBDuIiADQQg2AsgBIANBCDYCwAEgCkEobiEGIAchAgJAIAhFDQAgByECIAogBkEobCINRg0AIAcgCiANEOEdIgJFDQILIAMgAjYCtAEgAyAGNgKwASADIAwgB2tBKG42ArgBIANBvAFqENMSAkACQAJAIAEtAMgBIgJBAUcNACABEOMOQQAhAiABLQDIASIGQQlHDQIgA0EIaiABQQkQswQgAygCDCECIAMoAghBAXFFDQEgA0GBgICAeDYCkAEgAyACNgKUAQwFCyABKALEASEGIAEoAsABIQcgA0HMAWogAhCGHiADQQE2ArQCIANBlPObATYCsAIgA0IBNwK8AiADQfcGrUIghkHgqJsBrYQ3A+gBIAMgA0HoAWo2ArgCIANB8AFqIANBsAJqEI0XIANBhAJqIANB1AFqKAIANgIAIAMgAykCzAE3AvwBIAcgBiADQfABahCEFyECAkAgAS0AyAFBogFHDQAgARDXEiEGIAEQ4w4gASAGEPoSCyADQYGAgIB4NgKQASADIAI2ApQBDAQLIAEtAMgBIQYLIAMgAjYC2AECQCAGQf8BcUEbRw0AIAEQ4w4gA0GQAWpBCGogA0GwAWpBCGooAgA2AgAgAyACNgKgASADIAU2ApwBIAMgAykCsAEiDzcDkAEgD6chAgwGCyABKALEASECIAEoAsABIQcgA0HcAWogBhCGHiADQQE2ArQCIANBlPObATYCsAIgA0IBNwK8AiADQfcGrUIghkGorpsBrYQ3A+gBIAMgA0HoAWo2ArgCIANB8AFqIANBsAJqEI0XIANBhAJqIANB5AFqKAIANgIAIAMgAykC3AE3AvwBIAcgAiADQfABahCEFyECAkAgAS0AyAFBogFHDQAgARDXEiEGIAEQ4w4gASAGEPoSCyADQYGAgIB4NgKQASADIAI2ApQBIANB2AFqENghDAILIANBgYCAgHg2ApABIAMgBzYClAEMAgsACyADQbABahCCIAtBgYCAgHghAgsgBRCdIgsCQAJAIAJBgICAgHhqDgIAAQMLIAEgA0EgahCgBiADKAKQAUGBgICAeEcNAyADQZABahDgHAwDCyADKAKQASECIAEgA0EgahCgBiACQYGAgIB4Rw0CCyADQZABahDgHAwBCyABIAEoAnhBfnEgBEEBcXI2AnggAygCkAEhAiADKAKgASEHIAMoApwBIQYgAykC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wABqQQhqKQMANwMAAkACQCADDQAgASEEIAYhBwwBCwJAIAlCAFINACAIpyIDIAMoAgAiA0EBajYCACADQX9MDQMLIAIgCDcDgAEgAiACQYABahCUEyACKAIAIAIoAgQQ+hchCgJAIAIpA4ABIg1CA4NCAFINACANpyIDIAMoAgAiB0F/ajYCACAHQQFHDQAgAyADKAIQEOkdCwJAIAxCAFINACALpyIDIAMoAgAiA0EBajYCACADQX9MDQMLQQAtAOD2nQEaQcAAEIQBIgdFDQIgB0EAOgAcIAcgBDYCGCAHQgA3AxAgByALNwMIIAdBGjYCAEEALQDg9p0BGkHAABCEASIERQ0CIARBADoAPCAEIAU2AjggBEIANwMwIAQgBjYCKCAEQgA3AyAgBEIANwMQIAQgATYCDCAEQQI2AgggBEEBNgIAIAQgAi8AgAE7AD0gBEE/aiACQYABakECai0AADoAAEEALQDg9p0BGkHAABCEASIFRQ0CIAVCADcDGCAFIAo3AxAgBUEANgIIIAVBGzYCACAFQSBqQgA3AwALQQAtAOD2nQEaIAIoAiwhASACKAIoIQZBwAAQhAEiA0UNASADQQA6ADwgAyAFNgI4IANCADcDMCADIAc2AiggA0IANwMgIANCADcDECADIAQ2AgwgA0ECNgIIIANBATYCACADIAIvAIABOwA9IANBP2ogAkGAAWpBAmotAAA6AAACQCAJQgBSDQAgCKciBSAFKAIAIgRBf2o2AgAgBEEBRw0AIAUgBSgCEBDpHQsCQCACKQMwIgtCA4NCAFINACALpyIFIAUoAgAiBEF/ajYCACAEQQFHDQAgBSAFKAIQEOkdCyAAIAE2AgwgACAGNgIIIAAgAzYCBCAAQRI2AgAgACACKQNANwMQIABBGGogAkHIAGopAwA3AwAgAEEgaiACQdAAaikDADcDACAAQShqIAJBwABqQRhqKQMANwMACyACQaABaiQADwsAC8AOAgd/AX4jAEEgayICJAACQAJAAkAgACgCACIDDQAgACgCECIARQ0BIABB4MubAUEBEJwGIQMMAgsCQAJAAkACQAJAAkAgACgCCCIEIAAoAgQiBUkNACAAKAIQIgNFDQEgA0HUtJcBQRAQnAZFDQEMBQsgACAEQQFqIgY2AgggAyAEai0AACEHIAAgACgCDEEBaiIINgIMAkAgCEH1A0kNAAJAIAAoAhAiA0UNACADQeS0lwFBGRCcBg0GCyAAQQE6AAQMAgsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAHQa9/ag4pCwoBDwEQAQEBAQEBAQEBAQQHCAEJAQEDBAMBBAMEAwIBAQQDAQEBBAMACyAHQb9/ag4CDQQACyAAKAIQIgNFDREgA0HUtJcBQRAQnAYNFQwRCyAAKAIQIgRFDRNBASEDIARB3LCbAUEBEJwGRQ0TDBYLIAAgBxDICQ0TDBILIAYgBU8NECADIAZqLQAAQe4ARg0BDBALIAAgARCNCw0RDBALIAAgBEECajYCCCAAKAIQIgRFDQ5BASEDIARBuJubAUEBEJwGRQ0ODBILIAJBGGogABCgCwJAIAIoAhgiAw0AIAItABwhBAJAIAAoAhAiAUUNAEEBIQMgAUHktJcBQdS0lwEgBEEBcSIFG0EZQRAgBRsQnAYNEwsgACAEOgAEDA0LIAJBCGogAyACKAIcEOIHAkACQAJAIAIoAghBAUcNACACKQMQIglCAVYNACAJpw4CAQIBCyAAKAIQIgNFDQ0gA0HUtJcBQRAQnAYNEQwNCyAAKAIQIgNFDQ8gA0HE0JsBQQUQnAYNEAwPCyAAKAIQIgNFDQ4gA0HJ0JsBQQQQnAYNDwwOCyACQRhqIAAQoAsCQCACKAIYIgMNACACLQAcIQQCQCAAKAIQIgFFDQBBASEDIAFB5LSXAUHUtJcBIARBAXEiBRtBGUEQIAUbEJwGDRILIAAgBDoABAwMCyACQQhqIAMgAigCHBDiBwJAIAIoAgggAikDECIJQoCAgIAQVHFBAUcNAEGAgMQAIAmnIgMgA0GAsANzQYCAvH9qQYCQvH9JGyIDQYCAxABGDQAgACgCECADEKgFDQ8MDgsgACgCECIDRQ0KIANB1LSXAUEQEJwGDQ4MCgsCQCABDQAgACgCECIERQ0AQQEhAyAEQbuymwFBARCcBg0QCwJAIAAoAhAiBEUNAEEBIQMgBEGKnJsBQQEQnAYNEAsgABDiAw0NDAgLIAYgBU8NACADIAZqLQAAQeUARg0BCwJAIAENACAAKAIQIgRFDQBBASEDIARBu7KbAUEBEJwGDQ4LAkAgACgCECIERQ0AQQEhAyAEQY+cmwFBARCcBg0OCyAHQdIARw0BDAULIAAgBEECajYCCCAAEOIDDQoMCQsgACgCECIDRQ0DIANBlbWXAUEEEJwGDQkMAwsCQCABDQAgACgCECIERQ0AQQEhAyAEQbuymwFBARCcBg0LCwJAIAAoAhAiBEUNAEEBIQMgBEHQy5sBQQEQnAYNCwtBASEDIAAQlBBBAXENCiAAKAIQIgRFDQdBASEDIARB0cubAUEBEJwGRQ0DDAoLAkAgAQ0AIAAoAhAiBEUNAEEBIQMgBEG7spsBQQEQnAYNCgsCQCAAKAIQIgRFDQBBASEDIARB+MCbAUEBEJwGDQoLIAIgABDTDkEBIQMgAigCAEEBcQ0JAkAgAigCBEEBRw0AIAAoAhAiBEUNB0EBIQMgBEHey5sBQQEQnAYNCgsgACgCECIERQ0GQQEhAyAEQbOBnQFBARCcBkUNAgwJCwJAIAENACAAKAIQIgRFDQBBASEDIARBu7KbAUEBEJwGDQkLQQEhAyAAQQEQgwINCAJAIAAoAgAiBA0AIAAoAhAiAEUNCCAAQeDLmwFBARCcBiEDDAkLAkAgACgCCCIFIAAoAgRJDQAgACgCECIERQ0DIARB1LSXAUEQEJwGRQ0DDAkLIAAgBUEBajYCCAJAAkACQCAEIAVqLQAAQa1/ag4DAgEEAAsgACgCECIDRQ0EIANB1LSXAUEQEJwGDQgMBAsCQCAAKAIQIgRFDQBBASEDIARB+MCbAUEBEJwGDQoLQQEhAyAAEJQQQQFxDQkgACgCECIERQ0GQQEhAyAEQbOBnQFBARCcBkUNAgwJCwJAIAAoAhAiA0UNACADQdS1lwFBAxCcBg0HC0EBIQMgABCKB0EBcQ0IIAAoAhAiBEUNBSAEQde1lwFBAhCcBkUNAQwIC0EBIQMgAEEBEKECDQcLIAENAyAAKAIQIgRFDQNBASEDIARByMubAUEBEJwGRQ0DDAYLQQAhAyAAQQA6AAQgAEEANgIADAULQQAhAyAAQQA2AgAMBAsgACAHEMgJDQELQQAhAyAAKAIARQ0CIAAgACgCDEF/ajYCDAwCC0EBIQMMAQtBACEDCyACQSBqJAAgAwuSDQIDfwF+IwBBwABrIgQkAAJAAkACQAJAAkAgAkECag4DAQACAAsCQCABKAJEIgVFDQAgBEEwaiAFIAIgA2sgASgCSCgCHBELAAJAIAQoAjBBgICAgHhGDQAgBEEgakEIaiAEQTBqQQhqKAIAIgI2AgAgBCAEKQIwNwMgIAJBGGwhAyAEKAIkIQICQANAAkACQAJAAkACQAJAAkACQCADRQ0AIAJBCGooAgAhBSACQRBqLQAARQ0BAkAgBUUNACAEQTBqIAEgBRDiHCAELQAwQQRGDQAgBCkDMCIHQv8Bg0IEUg0GCyAEQTBqIAFB1dKbAUECEOQOIAQtADBBBEYNAiAEKQMwIgdC/wGDQgRRDQIgACAHNwIADA4LIABBBDoAAAwNCwJAIAVFDQAgBEEwaiABIAUQ4hwgBC0AMEEERg0AIAQpAzAiB0L/AYNCBFINAgsgBEEwaiABQdPSmwFBAhDkDgJAIAQtADBBBEYNACAEKQMwIgdC/wGDQgRRDQAgACAHNwIADA0LIARBCGogAhCUEyAEQTBqIAEgBCgCCCAEKAIMEOQOAkAgBC0AMEEERg0AIAQpAzAiB0L/AYNCBFENACAAIAc3AgAMDQsCQCACQQxqKAIAIgVFDQAgBEEwaiABIAUQ4hwgBC0AMEEERg0AIAQpAzAiB0L/AYNCBFINAwsgBEEwaiABEKYTIAQtADBBBEYNBSAEKQMwIgdC/wGDQgRRDQUgACAHNwIADAwLIAQgAhCUEyAEQTBqIAEgBCgCACAEKAIEEOQOAkAgBC0AMEEERg0AIAQpAzAiB0L/AYNCBFENACAAIAc3AgAMDAsgAkEMaigCACIFQQJNDQMgBEEwaiABIAVBfmoQ4hwgBC0AMEEERg0DIAQpAzAiB0L/AYNCBFENAyAAIAc3AgAMCwsgACAHNwIADAoLIAAgBzcCAAwJCyAAIAc3AgAMCAsgBEEwaiABQdfSmwFBAhDkDgJAIAQtADBBBEYNACAEKQMwIgdC/wGDQgRRDQAgACAHNwIADAgLIAEtAE0NACAEQTBqIAEQ3Q8gBC0AMEEERg0AIAQpAzAiB0L/AYNCBFINAgsgAkEYaiECIANBaGohAwwACwsgACAHNwIADAQLIABBBDoAAAwECyAAQQQ6AAAMAwtBGEEIEKohIQYQ6BohByAGQQE6ABAgBkIANwMIIAYgBzcDACAEQQE2AjggBCAGNgI0IARBATYCMEEAIQICQAJAA0ACQAJAAkACQAJAAkACQAJAIAJBGEYNACAGIAJqIgNBCGooAgAhBSADQRBqLQAARQ0BAkAgBUUNACAEQSBqIAEgBRDiHCAELQAgQQRGDQAgBCkDICIHQv8Bg0IEUg0GCyAEQSBqIAFB1dKbAUECEOQOIAQtACBBBEYNAiAEKQMgIgdC/wGDQgRRDQIgACAHNwIADAoLIABBBDoAAAwJCwJAIAVFDQAgBEEgaiABIAUQ4hwgBC0AIEEERg0AIAQpAyAiB0L/AYNCBFINAgsgBEEgaiABQdPSmwFBAhDkDgJAIAQtACBBBEYNACAEKQMgIgdC/wGDQgRRDQAgACAHNwIADAkLIARBGGogAxCUEyAEQSBqIAEgBCgCGCAEKAIcEOQOAkAgBC0AIEEERg0AIAQpAyAiB0L/AYNCBFENACAAIAc3AgAMCQsCQCADQQxqKAIAIgNFDQAgBEEgaiABIAMQ4hwgBC0AIEEERg0AIAQpAyAiB0L/AYNCBFINAwsgBEEgaiABEKYTIAQtACBBBEYNBSAEKQMgIgdC/wGDQgRRDQUgACAHNwIADAgLIARBEGogAxCUEyAEQSBqIAEgBCgCECAEKAIUEOQOAkAgBC0AIEEERg0AIAQpAyAiB0L/AYNCBFENACAAIAc3AgAMCAsgA0EMaigCACIDQQJNDQMgBEEgaiABIANBfmoQ4hwgBC0AIEEERg0DIAQpAyAiB0L/AYNCBFENAyAAIAc3AgAMBwsgACAHNwIADAYLIAAgBzcCAAwFCyAAIAc3AgAMBAsgBEEgaiABQdfSmwFBAhDkDgJAIAQtACBBBEYNACAEKQMgIgdC/wGDQgRRDQAgACAHNwIADAQLIAEtAE0NACAEQSBqIAEQ3Q8gBC0AIEEERg0AIAQpAyAiB0L/AYNCBFINAgsgAkEYaiECDAALCyAAIAc3AgALIARBMGoQjiAMAgsgAEEEOgAADAELIARBIGoQjiALIARBwABqJAALzQsCE38CfiMAQdACayIFJAAgAa0iGEL//////////z98IBiAIRgCQAJAIAFBgSBJDQBBAUEgIAFBAXJna0EBdiIGdCABIAZ2akEBdiEHDAELIAEgAUEBdmsiBkHAACAGQcAASRshBwsgAEFoaiEIIABBJGohCUEBIQpBACELQQAhDANAQQEhDUEAIQ4CQCABIAtNDQAgACALQRhsIg9qIRACQAJAIAEgC2siBiAHSQ0AAkAgBkECSQ0AAkACQAJAAkACQCAQKAIYIhEgECgCACISRw0AIBAoAiQgECgCDE8NAQwCCyARIBJJDQELQQIhE0EAIRQgBkECRg0CIAkgD2ohEkECIRMDQAJAAkAgEkEMaigCACIVIBFHDQAgEkEYaigCACASKAIATw0BDAULIBUgEUkNBAsgEkEYaiESIBUhESAGIBNBAWoiE0cNAAwCCwtBAiETQQEhFCAGQQJGDQEgCSAPaiESQQIhEwNAAkACQCASQQxqKAIAIhUgEUcNACASQRhqKAIAIBIoAgBJDQEMBAsgFSARTw0DCyASQRhqIRIgFSERIAYgE0EBaiITRw0AC0EBIRQLIAYhEwsgEyAHSQ0BAkAgFEUNACATQQJJDQAgE0EBdiEOIAggE0EYbCAPamohD0EAIRQDQEEAIQYDQCAQIAZqIhEoAgAhEiARIA8gBmoiFSgCADYCACAVIBI2AgAgBkEEaiIGQRhHDQALIBBBGGohECAPQWhqIQ8gFEEBaiIUIA5HDQALCyATIQYLIAZBAXRBAXIhDQwBCwJAIAQNACAGIAcgBiAHSRtBAXQhDQwBCyAQIAZBICAGQSBJGyIGIAIgA0EAQQAQ0AEgBkEBdEEBciENCyANQQF2IAtqrSALrSIZfCAYfiALIApBAXZrrSAZfCAYfoV5pyEOCwJAAkAgDEECSQ0AIAggC0EYbCIGaiEWIAAgBmohFwNAIAVBjgJqIAxBf2oiEGotAAAgDkkNAQJAAkACQAJAAkACQAJAIAVBBGogEEECdGooAgAiBkEBdiIVIApBAXYiD2oiFCADSw0AIAYgCnJBAXFFDQELIAAgCyAUa0EYbGohDAJAIAZBAXENACAMIBUgAiADIBVBAXJnQQF0QT5zQQAQ0AELAkAgCkEBcQ0AIAwgFUEYbGogDyACIAMgD0EBcmdBAXRBPnNBABDQAQsgBkECSQ0EIApBAkkNBCADIA8gFSAPIBVJIgYbIgpJDQQgDCAVQRhsaiIRIAwgBhshBgJAIApBGGwiEkUNACACIAYgEvwKAAALIAIgEmohEgJAIA8gFU8NACAWIQYDQAJAAkAgEkFoaiIVKAIAIg8gEUFoaiIKKAIAIhNGDQAgDyATSSERDAELIBJBdGooAgAgEUF0aigCAEkhEQsgBiAKIBUgERsiEikCADcCACAGQRBqIBJBEGopAgA3AgAgBkEIaiASQQhqKQIANwIAIBUgEUEYbGohEiAKIBFBAXNBGGxqIhEgDEYNAyAGQWhqIQYgEiACRw0ADAMLCyAKRQ0CIBEgF0YNAiACIRUDQAJAAkAgESgCACIKIBUoAgAiDEYNACAKIAxJIQoMAQsgESgCDCAVKAIMSSEKCyAGIBEgFSAKGyIMKQIANwIAIAZBEGogDEEQaikCADcCACAGQQhqIAxBCGopAgA3AgAgBkEYaiEGIBUgCkEBc0EYbGoiFSASRg0EIBEgCkEYbGoiESAXRw0ADAQLCyAUQQF0IQoMBAsgESEGCyACIRULIBIgFWsiEUUNACAGIBUgEfwKAAALIBRBAXRBAXIhCgtBASEGIBAhDCAQQQFLDQAMAgsLIAwhBgsgBUGOAmogBmogDjoAACAFQQRqIAZBAnRqIAo2AgACQCABIAtNDQAgBkEBaiEMIA1BAXYgC2ohCyANIQoMAQsLAkAgCkEBcQ0AIAAgASACIAMgAUEBcmdBAXRBPnNBABDQAQsgBUHQAmokAAu8DAIPfwR+IwBBMGsiAiQAAkACQAJAAkACQCAAKAIMIgNBf0YNAAJAIAMgACgCBCIEIARBAWoiBUEDdiIGQQdsIARBCEkbIgRBAXZJDQACQAJAIAQgAyAEIANLGyIEQQ5JDQAgBEH+////AUsNA0F/IARBA3RBCGpBB25Bf2pndkEBaiEEDAELQQRBCEEQIARBB0kbIARBA0kbIQQLIAJBIGpBGEEIIAQQxw0gAigCJCEHIAIoAiAiCEUNBSACKQIoIRECQCAHQQlqIgRFDQAgCEH/ASAE/AsACyACIBFCIIg+AhwgAiARpyIJNgIYIAIgBzYCFCACIAg2AhAgAkEINgIMQQAhCkEAIQQCQCADRQ0AIAhBCGohCyAAKAIAIgxBaGohDSAMKQMAQn+FQoCBgoSIkKDAgH+DIRFBACEEIAMhDiAMIQYDQAJAIBFCAFINAANAIARBCGohBCAGQQhqIgYpAwBCgIGChIiQoMCAf4MiEUKAgYKEiJCgwIB/UQ0ACyARQoCBgoSIkKDAgH+FIRELAkAgCCAHIA1BACAReqdBA3YgBGoiBWtBGGxqKQMAEKMbIhKncSIPaikAAEKAgYKEiJCgwIB/gyITQgBSDQBBCCEQA0AgDyAQaiEPIBBBCGohECAIIA8gB3EiD2opAABCgIGChIiQoMCAf4MiE1ANAAsLIBFCf3whFAJAIAggE3qnQQN2IA9qIAdxIg9qLAAAQQBIDQAgCCkDAEKAgYKEiJCgwIB/g3qnQQN2IQ8LIBQgEYMhESAIIA9qIBJCGYinIhA6AAAgCyAPQXhqIAdxaiAQOgAAIAggD0F/c0EYbGoiD0EQaiAMIAVBf3NBGGxqIgVBEGopAAA3AAAgD0EIaiAFQQhqKQAANwAAIA8gBSkAADcAACAOQX9qIg4NAAsgAyEECyACIAQ2AhwgAiAJIARrNgIYAkADQCAKQRBGDQEgACAKaiIEKAIAIQYgBCACQQRqIApqQQxqIggoAgA2AgAgCCAGNgIAIApBBGohCgwACwsgAigCFCIERQ0EIAQgBEEYbEEfakF4cSIGakEJaiIERQ0EIAIoAhAgBmsgBEEIEL0TDAQLIAAoAgAhBAJAIAYgBUEHcUEAR2oiCkUNACAEIQYDQCAGIAYpAwAiEUJ/hUIHiEKBgoSIkKDAgAGDIBFC//79+/fv37//AIR8NwMAIAZBCGohBiAKQX9qIgoNAAsLAkAgBUEISQ0AIAQgBWogBCkAADcAAAwCCwJAIAVFDQAgBEEIaiAEIAX8CgAACyAFDQFBACEEDAILEIccAAtBASEPQQAhCEEAIQoDQCAKIQYgDyEKAkAgBCAGai0AAEGAAUcNACAEIAhqIQwgBCAGQX9zQRhsaiELQQAgBmtBGGwhEAJAA0AgBCAQakFoaikDABCjGyERIAAoAgQiDyARp3EiByEOAkAgBCAHaikAAEKAgYKEiJCgwIB/gyITQgBSDQBBCCENIAchDgNAIA4gDWohDiANQQhqIQ0gBCAOIA9xIg5qKQAAQoCBgoSIkKDAgH+DIhNQDQALCwJAIAQgE3qnQQN2IA5qIA9xIg5qLAAAQQBIDQAgBCkDAEKAgYKEiJCgwIB/g3qnQQN2IQ4LAkAgDiAHayAGIAdrcyAPcUEISQ0AIAQgDmoiBy0AACENIAcgEUIZiKciAzoAACAAKAIAIgcgDkF4aiAPcWpBCGogAzoAACANQf8BRg0CQWghDyAEIA5BaGxqIQ0CQANAIA9FDQEgDCAPaiIEKAAAIQcgBCANIA9qIg4oAAA2AAAgDiAHNgAAIA9BBGohDwwACwsgACgCACEEDAELCyAEIAZqIBFCGYinIgc6AAAgACgCACIEIA8gBkF4anFqQQhqIAc6AAAMAQsgByAGakH/AToAACAHIAAoAgQgBkF4anFqQQhqQf8BOgAAIAQgDkF/c0EYbGoiBEEQaiALQRBqKQAANwAAIARBCGogC0EIaikAADcAACAEIAspAAA3AAAgByEECyAIQWhqIQggCiAKIAVJIgZqIQ8gBg0ACyAAKAIEIgQgBEEBakEDdkEHbCAEQQhJGyEECyAAIAQgACgCDGs2AggLQYGAgIB4IQcLIAJBMGokACAHC94MAgh/An4jAEEQayICJAACQAJAAkACQAJAAkACQAJAIAAoAgAOCAABAgMGBgQFAAsgACgCICIDQQxqIQQCQCADQQhqKAIAIgBFDQAgA0EEaigCACEFIABBDGwhBgNAIAEgBSgCACIAENMDIAAgARBRAkAgASgCAEUNACAAKAIAQRpHDQAgASAAQQhqIgcQwwUiCEUNACAAEOQBIABBOGogCEE4aikDADcDACAAQTBqIAhBMGopAwA3AwAgAEEoaiAIQShqKQMANwMAIABBIGogCEEgaikDADcDACAAQRhqIAhBGGopAwA3AwAgAEEQaiAIQRBqKQMANwMAIAcgCEEIaikDADcDACAAIAgpAwA3AwAgCEHAAEEIEL0TCyAFQQxqIQUgBkF0aiIGDQALCyABIAQQRCADKAIwIgBFDQUgASAAENMDIAAgARBRIAEoAgBFDQUgACgCAEEaRw0FIAEgAEEIaiIFEMMFIgFFDQUgABDkASAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACAFIAFBCGopAwA3AwAgACABKQMANwMAIAFBwABBCBC9EwwFCwJAIAAoAiAiCUEIaigCACIARQ0AIAlBBGooAgAiAyAAQQZ0aiEEA0ACQCADQThqKAIAIgBFDQAgA0E0aigCACEFIABBDGwhBgNAIAEgBSgCACIAENMDIAAgARBRAkAgASgCAEUNACAAKAIAQRpHDQAgASAAQQhqIgcQwwUiCEUNACAAEOQBIABBOGogCEE4aikDADcDACAAQTBqIAhBMGopAwA3AwAgAEEoaiAIQShqKQMANwMAIABBIGogCEEgaikDADcDACAAQRhqIAhBGGopAwA3AwAgAEEQaiAI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AEEIaiIGEIINIAIoAoACQTJGDQEgABDRASAAQThqIAJBgAJqQThqKQMANwMAIABBMGogAkGAAmpBMGopAwA3AwAgAEEoaiACQYACakEoaikDADcDACAAQSBqIAJBgAJqQSBqKQMANwMAIABBGGogAkGAAmpBGGopAwA3AwAgAEEQaiACQYACakEQaikDADcDACAGIAJBgAJqQQhqKQMANwMAIAAgAikDgAI3AwAMAQsgACABEEYLIANBDGohAyAFQXRqIgUNAAsLAkAgBEEUaigCACIDRQ0AIARBEGooAgAhACADQdgAbCEDA0AgACABEGkgAEHYAGohACADQah/aiIDDQALCyAEKAIwIgBFDQQCQCAAKAIAQRpHDQAgAkHAAWogASgCACABKAIEIABBCGoiARCCDSACKALAAUEyRg0FIAAQ0QEgAEE4aiACQcABakE4aikDADcDACAAQTBqIAJBwAFqQTBqKQMANwMAIABBKGogAkHAAWpBKGopAwA3AwAgAEEgaiACQcABakEgaikDADcDACAAQRhqIAJBwAFqQRhqKQMANwMAIABBEGogAkHAAWpBEGopAwA3AwAgASACQcABakEIaikDADcDACAAIAIpA8ABNwMADAULIAAgARBGDAQLAkAgACgCBCIAKAIAQRpHDQAgAkHAAGogASgCACABKAIEIABBCGoiARCCDSACKAJAQTJGDQQgABDRASAAQThqIAJBwABqQThqKQMANwMAIABBMGogAkHAAGpBMGopAwA3AwAgAEEoaiACQcAAakEoaikDADcDACAAQSBqIAJBwABqQSBqKQMANwMAIABBGGogAkHAAGpBGGopAwA3AwAgAEEQaiACQcAAakEQaikDADcDACABIAJBwABqQQhqKQMANwMAIAAgAikDQDcDAAwECyAAIAEQRgwDCyAAKAIQIgBFDQIgAEEIaigCACIDRQ0CIABBBGooAgAhACADQQxsIQMDQCAAIAEQ1QEgAEEMaiEAIANBdGoiAw0ADAMLCwJAIAAoAgQiACgCAEEaRw0AIAIgASgCACABKAIEIABBCGoiARCCDSACKAIAQTJGDQIgABDRASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhq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QCAALQAcQQJGDQAgACkDCCIFQgODQgBSDQAgBaciAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCEBDpHQsgACgCKCICRQ0AIAIoAgAiABDAAiAAQeAAQQgQvRMgAkEMQQQQvRMPCwvlCwEHfyMAQcACayICJAACQCAAKAIIIgNFDQAgACgCBCIEIANBKGxqIQUDQAJAAkACQAJAAkACQAJAIAQoAgAOBQYAAQIFBgsgBCgCBEEBRw0FIAQoAggiACgCAEEaRw0DIAJBwAFqIAEoAgAgASgCBCAAQQhqIgMQgg0gAigCwAFBMkYNBSAAENEBIABBOGogAkHAAWpBOGopAwA3AwAgAEEwaiACQcABakEwaikDADcDACAAQShqIAJBwAFqQShqKQMANwMAIABBIGogAkHAAWpBIGopAwA3AwAgAEEYaiACQcABakEYaikDADcDACAAQRBqIAJBwAFqQRBqKQMANwMAIAMgAkHAAWpBCGopAwA3AwAgACACKQPAATcDAAwFCyAEKAIEIgAoAgBBGkcNASACQYABaiABKAIAIAEoAgQgAEEIaiIDEIINIAIoAoABQTJGDQQgABDRASAAQThqIAJBgAFqQThqKQMANwMAIABBMGogAkGAAWpBMGopAwA3AwAgAEEoaiACQYABakEoaikDADcDACAAQSBqIAJBgAFqQSBqKQMANwMAIABBGGogAkGAAWpBGGopAwA3AwAgAEEQaiACQYABakEQaikDADcDACADIAJBgAFqQQhqKQMANwMAIAAgAikDgAE3AwAMBAsCQCAEKAIEIgYtAGxBAkcNACAGQcAAaiEAA0AgACgCGCIALQAsQQJGDQALCwJAIAZBhAFqKAIAIgNFDQAgBkGAAWooAgAhACADQdgAbCEDA0ACQAJAAkACQCAAKAIAQXxqDgIDAAELIABBBGooAgAiBygCAEEaRw0BIAJBgAJqIAEoAgAgASgCBCAHQQhqIggQgg0gAigCgAJBMkYNAiAHENEBIAdBOGogAkGAAmpBOGopAwA3AwAgB0EwaiACQYACakEwaikDADcDACAHQShqIAJBgAJqQShqKQMANwMAIAdBIGogAkGAAmpBIGopAwA3AwAgB0EYaiACQYACakEYaikDADcDACAHQRBqIAJBgAJqQRBqKQMANwMAIAggAkGAAmpBCGopAwA3AwAgByACKQOAAjcDAAwCCyAAIAEQjAkMAQsgByABEEYLIABB2ABqIQAgA0Gof2oiAw0ACwsCQCAGQZgBaigCACIARQ0AIABBKGwhAyAGQZQBaigCAEEEaiEAA0ACQAJAAkACQAJAAkACQCAAQXxqKAIADgUGAAECAwYLIAAoAgBBAUcNBSAAQQRqKAIAIgcoAgBBGkcNAyACQcAAaiABKAIAIAEoAgQgB0EIaiIIEIINIAIoAkBBMkYNBSAHENEBIAdBOGogAkHAAGpBOGopAwA3AwAgB0EwaiACQcAAakEwaikDADcDACAHQShqIAJBwABqQShqKQMANwMAIAdBIGogAkHAAGpBIGopAwA3AwAgB0EYaiACQcAAakEYaikDADcDACAHQRBqIAJBwABqQRBqKQMANwMAIAggAkHAAGpBCGopAwA3AwAgByACKQNANwMADAULIAAoAgAiBygCAEEaRw0DIAIgASgCACABKAIEIAdBCGoiCBCCDSACKAIAQTJGDQQgBxDRASAHQThqIAJBOGopAwA3AwAgB0EwaiACQTBqKQMANwMAIAdBKGogAkEoaikDADcDACAHQSBqIAJBIGopAwA3AwAgB0EYaiACQRhqKQMANwMAIAdBEGogAkEQaikDADcDACAIIAJBCGopAwA3AwAgByACKQMANwMADAQLIAAgARDpBgwDCyAAIAEQwQIMAgsgByABEEYMAQsgByABEEYLIABBKGohACADQVhqIgMNAAsLIAYtADwiAEEGRg0DIABBAkcNAyAGQRBqIQADQCAAKAIYIgAtACxBAkYNAAwECwsgACABEEYMAgsgACABEEYMAQsgBEEMaigCACIDRQ0AIARBCGooAgAhACADQShsIQMDQCABIAAQygIgAEEoaiEAIANBWGoiAw0ACwsgBEEoaiIEIAVHDQALCyACQcACaiQAC8gMAhR/A34jAEHQAGsiAiQAIAAoAgAhAwJAAkAgASgCACIEQZD6gwFBDiABKAIEIgUoAgwiBhEMAA0AIAMoAhQiByADKAKwAiIBdiEIIAFBH3EhCSADKAIQIQogAygCrAIhC0EAIQwCQAJAA0ACQAJAAkACQCAMIAhGDQAgAiADIAwQ+xoiFjcDACAMRQ0BIBZC////////flgNAiAEQbD7gwFBAiAGEQwADQcMAwtBASENIARBqKab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KQMANwMAIAAgAkEIaikDADcDACABIAIpAwA3AwAMBAsCQCABKAIEIgMtAGxBAkcNACADQcAAaiEBA0AgASgCGCIBLQAsQQJGDQALCwJAIANBhAFqKAIAIgRFDQAgA0GAAWooAgAhASAEQdgAbCEEA0ACQAJAAkACQCABKAIAQXxqDgIDAAELIAFBBGooAgAiBSgCAEEaRw0BIAJBgAJqIAAoAgAgACgCBCAFQQhqIgYQgg0gAigCgAJBMkYNAiAFENEBIAVBOGogAkGAAmpBOGopAwA3AwAgBUEwaiACQYACakEwaikDADcDACAFQShqIAJBgAJqQShqKQMANwMAIAVBIGogAkGAAmpBIGopAwA3AwAgBUEYaiACQYACakEYaikDADcDACAFQRBqIAJBgAJqQRBqKQMANwMAIAYgAkGAAmpBCGopAwA3AwAgBSACKQOAAjcDAAwCCyABIAAQjAkMAQsgBSAAEEYLIAFB2ABqIQEgBEGof2oiBA0ACwsCQCADQZgBaigCACIBRQ0AIAFBKGwhBCADQZQBaigCAEEEaiEBA0ACQAJAAkACQAJAAkACQCABQXxqKAIADgUGAAECAwYLIAEoAgBBAUcNBSABQQRqKAIAIgUoAgBBGkcNAyACQcABaiAAKAIAIAAoAgQgBUEIaiIGEIINIAIoAsABQTJGDQUgBRDRASAFQThqIAJBwAFqQThqKQMANwMAIAVBMGogAkHAAWpBMGopAwA3AwAgBUEoaiACQcABakEoaikDADcDACAFQSBqIAJBwAFqQSBqKQMANwMAIAVBGGogAkHAAWpBGGopAwA3AwAgBUEQaiACQcABakEQaikDADcDACAGIAJBwAFqQQhqKQMANwMAIAUgAikDwAE3AwAMBQsgASgCACIFKAIAQRpHDQMgAkGAAWogACgCACAAKAIEIAVBCGoiBhCCDSACKAKAAUEyRg0EIAUQ0QEgBUE4aiACQYABakE4aikDADcDACAFQTBqIAJBgAFqQTBqKQMANwMAIAVBKGogAkGAAWpBKGopAwA3AwAgBUEgaiACQYABakEgaikDADcDACAFQRhqIAJBgAFqQRhqKQMANwMAIAVBEGogAkGAAWpBEGopAwA3AwAgBiACQYABakEIaikDADcDACAFIAIpA4ABNwMADAQLIAEgABDpBgwDCyABIAAQwQIM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AQMACyAFQQA2AiAMAgsgBUEQaiECAkAgAUECRw0AA0AgAigCGCICLQAsQQJGDQALCyACQQA2AigMAQsgAygCDCICRQ0AIAJBKGwhASADKAIIQQRqIQIDQAJAAkACQAJAAkAgAkF8aigCAA4FBAABAgMECyACKAIAQQFHDQMgAkEEaigCABC6AQwDCyACKAIAELoBDAILIAIQ4wcMAQsgAhCOBgsgAkEoaiECIAFBWGoiAQ0ACwsgA0HYAGoiAyAERw0ACwsCQCAAKAKYASICRQ0AIAAoApQBIgYgAkEobGohBwNAAkACQAJAAkACQCAGKAIADgUEAAECAwQLIAYoAgRBAUcNAyAGKAIIELoBDAMLIAYoAgQQugEMAgsCQAJAAkAgBigCBCIDLQBsIgFBfWoiAkEBIAJB/wFxQQNJG0H/AXEOAwABAgALIANBADYCUAwBCyADQcAAaiECAkAgAUH/AXFBAkcNAANAIAIoAhgiAi0ALEECRg0ACwsgAkEANgIoCyADQZABaiEEAkAgA0GEAWooAgAiAUUNACADQYABaigCACECIAFB2ABsIQEDQAJAAkAgAigCAEEFRw0AIAJBBGooAgAQugEMAQsgAhCQDgsgAkHYAGohAiABQah/aiIBDQALCyAEEI4GIAMtADwiAUEGRg0BAkACQCABQX1qIgJBASACQQNJG0H/AXEOAwABAwALIANBADYCIAwCCyADQRBqIQICQCABQQJHDQADQCACKAIYIgItACxBAkYNAAsLIAJBADYCKAwBCyAGKAIMIgJFDQAgAkEobCEBIAYoAghBBGohAgNAAkACQAJAAkACQCACQXxqKAIADgUEAAECAwQLIAIoAgBBAUcNAyACQQRqKAIAELoBDAMLIAIoAgAQugEMAgsgAhDjBwwBCyACEOokCyACQShqIQIgAUFYaiIBDQALCyAGQShqIgYgB0cNAAsLAkAgAC0APCIBQQZGDQACQAJAIAFBfWoiAkEBIAJBA0kbQf8BcQ4DAAECAAsgAEEANgIgDwsgAEEQaiECAkAgAUECRw0AA0AgAigCGCICLQAsQQJGDQALCyACQQA2AigLC4ILAgR/AX4jAEEwayICJAACQAJAAkACQAJAAkACQAJAIAAoAgAOCAECAwQAAAUGAQsACyAAQQA6ABwgASAAKAIgEL4BDAULIABBADoA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QQAhCgwBCyABIAw2AkBBASEKCyABIAo2AjggAUH0AGogAUE4akHwv5gBELcXCyALIANqIQMMAAsL3QoBB38jAEEQayICJAACQAJAAkACQAJAAkACQCAAKAIADggAAQIDBgYEBQALIAEgAEEIahCmBgwFCyABIABBCGoQsAMMBAsgAS0AeiEDIAEgACgCBCIALQAZRToAegJAIABBCGooAgAiBEUNACAAQQRqKAIAIgAgBEE4bGohBSABQSxqIQYgAS0AeSEHIAEtACghCANAIAFBAToAeSABQQE6ACggACABEIUFAkAgAEEwaigCACIERQ0AIAFBADoAeSABQQA6ACgCQCAEKAIAQRpHDQAgAiAEKQMIIARBGGooAgAQ5xogBiACKQMAIAIoAggQkAsLIAQgARB4CyABIAg6ACggASAHOgB5IABBOGoiACAFRw0ACwsgASADOgB6DAMLIAAoAgQiAEEIaigCACIERQ0CIABBBGooAgAiACAEQThsaiEFIAFBLGohBiABLQB5IQcgAS0AKCEIA0AgAUEBOgB5IAFBAToAKCAAIAEQhQUCQCAAQTBqKAIAIgRFDQAgAUEAOgB5IAFBADoAKAJAIAQoAgBBGkcNACACIAQpAwggBEEYaigCABDnGiAGIAIpAwAgAigCCBCQCwsgBCABEHgLIAEgCDoAKCABIAc6AHkgAEE4aiIAIAVHDQAMAwsLIAAoAgQhAAJAIAEtAJABDQAgAEEQaigCACIERQ0AIAIgACkDACAEEOcaIAFBgAFqIAIpAwAgAigCCBCRBhoLIABBKGooAgAiBEUNASAAQSRqKAIAIgAgBEEwbGohCCABQSxqIQYgAUGAAWohAwNAAkAgACgCAA0AIAEtAJABDQAgAEEYaigCACIERQ0AIAIgAEEIaikDACAEEOcaIAMgAikDACACKAIIEJEGGgsCQCAAQShqKAIAIgRFDQAgAS0AKCEFIAFBADoAKCABLQB5IQcgAUEAOgB5AkAgBCgCAEEaRw0AIAIgBCkDCCAEQRhqKAIAEOcaIAYgAikDACACKAIIEJALCyAEIAEQeCABIAU6ACggASAHOgB5CyAAQTBqIgAgCEcNAAwCCwsCQCAAKAIEIgAoAgANACABLQCQAQ0AIABBGGooAgAiBEUNACACIAApAwggBBDnGiABQYABaiACKQMAIAIo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KGooAgAQtQIgDEEgaiADQTBqQSBqKQMANwMAIAxBGGogA0EwakEYaikDADcDACAMQRBqIANBMGpBEGopAwA3AwAgDEEIaiADQTBqQQhqKQMANwMAIAwgAykDMDcDACADKAIQIQ0gAygCFCEOIAMoAhghDyADKAIcIRAgAygCICERIAMoAiQhEiADKAIoIRMgAy0ALCEUIANBDGpBAmogB0ECai0AADoAACADIAcvAAA7AQwMAgsgCkEgaigCACETIApBHGooAgAhEiAKQRhqKAIAIREgCkEMaigCACEOIApBCGooAgAhDQJAIApBEGopAwAiGkIDg0IAUg0AIBqnIgwgDCgCACIMQQFqNgIAIAxBf0wNBQsgCkEkai0AACEUQQAhFUEAIQwCQCAKQShqKAIAIg9FDQBBAC0A4PadARpBDBCEASIMRQ0FQQAtAOD2nQEaIA8oAgghFiAPKAIEIRdB4AAQhAEiEEUNBSADQTBqIA8oAgAQZQJAQeAARQ0AIBAgA0EwakHgAPwKAAALIAwgFjYCCCAMIBc2AgQgDCAQNgIACwJAIApBMGooAgAiCkUNAEEALQDg9p0BGkHAABCEASIVRQ0FIANBMGogChBFIBVBOGogA0EwakE4aikDADcDACAVQTBqIANBMGpBMGopAwA3AwAgFUEoaiADQTBqQShqKQMANwMAIBVBIGogA0EwakEgaikDADcDACAVQRhqIANBMGpBGGopAwA3AwAgFUEQaiADQTBqQRBqKQMANwMAIBVBCGogA0EwakEIaikDADcDACAVIAMpAzA3AwALIBpCIIinIRAgGqchDwwBC0EALQDg9p0BGiAKQRRqKAIAIRAgCkEQaigCACEPIApBDGooAgAhDiAKQQhqKAIAIQ1BKBCEASIYRQ0DIANBMGogCkEEaigCABC1AiAYQSBqIANBMGpBIGopAwA3AwAgGEEYaiADQTBqQRhqKQMANwMAIBhBEGogA0EwakEQaikDADcDACAYQQhqIANBMGpBCGopAwA3AwAgGCADKQMwNwMAAkAgCkEYaigCACIKDQBBACERDAELQQAtAOD2nQEaQQwQhAEiEUUNA0EALQDg9p0BGiAKKAIIIRcgCigCBCEZQeAAEIQBIhZFDQMgA0EwaiAKKAIAEGUCQEHgAEUNACAWIANBMGpB4AD8CgAACyARIBc2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BCAAIAg2AgALIAZB4ABqJAAL8wkBBX8jAEEQayICJAACQAJAAkACQAJAAkACQCAAKAIADggAAQIDBgYEBQALAkAgACgCICIDQQhqKAIAIgRFDQAgA0EEaigCACEAIARBDGwhBANAIAAoAgAgARCNASAAQQxqIQAgBEF0aiIEDQALCwJAIANBFGooAgAiBEUNACADQRBqKAIAIQAgBEHYAGwhBANAIAAgARCEAyAAQdgAaiEAIARBqH9qIgQNAAsLIAMoAjAiAEUNBSAAIAEQjQEMBQsCQCAAKAIgIgVBCGooAgAiAEUNACAFQQRqKAIAIgMgAEEGdGohBgNAAkAgA0E4aigCACIERQ0AIANBNGooAgAhACAEQQxsIQQDQCAAKAIAIAEQjQEgAEEMaiEAIARBdGoiBA0ACwsgAyABELkKIANBwABqIgAhAyAAIAZHDQALCwJAIAVBFGooAgAiBEUNACAFQRBqKAIAIQAgBEEMbCEEA0AgACgCACABEI0BIABBDGohACAEQXRqIgQNAAsLIAUoAhhBgICAgHhGDQQgBUEgaigCACIERQ0EIAVBHGooAgAhACAEQTBsIQQDQCAAIAEQxAMgAEEwaiEAIARBUGoiBA0ADAULCyAAKAIEIgBBCGooAgAiBEUNAyAAQQRqKAIAIgAgBEE4bGohAwNAIAAgARDvCQJAIABBMGooAgAiBEUNACAEIAEQjQELIABBOGoiACADRw0ADAQLCyAAKAIEIgBBCGooAgAiBEUNAiAAQQRqKAIAIgAgBEE4bGohAwNAIAAgARDvCQJAIABBMGooAgAiBEUNACAEIAEQjQELIABBOGoiACADRw0ADAMLCyACIAAoAgQiACkDACAAQRBqKAIAEOcaIAEgAikDACACKAIIEJEGGiAAQShqKAIAIgRFDQEgAEEkaigCACIAIARBMGxqIQMDQAJAIAAoAgANACACIABBCGopAwAgAEEYaigCABDnGiABIAIpAwAgAigCCBCRBhoLAkAgAEEoaigCACIERQ0AIAQgARCNAQsgAEEwaiIAIANHDQAMAgsLAkAgACgCBCIAKAIADQAgAiAAKQMIIABBGGooAgAQ5xogASACKQMAIAIoAggQkQYaCyAALQBFIgRBA0YNAAJAIARBAkYNACACIAApAyggAEE4aigCABDnGiABIAIpAwAgAigC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AkACQCAEKAIADgUEAAECAwQLIAQoAgRBAUcNAyABIAQoAggiABDTAyAAIAEQUSABKAIARQ0DIAAoAgBBGkcNAyABIABBCGoiBhDDBSIDRQ0DIAAQ5AEgAEE4aiADQThqKQMANwMAIABBMGogA0EwaikDADcDACAAQShqIANBKGopAwA3AwAgAEEgaiADQSBqKQMANwMAIABBGGogA0EYaikDADcDACAAQRBqIANBEGopAwA3AwAgBiADQQhqKQMANwMAIAAgAykDADcDACADQcAAQQgQvRMMAwsgASAEKAIEIgAQ0wMgACABEFEgASgCAEUNAiAAKAIAQRpHDQIgASAAQQhqIgYQwwUiA0UNAiAAEOQBIABBOGogA0E4aikDADcDACAAQTBqIANBMGopAwA3AwAgAEEoaiADQShqKQMANwMAIABBIGogA0EgaikDADcDACAAQRhqIANBGGopAwA3AwAgAEEQaiADQRBqKQMANwMAIAYgA0EIaikDADcDACAAIAMpAwA3AwAgA0HAAEEIEL0TDAILIAQoAgQiB0HAAGogARCMAwJAIAdBmAFqKAIAIgBFDQAgAEEobCEDIAdBlAFqKAIAQQRqIQADQAJAAkACQAJAAkAgAEF8aigCAA4FBAABAgMECyAAKAIAQQFHDQMgASAAQQRqKAIAIgYQ0wMgBiABEFEgASgCAEUNAyAGKAIAQRpHDQMgASAGQQhqIggQwwUiCUUNAyAGEOQBIAZBOGogCUE4aikDADcDACAGQTBqIAlBMGopAwA3AwAgBkEoaiAJQShqKQMANwMAIAZBIGogCUEgaikDADcDACAGQRhqIAlBGGopAwA3AwAgBkEQaiAJQRBqKQMANwMAIAggCUEIaikDADcDACAGIAkpAwA3AwAgCUHAAEEIEL0TDAMLIAEgACgCACIGENMDIAYgARBRIAEoAgBFDQIgBigCAEEaRw0CIAEgBkEIaiIIEMMFIglFDQIgBhDkASAGQThqIAlBOGopAwA3AwAgBkEwaiAJQTBqKQMANwMAIAZBKGogCUEoaikDADcDACAGQSBqIAlBIGopAwA3AwAgBkEYaiAJQRhqKQMANwMAIAZBEGogCUEQaikDADcDACAIIAlBCGopAwA3AwAgBiAJKQMANwMAIAlBwABBCBC9EwwCCyAAIAEQ0QQMAQsgACABEPwC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uZkBai0AAEUNACAGIQNBBCEFDAMLAkAgB0EFai0AAEHAuZkBai0AAEUNACAGIQNBBSEFDAMLAkAgB0EGai0AAEHAuZkBai0AAEUNACAGIQNBBiEFDAMLAkAgB0EHai0AAEHAuZkBai0AAEUNACAGIQNBByEFDAMLAkAgB0EIai0AAEHAuZkBai0AAEUNACAGIQNBCCEFDAMLAkAgB0EJai0AAEHAuZkBai0AAEUNACAGIQNBCSEFDAMLAkAgB0EKai0AAEHAuZkBai0AAEUNACAGIQNBCiEFDAMLAkAgB0ELai0AAEHAuZkBai0AAEUNACAGIQNBCyEFDAMLAkAgB0EMai0AAEHAuZkBai0AAEUNACAGIQNBDCEFDAMLAkAgB0ENai0AAEHAuZkBai0AAEUNACAGIQNBDSEFDAMLAkAgB0EOai0AAEHAuZkBai0AAEUNACAGIQNBDiEFDAMLAkAgB0EPai0AAEHAuZkBai0AAEUNACAGIQNBDyEFDAMLAkAgB0EQai0AAEHAuZkBai0AAEUNACAGIQNBECEFDAMLAkAgB0ERai0AAEHAuZkBai0AAEUNACAGIQNBESEFDAMLAkAgB0ESai0AAEHAuZkBai0AAEUNACAGIQNBEiEFDAMLAkAgB0ETai0AAEHAuZkBai0AAEUNACAGIQNBEyEFDAMLAkAgB0EUai0AAEHAuZkBai0AAEUNACAGIQNBFCEFDAMLAkAgB0EVai0AAEHAuZkBai0AAEUNACAGIQNBFSEFDAMLAkAgB0EWai0AAEHAuZkBai0AAEUNACAGIQNBFiEFDAMLAkAgB0EXai0AAEHAuZkBai0AAEUNACAGIQNBFyEFDAMLAkAgB0EYai0AAEHAuZkBai0AAEUNACAGIQNBGCEFDAMLAkAgB0EZai0AAEHAuZkBai0AAEUNACAGIQNBGSEFDAMLAkAgB0Eaai0AAEHAuZkBai0AAEUNACAGIQNBGiEFDAMLAkAgB0Ebai0AAEHAuZkBai0AAEUNACAGIQNBGyEFDAMLAkAgB0Ecai0AAEHAuZkBai0AAEUNACAGIQNBHCEFDAMLAkAgB0Edai0AAEHAuZkBai0AAEUNACAGIQNBHSEFDAMLAkAgB0Eeai0AAEHAuZkBai0AAEUNACAGIQNBHiEFDAMLAkAgB0Efai0AAEHAuZkBai0AAEUN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AAwFCwsgAUEDOgAkCyABLQAlIQQgASAAEM4BIAAgARBTIAEgBDoAJSABIAM6ACQgASAAEJ0BDAILIAFBAzoAJAsgAS0AJSEEIAEgABDOASAAIAEQUyABIAQ6ACUgASADOgAkIAEgABCdAQsgB0EoaiIHIAhHDQALCyAGLQA8IgFBBkYNAyABQQJHDQMgBkEQaiEBA0AgASgCGCIBLQAsQQJGDQAMBAsLIAAoAgwhAyAAKAIIIQAgAiABNgIIIANFDQIgA0EobCEBA0AgAkEIaiAAEMQFIABBKGohACABQVhqIgENAAwDCwsgAUEDOgAkCyABIAAQzgEgACABEFMgASADOgAlIAEgBDoAJCABIAAQnQELIAJBEGokAAupCQEHfyMAQTBrIgIkAAJAAkACQCAALQAsIgNBBEYNACADQX1qQQNJDQELIABBGGohBAJAIANBAkcNACAEIAEQqBwLIAEoAgBFDQEgASAEEN8FCyABKAIARQ0AIAAtACxBA0cNACACIAEgABD5BSACLQAsQQZGDQAgABDPESAAQShqIAJBKGopAwA3AwAgAEEgaiACQSBqKQMANwMAIABBGGogAkEYaikDADcDACAAQRBqIAJBEGopAwA3AwAgAEEIaiACQQhqKQMANwMAIAAgAikDADcDAAsCQCAAKAJEIgRFDQAgACgCQCIDIARB2ABsaiEFA0ACQAJAAkAgAygCACIAQXxqDgICAAELIAEgAygCBCIAENMDIAAgARBRIAEoAgBFDQEgACgCAEEaRw0BIAEgAEEIaiIGEMMFIgRFDQEgABDkASAAQThqIARBOGopAwA3AwAgAEEwaiAEQTBqKQMANwMAIABBKGogBEEoaikDADcDACAAQSBqIARBIGopAwA3AwAgAEEYaiAEQRhqKQMANwMAIABBEGogBEEQaikDADcDACAGIARBCGopAwA3AwAgACAEKQMANwMAIARBwABBCBC9EwwBCwJAAkACQCAADgQDAAECAwsgAygCBEEBRw0CIAEgAygCCCIAENMDIAAgARBRIAEoAgBFDQIgACgCAEEaRw0CIAEgAEEIaiIGEMMFIgRFDQIgABDkASAAQThqIARBOGopAwA3AwAgAEEwaiAEQTBqKQMANwMAIABBKGogBEEoaikDADcDACAAQSBqIARBIGopAwA3AwAgAEEYaiAEQRhq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IAhGDQEgBSAFIAhHQQZ0aiEGIAUoAgBBBEcNACAFKAIQIQ0gBSgCDCEFIANBqoGAgHg2AmggAiAFIA0gA0HoAGoQ3hwMAAsLIANB/ABqIAFBCGooAgA2AgAgA0HoAGpBCGogA0EgakEIaigCADYCACADIAMpAiA3A2ggAyABKQIANwJ0IActAAAhBSAJLQAAIQYgAigCvAEhCCABKAIUKAIAIQECQEEEQcgAEJkiIgINAAALIAIgAykDaDcCACACIAs2AhwgAiAMNgIYIAIgAykDWDcCICACIAY6AEUgAiAFOgBEIAIgCjYCQCACIAQ2AjxBACEFIAJBADYCOCACIAg2AjQgAiABNgIwIAJBEGogA0HoAGpBEGopAwA3AgAgAkEIaiADQegAakEIaikDADcCACACQShqIANB2ABqQQhqKQMANwIAIAIhBAwCCyAEEJwiIAohBAsgARD5H0EBIQULIAAgBDYCBCAAIAU2AgAgA0GAAWokAAvQCQIMfwF+IwBB4ABrIgIkACACQQA2AhAgAkKAgICAEDcCCCABKAIYIQMgASgCHCEEIAJBADYCPCACQQA7ATggAiAENgI0IAJBADYCMCACQQE6ACwgAkEKNgIoIAIgBDYCJCACQQA2AiAgAiAENgIcIAIgAzYCGCACQQo2AhQgASgCICIFQQJqQQQgBRshBiABKAIEIQcgASgCCCEIA0AgAiACQRRqEIwKAkACQAJAIAIoAgAiAUUNACACKAIEIQkgAiACKAI8IgRBAWoiAzYCPAJAAkACQAJAIAUNACACQQhqQczMmwFB0MybARDkFQwBCyACQQA2AkggAkKAgICAEDcCQCACQYD8hAE2AlAgAkKggICADjcCVCACIAJBwABqNgJMIANBASACQcwAahCFCA0CIAUgAigCSCIKSQ0BIAIoAkQhAyACKAJAIQsgAkEANgJUIAJCgICAgBA3AkwgAkHMAGpBICAFIAprENoQIAJBzABqIAMgAyAKahDkFSACKAJMIQwgAigCVCENIAIoAlAhCiALIANBAUEBENASIAJBCGogCiAKIA1qEOQVIAwgCkEBQQEQ0BIgAkEIakHomZgBQeqZmAEQ5BULIAJBCGogASABIAlqEOQVIAIoAhAiASEDAkAgAigCCCABRw0AIAJBCGogAUEBQQFBARDUGSACKAIQIQMLIAIo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KCABIAM6AHkMBgsCQCAAKAIEIgAoAgAiBkEDRw0AIABBBGogARCYCwwGCyABLQAoIQQgAUEAOgAoIAEtAHkhBSABQQA6AHkCQCAAKAIgIgMoAgBBGkcNACACIAMpAwggA0EYaigCABDnGiABQSxqIAIpAwAgAigCCBCQCwsgAyABEHggASAEOgAoIAEgBToAeSAGQQJJDQUgAUEAOgB5IAFBADoAKAJAIAAoAgQiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAEOcaIAFBLGogAikDACACKAIIEJALCyAAIAEQeCABIAQ6ACggASAFOgB5DAULIAEtACghBiABQQA6ACggAS0AeSEDIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAEOcaIAFBLGogAikDACACKAIIEJALCyAAIAEQeCABIAY6ACggASADOgB5DAQLIAEtACghBiABQQA6ACggAS0AeSEDIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAEOcaIAFBLGogAikDACACKAIIEJALCyAAIAEQeCABIAY6ACggASADOgB5DAMLIAEtACghBiABQQA6ACggAS0AeSEDIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAEOcaIAFBLGogAikDACACKAIIEJALCyAAIAEQeCABIAY6ACggASADOgB5DAILIAEtACghBiABQQA6ACggAS0AeSEDIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAEOcaIAFBLGogAikDACACKAIIEJALCyAAIAEQeCABIAY6ACggASADOgB5DAELIAEtACghBiABQQA6ACggAS0AeSEDIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAEOcaIAFBLGogAikDACACKAIIEJALCyAAIAEQeCABIAY6ACggASADOgB5CyACQRBqJAALxwkBAn8CQAJAQQAoAoT2nQEiAEUNACAAKAIEQf////8HTw0BQQEhAQJAIAAtAAgNAEEBIQEgAC0ACQ0AQQEhASAALQAKDQBBASEBIAAtAAsNAEEBIQEgAC0ADA0AQQEhASAALQANDQBBASEBIAAtAA4NAEEBIQEgAC0ADw0A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BEEYakEUaigCADYCACAAQQxqIARBGGpBDGopAgA3AgAgACAMNgIADAgLIBEgA0Gs44MBEMMSAAsgAyAMQbzjgwEQwxIACyADIBNBjOODARDDEgALIBBBAWohECANQQFqIg0gDkcNAAsLIARBGGogCCADIAsQuwsgBCgCGCIDQQNGDQAgACAEKQIcNwIEIABBFGogBEEYakEUaigCADYCACAAQQxqIARBGGpBDGopAgA3AgAgACADNgIADAILIAJBEGoiAiAJRw0ACyAAQQM2AgALIARBMGokAAvECAEGfwJAIAAoAggiAyABRw0AQQEPCyAAKAIEIgQgAUEwbGohBSAEIANBMGxqIQEgAigCBCEEIAIoAgwhBgNAAkAgBCIDIAZHDQBBAA8LIAIgA0EEaiIENgIEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAygCACIDKAIAQXRqIgdBByAHQSZJGw4mLAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQsCyADQRRqIQcgA0EQaiEIDCwLIANBFGohByADQRBqIQgMKwsgAygCICIIQTRqIQcgCEEwaiEIDCoLIANBDGohByADQQhqIQgMKQsgA0EIaiEHIANBBGohCAwoCyADQRBqIQcgA0EMaiEIDCcLIANBNGohByADQTBqIQgMJgsgA0EkaiEHIANBIGohCAwlCyADQSRqIQcgA0EgaiEIDCQLIANBFGohByADQRBqIQgMIwsgA0EgaiEHIANBHGohCAwiCyADQRhqIQcgA0EUaiEIDCELIANBFGohByADQRBqIQgMIAsgA0EUaiEHIANBEGohCAwfCyADKAIIDgcWFxgZGhscFgsgA0EgaiEHIANBHGohCAwdCyADQRBqIQcgA0EMaiEIDBwLIANBGGohByADQRRqIQgMGwsgAygCICIIQShqIQcgCEEkaiEIDBoLIANBCGohByADQQRqIQgMGQsgA0EIaiEHIANBBGohCAwYCyADQQxqIQcgA0EIaiEIDBcLIANBDGohByADQQhqIQgMFgsgA0EcaiEHIANBGGohCAwVCyADQSxqIQcgA0EoaiEIDBQLIANBCGohByADQQRqIQgMEwsgAygCBCIIQQRqIQcMEgsgA0EUaiEHIANBEGohCAwRCyADQRBqIQcgA0EMaiEIDBALIANBDGohByADQQhqIQgMDwsgA0EMaiEHIANBCGohCAwOCyADQRBqIQcgA0EMaiEIDA0LIANBEGohByADQQxqIQgMDAsgA0EQaiEHIANBDGohCAwLCyADQRRqIQcgA0EQaiEIDAoLIANBDGohByADQQhqIQgMCQsgA0EIaiEHIANBBGohCAwICyADQRxqIQcgA0EYaiEIDAcLIANBEGohByADQQxqIQgMBgsgA0EQaiEHIANBDGohCAwFCyADQRRqIQcgA0EQaiEIDAQLIANBFGohByADQRBqIQgMAwsgA0EkaiEHIANBIGohCAwCCyADQSRqIQcgA0EgaiEIDAELIANBCGohByADQQRqIQgLIAgoAgAhCCABQQxqIAcoAgA2AgAgAUEIaiAINgIAIAFBBGogAzYCACABQRI2AgAgACAAKAIIQQFqNgIIIAFBMGoiASAFRw0AC0EBC6UJAQN/AkACQAJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhMADw8BAgMPDwQFEA4MCwoJCAcGAAsgACgCDCICRQ0OIAAoAgghACACQTBsIQIDQCAAIAEQogMgAEEwaiEAIAJBUGoiAg0ADA8LCyABIAAoAgQQqwEgACgCCCEADAsLIAAoAgwiAEUNDCABIAAQqwEPCyAAKAIoIQAMCQsgASAAKAIEEKsBIAAoAgggARCiAyAAKAIUIgANCAwKCyABIAAoAhAQqwEgACgCDCICRQ0JIAAoAggiAyACQRhsaiEEA0ACQCADKAIUIgBFDQAgASAAEKsBCwJAIANBCGooAgAiAkUNACADQQRqKAIAIQAgAkEwbCECA0AgACABEKIDIABBMGohACACQVBqIgINAAsLIANBGGoiAyAERg0KDAALCyABIAAoAgQQqwEMCAsgAEEIaiABEOQDDwsCQAJAAkACQCAAKAIEDgMAAQIACyAAKAIIIgIoAggiA0UNAiACKAIEIgIgA0E4bGohBANAIAIgARDuCQJAIAJBMGooAgAiA0UNACABIAMQqwELIAJBOGoiAiAERw0ADAMLCyAAKAIIIgIoAggiA0UNASACKAIEIgIgA0E4bGohBANAIAIgARDuCQJAIAJBMGooAgAiA0UNACABIAMQqwELIAJBOGoiAiAERw0ADAILCyAAKAIIIAEQzQsLIAEgACgCDBCrASAAKAIQIQAMBAsCQAJAAkACQCAAKAIEDgMAAQIACyAAKAIIIgIoAggiA0UNAiACKAIEIgIgA0E4bGohBANAIAIgARDuCQJAIAJBMGooAgAiA0UNACABIAMQqwELIAJBOGoiAiAERw0ADAMLCyAAKAIIIgIoAggiA0UNASACKAIEIgIgA0E4bGohBANAIAIgARDuCQJAIAJBMGooAgAiA0UNACABIAMQqwELIAJBOGoiAiAERw0ADAILCyAAKAIIIAEQzQsLIAEgACgCDBCrASAAKAIQIQAMAwsCQCAAKAIEIgJBAkYNAAJAIAJBAXFFDQAgASAAKAIIEKsBDAELIAAoAggiAigCCCIDRQ0AIAIoAgQiAiADQThsaiEEA0AgAiABEO4JAkAgAkEwaigCACIDRQ0AIAEgAxCrAQsgAkE4aiICIARHDQALCwJAIAAoAhgiAkUNACABIAIQqwELAkAgACgCHCICRQ0AIAEgAhCrAQsgACgCDCEADAILIAEgACgCBBCrASAAKAIIIQAMAQsgASAAKAIEEKsBIAAoAgghAAwACwsCQCAAKAIEIgMoAlAiAkUNACADKAJMIQAgAkEwbCECA0AgACABEKIDIABBMGohACACQVBqIgINAAsLAkACQAJAIAMoAgBBeWoOAgECAAsgAyABEO4JCyADKAIwIgJFDQAgAygCLCEAIAJBMGwhAgNAIAAgARCiAyAAQTBqIQAgAkFQaiICDQALCyADKAJgQYCAgIB4Rg0AIAMoAmgiAkUNACADKAJkIQAgAkEwbCECA0AgACABEKIDIABBMGohACACQVBqIgINAAsLDwsgASAAKAIEEKsBC8UJAQp/IwBBkAJrIgEkAAJAAkACQAJAAkAgACgCACICQYiAxABHDQAgACgCBCgCACICQYiAxABGDQEgAkGAgMQARw0BIAAoAggoAgAiAkGIgMQARg0BIAJBgIDEAEcNAQwDCyACQYCAvH9qIgJBAiACQQhJGyICQQZJDQECQAJAIAJBemoOAgABAAsgACgCBCgCACICQYiAxABGDQEgAkGAgMQARw0BDAILIAAoAgxFDQELQQAtAOD2nQEaAkACQEHYABCE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DQAgAhC6AQsgAUE4aiIBIANHDQAMAgsLIAAoAggQvgsLIAAoAgwQugEgACgCECEADAQLAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCIBKAIIIgJFDQIgASgCBCIBIAJBOGxqIQMDQCABEP4JAkAgAUEwaigCACICRQ0AIAIQugELIAFBOGoiASADRw0ADAMLCyAAKAIIIgEoAggiAkUNASABKAIEIgEgAkE4bGohAwNAIAEQ/gkCQCABQTBqKAIAIgJFDQAgAhC6AQsgAUE4aiIBIANHDQAMAgsLIAAoAggQvgsLIAAoAgwQugEgACgCECEADAMLAkAgACgCBCIBQQJGDQACQCABQQFxRQ0AIAAoAggQugEMAQsgACgCCCIBKAIIIgJFDQAgASgCBCIBIAJBOGxqIQMDQCABEP4JAkAgAUEwaigCACICRQ0AIAIQugELIAFBOGoiASADRw0ACwsCQCAAKAIYIgFFDQAgARC6AQsCQCAAKAIcIgFFDQAgARC6AQsgACgCDCEADAILIAAoAgQQugEgACgCCCEADAELIAAoAgQQugEgACgCCCEADAALCwJAIAAoAgQiAigCUCIBRQ0AIAIoAkwhACABQTBsIQEDQCAAEKkDIABBMGohACABQVBqIgENAAsLAkACQAJAIAIoAgBBeWoOAgECAAsgAhD+CQsgAigCMCIBRQ0AIAIoAiwhACABQTBsIQEDQCAAEKkDIABBMGohACABQVBqIgENAAsLIAIoAmBBgICAgHhGDQAgAigCaCIBRQ0AIAIoAmQhACABQTBsIQEDQCAAEKkDIABBMGohACABQVBqIgENAAsLDwsgACgCBBC6AQvdCAEGfyMAQYACayICJAACQAJAAkACQANAAkAgACgCACIDQQJGDQACQAJAIAMOBwcBAAQGBwUHCwALIAAoAgwiA0UNBSAAKAIIIQAgA0EobCEDA0ACQCAAKAIAQQdGDQAgACABEKoDCyAAQShqIQAgA0FYaiIDDQAMBgsLIAAoAgQhAAwACwsgACgCDCIDRQ0CIAAoAgghBCADQThsIQVBACEAA0ACQAJAAkACQAJAAkACQCAEIABqIgMoAgAOAwABAgALIANBCGooAgBBA0cNBCADQQxqKAIAIgYoAgBBGkcNAiACQcABaiABKAIAIAEoAgQgBkEIaiIHEIINIAIoAsABQTJGDQQgBhDRASAGQThqIAJBwAFqQThqKQMANwMAIAZBMGogAkHAAWpBMGopAwA3AwAgBkEoaiACQcABakEoaikDADcDACAGQSBqIAJBwAFqQSBqKQMANwMAIAZBGGogAkHAAWpBGGopAwA3AwAgBkEQaiACQcABakEQaikDADcDACAHIAJBwAFqQQhqKQMANwMAIAYgAikDwAE3AwAMBAsgA0EwaigCACIDRQ0EIAMoAgBBGkcNAiACQYABaiABKAIAIAEoAgQgA0EIaiIGEIINIAIoAoABQTJGDQQgAxDRASADQThqIAJBgAFqQThqKQMANwMAIANBMGogAkGAAWpBMGopAwA3AwAgA0EoaiACQYABakEoaikDADcDACADQSBqIAJBgAFqQSBqKQMANwMAIANBGGogAkGAAWpBGGopAwA3AwAgA0EQaiACQYABakEQaikDADcDACAGIAJBgAFqQQhqKQMANwMAIAMgAikDgAE3AwAMBAsgA0EEaigCACABEJsEDAMLIAYgARBGDAELIAMgARBGDAELIANBKGooAgAgARCbBAsgBSAAQThqIgBHDQAMAwsLAkAgACgCBCIAKAIAQRpHDQAgAiABKAIAIAEoAgQgAEEIaiIDEIINIAIoAgBBMkYNAiAAENEBIABBOGogAkE4aikDADcDACAAQTBqIAJBMGopAwA3AwAgAEEoaiACQShqKQMANwMAIABBIGogAkEgaikDADcDACAAQRhqIAJBGGopAwA3AwAgAEEQaiACQRBqKQMANwMAIAMgAkEIaikDADcDACAAIAIpAwA3AwAMAgsgACABEEYMAQsgACgCBCABEKoDAkAgACgCCCIAKAIAQRpHDQAgAkHAAGogASgCACABKAIEIABBCGoiAxCCDSACKAJAQTJGDQEgABDRASAAQThqIAJBwABqQThqKQMANwMAIABBMGogAkHAAGpBMGopAwA3AwAgAEEoaiACQcAAakEoaikDADcDACAAQSBqIAJBwABqQSBqKQMANwMAIABBGGogAkHAAGpBGGopAwA3AwAgAEEQaiACQcAAakEQaikDADcDACADIAJBwABqQQhqKQMANwMAIAAgAikDQDcDAAwBCyAAIAEQRgsgAkGAAmokAAvaCAEFfwJAAkACQAJAAkACQAJAIAAoAgAOCAABBQQGBgMCAAsgASAA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DQEMBAtBwOqEARDJIgALIANBDGogACACEOEEAkAgAygCDEEBRw0AQQAhBAwDCyADIAMoAhAiAiADKAIUajYCHCADIAI2AhggA0EYahDsDCICQYCAxABGDQELIAIQmg5B/wFxIQQMAQtBwOqEARDJIgALIAUgBHNBAXMhCQsgA0EgaiQAIAkL/AgBCX8jAEEQayICJAACQAJAAkACQAJAIAEoAgAOBQQAAQIDBAsgASgCBEEBRw0DIAAtACghAyAAQQA6ACggAC0AeSEEIABBADoAeQJAIAEoAggiASgCAEEaRw0AIAIgASkDCCABQRhqKAIAEOcaIABBLGogAikDACACKAIIEJALCyABIAAQeCAAIAM6ACggACAEOgB5DAMLIAAtACghAyAAQQA6ACggAC0AeSEEIABBADoAeQJAIAEoAgQiASgCAEEaRw0AIAIgASkDCCABQRhqKAIAEOcaIABBLGogAikDACACKAIIEJALCyABIAAQeCAAIAM6ACggACAEOgB5DAILIAEoAgQiBUHAAGogABCACwJAIAVBhAFqKAIAIgNFDQAgBUGAAWooAgAhASADQdgAbCEDIABBLGohBgNAAkACQAJAIAEoAgBBfGoOAgIAAQsgAC0AKCEHIABBADoAKCAALQB5IQggAEEAOgB5AkAgAUEEaigCACIEKAIAQRpHDQAgAiAEKQMIIARBGGooAgAQ5xogBiACKQMAIAIoAggQkAsLIAQgABB4IAAgBzoAKCAAIAg6AHkMAQsgASAAEPwGCyABQdgAaiEBIANBqH9qIgMNAAsLAkAgBUGYAWooAgAiA0UNACAFQZQBaigCACEBIANBKGwhAwNAIAEgABCNBCABQShqIQEgA0FYaiIDDQALCyAFLQA8QQZGDQEgBUEQaiAAEIALDAELIAEoAgwiA0UNACABKAIIIgcgA0EobGohCSAAQSxqIQoDQAJAAkACQAJAAkAgBygCAA4FBAABAgMECyAHKAIEQQFHDQMgAC0AKCEDIABBADoAKCAALQB5IQQgAEEAOgB5AkAgBygCCCIBKAIAQRpHDQAgAiABKQMIIAFBGGooAgAQ5xogCiACKQMAIAIoAggQkAsLIAEgABB4IAAgAzoAKCAAIAQ6AHkMAwsgAC0AKCEDIABBADoAKCAALQB5IQQgAEEAOgB5AkAgBygCBCIBKAIA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/wGDQgRRDQAgACAENwIADAELAkAgASgCPEUNACADQRhqIAIgA0EMakHey5sBQQEQhQ0CQCADLQAYQQRGDQAgAykDGCIEQv8Bg0IEUQ0AIAAgBDcCAAwCCwJAAkACQAJAIAItAE0NACADQRhqIAIQ3Q8gAy0AGEEERg0AIAMpAxgiBEL/AYNCBFINAQsgA0EANgIYIANBKGogAiADQRhqQbuymwFBARCFDQJAIAMtAChBBEYNACADKQMoIgRC/wGDQgRSDQMLAkAgAi0ATQ0AIANBKGogAhCmEwJAIAMtAChBBEYNACADKQMoIgRC/wGDQgRSDQQLIAIgAigCLEEBajYCLAsgA0EoaiACIANBGGpBtcybAUEEEIYNAkAgAy0AKEEERg0AIAMpAygiBEL/AYNCBFINAwsgA0EoaiACIANBGGpBxcubAUEBEIUNAkAgAy0AKEEERg0AIAMpAygiBEL/AYNCBFINAwsCQCACLQBNDQAgA0EoaiACEN0PIAMtAChBBEYNACADKQMoIgRC/wGDQgRSDQMLIANBKGogAUE8aiACEIkjAkAgAy0AKEEERg0AIAMpAygiBEL/AYNCBFINAwsgAi0ATUEBRg0BIAIgAigCLEF/ajYCLCADQShqIAIQphMgAy0AKEEERg0BIAMpAygiBEL/AYNCBFENAQwCCyAAIAQ3AgAMAwsgA0EoaiACIANBGGpByMubAUEBEIUNIAMtAChBBEYNASADKQMoIgRC/wGDQgRRDQELIARC/wGDQgRRDQAgACAENwIADAELIANBGGogAiADQQxqQbOBnQFBARCFDQJAIAMtABhBBEYNACADKQMYIgRC/wGDQgRRDQAgACAENwIADAELAkAgAS0ANEEDRg0AIANBGGogAiADQQxqQd/LmwFBARCFDQJAIAMtABhBBEYNACADKQMYIgRC/wGDQgRRDQAgACAENwIADAILIANBGGogAUEgaiACEIwIIAMtABhBBEYNACADKQMYIgRC/wGDQgRRDQAgACAENwIADAELIANBGGogAUE4aiACEI8fAkAgAy0AGEEERg0AIAMpAxgiBEL/AYNCBFENACAAIAQ3AgAMAQsgAEEEOgAACyADQTBqJAAL1QgBDX8jAEHAAGsiBSQAAkAgAygCCA0AAkAgASAAKALQAiIGTw0AAkACQAJAAkACQCAAKALM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QQZ0IghqIgk2AiQgAkHYAGohCiACQegAakEEaiELIAJBKGpBBHIhDEEEIQ0CQAJAA0ACQAJAAkACQAJAAkAgCEUNAAJAIAMoAgAiBUEHRg0AIANBBGohBCACIAU2AigCQEE8RQ0AIAwgBEE8/AoAAAsgA0HAAGohDiAFDgQCAwQFCAsgA0HAAGohCQsgAiAJNgIcIAJBGGoQ0xICQCABLQDIASIDQQFHDQAgARDjDiAAQQhqIAJBDGpBCGooAgA2AgAgACACKQIMNwIADAkLIAEoAsQBIQQgASgCwAEhBSACQYwBaiADEIYeIAJBATYCLCACQZTzmwE2AiggAkIBNwI0IAJB9watQiCGQeComwGthDcDGCACIAJBGGo2AjAgAkGYAWogAkEoahCNFyACQawBaiACQZQBaigCADYCACACIAIpAowBNwKkASAFIAQgAkGYAWoQhBchAwJAIAEtAMgBQaIBRw0AIAEQ1xIhBCABEOMOIAEgBBD6EgsgAEGAgICAeDYCACAAIAM2AgQMBwsgC0EYaiADQSBqKQIANwIAIAtBEGogA0EYaikCADcCACALQQhqIANBEGopAgA3AgAgCyADQQhqKQIANwIADAMLIAJB6ABqQRhqIARBGGooAgA2AgAgAkHoAGpBEGogBEEQaikCADcDACACQegAakEIaiAEQQhqKQIANwMAIAIgBCkCADcDaAwCCyACQegAakEQaiAEQRBqKQIANwMAIAJB6ABqQQhqIARBCGopAgA3AwAgAiAEKQIANwNoDAELIAJB6ABqQRhqIARBGGooAgA2AgAgAkHoAGpBEGogBEEQaikCADcDACACQegAakEIaiAEQQhqKQIANwMAIAIgBCkCADcDaAsCQCAGIAIoAgxHDQAgAkEMahDuGCACKAIQIQcLIAcgDWoiA0F8aiAFNgIAAkBBJEUNACADIAJB6ABqQST8CgAACyACIAZBAWoiBjYCFCAKEPkfAkAgAigCKEEESQ0AIAJBKGoQpBQLIAhBQGohCCANQShqIQ0gDiEDDAALCyACIA42AhwgAkGYAWpBBHIgAS0AyAEQhh4gAkHXADYCrAEgAkHArZsBNgKoASACQbCAgIB4NgKYASABKALAASABKALEASACQZgBahCEFyEDAkAgAS0AyAFBogFHDQAgARDXEiEEIAEQ4w4gASAEEPoSCyAAQYCAgIB4NgIAIAAgAzYCBCAKEPkfIAJBKGoQpBQgAkEYahDTEgsgAkEMahDZIQsgAkGwAWokAAvkCAIHfwF+IwBB0ABrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAkEISQ0AAkAgAkF4ag4ECgwOAAoLIAAoAgQiAygCCEUNAQwPCyACDgsPAQIDBAUGBwkLDQALIAAoAgQiA0EEaigCACECAkAgAygCCCIERQ0AA0AgAhDDAyACQQhqIQIgBEF/aiIEDQALIANBBGooAgAhAgsgAygCACACQQRBCBDQEiADQSRBBBC9EwwPCyAAKAIEIgIoAgAgAkEEaigCAEEEQRwQ0BIgAkE8QQQQvRMMDgsgACgCBEEgQQQQvRMMDQsgACgCBEEYQQQQvRMMDAsgACgCBEEcQQQQvRMMCwsgACgCBCICEOQWIAJBOEEEEL0TDAoLIAAoAgRBHEEEEL0TDAkLIAAoAgQiAhCjAyACQfQAQQQQvRMMCAsgACgCBCIDKAIkKAIAQQZLDQULIAAoAgQiAigCJBDDAyACKAIkQQhBBBC9EyACQcQAQQQQvRMMBgsgACgCBCIDKAIsKAIAQQZLDQMLIAAoAgQiAhDlFiACQcgAQQQQvRMMBAsgACgCBCIDKAIIDQELIAAoAgQiA0EEaigCACECAkAgAygCCCIERQ0AA0AgAhDDAyACQQhqIQIgBEF/aiIEDQALIANBBGooAgAhAgsgAygCACACQQRBCBDQEiADQSRBBBC9EwwCC0EALQDg9p0BGkEIEIQBIgRFDQIgAUHIAGoiBUIANwMAIAFBOGpBCGoiBkIANwMAIAFCADcDOCABQRhqIAFBOGoQnRcgACABKAIcNgIEIABBADYCACAEIAM2AgQgBCACNgIAIAEgBDYCKEEBIQQgAUEBNgIkA0AgASAEQX9qIgI2AiwgASgCKCACQQN0aiIDKAIAIQIgASADKAIEIgc2AjQgASACNgIwAkACQCACQQhJDQACQAJAAkACQCACQXhqDgQBAgADAQsgBygCCCECIAdBADYCCCAHKAIEIQQgAUEANgJIIAEgAjYCRCABIAc2AkAgASAEIAJBA3RqNgI8IAEgBDYCOCABQSRqIAFBOGoQ4QsMAwsgBygCJCECIAVCADcDACAGQgA3AwAgAUIANwM4IAFBCGogAUE4ahCdFyACKQIAIQggAiABKAIMNgIEIAJBADYCACADIAg3AgAgASAENgIsDAMLIAcoAiwhAiAFQgA3AwAgBkIANwMAIAFCADcDOCABQRBqIAFBOGoQnRcgAikCACEIIAIgASgCFDYCBCACQQA2AgAgAyAINwIAIAEgBDYCLAwCCyAHKAIIIQIgB0EANgIIIAcoAgQhBCABQQA2AkggASACNgJEIAEgBzYCQCABIAQgAkEDdGo2AjwgASAENgI4IAFBJGogAUE4ahDhCwsgASgCLCEECyABQTBqEMMDIAQNAAsgASgCJCABKAIoQQRBCBDQEgsgACgCBEEYQQQQvRMLIAFB0ABqJAAPCwAL1AgBBH8jAEEQayICJAACQAJAAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhMAEhIBAgMEBQYHERAODQwLCgkIAAsgACgCDCIDRQ0RIAAoAgghACADQTBsIQMDQCAAIAEQxAMgAEEwaiEAIANBUGoiAw0ADBILCyAAKAIEIAEQjQEgACgCCCEADA0LIAAoAgwiAEUNDyAAIAEQjQEMDwsgAiAAKQMQIABBIGooAgAQ5xogASACKQMAIAIoAggQkQYaIAAoAighAAwLCyAALQAkQQJGDQ0gAiAAKQMQIABBIGooAgAQ5xogASACKQMAIAIoAggQkQYaDA0LIAAtACRBAkYNDCACIAApAxAgAEEgaigCABDnGiABIAIpAwAgAigCCBCRBhoMDAsgACgCBCABEI0BIAAoAgggARDEAyAAKAIUIgANCAwLCyAAKAIQIAEQjQEgACgCDCIDRQ0KIAAoAggiBCADQRhsaiEFA0ACQCAEKAIUIgBFDQAgACABEI0BCwJAIARBCGooAgAiA0UNACAEQQRqKAIAIQAgA0EwbCEDA0AgACABEMQDIABBMGohACADQVBqIgMNAAsLIARBGGoiBCAFRg0LDAALCyAAKAIEIAEQjQEMCQsgAEEIaiABEPoCDAgLAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCABEOIIDAILIAAoAgggARDjCAwBCyAAKAIIIAEQuQoLIAAoAgwgARCNASAAKAIQIQAMBAsCQAJAAkACQCAAKAIEDgMAAQIACyAAKAIIIAEQ4ggMAgsgACgCCCABEOMIDAELIAAoAgggARC5CgsgACgCDCABEI0BIAAoAhAhAAwDCwJAIAAoAgQiA0ECRg0AAkAgA0EBcUUNACAAKAIIIAEQjQEMAQsgACgCCCIDQQhqKAIAIgRFDQAgA0EEaigCACIDIARBOGxqIQUDQCADIAEQ7wkCQCADQTBqKAIAIgRFDQAgBCABEI0BCyADQThqIgMgBUcNAAsLAkAgACgCGCIDRQ0AIAMgARCNAQsCQCAAKAIcIgNFDQAgAyABEI0BCyAAKAIMIQAMAgsgACgCBCABEI0BIAAoAgghAAwBCyAAKAIEIAEQjQEgACgCCCEADAALCwJAIAAoAgQiBEHQAGooAgAiA0UNACAEQcwAaigCACEAIANBMGwhAwNAIAAgARDEAyAAQTBqIQAgA0FQaiIDDQALCwJAAkACQCAEKAIAQXlqDgIBAgALIAQgARDvCQsgBEEwaigCACIDRQ0AIARBLGooAgAhACADQTBsIQMDQCAAIAEQxAMgAEEwaiEAIANBUGoiAw0ACwsgBCgCYEGAgICAeEYNASAEQegAaigCACIDRQ0BIARB5ABqKAIAIQAgA0EwbCEDA0AgACABEMQDIABBMGohACADQVBqIgMNAAwCCwsgACgCBCABEI0BCyACQRBqJAALwggBCX8jAEEgayICJAAgASABKAJcIgNBf2oiBDYCXCABIAEoAlgiBUEBaiIGNgJYIAEgASgCaCIHQQFqIgg2AmhBACEJQQQhCgJAIARFDQAgBi0AAEH7AEcNACABIAdBAmoiCDYCaCABIANBfmo2AlwgASAFQQJqNgJYQQEhCUEAIQoLIAIgASAKEPsEAkACQAJAIAIoAgAiBEECRg0AIARBAXFFDQACQCACKAIEIgpBgIDEAEkNACABKAJoIQEgAkEsQRAgCRs2AhAgAkH4yJkBQejImQEgCRs2AgwgAkGkgICAeDYCCCAAIAEgASACQQhqEOUjNgIEDAILAkACQAJAAkACQAJAAkAgCkGAsANzQYCAvH9qQYCQvH9JDQAgCQ0BDAYLAkAgASgCaCAIRg0AIAEgCDYCaCABIAEoAmQgCCABKAJsayIKazYCXCABIAEoAmAgCmo2AlgLIAJBCGogAUEEEPsEAkACQCACKAIIIgpBAkYNACAKQQFxRQ0FQQAhBCACKAIMIgpBgLADc0GAgLx/akH/j7x/Sw0EQQIhBCAKQf+3A0sNBCABKAJcIgZFDQQgBkEBRg0EIAEoAlgiAy0AAEH/AXFB3ABHDQQgAy0AAUH1AEcNBCABIAZBfmo2AlwgASADQQJqNgJYIAEgASgCaCIGQQJqNgJoIAJBCGogAUEEEPsEIAIoAggiBEECRw0BCyACKAIMIQEgAEEDNgIAIAAgATYCBAwJCyAEQQFxRQ0DIAIoAgwiBEGAeHFBgLgDRg0BQQIhBCABKAJoIAZGDQIgASAGNgJoIAEgASgCZCAGIAEoAmxrIgZrNgJcIAEgASgCYCAGajYCWAwCCwJAIAEoAlwiCUUNACABKAJYIgQtAABB/QBHDQAgASAJQX9qNgJcIAEgBEEBajYCWCABIAEoAmhBAWo2AmgMBQsgAkGjgICAeDYCCCABKAJoIAggAkEIahDOIyEBIABBAzYCACAAIAE2AgQMBwsgCkEKdCAEakGAyIBlaiEKQQEhBAsgCUUNAQJAIAEoAlwiCUUNACABKAJYIgYtAABB/QBHDQAgASAJQX9qNgJcIAEgBkEBajYCWCABIAEoAmhBAWo2AmgMAgsgAkGjgICAeDYCCCABKAJoIAggAkEIahDOIyEBIABBAzYCACAAIAE2AgQMBQsgAkGkgICAeDYCCCACQRJBECAJGzYCECACQaTJmQFB6MiZASAJGzYCDCABKAJoIAggAkEIahDmIyEBIABBAzYCACAAIAE2AgQMBAsgACAKNgIEIAAgBDYCAAwDCyAAIAo2AgQgAEEANgIADAILIAEoAmghASACQRJBECAJGzYCECACQaTJmQFB6MiZASAJGzYCDCACQaSAgIB4NgIIIAAgASABIAJBCGoQ5SM2AgQgAigCBCEKCyAAQQM2AgAgBCAKEIIfCyACQSBqJAALvAgBCX8jAEHwAWsiAiQAIAIgASgCwAEiAzYCDAJAAkACQCABLQDIAUHPAEYNAEEIIQQMAQsgARDjDgJAAkACQAJAAkACQAJAAkAgAS0AyAENACABEOMOIAJBMGogAUEAEKABIAIoAjQhBSACKAIwIgRBB0YNBSACQZgBakEgaiACQTBqQSBqKQMANwMAIAJBmAFqQRhqIAJBMGpBGGopAwA3AwAgAkGYAWpBEGogAkEwakEQaikDADcDACACIAIpAzg3A6ABIAIgBTYCnAEgAiAENgKYASABLQDIASEGIAEtAIEBQSBxRQ0DIAZB/wFxQQlHDQMgASgCwAEhByABEOMOIAIgARCQFyACKAIEIQYCQCACKAIAQQFxRQ0AIAYhBQwFCyACQbgBaiEIIAIgBjYCMAJAAkACQCAEDgcBAAAAAgICAQsgAkGwAWohCAsgASgCvAEhCUEEQQwQmSIiCkUNAiAKIAk2AgggCiAHNgIEIAogBjYCACAIENghIAggCjYCAAwDCyACQTBqEJoHDAILQQchBAwGCwALIAEtAMgBIQYLIAZB/wFxQQFGDQIgASgCxAEhBSABKALAASEEIAJBxAFqIAYQhh4gAkEBNgI0IAJBlPObATYCMCACQgE3AjwgAkH3Bq1CIIZB4KibAa2ENwPoASACIAJB6AFqNgI4IAJB0AFqIAJBMGoQjRcgAkHkAWogAkHMAWooAgA2AgAgAiACKQLEATcC3AEgBCAFIAJB0AFqEIQXIQUgAS0AyAFBogFHDQAgARDXEiEEIAEQ4w4gASAEEPoSCyACQZgBahCkFAsgAEEJNgIAIAAgBTYCBAwDCyABEOMOIAJBEGpBGGogAkGgAWoiBkEYaikDADcDACACQRBqQRBqIAZBEGopAwA3AwAgAkEQakEIaiAGQQhqKQMANwMAIAIgBikDADcDEAsgAkHQAGogAkEQakEYaikDADcDACACQTBqQRhqIAJBEGpBEGopAwA3AwAgAkEwakEQaiACQRBqQQhqKQMANwMAIAIgAikDEDcDOCACQZgBaiABQQAQogkgAiABNgJYIAIgBTYCNCACIAQ2AjAgAigCmAEhBiACIAJBDGo2AlwCQCAGQYCAgIB4Rw0AIAIoApwBIQEgAkEwahChISAAQQk2AgAgACABNgIEDAILIAJBkAFqIAJBmAFqQRBqKQIANwMAIAJBiAFqIAJBmAFqQQhqKQIANwMAIAJB4ABqQQhqIAJBMGpBCGoiBkEIaikDADcDACACQeAAakEQaiAGQRBqKQMANwMAIAJB4ABqQRhqIAZBGGopAwA3AwAgAiACKQKYATcDgAEgAiAGKQMANwNgIAEoArwBIQELIAAgBTYCBCAAIAQ2AgACQEE4RQ0AIABBCGogAkHgAGpBOPwKAAALIAAgATYCRCAAIAM2AkALIAJB8AFqJAALqggCDH8BfiMAQcAAayIDJAACQAJAAkACQAJAIAINAEEBIQRBygAhBUEAIQYMAQsgASACaiEHQQEhCCABIQlBASEEIAEtAAAiCiEGAkADQAJAAkAgCA0AIAkgB0cNAQwDCyAIIAcgCWtPDQIgCSAIaiEJQQAhCAsgBEEBdCEEIAZBAXQgCS0AAGohBiAJQQFqIQkMAAsLQQEhCwJAIAJBAUcNAEHLACEFDAELIANBADoAIiABLQABIQggA0EBOgAjAkACQCAIQfyrhQFqLQAAIApB/KuFAWotAABJDQBBACEMIAghDSAKIQgMAQtBACELIANBADoAI0EBIQwgA0EBOgAiIAohDQtBAiEJIANBAjYCNCADQoCAgIDwHzcCLCADIAc2AiggAyABNgIkA0ACQAJAIAkNAEEAIQkCQCADKAIwIgcNAAwCCyADIAdBf2o2AjAgAygCJCIKIAMoAihGDQEgAyAKQQFqNgIkIAMgAygCLCIHQQFqNgIsIAohCQwBCyADQQA2AjQgA0EYaiADQSRqIAkQlQwgAygCHCEJIAMoAhghBwsCQAJAAkACQCAJRQ0AIAktAAAiCUH8q4UBai0AACIFIAhB/wFxIgpB/KuFAWotAABJDQEgCSAKRg0CIAUgDUH/AXFB/KuFAWotAABPDQIgB0GAAk8NByADIAc6ACMgByELIAkhDQwCCyAMQf8BcSIHIAtB/wFxRw0CIANBADYCJEEBIANBImogA0EjaiADQSRqQcDTmAEQxRsACyADIAw6ACMgB0GAAk8NBCADIAc6ACIgDCELIAchDCAIIQ0gCSEICyADKAI0IQkMAQsLAkACQAJAIAIgB00NAEEAIQkgASAHai0AACIIQfyrhQFqLQAAQfoBTQ0BQcwAIQVBACELDAILIAcgAkH07YMBEMMSAAsgAiALQf8BcSIKTQ0EIAEgCmotAABBGHQgCEEQdCAKQQh0cnIgB3IhDUHNACELQc4AIQULQgAhDwJAA0AgAiAJRg0BIAEgCWohByAJQQFqIQlCASAHMQAAhiAPhCEPDAALCyADQRBqIAEgAkEAEP0KIAMoAhQhByADKAIQIQkgA0EIaiABIAJBARD9CiADIAEgAiAHIAMoAgwgCSADKAIIIgpLIg4bIAkgCiAOGyIJEJMJIAMoAgAhCiADKAIEIQcLIAAgAjYCQCAAIAE2AjwgAEEANgI4IAAgBTYCMCAAIAQ2AiwgACAGNgIoIAAgDDoAISAAIAg6ACAgACANNgIcIAAgCzYCGCAAIAk2AhAgACAPNwMIIAAgBzYCBCAAIApB/wFxNgIAIANBwABqJAAPC0G0qpsBQSsgA0E/akH46IMBQezsgwEQ6hAAC0G0qpsBQSsgA0E/akH46IMBQdzsgwEQ6hAACyAKIAJB/OyDARDDEgALtAgBBX8jAEHQA2siAyQAAkACQCACDQAgAEGHgICAeDYCAAwBCyACQQR0IQQgASEFAkADQCAERQ0BIARBcGohBCAFQQhqIQYgBUEQaiEFIAYoAgANAAsgAEGHgICAeDYCAAwBCwJAAkACQAJAAkACQAJAAkACQAJAAkACQCACQQFHDQAgAUEEaigCACEEIAFBCGooAgAiBUEBRw0BIABBgICAgHg2AgAgACAELQAAOgAEDAwLAkACQAJAIAJBAkcNACABQQhqIQZBACEEA0AgBEEgRg0CIAYgBGohBSAEQRBqIQQgBSgCAEEBRg0ACwtBACEGIAJBA0YNAQwJCyABQQhqKAIARQ0CIAFBGGooAgBFDQMgAUEEaigCACEEIABBgYCAgHg2AgAgACAELQAAOgAEIAAgAUEUaigCAC0AADoABQwMC0EIIQQCQANAIARBOEYNASABIARqIQUgBEEQaiEEIAUoAgBBAUcNCQwACwsgAUEIaigCAEUNAyABQRhqKAIARQ0EIAFBKGooAgBFDQUgAUEkaigCAC0AAEEYdCABQRRqKAIALQAAQRB0IAFBBGooAgAtAABBCHRyciEGQQEhBAwICyADQTBqIAQgBRDHAyADKAJwIQQgAygCbCEGAkACQCADKAJoQQFxRQ0AIAYhBQwBCyADQcQDaiAEQQFBARCkDiADKALEA0EBRg0GIAMoAswDIQUgBEUNACAFIAYgBPwKAAALIAMoAlwhBiADKAJYIQEgAygCYCECAkBBKEUNACADQQhqIANBMGpBKPwKAAALQQEhBwwIC0EAQQBB5NWEARDDEgALQQBBAEH01YQBEMMSAAtBAEEAQZTWhAEQwxIAC0EAQQBBpNaEARDDEgALQQBBAEG01oQBEMMSAAsgAygCyAMgAygCzANB/NuDARDYIAALQQAhBAsCQCAEIAZyQQFxRQ0AIABBgoCAgHg2AgAgAEEGaiAGQRh2OgAAIAAgBkEIdjsBBAwDCyACQQFHDQFBAiEHCwJAQShFDQAgA0EwakEEaiADQQhqQSj8CgAACyAAQYOAgIB4NgIAAkBBLEUNACAAQQRqIANBMGpBLPwKAAALIAAgBDYCSCAAIAU2AkQgACAHNgJAIAAgAjYCOCAAIAY2AjQgACABNgIwDAELIANBMGogASACELgFAkAgAygCMEGAgICAeEYNAEGQA0UNASAAIANBMGpBkAP8CgAADAELIANBMGoQnB8gA0EwaiABIAIQvxACQCADLQAwQQJGDQACQEGAAkUNACAAQQRqIANBMGpBgAL8CgAACyAAQYWAgIB4NgIADAELIANBMGogASACEMsDAkAgAy0AOUEDRg0AIAAgAykCMDcCBCAAQYaAgIB4NgIAIABBDGogA0E4aigCADYCAAwBCyAAQYeAgIB4NgIACyADQdADaiQAC/8HAgR/An4CQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgkAAQIDBAUGBwgACwJAIAAoAgwiAUUNACAAKAIIIQIgAUHIAGwhAQNAAkACQAJAIAIpAwAiBUICWA0AQSAhAwwBCyACQTBqQQA2AgAgBUICUQ0BIAWnQQFxDQFBGCEDCyACIANqQQA2AgALIAJByABqIQIgAUG4f2oiAQ0ACwsgACgCHCICRQ0IIAJBCGooAgAiAUUNCCACQQRqKAIAIQIgAUEMbCEBA0AgAhDaBSACQQxqIQIgAUF0aiIBDQAMCQsLIABBCGoQ1gMPCwJAIAAoAgwiAUUNACAAKAIIIQIgAUHQAGwhAQNAQRghAwJAAkACQAJAIAIpAwAiBkJ+fCIFQgIgBUICVBunDgMAAgEACyACQQhqKAIADQJBICEDDAELAkAgBqdBAXENACACQRhqQQA2AgALIAJBIGopAwAiBUICUQ0BIAWnQQFxDQFBOCEDCyACIANqQQA2AgALIAJB0ABqIQIgAUGwf2oiAQ0ACwsgACgCHCICRQ0GIAJBCGooAgAiAUUNBiACQQRqKAIAIQIgAUEMbCEBA0AgAhDaBSACQQxqIQIgAUF0aiIBDQAMBwsLAkACQCAAKAIIDgMAAQcACwJAIAAtACRBAkYNACAAQQA2AiALAkAgACgCKCIDQQhqKAIAIgFFDQAgA0EEaigCACECIAFBDGwhAQNAIAIoAgAQugEgAkEMaiECIAFBdGoiAQ0ACwsCQCADQRRqKAIAIgFFDQAgA0EQaigCACECIAFB2ABsIQEDQCACEMkCIAJB2ABqIQIgAUGof2oiAQ0ACwsgAygCMCICRQ0GIAIQugEPCwJAIAAtACRBAkYNACAAQQA2AiALAkAgACgCKCIEQQhqKAIAIgJFDQAgBEEEaigCACIDIAJBBnRqIQADQAJAIANBOGooAgAiAUUNACADQTRqKAIAIQIgAUEMbCEBA0AgAigCABC6ASACQQxqIQIgAUF0aiIBDQALCyADEP4JIANBwABqIgIhAyACIABHDQALCwJAIARBFGooAgAiAUUNACAEQRBqKAIAIQIgAUEMbCEBA0AgAigCABC6ASACQQxqIQIgAUF0aiIBDQALCyAEKAIYQYCAgIB4Rg0FIAQoAiAiAUUNBSAEKAIcIQIgAUEwbCEBA0AgAhCpAyACQTBqIQIgAUFQaiIBDQAMBgsLIAAoAgQQugEPCyAAKAIQIgJFDQMgAkEIaigCACIBRQ0DIAJBBGooAgAhAiABQQxsIQEDQCACENoFIAJBDGohAiABQXRqIgENAAwECwsgACgCBEEANgI4DwsgACgCBBC6AQ8LIABBADYCIAsL8AcCDn8BfiMAQcAAayIBJAACQAJAAkAgACgCDCICQX9GDQACQCACIAAoAgQiAyADQQFqIgRBA3YiBUEHbCADQQhJGyIGQQF2SQ0AIAFBKGogBiACIAYgAksbQQFqEIwMIAEoAiwhByABKAIoIgVFDQMgASgCMCEIIAEgBzYCHCABQoSAgICAATcCECABIABBEGo2AgwgASAFNgIYIAAoAgAiCSkDACEPIAEgCTYCOCABIAI2AjQgAUEANgIwIAEgD0J/hUKAgYKEiJCgwIB/gzcDKCAJQXxqIQQgBUEIaiEKIAFBGGohCyACIQwCQANAIAxFDQECQANAIAEgAUEoahD3FyABKAIAQQFxDQEgASABKAI4IgZBCGo2AjggASABKAIwQQhqNgIwIAEgBikDCEJ/hUKAgYKEiJCgwIB/gzcDKAwACwsgASgCBCEGIAEgASgCNEF/aiIMNgI0IAUgBSAHIAQgBiABKAIwakECdCINaygCACkDCCIPEIsRIgZqIA+nQRl2IgM6AAAgCiAHIAZBeGpxaiADOgAAIAUgBkECdGtBfGogCSANa0F8aigAADYAAAwACwsgASACNgIkIAEgCCACazYCICAAIAtBBBCoGiABKAIcIgZFDQIgASgCGCAGIAEoAhAgASgCFBD4FwwCCyAFIARBB3FBAEdqIQcgACgCACIFIQYCQANAIAdFDQEgBiAGKQMAIg9Cf4VCB4hCgYKEiJCgwIABgyAPQv/+/fv379+//wCEfDcDACAGQQhqIQYgB0F/aiEHDAALCwJAAkAgBEEISQ0AIAUgBGogBSkAADcAAAwBCyAERQ0AIAVBCGogBSAE/AoAAAtBACENA0ACQAJAIAQgDSIGRg0AIAZBAWohDSAFIAZqLQAAQYABRw0CIAUgBkECdGtBfGohDiAAKAIEIQkgACgCACEMQQAgBmtBAnQhCwNAIAYgAyAFIAtqQXxqKAIAKQMIIg+nIgpxIghrIAwgCSAPEIsRIgcgCGtzIANxQQhJDQIgBSAHai0AACEDIAwgB2ogCkEZdiIKOgAAIAwgCSAHQXhqcWpBCGogCjoAACAFIAdBAnRrQXxqIQUCQCADQf8BRg0AIA4gBUEBEKgaIAAoAgQiCSEDIAAoAgAiDCEFDAELCyAMIAZqQf8BOgAAIAwgCSAGQXhqcWpBCGpB/wE6AAAgBSAOKAAANgAAIAkhAyAMIQUMAgsgACADIANBAWpBA3ZBB2wgA0EISRsgAms2AggMAwsgDCAGaiAKQRl2Igc6AAAgDCAJIAZBeGpxakEIaiAHOgAADAALCxCJHAALQYGAgIB4IQcLIAFBwABqJAAgBwuaCQIIfwJ+IwBBoAtrIgMkACADQoOAgIAQNwIkIANCg4CAgBA3AhggA0KDgICAEDcCMCADQQA6ADkgA0GAAjsBLCADQQI2AhQgA0EBOgAgIANBAkEBIAJB9QNJGyIEOgA4IANBoANqIANBFGpBHGogASACEL4CAkACQAJAAkAgAygCoANBAUcNACADQRBqIANBvgNqLwEAOwEAIAMgAykBtgM3AwggAy0AtQMhASADLQC0AyEEIAMoArADIQUgAygCrAMhAiADKAKoAyEGDAELIANByAhqIgEgA0G+A2ovAQA7AQAgAyADKQG2AzcDwAggAykCpAMhCyADKQKsAyEMIAMvAbQDIQUCQEHIAkUNACADQTxqQRxqIANBwANqQcgC/AoAAAsgA0HWAGogAS8BADsBACADIAU7AUwgAyAMNwJEIAMgCzcCPCADIAMpA8AINwFOAkACQAJAAkACQCACQfUDSQ0AIANBoANqQQJBASADQTxqEJMBAkAgAygCoAMiAUGAgICAeEcNACADQRBqIANBvgNqLwEAOwEAIAMgAykBtgM3AwgMBQsgA0HACGpBCGoiAiADQb4Dai8BADsBACADIAMpAbYDNwPACCADLQC1AyEFIAMtALQDIQYgAygCsAMhByADKAKsAyEIIAMoAqgDIQkgAygCpAMhCgJAQagCRQ0AIANBiAZqIANBwANqQagC/AoAAAsgA0GwCGpBCGogAi8BADsBACADIAMpA8AINwOwCEEALQDg9p0BGkHQAhCEASICRQ0BIAIgBToAHSACIAY6ABwgAiAHNgIYIAIgCDYCFCACIAk2AhAgAiAKNgIMIAIgATYCCCACQoGAgIAQNwIAIAIgAykDsAg3AR4gAkEmaiADQbgIai8BADsBAAJAQagCRQ0AIAJBKGogA0GIBmpBqAL8CgAAC0Gs3oMBIQUMAwsgA0GgA2pBAEEBIANBPGoQjwEgAygCoAMNASADQcAIakEIaiICIANBvgNqLwEAOwEAIAMgAykBtgM3A8AIIAMtALUDIQEgAy0AtAMhBSADKAKwAyEGIAMoAqwDIQcgAygCqAMhCCADKAKkAyEJAkBBwAJFDQAgA0HQCGogA0HAA2pBwAL8CgAACyADQZALakEIaiACLwEAOwEAIAMgAykDwAg3A5ALQQAtAOD2nQEaQeQCEIQBIgJFDQAgAiABOgAZIAIgBToAGCACIAY2AhQgAiAHNgIQIAIgCDYCDCACIAk2AgggAkKBgICAEDcCACACIAMpA5ALNwEaIAJBImogA0GYC2ovAQA7AQACQEHAAkUNACACQSRqIANB0AhqQcAC/AoAAAtBlN+DASEFDAILAAsgA0EQaiADQb4Dai8BADsBACADIAMpAbYDNwMIDAELIAMtADkhASADQTxqEMcRDAILIAMtALUDIQEgAy0AtAMhBCADKAKwAyEFIAMoAqwDIQIgAygCqAMhBiADQTxqEMcRCyAGQQNGDQAgAEEDOgAJDAELIAAgAToACSAAIAQ6AAggACAFNgIEIAAgAjYCACAAIAMvAQg7AQoLIANBoAtqJAAL3AcCEH8BfiMAQRBrIgEkACABQQRqIAAoAhQiAiAAKAKwAiIDdiIEQQRBBBCkDiABKAIIIQUCQCABKAIEQQFGDQACQCAERQ0AIANBH3EhBkEAIQMgASgCDCIHIQgDQCAIIAM2AgAgCEEEaiEIIAQgA0EBaiIDRw0ACyAAKAIQIQkgBCEDIAQhCgJAAkACQAJAAkACQAJAA0AgCiILQX9qIQoDQCADIghFDQIgACAIQX9qIgMQ+xpC////////flYNAAsCQCALIAhGDQBBACEIQQAgAiADIAZ0IgxrIgsgCyACSxshDUEAIAIgCiAGdCIOayILIAsgAksbIQ8gCSAOQQN0aiELIAkgDEEDdGohEANAIA8gCEYNByANIAhGDQYgCykDACERIAsgECkDADcDACAQIBE3AwAgC0EIaiELIBBBCGohECAIQQFqIgggBnZFDQALIAogBE8NBCADIARPDQMgByAKQQJ0aiIIKAIAIQsgCCAHIANBAnRqIhAoAgA2AgAgECALNgIACyAAIAo2AiggCg0AC0GO9YMBQTRBxPWDARCrFAALIAFBBGogBEEEQQQQpA4gASgCCCEOIAEoAgRBAUYNBSABKAIMIQ0CQCAEQQJ0IgNFDQAgDSAHIAP8CgAAC0EAIQsDQAJAIAsgDSALQQJ0IhBqKAIAIgNGDQADQCADIgggBE8NByALIA0gCEECdGooAgAiA0cNAAsgByAQaiAINgIACyALQQFqIgsgBEcNAAsgACgCrAIhDEEAIQoDQAJAIAxFDQAgAiAKIAZ0IgsgAiALSRshCCAJIAtBA3RqIQMgDCEQAkACQANAIAIgCEYNASAEIAMpAwAiEUIriKciD00NAiADIAcgD0ECdGo1AgBCK4YgEUL///////8Bg4Q3AwAgA0EIaiEDIAtBAWohCyAIQQFqIQggEEF/aiIQRQ0DDAALCyALIAJBgPqDARDDEgALIA8gBEHU/YMBEMMSAAsgCkEBaiIKIARHDQALAkACQCAAKAIgIghFDQAgACgCHCEDA0AgAygCACILIARPDQIgAyAHIAtBAnRqKAIANgIAIANBBGohAyAIQX9qIggNAAsLIA4gDUEEQQQQxRIgBSAHQQRBBBDFEiABQRBqJAAPCyALIARB1P2DARDDEgALIAMgBEG0/YMBEMMSAAsgCiAEQbT9gwEQwxIACyAMIAhqIAJB8PmDARDDEgALIA4gCGogAkHw+YMBEMMSAAsgCCAEQcT9gwEQwxIACyAOIAEoAgxBuOSbARDYIAALQeD5gwEQySIACyAFIAEoAgxBgJ2bARDYIAALvwcBCn8jAEHQAGsiASQAQYGAxAAhAgJAIAAoAgQiAyAAKAIQIgRJDQAgACADIARrIgM2AgQgACAAKAIAIgIgBGoiBTYCAAJAAkACQAJAAkACQAJAIARBAkcNACACLQAAIgRBv39qQV9xQQpqIARBUGogBEE5SxsiBEEPSw0BIAItAAEiAkG/f2pBX3FBCmogAkFQaiACQTlLGyICQRBPDQIgBEEEdCACciIEwEF/Sg0FQYCAxAAhAiAEQf8BcSIGQcABSQ0HQQIhBwJAIAZB4AFJDQACQCAEQf8BcSIGQfABTw0AQQMhBwwBCyAGQfgBTw0IQQQhBwtBACECIAFBADoADyABQQA7AA0gASAEOgAMIAEgBzYCCCAHQQF0QX5qIQggASABQQxqNgIEIAFBDGpBAWohBANAAkAgA0ECTw0AQYCAxAAhAgwJCyAAIANBfmoiAzYCBCAAIAUgAmoiCUECajYCACAJLQAAIgZBv39qQV9xQQpqIAZBUGogBkE5SxsiCkEPSw0EIAlBAWotAAAiBkG/f2pBX3FBCmogBkFQaiAGQTlLGyIGQRBPDQUgBCAKQQR0IAZyOgAAIARBAWohBCAIIAJBAmoiAkcNAAwHCwtBkqmbAUEoQYyylwEQjBoAC0GcspcBEMkiAAtBnLKXARDJIgALQZyylwEQySIAC0GcspcBEMkiAAtBASEHIAFBATYCCCABQQA6AA8gAUEAOwANIAEgBDoADCABIAFBDGo2AgQLIAFBMGogAUEMaiAHEOEEQYCAxAAhAiABKAIwDQAgASgCNCEAIAEgASgCOCIDNgIUIAEgADYCECAAIANqIQQCQCADRQ0AAkACQCAALAAAIgNBf0wNACAAQQFqIQYgA0H/AXEhAgwBCyAALQABQT9xIQIgA0EfcSEGAkAgA0FfSw0AIAZBBnQgAnIhAiAAQQJqIQYMAQsgAkEGdCAALQACQT9xciECAkAgA0FwTw0AIAIgBkEMdHIhAiAAQQNqIQYMAQsgAkEGdCAALQADQT9xciAGQRJ0QYCA8ABxciECIABBBGohBgsCQCAGIARGDQAgBiwAAEF/ShoMAQsgAkGAgMQARw0BCyAAIAQQuR4hACABQQ6tQiCGIAFBzABqrYQ3A0AgAUEIrUIghiABQRBqrYQ3AzggAUH1Aa1CIIYgAUEEaq2ENwMwIAEgADYCTCABQQQ2AhwgAUGcs5cBNgIYIAFCAzcCJCABIAFBMGo2AiAgAUEYakG8s5cBEKgdAAsgAUHQAGokACACC44IAQd/IwBBIGsiAiQAAkACQAJAAkACQCABKAIADgUEAAECAwQLIAEoAgRBAUcNAyAALQA5IQMgAEEBOgA5IAEoAgggABBtIAAgAzoAOQwDCyAALQA5IQMgAEEBOgA5IAEoAgQgABBtIAAgAzoAOQwCCyAAIAEoAgQiBEHAAGoQiwkCQCAEQYQBaigCACIBRQ0AIARBgAFqKAIAIgMgAUHYAGxqIQUgAkEMaiEGIAJBCGohBwNAAkACQAJAIAMoAgAiAUF8ag4CAgABCyADKAIEIQEgAC0AOSEIIABBAToAOSACQQM2AgggASAAEG0gACAIOgA5IAIoAggiAUEBSw0BIAcgAhDOGiAHIAIpAwAQnhogAUUNASACKAIMIgEgASgCACIBQX9qNgIAIAFBAUcNASAGEOAQDAELAkACQAJAIAEOBAMAAQIDCyADKAIEQQFHDQIgAC0AOSEBIABBAToAOSADKAIIIAAQbSAAIAE6ADkMAgsgAygCBCAAEOEBDAELIAMoAgwhCCADKAIIIQEgAiAANgIAIAhFDQAgCEEobCEIA0AgAiABEIkFIAFBKGohASAIQVhqIggNAAsLIANB2ABqIgMgBUcNAAsLAkAgBCgCeCIBRQ0AIAAtADRBAUcNACAALQA6IQUgAC0AOSEHIABBgQI7ADkCQCABKAIIIgNFDQAgASgCBCEBIANBAnQhAwNAAkAgAC0ANEEBRw0AIAEoAgAhCCAAQYECOwA5IAggABCAAiAAQYECOwA5CyABQQRqIQEgA0F8aiIDDQALCyAAIAU6ADogACAHOgA5CwJAIARBmAFqKAIAIgFFDQAgAUEobCEDIARBlAFqKAIAQQRqIQEgAkEMaiEGIAJBCGohBwNAAkACQAJAAkACQCABQXxqKAIADgUEAAECAwQLIAEoAgBBAUcNAyABQQRqKAIAIQggAC0AOSEFIABBAToAOSACQQM2AgggCCAAEG0gACAFOgA5IAIoAggiCEEBSw0DIAcgAhDOGiAHIAIpAwAQnhogCEUNAyACKAIMIgggCCgCACIIQX9qNgIAIAhBAUcNAyAGEOAQDAMLIAEoAgAhCCAALQA5IQUgAEEBOgA5IAJBAzYCCCAIIAAQbSAAIAU6ADkgAigCCCIIQQFLDQIgByACEM4aIAcgAikDABCeGiAIRQ0CIAIoAgwiCCAIKAIAIghBf2o2AgAgCEEBRw0CIAYQ4BAMAgsgASAAEPIFDAELIAEgABCNAwsgAUEoaiEBIANBWGoiAw0ACwsgBC0APEEGRg0BIAAgBEEQahCLCQwBCyABKAIMIgNFDQAgASgCCCEBIANBKGwhAwNAIAAgARDOAyABQShqIQEgA0FYaiIDDQALCyACQSBqJAAL1AcBBX8jAEHQAWsiAiQAIAAoAgAhAwJAAkACQAJAAkACQAJAIAEoAgAOBQYAAQIFBgsgASgCBEEBRw0FIAEoAggiASgCAEEaRw0DIAJB0ABqIAMoAgAgA0EEaigCACABQQhqIgAQgg0gAigCUEEyRg0FIAEQ0QEgAUE4aiACQdAAakE4aikDADcDACABQTBqIAJB0ABqQTBqKQMANwMAIAFBKGogAkHQAGpBKGopAwA3AwAgAUEgaiACQdAAakEgaikDADcDACABQRhqIAJB0ABqQRhqKQMANwMAIAFBEGogAkHQAGpBEGopAwA3AwAgACACQdAAakEIaikDADcDACABIAIpA1A3AwAMBQsgASgCBCIBKAIAQRpHDQEgAkEQaiADKAIAIANBBGooAgAgAUEIaiIAEIINIAIoAhBBMkYNBCABENEBIAFBOGogAkEQakE4aikDADcDACABQTBqIAJBEGpBMGopAwA3AwAgAUEoaiACQRBqQShqKQMANwMAIAFBIGogAkEQakEgaikDADcDACABQRhqIAJBEGpBGGopAwA3AwAgAUEQaiACQRBqQRBqKQMANwMAIAAgAkEQakEIaikDADcDACABIAIpAxA3AwAMBAsCQCABKAIEIgQtAGxBAkcNACAEQcAAaiEBA0AgASgCGCIBLQAsQQJGDQALCwJAIARBhAFqKAIAIgBFDQAgBEGAAWooAgAhASAAQdgAbCEAA0ACQAJAAkACQCABKAIAQXxqDgIDAAELIAFBBGooAgAiBSgCAEEaRw0BIAJBkAFqIAMoAgAgA0EEaigCACAFQQhqIgYQgg0gAigCkAFBMkYNAiAFENEBIAVBOGogAkGQAWpBOGopAwA3AwAgBUEwaiACQZABakEwaikDADcDACAFQShqIAJBkAFqQShqKQMANwMAIAVBIGogAkGQAWpBIGopAwA3AwAgBUEYaiACQZABakEYaikDADcDACAFQRBqIAJBkAFqQRBqKQMANwMAIAYgAkGQAWpBCGopAwA3AwAgBSACKQOQATcDAAwCCyABIAMQjAkMAQsgBSADEEYLIAFB2ABqIQEgAEGof2oiAA0ACwsgBEGYAWooAgAhACAEQZQBaigCACEBIAIgAzYCDAJAIABFDQAgAEEobCEAA0AgAkEMaiABEM8DIAFBKGohASAAQVhqIgANAAsLIAQtADwiAUEGRg0DIAFBAkcNAyAEQRBqIQEDQCABKAIYIgEtACxBAkYNAAwECwsgASADEEYMAgsgASADEEYMAQsgAUEEaiADEMECCyACQdABaiQAC40IAgd/AX4jAEHQAGsiAiQAIAIgARCBCiIDNgIMAkACQAJAAkACQAJAAkACQCADQdsARw0AIAJBKGpBCGoiBCABKAIAIgNB2ABqKAIANgIAIAIgAykCUDcDKCADQdAAaiEDIAEQ2whFDQUgARCBCkE6Rw0FAkAgARDbCA0AIAMgAikDKDcCACADQQhqIAJBKGpBCGooAgA2AgAMBwsCQCABEIEKIgVB3gBHDQAgARDbCA0AIAMgAikDKDcCACADQQhqIAJBKGpBCGooAgA2AgAMBwsgAygCACEGAkADQCABEIEKQTpGDQEgARDbCA0ACwsgAygCACIHIAEoAggiBEYNAiABKAIEIQggByAGSQ0EIAZFDQMgBiAESQ0BIAYgBEcNBAwDCyACQQA2AhAgAkEMakGYgoUBIAJBEGpB2IyFARDiGwALIAggBmosAABBv39KDQEMAgsgAyACKQMoNwIAIANBCGogAkEoakEIaigCADYCAAwDCwJAIAdFDQAgByAETw0BIAggB2osAABBv39MDQELQQIhBAJAIAFB1IyFAUECEOQPDQAgAyACKQMoNwIAIANBCGogAkEoakEIaigCADYCAAwECwJAAkACQCAIIAZqIgQgByAGayIGQYmchQFBBRDFHkUNAEEAIQEMAQsCQCAEIAZB3eaZAUEFEMUeRQ0AQQEhAQwBCwJAIAQgBkGOnIUBQQUQxR5FDQBBAiEBDAELAkAgBCAGQZOchQFBBRDFHkUNAEEDIQEMAQtBBSEBAkAgBCAGQZichQFBBRDFHkUNAEEEIQEMAQsgBCAGQZ2chQFBBRDFHg0AAkAgBCAGQaKchQFBBRDFHkUNAEEGIQEMAQsCQCAEIAZBp5yFAUEFEMUeRQ0AQQchAQwBCwJAIAQgBkGsnIUBQQUQxR5FDQBBCCEBDAELAkAgBCAGQbGchQFBBRDFHkUNAEEJIQEMAQsCQCAEIAZBtpyFAUEFEMUeRQ0AQQohAQwBCwJAIAQgBkG7nIUBQQUQxR5FDQBBCyEBDAELAkAgBCAGQYfQmQFBBBDFHkUNAEEMIQEMAQsgBCAGQcCchQFBBhDFHkUNAUENIQELIAJBOGpBCGoiBCACQShqQQhqKAIANgIAIAJBzABqIANBCGooAgA2AgAgACACKQMoIgk3AgAgACABOgAYIAIgAykCADcCRCAAQQhqIAQpAwA3AgAgAEEQaiACQThqQRBqKQMANwIAIAIgCTcDOCAFQd4ARiEEDAQLIAMgAikDKDcCACADQQhqIAJBKGpBCGooAgA2AgAMAgsgCCAEIAYgB0HEjIUBEMQhAAsgAyACKQMoNwIAIANBCGogBCgCADYCAAtBAiEECyAAIAQ6ABkgAkHQAGokAAuyBwEBfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgBBdGoiAkEHIAJBJkkbDiYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJQALIAFBCGohAiABQQRqIQEMLAsgAUEUaiECIAFBEGohAQwrCyABQRRqIQIgAUEQaiEBDCoLIAEoAiAiAUE0aiECIAFBMGohAQwpCyABQQxqIQIgAUEIaiEBDCgLIAFBCGohAiABQQRqIQEMJwsgAUEQaiECIAFBDGohAQwmCyABQTRqIQIgAUEwaiEBDCULIAFBJGohAiABQSBqIQEMJAsgAUEkaiECIAFBIGohAQwjCyABQRRqIQIgAUEQaiEBDCILIAFBIGohAiABQRxqIQEMIQsgAUEYaiECIAFBFGohAQwgCyABQRRqIQIgAUEQaiEBDB8LIAFBFGohAiABQRBqIQEMHgsgASgCCA4HFhcYGRobHBYLIAFBIGohAiABQRxqIQEMHAsgAUEQaiECIAFBDGohAQwbCyABQRhqIQIgAUEUaiEBDBoLIAEoAiAiAUEoaiECIAFBJGohAQwZCyABQQhqIQIgAUEEaiEBDBgLIAFBCGohAiABQQRqIQEMFwsgAUEMaiECIAFBCGohAQwWCyABQQxqIQIgAUEIaiEBDBULIAFBHGohAiABQRhqIQEMFAsgAUEsaiECIAFBKGohAQwTCyABQQhqIQIgAUEEaiEBDBILIAEoAgQiAUEEaiECDBELIAFBFGohAiABQRBqIQEMEAsgAUEQaiECIAFBDGohAQwPCyABQQxqIQIgAUEIaiEBDA4LIAFBDGohAiABQQhqIQEMDQsgAUEQaiECIAFBDGohAQwMCyABQRBqIQIgAUEMaiEBDAsLIAFBEGohAiABQQxqIQEMCgsgAUEUaiECIAFBEGohAQwJCyABQQxqIQIgAUEIaiEBDAgLIAFBCGohAiABQQRqIQEMBwsgAUEcaiECIAFBGGohAQwGCyABQRBqIQIgAUEMaiEBDAULIAFBEGohAiABQQxqIQEMBAsgAUEUaiECIAFBEGohAQwDCyABQRRqIQIgAUEQaiEBDAILIAFBJGohAiABQSBqIQEMAQsgAUEkaiECIAFBIGohAQsgACACKAIANgIEIAAgASgCADYCAAuyBwEBfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgBBdGoiAkEHIAJBJkkbDiYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJQALIAFBCGohAiABQQRqIQEMLAsgAUEUaiECIAFBEGohAQwrCyABQRRqIQIgAUEQaiEBDCoLIAEoAiAiAUE0aiECIAFBMGohAQwpCyABQQxqIQIgAUEIaiEBDCgLIAFBCGohAiABQQRqIQEMJwsgAUEQaiECIAFBDGohAQwmCyABQTRqIQIgAUEwaiEBDCULIAFBJGohAiABQSBqIQEMJAsgAUEkaiECIAFBIGohAQwjCyABQRRqIQIgAUEQaiEBDCILIAFBIGohAiABQRxqIQEMIQsgAUEYaiECIAFBFGohAQwgCyABQRRqIQIgAUEQaiEBDB8LIAFBFGohAiABQRBqIQEMHgsgASgCCA4HFhcYGRobHBYLIAFBIGohAiABQRxqIQEMHAsgAUEQaiECIAFBDGohAQwbCyABQRhqIQIgAUEUaiEBDBoLIAEoAiAiAUEoaiECIAFBJGohAQwZCyABQQhqIQIgAUEEaiEBDBgLIAFBCGohAiABQQRqIQEMFwsgAUEMaiECIAFBCGohAQwWCyABQQxqIQIgAUEIaiEBDBULIAFBHGohAiABQRhqIQEMFAsgAUEsaiECIAFBKGohAQwTCyABQQhqIQIgAUEEaiEBDBILIAEoAgQiAUEEaiECDBELIAFBFGohAiABQRBqIQEMEAsgAUEQaiECIAFBDGohAQwPCyABQQxqIQIgAUEIaiEBDA4LIAFBDGohAiABQQhqIQEMDQsgAUEQaiECIAFBDGohAQwMCyABQRBqIQIgAUEMaiEBDAsLIAFBEGohAiABQQxqIQEMCgsgAUEUaiECIAFBEGohAQwJCyABQQxqIQIgAUEIaiEBDAgLIAFBCGohAiABQQRqIQEMBwsgAUEcaiECIAFBGGohAQwGCyABQRBqIQIgAUEMaiEBDAULIAFBEGohAiABQQxqIQEMBAsgAUEUaiECIAFBEGohAQwDCyABQRRqIQIgAUEQaiEBDAILIAFBJGohAiABQSBqIQEMAQsgAUEkaiECIAFBIGohAQsgACACKAIANgIEIAAgASgCADYCAAvHBwIGfwN+IwBBgAFrIgIkAAJAAkAgAC0AnAENACABKAIAQRRHDQAgASgCKCIDKAIAQRpHDQAgAkEwaiADKQMIIANBGGooAgAQ5xogAiACKAI4IgM2AhAgAiACKQMwIgg3AwgCQAJAAkACQCAALQCZAUUNACAAKAJcRQ0BIAggAxCdGiEIIAAoAlAiBEFwaiEFIAhCGYhCgYKEiJCgwIABfiEJIAAoAlQiBiAIp3EhA0EAIQcDQAJAIAQgA2opAAAiCiAJhSIIQn+FIAhC//379+/fv/9+fINCgIGChIiQoMCAf4MiCFANAANAIAJBCGogBSAIeqdBA3YgA2ogBnFBBHRrEKkgDQMgCEJ/fCAIgyIIUEUNAAsLIAogCkIBhoNCgIGChIiQoMCAf4NQRQ0CIAMgB0EIaiIHaiAGcSEDDAALCwJAAkAgASgCCA4DAAIBAAsgASkDECIIQgODQgBSDQMgCKciAyADKAIAIgNBAWo2AgAgA0F/Sg0DDAULAkACQCABKAIMIgMoAgBBZWoOAgEAAgsgAygCDA0BIAMoAhhBAUcNAQJAIAMoAhQiAykDEFANACACQTBqIANBEGoQ0AkCQCACKAIwRQ0AIAIpAzghCAwFCyACKAI0KQMAIghCA4NCAFINBCAIpyIDIAMoAgAiA0EBajYCACADQX9MDQYMBAsgAykDACIIQgODQgBSDQMgCKciAyADKAIAIgNBAWo2AgAgA0F/TA0FDAMLIAMoAghFDQELIAIpAwgiCEIDg0IAUg0CIAinIgAgACgCACIBQX9qNgIAIAFBAUcNAiAAIAAoAhAQ6R0MAgsgAkEwaiADQRBqENAJAkAgAigCMEEBRw0AIAIpAzghCAwBCyACKAI0KQMAIghCA4NCAFINACAIpyIDIAMoAgAiA0EBajYCACADQX9MDQILIAIgCDcDKCACIAIoAhA2AiAgAiACKQMINwMYAkAgAEHAAGogAkEYahCjCCIARQ0AAkAgACgCGEECTw0AIAJB8ABqIABBGGoQ9wkgAkEwaiACQfAAahDJBCABEOQBIAFBOGogAkEwakE4aikDADcDACABQTBqIAJBMGpBMGopAwA3AwAgAUEoaiACQTBqQShqKQMANwMAIAFBIGogAkEwakEgaikDADcDACABQRhqIAJBMGpBGGopAwA3AwAgAUEQaiACQTBqQRBqKQMANwMAIAFBCGogAkEwakEIaikDADcDACABIAIpAzA3AwALIAJBGGoQ6REMAQsgAkEYahDpEQsgAkGAAWokAA8LAAvSBwIBfwF+IwBBIGsiAyQAIANBEGogAiABKAIAQQAQogICQAJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELAkAgAS0AKkUNACADQQA2AhAgA0EIaiACIANBEGpBr5ubAUEFEIYNAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAgsgA0EQaiACEN0PIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELAkAgAS0AKEUNACADQQA2AhAgA0EIaiACIANBEGpBlJybAUECEIYNAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAgsgA0EQaiACEN0PIAMtABBB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AQIDBgYEBQALIABBADYCGAJAIAAoAiAiAUEIaigCACICRQ0AIAFBBGooAgAhACACQQxsIQIDQCAAKAIAELoBIABBDGohACACQXRqIgINAAsLAkAgAUEUaigCACICRQ0AIAFBEGooAgAhACACQdgAbCECA0AgABDJAiAAQdgAaiEAIAJBqH9qIgINAAsLIAEoAjAiAEUNBSAAELoBDwsgAEEANgIYAkAgACgCICIDQQhqKAIAIgBFDQAgA0EEaigCACIBIABBBnRqIQQDQAJAIAFBOGooAgAiAkUNACABQTRqKAIAIQAgAkEMbCECA0AgACgCABC6ASAAQQxqIQAgAkF0aiICDQALCyABEL4LIAFBwABqIgAhASAAIARHDQALCwJAIANBFGooAgAiAkUNACADQRBqKAIAIQAgAkEMbCECA0AgACgCABC6ASAAQQxqIQAgAkF0aiICDQALCyADKAIYQYCAgIB4Rg0EIANBIGooAgAiAkUNBCADQRxqKAIAIQAgAkEwbCECA0AgABCpAyAAQTBqIQAgAkFQaiICDQAMBQsLIAAoAgQiAEEIaigCACICRQ0DIABBBGooAgAiACACQThsaiEBA0AgABD+CQJAIABBMGooAgAiAkUNACACELoBCyAAQThqIgAgAUcNAAwECwsgACgCBCIAQQhqKAIAIgJFDQIgAEEEaigCACIAIAJBOGxqIQEDQCAAEP4JAkAgAEEwaigCACICRQ0AIAIQugELIABBOGoiACABRw0ADAMLCyAAKAIEIgBBADYCECAAQShqKAIAIgJFDQEgAEEkaigCACIAIAJBMGxqIQEDQAJAIAAoAgANACAAQRhqQQA2AgALAkAgAEEoaigCACICRQ0AIAIQugELIABBMGoiACABRw0ADAILCwJAIAAoAgQiACgCAA0AIABBADYCGAsgAC0ARSICQQNGDQACQCACQQJGDQAgAEEANgI4AkAgACgCQCIALQAlQQJGDQAgAEEANgIYIABBIGoQ4hAPCyAAQQhqKAIAIgJFDQEgAEEEaigCACEAIAJBOGwhAgNAAkACQCAAKAIAQQlHDQAgAEEIahCpAwwBCyAAEMkDCyAAQThqIQAgAkFIaiICDQAMAgsLIABBKGooAgAiAkUNACAAQSRqKAIAIQAgAkE4bCECA0ACQAJAIAAoAgBBCUcNACAAQQhq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IAcgCk8NBCAAKAIEIgggBmoiDC0AACENIAxBAWotAAAhDAJAIAogACgCAEcNACAAQfSihQEQpxggACgCBCEICyAIIAlqIgggDToAACAAIApBAWoiCjYCCCAIQQFqIAw6AAAgBkECaiEGIAlBAmohCSADIAdBAWoiB0cNAAsLIAogA0kNASAAQQA2AgggAiAANgIUIAIgACgCBCIGNgIMIAIgAzYCGCACIAogA2s2AhwgAiAGIANBAXRqNgIQIAJBDGoQqAwgACAALQAMIAEtAAxxOgAMCyACQSBqJAAPCyADIApBpPeaARC8IgALIAcgCkHkooUBEMMSAAvoBwIHfwR+IwBBMGsiAyQAAkACQAJAAkACQCACQQhJDQACQAJAIAJBEUkNACACQXBqIQRC05GMrYjR2p8kIQpCxObBm+DF4owTIQtBACEFA0AgCyEMAkAgBSAESQ0AIANBGGogBCABIAJBuK+YARCUHSADKAIcIgVBB00NBiAFQQ9NDQcgAygCGCIFKQAIIAyFIQsgBSkAACAKhSEKDAMLIAEgBWoiBkEIaikAAELQ4/zMooTOhKR/hSILQv////8PgyAGKQAAIAqFIgpCIIh+QiCJIAtCIIggCkL/////D4N+hSELIAVBEGohBSAMIQoMAAsLIAEpAAAhCyADQRBqIAJBeGogASACQYiwmAEQlB0gAygCFEEIRw0FIAtC05GMrYjR2p8khSEKIAMoAhApAABCxObBm+DF4owThSELCyACQd3L3Z55bCAKQv////8PgyALQiCIfiACrYUgCkIgiCALQv////8Pg35CIImFIgunakHdy92eeWwgC0IgiKdqQd3L3Z55bEEPdyIFrSELAkACQCACQYAESw0AIAAoAgAiB0F8aiEIIAtCGYhCgYKEiJCgwIABfiENIAAoAgQiBCAFcSEGQQAhCQJAA0AgAyAHIAZqKQAAIgogDYUiDEJ/hSAMQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DNwMoAkADQCADQQhqIANBKGoQ9xcgAygCCEEBcUUNASAIIAMoAgwgBmogBHFBAnRrKAIAIgUpAwggC1INACAFQRhqIAUoAhAgASACEMUeRQ0ADAMLCwJAIAogCkIBhoNCgIGChIiQoMCAf4NCAFINACAGIAlBCGoiCWogBHEhBgwBCwsgByAEIAsgASAC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DAELIAJB6ABqQQhqIAJByAFqQQhqKQIANwMAIAJB6ABqQRBqIAJByAFqQRBqKQIANwMAIAIgAikCyAE3A2ggAiAEOgCAASACQQhqIAJBEGogAkHoAGoQ8wogAigCCEEBcUUNACACKAIMIQMgAkHIAWogARD7DAJAIAMgAigCGCIETw0AIAJBlAFqIAIoAhQgA0EcbGoiA0EIaikCADcCACACQZwBaiADQRBqKQIANwIAIAJBDTYCiAEgAiADKQIANwKMASAAIAEoAgQgASgCCCACQcgBaiACQYgBahChDQwECyADIARBkIeFARDDEgALIAEQ2wgNAAsgAkHcAWogBkEIaigCACIDNgIAIAJByAFqQQhqIAM2AgAgAiAGKQIAIgc3AtQBIAIgBzcDyAEgAkEPNgKIASAAIAEoAgQgASgCCCACQcgBaiACQYgBahChDQwBCyACKAIEIQMgAkHIAWogARD7DAJAIAMgAigCGCIETw0AIAJBlAFqIAIoAhQgA0EcbGoiA0EIaikCADcCACACQZwBaiADQRBqKQIANwIAIAJBDjYCiAEgAiADKQIANwKMASAAIAEoAgQgASgCCCACQcgBaiACQYgBahChDQwBCyADIARBgIeFARDDEgALIAIoAhAgAigCFEEEQRwQ0BILIAJB4AFqJAAL9QcBCX8jAEHAAGsiAyQAIAFBCGohBAJAAkACQAJAAkACQAJAIAEoAghBuYGAgHhHDQAgASgCHCEFIAEoAhghBiABKAIQIQcgASgCFCEIIANBNGogASgCDCIJKAIAIAIQ+wMgAygCOCEKIAMgCEEBQQEQow4gAygCBCELIAMoAgBBAUYNASADKAIIIQICQCAIRQ0AIAIgByAI/AoAAAsgAyAINgIIIAMgAjYCBCADIAs2AgAgCkEcaiAGIAUgAxDcFCAAQQhqIANBNGpBCGooAgA2AgAgACADKQI0NwIAIAlBBEEEEL0TAkAgBCgCAEG5gYCAeEYNACAEEK4DCyABQSBBCBC9EwwGCyABKAIEIQggASgCACELIANBEGogBEEQaikDADcDACADQQhqIARBCGopAwA3AwAgAyAEKQMANwMAIAFBIEEIEL0TIANBHGogAxBiIANBKGogAkEDIAMoAiAiBSADKAIkEPsNQQAtAOD2nQEaIAMoAiwhAUEIEIQBIgRFDQEgBCAINgIEIAQgCzYCACABKAIcIAFBIGoiAigCABDMIiABQSxqIggoAgAgAUEwaigCABDsHCABKAIoIAgoAgAQzSIgCEIENwIAIAFCATcCJCACIAQ2AgAgAUEBNgIcIAFBHGohBAJAAkAgAygCAEHL////B2oOBQAGBgYBBgsgAygCCCECIAMoAgQhCyADQTRqQTZBAUEBEKMOIAMoAjghCCADKAI0QQFGDQMgAygCPCIBQS5qQQApAOyrmQE3AAAgAUEoakEAKQDmq5kBNwAAIAFBIGpBACkA3quZATcAACABQRhqQQApANarmQE3AAAgAUEQakEAKQDOq5kBNwAAIAFBCGpBACkAxquZATcAACABQQApAL6rmQE3AAAgA0E2NgI8IAMgATYCOCADIAg2AjQgBCALIAIgA0E0ahDcFAwFCyADKAIIIQIgAygCBCELIANBNGpBKUEBQQEQow4gAygCOCEIIAMoAjRBAUYNAyADKAI8IgFBKGpBAC0AnKyZAToAACABQSBqQQApAJSsmQE3AAAgAUEYakEAKQCMrJkBNwAAIAFBEGpBACkAhKyZATcAACABQQhqQQApAPyrmQE3AAAgAUEAKQD0q5kBNwAAIANBKTYCPCADIAE2AjggAyAINgI0IAQgCyACIANBNGoQ3BQMBAsgCyADKAIIQbjkmwEQ2CALAAsgCCADKAI8QbjkmwEQ2CAACyAIIAMoAjxBuOSbARDYIAALIAAgAykCKDcCACAAQQhqIANBKGpBCGooAgA2AgACQCADKAIcIgFBgICAgHhGDQAgASAFEL0iCyADEK4DCyADQcAAaiQAC/wGAg1/A34jAEGgAWsiAyQAIAMgAkEIQSgQow4gAygCBCEEAkACQCADKAIAQQFGDQAgAygCCCEFAkAgBEUNACACQShsIQZBACEHIAQhCANAIAYgB0YNAQJAAkACQAJAAkACQCABIAdqIgkoAgAiCg4FAAECAwQACyAJQRxqKAIAIQsgCUEYaigCACEMAkAgCUEIaikDACIQQgODQgBSDQAgEKciDSANKAIAIg1BAWo2AgAgDUF/TA0JCyAJQRBqKQMAIhFCA4NCAFINBCARpyIJIAkoAgAiCUEBajYCACAJQX9KDQQMCAsgCUEQaikCACERAkACQCAJQQRqKAIAIg5BAUcNAEEALQDg9p0BGkHAABCEASIN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CwJAAkACQAJAAkAgASgCBCIBKAIADgcIAAECAwgECAsgAUEMaigCACIDRQ0HIAFBCGooAgAhASADQShsIQMDQAJAIAEoAgBBB0YNACABIAAQqgMLIAFBKGohASADQVhqIgMNAAwICwsgASgCBCAAEKoDDAYLIAFBDGooAgAiA0UNBSABQQhqKAIAIQEgA0E4bCEDA0AgACABEJUEIAFBOGohASADQUhqIgMNAAwGCwsgASgCBCAAEKoDIAEoAggiASgCAEEaRw0CIAJBwABqIAAoAgAgACgCBCABQQhqIgAQgg0gAigCQEEyRg0EIAEQ0QEgAUE4aiACQcAAakE4aikDADcDACABQTBqIAJBwABqQTBqKQMANwMAIAFBKGogAkHAAGpBKGopAwA3AwAgAUEgaiACQcAAakEgaikDADcDACABQRhqIAJBwABqQRhqKQMANwMAIAFBEGogAkHAAGpBEGopAwA3AwAgACACQcAAakEIaikDADcDACABIAIpA0A3AwAMBAsgASgCBCIBKAIAQRpHDQIgAiAAKAIAIAAoAgQgAUEIaiIAEIINIAIoAgBBMkYNAyABENEBIAFBOGogAkE4aikDADcDACABQTBqIAJBMGopAwA3AwAgAUEoaiACQShqKQMANwMAIAFBIGogAkEgaikDADcDACABQRhqIAJBGGopAwA3AwAgAUEQaiACQRBqKQMANwMAIAAgAkEIaikDADcDACABIAIpAwA3AwAMAwsgASAAEEYMAgsgASAAEEYMAQsgASAAEEYLIAJBwAFqJAAL/wYBBn8jAEHwAGsiASQAAkACQAJAAkAgACgCACICRQ0AQQAhAwJAIAAoAggiBCAAKAIEIgVPDQAgAiAEai0AAEHVAEcNAEEBIQMgACAEQQFqIgQ2AggLAkACQAJAAkAgBCAFTw0AIAIgBGotAABBywBGDQELIANFDQNBACEEDAELIAAgBEEBaiIGNgIIAkACQCAGIAVPDQAgAiAGai0AAEHDAEcNACAAIARBAmo2AghBASECQayvlwEhBAwBCyABQcgAaiAAEM4EAkAgASgCSCIEDQAgAS0ATCECAkAgACgCECIFRQ0AQQEhBCAFQeS0lwFB1LSXASACQQFxIgMbQRlBECADGxCcBg0ICyAAIAI6AARBACEEIABBADYCAAwHCwJAIAEoAkwiAkUN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aiACQYABakEgaikDADcDACAEQRhqIAJBgAFqQRhqKQMANwMAIARBEGogAkGAAWpBEGopAwA3AwAgBSACQYABakEIaikDADcDACAEIAIpA4ABNwMADAILIABBBGogARDcBQwBCyAEIAEQRgsgAEE4aiEAIANBSGoiAw0ADAMLCwJAIAAoAgQiACgCAEEaRw0AIAIgASgCACABKAIEIABBCGoiARCCDSACKAIAQTJGDQIgABDRASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACABIAJBCGopAwA3AwAgACACKQMANwMADAILIAAgARBGDAELIAAoAgQgARCqAwJAIAAoAggiACgCAEEaRw0AIAJBwABqIAEoAgAgASgCBCAAQQhqIgEQgg0gAigCQEEyRg0BIAAQ0QEgAEE4aiACQcAAakE4aikDADcDACAAQTBqIAJBwABqQTBqKQMANwMAIABBKGogAkHAAGpBKGopAwA3AwAgAEEgaiACQcAAakEgaikDADcDACAAQRhqIAJBwABqQRhqKQMANwMAIABBEGogAkHAAGpBEGopAwA3AwAgASACQcAAakEIaikDADcDACAAIAIpA0A3AwAMAQsgACABEEYLIAJBwAFqJAAL3QYBCH8jAEEQayICJAACQAJAAkACQCAAKAIADgQDAAECAwsgACgCBEEBRw0CIAEgACgCCBDFAQwCCwJAIAAoAgQiAy0AbEECRw0AIANBwABqIQADQCAAKAIYIgAtACxBAkYNAAsLAkAgA0GEAWooAgAiBEUNACADQYABaigCACEAIARB2ABsIQQDQAJAAkACQCAAKAIAQXxqDgICAAELIAEgAEEEaigCABDFAQwBCyAAIAEQnAQLIABB2ABqIQAgBEGof2oiBA0ACwsCQCADQZgBaigCACIARQ0AIANBlAFqKAIAIgUgAEEobGohBgNAAkACQAJAAkACQCAFKAIADgUEAAECAwQLIAUoAgRBAUcNAyABIAUoAggQxQEMAwsgASAFKAIEEMUBDAILAkAgBSgCBCIHLQBsQQJHDQAgB0HAAGohAANAIAAoAhgiAC0ALEECRg0ACwsCQCAHQYQBaigC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KAIIIANBuAJqIANB1AJqEKENIANB8AFqEOUWIANBgAFqEJQaIAQgBCgCEEEBajYCECACEJQaDAQLAkBBwABFDQAgACADQRhqQcAA/AoAAAsgBCAEKAIQQQFqNgIQDAMLIANBHGohBQJAQcgARQ0AIANB8AFqIAJBJGpByAD8CgAACyADQcgCaiACQeQAaikCADcDACADQcACaiACQdwAaikCADcDACADIAIpAlQ3A7gCIANBFTYC1AIgACABKAIEIAEoAgggA0G4AmogA0HUAmoQoQ0gA0HwAWoQ5RYgBRDDAyAEIAQoAhBBAWo2AhAgA0GAAWoQlBoMAgtBkqmbAUEoQYiChQEQjBoAC0HogYUBEPcWAAsgA0HwAmokAAvGBgEDfyMAQcABayICJAACQCAAKAIAQQNHDQACQCAAKAIEIgMoAgBBGkcNACACQYABaiABKAIAIAEoAgQgA0EIaiIEEIINIAIoAoABQTJGDQEgAxDRASADQThqIAJBgAFqQThqKQMANwMAIANBMGogAkGAAWpBMGopAwA3AwAgA0EoaiACQYABakEoaikDADcDACADQSBqIAJBgAFqQSBqKQMANwMAIANBGGogAkGAAWpBGGopAwA3AwAgA0EQaiACQYABakEQaikDADcDACAEIAJBgAFqQQhqKQMANwMAIAMgAikDgAE3AwAMAQsgAyABEEYLAkACQAJAAkACQAJAAkACQCAAKAIgIgAoAgAOBwcAAQIDBwQHCyAAQQxqKAIAIgNFDQYgAEEIaigCACEAIANBKGwhAwNAAkAgACgCAEEHRg0AIAAgARCqAwsgAEEoaiEAIANBWGoiAw0ADAcLCyAAKAIEIAEQqgMMBQsgAEEMaigCACIDRQ0EIABBCGooAgAhACADQThsIQMDQCABIAAQlQQgAEE4aiEAIANBSGoiAw0ADAULCyAAKAIEIAEQqgMgACgCCCIAKAIAQRpHDQEgAkHAAGogASgCACABKAIEIABBCGoiARCCDSACKAJAQTJGDQMgABDRASAAQThqIAJBwABqQThqKQMANwMAIABBMGogAkHAAGpBMGopAwA3AwAgAEEoaiACQcAAakEoaikDADcDACAAQSBqIAJBwABqQSBqKQMANwMAIABBGGogAkHAAGpBGGopAwA3AwAgAEEQaiACQcAAakEQaikDADcDACAB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NgIcIAYgCTYCGCAGIAo2AhQgBiALNgIQIAYgDTYCDCAGIA82AgggBiAONgIEIAYgDDYCACAAIAM6AAwgACAENgIIIAAgBTYCBCAAIAY2AgAgAkHAAGokAA8LIA4gAigCCEGIpJoBENggAAsAC84GAgZ/AX4jAEEgayICJABBAC0A4PadARoCQEHAABCEASIDRQ0AIANBADYCCCADQgw3AwACQAJAAkACQAJAAkACQAJAIAAoAgAOBQACAwEEAAsgACkDECEIIAAoAgwhBCAAKAIIIQVBACEGDAYLIAAoAgwhBCAAKAIIIQUgACgCBCEHQQIhBgwECyACQQRqQRRqIABBGGopAgA3AgAgAkEQaiAAQRBqKQIANwIAQQAhBEEALQDg9p0BGiACIAApAgg3AghBwAAQhAEiB0UNBSAHQQA2AgggB0EbNgIAIAcgAikCBDcCDCAHQRRqIAJBDGopAgA3AgAgB0EcaiACQQRqQRBqKQIANwIAIAdBJGogAkEEakEYaigCADYCAAwCCyACQQRqQRRqIABBGGopAgA3AgAgAkEQaiAAQRBqKQIANwIAQQAhBEEALQDg9p0BGiACIAApAgg3AghBwAAQhAEiB0UNBCAHQQM2AgggB0EbNgIAIAcgAikCBDcCDCAHQRRqIAJBDGopAgA3AgAgB0EcaiACQQRqQRBqKQIANwIAIAdBJGogAkEEakEYaigCADYCAAwBCyACQQRqQRRqIABBGGopAgA3AgAgAkEQaiAAQRBqKQIANwIAQQAhBEEALQDg9p0BGiACIAApAgg3AghBwAAQhAEiB0UNAyAHQQQ2AgggB0EbNgIAIAcgAikCBDcCDCAHQRRqIAJBDGopAgA3AgAgB0EcaiACQQRqQRBqKQIANwIAIAdBJGogAkEEakEYaigCADYCAAtBAiEGQQAhBQsLQQAtAOD2nQEaQcAAEIQBIgBFDQAgACABKQMANwMAIABBOGogAUE4aikDADcDACAAQTBqIAFBMGopAwA3AwAgAEEoaiABQShqKQMANwMAIABBIGogAUEgaikDADcDACAAQRhqIAFBGGopAwA3AwAgAEEQaiABQRBqKQMANwMAIABBCGogAUEIaikDADcDAEEALQDg9p0BGkHAABCEASIBRQ0AIAFBADoAPCABIAA2AjggAUIANwMwIAEgAzYCKCABQgA3AyAgASAINwIYIAEgBDYCFCABIAU2AhAgASAHNgIMIAEgBjYCCCABQQE2AgAgAkEgaiQAIAEPCwAL3QYCDn8DfiMAQfAAayICJAAgASgCwAEhAyABEL8BIAJB0ABqIAEQ1AoCQAJAAkACQAJAAkACQCACLQBkQQJHDQAgAigCUCEBDAELIAIpA1ghECACKQNQIREgAS0AyAFBCUcNAiABEOMOIAEQvwEgAkHQAGogARDUCiACLQBkQQJHDQEgAigCUCEBIBEQ8x8LIABBBjoALCAAIAE2AgAMBAsgAikDUCESIBFQRQ0BIBAhESASIRALQQAhBCACQQA6ABQgAkEANgIQIAIgED4CCCACIBBCIIg+AgxBAyEFDAELIAIoAlghBSACIAIoAlwiBjYCJCACIAM2AiAgAiAGNgIcIAIgBTYCGCACIBA3AwggAiASNwMQIBJCIIinIQRBBSEFCyACIAU6ACwgAiARNwMAIAJBLWohByACQRxqIQggAkEVaiEJIAJBBHIhCgNAAkACQCABLQDIAUEIRw0AIAEQ4w4gARC/ASACQdAAaiABENQKIAItAGRBAkcNASACKAJQIQEgAEEGOgAsIAAgATYCACACEIEaDAMLQTBFDQIgACACQTD8CgAADAILIAIoAlwhCyACKAJYIQwgAikDUCEQIAEoArwBIQYCQAJAAkACQCAFQX1qIgVBASAFQf8BcSINQQNJG0H/AXEOAwECAAELIAJBATYCVCACQbi5mwE2AlAgAkIANwJcIAIgAkHsAGo2AlggAkHQAGpBwLmbARCoHQALIBGnIQ4gAkHQAGpBCGogCkEIaikCADcDACACQcwAakECaiAJQQJqLQAAOgAAIAIgCikCADcDUCACIAkvAAA7AUwgBCEFDAELAkBBCEEwEJkiIg5FDQACQEEwRQ0AIA4gAkEw/AoAAAtBAiEFDAELAAsgAkE4akEIaiIEIAJB0ABqQQhqKQMANwMAIAJBNGpBAmoiDyACQcwAakECai0AADoAACACIAIpA1A3AzggAiACLwFMOwE0AkAgDUECRw0AIAIQgRoLIAggAikDODcCACAHIAIvATQ7AAAgCEEIaiAEKQMANwIAIAdBAmogDy0AADoAACACIA42AhggAiAGNgIUIAIgAzYCECACIAs2AgwgAiAMNgIIIAIgEDcDACACIAU6ACwg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gQE2AiwgAiAIKQIANwIcIAIgCCkCCDcCMCACIAJBHGo2AiggAkEUaiACQShqEPoeDQQgAkEcakHomZgBQQIQ0QUNBAwDCyACQQA2AjggAkEBNgIsIAJByJCBATYCKCACQgQ3AjAgAkEoakHwkIEBEKgdAAtBASEEIAgoAgBB046YAUECIAgoAgQoAgwRDAANBAtBASEEIAJBFGogCBD6Hg0DQQEhBCAIKAIAQeiZmAFBAiAIKAIEKAIMEQwADQMLIAJBADoAECACQQE6ABICQCACKAIMIggtAApBgAFxDQBBASEEIAJBGGogCBCYHA0DDAILIAIgBjYCJCACQeCPgQE2AiwgAiAIKQIANwIcIAIgCCkCCDcCMCACIAJBHGo2AiggAkEYaiACQShqEJgcDQAgAigCKEH7j4EBQQIgAigCLCgCDBEMAEUNAQtBASEEDAELQQAhBCACQQA6ABILIAlCf3wgCYMhCSACQQE6ABEgAiAEOgAQIAVBf2oiBQ0AC0EBIQAgBA0CIAIoAgwhAQwBCyAEDQELIAItABINASABKAIAQcjLmwFBASABKAIEKAIMEQwAIQALIAJBwABqJAAgAA8LIAJBADYCOCACQQE2AiwgAkGwkYEBNgIoIAJCBDcCMCACQShqQbiRgQEQqB0AC7EGAQR/QQQhAgJAAkACQAJAAkAgASgCAA4FBAABAgMECyABKAIERQ0DQQghAgsgASACaigCACAAEG4PCwJAIAEoAgQiAy0AbEECRw0AIANBwABqIQEDQCABKAIYIgEtACxBAkYNAAsLAkAgA0GEAWooAgAiAkUNACADQYABaigCACEBIAJB2ABsIQIDQAJAAkACQCABKAIAQXxqDgICAAELIAFBBGooAgAgABBuDAELIAEgABDdBwsgAUHYAGohASACQah/aiICDQALCwJAIAMoAngiAUUNACABQQhqKAIAIgJFDQAgAUEEaigCACEBIAJBAnQhAgNAIAEoAgAgABCnASABQQRqIQEgAkF8aiICDQALCwJAIANBmAFqKAIAIgJFDQAgA0GUAWooAgAhASACQShsIQIDQCABIAAQqAYgAUEoaiEBIAJBWGoiAg0ACwsgAy0APCIBQQZGDQEgAUECRw0BIANBEGohAQNAIAEoAhgiAS0ALEECRg0ADAILCyABKAIMIgJFDQAgASgCCCID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gSBBgICAgHghCQwBCyADQRBqQQhqIgYgA0HEAGpBCGooAgA2AgAgAyADKQJENwMQIAMoAiAhBSADKAIcIglBgICAgHhGDQAgACADKQMQNwIMIABBFGogBigCADYCACAAIAQ2AhggACAHNgIIIAAgASgCvAE2AhwLIAAgCTYCACAAIAU2AgQgA0GQAWokAA8LAAvoBgIGfwV+IwBBoAFrIgMkACABvSEJAkACQCABmUQAAAAAAADwf2INAEEDIQQMAQsCQCAJQoCAgICAgID4/wCDIgpCgICAgICAgPj/AFINAEECIQQMAQsgCUL/////////B4MiC0KAgICAgICACIQgCUIBhkL+////////D4MgCUI0iKdB/w9xIgUbIgxCAYMhDQJAIApCAFINAAJAIAtQRQ0AQQQhBAwCCyAFQc13aiEFIA2nQQFzIQRCASEKDAELQoCAgICAgIAgIAxCAYYgDEKAgICAgICACFEiBhshDEICQgEgBhshCiANp0EBcyEEQct3Qcx3IAYbIAVqIQULIAMgBTsBiAEgAyAKNwOAASADQgE3A3ggAyAMNwNwIAMgBDoAigECQAJAAkACQAJAAkACQCAEQX5qIgRFDQBBASEFQbibmwFBuZubASAJQgBTIgYbQbibmwFBASAGGyACGyEGQQEgCUI/iKcgAhshAiAEQQMgBEEDSRtBf2oOAwECAwELIANBAzYCICADQfj0mgE2AhwgA0ECOwEYQQEhBkEAIQJBASEFDAMLIANBAzYCICADQaGMgQE2AhwgA0ECOwEYDAILIANBAzYCICADQaSMgQE2AhwgA0ECOwEYDAELIANB4ABqIANB8ABqIANBB2oQmgICQAJAIAMoAmBFDQAgA0GQAWpBCGogA0HgAGpBCGooAgA2AgAgAyADKQJgNwOQAQwBCyADQZABaiADQfAAaiADQQdqEIEBCyADKAKUASIFRQ0BIAMoApABIgctAABBME0NAiADLgGYASEIIAMgBzYCHCADQQI7ARggA0EBNgIgAkACQCAFQQFHDQAgA0EkaiEEQQMhBQwBCyADQTxqIQQgA0ECOwEwIANB38ubATYCKCADQQI7ASQgAyAFQX9qNgI4IANBATYCLCADIAdBAWo2AjRBBSEFCyAEQQE7AQwgBEECOwEAIARBASAIayAIQX9qIAhBAUgiCBs7AQ4g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qIUBEIwaAAsgBUEMahDoCgsgACADKQIANwIAIABBCGogA0EIaigCADYCACAFQSBqJAALpgYBB39BBCECAkACQAJAAkACQCAAKAIADgUEAAECAwQLIAAoAgRFDQNBCCECCyABIAAgAmooAgAQqwEPCwJAIAAoAgQiAy0AbEECRw0AIANBwABqIQADQCAAKAIYIgAtACxBAkYNAAsLAkAgA0GEAWooAgAiAEUNACADQYABaigCACIEIABB2ABsaiEFA0BBBCECAkACQCAEKAIAIgBBBUYNACAAQQRGDQECQAJAAkAgAA4EBAIAAQQLAkAgBCgCBCIGLQBsQQJHDQAgBkHAAGohAANAIAAoAhgiAC0ALEECRg0ACwsCQCAGQYQBaigCACICRQ0AIAZBgAFqKAIAIQAgAkHYAGwhAgNAAkACQCAAKAIAQQVHDQAgASAAQQRqKAIAEKsBDAELIAAgARCPBgsgAEHYAGohACACQah/aiICDQALCwJAIAYoApgBIgBFDQAgBigClAEiByAAQShsaiEIA0ACQAJAAkACQAJAIAcoAgAOBQQAAQIDBAsgBygCBEEBRw0DIAEgBygCCBCrAQwDCyABIAcoAgQQqwEMAgsgB0EEaiABELUIDAELIAdBDGooAgAiAkUNACAHQQhqKAIAIQAgAkEobCECA0AgACABELoEIABBKGohACACQVhqIgINAAsLIAdBKGoiByAIRw0ACwsgBi0APCIAQQZGDQMgAEECRw0DIAZBEGohAANAIAAoAhgiAC0ALEECRg0ADAQLCyAEQQxqKAIAIgJFDQIgBEEIaigCACEAIAJBKGwhAgNAIAAgARCEBCAAQShqIQAgAkFYaiICDQAMAwsLQQghAiAEKAIERQ0BCyABIAQgAmooAgAQqwELIARB2ABqIgQgBUcNAAsLAkAgA0GYAWooAgAiAkUNACADQZQBaigCACEAIAJBKGwhAgNAIAEgABCDBiAAQShqIQAgAkFYaiICDQALCyADLQA8IgBBBkYNASAAQQJHDQEgA0EQaiEAA0AgACgCGCIALQAsQQJGDQAMAgsLIAAoAgwiAkUNACAAKAIIIQAgAkEobCECA0AgACABEIQEIABBKGohACACQVhqIgINAAsLC8AGAgl/An4jAEHgAGsiAiQAIAJBADYCGCACQoCAgIDAADcCEEH3Bq1C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IAEgAEEIahC8GyABIABBIGoQghogAEEUaiABEJgkDwsgAEEQaiABKAIUEN0dIAEgAEEoahC7IA8LIABB2ABqIQIgAEEQaiEDAkACQCAALQBEQQRGDQAgAyABEMIKDAELIAMgASgCFBDdHQsgASACELsgDwsgACgCDEE4bCEEIAAoAgghBUEAIQADQCAEIABGDQwCQAJAAkACQAJAAkACQAJAIAUgAGoiAigCAEF8aiIDQQQgA0EHSRsOBwABAgMEBQYACyABIAJBBGoQvBsgAkEYaiABEKQhIAEgAkEcahCCGgwGCyABIAJBBGoQvBsgAkEYaiABEKQhIAEgAkEcahCCGgwFCyACQRBqKAIAIAEQ8gMgAkEMaiABEKQhDAQLIAJBBGooAgAgARDyAyACQRBqIAEQpCEMAwsgAkEwaigCACABEPIDIAIgARD5CgwCCyACQRBqKAIAIAEQ8gMgASACQQRqELwbIAJBHGogARCkISABIAJBIGoQghoMAQsgAkEEaiABEKchCyAAQThqIQAMAAsLIAAoAgxBOGwhAiAAKAIIIQADQCACRQ0LIAAgARC+ICAAQTBqIAEQxgQgAkFIaiECIABBOGohAAwACwsgASAAQQhqEL0bDwsgAEEEaiABEMYEIABBCGogARDGBCAAQQxqIAEQxgQgAEEQaiEADAMLIABBEGogARCDHg8LIABBBGohAAwBCyAAQQRqIAEQxgQgAEEIaiEADAALCyAAQRBqIAEQgx4gASAAQcAAahCoISABIABBxABqEKghDwsgACgCCEGEgICAeEgNAiABIABBCGoQvRsPCyAAQShqIQICQCAALQAcQQJGDQAgASgCFCAAQQhqENgOGgsgAiABEKQhDwsgAEEIaiABEMIKCwukBgECfwJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACICKAIAIgNBdGoiAEEHIABBJkkbDiYOAAECAwQFBgcICQoLDA4ODQ8QERIOExQVDg4WFxgZGhscHQ4fDg4LIAIoAgxBBHQhACACKAIIIQIDQCAARQ0OAkAgAigCAEECRg0AIAJBDGogARDHBAsgAkEQaiECIABBcGohAAwACwsgAkEEaiABEGgPCyABIAJBCGoQjQIPCyAC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NgIAIANBGGpCADcDACADQSBqQgA3AwBBAC0A4PadARpBwAAQhAEiAUUNASABIAM2AgQgAUEQNgIAIAFBEGoiA0EFOgAAIAFBCGpCADcDACAAQQhqQgA3AwAgACABKQMANwMAIABBGGogAUEYaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEoaiABQShqKQMANwMAIABBMGogAUEwaikDADcDACAAQThqIAFBOGopAwA3AwAgAEEQaiADKQMANwMAIAFBwABBCBC9EwwDCyABKwMIIgYgBmINAQJAIAaZRAAAAAAAAPB/YQ0AIABCADcDICAAIAY5AxggAEIANwMQIABBAzYCCCAAQRs2AgAMAwsQzxohBAJAIAa9QgBTDQAgAEIANwMQIAAgBDcDCCAAQRo2AgAgAEEVakIANwAADAMLQQAtAOD2nQEaQcAAEIQBIgFFDQAgAUIANwMQIAEgBDcCCCABQRo2AgAgAEIANwMIIAAgATYCBCAAQRA2AgAgAUEVakIANwAAIABBEGpBADoAAAwCCwALIABCADcDECAAQrGchfMENwMIIABBGjYCACAAQRVqQgA3AAALIAJBEGokAAvBBgEEfwJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4LAAECAwQFBgcICQoACyAAQQhqIQIgAS0AOiEDIAEtADkhBAJAIAAoAiAiAEUNACABLQA0QQFHDQAgAUGBAjsAOSAAKAIAIAEQgAIgASADOgA6CyABIAQ6ADkgASACEJsRIAEgBDoAOSABIAM6ADoPCyABLQA5IQQgAUEBOgA5IAAoAiggARBtIAEgBDoAOSAAKAIIQQJHDQggAUEBOgA5IAAoAgwgARBtIAEgBDoAOQ8LIAAoAghBAUcNByABLQA5IQQgAUEBOgA5IAAoAgwgARBtIAEgBDoAOQ8LIAEtADkhBCABQQE6ADkgACgCBCABEG0gASAEOgA5DwsCQCAAKAIEIgAoAgAiBEEDRw0AIABBBGogARDSCA8LIAEtADkhAyABQQE6ADkgACgCICABEG0gASADOgA5IARBAkcNBSABQQE6ADkgACgCBCABEG0gASADOgA5DwsCQAJAIAEtADQNACABLQA5IQQMAQsgAS0AOSEEIAEtADohAyABQYECOwA5IAAoAgggARCAAiABIAM6ADoLIAFBAToAOSAA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AC0AMCADLQAwRw0AIAAoAiwgAygCLEcNACADKAIQIQECQAJAIAAoAhBBAUcNACABRQ0CIAAoAhQgAygCFEYNAQwCCyABDQELIAAtADEgAy0AMUcNACAALQAyIAMtADJGIQILIAIL1gYCA38CfiMAQaACayICJAACQAJAQQAtAJD2nQFFDQBBACkDoPadASEFQQApA5j2nQEhBgwBCyACQQhqEJcXQQBBAToAkPadAUEAIAIpAxAiBTcDoPadASACKQMIIQYLQQAgBkIBfDcDmPadASABKAKABSgC0AIhAyACQgQ3AhggAkIANwIQIAJCgICAgMAANwIIAkAgA0F/TA0AIAJBADYCIAJAAkACQCADRQ0AIAJBCGogAxCbDyADIAIoAhwiBEsNAQsgAiADNgIcDAELIAJBFGogAyAEaxCbDwsgAkGAAmpBGGogAkEIakEYaigCADYCACACQYACakEQaiACQQhqQRBqKQIANwMAIAJBgAJqQQhqIAJBCGpBCGopAgA3AwAgAiACKQIINwOAAiACQQA2AiAgAkIENwIYIAJCADcCECACQoCAgIDAADcCCAJAAkACQCADRQ0AIAJBCGogAxCbDyADIAIoAhwiBEsNAQsgAiADNgIcDAELIAJBFGogAyAEaxCbDwsgAkH8AWogAkEIakEYaigCADYCACACQfQBaiACQQhqQRBqKQIANwIAIAJB7AFqIAJBCGpBCGoiAykCADcCACACQcgBakEIaiACQYACakEIaikDADcDACACQcgBakEQaiACQYACakEQaikDADcDACACQcgBakEYaiACQYACakEYaigCADYCACACIAIpAgg3AuQBIAIgAikDgAI3A8gBIAJBADYCnAEgAkKAgICAwAA3ApQBIAJCBDcCjAEgAkIANwKEASACQoCAgIDAADcCfCADQQApA5j/nAE3AwAgAkEAKQOQ/5wBNwMIIAIgBTcDICACIAY3AxgCQEE4RQ0AIAJBOGogAkHIAWpBOPwKAAALIAJCATcDsAEgAkIANwOoASACQoCAgIDAADcDoAEgAkEANgK4ASACQQA2AnggAkIANwNwIAJBADYCKCACIAE2AsgBIAIgAkEIajYCzAEgAkHIAWoQiwICQEHAAUUNACAAIAJBCGpBwAH8CgAACyACQaACaiQADwsgAkEBNgLMASACQbzlhAE2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aiIHRQ0AIAcoAgBBgICAgHhGDQELIANB6ABqQQhqIgcgAkEUaigCADYCACADQegAakEUaiAFQQhqKAIANgIAQQAtAOD2nQEaIAMgAikCDDcDaCADIAUpAgA3AnRBCBCEASIGRQ0EIAMgA0EUahD2DiAGIAMpAwA3AgAgA0HQAGpBCGogBykDADcDACADQdAAakEQaiIHIANB6ABqQRBqKQMANwMAIAMgAykDaDcDUAJAIAQoAhwiAiAEKAIURw0AIARBFGpB0ICFARCiGAsgBCACQQFqNgIcIAQoAhggAkHwAGxqIgJBATYCDCACIAY2AgggAkKAgICAGDcCACACIAMpA1A3AhAgAkEYaiADQdgAaikDADcCACACQSBqIAcpAwA3AgAMAQsgA0EIaiADQRRqEPYOIAMoAgwhByADKAIIIQgCQCAGQZx/aiIJKAIAIgIgBkGUf2oiCigCAEcNACAKQcCAhQEQ/RcLIAkgAkEBajYCACAGQZh/aigCACACQQN0aiICIAc2AgQgAiAINgIACyAEIAQoAhBBAWo2AhAgARDbCBogA0E4akEIaiIEIAVBCGooAgAiAjYCACADQcwAaiACNgIAIABBADYCDCAAQoCAgIDAADcCBCAAQSI2AgAgACAFKQIAIgs3AhAgAyALNwJEIABBGGogBCkDADcCACAAQSBqIANByABqKQMANwIAIAMgCzcDOCADQYABaiQADwsgA0EANgIUIANBEGpBnICFASADQRRqQaCAhQEQ4hsAC0GwgIUBEPcWCwAL4AUBCH8jAEEQayICJAACQAJAAkACQANAAkAgACgCACIDQQJGDQACQAJAAkAgAw4HAQIABQYIBwELAAsgASAAQQhqELELDAYLIAAoAgwiA0UNBSAAKAIIIQAgA0EobCEDA0ACQCAAKAIAQQdGDQAgACABEIUFCyAAQShqIQAgA0FYaiIDDQAMBgsLIAAoAgQhAAwACwsgACgCDCIDRQ0CIAAoAgghBCADQThsIQUgAUEsaiEGQQAhAwNAAkACQAJAAkAgBCADaiIAKAIADgMAAQIACwJAIABBCGooAgBBA0cNACABLQAoIQcgAUEAOgAoIAEtAHkhCCABQQA6AHkCQCAAQQxqKAIAIgkoAgBBGkcNACACIAkpAwggCUEYaigCABDnGiAGIAIpAwAgAigCCBCQCwsgCSABEHggASAHOgAoIAEgCDoAeQsgAEEoaigCACABEIUFDAILIAEgAEEQahCxCyAAQQhqIQkCQCAAQTBqKAIAIgBFDQAgAS0AKCEHIAFBADoAKCABLQB5IQggAUEAOgB5AkAgACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAEOcaIAYgAikDACACKAIIEJALCyAAIAEQeCABIAc6ACggASAIOgB5CyABIAkQgBIMAQsgAEEEaigCACABEIUFCyAFIANBOGoiA0cNAAwDCwsgACgCBCABEIUFIAEtACghAyABQQA6ACggAS0AeSEEIAFBADoAeQJAIAAoAggiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAEOcaIAFBLGogAikDACACKAIIEJALCyAAIAEQeCABIAM6ACggASAEOgB5DAELIAEtACghAyABQQA6ACggAS0AeSEEIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAEOcaIAFBLGogAikDACACKAIIEJALCyAAIAEQeCABIAM6ACggASAEOgB5CyACQRBqJAAL1wUBBH8CQAJAAkACQAJAAkAgASgCAA4FBQABAwQFCyABKAIEQQFHDQQgAC0AAA0EQQghAgwBCyAALQAADQNBBCECCyABIAJqKAIAIAAQmAEPCwJAIAEoAgQiAy0AbEECRw0AIANBwABqIQEDQCABKAIYIgEtACxBAkYNAAsLAkAgA0GEAWooAgAiAkUNACADQYABaigCACEBIAJB2ABsIQIDQAJAAkACQCABKAIAQXxqDgICAAELIAAtAAANASABQQRqKAIAIAAQmAEMAQsgASAAEOwICyABQdgAaiEBIAJBqH9qIgINAAsLAkAgA0GYAWooAgAiAkUNACADQZQBaigCACEBIAJBKGwhAgNAIAEgABDUBiABQShqIQEgAkFYaiICDQALCyADLQA8IgFBBkYNASABQQJHDQEgA0EQaiEBA0AgASgCGCIBLQAsQQJGDQAMAgsLIAEoAgwiAkUNACABKAIIIgMgAkEobGohBANAAkACQAJAAkACQCADKAIADgUEAAECAwQLIAMoAgRBAUcNAyAALQAADQMgAygCCCAAEJgBDAMLIAAtAAANAiADKAIEIAAQmAEMAgsCQCADKAIEIgUtAGxBAkcNACAFQcAAaiEBA0Ag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GzYCAAwBCyAGIAVPDQMgBCAIaiIJKAIAIQogCUF8aigCACEJAkAgBSAAKAIARw0AIABBsKWFARD9FyAAKAIEIQQLIAAgBUEBaiIDNgIIIAQgBUEDdGoiBSAKNgIEIAUgCTYCACADIQULIAhBCGohCCACIAZBAWoiBkYNAwwACwsgBiAKQZClhQEQwxIACyAGIAVBoKWFARDDEgALIAUgAkkNASAAQQA2AgggASAANgIUIAEgACgCBCIGNgIMIAEgAjYCGCABIAUgAms2AhwgASAGIAJBA3RqNgIQIAFBDGoQpwwLIAFBIGokAA8LIAIgBUGk95oBELwiAAucBQIQfwV+IwBB8ABrIgIkACAAKAIEIQMgAC0AGCEEIAAtABkhBSAAKAIUIQYgACgCECEHIAAoAgwhCCACQTBqIAAoAggiCUEIQTgQow4gAigCNCEKAkACQCACKAIwQQFGDQAgAigCOCELAkAgCkUNACAJQThsIQwgCyEAIAohDQNAIAxFDQEgAygCLCEOIAMoAighDyACQQhqIAMQtQICQAJAIAMoAjAiEA0AQQAhEQwBC0EALQDg9p0BGkHAABCEASIRRQ0EIAJBMGogEBBFIBFBOGogAkEwakE4aikDADcDACARQTBqIAJBMGpBMGopAwA3AwAgEUEoaiACQTBqQShqKQMANwMAIBFBIGogAkEwakEgaikDADcDACARQRhqIAJBMGpBGGopAwA3AwAgEUEQaiACQTBqQRBqKQMANwMAIBFBCGogAkEwakEIaikDADcDACARIAIpAzA3AwALIAMtADQhECACQTBqQSBqIAJBCGpBIGopAwAiEjcDACACQTBqQRhqIAJBCGpBGGopAwAiEzcDACACQTBqQRBqIAJBCGpBEGopAwAiFDcDACACQTBqQQhqIAJBCGpBCGopAwAiFTcDACACIAIpAwgiFjcDMCAAQSBqIBI3AwAgAEEYaiATNwMAIABBEGogFDcDACAAQQhqIBU3AwAgACAWNwMAIABBNGogEDoAACAAQTBqIBE2AgAgAEEsaiAONgIAIABBKGogDzYCACAMQUhqIQwgAEE4aiEAIANBOGohAyANQX9qIg0NAAsLIAEgBToAGSABIAQ6ABggASAGNgIUIAEgBzYCECABIAg2AgwgASAJNgIIIAEgCzYCBCABIAo2AgAgAkHwAGok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/OOCARC3HigCABDUCCAAQQhqIANBEGpBCGooAgA2AgAgACADKQIQNwIAIABBDGogAygCHBCCEwwICyABKAIEIgYgBSACKAIEIgcgBBCZG0H/AXEOAgIDAQsgACABKAIEIAUQlRQgAEEUakEAKAKElZsBNgIAIABBACkC/JSbATcCDAwGCyAAQQxqIAYgBRCVFCAAQQhqQQAoAoSVmwE2AgAgAEEAKQL8lJsBNwIADAULQQRBBBC4HyECIABBATYCCCAAIAI2AgQgAEEBNgIAIAJBATYCACAAQQApAvyUmwE3AgwgAEEUakEAKAKElZsBNgIADAQLIAcgBEECdGpBfGoiCEUNAgJAIAgoAgAiCWciCA0AIANBEGogBiAFEJUUIAAgA0EQaiAHIAQQxAQMBAsgA0EoaiABIAgQ4xUgA0E0aiACIAgQ4xUgA0EQaiADQShqIAMoAjgiAiADKAI8EMQEIABBCGogA0EQakEIaigCADYCACAAIAMpAhA3AgAgA0EIaiADQSRqKAIANgIAIAMgAykCHDcDACADKAI0IAIQ3yIgAEEMaiEAAkAgAygCBCADIAMoAgBBgICAgHhGGygCCEUNACAAIAMgCUUgCEEfcRDeCAwECyAAIAMQ0BkMAwsgA0EANgIgIANBATYCFCADQeTjggE2AhAgA0IENwIYIANBEGpBnOSCARCoHQALIABBCGpBACgChJWbASICNgIAIABBACkC/JSbASIKNwIAIAAgCjcCDCAAQRRqIAI2AgAMAQtBjOSCARDJIgALIANBwABqJAALpgUBBH9BBCECAkACQAJAAkACQCABKAIADgUEAAECAwQLIAEoAgRFDQNBCCECCyABIAJqKAIAIAAQqAEPCwJAIAEoAgQiAy0AbEECRw0AIANBwABqIQEDQCABKAIYIgEtACxBAkYNAAsLAkAgA0GEAWooAgAiAkUNACADQYABaigCACEBIAJB2ABsIQIDQAJAAkACQCABKAIAQXxqDgICAAELIAFBBGooAgAgABCoAQwBCyABIAAQkgkLIAFB2ABqIQEgAkGof2oiAg0ACwsCQCADQZgBaigCACICRQ0AIANBlAFqKAIAIQEgAkEobCECA0AgASAAEKEHIAFBKGohASACQVhqIgINAAsLIAMtADwiAUEGRg0BIAFBAkcNASADQRBqIQEDQCABKAIY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IAIQhx0LIAytQiCGIAathCALELIgDAELIAAgDDYCBCAAIAY2AgAgACAHKQMYNwMIIAAgCzoAFCAAIAcvARQ7ABUgACACNgIYIABBEGogB0EgaigCADYCACAAQRdqIAdBFmotAAA6AAALIAEgCjYCeAsgB0HAAGokAAu3BQIEfwF+IwBBIGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgBBbGoOHQABCwsLCwwLCwsLCwsLCwILCwsLCwMLBAUGBwsICwsgAkEMaiABQRBqKQIANwIAIAJBFGogAUEYaikCADcCACACIAEpAgg3AgQgASkDKCEGIAEoAiQhAyABKAIgIQRBASEFDAkLIAJBDGogAUEQaikCADcCACACQRRqIAFBGGopAgA3AgAgAiABKQIINwIEIAEpAyghBiABKAIkIQMgASgCICEEQQIhBQwICyACQQhqIAFBDGooAgA2AgAgAiABKQIENwMAQQMhBQwGC0EIIQUgAkEIaiABQQxqKQIANwMAIAIgASkCBDcDAAwFCyACQQhqIAFBDGooAgA2AgAgAiABKQIENwMAQQchBQwECyACQQhqIAFBDGopAgA3AwAgAiABKQIENwMAQQUhBQwDCyACQQhqIAFBDGopAgA3AwAgAiABKQIENwMAQQkhBQwCCyACQQhqIAFBDGopAgA3AwAgAiABKQIENwMAQQYhBQwBCyACQQhqIAFBDGopAgA3AwAgAiABKQIENwMAQQQhBQsLIAAgBTYCACAAIAIpAwA3AgQgACAGNwMoIAAgAzYCJCAAIAQ2AiAgAEEMaiACQQhqKQMANwIAIABBFGogAkEQaikDADcCACAAQRxqIAJBGGooAgA2AgAMAgsgAEELNgIAIAAgATYCBAwCCyACQQxqIAFBEGopAgA3AgAgAkEUaiABQRhqKQIANwIAIABBADYCACAAQQA2AiAgAiABKQIINwIEIAAgAikDADcCBCAAQQxqIAJBCGopAwA3AgAgAEEUaiACQRBqKQMANwIAIABBHGogAkEYaigCADYCAAsgAUHAAEEIEL0TCyACQSBqJAALxgUCB38BfiMAQcAAayIDJAAgAS0AyAEhBAJAAkACQAJAIAINACAEQcsARw0BDAILIARBywBGDQEgBEHiAEcNACADQShqQQRyQeIAEIYeIANB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IAIoAghBiKSaARDYIAsACyASIAIoAghBiKSaARDYIAALggUBBX8jAEEQayICJABBBCEDAkACQAJAAkACQCABKAIADgUEAAECAwQLIAEoAgRFDQNBCCEDCyABIANqKAIAIAAQpQEMAgsCQCABKAIEIgQtAGxBAkcNACAEQcAAaiEBA0AgASgCGCIBLQAsQQJGDQALCwJAIARBhAFqKAIAIgNFDQAgBEGAAWooAgAiASADQdgAbGohBQNAAkACQCABKAIAIgNBBUcNACABKAIEIAAQpQEMAQsgA0EERg0AAkACQAJAIAMOBAMAAQIDCyABKAIEQQFHDQIgASgCCCAAEKUBDAILIAEoAgQgABDTAgwBCyABQQxqKAIAIQYgAUEIaigCACEDIAIgADYCDCAGRQ0AIAZBKGwhBgNAIAJBDGogAxCwBiADQShqIQMgBkFYaiIGDQALCyABQdgAaiIBIAVHDQALCwJAIAQoAngiAUUNACABQQhqKAIAIgNFDQAgAUEEaigCACEBIANBAnQhAwNAIAEoAgAgABDsASABQQRqIQEgA0F8aiIDDQALCwJAIARBmAFqKAIAIgFFDQAgAUEobCEDIARBlAFqKAIAQQRqIQEDQAJAAkACQAJAAkAgAUF8aigCAA4FBAABAgMECyABKAIAQQFHDQMgAUEEaigCACAAEKUBDAMLIAEoAgAgABClAQwCCyABIAAQkgcMAQsgASAAEJkFCyABQShqIQEgA0FYaiIDDQALCyAELQA8IgFBBkYNASABQQJHDQEgBEEQaiEBA0AgASgCGCIBLQAsQQJGDQAMAgsLIAEoAgwiA0UNACABKAIIIQEgA0EobCEDA0AgACABEMkFIAFBKGohASADQVhqIgMNAAsLIAJBEGokAAv7BAEEfwJAAkACQAJAIAAoAgAOBAMAAQIDCyAAKAIEQQFHDQIgACgCCCABEG4PCwJAIAAoAgQiAi0AbEECRw0AIAJBwABqIQADQCAAKAIYIgAtACxBAkYNAAsLAkAgAkGEAWooAgAiA0UNACACQYABaigCACIAIANB2ABsaiEEA0ACQAJAIAAoAgAiA0EFRw0AIAAoAgQgARBuDAELIANBBEYNAAJAAkACQCADDgQDAAECAwsgACgCBEEBRw0CIAAoAgggARBuDAILIAEgACgCBBD7BwwBCyAAQQxqKAIA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CwsCQAJAIAUgA0H//wNxTw0AIAMgBWshA0EAIQFBACEIAkACQAJAIARBHXZBA3EOBAIAAQACCyADIQgMAQsgA0H+/wNxQQF2IQgLIARB////AHEhByAAKAIEIQUgACgCACEGA0AgAUH//wNxIAhB//8DcU8NAiABQQFqIQEgBiAHIAUoAhARCABFDQAMAwsLIAAoAgAgACgCBCACELYHIQEgACAJNwIIDAILIAYgBSACELYHDQAgAyAIa0H//wNxIQNBACEIA0ACQCAIQf//A3EgA0kNAEEAIQEgACAJNwIIDAMLQQEhASAIQQFqIQggBiAHIAUoAhARCABFDQALIAAgCTcCCAwBC0EBIQELIAJBEGokACABC+EEAQJ/IwBBgAFrIgIkAAJAAkACQAJAAkACQAJAAkAgACgCACIAKAIADgcHAAECAwcEBwsgAEEMaigCACIDRQ0GIABBCGooAgAhACADQShsIQMDQAJAIAAoAgBBB0YNACAAIAEQqgMLIABBKGohACADQVhqIgMNAAwHCwsgACgCBCABEKoDDAULIABBDGooAgAiA0UNBCAAQQhqKAIAIQAgA0E4bCEDA0AgASAAEJUEIABBOGohACADQUhqIgMNAAwFCwsgACgCBCABEKoDIAAoAggiACgCAEEaRw0BIAJBwABqIAEoAgAgASgCBCAAQQhqIgEQgg0gAigCQEEyRg0DIAAQ0QEgAEE4aiACQcAAakE4aikDADcDACAAQTBqIAJBwABqQTBqKQMANwMAIABBKGogAkHAAGpBKGopAwA3AwAgAEEgaiACQcAAakEgaikDADcDACAAQRhqIAJBwABqQRhqKQMANwMAIABBEGogAkHAAGpBEGopAwA3AwAgASACQcAAakEIaikDADcDACAAIAIpA0A3AwAMAwsgACgCBCIAKAIAQRpHDQEgAiABKAIAIAEoAgQgAEEIaiIBEIINIAIoAgBBMkYNAiAAENEBIABBOGogAkE4aikDADcDACAAQTBqIAJBMGopAwA3AwAgAEEoaiACQShqKQMANwMAIABBIGogAkEgaikDADcDACAAQRhqIAJBGGopAwA3AwAgAEEQaiACQRBqKQMANwMAIAEgAkEIaikDADcDACAAIAIpAwA3AwAMAgsgACABEEYMAQsgACABEEYLIAJBgAFqJAAL5AQBBH8CQAJAAkACQAJAIAAoAgAiAg0AAkACQCAAKAIEIgAoAgAiA0F7aiICQQQgAkEGSRsOBgYAAQMEBQYLIAAoAghBA0cNACABIAAoAgwQqwELIAAoAighAgsgASACEKsBDwsCQCAAKAIIQQNHDQAgASAAKAIMEKsBCyAAKAIoQYCAgIB4Rg0CIABBMGooAgAiAkUNAiAAQSxqKAIAIQAgAkEwbCECA0AgACABEKIDIABBMGohACACQVBqIgINAAwDCwsgAEEgaiECAkAgA0EDRw0AIAEgACgCBBCrAQsCQCACKAIAQQdGDQAgAiABEO4JCyAAKAJoIAEQ7gkgACgCSEGAgICAeEYNASAAQdAAaigCACICRQ0BIABBzABqKAIAIQAgAkEwbCECA0AgACABEKIDIABBMGohACACQVBqIgINAAwCCwsCQCAAKAIIQQNHDQAgASAAKAIMEKsBCwJAIAAoAigiBEEIaigCACIARQ0AIARBBGooAgAiAyAAQQZ0aiEFA0ACQCADQThqKAIAIgJFDQAgA0E0aigCACEAIAJBDGwhAgNAIAEgACgCABCrASAAQQxqIQAgAkF0aiICDQALCyADIAEQ7gkgA0HAAGoiACEDIAAgBUcNAAsLAkAgBEEUaigCACICRQ0AIARBEGooAgAhACACQQxsIQIDQCABIAAoAgAQqwEgAEEMaiEAIAJBdGoiAg0ACwsgBCgCGEGAgICAeEYNACAEQSBqKAIAIgJFDQAgBEEcaigCACEAIAJBMGwhAgNAIAAgARCiAyAAQTBqIQAgAkFQaiICDQALCwv7BAEGfyMAQRBrIgIkAAJAAkACQAJAIAAoAgAOBAMAAQIDCyAAKAIEQQFHDQIgAS0AKCEDIAFBADoAKCABLQB5IQQgAUEAOgB5AkAgACgCCCIAKAIAQRpHDQAgAiAAKQMIIABBGGooAgAQ5xogAUEsaiACKQMAIAIoAggQkAsLIAAgARB4IAEgAzoAKCABIAQ6AHkMAgsgACgCBCIEQcAAaiABEIALIARBgAFqKAIAIARBhAFqKAIAIAEQwggCQCAEQZgBaigCACIDRQ0AIARBlAFqKAIAIQAgA0EobCEDA0AgACABENcHIABBKGohACADQVhqIgMNAAsLIAQtADxBBkYNASAEQRBqIAEQgAsMAQsgACgCDCIDRQ0AIAAoAggiBCADQShsaiEFIAFBLGohBgNAAkACQAJAAkACQCAEKAIADgUEAAECAwQLIAQoAgRBAUcNAyABLQAoIQMgAUEAOgAoIAEtAHkhByABQQA6AHkCQCAEKAIIIgAoAgBBGkcNACACIAApAwggAEEYaigCABDnGiAGIAIpAwAgAigCCBCQCwsgACABEHggASADOgAoIAEgBzoAeQwDCyABLQAoIQMgAUEAOgAoIAEtAHkhByABQQA6AHkCQCAEKAIEIgAoAgBBGkcNACACIAApAwggAEEYaigCABDnGiAGIAIpAwAgAigCCBCQCwsgACABEHggASADOgAoIAEgBzoAeQwCCyABIAQoAgQQpQcMAQsgBEEMaigCACIDRQ0AIARBCGooAgAhACADQShsIQMDQCABIAAQtAMgAEEoaiEAIANBWGoiAw0ACwsgBEEoaiIEIAVHDQALCyACQRBqJAAL1QQCBH8BfiMAQYABayICJAACQAJAIAEtABRBAkYNACACQQhqIAAgARD5BSACLQA0QQZGDQAgAkE4akEoaiACQQhqQShqKQMANwMAIAJBOGpBIGogAkEIakEgaikDADcDACACQThqQRhqIAJBCGpBGGopAwA3AwAgAkE4akEQaiACQQhqQRBqKQMANwMAIAJBOGpBCGogAkEIakEIaikDADcDACACIAIpAwg3AzgCQAJAAkACQCACLQBkIgNBfWoiAEEBIABB/wFxQQNJG0H/AXEOAwACAQALIAJB8ABqQQhqIAJBFGopAgA3AwAgAkHuAGogAkEfai0AADoAACACIAIpAgw3A3AgAiACLwAdOwFsIAItAEwhBCACKAI4IQAMAgtBtumaAUEPQYDqmgEQjBoAC0EALQDg9p0BGkEwEIQBIgBFDQIgACACKQMINwMAIABBKGogAkEIakEoaikDADcDACAAQSBqIAJBCGpBIGopAwA3AwAgAEEYaiACQQhqQRhqKQMANwMAIABBEGogAkEIakEQaikDADcDACAAQQhqIAJBCGpBCGopAwA3AwBBAiEECwJAIAEpAwAiBkIDg0IAUg0AIAanIgMgAygCACIFQX9qNgIAAkAgBUEBRw0AIAMgAygCEBDpHQsgAi0AZCEDCyABIAA2AgAgASACKQNwNwIEIAEgBDoAFCABIAIvAWw7ABUgAUEMaiACQfgAaikDADcCACABQRdqIAJB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AA8LQn8gB4ZCf4UhCQJAAkACQAJAIAMgAU0NAEEAIANrIQUgAUEIaiEGIAMgAWshBCABQYAGIAFBgAZJG0GAemohA0EIIQEDQCADIAFqQQhGDQIgACAGajEAACEKIAAgAWogCCAHiDwAACAKIAggCYNCCn58IQggAUEBaiEBIAUgBkEBaiIGakEIRw0ACyAIUA0DDAILQQAhBCAIQgBSDQEgAEEANgIADAMLIAZBeGpBgAZBjOqAARDDEgALA0AgCCIKIAmDQgp+IQggCiAHiKchAQJAAkAgBEGABkkNACABQf8BcUUNASAAQQE6AIgGDAELIAIgBGogAToAACAEQQFqIQQLIAhCAFINAAsLIAAgBDYCACAEQYAGSw0BIARBB2ohAQNAIAAgAWotAAANASAAIAFBeGo2AgAgAUF/aiIBQQdHDQALCw8LIARBf2pBgAZB3OmAARDDEgAL3gQCAn8BfiMAQcAAayIDJAACQAJAAkACQAJAAkACQAJAIAEoAgAOBQABAgMEAAsgA0EwaiACIAEoAhAiBEEAEKICIAMtADBBBEYNBCADKQMwIgVC/wGDQgRRDQQgACAFNwIADAYLIANBMGogAUEIaiACEIYBIAMtADBBBEYNBCADKQMwIgVC/wGDQgRRDQQgACAFNwIADAULIANBMGogAUEIaiACENwWIAMtADBBBEYNAyADKQMwIgVC/wGDQgRRDQMgACAFNwIADAQLIANBMGogAUEEaiACEKUJIAMtADBBBEYNAiADKQMwIgVC/wGDQgRRDQIgACAFNwIADAMLIANBMGogAUEIaiACELsDIAMtADBBBEYNASADKQMwIgVC/wGDQgRRDQEgACAFNwIADAILAkACQAJAIARFDQAgA0EwaiACIAQQ4hwgAy0AMEEERg0AIAMpAzAiBUL/AYNCBFINAQsgAUEIaiEBIAItAEwNASADQTBqIAEgAhCiFSADLQAwQQRGDQIgAykDMCIFQv8Bg0IEUQ0CIAAgBTcCAAwDCyAAIAU3AgAMAgsgA0EQaiABEJQTIANBMGogAygCECADKAIUEOIEIANBJGogAygCNCIBIAMoAjhBASACLQBSENsBIANBCGogA0EkahCGFSADQRhqIAIgAygCCCADKAIMEJYOAkAgAy0AGEEERg0AIAMpAxgiBUL/AYNCBFENACAAIAU3AgAgA0EkahDTHyADKAIwIAEQtCEMAgsgA0EkahDTHyADKAIwIAEQtCELIABBBDoAAAsgA0HAAGokAAuPBQECfyMAQTBrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBfmoiBEEGIARBCUkbDgkAAQIDBAUGBwgACyADQQE2AhQgA0GU85sBNgIQIANCATcCHCADQYsCNgIMIAMgACkCCDcCKCADIANBCGo2AhggAyADQShqNgIIIAEgAiADQRBqEOUgIQAMCAsgAyAAQQRqNgIIIANBAjYCFCADQYDCmAE2AhAgA0IBNwIcIANB+gA2AiwgAyADQShqNgIYIAMgA0EIajYCKCABIAIgA0EQahDlICEADAcLIANBADYCICADQQE2AhQgA0GkwpgBNgIQIANCBDcCGCABIAIgA0EQahDlICEADAYLIANBADYCICADQQE2AhQgA0G0wpgBNgIQIANCBDcCGCABIAIgA0EQahDlICEADAULIANBADYCICADQQE2AhQgA0HQwpgBNgIQIANCBDcCGCABIAIgA0EQahDlICEADAQLIANBADYCICADQQE2AhQgA0HwwpgBNgIQIANCBDcCGCABIAIgA0EQahDlICEADAMLIAMgADYCCCADQQE2AhQgA0GU85sBNgIQIANCATcCHCADQYwCNgIsIAMgA0EoajYCGCADIANBCGo2AiggASACIANBEGoQ5SAhAAwCCyADIABBBGo2AgggA0ECNgIUIANB+MKYATYCECADQgE3AhwgA0H6ADYCLCADIANBKGo2AhggAyADQQhqNgIoIAEgAiADQRBqEOUgIQAMAQsgAyAAQQRqNgIIIANBATYCFCADQZTzmwE2AhAgA0IBNwIcIANB+gA2AiwgAyADQShqNgIYIAMgA0EIajYCKCABIAIgA0EQahDlICEACyADQTBqJAAgAAv0BAEHfyMAQRBrIgIkACAAKAIAIQACQAJAAkACQAJAIAEoAgAOBQQAAQIDBAsgASgCBEEBRw0DIAAtACghAyAAQQA6ACggAC0AeSEEIABBADoAeQJAIAEoAggiASgCAEEaRw0AIAIgASkDCCABQRhqKAIAEOcaIABBLGogAikDACACKAIIEJALCyABIAAQeCAAIAM6ACggACAEOgB5DAMLIAAtACghAyAAQQA6ACggAC0AeSEEIABBADoA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/wNxIQBBACEBA0ACQCABQf//A3EgAEkNAEEADwtBASEJIAFBAWohASAKIAcgBigCEBEIAEUNAAwDCwtBASEJIAogBCAFIAcoAgwRDAANASAAIA03AghBAA8LQQEhCSAAKAIAIgEgACgCBCIKIAggAiADEJcbDQAgASAEIAUgCigCDBEMACEJCyAJC9kEAQd/IwBBIGsiAiQAQQEhAwJAIAFFDQAgASAAKAIESQ0AIAFBECABQRBLGyEEAkACQAJAIAAoAggiBUH///93Rg0AIAFB/v//B00NAQwDCyABQf7//wdNDQJBACEFAkAgACgCAEF8aiIGKAAAIgdBf3NBH3YgB0HE0oABELccIgdB+P///wdLDQBBBCEFIAJBBDYCHCACIAdBBGo2AhgLIAIgBTYCFCACQQhqIAJBFGpB4NKAARCwFyACKAIIIQUgAigCDCEIIARBf3NBH3YgBEHE0oABELccIQRBACEHAkAgAUH4////B0sNAEEEIQcgAkEENgIcIAIgBEEEajYCGAsgAiAHNgIUIAJBCGogAkEUakHg0oABELAXIAIoAggiByACKAIMakF/akEAIAdrcSIHIARJDQIgBiAFIAhqQX9qQQAgBWtxIAUgBxDvAyIFRQ0CIAUgBDYAACAFQQRqIQQMAQtBACEDIAQgBUH///8HcSIFRg0BIAJBADYCHCACIAU2AhhBASEDIAJBATYCFCACQQhqIAJBFGpB8NKAARCwFyACKAIIIQUgAigCDCEGIARBf3NBH3YgBEGg0JgBELccIQQgAkEANgIcIAIgBDYCGCACQQE2AhQgAkEIaiACQRRqQfDSgAEQsBcgAigCCCIHIAIoAgxqQX9qQQAgB2txIgcgBEkNASAAKAIAIAUgBmpBf2pBACAFa3EgBSAHEO8DIgRFDQELIAAgAUH///8HIAFB////B0kbQYCAgHByNgIIIAAgBDYCAEEAIQMLIAJBIGokACADC+kEAgR/BH4jAEHQAGsiAiQAAkACQAJAAkACQAJAAkACQCABKAIADgcEAQACAAMGAAsgAEEMNgIAIAAgASkDADcDCCAAQShqIAFBIGopAwA3AwAgAEEgaiABQRhqKQMANwMAIABBGGogAUEQaikDADcDACAAQRBqIAFBCGopAwA3AwAMBgsgAkEQaiABQRBqKQIANwMAIAJBCGpBEGog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ACICRQ0EIAFBCGooAgAhASACQShsIQIDQAJAIAEoAgBBB0YNACABIAAQ4wQLIAFBKGohASACQVhqIgINAAwFCwsgASgCBCAAEOMEDwsgAUEMaigCACICRQ0CIAFBCGooAgAhASACQThsIQIDQCAAIAEQpwYgAUE4aiEBIAJBSGoiAg0ADAMLCyAAIAFBBGoQgw4PCyAALQAlIQIgASgCBCEBAkAgAC0AJCIEDQACQCABKAIAQXRqIgNBByADQSZJG0F7aiIDQR9LDQBBASADdEGuooCAeHENASADDQAgAS0AEUUNAQsgAEEDOgAkCyAAIAEQzgEgASAAEFMgACACOgAlIAAgBDoAJCAAIAEQnQELC6gEAQR/QQQhAgJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAKAIERQ0DQQghAgsgACACaigCACABEG4PCwJAIAAoAgQiAy0AbEECRw0AIANBwABqIQADQCAAKAIYIgAtACxBAkYNAAsLAkAgA0GEAWooAgAiAkUNACADQYABaigCACEAIAJB2ABsIQIDQAJAAkACQCAAKAIAQXxqDgICAAELIABBBGooAgAgARBuDAELIAAgARDKBQsgAEHYAGohACACQah/aiICDQALCwJAIAMoAngiAEUNACAAQQhqKAIAIgJFDQAgAEEEaigCACEAIAJBAnQhAgNAIAAoAgAgARCnASAAQQRqIQAgAkF8aiICDQALCwJAIANBmAFqKAIAIgBFDQAgA0GUAWooAgAiBCAAQShsaiEFA0ACQAJAAkACQAJAIAQoAgAOBQQAAQIDBAsgBCgCBEEBRw0DIAQoAgggARBuDAMLIAQoAgQgARBuDAILIAEgBCgCBBD7BwwBCyAEQQxqKAIAIgJFDQAgBEEIaigCACEAIAJBKGwhAgNAIAEgABCxBCAAQShqIQAgAkFYaiICDQALCyAEQShqIgQgBUcNAAsLIAMtADwiAEEGRg0BIABBAkcNASADQRBqIQADQCAAKAIYIgAtACxBAkYNAAwCCwsgACgCDCICRQ0AIAAoAgghACACQShsIQIDQCABIAAQsQQgAEEoaiEAIAJBWGoiAg0ACwsLzwQCBX8CfiMAQTBrIgMkAAJAIAEtAMgBIgRBA0cNACADQRhqIAEgASgCwAFBABCLBiABQcABaiIEQQhqIANBGGpBCGooAgA2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ACAAEOQBIABBOGogCikDADcDACAAQTBqIAkpAwA3AwAgAEEoaiAIKQMANwMAIABBIGogBykDADcDACAAQRhqIAYpAwA3AwAgAEEQaiAFKQMANwMAIABBCGogAykDADcDACAAIAIpAwA3AwAgBEHAAEEIEL0TIAAoAgBBV2pBBkkNAAsLIAAgARCuAQwCCyAAKAIEIAEQtwIMAQsgACgCDCIERQ0AIARBKGwhBCAAKAIIQQRqIQADQAJAAkACQAJAAkAgAEF8aigCAA4FBAABAgMECyAAKAIAQQFHDQMgASAAQQRqKAIAEN0IDAMLIAEgACgCABDdCAwCCyAAIAEQ9QYMAQsgACABEMUFCyAAQShqIQAgBEFYaiIEDQALCyACQcAAaiQADwsAC5gEARB/IwBB0ABrIgIkACABKAIEIQMgASgCECEEIAEoAgwhBSACQShqIAEoAggiBkEIQSgQow4gAigCLCEHAkACQCACKAIoQQFGDQAgAigCMCEIAkAgB0UNACAGQShsIQkgAkEoakEEciEKIAJBCGohCyACQRBqIQwgAkEYaiENIAJBIGohDiAIIQ8gByEQA0AgCUUNAUEHIRECQCADKAIAQQdGDQAgAkEoaiADELUCIAsgCkEIaikCADcDACAMIApBEGopAgA3AwAgDSAKQRhqKQIANwMAIA4gCkEgaigCADYCACACIAopAgA3AwAgAigCKCERCyADQShqIQMgDyARNgIAIA9BBGogAikDADcCACAPQQxqIAspAwA3AgAgD0EUaiAMKQMANwIAIA9BHGogDSkDADcCACAPQSRqIA4oAgA2AgAgD0EoaiEPIAlBWGohCSAQQX9qIhANAAsLIAEtABghCQJAAkAgASgCFCIDDQBBACEPDAELQQAtAOD2nQEaQQwQhAEiD0UNAkEALQDg9p0BGiADKAIIIREgAygCBCEQQeAAEIQBIgpFDQIgCiADKAIAEGUgDyARNgIIIA8gEDYCBCAPIAo2AgALIAAgBDYCECAAIAU2AgwgACAJOgAYIAAgBjYCCCAAIAg2AgQgACAHNgIAIAAgDzYCFCACQdAAaiQADwsgByACKAIwQYikmgEQ2CALAAulBAEDfyMAQRBrIgIkACAAKAIAIQACQAJAAkACQAJAAkACQAJAAkAgASgCAA4FCAABAgMICyABKAIEQQFHDQcg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NwMAIANBIGogAkHAAGpBIGopAwA3AwAgA0EYaiACQcAAakEYaikDADcDACADQRBqIAJBwABqQRBqKQMANwMAIAUgAkHAAGpBCGopAwA3AwAgAyACKQNANwMADAELIAMgARBGCyAAQRBqIQAgBEFwaiIEDQALCyACQYABaiQAC90DAQV/IwBBgAFrIgIkAAJAAkACQCABLQAUQQJGDQAgAEEaNgIAIAAgASkDADcDCCAAQRhqIAFBEGopAwA3AwAgAEEQaiABQQhqKQMANwMADAELIAJBCGogASgCACIDQSBqKQMANwMAIAJBEGogA0EoaikDADcDACACQRhqQQhqIgQgA0EIaikDADcDACACIAMpAxg3AwAgAiADKQMANwMYIAMoAhQhBSADKAIQIQYgAkEoaiACEIUHQQAtAOD2nQEaQcAAEIQBIgFFDQEgASACKQMoNwMAIAFBOGogAkEoakE4aikDADcDACABQTBqIAJBKGpBMGopAwA3AwAgAUEoaiACQShqQShqKQMANwMAIAFBIGogAkEoakEgaikDADcDACABQRhqIAJBKGpBGGopAwA3AwAgAUEQaiACQShqQRBqKQMANwMAIAFBCGogAkEoakEIaikDADcDACACQfgAaiAEKQMANwIAIABBADYCCCAAIAE2AiggACAFNgIkIAAgBjYCICAAQRQ2AgAgAiACKQMYNwJwIAAgAikCbDcCDCAAQRRqIAJB7ABqQQhqKQIANwIAIABBHGogAkHsAGpBEGooAgA2AgAgA0EwQQgQvRMLIAJBgAFqJAAPCwAL8QMBB38jAEHQAGsiByQAAkACQAJAIAEoAgAiCEF/akECSQ0AIAcgASgCBDYCBCAHIAg2AgAgByABKAIQIgg2AhAgByABKAIMIgk2AgwgByABKAIIIgo2AgggByABLQAYOgAYIAEoAhQiAUF/aiAJSyELAkADQAJAAkAgBCAJSQ0AIAQgCUcNAQwFCyAKIARqLAAAQb9/Sg0EC0EAIQwCQCABRQ0AIAcgCDYCHCAHIAFBf2oiBDYCICALDQIgCCABSw0CIAcgBDYCFCAHQSRqIAUgBiAHEG8gBygCKCECAkAgBygCJCINQQJHDQAgACACNgIEQQIhDAwBCyAEIQEgBygCLCIDIQQgDUEBcQ0BCwsgACAMNgIADAMLIAdBAjYCKCAHQdCh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mAFqKAIAIQAgBEGUAWooAgAhASACIAM2AgwCQCAARQ0AIABBKGwhAANAIAJBDGogARCiByABQShqIQEgAEFYaiIADQALCyAELQA8IgFBBkYNASABQQJHDQEgBEEQaiEBA0AgASgCGCIBLQAsQQJGDQAMAgsLIAEoAgwiAEUNACABKAIIIQEgAEEobCEAA0AgASADELoEIAFBKGohASAAQVhqIgANAAsLIAJBEGokAAvVAwIJfwF+IwBBwABrIgIkACACIAE2AgwgACgCDCEDIAIgAkEMajYCEAJAIANBf0YNAAJAAkACQCADIAAoAgQiASABQQFqQQN2QQdsIAFBCEkbIgFBAXZJDQAgAkEwakEQIAEgAyABIANLG0EBahDeDCACKAI0IQQgAigCMCIFRQ0CIAIoAjghBiACIAIoAjw2AiwgAiAGNgIoIAIgBDYCJCACIAU2AiAgAkKQgICAgAE3AhggAiAAQRBqNgIUIAAoAgAiBykDAEJ/hUKAgYKEiJCgwIB/gyELIAJBIGohCEEAIQECQANAIANFDQECQANAIAtCAFINASABQQhqIQEgB0EIaiIHKQMAQn+FQoCBgoSIkKDAgH+DIQsMAAsLIAIgBSAEIAEgACALeqdBA3YgAWoiCRCMIBC4FyAFIAIoAgBBf3NBBHRqIgogACgCACAJQX9zQQR0aiIJKQAANwAAIApBCGogCUEIaikAADcAACADQX9qIQMgC0J/fCALgyELDAALCyACIAAoAgwiATYCLCACIAYgAWs2AiggACAIEMQjIAJBFGoQgRcMAQsgACACQRBqQfYGQRAQswULQYGAgIB4IQQLIAJBwABqJAAgBA8LEIccAAvNAwICfwF+IwBBIGsiAyQAIANBEGogAiABKAIYIgRBABCiAgJAAkAgAy0AEEEERg0AIAMpAxAiBUL/AYNCBFENACAAIAU3AgAMAQsCQAJAAkAgBEUNACADQRBqIAIgBBDiHCADLQAQQQRGDQAgAykDECIFQv8Bg0IEUg0BCyADQRBqIAEoAiAgASgCJCACELsSIAMtABBBBEYNASADKQMQIgVC/wGDQgRRDQEgACAFNwIADAILIAAgBTcCAAwBCwJAAkACQAJAIAEoAgBBAUcNACADQRBqIAFBBGogAhClCSADLQAQQQRGDQMgAykDECIFQv8Bg0IEUg0BDAML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ACACQVhqIgINAAsLIAMtADwiAUEGRg0BIAFBAkcNASADQRBqIQEDQCABKAIYIgEtACxBAkYNAAwCCwsgACgCDCICRQ0AIAAoAgghACACQShsIQIDQCABIAAQtwUgAEEoaiEAIAJBWGoiAg0ACwsL7AMBAn8jAEEwayICJAACQAJAAkAgARC/EQ0AIAEQsQ1FDQELIAJBCGogARC/DCAAIAIoAgggAigCDBDqGiACIAEQvwwgACACKAIAIAIoAgQQ1w4MAQsCQAJAAkACQAJAAkACQAJAIAEoAgAOCAABAgMEBQYHAAsgAUEgaiAAENoBDAcLIAFBIGogABDnDAwGCyABQQRqIAAQgyQMBQsgAUEEaiAAEIQkDAQLIAFBBGogABChCQwDCyAAIAEoAgQiASgCACIDIAFBBGooAgAiARDqGiAAIAMgARDXDgwCC0EAKAL89Z0BIgBFDQEgAkEUaiAAIAEoAgQiAUEYaigCACABQRxqKAIAQaTtmwFBMxD1ECACQSRqQbvqmwFBERCcFSACQQA2AiAgAigCGCIBEL4fIAFBCGogAkEgakEIaikCADcCACABIAIpAiA3AgAgAkEUahDGAiACQRRqELINDAELQQAoAvz1nQEiAEUNACACQRRqIAAgASgCBCIBQcgAaigCACABQcwAaigCAEHX7ZsBQcQAEPUQIAJBJGpBu+qbAUEREJwVIAJBADYCICACKAIYIgEQvh8gAUEIaiACQSBqQQhqKQIANwIAIAEgAikCIDcCACACQRRqEMYCIAJBFGoQsg0LIAJBMGokAAvGAwEFfyMAQdAAayICJABBfyAAQQNsIgBBf2pndkEBakEBIABBAUsbIgNBBnQhAEEAIQQCQAJAIANB////H0sNACAAQcD///8HSw0AQcAAIQVBACEEIABFDQEgAkEIaiAAEJobIAMhBCACKAIIIgUNAUHAACEECyAEIABB6NeDARDYIAALIAJBADYCHCACIAU2AhggAiAENgIUQRAhBkEAIQACQANAIAMgAEYNAQJAIAAgAigCFEcNACACQRRqEJMLIAIoAhghBQsgBSAGaiIEQXxqIABBAWoiADYCACAEQXhqQQA2AgAgBEFwakIANwMAAkBBMEUNACAEIAJBIGpBMPwKAAALIAIgADYCHCAGQcAAaiEGDAALCwJAAkACQCACKAIUIgAgA00NACAAQQZ0IQAgAigCGCEEAkACQCADDQBBwAAhBiAEQcAAIAAQ0SAMAQsgBCAAQcAAIANBBnQiBRDvAyIGRQ0CCyACIAY2AhgLIAIoAhghBCACQQRBEBDrHSACKAIAIgBFDQEgACABNgIMIAAgAzYCBCAAIAQ2AgAgAEEfIANnazYCCCACQdAAaiQAIAAPC0HAACAFQfjXgwEQ2CALAAvTAwEGfyMAQSBrIgQkAAJAAkACQAJAAkAgAS0ArA1BAUYNAAJAAkACQCABKQMAQgKFIAEpAwiEUA0AIAIoAsgEQQJGDQQgAkHYAWohBQJAAkACQCABKAKABSIGLQDiAg0AIARBEGogASAFIAMQSyAEKAIQIgZBAkcNAQwICyAGLQDjAiEHIARBEGogASAFIAMQSyAEKAIQIgZBAkYNByAEKAIYIQggBCgCFCEJIAZBAXEiBkUNBCAHQQFxRQ0EIARBBGogAyAJIAggCCABIAUQ0wYgBCgCBCIGQQJHDQEgBCgCCCEFDAgLIAZBAXENAkEAIQYMAwsgBCgCDCEIIAQoAgghCQwCCyAEQRBqIAEgAiADENoEAkACQCAEKAIQDQBBACEBDAELIAAgBCkCGEIgiTcCBEEBIQELIAAgATYCAAwGCyAEKAIYIQggBCgCFCEJCyAAIAg2AgggACAJNgIEIAAgBjYCAAwEC0GSqZsBQShB3KGEARCMGgALQeyghAEQySIACyAEKAIUIQULIAUQtxEaIARBEGogASACIAMQ2gQCQAJAIAQoAhANAEEAIQEMAQsgACAEKQIYQiCJNwIEQQEhAQsgACABNgIACyAEQSBqJAALzwMBBn8jAEEgayICJAAgASAAKAIIQX5qIgNBBiADQQlJGyIDEP0eAkACQAJAAkACQAJAIAMOCQAEBQUFBQMCAQULQQAhAyACQRhqQQAgAEEQaigCACAAQRRqKAIAQbS0mAEQlB0gAigCHCEEIAIoAhghBUEAIQZBACEHA0ACQCAEIAMiAEcNAAJAIAcgBE8NACACQQhqIAcgBSAEQcS0mAEQlB0gASACKAIIIAIoAgwiABD0CiAAIAZqQR53IQYLIAEgBhDIIwwGCyAAQQFqIQMgBSAAai0AAEEvRw0AAkAgACAHTQ0AIAEgBSAHaiAAIAdrIgAQ9AogACAGakEedyEGCyACQRBqIAMgBSAEQdS0mAEQlB0gAigCECEAAkACQAJAAkACQCACKAIUDgICAAELIAAtAABBLkcNAQwCCyAALQAAQS5HDQAgAC0AAUEvRg0BC0EAIQAMAQtBASEACyAAIANqIQcMAAsLIABBEGooAgAgAEEUaigCACABEM4hDAMLIABBEGooAgAgAEEUaigCACABEM4hDAILIABBHGooAgAgAEEgaigCACABEM4hDAELIABBEGooAgAgAEEUaigCACABEM4hCyACQSBqJAALvAMBB38jAEEQayIDJAACQAJAIAIoAgQiBEUNACAAIAIoAgAgBCABKAIMEQwARQ0AQQEhAgwBCwJAIAIoAgwiBEUNACACKAIIIgUgBEEMbGohBiADQQhqQQRqIQcDQAJAAkACQAJAIAUvAQAOAwACAQALAkACQCAFKAIEIgJBwQBJDQAgAUEMaigCACEEA0ACQCAAQciRgQFBwAAgBBEMAEUNAEEBIQIMCQsgAkFAaiICQcAASw0ADAILCyACRQ0DIAFBDGooAgAhBAsgAEHIkYEBIAIgBBEMAEUNAkEBIQIMBQsgACAFKAIEIAUoAgggAUEMaigCABEMAEUNAUEBIQIMBAsgBS8BAiECIAdBADoAACADQQA2AggCQAJAIAJB6AdJDQBBBEEFIAJBkM4ASRshCAwBC0EBIQggAkEKSQ0AQQJBAyACQeQASRshCAsgCCEEA0AgBEF/aiIEIANBCGpqIAIgAkH//wNxQQpuIglBCmxrQTByOgAAIAkhAiAEDQALIAAgA0EIaiAIIAFBDGooAgARDABFDQBBASECDAMLIAVBDGoiBSAGRw0ACwtBACECCyADQRBqJAAgAgvRAwEIfyMAQRBrIgIkAAJAAkACQCABKAIADgMAAQIACyABKAIMIgNFDQEgASgCCCEBIANBKGwhAwNAAkAgASgCAEEHRg0AIAEgABCFBQsgAUEoaiEBIANBWGoiAw0ADAILCyABKAIMIgNFDQAgASgCCCEEIANBOGwhBSAAQSxqIQZBACEDA0ACQAJAAkACQCAEIANqIgEoAgAOAwABAgALAkAgAUEIaigCAEEDRw0AIAAtACghByAAQQA6ACggAC0AeSEIIABBADoAeQJAIAFBDGooAgAiCSgCAEEaRw0AIAIgCSkDCCAJQRhqKAIAEOcaIAYgAikDACACKAIIEJALCyAJ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EGpBACkDmP+cASIFNwMAIAJBGGpBACkDkP+cASIGNwMAIAJBIGogBTcDACACIAA2AiggAiADNgIsIAJBAToAQSACIAApAiw3AjQgAiAAKAE6NgFCIAIgAC0AOCIEOgBAIAIgBjcDCAJAAkAgASgCACIAKAIADQAgAEEEaiEBAkAgA0UNACAAKAIYDQAgAEEAIAMQjQY2AhgLIAJBADsAjQEgAkHwAGpBACkDmP+cASIFNwMAIAJBgAFqIAU3AwAgAiAEOgCMASACQQApA5D/nAEiBTcDaCACIAU3A3ggAiACQQhqNgKIASACQegAaiABEKoHIAJB6ABqENYXIAJB+ABqENYXIAAoAgwiA0UNASAAKAIIIQAgA0EwbCEDA0AgACACQQhqEMcBIABBMGohACADQVBqIgMNAAwCCwsgACACQQhqEMcBCwJAIAIoAgwiAEUNACACKAIIIAIoAhQQ2gwgACAAQQR0QRdqQXBxIgNqQQlqIgBFDQAgAigCCCADayAAQQgQvRMLIAJBGGoQ1hcgAkGQAWokAAuxAwEEfyABIAAoAgwiAhDTAyACIAEQUQJAIAEoAgBFDQAgAigCAEEaRw0AIAEgAkEIaiIDEMMFIgRFDQAgAhDkASACQThqIARBOGopAwA3AwAgAkEwaiAEQTBqKQMANwMAIAJBKGogBEEoaikDADcDACACQSBqIARBIGopAwA3AwAgAkEYaiAEQRhqKQMANwMAIAJBEGogBEEQaikDADcDACADIARBCGopAwA3AwAgAiAEKQMANwMAIARBwABBCBC9EwsCQCAAKAIIIgJFDQAgAkEEdCEDIAAoAgRBDGohAANAIAEgACgCACICENMDIAIgARBRAkAgASgCAEUNACACKAIAQRpHDQAgASACQQhqIgUQwwUiBEUNACACEOQBIAJBOGogBEE4aikDADcDACACQTBqIARBMGopAwA3AwAgAkEoaiAEQShqKQMANwMAIAJBIGogBEEgaikDADcDACACQRhqIARBGGopAwA3AwAgAkEQaiAEQRBqKQMANwMAIAUgBEEIaikDADcDACACIAQpAwA3AwAgBEHAAEEIEL0TCyAAQRBqIQAgA0FwaiIDDQALCwumAwELfyMAQRBrIgIkAAJAAkACQCABKAIEIgMgAUF0aigCACABKAIIIgQgAUF4aigCACIFIAQgBUkbEJIXIgYgBCAFayAGGyIFDQBBACEHIAEtAAwgAUF8ai0AAEkNAQwCCyAFQX9KDQEgAS0ADCEHCyABKAIAIQggASABQXBqIgYpAgA3AgAgAUEPai0AACEFIAEvAA0hCSABQQhqIAZBCGopAgA3AgAgAkEOaiIKIAU6AAAgAiAJOwEMAkAgBiAARg0AIAFBYGohASAHQf8BcSELAkADQAJAAkAgAyABQQRqKAIAIAQgAUEIaiIMKAIAIgUgBCAFSRsQkhciCSAEIAVrIAkbIgUNACALIAFBDGotAABJDQEMBAsgBUF/Sg0CCyAGQXBqIQYgAUEQaiIFIAEpAgA3AgAgBUEIaiAMKQIANwIAIAEgAEchBSABQXBqIgkhASAFDQALIAlBEGohBgwBCyABQRBqIQYLIAYgBzoADCAGIAQ2AgggBiADNgIEIAYgCDYCACAGIAIvAQw7AA0gBkEPaiAKLQAAOgAACyACQRBqJAALpQMBDn8jAEEQayICJABBACEDAkACQCABLQAlRQ0ADAELIAEoAgQhBAJAIAEoAhAiBSABKAIIIgZLDQAgBSABKAIMIgdJDQAgAUEUaiIIIAEtABgiCWpBf2otAAAiCkH/AXEhCyAJQQVJIQwCQANAIAQgB2ohDQJAAkAgBSAHayIOQQdLDQAgBSAHRg0DQQAhDwNAIA0gD2otAAAgC0YNAiAOIA9BAWoiD0cNAAwECwsgAkEIaiAKIA0gDhDUCSACKAIIQQFxRQ0CIAIoAgwhDwsgASAHIA9qQQFqIgc2AgwCQCAHIAlJDQAgByAGSw0AAkAgDEUNACAEIAcgCWsiD2ogCCAJEJIXDQEgASgCHCENIAEgBzYCHCAEIA1qIQMgDyANayEPDAULIAlBBEGc5JsBELwiAAsgBSAHTw0ADAILCyABIAU2AgwLIAFBAToAJQJAAkAgAS0AJEEBRw0AIAEoAiAhDiABKAIcIQ0MAQsgASgCICIOIAEoAhwiDUYNAQsgBCANaiEDIA4gDWshDwsgACAPNgIEIAAgAzYCACACQRBqJAALsgMBA38jAEGAAWsiAiQAAkACQCAAKAIgIgMoAgBBGkcNACACIAEoAgAgASgCBCADQQhqIgQQgg0gAigCAEEyRg0BIAMQ0QEgA0E4aiACQThqKQMANwMAIANBMGogAkEwaikDADcDACADQShqIAJBKGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgBCACQQhqKQMANwMAIAMgAikDADcDAAwBCyADIAEQRgsCQCAAKAIAQQJJDQACQCAAKAIEIgMoAgBBGkcNACACQcAAaiABKAIAIAEoAgQgA0EIaiIAEIINIAIoAkBBMkYNASADENEBIANBOGogAkHAAGpBOGopAwA3AwAgA0EwaiACQcAAakEwaikDADcDACADQShqIAJBwABqQShqKQMANwMAIANBIGogAkHAAGpBIGopAwA3AwAgA0EYaiACQcAAakEYaikDADcDACADQRBqIAJBwABqQRBqKQMANwMAIAAgAkHAAGpBCGopAwA3AwAgAyACKQNANwMADAELIAMgARBGCyACQYABaiQAC7UDAQV/IwBBEGsiAiQAAkAgAS0AbEECRw0AIAFBwABqIQMDQCADKAIYIgMtACxBAkYNAAsLAkAgASgChAEiBEUNACABKAKAASIDIARB2ABsaiEFA0ACQAJAIAMoAgAiBEEFRw0AIAMoAgQgABClAQwBCyAEQQRGDQACQAJAAkAgBA4EAwABAgMLIAMoAgRBAUcNAiADKAIIIAAQpQEMAgsgAygCBCAAENMCDAELIANBDGooAgAhBiADQQhqKAIAIQQgAiAANgIMIAZFDQAgBkEobCEGA0AgAkEMaiAEELAGIARBKGohBCAGQVhqIgYNAAsLIANB2ABqIgMgBUcNAAsLAkAgASgCeCIDRQ0AIANBCGooAgAiBEUNACADQQRqKAIAIQMgBEECdCEEA0AgAygCACAAEOwBIANBBGohAyAEQXxqIgQNAAsLAkAgASgCmAEiBEUNACABKAKUASEDIARBKGwhBANAIAAgAxDJBSADQShqIQMgBEFYaiIEDQALCwJAIAEtADwiA0EGRg0AIANBAkcNACABQRBqIQMDQCADKAIYIgMtACxBAkYNAAsLIAJBEGokAAvOAwEDfwJAIAAoAggiAkUNACAAKAIEIgMgAkE4bGohBANAAkACQAJAAkACQAJAAkACQAJAIAMoAgAOBwgAAQIDBQQICyADQQxqKAIAIgJFDQcgA0EIaigCACEAIAJBKGwhAgNAAkAgACgCAEEHRg0AIAAgARD6BgsgAEEoaiEAIAJBWGoi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gICAgKAfNwKsASABQoCAgIDAADcCpAEgAUEAOgCYASABQQI2AoABIAFBAjYCeCABQQI2AnAgAUKBgICAgICA0AA3AmggAUKBgICAgICAEDcCYCABQoKEiJCgwICBAjcAmQEgAUGkAWpBAEEBQQRBDBDOGSABKAKoASABKAKsASICQQxsaiEDQQAhBAJAAkACQANAIARBAXENASABQQZBAUEBEKQOIAEoAgQhBSABKAIAQQFGDQIgASgCCCIEQQRqQQAvALPYmAE7AAAgBEEAKACv2JgBNgAAIANBCGpBBjYCACADQQRqIAQ2AgAgAyAFNgIAIANBDGohA0EBIQQgAkEBaiECDAALCyABIAI2AqwBAkBB4ABFDQAgASABQeAAakHgAPwKAAALIAFB4ABqIAEQRyABKAJIIgMgASgCTBCCHCABKAJEIAMQ1CIgARCVGiABKAJgRQ0BIAAgASkCYDcCACAAQQhqIAFB4ABqQQhqKQIANwIAIAFBwAFqJAAPCyAFIAEoAghBuOSbARDYIAALIAFBCGogAUHsAGooAgA2AgAgASABKQJkNwMAQbSqmwFBKyABQdjQmAFB2NiYARDqEAALsAMBCn8jAEHwAGsiAyQAIAMgAkEEQQwQow4gAygCBCEEAkAgAygCAEEBRg0AIAMoAgghBQJAAkAgBEUNACACQQxsIQYgBSEHIAQhCANAIAZFDQECQAJAIAEoAgAiCQ0AQQAtAOD2nQEaQfAAEIQBIgpFDQQgAyABQQRqKAIAEPkBAkBB8ABFDQAgCiADQfAA/AoAAAtBACELDAELQQAtAOD2nQEaIAFBCGooAgAhDCABQQRqKAIAIQpBwAAQhAEiC0UNAyADIAkQRSALQThqIANBOGopAwA3AwAgC0EwaiADQTBqKQMANwMAIAtBKGogA0EoaikDADcDACALQSBqIANBIGopAwA3AwAgC0EYaiADQRhqKQMANwMAIAtBEGogA0EQaikDADcDACALQQhqIANBCGopAwA3AwAgCyADKQMANwMACyABQQxqIQEgByALNgIAIAdBCGogDDYCACAHQQRqIAo2AgAgB0EMaiEHIAZBdGohBiAIQX9qIggNAAsLIAAgAjYCCCAAIAU2AgQgACAENgIAIANB8ABqJAAPCwALIAQgAygCCEGIpJoBENggAAuUAwEFfwJAAkACQAJA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CyAAIAEQeCABIAM6ACggASAEOgB5DAMLIAEtACghAyABQQA6ACggAS0AeSEEIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAEOcaIAFBLGogAikDACACKAIIEJALCyAAIAEQeCABIAM6ACggASAEOgB5DAILIAAoAgQiBEHAAGogARCACyAEQYABaigCACAEQYQBaigCACABEMIIAkAgBEGYAWooAgAiA0UNACAEQZQBaigCACEAIANBKGwhAwNAIAAgARDXByAAQShqIQAgA0FYaiIDDQALCyAELQA8QQZGDQEgBEEQaiABEIALDAELIAAoAgwiA0UNACAAKAIIIQAgA0EobCEDA0AgASAAELQDIABBKGohACADQVhqIgMNAAsLIAJBEGokAAuiAwIKfwF+IwBB4ABrIgIkAAJAIAEoAgwiAyABKAIEIgRrQQR2IgUgACgCACAAKAIIIgZrTQ0AIAAgBiAFQQhB2AAQzRkgACgCCCEGCwJAIAQgA0YNACAAKAIEIAZB2ABsaiEFIAJBCGpBKGohByACQTxqIQggAkHFAGoiCUEEaiEKA0AgASAEQRBqIgs2AgQgBCkDACEMIAhCADcCACAIQQhqQQA6AAAgCUEANgAAIApBADsAACACQgA3AxggAkIBNwMQIAJBADYCMCACQgA3AyggAkEANgIIIAJBAzoASyACQgQ3AjQgAkHQAGpBCGoiBCAHQQhqKAIANgIAIAIgBykDADcDUCACQQhqEOwNIAVBKGpCADcCACAFQRhqQgA3AgAgBUEQaiAMNwIAIAVBCGpBADYCACAFQQc2AgAgBUEwaiACKQNQNwIAIAVBOGogBCgCADYCACAFQTxqQgA3AgAgBUHDAGpCADcAACAFQcsAakEDOgAAIAVB2ABqIQUgBkEBaiEGIAshBCALIANHDQALCyAAIAY2AgggAkHgAGokAAvAAwEDfwJAAkACQAJAAkACQCAAKAIADgcFAAECAwUEBQsgACgCDCICRQ0EIAAoAgghACACQShsIQIDQAJAIAAoAgBBB0YNACAAIAEQ8AkLIABBKGohACACQVhqIgINAAwFCwsgACgCBCABEPAJDwsgACgCDCICRQ0CIAAoAggiACACQThsaiEDA0ACQAJAAkACQCAAKAIADgMAAQIACyAAQQhqIAEQgAwM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AkAgA0GEAWooAgAiBEUNACADQYABaigCACEBIARB2ABsIQQDQAJAAkACQCABKAIAQXxqDgICAAELIAAtAAANASABQQRqKAIAIAAQmAEMAQsgASAAEOwICyABQdgAaiEBIARBqH9qIgQNAAsLAkAgA0GYAWooAgAiBEUNACADQZQBaigCACEBIARBKGwhBANAIAEgABDUBiABQShqIQEgBEFYaiIEDQALCyADLQA8IgFBBkYNASABQQJHDQEgA0EQaiEBA0AgASgCGCIBLQAsQQJGDQAMAgsLIAEoAgwhBCABKAIIIQEgAiAANgIMIARFDQAgBEEobCEAA0AgAkEMaiABEOgHIAFBKGohASAAQVhqIgANAAsLIAJBEGokAAuxAwEFfwJAAkACQAJAAkACQAJAIAAoAgAOBwABAgMFBAYACyAAKAIgIgJFDQMgAigCACABEOwBDwsCQCAAKAIMIgNFDQAgACgCCCECIANBKGwhAwNAAkAgAigCAEEHRg0AIAIgARDpBwsgAkEoaiECIANBWGoiAw0ACwsgACgCGCICRQ0CIAIoAgAgARDsAQ8LIAAoAgQgARDpByAAKAIYIgJFDQEgAigCACABEOwBDwsCQCAAKAIMIgJFDQAgACgCCCEEIAJBOGwhBUEAIQMDQAJAAkACQAJAIAQgA2oiAigCAA4DAAECAAsCQCACQQhqKAIAQQNHDQAgAkEMaigCACABEKUBCyACQShqKAIAIAEQ6QcMAgsCQCACQShqKAIAIgZFDQAgBigCACABEOwBCyACQTBqKAIAIgJFDQEgAiABEKUBDAELIAJBBGooAgAgARDpByACQRhqKAIAIgJFDQAgAigCACABEOwBCyAFIANBOGoiA0cNAAsLIAAoAhgiAkUNACACKAIAIAEQ7AELDwsgACgCBCABEOkHIAAoAgggARClAQ8LIAAoAgQgARClAQvsAgEIfyACIAFBDGxBdGoiA2ohBCAAIANqIQUgACABQQF2IgZBDGxqIgNBdGohBwJAA0ACQCAGDQAgB0EMaiEHAkAgAUEBcUUNACACIAAgAyAAIAdJIgQbIgYpAgA3AgAgAkEIaiAGQQhqKAIANgIAIAMgACAHT0EMbGohAyAAIARBDGxqIQALAkAgACAHRw0AIAMgBUEMakYNAwsQ+xsACyACIAMgACADKAIEIAAoAgRJ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wABqJAALhAMCBn8CfiMAQSBrIgMkAEEUIQQgACEJAkAgAELoB1QNAEEUIQQgACEKA0AgA0EMaiAEaiIFQX1qIAogCkKQzgCAIglCkM4Afn2nIgZB//8DcUHkAG4iB0EBdCIIQaHMmAFqLQAAOgAAIAVBfGogCEGgzJgBai0AADoAACAFQX9qIAYgB0HkAGxrQf//A3FBAXQiBkGhzJgBai0AADoAACAFQX5qIAZBoMyYAWotAAA6AAAgBEF8aiEEIApC/6ziBFYhBSAJIQogBQ0ACwsCQCAJQglYDQAgA0EMaiAEakF/aiAJpyIFIAVB//8DcUHkAG4iBUHkAGxrQf//A3FBAXQiBkGhzJgBai0AADoAACADQQxqIARBfmoiBGogBkGgzJgBai0AADoAACAFrSEJCwJAAkAgAFANACAJUA0BCyADQQxqIARBf2oiBGogCadBAXRBHnFBocyYAWotAAA6AAALIAIgAUEBQQAgA0EMaiAEakEUIARrEO8FIQUgA0EgaiQAIAULqAMBBH8jAEEwayIDJAACQAJAIAItAAwiBEEBRw0AIAAgASkCADcCACAAQQhqIAFBCGopAgA3AgAMAQsCQAJAAkACQAJAAkACQAJAAkAgAS0ADCIFDgMBAAIBCyADIAIQmx8gACADKQIANwIAIANBAiADLQAMazoADCAAQQhqIANBCGopAgA3AgAgASgCBCEEDAcLIARFDQEMAgsgBEUNAQsgASgCBCIEIAEoAgggAigCBCIGIAIoAggiAhCZG0H/AXEOAgIDAQsgA0EIaiABQQhqKAIANgIAIAMgASkCADcDACADQRRqIAMgAigCBCACKAIIEJYMIAAgBSADQRRqEM0UDAQLIANBCGogAUEIaigCADYCACADIAEpAgA3AwAgA0EUaiAGIAIgAxDmByAAQQIgBWsgA0EUahDNFAwDCyAAQQhqQQApAsjfggE3AgAgAEEAKQLA34IBNwIADAELIANBIGpBCGogAUEIaigCADYCACADIAEpAgA3AyAgA0EgaiAGIAIQoCAgACAFIANBIGoQzRQMAQsgASgCACAEEN8iCyADQTBqJAALsgMBAn8jAEHgAGsiAyQAAkACQAJAAkACQCABKAIALQAUIgRBAkYNACAEQQFxRQ0BCwJAAkACQAJAIAItABgOAwABAgALIANBOGpBpOeI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DQACQAJAIAQNAEEEIQRBACEFDAELQQAtAOD2nQEaIAQQhAEiBEUNAiACIQULIANBADYCDCADIAQ2AgggAyAFNgIEIAJBAkkNAyABKAIIIgatQhh+IgxCIIinQQBHIAynIgVB/P///wdLciEHIAJBf2ohCCABKAIEIQkDQCAHDQMCQAJAIAUNAEEEIQpBACELDAELQQAtAOD2nQEaIAUQhAEiCkUNAyAGIQsLAkAgBUUNACAKIAkgBfwKAAALIARBCGogBjYCACAEQQRqIAo2AgAgBCALNgIAIARBDGohBCAIQX9qIggNAAwFCwtBuKCFARCBHAsAC0G45JsBEIEcAAsgAkUNAUEBIQILIAQgASkCADcCACAEQQhqIAFBCGooAgA2AgAMAQsgASgCACABKAIEQQRBGBDQEkEAIQILIAAgAykCBDcCACAAQQhqIAI2AgAgA0EQaiQAC5gDAQV/AkAgACgCCCICRQ0AIAAoAgQiAyACQThsaiEEA0ACQAJAAkACQAJAAkAgAygCAA4HBQABAgMFBAULIANBDGooAgAiAkUNBCADQQhqKAIAIQAgAkEobCECA0ACQCAAKAIAQQdGDQAgACABELcJCyAAQShqIQAgAkFYaiICDQAMBQsLIAMoAgQgARC3CQwDCyADQQxqKAIAIgBFDQIgA0EIaigCACEFIABBOGwhBkEAIQADQAJAAkACQAJAIAUgAGoiAigCAA4DAAECAAsCQCACQQhqKAIAQQNHDQAgAS0AAA0AIAJBDGooAgAgARCYAQsgAkEoaigCACABELcJDAILIAJBMGooAgAiAkUNASABLQAADQEgAiABEJgBDAELIAJBBGooAgAgARC3CQsgBiAAQThqIgBHDQAMAwsLIAMoAgQgARC3CSABLQAADQEgAygCCCABEJgBDAELIAEtAAANACADKAIEIAEQmAELAkAgAygCMCIARQ0AIAEtAAANACAAIAEQmAELIANBOGoiAyAERw0ACwsLmAMBBX8CQCAAKAIIIgJFDQAgACgCBCIDIAJBOGxqIQQDQAJAAkACQAJAAkACQCADKAIADgcFAAECAwUEBQsgA0EMaigCACICRQ0EIANBCGooAgAhACACQShsIQIDQAJAIAAoAgBBB0YNACAAIAEQtwkLIABBKGohACACQVhqIgINAAwFCwsgAygCBCABELcJ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CwsgASACOgAlIAEgAzoAJCABIAc6ACYL9wIBA38CQAJAAkACQAJAAkACQCAAKAIADgcFAAECAwUEBQsgACgCDCICRQ0EIAAoAgghAyACQShsIQIDQAJAIAMoAgBBB0YNACADIAEQhgQgASgCAEUNACABIAMQwwgLIANBKGohAyACQVhqIgINAAwFCwsgACgCBCIDIAEQhgQgASgCAEUNBCABIAMQwwgMAwsgAEEEaiABEJ8GDAILIAEgAEEEahCqCwwBCyABIAAoAgQiAxDTAyADIAEQUSABKAIARQ0BIAMoAgBBGkcNACABIANBCGoiBBDDBSICRQ0AIAMQ5AEgA0E4aiACQThqKQMANwMAIANBMGogAkEwaikDADcDACADQShqIAJBKGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgBCACQQhqKQMANwMAIAMgAikDADcDACACQcAAQQgQvRMLIAEoAgBFDQAgASAAEMMICwvcAgIMfwV+IwBBMGshA0EBIQQCQCAAKAIIIgUgAUYNACAAKAIEIgQgAUEwbGohBiAEIAVBMGxqIQUgAigCBCEBIAIoAgwhByADQShqIQggA0EgaiEJIANBGGohCiADQRBqIQsgA0EIaiEMA0BBACEEIAEgB0YNASACIAFBMGoiDTYCBCABKAIAIg5BE0YNASABQSxqKAIAIQQgAUEkaikCACEPIAFBHGopAgAhECABQRRqKQIAIREgAUEMaikCACESIAFBBGopAgAhEyAFIA42AgAgBUEEaiATNwIAIAVBDGogEjcCACAFQRRqIBE3AgAgBUEcaiAQNwIAIAVBJGogDzcCACAFQSxqIAQ2AgAgCCAENgIAIAkgDzcDACAKIBA3AwAgCyARNwMAIAwgEjcDAEEBIQQgACAAKAIIQQFqNgIIIAMgEzcDACANIQEgBUEwaiIFIAZHDQALCyAEC9wCAQ9/IwBBEGsiAiQAIAFBFGohAyABIAEtABgiBGpBE2ohBSABKAIMIQYgASgCBCEHIAEoAgghCCABKAIQIQkgBEEFSSEKAkACQAJAA0BBACELIAkgBkkNAyAJIAhLDQMgByAGaiEMIAUtAAAhDQJAAkAgCSAGayIOQQdLDQBBACEPIA1B/wFxIRBBACENA0ACQCAO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WGoiAg0ADAULCyADKAIEIAEQ7QkMAwsgA0EMaigCACIARQ0CIANBCGooAgAhBSAAQThsIQZBACEAA0ACQAJAAkACQCAFIABqIgIoAgAOAwABAgALAkAgAkEIaigCAEEDRw0AIAJBDGooAgAgARCoAQsgAkEoaigCACABEO0JDAILIAJBMGooAgAiAkUNASACIAEQqAEMAQsgAkEEaigCACABEO0JCyAGIABBOGoiAEcNAAwDCwsgAygCBCABEO0JIAMoAgggARCoAQwBCyADKAIEIAEQqAELAkAgAygCMCIARQ0AIAAgARCoAQsgA0E4aiIDIARHDQALCwv1AgEFfwJAIAAoAggiAkUNACAAKAIEIgMgAkE4bGohBANAAkACQAJAAkACQAJAIAMoAgAOBwUAAQIDBQQFCyADQQxqKAIAIgJFDQQgA0EIaigCACEAIAJBKGwhAgNAAkAgACgCAEEHRg0AIAAgARDtCQsgAEEoaiEAIAJBWGoiAg0ADAULCyADKAIEIAEQ7QkMAwsgA0EMaigCACIARQ0CIANBCGooAgAhBSAAQThsIQZBACEAA0ACQAJAAkACQCAFIABqIgIoAgAOAwABAgALAkAgAkEIaigCAEEDRw0AIAJBDGooAgAgARCoAQsgAkEoaigCACABEO0JDAILIAJBMGooAgAiAkUNASACIAEQqAEMAQsgAkEEaigCACABEO0JCyAGIABBOGoiAEcNAAwDCwsgAygCBCABEO0JIAMoAgggARCoAQwBCyADKAIEIAEQqAELAkAgAygCMCIARQ0AIAAgARCoAQsgA0E4aiIDIARHDQALCwv1AgEFfwJAIAAoAggiAkUNACAAKAIEIgMgAkE4bGohBANAAkACQAJAAkACQAJAIAMoAgAOBwUAAQIDBQQFCyADQQxqKAIAIgJFDQQgA0EIaigCACEAIAJBKGwhAgNAAkAgACgCAEEHRg0AIAAgARDvCQsgAEEoaiEAIAJBWGoiAg0ADAULCyADKAIEIAEQ7wkMAwsgA0EMaigCACIARQ0CIANBCGooAgAhBSAAQThsIQZBACEAA0ACQAJAAkACQCAFIABqIgIoAgAOAwABAgALAkAgAkEIaigCAEEDRw0AIAJBDGooAgAgARCNAQsgAkEoaigCACABEO8JDAILIAJBMGooAgAiAkUNASACIAEQjQEM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EKAhDwsgAEEIahC7DQvgAgIBfwF+IwBBIGsiAyQAIANBEGogAiABKAIIQQAQogICQAJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIANBEGogASACEIojAkAgAy0AEEEERg0AIAMpAxAiBEL/AYNCBFENACAAIAQ3AgAMAQsgA0EQaiACEN0PAkAgAy0AEEEERg0AIAMpAxAiBEL/AYNCBFENACAAIAQ3AgAMAQsgA0EANgIQIANBCGogAiADQRBqQdyxmwFBAhCGDQJAIAMtAAhBBEYNACADKQMIIgRC/wGDQgRRDQAgACAENwIADAELIANBEGogAhDdDwJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIANBEGogAUEEaiACEE8CQCADLQAQQQRGDQAgAykDECIEQv8Bg0IEUQ0AIAAgBDcCAAwBCyAAQQQ6AAALIANBIGokAAvgAgIBfwF+IwBBIGsiAyQAIANBEGogAiABKAIIQQAQogICQAJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIANBEGogASACEIojAkAgAy0AEEEERg0AIAMpAxAiBEL/AYNCBFENACAAIAQ3AgAMAQsgA0EQaiACEN0PAkAgAy0AEEEERg0AIAMpAxAiBEL/AYNCBFENACAAIAQ3AgAMAQsgA0EANgIQIANBCGogAiADQRBqQZzMmwFBCRCGDQJAIAMtAAhBBEYNACADKQMIIgRC/wGDQgRRDQAgACAENwIADAELIANBEGogAhDdDwJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIANBEGogAUEEaiACEE8CQCADLQAQQQRGDQAgAykDECIEQv8Bg0IEUQ0AIAAgBDcCAAwBCyAAQQQ6AAALIANBIGokAAv3AgEBfwJAAkAgAkUNACABLQAAQTBNDQEgBUECOwEAAkACQAJAAkACQAJAIAPBIgZBAUgNACAFIAE2AgQgAiADQf//A3EiA0sNASAFQQA7AQwgBSACNgIIIAUgAyACazYCECAEDQJBAiEBDAULIAUgAjYCICAFIAE2AhwgBUECOwEYIAVBADsBDCAFQQI2AgggBUHM15gBNgIEIAVBACAGayIDNgIQQQMhASAEIAJNDQQg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AGohAiABQah/aiIBDQALCwJAIAAoApgBIgFFDQAgACgClAEhAiABQShsIQEDQCACENEGIAJBKGohAiABQVhqIgENAAsLAkAgAC0APCIBQQZGDQACQAJAIAFBfWoiAkEBIAJBA0kbQf8BcQ4DAAECAAsgAEEANgIgDwsgAEEQaiECAkAgAUECRw0AA0AgAigCGCICLQAsQQJGDQALCyACQQA2AigLC9QCAQR/IwBBMGsiASQAIABBPGoQ6SEgACgCACAAKAIEQQRBHBC/EiAAQQxqEMsUIABBzABqEOkhIABBGGoQyxQCQCAAKAIwQYCAgIB4Rg0AIABBMGoQyxQLIAAoAighAgJAIAAoAiwiA0UNAANAAkAgAigCACIERQ0AIAJBDGogAkEEaigCACACQQhqKAIAIAQoAhARCwAgAkEYaigCACACQRxqKAIAEMwiCyACQSRqIQIgA0F/aiIDDQALIAAoAighAgsgACgCJCACQQRBJBC/EgJAAkAgACgCXCICDQBBACECQQAhAwwBCyABIAI2AhggAUEANgIUIAEgAjYCCCABQQA2AgQgASAAKAJgIgI2AhwgASACNgIMIAAoAmQhA0EBIQILIAEgAzYCICABIAI2AhAgASACNgIAA0AgAUEkaiABEJkHIAEoAiQNAAsgAUEwaiQAC9UCAQV/IwBB0ABrIgMkACABIAEoAngiBCACQX9zcTYCeEEAIQUgA0EAOgADIAMgASgCwAE2AgRBBCECQQAhBgJAAkAgAS0AyAEiB0EYRw0AIANBCGogAUEBEIADIAMoAgwhAgJAIAMoAggiBkGAgICAeEcNACAAQRM2AgAgACACNgIEDAILIAMoAhAhBSABLQDIASEHCwJAAkAgB0H/AXEiB0HfAEYNACAHQdgARw0BCyADIAU2AhQgAyACNgIQIAMgBjYCDCADIAE2AgggACABIANBDGoQnggMAQsgAyAFNgJEIAMgAjYCQCADIAY2AjwgAyADQQNqNgJMIAMgA0EEajYCSCADQQhqIAEgA0E8ahDhHAJAIAMoAghBE0cNACAAIAMoAgw2AgQgAEETNgIADAELQTBFDQAgACADQQhqQTD8CgAACyABIAQ2AnggA0HQAGokAAuDAwEBfyMAQZABayICJAAgAkHg6YMBNgKIASACQdTshAE2AoABIAJB1OyEATYCeCAC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IABBBHYhACAEDQALIAFBAUGA0ZsBQQIgAiADakF/akGBASADaxDvBSEACyACQYABaiQAIAALsgICAn8BfiMAQcAAayICJAACQAJAAkACQAJAAkAgASgCAA4EAAECAwALAkAgASkDCCIEQgODQgBSDQAgBKciASABKAIAIgFBAWo2AgAgAUF/TA0FCyAAQQA2AgAgACAENwMIDAMLIAAgASkDADcDACAAQQhqIAFBCGopAwA3AwAMAgsgASgCBCEDEOIfIQEgAiADEEUgAUE4aiACQThqKQMANwMAIAFBMGogAkEwaikDADcDACABQShqIAJBKGopAwA3AwAgAUEgaiACQSBqKQMANwMAIAFBGGogAkEYaikDADcDACABQRBqIAJBEGopAwA3AwAgAUEIaiACQQhqKQMANwMAIAEgAikDADcDACAAQQI2AgAgACABNgIEDAELIABBAzYCAAsgAkHAAGokAA8LAAu9AgEDfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAIAAoAgAOBwABAgMEBgUACyACIAApAwggACgCGBDnGiABQRBqIAIpAwAgAigCCBCRBhoMBQsCQCAAKAIMIgNFDQAgACgCCCEEIANBKGwhAwNAAkAgBCgCAEEHRg0AIAQgARD4CQsgBEEoaiEEIANBWGoiAw0ACwsgACgCGCIERQ0EIAQoAgAgARCnAQwECyAAKAIEIAEQ+AkgACgCGCIERQ0DIAQoAgAgARCnAQwDCwJAIAAoAgwiA0UNACAAKAIIIQQgA0E4bCEDA0AgBCABEOQQIARBOGohBCADQUhqIgMNAAsLIAAoAhgiBEUNAiAEKAIAIAEQpwEMAgsgACgCBCABEPgJIAAoAgggARBuDAELIAAoAgQgARBuCyACQRBqJAALvwIBA38jAEEwayIDJAACQCABIAAoAnhBCHFBA3YQqxANACADQRBqIAEQ0gMgAygCFCEEIAMoAhAhBSADQauBgIB4NgIYIAAgBSAEIANBGGoQ3hwLAkAgAC8BgAFBgNAAcUGAwABHDQACQCABKAIAIgRBGkcNACABQQhqEI4KRQ0AIAMgARDSAyADKAIEIQQgAygCACEFIANBh4GAgHg2AhggACAFIAQgA0EYahDTDQwBCyABIAAoAnhBCHFBA3YQqxANACABIQUCQAJAA0ACQCAEQSNGDQACQCAE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DQIgACgCCCEAIAJBOGwhAgNAAkACQAJAAkAgACgCAA4DAAECAAsCQCAAQShqKAIAIgMoAgANACABIANBCGoQzwQMAwsgAyABELYKDAILIAEgAEEQahDPBAwBCwJAIABBBGooAgAiAygCAA0AIAEgA0EIahDPBAwBCyADIAEQtgoLIABBOGohACACQUhqIgINAAwDCwsgACgCBCIAKAIAIgINAAsgASAAQQhqEM8ECwuoAgEDfwJAAkACQAJAAkACQCAAKAIADgcFAAECAwUEBQsgACgCDCICRQ0EIAAoAgghACACQShsIQIDQAJAIAAoAgBBB0YNACAAIAEQ7QkLIABBKGohACACQVhqIgINAAwFCwsgACgCBCABEO0JDwsgACgCDCICRQ0CIAAoAgghAyACQThsIQRBACEAA0ACQAJAAkACQCADIABqIgIoAgAOAwABAgALAkAgAkEIaigCAEEDRw0AIAJBDGooAgAgARCoAQsgAkEoaigCACABEO0JDAILIAJBMGooAgAiAkUNASACIAEQqAEMAQsgAkEEaigCACABEO0JCyAEIABBOGoiAEcNAAwDCwsgACgCBCABEO0JIAAoAgggARCoAQ8LIAAoAgQgARCoAQsLngIBAX8CQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCwoAAQIDBAUGBwgKCgsgASAAKAIoEKsBIAAoAghBAkkNCSAAQQxqIQAMCAsgACgCCEEBRw0IIABBDGohAAwHCyAAQQRqIQAMBgsCQCAAKAIEIgAoAgAiAkEDRw0AIAEgACgCEBCrASAAQQxqKAIAIgJFDQcgAkEEdCECIABBCGooAgBBDGohAANAIAEgACgCABCrASAAQRBqIQAgAkFwaiICDQAMCAsLIAEgACgCIBCrASACQQJJDQYgAEEEaiEADAULIABBBGohAAwECyAAQQRqIQAMAwsgAEEEaiEADAILIABBBGohAAwBCyAAQQRqIQALIAEgACgCABCrAQsLqAIBA38CQAJAAkACQAJAAkAgACgCAA4HBQABAgMFBAULIAAoAgwiAkUNBCAAKAIIIQAgAkEobCECA0ACQCAAKAIAQQdGDQAgACABEO8JCyAAQShqIQAgAkFYaiICDQAMBQsLIAAoAgQgARDvCQ8LIAAoAgwiAkUNAiAAKAIIIQMgAkE4bCEEQQAh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mAE2AgggAkIDNwIUIAIgAEEQajYCMCACIABBDGo2AiggAiACQThqNgIgIAIgAkEgajYCECABKAIAIAEoAgQgAkEIahDlICEAIAIoAjggAigCPBDnIiACQeAAaiQAIAAL+AEBBH8gAigCCCEDIAIoAgQhBCAAENISIQACQAJAAkAgASACKAIATw0AA0ACQCADDQBBACEFDAQLIAAoAhAgACgCFCADQX9qIgZBlL6YARC7HiIFKAIAIAFJDQIgBEECIAUtAAQiA0F/aiADQQRGG0H/AXFrIQQgBiEDDAALCyADIAAoAhQiBiADIAZLGyEFA0AgBSADRg0CIAAoAhAgACgCFCADQaS+mAEQux4iBigCACABTw0BIARBAiAGLQAEIgZBf2ogBkEERhtB/wFxaiEEIANBAWohAwwACwsgAyEFCyACIAU2AgggAiAENgIEIAIgATYCACAEC4ACAgN/AX4jAEEgayICJAACQCAALQCQAQ0AIAEoAhAiA0UNACACQQhqIAEpAwAgAxDnGiAAQYABaiACKQMIIAIoAhAQkQYaCwJAIAAtAChBAUcNACACQQhqIAEQ6BIgACACKQMIIgUgAigCGBCJECAFQgODQgBSDQAgBaciAyADKAIAIgRBf2o2AgAgBEEBRw0AIAMgAygCEBDpHQsgAEEsaiEDAkACQCAALQB5DQAgAkEIaiABKQMAIAEoAhAQ5xogAyACKQMIIAIoAhAQkAsMAQsgAkEIaiABKQMAIAEoAhAQ5xogAyACKQMIIAIoAhAgAC0AehCPDAsgAkEgaiQAC/0BAgF/An4jAEHAAGsiAiQAAkAgASgCAEEFRw0AIAAgAUEIahDDBSIARQ0AIAEpAwghAyABQgE3AwggASkDECEEIAFCADcDECABQRVqQgA3AAAgASAANgIoIAFBBjYCACABIAIpAwA3AzAgAUEANgIIIAEgAzcDECABIAQ3AxggAUE4aiACQQhqKQMANwMAIAFBwABqIAJBEGopAwA3AwAgAUHIAGogAkEYaikDADcDACABQdAAaiACQSBqKQMANwMAIAFB2ABqIAJBKGopAwA3AwAgAUHgAGogAkEwaikDADcDACABQegAaiACQThqKQMANwMACyACQcAAaiQAC/YBAgZ/AX4jAEEQayIBJAACQCAAKAIEIgJFDQAgACgCACEDAkAgACgC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DSADKAIIIQUgAygCBCIGQSJGDQACQEE4RQ0AIABBCGogA0EEakEIakE4/AoAAAsgACAFNgIEIAAgBjYCAAwBCwJAIAUgBCgCACgCYCIGSw0AIABBIjYCACABIAU2AgQMAQsgA0EXNgIEIAMgBjYCCCAAIARBBGooAgAgBEEIaigCACACIANBBGoQoQ0LIANB4ABqJAAL6wEBBH8jAEEgayIBJAAgACgCACICKAIAIQMgAkEANgIAIAMoAhQhAiADQQA2AhQCQCACRQ0AIAFBCGogAhEDAAJAIAAoAgQiACgCACIDKAIAIgJFDQAgAygCBCIERQ0AIAIgA0EMaigCABDvDCAEIARBA3RBD2pBeHEiA2pBCWoiBEUNACACIANrIARBCBC9EwsgACgCACIDIAEpAgg3AgAgA0EIaiABQQhqQQhqKQIANwIAIAFBIGokAEEBDwsgAUEANgIYIAFBATYCDCABQbiDnQE2AgggAUIENwIQIAFBCGpBoPObARCoHQAL8gEBBn8jAEEQayICJAACQCAAKAIIIgNFDQAgACgCBCEAIANBDGwhBCABQSxqIQUDQAJAAkAgACgCACIDDQAgAEEEaigCACIDIAEQjAQgAygCAEEFRw0BIAIgAykDCCADQRhqKAIAEOcaIAUgAikDACACKAIIEJALDAELIAEtACghBiABQQA6ACggAS0AeSEHIAFBADoAeQJAIAMoAgBBGkcNACACIAMpAwggA0EYaigCABDnGiAFIAIpAwAgAigCCBCQCwsgAyABEHggASAGOgAoIAEgBzoAeQsgAEEMaiEAIARBdGoiBA0ACwsgAkEQaiQAC/EBAQJ/AkAgAS0AbEECRw0AIAFBwABqIQIDQCACKAIYIgItACxBAkYNAAsLAkAgASgChAEiA0UNACABKAKAASECIANB2ABsIQMDQAJAAkAgAigCAEEFRw0AIAAtAAANASACQQRqKAIAIAAQmAEMAQsgAiAAEIEJCyACQdgAaiECIANBqH9qIgMNAAsLAkAgASgCmAEiA0UNACABKAKUASECIANBKGwhAwNAIAIgABD9BiACQShqIQIgA0FYaiIDDQALCwJAIAEtADwiAkEGRg0AIAJBAkcNACABQRBqIQIDQCACKAIYIgItACxBAkYNAAsLC/sBAQJ/AkACQAJAIAAtACwiAkF9aiIDQQEg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uBQLIARBMGokAAvUAQEFfyAAKAIEIQEgACgCACECIABChICAgMAANwIAIAAoAhAhAwJAAkACQAJAIAEgAkYNACADDQEMAwsgA0UNAiAAKAIMIgIgACgCCCIAKAIIIgFGDQEgA0EDdCIERQ0BIAAoAgQiBSABQQN0aiAFIAJBA3RqIAT8CgAADAELAkAgACgCDCICIAAoAggiACgCCCIBRg0AIANBA3QiBEUNACAAKAIEIgUgAUEDdGogBSACQQN0aiAE/AoAAAsgACABIANqNgIIDwsgACABIANqNgIIDwsL0wEBBX8gACgCBCEBIAAoAgAhAiAAQoGAgIAQNwIAIAAoAhAhAwJAAkACQAJAIAEgAkYNACADDQEMAwsgA0UNAiAAKAIMIgIgACgCCCIAKAIIIgFGDQEgA0EBdCIERQ0BIAAoAgQiBSABQQF0aiAFIAJBAXRqIAT8CgAADAELAkAgACgCDCICIAAoAggiACgCCCIBRg0AIANBAXQiBEUNACAAKAIEIgUgAUEBdGogBSACQQF0aiAE/AoAAAsgACABIANqNgIIDwsgACABIANqNgIIDwsL+wEBAn8jAEEwayICJAACQAJAIAApAwBC////////////AINCgICAgICAgPj/AFMNACACQQE2AhQgAkGU85sBNgIQIAJCATcCHCACQfcBNgIsIAIgADYCKCACIAJBKGo2AhggASgCACABKAIEIAJBEGoQ5SAhAwwBCyACQQA6AAwgAiABNgIIQQEhAyACQQE2AhQgAkGU85sBNgIQIAJCATcCHCACQfcBNgIsIAIgADYCKCACIAJBKGo2AhggAkEIaiACQRBqEPYgDQACQCACLQAMDQAgASgCAEHVjpgBQQIgASgCBCgCDBEMAA0BC0EAIQMLIAJBMGokACADC9sBAQd/IwBB4ABrIgMkACADIAJBBEEEEKMOIAMoAgQhBAJAIAMoAgBBAUYNACADKAIIIQUCQAJAIARFDQAgAkECdCEGIAUhByAEIQgDQCAGRQ0BQQAtAOD2nQEaQeAAEIQBIglFDQIgAyABKAIAEGUCQEHgAEUNACAJIANB4AD8CgAACyAHIAk2AgAgB0EEaiEHIAZBfGohBiABQQRqIQEgCEF/aiIIDQALCyAAIAI2AgggACAFNgIEIAAgBDYCACADQeAAaiQADwsACyAEIAMo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ASgCBCAAQQhqIgEQgg0gAigCAEEyRg0BIAAQ0QEgAEE4aiACQThqKQMANwMAIABBMGogAkEwaikDADcDACAAQShqIAJBKGopAwA3AwAgAEEgaiACQSBqKQMANwMAIABBGGogAkEYaikDADcDACAAQRBqIAJBEGopAwA3AwAgASACQQhqKQMANwMAIAAgAikDADcDAAwBCyAAIAEQRgsgAkHAAGokAAvPAQEBfyMAQcAAayICJAACQAJAIAEoAgAiASgCAEEaRw0AIAIgACgCACAAKAIEIAFBCGoiABCCDSACKAIAQTJGDQEgARDRASABQThqIAJBOGopAwA3AwAgAUEwaiACQTBqKQMANwMAIAFBKGogAkEoaikDADcDACABQSBqIAJBIGopAwA3AwAgAUEYaiACQRhqKQMANwMAIAFBEGogAkEQaikDADcDACAAIAJBCGopAwA3AwAgASACKQMANwMADAELIAEgABBGCyACQcAAaiQAC7oBAQV/AkAgA0EISQ0AIAAgACADQQN2IgNB8ABsIgRqIAAgA0HEAWwiBWogAxDQDCEAIAEgASAEaiABIAVqIAMQ0AwhASACIAIgBGogAiAFaiADENAMIQILAkAgACgCBCIFIAEoAgQiBkkgACgCACIDIAEoAgAiBEkgAyAERhsiByAFIAIoAgQiCEkgAyACKAIAIgVJIAMgBUYbRw0AIAIgASAHIAYgCEkgBCAFSSAEIAVGG3MbIQALIAAL2gECBH8BfiMAQSBrIgEkAAJAIAAoAgQiAkUNACAAKAIAIQMCQCAAKAIMIgBFDQAgAykDACEFIAEgADYCGCABIAM2AhBBASEEIAEgAyACakEBajYCDCABIANBCGo2AgggASAFQn+FQoCBgoSIkKDAgH+DNwMAA0AgBEUNASABEJURIQAgASABKAIYQX9qIgQ2AhggAEF4aikDACEFIABBaGopAwAQ8x8gBRDzHwwACwsgAUEYQQggAkEBahCNECADIAEoAghrIAEoAgAgASgCBBDRIAsgAUEgaiQAC8IBAQV/AkAgASgCBCICIAFBeGooAgBJIAEoAgAiAyABQXRqKAIAIgRJIAMgBEYbQQFHDQAgAUFoaiEEIAEoAgghBQJAAkADQCAEIgFBIGogAUEUaigCADYCACABQRhqIAFBDGoiBCkCADcCACAEIABGDQEg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IAooAgAiAC0ACkGAAXENACAAKAIAQde1lwFBAiAAKAIEKAIMEQwAIQAMAQsgACgCAEHIy5sBQQEgACgCBCgCDBEMACEACyALQRBqJAAgAEEBcQu5AQICfwF+IwBBEGsiBCQAAkACQAJAIAIgA2pBf2pBACACa3GtIAGtfiIGQiCIpw0AIAanIgNBgICAgHggAmtNDQELIABBADYCBEEBIQIMAQsCQCADDQAgACACNgIIQQAhAiAAQQA2AgQMAQsgBEEIaiACIAMQix4CQCAEKAIIIgVFDQAgACAFNgIIIAAgATYCBEEAIQIMAQsgACADNgIIIAAgAjYCBEEBIQILIAAgAjYCACAEQRBqJAAL1gEBAn8jAEEQayIDJAACQAJAAkACQCACQX9MDQAgAkHp////B08NASACQRdqQfj///8HcSIEQfH///8HTw0CQQggBEEPakF4cRCHIiIERQ0DIAQgAjYCECAEIAA3AwggBEEBNgIAAkAgAkUNACAEQRhqIAEgAvwKAAALIANBEGokACAEDwtBtKqbAUErIANBD2pB8NSCAUHw1YIBEOoQAAtBtKqbAUErIANBD2pB8NSCAUGA1oIBEOoQAAtBtKqbAUErIANBD2pB8NSCAUHg1YIBEOoQCwALvgEBAX4CQAJAAkAgAyAEakF/akEAIANrca0gAa1+IgVCIIinDQAgBaciBEGAgICAeCADa00NAQsgAEEANgIEQQEhAwwBCwJAIAQNACAAIAM2AghBACEDIABBADYCBAwBC0EALQDg9p0BGgJAAkAgAkUNACAEIAMQrhwhAgwBCyAEIAMQtR8hAgsCQCACRQ0AIAAgAjYCCCAAIAE2AgRBACEDDAELIAAgBDYCCCAAIAM2AgRBASEDCyAAIAM2AgALwAECAn8BfiMAQSBrIgIkACACQQxqIAFBBGovAAA7AQAgAiABKAAANgIIQQAhAUEALQDg9p0BGgJAQQYQhAEiA0UNACACQQA2AhggAiADNgIUIAJBAzYCEANAIAMgAWogAiABakEIai8BADsAACABQQJqIgFBBkcNAAsgAikDECEEIAJBCGoiAUEDNgIAIAJBADoADCACIAQ3AwAgAhCDBSAAQQhqIAEpAwA3AgAgACACKQMANwIAIAJBIGokAA8LAAuuAQEFf0EAIQUDQCACQQF2IgYgBWohByAFIAcgASAHQQR0aiIIKAIAIAMgCCgCBCIIIAQgCCAESRsQkhciCSAIIARrIAkbQQBKGyEFIAIgBmsiAkEBSw0ACwJAAkAgASAFQQR0aiICKAIAIAMgAigCBCIFIAQgBSAESRsQkhciByAFIARrIAcbRQ0AQQAhBAwBCyACKAIMIQUgAigCCCEECyAAIAU2AgQgACAENgIAC6ABAQV+IAAgACkDGCIBQhCJIAEgACkDCHwiAYUiAkIViSACIAApAxAiAyAAKQMAfCIEQiCJfCIChSIFQhCJIAUgASADQg2JIASFIgN8IgFCIIl8IgSFIgUgAiABIANCEYmFIgF8IgJCIIl8IgM3AwAgACAFQhWJIAOFNwMYIAAgAUINiSAChSIBQhGJIAQgAXwiAYU3AxAgACABQiCJNwMIC9cBAAJAIAEgAkHW0ZsBQQIQwh5FDQBB3gAPCwJAIAEgAkH8vZsBQQYQwh5FDQBB3wAPCwJAIAEgAkGUnJsBQQIQwh5FDQBB4AAPCwJAIAEgAkGWnJsBQQoQwh5FDQBB4QAPCwJAIAEgAkGszJsBQQIQwh5FDQBBhAEPCwJAIAEgAkHSy5sBQQUQwh5FDQBBnQEPCwJAIAEgAkGgpZsBQQkQwh5FDQBBggEPCwJAIAEgAkHB0psBQQoQwh5FDQBBgQEPC0GDf0GkfyABIAJBm6qbAUEJEMIeGwvPAQEBfyAAEI8UIAAoAgQiAEEUaiIBKAIAIABBGGooAgAQ6xwgACgCECABKAIAEMsiAkAgACgCAEECRg0AIAAoAgQgAEEIaigCABC9IgsgACgCHCAAQSBqKAIAEMwiIABBLGoiASgCACAAQTBqKAIAEOwcIAAoAiggASgCABDNIiAAQThqIgEoAgAgAEE8aigCABCtFyAAKAI0IAEoAgAQziIgAEHEAGoiASgCACAAQcgAaigCABCiDSAAKAJAIAEoAgAQzyIgAEHQAEEEEL0TC7wBAQN/QQAhAQJAAkACQCAAKAIAQXxqDgQBAQIAAgsgACgCBCIALQBFQQNGDQEgAEEgaiEAAkADQCAALQAlQQJGDQEgACgCICEADAALCyAAKAIIQThsIQIgACgCBEEIaiEAA0AgAkUNAQJAAkAgAEF4aigCACIDQQFGDQAgA0EJRw0EIAAoAgBBEUcNBCAAQQhqELENRQ0EDAELIAAQsQ1FDQMLIAJBSGohAiAAQThqIQAMAAsLQQEhAQsgAQvPAQEBfyAAEI8UIAAoAgQiAEEUaiIBKAIAIABBGGooAgAQ6xwgACgCECABKAIAEMsiAkAgACgCAEECRg0AIAAoAgQgAEEIaigCABDOJAsgACgCHCAAQSBqKAIAEMwiIABBLGoiASgCACAAQTBqKAIAEOwcIAAoAiggASgCABDNIiAAQThqIgEoAgAgAEE8aigCABCtFyAAKAI0IAEoAgAQziIgAEHEAGoiASgCACAAQcgAaigCABCiDSAAKAJAIAEoAgAQzyIgAEHQAEEEEL0TC8cBAQV/IwBBEGsiAiQAQQEhAwJAIABBBGogASgCACIEIAEoAgQiBRCtAg0AAkACQCAAKAIAIgYtAABBBEcNACAEQaveggFBCyAFKAIMEQwARQ0BDAILIAIgBjYCDCABQaTeggFBByACQQxqQRoQ5gsNAQsCQCAALQAFQQRHDQAgAC0ACUH/AXFBBEcNACAALQAEDQBBACEDIAAtAA1B/wFxRQ0BCyABKAIAQf3dggFBBCABKAIEKAIMEQwAIQMLIAJBEGokACADC74BAQN/AkACQCABIAAoAggiA08NACAAKAIEIAFBFGxqKAIIIQECQAJAAkAgAkUNACAAKAIoIQQgACgCLCEFQQAhAwNAIAFFDQIgASAFTw0FIAQgAUEDdGooAgQhASACIANBAWoiA0cNAAsLIAFFDQAgASAAKAIsIgNJDQEgASADQZzjgwEQwxIAC0H48oMBEMkiAAsgACgCKCABQQN0aigCAA8LIAEgA0GMroABEMMSAAsgASAFQZzjgwEQwxIAC7oBAQN/IwBBEGsiAyQAIANBCGogACABEMkbIAMoAgwhASADKAIIIQACQAJAAkACQCACRQ0AQQAhBANAIAFFDQIgASAAKAIsIgVPDQQgACgCKCABQQN0aigCBCEBIAIgBEEBaiIERw0ACwsgAUUNACABIAAoAiwiBEkNASABIARBnOODARDDEgALQfjygwEQySIACyAAKAIoIAFBA3RqKAIAIQEgA0EQaiQAIAEPCyABIAVBnOODARDDEgALugEBA38jAEEgayICJAAgACgCACEDQQAhACABKAIAQbuymwFBASABKAIEKAIMEQwAIQQgAkEAOgAZIAIgBDoAGCACIAE2AhQDQCACIAA6AB8gAiAD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/wGDQiiGIAStQv8Bg0IghoQgBq2ENwIADwsgAyABQZTIhAEQwxIACyACIANB5MeEARDGEgALvQEBBX8jAEEgayICJAACQAJAAkAgASgCCCIDRQ0AAkAgASgCBCIELQAAQQJxRQ0AIAIgA0FzaiIFQQNxIgY2AgQgBg0DIANBDE0NAiAEIAVBAnY2AAkLIABBADYCDCAAIAEpAgA3AgAgAEEIaiABQQhqKAIANgIAIAJBIGokAA8LQQBBAEGs3YQBEMMSAAtBDSADQYzfhAEQvCIACyACQQA2AghBACACQQRqQaS3mAEgAkEIakGc34QBEMcbAAu/AQEFfwJAAkAgASAAKAIMayICQQF0IAJBH3VzIgNB/wBLDQAgACgCCCEEDAELIAAoAgghAiADIQUDQAJAIAIgACgCAEcNACAAQbzfhAEQlw4LIAAgAkEBaiIENgIIIAAoAgQgAmogBUGAf3I6AAAgBUH//wBLIQYgBCECIAVBB3YiAyEFIAYNAAsLAkAgBCAAKAIARw0AIABBrN+EARCXDgsgACABNgIMIAAgBEEBajYCCCAAKAIEIARqIAM6AAALvAEBBH8jAEEwayIDJABBACEEAkAgAigCECIFIAIoAhQiBksNAAJAIAIoAgBBf2pBAkkNACADQQxqIABBBGogAigCCCACKAIMIAUgBhCDByADKAIMIgRBAUcNASADKAIQIAMoAhRNDQEgA0EANgIoIANBATYCHCADQcTmgwE2AhggA0IENwIgIANBGGpBoOKEARCoHQALIAUgAigCDE8NACAALQAEIAIoAgggBWotAABGIQQLIANBMGokACAEC7wBAQR/IwBBMGsiAyQAQQAhBAJAIAIoAhAiBSACKAIUIgZLDQACQCACKAIAQX9qQQJJDQAgA0EMaiAAIAIoAgggAigCDCAFIAYQ3g4gAygCDCIEQQFHDQEgAygCECADKAIUTQ0BIANBADYCKCADQQE2AhwgA0HE5oMBNgIYIANCBDcCICADQRhqQaDihAEQqB0ACyAFIAIoAgxPDQAgACACKAIIIAVqLQAAai0AACEECyADQTBqJAAgBEEBcQu8AQEDfyMAQYAgayICJAACQAJAAkACQCABQYCS9AEgAUGAkvQBSRsiAyABIAFBAXZrIgQgAyAESxsiA0GBEEkNACADQQF0IgQgA3JBf0wNAgJA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NgIMIAFB/++DAUEWQe7SmQFBAyACQQxqQf0AEN0NIQEMAQsgASgCAEGV8IMBQRAgASgCBCgCDBEMACEBCyACQRBqJAAgAQvCAQECfyMAQYAGayICJABBAiEDAkAgASkDAEIChSABKQMIhFANACACQYADaiABEM0EIAJBwARqIAFBkAVqEM0EAkBB8AJFDQAgAkEQaiACQYADakHwAvwKAAALIAJBCGogAkH8BWooAgA2AgAgAiACKQL0BTcDACACKALwBSEDCwJAQfACRQ0AIAAgAkEQakHwAvwKAAALIAAgAzYC8AIgACACKQMANwL0AiAAQfwCaiACQQhqKAIANgIAIAJBgAZqJAALvAEBA38jAEEwayIEJAACQCACKAIQIgUgAigCFCIGSw0AAkACQCACKAIAQX9qQQJJDQAgBEEMaiAAQQRqIAIoAgggAigCDCAFIAYQgwcgBCgCDEEBRw0CIAQoAhAgBCgCFE0NASAEQQA2AiggBEEBNgIcIARBxOaDATYCGCAEQgQ3AiAgBEEYakGg4oQBEKgdAAsgBSACKAIMTw0BIAAtAAQgAigCCCAFai0AAEcNAQsgAxC4FAsgBEEwaiQAC8cBAgR/AX4jAEEQayICJAAgAiABEMUCIAIoAgQhAwJAAkAgAigCACIEQYGAgIB4Rw0AIAAgAzYCBEEBIQEMAQsgAi0ADCEFIAEoAnRBCGogAyACKAIIEN4DIQYCQCAEQYCAgIB4Rg0AIAQgAxC9IgsCQCABKAIIQQpGDQAgAUEIahCKCQsgASAGNwMQIAFBAjYCCAJAIAVBAXFFDQAgASABLQCDAUEBcjoAgwELIABBywA6AAFBACEBCyAAIAE6AAAgAkEQaiQAC8UBAQR/IwBBEGsiAiQAIAEoAgwhAwJAAkACQAJAAkACQCABKAIEDgIAAQILIAMNAUEBIQRBACEBDAILIAMNACABKAIAIgMoAgQhASADKAIAIQQMAQsgACABEIgKDAELIAJBBGogAUEBQQEQow4gAigCCCEFIAIoAgRBAUYNASACKAIMIQMCQCABRQ0AIAMgBCAB/AoAAAsgACABNgIIIAAgAzYCBCAAIAU2AgALIAJBEGokAA8LIAUgAigCDEG45JsBENggAAvIAQEFfyMAQTBrIgIkAAJAAkAgAb1C////////////AINC//////////f/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ACACQbSbmgE2AjggAkGkm5oBNgIwIAIgADYCLCACQfCAmgE2AiggAiAAQdIAajYCJCACQfCAmgE2AiAgAiAAQdEAajYCHCACQfCAmgE2AhggAiAAQdAAajYCFCACQfD8mQE2AhAgAiAAQcgAajYCDCACIABBIGo2AjwgAiACQTxqNgI0IAFB9JuaAUEMQcSbmgFBBiACQQxqQQYQwwohACACQcAAaiQAIAALsgEBA38gACgCACICQcAAahDgHSACQZABaiEDIAIoAoQBQdgAbCEEIAIoAoABIQACQANAIARFDQECQAJAAkACQAJAIAAoAgAOBgQBAgMEAAQLIABBBGogARDHBAwDCyAAQQRqIAEQzh8MAgsgAEEEaiABELkODAELIABBBGogARDUEQsgAEHYAGohACAEQah/aiEEDAALCyADIAEQ1BECQCACLQA8QQZGDQAgAkEQahDgHQsLtgEBAn8jAEEwayICJAACQAJAAkAgAS0AyAFB2wBGDQBBgICAgHghAwwBCyABEOMOIAJBGGogAUEAEKIJIAIoAhwhAQJAIAIoAhgiA0GAgICAeEYNACACQRBqIAJBKGopAgA3AwAgAiACKQIgNwMIDAELIABBgYCAgHg2AgAgACABNgIEDAELIAAgATYCBCAAIAM2AgAgACACKQMINwIIIABBEGogAkEQaikDADcCAAsgAkEwaiQAC7oBAQF/IwBBwABrIgIkACAAKAIAIQAgAkHkqJcBNgI4IAJB1KiXATYCMCACIABBBGo2AiwgAkHUqJcBNgIoIAIgAEEDajYCJCACQdSolwE2AiAgAiAAQQJqNgIcIAJB1KiXATYCGCACIABBAWo2AhQgAkHUqJcBNgIQIAIgADYCDCACIABBBWo2AjwgAiACQTxqNgI0IAFB6KmXAUEFQbiplwFBBiACQQxqQQYQwwohACACQcAAaiQAIAALqQECAn8BfiMAQRBrIgIkACABKAIIIQMgAiABEKgIAkACQCACLQAAQQFHDQAgAi0AASEBIABBADYCACAAIAE6AAQMAQsCQCACKQMIIgQgA0F/aq1aDQACQCABKAIMQQFqIgNB9ANLDQAgACADNgIMIAAgBD4CCCAAIAEpAgA3AgAMAgsgAEEANgIAIABBAToABAwBCyAAQQA2AgAgAEEAOgAECyACQRBqJAALoQEBA38j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AAsQLCIGEC0iBxAuIQMgBxDBISADIAEgBRAvIAMQwSEgBhDBISAAIAEQKzYCCCAAIAU2AgQgACAENgIAIAJBEGokAAuRAQEDfwJAIAEgACgCACAAKAIIIgJrTQ0AIAAgAiABQQRBBBDOGSAAKAIIIQILIAAoAgQgAkECdGohAwJAAkACQCABQQJJDQAgAUF/aiEEA0AgA0EANgIAIANBBGohAyAEQX9qIgQNAAsgAiABakF/aiECDAELIAFFDQELIANBADYCACACQQFqIQILIAAgAjYCCAuRAQEDfwJAIAEgACgCACAAKAIIIgJrTQ0AIAAgAiABQQRBBBDOGSAAKAIIIQILIAAoAgQgAkECdGohAwJAAkACQCABQQJJDQAgAUF/aiEEA0AgA0EANgIAIANBBGohAyAEQX9qIgQNAAsgAiABakF/aiECDAELIAFFDQELIANBADYCACACQQFqIQILIAAgAjYCCAuRAQIBfwJ+IAEgASgCOEEEajYCOCABIACtIgMgASgCPCIAQQN0QThxrYYgASkDMIQiBDcDMAJAAkBBCCAAayICQQRLDQAgASABKQMYIASFNwMYIAEQrg0gASkDMCEEIAEgAyACQQN0rYg3AzAgASAEIAEpAwCFNwMAIABBfGohAAwBCyAAQQRqIQALIAEgADYCPAuZAQIDfwF+AkAgACgCCCIBRQ0AIAAoAgQhAANAIABBCGohAgJAAkAgACgCAA0AIAIpAwAiBEIDg0IAUg0BIASnIgIgAigCACIDQX9qNgIAIANBAUcNASACIAIoAhAQ6R0MAQsgAhCqEQsCQCAAQShqKAIAIgJFDQAgAhCWASACQcAAQQgQvRMLIABBMGohACABQX9qIgENAAsLC6MBAgF/AX4jAEEQayICJAACQAJAAkACQCAAKAIAIgApAwBCfnwiA0ICIANCAlQbpw4DAAECAAsgAiAAQQhqNgIEIAFB4p6aAUEJIAJBBGpBnwQQ5gshAAwCCyACIABBCGo2AgggAUHrnpoBQQcgAkEIakGgBBDmCyEADAELIAIgADYCDCABQfKemgFBBSACQQxqQaEEEOYLIQALIAJBEGokACAAC9MBAQJ/QQAhAkEAIQMCQCAAvUL///////////8Ag0L/////////9/8AVQ0AIACdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxv8AyEDCwJAIAG9Qv///////////wCDQv/////////3/wBVDQAgAZ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDQR9xIQILIAMgAnS3C9MBAQJ/QQAhAkEAIQMCQCAAvUL///////////8Ag0L/////////9/8AVQ0AIACdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxv8AyEDCwJAIAG9Qv///////////wCDQv/////////3/wBVDQAgAZ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDQR9xIQILIAMgAnW3C9MBAQJ/QQAhAkEAIQMCQCAAvUL///////////8Ag0L/////////9/8AVQ0AIACdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxv8AyEDCwJAIAG9Qv///////////wCDQv/////////3/wBVDQAgAZ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDQR9xIQILIAMgAna4C5cBAQF/QQAtAOD2nQEaAkBBwAAQhAEiAQ0AAAsgASAAKQMANwMAIAFBOGogAEE4aikDADcDACABQTBqIABBMGopAwA3AwAgAUEoaiAAQShqKQMANwMAIAFBIGogAEEgaikDADcDACABQRhqIABBGGopAwA3AwAgAUEQaiAAQRBqKQMANwMAIAFBCGogAEEIaikDADcDACABC5oBAgN/An4gASgCDCECIAEoAgAiAykDACEFAkACQCABKAIEIgENAEIAIQZBACEEDAELIAMgAUEEdGtBcGqtQiCGIAFBEWxBGWqthCEGQQghBAsgACAGNwIkIAAgBDYCICAAIAI2AhggACADNgIQIAAgA0EIajYCCCAAIAMgAWpBAWo2AgwgACAFQn+FQoCBgoSIkKDAgH+DNwMAC5cBAQF/IwBBEGsiAiQAAkACQCABKAIA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AA8LAkAgASACQd/RmwFBAxDCHkUNAEHrAA8LAkAgASACQbilmwFBBBDCHkUNAEGXAQ8LQaB/QaR/IAEgAkHUwZsBQQYQwh4bC9ABAQJ/QQAhAkEAIQMCQCAAvUL///////////8Ag0L/////////9/8AVQ0AIACdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxv8AyEDCwJAIAG9Qv///////////wCDQv/////////3/wBVDQAgAZ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQILIAIgA3K3C9ABAQJ/QQAhAkEAIQMCQCAAvUL///////////8Ag0L/////////9/8AVQ0AIACdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxv8AyEDCwJAIAG9Qv///////////wCDQv/////////3/wBVDQAgAZ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQILIAIgA3O3C9ABAQJ/QQAhAkEAIQMCQCAAvUL///////////8Ag0L/////////9/8AVQ0AIACdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxv8AyEDCwJAIAG9Qv///////////wCDQv/////////3/wBVDQAgAZ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQILIAIgA3G3C40BAQR/IwBBEGsiAyQAIANBCGogACgCACIEIAAoAgQgARC4FyADKAIIIQUgAy0ADCEGIAAgACgCDEEBajYCDCAAIAAoAgggBkEBcWs2AgggBEEAIAVrQRhsakFoaiIAIAIpAwA3AwAgAEEIaiACQQhqKQMANwMAIABBEGogAkEQaikDADcDACADQRBqJAALmAEBAn8jAEEQayIGJABBACEHAkACQAJAIAEtAMgBQYQBRw0AIAEQ4w4gBkEIaiABQQAgASgC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jAMQ5gshAAwBCyACIABBBGo2AgwgAUG9hZoBQQggAkEMakHjBRDmCyEACyACQRBqJAAgAAuWAQEBfyMAQRBrIgIkAAJAAkACQAJAIAAoAgAiACgCAA4DAAECAAsgAiAAQQhqNgIEIAFBrf+ZAUEIIAJBBGpB2AYQ5gshAAwCCyACIABBCGo2AgggAUHp2psBQQYgAkEIakHZBhDmCyEADAELIAIgAEEEajYCDCABQd/amwFBBCACQQxqQfIEEOYLIQALIAJBEGokACAAC5ABAQJ/AkAgAS0AGEUNAAJAAkAgASgCFCICRQ0AIAAoAhwgACgCICACKAIEQX9qEOUQIQIMAQsgACgCHCAAKAIgIAEoAhAQ0REhAgsgACACEIMfCyABKAIIQShsIQIgASgCBCEDAkADQCACRQ0BIAMgABCtICACQVhqIQIgA0EoaiEDDAALCyABKAIUIAAQ5h4LeQIBfwF+QQQhBAJAAkAgA0EETw0AQQAhBEIAIQUMAQsgACACajUAACEFCwJAIARBAXIgA08NACAAIAJqIARqMwAAIARBA3SthiAFhCEFIARBAnIhBAsCQCAEIANPDQAgACAEIAJqajEAACAEQQN0rYYgBYQhBQsgBQueAQACQAJAAkACQAJAIAEgAkHYh4ABQQcQwh4NACABIAJB34eAAUEIEMIeDQEgASACQeeHgAFBCBDCHg0CAkAgASACQe+HgAFBBhDCHg0AIAAgASACQfiHgAFBBBCGETYCBEEBIQIMBQsgAEEDOgABDAMLQQAhAiAAQQA6AAEMAwsgAEEBOgABDAELIABBAjoAAQtBACECCyAAIAI6AAALigEBA38jAEEQayICJAACQAJAAkAgASgCAEUNACABKAIEIgMgASgCDEYNASABIANBCGo2AgQgAygCBCEEIAMoAgAhAwwCCyABKAIEIgNFDQAgAkEIaiADIAEoAggiBCgCGBEHACABIAIpAwg3AgQMAQtBACEDCyAAIAQ2AgQgACADNgIAIAJBEGokAAuHAQECfyMAQYACayIDJAACQEGAAkUNACADQQBBgAL8CwALIAJBBHQhBCABQQhqIQICQANAAkAgAigCAEEBRg0AIABBAjoAAAwCCyADIAJBfGooAgAtAABqQQE6AAAgAkEQaiECIARBcGoiBA0AC0GAAkUNACAAIANBgAL8CgAA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IAAgAjYCCCAAIAQ2AgQgACAFNgIAIANBEGokAAuEAQECfwJAAkACQCACIAAoAgAgACgCCCIDa00NACAAIAMgAkEBQQEQ1BkgACgCCCEDDAELIAJFDQELA0AgAyEEAkAgAyAAKAIARw0AIAAgA0EBQQFBARDUGSAAKAIIIQQLIAAgA0EBaiIDNgIIIAAoAgQgBGogAToAACACQX9qIgINAAsLC4wBAQJ/IwBBIGsiAyQAQYCAgIB4IQQCQCABQQNGDQAgA0IANwIYIANCgICAgMAANwIQIANBEGogAkHEAmooAgAQjREgA0EIaiADQRxqKAIANgIAIAMgAykCFDcDACADKAIQIQQLIAAgBDYCACAAIAMpAwA3AgQgAEEMaiADQQhqKAIANgIAIANBIGokAAuZAQECfyABKAKkDSgCxAIiAiACKAIAIgNBAWo2AgACQCADQX9KDQAACyAAIAIQ6xUgAEHoBGogASgCsAoQpg4gASgCyAohAiAAQdgEaiABKALkCiABKAKICxDbECAAQdgBaiABEM4NIABCADcD6AUgAEKAgICAwAA3A+AFIABCBDcD2AUgACACQQJGQR90NgLUBSAAQQI2AsgBC5kBAQJ/IAEoAqQNKALEAiICIAIoAgAiA0EBajYCAAJAIANBf0oNAAALIAAgAhDrFSAAQegEaiABKAKwChCmDiABKALICiECIABB2ARqIAEoAuQKIAEoAogLENsQIABB2AFqIAEQzg0gAEIANwPoBSAAQoCAgIDAADcD4AUgAEIENwPYBSAAIAJBAkZBH3Q2AtQFIABBAjYCyAELmQEBAn8gASgCpA0oAsQCIgIgAigCACIDQQFqNgIAAkAgA0F/Sg0AAAsgACACEOsVIABB6ARqIAEoArAKEKYOIAEoAsgKIQIgAEHYBGogASgC5AogASgCiAsQ2xAgAEHYAWogARDODSAAQgA3A+gFIABCgICAgMAANwPgBSAAQgQ3A9gFIAAgAkECRkEfdDYC1AUgAEECNgLIAQuXAQICfwF8IwBBMGsiAiQAAkACQCABKwMAIgREAAAAAAAAAABhDQACQAJAIAS9Qv///////////wCDQv/////////3/wBVDQAgBCACQRdqEIQCIAJBF2prIQEgAkEXaiEDDAELIAJBCGogBBDgGiACKAIMIQEgAigCCCEDCyAAIAMg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AwBCgIGChIiQoMCAf4N6p0EDdiEDCyADDwsgAyAEaiABcSEDIARBCGohBAwACwt7AQZ/IAEgASgCXCICQX9qIgM2AlwgASABKAJYIgRBAWoiBTYCWCABIAEoAmgiBkEBajYCaEERIQcCQCADRQ0AIAUtAABBPUcNACABIAZBAmo2AmggASACQX5qNgJcIAEgBEECajYCWEEjIQcLIABBADoAACAAIAc6AAELewEGfyABIAEoAlwiAkF/aiIDNgJcIAEgASgCWCIEQQFqIgU2AlggASABKAJoIgZBAWo2AmhBECEHAkAgA0UNACAFLQAAQT1HDQAgASAGQQJqNgJoIAEgAkF+ajYCXCABIARBAmo2AlhBIiEHCyAAQQA6AAAgACAHOgABC3sBBn8gASABKAJcIgJBf2oiAzYCXCABIAEoAlgiBEEBaiIFNgJYIAEgASgCaCIGQQFqNgJoQRUhBwJAIANFDQAgBS0AAEE9Rw0AIAEgBkECajYCaCABIAJBfmo2AlwgASAEQQJqNgJYQSghBwsgAEEAOgAAIAAgBzoAAQudAQECfwJAA0BBACECAkACQAJAAkAgACgCACIDKAIAQXRqIgBBByAAQSZJGw4mBQUFBQUFBQUAAQUFBQUCBQUFBQUFBQUDBQUFBQUDBQMDAwMFBQUFCyADQShqIQAgAygCKCgCACIDQRRGDQMgA0EwRg0EC0EBIQIMAwtBASECIAFFDQIgA0EIahCOCkEBcw8LIANBBGohAAwACwsgAguIAQEDfyMAQSBrIgEkACAAKAIAIgIoAgAhAyACQQA2AgAgAygCDCECIANBADYCDAJAIAINACABQQA2AhggAUEBNgIMIAFBuIOdATYCCCABQgQ3AhAgAUEIakGg85sBEKgdAAsgAhEBACEDIAAoAgQoAgAiACADNgIEIABBATYCACABQSBqJABBAQt+AgN/AX4gACgCECEBIAAoAgghAiAAKQMAIQQDfwJAIARQDQAgACAEQn98IASDNwMAIAFBACAEeqdBA3ZrQRhsag8LIAAgAUHAfmoiATYCECAAIAJBCGoiAzYCCCAAIAIpAwBCf4VCgIGChIiQoMCAf4MiBDcDACADIQIMAAsLewECfyABIAKncSEDQQghBAJAA0AgACADaikAAEKAgYKEiJCgwIB/gyICQgBSDQEgAyAEaiABcSED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AUF/ajYCACABQQFHDQEgACAAKAIQEOkdDwsgABD4DwsLfQEBfwJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAKAIEQQFHDQMgACgCCCABEI0BDwsgACgCBCABEI0BDwsgASAAKAIEEN8HDwsgACgCDCICRQ0AIAAoAgghACACQShsIQIDQCABIAAQ5AYgAEEoaiEAIAJBWGoiAg0ACwsLZQEDf0EAIQMCQCABRQ0AA0ACQCABQQFLDQAgACADQQxsaigCACIBIAJGDQIgAyABIAJJaiEDDAILIAMgAUEBdiIEIANqIgUgACAFQQxsaigCACACSxshAyABIARrIQEMAAsLIAMLegEBfyAAKAIIQShsIQIgACgCBCEAAkADQCACRQ0BAkACQAJAAkACQCAAKAIADgUEAAECAwQLIABBBGogARDHHwwDCyAAQQRqIAEQgSQMAgsgAEEEaiABEIUODAELIABBBGogARDSEQsgAEEoaiEAIAJBWGohAgwACwsLegEBfyAAKAIIQShsIQIgACgCBCEAAkADQCACRQ0BAkACQAJAAkACQCAAKAIADgUEAAECAwQLIABBBGogARDJHwwDCyAAQQRqIAEQhiQMAgsgAEEEaiABEIYODAELIABBBGogARDTEQsgAEEoaiEAIAJBWGohAgwACwsLegEBfyAAKAIIQShsIQIgACgCBCEAAkADQCACRQ0BAkACQAJAAkACQCAAKAIADgUEAAECAwQLIABBBGogARDOHwwDCyAAQQRqIAEQxwQMAgsgAEEEaiABELkODAELIABBBGogARDUEQsgAEEoaiEAIAJBWGohAgwACwsLdgEBfyAAKAIIQThsIQIgACgCBCEAA0ACQAJAIAJFDQACQAJAAkAgACgCAA4DAAECAAsgAEEIaiABENAfIABBKGogARCSJAwDCyABIABBMGoQoiEMAgsgAEEEaiABEJIkDAELDwsgAEE4aiEAIAJBSGohAgwACwt0AgV/AX4gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAAkAgAykDACIGQgODQgBSDQAgBqciBCAEKAIAIgVBf2o2AgAgBUEBRw0AIAQgBCgCEBDpHQsgA0EIaiEDIAJBf2oiAg0ACwsgACgCACABQQhBCBC/EguGAQEBfyMAQSBrIgIkACACQQA2AgggAkKAgICAEDcCACACQYDUmwE2AhAgAkKggICADjcCFCACIAI2AgwCQCABIAJBDGoQnB1FDQBBmNSbAUE3IAJBH2pBpKqbAUHQ1JsBEOoQAAsgACACKQIANwIAIABBCGogAkEIaigCADYCACACQSBqJAALdgIDfwF+IwBBEGsiAyQAIAEoAhQhBCABKAIQIQUgAyABQQhqEJQTIANBCGogAiAFIAQgAygCACADKAIEEJUOAkACQCADLQAIQQRGDQAgAykDCCIGQv8Bg0IEUQ0AIAAgBjcCAAwBCyAAQQQ6AAALIANBEGokAAuGAQEBfyMAQSBrIgIkACACQQA2AgggAkKAgICAEDcCACACQYDUmwE2AhAgAkKggICADjcCFCACIAI2AgwCQCABIAJBDGoQ6yNFDQBBmNSbAUE3IAJBH2pBpKqbAUHQ1JsBEOoQAAsgACACKQIANwIAIABBCGogAkEIaigCADYCACACQSBqJAALeQEBfyMAQRBrIgIkACACIAAoAgAiAEEkajYCDCABQZzEgAFBCEHwg5oBQQQgAEEoakE2QaTEgAFBBSAAQQhqQTdBqcSAAUEFIABBFGpBOEG86oMBQQsgAEEgakEpQa7EgAFBEyACQQxqQSoQiwwhACACQRBqJAAgAAtsAQF/IwBBIGsiAiQAIAJBCGogAUG0A2pBAEEAEI4IAkAgAigCCCIBQQNGDQAgACACKQIMNwIEIABBFGogAkEIakEUaigCADYCACAAQQxqIAJBCGpBDGopAgA3AgALIAAgATYCACACQSBqJAALhQECAn8CfCABKAIIIgJBgICAAXEhAyAAKwMAIQQCQCACQYCAgIABcQ0AAkAgBJkiBUQAgOA3ecNBQ2YNACAERAAAAAAAAAAAYiAFRC1DHOviNho/Y3ENACABIAQgA0EAR0EBEI0FDwsgASAEIANBAEcQtgQPCyABIAQgA0EARyABLwEOEHELZgEFfiAAIAApAxgiAUIQiSABIAApAwh8IgGFIgIgACkDECIDIAApAwB8IgRCIIl8IgU3AwAgACACQhWJIAWFNwMYIAAgASADQg2JIASFIgJ8IgEgAkIRiYU3AxAgACABQiCJNwMIC3EBAn8CQAJAAkAgASgCFCICRQ0AIAEoAhAgAkEDdGoiAkF4ag0BCyABKAIIIQNBACECDAELIAJBfGooAgAiAiABKAIIIgNNDQAgAiADQci4hAEQ0SIACyAAIAMgAms2AgQgACABKAIEIAJBA3RqNgIAC34BAX8gABDCDCAAKALAEiIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKALAEiAAKALEEhDsEAsgACgC0BIiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgC0BIQ1RsLAkAgACkDsA1CAoUgACkDuA2EUA0AIABBsA1qEPEcCwt0AQJ/QRAhAQJAAkACQCAAKAIIQX5qIgJBBiACQQlJG0F+ag4FAgICAgEAC0EEIQELIABBCGogAWoiAigCACACQQRqKAIAEL0iCwJAIABBf0YNACAAIAAoAgQiAkF/ajYCBCACQQFHDQAgAEHQAEEEEL0TCwt2AQF/IwBBEGsiBCQAIARBCGogACgCAEEIakGguJgBEKYcIAQoAgwhAAJAAkAgBCgCCCABELAYIgFFDQAgAiADIAEoAgQgASgCCBCUBCEBDAELIAIgA0EIQQAQlAQhAQsgACAAKAIAQX9qNgIAIARBEGokACABC3IBAn8jAEEQayIDJAAgA0EIaiABIAIQxAwgAygCDCEBAkACQAJAIAMoAghBAXFFDQAgAEEANgIAIAAgATYCBAwBCyABRQ0BIAEoAnQhBCAAIAE2AgAgACACIARrNgIECyADQRBqJAAPC0GMvZgBEMkiAAt/AgR/AX5BAC0A4PadARogASgCDCECIAEoAgghAwJAQcAAEIQBIgRFDQAgBCABKAIAEEVBAC0A4PadARpBFBCEASIFRQ0AIAEoAgQiASkCDCEGIAUgARCFDCAAIAI2AgwgACADNgIIIAUgBjcCDCAAIAU2AgQgACAENgIADwsAC3ACAn8BfgJAIAApAwAiA0IDg0IAUg0AIAOnIgEgASgCACICQX9qNgIAIAJBAUcNACABIAEoAhAQ6R0LAkAgACkDCCIDQgODQgBSDQAgA6ciACAAKAIAIgFBf2o2AgAgAUEBRw0AIAAgACgCEBDpHQsLcAICfwF+AkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDpHQsCQCAAKQMQIgNCA4NCAFINACADpyIAIAAoAgAiAUF/ajYCACABQQFHDQAgACAAKAIQEOkdCwtwAgJ/AX4CQCAAKQMAIgNCA4NCAFINACADpyIBIAEoAgAiAkF/ajYCACACQQFHDQAgASABKAIQEOkdCwJAIAApAxAiA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQ6R0LC3cBAX8gAEEIahCrEQJAIAAtADRBA0YNACAAQSBqELoPCwJAIAAoAjgiAUUNACABEOUaIAEoAgAgAUEEaigCABDxIiABQRRBBBC9EwsCQCAAKAI8IgBFDQAgABCiFCAAKAIAIABBBGooAgAQ9SIgAEEUQQQQvRMLC3QBA38gACgCDCIBIAAoAgQiAmtBKG4hAwJAIAEgAkYNAANAAkACQCACKAIAQQdHDQAgAkEQaigCACIBEK0BIAFBwABBCBC9EwwBCyACEP8KCyACQShqIQIgA0F/aiIDDQALCyAAKAIIIAAoAgBBCEEoEL8SC3ACAn8BfgJAIAApAwAiA0IDg0IAUg0AIAOnIgEgASgCACICQX9qNgIAIAJBAUcNACABIAEoAhAQ6R0LAkAgACkDECIDQgODQgBSDQAgA6ciACAAKAIAIgFBf2o2AgAgAUEBRw0AIAAgACgCEBDpHQsLdwEBfyAAQQhqEKoRAkAgAC0ANEEDRg0AIABBIGoQuQ8LAkAgACgCOCIBRQ0AIAEQ5RogASgCACABQQRqKAIAEPEiIAFBFEEEEL0TCwJAIAAoAjwiAEUNACAAEKIUIAAoAgAgAEEEaigCABD1IiAAQRRBBBC9EwsLcAICfwF+AkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDpHQsCQCAAKQMQIgNCA4NCAFINACADpyIAIAAoAgAiAUF/ajYCACABQQFHDQAgACAAKAIQEOkdCwtpAQR/QQAhAkEAIAFBAXYiA2shBCABQQxsIABqQXRqIQUgAUECSSEBAkADQCAEIAJGDQEgAkF/aiECAkAgAQ0AIAAgBUEDEKQaIABBDGohACAFQXRqIQUMAQsLIAIgA0Hs1psBEMMSAAsLcwEEfyMAQRBrIgMkACABIAEoAngiBEGAIHI2AnhBACEFQQAhBgJAIAEtAMgBIAJB/wFxRw0AIAEQ4w4gA0EIaiABENcEIAMoAghBAXEhBiADKAIMIQULIAEgBDYCeCAAIAU2AgQgACAGNgIAIANBEGokAAt2AQN/QQEhAgJAIABBBGogASgCACIDIAEoAgQiBBCtAg0AIAAoAgAgARD/CQ0AAkAgAC0ABUEERw0AIAAtAAlB/wFxQQRHDQAgAC0ABA0AQQAhAiAALQANQf8BcUUNAQsgA0H93YIBQQQgBCgCDBEMACECCyACC3gBAX9BASECAkAgAEEEaiABKAIAIAEoAgQQrQINACAAKAIAIAEQyiINAAJAIAAtAAVBBEcNACAALQAJQf8BcUEERw0AIAAtAAQNAEEAIQIgAC0ADUH/AXFFDQELIAEoAgBB/d2CAUEEIAEoAgQoAgwRDAAhAgsgAgtkAQN/IAMgASADIAFJGyEBQQAhAwJAA0AgAUUNASACIAAoAgAiBCACKAIAIgVrIgYgA0H/AXEiA2s2AgAgBCAFSSAGIANJciEDIAFBf2ohASACQQRqIQIgAEEEaiEADAALCyADC30BAX8CQAJAAkACQAJAIAEoAgAOBAABAgMACyABKAIEIQFBACECDAMLIAEoAgQhAUEBIQIMAgsgASgCCCIBIAEoAgBBiIDEAEYiAkECdGohAQwBCyABKAIIIgEgASgCAEGIgMQARiICQQJ0aiEBCyAAIAE2AgQgACACNgIAC3UBBH8CQAJAIAEoAgAiAyABKAIIIgRNDQAgASgCBCEFAkACQCAEDQBBASEGIAUgA0EBEL0TDAELIAUgA0EBIAQQ7wMiBkUNAgsgASAENgIAIAEgBjYCBAsgACAENgIEIAAgASgCBDYCAA8LQQEgBCACENggAAt1AQN/QQEhAwJAAkAgAkEBdCIEIAJyQX9MDQACQAJAIAQNAEEAIQUMAQtBAC0A4PadARogBBCEASIDRQ0CIAIhBQsCQCAERQ0AIAMgASAE/AoAAAsgACACNgIIIAAgAzYCBCAAIAU2AgAPC0G45JsBEIEcCwALeQEDf0EAIQICQAJAAkACQAJAIAEoAgAiA0F6ag4CAgEACyADDQMgASgCBCEEQQEhAgwDCyABKAIMQQFGDQEMAgsgASgCDEEBRw0BIAEoAggoAgAhBEEBIQIMAQsgASgCCCgCACEEQQEhAgsgACAENgIEIAAgAjYCAAtwAAJAAkAgBSAESQ0AIAUgA0sNAUEAIQMCQCACIARqIAUgBGsgASgCPCABKAJAIgUQyh5FDQAgACAENgIEIAAgBSAEajYCCEEBIQMLIAAgAzYCAA8LIAQgBUHc14QBENciAAsgBSADQdzXhAEQvCIAC2cBAX8CQCABIANHDQAgAUEBaiEBA0ACQCABQX9qIgENAEEBDwsgAC0AACACLQAARw0BIAJBAWohAyAAQQFqIQQgAkECaiECIABBAmohACAELQAAQf8BcSADLQAAQf8BcUYNAAsLQQALdwEBfyMAQSBrIgIkAAJAIAEoAgBBCkYNACACQQE2AgQgAkGosIUBNgIAIAJCATcCDCACQfgANgIcIAIgATYCGCACIAJBGGo2AgggAkGwsIUBEKgdAAsgACABKQIENwIAIABBCGogAUEMaikCADcCACACQSBqJAALdwEBfyMAQSBrIgIkAAJAIAEoAgBBCUYNACACQQE2AgQgAkHgr4UBNgIAIAJCATcCDCACQfgANgIcIAIgATYCGCACIAJBGGo2AgggAkHor4UBEKgdAAsgACABKQIENwIAIABBCGogAUEMaikCADcCACACQSBqJAALcQEEfyABKAIEIQIgASgCACEDAkAgASgCCCIBIAAoAgAgACgCCCIEa00NACAAIAQgAUEIQRgQzRkgACgCCCEECwJAIAFBGGwiBUUNACAAKAIEIARBGGxqIAIgBfwKAAALIAAgBCABajYCCCADIAIQ7CILcwEDfyABKAIAIQJBACEDIAFBADYCAAJAAkAgAkEBcUUNACABKAIIIQMgASgCBCECDAELAkAgASgCDCIEIAEoAhBHDQAMAQsgASAEQQFqNgIMIAEgASgCFCICQQFqNgIUIAQhAwsgACADNgIEIAAgAjYCAAt+AQF/IwBBEGsiAiQAIAIgACgCACgCACIANgIMIAFB6YOaAUEHQdD8mQFBBCAAQQxqQYACQbCBmgFBBCAAQRRqQZsDQfCDmgFBBCAAQRlqQYMEQb6mmwFBByAAQRhqQdECQfSDmgFBBSACQQxqQYQEEIsMIQAgAkEQaiQAIAALfgEBfyMAQRBrIgIkACACIAAoAgAoAgAiAEEkajYCDCABQbqemgFBD0HQ/JkBQQQgAEGAAkG+ppsBQQcgAEEoakHRAkHzk5oBQQIgAEEIakHyA0HYgZoBQQsgAEEgakGrAkHAg5oBQQggAkEMakGvAhCLDCEAIAJBEGokACAAC34BAX8jAEEQayICJAAgAiAAKAIAKAIAIgBBIGo2AgwgAUG9lZoBQQpB0PyZAUEEIABBGGpBgAJBvqabAUEHIABBLGpB0QJBx5WaAUEIIABBLWpB0QJB85OaAUECIABB8gNBwJSaAUEHIAJBDGpBhQQQiwwhACACQRBqJAAgAAuAAQEBfyMAQRBrIgIkACACIAAoAgAoAgAiADYCDCABQdahmgFBEkHQ/JkBQQQgAEEgakGAAkHooZoBQQkgAEHAAGpB0QJB8aGaAUEMIABBwQBqQdECQfOTmgFBAiAAQShqQfIDQf2hmgFBCiACQQxqQZoEEIsMIQAgAkEQaiQAIAALeAACQAJAAkAgAA4CAQIACyABEP8KIAFBKEEIEL0TDwsgAUEEaiIAKAIAIAFBCGooAgAQ+BkgASgCACAAKAIAEO8iIAFBHEEEEL0TDwsgAUEEaiIAKAIAIAFBCGooAgAQ+BkgASgCACAAKAIAEO8iIAFBGEEEEL0TC2wCAX8BfiMAQSBrIgIkAAJAIAAtAChFDQAgAkEIaiABQQhqEOgSIAAgAikDCCIDIAIoAhgQiRAgA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQ6R0LIAJBIGokAAtuAQF/AkACQCABQgODQgBSDQAgAaciAyADKAIAIgNBAWo2AgAgA0F/TA0BCwJAIAAoAggiAyAAKAIARw0AIABBtKeaARCDGQsgACADQQFqNgIIIAAoAgQgA0EEdGoiACACNgIIIAAgATcDAA8LAAt4AAJAAkACQCAADgIBAgALIAEQ9wogAUEoQQgQvRMPCyABQQRqIgAoAgAgAUEIaigCABD4GSABKAIAIAAoAgAQ7yIgAUEcQQQQvRMPCyABQQRqIgAoAgAgAUEIaigCABD4GSABKAIAIAAoAgAQ7yIgAUEYQQQQvRMLfgEBfyMAQRBrIgIkACACIAAoAgAoAgAiADYCDCABQemDmgFBB0HQ/JkBQQQgAEEMakGAAkGwgZoBQQQgAEEUakGbA0Hwg5oBQQQgAEEZakGDBEG+ppsBQQcgAEEYakHRAkH0g5oBQQUgAkEMakGIBhCLDCEAIAJBEGokACAAC34BAX8jAEEQayICJAAgAiAAKAIAKAIAIgBBJGo2AgwgAUG6npoBQQ9B0PyZAUEEIABBgAJBvqabAUEHIABBKGpB0QJB85OaAUECIABBCGpB8gNB2IGaAUELIABBIGpBiQZBwIOaAUEIIAJBDGpBrQUQiwwhACACQRBqJAAgAAt+AQF/IwBBEGsiAiQAIAIgACgCACgCACIAQSBqNgIMIAFBvZWaAUEKQdD8mQFBBCAAQRhqQYACQb6mmwFBByAAQSxqQdECQceVmgFBCCAAQS1qQdECQfOTmgFBAiAAQfIDQcCUmgFBByACQQxqQYoGEIsMIQAgAkEQaiQAIAALgAEBAX8jAEEQayICJAAgAiAAKAIAKAIAIgA2AgwgAUHWoZoBQRJB0PyZAUEEIABBIGpBgAJB6KGaAUEJIABBwABqQdECQfGhmgFBDCAAQcEAakHRAkHzk5oBQQIgAEEoakHyA0H9oZoBQQogAkEMakGcBhCLDCEAIAJBEGokACAAC2sBBH8CQCABIAAoAggiAigCACAAKAIQIgMgACgCDCIEaiIFa00NACACIAUgAUEIQTgQzRkLIAQgAWohAQJAIANBOGwiA0UNACACKAIEIgIgAUE4bGogAiAEQThsaiAD/AoAAAsgACABNgIMC3gAAkACQAJAIAAOAgECAAsgARCCCyABQShBCBC9Ew8LIAFBBGoiACgCACABQQhqKAIAEPgZIAEoAgAgACgCABDvIiABQRxBBBC9Ew8LIAFBBGoiACgCACABQQhqKAIAEPgZIAEoAgAgACgCABDvIiABQRhBBBC9EwtrAQR/AkAgASAAKAIIIgIoAgAgACgCECIDIAAoAgwiBGoiBWtNDQAgAiAFIAFBCEEwEM0ZCyAEIAFqIQECQCADQTBsIgNFDQAgAigCBCICIAFBMGxqIAIgBEEwbGogA/wKAAALIAAgATYCDAt4AAJAAkACQCAADgIBAgALIAEQ+AogAUEoQQgQvRMPCyABQQRqIgAoAgAgAUEIaigCABD4GSABKAIAIAAoAgAQ7yIgAUEcQQQQvRMPCyABQQRqIgAoAgAgAUEIaigCABD4GSABKAIAIAAoAgAQ7yIgAUEYQQQQvRMLbAEDfyMAQRBrIgIkACACQQhqIAEoAgwQ0gMgAigCDCEDAkACQCABKAIAQQFGDQAgAigCCCEBDAELIAEoAgQiBCADIAQgA0kbIQEgBCADIAQgA0sbIQMLIAAgATYCACAAIAM2AgQgAkEQaiQAC3cDAX8BfgF8IwBBEGsiASQAIAApAwghAiAAQQo2AgggAUEIaiAAQRBqKQMANwMAIAEgAjcDAAJAAkAgAqciAEEKRg0AIABBB0YNAQsgARClE0GSqZsBQShB3MebARCMGgALIAErAwghAyABEKUTIAFBEGokACADC2wBAX8CQCAAKAIIIgMgACgCAEcNACAAIAIQ5xcLIAAgA0EBajYCCCAAKAIEIANBBXRqIgAgASkCADcCACAAQQhqIAFBCGopAgA3AgAgAEEQaiABQRBqKQIANwIAIABBGGogAUEYaikCADcCAAtoAQN/AkAgASAAKAIIIgJNDQAgACABIAJrIgMQkx4gA0F/aiEBIAAoAgQgACgCCCIEQQJ0aiECAkADQCACQQA2AgAgAUUNASABQX9qIQEgAkEEaiECDAALCyAEIANqIQELIAAgATYCCAttAQF/IwBBIGsiBSQAAkAgAiADTw0AIAVBADYCGCAFQQE2AgwgBUGU1psBNgIIIAVCBDcCECAFQQhqIAQQqB0ACyAAIAM2AgQgACABNgIAIAAgAiADazYCDCAAIAEgA0ECdGo2AgggBUEgaiQAC20BAX8jAEEgayIFJAACQCACIANPDQAgBUEANgIYIAVBATYCDCAFQZTWmwE2AgggBUIENwIQIAVBCGogBBCoHQALIAAgAzYCBCAAIAE2AgAgACACIANrNgIMIAAgASADQQJ0ajYCCCAFQSBqJAALbAECf0EAIQNBACEEAkACQCACRQ0AIAJBf2oiBCABTw0BIAAgBGotAABB1OeEAWotAAAhBAsCQCACIAFPDQAgACACai0AAEHU54QBai0AACEDCyAEIANzQX9zQQFxDwsgBCABQcTShAEQwxIAC3ABA38gACgCCCECIABBBBCXHiAAKAIEIgMgACgCCCIEakEANgAAIAAgBEEEaiIENgIIAkACQCAEIAJJDQAgBCACayIAQQNNDQEgAyACaiABNgAADwsgAiAEQczfhAEQ0SIAC0EEIABB/NuEARC8IgALZwEBfyMAQTBrIgQkACAEQSBqIAFCACAAQgAQ5xAgBEEQaiACQgAgAEIAEOcQIAQgBCkDKCIAIAQpAxB8IgEgBCkDGCABIABUrXwgA0H/AHFBwABzEKgTIAQpAwAhACAEQTBqJAAgAAt/AQJ/IwBBEGsiBCQAQQBBACgC6PWdASIFQQFqNgLo9Z0BAkAgBUEASA0AAkACQEEALQDg9Z0BDQBBAEEAKALc9Z0BQQFqNgLc9Z0BQQAoAoTynQFBf0oNAQwCCyAEQQhqIAAgAREHAAALQQBBADoA4PWdASACRQ0AEP0kAAsAC3QBAX8jAEEQayIDJAAgA0EIaiABKAIAQQhqQaS2mAEQphwgAygCDCEBAkACQCADKAIIIAIQsBgiAkUNACAAIAJBBGooAgAgAkEIaigCABCVCgwBCyAAQYCAgIB4NgIACyABIAEoAgBBf2o2AgAgA0EQaiQAC3QBAX8jAEEQayIDJAAgA0EIaiABKAIEQQhqQZS3mAEQphwgAygCDCEBAkACQCADKAIIIAIQsBgiAkUNACAAIAJBBGooAgAgAkEIaigCABCVCgwBCyAAQYCAgIB4NgIACyABIAEoAgBBf2o2AgAgA0EQaiQAC28CAX8BfgJAAkACQAJAIAAtACxBfWoiAUEBIAFB/wFxQQNJG0H/AXEOAgECAAsgABDlEQ8LIAApAwAiAkIDg0IAUg0BIAKnIgAgACgCACIBQX9qNgIAIAFBAUcNASAAIAAoAhAQ6R0PCyAAEPgPCwtzAgJ/AX4CQCAAKQMIIgNCA4NCAFINACADpyIBIAEoAgAiAkF/ajYCACACQQFHDQAgASABKAIQEOkdCwJAIAAoAiAiAUUNACABEMACIAFB4ABBCBC9EwsCQCAAKAIkIgBFDQAgABDAAiAAQeAAQQgQvRMLC28CAX8BfgJAAkACQAJAIAAtACxBfWoiAUEBIAFB/wFxQQNJG0H/AXEOAgECAAsgABDmEQ8LIAApAwAiAkIDg0IAUg0BIAKnIgAgACgCACIBQX9qNgIAIAFBAUcNASAAIAAoAhAQ6R0PCyAAEPoPCwtzAgJ/AX4CQCAAKQMIIgNCA4NCAFINACADpyIBIAEoAgAiAkF/ajYCACACQQFHDQAgASABKAIQEOkdCwJAIAAoAiAiAUUNACABENUDIAFB4ABBCBC9EwsCQCAAKAIkIgBFDQAgABDVAyAAQeAAQQgQvRMLC3sBAX8jAEEQayICJAAgAiAAKAIAIgBBDGo2AgwgAUHfkZoBQRFB0PyZAUEEIABBEGpBgAJB956aAUEKIABBzgJBgZ+aAUEMIABBBGpBzgJBjZ+aAUEJIABBCGpBzgJBlp+aAUEKIAJBDGpBrwIQiwwhACACQRBqJAAgAAt7AQF/IwBBEGsiAiQAIAIgACgCACIAQTxqNgIMIAFB05KaAUEMQdD8mQFBBCAAQYACQb2DmgFBAyAAQQhqQdUCQbKamgFBCSAAQSBqQdYCQZyEmgFBCSAAQThqQdcCQbuamgFBCiACQQxqQdgCEIsMIQAgAkEQaiQAIAALewEBfyMAQRBrIgIkACACIAAoAgAiAEEkajYCDCABQYGFmgFBCEHQ/JkBQQQgAEEYakGAAkGwgZoBQQQgAEEgakGbA0GShJoBQQYgAEEMakGcA0GYhJoBQQQgAEGdA0GchJoBQQkgAkEMakHIAhCLDCEAIAJBEGokACAAC3sBAX8jAEEQayICJAAgAiAAKAIAIgBBHGo2AgwgAUGLhJoBQQdB0PyZAUEEIABBEGpBgAJBsIGaAUEEIABBGGpBmwNBkoSaAUEGIABBDGpBlQNBmISaAUEEIABBngNBnISaAUEJIAJBDGpByAIQiwwhACACQRBqJAAgAAt7AQF/IwBBEGsiAiQAIAIgACgCACIAQQRqNgIMIAFB5/2ZAUEJQdD8mQFBBCAAQQhqQYACQbCBmgFBBCAAQRBqQZsDQaWHmgFBAyAAQZUDQdiBmgFBCyAAQRRqQdcCQaiHmgFBAyACQQxqQasDEIsMIQAgAkEQaiQAIAALewEBfyMAQRBrIgIkACACIAAoAgAiAEEcajYCDCABQaWEmgFBB0HQ/JkBQQQgAEEQakGAAkGwgZoBQQQgAEEYakGbA0GShJoBQQYgAEEMakGVA0GYhJoBQQQgAEGdA0GchJoBQQkgAkEMakHIAhCLDCEAIAJBEGokACAAC3sBAX8jAEEQayICJAAgAiAAKAIAIgBBEGo2AgwgAUGNjJoBQRBBkIaaAUEGIABBqgJBwIOaAUEIIABBDGpB1gNB4qabAUEIIABBGGpB0QJB34iaAUEJIABBGWpB0QJB0PyZAUEEIAJBDGpBhgIQiwwhACACQRBqJAAgAAt7AQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFBzISaAUEHQdD8mQFBBCAAQQxqQYACQdOEmgFBBCAAQfkDQd6DmgFBBCAAQRRqQa0DQdeEmgFBBiAAQRhqQa0DQb6BmgFBBCACQQxqQfADEIsMIQAgAkEQaiQAIAALewEBfyMAQRBrIgIkACACIAAoAgAiAEEMajYCDCABQZGImgFBCUHQ/JkBQQQgAEEQakGAAkHlhZoBQQggAEEYakHRAkGChJoBQQQgAEH6A0GGhJoBQQUgAEEIakGVA0G+gZoBQQQgAkEMakHwAxCLDCEAIAJBEGokACAAC3sBAX8jAEEQayICJAAgAiAAKAIAIgBBIGo2AgwgAUGcnpoBQQ9B0PyZAUEEIABBgAJBvqabAUEHIABBJGpB0QJBxaabAUEGIABBJWpB0QJB85OaAUECIABBCGpB8gNBvoGaAUEEIAJBDGpBiQQQiwwhACACQRBqJAAgAAt7AQF/IwBBEGsiAiQAIAIgACgCACIAQRhqNgIMIAFBjJqaAUELQdD8mQFBBCAAQQxqQYACQaSWmgFBCiAAQZYEQaGVmgFBAyAAQRRqQZcEQaSVmgFBCSAAQRxqQdECQbXMmwFBBCACQQxqQZgEEIsMIQAgAkEQaiQAIAALfgEBfyMAQRBrIgIkACACIAAoAgAiAEHIAGo2AgwgAUHxipoBQQpB0PyZAUEEIABB4ABqQYACQdyImgFBAyAAQb0EQfuKmgFBCiAAQSBqQckEQYWLmgFBBSAAQegAakG4BEG+gZoBQQQgAkEMakH4AxCLDCEAIAJBEGokACAAC3sBAX8jAEEQayICJAAgAiAAKAIAIgBBHGo2AgwgAUGgn5oBQRFB0PyZAUEEIABBEGpBgAJBkIaaAUEGIABBqgJB2IGaAUELIABBGGpBqwJBwIOaAUEIIABBDGpB2wRBzYGaAUELIAJBDGpBoQMQiwwhACACQRBqJAAgAAtyAQN/IwBBEGsiAiQAIAEtACghAyABQQA6ACggAS0AeSEEIAFBADoAeQJAIAAoAgBBGkcNACACIAApAwggACgCGBDnGiABQSxqIAIpAwAgAigCCBCQCwsgACABEHggASADOgAoIAEgBDoAeSACQRBqJAALcwICfwF+AkAgACkDCCIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDpHQsCQCAAKAIgIgFFDQAgARDXAyABQeAAQQgQvRMLAkAgACgCJCIARQ0AIAAQ1wMgAEHgAEEIEL0TCwtwAQR/IAAtACYhAiAAQQA6ACYCQCABKAIIIgNFDQAgASgCBCEBIANBMGwhAyAALQAlIQQgAC0AJCEFA0AgAEEDOgAkIAEgABB0IAAgBDoAJSAAIAU6ACQgAUEwaiEBIANBUGoiAw0ACwsgACACOgAmC3sBAX8jAEEQayICJAAgAiAAKAIAIgBBJGo2AgwgAUGBhZoBQQhB0PyZAUEEIABBGGpBgAJBsIGaAUEEIABBIGpBmwNBkoSaAUEGIABBDGpBnwVBmISaAUEEIABBoAVBnISaAUEJIAJBDGpBoQUQiwwhACACQRBqJAAgAAt7AQF/IwBBEGsiAiQAIAIgACgCACIAQRxqNgIMIAFBi4SaAUEHQdD8mQFBBCAAQRBqQYACQbCBmgFBBCAAQRhqQZsDQZKEmgFBBiAAQQxqQZsFQZiEmgFBBCAAQaIFQZyEmgFBCSACQQxqQaEFEIsMIQAgAkEQaiQAIAALewEBfyMAQRBrIgIkACACIAAoAgAiAEEEajYCDCABQef9mQFBCUHQ/JkBQQQgAEEIakGAAkGwgZoBQQQgAEEQakGbA0Glh5oBQQMgAEGbBUHYgZoBQQsgAEEUakGlBUGoh5oBQQMgAkEMakGmBRCLDCEAIAJBEGokACAAC3sBAX8jAEEQayICJAAgAiAAKAIAIgBBHGo2AgwgAUGlhJoBQQdB0PyZAUEEIABBEGpBgAJBsIGaAUEEIABBGGpBmwNBkoSaAUEGIABBDGpBmwVBmISaAUEEIABBoAVBnISaAUEJIAJBDGpBoQUQiwwhACACQRBqJAAgAAt7AQF/IwBBEGsiAiQAIAIgACgCACIAQQxqNgIMIAFB35GaAUERQdD8mQFBBCAAQRBqQYACQfeemgFBCiAAQc8FQYGfmgFBDCAAQQRqQc8FQY2fmgFBCSAAQQhqQc8FQZafmgFBCiACQQxqQa0FEIsMIQAgAkEQaiQAIAALewEBfyMAQRBrIgIkACACIAAoAgAiAEE8ajYCDCABQdOSmgFBDEHQ/JkBQQQgAEGAAkG9g5oBQQMgAEEIakHVAkGympoBQQkgAEEgakHSBUGchJoBQQkgAEE4akGlBUG7mpoBQQogAkEMakHTBRCLDCEAIAJBEGokACAAC34BAX8jAEEQayICJAAgAiAAKAIAIgBByABqNgIMIAFB8YqaAUEKQdD8mQFBBCAAQeAAakGAAkHciJoBQQMgAEHfBUH7ipoBQQogAEEgakHiBUGFi5oBQQUgAEHoAGpB+ARBvoGaAUEEIAJBDGpB4QUQiwwhACACQRBqJAAgAAt7AQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFBzISaAUEHQdD8mQFBBCAAQQxqQYACQdOEmgFBBCAAQf4FQd6DmgFBBCAAQRRqQagFQdeEmgFBBiAAQRhqQagFQb6BmgFBBCACQQxqQfgFEIsMIQAgAkEQaiQAIAALewEBfyMAQRBrIgIkACACIAAoAgAiAEEMajYCDCABQZGImgFBCUHQ/JkBQQQgAEEQakGAAkHlhZoBQQggAEEYakHRAkGChJoBQQQgAEH/BUGGhJoBQQUgAEEIakGbBUG+gZoBQQQgAkEMakH4BRCLDCEAIAJBEGokACAAC3sBAX8jAEEQayICJAAgAiAAKAIAIgBBIGo2AgwgAUGcnpoBQQ9B0PyZAUEEIABBgAJBvqabAUEHIABBJGpB0QJBxaabAUEGIABBJWpB0QJB85OaAUECIABBCGpB8gNBvoGaAUEEIAJBDGpBjgYQiwwhACACQRBqJAAgAAt7AQF/IwBBEGsiAiQAIAIgACgCACIAQRhqNgIMIAFBjJqaAUELQdD8mQFBBCAAQQxqQYACQaSWmgFBCiAAQZYEQaGVmgFBAyAAQRRqQZcEQaSVmgFBCSAAQRxqQdECQbXMmwFBBCACQQxqQZoGEIsMIQAgAkEQaiQAIAALewEBfyMAQRBrIgIkACACIAAoAgAiAEEQajYCDCABQY2MmgFBEEGQhpoBQQYgAEGnBkHAg5oBQQggAEEMakHgBUHippsBQQggAEEYakHRAkHfiJoBQQkgAEEZakHRAkHQ/JkBQQQgAkEMakGGAhCLDCEAIAJBEGokACAAC3sBAX8jAEEQayICJAAgAiAAKAIAIgBBHGo2AgwgAUGgn5oBQRFB0PyZAUEEIABBEGpBgAJBkIaaAUEGIABBpwZB2IGaAUELIABBGGpBiQZBwIOaAUEIIABBDGpBwwZBzYGaAUELIAJBDGpBoQMQiwwhACACQRBqJAAgAAtzAgJ/AX4CQCAAKQMIIgNCA4NCAFINACADpyIBIAEoAgAiAkF/ajYCACACQQFHDQAgASABKAIQEOkdCwJAIAAoAiAiAUUNACABENgDIAFB4ABBCBC9EwsCQCAAKAIkIgBFDQAgABDYAyAAQeAAQQgQvRMLC3MCAn8BfgJAIAApAwgiA0IDg0IAUg0AIAOnIgEgASgCACICQX9qNgIAIAJBAUcNACABIAEoAhAQ6R0LAkAgACgCICIBRQ0AIAEQ2QMgAUHgAEEIEL0TCwJAIAAoAiQiAEUNACAAENkDIABB4ABBCBC9EwsLcQACQAJAAkACQAJAAkACQCAAKAIADgcAAQIDBAYFAAsgASAAQQhqENgWDwsgASAAQQRqELsQDwsgAEEEaiABENUhDwsgASAAQQRqEMcMDwsgAEEEaiABEIUkIABBCGogARCBJA8LIABBBGogARCBJAsLcQIBfwF+IwBBIGsiBCQAIAQgAjYCHCAEIAE2AhggBEEBNgIUIARBCGogAyAEQRRqQfTgmwFBBRCGDQJAAkAgBC0ACEEERg0AIAQpAwgiBUL/AYNCBFENACAAIAU3AgAMAQsgAEEEOgAACyAEQSBqJAALeQECfyMAQRBrIgIkACABKAIAQdDamwFBBSABKAIEKAIMEQwAIQMgAkEAOgAJIAIgAzoACCACIAE2AgQgAiAANgIMIAJBBGpBnOObAUEHIAJBDGpBgwcQ4glBgLGbAUEGIABBCGpBhAcQ4gkQxBIhASACQRBqJAAgAQt5AQJ/IwBBEGsiAiQAIAEoAgBB0NqbAUEFIAEoAgQoAgwRDAAhAyACQQA6AAkgAiADOgAIIAIgATYCBCACIAA2AgwgAkEEakGc45sBQQcgAkEMakGDBxDiCUGAsZsBQQYgAEEIakGFBxDiCRDEEiEBIAJBEGokACABC2wBA38jAEEQayIBJAACQAJAIAAoAgAiAg0AQQAhAiABQQxqIQAMAQsgACgCBCEDIAFBATYCDCABQQhqIQALIAAgAjYCAAJAIAEoAgwiAEUNACABKAIIIgJFDQAgAyACIAAQvRMLIAFBEGokAAtnAQF/IwBBEGsiBCQAAkACQCAADQBBACEAIARBDGohAwwBCyAEIAI2AgwgACADbCEAIARBCGohAwsgAyAANgIAAkAgBCgCDCIARQ0AIAQoAggiA0UNACABIAMgABC9EwsgBEEQaiQAC2cBAX8jAEEQayIEJAACQAJAIAANAEEAIQAgBEEMaiEDDAELIAQgAjYCDCAAIANsIQAgBEEIaiEDCyADIAA2AgACQCAEKAIMIgBFDQAgBCgCCCIDRQ0AIAEgAyAAEL0TCyAEQRBqJAALagEBfwJAIAAoAggiAiAAKAIARw0AIAAQ5hcLIAAgAkEBajYCCCAAKAIEIAJBBXRqIgAgASkDADcDACAAQQhqIAFBCGopAwA3AwAgAEEQaiABQRBqKQMANwMAIABBGGogAUEYaikDADcDAAtqAQF/AkAgACgCCCICIAAoAgBHDQAgABDoFwsgACACQQFqNgIIIAAoAgQgAkEFdGoiACABKQMANwMAIABBCGogAUEIaikDADcDACAAQRBqIAFBEGopAwA3AwAgAEEYaiABQRhqKQMANwMAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQayOgQE2AgggA0ICNwIUIANBDq1CIIYiBCADrYQ3AyggAyAEIANBBGqthDcDICADIANBIGo2AhAgA0EIaiACEKgdAAt5AQJ/IAAtAAQiASECAkAgAC0ABUUNAEEBIQICQCABQQFxDQACQCAAKAIAIgItAApBgAFxDQAgAigCAEHXtZcBQQIgAigCBCgCDBEMACECDAELIAIoAgBByMubAUEBIAIoAgQoAgwRDAAhAgsgACACOgAECyACQQFxC2cBAX8jAEEQayIEJAACQAJAIAANAEEAIQAgBEEMaiEDDAELIAQgAjYCDCAAIANsIQAgBEEIaiEDCyADIAA2AgACQCAEKAIMIgBFDQAgBCgCCCIDRQ0AIAEgAyAAEL0TCyAEQRBqJAALaQIBfwF+IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EDNgIMIANBlMqAATYCCCADQgI3AhQgA0EOrUIghiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQqB0AC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAzYCDCADQcDKgAE2AgggA0ICNwIUIANBDq1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEKgdAAtsAgF/AX4jAEEwayICJAAgAiABNgIEIAIgADYCACACQQM2AgwgAkHwyoABNgIIIAJCAjcCFCACQQ6tQiCGIgMgAkEEaq2ENwMoIAIgAyACrYQ3AyAgAiACQSBqNgIQIAJBCGpBvMiFARCoHQALZwEBfyMAQRBrIgQkAAJAAkAgAA0AQQAhACAEQQxqIQMMAQsgBCACNgIMIAAgA2whACAEQQhqIQMLIAMgADYCAAJAIAQoAgwiAEUNACAEKAIIIgNFDQAgASADIAAQvRMLIARBEGokAAt8AQF/IwBBEGsiAyQAAkAgACgCBEEDRg0AIAEpAwBCtuvn6eHYxrZ2Ug0AIAEpAwhCtN+v6pWUsbIQUg0AIAEoAhANACABIABBBGo2AhALIANBCGogACAAKAIAKAIEEQcAIAMoAgggASACIAMoAgwoAigRCwAgA0EQaiQAC3EBAX9BDBC2HCIGQQI2AgggBiADNgIAIAYgBCADayAFajYCBCABIAYgASgCACIDIAMgAkYiAhs2AgACQCACDQAgACADIAQgBRDfGiAGEKMjDwsgACAGNgIMIAAgBTYCCCAAIAQ2AgQgAEGo0IABNgIAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQbD9gQE2AgggA0ICNwIUIANBDq1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEKgdAAtpAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0HQ/YEBNgIIIANCAjcCFCADQQ6tQiCGIgQgA0EEaq2ENwMoIAMgBCADrYQ3AyAgAyADQSBqNgIQIANBCGogAhCoHQALaQIBfwF+IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0ECNgIMIANBhP6BATYCCCADQgI3AhQgA0EOrUIghiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQqB0AC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAzYCDCADQej+gQE2AgggA0ICNwIUIANBDq1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEKgdAAtnAQF/IwBBEGsiBCQAAkACQCAADQBBACEAIARBDGohAwwBCyAEIAI2AgwgACADbCEAIARBCGohAwsgAyAANgIAAkAgBCgCDCIARQ0AIAQoAggiA0UNACABIAMgABC9EwsgBEEQaiQAC28BAn8jAEEQayIDJAACQAJAIAEoAgAgASgCCCIETQ0AIANBCGogASAEQQRBBBC8DSADKAIIIgRBgYCAgHhHDQEgASgCCCEECyAAIAQ2AgQgACABKAIENgIAIANBEGokAA8LIAQgAygCDCACENggAAtoAQJ/IwBBIGsiASQAIABBNGohAgJAIAAoAjBBAkYNACABIAA2AgggASACNgIMIAEgAUEfajYCGCABIAFBDGo2AhQgASABQQhqNgIQIABBMGogAUEQakH4tJgBEMgGCyABQSBqJAAgAgttAQN/AkAgACgCDCIBIAAoAgQiAkYNACABIAJrQQZ2IQEDQCACQTRqIgMoAgAgAkE4aigCABDVHCACQTBqKAIAIAMoAgAQ9SIgAhD/CiACQcAAaiECIAFBf2oiAQ0ACwsgACgCCCAAKAIAEO4iC2oBA38CQCAALQAlQQJGDQADQCAAKAIgIgAtACVBAkcNAAsLAkAgACgCCCIBDQBBAA8LIAAoAgQhACABQThsQUhqIQECQANAIAAQmgsiAg0BIABBOGohACABIQMgAUFIaiEBIAMNAAsLIAILbwICfwF+IABBCGohAQJAAkAgACgCAA0AIAEpAwAiA0IDg0IAUg0BIAOnIgEgASgCACICQX9qNgIAIAJBAUcNASABIAEoAhAQ6R0MAQsgARCqEQsCQCAAKAIoIgBFDQAgABDkASAAQcAAQQgQvRMLC28BBH9BACECAkACQCABLQAlRQ0ADAELIAFBAToAJQJAAkAgAS0AJEEBRw0AIAEoAiAhAyABKAIcIQQMAQsgASgCICIDIAEoAhwiBEYNAQsgAyAEayEFIAEoAgQgBGohAgsgACAFNgIEIAAgAjYCAAtwAgF/AX4jAEEQayIBJAAgACkDCCECIABBCjYCCCABQQhqIABBEGopAwA3AwAgASACNwMAAkACQCACpyIAQQpGDQAgAEEJRg0BCyABEKUTQZKpmwFBKEGsx5sBEIwaAAsgASgCBCEAIAFBEGokACAAC3UBAn8jAEEQayICJAACQAJAAkACQCABKAIADgQAAgECAAsgAkEIaiABQQhqEPcVIAIoAgwhAyACKAIIIQEMAgsgASgCDCEDIAEoAgghAQwBCyABKAIUIQMgASgCECEBCyAAIAE2AgAgACADNgIEIAJBEGokAAtwAgF/AX4jAEEQayIBJAAgACkDCCECIABBCjYCCCABQQhqIABBEGopAwA3AwAgASACNwMAAkACQCACpyIAQQpGDQAgAEEIRg0BCyABEKUTQZKpmwFBKEHMx5sBEIwaAAsgASgCBCEAIAFBEGokACAAC3ACAX8BfiMAQRBrIgEkACAAKQMIIQIgAEEKNgIIIAFBCGogAEEQaikDADcDACABIAI3AwACQAJAIAKnIgBBCkYNACAAQQJGDQELIAEQpRNBkqmbAUEoQZzHmwEQjBoACyABKQMIIQIgAUEQaiQAIAILZwECfyMAQRBrIgIkAEEAIQMCQCABKAIIRQ0AIAJBCGogAUEIahDLGSACKAIIQQFxRQ0AIAIgAigCDBCNHiAAIAIpAwA3AgQgASABKAIUQQFqNgIUQQEhAwsgACADNgIAIAJBEGokAAtxAQJ/IwBBEGsiAiQAAkACQAJAAkAgAUIBVg0AIAGnDgIBAgELQQEhAyACQQE6AAAgAiABNwMIIAAgAkHQh4ABEPwSNgIEDAILQQAhAyAAQQA6AAEMAQsgAEEBOgABQQAhAwsgACADOgAAIAJBEGokAAtuAQF/IABB6ABqEPUdAkAgACgCbEUNACAAQewAahD1HQsgAEEcaiAAKAIUIAAoAhggACgCECgCEBELACAAQcQAahDjGgJAIABBf0YNACAAIAAoAgQiAUF/ajYCBCABQQFHDQAgAEGAAUEQEL0TCwtcAQF/IAEgAGohAQJAIAIgAEkNACACIAFPDQBBAQ8LQQEhBCACIANBASADQQFLG2ohAwJAAkAgAiAATw0AIAMgAUsNAQsCQCADIABLDQBBAA8LIAMgAU0hBAsgBAtpAQJ/AkAgACgCDCIBIAAoAgQiAkYNACABIAJrQQV2IQEDQCACKAIAIAJBBGooAgAQ3CAgAkEYaigCACACQRxqKAIAEJIdIAJBIGohAiABQX9qIgENAAsLIAAoAgggACgCAEEEQSAQwBILbAECfyMAQRBrIgIkACAAKAIAIgBBBGohAwJAAkAgACgCAEEBRw0AIAIgAzYCDCABQdiZgAFBBSACQQxqQSsQ5gshAAwBCyACIAM2AgggAUHQmYABQQggAkEIakErEOYLIQALIAJBEGokACAAC3MBAn8gACgCACAAKAIEQQRBBBDFEiAAKAIQIgEgACgCFBCDHCAAKAIMIAFBBEEMEMUSIAAoAhggACgCHEEEQQQQxRICQCAAKAIoIgFFDQAgASABKAIAIgJBf2o2AgAgAkEBRw0AIAAoAiggACgCLBDsEAsLWgEBfyMAQRBrIgUkACAFIAJCACABQgAQ5xAgACABIAN+IAUpAwh8IgFBACAEa0E/ca0iAohCAYM8AAAgACABIARBP3GthiAFKQMAIAKIhFA6AAEgBUEQaiQAC14BA38CQANAQQEhBCABIABGIgUNAQJAIAMgAkcNACACIQMMAgsgAUF8aiIBKAIAIgQgA0F8aiIDKAIAIgZGDQALIAQgBksgBCAGSWshBAtBf0EAIAIgA0cbIAQgBRsLYwEEf0EAIQEDQCAAKAIAIQICQANAIAJBAXENASAAIAJBAXIgACgCACIDIAMgAkYiBBs2AgAgAyECIARFDQALDwsCQAJAIAJBA0sNACABQQpJDQELEIscAAsgAUEBaiEBDAALC2kBAn9BACEDQQAhBAJAAkAgAkUNACACQX9qIgQgAU8NASAAIARqLQAAQdTnhAFqLQAAIQQLAkAgAiABTw0AIAAgAmotAABB1OeEAWotAAAhAwsgBCADc0EBcQ8LIAQgAUHE0oQBEMMSAAt6AQF/IwBBEGsiAiQAIAIgAEHUEmo2AgwgAUGs9IQBQQxBm/SEAUEEIABBwgFBuPSEAUEIIABBwBJqQcMBQbTzhAFBBiAAQdASakHEAUHY8IQBQQYgAEGwDWpBxQFB3vCEAUEDIAJBDGpBxgEQiwwhACACQRBqJAAgAAtuAQJ/IwBBEGsiAyQAAkACQCACKAIARQ0AQQkhAkH4p5gBIQQMAQsgA0EEaiACKAIEIAIoAggQ4QRB+KeYASADKAIIIAMoAgQiAhshBEEJIAMoAgwgAhshAgsgBCACIAEQnQ4hAiADQRBqJAAgAgttAgR/AX4gASgCECECIAEoAgwhAyABKAIIIQQCQCABKQMAIgZCA4NCAFINACAGpyIFIAUoAgAiBUEBajYCACAFQX9KDQAACyAAIAI2AhAgACADNgIMIAAgBDYCCCAAIAY3AwAgACABLQAUOgAUC3cAAkAgASACQYDSmwFBBBDCHkUNAEHOAA8LAkAgASACQarSmwFBBRDCHkUNAEHPAA8LAkAgASACQYzRmwFBBRDCHkUNAEHQAA8LAkAgASACQa+bmwFBBRDCHkUNAEHRAA8LQdIAQaR/IAEgAkGx0psBQQgQwh4bC3cAAkAgASACQbnSmwFBCBDCHkUNAEHTAA8LAkAgASACQdzOmwFBBxDCHkUNAEHUAA8LAkAgASACQcabmwFBBhDCHkUNAEHVAA8LAkAgASACQa/SmwFBAhDCHkUNAEHWAA8LQfwAQaR/IAEgAkG+ppsBQQcQwh4bC3cAAkAgASACQcTQmwFBBRDCHkUNAEHaAA8LAkAgASACQeLRmwFBBxDCHkUNAEHbAA8LAkAgASACQdzRmwFBAxDCHkUNAEHcAA8LAkAgASACQZHRmwFBCBDCHkUNAEHdAA8LQf4AQaR/IAEgAkGlzZsBQQQQwh4bC3cAAkAgASACQcLLmwFBAxDCHkUNAEHjAA8LAkAgASACQempmwFBBBDCHkUNAEHkAA8LAkAgASACQe2pmwFBBhDCHkUNAEGIAQ8LAkAgASACQZaqmwFBBRDCHkUNAEGHAQ8LQYZ/QaR/IAEgAkGvpZsBQQkQwh4bC24BAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgBBAUcNACACIAM2AgwgAUGHopoBQRIgAkEMakHMAhDmCyEADAELIAIgAzYCCCABQdiZmgFBCyACQQhqQc0CEOYLIQALIAJBEGokACAAC24BAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgBBAUcNACACIAM2AgwgAUH22psBQQQgAkEMakHpAhDmCyEADAELIAIgAzYCCCABQY+DmgFBDCACQQhqQYMDEOYLIQALIAJBEGokACAAC3cBAX8jAEEQayICJAAgAiAAQThqNgIMIAFB45SaAUERQYuDmgFBBCAAQcEDQdD8mQFBBCAAQTBqQYACQfSUmgFBBSAAQTxqQcIDQfmUmgFBDCAAQcgAakHRAkGchJoBQQkgAkEMakHIAhCLDCEAIAJBEGokACAAC24BAn8jAEEQayICJAAgACgCACIAQQhqIQMCQAJAIAAoAgBBAUcNACACIAM2AgwgAUHU/JkBQQMgAkEMakGiAxDmCyEADAELIAIgAzYCCCABQdXamwFBBSACQQhqQeMCEOYLIQALIAJBEGokACAAC24BAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgBBAUcNACACIAM2AgwgAUH22psBQQQgAkEMakHpAhDmCyEADAELIAIgAzYCCCABQemDmgFBByACQQhqQf0DEOYLIQALIAJBEGokACAAC20BAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEEBRw0AIAIgAEEEajYCDCABQb2FmgFBCCACQQxqQdoDEOYLIQAMAQsgAiAAQQhqNgIIIAFB1dqbAUEFIAJBCGpBsAMQ5gshAAsgAkEQaiQAIAALbQEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQFHDQAgAiAAQQRqNgIMIAFB0t+YAUEDIAJBDGpB3wQQ5gshAAwBCyACIABBCGo2AgggAUHQ35gBQQIgAkEIakHPBBDmCyEACyACQRBqJAAgAAtuAQJ/IwBBEGsiAiQAIAAoAgAiAEEEaiEDAkACQCAAKAIAQQFHDQAgAiADNgIMIAFBh6KaAUESIAJBDGpBzQUQ5gshAAwBCyACIAM2AgggAUHYmZoBQQsgAkEIakHOBRDmCyEACyACQRBqJAAgAAtuAQJ/IwBBEGsiAiQAIAAoAgAiAEEEaiEDAkACQCAAKAIAQQFHDQAgAiADNgIMIAFB9tqbAUEEIAJBDGpB9QQQ5gshAAwBCyACIAM2AgggAUHpg5oBQQcgAkEIakGCBhDmCyEACyACQRBqJAAgAAtuAQJ/IwBBEGsiAiQAIAAoAgAiAEEEaiEDAkACQCAAKAIAQQFHDQAgAiADNgIMIAFB9tqbAUEEIAJBDGpB9QQQ5gshAAwBCyACIAM2AgggAUGPg5oBQQwgAkEIakGDAxDmCyEACyACQRBqJAAgAAt3AQF/IwBBEGsiAiQAIAIgAEE4ajYCDCABQeOUmgFBEUGLg5oBQQQgAEHIBkHQ/JkBQQQgAEEwakGAAkH0lJoBQQUgAEE8akHJBkH5lJoBQQwgAEHIAGpB0QJBnISaAUEJIAJBDGpBoQUQiwwhACACQRBqJAAgAAttAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBAUcNACACIABBBGo2AgwgAUG9hZoBQQggAkEMakHjBRDmCyEADAELIAIgAEEIajYCCCABQdXamwFBBSACQQhqQbADEOYLIQALIAJBEGokACAAC2QBAn8CQCAAQgODQgBSDQAgAKciAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCEBDpHQsCQCABQgODQgBSDQAgAaciAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCEBDpHQsLbQECfyMAQRBrIgIkACACIAE2AgwCQAJAAkAgAC0AeEEBcQ0AIAAtAIEBQQhxRQ0BCyACQQxqEI0gDAELAkAgAC0AyAFBogFHDQAgABDXEiEDIAAQ4w4gACADEIMbCyAAIAEQgxsLIAJBEGokAAuDAQEBfwJAAkACQAJAAkACQAJAIAAoAgBBgICAgHhzIgFBFSABQRVJGw4VAQEBAQEBAQEBAQEBAgEDAQEEAQUGAAsgABDZGgsPCyAAKAIEIAAoAggQvSIPCyAAKAIEIAAoAggQvSIPCyAAQQRqENUgDwsgAEEEahDVIA8LIABBBGoQihoLbwEBfyMAQTBrIgIkACACQbCAgAE2AgQgAiABNgIAIAJBAjYCDCACQZiBgAE2AgggAkICNwIUIAJBATYCLCACQQI2AiQgAiAANgIgIAIgAkEgajYCECACIAI2AiggAkEIahDxGiEBIAJBMGokACABC2wBAX8jAEEwayIDJAAgAyACNgIEIAMgATYCACADQQI2AgwgA0HIlpgBNgIIIANCAjcCFCADQQE2AiwgA0ECNgIkIAMgADYCICADIANBIGo2AhAgAyADNgIoIANBCGoQ8RohAiADQTBqJAAgAgtrAQF/IwBBMGsiAiQAIAJBAjYCDCACQcTBmAE2AgggAkICNwIUIAJBDjYCLCACQQ42AiQgAiAANgIgIAIgAEEEajYCKCACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQ9AUhACACQTBqJAAgAAtnAQN/IwBBEGsiAiQAIAAgASgCBCABKAIAaxDJHiAAKAIIIQMgACgCBCEEAkADQCACQQhqIAEQ3RogAi0ACEUNASAEIANqIAItAAk6AAAgA0EBaiEDDAALCyAAIAM2AgggAkEQaiQAC2sBAn8jAEEQayIBJAAgACAAKAIIIgJBf2o2AggCQAJAIAJBAUcNACAAQQRqKAIAIgJBf0wNASAAKAIAIAJBARC9EyAAEKMjCyABQRBqJAAPC0G0qpsBQSsgAUEPakG8z4ABQZjQgAEQ6hAAC2wBAX8jAEEwayICJAAgAkECNgIMIAJB0IOCATYCCCACQgI3AhQgAkEONgIsIAJB4gA2AiQgAiAANgIoIAIgAEEEajYCICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQ5SAhACACQTBqJAAgAAtwAgF/AX4jAEEQayICJAAgAkEIakEAKAKElZsBNgIAIAJBACkC/JSbATcDACABrSEDAkADQCADUA0BIAIgA6dB9JWbARDSG0IAIQMMAAsLIAAgAikDADcCACAAQQhqIAJBCGooAgA2AgAgAkEQaiQAC3EBAX8jAEEQayICJAAgAiAAKAIAKAIAIgBBLGo2AgwgAUGj9oQBQQ5BsfaEAUELIABBCGpBtQFBvPaEAUENIABBFGpBtgFByfaEAUENIABBIGpBtwFB1vaEAUEMIAJBDGpBKhDADCEAIAJBEGokACAAC2kBAX8jAEEQayIDJAACQCABKAIgRQ0AQaSxhAEQ9xYACyABQX82AiAgA0EMaiACQQhqKAIANgIAIANBAjYCACADIAIpAgA3AgQgACABQSRqIAMQngwgASABKAIgQQFqNgIgIANBEGokAAtfAQF/AkAgASADRw0AIAFBAWohAQNAAkAgAUF/aiIBDQBBAQ8LIAAoAgAgAigCAEcNASACQQRqIQMgAEEEaiEEIAJBCGohAiAAQQhqIQAgBCgCACADKAIARg0ACwtBAAtrAQF/IwBBMGsiAiQAIAJBAjYCDCACQcTBmAE2AgggAkICNwIUIAJBDjYCLCACQQ42AiQgAiAANgIgIAIgAEEEajYCKCACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQ5SAhACACQTBqJAAgAAttAQF/IwBBEGsiAiQAAkACQCAAKAIAKAIAIgAoAgBBA0cNACACIABBBGo2AgwgAUHa/ZkBQQQgAkEMakG5AxDmCyEADAELIAIgADYCCCABQcf9mQFBBiACQQhqQfICEOYLIQALIAJBEGokACAAC20BAX8jAEEQayICJAACQAJAIAAoAgAoAgAiACgCAEEDRw0AIAIgAEEEajYCDCABQdr9mQFBBCACQQxqQbAFEOYLIQAMAQsgAiAANgIIIAFBx/2ZAUEGIAJBCGpBgQUQ5gshAAsgAkEQaiQAIAALaAEDfwJAAkAgASgCBCICIAEoAgAiAygCIEkNAEEAIQMMAQtBACEEAkAgAiADKAIsTw0AIAMoAiggAkEkbGoiBEEAIAQoAgAbIQQLQQEhAyABIAJBAWo2AgQLIAAgBDYCBCAAIAM2AgALYgEBf0H/ASEFAkAgA0H/AXFFDQBBf0EAIANrQQdxdEF/cyADQQdxdCEFCyAAQQg6AA4gACADOgANIAAgBToADCAAIAE2AgggAEEANgIQIAAgAkF/ajYCBCAAIAFBAWo2AgALdAEBfyMAQRBrIgIkACAAKAIAIQAgAiABKAIAQZCKmwFBDSABKAIEKAIMEQwAOgAIIAIgATYCBCACQQA6AAkgAkEANgIAIAIgACgCADYCDCACIAJBDGpB6gYQwwtBoIqbAUEpEMMLEPIPIQEgAkEQaiQAIAELYgECfyAAKAIIQThsIQIgACgCBCEAA0ACQAJAIAJFDQACQCAAKAIAIgNBAUYNACADQQlHDQIgASAAQQhqEMgfDAILIAEgAEEIahDuBgwBCw8LIABBOGohACACQUhqIQIMAAsLawACQAJAAkACQAJAAkACQCAAKAIADgcAAQIDBAYFAAsgASgCFCAAQQhqENgOGg8LIABBBGogARC1Gw8LIABBBGogARCHJA8LIABBBGogARCrBA8LIABBBGogARCWIQ8LIABBBGogARCGJAsLawEEfyAAKAIEIQECQCAAKAIIIgJFDQAgASEDA0ACQAJAIAMoAgBBB0cNACADQRBqKAIAIgQQrQEgBEHAAEEIEL0TDAELIAMQ/woLIANBKGohAyACQX9qIgINAAsLIAAoAgAgAUEIQSgQvxILbAEBfyMAQTBrIgIkACACQQI2AgwgAkH45ZsBNgIIIAJCAjcCFCACQRM2AiwgAkGGBzYCJCACIAA2AiggAiAAQQxqNgIgIAIgAkEgajYCECABKAIAIAEoAgQgAkEIahDlICEAIAJBMGokACAAC2oBA38jAEEQayICJAAgAkEIaiIDIAFBJGopAgA3AwAgAiABKQIcNwMAQRAQwiEiBEEIaiADKQMANwIAIAQgAikDADcCACABQQRqENgfIAEQlyMgAEGAioABNgIEIAAgBDYCACACQRBqJAALZwEBfyAAQQxqIgEoAgAgAEEQaigCABCAHCAAKAIIIAEoAgBBBEEMEMUSIAAoAhQgAEEYaigCAEEEQQQQxRICQCAAQX9GDQAgACAAKAIEIgFBf2o2AgQgAUEBRw0AIABBLEEEEL0TCwtqAQJ/IAFBACABKAIIIgQgBEEBRiIEGzYCCAJAIAQNACAAIAIgAxDZECABEIATDwsgASgCBCEFIAEoAgAhBCABEKMjAkAgA0UNACAEIAIgA/wKAAALIAAgAzYCCCAAIAQ2AgQgACAFNgIAC2IBAn8CQAJAAkAgASkDAKciAkEDcQ0AIAJBGGohASACKAIQIQIMAQsgAsAiA0HwAXFBBHYhAiADQX9MDQEgAUEBaiEBCyAAIAI2AgQgACABNgIADwsgAkEHQYjYggEQvCIAC2IBAn8CQAJAAkAgASkDAKciAkEDcQ0AIAJBGGohASACKAIQIQIMAQsgAsAiA0HwAXFBBHYhAiADQX9MDQEgAUEBaiEBCyAAIAI2AgQgACABNgIADwsgAkEHQbDYggEQvCIAC2YBAn8CQCABIAAoAgAgACgCCCICa00NACAAIAIgAUEEQQQQzhkgACgCCCECCyACIAFqIQMgACgCBCACQQJ0aiECA0AgAkGAgICAeDYCACACQQRqIQIgAUF/aiIBDQALIAAgAzYCCAtfAQF/AkAgACgCDCABbCACaiICQQV2IgEgACgCCCIDTw0AAkAgACgCBCABQQJ0aiIBKAIAIgNBASACdCICcSIADQAgASADIAJyNgIACyAARQ8LIAEgA0H0pIQBEMMSAAttAQN/AkBBACgCgPadASIBRQ0AIAFBIGoQjhQhAgJAIAEoAiwiAyABKAIkRw0AIAFBJGoQrBgLIAEoAiggA0ECdGogADYCACACQQA6AAAgASADQQFqNgIsIAMPC0GElpsBQcgAQayXmwEQvCMAC24BAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEGAgICAeEYNACACIAA2AgwgAUGgn5oBQREgAkEMakHFAhDmCyEADAELIAIgAEEEajYCCCABQayUmgFBCCACQQhqQcYCEOYLIQALIAJBEGokACAAC2oBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEEFRw0AIAIgAEEEajYCDCABQc2TmgFBDSACQQxqQeICEOYLIQAMAQsgAiAANgIIIAFBhIOaAUEHIAJBCGpBxgMQ5gshAAsgAkEQaiQAIAALagEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQlHDQAgAiAAQQhqNgIMIAFBmpCaAUEEIAJBDGpB3gMQ5gshAAwBCyACIAA2AgggAUGQkJoBQQogAkEIakGMBBDmCyEACyACQRBqJAAgAAtpAQJ/IwBBEGsiAiQAIABBCGohAwJAAkAgACgCAEEBRw0AIAIgAzYCDCABQdT8mQFBAyACQQxqQaIDEOYLIQAMAQsgAiADNgIIIAFB1dqbAUEFIAJBCGpB4wIQ5gshAAsgAkEQaiQAIAALagEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQdGDQAgAiAANgIMIAFBxYeaAUEFIAJBDGpBxAQQ5gshAAwBCyACIABBCGo2AgggAUG8mJoBQQsgAkEIakHMBBDmCyEACyACQRBqJAAgAAtuAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBgICAgHhHDQAgAiAAQQRqNgIMIAFB9tqbAUEEIAJBDGpB6QIQ5gshAAwBCyACIAA2AgggAUHjh5oBQQkgAkEIakHXAxDmCyEACyACQRBqJAAgAAtuAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBgICAgHhGDQAgAiAANgIMIAFBoJ+aAUERIAJBDGpBxwUQ5gshAAwBCyACIABBBGo2AgggAUGslJoBQQggAkEIakHIBRDmCyEACyACQRBqJAAgAAtqAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBCUcNACACIABBCGo2AgwgAUGakJoBQQQgAkEMakHpBRDmCyEADAELIAIgADYCCCABQZCQmgFBCiACQQhqQZEGEOYLIQALIAJBEGokACAAC2oBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEEHRg0AIAIgADYCDCABQcWHmgFBBSACQQxqQbcGEOYLIQAMAQsgAiAAQQhqNgIIIAFBvJiaAUELIAJBCGpBuAYQ5gshAAsgAkEQaiQAIAALagEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQVHDQAgAiAAQQRqNgIMIAFBzZOaAUENIAJBDGpB2QUQ5gshAAwBCyACIAA2AgggAUGEg5oBQQcgAkEIakHNBhDmCyEACyACQRBqJAAgAAtuAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBgICAgHhHDQAgAiAAQQRqNgIMIAFB9tqbAUEEIAJBDGpB9QQQ5gshAAwBCyACIAA2AgggAUHjh5oBQQkgAkEIakHnBRDmCyEACyACQRBqJAAgAAtrAQJ/IwBBEGsiASQAAkACQANAIAFBCGogABCEDAJAIAEoAgxBgIDEACABKAIIQQFxGyICQXZqDgQCAQECAAsgAkHYv39qQQJJDQEgAkGAgMQARw0AC0EAIQIMAQtBASECCyABQRBqJAAgAgtmAQJ/IAAoAghBBnQhAiAAKAIEIQMCQANAIAJFDQEgAyABEL0gIAJBQGohAiADQcAAaiEDDAALCyAAKAIQIAAoAhQgARDdHCAAQRhqIAEQpx8gASAAQTxqEIIaIABBwABqIAEQpCELcQEBfwJAIAAoAgAiAUEKRg0AAkACQAJAAkACQAJAIAFBfmoiAUEBIAFBCEkbDggBAgMEBgYFAAELIABBBGoQjSAPCyAAKQMIEPMfDwsgABCpHw8LIAApAwgQ/h8PCyAAKQMIEPMfDwsgACgCBBCzIAsLbgECfyABKAIAIQIgAUEANgIAAkAgAS0APA0AIAEoAgQhAyABKAIoIAEoAhAgASgCFBCuCQJAIAEoAjhFDQAgAUEANgI0IAEgASgCMEEBajYCMAsgAUEBOgA8IAJFDQAgASADENMFCyAAQQQ6AAALVwEBfgJAAkAgA0HAAHENACADRQ0BIAIgA0E/ca0iBIYgAUEAIANrQT9xrYiEIQIgASAEhiEBDAELIAEgA0E/ca2GIQJCACEBCyAAIAE3AwAgACACNwMIC1cBAX4CQAJAIANBwABxDQAgA0UNASACQQAgA2tBP3GthiABIANBP3GtIgSIhCEBIAIgBIghAgwBCyACIANBP3GtiCEBQgAhAgsgACABNwMAIAAgAjcDCAtlAQJ/IwBBEGsiAiQAIAIgATYCCAJAAkAgARCzH0H/AXEiA0ECRg0AIAAgAzoAAUEAIQMMAQsgACACQQhqIAJBD2pBgICAARCMBzYCBEEBIQMLIAAgAzoAACABEMEhIAJBEGokAAthAQF/IwBBIGsiAiQAAkAgACgCCEECRg0AIAIgATYCCCACIAA2AgwgAiACQR9qNgIYIAIgAkEMajYCFCACIAJBCGo2AhAgAEEIaiACQRBqQZDWggEQyAYLIAJBIGokACAAC2ABAn8jAEEQayICJAACQAJAIAANAEEAIQAgAkEMaiEDDAELIAJBATYCDCACQQhqIQMLIAMgADYCAAJAIAIoAgwiAEUNACACKAIIIgNFDQAgASADIAAQvRMLIAJBEGokAAtkAQR/IwBBEGsiAiQAIAAtAAwhAyACQQRqIAAoAgQgACgCCEEKEMYBIAIoAggiACACKAIMIgQQjBEgAigCBCEFIAEgA0EAR0EBQQAgACAEEO8FIQEgBSAAEN4iIAJBEGokACABC2oBAX8jAEEQayICJAACQAJAIAAoAgAiACkDAEIChSAAKQMIhFANACACIAA2AgwgAUHs3psBQQQgAkEMakGmARDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELagEBfyMAQRBrIgIkAAJAAkAgACgCACIAKQMAQgKFIAApAwiEUA0AIAIgADYCDCABQezemwFBBCACQQxqQbwBEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQtlAQN/AkACQCABKAIMIAJsIgIgASgCECIDaiIEIAJJDQAgBCABKAIIIgVLDQEgASgCBCEBIAAgAzYCBCAAIAEgAkECdGo2AgAPCyACIARBzMSEARDXIgALIAQgBUHMxIQBELwiAAtgAQF/IwBBEGsiBCQAAkACQCAADQBBACEAIARBDGohAwwBCyAEIAI2AgwgACADbCEAIARBCGohAwsgAyAANgIAAkAgBCgCDCIARQ0AIAEgACAEKAIIENEgCyAEQRBqJAALbQEEf0EALQDg9p0BGiABKAIMIQIgASgCCCEDAkBBwAAQhAEiBEUNACAEIAEoAgAQRUEALQDg9p0BGkHgABCEASIFRQ0AIAUgASgCBBBlIAAgAjYCDCAAIAM2AgggACAFNgIEIAAgBDYCAA8LAAtxAQF/IwBBEGsiAiQAIAIgACgCACgCACIAQQhqNgIMIAFBrv6ZAUEKQdD8mQFBBCAAQYACQc2HmgFBByAAQcAAakGyA0HUh5oBQQggAEGQAWpBswNB3IeaAUEHIAJBDGpBtAMQwAwhACACQRBqJAAgAAtyAQF/IwBBEGsiAiQAIAIgACgCACgCACIAQeAAajYCDCABQd2EmgFBB0HQ/JkBQQQgAEH4AGpBgAJB5ISaAUEFIABByABqQfYDQemEmgFBByAAQfcDQfCEmgFBCSACQQxqQfgDEMAMIQAgAkEQaiQAIAALaAEBfyMAQRBrIgIkAAJAAkAgACgCACIAKQMAUA0AIAIgADYCDCABQeeXmgFBEyACQQxqQZsEEOYLIQAMAQsgAiAAQQhqNgIIIAFB25eaAUEMIAJBCGpB2wIQ5gshAAsgAkEQaiQAIAALagEBfyMAQRBrIgIkAAJAAkAgACgCACgCACIALQAlQQJGDQAgAiAANgIMIAFBnJ6aAUEPIAJBDGpBhwQQ5gshAAwBCyACIAA2AgggAUGinJoBQQ0gAkEIakGIBBDmCyEACyACQRBqJAAgAAtxAQF/IwBBEGsiAiQAIAIgACgCACgCACIAQQhqNgIMIAFBrv6ZAUEKQdD8mQFBBCAAQYACQc2HmgFBByAAQcAAakGqBUHUh5oBQQggAEGQAWpBqwVB3IeaAUEHIAJBDGpBrAUQwAwhACACQRBqJAAgAAtyAQF/IwBBEGsiAiQAIAIgACgCACgCACIAQeAAajYCDCABQd2EmgFBB0HQ/JkBQQQgAEH4AGpBgAJB5ISaAUEFIABByABqQfwFQemEmgFBByAAQf0FQfCEmgFBCSACQQxqQeEFEMAMIQAgAkEQaiQAIAALaAEBfyMAQRBrIgIkAAJAAkAgACgCACIAKQMAUA0AIAIgADYCDCABQeeXmgFBEyACQQxqQZsEEOYLIQAMAQsgAiAAQQhqNgIIIAFB25eaAUEMIAJBCGpB1AUQ5gshAAsgAkEQaiQAIAALagEBfyMAQRBrIgIkAAJAAkAgACgCACgCACIALQAlQQJGDQAgAiAANgIMIAFBnJ6aAUEPIAJBDGpBjAYQ5gshAAwBCyACIAA2AgggAUGinJoBQQ0gAkEIakGNBhDmCyEACyACQRBqJAAgAAtkAQJ/IwBBEGsiAiQAAkACQCABKAIAQQlHDQAgAiABQQhqEO8NIAIoAgQhASACKAIAIQMMAQsgAkEIaiABEJIMIAIoAgwhASACKAIIIQMLIAAgAzYCACAAIAE2AgQgAkEQaiQAC2QBA38gACgCeCEBAkACQAJAIAAQ5AsiAkH/AXEiA0G1f2oiAEEfSw0AQQEgAHRBgYCCkHhxDQELQQAhACADQaQBRg0BIAJBtH9qQf8BcUHUAEsNAQsgAiABEP4NQQFzIQALIAALYAEBfyMAQRBrIgQkAAJAAkAgAA0AQQAhACAEQQxqIQMMAQsgBCACNgIMIAAgA2whACAEQQhqIQMLIAMgADYCAAJAIAQoAgwiAEUNACABIAAgBCgCCBDRIAsgBEEQaiQAC2MBAn8CQAJAIABBfGooAgAiA0F4cSIEQQRBCCADQQNxIgMbIAFqSQ0AAkAgA0UNACAEIAFBJ2pLDQILIAAQ6gQPC0GlmpgBQS5B1JqYARCMGgALQeSamAFBLkGUm5gBEIwaAAtoAQF/IwBBEGsiAiQAIAIgACgCACIAQSRqNgIMIAFB8MOYAUENQevDmAFBBSAAQTxqQR1BgPuZAUEHIABBHkHQ/JkBQQQgAEEMakEfQf3DmAFBCyACQQxqQSAQwAwhACACQRBqJAAgAAtpAQF/IwBBEGsiAiQAIAAoAgAhACACIAEoAgBBlPqEAUEHIAEoAgQoAgwRDAA6AAggAiABNgIEIAJBADoACSACQQA2AgAgAiAAKAIANgIMIAIgAkEMakEnEMMLEPIPIQEgAkEQaiQAIAELaAEBfyMAQRBrIgIkACACIAAoAgAiAEEsajYCDCABQZPugwFBCEGb7oMBQQggAEEYakEzQaPugwFBCSAAQTRBrO6DAUELIABBHGpBNUG86oMBQQsgAkEMakEqEMAMIQAgAkEQaiQAIAALaQEBfyMAQRBrIgIkACAAKAIAIQAgAiABKAIAQev4hAFBCSABKAIEKAIMEQwAOgAIIAIgATYCBCACQQA6AAkgAkEANgIAIAIgACgCADYCDCACIAJBDGpBJxDDCxDyDyEBIAJBEGokACABC2EBAX8CQAJAIAEgACgCPHZBfmoiASAAKAIUIgNPDQAgAiAAKAIQIAFBDGxqIgAoAggiAU8NASAAKAIEIAJBAnRqKAIADwsgASADQZTvgwEQwxIACyACIAFBpO+DARDDEgALYQECfyMAQRBrIgMkACADQQRqIAFBAUEEQQQQqw0gAygCCCEEAkAgAygCBEEBRw0AIAQgAygCDCACENggAAsgAygCDCECIAAgATYCCCAAIAI2AgQgACAENgIAIANBEGokAAtrAQJ/IAAoAgAgACgCBBDTIiAAKAIQIgEgACgCFBCDHCAAKAIMIAFBBEEMEMUSIAAoAhggACgCHBDTIgJAIAAoAigiAUUNACABIAEoAgAiAkF/ajYCACACQQFHDQAgACgCKCAAKAIsEOwQCwthAQF/AkACQCABIAAoAjx2QX5qIgEgACgCFCIDTw0AIAIgACgCECABQQxsaiIAKAIIIgFPDQEgACgCBCACQQJ0aigCAA8LIAEgA0GU74MBEMMSAAsgAiABQaTvgwEQwxIAC20AAkACQAJAAkACQCACDgMAAQIACyABKAKwAiICIAEoArQCRiEBDAMLIAEoArACIQIMAQsCQCADIAEoAtwCSQ0AQQIhAQwCCyABKALYAiADQQJ0aigCACECC0EBIQELIAAgAjYCBCAAIAE6AAALXwEBf0EAIQYCQCAEIANPDQACQCABLQAAIAIgBGotAAAiA0YNACABLQABQf8BcSADRg0AIAEtAAJB/wFxIANHDQELIAAgBDYCBEEBIQYgACAEQQFqNgIICyAAIAY2AgALawEBfyMAQRBrIgIkACACIAAoAgAiAEEIajYCDCABQZiolwFBCkHVq5cBQQMgAEEMakEnQdirlwFBAyAAQeUBQdurlwFBBiAAQRBqQcQAQZDqmQFBAyACQQxqQeYBEMAMIQAgAkEQaiQAIAALZwACQAJAAkACQCABQQFxRQ0AIAMoAgQiAQ0BQfiOhQEQySIACyACKAIAQYaAxABJDQIgAygCBCIBRQ0BIAMgAUF/ajYCBAwCCyADIAFBf2o2AgQMAQtB+I6FARDJIgALIABBIjYCAAtjAQF/IwBBEGsiAiQAIAJBCGogACgCAEEIakH0tZgBEKYcIAIoAgwhAAJAAkAgAigCCCABELAYIgENAEEAIQEMAQsgASgCCEEARyEBCyAAIAAoAgBBf2o2AgAgAkEQaiQAIAELYwEBfyMAQRBrIgIkACACQQhqIAAoAgRBCGpB5LaYARCmHCACKAIMIQACQAJAIAIoAgggARCwGCIBDQBBACEBDAELIAEoAghBAEchAQsgACAAKAIAQX9qNgIAIAJBEGokACABC2UCAn8BfgJAIAApAwAiA0IDg0IAUg0AIAOnIgEgASgCACICQX9qNgIAIAJBAUcNACABIAEoAhAQ6R0LAkAgACgCGCIARQ0AIAAoAgAiARDAAiABQeAAQQgQvRMgAEEMQQQQvRMLC2kBAX8jAEEQayICJAACQAJAIAFBDUkNACACQQhqIAEQ6BYgAigCDCEBIAAgAigCCDYCCCAAQQA2AgQgACABNgIADAELIABBCGpBACgC2M6YATYCACAAQQApAtDOmAE3AgALIAJBEGokAAtlAgJ/AX4CQCAAKQMAIgNCA4NCAFINACADpyIBIAEoAgAiAkF/ajYCACACQQFHDQAgASABKAIQEOkdCwJAIAAoAhgiAEUNACAAKAIAIgEQ1QMgAUHgAEEIEL0TIABBDEEEEL0TCwtsAQF/IwBBEGsiAiQAIAIgACgCACIAQQxqNgIMIAFBrJSaAUEIQdD8mQFBBCAAQRBqQYACQZCGmgFBBiAAQaoCQdiBmgFBCyAAQRhqQasCQcCDmgFBCCACQQxqQawCEMAMIQAgAkEQaiQAIAALbAEBfyMAQRBrIgIkACACIAAoAgAiAEEEajYCDCABQZySmgFBE0HQ/JkBQQQgAEEIakGAAkHippsBQQggAEEQakHRAkGsopoBQQggAEHOAkG0opoBQQogAkEMakGvAhDADCEAIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgBBIGo2AgwgAUHEkpoBQQ9B0PyZAUEEIABBGGpBgAJBpcybAUEHIABBJGpB0QJB2J6aAUEKIABB0wJBwIOaAUEIIAJBDGpB1AIQwAwhACACQRBqJAAgAAtnAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgANACACIABBBGo2AgwgAUGqj5oBQQQgAkEMakHhAhDmCyEADAELIAIgADYCCCABQaSPmgFBBiACQQhqQeICEOYLIQALIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUG6ipoBQQpB0PyZAUEEIABBgAJBgISaAUECIABBDGpBkwNBxIqaAUEGIABBDWpB0QJBvYOaAUEDIAJBDGpB6QIQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQQRqNgIMIAFB+YOaAUEHQdD8mQFBBCAAQQhqQYACQYCEmgFBAiAAQRBqQZQDQYKEmgFBBCAAQZUDQYaEmgFBBSACQQxqQekCEMAMIQAgAkEQaiQAIAALbAEBfyMAQRBrIgIkACACIAAoAgAiAEE4ajYCDCABQY6KmgFBCkHQ/JkBQQQgAEEwakGAAkGAhJoBQQIgAEE8akGWA0GChJoBQQQgAEGXA0GGhJoBQQUgAkEMakHpAhDADCEAIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgBBCGo2AgwgAUGJhZoBQQhB0PyZAUEEIABBDGpBgAJB3oOaAUEEIABBlQNB4oOaAUEEIABBBGpBlQNB5oOaAUEDIAJBDGpB6QIQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQRRqNgIMIAFB1dqbAUEFQdD8mQFBBCAAQQhqQYACQbCBmgFBBCAAQRBqQZsDQfmCmgFBAyAAQaADQfyCmgFBCCACQQxqQaEDEMAMIQAgAkEQaiQAIAALbAEBfyMAQRBrIgIkACACIAAoAgAiAEEcajYCDCABQbj+mQFBC0HQ/JkBQQQgAEEMakGAAkHNh5oBQQcgAEEUakG1A0HUh5oBQQggAEGzA0Hch5oBQQcgAkEMakG2AxDADCEAIAJBEGokACAAC2UBAX8jAEEQayICJAACQAJAIAAoAgBBBUYNACACIAA2AgwgAUGv/ZkBQQYgAkEMakHZAxDmCyEADAELIAIgAEEIajYCCCABQaj9mQFBByACQQhqQYwDEOYLIQALIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgBBEGo2AgwgAUHYg5oBQQZB0PyZAUEEIABBCGpBgAJB3oOaAUEEIABBlQNB4oOaAUEEIABBBGpB3gNB5oOaAUEDIAJBDGpB9AMQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQQxqNgIMIAFBiIiaAUEJQdD8mQFBBCAAQRBqQYACQYKEmgFBBCAAQfoDQYaEmgFBBSAAQQhqQZUDQb6BmgFBBCACQQxqQfADEMAMIQAgAkEQaiQAIAALZwEBfyMAQRBrIgIkAAJAAkAgACgCACIALQAlQQJGDQAgAiAANgIMIAFBnJ6aAUEPIAJBDGpBhwQQ5gshAAwBCyACIAA2AgggAUGinJoBQQ0gAkEIakGIBBDmCyEACyACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQQxqNgIMIAFBmJWaAUEJQdD8mQFBBCAAQQRqQYACQaGVmgFBAyAAQaIDQaSVmgFBCSAAQRBqQdECQbXMmwFBBCACQQxqQZgEEMAMIQAgAkEQaiQAIAALZwEBfyMAQRBrIgIkAAJAAkAgACgCACIALQAUQQJGDQAgAiAANgIMIAFB1dqbAUEFIAJBDGpB4wIQ5gshAAwBCyACIAA2AgggAUGXmpoBQQ8gAkEIakGcBBDmCyEACyACQRBqJAAgAAtuAQF/IwBBEGsiAiQAIAIgACgCACIAQcgAajYCDCABQfCimgFBFEHQ/JkBQQQgAEHAAGpBgAJBhKOaAUEEIABBowRBiKOaAUEIIABBIGpBpARB8aGaAUEMIAJBDGpBoQMQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQRhqNgIMIAFBvJyaAUETQdD8mQFBBCAAQQxqQYACQZCGmgFBBiAAQaoCQcCDmgFBCCAAQRRqQdYDQdiBmgFBCyACQQxqQbEEEMAMIQAgAkEQaiQAIAALbAEBfyMAQRBrIgIkACACIAAoAgAiAEEYajYCDCABQc+cmgFBGEHQ/JkBQQQgAEEMakGAAkGQhpoBQQYgAEGqAkHAg5oBQQggAEEUakHWA0HYgZoBQQsgAkEMakGxBBDADCEAIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgBBDGo2AgwgAUH6nJoBQRFB0PyZAUEEIABBBGpBgAJB3IiaAUEDIABBlQNBsZ+aAUEIIABBEGpB0QJBwIOaAUEIIAJBDGpB1AIQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIANgIMIAFBi52aAUERQdD8mQFBBCAAQShqQYACQdyImgFBAyAAQTBqQZUDQbGfmgFBCCAAQTRqQdECQYWLmgFBBSACQQxqQa0CEMAMIQAgAkEQaiQAIAALbAEBfyMAQRBrIgIkACACIAAoAgAiAEEUajYCDCABQbOEmgFBCEHQ/JkBQQQgAEEMakGAAkG7hJoBQQUgAEG3BEH8gpoBQQggAEEYakHRAkHAg5oBQQggAkEMakHUAhDADCEAIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgBBFGo2AgwgAUGsg5oBQQdB0PyZAUEEIABBBGpBgAJBs4OaAUEKIABBDGpBgAJBvYOaAUEDIABBuARBwIOaAUEIIAJBDGpB1AIQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQRRqNgIMIAFBr4WaAUEJQdD8mQFBBCAAQQxqQYACQbiFmgFBBSAAQbkEQfyCmgFBCCAAQRhqQdECQcCDmgFBCCACQQxqQdQCEMAMIQAgAkEQaiQAIAALbAEBfyMAQRBrIgIkACACIAAoAgAiAEE0ajYCDCABQcCTmgFBDUHQ/JkBQQQgAEEoakGAAkGLg5oBQQQgAEHDBEHThJoBQQQgAEEwakGtA0GLiZoBQQggAkEMakGhAxDADCEAIAJBEGokACAAC2cBAX8jAEEQayICJAACQAJAIAAoAgAiAC0AFEECRw0AIAIgADYCDCABQenamwFBBiACQQxqQcAEEOYLIQAMAQsgAiAANgIIIAFB1dqbAUEFIAJBCGpBswQQ5gshAAsgAkEQaiQAIAALbAEBfyMAQRBrIgIkACACIAAoAgAiADYCDCABQaaKmgFBCkHQ/JkBQQQgAEEIakGAAkGwipoBQQQgAEEYakHRAkG0ipoBQQYgAEEQakHOBEGF/ZkBQQMgAkEMakG3AxDADCEAIAJBEGokACAAC2UBAX8jAEEQayICJAACQAJAIAAoAgBBC0cNACACIABBBGo2AgwgAUHJhJoBQQMgAkEMakHUBBDmCyEADAELIAIgADYCCCABQfCOmgFBBiACQQhqQdUEEOYLIQALIAJBEGokACAAC20BAX8jAEEQayICJAAgAiAAKAIAIgBBIGo2AgwgAUHdipoBQQpB0PyZAUEEIABBOGpBgAJB3IiaAUEDIABBvQRBwIOaAUEIIABBwABqQdYDQb6BmgFBBCACQQxqQfgDEMAMIQAgAkEQaiQAIAALZAEBfwJAIAEtAAANACAAKAIMIAEQmAELAkAgACgCCCICRQ0AIAEtAAANACACQQR0IQIgACgCBEEMaiEAA0ACQCABLQAADQAgACgCACABEJgBCyAAQRBqIQAgAkFwaiICDQALCwtsAQF/IwBBEGsiAiQAIAIgACgCACIAQRRqNgIMIAFBs4SaAUEIQdD8mQFBBCAAQQxqQYACQbuEmgFBBSAAQfcEQfyCmgFBCCAAQRhqQdECQcCDmgFBCCACQQxqQfYEEMAMIQAgAkEQaiQAIAALbAEBfyMAQRBrIgIkACACIAAoAgAiAEEUajYCDCABQayDmgFBB0HQ/JkBQQQgAEEEakGAAkGzg5oBQQogAEEMakGAAkG9g5oBQQMgAEH4BEHAg5oBQQggAkEMakH2BBDADCEAIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgBBFGo2AgwgAUGvhZoBQQlB0PyZAUEEIABBDGpBgAJBuIWaAUEFIABB+QRB/IKaAUEIIABBGGpB0QJBwIOaAUEIIAJBDGpB9gQQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFBuoqaAUEKQdD8mQFBBCAAQYACQYCEmgFBAiAAQQxqQZMDQcSKmgFBBiAAQQ1qQdECQb2DmgFBAyACQQxqQfUEEMAMIQAgAkEQaiQAIAALbAEBfyMAQRBrIgIkACACIAAoAgAiAEEEajYCDCABQfmDmgFBB0HQ/JkBQQQgAEEIakGAAkGAhJoBQQIgAEEQakGUA0GChJoBQQQgAEGbBUGGhJoBQQUgAkEMakH1BBDADCEAIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgBBOGo2AgwgAUGOipoBQQpB0PyZAUEEIABBMGpBgAJBgISaAUECIABBPGpBlgNBgoSaAUEEIABBnAVBhoSaAUEFIAJBDGpB9QQQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQQhqNgIMIAFBiYWaAUEIQdD8mQFBBCAAQQxqQYACQd6DmgFBBCAAQZsFQeKDmgFBBCAAQQRqQZsFQeaDmgFBAyACQQxqQfUEEMAMIQAgAkEQaiQAIAALbAEBfyMAQRBrIgIkACACIAAoAgAiAEEcajYCDCABQbj+mQFBC0HQ/JkBQQQgAEEMakGAAkHNh5oBQQcgAEEUakG1A0HUh5oBQQggAEGrBUHch5oBQQcgAkEMakG2AxDADCEAIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgBBBGo2AgwgAUGckpoBQRNB0PyZAUEEIABBCGpBgAJB4qabAUEIIABBEGpB0QJBrKKaAUEIIABBzwVBtKKaAUEKIAJBDGpBrQUQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQSBqNgIMIAFBxJKaAUEPQdD8mQFBBCAAQRhqQYACQaXMmwFBByAAQSRqQdECQdiemgFBCiAAQdMCQcCDmgFBCCACQQxqQfYEEMAMIQAgAkEQaiQAIAALZwEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIADQAgAiAAQQRqNgIMIAFBqo+aAUEEIAJBDGpB2AUQ5gshAAwBCyACIAA2AgggAUGkj5oBQQYgAkEIakHZBRDmCyEACyACQRBqJAAgAAttAQF/IwBBEGsiAiQAIAIgACgCACIAQSBqNgIMIAFB3YqaAUEKQdD8mQFBBCAAQThqQYACQdyImgFBAyAAQd8FQcCDmgFBCCAAQcAAakHgBUG+gZoBQQQgAkEMakHhBRDADCEAIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgBBEGo2AgwgAUHYg5oBQQZB0PyZAUEEIABBCGpBgAJB3oOaAUEEIABBmwVB4oOaAUEEIABBBGpB6QVB5oOaAUEDIAJBDGpB+gUQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQQxqNgIMIAFBiIiaAUEJQdD8mQFBBCAAQRBqQYACQYKEmgFBBCAAQf8FQYaEmgFBBSAAQQhqQZsFQb6BmgFBBCACQQxqQfgFEMAMIQAgAkEQaiQAIAALZwEBfyMAQRBrIgIkAAJAAkAgACgCACIALQAlQQJGDQAgAiAANgIMIAFBnJ6aAUEPIAJBDGpBjAYQ5gshAAwBCyACIAA2AgggAUGinJoBQQ0gAkEIakGNBhDmCyEACyACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQQxqNgIMIAFBmJWaAUEJQdD8mQFBBCAAQQRqQYACQaGVmgFBAyAAQaIDQaSVmgFBCSAAQRBqQdECQbXMmwFBBCACQQxqQZoGEMAMIQAgAkEQaiQAIAALZwEBfyMAQRBrIgIkAAJAAkAgACgCACIALQAUQQJGDQAgAiAANgIMIAFB1dqbAUEFIAJBDGpB4wIQ5gshAAwBCyACIAA2AgggAUGXmpoBQQ8gAkEIakGdBhDmCyEACyACQRBqJAAgAAttAQF/IwBBEGsiAiQAIAIgACgCACIAQcAAajYCDCABQZCjmgFBFEHQ/JkBQQQgAEE4akGAAkGko5oBQQUgAEEgakHyA0Gpo5oBQQggAEGkBEHxoZoBQQwgAkEMakGhAxDADCEAIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgBBGGo2AgwgAUG8nJoBQRNB0PyZAUEEIABBDGpBgAJBkIaaAUEGIABBpwZBwIOaAUEIIABBFGpB4AVB2IGaAUELIAJBDGpBqAYQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQRhqNgIMIAFBz5yaAUEYQdD8mQFBBCAAQQxqQYACQZCGmgFBBiAAQacGQcCDmgFBCCAAQRRqQeAFQdiBmgFBCyACQQxqQagGEMAMIQAgAkEQaiQAIAALbAEBfyMAQRBrIgIkACACIAAoAgAiAEEMajYCDCABQfqcmgFBEUHQ/JkBQQQgAEEEakGAAkHciJoBQQMgAEGbBUGxn5oBQQggAEEQakHRAkHAg5oBQQggAkEMakH2BBDADCEAIAJBEGokACAAC2wBAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgAUGLnZoBQRFB0PyZAUEEIABBKGpBgAJB3IiaAUEDIABBMGpBmwVBsZ+aAUEIIABBNGpB0QJBhYuaAUEFIAJBDGpBqQYQwAwhACACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQTRqNgIMIAFBwJOaAUENQdD8mQFBBCAAQShqQYACQYuDmgFBBCAAQe8EQdOEmgFBBCAAQTBqQagFQYuJmgFBCCACQQxqQaEDEMAMIQAgAkEQaiQAIAALZQEBfyMAQRBrIgIkAAJAAkAgACgCAEEFRg0AIAIgADYCDCABQa/9mQFBBiACQQxqQbUGEOYLIQAMAQsgAiAAQQhqNgIIIAFBqP2ZAUEHIAJBCGpBjAMQ5gshAAsgAkEQaiQAIAALZwEBfyMAQRBrIgIkAAJAAkAgACgCACIALQAUQQJHDQAgAiAANgIMIAFB6dqbAUEGIAJBDGpB9AQQ5gshAAwBCyACIAA2AgggAUHV2psBQQUgAkEIakHwBBDmCyEACyACQRBqJAAgAAtsAQF/IwBBEGsiAiQAIAIgACgCACIAQQxqNgIMIAFBrJSaAUEIQdD8mQFBBCAAQRBqQYACQZCGmgFBBiAAQacGQdiBmgFBCyAAQRhqQYkGQcCDmgFBCCACQQxqQeQFEMAMIQAgAkEQaiQAIAALZQEBfyMAQRBrIgIkAAJAAkAgACgCAEELRw0AIAIgAEEEajYCDCABQcmEmgFBAyACQQxqQdQGEOYLIQAMAQsgAiAANgIIIAFB8I6aAUEGIAJBCGpB1QYQ5gshAAsgAkEQaiQAIAALZQICfwF+AkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDpHQsCQCAAKAIYIgBFDQAgACgCACIBENgDIAFB4ABBCBC9EyAAQQxBBBC9EwsLZwECfyMAQRBrIgEkAEEAIQIgAUEANgIIIAFBgQI7AQwCQAJAAkACQCAAKAIAQWZqDgMDAAECCyAAKAIIQQVGDQIMAQsgACgCDA0BCyAAIAFBCGoQ5wEgAS0ADCECCyABQRBqJAAgAgtZAQJ/IwBBEGsiAiQAIAFBEEEIIAEoAgBBAkkbaigCACEDIAJBCGogASgCIBDSAyAAIAMgAigCDCIBIAMgAUkbNgIAIAAgAyABIAMgAUsbNgIEIAJBEGokAAtZAQJ/IwBBEGsiAiQAIAFBEEEIIAEoAgBBAkkbaigCACEDIAJBCGogASgCIBCrDiAAIAMgAigCDCIBIAMgAUkbNgIAIAAgAyABIAMgAUsbNgIEIAJBEGokAAtkAQF/IwBBMGsiAiQAIAIgADYCDCACQQE2AhQgAkGU85sBNgIQIAJCATcCHCACQRI2AiwgAiACQShqNgIYIAIgAkEMajYCKCABKAIAIAEoAgQgAkEQahDlICEBIAJBMGokACABC2EBAX8jAEEwayICJAAgAiABNgIMIAIgADYCCCACQQI2AhQgAkHcgYABNgIQIAJCATcCHCACQQk2AiwgAiACQShqNgIYIAIgAkEIajYCKCACQRBqEPEaIQEgAkEwaiQAIAELagECfyMAQSBrIgEkACAALQAAIQIgAEEBOgAAIAEgAjoABwJAIAJBAUcNACABQgA3AhQgAUKBgICAwAA3AgwgAUGQspgBNgIIIAFBB2pBodqYASABQQhqQfSymAEQwBsACyABQSBqJAAgAAtlAQF/IwBBEGsiASQAAkACQAJAQQAoAuj1nQFB/////wdxRQ0AELMkRQ0BCyAAKAIELQBMQQdHDQELIAFBEGokAA8LIAFBBGogACgCAEEAQeK4mAFBIRD7DSABQQRqEMYCELUkAAtlAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAtAABBAUcNACACIABBAWo2AgwgAUHs3psBQQQgAkEMakEmEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQtmAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBAUcNACACIABBBGo2AgwgAUHs3psBQQQgAkEMakHUABDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELaQEBfwJAAkACQCACKAIERQ0AAkAgAigCCCIDDQBBAC0A4PadARoMAgsgAigCACADQQEgARDvAyECDAILQQAtAOD2nQEaCyABEIQBIQILIAAgATYCCCAAIAJBASACGzYCBCAAIAJFNgIAC2EBAn8gACgCCCECAkACQCABQYABTw0AQQEhAwwBCwJAIAFBgBBPDQBBAiEDDAELQQNBBCABQYCABEkbIQMLIAAgAxDJHiABIAAoAgQgACgCCGoQnA0gACADIAJqNgIIQQALZQEBfyMAQRBrIgIkAAJAAkAgACgCACIALQAAQQFHDQAgAiAAQQFqNgIMIAFB7N6bAUEEIAJBDGpBJhDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYQEEfyMAQRBrIgMkACADQQhqIAJBBEEEQbjkmwEQqBUgAygCCCEEIAMoAgwhBQJAIAJBAnQiBkUNACAFIAEgBvwKAAALIAAgAjYCCCAAIAU2AgQgACAENgIAIANBEGokAAtcAQJ/AkAgAEEQaigCACIBRQ0AIABBFGooAgAhAiABQQA6AAAgAkUNACABIAJBARC9EwsCQCAAQX9GDQAgACAAKAIEIgFBf2o2AgQgAUEBRw0AIABBGEEIEL0TCwtiAQN/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQCADKAIAIANBBGooAgBBBEEYENASIANBDGohAyACQX9qIgINAAsLIAAoAgAgAUEEQQwQ0BIgACgCDCAAKAIQQQRBGBDQEgtkAQF/QQAtAOD2nQEaAkBBNBCEASIADQAACyAAQgA3AhQgAEEBNgIQIABCATcCCCAAQgE3AgAgAEEAOgAyIABBATsBMCAAQRxqQgA3AgAgAEEkakIANwIAIABBLGpBADYCACAAC2kBAX9BAC0A4PadARoCQEE0EIQBIgENAAALIAFBADoAMiABQQE7ATAgAUEANgIsIAEgADYCKCABIAA2AiQgASAANgIgIAEgADYCHCABIAA2AhggAUIBNwIQIAFCATcCCCABQgE3AgAgAQtlAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBAUcNACACIABBBGo2AgwgAUHs3psBQQQgAkEMakEqEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQtmAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAtAABBAUcNACACIABBAWo2AgwgAUHs3psBQQQgAkEMakGeARDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELZgEBfyMAQRBrIgIkAAJAAkAgACgCACIALQAAQQFHDQAgAiAAQQFqNgIMIAFB7N6bAUEEIAJBDGpBowEQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC2QBAX8gAUEwaiIDEJMaIAFBOGogAkEIaikCADcCACABIAIpAgA3AjACQCABLQBcQQJHDQAgAUHMhYQBIAMgAS0APEEDRhstAAxBAkc6AFwLAkBB4ABFDQAgACABQeAA/AoAAAsLaQECfwJAAkACQAJAAkBBACAAKAIAIgFBeWoiAiACIAFLGw4EAAECAwQLIAAQoyAPCyAAKAIEIAAoAghBAUEBENASDwsgACgCBCAAKAIIQQRBCBDQEg8LIAAoAgQgACgCCEEBQQIQ0BILC2kBAX8CQAJAAkAgAigCBEUNAAJAIAIoAggiAw0AQQAtAOD2nQEaDAILIAIoAgAgA0EBIAEQ7wMhAgwCC0EALQDg9p0BGgsgARCEASECCyAAIAE2AgggACACQQEgAhs2AgQgACACRTYCAAthAQR/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQCADEMgHAkAgA0EwaigCACIERQ0AIAQQlgEgBEHAAEEIEL0TCyADQThqIQMgAkF/aiICDQALCyAAKAIAIAFBCEE4EL8SC2EBBH8gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIAMQyAcCQCADQTBqKAIAIgRFDQAgBBCWASAEQcAAQQgQvRMLIANBOGohAyACQX9qIgINAAsLIAAoAgAgAUEIQTgQvxILYwECfwJAIAAoAggiAUUNACAAKAIEIQADQAJAAkAgACgCACICRQ0AIAIQlgEgAkHAAEEIEL0TDAELIABBBGooAgAiAhC/BCACQfAAQQgQvRMLIABBDGohACABQX9qIgENAAsLC2MBAX8jAEEQayICJAACQAJAIAApAwBQDQAgAiAANgIMIAFBlf6ZAUERIAJBDGpBggMQ5gshAAwBCyACIABBCGo2AgggAUHV2psBQQUgAkEIakGwAxDmCyEACyACQRBqJAAgAAtiAAJAAkACQAJAAkACQAJAIAAoAgAOBgECAwQFBgALIABBBGoQmiEPCyAAQQhqEOEhDwsgAEEEahCmIg8LIABBBGoQqCIPCyAAQQRqEKciDwsgAEEEahCfISAAQQhqEJohCwtiAQJ/IwBBEGsiAiQAAkACQCABKAIAQQVHDQAgAkEIaiABKAIEIAEoAggQwxkgAigCDCEDIAIoAgghAQwBCyABKAIsIQMgASgCKCEBCyAAIAE2AgAgACADNgIEIAJBEGokAAthAQV/IAEoAighAiABKAIMIQMgASgCCCEEIAEoAiwiBSEGA0ACQCAGDQACQCABKAI4RQ0AIAEgASgCNCADIAVsajYCNAsgAEEEOgAADwsgAiAEIAMQrgkgBkF/aiEGDAALC2IBAn8jAEEQayIEJAAgBEEANgIMIAQgASAEQQxqEMAXIAQoAgQhBSAAIAM2AhAgAEEANgIMIAAgAzYCCCAAIAI2AgQgACAFOgAYIAAgATYCACAAIAQoAgw2AhQgBEEQaiQAC2MBAn8jAEEQayICJAAgAkEIaiABEAYCQAJAIAIoAggiAQ0AQYCAgIB4IQEMAQsgAiABIAIoAgwQ7iEgAigCACEDIAAgAigCBCIBNgIIIAAgAzYCBAsgACABNgIAIAJBEGokAAtZAQF/IwBBIGsiAiQAIAJBADYCECACQQhqIAEgAkEQahDAFyACQRRqIAIoAgggAigCDBD5FCAAQQhqIAJBFGpBCGooAgA2AgAgACACKQIUNwIAIAJBIGokAAtfAQJ/IAAoAgghAgJAAkAgAUGAAU8NAEEBIQMMAQsCQCABQYAQTw0AQQIhAwwBC0EDQQQgAUGAgARJGyEDCyAAIAMQjh4gASAAKAIEIAAoAghqEJwNIAAgAyACajYCCAtaAQF/IwBBMGsiAyQAIAMgATYCDCADIAA2AgggA0EBNgIUIANBlPObATYCECADQgE3AhwgA0EQrUIghiADQQhqrYQ3AyggAyADQShqNgIYIANBEGogAhCoHQALZQEBfwJAAkAgAkF/TA0AAkACQCACDQBBASEDDAELQQAtAOD2nQEaIAIQhAEiA0UNAgsCQCACRQ0AIAMgASAC/AoAAAsgACACNgIIIAAgAzYCBCAAIAI2AgAPC0GUyYABEIEcCwALXQEBfyMAQSBrIgIkACACQQA6ABggAiABNgIUIAIgADYCECACQQE2AgwgAiACQQxqNgIcIAJBHGpBmIWAARATIQECQCACKAIMRQ0AIAJBEGoQ1R8LIAJBIGokACABC2MBAX8jAEEQayICJAAgAiAAQRRqNgIMIAFBvO6DAUEJQZvugwFBCCAAQQxqQTNBpfCDAUEHIABBOUGs8IMBQQggAEEQakEpQbTwgwFBCSACQQxqQSoQwAwhACACQRBqJAAgAAtaAQJ/AkAgACgCDCIDIAAoAgAiBEcNACAAIAIQ3g0gACgCACEEIAAoAgwhAwsgACADQQFqNgIMIAAoAgQgACgCCCADaiIAQQAgBCAAIARJG2tBAnRqIAE2AgALaQEBfyMAQRBrIgIkACACIABBggJqNgIMIAFBjcWAAUEOQYHFgAFBByAAQdAAQfDEgAFBBSAAQYACakHGAEGIxYABQQUgAEGBAmpBxgBBm8WAAUEFIAJBDGpBJhDADCEAIAJBEGokACAAC2MBAX8CQCAAKAIIIgIgAUH/AXEiAU0NAAJAIAAoAgQgAWoiAi0AAA0AIAJBAToAACAAIAAoAgxBAWo2AgwgACAALwEQIAFB/KuFAWotAABqOwEQCw8LIAEgAkGgwoABEMMSAAtcAQR/AkAgASAAKAIIIgIoAgAgACgCECIDIAAoAgwiBGoiBWtNDQAgAiAFIAEQ/goLIAQgAWohAQJAIANFDQAgAigCBCICIAFqIAIgBGogA/wKAAALIAAgATYCDAtXAQF/IwBBEGsiBSQAAkACQCACIARPDQAgBUEEaiADIAQQlRQgACAFQQRqIAEgAhCWDAwBCyAFQQRqIAEgAhCVFCAAIAVBBGogAyAEEJYMCyAFQRBqJAALYgEBfyMAQRBrIgIkAAJAAkAgACgCAEEBcUUNACACIABBEGo2AgwgAUHs3psBQQQgAkEMakGKARDmCyEADAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAAsgAkEQaiQAIAALXQECf0EBIQMCQCACRQ0AAkACQAJAIAJBf2oiBCABTw0AIAAgBGotAABBdmoOBAMBAQIBCyAEIAFBpNKEARDDEgALQQAPCyACIAFPDQAgACACai0AAEEKRyEDCyADC1wBAn8jAEEgayIEJAAgBEEAOgAcIARBADYCGCAEQQA2AgwgBCAAQeACajYCFAJAA0AgBEEMahDACiIFQf8BcUECRg0BIAAgASACIAUgAxDNCQwACwsgBEEgaiQAC2MBAX8jAEEQayICJAAgAiAAQSxqNgIMIAFBk+6DAUEIQZvugwFBCCAAQRhqQTNBo+6DAUEJIABBNEGs7oMBQQsgAEEcakE1QbzqgwFBCyACQQxqQSoQwAwhACACQRBqJAAgAAtkAQJ/IwBBEGsiASQAAkAgACgCBEUNAAJAIAAoAgAiAi0AAA0AIAJBAToAACAAIAAoAghBAWo2AggLIAFBEGokAA8LIAFCADcCCEG04oQBQSogAUEIakGI6IMBQeDihAEQ6hAAC2UBAX8CQAJAIAJBf0wNAAJAAkAgAg0AQQEhAwwBC0EALQDg9p0BGiACEIQBIgNFDQILAkAgAkUNACADIAEgAvwKAAALIAAgAjYCCCAAIAM2AgQgACACNgIADwtBuOSbARCBHAsAC2UBAX8CQAJAIAJBf0wNAAJAAkAgAg0AQQEhAwwBC0EALQDg9p0BGiACEIQBIgNFDQILAkAgAkUNACADIAEgAvwKAAALIAAgAjYCCCAAIAM2AgQgACACNgIADwtBuOSbARCBHAsAC2ABAn8jAEEQayICJAACQAJAIAEtAABBA0YNAEEAIQEMAQsgAkEIaiABKAIEIgEoAgAgASgCBCgCGBEHACACKAIMIQMgAigCCCEBCyAAIAM2AgQgACABNgIAIAJBEGokAAtgAQJ/IwBBEGsiAiQAAkACQCABLQAAQQNGDQBBACEBDAELIAJBCGogASgCBCIBKAIAIAEoAgQoAiQRBwAgAigCDCEDIAIoAgghAQsgACADNgIEIAAgATYCACACQRBqJAALXAEBfwJAIAAoAggiAyAAKAIARw0AIAAgAhCvGAsgACADQQFqNgIIIAAoAgQgA0EYbGoiACABKQMANwMAIABBCGogAUEIaikDADcDACAAQRBqIAFBEGopAwA3AwALYgEBfyMAQRBrIgIkAAJAAkAgAC0AFEECRg0AIAIgADYCDCABQdXamwFBBSACQQxqQeMCEOYLIQAMAQsgAiAANgIIIAFBmYWaAUENIAJBCGpBygMQ5gshAAsgAkEQaiQAIAALZwEBfyMAQRBrIgIkACACIABBFGo2AgwgAUHV2psBQQVB0PyZAUEEIABBCGpBgAJBsIGaAUEEIABBEGpBmwNB+YKaAUEDIABBoANB/IKaAUEIIAJBDGpBoQMQwAwhACACQRBqJAAgAAtiAQF/IwBBEGsiAiQAAkACQCAALQAUQQJGDQAgAiAANgIMIAFB1dqbAUEFIAJBDGpB4wIQ5gshAAwBCyACIAA2AgggAUGXmpoBQQ8gAkEIakGcBBDmCyEACyACQRBqJAAgAAtiAQF/IwBBEGsiAiQAAkACQCAALQAUQQJGDQAgAiAANgIMIAFB1dqbAUEFIAJBDGpB4wIQ5gshAAwBCyACIAA2AgggAUHckJoBQQogAkEIakGxAhDmCyEACyACQRBqJAAgAAtiAQF/IwBBEGsiAiQAAkACQCAALQA0QQRGDQAgAiAANgIMIAFB14KaAUEGIAJBDGpBwwIQ5gshAAwBCyACIAA2AgggAUHbl5oBQQwgAkEIakHbAhDmCyEACyACQRBqJAAgAAtaAQJ/IwBBEGsiAiQAAkACQCAAKAIAIgNBAWpBfnEgA0YNACACQQhqIAAQ5hsgAigCDCEAIAIoAgghAwwBCyAAKAIIIQALIAEgAyAAEJwGIQMgAkEQaiQAIAMLXAEDfwJAIAAoAgwiASAAKAIEIgJGDQAgASACa0ECdiEBA0AgAigCACIDQQhqEK4DIANBIEEIEL0TIAJBBGohAiABQX9qIgENAAsLIAAoAgggACgCAEEEQQQQvxILXQEDfwJAIAAoAgwiASAAKAIEIgJGDQAgASACa0EEdiEBIAJBDGohAgNAIAIoAgAiAxCtASADQcAAQQgQvRMgAkEQaiECIAFBf2oiAQ0ACwsgACgCCCAAKAIAEPgiC2IBAX8jAEEQayICJAACQAJAIAAtABRBAkYNACACIAA2AgwgAUHV2psBQQUgAkEMakHjAhDmCyEADAELIAIgADYCCCABQZeamgFBDyACQQhqQZ0GEOYLIQALIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtADRBBEYNACACIAA2AgwgAUHXgpoBQQYgAkEMakHFBRDmCyEADAELIAIgADYCCCABQduXmgFBDCACQQhqQdQFEOYLIQALIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtABRBAkYNACACIAA2AgwgAUHV2psBQQUgAkEMakHjAhDmCyEADAELIAIgADYCCCABQZmFmgFBDSACQQhqQdAGEOYLIQALIAJBEGokACAAC10BA38gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIANBDGogA0EEaigCACADQQhqKAIAIAMoAgAoAhARCwAgA0EQaiEDIAJBf2oiAg0ACwsgACgCACABQQRBEBC/EgtmAQJ/AkAgACgCHCIDIAAoAiAiBCACQX9qEOUQIgIgBEF/akYNACADIAQgAkEBakG865sBELweIgQtAAlFDQACQAJAIAQtAAgiBA4FAQICAgEACyAEQcUARw0BCyAAIAFBOxCiGgsLXQEDfyAAKAIEIQECQCAAKAIIIgJFDQAgASEDA0AgA0EMaiADQQRqKAIAIANBCGooAgAgAygCACgCEBELACADQRBqIQMgAkF/aiICDQALCyAAKAIAIAFBBEEQEL8SC18BAn8gACgCGCIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAIYEJETCyAAEI0aAkAgACgCHCIBRQ0AIAEgASgCACICQX9qNgIAIAJBAUcNACAAKAIcIAAoAiAQ7BALC10BAX9BASEDAkACQCABQf8BcUEBRg0AIAFBASACKAIIGyEDDAELIAJBADYCCCACQQRBBBDjGSACEKYJCyAAIAM6AAwgACACKQIANwIAIABBCGogAkEIaigCADYCAAtjAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBAkYNACACIAA2AgwgAUHs3psBQQQgAkEMakGJARDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYAEBfyMAQRBrIgIkAAJAAkAgACgCAEEBRw0AIAIgAEEEajYCDCABQezemwFBBCACQQxqQSoQ5gshAAwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQALIAJBEGokACAAC2MBAX8jAEEQayICJAACQAJAIAAoAgAiAC0ADEECRg0AIAIgADYCDCABQezemwFBBCACQQxqQY0BEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQtjAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAtAAxBA0YNACACIAA2AgwgAUHs3psBQQQgAkEMakGMARDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYwEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQNGDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpBkwEQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC2IBAX8jAEEQayICJAAgAiABKAIAQev4hAFBCSABKAIEKAIMEQwAOgAIIAIgATYCBCACQQA6AAkgAkEANgIAIAIgACgCADYCDCACIAJBDGpBJxDDCxDyDyEBIAJBEGokACABC2IBAX8jAEEQayICJAAgAiABKAIAQZT6hAFBByABKAIEKAIMEQwAOgAIIAIgATYCBCACQQA6AAkgAkEANgIAIAIgACgCADYCDCACIAJBDGpBJxDDCxDyDyEBIAJBEGokACABC2MBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEECRg0AIAIgADYCDCABQezemwFBBCACQQxqQakBEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQtlAQF/IwBBEGsiAiQAIAIgACgCACgCACIAQdgAajYCDCABQd/vhAFBCkHA64QBQQYgAEEIakGuAUG4hZoBQQUgAEHMAGpBrwFB6e+EAUELIAJBDGpBsAEQ+QwhACACQRBqJAAgAAthAQF/IwBBEGsiAiQAAkACQCAAKAIAQQFHDQAgAiAAQQRqNgIMIAFB7N6bAUEEIAJBDGpB6QEQ5gshAAwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQALIAJBEGokACAAC2MBAX8jAEEQayICJAACQAJAIAAoAgAiAC0AAEECRg0AIAIgADYCDCABQezemwFBBCACQQxqQYsBEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQtnAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBgICAgHhGDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpBhQIQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC14BAX8jAEEgayIDJAAgA0EIaiAAKAIAQQhqQcS1mAEQpx0gAygCDCEAIANBEGogAygCCCABEI0KIANBEGoQqg4gAkHUtZgBEL0UIAAgACgCAEEBajYCACADQSBqJAALXgEBfyMAQSBrIgMkACADQQhqIAAoAgRBCGpBtLaYARCnHSADKAIMIQAgA0EQaiADKAIIIAEQjQogA0EQahCqDiACQcS2mAEQvRQgACAAKAIAQQFqNgIAIANBIGokAAtbAQF/AkAgACgCFCIEIAAoAgxHDQAgAEEMahCuGAsgACAEQQFqNgIUIAAoAhAgBEEUbGoiACADKQIANwIAIAAgAjYCECAAIAE2AgwgAEEIaiADQQhqKAIANgIAC2MBBH9BAC0A4PadARoCQEEMEIQBIgFFDQBBAC0A4PadARogACgCACIAKAIIIQIgACgCBCEDQeAAEIQBIgRFDQAgBCAAKAIAEGUgASACNgIIIAEgAzYCBCABIAQ2AgAgAQ8LAAtbAAJAIAAtAHhBAXFFDQAgAxCuAw8LIAEgAiADEIQXIQICQCAAKAJIIgMgACgCQEcNACAAQcAAakG4xpkBELUYCyAAIANBAWo2AkggACgCRCADQQJ0aiACNgIAC2EBAX8jAEEQayICJAACQAJAIAAoAgBBAUcNACACIABBBGo2AgwgAUHs3psBQQQgAkEMakGGAhDmCyEADAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAAsgAkEQaiQAIAALYwEBfyMAQRBrIgIkAAJAAkAgACgCACIALQA0QQZGDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpBwwMQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC2MBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEEERg0AIAIgADYCDCABQezemwFBBCACQQxqQckDEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQtjAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAtACVBA0YNACACIAA2AgwgAUHs3psBQQQgAkEMakGGBBDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYwEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQdGDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpBuAQQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC2cBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEGAgICAeEYNACACIAA2AgwgAUHs3psBQQQgAkEMakHXAxDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYwEBfyMAQRBrIgIkAAJAAkAgACgCACIALQAUQQJGDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpB4wIQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC2MBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEECRg0AIAIgADYCDCABQezemwFBBCACQQxqQboDEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQtVAQJ/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgAiABNgIMAkAgA0UNACADQShsIQMDQCACQQxqIAAQ5wUgAEEoaiEAIANBWGoiAw0ACwsgAkEQaiQAC1UBAn8jAEEQayICJAAgACgCCCEDIAAoAgQhACACIAE2AgwCQCADRQ0AIANBKGwhAwNAIAJBDGogABDoByAAQShqIQAgA0FYaiIDDQALCyACQRBqJAALWwEDfwJAIAAoAggiAkUNACAAKAIEIQAgAkEwbCECIAEtACUhAyABLQAkIQQDQCABQQM6ACQgACABEHQgASADOgAlIAEgBDoAJCAAQTBqIQAgAkFQaiICDQALCwtjAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAtACVBA0YNACACIAA2AgwgAUHs3psBQQQgAkEMakGLBhDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELZwEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQYCAgIB4Rg0AIAIgADYCDCABQezemwFBBCACQQxqQecFEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQtjAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAtADRBBkYNACACIAA2AgwgAUHs3psBQQQgAkEMakHKBhDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYwEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQRGDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpBzwYQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC2MBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEECRg0AIAIgADYCDCABQezemwFBBCACQQxqQbEFEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQtjAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBB0YNACACIAA2AgwgAUHs3psBQQQgAkEMakH4BBDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELVQECfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAIgATYCDAJAIANFDQAgA0EobCEDA0AgAkEMaiAAEJQIIABBKGohACADQVhqIgMNAAsLIAJBEGokAAtVAQJ/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgAiABNgIMAkAgA0UNACADQShsIQMDQCACQQxqIAAQ6g4gAEEoaiEAIANBWGoiAw0ACwsgAkEQaiQAC1UBAn8jAEEQayICJAAgACgCCCEDIAAoAgQhACACIAE2AgwCQCADRQ0AIANBKGwhAwNAIAJBDGogABCYByAAQShqIQAgA0FYaiIDDQALCyACQRBqJAALVQECfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAIgATYCDAJAIANFDQAgA0EobCEDA0AgAkEMaiAAEL4GIABBKGohACADQVhqIgMNAAsLIAJBEGokAAthAQJ/IwBBEGsiAiQAAkACQAJAIAEoAgAOAwABAQALIAJBCGogAUEIahCLFCACKAIMIQMgAigCCCEBDAELIAEoAgwhAyABKAIIIQELIAAgATYCACAAIAM2AgQgAkEQaiQAC1sBA38jAEEQayICJABBACEDQQAhBAJAIAEtAMgBQQlHDQAgAkEIaiABQQEgASgCwAEQzA4gAigCCEEBcSEEIAIoAgwhAwsgACADNgIEIAAgBDYCACACQRBqJAALXAIBfwF+IwBBEGsiAyQAIANBCGogAiABKAIIIAEgAS0AFBD+BgJAAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAQsgAEEEOgAACyADQRBqJAALWAEBfyMAQdAAayIEJAACQAJAIAMgAUkNACACIAMgACABEMIeIQEMAQsgBEEQaiAAIAEgAiADEPMCIARBBGogBEEQahDkByAEKAIEIQELIARB0ABqJAAgAQtgAQN/AkAgAC0ADCICIAEtAAwiA0YNACACIANKIAIgA0hrDwtBACEDIAEhBAJAAkACQCACDgMBAgABCyAAIQQgASEACyAEKAIEIAQoAgggACgCBCAAKAIIEL4bIQMLIAMLXAEDfyMAQRBrIgMkACADQQhqIAJBAUEBQbjkmwEQ3RUgAygCCCEEIAMoAgwhBQJAIAJFDQAgBSABIAL8CgAACyAAIAI2AgggACAFNgIEIAAgBDYCACADQRBqJAALTAEBf0EAIQQCQCAAIAEgAiADEN4SRQ0AQQEhBCACIABJDQAgAiABIABqIgFPDQAgAiADQQEgA0EBSxtqIgIgAE0gAiABS3IhBAsgBAtVAQJ/IwBBEGsiBCQAIARBADYCDCAEIAMgBEEMahCQECABIAIgBCgCACAEKAIEIgMQyh4hBSAAIAIgA2s2AgQgACABIANqQQAgBRs2AgAgBEEQaiQAC2ABAX8jAEEQayICJAAgACgCACEAIAIgASgCAEH094QBQQsgASgCBCgCDBEMADoADCACIAE2AgggAkEAOgANIAJBADYCBCACQQRqIABBsgEQwwsQ8g8hASACQRBqJAAgAQthAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBFDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpBtAEQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC1oBAX9BASEDAkAgAiABRg0AAkACQAJAIAIgAU8NACAAIAJqIgEtAABBdmoOBAIBAQMBCyACIAFBtNKEARDDEgALQQAPCyACRQ0AIAFBf2otAABBDUchAwsgAwtgAQN/QQEhAgJAIABBAWogARCuCA0AIAEoAgAiA0GI/YQBQQMgASgCBCgCDCIEEQwADQAgAEECaiABEK4IDQBBACECIAAtAABBAUcNACADQYv9hAFBDCAEEQwAIQILIAILWAECfyMAQRBrIgIkAAJAAkAgASgCACIBKAIAQQFGDQBBACEBDAELIAJBCGogAUEEahC7FCACKAIMIQMgAigCCCEBCyAAIAM2AgQgACABNgIAIAJBEGokAAtZAQF/IwBBIGsiAyQAIANBCGogACgCAEEIakHktZgBEKcdIAMoAgwhACADQRBqIAMoAgggARCNCiADQRBqEKoOIAIQ+REgACAAKAIAQQFqNgIAIANBIGokAAtZAQF/IwBBIGsiAyQAIANBCGogACgCBEEIakHUtpgBEKcdIAMoAgwhACADQRBqIAMoAgggARCNCiADQRBqEKoOIAIQ+REgACAAKAIAQQFqNgIAIANBIGokAAtcAQN/IwBBEGsiAyQAIANBCGogAkEBQQFBuOSbARDyFSADKAIIIQQgAygCDCEFAkAgAkUNACAFIAEgAvwKAAALIAAgAjYCCCAAIAU2AgQgACAENgIAIANBEGokAAtZAQJ/IAAoAgAiAUEEaigCACEAAkAgASgCCCICRQ0AA0AgABCYEiAAQTBqIQAgAkF/aiICDQALIAFBBGooAgAhAAsgASgCACAAQQhBMBC/EiABQRRBBBC9EwtTAAJAAkAgAUUNAAJAAkAgAyABSw0AIAMgAUcNAQwCCyACIAFqLAAAQb9/Sg0BC0EAIQIMAQsgAiABaiECIAMgAWshAQsgACABNgIEIAAgAjYCAAtbAQJ/IwBBEGsiAiQAAkACQCABLQALQf8BRg0AIAJBCGogARCQGiACKAIMIQMgAigCCCEBDAELIAEoAgQhAyABKAIAIQELIAAgATYCACAAIAM2AgQgAkEQaiQAC2EBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEUNACACIAA2AgwgAUHs3psBQQQgAkEMakHdAhDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYQEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIARQ0AIAIgADYCDCABQezemwFBBCACQQxqQdwCEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQthAQF/IwBBEGsiAiQAAkACQCAAKAIAIgApAwBQDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpBtwMQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC2EBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEUNACACIAA2AgwgAUHs3psBQQQgAkEMakHeAhDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYQEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIARQ0AIAIgADYCDCABQezemwFBBCACQQxqQekCEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQthAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBFDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpBrgIQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC2EBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEUNACACIAA2AgwgAUHs3psBQQQgAkEMakGvAhDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYQEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIARQ0AIAIgADYCDCABQezemwFBBCACQQxqQawCEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQthAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBFDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpB8AMQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC1kBAn8CQCAAQgODQgBSDQAgAKciAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCEBDpHQsCQCABRQ0AIAEoAgAiAhDXAyACQeAAQQgQvRMgAUEMQQQQvRMLC2EBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEUNACACIAA2AgwgAUHs3psBQQQgAkEMakGuBRDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYQEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIARQ0AIAIgADYCDCABQezemwFBBCACQQxqQdUFEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQthAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBFDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpB5AUQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC2EBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEUNACACIAA2AgwgAUHs3psBQQQgAkEMakGtBRDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYQEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIARQ0AIAIgADYCDCABQezemwFBBCACQQxqQdYFEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQthAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBFDQAgAiAANgIMIAFB7N6bAUEEIAJBDGpB9QQQ5gshAQwBCyABKAIAQbSbmwFBBCABKAIEKAIMEQwAIQELIAJBEGokACABC2EBAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEUNACACIAA2AgwgAUHs3psBQQQgAkEMakHlBRDmCyEBDAELIAEoAgBBtJubAUEEIAEoAgQoAgwRDAAhAQsgAkEQaiQAIAELYQEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIARQ0AIAIgADYCDCABQezemwFBBCACQQxqQfgFEOYLIQEMAQsgASgCAEG0m5sBQQQgASgCBCgCDBEMACEBCyACQRBqJAAgAQtWAgJ/AX4CQCABRQ0AA0ACQCAAKQMAIgRCA4NCAFINACAEpyICIAIoAgAiA0F/ajYCACADQQFHDQAgAiACKAIQEOkdCyAAQRBqIQAgAUF/aiIBDQALCwthAgF/AX4CQAJAAkAgACgCAA4DAAIBAgsgACkDCCICQgODQgBSDQEgAqciACAAKAIAIgFBf2o2AgAgAUEBRw0BIAAgACgCEBDpHQ8LIAAoAgQiABDkASAAQcAAQQgQvRMLC1kBAn8CQCAAQgODQgBSDQAgAKciAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCEBDpHQsCQCABRQ0AIAEoAgAiAhDZAyACQeAAQQgQvRMgAUEMQQQQvRMLC1wBA38jAEEQayIDJAAgA0EIaiACQQFBAUG45JsBENkWIAMoAgghBCADKAIMIQUCQCACRQ0AIAUgASAC/AoAAAsgACACNgIIIAAgBTYCBCAAIAQ2AgAgA0EQaiQAC1oBAn8jAEEQayICJAACQAJAIAEtABRBAkcNACABKAIMIQMgASgCCCEBDAELIAJBCGogARD3FSACKAIMIQMgAigCCCEBCyAAIAE2AgAgACADNgIEIAJBEGokAAtuAQF+AkACQAJAAkACQAJAIAAoAgAOBgECAgMEBQALIAApAxAhASAAKQMIEPMfIAEQ8x8PCyAAKQMIIAApAxgQjCQLDwsgACkDGBDWIQ8LIAApAxAgACgCGBCNJA8LIAApAwgQ8x8gACkDEBDzHwtgAQF/IwBBEGsiASQAAkAgACgCAA0AIAEgACgCBBCEESAAEOUhIABBCGogAUEIaikCADcCACAAIAEpAgA3AgAgACgCAA0AQZKpmwFBKEGg3JsBEIwaAAsgAUEQaiQAIAALWAEDfyMAQRBrIgEkABDmHyECIAAtAAwhAyABIABBBGooAgAgAEEIaigCABCVFCACIAEpAgA3AgAgASADOgAMIAJBCGogAUEIaikCADcCACABQRBqJAAgAgtXAQN/IwBBEGsiBCQAQQAhBUEAIQYCQCABLQDIAUESRw0AIARBCGogASACIAMQ0AIgBCgCCEEBcSEGIAQoAgwhBQsgACAFNgIEIAAgBjYCACAEQRBqJAALWQIBfwF+IwBBEGsiAyQAIANBCGogAiABKAIIIAFBABD+BgJAAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAQsgAEEEOgAACyADQRBqJAALYwACQAJAIAEgAkGah4ABQQYQwh4NAAJAIAEgAkGgh4ABQQgQwh4NACAAIAEgAkGoh4ABQQIQhhE2AgRBASECDAILIABBAToAAUEAIQIMAQtBACECIABBADoAAQsgACACOgAAC1kBAX8jAEEgayIDJAACQCABQf//A0sNACAAIAE7AQQgAEEANgIAIANBIGokAA8LIANBADYCGCADQQE2AgwgA0GwiYABNgIIIANCBDcCECADQQhqIAIQqB0AC2EBBH8gACgCACECIAAoAgQhA0EAIQRBACEFAkADQCABIAVGDQEgAEGBgICAeDYCAAJAIAJBgYCAgHhGDQAgAiADENYgIAVBAWohBUGBgICAeCECDAELCyABIAVrIQQLIAQLXgEBfyMAQSBrIgEkAAJAIABBf0oNACABQQE2AgQgAUHg+oQBNgIAIAFCATcCDCABQSk2AhwgAUGw4oQBNgIYIAEgAUEYajYCCCABQbjGgAEQqB0ACyABQSBqJAAgAAtUAAJAIAEoAgAiAUEBcUUNACABIAQRBAAhAQJAIANFDQAgASACIAP8CgAACyAAIAM2AgggACABNgIEIAAgAyACaiABazYCAA8LIAAgASACIAMQkhMLVgEBfyMAQRBrIgUkACAFQQRqIAFBACACIAMQqw0gBSgCCCEDAkAgBSgCBEEBRw0AIAMgBSgCDCAEENggAAsgACAFKAIMNgIEIAAgAzYCACAFQRBq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IQQCQCABKAIAQQdGDQAgAkEIaiABEKsOIAIoAgwhAyACKAIIIQQLIAAgAzYCBCAAIAQ2AgAgAkEQaiQAC08BA38jAEEQayICJABBACEDQQAhBAJAIAEoAgBBAkYNACACQQhqIAEQixIgAigCDCEDIAIoAgghBAsgACADNgIEIAAgBDYCACACQRBqJAALWQEBfyABKAIMIQICQAJAAkACQCABKAIEDgIAAQILIAINAUEBIQFBACECDAILIAINACABKAIAIgEoAgQhAiABKAIAIQEMAQsgACABEIgKDwsgACABIAIQnBULUAECfyMAQRBrIgMkACABIAEoAngiBCACcjYCeCADQQhqIAEQ9gsgAygCCCECIAEgBDYCeCADKAIMIQEgACACNgIAIAAgATYCBCADQRBqJAALUgEDfyMAQRBrIgIkACABIAEoAngiA0H//3txNgJ4IAJBCGogARD2CyACKAIIIQQgASADNgJ4IAIoAgwhASAAIAQ2AgAgACABNgIEIAJBEGokAAtRAQN/IwBBEGsiAiQAIAEgASgCeCIDQYAgcjYCeCACQQhqIAEQ1wQgAigCCCEEIAEgAzYCeCACKAIMIQEgACAENgIAIAAgATYCBCACQRBqJAALUgEDfyMAQRBrIgIkACABIAEoAngiA0H/v39xNgJ4IAJBCGogARC0BCACKAIIIQQgASADNgJ4IAIoAgwhASAAIAQ2AgAgACABNgIEIAJBEGokAAtKAQN/QQAhAwJAIAJFDQACQANAIAAtAAAiBCABLQAAIgVHDQEgAEEBaiEAIAFBAWohASACQX9qIgJFDQIMAAsLIAQgBWshAwsgAwtTAQN/IAAoAgghASAAKAIEIgIhAwJAA0AgAUUNAQJAIAMoAgBBgICAgHhGDQAgAxCqFwsgAUF/aiEBIANBIGohAwwACwsgACgCACACQQRBIBC/EgtQAAJAAkAgAUF/TA0AAkACQCABDQBBASECDAELQQAtAOD2nQEaIAFBARCuHCICRQ0CCyAAIAE2AgggACACNgIEIAAgATYCAA8LIAIQgRwLAAtSAQF/AkACQAJAIAJFDQBBACEDIAEoAtQCIgFFDQFBACECDAILQQAhAiABKALQAiIBDQFBASEDC0EBIQIgAxD2HiEBCyAAIAE2AgQgACACNgIAC1UBAX9BDCECAkAgAS0AC0H+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KAIAIgIQlgEgAkHAAEEIEL0TIABBEGohACABQX9qIgENAAsLC0IBA38gACgCBCEBAkAgACgCCCICRQ0AIAEhAwNAIAMQ7gIgA0EwaiEDIAJBf2oiAg0ACwsgACgCACABQQhBMBC/EgtMAQF/QQAtAOD2nQEaAkBBHBCEASIBDQAACyABQgA3AgwgAUEANgIIIAFCgICAgIABNwIAIAAgATYCBCAAQQI2AgAgAUESakIANwEACz0AAkAgAEIDg0IAUg0AIACnKQMIIQALIACnQd3L3Z55bCAAQiCIp2pB3cvdnnlsIAFqQd3L3Z55bEEPd60LPwECfyAAKAIIIQIgACgCBCEDAkAgACgCAEEBRw0AIAMgAigCCEF/akF4cWpBCGohAwsgAyABIAIoAkARLAAaC0YBAX8gAS0AOSECIAFBAToAOSAAKAIgIAEQbSABIAI6ADkCQCAAKAIAQQJHDQAgAUEBOgA5IAAoAgQgARBtIAEgAjoAOQsLRQECfyABKAIEIQQCQAJAIAEoAgAiBUEBRg0AIAEoAgghAwwBCwJAIAVFDQAgBBDrFgsgAiEECyAAIAM2AgQgACAENgIAC0oBAX8gACgCACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABEMoiDwsgACgCACABENUQDwsgACgCACABENYQC0EBAX8CQCAAKAIUIgMgACgCDEcNACAAQQxqEL8ZCyAAIANBAWo2AhQgACgCECADQQN0aiIAIAI6AAQgACABNgIAC0EBAX8gACgCCEEEdCECIAAoAgQhAAJAA0AgAkUNASAAIAEQgSQgACgCDCABEIcbIAJBcGohAiAAQRBqIQAMAAsLCz4BAX8DQAJAIAINAA8LIAAoAAAhAyAAIAEoAAA2AAAgASADNgAAIAJBf2ohAiABQQRqIQEgAEEEaiEADAALC0cBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABEMoiDwsgACgCACABENUQDwsgACgCACABENYQC0cBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABEMoiDwsgACgCACABENUQDwsgACgCACABENYQCz8BAX8jAEEQayICJAAgACgCACEAIAJBADYCDCACIAEgAkEMahD3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QQR0IQIgACgCBCEAAkADQCACRQ0BIABBDGogARCBJCACQXBqIQIgAEEQaiEADAALCws8AQJ/IAAgAhCoHiAAKAIIIQMCQCACQThsIgRFDQAgACgCBCADQThsaiABIAT8CgAACyAAIAMgAmo2AggLOgEBfyAAKAIIQQR0IQIgACgCBCEAAkADQCACRQ0BIABBDGogARDHBCACQXBqIQIgAEEQaiEADAALCws9AQJ/AkADQCABIgMgADYCDCADKAIQIgRFDQEgBEEEaiEBIAQoAgBBCEYNAAsLIANBEGoQ4yEgAyACNgIQC0UBAX8CQAJAAkAgACgCACIAKAIADgIAAQILIAAoAggiAUUNASAAKAIEQQEgARDRIAwBCyAAQQRqEO4WCyAAQRRBBBC9Ews8AQF/IAAtABQhASAAQQE6ABQCQAJAIAENACAAQXhqIgAgACgCAEEBaiIBNgIAIAFFDQEgABDTJAsPCwALOgECfyMAQRBrIgEkACABQQRqIAAQxg0gASgCCCIAIAEoAgwQCiECIAEoAgQgABDeIiABQRBqJAAgAgs+AgF/AX4jAEEQayICJAAgAkEIaiABQQhBIEHwjIABEN0VIAIpAwghAyAAQQA2AgggACADNwIAIAJBEGokAAs+AgF/AX4jAEEQayICJAAgAkEIaiABQQhBEEGQjYABEN0VIAIpAwghAyAAQQA2AgggACADNwIAIAJBEGokAAs8AQF/IwBBEGsiAiQAIAJBCGogACAAKAIAKAIEEQcAIAIoAgggASACKAIMKAIQEQgAIQAgAkEQaiQAIAALPwEBfyMAQRBrIgIkACACIAAoAgAoAgA2AgwgAUHWxIABQQ5B2KuXAUEDIAJBDGpBJhDdDSEAIAJBEGokACAACzoBAX8jAEEQayICJAAgAkEANgIMIAIgASACQQxqEMAXIAAgAigCACACKAIEEMIEIQEgAkEQaiQAIAELOAACQAJAIAEgAksNACACIANNDQEgAiADIAQQvCIACyABIAIgBBDXIgALIAAgAjYCBCAAIAE2AgALQQEBfyAAKAIAIQACQCABKAIIIgJBgICAEHENAAJAIAJBgICAIHENACAAIAEQyiIPCyAAIAEQsBAPCyAAIAEQsRALOwIBfwF+IwBBEGsiAyQAIANBCGogAUEBQQEgAhCoFSADKQMIIQQgAEEANgII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AgwgASACEMUeIQAgA0EQaiQAIAALNQEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUH0xZgBQQQgAkEMakExEOYLIQAgAkEQaiQAIAALOAEBfwJAIAEoAgAiA0H/////B0kNACACEPgWAAsgASADQQFqNgIAIAAgATYCBCAAIAFBBGo2AgALRQEBfEQAAAAAAAD4fyECAkAgASABYg0AAkAgAJlEAAAAAAAA8D9iDQAgAZlEAAAAAAAA8H9hDQELIAAgARDUJCECCyACCzYBAX8gACgCACICQRhqIQACQCACLQAsQQJHDQAgACABEKgcCwJAIAEoAgBFDQAgASAAEN8FCws7AQF/IAAoAgAiARDJASABQcAAQQgQvRMgACgCBCIAEOUaIAAoAgAgAEEEaigCABDxIiAAQRRBBBC9Ews1AQF/IAEoAhQhAgJAA0AgAC0AJUECRg0BIAIgAEEIahDYDhogACgCICEADAALCyABIAAQfQs2AAJAIAAtABRBAkcNACAAKAIAIgBBGGoQqxwgACkDABDzHyAAQTBBCBC9Ew8LIAApAwAQ8x8LLwACQCADaUEBRw0AIAFBgICAgHggA2tLDQAgACABIAMgAhDvAyIDRQ0AIAMPCwALNwEBfyMAQRBrIgIkACABIAJBD2pB+ISAARCMByEBIABBlYCAgHg2AgAgACABNgIEIAJBEGokAAsvAQF/AkAgABCEASICRQ0AIAJBfGotAABBA3FFDQAgAEUNACACQQAgAPwLAAsgAgsyAQF/IwBBEGsiAiQAIAIgADYCDCABQd2ZgAFBCCACQQxqQS4Q5gshACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQYTugwFBDyACQQxqQcEAEOYLIQAgAkEQaiQAIAALMwEBfyMAQRBrIgIkACACIAA2AgwgAUHIxoABQQwgAkEMakHHABDmCyEAIAJBEGokACAACy0AIAAoAiQgACgCFEEMbGogACgCICAAKAIIakECdGogACgCMEEAIAAoAigbagszAQF/IwBBEGsiAiQAIAIgADYCDCABQdDEgAFBBiACQQxqQdIAEOYLIQAgAkEQaiQAIAALMwEBfyMAQRBrIgIkACACIAA2AgwgAUGV+IQBQQYgAkEMakHTABDmCyEAIAJBEGokACAACzQBAX8gACACEMkeIAAoAggh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AEEDRg0AIAAQoyIMAQsgAEEEahC3IAsgAEEoQQgQvRMLMwACQAJAIAAoAgAiACgCAEGAgICAeEYNACAAEPYfDAELIABBBGoQmiELIABBGEEEEL0TCy8BAX8CQCAAKAIAIgFBAkYNACAAQQRqIQACQCABDQAgACgCABCaIg8LIAAQmiELCzUBAX8gAEEEaiEBAkACQAJAIAAoAgAOAgECAAsgARCfIQ8LIAEoAgAQmiIPCyABKAIAEJsiCzAAIAAoAgAgACgCBCABEKMhIABBIGogARC+ICAAKAJoIAEQjRMgAEHIAGogARCnHwsvAQF/IwBBIGsiASQAIAFBgICAgHg2AgggACAAIAFBCGoQhBchACABQSBqJAAgAAsxAQF/AkAgASgCACICRQ0AIAAgAhEDAAsCQCABKAIEIgJFDQAgACACIAEoAggQvRMLCzEBAX8gAUF4aiICIAIoAgBBAWoiAjYCAAJAIAINAAALIAAgATYCBCAAQZSHnQE2AgALKwACQCABKAIARQ0AIAIQ9xYACyABQX82AgAgACABNgIEIAAgAUEEajYCAAsrAQF/IwBBEGsiAiQAIAJBATsBDCACIAE2AgggAiAANgIEIAJBBGoQrx0ACyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGogASACENALIANBEGokAAszACABKAIAIAAoAgAtAABBAnQiAEG86J0BaigCACAAQbDonQFqKAIAIAEoAgQoAgwRDAALKwAgACACIAMoAgAQnQYgAEEQaiACQRBqIAMoAgAQnQYgAkEIIAEgAxCcBwsuAQF/AkAgASAAKAIUIgJJDQAgASACQbjygwEQwxIACyAAKAIQIAFBAnRqKAIACy4BAX8CQCABIAAoAjgiAkkNACABIAJB6PKDARDDEgALIAAoAjQgAUECdGooAgALLgEBfwJAIAEgACgCICICSQ0AIAEgAkGE74MBEMMSAAsgACgCHCABQQJ0aigCAAstAgF/AX4jAEEQayIBJAAgACkCACECIAEgADYCDCABIAI3AgQgAUEEahCyJAALMwAgASgCACAAKAIALQAAQQJ0IgBByIidAWooAgAgAEG4iJ0BaigCACABKAIEKAIMEQwACzMAIAEoAgAgACgCAC0AAEECdCIAQbi/nQFqKAIAIABBnL+dAWooAgAgASgCBCgCDBEMAAszACABKAIAIAAoAgAtAABBAnQiAEHQup0BaigCACAAQcS6nQFqKAIAIAEoAgQoAgwRDAALMwAgASgCACAAKAIALQAAQQJ0IgBB8LydAWooAgAgAEHkvJ0BaigCACABKAIEKAIMEQwACzcBAX9BCCEBAkACQAJAIAAoAgBBfmoOBgECAgIAAAILQQQhAQsgACgCBCAAKAIIQQQgARDFEgsLLwEBfyAAKAIAIgEgASgCACIBQX9qNgIAAkAgAUEBRw0AIAAoAgAgACgCBBDsEAsLMAACQCAAKAIAQYCAgIB4Rw0AQcyfhAEQySIACyAAQQxqIAEQ6gggAEE8aiABEOoICysAIAAQxwkgACgCsA0gACgCtA0iACgCCEF/akF4cWpBCGogACgCGBEEAGoLLwEBfyAAKAIAIgEgASgCACIBQX9qNgIAAkAgAUEBRw0AIAAoAgAgACgCBBDsEAsLMwAgASgCACAAKAIALQAAQQJ0IgBBxMGdAWooAgAgAEGwwZ0BaigCACABKAIEKAIMEQwACywAIAAgAUEuRiAALQAEcjoABCAAKAIAIgAoAgAgASAAQQRqKAIAKAIQEQgACysBAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQQhqQfsBQQFBABCUEgALLAAgACACQoCBgoSIkKDAgH+DIgJCAFI2AgAgACACeqdBA3YgA2ogAXE2AgQLKAAgASACIAMgBBDKHiEDIAAgAiAEazYCBCAAIAEgBGpBACADGzYCAAs1AQF/QYABIQMCQCABIAJBxaabAUEGEMIeDQBB/wBBpH8gASACQfCzmwFBAxDCHhshAwsgAws1AQF/Qe0AIQMCQCABIAJBqZubAUEDEMIeDQBB7gBBpH8gASACQcKbmwFBBBDCHhshAwsgAws1AQF/Qe8AIQMCQCABIAJB9dGbAUEFEMIeDQBB8ABBpH8gASACQbXMmwFBBBDCHhshAwsgAwszACABKAIAIAAoAgAtAABBAnQiAEGcz50BaigCACAAQZDPnQFqKAIAIAEoAgQoAgwRDAALMwAgASgCACAAKAIALQAAQQJ0IgBBtM+dAWooAgAgAEGoz50BaigCACABKAIEKAIMEQwACy0AAkAgACgCACIARQ0AIAAQohQgACgCACAAQQRqKAIAEPUiIABBFEEEEL0TCwstAAJAIAAoAgAiAEUNACAAEOUaIAAoAgAgAEEEaigCABDxIiAAQRRBBBC9EwsLMwAgASgCACAAKAIALQAAQQJ0IgBB2M+dAWooAgAgAEHMz50BaigCACABKAIEKAIMEQwACzMAIAEoAgAgACgCAC0AAEECdCIAQZjQnQFqKAIAIABB5M+dAWooAgAgASgCBCgCDBEMAAstAAJAIAAoAgAiAEUNACAAEL4OIAAoAgAgAEEEaigCABD2IiAAQRRBBBC9EwsLMQEBfwJAIAEtADRBAUcNACABLwA5IQIgAUGBAjsAOSAAKAIAIAEQgAIgASACOwA5CwszACABKAIAIAAoAgAtAABBAnQiAEH84Z0BaigCACAAQfDhnQFqKAIAIAEoAgQoAgwRDAALMwAgASgCACAAKAIALQAAQQJ0IgBBlOKdAWooAgAgAEGI4p0BaigCACABKAIEKAIMEQwACzMAIAEoAgAgACgCAC0AAEECdCIAQbjinQFqKAIAIABBrOKdAWooAgAgASgCBCgCDBEMAAszACABKAIAIAAoAgAtAABBAnQiAEH44p0BaigCACAAQcTinQFqKAIAIAEoAgQoAgwRDAALMQEBfkIAIQICQCABLQDIAUGhAUcNACABENoSIQIgARDjDgsgAEEANgIAIAAgAjcDCAswACABKAIAIAAtAABBAnQiAEGgiJ0BaigCACAAQZSInQFqKAIAIAEoAgQoAgwRDAALKQACQCADIAJJDQAgAyACQey4gAEQwxIACyAAIAEgA0EMbGopAgQ3AwALMwIBfwF+IAAoAgQiASAAKAIIEPkXIQICQCAAKAIAIgBBgICAgHhGDQAgACABEKsTCyACCykBAX8gACAAKAIAIgFBf2o2AgACQCABQQRJDQAgAUECcQ0AIAAQ3goLCzAAIAEoAgAgAC0AAEECdCIAQfS6nQFqKAIAIABB3LqdAWooAgAgASgCBCgCDBEMAAssAAJAAkAgACgCAEGJgMQARg0AIABB9ABqEJYaDAELIABBBGohAAsgABCjAwstAAJAIAEtABBBAXFFDQAgAxD6BAsCQCACRQ0AIAMQjwULIABBgICAgHg2AgALMQECfwJAIAAoAgAiAUGAgICAeEYNACAAKAIEIgIgACgCCBCbHCABIAJBBEEQENASCwswACABKAIAIAAtAABBAnQiAEHQxJ0BaigCACAAQajD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DQAgAEEEaiABEMcECwsmACAAKAIAIAAoAgQgARCjISAAQcAAaiABEKQhIABBIGogARCnHwsoAQF/IABBwABqEIkeAkAgACgCHCIBRQ0AIAAoAhggAUEMQQgQ+BcLCykAIAAoAkggACgCTBC9IiAAKAJUIAAoAlgQvSIgACgCYCAAKAJkEL0iCyUBAX8CQCAAKAI4RQ0AIAAoAkAiAUUNACAAKAI8IAFBARC9EwsLIwEBf0EBIQECQCAAKAIAIgBBAXENACAAKAIIQQFGIQELIAELIQACQCAAKAIAIgBBAXFFDQAgACABIAIQ9BcPCyAAEIATCyABAn4gACkDACICIAJCP4ciA4UgA30gAkJ/VSABEPMHCyYAAkAgAA0AQcSCnQFBMhCUIwALIAAgAiADIAQgBSABKAIQERIACx4AAkAgAiABSQ0AIAIgASADEMMSAAsgACACQQJ0agsfAAJAIAFFDQAgACABbiABakEBdg8LQcSTgwEQhRwACyAAAkAgASAAayIBQRBJDQAgACABEP0FDwsgACABEMMbCyoBAX8gACgCACAAKAIEEMwiIAAoAhAiASAAKAIUEOwcIAAoAgwgARDNIgseAAJAIAIgAUkNACACIAEgAxDDEgALIAAgAkEDdGoLHgACQCACIAFJDQAgAiABIAMQwxIACyAAIAJBDGxqCycAIAApAwggACkDGBCMJCAAQSBqEJkhIAAoAjgQniIgACgCPBCfIgshACAAKAIAKAIAIAAoAgQoAgBBACABa0EYbGpBaGoQqSALHgACQCACIAFJDQAgAiABIAMQwxIACyAAIAJBBnRqCx4AAkAgAiABSQ0AIAIgASADEMMSAAsgACACQQV0agseAAJAIAIgAUkNACACIAEgAxDDEgALIAAgAkECdGoLIAEBf0EAIQQCQCABIANHDQAgACACIAEQkhdFIQQLIAQLJQAgACABKAIINgIEIABBACABKAIEIAEoAgBBgICAgHhGGzYCAAslAQF/IAEoAgAhAiABQQA2AgAgASgCBCEBIAIQtB8gACABEKkTCyABAX9BACEEAkAgASADRw0AIAAgAiABEJIXRSEECyAECyUBAX8gASgCACECIAFBADYCACABKAIEIQEgAhC0HyAAIAEQ3AELHwAgACACEMkMIABBEGogAkEQahDJDCACQQggARDZCQseACAA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CwwAIAAoAgAgARCgBQsMACAAKAIAIAEQgw0LDAAgACgCACABENwKCwwAIAAoAgAgARDKIgsMACABIAAoAgAQ3QgLDAAgACABKQIQNwMACwwAIAAoAgAgARDVDAsMACAAKAIAIAEQ1QwLDAAgACgCACABEJUQCwwAIAAoAgAgARDKDAsMACAAKAIAIAEQ+gcLDAAgACgCACABEM8CCwwAIAAoAgAgARCeBAsMACAAKAIAIAEQtRELDAAgACgCACABELURCwwAIAAoAgAgARC6EgsMACAAKAIAIAEQ8gMLDAAgACgCACABEI0TCwwAIAAoAgAgARClFwsMACAAKAIAIAEQkAYLDAAgASAAKAIAEMAZCwwAIAEgACgCABDAGQsMACAAEP4fIAEQ1iELDAAgARCzICAAENYhCwsAIABBEEEEEL0TCwwAIAAQ8x8gARDzHwsMACAAKAIAIAEQzgsLCwAgACgCACABEGMLDAAgACgCACABENoWCwwAIAAoAgAgARCmFwsMACAAKAIAIAEQpBMLDAAgACgCACABEM0GCwwAIAEgACgCABCDGgsMACABIAAoAgAQgxoLDAAgACgCACABEMYECwsAIABBBCABENEgCwoAIAAQjAUaQQELDAAgACgCACABEK8LCwwAIAAoAgAgARCrBwsMACAAEMMgIAAQniQLCwAgAEE4QQQQvRMLDAAgABC9ISAAEKAkCwsAIABBMEEEEL0TCwoAIABBCGoQ7xYLCwAgACABIAIQyhILDgAgAEH4gp0BQYcHEDwLCgAgAEF4ahCyHwsLACAAIAEgAhD4AgsJACAAQQA2AgALCQAgAEIBNwMACwkAIAAgARD1HgsHACAAQX5xCwoAIAAoAgAQgBMLCQAgACAAEKoTCwkAQQFBABD6FwsIACAAQcgAagsIACAAQZADagsIACAAQYACagsLAEGMjpgBEPUXAAsJACAAQQA2AgALCAAgABD2DwALCwBBACgC3PWdAUULDABBo9qYAUEJEPkXCwsAQYS5mAEQ9RcACw0AIABBgICAgHg2AgALDABBlpybAUEKEPkXCwwAQZHRmwFBCBD5FwsMAEG50psBQQgQ+RcLDABBsdKbAUEIEPkXCwwAQa3pmgFBCRD5FwsJACAAIAEQ0A0LCQAgACABEPUeCwwAQY6nmwFBCBD5FwsMAEHippsBQQgQ+RcLDABBy9KbAUEIEPkXCwwAQZSlmwFBCBD5FwsJACAAIAEQjQMLCQAgACABEMECCwkAIAAgARDfAwsMAEH79JoBQQgQ+RcLCQAgACABEMUFCwkAIAAgARCZBQsJACAAIAEQ/AILDABBo/aaAUENEPkXCwwAQZr2mgFBCRD5FwsMAEGM9poBQQ4Q+RcLCQAgACABEOMFCwcAIABBGGoLCQAgACABEL0iCwkAIAAgARDtIQsIACAAIAEQawsJACAAIAEQ7SELCgAgACgCABCxHwsKABC+ByAAEOkMCwkAIAAgARDrAQsIACAALQDEAgsHACAAKAIUCwgAIAAoAqwCCwgAIAAoArACCwgAIAAtAOACCwcAIAAoAjgLCAAgACgCyAILCAAgACgCzAILBQAgAUULCAAgAC0A2AILBwAgACgCIAsIACAAKALAAgsIACAAKALEAgsIACAALQDMEgsIACAALQC8DQsHACAAEMIMCwcAIAAQxwkLBwAgACgCQAsHACAAKAJACwcAIAAQpxELBwBBABCXEwsHACAAEI4GCwcAIAAoAiALBwAgACgCJAsHACAAKAIoCwcAIAAQvQgLBABBAQsDAAALBAAgAAsEAEEACwQAQQELBABBAAsEAEEBCwQAQQALBABBAQsEACAACwQAQQALBABBAQsEAEEACwQAIAALAwAACwcAQfz1nQELBwBBgPadAQsEAEEACwQAQQALBwBBhPadAQsEAEEBCwIACwIACwIACwIACwIACwIACwIACwu08R0CAEGAgIABC/joHQAAAAAAAAAAAQAAAIsDAABtYXAgd2l0aCBhIHNpbmdsZSBrZXkAAAAQACAAFQAAAAAAAAAIAAAABAAAAIwDAABzdHJpbmcgb3IgbWFwAAAAQAAgAA0AAAAAAAAAAAAAAAEAAACNAwAAAAAAAAAAAAABAAAAjgMAAAAAAAAAAAAAAQAAAI0DAABpbnZhbGlkIHZhbHVlOiAAiAAgAA8AAAA6CyYACwAAAGludmFsaWQgbGVuZ3RoIACoACAADwAAADoLJgALAAAAZHVwbGljYXRlIGZpZWxkIGAAAADIACAAEQAAADrfJgABAAAAdW5rbm93biB2YXJpYW50IGBgLCBleHBlY3RlZCAAAADsACAAEQAAAP0AIAAMAAAAdHN4ABwBIAADAAAAtIAmAAoAAAAv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BAAACAQAAAAAAAADAAAAAQAAAAkEAAAKBAAAOB8gAG0AAAAxAwAAFgAAADgfIABtAAAAFgMAACQAAAA4HyAAbQAAACIDAAARAAAAOB8gAG0AAABPAwAAGQAAADgfIABtAAAAYQMAAC0AAAA4HyAAbQAAAHIDAAA6AAAAOB8gAG0AAACEAwAARgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvdXRpbC9yZW1hcHBlci5yc2AhIABsAAAAcgAAABIAAABgISAAbAAAAIwAAAAkAAAAYCEgAGwAAACRAAAAIAAAAGAhIABsAAAAkwAAAB0AAABgISAAbAAAAJkAAAAfAAAAUGF0dGVybnNieV9pZG9yZGVydG90YWxfcGF0dGVybl9ieXRlc2ltcG1lbW9yeV91c2FnZVBhY2tlZFJhcmVCeXRlT2Zmc2V0UmFyZUJ5dGVzT25lYnl0ZTFSYXJlQnl0ZXNUd29vZmZzZXRzYnl0ZTJSYXJlQnl0ZXNUaHJlZWJ5dGUzU3RhcnRCeXRlc09uZVN0YXJ0Qnl0ZXNUd29TdGFydEJ5dGVzVGhyZWUvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvcHJpbWl0aXZlcy5ycwDJIiAAbgAAAOECAAABAAAAU3RhdGVJREVycm9yAAAAAAQAAAAEAAAACwQAAAwEAAAMAAAABAAAAA0EAAAOBAAADwQAAGxpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzfCMgACAAAAAuAgAAEQAAAGxpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwCsIyAAGwAAAOgBAAAXAAAAAAAAAAAAAAABAAAAEAQAAGEgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90bGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAAA+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AQICGAYBAgElAQIBBAEBABcJEQEpAwNvAU8AZm8RxABhDwARBhkABQAALwAABx8RTxEeEjAQBB8VBRMALdNAgEsEOQcRQAIBAQwCDgAIACkKAAQBBwECAQAPAR0DAgEOBAgAAGsFDQMJBwoEAQBVAUcBAgIBAgICBAEMAQEBBwFBAQQCCAEHARwBBAEFAQEDBwEAAhkBGQEfARkBHwEZAR8BGQEfARkBCAAfBgbVBwERAgcBAgEFBT4hAXAtCgcQAQAeEiwAHOQeAgEABwEEAQIBDwHFO0QDAQMBAAQBGwECAQECAQEKAQQBAQEBBgEEAQEBAQEBAwECAQECAQEBAQEBAQEBAQIBAQIEAQcBBAEEAQEBCgERBQMBBQERABoGGgYaAAAgAAbeAgAOAA8AAAAAAAUAAABwAAcALQEBAQIBAgEBSAswFRABZQcCBgICAQQjAR4bWws6CQkBGAQBCQEDAQUrAzsJKhgBIDcBAQEECAQBAwcKAh0BOgEBAQIECAEJAQoCGgECAjkBBAIEAgIDAwEeAgMBCwI5AQQFAQIEARQCFgYBAToBAQIBBAgBBwMKAh4BOwEBAQwBCQEoAQMBNwEBAwUDAQQHAgsCHQE6AQICAQEDAwEEBwILAhwCOQIBAQIECAEJAQoCHQFIAQQBAgMBAQgBUQECBwwIYgECCQsHSQIbAQEBAQE3DgEFAQIFCwEkCQFmBAEGAQICAhkCBAMQBA0BAgIGAQ8BAAMABBwDHQIeAkACAQcIAQILCQEtAwEBdQIiAXYDBAIJAQYD2wICAToBAQcBAQEBAggGCgIBMB8xBDAKBAMmCQwCIAQCBjgBAQIDAQEFOAgCApgDAQ0BBwQBBgEDAsZAAAHDIQADjQFgIAAGaQIABAEKIAJQAgABAwEEARkCBQGXAhoSDQEmCBkLAQEsAzABAgQCAgIBJAFDBgICAgIMAQgBLwEzAQEDAgIFAgEBKgIIAe4BAgEEAQABABAQEAACAAHiAZUFAAMBAgUEKAMEAaUCAARBBQACTwRGCzEEewE2DykBAgIKAzEEAgIHAT0DJAUBCD4BDAI0CQEBCAQCAV8DAgQGAQIBnQEDCBUCOQIBAQEBDAEJAQ4HAwVDAQIGAQECAQEDBAMBAQ4CVQgCAwEBFwFRAQIGAQECAQECAQLrAQIEBgIBAhsCVQgCAQECagEBAQIIZQEBAQIEAQUACQEC9QEKBAQBkAQCAgQBIAooBgIECAEJBgIDLg0BAgAHAQYBAVIWAgcBAgECegYDAQECAQcBAUgCAwEBAQACCwI0BQUDFwEAAQYPAAwDAwAFOwcAAT8EUQELAgACAC4CFwAFAwYICAIHHgSUAwA3BDIIAQ4BFgUBDwAHARECBwECAQVkAaAHAAE9BAAE/gIAB20HAGCA8AAwCngCBQECAwAKhgrGCgAKdgoEBmwKdgp2CgIGbg1zCggHZwpoBwcTbQpgCnYKRhQACkYKABQAA+8KBgoWCgAKgAulCgYKtgpWCoYKBgoAAQMGBgrGMwIFADxOFgAeAAEAARkJDgMABIoKHggBDyAKJw8ACrwKAAaaCiYKxgoWClYKAAoACgAtDDkRAgAbJAQdAQgBhgXKCgAIGQcnCUsFFgagAgIQAi5ACTQCHgNLBWgIGAgpBwAGMAoGCgAfngoqBHAHhh6ACjwKkAoHFPsKAAp2CgAKZgoGFEwMABNdCgAKVh3jCkYKAApmFQBvAAoAClYKhgoBBwAKABcACgAUDBRsGQAyAAoACgAK9woACYAKADsBAwEETC0BDwANAAoAAAAAAAABAAAAAAAAAAoAAAAAAAAAZAAAAAAAAADoAwAAAAAAABAnAAAAAAAAoIYBAAAAAABAQg8AAAAAAICWmAAAAAAAAOH1BQAAAAAAypo7AAAAAADkC1QCAAAAAOh2SBcAAAAAEKXU6AAAAACgck4YCQAAAEB6EPNaAAAAgMakfo0DAGxpYnJhcnkvY29yZS9zcmMvbnVtL2RlYzJmbHQvZGVjaW1hbF9zZXEucnMAsDQgACsAAABWAAAAJwAAALA0IAArAAAAiAAAABMAAACwNCAAKwAAALAAAAAgAAAAsDQgACsAAADHAAAAJQAAALA0IAArAAAA9AAAABUAAACwNCAAKwAAAP8AAAAYAAAAAAAACAEIAwgGEAkQDRASGBcYHRgkICsgMyA8IEYoUChbKGcwczCAMI44nDirOLs4zEDdQO9AAkkVSSlJPlFTUWlRgFGYWbBZyVnjYf1hGGI0alBqbWqLaqpyyXLpcgp7K3tNe3CDk4O3g9yDAowojE+Md5SflMiU8pwcBRwFHAUcBQUCBQECBQYCBQMBAgUBBQYCBQcIAQIFAwkABgIFAQkFAwECBQkHBgUGAgUECAgCCAECBQIEBAEEAAYCBQECAgAHAAMBAgUGAQADBQEFBgIFAwAFAQcFBwgBAgUBBQIFCAcICQAGAgUHBgIJAwkEBQMBAgUDCAEEBgkHAgYFBgIFAQkABwMECAYDAggBAgUJBQMGBwQDAQYEAAYCBQQHBggDBwEFCAIAAwECBQIDCAQBCAUHCQEAAQUGAgUBAQkCAAkCCAkFBQAHCAECBQUJBgAEBgQEBwcFAwkABgIFAgkIAAIDAgIDCAcGCQUDAQIFAQQJAAEBBgEBCQMIBAcGBQYCBQcEBQAFCAAFCQYJAgMIAggBAgUDBwIFAgkAAgkIBAYBCQEEAAYCBQEIBgIGBAUBBAkCAwAJBQcAAwECBQkDAQMCAgUHBAYBBQQHCAUBBQYCBQQGBQYGAQIIBwMABwcDCQIFBwgBAgUCAwIIAwAGBAMGBQMIBgkGAggJAAYCBQEBBgQBBQMCAQgCBgkDBAgBBAQFAwECBQUIAgAHBgYACQEDBAYHBAAHAgIGBQYCBQIJAQADCAMABAUGBwMDBwADBgEDAggBAgUBBAUFAQkBBQICCAMGBggFAQgABgYEAAYCBQcCBwUJBQcGAQQBCAMEAgUJAAMDAgADAQIFAwYDBwkHCAgABwAJAQcBAgkFAQYGAAEFBgIFAQgBCAkICQQAAwUEBQgFBgQHBQgDAAAHCAECBQkACQQJBAcAAQcHAgkCCAIDBwkBBQADCQAGAgUEBQQHBAcDBQAICAYEBgQBAQgJBQcFAQkFAwECBQICBwMHAwYHBQQEAwIDAgAFCQQHCAcFCQcGBQYCBQEBAwYIBggDBwcCAQYBBgACCQcDCQMHCQgIAggBAgUFBggEAwQBCAgGAAgACAABBAgGCQYICQkEAQQABgIFAggEAgEHAAkEAwAEAAQAAAcEAwQIBAQJBwAHAAMBAgUBBAIBAAgFBAcBBQIAAgAAAwcBBwQCAgQIBQMFAQUGAgUHAQAFBAIHAwUHBgABAAABCAUIBwEBAgQCBgcFBwgBAgUDBQUCBwEDBgcICAAABQAACQIJAwUFBgIBAwMHCAkABgIFAQcHBgMFBggDCQQAAAIFAAQGBAYHBwgBAAYGCAkEBQMBAgUICAgBBwgEAQkHAAABAgUCAwIDAwgJAAUDAwQEBwIGBQYCBQQEBAAICQIACQgFAAAGAgYBBgEGCQQFAgYGBwIDBgMC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L25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2hhc2hicm93bi0wLjE2LjAvc3JjL3Jhdy9tb2QucnPsqSAAZAAAACUAAAAoAAAAAAAAAAAAAAABAAAANQQAAAAAAAAAAAAAAQAAABkEAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi90cmlvbXBoZS0wLjEuMTQvc3JjL2FyYy5ycwCAqiAAXwAAADUBAAAOAAAAgKogAF8AAABuAQAALQAAAICqIABfAAAAbwEAAA4AAAAAAAAADAAAAAQAAAA2BAAANwQAAGNyYXRlcy9oc3RyL3NyYy9keW5hbWljLnJzAAAkqyAAGgAAAGkAAAAgAAAAJKsgABoAAABxAAAAIAAAAGNyYXRlcy9oc3RyL3NyYy93dGY4L21vZC5ycwBgqyAAGwAAAN0BAABKAAAAYKsgABsAAADWAQAAPQAAAGCrIAAbAAAAhAIAAB4AAABgqyAAGwAAAIUCAAAxAAAAYKsgABsAAACQAgAAPQAAAGCrIAAbAAAAiwIAAD0AAABgqyAAGwAAAPICAAAiAAAAY3JhdGVzL2hzdHIvc3JjL3d0ZjhfYXRvbS5yc+yrIAAcAAAAXAEAADkAAABjcmF0ZXMvaHN0ci9zcmMvbGliLnJzAAAYrCAAFgAAABYBAAA8AAAAPEAnAG8AAAAkAQAADgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2pzLXN5cy0wLjMuNzcvc3JjL2xpYi5yc3JldHVybiB0aGlzUKwgAF0AAAD7GAAAAQAAAE8pJgBwAAAATQAAAC4AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9tZW1jaHItMi43LjYvc3JjL2FyY2gvYWxsL3R3b3dheS5yc9isIABoAAAAvwAAAC4AAADYrCAAaAAAAMcAAAApAAAA2KwgAGgAAADMAAAANAAAANisIABoAAAA1AAAACQAAADYrCAAaAAAANQAAAAxAAAA2KwgAGgAAADXAAAAIgAAANisIABoAAAA1wAAADMAAADYrCAAaAAAAPEAAAAuAAAA2KwgAGgAAAD4AAAAKQAAANisIABoAAAA/QAAADQAAADYrCAAaAAAAAQBAAAYAAAA2KwgAGgAAAAEAQAAJQAAANisIABoAAAAwgEAAB0AAADYrCAAaAAAAMMBAAAZAAAA2KwgAGgAAAAKAgAAGwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvbW9kLnJzAAAAMK4gAGUAAAAsAAAAHgAAADxzZWFyY2hlciBmdW5jdGlvbj4AqK4gABMAAABjYWxsPHNlYXJjaGVyIGtpbmQgdW5pb24+AAAAyK4gABUAAABGaW5kZXJoYXNoG1sxMjM0NTY3ODkbWzBtAAAAeu0mAEoAAAALAgAAFwAAAHrtJgBKAAAACgIAADIAAABJb0Vycm9yT3V0T2ZCb3VuZHMvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnNjYXBhY2l0eSBvdmVyZmxvdwAAAISvIAARAAAAAAAAAAQAAAAEAAAAMQAAADavIABOAAAA9gUAABUAAAAAAAAABAAAAAAAAAABAAAAbmVnYXRpdmUgdmFsdWVzIGFyZSBub24temVyby9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ2ludC9zaGlmdC5ycwAAAOyvIABpAAAAZgAAACgAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWd1aW50L2FkZGl0aW9uLnJzAAAAaLAgAG0AAAA7AAAAGgAAAGiwIABtAAAAaAAAAEIAAABo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MDAwOzIwNjsyMDkzODsyOzE0ODswMDA7MjExMzg7MjsyNTU7MDIwOzE0NzM4OzI7MDAwOzE5MTsyNTUzODsyOzEwNTsxMDU7MTA1Mzg7MjswMzA7MTQ0OzI1NTM4OzI7MTc4OzAzNDswMzQzODsyOzI1NTsyNTA7MjQwMzg7MjswMzQ7MTM5OzAzNDM4OzI7MjU1OzAwMDsyNTUzODsyOzIyMDsyMjA7MjIwMzg7MjsyNDg7MjQ4OzI1NTM4OzI7MjU1OzIxNTswMDAzODsyOzIxODsxNjU7MDMyMzg7MjsxMjg7MTI4OzEyODM4OzI7MDAwOzEyODswMDAzODsyOzE3MzsyNTU7MDQ3Mzg7MjsyNDA7MjU1OzI0MDM4OzI7MjU1OzEwNTsxODAzODsyOzIwNTswOTI7MDkyMzg7MjswNzU7MDAwOzEzMDM4OzI7MjU1OzI1NTsyNDAzODsyOzI0MDsyMzA7MTQwMzg7MjsyMzA7MjMwOzI1MDM4OzI7MjU1OzI0MDsyNDUzODsyOzEyNDsyNTI7MDAwMzg7MjsyNTU7MjUwOzIwNTM4OzI7MTczOzIxNjsyMzAzODsyOzI0MDsxMjg7MTI4Mzg7MjsyMjQ7MjU1OzI1NTM4OzI7MjUwOzI1MDsyMTAzODsyOzIxMTsyMTE7MjExMzg7MjsxNDQ7MjM4OzE0NDM4OzI7MjU1OzE4MjsxOTMzODsyOzI1NTsxNjA7MTIyMzg7MjswMzI7MTc4OzE3MDM4OzI7MTM1OzIwNjsyNTAzODsyOzExOTsxMzY7MTUzMzg7MjsxNzY7MTk2OzIyMjM4OzI7MjU1OzI1NTsyMjQzODsyOzAwMDsyNTU7MDAwMzg7MjswNTA7MjA1OzA1MDM4OzI7MjUwOzI0MDsyMzAzODsyOzEyODswMDA7MDAwMzg7MjsxMDI7MjA1OzE3MDM4OzI7MDAwOzAwMDsyMDUzODsyOzE4NjswODU7MjExMzg7MjsxNDc7MTEyOzIxOTM4OzI7MDYwOzE3OTsxMTMzODsyOzEyMzsxMDQ7MjM4Mzg7MjswMDA7MjUwOzE1NDM4OzI7MDcyOzIwOTsyMDQzODsyOzE5OTswMjE7MTMzMzg7MjswMjU7MDI1OzExMjM4OzI7MjQ1OzI1NTsyNTAzODsyOzI1NTsyMjg7MjI1Mzg7MjsyNTU7MjI4OzE4MTM4OzI7MjU1OzIyMjsxNzMzODsyOzAwMDswMDA7MTI4Mzg7MjsyNTM7MjQ1OzIzMDM4OzI7MTI4OzEyODswMDAzODsyOzEwNzsxNDI7MDM1Mzg7MjsyNTU7MTY1OzAwMDM4OzI7MjU1OzA2OTswMDAzODsyOzIxODsxMTI7MjE0Mzg7MjsyMzg7MjMyOzE3MDM4OzI7MTUyOzI1MTsxNTIzODsyOzE3NTsyMzg7MjM4Mzg7MjsyMTk7MTEyOzE0NzM4OzI7MjU1OzIzOTsyMTMzODsyOzI1NTsyMTg7MTg1Mzg7MjsyMDU7MTMzOzA2MzM4OzI7MjU1OzE5MjsyMDMzODsyOzIyMTsxNjA7MjIxMzg7MjsxNzY7MjI0OzIzMDM4OzI7MTI4OzAwMDsxMjgzODsyOzEwMjswNTE7MTUzMzg7MjsyNTU7MDAwOzAwMDM4OzI7MTg4OzE0MzsxNDMzODsyOzA2NTsxMDU7MjI1Mzg7MjsxMzk7MDY5OzAxOTM4OzI7MjUwOzEyODsxMTQzODsyOzI0NDsxNjQ7MDk2Mzg7MjswNDY7MTM5OzA4NzM4OzI7MjU1OzI0NTsyMzgzODsyOzE2MDswODI7MDQ1Mzg7MjsxOTI7MTkyOzE5MjM4OzI7MTM1OzIwNjsyMzUzODsyOzEwNjswOTA7MjA1Mzg7MjsxMTI7MTI4OzE0NDM4OzI7MjU1OzI1MDsyNTAzODsyOzAwMDsyNTU7MTI3Mzg7MjswNzA7MTMwOzE4MDM4OzI7MjEwOzE4MDsxNDAzODsyOzAwMDsxMjg7MTI4Mzg7MjsyMTY7MTkxOzIxNjM4OzI7MjU1OzA5OTswNzEzODsyOzA2NDsyMjQ7MjA4Mzg7MjsyMzg7MTMwOzIzODM4OzI7MjQ1OzIyMjsxNzkzODsyOzI1NTsyNTU7MjU1Mzg7MjsyNDU7MjQ1OzI0NTM4OzI7MjU1OzI1NTswMDAzODsyOzE1NDsyMDU7MDUwNDg7MjsyNDA7MjQ4OzI1NTQ4OzI7MjUwOzIzNTsyMTU0ODsyOzAwMDsyNTU7MjU1NDg7MjsxMjc7MjU1OzIxMjQ4OzI7MjQwOzI1NTsyNTU0ODsyOzI0NTsyNDU7MjIwNDg7MjsyNTU7MjI4OzE5NjQ4OzI7MDAwOzAwMDswMDA0ODsyOzI1NTsyMzU7MjA1NDg7MjswMDA7MDAwOzI1NTQ4OzI7MTM4OzA0MzsyMjY0ODsyOzE2NTswNDI7MDQyNDg7MjsyMjI7MTg0OzEzNTQ4OzI7MDk1OzE1ODsxNjA0ODsyOzEyNzsyNTU7MDAwNDg7MjsyMTA7MTA1OzAzMDQ4OzI7MjU1OzEyNzswODA0ODsyOzEwMDsxNDk7MjM3NDg7MjsyNTU7MjQ4OzIyMDQ4OzI7MjIwOzAyMDswNjA0ODsyOzAwMDswMDA7MTM5NDg7MjswMDA7MTM5OzEzOTQ4OzI7MTg0OzEzNDswMTE0ODsyOzE2OTsxNjk7MTY5NDg7MjswMDA7MTAwOzAwMDQ4OzI7MTg5OzE4MzsxMDc0ODsyOzEzOTswMDA7MTM5NDg7MjswODU7MTA3OzA0NzQ4OzI7MjU1OzE0MDswMDA0ODsyOzE1MzswNTA7MjA0NDg7MjsxMzk7MDAwOzAwMDQ4OzI7MjMzOzE1MDsxMjI0ODsyOzE0MzsxODg7MTQzNDg7MjswNzI7MDYxOzEzOTQ4OzI7MDQ3OzA3OTswNzk0ODsyOzAwMDsyMDY7MjA5NDg7MjsxNDg7MDAwOzIxMTQ4OzI7MjU1OzAyMDsxNDc0ODsyOzAwMDsxOTE7MjU1NDg7MjsxMDU7MTA1OzEwNTQ4OzI7MDMwOzE0NDsyNTU0ODsyOzE3ODswMzQ7MDM0NDg7MjsyNTU7MjUwOzI0MDQ4OzI7MDM0OzEzOTswMzQ0ODsyOzI1NTswMDA7MjU1NDg7MjsyMjA7MjIwOzIyMDQ4OzI7MjQ4OzI0ODsyNTU0ODsyOzI1NTsyMTU7MDAwNDg7MjsyMTg7MTY1OzAzMjQ4OzI7MTI4OzEyODsxMjg0ODsyOzAwMDsxMjg7MDAwNDg7MjsxNzM7MjU1OzA0NzQ4OzI7MjQwOzI1NTsyNDA0ODsyOzI1NTsxMDU7MTgwNDg7MjsyMDU7MDkyOzA5MjQ4OzI7MDc1OzAwMDsxMzA0ODsyOzI1NTsyNTU7MjQwNDg7MjsyNDA7MjMwOzE0MDQ4OzI7MjMwOzIzMDsyNTA0ODsyOzI1NTsyNDA7MjQ1NDg7MjsxMjQ7MjUyOzAwMDQ4OzI7MjU1OzI1MDsyMDU0ODsyOzE3MzsyMTY7MjMwNDg7MjsyNDA7MTI4OzEyODQ4OzI7MjI0OzI1NTsyNTU0ODsyOzI1MDsyNTA7MjEwNDg7MjsyMTE7MjExOzIxMTQ4OzI7MTQ0OzIzODsxNDQ0ODsyOzI1NTsxODI7MTkzNDg7MjsyNTU7MTYwOzEyMjQ4OzI7MDMyOzE3ODsxNzA0ODsyOzEzNTsyMDY7MjUwNDg7MjsxMTk7MTM2OzE1MzQ4OzI7MTc2OzE5NjsyMjI0ODsyOzI1NTsyNTU7MjI0NDg7MjswMDA7MjU1OzAwMDQ4OzI7MDUwOzIwNTswNTA0ODsyOzI1MDsyNDA7MjMwNDg7MjsxMjg7MDAwOzAwMDQ4OzI7MTAyOzIwNTsxNzA0ODsyOzAwMDswMDA7MjA1NDg7MjsxODY7MDg1OzIxMTQ4OzI7MTQ3OzExMjsyMTk0ODsyOzA2MDsxNzk7MTEzNDg7MjsxMjM7MTA0OzIzODQ4OzI7MDAwOzI1MDsxNTQ0ODsyOzA3MjsyMDk7MjA0NDg7MjsxOTk7MDIxOzEzMzQ4OzI7MDI1OzAyNTsxMTI0ODsyOzI0NTsyNTU7MjUwNDg7MjsyNTU7MjI4OzIyNTQ4OzI7MjU1OzIyODsxODE0ODsyOzI1NTsyMjI7MTczNDg7MjswMDA7MDAwOzEyODQ4OzI7MjUzOzI0NTsyMzA0ODsyOzEyODsxMjg7MDAwNDg7MjsxMDc7MTQyOzAzNTQ4OzI7MjU1OzE2NTswMDA0ODsyOzI1NTswNjk7MDAwNDg7MjsyMTg7MTEyOzIxNDQ4OzI7MjM4OzIzMjsxNzA0ODsyOzE1MjsyNTE7MTUyNDg7MjsxNzU7MjM4OzIzODQ4OzI7MjE5OzExMjsxNDc0ODsyOzI1NTsyMzk7MjEzNDg7MjsyNTU7MjE4OzE4NTQ4OzI7MjA1OzEzMzswNjM0ODsyOzI1NTsxOTI7MjAzNDg7MjsyMjE7MTYwOzIyMTQ4OzI7MTc2OzIyNDsyMzA0ODsyOzEyODswMDA7MTI4NDg7MjsxMDI7MDUxOzE1MzQ4OzI7MjU1OzAwMDswMDA0ODsyOzE4ODsxNDM7MTQzNDg7MjswNjU7MTA1OzIyNTQ4OzI7MTM5OzA2OTswMTk0ODsyOzI1MDsxMjg7MTE0NDg7MjsyNDQ7MTY0OzA5NjQ4OzI7MDQ2OzEzOTswODc0ODsyOzI1NTsyNDU7MjM4NDg7MjsxNjA7MDgyOzA0NTQ4OzI7MTkyOzE5MjsxOTI0ODsyOzEzNTsyMDY7MjM1NDg7MjsxMDY7MDkwOzIwNTQ4OzI7MTEyOzEyODsxNDQ0ODsyOzI1NTsyNTA7MjUwNDg7MjswMDA7MjU1OzEyNzQ4OzI7MDcwOzEzMDsxODA0ODsyOzIxMDsxODA7MTQwNDg7MjswMDA7MTI4OzEyODQ4OzI7MjE2OzE5MTsyMTY0ODsyOzI1NTswOTk7MDcxNDg7MjswNjQ7MjI0OzIwODQ4OzI7MjM4OzEzMDsyMzg0ODsyOzI0NTsyMjI7MTc5NDg7MjsyNTU7MjU1OzI1NTQ4OzI7MjQ1OzI0NTsyNDU0ODsyOzI1NTsyNTU7MDAwNDg7MjsxNTQ7MjA1OzA1MDM4OzU7MDM4OzU7MTM4OzU7MjM4OzU7MzM4OzU7NDM4OzU7NTM4OzU7NjM4OzU7NzM4OzU7ODM4OzU7OTM4OzU7MTAzODs1OzExMzg7NTsxMjM4OzU7MTMzODs1OzE0Mzg7NTsxNTM4OzU7MTYzODs1OzE3Mzg7NTsxODM4OzU7MTkzODs1OzIwMzg7NTsyMTM4OzU7MjIzODs1OzIzMzg7NTsyNDM4OzU7MjUzODs1OzI2Mzg7NTsyNzM4OzU7MjgzODs1OzI5Mzg7NTszMDM4OzU7MzEzODs1OzMyMzg7NTszMzM4OzU7MzQzODs1OzM1Mzg7NTszNjM4OzU7MzczODs1OzM4Mzg7NTszOTM4OzU7NDAzODs1OzQxMzg7NTs0MjM4OzU7NDMzODs1OzQ0Mzg7NTs0NTM4OzU7NDYzODs1OzQ3Mzg7NTs0ODM4OzU7NDkzODs1OzUwMzg7NTs1MTM4OzU7NTIzODs1OzUzMzg7NTs1NDM4OzU7NTUzODs1OzU2Mzg7NTs1NzM4OzU7NTgzODs1OzU5Mzg7NTs2MDM4OzU7NjEzODs1OzYyMzg7NTs2MzM4OzU7NjQzODs1OzY1Mzg7NTs2NjM4OzU7NjczODs1OzY4Mzg7NTs2OTM4OzU7NzAzODs1OzcxMzg7NTs3MjM4OzU7NzMzODs1Ozc0Mzg7NTs3NTM4OzU7NzYzODs1Ozc3Mzg7NTs3ODM4OzU7NzkzODs1OzgwMzg7NTs4MTM4OzU7ODIzODs1OzgzMzg7NTs4NDM4OzU7ODUzODs1Ozg2Mzg7NTs4NzM4OzU7ODgzODs1Ozg5Mzg7NTs5MDM4OzU7OTEzODs1OzkyMzg7NTs5MzM4OzU7OTQzODs1Ozk1Mzg7NTs5NjM4OzU7OTczODs1Ozk4Mzg7NTs5OTM4OzU7MTAwMzg7NTsxMDEzODs1OzEwMjM4OzU7MTAzMzg7NTsxMDQzODs1OzEwNTM4OzU7MTA2Mzg7NTsxMDczODs1OzEwODM4OzU7MTA5Mzg7NTsxMTAzODs1OzExMTM4OzU7MTEyMzg7NTsxMTMzODs1OzExNDM4OzU7MTE1Mzg7NTsxMTYzODs1OzExNzM4OzU7MTE4Mzg7NTsxMTkzODs1OzEyMDM4OzU7MTIxMzg7NTsxMjIzODs1OzEyMzM4OzU7MTI0Mzg7NTsxMjUzODs1OzEyNjM4OzU7MTI3Mzg7NTsxMjgzODs1OzEyOTM4OzU7MTMwMzg7NTsxMzEzODs1OzEzMjM4OzU7MTMzMzg7NTsxMzQzODs1OzEzNTM4OzU7MTM2Mzg7NTsxMzczODs1OzEzODM4OzU7MTM5Mzg7NTsxNDAzODs1OzE0MTM4OzU7MTQyMzg7NTsxNDMzODs1OzE0NDM4OzU7MTQ1Mzg7NTsxNDYzODs1OzE0NzM4OzU7MTQ4Mzg7NTsxNDkzODs1OzE1MDM4OzU7MTUxMzg7NTsxNTIzODs1OzE1MzM4OzU7MTU0Mzg7NTsxNTUzODs1OzE1NjM4OzU7MTU3Mzg7NTsxNTgzODs1OzE1OTM4OzU7MTYwMzg7NTsxNjEzODs1OzE2MjM4OzU7MTYzMzg7NTsxNjQzODs1OzE2NTM4OzU7MTY2Mzg7NTsxNjczODs1OzE2ODM4OzU7MTY5Mzg7NTsxNzAzODs1OzE3MTM4OzU7MTcyMzg7NTsxNzMzODs1OzE3NDM4OzU7MTc1Mzg7NTsxNzYzODs1OzE3NzM4OzU7MTc4Mzg7NTsxNzkzODs1OzE4MDM4OzU7MTgxMzg7NTsxODIzODs1OzE4MzM4OzU7MTg0Mzg7NTsxODUzODs1OzE4NjM4OzU7MTg3Mzg7NTsxODgzODs1OzE4OTM4OzU7MTkwMzg7NTsxOTEzODs1OzE5MjM4OzU7MTkzMzg7NTsxOTQzODs1OzE5NTM4OzU7MTk2Mzg7NTsxOTczODs1OzE5ODM4OzU7MTk5Mzg7NTsyMDAzODs1OzIwMTM4OzU7MjAyMzg7NTsyMDMzODs1OzIwNDM4OzU7MjA1Mzg7NTsyMDYzODs1OzIwNzM4OzU7MjA4Mzg7NTsyMDkzODs1OzIxMDM4OzU7MjExMzg7NTsyMTIzODs1OzIxMzM4OzU7MjE0Mzg7NTsyMTUzODs1OzIxNjM4OzU7MjE3Mzg7NTsyMTgzODs1OzIxOTM4OzU7MjIwMzg7NTsyMjEzODs1OzIyMjM4OzU7MjIzMzg7NTsyMjQzODs1OzIyNTM4OzU7MjI2Mzg7NTsyMjczODs1OzIyODM4OzU7MjI5Mzg7NTsyMzAzODs1OzIzMTM4OzU7MjMyMzg7NTsyMzMzODs1OzIzNDM4OzU7MjM1Mzg7NTsyMzYzODs1OzIzNzM4OzU7MjM4Mzg7NTsyMzkzODs1OzI0MDM4OzU7MjQxMzg7NTsyNDIzODs1OzI0MzM4OzU7MjQ0Mzg7NTsyNDUzODs1OzI0NjM4OzU7MjQ3Mzg7NTsyNDgzODs1OzI0OTM4OzU7MjUwMzg7NTsyNTEzODs1OzI1MjM4OzU7MjUzMzg7NTsyNTQzODs1OzI1NTQ4OzU7MDQ4OzU7MTQ4OzU7MjQ4OzU7MzQ4OzU7NDQ4OzU7NTQ4OzU7NjQ4OzU7NzQ4OzU7ODQ4OzU7OTQ4OzU7MTA0ODs1OzExNDg7NTsxMjQ4OzU7MTM0ODs1OzE0NDg7NTsxNTQ4OzU7MTY0ODs1OzE3NDg7NTsxODQ4OzU7MTk0ODs1OzIwNDg7NTsyMTQ4OzU7MjI0ODs1OzIzNDg7NTsyNDQ4OzU7MjU0ODs1OzI2NDg7NTsyNzQ4OzU7Mjg0ODs1OzI5NDg7NTszMDQ4OzU7MzE0ODs1OzMyNDg7NTszMzQ4OzU7MzQ0ODs1OzM1NDg7NTszNjQ4OzU7Mzc0ODs1OzM4NDg7NTszOTQ4OzU7NDA0ODs1OzQxNDg7NTs0MjQ4OzU7NDM0ODs1OzQ0NDg7NTs0NTQ4OzU7NDY0ODs1OzQ3NDg7NTs0ODQ4OzU7NDk0ODs1OzUwNDg7NTs1MTQ4OzU7NTI0ODs1OzUzNDg7NTs1NDQ4OzU7NTU0ODs1OzU2NDg7NTs1NzQ4OzU7NTg0ODs1OzU5NDg7NTs2MDQ4OzU7NjE0ODs1OzYyNDg7NTs2MzQ4OzU7NjQ0ODs1OzY1NDg7NTs2NjQ4OzU7Njc0ODs1OzY4NDg7NTs2OTQ4OzU7NzA0ODs1OzcxNDg7NTs3MjQ4OzU7NzM0ODs1Ozc0NDg7NTs3NTQ4OzU7NzY0ODs1Ozc3NDg7NTs3ODQ4OzU7Nzk0ODs1OzgwNDg7NTs4MTQ4OzU7ODI0ODs1OzgzNDg7NTs4NDQ4OzU7ODU0ODs1Ozg2NDg7NTs4NzQ4OzU7ODg0ODs1Ozg5NDg7NTs5MDQ4OzU7OTE0ODs1OzkyNDg7NTs5MzQ4OzU7OTQ0ODs1Ozk1NDg7NTs5NjQ4OzU7OTc0ODs1Ozk4NDg7NTs5OTQ4OzU7MTAwNDg7NTsxMDE0ODs1OzEwMjQ4OzU7MTAzNDg7NTsxMDQ0ODs1OzEwNTQ4OzU7MTA2NDg7NTsxMDc0ODs1OzEwODQ4OzU7MTA5NDg7NTsxMTA0ODs1OzExMTQ4OzU7MTEyNDg7NTsxMTM0ODs1OzExNDQ4OzU7MTE1NDg7NTsxMTY0ODs1OzExNzQ4OzU7MTE4NDg7NTsxMTk0ODs1OzEyMDQ4OzU7MTIxNDg7NTsxMjI0ODs1OzEyMzQ4OzU7MTI0NDg7NTsxMjU0ODs1OzEyNjQ4OzU7MTI3NDg7NTsxMjg0ODs1OzEyOTQ4OzU7MTMwNDg7NTsxMzE0ODs1OzEzMjQ4OzU7MTMzNDg7NTsxMzQ0ODs1OzEzNTQ4OzU7MTM2NDg7NTsxMzc0ODs1OzEzODQ4OzU7MTM5NDg7NTsxNDA0ODs1OzE0MTQ4OzU7MTQyNDg7NTsxNDM0ODs1OzE0NDQ4OzU7MTQ1NDg7NTsxNDY0ODs1OzE0NzQ4OzU7MTQ4NDg7NTsxNDk0ODs1OzE1MDQ4OzU7MTUxNDg7NTsxNTI0ODs1OzE1MzQ4OzU7MTU0NDg7NTsxNTU0ODs1OzE1NjQ4OzU7MTU3NDg7NTsxNTg0ODs1OzE1OTQ4OzU7MTYwNDg7NTsxNjE0ODs1OzE2MjQ4OzU7MTYzNDg7NTsxNjQ0ODs1OzE2NTQ4OzU7MTY2NDg7NTsxNjc0ODs1OzE2ODQ4OzU7MTY5NDg7NTsxNzA0ODs1OzE3MTQ4OzU7MTcyNDg7NTsxNzM0ODs1OzE3NDQ4OzU7MTc1NDg7NTsxNzY0ODs1OzE3NzQ4OzU7MTc4NDg7NTsxNzk0ODs1OzE4MDQ4OzU7MTgxNDg7NTsxODI0ODs1OzE4MzQ4OzU7MTg0NDg7NTsxODU0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LjMvc3JjL2RmYS5ycy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvbmZhL2NvbnRpZ3VvdXMucnMATvAgAG0AAABxAgAAFgAAAE7wIABtAAAAcwIAAA0AAABO8CAAbQAAAHUCAAANAAAATvAgAG0AAAApAgAACQAAAE7wIABtAAAATwIAAA0AAABO8CAAbQAAAEoCAAANAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9uZmEvbm9uY29udGlndW91cy5ycxzxIABwAAAAIgEAACAAAAAc8SAAcAAAADIBAAAhAAAAHPEgAHAAAABUAQAAHQAAABzxIABwAAAAZgEAABcAAABleHBlY3RlZCBudW1iZXIgb2YgcGF0dGVybnMgdG8gbWF0Y2ggcGF0dGVybiBJRADM8SAALwAAABzxIABwAAAANAQAAA0AAAAc8SAAcAAAADkEAAAjAAAAHPEgAHAAAABVBAAAOQAAABzxIABwAAAAygMAABkAAAAc8SAAcAAAAMsDAAAaAAAAHPEgAHAAAADPAwAAGAAAABzxIABwAAAA4wMAABkAAAAc8SAAcAAAABYEAAAZAAAAHPEgAHAAAAAXBAAAGAAAABzxIABwAAAAGAQAABoAAAAc8SAAcAAAABkEAAAfAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL3NlYXJjaC5ycwAAtPIgAGoAAABOAQAACQAAAGludmFsaWQgbWF0Y2ggc3BhbgAAMPMgABIAAAC08iAAagAAAFsDAAAJAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9wYWNrZWQvYXBpLnJzAAAAXPMgAGkAAAAZAgAAHAAAAFzzIABpAAAAHwIAADEAAAAAAAAABAAAAAQAAABKBAAAAAAAAAQAAAAEAAAAiwAAAAAAAAAIAAAABAAAAEsEAAAAAAAAAAAAAAEAAABMBAAAAAAAAAgAAAAEAAAAwQMAAE0EAAAEAAAABAAAAE4EAABPBAAAEAAAAAgAAABQBAAAAAAAAAgAAAAIAAAAvgMAAFEEAAAEAAAABAAAAFIEAAAAAAAAAAAAAAEAAAC/AwAAAAAAAAgAAAAIAAAAUwQAAAAAAAAEAAAABAAAAFQEAAAAAAAAAAAAAAEAAABVBAAASvkmAEkAAAAXCAAAKQAAAHBhdHRlcm4AAAAAAAQAAAAEAAAAKQAAAAAAAAAEAAAABAAAAEgAAAAAAAAABAAAAAQAAAAqAAAAUHJvcGVydGllcwAAAAAAAAgAAAAEAAAAVgQAAAAAAAAEAAAABAAAAFcEAAAAAAAAAQAAAAEAAABEAAAAbWluaW11bV9sZW5tYXhpbXVtX2xlbmxvb2tfc2V0bG9va19zZXRfcHJlZml4bG9va19zZXRfc3VmZml4bG9va19zZXRfcHJlZml4X2FueWxvb2tfc2V0X3N1ZmZpeF9hbnl1dGY4ZXhwbGljaXRfY2FwdHVyZXNfbGVuc3RhdGljX2V4cGxpY2l0X2NhcHR1cmVzX2xlbmxpdGVyYWxhbHRlcm5hdGlvbl9saXRlcmFsAAAAPPUgAAsAAABH9SAACwAAAFL1IAAIAAAAWvUgAA8AAABp9SAADwAAAHj1IAATAAAAi/UgABMAAACe9SAABAAAAKL1IAAVAAAAt/UgABwAAADT9SAABwAAANr1IAATAAAAUHJvcGVydGllc0kATykmAHAAAAC8AAAAKgAAAE8pJgBwAAAAuQAAACoAAABPKSYAcAAAADoAAAAVAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy42L3NyYy9tZW1tZW0vc2VhcmNoZXIucnOM9iAAaAAAAHQCAAAbAAAAVHJ5RnJvbUludEVycm9yU2VhcmNoZXJwYXR0ZXJuc3JhYmlua2FycHNlYXJjaF9raW5kVGVkZHlSYWJpbkthcnBNYXRjaEVycm9yU3RhbmRhcmRMZWZ0bW9zdEZpcnN0TGVmdG1vc3RMb25nZXN0AOzvIABiAAAA4QAAABMAAADs7yAAYgAAAAUBAAAaAAAA7O8gAGIAAAAdAQAAFQAAAOzvIABiAAAAHQEAAB0AAADs7yAAYgAAABYBAAAVAAAASW52YWxpZElucHV0QW5jaG9yZWRJbnZhbGlkSW5wdXRVbmFuY2hvcmVkVW5zdXBwb3J0ZWRTdHJlYW1VbnN1cHBvcnRlZE92ZXJsYXBwaW5nVW5zdXBwb3J0ZWRFbXB0eWJ1Y2tldHNoYXNoX2xlbmhhc2hfMnBvdy9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvYWxsb2Mvc3JjL2JveGVkLnJzAD34IABKAAAA6QYAAB8AAABO8CAAbQAAAMUAAAAcAAAATvAgAG0AAADdAAAAGQAAAE7wIABtAAAA3QAAACIAAABO8CAAbQAAAOoAAAAtAAAATvAgAG0AAADnAAAALQAAAE7wIABtAAAA5AAAAC0AAABO8CAAbQAAAOEAAAAtAAAATvAgAG0AAADUAAAAKQAAAE7wIABtAAAAzgAAACkAAABO8CAAbQAAAPUAAAAgAAAATvAgAG0AAAAaAQAAGgAAAE7wIABtAAAAMAEAABcAAABO8CAAbQAAACkBAAA3AAAAHPEgAHAAAACZAgAAGgAAABzxIABwAAAArQIAACsAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvZGZhL29uZXBhc3MucnOI+SAAbAAAADYCAAAcAAAAiPkgAGwAAABcAgAACQAAAIj5IABsAAAAcgIAACwAAABtdWx0aXBsZSBlcHNpbG9uIHRyYW5zaXRpb25zIHRvIG1hdGNoIHN0YXRlAIj5IABsAAAAZwIAADEAAAB0b28gbWFueSBleHBsaWNpdCBjYXB0dXJpbmcgZ3JvdXBzIChtYXggaXMgMTYpbWF0Y2ggc3RhdGVzIHNob3VsZCBiZSBhIHByb3BlciBzdWJzZXQgb2YgYWxsIHN0YXRlcwAAiPkgAGwAAADtAgAAOwAAAGNvbmZsaWN0aW5nIHRyYW5zaXRpb25hc3NlcnRpb24gZmFpbGVkOiBzZWxmLmRmYS5zdGFydHMuaXNfZW1wdHkoKQAAiPkgAGwAAAAxAwAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuZGZhLnN0YXJ0cy5sZW4oKSA9PSBwaWQub25lX21vcmUoKQAAAIj5IABsAAAAMwMAABoAAACI+SAAbAAAADYDAAAZAAAAiPkgAGwAAABNAwAAMQAAAIj5IABsAAAAVAMAABsAAACI+SAAbAAAAFUDAAAhAAAAbXVsdGlwbGUgZXBzaWxvbiB0cmFuc2l0aW9ucyB0byBzYW1lIHN0YXRlAACI+SAAbAAAAJcDAAAUAAAAiPkgAGwAAADHBwAAKgAAAIj5IABsAAAAygcAABoAAACI+SAAbAAAAM4HAAAmAAAAiPkgAGwAAADoBwAAHQAAAIj5IABsAAAA6AcAAC8AAACI+SAAbAAAAOkHAAAbAAAAiPkgAGwAAADpBwAAKwAAAIj5IABsAAAAVwgAAC4AAACI+SAAbAAAAKwIAAASAAAAiPkgAGwAAAC3CAAAFAAAAIj5IABsAAAA1AgAABMAAACI+SAAbAAAANwIAAATAAAAiPkgAGwAAADsCAAAGwAAAIj5IABsAAAA9wgAACMAAACI+SAAbAAAAP0IAAATAAAAiPkgAGwAAAAVCQAAQQAAAIj5IABsAAAAIgkAABgAAACI+SAAbAAAACwJAAAmAAAAb25lcGFzczo6REZBKApzdGF0ZSBsZW5ndGg6IB79IAAOAAAAKNMmAAEAAABwYXR0ZXJuIGxlbmd0aDogPP0gABAAAAAo0yYAAQAAACkKAABc/SAAAgAAAFNUQVJUKEFMTCk6IGj9IAAMAAAAKNMmAAEAAABTVEFSVChwYXR0ZXJuOiApOiAAAIT9IAAPAAAAk/0gAAMAAAAo0yYAAQAAACAgKiBEIAAAAgAAAAAAAAAAAAYAAAAAAAAAAAAgAADpICgAAND9IAACAAAAs0AnAAEAAAAgPT4gAQAAAAAAAAC4zSYAAQAAAOT9IAAEAAAAAQAAAAAAAADk/SAABAAAACAoTVcpAAAAiPkgAGwAAAAOCgAAIQAAALjNJgABAAAATi9BU2Vycm9yIGJ1aWxkaW5nIE5GQS9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9kZmEvcmVtYXBwZXIucnMARv4gAG0AAABuAAAAEgAAAEb+IABtAAAAjQAAACAAAABG/iAAbQAAAJUAAAAgAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL2h5YnJpZC9kZmEucnMA5P4gAGsAAADHBAAAHgAAAOT+IABrAAAA6QUAAB4AAABubyBxdWl0IGluIHN0YXJ0IHdpdGhvdXQgbG9vay1iZWhpbmTk/iAAawAAAEUGAAAWAAAAYXNzZXJ0aW9uIGZhaWxlZDogaWQuaXNfbWF0Y2goKQDk/iAAawAAALUGAAAJAAAAbm8gaW4tcHJvZ3Jlc3Mgc2VhcmNoIHRvIHVwZGF0ZQDk/iAAawAAALcHAAAkAAAAbm8gaW4tcHJvZ3Jlc3Mgc2VhcmNoIHRvIGZpbmlzaADk/iAAawAAAMMHAAAiAAAA5P4gAGsAAABTCAAAHwAAAOT+IABrAAAABAkAABsAAADk/iAAawAAABYJAAA6AAAAYWRkaW5nIG9uZSBzdGF0ZSBhZnRlciBjYWNoZSBjbGVhciBtdXN0IHdvcmvk/iAAawAAALwJAAASAAAAY2Fubm90IHNhdmUgc2VudGluZWwgc3RhdGUAAKAAIQAaAAAA5P4gAGsAAACpCQAADQAAAOT+IABrAAAA5gkAAEAAAADk/iAAawAAAOcJAABHAAAA5P4gAGsAAADoCQAARwAAAOT+IABrAAAA6QkAAAkAAADk/iAAawAAAOoJAAAJAAAA5P4gAGsAAADrCQAACQAAAHN0YXRlIHNhdmVyIGRvZXMgbm90IGhhdmUgc2F2ZWQgc3RhdGUgSUTk/iAAawAAABQKAAAOAAAAaW52YWxpZCAnZnJvbScgaWQ6IABsASEAEwAAAOT+IABrAAAAKQoAAAkAAABpbnZhbGlkICd0bycgaWQ6IAAAAJgBIQARAAAA5P4gAGsAAAAqCgAACQAAAOT+IABrAAAALQoAABkAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmFzX3JlZigpLmlzX3ZhbGlkKGlkKeT+IABrAAAAOwoAAAkAAABhdHRlbXB0ZWQgdG8gc2VhcmNoIGZvciBhIHNwZWNpZmljIHBhdHRlcm4gd2l0aG91dCBlbmFibGluZyBzdGFydHNfZm9yX2VhY2hfcGF0dGVybgAQAiEAUwAAAOT+IABrAAAAQQoAABEAAADk/iAAawAAAEoKAAAaAAAA5P4gAGsAAACOCgAAHQAAAOT+IABrAAAAlgoAABsAAADk/iAAawAAALIKAAAzAAAA5P4gAGsAAAC7CgAAMwAAAAAAAAAAAAAAAAAAAAIAAABjYW5ub3QgYnVpbGQgbGF6eSBERkFzIGZvciByZWdleGVzIHdpdGggVW5pY29kZSB3b3JkIGJvdW5kYXJpZXM7IHN3aXRjaCB0byBBU0NJSSB3b3JkIGJvdW5kYXJpZXMsIG9yIGhldXJpc3RpY2FsbHkgZW5hYmxlIFVuaWNvZGUgd29yZCBib3VuZGFyaWVzIG9yIHVzZSBhIGRpZmZlcmVudCByZWdleCBlbmdpbmUpIGFyZSBub3Qgc3VwcG9ydGVkIG9yIGVuYWJsZWRyZXZlcnNlIHNlYXJjaCBtdXN0IG1hdGNoIGlmIGZvcndhcmQgc2VhcmNoIGRvZXMvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvaHlicmlkL3JlZ2V4LnJz2wMhAG0AAADxAQAADgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9oeWJyaWQvc2VhcmNoLnJzAABYBCEAbgAAAFkAAAApAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogc2lkIGJlaW5nIHVua25vd24gaXMgYSBidWfYBCEARAAAAFgEIQBuAAAAHQEAABEAAABYBCEAbgAAABoBAAAtAAAAWAQhAG4AAABXAQAAKQAAAFgEIQBuAAAArQEAABEAAABYBCEAbgAAAKoBAAAtAAAAWAQhAG4AAAD7AQAAJQAAAFgEIQBuAAAAIgIAABEAAABYBCEAbgAAAB0CAAAVAAAAWAQhAG4AAADiAgAAFAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGZvdW5kIGltcG9zc2libGUgZXJyb3IgaW4gbWV0YSBlbmdpbmU6IAAAALQFIQBRAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL21ldGEvZXJyb3IucnMAEAYhAGsAAADtAAAAEQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9tZXRhL2xpbWl0ZWQucnMAAACMBiEAbQAAAI4AAAAlAAAAjAYhAG0AAADoAAAAFAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9tZXRhL2xpdGVyYWwucnMAAAAcByEAbQAAAB4AAAANAAAAHAchAG0AAAA+AAAADgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGxpdGVyYWwsIGdvdCCsByEAQAAAABwHIQBtAAAAOAAAAB4AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBsaXRlcmFsIG9yIGNvbmNhdCwgZ290IAAABAghAEoAAAAcByEAbQAAADwAAAASAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL21ldGEvcmVnZXgucnMAaAghAGsAAACI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AAAAFS4hAHcAAADKAgAAMQAAABUuIQB3AAAAxgIAAAkAAAAVLiEAdwAAAAADAAAKAAAAFS4hAHcAAAD9AgAADgAAABUuIQB3AAAAHAMAAB4AAABhc3NlcnRpb24gZmFpbGVkOiBzdGFjay5pc19lbXB0eSgpL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvZGV0ZXJtaW5pemUvbW9kLnJzAP4vIQB1AAAAeAEAAAUAAAD+LyEAdQAAAIABAAALAAAA/i8hAHUAAACkAQAAGwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL2VtcHR5LnJzAKQwIQBrAAAA+QAAADoAAAA80CYAbAAAAPsDAAAJAAAA////f1BhdHRlcm5TZXQgc2hvdWxkIGhhdmUgc3VmZmljaWVudCBjYXBhY2l0eQAAPNAmAGwAAADLBAAADgAAAHF1aXQgc2VhcmNoIGFmdGVyIG9ic2VydmluZyBieXRlICBhdCBvZmZzZXQgcDEhACEAAACRMSEACwAAAGdhdmUgdXAgc2VhcmNoaW5nIGF0IG9mZnNldCCsMSEAHAAAAGhheXN0YWNrIG9mIGxlbmd0aCAgaXMgdG9vIGxvbmcA0DEhABMAAADjMSEADAAAAHVuYW5jaG9yZWQgc2VhcmNoZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb3IgZW5hYmxlZGFuY2hvcmVkIHNlYXJjaGVzIGFyZSBub3Qgc3VwcG9ydGVkIG9yIGVuYWJsZWRhbmNob3JlZCBzZWFyY2hlcyBmb3IgYSBzcGVjaWZpYyBwYXR0ZXJuICheMiEAKgAAAI0DIQAeAAAAc3BhcnNlIHNldCBjYXBhY2l0eSBjYW5ub3QgZXhjY2VkIAAAmDIhACIAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9zcGFyc2Vfc2V0LnJzxDIhAHAAAACCAAAACQAAACBleGNlZWRzIGNhcGFjaXR5IG9mICB3aGVuIGluc2VydGluZyAAAAABAAAAAAAAAEQzIQAVAAAAWTMhABAAAADEMiEAcAAAALIAAAAJAAAAxDIhAHAAAAC9AAAAFAAAAMQyIQBwAAAAxQAAACAAAADEMiEAcAAAAMYAAAA0AAAAxDIhAHAAAADRAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC91dGY4LnJzAADUNCEAagAAAEMAAAArAAAA1DQhAGoAAABVAAAAOAAAANQ0IQBqAAAAWAAAABgAAADjBAAAYAAAABAAAADkBAAA5QQAAAQAAAAEAAAAxAAAAAAAAAAAAQAAAQAAAOYEAAAAAAAAAAEAAAEAAACFAAAAAAAAACAAAAAQAAAA5wQAAGNvbmZpZ25mYXN0cmlkZTJzdGFydF9tYXBjbGFzc2VzcXVpdHNldGNhY2hlX2NhcGFjaXR5AAAAwDUhAAYAAADGNSEAAwAAAMk1IQAHAAAA0DUhAAkAAADZNSEABwAAAOA1IQAHAAAA5zUhAA4AAABERkEAAAAAAAEAAAABAAAAkQAAAOgEAAAQAAAABAAAAKEAAAAAAAAAAQAAAAEAAADpBAAAAAAAADAAAAAQAAAA6gQAAAAAAAAIAAAABAAAAOsEAAAAAAAABAAAAAQAAADsBAAAbWF0Y2hfa2luZHByZXN0YXJ0c19mb3JfZWFjaF9wYXR0ZXJuYnl0ZV9jbGFzc2VzdW5pY29kZV93b3JkX2JvdW5kYXJ5c3BlY2lhbGl6ZV9zdGFydF9zdGF0ZXNza2lwX2NhY2hlX2NhcGFjaXR5X2NoZWNrbWluaW11bV9jYWNoZV9jbGVhcl9jb3VudG1pbmltdW1fYnl0ZXNfcGVyX3N0YXRlAAAAlDYhAAoAAACeNiEAAwAAAKE2IQAXAAAAuDYhAAwAAADENiEAFQAAAOA1IQAHAAAA2TYhABcAAADnNSEADgAAAPA2IQAZAAAACTchABkAAAAiNyEAFwAAAENvbmZpZ0NhY2hlRXJyb3JMYXp5U3RhdGVJRExhenlTdGF0ZUlERXJyb3JhdHRlbXB0ZWRmb3J3YXJkcmV2ZXJzZVJlZ2V4SW5mb1JlZ2V4SW5mb0lwcm9wc191bmlvbgAAAAABAAAAAQAAAO0EAAB1dGY4X2VtcHR5YXV0b3ByZXdoaWNoX2NhcHR1cmVzbmZhX3NpemVfbGltaXRvbmVwYXNzX3NpemVfbGltaXRoeWJyaWRfY2FjaGVfY2FwYWNpdHloeWJyaWRkZmFkZmFfc2l6ZV9saW1pdGRmYV9zdGF0ZV9saW1pdG9uZXBhc3NiYWNrdHJhY2tsaW5lX3Rlcm1pbmF0b3IAAACUNiEACgAAAAQ4IQAKAAAADjghAAcAAACeNiEAAwAAABU4IQAOAAAAIzghAA4AAAAxOCEAEgAAAEM4IQAVAAAAWDghAAYAAABeOCEAAwAAAGE4IQAOAAAAbzghAA8AAAB+OCEABwAAAIU4IQAJAAAAuDYhAAwAAACOOCEADwAAAFByZWdyb3VwX2luZm8AAADuBAAABAAAAAQAAADvBAAA8AQAABAAAAAEAAAA8QQAAPIEAAAEAAAABAAAAPMEAAD0BAAAGAAAAAQAAAD1BAAA9gQAABwAAAAEAAAA9wQAAPgEAAA8AQAABAAAAPkEAAD6BAAAIAUAABAAAAD7BAAAAAAAAAQAAAAEAAAA/AQAAGluZm9uZmFyZXZwaWtldm2wOSEABAAAAJ42IQADAAAAxjUhAAMAAAC0OSEABgAAALo5IQAGAAAAhTghAAkAAAB+OCEABwAAAFg4IQAGAAAAXjghAAMAAABDb3JlUmV2ZXJzZUFuY2hvcmVkY29yZVJldmVyc2VTdWZmaXhSZXZlcnNlSW5uZXJwcmVpbm5lclBpa2VWTVBpa2VWTUVuZ2luZUJvdW5kZWRCYWNrdHJhY2tlckJvdW5kZWRCYWNrdHJhY2tlckVuZ2luZU9uZVBhc3NPbmVQYXNzRW5naW5lSHlicmlkSHlicmlkRW5naW5lREZBRW5naW5lUmV2ZXJzZUh5YnJpZFJldmVyc2VIeWJyaWRFbmdpbmVSZXZlcnNlREZBUmV2ZXJzZURGQUVuZ2luZXZpc2l0ZWRfY2FwYWNpdHlBbGxJbXBsaWNpdFRvb01hbnlQYXR0ZXJuc0J5dGVTZXRiaXRzR3JvdXBJbmZvR3JvdXBJbmZvSW5uZXJzbG90X3Jhbmdlc25hbWVfdG9faW5kZXhpbmRleF90b19uYW1lbWVtb3J5X2V4dHJhR3JvdXBJbmZvRXJyb3JlcnJUb29NYW55R3JvdXBzbWluaW11bU1pc3NpbmdHcm91cHNGaXJzdE11c3RCZVVubmFtZWREdXBsaWNhdGVyZWdleDogdGhyZWFkIElEIGFsbG9jYXRpb24gc3BhY2UgZXhoYXVzdGVkAACvOyEAKwAAAGzPJgBqAAAAXgEAABEAAABBaG9Db3Jhc2lja2FjTWVtY2hyTWVtY2hyMk1lbWNocjNNZW1tZW1maW5kZXJzZWFyY2hlcmFuY2hvcmVkX2FjUHJlZmlsdGVyaXNfZmFzdG1heF9uZWVkbGVfbGVuU21hbGxJbmRleFNtYWxsSW5kZXhFcnJvclBhdHRlcm5JRC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3ByaW1pdGl2ZXMucnN0PCEAcAAAAPECAAABAAAAUGF0dGVybklERXJyb3IAAHQ8IQBwAAAA8gIAAAEAAABTdGF0ZUlEY2Fubm90IGNyZWF0ZSBpdGVyYXRvciBmb3IgU3RhdGVJRCB3aGVuIG51bWJlciBvZiBlbGVtZW50cyBleGNlZWQgAAAAGz0hAEIAAABOb25Xb3JkQnl0ZVdvcmRCeXRlVGV4dExpbmVMRkxpbmVDUkN1c3RvbUxpbmVUZXJtaW5hdG9yUGF0dGVyblNldEluc2VydEVycm9yY2FwYWNpdHlOb1llc1BhdHRlcm5RdWl0Ynl0ZUdhdmVVcEhheXN0YWNrVG9vTG9uZ2xlblVuc3VwcG9ydGVkQW5jaG9yZWRtb2RlAP0EAAAMAAAABAAAAP4EAAD/BAAAQAQAAAAAAAAAAAAAAQAAAAAFAAAAAAAAAQAAAAEAAAABBQAAAgUAABQAAAAEAAAAAwUAAAAAAAAIAAAABAAAAMEDAAAAAAAAAAAAAAEAAAAEBQAAAAAAAAQAAAAEAAAABQUAAFRyeUZyb21DaGFyRXJyb3IuLj0gKGV4aGF1c3RlZCkvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1zeW50YXgtMC44LjQvc3JjL2FzdC9wYXJzZS5ycwCXPiEAaAAAAMUBAAA1AAAAlz4hAGgAAADKAQAAFwAAAJc+IQBoAAAA5AEAABcAAABleHBlY3RlZCBjaGFyIGF0IG9mZnNldCAwPyEAGAAAAJc+IQBoAAAA5wEAACAAAACXPiEAaAAAAPMBAAAoAAAAlz4hAGgAAAD2AQAALAAAAJc+IQBoAAAA+gEAABcAAACXPiEAaAAAAAICAAAaAAAAPz0/IT88PT88IQAAlz4hAGgAAABFAgAAKAAAAJc+IQBoAAAARQIAADUAAACXPiEAaAAAAFMCAAAXAAAAlz4hAGgAAABhAgAAJQAAAJc+IQBoAAAAbQIAABcAAACXPiEAaAAAAIQCAABHAAAAlz4hAGgAAACGAgAAMgAAAHwAAACXPiEAaAAAAJoCAAAJAAAAlz4hAGgAAACmAgAAMwAAAJc+IQBoAAAAqAIAABcAAACXPiEAaAAAAKsCAAAPAAAAKAAAAJc+IQBoAAAAyAIAAB0AAACXPiEAaAAAANECAAArAAAAlz4hAGgAAADRAgAAOAAAAJc+IQBoAAAAwAIAAAkAAAApAAAAlz4hAGgAAADsAgAAMwAAAJc+IQBoAAAACgMAABoAAACXPiEAaAAAABEDAAAbAAAAlz4hAGgAAADrAgAACQAAAJc+IQBoAAAAHgMAADMAAACXPiEAaAAAACMDAAAaAAAAlz4hAGgAAAA2AwAAEQAAAFsAAACXPiEAaAAAAFADAAAOAAAAlz4hAGgAAABRAwAADgAAAJc+IQBoAAAASwMAAAkAAABdAAAAlz4hAGgAAABsAwAAMwAAAHVuZXhwZWN0ZWQgZW1wdHkgY2hhcmFjdGVyIGNsYXNzIHN0YWNrAABgQSEAJgAAAJc+IQBoAAAAdwMAABEAAAB1bmV4cGVjdGVkIENsYXNzU3RhdGU6Ok9wAAAAoEEhABkAAACXPiEAaAAAAIADAAARAAAAlz4hAGgAAABoAwAACQAAAJc+IQBoAAAAlgMAADAAAABubyBvcGVuIGNoYXJhY3RlciBjbGFzcyBmb3VuZAAAAPRBIQAdAAAAlz4hAGgAAACdAwAACQAAAJc+IQBoAAAArwMAAA4AAACXPiEAaAAAALADAAAOAAAAlz4hAGgAAAC7AwAAMwAAAJc+IQBoAAAAwgMAABUAAACXPiEAaAAAAOUDAAAhAAAAlz4hAGgAAAD8AwAAIgAAAJc+IQBoAAAABAQAAC4AAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmNoYXIoKSA9PSAnPycgfHwgc2VsZi5jaGFyKCkgPT0gJyonIHx8IHNlbGYuY2hhcigpID09ICcrJ5c+IQBoAAAAHQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmNoYXIoKSA9PSAneyeXPiEAaAAAAFMEAAAJAAAAP1A8PzwAAAA6AAAAlz4hAGgAAAD6BAAAEQAAAJc+IQBoAAAAzAQAAAkAAAA+AAAAlz4hAGgAAAAwBQAAIwAAAJc+IQBoAAAALgUAAAkAAACXPiEAaAAAAF0FAAAyAAAAlz4hAGgAAABrBQAAMgAAAFwAAACXPiEAaAAAAMgFAAAJAAAAewAAAJc+IQBoAAAAbQYAADEAAABzdGFydGVuZHN0YXJ0LWhhbGZlbmQtaGFsZgAAlz4hAGgAAABVBgAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYucGFyc2VyKCkub2N0YWwAAACXPiEAaAAAAJMGAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogJzAnIDw9IHNlbGYuY2hhcigpICYmIHNlbGYuY2hhcigpIDw9ICc3JwAAlz4hAGgAAACUBgAACQAAAJc+IQBoAAAAnQYAACQAAAB2YWxpZCBvY3RhbCBudW1iZXIAAJc+IQBoAAAAoQYAACsAAABVbmljb2RlIHNjYWxhciB2YWx1ZZc+IQBoAAAApAYAACsAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmNoYXIoKSA9PSAneCcgfHwgc2VsZi5jaGFyKCkgPT0gJ3UnIHx8IHNlbGYuY2hhcigpID09ICdVJ5c+IQBoAAAAsgYAAAkAAACXPiEAaAAAANMGAAAxAAAAlz4hAGgAAAD+BgAAMQAAAH0AAACXPiEAaAAAABQHAAAJAAAAlz4hAGgAAAA0BwAAMQAAAJc+IQBoAAAAZQcAADMAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmJ1bXBfaWYoIiYmIimXPiEAaAAAAHQHAAAVAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5idW1wX2lmKCItLSIplz4hAGgAAAB7BwAAFQAAAH5+YXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5idW1wX2lmKCJ+fiIpAACXPiEAaAAAAIIHAAAVAAAAlz4hAGgAAABWBwAACQAAAJc+IQBoAAAA6QcAAAkAAACXPiEAaAAAAF0IAAAjAAAAOl0AAJc+IQBoAAAARAgAAAkAAACXPiEAaAAAAHoIAAAxAAAAlz4hAGgAAACVCAAAIwAAAJc+IQBoAAAAlggAACQAAACXPiEAaAAAAJ4IAAAjAAAAlz4hAGgAAACfCAAAJAAAAJc+IQBoAAAApwgAACMAAACXPiEAaAAAAKgIAAAkAAAAlz4hAGgAAACMCAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuY2hhcigpID09ICdwJyB8fCBzZWxmLmNoYXIoKSA9PSAnUCcAAJc+IQBoAAAAeAgAAAkAAABleHBlY3RlZCB2YWxpZCBQZXJsIGNsYXNzIGJ1dCBnb3QgJwA0RyEAIwAAAJE5JgABAAAAlz4hAGgAAADRCAAAEgAAAJc+IQBoAAAAAAkAADAAAABtcy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNC9zcmMvYXN0L3Zpc2l0b3IucnOKRyEAagAAANoAAAAcAAAAikchAGoAAABCAQAAIgAAAGV4Y2VlZGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjYXB0dXJpbmcgZ3JvdXBzICgAAAAUSCEAMQAAALNAJwABAAAAaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgZm91bmQgaW4gY2hhcmFjdGVyIGNsYXNzaW52YWxpZCBjaGFyYWN0ZXIgY2xhc3MgcmFuZ2UsIHRoZSBzdGFydCBtdXN0IGJlIDw9IHRoZSBlbmRpbnZhbGlkIHJhbmdlIGJvdW5kYXJ5LCBtdXN0IGJlIGEgbGl0ZXJhbHVuY2xvc2VkIGNoYXJhY3RlciBjbGFzc2RlY2ltYWwgbGl0ZXJhbCBlbXB0eWRlY2ltYWwgbGl0ZXJhbCBpbnZhbGlkaGV4YWRlY2ltYWwgbGl0ZXJhbCBlbXB0eWhleGFkZWNpbWFsIGxpdGVyYWwgaXMgbm90IGEgVW5pY29kZSBzY2FsYXIgdmFsdWVpbnZhbGlkIGhleGFkZWNpbWFsIGRpZ2l0aW5jb21wbGV0ZSBlc2NhcGUgc2VxdWVuY2UsIHJlYWNoZWQgZW5kIG9mIHBhdHRlcm4gcHJlbWF0dXJlbHl1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlZGFuZ2xpbmcgZmxhZyBuZWdhdGlvbiBvcGVyYXRvcmR1cGxpY2F0ZSBmbGFnZmxhZyBuZWdhdGlvbiBvcGVyYXRvciByZXBlYXRlZGV4cGVjdGVkIGZsYWcgYnV0IGdvdCBlbmQgb2YgcmVnZXh1bnJlY29nbml6ZWQgZmxhZ2R1cGxpY2F0ZSBjYXB0dXJlIGdyb3VwIG5hbWVlbXB0eSBjYXB0dXJlIGdyb3VwIG5hbWVpbnZhbGlkIGNhcHR1cmUgZ3JvdXAgY2hhcmFjdGVydW5jbG9zZWQgY2FwdHVyZSBncm91cCBuYW1ldW5jbG9zZWQgZ3JvdXB1bm9wZW5lZCBncm91cGV4Y2VlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgbmVzdGVkIHBhcmVudGhlc2VzL2JyYWNrZXRzICj2SiEAOgAAALNAJwABAAAAaW52YWxpZCByZXBldGl0aW9uIGNvdW50IHJhbmdlLCB0aGUgc3RhcnQgbXVzdCBiZSA8PSB0aGUgZW5kcmVwZXRpdGlvbiBxdWFudGlmaWVyIGV4cGVjdHMgYSB2YWxpZCBkZWNpbWFsdW5jbG9zZWQgY291bnRlZCByZXBldGl0aW9ucmVwZXRpdGlvbiBvcGVyYXRvciBtaXNzaW5nIGV4cHJlc3Npb25zcGVjaWFsIHdvcmQgYm91bmRhcnkgYXNzZXJ0aW9uIGlzIGVpdGhlciB1bmNsb3NlZCBvciBjb250YWlucyBhbiBpbnZhbGlkIGNoYXJhY3RlcnVucmVjb2duaXplZCBzcGVjaWFsIHdvcmQgYm91bmRhcnkgYXNzZXJ0aW9uLCB2YWxpZCBjaG9pY2VzIGFyZTogc3RhcnQsIGVuZCwgc3RhcnQtaGFsZiBvciBlbmQtaGFsZmZvdW5kIGVpdGhlciB0aGUgYmVnaW5uaW5nIG9mIGEgc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IG9yIGEgYm91bmRlZCByZXBldGl0aW9uIG9uIGEgXGIgd2l0aCBhbiBvcGVuaW5nIGJyYWNlLCBidXQgbm8gY2xvc2luZyBicmFjZWludmFsaWQgVW5pY29kZSBjaGFyYWN0ZXIgY2xhc3NiYWNrcmVmZXJlbmNlcyBhcmUgbm90IHN1cHBvcnRlZGxvb2stYXJvdW5kLCBpbmNsdWRpbmcgbG9vay1haGVhZCBhbmQgbG9vay1iZWhpbmQsIGlzIG5vdCBzdXBwb3J0ZWQvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1zeW50YXgtMC44LjQvc3JjL2FzdC9tb2QucnNhbG51bWFzY2lpYmxhbmtjbnRybGRpZ2l0Z3JhcGhsb3dlcnByaW50cHVuY3RzcGFjZXVwcGVyeGRpZ2l0AACjTSEAZgAAAOcEAAAUAAAAo00hAGYAAADzBAAAIwAAAKNNIQBmAAAADwYAABQAAACjTSEAZgAAAMwGAAAbAAAAJyAnL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy9kZWJ1Zy5ycwCLTiEAZAAAABgAAAA9AAAAi04hAGQAAAAVAAAADQAAAItOIQBkAAAAMgAAABsAAACLTiEAZAAAAC4AAAAj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yOLDmriufni/ncKqvaKhlsGOiauwuae6cK/AvJyMj3uFgJOKknLfl/nY7uz949rm94e08en29OeL9fP768nE8NaYts21fxvU09LV5MWpn4OsaVBiYGFRz5F0c5CCmXlrhG1ufG9SbHaNcYF3faV1XGpTSGNdQU+m7aPHvuHRy8bZ287q+J7v/////////////////////////////////////////////////////////////////////////////////////3RyaWVkIHRvIHVud3JhcCBleHByIGZyb20gSGlyRnJhbWUsIGdvdDogAAAA/FYhACkAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1zeW50YXgtMC44LjQvc3JjL2hpci90cmFuc2xhdGUucnMwVyEAbAAAAAEBAAASAAAAdHJpZWQgdG8gdW53cmFwIFVuaWNvZGUgY2xhc3MgZnJvbSBIaXJGcmFtZSwgZ290OiAAAKxXIQAyAAAAMFchAGwAAAAKAQAAEgAAAHRyaWVkIHRvIHVud3JhcCBieXRlIGNsYXNzIGZyb20gSGlyRnJhbWUsIGdvdDogAPhXIQAvAAAAMFchAGwAAAAXAQAAEgAAAHRyaWVkIHRvIHVud3JhcCByZXBldGl0aW9uIGZyb20gSGlyRnJhbWUsIGdvdDogAEBYIQAvAAAAMFchAGwAAAAlAQAAEQAAAHRyaWVkIHRvIHVud3JhcCBncm91cCBmcm9tIEhpckZyYW1lLCBnb3Q6IAAAiFghACoAAAAwVyEAbAAAADQBAAARAAAAdHJpZWQgdG8gdW53cmFwIGFsdCBwaXBlIGZyb20gSGlyRnJhbWUsIGdvdDogAAAAzFghAC0AAAAwVyEAbAAAAD8BAAARAAAAMFchAGwAAABOAQAAJwAAADBXIQBsAAAATwEAABcAAAAwVyEAbAAAAE4BAAAJAAAAMFchAGwAAACsAQAALgAAADBXIQBsAAAAowEAAC4AAAAwVyEAbAAAALcBAAAnAAAAMFchAGwAAAC4AQAAHAAAADBXIQBsAAAAvAEAACcAAAAwVyEAbAAAAL0BAAAsAAAAMFchAGwAAADOAQAAIAAAADBXIQBsAAAAzwEAABsAAAAwVyEAbAAAAMUBAAAfAAAAMFchAGwAAAD+AQAALgAAADBXIQBsAAAA+gEAAC4AAAAwVyEAbAAAAAoCAAAuAAAAMFchAGwAAAAGAgAALgAAADBXIQBsAAAAGQIAAC4AAAAwVyEAbAAAABQCAAAuAAAAMFchAGwAAAAgAgAAKgAAADBXIQBsAAAALAIAAC4AAAAwVyEAbAAAACcCAAAuAAAAMFchAGwAAAA+AgAALwAAADBXIQBsAAAARQIAAC8AAAAwVyEAbAAAADMCAAAvAAAAMFchAGwAAAA6AgAALwAAADBXIQBsAAAAjAIAACYAAAAwVyEAbAAAAI0CAAAmAAAAMFchAGwAAACOAgAAJgAAADBXIQBsAAAAcwIAACYAAAAwVyEAbAAAAHQCAAAmAAAAMFchAGwAAAB1AgAAJgAAADBXIQBsAAAAuAIAABwAAAAwVyEAbAAAALgCAAApAAAAMFchAGwAAADDAgAALAAAADBXIQBsAAAAxwIAABMAAAAwVyEAbAAAANECAAAsAAAAMFchAGwAAADTAgAAFQAAADBXIQBsAAAA1QIAABMAAAAwVyEAbAAAANsCAAAcAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBjb25jYXQsIGdvdCBVbmljb2RlIGNsYXNzhFshAFQAAAAwVyEAbAAAAOkCAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBjb25jYXQsIGdvdCBieXRlIGNsYXNzAAAA8FshAFEAAAAwVyEAbAAAAOwCAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBjb25jYXQsIGdvdCByZXBldGl0aW9uAAAAXFwhAFEAAAAwVyEAbAAAAO8CAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBjb25jYXQsIGdvdCBncm91cMhcIQBMAAAAMFchAGwAAADyAgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgYWx0IG1hcmtlcgAAACxdIQBRAAAAMFchAGwAAAD1AgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgYWx0IGJyYW5jaCBtYXJrZXKYXSEAWAAAADBXIQBsAAAA+AIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGFsdCwgZ290IFVuaWNvZGUgY2xhc3MAAAAIXiEAUQAAADBXIQBsAAAACAMAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGFsdCwgZ290IGJ5dGUgY2xhc3MAAHReIQBOAAAAMFchAGwAAAALAwAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgYWx0LCBnb3QgcmVwZXRpdGlvbgAA3F4hAE4AAAAwVyEAbAAAAA4DAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBncm91cAAAAERfIQBJAAAAMFchAGwAAAARAwAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgYWx0LCBnb3QgY29uY2F0IG1hcmtlcgAAAKhfIQBRAAAAMFchAGwAAAAUAwAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgYWx0LCBnb3QgYWx0IGJyYW5jaCBtYXJrZXIAAAAUYCEAVQAAADBXIQBsAAAAFwMAABEAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmZsYWdzKCkudW5pY29kZSgpMFchAGwAAABDBAAACQAAAAxhc3Nl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AQAAXwEAAF4BAABhAQAAYAEAAGMBAABiAQAAZQEAAGQBAABnAQAAZgEAAGkBAABoAQAAawEAAGoBAABtAQAAbAEAAG8BAABuAQAAcQEAAHABAABzAQAAcgEAAHUBAAB0AQAAdwEAAHYBAAD/AAAAegEAAHkBAAB8AQAAewEAAH4BAAB9AQAAUwAAAHMAAABDAgAAUwIAAIMBAACCAQAAhQEAAIQBAABUAgAAiAEAAIcBAABWAgAAVwIAAIwBAACLAQAA3QEAAFkCAABbAgAAkgEAAJEBAABgAgAAYwIAAPYBAABpAgAAaAIAAJkBAACYAQAAPQIAAG8CAAByAgAAIAIAAHUCAAChAQAAoAEAAKMBAACiAQAApQEAAKQBAACAAgAAqAEAAKcBAACDAgAArQEAAKwBAACIAgAAsAEAAK8BAACKAgAAiwIAALQBAACzAQAAtgEAALUBAACSAgAAuQEAALgBAAC9AQAAvAEAAPcBAADFAQAAxgEAAMQBAADGAQAAxAEAAMUBAADIAQAAyQEAAMcBAADJAQAAxwEAAMgBAADLAQAAzAEAAMoBAADMAQAAygEAAMsBAADOAQAAzQEAANABAADPAQAA0gEAANEBAADUAQAA0wEAANYBAADVAQAA2AEAANcBAADaAQAA2QEAANwBAADbAQAAjgEAAN8BAADeAQAA4QEAAOABAADjAQAA4gEAAOUBAADkAQAA5wEAAOYBAADpAQAA6AEAAOsBAADqAQAA7QEAAOwBAADvAQAA7gEAAPIBAADzAQAA8QEAAPMBAADxAQAA8gEAAPUBAAD0AQAAlQEAAL8BAAD5AQAA+AEAAPsBAAD6AQAA/QEAAPwBAAD/AQAA/gEAAAECAAAAAgAAAwIAAAICAAAFAgAABAIAAAcCAAAGAgAACQIAAAgCAAALAgAACgIAAA0CAAAMAgAADwIAAA4CAAARAgAAEAIAABMCAAASAgAAFQIAABQCAAAXAgAAFgIAABkCAAAYAgAAGwIAABoCAAAdAgAAHAIAAB8CAAAeAgAAngEAACMCAAAiAgAAJQIAACQCAAAnAgAAJgIAACkCAAAoAgAAKwIAACoCAAAtAgAALAIAAC8CAAAuAgAAMQIAADACAAAzAgAAMgIAAGUsAAA8AgAAOwIAAJoBAABmLAAAfiwAAH8sAABCAgAAQQIAAIABAACJAgAAjAIAAEcCAABGAgAASQIAAEgCAABLAgAASgIAAE0CAABMAgAATwIAAE4CAABvLAAAbSwAAHAsAACBAQAAhgEAAIkBAACKAQAAjwEAAJABAACrpwAAkwEAAKynAACUAQAAjacAAKqnAACXAQAAlgEAAK6nAABiLAAAracAAJwBAABuLAAAnQEAAJ8BAABkLAAApgEAAMWnAACpAQAAsacAAK4BAABEAgAAsQEAALIBAABFAgAAtwEAALKnAACwpwAAmQMAALkDAAC+HwAAcQMAAHADAABzAwAAcgMAAHcDAAB2AwAA/QMAAP4DAAD/AwAA8wMAAKwDAACtAwAArgMAAK8DAADMAwAAzQMAAM4DAACxAwAAsgMAANADAACzAwAAtAMAALUDAAD1AwAAtgMAALcDAAC4AwAA0QMAAPQDAABFAwAAuQMAAL4fAAC6AwAA8AMAALsDAAC1AAAAvAMAAL0DAAC+AwAAvwMAAMADAADWAwAAwQMAAPEDAADCAwAAwwMAAMQDAADFAwAAxgMAANUDAADHAwAAyAMAAMkDAAAmIQAAygMAAMsDAACGAwAAiAMAAIkDAACKAwAAkQMAAJIDAADQAwAAkwMAAJQDAACVAwAA9QMAAJYDAACXAwAAmAMAANEDAAD0AwAARQMAAJkDAAC+HwAAmgMAAPADAACbAwAAtQAAAJwDAACdAwAAngMAAJ8DAACgAwAA1gMAAKEDAADxAwAAowMAAMMDAACjAwAAwgMAAKQDAAClAwAApgMAANUDAACnAwAAqAMAAKkDAAAmIQAAqgMAAKsDAACMAwAAjgMAAI8DAADXAwAAkgMAALIDAACYAwAAuAMAAPQDAACmAwAAxgMAAKADAADAAwAAzwMAANkDAADYAwAA2wMAANoDAADdAwAA3AMAAN8DAADeAwAA4QMAAOADAADjAwAA4gMAAOUDAADkAwAA5wMAAOYDAADpAwAA6AMAAOsDAADqAwAA7QMAAOwDAADvAwAA7gMAAJoDAAC6AwAAoQMAAMEDAAD5AwAAfwMAAJgDAAC4AwAA0QMAAJUDAAC1AwAA+AMAAPcDAADyAwAA+wMAAPoDAAB7AwAAfAMAAH0DAABQBAAAUQQAAFIEAABTBAAAVAQAAFUEAABWBAAAVwQAAFgEAABZBAAAWgQAAFsEAABcBAAAXQQAAF4EAABf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HgAAOR4AADgeAAA7HgAAOh4AAD0eAAA8HgAAPx4AAD4eAABBHgAAQB4AAEMeAABCHgAARR4AAEQeAABHHgAARh4AAEkeAABIHgAASx4AAEoeAABNHgAATB4AAE8eAABOHgAAUR4AAFAeAABTHgAAUh4AAFUeAABUHgAAVx4AAFYeAABZHgAAWB4AAFseAABaHgAAXR4AAFweAABfHgAAXh4AAGEeAACbHgAAYB4AAJseAABjHgAAYh4AAGUeAABkHgAAZx4AAGYeAABpHgAAaB4AAGseAABqHgAAbR4AAGweAABvHgAAbh4AAHEeAABwHgAAcx4AAHIeAAB1HgAAdB4AAHceAAB2HgAAeR4AAHgeAAB7HgAAeh4AAH0eAAB8HgAAfx4AAH4eAACBHgAAgB4AAIMeAACCHgAAhR4AAIQeAACHHgAAhh4AAIkeAACIHgAAix4AAIoeAACNHgAAjB4AAI8eAACOHgAAkR4AAJAeAACTHgAAkh4AAJUeAACUHgAAYB4AAGEeAADfAAAAoR4AAKAeAACjHgAAoh4AAKUeAACkHgAApx4AAKYeAACpHgAAqB4AAKseAACqHgAArR4AAKweAACvHgAArh4AALEeAACwHgAAsx4AALIeAAC1HgAAtB4AALceAAC2HgAAuR4AALgeAAC7HgAAuh4AAL0eAAC8HgAAvx4AAL4eAADBHgAAwB4AAMMeAADCHgAAxR4AAMQeAADHHgAAxh4AAMkeAADIHgAAyx4AAMoeAADNHgAAzB4AAM8eAADOHgAA0R4AANAeAADTHgAA0h4AANUeAADUHgAA1x4AANYeAADZHgAA2B4AANseAADaHgAA3R4AANweAADfHgAA3h4AAOEeAADgHgAA4x4AAOIeAADlHgAA5B4AAOceAADmHgAA6R4AAOgeAADrHgAA6h4AAO0eAADsHgAA7x4AAO4eAADxHgAA8B4AAPMeAADyHgAA9R4AAPQeAAD3HgAA9h4AAPkeAAD4HgAA+x4AAPoeAAD9HgAA/B4AAP8eAAD+HgAACB8AAAkfAAAKHwAACx8AAAwfAAANHwAADh8AAA8fAAAAHwAAAR8AAAIfAAADHwAABB8AAAUfAAAGHwAABx8AABgfAAAZHwAAGh8AABsfAAAcHwAAHR8AABAfAAARHwAAEh8AABMfAAAUHwAAFR8AACgfAAApHwAAKh8AACsfAAAsHwAALR8AAC4fAAAvHwAAIB8AACEfAAAiHwAAIx8AACQfAAAlHwAAJh8AACcfAAA4HwAAOR8AADofAAA7HwAAPB8AAD0fAAA+HwAAPx8AADAfAAAxHwAAMh8AADMfAAA0HwAANR8AADYfAAA3HwAASB8AAEkfAABKHwAASx8AAEwfAABNHwAAQB8AAEEfAABCHwAAQx8AAEQfAABFHwAAWR8AAFsfAABdHwAAXx8AAFEfAABTHwAAVR8AAFcfAABoHwAAaR8AAGofAABrHwAAbB8AAG0fAABuHwAAbx8AAGAfAABhHwAAYh8AAGMfAABkHwAAZR8AAGYfAABnHwAAuh8AALsfAADIHwAAyR8AAMofAADLHwAA2h8AANsfAAD4HwAA+R8AAOofAADrHwAA+h8AAPsfAACIHwAAiR8AAIofAACLHwAAjB8AAI0fAACOHwAAjx8AAIAfAACBHwAAgh8AAIMfAACEHwAAhR8AAIYfAACHHwAAmB8AAJkfAACaHwAAmx8AAJwfAACdHwAAnh8AAJ8fAACQHwAAkR8AAJIfAACTHwAAlB8AAJUfAACWHwAAlx8AAKgfAACpHwAAqh8AAKsfAACsHwAArR8AAK4fAACvHwAAoB8AAKEfAACiHwAAox8AAKQfAAClHwAAph8AAKcfAAC4HwAAuR8AALwfAACwHwAAsR8AAHAfAABxHwAAsx8AAEUDAACZAwAAuQMAAMwfAAByHwAAcx8AAHQfAAB1HwAAwx8AANgfAADZHwAA0B8AANEfAAB2HwAAdx8AAOgfAADpHwAA7B8AAOAfAADhHwAAeh8AAHsfAADlHwAA/B8AAHgfAAB5HwAAfB8AAH0fAADzHwAAqQMAAMkDAABLAAAAawAAAMUAAADlAAAATiEAADIhAABwIQAAcSEAAHIhAABzIQAAdCEAAHUhAAB2IQAAdyEAAHghAAB5IQAAeiEAAHshAAB8IQAAfSEAAH4hAAB/IQAAYCEAAGEhAABiIQAAYyEAAGQhAABlIQAAZiEAAGchAABoIQAAaSEAAGohAABrIQAAbCEAAG0hAABuIQAAbyEAAIQhAACDIQAA0CQAANEkAADSJAAA0yQAANQkAADVJAAA1iQAANckAADYJAAA2SQAANokAADbJAAA3CQAAN0kAADeJAAA3yQAAOAkAADhJAAA4iQAAOMkAADkJAAA5SQAAOYkAADnJAAA6CQAAOkkAAC2JAAAtyQAALgkAAC5JAAAuiQAALskAAC8JAAAvSQAAL4kAAC/JAAAwCQAAMEkAADCJAAAwyQAAMQkAADFJAAAxiQAAMckAADIJAAAySQAAMokAADLJAAAzCQAAM0kAADOJAAAzyQAADAsAAAxLAAAMiwAADMsAAA0LAAANSwAADYsAAA3LAAAOCwAADksAAA6LAAAOywAADwsAAA9LAAAPiwAAD8sAABALAAAQSwAAEIsAABDLAAARCwAAEUsAABGLAAARywAAEgsAABJLAAASiwAAEssAABMLAAATSwAAE4sAABPLAAAUCwAAFEsAABSLAAAUywAAFQsAABVLAAAViwAAFcsAABYLAAAWSwAAFosAABbLAAAXCwAAF0sAABeLAAAXywAAAAsAAABLAAAAiwAAAMsAAAELAAABSwAAAYsAAAHLAAACCwAAAksAAAKLAAACywAAAwsAAANLAAADiwAAA8sAAAQLAAAESwAABIsAAATLAAAFCwAABUsAAAWLAAAFywAABgsAAAZLAAAGiwAABssAAAcLAAAHSwAAB4sAAAfLAAAICwAACEsAAAiLAAAIywAACQsAAAlLAAAJiwAACcsAAAoLAAAKSwAACosAAArLAAALCwAAC0sAAAuLAAALywAAGEsAABgLAAAawIAAH0dAAB9AgAAOgIAAD4CAABoLAAAZywAAGosAABpLAAAbCwAAGssAABRAgAAcQIAAFACAABSAgAAcywAAHIsAAB2LAAAdSwAAD8CAABAAgAAgSwAAIAsAACDLAAAgiwAAIUsAACELAAAhywAAIYsAACJLAAAiCwAAIssAACKLAAAjSwAAIwsAACPLAAAjiwAAJEsAACQLAAAkywAAJIsAACVLAAAlCwAAJcsAACWLAAAmSwAAJgsAACbLAAAmiwAAJ0sAACcLAAAnywAAJ4sAAChLAAAoCwAAKMsAACiLAAApSwAAKQsAACnLAAApiwAAKksAACoLAAAqywAAKosAACtLAAArCwAAK8sAACuLAAAsSwAALAsAACzLAAAsiwAALUsAAC0LAAAtywAALYsAAC5LAAAuCwAALssAAC6LAAAvSwAALwsAAC/LAAAviwAAMEsAADALAAAwywAAMIsAADFLAAAxCwAAMcsAADGLAAAySwAAMgsAADLLAAAyiwAAM0sAADMLAAAzywAAM4sAADRLAAA0CwAANMsAADSLAAA1SwAANQsAADXLAAA1iwAANksAADYLAAA2ywAANosAADdLAAA3CwAAN8sAADeLAAA4SwAAOAsAADjLAAA4iwAAOwsAADrLAAA7iwAAO0sAADzLAAA8iwAAKAQAAChEAAAohAAAKMQAACkEAAApRAAAKYQAACnEAAAqBAAAKkQAACqEAAAqxAAAKwQAACtEAAArhAAAK8QAACwEAAAsRAAALIQAACzEAAAtBAAALUQAAC2EAAAtxAAALgQAAC5EAAAuhAAALsQAAC8EAAAvRAAAL4QAAC/EAAAwBAAAMEQAADCEAAAwxAAAMQQAADFEAAAxxAAAM0QAABBpgAAQKYAAEOmAABCpgAARaYAAESmAABHpgAARqYAAEmmAABIpgAAiBwAAEumAACIHAAASqYAAE2mAABMpgAAT6YAAE6mAABRpgAAUKYAAFOmAABSpgAAVaYAAFSmAABXpgAAVqYAAFmmAABYpgAAW6YAAFqmAABdpgAAXKYAAF+mAABepgAAYaYAAGCmAABjpgAAYqYAAGWmAABkpgAAZ6YAAGamAABppgAAaKYAAGumAABqpgAAbaYAAGymAACBpgAAgKYAAIOmAACCpgAAhaYAAISmAACHpgAAhqYAAImmAACIpgAAi6YAAIqmAACNpgAAjKYAAI+mAACOpgAAkaYAAJCmAACTpgAAkqYAAJWmAACUpgAAl6YAAJamAACZpgAAmKYAAJumAACapgAAI6cAACKnAAAlpwAAJKcAACenAAAmpwAAKacAACinAAArpwAAKqcAAC2nAAAspwAAL6cAAC6nAAAzpwAAMqcAADWnAAA0pwAAN6cAADanAAA5pwAAOKcAADunAAA6pwAAPacAADynAAA/pwAAPqcAAEGnAABApwAAQ6cAAEKnAABFpwAARKcAAEenAABGpwAASacAAEinAABLpwAASqcAAE2nAABMpwAAT6cAAE6nAABRpwAAUKcAAFOnAABSpwAAVacAAFSnAABXpwAAVqcAAFmnAABYpwAAW6cAAFqnAABdpwAAXKcAAF+nAABepwAAYacAAGCnAABjpwAAYqcAAGWnAABkpwAAZ6cAAGanAABppwAAaKcAAGunAABqpwAAbacAAGynAABvpwAAbqcAAHqnAAB5pwAAfKcAAHunAAB5HQAAf6cAAH6nAACBpwAAgKcAAIOnAACCpwAAhacAAISnAACHpwAAhqcAAIynAACLpwAAZQIAAJGnAACQpwAAk6cAAJKnAADEpwAAl6cAAJanAACZpwAAmKcAAJunAACapwAAnacAAJynAACfpwAAnqcAAKGnAACgpwAAo6cAAKKnAAClpwAApKcAAKenAACmpwAAqacAAKinAABmAgAAXAIAAGECAABsAgAAagIAAJ4CAACHAgAAnQIAAFOrAAC1pwAAtKcAALenAAC2pwAAuacAALinAAC7pwAAuqcAAL2nAAC8pwAAv6cAAL6nAADBpwAAwKcAAMOnAADCpwAAlKcAAIICAACOHQAAyKcAAMenAADKpwAAyacAANGnAADQpwAA16cAANanAADZpwAA2KcAAPanAAD1pwAAs6cAAKATAAChEwAAohMAAKMTAACkEwAApRMAAKYTAACnEwAAqBMAAKkTAACqEwAAqxMAAKwTAACtEwAArhMAAK8TAACwEwAAsRMAALITAACzEwAAtBMAALUTAAC2EwAAtxMAALgTAAC5EwAAuhMAALsTAAC8EwAAvRMAAL4TAAC/EwAAwBMAAMETAADCEwAAwxMAAMQTAADFEwAAxhMAAMcTAADIEwAAyRMAAMoTAADLEwAAzBMAAM0TAADOEwAAzxMAANATAADREwAA0hMAANMTAADUEwAA1RMAANYTAADXEwAA2BMAANkTAADaEwAA2xMAANwTAADdEwAA3hMAAN8TAADgEwAA4RMAAOITAADjEwAA5BMAAOUTAADmEwAA5xMAAOgTAADpEwAA6hMAAOsTAADsEwAA7RMAAO4TAADvEwAAQf8AAEL/AABD/wAARP8AAEX/AABG/wAAR/8AAEj/AABJ/wAASv8AAEv/AABM/wAATf8AAE7/AABP/wAAUP8AAFH/AABS/wAAU/8AAFT/AABV/wAAVv8AAFf/AABY/wAAWf8AAFr/AAAh/wAAIv8AACP/AAAk/wAAJf8AACb/AAAn/wAAKP8AACn/AAAq/wAAK/8AACz/AAAt/wAALv8AAC//AAAw/wAAMf8AADL/AAAz/wAANP8AADX/AAA2/wAAN/8AADj/AAA5/wAAOv8AACgEAQApBAEAKgQBACsEAQAsBAEALQQBAC4EAQAvBAEAMAQBADEEAQAyBAEAMwQBADQEAQA1BAEANgQBADcEAQA4BAEAOQQBADoEAQA7BAEAPAQBAD0EAQA+BAEAPwQBAEAEAQBBBAEAQgQBAEMEAQBEBAEARQQBAEYEAQBHBAEASAQBAEkEAQBKBAEASwQBAEwEAQBNBAEATgQBAE8EAQAABAEAAQQBAAIEAQADBAEABAQBAAUEAQAGBAEABwQBAAgEAQAJBAEACgQBAAsEAQAMBAEADQQBAA4EAQAPBAEAEAQBABEEAQASBAEAEwQBABQEAQAVBAEAFgQBABcEAQAYBAEAGQQBABoEAQAbBAEAHAQBAB0EAQAeBAEAHwQBACAEAQAhBAEAIgQBACMEAQAkBAEAJQQBACYEAQAnBAEA2AQBANkEAQDaBAEA2wQBANwEAQDdBAEA3gQBAN8EAQDgBAEA4QQBAOIEAQDjBAEA5AQBAOUEAQDmBAEA5wQBAOgEAQDpBAEA6gQBAOsEAQDsBAEA7QQBAO4EAQDvBAEA8AQBAPEEAQDyBAEA8wQBAPQEAQD1BAEA9gQBAPcEAQD4BAEA+QQBAPoEAQD7BAEAsAQBALEEAQCyBAEAswQBALQEAQC1BAEAtgQBALcEAQC4BAEAuQQBALoEAQC7BAEAvAQBAL0EAQC+BAEAvwQBAMAEAQDBBAEAwgQBAMMEAQDEBAEAxQQBAMYEAQDHBAEAyAQBAMkEAQDKBAEAywQBAMwEAQDNBAEAzgQBAM8EAQDQBAEA0QQBANIEAQDTBAEAlwUBAJgFAQCZBQEAmgUBAJsFAQCcBQEAnQUBAJ4FAQCfBQEAoAUBAKEFAQCjBQEApAUBAKUFAQCmBQEApwUBAKgFAQCpBQEAqgUBAKsFAQCsBQEArQUBAK4FAQCvBQEAsAUBALEFAQCzBQEAtAUBALUFAQC2BQEAtwUBALgFAQC5BQEAuwUBALwFAQBwBQEAcQUBAHIFAQBzBQEAdAUBAHUFAQB2BQEAdwUBAHgFAQB5BQEAegUBAHwFAQB9BQEAfgUBAH8FAQCABQEAgQUBAIIFAQCDBQEAhAUBAIUFAQCGBQEAhwUBAIgFAQCJBQEAigUBAIwFAQCNBQEAjgUBAI8FAQCQBQEAkQUBAJIFAQCUBQEAlQUBAMAMAQDBDAEAwgwBAMMMAQDEDAEAxQwBAMYMAQDHDAEAyAwBAMkMAQDKDAEAywwBAMwMAQDNDAEAzgwBAM8MAQDQDAEA0QwBANIMAQDTDAEA1AwBANUMAQDWDAEA1wwBANgMAQDZDAEA2gwBANsMAQDcDAEA3QwBAN4MAQDfDAEA4AwBAOEMAQDiDAEA4wwBAOQMAQDlDAEA5gwBAOcMAQDoDAEA6QwBAOoMAQDrDAEA7AwBAO0MAQDuDAEA7wwBAPAMAQDxDAEA8gwBAIAMAQCBDAEAggwBAIMMAQCEDAEAhQwBAIYMAQCHDAEAiAwBAIkMAQCKDAEAiwwBAIwMAQCNDAEAjgwBAI8MAQCQDAEAkQwBAJIMAQCTDAEAlAwBAJUMAQCWDAEAlwwBAJgMAQCZDAEAmgwBAJsMAQCcDAEAnQwBAJ4MAQCfDAEAoAwBAKEMAQCiDAEAowwBAKQMAQClDAEApgwBAKcMAQCoDAEAqQwBAKoMAQCrDAEArAwBAK0MAQCuDAEArwwBALAMAQCxDAEAsgwBAMAYAQDBGAEAwhgBAMMYAQDEGAEAxRgBAMYYAQDHGAEAyBgBAMkYAQDKGAEAyxgBAMwYAQDNGAEAzhgBAM8YAQDQGAEA0RgBANIYAQDTGAEA1BgBANUYAQDWGAEA1xgBANgYAQDZGAEA2hgBANsYAQDcGAEA3RgBAN4YAQDfGAEAoBgBAKEYAQCiGAEAoxgBAKQYAQClGAEAphgBAKcYAQCoGAEAqRgBAKoYAQCrGAEArBgBAK0YAQCuGAEArxgBALAYAQCxGAEAshgBALMYAQC0GAEAtRgBALYYAQC3GAEAuBgBALkYAQC6GAEAuxgBALwYAQC9GAEAvhgBAL8YAQBgbgEAYW4BAGJuAQBjbgEAZG4BAGVuAQBmbgEAZ24BAGhuAQBpbgEAam4BAGtuAQBsbgEAbW4BAG5uAQBvbgEAcG4BAHFuAQBybgEAc24BAHRuAQB1bgEAdm4BAHduAQB4bgEAeW4BAHpuAQB7bgEAfG4BAH1uAQB+bgEAf24BAEBuAQBBbgEAQm4BAENuAQBEbgEARW4BAEZuAQBHbgEASG4BAEluAQBKbgEAS24BAExuAQBNbgEATm4BAE9uAQBQbgEAUW4BAFJuAQBTbgEAVG4BAFVuAQBWbgEAV24BAFhuAQBZbgEAWm4BAFtuAQBcbgEAXW4BAF5uAQBfbgEAIukBACPpAQAk6QEAJekBACbpAQAn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AQAAyGchAAEAAABeAQAAzGchAAEAAABfAQAA0GchAAEAAABgAQAA1GchAAEAAABhAQAA2GchAAEAAABiAQAA3GchAAEAAABjAQAA4GchAAEAAABkAQAA5GchAAEAAABlAQAA6GchAAEAAABmAQAA7GchAAEAAABnAQAA8GchAAEAAABoAQAA9GchAAEAAABpAQAA+GchAAEAAABqAQAA/GchAAEAAABrAQAAAGghAAEAAABsAQAABGghAAEAAABtAQAACGghAAEAAABuAQAADGghAAEAAABvAQAAEGghAAEAAABwAQAAFGghAAEAAABxAQAAGGghAAEAAAByAQAAHGghAAEAAABzAQAAIGghAAEAAAB0AQAAJGghAAEAAAB1AQAAKGghAAEAAAB2AQAALGghAAEAAAB3AQAAMGghAAEAAAB4AQAANGghAAEAAAB5AQAAOGghAAEAAAB6AQAAPGghAAEAAAB7AQAAQGghAAEAAAB8AQAARGghAAEAAAB9AQAASGghAAEAAAB+AQAATGghAAEAAAB/AQAAUGghAAIAAACAAQAAWGghAAEAAACBAQAAXGghAAEAAACCAQAAYGghAAEAAACDAQAAZGghAAEAAACEAQAAaGghAAEAAACFAQAAbGghAAEAAACGAQAAcGghAAEAAACHAQAAdGghAAEAAACIAQAAeGghAAEAAACJAQAAfGghAAEAAACKAQAAgGghAAEAAACLAQAAhGghAAEAAACMAQAAiGghAAEAAACOAQAAjGghAAEAAACPAQAAkGghAAEAAACQAQAAlGghAAEAAACRAQAAmGghAAEAAACSAQAAnGghAAEAAACTAQAAoGghAAEAAACUAQAApGghAAEAAACVAQAAqGghAAEAAACWAQAArGghAAEAAACXAQAAsGghAAEAAACYAQAAtGghAAEAAACZAQAAuGghAAEAAACaAQAAvGghAAEAAACcAQAAwGghAAEAAACdAQAAxGghAAEAAACeAQAAyGghAAEAAACfAQAAzGghAAEAAACgAQAA0GghAAEAAAChAQAA1GghAAEAAACiAQAA2GghAAEAAACjAQAA3GghAAEAAACkAQAA4GghAAEAAAClAQAA5GghAAEAAACmAQAA6GghAAEAAACnAQAA7GghAAEAAACoAQAA8GghAAEAAACpAQAA9GghAAEAAACsAQAA+GghAAEAAACtAQAA/GghAAEAAACuAQAAAGkhAAEAAACvAQAABGkhAAEAAACwAQAACGkhAAEAAACxAQAADGkhAAEAAACyAQAAEGkhAAEAAACzAQAAFGkhAAEAAAC0AQAAGGkhAAEAAAC1AQAAHGkhAAEAAAC2AQAAIGkhAAEAAAC3AQAAJGkhAAEAAAC4AQAAKGkhAAEAAAC5AQAALGkhAAEAAAC8AQAAMGkhAAEAAAC9AQAANGkhAAEAAAC/AQAAOGkhAAEAAADEAQAAPGkhAAIAAADFAQAARGkhAAIAAADGAQAATGkhAAIAAADHAQAAVGkhAAIAAADIAQAAXGkhAAIAAADJAQAAZGkhAAIAAADKAQAAbGkhAAIAAADLAQAAdGkhAAIAAADMAQAAfGkhAAIAAADNAQAAhGkhAAEAAADOAQAAiGkhAAEAAADPAQAAjGkhAAEAAADQAQAAkGkhAAEAAADRAQAAlGkhAAEAAADSAQAAmGkhAAEAAADTAQAAnGkhAAEAAADUAQAAoGkhAAEAAADVAQAApGkhAAEAAADWAQAAqGkhAAEAAADXAQAArGkhAAEAAADYAQAAsGkhAAEAAADZAQAAtGkhAAEAAADaAQAAuGkhAAEAAADbAQAAvGkhAAEAAADcAQAAwGkhAAEAAADdAQAAxGkhAAEAAADeAQAAyGkhAAEAAADfAQAAzGkhAAEAAADgAQAA0GkhAAEAAADhAQAA1GkhAAEAAADiAQAA2GkhAAEAAADjAQAA3GkhAAEAAADkAQAA4GkhAAEAAADlAQAA5GkhAAEAAADmAQAA6GkhAAEAAADnAQAA7GkhAAEAAADoAQAA8GkhAAEAAADpAQAA9GkhAAEAAADqAQAA+GkhAAEAAADrAQAA/GkhAAEAAADsAQAAAGohAAEAAADtAQAABGohAAEAAADuAQAACGohAAEAAADvAQAADGohAAEAAADxAQAAEGohAAIAAADyAQAAGGohAAIAAADzAQAAIGohAAIAAAD0AQAAKGohAAEAAAD1AQAALGohAAEAAAD2AQAAMGohAAEAAAD3AQAANGohAAEAAAD4AQAAOGohAAEAAAD5AQAAPGohAAEAAAD6AQAAQGohAAEAAAD7AQAARGohAAEAAAD8AQAASGohAAEAAAD9AQAATGohAAEAAAD+AQAAUGohAAEAAAD/AQAAVGohAAEAAAAAAgAAWGohAAEAAAABAgAAXGohAAEAAAACAgAAYGohAAEAAAADAgAAZGohAAEAAAAEAgAAaGohAAEAAAAFAgAAbGohAAEAAAAGAgAAcGohAAEAAAAHAgAAdGohAAEAAAAIAgAAeGohAAEAAAAJAgAAfGohAAEAAAAKAgAAgGohAAEAAAALAgAAhGohAAEAAAAMAgAAiGohAAEAAAANAgAAjGohAAEAAAAOAgAAkGohAAEAAAAPAgAAlGohAAEAAAAQAgAAmGohAAEAAAARAgAAnGohAAEAAAASAgAAoGohAAEAAAATAgAApGohAAEAAAAUAgAAqGohAAEAAAAVAgAArGohAAEAAAAWAgAAsGohAAEAAAAXAgAAtGohAAEAAAAYAgAAuGohAAEAAAAZAgAAvGohAAEAAAAaAgAAwGohAAEAAAAbAgAAxGohAAEAAAAcAgAAyGohAAEAAAAdAgAAzGohAAEAAAAeAgAA0GohAAEAAAAfAgAA1GohAAEAAAAgAgAA2GohAAEAAAAiAgAA3GohAAEAAAAjAgAA4GohAAEAAAAkAgAA5GohAAEAAAAlAgAA6GohAAEAAAAmAgAA7GohAAEAAAAnAgAA8GohAAEAAAAoAgAA9GohAAEAAAApAgAA+GohAAEAAAAqAgAA/GohAAEAAAArAgAAAGshAAEAAAAsAgAABGshAAEAAAAtAgAACGshAAEAAAAuAgAADGshAAEAAAAvAgAAEGshAAEAAAAwAgAAFGshAAEAAAAxAgAAGGshAAEAAAAyAgAAHGshAAEAAAAzAgAAIGshAAEAAAA6AgAAJGshAAEAAAA7AgAAKGshAAEAAAA8AgAALGshAAEAAAA9AgAAMGshAAEAAAA+AgAANGshAAEAAAA/AgAAOGshAAEAAABAAgAAPGshAAEAAABBAgAAQGshAAEAAABCAgAARGshAAEAAABDAgAASGshAAEAAABEAgAATGshAAEAAABFAgAAUGshAAEAAABGAgAAVGshAAEAAABHAgAAWGshAAEAAABIAgAAXGshAAEAAABJAgAAYGshAAEAAABKAgAAZGshAAEAAABLAgAAaGshAAEAAABMAgAAbGshAAEAAABNAgAAcGshAAEAAABOAgAAdGshAAEAAABPAgAAeGshAAEAAABQAgAAfGshAAEAAABRAgAAgGshAAEAAABSAgAAhGshAAEAAABTAgAAiGshAAEAAABUAgAAjGshAAEAAABWAgAAkGshAAEAAABXAgAAlGshAAEAAABZAgAAmGshAAEAAABbAgAAnGshAAEAAABcAgAAoGshAAEAAABgAgAApGshAAEAAABhAgAAqGshAAEAAABjAgAArGshAAEAAABlAgAAsGshAAEAAABmAgAAtGshAAEAAABoAgAAuGshAAEAAABpAgAAvGshAAEAAABqAgAAwGshAAEAAABrAgAAxGshAAEAAABsAgAAyGshAAEAAABvAgAAzGshAAEAAABxAgAA0GshAAEAAAByAgAA1GshAAEAAAB1AgAA2GshAAEAAAB9AgAA3GshAAEAAACAAgAA4GshAAEAAACCAgAA5GshAAEAAACDAgAA6GshAAEAAACHAgAA7GshAAEAAACIAgAA8GshAAEAAACJAgAA9GshAAEAAACKAgAA+GshAAEAAACLAgAA/GshAAEAAACMAgAAAGwhAAEAAACSAgAABGwhAAEAAACdAgAACGwhAAEAAACeAgAADGwhAAEAAABFAwAAEGwhAAMAAABwAwAAHGwhAAEAAABxAwAAIGwhAAEAAAByAwAAJGwhAAEAAABzAwAAKGwhAAEAAAB2AwAALGwhAAEAAAB3AwAAMGwhAAEAAAB7AwAANGwhAAEAAAB8AwAAOGwhAAEAAAB9AwAAPGwhAAEAAAB/AwAAQGwhAAEAAACGAwAARGwhAAEAAACIAwAASGwhAAEAAACJAwAATGwhAAEAAACKAwAAUGwhAAEAAACMAwAAVGwhAAEAAACOAwAAWGwhAAEAAACPAwAAXGwhAAEAAACRAwAAYGwhAAEAAACSAwAAZGwhAAIAAACTAwAAbGwhAAEAAACUAwAAcGwhAAEAAACVAwAAdGwhAAIAAACWAwAAfGwhAAEAAACXAwAAgGwhAAEAAACYAwAAhGwhAAMAAACZAwAAkGwhAAMAAACaAwAAnGwhAAIAAACbAwAApGwhAAEAAACcAwAAqGwhAAIAAACdAwAAsGwhAAEAAACeAwAAtGwhAAEAAACfAwAAuGwhAAEAAACgAwAAvGwhAAIAAAChAwAAxGwhAAIAAACjAwAAzGwhAAIAAACkAwAA1GwhAAEAAAClAwAA2GwhAAEAAACmAwAA3GwhAAIAAACn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EwAA6HYhAAEAAADcEwAA7HYhAAEAAADdEwAA8HYhAAEAAADeEwAA9HYhAAEAAADfEwAA+HYhAAEAAADgEwAA/HYhAAEAAADhEwAAAHchAAEAAADiEwAABHchAAEAAADjEwAACHchAAEAAADkEwAADHchAAEAAADlEwAAEHchAAEAAADmEwAAFHchAAEAAADnEwAAGHchAAEAAADoEwAAHHchAAEAAADpEwAAIHchAAEAAADqEwAAJHchAAEAAADrEwAAKHchAAEAAADsEwAALHchAAEAAADtEwAAMHchAAEAAADuEwAANHchAAEAAADvEwAAOHchAAEAAADwEwAAPHchAAEAAADxEwAAQHchAAEAAADyEwAARHchAAEAAADzEwAASHchAAEAAAD0EwAATHchAAEAAAD1EwAAUHchAAEAAAD4EwAAVHchAAEAAAD5EwAAWHchAAEAAAD6EwAAXHchAAEAAAD7EwAAYHchAAEAAAD8EwAAZHchAAEAAAD9EwAAaHchAAEAAACAHAAAbHchAAIAAACBHAAAdHchAAIAAACCHAAAfHchAAIAAACDHAAAhHchAAIAAACEHAAAjHchAAMAAACFHAAAmHchAAMAAACGHAAApHchAAIAAACHHAAArHchAAIAAACIHAAAtHchAAIAAACQHAAAvHchAAEAAACRHAAAwHchAAEAAACSHAAAxHchAAEAAACTHAAAyHchAAEAAACUHAAAzHchAAEAAACVHAAA0HchAAEAAACWHAAA1HchAAEAAACXHAAA2HchAAEAAACYHAAA3HchAAEAAACZHAAA4HchAAEAAACaHAAA5HchAAEAAACbHAAA6HchAAEAAACcHAAA7HchAAEAAACdHAAA8HchAAEAAACeHAAA9HchAAEAAACfHAAA+HchAAEAAACgHAAA/HchAAEAAAChHAAAAHghAAEAAACiHAAABHghAAEAAACjHAAACHghAAEAAACkHAAADHghAAEAAAClHAAAEHghAAEAAACmHAAAFHghAAEAAACnHAAAGHghAAEAAACoHAAAHHghAAEAAACpHAAAIHghAAEAAACqHAAAJHghAAEAAACrHAAAKHghAAEAAACsHAAALHghAAEAAACtHAAAMHghAAEAAACuHAAANHghAAEAAACvHAAAOHghAAEAAACwHAAAPHghAAEAAACxHAAAQHghAAEAAACyHAAARHghAAEAAACzHAAASHghAAEAAAC0HAAATHghAAEAAAC1HAAAUHghAAEAAAC2HAAAVHghAAEAAAC3HAAAWHghAAEAAAC4HAAAXHghAAEAAAC5HAAAYHghAAEAAAC6HAAAZHghAAEAAAC9HAAAaHghAAEAAAC+HAAAbHghAAEAAAC/HAAAcHghAAEAAAB5HQAAdHghAAEAAAB9HQAAeHghAAEAAACOHQAAfHghAAEAAAAAHgAAgHghAAEAAAABHgAAhHghAAEAAAACHgAAiHghAAEAAAADHgAAjHghAAEAAAAEHgAAkHghAAEAAAAFHgAAlHghAAEAAAAGHgAAmHghAAEAAAAHHgAAnHghAAEAAAAIHgAAoHghAAEAAAAJHgAApHghAAEAAAAKHgAAqHghAAEAAAALHgAArHghAAEAAAAMHgAAsHghAAEAAAANHgAAtHghAAEAAAAOHgAAuHghAAEAAAAPHgAAvHghAAEAAAAQHgAAwHghAAEAAAARHgAAxHghAAEAAAASHgAAyHghAAEAAAATHgAAzHghAAEAAAAUHgAA0HghAAEAAAAVHgAA1HghAAEAAAAWHgAA2HghAAEAAAAXHgAA3HghAAEAAAAYHgAA4HghAAEAAAAZHgAA5HghAAEAAAAaHgAA6HghAAEAAAAbHgAA7HghAAEAAAAcHgAA8HghAAEAAAAdHgAA9HghAAEAAAAeHgAA+HghAAEAAAAfHgAA/HghAAEAAAAgHgAAAHkhAAEAAAAhHgAABHkhAAEAAAAiHgAACHkhAAEAAAAjHgAADHkhAAEAAAAkHgAAEHkhAAEAAAAlHgAAFHkhAAEAAAAmHgAAGHkhAAEAAAAnHgAAHHkhAAEAAAAoHgAAIHkhAAEAAAApHgAAJHkhAAEAAAAqHgAAKHkhAAEAAAArHgAALHkhAAEAAAAsHgAAMHkhAAEAAAAtHgAANHkhAAEAAAAuHgAAOHkhAAEAAAAvHgAAPHkhAAEAAAAwHgAAQHkhAAEAAAAxHgAARHkhAAEAAAAyHgAASHkhAAEAAAAzHgAATHkhAAEAAAA0HgAAUHkhAAEAAAA1HgAAVHkhAAEAAAA2HgAAWHkhAAEAAAA3HgAAXHkhAAEAAAA4HgAAYHkhAAEAAAA5HgAAZHkhAAEAAAA6HgAAaHkhAAEAAAA7HgAAbHkhAAEAAAA8HgAAcHkhAAEAAAA9HgAAdHkhAAEAAAA+HgAAeHkhAAEAAAA/HgAAfHkhAAEAAABAHgAAgHkhAAEAAABBHgAAhHkhAAEAAABCHgAAiHkhAAEAAABDHgAAjHkhAAEAAABEHgAAkHkhAAEAAABFHgAAlHkhAAEAAABGHgAAmHkhAAEAAABHHgAAnHkhAAEAAABIHgAAoHkhAAEAAABJHgAApHkhAAEAAABKHgAAqHkhAAEAAABLHgAArHkhAAEAAABMHgAAsHkhAAEAAABNHgAAtHkhAAEAAABOHgAAuHkhAAEAAABPHgAAvHkhAAEAAABQHgAAwHkhAAEAAABRHgAAxHkhAAEAAABSHgAAyHkhAAEAAABTHgAAzHkhAAEAAABUHgAA0HkhAAEAAABVHgAA1HkhAAEAAABWHgAA2HkhAAEAAABXHgAA3HkhAAEAAABYHgAA4HkhAAEAAABZHgAA5HkhAAEAAABaHgAA6HkhAAEAAABbHgAA7HkhAAEAAABcHgAA8HkhAAEAAABdHgAA9HkhAAEAAABeHgAA+HkhAAEAAABfHgAA/HkhAAEAAABgHgAAAHohAAIAAABhHgAACHohAAIAAABiHgAAEHohAAEAAABjHgAAFHohAAEAAABkHgAAGHohAAEAAABlHgAAHHohAAEAAABmHgAAIHohAAEAAABnHgAAJHohAAEAAABoHgAAKHohAAEAAABpHgAALHohAAEAAABqHgAAMHohAAEAAABrHgAANHohAAEAAABsHgAAOHohAAEAAABtHgAAPHohAAEAAABuHgAAQHohAAEAAABvHgAARHohAAEAAABwHgAASHohAAEAAABxHgAATHohAAEAAAByHgAAUHohAAEAAABzHgAAVHohAAEAAAB0HgAAWHohAAEAAAB1HgAAXHohAAEAAAB2HgAAYHohAAEAAAB3HgAAZHohAAEAAAB4HgAAaHohAAEAAAB5HgAAbHohAAEAAAB6HgAAcHohAAEAAAB7HgAAdHohAAEAAAB8HgAAeHohAAEAAAB9HgAAfHohAAEAAAB+HgAAgHohAAEAAAB/HgAAhHohAAEAAACAHgAAiHohAAEAAACBHgAAjHohAAEAAACCHgAAkHohAAEAAACDHgAAlHohAAEAAACEHgAAmHohAAEAAACFHgAAnHohAAEAAACGHgAAoHohAAEAAACHHgAApHohAAEAAACIHgAAqHohAAEAAACJHgAArHohAAEAAACKHgAAsHohAAEAAACLHgAAtHohAAEAAACMHgAAuHohAAEAAACNHgAAvHohAAEAAACOHgAAwHohAAEAAACPHgAAxHohAAEAAACQHgAAyHohAAEAAACRHgAAzHohAAEAAACSHgAA0HohAAEAAACTHgAA1HohAAEAAACUHgAA2HohAAEAAACVHgAA3HohAAEAAACbHgAA4HohAAIAAACeHgAA6HohAAEAAACgHgAA7HohAAEAAAChHgAA8HohAAEAAACiHgAA9HohAAEAAACjHgAA+HohAAEAAACkHgAA/HohAAEAAAClHgAAAHshAAEAAACmHgAABHshAAEAAACnHgAACHshAAEAAACoHgAADHshAAEAAACpHgAAEHshAAEAAACqHgAAFHshAAEAAACrHgAAGHshAAEAAACsHgAAHHshAAEAAACtHgAAIHshAAEAAACuHgAAJHshAAEAAACvHgAAKHshAAEAAACwHgAALHshAAEAAACxHgAAMHshAAEAAACyHgAANHshAAEAAACzHgAAOHshAAEAAAC0HgAAPHshAAEAAAC1HgAAQHshAAEAAAC2HgAARHshAAEAAAC3HgAASHshAAEAAAC4HgAATHshAAEAAAC5HgAAUHshAAEAAAC6HgAAVHshAAEAAAC7HgAAWHshAAEAAAC8HgAAXHshAAEAAAC9HgAAYHshAAEAAAC+HgAAZHshAAEAAAC/HgAAaHshAAEAAADAHgAAbHshAAEAAADBHgAAcHshAAEAAADCHgAAdHshAAEAAADDHgAAeHshAAEAAADEHgAAfHshAAEAAADFHgAAgHshAAEAAADGHgAAhHshAAEAAADHHgAAiHshAAEAAADIHgAAjHshAAEAAADJHgAAkHshAAEAAADKHgAAlHshAAEAAADLHgAAmHshAAEAAADMHgAAnHshAAEAAADNHgAAoHshAAEAAADOHgAApHshAAEAAADPHgAAqHshAAEAAADQHgAArHshAAEAAADRHgAAsHshAAEAAADSHgAAtHshAAEAAADTHgAAuHshAAEAAADUHgAAvHshAAEAAADVHgAAwHshAAEAAADWHgAAxHshAAEAAADXHgAAyHshAAEAAADYHgAAzHshAAEAAADZ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pwAAeIYhAAEAAAAypwAAfIYhAAEAAAAzpwAAgIYhAAEAAAA0pwAAhIYhAAEAAAA1pwAAiIYhAAEAAAA2pwAAjIYhAAEAAAA3pwAAkIYhAAEAAAA4pwAAlIYhAAEAAAA5pwAAmIYhAAEAAAA6pwAAnIYhAAEAAAA7pwAAoIYhAAEAAAA8pwAApIYhAAEAAAA9pwAAqIYhAAEAAAA+pwAArIYhAAEAAAA/pwAAsIYhAAEAAABApwAAtIYhAAEAAABBpwAAuIYhAAEAAABCpwAAvIYhAAEAAABDpwAAwIYhAAEAAABEpwAAxIYhAAEAAABFpwAAyIYhAAEAAABGpwAAzIYhAAEAAABHpwAA0IYhAAEAAABIpwAA1IYhAAEAAABJpwAA2IYhAAEAAABKpwAA3IYhAAEAAABLpwAA4IYhAAEAAABMpwAA5IYhAAEAAABNpwAA6IYhAAEAAABOpwAA7IYhAAEAAABPpwAA8IYhAAEAAABQpwAA9IYhAAEAAABRpwAA+IYhAAEAAABSpwAA/IYhAAEAAABTpwAAAIchAAEAAABUpwAABIchAAEAAABVpwAACIchAAEAAABWpwAADIchAAEAAABXpwAAEIchAAEAAABYpwAAFIchAAEAAABZpwAAGIchAAEAAABapwAAHIchAAEAAABbpwAAIIchAAEAAABcpwAAJIchAAEAAABdpwAAKIchAAEAAABepwAALIchAAEAAABfpwAAMIchAAEAAABgpwAANIchAAEAAABhpwAAOIchAAEAAABipwAAPIchAAEAAABjpwAAQIchAAEAAABkpwAARIchAAEAAABlpwAASIchAAEAAABmpwAATIchAAEAAABnpwAAUIchAAEAAABopwAAVIchAAEAAABppwAAWIchAAEAAABqpwAAXIchAAEAAABrpwAAYIchAAEAAABspwAAZIchAAEAAABtpwAAaIchAAEAAABupwAAbIchAAEAAABvpwAAcIchAAEAAAB5pwAAdIchAAEAAAB6pwAAeIchAAEAAAB7pwAAfIchAAEAAAB8pwAAgIchAAEAAAB9pwAAhIchAAEAAAB+pwAAiIchAAEAAAB/pwAAjIchAAEAAACApwAAkIchAAEAAACBpwAAlIchAAEAAACCpwAAmIchAAEAAACDpwAAnIchAAEAAACEpwAAoIchAAEAAACFpwAApIchAAEAAACGpwAAqIchAAEAAACHpwAArIchAAEAAACLpwAAsIchAAEAAACMpwAAtIchAAEAAACNpwAAuIchAAEAAACQpwAAvIchAAEAAACRpwAAwIchAAEAAACSpwAAxIchAAEAAACTpwAAyIchAAEAAACUpwAAzIchAAEAAACWpwAA0IchAAEAAACXpwAA1IchAAEAAACYpwAA2IchAAEAAACZpwAA3IchAAEAAACapwAA4IchAAEAAACbpwAA5IchAAEAAACcpwAA6IchAAEAAACdpwAA7IchAAEAAACepwAA8IchAAEAAACfpwAA9IchAAEAAACgpwAA+IchAAEAAAChpwAA/IchAAEAAACipwAAAIghAAEAAACjpwAABIghAAEAAACkpwAACIghAAEAAAClpwAADIghAAEAAACmpwAAEIghAAEAAACnpwAAFIghAAEAAACopwAAGIghAAEAAACppwAAHIghAAEAAACqpwAAIIghAAEAAACrpwAAJIghAAEAAACspwAAKIghAAEAAACtpwAALIghAAEAAACupwAAMIghAAEAAACwpwAANIghAAEAAACxpwAAOIghAAEAAACypwAAPIghAAEAAACzpwAAQIghAAEAAAC0pwAARIghAAEAAAC1pwAASIghAAEAAAC2pwAATIghAAEAAAC3pwAAUIghAAEAAAC4pwAAVIghAAEAAAC5pwAAWIghAAEAAAC6pwAAXIghAAEAAAC7pwAAYIghAAEAAAC8pwAAZIghAAEAAAC9pwAAaIghAAEAAAC+pwAAbIghAAEAAAC/pwAAcIghAAEAAADApwAAdIghAAEAAADBpwAAeIghAAEAAADCpwAAfIghAAEAAADDpwAAgIghAAEAAADEpwAAhIghAAEAAADFpwAAiIghAAEAAADGpwAAjIghAAEAAADHpwAAkIghAAEAAADIpwAAlIghAAEAAADJpwAAmIghAAEAAADKpwAAnIghAAEAAADQpwAAoIghAAEAAADRpwAApIghAAEAAADWpwAAqIghAAEAAADXpwAArIghAAEAAADYpwAAsIghAAEAAADZpwAAtIghAAEAAAD1pwAAuIghAAEAAAD2pwAAvIghAAEAAABTqwAAwIghAAEAAABwqwAAxIghAAEAAABxqwAAyIghAAEAAAByqwAAzIghAAEAAABzqwAA0IghAAEAAAB0qwAA1IghAAEAAAB1qwAA2IghAAEAAAB2qwAA3IghAAEAAAB3qwAA4IghAAEAAAB4qwAA5IghAAEAAAB5qwAA6IghAAEAAAB6qwAA7IghAAEAAAB7qwAA8IghAAEAAAB8qwAA9IghAAEAAAB9qwAA+IghAAEAAAB+qwAA/IghAAEAAAB/qwAAAIkhAAEAAACAqwAABIkhAAEAAACBqwAACIkhAAEAAACCqwAADIkhAAEAAACDqwAAEIkhAAEAAACEqwAAFIkhAAEAAACFqwAAGIkhAAEAAACGqwAAHIkhAAEAAACHqwAAIIkhAAEAAACIqwAAJIkhAAEAAACJqwAAKIkhAAEAAACKqwAALIkhAAEAAACLqwAAMIkhAAEAAACMqwAANIkhAAEAAACNqwAAOIkhAAEAAACOqwAAPIkhAAEAAACPqwAAQIkhAAEAAACQqwAARIkhAAEAAACRqwAASIkhAAEAAACSqwAATIkhAAEAAACTqwAAUIkhAAEAAACUqwAAVIkhAAEAAACVqwAAWIkhAAEAAACWqwAAXIkhAAEAAACXqwAAYIkhAAEAAACYqwAAZIkhAAEAAACZqwAAaIkhAAEAAACaqwAAbIkhAAEAAACbqwAAcIkhAAEAAACcqwAAdIkhAAEAAACdqwAAeIkhAAEAAACeqwAAfIkhAAEAAACfqwAAgIkhAAEAAACgqwAAhIkhAAEAAAChqwAAiIkhAAEAAACiqwAAjIkhAAEAAACjqwAAkIkhAAEAAACkqwAAlIkhAAEAAAClqwAAmIkhAAEAAACmqwAAnIkhAAEAAACnqwAAoIkhAAEAAACoqwAApIkhAAEAAACpqwAAqIkhAAEAAACqqwAArIkhAAEAAACrqwAAsIkhAAEAAACsqwAAtIkhAAEAAACtqwAAuIkhAAEAAACuqwAAvIkhAAEAAACvqwAAwIkhAAEAAACwqwAAxIkhAAEAAACxqwAAyIkhAAEAAACyqwAAzIkhAAEAAACzqwAA0IkhAAEAAAC0qwAA1IkhAAEAAAC1qwAA2IkhAAEAAAC2qwAA3IkhAAEAAAC3qwAA4IkhAAEAAAC4qwAA5IkhAAEAAAC5qwAA6IkhAAEAAAC6qwAA7IkhAAEAAAC7qwAA8IkhAAEAAAC8qwAA9IkhAAEAAAC9qwAA+IkhAAEAAAC+qwAA/IkhAAEAAAC/qwAAAIohAAEAAAAh/wAABIohAAEAAAAi/wAACIohAAEAAAAj/wAADIohAAEAAAAk/wAAEIohAAEAAAAl/wAAFIohAAEAAAAm/wAAGIohAAEAAAAn/wAAHIohAAEAAAAo/wAAIIohAAEAAAAp/wAAJIohAAEAAAAq/wAAKIohAAEAAAAr/wAALIohAAEAAAAs/wAAMIohAAEAAAAt/wAANIohAAEAAAAu/wAAOIohAAEAAAAv/wAAPIohAAEAAAAw/wAAQIohAAEAAAAx/wAARIohAAEAAAAy/wAASIohAAEAAAAz/wAATIohAAEAAAA0/wAAUIohAAEAAAA1/wAAVIohAAEAAAA2/wAAWIohAAEAAAA3/wAAXIohAAEAAAA4/wAAYIohAAEAAAA5/wAAZIohAAEAAAA6/wAAaIohAAEAAABB/wAAbIohAAEAAABC/wAAcIohAAEAAABD/wAAdIohAAEAAABE/wAAeIohAAEAAABF/wAAfIohAAEAAABG/wAAgIohAAEAAABH/wAAhIohAAEAAABI/wAAiIohAAEAAABJ/wAAjIohAAEAAABK/wAAkIohAAEAAABL/wAAlIohAAEAAABM/wAAmIohAAEAAABN/wAAnIohAAEAAABO/wAAoIohAAEAAABP/wAApIohAAEAAABQ/wAAqIohAAEAAABR/wAArIohAAEAAABS/wAAsIohAAEAAABT/wAAtIohAAEAAABU/wAAuIohAAEAAABV/wAAvIohAAEAAABW/wAAwIohAAEAAABX/wAAxIohAAEAAABY/wAAyIohAAEAAABZ/wAAzIohAAEAAABa/wAA0IohAAEAAAAABAEA1IohAAEAAAABBAEA2IohAAEAAAACBAEA3IohAAEAAAADBAEA4IohAAEAAAAEBAEA5IohAAEAAAAFBAEA6IohAAEAAAAGBAEA7IohAAEAAAAHBAEA8IohAAEAAAAIBAEA9IohAAEAAAAJBAEA+IohAAEAAAAKBAEA/IohAAEAAAALBAEAAIshAAEAAAAMBAEABIshAAEAAAANBAEACIshAAEAAAAOBAEADIshAAEAAAAPBAEAEIshAAEAAAAQBAEAFIshAAEAAAARBAEAGIshAAEAAAASBAEAHIshAAEAAAATBAEAIIshAAEAAAAUBAEAJIshAAEAAAAV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Q2x1c3Rlcl9CcmVha1NlbnRlbmNlX0JyZWFrV29yZF9CcmVhawAAMAAAADkAAABBAAAAWgAAAF8AAABfAAAAYQAAAHoAAACqAAAAqgAAALUAAAC1AAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAAADAAB0AwAAdgMAAHcDAAB6AwAAfQMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAgwQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAACRBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAA0AUAAOoFAADvBQAA8gUAABAGAAAaBgAAIAYAAGkGAABuBgAA0wYAANUGAADcBgAA3wYAAOgGAADqBgAA/AYAAP8GAAD/BgAAEAcAAEoHAABNBwAAsQcAAMAHAAD1BwAA+gcAAPoHAAD9BwAA/QcAAAAIAAAtCAAAQAgAAFsIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACYCAAA4QgAAOMIAABjCQAAZgkAAG8JAABxCQAAgwkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAALwJAADECQAAxwkAAMgJAADLCQAAzgkAANcJAADXCQAA3AkAAN0JAADfCQAA4wkAAOYJAADxCQAA/AkAAPwJAAD+CQAA/gkAAAEKAAADCgAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAGYKAAB1CgAAgQoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAxQoAAMcKAADJCgAAywoAAM0KAADQCgAA0AoAAOAKAADjCgAA5goAAO8KAAD5CgAA/woAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPAsAAEQLAABHCwAASAsAAEsLAABNCwAAVQsAAFcLAABcCwAAXQsAAF8LAABjCwAAZgsAAG8LAABxCwAAcQsAAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAAvgsAAMILAADGCwAAyAsAAMoLAADNCwAA0AsAANALAADXCwAA1wsAAOYLAADvCwAAAAwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA8DAAARAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAFgMAABaDAAAXQwAAF0MAABgDAAAYwwAAGYMAABvDAAAgAwAAIMMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwAAMQMAADGDAAAyAwAAMoMAADNDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA5gwAAO8MAADxDAAA8wwAAAANAAAMDQAADg0AABANAAASDQAARA0AAEYNAABIDQAASg0AAE4NAABUDQAAVw0AAF8NAABjDQAAZg0AAG8NAAB6DQAAfw0AAIENAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAMoNAADKDQAAzw0AANQNAADWDQAA1g0AANgNAADfDQAA5g0AAO8NAADyDQAA8w0AAAEOAAA6DgAAQA4AAE4OAABQDgAAWQ4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAvQ4AAMAOAADEDgAAxg4AAMYOAADIDgAAzg4AANAOAADZDgAA3A4AAN8OAAAADwAAAA8AABgPAAAZDwAAIA8AACkPAAA1DwAANQ8AADcPAAA3DwAAOQ8AADkPAAA+DwAARw8AAEkPAABsDwAAcQ8AAIQPAACGDwAAlw8AAJkPAAC8DwAAxg8AAMYPAAAAEAAASRAAAFAQAACdEAAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAA0BAAAPoQAAD8EAAASBIAAEoSAABNEgAAUBIAAFYSAABYEgAAWBIAAFoSAABdEgAAYBIAAIgSAACKEgAAjRIAAJASAACwEgAAshIAALUSAAC4EgAAvhIAAMASAADAEgAAwhIAAMUSAADIEgAA1hIAANgSAAAQEwAAEhMAABUTAAAYEwAAWhMAAF0TAABfEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAAVFwAAHxcAADQXAABAFwAAUxcAAGAXAABsFwAAbhcAAHAXAAByFwAAcxcAAIAXAADTFwAA1xcAANcXAADcFwAA3RcAAOAXAADpFwAACxgAAA0YAAAPGAAAGRgAACAYAAB4GAAAgBgAAKoYAACwGAAA9RgAAAAZAAAeGQAAIBkAACsZAAAwGQAAOxkAAEYZAABtGQAAcBkAAHQZAACAGQAAqxkAALAZAADJGQAA0BkAANkZAAAAGgAAGxoAACAaAABeGgAAYBoAAHwaAAB/GgAAiRoAAJAaAACZGgAApxoAAKcaAACwGgAAzhoAAAAbAABMGwAAUBsAAFkbAABrGwAAcxsAAIAbAADzGwAAABwAADccAABAHAAASRwAAE0cAAB9HAAAgBwAAIgcAACQHAAAuhwAAL0cAAC/HAAA0BwAANIcAADUHAAA+hwAAAAdAAAVHwAAGB8AAB0fAAAgHwAARR8AAEgfAABNHwAAUB8AAFcfAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAfR8AAIAfAAC0HwAAth8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMwfAADQHwAA0x8AANYfAADbHwAA4B8AAOwfAADyHwAA9B8AAPYfAAD8HwAADCAAAA0gAAA/IAAAQCAAAFQgAABUIAAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAA0CAAAPAgAAACIQAAAiEAAAchAAAHIQAACiEAABMhAAAVIQAAFSEAABkhAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAAC0hAAAvIQAAOSEAADwhAAA/IQAARSEAAEkhAABOIQAATiEAAGAhAACIIQAAtiQAAOkkAAAALAAA5CwAAOssAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAH8tAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2LQAAuC0AAL4tAADALQAAxi0AAMgtAADO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Z2Nhc2VpZ25vcmFibGVDYXNlX0lnbm9yYWJsZWNjY2NlQ29tcG9zaXRpb25fRXhjbHVzaW9uY2hhbmdlc3doZW5jYXNlZm9sZGVkQ2hhbmdlc19XaGVuX0Nhc2Vmb2xkZWRjaGFuZ2Vzd2hlbmNhc2VtYXBwZWRDaGFuZ2VzX1doZW5fQ2FzZW1hcHBlZGNoYW5nZXN3aGVubG93ZXJjYXNlZENoYW5nZXNfV2hlbl9Mb3dlcmNhc2VkY2hhbmdlc3doZW5uZmtjY2FzZWZvbGRlZENoYW5nZXNfV2hlbl9ORktDX0Nhc2Vmb2xkZWRjaGFuZ2Vzd2hlbnRpdGxlY2FzZWRDaGFuZ2VzX1doZW5fVGl0bGVjYXNlZGNoYW5nZXN3aGVudXBwZXJjYXNlZENoYW5nZXNfV2hlbl9VcHBlcmNhc2VkY2ljamthY2NvdW50aW5nbnVtZXJpY2tBY2NvdW50aW5nTnVtZXJpY2Nqa2NvbXBhdGliaWxpdHl2YXJpYW50a0NvbXBhdGliaWxpdHlWYXJpYW50Y2praWljb3Jla0lJQ29yZWNqa2lyZ2dzb3VyY2VrSVJHX0dTb3VyY2Vjamtpcmdoc291cmNla0lSR19IU291cmNlY2praXJnanNvdXJjZWtJUkdfSlNvdXJjZWNqa2lyZ2twc291cmNla0lSR19LUFNvdXJjZWNqa2lyZ2tzb3VyY2VrSVJHX0tTb3VyY2Vjamtpcmdtc291cmNla0lSR19NU291cmNlY2praXJnc3NvdXJjZWtJUkdfU1NvdXJjZWNqa2lyZ3Rzb3VyY2VrSVJHX1RTb3VyY2Vjamtpcmd1a3NvdXJjZWtJUkdfVUtTb3VyY2Vjamtpcmd1c291cmNla0lSR19VU291cmNlY2praXJndnNvdXJjZWtJUkdfVlNvdXJjZWNqa290aGVybnVtZXJpY2tPdGhlck51bWVyaWNjamtwcmltYXJ5bnVtZXJpY2tQcmltYXJ5TnVtZXJpY2Nqa3JzdW5pY29kZWtSU1VuaWNvZGVjb21wZXhGdWxsX0NvbXBvc2l0aW9uX0V4Y2x1c2lvbmNvbXBvc2l0aW9uZXhjbHVzaW9uY3djZmN3Y21jd2tjZmN3bGN3dGN3dWRhc2hEYXNoZGVjb21wb3NpdGlvbm1hcHBpbmdEZWNvbXBvc2l0aW9uX01hcHBpbmdkZWNvbXBvc2l0aW9udHlwZURlY29tcG9zaXRpb25fVHlwZWRlZmF1bHRpZ25vcmFibGVjb2RlcG9pbnREZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50ZGVwRGVwcmVjYXRlZGRlcHJlY2F0ZWRkaWRpYURpYWNyaXRpY2RpYWNyaXRpY2RtZHRlYUVhc3RfQXNpYW5fV2lkdGhlYXN0YXNpYW53aWR0aGViYXNlRW1vamlfTW9kaWZpZXJfQmFzZWVjb21wRW1vamlfQ29tcG9uZW50ZW1vZEVtb2ppX01vZGlmaWVyZW1vamlFbW9qaWVtb2ppY29tcG9uZW50ZW1vamltb2RpZmllcmVtb2ppbW9kaWZpZXJiYXNlZW1vamlwcmVzZW50YXRpb25FbW9qaV9QcmVzZW50YXRpb25lcHJlc2VxdWlkZW9FcXVpdmFsZW50X1VuaWZpZWRfSWRlb2dyYXBoZXF1aXZhbGVudHVuaWZpZWRpZGVvZ3JhcGhleHBhbmRzb25uZmNFeHBhbmRzX09uX05GQ2V4cGFuZHNvbm5mZEV4cGFuZHNfT25fTkZEZXhwYW5kc29ubmZrY0V4cGFuZHNfT25fTkZLQ2V4cGFuZHNvbm5ma2RFeHBhbmRzX09uX05GS0RleHRFeHRlbmRlcmV4dGVuZGVkcGljdG9ncmFwaGljRXh0ZW5kZWRfUGljdG9ncmFwaGljZXh0ZW5kZXJleHRwaWN0ZmNuZmtjRkNfTkZLQ19DbG9zdXJlZmNuZmtjY2xvc3VyZWZ1bGxjb21wb3NpdGlvbmV4Y2x1c2lvbmdjZ2NiZ2VuZXJhbGNhdGVnb3J5Z3JhcGhlbWViYXNlR3JhcGhlbWVfQmFzZWdyYXBoZW1lY2x1c3RlcmJyZWFrZ3JhcGhlbWVleHRlbmRHcmFwaGVtZV9FeHRlbmRncmFwaGVtZWxpbmtHcmFwaGVtZV9MaW5rZ3JiYXNlZ3JleHRncmxpbmtoYW5ndWxzeWxsYWJsZXR5cGVIYW5ndWxfU3lsbGFibGVfVHlwZWhleEhleF9EaWdpdGhleGRpZ2l0aHN0aHlwaGVuSHlwaGVuaWRjSURfQ29udGludWVpZGNvbnRpbnVlaWRlb0lkZW9ncmFwaGljaWRlb2dyYXBoaWNpZHNJRF9TdGFydGlkc2JJRFNfQmluYXJ5X09wZXJhdG9yaWRzYmluYXJ5b3BlcmF0b3JpZHN0SURTX1RyaW5hcnlfT3BlcmF0b3JpZHN0YXJ0aWRzdHJpbmFyeW9wZXJhdG9yaW5kaWNwb3NpdGlvbmFsY2F0ZWdvcnlJbmRpY19Qb3NpdGlvbmFsX0NhdGVnb3J5aW5kaWNzeWxsYWJpY2NhdGVnb3J5SW5kaWNfU3lsbGFiaWNfQ2F0ZWdvcnlpbnBjaW5zY2lzY0lTT19Db21tZW50amFtb3Nob3J0bmFtZUphbW9fU2hvcnRfTmFtZWpnSm9pbmluZ19Hcm91cGpvaW5jSm9pbl9Db250cm9sam9pbmNvbnRyb2xqb2luaW5nZ3JvdXBqb2luaW5ndHlwZUpvaW5pbmdfVHlwZWpzbmp0a2FjY291bnRpbmdudW1lcmlja2NvbXBhdGliaWxpdHl2YXJpYW50a2lpY29yZWtpcmdnc291cmNla2lyZ2hzb3VyY2VraXJnanNvdXJjZWtpcmdrcHNvdXJjZWtpcmdrc291cmNla2lyZ21zb3VyY2VraXJnc3NvdXJjZWtpcmd0c291cmNla2lyZ3Vrc291cmNla2lyZ3Vzb3VyY2VraXJndnNvdXJjZWtvdGhlcm51bWVyaWNrcHJpbWFyeW51bWVyaWNrcnN1bmljb2RlbGJMaW5lX0JyZWFrTG93ZXJjYXNlX01hcHBpbmdsaW5lYnJlYWtsb2VMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbmxvZ2ljYWxvcmRlcmV4Y2VwdGlvbkxvd2VyY2FzZWxvd2VyY2FzZWxvd2VyY2FzZW1hcHBpbmdtYXRoTWF0aG5hTmFtZW5hMVVuaWNvZGVfMV9OYW1lbmFtZWFsaWFzTmFtZV9BbGlhc25jaGFyTm9uY2hhcmFjdGVyX0NvZGVfUG9pbnRuZmNxY05GQ19RdWlja19DaGVja25mY3F1aWNrY2hlY2tuZmRxY05GRF9RdWlja19DaGVja25mZHF1aWNrY2hlY2tuZmtjY2FzZWZvbGRORktDX0Nhc2Vmb2xkbmZrY2NmbmZrY3FjTkZLQ19RdWlja19DaGVja25ma2NxdWlja2NoZWNrbmZrZHFjTkZLRF9RdWlja19DaGVja25ma2RxdWlja2NoZWNrbm9uY2hhcmFjdGVyY29kZXBvaW50bnROdW1lcmljX1R5cGVudW1lcmljdHlwZW51bWVyaWN2YWx1ZU51bWVyaWNfVmFsdWVudm9hbHBoYU90aGVyX0FscGhhYmV0aWNvY29tbWVudG9kaU90aGVyX0RlZmF1bHRfSWdub3JhYmxlX0NvZGVfUG9pbnRvZ3JleHRPdGhlcl9HcmFwaGVtZV9FeHRlbmRvaWRjT3RoZXJfSURfQ29udGludWVvaWRzT3RoZXJfSURfU3RhcnRvbG93ZXJPdGhlcl9Mb3dlcmNhc2VvbWF0aE90aGVyX01hdGhvdGhlcmFscGhhYmV0aWNvdGhlcmRlZmF1bHRpZ25vcmFibGVjb2RlcG9pbnRvdGhlcmdyYXBoZW1lZXh0ZW5kb3RoZXJpZGNvbnRpbnVlb3RoZXJpZHN0YXJ0b3RoZXJsb3dlcmNhc2VvdGhlcm1hdGhvdGhlcnVwcGVyY2FzZU90aGVyX1VwcGVyY2FzZW91cHBlcnBhdHN5blBhdHRlcm5fU3ludGF4cGF0dGVybnN5bnRheHBhdHRlcm53aGl0ZXNwYWNlUGF0dGVybl9XaGl0ZV9TcGFjZXBhdHdzcGNtUHJlcGVuZGVkX0NvbmNhdGVuYXRpb25fTWFya3ByZXBlbmRlZGNvbmNhdGVuYXRpb25tYXJrcW1hcmtRdW90YXRpb25fTWFya3F1b3RhdGlvbm1hcmtyYWRpY2FsUmFkaWNhbHJlZ2lvbmFsaW5kaWNhdG9yUmVnaW9uYWxfSW5kaWNhdG9ycmlzYnNjZlNpbXBsZV9DYXNlX0ZvbGRpbmdzY3JpcHRleHRlbnNpb25zc2N4c2RTb2Z0X0RvdHRlZHNlbnRlbmNlYnJlYWtzZW50ZW5jZXRlcm1pbmFsU2VudGVuY2VfVGVybWluYWxzZmNzaW1wbGVjYXNlZm9sZGluZ3NpbXBsZWxvd2VyY2FzZW1hcHBpbmdTaW1wbGVfTG93ZXJjYXNlX01hcHBpbmdzaW1wbGV0aXRsZWNhc2VtYXBwaW5nU2ltcGxlX1RpdGxlY2FzZV9NYXBwaW5nc2ltcGxldXBwZXJjYXNlbWFwcGluZ1NpbXBsZV9VcHBlcmNhc2VfTWFwcGluZ3NsY3NvZnRkb3R0ZWRXaGl0ZV9TcGFjZXN0Y3N0ZXJtc3VjdGNUaXRsZWNhc2VfTWFwcGluZ3Rlcm1UZXJtaW5hbF9QdW5jdHVhdGlvbnRlcm1pbmFscHVuY3R1YXRpb250aXRsZWNhc2VtYXBwaW5ndWNVcHBlcmNhc2VfTWFwcGluZ3VpZGVvVW5pZmllZF9JZGVvZ3JhcGh1bmljb2RlMW5hbWV1bmljb2RlcmFkaWNhbHN0cm9rZXVuaWZpZWRpZGVvZ3JhcGhVcHBlcmNhc2V1cHBlcmNhc2V1cHBlcmNhc2VtYXBwaW5ndXJzdmFyaWF0aW9uc2VsZWN0b3JWYXJpYXRpb25fU2VsZWN0b3J2ZXJ0aWNhbG9yaWVudGF0aW9uVmVydGljYWxfT3JpZW50YXRpb252b3Zzd2J3aGl0ZXNwYWNld29yZGJyZWFrd3NwYWNleGlkY1hJRF9Db250aW51ZXhpZGNvbnRpbnVleGlkc1hJRF9TdGFydHhpZHN0YXJ0eG9uZmN4b25mZHhvbmZrY3hvbmZrZNw1IgADAAAA+BoiAAMAAADfNSIABAAAAOM1IgAPAAAAXXMmAAUAAADyNSIACgAAAPw1IgAKAAAA8jUiAAoAAAAGNiIADQAAAOM1IgAPAAAAEzYiAAIAAAAVNiIACgAAAB82IgAFAAAAJDYiAAwAAAAwNiIACQAAABU2IgAKAAAAOTYiAAsAAAAkNiIADAAAAEQ2IgAFAAAASTYiAA0AAABWNiIADAAAAEk2IgANAAAAYjYiABIAAAB0NiIAFAAAAIg2IgARAAAAmTYiABMAAACsNiIAFQAAAME2IgAYAAAA2TYiAAMAAADHfyYABQAAAGSCJgAFAAAAx38mAAUAAADcNiIAAwAAAHQ2IgAUAAAA3zYiAAMAAACZNiIAEwAAAOI2IgADAAAAwTYiABgAAADlNiIAFwAAAPw2IgAZAAAAFTciAAUAAAAaNyIABQAAAB83IgALAAAAKjciAAwAAAA2NyIADQAAAEM3IgAOAAAAUTciAAMAAAD8NiIAGQAAAFQ3IgACAAAAVjciABUAAADyGiIAAgAAACo3IgAMAAAAazciABUAAACANyIAFwAAAJc3IgAVAAAArDciABcAAADDNyIAFQAAANg3IgAXAAAA7zciABkAAAAIOCIAHAAAACQ4IgAVAAAAOTgiABcAAABQOCIAFQAAAGU4IgAXAAAAfDgiAAIAAABDNyIADgAAAH44IgAUAAAAkjgiABIAAACkOCIAFwAAALs4IgAVAAAA0DgiAAkAAADZOCIABwAAAOA4IgANAAAA7TgiAAwAAAD5OCIADQAAAAY5IgAMAAAAEjkiAA0AAAAfOSIADAAAACs5IgAOAAAAOTkiAA0AAABGOSIADQAAAFM5IgAMAAAAXzkiAA0AAABsOSIADAAAAHg5IgANAAAAhTkiAAwAAACROSIADQAAAJ45IgAMAAAAqjkiAA4AAAC4OSIADQAAAMU5IgANAAAA0jkiAAwAAADeOSIADQAAAOs5IgAMAAAA9zkiAA8AAAAGOiIADQAAABM6IgARAAAAJDoiAA8AAAAzOiIADAAAAD86IgAKAAAASToiAAYAAABPOiIAGgAAAGk6IgAUAAAAVjciABUAAAB9OiIABAAAAIA3IgAXAAAAgToiAAQAAACsNyIAFwAAAIU6IgAFAAAACDgiABwAAACKOiIAAwAAANg3IgAXAAAAjToiAAMAAAA5OCIAFwAAAJA6IgADAAAAZTgiABcAAACTOiIABAAAAJc6IgAEAAAAmzoiABQAAACvOiIAFQAAAMQ6IgARAAAA1ToiABIAAADnOiIAGQAAAAA7IgAcAAAAHDsiAAMAAAAfOyIACgAAACk7IgAKAAAAHzsiAAoAAAAzOyIAAgAAAAA7IgAcAAAANTsiAAMAAAA4OyIACQAAAEE7IgAJAAAAODsiAAkAAABKOyIAAgAAAK86IgAVAAAATDsiAAIAAADVOiIAEgAAAE47IgACAAAAUDsiABAAAABgOyIADgAAAFA7IgAQAAAAbjsiAAUAAABzOyIAEwAAAIY7IgAFAAAAizsiAA8AAACaOyIABAAAAJ47IgAOAAAArDsiAAUAAACxOyIABQAAALY7IgAOAAAAizsiAA8AAADEOyIADQAAAJ47IgAOAAAA0TsiABEAAABzOyIAEwAAAOI7IgARAAAA8zsiABIAAAAFPCIABQAAAPM7IgASAAAACjwiAAcAAAARPCIAHAAAAC08IgAaAAAAETwiABwAAABHPCIADAAAAFM8IgAOAAAAYTwiAAwAAABtPCIADgAAAHs8IgANAAAAiDwiAA8AAACXPCIADQAAAKQ8IgAPAAAAszwiAAMAAAC2PCIACAAAAL48IgAUAAAA0jwiABUAAADnPCIACAAAALY8IgAIAAAA7zwiAAcAAADS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AAAAF1ciAAQAAACpVyIAAwAAAB5XIgAEAAAArFciAAMAAAAlVyIABAAAAK9XIgADAAAALFciAAQAAACyVyIAAwAAADNXIgAEAAAAtVciAAMAAAA6VyIABAAAALhXIgADAAAAQVciAAQAAAC7VyIAAwAAAEhXIgAEAAAAvlciAAMAAABPVyIABAAAAMFXIgADAAAAVlciAAQAAADEVyIAAwAAAF1XIgAEAAAAY2FzZWRsZXR0ZXJDYXNlZF9MZXR0ZXJjY0NvbnRyb2xGb3JtYXRjbG9zZXB1bmN0dWF0aW9uQ2xvc2VfUHVuY3R1YXRpb25jbmNvUHJpdmF0ZV9Vc2Vjb21iaW5pbmdtYXJrY29ubmVjdG9ycHVuY3R1YXRpb25Db25uZWN0b3JfUHVuY3R1YXRpb25jb250cm9sY3NTdXJyb2dhdGVjdXJyZW5jeXN5bWJvbEN1cnJlbmN5X1N5bWJvbGRhc2hwdW5jdHVhdGlvbkRhc2hfUHVuY3R1YXRpb25kZWNpbWFsbnVtYmVyRGVjaW1hbF9OdW1iZXJlbmNsb3NpbmdtYXJrRW5jbG9zaW5nX01hcmtmaW5hbHB1bmN0dWF0aW9uRmluYWxfUHVuY3R1YXRpb25mb3JtYXRpbml0aWFscHVuY3R1YXRpb25Jbml0aWFsX1B1bmN0dWF0aW9uTGV0dGVybGV0dGVybGV0dGVybnVtYmVyTGV0dGVyX051bWJlcmxpbmVzZXBhcmF0b3JMaW5lX1NlcGFyYXRvcmxsTG93ZXJjYXNlX0xldHRlcmxtTW9kaWZpZXJfTGV0dGVybG9PdGhlcl9MZXR0ZXJsb3dlcmNhc2VsZXR0ZXJUaXRsZWNhc2VfTGV0dGVybHVVcHBlcmNhc2VfTGV0dGVybWFya21hdGhzeW1ib2xNYXRoX1N5bWJvbG1jU3BhY2luZ19NYXJrbWVtbk5vbnNwYWNpbmdfTWFya21vZGlmaWVybGV0dGVybW9kaWZpZXJzeW1ib2xNb2RpZmllcl9TeW1ib2xuZG5sbm9PdGhlcl9OdW1iZXJub25zcGFjaW5nbWFya29wZW5wdW5jdHVhdGlvbk9wZW5fUHVuY3R1YXRpb25vdGhlcm90aGVybGV0dGVyb3RoZXJudW1iZXJvdGhlcnB1bmN0dWF0aW9uT3RoZXJfUHVuY3R1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YyIABgAAAPpjIgAGAAAA9GMiAAYAAAAAZCIAAwAAAANkIgAOAAAAEWQiAAwAAAADZCIADgAAAOTTJgABAAAAHWQiAAEAAAAeZCIAAgAAACBkIgACAAAAImQiAAIAAAAkZCIAAgAAACZkIgADAAAAKWQiAAMAAACqXSIABQAAAL4WJgAFAAAALGQiAAIAAAAuZCIABwAAADVkIgAHAAAALmQiAAcAAADtQyIAEQAAAP5DIgASAAAAEEQiAAIAAAD+QyIAEgAAAGJeIgACAAAAPGQiAAsAAACDXiIACwAAADxkIgALAAAAR2QiAAEAAABIZCIAAQAAAElkIgABAAAASmQiAAEAAABLZCIAAgAAAL4WJgAFAAAA6XMmAAMAAABNZCIAAwAAAGFkbGFtQWRsYW1hZGxtYWdoYkNhdWNhc2lhbl9BbGJhbmlhbmFob21BaG9tYW5hdG9saWFuaGllcm9nbHlwaHNBbmF0b2xpYW5fSGllcm9nbHlwaHNhcmFiQXJhYmljYXJhYmljYXJtZW5pYW5Bcm1lbmlhbmFybWlJbXBlcmlhbF9BcmFtYWljYXJtbmF2ZXN0YW5BdmVzdGFuYXZzdGJhbGlCYWxpbmVzZWJhbGluZXNlYmFtdUJhbXVtYmFtdW1iYXNzQmFzc2FfVmFoYmFzc2F2YWhiYXRha0JhdGFrYmF0a2JlbmdCZW5nYWxpYmVuZ2FsaWJoYWlrc3VraUJoYWlrc3VraWJoa3Nib3BvQm9wb21vZm9ib3BvbW9mb2JyYWhCcmFobWlicmFobWlicmFpQnJhaWxsZWJyYWlsbGVidWdpQnVnaW5lc2VidWdpbmVzZWJ1aGRCdWhpZGJ1aGlkY2FrbUNoYWttYWNhbmFkaWFuYWJvcmlnaW5hbENhbmFkaWFuX0Fib3JpZ2luYWxjYW5zY2FyaUNhcmlhbmNhcmlhbmNhdWNhc2lhbmFsYmFuaWFuY2hha21hY2hhbUNoYW1jaGVyQ2hlcm9rZWVjaGVyb2tlZWNob3Jhc21pYW5DaG9yYXNtaWFuY2hyc2NvbW1vbkNvbW1vbmNvcHRDb3B0aWNjb3B0aWNjcG1uQ3lwcm9fTWlub2FuY3BydEN5cHJpb3RjdW5laWZvcm1DdW5laWZvcm1jeXByaW90Y3lwcm9taW5vYW5jeXJpbGxpY0N5cmlsbGljY3lybGRlc2VyZXREZXNlcmV0ZGV2YURldmFuYWdhcmlkZXZhbmFnYXJpZGlha0RpdmVzX0FrdXJ1ZGl2ZXNha3VydWRvZ3JEb2dyYWRvZ3JhZHNydGR1cGxEdXBsb3lhbmR1cGxveWFuZWd5cEVneXB0aWFuX0hpZXJvZ2x5cGhzZWd5cHRpYW5oaWVyb2dseXBoc2VsYmFFbGJhc2FuZWxiYXNhbmVseW1FbHltYWljZWx5bWFpY2V0aGlFdGhpb3BpY2V0aGlvcGljZ2Vvckdlb3JnaWFuZ2VvcmdpYW5nbGFnR2xhZ29saXRpY2dsYWdvbGl0aWNnb25nR3VuamFsYV9Hb25kaWdvbm1NYXNhcmFtX0dvbmRpZ290aEdvdGhpY2dvdGhpY2dyYW5HcmFudGhhZ3JhbnRoYWdyZWVrR3JlZWtncmVrZ3VqYXJhdGlHdWphcmF0aWd1anJndW5qYWxhZ29uZGlndXJtdWtoaUd1cm11a2hpZ3VydWhhbkhhbmhhbmdIYW5ndWxoYW5ndWxoYW5paGFuaWZpcm9oaW5neWFIYW5pZmlfUm9oaW5neWFoYW5vSGFudW5vb2hhbnVub29oYXRySGF0cmFuaGF0cmFuaGVickhlYnJld2hlYnJld2hpcmFIaXJhZ2FuYWhpcmFnYW5haGx1d2htbmdQYWhhd2hfSG1vbmdobW5wTnlpYWtlbmdfUHVhY2h1ZV9IbW9uZ2hya3RLYXRha2FuYV9Pcl9IaXJhZ2FuYWh1bmdPbGRfSHVuZ2FyaWFuaW1wZXJpYWxhcmFtYWljaW5oZXJpdGVkSW5oZXJpdGVkaW5zY3JpcHRpb25hbHBhaGxhdmlJbnNjcmlwdGlvbmFsX1BhaGxhdmlpbnNjcmlwdGlvbmFscGFydGhpYW5JbnNjcmlwdGlvbmFsX1BhcnRoaWFuaXRhbE9sZF9JdGFsaWNqYXZhSmF2YW5lc2VqYXZhbmVzZWthaXRoaUthaXRoaWthbGlLYXlhaF9MaWthbmFLYXRha2FuYWthbm5hZGFLYW5uYWRha2F0YWthbmFrYXRha2FuYW9yaGlyYWdhbmFrYXdpS2F3aWtheWFobGlraGFyS2hhcm9zaHRoaWtoYXJvc2h0aGlraGl0YW5zbWFsbHNjcmlwdEtoaXRhbl9TbWFsbF9TY3JpcHRraG1lcktobWVya2htcmtob2pLaG9qa2lraG9qa2lraHVkYXdhZGlLaHVkYXdhZGlraXRza25kYWt0aGlsYW5hVGFpX1RoYW1sYW9MYW9sYW9vbGF0aW5MYXRpbmxhdG5sZXBjTGVwY2hhbGVwY2hhbGltYkxpbWJ1bGltYnVsaW5hTGluZWFyX0FsaW5iTGluZWFyX0JsaW5lYXJhbGluZWFyYmxpc3VMaXN1bHljaUx5Y2lhbmx5Y2lhbmx5ZGlMeWRpYW5seWRpYW5tYWhhamFuaU1haGFqYW5pbWFoam1ha2FNYWthc2FybWFrYXNhcm1hbGF5YWxhbU1hbGF5YWxhbW1hbmRNYW5kYWljbWFuZGFpY21hbmlNYW5pY2hhZWFubWFuaWNoYWVhbm1hcmNNYXJjaGVubWFyY2hlbm1hc2FyYW1nb25kaW1lZGVmYWlkcmluTWVkZWZhaWRyaW5tZWRmbWVldGVpbWF5ZWtNZWV0ZWlfTWF5ZWttZW5kTWVuZGVfS2lrYWt1aW1lbmRla2lrYWt1aW1lcmNNZXJvaXRpY19DdXJzaXZlbWVyb01lcm9pdGljX0hpZXJvZ2x5cGhzbWVyb2l0aWNjdXJzaXZlbWVyb2l0aWNoaWVyb2dseXBoc21pYW9NaWFvbWx5bW1vZGlNb2RpbW9uZ01vbmdvbGlhbm1vbmdvbGlhbm1yb01yb21yb29tdGVpbXVsdE11bHRhbmltdWx0YW5pbXlhbm1hck15YW5tYXJteW1ybmFiYXRhZWFuTmFiYXRhZWFubmFnbU5hZ19NdW5kYXJpbmFnbXVuZGFyaW5hbmROYW5kaW5hZ2FyaW5hbmRpbmFnYXJpbmFyYk9sZF9Ob3J0aF9BcmFiaWFubmJhdG5ld2FOZXdhbmV3dGFpbHVlTmV3X1RhaV9MdWVua29Oa29ua29vbnNodU51c2h1bnVzaHVueWlha2VuZ3B1YWNodWVobW9uZ29nYW1PZ2hhbW9naGFtb2xjaGlraU9sX0NoaWtpb2xja29sZGh1bmdhcmlhbm9sZGl0YWxpY29sZG5vcnRoYXJhYmlhbm9sZHBlcm1pY09sZF9QZXJtaWNvbGRwZXJzaWFuT2xkX1BlcnNpYW5vbGRzb2dkaWFuT2xkX1NvZ2RpYW5vbGRzb3V0aGFyYWJpYW5PbGRfU291dGhfQXJhYmlhbm9sZHR1cmtpY09sZF9UdXJraWNvbGR1eWdodXJPbGRfVXlnaHVyb3JpeWFPcml5YW9ya2hvcnlhb3NhZ2VPc2FnZW9zZ2Vvc21hT3NtYW55YW9zbWFueWFvdWdycGFoYXdoaG1vbmdwYWxtUGFsbXlyZW5lcGFsbXlyZW5lcGF1Y1BhdV9DaW5fSGF1cGF1Y2luaGF1cGVybXBoYWdQaGFnc19QYXBoYWdzcGFwaGxpcGhscFBzYWx0ZXJfUGFobGF2aXBobnhQaG9lbmljaWFucGhvZW5pY2lhbnBscmRwcnRpcHNhbHRlcnBhaGxhdmlxYWFjcWFhaXJlamFuZ1JlamFuZ3Jqbmdyb2hncnVuaWNSdW5pY3J1bnJzYW1hcml0YW5TYW1hcml0YW5zYW1yc2FyYnNhdXJTYXVyYXNodHJhc2F1cmFzaHRyYXNnbndTaWduV3JpdGluZ3NoYXJhZGFTaGFyYWRhc2hhdmlhblNoYXZpYW5zaGF3c2hyZHNpZGRTaWRkaGFtc2lkZGhhbXNpZ253cml0aW5nc2luZHNpbmhTaW5oYWxhc2luaGFsYXNvZ2RTb2dkaWFuc29nZGlhbnNvZ29zb3JhU29yYV9Tb21wZW5nc29yYXNvbXBlbmdzb3lvU295b21ib3NveW9tYm9zdW5kU3VuZGFuZXNlc3VuZGFuZXNlc3lsb1N5bG90aV9OYWdyaXN5bG90aW5hZ3Jpc3lyY1N5cmlhY3N5cmlhY3RhZ2Fsb2dUYWdhbG9ndGFnYlRhZ2JhbndhdGFnYmFud2F0YWlsZVRhaV9MZXRhaXRoYW10YWl2aWV0VGFpX1ZpZXR0YWtyVGFrcml0YWtyaXRhbGV0YWx1dGFtaWxUYW1pbHRhbWx0YW5nVGFuZ3V0dGFuZ3NhVGFuZ3NhdGFuZ3V0dGF2dHRlbHVUZWx1Z3V0ZWx1Z3V0Zm5nVGlmaW5hZ2h0Z2xndGhhYVRoYWFuYXRoYWFuYXRoYWlUaGFpdGliZXRhblRpYmV0YW50aWJ0dGlmaW5hZ2h0aXJoVGlyaHV0YXRpcmh1dGF0bnNhdG90b1RvdG91Z2FyVWdhcml0aWN1Z2FyaXRpY3ZhaVZhaXZhaWl2aXRoVml0aGt1cWl2aXRoa3VxaXdhbmNob1dhbmNob3dhcmFXYXJhbmdfQ2l0aXdhcmFuZ2NpdGl3Y2hveHBlb3hzdXh5ZXppWWV6aWRpeWV6aWRpeWlZaXlpaWl6YW5hYmF6YXJzcXVhcmVaYW5hYmF6YXJfU3F1YXJlemFuYnppbmh6eXl5enp6egAAABBmIgAFAAAAFWYiAAUAAAAaZiIABAAAABVmIgAFAAAAHmYiAAQAAAAiZiIAEgAAADRmIgAEAAAAOGYiAAQAAAA8ZiIAFAAAAFBmIgAVAAAAZWYiAAQAAABpZiIABgAAAG9mIgAGAAAAaWYiAAYAAAB1ZiIACAAAAH1mIgAIAAAAhWYiAAQAAACJZiIAEAAAAJlmIgAEAAAAfWYiAAgAAACdZiIABwAAAKRmIgAHAAAAq2YiAAQAAACkZiIABwAAAK9mIgAEAAAAs2YiAAgAAAC7ZiIACAAAALNmIgAIAAAAw2YiAAQAAADHZiIABQAAAMxmIgAFAAAAx2YiAAUAAADRZiIABAAAANVmIgAJAAAA3mYiAAgAAADVZiIACQAAAOZmIgAFAAAA62YiAAUAAADwZiIABAAAAOtmIgAFAAAA9GYiAAQAAAD4ZiIABwAAAP9mIgAHAAAA+GYiAAcAAAAGZyIACQAAAA9nIgAJAAAAGGciAAQAAAAPZyIACQAAABxnIgAEAAAAIGciAAgAAAAoZyIACAAAACBnIgAIAAAAMGciAAQAAAA0ZyIABgAAADpnIgAGAAAANGciAAYAAABAZyIABAAAAERnIgAHAAAAS2ciAAcAAABEZyIABwAAAFJnIgAEAAAAVmciAAgAAABeZyIACAAAAFZnIgAIAAAAZmciAAQAAABqZyIABQAAAG9nIgAFAAAAamciAAUAAAB0ZyIABAAAAHhnIgAGAAAAfmciABIAAACQZyIAEwAAAKNnIgAEAAAAkGciABMAAACnZyIABAAAAKtnIgAGAAAAsWciAAYAAACrZyIABgAAALdnIgARAAAAImYiABIAAADIZyIABgAAAHhnIgAGAAAAzmciAAQAAADSZyIABAAAANZnIgAEAAAA2mciAAgAAADiZyIACAAAANpnIgAIAAAA6mciAAoAAAD0ZyIACgAAAP5nIgAEAAAA9GciAAoAAAACaCIABgAAAAhoIgAGAAAADmgiAAQAAAASaCIABgAAABhoIgAGAAAAEmgiAAYAAAAeaCIABAAAACJoIgAMAAAALmgiAAQAAAAyaCIABwAAADloIgAJAAAAQmgiAAkAAABLaCIABwAAADJoIgAHAAAAUmgiAAsAAAAiaCIADAAAAF1oIgAIAAAAZWgiAAgAAABtaCIABAAAAGVoIgAIAAAAcWgiAAcAAAB4aCIABwAAAH9oIgAEAAAAg2giAAoAAACNaCIACgAAAINoIgAKAAAAl2giAAQAAACbaCIACwAAAKZoIgAKAAAAm2giAAsAAACwaCIABAAAALRoIgAFAAAAuWgiAAUAAAC0aCIABQAAAL5oIgAEAAAAeGgiAAcAAADCaCIABAAAAMZoIgAIAAAAzmgiAAgAAADGaCIACAAAANZoIgAEAAAA2mgiABQAAADuaCIAEwAAANpoIgAUAAAAAWkiAAQAAAAFaSIABwAAAAxpIgAHAAAABWkiAAcAAAATaSIABAAAABdpIgAHAAAAHmkiAAcAAAAXaSIABwAAACVpIgAEAAAAKWkiAAgAAAAxaSIACAAAAClpIgAIAAAAOWkiAAQAAAA9aSIACAAAAEVpIgAIAAAAPWkiAAgAAABNaSIABAAAAFFpIgAKAAAAW2kiAAoAAABRaSIACgAAAGVpIgAEAAAAaWkiAA0AAAB2aSIABAAAAHppIgANAAAAh2kiAAQAAACLaSIABgAAAJFpIgAGAAAAi2kiAAYAAACXaSIABAAAAJtpIgAHAAAAomkiAAcAAACbaSIABwAAAKlpIgAFAAAArmkiAAUAAACzaSIABAAAAK5pIgAFAAAAt2kiAAgAAAC/aSIACAAAAMdpIgAEAAAAv2kiAAgAAADLaSIADAAAAGlpIgANAAAA12kiAAgAAADfaSIACAAAAOdpIgAEAAAA32kiAAgAAADraSIAAwAAAO5pIgADAAAA8WkiAAQAAAD1aSIABgAAAPtpIgAGAAAA9WkiAAYAAAABaiIABAAAAO5pIgADAAAABWoiAA4AAAATaiIADwAAACJqIgAEAAAAJmoiAAcAAAAtaiIABwAAACZqIgAHAAAANGoiAAQAAAA4aiIABgAAAD5qIgAGAAAAOGoiAAYAAABEaiIABAAAAEhqIgAGAAAATmoiAAYAAABIaiIABgAAAFRqIgAEAAAAWGoiAAgAAABgaiIACAAAAFhqIgAIAAAAaGoiAAQAAABQZiIAFQAAAGxqIgAEAAAAcGoiAAwAAAB8aiIABAAAAIBqIgAWAAAAlmoiAAQAAACaaiIAFAAAAK5qIgAEAAAAsmoiAA0AAAC/aiIADwAAAIlmIgAQAAAAzmoiAAkAAADXaiIACQAAAOBqIgAUAAAA9GoiABUAAAAJayIAFQAAAB5rIgAWAAAANGsiAAQAAAA4ayIACgAAAEJrIgAEAAAARmsiAAgAAABOayIACAAAAEZrIgAIAAAAVmsiAAYAAABcayIABgAAAGJrIgAEAAAAZmsiAAgAAABuayIABAAAAHJrIgAIAAAAemsiAAcAAACBayIABwAAAIhrIgAIAAAAcmsiAAgAAACQayIAEgAAAJpqIgAUAAAAomsiAAQAAACmayIABAAAAKprIgAHAAAAZmsiAAgAAACxayIABAAAALVrIgAKAAAAv2siAAoAAAC1ayIACgAAAMlrIgARAAAA2msiABMAAADtayIABQAAAPJrIgAFAAAA92siAAQAAADyayIABQAAAPtrIgAEAAAA/2siAAYAAAAFbCIABgAAAP9rIgAGAAAAC2wiAAkAAAAUbCIACQAAAB1sIgAEAAAA2msiABMAAAAhbCIABAAAAIFrIgAHAAAAJWwiAAQAAABcayIABgAAAClsIgAEAAAALWwiAAgAAAA1bCIAAwAAADhsIgADAAAAO2wiAAQAAAA4bCIAAwAAAD9sIgAFAAAARGwiAAUAAABJbCIABAAAAERsIgAFAAAATWwiAAQAAABRbCIABgAAAFdsIgAGAAAAUWwiAAYAAABdbCIABAAAAGFsIgAFAAAAZmwiAAUAAABhbCIABQAAAGtsIgAEAAAAb2wiAAgAAAB3bCIABAAAAHtsIgAIAAAAg2wiAAcAAABvbCIACAAAAIpsIgAHAAAAe2wiAAgAAACRbCIABAAAAJVsIgAEAAAAmWwiAAQAAACdbCIABgAAAKNsIgAGAAAAnWwiAAYAAACpbCIABAAAAK1sIgAGAAAAs2wiAAYAAACtbCIABgAAALlsIgAIAAAAwWwiAAgAAADJbCIABAAAAMFsIgAIAAAAzWwiAAQAAADRbCIABwAAANhsIgAHAAAA0WwiAAcAAADfbCIACQAAAOhsIgAJAAAA8WwiAAQAAAD1bCIABwAAAPxsIgAHAAAA9WwiAAcAAAADbSIABAAAAAdtIgAKAAAAEW0iAAoAAAAHbSIACgAAABttIgAEAAAAH20iAAcAAAAmbSIABwAAAB9tIgAHAAAALW0iAAwAAAB6aSIADQAAADltIgALAAAARG0iAAsAAABPbSIABAAAAERtIgALAAAAU20iAAsAAABebSIADAAAAGptIgAEAAAAbm0iAA0AAAB7bSIADAAAAG5tIgANAAAAh20iAAQAAACLbSIAEAAAAJttIgAEAAAAn20iABQAAACzbSIADwAAAIttIgAQAAAAwm0iABMAAACfbSIAFAAAANVtIgAEAAAA2W0iAAQAAADdbSIABAAAAOhsIgAJAAAA4W0iAAQAAADlbSIABAAAAOltIgAEAAAA7W0iAAkAAAD2bSIACQAAAO1tIgAJAAAA/20iAAMAAAACbiIAAwAAAAVuIgAEAAAAAm4iAAMAAAAJbiIABAAAAF5tIgAMAAAADW4iAAQAAAARbiIABwAAABhuIgAHAAAAEW4iAAcAAAAfbiIABwAAACZuIgAHAAAALW4iAAQAAAAmbiIABwAAADFuIgAJAAAAOm4iAAkAAABDbiIABAAAAEduIgALAAAAUm4iAAoAAABHbiIACwAAAFxuIgAEAAAAYG4iAAsAAABrbiIACwAAAGBuIgALAAAAdm4iAAQAAAB6biIAEQAAAItuIgAEAAAAOm4iAAkAAACPbiIABAAAAJNuIgAEAAAAl24iAAkAAACgbiIACwAAAKtuIgADAAAArm4iAAMAAACxbiIABAAAAK5uIgADAAAAtW4iAAQAAAC5biIABQAAAL5uIgAFAAAAuW4iAAUAAADDbiIAFAAAAIBqIgAWAAAA124iAAQAAADbbiIABQAAAOBuIgAFAAAA224iAAUAAADlbiIABwAAAOxuIgAIAAAA9G4iAAQAAADsbiIACAAAAPhuIgAMAAAAsmoiAA0AAAAEbyIACQAAADhrIgAKAAAADW8iAA8AAAB6biIAEQAAABxvIgAJAAAAJW8iAAoAAAAvbyIACgAAADlvIgALAAAARG8iAAoAAABObyIACwAAAFlvIgAPAAAAaG8iABEAAAB5byIACQAAAIJvIgAKAAAAjG8iAAkAAACVbyIACgAAAJ9vIgAFAAAApG8iAAUAAACpbyIABAAAAIJvIgAKAAAArW8iAAQAAACkbyIABQAAALFvIgAFAAAAtm8iAAUAAAC7byIABAAAALZvIgAFAAAAv28iAAQAAADDbyIABwAAAMpvIgAH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CQAAOQkAADwJAABNCQAAUAkAAFQJAABYCQAAcAkAAIEJAACDCQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvAkAALwJAAC+CQAAxAkAAMcJAADICQAAywkAAM0JAADXCQAA1wkAANwJAADdCQAA3wkAAOMJAADmCQAA+gkAAAIKAAACCgAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFkKAABcCgAAXgoAAF4KAABmCgAAdAoAAIEKAACDCgAAhQoAAIsKAACNCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAxQoAAMcKAADJCgAAywoAAM0KAADQCgAA0AoAAOAKAADgCgAA5goAAO8KAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA2CwAAOQsAADwLAABDCwAARwsAAEgLAABLCwAATQsAAFYLAABXCwAAXAsAAF0LAABfCwAAYQsAAGYLAABwCwAAggsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALULAAC3CwAAuQsAAL4LAADCCwAAxgsAAMgLAADKCwAAzQsAANcLAADXCwAA5wsAAPILAAABDAAAAwwAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAAzDAAANQwAADkMAAA+DAAARAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAGAMAABhDAAAZgwAAG8MAACCDAAAgwwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC+DAAAxAwAAMYMAADIDAAAygwAAM0MAADVDAAA1gwAAN4MAADeDAAA4AwAAOEMAADmDAAA7wwAAAINAAADDQAABQ0AAAwNAAAODQAAEA0AABINAAAoDQAAKg0AADkNAAA+DQAAQw0AAEYNAABIDQAASg0AAE0NAABXDQAAVw0AAGANAABh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AwAAgQQAAIoEAAAvBQAAMQUAAFYFAABZBQAAWQUAAGAFAACIBQAA0AUAAOoFAADvBQAA8gUAACAGAABKBgAAbgYAAG8GAABxBgAA0wYAANUGAADVBgAA5QYAAOYGAADuBgAA7wYAAPoGAAD8BgAA/wYAAP8GAAAQBwAAEAcAABIHAAAvBwAATQcAAKUHAACxBwAAsQcAAMoHAADqBwAA9AcAAPUHAAD6BwAA+gcAAAAIAAAVCAAAGggAABoIAAAkCAAAJAgAACgIAAAoCAAAQAgAAFgIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACgCAAAyQgAAAQJAAA5CQAAPQkAAD0JAABQCQAAUAkAAFgJAABhCQAAcQkAAIAJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAPAJAADxCQAA/AkAAPwJAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAFkKAABcCgAAXgoAAF4KAAByCgAAdAoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAAC9CgAA0AoAANAKAADgCgAA4QoAAPkKAAD5CgAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAD0LAABcCwAAXQsAAF8LAABhCwAAcQsAAHELAACDCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAANALAADQCwAABQwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA9DAAAPQwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAIAMAACADAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAAL0MAAC9DAAA3QwAAN4MAADgDAAA4QwAAPEMAADyDAAABA0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAABODQAATg0AAFQNAABW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AQAAKQEAACsBAAArAQAALQEAAC0BAAAvAQAALwEAADEBAAAxAQAAMwEAADMBAAA1AQAANQEAADcBAAA4AQAAOgEAADoBAAA8AQAAPAEAAD4BAAA+AQAAQAEAAEABAABCAQAAQgEAAEQBAABEAQAARgEAAEYBAABIAQAASQEAAEsBAABLAQAATQEAAE0BAABPAQAATwEAAFEBAABRAQAAUwEAAFMBAABVAQAAVQEAAFcBAABXAQAAWQEAAFkBAABbAQAAWwEAAF0BAABdAQAAXwEAAF8BAABhAQAAYQEAAGMBAABjAQAAZQEAAGUBAABnAQAAZwEAAGkBAABpAQAAawEAAGsBAABtAQAAbQEAAG8BAABvAQAAcQEAAHEBAABzAQAAcwEAAHUBAAB1AQAAdwEAAHcBAAB6AQAAegEAAHwBAAB8AQAAfgEAAIABAACDAQAAgwEAAIUBAACFAQAAiAEAAIgBAACMAQAAjQEAAJIBAACSAQAAlQEAAJUBAACZAQAAmwEAAJ4BAACeAQAAoQEAAKEBAACjAQAAowEAAKUBAAClAQAAqAEAAKgBAACqAQAAqwEAAK0BAACtAQAAsAEAALABAAC0AQAAtAEAALYBAAC2AQAAuQEAALoBAAC9AQAAvwEAAMYBAADGAQAAyQEAAMkBAADMAQAAzAEAAM4BAADOAQAA0AEAANABAADSAQAA0gEAANQBAADUAQAA1gEAANYBAADYAQAA2AEAANoBAADaAQAA3AEAAN0BAADfAQAA3wEAAOEBAADhAQAA4wEAAOMBAADlAQAA5QEAAOcBAADnAQAA6QEAAOkBAADrAQAA6wEAAO0BAADtAQAA7wEAAPABAADzAQAA8wEAAPUBAAD1AQAA+QEAAPkBAAD7AQAA+wEAAP0BAAD9AQAA/wEAAP8BAAABAgAAAQIAAAMCAAADAgAABQIAAAUCAAAHAgAABwIAAAkCAAAJAgAACwIAAAsCAAANAgAADQIAAA8CAAAPAgAAEQIAABECAAATAgAAEwIAABUCAAAVAgAAFwIAABcCAAAZAgAAGQIAABsCAAAbAgAAHQIAAB0CAAAfAgAAHwIAACECAAAhAgAAIwIAACMCAAAlAgAAJQIAACcCAAAnAgAAKQIAACkCAAArAgAAKwIAAC0CAAAtAgAALwIAAC8CAAAxAgAAMQIAADMCAAA5AgAAPAIAADwCAAA/AgAAQAIAAEICAABCAgAARwIAAEcCAABJAgAASQIAAEsCAABLAgAATQIAAE0CAABPAgAAkwIAAJUCAACvAgAAcQMAAHEDAABzAwAAcwMAAHcDAAB3AwAAewMAAH0DAACQAwAAkAMAAKwDAADOAwAA0AMAANEDAADVAwAA1wMAANkDAADZAwAA2wMAANsDAADdAwAA3QMAAN8DAADfAwAA4QMAAOEDAADjAwAA4wMAAOUDAADlAwAA5wMAAOcDAADpAwAA6QMAAOsDAADrAwAA7QMAAO0DAADvAwAA8wMAAPUDAAD1AwAA+AMAAPgDAAD7AwAA/AMAADAEAABfBAAAYQQAAGEEAABjBAAAYwQAAGUEAABlBAAAZwQAAGcEAABpBAAAaQQAAGsEAABrBAAAbQQAAG0EAABvBAAAbwQAAHEEAABxBAAAcwQAAHMEAAB1BAAAdQQAAHcEAAB3BAAAeQQAAHkEAAB7BAAAewQAAH0EAAB9BAAAfwQAAH8EAACBBAAAgQQAAIsEAACLBAAAjQQAAI0EAACPBAAAjwQAAJEEAACRBAAAkwQAAJMEAACVBAAAlQQAAJcEAACXBAAAmQQAAJkEAACbBAAAmwQAAJ0EAACdBAAAnwQAAJ8EAAChBAAAoQQAAKMEAACjBAAApQQAAKUEAACnBAAApwQAAKkEAACpBAAAqwQAAKsEAACtBAAArQQAAK8EAACvBAAAsQQAALEEAACzBAAAswQAALUEAAC1BAAAtwQAALcEAAC5BAAAuQQAALsEAAC7BAAAvQQAAL0EAAC/BAAAvwQAAMIEAADCBAAAxAQAAMQEAADGBAAAxgQAAMgEAADIBAAAygQAAMoEAADMBAAAzAQAAM4EAADPBAAA0QQAANEEAADTBAAA0wQAANUEAADVBAAA1wQAANcEAADZBAAA2QQAANsEAADbBAAA3QQAAN0EAADfBAAA3wQAAOEEAADhBAAA4wQAAOMEAADlBAAA5QQAAOcEAADnBAAA6QQAAOkEAADrBAAA6wQAAO0EAADtBAAA7wQAAO8EAADxBAAA8QQAAPMEAADzBAAA9QQAAPUEAAD3BAAA9wQAAPkEAAD5BAAA+wQAAPsEAAD9BAAA/QQAAP8EAAD/BAAAAQUAAAEFAAADBQAAAwUAAAUFAAAFBQAABwUAAAcFAAAJBQAACQUAAAsFAAALBQAADQUAAA0FAAAPBQAADwUAABEFAAARBQAAEwUAABMFAAAVBQAAFQUAABcFAAAXBQAAGQUAABkFAAAbBQAAGwUAAB0FAAAdBQAAHwUAAB8FAAAhBQAAIQUAACMFAAAjBQAAJQUAACUFAAAnBQAAJwUAACkFAAApBQAAKwUAACsFAAAtBQAALQUAAC8FAAAvBQAAYAUAAIgFAADQEAAA+hAAAP0QAAD/EAAA+BMAAP0TAACAHAAAiBwAAAAdAAArHQAAax0AAHcdAAB5HQAAmh0AAAEeAAABHgAAAx4AAAMeAAAFHgAABR4AAAceAAAHHgAACR4AAAkeAAALHgAACx4AAA0eAAANHgAADx4AAA8eAAARHgAAER4AABMeAAATHgAAFR4AABUeAAAXHgAAFx4AABkeAAAZHgAAGx4AABseAAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAnR4AAJ8eAACfHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAAohAAAKIQAADiEAAA8hAAATIQAAEyEAAC8hAAAvIQAANCEAADQhAAA5IQAAOSEAADwhAAA9IQAARiEAAEkhAABOIQAATiEAAIQhAACEIQAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcSwAAHEsAABzLAAAdCwAAHYsAAB7LAAAgSwAAIEsAACDLAAAgywAAIUsAACFLAAAhywAAIcsAACJLAAAiSwAAIssAACLLAAAjSwAAI0sAACPLAAAjywAAJEsAACRLAAAkywAAJMsAACVLAAAlSwAAJcsAACXLAAAmSwAAJksAACbLAAAmywAAJ0sAACdLAAAnywAAJ8sAAChLAAAoSwAAKMsAACjLAAApSwAAKUsAACnLAAApywAAKksAACpLAAAqywAAKssAACtLAAArSwAAK8sAACvLAAAsSwAALEsAACzLAAAsywAALUsAAC1LAAAtywAALcsAAC5LAAAuSwAALssAAC7LAAAvSwAAL0sAAC/LAAAvywAAMEsAADBLAAAwywAAMMsAADFLAAAxSwAAMcsAADHLAAAySwAAMksAADLLAAAyywAAM0sAADNLAAAzywAAM8sAADRLAAA0SwAANMsAADTLAAA1SwAANUsAADXLAAA1ywAANksAADZLAAA2ywAANssAADdLAAA3SwAAN8sAADfLAAA4SwAAOEsAADjLAAA5CwAAOwsAADsLAAA7iwAAO4sAADzLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAEGmAABBpgAAQ6YAAEOmAABFpgAARaYAAEemAABHpgAASaYAAEmmAABLpgAAS6YAAE2mAABNpgAAT6YAAE+mAABRpgAAUaYAAFOmAABTpgAAVaYAAFWmAABXpgAAV6YAAFmmAABZpgAAW6YAAFumAABdpgAAXaYAAF+mAABfpgAAYaYAAGGmAABjpgAAY6YAAGWmAABlpgAAZ6YAAGemAABppgAAaaYAAGumAABrpgAAbaYAAG2mAACBpgAAgaYAAIOmAACDpgAAhaYAAIWmAACHpgAAh6YAAImmAACJpgAAi6YAAIumAACNpgAAjaYAAI+mAACPpgAAkaYAAJGmAACTpgAAk6YAAJWmAACVpgAAl6YAAJemAACZpgAAmaYAAJumAACbpgAAI6cAACOnAAAlpwAAJacAACenAAAnpwAAKacAACmnAAArpwAAK6cAAC2nAAAtpwAAL6cAADGnAAAzpwAAM6cAADWnAAA1pwAAN6cAADenAAA5pwAAOacAADunAAA7pwAAPacAAD2nAAA/pwAAP6cAAEGnAABBpwAAQ6cAAEOnAABFpwAARacAAEenAABHpwAASacAAEmnAABLpwAAS6cAAE2nAABNpwAAT6cAAE+nAABRpwAAUacAAFOnAABTpwAAVacAAFWnAABXpwAAV6cAAFmnAABZpwAAW6cAAFunAABdpwAAXacAAF+nAABfpwAAYacAAGGnAABjpwAAY6cAAGWnAABlpwAAZ6cAAGenAABppwAAaacAAGunAABrpwAAbacAAG2nAABvpwAAb6cAAHGnAAB4pwAAeqcAAHqnAAB8pwAAfKcAAH+nAAB/pwAAgacAAIGnAACDpwAAg6cAAIWnAACFpwAAh6cAAIenAACMpwAAjKcAAI6nAACOpwAAkacAAJGnAACTpwAAlacAAJenAACXpwAAmacAAJmnAACbpwAAm6cAAJ2nAACd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BgAA3QYAAN0GAAAOBwAADwcAAEsHAABMBwAAsgcAAL8HAAD7BwAA/AcAAC4IAAAvCAAAPwgAAD8IAABcCAAAXQgAAF8IAABfCAAAawgAAG8IAACPCAAAlwgAAOIIAADiCAAAhAkAAIQJAACNCQAAjgkAAJEJAACSCQAAqQkAAKkJAACxCQAAsQkAALMJAAC1CQAAugkAALsJAADFCQAAxgkAAMkJAADKCQAAzwkAANYJAADYCQAA2wkAAN4JAADeCQAA5AkAAOUJAAD/CQAAAAoAAAQKAAAECgAACwoAAA4KAAARCgAAEgoAACkKAAApCgAAMQoAADEKAAA0CgAANAoAADcKAAA3CgAAOgoAADsKAAA9CgAAPQoAAEMKAABGCgAASQoAAEoKAABOCgAAUAoAAFIKAABYCgAAXQoAAF0KAABfCgAAZQoAAHcKAACACgAAhAoAAIQKAACOCgAAjgoAAJIKAACSCgAAqQoAAKkKAACxCgAAsQoAALQKAAC0CgAAugoAALsKAADGCgAAxgoAAMoKAADKCgAAzgoAAM8KAADRCgAA3woAAOQKAADlCgAA8goAAPgKAAAACwAAAAsAAAQLAAAECwAADQsAAA4LAAARCwAAEgsAACkLAAApCwAAMQsAADELAAA0CwAANAsAADoLAAA7CwAARQsAAEYLAABJCwAASgsAAE4LAABUCwAAWAsAAFsLAABeCwAAXgsAAGQLAABlCwAAeAsAAIELAACECwAAhAsAAIsLAACNCwAAkQsAAJELAACWCwAAmAsAAJsLAACbCwAAnQsAAJ0LAACgCwAAogsAAKULAACnCwAAqwsAAK0LAAC6CwAAvQsAAMMLAADFCwAAyQsAAMkLAADOCwAAzwsAANELAADWCwAA2AsAAOULAAD7CwAA/wsAAA0MAAANDAAAEQwAABEMAAApDAAAKQwAADoMAAA7DAAARQwAAEUMAABJDAAASQwAAE4MAABUDAAAVwwAAFcMAABbDAAAXAwAAF4MAABfDAAAZAwAAGUMAABwDAAAdgwAAI0MAACNDAAAkQwAAJEMAACpDAAAqQwAALQMAAC0DAAAugwAALsMAADFDAAAxQwAAMkMAADJDAAAzgwAANQMAADXDAAA3AwAAN8MAADfDAAA5AwAAOUMAADwDAAA8AwAAPQMAAD/DAAADQ0AAA0NAAAR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FwAA6hcAAO8XAAD6FwAA/xcAABoYAAAfGAAAeRgAAH8YAACrGAAArxgAAPYYAAD/GAAAHxkAAB8ZAAAsGQAALxkAADwZAAA/GQAAQRkAAEMZAABuGQAAbxkAAHUZAAB/GQAArBkAAK8ZAADKGQAAzxkAANsZAADdGQAAHBoAAB0aAABfGgAAXxoAAH0aAAB+GgAAihoAAI8aAACaGgAAnxoAAK4aAACvGgAAzxoAAP8aAABNGwAATxsAAH8bAAB/GwAA9BsAAPsbAAA4HAAAOhwAAEocAABMHAAAiRwAAI8cAAC7HAAAvBwAAMgcAADPHAAA+xwAAP8cAAAWHwAAFx8AAB4fAAAfHwAARh8AAEcfAABOHwAATx8AAFgfAABYHwAAWh8AAFofAABcHwAAXB8AAF4fAABeHwAAfh8AAH8fAAC1HwAAtR8AAMUfAADFHwAA1B8AANUfAADcHwAA3B8AAPAfAADxHwAA9R8AAPUfAAD/HwAA/x8AAGUgAABlIAAAciAAAHMgAACPIAAAjyAAAJ0gAACfIAAAwSAAAM8gAADxIAAA/yAAAIwhAACPIQAAJyQAAD8kAABLJAAAXyQAAHQrAAB1KwAAlisAAJYrAAD0LAAA+CwAACYtAAAmLQAAKC0AACwtAAAuLQAALy0AAGgtAABuLQAAcS0AAH4tAACXLQAAny0AAKctAACnLQAAry0AAK8tAAC3LQAAty0AAL8tAAC/LQAAxy0AAMctAADPLQAAzy0AANctAADXLQAA3y0AAN8tAABeLgAAfy4AAJouAACaLgAA9C4AAP8uAADWLwAA7y8AAPwvAAD/LwAAQDAAAEAwAACXMAAAmDAAAAAxAAAEMQAAMDEAADAxAACPMQAAjzEAAOQxAADvMQAAHzIAAB8yAACNpAAAj6QAAMekAADPpAAALKYAAD+mAAD4pgAA/6YAAMunAADPpwAA0qcAANKnAADUpwAA1KcAANqnAADxpwAALagAAC+oAAA6qAAAP6gAAHioAAB/qAAAxqgAAM2oAADaqAAA36gAAFSpAABeqQAAfakAAH+pAADOqQAAzqkAANqpAADdqQAA/6kAAP+pAAA3qgAAP6oAAE6qAABPqgAAWqoAAFuqAADDqgAA2qoAAPeqAAAAqwAAB6sAAAirAAAPqwAAEKsAABerAAAfqwAAJ6sAACerAAAv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AQAAWgEAAFwBAABcAQAAXgEAAF4BAABgAQAAYAEAAGIBAABiAQAAZAEAAGQBAABmAQAAZgEAAGgBAABoAQAAagEAAGoBAABsAQAAbAEAAG4BAABuAQAAcAEAAHABAAByAQAAcgEAAHQBAAB0AQAAdgEAAHYBAAB4AQAAeQEAAHsBAAB7AQAAfQEAAH0BAACBAQAAggEAAIQBAACEAQAAhgEAAIcBAACJAQAAiwEAAI4BAACRAQAAkwEAAJQBAACWAQAAmAEAAJwBAACdAQAAnwEAAKABAACiAQAAogEAAKQBAACkAQAApgEAAKcBAACpAQAAqQEAAKwBAACsAQAArgEAAK8BAACxAQAAswEAALUBAAC1AQAAtwEAALgBAAC8AQAAvAEAAMQBAADEAQAAxwEAAMcBAADKAQAAygEAAM0BAADNAQAAzwEAAM8BAADRAQAA0QEAANMBAADTAQAA1QEAANUBAADXAQAA1wEAANkBAADZAQAA2wEAANsBAADeAQAA3gEAAOABAADgAQAA4gEAAOIBAADkAQAA5AEAAOYBAADmAQAA6AEAAOgBAADqAQAA6gEAAOwBAADsAQAA7gEAAO4BAADxAQAA8QEAAPQBAAD0AQAA9gEAAPgBAAD6AQAA+gEAAPwBAAD8AQAA/gEAAP4BAAAAAgAAAAIAAAICAAACAgAABAIAAAQCAAAGAgAABgIAAAgCAAAIAgAACgIAAAoCAAAMAgAADAIAAA4CAAAOAgAAEAIAABACAAASAgAAEgIAABQCAAAUAgAAFgIAABYCAAAYAgAAGAIAABoCAAAaAgAAHAIAABwCAAAeAgAAHgIAACACAAAgAgAAIgIAACICAAAkAgAAJAIAACYCAAAmAgAAKAIAACgCAAAqAgAAKgIAACwCAAAsAgAALgIAAC4CAAAwAgAAMAIAADICAAAyAgAAOgIAADsCAAA9AgAAPgIAAEECAABBAgAAQwIAAEYCAABIAgAASAIAAEoCAABKAgAATAIAAEwCAABOAgAATgIAAHADAABwAwAAcgMAAHIDAAB2AwAAdgMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAI8DAACRAwAAoQMAAKMDAACrAwAAzwMAAM8DAADSAwAA1AMAANgDAADYAwAA2gMAANoDAADcAwAA3AMAAN4DAADeAwAA4AMAAOADAADiAwAA4gMAAOQDAADkAwAA5gMAAOYDAADoAwAA6AMAAOoDAADqAwAA7AMAAOwDAADuAwAA7gMAAPQDAAD0AwAA9wMAAPcDAAD5AwAA+gMAAP0DAAAvBAAAYAQAAGAEAABiBAAAYgQAAGQEAABkBAAAZgQAAGYEAABoBAAAaAQAAGoEAABqBAAAbAQAAGwEAABuBAAAbgQAAHAEAABwBAAAcgQAAHIEAAB0BAAAdAQAAHYEAAB2BAAAeAQAAHgEAAB6BAAAegQAAHwEAAB8BAAAfgQAAH4EAACABAAAgAQAAIoEAACKBAAAjAQAAIwEAACOBAAAjgQAAJAEAACQBAAAkgQAAJIEAACUBAAAlAQAAJYEAACWBAAAmAQAAJgEAACaBAAAmgQAAJwEAACcBAAAngQAAJ4EAACgBAAAoAQAAKIEAACiBAAApAQAAKQEAACmBAAApgQAAKgEAACoBAAAqgQAAKoEAACsBAAArAQAAK4EAACuBAAAsAQAALAEAACyBAAAsgQAALQEAAC0BAAAtgQAALYEAAC4BAAAuAQAALoEAAC6BAAAvAQAALwEAAC+BAAAvgQAAMAEAADBBAAAwwQAAMMEAADFBAAAxQQAAMcEAADHBAAAyQQAAMkEAADLBAAAywQAAM0EAADNBAAA0AQAANAEAADSBAAA0gQAANQEAADUBAAA1gQAANYEAADYBAAA2AQAANoEAADaBAAA3AQAANwEAADeBAAA3gQAAOAEAADgBAAA4gQAAOIEAADkBAAA5AQAAOYEAADmBAAA6AQAAOgEAADqBAAA6gQAAOwEAADsBAAA7gQAAO4EAADwBAAA8AQAAPIEAADyBAAA9AQAAPQEAAD2BAAA9gQAAPgEAAD4BAAA+gQAAPoEAAD8BAAA/AQAAP4EAAD+BAAAAAUAAAAFAAACBQAAAgUAAAQFAAAEBQAABgUAAAYFAAAIBQAACAUAAAoFAAAKBQAADAUAAAwFAAAOBQAADgUAABAFAAAQBQAAEgUAABIFAAAUBQAAFAUAABYFAAAWBQAAGAUAABgFAAAaBQAAGgUAABwFAAAcBQAAHgUAAB4FAAAgBQAAIAUAACIFAAAiBQAAJAUAACQFAAAmBQAAJgUAACgFAAAoBQAAKgUAACoFAAAsBQAALAUAAC4FAAAuBQAAMQUAAFYFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAACgEwAA9RMAAJAcAAC6HAAAvRwAAL8cAAAAHgAAAB4AAAIeAAACHgAABB4AAAQeAAAGHgAABh4AAAgeAAAIHgAACh4AAAoeAAAMHgAADB4AAA4eAAAOHgAAEB4AABAeAAASHgAAEh4AABQeAAAUHgAAFh4AABYeAAAYHgAAGB4AABoeAAAaHgAAHB4AABweAAAeHgAAHh4AACAeAAAgHgAAIh4AACIeAAAkHgAAJB4AACYeAAAmHgAAKB4AACgeAAAqHgAAKh4AACweAAAsHgAALh4AAC4eAAAwHgAAMB4AADIeAAAyHgAANB4AADQeAAA2HgAANh4AADgeAAA4HgAAOh4AADoeAAA8HgAAPB4AAD4eAAA+HgAAQB4AAEAeAABCHgAAQh4AAEQeAABEHgAARh4AAEYeAABIHgAASB4AAEoeAABKHgAATB4AAEweAABOHgAATh4AAFAeAABQHgAAUh4AAFIeAABUHgAAVB4AAFYeAABWHgAAWB4AAFgeAABaHgAAWh4AAFweAABcHgAAXh4AAF4eAABgHgAAYB4AAGIeAABiHgAAZB4AAGQeAABmHgAAZh4AAGgeAABoHgAAah4AAGoeAABsHgAAbB4AAG4eAABuHgAAcB4AAHAeAAByHgAAch4AAHQeAAB0HgAAdh4AAHYeAAB4HgAAeB4AAHoeAAB6HgAAfB4AAHweAAB+HgAAfh4AAIAeAACAHgAAgh4AAIIeAACEHgAAhB4AAIYeAACGHgAAiB4AAIgeAACKHgAAih4AAIweAACMHgAAjh4AAI4eAACQHgAAkB4AAJIeAACSHgAAlB4AAJQeAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAuB8AALsfAADIHwAAyx8AANgfAADbHwAA6B8AAOwfAAD4HwAA+x8AAAIhAAACIQAAByEAAAchAAALIQAADSEAABAhAAASIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAAMCEAADMhAAA+IQAAPyEAAEUhAABFIQAAgyEAAIMhAAAALAAALywAAGAsAABgLAAAYiwAAGQsAABnLAAAZywAAGksAABpLAAAaywAAGssAABtLAAAcCwAAHIsAAByLAAAdSwAAHUsAAB+LAAAgCwAAIIsAACCLAAAhCwAAIQsAACGLAAAhiwAAIgsAACILAAAiiwAAIosAACMLAAAjCwAAI4sAACOLAAAkCwAAJAsAACSLAAAkiwAAJQsAACULAAAliwAAJYsAACYLAAAmCwAAJosAACaLAAAnCwAAJwsAACeLAAAniwAAKAsAACgLAAAoiwAAKIsAACkLAAApCwAAKYsAACmLAAAqCwAAKgsAACqLAAAqiwAAKwsAACsLAAAriwAAK4sAACwLAAAsCwAALIsAACyLAAAtCwAALQsAAC2LAAAtiwAALgsAAC4LAAAuiwAALosAAC8LAAAvCwAAL4sAAC+LAAAwCwAAMAsAADCLAAAwiwAAMQsAADELAAAxiwAAMYsAADILAAAyCwAAMosAADKLAAAzCwAAMwsAADOLAAAziwAANAsAADQLAAA0iwAANIsAADULAAA1CwAANYsAADWLAAA2CwAANgsAADaLAAA2iwAANwsAADcLAAA3iwAAN4sAADgLAAA4CwAAOIsAADiLAAA6ywAAOssAADtLAAA7SwAAPIsAADyLAAAQKYAAECmAABCpgAAQqYAAESmAABEpgAARqYAAEamAABIpgAASKYAAEqmAABKpgAATKYAAEymAABOpgAATqYAAFCmAABQpgAAUqYAAFKmAABUpgAAVKYAAFamAABWpgAAWKYAAFimAABapgAAWqYAAFymAABcpgAAXqYAAF6mAABgpgAAYKYAAGKmAABipgAAZKYAAGSmAABmpgAAZqYAAGimAABopgAAaqYAAGqmAABspgAAbKYAAICmAACApgAAgqYAAIKmAACEpgAAhKYAAIamAACGpgAAiKYAAIimAACKpgAAiqYAAIymAACMpgAAjqYAAI6mAACQpgAAkKYAAJKmAACSpgAAlKYAAJSmAACWpgAAlqYAAJimAACYpgAAmqYAAJqmAAAipwAAIqcAACSnAAAkpwAAJqcAACanAAAopwAAKKcAACqnAAAqpwAALKcAACynAAAupwAALqcAADKnAAAypwAANKcAADSnAAA2pwAANqcAADinAAA4pwAAOqcAADqnAAA8pwAAPKcAAD6nAAA+pwAAQKcAAECnAABCpwAAQqcAAESnAABEpwAARqcAAEanAABIpwAASKcAAEqnAABKpwAATKcAAEynAABOpwAATqcAAFCnAABQpwAAUqcAAFKnAABUpwAAVKcAAFanAABWpwAAWKcAAFinAABapwAAWqcAAFynAABcpwAAXqcAAF6nAABgpwAAYKcAAGKnAABipwAAZKcAAGSnAABmpwAAZqcAAGinAABopwAAaqcAAGqnAABspwAAbKcAAG6nAABupwAAeacAAHmnAAB7pwAAe6cAAH2nAAB+pwAAgKcAAICnAACCpwAAgqcAAISnAACEpwAAhqcAAIanAACLpwAAi6cAAI2nAACNpwAAkKcAAJCnAACSpwAAkqcAAJanAACWpwAAmKcAAJinAACapwAAmqcAAJynAACcpwAAnqcAAJ6nAACgpwAAoKcAAKKnAACipwAApKcAAKSnAACmpwAApqcAAKinAACopwAAqqcAAK6nAACwpwAAtKcAALanAAC2pwAAuKcAALinAAC6pwAAuqcAALynAAC8pwAAvqcAAL6nAADApwAAwKcAAMKnAADCpwAAxKcAAMenAADJpwAAyacAANCnAADQpwAA1qcAANanAADYpwAA2KcAAPWnAAD1pwAAIf8AADr/AAAABAEAJwQBALAEAQDTBAEAcAUBAHoFAQB8BQEAigUBAIwFAQCS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AAAAlW8iAAoAAABQyiMAAwAAAKRvIgAFAAAAaMojABIAAAC2byIABQAAAGilIwACAAAAw28iAAcAAAB4pSMAAgAAAHBqIgAMAAAAiKUjAAUAAADkbyIACQAAALClIwABAAAA+m8iAAsAAAC4pSMAAQAAABZwIgAIAAAA+MojAAMAAABAcCIACgAAAMilIwACAAAALXAiAA8AAAAQyyMABAAAAHhwIgAGAAAA8KUjAAIAAACLcCIABQAAAACmIwACAAAAnXAiAAkAAAAQpiMAAgAAALJwIgAKAAAAIKYjAAIAAADccCIABwAAADDLIwAGAAAA6nAiAAcAAAA4piMAAQAAAP1wIgAHAAAAQKYjAAIAAADKcCIACwAAAFCmIwADAAAAHnEiAAcAAABgyyMADgAAADBxIgAHAAAA0MsjAAIAAABGcSIADAAAANimIwACAAAAYXEiAAcAAADopiMAAQAAAHNxIgAJAAAA8KYjAAIAAACJcSIADAAAAODLIwADAAAApHEiAAYAAAD4yyMADAAAALdxIgAHAAAAWMwjAAMAAADCcSIACAAAAHDMIwAEAAAA13EiAAYAAACQzCMAAwAAAC1sIgAIAAAAYKcjAAUAAADrcSIACAAAAIinIwACAAAA93EiAAUAAACozCMABAAAAA5yIgAFAAAAyMwjABkAAAAnciIABgAAADioIwACAAAAG3IiAAYAAABIqCMABAAAADtyIgAGAAAAkM0jABEAAABbciIABgAAABjOIwAHAAAAa3IiAAQAAADYqCMAAgAAAHZyIgAHAAAA6KgjAAcAAABLciIACAAAACCpIwADAAAAjXIiAAcAAABQziMABgAAAKNyIgAEAAAASKkjAAEAAACrciIACAAAAFCpIwACAAAAvnIiAAMAAABgqSMAAQAAAMlyIgAIAAAAaKkjAAgAAADfciIABgAAAKipIwACAAAA6XIiAAsAAAC4qSMAAgAAAA5zIgAGAAAAgM4jAAcAAAAccyIAAgAAALjOIwAHAAAAMXMiABAAAADwqSMAAQAAADAAAAA5AAAAQQAAAEYAAABhAAAAZgAAAEEAAABaAAAAYQAAAHoAAACqAAAAqgAAALUAAAC1AAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAEUDAABFAwAAcAMAAHQDAAB2AwAAdwMAAHoDAAB9AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAoQMAAKMDAAD1AwAA9wMAAIEEAACKBAAALwUAADEFAABWBQAAWQUAAFkFAABgBQAAiAUAALAFAAC9BQAAvwUAAL8FAADBBQAAwgUAAMQFAADFBQAAxwUAAMcFAADQBQAA6gUAAO8FAADyBQAAEAYAABoGAAAgBgAAVwYAAFkGAABfBgAAbgYAANMGAADVBgAA3AYAAOEGAADoBgAA7QYAAO8GAAD6BgAA/AYAAP8GAAD/BgAAEAcAAD8HAABNBwAAsQcAAMoHAADqBwAA9AcAAPUHAAD6BwAA+gcAAAAIAAAXCAAAGggAACwIAABACAAAWAgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAKAIAADJCAAA1AgAAN8IAADjCAAA6QgAAPAIAAA7CQAAPQkAAEwJAABOCQAAUAkAAFUJAABjCQAAcQkAAIMJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAxAkAAMcJAADICQAAywkAAMwJAADOCQAAzgkAANcJAADXCQAA3AkAAN0JAADfCQAA4wkAAPAJAADxCQAA/AkAAPwJAAABCgAAAwoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPgoAAEIKAABHCgAASAoAAEsKAABMCgAAUQoAAFEKAABZCgAAXAoAAF4KAABeCgAAcAoAAHUKAACBCgAAgwoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAADFCgAAxwoAAMkKAADLCgAAzAoAANAKAADQCgAA4AoAAOMKAAD5CgAA/AoAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAEQLAABHCwAASAsAAEsLAABMCwAAVgsAAFcLAABcCwAAXQsAAF8LAABjCwAAcQsAAHELAACCCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAAL4LAADCCwAAxgsAAMgLAADKCwAAzAsAANALAADQCwAA1wsAANcLAAAADAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAABEDAAARgwAAEgMAABKDAAATAwAAFUMAABWDAAAWAwAAFoMAABdDAAAXQwAAGAMAABjDAAAgAwAAIMMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAMQMAADGDAAAyAwAAMoMAADMDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA8QwAAPMMAAAADQAADA0AAA4NAAAQDQAAEg0AADoNAAA9DQAARA0AAEYNAABIDQAASg0AAEwNAABODQAATg0AAFQNAABXDQAAXw0AAGMNAAB6DQAAfw0AAIENAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAM8NAADUDQAA1g0AANYNAADYDQAA3w0AAPINAADzDQAAAQ4AADoOAABADgAARg4AAE0OAABNDgAAgQ4AAIIOAACEDgAAhA4AAIYOAACKDgAAjA4AAKMOAAClDgAApQ4AAKcOAAC5DgAAuw4AAL0OAADADgAAxA4AAMYOAADGDgAAzQ4AAM0OAADcDgAA3w4AAAAPAAAADwAAQA8AAEcPAABJDwAAbA8AAHEPAACDDwAAiA8AAJcPAACZDwAAvA8AAAAQAAA2EAAAOBAAADgQAAA7EAAAPxAAAFAQAACPEAAAmhAAAJ0QAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAADQEAAA+hAAAPwQAABIEgAAShIAAE0SAABQEgAAVhIAAFgSAABYEgAAWhIAAF0SAABgEgAAiBIAAIoSAACNEgAAkBIAALASAACyEgAAtRIAALgSAAC+EgAAwBIAAMASAADCEgAAxRIAAMgSAADWEgAA2BIAABATAAASEwAAFRMAABgTAABaEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAATFwAAHxcAADMXAABAFwAAUxcAAGAXAABsFwAAbhcAAHAXAAByFwAAcxcAAIAXAACzFwAAthcAAMgXAADXFwAA1xcAANwXAADcFwAAIBgAAHgYAACAGAAAqhgAALAYAAD1GAAAABkAAB4ZAAAgGQAAKxkAADAZAAA4GQAAUBkAAG0ZAABwGQAAdBkAAIAZAACrGQAAsBkAAMkZAAAAGgAAGxoAACAaAABeGgAAYRoAAHQaAACnGgAApxoAAL8aAADAGgAAzBoAAM4aAAAAGwAAMxsAADUbAABDGwAARRsAAEwbAACAGwAAqRsAAKwbAACvGwAAuhsAAOUbAADnGwAA8RsAAAAcAAA2HAAATRwAAE8cAABaHAAAfRwAAIAcAACIHAAAkBwAALocAAC9HAAAvxwAAOkcAADsHAAA7hwAAPMcAAD1HAAA9hwAAPocAAD6HAAAAB0AAL8dAADnHQAA9B0AAAAeAAAVHwAAGB8AAB0fAAAgHwAARR8AAEgfAABNHwAAUB8AAFcfAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAfR8AAIAfAAC0HwAAth8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMwfAADQHwAA0x8AANYfAADbHwAA4B8AAOwfAADyHwAA9B8AAPYfAAD8HwAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAAAiEAAAIhAAAHIQAAByEAAAohAAATIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAALyEAADkhAAA8IQAAPyEAAEUhAABJIQAATiEAAE4hAABgIQAAiCEAALYkAADpJAAAACwAAOQsAADrLAAA7iwAAPIsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAIAtAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2LQAAuC0AAL4tAADALQAAxi0AAMgtAADOLQAA0C0AANYtAADYLQAA3i0AAOAtAAD/LQAALy4AAC8uAAAFMAAABzAAACEwAAApMAAAMTAAADUwAAA4MAAAPDAAAEEwAACWMAAAnTAAAJ8wAAChMAAA+jAAAPwwAAD/MAAABTEAAC8xAAAxMQAAjjEAAKAxAAC/MQAA8DEAAP8xAAAANAAAv00AAABOAACMpAAA0KQAAP2kAAAApQAADKYAABCmAAAf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AQAANAEAADQBAAA2AQAANgEAADkBAAA5AQAAOwEAADsBAAA9AQAAPQEAAD8BAAA/AQAAQQEAAEEBAABDAQAAQwEAAEUBAABFAQAARwEAAEcBAABJAQAASgEAAEwBAABMAQAATgEAAE4BAABQAQAAUAEAAFIBAABSAQAAVAEAAFQBAABWAQAAVgEAAFgBAABYAQAAWgEAAFoBAABcAQAAXAEAAF4BAABeAQAAYAEAAGABAABiAQAAYgEAAGQBAABkAQAAZgEAAGYBAABoAQAAaAEAAGoBAABqAQAAbAEAAGwBAABuAQAAbgEAAHABAABwAQAAcgEAAHIBAAB0AQAAdAEAAHYBAAB2AQAAeAEAAHkBAAB7AQAAewEAAH0BAAB9AQAAfwEAAH8BAACBAQAAggEAAIQBAACEAQAAhgEAAIcBAACJAQAAiwEAAI4BAACRAQAAkwEAAJQBAACWAQAAmAEAAJwBAACdAQAAnwEAAKABAACiAQAAogEAAKQBAACkAQAApgEAAKcBAACpAQAAqQEAAKwBAACsAQAArgEAAK8BAACxAQAAswEAALUBAAC1AQAAtwEAALgBAAC8AQAAvAEAAMQBAADFAQAAxwEAAMgBAADKAQAAywEAAM0BAADNAQAAzwEAAM8BAADRAQAA0QEAANMBAADTAQAA1QEAANUBAADXAQAA1wEAANkBAADZAQAA2wEAANsBAADeAQAA3gEAAOABAADgAQAA4gEAAOIBAADkAQAA5AEAAOYBAADmAQAA6AEAAOgBAADqAQAA6gEAAOwBAADsAQAA7gEAAO4BAADxAQAA8gEAAPQBAAD0AQAA9gEAAPgBAAD6AQAA+gEAAPwBAAD8AQAA/gEAAP4BAAAAAgAAAAIAAAICAAACAgAABAIAAAQCAAAGAgAABgIAAAgCAAAIAgAACgIAAAoCAAAMAgAADAIAAA4CAAAOAgAAEAIAABACAAASAgAAEgIAABQCAAAUAgAAFgIAABYCAAAYAgAAGAIAABoCAAAaAgAAHAIAABwCAAAeAgAAHgIAACACAAAgAgAAIgIAACICAAAkAgAAJAIAACYCAAAmAgAAKAIAACgCAAAqAgAAKgIAACwCAAAsAgAALgIAAC4CAAAwAgAAMAIAADICAAAyAgAAOgIAADsCAAA9AgAAPgIAAEECAABBAgAAQwIAAEYCAABIAgAASAIAAEoCAABKAgAATAIAAEwCAABOAgAATgIAAEUDAABFAwAAcAMAAHADAAByAwAAcgMAAHYDAAB2AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAjwMAAJEDAAChAwAAowMAAKsDAADCAwAAwgMAAM8DAADRAwAA1QMAANYDAADYAwAA2AMAANoDAADaAwAA3AMAANwDAADeAwAA3gMAAOADAADgAwAA4gMAAOIDAADkAwAA5AMAAOYDAADmAwAA6AMAAOgDAADqAwAA6gMAAOwDAADsAwAA7gMAAO4DAADwAwAA8QMAAPQDAAD1AwAA9wMAAPcDAAD5AwAA+gMAAP0DAAAvBAAAYAQAAGAEAABiBAAAYgQAAGQEAABkBAAAZgQAAGYEAABoBAAAaAQAAGoEAABqBAAAbAQAAGwEAABuBAAAbgQAAHAEAABwBAAAcgQAAHIEAAB0BAAAdAQAAHYEAAB2BAAAeAQAAHgEAAB6BAAAegQAAHwEAAB8BAAAfgQAAH4EAACABAAAgAQAAIoEAACKBAAAjAQAAIwEAACOBAAAjgQAAJAEAACQBAAAkgQAAJIEAACUBAAAlAQAAJYEAACWBAAAmAQAAJgEAACaBAAAmgQAAJwEAACcBAAAngQAAJ4EAACgBAAAoAQAAKIEAACiBAAApAQAAKQEAACmBAAApgQAAKgEAACoBAAAqgQAAKoEAACsBAAArAQAAK4EAACuBAAAsAQAALAEAACyBAAAsgQAALQEAAC0BAAAtgQAALYEAAC4BAAAuAQAALoEAAC6BAAAvAQAALwEAAC+BAAAvgQAAMAEAADBBAAAwwQAAMMEAADFBAAAxQQAAMcEAADHBAAAyQQAAMkEAADLBAAAywQAAM0EAADNBAAA0AQAANAEAADSBAAA0gQAANQEAADUBAAA1gQAANYEAADYBAAA2AQAANoEAADaBAAA3AQAANwEAADeBAAA3gQAAOAEAADgBAAA4gQAAOIEAADkBAAA5AQAAOYEAADmBAAA6AQAAOgEAADqBAAA6gQAAOwEAADsBAAA7gQAAO4EAADwBAAA8AQAAPIEAADyBAAA9AQAAPQEAAD2BAAA9gQAAPgEAAD4BAAA+gQAAPoEAAD8BAAA/AQAAP4EAAD+BAAAAAUAAAAFAAACBQAAAgUAAAQFAAAEBQAABgUAAAYFAAAIBQAACAUAAAoFAAAKBQAADAUAAAwFAAAOBQAADgUAABAFAAAQBQAAEgUAABIFAAAUBQAAFAUAABYFAAAWBQAAGAUAABgFAAAaBQAAGgUAABwFAAAcBQAAHgUAAB4FAAAgBQAAIAUAACIFAAAiBQAAJAUAACQFAAAmBQAAJgUAACgFAAAoBQAAKgUAACoFAAAsBQAALAUAAC4FAAAuBQAAMQUAAFYFAACHBQAAhwUAAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAAPgTAAD9EwAAgBwAAIgcAACQHAAAuhwAAL0cAAC/HAAAAB4AAAAeAAACHgAAAh4AAAQeAAAEHgAABh4AAAYeAAAIHgAACB4AAAoeAAAKHgAADB4AAAweAAAOHgAADh4AABAeAAAQHgAAEh4AABIeAAAUHgAAFB4AABYeAAAWHgAAGB4AABgeAAAaHgAAGh4AABweAAAcHgAAHh4AAB4eAAAgHgAAIB4AACIeAAAiHgAAJB4AACQeAAAmHgAAJh4AACgeAAAoHgAAKh4AACoeAAAsHgAALB4AAC4eAAAuHgAAMB4AADAeAAAyHgAAMh4AADQeAAA0HgAANh4AADYeAAA4HgAAOB4AADoeAAA6HgAAPB4AADweAAA+HgAAPh4AAEAeAABAHgAAQh4AAEIeAABEHgAARB4AAEYeAABGHgAASB4AAEgeAABKHgAASh4AAEweAABMHgAATh4AAE4eAABQHgAAUB4AAFIeAABSHgAAVB4AAFQeAABWHgAAVh4AAFgeAABYHgAAWh4AAFoeAABcHgAAXB4AAF4eAABeHgAAYB4AAGAeAABiHgAAYh4AAGQeAABkHgAAZh4AAGYeAABoHgAAaB4AAGoeAABqHgAAbB4AAGweAABuHgAAbh4AAHAeAABwHgAAch4AAHIeAAB0HgAAdB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAmh4AAJseAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAgB8AAK8fAACyHwAAtB8AALcfAAC8HwAAwh8AAMQfAADHHwAAzB8AANgfAADbHwAA6B8AAOwfAADyHwAA9B8AAPcfAAD8HwAAJiEAACYhAAAqIQAAKyEAADIhAAAyIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADQpwAA0KcAANanAADWpwAA2KcAANinAAD1pwAA9acAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQCgGAEAvxgBAEBuAQBfbgEAAOkBACHpAQBBAAAAWgAAAGEAAAB6AAAAtQAAALUAAADAAAAA1gAAANgAAAD2AAAA+AAAADcBAAA5AQAAjAEAAI4BAACaAQAAnAEAAKkBAACsAQAAuQEAALwBAAC9AQAAvwEAAL8BAADEAQAAIAIAACICAAAzAgAAOgIAAFQCAABWAgAAVwIAAFkCAABZAgAAWwIAAFwCAABgAgAAYQIAAGMCAABjAgAAZQIAAGYCAABoAgAAbAIAAG8CAABvAgAAcQIAAHICAAB1AgAAdQIAAH0CAAB9AgAAgAIAAIACAACCAgAAgwIAAIcCAACMAgAAkgIAAJICAACdAgAAngIAAEUDAABFAwAAcAMAAHMDAAB2AwAAdwMAAHsDAAB9AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAoQMAAKMDAADRAwAA1QMAAPUDAAD3AwAA+wMAAP0DAACBBAAAigQAAC8FAAAxBQAAVgUAAGEFAACHBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAA0BAAAPoQAAD9EAAA/xAAAKATAAD1EwAA+BMAAP0TAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAAB5HQAAeR0AAH0dAAB9HQAAjh0AAI4dAAAAHgAAmx4AAJ4eAACeHgAAoB4AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAzB8AANAfAADTHwAA1h8AANsfAADgHwAA7B8AAPIfAAD0HwAA9h8AAPwfAAAmIQAAJiEAACohAAArIQAAMiEAADIhAABOIQAATiEAAGAhAAB/IQAAgyEAAIQhAAC2JAAA6SQAAAAsAABwLAAAciwAAHMsAAB1LAAAdiwAAH4sAADjLAAA6ywAAO4sAADyLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAECmAABtpgAAgKYAAJumAAAipwAAL6cAADKnAABvpwAAeacAAIenAACLpwAAjacAAJCnAACUpwAAlqcAAK6nAACwpwAAyqcAANCnAADRpwAA1qcAANmnAAD1pwAA9qcAAFOrAABTqwAAcKsAAL+rAAAA+wAABvsAABP7AAAX+wAAIf8AADr/AABB/wAAWv8AAAAEAQBPBAEAsAQBANMEAQDYBAEA+wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQCADAEAsgwBAMAMAQDyDAEAoBgBAN8YAQBAbgEAf24BAADpAQBD6QEAQQAAAFoAAADAAAAA1gAAANgAAADeAAAAAAEAAAABAAACAQAAAgEAAAQBAAAEAQAABgEAAAYBAAAIAQAACAEAAAoBAAAKAQAADAEAAAwBAAAOAQAADgEAABABAAAQAQAAEgEAABIBAAAUAQAAFAEAABYBAAAWAQAAGAEAABgBAAAaAQAAGgEAABwBAAAcAQAAHgEAAB4BAAAgAQAAIAEAACIBAAAiAQAAJAEAACQBAAAmAQAAJgEAACgBAAAoAQAAKgEAACoBAAAsAQAALAEAAC4BAAAuAQAAMAEAADABAAAyAQAAMgEAADQBAAA0AQAANgEAADYBAAA5AQAAOQEAADsBAAA7AQAAPQEAAD0BAAA/AQAAPwEAAEEBAABBAQAAQwEAAEMBAABFAQAARQEAAEcBAABHAQAASgEAAEoBAABMAQAATAEAAE4BAABOAQAAUAEAAFABAABSAQAAUgEAAFQBAABUAQAAVgEAAFYBAABYAQAAWAEAAFoBAABaAQAAXAEAAFwBAABeAQAAXgEAAGABAABgAQAAYgEAAGIBAABkAQAAZAEAAGYBAABmAQAAaAEAAGgBAABqAQAAagEAAGwBAABsAQAAbgEAAG4BAABwAQAAcAEAAHIBAAByAQAAdAEAAHQBAAB2AQAAdgEAAHgBAAB5AQAAewEAAHsBAAB9AQAAfQEAAIEBAACCAQAAhAEAAIQBAACGAQAAhwEAAIkBAACLAQAAjgEAAJEBAACTAQAAlAEAAJYBAACYAQAAnAEAAJ0BAACfAQAAoAEAAKIBAACiAQAApAEAAKQBAACmAQAApwEAAKkBAACpAQAArAEAAKwBAACuAQAArwEAALEBAACzAQAAtQEAALUBAAC3AQAAuAEAALwBAAC8AQAAxAEAAMUBAADHAQAAyAEAAMoBAADLAQAAzQEAAM0BAADPAQAAzwEAANEBAADRAQAA0wEAANMBAADVAQAA1QEAANcBAADXAQAA2QEAANkBAADbAQAA2wEAAN4BAADeAQAA4AEAAOABAADiAQAA4gEAAOQBAADkAQAA5gEAAOYBAADoAQAA6AEAAOoBAADqAQAA7AEAAOwBAADuAQAA7gEAAPEBAADyAQAA9AEAAPQBAAD2AQAA+AEAAPoBAAD6AQAA/AEAAPwBAAD+AQAA/gEAAAACAAAAAgAAAgIAAAICAAAEAgAABAIAAAYCAAAGAgAACAIAAAgCAAAKAgAACgIAAAwCAAAMAgAADgIAAA4CAAAQAgAAEAIAABICAAASAgAAFAIAABQCAAAWAgAAFgIAABgCAAAYAgAAGgIAABoCAAAcAgAAHAIAAB4CAAAeAgAAIAIAACACAAAiAgAAIgIAACQCAAAkAgAAJgIAACYCAAAoAgAAKAIAACoCAAAqAgAALAIAACwCAAAuAgAALgIAADACAAAwAgAAMgIAADICAAA6AgAAOwIAAD0CAAA+AgAAQQIAAEECAABDAgAARgIAAEgCAABIAgAASgIAAEoCAABMAgAATAIAAE4CAABOAgAAcAMAAHADAAByAwAAcgMAAHYDAAB2AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAjwMAAJEDAAChAwAAowMAAKsDAADPAwAAzwMAANgDAADYAwAA2gMAANoDAADcAwAA3AMAAN4DAADeAwAA4AMAAOADAADiAwAA4gMAAOQDAADkAwAA5gMAAOYDAADoAwAA6AMAAOoDAADqAwAA7AMAAOwDAADuAwAA7gMAAPQDAAD0AwAA9wMAAPcDAAD5AwAA+gMAAP0DAAAvBAAAYAQAAGAEAABiBAAAYgQAAGQEAABkBAAAZgQAAGYEAABoBAAAaAQAAGoEAABqBAAAbAQAAGwEAABuBAAAbgQAAHAEAABwBAAAcgQAAHIEAAB0BAAAdAQAAHYEAAB2BAAAeAQAAHgEAAB6BAAAegQAAHwEAAB8BAAAfgQAAH4EAACABAAAgAQAAIoEAACKBAAAjAQAAIwEAACOBAAAjgQAAJAEAACQBAAAkgQAAJIEAACUBAAAlAQAAJYEAACWBAAAmAQAAJgEAACaBAAAmgQAAJwEAACcBAAAngQAAJ4EAACgBAAAoAQAAKIEAACiBAAApAQAAKQEAACmBAAApgQAAKgEAACoBAAAqgQAAKoEAACsBAAArAQAAK4EAACuBAAAsAQAALAEAACyBAAAsgQAALQEAAC0BAAAtgQAALYEAAC4BAAAuAQAALoEAAC6BAAAvAQAALwEAAC+BAAAvgQAAMAEAADBBAAAwwQAAMMEAADFBAAAxQQAAMcEAADHBAAAyQQAAMkEAADLBAAAywQAAM0EAADNBAAA0AQAANAEAADSBAAA0gQAANQEAADUBAAA1gQAANYEAADYBAAA2AQAANoEAADaBAAA3AQAANwEAADeBAAA3gQAAOAEAADgBAAA4gQAAOIEAADkBAAA5AQAAOYEAADmBAAA6AQAAOgEAADqBAAA6gQAAOwEAADsBAAA7gQAAO4EAADwBAAA8AQAAPIEAADyBAAA9AQAAPQEAAD2BAAA9gQAAPgEAAD4BAAA+gQAAPoEAAD8BAAA/AQAAP4EAAD+BAAAAAUAAAAFAAACBQAAAgUAAAQFAAAEBQAABgUAAAYFAAAIBQAACAUAAAoFAAAKBQAADAUAAAwFAAAOBQAADgUAABAFAAAQBQAAEgUAABIFAAAUBQAAFAUAABYFAAAWBQAAGAUAABgFAAAaBQAAGgUAABwFAAAcBQAAHgUAAB4FAAAgBQAAIAUAACIFAAAiBQAAJAUAACQFAAAmBQAAJgUAACgFAAAoBQAAKgUAACoFAAAsBQAALAUAAC4FAAAuBQAAMQUAAFYFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAACgEwAA9RMAAJAcAAC6HAAAvRwAAL8cAAAAHgAAAB4AAAIeAAACHgAABB4AAAQeAAAGHgAABh4AAAgeAAAIHgAACh4AAAoeAAAMHgAADB4AAA4eAAAOHgAAEB4AABAeAAASHgAAEh4AABQeAAAUHgAAFh4AABYeAAAYHgAAGB4AABoeAAAaHgAAHB4AABweAAAeHgAAHh4AACAeAAAgHgAAIh4AACIeAAAkHgAAJB4AACYeAAAmHgAAKB4AACgeAAAqHgAAKh4AACweAAAsHgAALh4AAC4eAAAwHgAAMB4AADIeAAAyHgAANB4AADQeAAA2HgAANh4AADgeAAA4HgAAOh4AADoeAAA8HgAAPB4AAD4eAAA+HgAAQB4AAEAeAABCHgAAQh4AAEQeAABEHgAARh4AAEYeAABIHgAASB4AAEoeAABKHgAATB4AAEweAABOHgAATh4AAFAeAABQHgAAUh4AAFIeAABUHgAAVB4AAFYeAABWHgAAWB4AAFgeAABaHgAAWh4AAFweAABcHgAAXh4AAF4eAABgHgAAYB4AAGIeAABiHgAAZB4AAGQeAABmHgAAZh4AAGgeAABoHgAAah4AAGoeAABsHgAAbB4AAG4eAABuHgAAcB4AAHAeAAByHgAAch4AAHQeAAB0HgAAdh4AAHYeAAB4HgAAeB4AAHoeAAB6HgAAfB4AAHweAAB+HgAAfh4AAIAeAACAHgAAgh4AAIIeAACEHgAAhB4AAIYeAACGHgAAiB4AAIgeAACKHgAAih4AAIweAACMHgAAjh4AAI4eAACQHgAAkB4AAJIeAACSHgAAlB4AAJQeAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAiB8AAI8fAACYHwAAnx8AAKgfAACvHwAAuB8AALwfAADIHwAAzB8AANgfAADbHwAA6B8AAOwfAAD4HwAA/B8AACYhAAAmIQAAKiEAACshAAAyIQAAMiEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAA0KcAANCnAADWpwAA1qcAANinAADYpwAA9acAAPWnAAAh/wAAOv8AAAAEAQAnBAEAsAQBANMEAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAIAMAQCyDAEAoBgBAL8YAQBAbgEAX24BAADpAQAh6QEAYQAAAHoAAAC1AAAAtQAAAN8AAAD2AAAA+AAAAP8AAAABAQAAAQEAAAMBAAADAQAABQEAAAUBAAAHAQAABwEAAAkBAAAJAQAACwEAAAsBAAANAQAADQEAAA8BAAAPAQAAEQEAABEBAAATAQAAEwEAABUBAAAVAQAAFwEAABcBAAAZAQAAGQEAABsBAAAbAQAAHQEAAB0BAAAfAQAAHwEAACEBAAAhAQAAIwEAACMBAAAlAQAAJQEAACcBAAAnAQAAKQEAACkBAAArAQAAKwEAAC0BAAAtAQAALwEAAC8BAAAxAQAAMQEAADMBAAAzAQAANQEAADUBAAA3AQAANwEAADoBAAA6AQAAPAEAADwBAAA+AQAAPgEAAEABAABAAQAAQgEAAEIBAABEAQAARAEAAEYBAABGAQAASAEAAEkBAABLAQAASwEAAE0BAABNAQAATwEAAE8BAABRAQAAUQEAAFMBAABTAQAAVQEAAFUBAABXAQAAVwEAAFkBAABZAQAAWwEAAFsBAABdAQAAXQEAAF8BAABfAQAAYQEAAGEBAABjAQAAYwEAAGUBAABlAQAAZwEAAGcBAABpAQAAaQEAAGsBAABrAQAAbQEAAG0BAABvAQAAbwEAAHEBAABxAQAAcwEAAHMBAAB1AQAAdQEAAHcBAAB3AQAAegEAAHoBAAB8AQAAfAEAAH4BAACAAQAAgwEAAIMBAACFAQAAhQEAAIgBAACIAQAAjAEAAIwBAACSAQAAkgEAAJUBAACVAQAAmQEAAJoBAACeAQAAngEAAKEBAAChAQAAowEAAKMBAAClAQAApQEAAKgBAACoAQAArQEAAK0BAACwAQAAsAEAALQBAAC0AQAAtgEAALYBAAC5AQAAuQEAAL0BAAC9AQAAvwEAAL8BAADEAQAAxAEAAMYBAADHAQAAyQEAAMoBAADMAQAAzAEAAM4BAADOAQAA0AEAANABAADSAQAA0gEAANQBAADUAQAA1gEAANYBAADYAQAA2AEAANoBAADaAQAA3AEAAN0BAADfAQAA3wEAAOEBAADhAQAA4wEAAOMBAADlAQAA5QEAAOcBAADnAQAA6QEAAOkBAADrAQAA6wEAAO0BAADtAQAA7wEAAPEBAADzAQAA8wEAAPUBAAD1AQAA+QEAAPkBAAD7AQAA+wEAAP0BAAD9AQAA/wEAAP8BAAABAgAAAQIAAAMCAAADAgAABQIAAAUCAAAHAgAABwIAAAkCAAAJAgAACwIAAAsCAAANAgAADQIAAA8CAAAPAgAAEQIAABECAAATAgAAEwIAABUCAAAVAgAAFwIAABcCAAAZAgAAGQIAABsCAAAbAgAAHQIAAB0CAAAfAgAAHwIAACMCAAAjAgAAJQIAACUCAAAnAgAAJwIAACkCAAApAgAAKwIAACsCAAAtAgAALQIAAC8CAAAvAgAAMQIAADECAAAzAgAAMwIAADwCAAA8AgAAPwIAAEACAABCAgAAQgIAAEcCAABHAgAASQIAAEkCAABLAgAASwIAAE0CAABNAgAATwIAAFQCAABWAgAAVwIAAFkCAABZAgAAWwIAAFwCAABgAgAAYQIAAGMCAABjAgAAZQIAAGYCAABoAgAAbAIAAG8CAABvAgAAcQIAAHICAAB1AgAAdQIAAH0CAAB9AgAAgAIAAIACAACCAgAAgwIAAIcCAACMAgAAkgIAAJICAACdAgAAngIAAEUDAABFAwAAcQMAAHEDAABzAwAAcwMAAHcDAAB3AwAAewMAAH0DAACQAwAAkAMAAKwDAADOAwAA0AMAANEDAADVAwAA1wMAANkDAADZAwAA2wMAANsDAADdAwAA3QMAAN8DAADfAwAA4QMAAOEDAADjAwAA4wMAAOUDAADlAwAA5wMAAOcDAADpAwAA6QMAAOsDAADrAwAA7QMAAO0DAADvAwAA8wMAAPUDAAD1AwAA+AMAAPgDAAD7AwAA+wMAADAEAABfBAAAYQQAAGEEAABjBAAAYwQAAGUEAABlBAAAZwQAAGcEAABpBAAAaQQAAGsEAABrBAAAbQQAAG0EAABvBAAAbwQAAHEEAABxBAAAcwQAAHMEAAB1BAAAdQQAAHcEAAB3BAAAeQQAAHkEAAB7BAAAewQAAH0EAAB9BAAAfwQAAH8EAACBBAAAgQQAAIsEAACLBAAAjQQAAI0EAACPBAAAjwQAAJEEAACRBAAAkwQAAJMEAACVBAAAlQQAAJcEAACXBAAAmQQAAJkEAACbBAAAmwQAAJ0EAACdBAAAnwQAAJ8EAAChBAAAoQQAAKMEAACjBAAApQQAAKUEAACnBAAApwQAAKkEAACpBAAAqwQAAKsEAACtBAAArQQAAK8EAACvBAAAsQQAALEEAACzBAAAswQAALUEAAC1BAAAtwQAALcEAAC5BAAAuQQAALsEAAC7BAAAvQQAAL0EAAC/BAAAvwQAAMIEAADCBAAAxAQAAMQEAADGBAAAxgQAAMgEAADIBAAAygQAAMoEAADMBAAAzAQAAM4EAADPBAAA0QQAANEEAADTBAAA0wQAANUEAADVBAAA1wQAANcEAADZBAAA2QQAANsEAADbBAAA3QQAAN0EAADfBAAA3wQAAOEEAADhBAAA4wQAAOMEAADlBAAA5QQAAOcEAADnBAAA6QQAAOkEAADrBAAA6wQAAO0EAADtBAAA7wQAAO8EAADxBAAA8QQAAPMEAADzBAAA9QQAAPUEAAD3BAAA9wQAAPkEAAD5BAAA+wQAAPsEAAD9BAAA/QQAAP8EAAD/BAAAAQUAAAEFAAADBQAAAwUAAAUFAAAFBQAABwUAAAcFAAAJBQAACQUAAAsFAAALBQAADQUAAA0FAAAPBQAADwUAABEFAAARBQAAEwUAABMFAAAVBQAAFQUAABcFAAAXBQAAGQUAABkFAAAbBQAAGwUAAB0FAAAdBQAAHwUAAB8FAAAhBQAAIQUAACMFAAAjBQAAJQUAACUFAAAnBQAAJwUAACkFAAApBQAAKwUAACsFAAAtBQAALQUAAC8FAAAvBQAAYQUAAIcFAAD4EwAA/RMAAIAcAACIHAAAeR0AAHkdAAB9HQAAfR0AAI4dAACOHQAAAR4AAAEeAAADHgAAAx4AAAUeAAAFHgAABx4AAAceAAAJHgAACR4AAAseAAALHgAADR4AAA0eAAAPHgAADx4AABEeAAARHgAAEx4AABMeAAAVHgAAFR4AABceAAAXHgAAGR4AABkeAAAbHgAAGx4AAB0eAAAdHgAAHx4AAB8eAAAhHgAAIR4AACMeAAAjHgAAJR4AACUeAAAnHgAAJx4AACkeAAApHgAAKx4AACseAAAtHgAALR4AAC8eAAAvHgAAMR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACbHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcywAAHMsAAB2LAAAdiwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOMsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAvpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAG+nAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAkacAAJGnAACTpwAAlKcAAJenAACXpwAAmacAAJmnAACbpwAAm6cAAJ2nAACdpwAAn6cAAJ+nAAChpwAAoacAAKOnAACjpwAApacAAKWnAACnpwAAp6cAAKmnAACppwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADRpwAA0acAANenAADXpwAA2acAANmnAAD2pwAA9qcAAFOrAABTqwAAcKsAAL+rAAAA+wAABvsAABP7AAAX+wAAQf8AAFr/AAAoBAEATwQBANgEAQD7BAEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQDADAEA8gwBAMAYAQDfGAEAYG4BAH9uAQAi6QEAQ+kBAGEAAAB6AAAAtQAAALUAAADfAAAA9gAAAPgAAAD/AAAAAQEAAAEBAAADAQAAAwEAAAUBAAAFAQAABwEAAAcBAAAJAQAACQEAAAsBAAALAQAADQEAAA0BAAAPAQAADwEAABEBAAARAQAAEwEAABMBAAAVAQAAFQEAABcBAAAXAQAAGQEAABkBAAAbAQAAGwEAAB0BAAAdAQAAHwEAAB8BAAAhAQAAIQEAACMBAAAjAQAAJQEAACUBAAAnAQAAJwEAACkBAAApAQAAKwEAACsBAAAtAQAALQEAAC8BAAAvAQAAMQEAADEBAAAzAQAAMwEAADUBAAA1AQAANwEAADcBAAA6AQAAOgEAADwBAAA8AQAAPgEAAD4BAABAAQAAQAEAAEIBAABCAQAARAEAAEQBAABGAQAARgEAAEgBAABJAQAASwEAAEsBAABNAQAATQEAAE8BAABPAQAAUQEAAFEBAABTAQAAUwEAAFUBAABVAQAAVwEAAFcBAABZAQAAWQEAAFsBAABbAQAAXQEAAF0BAABfAQAAXwEAAGEBAABhAQAAYwEAAGMBAABlAQAAZQEAAGcBAABnAQAAaQEAAGkBAABrAQAAawEAAG0BAABtAQAAbwEAAG8BAABxAQAAcQEAAHMBAABzAQAAdQEAAHUBAAB3AQAAdwEAAHoBAAB6AQAAfAEAAHwBAAB+AQAAgAEAAIMBAACDAQAAhQEAAIUBAACIAQAAiAEAAIwBAACMAQAAkgEAAJIBAACVAQAAlQEAAJkBAACaAQAAngEAAJ4BAAChAQAAoQEAAKMBAACjAQAApQEAAKUBAACoAQAAqAEAAK0BAACtAQAAsAEAALABAAC0AQAAtAEAALYBAAC2AQAAuQEAALkBAAC9AQAAvQEAAL8BAAC/AQAAxQEAAMYBAADIAQAAyQEAAMsBAADMAQAAzgEAAM4BAADQAQAA0AEAANIBAADSAQAA1AEAANQBAADWAQAA1gEAANgBAADYAQAA2gEAANoBAADcAQAA3QEAAN8BAADfAQAA4QEAAOEBAADjAQAA4wEAAOUBAADlAQAA5wEAAOcBAADpAQAA6QEAAOsBAADrAQAA7QEAAO0BAADvAQAA8AEAAPIBAADzAQAA9QEAAPUBAAD5AQAA+QEAAPsBAAD7AQAA/QEAAP0BAAD/AQAA/wEAAAECAAABAgAAAwIAAAMCAAAFAgAABQIAAAcCAAAHAgAACQIAAAkCAAALAgAACwIAAA0CAAANAgAADwIAAA8CAAARAgAAEQIAABMCAAATAgAAFQIAABUCAAAXAgAAFwIAABkCAAAZAgAAGwIAABsCAAAdAgAAHQIAAB8CAAAfAgAAIwIAACMCAAAlAgAAJQIAACcCAAAnAgAAKQIAACkCAAArAgAAKwIAAC0CAAAtAgAALwIAAC8CAAAxAgAAMQIAADMCAAAzAgAAPAIAADwCAAA/AgAAQAIAAEICAABCAgAARwIAAEcCAABJAgAASQIAAEsCAABLAgAATQIAAE0CAABPAgAAVAIAAFYCAABXAgAAWQIAAFkCAABbAgAAXAIAAGACAABhAgAAYwIAAGMCAABlAgAAZgIAAGgCAABsAgAAbwIAAG8CAABxAgAAcgIAAHUCAAB1AgAAfQIAAH0CAACAAgAAgAIAAIICAACDAgAAhwIAAIwCAACSAgAAkgIAAJ0CAACeAgAARQMAAEUDAABxAwAAcQMAAHMDAABzAwAAdwMAAHcDAAB7AwAAfQMAAJADAACQAwAArAMAAM4DAADQAwAA0QMAANUDAADXAwAA2QMAANkDAADbAwAA2wMAAN0DAADdAwAA3wMAAN8DAADhAwAA4QMAAOMDAADjAwAA5QMAAOUDAADnAwAA5wMAAOkDAADpAwAA6wMAAOsDAADtAwAA7QMAAO8DAADzAwAA9QMAAPUDAAD4AwAA+AMAAPsDAAD7AwAAMAQAAF8EAABhBAAAYQQAAGMEAABjBAAAZQQAAGUEAABnBAAAZwQAAGkEAABpBAAAawQAAGsEAABtBAAAbQQAAG8EAABvBAAAcQQAAHEEAABzBAAAcwQAAHUEAAB1BAAAdwQAAHcEAAB5BAAAeQQAAHsEAAB7BAAAfQQAAH0EAAB/BAAAfwQAAIEEAACBBAAAiwQAAIsEAACNBAAAjQQAAI8EAACPBAAAkQQAAJEEAACTBAAAkwQAAJUEAACVBAAAlwQAAJcEAACZBAAAmQQAAJsEAACbBAAAnQQAAJ0EAACfBAAAnwQAAKEEAAChBAAAowQAAKMEAAClBAAApQQAAKcEAACnBAAAqQQAAKkEAACrBAAAqwQAAK0EAACtBAAArwQAAK8EAACxBAAAsQQAALMEAACzBAAAtQQAALUEAAC3BAAAtwQAALkEAAC5BAAAuwQAALsEAAC9BAAAvQQAAL8EAAC/BAAAwgQAAMIEAADEBAAAxAQAAMYEAADGBAAAyAQAAMgEAADKBAAAygQAAMwEAADMBAAAzgQAAM8EAADRBAAA0QQAANMEAADTBAAA1QQAANUEAADXBAAA1wQAANkEAADZBAAA2wQAANsEAADdBAAA3QQAAN8EAADfBAAA4QQAAOEEAADjBAAA4wQAAOUEAADlBAAA5wQAAOcEAADpBAAA6QQAAOsEAADrBAAA7QQAAO0EAADvBAAA7wQAAPEEAADxBAAA8wQAAPMEAAD1BAAA9QQAAPcEAAD3BAAA+QQAAPkEAAD7BAAA+wQAAP0EAAD9BAAA/wQAAP8EAAABBQAAAQUAAAMFAAADBQAABQUAAAUFAAAHBQAABwUAAAkFAAAJBQAACwUAAAsFAAANBQAADQUAAA8FAAAPBQAAEQUAABEFAAATBQAAEwUAABUFAAAVBQAAFwUAABcFAAAZBQAAGQUAABsFAAAbBQAAHQUAAB0FAAAfBQAAHwUAACEFAAAhBQAAIwUAACMFAAAlBQAAJQUAACcFAAAnBQAAKQUAACkFAAArBQAAKwUAAC0FAAAtBQAALwUAAC8FAABhBQAAhwUAANAQAAD6EAAA/RAAAP8QAAD4EwAA/RMAAIAcAACIHAAAeR0AAHkdAAB9HQAAfR0AAI4dAACOHQAAAR4AAAEeAAADHgAAAx4AAAUeAAAFHgAABx4AAAceAAAJHgAACR4AAAseAAALHgAADR4AAA0eAAAPHgAADx4AABEeAAARHgAAEx4AABMeAAAVHgAAFR4AABceAAAXHgAAGR4AABkeAAAbHgAAGx4AAB0eAAAdHgAAHx4AAB8eAAAhHgAAIR4AACMeAAAjHgAAJR4AACUeAAAnHgAAJx4AACkeAAApHgAAKx4AACseAAAtHgAALR4AAC8eAAAvHgAAMR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACbHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAtB8AALYfAAC3HwAAvB8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADMHwAAzB8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAAD8HwAA/B8AAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcywAAHMsAAB2LAAAdiwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOMsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAvpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAG+nAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAkacAAJGnAACTpwAAlKcAAJenAACXpwAAmacAAJmnAACbpwAAm6cAAJ2nAACdpwAAn6cAAJ+nAAChpwAAoacAAKOnAACjpwAApacAAKWnAACnpwAAp6cAAKmnAACppwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADRpwAA0acAANenAADXpwAA2acAANmnAAD2pwAA9qcAAFOrAABTqwAAcKsAAL+rAAAA+wAABvsAABP7AAAX+wAAQf8AAFr/AAAoBAEATwQBANgEAQD7BAEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQDADAEA8gwBAMAYAQDfGAEAYG4BAH9uAQAi6QEAQ+kBAC0AAAAtAAAAigUAAIoFAAC+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rwEA+68BAP2vAQD+rwEAAM8BAC3PAQAwzwEARs8BAGfRAQBp0QEAbdEBAHLRAQB70QEAgtEBAIXRAQCL0QEAqtEBAK3RAQAw4AEAbeABADDhAQA24QEAruIBAK7iAQDs4gEA7+IBANDoAQDW6AEAROkBAEbpAQBI6QEASukBACMAAAAjAAAAKgAAACoAAAAwAAAAOQAAAKkAAACpAAAArgAAAK4AAAA8IAAAPCAAAEkgAABJIAAAIiEAACIhAAA5IQAAOSEAAJQhAACZIQAAqSEAAKohAAAaIwAAGyMAACgjAAAoIwAAzyMAAM8jAADpIwAA8yMAAPgjAAD6IwAAwiQAAMIkAACqJQAAqyUAALYlAAC2JQAAwCUAAMAlAAD7JQAA/iUAAAAmAAAEJgAADiYAAA4mAAARJgAAESYAABQmAAAVJgAAGCYAABgmAAAdJgAAHSYAACAmAAAgJgAAIiYAACMmAAAmJgAAJiYAAComAAAqJgAALiYAAC8mAAA4JgAAOiYAAEAmAABAJgAAQiYAAEImAABIJgAAUyYAAF8mAABgJgAAYyYAAGMmAABlJgAAZiYAAGgmAABoJgAAeyYAAHsmAAB+JgAAfyYAAJImAACXJgAAmSYAAJkmAACbJgAAnCYAAKAmAAChJgAApyYAAKcmAACqJgAAqyYAALAmAACxJgAAvSYAAL4mAADEJgAAxSYAAMgmAADIJgAAziYAAM8mAADRJgAA0SYAANMmAADUJgAA6SYAAOomAADwJgAA9SYAAPcmAAD6JgAA/SYAAP0mAAACJwAAAicAAAUnAAAFJwAACCcAAA0nAAAPJwAADycAABInAAASJwAAFCcAABQnAAAWJwAAFicAAB0nAAAdJwAAIScAACEnAAAoJwAAKCcAADMnAAA0JwAARCcAAEQnAABHJwAARycAAEwnAABMJwAATicAAE4nAABTJwAAVScAAFcnAABXJwAAYycAAGQnAACVJwAAlycAAKEnAAChJwAAsCcAALAnAAC/JwAAvycAADQpAAA1KQAABSsAAAcrAAAbKwAAHCsAAFArAABQKwAAVSsAAFUrAAAwMAAAMDAAAD0wAAA9MAAAlzIAAJcyAACZMgAAmTIAAATwAQAE8AEAz/ABAM/wAQBw8QEAcfEBAH7xAQB/8QEAjvEBAI7xAQCR8QEAmvEBAObxAQD/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CAAAXggAAGAIAABqCAAAcAgAAI4IAACgCAAAyQgAAAMJAAA5CQAAOwkAADsJAAA9CQAAQAkAAEkJAABMCQAATgkAAFAJAABYCQAAYQkAAGQJAACACQAAggkAAIMJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAL8JAADACQAAxwkAAMgJAADLCQAAzAkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAOYJAAD9CQAAAwoAAAMKAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAD4KAABACgAAWQoAAFwKAABeCgAAXgoAAGYKAABvCgAAcgoAAHQKAAB2CgAAdgoAAIMKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAMAKAADJCgAAyQoAAMsKAADMCgAA0AoAANAKAADgCgAA4QoAAOYKAADxCgAA+QoAAPkKAAACCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAAA9CwAAQAsAAEALAABHCwAASAsAAEsLAABMCwAAXAsAAF0LAABfCwAAYQsAAGYLAAB3CwAAgwsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC/CwAAvwsAAMELAADCCwAAxgsAAMgLAADKCwAAzAsAANALAADQCwAA5gsAAPoLAAABDAAAAwwAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPQwAAD0MAABBDAAARAwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAGYMAABvDAAAdwwAAIAMAACCDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAL4MAADADAAAwQwAAMMMAADEDAAAxwwAAMgMAADKDAAAywwAAN0MAADeDAAA4AwAAOEMAADmDAAA7wwAAPEMAADzDAAAAg0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAAA/DQAAQA0AAEYNAABIDQAASg0AAEwNAABODQAATw0AAFQNAABWDQAAWA0AAGENAABmDQAAfw0AAIINAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AANANAADRDQAA2A0AAN4NAADmDQAA7w0AAPINAAD0DQAAAQ4AADAOAAAyDgAAMw4AAD8OAABGDgAATw4AAFsOAACBDgAAgg4AAIQOAACEDgAAhg4AAIoOAACMDgAAow4AAKUOAAClDgAApw4AALAOAACyDgAAsw4AAL0OAAC9DgAAwA4AAMQOAADGDgAAxg4AANAOAADZDgAA3A4AAN8OAAAADwAAFw8AABoPAAA0DwAANg8AADYPAAA4DwAAOA8AADoPAABHDwAASQ8AAGwPAAB/DwAAfw8AAIUPAACFDwAAiA8AAIwPAAC+DwAAxQ8AAMcPAADMDwAAzg8AANoPAAAAEAAALBAAADEQAAAxEAAAOBAAADgQAAA7EAAAPBAAAD8QAABXEAAAWhAAAF0QAABhEAAAcBAAAHUQAACBEAAAgxAAAIQQAACHEAAAjBAAAI4QAACcEAAAnhAAAMUQAADHEAAAxxAAAM0QAADNEAAA0BAAAEgSAABKEgAATRIAAFASAABWEgAAWBIAAFgSAABaEgAAXRIAAGASAACIEgAAihIAAI0SAACQEgAAsBIAALISAAC1EgAAuBIAAL4SAADAEgAAwBIAAMISAADFEgAAyBIAANYSAADYEgAAEBMAABITAAAVEwAAGBMAAFoTAABgEwAAfBMAAIATAACZEwAAoBMAAPUTAAD4EwAA/RMAAAAUAACcFgAAoBYAAPgWAAAAFwAAERcAABUXAAAVFwAAHxcAADEXAAA0FwAANhcAAEAXAABRFwAAYBcAAGwXAABuFwAAcBcAAIAXAACzFwAAthcAALYXAAC+FwAAxRcAAMcXAADIFwAA1BcAANwXAADgFwAA6RcAAPAXAAD5FwAAABgAAAoYAAAQGAAAGRgAACAYAAB4GAAAgBgAAIQYAACHGAAAqBgAAKoYAACqGAAAsBgAAPUYAAAAGQAAHhkAACMZAAAmGQAAKRkAACsZAAAwGQAAMRkAADMZAAA4GQAAQBkAAEAZAABEGQAAbRkAAHAZAAB0GQAAgBkAAKsZAACwGQAAyRkAANAZAADaGQAA3hkAABYaAAAZGgAAGhoAAB4aAABVGgAAVxoAAFcaAABhGgAAYRoAAGMaAABkGgAAbRoAAHIaAACAGgAAiRoAAJAaAACZGgAAoBoAAK0aAAAEGwAAMxsAADsbAAA7GwAAPRsAAEEbAABDGwAATBsAAFAbAABqGwAAdBsAAH4bAACCGwAAoRsAAKYbAACnGwAAqhsAAKobAACuGwAA5RsAAOcbAADnGwAA6hsAAOwbAADuGwAA7hsAAPIbAADzGwAA/BsAACscAAA0HAAANRwAADscAABJHAAATRwAAIgcAACQHAAAuhwAAL0cAADHHAAA0xwAANMcAADhHAAA4RwAAOkcAADsHAAA7hwAAPMcAAD1HAAA9xwAAPocAAD6HAAAAB0AAL8dAAAAHgAAFR8AABgfAAAdHwAAIB8AAEUfAABIHwAATR8AAFAfAABXHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAH0fAACAHwAAtB8AALYfAADEHwAAxh8AANMfAADWHwAA2x8AAN0fAADvHwAA8h8AAPQfAAD2HwAA/h8AAAAgAAAKIAAAECAAACcgAAAvIAAAXyAAAHAgAABxIAAAdCAAAI4gAACQIAAAnCAAAKAgAADAIAAAACEAAIshAACQIQAAJiQAAEAkAABKJAAAYCQAAHMrAAB2KwAAlSsAAJcrAADuLAAA8iwAAPMsAAD5LAAAJS0AACctAAAnLQAALS0AAC0tAAAwLQAAZy0AAG8tAABwLQAAgC0AAJYtAACgLQAApi0AAKgtAACuLQAAsC0AALYtAAC4LQAAvi0AAMAtAADGLQAAyC0AAM4tAADQLQAA1i0AANgtAADeLQAAAC4AAF0uAACALgAAmS4AAJsuAADzLgAAAC8AANUvAADwLwAA+y8AAAAwAAApMAAAMDAAAD8wAABBMAAAljAAAJswAAD/MAAABTEAAC8xAAAxMQAAjjEAAJAxAADjMQAA8DEAAB4yAAAgMgAAjKQAAJCkAADGpAAA0KQAACumAABApgAAbqYAAHOmAABzpgAAfqYAAJ2mAACgpgAA76YAAPKmAAD3pgAAAKcAAMqnAADQpwAA0acAANOnAADTpwAA1acAANmnAADypwAAAagAAAOoAAAFqAAAB6gAAAqoAAAMqAAAJKgAACeoAAAr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FAEAxBQBAMcUAQDQFAEA2RQBAIAVAQCuFQEAsBUBALEVAQC4FQEAuxUBAL4VAQC+FQEAwRUBANsVAQAAFgEAMhYBADsWAQA8FgEAPhYBAD4WAQBBFgEARBYBAFAWAQBZFgEAYBYBAGwWAQCAFgEAqhYBAKwWAQCsFgEArhYBAK8WAQC2FgEAthYBALgWAQC5FgEAwBYBAMkWAQAAFwEAGhcBACAXAQAhFwEAJhcBACYXAQAwFwEARhcBAAAYAQAuGAEAOBgBADgYAQA7GAEAOxgBAKAYAQDyGAEA/xgBAAYZAQAJGQEACRkBAAwZAQATGQEAFRkBABYZAQAYGQEALxkBADEZAQA1GQEANxkBADgZAQA9GQEAPRkBAD8ZAQBCGQEARBkBAEYZAQBQGQEAWRkBAKAZAQCnGQEAqhkBANMZAQDcGQEA3xkBAOEZAQDkGQEAABoBAAAaAQALGgEAMhoBADkaAQA6GgEAPxoBAEYaAQBQGgEAUBoBAFcaAQBYGgEAXBoBAIkaAQCXGgEAlxoBAJoaAQCiGgEAsBoBAPgaAQAAGwEACRsBAAAcAQAIHAEAChwBAC8cAQA+HAEAPhwBAEAcAQBFHAEAUBwBAGwcAQBwHAEAjxwBAKkcAQCpHAEAsRwBALEcAQC0HAEAtBwBAAAdAQAGHQEACB0BAAkdAQALHQEAMB0BAEYdAQBGHQEAUB0BAFkdAQBgHQEAZR0BAGcdAQBoHQEAah0BAI4dAQCTHQEAlB0BAJYdAQCWHQEAmB0BAJgdAQCgHQEAqR0BAOAeAQDyHgEA9R4BAPgeAQACHwEAEB8BABIfAQA1HwEAPh8BAD8fAQBBHwEAQR8BAEMfAQBZHwEAsB8BALAfAQDAHwEA8R8BAP8fAQCZIwEAACQBAG4kAQBwJAEAdCQBAIAkAQBDJQEAkC8BAPIvAQAAMAEALzQBAEE0AQBGNAEAAEQBAEZGAQAAaAEAOGoBAEBqAQBeagEAYGoBAGlqAQBuagEAvmoBAMBqAQDJagEA0GoBAO1qAQD1agEA9WoBAABrAQAvawEAN2sBAEVrAQBQawEAWWsBAFtrAQBhawEAY2sBAHdrAQB9awEAj2sBAEBuAQCabgEAAG8BAEpvAQBQbwEAh28BAJNvAQCfbwEA4G8BAONvAQDwbwEA8W8BAABwAQD3hwEAAIgBANWMAQAA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CgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAGYKAAB1CgAAgQoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAxQoAAMcKAADJCgAAywoAAM0KAADQCgAA0AoAAOAKAADjCgAA5goAAO8KAAD5CgAA/woAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPAsAAEQLAABHCwAASAsAAEsLAABNCwAAVQsAAFcLAABcCwAAXQsAAF8LAABjCwAAZgsAAG8LAABxCwAAcQsAAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAAvgsAAMILAADGCwAAyAsAAMoLAADNCwAA0AsAANALAADXCwAA1wsAAOYLAADvCwAAAAwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA8DAAARAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAFgMAABaDAAAXQwAAF0MAABgDAAAYwwAAGYMAABvDAAAgAwAAIMMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwAAMQMAADGDAAAyAwAAMoMAADNDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA5gwAAO8MAADxDAAA8wwAAAANAAAMDQAADg0AABANAAASDQAARA0AAEYNAABIDQAASg0AAE4NAABUDQAAVw0AAF8NAABjDQAAZg0AAG8NAAB6DQAAfw0AAIENAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAMoNAADKDQAAzw0AANQNAADWDQAA1g0AANgNAADfDQAA5g0AAO8NAADyDQAA8w0AAAEOAAA6DgAAQA4AAE4OAABQDgAAWQ4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAvQ4AAMAOAADE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GQAAbRkAAHAZAAB0GQAAgBkAAKsZAACwGQAAyRkAAAAaAAAWGgAAIBoAAFQaAACnGgAApxoAAAUbAAAzGwAARRsAAEwbAACDGwAAoBsAAK4bAACvGwAAuhsAAOUbAAAAHAAAIxwAAE0cAABPHAAAWhwAAH0cAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAADpHAAA7BwAAO4cAADzHAAA9RwAAPYcAAD6HAAA+hwAAAAdAAC/HQAAAB4AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAzB8AANAfAADTHwAA1h8AANsfAADgHwAA7B8AAPIfAAD0HwAA9h8AAPwfAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAAACIQAAAiEAAAchAAAHIQAACiEAABMhAAAVIQAAFSEAABghAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAADkhAAA8IQAAPyEAAEUhAABJIQAATiEAAE4hAABgIQAAiCEAAAAsAADkLAAA6ywAAO4sAADyLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AADAtAABnLQAAby0AAG8tAACALQAAli0AAKAtAACmLQAAqC0AAK4tAACwLQAAti0AALgtAAC+LQAAwC0AAMYtAADILQAAzi0AANAtAADWLQAA2C0AAN4tAAAFMAAABzAAACEwAAApMAAAMTAAADUwAAA4MAAAPDAAAEEwAACWMAAAmzAAAJ8wAAChMAAA+jAAAPwwAAD/MAAABTEAAC8xAAAxMQAAjjEAAKAxAAC/MQAA8DEAAP8xAAAANAAAv00AAABOAACMpAAA0KQAAP2kAAAApQAADKYAABCmAAAfpgAAKqYAACumAABApgAAbqYAAH+mAACdpgAAoKYAAO+mAAAXpwAAH6cAACKnAACIpwAAi6cAAMqnAADQpwAA0acAANOnAADTpwAA1acAANmnAADypwAAAagAAAOoAAAFqAAAB6gAAAqoAAAMqAAAIqgAAECoAABzqAAAgqgAALOoAADyqAAA96gAAPuoAAD7qAAA/agAAP6oAAAKqQAAJakAADCpAABG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AQAAuQEAALoBAAC9AQAAvwEAAMYBAADGAQAAyQEAAMkBAADMAQAAzAEAAM4BAADOAQAA0AEAANABAADSAQAA0gEAANQBAADUAQAA1gEAANYBAADYAQAA2AEAANoBAADaAQAA3AEAAN0BAADfAQAA3wEAAOEBAADhAQAA4wEAAOMBAADlAQAA5QEAAOcBAADnAQAA6QEAAOkBAADrAQAA6wEAAO0BAADtAQAA7wEAAPABAADzAQAA8wEAAPUBAAD1AQAA+QEAAPkBAAD7AQAA+wEAAP0BAAD9AQAA/wEAAP8BAAABAgAAAQIAAAMCAAADAgAABQIAAAUCAAAHAgAABwIAAAkCAAAJAgAACwIAAAsCAAANAgAADQIAAA8CAAAPAgAAEQIAABECAAATAgAAEwIAABUCAAAVAgAAFwIAABcCAAAZAgAAGQIAABsCAAAbAgAAHQIAAB0CAAAfAgAAHwIAACECAAAhAgAAIwIAACMCAAAlAgAAJQIAACcCAAAnAgAAKQIAACkCAAArAgAAKwIAAC0CAAAtAgAALwIAAC8CAAAxAgAAMQIAADMCAAA5AgAAPAIAADwCAAA/AgAAQAIAAEICAABCAgAARwIAAEcCAABJAgAASQIAAEsCAABLAgAATQIAAE0CAABPAgAAkwIAAJUCAAC4AgAAwAIAAMECAADgAgAA5AIAAEUDAABFAwAAcQMAAHEDAABzAwAAcwMAAHcDAAB3AwAAegMAAH0DAACQAwAAkAMAAKwDAADOAwAA0AMAANEDAADVAwAA1wMAANkDAADZAwAA2wMAANsDAADdAwAA3QMAAN8DAADfAwAA4QMAAOEDAADjAwAA4wMAAOUDAADlAwAA5wMAAOcDAADpAwAA6QMAAOsDAADrAwAA7QMAAO0DAADvAwAA8wMAAPUDAAD1AwAA+AMAAPgDAAD7AwAA/AMAADAEAABfBAAAYQQAAGEEAABjBAAAYwQAAGUEAABlBAAAZwQAAGcEAABpBAAAaQQAAGsEAABrBAAAbQQAAG0EAABvBAAAbwQAAHEEAABxBAAAcwQAAHMEAAB1BAAAdQQAAHcEAAB3BAAAeQQAAHkEAAB7BAAAewQAAH0EAAB9BAAAfwQAAH8EAACBBAAAgQQAAIsEAACLBAAAjQQAAI0EAACPBAAAjwQAAJEEAACRBAAAkwQAAJMEAACVBAAAlQQAAJcEAACXBAAAmQQAAJkEAACbBAAAmwQAAJ0EAACdBAAAnwQAAJ8EAAChBAAAoQQAAKMEAACjBAAApQQAAKUEAACnBAAApwQAAKkEAACpBAAAqwQAAKsEAACtBAAArQQAAK8EAACvBAAAsQQAALEEAACzBAAAswQAALUEAAC1BAAAtwQAALcEAAC5BAAAuQQAALsEAAC7BAAAvQQAAL0EAAC/BAAAvwQAAMIEAADCBAAAxAQAAMQEAADGBAAAxgQAAMgEAADIBAAAygQAAMoEAADMBAAAzAQAAM4EAADPBAAA0QQAANEEAADTBAAA0wQAANUEAADVBAAA1wQAANcEAADZBAAA2QQAANsEAADbBAAA3QQAAN0EAADfBAAA3wQAAOEEAADhBAAA4wQAAOMEAADlBAAA5QQAAOcEAADnBAAA6QQAAOkEAADrBAAA6wQAAO0EAADtBAAA7wQAAO8EAADxBAAA8QQAAPMEAADzBAAA9QQAAPUEAAD3BAAA9wQAAPkEAAD5BAAA+wQAAPsEAAD9BAAA/QQAAP8EAAD/BAAAAQUAAAEFAAADBQAAAwUAAAUFAAAFBQAABwUAAAcFAAAJBQAACQUAAAsFAAALBQAADQUAAA0FAAAPBQAADwUAABEFAAARBQAAEwUAABMFAAAVBQAAFQUAABcFAAAXBQAAGQUAABkFAAAbBQAAGwUAAB0FAAAdBQAAHwUAAB8FAAAhBQAAIQUAACMFAAAjBQAAJQUAACUFAAAnBQAAJwUAACkFAAApBQAAKwUAACsFAAAtBQAALQUAAC8FAAAvBQAAYAUAAIgFAADQEAAA+hAAAPwQAAD/EAAA+BMAAP0TAACAHAAAiBwAAAAdAAC/HQAAAR4AAAEeAAADHgAAAx4AAAUeAAAFHgAABx4AAAceAAAJHgAACR4AAAseAAALHgAADR4AAA0eAAAPHgAADx4AABEeAAARHgAAEx4AABMeAAAVHgAAFR4AABceAAAXHgAAGR4AABkeAAAbHgAAGx4AAB0eAAAdHgAAHx4AAB8eAAAhHgAAIR4AACMeAAAjHgAAJR4AACUeAAAnHgAAJx4AACkeAAApHgAAKx4AACseAAAtHgAALR4AAC8eAAAvHgAAMR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACdHgAAnx4AAJ8eAAChHgAAoR4AAKMeAACjHgAApR4AAKUeAACnHgAApx4AAKkeAACpHgAAqx4AAKseAACtHgAArR4AAK8eAACvHgAAsR4AALEeAACzHgAAsx4AALUeAAC1HgAAtx4AALceAAC5HgAAuR4AALseAAC7HgAAvR4AAL0eAAC/HgAAvx4AAMEeAADBHgAAwx4AAMMeAADFHgAAxR4AAMceAADHHgAAyR4AAMkeAADLHgAAyx4AAM0eAADNHgAAzx4AAM8eAADRHgAA0R4AANMeAADTHgAA1R4AANUeAADXHgAA1x4AANkeAADZHgAA2x4AANseAADdHgAA3R4AAN8eAADfHgAA4R4AAOEeAADjHgAA4x4AAOUeAADlHgAA5x4AAOceAADpHgAA6R4AAOseAADrHgAA7R4AAO0eAADvHgAA7x4AAPEeAADxHgAA8x4AAPMeAAD1HgAA9R4AAPceAAD3HgAA+R4AAPkeAAD7HgAA+x4AAP0eAAD9HgAA/x4AAAcfAAAQHwAAFR8AACAfAAAnHwAAMB8AADcfAABAHwAARR8AAFAfAABXHwAAYB8AAGcfAABwHwAAfR8AAIAfAACHHwAAkB8AAJcfAACgHwAApx8AALAfAAC0HwAAth8AALcfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAACiEAAAohAAAOIQAADyEAABMhAAATIQAALyEAAC8hAAA0IQAANCEAADkhAAA5IQAAPCEAAD0hAABGIQAASSEAAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcSwAAHEsAABzLAAAdCwAAHYsAAB9LAAAgSwAAIEsAACDLAAAgywAAIUsAACFLAAAhywAAIcsAACJLAAAiSwAAIssAACLLAAAjSwAAI0sAACPLAAAjywAAJEsAACRLAAAkywAAJMsAACVLAAAlSwAAJcsAACXLAAAmSwAAJksAACbLAAAmywAAJ0sAACdLAAAnywAAJ8sAAChLAAAoSwAAKMsAACjLAAApSwAAKUsAACnLAAApywAAKksAACpLAAAqywAAKssAACtLAAArSwAAK8sAACvLAAAsSwAALEsAACzLAAAsywAALUsAAC1LAAAtywAALcsAAC5LAAAuSwAALssAAC7LAAAvSwAAL0sAAC/LAAAvywAAMEsAADBLAAAwywAAMMsAADFLAAAxSwAAMcsAADHLAAAySwAAMksAADLLAAAyywAAM0sAADNLAAAzywAAM8sAADRLAAA0SwAANMsAADTLAAA1SwAANUsAADXLAAA1ywAANksAADZLAAA2ywAANssAADdLAAA3SwAAN8sAADfLAAA4SwAAOEsAADjLAAA5CwAAOwsAADsLAAA7iwAAO4sAADzLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAEGmAABBpgAAQ6YAAEOmAABFpgAARaYAAEemAABHpgAASaYAAEmmAABLpgAAS6YAAE2mAABNpgAAT6YAAE+mAABRpgAAUaYAAFOmAABTpgAAVaYAAFWmAABXpgAAV6YAAFmmAABZpgAAW6YAAFumAABdpgAAXaYAAF+mAABfpgAAYaYAAGGmAABjpgAAY6YAAGWmAABlpgAAZ6YAAGemAABppgAAaaYAAGumAABrpgAAbaYAAG2mAACBpgAAgaYAAIOmAACDpgAAhaYAAIWmAACHpgAAh6YAAImmAACJpgAAi6YAAIumAACNpgAAjaYAAI+mAACPpgAAkaYAAJGmAACTpgAAk6YAAJWmAACVpgAAl6YAAJemAACZpgAAmaYAAJumAACdpgAAI6cAACOnAAAlpwAAJacAACenAAAnpwAAKacAACmnAAArpwAAK6cAAC2nAAAtpwAAL6cAADGnAAAzpwAAM6cAADWnAAA1pwAAN6cAADenAAA5pwAAOacAADunAAA7pwAAPacAAD2nAAA/pwAAP6cAAEGnAABBpwAAQ6cAAEOnAABFpwAARacAAEenAABHpwAASacAAEmnAABLpwAAS6cAAE2nAABNpwAAT6cAAE+nAABRpwAAUacAAFOnAABTpwAAVacAAFWnAABXpwAAV6cAAFmnAABZpwAAW6cAAFunAABdpwAAXacAAF+nAABfpwAAYacAAGGnAABjpwAAY6cAAGWnAABlpwAAZ6cAAGenAABppwAAaacAAGunAABrpwAAbacAAG2nAABvpwAAeKcAAHqnAAB6pwAAfKcAAHynAAB/pwAAf6cAAIGnAACBpwAAg6cAAIOnAACFpwAAhacAAIenAACHpwAAjKcAAIynAACOpwAAjqcAAJGnAACRpwAAk6cAAJWnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAAK+nAACvpwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADRpwAA0acAANOnAADTpwAA1acAANWnAADXpwAA16cAANmnAADZpwAA8qcAAPSnAAD2pwAA9qcAAPinAAD6pwAAMKsAAFqrAABcqwAAaasAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAAEH/AABa/wAAKAQBAE8EAQDYBAEA+wQBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAgAcBAIAHAQCDBwEAhQcBAIcHAQCwBwEAsgcBALoHAQDADAEA8gwBAMAYAQDfGAEAYG4BAH9uAQAa1AEAM9QBAE7UAQBU1AEAVtQBAGfUAQCC1AEAm9QBALbUAQC51AEAu9QBALvUAQC91AEAw9QBAMXUAQDP1AEA6tQBAAPVAQAe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AQAAzQEAAM0BAADPAQAAzwEAANEBAADRAQAA0wEAANMBAADVAQAA1QEAANcBAADXAQAA2QEAANkBAADbAQAA2wEAAN4BAADeAQAA4AEAAOABAADiAQAA4gEAAOQBAADkAQAA5gEAAOYBAADoAQAA6AEAAOoBAADqAQAA7AEAAOwBAADuAQAA7gEAAPEBAADxAQAA9AEAAPQBAAD2AQAA+AEAAPoBAAD6AQAA/AEAAPwBAAD+AQAA/gEAAAACAAAAAgAAAgIAAAICAAAEAgAABAIAAAYCAAAGAgAACAIAAAgCAAAKAgAACgIAAAwCAAAMAgAADgIAAA4CAAAQAgAAEAIAABICAAASAgAAFAIAABQCAAAWAgAAFgIAABgCAAAYAgAAGgIAABoCAAAcAgAAHAIAAB4CAAAeAgAAIAIAACACAAAiAgAAIgIAACQCAAAkAgAAJgIAACYCAAAoAgAAKAIAACoCAAAqAgAALAIAACwCAAAuAgAALgIAADACAAAwAgAAMgIAADICAAA6AgAAOwIAAD0CAAA+AgAAQQIAAEECAABDAgAARgIAAEgCAABIAgAASgIAAEoCAABMAgAATAIAAE4CAABOAgAAcAMAAHADAAByAwAAcgMAAHYDAAB2AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAjwMAAJEDAAChAwAAowMAAKsDAADPAwAAzwMAANIDAADUAwAA2AMAANgDAADaAwAA2gMAANwDAADcAwAA3gMAAN4DAADgAwAA4AMAAOIDAADiAwAA5AMAAOQDAADmAwAA5gMAAOgDAADoAwAA6gMAAOoDAADsAwAA7AMAAO4DAADuAwAA9AMAAPQDAAD3AwAA9wMAAPkDAAD6AwAA/QMAAC8EAABgBAAAYAQAAGIEAABiBAAAZAQAAGQEAABmBAAAZgQAAGgEAABoBAAAagQAAGoEAABsBAAAbAQAAG4EAABuBAAAcAQAAHAEAAByBAAAcgQAAHQEAAB0BAAAdgQAAHYEAAB4BAAAeAQAAHoEAAB6BAAAfAQAAHwEAAB+BAAAfgQAAIAEAACABAAAigQAAIoEAACMBAAAjAQAAI4EAACOBAAAkAQAAJAEAACSBAAAkgQAAJQEAACUBAAAlgQAAJYEAACYBAAAmAQAAJoEAACaBAAAnAQAAJwEAACeBAAAngQAAKAEAACgBAAAogQAAKIEAACkBAAApAQAAKYEAACmBAAAqAQAAKgEAACqBAAAqgQAAKwEAACsBAAArgQAAK4EAACwBAAAsAQAALIEAACyBAAAtAQAALQEAAC2BAAAtgQAALgEAAC4BAAAugQAALoEAAC8BAAAvAQAAL4EAAC+BAAAwAQAAMEEAADDBAAAwwQAAMUEAADFBAAAxwQAAMcEAADJBAAAyQQAAMsEAADLBAAAzQQAAM0EAADQBAAA0AQAANIEAADSBAAA1AQAANQEAADWBAAA1gQAANgEAADYBAAA2gQAANoEAADcBAAA3AQAAN4EAADeBAAA4AQAAOAEAADiBAAA4gQAAOQEAADkBAAA5gQAAOYEAADoBAAA6AQAAOoEAADqBAAA7AQAAOwEAADuBAAA7gQAAPAEAADwBAAA8gQAAPIEAAD0BAAA9AQAAPYEAAD2BAAA+AQAAPgEAAD6BAAA+gQAAPwEAAD8BAAA/gQAAP4EAAAABQAAAAUAAAIFAAACBQAABAUAAAQFAAAGBQAABgUAAAgFAAAIBQAACgUAAAoFAAAMBQAADAUAAA4FAAAOBQAAEAUAABAFAAASBQAAEgUAABQFAAAUBQAAFgUAABYFAAAYBQAAGAUAABoFAAAaBQAAHAUAABwFAAAeBQAAHgUAACAFAAAgBQAAIgUAACIFAAAkBQAAJAUAACYFAAAmBQAAKAUAACgFAAAqBQAAKgUAACwFAAAsBQAALgUAAC4FAAAxBQAAVgUAAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAAKATAAD1EwAAkBwAALocAAC9HAAAvxwAAAAeAAAAHgAAAh4AAAIeAAAEHgAABB4AAAYeAAAGHgAACB4AAAgeAAAKHgAACh4AAAweAAAMHgAADh4AAA4eAAAQHgAAEB4AABIeAAASHgAAFB4AABQeAAAWHgAAFh4AABgeAAAYHgAAGh4AABoeAAAcHgAAHB4AAB4eAAAeHgAAIB4AACAeAAAiHgAAIh4AACQeAAAkHgAAJh4AACYeAAAoHgAAKB4AACoeAAAqHgAALB4AACweAAAuHgAALh4AADAeAAAwHgAAMh4AADIeAAA0HgAANB4AADYeAAA2HgAAOB4AADgeAAA6HgAAOh4AADweAAA8HgAAPh4AAD4eAABAHgAAQB4AAEIeAABCHgAARB4AAEQeAABGHgAARh4AAEgeAABIHgAASh4AAEoeAABMHgAATB4AAE4eAABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJ4eAACeHgAAoB4AAKAeAACiHgAAoh4AAKQeAACkHgAAph4AAKYeAACoHgAAqB4AAKoeAACqHgAArB4AAKweAACuHgAArh4AALAeAACwHgAAsh4AALIeAAC0HgAAtB4AALYeAAC2HgAAuB4AALgeAAC6HgAAuh4AALweAAC8HgAAvh4AAL4eAADAHgAAwB4AAMIeAADCHgAAxB4AAMQeAADGHgAAxh4AAMgeAADIHgAAyh4AAMoeAADMHgAAzB4AAM4eAADOHgAA0B4AANAeAADSHgAA0h4AANQeAADUHgAA1h4AANYeAADYHgAA2B4AANoeAADaHgAA3B4AANweAADeHgAA3h4AAOAeAADgHgAA4h4AAOIeAADkHgAA5B4AAOYeAADmHgAA6B4AAOgeAADqHgAA6h4AAOweAADsHgAA7h4AAO4eAADwHgAA8B4AAPIeAADyHgAA9B4AAPQeAAD2HgAA9h4AAPgeAAD4HgAA+h4AAPoeAAD8HgAA/B4AAP4eAAD+HgAACB8AAA8fAAAYHwAAHR8AACgfAAAvHwAAOB8AAD8fAABIHwAATR8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAABfHwAAaB8AAG8fAAC4HwAAux8AAMgfAADLHwAA2B8AANsfAADoHwAA7B8AAPgfAAD7HwAAAiEAAAIhAAAHIQAAByEAAAshAAANIQAAECEAABIhAAAVIQAAFSEAABkhAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAAC0hAAAwIQAAMyEAAD4hAAA/IQAARSEAAEUhAABgIQAAbyEAAIMhAACDIQAAtiQAAM8kAAAALAAALywAAGAsAABgLAAAYiwAAGQsAABnLAAAZywAAGksAABpLAAAaywAAGssAABtLAAAcCwAAHIsAAByLAAAdSwAAHUsAAB+LAAAgCwAAIIsAACCLAAAhCwAAIQsAACGLAAAhiwAAIgsAACILAAAiiwAAIosAACMLAAAjCwAAI4sAACOLAAAkCwAAJAsAACSLAAAkiwAAJQsAACULAAAliwAAJYsAACYLAAAmCwAAJosAACaLAAAnCwAAJwsAACeLAAAniwAAKAsAACgLAAAoiwAAKIsAACkLAAApCwAAKYsAACmLAAAqCwAAKgsAACqLAAAqiwAAKwsAACsLAAAriwAAK4sAACwLAAAsCwAALIsAACyLAAAtCwAALQsAAC2LAAAtiwAALgsAAC4LAAAuiwAALosAAC8LAAAvCwAAL4sAAC+LAAAwCwAAMAsAADCLAAAwiwAAMQsAADELAAAxiwAAMYsAADILAAAyCwAAMosAADKLAAAzCwAAMwsAADOLAAAziwAANAsAADQLAAA0iwAANIsAADULAAA1CwAANYsAADWLAAA2CwAANgsAADaLAAA2iwAANwsAADcLAAA3iwAAN4sAADgLAAA4CwAAOIsAADiLAAA6ywAAOssAADtLAAA7SwAAPIsAADyLAAAQKYAAECmAABCpgAAQqYAAESmAABEpgAARqYAAEamAABIpgAASKYAAEqmAABKpgAATKYAAEymAABOpgAATqYAAFCmAABQpgAAUqYAAFKmAABUpgAAVKYAAFamAABWpgAAWKYAAFimAABapgAAWqYAAFymAABcpgAAXqYAAF6mAABgpgAAYKYAAGKmAABipgAAZKYAAGSmAABmpgAAZqYAAGimAABopgAAaqYAAGqmAABspgAAbKYAAICmAACApgAAgqYAAIKmAACEpgAAhKYAAIamAACGpgAAiKYAAIimAACKpgAAiqYAAIymAACMpgAAjqYAAI6mAACQpgAAkKYAAJKmAACSpgAAlKYAAJSmAACWpgAAlqYAAJimAACYpgAAmqYAAJqmAAAipwAAIqcAACSnAAAkpwAAJqcAACanAAAopwAAKKcAACqnAAAqpwAALKcAACynAAAupwAALqcAADKnAAAypwAANKcAADSnAAA2pwAANqcAADinAAA4pwAAOqcAADqnAAA8pwAAPKcAAD6nAAA+pwAAQKcAAECnAABCpwAAQqcAAESnAABEpwAARqcAAEanAABIpwAASKcAAEqnAABKpwAATKcAAEynAABOpwAATqcAAFCnAABQpwAAUqcAAFKnAABUpwAAVKcAAFanAABWpwAAWKcAAFinAABapwAAWqcAAFynAABcpwAAXqcAAF6nAABgpwAAYKcAAGKnAABipwAAZKcAAGSnAABmpwAAZqcAAGinAABopwAAaqcAAGqnAABspwAAbKcAAG6nAABupwAAeacAAHmnAAB7pwAAe6cAAH2nAAB+pwAAgKcAAICnAACCpwAAgqcAAISnAACEpwAAhqcAAIanAACLpwAAi6cAAI2nAACNpwAAkKcAAJCnAACSpwAAkqcAAJanAACWpwAAmKcAAJinAACapwAAmqcAAJynAACcpwAAnqcAAJ6nAACgpwAAoKcAAKKnAACipwAApKcAAKSnAACmpwAApqcAAKinAACopwAAqqcAAK6nAACwpwAAtKcAALanAAC2pwAAuKcAALinAAC6pwAAuqcAALynAAC8pwAAvqcAAL6nAADApwAAwKcAAMKnAADCpwAAxKcAAMenAADJpwAAyacAANCnAADQpwAA1qcAANanAADYpwAA2KcAAPWnAAD1pwAAIf8AADr/AAAABAEAJwQBALAEAQDTBAEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCADAEAsgwBAKAYAQC/GAEAQG4BAF9uAQAA1AEAGdQBADTUAQBN1AEAaNQBAIHUAQCc1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALXUAQDQ1AEA6dQBAATVAQAF1QEAB9UBAArVAQAN1QEAFNUBABbVAQAc1QEAONUBADnVAQA71QEAPtUBAEDVAQBE1QEARtUBAEbVAQBK1QEAUNUBAGzVAQCF1QEAoNUBALnVAQDU1QEA7dUBAAjWAQAh1gEAPNYBAFXWAQBw1gEAidYBAKjWAQDA1gEA4tYBAPrWAQAc1wEANNcBAFbXAQBu1wEAkNcBAKjXAQDK1wEAytcBAADpAQAh6QEAMPEBAEnxAQBQ8QEAafEBAHDxAQCJ8QEACxgAAA0YAAAPGAAADxgAAAD+AAAP/gAAAAEOAO8BDgAwAAAAOQAAAEEAAABaAAAAXwAAAF8AAABhAAAAegAAAKoAAACqAAAAtQAAALUAAAC3AAAAtwAAALoAAAC6AAAAwAAAANYAAADYAAAA9gAAAPgAAADBAgAAxgIAANECAADgAgAA5AIAAOwCAADsAgAA7gIAAO4CAAAAAwAAdAMAAHYDAAB3AwAAewMAAH0DAAB/AwAAfwMAAIYDAACKAwAAjAMAAIwDAACOAwAAoQMAAKMDAAD1AwAA9wMAAIEEAACDBAAAhwQAAIoEAAAvBQAAMQUAAFYFAABZBQAAWQUAAGAFAACIBQAAkQUAAL0FAAC/BQAAvwUAAMEFAADCBQAAxAUAAMUFAADHBQAAxwUAANAFAADqBQAA7wUAAPIFAAAQBgAAGgYAACAGAABpBgAAbgYAANMGAADVBgAA3AYAAN8GAADoBgAA6gYAAPwGAAD/BgAA/wYAABAHAABKBwAATQcAALEHAADABwAA9QcAAPoHAAD6BwAA/QcAAP0HAAAACAAALQgAAEAIAABbCAAAYAgAAGoIAABwCAAAhwgAAIkIAACOCAAAmAgAAOEIAADjCAAAYwkAAGYJAABvCQAAcQkAAIMJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC8CQAAxAkAAMcJAADICQAAywkAAM4JAADXCQAA1wkAANwJAADdCQAA3wkAAOMJAADmCQAA8QkAAPwJAAD8CQAA/gkAAP4JAAABCgAAAwoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPAoAADwKAAA+CgAAQgoAAEcKAABICgAASwoAAE0KAABRCgAAUQoAAFkKAABcCgAAXgoAAF4KAABmCgAAdQoAAIEKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvAoAAMUKAADHCgAAyQoAAMsKAADNCgAA0AoAANAKAADgCgAA4woAAOYKAADvCgAA+QoAAP8KAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAADwLAABECwAARwsAAEgLAABLCwAATQsAAFULAABXCwAAXAsAAF0LAABfCwAAYwsAAGYLAABvCwAAcQsAAHELAACCCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAAL4LAADCCwAAxgsAAMgLAADKCwAAzQsAANALAADQCwAA1wsAANcLAADmCwAA7wsAAAAMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPAwAAEQMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABYDAAAWgwAAF0MAABdDAAAYAwAAGMMAABmDAAAbwwAAIAMAACDDAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAALwMAADEDAAAxgwAAMgMAADKDAAAzQwAANUMAADWDAAA3QwAAN4MAADgDAAA4wwAAOYMAADvDAAA8QwAAPMMAAAADQAADA0AAA4NAAAQDQAAEg0AAEQNAABGDQAASA0AAEoNAABODQAAVA0AAFcNAABfDQAAYw0AAGYNAABvDQAAeg0AAH8NAACBDQAAgw0AAIUNAACWDQAAmg0AALENAACzDQAAuw0AAL0NAAC9DQAAwA0AAMYNAADKDQAAyg0AAM8NAADUDQAA1g0AANYNAADYDQAA3w0AAOYNAADvDQAA8g0AAPMNAAABDgAAOg4AAEAOAABODgAAUA4AAFkOAACBDgAAgg4AAIQOAACEDgAAhg4AAIoOAACMDgAAow4AAKUOAAClDgAApw4AAL0OAADADgAAxA4AAMYOAADGDgAAyA4AAM4OAADQDgAA2Q4AANwOAADfDgAAAA8AAAAPAAAYDwAAGQ8AACAPAAApDwAANQ8AADUPAAA3DwAANw8AADkPAAA5DwAAPg8AAEcPAABJDwAAbA8AAHEPAACEDwAAhg8AAJcPAACZDwAAvA8AAMYPAADGDwAAABAAAEkQAABQEAAAnRAAAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAANAQAAD6EAAA/BAAAEgSAABKEgAATRIAAFASAABWEgAAWBIAAFgSAABaEgAAXRIAAGASAACIEgAAihIAAI0SAACQEgAAsBIAALISAAC1EgAAuBIAAL4SAADAEgAAwBIAAMISAADFEgAAyBIAANYSAADYEgAAEBMAABITAAAVEwAAGBMAAFoTAABdEwAAXxMAAGkTAABxEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAAVFwAAHxcAADQXAABAFwAAUxcAAGAXAABsFwAAbhcAAHAXAAByFwAAcxcAAIAXAADTFwAA1xcAANcXAADcFwAA3RcAAOAXAADpFwAACxgAAA0YAAAPGAAAGRgAACAYAAB4GAAAgBgAAKoYAACwGAAA9RgAAAAZAAAeGQAAIBkAACsZAAAwGQAAOxkAAEYZAABtGQAAcBkAAHQZAACAGQAAqxkAALAZAADJGQAA0BkAANoZAAAAGgAAGxoAACAaAABeGgAAYBoAAHwaAAB/GgAAiRoAAJAaAACZGgAApxoAAKcaAACwGgAAvRoAAL8aAADOGgAAABsAAEwbAABQGwAAWRsAAGsbAABzGwAAgBsAAPMbAAAAHAAANxwAAEAcAABJHAAATRwAAH0cAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAADQHAAA0hwAANQcAAD6HAAAAB0AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAzB8AANAfAADTHwAA1h8AANsfAADgHwAA7B8AAPIfAAD0HwAA9h8AAPwfAAA/IAAAQCAAAFQgAABUIAAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAA0CAAANwgAADhIAAA4SAAAOUgAADwIAAAAiEAAAIhAAAHIQAAByEAAAohAAATIQAAFSEAABUhAAAYIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAA5IQAAPCEAAD8hAABFIQAASSEAAE4hAABOIQAAYCEAAIghAAAALAAA5CwAAOssAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAH8tAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2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AAAA+AAAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAHADAAB0AwAAdgMAAHcDAAB7AwAAfQMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAigQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAADQBQAA6gUAAO8FAADyBQAAIAYAAEoGAABuBgAAbwYAAHEGAADTBgAA1QYAANUGAADlBgAA5gYAAO4GAADvBgAA+gYAAPwGAAD/BgAA/wYAABAHAAAQBwAAEgcAAC8HAABNBwAApQcAALEHAACxBwAAygcAAOoHAAD0BwAA9QcAAPoHAAD6BwAAAAgAABUIAAAaCAAAGggAACQIAAAkCAAAKAgAACgIAABACAAAWAgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAKAIAADJCAAABAkAADkJAAA9CQAAPQkAAFAJAABQCQAAWAkAAGEJAABxCQAAgAkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAAL0JAAC9CQAAzgkAAM4JAADcCQAA3QkAAN8JAADhCQAA8AkAAPEJAAD8CQAA/AkAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAWQoAAFwKAABeCgAAXgoAAHIKAAB0CgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAL0KAADQCgAA0AoAAOAKAADhCgAA+QoAAPkKAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA9CwAAPQsAAFwLAABdCwAAXwsAAGELAABxCwAAcQsAAIMLAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAA0AsAANALAAAFDAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAAA9DAAAWAwAAFoMAABdDAAAXQwAAGAMAABhDAAAgAwAAIAMAACF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IAAACyAAAA4gAAAPIAAAKCAAAC4gAABgIAAAbyAAAP/+AAD//gAA8P8AAPv/AAAwNAEAPzQBAKC8AQCjvAEAc9EBAHrRAQAAAA4AHwAOAIAADgD/AA4A8AEOAP8PDgAAAwAAbwMAAIMEAACJBAAAkQUAAL0FAAC/BQAAvwUAAMEFAADCBQAAxAUAAMUFAADHBQAAxwUAABAGAAAaBgAASwYAAF8GAABwBgAAcAYAANYGAADcBgAA3wYAAOQGAADnBgAA6AYAAOoGAADtBgAAEQcAABEHAAAwBwAASgcAAKYHAACwBwAA6wcAAPMHAAD9BwAA/QcAABYIAAAZCAAAGwgAACMIAAAlCAAAJwgAACkIAAAtCAAAWQgAAFsIAACYCAAAnwgAAMoIAADhCAAA4wgAAAIJAAA6CQAAOgkAADwJAAA8CQAAQQkAAEgJAABNCQAATQkAAFEJAABXCQAAYgkAAGMJAACBCQAAgQkAALwJAAC8CQAAvgkAAL4JAADBCQAAxAkAAM0JAADNCQAA1wkAANcJAADiCQAA4wkAAP4JAAD+CQAAAQoAAAIKAAA8CgAAPAoAAEEKAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAcAoAAHEKAAB1CgAAdQoAAIEKAACCCgAAvAoAALwKAADBCgAAxQoAAMcKAADICgAAzQoAAM0KAADiCgAA4woAAPoKAAD/CgAAAQsAAAELAAA8CwAAPAsAAD4LAAA/CwAAQQsAAEQLAABNCwAATQsAAFULAABXCwAAYgsAAGMLAACCCwAAggsAAL4LAAC+CwAAwAsAAMALAADNCwAAzQsAANcLAADXCwAAAAwAAAAMAAAEDAAABAwAADwMAAA8DAAAPgwAAEAMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABiDAAAYwwAAIEMAACBDAAAvAwAALwMAAC/DAAAvwwAAMIMAADCDAAAxgwAAMYMAADMDAAAzQwAANUMAADWDAAA4gwAAOMMAAAADQAAAQ0AADsNAAA8DQAAPg0AAD4NAABBDQAARA0AAE0NAABNDQAAVw0AAFcNAABiDQAAYw0AAIENAACBDQAAyg0AAMoNAADPDQAAzw0AANINAADUDQAA1g0AANYNAADfDQAA3w0AADEOAAAxDgAANA4AADoOAABHDgAATg4AALEOAACx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HwEAQDQBAEA0AQBHNAEAVTQBAPBqAQD0agEAMGsBADZrAQBPbwEAT28BAI9vAQCSbwEA5G8BAORvAQCdvAEAnrwBAADPAQAtzwEAMM8BAEbPAQBl0QEAZdEBAGfRAQBp0QEAbtEBAHLRAQB70QEAgtEBAIXRAQCL0QEAqtEBAK3RAQBC0gEARNIBAADaAQA22gEAO9oBAGzaAQB12gEAddoBAITaAQCE2gEAm9oBAJ/aAQCh2gEAr9oBAADgAQAG4AEACOABABjgAQAb4AEAIeABACPgAQAk4AEAJuABACrgAQCP4AEAj+ABADDhAQA24QEAruIBAK7iAQDs4gEA7+IBAOzkAQDv5AEA0OgBANboAQBE6QEASukBAPvzAQD/8wEAIAAOAH8ADgAAAQ4A7wEOAAARAABfEQAAYKkAAHypAAAKAAAACgAAAACsAAAArAAAHKwAABysAAA4rAAAOKwAAFSsAABUrAAAcKwAAHCsAACMrAAAjKwAAKisAACorAAAxKwAAMSsAADgrAAA4KwAAPysAAD8rAAAGK0AABitAAA0rQAANK0AAFCtAABQrQAAbK0AAGytAACIrQAAiK0AAKStAACkrQAAwK0AAMCtAADcrQAA3K0AAPitAAD4rQAAFK4AABSuAAAwrgAAMK4AAEyuAABMrgAAaK4AAGiuAACErgAAhK4AAKCuAACgrgAAvK4AALyuAADYrgAA2K4AAPSuAAD0rgAAEK8AABCvAAAsrwAALK8AAEivAABIrwAAZK8AAGSvAACArwAAgK8AAJyvAACcrwAAuK8AALivAADUrwAA1K8AAPCvAADwrwAADLAAAAywAAAosAAAKLAAAESwAABEsAAAYLAAAGCwAAB8sAAAfLAAAJiwAACYsAAAtLAAALSwAADQsAAA0LAAAOywAADssAAACLEAAAixAAAksQAAJLEAAECxAABAsQAAXLEAAFyxAAB4sQAAeLEAAJSxAACUsQAAsLEAALCxAADMsQAAzLEAAOixAADosQAABLIAAASyAAAgsgAAILIAADyyAAA8sgAAWLIAAFiyAAB0sgAAdLIAAJCyAACQsgAArLIAAKyyAADIsgAAyLIAAOSyAADksgAAALMAAACzAAAcswAAHLMAADizAAA4swAAVLMAAFSzAABwswAAcLMAAIyzAACMswAAqLMAAKizAADEswAAxLMAAOCzAADgswAA/LMAAPyzAAAYtAAAGLQAADS0AAA0tAAAULQAAFC0AABstAAAbLQAAIi0AACItAAApLQAAKS0AADAtAAAwLQAANy0AADctAAA+LQAAPi0AAAUtQAAFLUAADC1AAAwtQAATLUAAEy1AABotQAAaLUAAIS1AACEtQAAoLUAAKC1AAC8tQAAvLUAANi1AADYtQAA9LUAAPS1AAAQtgAAELYAACy2AAAstgAASLYAAEi2AABktgAAZLYAAIC2AACAtgAAnLYAAJy2AAC4tgAAuLYAANS2AADUtgAA8LYAAPC2AAAMtwAADLcAACi3AAAotwAARLcAAES3AABgtwAAYLcAAHy3AAB8twAAmLcAAJi3AAC0twAAtLcAANC3AADQtwAA7LcAAOy3AAAIuAAACLgAACS4AAAkuAAAQLgAAEC4AABcuAAAXLgAAHi4AAB4uAAAlLgAAJS4AACwuAAAsLgAAMy4AADMuAAA6LgAAOi4AAAEuQAABLkAACC5AAAguQAAPLkAADy5AABYuQAAWLkAAHS5AAB0uQAAkLkAAJC5AACsuQAArLkAAMi5AADIuQAA5LkAAOS5AAAAugAAALoAABy6AAAcugAAOLoAADi6AABUugAAVLoAAHC6AABwugAAjLoAAIy6AACougAAqLoAAMS6AADEugAA4LoAAOC6AAD8ugAA/LoAABi7AAAYuwAANLsAADS7AABQuwAAULsAAGy7AABsuwAAiLsAAIi7AACkuwAApLsAAMC7AADAuwAA3LsAANy7AAD4uwAA+LsAABS8AAAUvAAAMLwAADC8AABMvAAATLwAAGi8AABovAAAhLwAAIS8AACgvAAAoLwAALy8AAC8vAAA2LwAANi8AAD0vAAA9LwAABC9AAAQvQAALL0AACy9AABIvQAASL0AAGS9AABkvQAAgL0AAIC9AACcvQAAnL0AALi9AAC4vQAA1L0AANS9AADwvQAA8L0AAAy+AAAMvgAAKL4AACi+AABEvgAARL4AAGC+AABgvgAAfL4AAHy+AACYvgAAmL4AALS+AAC0vgAA0L4AANC+AADsvgAA7L4AAAi/AAAIvwAAJL8AACS/AABAvwAAQL8AAFy/AABcvwAAeL8AAHi/AACUvwAAlL8AALC/AACwvwAAzL8AAMy/AADovwAA6L8AAATAAAAEwAAAIMAAACDAAAA8wAAAPMAAAFjAAABYwAAAdMAAAHTAAACQwAAAkMAAAKzAAACswAAAyMAAAMjAAADkwAAA5MAAAADBAAAAwQAAHMEAABzBAAA4wQAAOMEAAFTBAABUwQAAcMEAAHDBAACMwQAAjMEAAKjBAACowQAAxMEAAMTBAADgwQAA4MEAAPzBAAD8wQAAGMIAABjCAAA0wgAANMIAAFDCAABQwgAAbMIAAGzCAACIwgAAiMIAAKTCAACkwgAAwMIAAMDCAADcwgAA3MIAAPjCAAD4wgAAFMMAABTDAAAwwwAAMMMAAEzDAABMwwAAaMMAAGjDAACEwwAAhMMAAKDDAACgwwAAvMMAALzDAADYwwAA2MMAAPTDAAD0wwAAEMQAABDEAAAsxAAALMQAAEjEAABIxAAAZMQAAGTEAACAxAAAgMQAAJzEAACcxAAAuMQAALjEAADUxAAA1MQAAPDEAADwxAAADMUAAAzFAAAoxQAAKMUAAETFAABExQAAYMUAAGDFAAB8xQAAfMUAAJjFAACYxQAAtMUAALTFAADQxQAA0MUAAOzFAADsxQAACMYAAAjGAAAkxgAAJMYAAEDGAABAxgAAXMYAAFzGAAB4xgAAeMYAAJTGAACUxgAAsMYAALDGAADMxgAAzMYAAOjGAADoxgAABMcAAATHAAAgxwAAIMcAADzHAAA8xwAAWMcAAFjHAAB0xwAAdMcAAJDHAACQxwAArMcAAKzHAADIxwAAyMcAAOTHAADkxwAAAMgAAADIAAAcyAAAHMgAADjIAAA4yAAAVMgAAFTIAABwyAAAcMgAAIzIAACMyAAAqMgAAKjIAADEyAAAxMgAAODIAADgyAAA/MgAAPzIAAAYyQAAGMkAADTJAAA0yQAAUMkAAFDJAABsyQAAbMkAAIjJAACIyQAApMkAAKTJAADAyQAAwMkAANzJAADcyQAA+MkAAPjJAAAUygAAFMoAADDKAAAwygAATMoAAEzKAABoygAAaMoAAITKAACEygAAoMoAAKDKAAC8ygAAvMoAANjKAADYygAA9MoAAPTKAAAQywAAEMsAACzLAAAsywAASMsAAEjLAABkywAAZMsAAIDLAACAywAAnMsAAJzLAAC4ywAAuMsAANTLAADUywAA8MsAAPDLAAAMzAAADMwAACjMAAAozAAARMwAAETMAABgzAAAYMwAAHzMAAB8zAAAmMwAAJjMAAC0zAAAtMwAANDMAADQzAAA7MwAAOzMAAAIzQAACM0AACTNAAAkzQAAQM0AAEDNAABczQAAXM0AAHjNAAB4zQAAlM0AAJTNAACwzQAAsM0AAMzNAADMzQAA6M0AAOjNAAAEzgAABM4AACDOAAAgzgAAPM4AADzOAABYzgAAWM4AAHTOAAB0zgAAkM4AAJDOAACszgAArM4AAMjOAADIzgAA5M4AAOTOAAAAzwAAAM8AABzPAAAczwAAOM8AADjPAABUzwAAVM8AAHDPAABwzwAAjM8AAIzPAACozwAAqM8AAMTPAADEzwAA4M8AAODPAAD8zwAA/M8AABjQAAAY0AAANNAAADTQAABQ0AAAUNAAAGzQAABs0AAAiNAAAIjQAACk0AAApNAAAMDQAADA0AAA3NAAANzQAAD40AAA+NAAABTRAAAU0QAAMNEAADDRAABM0QAATNEAAGjRAABo0QAAhNEAAITRAACg0QAAoNEAALzRAAC80QAA2NEAANjRAAD00QAA9NEAABDSAAAQ0gAALNIAACzSAABI0gAASNIAAGTSAABk0gAAgNIAAIDSAACc0gAAnNIAALjSAAC40gAA1NIAANTSAADw0gAA8NIAAAzTAAAM0wAAKNMAACjTAABE0wAARNMAAGDTAABg0wAAfNMAAHzTAACY0wAAmNMAALTTAAC00wAA0NMAANDTAADs0wAA7NMAAAjUAAAI1AAAJNQAACTUAABA1AAAQNQAAFzUAABc1AAAeNQAAHjUAACU1AAAlNQAALDUAACw1AAAzNQAAMzUAADo1AAA6NQAAATVAAAE1QAAINUAACDVAAA81QAAPNUAAFjVAABY1QAAdNUAAHTVAACQ1QAAkNUAAKzVAACs1QAAyNUAAMjVAADk1QAA5NUAAADWAAAA1gAAHNYAABzWAAA41gAAONYAAFTWAABU1gAAcNYAAHDWAACM1gAAjNYAAKjWAACo1gAAxNYAAMTWAADg1gAA4NYAAPzWAAD81gAAGNcAABjXAAA01wAANNcAAFDXAABQ1wAAbNcAAGzXAACI1wAAiNcAAAGsAAAbrAAAHawAADesAAA5rAAAU6wAAFWsAABvrAAAcawAAIusAACNrAAAp6wAAKmsAADDrAAAxawAAN+sAADhrAAA+6wAAP2sAAAXrQAAGa0AADOtAAA1rQAAT60AAFGtAABrrQAAba0AAIetAACJrQAAo60AAKWtAAC/rQAAwa0AANutAADdrQAA960AAPmtAAATrgAAFa4AAC+uAAAxrgAAS64AAE2uAABnrgAAaa4AAIOuAACFrgAAn64AAKGuAAC7rgAAva4AANeuAADZrgAA864AAPWuAAAPrwAAEa8AACuvAAAtrwAAR68AAEmvAABjrwAAZa8AAH+vAACBrwAAm68AAJ2vAAC3rwAAua8AANOvAADVrwAA768AAPGvAAALsAAADbAAACewAAApsAAAQ7AAAEWwAABfsAAAYbAAAHuwAAB9sAAAl7AAAJmwAACzsAAAtbAAAM+wAADRsAAA67AAAO2wAAAHsQAACbEAACOxAAAlsQAAP7EAAEGxAABbsQAAXbEAAHexAAB5sQAAk7EAAJWxAACvsQAAsbEAAMuxAADNsQAA57EAAOmxAAADsgAABbIAAB+yAAAhsgAAO7IAAD2yAABXsgAAWbIAAHOyAAB1sgAAj7IAAJGyAACrsgAArbIAAMeyAADJsgAA47IAAOWyAAD/sgAAAbMAABuzAAAdswAAN7MAADmzAABTswAAVbMAAG+zAABxswAAi7MAAI2zAACnswAAqbMAAMOzAADFswAA37MAAOGzAAD7swAA/bMAABe0AAAZtAAAM7QAADW0AABPtAAAUbQAAGu0AABttAAAh7QAAIm0AACjtAAApbQAAL+0AADBtAAA27QAAN20AAD3tAAA+bQAABO1AAAVtQAAL7UAADG1AABLtQAATbUAAGe1AABptQAAg7UAAIW1AACftQAAobUAALu1AAC9tQAA17UAANm1AADztQAA9bUAAA+2AAARtgAAK7YAAC22AABHtgAASbYAAGO2AABltgAAf7YAAIG2AACbtgAAnbYAALe2AAC5tgAA07YAANW2AADvtgAA8bYAAAu3AAANtwAAJ7cAACm3AABDtwAARbcAAF+3AABhtwAAe7cAAH23AACXtwAAmbcAALO3AAC1twAAz7cAANG3AADrtwAA7bcAAAe4AAAJuAAAI7gAACW4AAA/uAAAQbgAAFu4AABduAAAd7gAAHm4AACTuAAAlbgAAK+4AACxuAAAy7gAAM24AADnuAAA6bgAAAO5AAAFuQAAH7kAACG5AAA7uQAAPbkAAFe5AABZuQAAc7kAAHW5AACPuQAAkbkAAKu5AACtuQAAx7kAAMm5AADjuQAA5bkAAP+5AAABugAAG7oAAB26AAA3ugAAOboAAFO6AABVugAAb7oAAHG6AACLugAAjboAAKe6AACpugAAw7oAAMW6AADfugAA4boAAPu6AAD9ugAAF7sAABm7AAAzuwAANbsAAE+7AABRuwAAa7sAAG27AACHuwAAibsAAKO7AACluwAAv7sAAMG7AADbuwAA3bsAAPe7AAD5uwAAE7wAABW8AAAvvAAAMbwAAEu8AABNvAAAZ7wAAGm8AACDvAAAhbwAAJ+8AAChvAAAu7wAAL28AADXvAAA2bwAAPO8AAD1vAAAD70AABG9AAArvQAALb0AAEe9AABJvQAAY70AAGW9AAB/vQAAgb0AAJu9AACdvQAAt70AALm9AADTvQAA1b0AAO+9AADxvQAAC74AAA2+AAAnvgAAKb4AAEO+AABFvgAAX74AAGG+AAB7vgAAfb4AAJe+AACZvgAAs74AALW+AADPvgAA0b4AAOu+AADtvgAAB78AAAm/AAAjvwAAJb8AAD+/AABBvwAAW78AAF2/AAB3vwAAeb8AAJO/AACVvwAAr78AALG/AADLvwAAzb8AAOe/AADpvwAAA8AAAAXAAAAfwAAAIcAAADvAAAA9wAAAV8AAAFnAAABzwAAAdcAAAI/AAACRwAAAq8AAAK3AAADHwAAAycAAAOPAAADlwAAA/8AAAAHBAAAbwQAAHcEAADfBAAA5wQAAU8EAAFXBAABvwQAAccEAAIvBAACNwQAAp8EAAKnBAADDwQAAxcEAAN/BAADhwQAA+8EAAP3BAAAXwgAAGcIAADPCAAA1wgAAT8IAAFHCAABrwgAAbcIAAIfCAACJwgAAo8IAAKXCAAC/wgAAwcIAANvCAADdwgAA98IAAPnCAAATwwAAFcMAAC/DAAAxwwAAS8MAAE3DAABnwwAAacMAAIPDAACFwwAAn8MAAKHDAAC7wwAAvcMAANfDAADZwwAA88MAAPXDAAAPxAAAEcQAACvEAAAtxAAAR8QAAEnEAABjxAAAZcQAAH/EAACBxAAAm8QAAJ3EAAC3xAAAucQAANPEAADVxAAA78QAAPHEAAALxQAADcUAACfFAAApxQAAQ8UAAEXFAABfxQAAYcUAAHvFAAB9xQAAl8UAAJnFAACzxQAAtcUAAM/FAADRxQAA68UAAO3FAAAHxgAACcYAACPGAAAlxgAAP8YAAEHGAABbxgAAXcYAAHfGAAB5xgAAk8YAAJXGAACvxgAAscYAAMvGAADNxgAA58YAAOnGAAADxwAABccAAB/HAAAhxwAAO8cAAD3HAABXxwAAWccAAHPHAAB1xwAAj8cAAJHHAACrxwAArccAAMfHAADJxwAA48cAAOXHAAD/xwAAAcgAABvIAAAdyAAAN8gAADnIAABTyAAAVcgAAG/IAABxyAAAi8gAAI3IAACnyAAAqcgAAMPIAADFyAAA38gAAOHIAAD7yAAA/cgAABfJAAAZyQAAM8kAADXJAABPyQAAUckAAGvJAABtyQAAh8kAAInJAACjyQAApckAAL/JAADByQAA28kAAN3JAAD3yQAA+ckAABPKAAAVygAAL8oAADHKAABLygAATcoAAGfKAABpygAAg8oAAIXKAACfygAAocoAALvKAAC9ygAA18oAANnKAADzygAA9coAAA/LAAARywAAK8sAAC3LAABHywAAScsAAGPLAABlywAAf8sAAIHLAACbywAAncsAALfLAAC5ywAA08sAANXLAADvywAA8csAAAvMAAANzAAAJ8wAACnMAABDzAAARcwAAF/MAABhzAAAe8wAAH3MAACXzAAAmcwAALPMAAC1zAAAz8wAANHMAADrzAAA7cwAAAfNAAAJzQAAI80AACXNAAA/zQAAQc0AAFvNAABdzQAAd80AAHnNAACTzQAAlc0AAK/NAACxzQAAy80AAM3NAADnzQAA6c0AAAPOAAAFzgAAH84AACHOAAA7zgAAPc4AAFfOAABZzgAAc84AAHXOAACPzgAAkc4AAKvOAACtzgAAx84AAMnOAADjzgAA5c4AAP/OAAABzwAAG88AAB3PAAA3zwAAOc8AAFPPAABVzwAAb88AAHHPAACLzwAAjc8AAKfPAACpzwAAw88AAMXPAADfzwAA4c8AAPvPAAD9zwAAF9AAABnQAAAz0AAANdAAAE/QAABR0AAAa9AAAG3QAACH0AAAidAAAKPQAACl0AAAv9AAAMHQAADb0AAA3dAAAPfQAAD50AAAE9EAABXRAAAv0QAAMdEAAEvRAABN0QAAZ9EAAGnRAACD0QAAhdEAAJ/RAACh0QAAu9EAAL3RAADX0QAA2dEAAPPRAAD1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AQAAhQEAAIgBAACIAQAAjAEAAI0BAACSAQAAkgEAAJUBAACVAQAAmQEAAJsBAACeAQAAngEAAKEBAAChAQAAowEAAKMBAAClAQAApQEAAKgBAACoAQAAqgEAAKsBAACtAQAArQEAALABAACwAQAAtAEAALQBAAC2AQAAtgEAALkBAAC6AQAAvQEAAL8BAADGAQAAxgEAAMkBAADJAQAAzAEAAMwBAADOAQAAzgEAANABAADQAQAA0gEAANIBAADUAQAA1AEAANYBAADWAQAA2AEAANgBAADaAQAA2gEAANwBAADdAQAA3wEAAN8BAADhAQAA4QEAAOMBAADjAQAA5QEAAOUBAADnAQAA5wEAAOkBAADpAQAA6wEAAOsBAADtAQAA7QEAAO8BAADwAQAA8wEAAPMBAAD1AQAA9QEAAPkBAAD5AQAA+wEAAPsBAAD9AQAA/QEAAP8BAAD/AQAAAQIAAAECAAADAgAAAwIAAAUCAAAFAgAABwIAAAcCAAAJAgAACQIAAAsCAAALAgAADQIAAA0CAAAPAgAADwIAABECAAARAgAAEwIAABMCAAAVAgAAFQIAABcCAAAXAgAAGQIAABkCAAAbAgAAGwIAAB0CAAAdAgAAHwIAAB8CAAAhAgAAIQIAACMCAAAjAgAAJQIAACUCAAAnAgAAJwIAACkCAAApAgAAKwIAACsCAAAtAgAALQIAAC8CAAAvAgAAMQIAADECAAAzAgAAOQIAADwCAAA8AgAAPwIAAEACAABCAgAAQgIAAEcCAABHAgAASQIAAEkCAABLAgAASwIAAE0CAABNAgAATwIAAJMCAACVAgAAuAIAAMACAADBAgAA4AIAAOQCAABxAwAAcQMAAHMDAABzAwAAdwMAAHcDAAB6AwAAfQMAAJADAACQAwAArAMAAM4DAADQAwAA0QMAANUDAADXAwAA2QMAANkDAADbAwAA2wMAAN0DAADdAwAA3wMAAN8DAADhAwAA4QMAAOMDAADjAwAA5QMAAOUDAADnAwAA5wMAAOkDAADpAwAA6wMAAOsDAADtAwAA7QMAAO8DAADzAwAA9QMAAPUDAAD4AwAA+AMAAPsDAAD8AwAAMAQAAF8EAABhBAAAYQQAAGMEAABjBAAAZQQAAGUEAABnBAAAZwQAAGkEAABpBAAAawQAAGsEAABtBAAAbQQAAG8EAABvBAAAcQQAAHEEAABzBAAAcwQAAHUEAAB1BAAAdwQAAHcEAAB5BAAAeQQAAHsEAAB7BAAAfQQAAH0EAAB/BAAAfwQAAIEEAACBBAAAiwQAAIsEAACNBAAAjQQAAI8EAACPBAAAkQQAAJEEAACTBAAAkwQAAJUEAACVBAAAlwQAAJcEAACZBAAAmQQAAJsEAACbBAAAnQQAAJ0EAACfBAAAnwQAAKEEAAChBAAAowQAAKMEAAClBAAApQQAAKcEAACnBAAAqQQAAKkEAACrBAAAqwQAAK0EAACtBAAArwQAAK8EAACxBAAAsQQAALMEAACzBAAAtQQAALUEAAC3BAAAtwQAALkEAAC5BAAAuwQAALsEAAC9BAAAvQQAAL8EAAC/BAAAwgQAAMIEAADEBAAAxAQAAMYEAADGBAAAyAQAAMgEAADKBAAAygQAAMwEAADMBAAAzgQAAM8EAADRBAAA0QQAANMEAADTBAAA1QQAANUEAADXBAAA1wQAANkEAADZBAAA2wQAANsEAADdBAAA3QQAAN8EAADfBAAA4QQAAOEEAADjBAAA4wQAAOUEAADlBAAA5wQAAOcEAADpBAAA6QQAAOsEAADrBAAA7QQAAO0EAADvBAAA7wQAAPEEAADxBAAA8wQAAPMEAAD1BAAA9QQAAPcEAAD3BAAA+QQAAPkEAAD7BAAA+wQAAP0EAAD9BAAA/wQAAP8EAAABBQAAAQUAAAMFAAADBQAABQUAAAUFAAAHBQAABwUAAAkFAAAJBQAACwUAAAsFAAANBQAADQUAAA8FAAAPBQAAEQUAABEFAAATBQAAEwUAABUFAAAVBQAAFwUAABcFAAAZBQAAGQUAABsFAAAbBQAAHQUAAB0FAAAfBQAAHwUAACEFAAAhBQAAIwUAACMFAAAlBQAAJQUAACcFAAAnBQAAKQUAACkFAAArBQAAKwUAAC0FAAAtBQAALwUAAC8FAABgBQAAiAUAAPwQAAD8EAAA+BMAAP0TAACAHAAAiBwAAAAdAAC/HQAAAR4AAAEeAAADHgAAAx4AAAUeAAAFHgAABx4AAAceAAAJHgAACR4AAAseAAALHgAADR4AAA0eAAAPHgAADx4AABEeAAARHgAAEx4AABMeAAAVHgAAFR4AABceAAAXHgAAGR4AABkeAAAbHgAAGx4AAB0eAAAdHgAAHx4AAB8eAAAhHgAAIR4AACMeAAAjHgAAJR4AACUeAAAnHgAAJx4AACkeAAApHgAAKx4AACseAAAtHgAALR4AAC8eAAAvHgAAMR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACdHgAAnx4AAJ8eAAChHgAAoR4AAKMeAACjHgAApR4AAKUeAACnHgAApx4AAKkeAACpHgAAqx4AAKseAACtHgAArR4AAK8eAACvHgAAsR4AALEeAACzHgAAsx4AALUeAAC1HgAAtx4AALceAAC5HgAAuR4AALseAAC7HgAAvR4AAL0eAAC/HgAAvx4AAMEeAADBHgAAwx4AAMMeAADFHgAAxR4AAMceAADHHgAAyR4AAMkeAADLHgAAyx4AAM0eAADNHgAAzx4AAM8eAADRHgAA0R4AANMeAADTHgAA1R4AANUeAADXHgAA1x4AANkeAADZHgAA2x4AANseAADdHgAA3R4AAN8eAADfHgAA4R4AAOEeAADjHgAA4x4AAOUeAADlHgAA5x4AAOceAADpHgAA6R4AAOseAADrHgAA7R4AAO0eAADvHgAA7x4AAPEeAADxHgAA8x4AAPMeAAD1HgAA9R4AAPceAAD3HgAA+R4AAPkeAAD7HgAA+x4AAP0eAAD9HgAA/x4AAAcfAAAQHwAAFR8AACAfAAAnHwAAMB8AADcfAABAHwAARR8AAFAfAABXHwAAYB8AAGcfAABwHwAAfR8AAIAfAACHHwAAkB8AAJcfAACgHwAApx8AALAfAAC0HwAAth8AALcfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAACiEAAAohAAAOIQAADyEAABMhAAATIQAALyEAAC8hAAA0IQAANCEAADkhAAA5IQAAPCEAAD0hAABGIQAASSEAAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcSwAAHEsAABzLAAAdCwAAHYsAAB9LAAAgSwAAIEsAACDLAAAgywAAIUsAACFLAAAhywAAIcsAACJLAAAiSwAAIssAACLLAAAjSwAAI0sAACPLAAAjywAAJEsAACRLAAAkywAAJMsAACVLAAAlSwAAJcsAACXLAAAmSwAAJksAACbLAAAmywAAJ0sAACdLAAAnywAAJ8sAAChLAAAoSwAAKMsAACjLAAApSwAAKUsAACnLAAApywAAKksAACpLAAAqywAAKssAACtLAAArSwAAK8sAACvLAAAsSwAALEsAACzLAAAsywAALUsAAC1LAAAtywAALcsAAC5LAAAuSwAALssAAC7LAAAvSwAAL0sAAC/LAAAvywAAMEsAADBLAAAwywAAMMsAADFLAAAxSwAAMcsAADHLAAAySwAAMksAADLLAAAyywAAM0sAADNLAAAzywAAM8sAADRLAAA0SwAANMsAADTLAAA1SwAANUsAADXLAAA1ywAANksAADZLAAA2ywAANssAADdLAAA3SwAAN8sAADfLAAA4SwAAOEsAADjLAAA5CwAAOwsAADsLAAA7iwAAO4sAADzLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAEGmAABBpgAAQ6YAAEOmAABFpgAARaYAAEemAABHpgAASaYAAEmmAABLpgAAS6YAAE2mAABNpgAAT6YAAE+mAABRpgAAUaYAAFOmAABTpgAAVaYAAFWmAABXpgAAV6YAAFmmAABZpgAAW6YAAFumAABdpgAAXaYAAF+mAABfpgAAYaYAAGGmAABjpgAAY6YAAGWmAABlpgAAZ6YAAGemAABppgAAaaYAAGumAABrpgAAbaYAAG2mAACBpgAAgaYAAIOmAACDpgAAhaYAAIWmAACHpgAAh6YAAImmAACJpgAAi6YAAIumAACNpgAAjaYAAI+mAACPpgAAkaYAAJGmAACTpgAAk6YAAJWmAACVpgAAl6YAAJemAACZpgAAmaYAAJumAACdpgAAI6cAACOnAAAlpwAAJacAACenAAAnpwAAKacAACmnAAArpwAAK6cAAC2nAAAtpwAAL6cAADGnAAAzpwAAM6cAADWnAAA1pwAAN6cAADenAAA5pwAAOacAADunAAA7pwAAPacAAD2nAAA/pwAAP6cAAEGnAABBpwAAQ6cAAEOnAABFpwAARacAAEenAABHpwAASacAAEmnAABLpwAAS6cAAE2nAABNpwAAT6cAAE+nAABRpwAAUacAAFOnAABTpwAAVacAAFWnAABXpwAAV6cAAFmnAABZpwAAW6cAAFunAABdpwAAXacAAF+nAABfpwAAYacAAGGnAABjpwAAY6cAAGWnAABlpwAAZ6cAAGenAABppwAAaacAAGunAABrpwAAbacAAG2nAABvpwAAeKcAAHqnAAB6pwAAfKcAAHynAAB/pwAAf6cAAIGnAACBpwAAg6cAAIOnAACFpwAAhacAAIenAACHpwAAjKcAAIynAACOpwAAjqcAAJGnAACRpwAAk6cAAJWnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAAK+nAACvpwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADRpwAA0acAANOnAADTpwAA1acAANWnAADXpwAA16cAANmnAADZpwAA8qcAAPSnAAD2pwAA9qcAAPinAAD6pwAAMKsAAFqrAABcqwAAaasAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAAEH/AABa/wAAKAQBAE8EAQDYBAEA+wQBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAgAcBAIAHAQCDBwEAhQcBAIcHAQCwBwEAsgcBALoHAQDADAEA8gwBAMAYAQDfGAEAYG4BAH9uAQAa1AEAM9QBAE7UAQBU1AEAVtQBAGfUAQCC1AEAm9QBALbUAQC51AEAu9QBALvUAQC91AEAw9QBAMXUAQDP1AEA6tQBAAPVAQAe1QEAN9UBAFLVAQBr1QEAhtUBAJ/VAQC61QEA09UBAO7VAQAH1gEAItYBADvWAQBW1gEAb9YBAIrWAQCl1gEAwtYBANrWAQDc1gEA4dYBAPzWAQAU1wEAFtcBABvXAQA21wEATtcBAFDXAQBV1wEAcNcBAIjXAQCK1wEAj9cBAKrXAQDC1wEAxNcBAMnXAQDL1wEAy9cBAADfAQAJ3wEAC98BAB7fAQAl3wEAKt8BADDgAQBt4AEAIukBAEPpAQAwAAAAOQAAAGAGAABpBgAAawYAAGwGAADwBgAA+QYAAMAHAADJBwAAZgkAAG8JAADmCQAA7wkAAGYKAABvCgAA5goAAO8KAABmCwAAbwsAAOYLAADvCwAAZgwAAG8MAADmDAAA7wwAAGYNAABvDQAA5g0AAO8NAABQDgAAWQ4AANAOAADZDgAAIA8AACkPAABAEAAASRAAAJAQAACZEAAA4BcAAOkXAAAQGAAAGRgAAEYZAABPGQAA0BkAANkZAACAGgAAiRoAAJAaAACZGgAAUBsAAFkbAACwGwAAuRsAAEAcAABJHAAAUBwAAFkcAAAgpgAAKaYAANCoAADZqAAAAKkAAAmpAADQqQAA2akAAPCpAAD5qQAAUKoAAFmqAADwqwAA+asAABD/AAAZ/wAAoAQBAKkEAQAwDQEAOQ0BAGYQAQBvEAEA8BABAPkQAQA2EQEAPxEBANARAQDZEQEA8BIBAPkSAQBQFAEAWRQBANAUAQDZFAEAUBYBAFkWAQDAFgEAyRYBADAXAQA5FwEA4BgBAOkYAQBQGQEAWRkBAFAcAQBZHAEAUB0BAFkdAQCgHQEAqR0BAFAfAQBZHwEAYGoBAGlqAQDAagEAyWoBAFBrAQBZawEAztcBAP/XAQBA4QEASeEBAPDiAQD54gEA8OQBAPnkAQBQ6QEAWekBAPD7AQD5+wEAuwEAALsBAADAAQAAwwEAAJQCAACUAgAAuQIAAL8CAADGAgAA0QIAAOwCAADsAgAA7gIAAO4CAAB0AwAAdAMAAFkFAABZBQAA0AUAAOoFAADvBQAA8wUAACAGAABKBgAAbgYAAG8GAABxBgAA0wYAANUGAADVBgAA5QYAAOYGAADuBgAA7wYAAPoGAAD8BgAA/wYAAP8GAAAQBwAAEAcAABIHAAAvBwAATQcAAKUHAACxBwAAsQcAAMoHAADqBwAA9AcAAPUHAAD6BwAA+gcAAAAIAAAVCAAAGggAABoIAAAkCAAAJAgAACgIAAAoCAAAQAgAAFgIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACgCAAAyQgAAAQJAAA5CQAAPQkAAD0JAABQCQAAUAkAAFgJAABhCQAAcQkAAIAJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAPAJAADxCQAA/AkAAPwJAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAFkKAABcCgAAXgoAAF4KAAByCgAAdAoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAAC9CgAA0AoAANAKAADgCgAA4QoAAPkKAAD5CgAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAD0LAABcCwAAXQsAAF8LAABhCwAAcQsAAHELAACDCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAANALAADQCwAABQwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA9DAAAPQwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAIAMAACADAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAAL0MAAC9DAAA3QwAAN4MAADgDAAA4QwAAPEMAADyDAAABA0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAABODQAATg0AAFQNAABWDQAAXw0AAGENAAB6DQAAfw0AAIUNAACWDQAAmg0AALENAACzDQAAuw0AAL0NAAC9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AQAAQQEAAEMBAABDAQAARQEAAEUBAABHAQAARwEAAEoBAABKAQAATAEAAEwBAABOAQAATgEAAFABAABQAQAAUgEAAFIBAABUAQAAVAEAAFYBAABWAQAAWAEAAFgBAABaAQAAWgEAAFwBAABcAQAAXgEAAF4BAABgAQAAYAEAAGIBAABiAQAAZAEAAGQBAABmAQAAZgEAAGgBAABoAQAAagEAAGoBAABsAQAAbAEAAG4BAABuAQAAcAEAAHABAAByAQAAcgEAAHQBAAB0AQAAdgEAAHYBAAB4AQAAeQEAAHsBAAB7AQAAfQEAAH0BAACBAQAAggEAAIQBAACEAQAAhgEAAIcBAACJAQAAiwEAAI4BAACRAQAAkwEAAJQBAACWAQAAmAEAAJwBAACdAQAAnwEAAKABAACiAQAAogEAAKQBAACkAQAApgEAAKcBAACpAQAAqQEAAKwBAACsAQAArgEAAK8BAACxAQAAswEAALUBAAC1AQAAtwEAALgBAAC8AQAAvAEAAMQBAADFAQAAxwEAAMgBAADKAQAAywEAAM0BAADNAQAAzwEAAM8BAADRAQAA0QEAANMBAADTAQAA1QEAANUBAADXAQAA1wEAANkBAADZAQAA2wEAANsBAADeAQAA3gEAAOABAADgAQAA4gEAAOIBAADkAQAA5AEAAOYBAADmAQAA6AEAAOgBAADqAQAA6gEAAOwBAADsAQAA7gEAAO4BAADxAQAA8gEAAPQBAAD0AQAA9gEAAPgBAAD6AQAA+gEAAPwBAAD8AQAA/gEAAP4BAAAAAgAAAAIAAAICAAACAgAABAIAAAQCAAAGAgAABgIAAAgCAAAIAgAACgIAAAoCAAAMAgAADAIAAA4CAAAOAgAAEAIAABACAAASAgAAEgIAABQCAAAUAgAAFgIAABYCAAAYAgAAGAIAABoCAAAaAgAAHAIAABwCAAAeAgAAHgIAACACAAAgAgAAIgIAACICAAAkAgAAJAIAACYCAAAmAgAAKAIAACgCAAAqAgAAKgIAACwCAAAsAgAALgIAAC4CAAAwAgAAMAIAADICAAAyAgAAOgIAADsCAAA9AgAAPgIAAEECAABBAgAAQwIAAEYCAABIAgAASAIAAEoCAABKAgAATAIAAEwCAABOAgAATgIAAHADAABwAwAAcgMAAHIDAAB2AwAAdgMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAI8DAACRAwAAoQMAAKMDAACrAwAAzwMAAM8DAADSAwAA1AMAANgDAADYAwAA2gMAANoDAADcAwAA3AMAAN4DAADeAwAA4AMAAOADAADiAwAA4gMAAOQDAADkAwAA5gMAAOYDAADoAwAA6AMAAOoDAADqAwAA7AMAAOwDAADuAwAA7gMAAPQDAAD0AwAA9wMAAPcDAAD5AwAA+gMAAP0DAAAvBAAAYAQAAGAEAABiBAAAYgQAAGQEAABkBAAAZgQAAGYEAABoBAAAaAQAAGoEAABqBAAAbAQAAGwEAABuBAAAbgQAAHAEAABwBAAAcgQAAHIEAAB0BAAAdAQAAHYEAAB2BAAAeAQAAHgEAAB6BAAAegQAAHwEAAB8BAAAfgQAAH4EAACABAAAgAQAAIoEAACKBAAAjAQAAIwEAACOBAAAjgQAAJAEAACQBAAAkgQAAJIEAACUBAAAlAQAAJYEAACWBAAAmAQAAJgEAACaBAAAmgQAAJwEAACcBAAAngQAAJ4EAACgBAAAoAQAAKIEAACiBAAApAQAAKQEAACmBAAApgQAAKgEAACoBAAAqgQAAKoEAACsBAAArAQAAK4EAACuBAAAsAQAALAEAACyBAAAsgQAALQEAAC0BAAAtgQAALYEAAC4BAAAuAQAALoEAAC6BAAAvAQAALwEAAC+BAAAvgQAAMAEAADBBAAAwwQAAMMEAADFBAAAxQQAAMcEAADHBAAAyQQAAMkEAADLBAAAywQAAM0EAADNBAAA0AQAANAEAADSBAAA0gQAANQEAADUBAAA1gQAANYEAADYBAAA2AQAANoEAADaBAAA3AQAANwEAADeBAAA3gQAAOAEAADgBAAA4gQAAOIEAADkBAAA5AQAAOYEAADmBAAA6AQAAOgEAADqBAAA6gQAAOwEAADsBAAA7gQAAO4EAADwBAAA8AQAAPIEAADyBAAA9AQAAPQEAAD2BAAA9gQAAPgEAAD4BAAA+gQAAPoEAAD8BAAA/AQAAP4EAAD+BAAAAAUAAAAFAAACBQAAAgUAAAQFAAAEBQAABgUAAAYFAAAIBQAACAUAAAoFAAAKBQAADAUAAAwFAAAOBQAADgUAABAFAAAQBQAAEgUAABIFAAAUBQAAFAUAABYFAAAWBQAAGAUAABgFAAAaBQAAGgUAABwFAAAcBQAAHgUAAB4FAAAgBQAAIAUAACIFAAAiBQAAJAUAACQFAAAmBQAAJgUAACgFAAAoBQAAKgUAACoFAAAsBQAALAUAAC4FAAAuBQAAMQUAAFYFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAACgEwAA9RMAAAAeAAAAHgAAAh4AAAIeAAAEHgAABB4AAAYeAAAGHgAACB4AAAgeAAAKHgAACh4AAAweAAAMHgAADh4AAA4eAAAQHgAAEB4AABIeAAASHgAAFB4AABQeAAAWHgAAFh4AABgeAAAYHgAAGh4AABoeAAAcHgAAHB4AAB4eAAAeHgAAIB4AACAeAAAiHgAAIh4AACQeAAAkHgAAJh4AACYeAAAoHgAAKB4AACoeAAAqHgAALB4AACweAAAuHgAALh4AADAeAAAwHgAAMh4AADIeAAA0HgAANB4AADYeAAA2HgAAOB4AADgeAAA6HgAAOh4AADweAAA8HgAAPh4AAD4eAABAHgAAQB4AAEIeAABCHgAARB4AAEQeAABGHgAARh4AAEgeAABIHgAASh4AAEoeAABMHgAATB4AAE4eAABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJ4eAACeHgAAoB4AAKAeAACiHgAAoh4AAKQeAACkHgAAph4AAKYeAACoHgAAqB4AAKoeAACqHgAArB4AAKweAACuHgAArh4AALAeAACwHgAAsh4AALIeAAC0HgAAtB4AALYeAAC2HgAAuB4AALgeAAC6HgAAuh4AALweAAC8HgAAvh4AAL4eAADAHgAAwB4AAMIeAADCHgAAxB4AAMQeAADGHgAAxh4AAMgeAADIHgAAyh4AAMoeAADMHgAAzB4AAM4eAADOHgAA0B4AANAeAADSHgAA0h4AANQeAADUHgAA1h4AANYeAADYHgAA2B4AANoeAADaHgAA3B4AANweAADeHgAA3h4AAOAeAADgHgAA4h4AAOIeAADkHgAA5B4AAOYeAADmHgAA6B4AAOgeAADqHgAA6h4AAOweAADsHgAA7h4AAO4eAADwHgAA8B4AAPIeAADyHgAA9B4AAPQeAAD2HgAA9h4AAPgeAAD4HgAA+h4AAPoeAAD8HgAA/B4AAP4eAAD+HgAACB8AAA8fAAAYHwAAHR8AACgfAAAvHwAAOB8AAD8fAABIHwAATR8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAABfHwAAaB8AAG8fAACIHwAAjx8AAJgfAACfHwAAqB8AAK8fAAC4HwAAvB8AAMgfAADMHwAA2B8AANsfAADoHwAA7B8AAPgfAAD8HwAAAiEAAAIhAAAHIQAAByEAAAshAAANIQAAECEAABIhAAAVIQAAFSEAABkhAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAAC0hAAAwIQAAMyEAAD4hAAA/IQAARSEAAEUhAABgIQAAbyEAAIMhAACDIQAAtiQAAM8kAAAALAAALywAAGAsAABgLAAAYiwAAGQsAABnLAAAZywAAGksAABpLAAAaywAAGssAABtLAAAcCwAAHIsAAByLAAAdSwAAHUsAAB+LAAAgCwAAIIsAACCLAAAhCwAAIQsAACGLAAAhiwAAIgsAACILAAAiiwAAIosAACMLAAAjCwAAI4sAACOLAAAkCwAAJAsAACSLAAAkiwAAJQsAACULAAAliwAAJYsAACYLAAAmCwAAJosAACaLAAAnCwAAJwsAACeLAAAniwAAKAsAACgLAAAoiwAAKIsAACkLAAApCwAAKYsAACmLAAAqCwAAKgsAACqLAAAqiwAAKwsAACsLAAAriwAAK4sAACwLAAAsCwAALIsAACyLAAAtCwAALQsAAC2LAAAtiwAALgsAAC4LAAAuiwAALosAAC8LAAAvCwAAL4sAAC+LAAAwCwAAMAsAADCLAAAwiwAAMQsAADELAAAxiwAAMYsAADILAAAyCwAAMosAADKLAAAzCwAAMwsAADOLAAAziwAANAsAADQLAAA0iwAANIsAADULAAA1CwAANYsAADWLAAA2CwAANgsAADaLAAA2iwAANwsAADcLAAA3iwAAN4sAADgLAAA4CwAAOIsAADiLAAA6ywAAOssAADtLAAA7SwAAPIsAADyLAAAQKYAAECmAABCpgAAQqYAAESmAABEpgAARqYAAEamAABIpgAASKYAAEqmAABKpgAATKYAAEymAABOpgAATqYAAFCmAABQpgAAUqYAAFKmAABUpgAAVKYAAFamAABWpgAAWKYAAFimAABapgAAWqYAAFymAABcpgAAXqYAAF6mAABgpgAAYKYAAGKmAABipgAAZKYAAGSmAABmpgAAZqYAAGimAABopgAAaqYAAGqmAABspgAAbKYAAICmAACApgAAgqYAAIKmAACEpgAAhKYAAIamAACGpgAAiKYAAIimAACKpgAAiqYAAIymAACMpgAAjqYAAI6mAACQpgAAkKYAAJKmAACSpgAAlKYAAJSmAACWpgAAlqYAAJimAACYpgAAmqYAAJqmAAAipwAAIqcAACSnAAAkpwAAJqcAACanAAAopwAAKKcAACqnAAAqpwAALKcAACynAAAupwAALqcAADKnAAAypwAANKcAADSnAAA2pwAANqcAADinAAA4pwAAOqcAADqnAAA8pwAAPKcAAD6nAAA+pwAAQKcAAECnAABCpwAAQqcAAESnAABEpwAARqcAAEanAABIpwAASKcAAEqnAABKpwAATKcAAEynAABOpwAATqcAAFCnAABQpwAAUqcAAFKnAABUpwAAVKcAAFanAABWpwAAWKcAAFinAABapwAAWqcAAFynAABcpwAAXqcAAF6nAABgpwAAYKcAAGKnAABipwAAZKcAAGSnAABmpwAAZqcAAGinAABopwAAaqcAAGqnAABspwAAbKcAAG6nAABupwAAeacAAHmnAAB7pwAAe6cAAH2nAAB+pwAAgKcAAICnAACCpwAAgqcAAISnAACEpwAAhqcAAIanAACLpwAAi6cAAI2nAACNpwAAkKcAAJCnAACSpwAAkqcAAJanAACWpwAAmKcAAJinAACapwAAmqcAAJynAACcpwAAnqcAAJ6nAACgpwAAoKcAAKKnAACipwAApKcAAKSnAACmpwAApqcAAKinAACopwAAqqcAAK6nAACwpwAAtKcAALanAAC2pwAAuKcAALinAAC6pwAAuqcAALynAAC8pwAAvqcAAL6nAADApwAAwKcAAMKnAADCpwAAxKcAAMenAADJpwAAyacAANCnAADQpwAA1qcAANanAADYpwAA2KcAAPWnAAD1pwAAIf8AADr/AAAABAEAJwQBALAEAQDTBAEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCADAEAsgwBAKAYAQC/GAEAQG4BAF9uAQAA1AEAGdQBADTUAQBN1AEAaNQBAIHUAQCc1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALXUAQDQ1AEA6dQBAATVAQAF1QEAB9UBAArVAQAN1QEAFNUBABbVAQAc1QEAONUBADnVAQA71QEAPtUBAEDVAQBE1QEARtUBAEbVAQBK1QEAUNUBAGzVAQCF1QEAoNUBALnVAQDU1QEA7dUBAAjWAQAh1gEAPNYBAFXWAQBw1gEAidYBAKjWAQDA1gEA4tYBAPrWAQAc1wEANNcBAFbXAQBu1wEAkNcBAKjXAQDK1wEAytcBAADpAQAh6QEAMPEBAEnxAQBQ8QEAafEBAHDxAQCJ8QEAlociAAUAAABohiUABAAAAL5jIgACAAAA4DglAAEAAACihyIABQAAAIiGJQAtAAAA9GMiAAYAAADwhyUAOQEAAChbIgAGAAAAuJElABUAAAAgZCIAAgAAAPBEJQABAAAAtYciAAUAAABgkiUAnQIAALqHIgAHAAAASKclAEEAAACuhyIABwAAAFCpJQAfAgAAz4ciAAkAAABIuiUAEwAAAO+HIgAFAAAA4LolAE0AAADjhyIAAwAAAEi9JQACAAAA64ciAAIAAABYvSUACQAAAPaHIgAFAAAAoL0lAIwCAAAkGiIAZgAAAHcDAAAcAAAAJBoiAGYAAACqAwAACQAAACQaIgBmAAAAqwMAAAkAAAAkGiIAZgAAAK4DAAAPAAAAJBoiAGYAAACgAwAADQAAACQaIgBmAAAAnQMAAA0AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1zeW50YXgtMC44LjQvc3JjL3V0ZjgucnMAQNMlAGMAAABBAQAAGgAAAEDTJQBjAAAAtAEAAC0AAABA0yUAYwAAALUBAAArAAAAQNMlAGMAAAC4AQAACQAAAEludGVydmFsU2V0cmFuZ2VzZm9sZGVkTGl0ZXJhbENsYXNzVW5pY29kZUNsYXNzQnl0ZXNSZXBldGl0aW9uR3JvdXBvbGRfZmxhZ3NDb25jYXRBbHRlcm5hdGlvbkFsdGVybmF0aW9uQnJhbmNoAAAAAAAAAQAAAAEAAADpBAAAAAAAAAQAAAAEAAAABgUAAGNhc2VfaW5zZW5zaXRpdmVtdWx0aV9saW5lZG90X21hdGNoZXNfbmV3X2xpbmVzd2FwX2dyZWVkdW5pY29kZWNybGYAdNQlABAAAACE1CUACgAAAI7UJQAUAAAAotQlAAoAAACs1CUABwAAALPUJQAEAAAARmxhZ3NMb29rQ2FwdHVyZVN0YXJ0RW5kU3RhcnRMRkVuZExGU3RhcnRDUkxGRW5kQ1JMRldvcmRBc2NpaVdvcmRBc2NpaU5lZ2F0ZVdvcmRVbmljb2RlV29yZFVuaWNvZGVOZWdhdGVXb3JkU3RhcnRBc2NpaVdvcmRFbmRBc2NpaVdvcmRTdGFydFVuaWNvZGVXb3JkRW5kVW5pY29kZVdvcmRTdGFydEhhbGZBc2NpaVdvcmRFbmRIYWxmQXNjaWlXb3JkU3RhcnRIYWxmVW5pY29kZVdvcmRFbmRIYWxmVW5pY29kZWluZGV4bWlubWF4Z3JlZWR5KCkvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2NvcmUvc3JjL29wcy9mdW5jdGlvbi5ycwDj1SUAUAAAAKYAAAAFAAAAAAAAAAAAAAABAAAABwUAAEludmFsaWREaWdpdFBvc092ZXJmbG93TmVnT3ZlcmZsb3daZXJvAAAAAAAADAAAAAQAAAAIBQAACQUAAAoFAABfWk4vcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNC9zcmMvbGVnYWN5LnJzAAAAl9YlAC4AAAA9AAAACwAAAJfWJQAuAAAAOgAAAAsAAACX1iUALgAAADYAAAALAAAAl9YlAC4AAABmAAAAHAAAAJfWJQAuAAAAbwAAACcAAACX1iUALgAAAHAAAAAdAAAAl9YlAC4AAAByAAAAIQAAAJfWJQAuAAAAcwAAABoAAAA6OgAAl9YlAC4AAAB+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cmluZ0VPRiB3aGlsZSBwYXJzaW5nIGEgdmFsdWVleHBlY3RlZCBgOmBleHBlY3RlZCBgLGAgb3IgYF1gZXhwZWN0ZWQgYCxgIG9yIGB9YGV4cGVjdGVkIGlkZW50ZXhwZWN0ZWQgdmFsdWVleHBlY3RlZCBgImBpbnZhbGlkIGVzY2FwZWludmFsaWQgbnVtYmVybnVtYmVyIG91dCBvZiByYW5nZWludmFsaWQgdW5pY29kZSBjb2RlIHBvaW50Y29udHJvbCBjaGFyYWN0ZXIgKFx1MDAwMC1cdTAwMUYpIGZvdW5kIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdrZXkgbXVzdCBiZSBhIHN0cmluZ2ludmFsaWQgdmFsdWU6IGV4cGVjdGVkIGtleSB0byBiZSBhIG51bWJlciBpbiBxdW90ZXNmbG9hdCBrZXkgbXVzdCBiZSBmaW5pdGUgKGdvdCBOYU4gb3IgKy8taW5mKWxvbmUgbGVhZGluZyBzdXJyb2dhdGUgaW4gaGV4IGVzY2FwZXRyYWlsaW5nIGNvbW1hdHJhaWxpbmcgY2hhcmFjdGVyc3VuZXhwZWN0ZWQgZW5kIG9mIGhleCBlc2NhcGVyZWN1cnNpb24gbGltaXQgZXhjZWVkZWQgYXQgbGluZSAgY29sdW1uIAAAAAEAAAAAAAAAeAomAAkAAACBCiYACAAAAEVycm9yKCwgbGluZTogLCBjb2x1bW46IKQKJgAGAAAAqgomAAgAAACyCiYACgAAALNAJwABAAAA4AcmAGQAAAD3AQAAIQAAAOAHJgBkAAAA+wEAAAwAAADgByYAZAAAAAICAAAhAAAA4AcmAGQAAAALAgAAKgAAAOAHJgBkAAAADwIAACwAAABpbnZhbGlkIHR5cGU6ICwgZXhwZWN0ZWQgAAAALAsmAA4AAAA6CyYACwAAAAAAAAAAAAAAAQAAABUFAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5yc2gLJgBoAAAANQAAAA4AAAAAAAAAAAAAAAEAAAAZBAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc21hcnRzdHJpbmctMS4wLjEvc3JjL2lubGluZS5yc/ALJgBkAAAAKwAAACsAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zbWFydHN0cmluZy0xLjAuMS9zcmMvYm94ZWQucnMAZAwmAGMAAABBAAAADgAAAGQMJgBjAAAAdgAAACQAAAA6IAAAAAAAAAQAAAAEAAAAFgUAAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjgvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZAD8DCYAKQAAAKwEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAA/AwmACkAAACyBAAADQAAAHVzZSBvZiBzdGQ6OnRocmVhZDo6Y3VycmVudCgpIGlzIG5vdCBwb3NzaWJsZSBhZnRlciB0aGUgdGhyZWFkJ3MgbG9jYWwgZGF0YSBoYXMgYmVlbiBkZXN0cm95ZWQAAKQNJgBeAAAAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9jdXJyZW50LnJzAAAADA4mACEAAAABAQAACQAAAEFjY2Vzc0Vycm9yY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlvbjogAEsOJgBIAAAAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnNmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkuQ4mADcAAACcDiYAHQAAAKkEAAANAAAAbGlicmFyeS9zdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzAAAACA8mACEAAADRAAAAEwAAAGxpYnJhcnkvc3RkL3NyYy9iYWNrdHJhY2UucnN1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UAPA8mABwAAACKAQAAHQAAABcFAAAQAAAABAAAABgFAAAZBQAAV291bGRCbG9ja2VudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9yT3Njb2RlS2luZEN1c3RvbSAob3MgZXJyb3IgAAABAAAAAAAAAKsSJgALAAAAs0AnAAEAAABsaWJyYXJ5L3N0ZC9zcmMvcGF0aC5ycwDQEiYAFwAAANMCAAAhAAAA0BImABcAAAD6AgAALAAAANASJgAXAAAA/AIAACYAAADQEiYAFwAAAAkDAAAnAAAA0BImABcAAAAVAwAAJwAAANASJgAXAAAAfwMAACkAAADQEiYAFwAAAIADAAArAAAA0BImABcAAACVAwAALwAAANASJgAXAAAAjQMAAC8AAADQEiYAFwAAAJsDAAArAAAAbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnOIEyYALAAAABMAAAAJAAAAbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMAxBMmACMAAADWAAAAFAAAADx1bmtub3duPu+/vWxpYnJhcnkvc3RkL3NyYy8uLi8uLi9iYWNrdHJhY2Uvc3JjL3N5bWJvbGl6ZS9tb2QucnMEFCYANAAAAGcBAAAwAAAAAQAAAAAAAADoDCYAAgAAAAIAAAAAAAAAAAAEAAAAAAAAAAAAIAAA6CAtIAABAAAAAAAAAHAUJgADAAAAAgAAAAAAAAABAAAAAQAAAAAAAAAgAADoICAgICAgICAgICAgICAgICAgIGF0IAAAxeUmAAEAAABOb3RGb3VuZFBlcm1pc3Npb25EZW5pZWRDb25uZWN0aW9uUmVmdXNlZENvbm5lY3Rpb25SZXNldEhvc3RVbnJlYWNoYWJsZU5ldHdvcmtVbnJlYWNoYWJsZUNvbm5lY3Rpb25BYm9ydGVkTm90Q29ubmVjdGVkQWRkckluVXNlQWRkck5vdEF2YWlsYWJsZU5ldHdvcmtEb3duQnJva2VuUGlwZUFscmVhZHlFeGlzdHNOb3RBRGlyZWN0b3J5SXNBRGlyZWN0b3J5RGlyZWN0b3J5Tm90RW1wdHlSZWFkT25seUZpbGVzeXN0ZW1GaWxlc3lzdGVtTG9vcFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvU3RvcmFnZUZ1bGxOb3RTZWVrYWJsZVF1b3RhRXhjZWVkZWRGaWxlVG9vTGFyZ2VSZXNvdXJjZUJ1c3lFeGVjdXRhYmxlRmlsZUJ1c3lEZWFkbG9ja0Nyb3NzZXNEZXZpY2VzVG9vTWFueUxpbmtzSW52YWxpZEZpbGVuYW1lQXJndW1lbnRMaXN0VG9vTG9uZ0ludGVycnVwdGVkVW5zdXBwb3J0ZWRVbmV4cGVjdGVkRW9mT3V0T2ZNZW1vcnlJblByb2dyZXNzT3RoZXJVbmNhdGVnb3JpemVkb3BlcmF0aW9uIHN1Y2Nlc3NmdWxPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAOQWJgAqAAAAb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gbWF5IG5vdCBiZSBwZXJmb3JtZWQgcmVjdXJzaXZlbHkYFyYAOAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1c3RjLWhhc2gtMi4xLjEvc3JjL2xpYi5yc1gXJgBgAAAAIwEAABwAAABYFyYAYAAAACQBAAAoAAAAWBcmAGAAAAAlAQAAKAAAAFgXJgBgAAAACAEAACsAAABYFyYAYAAAAAgBAABCAAAAWBcmAGAAAAAFAQAAKwAAAFgXJgBgAAAABQEAAEIAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi91bmljb2RlLXdpZHRoLTAuMi4yL3NyYy90YWJsZXMucnMAACgYJgBmAAAAuAAAABUAAAAoGCYAZgAAAL4AAAAZAAAAb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybbAYJgAoAAAAJAAAAAAAAAACAAAA2BgmAGNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV48BgmACAAAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5ycxgZJgBcAAAAEwAAAAkAAACZAwAADAAAAAQAAAAaBQAAGwUAAJwDAAAAAAAAAAAAAAEAAACdAwAAAAAAAAQAAAAEAAAAHAUAAAAAAAAAAAAAAQAAAB0FAAAAAAAABAAAAAQAAAAeBQAAAAAAAAQAAAAEAAAAEQEAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvc3RkL3NyYy9wYXRoLnJzAOwZJgBHAAAAuAwAABsAAADsGSYARwAAANsMAAAhAAAA7BkmAEcAAADODAAAIgAAAFRyeUZyb21TbGljZUVycm9yAAAAAAAAAAwAAAAEAAAAHwUAACAFAAAAAAAADAAAAAQAAAAhBQAAIgUAAGNyYXRlcy9zd2NfY29tbW9uL3NyYy9jb21tZW50cy5ycwAAAKAaJgAhAAAApwEAABYAAACgGiYAIQAAAKcBAAA7AAAAoBomACEAAACsAQAADgAAAKAaJgAhAAAAswEAACcAAACgGiYAIQAAAL8BAAAyAAAAoBomACEAAADHAQAAFgAAAKAaJgAhAAAAywEAABYAAACgGiYAIQAAAM8BAAAXAAAAoBomACEAAADPAQAAPAAAAKAaJgAhAAAA1AEAAA4AAACgGiYAIQAAANsBAAAoAAAAoBomACEAAADnAQAAMwAAAKAaJgAhAAAA7wEAABcAAACgGiYAIQAAAPMBAAAXAAAAAAAAAKAaJgAhAAAA+QEAACwAAACgGiYAIQAAAAICAAAVAAAAY2Fubm90IGFkZCBwdXJlIGNvbW1lbnQgdG8gemVybyBwb3NpdGlvbsgbJgAoAAAAoBomACEAAAD3AQAACQAAACNfX0BfX19foBomACEAAAAxAgAALQAAAKAaJgAhAAAAZQIAAC4AAABjcmF0ZXMvc3djX2NvbW1vbi9zcmMvZXJyb3JzL2RpYWdub3N0aWNfYnVpbGRlci5yc0Vycm9yIGNvbnN0cnVjdGVkIGJ1dCBub3QgZW1pdHRlZAAwHCYAMgAAAF0BAAANAAAAY3JhdGVzL3N3Y19jb21tb24vc3JjL2Vycm9ycy9tb2QucnNubyBlcnJvcnMgZW5jb3VudGVyZWQgZXZlbiB0aG91Z2ggYGRlbGF5X3NwYW5fYnVnYCBpc3N1ZWS3HCYAOQAAAJQcJgAjAAAAqgEAABEAAABlbmNvdW50ZXJlZCBlcnJvciB3aXRoIGAtWiB0cmVhdF9lcnJfYXNfYnVnAAgdJgArAAAAlBwmACMAAAB3AgAADQAAAJQcJgAjAAAAagMAAB8AAABhc3NlcnRpb24gZmFpbGVkOiBzdGFydCA8PSBlbmRjcmF0ZXMvc3djX2NvbW1vbi9zcmMvaW5wdXQucnN6HSYAHgAAAB0AAAAJAAAAY3JhdGVzL3N3Y19jb21tb24vc3JjL3NvdXJjZV9tYXAucnMAAAAAAAAAAAABAAAAJAUAACUFAAAmBQAAqB0mACMAAAAEAQAAIAAAAKgdJgAjAAAAJQEAACcAAACoHSYAIwAAACoBAAA0AAAAqB0mACMAAABKAQAAMQAAADogYnBvcyA9IDsgbGluZWJwb3MgPSAAAAEAAAAAAAAAJB4mAAkAAAAtHiYADQAAAKfNJgABAAAAqB0mACMAAABLAQAAEQAAAKgdJgAjAAAAYQEAABkAAACoHSYAIwAAAIMBAABGAAAAqB0mACMAAADeAwAANQAAAKgdJgAjAAAA5QMAADYAAABtYXAuc3RhcnRfcG9zID0gOyB0b3RhbF9leHRyYV9ieXRlcyA9IDsgYnBvcyA9IACsHiYAEAAAALweJgAWAAAA0h4mAAkAAACoHSYAIwAAAOwDAAAJAAAAqB0mACMAAAAZBAAAEAAAAKgdJgAjAAAAygQAADAAAACoHSYAIwAAALYEAAAwAAAAqB0mACMAAACnBQAAEAAAAGFzc2VydGlvbiBmYWlsZWQ6IHNvdXJjZV9maWxlX2VuZCA+PSBsYXN0X2xpbmVfc3RhcnRjcmF0ZXMvc3djX2NvbW1vbi9zcmMvc3ludGF4X3Bvcy9hbmFseXplX3NvdXJjZV9maWxlLnJzAHgfJgA3AAAAKgAAAAkAAAB4HyYANwAAAGoAAAAYAAAAeB8mADcAAABqAAAALQAAAHgfJgA3AAAAdQAAACIAAAB4HyYANwAAAH0AAAAiAAAAeB8mADcAAABVAAAAHwAAAHgfJgA3AAAAWQAAABsAAAB4HyYANwAAAF0AAAAbAAAAeB8mADcAAABgAAAAJgAAAHgfJgA3AAAAYwAAACYAAABjcmF0ZXMvc3djX2NvbW1vbi9zcmMvc3ludGF4X3Bvcy9oeWdpZW5lLnJzAFAgJgArAAAAngAAABMAAABQICYAKwAAAOYAAAAdAAAAUCAmACsAAACCAQAADQAAAFAgJgArAAAAjQEAACEAAAAL8iYAAQAAAAEAAAAAAAAAzMQmAAIAAABjcmF0ZXMvc3djX2NvbW1vbi9zcmMvc3ludGF4X3Bvcy5ycyBtYWNyb3M+AP3NJgABAAAA9yAmAAgAAAA8cXVvdGUgZXhwYW5zaW9uPgAAABAhJgARAAAAPGFub24+AAAsISYABgAAADxtYWNybyBleHBhbnNpb24+AAAAPCEmABEAAAA8cHJvYy1tYWNybyBzb3VyY2UgY29kZT5YISYAGAAAAP3NJgABAAAAAM4mAAEAAADUICYAIwAAAMECAAAaAAAAYXNzZXJ0aW9uIGZhaWxlZDogbGluZV9pbmRleCA8IGFuYWx5c2lzLmxpbmVzLmxlbigpIGFzIGlzaXpl1CAmACMAAAAiBAAACQAAAE1lc3NhZ2VsZXZlbFN1YkRpYWdub3N0aWNyZW5kZXJfc3Bhbk1haW5IZWFkZXJNc2dIZWFkZXJNc2dMaW5lQW5kQ29sdW1uTGluZU51bWJlclF1b3RhdGlvblVuZGVybGluZVByaW1hcnlVbmRlcmxpbmVTZWNvbmRhcnlMYWJlbFByaW1hcnlMYWJlbFNlY29uZGFyeU9sZFNjaG9vbE5vdGVUZXh0Tm9TdHlsZUxldmVsSGlnaGxpZ2h0AAAAAAAAAAABAAAAKAUAACkFAAAqBQAAQnVnRmF0YWxQaGFzZUZhdGFsV2FybmluZ05vdGVIZWxwQ2FuY2VsbGVkRmFpbHVyZU5vdGUAAAArBQAATWFyaywFAABQcmltYXJ5U3BhbkxhYmVsTXVsdGlTcGFucHJpbWFyeV9zcGFuc3NwYW5fbGFiZWxzQnl0ZVBvcy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BoZl9zaGFyZWQtMC4xMS4zL3NyYy9saWIucnMAAAA0IyYAYQAAADsAAAAFAAAAAAAAAAwAAAAEAAAALQUAAC4FAABjcmF0ZXMvc3djX2VjbWFfYXN0L3NyYy9saXN0LnJzALwjJgAfAAAAxQAAABIAAAC8IyYAHwAAAM8AAAASAAAAAAAAAAcAAAAUAAAAGgAAAAEAAAAAAAAAEgAAAAoAAAAAAAAAHgAAAAEAAAAMAAAAAQAAAAoAAAAaAAAACAAAADnpJgAIAAAAqc0mAAMAAADp6CYABQAAAPzeJgAGAAAANeYmAAQAAACM6CYABQAAAMbNJgAGAAAAXOcmAAcAAABJ6CYABAAAAOLoJgAHAAAAMekmAAgAAAD16CYABQAAANboJgACAAAA2OgmAAQAAADC5SYAAwAAALzlJgAGAAAAdPAmAAUAAADc6CYAAwAAACrpJgAFAAAA6dQmAAQAAABE6CYABQAAAK/NJgAFAAAAJOkmAAYAAACR6CYACAAAALzNJgAGAAAAJlomAAcAAADCzSYABAAAAADpJgAEAAAAFs4mAAoAAADf6CYAAwAAABTOJgACAAAAnNImAAQAAADX5SYABwAAAProJgAGAAAAzOUmAAQAAADw6CYABQAAAC/pJgACAAAAAAAAAPwjJgAIAAAAPCQmACUAAAAnyz3b0YA3swMAAAAEAAAAAgAAAAAAAAAmWiYABwAAAKzNJgADAAAAQekmAAoAAABM0yYABgAAAFvTJgAHAAAAx9kmAAYAAABS0yYACQAAAKDSJgAJAAAALeMmAAUAAACAJSYAAgAAAJAlJgAJAAAAJ8s929GAN7MAAAAAAAAAAPzpJgAEAAAArbQmAAkAAADwJSYAAQAAAPglJgACAAAAjX+5rjQzqdYwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OS9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbXBhY3Rfc3RyLTAuNy4xL3NyYy9yZXByL21vZC5ycwAAAAAAAAAAAAAAAADAQXR0ZW1wdGVkIHRvIHJlc2VydmUgbW9yZSB0aGFuICd1c2l6ZScgYnl0ZXPoJiYAZgAAAPMAAAAOAAAA6CYmAGYAAABCAQAAJQAAAHZhbGlkIGNhcGFjaXR5L2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvY29tcGFjdF9zdHItMC43LjEvc3JjL3JlcHIvaGVhcC5ycwAAALYnJgBnAAAAqQEAAEIAAACZAwAADAAAAAQAAACaAwAANgUAAJwDAAAAAAAAAAAAAAEAAACdAwAANwUAAAwAAAAEAAAAOAUAAGZtdDo6RGlzcGxheSBpbmNvcnJlY3RseSBpbXBsZW1lbnRlZCEvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9jb21wYWN0X3N0ci0wLjcuMS9zcmMvdHJhaXRzLnJzAAAAjSgmAGQAAABoAAAAKQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuZXdfbGVuKeXTJgBLAAAAtQUAAA0AAABMYXlvdXRFcnJvci9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMATykmAHAAAADDAAAACQAAAAAAAAAMAAAABAAAADkFAAA6BQAAY3JhdGVzL3N3Y19lY21hX2NvZGVnZW4vc3JjL2xpdC5ycwAA5CkmACIAAADCAAAAGQAAAC9zY3JpcHRcdTIwMjhcdTIwMjkA5CkmACIAAABoAQAAPQAAANhkJgACAAAA2GQmAAIAAAACAAAAAAAAAAAABAAAAAAAAAAAACAAAOkCAAAAAAAAAAAABAAAAAAAAQAAACAAAOnkKSYAIgAAAGYBAAA+AAAAXHgAAAIAAAAAAAAAAAACAAAAAAAAAAAAIAAA6eQpJgAiAAAAWgEAADUAAADkKSYAIgAAALUBAAAxAAAAXDBceDAwXHZcdUZFRkYAAOQpJgAiAAAAJAIAACoAAADkKSYAIgAAACACAABGAAAA5CkmACIAAAAeAgAAPwAAAOQpJgAiAAAAGQIAAC4AAABd6CYAAwAAAMjlJgABAAAA5CkmACIAAAAVAgAARwAAAOQpJgAiAAAAEwIAAEIAAADkKSYAIgAAAAUCAAAqAAAA5CkmACIAAAACAgAAQAAAAOQpJgAiAAAA/QEAACYAAADkKSYAIgAAAPkBAAA8AAAAXHgwAOQpJgAiAAAA9QEAADwAAAACAAAAAAAAAAIAAAAAAAAAAAAAACAAAOACAAAAAAAAAAIAAAAAAAAAAQAAACAAgOAwLgAA3+UmAAEAAADkKSYAIgAAAFACAAAqAAAAZS0AAAEAAAAAAAAA6CsmAAIAAAAtMC4tLgAAAP8rJgACAAAA5CkmACIAAABYAgAAKwAAALjNJgABAAAA6CsmAAIAAAAwMDBcXG58XG5jcmF0ZXMvc3djX2VjbWFfY29kZWdlbi9zcmMvbGliLnJzADUsJgAiAAAAgwAAAFsAAACMKiYAAgAAAMgqJgACAAAANSwmACIAAAAEBAAAMQAAAMoqJgAEAAAANSwmACIAAAADBAAAQQAAADUsJgAiAAAAFQQAADEAAAA1LCYAIgAAAAwEAAA7AAAAiCsmAAMAAAA1LCYAIgAAAAYEAAA4AAAAXHUwMDAwAADYLCYABgAAAFx1MDDoLCYABAAAACJcdQD0LCYAAwAAANhkJgACAAAALL8mAAEAAAAsvyYAAQAAACy/JgABAAAAXABcI19fUFVSRV9fL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc21hcnRzdHJpbmctMS4wLjEvc3JjL29wcy5ycwAAACwtJgBhAAAAegAAADsAAAA8BQAADAAAAAQAAAA9BQAAPgUAAJwDAAAAAAAAAAAAAAEAAAA/BQAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9jaGFyL21ldGhvZHMucnPILSYAUAAAABIHAAAJAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvaHN0ci9zcmMvd3RmOC9tb2QucnMAAABABQAADAAAAAQAAABFAgAAQQUAAAwAAAAEAAAAQgUAAEMFAAAEAAAABAAAAK0BAAAAAAAAAQAAAAEAAABRAQAARAUAAAQAAAAEAAAAKwEAAEUFAAAEAAAABAAAAFcBAAAAAAAABAAAAAQAAABGBQAARwUAABgAAAAIAAAA8gEAAAAAAAAEAAAABAAAAFMCAAAAAAAABAAAAAQAAABUAQAASAUAAAQAAAAEAAAAlQEAAEkFAAAMAAAABAAAAEoFAABLBQAABAAAAAQAAABMBQAATQUAACAAAAAIAAAAPQIAAE4FAAAEAAAABAAAANYBAAAAAAAAAQAAAAEAAABPBQAAUGFyc2VJbnRFcnJvcgAAAFAFAAAEAAAABAAAAFEFAAAAAAAAAQAAAAEAAABSBQAAUwUAAAwAAAAEAAAAVAUAAFUFAAAYAAAABAAAAFYFAABXBQAAEAAAAAgAAABYBQAAWQUAAAwAAAAEAAAAWgUAAE9rRXJyAAAAWwUAACAAAAAIAAAAXAUAAF0FAAAMAAAABAAAACoBAABQYXJzZUZsb2F0RXJyb3IAXgUAAAQAAAAEAAAAogEAAF8FAAAMAAAABAAAAGAFAABhBQAABAAAAAQAAABiBQAAAAAAAAQAAAAEAAAAYwUAAGQFAAAEAAAABAAAAGUFAAAAAAAABAAAAAQAAABmBQAAAAAAAAEAAAABAAAAZwUAAGgFAAAwAAAACAAAAGkFAABqBQAAIAAAAAgAAAAjAgAAAAAAAAQAAAAEAAAAawUAAGwFAAAMAAAABAAAAG0FAAAAAAAABAAAAAQAAABuBQAAAAAAAAQAAAAEAAAAMQIAAFVuZXhwZWN0ZWQgZW9mRGVjbGFyYXRpb24gaXMgbm90IGFsbG93ZWRVc2luZyBkZWNsYXJhdGlvbiBpcyBub3QgYWxsb3dlZFVzaW5nIGRlY2xhcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIGZvci1pbiBsb29wVXNpbmcgZGVjbGFyYXRpb24gaXMgbm90IGVuYWJsZWQuIFNldCBqc2MucGFyc2VyLmV4cGxpY2l0UmVzb3VyY2VNYW5hZ2VtZW50IHRvIHRydWVVc2luZyBkZWNsYXJhdGlvbiBvbmx5IGFsbG93cyBpZGVudGlmaWVyc1VzaW5nIGRlY2xhcmF0aW9uIHJlcXVpcmVzIGluaXRpYWxpemVycHJpdmF0ZSBuYW1lcyBhcmUgbm90IGFsbG93ZWQgaW4gaW50ZXJmYWNlSW52YWxpZCBgc3VwZXIoKWBJbnZhbGlkIGFjY2VzcyB0byBzdXBlckluZGV4IHN1cGVyIHdpdGggcHJpdmF0ZSBuYW1lIGlzIG5vdCBhbGxvd2VkJ25ldy50YXJnZXQnIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCBmdW5jdGlvbiBleHByZXNzaW9uLCBvciBjbGFzcy5JbXBvcnQgaXMgbm90IGFsbG93ZWQgaGVyZUFuIGFycm93IGZ1bmN0aW9uIGlzIG5vdCBhbGxvd2VkIGhlcmVgZXhwb3J0YCBpcyBub3QgYWxsb3dlZCBoZXJlQSBnZXR0ZXIgb3IgYSBzZXR0ZXIgY2Fubm90IGJlIHJlYWRvbmx5QSBnZXR0ZXIgb3IgYSBzZXR0ZXIgY2Fubm90IGJlIG9wdGlvbmFsQSBgZ2V0YCBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzQSBgc2V0YCBhY2Nlc3NvciBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcGFyYW1ldGVydG9wIGxldmVsIGF3YWl0IGlzIG9ubHkgYWxsb3dlZCBpbiBtb2R1bGVMZWdhY3kgZGVjaW1hbCBlc2NhcGUgaXMgbm90IHBlcm1pdHRlZCBpbiBzdHJpY3QgbW9kZUxlZ2FjeSBvY3RhbCBlc2NhcGUgaXMgbm90IHBlcm1pdHRlZCBpbiBzdHJpY3QgbW9kZUludmFsaWQgY2hhcmFjdGVyIGluIGlkZW50aWZpZXJhIGJpbmFyeWFuIG9jdGFsYSBkZWNpbWFsYSBoZXhhZGVjaW1hbEV4cGVjdGVkICBkaWdpdAAApzQmAAkAAACwNCYABgAAAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL2Vycm9yLnJzAMg0JgAjAAAAQgEAABoAAABTZXR0ZXIgc2hvdWxkIGhhdmUgZXhhY3RseSBvbmUgcGFyYW1ldGVyUmVzdCBwYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIGluIHNldHRlclVudGVybWluYXRlZCBibG9jayBjb21tZW50VW50ZXJtaW5hdGVkIHN0cmluZyBjb25zdGFudEV4cGVjdGVkIHVuaWNvZGUgZXNjYXBlVW5leHBlY3RlZCBlc2NhcGUgc2VxdWVuY2UgaW4gcmVzZXJ2ZWQgd29yZDogAJY1JgAtAAAAVW50ZXJtaW5hdGVkIHJlZ2V4cCBsaXRlcmFsVW50ZXJtaW5hdGVkIHRlbXBsYXRlSWRlbnRpZmllciBjYW5ub3QgZm9sbG93IG51bWJlclVuZXhwZWN0ZWQgY2hhcmFjdGVyIBs2JgAVAAAASW52YWxpZCBzdHJpbmcgZXNjYXBlSW52YWxpZCB1bmljb2RlIGVzY2FwZUJhZCBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlLCBleHBlY3RlZCAAYzYmACgAAABFeHBlY3RlZCArLCAtIG9yIGRlY2ltYWwgZGlnaXQgYWZ0ZXIgZUxlZ2FjeSBjb21tZW50cyBjYW5ub3QgYmUgdXNlZCBpbiBtb2R1bGUgY29kZWAgY2Fubm90IGJlIHVzZWQgYXMgYW4gaWRlbnRpZmllciBpbiBzdHJpY3QgbW9kZQA63yYAAQAAAOc2JgAwAAAAYGF3YWl0YCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpZGVudGlmaWVyIGluIGFuIGFzeW5jIGNvbnRleHQnZXZhbCcgYW5kICdhcmd1bWVudHMnIGNhbm5vdCBiZSB1c2VkIGFzIGEgYmluZGluZyBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlJ2FyZ3VtZW50cycgaXMgb25seSBhbGxvd2VkIGluIGZ1bmN0aW9ucyBhbmQgY2xhc3MgbWV0aG9kc0lsbGVnYWwgJ3VzZSBzdHJpY3QnIGRpcmVjdGl2ZSBpbiBmdW5jdGlvbiB3aXRoIG5vbi1zaW1wbGUgcGFyYW1ldGVyIGxpc3QuJyoqJyBjYW5ub3QgYmUgYXBwbGllZCB0byB1bmFyeS9hd2FpdCBleHByZXNzaW9uLlVuZXhwZWN0ZWQgdG9rZW4gJyMnTGluZUJyZWFrIGNhbm5vdCBmb2xsb3cgJ3Rocm93J1VuZXhwZWN0ZWQgbGluZSBicmVhayBiZXR3ZWVuIGFycm93IGhlYWQgYW5kIGFycm93VW5leHBlY3RlZCB0b2tlbiBgYC4gRXhwZWN0ZWQgAMk4JgASAAAA2zgmAAwAAAAgLCBvciAAAPs4JgADAAAAIG9yIFVuZXhwZWN0ZWQgdG9rZW4uIERpZCB5b3UgbWVhbiAADDkmAB8AAADg5SYAAQAAAGNhbm5vdCBpbXBvcnQgYXMgcmVzZXJ2ZWQgd29yZGFzc2lnbm1lbnQgcHJvcGVydHkgaXMgaW52YWxpZCBzeW50YXhFeHBlY3RlZCAnJywgZ290ICcnAAB/OSYACgAAAIk5JgAIAAAAkTkmAAEAAABFeHBlY3RlZCAnOycsICd9JyBvciA8ZW9mPmF3YWl0KiBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGFzeW5jIGZ1bmN0aW9ucyBwcm9wb3NhbC4gVXNlIFByb21pc2UuYWxsKCkgaW5zdGVhZC5DYW5ub3QgdXNlIGEgcmVzZXJ2ZWQgd29yZCBhcyBhIHNob3J0aGFuZCBwcm9wZXJ0eU51bGxpc2ggY29hbGVzY2luZyBvcGVyYXRvcig/PykgcmVxdWlyZXMgcGFyZW5zIHdoZW4gbWl4aW5nIHdpdGggbG9naWNhbCBvcGVyYXRvcnNBIHN3aXRjaCBibG9jayBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBkZWZhdWx0c1RyYWlsaW5nIGNvbW1hIGlzbid0IHBlcm1pdHRlZCBhZnRlciBhIHJlc3QgZWxlbWVudFJlc3QgZWxlbWVudCBtdXN0IGJlIGZpbmFsIGVsZW1lbnRQYXJlbnRoZXNpemVkIGV4cHJlc3Npb24gY2Fubm90IGNvbnRhaW4gc3ByZWFkIG9wZXJhdG9yUGFyZW50aGVzaXplZCBleHByZXNzaW9uIGNhbm5vdCBiZSBlbXB0eU5vdCBhIHBhdHRlcm5Ob3QgYW4gZXhwcmVzc2lvbkNhbm5vdCBhc3NpZ24gdG8gdGhpc0ludmFsaWQgYXNzaWdubWVudCB0YXJnZXRFeHBlY3RlZCBpZGVudEV4cGVjdGVkICc7JyBvciBsaW5lIGJyZWFrTGFiZWwgIGlzIGFscmVhZHkgZGVjbGFyZWQAAADzOyYABgAAAPk7JgAUAAAAQW4gYXN5bmMgZnVuY3Rpb24gY2Fubm90IGJlIGdlbmVyYXRvcidpbXBvcnQnLCBhbmQgJ2V4cG9ydCcgYXJlIG5vdCBwZXJtaXR0ZWQgaGVyZSdpbXBvcnQnLCBhbmQgJ2V4cG9ydCcgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiBtb2R1bGUgY29kZSdpbXBvcnQubWV0YScgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiBtb2R1bGUgY29kZS5EZXN0cnVjdHVyaW5nIGJpbmRpbmdzIHJlcXVpcmUgaW5pdGlhbGl6ZXJzV2l0aCBzdGF0ZW1lbnQgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlUmV0dXJuIHN0YXRlbWVudCBpcyBub3QgYWxsb3dlZCBoZXJlRXhwZWN0ZWQgb25lIHZhcmlhYmxlIGJpbmRpbmdVbmV4cGVjdGVkIGluaXRpYWxpemVyIGluIGZvciBpbi9vZiBsb29wR2VuZXJhdG9yIG9yIGFzeW5jIGZ1bmN0aW9uIGNhbm5vdCBiZSBsYWJlbGxlZEZ1bmN0aW9uIGNhbm5vdCBiZSBsYWJlbGxlZCBpbiBzdHJpY3QgbW9kZSd5aWVsZCcgY2Fubm90IGJlIHVzZWQgYXMgYSBwYXJhbWV0ZXIgd2l0aGluIGdlbmVyYXRvcmBhd2FpdGAgZXhwcmVzc2lvbnMgY2Fubm90IGJlIHVzZWQgaW4gYSBwYXJhbWV0ZXIgaW5pdGlhbGl6ZXIuZm9yIGF3YWl0IHN5bnRheCBpcyB2YWxpZCBvbmx5IGZvciBmb3Itb2Ygc3RhdGVtZW50YXdhaXQgaXNuJ3QgYWxsb3dlZCBpbiBub24tYXN5bmMgZnVuY3Rpb25VbnRlcm1pbmF0ZWQgSlNYIGNvbnRlbnRzSlNYIGF0dHJpYnV0ZXMgbXVzdCBvbmx5IGJlIGFzc2lnbmVkIGEgbm9uLWVtcHR5IGV4cHJlc3Npb25KU1ggdmFsdWUgc2hvdWxkIGJlIGVpdGhlciBhbiBleHByZXNzaW9uIG9yIGEgcXVvdGVkIEpTWCB0ZXh0RXhwZWN0ZWQgY29ycmVzcG9uZGluZyBKU1ggY2xvc2luZyB0YWcgZm9yIDw+RXhwZWN0ZWQgY29ycmVzcG9uZGluZyBKU1ggY2xvc2luZyB0YWcgZm9yIDwAAACJPyYALAAAAADOJgABAAAATGVhZGluZyBkZWNvcmF0b3JzIG11c3QgYmUgYXR0YWNoZWQgdG8gYSBjbGFzcyBkZWNsYXJhdGlvblVzaW5nIHRoZSBleHBvcnQga2V5d29yZCBiZXR3ZWVuIGEgZGVjb3JhdG9yIGFuZCBhIGNsYXNzIGlzIG5vdCBhbGxvd2VkLiBQbGVhc2UgdXNlIGBleHBvcnQgQGRlYyBjbGFzc2AgaW5zdGVhZC5BIHJlcXVpcmVkIGVsZW1lbnQgY2Fubm90IGZvbGxvdyBhbiBvcHRpb25hbCBlbGVtZW50LlR5cGVzY3JpcHQgcGFyYW1ldGVyIHByb3BlcnR5IG11c3QgYmUgYW4gaWRlbnRpZmllciBvciBhc3NpZ25tZW50IHBhdHRlcm5VbmV4cGVjdGVkIHNwYWNlIGJldHdlZW4gIyBhbmQgaWRlbnRpZmllckNvbnN0cnVjdG9yIGNhbid0IGJlIGFuIGFzeW5jIGZ1bmN0aW9uQ2xhc3NlcyBtYXkgbm90IGhhdmUgYSBub24tc3RhdGljIGZpZWxkIG5hbWVkICdjb25zdHJ1Y3RvcidDbGFzc2VzIGNhbid0IGhhdmUgYSBwcml2YXRlIGZpZWxkIG5hbWVkICcjY29uc3RydWN0b3InLicgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgd2l0aCBhIHByaXZhdGUgaWRlbnRpZmllcgAAAJE5JgABAAAAskEmADMAAABDbGFzcyBjb25zdHJ1Y3RvciBjYW4ndCBiZSBhbiBhY2Nlc3Nvci5BIG1ldGhvZCBjYW5ub3QgYmUgcmVhZG9ubHlBIGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBnZW5lcmF0b3JBIGNsYXNzIGNhbiBvbmx5IGhhdmUgb25lIGNvbnN0cnVjdG9yQSBiaW5kaW5nIHBhdHRlcm4gcGFyYW1ldGVyIGNhbm5vdCBiZSBvcHRpb25hbCBpbiBhbiBpbXBsZW1lbnRhdGlvbiBzaWduYXR1cmUuU3VwZXIgY2FsbCBjYW5ub3QgYmUgb3B0aW9uYWxDb25zdHJ1Y3RvciBpbi9hZnRlciBhbiBvcHRpb25hbCBjaGFpbmluZyBpcyBub3QgYWxsb3dlZC5UYWdnZWQgdGVtcGxhdGUgbGl0ZXJhbCBpcyBub3QgYWxsb3dlZCBpbiBvcHRpb25hbCBjaGFpbi5UcmFpbGluZyBjb21tYSBpcyBkaXNhbGxvd2VkIGluc2lkZSBpbXBvcnQoLi4uKSBhcmd1bWVudHNgaW1wb3J0KClgIHJlcXVpcmVzIGV4YWN0bHkgb25lIG9yIHR3byBhcmd1bWVudHNleHBvcnQgZGVmYXVsdCBzdGF0ZW1lbnRzIHJlcXVpcmVkIGZyb20gJy4uLic7YCBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IGBmcm9tYCBjbGF1c2UAADrfJgABAAAA9EMmACYAAABgLi4uYCBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFuIGlkZW50aWZpZXIgaW4gZGVjbGFyYXRpb24gY29udGV4dHNBIG51bWVyaWMgc2VwYXJhdG9yIGlzIG9ubHkgYWxsb3dlZCBiZXR3ZWVuIHR3byBkaWdpdHNBIHN0cmluZyBsaXRlcmFsIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcuCi0gRGlkIHlvdSBtZWFuIGBpbXBvcnQgeyAiIiBhcyBmb28gfWA/AKFEJgBSAAAA80QmAAwAAABBIHN0cmluZyBsaXRlcmFsIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGV4cG9ydGVkIGJpbmRpbmcgd2l0aG91dCBgZnJvbWAuJ2NvbnN0JyBkZWNsYXJhdGlvbnMgbXVzdCBiZSBpbml0aWFsaXplZER1cGxpY2F0ZWQgcmVndWxhciBleHByZXNzaW9uIGZsYWcgJycufkUmACQAAACiRSYAAgAAAFVua25vd24gcmVndWxhciBleHByZXNzaW9uIGZsYWdzLkV4cGVjdGVkIGFuIGlkZW50aWZpZXJFeHBlY3RlZCBhIHNlbWljb2xvblRyYWlsaW5nIGNvbW1hIGlzIG5vdCBhbGxvd2VkQSByZXN0IHBhcmFtZXRlciBtdXN0IGJlIGxhc3QgaW4gYSBwYXJhbWV0ZXIgbGlzdFBhcmFtZXRlciBjYW5ub3QgaGF2ZSBxdWVzdGlvbiBtYXJrIGFuZCBpbml0aWFsaXplcicgbW9kaWZpZXIgbXVzdCBwcmVjZWRlICcnIG1vZGlmaWVyLpE5JgABAAAAgEYmABkAAACZRiYACwAAACcgbW9kaWZpZXIgYWxyZWFkeSBzZWVuLpE5JgABAAAAvEYmABgAAABgZGVjbGFyZWAgbW9kaWZpZXIgY2Fubm90IGFwcGVhciBvbiBjbGFzcyBlbGVtZW50cyBvZiB0aGlzIGtpbmRgZGVjbGFyZWAgbW9kaWZpZXIgbm90IGFsbG93ZWQgZm9yIGNvZGUgYWxyZWFkeSBpbiBhbiBhbWJpZW50IGNvbnRleHRgYXN5bmNgIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIGhlcmVBIHJlc3QgcGFyYW1ldGVyIGNhbm5vdCBiZSBvcHRpb25hbEEgcmVzdCBwYXJhbWV0ZXIgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXJqc2MudGFyZ2V0IHNob3VsZCBiZSBlczUgb3IgdXBwZXIgdG8gdXNlIGdldHRlciAvIHNldHRlckxlZ2FjeSBvY3RhbCBsaXRlcmFscyBhcmUgbm90IGF2YWlsYWJsZSB3aGVuIHRhcmdldGluZyBFQ01BU2NyaXB0IDUgYW5kIGhpZ2hlcicgbW9kaWZpZXIgY2Fubm90IGFwcGVhciBvbiBhIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uAAAAkTkmAAEAAABgSCYANQAAAFR5cGUgcGFyYW1ldGVycyBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb25BbiBpbmRleCBzaWduYXR1cmUgbXVzdCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlclR5cGUgcGFyYW1ldGVyIGxpc3QgY2Fubm90IGJlIGVtcHR5SW52YWxpZCB1c2Ugb2YgJ2FyZ3VtZW50cycgaW4gc3RyaWN0IG1vZGUnZGVsZXRlJyBjYW5ub3QgYmUgY2FsbGVkIG9uIGFuIGlkZW50aWZpZXIgaW4gc3RyaWN0IG1vZGVBICdicmVhaycgc3RhdGVtZW50IGNhbiBvbmx5IGJlIHVzZWQgd2l0aGluIGFuIGVuY2xvc2luZyBpdGVyYXRpb24gb3Igc3dpdGNoIHN0YXRlbWVudFRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhIGBmb3IuLi5vZmAgc3RhdGVtZW50IG1heSBub3QgYmUgYGFzeW5jYEp1bXAgdGFyZ2V0IGNhbm5vdCBjcm9zcyBmdW5jdGlvbiBib3VuZGFyeUV4cHJlc3Npb24gZXhwZWN0ZWR0eXBlIGV4cGVjdGVkRHVwbGljYXRlIGxhYmVsQSAnY29udGludWUnIHN0YXRlbWVudCBjYW4gb25seSBqdW1wIHRvIGEgbGFiZWwgb2YgYW4gZW5jbG9zaW5nIGl0ZXJhdGlvbiBzdGF0ZW1lbnRBICdicmVhaycgc3RhdGVtZW50IGNhbiBvbmx5IGp1bXAgdG8gYSBsYWJlbCBvZiBhbiBlbmNsb3Npbmcgc3RhdGVtZW50VmFyaWFibGUgZGVjbGFyYXRpb24gbGlzdCBjYW5ub3QgYmUgZW1wdHlsaXRlcmFsIGluIGFuIGltcG9ydCB0eXBlIHNob3VsZCBiZSBzdHJpbmcgbGl0ZXJhbEFuIG9iamVjdCBtZW1iZXIgY2Fubm90IGJlIGRlY2xhcmVkIG9wdGlvbmFsQ29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgYXJlIG5vdCBhbGxvd2VkIGluIGVudW1zQSBjb21tYSBleHByZXNzaW9uIGlzIG5vdCBhbGxvd2VkIGluIGEgY29tcHV0ZWQgcHJvcGVydHkgbmFtZWBleHRlbmRzYCBjbGF1c2UgYWxyZWFkeSBzZWVuLidleHRlbmRzJyBjbGF1c2UgbXVzdCBwcmVjZWRlICdpbXBsZW1lbnRzJyBjbGF1c2UuQ2xhc3NlcyBjYW4gb25seSBleHRlbmQgYSBzaW5nbGUgY2xhc3NgaW1wbGVtZW50c2AgY2xhdXNlIGFscmVhZHkgc2VlbkFuIGltcGxlbWVudGF0aW9uIGNhbm5vdCBiZSBkZWNsYXJlZCBpbiBhbWJpZW50IGNvbnRleHRzTW9kaWZpZXJzIGNhbm5vdCBhcHBlYXIgaGVyZU1lcmdlIGNvbmZsaWN0IG1hcmtlciBlbmNvdW50ZXJlZC5UeXBlIGFubm90YXRpb24gY2Fubm90IGFwcGVhciBvbiBhIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uQ2F0Y2ggY2xhdXNlIHZhcmlhYmxlIGNhbm5vdCBoYXZlIGEgdHlwZSBhbm5vdGF0aW9uYGFic3RyYWN0YCBtb2RpZmllciBjYW4gb25seSBhcHBlYXIgb24gYSBjbGFzcyBvciBtZXRob2QgZGVjbGFyYXRpb24nIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIHdpdGggJwAAAJE5JgABAAAA0U0mACAAAACZRiYACwAAAEFic3RyYWN0IG1ldGhvZHMgY2FuIG9ubHkgYXBwZWFyIHdpdGhpbiBhbiBhYnN0cmFjdCBjbGFzcy5BYnN0cmFjdCBtZXRob2QgY2Fubm90IGhhdmUgYW4gaW1wbGVtZW50YXRpb24uQWJzdHJhY3QgcHJvcGVydHkgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXIuJyBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGEgdHlwZSBwYXJhbWV0ZXIAAACROSYAAQAAAKFOJgAsAAAAJyBtb2RpZmllciBjYW4gb25seSBhcHBlYXIgb24gYSB0eXBlIHBhcmFtZXRlciBvZiBhIGNsYXNzLCBpbnRlcmZhY2Ugb3IgdHlwZSBhbGlhcwAAkTkmAAEAAADgTiYAUgAAACcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgdHlwZSBwYXJhbWV0ZXIgb2YgYSBmdW5jdGlvbiwgbWV0aG9kIG9yIGNsYXNzAAAAkTkmAAEAAABETyYATQAAAFRoZSAndHlwZScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgb24gYSBuYW1lZCBpbXBvcnQgd2hlbiAnaW1wb3J0IHR5cGUnIGlzIHVzZWQgb24gaXRzIGltcG9ydCBzdGF0ZW1lbnQuVGhlICd0eXBlJyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCBvbiBhIG5hbWVkIGV4cG9ydCB3aGVuICdleHBvcnQgdHlwZScgaXMgdXNlZCBvbiBpdHMgZXhwb3J0IHN0YXRlbWVudC5BIHBhcmFtZXRlciBwcm9wZXJ0eSBpcyBvbmx5IGFsbG93ZWQgaW4gYSBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvbkEgcGFyYW1ldGVyIGluaXRpYWxpemVyIGlzIG9ubHkgYWxsb3dlZCBpbiBhIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGFuIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBtdXN0IGJlIGEgdmFyaWFibGUgb3IgYSBwcm9wZXJ0eSBhY2Nlc3MuVGhlICd3aXRoJyBzdGF0ZW1lbnQgaXMgbm90IHN1cHBvcnRlZC4gQWxsIHN5bWJvbHMgaW4gYSAnd2l0aCcgYmxvY2sgd2lsbCBoYXZlIHR5cGUgJ2FueScuSW52YWxpZCBjbGFzcyBuYW1laW50ZXJmYWNlIG5hbWUgaXMgaW52YWxpZEFuIGVudW0gbWVtYmVyIGNhbm5vdCBoYXZlIGEgbnVtZXJpYyBuYW1lVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgJ2Zvci4uLm9mJyBzdGF0ZW1lbnQgY2Fubm90IHVzZSBhIHR5cGUgYW5ub3RhdGlvblRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhICdmb3IuLi5pbicgc3RhdGVtZW50IGNhbm5vdCBiZSBhIGRlc3RydWN0dXJpbmcgcGF0dGVybkFuIGludGVyZmFjZSBjYW4gb25seSBleHRlbmQgYW4gaWRlbnRpZmllci9xdWFsaWZpZWQtbmFtZSB3aXRoIG9wdGlvbmFsIHR5cGUgYXJndW1lbnRzLlRoZSBvcGVyYW5kIG9mIGEgZGVsZXRlIG9wZXJhdG9yIG11c3QgYmUgYSBwcm9wZXJ0eSByZWZlcmVuY2UuVGhpcyBtZW1iZXIgY2Fubm90IGhhdmUgYW4gJ292ZXJyaWRlJyBtb2RpZmllciBiZWNhdXNlIGl0cyBjb250YWluaW5nIGNsYXNzIGRvZXMgbm90IGV4dGVuZCBhbm90aGVyIGNsYXNzLkRlY29yYXRvcnMgbWF5IG5vdCBhcHBlYXIgYWZ0ZXIgYGV4cG9ydGAgb3IgYGV4cG9ydCBkZWZhdWx0YCBpZiB0aGV5IGFsc28gYXBwZWFyIGJlZm9yZSBgZXhwb3J0YC5BbiBhY2Nlc3NpYmlsaXR5IG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIHdpdGggYSBwcml2YXRlIGlkZW50aWZpZXIuVHlwZSBhbm5vdGF0aW9ucyBtdXN0IGNvbWUgYmVmb3JlIGRlZmF1bHQgYXNzaWdubWVudHNUeXBlc2NyaXB0IG5vbi1udWxsIGFzc2VydGlvbiBvcGVyYXRvciBpcyBub3QgYWxsb3dlZCB3aXRoICcAf1QmADwAAACROSYAAQAAAFRoaXMgc3ludGF4IGlzIHJlc2VydmVkIGluIGZpbGVzIHdpdGggdGhlIC5tdHMgb3IgLmN0cyBleHRlbnNpb24uIFVzZSBhbiBgYXNgIGV4cHJlc3Npb24gaW5zdGVhZC5UaGlzIHN5bnRheCBpcyByZXNlcnZlZCBpbiBmaWxlcyB3aXRoIHRoZSAubXRzIG9yIC5jdHMgZXh0ZW5zaW9uLiBBZGQgYSB0cmFpbGluZyBjb21tYSwgYXMgaW4gYDxULD4oKSA9PiAuLi5gLlR5cGUgYXJndW1lbnQgbGlzdCBjYW5ub3QgYmUgZW1wdHkuVGhpcyBpcyB0aGUgZXhwcmVzc2lvbiBwYXJ0IG9mIGFuIGV4cHJl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AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBPT09PTw8PDw8ID4+Pj4gY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvbW9kLnJzAADPYiYAJwAAAHEBAAAWAAAAKC4mADUAAADRAAAAFAAAAM9iJgAnAAAA2AEAACgAAADPYiYAJwAAAOQBAAAeAAAAz2ImACcAAACYAAAAFQAAAEBXJgAzAAAAMQAAABcAAABAVyYAMwAAADYAAAAeAAAAz2ImACcAAACTAgAAJgAAAM9iJgAnAAAA/AIAACoAAABmYWlsZWQgdG8gcGFyc2UgZmxvYXQgbGl0ZXJhbAAAAM9iJgAnAAAATAQAABkAAADPYiYAJwAAAPsDAABWAAAAz2ImACcAAACtBAAAPgAAAA/OJgABAAAAp80mAAEAAADPYiYAJwAAAO4EAAAlAAAAz2ImACcAAADvBAAANQAAAGZhaWxlZCB0byBwYXJzZSBudW1iZXIgYXMgY2hhcgAAz2ImACcAAADQBAAADgAAAGZhaWxlZCB0byBwYXJzZSBzdHJpbmcgYXMgbnVtYmVyz2ImACcAAADOBAAALwAAADQgaGV4IGNoYXJhY3RlcnMxLTYgaGV4IGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIDAgdG8gMTBGRkZGLjEtNiBoZXggY2hhcmFjdGVyczIgaGV4IGNoYXJhY3RlcnMAAM9iJgAnAAAAYAYAADkAAABcdQAA2GQmAAIAAAACAAAAAAAAAAAABAAAAAAAAAAAACAAAOl8fHx8fCAAAM9iJgAnAAAAZggAACAAAADPYiYAJwAAAKsIAAAmAAAAAQAAAAAAAADf5SYAAQAAAAEAAAAAAAAAxeUmAAEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBVc2luZyBpcyBub3QgYSB2YWxpZCBkZWNsYXJhdGlvbiBmb3IgYGRlY2xhcmVgIGtleXdvcmREZSYAYAAAAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci90eXBlc2NyaXB0LnJzAKxlJgAvAAAALAAAABwAAABFb2ZEZWNsTm90QWxsb3dlZFVzaW5nRGVjbE5vdEFsbG93ZWRVc2luZ0RlY2xOb3RBbGxvd2VkRm9yRm9ySW5Mb29wVXNpbmdEZWNsTm90RW5hYmxlZEludmFsaWROYW1lSW5Vc2luZ0RlY2xJbml0UmVxdWlyZWRGb3JVc2luZ0RlY2xQcml2YXRlTmFtZUluSW50ZXJmYWNlSW52YWxpZFN1cGVyQ2FsbEludmFsaWRTdXBlckludmFsaWRTdXBlclByaXZhdGVOYW1lSW52YWxpZE5ld1RhcmdldEludmFsaWRJbXBvcnRBcnJvd05vdEFsbG93ZWRFeHBvcnROb3RBbGxvd2VkR2V0dGVyU2V0dGVyQ2Fubm90QmVSZWFkb25seUdldHRlclNldHRlckNhbm5vdEJlT3B0aW9uYWxHZXR0ZXJQYXJhbVNldHRlclBhcmFtVG9wTGV2ZWxBd2FpdEluU2NyaXB0TGVnYWN5RGVjaW1hbExlZ2FjeU9jdGFsSW52YWxpZElkZW50Q2hhckV4cGVjdGVkRGlnaXRyYWRpeFNldHRlclBhcmFtUmVxdWlyZWRSZXN0UGF0SW5TZXR0ZXJVbnRlcm1pbmF0ZWRCbG9ja0NvbW1lbnRVbnRlcm1pbmF0ZWRTdHJMaXRFeHBlY3RlZFVuaWNvZGVFc2NhcGVFc2NhcGVJblJlc2VydmVkV29yZHdvcmRVbnRlcm1pbmF0ZWRSZWdFeHBVbnRlcm1pbmF0ZWRUcGxJZGVudEFmdGVyTnVtVW5leHBlY3RlZENoYXJJbnZhbGlkU3RyRXNjYXBlSW52YWxpZFVuaWNvZGVFc2NhcGVCYWRDaGFyYWN0ZXJFc2NhcGVTZXF1ZW5jZWV4cGVjdGVkTnVtTGl0VGVybWluYXRlZFdpdGhFeHBMZWdhY3lDb21tZW50SW5Nb2R1bGVJbnZhbGlkSWRlbnRJblN0cmljdEludmFsaWRJZGVudEluQXN5bmNFdmFsQW5kQXJndW1lbnRzSW5TdHJpY3RBcmd1bWVudHNJbkNsYXNzRmllbGRJbGxlZ2FsTGFuZ3VhZ2VNb2RlRGlyZWN0aXZlVW5hcnlJbkV4cGxlZnRfc3Bhbkhhc2hMaW5lQnJlYWtJblRocm93TGluZUJyZWFrQmVmb3JlQXJyb3dVbmV4cGVjdGVkZ290VW5leHBlY3RlZFRva2VuV2l0aFN1Z2dlc3Rpb25zY2FuZGlkYXRlX2xpc3RSZXNlcnZlZFdvcmRJbkltcG9ydEFzc2lnblByb3BlcnR5RXhwZWN0ZWRFeHBlY3RlZFNlbWlGb3JFeHByU3RtdEF3YWl0U3RhclJlc2VydmVkV29yZEluT2JqU2hvcnRoYW5kT3JQYXROdWxsaXNoQ29hbGVzY2luZ1dpdGhMb2dpY2FsT3BNdWx0aXBsZURlZmF1bHRwcmV2aW91c0NvbW1hQWZ0ZXJSZXN0RWxlbWVudE5vbkxhc3RSZXN0UGFyYW1TcHJlYWRJblBhcmVuRXhwckVtcHR5UGFyZW5FeHBySW52YWxpZFBhdEludmFsaWRFeHByTm90U2ltcGxlQXNzaWduSW52YWxpZEFzc2lnblRhcmdldEV4cGVjdGVkSWRlbnRFeHBlY3RlZFNlbWlEdXBsaWNhdGVMYWJlbEFzeW5jR2VuZXJhdG9yTm9uVG9wTGV2ZWxJbXBvcnRFeHBvcnRJbXBvcnRFeHBvcnRJblNjcmlwdEltcG9ydE1ldGFJblNjcmlwdFBhdFZhcldpdGhvdXRJbml0V2l0aEluU3RyaWN0UmV0dXJuTm90QWxsb3dlZFRvb01hbnlWYXJJbkZvckluSGVhZFZhckluaXRpYWxpemVySW5Gb3JJbkhlYWRMYWJlbGxlZEdlbmVyYXRvck9yQXN5bmNMYWJlbGxlZEZ1bmN0aW9uSW5TdHJpY3RZaWVsZFBhcmFtSW5HZW5Bd2FpdFBhcmFtSW5Bc3luY0F3YWl0Rm9yU3RtdEF3YWl0SW5GdW5jdGlvblVudGVybWluYXRlZEpTWENvbnRlbnRzRW1wdHlKU1hBdHRySW52YWxpZEpTWFZhbHVlSlNYRXhwZWN0ZWRDbG9zaW5nVGFnRm9yTHRHdEpTWEV4cGVjdGVkQ2xvc2luZ1RhZ0ludmFsaWRMZWFkaW5nRGVjb3JhdG9yRGVjb3JhdG9yT25FeHBvcnRUc1JlcXVpcmVkQWZ0ZXJPcHRpb25hbFRzSW52YWxpZFBhcmFtUHJvcFBhdFNwYWNlQmV0d2Vlbkhhc2hBbmRJZGVudEFzeW5jQ29uc3RydWN0b3JQcm9wZXJ0eU5hbWVkQ29uc3RydWN0b3JQcml2YXRlQ29uc3RydWN0b3JQcml2YXRlTmFtZU1vZGlmaWVyQ29uc3RydWN0b3JBY2Nlc3NvclJlYWRPbmx5TWV0aG9kR2VuZXJhdG9yQ29uc3RydWN0b3JEdXBsaWNhdGVDb25zdHJ1Y3RvclRzQmluZGluZ1BhdENhbm5vdEJlT3B0aW9uYWxTdXBlckNhbGxPcHRpb25hbE9wdENoYWluQ2Fubm90Rm9sbG93Q29uc3RydWN0b3JDYWxsVGFnZ2VkVHBsSW5PcHRDaGFpblRyYWlsaW5nQ29tbWFJbnNpZGVJbXBvcnRJbXBvcnRSZXF1aXJlc09uZU9yVHdvQXJnc0V4cG9ydERlZmF1bHRXaXRoT3V0RnJvbUV4cG9ydEV4cGVjdEZyb21Eb3RzV2l0aG91dElkZW50aWZpZXJOdW1lcmljU2VwYXJhdG9ySXNBbGxvd2VkT25seUJldHdlZW5Ud29EaWdpdHNJbXBvcnRCaW5kaW5nSXNTdHJpbmdFeHBvcnRCaW5kaW5nSXNTdHJpbmdDb25zdERlY2xhcmF0aW9uc1JlcXVpcmVJbml0aWFsaXphdGlvbkR1cGxpY2F0ZWRSZWdFeHBGbGFnc1Vua25vd25SZWdFeHBGbGFnc1RTMTAwM1RTMTAwNVRTMTAwOVRTMTAxNFRTMTAxNVRTMTAyOVRTMTAzMFRTMTAzMVRTMTAzOFRTMTA0MlRTMTA0N1RTMTA0OFRTMTA1NlRTMTA4NVRTMTA4OVRTMTA5MlRTMTA5NlRTMTA5OFRTMTEwMFRTMTEwMlRTMTEwNVRTMTEwNlRTMTEwN1RTMTEwOVRTMTExMFRTMTExNFRTMTExNVRTMTExNlRTMTEyM1RTMTE0MVRTMTE2MlRTMTE2NFRTMTE3MVRTMTE3MlRTMTE3M1RTMTE3NFRTMTE3NVRTMTE4M1RTMTE4NFRTMTE4NVRTMTA5M1RTMTE5NlRTMTI0MlRTMTI0M1RTMTI0NFRTMTI0NVRTMTI2N1RTMTI3M1RTMTI3NFRTMTI3N1RTMjIwNlRTMjIwN1RTMjM2OVRTMjM3MVRTMjQwNlRTMjQxMFRTMjQxNFRTMjQyN1RTMjQ1MlRTMjQ4M1RTMjQ5MVRTMjQ5OVRTMjcwM1RTNDExMlRTODAzOFRTMTgwMTBUU1R5cGVBbm5vdGF0aW9uQWZ0ZXJBc3NpZ25Uc05vbk51bGxBc3NlcnRpb25Ob3RBbGxvd2VkV2l0aExhYmVsaW5uZXJub3RlUmVzZXJ2ZWRUeXBlQXNzZXJ0aW9uUmVzZXJ2ZWRBcnJvd1R5cGVQYXJhbUVtcHR5VHlwZUFyZ3VtZW50TGlzdHF1b3RhbXBhcG9zbHRndG5ic3BpZXhjbGNlbnRwb3VuZGN1cnJlbnllbmJydmJhcnNlY3R1bWxjb3B5b3JkZmxhcXVvbm90c2h5cmVnbWFjcmRlZ3BsdXNtbnN1cDJzdXAzYWN1dGVtaWNyb3BhcmFtaWRkb3RjZWRpbHN1cDFvcmRtcmFxdW9mcmFjMTRmcmFjMTJmcmFjMzRpcXVlc3RBZ3JhdmVBYWN1dGVBY2lyY0F0aWxkZUF1bWxBcmluZ0FFbGlnQ2NlZGlsRWdyYXZlRWFjdXRlRWNpcmNFdW1sSWdyYXZlSWFjdXRlSWNpcmNJdW1sRVRITnRpbGRlT2dyYXZlT2FjdXRlT2NpcmNPdGlsZGVPdW1sdGltZXNPc2xhc2hVZ3JhdmVVYWN1dGVVY2lyY1V1bWxZYWN1dGVUSE9STnN6bGlnYWdyYXZlYWFjdXRlYWNpcmNhdGlsZGVhdW1sYXJpbmdhZWxpZ2NjZWRpbGVncmF2ZWVhY3V0ZWVjaXJjZXVtbGlncmF2ZWlhY3V0ZWljaXJjaXVtbGV0aG50aWxkZW9ncmF2ZW9hY3V0ZW9jaXJjb3RpbGRlb3VtbGRpdmlkZW9zbGFzaHVncmF2ZXVhY3V0ZXVjaXJjdXVtbHlhY3V0ZXRob3JueXVtbE9FbGlnb2VsaWdTY2Fyb25zY2Fyb25ZdW1sZm5vZmNpcmN0aWxkZUFscGhhQmV0YUdhbW1hRGVsdGFFcHNpbG9uWmV0YUV0YVRoZXRhSW90YUthcHBhTGFtYmRhTXVOdVhpT21pY3JvblBpUmhvU2lnbWFUYXVVcHNpbG9uUGhpQ2hpUHNpT21lZ2FhbHBoYWJldGFnYW1tYWRlbHRhZXBzaWxvbnpldGFldGF0aGV0YWlvdGFrYXBwYWxhbWJkYW11bnV4aW9taWNyb25waXJob3NpZ21hZnNpZ21hdGF1dXBzaWxvbnBoaWNoaXBzaW9tZWdhdGhldGFzeW11cHNpaHBpdmVuc3BlbXNwdGhpbnNwenduanp3amxybXJsbW5kYXNobWRhc2hsc3F1b3JzcXVvc2JxdW9sZHF1b3JkcXVvYmRxdW9kYWdnZXJEYWdnZXJidWxsaGVsbGlwcGVybWlscHJpbWVQcmltZWxzYXF1b3JzYXF1b29saW5lZnJhc2xldXJvaW1hZ2V3ZWllcnByZWFsdHJhZGVhbGVmc3ltbGFycnVhcnJyYXJyZGFycmhhcnJjcmFycmxBcnJ1QXJyckFycmRBcnJoQXJyZm9yYWxscGFydGV4aXN0ZW1wdHluYWJsYWlzaW5ub3Rpbm5pcHJvZHN1bW1pbnVzbG93YXN0cmFkaWNpbmZpbmFuZ2FuZG9yY2FwY3VwaW50dGhlcmU0c2ltY29uZ2FzeW1wbmVlcXVpdmxlZ2VzdWJzdXBuc3Vic3ViZXN1cGVvcGx1c290aW1lc3BlcnBzZG90bGNlaWxyY2VpbGxmbG9vcnJmbG9vcmxhbmdyYW5nbG96c3BhZGVzY2x1YnNoZWFydHNkaWFtc3EFAABxBQAAcQUAAHEFAABxBQAAcQUAAHEFAABxBQAAcQUAAHEFAABxBQAAcQUAAHEFAABxBQAAcQUAAHEFAABxBQAAcQUAAHEFAABxBQAAcQUAAHEFAABxBQAAcQUAAHEFAABxBQAAcQUAAHEFAABxBQAAcQUAAHEFAABxBQAAcQUAAHIFAABzBQAAdAUAAHUFAAB2BQAAdwUAAHMFAAB4BQAAeQUAAHoFAAB7BQAAfAUAAH0FAAB+BQAAfwUAAIAFAACBBQAAgQUAAIEFAACBBQAAgQUAAIEFAACBBQAAgQUAAIEFAACCBQAAgwUAAIQFAACFBQAAhgUAAIcFAACIBQAAdQUAAHUFAAB1BQAAdQUAAHUFAAB1BQAAdQUAAHUFAAB1BQAAdQUAAHUFAAB1BQAAdQUAAHUFAAB1BQAAdQUAAHUFAAB1BQAAdQUAAHUFAAB1BQAAdQUAAHUFAAB1BQAAdQUAAHUFAACJBQAAdQUAAIoFAACLBQAAdQUAAIwFAACNBQAAjgUAAI8FAACQBQAAkQUAAJIFAACTBQAAdQUAAJQFAAB1BQAAlQUAAJYFAACXBQAAmAUAAJkFAACaBQAAdQUAAJsFAACcBQAAnQUAAJ4FAACfBQAAoAUAAHUFAAChBQAAdQUAAKIFAACjBQAApAUAAKUFAABxBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAACmBQAApgUAAKYFAABXb3JkVGVtcGxhdGVKc3hUZXh0AKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKgFAACpBQAAqAUAAKgFAACpBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAAqAUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAAqgUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAApwUAAKcFAACnBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAACrBQAAqwUAAKsFAABtZXNzYWdlc3RydWN0IFRzU3ludGF4L2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2NvbW1vbi9zcmMvc3ludGF4X3Bvcy9oeWdpZW5lLnJzAJZ9JgBFAAAA0AEAADYAAABjYWxsZWQgZXhwZWN0IG9uIAAAAOx9JgARAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfYXN0L3NyYy9wYXQucnMIfiYAOAAAAA0AAAAUAAAAc3BhblN0ckJvb2xOdW1CaWdJbnRSZWdleEpTWFRleHQAAAAACAAAAAQAAAAAAQAAdmFsdWVyYXdUcGxleHByc3F1YXNpcwAAAAAAAAQAAAAEAAAAoQEAAFByaXZhdGVQdWJsaWNUaGlzVW5hcnlVcGRhdGVCaW5NZW1iZXJTdXBlclByb3BDb25kQ2FsbE5ld1NlcUxpdFRhZ2dlZFRwbEFycm93WWllbGRNZXRhUHJvcEF3YWl0UGFyZW5KU1hNZW1iZXJKU1hOYW1lc3BhY2VkTmFtZUpTWEVtcHR5SlNYRWxlbWVudEpTWEZyYWdtZW50VHNUeXBlQXNzZXJ0aW9uVHNDb25zdEFzc2VydGlvblRzTm9uTnVsbFRzQXNUc0luc3RhbnRpYXRpb25Uc1NhdGlzZmllc1ByaXZhdGVOYW1lT3B0Q2hhaW5leHBmbGFnc1Nob3J0aGFuZEtleVZhbHVlR2V0dGVyU2V0dGVyTWV0aG9kQmxvY2tFbXB0eURlYnVnZ2VyV2l0aFJldHVybkxhYmVsZWRCcmVha0NvbnRpbnVlSWZTd2l0Y2hUaHJvd1RyeVdoaWxlRG9XaGlsZUZvckZvckluRm9yT2ZEZWNsU3VwZXJOdW1iZXIAAAAAAAQAAAAEAAAAmwEAAEAFAAAMAAAABAAAADkDAABBBQAADAAAAAQAAACwBQAAsQUAAAQAAAAEAAAAqAIAAAAAAAABAAAAAQAAAFEBAABEBQAABAAAAAQAAAAJAwAARQUAAAQAAAAEAAAApQIAAAAAAAAEAAAABAAAALIFAABjdHh0ZGVjb3JhdG9yc2JvZHlzdXBlcl9jbGFzc2lzX2Fic3RyYWN0dHlwZV9wYXJhbXNzdXBlcl90eXBlX3BhcmFtc1B+JgAEAAAAsIAmAAQAAAC0gCYACgAAAL6AJgAEAAAAwoAmAAsAAADNgCYACwAAANiAJgALAAAA44AmABEAAABB6SYACgAAAEcFAAAYAAAACAAAAPIBAABGbkRlY2xpZGVudEltcG9ydEZuRXhwcgAAAAAABAAAAAQAAABTAwAAcGhhc2VzeW1vcHRpb25hbEpTWEF0dHJuYW1lSlNYRW1wdHlFeHByAAAAAAAEAAAABAAAAHYCAABSZXN0UGF0ZG90M190b2tlbmFyZ3R5cGVfYW5uswUAAAQAAAAEAAAAmwIAAElmU3RtdHRlc3Rjb25zYWx0VmFyRGVjbGtpbmRkZWNsc0JpbkV4cHJvcGxlZnRyaWdodE5ld0V4cHJjYWxsZWVhcmdzdHlwZV9hcmdzT3B0Q2FsbFNlcUV4cHJBcnJheVBhdGVsZW1zVXNpbmdEZWNsUGF0Rm9yU3RtdGluaXR1cGRhdGVUcnlTdG10YmxvY2toYW5kbGVyZmluYWxpemVyQXJyYXlMaXRDYWxsRXhwckNvbmRFeHByVGhpc0V4cHJKU1hNZW1iZXJFeHByQXNzaWduUGF0T2JqZWN0UGF0cHJvcHNDb21wdXRlZEV4cHJTdG10ZXhwcldpdGhTdG10b2JqQ2xhc3NEZWNsaXNfYXdhaXQAAABJBQAADAAAAAQAAAC0BQAAtQUAAAQAAAAEAAAAtgUAAHBhcmFtc2lzX2FzeW5jaXNfZ2VuZXJhdG9ycmV0dXJuX3R5cGUAAABQfiYABAAAALCAJgAEAAAAEIMmAAYAAAC+gCYABAAAABaDJgAIAAAAHoMmAAwAAADYgCYACwAAACqDJgALAAAAQXJyb3dFeHByQXdhaXRFeHByQ2xhc3NFeHByT2JqZWN0TGl0UGFyZW5FeHBydGFndHBsVW5hcnlFeHByWWllbGRFeHByZGVsZWdhdGVQYXJhbXBhdG9wZW5pbmdjaGlsZHJlbmNsb3NpbmdCbG9ja1N0bXRzdG10c0JyZWFrU3RtdGxhYmVsRW1wdHlTdG10Rm9ySW5TdG10Rm9yT2ZTdG10VGhyb3dTdG10V2hpbGVTdG10twUAACAAAAAIAAAA3wIAALgFAAAEAAAABAAAAOACAAAAAAAAAQAAAAEAAAC5BQAAa2V5aXNfc3RhdGljYWNjZXNzaWJpbGl0eWlzX29wdGlvbmFsaXNfb3ZlcnJpZGVkZWZpbml0ZQBQfiYABAAAAFyEJgADAAAAgH4mAAUAAADAgSYACAAAAF+EJgAJAAAAtIAmAAoAAABohCYADQAAAM2AJgALAAAAdYQmAAsAAACAhCYACwAAAGLTJgAIAAAAPtMmAAcAAACLhCYACAAAAENsYXNzUHJvcERlY29yYXRvckFzc2lnbkV4cHJNZW1iZXJFeHBycHJvcFRwbEVsZW1lbnR0YWlsY29va2VkVXBkYXRlRXhwcnByZWZpeElkZW50TmFtZUFzc2lnblByb3BHZXR0ZXJQcm9wTWV0aG9kUHJvcFNldHRlclByb3B0aGlzX3BhcmFtcGFyYW1SZXR1cm5TdG10U3dpdGNoQ2FzZVN3aXRjaFN0bXRkaXNjcmltaW5hbnRjYXNlc0pTWEV4cHJDb250YWluZXJDYXRjaENsYXVzZURvV2hpbGVTdG10TGFiZWxlZFN0bXRDb25zdHJ1Y3RvclByaXZhdGVNZXRob2RQcml2YXRlUHJvcFRzSW5kZXhTaWduYXR1cmVTdGF0aWNCbG9ja0F1dG9BY2Nlc3NvcroFAAAEAAAABAAAALsFAAAAAAAAAQAAAAEAAAC8BQAAUH4mAAQAAABchCYAAwAAAJHoJgAIAAAA8IEmAAQAAABfhCYACQAAAGiEJgANAAAAzYAmAAsAAAB1hCYACwAAAICEJgALAAAAQ2xhc3NNZXRob2QAUwUAAAwAAAAEAAAAvQUAAFUFAAAYAAAABAAAAL4FAABQfiYABAAAALCAJgAEAAAAXIQmAAMAAAAQgyYABgAAAL6AJgAEAAAAaIQmAA0AAAB1hCYACwAAAFcFAAAQAAAACAAAAFgFAABQfiYABAAAALCAJgAEAAAAXIQmAAMAAACAfiYABQAAAMCBJgAIAAAAX4QmAAkAAAC0gCYACgAAAGiEJgANAAAAdYQmAAsAAACAhCYACwAAAGLTJgAIAAAAi4QmAAgAAABTaW1wbGVFeHByT3JTcHJlYWRzcHJlYWRNZXRhUHJvcEV4cHJPcHRDaGFpbkV4cHJiYXNlU3ByZWFkUHJvcAAAWQUAAAwAAAAEAAAAvwUAABCDJgAGAAAAtIAmAAoAAABQfiYABAAAALCAJgAEAAAAvoAmAAQAAAAegyYADAAAABaDJgAIAAAA2IAmAAsAAAAqgyYACwAAAEZ1bmN0aW9uTW9kdWxlRGVjbFN0bXRBc3NpZ25QYXRQcm9wS2V5VmFsdWVQcm9wQ29udGludWVTdG10RGVidWdnZXJTdG10VHNLZXl3b3JkVHlwZVRzVGhpc1R5cGVUc0ZuT3JDb25zdHJ1Y3RvclR5cGVUc1R5cGVSZWZUc1R5cGVRdWVyeVRzVHlwZUxpdFRzQXJyYXlUeXBlVHNUdXBsZVR5cGVUc09wdGlvbmFsVHlwZVRzUmVzdFR5cGVUc1VuaW9uT3JJbnRlcnNlY3Rpb25UeXBlVHNDb25kaXRpb25hbFR5cGVUc0luZmVyVHlwZVRzUGFyZW50aGVzaXplZFR5cGVUc1R5cGVPcGVyYXRvclRzSW5kZXhlZEFjY2Vzc1R5cGVUc01hcHBlZFR5cGVUc0xpdFR5cGVUc1R5cGVQcmVkaWNhdGVUc0ltcG9ydFR5cGUAwAUAACAAAAAIAAAAwQUAAFB+JgAEAAAAXIQmAAMAAACAfiYABQAAAMCBJgAIAAAAX4QmAAkAAAC0gCYACgAAAGiEJgANAAAAzYAmAAsAAACAhCYACwAAAIuEJgAIAAAAVmFyRGVjbGFyYXRvclNwcmVhZEVsZW1lbnRTdXBlclByb3BFeHByQmluZGluZ0lkZW50aWRKU1hTcHJlYWRDaGlsZEtleVZhbHVlUGF0UHJvcFRzQXNFeHByAABdBQAADAAAAAQAAAAnAwAAVHNGblR5cGVsaXRUc1R5cGVBbm5tZW1iZXJzdHlwZV9uYW1lSlNYQ2xvc2luZ0VsZW1lbnRuc0pTWE9wZW5pbmdFbGVtZW50YXR0cnNzZWxmX2Nsb3NpbmcAAABeBQAABAAAAAQAAACiAQAARXhwb3J0QWxsc3JjdHlwZV9vbmx5Q29tcHV0ZWRQcm9wTmFtZVRzRW51bURlY2xpc19jb25zdEpTWENsb3NpbmdGcmFnbWVudEpTWE9wZW5pbmdGcmFnbWVudEV4cG9ydERlY2xkZWNsAAAAXwUAAAwAAAAEAAAAYAUAAGEFAAAEAAAABAAAAMIFAABzcGVjaWZpZXJzAABQfiYABAAAACSLJgAKAAAAoYomAAMAAACkiiYACQAAADXmJgAEAAAAdIEmAAUAAABJbXBvcnREZWNsRXhwb3J0TmFtZWRFeHBvcnREZWZhdWx0RGVjbEV4cG9ydERlZmF1bHRFeHByVHNJbXBvcnRFcXVhbHNUc0V4cG9ydEFzc2lnbm1lbnRUc05hbWVzcGFjZUV4cG9ydGVsZW1fdHlwZXR5cGVfcGFyYW1Uc0VudGl0eU5hbWVUc0V4dGVybmFsTW9kdWxlUmVmAAAAAAAABAAAAAQAAADDBQAAUH4mAAQAAAC0gCYACgAAAGiEJgANAAAAgIQmAAsAAABi0yYACAAAAIWFJgAFAAAAVHNQYXJhbVByb3BlbGVtX3R5cGVzAAAAxAUAAAQAAAAEAAAAxQUAAAAAAAAEAAAABAAAAMYFAABpc19pbmlzX291dGNvbnN0cmFpbnQAAABQfiYABAAAAIuBJgAEAAAAdIwmAAUAAAB5jCYABgAAAMeKJgAIAAAAf4wmAAoAAABc5yYABwAAAFRzVHlwZVBhcmFtZXhwcl9uYW1lVHNVbmlvblR5cGV0eXBlc1RzSW50ZXJmYWNlRGVjbEV2YWx1YXRpb25Tb3VyY2VEZWZlck5hbWVkRXhwb3J0VHNRdWFsaWZpZWROYW1lVHNFbnVtTWVtYmVycXVhbGlmaWVyYXR0cmlidXRlcwAAAAAAAAABAAAAAQAAAMcFAADIBQAAMAAAAAgAAADJBQAAbmFtZV90eXBlAAAAUH4mAAQAAABi0yYACAAAANGLJgAKAAAAaI0mAAkAAAB8gSYACAAAAMCBJgAIAAAAagUAACAAAAAIAAAAIwIAAAAAAAAEAAAABAAAAMoFAABQfiYABAAAAD7TJgAHAAAARdMmAAYAAACv0iYACQAAAPOJJgACAAAAvoAmAAQAAABUc01vZHVsZURlY2xUc1RwbExpdFR5cGVQcm90ZWN0ZWRUcnVlUGx1c01pbnVzVHNNb2R1bGVCbG9ja1RzTm9uTnVsbEV4cHJUc0NhbGxTaWduYXR1cmVEZWNsVHNDb25zdHJ1Y3RTaWduYXR1cmVEZWNsVHNQcm9wZXJ0eVNpZ25hdHVyZVRzR2V0dGVyU2lnbmF0dXJlVHNTZXR0ZXJTaWduYXR1cmVUc01ldGhvZFNpZ25hdHVyZVRzVHVwbGVFbGVtZW50dHlUc0ludGVyZmFjZUJvZHlsBQAADAAAAAQAAADLBQAAAAAAAAQAAAAEAAAAzAUAAFB+JgAEAAAA84kmAAIAAAA+0yYABwAAANiAJgALAAAA1+UmAAcAAAC+gCYABAAAAFRzTmFtZXNwYWNlRGVjbFRzU2F0aXNmaWVzRXhwclRzVHlwZUFsaWFzRGVjbFRzVHlwZVBhcmFtRGVjbHBhcmFtX25hbWVOYW1lc3BhY2VEZWZhdWx0TmFtZWRjaGVja190eXBlZXh0ZW5kc190eXBldHJ1ZV90eXBlZmFsc2VfdHlwZVRzQ29uc3RydWN0b3JUeXBlY29tcHV0ZWRUc0FueUtleXdvcmRUc1Vua25vd25LZXl3b3JkVHNOdW1iZXJLZXl3b3JkVHNPYmplY3RLZXl3b3JkVHNCb29sZWFuS2V5d29yZFRzQmlnSW50S2V5d29yZFRzU3RyaW5nS2V5d29yZFRzU3ltYm9sS2V5d29yZFRzVm9pZEtleXdvcmRUc1VuZGVmaW5lZEtleXdvcmRUc051bGxLZXl3b3JkVHNOZXZlcktleXdvcmRUc0ludHJpbnNpY0tleXdvcmQAAAAABAAAAAQAAAAoAwAAUH4mAAQAAABchCYAAwAAALGPJgAIAAAAfIEmAAgAAAAQgyYABgAAAMCBJgAIAAAA2IAmAAsAAABUc0V4cHJXaXRoVHlwZUFyZ3NUc0ltcG9ydEVxdWFsc0RlY2xpc19leHBvcnRpc190eXBlX29ubHltb2R1bGVfcmVmVHNJbnRlcnNlY3Rpb25UeXBlVHNJbXBvcnRDYWxsT3B0aW9uc29ial90eXBlaW5kZXhfdHlwZQAAUH4mAAQAAABi0yYACAAAAFyEJgADAAAAsY8mAAgAAAB8gSYACAAAAMCBJgAIAAAARXhwb3J0TmFtZWRTcGVjaWZpZXJvcmlnZXhwb3J0ZWRJbXBvcnROYW1lZFNwZWNpZmllcmxvY2FsaW1wb3J0ZWRUc05hbWVzcGFjZUV4cG9ydERlY2xJbXBvcnRTdGFyQXNTcGVjaWZpZXJFeHBvcnREZWZhdWx0U3BlY2lmaWVySW1wb3J0RGVmYXVsdFNwZWNpZmllcgB67SYASgAAAKgBAAAfAAAAVHNUeXBlUGFyYW1JbnN0YW50aWF0aW9uRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW5kZXhtYXAtMi4xMi4wL3NyYy9tYXAvY29yZS5yc0iSJgBkAAAAOwAAACMAAABpbmRleCBub3QgZm91bmQASJImAGQAAABLAAAACgAAAEiSJgBkAAAAGgIAAA0AAABIkiYAZAAAAKICAAAsAAAASJImAGQAAAB6AgAAIgAAAGFzc2VydGlvbiBmYWlsZWQ6IGluZGljZXMuY2FwYWNpdHkoKSAtIGluZGljZXMubGVuKCkgPj0gZW50cmllcy5sZW4oKQAAAEiSJgBkAAAAVAAAAAUAAABIkiYAZAAAAFYAAABEAAAASJImAGQAAABMAQAAFgAAAEiSJgBkAAAAWAEAADgAAABIkiYAZAAAAMgBAAA0AAAASJImAGQAAAAzAAAADwAAAMW0JgA6AAAAdwYAABQAAABjcmF0ZXMvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlL3NyYy9maXhlci5yc8STJgAsAAAAxgAAAEAAAADEkyYALAAAAG8DAAAjAAAAxJMmACwAAAB/AwAAMQAAAMSTJgAsAAAAiwMAACkAAABjcmF0ZXMvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlL3NyYy9oZWxwZXJzL21vZC5yc0Bzd2MvaGVscGVycy9fL18AAGKUJgAQAAAAY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS9zcmMvcmVuYW1lL2FuYWx5emVyL3JldmVyc2VfbWFwLnJzAAB8lCYAQgAAAA4AAAAsAAAAY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS9zcmMvcmVuYW1lL2FuYWx5emVyL21vZC5ycwAA0JQmADoAAAAuAAAAGwAAANCUJgA6AAAAOgAAADcAAADQlCYAOgAAAIsAAAAdAAAATWFya2VyIHByb3ZpZGVkIHRvIHJlc29sdmVyIHNob3VsZCBub3QgYmUgdGhlIHJvb3QgbWFyawA8lSYANwAAAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX2Jhc2Uvc3JjL3Jlc29sdmVyL21vZC5ycwB8lSYAMwAAAIcAAAAFAAAAfJUmADMAAADUBgAANgAAAM0FAAAwlCYAMgAAAPsAAAABAAAAX2FwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2FwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yX2FycmF5X2xpa2VfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9fYXJyYXlfbGlrZV90b19hcnJheV9hcnJheV93aXRoX2hvbGVzQHN3Yy9oZWxwZXJzL18vX2FycmF5X3dpdGhfaG9sZXNfYXJyYXlfd2l0aG91dF9ob2xlc0Bzd2MvaGVscGVycy9fL19hcnJheV93aXRob3V0X2hvbGVzX2Fzc2VydF90aGlzX2luaXRpYWxpemVkQHN3Yy9oZWxwZXJzL18vX2Fzc2VydF90aGlzX2luaXRpYWxpemVkX2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL19hc3luY19nZW5lcmF0b3JfYXN5bmNfZ2VuZXJhdG9yX2RlbGVnYXRlQHN3Yy9oZWxwZXJzL18vX2FzeW5jX2dlbmVyYXRvcl9kZWxlZ2F0ZV9hc3luY19pdGVyYXRvckBzd2MvaGVscGVycy9fL19hc3luY19pdGVyYXRvcl9hc3luY190b19nZW5lcmF0b3JAc3djL2hlbHBlcnMvXy9fYXN5bmNfdG9fZ2VuZXJhdG9yX2F3YWl0X2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL19hd2FpdF9hc3luY19nZW5lcmF0b3JfYXdhaXRfdmFsdWVAc3djL2hlbHBlcnMvXy9fYXdhaXRfdmFsdWVfY2FsbF9zdXBlckBzd2MvaGVscGVycy9fL19jYWxsX3N1cGVyX2NoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbkBzd2MvaGVscGVycy9fL19jaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb25fY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9kZXN0cnVjdHVyZUBzd2MvaGVscGVycy9fL19jbGFzc19hcHBseV9kZXNjcmlwdG9yX2Rlc3RydWN0dXJlX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0X2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0X2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlX2NsYXNzX2NhbGxfY2hlY2tAc3djL2hlbHBlcnMvXy9fY2xhc3NfY2FsbF9jaGVja19jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19maWVsZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2ZpZWxkX2Rlc2NyaXB0b3JfY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcl9jbGFzc19uYW1lX3Rkel9lcnJvckBzd2MvaGVscGVycy9fL19jbGFzc19uYW1lX3Rkel9lcnJvcl9jbGFzc19wcml2YXRlX2ZpZWxkX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2dldF9jbGFzc19wcml2YXRlX2ZpZWxkX2luaXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9pbml0X2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2VfYmFzZUBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2VfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXlAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXlfY2xhc3NfcHJpdmF0ZV9maWVsZF9zZXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9zZXRfY2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVfY2xhc3NfcHJpdmF0ZV9tZXRob2RfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX2dldF9jbGFzc19wcml2YXRlX21ldGhvZF9pbml0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX2luaXRfY2xhc3NfcHJpdmF0ZV9tZXRob2Rfc2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX3NldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX2dldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF91cGRhdGVAc3djL2hlbHBlcnMvXy9fY2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfdXBkYXRlX2NvbnN0cnVjdEBzd2MvaGVscGVycy9fL19jb25zdHJ1Y3RfY3JlYXRlX2NsYXNzQHN3Yy9oZWxwZXJzL18vX2NyZWF0ZV9jbGFzc19kZWNvcmF0ZUBzd2MvaGVscGVycy9fL19kZWNvcmF0ZV9kZWZhdWx0c0Bzd2MvaGVscGVycy9fL19kZWZhdWx0c19kZWZpbmVfZW51bWVyYWJsZV9wcm9wZXJ0aWVzQHN3Yy9oZWxwZXJzL18vX2RlZmluZV9lbnVtZXJhYmxlX3Byb3BlcnRpZXNfZGVmaW5lX3Byb3BlcnR5QHN3Yy9oZWxwZXJzL18vX2RlZmluZV9wcm9wZXJ0eV9leHBvcnRfc3RhckBzd2MvaGVscGVycy9fL19leHBvcnRfc3Rhcl9leHRlbmRzQHN3Yy9oZWxwZXJzL18vX2V4dGVuZHNfZ2V0QHN3Yy9oZWxwZXJzL18vX2dldF9nZXRfcHJvdG90eXBlX29mQHN3Yy9oZWxwZXJzL18vX2dldF9wcm90b3R5cGVfb2ZfaW5oZXJpdHNAc3djL2hlbHBlcnMvXy9faW5oZXJpdHNfaW5oZXJpdHNfbG9vc2VAc3djL2hlbHBlcnMvXy9faW5oZXJpdHNfbG9vc2VfaW5pdGlhbGl6ZXJfZGVmaW5lX3Byb3BlcnR5QHN3Yy9oZWxwZXJzL18vX2luaXRpYWxpemVyX2RlZmluZV9wcm9wZXJ0eV9pbml0aWFsaXplcl93YXJuaW5nX2hlbHBlckBzd2MvaGVscGVycy9fL19pbml0aWFsaXplcl93YXJuaW5nX2hlbHBlcl9pbnN0YW5jZW9mQHN3Yy9oZWxwZXJzL18vX2luc3RhbmNlb2ZfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZF9pc19uYXRpdmVfZnVuY3Rpb25Ac3djL2hlbHBlcnMvXy9faXNfbmF0aXZlX2Z1bmN0aW9uX2l0ZXJhYmxlX3RvX2FycmF5QHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0QHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlQHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlX2pzeEBzd2MvaGVscGVycy9fL19qc3hfbmV3X2Fycm93X2NoZWNrQHN3Yy9oZWxwZXJzL18vX25ld19hcnJvd19jaGVja19ub25faXRlcmFibGVfcmVzdEBzd2MvaGVscGVycy9fL19ub25faXRlcmFibGVfcmVzdF9ub25faXRlcmFibGVfc3ByZWFkQHN3Yy9oZWxwZXJzL18vX25vbl9pdGVyYWJsZV9zcHJlYWRfb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlAc3djL2hlbHBlcnMvXy9fb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlfb2JqZWN0X3NwcmVhZEBzd2MvaGVscGVycy9fL19vYmplY3Rfc3ByZWFkX29iamVjdF9zcHJlYWRfcHJvcHNAc3djL2hlbHBlcnMvXy9fb2JqZWN0X3NwcmVhZF9wcm9wc19vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzQHN3Yy9oZWxwZXJzL18vX29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNfb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllc19sb29zZUBzd2MvaGVscGVycy9fL19vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzX2xvb3NlX292ZXJsb2FkX3lpZWxkQHN3Yy9oZWxwZXJzL18vX292ZXJsb2FkX3lpZWxkX3Bvc3NpYmxlX2NvbnN0cnVjdG9yX3JldHVybkBzd2MvaGVscGVycy9fL19wb3NzaWJsZV9jb25zdHJ1Y3Rvcl9yZXR1cm5fcmVhZF9vbmx5X2Vycm9yQHN3Yy9oZWxwZXJzL18vX3JlYWRfb25seV9lcnJvcl9zZXRAc3djL2hlbHBlcnMvXy9fc2V0X3NldF9wcm90b3R5cGVfb2ZAc3djL2hlbHBlcnMvXy9fc2V0X3Byb3RvdHlwZV9vZl9za2lwX2ZpcnN0X2dlbmVyYXRvcl9uZXh0QHN3Yy9oZWxwZXJzL18vX3NraXBfZmlyc3RfZ2VuZXJhdG9yX25leHRfc2xpY2VkX3RvX2FycmF5QHN3Yy9oZWxwZXJzL18vX3NsaWNlZF90b19hcnJheV9zbGljZWRfdG9fYXJyYXlfbG9vc2VAc3djL2hlbHBlcnMvXy9fc2xpY2VkX3RvX2FycmF5X2xvb3NlX3N1cGVyX3Byb3BfYmFzZUBzd2MvaGVscGVycy9fL19zdXBlcl9wcm9wX2Jhc2VfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxAc3djL2hlbHBlcnMvXy9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2VAc3djL2hlbHBlcnMvXy9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2VfdGhyb3dAc3djL2hlbHBlcnMvXy9fdGhyb3dfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9fdG9fYXJyYXlfdG9fY29uc3VtYWJsZV9hcnJheUBzd2MvaGVscGVycy9fL190b19jb25zdW1hYmxlX2FycmF5X3RvX3ByaW1pdGl2ZUBzd2MvaGVscGVycy9fL190b19wcmltaXRpdmVfdG9fcHJvcGVydHlfa2V5QHN3Yy9oZWxwZXJzL18vX3RvX3Byb3BlcnR5X2tleV91cGRhdGVAc3djL2hlbHBlcnMvXy9fdXBkYXRlX3R5cGVfb2ZAc3djL2hlbHBlcnMvXy9fdHlwZV9vZl91bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheUBzd2MvaGVscGVycy9fL191bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheV93cmFwX2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL193cmFwX2FzeW5jX2dlbmVyYXRvcl93cmFwX25hdGl2ZV9zdXBlckBzd2MvaGVscGVycy9fL193cmFwX25hdGl2ZV9zdXBlcl93cml0ZV9vbmx5X2Vycm9yQHN3Yy9oZWxwZXJzL18vX3dyaXRlX29ubHlfZXJyb3JfY2xhc3NfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZUBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlX2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlX2NsYXNzX3N0YXRpY19wcml2YXRlX21ldGhvZF9nZXRAc3djL2hlbHBlcnMvXy9fY2xhc3Nfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2dldF9jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19hY2Nlc3NAc3djL2hlbHBlcnMvXy9fY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfYWNjZXNzX2lzX25hdGl2ZV9yZWZsZWN0X2NvbnN0cnVjdEBzd2MvaGVscGVycy9fL19pc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3RfY3JlYXRlX3N1cGVyQHN3Yy9oZWxwZXJzL18vX2NyZWF0ZV9zdXBlcl9jcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZUBzd2MvaGVscGVycy9fL19jcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZV90c19kZWNvcmF0ZUBzd2MvaGVscGVycy9fL190c19kZWNvcmF0ZV90c19nZW5lcmF0b3JAc3djL2hlbHBlcnMvXy9fdHNfZ2VuZXJhdG9yX3RzX21ldGFkYXRhQHN3Yy9oZWxwZXJzL18vX3RzX21ldGFkYXRhX3RzX3BhcmFtQHN3Yy9oZWxwZXJzL18vX3RzX3BhcmFtX3RzX3ZhbHVlc0Bzd2MvaGVscGVycy9fL190c192YWx1ZXNfdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2VAc3djL2hlbHBlcnMvXy9fdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2VfdHNfZGlzcG9zZV9yZXNvdXJjZXNAc3djL2hlbHBlcnMvXy9fdHNfZGlzcG9zZV9yZXNvdXJjZXNfdHNfcmV3cml0ZV9yZWxhdGl2ZV9pbXBvcnRfZXh0ZW5zaW9uQHN3Yy9oZWxwZXJzL18vX3RzX3Jld3JpdGVfcmVsYXRpdmVfaW1wb3J0X2V4dGVuc2lvbl9hcHBseV9kZWNzXzIyMDNfckBzd2MvaGVscGVycy9fL19hcHBseV9kZWNzXzIyMDNfcl9pZGVudGl0eUBzd2MvaGVscGVycy9fL19pZGVudGl0eV9kaXNwb3NlQHN3Yy9oZWxwZXJzL18vX2Rpc3Bvc2VfdXNpbmdAc3djL2hlbHBlcnMvXy9fdXNpbmdfdXNpbmdfY3R4QHN3Yy9oZWxwZXJzL18vX3VzaW5nX2N0eGFwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yYXJyYXlfbGlrZV90b19hcnJheWFycmF5X3dpdGhfaG9sZXNhcnJheV93aXRob3V0X2hvbGVzYXNzZXJ0X3RoaXNfaW5pdGlhbGl6ZWRhc3luY19nZW5lcmF0b3Jhc3luY19nZW5lcmF0b3JfZGVsZWdhdGVhc3luY19pdGVyYXRvcmFzeW5jX3RvX2dlbmVyYXRvcmF3YWl0X2FzeW5jX2dlbmVyYXRvcmF3YWl0X3ZhbHVlY2FsbF9zdXBlcmNoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbmNsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZGVzdHJ1Y3R1cmVjbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldGNsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0Y2xhc3NfYXBwbHlfZGVzY3JpcHRvcl91cGRhdGVjbGFzc19jYWxsX2NoZWNrY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfZmllbGRfZGVzY3JpcHRvcmNsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcmNsYXNzX25hbWVfdGR6X2Vycm9yY2xhc3NfcHJpdmF0ZV9maWVsZF9nZXRjbGFzc19wcml2YXRlX2ZpZWxkX2luaXRjbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2VjbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleWNsYXNzX3ByaXZhdGVfZmllbGRfc2V0Y2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVjbGFzc19wcml2YXRlX21ldGhvZF9nZXRjbGFzc19wcml2YXRlX21ldGhvZF9pbml0Y2xhc3NfcHJpdmF0ZV9tZXRob2Rfc2V0Y2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfc3BlY19nZXRjbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldGNsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3VwZGF0ZWNvbnN0cnVjdGNyZWF0ZV9jbGFzc2RlY29yYXRlZGVmYXVsdHNkZWZpbmVfZW51bWVyYWJsZV9wcm9wZXJ0aWVzZGVmaW5lX3Byb3BlcnR5ZXhwb3J0X3N0YXJnZXRfcHJvdG90eXBlX29maW5oZXJpdHNpbmhlcml0c19sb29zZWluaXRpYWxpemVyX2RlZmluZV9wcm9wZXJ0eWluaXRpYWxpemVyX3dhcm5pbmdfaGVscGVyaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRpbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmRpc19uYXRpdmVfZnVuY3Rpb25pdGVyYWJsZV90b19hcnJheWl0ZXJhYmxlX3RvX2FycmF5X2xpbWl0aXRlcmFibGVfdG9fYXJyYXlfbGltaXRfbG9vc2Vqc3huZXdfYXJyb3dfY2hlY2tub25faXRlcmFibGVfcmVzdG5vbl9pdGVyYWJsZV9zcHJlYWRvYmplY3RfZGVzdHJ1Y3R1cmluZ19lbXB0eW9iamVjdF9zcHJlYWRvYmplY3Rfc3ByZWFkX3Byb3Bzb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllc29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNfbG9vc2VvdmVybG9hZF95aWVsZHBvc3NpYmxlX2NvbnN0cnVjdG9yX3JldHVybnJlYWRfb25seV9lcnJvcnNldF9wcm90b3R5cGVfb2Zza2lwX2ZpcnN0X2dlbmVyYXRvcl9uZXh0c2xpY2VkX3RvX2FycmF5c2xpY2VkX3RvX2FycmF5X2xvb3Nlc3VwZXJfcHJvcF9iYXNldGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWx0YWdnZWRfdGVtcGxhdGVfbGl0ZXJhbF9sb29zZXRvX2FycmF5dG9fY29uc3VtYWJsZV9hcnJheXRvX3ByaW1pdGl2ZXRvX3Byb3BlcnR5X2tleXR5cGVfb2Z1bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheXdyYXBfYXN5bmNfZ2VuZXJhdG9yd3JhcF9uYXRpdmVfc3VwZXJ3cml0ZV9vbmx5X2Vycm9yY2xhc3NfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZWNsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlY2xhc3Nfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2dldGNsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2FjY2Vzc2lzX25hdGl2ZV9yZWZsZWN0X2NvbnN0cnVjdGNyZWF0ZV9zdXBlcmNyZWF0ZV9mb3Jfb2ZfaXRlcmF0b3JfaGVscGVyX2xvb3NldHNfZGVjb3JhdGV0c19nZW5lcmF0b3J0c19tZXRhZGF0YXRzX3BhcmFtdHNfdmFsdWVzdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2V0c19kaXNwb3NlX3Jlc291cmNlc3RzX3Jld3JpdGVfcmVsYXRpdmVfaW1wb3J0X2V4dGVuc2lvbmFwcGx5X2RlY3NfMjIwM19yaWRlbnRpdHlkaXNwb3NldXNpbmdfY3R4YXJndW1lbnRzbm90IGltcGxlbWVudGVkL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfdXRpbHMvc3JjL2xpYi5ycwDFtCYAOgAAAPwJAAA+AAAAzgUAAAQAAAAEAAAAlQEAAMW0JgA6AAAACgoAADwAAADFtCYAOgAAAOkJAAAmAAAAPAUAAAwAAAAEAAAAPQUAAD4FAACcAwAAAAAAAAAAAAABAAAAPwUAAENsYXNzRm5WYXJVc2luZ1RzSW50ZXJmYWNlVHNUeXBlQWxpYXNUc0VudW1Uc01vZHVsZWNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQvc3JjL3N0cmlwX3R5cGUucnMAAJu1JgA3AAAA1QAAACkAAABjcmF0ZXMvc3djX2VjbWFfdHJhbnNmb3Jtc190eXBlc2NyaXB0L3NyYy90cmFuc2Zvcm0ucnMAAOS1JgA2AAAA+gAAABcAAADktSYANgAAABUBAAASAAAA5LUmADYAAABdAQAAKAAAAOS1JgA2AAAAXgEAAC0AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBkZXN0cnVjdHVyaW5nIHBhdHRlcm4gaW5zaWRlIFRzUGFyYW1ldGVyUHJvcGVydHkAAFy2JgBaAAAA5LUmADYAAABMAQAAIQAAAOS1JgA2AAAAewEAABIAAADktSYANgAAAE4CAAAnAAAA5LUmADYAAABLAgAAMgAAAOS1JgA2AAAA0QIAADgAAADktSYANgAAAFkDAAANAAAA5LUmADYAAAC5AwAAHwAAAOS1JgA2AAAAugMAAB8AAADktSYANgAAAOIDAAAfAAAA5LUmADYAAADqAwAAHQAAAOS1JgA2AAAABgQAACMAAADktSYANgAAALIDAAAxAAAAzwUAACgAAAAIAAAAQwIAAOS1JgA2AAAAxQMAAEAAAABJbXBvcnQgZGVjbGFyYXRpb25zIGluIGEgbmFtZXNwYWNlIGNhbm5vdCByZWZlcmVuY2UgYSBtb2R1bGUuRVNNLXN0eWxlIG1vZHVsZSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gYSBuYW1lc3BhY2Uu5LUmADYAAAB6BAAAIwAAAOS1JgA2AAAAUAQAACsAAADktSYANgAAAFwEAABRAAAA5LUmADYAAABfBAAAHwAAAOS1JgA2AAAAaQQAAFYAAADktSYANgAAAGsEAAAfAAAAZXhwb3J0cwDktSYANgAAAKEFAAAjAAAA5LUmADYAAAClBQAAHwAAAOS1JgA2AAAAXAUAABoAAADktSYANgAAAF4FAAAaAAAASW1wb3J0IGFzc2lnbm1lbnQgY2Fubm90IGJlIHVzZWQgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCBtb2R1bGVzLiBDb25zaWRlciB1c2luZyBgaW1wb3J0ICogYXMgbnMgZnJvbSAibW9kImAsIGBpbXBvcnQge2F9IGZyb20gIm1vZCJgLCBgaW1wb3J0IGQgZnJvbSAibW9kImAsIG9yIGFub3RoZXIgbW9kdWxlIGZvcm1hdCBpbnN0ZWFkLkV4cG9ydCBhc3NpZ25tZW50IGNhbm5vdCBiZSB1c2VkIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgbW9kdWxlcy4gQ29uc2lkZXIgdXNpbmcgYGV4cG9ydCBkZWZhdWx0YCBvciBhbm90aGVyIG1vZHVsZSBmb3JtYXQgaW5zdGVhZC5Pbmx5IGFtYmllbnQgbW9kdWxlcyBjYW4gdXNlIHF1b3RlZCBuYW1lcy7ktSYANgAAAAoGAAAOAAAAY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfdHlwZXNjcmlwdC9zcmMvdHNfZW51bS5yc05hTkluZmluaXR5AES6JgA0AAAAuAAAABIAAAABAAAAAAAAAAEAAAAAAAAARLomADQAAADiAAAAGgAAAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQvc3JjL3R5cGVzY3JpcHQucnMAtLomADcAAABCAAAALAAAALS6JgA3AAAAWgAAABAAAABfY3JlYXRlUmVxdWlyZV9fcmVxdWlyZWNyZWF0ZVJlcXVpcmU8BQAADAAAAAQAAAA9BQAAPgUAAJwDAAAAAAAAAAAAAAEAAAA/BQAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5yc1i7JgBMAAAAVgoAACQAAAAAAAAADAAAAAQAAADUBQAA1QUAAGNvbnN0cnVjdG9yIHNob3VsZCBoYXZlIGEgYm9keWNyYXRlcy9zd2NfZWNtYV91dGlscy9zcmMvY29uc3RydWN0b3IucnMAAOa7JgAoAAAADgAAACAAAABTeW1ib2wAAAEAAAAAAAAAXNgmAAEAAABzdXBlcl8AADi8JgAGAAAAXNgmAAEAAAC8yyYAPQAAAHoCAAAUAAAAvMsmAD0AAACiAgAAPAAAALzLJgA9AAAAkQIAAD4AAACZAwAADAAAAAQAAAAaBQAA1wUAAJwDAAAAAAAAAAAAAAEAAACdAwAAYOomAE8AAAAKAgAANwAAANgFAAAsAAAABAAAANkFAADaBQAA2wUAANwFAADdBQAA3gUAAKMDAAAkc2VyZGVfanNvbjo6cHJpdmF0ZTo6UmF3VmFsdWVyYW5nZSAgb3V0IG9mIGJvdW5kczog/rwmAAYAAAAEvSYAEAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2JpdHZlYy0xLjAuMS9zcmMvc2xpY2UvYXBpLnJzAAAkvSYAYgAAAI4KAAABAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQwL3NyYy9zZXIucnMAAJi9JgBiAAAADQYAABIAAACYvSYAYgAAAEwIAAAzAAAAdXV1dXV1dXVidG51ZnJ1dXV1dXV1dXV1dXV1dXV1dXUAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJi9JgBiAAAAPwgAAEAAAAAiXCJcXFxiXGZcblxyXHQAHMwmAF4AAAA0AAAABQAAAEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93eXotMC41LjEvc3JjL2NvbXUucnMAAIy/JgBaAAAAJwEAAAIAAADfBQAADAAAAAQAAADgBQAA4QUAAJwDAAAAAAAAAAAAAAEAAAAABQAAdTgAAOIFAAAUAAAABAAAAOMFAAAAAAAACAAAAAQAAADkBQAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMARMAmAF8AAADGAAAAJwAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL21hcC9lbnRyeS5yc7TAJgBgAAAAoQEAAC4AAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9ub2RlLnJzYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5oZWlnaHQgLSAxACTBJgBbAAAArQIAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzcmMubGVuKCkgPT0gZHN0LmxlbigpJMEmAFsAAABKBwAABQAAACTBJgBbAAAAxwQAACMAAAAkwSYAWwAAAAoFAAAkAAAAYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5ub2RlLmhlaWdodCAtIDEAAAAkwSYAWwAAAPoDAAAJAAAARMAmAF8AAABYAgAAMAAAAETAJgBfAAAAFgIAAC8AAABEwCYAXwAAAKEAAAAkAAAAYXR0ZW1wdCB0byBqb2luIGludG8gY29sbGVjdGlvbiB3aXRoIGxlbiA+IHVzaXplOjpNQVgvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHIucnMAAADFwiYASAAAAJoAAAAKAAAAxcImAEgAAACdAAAAFgAAAMXCJgBIAAAAsQAAABYAAABOdWxsUHRyRXJyb3JJbmNsdWRlZEV4Y2x1ZGVkVW5ib3VuZGVkY2Fubm90ICBiaXRzIGZyb20gYSAtYml0IHJlZ2lvbmXDJgAHAAAAqM0mAAEAAABswyYADQAAAHnDJgALAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYml0dmVjLTEuMC4xL3NyYy9maWVsZC5ycwAApMMmAF4AAAAOAgAAAgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2JpdHZlYy0xLjAuMS9zcmMvc2xpY2UucnMAABTEJgBeAAAA9wAAAB8AAAAUxCYAXgAAAE8BAAAjAAAAaW5kZXggIG91dCBvZiByYW5nZTogAAAAlMQmAAYAAACaxCYADwAAABTEJgBeAAAAMQYAAAMAAAAuLmxvYWRCaXRTcGFuRXJyb3I8Pjo6AADSxCYADQAAAN/EJgADAAAATnVsbE1pc2FsaWduZWRUb29Mb25nVG9vSGlnaE1pc2FsaWduRXJyb3IAAAABAAAAmL0mAGIAAAB/AgAAKgAAAJi9JgBiAAAApAIAACoAAACYvSYAYgAAAPwBAAAqAAAAmL0mAGIAAAAKAgAAKgAAAGV4cGVjdGVkIFJhd1ZhbHVlL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc3djX3NvdXJjZW1hcC05LjMuNC9zcmMvYnVpbGRlci5yc3XFJgBnAAAAaQAAABoAAAB1xSYAZwAAAGoAAAAiAAAAQ2Fubm90IHNldCBzb3VyY2VzIGZvciB0b21ic3RvbmUgc291cmNlIGlkAAB1xSYAZwAAAIAAAAAJAAAAdcUmAGcAAACEAAAAHQAAAHXFJgBnAAAABwEAABUAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zd2Nfc291cmNlbWFwLTkuMy40L3NyYy9lbmNvZGVyLnJzAFjGJgBnAAAANwAAAA0AAABpbnZhbGlkIGJ5dGVYxiYAZwAAACMAAAASAAAAaW52YWxpZCB1dGY4WMYmAGcAAABmAAAAIQAAAFjGJgBnAAAAWAAAABEAAABiYWQganNvbjogAAAYxyYACgAAAGxlZnRvdmVyIGN1ci9zaGlmdCBpbiB2bHEgZGVjb2RldmxxIGRlY29kZSBkaWQgbm90IHByb2R1Y2UgYW55IHZhbHVlc3ZscSBkZWNvZGUgY2F1c2VkIGFuIG92ZXJmbG93Z290ICBzZWdtZW50cywgZXhwZWN0ZWQgNCBvciA1jscmAAQAAACSxyYAGgAAAGJhZCByZWZlcmVuY2UgdG8gc291cmNlICMAAAC8xyYAGQAAAGJhZCByZWZlcmVuY2UgdG8gbmFtZSAjAODHJgAXAAAAZW5jb3VudGVyZWQgaW5jb21wYXRpYmxlIHNvdXJjZW1hcCBmb3JtYXR0aGUgcHJvdmlkZWQgZGF0YSBVUkwgaXMgaW52YWxpZGNhbm5vdCBmbGF0dGVuIHRoZSBpbmRleGVkIHNvdXJjZW1hcDogAEnIJgAmAAAAaW52YWxpZCBtYWdpYyBudW1iZXIgZm9yIHJhbSBidW5kbGVpbnZhbGlkIG1vZHVsZSBpbmRleCBpbiByYW0gYnVuZGxlaW52YWxpZCByYW0gYnVuZGxlIG1vZHVsZSBlbnRyeW5vdCBhIHJhbSBidW5kbGVpbnZhbGlkIHJhbmdlIG1hcHBpbmcgaW5kZXg6IAAAAOzIJgAdAAAAaW52YWxpZCBiYXNlNjQgY2hhcmFjdGVyOiAAABTJJgAaAAAAaHR0cDpodHRwczoAAQAAAAAAAAALziYAAQAAAGxpbmVjb2x1bW5vZmZzZXR1cmxtYXBuYW1lc21hcHBpbmdzdmVyc2lvbmZpbGVzb3VyY2Vzc291cmNlUm9vdHNvdXJjZXNDb250ZW50c2VjdGlvbnNyYW5nZU1hcHBpbmdzaWdub3JlTGlzdHhfZmFjZWJvb2tfb2Zmc2V0c3hfbWV0cm9fbW9kdWxlX3BhdGhzeF9mYWNlYm9va19zb3VyY2VzZGVidWdfaWRkZWJ1Z0lkL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlnaW50LnJzAAAHyiYAYwAAAGwDAAAPAAAAAAAAAAQAAAAAAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9jb252ZXJ0LnJziMomAGwAAADwAQAAFgAAAGNhbm5vdCBhY2Nlc3MgYSBzY29wZWQgdGhyZWFkIGxvY2FsIHZhcmlhYmxlIHdpdGhvdXQgY2FsbGluZyBgc2V0YCBmaXJzdC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3Njb3BlZC10bHMtMS4wLjEvc3JjL2xpYi5yc0zLJgBgAAAAqAAAAAkAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfY29tbW9uL3NyYy9zb3VyY2VfbWFwLnJzAAAAvMsmAD0AAAA1BQAASgAAALzLJgA9AAAAYgUAACYAAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvc3BlY19mcm9tX2l0ZXJfbmVzdGVkLnJzAAAczCYAXgAAABMAAAAFAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlL3NyYy9yZW5hbWUvb3BzLnJzAIzMJgBLAAAASgIAABcAAACMzCYASwAAAE8CAAARAAAAjMwmAEsAAAAeAQAAGQAAAIzMJgBLAAAARwEAABkAAACMzCYASwAAAHsBAAAcAAAAjMwmAEsAAAC7AQAAFwAAAIzMJgBLAAAAwAEAABEAAACMzCYASwAAAH4CAAASAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfY29kZWdlbi9zcmMvdGV4dF93cml0ZXIvYmFzaWNfaW1wbC5yczsgdmFybGV0Y29uc3ROb25lLSshfnR5cGVvZnZvaWRkZWxldGU9Kz0tPSo9Lz0lPTw8PT4+PT4+Pj18PV49Jj0qKj0mJj18fD0/Pz09PSE9PT09IT09PDw9Pj49PDw+Pj4+PiovJXxeJnx8JiZpbmluc3RhbmNlb2YqKj8/KystLS9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMoziYAWAAAANMHAAAJAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvaXRlci5yc3VuZXhwZWN0ZWQgcmVnZXggZmluZCBlcnJvcjogCnRvIGhhbmRsZSBmaW5kIGVycm9ycywgdXNlICd0cnknIG9yICdzZWFyY2gnIG1ldGhvZHP6ziYAHQAAABfPJgA1AAAAkM4mAGoAAAB+AQAAGQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3Bvb2wucnMAAGzPJgBqAAAAPQIAABwAAABszyYAagAAAEQCAAAyAAAAbM8mAGoAAABeAgAAHAAAAGzPJgBqAAAAawIAADIAAABszyYAagAAAG8CAAAXAAAAAgAAAGzPJgBqAAAAAQMAABUAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9zZWFyY2gucnNpbnZhbGlkIHNwYW4gIGZvciBoYXlzdGFjayBvZiBsZW5ndGggAAAAqNAmAA0AAAC10CYAGAAAADzQJgBsAAAAqgEAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzcGFuLmxvID49IHNlbGYuaW5wdXQuc3RhcnRfcG9zKCkgJiYgc3Bhbi5oaSA8PSBzZWxmLmlucHV0LmVuZF9wb3MoKS9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvc3RhdGUucnMAAABG0SYAQwAAAFEAAAAJAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogAACc0SYAKgAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAIACA4C9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvdG9rZW4ucnMA6NEmAEMAAAB9AQAAEQAAAC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvY2FwdHVyaW5nLnJzADzSJgBHAAAAPgAAAAsAAABhYnN0cmFjdGVudW1pbnRlcmZhY2Vtb2R1bGVuYW1lc3BhY2V0eXBlL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9wYXJzZXIvdHlwZXNjcmlwdC5ycwAAALzSJgBJAAAAOwAAABcAAAC80iYASQAAAD8AAAARAAAACgkAALzSJgBJAAAAcgEAACAAAAACA2RlY2xhcmVnbG9iYWwScHVibGljcHJvdGVjdGVkcHJpdmF0ZXJlYWRvbmx5AABM0yYABgAAAFLTJgAJAAAAW9MmAAcAAABi0yYACAAAAJ1Zb3ZlcnJpZGVvdXQAAABM0yYABgAAAFvTJgAHAAAAUtMmAAkAAABi0yYACAAAAJTSJgAIAAAAr80mAAUAAACO0yYACAAAABTOJgACAAAAltMmAAMAAABsL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJz5dMmAEsAAADoAQAAFwAAALzSJgBJAAAA5wMAAEAAAAC80iYASQAAAOoDAAAsAAAAAZEEBWLTJgAIAAAAkwAAALzSJgBJAAAAQQgAADcAAAA8IChqc3ggdGFnIHN0YXJ0KXBpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlAAC80iYASQAAAAAJAAASAAAAGgAAALzSJgBJAAAAdgQAABYAAACFmRNzdHJpbmdudWxsbnVtYmVyb2JqZWN0YW55dW5rbm93bmJvb2xlYW5iaWdpbnRzeW1ib2xuZXZlcmludHJpbnNpYwAAAAAAAAAAAQAAAJ0DAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlALzSJgBJAAAA7QkAADgAAAC80iYASQAAAP8JAAA4AAAAvNImAEkAAAAJCgAAFgAAAG51bWVyaWMgbGl0ZXJhbCBvciBiaWdpbnQgbGl0ZXJhbGFuIGlkZW50aWZpZXIsIHZvaWQsIHlpZWxkLCBudWxsLCBhd2FpdCwgYnJlYWssIGEgc3RyaW5nIGxpdGVyYWwsIGEgbnVtZXJpYyBsaXRlcmFsLCB0cnVlLCBmYWxzZSwgYCwgLSwgaW1wb3J0LCB0aGlzLCB0eXBlb2YsIHssIFssIChoY7zSJgBJAAAATgkAACsAAAC80iYASQAAAEwJAAAaAAAAvNImAEkAAABdBAAAEwAAALzSJgBJAAAAYQQAABQAAAAXkmEgc3RyaW5nIGxpdGVyYWwAALzSJgBJAAAAcgAAABEAAAAHAAAAvNImAEkAAACABQAAGAAAALzSJgBJAAAAjgUAABIAAABhbiBpZGVudGlmaWVyLCBbIGZvciBhbiBhcnJheSBwYXR0ZXJuLCB7IGZvciBhbiBvYmplY3QgcGF0dGVyIG9yIC4uLiBmb3IgYSByZXN0IHBhdHRlcm4AvNImAEkAAAAkAQAAFwAAABtnbG9iYWwgb3IgYSBzdHJpbmcgbGl0ZXJhbGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGhhbmRsZV9pbXBvcnRfZXhwb3J0IHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIGN1cnJlbnQgdG9rZW4gaXNuJ3QgaW1wb3J0IG5vciBleHBvcnQAQ9cmAHwAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9wYXJzZXIv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4SYAQwAAACUDAAAgAAAAceEmAEMAAAB5AAAAFgAAAC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvcGFyc2VyL2lkZW50LnJzpOImAEQAAADLAAAADQAAAGxldCBpcyByZXNlcnZlZCBpbiBjb25zdCwgbGV0LCBjbGFzcyBkZWNsYXJhdGlvbmF3YWl0eWllbGRpZGVudGlmaWVyIG9yIHN0cmluZy9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvcGFyc2VyL2lucHV0LnJzAABG4yYARAAAAIMBAAAgAAAARuMmAEQAAABkAAAADQAAAEbjJgBEAAAAnAAAAA0AAABG4yYARAAAAI4AAAANAAAARuMmAEQAAACHAAAADQAAAEbjJgBEAAAAcgAAAA0AAABG4yYARAAAAHkAAAANAAAARuMmAEQAAACAAAAADQAAAEbjJgBEAAAAlQAAAA0AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiB0b2tlbl92YWx1ZTogABzkJgA3AAAARuMmAEQAAABrAAAADQAAAC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvcGFyc2VyL29iamVjdC5ycwAAAGzkJgBFAAAAFgAAAB0AAABs5CYARQAAABkAAAAXAAAALi4uICwgKiwgICgsIFssIDosICwgPywgPSwgYW4gaWRlbnRpZmllciwgcHVibGljLCBwcm90ZWN0ZWQsIHByaXZhdGUsIHJlYWRvbmx5LCA8Li4uLiAsICosICAoLCBbLCA6LCAsID8sID0gb3IgYW4gaWRlbnRpZmllcmlkZW50aWZpZXIAAGzkJgBFAAAAnQEAACIAAABhbiBpZGVudGlmaWVyL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfY29kZWdlbi9zcmMvdHlwZXNjcmlwdC5yc2V4cG9ydG5ldzo9Pn0uLi50aGlzW11pbmZlcmV4dGVuZHMsLj8AAAB55SYAQwAAABUCAAAiAAAAJHsAAHnlJgBDAAAAGAIAACEAAAB1bmRlZmluZWRrZXlvZnVuaXF1ZXNhdGlzZmllc2Fzc2VydHNpc3JlcXVpcmV3aXRoAAAAWM0mAE8AAAByAAAAGgAAACAgICBYzSYATwAAAIsAAAAYAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfY29kZWdlbi9zcmMvbW9kdWxlX2RlY2xzLnJzZnJvbWFzc2VydABg5iYARQAAAKEAAAAgAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5zcGVjaWZpZXJzLmxlbigpIDw9IDJg5iYARQAAAK8AAAAVAAAAYOYmAEUAAABlAQAAKAAAAG5vdCBpbXBsZW1lbnRlZDogY29kZWdlbiBvZiBgZXhwb3J0IGRlZmF1bHQgZnJvbSAnZm9vJztgDOcmADgAAABg5iYARQAAAAcBAAARAAAAZGVmYXVsdC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX2NvZGVnZW4vc3JjL2xpYi5ycwBj5yYAPAAAAJEDAAASAAAAY+cmADwAAAAFAgAASAAAAGPnJgA8AAAABgIAACgAAABj5yYAPAAAAMoAAABMAAAAY+cmADwAAADNAAAAJwAAADwvPC8+PD4vaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy9saXQucnMA9+cmADwAAAD/AAAANAAAAGZhbHNldHJ1ZXVzZSBzdHJpY3RzY3JpcHRcdXs8IS0tXHgzYyEtLS0tPi0tXHgzZW4tMHh16CYAAwAAADB4AACA6CYAAgAAAGNsYXNzZnVuY3Rpb24vaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy9zdG10LnJzaWZlbHNlZm9ydHJ5ZmluYWxseWJyZWFrb2Z0aHJvd3doaWxlcmV0dXJuY2FzZZnoJgA9AAAAAwEAAB0AAACZ6CYAPQAAAAYBAABBAAAAc3dpdGNoY2F0Y2hkb2NvbnRpbnVlZGVidWdnZXJpbXBsZW1lbnRzYWNjZXNzb3IvLy8qKi8gaXMgYWxyZWFkeSByZW5hbWVkIHRvICwgYnV0IGl0J3MgcmVuYW1lZCBhcyAAAJzRJgAqAAAAWekmABcAAABw6SYAFgAAAC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS9zcmMvcmVuYW1lL21vZC5ycwCg6SYASwAAABEBAAAZAAAAZXZhbOUFAAAMAAAABAAAABoFAACbAwAAnAMAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkA5dMmAEsAAADwCgAADgAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAYOomAE8AAADiBQAAFAAAAGDqJgBPAAAA4gUAACEAAABg6iYATwAAANYFAAAhAAAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxheW1pZCA+IGxlbgAAAAjrJgAJAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tb2QucnMAAAAc6yYATQAAAOwDAAArAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9kcmlmdC5ycwB86yYAWwAAAP8AAAAZAAAAfOsmAFsAAADyAAAAEgAAAHzrJgBbAAAAzgAAACQAAAB86yYAWwAAANEAAAAkAAAAfOsmAFsAAABAAAAAIgAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzACjsJgBfAAAATgAAAB8AAAAo7CYAXwAAAEgAAAAXAAAA5gUAAAgAAAAEAAAA5wUAAAAAAAAEAAAABAAAAGAAAAAAAAAABAAAAAQAAAAcBQAA6AUAABQAAAAEAAAA6QUAAOgFAAAUAAAABAAAAIQDAADpBQAA2OwmAKMDAADqBQAA6wUAAKMDAACmAwAA7AUAAAwAAAAEAAAA7QUAAOwFAAAMAAAABAAAAIUDAADtBQAAFO0mAKMDAADuBQAApQMAAO8FAACmAwAARXJyb3JJZGVudEFycmF5UmVzdE9iamVjdEFzc2lnbkludmFsaWRFeHByL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnN67SYASgAAAGIDAAAJAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvYm9ycm93LnJzANTtJgBLAAAAFQEAACUAAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlbjxpbnZhbGlkPkZyb21VdGY4RXJyb3JieXRlc2Vycm9ySW9VdGY4QmFkSnNvblZscUxlZnRvdmVyVmxxTm9WYWx1ZXNWbHFPdmVyZmxvd0JhZFNlZ21lbnRTaXplQmFkU291cmNlUmVmZXJlbmNlQmFkTmFtZVJlZmVyZW5jZUluY29tcGF0aWJsZVNvdXJjZU1hcEludmFsaWREYXRhVXJsQ2Fubm90RmxhdHRlbkludmFsaWRSYW1CdW5kbGVNYWdpY0ludmFsaWRSYW1CdW5kbGVJbmRleEludmFsaWRSYW1CdW5kbGVFbnRyeU5vdEFSYW1CdW5kbGVJbnZhbGlkUmFuZ2VNYXBwaW5nSW5kZXhJbnZhbGlkQmFzZTY0U29tZWludmFsaWQgdXRmLTg6IGNvcnJ1cHQgY29udGVudHMAY+cmADwAAAAeCAAAIgAAAGPnJgA8AAAAIQgAACEAAABpbnZhbGlkIHV0Zi04AAAA5gUAAAgAAAAEAAAA8AUAAOYFAAAIAAAABAAAAOcFAADwBQAAwO8mAPEFAADyBQAA8wUAAPQFAACmAwAAAAAAAAgAAAAEAAAA9QUAAAAAAAAIAAAABAAAAPYFAAD1BQAA/O8mAKMDAAD3BQAA+AUAAKMDAACmAwAA+QUAAAQAAAAEAAAA+gUAAPkFAAAEAAAABAAAAPsFAAD6BQAAOPAmAPwFAAD9BQAApQMAAP4FAACmAwAAc3VwZXIAAAD/BQAAFAAAAAQAAAAABgAA/wUAABQAAAAE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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////////////8/P/////8/P/+q////P////////99f3B/PD/8f3B8AAAAAAAAAAAAAAAAAAAAAAAAAAAAEIAT//3////9///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgBP//f////3///////////////////////////////////////////////////////////////////////w8A//9/+P//////D////////////////////////////////8P/AwAfUAAAAAAAAAAAAAAAAAAAAADfvEDX///7////////////v//////////////////////////////////D/wMAH1AAAP//////////////////37zA1///+////////////7///////////////////////wP8///////////////////////////+////fwL//////wEAAAAAAAAAAP///4cHAP/////////////////////7/P///////////////////////////v///38C//////8B/v////+/tgD///+HBwAAAAAA//////8HAAAAwP7//////////////y8AYMAAnAAA/f///wAAAOD/////////////PwACAAD8////BzAEAAD/B////////////8P////////////////vn//9/58AAP/////////n////////////////AwD///////8/JP//PwQQAQAA////Af8H////fgAA//////8DAAAAAAAA8P///////yMAAAH/AwD+/+Gf+f///cUjAEAAsAMAAxD//////z8AAP///w//B////36A////////////+////////////////////8///v/vn/n///3F8595gLDP/wNQ4If5///9bQMAAABeAAAcAOC/+////e0jAAABAAMAAALgn/n///3tIwAAALADAAIA6Mc91hjH/wMAAAEAAAAAAO6H+f///W3ThzkCXsD/PwDuv/v///3t8787AQDP/wD+7p/5///97fOfOeCwz/8CAOzHPdYYx//Dxz2BAMD/AADg3/3///3/IwAAACcDAAAA4d/9///97yMAAABgAwAGAPDf/f////8nAEBwgAMAAPzg/3/8///7L38AAAAAAAAA/9/9///9//PfPWAnz/8AAO/f/f///e/z3z1gYM//DgD/3/3//////9998IDP/wD87v9//P//+y9/hF//wP8MAP7//////w0AfwAAAAAAAADW9///r/8NIF8AAPAAAAAAAQAAAAAAAAD//v///x8AAAAfAAAAAAAAAAAAAAAAAAD+////////B/9//wMAAAAA1vf//6///z9ff//zAAAAAAEAAAP/A6DC//7///8f/v/f///+////H0AAAAAAAAAA//////8HAIAAAD88YsDh/wNAAAD/////vyD///////f///////////////////////////////////////////////////8/AAD///////////z///////8AAAAAAP8P////////////A////////////z//////vyD///////f//////////////////////////////////////////////////38A//8/AP8AAAC////////9BwAAAAAAAAAA////////////PX89//////89/////z1/Pf9//////////z3//////////wcAAAAA//8AAP////////////8/P////////////z1/Pf//////Pf////89fz3/f/////////89///////////nAP4DAP//AAD/////////////Pz/+/////////////////////////////////////////////////////////////////////////////////////////////////////////////wMAAAAAAAAAAAAAAAD/////////////////n////v//B////////////8f/Af//A4D//wMA//8DAP/fAQD///////8PAAAAgBAAAAAA/////////////////5////7//wf////////////H/wH//z+A//8fAP//DwD/3w0A/////////////48w/wMAAAAAAAD//////////////wH//////wX//////////z8A////fwAAAAAAAP///z8fAP//////D////wMAAAAAAAAAuP8D//////////////8B//////8H//////////8/AP///3//D/8PwP////8/HwD//////w////8D/wcAAAAA//9/AP///////x8AAAAAAAAAAACAAAAAAAAAAAAAAADg//////8PAOAfAAAAAAAA+P///wHAAPz/////PwAAAP///w//////////f////5//A/8DgAD/v/9/AAAAAAAA////////////H/8DAPgPAP//////////////////DwD/////DwAAAADgAPz///8//wf//////+cAAAAAAN5vBP///////////////////////////////wAAAAAAAAAA/////////wD/4///////P/8H///////nAAD3/////wf///////////////////////////////////////////////////////////////////////////////////8HAAAAAAAAAAAAAAAAAAACgAAA/x8AAAAAAAAAAAAAAACE/C8/UP3/8+BDAAD//////wEAAAAAAAAAAAAAAAAAAAAwAAAAAACAAQAQAAAAAoAAAP8fAAAAAAAA/x/i/wEAhPwvP1D9//PgQwAA//////8BAAAAAAAAAAAAAAAAAAD/////////////////////////////////////H3gMAP////+/IP////////+AAAD//38Af39/f39/f38AAAAA/////////////////////////////////////x/4DwD/////vyD/////////gACA//9/AH9/f39/f39//////+AAAAD+Az4f/v///////////3/4/v/////////////34P///////v////////////9/AAD/////AAAAAAAA///gAAAA/v8+H/7///////////9//v7//////////////+D///////7/////////////fwAA/////wAAAAAAAP////////////////////////8fAAAAAAAAAAD//////z////////////////////////////////////////////////////////////////////////////////////8A/x///wAMAAD//////38AgP///z//////////////AAAAAID//P////////////////n/////////P+sfAAD8//8f////DwAA////////8L///////////////////wMAAACA//z////////////////5/////////z/rHwAA/P+79///BwAAAP///////w8A/P//////DwAAAAAAAAD8aAD8//8/AP//fwAAAP///x/w//////8HAACAAADf/wB8//////8QAAD///////8PAP//////////PwD/A////+j//////z//////DwD///8f//////////8BgP8D////f///////AQAA9w8AAP//f8T///////9iPgUAADj/BxwAfn5+AH9////////3/wP//////////////////wcAAAD///////9/AP8//wP//3/8//////////8HAAA4//98AH5+fgB/f///////9/8D////////////////////N/8D/////////////////z//////////////////AwAAAAB/APig//1/X9v/////////////////AwAAAPj///////////////////////8//////////////////wMAAAAAfwD44P/9f1/b/////////////////wMAAAD4//////8AAAAAAAAAAAAAAAAAAN//////////////////////HwAAAAD+//8H/v//B8D/////////////f/z8/BwAAAAA//8AAP//GAAA4AAAAADf/////////////////////x8AAP8D/v//h/7//wfg/////////////3/8/PwcAAAAAP/v//9///+3/z//PwAAAAD///////////////////8HAAAAAAAAAAD///////8fAAAAAAAAAAAAAAAAAAAAAAD/7///f///t/8//z8AAAAA////////////////////BwAAAAAAAAAA////////HwAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAP///x////////8BAAAAAAD/////AOD///8H/////z8A////P/////8P/z4AAAAAAAAAAAAAAAAAAAAAAAAAAAD///8f////////AQABAAAA/////wDg////B///////B////z//////D/8+AAAAAAD/////////////////////////PwAA/////w//////D///////AP///////w8A//f/97f/+//7G////////w8A/////////////////////////z//A/////8P/////w///////wD///////8PAP/3//e3//v/+xv///////8PAD/9/////7+R//8/AP//fwD///9/AAAAAAAAAAD//zcA//8/AP///wMAAAAAAAAAAP/////////AAAAAAAAAAAABAO/+//8/AAAAAAD///8f////HwAAAAD//v//HwAAAP///////z8A//8/AP//BwD//wMAAAAAAAAAAAAAAAAAb/Dv/v//P4cAAAAA////H////x8AAAAA//7//38AAAD///////8/AP//PwD//wcA//8DAAAAAAAAAAAAAAAAAP///////////wEAAAAAAAD///////8HAP///////wcA/////w8AAAAA/P//P4D//z8AAAAAAAAAAAAAAAAAAAD///////////8BAAAAAAAA////////BwD///////8HAP//////AP8D/////z++//8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AwMAHAAAAAAAAAD///8fgAD//z8AAAAAAP//AwAAAAAA//8fAAAA//9/AAAAAAAAAAAAAAAAAAAAAAD//////xsDABwAAAAAAADw////H4AA/////wEAAAD//z8AAAAAAP//HwAAAP//fwD4////////AAAAAAAAACYA+P//////AAAAAP///wEAAPj///9/AAAAkAD/////RwD4//////8HAB4AABQAAAAA//////////9/AAAAwP8/gP////////8HBAD///8B/wP////////f//AA/////08A//////////8f3v8XAAAAAP//+///DwCAAQAAAAAAAAB/vf+//wH//////38AAAAA4J/5///97SMAAAHgAwAAAP9L/////78AAAAKAAAAAAD///v/////wAMAAAAAAAAAf73/v/8B/////////wf/A++f+f///e37nzmB4M8fHwD/S/////+//6X3DwAGAAAA////////HwCABwCAAwAAAP///////wAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////9/AAAAAAAPAAAAAP///////////wf/wwMAAAD//////////78A/wMAAAAAAAAAAAAAAAAAAAAAAAAAAP///////z//AQAAPwAAAAD///////8AABAAAAAAAAAA//////8HAAEAAAAAAAAAAP///wcAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8RAP8DAAAAAP////////8B/wP//w8AAAD////n/w//A38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////DwAAAAAAAAAAAAAAAAAA//////////8AAACAf/Jv////AIACAAAAAAAAAAAAAAD//P////8BAAoAAAD/////////BwAAAAAAAAAAAAAAAP///////////wMAgH/yb////7/5DwD/AwAAAAAAAAAA//z///////wbAAAAAfj/////BwQAAAHw//////8DACAAAP///////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAP////////9/gAD///////////8jAAD///////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wEA/wP//f///38AAAEAAAAAAPz///8AAAAAAAAAAAAAAAAAAH/7/////wEAQAAAAL/9////AwABAAAAAAAAAAAAAAAA//3/////f/8BAP8DAAD8/////P///n8AAAAAAAAAAAB/+/////9/tP8A/wO//f///3/7Af8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wcA9P/9////DwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9/AP///f/////HBwD/BwAAAAAAAAAAAAABAAAAAAAAAAAA/////////////////38AAP///////////////////////////////w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AQD///////8AAH4AAAD//////////////////////////////////////////////////////////////////////////wcABAAAACcA8AD///////////////////////////////8AAP//PwD//////////////////////////////////////////////////////////////////////////////wP//////////////////////////////////////////38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////wH///9/AAD///////////9/AAD///8/AAD///////8AAA8AAAD4///g//8AAAAAAAAAAAAAAAAAAP////////8B////f/8D////////////f/8D////Px8A////////fwAPAP8D+P//4P//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////H/8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAA////////////BwEAAAAAAAAA+P8AAAAAAAAAAAsAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAP///////////4f/////////gP//AAAAAAAAAAAbAAMA//////////////////////////////////8/AAAAAID/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA72//////////////////////////////////////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8///9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////B/8f/wH/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4OMH+OcPAAAAPAAAAAAAAAAAAAD/////////////////B/8f/wH/YwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////f+AHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9v/38AAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wP/////////////3///////////32Te/+vv/////////7/n39////97X/z9//////////////////////////////////////////////////////8//////f//9/////f//9/////f//9/////f/////3////9///3DwAAAAAAAP//////////////////////////P/////3///f////3///f////3///f////3/////9/////f//98////////////////9/+P//////HyAAEAAA+P7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////AAAAAAAAAAD/////////PwAAAAAAAAAAAAAAAAAAAAAAAP//////H4A/AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///+dsH/////////z8AAACAAAAAAAAAAAAAAAAAAAD//////x//P/9DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///z8AAP//////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9/AAD/////////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///z8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wf///////////////////////////////8fAAAAAAAAAP//////////DwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////HwB/AAAAAAD///////////8P/wMAAAAAAAAAAAAAAAAAAAAAAAAAAO////+W/vcKhOqWqpb3917/+/8P7vv/DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAP///////////////////////////////////////////////////////////////////////////////wEA//////8/////////////////////////////////////////////////////////////////////////////////////////////B////////////////////////////////////////////////////////wMA/////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAD//////////////z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgICAwQFBgcICQoLDA0CAgICAgICDgICAgICAgIOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCAgICAgICAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQICAgIDAgIEAgUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0CAh4CAgICAgICHyAhIiMCJCUmJygpAioCAgICKywCAgICLS4CAgIvMDEyMwICAgICAjQCAjU2NwI4OTo7PD0+Pzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlAAgJBQgICQ0RFRkdIAkk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlKAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICOTk5OUsCAgICAkxNTk8CAgJQAlFSAgICAgICAgICAgICAlNUAgJVAlYCAldYWVpbXF1eX2BhYmMCZGVmZwJoAmlqa2xtAm5vcHECcnMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUCAgICAgICAgICAgICAgICAgJ2dwICAngCAgJ5ejk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OXt8fQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+OTl/OTmAAgICAgICAgICAgICAgICAgICAoECAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAgICg4SFAoYCAgICAgICAgICAgICh4gCAgICAgICAgICiYp3AgKLAgICjAKNAo4CAgKPkAICAgICAgICAgICAgKRkgKTlAKVlpeYmZqbnAKdAgKen6ChAgICAgICAgICAjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OaIdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKMCAgICpKUCBAIFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdAgIeAgICAgICAh8gISIjAiQlJicoKQIqAgICAqanqKmqq6wurTmur7CxsrMCAgICAgK0AgI1NjcCODk6Ozw9PrU5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlLAgICAgK2TU63iYp3AgKLAgICjAKNAo4CAgKPkAICAgICAgICAgICAgKRkri5lAKVlpeYmZqbnAKdAgKen6ChAgICAgICAgICAlVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVVVFQBQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAQAAAAAAAAAAAAAQQRBVVVVVVVdVVVVVVVVVVVVRVVUAAEBU9d1VVVVVVVVVVRUAAAAAAFVVVVX8XVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBQAUABQEUFVVVVVVVVUVUVVVVVVVVVUAAAAAAABAVVVVVVVVVVVV1VdVVVVVVVVVVVVVVQUAAFRVVVVVVVVVVVVVVVVVFQAAVVVRVVVVVVUFEAAAAQFQVVVVVVVVVVVVVQFVVVVVVf////9/VVVVUBUAAFVVVVVVVVVVVVUFAAAAAAAAAAAAAAAAAEBVVVVVVVVVVVVVVVVVRVQBAFRRAQBVVQVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVRAFUVVFVFVVVBVVVVVVVVUVBVVVVVVVVVVVVVVVVVVVUQRUUUFFVVVVVVVVVUFFVVUFVVVVVVVVVVVVVVVVVVVQBEFRRVVVVVQVVVVVVVQUAUVVVVVVVVVVVVVVVVVVVBAFUVVFVAVVVBVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVFVFVVUVUVVVVVVVVVVVVVVVRUVVVVVVVVVVVVVVVVVQRUBQRQVUFVVQVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVFEQFBFBVQVVVBVVVVVVVVVVQVVVVVVVVVVVVVVVVVRVEAVRVQVUVVVUFVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVUUVBURVFVVVVVVVVVVVVVVVVVVVVVVVVVVVUQBAVVUVAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRAABUVVUAQFVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVURUVVVVVVVVVVVVVVVVVUBAABAAARVAQAAAQAAAAAAAAAAVFVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQEEAEFBVVVVVVVVUAVUVVVVAVRVVUVBVVFVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAVVVVVVVVVVVVVVVVQVQVVVVVVVVBVRVVVVVVVUFVVVVVVVVVQVVVVV///33//3XX3fW1ddVEABQVUUBAABVV1FVVVVVVVVVVVVVFQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVVFVFVQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVXFRRVVVVVVVVVVVVVVVVVVUUAQEQBAFQVAAAUVVVVVVVVVVVVVVVVAAAAAAAAAAAAAABQAAAAVVVVVVUAVVVVVVVVVVVVVVVVAABQBVRVVVVVVVVVVRUAAFVVVVBVVVVVVVVVBVAAUFVVVVVVVVVVVVVVVVVFUBEAVVVVVVVVVVVVVVVVVVUAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAEAFRRVVRQVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAAAAAAAAAAAAVVUVAFVVVVVVVQVAVVVVVVVVVVVVVVVVAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAVFVVVVVVVVVVVfVVVVVpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX9V9dVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVfVVVVVVVX1VVVVVVVaqqVVVVVf///1VVVVVVVVVVVVXVVVWlqtVVVVVdVfVVVVVVfVVfVXVVV1VVVVV1VfVddV1VXfVVVVVVVVVVV1VVVVVVVVVVd9XfVVVVVVVVVVVVVVVVVVVV/VVVVVVVVVdVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1VdVVVVVVVVVVVVVVVVXXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVUFVVVVVVVVVVVVVVVVVVVf3///////////////9fVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAACqqqqqqqqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVaqqqqqqqqqqqqqqqqqqCgCqqqpqqaqqqqqqqqqqqqqqqqqqqqqqqqqqaoGqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVamqqqqqqqqqqqqqqaqqqqqqqqqqqqqqqqiqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlWVqqqqqqqqqqqqqqpqqqqqqqqqqqqqqlVVqqqqqqqqqqqqqqqqqqqqVqqqqqqqqqqqqqqqqqpqVVVVVVVVVVVVVVVVVV9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVQAAAUFVVVVVVVVUFVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVRUUVVVVVVVVVQVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVUAAAAAUFVFFVVVVVVVVVVVVQUAUFVVVVVVFQAAEFVVVaqqqqqqqqpWQFVVVVVVVVVVVVVVFQVQUFRVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVAUBBQVVVFVVVVFVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVQQUVAVRVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUUVVVVVWqqqqqqqqqqqpVVVUAAAAAAEAVAAAAAAAAAAAAAAAAVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVDAAA8KqqWlUAAAAAqqqqqqqqqqpqqqqqqmqqVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFamqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlZVVVVVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVVVqmpVVQAAVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFQFUBQVUAVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVQFQVVVVVVVVVVVVVVVVVVUVVFVVVVVVVVVVVVVVVVVVVVVVVQUAVVVVVVVVVVVVVVVVVVVVVVUFAABUVVVVVVVVVVVVVVUFUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVAAAAQFVVVVVVVVVVVVUUVFUVUFVVVVVVVVVVVVVVFUBBVUVVVVVVVVVVVVVVVVVVVVVAVVVVVVVVVVUVAAEAVFVVVVVVVVVVVVVVVVVVFVVVVVBVVVVVVVVVVVVVVVUFAEAEVQEUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVUABVRVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUVAEBVVVVVVVBVVVVVVVVVVVVVVVVVFURUVVVRVRVVVVUFAFQAVFVVVVVVVVVVVVVVVVVVVVUUAEQRUAVAVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAABURVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVRQARBEEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVBVBVEFRVVVVVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVUVAEARVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVUQAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVREFEABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUAAEFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVFQARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAVVVFVVVVVVVVUBAEBVVVVVVVVVVVUVABRAVRVVVQFAAVVVVVVVVVVVVVUAAAAAQFBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBERVVVVVVVVVVVVVVVVVVVVVVVUAQAAQVVVVVVVVVVVVVVVVVVVVVVVVVVUFAAAAAAAFAARBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAUBFEAAAVVVVVVVVVVVVVVVVVVVVVVVVUBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVFVVQFVVVVVVVVVVVVVVVQVAVUBVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBUAAABQVVVVVVVVVVVVVVVVVVVVVVUFAABQAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBUVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVUVQFVVVVVVVVVVVVVVVVVVVVVVVVWqVFVVoGpVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVVVVVVVVVVVWVqqqqqqqqqmpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqalVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqappqqqqqqqqqqpqVVVVZVVVVVVVVVVqWVVVVapVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVVVVVVVVVVBAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAAAAAABQAAAAAABAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAVABAAAAAEABAFVVVVVVVVUFUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqpqVVWqqqqqqmpVVQAAAAAAAAAAAAAAAABAFQAAAAAAAAAAAAAAAFRVUVVVVVRVVVVVFQABAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVUAQAAAAAAUABAEQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUVVBVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAEBVVVVVVVVVVVVVVVVVVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1VVVVVVVVVVVVVVVVVVVVXX9/39VVVVVVVVVVVVVVVVVVVVVVVX1////////blVVVaqquqqqqqrq+r+/VaqqVlVfVVVVqlpVVVVVVVX//////////1dVVf3/3///////////////////////9///////VVVV/////////////3/V/1VVVf////9XV///////////////////////f/f/////////////////////////////////////////////////////////////1////////////////////19VVdV/////////VVVVVXVVVVVVVVV9VVVVV1VVVVVVVVVVVVVVVVVVVVVVVVVV1f///////////////////////////1VVVVVVVVVVVVVVVf//////////////////////X1VXf/1X/1VV1VdV//9XVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV////VVdVVVVVVVX//////////////3///9//////////////////////////////////////////////////////////////VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf///1f//3/1/////////////////39X/f///9f//3/V//9XVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVVVVVVVVVVVZllVhqqVZqlVVVVVVlVVVVVVVVVWVVVUAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAVVVVVVWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVAJZqWlpqqgVAplmVZVVVVVVVVVVVAAAAAFVWVVWpVlVVVVVVVVVVVVZVVVVVVVVVVQAAAAAAAAAAVFVVVZVZWVVVZVVVaVVVVVVVVVVVVVVVqqqqaqqqqlWqqlpVVVVZVaqqqlVVVVVlVVVaVVVVVaVlVlVVVZVVVVVVVVWmlpqWWVllqZaqqmZVqlVaWVVaVmVVVVVqqqWlWlVVVaWqWlVVWVlVVVlVVVVVVZVVVVVVVVVVVVVVVVVVVVVVVVVVVWVV9VVVVWlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVqqqqqqqqqqqqVlVVqqqqqqVaVVWaqlpVpaVVWlqllqVaVVVVpVpVlVVVVX1VaVmlVa9VZlVVVVWqqlVVZlX///9VVVWammqaVVVV1VVVparVVVWlXVX1VVVVVb1Vr6q6qquqqppVuqr6rrquVV31VVVVVVVVVVdVVVVVWVVVVXfV31VVVVVVVVWlqqqqqqqqqv1VVVVVVVVXVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdVXVVVVVVVVVVVVVVVVV61aVVVVVVVVVVVVqqqqqqqqqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqozAADAqqpaVQAAAACqqqqqqqqqqmqqqqqqaqpVVVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVVapqVVUAAFRZqqqqVqqqqqqqqqpaqqqqqqqqqqqqqqqqqqpaVaqqqqqqqqq6/v+/qqqqqlZVVVVVVVVVVVVVVVVV9f///////y4GAAAMAAAABAAAABoFAAAvBgAAnAMAADAxMjM0NTY3ODlhYmNkZWYvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi91dWlkLTEuMTYuMC9zcmMvZm10LnJzAOg+JwBbAAAAuwAAAA0AAADoPicAWwAAALMAAAAVAAAA6D4nAFsAAAC2AAAADQAAAOg+JwBbAAAAtwAAAA0AAAAAAAAA//////////+IPycAAAAAAAAAAAAAAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwCgPycATwAAABkBAAAZAAAAVHJpZWQgdG8gc2hyaW5rIHRvIGEgbGFyZ2VyIGNhcGFjaXR5AEAnACQAAAC0QycAUAAAALkCAAAJAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NvbnZlcnQvc2xpY2VzLnJzSnNWYWx1ZSgpq0AnAAgAAACzQCcAAQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTAwL3NyYy9jYWNoZS9pbnRlcm4ucnMAAADEQCcAbQAAABoAAAArAAAAY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWQAADEGAAAEAAAABAAAADIGAAAzBgAATGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAACMQScAKgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL29uY2VfY2VsbC0xLjIxLjMvc3JjL2xpYi5yc8BBJwBgAAAACAMAABkAAAByZWVudHJhbnQgaW5pdAAAMEInAA4AAADAQScAYAAAAHoCAAANAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLWZ1dHVyZXMtMC40LjUwL3NyYy9xdWV1ZS5ycwAAAFhCJwBtAAAAJQAAAC4AAABYQicAbQAAACgAAAApAAAAWEInAG0AAAA+AAAAGgAAAFhCJwBtAAAAPgAAACcAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNTAvc3JjL3Rhc2svc2luZ2xldGhyZWFkLnJzAAAACEMnAHkAAAAiAAAAFQAAADUGAAA2BgAANwYAADgGAAAIQycAeQAAAGcAAAAlAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnO0QycAUAAAAC4CAAARAAAACAAAAA0AAAAPAAAAT/cgAFf3IABk9yAAAAAAgAAAAAAAAAAABgAAAAYAAAAIAAAABwAAAOCBIAAgvCYA5oEgAO6BIACEgSAAkoEgAKCBIAC2gSAADgAAAA4AAAAWAAAAFgAAAJjKIACayiAAnMogAJ7KIACgyiAAosogAKTKIACmyiAAqMogAKrKIACsyiAArsogALDKIACyyiAAtMogALbKIAC4yiAAdNIgAITSIACU0iAApNIgAKTSIAC00iAAxNIgANTSIADk0iAA9NIgAATTIAAU0yAAJNMgADTTIABE0yAAVNMgAGTTIAB00yAAhNMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkyiAA9MogAATLIAAUyyAAJMsgADTLIABEyyAAVMsgAGTLIAB0yyAAhMsgAJTLIACkyyAAtMsgAMTLIADUyyAA5MsgAPTLIAAEzCAAFMwgACTMIAA0zCAARMwgAFTMIABUzCAAZMwgAHTMIACEzCAAlMwgAKTMIAC0zCAAxMwgANTMIADkzCAA9MwgAATNIAAEzSAAFM0gACTNIAA0zSAARM0gAFTNIABUzSAAZM0gAHTNIACEzSAAlM0gAKTNIAC0zSAAxM0gANTNIADkzSAA9M0gAPTNIAAEziAAFM4gACTOIAA0ziAARM4gAFTOIABkziAAdM4gAITOIACUziAApM4gALTOIADEziAA1M4gAOTOIAD0ziAABM8gAATPIAAUzyAAJM8gADTPIABEzyAAVM8gAGTPIABkzyAAdM8gAITPIACUzyAApM8gALTPIACkzSAAxM8gANTPIADkzyAA9M8gAATQIAAU0CAAJNAgADTQIABE0CAAVNAgAGTQIAB00CAAhNAgAJTQIACk0CAAtNAgAMTQIADU0CAA5NAgAPTQIAAE0SAAFNEgACTRIAA00SAARNEgAFTRIABk0SAAdNEgAITRIACU0SAApNEgALTRIADE0SAA1NEgAOTRIAD00SAABNIgABTSIAAk0iAANNIgAETSIABU0iAAZNIgAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAH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AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAaOcgAHDnIAB45yAAgOcgAIjnIACQ5yAAmOcgAKDnIACo5yAAsOcgALjnIADA5yAAyOcgANDnIADY5yAA4OcgAOjnIADw5yAA+OcgAADoIAAI6CAAEOggABjoIAAg6CAAKOggADDoIAA46CAAQOggAEjoIABQ6CAAWOggAGDoIABo6CAAcOggAHjoIACA6CAAiOggAJDoIACY6CAAoOggAKjoIACw6CAAuOggAMDoIADI6CAA0OggANjoIADg6CAA6OggAPDoIAD4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jyYA1Y8mAOSPJgDzjyYAA5AmABKQJgAhkCYAMJAmAD2QJgBPkCYAXJAmAGqQJgAGAAAACgAAAAkAAAAJAAAAAgAAAAUAAAAJAAAABQAAAAYAAAAGAAAAAgAAAAMAAAAIAAAABwAAAAcAAAAJAAAABgAAAAgAAAAHAAAAAwAAAAYAAAAGAAAABgAAAAQAAAAJAAAABgAAAAcAAAAFAAAACAAAAAUAAAAJAAAABAAAAAYAAAACAAAADgAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAADAAAAAgAAAAIAAAACAAAAAgAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAACAAAAAgAAAAIAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAADAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAADQAAAAsAAAAOAAAADwAAAA4AAAAOAAAADgAAACAAAAANAAAADwAAAA0AAAAIAAAACAAAAAUAAAAFAAAABQAAAAQAAAAFAAAABQAAAAUAAAAIAAAACAAAAAcAAAAG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", "base64");
+    var bytes = Buffer2.from("AGFzbQEAAAAB5wRNYAAAYAABf2AAAX5gAX8AYAF/AX9gAX8BfmABfwF8YAJ/fwBgAn9/AX9gAn9/AX5gAn9/AXxgA39/fwBgA39/fwF/YAN/f38BfmAEf39/fwBgBH9/f38Bf2AEf39/fwF+YAV/f39/fwBgBX9/f39/AX9gBn9/f39/fwBgBn9/f39/fwF/YAd/f39/f39/AGAHf39/f39/fwF/YAh/f39/f39/fwBgCH9/f39/f39/AX9gC39/f39/f39/f39/AX9gDX9/f39/f39/f39/f38AYA5/f39/f39/f39/f39/fwF/YA9/f39/f39/f39/f39/f38Bf2ATf39/f39/f39/f39/f39/f39/fwF/YBd/f39/f39/f39/f39/f39/f39/f39/fwF/YAl/f39/f39+fn4AYAV/f39/fgBgBn9/f39+fwBgBH9/f34AYAZ/f39+f38AYAN/f34Bf2AEf39+fwBgBH9/fn8Bf2AFf39+f38AYAZ/f35/fn8AYAV/f31/fwBgBX9/fH9/AGACf34AYAJ/fgF/YAN/fn8AYAN/fn8Bf2AEf35/fwBgBH9+f34BfmADf35+AGADf35+AX9gBH9+fn8AYAV/fn5+fwBgBX9+fn5+AGAEf31/fwBgAn98AGADf3x/AX9gBH98f38AYAR/fH9/AX9gAX4AYAF+AX9gAX4BfmACfn8AYAJ+fwF+YAN+f38Bf2ACfn4AYAJ+fgF+YAN+fn8AYAR+fn9/AX5gBH5+fn8BfmAHfn5+f39/fwF+YAF8AX9gAXwBfGACfH8Bf2ACfH8BfGACfHwBfGADfHx8AXwCyxo9GF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX251bWJlcl9uZXcARxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmluZGdlbl9iaWdpbnRfZnJvbV91NjQAPBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18VX193YmluZGdlbl9zdHJpbmdfbmV3AAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fDV9fd2JpbmRnZW5faW4ACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18WX193YmluZGdlbl9ib29sZWFuX2dldAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX3N0cmluZ19nZXQABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18UX193YmluZGdlbl9pc19vYmplY3QABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18TX193YmluZGdlbl9qc3ZhbF9lcQAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgADGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2Vycm9yX25ldwAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX2JpZ2ludAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX251bWJlcl9nZXQABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18kX193YmdfaXNTYWZlSW50ZWdlcl8zNDNlMmJlZWVlY2UxYmIwAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0ADwYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2xlbmd0aF9lMmQyYTQ5MTMyYzFiMjU2AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fH19fd2JnX2l0ZXJhdG9yXzlhMjRjODhkZjg2MGRjNjUAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18lX193YmdfaW5zdGFuY2VvZl9NYXBfZjM0NjljZTIyNDRkMjQzMAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19zZXRfM2YxZDBiOTg0ZWQyNzJlZAALGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19uZXdfMjNhMjY2NWZhYzgzYzYxMQAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxNfX3diaW5kZ2VuX2lzX2ZhbHN5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJF9fd2JnX2dldHdpdGhyZWZrZXlfMWRjMzYxYmQxMDA1M2JmZQAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX3N0cmluZwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19nZXRfYjliOTMwNDdmZTNjZjQ1YgAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx9fX3diZ190b1N0cmluZ181Mjg1NTk3OTYwNjc2YjdiAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld180MDVlMjJmMzkwNTc2Y2UyAAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld183OGZlYjEwOGI2NDcyNzEzAAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX3NldF8zNzgzNzAyM2YzZDc0MGU4AAsYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxZfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX25leHRfNjU3NGUxYThhNjJkMTA1NQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtfX3diZ19kb25lXzc2OWU1ZWRlNGIzMWM2N2IABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18cX193YmdfdmFsdWVfY2QxZmZhN2IxYWI3OTRmMQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19nZXRfNjdiMmJhNjJmYzMwZGUxMgAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtfX3diZ19uZXh0XzI1ZmVhZGZjMDkxM2ZlYTkABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfY2FsbF82NzJhNGQyMTYzNGQ0YTI0AAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fIF9fd2JnX25ld25vYXJnc18xMDVlZDQ3MTQ3NWFhZjUwAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fLV9fd2JnX3N0YXRpY19hY2Nlc3Nvcl9HTE9CQUxfODhhOTAyZDEzYTU1N2QwNwABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXzJfX3diZ19zdGF0aWNfYWNjZXNzb3JfR0xPQkFMX1RISVNfNTY1NzhiZTdlOWY4MzJiMAABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXy1fX3diZ19zdGF0aWNfYWNjZXNzb3JfV0lORE9XXzVkZTM3MDQzYTkxYTljNDAAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18rX193Ymdfc3RhdGljX2FjY2Vzc29yX1NFTEZfMzdjNWQ0MThlNGJmNTgxOQABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx5fX3diZ19pc0FycmF5X2ExZWFiN2UwZDA2NzM5MWIABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfY2FsbF83Y2NjZGQ2OWUwNzkxYWUyAAwYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2xlbmd0aF9hNDQ2MTkzZGMyMmMxMmY4AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fEV9fd2JpbmRnZW5fbWVtb3J5AAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2J1ZmZlcl82MDljYzNlZWU1MWVkMTU4AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld19hMTIwMDJhN2Y5MWM3NWJlAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX3NldF82NTU5NWJkZDg2OGIzMDA5AAsYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fLF9fd2JnX2luc3RhbmNlb2ZfVWludDhBcnJheV8xNzE1NmJjZjExODA4NmE5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGV9fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXEACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18tX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl9lMTQ1ODU0MzJlMzczN2ZjAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JnX2VudHJpZXNfMzI2NWQ0MTU4YjMzZTVkYwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxBfX3diaW5kZ2VuX3Rocm93AAcYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHF9fd2JpbmRnZW5fYmlnaW50X2dldF9hc19pNjQABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18XX193YmluZGdlbl9kZWJ1Z19zdHJpbmcABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18SX193YmluZGdlbl9jYl9kcm9wAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX3RoZW5fNDRiNzM5NDZkMmZiM2U3ZAAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyVfX3diZ19xdWV1ZU1pY3JvdGFza185N2Q5MmI0ZmNjOGE2MWM1AAMYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJV9fd2JnX3F1ZXVlTWljcm90YXNrX2QzMjE5ZGVmODI1NTI0ODUABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18eX193YmdfcmVzb2x2ZV80ODUxNzg1YzljNWY1NzNkAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyNTAyOQAMA5kilyIOBxELCxEHBwsHBwsHBwsLDgsLBw4HBwcHCwsHEw4LDhEOBwsHBy8HDhEHBwcIBwcHDgc6DgcLBwsIBwcPFQcLBwsTBxMLDhMEBwsHEQcLBw4LCwMOCwcHBwcHExMHBwcICwgTBwcHCxMEBwcIAwcHEQcVBwsHBw4DCwMTExMTEwcOBwcDDg4HBwcHEwMMBwcHBwcRBxEHDgcHBwsDBwcDCAsHDksLExEHBw4BBw4IBwcLAwsHDgsHBwhJEQMRBwcLBwMHBwgHEwQaEQcHDgsHCxEHDAwOBwgOEQgIDgwOCwsIDAcICAgIEwcHCAgHAxERBw4OBwcIAQcHAwcVAwcIDAsOBwcHBwsOAwcHBxERCwcICwcHEQcLBwcEBwMLDggHBxMOCwsDERELDAdMEwsIAwsEBwcECAcLBwcHCwcHBAcEBwcHAQcVBwsLDggLBwQODAcDBwcHBwsDBwcLBwMRBwcODAcLCAsHEQcOCxsHCAcHBwMHBwsLAwQLAwMEBwcHBwcLAwsDAwcDAwgIBw0HBwQHBw8VAw4OCAMWBw8LBw4HBwMHBwMHBwcLCwsHDwsHEwcLCA4PCwwHAwcHFQsHDwcEDgMHBwcHBwQLByEMEwcIBwcHBxMDFQgVCwcLOAsIEQcHCAgDBwsMDg4LBwcLBwcMCAcHBwcHCwwIBwwHDA4HDhgLBw4OCwsHCAcHBwgDERELCwoLAwgHDw8HCwMLBwcLDAgHEwMLBwcMCwcHDgQ6BwMDDgsDAwcHBw4HBw4DBwMIDgcODAcDCAMICAwDBwMODgwLCwsDBwsIBwwoFQcIKAcXDgcLCAMLBwcMBwcHBxUHBwMDAwwIAwcHBwcDCA4HBwcLDAcLERMFCxQIBwcMBAcHCwsHEwgMEQ4DBwcLCwcTBw4IAwcHLi0IDCsHDAsRBwcICwcOBwcLDg4LEwcOExMHCAcOBxEHBwcHAwQDEQcLCwcTBwMHEwcLAwsDFQcHCwgLCw4VFQcLExMLCwcIEwgHBwcLCwtERAcMFQsLEggHB0QHBwcHAwcHERMVCBMHBxUTBwcDBAtLDAcLBAgHDhMICAcDCA4TMQwDBwgHCwcHERMLBwgHBwcLBwgOBwwHCwcLBwcABwcHBwcHBwc+BA4LAwsfBwcHBwgHBwcHCAsOBwsLCwMHBxEODgcLDgcHEwgHERNACwsHBwcOAwgHCw4ICAcHBwsMDg4ODgcLBw4DCwcHAwcLCwMDBwQiCw4LDhMHBwgHBBYEBwQIBw4ICAcIFAQTBwsTCwMDBQhICxMHCwsHBw4LBw4HBwgDBxYHBwcHDwsHBwwHFQQDCAsOBwcVDggHCwcHAwsLEyAOBwQHBwcEAwcHBw8TBAcICAcHCwcLDgMHBwcHAyUHAxURDwsIBwcHBAcTDgsHAw4DBwsHCwsDAwsHBxEDMA4OAwsLCAcDBwcLBwgHAwgHCxMIBAMHCw8ECCMIAwgRCAsHBAsOEwcTAwsMDA4TEwMDBwcHAxIRBwgHBwsPCBMHBwcHDgcDBAgHCAcLAwcMAwgHBAMDEw4HEwcICAgHCwQHBwsDCxMLBwMTEwsDDgsLCAcICAgICAgICAcTBwcLCAcLAwMHBwcDBwcLCwcHBAcHFg4ODg4HBAcHEg4RCwgTEw4OBwcHBwcHBwcHBwcHBwgDCAMHCAgDCAsODgsDEwgDDAgOBwsODgcHCwsDCgcDAwcIEQsOCwcHCwMTCAsMDAMICAgFLQMHAwsLBwcIBAMRBwsOBwMHAw4HBAcHAwcHBw8LCAwHBwMMDw8PEQsDDgcEBwMEEQMMCAgHCwkLCwcHBwcLAw4LBAcHCwsrBwcDBAsHBwcHBAcSEQsHBwcIAwcTEwcLEgcHCwUIEQcLDAwHBwMOBwcHBxUDHgcMBy8DDwcHCAcLDgQDBwcHCwcICw4OCAcLCwcOAwMICwgIEwQIBwcDAwcICAgDAwcdCwMLCwcHBwcHCAcHDgcHDwMHDwsICAwHJgcHCwsLCAsHAwcIByYDBAgEDgsHAwMHBwsLCxwOBw8OCwsIDggDERELERUHCwsLAwcDBwMDESwDCAcHCAcOBxEHCAQtDgsZDkARBxEDDAMEAwgMDAgEEwcHCAMRCA4VBwcMDAcDBw4EAwcHAwgHDgcHNw4LCw4ICAcHBwgWBwgIBwgDAwgICAMDAysHCwcIDwQTAwcDDAMRCwgHCAcIBwgHBwcHBwwHBwsICAMDEw4HBwQEBw4MBwMMCw4OBwcHCwQHBxEHBwcHDAcHCAgHBwgHCAMDAwMICAgIAwMDAw4ODwcOBxEHAwsDCwhKCwgLCxMNERUHAw4HCwcECAcLCAcLCw4IBwQIBwcHCAgICAgICAgICAgICAgICAcLCwcHBwcDCEtLSwQHBwgICAcIAwQTBwgICAgIBwgICAgDAwMICAgICAgICAgICAgICAgICAcLCw8DBwMMCwsLBwMMDEtLSy0TBAQMCAcDAwMDAwMICAMDBwgOBxMDCy0HAwMHDg4LCwcIEQQIJBMrDhEICw4ICAcHCAgHCAsDBwMIBwcHAwgICxAHBwgICAcQCwcLAwcDBwgVCBELBAcLDgQHCAQDEwgICAgLCwcHBwcHAwcHAwwHNQcrEQwHDAgHKwcIAxMDBwcLEQQRCwgPEQMHAwcLDwcDCAgkBwcLJAcHBwgEBCQMDAgHAwgHBwgICAgICw4TBAMLAwMLCwMHAwcHAwcHBw4EDggOBwMDBwMDBBELBwcICwsDCAcHBAMHBwMMBwcHBwMHCwcIBwgDBwMDDwsHAwMDAwMDAwMDBwsICA8HCwsHEw8HBwcHBy0HCAgICAcHBwcGBwsHEREMB0UOCwsDAwMDBwMDBwgICAgICAgICAgICAgDAwcOAwgIAw4OBwcLBA4LCwcOCxMLCwsLDgsEAwQDBwQHBAUHKwMPAwgDNA8DDAgMBwwMDAwICAgICAgIQQcDCAwIBwMIBwgLDwgIBxEIBwcDCAcDDgcHBwwECAgICAgIBAcDBzMzBwgHCAgICw4HCAgICAcEDgsICAgIDAsDDA4TCA4ICAMHAwcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDBAcHCAgEAwgICwgICwMDAQQICAgLAwsDAwMIAwcHDgcHBwsLCAgLCAcHEQgMDggDCwsHBwsIAwMICAgICAMLAwMLCAgICAgICAgICAgICwsOBA4HBwcICAgICAgICAcHBwcLDwgLDw4ICAwIBwsLCw4HPggICAgICAgICAcDPgsHAwQEDgsLCwgEEREHBwMDAwMDBAgICAgICA4DCAgICAgICAgICAgICAgDCAgDEREIDhERCwsIAwsLCwcICAcHBAcHBwcICAgRDgc+BwcHCws+DAwMDAMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAcHEQcICwsLCwgLAxMDAwMICAcRAwMHAwQDAwcHBwMLCAgDAwMDBAgIAwMLAwgHDAgISAAHBwcHCwcHBwwDCwsHAxEBBwcIBw4HDAMDAwcHCAMLAwMHBwwLDgcDBwMiIgsHAwMDAwMLBwcLCwcICwgDBAgHBwcHBwcHAwsLAwgTAwQHCwgICAgHAwcDBwMDAwMHCAcHAwcDAwcLAwgHDgkJAwcHAwMDAwcDAwgICAMDAwMDAwMDBwMDAwMHCAgIAwMDAwMDAwMDBwcHBwMHAwcHAwMHAwMICwsHBwcHAwcHBwcDAwMDAwMDAwMDAwMHAwcDDQMHCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0HBwMDAwMDAwgHAxEDBwMDCwcDAwMDAwMDAwcRERERBwcHAxEEEQcOBwMIAwgICAgICAsEDggIDQgTCAgICAgICAgEBwgIBwcECAgIAwgHAwcHBxMDCAgDAwcLAwQIBwQLAwMDAwMDRgMDAz8rBw4ICwcLCAgICwcTCwgIQxMHBAICAgICDAwCAgICAgICAgICAgICAgICAgICDAICBwIHAgICDgcHBwMIAwgPFQcOBzcMAwMCAzstAggLBwsHCwMDBAcHCAgRCAsLCQMICAgEBA8HAwMHBwcIAwgIMjIICwgICAgIBBIIDwcIBwgIBwgIQj0ICAgICAgICAgICAgHBwcHBwcHBwcIBwcHBw8IDgMRCAsRBxEICwsICAcHCwMJCwcIAwMDDgcLCAgICAgICA4ICAcHBAsNOwcOCAgEOwgIBwgIMQEHAwMABwMIBwcDBwcOAwAAAAALAAAICAgICAgICAgICAgICAcHBwgMAwwADAgIC0sHAwcDDwcICAgIBAgICwQMCAgICQsREQgICAgICAQICAgICAgIBwMICAgHBwcDDwcHBwMHCw4RCAMLCwwODAMDCwcHBwcEDgQDAwMLAwgHBwcHBwcHBwcHBwcHBwsHBwMLBwELCwsLCwsLCwsLMQMHDAMDBwcHDhEDCAMPCAQECAMDAwMDAwcEBwcLBwsIDggICAMICAgIAwMHBAMICAclEQwMDAcDCAMIAwgIBwgOBQMIAw4DCAgPAwMDBwMDAwwDAwgICAsEBwMLAwMIAwMHAwMEAwMHDgcICAgICAQHCA0HBxEHBQcDAwsHBwcICBMDBxEHBwcHAwMEBAcDBwcHBwcHAwgHBwMHAwMHBwMDBAsIFA8ICAMPDwMIDw8PBw8HDwcLBAcPEhEREScqKRILAwsDCwsNBAcIBwcHBwcEBwcDBw4LAwsOAzIHBwgECzsOCAcBBw0NBAgHBwcDAwMDCAMDAwMDCwsLDwsLCwcOBwUFDAwHAwMDAwcIEQMDBwcDAwcEAwsLCwMDBAMICAMIAwg8CAgDCAMDDg4LBwMHBwcHBwMDAwsHBwcHAwMEAwMDAwMBAQMICAEDBAEBAQEBBwMDAwMDAwMDBAcHOwcDAwMDAwMDAzsDAwMDAwMDBwMDAwMHDQMDAwkIAwMICAgICAgHCAMDAwMLAwgDCAgIDQgIAREHBwcHBwM+AwMDAwMHBwcHBwcHBwMDAwMDBwsDAwgICAgICAgICwMDAwMHCAsHMQgHCAgMCAgICAgMCAgIBwwPCwwIBwMICAgICAgICAgIAwMDAwwMDAwIAwMDAwMLCAcICAwHDAcHAwcHAwMDAwMDAwMDAwMHCwcHBwcHAwgDAwgDAwEDAwMHAwMLCwgHBwMHBwsDAwQDEQQEBAgIDAMMAwsMDgMMAwwHOwMDAwMDAwMDAwMDAwMDAwMHAwcDAwMHCAsDBwcHCwgHBwgICAgIDg4ODg4ODggMCAgICwcDCAsLAwgHCAgLKwsHCAQIAwMDAwMDAwMDAwMDAwMDAwMDCwMHBwcHBwcHBwcHBwcHBwcLBAgIBwcDBwMMBAcD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oB4hfCAELQCcHiF9IAQoApgeIX4gBCgClB4hfyAEKAKQHiGAASAELQCMHiGBASAEKAKIHiGCASAEKAKEHiGDASAEKAKAHiGEASAELQD8HSGFASAEKAL4HSGGASAEKAL0HSGHASAEKALwHSGIASAELQDsHSGJASAEKALoHSGKASAEKALkHSGLASAEKALgHSGMASAELQDcHSGNASAEKALYHSGOASAEKALUHSGPASAEKALQHSGQASAELQDMHSGRASAEKALIHSGSASAEKALEHSGTASAEKALAHSGUASAELQC8HSGVASAEKAK4HSGWASAEKAK0HSGXASAEKAKwHSGYASAELQCsHSGZASAEKAKoHSGaASAEKAKkHSGbASAEKAKgHSGcASAELQCcHSGdASAEKAKYHSGeASAEKAKUHSGfASAEKAKQHSGgASAELQCMHSGhASAEKAKIHSGiASAEKAKEHSGjASAEKAKAHSGkASAELQD8HCGlASAEKAL4HCGmASAEKAL0HCGnASAEKALwHCGoASAELQDsHCGpASAEKALoHCGqASAEKALkHCGrASAEKALgHCGsASAELQDcHCGtASAEKALYHCGuASAEKALUHCGvASAEKALQHCGwASAELQDMHCGxASAEKALIHCGyASAEKALEHCGzASAEKALAHCG0ASAELQC8HCG1ASAEKAK4HCG2ASAEKAK0HCG3ASAEKAKwHCG4ASAELQCsHCG5ASAEKAKoHCG6ASAEKAKkHCG7ASAEKAKgHCG8ASAELQCcHCG9ASAEKAKYHCG+ASAEKAKUHCG/ASAEKAKQHCHAASAELQCMHCHBASAEKAKIHCHCASAEKAKEHCHDASAEKAKAHCHEASAELQD8GyHFASAEKAL4GyHGASAEKAL0GyHHASAEKALwGyHIASAELQDsGyHJASAEKALoGyHKASAEKALkGyHLASAEKALgGyHMASAELQDcGyHNASAEKALYGyHOASAEKALUGyHPASAEKALQGyHQASAELQDMGyHRASAEKALIGyHSASAEKALEGyHTASAEKALAGyHUASAELQC8GyHVASAEKAK4GyHWASAEKAK0GyHXASAEKAKwGyHYASAELQCsGyHZASAEKAKoGyHaASAEKAKkGyHbASAEKAKgGyHcASAELQCcGyHdASAEKAKYGyHeASAEKAKUGyHfASAEKAKQGyHg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7QIgBCgCxAwh7gIgBCgCyAwh7wIgBC0AzAwh8AIgBCgC0Awh8QIgBCgC1Awh8gIgBCgC2Awh8wIgBC0A3Awh9AIgBCgC4Awh9QIgBCgC5Awh9gIgBCgC6Awh9wIgBC0A7Awh+AIgBCgC8Awh+QIgBCgC9Awh+gIgBCgC+Awh+wIgBC0A/Awh/AIgBCgCgA0h/QIgBCgChA0h/gIgBCgCiA0h/wIgBC0AjA0hgAMgBCgCkA0hgQMgBCgClA0hggMgBCgCmA0hgwMgBC0AnA0hhAMgBCgCoA0hhQMgBCgCpA0hhgMgBCgCqA0hhwMgBC0ArA0hiAMgBCgCsA0hiQMgBCgCtA0higMgBCgCuA0hiwMgBC0AvA0hjAMgBCgCwA0hjQMgBCgCxA0hjgMgBCgCyA0hjwMgBC0AzA0hkAMgBCgC0A0hkQMgBCgC1A0hkgMgBCgC2A0hkwMgBC0A3A0hlAMgBCgC4A0hlQMgBCgC5A0hlgMgBCgC6A0hlwMgBC0A7A0hmAMgBCgC8A0hmQMgBCgC9A0hmgMgBCgC+A0hmwMgBC0A/A0hnAMgBCgCgA4hnQMgBCgChA4hngMgBCgCiA4hnwMgBC0AjA4hoAMgBCgCkA4hoQMgBCgClA4hogMgBCgCmA4howMgBC0AnA4hpAMgBCgCoA4hpQMgBCgCpA4hpgMgBCgCqA4hpwMgBC0ArA4hqAMgBCgCsA4hqQMgBCgCtA4hqgMgBCgCuA4hqwMgBC0AvA4hrAMgBCgCwA4hrQMgBCgCxA4hrgMgBCgCyA4hrwMgBC0AzA4hsAMgBCgC0A4hsQMgBCgC1A4hsgMgBCgC2A4hswMgBC0A3A4htAMgBCgC4A4htQMgBCgC5A4htgMgBCgC6A4htwMgBC0A7A4huAMgBCgC8A4huQMgBCgC9A4hugMgBCgC+A4huwMgBC0A/A4hvAMgBCgCgA8hvQMgBCgChA8hvgMgBCgCiA8hvwMgBC0AjA8hwAMgBC8ArQohwQMgBC8AvQohwgMgBC8AzQohwwMgBC8A3QohxAMgBC8A7QohxQMgBC8A/QohxgMgBC8AjQshxwMgBC8AnQshyAMgBC8ArQshyQMgBC8AvQshygMgBC8AzQshywMgBC8A3QshzAMgBC8A7QshzQMgBC8A/QshzgMgBC8AjQwhzwMgBC8AnQwh0AMgBC8ArQwh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tQIhuQIgtgIhugIgECGzAiAUIbQCIA8htQIgDiG2AiAeIbsCIBghECAXIRQgFiEPIBUhDiATIRVBACEWIB8hEyAhIR8gICEhICQhICAlISQgJiElIIwCISZBACGUBCCfBCGkBCCeBCGlBAsgBEGQD2oQ8hsMAQtBACGMBCCyASGNBCCzASGOBCC0ASGPBCC1ASGQBCC5ASG1ASC4ASG0ASC3ASGzASC2ASGyASC9ASG5ASC8ASG4ASC7ASG3ASC6ASG2ASDBASG9ASDAASG8ASC/ASG7ASC+ASG6ASDFASHBASDEASHAASDDASG/ASDCASG+ASDJASHFASDIASHEASDHASHDASDGASHCASDNASHJASDMASHIASDLASHHASDKASHGASDRASHNASDQASHMASDPASHLASDOASHKASDVASHRASDUASHQASDTASHPASDSASHOASDZASHVASDYASHUASDXASHTASDWASHSASDdASHZASDcASHYASDbASHXASDaASHWASDhASHdASDgASHcASDfASHbASDeASHaASDiASHgASARId8BIBIh3gEgwAMhkQQgIyHiAUEAIRFBACESILwDIcADIL0DISMgvgMh4QEgvwMhkgQguAMhvAMguQMhvQMgugMhvgMguwMhvwMgtAMhuAMgtQMhuQMgtgMhugMgtwMhuwMgsAMhtAMgsQMhtQMgsgMhtgMgswMhtwMgrAMhsAMgrQMhsQMgrgMhsgMgrwMhswMgqAMhrAMgqQMhrQMgqgMhrgMgqwMhrwMgpAMhqAMgpQMhqQMgpgMhqgMgpwMhqwMgoAMhpAMgoQMhpQMgogMhpgMgowMhpwMgnAMhoAMgnQMhoQMgngMhogMgnwMhowMgmAMhnAMgmQMhnQMgmgMhngMgmwMhnwMglAMhmAMglQMhmQMglgMhmgMglwMhmwMgkAMhlAMgkQMhlQMgkgMhlgMgkwMhlwMgjAMhkAMgjQMhkQMgjgMhkgMgjwMhkwMgiAMhjAMgiQMhjQMgigMhjgMgiwMhjwMghAMhiAMghQMhiQMghgMhigMghwMhiwMggAMhhAMggQMhhQMgggMhhgMggwMhhwMg/AIhgAMg/QIhgQMg/gIhggMg/wIhgwMg+AIh/AIg+QIh/QIg+gIh/gIg+wIh/wIg9AIh+AIg9QIh+QIg9gIh+gIg9wIh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NgLQBiAFIL0BOgDMBiAFIL4BNgLIBiAFIL8BNgLEBiAFIMABNgLABiAFIMEBOgC8BiAFIMIBNgK4BiAFIMMBNgK0BiAFIMQBNgKwBiAFIMUBOgCsBiAFIMYBNgKoBiAFIMcBNgKkBiAFIMgBNgKgBiAFIMkBOgCcBiAFIMoBNgKYBiAFIMsBNgKUBiAFIMwBNgKQBiAFIM0BOgCMBiAFIM4BNgKIBiAFIM8BNgKEBiAFINABNgKABiAFINEBOgD8BSAFINIBNgL4BSAFINMBNgL0BSAFINQBNgLwBSAFINUBOgDsBSAFINYBNgLoBSAFINcBNgLkBSAFINgBNgLgBSAFINkBOgDcBSAFINoBNgLYBSAFINsBNgLUBSAFINwBNgLQBSAFIN0BOgDMBSAFIN4BNgLIBSAFIN8BNgLEBSAFIOABNgLABSAFIIwEOgC8BSAFIBI2ArgFIAUgETYCtAUgBSDiATYCsAUgBSCRBDoArAUgBSCSBDYCqAUgBSDhATYCpAUgBSAjNgKgBSAFIMADOgCcBSAFIL8DNgKYBSAFIL4DNgKUBSAFIL0DNgKQBSAFILwDOgCMBSAFILsDNgKIBSAFILoDNgKEBSAFILkDNgKABSAFILgDOgD8BCAFILcDNgL4BCAFILYDNgL0BCAFILUDNgLwBCAFILQDOgDsBCAFILMDNgLoBCAFILIDNgLkBCAFILEDNgLgBCAFILADOgDcBCAFIK8DNgLYBCAFIK4DNgLUBCAFIK0DNgLQBCAFIKwDOgDMBCAFIKsDNgLIBCAFIKoDNgLEBCAFIKkDNgLABCAFIKgDOgC8BCAFIKcDNgK4BCAFIKYDNgK0BCAFIKUDNgKwBCAFIKQDOgCsBCAFIKMDNgKoBCAFIKIDNgKkBCAFIKEDNgKgBCAFIKADOgCcBCAFIJ8DNgKYBCAFIJ4DNgKUBCAFIJ0DNgKQBCAFIJwDOgCMBCAFIJsDNgKIBCAFIJoDNgKEBCAFIJkDNgKABCAFIJgDOgD8AyAFIJcDNgL4AyAFIJYDNgL0AyAFIJUDNgLwAyAFIJQDOgDsAyAFIJMDNgLoAyAFIJIDNgLkAyAFIJEDNgLgAyAFIJADOgDcAyAFII8DNgLYAyAFII4DNgLUAyAFII0DNgLQAyAFIIwDOgDMAyAFIIsDNgLIAyAFIIoDNgLEAyAFIIkDNgLA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HzoAnAsgBSCZAjYCmAsgBSCaAjYClAsgBSCbAjYCkAsgBSAhOgCMCyAFIJYCNgKICyAFIJcCNgKECyAFIJgCNgKACyAFICA6APwKIAUgkwI2AvgKIAUglAI2AvQKIAUglQI2AvAKIAUgJDoA7AogBSCQAjYC6AogBSCRAjYC5AogBSCSAjYC4AogBSAlOgDcCiAFII0CNgLYCiAFII4CNgLUCiAFII8CNgLQCiAFIAw6AMwKIAUgCzYCyAogBSANNgLECiAFIAg2AsAKIAUgRToAvAogBSBGNgK4CiAFIEc2ArQKIAUgSDYCsAogBSBJOgCsCiAFIEo2AqgKIAUgSzYCpAogBSBMNgKgCiAFIE06AJwKIAUgTjYCmAogBSBPNgKUCiAFIFA2ApAKIAUgUToAjAogBSBSNgKICiAFIFM2AoQKIAUgVDYCgAogBSBVOgD8CSAFIFY2AvgJIAUgVzYC9AkgBSBYNgLwCSAFIFk6AOwJIAUgWjYC6AkgBSBbNgLkCSAFIFw2AuAJIAUgXToA3AkgBSBeNgLYCSAFIF82AtQJIAUgYDYC0AkgBSBhOgDMCSAFIGI2AsgJIAUgYzYCxAkgBSBkNgLACSAFIGU6ALwJIAUgZjYCuAkgBSBnNgK0CSAFIGg2ArAJIAUgaToArAkgBSBqNgKoCSAFIGs2AqQJIAUgbDYCoAkgBSBtOgCcCSAFIG42ApgJIAUgbzYClAkgBSBwNgKQCSAFIHE6AIwJIAUgcjYCiAkgBSBzNgKECSAFIHQ2AoAJIAUgdToA/AggBSB2NgL4CCAFIHc2AvQIIAUgeDYC8AggBSB5OgDsCCAFIHo2AugIIAUgezYC5AggBSB8NgLgCCAFIH06ANwIIAUgfjYC2AggBSB/NgLUCCAFIIABNgLQCCAFIIEBOgDMCCAFIIIBNgLICCAFIIMBNgLECCAFIIQBNgLACCAFIIUBOgC8CCAFIIYBNgK4CCAFIIcBNgK0CCAFIIgBNgKwCCAFIIkBOgCsCCAFIIoBNgKoCCAFIIsBNgKkCCAFIIwBNgKgCCAFII0BOgCcCCAFII4BNgKYCCAFII8BNgKUCCAFIJABNgKQCCAFIJEBOgCMCCAFIJIBNgKICCAFIJMBNgKECCAFIJQBNgKACCAFIJUBOgD8ByAFIJYBNgL4ByAFIJcBNgL0ByAFIJgBNgLwByAFIJkBOgDsByAFIJoBNgLoByAFIJsBNgLkByAFIJwBNgLgByAFIJ0BOgDcByAFIJ4BNgLYByAFIJ8BNgLUByAFIKABNgLQByAFIKEBOgDMByAFIKIBNgLIByAFIKMBNgLEByAFIKQBNgLAByAFIKUBOgC8ByAFIKYBNgK4ByAFIKcBNgK0ByAFIKgBNgKwByAFIKkBOgCsByAFIKoBNgKoByAFIKsBNgKkByAFIKwBNgKgByAFIK0BOgCcByAFIK4BNgKYByAFIK8BNgKUByAFILABNgKQByAFILEBOgCMByAFIB42AogHIAUgGDYChAcgBSACNgKAByAFIAM6APwGIAUgjQQ2AvgGIAUgjgQ2AvQGIAUgjwQ2AvAGIAUgkAQ6AOwGIAUgsgE2AugGIAUgswE2AuQGIAUgtAE2AuAGIAUgtQE6ANwGIAUgtgE2AtgGIAUgtwE2AtQGIAUguAE2AtAGIAUguQE6AMwGIAUgugE2AsgGIAUguwE2AsQGIAUgvAE2AsAGIAUgvQE6ALwGIAUgvgE2ArgGIAUgvwE2ArQGIAUgwAE2ArAGIAUgwQE6AKwGIAUgwgE2AqgGIAUgwwE2AqQGIAUgxAE2AqAGIAUgxQE6AJwGIAUgxgE2ApgGIAUgxwE2ApQGIAUgyAE2ApAGIAUgyQE6AIwGIAUgygE2AogGIAUgywE2AoQGIAUgzAE2AoAGIAUgzQE6APwFIAUgzgE2AvgFIAUgzwE2AvQFIAUg0AE2AvAFIAUg0QE6AOwFIAUg0gE2AugFIAUg0wE2AuQFIAUg1AE2AuAFIAUg1QE6ANwFIAUg1gE2AtgFIAUg1wE2AtQFIAUg2AE2AtAFIAUg2QE6AMwFIAUg2gE2AsgFIAUg2wE2AsQFIAUg3AE2AsAFIAUg3QE6ALwFIAUg3gE2ArgFIAUg3wE2ArQFIAUg4AE2ArAFIAUgjAQ6AKwFIAUgEjYCqAUgBSARNgKkBSAFIOIBNgKgBSAFIJEEOgCcBSAFIJIENgKYBSAFIOEBNgKUBSAFICM2ApAFIAUgwAM6AIwFIAUgvwM2AogFIAUgvgM2AoQFIAUgvQM2AoAFIAUgvAM6APwEIAUguwM2AvgEIAUgugM2AvQEIAUguQM2AvAEIAUguAM6AOwEIAUgtwM2AugEIAUgtgM2AuQEIAUgtQM2AuAEIAUgtAM6ANwEIAUgswM2AtgEIAUgsgM2AtQEIAUgsQM2AtAEIAUgsAM6AMwEIAUgrwM2AsgEIAUgrgM2AsQEIAUgrQM2AsAEIAUgrAM6ALwEIAUgqwM2ArgEIAUgqgM2ArQEIAUgqQM2ArAEIAUgqAM6AKwEIAUgpwM2AqgEIAUgpgM2AqQEIAUgpQM2AqAEIAUgpAM6AJwEIAUgowM2ApgEIAUgogM2ApQEIAUgoQM2ApAEIAUgoAM6AIwEIAUgnwM2AogEIAUgngM2AoQEIAUgnQM2AoAEIAUgnAM6APwDIAUgmwM2AvgDIAUgmgM2AvQDIAUgmQM2AvADIAUgmAM6AOwDIAUglwM2AugDIAUglgM2AuQDIAUglQM2AuADIAUglAM6ANwDIAUgkwM2AtgDIAUgkgM2AtQDIAUgkQM2AtADIAUgkAM6AMwDIAUgjwM2AsgDIAUgjgM2AsQDIAUgjQM2AsADIAUgjAM6ALwDIAUgiwM2ArgDIAUgigM2ArQDIAUgiQM2ArADIAUgiAM6AKwDIAUghwM2AqgDIAUghgM2AqQDIAUghQM2AqADIAUghAM6AJwDIAUggwM2ApgDIAUgggM2ApQDIAUggQM2ApADIAUggAM6AIwDIAUg/wI2AogDIAUg/gI2AoQDIAUg/QI2AoADIAUg/AI6APwCIAUg+wI2AvgCIAUg+gI2AvQCIAUg+QI2AvACIAUg+AI6AOwCIAUg9wI2AugCIAUg9gI2AuQCIAUg9QI2AuACIAUg9AI6ANwCIAUg8wI2AtgCIAUg8gI2AtQCIAUg8QI2AtACIAUg8AI6AMwCIAUg7wI2AsgCIAUg7gI2AsQCIAUg7QI2AsACIAUg7AI6ALwCIAUg6wI2ArgCIAUg6gI2ArQCIAUg6QI2ArACIAUg6AI6AKwCIAUg5wI2AqgCIAUg5gI2AqQCIAUg5QI2AqACIAUg5AI6AJwCIAUg4wI2ApgCIAUg4gI2ApQCIAUg4QI2ApACIAUg4AI6AIwCIAUg3wI2AogCIAUg3gI2AoQCIAUg3QI2AoACIAUg3AI6APwBIAUg2wI2AvgBIAUg2gI2AvQBIAUg2QI2AvABIAUg2AI6AOwBIAUg1wI2AugBIAUg1gI2AuQBIAUg1QI2AuABIAUg1AI6ANwBIAUg0wI2AtgBIAUg0gI2AtQBIAUg0QI2AtABIAUg0AI6AMwBIAUgzwI2AsgBIAUgzgI2AsQBIAUgzQI2AsABIAUgzAI6ALwBIAUgywI2ArgBIAUgygI2ArQBIAUgyQI2ArABIAUgyAI6AKwBIAUgxwI2AqgBIAUgxgI2AqQBIAUgxQI2AqABIAUgxAI6AJwBIAUgwwI2ApgBIAUgwgI2ApQBIAUgwQI2ApABIAUgwAI6AIwBIAUgtwI2AogBIAUgvgI2AoQBIAUgvQI2AoABIAUgvAI6AHwgBSCMAjYCeCAFILoCNgJ0IAUguQI2AnAgBSC4AjoAbCAFIJMENgJoIAUgtgI2AmQgBSC1AjYCYCAFILQCOgBcIAUgswI2AlggBSAZNgJUIAUgGjYCUCAFIBs6AEwgBSAcNgJIIAUgHTYCRCAFIL8CNgJAIAUgsgI2AjAgBUEBNgIEIAVBATYCACAFQc8NaiCVBEEQdjoAACAFQb8NaiA7QRB2OgAAIAVBrw1qIDpBEHY6AAAgBUGfDWogOUEQdjoAACAFQY8NaiA4QRB2OgAAIAVB/wxqIDdBEHY6AAAgBUHvDGogNkEQdjoAACAFQd8MaiA1QRB2OgAAIAVBzwxqIDRBEHY6AAAgBUG/DGogM0EQdjoAACAFQa8MaiAyQRB2OgAAIAVBnwxqIDFBEHY6AAAgBUGPDGogMEEQdjoAACAFQf8LaiAvQRB2OgAAIAVB7wtqIC5BEHY6AAAgBUHfC2ogDkEQdjoAACAFQc8LaiA8QRB2OgAAIAVBvwtqIC1BEHY6AAAgBUGvC2ogLEEQdjoAACAFQZ8LaiArQRB2OgAAIAVBjwtqICpBEHY6AAAgBUH/CmogKUEQdjoAACAFQe8KaiAoQRB2OgAAIAVB3wpqICdBEHY6AAAgBUHPCmogF0EQdjoAACAFQb8KaiDoA0EQdjoAACAFQa8KaiDpA0EQdjoAACAFQZ8KaiDqA0EQdjoAACAFQY8KaiDrA0EQdjoAACAFQf8JaiDsA0EQdjoAACAFQe8JaiDtA0EQdjoAACAFQd8JaiDuA0EQdjoAACAFQc8JaiDvA0EQdjoAACAFQb8JaiDwA0EQdjoAACAFQa8JaiDxA0EQdjoAACAFQZ8JaiDyA0EQdjoAACAFQY8JaiDzA0EQdjoAACAFQf8IaiD0A0EQdjoAACAFQe8IaiD1A0EQdjoAACAFQd8IaiD2A0EQdjoAACAFQc8IaiD3A0EQdjoAACAFQb8IaiD4A0EQdjoAACAFQa8IaiD5A0EQdjoAACAFQZ8IaiD6A0EQdjoAACAFQY8IaiD7A0EQdjoAACAFQf8HaiD8A0EQdjoAACAFQe8HaiD9A0EQdjoAACAFQd8HaiD+A0EQdjoAACAFQc8HaiD/A0EQdjoAACAFQb8HaiCABEEQdjoAACAFQa8HaiCBBEEQdjoAACAFQZ8HaiCCBEEQdjoAACAFQY8HaiCDBEEQdjoAACAFQf8GaiCKAkEQdjoAACAFQe8GaiCJAkEQdjoAACAFQd8GaiCIAkEQdjoAACAFQc8GaiCHAkEQdjoAACAFQb8GaiCGAkEQdjoAACAFQa8GaiCFAkEQdjoAACAFQZ8GaiCEAkEQdjoAACAFQY8GaiCDAkEQdjoAACAFQf8FaiCCAkEQdjoAACAFQe8FaiCBAkEQdjoAACAFQd8FaiCAAkEQdjoAACAFQc8FaiD/AUEQdjoAACAFQb8FaiAWQRB2OgAAIAVBrwVqIP4BQRB2OgAAIAVBnwVqIP0BQRB2OgAAIAVBjwVqIPwBQRB2OgAAIAVB/wRqIPsBQRB2OgAAIAVB7wRqIPoBQRB2OgAAIAVB3wRqIPkBQRB2OgAAIAVBzwRqIPgBQRB2OgAAIAVBvwRqIPcBQRB2OgAAIAVBrwRqIPYBQRB2OgAAIAVBnwRqIPUBQRB2OgAAIAVBjwRqIPQBQRB2OgAAIAVB/wNqIPMBQRB2OgAAIAVB7wNqIPIBQRB2OgAAIAVB3wNqIPEBQRB2OgAAIAVBzwNqIPABQRB2OgAAIAVBvwNqIO8BQRB2OgAAIAVBrwNqIO4BQRB2OgAAIAVBnwNqIO0BQRB2OgAAIAVBjwNqIOwBQRB2OgAAIAVB/wJqIOsBQRB2OgAAIAVB7wJqIOoBQRB2OgAAIAVB3wJqIOkBQRB2OgAAIAVBzwJqIOgBQRB2OgAAIAVBvwJqIOcBQRB2OgAAIAVBrwJqIOYBQRB2OgAAIAVBnwJqIOUBQRB2OgAAIAVBjwJqIOQBQRB2OgAAIAVB/wFqIOMBQRB2OgAAIAVB7wFqIERBEHY6AAAgBUHfAWogQ0EQdjoAACAFQc8BaiBCQRB2OgAAIAVBvwFqIEFBEHY6AAAgBUGvAWogQEEQdjoAACAFQZ8BaiA/QRB2OgAAIAVBjwFqID5BEHY6AAAgBUH/AGogPUEQdjoAACAFQe8AaiAJQRB2OgAAIAVB3wBqIApBEHY6AAAgBUHPAGogBkEQdjoAACAFIKEEPgI8IAUgowQ3AyggBSCfBDcDGAJAQYAFRQ0AIAVB0A1qIARB8BpqQYAF/AoAAAsgBUEAOgDkEiAFIJgENgLgEiAFIKYENwPYEiAFIJoENgLUEiAFIJYENgLQEiAAQZyVhAE2AgggACAFNgIEIABBAjYCAAwCC0EALQDA8Z0BGkEQQcANEJ4HIgVFDQAgBSCVBDsAvQ0gBSA7OwCtDSAFIDo7AJ0NIAUgOTsAjQ0gBSA4OwD9DCAFIDc7AO0MIAUgNjsA3QwgBSA1OwDNDCAFIDQ7AL0MIAUgMzsArQwgBSAyOwCdDCAFIDE7AI0MIAUgMDsA/QsgBSAvOwDtCyAFIC47AN0LIAUgDjsAzQsgBSA8OwC9CyAFIC07AK0LIAUgLDsAnQsgBSArOwCNCyAFICo7AP0KIAUgKTsA7QogBSAoOwDdCiAFICc7AM0KIAUgFzsAvQogBSDoAzsArQogBSDpAzsAnQogBSDqAzsAjQogBSDrAzsA/QkgBSDsAzsA7QkgBSDtAzsA3QkgBSDuAzsAzQkgBSDvAzsAvQkgBSDwAzsArQkgBSDxAzsAnQkgBSDyAzsAjQkgBSDzAzsA/QggBSD0AzsA7QggBSD1AzsA3QggBSD2AzsAzQggBSD3AzsAvQggBSD4AzsArQggBSD5AzsAnQggBSD6AzsAjQggBSD7AzsA/QcgBSD8AzsA7QcgBSD9AzsA3QcgBSD+AzsAzQcgBSD/AzsAvQcgBSCABDsArQcgBSCBBDsAnQcgBSCCBDsAjQcgBSCDBDsA/QYgBSCKAjsA7QYgBSCJAjsA3QYgBSCIAjsAzQYgBSCHAjsAvQYgBSCGAjsArQYgBSCFAjsAnQYgBSCEAjsAjQYgBSCDAjsA/QUgBSCCAjsA7QUgBSCBAjsA3QUgBSCAAjsAzQUgBSD/ATsAvQUgBSAWOwCtBSAFIP4BOwCdBSAFIP0BOwCNBSAFIPwBOwD9BCAFIPsBOwDtBCAFIPoBOwDdBCAFIPkBOwDNBCAFIPgBOwC9BCAFIPcBOwCtBCAFIPYBOwCdBCAFIPUBOwCNBCAFIPQBOwD9AyAFIPMBOwDtAyAFIPIBOwDdAyAFIPEBOwDNAyAFIPABOwC9AyAFIO8BOwCtAyAFIO4BOwCdAyAFIO0BOwCNAyAFIOwBOwD9AiAFIOsBOwDtAiAFIOoBOwDdAiAFIOkBOwDNAiAFIOgBOwC9AiAFIOcBOwCtAiAFIOYBOwCdAiAFIOUBOwCNAiAFIOQBOwD9ASAFIOMBOwDtASAFIEQ7AN0BIAUgQzsAzQEgBSBCOwC9ASAFIEE7AK0BIAUgQDsAnQEgBSA/OwCNASAFID47AH0gBSA9OwBtIAUgCTsAXSAFIAo7AE0gBSAGOwA9IAUgoAQ3AiQgBSCiBDcDECAFIJQEOgC8DSAFICI2ArgNIAUgBzYCtA0gBSABNgKwDSAFIIQEOgCsDSAFIIUENgKoDSAFIIYENgKkDSAFIIcENgKgDSAFIIgEOgCcDSAFIIkENgKYDSAFIIoENgKUDSAFIIsENgKQDSAFIOQDOgCMDSAFIOUDNgKIDSAFIOYDNgKEDSAFIOcDNgKADSAFIOADOgD8DCAFIOEDNgL4DCAFIOIDNgL0DCAFIOMDNgLwDCAFINwDOgDsDCAFIN0DNgLoDCAFIN4DNgLkDCAFIN8DNgLgDCAFINgDOgDcDCAFINkDNgLYDCAFINoDNgLUDCAFINsDNgLQDCAFINQDOgDMDCAFINUDNgLIDCAFINYDNgLEDCAFINcDNgLADCAFINADOgC8DCAFINEDNgK4DCAFINIDNgK0DCAFINMDNgKwDCAFIMwDOgCsDCAFIM0DNgKoDCAFIM4DNgKkDCAFIM8DNgKgDCAFIMgDOgCcDCAFIMkDNgKYDCAFIMoDNgKUDCAFIMsDNgKQDCAFIMQDOgCMDCAFIMUDNgKIDCAFIMYDNgKEDCAFIMcDNgKADCAFILECOgD8CyAFIMEDNgL4CyAFIMIDNgL0CyAFIMMDNgLwCyAFIK0COgDsCyAFIK4CNgLoCyAFIK8CNgLkCyAFILACNgLgCyAFIKkCOgDcCyAFIKoCNgLYCyAFIKsCNgLUCyAFIKwCNgLQCyAFIKUCOgDMCyAFIKYCNgLICyAFIKcCNgLECyAFIKgCNgLACyAFIA86ALwLIAUgogI2ArgLIAUgowI2ArQLIAUgpAI2ArALIAUgFToArAsgBSCfAjYCqAsgBSCgAjYCpAsgBSChAjYCoAsgBSATOgCcCyAFIJwCNgKYCyAFIJ0CNgKUCyAFIJ4CNgKQCyAFIB86AIwLIAUgmQI2AogLIAUgmgI2AoQLIAUgmwI2AoALIAUgIToA/AogBSCWAjYC+AogBSCXAjYC9AogBSCYAjYC8AogBSAgOgDsCiAFIJMCNgLoCiAFIJQCNgLkCiAFIJUCNgLgCiAFICQ6ANwKIAUgkAI2AtgKIAUgkQI2AtQKIAUgkgI2AtAKIAUgJToAzAogBSCNAjYCyAogBSCOAjYCxAogBSCPAjYCwAogBSAMOgC8CiAFIAs2ArgKIAUgDTYCtAogBSAINgKwCiAFIEU6AKwKIAUgRjYCqAogBSBHNgKkCiAFIEg2AqAKIAUgSToAnAogBSBKNgKYCiAFIEs2ApQKIAUgTDYCkAogBSBNOgCMCiAFIE42AogKIAUgTzYChAogBSBQNgKACiAFIFE6APwJIAUgUjYC+AkgBSBTNgL0CSAFIFQ2AvAJIAUgVToA7AkgBSBWNgLoCSAFIFc2AuQJIAUgWDYC4AkgBSBZOgDcCSAFIFo2AtgJIAUgWzYC1AkgBSBcNgLQCSAFIF06AMwJIAUgXjYCyAkgBSBfNgLECSAFIGA2AsAJIAUgYToAvAkgBSBiNgK4CSAFIGM2ArQJIAUgZDYCsAkgBSBlOgCsCSAFIGY2AqgJIAUgZzYCpAkgBSBoNgKgCSAFIGk6AJwJIAUgajYCmAkgBSBrNgKUCSAFIGw2ApAJIAUgbToAjAkgBSBuNgKICSAFIG82AoQJIAUgcDYCgAkgBSBxOgD8CCAFIHI2AvgIIAUgczYC9AggBSB0NgLwCCAFIHU6AOwIIAUgdjYC6AggBSB3NgLkCCAFIHg2AuAIIAUgeToA3AggBSB6NgLYCCAFIHs2AtQIIAUgfDYC0AggBSB9OgDMCCAFIH42AsgIIAUgfzYCxAggBSCAATYCwAggBSCBAToAvAggBSCCATYCuAggBSCDATYCtAggBSCEATYCsAggBSCFAToArAggBSCGATYCqAggBSCHATYCpAggBSCIATYCoAggBSCJAToAnAggBSCKATYCmAggBSCLATYClAggBSCMATYCkAggBSCNAToAjAggBSCOATYCiAggBSCPATYChAggBSCQATYCgAggBSCRAToA/AcgBSCSATYC+AcgBSCTATYC9AcgBSCUATYC8AcgBSCVAToA7AcgBSCWATYC6AcgBSCXATYC5AcgBSCYATYC4AcgBSCZAToA3AcgBSCaATYC2AcgBSCbATYC1AcgBSCcATYC0AcgBSCdAToAzAcgBSCeATYCyAcgBSCfATYCxAcgBSCgATYCwAcgBSChAToAvAcgBSCiATYCuAcgBSCjATYCtAcgBSCkATYCsAcgBSClAToArAcgBSCmATYCqAcgBSCnATYCpAcgBSCoATYCoAcgBSCpAToAnAcgBSCqATYCmAcgBSCrATYClAcgBSCsATYCkAcgBSCtAToAjAcgBSCuATYCiAcgBSCvATYChAcgBSCwATYCgAcgBSCxAToA/AYgBSAeNgL4BiAFIBg2AvQGIAUgAjYC8AYgBSADOgDsBiAFII0ENgLoBiAFII4ENgLkBiAFII8ENgLgBiAFIJAEOgDcBiAFILIBNgLYBiAFILMBNgLUBiAFILQBNgLQBiAFILUBOgDMBiAFILYBNgLIBiAFILcBNgLEBiAFILgBNgLABiAFILkBOgC8BiAFILoBNgK4BiAFILsBNgK0BiAFILwBNgKwBiAFIL0BOgCsBiAFIL4BNgKoBiAFIL8BNgKkBiAFIMABNgKgBiAFIMEBOgCcBiAFIMIBNgKYBiAFIMMBNgKUBiAFIMQBNgKQBiAFIMUBOgCMBiAFIMYBNgKIBiAFIMcBNgKEBiAFIMgBNgKABiAFIMkBOgD8BSAFIMoBNgL4BSAFIMsBNgL0BSAFIMwBNgLwBSAFIM0BOgDsBSAFIM4BNgLoBSAFIM8BNgLkBSAFINABNgLgBSAFINEBOgDcBSAFINIBNgLYBSAFINMBNgLUBSAFINQBNgLQBSAFINUBOgDMBSAFINYBNgLIBSAFINcBNgLEBSAFINgBNgLABSAFINkBOgC8BSAFINoBNgK4BSAFINsBNgK0BSAFINwBNgKwBSAFIN0BOgCsBSAFIN4BNgKoBSAFIN8BNgKkBSAFIOABNgKgBSAFIIwEOgCcBSAFIBI2ApgFIAUgETYClAUgBSDiATYCkAUgBSCRBDoAjAUgBSCSBDYCiAUgBSDhATYChAUgBSAjNgKABSAFIMADOgD8BCAFIL8DNgL4BCAFIL4DNgL0BCAFIL0DNgLwBCAFILwDOgDsBCAFILsDNgLoBCAFILoDNgLkBCAFILkDNgLgBCAFILgDOgDcBCAFILcDNgLYBCAFILYDNgLUBCAFILUDNgLQBCAFILQDOgDMBCAFILMDNgLIBCAFILIDNgLEBCAFILEDNgLABCAFILADOgC8BCAFIK8DNgK4BCAFIK4DNgK0BCAFIK0DNgKwBCAFIKwDOgCsBCAFIKsDNgKoBCAFIKoDNgKkBCAFIKkDNgKgBCAFIKgDOgCcBCAFIKcDNgKYBCAFIKYDNgKUBCAFIKUDNgKQBCAFIKQDOgCMBCAFIKMDNgKIBCAFIKIDNgKEBCAFIKEDNgKABCAFIKADOgD8AyAFIJ8DNgL4AyAFIJ4DNgL0AyAFIJ0DNgLwAyAFIJwDOgDsAyAFIJsDNgLoAyAFIJoDNgLkAyAFIJkDNgLgAyAFIJgDOgDcAyAFIJcDNgLYAyAFIJYDNgLUAyAFIJUDNgLQAyAFIJQDOgDMAyAFIJMDNgLIAyAFIJIDNgLEAyAFIJEDNgLAAyAFIJADOgC8AyAFII8DNgK4AyAFII4DNgK0AyAFII0DNgKwAyAFIIwDOgCsAyAFIIsDNgKoAyAFIIoDNgKkAyAFIIkDNgKgAyAFIIgDOgCcAyAFIIcDNgKYAyAFIIYDNgKUAyAFIIUDNgKQAyAFIIQDOgCMAyAFIIMDNgKIAyAFIIIDNgKEAyAFIIEDNgKAAyAFIIADOgD8AiAFIP8CNgL4AiAFIP4CNgL0AiAFIP0CNgLwAiAFIPwCOgDsAiAFIPsCNgLoAiAFIPoCNgLkAiAFIPkCNgLgAiAFIPgCOgDcAiAFIPcCNgLYAiAFIPYCNgLUAiAFIPUCNgLQAiAFIPQCOgDMAiAFIPMCNgLIAiAFIPICNgLEAiAFIPECNgLAAiAFIPACOgC8AiAFIO8CNgK4AiAFIO4CNgK0AiAFIO0CNgKwAiAFIOwCOgCsAiAFIOsCNgKoAiAFIOoCNgKkAiAFIOkCNgKgAiAFIOgCOgCcAiAFIOcCNgKYAiAFIOYCNgKUAiAFIOUCNgKQAiAFIOQCOgCMAiAFIOMCNgKIAiAFIOICNgKEAiAFIOECNgKAAiAFIOACOgD8ASAFIN8CNgL4ASAFIN4CNgL0ASAFIN0CNgLwASAFINwCOgDsASAFINsCNgLoASAFINoCNgLkASAFINkCNgLgASAFINgCOgDcASAFINcCNgLYASAFINYCNgLUASAFINUCNgLQASAFINQCOgDMASAFINMCNgLIASAFINICNgLEASAFINECNgLAASAF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FAALAkAgAi0ACUUNACADIAFB8dSaAUETIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAApFDQAgAyABQYTVmgFBECACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQALRQ0AIAMgAUGU1ZoBQRMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ADEUNACADIAFBp9WaAUEXIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAA1FDQAgAyABQb7VmgFBDyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAORQ0AIAMgAUHN1ZoBQRggAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AD0UNACADIAFB5dWaAUEOIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABBFDQAgAyABQfPVmgFBEiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQARRQ0AIAMgAUGF1poBQRUgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AEkUNACADIAFBmtaaAUELIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABNFDQAgAyABQaXWmgFBCiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAURQ0AIAMgAUGv1poBQRsgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AFUUNACADIAFBytaaAUEiIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABZFDQAgAyABQezWmgFBGiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAXRQ0AIAMgAUGG15oBQRogAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AGEUNACADIAFBoNeaAUEdIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABlFDQAgAyABQb3XmgFBECACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAaRQ0AIAMgAUHN15oBQSsgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AG0UNACADIAFB+NeaAUEeIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABxFDQAgAyABQZbYmgFBFCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAdRQ0AIAMgAUGq2JoBQRcgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AHkUNACADIAFBwdiaAUEYIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAB9FDQAgAyABQdnYmgFBHiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAgRQ0AIAMgAUH32JoBQR0gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AIUUNACADIAFBlNmaAUEXIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACJFDQAgAyABQavZmgFBGiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAjRQ0AIAMgAUHF2ZoBQRggAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AJEUNACADIAFB3dmaAUEZIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACVFDQAgAyABQfbZmgFBGCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAmRQ0AIAMgAUGO2poBQSMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AJ0UNACADIAFBsdqaAUEjIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAChFDQAgAyABQdTamgFBISACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQApRQ0AIAMgAUH12poBQQkgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AKkUNACADIAFB/tqaAUEMIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACtFDQAgAyABQYrbmgFBCCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAsRQ0AIAMgAUGS25oBQQggAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ALUUNACADIAFBmtuaAUEcIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAC5FDQAgAyABQbbbmgFBDyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAvRQ0AIAMgAUHF25oBQQsgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AMEUNACADIAFB28SbAUEHIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADFFDQAgAyABQbLFmwFBAyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAyRQ0AIAMgAUHQ25oBQRAgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AM0UNACADIAFB4NuaAUEIIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADRFDQAgAyABQejbmgFBDiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA1RQ0AIAMgAUH225oBQRsgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ANkUNACADIAFBkdyaAUEaIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADdFDQAgAyABQcWXmwFBCiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA4RQ0AIAMgAUGr3JoBQRcgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AOUUNACADIAFBwtyaAUEYIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADpFDQAgAyABQdrcmgFBEiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA7RQ0AIAMgAUHs3JoBQREgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0APEUNACADIAFB/dyaAUEXIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAD1FDQAgAyABQZTdmgFBHSACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA+RQ0AIAMgAUGx3ZoBQQMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AP0UNACADIAFBtN2aAUEPIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAEBFDQAgAyABQcPdmgFBESACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBBRQ0AIAMgAUHU3ZoBQRMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AQkUNACADIAFB592aAUEaIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAENFDQAgAyABQYHemgFBDSACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBERQ0AIAMgAUGO3poBQRMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ARUUNACADIAFBod6aAUEZIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAEZFDQAgAyABQbremgFBHyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBHRQ0AIAMgAUHZ3poBQQ4gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ASEUNACADIAFB596aAUEbIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAElFDQAgAyABQYLfmgFBDyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBKRQ0AIAMgAUG1xZsBQQMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AS0UNACADIAFBkd+aAUEQIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAExFDQAgAyABQaHfmgFBGSACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBNRQ0AIAMgAUG635oBQQ8gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ATkUNACADIAFByd+aAUEVIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAE9FDQAgAyABQd7fmgFBDyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBQRQ0AIAMgAUHt35oBQRcgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AUUUNACADIAFBhOCaAUEdIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFJFDQAgAyABQeDLmwFBBSACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBTRQ0AIAMgAUGh4JoBQQggAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AVEUNACADIAFBqeCaAUETIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFVFDQAgAyABQbzgmgFBDCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBWRQ0AIAMgAUHI4JoBQQ8gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AV0UNACADIAFB1/+ZAUEGIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFhFDQAgAyABQdfgmgFBByACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBZRQ0AIAMgAUHe4JoBQR0gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AWkUNACADIAFB++CaAUEUIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFtFDQAgAyABQY/hmgFBESACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBcRQ0AIAMgAUGg4ZoBQRAgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AXUUNACADIAFBsOGaAUEfIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAF5FDQAgAyABQc/hmgFBJiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBfRQ0AIAMgAUH14ZoBQR8gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AYEUNACADIAFBlOKaAUEhIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGFFDQAgAyABQbXimgFBGyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBiRQ0AIAMgAUHQ4poBQQwgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AY0UNACADIAFB3OKaAUEjIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGRFDQAgAyABQf/imgFBCyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBlRQ0AIAMgAUGK45oBQQwgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AZkUNACADIAFBluOaAUELIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGdFDQAgAyABQaHjmgFBCCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBoRQ0AIAMgAUGp45oBQQkgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AaUUNACADIAFBsuOaAUEaIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGpFDQAgAyABQczjmgFBFCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBrRQ0AIAMgAUHg45oBQSQgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AbEUNACADIAFBhOSaAUERIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAG1FDQAgAyABQZXkmgFBCCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBuRQ0AIAMgAUGd5JoBQQcgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0Ab0UNACADIAFB/bybAUEFIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAHBFDQAgAyABQaTkmgFBCSACKAIAEMYFAkAgACgCCCIEIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIARBMGxqIgEgAykDADcDACABQShqIANBKGopAwA3AwAgAUEgaiADQSBqKQMANwMAIAFBGGogA0EYaikDADcDACABQRBqIANBEGopAwA3AwAgAUEIaiADQQhqKQMANwMAIAAgBEEBajYCCAsgAiACKAIEQX9qNgIEIANBMGokAAudggECLX8GfiMAQbAGayIDJAACQAJAAkAgASgCeCIEQYCAgIAGcQ0AIAEoAsQBIQQgASgCwAEhBSADQcaAgIB4NgLoBCAFIAQgA0HoBGoQhRUhBCABLQDIAUGiAUcNASABEMcRIQUgARCHDiABIAUQ5REMAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAMgBIgVB3wBGDQAgBUHYAEcNAyADQfAAakEIaiACQQhqKAIANgIAIAMgAikCADcDcCAEQYKAgIACcUGAgICAAkYNAQwSCyABKALAASEGAkAgARCiC0H/AXFBCEYNAAJAIAEQogtB/wFxRQ0AAkAgASgCeCIEQQJxDQAgASAEQQpyNgJ4CwJAAkACQAJAIAEtAMgBIgRB3wBHDQAgARCHDiABLQDIAUHAAEcNASADQegEaiABEKwNQQhBGBDrHyIFDQIMGAsgASgCxAEhBSABKALAASEGIANBgAFqIAQQ3hsgA0EBNgLsBCADQZjvmwE2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BAwCC0EAIQoLAkAgAS0AyAEiBEH+AEYNACAEQQdHDQMgARCHDgsgA0HoBGpBCGoiBCADQYAGakEIaiIFKQMANwMAIANB6ARqQRBqIgsgA0GABmpBEGopAwA3AwAgAyADKQOABjcD6AQgBSgCACEFIAMoAowGIQwCQCAIDQAgA0GMAWpBvKubARDEFiADKAKQASEHCyAHQgM3AwAgByAMNgIMIAcgBTYCCCAHIAMpA+gENwMQIAdBGGogBCkDADcDACAHQSBqIAspAwA3AwBBASEEIANBATYClAELIAEtAMgBIQULAkACQAJAIApBAUYNACAFQf8BcUEPRg0BCyAKDQEgBUH/AXFBAkcNASABEIcOIARByABsIQ9BigWtQiCGIjJB2KqbAa2EITMgA0HoBGpBFWohECADQZACakEVaiERIANB6ARqQQRyIRIgA0GQAmpBBHIhEyADQdgFakEVaiEUIANB2AVqQQRyIRUgA0H4AmpBFWohFiADQfgCakEEciEXIANBgAZqQRVqIRggA0GABmpBBHIhGSADQdACakEVaiEaIANB0AJqQQRyIRsgA0HYA2pBDGohHCADQagDakEMaiEdIANBkAJqQQxqIR4CQANAAkACQCABLQDIASIfQQNGDQAgASgCwAEhByADQZACaiABEOAIIAMoApgCIQUCQCADKQOQAiIxQgJSDQAgBSELDAkLIAMpA6gCITQgAygCpAIhICADKAKgAiEhIAMoApwCIQgCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAxp0EBcUUNACADIDQ3A7gDIAMgIDYCtAMgAyAhNgKwAyADIAg2AqwDIAMgBTYCqAMgAS0AyAFB9QBHDQEgARCHDiADQZACaiABQQAQ3QUgAygCkAIhCyADLQCkAiIFQQJGDQIgEiATKQIANwIAIBAgESkAADcAACASQQhqIBNBCGopAgA3AgAgEEEHaiARQQdqKAAANgAAIAMgBToA/AQgAyALNgLoBCADQdAEaiADQegEahCeFCADKQPgBCEwIAMoAtgEISIgAygC1AQhIyADKALQBCEkIAMpA7gDITUgAygCtAMhJSADKAKwAyEmIAMoAqwDIScgAygCqAMhC0IBITFBACENIAMoAtwEIgwhDgwSCyABLQDIASEoQQAhKSAfQZcBRw0M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IAUgBzYCCCAFQgQ3AwAgBSADKQOQAjcCFCAFIAg6ACQgBSADLwGABjsAJSAFQRxqIAwpAwA3AgAgBUEnaiADQYIGai0AADoAACADIARBAWoiBDYClAELAkACQAJAAkAgAS0AyAEiBUH+AEcNACABEIcOIAEtAMgBIgVBwABHDQEgA0HoBGogARCsDUEIQRgQ6x8iBUUNCiAFIAMpA+gENwMAIAVBEGogA0HoBGpBEGopAwA3AwAgBUEIaiADQegEakEIaikDADcDAEEAIQcCQAJAIAEtAMkBDQACQCABLQDIASILQfcARg0AIAtB8ABHDQELIAEQhw4gA0HoBGogARBYIAMoAuwEIQsgAygC6AQiB0EyRg0BAkBBOEUNACADQZACakEIaiADQegEakEIakE4/AoAAAsgAyALNgKUAiADIAc2ApACIAdBDkcNBUEEQRQQ6x8iB0UNDCAHIANBkAJqQQRyIgspAgA3AgAgB0EQaiALQRBqKAIANgIAIAdBCGogC0EIaikCADcCAAsgARCiDSILRQ0DIAcQ8R8LIAUQnx0MBgsgASgCxAEhBCABKALAASEGIANBhAJqIAUQ3hsgA0EBNgLsBCADQZjvmwE2AugEIANCATcC9AQgA0GKBa1CIIZB6pabAa2ENwOABiADIANBgAZqNgLwBCADQZACaiADQegEahCNFSADQaQCaiADQYwCaigCADYCACADIAMpAoQCNwKcAiAGIAQgA0GQAmoQhRUhCyABLQDIAUGiAUcNBSABEMcRIQQgARCHDiABIAQQ5REMBQsgA0HoBGpBBHIgBRDeGyADQRA2AvwEIANBmqebATYC+AQgA0GwgICAeDYC6AQgASgCwAEgASgCxAEgA0HoBGoQhRUhCyABLQDIAUGiAUcNBCABEMcRIQQgARCHDiABIAQQ5REMBAsgASgCvAEhCCADKAKQASEMIAMoAowBIQtBACEBIAYhDQwFC0Gyo5sBQShB7KubARDdFwALIAEoAsQBIQUgASgCwAEhBiADQdABaiAEEN4bIANBATYC7AQgA0GY75sBNgLoBCADQgE3AvQEIANBigWtQiCGQbynmwGthDcD2AUgAyADQdgFajYC8AQgA0GQAmogA0HoBGoQjRUgA0GkAmogA0HYAWooAgA2AgAgAyADKQLQATcCnAIgBiAFIANBkAJqEIUVIQsgAS0AyAFBogFHDQAgARDHESEEIAEQhw4gASAEEOURCyADKQOABhDGHQtBCiEBCyADQYwBahDZHQJAIAFBCkcNACALIQQMBAsLIAAgCjoAISAAIAk6ACAgACAHNgIcIAAgCDYCGCAAIA02AhQgACAFNgIQIAAgBDYCDCAAIAw2AgggACALNgIEIAAgATYCACACEMwdDAMLIAEoAsABIQsgARCHDgJAAkACQAJAAkAgAS0AyAEiBUGjAUcNAEEJIQUgASgCcBCBGyEEDAELIAEvAYABIgZBgMAAcSEEAkACQCAFQfwARw0AIARFDQAgASgCwAEhBCABEIcOIANBgAZqIAIQkQggA0HoBGogASAEIANBgAZqEMMBQQkhBSADKALsBCEEIAMoAugEIgZBCUYNASADQdACakEgaiADQegEakEgaikDADcDACADQdACakEYaiADQegEakEYaikDADcDACADQdACakEQaiADQegEakEQaikDADcDACADIAMpA/AENwPYAiADIAQ2AtQCIAMgBjYC0AICQCAGQQhGDQAgA0GkA2ogA0HvAmotAAA6AAAgAyADLwHqAjsBpgMgAyADLwDtAjsBogMgAygC3AIiCkEIdiENIAEoArwBIQFBASEFIAMpA/ACITAgAy0A7AIhDiADLQDpAiEIIAMtAOgCIQIgAygC5AIhCSADKALgAiEHIAMoAtgCISIgBCEMDAMLIANB0AJqEIMfIAEvAYABIgZBgMAAcSEECwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBEUNAAJAAkACQCABLQDIASIEQbV/aiIFQR9LDQBBASAFdEGBgIKQeHENAQsgBEG0f2pB/wFxQdUATw0BCyAEIAEQiAshMCADQagDakEIaiIEIAIQkQggAyAwNwOoAwJAAkACQCABLQCBAUEgcUUNACABKAJ4IQIgA0HoBGogARD/AiABIAJBAXI2AnggA0GABmogASABKALAASAEIDBBARCKBCADKAKEBiEEAkAgAygCgAYiBUEJRw0AIAMgBDYC3AUgA0EJNgLYBSABIANB6ARqEPAFIANBCDYC+AIgA0HYBWpBBHIQ3x0MAwsgA0HYBWpBIGogA0GABmpBIGopAwA3AwAgA0HYBWpBGGogA0GABmpBGGopAwA3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IAMoApQCIQwMAgsgASgCvAEhCiABKAK4ASEHQQAhI0EAIQZBACECDAQLIAMtAIEFIQggAy0AgAUhAiADKAL8BCEJIAMoAvgEIQcgAygC8AQhIiADLQCEBSEOIAMpA4gFITAgAygCkAUhCyADKAKUBSEBIAQhDAsMCQtBCSEFDAgLQQkhBQwGCyABLQDIASEECwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQf8BcUEYRw0AIAEoAsABIQggA0HoBGogAUEAEO4CIAMoAuwEIQQgAygC6AQiCUGAgICAeEYNCSADIAMoAvAENgKIBiADIAQ2AoQGIAMgCTYCgAYgAygCeA0BIANB8ABqEMwdIANB8ABqQQhqIANBgAZqQQhqKAIANgIAIAMgAykCgAY3A3AgAS0AyAEhBAsgAiAEQf8BcUHQAEdyRQ0BIAIgBEH/AXFB+ABHckUNAgwDCyABKAK8ASECIANBtYGAgHg2AugEIAggAiADQegEahCFFSEEAkAgAS0AyAFBogFHDQAgARDHESECIAEQhw4gASACEOURCyADQYAGahDMHQwHC0EAIQUgA0HoBGogASABKALAASADQfAAakEAENgFIAMoAuwEIQQgAygC6AQiBkEIRg0bIANBpANqIANBhwVqLQAAOgAAIAMgAy8BggU7AaYDIAMgAy8AhQU7AaIDIAMtAIEFIQggAy0AgAUhAiADKAL8BCEJIAMoAvgEIQcgAygC9AQhCiADKALwBCEiIAMtAIQFIQ4gAykDiAUhMAwDCyABEKILQf8BcUHdAEcNACABEKILGiABKAKYAUELRg0AIAEtALEBQQFxDQAgA0HoBGogASADQfAAahCWCyADKALsBCEEIAMoAugEIgZBCEYNGiADQaQDaiADQYcFai0AADoAACADIAMvAYIFOwGmAyADIAMvAIUFOwGiAwwBCwJAAkACQAJAIAIgAS0AyAEiBEH/AXFB3QBHckUNACACDQcCQCABLQCBAUEgcUUNACAEQf8BcUHRAEcNACABEKILQf8BcUH9AEYNAyABLQDIASEECyAEQf8BcSIEQdEARg0DIARB4gBGDQEgBEHtAEYNAwwHCyADQYAGakEIaiADQfAAakEIaigCADYCACADIAMpA3A3A4AGIANB6ARqIAEg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eDYC6AQgAyAwNwPwBCABIAcgCiADQegEahCvGgwBCyAFKAIUIQogBSgCECEFIANB8YCAgHg2AugEIAEgBSAKIANB6ARqEK8aDAALCyABKALEASECIAEoAsABIQYgA0G4BGogBRDeGyADQQE2AuwEIANBmO+bATYC6AQgA0IBNwL0BCADQYoFrUIghkG8p5sBrYQ3A9gFIAMgA0HYBWo2AvAEIANBgAZqIANB6ARqEI0VIANBlAZqIANBwARqKAIANgIAIAMgAykCuAQ3AowGIAYgAiADQYAGahCFFSEIIAEtAMgBQaIBRw0FIAEQxxEhAiABEIcOIAEgAhDlEQwFCyABEIcOIBEhFyATIRogHyEbICghFCAGIRUMAAsLIAhBACAHGyEJIAEoArwBIgpBCHYhDUECIQUgAygCyAEhDCADKALEASEGIAMoAsABIQgMAwsgASgCxAEhAiABKALAASEFIANBoARqIAYQ3hsgA0EBNgLsBCADQZjvmwE2AugEIANCATcC9AQgA0GKBa1CIIZB7KGbAa2ENwPYBSADIANB2AVqNgLwBCADQYAGaiADQegEahCNFSADQZQGaiADQagEaigCADYCACADIAMpAqAENwKMBiAFIAIgA0GABmoQhRUhCCABLQDIAUGiAUcNASABEMcRIQIgARCHDiABIAIQ5REMAQsgJCEOCyADQcABahDXHUEJIQULICKtQiCGITAgBK0hMSALISILAkAgDg0AICNBAkYNACAwIDGEEMYdCyAIIQQMBAsgBUGkAUYNASAGQbR/akH/AXFB1ABLDQELIAEQhw5BASECCyADQegEaiABEMMLIAMoAvAEIQQCQCADKQPoBCIwUEUNAEEJIQUMAgsgAygC9AQhBSADQQA2AvgEIAMgBTYC9AQgAyAENgLwBCADQQA6APwEIAMgMDcD6AQgA0HgAGogASALIANB6ARqQQEgAhDfAkEJQQYgAygCYEEBcRshBSADKAJkIQQMAQsLIANB8ABqEMwdCyAFQQlHDQELIABBCjYCACAAIAQ2AgQMAwsgACAIOgAhIAAgAjoAICAAIAk2AhwgACAHNgIYIAAgIjYCECAAIAw2AgwgACAGNgIIIAAgBDYCBCAAIAU2AgAgACAOOgAkIAAgAy8BpgM7ASIgACADLwGiAzsAJSAAIAE2AjQgACALNgIwIAAg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IAJAIANFDQACQCABKAIADQAgAUEYaiEMIAEoAiAiBEE4bCEIIAEoAhwhB0EAIQYCQANAIAggBkYNASAHIAZqIQUgBkE4aiEGIAUoAgBBempBBEkNAAwDCwsCQCAEIAwoAgBHDQAgDEHc8ZoBEIQXIAEoAhwhBwsgByAEQThsaiIGQgA3AxggBiAKNgIUIAYgCTYCECAGQgg3AwggBkICNwMAIAZBIGpBADoAACABIARBAWo2AiAMAQtBzPGaARCbIAALIAJBsAdqJAALymkCMH8GfiMAQaACayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAiA0F0aiIEQQcgBEEmSRsOJgQAAQIDBQYHCAkKCwwNDg8QERITFBUWFxgZGhsrKikoJyYlJCMiBAsgASgCCCEDIAEoAhQhBSABKAIQIQYgAkGAAWogASgCDCIHQQRBEBDMDSACKAKEASEIIAIoAoABQQFGDSAgAigCiAEhCQJAIAhFDQAgB0EEdCEKIAkhBCAIIQsDQCAKRQ0BAkAgAygCACIMQQJGDQBBAC0AwPGdARogA0EEaikCACEyQcAAEIUBIgFFDTUgAkGAAWogA0EMaigCABBEIAFBOGogAkGAAWpBOGopAwA3AwAgAUEwaiACQYABakEwaikDADcDACABQShqIAJBgAFqQShqKQMANwMAIAFBIGogAkGAAWpBIGopAwA3AwAgAUEYaiACQYABakEYaikDADcDACABQRBqIAJBgAFqQRBqKQMANwMAIAFBCGogAkGAAWpBCGopAwA3AwAgASACKQOAATcDAAsgA0EQaiEDIAQgDDYCACAEQQxqIAE2AgAgBEEEaiAyNwIAIApBcGohCiAEQRBqIQQgC0F/aiILDQALCyAAIAU2AhQgACAGNgIQIAAgBzYCDCAAIAk2AgggACAINgIEIABBDTYCAAwzCyABKAIIIQMgASgCFCENIAEoAhAhDiACQYABaiABKAIMIgVBBEEMEMwNIAIoAoQBIQkgAigCgAFBAUYNHiACKAKIASEGAkAgCUUNACAFQQxsIQogBiEEIAkhDANAIApFDQECQAJAIAMoAgAiBw0AQQAtAMDxnQEaQfAAEIUBIgtFDTUgAkGAAWogA0EEaigCABDtAQJAQfAARQ0AIAsgAkGAAWpB8AD8CgAAC0EAIQEMAQtBAC0AwPGdARogA0EIaigCACEIIANBBGooAgAhC0HAABCFASIBRQ00IAJBgAFqIAcQRCABQThqIAJBgAFqQThqKQMANwMAIAFBMGogAkGAAWpBMGopAwA3AwAgAUEoaiACQYABakEoaikDADcDACABQSBqIAJBgAFqQSBqKQMANwMAIAFBGGogAkGAAWpBGGopAwA3AwAgAUEQaiACQYABakEQaikDADcDACABQQhqIAJBgAFqQQhqKQMANwMAIAEgAikDgAE3AwALIANBDGohAyAEIAE2AgAgBEEIaiAINgIAIARBBGogCzYCACAKQXRqIQogBEEMaiEEIAxBf2oiDA0ACwsgACANNgIUIAAgDjYCECAAIAU2AgwgACAGNgIIIAAgCTYCBCAAQQ42AgAMMgsCQAJAIAEtABwiA0ECRw0ADAELIAEoAhghDCABKAIUIQsgASgCECEKIAEpAwgiMkIDg0IAUg0AIDKnIgQgBCgCACIEQQFqNgIAIARBf0wNMQtBAC0AwPGdARpByAAQhQEiBEUNMCAEIAEoAiAQ/AEgACAENgIgIAAgAzoAHCAAIAw2AhggACALNgIUIAAgCjYCECAAIDI3AwggAEEPNgIADDELQQAtAMDxnQEaIAEtABAhAyABKAIMIQogASgCCCELQcAAEIUBIgRFDS8gBCABKAIEEEQgACADOgAQIAAgCjYCDCAAIAs2AgggACAENgIEIABBEDYCAAwwCyAAIAEpAwA3AwAgAEE4aiABQThqKQMANwMAIABBMGogAUEwaikDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAEEIaiABQQhqKQMANwMADC8LQQAtAMDxnQEaIAEtABEhAyABLQAQIQogASgCCCELIAEoAgQhDEHAABCFASIERQ0tIAQgASgCDBBEIAAgAzoAESAAIAo6ABAgACAENgIMIAAgCzYCCCAAIAw2AgQgAEERNgIADC4LQQAtAMDxnQEaIAEtABQhCiABKAIQIQsgASgCDCEMQcAAEIUBIgRFDSwgBCABKAIEEERBAC0AwPGdARpBwAAQhQEiA0UNLCADIAEoAggQRCAAIAo6ABQgACALNgIQIAAgDDYCDCAAIAM2AgggACAENgIEIABBEjYCAAwtCyABLQA8IQogASgCNCELIAEoAjAhDAJAIANBC0cNAAJAAkACQCABKAIEDgMAAQIACyACQYABaiABQQhqEIkGIAJBOGpBCGogAkGUAWopAgA3AwAgAiACKQKMATcDOCACKAKIASEIIAIpA4ABITJBACEHDC0LIAJBgAFqIAFBCGoQ7QsgAkE4akEIaiACQZQBaikCADcDACACIAIpAowBNwM4IAIoAogBIQggAikDgAEhMkEBIQcMLAsgAkHAAGogAUEcaikCADcDACACIAEpAhQ3AzggASgCECEIIAEpAwghMkECIQcMKwsCQAJAAkACQAJAAkACQAJAAkACQAJAIAMOCwABAgMEBQYHCAkKAAsgAkGAAWogAUEIahDuCyACQRhqQQhqIAJBlAFqKQIANwMAIAJBKGogAkGcAWooAgA2AgAgAiACKQKMATcDGAwyCyACQYABaiABQQhqEIIKIAJBGGpBCGogAkGUAWopAgA3AwAgAkEoaiACQZwBaikCADcDACACQTBqIAJBpAFqKAIANgIAIAIgAikCjAE3AxgMMQsgAkGAAWogAUEIahD9CyACQRhqQQhqIAJBlAFqKQIANwMAIAJBKGogAkGcAWopAgA3AwAgAkEwaiACQaQBaigCADYCACACIAIpAowBNwMYDDALIAJBgAFqIAFBBGoQgRgMLgsgAkGAAWogAUEEahCNBAwsCyACQYABaiABQQRqEJYSDCsLIAJBgAFqIAFBBGoQlhIMKgsgAkGAAWogAUEEahCBGAwqCyACQYABaiABQQRqEJYSDCgLIAJBgAFqIAFBBGoQ4hAMJwsgAkEgaiABQRxqKQIANwMAIAJBKGogAUEkaikCADcDACACQTBqIAFBLGooAgA2AgAgAiABKQIUNwMYIAEoAhAhCCABKQMIITIgASgCBCEHDCkLQQAtAMDxnQEaIAEoAiQhCiABKAIgIQtBwAAQhQEiBEUNKiAEIAEoAigQRAJAAkACQAJAIAEoAggiBw4DAAECAAsgASgCFCEDIAEoAhAhDCABKAIcIQggASgCGCEJAkAgASkDECIyQgODQgBSDQAg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DAJAIAIoAoABQQFGDQAgHEEIdCAaQf8BcXKtQiCGITIgF60hMyACKAKIASEFAkAgDEUNACAHQShsIQMgBSEBIAwhCwNAIANFDQEgAkGAAWogBBCEByABQSBqIAJBgAFqQSBqKQMANwMAIAFBGGogAkGAAWpBGGopAwA3AwAgAUEQaiACQYABakEQaikDADcDACABQQhqIAJBgAFqQQhqKQMANwMAIAEgAikDgAE3AwAgAUEoaiEBIANBWGohAyAEQShqIQQgC0F/aiILDQALCyAyIDOEITJBBiEBAkAgCS0APEEGRg0AIAkoAgwhAyAJKAIIIQQgAkGAAWogCUEQahCIBiACQdAAakEoaiACQYABakEoaigCADYCACACQdAAakEgaiACQYABakEgaikDADcDACACQdAAakEYaiACQYABakEYaikDADcDACACQdAAakEQaiACQYABakEQaikDADcDACACQdAAakEIaiACQYABakEIaikDADcDACACQc4AaiACQa8Bai0AADoAACACIAIpA4ABNwNQIAIgAi8ArQE7AUwgAi0ArAEhAQsgCiADNgIMIAogBDYCCCAKIBU2AgQgCiAWNgIAIAogAikDUDcDECAKIAE6ADwgCiACLwFMOwA9IApBGGogAkHYAGopAwA3AwAgCkEgaiACQeAAaikDADcDACAKQShqIAJB0ABqQRhqKQMANwMAIApBMGogAkHQAGpBIGopAwA3AwAgCkE4aiACQdAAakEoaigCADYCACAKQT9qIAJBzABqQQJqLQAAOgAAIAogGzoAbCAKIB02AmggCiAeNgJkIAogHzYCYCAKICA2AlwgCiAhNgJYIAogMjcDUCAKIBg2AkwgCiAZNgJIIAogNDcDQCAKIAY6AIgBIAogBzYCmAEgCiAFNgKUASAKIAw2ApABIAogJTYChAEgCiATNgKAASAKICY2AnwgCiAINgJ4IAogIzYCdCAKICQ2AnAgCiACLwFIOwBtIApB7wBqIAJByABqQQJqLQAAOgAAIAAgCjYCBCAAQSc2AgAMGgsgDCACKAKIAUGIn5oBEKoeAAsgJiACKAKIAUGIn5oBEKoeAAsgCSACKAKIAUGIn5oBEKoeAAsgByACKAKIAUGIn5oBEKoeAAsgCCACKAKIAUGIn5oBEKoeAAsgDCACKAKIAUGIn5oBEKoeAAsg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AhwhCSABKAIYIQUgASgCFCEGIAEoAhAhDSACQYABaiABKAIMIghBCEEoEMwNIAIoAoQBIQwCQCACKAKAAUEBRg0AIAIoAogBIQcCQCAMRQ0AIAhBKGwhCiAHIQQgDCELA0AgCkUNASACQYABaiADEIQHIARBIGogAkGAAWpBIGopAwA3AwAgBEEYaiACQYABakEYaikDADcDACAEQRBqIAJBgAFqQRBqKQMANwMAIARBCGogAkGAAWpBCGopAwA3AwAgBCACKQOAATcDACAKQVhqIQogBEEoaiEEIANBKGohAyALQX9qIgsNAAsLIAAgCTYCHCAAIAU2AhggACAGNgIUIAAgDTYCECAAIAg2AgwgACAHNgIIIAAgDDYCBCAAQSg2AgAgACABKQMgNwMgDAkLIAwgAigCiAFBiJ+aARCqHgALIAEoAhQhESABKAIQIQ0LIAEoAgghAyACQYABaiABKAIMIglBBEEQEMwNIAIoAoQBIQcCQCACKAKAAUEBRg0AIAIoAogBIQUCQCAHRQ0AIAlBBHQhCyAFIQogByEMA0AgC0UNAUEALQDA8Z0BGiADKQIEITIgAygCACEIQcAAEIUBIgRFDQggAkGAAWogAygCDBBEIARBOGogAkGAAWpBOGopAwA3AwAgBEEwaiACQYABakEwaikDADcDACAEQShqIAJBgAFqQShqKQMANwMAIARBIGogAkGAAWpBIGopAwA3AwAgBEEYaiACQYABakEYaikDADcDACAEQRBqIAJBgAFqQRBqKQMANwMAIARBCGogAkGAAWpBCGopAwA3AwAgBCACKQOAATcDACAKQQxqIAQ2AgAgCkEEaiAyNwIAIAogCDYCACALQXBqIQsgCkEQaiEKIANBEGohAyAMQX9qIgwNAAsLAkACQCABKAIoDQBBACEBDAELIAFBKGoQgwohAQsgACACLwEYOwAZIABBG2ogAkEaai0AADoAACAAIAE2AiggACAONgIkIAAgDzYCICAAIBA2AhwgACAGOgAYIAAgETYCFCAAIA02AhAgACAJNgIMIAAgBTYCCCAAIAc2AgQgAEEXNgIADAcLIAcgAigCiAFBiJ+aARCqHgALIAIoAowBIQggAikChAEhMiACKAKAASEHDAILIAIpAoQBITIgAigCgAEhBwwBCyACKAKIASEIIAIpA4ABITILIAJB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AykDuAEiDUL/AYNCBFINAQsgA0G4AWogAUEEaiACENogAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQbgBaiACEOIOAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQQA2AsgBIANBuAFqIAIgA0HIAWpBosSbAUECELkMAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQbgBaiACEOIOAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQbgBaiACIANByAFqQd6WmwFBBRC5DCADLQC4AUEERg0XIAMpA7gBIg1C/wGDQgRRDRcLIA1C/wGDQgRRDRYgACANNwIADBcLIANByAFqIAFBBGogAhCCCSADLQDIAUEERg0VIAMpA8gBIg1C/wGDQgRRDRUgACANNwIADBYLIANByAFqIAFBBGogAhDbCSADLQDIAUEERg0UIAMpA8gBIg1C/wGDQgRRDRQgACANNwIADBULIANByAFqIAFBBGogAhD9ASADLQDIAUEERg0TIAMpA8gBIg1C/wGDQgRRDRMgACANNwIADBQLIANByAFqIAEoAgQgAhDcFCADLQDIAUEERg0SIAMpA8gBIg1C/wGDQgRRDRIgACANNwIADBMLIANByAFqIAFBCGogAhCrDCADLQDIAUEERg0RIAMpA8gBIg1C/wGDQgRRDREgACANNwIADBILIANByAFqIAFBCGogAhD3CSADLQDIAUEERg0QIAMpA8gBIg1C/wGDQgRRDRAgACANNwIADBELIANByAFqIAFBBGogAhDXByADLQDIAUEERg0PIAMpA8gBIg1C/wGDQgRRDQ8gACANNwIADBALIANByAFqIAIgASgCCCIFQQAQlQICQAJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsCQCAFRQ0AIANByAFqIAIgBRC0GiADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELIANBADYCyAEgA0G4AWogAiADQcgBakGEy5sBQQUQuQwCQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANByAFqIAIQ4g4CQCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELIANByAFqIAFBBGogAhDaICADLQDIAUEERg0PIAMp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BCAAQQhqIgEQtQwgAigCgAlBMkYNHCAAEMkBIABBOGogAkGACWpBOGopAwA3AwAgAEEwaiACQYAJakEwaikDADcDACAAQShqIAJBgAlqQShqKQMANwMAIABBIGogAkGACWpBIGopAwA3AwAgAEEYaiACQYAJakEYaikDADcDACAAQRBqIAJBgAlqQRBqKQMANwMAIAEgAkGACWpBCGopAwA3AwAgACACKQOACTcDAAwcCyAAKAIEIgAoAgAiA0EaRw0YIAJBwAhqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCwAhBMkYNGyAAEMkBIABBOGogAkHACGpBOGopAwA3AwAgAEEwaiACQcAIakEwaikDADcDACAAQShqIAJBwAhqQShqKQMANwMAIABBIGogAkHACGpBIGopAwA3AwAgAEEYaiACQcAIakEYaikDADcDACAAQRBqIAJBwAhqQRBqKQMANwMAIAEgAkHACGpBCGopAwA3AwAgACACKQPACDcDAAwbCyAAKAIEIgAoAgAiA0EaRw0XIAJBgAhqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCgAhBMkYNGiAAEMkBIABBOGogAkGACGpBOGopAwA3AwAgAEEwaiACQYAIakEwaikDADcDACAAQShqIAJBgAhqQShqKQMANwMAIABBIGogAkGACGpBIGopAwA3AwAgAEEYaiACQYAIakEYaikDADcDACAAQRBqIAJBgAhqQRBqKQMANwMAIAEgAkGACGpBCGopAwA3AwAgACACKQOACDcDAAwaCyAAKAIEIgAoAgAiA0EaRw0WIAJBwAdqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCwAdBMkYNGSAAEMkBIABBOGogAkHAB2pBOGopAwA3AwAgAEEwaiACQcAHakEwaikDADcDACAAQShqIAJBwAdqQShqKQMANwMAIABBIGogAkHAB2pBIGopAwA3AwAgAEEYaiACQcAHakEYaikDADcDACAAQRBqIAJBwAdqQRBqKQMANwMAIAEgAkHAB2pBCGopAwA3AwAgACACKQPABzcDAAwZCyAAKAIEIgAoAgAiA0EaRw0VIAJBgAdqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCgAdBMkYNGCAAEMkBIABBOGogAkGAB2pBOGopAwA3AwAgAEEwaiACQYAHakEwaikDADcDACAAQShqIAJBgAdqQShqKQMANwMAIABBIGogAkGAB2pBIGopAwA3AwAgAEEYaiACQYAHakEYaikDADcDACAAQRBqIAJBgAdqQRBqKQMANwMAIAEgAkGAB2pBCGopAwA3AwAgACACKQOABzcDAAwYCyAAKAIEIgAoAgAiA0EaRw0UIAJBwAZqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCwAZBMkYNFyAAEMkBIABBOGogAkHABmpBOGopAwA3AwAgAEEwaiACQcAGakEwaikDADcDACAAQShqIAJBwAZqQShqKQMANwMAIABBIGogAkHABmpBIGopAwA3AwAgAEEYaiACQcAGakEYaikDADcDACAAQRBqIAJBwAZqQRBqKQMANwMAIAEgAkHABmpBCGopAwA3AwAgACACKQPABjcDAAwXCyAAKAIMIQMgACgCCCEAIAIgATYCgA8gA0UNFiADQShsIQEDQCACQYAPaiAAELwDIABBKGohACABQVhqIgENAAwXCwsgACgCBCABEJQBDBULIAAtADRBAkcNFCAAQQhqIQEDQCABKAIYIgEtACxBAkYNAAwVCwsgACgCBCIAKAIAIgNBGkcNECACQYAGaiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAoAGQTJGDRMgABDJASAAQThqIAJBgAZqQThqKQMANwMAIABBMGogAkGABmpBMGopAwA3AwAgAEEoaiACQYAGakEoaikDADcDACAAQSBqIAJBgAZqQSBqKQMANwMAIABBGGogAkGABmpBGGopAwA3AwAgAEEQaiACQYAGakEQaikDADcDACABIAJBgAZqQQhqKQMANwMAIAAgAikDgAY3AwAMEwsgACgCBCIAKAIAIgNBGkcNDyACQcAFaiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAsAFQTJGDRIgABDJASAAQThqIAJBwAVqQThqKQMANwMAIABBMGogAkHABWpBMGopAwA3AwAgAEEoaiACQcAFakEoaikDADcDACAAQSBqIAJBwAVqQSBqKQMANwMAIABBGGogAkHABWpBGGopAwA3AwAgAEEQaiACQcAFakEQaikDADcDACABIAJBwAVqQQhqKQMANwMAIAAgAikDwAU3AwAMEgsgACgCDCIARQ0RIAEgABCbDAwRCwJAIAAoAiAiBkEIaigCACIARQ0AIAZBBGooAgAhAyAAQQxsIQQDQAJAAkAgAygCACIAKAIAQRpHDQAgAkGADmogASgCACABKAIEIABBCGoiBRC1DCACKAKADkEyRg0BIAAQyQEgAEE4aiACQYAOakE4aikDADcDACAAQTBqIAJBgA5qQTBqKQMANwMAIABBKGogAkGADmpBKGopAwA3AwAgAEEgaiACQYAOakEgaikDADcDACAAQRhqIAJBgA5qQRhqKQMANwMAIABBEGogAkGADmpBEGopAwA3AwAgBSACQYAOakEIaikDADcDACAAIAIpA4AONwMADAELIAAgARBGCyADQQxqIQMgBEF0aiIEDQALCwJAIAZBFGooAgAiA0UNACAGQRBqKAIAIQAgA0HYAGwhAwNAIAAgARBoIABB2ABqIQAgA0Gof2oiAw0ACwsgBigCMCIARQ0QIAAoAgAiA0EaRw0NIAJBwAtqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCwAtBMkYNECAAEMkBIABBOGogAkHAC2pBOGopAwA3AwAgAEEwaiACQcALakEwaikDADcDACAAQShqIAJBwAtqQShqKQMANwMAIABBIGogAkHAC2pBIGopAwA3AwAgAEEYaiACQcALakEYaikDADcDACAAQRBqIAJBwAtqQRBqKQMANwMAIAEgAkHAC2pBCGopAwA3AwAgACACKQPACzcDAAwQCwJAIAAoAgwiBEUNACAAKAIIIQMgBEEobCEEA0AgAyABEJcDIANBKGohAyAEQVhqIgQNAAsLAkAgACgCECIAKAIAQYCAgIB4Rw0AIABBBGogARCGDAwQCyAAKAIIIgNFDQ8gACgCBCEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwQCwsCQAJAIAAoAgQiAygCAEEaRw0AIAJBgAVqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgAVBMkYNASADEMkBIANBOGogAkGABWpBOGopAwA3AwAgA0EwaiACQYAFakEwaikDADcDACADQShqIAJBgAVqQShqKQMANwMAIANBIGogAkGABWpBIGopAwA3AwAgA0EYaiACQYAFakEYaikDADcDACADQRBqIAJBgAVqQRBqKQMANwMAIAQgAkGABWpBCGopAwA3AwAgAyACKQOABTcDAAwBCyADIAEQRgsgACgCCCIAQQhqKAIAIgRFDQ4gAEEEaigCACEDIARBAnQhBANAAkACQCADKAIAIgAoAgBBGkcNACACQYALaiABKAIAIAEoAgQgAEEIaiIFELUMIAIoAoALQTJGDQEgABDJASAAQThqIAJBgAtqQThqKQMANwMAIABBMGogAkGAC2pBMGopAwA3AwAgAEEoaiACQYALakEoaikDADcDACAAQSBqIAJBgAtqQSBqKQMANwMAIABBGGogAkGAC2pBGGopAwA3AwAgAEEQaiACQYALakEQaikDADcDACAFIAJBgAtqQQhqKQMANwMAIAAgAikDgAs3AwAMAQsgACABEEYLIANBBGohAyAEQXxqIgQNAAwPCwsgACgCDCIERQ0NIAAoAgghAyAEQQJ0IQQDQAJAAkAgAygCACIAKAIAQRpHDQAgAkHACmogASgCACABKAIEIABBCGoiBRC1DCACKALACkEyRg0BIAAQyQEgAEE4aiACQcAKakE4aikDADcDACAAQTBqIAJBwApqQTBqKQMANwMAIABBKGogAkHACmpBKGopAwA3AwAgAEEgaiACQcAKakEgaikDADcDACAAQRhqIAJBwApqQRhqKQMANwMAIABBEGogAkHACmpBEGopAwA3AwAgBSACQcAKakEIaikDADcDACAAIAIpA8AKNwMADAELIAAgARBGCyADQQRqIQMgBEF8aiIEDQAMDgsLIAAoAgwiBEUNDCAAKAIIIQMgBEECdCEEA0ACQAJAIAMoAgAiACgCAEEaRw0AIAJBgApqIAEoAgAgASgCBCAAQQhqIgUQtQwgAigCgApBMkYNASAAEMkBIABBOGogAkGACmpBOGopAwA3AwAgAEEwaiACQYAKakEwaikDADcDACAAQShqIAJBgApqQShqKQMANwMAIABBIGogAkGACmpBIGopAwA3AwAgAEEYaiACQYAKakEYaikDADcDACAAQRBqIAJBgApqQRBqKQMANwMAIAUgAkGACmpBCGopAwA3AwAgACACKQOACjcDAAwBCyAAIAEQRgsgA0EEaiEDIARBfGoiBA0ADA0LCyAAQQRqIQMCQAJAIAAoAhAiACgCAEEaRw0AIAJBwARqIAEoAgAgASgCBCAAQQhqIgQQtQwgAigCwARBMkYNASAAEMkBIABBOGogAkHABGpBOGopAwA3AwAgAEEwaiACQcAEakEwaikDADcDACAAQShqIAJBwARqQShqKQMANwMAIABBIGogAkHABGpBIGopAwA3AwAgAEEYaiACQcAEakEYaikDADcDACAAQRBqIAJBwARqQRBqKQMANwMAIAQgAkHABGpBCGopAwA3AwAgACACKQPABDcDAAwBCyAAIAEQRgsgAygCAEGAgICAeEYNCyABIAMQugoMCwsCQCAALQAYQQVHDQAgASAAKAIQEJsMCyAAKAIMIgNFDQogA0EEdCEEIAAoAghBDGohAwNAAkACQCADKAIAIgAoAgBBGkcNACACQcAJaiABKAIAIAEoAgQgAEEIaiIFELUMIAIoAsAJQTJGDQEgABDJASAAQThqIAJBwAlqQThqKQMANwMAIABBMGogAkHACWpBMGopAwA3AwAgAEEoaiACQcAJakEoaikDADcDACAAQSBqIAJBwAlqQSBqKQMANwMAIABBGGogAkHACWpBGGopAwA3AwAgAEEQaiACQcAJakEQaikDADcDACAFIAJBwAlqQQhqKQMANwMAIAAgAikDwAk3AwAMAQsgACABEEYLIANBEGohAyAEQXBqIgQNAAwLCwsCQAJAIAAoAgQiAygCAEEaRw0AIAJBgARqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgARBMkYNASADEMkBIANBOGogAkGABGpBOGopAwA3AwAgA0EwaiACQYAEakEwaikDADcDACADQShqIAJBgARqQShqKQMANwMAIANBIGogAkGABGpBIGopAwA3AwAgA0EYaiACQYAEakEYaikDADcDACADQRBqIAJBgARqQRBqKQMANwMAIAQgAkGABGpBCGopAwA3AwAgAyACKQOABDcDAAwBCyADIAEQRgsCQAJAIAAoAggiAygCAEEaRw0AIAJBwANqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCwANBMkYNASADEMkBIANBOGogAkHAA2pBOGopAwA3AwAgA0EwaiACQcADakEwaikDADcDACADQShqIAJBwANqQShqKQMANwMAIANBIGogAkHAA2pBIGopAwA3AwAgA0EYaiACQcADakEYaikDADcDACADQRBqIAJBwANqQRBqKQMANwMAIAQgAkHAA2pBCGopAwA3AwAgAyACKQPAAzcDAAwBCyADIAEQRgsgACgCDCIAKAIAIgNBGkcNBiACQYADaiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAoADQTJGDQkgABDJASAAQThqIAJBgANqQThqKQMANwMAIABBMGogAkGAA2pBMGopAwA3AwAgAEEoaiACQYADakEoaikDADcDACAAQSBqIAJBgANqQSBqKQMANwMAIABBGGogAkGAA2pBGGopAwA3AwAgAEEQaiACQYADakEQaikDADcDACABIAJBgANqQQhqKQMANwMAIAAgAikDgAM3AwAMCQsgACgCCEEBRw0IIAEgAEEMahCHDAwICwJAAkAgACgCKCIDKAIAQRpHDQAgAkHAAmogASgCACABKAIEIANBCGoiBBC1DCACKALAAkEyRg0BIAMQyQEgA0E4aiACQcACakE4aikDADcDACADQTBqIAJBwAJqQTBqKQMANwMAIANBKGogAkHAAmpBKGopAwA3AwAgA0EgaiACQcACakEgaikDADcDACADQRhqIAJBwAJqQRhqKQMANwMAIANBEGogAkHAAmpBEGopAwA3AwAgBCACQcACakEIaikDADcDACADIAIpA8ACNwMADAELIAMgARBGCyAAKAIIQQJJDQcgASAAQQxqEIcMDAcLAkACQCADQQtHDQACQAJAIAAoAgQOAwABAwALIAAoAhAiBEUNAiAAKAIMIQMgBEEobCEEA0ACQCADKAIAQQdGDQAgAyABEJcDCyADQShqIQMgBEFYaiIEDQAMAwsLIAAoAhAiA0UNASAAKAIMIQUgA0E4bCEGQQAhAwNAAkACQAJAAkACQAJAAkAgBSADaiIEKAIADgMAAQIACyAEQQhqKAIAQQNHDQQgBEEMaigCACIHKAIAQRpHDQIgAkGAD2ogASgCACABKAIEIAdBCGoiCBC1DCACKAKAD0EyRg0EIAcQyQEgB0E4aiACQYAPakE4aikDADcDACAHQTBqIAJBgA9qQTBqKQMANwMAIAdBKGogAkGAD2pBKGopAwA3AwAgB0EgaiACQYAPakEgaikDADcDACAHQRhqIAJBgA9qQRhqKQMANwMAIAdBEGogAkGAD2pBEGopAwA3AwAgCCACQYAPakEIaikDADcDACAHIAIpA4APNwMADAQLIARBMGooAgAiBEUNBCAEKAIAQRpHDQIgAkGAD2ogASgCACABKAIEIARBCGoiBxC1DCACKAKAD0EyRg0EIAQQyQEgBEE4aiACQYAPakE4aikDADcDACAEQTBqIAJBgA9qQTBqKQMANwMAIARBKGogAkGAD2pBKGopAwA3AwAgBEEgaiACQYAPakEgaikDADcDACAEQRhqIAJBgA9qQRhqKQMANwMAIARBEGogAkGAD2pBEGopAwA3AwAgByACQYAPakEIaikDADcDACAEIAIpA4APNwMADAQLIARBBGooAgAgARCXAwwDCyAHIAEQRgwBCyAEIAEQRgwBCyAEQShqKAIAIAEQlwMLIAYgA0E4aiIDRw0ADAILCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAw4LFAABAgMEBQYHCBQUCyAAKAIoIgMoAgBBGkcNCCACQcAOaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAsAOQTJGDRIgAxDJASADQThqIAJBwA5qQThqKQMANwMAIANBMGogAkHADmpBMGopAwA3AwAgA0EoaiACQcAOakEoaikDADcDACADQSBqIAJBwA5qQSBqKQMANwMAIANBGGogAkHADmpBGGopAwA3AwAgA0EQaiACQcAOakEQaikDADcDACAEIAJBwA5qQQhqKQMANwMAIAMgAikDwA43AwAMEgsgACgCCEEBRw0SIAAoAgwiAygCAEEaRw0IIAJBgA9qIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgA9BMkYNEiADEMkBIANBOGogAkGAD2pBOGopAwA3AwAgA0EwaiACQYAPakEwaikDADcDACADQShqIAJBgA9qQShqKQMANwMAIANBIGogAkGAD2pBIGopAwA3AwAgA0EYaiACQYAPakEYaikDADcDACADQRBqIAJBgA9qQRBqKQMANwMAIAQgAkGAD2pBCGopAwA3AwAgAyACKQOADzcDAAwSCyAAKAIEIgMoAgBBGkcNCCACQYAPaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAoAPQTJGDREgAxDJASADQThqIAJBgA9qQThqKQMANwMAIANBMGogAkGAD2pBMGopAwA3AwAgA0EoaiACQYAPakEoaikDADcDACADQSBqIAJBgA9qQSBqKQMANwMAIANBGGogAkGAD2pBGGopAwA3AwAgA0EQaiACQYAPakEQaikDADcDACAEIAJBgA9qQQhqKQMANwMAIAMgAikDgA83AwAMEQsCQCAAKAIEIgMoAgAiBUEDRw0AIANBBGogARDPBgwRCyADKAIgIgQoAgBBGkcNCCACQcAOaiABKAIAIAEoAgQgBEEIaiIGELUMIAIoAsAOQTJGDQ4gBBDJASAEQThqIAJBwA5qQThqKQMANwMAIARBMGogAkHADmpBMGopAwA3AwAgBEEoaiACQcAOakEoaikDADcDACAEQSBqIAJBwA5qQSBqKQMANwMAIARBGGogAkHADmpBGGopAwA3AwAgBEEQaiACQcAOakEQaikDADcDACAGIAJBwA5qQQhqKQMANwMAIAQgAikDwA43AwAMDgsgACgCBCIDKAIAQRpHDQggAkGAD2ogASgCACABKAIEIANBCGoiBBC1DCACKAKAD0EyRg0PIAMQyQEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADA8LIAAoAgQiAygCAEEaRw0IIAJBgA9qIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgA9BMkYNDiADEMkBIANBOGogAkGAD2pBOGopAwA3AwAgA0EwaiACQYAPakEwaikDADcDACADQShqIAJBgA9qQShqKQMANwMAIANBIGogAkGAD2pBIGopAwA3AwAgA0EYaiACQYAPakEYaikDADcDACADQRBqIAJBgA9qQRBqKQMANwMAIAQgAkGAD2pBCGopAwA3AwAgAyACKQOADzcDAAwOCyAAKAIEIgMoAgBBGkcNCCACQYAPaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAoAPQTJGDQ0gAxDJASADQThqIAJBgA9qQThqKQMANwMAIANBMGogAkGAD2pBMGopAwA3AwAgA0EoaiACQYAPakEoaikDADcDACADQSBqIAJBgA9qQSBqKQMANwMAIANBGGogAkGAD2pBGGopAwA3AwAgA0EQaiACQYAPakEQaikDADcDACAEIAJBgA9qQQhqKQMANwMAIAMgAikDgA83AwAMDQsgACgCBCIDKAIAQRpHDQggAkGAD2ogASgCACABKAIEIANBCGoiBBC1DCACKAKAD0EyRg0MIAMQyQEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADAwLIAAoAgQiAygCAEEaRw0IIAJBgA9qIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgA9BMkYNCyADEMkBIANBOGogAkGAD2pBOGopAwA3AwAgA0EwaiACQYAPakEwaikDADcDACADQShqIAJBgA9qQShqKQMANwMAIANBIGogAkGAD2pBIGopAwA3AwAgA0EYaiACQYAPakEYaikDADcDACADQRBqIAJBgA9qQRBqKQMANwMAIAQgAkGAD2pBCGopAwA3AwAgAyACKQOADzcDAAwLCyADIAEQRgwJCyADIAEQRgwJCyADIAEQRgwICyAEIAEQRgwFCyADIAEQRgwGCyADIAEQRgwFCyADIAEQRgwECyADIAEQRgwDCyADIAEQRgwCCyAFQQJJDQECQCADKAIEIgMoAgBBGkcNACACQYAPaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAoAPQTJGDQIgAxDJASADQThqIAJBgA9qQThqKQMANwMAIANBMGogAkGAD2pBMGopAwA3AwAgA0EoaiACQYAPakEoaikDADcDACADQSBqIAJBgA9qQSBqKQMANwMAIANBGGogAkGAD2pBGGopAwA3AwAgA0EQaiACQYAPakEQaikDADcDACAEIAJBgA9qQQhqKQMANwMAIAMgAikDgA83AwAMAgsgAyABEEYMAQsgACgCCEECSQ0AAkAgACgCDCIDKAIAQRpHDQAgAkGAD2ogASgCACABKAIEIANBCGoiBBC1DCACKAKAD0EyRg0BIAMQyQEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADAELIAMgARBGCyAAKAI4IgAoAgAiA0EaRw0DIAJBgAJqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCgAJBMkYNBiAAEMkBIABBOGogAkGAAmpBOGopAwA3AwAgAEEwaiACQYACakEwaikDADcDACAAQShqIAJBgAJqQShqKQMANwMAIABBIGogAkGAAmpBIGopAwA3AwAgAEEYaiACQYACakEYaikDADcDACAAQRBqIAJBgAJqQRBqKQMANwMAIAEgAkGAAmpBCGopAwA3AwAgACACKQOAAjcDAAwGCwJAAkAgACgCBCIDKAIAQRpHDQAgAkHAAWogASgCACABKAIEIANBCGoiBBC1DCACKALAAUEyRg0BIAMQyQEgA0E4aiACQcABakE4aikDADcDACADQTBqIAJBwAFqQTBqKQMANwMAIANBKGogAkHAAWpBKGopAwA3AwAgA0EgaiACQcABakEgaikDADcDACADQRhqIAJBwAFqQRhqKQMANwMAIANBEGogAkHAAWpBEGopAwA3AwAgBCACQcABakEIaikDADcDACADIAIpA8ABNwMADAELIAMgARBGCyAAKAIIIgAoAgAiA0EaRw0CIAJBgAFqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCgAFBMkYNBSAAEMkBIABBOGogAkGAAWpBOGopAwA3AwAgAEEwaiACQYABakEwaikDADcDACAAQShqIAJBgAFqQShqKQMANwMAIABBIGogAkGAAWpBIGopAwA3AwAgAEEYaiACQYABakEYaikDADcDACAAQRBqIAJBgAFqQRBqKQMANwMAIAEgAkGAAWpBCGopAwA3AwAgACACKQOAATcDAAwFCyAAKAIMIgAoAgAiA0EaRw0BIAJBwABqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCQEEyRg0EIAAQyQEgAEE4aiACQcAAakE4aikDADcDACAAQTBqIAJBwABqQTBqKQMANwMAIABBKGogAkHAAGpBKGopAwA3AwAgAEEgaiACQcAAakEgaikDADcDACAAQRhqIAJBwABqQRhqKQMANwMAIABBEGogAkHAAGpBEGopAwA3AwAgASACQcAAakEIaikDADcDACAAIAIpA0A3AwAMBAsgACgCBCIAKAIAIgNBGkcNAAsgAiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAgBBMkYNAiAAEMkBIABBOGogAkE4aikDADcDACAAQTBqIAJBMGopAwA3AwAgAEEoaiACQShqKQMANwMAIABBIGogAkEgaikDADcDACAAQRhqIAJBGGopAwA3AwAgAEEQaiACQRBqKQMANwMAIAEgAkEIaikDADcDACAAIAIpAwA3AwAMAgsCQCAAKAIgIghBCGooAgAiAEUNACAIQQRqKAIAIgYgAEEGdGohBwNAAkAgBkE4aigCACIARQ0AIAZBNGooAgAhAyAAQQxsIQQDQAJAAkAgAygCACIAKAIAQRpHDQAgAkHADWogASgCACABKAIEIABBCGoiBRC1DCACKALADUEyRg0BIAAQyQEgAEE4aiACQcANakE4aikDADcDACAAQTBqIAJBwA1qQTBqKQMANwMAIABBKGogAkHADWpBKGopAwA3AwAgAEEgaiACQcANakEgaikDADcDACAAQRhqIAJBwA1qQRhqKQMANwMAIABBEGogAkHADWpBEGopAwA3AwAgBSACQcANakEIaikDADcDACAAIAIpA8ANNwMADAELIAAgARBGCyADQQxqIQMgBEF0aiIEDQALCyAGIAEQgwQgBkHAAGoiACEGIAAgB0cNAAsLAkAgCEEUaigCACIARQ0AIAhBEGooAgAhAyAAQQxsIQQDQAJAAkAgAygCACIAKAIAQRpHDQAgAkGADWogASgCACABKAIEIABBCGoiBRC1DCACKAKADUEyRg0BIAAQyQEgAEE4aiACQYANakE4aikDADcDACAAQTBqIAJBgA1qQTBqKQMANwMAIABBKGogAkGADWpBKGopAwA3AwAgAEEgaiACQYANakEgaikDADcDACAAQRhqIAJBgA1qQRhqKQMANwMAIABBEGogAkGADWpBEGopAwA3AwAgBSACQYANakEIaikDADcDACAAIAIpA4ANNwMADAELIAAgARBGCyADQQxqIQMgBEF0aiIEDQALCyAIKAIYQYCAgIB4Rg0BIAgoAiAiA0UNASAIKAIcIQAgA0EwbCEDA0AgACABEG8gAEEwaiEAIANBUGoiAw0ADAILCyAAKAIMIgNFDQAgACgCCCIJIANBDGxqIQoDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAJKAIAIgANAAJAAkACQAJAAkAgCSgCBCIAKAIAIgRBe2oiA0EEIANBBkkbDgYQAAECAwQQCyAAKAIIQQNHDQ4gACgCDCIDKAIAQRpHDQUgAkGAD2ogASgCACABKAIEIANBCGoiBBC1DCACKAKAD0EyRg0OIAMQyQEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADA4LIAAoAigiACgCAEEaRw0FIAJBgA9qIAEoAgAgASgCBCAAQQhqIgMQtQwgAigCgA9BMkYNDiAAEMkBIABBOGogAkGAD2pBOGopAwA3AwAgAEEwaiACQYAPakEwaikDADcDACAAQShqIAJBgA9qQShqKQMANwMAIABBIGogAkGAD2pBIGopAwA3AwAgAEEYaiACQYAPakEYaikDADcDACAAQRBqIAJBgA9qQRBqKQMANwMAIAMgAkGAD2pBCGopAwA3AwAgACACKQOADzcDAAwOCyAAKAIIQQNHDQsgACgCDCIDKAIAQRpHDQUgAkGAD2ogASgCACABKAIEIANBCGoiBBC1DCACKAKAD0EyRg0LIAMQyQEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADAsLIABBIGohAyAEQQNHDQkgACgCBCIEKAIAQRpHDQUgAkGAD2ogASgCACABKAIEIARBCGoiBRC1DCACKAKAD0EyRg0JIAQQyQEgBEE4aiACQYAPakE4aikDADcDACAEQTBqIAJBgA9qQTBqKQMANwMAIARBKGogAkGAD2pBKGopAwA3AwAgBEEgaiACQYAPakEgaikDADcDACAEQRhqIAJBgA9qQRhqKQMANwMAIARBEGogAkGAD2pBEGopAwA3AwAgBSACQYAPakEIaikDADcDACAEIAIpA4APNwMADAkLIAAoAghBA0cNByAAKAIMIgMoAgBBGkcNBSACQcAOaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAsAOQTJGDQcgAxDJASADQThqIAJBwA5qQThqKQMANwMAIANBMGogAkHADmpBMGopAwA3AwAgA0EoaiACQcAOakEoaikDADcDACADQSBqIAJBwA5qQSBqKQMANwMAIANBGGogAkHADmpBGGopAwA3AwAgA0EQaiACQcAOakEQaikDADcDACAEIAJBwA5qQQhqKQMANwMAIAMgAikDwA43AwAMBwsgACgCAEEaRw0FIAJBwAxqIAEoAgAgASgCBCAAQQhqIgMQtQwgAigCwAxBMkYNCiAAEMkBIABBOGogAkHADGpBOGopAwA3AwAgAEEwaiACQcAMakEwaikDADcDACAAQShqIAJBwAxqQShqKQMANwMAIABBIGogAkHADGpBIGopAwA3AwAgAEEYaiACQcAMakEYaikDADcDACAAQRBqIAJBwAxqQRBqKQMANwMAIAMgAkHADGpBCGopAwA3AwAgACACKQPADDcDAAwKCyADIAEQRgwICyAAIAEQRgwICyADIAEQRgwFCyAEIAEQRgwDCyADIAEQRgwBCyAAIAEQRgwECwJAIAAoAigiC0EIaigCACIARQ0AIAtBBGooAgAiDCAAQQZ0aiENA0ACQCAMQThqKAIAIgBFDQAgDEE0aigCACEDIABBDGwhBANAAkACQCADKAIAIgAoAgBBGkcNACABKAIAQQFHDQEgASgCBCIGIAAoAhhHDQECQAJAIAApAwgiD0IDg0IAUg0AIA+nIgUgBSgCACIFQQFqNgIAIAVBf0wNAQtBAC0AwPGdARogACgCFCEHIAAoAhAhCCAALQAcIQ5BwAAQhQEiBUUNACAFIA46ABwgBSAGNgIYIAVCADcDECAFIA83AwggBUEaNgIAIAAQyQEgACAFNgIoIAAgBzYCJCAAIAg2AiAgAEIANwMYIABCkb4BNwMQIABBADYCCCAAQRQ2AgAMAgsACyAAIAEQRgsgA0EMaiEDIARBdGoiBA0ACwsgDCABEIMEIAxBwABqIgAhDCAAIA1HDQALCwJAIAtBFGooAgAiAEUNACALQRBqKAIAIQMgAEEMbCEEA0ACQAJAIAMoAgAiACgCAEEaRw0AIAJBgA9qIAEoAgAgASgCBCAAQQhqIgUQtQwgAigCgA9BMkYNASAAEMkBIABBOGogAkGAD2pBOGopAwA3AwAgAEEwaiACQYAPakEwaikDADcDACAAQShqIAJBgA9qQShqKQMANwMAIABBIGogAkGAD2pBIGopAwA3AwAgAEEYaiACQYAPakEYaikDADcDACAAQRBqIAJBgA9qQRBqKQMANwMAIAUgAkGAD2pBCGopAwA3AwAgACACKQOADzcDAAwBCyAAIAEQRgsgA0EMaiEDIARBdGoiBA0ACwsgCygCGEGAgICAeEYNAyALQSBqKAIAIgNFDQMgC0EcaigCACEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwECwsCQCADKAIAQQdGDQAgAyABEJcDCyAAKAJoIAEQlwMgACgCSEGAgICAeEYNAiAAKAJQIgNFDQIgACgCTCEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwDCwsgACgCKEGAgICAeEYNASAAKAIwIgNFDQEgACgCLCEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwCCwsCQCAAKAIoIgAoAgBBGkcNACACQcAOaiABKAIAIAEoAgQgAEEIaiIDELUMIAIoAsAOQTJGDQEgABDJASAAQThqIAJBwA5qQThqKQMANwMAIABBMGogAkHADmpBMGopAwA3AwAgAEEoaiACQcAOakEoaikDADcDACAAQSBqIAJBwA5qQSBqKQMANwMAIABBGGogAkHADmpBGGopAwA3AwAgAEEQaiACQcAOakEQaikDADcDACADIAJBwA5qQQhqKQMANwMAIAAgAikDwA43AwAMAQsgACABEEYLIAlBDGoiCSAKRw0ACwsgAkHAD2okAAurbwI8fwJ+IwBB4AprIgIkACACIAEoAkwiAzYCLAJAAkACQAJAIANBAUcNACABLQA8IQQgAS0ANCIDQQNGDQEgA0ECRg0BIAEoAigiBSAFKAIAIgZBAWo2AgAgBkF/TA0DIAEoAjAhBiABKAIsIQcMAgsgAkEANgLoBEEAQYCGmwEgAkEsaiACQegEakH82oMBEJkZAAsLIAEtAF0hCCABLQBbIQkgAS0AWiEKIAEtAFkhCyABLQBYIQwgAS0AVyENIAEtAFYhDiABLQBVIQ8gAS0AVCEQIAEoAlAhESABLQA5IRIgAS0AOCETIAEtAEEh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QEEkRSIBDQAgAkGQBGogE0Ek/AoAAAsgAigCpAUhBCABDRQgAkHgAmogAkGQBGpBJPwKAAAMFAsCQEEkRQ0AIAJBuARqIAJBhANqQST8CgAACyACQegEaiACQdQCaiACQbgEahD0AyACQYAEakEIaiIgIBNBCGopAgA3AwAgAiATKQIANwOABCACKAL8BCEGIAIoAvgEIQcgAigC9AQhASACKALwBCEFIAIoAuwEIQMgAigC6AQiGkEiRg0HIAogCSkCADcCACAKQRBqIAlBEGooAgA2AgAgCkEIaiAJQQhqKQIANwIAIAJB4AJqQQhqIAJBgARqQQhqKQMANwMAIAIgAikDgAQ3A+ACDBILAkBBJEUNACACQbgEaiACQYQDakEk/AoAAAsgAkHoBGogAkHUAmogAkG4BGoQvgIgAkGABGpBCGoiICATQQhqKQIANwMAIAIgEykCADcDgAQgAigC/AQhBiACKAL4BCEHIAIoAvQEIQEgAigC8AQhBSACKALsBCEDIAIoAugEIhpBIkYNByAKIAkpAgA3AgAgCkEQaiAJQRBqKAIANgIAIApBCGogCUEIaikCADcCACACQeACakEIaiACQYAEakEIaikDADcDACACIAIpA4AENwPgAgwRCwJAQSRFDQAgAkG4BGogAkGEA2pBJPwKAAALIAJB6ARqIAJB1AJqIAJBuARqEOUEIAJBgARqQQhqIiAgE0EIaikCADcDACACIBMpAgA3A4AEIAIoAvwEIQYgAigC+AQhByACKAL0BCEBIAIoAvAEIQUgAigC7AQhAyACKALoBCIaQSJGDQcgCiAJKQIANwIAIApBEGogCUEQaigCADYCACAKQQhqIAlBCGopAgA3AgAgAkHgAmpBCGogAkGABGpBCGopAwA3AwAgAiACKQOABDcD4AIMEAsgAkHoBGogAkHUAmoQ3gIgAigCgAUhBiACKAL8BCEHIAIoAvgEISYgAigC9AQhICACKALwBCEDIAIoAuwEIRogAigC6AQhCwJAQSRFIgwNACACQbgEaiAOQST8CgAACyACKAKoBSEEIAtBiYDEAEcNB0EkRQ0QIAJB4AJqIAJBuARqQST8CgAADBALAkBBJEUNACACQbgEaiACQYQDakEk/AoAAAsgAkEDNgLUCiACQegEaiACQdQCaiACQbgEaiACQdQKahCABCACQYAEakEIaiIgIBNBCGopAgA3AwAgAiATKQIANwOABCACKAL8BCEGIAIoAvgEIQcgAigC9AQhASACKALwBCEFIAIoAuwEIQMgAigC6AQiGkEiRg0HIAogCSkCADcCACAKQRBqIAlBEGooAgA2AgAgCkEIaiAJQQhqKQIANwIAIAJB4AJqQQhqIAJBgARqQQhqKQMANwMAIAIgAikDgAQ3A+ACDA4LAkBBJEUNACACQbgEaiACQYQDakEk/AoAAAsgAkEENgLUCiACQegEaiACQdQCaiACQbgEaiACQdQKahCABCACQYAEakEIaiIgIBNBCGopAgA3AwAgAiATKQIANwOABCACKAL8BCEGIAIoAvgEIQcgAigC9AQhASACKALwBCEFIAIoAuwEIQMgAigC6AQiGkEiRg0HIAogCSkCADcCACAKQRBqIAlBEGooAgA2AgAgCkEIaiAJQQhqKQIANwIAIAJB4AJqQQhqIAJBgARqQQhqKQMANwMAIAIgAikDgAQ3A+ACDA0LAkBBJEUNACACQbgEaiACQYQDakEk/AoAAAsgAkEFNgLUCiACQegEaiACQdQCaiACQbgEaiACQdQKahCABCACQYAEakEIaiIgIBNBCGopAgA3AwAgAiATKQIANwOABCACKAL8BCEGIAIoAvgEIQcgAigC9AQhASACKALwBCEFIAIoAuwEIQMgAigC6AQiGkEiRg0HIAogCSkCADcCACAKQRBqIAlBEGooAgA2AgAgCkEIaiAJQQhqKQIANwIAIAJB4AJqQQhqIAJBgARqQQhqKQMANwMAIAIgAikDgAQ3A+ACDAwLAkBBJEUNACACQbgEaiACQYQDakEk/AoAAAsgAkHoBGogAkHUAmogAkG4BGoQ8wEgAkGABGpBCGoiICATQQhqKQIANwMAIAIgEykCADcDgAQgAigC/AQhBiACKAL4BCEHIAIoAvQEIQEgAigC8AQhBSACKALsBCEDIAIoAugEIhpBIkYNByAKIAkpAgA3AgAgCkEQaiAJQRBqKAIANgIAIApBCGogCUEIaikCADcCACACQeACakEIaiACQYAEakEIaikDADcDACACIAIpA4AENwPgAgwLCyAYIAIpA4AENwIAIBhBCGogICkDADcCAAwJCyAYIAIpA4AENwIAIBhBCGogICkDADcCAAwICyAYIAIpA4AENwIAIBhBCGogICkDADcCAAwHCwJAQTBFIg0NACACQagDaiAPQTD8CgAACwJAIAwNACACQdwDaiACQbgEakEk/AoAAAtBAC0AwPGdARpB9AAQhQEiIkUNECAiIAY2AhggIiAHNgIUICIgJjYCECAiICA2AgwgIiADNgIIICIgGjYCBCAiIAs2AgACQCAMDQAgIkEcaiACQdwDakEk/AoAAAsgIiAENgJAAkAgDQ0AICJBxABqIAJBqANqQTD8CgAACwJAIAEgAigChANHDQAgAkGEA2pB7ISFARD5FSACKAKIAyEFCyAFIAFBA3RqIgMgIjYCBCADQQc2AgAMDgsgGCACKQOABDcCACAYQQhqICApAwA3AgAMBQsgGCACKQOABDcCACAYQQhqICApAwA3AgAMBAsgGCACKQOABDcCACAYQQhqICApAwA3AgAMAwsgGCACKQOABDcCACAYQQhqICApAwA3AgAMAgsgCCACQdQCahCvDCACQdQCahCaCBpBhICAgHghAwwICyACICA2AoQEIAIgAzYCgAQgAkHoBGogAkHUAmogAkGABGoQnQICQCACKALoBCIaQSJGDQAgAigC/AQhBiACKAL4BCEHIAIoAvQEISYgAigC8AQhICACKALsBCEDAkBBJEUNACACQeACaiATQST8CgAACyACKAKkBSEEIAJBgARqELADDAQLAkAgAigC7AENACACKAL4ASEGIAJBADYC+AEgAigC9AEhByACKALwASEmIAJCgICAgMAANwLwAQwFC0GMhYUBEPgUAAsgAiAGNgKUAyACIAc2ApADIAIgATYCjAMgAiAFNgKIAyACIAM2AoQDDAgLIAIoAqQFIQQgBSEgIAEhJgwBCyACQYQDahDlFyAaQSJGDQELAkBBJEUiAQ0AIAJByAFqIAJB4AJqQST8CgAACwJAIAENACACQTBqIAJByAFqQST8CgAACyACQewBahDPCUEAIR5BACETDAELAkAgBkUNACAHIQEDQCABKAIAIAFBBGooAgBBAUEBEMARIAFBJGohASAGQX9qIgYNAAsLICYgB0EEQSQQwBEgAkHsAWoQzwkCQCACKAK4ASIFIAIoArABRw0AIAJBsAFqQfSRhAEQ+RULIAIoArQBIgEgBUEDdGoiBiAgNgIEIAYgAzYCACACIAVBAWoiAzYCuAEgASADQQN0aiENIAJB6ARqQQRqIRogAkHsAWpBFGohDiACQegEakEUaiEQIAJBuARqQQxqIR4gAkHcA2pBEGohCSACQewBakEEaiEMQQAhCEEAIQsDQCACQdQKaiEDAkACQAJAAkACQAJAAkAgCEEIRw0AQQghCCABIQpBACEBDAELIAsNASAIQQhqIQVBASELAkAgASANRw0AIAUhCCANIQpBACEBDAELIAIgAkGoAWogCGo2AtQKIAFBCGohCiACQdQCaiEDIAUhCAsgAyABNgIAIAIoAtQKIgFFDQEgAigC1AIhGCAJQQRqICRBBGovAAA7AAAgCSAkKAAANgAAIAIgAi0AmAE6APMDIAJCBDcC5AMgAkIANwLcAyACIAItAJ8BOgDyAyACIAEpAgA3AoQEIAIgAkHcA2o2AoAEIAJCgICAgMAANwK4BCACQgQ3AsgEIAJCADcCwAQgAkHcA2ohAwNAIBhBBGoiBCgCACEFAkACQAJAAkACQAJAAkACQCAYKAIAIgFBeWoOBQABAgUDBwsgAy0AFCIBQQJGDQMgAUEBcQ0DIAJBADYCsAMgAkKAgICAEDcCqAMgGiACQagDahDcEyACQQo2AugEIAMgAkHoBGoQww4MBQsgAkELNgLoBCADIAJB6ARqEMMODAQLAkACQAJAIAUoAgBBgoCAgHhGDQAgAkEDOgCoAwwBCyACQagDaiADIAVBCGooAgAgBUEMaigCABCqByACQagDaiEBIAItAKgDQQNHDQELIANBEGohAQsgGiABKAAANgAAIBpBBGogAUEEai8AADsAACACQQw2AugEIAMgAkHoBGoQww4MAwsgAkENNgLoBCADIAJB6ARqEMMODAILIAJBADYCsAMgAkKAgICAwAA3AqgDIBogAkGoA2oQ3RMgAkEJNgLoBCADIAJB6ARqEMMODAELIAJBDjYC6AQgAyACQegEahDDDiAFKAIIRQ0AIAJBDzYC6AQgAyACQegEahDDDgsgGCgCACEBC0EEISAgGEEEaigCACEDQQEhIgJAAkACQAJAAkACQCABQXlqDgUABAECAwULIAMgAygCAEGIgMQARiIBQQJ0aiEFAkACQANAIAIoAoAEIQMCQAJAIAFBAXFFDQACQCADLQAUIgZBAkYNACAGQQFxDQAgAkEANgLQASACQoCAgIAQNwLIASAaIAJByAFqENwTIAJBCjYC6AQgAyACQegEahDDDgwCCyACQQA2AtABIAJCgICAgMAANwLIASAaIAJByAFqEN0TIAJBCTYC6AQgAyACQegEahDDDgwBCyAFKAIAQYaAxABHDQACQCADLQAUIgZBAkYNACAGQQFxDQAgAkEANgLQASACQoCAgIAQNwLIASAaIAJByAFqENwTIAJBCjYC6AQgAyACQegEahDDDgwBCyACQQA2AtABIAJCgICAgMAANwLIASAaIAJByAFqEN0TIAJBCTYC6AQgAyACQegEahDDDgsgAkHgAmogASAFEIYNAkAgAigC4AJBBEYNACACQRhqIAJB4AJqEPEQIAIoAhwhByACKAIYIRMCQCACKALMBCIGIAIoAsQERw0AIB4Q+hULIAIoAsgEIAZBGGxqIgMgBTYCBCADIAE2AgAgAyACKQLgAjcCCCADQRBqIAJB4AJqQQhqKQIANwIAIAIgBkEBajYCzAQgByEFIBMhAQwBCyACQegEaiABIAUgAkGABGoQZQJAIAIoAugEIgNBgICAgHhGDQAgAkGoA2pBCGogEEEIaikCADcDACACQagDakEQaiAQQRBqKAIANgIAIAIgECkCADcDqAMgAikC9AQhPiACKALwBCEBIAIoAuwEIQUMDAsgAigCzAQiA0UNAiACKALIBCADQRhsakFoaiEGA0AgA0F/aiEBIAYoAgAiB0ECRg0CIAZBFGooAgAhBSAGQQRqKAIAIRMCQAJAAkACQCAGQQhqIiYoAgAOBAADAQMACyAFRQ0CIAZBEGooAgAhASACQQA2AoQDIAIgBUF/aiIPNgKQAyACIAE2AogDIAIgAUHYAGo2AowDDAELIAIgATYCzAQgAiAPNgKQAyACIAU2AowDIAJBAzYChAMgAiAGKAIMNgKIAwJAIAIoAoAEIgEtABQiBUECRg0AIAVBAXENACACQQA2AtABIAJCgICAgBA3AsgBIBogAkHIAWoQ3BMgAkEKNgLoBCABIAJB6ARqEMMODAELIAJBADYC0AEgAkKAgICAwAA3AsgBIBogAkHIAWoQ3RMgAkEJNgLoBCABIAJB6ARqEMMOCyACQRBqIAJBhANqEPEQIAIoAhQhBSACKAIQIQEgBiATNgIEIAYgBzYCACAmQQhqIAJBhANqQQhqKQIANwIAICYgAikChAM3AgAgAiADNgLMBAwCCyACQegEaiAHIBMgAkGABGoQZQJAIAIoAugEIgNBgICAgHhGDQAgAkGoA2pBCGogEEEIaikCADcDACACQagDakEQaiAQQRBqKAIANgIAIAIgATYCzAQgAiAQKQIANwOoAyACKALsBCEFIAIoAvAEIQEgAikC9AQhPgwNCyAGQWhqIQYgASEDIAENAAsLQQAhAQsgAiABNgLMBAsMBAtBASEgQQAhBkEAISIMAwsgAygCCCIBRQ0CIAFBf2ohBiADKAIEIgNBCGohBUEDISBBACEiDAILIAMoAggiAUUNASABQX9qIQYgAygCBCIDQQhqIQVBAiEgQQAhIgwBC0EAIQZBACEiQQAhIAsCQAJAICINACAGrUIghiE+IAWtIT9BJCEBIAMhEwJAAkACQCAgDgQBAAICAQtBLCEBCyADIAFqKAIAIRMLID4gP4QhPgJAIAIoAsAEIgUgAigCuARHDQAgAkG4BGoQ+xULIAIoArwEIAVBFGxqIgEgPjcCDCABIAM2AgggASAgNgIEIAEgGDYCACAFQQFqIQUMAQsgAkHoBGogAkGABGogGCgCACAEKAIAEFwCQAJAIAIoAugEIgNBgICAgHhGDQBBJEUNBwwBCwJAIAIoAsAEIgVFDQAgAigCvAQgBUEUbGpBbGohAQJAA0ACQAJAAkACQAJAAkAgAUEEaigCACIGQQRGDQAgAUEQaigCACEHIAFBDGooAgAhEyABKAIAIQMgBg4EBQUCAQULIAVBf2ohAQwGCyAHDQEMAwsgB0UNAgwBCyACQQ82AugEIAIoAoAEIAJB6ARqEMMOCyABIBM2AgggASAGNgIEIAEgAzYCACABIAdBf2o2AhAgASATQQhqNgIMDAULIAJB6ARqIAJBgARqIAMoAgAgA0EEaigCABBcAkAgAigC6AQiA0GAgICAeEYNAEEkDQQMCgsgAUFsaiEBIAVBf2oiBQ0AC0EAIQELIAIgATYCwAQLAkAgAigCgAQiASgCACIDQf////8HTw0AIAEgA0EBajYCACACIAEoAgwiBTYChAMCQAJAIAVBAUcNACABIAM2AgAgAkHoBGogARCoDyACKALoBEEQRw0BQaSyhQEQmyAACyACQQA2AugEQQAgAkGEA2pBgIabASACQegEakG0soUBEJkZAAsgAkGoA2pBGGogAkHoBGpBGGooAgA2AgAgAkGoA2pBEGogAkHoBGpBEGopAgA3AwAgAkGoA2pBCGogAkHoBGpBCGopAgA3AwAgAiACKQLoBDcDqAMgDCACQagDahC5CUEBIQFBgICAgHghAwwIC0GUsoUBEPkUAAsgDCAaQST8CgAADAULIAIgBTYCwAQgAigCgAQhAyATIRgMAAsLQeT5hAEQmyAACyACLQCQASEhIAItAI8BISMgAi0AjgEhKCACKALEASEGIAIoAsABIQECQAJAIAItAIgBIhxBA0YNACAcQQJGDQAgAigCfCIdIB0oAgAiA0EBajYCACADQX9MDQsgAigChAEhKSACKAKAASEqDAELCyACLQCNASErIAItAIwBISwgAi0AlQEhLSACLQCUASEuIAItAJMBIS8gAigCeCEwIAIoAnQhMSACKAJwITIgAigCbCEzIAItAJIBITQgAi0AkQEhNSACKAJYITYgAigCVCE3IAIoAmghOCACKAJkITkgAigCYCE6IAIoAlwhOyACLQCWASE8IAJB6ARqIAZBBEEEEM0NIAIoAuwEIT0CQCACKALoBEEBRg0AIAIoAvAEIRBBACETQQAhGQJAIAZFDQAgECEDIAYhBQNAIAMgATYCACADQQRqIQMgAUEcaiEBIAVBf2oiBQ0ACyAGIRkLIAJBADYC5AQgAkKAgICAwAA3AtwEAkACQCAZDQBBASEUQQQhFUEAIRFBBCEmQQAhDQwBCyAGQQJ0IRNBACEFQQQhB0EAIQYDQCAQIAVqKAIAIQMQrR0iASADKAIYIgMtADI6ADIgASADLwEwOwEwIAEgAykCKDcCKCABIAMpAiA3AiAgASADKQIYNwIYIAEgAykCEDcCECABIAMpAgg3AgggASADKQIANwIAAkAgBiACKALcBEcNACACQdwEahD8FSACKALgBCEHCyAHIAVqIAE2AgAgAiAGQQFqIgY2AuQEIBMgBUEEaiIFRw0ACyACKALgBCIRQQRqISYgESAGQQJ0aiEVIBEoAgAiASgCFCESIAEoAhAhDUF/IRNBACEUC0EAIQNBASEGQQEhB0EAIRpBACEeIBMhIEEAISJBASEFQQAhCEEAIQ5BACEEA0BBACEYA0AgCCEbA0AgGCEIAkACQAJAAkACQAJAAkACQAJAAkAgBUEBcQ0AICYgFUYNAiAmIQEgJkEEaiEmDAELIBEhASAUDQELIAEoAgAhASAHQQFxIQVBACEHAkAgBUUNACABLQAwIQcLIAEoAiwhGCABKAIQIQUgDUEBcSIkRQ0BIAVFDQEgEiABKAIURw0CDAMLQQAtAMDxnQEaQTQQhQEiAQ0DDBQLICQNACAFRQ0BC0EAIQ0LIAMgGGohBSAGQQFxIRhBACEGAkAgGEUNACABLQAxIQYLIAEoAighJCABKAIkIQkgASgCICEKIAEoAhwhCyABKAIYIQwgBSADSSEDQQEhGAJAIARBAXENACABKAIAIgQNAkEAIQ4LQQEhBAwDCyABIAZBAXE6ADIgAUEAOgAxIAEgB0EBcToAMCABIAM2AiwgASAaNgIoIAEgHjYCJCABIBM2AiAgASAgNgIcIAEgIjYCGCABIBI2AhQgASANNgIQIAEgHzYCDCABIBs2AgggASAPNgIEIAEgDjYCAEEALQDA8Z0BGkHcABCFASIYRQ0QIBggPDoASiAYIC06AEkgGCAuOgBIIBggLzoARyAYIDQ6AEYgGCA1OgBFIBggIToARCAYICM6AEMgGCAoOgBCIBggKzoAQSAYICw6AEAgGCAcOgA8IBggKTYCOCAYICo2AjQgGCAdNgIwIBggMDYCLCAYIDE2AiggGCAyNgIkIBggMzYCICAYIDg2AhwgGCA5NgIYIBggOjYCFCAYIDs2AhAgGCA2NgIMIBggNzYCCCAYQoGAgIAQNwIAIBggATYCWCAYQdQAaiACQeQEaigCADYCACAYIAIpAtwENwJMIAJB6ARqIBggECAZED0gAigC8AQhGiACKALsBCEeAkACQCACKALoBCITQQJGDQAgAigChAUhBiACKAKABSEHIAIoAvwEISYgAigC+AQhICACKAL0BCEDAkBBJEUNACACQTBqIAJBiAVqQST8CgAACyACKAKsBSEEIBggGCgCACIBQX9qNgIAIAFBAUcNASAYEOYODAELIB4gHigCACIBQQFqNgIAIAFBf0wNEUEALQDA8Z0BGkEIEIUBIhNFDREgEyAaNgIEIBMgHjYCACACQegEakEIQcAAQcAAEM0NIAIoAuwEIQcgAigC6ARBAUYNAiACQQA2AvQBIAIgAigC8AQiBjYC8AEgAiAHNgLsAUEMIQNBACEBA0ACQCABIAIoAuwBRw0AIAJB7AFqEP0VIAIoAvABIQYLIAYgA2oiBUEANgAAIAVBeGpCgICAgMAANwAAIAVBdGpBADoAACACIAFBAWoiATYC9AEgA0HAAGohAyAHIAFHDQALIAJBqANqQQhqIAJB7AFqQQhqKAIANgIAIAIgAikC7AE3A6gDQQAtAMDxnQEaQYgGEIUBIgFFDREgAUECNgIAAkBB7AVFDQAgAUEEaiACQegEakHsBfwKAAALIAFBADYC+AUgAUGEkoQBNgL0BSABIBM2AvAFIAEgAikDqAM3AvwFIAFBhAZqIAJBsANqKAIANgIAQQAtAMDxnQEaQRQQhQEiBUUNESAFIBg2AhAgBSAaNgIMIAUgHjYCCCAFQoGAgIAQNwIAQQIhEyABIRogBSEeCyA9IBBBBEEEELURDAsLIA4gBCAOIAEoAgQiFiAPT3EiFxshDiAPIBYgFxshD0EAIQQMAQsgByACKALwBEG004QBEKoeAAsgJCAaciEaIAkgHnIhHiAKIBNxIRMgCyAgcSEgIAwgInIhIkF/IAUgAxshA0EAIQUgCEEBcQ0AC0EBIRhBACEFQQAhCCABKAIIIiRBAUcNAAsgGyAkIBsgASgCDCIBIB9NcSIFGyEIIB8gASAFGyEfQQAhBQwACwsgPSACKALwBEGwmJsBEKoeAAsgDiACKQOoAzcCACAOQRBqIAJBqANqQRBqKAIANgIAIA5BCGogAkGoA2pBCGopAwA3AgAgAiA+NwL4ASACIAE2AvQBIAIgBTYC8AEgAiADNgLsAQtBACEBCyACKAK4BCACKAK8BEEEQRQQwBEgAigCxAQgAigCyARBBEEYEMARIAIoAvQBISYgAigC8AEhIAJAIAENACACQTBqQQhqIA5BCGopAgA3AwAgAkEwakEQaiAOQRBqKAIANgIAIAIgDikCADcDMCACKAL8ASEGIAIoAvgBIQcgAigC5AMgAigC6AMQ7RsgAigC4AMgAigC5AMQsyBBACEeQSIhGkEAIRMMAgsgAigCiAIhBSACKAKEAiEGIAIoAoACIQcgAigC/AEhEyACKAL4ASEYIAIoAuQDIAIoAugDEO0bIAIoAuADIAIoAuQDELMgAkAgAigCxAEiAyACKAK8AUcNACACQbwBakHkkYQBEP4VCyACKALAASADQRxsaiIBIAU2AhggASAGNgIUIAEgBzYCECABIBM2AgwgASAYNgIIIAEgJjYCBCABICA2AgAgAiADQQFqNgLEASAKIQEMAAsLIAIoAsABIgEgAigCxAEQ7hsgAigCvAEgARCzICACKAK0ASEYAkAgAigCuAEiBUUNACAYIQEDQCABELADIAFBCGohASAFQX9qIgUNAAsLIAIoArABIBhBBEEIEMARAkACQCATQQJHDQAgACAnNgIMIAAgJTYCCCAAIBo2AgQgACAeNgIADAELAkBBJEUNACACQbgEaiACQTBqQST8CgAACyAlICUoAgAiAUF/ajYCAAJAIAFBAUcNACAlICcQ+hcLIAIgBjYChAUgAiAHNgKABSACICY2AvwEIAIgIDYC+AQgAiADNgL0BCACIBo2AvAEIAIgHjYC7AQgAiATNgLoBAJAQSRFDQAgAkGIBWogAkG4BGpBJPwKAAALIAIgBDYCrAUgAkHwBGohGAJAAkAgE0EBcSIBRQ0AIBpBJ0cNACAAQYCAgIB4NgIEIAAgAzYCCAwBCyAAQQRqIR4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABDQBBACEBIAJBADYC3AogAkKAgICAEDcC1AoCQCAaQSJHDQAgAkEANgKUAyACICY2AogDIAIgIDYChAMgAiACQYAFajYCkAMgAiACQZgFajYCjAMgAkGoA2ogAkGEA2oQsQYgAkGMA2ohICACKAKEAyEBAkACQAJAIAIoAogDIgNBB0sNACADRQ0BA0AgAS0AAEEKRg0DIAFBAWohASADQX9qIgMNAAwCCwsgAkEKIAEgAxCQCSACKAIAQQFGDQELIAJB1ApqQciehQFB256FARCKFCACQewBaiACQYQDahCxBiACQdwDaiACQewBahD6AiACQewBahDeEiACQQE2AvABIAJBmO+bATYC7AEgAkIBNwL4ASACQfUANgLkAiACIAJB4AJqNgL0ASACIAJB3ANqNgLgAgJAIAJB1ApqQfDZgwEgAkHsAWoQzgUNACACQQE2AvABIAJB5J6FATYC7AEgAkIBNwL4ASACQfYANgLkAiACICA2AuACIAIgAkHgAmo2AvQBIAJB1ApqQfDZgwEgAkHsAWoQzgUNACACKALcAyACKALgA0EBQQEQwBEMDgsgAigC3AMgAigC4ANBAUEBEMARDAoLIAJB7AFqQQhqIgFBADYCACACQoCAgIAQNwLsASACQewBakH+AEHPABDYDyACQYAEakEIaiABKAIANgIAIAIgAikC7AE3A4AEIAJB1ApqQciehQFB256FARCKFCACQQI2AvABIAJB0J+FATYC7AEgAkIBNwL4ASACQfUANgLgAyACIAJB3ANqNgL0ASACIAJBgARqNgLcAyACQdQKakHw2YMBIAJB7AFqEM4FRQ0HDAgLIAIoApQFIQMgAigCkAUhBQJAIBpBEUsNAEEBIBp0QYDACXFFDQAgAkH0BGohAQsgAiABNgKUAyACIBg2AowDIAIgAzYCiAMgAiAFNgKEAyACIAJBmAVqNgKQAyACQagDaiACQYQDahCxBiACQYwDaiEgIAIoAoQDIQECQAJAAkAgAigCiAMiA0EHSw0AIANFDQEDQCABLQAAQQpGDQMgAUEBaiEBIANBf2oiAw0ADAILCyACQQhqQQogASADEJAJIAIoAghBAUYNAQsgAkHUCmpByJ6FAUHbnoUBEIoUIAJB7AFqIAJBhANqELEGIAJB3ANqIAJB7AFqEPoCIAJB7AFqEN4SIAJBATYC8AEgAkGY75sBNgLsASACQgE3AvgBIAJB9QA2AuQCIAIgAkHgAmo2AvQBIAIgAkHcA2o2AuACAkAgAkHUCmpB8NmDASACQewBahDOBQ0AIAJBATYC8AEgAkHknoUBNgLsASACQgE3AvgBIAJB9wA2AuQCIAIgIDYC4AIgAiACQeACajYC9AEgAkHUCmpB8NmDASACQewBahDOBQ0AIAIoAtwDIAIoAuADQQFBARDAEQwHCyACKALcAyACKALgA0EBQQEQwBEMBAsgAkHsAWpBCGoiAUEANgIAIAJCgICAgBA3AuwBIAJB7AFqQf4AQc8AENgPIAJBgARqQQhqIAEoAgA2AgAgAiACKQLsATcDgAQgAkHUCmpByJ6FAUHbnoUBEIoUIAJBAjYC8AEgAkHQn4UBNgLsASACQgE3AvgBIAJB9QA2AuADIAIgAkHcA2o2AvQBIAIgAkGABGo2AtwDIAJB1ApqQfDZgwEgAkHsAWoQzgVFDQEMAgsgAkHsAWpBCGoiAUEANgIAIAJCgICAgBA3AuwBIAJB7AFqQbT8gwFBxvyDARCKFCAeQQhqIAEoAgA2AgAgHiACKQLsATcCAAwMCyACQTBqIAJBqANqEPoCIAJBATYC8AEgAkGY75sBNgLsASACQgE3AvgBIAJB9QA2AuADIAIgAkHcA2o2AvQBIAIgAkEwajYC3AMCQCACQdQKakHw2YMBIAJB7AFqEM4FDQAgAkECNgLwASACQdCfhQE2AuwBIAJCATcC+AEgAkH1ADYC4AMgAiACQdwDajYC9AEgAiACQYAEajYC3AMgAkHUCmpB8NmDASACQewBahDOBQ0AAkAgAigCvAMiAUUNAEEAIQUgAkEANgLQASACQoCAgIDAADcCyAEgAUEYbCEHIAIoArgDIgNBEGohASADQRRqIQZBBCEaQQAhAwNAIAJBBTYC4AMgAkGAoIUBNgLcAyACQgQ3AugDIAYoAgAhEyACQQ42AogCIAJBDjYCgAIgAkEONgL4ASACQQ42AvABIAIgE0F/ajYC1AIgAiABNgL8ASACIAFBeGo2AvQBIAIgAUF0ajYC7AEgAiACQewBajYC5AMgAiACQdQCajYChAIgAkHgAmogAkHcA2oQxQkCQCADIAIoAsgBRw0AIAJByAFqEP8VIAIoAswBIRoLIBogBWoiEyACKQLgAjcCACATQQhqIAJB4AJqQQhqKAIANgIAIAIgA0EBaiIDNgLQASABQRhqIQEgBkEYaiEGIAVBDGohBSAHQWhqIgcNAAsgAkHcA2ogAigCzAEgA0HYoZsBQQEQzgQgAkH1ADYC5AIgAkECNgLwASACQdCfhQE2AuwBIAJCATcC+AEgAiACQdwDajYC4AIgAiACQeACajYC9AEgAkHUCmpB8NmDASACQewBahC/HiEBIAIoAtwDIAIoAuADQQFBARDAESACQcgBahD6FCABDQELIAJBATYC8AEgAkHknoUBNgLsASACQgE3AvgBIAJB9wA2AuADIAIgIDYC3AMgAiACQdwDajYC9AEgAkHUCmpB8NmDASACQewBahDOBUUNAwsgAigCMCACKAI0QQFBARDAEQsgAigCgAQgAigChARBAUEBEMARCyACQagDahDeEgwFCyACKAIwIAIoAjRBAUEBEMARIAIoAoAEIAIoAoQEQQFBARDAEQsgAkGoA2oQ3hIMBgsgAkEwaiACQagDahD6AiACQQE2AvABIAJBmO+bATYC7AEgAkIBNwL4ASACQfUANgLgAyACIAJB3ANqNgL0ASACIAJBMGo2AtwDAkAgAkHUCmpB8NmDASACQewBahDOBQ0AIAJBAjYC8AEgAkHQn4UBNgLsASACQgE3AvgBIAJB9QA2AuADIAIg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PEUNACAAQQRqIANB0ANqQQRyQTz8CgAACyAAIAU2AgAMEwsgACAGNgIIIAAgAjYCBCAAQSo2AgAMEgsgACABIAIoAgwgAi0AFCAGEPoBDBELIAMgBjYC3AMgA0EANgLYAyADIAU2AtQDIAMgATYC0AMgACABIANB0ANqENMEDBALIAAgASACKAIIIAIoAgwgAigCECACKAIEEOoCDA8LIAIoAggiBSACKAIMIgRBHGxqIQICQAJAAkACQAJAIAEtAAtBAXENACAERQ0CIANB0ANqIAEgBRBIIAMoAtgDIQQgAygC1AMhCCADKALQAyEGAkBBNEUNACADQegAaiADQdwDakE0/AoAAAsgBUEcaiEFDAELIARFDQEgA0HQA2ogASACQWRqIgIQSCADKALYAyEEIAMoAtQDIQggAygC0AMhBkE0RQ0AIANB6ABqIANB3ANqQTT8CgAACyAGQVZqDgICAAELIANB0ANqIAEQmxUgAEEIaiEEIAMoAtQDIQICQAJAIAMoAtADIgVBKkYNAEE4RQ0BIAQgA0HQA2pBCGpBOPwKAAAMAQsgBCACNgIACyAAIAU2AgAgACACNgIEDBALAkBBNEUNACAAQQxqIANB6ABqQTT8CgAACyAAIAQ2AgggACAINgIEIAAgBjYCAAwPCyADQdwDaiEHA0ACQAJAAkACQAJAIAEtAAtBAXENACAFIAJGDQIgA0HQA2ogASAFEEggAygC2AMhCSADKALUAyEKIAMoAtADIQYCQEE0RQ0AIANBnAFqIAdBNPwKAAALIAVBHGohBQwBCyAFIAJGDQEgA0HQA2ogASACQWRqIgIQSCADKALYAyEJIAMoAtQDIQogAygC0AMhBkE0RQ0AIANBnAFqIAdBNPwKAAALIAZBKkYNAiAGQStHDQELIAAgBDYCCCAAIAg2AgQgAEEqNgIADBELAkBBNEUNACAAQQxqIANBnAFqQTT8CgAACyAAIAk2AgggACAKNgIEIAAgBjYCAAwQCyADQdADaiABIAQgChCeCAJAIAMoAtADIgRBKkYNAAJAQTxFDQAgAEEEaiADQdADakEEckE8/AoAAAsgACAENgIADBALIAkhBAwACwsCQAJAAkACQCACKAIMIgpFDQAgAigCCCIGIApBHGwiCWohC0EAIQUgBiECIAohBANAIAUgAigCAEEBRmohBSAC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QQhqIANB0ANqQQhqQTj8CgAACyAAIAI2AgQgACAFNgIADAULIAAgCTYCCCAAIAI2AgQgAEEqNgIADAQLIAUgAygC2ANBlK+EARCqHgALAkACQAJAAkAgASgCIA0AIAFBfzYCICADQgA3ApADIANB0ANqIAFBJGoiDSADQZADahDbCyADKALUAyEMAkAgAygC0AMiAkEqRg0AAkBBOEUNACAAQQhqIANB0ANqQQhqQTj8CgAACyAAIAw2AgQgACACNgIAIAMoAuACIQQgAygC3AIhCQwECyADQQA2AowCIANCgICAgMAANwKEAgJAIAMoAuACIgRFDQAgA0GQAmogAygC3AIiCRCEDCADQShqQQRqIQ8gA0GQAmpBGGohCCADQZACakEEaiEuIAytITEgA0GQAmpBDGohByADQZADakEQaiELQQQhDkEAIRADQAJAAkACQAJAAkACQAJAIAMoAsACIgIgAygCxAJGDQAgAyACQQhqNgLAAgJAIAIoAgAiBiAETw0AIAIxAAQhMCADKAKcAiEKIAMoAqQCIQUCQCAJIAZBGGxqKAIIRQ0AAkAgBSAKRw0AIAdBiLeEARDvFQsgAygCoAIgBUEDdGogMEIohiAwQiCGhDcCACADIAVBAWo2AqQCAkAgECADKAKEAkcNACADQYQCahCIFiADKAKIAiEOCwJAQThFDQAgDiAQQThsaiADQZACakE4/AoAAAsgAyAQQQFqIhA2AowCIAIoAgAiAiAETw0DIANBkAJqIAkgAkEYbGoQhAwMCQsCQCAFIApHDQAgB0G4t4QBEO8VCyADKAKgAiAFQQN0aiAwQiCGIDGEIDBCKIaENwIAIAMgBUEBajYCpAIMCAsgBiAEQfi2hAEQsxEACyADKAKkAg4CBQIBCyACIARBqLeEARCzEQALIA8gBykCADcCACAPQQhqIAdBCGooAgA2AgAgA0EANgKkAiADQoCAgIDAADcCnAIgA0ECNgIoIANB0ANqIA0gA0EoahDbCyADKALUAyEFIAMoAtADIgJBKkYNAkE4RQ0BIABBCGogA0HQA2pBCGpBOPwKAAAMAQsgA0EANgKkAiADKAKgAikCACEwIANBATYCKCADIDA3AiwgA0HQA2ogDSADQShqENsLIAMoAtQDIQUgAygC0AMiAkEqRg0BQThFDQAgAEEIaiADQdADakEI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aiEKIAtBIGohEwwjCyALQRRqIQogC0EQaiETDCILIAtBIGohCiALQRxqIRMMIQsgC0EYaiEKIAtBFGohEwwgCyALQRRqIQogC0EQaiETDB8LIAtBFGohCiALQRBqIRMMHgsgCygCCA4HFhcYGRobHBYLIAtBIGohCiALQRxqIRMMHAsgC0EQaiEKIAtBDGohEwwbCyALQRhqIQogC0EUaiETDBoLIAsoAiAiE0EoaiEKIBNBJGohEwwZCyALQQhqIQogC0EEaiETDBgLIAtBCGohCiALQQRqIRMMFwsgC0EMaiEKIAtBCGohEwwWCyALQQxqIQogC0EIaiETDBULIAtBHGohCiALQRhqIRMMFAsgC0EsaiEKIAtBKGohEwwTCyALQQhqIQogC0EEaiETDBILIAsoAgQiE0EEaiEKDBELIAtBFGohCiALQRBqIRMMEAsgC0EQaiEKIAtBDGohEwwPCyALQQxqIQogC0EIaiETDA4LIAtBDGohCiALQQhqIRMMDQsgC0EQaiEKIAtBDGohEwwMCyALQRBqIQogC0EMaiETDAsLIAtBEGohCiALQQxqIRMMCgsgC0EUaiEKIAtBEGohEwwJCyALQQxqIQogC0EIaiETDAgLIAtBCGohCiALQQRqIRMMBwsgC0EcaiEKIAtBGGohEwwGCyALQRBqIQogC0EMaiETDAULIAtBEGohCiALQQxqIRMMBAsgC0EUaiEKIAtBEGohEwwDCyALQRRqIQogC0EQaiETDAILIAtBJGohCiALQSBqIRMMAQsgC0EkaiEKIAtBIGohEwsgCigCACEVIBMoAgAhGSACQdABaiALEIMCAkACQCACKALQAUGAgICAeEYNACACQcACakEIaiACQdABakEIaigCACIKNgIAIAIgAikC0AE3A8ACIAIoAsQCIQsMAQtBBCEKIAJB4AJqQQRBAUEBEMwNIAIoAuQCIRMgAigC4AJBAUYNBCACKALoAiILQd/WlcsHNgAAIAJBBDYCyAIgAiALNgLEAiACIBM2AsACCyACQcgAakHIypgBIAsgChCoAwJAAkACQCACKAJIDQAgCyAKQYTLmwFBBRCZHA0AIAJBwABqQbjLmAEgCyAKEKgDIAIoAkANACACQThqQejLmAEgCyAKEKgDIAIoAjgNACALIApqIREgCkUNCwJAIAssAAAiGkF/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QeACakHYAPwKAAALQQEhFSABIABBAWo2AggLIAJBGGpBAEEAIAEoAggiE0GE85oBEMkYIAIoAhwhDyABIAIoAhgiADYCCCACIAkgEkEEdGoiDTYC8AEgAiAWNgLsASACIAk2AugBIAIgCTYC5AEgAiABNgLYASACIA82AtwBIAIgEyAPayIWNgLgAQJAIAAgD0YNACABKAIEIgQgD0HYAGxqIQUgBCAAQdgAbGohACACQeACakEEciEMA0AgACgCACIEQQ1GDQECQEHUAEUNACAMIABBBGpB1AD8CgAACyACIAQ2AuACIAJB4AJqEIYFIABB2ABqIgAgBUcNAAsLIAJB5AFqIRQgAkKIgICAgAE3AtABAkACQAJAAkACQAJAIBMgD0cNACABIBQQnAcMAQsCQAJAAkAgASgCCCIAIA9GDQAgASgCBCIFIA9B2ABsaiEOIBJBBHQhBCAFIABB2ABsaiEAIAJBnQNqIQUgAkHgAmpBKGohDCACQZQDaiELA0AgBEUNAiAJKQMAISAgC0IANwIAIAtBCGpBADoAACAFQQA2AAAgBUEEakEAOwAAIAJBADYCiAMgAkIENwKMAyACQcACakEIaiIKIAxBCGooAgA2AgAgAkIANwPwAiACQgE3A+gCIAJCADcDgAMgAkEANgLgAiACQQM6AKMDIAIgDCkDADcDwAIgAkHgAmoQmQ0gAEEoakIANwMAIABBGGpCADcDACAAQRBqICA3AwAgAEEIakEANgIAIABBBzYCACAAQTBqIAIpA8ACNwMAIABBOGogCigCADYCACAAQTxqQgA3AgAgAEHDAGpCADcAACAAQcsAakEDOgAAIAEgASgCCEEBajYCCCAEQXBqIQQgCUEQaiEJIABB2ABqIgAgDkcNAAsgAiAJNgLoAQsCQCANIAlHDQAgDSEJDAILAkAgDSAJa0EEdiIAIAEoAgAgE2tNDQAgASATIABBCEHYABCfFwsgACAPaiIAQdgAbCEEAkAgFkHYAGwiBUUNACABKAIEIgwgBGogDCAPQdgAbGogBfwKAAALIAIgADYC3AEgASgCCCIFIABGDQEgASgCBCIAIARqIQsgACAFQdgAbGohACACQeACakEoaiEEIAJBlANqIQUgAkGdA2oiCkEEaiEPAkADQCAJIA1GDQEgCSkDACEgIAVCADcCACAFQQhqQQA6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AowBIAIgACkCeDcCkAEgAkGcAWpBDGogAEGoAWoiAS8BADsBACACQQYgESAHQYCAgIB4RiIEGzYC4AIgAkHIkIABIBMgBBs2AtwCIAIgACkCoAE3AqABIAIgAkHcAmo2ApwBIAJBrAFqQQxqIAEvAQA7AQAgAiAGNgLIASACIAApAqABNwKwASACIAJByAFqNgKsASACQYACakEMaiABLwEAOwEAIAIgFDYCxAIgAiAAKQKgATcChAIgAiACQcQCajYCgAIgAkGgAmpBDGogAEGKAWovAQA7AQAgAiAAKQGCATcCpAIgAiACQdACajYCoAIgAkEXNgKMAyACQRg2AoQDIAJBGDYC/AIgAkEZNgL0AiACQRk2AuwCIAIgAkGgAmo2AogDIAIgAkGAAmo2AoADIAIgAkGsAWo2AvgCIAIgAkGcAWo2AvACIAIgAkGMAWo2AugCIAJBADYC6AEgAkEGNgLcASACQeyQgAE2AtgBIAJBBTYC5AEgAiACQegCajYC4AEgAkH0AGogAkHYAWoQrR4hCCACLQDQAiACKALUAhDyFCAHIBMQlx4gAigChAEhBwJAIAIoAogBIgRFDQAgByEBA0AgASgCACABQQRqKAIAEK4eIAFBGGooAgAgAUEcaigCABDvGiABQSBqIQEgBEF/aiIEDQALCyACKAKAASAHQQRBIBCwESALIAkQvBogCiALEJogIAhFDQMMBQsgAigCiAEhBCACKAKEASEBIAIgAigCgAE2ArQBIAIgATYCsAEgAiABNgKsASACIAEgBEEFdGo2ArgBIABBEGohFSAAQcAAaiEWIABBxABqIRcgAEEYaiEYIABBFGohGSAAQSRqIRogAEE4aiEbIABBBGohHCAAKAJwIh0gACgCdEEKbGohHiACQaACakEEaiEfIAJB6AJqQQRqISAgAkHoAmpBIGohISACQegCakEcaiEiIAJB6AJqQRRqISMgACgCuAEhJCACQdgBakEEaiIlQQhqISYCQANAIAIoArABIgEgAigCuAFGDQEgAiABQSBqNgKwASABKAIAIidBgYCAgHhGDQEgASgCHCEoIAEoAhghKSABKAIEISogAkHoAmogDUEBIAEoAgwgASgCECAQIBAQegJAIAIoAugCQQFHDQAgAigC7AIgAigC8AIQ8hQMBgsgAkEwaiACKALsAiIrIAIo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AigC4AEQxR8gAigC2AEgCBCOICACQdgBaiAAKAIAEPASIAJBoAJqIAIoAtwBIgggAigC4AFBACArIA5rIgUgBSArSxsQ3AggAiACQaACajYC6AIgICABKQAUNwAAIAQgBy8AADsAACACQYACaiACQegCahDDECACQZwBaiACKAKEAiIFIAIoAogCEMUfIAIoAoACIAUQjiAgAigCoAIgAigCpAIQjiAgAigC2AEgCBCOICACIBk2AugCICAgASkAFDcAACAEIAcvAAA7AAAgAkHYAWogAkHoAmoQwhAgAkGcAWogAigC3AEiASACKALgARDFHyACKALYASABEI4gDAYLIAIgHDYC6AIgICABKQAUNwAAICBBCGogAUEcai8AADsAACACQdgBaiACQegCahDCECACQZwBaiACKALcASIBIAIoAuABEMUfIAIoAtgBIAEQjiAMAQsLIAJB6AJqIAEQ3wUgAigC6AIiBCACKALsAhCXHiABQRRqIQEgBEGAgICAeEYNASACIBs2AugCICAgASkAADcAACAgQQhqIAFBCGovAAA7AAAgAkHYAWogAkHoAmoQwhAgAkGcAWogAigC3AEiBCACKALgARDFHyACKALYASAEEI4gDAILIAJByAFqEJMVIAJBvAFqEKoVICcgKhCXHiApICgQ7RoMDQsgAiAaNgLoAiAgIAEpAAA3AAAgIEEIaiABQQhqLwAAOwAAIAJB2AFqIAJB6AJqEMIQIAJBnAFqIAIoAtwBIgQgAigC4AEQxR8gAigC2AEgBBCOIAsgAkHYAWogACgCABDwEiACQaACaiACKALcASIEIAIoAuABQQAgKyAOayIHIAcgK0sbENwIIAIgAkGgAmo2AugCICAgASkAADcAACAgQQhqIgcgAUEIaiIILwAAOwAAIAJBgAJqIAJB6AJqEMMQIAJBnAFqIAIoAoQCIgUgAigCiAIQxR8gAigCgAIgBRCOICACKAKgAiACKAKkAhCOICACKALYASAEEI4gIAIgGTYC6AIgICABKQAANwAAIAcgCC8AADsAACACQdgBaiACQegCahDCECACQZwBaiACKALcASIBIAIoAuABEMUfIAIoAtgBIAEQjiALQQEhAQsgAigCoAEhBAJAAkAgAigCpAEiB0EQSQ0AIAQgBxDWBSEEDAELIAQgBxCVGSEECyACQaACakGklpsBQQFBACArIARrIgQgBCArSxsgAWoQ3AggAkEUNgLkASACQRQ2AtwBIAJBAjYC7AIgAkH08JoBNgLoAiACQgI3AvQCIAIgAkGgAmo2AuABIAIgAkGcAWo2AtgBIAIgAkHYAWo2AvACIAJB9ABqIAJB6AJqEK0eIQEgAigCoAIgAigCpAIQjiAgAigCnAEgAigCoAEQjiAgAQ0BCyASQRRqITAgEigCCCEEIBIoAgQhASACQQA6AIwDIAJBADYCiAMgAiAkNgKEAyACIAEgBGoiBDYCgAMgAiABNgL8AiACQQA2AvgCIAJCADcC8AIgAiAENgLsAiACIAE2AugCAkADQCACQegCahCgDCIEQYCAxABGDQEgIxCgDCIBQYCAxABGDQEgIiABEOUGIQECQCAEQQlGDQAgAkH0AGogBBDxEgwBCwNAIAFFDQEgAkH0AGpBIBDxEiABQX9qIQEMAAsLCyACQfQAakEKEPESIAJBADYC4AEgAkKAgICAwAA3AtgBIAJBADYC8AIgAkKAgICAwAA3AugCAkACQAJAAkAgLA0AQQQhMUEAITJBACEzQQQhNEEAITVBACEsDAELQQQhBgNAAkAgEkEMaiITKAIAIgQgEkEQaiIOKAIAIgUgEUEMaigCACIHIBFBEGooAgAiDBDOEUUNAEEAIQggAkHoAmohAQJAIAcgBEkNACAMIAdqIAUgBGpLDQBBASEIIAJB2AFqIQELAkAgASgCCCIEIAEoAgBHDQAgAUHIiYABQbiJgAEgCBsQ5xUgAigC3AEhBgsgBiACKALsAiAIGyAEQQJ0aiARNgIAIAEgBEEBajYCCAsgEUEgaiERICxBf2oiLA0ACyACKALQASEsIAIoAswBIREgAigC8AIhNSACKALsAiE0IAIoAugCITMgAigC3AEhMSACKALYASEyIAIoAuABIi5FDQAgACACQfQAaiArIBMoAgAgDigCACARICxBABDABA0CQQAhBCACQQA2AswCIAJCgICAgBA3AsQCIAJBEGogLkEEQQhBsJibARCDFCACQQA2AtgCIAIgAigCFCIHNgLUAiACIAIoAhAiCDYC0AIgLkECdCEFQQAhAQJAIC4gCE0NACACQdACakEAIC5BBEEIEJ8XIAIoAtQCIQcgAigC2AIhAQsgMSAFaiE2IAEgLmohNyAHIAFBA3RqIQUgMSEMA0AgDCgCACIBKAIQIQggBCAAKAK4ASASIAEoAgwiBkEBEIMJIgcgBCAHSxshBwJAAkAgASgCEA0AIAdBAWohCAwBCyAHQQFqIhQgACgCuAEgEiAIIAZqQQAQgwkiCCAUIAhLGyEICyACQYwBaiAXKAIAEPASIAJBkANqIAIoApABIi8gAigClAEgCCAHakEBdiIGIAdrENwIIBUhFAJAIAEoAhBFDQAgAkHYAWogARDfBSACKALYASIUIAIoAtwBEJceIBcgFiAUQYCAgIB4RhshFAsgAiAUKAIANgKcAyACQYACaiAXKAIAEPASIAJBnAFqIAIoAoQCIhQgAigCiAIgCCAGQX9zahDcCCAhQQAgByAEayI4IDggB0sbQciTgAEQ1xMgAkEUNgKEAyACQQc2AvwCIAJBFDYC9AIgAkEJNgLsAiACQZjvmwE2AugCIAJBBDYC7AEgAkHYk4ABNgLoASACQQQ2AtwBIAJBqJOAATYC2AEgAkEFNgLkASACIAJBnAFqNgKAAyACIAJBnANqNgL4AiACIAJBkANqNgLwAiACIAJB6AJqNgLgASACQdwCaiACQdgBahDzFCACKAKcASACKAKgARCOICACKAKAAiAUEI4gIAIoApADIAIoApQDEI4gIAIoAowBIC8QjiAgH0EIaiABQRxqLwEAOwEAIB8gASkCFDcCACACIAJB3AJqNgKgAiACQegCaiACQaACahDDECACQcQCaiACKALsAiIBIAIoAvACEMUfIAIoAugCIAEQjiAgAigC3AIgAigC4AIQjiAgBUEEaiAGNgIAIAUgDDYCACAIIAQgCCAESxshBCAMQQRqIQwgBUEIaiEFIC5Bf2oiLg0ACyACKALUAiEFIAIoAtACIQwgAkECNgLsAiACQdCfhQE2AugCIAJCATcC9AIgAkEUNgLcASACIAJB2AFqNgLwAiACIAJBxAJqNgLYASACQfQAaiACQegCahCtHg0BA0ACQAJAIDEgNkYNACACQegCaiA2QXxqIjYoAgAQ5gkgAigC6AJBgICAgHhGDQIgAigC7AIhAQJAAkAgAigC8AIiBEEBRw0AIAAgAkH0AGogEygCACAOKAIAICsgESAsIAAgBSA3IDYoAgAgASgCBCABKAIIQQAQqgMNAQwDCyAEQQxsIQRBASEHA0AgBEUNAyAEQXRqIQQgACACQfQAaiATKAIAIA4oAgAgKyARICwgACAFIDcgNigCACABKAIEIAEoAgggBxCqAyEIIAFBDGohAUECIQcgCEUNAAsLIAJB6AJqEKkVDAQLIAwgBUEEQQgQrxEgAigCxAIgAigCyAIQjiAgAigC0AEhLCACKALMASERDAILIAJB6AJqEKkVDAALCyA0IDVBAnRqIQggNCEBA0AgASAIRg0EIAJB6AJqIAEoAgAiBBDfBSACKALoAiIHIAIoAuwCEJceIAFBBGohASAHQYCAgIB4Rg0AIARBEGooAgAgBEEMaigCACIGaiIMIBJBDGoiBSgCACIHSQ0AIAwgEkEQaiIUKAIAIAdqSw0AIAYgB08NACACQaACaiAEEOYJAkACQCACKAKgAkGAgICAeEYNACACKAKkAiEHAkACQAJAAkAgAigCqAIiDA4CAAIBC0GckYABQdoAQfiRgAEQ8hIACyAAIAJB9ABqICsgBSgCACAUKAIAIBEgLEEBEMAEDQMgACACQfQAaiAHKAIEIAcoAgggBEEUaiITQQEQ8gcNAyAHQRRqIQQgDEEMbEF0aiEHA0AgB0UNAiAAIAJB9ABqICsgBSgCACAUKAIAIBEgLEECEMAEDQQgB0F0aiEHIARBfGohDCAEKAIAIQYgBEEMaiEEIAAgAkH0AGogDCgCACAGIBNBAhDyB0UNAAwECwsgACACQfQAaiArIAUoAgAgFCgCACARICxBABDABA0CIAAgAkH0AGogBygCBCAHKAIIIARBFGpBABDyBw0CCyACQaACahCpFQwCCyAAIAJB9ABqICsgBSgCACAUKAIAIBEgLEEAEMAEDQMgJSAEKQIUNwIAICYgBEEcai8BADsBACACQQI2AuwCIAJB0J+FATYC6AIgAkIBNwL0AiACQRY2AoQCIAIgADYC2AEgAiACQYACajYC8AIgAiACQdgBajYCgAIgAkH0AGogAkHoAmoQrR5FDQEMAwsLIAJBoAJqEKkVDAELIAwgBUEEQQgQrxEgAigCxAIgAigCyAIQjiALIDMgNBCTICAyIDEQkyALIAJByAFqEJMVIAJBvAFqEKoVDAwLIDMgNBCTICAyIDEQkyAgMCESDAALCyATICsgEyArSxshKyAEQRRqIQQMAAsLIAhBAWohCAsgAkHoAmogAigChAIgAigCiAIQ8xIgCCAUayEEAkAgBiACKAKgAkcNACACQaACahDlFSACKAKkAiETCyATIAZBFGxqIgEgAikC6AI3AgAgAkHoAmpBCGooAgAhByABIAQ2AhAgASAUNgIMIAFBCGogBzYCACACIAZBAWoiBjYCqAIgAkEANgKIAiACKALYASEBIAUhBCAIIRQMAAsLCyACQawBahDPESALIAkQvBogCiALEJogDAILIAIoApgDIQggAigClAMhBQJAAkACQCACKAKIASIrRQ0AAkAgAigChAEiHyArQQV0aiIMQWBqIi5FDQAgDEF4aiIsKAIAIAxBfGoiFygCACgCGBEEACAsKAIAIBcoAgAoAiARBABqIAUgCCgCGBEEAEkNAiAMQXBqKAIAISwgDEFsaiIMKAIAIRcgAkE4aiAuEJgcIAJB6AJqIAIoAjggAigCPBDkHCACKALwAiEtIAIoAuwCIS4gAigC6AIhLyACQdgBaiANQQEgDCgCACIMIBQgBmoiOCAsIBdqIiwgOCAsSxsgDGsiLCAQIBAQegJAIAIoAtgBIhdFDQAgLyAuEJceIAIoAuABIQwCQCAXDQAgAigC3AEgDBDtGgwECyACLQDcASAMEPIUDAMLIAIgK0F/aiIGNgKIASACKALgASEUIAIoAtwBIRECQCAfIAZBBXRqIgYoAgAiEkGBgICAeEYNACAGKAIYISsgBigCHCEXIBIgBigCBBCXHiArIBcQ7RoLIAIgFDYChAMgAiARNgKAAyACQQA6APwCIAIgLDYC+AIgAiAMNgL0AiACIC02AvACIAIgLjYC7AIgAiAvNgLoAiACQYABaiACQegCakHsj4ABEIgRIAUgCBDtGiAHIBMQlx4MAwtB3I+AARCbIAALIAIgCDYChAMgAiAFNgKAAyACIBI6APwCIAIgFDYC+AIgAiAGNgL0AiACIBE2AvACIAIgEzYC7AIgAiAHNgLoAiACQYABaiACQegCakGMkIABEIgRDAELIAIgCDYChAMgAiAFNgKAAyACIBI6APwCIAIgFDYC+AIgAiAGNgL0AiACIBE2AvACIAIgEzYC7AIgAiAHNgLoAiACQYABaiACQegCakH8j4ABEIgRCyABQRhqIQEgBEEYaiEEDAALCyACKQJ4ITkgAigCdCEFDAILICcgKhCXHiApICgQ7RogAkGsAWoQzxEgCyAJELwaIAogCxCaIAsgAigCdCACKAJ4EI4gQYCAgIB4IQULIABBwAFqIQQLIAMoAjghCCACQQhqIAMoAjwiAUEEQShBsJibARCDFCACQQA2AuABIAIgAigCDDYC3AEgAiACKAIIIgc2AtgBAkACQCABIAdNDQAgAkHYAWpBACABQQRBKBCfFwwBCyABDQAgAkHIAGpBCGogAkHYAWpBCGooAgA2AgAgAiACKQLYATcDSAJAAkAgAygCAEECRw0AQQAhAQwBCyADKAIMIQcgAygCCCEBCwJAAkACQCADQSRqKAIARQ0AIAJB6AJqIAQoAgBBCGogA0EgaigCACgCABCZAwJAAkAgAigC6AJFDQAgAkGgAmpBCGogAkHoAmpBCGopAgA3AwAgAiACKQLoAjcDoAIMAQsgAkEANgKgAgsgA0EkaigCAEUNASACQegCaiAEKAIAQQhqIANBIGooAgAoAgQQmQMCQCACKALoAkUNACACQdgBakEIaiACQegCakEIaikCADcDACACIAIpAugCNwPYAQwDCyACQQA2AtgBDAILIAJBADYCoAILIAJBADYC2AELAkACQAJAAkAgAigCoAIiCA0AQYCAgIB4IQwMAQsgAkEANgKIAiACQoCAgIAQNwKAAiACQeiIgAE2AuwCIAJCoICAgA43AvACIAIgAkGAAmo2AugCIAhB6ABqIAJB6AJqEOcdDQEgAikChAIhOiACKAKAAiEMCwJAAkAgAUUNACACQegCaiABIAcQtRMMAQsgAkGAgICAeDYC6AILIAMoAhhFDQEgAkHoAGogAygCFCIBQQRqKAIAIAFBCGooAgAQ8xIgAkHYAGpBCGoiBiACQegCakEIaigCADYCACACIAIpAugCNwNYIAIoAuQBIRQgAigC3AEhEyACKALYASERIAIoAqwCIRIgAigCpAIhKyAAKAK8ASIEQQhqENUSIQACQCAEKAIUIgcgBCgCDEcNACAEQQxqEOYVCyAEKAIQIAdB3ABsaiIBIBQ2AhwgASARQQBHIhQ2AhggASATNgIUIAEgFDYCECABIBI2AgwgASAIQQBHIgg2AgggASArNgIEIAEgCDYCACABIAIpAmg3AiAgASACKQNINwIsIAEgAikDWDcCOCABQShqIAJB6ABqQQhqKAIANgIAIAFBNGogAkHIAGpBCGooAgA2AgAgAUHAAGogBigCADYC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JCIdQQJGDQAgBCgCICErIAQoAhwhIyAEKAIYIRkgBCkDECJBQgODQgBSDQAgQaciASABKAIAIgFBAWo2AgAgAUF/TA0XC0EALQDA8Z0BGkHIABCFASIYRQ0WIAQoAigiGygCBCEDIAJB8ABqIBsoAggiIkEIQcAAEMwNIAIoAnQhJiACKAJwQQFGDREgAigCeCElAkAgJkUNACADICJBBnRqISRBACEKICYhIQNAIAohHCADIiogJEYNASAqKAI0IQMgKigCLCEpICooAighJyACQfAAaiAqKAI4IiBBBEEMEMwNIAIoAnQhGiACKAJwQQFGDRQgAigCeCEfAkAgGkUNACAgQQxsIQUgHyEKIBohBgNAIAVFDQFBAC0AwPGdARogAygCCCEHIAMoAgQhCEHAABCFASIBRQ0aIAJB8ABqIAMoAgAQRCABQThqIAJB8ABqQThqKQMANwMAIAFBMGogAkHwAGpBMGopAwA3AwAgAUEoaiACQfAAakEoaikDADcDACABQSBqIAJB8ABqQSBqKQMANwMAIAFBGGogAkHwAGpBGGopAwA3AwAgAUEQaiACQfAAakEQaikDADcDACABQQhqIAJB8ABqQQhqKQMANwMAIAEgAikDcDcDACAKQQhqIAc2AgAgCkEEaiAINgIAIAogATYCACAKQQxqIQogBUF0aiEFIANBDGohAyAGQX9qIgYNAAsLICpBwABqIQMgHEEBaiEKIAJB8ABqICoQpwIgJSAcQQZ0aiIBICA2AjggASAfNgI0IAEgGjYCMCABICk2AiwgASAnNgIoIAFBIGogAkHwAGpBIGopAwA3AwAgAUEYaiACQfAAakEYaikDADcDACABQRBqIAJB8ABqQRBqKQMANwMAIAFBCGogAkHwAGpBCGopAwA3AwAgASACKQNwNwMAICFBf2oiIQ0ACwsgAkHAAGogG0EMahCRCEGAgICAeCEGIBsoAjghGiAbKAI0IRwgGygCMCEgAkAgGygCGEGAgICAeEYNACAbKAIcIQMgGygCLCEqIBsoAighCCAbKAIkIQcgAkHwAGogGygCICIfQQhBMBDMDSACKAJ0IQYgAigCcEEBRg0UIAIoAnghIQJAIAZFDQAgH0EwbCEKICEhASAGIQUDQCAKRQ0BIAJB8ABqIAMQgAEgAUEoaiACQfAAakEoaikDADcDACAB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IAEpAgwhPyAGIAEoAgQgASgCCBCTByAGID83AgwMBAtBAC0AwPGdARpByAAQhQEiCkUNESAEKAIEIgEoAjghAyABKAI0IQUgASgCMCEGIAEtAEEhByABLQBAIQggASgCJCELIAEoAiAhGQJAIAEpAygiQEIDg0IAUg0AIECnIiMgIygCACIjQQFqNgIAICNBf0wNEgsgAS0APCEjAkACQCABKQMAIj9QDQAgASgCDCEqIAEoAgghKyABKAIcISggASgCGCEeAkAgP0IDg0IAUg0AID+nIh0gHSgCACIdQQFqNgIAIB1Bf0wNFAsgASkDECJBUA0BIEFCA4NCAFINASBBpyIBIAEoAgAiAUEBajYCACABQX9MDRMMAQsgAkHwAGogAUEIahDTCCACKAKEASEoIAIoAoABIR4gAikDeCFBIAIoAnQhKiACKAJwISsLIAogBzoAQSAKIAg6AEAgCiAjOgA8IAogAzYCOCAKIAU2AjQgCiAGNgIwIAogQDcDKCAKIAs2AiQgCiAZNgIgIAogKDYCHCAKIB42AhggCiBBNwMQIAogKjYCDCAKICs2AgggCiA/NwMADAMLQQAtAMDxnQEaIAQoAgwhBSAEKAIIIQtBwAAQhQEiCkUNECAKIAQoAgQQRAwCCyAEKAIgISsgBCgCHCEjIAQoAhghGSAEKAIMIQUgBCgCCCELIAQpAxAiP6chBgJAID9CA4NCAFINACAGIAYoAgAiAUEBajYCACABQX9MDRALID9CIIinIRogBC0AJCEdCwsgEiACLwFAOwAAIBJBAmogAkHAAGpBAmotAAA6AAAgAiAdOgAsIAIgKzYCKCACICM2AiQgAiAZNgIgIAIgBTYCFCACIAs2AhAgAiAKNgIMIAIgFzYCCCACIB42AjwgAiAoNgI4IAIgPzcDMCACIBqtQiCGIAathDcDGAsgBEE4aiEEIBAgCUE4bGoiASACKQMINwMAIAFBMGogAkEIakEwaikDADcDACABQShqIAJBCGpBKGopAwA3AwAgAUEgaiACQQhqQSBqKQMANwMAIAFBGGogAkEIakEYaikDADcDACABQRBqIAJBCGpBEGopAwA3AwAgAUEIaiATKQMANwMAIAlBAWohCSAWQX9qIhYNAAsLIAAgDDYCECAAIA02AgwgACAONgIIIAAgEDYCBCAAIA82AgBBAiED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CUECdGooAgAiDSAVSQ0ACwsgDSAVQZjxgwEQsxEACyAJIBVBmPKDARCzEQALIBIgFUGo8YMBEKMgAAsgEyAJQbjxgwEQjyAACyAJIBVBqPKDARCzEQALIAQgBkGMnYABELMRAAsgDUECaiICIBVJDQAgAiAVQYjygwEQsxEACyAWIAJBAnRqKAIAIQkLAkACQCAJIAEoArQCSw0AAkACQAJAAkACQAJAAkACQAJAIAlFDQAgCSABKAK4AksNAyAVIAlJDQUgFSAJRg0GIBUgCWshByAWIAlBAnRqIgktAAAiAkH/AUYNASACIAJBAnZqIAJBA3FBAEdqQQJqIQIMAgsgAEEANgIADBwLIAEoAihBAmohAgsgAiAHTw0EAkACQCAJIAJBAnRqKAIAIgtBf0wNAAJAIAJBAWoiAiAHTw0AIAkgAkECdGooAgAhAgwCCyACIAdBzOGDARCzEQALIAtB/////wdxIQILIAIgASgCFCIJTw0FIARBAWoiCSABKAIQIAJBAnRqKAIAIgFPDQEgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIANBCGogASgCHCABKAIgIgIoAghBf2pBeHFqQQhqIA4gBiAEIAUgAigCEBETAAJAIAMoAghFDQAgAygCDCICIARNDQYMBwsgAEEANgIADBkLIAAgAjYCDCAAIAk2AgggAEEBNgIAIAAgCSABazYCBAwYCyAJIBVByPKDARCjIAALQQBBAEHs4YMBELMRAAsgAiAHQbzhgwEQsxEACyACIAlBuPKDARCzEQALIARBAWohAgsgAiEEIAIgBUkNAAsLIABBADYCAAwQCyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgAiAJQbjygwEQsxEACyACIAdBvOGDARCzEQALQQBBAEHs4YMBELMRAAsgCSACQcjygwEQoyAACyAAIAMpAgw3AgQgAEEMaiADQQhqQQxqKAIANgIACyAAIAI2AgAMCQsgCSABKAK4AksNACABKAIIIgsgCUkNBSALIAlGDQQgCyAJayEMAkACQCABKAIEIAlBAnRqIg0tAAAiC0H/AUYNACALIAtBAnZqIAtBA3FBAEdqQQJqIQsMAQsgASgCKEECaiELCyALIAxPDQMCQAJAIA0gC0ECdGooAgAiFUF/TA0AAkAgC0EBaiILIAxPDQAgDSALQQJ0aigCACEQDAILIAsgDEHM4YMBELMRAAsgFUH/////B3EhEAsgECABKAIUIgtPDQIgBCABKAIQIBBBAnRqKAIAIgtJDQEgBCALayERQQEhCAsgA0EIaiAHIAEoAiAiCygCCEF/akF4cWpBCGogAigCCCIPIAIoAgwiDiAEIAUgCygCEBETAAJAAkACQAJAIAMoAggiAg4DAgEAAgsgAUEsaiEKIAMoAgwhAgwCCyAAIAMpAgw3AgQgAEEMaiADQQhqQQxqKAIANgIACyAAIAI2AgAMCAsCQAJAAkACQANAAkACQAJAAkAgAiISIAVPDQACQAJAAkACQCASIA5PDQACQCAJIAEoAggiFUkNACAJIQ0MEwsgCiAPIBJqLQAAai0AACICQQJqIQYgASgCBCEWIAkhDQJAAkACQAJAA0ACQAJAAkACQCAWIA1BAnRqKAIAIglB/wFxQYJ+ag4CAgABCyAGIA1qIgkgFU8NBCAWIAlBAnRqKAIAIglBAUYNAgwLCyAVIA1BAmoiE0kNBCAJQQJ2QT9xIAlBA3FBAEdqIhQgFSATayIJSw0FIBRBAnQhByAWIBNBAnRqIQtBfyEMAkACQAJAA0AgB0UNBSAMQQFqIQwgAiALKAIAIglB/wFxRg0BIAIgCUEIdkH/AXFGDQIgAiAJQRB2Qf8BcUYNAyALQQRqIQsgB0F8aiEHIAIgCUEYdkcNAAsgFCATaiAMQQJ0akEDaiICIBVJDQwgAiAVQcjxgwEQsxEACyAMQQJ0IBQgE2pqIgIgFUkNCyACIBVB+PGDARCzEQALIBQgE2ogDEECdGpBAWoiAiAVSQ0KIAIgFUHo8YMBELMRAAsgFCATaiAMQQJ0akECaiICIBVJDQkgAiAVQdjxgwEQsxEACyACIAlBCHZB/wFxRg0HCyANQQFqIgkgFU8NBCAWIAlBAnRqKAIAIg0gFU8NFwwACwsgCSAVQZjygwEQsxEACyATIBVBqPGDARCjIAALIBQgCUG48YMBEI8gAAsgCSAVQajygwEQsxEACyASIA5BjJ2AARCzEQALIA1BAmoiAiAVSQ0AIAIgFUGI8oMBELMRAAsgFiACQQJ0aigCACEJCyAJIAEoArQCSw0DIAlFDQACQCAJIAEoArgCSw0AIBUgCUkNBiAVIAlGDQcgFSAJayEHAkACQCAWIAlBAnRqIgstAAAiAkH/AUYNACACIAJBAnZqIAJBA3FBAEdqQQJqIQIMAQsgASgCKEECaiECCyACIAdPDQgCQAJAIAsgAkECdGooAgAiDEF/TA0AAkAgAkEBaiICIAdPDQAgCyACQQJ0aigCACEQDAILIAIgB0HM4YMBELMRAAsgDEH/////B3EhEAsgECABKAIUIgJPDQkgEkEBaiIEIAEoAhAgEEECdGooAgAiAk8NAyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgA0EIaiABKAIcIAEoAiAiAigCCEF/akF4cWpBCGogDyAOIBIgBSACKAIQERMAIAMoAghFDQEgAygCDCICIBJNDQMMBAsgACAQNgIMIAAgBDYCCCAAIBE2AgQgACAINgIADA8LIABBADYCAAwOCyAEIAJrIRFBASEIIAQhAgwBCyASQQFqIQIMAAsLIAkgFUHI8oMBEKMgAAtBAEEAQezhgwEQsxEACyACIAdBvOGDARCzEQALIBAgAkG48oMBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIBAgC0G48oMBELMRAAsgCyAMQbzhgwEQsxEAC0EAQQBB7OGDARCzEQALIAkgC0HI8oMBEKMgAAsgDSAVQZjxgwEQsxEACyAAIA42AgwgACAQNgIIIAAgDzYCBCAAIAo2AgALIANBIGokAAu1PwMPfwN+AnwjAEGwA2siAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCAEFwag4UAAgBCAIICAgICAQHBggICAgICAUICyADQcQAakECaiACQRNqLQAAOgAAIAMgAi8AETsBRCACKAIMIQQgAigCCCEFIAIoAgQhBgJAAkACQCACLQAQIgdBA0sNACAHQQJHDQELQQAtAMDxnQEaQcAAEIUBIghFDRQgCCAHOgAQIAggBDYCDCAIIAU2AgggCCAGNgIEIAhBEDYCACAIIAMvAUQ7ABEgACAINgIEIABBAjYCACAIQRNqIANBxABqQQJqLQAAOgAADAELIANB8ABqIAEgBhBXAkAgAygCcEEBRw0AIAMrA3ghFQJAAkACQAJAIAcOBAEDAAIAC0Gyo5sBQShB5PCaARDdFwALIBWaIRUMAQsgFRCIFSEVCyAAQQE2AgAgACAVOQMIIANB8ABqEM0TDAELIANB6AJqIANB8ABqEK0EQQAtAMDxnQEaQcAAEIUBIghFDRMgCCADKQPoAjcDACAIQThqIANB6AJqQThqKQMANwMAIAhBMGogA0HoAmpBMGopAwA3AwAgCEEoaiADQegCakEoaikDADcDACAIQSBqIANB6AJqQSBqKQMANwMAIAhBGGogA0HoAmpBGGopAwA3AwAgCEEQaiADQegCakEQaikDADcDACAIQQhqIANB6AJqQQhqKQMANwMAQQAtAMDxnQEaQcAAEIUBIgFFDRMgASAHOgAQIAEgBDYCDCABIAU2AgggASAINgIEIAFBEDYCACAAIAE2AgQgAEECNgIACyACKAIAQXBqIghBE0sNF0EBIAh0QZWoIHENGSAIQQtGDRYMFwsgAigCECEJIAIoAgwhCiACLQAUIQYgAigCCCEEIAIoAgQhBRC1HSEIIANB6AJqIAUQRCAIQThqIANB6AJqQThqIgspAwA3AwAgCEEwaiADQegCakEwaiIMKQMANwMAIAhBKGogA0HoAmpBKGoiDSkDADcDACAIQSBqIANB6AJqQSBqIg4pAwA3AwAgCEEYaiADQegCakEYaiIPKQMANwMAIAhBEGogA0HoAmpBEGoiECkDADcDACAIQQhqIANB6AJqQQhqIhEpAwA3AwAgCCADKQPoAjcDABC1HSEHIANB6AJqIAQQRCAHQThqIAspAwA3AwAgB0EwaiAMKQMANwMAIAdBKGogDSkDADcDACAHQSBqIA4pAwA3AwAgB0EYaiAPKQMANwMAIAdBEGogECkDADcDACAHQQhqIBEpAwA3AwAgByADKQPoAjcDAAJAIAZBeGpBC0kNACAGQRdGDQBBAC0AwPGdARpBwAAQhQEiAUUNEiABIAY6ABQgASAJNgIQIAEgCjYCDCABIAc2AgggASAINgIEIAFBEjYCACAAIAE2AgQgAEECNgIAIAUgBBDzHAwVCyADQYABaiABIAUQVyADQYABakEQaiILIAEgBBBXIAMgBjoAoAEgAygCkAEhBUEBIQwCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAygCgAEiBA4CAAEoCyAFDgIBAiYLIAUOAgIDJQsgBkELRg0SQQAhBQwkCwJAIAZBC0YNAEEBIQUMJAsgAyADKQOIATcDgAIgA0HYAmogAysDmAEQgw0gA0ECNgLsAiADQfTwmgE2AugCIANCAjcC9AIgA0G9Aq1CIIYgA0HYAmqthDcDuAIgA0G4Aq1CIIYgA0GAAmqthDcDsAIgAyADQbACajYC8AIgA0HoAWogA0HoAmoQgg1BACEBIANB6AFqEOocIRIgAEEANgIAIAAgEjcDCCADKALYAiADKALcAhCOICADKQOAAhDCGQwTCyAGQQtGDQFBACEFDCILIAMrA5gBIRUgAysDiAEhFiAGQXhqDhACAwQFBgcICQoLDAEBAQENAQsgAysDiAEhFSADIAMpA5gBNwOAAiADQdgCaiAVEIMNIANBAjYC7AIgA0H08JoBNgLoAiADQgI3AvQCIANBuAKtQiCGIANBgAJqrYQ3A7gCIANBvQKtQiCGIANB2AJqrYQ3A7ACIAMgA0GwAmo2AvACIANB6AFqIANB6AJqEIINIANB6AFqEOocIRIgAEEANgIAIAAgEjcDCCADKALYAiADKALcAhCOICADKQOAAhDCGQwPC0Gyo5sBQShBhPGaARDdFwALIBYgFRC1DiEVDAsLIBYgFRC2DiEVDAoLIBYgFRC3DiEVDAkLIBYgFaAhFQwICyAWIBWhIRUMBwsgFiAVoiEVDAYLIBYgFaMhFQwFCyAWIBUQ2AYhFQwECyAWIBUQ8Q4hFQwDCyAWIBUQ8g4hFQwCCyAWIBUQ8w4hFQwBCyAWIBUQ+RkhFQsgAEEBNgIAIAAgFTkDCEEAIQEMAgsgAyADKQOIATcDgAIgAyADKQOYATcD2AIgA0ECNgLsAiADQfTwmgE2AugCIANCAjcC9AIgA0G4Aq1CIIYiEiADQdgCaq2ENwO4AiADIBIgA0GAAmqthDcDsAIgAyADQbACajYC8AIgA0HoAWogA0HoAmoQgg0gA0HoAWoQ6hwhEiAAQQA2AgAgACASNwMIIAMpA9gCEMIZIAMpA4ACEMIZC0EBIQELIAgQ2QEgCEHAAEEIEJ4SIAcQ2QEgB0HAAEEIEJ4SIAQNAQwOCyADQcgAakEgaiACQShqKQMANwMAIANByABqQRhqIAJBIGopAwA3AwAgA0HIAGpBEGogAkEYaikDADcDACADQcgAakEIaiACQRBqKQMANwMAIAMgAikDCCISNwNIAkAgEqciBkEBRw0AIANB6AJqQSRqIAJBCGoiCEEgaikCADcCACADQegCakEcaiAIQRhqKQIANwIAIANB6AJqQRRqIAhBEGopAgA3AgAgA0HoAmpBDGogCEEIaikCADcCAEEALQDA8Z0BGiADIAgpAgA3AuwCQcAAEIUBIghFDREgCEEUNgIAIAggAykC6AI3AgQgCEEMaiADQfACaikCADcCACAIQRRqIANB+AJqKQIANwIAIAhBHGogA0GAA2opAgA3AgAgCEEkaiADQYgDaikCADcCACAIQSxqIANBkANqKAIANgIAIABBAjYCACAAIAg2AgQMDQsgASgCBCEQIAMoAmQhCyADKAJgIQwgAygCaCEEELUdIQEgA0HoAmogBBBEIAFBOGogA0HoAmpBOGoiBSkDADcDACABQTBqIANB6AJqQTBqIg4pAwA3AwAgAUEoaiADQegCakEoaikDADcDACABQSBqIANB6AJqQSBqKQMANwMAIAFBGGogA0HoAmpBGGopAwA3AwAgAUEQaiADQegCakEQaikDADcDACABQQhqIANB6AJqQQhqKQMANwMAIAEgAykD6AI3AwACQAJAIAYNACADKAJUIQcgAygCUCENIAMoAlwhCCADKAJYIQ4CQCADKQNQIhJCA4NCAFINACASpyIFIAUoAgAiBUEBajYCACAFQX9MDRMLIAMgBzYC6AIgA0GAAWohBQwBCyADKAJUIQggAygCUCENIAMoAkwhDxC1HSEHIANB6AJqIA8QRCAHQThqIAUpAwA3AwAgB0EwaiAOKQMANwMAIAdBKGogA0HoAmpBKGopAwA3AwAgB0EgaiADQegCakEgaikDADcDACAHQRhqIANB6AJqQRhqKQMANwMAIAdBEGogA0HoAmpBEGopAwA3AwAgB0EIaiADQegCakEIaikDADcDACAHIAMpA+gCNwMAIANB6AJqIQULIAUgCDYCAEEALQDA8Z0BGiADKAKAASEFIAMoAugCIQ9BwAAQhQEiCEUNECAIIAE2AiggCCALNgIkIAggDDYCICAIIAU2AhwgCCAONgIYIAggDzYCFCAIIA02AhAgCCAHNgIMIAggBjYCCCAIQRQ2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IQggBy0AGCILQQJGDQAgA0GwAmpBEGogB0EQaikDACISNwMAIANBsAJqQQhqIAdBCGopAwAiEzcDACADIAcpAwAiFDcDsAIgAyAHKAAZNgKoAiADIAdBHGooAAA2AKsCIANB6AJqQRBqIBI3AwAgA0HoAmpBCGogEzcDACADQegCakEcaiADKACrAjYAACADIBQ3A+gCIAMgCzoAgAMgAyADKAKoAjYAgQMgA0EANgLwASADQoCAgIAQNwLoASADQcDlmgE2AoQBIANCoICAgA43AogBIAMgA0HoAWo2AoABAkACQAJAIANB6AJqIANBgAFqEKEaDQAgAygC6AEhCyADKQLsASESIANB6AJqEK0QIAtBgICAgHhGDQMgAyASNwLYASADIAs2AtQBIANBADYCkAMgA0IANwKIAyADIAUgDkECdGo2AoQDIAMgDTYCgAMgAyAFNgL8AiADIAU2AvgCIAMgBDYC9AIgAyAMNgLwAiADIAg2AuwCIAMgBzYC6AIgA0HoAmpBEGohECAGQQFGDQIgA0GAAWpBGWoiBUEDaiELA0AgAyAIQSBqNgLsAgJAAkACQAJAAkACQAJAIAgtABgiB0ECRg0AIAUgCCgAGTYAACADQYABakEQaiIMIAhBEGoiDSkDADcDACADQYABakEIaiIOIAhBCGoiDykDADcDACALIAhBHGooAAA2AAAgAyAHOgCYASADIAgpAwA3A4ABAkAgAygC/AIiBiADKAKEA0cNACAIQSBqIQggA0GAAWoQrRAMCgsgA0HoAWpBCGogDykDACISNwMAIANB6AFqQRBqIA0pAwAiEzcDACADIAZBBGo2AvwCIAMgCCkDACIUNwPoASADIAhBGWoiDSgAADYC4AEgAyANQQNqKAAANgDjASAGKAIAIQYgDCATNwMAIA4gEjcDACAFIAMoAuABNgAAIAsgAygA4wE2AAAgAyAUNwOAASADIAc6AJgBIANBgAJqIAEgBhBXIAMoAoACDgICAwELIAhBIGohCAwICyAAIAMpA6gBNwMAIABBCGogA0GoAWpBCGopAwA3AwAgA0GAAmoQzRMgA0GAAWoQrRACQCAEIAhBIGoiCEYNACAEIAhrQQV2IQADQCAIEK0QIAhBIGohCCAAQX9qIgANAAsLIAMoAvACIAMoAugCEL8gIBAQphQgAygC1AEgAygC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IANBgAFqEK0EQQAtAMDxnQEaQcAAEIUBIgFFDQEgASADKQPoAjcDACABQThqIANB6AJqQThqKQMANwMAIAFBMGogA0HoAmpBMGopAwA3AwAgAUEoaiADQegCakEoaikDADcDACABQSBqIANB6AJqQSBqKQMANwMAIAFBGGogA0HoAmpBGGopAwA3AwAgAUEQaiADQegCakEQaikDADcDACABQQhqIANB6AJqQQhqKQMANwMAIAgQ2QEgCEHAAEEIEJ4SIARBAUshDCABIQgLAkACQCAFQQFNDQAgByEEDAELIANB6AJqIAsQrQRBAC0AwPGdARpBwAAQhQEiBEUNASAEIAMpA+gCNwMAIARBOGogA0HoAmpBOGopAwA3AwAgBEEwaiADQegCakEwaikDADcDACAEQShqIANB6AJqQShqKQMANwMAIARBIGogA0HoAmpBIGopAwA3AwAgBEEYaiADQegCakEYaikDADcDACAEQRBqIANB6AJqQRBqKQMANwMAIARBCGogA0HoAmpBCGopAwA3AwAgBxDZASAHQcAAQQgQnhILQQAtAMDxnQEaQcAAEIUBIgFFDQAgASAGOgAUIAEgCTYCECABIAo2AgwgASAENgIIIAEgCDYCBCABQRI2AgAgACABNgIEIABBAjYCACAFQQFNDQEgCxDNEwwBCwALIANBgAFqIQsgDEUNAQsgCxDNEwsgAigCAEFwaiIIQRNLDQFBASAIdEGVqCBxDQMgCEELRw0BCyACKAIIDgQCAQECAQsgAhDZAQwBCyACQQhqEOkICyACQcAAQQgQnhILIANBsANqJAALhUACKn8HfiMAQeAFayICJAAgASABKAJ4IgNB//97cTYCeCABKALAASEEIAEQhw4gAkHYAGpBCEEEQQxBkMKbARDYFCACQQA2AmggAiACKQNYNwJgQYoFrUIghiIsQYijmwGthCEtICxBgdqYAa2EIS4gAkGwBGpBBGohBSACQbAEakEEciEGIAJBsARqQQxqIQcgAkGQA2pBBGohCCACQZACakEQaiEJIAJBkAVqQSBqIQogAkGwBGpBCGohCyACQZADakEMaiEMIAJBkANqQQhqIQ0gAkGQBWpBDGohDiACQZADakHAAGohDyACQbAEakHIAGohECACQbAEakEgaiERIAJBwAVqIRIgAkGQBWpBBHIhEyACQdACakEQaiEUIAJBmAFqQQhqIRUgAkH4AGpBCGohFiABLQDIASEXQQAhGAJAAkACQANAAkAgF0H/AXFBA0cNACABEIcOIAEoArwBIRcCQCAYQQFxRQ0AIAJBsARqIAFB5AFqIAQgL6cgL0IgiKcQjgYLIABBDjYCACAAIAIpAmA3AgQgACAXNgIUIAAgBDYCECAAQQxqIAJB6ABqKAIANgIADAMLIAIgASgCwAEiGTYCdAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAMgBIhdBD0YNAAJAIBdBHEcNACABEIcOIAEoArwBIRogAkHIAGogAUHAABCOFSACIAIoAkwiFzYCcCACKAJIQQFxDQ8gAiAZNgJsDA0LIAJBsARqIAEQgAwCQCACLQCwBEEBRw0AIAIoArQEIRcMDwsgAi0AsQQhGyABLQDIASEcIAEoArwBIR0gASgCuAEhHiACQbAEaiABEIsDIAIoArQEIRcgAigCsAQiGUEFRg0OIBUgCykDADcDACAVQRBqIAtBEGopAwA3AwAgFUEIaiALQQhqKQMANwMAIAIgFzYCnAEgAiAZNgKYASABLQDIASEXAkACQCABLwGAAUGAwABxIh9FDQAgF0EXSw0DQQEgF3RBkYmCBHENBCAXQQlHDQMMAQsgF0EJRw0DCyABEIcOIAJBCGogAUHAABCOFSACKAIMIRcCQCACKAIIQQFxRQ0AIAIgFzYCcCAZDQQgAikDoAEQxh0MDwsgBSACKQOYATcCACAFQRhqIAJBmAFqQRhqKQMANwIAIAVBEGogAkGYAWpBEGopAwA3AgAgBUEIaiAVKQMANwIAQQhB8AAQ6x8iGUUNECAZQQY2AgACQEEkRQ0AIBlBBGogAkGwBGpBJPwKAAALIBkgFzYCKCACIBk2AmxBACEXDAwLIAEQhw4gAkGwBGogARCLAyACKAK0BCEXAkAgAigCsAQiGUEFRg0AIBYgCykDADcDACAWQRBqIAtBEGopAwA3AwAgFkEIaiALQQhqKQMANwMAIAEgASgCeCIcQf//729xQYCAgBByNgJ4IAJBADYCuAQgAkKAgICAwAA3ArAEIAJB0ABqIAEgAkGwBGogAigCdEEAQQEQxAkgAigCVCEfIAIoAlAhGyABIBw2AnggAiAXNgJ8IAIgGTYCeAJAIBtBAXFFDQAgAiAfNgJwIAJB+ABqEJEXIB8hFwwPCyAFIAIpA3g3AgAgBUEYaiACQfgAakEYaikDADcCACAFQRBqIAJB+ABqQRBqKQMANwIAIAVBCGogFikDADcCAEEIQfAAEOsfIhlFDRAgGUEKNgIAAkBBJEUNACAZQQRqIAJBsARqQST8CgAACyAZIB82AihBACEXIAJBADYCcCACIBk2AmwMDAsgAiAXNgJwDA0LAkAgF0G1f2oiIEEfSw0AQQEgIHRBgYCCkHhxDQELIBdBQGpBAkkNACAXQRJGDQAgF0G0f2pB/wFxQdUASQ0AAkAgGQ0AIBdBA0YNAQsgASgCxAEhFyABKALAASEZIAJB9oCAgHg2ArAEIAEgGSAXIAJBsARqEK8aIAEoArwBIRkgAigCdCEfQQhBwAAQ6x8iF0UNDiAXIBk2AgggFyAfNgIEIBdBMTYCACAFIAIpA5gBNwIAIAVBCGogFSkDADcCACAFQRBqIAJBmAFqQRBqKQMANwIAIAVBGGogAkGYAWpBGGopAwA3AgBBCEHwABDrHyIZRQ0OIBlBBjYCAAJAQSRFDQAgGUEEaiACQbAEakEk/AoAAAsgGSAXNgIoQQAhFyACQQA2AnAgAiAZNgJsDAoLAkACQCAXRQ0AIBdBEkYgH0EAR3FFDQELIAEgASgCeCIXQf//729xQYCAgBByNgJ4IAJBADYCuAQgAkKAgICAwAA3ArAEIAJBEGogASACQbAEaiACKAJ0QQBBABDECSACKAIUIR8gAigCECEZIAEgFzYCeCAZQQFxDQMgBSACKQOYATcCACAFQRhqIAJBmAFqQRhqKQMANwIAIAVBEGogAkGYAWpBEGopAwA3AgAgBUEIaiAVKQMANwIAQQhB8AAQ6x8iF0UNDiAXQQo2AgACQEEkRQ0AIBdBBGogAkGwBGpBJPwKAAALIBcgHzYCKEEAIRkgAkEANgJwIAJB7ABqIRwMCAsgGUUNASAGIBcQ3hsgAkEKNgLEBCACQazDmwE2AsAEIAJBsICAgHg2ArAEIAEoAsABIAEoAsQBIAJBsARqEIUVIRcCQCABLQDIAUGiAUcNACABEMcRIRkgARCHDiABIBkQ5RELIAIgFzYCcAsgAkGYAWoQkRcMCgsgAikDoAEhMAJAIBdBCkcNACABEIcOIAEoArwBIRcgASgCuAEhGSACQZOBgIB4NgKwBCABIBkgFyACQbAEahCvGiABLQDIASEXCwJAAkACQAJAIBdB/wFxIhlBfWoOBQIBAQECAAsgGUEXRg0CCwJAAkACQCAcQYh/aiIZQRtLDQBBASAZdEGBgYDAAHENAQsgAS0AgQFBIHFFDQEgBiAXEN4bIAJB0gA2AsQEIAJBsMKbATYCwAQgAkGwgICAeDYCsAQgASgCwAEgASgCxAEgAkGwBGoQhRUhFyABLQDIAUGiAUcNByABEMcRIRkgARCHDiABIBkQ5REMBwsgG0EBcQ0EDAULIAYgFxDeGyACQSo2AsQEIAJBgsObATYCwAQgAkGwgICAeDYCsAQgASgCwAEgASgCxAEgAkGwBGoQhRUhFyABLQDIAUGiAUcNBSABEMcRIRkgARCHDiABIBkQ5REMBQsgAigCrAEhHyACKAKoASEcQQhB8AAQ6x8iGUUNDEEAIRcgGUEAOgAcIBlBADYCGCAZIB82AhQgGSAcNgIQIBkgMDcCCCAZQQU2AgAgAkEANgJwIAIgGTYCbAwICyABEIcOIAJBwABqIAFBwAAQjhUgAigCRCEXIAIoAkBBAXENAyABKAK8ASEfIAIoAqwBIRwgAigCqAEhGyACKAJ0IR1BCEHwABDrHyIZRQ0LIBkgFzYCKEEAIRcgGUEAOgAkIBlBADYCICAZIBw2AhwgGSAbNgIYIBkgMDcCECAZIB82AgwgGSAdNgIIIBlBBzYCACACQQA2AnAgAiAZNgJsDAcLIAJBmAFqEJEXQQEhGSACQfAAaiEcIB8hFwwECyACQf6AgIB4NgKwBCABIB4gHSACQbAEahCvGiABLQDIASEXCwJAIBxB+ABHDQAgF0H/AXFBD0cNACABEIcOCyACQbAEaiABEIsDIAIoArQEISEgAigCsAQiG0EFRw0BICEhFwsgAiAXNgJwIDAQxh0MBQsgAikDyAQhMSACKALABCEdIAIoArgEIR4gAigCxAQhICACKAK8BCEiIAEgASgCeCIjQf//729xQYCAgBByIiQ2AnggAiAgICIgG0ECSSIZGzYCvAEgAiAdIB4gGRs2ArgBAkACQAJAAkACQAJAAkACQAJAIBxB+ABGDQACQAJAIBxB/wBGDQAgHEGTAUYNAUGyo5sBQShBuMObARDdFwALIAIoAnQhF0EAISUgAkEAOgDXBSACQQA6ANYFIAIgFzYC0AUgASAkQf/8b3EiGTYCeCACQQA2ArgEIAJCgICAgMAANwKwBCACIAJB0AVqNgLIBCACIAJB1gVqNgLEBCACIAJBuAFqNgLABCACIAJB1wVqNgK8BCABLQDIASEXAkAgAS0AgQFBIHFFDQAgASAZQYAgcjYCeAJAIBdBEkYNACAXQT5GDQAgASAZNgJ4DAELIAJBKGogAUEAQQEQvwIgAigCKCEXIAEgGTYCeCACKAIsISUCQCAXQQFxRQ0AICUhFwwKCyABLQDIASEXCwJAAkACQAJAIBdB/wFxDQAgARCHDiABQYACQQAgAi0A1wUbIAEoAngiJkH//N9+cUGAgYABQYCAgAEgAi0A1gUbcnI2AnggAkGQA2ogARDCAiACKAKUAyEfAkAgAigCkAMiJ0GAgICAeEcNACABICY2AnggHyEXDAwLIB8gAigCmAMiKEEGdCIcaiEpQQAhFwJAA0AgHCAXRg0BIB8gF2ohGSAXQcAAaiEXIBkQ1xVFDQALIAIoArwBIRcgAigCuAEhGSACQZGAgIB4NgKQAyABIBkgFyACQZADahCvGgsgASAmNgJ4IAIgKDYCiAQgAiAfNgKEBCACICc2AoAEIAEtAMgBIhdBAUcNASABEIcOQQAhFwJAIAEtAIEBQSBxRQ0AIAEtAMgBQf8BcUEJRw0AIAJBIGogAUEJEJgEIAIoAiQhFyACKAIgQQFxDQMLIAIgFzYCkAUgAkGQA2ogASACLQDWBSACLQDXBSAfICgQ3RgQvwogAigClAMhHCACKAKQAyImQYGAgIB4Rw0DIAJBkAVqEKkfIBwhFwwCCyABKALEASEZIAEoAsABIR8gAkGgBGogFxDeGyACQQE2ApQDIAJBmO+bATYCkAMgAkIBNwKcAyACIC43A4AEIAIgAkGABGo2ApgDIAJBkAVqIAJBkANqEI0VIA5BCGogAkGgBGpBCGooAgA2AgAgDiACKQKgBDcCACAfIBkgAkGQBWoQhRUhFyABLQDIAUGiAUcNCiABEMcRIRkgARCHDiABIBkQ5REMCgsgASgCxAEhGSABKALAASEfIAJB2ANqIBcQ3hsgAkEBNgKUAyACQZjvmwE2ApADIAJCATcCnAMgAiAtNwPYBSACIAJB2AVqNgKYAyACQZAFaiACQZADahCNFSAOQQhqIAJB2ANqQQhqKAIANgIAIA4gAikC2AM3AgAgHyAZIAJBkAVqEIUVIRcgAS0AyAFBogFHDQAgARDHESEZIAEQhw4gASAZEOURCyACQYAEahDLHQwICyACQcABakEIaiInIA1BCGopAgA3AwAgAiANKQIANwPAASAmQYCAgIB4Rw0FIAEvAYABQYDAAHFFDQUDQCAfIhkgKUYNBiAZIBkgKUdBBnRqIR8gGSgCAEEERw0AIBkoAhAhKCAZKAIMIRkgAkGqgYCAeDYCkAMgASAZICggAkGQA2oQrxoMAAsLIAIoAnQhF0EAISkgAkEAOgDXBSACQQA6ANYFIAIgFzYC0AUgASAkQf/8b3EiGTYCeCACQQA2ArgEIAJCgICAgMAANwKwBCACIAJB0AVqNgLIBCACIAJB1gVqNgLEBCACIAJBuAFqNgLABCACIAJB1wVqNgK8BCABLQDIASEXAkAgAS0AgQFBIHFFDQAgASAZQYAgcjYCeAJAIBdBEkYNACAXQT5GDQAgASAZNgJ4DAELIAJBOGogAUEAQQEQvwIgAigCOCEXIAEgGTYCeCACKAI8ISkCQCAXQQFxRQ0AICkhFwwFCyABLQDIASEXCwJAAkACQAJAIBdB/wFxDQAgARCHDiABQYACQQAgAi0A1wUbIAEoAngiJUH//N9+cUGAgYABQYCAgAEgAi0A1gUbcnI2AnggAkGQA2ogARDCAiACKAKUAyEcAkAgAigCkAMiJ0GAgICAeEcNACABICU2AnggHCEXDAcLAkACQCACKAKYAyImRQ0AQQAhGSAcIRcgJiEfA0AgGSAXENcVaiEZIBdBwABqIRcgH0F/aiIfDQALAkAgGUEBRg0AIAIoArwBIRcgAigCuAEhGSACQZKAgIB4NgKQAyABIBkgFyACQZADahCvGgsgHCgCAEECRw0BIBwoAiwhFyAcKAIoIRkgAkGZgICAeDYCkAMgASAZIBcgAkGQA2oQrxoMAQsgAigCvAEhFyACKAK4ASEZIAJBkoCAgHg2ApADIAEgGSAXIAJBkANqEK8aCwJAIAEtAIEBQSBxRQ0AIAEtAIIBQf8BcQ0AIAIoArwBIRcgAigCuAEhGSACQYGBgIB4NgKQAyABIBkgFyACQZADahCvGgsgASAlNgJ4IAIgJjYCiAQgAiAcNgKEBCACICc2AoAEIAEtAMgBIhdBAUcNASABEIcOQQAhFwJAIAEtAIEBQSBxRQ0AIAEtAMgBQf8BcUEJRw0AIAJBMGogAUEJEJgEIAIoAjQhFyACKAIwQQFxDQMLIAIgFzYCkAUgAkGQA2ogASACLQDWBSACLQDXBSAcICYQ3RgQvwogAigClAMhJSACKAKQAyInQYGAgIB4Rw0DIAJBkAVqEKkfICUhFwwCCyABKALEASEZIAEoAsABIR8gAkGgBGogFxDeGyACQQE2ApQDIAJBmO+bATYCkAMgAkIBNwKcAyACIC43A4AEIAIgAkGABGo2ApgDIAJBkAVqIAJBkANqEI0VIA5BCGogAkGgBGpBCGooAgA2AgAgDiACKQKgBDcCACAfIBkgAkGQBWoQhRUhFyABLQDIAUGiAUcNBSABEMcRIRkgARCHDiABIBkQ5REMBQsgASgCxAEhGSABKALAASEfIAJB2ANqIBcQ3hsgAkEBNgKUAyACQZjvmwE2ApADIAJCATcCnAMgAiAtNwPYBSACIAJB2AVqNgKYAyACQZAFaiACQZADahCNFSAOQQhqIAJB2ANqQQhqKAIANgIAIA4gAikC2AM3AgAgHyAZIAJBkAVqEIUVIRcgAS0AyAFBogFHDQAgARDHESEZIAEQhw4gASAZEOURCyACQYAEahDLHQwDCyACQcABakEIaiIoIA1BCGopAgA3AwAgAiANKQIANwPAASAnQYCAgIB4Rw0BIAEvAYABQYDAAHFFDQEgHCAmQQZ0aiEfA0AgHCIZIB9GDQIgGSAZIB9HQQZ0aiEcIBkoAgBBBEcNACAZKAIQISYgGSgCDCEZIAJBqoGAgHg2ApADIAEgGSAmIAJBkANqEK8aDAALCyACQQA2ArgEIAJCgICAgMAANwKwBCACQRhqIAEgAkGwBGogAigCdEEBIBdB/wFxQQ9GEMQJIAIgMTcDiAIgAiAgNgKEAiACIB02AoACIAIgIjYC/AEgAiAeNgL4ASACICE2AvQBIAIgGzYC8AEgAigCHCEXAkAgAigCGEEBcQ0AIAUgAikD8AE3AgAgBUEYaiACQfABakEYaikDADcCACAFQRBqIAJB8AFqQRBqKQMANwIAIAVBCGogAkHwAWpBCGopAwA3AgBBCEHwABDrHyIZRQ0PIBlBCjYCAAJAQSRFDQAgGUEEaiACQbAEakEk/AoAAAsgGSAXNgIoQQAhFyACQQA2AnAgAiAZNgJsDAULIAIgFzYCcCACQfABahCRF0EBIRkMBwsgDCACKQKwBDcCACAMQQhqIAsoAgA2AgAgDSACQYAEakEIaiIcKAIANgIAIAIgAikCgAQ3A5ADIAEoArwBIR8gAi0A1wUhJiACLQDWBSEqIAIoAtAFIStBBEHIABDrHyIZRQ0NIBkgAikDkAM3AgAgGSAlNgIcIBkgJzYCGCAZIAIpA8ABNwIgIBkgKjoARSAZICY6AEQgGSAXNgJAIBkgKTYCPCAZQQA2AjggGSAfNgI0IBkgKzYCMCAZQRBqIAJBkANqQRBqKQMANwIAIBlBCGoiKSANKQMANwIAIBlBKGogKCkDADcCACABICQ2AnggGSgCACEfIBkoAgQhFwJAQcAARSIkDQAgAkHQAmogKUHAAPwKAAALIBlByABBBBCeEiACIDE3A9gBIAIgIDYC1AEgAiAdNgLQASACICI2AswBIAIgHjYCyAEgAiAhNgLEASACIBs2AsABIAIgFzYClAMgAiAfNgKQAwJAICQNACANIAJB0AJqQcAA/AoAAAsgAigCmAMhGSACQQc2AtgDAkAgGUECSQ0AAkAgJA0AIAJBkAVqIBdBwAD8CgAACwJAIBlBBnRBQGoiG0UNACAXIBdBwABqIBv8CgAACyACQdgDahDyHgJAQShFDQAgAkHYA2ogAkGQBWpBKPwKAAALIBIQzB0gGUF/aiEZCyACIB82AqgEIAIgFzYCoAQgAiAXNgKkBCACIBcgGUEGdGo2AqwEAkACQCAZRQ0AIAIgF0HAAGo2AqQEIBcoAgAiGUEHRg0AAkBBPEUNACATIBdBBGpBPPwKAAALIBwgF0EUaikCADcDACACQYAEakEQaiAXQRxqKQIANwMAIAJBgARqQRhqIBdBJGooAgA2AgAgAiAZNgKQBSACIBcpAgw3A4AEIAIoApQFIR8gAigCmAUhGyASEMwdDAELIAIoArwBIRcgAigCuAEhGSACQZKAgIB4NgKQBSABIBkgFyACQZAFahCvGkEFIRlBACEbQQAhHwtBCEEoEOsfIhdFDQ0gFyAbNgIIIBcgHzYCBCAXIBk2AgAgFyACKQOABDcCDCAXQRRqIBwpAwA3AgAgF0EcaiACQYAEakEQaikDADcCACAXQSRqIAJBgARqQRhqKAIANgIAIAJBoARqEMMRIAEoArwBIR8gAigCdCEcAkBBKEUNACARIAJB2ANqQSj8CgAACyACQbAEakEYaiACQcABakEYaikDADcDACACQbAEakEQaiACQcABakEQaikDADcDACALICgpAwA3AwAgECAUKQIANwIAIBBBCGogFEEIaikCADcCACAQQRBqIBRBEGopAgA3AgAgAiACKQPAATcDsARBCEHwABDrHyIZRQ0NAkBB4ABFDQAgGSACQbAEakHgAPwKAAALIBkgFzYCaCAZIB82AmQgGSAcNgJgIAwQzB0gAigCzAMQ7h8gDxCpH0EAIRcgAkEANgJwIAIgGTYCbAwDCyApEO4fCyACQbAEahDMHSABICQ2AnggAiABNgLgASACIDE3A9gBIAIgIDYC1AEgAiAdNgLQASACICI2AswBIAIgHjYCyAEgAiAhNgLEASACIBs2AsABIAIgAkH0AGo2AugBIAIgAkG4AWo2AuQBIAIgFzYCcCACQcABahCRF0EBIRkMBAsgDCACKQKwBDcCACAMQQhqIAsoAgA2AgAgDSACQYAEakEIaigCADYCACACIAIpAoAENwOQAyABKAK8ASEfIAItANcFISkgAi0A1gUhKCACKALQBSEqQQRByAAQ6x8iGUUNCiAZIAIpA5ADNwIAIBkgHDYCHCAZICY2AhggGSACKQPAATcCICAZICg6AEUgGSApOgBEIBkgFzYCQCAZICU2AjwgGUEANgI4IBkgHzYCNCAZICo2AjAgGUEQaiACQZADakEQaikDADcCACAZQQhqIh8gDSkDADcCACAZQShqICcpAwA3AgAgASAkNgJ4IBkpAgAhMgJAQcAARSIXDQAgAkGQAmogH0HAAPwKAAALIBlByABBBBCeEiACIDE3A9gBIAIgIDYC1AEgAiAdNgLQASACICI2AswBIAIgHjYCyAEgAiAhNgLEASACIBs2AsABIAIgMjcCsAQCQCAXDQAgCyACQZACakHAAPwKAAALIAIoAvAEIRcCQCABLQCBAUEgcUUNACABLQCCAUH/AXENACACKAK8ASEZIAIoArgBIR8gAkGBgYCAeDYCkAMgASAfIBkgAkGQA2oQrxoLIAJBkAVqQQhqICcpAwA3AwAgAkGQBWpBEGogAkHAAWpBEGopAwA3AwAgAkGQBWpBGGogAkHAAWpBGGopAwA3AwAgCiAJKQIANwIAIApBCGogCUEIaikCADcCACAKQRBqIAlBEGopAgA3AgAgAiACKQPAATcDkAUgASgCvAEhHyACKAJ0IRwCQEE4RQ0AIAggAkGQBWpBOPwKAAALQQhB8AAQ6x8iGUUNCiAZQQg2AgACQEE8RQ0AIBlBBGogAkGQA2pBPPwKAAALIBkgFzYCSCAZIB82AkQgGSAcNgJAIAJBsARqEMsdIAcQzB0gAigC7AQQ7h9BACEXIAJBADYCcCACIBk2AmwLQQAhGQwCCyAlEO4fCyACQbAEahDMHSABICQ2AnggAiABNgLgASACIDE3A9gBIAIgIDYC1AEgAiAdNgLQASACICI2AswBIAIgHjYCyAEgAiAhNgLEASACIBs2AsABIAIgAkH0AGo2AugBIAIgAkG4AWo2AuQBIAIgFzYCcCACQcABahCRF0EBIRkLIAEgIzYCeCAwEMYdIAIoApgBRQ0BIAJBmAFqEJEXDAELIBwgFzYCACACKAJwIRcLIBkNAgsgAigCbCEcAkAgAigCaCIZIAIoAmBHDQAgAkHgAGoQsxYLIAIoAmQgGUEMbGoiHyAaNgIIIB8gHDYCBCAfIBc2AgAgAiAZQQFqNgJoAkACQCABLQDIASIXQX1qDgUCAQEBAAELIAEQhw5BASAYIAEtAMgBIhdBA0YiGRshGCABKQO4ASAvIBkbIS8MAQsLIAEoAsQBIRkgASgCwAEhHyACQZAFaiAXEN4bIAJBATYCtAQgAkGY75sBNgKwBCACQgE3ArwEIAIgLEG8p5sBrYQ3A9ACIAIgAkHQAmo2ArgEIAJBkANqIAJBsARqEI0VIAJBpANqIAJBmAVqKAIANgIAIAIgAikCkAU3ApwDIB8gGSACQZADahCFFSEXIAEtAMgBQaIBRw0AIAEQxxEhGSABEIcOIAEgGRDlEQsgAEEyNgIAIAAgFzYCBCACQeAAahCuHwsgASADNgJ4IAJB4AVqJAAPCwALzj0BIX8jAEGQAWsiBiQAIAIgBTYCaCACQQA2AlQgAiAFNgI4IAJBADYCJCACQQA2AggCQAJAAkACQAJAAkACQAJAIAMoAhAiByADKAIUIghLDQACQCADKAIMIglBf0YNACADKAIIIQogAS0AFCELIAZByABqIAEoAgAiDCADKAIAIAMoAgQQpxIgBi0ASCINQQJGDQcgC0ECRiEOQQAhDwJAIA1BAXENAEEAQcyFhAEgAUEEaiABLQAQQQNGGyIBIAEtAAxBAkYbIQ8LIA4gC3IhECAGKAJMIREgBUECdCESIAJB2ABqIRMgAkEoaiEUIAMtABghFSAHIRZBACEXA0ACQAJAIAIoAiQNACAQIBdBAEdxDQggFiAHSyANcQ0IIA9FDQAgBkH0AGogDygCACAPKAIEIgMoAghBf2pBeHFqQQhqIAogCSAWIAggAygCEBETACAGKAJ0QQFHDQggBigCeCEYDAELIBYhGAsCQCAYIAdHIA1xDQAgECAXQQBHcQ0AIAIoAmAiAyACKAJoIhlrIQsCQAJAIAMgGUkNACACKAJcIQ4CQCACKAIIIgMgAigCAEcNACACQbjDhAEQ6hULIAIoAgQgA0EMbGoiASARNgIEIAFBADYCACACIANBAWoiAzYCCCADRQ0CIA4gC0ECdGohGiAZQQJ0IRsgGEEBaiEWIAogGGoiHEF/aiEdIAogGEF/aiIeaiEfA0AgAiADQX9qIgM2AgggAigCBCADQQxsaiIBKAIAIgtBAkYNAyABKAIEIQMCQAJAAkACQCALQQFxDQAgBiADNgJUIAMgAigCICIBSQ0BDAYLIAMgGU8NAiAaIANBAnRqIAEoAgg2AgAMAQsDQCACKAIUIQsCQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAhwgA0ECdCIgaigCACIOIAIoAiQiAU8NACAOIAtPDQEgAigCECAOQQJ0aigCACADRg0MCyAGIAE2AlggASALTw0BIAIoAhAgAUECdGogAzYCACADIAIoAiAiC08NByACKAIcICBqIAE2AgAgAiACKAIkQQFqNgIkIAMgDCgC0AIiAU8NAgJAAkACQAJAAkACQCAMKALMAiADQRRsaiIBKAIADgkAAAABBAIDAAAACyAGQcAAaiAUIAMQlBIgBigCRCIDIBlHDQggG0UNECAGKAJAIBogG/wKAAAMEAsgASgCBCEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIIaA4SFAABAgMEBQYHCAkKCwwNDg8QFAsgGCAJRg0dDB8LIBhFDRwCQCAeIAlPDQAgHy0AACAMLQDgAkYNHQwfCyAeIAlBhNKEARCzEQALIBggCUYNGwJAIBggCU8NACAcLQAAIAwtAOACRg0cDB4LIBggCUGU0oQBELMRAAsgGEUNGgJAAkAgHiAJTw0AIB8tAABBdmoOBBweHgEeCyAeIAlBpNKEARCzEQALIBggCU8NGiAcLQAAQQpHDRoMHAsgGCAJRg0ZAkACQCAYIAlPDQAgHC0AAEF2ag4EAR0dGx0LIBggCUG00oQBELMRAAsgGEUNGSAdLQAAQQ1HDRkMGwsCQAJAAkAgGEUNACAeIAlPDQEgHy0AAEHU54QBai0AACEBIBggCUkNAiABQQFxDRsMHQsgGCAJTw0cIBwtAABB1OeEAWotAAANGgwcCyAeIAlBxNKEARCzEQALIAFB/wFxIBwtAABB1OeEAWotAABHDRgMGgsCQAJAAkAgGEUNACAeIAlPDQEgHy0AAEHU54QBai0AACEBIBggCUkNAiABQQFxRQ0aDBwLIBggCU8NGSAcLQAAQdTnhAFqLQAARQ0ZDBsLIB4gCUHE0oQBELMRAAsgAUH/AXEgHC0AAEHU54QBai0AAEYNFwwZCyAKIAkgGBC6BEH/AXENFgwYCyAKIAkgGBCgA0H/AXENFQwXCwJAIBgNACAJRQ0XIAotAABB1OeEAWotAAANFQwXCyAeIAlPDQ8gGCAJTw0WIB8tAABB1OeEAWotAAANFiAcLQAAQdTnhAFqLQAAQQFxDRQMFgsgGEUNFSAeIAlPDQ8gHy0AAEHU54QBai0AACELQQEhASAYIAlPDRIgHC0AAEHU54QBai0AAEEBcyEBDBILIAogCSAYELcEQf8BcQ0SDBQLIAogCSAYEK8EQf8BcQ0RDBMLIBhFDRACQCAeIAlPDQAgHy0AAEHU54QBai0AAEUNEQwTCyAeIAlBhNOEARCzEQALIBggCU8NDyAcLQAAQdTnhAFqLQAARQ0PDBELIAogCSAYEOAEQf8BcQ0ODBALIAogCSAYEOkGQf8BcQ0NDA8LIAEoAgghCyABKAIEIQMCQCACKAIIIgEgAigCAEcNACACQdjDhAEQ6hULIAIoAgQgAUEMbGoiDiALNgIEIA5BADYCACACIAFBAWo2AggMDAsgASgCBCEDIAEoAhAiASAZTw0LIBogAUECdGoiISgCACEgAkAgAigCCCILIAIoAgBHDQAgAkHow4QBEOoVCyACKAIEIAtBDGxqIg4gIDYCCCAOIAE2AgQgDkEBNgIAIAIgC0EBajYCCCAWRQ0IICEgFjYCAAwLCyABKAIIIgtFDQwgASgCBCIBKAIAIQMgAiABQQRqIAEgC0ECdGoQqg8MCgsgGEUNCQwLCyAOIAtBtOeEARCzEQALIAZBAzYCYCAGQezmhAE2AlwgBkIDNwJoIAZBvgE2AogBIAZBKjYCgAEgBkEqNgJ4IAYgCzYCjAEgBiAGQfQAajYCZCAGIAZB1ABqNgKEASAGIAZBjAFqNgJ8IAYgBkHYAGo2AnQgBkHcAGpBhOeEARCFGwALIAMgAUHwu4QBELMRAAsgAyAZQYjEhAEQryAACyAeIAlB5NKEARCzEQALIB4gCUH00oQBELMRAAtB+MOEARCbIAALIAMgC0GU54QBELMRAAsgC0EBcUUNAiABQQFxRQ0CCyAGIAM2AlQgAyACKAIgIgFPDQUMAAsLIAIoAggiA0UNBAwBCwsgAyAZQcjDhAEQsxEACyALIANB3MSEARCpIAALIAMgAUGk54QBELMRAAsCQAJAAkAgAigCJCIDIAIoAhQiAUsNACAYQQJqISEgCiAYaiEfIAogGEEBaiIWaiEdIAIoAhAiGSADQQJ0aiEaQQAhIgJAAkACQAJAA0AgGSAaRg0BA0ACQAJAAkACQAJAIBkoAgAiASAMKALQAiIDTw0AIBlBBGohGQJAIAwoAswCIAFBFGxqIgMoAgAOCQAEAwUFBQUFAgALIBggCU8NBCADLQAIIB8tAAAiC0sNBCALIAMtAAlB/wFxSw0EIAZBEGogFCABEJQSIAMoAgQhASAGKAIUIR4gBigCECEcAkAgAigCCCIDIAIoAgBHDQAgAkG4w4QBEOoVCyACKAIEIANBDGxqIgsgATYCBCALQQA2AgAgAiADQQFqIgM2AgggA0UNBCAeQQJ0ISMDQCACIANBf2oiAzYCCCACKAIEIANBDGxqIgEoAgAiC0ECRg0FIAEoAgQhAwJAAkACQAJAIAtBAXENACAGIAM2AlQgAyACKAJQIgFJDQEMFwsgAyAeTw0CIBwgA0ECdGogASgCCDYCAAwBCwNAIAIoAkQhCwJAAkACQAJAAkACQAJAAkACQCACKAJMIANBAnQiIGooAgAiDiACKAJUIgFPDQAgDiALTw0BIAIoAkAgDkECdGooAgAgA0YNCgsgBiABNgJYIAEgC08NASACKAJAIAFBAnRqIAM2AgAgAyACKAJQIgtPDQUgAigCTCAgaiABNgIAIAIgAigCVEEBajYCVCADIAwoAtACIgFPDQICQAJAAkACQAJAAkAgDCgCzAIgA0EUbGoiASgCAA4JAAAAAQQCAwAAAAsgBkEIaiATIAMQlBIgBigCDCIDIB5HDQggI0UNDiAGKAIIIBwgI/wKAAAMDgsgASgCBCEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCCGgOEh0TAAECAwQFBgcICQoLDA0ODx0LIB8tAAAgDC0A4AJGDRoMHAsgFiAJRg0ZAkAgFiAJTw0AIB0tAAAgDC0A4AJGDRoMHAsgFiAJQZTShAEQsxEACwJAIB8tAABBdmoOBBkbGwAbCyAWIAlPDRggHS0AAEEKRw0YDBoLIBYgCUYNFwJAAkAgFiAJTw0AIB0tAABBdmoOBAEbGxkbCyAWIAlBtNKEARCzEQALIB8tAABBDUcNFwwZCyAfLQAAQdTnhAFqLQAAIQECQCAWIAlJDQAgAUEBcQ0XDBkLIAFB/wFxIB0tAABB1OeEAWotAABHDRYMGAsgHy0AAEHU54QBai0AACEBAkAgFiAJSQ0AIAFBAXFFDRYMGAsgHS0AAEHU54QBai0AACABQf8BcUYNFQwXCyAKIAkgFhC6BEH/AXENFAwWCyAKIAkgFhCgA0H/AXENEwwVCyAWIAlPDRQgHy0AAEHU54QBai0AAA0UIB0tAABB1OeEAWotAABBAXENEgwUCyAfLQAAQdTnhAFqLQAAIQtBASEBIBYgCU8NECAdLQAAQdTnhAFqLQAAQQFzIQEMEAsgCiAJIBYQtwRB/wFxDRAMEgsgCiAJIBYQrwRB/wFxDQ8MEQsgHy0AAEHU54QBai0AAEUNDgwQCyAWIAlPDQ0gHS0AAEHU54QBai0AAEUNDQwPCyAKIAkgFhDgBEH/AXENDAwOCyAKIAkgFhDpBkH/AXENCwwNCyABKAIIIQsgASgCBCEDAkAgAigCCCIBIAIoAgBHDQAgAkHYw4QBEOoVCyACKAIEIAFBDGxqIg4gCzYCBCAOQQA2AgAgAiABQQFqNgIIDAoLIAEoAgQhAyABKAIQIgEgHk8NCSAcIAFBAnRqIhsoAgAhIAJAIAIoAggiCyACKAIARw0AIAJB6MOEARDqFQsgAigCBCALQQxsaiIOICA2AgggDiABNgIEIA5BATYCACACIAtBAWo2AgggIUUNBiAbICE2AgAMCQsgASgCCCILRQ0KIAEoAgQiASgCACEDIAIgAUEEaiABIAtBAnRqEKoPDAgLIBYgCUYNBwwJCyAOIAtBtOeEARCzEQALIAZBAzYCYCAGQezmhAE2AlwgBkIDNwJoIAZBvgE2AogBIAZBKjYCgAEgBkEqNgJ4IAYgCzYCjAEgBiAGQfQAajYCZCAGIAZB1ABqNgKEASAGIAZBjAFqNgJ8IAYgBkHYAGo2AnQgBkHcAGpBhOeEARCFGwALIAMgAUHwu4QBELMRAAsgAyAeQYjEhAEQryAAC0H4w4QBEJsgAAsgAyALQZTnhAEQsxEACyALQQFxRQ0CIAFBAXFFDQILIAYgAzYCVCADIAIoAlAiAU8NFgwACwsgAigCCCIDDQEMBgsLIAMgHkHIw4QBELMRAAsgASADQfC7hAEQsxEACyADKAIEISQgBkE4aiAUIAEQlBICQCAFIAYoAjwiA0cNAAJAIBJFDQAgBCAGKAI4IBL8CgAAC0EBISIgEEEBcUUNBQwHCyAFIANBqMOEARCvIAALIBggCU8NAQJAAkAgAygCCCIOIB8tAAAiC00NACADKAIEIAtBAnRqKAIAIgtFDQMgBkEwaiAUIAEQlBIgBigCNCEeIAYoAjAhHAJAIAIoAggiAyACKAIARw0AIAJBuMOEARDqFQsgAigCBCADQQxsaiIBIAs2AgQgAUEANgIAIAIgA0EBaiIDNgIIIANFDQMgHkECdCEjA0AgAiADQX9qIgM2AgggAigCBCADQQxsaiIBKAIAIgtBAkYNBCABKAIEIQMCQAJAAkACQCALQQFxDQAgBiADNgJUIAMgAigCUCIBSQ0BDAYLIAMgHk8NAiAcIANBAnRqIAEoAgg2AgAMAQsDQCACKAJEIQsCQAJAAkACQAJAAkACQAJAAkAgAigCTCADQQJ0IiBqKAIAIg4gAigCVCIBTw0AIA4gC08NASACKAJAIA5BAnRqKAIAIANGDQoLIAYgATYCWCABIAtPDQEgAigCQCABQQJ0aiADNgIAIAMgAigCUCILTw0FIAIoAkwgIGogATYCACACIAIoAlRBAWo2AlQgAyAMKALQAiIBTw0CAkACQAJAAkACQAJAIAwoAswCIANBFGxqIgEoAgAOCQAAAAEEAgMAAAALIAZBKGogEyADEJQSIAYoAiwiAyAeRw0IICNFDQ4gBigCKCAcICP8CgAADA4LIAEoAgQhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAghoDhIdEwABAgMEBQYHCAkKCwwNDg8dCyAfLQAAIAwtAOACRg0aDBwLIBYgCUYNGQJAIBYgCU8NACAdLQAAIAwtAOACRg0aDBwLIBYgCUGU0oQBELMRAAsCQCAfLQAAQXZqDgQZGxsAGwsgFiAJTw0YIB0tAABBCkcNGAwaCyAWIAlGDRcCQAJAIBYgCU8NACAdLQAAQXZqDgQBGxsZGwsgFiAJQbTShAEQsxEACyAfLQAAQQ1HDRcMGQsgHy0AAEHU54QBai0AACEBAkAgFiAJSQ0AIAFBAXENFwwZCyABQf8BcSAdLQAAQdTnhAFqLQAARw0WDBgLIB8tAABB1OeEAWotAAAhAQJAIBYgCUkNACABQQFxRQ0WDBgLIB0tAABB1OeEAWotAAAgAUH/AXFGDRUMFwsgCiAJIBYQugRB/wFxDRQMFgsgCiAJIBYQoANB/wFxDRMMFQsgFiAJTw0UIB8tAABB1OeEAWotAAANFCAdLQAAQdTnhAFqLQAAQQFxDRIMFAsgHy0AAEHU54QBai0AACELQQEhASAWIAlPDRAgHS0AAEHU54QBai0AAEEBcyEBDBALIAogCSAWELcEQf8BcQ0QDBILIAogCSAWEK8EQf8BcQ0PDBELIB8tAABB1OeEAWotAABFDQ4MEAsgFiAJTw0NIB0tAABB1OeEAWotAABFDQ0MDwsgCiAJIBYQ4ARB/wFxDQwMDgsgCiAJIBYQ6QZB/wFxDQsMDQsgASgCCCELIAEoAgQhAwJAIAIoAggiASACKAIARw0AIAJB2MOEARDqFQsgAigCBCABQQxsaiIOIAs2AgQgDkEANgIAIAIgAUEBajYCCAwKCyABKAIEIQMgASgCECIBIB5PDQkgHCABQQJ0aiIbKAIAISACQCACKAIIIgsgAigCAEcNACACQejDhAEQ6hULIAIoAgQgC0EMbGoiDiAgNgIIIA4gATYCBCAOQQE2AgAgAiALQQFqNgIIICFFDQYgGyAhNgIADAkLIAEoAggiC0UNCiABKAIEIgEoAgAhAyACIAFBBGogASALQQJ0ahCqDwwICyAWIAlGDQcMCQsgDiALQbTnhAEQsxEACyAGQQM2AmAgBkHs5oQBNgJcIAZCAzcCaCAGQb4BNgKIASAGQSo2AoABIAZBKjYCeCAGIAs2AowBIAYgBkH0AGo2AmQgBiAGQdQAajYChAEgBiAGQYwBajYCfCAGIAZB2ABqNgJ0IAZB3ABqQYTnhAEQhRsACyADIAFB8LuEARCzEQALIAMgHkGIxIQBEK8gAAtB+MOEARCbIAALIAMgC0GU54QBELMRAAsgC0EBcUUNAiABQQFxRQ0CCyAGIAM2AlQgAyACKAJQIgFPDQUMAAsLIAIoAggiAw0BDAULCyADIB5ByMOEARCzEQALIAsgDkGMwYQBELMRAAsgAyABQaTnhAEQsxEACyAYIAlPDQAgAygCCEEDdCELIAMoAgRBBWohDiAfLQAAIR4DQCAOIQMgC0UNASADQX9qLQAAIB5B/wFxIiBLDQEgC0F4aiELIANBCGohDiAgIAMtAABLDQALIANBe2ooAgAhCyAGQSBqIBQgARCUEiAGKAIkIR4gBigCICEcAkAgAigCCCIDIAIoAgBHDQAgAkG4w4QBEOoVCyACKAIEIANBDGxqIgEgCzYCBCABQQA2AgAgAiADQQFqIgM2AgggA0UNACAeQQJ0ISMDQCACIANBf2oiAzYCCCACKAIEIANBDGxqIgEoAgAiC0ECRg0BIAEoAgQhAwJAAkACQCALQQFxDQAgBiADNgJUIAMgAigCUCIBSQ0BDBELIAMgHk8NCSAcIANBAnRqIAEoAgg2AgAMAQsDQCACKAJEIQsCQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAkwgA0ECdCIgaigCACIOIAIoAlQiAU8NACAOIAtPDQEgAigCQCAOQQJ0aigCACADRg0MCyAGIAE2AlggASALTw0BIAIoAkAgAUECdGogAzYCACADIAIoAlAiC08NByACKAJMICBqIAE2AgAgAiACKAJUQQFqNgJUIAMgDCgC0AIiAU8NAgJAAkACQAJAAkACQCAMKALMAiADQRRsaiIBKAIADgkAAAABBAIDAAAACyAGQRhqIBMgAxCUEiAGKAIcIgMgHkcNCCAjRQ0QIAYoAhggHCAj/AoAAAwQCyABKAIEIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAghoDhIUAAECAwQFBgcICQoLDA0ODxAUCyAWIAlGDR0MHwsgFkUNHCAfLQAAIAwtAOACRg0cDB4LIBYgCUYNGwJAIBYgCU8NACAdLQAAIAwtAOACRg0cDB4LIBYgCUGU0oQBELMRAAsgFkUNGgJAIB8tAABBdmoOBBsdHQAdCyAWIAlPDRogHS0AAEEKRw0aDBwLIBYgCUYNGQJAAkAgFiAJTw0AIB0tAABBdmoOBAEdHRsdCyAWIAlBtNKEARCzEQALIBZFDRkgHy0AAEENRw0ZDBsLIBZFDRMgHy0AAEHU54QBai0AACEBAkAgFiAJSQ0AIAFBAXENGQwbCyABQf8BcSAdLQAAQdTnhAFqLQAARw0YDBoLIBZFDRMgHy0AAEHU54QBai0AACEBAkAgFiAJSQ0AIAFBAXFFDRgMGgsgAUH/AXEgHS0AAEHU54QBai0AAEYNFwwZCyAKIAkgFhC6BEH/AXENFgwYCyAKIAkgFhCgA0H/AXENFQwXCwJAIBYNACAKLQAAQdTnhAFqLQAADRUMFwsgFiAJTw0WIB8tAABB1OeEAWotAAANFiAdLQAAQdTnhAFqLQAAQQFxDRQMFgsgFkUNFSAfLQAAQdTnhAFqLQAAIQtBASEBIBYgCU8NEiAdLQAAQdTnhAFqLQAAQQFzIQEMEgsgCiAJIBYQtwRB/wFxDRIMFAsgCiAJIBYQrwRB/wFxDREMEwsgFkUNECAfLQAAQdTnhAFqLQAARQ0QDBILIBYgCU8NDyAdLQAAQdTnhAFqLQAARQ0PDBELIAogCSAWEOAEQf8BcQ0ODBALIAogCSAWEOkGQf8BcQ0NDA8LIAEoAgghCyABKAIEIQMCQCACKAIIIgEgAigCAEcNACACQdjDhAEQ6hULIAIoAgQgAUEMbGoiDiALNgIEIA5BADYCACACIAFBAWo2AggMDAsgASgCBCEDIAEoAhAiASAeTw0LIBwgAUECdGoiGygCACEgAkAgAigCCCILIAIoAgBHDQAgAkHow4QBEOoVCyACKAIEIAtBDGxqIg4gIDYCCCAOIAE2AgQgDkEBNgIAIAIgC0EBajYCCCAhRQ0IIBsgITYCAAwLCyABKAIIIgtFDQwgASgCBCIBKAIAIQMgAiABQQRqIAEgC0ECdGoQqg8MCgsgFkUNCQwLCyAOIAtBtOeEARCzEQALIAZBAzYCYCAGQezmhAE2AlwgBkIDNwJoIAZBvgE2AogBIAZBKjYCgAEgBkEqNgJ4IAYgCzYCjAEgBiAGQfQAajYCZCAGIAZB1ABqNgKEASAGIAZBjAFqNgJ8IAYgBkHYAGo2AnQgBkHcAGpBhOeEARCFGwALIAMgAUHwu4QBELMRAAsgAyAeQYjEhAEQryAACyAdLQAAQdTnhAFqLQAADQQMBgsgHS0AAEHU54QBai0AAEUNAwwFC0H4w4QBEJsgAAsgAyALQZTnhAEQsxEACyALQQFxRQ0CIAFBAXFFDQILIAYgAzYCVCADIAIoAlAiAU8NEAwACwsgAigCCCIDDQALCyAZIBpHDQALCwsgIkEBcQ0AIBVBAXENAQwEC0EBIRcgFUEBcQ0MDAQLIBcNCUEAIRcMAgsgAyAeQcjDhAEQsxEACyADIAFBxOeEARCPIAALICUhJCAmIRgLQQwhAwNAIAIgA2oiAUEwaiILKAIAIQ4gCyABKAIANgIAIAEgDjYCACADQQRqIgNBPEcNAAsgAkEANgJUICQhJSAYISYgFiAITQ0ADAcLCyAGQQA2AoQBIAZBATYCeCAGQYDDhAE2AnQgBkIENwJ8IAZB9ABqQYjDhAEQhRsACyAAQQA2AgAMBgsgAyABQaTnhAEQsxEACyADIAFBpOeEARCzEQALQQEhFwsgJiEYICUhJAsgACAYNgIIIAAgJDYCBCAAIBc2AgAMAQsgAEEANgIACyAGQZABaiQAC6g/Ahx/An4jAEGwBGsiBCQAIAEgASgCeCIFQb//e3FBwAByNgJ4IAEoAsABIQYCQAJAAkACQCABLQDIASIHDQAgAygCBCIIIAYgAygCACIJGyEKIAEQhw4gBEEANgLEAyAEQoCAgICAATcCvAMgBEGwAmpBHGohCyAEQbACakEMaiEMIARB6ANqQSBqIQ0gBEHoA2pBGGohDiAEQegDakEQaiEPIARB6ANqQQhqIRAgBEHoA2pBBHIhESAEQbACakEIaiESIARBiAJqQQxqIRMgAS0AyAEhBkEAIRRBCCEVQQAhBwJAA0ACQAJAAkACQAJAAkACQAJAAkACQCAGQf8BcSIGQfgARg0AQQAhFiAGQQFHDQYgARCHDiAEKAK8AyEXIAQpAsADISAgASAFNgJ4IAQgITcCgAIgBCAUNgL8ASAEICA3AswDIAQgFzYCyAMgIKciEiAgQiCIpyIVQShsIhBqIRhBACEHAkADQCAQIAciBkYNASAGQShqIQcgEiAGaigCAEEHRg0ACwsgAS0AgQFBIHFFDQMgBUGAgAJxRQ0DIAEtAMgBQf8BcUEJRw0DIARBsAJqIAEQ/wIgASAFQQFyNgJ4IARBqAFqIAFBCRCYBCAEKAKsASEZIAQoAqgBQQFxRQ0BIBkhFQwCCwJAAkAgARCiCyIZQf8BcSIGQaZ/ag4EBgEBBgALQQAhFiAGQaQBRg0GIAZBywBGDQUgBkHkAEYNBSAGQeoARg0FIAZFDQULIBlBjX9qQf8BcUEtTQ0EIBlBtH9qQf8BcUEnSSEWDAULIAQgGTYCvAMCQAJAAkACQCABLQDIASIHQRtHDQAgARCHDiAEQegDaiASIBUQkAYgBEGIAmogASAEQegDaiAEQfwBahCbAiAEKAKMAiEVIAQoAogCIgdBgICAgHhGDQMgBCAEKAKQAiIaNgKsAiAEIBU2AqgCIAQgBzYCpAIgBEGgAWogASAJIBUgGhDbGBCvCSAEKAKkASEVIAQoAqABQQFxDQIgBCAVNgKIAgJAIAVBgIAEcUUNACABLQDIASIHQf8BcUEJRw0CCyABKAK8ASEQQQAhBxDcGiEGIARBjARqQQA7AQAgBEEANgKABCAEQgA3AvgDIARCADcChAQgBCAGNgL0AyAEQQA2AvADIARCgICAgIABNwLoA0EIQcAAEOsfIgZFDQkgBkEeNgIAIAYgBCkCpAI3AgQgBkEAOgApIAYgCToAKCAGIBk2AiQgBkIANwIcIAYgEDYCGCAGIAo2AhQgBiAVNgIQIAZBDGogBEGkAmpBCGooAgA2AgAgBEHoA2oQ1B0gBEHoA2pBDGoQ/RogBEGIBGoQqR8gASABKAJ4QX5xIAVBAXFyNgJ4IARBsAJqEP0eDAYLIAEoAsQBIRUgASgCwAEhGSAEQaADaiAHEN4bIARBATYC7AMgBEGY75sBNgLoAyAEQgE3AvQDIARBigWtQiCGQciomwGthDcDoAQgBCAEQaAEajYC8AMgBEGIAmogBEHoA2oQjRUgBEGcAmogBEGoA2ooAgA2AgAgBCAEKQKgAzcClAIgGSAVIARBiAJqEIUVIRUgAS0AyAFBogFHDQIgARDHESEHIAEQhw4gASAHEOURDAILIARB6ANqQQRyIAcQ3hsgBEEENgL8AyAEQYS7mwE2AvgDIARBsICAgHg2AugDIAEoAsABIAEoAsQBIARB6ANqEIUVIRUCQCABLQDIAUGiAUcNACABEMcRIQcgARCHDiABIAcQ5RELIARBiAJqEP0aCyAEQaQCahDUHQsgBEG8A2oQ6R4LIAQgFTYC3AMgBEEBNgLYAyABIARBsAJqEPAFIARB2ANqENscIARBADYCsAMgBEGwA2oQsB8gASgCeCEFC0EAIRUCQCAFQYCABHENACABLQCBAUEgcUUNACABLQDIAUH/AXFBCUcNACAEQbACaiABEP8CIAEgBUEBcjYCeCAEQZgBaiABQQkQmAQgBCgCnAEhFQJAAkAgBCgCmAFBAXENACAEIBU2AqADIAEtAMgBIgdBG0YNASAEQegDakEEciAHEN4bIARBBDYC/AMgBEGEu5sBNgL4AyAEQbCAgIB4NgLoAyABKALAASABKALEASAEQegDahCFFSEVAkAgAS0AyAFBogFHDQAgARDHESEHIAEQhw4gASAHEOURCyAEQaADahDpHgsgBCAVNgKMAiAEQQE2AogCIAEgBEGwAmoQ8AUgBEGMAmoQ3x1BACEVDAELIAEgASgCeEF+cSAFQQFxcjYCeCAEQbACahD9HgsgBCAVNgKwAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAgBkcNACAVDQAgAS0AyAFB/wFxQRtGDQAgEiEZAkADQCAZIgYgGEYiBw0BIAZBAEEoIAcbaiEZIAYoAgBBB0cNACAGKAIQIgYoAgBBDkcNACAGKAIIIgcgBigCDEEMbGohFQNAIAciBkEAQQwgBiAVRiIQG2ohByAQDQEgBigCAA0AIAYoAgQiBigCAEEHRw0AIAYoAgghECAGKAIMIQYgBEGzgICAeDYCsAIgASAQIAYgBEGwAmoQrxoMAAsLCyAEQQA2ArwDIAQgATYC+AMgBCAYNgL0AyAEIBc2AvADIAQgEjYC7AMgBCASNgLoAyAEIARBvANqNgL8AyAEQaADaiAEQegDahDECgJAAkAgBCgCoANBAkYNACAEQZABakEEQQRBEEHYk5sBENgUIARBoANqQQhqKQIAISAgBCgCkAEhBiAEKAKUASIVIAQpAqADNwIAIBVBCGogIDcCACAEQQE2AqgEIAQgFTYCpAQgBCAGNgKgBCAEQbACakEQaiAEQegDakEQaikCADcDACAEQbACakEIaiAEQegDakEIaikCADcDACAEIAQpAugDNwOwAkEQIQdBASEGAkADQCAEQYgCaiAEQbACahDECiAEKAKIAkECRg0BAkAgBiAEKAKgBEcNACAEQaAEaiAGQQFBBEEQEJ8XIAQoAqQEIRULIBUgB2oiECAEKQKIAjcCACAQQQhqIARBiAJqQQhqKQIANwIAIAQgBkEBaiIGNgKoBCAHQRBqIQcMAAsLIARBsAJqEOcQIARB2ANqQQhqIARBoARqQQhqKAIANgIAIAQgBCkCoAQ3A9gDDAELIARBADYC4AMgBEKAgICAwAA3A9gDIARB6ANqEOcQCwJAIAQoArwDIgZFDQAgBEHYA2oQsh8MCwsgBCgC3AMhBkEAIRBBASEHIAQoAtgDIhJBgICAgHhGDQwgBCAEKALgAyIZNgLsASAEIAY2AugBIAQgEjYC5AEgCUUNASABKAK8ASEQIAMoAgghBkEIQcAAEOsfIgFFDRBBACEHIAFBADoAHCABQQA2AhggASAGNgIUIAEgCDYCECABQtHCzcvn7Rg3AgggAUEaNgIAIARCADcCyAIgBEEDOgDEAiAEQQA2AsACIARCADcC0AIgBEIANwK4AiAEQoCAgIDAADcCsAJBCEHAABDrHyIGRQ0QIAZBFzYCACAGIAQpAuQBNwIEIAZCADcCJCAGIBA2AiAgBiAINgIcIAZBBToAGCAGIAE2AhAgBkEMaiAEQewBaigCADYCACAEQbACakEMahDtHiAEQbACahCyH0EAIRAMDAsCQAJAAkAgAS0AyQENACACDQEgASgCvAEhBiAEQY2AgIB4NgKwAiAKIAYgBEGwAmoQhRUhBkEBIQcgAS0AyAFBogFHDQYgARDHESEHIAEQhw4gASAHEOURDAULIAEoArwBIQYgBEGvgICAeDYCsAIgCiAGIARBsAJqEIUVIQZBASEHIAEtAMgBQaIBRg0BDAULAkAgAS0AyAEiBkEbRg0AIAEoAsQBIRAgASgCwAEhFSAEQbABaiAGEN4bQQEhByAEQQE2ArQCIARBmO+bATYCsAIgBEIBNwK8AiAEQYoFrUIghkHIqJsBrYQ3A4gCIAQgBEGIAmo2ArgCIARB6ANqIARBsAJqEI0VIARB/ANqIARBuAFqKAIANgIAIAQgBCkCsAE3AvQDIBUgECAEQegDahCFFSEGIAEtAMgBQaIBRw0FIAEQxxEhByABEIcOIAEgBxDlEQwECyABEIcOIARBsAJqQQhqIARByANqQQhqKAIANgIAIAQgBCkCyAM3A7ACIARB6ANqIAEgBEGwAmogBEH8AWoQmwIgBCgC7AMhBkEAIRBBASEHIAQoAugDIhJBgICAgHhGDQwgBCAEKALwAyIHNgLEASAEIAY2AsABIAQgEjYCvAEgBEHgAGogASAJIAYgBxDbGBCvCUEBIQcgBCgCZCESAkAgBCgCYEEBcQ0AIAEoArwBIRAQ3BohBiAEQdQCakEAOwEAIARBADYCyAIgBEIANwLAAiAEQgA3AswCIAQgBjYCvAIgBEEANgK4AiAEQoCAgICAATcCsAIgBEGwAmoQ1B0gBEG8AmoQ/RogBEHQAmoQqR8gEigCAEGAgICAeEYNAwJAIAEtAMgBIgZBUWpB/wFxQQ1JDQAgBkFzakH/AXFBCUsNBAsgBEH2gICAeDYCyAEgASABKALAASABKALEASAEQcgBahCvGkEIQcAAEOsfIgZFDREgBkEeNgIAIAYgBCkCvAE3AgRBACEHIAZBADoAKSAGIAk6ACggBiAVNgIkIAZCADcCHCAGIBA2AhggBiAKNgIUIAYgEjYCECAGQQxqIARBvAFqQQhqKAIANgIAIARB2ABqIAEgBkEAENYMIAQoAlwhBiAEKAJYQQFxDRgCQAJAIAEtAMgBIhBBfWoOBBsBARsACyAQQaMBRg0aCyABLQDJAQ0ZIAEgASgCwAEgASgCxAEgBEHIAWoQrxoMGQsgBEG8AWoQ1B0gEiEGDAwLIAEQxxEhByABEIcOIAEgBxDlEQwCCyAZDgIHBAMLQQhBwAAQ6x8iBkUNDSAGQR42AgAgBiAEKQK8ATcCBEEAIQcgBkEAOgApIAYgCToAKCAGIBU2AiQgBkIANwIcIAYgEDYCGCAGIAo2AhQgBiASNgIQIAZBDGogBEG8AWpBCGooAgA2AgAMFQtBASEHC0EBIRAMBwsgBEGAAWogGUEEQQRBxLqbARDYFEEAIRUgBEEANgL4ASAEIAQoAoQBIhc2AvQBIAQgBCgCgAE2AvABIAQgEjYCkAIgBCAGNgKIAiAEIAYgGUEEdCIQaiIbNgKUAiAGQRBqIRkgBEHoA2pBDGohAyAEQegDakEEaiIaQQhqIRZBACEHAkACQANAAkACQCAQRQ0AIAYoAgAiEkECRw0BIBkhGwsgBCAbNgKMAiAEQYgCahCHEyAHRQ0CIARB8ABqIAQoAvQBIgYoAgAQvwMgBiAHQQJ0akF8aiIGRQ0DIAQoAnAhECAEQegAaiAGKAIAEL8DIAQoAmwhBkEIQcAAEOsfIgdFDQ4gB0EZNgIAIAcgBCkC8AE3AgQgByAQNgIQIAcgBjYCFCAHQQxqIARB8AFqQQhqKAIANgIAIAEoArwBIQFBCEHAABDrHyIGDQUMDgsgFiAGQQxqKAIANgIAIBogBikCBDcCACAEIBI2AugDIAQoAvQDIRgCQCASQQFxDQACQCAHIAQoAvABRw0AIARB8AFqQfS6mwEQsRYgBCgC9AEhFwsgBkEQaiEGIBcgFWogGDYCACAEIAdBAWoiBzYC+AEgFUEEaiEVIBlBEGohGSAQQXBqIRAMAQsLIAQgGTYCjAIgBEH4AGogGBC/AyAEKAJ8IQYgBCgCeCEHIARBvICAgHg2ArACIAcgBiAEQbACahCFFSEGAkAgAS0AyAFBogFHDQAgARDHESEHIAEQhw4gASAHEOURCyADEOseIARBiAJqEIcTIARB8AFqENMdDAYLQdS6mwEQmyAAC0HkupsBEJsgAAsgBCASNgLwAyAEIAY2AugDIAQgBkEQaiIHNgL0AyAEIAc2AuwDIAYoAgAiFUECRg0BIARBiAJqQQxqIhIgBkEMaigCACIHNgIAIAQgBikCBDcCjAIgBCAVNgKIAgJAIBVBAXFFDQAgBEGIAWogBxC/AyAEKAKMASEGIAQoAogBIQcgBEG8gICAeDYCsAIgByAGIARBsAJqEIUVIQYCQCABLQDIAUGiAUcNACABEMcRIQcgARCHDiABIAcQ5RELIBIQ6x4gBEHoA2oQhxMMBQsgBEHoA2oQhxMgASgCvAEhAUEIQcAAEOsfIgZFDQkLIAYgATYCDCAGIAo2AgggBiAHNgIEIAZBIzYCACAEQbADahCpH0EAIQcMEAtBtLqbARCbIAALIAEoArwBIQYgBEG9gICAeDYCsAIgCiAGIARBsAJqEIUVIQYCQCABLQDIAUGiAUcNACABEMcRIRUgARCHDiABIBUQ5RELIARB5AFqELIfDAILQQAhEAtBASEHCyAEQbADahCpHyAQRQ0LCyAEQcgDahD4EQwKC0EBIRYLIAFBATYC0AEgASABKALAASIbNgLUASAEQbACaiABEIAMAkAgBC0AsAJFDQAgBCgCtAIhBgwFCyAELQCxAiEaIAEoAnghBiABKALAASEXAkACQAJAAkAgAS0AgQFBIHFFDQACQAJAIAYgAS0AyAEiGRCmFQ0AIBlB/wFxQRxHDQIgARCcEkUNASABLQDIASEZCyAZQf8BcUEcRw0CIAEQhw4gASgCvAEhHCABKAK4ASEdIARBwABqIAEQnwlBASEZIAQoAkQhBiAEKAJAQQFxRQ0DDAkLIAEoAnghBgsgASAGQcAAcjYCeCAEQbACaiABEPUJIAEgBjYCeCAEKAK0AiEGIAQoArACIhlBAkYNByAEKQK4AiEgIAQgBjYCjAIgBCAZNgKIAiAEICA3ApACICBCIIinIQYMAgsgBEHQAGogARCfCSAEKAJUIQYgBCgCUEEBcQ0GQQAhGQJAIAEtAMgBIhhBF0YNACAYQWFqQf8BcUEOSw0BCyAEQcgAaiABIBsgBhDdAyAEKAJMIQYgBCgCSEEBcQ0GCyAEIAY2ApQCIAQgHDYCkAIgBCAdNgKMAiAEIBk2AogCCyABLQDIASEYAkACQAJAAkACQAJAAkACQAJAIAEtAIEBQSBxRQ0AIBhB/wFxQQpHDQACQAJAAkACQAJAAkACQAJAAkACQCABEKILQf8BcSIYQXlqDgMCAQIACyAYQQFGDQEgGEEXRg0BCyABLQDIASEYIBkNCCAYQf8BcUEKRw0BIAEQhw4gBCAGNgLUAyAEQTBqIAFBwIAGEI4VIAQoAjQhGCAEKAIwQQFxRQ0CIBghBgwDCyABEIcOAkAgGUUNACABKAK8ASEHIAEoArgBIRUgBEH/gICAeDYCsAIgASAVIAcgBEGwAmoQrxoLIAYoAgBBGkcNBEEBIRUMCQsgASgCxAEhBiABKALAASEHIARByANqIBgQ3hsgBEEBNgK0AiAEQZjvmwE2ArACIARCATcCvAIgBEGKBa1CIIZB2KGbAa2ENwOgBCAEIARBoARqNgK4AiAEQegDaiAEQbACahCNFSAEQfwDaiAEQdADaigCADYCACAEIAQpAsgDNwL0AyAHIAYgBEHoA2oQhRUhBiABLQDIAUGiAUYNBAwFCyAEIBg2ApAEAkACQCABLQDIASIZQQlHDQAgARCHDiABIAEoAngiGUGAgAJyNgJ4IARBKGogARCPFSAEKAIoIR4gASAZNgJ4IAQoAiwhHyAeQQFxRQ0DIB8hBgwBCyABKALEASEGIAEoAsABIQcgBEHYA2ogGRDeGyAEQQE2ArQCIARBmO+bATYCsAIgBEIBNwK8AiAEQYoFrUIghkHZoZsBrYQ3A6AEIAQgBEGgBGo2ArgCIARB6ANqIARBsAJqEI0VIARB/ANqIARB4ANqKAIANgIAIAQgBCkC2AM3AvQDIAcgBiAEQegDahCFFSEGIAEtAMgBQaIBRw0AIAEQxxEhByABEIcOIAEgBxDlEQsgBEGQBGoQ6x4LIARB1ANqEOseDBELIARBIGogHxC/AyAEKAIkIR5BCEHAABDrHyIZRQ0MIBkgGzYCECAZIB82AgwgGSAYNgIIIBkgBjYCBCAZQRY2AgAgGSAeNgIUIAQgGTYClAIgBEEANgKIAiABLQDIASEYDAQLIARBOGogBEGIAmoQhREgBCgCPCEGIAQoAjghByAEQeaAgIB4NgKwAiAHIAYgBEGwAmoQhRUhBiABLQDIAUGiAUcNAQsgARDHESEHIAEQhw4gASAHEOURCyATEOseDA0LIAYhGQsgAS0AgQFBIHFFDQEgGEH/AXFBCUcNAUEAIRUgGSEGCyAEQbACaiABQQAgBhBxIAQoArQCIQYgBCgCsAIiB0EHRg0KIBAgEikDADcDACAQQRhqIBJBGGopAwA3AwAgEEEQaiASQRBqKQMANwMAIBBBCGogEkEIaikDADcDACAEIAY2AuwDIAQgBzYC6AMgFQ0BDAQLIBpBAXENAQwCCwJAIAcNACAEQQE6AIQEDAMLQbKjmwFBKEGgupsBEN0XAAsgASgCvAEhBiAEQamBgIB4NgKwAiABIBsgBiAEQbACahCvGgsCQCAHIAQoArwDRw0AIARBvANqQYC5mwEQtRYgBCgCwAMhFQsgFSAHQShsaiIGQQc2AgAgBiAEKQKIAjcCBCAGQQxqIARBiAJqQQhqKQIANwIAIAdBAWohBwwBCwJAAkACQAJAAkACQAJAAkAgBCgCiAJFDQAgASgCvAEhByAEKAKQAiEVIAQoAowCIRlBCEEoEOsfIgZFDQkCQEEoRQ0AIAYgBEHoA2pBKPwKAAALIARBADYCgAQgBCAVNgL8AyAEIBk2AvgDIAQgBzYC9AMgBCAXNgLwAyAEIAY2AuwDIARBAjYC6AMMAQsgDyEZIA0hFQJAAkAgBw4HBAECAQUFAAQLIAQgETYCkAQgBEECNgK0AiAEQYC6mwE2ArACIARCATcCvAIgBEHHAq1CIIYgBEGQBGqthDcDoAQgBCAEQaAEajYCuAIgBEGwAmpBkLqbARCFGwALIA8hGQwBCyAQIRkLIA4hFQsgBEEYaiABELETIAQoAhwhBiAEKAIYQQFxDQECQCAGRQ0AIBkgFzYCACAZIAEoArwBNgIECyAVEKkfIBUgBjYCAAsgAS0AyAFBF0cNAiABEIcOIARBEGogARCzCyAEKAIUIQYgBCgCEEEBcUUNAQsgBEHoA2oQ6xIMBwsgASgCvAEhFUEIQSgQ6x8iB0UNAgJAQShFDQAgByAEQegDakEo/AoAAAsgBCAVNgL4AyAEIBc2AvQDIAQgBjYC8AMgBCAHNgLsAyAEQQQ2AugDCwJAIBpBAXFFDQAgASgCvAEhBiAEQamBgIB4NgKwAiABIBsgBiAEQbACahCvGgsCQCAEKALEAyIGIAQoArwDRw0AIARBvANqQZC5mwEQtRYLIAQoAsADIRUCQEEoRQ0AIBUgBkEobGogBEHoA2pBKPwKAAALIAZBAWohBwsgBCAHNgLEAyABLQDIASIGQRtHDQIgARCHDgJAAkACQAJAIAdFDQBBBCEGAkAgBCgCwAMiFSgCACIZQXpqDgIDAgALIBlFDQMMBQtBAEEAQaC5mwEQsxEAC0EQIQYLIBUgBmooAgAoAgBBGkcNAgsgBEHoA2ogFSAHEJAGIARBADYCsAIgBEGgBGogASAEQegDaiAEQbACahCbAiAEKAKkBCEGIAQoAqAEIhlBgICAgHhGDQQgBCAEKAKoBCIYNgKcBCAEIAY2ApgEIAQgGTYClAQgBEEIaiABQQAgBiAYENsYEK8JIAQoAgwhBgJAIAQoAghBAXFFDQAgBEGUBGoQ1B0MBQsgASgCvAEhGBDcGiEZIAtCADcCACALQQhqQQA7AQAgBEEANgLIAiAEQgA3AsACIAQgGTYCvAIgBEEANgK4AiAEQoCAgICAATcCsAJBCEHAABDrHyIZRQ0AIBlBHjYCACAZIAQpApQENwIEIBlBADoAKSAZIBY6ACggGUEANgIkIBlCADcCHCAZIBg2AhggGSAbNgIUIBkgBjYCECAZQQxqIARBlARqQQhqKAIANgIAAkAgByAEKAK8A0cNACAEQbwDakGwuZsBELUWIAQoAsADIRULIBUgB0EobGoiBiAZNgIQIAZCBzcDACAEIAdBAWoiBzYCxAMgBEGwAmoQ1B0gDBD9GgwBCwALIAEtAMgBIQYLIAZB/wFxIhlBAUYNAAJAIBlBB0cNACABEIcOQQEgFCABLQDIASIGQQFGIhkbIRQgASkDuAEgISAZGyEhDAELCyABKALEASEHIAEoAsABIRAgBEGgA2ogBhDeGyAEQQE2ArQCIARBmO+bATYCsAIgBEIBNwK8AiAEQYoFrUIghkG8p5sBrYQ3A6AEIAQgBEGgBGo2ArgCIARB6ANqIARBsAJqEI0VIARB/ANqIARBqANqKAIANgIAIAQgBCkCoAM3AvQDIBAgByAEQegDahCFFSEGIAEtAMgBQaIBRw0AIAEQxxEhByABEIcOIAEgBxDlEQsgBEG8A2oQ+BEMAQsgASgCxAEhECAEQbADaiAHEN4bIARBATYCtAIgBEGY75sBNgKwAiAEQgE3ArwCIARBigWtQiCGQYHamAGthDcDoAQgBCAEQaAEajYCuAIgBEHoA2ogBEGwAmoQjRUgBEH8A2ogBEG4A2ooAgA2AgAgBCAEKQKwAzcC9AMgBiAQIARB6ANqEIUVIQYgAS0AyAFBogFHDQAgARDHESEHIAEQhw4gASAHEOURCyABIAU2AngLQQEhBwsgACAGNgIEIAAgBzYCACAEQbAEaiQAC7RBAiB/CX4jAEHwBmsiAyQAAkACQAJAAkAgAhAUIgRBAUcNAEECIQVBACEGQQAhB0ECIQhBACEJQQAhCkECIQtBgICAgHghDAwBCyADIAI2AsQFAkAgAhDjIA0AIANBxAVqIANBwAZqQYiEgAEQ2QYhDSACEJIfQQEhDgwCC0H4g4ABIQUgA0H4g4ABNgLcBSADIAI2AuAFIANBADYC0AUgA0H4BGpBCGohD0HAg4ABIQ0gAiEQQYGAgIB4IQdBAiERQQMhC0EDIQpBAiESQQIhCUEDIQgCQAJAAkACQAJAAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCANIAVGDQACQAJAIBAgDSgCACANQQRqKAIAEIkFIg4QFSIMEOIgRQ0AIA4gEBCRIEUNAQsgAyANQQhqNgLYBSADKALQBSADKALUBRDCHyADIAw2AtQFIANBATYC0AUgDSgCACIQIA0oAgQiDUHZoJsBQQYQmRwNAyAQIA1B7YKAAUEIEJkcDQQgECANQfWCgAFBBhCZHA0FIBAgDUH7+4QBQQQQmRwNBiAQIA1B+4KAAUEJEJkcDQcgECANQYSDgAFBGRCZHA0IIBAgDUGdg4ABQQkQmRwhDSAOEJIfIA1FDQIgEUH/AXFBAkcNCiADQfABaiADQdAFahCaHCADLQDwAUUNCQwRCyANQQhqIQ0gDBCSHyAOEJIfDA8LIAMgDTYC2AVBgICAgHggByAHQYGAgIB4RhshDEECIAsgC0H/AXFBA0YbIQVBAiAKIApB/wFxQQNGGyELQQAgCSAJQf8BcUECRiINGyEGQQEgEyANGyEHQQIgCCAIQf8BcUEDRhshCCARQQFxIQkgEkEBcSEKIBQhDQwUCyADQdAFahDCHAwMCyAOEJIfAkAgCEH/AXFBA0YNAEHZoJsBQQYQ1BIhFQwPCyADQfABaiADQdAFahDmDyADLQDwAQ0NIAMtAPEBIQgMCwsgDhCSHyAHQYGAgIB4Rg0JQe2CgAFBCBDUEiENDA4LIA4Qkh8gCUH/AXFBAkYNB0H1goABQQYQ1BIhFQwMCyAOEJIfIBJB/wFxQQJGDQVB+/uEAUEEENQSIRUMCwsgDhCSHyAKQf8BcUEDRg0DQfuCgAFBCRDUEiEVDAoLIA4Qkh8CQCALQf8BcUEDRg0AQYSDgAFBGRDUEiEVDAoLIANB8AFqIANB0AVqEOYPIAMtAPABDQggAy0A8QEhCwwGCyADLQDxASERDAULQZ2DgAFBCRDUEiEVDAcLIANBADYC0AVBARCFHQJAAkACQAJAAkACQAJAAkAgDBCQIA0AIAMgDDYC2AYgA0HwAWogDBDZC0EBIQwgAygC8AEhFQJAAkAgAy0A9AEiDUF+ag4CAQkACyADIA06AIQFIAMgFTYCgAUgA0EANgL4BCADQQA2AowBIANCgICAgIABNwKEAQNAIANB6ABqIA8QiQ5BlYCAgHghDQJAIAMoAmgiDkECRg0AIAMoAmwhFUEBIQwgDkEBcQ0JIANB4ABqIBUQ5RsgAygCYCENIAMoAmQhDiADKAL4BCADKAL8BBDCHyADIA42AvwEIANBATYC+AQgA0HwAWogDRCEECADKAL0ASEVIAMoAvABIg1BlYCAgHhGDQkgAykD+AEhIwsgAyAjNwPAASADIBU2ArwBIAMgDTYCuAECQCANQZWAgIB4Rg0AIANBuANqIANB+ARqEJwcIAMoArwDIQ0CQCADKAK4AyIOQZWAgIB4Rw0AIANBuAFqEOYRQQEhDCANIRUMCgsgA0HwAWpBCGogA0G4AWpBCGopAwA3AwAgAyADKQO4ATcD8AEgAyADKQPAAzcDiAIgAyANNgKEAiADIA42AoACIANBhAFqIANB8AFqELIRDAELCyADQbgBahCkHiADQfABaiADKAKIASADKAKMARCxASADLQDwAQ0GIAMvAfQBIANB8AFqQQZqLQAAQRB0ciEVIAMvAfIBIRYgAy0A8QEhF0EAIQwMBwsgA0HwAGogAygC2AYQuxoCQCADKAJwQQFxRQ0AIAMgAygCdCINNgLABiADIA0QDzYCyAMgA0EANgLEAyADQQA2AswDIANBADYCuAMgAyADQcAGajYCwAMgA0EANgKMASADQoCAgICAATcChAEDQCADQfgEaiADQbgDahDLEUGVgICAeCENAkAgAygC+ARBAUcNACADKAL8BCENIAMoAoAFIQ4gAygCuAMgAygCvAMQwh8gAyAONgK8AyADQQE2ArgDIANB8AFqIA0QhBAgAygC9AEhFSADKALwASINQZWAgIB4Rg0GIAMpA/gBISMLIAMgIzcD0AEgAyAVNgLMASADIA02AsgBAkAgDUGVgICAeEYNACADKAK4AyENIANBADYCuAMgDUUNBCADQfgEaiADKAK8AxDRASADKAL8BCENAkAgAygC+AQiDkGVgICAeEcNACADQcgBahDmEUEBIQwgDSEVDAgLIANB8AFqQQhqIANByAFqQQhqKQMANwMAIAMgAykDyAE3A/ABIAMgAykDgAU3A4gCIAMgDTYChAIgAyAONgKAAiADQYQBaiADQfABahCyEQwBCwsgA0HIAWoQpB4gA0HwAWogAygCiAEgAygCjAEQsQEgAy0A8AENAyADLwH0ASADQfABakEGai0AAEEQdHIhFSADLwHyASEWIAMtAPEBIRdBACEMDAULIANB2AZqIANBwAZqQeiEgAEQ2QYhFQwHCyAMEJIfQQIhCgwKC0HxjYABQSxBhI+AARDyEgALIAMoAvQBIRULQQEhDAsgA0GEAWoQ2hcgAygCuAMgAygCvAMQwh8gAygCwAYQkh8MAgsgAygC9AEhFUEBIQwLIANBhAFqENoXIANB+ARqEKUeCyADKALYBhCS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4OydAUEALQDA8Z0BGkGACBCFASITRQ0DQQBBAzoA4OydAUEAIBM2AtjsnQELIANBuANqEIgJIANBpARqIhMQpg0gA0KBgICAwAA3AuwEIANBwAZqQQFBABC1EyADQdgGakEBQQAQtRMgA0HEBWpBAUEAELUTIANB0AVqEIgJIAMpAuAFISMgAykCgAYhJCADKQKIBiElIAMpApAGISYgA0H4BGoQpg0gA0G4A2oQ5B0gA0GIBGogA0HABmpBCGooAgA2AgAgA0GUBGogA0HYBmpBCGooAgA2AgAgA0GgBGogA0HEBWpBCGooAgA2AgAgAyAmNwL4AyADICU3AvADIAMgJDcC6AMgA0KggICAgAQ3AuADIANCoICAgIAENwLYAyADQqCAgICABDcC0AMgAyAjNwLIAyADQqCAgICABDcCwAMgA0KggICAgAQ3ArgDIAMgAykCwAY3AoAEIAMgAykC2AY3AowEIAMgAykCxAU3ApgEAkBByABFDQAgEyADQfgEakHIAPwKAAALAkBBvAFFDQAgA0HwAWogA0G4A2pBvAH8CgAACyADIA42ArADIAMgEjYCrAMgA0HQBWoQhxwgEiASKAIAIg5BAWo2AgAgDkF/TA0CIAMpAvABISMgAykC+AEhJCADKQKAAiElIAMpAogCISYgAykCkAIhJyADKQKYAiEoIAMpAqACISkgAykCqAIhKiADKQKwAiErIANBgARqIAMoArwCIAMoAsACEPMSIANBjARqIAMoAsgCIAMoAswCEPMSIANBmARqIAMoAtQCIAMoAtgCEPMSIAMgKzcC+AMgAyAqNwLwAyADICk3AugDIAMgKDcC4AMgAyAnNwLYAyADICY3AtADIAMgJTcCyAMgAyAkNwLAAyADICM3ArgDIAMoAuACIQ4gA0HQBWogAygC5AIiE0EBQQoQ2QwgAygC1AUhHSADKALQBUEBRg0EIAMoAtgFIR4CQCATQQpsIhFFDQAgHiAOIBH8CgAACwJAQewARQ0AIANB0AVqIANBuANqQewA/AoAAAsgAygCsAMiESARKAIAIg5BAWo2AgAgDkF/TA0CIAMoAqgDIR8gAygCpAMhIAJAQewARSIhDQAgA0G4A2ogA0HQBWpB7AD8CgAACyADQZoDaiEZIANBkANqIRogA0GGA2ohDyADQfwCaiEXIANB8gJqIRgg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BEGsAWogASgCACIBIANBBGooAgAgA0EIaigCABCqByAEEN8SNgLEASAEQQA2AqwBIAEgBEGsAWoQww4MIwsgBEHYAGpBEGogA0EQaikCADcDACAEQdgAakEIaiADQQhqKQIANwMAIAQgAykCADcDWCABKAIAIgMsABYhBSADLQAVIQYgAy0AFCECIAMtABIhByADLQAXRQ0fQQEhCCAFQQBIDSAgAkH/AXFBAkYgAnJBAXENHwwgCyABKAIAIgEtABQiAkECRiACciEFIAEtABUhByABLQARIQZBASECAkACQAJAAkACQAJAAkACQCADLQAYDgwOAA8BAgMEBQQFBgcOC0EgQQggB0EBcRtBAiAGQQFxGyECDA4LQQIhAgwNC0GAAkHAACAFQQFxGyECDAwLQYAEQYABIAVBAXEbIQIMCwtBgCBBgAggBUEBcRshAgwKC0GAwABBgBAgBUEBcRshAgwJC0GAgARBgIABIAVBAXEbIQIMCAtBgIAIQYCAAiAFQQFxGyECDAcLIAEoAgAiBS0AFCICQQJGDQkgAkEBcQ0JIARBrAFqIAEgAxD5BiAEQYgDaiIDIARBrAFqQQxqKQIANwMAIAQgBCkCsAE3A4ADIAQoAqwBIgFBgICAgHhGDQggACAEKQLAATcCFCAAQSRqIARBrAFqQSRqKAIANgIAIABBHGogBEGsAWpBHGopAgA3AgAgAEEMaiADKQMANwIAIAAgBCkDgAM3AgQgACABNgIADCELIAEoAgAiAi0AFCIFQQJGDQkgBUEBcQ0JIARBrAFqIAIQqA8gBCgCrAFBEEYNEiAEQYADakEYaiAEQawBakEYaigCADYCACAEQYADakEQaiAEQawBakEQaikCADcDACAEQYADakEIaiAEQawBakEIaikCADcDACAEIAQpAqwBNwOAAyAEQegCaiAEQYADahD3ECAEQawBaiABIANB2ABqIAMtAHAgBEHoAmoQ/Q8gBCgCrAEiA0GAgICAeEYNFAJAQSRFDQAgAEEEaiAEQawBakEEakEk/AoAAAsgACADNgIAIAQoAugCIAQoAuwCQQFBAhDAEQwgCyAEQawBaiABKAIAIgIQqA8gBCgCrAFBEEYNCyAEQYADakEYaiIBIARBrAFqQRhqIgUoAgA2AgAgBEGAA2pBEGogBEGsAWpBEGopAgA3AwAgBEGA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IAALIARBATYCsAEgBEG0sYUBNgKsASAEQgE3ArgBIARB+AA2AuwCIAQgBEHoAmo2ArQBIAQgBEGAA2o2AugCIARBrAFqQbyxhQEQhRsAC0HEsoUBEJsgAAtB1LKFARCbIAALIARBjANqIARB6AJqQQhqKQIANwIAIAQgBCkC6AI3AoQDIARBATYCgAMgBEGsAWogBEGAA2oQsgggAiAEQawBahDDDgwKC0Gks4UBEJsgAAsgBEEBNgKwASAEQfyxhQE2AqwBIARCATcCuAEgBEH4ADYC7AIgBCAEQegCajYCtAEgBCAEQYADajYC6AIgBEGsAWpBhLKFARCFGwALAkACQCAWp0EBcUUNACABKAIAIgMoAgANASAWQgiIpyECIANBfzYCAAJAAkACQCADKAIMIgFFDQAgAygCCCABQRxsaiIBQWRqIgVFDQAgBSgCAEEIRg0BC0EALQDA8Z0BGkEBEIUBIgFFDQYgASACOgAAAkAgAygCDCICIAMoAgRHDQAgA0EEakHktoUBEP4VCyADIAJBAWo2AgwgAygCCCACQRxsaiICQQE2AgwgAiABNgIIIAJCiICAgBA3AgAMAQsCQCABQXBqIgcoAgAiBSABQWhqIgYoAgBHDQAgBkHUtoUBEMENCyABQWxqKAIAIAVqIAI6AAAgByAFQQFqNgIACyADIAMoAgBBAWo2AgAMCQsgFkIgiKchAgJAAkAgASgCACIDLQAQQQFxDQAgBEEINgKwAQwBCwJAIAMtABQiAUECRg0AIAFBAXENAAJAIBZCgICAgIAQVA0AIARBCDYCsAEMAgsCQCACQd8AcUG/f2pBGUsNAEEALQDA8Z0BGkECEIUBIgFFDQYgASACOgABIAEgAjoAACAEQQE2ArQBIAQgATYCsAEgBEEBNgKsASAEQegCaiAEQawBahDcEyAEQegCahC8ByAEQYwDaiAEQfACaikCADcCACAEIAQpAugCNwKEAyAEQQE2AoADIARBsAFqIARBgANqELIIDAILIARBCDYCsAEMAQsCQCACIAIQtxANACAEQQg2ArABDAELQQAtAMDxnQEaQQgQhQEiAUUNBCABIAI2AgQgASACNgIAIARBATYCtAEgBCABNgKwASAEQQE2AqwBIARB6AJqIARBrAFqEN0TIARB6AJqENsEIARBjANqIARB6AJqQQhqKQIANwIAIAQgBCkC6AI3AoQDIARBADYCgAMgBEGwAWogBEGAA2oQsggLIARBIGpBCGoiASAEQawBakEQaikCADcDACAEQSBqQRBqIgUgBEHEAWopAgA3AwAgBCAEKQK0ATcDIAJAIAQoArABIgdBCEYNACAEQcABaiAFKQMANwIAIARBuAFqIAEpAwA3AgAgBCAEKQMgNwKwASAEIAc2AqwBIAMgBEGsAWoQww4MCQsgAyACEJgGDAgLQcS2hQEQ+BQACwtBAC0AwPGdARogAy0AQCEIIAItABMhCUEcEIUBIgMNAQsACyADIAQpAtQBNwIAIANBGGogBEHUAWpBGGooAgAiBjYCACADQRBqIARB1AFqQRBqKQIANwIAIANBCGogBEHUAWpBCGopAgA3AgAgBCABNgKMAyAEIAU2AoQDIAQgBzYCgAMgBCADNgKIAyAEIAggCUEBcXM6AJADAkACQCAGKAIIQQFHDQAgBigCDA0AQQEhBiAEQQE2AoADIAQgAUEARyIBNgKMAyAEIAVBAEcgB0EBc3IiBTYChAMMAQsgByEGCwJAAkACQAJAAkAgAQ4CAAECCyAGRQ0BIAUNARDfEiEBIAMQ9R1BACEFDAILIAZFDQAgBUEBRw0AIARB8AJqIARB4AFqKQIANwMAIARB+AJqIARB6AFqKAIANgIAIAQgBCkC2AE3A+gCIAQoAuwBIQEgBCgC1AEhBQwBCyAEQYADahDzByEBIARB6AJqQRBqIARBgANqQRBqKAIANgIAIARB6AJqQQhqIARBgANqQQhqKQIANwMAIAQgBCkCgAM3A+gCQQQhBQwBCyADQRxBBBCeEgsgBEG4AWogBEHwAmopAwA3AgAgBEHAAWogBEH4AmooAgA2AgAgBCAFNgKsASAEIAQpA+gCNwKwASAEIAE2AsQBIAIgBEGsAWoQww4MAwsgAkH/AXFBAkYgAnIhAgJAAkACQAJAAkACQCAHQQFxDQACQCACQQFxDQAgBkEBcQ0EIARB1AJqIAVBCHQgBUH/AXFyEO0PIARB1AJqEI4FIARB9AJqIARB1AJqQQhqKQIANwIAIAQgBCkC1AI3AuwCIARBATYC6AIgBEGAA2ogBEHoAmoQsggMBgsgBkEBcQ0CIAVBf0oNAUECIQgMBgsgAkEBcQ0DIARB7AJqQYD+AxDtDyAEQQE2AugCIARBgANqIARB6AJqELIIDAQLIARB1AJqIAWtQv8BgyIWQiCGIBaEEO4PIARB1AJqEPAEIARB9AJqIARB3AJqKQIANwIAIAQgBCkC1AI3AuwCIARBADYC6AIgBEGAA2ogBEHoAmoQsggMAwsgBEKOgICA8P+/CDcC+AIgBEKLgICAwAE3AvACIARCgICAgJABNwLoAiAEQdgCaiAEQegCahCQDCAEQQA2AtQCIARBgANqIARB1AJqELIIDAILIARBjv4DOwDYAiAEQYCSrOAANgDUAiAEQewCaiAEQdQCahDcDCAEQQE2AugCIARBgANqIARB6AJqELIIDAELIARB7AJqQoCAgIDw/78IEO4PIARBADYC6AIgBEGAA2ogBEHoAmoQsggLIARByAFqIARBmANqKAIANgIAIARBwAFqIARBkANqKQIANwIAIARBuAFqIARBiANqKQIANwIAIAQgBCkCgAM3ArABDAELIARBrAFqIAEoAgQgASgCCCAEQdgAaiAIEJcPIAQoAqwBIgFBgICAgHhGDQAgBEHQAGogBEGsAWpBHGooAgAiAzYCACAEQcgAaiAEQawBakEUaikCACIWNwMAIARBwABqIARBrAFqQQxqKQIAIhc3AwAgBCAEKQKwASIYNwM4IAQpAswBIRkgAEEcaiADNgIAIABBFGogFjcCACAAQQxqIBc3AgAgACAYNwIEIAAgGTcCICAAIAE2AgAMAgsgBEHQAGogBEHIAWooAgA2AgAgBEHIAGogBEHAAWopAgA3AwAgBEHAAGogBEG4AWopAgA3AwAgBCAEKQKwATcDOCADIARBOGoQww4LIABBgICAgHg2AgALIARBoANqJAALxToBG38jAEGAAWsiBSQAIAJBADYCaCACQQA2AlQgAkEANgI4IAJBADYCJCACQQA2AggCQAJAAkACQAJAAkAgAygCECIGIAMoAhQiB0sNACADKAIMIghBf0YNAyADKAIIIQkgBUE4aiAAIAMoAgAgAygCBBCnEiAFLQA4IgpBAkYNACABQf8BcUECRiABciELIAUoAjwhDCACQdgAaiENIAJBKGohDiAEKAIIIQ8gAy0AGEEBcSEQIAYhEQNAIAsgD0EAR3EhAwJAAkACQCACKAIkRQ0AIBEhEiADRQ0BDAILIAMgCiARIAZLcXINAwsCQCACKAIIIgMgAigCAEcN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CyAAIAE6AAAgAkHQAGokAAvsOAIdfwd+IwBBoAVrIgMkACABIAEoAngiBEH/v39xNgJ4IAEoAsABIQUCQAJAIAFBEhDPCyIGRQ0AIABBgYCAgHg2ApABIAAgBjYCAAwBCyABQcABaiEHAkAgAS0AyAEiBkFbaiIIQRJLDQBBASAIdEGDgBpxRQ0AIANByAJqIAEgASgCwAEQtgQgB0EIaiADQcgCakEIaigCADYCACAHIAMpAsgCNwIAIAEtAMgBIQYLAkAgBkH/AXFBE0cNACABKALAASEIIAEoAsQBIQYgA0HIAmogARDTASABIAY2ArwBIAEgCDYCuAEgByADKQLIAjcCACAHQQhqIANByAJqQQhqKAIANgIAIANBKGogARCPAiABKALAASEJAkACQCABQTwQzwsiCA0AAkAgAS0AyAEiCEFbaiIKQRJLDQBBASAKdEGDgBpxRQ0AIANByAJqIAEgASgCwAEQtgQgB0EIaiADQcgCakEIaigCADYCACAHIAMpAsgCNwIAIAEtAMgBIQgLIANBEzoAmAIgCEH/AXFBE0YNASABKALEASEGIAEoAsABIQkgA0G4AWogCBDeGyADQQE2AswCIANBmO+bATYCyAIgA0IBNwLUAiADQYoFrUIghiADQZgCaq2ENwNoIAMgA0HoAGo2AtACIANB6AFqIANByAJqEI0VIANB/AFqIANBwAFqKAIANgIAIAMgAykCuAE3AvQBIAkgBiADQegBahCFFSEIIAEtAMgBQaIBRw0AIAEQxxEhBiABEIcOIAEgBhDlEQsgAEGBgICAeDYCkAEgACAINgIAIANBKGoQsR8MAgsCQAJAIAINACABKALAASEKIAEoAsQBIQggA0HIAmogARDTASABIAg2ArwBIAEgCjYCuAEgByADKQLIAjcCACAHQQhqIANByAJqQQhqKAIANgIADAELIAEQhw4gASgCvAEhCAsgACADKQIoNwIAIABBgICAgHg2ApABIAAgCDYCICAAIAk2AhwgACAGNgIYIAAgBTYCFCAAIAg2AhAgACAFNgIMIABBCGogA0EoakEIaigCADYCAAwBCyABIAEoAngiBkH/v39xNgJ4IANByAJqIAEQjwQgASAGNgJ4IAMoAsgCIQgCQCADLQD0AiIJQQZGDQACQEEoRQ0AIANBKGpBBHIgA0HIAmpBBHJB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0hcMBQsgA0HlAWohBiABKAK8ASEJAkBBLEUNACADQegAaiADQbgBakEs/AoAAAsgA0H8BGpBAmogBkECai0AADoAACADIAYvAAA7AfwEIAghBiADLQDkASIKQQZGDQQgACAJNgIMAkBBLEUNACAAQRBqIANB6ABqQSz8CgAACyAAQT9qIANB/gRqLQAAOgAAIAAgAy8B/AQ7AD0gAUG8AUHAASACG2ooAgAhBgJAQdAARQ0AIABBwABqIANByAJqQdAA/AoAAAsgACAKOgA8IAAgCDYCCCAAIAY2AgQgACAFNgIAIABBmAFqIANBvAJqKAIANgIAIAAgAykCtAI3ApABDA0LIAFBEBDPCyIGRQ0BDAILIAmtQiCGIAqthCEkIAatQiCGIAithCEjQgAhIgwDCwJAIAEtAMgBIgZBW2oiCEESSw0AQQEgCHRBg4AacUUNACADQcgCaiABIAEoAsABELYEIAdBCGogA0HIAmpBCGooAgA2AgAgByADKQLIAjcCACABLQDIASEGCyADQRM6AJgCAkAgBkH/AXFBE0YNACABKALEASEIIAEoAsABIQkgA0G4AWogBhDeGyADQQE2AswCIANBmO+bATYCyAIgA0IBNwLUAiADICAgA0GYAmqthDcDaCADIANB6ABqNgLQAiADQegBaiADQcgCahCNFSADQfwBaiADQcABaigCADYCACADIAMpArgBNwL0ASAJIAggA0HoAWoQhRUhBiABLQDIAUGiAUcNASABEMcRIQggARCHDiABIAgQ5REMAQsCQAJAIAINACABKALAASEIIAEoAsQBIQYgA0HIAmogARDTASABIAY2ArwBIAEgCDYCuAEgByADKQLIAjcCACAHQQhqIANByAJqQQhqKAIANgIADAELIAEQhw4gASgCvAEhBgsgBygCACEIAkBBMEUNACAAQcAAaiADQShqQTD8CgAACyAAQQA2ApgBIABCgICAgIABNwOQASAAQQE6AIgBIAAgCzYCeCAAIAYgCCACGyIGNgJ0IAAgBTYCcCAAQQY6ADwgACAGNgIEIAAgBTYCACAAQYQBaiADQeQAaigCADYCACAAIAMpAlw3AnwMCgsgAEGBgICAeDYCkAEgACAGNgIAIANB3ABqENUdDAcLIABBgYCAgHg2ApABIAAgBjYCACADQbQCahCxHyADQcgCahCI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QRhqIREgBEHgAmpBFGohEiAEQeACakEQaiETIARB4AJqQTRqIRQgBEHgAmpBMGohFSAEQeACakEMaiEWIAGnIRcgBEHgAmpBBHIhGCAEQcgDakEEciEFIARB4AFqQSVqIRkgBEHgAmpBCGohGgNAIAQgDSIDQThqIg02AsQBIAQgAykAJTcD0AEgBCADQSxqKAAANgDXASADKAIAIgZBCkYNAiADLQAkIRsgAygCICEcIAMoAhwhCCADKAIYIR0gAykCECE4IAMoAgwhByADKAIIIQogAygCBCEJIAMpAjAhOiAZIANBJWoiAykAADcAACAZQQdqIANBB2oiHigAADYAACAEIBs6AIQCIAQgHDYCgAIgBCAINgL8ASAEIB02AvgBIAQgODcD8AEgBCAHNgLsASAEIAo2AugBIAQgCTYC5AEgBCA6NwOQAiAEIAY2AuABAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGQQFGDQAgBkF6ag4EAQICAwILIAQgAykAADcDmAIgBCAeKAAANgCfAgJAAkAgCkECSQ0AIApBAkcNBSAEQQA2ArACIARBADYCqAIgBCAHKAIANgLAAiAEIAcoAgQiCDYCvAIgBCAINgK4AiAEIAggBygCCCIDQThsIh9qIiA2AsQCAkACQCADRQ0AQQAhBgJAA0AgCCAGaiIDQThqISEgAygCACIJQQdGDQEgA0EoaigCACEiIANBLGooAgAhIyADQTBqKAIAIQogBSADQQRqIiQpAgA3AgAgBUEIaiIdIANBDGopAgA3AgAgBUEQaiIbIANBFGopAgA3AgAgBUEYaiIcIANBHGopAgA3AgAgBUEgaiIeIANBJGooAgA2AgAgBCAJNgLIAwJAIApFDQAgBCAhNgK8AiAYICQpAgA3AgAgGEEIaiIlICRBCGopAgA3AgAgGEEQaiImICRBEGopAgA3AgAgGEEYaiInICRBGGopAgA3AgAgGEEgaiIoICRBIGooAgA2AgAgBCAJNgLgAiAEQfADaiAEQeACahDMBSAEKALwA0EMRg0LIARB4AJqQShqIikgBEHwA2pBKGoiKikDADcDACAEQeACakEgaiIrIARB8ANqQSBqIiwpAwA3AwAgBEHgAmpBGGoiLSAEQfADakEYaiIuKQMANwMAIARB4AJqQRBqIi8gBEHw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NyAdNgIYIDcgODcDECA3QQA2AgggN0EBNgIAQRIhCAwICyAEQeACakEwaiAEQeABakEwaikDADcDACAEQeACakEoaiAEQeABakEoaikDADcDACAEQeACakEgaiAEQeABakEgaikDADcDACAEQeACakEYaiAEQeABakEYaikDADcDACAEQeACakEQaiAEQeABakEQaikDADcDACAEQeACakEIaiAEQeABakEIaikDADcDACAEIAQpA+ABNwPgAkEAKALc8J0BIglFDQUgEiEDIBEhBgJAAkACQAJAAkACQCAEKALgAiIKDgoFAQIBAwMEAwMABQsgESEDIBAhBgJAAkACQAJAAkAgBCgC6AIOEwkAAAEABgYGAQIGAwEBCQICBAYJCyAWIQMgEyEGDAgLIBIhAyARIQYMBwsgECEDIA8hBgwGCyAEKALsAiIDQfwAaiEGIANB+ABqIQMMBQsCQAJAAkACQAJAAkACQCAEKALwAg4IAAECAwQEBQYACyAEKAKQAyIDQShqIQYgA0EkaiEDDAoLIAQoApADIgNBNGohBiADQTBqIQMMCQsgBCgC9AIiA0EQaiEGIANBDGohAwwICyAEKAL0AiIDQRBqIQYgA0EMaiEDDAcLIAQoAvQCIgNBBGohBgwGCyAEKAL0AiIDQRxqIQYgA0EYaiEDDAULIAQoAvQCIgNBzABqIQYgA0HIAGohAwwECyAVIQMgFCEGDAMLIBMhAyASIQYMAgsgGiEDIBYhBgwBCyAEKALkAiIDQSRqIQYgA0EgaiEDCyADKAIAIQcgBigCACEIIARB8ANqIAlBA0G965oBQT8QqQ1BAC0AwPGdARogBCgC9AMhA0EIEIUBIgZFDQ8gBiAINgIEIAYgBzYCACADKAIcIANBIGoiBygCABCeICADQSxqIgkoAgAgA0EwaigCABC+GiADKAIoIAkoAgAQnyAgCUIENwIAIANCATcCJCAHIAY2AgAgA0EBNgIcIARByANqQQhqIARB8ANqQQhqKAIANgIAIAQgBCkC8AM3A8gDIARByANqELcCIARByANqEOAMIApBCUYNBiAEQeABahCmBQwNCwJAIAQoArwBIgYgBCgCtAFHDQAgBEG0AWpB0OqaARCDFwsgBCgCuAEgBkEwbGoiAyAbOgAcIAMgHDYCGCADIAg2AhQgAyAdNgIQIAMgODcD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ADcDACADQTBqIAJBMGopAwA3AwAgA0EoaiACQShqKQMANwMAIANBIGogAkEgaikDADcDACADQRhqIAJBGGopAwA3AwAgA0EQaiACQRBqKQMANwMAIAQgAkEIaikDADcDACADIAIpAwA3AwAMCQsgACgCCEEDRw0HIAAoAgwiAygCAEEaRw0BIAJBwABqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCQEEyRg0HIAMQyQEgA0E4aiACQcAAakE4aikDADcDACADQTBqIAJBwABqQTBqKQMANwMAIANBKGogAkHAAGpBKGopAwA3AwAgA0EgaiACQcAAakEgaikDADcDACADQRhqIAJBwABqQRhqKQMANwMAIANBEGogAkHAAGpBEGopAwA3AwAgBCACQcAAakEIaikDADcDACADIAIpA0A3AwAMBwsCQCAAKAIgIgVBCGooAgAiA0UNACAFQQRqKAIAIgYgA0EGdGohAANAAkAgBkE4aigCACIDRQ0AIAZBNGooAgAhBCADQQxsIQcDQAJAAkAgBCgCACIDKAIAQRpHDQAgAkHAB2ogASgCACABKAIEIANBCGoiCBC1DCACKALAB0EyRg0BIAMQyQEgA0E4aiACQcAHakE4aikDADcDACADQTBqIAJBwAdqQTBqKQMANwMAIANBKGogAkHAB2pBKGopAwA3AwAgA0EgaiACQcAHakEgaikDADcDACADQRhqIAJBwAdqQRhqKQMANwMAIANBEGogAkHAB2pBEGopAwA3AwAgCCACQcAHakEIaikDADcDACADIAIpA8AHNwMADAELIAMgARBGCyAEQQxqIQQgB0F0aiIHDQALCyAGIAEQgwQgBkHAAGoiAyEGIAMgAEcNAAsLAkAgBUEUaigCACIDRQ0AIAVBEGooAgAhBCADQQxsIQcDQAJAAkAgBCgCACIDKAIAQRpHDQAgAkGAB2ogASgCACABKAIEIANBCGoiCBC1DCACKAKAB0EyRg0BIAMQyQEgA0E4aiACQYAHakE4aikDADcDACADQTBqIAJBgAdqQTBqKQMANwMAIANBKGogAkGAB2pBKGopAwA3AwAgA0EgaiACQYAHakEgaikDADcDACADQRhqIAJBgAdqQRhqKQMANwMAIANBEGogAkGAB2pBEGopAwA3AwAgCCACQYAHakEIaikDADcDACADIAIpA4AHNwMADAELIAMgARBGCyAEQQxqIQQgB0F0aiIHDQALCyAFKAIYQYCAgIB4Rg0IIAVBIGooAgAiBEUNCCAFQRxqKAIAIQMgBEEwbCEEA0AgAyABEG8gA0EwaiEDIARBUGoiBA0ADAkLCyADIAEQRgwFCyADIAEQRgwFCwJAIAAoAggiA0EFRg0AIANBA0cNAAJAIAAoAgwiAygCAEEaRw0AIAJBwARqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCwARBMkYNASADEMkBIANBOGogAkHABGpBOGopAwA3AwAgA0EwaiACQcAEakEwaikDADcDACADQShqIAJBwARqQShqKQMANwMAIANBIGogAkHABGpBIGopAwA3AwAgA0EYaiACQcAEakEYaikDADcDACADQRBqIAJBwARqQRBqKQMANwMAIAQgAkHABGpBCGopAwA3AwAgAyACKQPABDcDAAwBCyADIAEQRgsCQCAAKAI8IgNFDQACQCADKAIAQRpHDQAgAkGABGogASgCACABKAIEIANBCGoiBBC1DCACKAKABEEyRg0BIAMQyQEgA0E4aiACQYAEakE4aikDADcDACADQTBqIAJBgARqQTBqKQMANwMAIANBKGogAkGABGpBKGopAwA3AwAgA0EgaiACQYAEakEgaikDADcDACADQRhqIAJBgARqQRhqKQMANwMAIANBEGogAkGABGpBEGopAwA3AwAgBCACQYAEakEIaikDADcDACADIAIpA4AENwMADAELIAMgARBGCyAAKAI4IgNFDQUgACgCNCEEIANBDGwhBwNAAkACQCAEKAIAIgMoAgBBGkcNACACQcADaiABKAIAIAEoAgQgA0EIaiIIELUMIAIoAsADQTJGDQEgAxDJASADQThqIAJBwANqQThqKQMANwMAIANBMGogAkHAA2pBMGopAwA3AwAgA0EoaiACQcADakEoaikDADcDACADQSBqIAJBwANqQSBqKQMANwMAIANBGGogAkHAA2pBGGopAwA3AwAgA0EQaiACQcADakEQaikDADcDACAIIAJBwANqQQhqKQMANwMAIAMgAikDwAM3AwAMAQsgAyABEEYLIARBDGohBCAHQXRqIgcNAAwGCwsgACgCDCIERQ0EIAAoAgghAyAEQTBsIQQDQCADIAEQbyADQTBqIQMgBEFQaiIEDQAMBQsLAkAgACgCJCIDRQ0AAkAgAygCAEEaRw0AIAJBgANqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgANBMkYNASADEMkBIANBOGogAkGAA2pBOGopAwA3AwAgA0EwaiACQYADakEwaikDADcDACADQShqIAJBgANqQShqKQMANwMAIANBIGogAkGAA2pBIGopAwA3AwAgA0EYaiACQYADakEYaikDADcDACADQRBqIAJBgANqQRBqKQMANwMAIAQgAkGAA2pBCGopAwA3AwAgAyACKQOAAzcDAAwBCyADIAEQRgsgACgCNCIDRQ0DIAAoAjAhBCADQQxsIQcDQAJAAkAgBCgCACIDKAIAQRpHDQAgAkHAAmogASgCACABKAIEIANBCGoiCBC1DCACKALAAkEyRg0BIAMQyQEgA0E4aiACQcACakE4aikDADcDACADQTBqIAJBwAJqQTBqKQMANwMAIANBKGogAkHAAmpBKGopAwA3AwAgA0EgaiACQcACakEgaikDADcDACADQRhqIAJBwAJqQRhqKQMANwMAIANBEGogAkHAAmpBEGopAwA3AwAgCCACQcACakEIaikDADcDACADIAIpA8ACNwMADAELIAMgARBGCyAEQQxqIQQgB0F0aiIHDQAMBAsLAkAgACgCCEEDRw0AAkAgACgCDCIDKAIAQRpHDQAgAkGAAmogASgCACABKAIEIANBCGoiBBC1DCACKAKAAkEyRg0BIAMQyQEgA0E4aiACQYACakE4aikDADcDACADQTBqIAJBgAJqQTBqKQMANwMAIANBKGogAkGAAmpBKGopAwA3AwAgA0EgaiACQYACakEgaikDADcDACADQRhqIAJBgAJqQRhqKQMANwMAIANBEGogAkGAAmpBEGopAwA3AwAgBCACQYACakEIaikDADcDACADIAIpA4ACNwMADAELIAMgARBGCwJAIAAoAjwiA0UNAAJAIAMoAgBBGkcNACACQcABaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAsABQTJGDQEgAxDJASADQThqIAJBwAFqQThqKQMANwMAIANBMGogAkHAAWpBMGopAwA3AwAgA0EoaiACQcABakEoaikDADcDACADQSBqIAJBwAFqQSBqKQMANwMAIANBGGogAkHAAWpBGGopAwA3AwAgA0EQaiACQcABakEQaikDADcDACAEIAJBwAFqQQhqKQMANwMAIAMgAikDwAE3AwAMAQsgAyABEEYLIAAoAjgiA0UNAiAAKAI0IQQgA0EMbCEHA0ACQAJAIAQoAgAiAygCAEEaRw0AIAJBgAFqIAEoAgAgASgCBCADQQhqIggQtQwgAigCgAFBMkYNASADEMkBIANBOGogAkGAAWpBOGopAwA3AwAgA0EwaiACQYABakEwaikDADcDACADQShqIAJBgAFqQShqKQMANwMAIANBIGogAkGAAWpBIGopAwA3AwAgA0EYaiACQYABakEYaikDADcDACADQRBqIAJBgAFqQRBqKQMANwMAIAggAkGAAWpBCGopAwA3AwAgAyACKQOAATcDAAwBCyADIAEQRgsgBEEMaiEEIAdBdGoiBw0ADAMLCwJAIAAoAjAiBUEIaigCACIDRQ0AIAVBBGooAgAiBiADQQZ0aiEAA0ACQCAGQThqKAIAIgNFDQAgBkE0aigCACEEIANBDGwhBwNAAkACQCAEKAIAIgMoAgBBGkcNACACQcAGaiABKAIAIAEoAgQgA0EIaiIIELUMIAIoAsAGQTJGDQEgAxDJASADQThqIAJBwAZqQThqKQMANwMAIANBMGogAkHABmpBMGopAwA3AwAgA0EoaiACQcAGakEoaikDADcDACADQSBqIAJBwAZqQSBqKQMANwMAIANBGGogAkHABmpBGGopAwA3AwAgA0EQaiACQcAGakEQaikDADcDACAIIAJBwAZqQQhqKQMANwMAIAMgAikDwAY3AwAMAQsgAyABEEYLIARBDGohBCAHQXRqIgcNAAsLIAYgARCDBCAGQcAAaiIDIQYgAyAARw0ACwsCQCAFQRRqKAIAIgNFDQAgBUEQaigCACEEIANBDGwhBwNAAkACQCAEKAIAIgMoAgBBGkcNACACQYAGaiABKAIAIAEoAgQgA0EIaiIIELUMIAIoAoAGQTJGDQEgAxDJASADQThqIAJBgAZqQThqKQMANwMAIANBMGogAkGABmpBMGopAwA3AwAgA0EoaiACQYAGakEoaikDADcDACADQSBqIAJBgAZqQSBqKQMANwMAIANBGGogAkGABmpBGGopAwA3AwAgA0EQaiACQYAGakEQaikDADcDACAIIAJBgAZqQQhqKQMANwMAIAMgAikDgAY3AwAMAQsgAyABEEYLIARBDGohBCAHQXRqIgcNAAsLIAUoAhhBgICAgHhGDQEgBUEgaigCACIERQ0BIAVBHGooAgAhAyAEQTBsIQQDQCADIAEQbyADQTBqIQMgBEFQaiIEDQAMAgsLAkAgACgCSCIDRQ0AIAAoAkQiBiADQQZ0aiEFA0ACQAJAIAYoAgBBB0YNAAJAIAZBOGooAgAiA0UNACAGQTRqKAIAIQQgA0EMbCEHA0ACQAJAIAQoAgAiAygCAEEaRw0AIAJBwAVqIAEoAgAgASgCBCADQQhqIggQtQwgAigCwAVBMkYNASADEMkBIANBOGogAkHABWpBOGopAwA3AwAgA0EwaiACQcAFakEwaikDADcDACADQShqIAJBwAVqQShqKQMANwMAIANBIGogAkHABWpBIGopAwA3AwAgA0EYaiACQcAFakEYaikDADcDACADQRBqIAJBwAVqQRBqKQMANwMAIAggAkHABWpBCGopAwA3AwAgAyACKQPABTcDAAwBCyADIAEQRgsgBEEMaiEEIAdBdGoiBw0ACwsgBiABEJcDDAELAkAgBkE4aigCACIDRQ0AIAZBNGooAgAhBCADQQxsIQcDQAJAAkAgBCgCACIDKAIAQRpHDQAgAkGABWogASgCACABKAIEIANBCGoiCBC1DCACKAKABUEyRg0BIAMQyQEgA0E4aiACQYAFakE4aikDADcDACADQTBqIAJBgAVqQTBqKQMANwMAIANBKGogAkGABWpBKGopAwA3AwAgA0EgaiACQYAFakEgaikDADcDACADQRhqIAJBgAVqQRhqKQMANwMAIANBEGogAkGABWpBEGopAwA3AwAgCCACQYAFakEIaikDADcDACADIAIpA4AFNwMADAELIAMgARBGCyAEQQxqIQQgB0F0aiIHDQALCyAGLQAcQQJHDQACQAJAAkACQAJAAkAgBigCCCIDKAIADgcFAAECBAUDBQsgA0EMaigCACIERQ0EIANBCGooAgAhAyAEQShsIQQDQAJAIAMoAgBBB0YNACADIAEQlwMLIANBKGohAyAEQVhqIgQNAAwFCwsgAygCBCABEJcDDAMLIANBDGooAgAiBEUNAiADQQhqKAIAIQMgBEE4bCEEA0ACQAJAAkACQAJAIAMoAgAOAwABAgALIANBCGogARCJBAwDCyADQTBqKAIAIgdFDQIgBygCAEEaRw0BIAJBwAhqIAEoAgAgASgCBCAHQQhqIggQtQwgAigCwAhBMkYNAiAHEMkBIAdBOGogAkHACGpBOGopAwA3AwAgB0EwaiACQcAIakEwaikDADcDACAHQShqIAJBwAhqQShqKQMANwMAIAdBIGogAkHACGpBIGopAwA3AwAgB0EYaiACQcAIakEYaikDADcDACAHQRBqIAJBwAhqQRBqKQMANwMAIAggAkHACGpBCGopAwA3AwAgByACKQPACDcDAAwCCyADQQRqIAEQuAUMAQsgByABEEYLIANBOGohAyAEQUhqIgQNAAwDCwsCQCADKAIEIgMoAgBBGkcNACACQcAIaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAsAIQTJGDQIgAxDJASADQThqIAJBwAhqQThqKQMANwMAIANBMGogAkHACGpBMGopAwA3AwAgA0EoaiACQcAIakEoaikDADcDACADQSBqIAJBwAhqQSBqKQMANwMAIANBGGogAkHACGpBGGopAwA3AwAgA0EQaiACQcAIakEQaikDADcDACAEIAJBwAhqQQhqKQMANwMAIAMgAikDwAg3AwAMAgsgAyABEEYMAQsgAygCBCABEJcDAkAgAygCCCIDKAIAQRpHDQAgAkHACGogASgCACABKAIEIANBCGoiBBC1DCACKALACEEyRg0BIAMQyQEgA0E4aiACQcAIakE4aikDADcDACADQTBqIAJBwAhqQTBqKQMANwMAIANBKGogAkHACGpBKGopAwA3AwAgA0EgaiACQcAIakEgaikDADcDACADQRhqIAJBwAhqQRhqKQMANwMAIANBEGogAkHACGpBEGopAwA3AwAgBCACQcAIakEIaikDADcDACADIAIpA8AINwMADAELIAMgARBGCwJAIAYoAgwiAygCAEEaRw0AIAJBgAhqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgAhBMkYNASADEMkBIANBOGogAkGACGpBOGopAwA3AwAgA0EwaiACQYAIakEwaikDADcDACADQShqIAJBgAhqQShqKQMANwMAIANBIGogAkGACGpBIGopAwA3AwAgA0EYaiACQYAIakEYaikDADcDACADQRBqIAJBgAhqQRBqKQMANwMAIAQgAkGACGpBCGopAwA3AwAgAyACKQOACDcDAAwBCyADIAEQRgsg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IAo6AIkBIARBADoAiAEgBEGIAWoQlxohBgsgAEECNgIAIAAgBjYCBAwDCyAFIQlBASEFIAEoAoAFIAEoAoQFIAIgBhD1GiELCyAAIAk2AgggACALNgIECyAAIAU2AgALIARBsAFqJAAPCyAGIANB0P6DARCzEQALjSgBBX8jAEHAB2siAiQAAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOEwAaGgECAxoaBAUGBwgJChUUExIACyAAKAIMIgNFDRkgACgCCCEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwaCwsgACgCBCIDKAIAQRpHDQ8gAiABKAIAIAEoAgQgA0EIaiIEELUMAkAgAigCAEEyRg0AIAMQyQEgA0E4aiACQThqKQMANwMAIANBMGogAkEwaikDADcDACADQShqIAJBKGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgBCACQQhqKQMANwMAIAMgAikDADcDAAsgACgCCCEADBcLIAAoAgwiAEUNFyAAKAIAQRpHDQ0gAkHABGogASgCACABKAIEIABBCGoiARC1DCACKALABEEyRg0XIAAQyQEgAEE4aiACQcAEakE4aikDADcDACAAQTBqIAJBwARqQTBqKQMANwMAIABBKGogAkHABGpBKGopAwA3AwAgAEEgaiACQcAEakEgaikDADcDACAAQRhqIAJBwARqQRhqKQMANwMAIABBEGogAkHABGpBEGopAwA3AwAgASACQcAEakEIaikDADcDACAAIAIpA8AENwMADBcLIAAoAighAAwVCyAAKAIEIgMoAgBBGkcNCiACQcAAaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAkBBMkYNEyADEMkBIANBOGogAkHAAGpBOGopAwA3AwAgA0EwaiACQcAAakEwaikDADcDACADQShqIAJBwABqQShqKQMANwMAIANBIGogAkHAAGpBIGopAwA3AwAgA0EYaiACQcAAakEYaikDADcDACADQRBqIAJBwABqQRBqKQMANwMAIAQgAkHAAGpBCGopAwA3AwAgAyACKQNANwMADBMLIAAoAhAiAygCAEEaRw0IIAJBgAFqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgAFBMkYNESADEMkBIANBOGogAkGAAWpBOGopAwA3AwAgA0EwaiACQYABakEwaikDADcDACADQShqIAJBgAFqQShqKQMANwMAIANBIGogAkGAAWpBIGopAwA3AwAgA0EYaiACQYABakEYaikDADcDACADQRBqIAJBgAFqQRBqKQMANwMAIAQgAkGAAWpBCGopAwA3AwAgAyACKQOAATcDAAwRCyAAKAIEIgAoAgBBGkcNBiACQcABaiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAsABQTJGDRMgABDJASAAQThqIAJBwAFqQThqKQMANwMAIABBMGogAkHAAWpBMGopAwA3AwAgAEEoaiACQcABakEoaikDADcDACAAQSBqIAJBwAFqQSBqKQMANwMAIABBGGogAkHAAWpBGGopAwA3AwAgAEEQaiACQcABakEQaikDADcDACABIAJBwAFqQQhqKQMANwMAIAAgAikDwAE3AwAMEwsCQCAAKAIEIgQoAlAiA0UNACAEKAJMIQAgA0EwbCEDA0AgACABEG8gAEEwaiEAIANBUGoiAw0ACwsCQAJAAkAgBCgCAEF5ag4CAQIACyAEIAEQlwMLIAQoAjAiA0UNACAEKAIsIQAgA0EwbCEDA0AgACABEG8gAEEwaiEAIANBUGoiAw0ACwsgBCgCYEGAgICAeEYNEiAEKAJoIgNFDRIgBCgCZCEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwTCwsgACgCBCIDKAIAQRpHDQMgAkGAAmogASgCACABKAIEIANBCGoiBBC1DAJAIAIoAoACQTJGDQAgAxDJASADQThqIAJBgAJqQThqKQMANwMAIANBMGogAkGAAmpBMGopAwA3AwAgA0EoaiACQYACakEoaikDADcDACADQSBqIAJBgAJqQSBqKQMANwMAIANBGGogAkGAAmpBGGopAwA3AwAgA0EQaiACQYACakEQaikDADcDACAEIAJBgAJqQQhqKQMANwMAIAMgAikDgAI3AwALIAAoAgghAAwQCyAAKAIEIgMoAgBBGkcNASACQcACaiABKAIAIAEoAgQgA0EIaiIEELUMAkAgAigCwAJBMkYNACADEMkBIANBOGogAkHAAmpBOGopAwA3AwAgA0EwaiACQcACakEwaikDADcDACADQShqIAJBwAJqQShqKQMANwMAIANBIGogAkHAAmpBIGopAwA3AwAgA0EYaiACQcACakEYaikDADcDACADQRBqIAJBwAJqQRBqKQMANwMAIAQgAkHAAmpBCGopAwA3AwAgAyACKQPAAjcDAAsgACgCCCEADA8LIAAoAgQiA0ECRg0LAkACQCADQQFxRQ0AIAAoAggiAygCAEEaRw0BIAJBgAZqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgAZBMkYNDSADEMkBIANBOGogAkGABmpBOGopAwA3AwAgA0EwaiACQYAGakEwaikDADcDACADQShqIAJBgAZqQShqKQMANwMAIANBIGogAkGABmpBIGopAwA3AwAgA0EYaiACQYAGakEYaikDADcDACADQRBqIAJBgAZqQRBqKQMANwMAIAQgAkGABmpBCGopAwA3AwAgAyACKQOABjcDAAwNCyAAKAIIIgMoAggiBEUNDCADKAIEIgMgBEE4bGohBQNAIAMgARCXAwJAIANBMGooAgAiBEUNAAJAIAQoAgBBGkcNACACQYAHaiABKAIAIAEoAgQgBEEIaiIGELUMIAIoAoAHQTJGDQEgBBDJASAEQThqIAJBgAdqQThqKQMANwMAIARBMGogAkGAB2pBMGopAwA3AwAgBEEoaiACQYAHakEoaikDADcDACAEQSBqIAJBgAdqQSBqKQMANwMAIARBGGogAkGAB2pBGGopAwA3AwAgBEEQaiACQYAHakEQaikDADcDACAGIAJBgAdqQQhqKQMANwMAIAQgAikDgAc3AwAMAQsgBCABEEYLIANBOGoiAyAFRw0ADA0LCyADIAEQRgwLCyADIAEQRiAAKAIIIQAMDQsgAyABEEYgACgCCCEADAwLIAAgARBGDAwLIAMgARBGDAgLIAMgARBGDAgLIAAgARBGDAkLIAMgARBGIAAoAgghAAwHCwJAIAAoAgQiACgCAEEaRw0AIAJBgARqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCgARBMkYNCCAAEMkBIABBOGogAkGABGpBOGopAwA3AwAgAEEwaiACQYAEakEwaikDADcDACAAQShqIAJBgARqQShqKQMANwMAIABBIGogAkGABGpBIGopAwA3AwAgAEEYaiACQYAEakEYaikDADcDACAAQRBqIAJBgARqQRBqKQMANwMAIAEgAkGABGpBCGopAwA3AwAgACACKQOABDcDAAwICyAAIAEQRgwHCyAAQQhqIAEQxQEMBgsCQAJAAkACQCAAKAIEDgMAAgEACyAAKAIIIgMoAggiBEUNAiADKAIEIgMgBEE4bGohBQNAIAMgARCXAwJAIANBMGooAgAiBEUNAAJAIAQoAgBBGkcNACACQYAHaiABKAIAIAEoAgQgBEEIaiIGELUMIAIoAoAHQTJGDQEgBBDJASAEQThqIAJBgAdqQThqKQMANwMAIARBMGogAkGAB2pBMGopAwA3AwAgBEEoaiACQYAHakEoaikDADcDACAEQSBqIAJBgAdqQSBqKQMANwMAIARBGGogAkGAB2pBGGopAwA3AwAgBEEQaiACQYAHakEQaikDADcDACAGIAJBgAdqQQhqKQMANwMAIAQgAikDgAc3AwAMAQsgBCABEEYLIANBOGoiAyAFRw0ADAMLCyAAKAIIIAEQgwQMAQsgACgCCCIDKAIIIgRFDQAgAygCBCIDIARBOGxqIQUDQCADIAEQlwMCQCADQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkGAB2ogASgCACABKAIEIARBCGoiBhC1DCACKAKAB0EyRg0BIAQQyQEgBEE4aiACQYAHakE4aikDADcDACAEQTBqIAJBgAdqQTBqKQMANwMAIARBKGogAkGAB2pBKGopAwA3AwAgBEEgaiACQYAHakEgaikDADcDACAEQRhqIAJBgAdqQRhqKQMANwMAIARBEGogAkGAB2pBEGopAwA3AwAgBiACQYAHakEIaikDADcDACAEIAIpA4AHNwMADAELIAQgARBGCyADQThqIgMgBUcNAAsLAkAgACgCDCIDKAIAQRpHDQAgAkHAA2ogASgCACABKAIEIANBCGoiBBC1DAJAIAIoAsADQTJGDQAgAxDJASADQThqIAJBwANqQThqKQMANwMAIANBMGogAkHAA2pBMGopAwA3AwAgA0EoaiACQcADakEoaikDADcDACADQSBqIAJBwANqQSBqKQMANwMAIANBGGogAkHAA2pBGGopAwA3AwAgA0EQaiACQcADakEQaikDADcDACAEIAJBwANqQQhqKQMANwMAIAMgAikDwAM3AwALIAAoAhAhAAwFCyADIAEQRiAAKAIQIQAMBAsCQAJAAkACQCAAKAIEDgMAAgEACyAAKAIIIgMoAggiBEUNAiADKAIEIgMgBEE4bGohBQNAIAMgARCXAwJAIANBMGooAgAiBEUNAAJAIAQoAgBBGkcNACACQYAHaiABKAIAIAEoAgQgBEEIaiIGELUMIAIoAoAHQTJGDQEgBBDJASAEQThqIAJBgAdqQThqKQMANwMAIARBMGogAkGAB2pBMGopAwA3AwAgBEEoaiACQYAHakEoaikDADcDACAEQSBqIAJBgAdqQSBqKQMANwMAIARBGGogAkGAB2pBGGopAwA3AwAgBEEQaiACQYAHakEQaikDADcDACAGIAJBgAdqQQhqKQMANwMAIAQgAikDgAc3AwAMAQsgBCABEEYLIANBOGoiAyAFRw0ADAMLCyAAKAIIIAEQgwQMAQsgACgCCCIDKAIIIgRFDQAgAygCBCIDIARBOGxqIQUDQCADIAEQlwMCQCADQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkGAB2ogASgCACABKAIEIARBCGoiBhC1DCACKAKAB0EyRg0BIAQQyQEgBEE4aiACQYAHakE4aikDADcDACAEQTBqIAJBgAdqQTBqKQMANwMAIARBKGogAkGAB2pBKGopAwA3AwAgBEEgaiACQYAHakEgaikDADcDACAEQRhqIAJBgAdqQRhqKQMANwMAIARBEGogAkGAB2pBEGopAwA3AwAgBiACQYAHakEIaikDADcDACAEIAIpA4AHNwMADAELIAQgARBGCyADQThqIgMgBUcNAAsLAkAgACgCDCIDKAIAQRpHDQAgAkGAA2ogASgCACABKAIEIANBCGoiBBC1DAJAIAIoAoADQTJGDQAgAxDJASADQThqIAJBgANqQThqKQMANwMAIANBMGogAkGAA2pBMGopAwA3AwAgA0EoaiACQYADakEoaikDADcDACADQSBqIAJBgANqQSBqKQMANwMAIANBGGogAkGAA2pBGGopAwA3AwAgA0EQaiACQYADakEQaikDADcDACAEIAJBgANqQQhqKQMANwMAIAMgAikDgAM3AwALIAAoAhAhAAwECyADIAEQRiAAKAIQIQAMAwsCQCAAKAIYIgNFDQACQCADKAIAQRpHDQAgAkHABWogASgCACABKAIEIANBCGoiBBC1DCACKALABUEyRg0BIAMQyQEgA0E4aiACQcAFakE4aikDADcDACADQTBqIAJBwAVqQTBqKQMANwMAIANBKGogAkHABWpBKGopAwA3AwAgA0EgaiACQcAFakEgaikDADcDACADQRhqIAJBwAVqQRhqKQMANwMAIANBEGogAkHABWpBEGopAwA3AwAgBCACQcAFakEIaikDADcDACADIAIpA8AFNwMADAELIAMgARBGCwJAAkAgACgCHCIDRQ0AIAMoAgBBGkcNASACQYAFaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAoAFQTJGDQAgAxDJASADQThqIAJBgAVqQThqKQMANwMAIANBMGogAkGABWpBMGopAwA3AwAgA0EoaiACQYAFakEoaikDADcDACADQSBqIAJBgAVqQSBqKQMANwMAIANBGGogAkGABWpBGGopAwA3AwAgA0EQaiACQYAFakEQaikDADcDACAEIAJBgAVqQQhqKQMANwMAIAMgAikDgAU3AwALIAAoAgwhAAwDCyADIAEQRiAAKAIMIQAMAgsgACgCDCIDRQ0CIAAoAggiBCADQRhsaiEFA0ACQCAEKAIUIgBFDQACQCAAKAIAQRpHDQAgAkHABmogASgCACABKAIEIABBCGoiAxC1DCACKALABkEyRg0BIAAQyQEgAEE4aiACQcAGakE4aikDADcDACAAQTBqIAJBwAZqQTBqKQMANwMAIABBKGogAkHABmpBKGopAwA3AwAgAEEgaiACQcAGakEgaikDADcDACAAQRhqIAJBwAZqQRhqKQMANwMAIABBEGogAkHABmpBEGopAwA3AwAgAyACQcAGakEIaikDADcDACAAIAIpA8AGNwMADAELIAAgARBGCwJAIARBCGooAgAiA0UNACAEQQRqKAIAIQAgA0EwbCEDA0AgACABEG8gAEEwaiEAIANBUGoiAw0ACwsgBEEYaiIEIAVGDQMMAAsLIAAoAgggARBvIAAoAhQiAA0ACwsgAkHAB2okAAuRJwIbfwh+IwBB4A5rIgQkACABvSEfAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAGZRAAAAAAAAPB/Yg0AQQMhBQwBCyAfQoCAgICAgID4/wCDIiBCgICAgICAgPj/AFENBSAfQv////////8HgyIhQoCAgICAgIAIhCAfQgGGQv7///////8PgyAfQjSIp0H/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CCACQQE2AgAgAiAGIAdrNgIEDCALIAYgB0HY8oMBEKMgAAtBAEEAQezhgwEQsxEACyANIAtBjOKDARCzEQALIAEgC0G84YMBELMRAAsgA0EANgIIQQBBlLeYASADQQRqIANBCGpB3OGDARCZGQALIAEgBkG48oMBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAYgB0HY8oMBEKMgAAtBAEEAQezhgwEQsxEACyAEIAxBjOKDARCzEQALIAEgDEG84YMBELMRAAsgA0EANgIIQQBBlLeYASADQQRqIANBCGpB3OGDARCZGQALIAEgB0G48oMBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAYgB0HY8oMBEKMgAAtBAEEAQezhgwEQsxEACyANIAtBjOKDARCzEQALIAEgC0G84YMBELMRAAsgA0EANgIIQQBBlLeYASADQQRqIANBCGpB3OGDARCZGQALIAEgBkG48oMBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAYgB0HY8oMBEKMgAAtBAEEAQezhgwEQsxEACyAEIAxBjOKDARCzEQALIAEgDEG84YMBELMRAAsgA0EANgIIQQBBlLeYASADQQRqIANBCGpB3OGDARCZGQALIAEgB0G48oMBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAJBADYCGCACIAY2AhQgAkEBNgIQIAIgBDYCICACQQA2AgALAkAgBCAFTw0AIABBLGohDiABKAIMIQ8gASgCCCEQA0ACQAJAAkACQAJAAkACQAJAIAQgD08NAAJAAkAgBiAAKAIIIg1JDQAgBiEIDAELIA4gECAEai0AAGotAAAiAUECaiERIAAoAgQhCSAGIQgDQAJAAkACQAJAIAkgCEECdGooAgAiBkH/AXFBgn5qDgICAAELIBEgCGoiBiANTw0GIAkgBkECdGooAgAiBkEBRg0CDAwLIA0gCEECaiIKSQ0GIAZBAnZBP3EgBkEDcUEAR2oiEiANIAprIgZLDQcgEkECdCEHIAkgCkECdGohC0F/IQwC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AmohAQwBCyAAKAIoQQJqIQELIAEgB08NAwJAAkAgBiABQQJ0aigCACILQX9MDQACQCABQQFqIgEgB08NACAGIAFBAnRqKAIAIQEMAgsgASAHQczhgwEQsxEACyALQf////8HcSEBCyABIAAoAhQiBk8NBCAEQQFqIgYgACgCECABQQJ0aigCACIHSQ0FIAIgATYCDCACIAY2AgggAkEBNgIAIAIgBiAHazYCBAsgA0EgaiQADwsgBiANQcjygwEQoyAAC0EAQQBB7OGDARCzEQALIAEgB0G84YMBELMRAAsgASAGQbjygwEQsxEACyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAvoMQECfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAygCACIAQTQgAEG9gYCAeEgbQf8BcQ69AQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGf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ARCzEQALIAkgB0GMroABELMRAAsgAEEANgIADAsLAkACQCAGQQFxDQBBACEIAkACQAJAAkACQCABKALYAiIJDQAMAQsgCSABKALUAksNACADQSBqIAEgCRCbGSADIAMpAyA3AjggA0EYaiADQThqQQAQmAwgAygCGEEBcUUNAyADKAIcIhMgASgCOCIHTw0CIAQgASgCNCATQQJ0aigCACIHSQ0BIAQgB2shEEEBIQgLAkAgBCAFSQ0AIAQhFAwFCyACKAIMIg4gBCAOIARLGyEKIAFByABqIQ8gAigCCCERIAQhFANAAkACQAJAAkACQCAEIApGDQACQAJAAkACQCAJIAEoAggiDE8NACAPIBEgBGotAAAiB2ohDSABKAIEIQYDQCAGIAlBFGxqIhIhCQJAAkACQCASKAIEIgJFDQAgAiANLQAAaiIJIAEoAiAiAk8NBiABKAIcIAlBAnRqIQkMAQsDQCAJKAAAIglFDQIgCSABKAIUIgJPDQcgASgCECAJQQlsaiICQQVqIQkgByACLQAAIgtLDQALIAcgC0cNASACQQFqIQkLIAkoAAAiCUEBRw0DCyASKAIMIgkgDEkNAAsLIAkgDEGs44MBELMRAAsgCSABKALQAksNBiAJRQ0MIAkgASgC1AJLDQYgCSAMTw0DAkACQCAGIAlBFGxqKAIIIgJFDQAgAiABKAIsIgdJDQEgAiAHQZzjgwEQsxEAC0H48oMBEJsgAAsgASgCKCACQQN0aigCACITIAEoAjgiAk8NBCAEQQFqIhQgASgCNCATQQJ0aigCACICSQ0FIBQgAmshEEEBIQgMBgsgCSACQbzjgwEQsxEACyAJIAJBjOODARCzEQALIAogDkGMnYABELMRAAsgCSAMQYyugAEQsxEACyATIAJB6PKDARCzEQALIANBADYCSCADQQE2AjwgA0HE5oMBNgI4IANCBDcCQCADQThqQczmgwEQhRsACyAEQQFqIgQgBUYNBQwACwsgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIBMgB0Ho8oMBELMRAAtB+PKDARCbIAALAkACQAJAAkAgASgC2AIiCUUNACAJIAEoAtQCSw0AIANBEGogASAJEJsZIAMgAykDEDcCOCADQQhqIANBOGpBABCYDCADKAIIQQFxRQ0DIAMoAgwiCSABKAI4IgJPDQIgBCABKAI0IAlBAnRqKAIAIgFJDQEgACAJNgIMIAAgBDYCCCAAQQE2AgAgACAEIAFrNgIEDA8LAkAgBCAFTw0AIAIoAgwiEyAEIBMgBEsbIQogAUHIAGohDyACKAIIIREDQAJAAkACQAJAAkACQAJAAkACQCAEIApGDQACQCAJIAEoAggiDE8NACAPIBEgBGotAAAiB2ohDSABKAIEIQYDQCAGIAlBFGxqIhIhCQJAAkACQCASKAIEIgJFDQAgAiANLQAAaiIJIAEoAiAiAk8NByABKAIcIAlBAnRqIQkMAQsDQCAJKAAAIglFDQIgCSABKAIUIgJPDQggASgCECAJQQlsaiICQQVqIQkgByACLQAAIgtLDQALIAcgC0cNASACQQFqIQkLIAkoAAAiCUEBRw0ECyASKAIMIgkgDEkNAAsLIAkgDEGs44MBELMRAAsgCiATQYydgAEQsxEACyAJIAEoAtACSw0GIAlFDQIgCSABKALUAksNBiAJIAxPDQMCQAJAIAYgCUEUbGooAggiCUUNACAJIAEoAiwiAkkNASAJIAJBnOODARCzEQALQfjygwEQmyAACyABKAIoIAlBA3RqKAIAIgkgASgCOCICTw0EIARBAWoiAiABKAI0IAlBAnRqKAIAIgFJDQUgACAJNgIMIAAgAjYCCCAAQQE2AgAgACACIAFrNgIEDBcLIAkgAkG844MBELMRAAsgCSACQYzjgwEQsxEACyAAQQA2AgAMFAsgCSAMQYyugAEQsxEACyAJIAJB6PKDARCzEQALIANBADYCSCADQQE2AjwgA0HE5oMBNgI4IANCBDcCQCADQThqQczmgwEQhRsACyAEQQFqIgQgBUcNAAsLIABBADYCAAwOCyADQQA2AkggA0EBNgI8IANBxOaDATYCOCADQgQ3AkAgA0E4akHM5oMBEIUbAAsgCSACQejygwEQsxEAC0H48oMBEJsgAAsgACATNgIMIAAgFDYCCCAAIBA2AgQgACAINgIADAoLAkACQAJAAkACQCABKALYAiIJRQ0AIAkgASgC1AJLDQAgA0EoaiABIAkQmxkCQAJAIAMoAiwiCUUNACAJIAMoAigiAigCLCIHSQ0BIAkgB0Gc44MBELMRAAtB+PKDARCbIAALIAIoAiggCUEDdGooAgAiCSABKAI4IgJPDQIgBCABKAI0IAlBAnRqKAIAIgFJDQEgACAJNgIMIAAgBDYCCCAAQQE2AgAgACAEIAFrNgIEDA4LIANBOGogByABKAJAIgsoAghBf2pBeHFqQQhqIAIoAggiDyACKAIMIgogBCAFIAsoAhAREwACQCADKAI4IgIOAwQDAAQLAkAgAygCPCIEIAVPDQAgAUHIAGohEQNAAkACQAJAAkACQAJAAkACQAJAIAQgCk8NAAJAIAkgASgCCCIMTw0AIBEgDyAEai0AACIHaiENIAEoAgQhBgNAIAYgCUEUbGoiEiEJAkACQAJAIBIoAgQiAkUNACACIA0tAABqIgkgASgCICICTw0HIAEoAhwgCUECdGohCQwBCwNAIAkoAAAiCUUNAiAJIAEoAhQiAk8NCCABKAIQIAlBCWxqIgJBBWohCSAHIAItAAAiC0sNAAsgByALRw0BIAJBAWohCQsgCSgAACIJQQFHDQQLIBIoAgwiCSAMSQ0ACwsgCSAMQazjgwEQsxEACyAEIApBjJ2AARCzEQALIAkgASgC0AJLDQUgCUUNAgJAAkAgCSABKALUAksNACAJIAxPDQUCQAJAIAYgCUEUbGooAggiCUUNACAJIAEoAiwiAkkNASAJIAJBnOODARCzEQALQfjygwEQmyAACyABKAIoIAlBA3RqKAIAIgkgASgCOCICTw0GIARBAWoiAiABKAI0IAlBAnRqKAIAIgFPDQEgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIANBOGogASgCPCABKAJAIgIoAghBf2pBeHFqQQhqIA8gCiAEIAUgAigCEBETAAJAIAMoAjhFDQAgAygCPCICIARNDQcMCAsgAEEANgIADBcLIAAgCTYCDCAAIAI2AgggAEEBNgIAIAAgAiABazYCBAwWCyAJIAJBvOODARCzEQALIAkgAkGM44MBELMRAAsgAEEANgIADBMLIAkgDEGMroABELMRAAsgCSACQejygwEQsxEACyAEQQFqIQILIAIhBCACIAVJDQALCyAAQQA2AgAMDQsgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIAkgAkHo8oMBELMRAAsgACADKQI8NwIEIABBDGogA0E4akEMaigCADYC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IANBwABqIAIgA0EoakHjxJsBQQEQuAwCQCADLQBAQQRGDQAgAykDQCINQv8Bg0IEUg0DCyADQShqIAFBCGogAhCyEwJAIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQMLIAEoAiAhAQwACwsCQCACLQBdDQAgA0EoaiACEOIOIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQELIANBKGogASACEOICIAMtAChBBEYNCCADKQMoIg1C/wGDQgRRDQgLIA1C/wGDQgRRDQcgACANNwIADAgLIAEoAgQiASgCHCEEIANBKGogAiABKAIYIglBABCVAgJAAkAgAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsCQCABLQAsRQ0AIANBADYCKCADQRhqIAIgA0EoakHuoZsBQQcQuQwCQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUg0CCyADQShqIAIQ4g4gAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsCQCABLQAtRQ0AIANBADYCKCADQRhqIAIgA0EoakHelpsBQQUQuQwCQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUg0CCyADQShqIAIQ4g4gAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsgA0EANgJAIANBKGogAiADQcAAakHMoJsBQQQQuQwCQCADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0BCyADQShqIAIQ4g4CQCADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0BCyADQShqIAEgAhCyEwJAIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQELAkAgAi0AXQ0AIANBKGogAhDiDiADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0BCyADQShqIAIgA0HAAGpB16ybAUEBELgMAkAgAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsgASgCJCEFIANBKGogAiAJIAEoAigiDEHRACAMENYXAkACQAJAIAMtAChBBUYNACADKQMoIQ0MAQsgA0EoahCEHwJAAkACQAJAIAxFDQACQCACLQBdDQAgA0EoaiACEIsSIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQULIANBADoATyACLQBdRQ0BDAILIAItAF0NAiADQShqIAIQixIgAy0AKEEERg0CIAMpAygiDUL/AYNCBFENAgwDCyACIAIoAjhBAWo2AjgLIANBADoAOCAFQShqIQEgDCEFQQAhC0EAIQYDQAJAAkACQAJAAkACQCAFRQ0AIAFBfGooAgAhCiADQShqIAIgBEHRACALIAYgA0E4aiADQc8AahChBQJAIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQkLIANBKGogAiABQXhqKAIAQQAQlQICQCADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0FCyABQWBqIQsgAUFYaigCAEEBRw0BIANBKGogCyACEIcBIAMtAChBBEYNAyADKQMoIg1C/wGDQgRSDQIMAwsgA0EoaiACIAkgBEHRACALIAYQuQIgAy0AKEEERg0GIAMpAygiDUL/AYNCBFINBwwGCyADQShqIAsgAhCyEyADLQAoQQRGDQEgAykDKCINQv8Bg0IEUQ0BCyANQv8Bg0IEUg0BCyABKAIARQ0BAkAgAi0AXQ0AIANBKGogAhDiDiADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0BCyADQQA2AiggA0EYaiACIANBKGpB+5abAUEBELgMAkAgAy0AGEEERg0AIAMpAxgiDUL/AYNCBFINAQsCQCACLQBdDQAgA0EoaiACEOIOIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQELIANBKGogASACENogIAMtAChBBEYNASADKQMoIg1C/wGDQgRRDQELIA1C/wGDQgRSDQMLAkACQCADLQBPDQAgA0EBOgBPDAELIAIoAlRFDQAgA0EoaiACIApBABDUAyADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0DCwJAIAMtADhFDQAgAiACKAI4QX9qNgI4IANBADoAOAsgBUF/aiEFIAFBMGohAUEBIQsgCiEGDAALCyADQShqIAIgBCAMRUHRABDAECADLQAoQQRGDQEgAykDKCINQv8Bg0IEUQ0BCyANQv8Bg0IEUg0BCyADQShqIAIgA0HAAGpBpsSbAUEBELgMIAMtAChBBEYNByADKQMoIg1C/wGDQgRRDQcLIA1C/wGDQgRRDQYgACANNwIADAcLIANBwABqIAIgASgCBCIBKAIAQQAQlQICQAJAIAMtAEBBBEYNACADKQNAIg1C/wGDQgRSDQELAkAgAS0AKEUNACADQQA2AkAgA0EYaiACIANBwABqQe6hmwFBBxC5DAJAIAMtABhBBEYNACADKQMYIg1C/wGDQgRSDQILIANBwABqIAIQ4g4gAy0AQEEERg0AIAMpA0AiDUL/AYNCBFINAQsgA0EANgIoIANBwABqIAIgA0EoakHooJsBQQQQuQwCQCADLQBAQQRGDQAgAykDQCINQv8Bg0IEUg0BCyADQcAAaiACEOIOAkAgAy0AQEEERg0AIAMpA0AiDUL/AYNCBFINAQsgA0HAAGogAUEIaiACELITAkAgAy0AQEEERg0AIAMpA0AiDUL/AYNCBFINAQsCQCABKAIgRQ0AIANBwABqIAFBIGogAhDzBCADLQBAQQRGDQAgAykDQCINQv8Bg0IEUg0BCwJAIAItAF0NACADQcAAaiACEOIOIAMtAEBBBEYNACADKQNAIg1C/wGDQgRSDQELIANBwABqIAIgA0EoakH7lpsBQQEQuAwCQCADLQBAQQRGDQAgAykDQCINQv8Bg0IEUg0BCwJAIAItAF0NACADQcAAaiACEOIOIAMtAEBBBEYNACADKQNAIg1C/wGDQgRSDQELIANBwABqIAFBJGogAhBPAkAgAy0AQEEERg0AIAMpA0AiDUL/AYNCBFINAQsgA0HAAGogAiADQShqELoMIAMtAEBBBEYNBiADKQNAIg1C/wGDQgRRDQYLIA1C/wGDQgRRDQUgACANNwIADAYLIANBKGogAUEEaiACEMIDIAMtAChBBEYNBCADKQMoIg1C/wGDQgRRDQQgACANNwIADAULIANBKGogAUEEaiACEMYHIAMtAChBBEYNAyADKQMoIg1C/wGDQgRRDQMgACANNwIADAQLIANBKGogAiABKAIEEOcDAkAgAy0AKEEERg0AIAMpAygiDUL/AYNCBFENACAAIA03AgAMBAsgA0EANgIoIANBwABqIAIgA0EoahC6DAJAIAMtAEBBBEYNACADKQNAIg1C/wGDQgRRDQAgACANNwIADAQLIANBEGogARD3CyADKAIUIgFFDQIgA0EoaiACIAEQtBogAy0AKEEERg0CIAMpAygiDUL/AYNCBFENAiAAIA03AgAMAwsCQCABLQAkRQ0AIANBADYCKCADQRhqIAIgA0EoakHuoZsBQQcQuQwCQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUg0CCyADQShqIAIQ4g4gAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsCQCAGLQBFRQ0AIANBADYCKCADQRhqIAIgA0EoakGSuJsBQQUQuQwCQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUg0CCyADQShqIAIQ4g4gAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsgA0EANgJAIANBKGogAiADQcAAakHpypsBQQgQuQwCQCADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0BCwJAAkAgBi0ARA0AIANBKGogAhDiDiADLQAoQQRGDQEgAykDKCINQv8Bg0IEUQ0BDAILIANBKGogAiADQcAAakG5l5sBQQEQuAwCQCADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0CCyACLQBdDQAgA0EoaiACEOIOIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQELIANBKGogByACELITAkAgAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsgA0EoaiACIAYQlwUCQCADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0BCyACKAJIRQ0BIANBKGogAhCHESADLQAoQQRGDQEgAykDKCINQv8Bg0IEUQ0BCyANQv8Bg0IEUQ0AIAAgDTcCAAwBCyAAQQQ6AAALIANB0ABqJAAL7SMCEH8BfiMAQRBrIgYkAAJAIAVFDQAgBUECdCIHRQ0AIARBACAH/AsACyACQQA2AgggAkEAIAMoAhQiCCADKAIQIglrIgcgByAISxsiCkEBaiIHNgIYAkACQAJAAkACQAJAAkACQAJAIAEoAhgiCzUC0AIgB61+IhZCIIinDQAgFqciByABKAIEQQN0QYCAgAEgASgCABtLDQICQCAHQQV2IgwgB0EfcUEARyINaiIHIAIoAhQiCksNACACIAc2AhQgByEKCwJAIApFDQAgCkECdCIORQ0AIAIoAhBBACAO/AsACyACQQxqIQ4CQCAHIApNDQAgCiEPAkAgByAKayIQIA4oAgAgCmtNDQAgDiAKIBBBBEEEEKAXIAIoAhQhDwsgAigCECAPQQJ0aiEHAkAgEEECSQ0AIApBf3MgDCANamohCgNAIAdBADYCACAHQQRqIQcgCkF/aiIKDQALIA8gEGpBf2ohDwsgB0EANgIAIAIgD0EBajYCFAsgCSAISw0EIAMoAgAOAwEFAwELIAZBAjoABCAGIAo2AgggBkEEahCXGiEHDAYLIAsoArACIhEgCygCtAJGDQRBzIWEASABQQhqIAEtABRBA0YbIgcoAgBBCGohEiAHKAIEIRMgAygCDCEQIAMoAgghDCAHLQAMQf8BcUECRiEUIAkhFQJAAkADQAJAIBQNACAGQQRqIBIgEygCCEF/akF4cWogDCAQIBUgCCATKAIQERMAIAYoAgRFDQIgBigCCCEVCwJAIAIoAggiByACKAIARw0AIAJBtKSEARDqFQsgAiAHQQFqIgM2AgggAigCBCAHQQxsaiIHIBU2AgggByARNgIEIAdBADYCAAJAIANFDQADQCACIANBf2oiAzYCCCACKAIEIANBDGxqIgcoAgAiAUECRg0BIAcoAgghCiAHKAIEIQcCQAJAIAFBAXFFDQAgByAFTw0GIAQgB0ECdGogCjYCAAwBCyAGIAo2AgACQANAIA4gByAKIAlrEIASRQ0BAkACQAJAAkACQAJAAkAgByALKALQAiIKTw0AAkACQAJAAkACQAJAAkACQCALKALMAiAHQRRsaiIDKAIADgkGAwQABQECEAcGCyADKAIEIQcgBigCACEKAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMoAghoDhIAAQIDBAUGBwgJCgsMDQ4PEBEACyAKRQ0eDCALIAogEEYNHQwfCyAKRQ0cAkAgCkF/aiIKIBBPDQAgDCAKai0AACALLQDgAkYNHQwfCyAKIBBBhNKEARCzEQALIAogEEYNGwJAIAogEE8NACAMIApqLQAAIAstAOACRg0cDB4LIAogEEGU0oQBELMRAAsgCkUNGgJAAkAgCkF/aiIDIBBPDQAgDCADai0AAEF2ag4EHB4eAR4LIAMgEEGk0oQBELMRAAsgCiAQTw0aIAwgCmotAABBCkcNGgwcCyAKIBBGDRkCQAJAIAogEE8NACAMIApqIgMtAABBdmoOBAEdHRsdCyAKIBBBtNKEARCzEQALIApFDRkgA0F/ai0AAEENRw0ZDBsLAkACQAJAIApFDQAgCkF/aiIDIBBPDQEgDCADai0AAEHU54QBai0AACEDIAogEEkNAiADQQFxDRsMHQsgEEUNHCAMLQAAQdTnhAFqLQAADRoMHAsgAyAQQcTShAEQsxEACyADQf8BcSAMIApqLQAAQdTnhAFqLQAARw0YDBoLAkACQAJAIApFDQAgCkF/aiIDIBBPDQEgDCADai0AAEHU54QBai0AACEDIAogEEkNAiADQQFxRQ0aDBwLIBBFDRkgDC0AAEHU54QBai0AAEUNGQwbCyADIBBBxNKEARCzEQALIANB/wFxIAwgCmotAABB1OeEAWotAABGDRcMGQsgDCAQIAoQugRB/wFxDRYMGAsgDCAQIAoQoANB/wFxDRUMFwsCQCAKDQAgEEUNFyAMLQAAQdTnhAFqLQAADRUMFwsgCkF/aiIDIBBPDQ8gCiAQTw0WIAwgA2otAABB1OeEAWotAAANFiAMIApqLQAAQdTnhAFqLQAAQQFxDRQMFgsgCkUNFSAKQX9qIgMgEE8NDyAMIANqLQAAQdTnhAFqLQAAIQFBASEDIAogEE8NEiAMIApqLQAAQdTnhAFqLQAAQQFzIQMMEgsgDCAQIAoQtwRB/wFxDRIMFAsgDCAQIAoQrwRB/wFxDREMEwsgCkUNEAJAIApBf2oiCiAQTw0AIAwgCmotAABB1OeEAWotAABFDREMEwsgCiAQQYTThAEQsxEACyAKIBBPDQ8gDCAKai0AAEHU54QBai0AAEUNDwwRCyAMIBAgChDgBEH/AXENDgwQCyAMIBAgChDpBkH/AXENDQwPCyADKAIIIQEgAygCBCEHIAYoAgAhAwJAIAIoAggiCiACKAIARw0AIAJB1KSEARDqFQsgAiAKQQFqNgIIIAIoAgQgCkEMbGoiCiADNgIIIAogATYCBCAKQQA2AgAMDAsgAygCBCEHIAMoAhAiCiAFTw0LIAQgCkECdGoiDygCACENAkAgAigCCCIDIAIoAgBHDQAgAkHkpIQBEOoVCyACKAIEIANBDGxqIgEgDTYCCCABIAo2AgQgAUEBNgIAIAIgA0EBajYCCCAPIAYoAgBBAWo2AgAMCwsgBigCACINIAhPDQwgDSAQTw0MIAMoAghBA3QhCiADKAIEQQVqIQMgDCANai0AACEPA0AgAyEHIApFDQ0gB0F/ai0AACAPQf8BcSIBSw0NIApBeGohCiAHQQhqIQMgASAHLQAASw0ACyAHQXtqKAIAIQcgBiANQQFqNgIADAoLIAYoAgAiCiAITw0LIAogEE8NCyADKAIIIgEgDCAKai0AACIHTQ0GIAMoAgQgB0ECdGooAgAiB0UNCyAGIApBAWo2AgAMCQsgAygCCCIBRQ0KIAMoAgQiCigCACEHIAYgCiABQQJ0ajYCCCAGIApBBGo2AgQgBiAGNgIMIAIgBkEEahDODQwICyAGKAIAIgogCEkNBQwJCyAAIAY1AgBCIIYgAzUCBIQ3AgQgAEEBNgIADBULIAcgCkHwu4QBELMRAAsgAyAQQeTShAEQsxEACyADIBBB9NKEARCzEQALIAcgAUGMwYQBELMRAAsgCiAQTw0DIAMtAAggDCAKai0AACIHSw0DIAcgAy0ACUH/AXFLDQMgAygCBCEHIAYgCkEBajYCAAwBCyABQQFxRQ0CIANBAXFFDQILIAYoAgAhCgwACwsgAigCCCEDCyADDQALCyAVQQFqIhUgCE0NAAsLIABBADYCAAwHCyAHIAVBxKSEARCzEQALIAZBAjoABCAGIAo2AgggBkEEahCXGiEHDAQLAkAgAygCBCIHIAsoAtwCSQ0AIABBADYCAAwFCyALKALYAiAHQQJ0aigCACERDAILIABBADYCAAwDCyALKAKwAiERCwJAIAIoAggiByACKAIARw0AIAJBtKSEARDqFQsgAiAHQQFqIgE2AgggAigCBCAHQQxsaiIHIAk2AgggByARNgIEQQAhFSAHQQA2AgACQAJAIAFFDQAgAygCDCEQIAMoAgghDEEAIRUCQANAIAIgAUF/aiIBNgIIIAIoAgQgAUEMbGoiBygCACIDQQJGDQEgBygCCCEKIAcoAgQhBwJAAkAgA0EBcUUNACAHIAVPDQUgBCAHQQJ0aiAKNgIADAELIAYgCjYCAAJAA0AgDiAHIAogCWsQgBJFDQECQAJAAkACQAJAAkACQAJAIAcgCygC0AIiCk8NAAJAAkACQAJAAkACQAJAIAsoAswCIAdBFGxqIgMoAgAOCQYDBAAFAQIQCwYLIAMoAgQhByAGKAIAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAygCCGgOEgABAgMEBQYHCAkKCwwNDg8QEQALIApFDR4MIAsgCiAQRg0dDB8LIApFDRwCQCAKQX9qIgogEE8NACAMIApqLQAAIAstAOACRg0dDB8LIAogEEGE0oQBELMRAAsgCiAQRg0bAkAgCiAQTw0AIAwgCmotAAAgCy0A4AJGDRwMHgsgCiAQQZTShAEQsxEACyAKRQ0aAkACQCAKQX9qIgMgEE8NACAMIANqLQAAQXZqDgQcHh4BHgsgAyAQQaTShAEQsxEACyAKIBBPDRogDCAKai0AAEEKRw0aDBwLIAogEEYNGQJAAkAgCiAQTw0AIAwgCmoiAy0AAEF2ag4EAR0dGx0LIAogEEG00oQBELMRAAsgCkUNGSADQX9qLQAAQQ1HDRkMGwsCQAJAAkAgCkUNACAKQX9qIgMgEE8NASAMIANqLQAAQdTnhAFqLQAAIQMgCiAQSQ0CIANBAXENGwwdCyAQRQ0cIAwtAABB1OeEAWotAAANGgwcCyADIBBBxNKEARCzEQALIANB/wFxIAwgCmotAABB1OeEAWotAABHDRgMGgsCQAJAAkAgCkUNACAKQX9qIgMgEE8NASAMIANqLQAAQdTnhAFqLQAAIQMgCiAQSQ0CIANBAXFFDRoMHAsgEEUNGSAMLQAAQdTnhAFqLQAARQ0ZDBsLIAMgEEHE0oQBELMRAAsgA0H/AXEgDCAKai0AAEHU54QBai0AAEYNFwwZCyAMIBAgChC6BEH/AXENFgwYCyAMIBAgChCgA0H/AXENFQwXCwJAIAoNACAQRQ0XIAwtAABB1OeEAWotAAANFQwXCyAKQX9qIgMgEE8NDiAKIBBPDRYgDCADai0AAEHU54QBai0AAA0WIAwgCmotAABB1OeEAWotAABBAXENFAwWCyAKRQ0VIApBf2oiAyAQTw0OIAwgA2otAABB1OeEAWotAAAhAUEBIQMgCiAQTw0SIAwgCmotAABB1OeEAWotAABBAXMhAwwSCyAMIBAgChC3BEH/AXENEgwUCyAMIBAgChCvBEH/AXENEQwTCyAKRQ0QAkAgCkF/aiIKIBBPDQAgDCAKai0AAEHU54QBai0AAEUNEQwTCyAKIBBBhNOEARCzEQALIAogEE8NDyAMIApqLQAAQdTnhAFqLQAARQ0PDBELIAwgECAKEOAEQf8BcQ0ODBALIAwgECAKEOkGQf8BcQ0NDA8LIAMoAgghASADKAIEIQcgBigCACEDAkAgAigCCCIKIAIoAgBHDQAgAkHUpIQBEOoVCyACIApBAWo2AgggAigCBCAKQQxsaiIKIAM2AgggCiABNgIEIApBADYCAAwMCyADKAIEIQcgAygCECIKIAVPDQsgBCAKQQJ0aiIPKAIAIQ0CQCACKAIIIgMgAigCAEcNACACQeSkhAEQ6hULIAIoAgQgA0EMbGoiASANNgIIIAEgCjYCBCABQQE2AgAgAiADQQFqNgIIIA8gBigCAEEBajYCAAwLCyAGKAIAIg0gCE8NDCANIBBPDQwgAygCCEEDdCEKIAMoAgRBBWohAyAMIA1qLQAAIQ8DQCADIQcgCkUNDSAHQX9qLQAAIA9B/wFxIgFLDQ0gCkF4aiEKIAdBCGohAyABIActAABLDQALIAdBe2ooAgAhByAGIA1BAWo2AgAMCgsgBigCACIKIAhPDQsgCiAQTw0LIAMoAggiASAMIApqLQAAIgdNDQUgAygCBCAHQQJ0aigCACIHRQ0LIAYgCkEBajYCAAwJCyADKAIIIgFFDQogAygCBCIKKAIAIQcgBiAKIAFBAnRqNgIIIAYgCkEEajYCBCAGIAY2AgwgAiAGQQRqEM4NDAgLIAYoAgAiCiAISQ0FDAkLIAcgCkHwu4QBELMRAAsgAyAQQeTShAEQsxEACyADIBBB9NKEARCzEQALIAcgAUGMwYQBELMRAAsgBjUCAEIghiADNQIEhCEWQQEhFQwICyAKIBBPDQMgAy0ACCAMIApqLQAAIgdLDQMgByADLQAJQf8BcUsNAyADKAIEIQcgBiAKQQFqNgIADAELIAFBAXFFDQIgA0EBcUUNAgsgBigCACEKDAALCyACKAIIIQELIAENAAsLCyAAIBY3AgQgACAVNgIADAILIAcgBUHEpIQBELMRAAsgAEECNgIAIAAgBzYCBAsgBkEQaiQAC58jAhx/AX4jAEGQAWsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCAA4TAAMBAgQFBgcICQoLDA0ODxAREgALIAEoAgghAyABKAIYIQQgASgCFCEFIAEoAhAhBiACQeAAaiABKAIMIgdBCEEwEMwNIAIoAmQhCCACKAJgQQFGDRYgAigCaCEJAkAgCEUNACAHQTBsIQogCSEBIAghCwNAIApFDQEgAkHgAGogAxCAASABQShqIAJB4ABqQShqKQMANwMAIAFBIGogAkHgAGpBIGopAwA3AwAgAUEYaiACQeAAakEYaikDADcDACABQRBqIAJB4ABqQRBqKQMANwMAIAFBCGogAkHgAGpBCGopAwA3AwAgASACKQNgNwMAIAFBMGohASAKQVBqIQogA0EwaiEDIAtBf2oiCw0ACwsgACAENgIYIAAgBTYCFCAAIAY2AhAgACAHNgIMIAAgCTYCCCAAIAg2AgQgAEEANgIADB0LIAAgASkDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAEEIaiABQQhqKQMANwMADBwLQQAtAMDxnQEaIAEoAhAhCyABKAIMIQhBwAAQhQEiA0UNFSADIAEoAgQQREEALQDA8Z0BGkEwEIUBIgpFDRUgCiABKAIIEIABIAAgCzYCECAAIAg2AgwgACAKNgIIIAAgAzYCBCAAQQM2AgAMGwsgACABKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACAAQQhqIAFBCGopAwA3AwAMGgsgASgCCCEDIAEoAgQhCgJAAkAgASgCDCILDQBBACEBDAELQQAtAMDxnQEaQcAAEIUBIgFFDRQgASALEEQLIAAgATYCDCAAIAM2AgggACAKNgIEIABBBDYCAAwZCyABKAIgIQogASgCHCELIAEoAhghCCABKAIMIQcgASgCCCEJAkAgASkDECIeQgODQgBSDQAgHqciAyADKAIAIgNBAWo2AgAgA0F/TA0TC0EALQDA8Z0BGiABLQAkIQRBMBCFASIDRQ0SIAMgASgCKBCAASAAIAM2AiggACAEOgAkIAAgCjYCICAAIAs2AhwgACAINgIYIAAgHjcDECAAIAc2AgwgACAJNgIIIABBBTYCAAwYCyABKAIMIQMgASgCCCEKIAEtACQiC0ECRw0MDA0LIAEoAgwhAyABKAIIIQogAS0AJCILQQJHDQ0MDgtBAC0AwPGdARogASgCECELIAEoAgwhCEHAABCFASIDRQ0PIAMgASgCBBBEQQAtAMDxnQEaQTAQhQEiCkUNDyAKIAEoAggQgAECQAJAIAEoAhQiBw0AQQAhAQwBC0EALQDA8Z0BGkEwEIUBIgFFDRAgASAHEIABCyAAIAE2AhQgACALNgIQIAAgCDYCDCAAIAo2AgggACADNgIEIABBCDYCAAwVC0EALQDA8Z0BGiABKAIYIQwgASgCFCENQcAAEIUBIg5FDQ4gDiABKAIQEEQgASgCCCEIIAJB4ABqIAEoAgwiD0EEQRgQzA0gAigCZCEQIAIoAmBBAUYNDyACKAJoIRECQCAQRQ0AIAggD0EYbGohEiAQIRNBACEEA0AgCCASRg0BIAgoAhAhFCAIKAIMIRUCQAJAIAgoAhQiAQ0AQQAhBQwBC0EALQDA8Z0BGkHAABCFASIFRQ0RIAUgARBECyAIKAIEIQMgAkHgAGogCCgCCCIGQQhBMBDMDSACKAJkIQkgAigCYEEBRg0SIBEgBEEYbGohByACKAJoIRYCQCAJRQ0AIAZBMGwhCiAWIQEgCSELA0AgCkUNASACQeAAaiADEIABIAFBKGogAkHgAGpBKGopAwA3AwAgAUEgaiACQeAAakEgaikDADcDACABQRhqIAJB4ABqQRhqKQMANwMAIAFBEGogAkHgAGpBEGopAwA3AwAgAUEIaiACQeAAakEIaikDADcDACABIAIpA2A3AwAgCkFQaiEKIAFBMGohASADQTBqIQMgC0F/aiILDQALCyAIQRhqIQggBEEBaiEEIAcgBTYCFCAHIBQ2AhAgByAVNgIMIAcgBjYCCCAHIBY2AgQgByAJNgIAIBNBf2oiEw0ACwsgACAMNgIYIAAgDTYCFCAAIA42AhAgACAPNgIMIAAgETYCCCAAIBA2AgQgAEEJNgIADBQLQQAtAMDxnQEaIAEoAgwhCiABKAIIIQtBwAAQhQEiA0UNDSADIAEoAgQQRCAAIAo2AgwgACALNgIIIAAgAzYCBCAAQQo2AgAMEwtBAC0AwPGdARpBgAEQhQEiC0UNDCABKAIEIgcoAkwhAyAHKAJcIREgBygCWCESIAcoAlQhECAHKAJ8IQ4gBygCeCEPIAJB4ABqIAcoAlAiFkEIQTAQzA0gAigCZCEJIAIoAmBBAUYNDyACKAJoIRMCQCAJRQ0AIBZBMGwhCiATIQEgCSEIA0AgCkUNASACQeAAaiADEIABIAFBKGogAkHgAGpBKGopAwA3AwAgAUEgaiACQeAAakEgaikDADcDACABQRhqIAJB4ABqQRhqKQMANwMAIAFBEGogAkHgAGpBEGopAwA3AwAgAUEIaiACQeAAakEIaikDADcDACABIAIpA2A3AwAgAUEwaiEBIApBUGohCiADQTBqIQMgCEF/aiIIDQALC0EIIQYCQAJAIAcoAgAiAUEIRw0ADAELQQchBiAHKAJEIQ0gBygCQCEMAkAgAUEHRg0AIAJB4ABqIAcQpwIgAkHAAGogAkHsAGopAgA3AwAgAkHIAGogAkH0AGopAgA3AwAgAkHQAGogAkH8AGopAgA3AwAgAkHYAGogAkGEAWooAgA2AgAgAiACKQJkNwM4IAIoAmAhBgsgBygCLCEDIAcoAjwhFyAHKAI4IRggBygCNCEZIAJB4ABqIAcoAjAiFEEIQTAQzA0gAigCZCEFIAIoAmBBAUYNESACKAJoIRUCQCAFRQ0AIBRBMGwhCiAVIQEgBSEIA0AgCkUNASACQeAAaiADEIABIAFBKGogAkHgAGpBKGopAwA3AwAgAUEgaiACQeAAakEgaikDADcDACABQRhqIAJB4ABqQRhqKQMANwMAIAFBEGogAkHgAGpBEGopAwA3AwAgAUEIaiACQeAAakEIaikDADcDACABIAIpA2A3AwAgAUEwaiEBIApBUGohCiADQTBqIQMgCEF/aiIIDQALCyACQRBqQSBqIAJBOGpBIGooAgA2AgAgAkEQakEYaiACQThqQRhqKQMANwMAIAJBEGpBEGogAkE4akEQaikDADcDACACQRBqQQhqIAJBOGpBCGopAwA3AwAgAiACKQM4NwMQC0GAgICAeCEEAkACQCAHKAJgQYCAgIB4Rw0ADAELIAcoAmQhAyAHKAJ0IRogBygCcCEbIAcoAmwhHCACQeAAaiAHKAJoIgdBCEEwEMwNIAIoAmQhBCACKAJgQQFGDRIgAigCaCEdAkAgBEUNACAHQTBsIQogHSEBIAQhCANAIApFDQEgAkHgAGogAxCAASABQShqIAJB4ABqQShqKQMANwMAIAFBIGogAkHgAGpBIGopAwA3AwAgAUEYaiACQeAAakEYaikDADcDACABQRBqIAJB4ABqQRBqKQMANwMAIAFBCGogAkHgAGpBCGopAwA3AwAgASACKQNgNwMAIAFBMGohASAKQVBqIQogA0EwaiEDIAhBf2oiCA0ACwsgB61CIIYgHa2EIR4LIAsgBjYCACALIAIpAxA3AgQgCyAONgJ8IAsgDzYCeCALIBo2AnQgCyAbNgJwIAsgHDYCbCALIB43AmQgCyAENgJgIAsgETYCXCALIBI2AlggCyAQNgJUIAsgFjYCUCALIBM2AkwgCyAJNgJIIAsgDTYCRCALIAw2AkAgCyAXNgI8IAsgGDYCOCALIBk2AjQgCyAUNgIwIAsgFTYCLCALIAU2AiggC0EMaiACQRhqKQMANwIAIAtBFGogAkEgaikDADcCACALQRxqIAJBKGopAwA3AgAgC0EkaiACQTBqKAIANgIAIABBCzYCACAAIAs2AgQMEgtBAC0AwPGdARogASgCECELIAEoAgwhCEHAABCFASIDRQ0LIAMgASgCBBBEQQAtAMDxnQEaQTAQhQEiCkUNCyAKIAEoAggQgAEgACALNgIQIAAgCDYCDCAAIAo2AgggACADNgIEIABBDDYCAAwRC0EALQDA8Z0BGiABKAIQIQsgASgCDCEIQcAAEIUBIgNFDQogAyABKAIEEERBAC0AwPGdARpBMBCFASIKRQ0KIAogASgCCBCAASAAIAs2AhAgACAINgIMIAAgCjYCCCAAIAM2AgQgAEENNgIADBALQQIhByABKAIUIQkgASgCECEEAkAgASgCBCIDQQJGDQACQCADQQFxRQ0AQQAtAMDxnQEaQcAAEIUBIgtFDQsgCyABKAIIEERBASEHDAELELYdIQsgASgCCCALEPYEQQAhBwtBACEKQQAhAwJAIAEoAhgiCEUNAEEALQDA8Z0BGkHAABCFASIDRQ0KIAMgCBBECwJAIAEoAhwiCEUNAEEALQDA8Z0BGkHAABCFASIKRQ0KIAogCBBEC0EALQDA8Z0BGkEwEIUBIghFDQkgCCABKAIMEIABIAAgCjYCHCAAIAM2AhggACAJNgIUIAAgBDYCECAAIAg2AgwgACALNgIIIAAgBzYCBCAAQQ42AgAMDwsgASgCGCELIAEoAhQhCCACIAFBBGoQ6QxBAC0AwPGdARogAigCBCEHIAIoAgAhCUHAABCFASIDRQ0IIAMgASgCDBBEQQAtAMDxnQEaQTAQhQEiCkUNCCAKIAEoAhAQgAEgACALNgIYIAAgCDYCFCAAIAo2AhAgACADNgIMIAAgBzYCCCAAIAk2AgQgAEEPNgIADA4LIAEtABwhCyABKAIYIQggASgCFCEHIAJBCGogAUEEahDpDEEALQDA8Z0BGiACKAIMIQkgAigCCCEEQcAAEIUBIgNFDQcgAyABKAIMEERBAC0AwPGdARpBMBCFASIKRQ0HIAogASgCEBCAASAAIAs6ABwgACAINgIYIAAgBzYCFCAAIAo2AhAgACADNgIMIAAgCTYCCCAAIAQ2AgQgAEEQNgIADA0LIAJB4ABqIAFBCGoQrAEgAEERNgIAIABBKGogAkHgAGpBIGopAwA3AwAgAEEgaiACQeAAakEYaikDADcDACAAQRhqIAJB4ABqQRBqKQMANwMAIABBEGogAkHgAGpBCGopAwA3AwAgACACKQNgNwMIDAwLQQAtAMDxnQEaIAEoAgwhCiABKAIIIQtBwAAQhQEiA0UNBSADIAEoAgQQRCAAIAo2AgwgACALNgIIIAAgAzYCBCAAQRI2AgAMCwsgASgCICEJIAEoAhwhByABKAIYIQggASkDECIeQgODQgBSDQAgHqciASABKAIAIgFBAWo2AgAgAUF/TA0ECyAAIAs6ACQgACAJNgIgIAAgBzYCHCAAIAg2AhggACAeNwMQIAAgAzYCDCAAIAo2AgggAEEGNgIADAkLIAEoAiAhCSABKAIcIQcgASgCGCEIIAEpAxAiHkIDg0IAUg0AIB6nIgEgASgCACIBQQFqNgIAIAFBf0wNAgsgACALOgAkIAAgCTYCICAAIAc2AhwgACAINgIYIAAgHjcDECAAIAM2AgwgACAKNgIIIABBBzYCAAwHCyAIIAIoAmhBiJ+aARCqHgsACyAQIAIoAmhBiJ+aARCqHgALIAkgAigCaEGIn5oBEKoeAAsgCSACKAJoQYifmgEQqh4ACyAFIAIoAmhBiJ+aARCqHgALIAQgAigCaEGIn5oBEKoeAAsgAkGQAWokAAuxIQIGfwF+IwBB8ABrIgYkACAGQeAAaiABIAIgBUHBACAFENYXAkACQCAGLQBgQQVGDQAgACAGKQNgNwIADAELIAZB4ABqEIQfAkACQAJAAkACQCAFRQ0AIAZBKGogBBDVFwJAIAEtAF0NACAGQeAAaiABEIsSIAYtAGBBBEYNACAGKQNgIgxC/wGDQgRSDQILIAZBADoANiABLQBdRQ0CDAMLIAEtAF0NAyAGQeAAaiABEIsSIAYtAGBBBEYNAyAGKQNgIgxC/wGDQgRRDQMgACAMNwIADAQLIAAgDDcCAAwDCyABIAEoAjhBAWo2AjgLIAZBADoANyAFIQcgBCEIQQAhCUEAIQoDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAHRQ0AIAZBIGogCBDVFyAGQeAAaiABIANBwQAgCSAKIAZBN2ogBkE2ahChBQJAIAYtAGBBBEYNACAGKQNgIgxC/wGDQgRSDRcLIAgoAgBBfGoiCUEEIAlBB0kbDgcBAgMEBQYHAQsCQCAEIAVBOGxqQUhqIghFDQAgBkEIaiAIENUXCyAGQeAAaiABIAIgA0HBACAJIAoQuQIgBi0AYEEERg0YIAYpA2AiDEL/AYNCBFINFQwYCyAIQRRqKAIAIQkgBkHQAGogASAIQRBqKAIAIgpBABCVAgJAAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINAQsgBkHQAGogCEEcaiABEOAcAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINAQsgBkEANgJgIAZB0ABqIAEgBkHgAGpBsLqbAUEBELgMAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINAQsgBkHQAGogASAKIAkgCEEIaigCACAIQQxqKAIAEK8GAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINAQsgBkHQAGogASAGQeAAakGz/ZwBQQEQuAwCQCAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0BCyAIQRhqIgkoAgBFDRIgBkHQAGogARDiDgJAIAYtAFBBBEYNACAGKQNQIgxC/wGDQgRSDQELIAZB0ABqIAEgBkHgAGpBocSbAUEBELgMAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINAQsgBkHQAGogARDiDgJAIAYtAFBBBEYNACAGKQNQIgxC/wGDQgRSDQELIAZB0ABqIAkgARCgDyAGLQBQQQRGDRIgBikDUCIMQv8Bg0IEUQ0SCyAMQv8Bg0IEUQ0RDBILIAhBFGooAgAhCSAGQdAAaiABIAhBEGooAgAiCkEAEJUCAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINEAsgBkEANgJgIAZB0ABqIAEgBkHgAGpBnsSbAUEDELkMAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINEAsgCEEcaiILKAIARQ0OIAZB0ABqIAEQ4g4CQCAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0QCyAGQdAAaiALIAEQ8wQgBi0AUEEERw0FDA4LIAZB4ABqIAEgCEEEaigCAEEAEJUCAkAgBi0AYEEERg0AIAYpA2AiDEL/AYNCBFINDQsgCEEUai0AAEUNCyAGQQA2AmAgBkE4aiABIAZB4ABqQdPEmwFBCBC5DAJAIAYtADhBBEYNACAGKQM4IgxC/wGDQgRSDQ0LIAZB4ABqIAEQ4g4gBi0AYEEERg0LIAYpA2AiDEL/AYNCBFENCwwMCyAGQQA2AmAgBkHQAGogASAGQeAAakGyxZsBQQMQuQwCQCAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0KCyAGQdAAaiABEOIOAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINCgsgCEEEaiEJAkAgCEEUai0AAA0AIAZB0ABqIAkgARDaICAGLQBQQQRGDQkgBikDUCIMQv8Bg0IEUg0KDAkLIAZB0ABqIAEgBkHgAGpBrsSbAUEBELgMAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINCgsgBkHQAGogCSABENogAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINCgsgBkHQAGogASAGQeAAakGvxJsBQQEQuAwgBi0AUEEERg0IIAYpA1AiDEL/AYNCBFENCAwJCyAGQQA2AmAgBkHQAGogASAGQeAAakG1xZsBQQMQuQwCQCAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0HCyAGQdAAaiABEOIOAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINBwsCQCAIQTRqLQAADQAgBkHQAGogCEEwaiABENogIAYtAFBBBEYNBiAGKQNQIgxC/wGDQgRSDQcMBgsgBkHQAGogASAGQeAAakGuxJsBQQEQuAwCQCAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0HCyAGQdAAaiAIQTBqIAEQ2iACQCAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0HCyAGQdAAaiABIAZB4ABqQa/EmwFBARC4DCAGLQBQQQRGDQUgBikDUCIMQv8Bg0IEUQ0FDAYLIAhBGGooAgAhCSAGQdAAaiABIAhBFGooAgAiCkEAEJUCAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINBAsCQCAIQSRqLQAADQAgBkHQAGogCEEQaiABENogIAYtAFBBBEYNAyAGKQNQIgxC/wGDQgRSDQQMAwsgBkEANgI4IAZB0ABqIAEgBkE4akGuxJsBQQEQuAwCQCAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0ECyAGQdAAaiAIQRBqIAEQ2iACQCAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0ECyAGQdAAaiABIAZBOGpBr8SbAUEBELgMIAYtAFBBBEYNAiAGKQNQIgxC/wGDQgRRDQIMAwsgBkHgAGogCEEEaiABENMFIAYtAGBBBEYNCyAGKQNgIgxC/wGDQgRSDQwMCwsgBikDUCIMQv8Bg0IEUQ0IDAkLAkAgCEElai0AAEUNACAGQQA2AlAgBkHIAGogASAGQdAAakHkxJsBQQEQuAwgBi0ASEEERg0AIAYpA0giDEL/AYNCBFINAQsCQCAIQSBqIgsoAgBFDQAgBkHQAGogCyABEPMEIAYtAFBBBEYNACAGKQNQIgxC/wGDQgRSDQELIAZBADYCYCAGQdAAaiABIAZB4ABqQbC6mwFBARC4DAJAIAYtAFBBBEYNACAGKQNQIgxC/wGDQgRSDQELIAZB0ABqIAEgCiAJIAhBCGooAgAgCEEMaigCABCvBgJAIAYtAFBBBEYNACAGKQNQIgxC/wGDQgRSDQELIAZB0ABqIAEgBkHgAGpBs/2cAUEBELgMAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINAQsgCEEcaiIJKAIARQ0JIAZB0ABqIAEgBkHgAGpBocSbAUEBELgMAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINAQsCQCABLQBdDQAgBkHQAGogARDiDiAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0BCyAGQdAAaiAJIAEQoA8gBi0AUEEERg0JIAYpA1AiDEL/AYNCBFENCQsgDEL/AYNCBFENCAwJCyAGQdAAaiABIAZB4ABqQbC6mwFBARC4DAJAIAYtAFBBBEYNACAGKQNQIgxC/wGDQgRSDQELIAZB0ABqIAggARDACgJAIAYtAFBBBEYNACAGKQNQIgxC/wGDQgRSDQELIAZB0ABqIAEgBkHgAGpBs/2cAUEBELgMIAYtAFBBBEYNByAGKQNQIgxC/wGDQgRRDQcLIAxC/wGDQgRRDQYMBwsgBkHQAGogASAGQeAAakGwupsBQQEQuAwCQCAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0BCyAGQdAAaiABIAZB4ABqQbP9nAFBARC4DAJAIAYtAFBBBEYNACAGKQNQIgxC/wGDQgRSDQELIAhBEGooAgAiCUUNBSAGQdAAaiABIAZB4ABqQaHEmwFBARC4DAJAIAYtAFBBBEYNACAGKQNQIgxC/wGDQgRSDQELAkAgAS0AXQ0AIAZB0ABqIAEQ4g4gBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINAQsgBkHQAGogCSABEE8gBi0AUEEERg0FIAYpA1AiDEL/AYNCBFENBQsgDEL/AYNCBFENBAwFCwJAAkAgCEEVai0AAA0AIAZB4ABqIAhBEGogARDaICAGLQBgQQRGDQEgBikDYCIMQv8Bg0IEUg0CDAELIAZBADYCUCAGQeAAaiABIAZB0ABqQa7EmwFBARC4DAJAIAYtAGBBBEYNACAGKQNgIgxC/wGDQgRSDQILIAZB4ABqIAhBEGogARDaIAJAIAYtAGBBBEYNACAGKQNgIgxC/wGDQgRSDQILIAZB4ABqIAEgBkHQAGpBr8SbAUEBELgMIAYtAGBBBEYNACAGKQNgIgxC/wGDQgRSDQELAkAgCEEWai0AAEUNACAGQQA2AmAgBkE4aiABIAZB4ABqQeTEmwFBARC4DCAGLQA4QQRGDQAgBikDOCIMQv8Bg0IEUg0BCyAIQQxqIgkoAgBFDQMgBkEANgJgIAZBOGogASAGQeAAakGhxJsBQQEQuAwCQCAGLQA4QQRGDQAgBikDOCIMQv8Bg0IEUg0BCwJAIAEtAF0NACAGQeAAaiABEOIOIAYtAGBBBEYNACAGKQNgIgxC/wGDQgRSDQELIAZB4ABqIAkgARCgDyAGLQBgQQRGDQMgBikDYCIMQv8Bg0IEUQ0DCyAMQv8Bg0IEUQ0CDAMLIAZB0ABqIAEgBkHgAGpBsLqbAUEBELgMAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINAQsgBkHQAGogASAKIAkgCEEIaigCACAIQQxqKAIAEK8GAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINAQsgBkHQAGogASAGQeAAakGz/ZwBQQEQuAwCQCAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0BCyAIQRhqIgkoAgBFDQEgBkHQAGogASAGQeAAakGhxJsBQQEQuAwCQCAGLQBQQQRGDQAgBikDUCIMQv8Bg0IEUg0BCyAGQdAAaiABEOIOAkAgBi0AUEEERg0AIAYpA1AiDEL/AYNCBFINAQsgBkHQAGogCSABEKAPIAYtAFBBBEYNASAGKQNQIgxC/wGDQgRRDQELIAxC/wGDQgRSDQELIAZBADYCYCAGQdAAaiABIAZB4ABqELoMIAYtAFBBBEYNASAGKQNQIgxC/wGDQgRRDQELIAxC/wGDQgRSDQELAkAgBi0ANg0AIAZBAToANgwCCyABKAJURQ0BIAZBGGogCBDVFyAGQeAAaiABIAYoAhxBABDUAyAGLQBgQQRGDQEgBikDYCIMQv8Bg0IEUQ0BCyAAIAw3AgAMAwsCQCAGLQA3RQ0AIAEgASgCOEF/ajYCOCAGQQA6ADcLIAdBf2ohByAGQRBqIAgQ1RcgCEE4aiEIQQEhCSAGKAIUIQoMAAsLIAZB4ABqIAEgAyAFRUHBABDAEAJAIAYtAGBBBEYNACAGKQNgIgxC/wGDQgRRDQAgACAMNwIADAELIABBBDoAAAsgBkHwAGokAAuJIAIWfwR+IwBBoAprIgMkAAJAAkACQAJAIAEpAwAiGUIAUQ0AAkAgASkDCCIaQgBRDQACQCABKQMQIhtCAFENAAJAIBkgG3wiHCAZVA0AAkAgGSAaVA0AIAEsABohBCABLgEYIQEgAyAZPgIAIANBAUECIBlCgICAgBBUIgUbNgKgASADQQAgGUIgiKcgBRs2AgQCQEGYAUUiBQ0AIANBCGpBAEGYAfwLAAsgAyAaPgKkASADQQFBAiAaQoCAgIAQVCIGGzYCxAIgA0EAIBpCIIinIAYbNgKoAQJAIAUNACADQaQBakEIakEAQZgB/AsACyADIBs+AsgCIANBAUECIBtCgICAgBBUIgYbNgLoAyADQQAgG0IgiKcgBhs2AswCAkAgBQ0AIANByAJqQQhqQQBBmAH8CwALAkBBnAFFDQAgA0HwA2pBAEGcAfwLAAsgA0EBNgLsAyADQQE2AowFIAGsIBxCf3x5fULCmsHoBH5CgKHNoLQCfEIgiKciBcEhBwJAAkAgAUEASA0AIAMgARCjAxogA0GkAWogARCjAxogA0HIAmogARCjAxoMAQsgA0HsA2pBACABa8EQowMaCwJAAkAgB0F/Sg0AIANBACAHa0H//wNxIgEQyAQaIANBpAFqIAEQyAQaIANByAJqIAEQyAQaDAELIANB7ANqIAVB//8BcRDIBBoLAkBBpAFFDQAgA0H8CGogA0GkAfwKAAALAkACQAJAAkAgAygC6AMiCCADKAKcCiIBIAggAUsbIglBKEsNACAJDQFBACEJDAILIAlBKEHYqIEBEI8gAAtBACEKIANByAJqIQUgA0H8CGohASAJIQsDQCABIAEoAgAiDCAFKAIAaiIGIApBAXFqIgo2AgAgBiAMSSAKIAZJciEKIAFBBGohASAFQQRqIQUgC0F/aiILDQALIApFDQAgCUEoRg0BIANB/AhqIAlBAnRqQQE2AgAgCUEBaiEJCyADIAk2ApwKAkAgCSADKAKMBSIBIAkgAUsbIgFBKU8NACABQQJ0IQECQAJAA0AgAUUNASABQXxqIgEgA0HsA2pqKAIAIgUgASADQfwIamooAgAiBkYNAAsgBSAGSyAFIAZJayEBDAELQX9BACADQfwIaiADQfwIaiABakcbIQELAkACQAJAAkACQAJAAkAgASAESA0AIAMoAqABIgZBKU8NBgJAAkAgBg0AQQAhBgwBCyADIAZBAnQiBWohCiADIQFCACEZA0AgASABNQIAQgp+IBl8Iho+AgAgAUEEaiEBIBpCIIghGSAFQXxqIgUNAAsgGkKAgICAEFQNACAGQShGDQYgCiAZpzYCACAGQQFqIQYLIAMgBjYCoAEgAygCxAIiBkEpTw0EQQAhCkEAIQECQCAGRQ0AIANBpAFqIAZBAnQiBWohCyADQaQBaiEBQgAhGQNAIAEgATUCAEIKfiAZfCIaPgIAIAFBBGohASAaQiCIIRkgBUF8aiIFDQALAkAgGkKAgICAEFoNACAGIQEMAQsgBkEoRg0EIAsgGac2AgAgBkEBaiEBCyADIAE2AsQCAkAgCEUNACADQcgCaiAIQQJ0aiEGIAhBAnQhBSADQcgCaiEBQgAhGQNAIAEgATUCAEIKfiAZfCIaPgIAIAFBBGohASAaQiCIIRkgBUF8aiIFDQALAkAgGkKAgICAEFoNACADIAg2AugDDAMLIAhBKEYNAyAGIBmnNgIAIAhBAWohCgsgAyAKNgLoAwwBCyAHQQFqIQcLAkBBpAFFIgENACADQZAFaiADQewDakGkAfwKAAALIANBkAVqQQEQowMhDQJAIAENACADQbQGaiADQewDakGkAfwKAAALIANBtAZqQQIQowMhDgJAIAENACADQdgHaiADQewDakGkAfwKAAALAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANB2AdqQQMQowMiDygCoAEiECADKAKgASIKIBAgCksbIglBKEsNACANKAKgASERIA4oAqABIRIgAygCjAUhE0EAIRQDQCAUIRUgCUECdCEBAkACQAJAAkADQCABRQ0BIAFBfGoiASADaigCACIFIAEgA0HYB2pqKAIAIgZGDQALIAUgBkkNAQwCCyAPIANB2AdqIAFqRg0BC0EAIRYgCiEJDAELAkAgCUUNAEEBIQogA0HYB2ohBSADIQEgCSELA0AgASABKAIAIgwgBSgCAEF/c2oiBiAKQQFxaiIKNgIAIAYgDEkgCiAGSXIhCiABQQRqIQEgBUEEaiEFIAtBf2oiCw0ACyAKRQ0FCyADIAk2AqABQQghFgsgEiAJIBIgCUsbIghBKU8NBCAIQQJ0IQECQAJAAkADQCABRQ0BIAFBfGoiASADaigCACIFIAEgA0G0BmpqKAIAIgZGDQALIAUgBk8NASAJIQgMAgsgDiADQbQGaiABakYNACAJIQgMAQsCQCAIRQ0AQQEhCiADQbQGaiEFIAMhASAIIQsDQCABIAEoAgAiDCAFKAIAQX9zaiIGIApBAXFqIgo2AgAgBiAMSSAKIAZJciEKIAFBBGohASAFQQRqIQUgC0F/aiILDQALIApFDQcLIAMgCDYCoAEgFkEEciEWCyARIAggESAISxsiF0EpTw0GIBdBAnQhAQJAAkACQANAIAFFDQEgAUF8aiIBIANqKAIAIgUgASADQZAFamooAgAiBkYNAAsgBSAGTw0BIAghFwwCCyANIANBkAVqIAFqRg0AIAghFwwBCwJAIBdFDQBBASEKIANBkAVqIQUgAyEBIBchCwNAIAEgASgCACIMIAUoAgBBf3NqIgYgCkEBcWoiCjYCACAGIAxJIAogBklyIQogAUEEaiEBIAVBBGohBSALQX9qIgsNAAsgCkUNCQsgAyAXNgKgASAWQQJqIRYLIBMgFyATIBdLGyIJQSlPDQggCUECdCEBAkACQAJAA0AgAUUNASABQXxqIgEgA2ooAgAiBSABIANB7ANqaigCACIGRg0ACyAFIAZPDQEgFyEJDAILIANB7ANqIANB7ANqIAFqRg0AIBchCQwBCwJAIAlFDQBBASEKIANB7ANqIQUgAyEBIAkhCwNAIAEgASgCACIMIAUoAgBBf3NqIgYgCkEBcWoiCjYCACAGIAxJIAogBklyIQogAUEEaiEBIAVBBGohBSALQX9qIgsNAAsgCkUNCwsgAyAJNgKgASAWQQFqIRYLIBVBEUYNDSACIBVqIBZBMGo6AAAgAygCxAIiFiAJIBYgCUsbIgFBKU8NCiAVQQFqIRQgAUECdCEBAkACQANAIAFFDQEgAUF8aiIBIANqKAIAIgUgASADQaQBamooAgAiBkYNAAsgBSAGSyAFIAZJayEYDAELQX9BACADQaQBaiADQaQBaiABakcbIRgLAkBBpAFFDQAgA0H8CGogA0GkAfwKAAALAkACQAJAIAMoAugDIhcgAygCnAoiASAXIAFLGyIIQShLDQAgCA0BQQAhCAwCCyAIQShB2KiBARCPIAALQQAhCiADQcgCaiEFIANB/AhqIQEgCCELA0AgASABKAIAIgwgBSgCAGoiBiAKQQFxaiIKNgIAIAYgDEkgCiAGSXIhCiABQQRqIQEgBUEEaiEFIAtBf2oiCw0ACyAKRQ0AIAhBKEYNDCADQfwIaiAIQQJ0akEBNgIAIAhBAWohCAsgAyAINgKcCiAIIBMgCCATSxsiAUEpTw0MIAFBAnQhAQJAAkADQCABRQ0BIAFBfGoiASADQewDamooAgAiBSABIANB/AhqaigCACIGRg0ACyAFIAZLIAUgBklrIQEMAQtBf0EAIANB/AhqIANB/AhqIAFqRxshAQsCQAJAIBggBEgiBQ0AIAEgBE4NAQsgASAESA0DDCELQQAhBkEAIQoCQCAJRQ0AIAMgCUECdCIFaiEKIAMhAUIAIRkDQCABIAE1AgBCCn4gGXwiGj4CACABQQRqIQEgGkIgiCEZIAVBfGoiBQ0ACwJAIBpCgICAgBBaDQAgCSEKDAELIAlBKEYNDyAKIBmnNgIAIAlBAWohCgsgAyAKNgKgAQJAIBZFDQAgA0GkAWogFkECdCIFaiEGIANBpAFqIQFCACEZA0AgASABNQIAQgp+IBl8Iho+AgAgAUEEaiEBIBpCIIghGSAFQXxqIgUNAAsCQCAaQoCAgIAQWg0AIBYhBgwBCyAWQShGDRAgBiAZpzYCACAWQQFqIQYLIAMgBjYCxAICQAJAIBcNAEEAIRcMAQsgA0HIAmogF0ECdCIFaiEGIANByAJqIQFCACEZA0AgASABNQIAQgp+IBl8Iho+AgAgAUEEaiEBIBpCIIghGSAFQXxqIgUNAAsgGkKAgICAEFQNACAXQShGDREgBiAZpzYCACAXQQFqIRcLIAMgFzYC6AMgECAKIBAgCksbIglBKE0NAAsLIAlBKEHYqIEBEI8gAAsgBUUNHCADQQEQowMaIAMoAowFIgEgAygCoAEiBSABIAVLGyIBQSlPDQ4gAUECdCEBIANBfGohBQNAIAFFDRAgBSABaigCACIGIAFBfGoiASADQewDamooAgAiCkYNAAsgBiAKSQ0dDBwLQeiogQFBGkHYqIEBEN0XAAsgCEEoQdiogQEQjyAAC0HoqIEBQRpB2KiBARDdFwALIBdBKEHYqIEBEI8gAAtB6KiBAUEaQdiogQEQ3RcACyAJQShB2KiBARCPIAALQeiogQFBGkHYqIEBEN0XAAsgAUEoQdiogQEQjyAAC0EoQShB2KiBARCzEQALIAFBKEHYqIEBEI8gAAtBEUERQfj7gAEQsxEAC0EoQShB2KiBARCzEQALQShBKEHYqIEBELMRAAtBKEEoQdiogQEQsxEACyABQShB2KiBARCPIAALIANB7ANqIANB7ANqIAFqRw0NDAwLQShBKEHYqIEBELMRAAtBKEEoQdiogQEQsxEACyAGQShB2KiBARCPIAALQShBKEHYqIEBELMRAAsgBkEoQdiogQEQjyAACyABQShB2KiBARCPIAALQShBKEHYqIEBELMRAAtBqPyAAUE3QeD8gAEQ3RcAC0Hw/IABQTZBqP2AARDdFwALQcz7gAFBHEHo+4ABEN0XAAtBnPuAAUEdQbz7gAEQ3RcAC0Hv+oABQRxBjPuAARDdFwALIAIgFGohC0F/IQUgFCEBAkADQCABIgZFDQEgBUEBaiEFIAZBf2oiASACaiIKLQAAQTlGDQALIAogCi0AAEEBajoAACAGIBVLDQEgBUUNASACIAZqQTAgBfwLAAwBCyACQTE6AAACQAJAIBVFDQACQCAVRQ0AIAJBAWpBMCAV/AsACyAVQQ9LDQELIAtBMDoAACAHQQFqIQcgFUECaiEUDAILIBRBEUGI/IABELMRAAsgFUERSQ0AIBRBEUGY/IABEI8gAAsgACAHOwEIIAAgFDYCBCAAIAI2AgAgA0GgCmokAAv3IAIUfwN+IwBBgAFrIgQkACABKAIAIgVBhAVqKAIAIQYgASgCBCIHQawBaiIIKAIAIQkgCEEANgIAIAcpAqQBIRggB0KAgICAEDcCpAEgBEEgakEIaiAJNgIAIAQgGDcDIAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACQf///z9xIAZ2IgYgBygClAEiCE8NACAFLQBYIQogB0EANgJkIAdBADYCSCAFKAKABSILLQDkAiEMAkACQCAHKAKQASAGQQN0aiIGKAIAQQhqIg0gBigCBCIOEMgVIgYNAEEJIQYMAQsgBkGAgICABE8NAiAGQf3///8DTw0DIAZBAnRBDWohBgsgDiAGSQ0DAkAgDiAGayIPRQ0AIA0gBmohECAHKAI0IREgBygCOCESIAcoAkAhEyAHKAJEIRRBACEVQQAhFgNAQQAhCUEAIQhBACEGAkACQANAIBAgBmosAAAiF0F/Sg0BIBdB/wBxIAh0IAlyIQkgCEEHaiEIIA8gBkEBaiIGRw0AC0EAIQhBACEGDAELIAZBAWoiBiAPSw0HIBcgCHQgCXIhCAsgBCAIQQF2QQAgCEEBcWtzIBZqIhY2AkAgFiAUTw0HAkACQCATIBZBAnRqIgkoAgAiCCAVTw0AIAggEk8NCiARIAhBAnRqKAIAIBZGDQELIAQgFTYCRCAVIBJPDQogESAVQQJ0aiAWNgIAIAcgFUEBaiIINgJIIAkgFTYCACAIIRULIBAgBmohECAPIAZrIg8NAAsLIAdBmAFqIRUgDSAOEM8YRQ0NIANBCHYhCCANIA4QrhkhBgJAIANBAXENAAJAAkAgCEH/AXEiCUF2ag4EAQ4OAA4LIAxBAXFFDQwgDS0AAEEIcUUNDAwNCyAMQQFxRQ0JDAoLIAZBKnIhBgwMCyAGIAhBtICEARCzEQALQYzehAEQmyAAC0Gc3oQBEJsgAAsgBiAOQezdhAEQoyAACyAGIA9B/N2EARCjIAALIBYgFEGk54QBELMRAAsgCCASQbTnhAEQsxEACyAEQQM2AkwgBEHs5oQBNgJIIARCAzcCVCAEQb4BNgJ0IARBKjYCbCAEQSo2AmQgBCASNgJ8IAQgBEHgAGo2AlAgBCAEQcAAajYCcCAEIARB/ABqNgJoIAQgBEHEAGo2AmAgBEHIAGpBhOeEARCFGwALIA0tAABBCHENAgsgBkEgciEGDAELIAZBIHIhBgsgBkEIciAGIAstAOACIAlGGyEGCwJAIA0tAAAiCUEIcUUNAAJAAkAgDEEBcUUNACAIQf8BcUENRw0BIANBAXFFDQIMAQsgCEH/AXFBCkcNACADQQFxRQ0BCyAGQRByIQYLIAlBBHEhFwJAAkACQAJAAkAgA0EBcUUNAAJAIBdFDQAgBkHAggpyIQkMAgsgBkGAhQpyIQkMBAtBwAJBgAUgF0EARyAIQf8BcUHU54QBai0AACIIcxsgBnIhCSAIDQEgCUGAgApyIQkgF0UNAgsgCUGA0AByIQkMAgsgFw0BCyAJQYAociAJIAgbIQkLIA0gDhCuGSEGIA0gDhDPGCAGQX9zcSAJcUUNACAHKAJIIgggBygCOCIGSw0BAkAgCEUNACAHKAI0IQYgCEECdCEIIAdBzABqIRcDQCAFKAKABSAGKAIAIAkgFSAXEKYDIAZBBGohBiAIQXxqIggNAAsLQQAhBgNAIAcgBmoiCEHMAGoiCSgCACEXIAkgCEEwaiIIKAIANgIAIAggFzYCACAGQQRqIgZBHEcNAAsgB0EANgJkCyAEQSBqQYzchAFBldyEARCKFCAEQTBqQQhqIARBIGpBCGooAgA2AgAgBCAEKQMgNwMwIAsoArgCIgZBPHFFDQYgCy0A4AIgA0EIdkH/AXFHDQYgA0EBcQ0GIAQoAjQiBiAEKAI4IgkQrhkhCCAJRQ0BIAlBf2oiCUUNAiAGIAhBBHI6AAEgCUEBRg0DIAYgCEEIdjoAAiAJQQJNDQQgBiAIQRB2OgADIAlBA0YNBSAGIAhBGHY6AAQgCygCuAIhBgwGCyAIIAZBxOeEARCPIAALQQFBAEHs3oQBEKMgAAtBAEEAQZjRhAEQsxEAC0EBQQFBqNGEARCzEQALQQJBAkG40YQBELMRAAtBA0EDQcjRhAEQsxEACwJAIAZBMHFFDQAgA0GA/gNxIQgCQAJAIAxBAXFFDQAgCEGAGkcNAiADQQFxRQ0BDAILIAhBgBRHDQEgA0EBcQ0BCyAEKAI0IgYgBCgCOCIJEK4ZIQgCQAJAAkACQAJAIAlFDQAgCUF/aiIJRQ0BIAYgCEEQcjoAASAJQQFGDQIgBiAIQQh2OgACIAlBAk0NAyAGIAhBEHY6AAMgCUEDRg0EIAYgCEEYdjoABCALKAK4AiEGDAULQQFBAEHs3oQBEKMgAAtBAEEAQZjRhAEQsxEAC0EBQQFBqNGEARCzEQALQQJBAkG40YQBELMRAAtBA0EDQcjRhAEQsxEACwJAIAZBwP8PcUUNAAJAIANBAXENACADQQh2Qf8BcUHU54QBai0AAEEBRg0BCyAEKAI0IgYgBCgCOCIJEK4ZIQgCQAJAAkACQAJAIAlFDQAgCUF/aiIJRQ0BIAYgCDoAASAJQQFGDQIgBiAIQYCABXIiF0EIdjoAAiAJQQJNDQMgBiAXQRB2OgADIAlBA0YNBCAGIAhBGHY6AAQMBQtBAUEAQezehAEQoyAAC0EAQQBBmNGEARCzEQALQQFBAUGo0YQBELMRAAtBAkECQbjRhAEQsxEAC0EDQQNByNGEARCzEQALAkACQCAHKAJIIhcgBygCOCIGSw0AIBdFDQECQCAHKAI0IgYoAgAiCCALKALQAiIJTw0AIApBAkYgCnIhEiAGIBdBAnRqIRAgB0HMAGohESADQQFxIRYgA0EIdkH/AXEiF0ECdCEUA0AgBkEEaiEGAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAsoAswCIAhBFGxqIggoAgAOCQABAgQEBAQEBQALIBYNAyAILQAIIBdLDQMgCC0ACUH/AXEgF0kNAyAIKAIEIQgMAgsgFg0CIAgoAghBA3QhCSAIKAIEQQVqIQ8DQCAPIQggCUUNAyAIQX9qLQAAIBdLDQMgCUF4aiEJIAhBCGohDyAILQAAIBdJDQALIAhBe2ooAgAhCAwBCyAWDQEgCCgCCCIJIBdNDQMgCCgCBCAUaigCACIIRQ0BCyAEKAI0IAQoAjgQrxkhCSAFKAKABSAIIAkgFSAREKYDCyAGIBBGDQoMBgsgBCgCOEUNASAIKAIEIQgCQCAEKAI0IgktAAAiD0ECcQ0AIAhFDQQgBEEwakEEEO8bIAQoAjQiCSAEKAI4Ig9qQQA2AAAgBCAPQQRqIg82AjggD0UNAyAJIAktAAAiD0ECcjoAAAJAIA9BAXENACAJIA9BA3I6AAAMAQsgBEEwakEAEI0RCyAEQTBqIAgQjREMBAsgFyAJQYzBhAEQsxEAC0EAQQBBrN2EARCzEQALQQBBAEG83oQBELMRAAsgCSAPQQFyOgAACyASIAYgEEZyQQFxDQQLIAYoAgAiCCALKALQAiIJSQ0ACwsgCCAJQfC7hAEQsxEACyAXIAZBxOeEARCPIAALAkACQAJAAkACQAJAIAcoAmRFDQACQCALKAK4AiIGQcD/D3FFDQAgA0EBcQ0AIANBCHZB/wFxQdTnhAFqLQAARQ0AAkAgBCgCOEUNACAEKAI0IgYgBi0AAEEEcjoAACALKAK4AiEGDAELQQBBAEHM3oQBELMRAAsgBkEwcUUNACADQYD+A3EhBgJAAkAgDEEBcUUNACAGQYAURw0CIANBAXFFDQEMAgsgBkGAGkcNASADQQFxDQELIAQoAjhFDQEgBCgCNCIGIAYtAABBCHI6AAALIARB4ABqIARBMGoQ8QwgBSgCgAUgB0HMAGogBEHgAGoQvAYgBCkDYCEYIAQoAmgiBiAHEJAUakEEIAVBhAVqKAIAIgh0akEUaiAFKAKIBUsiC0UNASAIIAcgAhDxGSIXKAIAIgggCCgCACIJQQFqNgIAIAlBf0wNAiAXKAIEIQkCQCAHKAIgQQFHDQAgBygCKCIXIBcoAgAiF0F/ajYCACAXQQFHDQAgBygCKCAHQSxqKAIAEPoXCyAHIAk2AiwgByAINgIoIAcgAjYCJCAHQQE2AiAMAQtBAEEAQdzehAEQsxEACyAYQiCIpyEXIBinIRYCQAJAAkACQAJAIAcoAgxFDQAgBykDECAHQRhqKQMAIBcgBhDCBiEYIAcoAgQiECAYp3EhCCAYQhmIQv8Ag0KBgoSIkKDAgAF+IRkgBygCACEJQQAhFQNAAkAgCSAIaikAACIaIBmFIhhCf4UgGEL//fv379+//358g0KAgYKEiJCgwIB/gyIYUA0AA0AgFyAGIAlBACAYeqdBA3YgCGogEHFrQQxsaiIPQXRqKAIAQQhqIA9BeGooAgAQmxwNBCAYQn98IBiDIhhQRQ0ACwsgGiAaQgGGg0KAgYKEiJCgwIB/g1BFDQEgCCAVQQhqIhVqIBBxIQgMAAsLIARBGGogBhDLDyAEKAIYIhBBCGohCCAEKAIcIRUCQCAGRQ0AIAggFyAG/AoAAAsCQAJAAkAgFSAHEJAUakEEIAVBhAVqKAIAdGpBFGogBSgCiAVNDQAgARDnDA0BCyAEQRBqIAEQyRAgBCgCEEEBcUUNAQsgECAQKAIAIghBf2o2AgBBASEGAkAgCEEBRg0ADAQLIBAgFRD6FwwDCwJAIBVFDQAgBCgCFCEGIAgtAAAhCCAHQfQAakEBIAVBhAVqKAIAdBD/ESAGIAhBAXFBG3RyIQggBUHgBGoiEkGwy4QBQSAQkhVFDQIgBSAIEPAZDQIgBUGEBWooAgAQxxUhESABKAIEIRQgASgCACETQQAhCUEAIQYDQCAGQYACRg0DIAQgEiAGQQN2QfD///8BcWoiDykDACAPKQMIIAZB/wBxEI0SAkAgBCgCAEEBcUUNACAGQf8BSw0EIBMgFCAIIAkgERCKCQsgBkEBaiEGIAlBgAJqIQkMAAsLQQBBAEGc3YQBELMRDAQLIA9BfGooAgAhCCAHQQA2AqwBIAcoAqgBIQYgByAXNgKoASAHKAKkASEJIAcgFjYCpAEgCSAGEKQgDAILIAcgBygCaCAVajYCaCAQIBAoAgAiBkEBajYCACAGQX9MDQICQCAHKAKUASIGIAcoAowBRw0AIAdBjAFqEIUWCyAHKAKQASAGQQN0aiIJIBU2AgQgCSAQNgIAIAcgBkEBajYClAEgByAQIBUgCBD5BUEAIQYLIAdBADYCrAEgBygCqAEhCSAHIBc2AqgBIAcoAqQBIRcgByAWNgKkASAXIAkQpCAgBkUNAEEBIQYMAwsgC0UNASAHKAIgIQYgB0EANgIgIAcoAiQhAgJAAkAgBg4DAQADAQsgBygCLCEXIAcoAigiBiAGKAIAIglBf2o2AgAgCUEBRw0CIAYgFxD6FwwCC0G0goQBQShB3IKEARDyEgALAAsgASgCACABKAIEIAIgAyAIEIoJQQAhBgsgACAINgIEIAAgBjYCACAEQYABaiQAC8kiAhp/A34jAEHgAWsiBiQAAkACQAJAAkAgAygCACIHQX9qQQJJDQACQAJAAkAgBSABKAKkDSIIKALEAigCEEEBdEsNACAGQZABaiABKALAEiABKALEEiIJKAIIQX9qQXhxakEIaiIKIAMoAggiCyADKAIMIgwgAygCECINIAMoAhQiDiAJKAIQIg8REwACQAJAIAYoApABQQFHDQAgAkHYAWohECAOQQFqIREgAkEYaiESIAFBsA1qIRMgASkDCCEgIAEpAwAhISABLQCsDSEUIAMtABghFUEAIRYgAS0A1BJBAXEhFyABKQOwDUIChSABKQO4DYQhIiANIRhBACEZA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAYoApQBIgkgFkkNACAGKAKYASEaIAYgDTYCuAEgBiAJNgK8AQJAAkAgCSAMSw0AIA0gCUEBaiIbTQ0BCyAGQQI2ApQBIAZBgJ2bATYCkAEgBkICNwKcASAGQQ42AtQBIAZBwAE2AswBIAYgDDYCrAEgBiAGQcgBajYCmAEgBiAGQawBajYC0AEgBiAGQbgBajYCyAEgBkGQAWpBkJ2bARCFGwALIAYgHEGAfnEgFXIiHDYCjAEgBiAJNgKIASAGIA02AoQBIAYgDDYCgAEgBiALNgJ8IAZBATYCdCAXDQEgIlANAyACKALIAUECRg0CIAZByAFqIBMgEiAGQfQAaiAZENIBIAYoAswBIR0CQCAGKALIASIZQQJGDQACQAJAIBlBAXFFDQAgBiAGKALQASIZNgKsASAGIA42ArABIA4gDEsNByAZIBFLDQcgBiAHQYB+cSAVciIHNgKoASAGIA42AqQBIAYgGTYCoAEgBiAMNgKcASAGIAs2ApgBIAYgHTYClAEgBkECNgKQASAUQQFxDQgCQCAhQgKFICCEUA0AIAIoAsgEQQJGDQogBkG4AWogASAQIAZBkAFqEIoCIAYoArgBIhZBAkcNAgwWCyAGQQE2AswBIAZBhJ6EATYCyAEgBkIANwLUASAGIAZBrAFqNgLQASAGQcgBakGMnoQBEIUbAAsgGCAOTw0RIAlBf0YNDgwPCwJAIBZBAXFFDQAgCUF/Rg0JIAYoArwBIRYMDwsgGSAGKALAASIBSw0JQQEhCQwRCyAdQQFxDRILIBRBAXENCCAhQgKFICCEUA0KIAIoAsgEQQJGDQkgBkGQAWogASAQIAMQ8gMCQCAGKAKQASIJQQJHDQAgBigClAEQtRAaIAZByABqIAEgAiADEL8EDBMLIAYgBikCmAE3AlAgBiAGKAKUATYCTCAGIAk2AkgMEgtBsqObAUEoQdyihAEQ3RcAC0G8ooQBEJsgAAsgBkEBNgKUASAGQYSehAE2ApABIAZCADcCnAEgBiAGQawBajYCmAEgBkGQAWpBnJ6EARCFGwALIAZBAjYCzAEgBkGAnZsBNgLIASAGQgI3AtQBIAZBDjYCxAEgBkHAATYCvAEgBiAMNgK0ASAGIAZBuAFqNgLQASAGIAZBtAFqNgLAASAGIAZBrAFqNgK4ASAGQcgBakGQnZsBEIUbAAtBsqObAUEoQeyhhAEQ3RcAC0H8oIQBEJsgAAtBrJ2EARCbIAALIAZBADYC2AEgBkEBNgLMASAGQcTmgwE2AsgBIAZCBDcC0AEgBkHIAWpBoOKEARCFGwALQbKjmwFBKEHMoYQBEN0XAAtB3KCEARCbIAALIAZByABqIAEgAiADEL8EDAcLQZydhAEQmyAACyAGQZABaiAKIAsgDCAbIA4gDxETACAbIRggGiEZIAYoApABDQALC0EAIQkLIAYgHTYCVCAGIAE2AlAgBiAZNgJMIAYgCTYCSAwCCyADKAIEIR4gBkGQAWogASgCwBIgASgCxBIiCSgCCEF/akF4cWpBCGoiCiADKAIIIgsgAygCDCIMIAMoAhAiDSADKAIUIg4gCSgCECIPERMAIAYoApABQQFHDQMgAkHYAWohESAOQQFqIR8gAkEYaiESIAFBsA1qIRMgASkDCCEgIAEpAwAhISABLQCsDSEQIAMtABghHUEAIRYgAS0A1BJBAXEhFyABKQOwDUIChSABKQO4DYQhIiANIRVBACEZAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBigClAEiCSAWSQ0AIAYoApgBIRogBiANNgK4ASAGIAk2ArwBIAkgDEsNASANIAlBAWoiG0sNASAGIBxBgH5xIB1yIhw2AowBIAYgCTYCiAEgBiANNgKEASAGIAw2AoABIAYgCzYCfCAGQQE2AnQgFw0CICJQDQQgAigCyAFBAkYNAyAGQcgBaiATIBIgBkH0AGogGRDSASAGKALMASEYAkAgBigCyAEiGUECRg0AAkACQCAZQQFxRQ0AIAYgBigC0AEiGTYCSCAGIA42AkwgDiAMSw0IIBkgH0sNCCAGIBRBgH5xIB1yIhQ2AqgBIAYgDjYCpAEgBiAZNgKgASAGIAw2ApwBIAYgCzYCmAEgBiAYNgKUASAGQQI2ApABIBBBAXENCQJAICFCAoUgIIRQDQAgAigCyARBAkYNCyAGQbgBaiABIBEgBkGQAWoQigIgBigCuAEiFkECRw0CDBkLIAZBATYCzAEgBkGEnoQBNgLIASAGQgA3AtQBIAYgBkGsAWo2AtABIAZByAFqQYyehAEQhRsACyAVIA5PDRsgCUF/Rg0SDBULAkAgFkEBcUUNACAJQX9GDQogBigCvAEhFgwVCyAZIAYoAsABIglLDRIgBiAZNgLIASAGIAk2AswBIAkgDEsNCiAZIAlBAWpLDQogBiAdOgCoASAGIAk2AqQBIAYgGTYCoAEgBiAMNgKcASAGIAs2ApgBIAYgGDYClAEgBkECNgKQASAGQcAAaiABIAIgBkGQAWogBCAFEKkGIAYoAkQhCSAGKAJAIQEMHAsgGEEBcQ0VCwJAIAUgCCgCxAIoAhBBAXRLDQAgEEEBcQ0KICFCAoUgIIRQDQwgAigCyARBAkYNCyAGQZABaiABIBEgAxDyAwJAIAYoApABIglBAkcNACAGKAKUARC1EBogBkH0AGogASACIAMQvwQMEwsgBiAGKQKYATcCfCAGIAYoApQBNgJ4IAYgCTYCdAwSCwJAIAEoAuQKQQNGDQAgASgCiAsiCSgCsAIgCSgCtAJHDQAgBkEwaiABIAIgAyAEIAUQqQYgBigCNCEJIAYoAjAhAQwbCyAQQQFxDQwCQAJAICFCAoUgIIRQDQAgAigCyARBAkYNDyAGQZABaiABIBEgAxDyAyAGKAKQASIJQQJHDQEgBigClAEQtRAaCyAGQSBqIAEgAiADIAQgBRCpBiAGKAIkIQkgBigCICEBDBsLIAlBAXFFDRggBigCnAEhCSAGKAKYASEDIAYoApQBIRsgBiAONgKkASAGIA02AqABIAYgDDYCnAEgBiALNgKYASAGIB06AKgBIAYgHjYClAEgBiAHNgKQASAGQdgAaiAGQZABaiAbIAMQvwsgBiAJNgJcIAZBAjYCWCAGQShqIAEgAiAGQdgAaiAEIAUQqQYgBigCKEEBcUUNDiAGKAIsIQlBASEBDBoLIAZBAjYClAEgBkGAnZsBNgKQASAGQgI3ApwBIAZBDjYC1AEgBkHAATYCzAEgBiAMNgJIIAYgBkHIAWo2ApgBIAYgBkHIAGo2AtABIAYgBkG4AWo2AsgBIAZBkAFqQZCdmwEQhRsAC0Gyo5sBQShB3KKEARDdFwALQbyihAEQmyAACyAGQQE2ApQBIAZBhJ6EATYCkAEgBkIANwKcASAGIAZBrAFqNgKYASAGQZABakGcnoQBEIUbAAsgBkECNgLMASAGQYCdmwE2AsgBIAZCAjcC1AEgBkEONgLEASAGQcABNgK8ASAGIAw2AqwBIAYgBkG4AWo2AtABIAYgBkGsAWo2AsABIAYgBkHIAGo2ArgBIAZByAFqQZCdmwEQhRsAC0Gyo5sBQShB7KGEARDdFwALQfyghAEQmyAAC0GsnYQBEJsgAAsgBkECNgKUASAGQYCdmwE2ApABIAZCAjcCnAEgBkEONgKAASAGQcABNgJ4IAYgDDYCuAEgBiAGQfQAajYCmAEgBiAGQbgBajYCfCAGIAZByAFqNgJ0IAZBkAFqQZCdmwEQhRsAC0Gyo5sBQShBzKGEARDdFwALQdyghAEQmyAACyAGQfQAaiABIAIgAxC/BAwFC0Gyo5sBQShBzKGEARDdFwALQdyghAEQmyAAC0GUmoQBQRNBqJqEARDyEgALQZydhAEQmyAACyAGQQA2AtgBIAZBATYCzAEgBkHE5oMBNgLIASAGQgQ3AtABIAZByAFqQaDihAEQhRsACyAGKAJ0RQ0GQQEhASAGKAKAASIJQQF0IgNBAXIhAiAGKQJ4ISICQCADIAVPDQAgBCADQQJ0aiAip0EBajYCAAsgAiAFTw0IQQEhASAEIAJBAnRqICJCIIinQQFqNgIADAgLIAZBkAFqIAogCyAMIBsgDiAPERMAIBshFSAaIRkgBigCkAFFDQUMAAsLIAZBOGogASACIAMgBCAFEKkGIAYoAjwhCSAGKAI4IQEMBQsgBkHIAGogASACIAMQvwQLIAYoAkhFDQFBASEBIAYoAlQiCUEBdCIDQQFyIQIgBikCTCEiAkAgAyAFTw0AIAQgA0ECdGogIqdBAWo2AgALIAIgBU8NA0EBIQEgBCACQQJ0aiAiQiCIp0EBajYCAAwDCwJAAkACQAJAAkACQAJAAkAgBSABKAKkDSgCxAIoAhBBAXRLDQAgAS0ArA1BAUYNASABKQMAQgKFIAEpAwiEUA0DIAIoAsgEQQJGDQIgBkGQAWogASACQdgBaiADEPIDAkAgBigCkAEiCUECRw0AIAYoApQBELUQGiAGQfQAaiABIAIgAxC/BAwICyAGIAYpApgBNwJ8IAYgBigClAE2AnggBiAJNgJ0DAcLAkACQCABKALkCkEDRw0AIAEtAKwNRQ0BQbKjmwFBKEHMoYQBEN0XAAsgBkEYaiABIAIgAyAEIAUQqQYgBigCHCEJIAYoAhghAQwKCwJAAkAgASkDAEIChSABKQMIhFANACACKALIBEECRg0FIAZBkAFqIAEgAkHYAWogAxDyAyAGKAKQASIJQQJHDQEgBigClAEQtRAaCyAGQQhqIAEgAiADIAQgBRCpBiAGKAIMIQkgBigCCCEBDAoLIAlBAXFFDQcgBigCnAEhDSAGKAKUASEJIAMtABghDiADKAIMIQwgAygCCCEbIAYgBigCmAEiAzYCzAEgBiAJNgLIASAJIANBAWpLDQQgAyAMSw0EIAYgDjoAqAEgBiADNgKkASAGIAk2AqABIAYgDDYCnAEgBiAbNgKYASAGIA02ApQBIAZBAjYCkAEgBkEQaiABIAIgBkGQAWogBCAFEKkGQQEhASAGKAIQQQFxRQ0FIAYoAhQhCQwJC0Gyo5sBQShBzKGEARDdFwALQdyghAEQmyAACyAGQfQAaiABIAIgAxC/BAwDC0HcoIQBEJsgAAsgBkECNgKUASAGQYCdmwE2ApABIAZCAjcCnAEgBkEONgKAASAGQcABNgJ4IAYgDDYCuAEgBiAGQfQAajYCmAEgBiAGQbgBajYCfCAGIAZByAFqNgJ0IAZBkAFqQZCdmwEQhRsAC0GUmoQBQRNBqJqEARDyEgALIAYoAnQNAQtBACEBDAELQQEhASAGKAKAASIJQQF0IgNBAXIhAiAGKQJ4ISICQCADIAVPDQAgBCADQQJ0aiAip0EBajYCAAsgAiAFTw0AQQEhASAEIAJBAnRqICJCIIinQQFqNgIACyAAIAE2AgAgACAJNgIEIAZB4AFqJAAL+CMCCH8BfgJAAkACQAJAAkACQAJAAkAgAEH1AUkNAEEAIQEgAEHM/3tLDQUgAEELaiIBQXhxIQJBACgClPCdASIDRQ0EQR8hBAJAIABB9P//B0sNACACQQYgAUEIdmciAGt2QQFxIABBAXRrQT5qIQQLQQAgAmshAQJAIARBAnRB+OydAWooAgAiBQ0AQQAhAEEAIQYMAgtBACEAIAJBAEEZIARBAXZrIARBH0YbdCEHQQAhBgNAAkAgBSIFKAIEQXhxIgggAkkNACAIIAJrIgggAU8NACAIIQEgBSEGIAgNAEEAIQEgBSEGIAUhAAwECyAFKAIUIgggACAIIAUgB0EddkEEcWooAhAiBUcbIAAgCBshACAHQQF0IQcgBUUNAgwACwsCQEEAKAKQ8J0BIgVBECAAQQtqQfgDcSAAQQtJGyICQQN2IgF2IgBBA3FFDQACQAJAIABBf3NBAXEgAWoiB0EDdCIAQYjunQFqIgEgAEGQ7p0BaigCACICKAIIIgZGDQAgBiABNgIMIAEgBjYCCAwBC0EAIAVBfiAHd3E2ApDwnQELIAIgAEEDcjYCBCACIABqIgAgACgCBEEBcjYCBCACQQhqDwsgAkEAKAKY8J0BTQ0DAkACQAJAIAANAEEAKAKU8J0BIgBFDQYgAGhBAnRB+OydAWooAgAiBigCBEF4cSACayEBIAYhBQNAAkAgBigCECIADQAgBigCFCIADQAgBSgCGCEEAkACQAJAIAUoAgwiACAFRw0AIAVBFEEQIAUoAhQiABtqKAIAIgYNAUEAIQAMAgsgBSgCCCIGIAA2AgwgACAGNgIIDAELIAVBFGogBUEQaiAAGyEHA0AgByEIIAYiAEEUaiAAQRBqIAAoAhQiBhshByAAQRRBECAGG2ooAgAiBg0ACyAIQQA2AgALIARFDQQCQAJAIAUgBSgCHEECdEH47J0BaiIGKAIARg0AAkAgBCgCECAFRg0AIAQgADYCFCAADQIMBwsgBCAANgIQIAANAQwGCyAGIAA2AgAgAEUNBAsgACAENgIYAkAgBSgCECIGRQ0AIAAgBjYCECAGIAA2AhgLIAUoAhQiBkUNBCAAIAY2AhQgBiAANgIYDAQLIAAoAgRBeHEgAmsiBiABIAYgAUkiBhshASAAIAUgBhshBSAAIQYMAAsLAkACQCAAIAF0QQIgAXQiAEEAIABrcnFoIghBA3QiAUGI7p0BaiIGIAFBkO6dAWooAgAiACgCCCIHRg0AIAcgBjYCDCAGIAc2AggMAQtBACAFQX4gCHdxNgKQ8J0BCyAAIAJBA3I2AgQgACACaiIHIAEgAmsiBkEBcjYCBCAAIAFqIAY2AgACQEEAKAKY8J0BIgVFDQAgBUF4cUGI7p0BaiEBQQAoAqDwnQEhAgJAAkBBACgCkPCdASIIQQEgBUEDdnQiBXENAEEAIAggBXI2ApDwnQEgASEFDAELIAEoAgghBQsgASACNgIIIAUgAjYCDCACIAE2AgwgAiAFNgIIC0EAIAc2AqDwnQFBACAGNgKY8J0BIABBCGoPC0EAQQAoApTwnQFBfiAFKAIcd3E2ApTwnQELAkACQAJAIAFBEEkNACAFIAJBA3I2AgQgBSACaiICIAFBAXI2AgQgAiABaiABNgIAQQAoApjwnQEiB0UNASAHQXhxQYjunQFqIQZBACgCoPCdASEAAkACQEEAKAKQ8J0BIghBASAHQQN2dCIHcQ0AQQAgCCAHcjYCkPCdASAGIQcMAQsgBigCCCEHCyAGIAA2AgggByAANgIMIAAgBjYCDCAAIAc2AggMAQsgBSABIAJqIgBBA3I2AgQgBSAAaiIAIAAoAgRBAXI2AgQMAQtBACACNgKg8J0BQQAgATYCmPCdAQsgBUEIag8LAkAgACAGcg0AQQAhBkECIAR0IgBBACAAa3IgA3EiAEUNAyAAaEECdEH47J0BaigCACEACyAARQ0BCwNAIAAgBiAAKAIEQXhxIgUgAmsiCCABSSIEGyEDIAUgAkkhByAIIAEgBBshCAJAIAAoAhAiBQ0AIAAoAhQhBQsgBiADIAcbIQYgASAIIAcbIQEgBSEAIAUNAAsLIAZFDQACQEEAKAKY8J0BIgAgAkkNACABIAAgAmtPDQELIAYoAhghBAJAAkACQCAGKAIMIgAgBkcNACAGQRRBECAGKAIUIgAbaigCACIFDQFBACEADAILIAYoAggiBSAANgIMIAAgBTYCCAwBCyAGQRRqIAZBEGogABshBwNAIAchCCAFIgBBFGogAEEQaiAAKAIUIgUbIQcgAEEUQRAgBRtqKAIAIgUNAAsgCEEANgIACyAERQ0DAkACQCAGIAYoAhxBAnRB+OydAWoiBSgCAEYNAAJAIAQoAhAgBkYNACAEIAA2AhQgAA0CDAYLIAQgADYCECAADQEMBQsgBSAANgIAIABFDQMLIAAgBDYCGAJAIAYoAhAiBUUNACAAIAU2AhAgBSAANgIYCyAGKAIUIgVFDQMgACAFNgIUIAUgADYCGAwDCwJAAkACQAJAAkACQEEAKAKY8J0BIgAgAk8NAAJAQQAoApzwnQEiACACSw0AQQAhASACQa+ABGoiBkEQdkAAIgBBf0YiBw0HIABBEHQiBUUNB0EAQQAoAqjwnQFBACAGQYCAfHEgBxsiCGoiADYCqPCdAUEAIABBACgCrPCdASIBIAAgAUsbNgKs8J0BAkACQAJAQQAoAqTwnQEiAUUNAEH47Z0BIQADQCAAKAIAIgYgACgCBCIHaiAFRg0CIAAoAggiAA0ADAMLCwJAAkBBACgCtPCdASIARQ0AIAAgBU0NAQtBACAFNgK08J0BC0EAQf8fNgK48J0BQQAgCDYC/O2dAUEAIAU2AvjtnQFBAEGI7p0BNgKU7p0BQQBBkO6dATYCnO6dAUEAQYjunQE2ApDunQFBAEGY7p0BNgKk7p0BQQBBkO6dATYCmO6dAUEAQaDunQE2AqzunQFBAEGY7p0BNgKg7p0BQQBBqO6dATYCtO6dAUEAQaDunQE2AqjunQFBAEGw7p0BNgK87p0BQQBBqO6dATYCsO6dAUEAQbjunQE2AsTunQFBAEGw7p0BNgK47p0BQQBBwO6dATYCzO6dAUEAQbjunQE2AsDunQFBAEEANgKE7p0BQQBByO6dATYC1O6dAUEAQcDunQE2AsjunQFBAEHI7p0BNgLQ7p0BQQBB0O6dATYC3O6dAUEAQdDunQE2AtjunQFBAEHY7p0BNgLk7p0BQQBB2O6dATYC4O6dAUEAQeDunQE2AuzunQFBAEHg7p0BNgLo7p0BQQBB6O6dATYC9O6dAUEAQejunQE2AvDunQFBAEHw7p0BNgL87p0BQQBB8O6dATYC+O6dAUEAQfjunQE2AoTvnQFBAEH47p0BNgKA750BQQBBgO+dATYCjO+dAUEAQYDvnQE2AojvnQFBAEGI750BNgKU750BQQBBkO+dATYCnO+dAUEAQYjvnQE2ApDvnQFBAEGY750BNgKk750BQQBBkO+dATYCmO+dAUEAQaDvnQE2AqzvnQFBAEGY750BNgKg750BQQBBqO+dATYCtO+dAUEAQaDvnQE2AqjvnQFBAEGw750BNgK8750BQQBBqO+dATYCsO+dAUEAQbjvnQE2AsTvnQFBAEGw750BNgK4750BQQBBwO+dATYCzO+dAUEAQbjvnQE2AsDvnQFBAEHI750BNgLU750BQQBBwO+dATYCyO+dAUEAQdDvnQE2AtzvnQFBAEHI750BNgLQ750BQQBB2O+dATYC5O+dAUEAQdDvnQE2AtjvnQFBAEHg750BNgLs750BQQBB2O+dATYC4O+dAUEAQejvnQE2AvTvnQFBAEHg750BNgLo750BQQBB8O+dATYC/O+dAUEAQejvnQE2AvDvnQFBAEH4750BNgKE8J0BQQBB8O+dATYC+O+dAUEAQYDwnQE2AozwnQFBAEH4750BNgKA8J0BQQAgBTYCpPCdAUEAQYDwnQE2AojwnQFBACAIQVhqIgA2ApzwnQEgBSAAQQFyNgIEIAUgAGpBKDYCBEEAQYCAgAE2ArDwnQEMCAsgASAFTw0AIAYgAUsNACAAKAIMRQ0DC0EAQQAoArTwnQEiACAFIAAgBUkbNgK08J0BIAUgCGohBkH47Z0BIQACQAJAAkADQCAAKAIAIgcgBkYNASAAKAIIIgANAAwCCwsgACgCDEUNAQtB+O2dASEAAkADQAJAIAAoAgAiBiABSw0AIAEgBiAAKAIEaiIGSQ0CCyAAKAIIIQAMAAsLQQAgBTYCpPCdAUEAIAhBWGoiADYCnPCdASAFIABBAXI2AgQgBSAAakEoNgIEQQBBgICAATYCsPCdASABIAZBYGpBeHFBeGoiACAAIAFBEGpJGyIHQRs2AgRBACkC+O2dASEJIAdBEGpBACkCgO6dATcCACAHIAk3AghBACAINgL87Z0BQQAgBTYC+O2dAUEAIAdBCGo2AoDunQFBAEEANgKE7p0BIAdBHGohAANAIABBBzYCACAAQQRqIgAgBkkNAAsgByABRg0HIAcgBygCBEF+cTYCBCABIAcgAWsiAEEBcjYCBCAHIAA2AgACQCAAQYACSQ0AIAEgABD2CAwICyAAQfgBcUGI7p0BaiEGAkACQEEAKAKQ8J0BIgVBASAAQQN2dCIAcQ0AQQAgBSAAcjYCkPCdASAGIQAMAQsgBigCCCEACyAGIAE2AgggACABNgIMIAEgBjYCDCABIAA2AggMBwsgACAFNgIAIAAgACgCBCAIajYCBCAFIAJBA3I2AgQgB0EPakF4cUF4aiIBIAUgAmoiAGshAiABQQAoAqTwnQFGDQMgAUEAKAKg8J0BRg0EAkAgASgCBCIGQQNxQQFHDQAgASAGQXhxIgYQ2gcgBiACaiECIAEgBmoiASgCBCEGCyABIAZBfnE2AgQgACACQQFyNgIEIAAgAmogAjYCAAJAIAJBgAJJDQAgACACEPYIDAYLIAJB+AFxQYjunQFqIQECQAJAQQAoApDwnQEiBkEBIAJBA3Z0IgJxDQBBACAGIAJyNgKQ8J0BIAEhAgwBCyABKAIIIQILIAEgADYCCCACIAA2AgwgACABNgIMIAAgAjYCCAwFC0EAIAAgAmsiATYCnPCdAUEAQQAoAqTwnQEiACACaiIGNgKk8J0BIAYgAUEBcjYCBCAAIAJBA3I2AgQgAEEIaiEBDAYLQQAoAqDwnQEhAQJAAkAgACACayIGQQ9LDQBBAEEANgKg8J0BQQBBADYCmPCdASABIABBA3I2AgQgASAAaiIAIAAoAgRBAXI2AgQMAQtBACAGNgKY8J0BQQAgASACaiIFNgKg8J0BIAUgBkEBcjYCBCABIABqIAY2AgAgASACQQNyNgIECyABQQhqDwsgACAHIAhqNgIEQQBBACgCpPCdASIAQQ9qQXhxIgFBeGoiBjYCpPCdAUEAIAAgAWtBACgCnPCdASAIaiIBakEIaiIFNgKc8J0BIAYgBUEBcjYCBCAAIAFqQSg2AgRBAEGAgIABNgKw8J0BDAMLQQAgADYCpPCdAUEAQQAoApzwnQEgAmoiAjYCnPCdASAAIAJBAXI2AgQMAQtBACAANgKg8J0BQQBBACgCmPCdASACaiICNgKY8J0BIAAgAkEBcjYCBCAAIAJqIAI2AgALIAVBCGoPC0EAIQFBACgCnPCdASIAIAJNDQBBACAAIAJrIgE2ApzwnQFBAEEAKAKk8J0BIgAgAmoiBjYCpPCdASAGIAFBAXI2AgQgACACQQNyNgIEIABBCGoPCyABDwtBAEEAKAKU8J0BQX4gBigCHHdxNgKU8J0BCwJAAkAgAUEQSQ0AIAYgAkEDcjYCBCAGIAJqIgAgAUEBcjYCBCAAIAFqIAE2AgACQCABQYACSQ0AIAAgARD2CAwCCyABQfgBcUGI7p0BaiECAkACQEEAKAKQ8J0BIgVBASABQQN2dCIBcQ0AQQAgBSABcjYCkPCdASACIQEMAQsgAigCCCEBCyACIAA2AgggASAANgIMIAAgAjYCDCAAIAE2AggMAQsgBiABIAJqIgBBA3I2AgQgBiAAaiIAIAAoAgRBAXI2AgQLIAZBCGoLiyECD38BfiMAQZACayICJAACQAJAAkACQAJAAkACQAJAAkAgASgCCCIDDQBBBCEEDAELQQAtAMDxnQEaIANBHGwQhQEiBEUNAQsgAkEANgIIIAIgBDYCBCACIAM2AgAgASgCACEFIAIgASgCBCIBIANBHGxqIgY2ArQBIAIgBTYCsAEgAiABNgKoAQJAIAMNACACIAE2AqwBIAJBqAFqELMVDAULIAJBEGpBBGoiB0EQaiEIQQAhAwJAA0ACQAJAAkAgASgCACIJQQhGDQAgCCABQRRqKQIANwIAIAdBCGogAUEMaikCADcCACAHIAFBBGopAgA3AgAgAkEANgIQIAIoAhQhCiACKAIYIQUgAigCHCELIAIpAiAhERDfEiEMIAIoAighDSACIAw2AiggAkEQahD1HSAJQQdHDQEgAiAKNgL4ASACIAU2AvABIAIgBTYC9AEgC0EcbCEMAkAgCyACKAIAIANrTQ0AIAIgAyALQQRBHBCmFyACKAIIIQMLIAIoAgQhBAJAIAxFDQAgBCADQRxsaiAFIAz8CgAACyACIAU2AvwBIAIgAyALaiIDNgIIIAJB8AFqELMVIA1BNEEEEJ4SDAILIAFBHGohBgwDCwJAIAMgAigCAEcNACACQfTGhQEQ/hUgAigCBCEECyAEIANBHGxqIgwgDTYCGCAMIBE3AhAgDCALNgIMIAwgBTYCCCAMIAo2AgQgDCAJNgIAIAIgA0EBaiIDNgIICyABQRxqIgEgBkcNAAsLIAIgBjYCrAEgAkGoAWoQsxUCQAJAAkACQAJAAkACQAJAIAMOAgwAAQsgAkEANgIIIAIoAgQiASgCACIDQQhGDQEgACADNgIAIAAgASkCBDcCBCAAQQxqIAFBDGopAgA3AgAgAEEUaiABQRRqKQIANwIADAwLIAIoAgQhAUEAIQUgAkEANgL4ASACQoCAgIDAADcC8AEgASADQRxsaiEKQX8hA0EEIQcCQAJAA0AgASgCAEEBRw0BIAJBqAFqIAFBBGooAgAgAUEIaigCACIMEKMHIAItAKgBIgtBAkYNASALQQFxDQECQAJAIAIoAqwBIgtBgAFPDQBBASEJDAELAkAgC0GAEE8NAEECIQkMAQtBA0EEIAtBgIAESRshCQsgDCAJRw0BAkAgA0EBaiIMIAIoAvABRw0AIAJB8AFqEJoWIAIoAvQBIQcLIAcgBWogCzYCACACIANBAmoiCzYC+AEgBUEEaiEFIAwhAyABQRxqIgEgCkcNAAsgAigC8AEiA0GAgICAeEYNASACKAL0ASEBIAIgAzYCNCACIAE2AjAgAiABNgIsIAIgASALQQJ0ajYCOCACQfQBaiACQSxqEMMJIAJBADYC8AEgACACQfABahCyCAwNCyACKALwASACKAL0AUEEQQQQwBELIAIoAgQhByACKAIIIQFBACEFIAJBADYC+AEgAkKAgICAEDcC8AEgAUUNASAHIAFBHGxqIQpBASEMIAchAQNAIAUhAwJAIAEoAgBBAUYNACACKALwASEFDAYLIAIoAvABIQUgAUEIaigCAEEBRw0FIAFBBGooAgAtAAAhCwJAIAMgBUcNACACQfABakGcyIUBEMENIAIoAvQBIQwLIAwgA2ogCzoAACACIANBAWoiBTYC+AEgAUEcaiIBIApHDQALIAIoAvABIg1BgICAgHhGDQUgBUEBdCIBQX9MDQIgAigC9AEhDEEAIQtBAC0AwPGdARogARCFASIBRQ0GIAJB9AFqIQcgAkEANgKwASACIAE2AqwBIAIgBTYCqAEgA0EBaiEJA0AgAUEBaiAMIAtqLQAAIgM6AAAgASADOgAAIAFBAmohASAJIAtBAWoiC0cNAAwECwtB5MaFARCbIAALQQAhDSACQQA2ArABIAJCgICAgBA3A6gBIAJB9AFqIQdBASEMQQAhBQwBC0Gc+poBENMZAAsgDSAMQQFBARDAESACKQOoASERIAJBqAFqQQhqIgEgBTYCACACIAVFOgC0ASACIBE3A6gBIAJBqAFqEOQEIAdBCGogASkDADcCACAHIAIpA6gBNwIAIAJBATYC8AEgACACQfABahCyCAwHCyAFIAxBAUEBEMARCyACQQA2AvgBIAJCgICAgMAANwLwASACQeQAaiACQfABahDdEyACQfABakEEciENIAJBqAFqQQRqIQQgByEMAkACQANAIAwoAgBBAkcNAgJAAkAgDCgCBEEBRw0AIAxBEGooAgAiAUEBdCEFIAxBDGooAgAhAwJAIAFFDQAgAyAFaiILQX5qRQ0AIAtBf2osAABBAEgNBQsgBUH+////A0sNAyABQQN0IglB/f///wdPDQMgAUH/////B3EhC0EAIQUCQAJAIAkNAEEEIQFBACEJDAELQQAtAMDxnQEaIAkQhQEiAUUNBiALIQkLIAJBADYC+AEgAiABNgL0ASACIAk2AvABAkAgC0UNAEEAIQUDQCABIAMtAAA2AgAgAUEEaiADQQFqLQAANgIAIAFBCGohASADQQJqIQMgCyAFQQFqIgVHDQALCyACIAIpA/ABNwPwASACIAU2AvgBIAIgBUU6APwBIAJB8AFqEPUEIAJBmAFqQQhqIgMgDUEIaigCADYCACACIA0pAgA3A5gBIAIoAvABIgFBgICAgHhGDQQgBCACKQOYATcCACAEQQhqIAMoAgA2AgAgAiABNgKoASACQeQAaiACQagBahCGCyABIAIoAqwBQQRBCBDAEQwBCyACQeQAaiAMQQhq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akEQaikCADcCACABQRhqIAJB8AFqQRhqKAIANgIAIAIgA0EBajYC6AEgAkHkAGogAkHgAWoQsgEgAigCZEEIRg0AIAAgAikCZDcCACAAQRhqIAJB5ABqQRhqKAIANgIAIABBEGogAkHkAGpBEGopAgA3AgAgAEEIaiACQeQAakEIaikCADcCAAwDCyACQQhqIgEgAkHkAGpBDGooAgAiAzYCACACIAIpAmg3AwAgACACKAIEIgUgBSADQRxsahDhBDYCGCAAQQc2AgAgAEEMaiABKAIANgIAIAAgAikDADcCBAwCCyACQQA2ArABIAJCgICAgBA3AqgBIAJB9AFqIAJBqAFqENwTIAJBATYC8AEgAkHwAWoQ2wchASAAQQI2AgAgACABNgIYIAAgAikC8AE3AgQgAEEMaiACQfgBaikCADcCACAAQRRqIAJBgAJqKAIANgIACyACEOkXCyACQZACaiQAC+oiAgp/AX4jAEGgAmsiAyQAIAEoAgwhBCADQeABaiACIAEoAggiBUEAEJUCAkACQCADLQDgAUEERg0AIAMpA+ABIg1C/wGDQgRRDQAgACANNwIADAELAkACQAJAAkAgBUUNACADQeABaiACIAUQtBogAy0A4AFBBEYNACADKQPgASINQv8Bg0IEUg0BCyADQZgBaiABEP0RIANB4AFqIAMoApgBIgUgAygCnAEiBkEAEMMIIAMoAuABDQIgBSAGQdXJmwFBChCbHEUNAiABKQMQQgBSDQEMAgsgACANNwIADAILIANBkAFqIAFBEGoiBRD+ESADKAKQASADKAKUAUHcABC1GkUNAAJAIAItAGBFDQAgA0GIAWogBRD+ESADKAKIASADKAKMAUHfyZsBQQYQsxMNAQsgA0GAAWogBRD+ESADQeABaiACQQBBACADKAKAASADKAKEARC/DQJAIAMtAOABQQRGDQAgAykD4AEiDUL/AYNCBFENACAAIA03AgAMAgsCQAJAIARFDQAgA0HgAWogAiAEELQaIAMtAOABQQRGDQAgAykD4AEiDUL/AYNCBFINAQsgAEEEOgAADAILIAAgDTcCAAwBCyACLQBiIQcCQCACLQBdDQAgASkDEEIAUQ0AIAFBEGohBQJAIAdB/wFxQQFLDQAgA0H4AGogBRD+ESADKAJ4IAMoAnxB5cmbAUEDELMTDQELAkAgAi0AXEUNACADQfAAaiAFEP4RIAMoAnAgAygCdBCNDUUNAQsCQCACLQBgRQ0AIANB6ABqIAUQ/hEgAygCaCADKAJsQd/JmwFBBhCzEw0BCyADQeAAaiAFEP4RIANB4AFqIAJBAEEAIAMoAmAgAygCZBC/DQJAIAMtAOABQQRGDQAgAykD4AEiDUL/AYNCBFENACAAIA03AgAMAgsgAEEEOgAADAELIANB2ABqIAEQ/REgAi0AXCEIAkACQCADKAJYIgkgAygCXCIKEIgNRQ0AIAkgCmohBEEAIQsgCSEBQQAhDANAAkACQAJAIAEgBEYNACABQQFqIQYgAS0AACIFQSJGDQEgBUEnRg0CIAVB3ABGDQQgBiEBIAVBIEkNBAwDCwJAIAsgDEoiASAMRXENACALQQBHIAFyDQQLQSdBIiABGyEMIAkhBQNAAkAgBSIBIARHDQBB/wEhAQwGCyABQQFqIQUgASwAACIGQX9KDQACQCAGQWBJDQACQCAGQW1HDQAgAUECaiEHIAUgBEYhBiAEIQUgBg0CIAQhBSAHIARGDQIgAUEDaiEFIAEtAAFBnwFNDQJBmNWYARCbIAALIAUgAUECaiAFIARGGyIBIAEgBEdqIQUgBkFwSQ0BIAUgBSAER2ohBQwBCyAFIAFBAmogBSAERhshBQwACwsgC0EBaiELIAYhAQwBCyAMQQFqIQwgBiEBDAALCyADIAk2AuABIAMgCSAKaiIGNgLkAUEAIQVBACEEAkADQCADQdAAaiADQeABahCjCSADKAJQQQFxRQ0BAkAgAygCVCIBQSJHDQAgBEEBaiEEDAELIAFBJ0cNACAFQQFqIQUMAAsLIANB1AFqIAQgBSAEIAVJGyAKahCuEiADIAY2ApQCIAMgCTYCkAJBJ0EiIAQgBUsbIQwgA0GQAmohBCAIIAdB/wFxIgZBAkkiB3JBAXEhCkECIQEDQCADQQI2AogCAkAgAUECRw0AIANByABqIAQQowkgAygCTCEFIAMoAkghAQsCQAJAAkACQAJAAkACQAJAAkACQCABQQFxRQ0AAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAUODgkBAQEBAQEBAgcEBgMFAAsgBUHcAEYNBwsCQEGAgMQAIAUgBUGAcHEiCUGAsANGGyIBQYCAxABGDQAgASAMRg0JCyAFDQkgA0HUAWpBABCgGQwTCyADQdQBakGR+poBQQIQ8wUMEgsgA0HUAWpBk/qaAUECEPMFDBELIANB1AFqQZX6mgFBAhDzBQwQCyADQdQBakGX+poBQQIQ8wUMDwsgA0HUAWpBrtWYAUECEPMFDA4LIANB1AFqQQkQoBkMDQsgA0HUAWpBj/qaAUECEPMFDAwLIAYNCQwKCyADQdQBakHcABCgGSADQdQBaiAMEKAZDAoLAkAgBUEPSw0AIANB1AFqQejWmAFBAxDzBSADQQE2AuQBIANBmO+bATYC4AEgA0IBNwLsASADQeABNgK4ASADIAU6AKQBIAMgA0G0AWo2AugBIAMgA0GkAWo2ArQBIANB1AFqIANB4AFqEJ8QRQ0KQdSkmwFBKyADQeABakGo0JgBQezWmAEQ6A8ACwJAIAVBH0sNACADQdQBakHs1JgBQQIQ8wUgA0EBNgLkASADQZjvmwE2AuABIANCATcC7AEgA0HgATYCuAEgAyAFOgCkASADIANBtAFqNgLoASADIANBpAFqNgK0ASADQdQBaiADQeABahCfEEUNCkHUpJsBQSsgA0HgAWpBqNCYAUHY1pgBEOgPAAsCQCAFQf4ASw0AIAlBgLADRg0CIANB1AFqIAUQoBkMCgsCQCAFQYACSQ0AAkACQAJAIAVB2L9/ag4CAAECCyADQdQBakH/05gBQQYQ8wUMDAsgA0HUAWpBhdSYAUEGEPMFDAsLIAVB//0DRg0HAkAgBUH//wNLDQACQAJAIAVBgPADcUGAsANGDQAgCEEBcQ0BIAFBgIDEAEYNBiADQdQBaiABEKAZDA0LIANBATYC9AEgA0HkxJkBNgLwASADQQE2AuQBIANB3MSZATYC4AEgA0EBNgLsASADQd8ANgK4ASADIAU2AqQBIAMgA0G0AWo2AugBIAMgA0GkAWo2ArQBIANB1AFqIANB4AFqEJ8QRQ0MQdSkmwFBKyADQeABakGo0JgBQdjVmAEQ6A8ACyADQQE2AvQBIANB5MSZATYC8AEgA0EBNgLkASADQdzEmQE2AuABIANBATYC7AEgA0H+ATYCuAEgAyAFOwGkASADIANBtAFqNgLoASADIANBpAFqNgK0ASADQdQBaiADQeABahCfEEUNC0HUpJsBQSsgA0HgAWpBqNCYAUHI1ZgBEOgPAAsCQAJAIAcNACAIQQFxDQEgAUGAgMQARg0GIANB1AFqIAEQoBkMDAsgAyAFQYCAfGpBCnZBgLADajYCsAEgAyAFQf8HcUGAuANyNgKkASADQQI2AvQBIANBrNSYATYC8AEgA0ECNgLkASADQZzUmAE2AuABIANBAjYC7AEgA0HfADYCwAEgA0HfADYCuAEgAyADQbQBajYC6AEgAyADQaQBajYCvAEgAyADQbABajYCtAEgA0HUAWogA0HgAWoQnxBFDQtB1KSbAUErIANB4AFqQajQmAFBmNaYARDoDwALIANBATYC9AEgA0HkxJkBNgLwASADQQI2AuQBIANB+NWYATYC4AEgA0EBNgLsASADQd8ANgK4ASADIAU2AqQBIAMgA0G0AWo2AugBIAMgA0GkAWo2ArQBIANB1AFqIANB4AFqEJ8QRQ0KQdSkmwFBKyADQeABakGo0JgBQYjWmAEQ6A8ACyAKDQUgAUGAgMQARg0EIANB1AFqIAEQoBkMCQsgAyADLwHcATsB4AEgAyADQd4Bai0AADoA4gEgAygC2AEhCiADKALUASEJIAMtAN8BIQEMCgtByNaYARCbIAALQbjVmAEQmyAAC0Ho1ZgBEJsgAAtBqNaYARCbIAALIANB1AFqQezUmAFBAhDzBSADQQE2AuQBIANBmO+bATYC4AEgA0IBNwLsASADQeABNgK4ASADIAU6AKQBIAMgA0G0AWo2AugBIAMgA0GkAWo2ArQBIANB1AFqIANB4AFqEJ8QRQ0DQdSkmwFBKyADQeABakGo0JgBQbjWmAEQ6A8ACyADQdQBakGw1ZgBQQYQ8wUMAgsCQCADKAKIAiIBQQJHDQAgA0EIaiAEEKMJIAMgAygCDDYCjAIgAyADKAIIIgE2AogCCwJAIAFBAXFFDQAgAygCjAJBUGpBCkkNAQsgA0HUAWpBqNWYAUECEPMFDAELIANB1AFqQarVmAFBBBDzBQsgAygCjAIhBSADKAKIAiEBDAALCyADQa4BaiADLQDiAToAACADIAo2AqgBIAMgCTYCpAEgAyADLwHgATsBrAEgAyABOgCvAQJAIAItAGBFDQAgA0HAAGogA0GkAWoQwRMgAygCQCEBIAMoAkQhBSADQQg2ArABIAMgBTYC0AEgAyABNgLMASADQQA2AsQBIAMgASAFajYCwAEgAyABNgK8ASADQQI2ArQBIAMgA0GwAWo2AsgBIANBOGogA0G0AWpBCGoiBhCVCCADIAMoAjw2ArgBIAMgAygCOCIENgK0AQJAAkACQCAEQQFxRQ0AIANB1AFqIAEgBRCzDCADQeABakEYaiADQbQBakEYaikCADcDACADQeABakEQaiADQbQBakEQaikCADcDACADQeABakEIaiIKIAYpAgA3AwAgAyADKQK0ATcD4AEgA0EANgKAAgNAIAMoAuABIQEgA0ECNgLgAQJAAkAgAUECRg0AIAMoAuQBIQUMAQsgA0EwaiAKEJUIIAMoAjQhBSADKAIwIQELAkAgAUEBcUUNACADIAMoAoACQQFqIgE2AoACIANBGGogA0HUAWoQ4RcCQCABIAVqIgFFDQACQCABIAMoAhwiBUkNACABIAVGDQEMBgsgAygCGCABaiwAAEG/f0wNBQsgAy0A3wEhBSADKALYASEGIANB1AFqQQEQgwcgA0EQaiADQdQBahCWFSADKAIQIAFqIQQCQCAGIAVBwABqQf8BcSIJQQwgCUEMSRsgBUH+AUYbIgUgAWsiAUUNACAEQQFqIAQgAfwKAAALIARB3AA6AAAgBUEBaiEBAkAgAy0A3wFB/gFGDQAgAUELSw0CIAMgAUHAAXI6AN8BDAILIAMgATYC2AEMAQsLIANBiAJqQQhqIANB1AFqQQhqKAIANgIAIAMgAykC1AE3A4gCDAELIANB/wE6AJMCIAMgBTYCjAIgAyABNgKIAgsgA0EoaiADQYgCahDBEyADQbQBaiADKAIoIAMoAixB6MmbAUEEQezJmwFBBxDECyADQdQBaiADKAK4ASIJIAMoArwBQfPJmwFBA0H2yZsBQQYQxAsCQAJAAkACQCADKALUASIFQf7//wdLDQAgBQ0BQQAhAUGAgICAfCEKIAMoAtgBIQRBACEGDAILIAMoAtgBIQQgA0HgAWogAygC3AEiARC4DSADKALgASEKIAMoAuQBIQYgAUUNASAGIAQgAfwKAAAMAQsgAygC2AEhBAJAIAMoAtwBIgFBDE0NACAFQf///wcgBUH///8HSRtBgICAcHIhCiAEIQYMAgsgA0EANgDnASADQgA3A+ABIAMgAUHAAXI6AOsBAkAgAUUNACADQeABaiAEIAH8CgAACyADKALoASEKIAMoAuQBIQEgAygC4AEhBgsgBSAEEJASCyADQaQBahCmHSADIAo2AqwBIAMgATYCqAEgAyAGNgKkASADKAK0ASAJEJciIANBiAJqEKYdDAELIANBADYCmAIgA0EBNgKMAiADQYDUgAE2AogCIANCBDcCkAIgA0GIAmpBiNSAARCFGwALIAMgDDoAtAEgA0HgAWogAiADQbQBakEBEIgOAkACQCADLQDgAUEERg0AIAMpA+ABIg1C/wGDQgRSDQELIANBIGogA0GkAWoQwRMgA0HgAWogAkEAQQAgAygCICADKAIkEL8NAkAgAy0A4AFBBEYNACADKQPgASINQv8Bg0IEUg0BCyADQeABaiACIANBtAFqQQEQiA4CQCADLQDgAUEERg0AIAMpA+ABIg1C/wGDQgRSDQELIABBBDoAACADQaQBahCmHQwBCyAAIA03AgAgA0GkAWoQph0LIANBoAJqJAAL9CECJH8FfiMAQYAEayICJAACQAJAIAEtAMgBIgNBAkcNACABEIcOIAJBIGpBCEEIQThBuKGbARDYFCACQQA2AkwgAiACKAIkIgQ2AkggAiACKAIgNgJEQYoFrUIghiImQYyjmwGthCEnICZBiKObAa2EISggJkGB2pgBrYQhKSACQcgCakEMaiEFIAJBkAFqQShqIQYgAkG4A2pBDGohByACQdgDakEEciEIIAJB9ABqQQhqIQkgAkHYAWpBCGohCkEAIQsDQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AyAEiA0EDRg0AAkACQAJAAkACQCADRQ0AIANB4wBGDQEgA0ESRw0CCyACQdgBaiABQQAQ3wQgAigC2AEiA0ECRg0KQQVBBCADQQFxGyELDAkLIAJB2AFqIAEQ/wIgASABKAJ4QQFyNgJ4IAEQhw4gAS0AyAEhAyABIAJB2AFqEPAFIANFDQEgA0ESRg0BCyABKALAASEMIAJB2AFqIAFBiaObAUEBQQAQhgYgAi0A2AFFDQEgAigC3AEhDQwKCyACQdgBaiABQQEQ3wQgAigC2AEiA0ECRg0HQQVBBCADQQFxGyELDAYLIAJB2AFqIAEgDCACLQDZAUGkAUciDkEAEOUCIAIoAtwBIQ0CQCACKALYASIDQYGAgIB4Rw0AQQshCwwICyAJIAopAgA3AgAgCUEQaiAKQRBqKAIANgIAIAlBCGogCkEIaikCADcCACACIA02AnggAiADNgJ0AkAgA0GAgICAeEYNAEEKIQsgAigCjAEhDyACKAKIASEQIAIpAoABISogAigCfCERIA0hEiADIQ0MCAsCQAJAAkAgAS0AgQFBIHFFDQAgASgCeCETIAJB2AFqIAEQ/wIgASABKAJ4QQFyNgJ4IAEoAsABIQQCQAJAIA4NAAJAAkACQAJAAkACQCABLQDIASIDQf8ARg0AIANBkwFHDQIgARCHDiACQdgDaiABEK0FIAIoAtwDIQsgAi0A2AMiFEECRg0BIAIgCzYCkAMgAS0AyAEiAw0DIAEQhw4gAkHYA2ogARCvAyACKALcAyEVIAIoAtgDIhZBgICAgHhHDQQgAkEMNgLIAiACIBU2AswCDA0LIAEQhw4gAkHYA2ogARCtBSACKALcAyELIAItANgDIgNBAkcNBAsgAkEMNgLIAiACIAs2AswCDAwLIAEoAsQBIQsgAkGEA2ogAxDeGyACQQE2AtwDIAJBmO+bATYC2AMgAkIBNwLkAyACICc3A9ADIAIgAkHQA2o2AuADIAJBuANqIAJB2ANqEI0VIAdBCGogAkGEA2pBCGooAgA2AgAgByACKQKEAzcCACAEIAsgAkG4A2oQhRUhCwJAIANBogFHDQAgARDHESEDIAEQhw4gASADEOURCyACQQw2AsgCIAIgCzYCzAIMCwsgASgCxAEhCyABKALAASENIAJBrANqIAMQ3hsgAkEBNgLcAyACQZjvmwE2AtgDIAJCATcC5AMgAiApNwPQAyACIAJB0ANqNgLgAyACQbgDaiACQdgDahCNFSAHQQhqIAJBrANqQQhqKAIANgIAIAcgAikCrAM3AgAgDSALIAJBuANqEIUVIQMCQCABLQDIAUGiAUcNACABEMcRIQsgARCHDiABIAsQ5RELIAJBDDYCyAIgAiADNgLMAgwJCyACIAIoAuADIgM2AsADIAIgFTYCvAMgAiAWNgK4AwJAIAMNACABKALEASEDIAEoAsABIQsgAkGYgICAeDYC2AMgCyADIAJB2ANqEIUVIQMCQCABLQDIAUGiAUcNACABEMcRIQsgARCHDiABIAsQ5RELIAJBDDYCyAIgAiADNgLMAiACQbgDahCrHwwJCyAVKAIAIg1BBEYNByACIA02AtgDAkBBJEUNACAIIBVBBGpBJPwKAAALIANBKGxBWGpBKG4hDQJAIANBAUYNACAVQcAAaiEDA0ACQAJAAkACQAJAIANBaGooAgAOBAECAwABCyADQWxqIhcQuAogFygCACADQXBqKAIAEL4gIAMoAgAiF0UNAyAXKAIAIhgQwwMgGEHgAEEIEJ4SIBdBDEEEEJ4SDAMLIANBcGoQrxIMAgsgA0FwaigCACIXIANBdGooAgAQpBogA0FsaigCACAXEMEgIAMoAgAiF0UNASAXKAIAIhgQwwMgGEHgAEEIEJ4SIBdBDEEEEJ4SDAELIANBbGooAgAiFxDhCiAXQShBCBCeEiADKAIAIhdFDQAgFygCACIYEMMDIBhB4ABBCBCeEiAXQQxBBBCeEgsgA0EoaiEDIA1Bf2oiDQ0ACwsgFiAVEMEgIAEQ/RwiA0UNAiACQQw2AsgCIAIgAzYCzAIgAkHYA2oQ3BgMCAsgAiALNgKQAwJAAkACQCABLQDIASINDQAgARCHDiABLQDIASINQQFHDQEgARCHDiACQRhqIAEQsRMgAigCHCENIAIoAhhBAXFFDQIgAkEMNgLIAiACIA02AswCDAoLIAEoAsQBIQMgASgCwAEhCyACQZQDaiANEN4bIAJBATYC3AMgAkGY75sBNgLYAyACQgE3AuQDIAIgKTcD0AMgAiACQdADajYC4AMgAkG4A2ogAkHYA2oQjRUgB0EIaiACQZQDakEIaigCADYCACAHIAIpApQDNwIAIAsgAyACQbgDahCFFSEDAkAgAS0AyAFBogFHDQAgARDHESELIAEQhw4gASALEOURCyACQQw2AsgCIAIgAzYCzAIMCQsgASgCxAEhAyABKALAASELIAJBoANqIA0Q3hsgAkEBNgLcAyACQZjvmwE2AtgDIAJCATcC5AMgAiAoNwPQAyACIAJB0ANqNgLgAyACQbgDaiACQdgDahCNFSAHQQhqIAJBoANqQQhqKAIANgIAIAcgAikCoAM3AgAgCyADIAJBuANqEIUVIQMCQCABLQDIAUGiAUcNACABEMcRIQsgARCHDiABIAsQ5RELIAJBDDYCyAIgAiADNgLMAgwICyACIA02AtgDIAEQ/RwiF0UNAyACQQw2AsgCIAIgFzYCzAIgAkHYA2oQqR8MBwsgASgCxAEhAyACQY+AgIB4NgLYAyAEIAMgAkHYA2oQhRUhAwJAIAEtAMgBQaIBRw0AIAEQxxEhCyABEIcOIAEgCxDlEQsgAkEMNgLIAiACIAM2AswCDAcLIAEoArwBIQMCQEEoRQ0AIAJByAJqIAJB2ANqQSj8CgAACyACIBQ6APwCIAIgCzYC+AIgAiADNgL0AiACIAQ2AvACAkAgAigCyAJBdWoOAgAHAwsgASACQdgBahDwBQsgAkELNgKQAQwGCyACIAM6ANwCIAIgDTYC2AIgAiAENgLQAiACIAs2AswCIAJBBzYCyAIgAiABKAK8ATYC1AILIBNBAXEhAwJAQThFDQAgAkGQAWogAkHIAmpBOPwKAAALIAEgASgCeEF+cSADcjYCeCACQdgBahD9HiACKAKQASILQQtGDQQgAkHQAGpBCGogBkEIaikDADcDACACIAYpAwA3A1AgAikDsAEiJkIwiKchGSAmQiiIpyEaICZCIIinIRsgAigCrAEhDyACKAKoASEQIAIpA6ABISogAigCnAEhESACKAKYASESIAIoApQBIQ0gJqchHAwHCwJAIAIoAkQiA0GAgICAeEcNACAEIQ0MCQsgAkE4akEIaiIMIAs2AgAgAiAENgI8IAIgAzYCOCABEIcOIABBCGogDCgCADYCACAAIAIpAjg3AgAMDAtBkKObARCbIAALIAJBkANqEOseCyABIAJB2AFqEPAFIAJBCzYCkAEgAkHIAmoQ3RwLIAJBkAFqELcMIAJB2AFqIAEQrQUgAigC3AEhAwJAAkAgAi0A2AEiBEECRw0AQQshCyADIQ0MAQsgAiADNgK4AyABLQDIASITIQsCQCATQQpHDQAgARCHDiABLQDIASELCwJAAkACQAJAAkACQAJAIAtB/wFxIgtFDQAgC0ESRg0AIAIgARCxEyACKAIEIQsgAigCAEEBcUUNASALIQ0MBgsCQAJAIA4NACACQRBqIAFBAEEBENQTIAIoAhQhDiACKAIQQQFxRQ0BIA4hDQwHCyABKALEASEDIAEoAsABIQsgAkHjgICAeDYC2AEgCyADIAJB2AFqEIUVIQ0gAS0AyAFBogFHDQYgARDHESEDIAEQhw4gASADEOURDAYLAkACQCABLQDIASILDQAgARCHDiACQdgBaiABEK8DIAIoAtwBIRcgAigC2AEiFEGAgICAeEcNASAXIQ0MBgsgASgCxAEhAyABKALAASEMIAJBkAFqIAsQ3hsgAkEBNgLcASACQZjvmwE2AtgBIAJCATcC5AEgAiApNwPYAyACIAJB2ANqNgLgASACQcgCaiACQdgBahCNFSAFQQhqIAJBkAFqQQhqKAIANgIAIAUgAikCkAE3AgAgDCADIAJByAJqEIUVIQ0gAS0AyAFBogFHDQUgARDHESEDIAEQhw4gASADEOURDAULIAIgAigC4AEiFTYC0AIgAiAXNgLMAiACIBQ2AsgCQQAhDQJAAkAgAS0AyAFBCUcNACACQQhqIAFBCRCYBCACKAIMIQ0gAigCCEEBcQ0BCyACIA02AtgBIAEQ/RwiC0UNAiACQdgBahCpHyALIQ0LIAJByAJqEKsfDAQLIAIgCzYC2AEgARD9HCINRQ0BIAJB2AFqEKkfDAQLIBNBCkYhHSABKAK8ASEeDAELIB5BgICAeHEgDnIgBEEIdHIgE0EKRkEQdHIhHiABKAK8ASEVQYCAgIB4IRQgDCEXIB8hBCAgIQ4gISENIAMhDCALIQMLIAIgHjYC0AEgAiAMNgLMASACIAM2AsgBAkACQCAUQYCAgIB4Rg0AQQkhCyACKQPIASEqIA0hDyANISIgDiEjIAQhJCAEIR8gDiEgIA0hISAdISUgDiEcIAQhGyAdIRogHiEQIBUhESAXIRIgFCENDAELQQYhCyACKQLMASEqICIhDyAEIR8gDiEgIA0hISAjIRwgJCEbICUhGiADIREgFSESIBchDQsMAgsgDhDuHwsgAkG4A2oQ6x5BCyELCyACQfQAahD/HgwCCyACKAL0ASEPIAIoAvABIRAgAikC6AEhKiACKALkASERIAIoAuABIRIgAigC3AEhDQwBC0ELIQsgAigC3AEhDQsgC0ELRw0CCyACQcQAahCqHwsgAEGAgICAeDYCACAAIA02AgQMAwsgAkHgAGpBCGoiDiACQdAAakEIaikDADcDACACIAIpA1A3A2AgGa1CMIYgGq1C/wGDQiiGhCAbrUL/AYNCIIaEIBythCEmAkAgAigCTCIMIAIoAkRHDQAgAkHEAGoQvRYLIAIoAkgiBCAMQThsaiIDICY3AiAgAyAPNgIcIAMgEDYCGCADICo3AxAgAyARNgIMIAMgEjYCCCADIA02AgQgAyALNgIAIAMgAikDYDcDKCADQTBqIA4pAwA3AwAgAiAMQQFqIgs2AkwMAAsLIAEoAsQBIQsgASgCwAEhDCACQSxqIAMQ3hsgAkEBNgLcASACQZjvmwE2AtgBIAJCATcC5AEgAkGKBa1CIIZB7KGbAa2ENwOQASACIAJBkAFqNgLgASACQcgCaiACQdgBahCNFSACQdwCaiACQTRqKAIANgIAIAIgAikCLDcC1AIgDCALIAJByAJqEIUVIQMCQCABLQDIAUGiAUcNACABEMcRIQsgARCHDiABIAsQ5RELIABBgICAgHg2AgAgACADNgIECyACQYAEaiQAC6EgAgx/A34jAEHQAGsiBSQAAkACQAJAAkACQCACDgMBAAIBCyABKAIAIgYoAoAFQbACaiEHDAILIAEoAgAiBigCgAVBtAJqIQcMAQsCQCABKAIAIgYtAFlBAXENACAAIAOtQiCGQgKENwIADAILAkAgAyAGKAKABSIHKALcAk8NACAHKALYAiADQQJ0aiEHDAELIAZBhAVqKAIAEPwUIQcgAEEFNgIAIAAgBzYCBAwBCyAHKAIAIQggASgCBCIHKQKkASERIAdCgICAgBA3AqQBIAdBrAFqIgkoAgAhCiAJQQA2AgAgBUE4akEIaiIJIAo2AgAgBSARNwM4IAVBOGpBjNyEAUGV3IQBEIoUIAVBKGpBCGogCSgCADYCACAFIAUpAzg3AyggBigCgAUiCigCuAIhCSAKLQDgAiELIAotAOQCIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIARB/wFxDgYAAQIDBAUACyAJQcD/D3FFDTggBSgCLCIJIAUoAjAiCxCuGSEKIAtFDQUgC0F/aiILRQ0GIAkgCjoAASALQQFGDQcgCSAKQYCABXIiDEEIdjoAAiALQQJNDQggCSAMQRB2OgADIAtBA0YNCSAJIApBGHY6AAQMOAsgCUHA/w9xRQ03IAUoAjBFDQkgBSgCLCIJIAktAABBBHI6AAAMNwsCQCAJQQNxRQ0AIAUoAiwiCyAFKAIwIgwQrhkhCiAMRQ0KIAxBf2oiDEUNCyALIApBAXI6AAEgDEEBRg0MIAsgCkEIdjoAAiAMQQJNDQ0gCyAKQRB2OgADIAxBA0YNDiALIApBGHY6AAQLAkAgCUE8cUUNACAFKAIsIgogBSgCMCIMEK4ZIQsgDEUNDyAMQX9qIgxFDRAgCiALQRRyOgABIAxBAUYNESAKIAtBCHY6AAIgDEECTQ0SIAogC0EQdjoAAyAMQQNGDRMgCiALQRh2OgAECyAJQcD/D3FFDTYgBSgCLCIJIAUoAjAiCxCuGSEKIAtFDRMgC0F/aiILRQ0UIAkgCjoAASALQQFGDRUgCSAKQYCABXIiDEEIdjoAAiALQQJNDRYgCSAMQRB2OgADIAtBA0YNFyAJIApBGHY6AAQMNgsCQCAKQQFxDQAgCUE8cUUNNSAFKAIsIgogBSgCMCINEK4ZIQwgDUUNGCANQX9qIg5FDRkgCiAMQRByOgABIA5BAUYNGiAKIAxBCHY6AAIgDkECTQ0bIAogDEEQdjoAAyAOQQNGDRwMNAsCQCAJQTBxRQ0AIAUoAjBFDR0gBSgCLCIKIAotAABBCHI6AAALIAlBPHFFDTQgBSgCLCIKIAUoAjAiDRCuGSEMIA1FDR0gDUF/aiIORQ0eIAogDEEEcjoAASAOQQFGDR8gCiAMQQh2OgACIA5BAk0NICAKIAxBEHY6AAMgDkEDRw0zQQNBA0HI0YQBELMRAAsgCUEwcUUNMQJAIApBAXENACAFKAIwRQ0hIAUoAiwiCiAKLQAAQQhyOgAADDILIAUoAiwiDCAFKAIwIg0QrhkhCiANRQ0hIA1Bf2oiDUUNIiAMIApBEHI6AAEgDUEBRg0jIAwgCkEIdjoAAiANQQJNDSQgDCAKQRB2OgADIA1BA0YNJSAMIApBGHY6AAQMMQsCQCAJQTxxRQ0AIAUoAiwiDCAFKAIwIg0QrhkhCiANRQ0mIA1Bf2oiDUUNJyAMIApBBHI6AAEgDUEBRg0oIAwgCkEIdjoAAiANQQJNDSkgDCAKQRB2OgADIA1BA0YNKiAMIApBGHY6AAQLIAlBwP8PcUUNMwJAIAtB1OeEAWotAAANACAFKAIsIgkgBSgCMCILEK4ZIQogC0UNKyALQX9qIgtFDSwgCSAKOgABIAtBAUYNLSAJIApBgIAFciIMQQh2OgACIAtBAk0NLiAJIAxBEHY6AAMgC0EDRg0vIAkgCkEYdjoABAw0CyAFKAIwRQ0vIAUoAiwiCSAJLQAAQQRyOgAADDMLQQFBAEHs3oQBEKMgAAtBAEEAQZjRhAEQsxEAC0EBQQFBqNGEARCzEQALQQJBAkG40YQBELMRAAtBA0EDQcjRhAEQsxEAC0EAQQBBzN6EARCzEQALQQFBAEHs3oQBEKMgAAtBAEEAQZjRhAEQsxEAC0EBQQFBqNGEARCzEQALQQJBAkG40YQBELMRAAtBA0EDQcjRhAEQsxEAC0EBQQBB7N6EARCjIAALQQBBAEGY0YQBELMRAAtBAUEBQajRhAEQsxEAC0ECQQJBuNGEARCzEQALQQNBA0HI0YQBELMRAAtBAUEAQezehAEQoyAAC0EAQQBBmNGEARCzEQALQQFBAUGo0YQBELMRAAtBAkECQbjRhAEQsxEAC0EDQQNByNGEARCzEQALQQFBAEHs3oQBEKMgAAtBAEEAQZjRhAEQsxEAC0EBQQFBqNGEARCzEQALQQJBAkG40YQBELMRAAtBA0EDQcjRhAEQsxEAC0EAQQBB3N6EARCzEQALQQFBAEHs3oQBEKMgAAtBAEEAQZjRhAEQsxEAC0EBQQFBqNGEARCzEQALQQJBAkG40YQBELMRAAtBAEEAQdzehAEQsxEAC0EBQQBB7N6EARCjIAALQQBBAEGY0YQBELMRAAtBAUEBQajRhAEQsxEAC0ECQQJBuNGEARCzEQALQQNBA0HI0YQBELMRAAtBAUEAQezehAEQoyAAC0EAQQBBmNGEARCzEQALQQFBAUGo0YQBELMRAAtBAkECQbjRhAEQsxEAC0EDQQNByNGEARCzEQALQQFBAEHs3oQBEKMgAAtBAEEAQZjRhAEQsxEAC0EBQQFBqNGEARCzEQALQQJBAkG40YQBELMRAAtBA0EDQcjRhAEQsxEAC0EAQQBBzN6EARCzEQALAkAgC0ENRw0AIAlBPHFFDQAgBSgCLCIKIAUoAjAiDBCuGSELAkACQAJAAkACQCAMRQ0AIAxBf2oiDEUNASAKIAtBBHI6AAEgDEEBRg0CIAogC0EIdjoAAiAMQQJNDQMgCiALQRB2OgADIAxBA0YNBCAKIAtBGHY6AAQMBQtBAUEAQezehAEQoyAAC0EAQQBBmNGEARCzEQALQQFBAUGo0YQBELMRAAtBAkECQbjRhAEQsxEAC0EDQQNByNGEARCzEQALIAlBwP8PcUUNAiAFKAIsIgkgBSgCMCILEK4ZIQoCQAJAAkACQAJAIAtFDQAgC0F/aiILRQ0BIAkgCjoAASALQQFGDQIgCSAKQYCABXIiDEEIdjoAAiALQQJNDQMgCSAMQRB2OgADIAtBA0YNBCAJIApBGHY6AAQMBwtBAUEAQezehAEQoyAAC0EAQQBBmNGEARCzEQALQQFBAUGo0YQBELMRAAtBAkECQbjRhAEQsxEAC0EDQQNByNGEARCzEQALIAogDEEYdjoABCALQQpHDQAgCiAKIA0QrhkiC0EYdjoABCAKIAtBEHY6AAMgCiALQQh2OgACIAogC0EEcjoAAQsgCUHA/w9xRQ0AIAUoAiwiCSAFKAIwIgsQrhkhCiALRQ0FIAtBf2oiC0UNBCAJIAo6AAEgC0EBRg0DIAkgCkGAgAVyIgxBCHY6AAIgC0ECTQ0CIAkgDEEQdjoAAyALQQNGDQEgCSAKQRh2OgAECyAHQQA2AkggBSgCLCAFKAIwEK8ZIQkgBigCgAUgCCAJIAdBmAFqIAdBMGoiChCmAyAFQThqIAVBKGoQ8QwgBigCgAUgCiAFQThqELwGIAYtAFwhDyAFKAJAIQkgBSgCPCEIIAUoAjghDgJAIAcoAgxFDQAgBykDECAHQRhqKQMAIAggCRDCBiERIAcoAgQiDSARp3EhCiARQhmIQv8Ag0KBgoSIkKDAgAF+IRIgBygCACELQQAhEAJAA0ACQCALIApqKQAAIhMgEoUiEUJ/hSARQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DIhFQDQADQCAIIAkgC0EAIBF6p0EDdiAKaiANcWtBDGxqIgxBdGooAgBBCGogDEF4aigCABCbHA0DIBFCf3wgEYMiEVBFDQALCyATIBNCAYaDQoCBgoSIkKDAgH+DUEUNAiAKIBBBCGoiEGogDXEhCgwACwsgDEF8aigCACEJIAdBADYCrAEgBygCqAEhASAHIAg2AqgBIAcoAqQBIQogByAONgKkASAKIAEQpCAMCAsgBUEgaiAJEMsPIAUoAiAiDEEIaiEKIAUoAiQhDQJAIAlFDQAgCiAIIAn8CgAACwJAAkACQCANIAcQkBRqQQQgBkGEBWooAgB0akEUaiAGKAKIBU0NACABEOcMDQELIAVBGGogARDJECAFKAIYQQFxRQ0BCyAMIAwoAgAiCUF/ajYCAEEBIQECQCAJQQFGDQAMCAsgDCANEPoXDAcLAkAgDUUNACAFKAIcIQEgCi0AACEJIAdB9ABqQQEgBkGEBWooAgB0EP8RIAlBAXFBG3QgAUGAgICAAXIgASAPQQFxG3IhCSAGQeAEaiIPQbDLhAFBIBCSFUUNBiAGIAkQ8BkNBkEAIQogBkGEBWooAgAQxxUhEEEAIQEDQCABQYACRg0HIAUgDyABQQN2QfD///8BcWoiCykDACALKQMIIAFB/wBxEI0SAkAgBSgCAEEBcUUNACABQf8BSw0IIAYgByAJIAogEBCKCQsgAUEBaiEBIApBgAJqIQoMAAsLQQBBAEGc3YQBELMRDAoLQQNBA0HI0YQBELMRAAtBAkECQbjRhAEQsxEAC0EBQQFBqNGEARCzEQALQQBBAEGY0YQBELMRAAtBAUEAQezehAEQoyAACyAHIAcoAmggDWo2AmggDCAMKAIAIgFBAWo2AgAgAUF/TA0EAkAgBygClAEiASAHKAKMAUcNACAHQYwBahCFFgsgBygCkAEgAUEDdGoiCiANNgIEIAogDDYCACAHIAFBAWo2ApQBIAcgDCANIAkQ+QVBACEBCyAHQQA2AqwBIAcoAqgBIQogByAINgKoASAHKAKkASEIIAcgDjYCpAEgCCAKEKQgIAENAQsCQCAJQf///z9xIgEgBygCfE8NACABQX8gBigChAV0QX9zcUUNAgtB1IOEAUEsQYCEhAEQ3RcACyAAQgM3AgAMBAsgBEH/AXEhAQJAAkAgAg4DBAABBAsgAUEGaiEBDAMLIAYtAFlBAXFFDQEgA0EGbCABakEMaiEBDAILAAsgBUEANgJIIAVBATYCPCAFQeSEhAE2AjggBUIENwJAIAVBOGpB7ISEARCFGwALAkAgASAHKAKIASIGSQ0AIAEgBkH8hIQBELMRAAsgACAJNgIEIABBBTYCACAHKAKEASABQQJ0aiAJNgIACyAFQdAAaiQAC7QgAgt/An4jAEHAAWsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCAABAgMEBQYHAAsgAC0AJA0HDA8LIAAtACQNBwwNCyAAKAIEIgMtABgNBwwLCyABLQA4IQQgAUEAOgA4AkAgACgCBCIDKAIIIgVFDQAgAygCBCIDIAVBOGxqIQYgAS0AOSEFA0AgAUEAOgA5IAMgARCEBCABIAU6ADkCQCADQTBqKAIAIgdFDQAgAUEBOgA5IAcgARBsIAEgBToAOQsgA0E4aiIDIAZHDQALCyABIAQ6ADgMDQsgAS0AOiEIIAEtADkhCSABQYECOwA5IAEgACgCBCIKQQhqQQQQ+Q0CQCABLQA0QQFHDQAgASgCMBCBEiEDIAJBoAFqQQhqQQApA5j7nAEiDTcDACACQaABakEQakEAKQOQ+5wBIg43AwAgAkGgAWpBGGogDTcDACACQeAAakE0aiABQTRqKAIANgIAIAJB4ABqQQhqIA03AwAgAkHgAGpBEGogDjcDACACQeAAakEYaiANNwMAIAIgDjcDoAEgAiABKQIsNwKMASACIA43A2AgAS0AOCEFIAEtAD0hByACIAEvADs7AJsBIAJBgQI7AJkBIAJBAToAiAEgAiADNgKEASACIAE2AoABIAIgBzoAnQEgAiAFOgCYAQJAIAooAiAiA0UNACACLQCUAUEBRw0AIAJBADoAmQECQCADKAIIIgdFDQAgB0EwbCEFIAMoAgQiBkEIaiEDA0AgAkHgAGogAxCXECADQTBqIQMgBUFQaiIFDQALIAItAJQBQQFHDQAgB0EwbCEFIAZBIGohAwNAAkAgAi0AlAFBAUcNACACQeAAaiADQWhqEJcQIAItAJkBIQcCQCADQQRqKAIAIgZFDQAgAi0AlAFBAUcNACACLQCaASEAIAJBgQI7AJkBIAYgAkHgAGoQ9AEgAiAAOgCaAQsCQCADKAIAIgZFDQAgAi0AlAFBAUcNACACLQCaASEAIAJBgQI7AJkBIAYgAkHgAGoQ9AEgAiAAOgCaAQsgAiAHOgCZAQsgA0EwaiEDIAVBUGoiBQ0ACwsgAkEBOgCaAQsCQCAKKAJAIgNFDQAgAi0AlAFBAUcNACAKKAI8IgYgA0EEdGohACACQawBaiELIAJBqAFqIQQDQAJAIAItAJQBQQFHDQAgAi0AmQEhAyACQYECOwCZASAGKAIAIQUgAkEDNgKoASAFIAJB4ABqEGwgAiADOgCZAQJAIAIoAqgBIgNBAUsNACAEIAJBoAFqEKAYIAQgAikDoAEQ7xcgA0UNACACKAKsASIDIAMoAgAiA0F/ajYCACADQQFHDQAgCxDfDwsCQCAGKAIMIgNFDQAgAi0AlAFBAUcNACACLQCZASEMIAJBgQI7AJkBAkAgAygCCCIFRQ0AIAMoAgQhAyAFQQJ0IQUDQAJAIAItAJQBQQFHDQAgAygCACEHIAJBgQI7AJkBIAcgAkHgAGoQ9AEgAkGBAjsAmQELIANBBGohAyAFQXxqIgUNAAsLIAIgDDoAmQELIAJBAToAmgELIAZBEGoiBiAARw0ACwsCQCACLQCUAUEBRw0AIAooAiwiBUUNACAKKAIoIQMgBUE4bCEFA0ACQCACLQCUAUEBRw0AIAMgAkHgAGoQaQsgA0E4aiEDIAVBSGoiBQ0ACwsCQCACKAJkIgNFDQAgAigCYCACKAJsEJIMIAMgA0EEdEEXakFwcSIFakEJaiIDRQ0AIAIoAmAgBWsgA0EIEJ4SCyACQfAAahDWFQsgASAJOgA5IAEgCDoAOgwMCyABLQA6IQcgAUEBOgA6IAEgACgCBCIGQQhqQQQQ+Q0CQCABLQA0QQFHDQAgASgCMBCBEiEDIAJBoAFqQQhqQQApA5j7nAEiDTcDACACQaABakEQakEAKQOQ+5wBIg43AwAgAkGgAWpBGGogDTcDACACQeAAakE0aiABQTRqKAIANgIAIAJB4ABqQQhqIA03AwAgAkHgAGpBEGogDjcDACACQeAAakEYaiANNwMAIAIgDjcDoAEgAiABKQIsNwKMASACIA43A2AgAS0AOCEFIAEtAD0hACACIAEvADs7AJsBIAJBgQI7AJkBIAJBAToAiAEgAiADNgKEASACIAE2AoABIAIgADoAnQEgAiAFOgCYAQJAIAYoAiAiA0UNACACLQCUAUEBRw0AIAJBADoAmQECQCADKAIIIgBFDQAgAEEwbCEFIAMoAgQiBEEIaiEDA0AgAkHgAGogAxCXECADQTBqIQMgBUFQaiIFDQALIAItAJQBQQFHDQAgAEEwbCEFIARBIGohAwNAAkAgAi0AlAFBAUcNACACQeAAaiADQWhqEJcQIAItAJkBIQACQCADQQRqKAIAIgRFDQAgAi0AlAFBAUcNACACLQCaASEKIAJBgQI7AJkBIAQgAkHgAGoQ9AEgAiAKOgCaAQsCQCADKAIAIgRFDQAgAi0AlAFBAUcNACACLQCaASEKIAJBgQI7AJkBIAQgAkHgAGoQ9AEgAiAKOgCaAQsgAiAAOgCZAQsgA0EwaiEDIAVBUGoiBQ0ACwsgAkEBOgCaAQsCQCACLQCUAUEBRw0AIAItAJkBIQMgAkGBAjsAmQEgBigCJCACQeAAahD0ASACQQE6AJoBIAIgAzoAmQELAkAgAigCZCIDRQ0AIAIoAmAgAigCbBCSDCADIANBBHRBF2pBcHEiBWpBCWoiA0UNACACKAJgIAVrIANBCBCeEgsgAkHwAGoQ1hULIAEgBzoAOgwLCyAAKAIEIgMtACxFDQYgAS0ANA0GDAoLIAAoAgQiAy0AUA0DDAQLIAEtADQNBwwICyABLQA0DQUMBwsgAS0ANA0DDAYLIAEtADRFDQULAkAgAygCAA0AIAEgA0EIakEAEPkNCyABKAIwEIESIQUgAkGgAWpBCGpBACkDmPucASINNwMAIAJBoAFqQRBqQQApA5D7nAEiDjcDACACQaABakEYaiANNwMAIAJB4ABqQTRqIAFBNGooAgA2AgAgAkHgAGpBCGogDTcDACACQeAAakEQaiAONwMAIAJB4ABqQRhqIA03AwAgAiAONwOgASACIAEpAiw3AowBIAIgDjcDYCABLQA4IQcgAS0APSEGIAIgAS8BOjsBmgEgAkEBOgCZASACQQA6AIgBIAIgBTYChAEgAiABNgKAASACIAY6AJ0BIAIgBzoAmAEgAkEBOgCcASADQSBqIQECQAJAAkAgAy0ARUF+ag4CAQIACwNAAkAgAS0AJEUNACACLQCUAUUNAwsgAkHgAGogAUEIakEAEPkNIAEoAiAiAS0AJUECRw0ACwsgAkHgAGogARD9BQsCQCACKAJkIgFFDQAgAigCYCACKAJsEJIMIAEgAUEEdEEXakFwcSIDakEJaiIBRQ0AIAIoAmAgA2sgAUEIEJ4SCyACQfAAahDWFQwECyABIANBABD5DSABKAIwEIESIQUgAkHgAGpBNGogAUE0aigCADYCACACQeAAakEIakEAKQOY+5wBIg03AwAgAkHwAGpBACkDkPucASIONwMAIAJB+ABqIA03AwAgAiABNgKAASACIAU2AoQBIAJBAToAmQEgAkEAOgCIASACIAEpAiw3AowBIAIgDjcDYCACIAEoATo2AZoBIAIgAS0AODoAmAECQAJAIAMoAigiB0UNACADKAIkIgYhASAHIQMDQAJAIAEoAgANAAJAIAFBCGopAwAiDUIDg0IAUg0AIA2nIgUgBSgCACIFQQFqNgIAIAVBf0wNBAsgAkHgAGogDUEAEOgFCyABQTBqIQEgA0F/aiIDDQALIAdBMGwhAyAGQShqIQEgAkGsAWohACACQagBaiEGA0ACQCABKAIAIgVFDQAgAkEDNgKoASACLQCZASEHIAJBAToAmQEgBSACQeAAahBsIAIgBzoAmQEgAigCqAEiBUEBSw0AIAYgAkGgAWoQoBggBiACKQOgARDvFyAFRQ0AIAIoAqwBIgUgBSgCACIFQX9qNgIAIAVBAUcNACAAEN8PCyABQTBqIQEgA0FQaiIDDQALCwJAIAIoAmQiAUUNACACKAJgIAIoAmwQkgwgASABQQR0QRdqQXBxIgNqQQlqIgFFDQAgAigCYCADayABQQgQnhILIAJB8ABqENYVDAQLAAsgAS0AOCEAIAEgAy0AGUVBAXQ6ADgCQCADKAIIIgVFDQAgAygCBCIDIAVBOGxqIQYgAS0AOSEFA0AgAUEAOgA5IAMgARCEBCABIAU6ADkCQCADQTBqKAIAIgdFDQAgAUEBOgA5IAcgARBsIAEgBToAOQsgA0E4aiIDIAZHDQALCyABIAA6ADgMAgsCQCAAKAIgIgooAhQiBUUNACAKKAIQIQMgBUEMbCEFIAJB4ABqQQxqIQQgAkHoAGohAANAIAMoAgAhByABLQA5IQYgAUEBOgA5IAJBAzYCaCAHIAEQbCABIAY6ADkCQCACKAJoIgdBAUsNACAAIAJB4ABqEKAYIAAgAikDYBDvFyAHRQ0AIAIoAmwiByAHKAIAIgdBf2o2AgAgB0EBRw0AIAQQ3w8LIANBDGohAyAFQXRqIgUNAAsLIAEoAjAQgRIhAyACQeAAakE0aiABQTRqKAIANgIAIAJB6ABqQQApA5j7nAEiDTcDACACQfAAaiIFQQApA5D7nAEiDjcDACACQfgAaiANNwMAIAIgATYCgAEgAiADNgKEASACQQE6AJkBIAJBAToAiAEgAiABKQIsNwKMASACIA43A2AgAiABKAE6NgGaASACIAEtADg6AJgBIAJB4ABqIAoQwAICQCACKAJkIgFFDQAgAigCYCACKAJsEJIMIAEgAUEEdEEXakFwcSIDakEJaiIBRQ0AIAIoAmAgA2sgAUEIEJ4SCyAFENYVDAELIAEgAEEIakEAEPkNAkAgACgCICIDKAIIIgVFDQAgAygCBCEDIAVBDGwhBSACQeAAakEMaiEKIAJB6ABqIQQDQCADKAIAIQcgAS0AOSEGIAFBAToAOSACQQM2AmggByABEGwgASAGOgA5AkAgAigCaCIHQQFLDQAgBCACQeAAahCgGCAEIAIpA2AQ7xcgB0UNACACKAJsIgcgBygCACIHQX9qNgIAIAdBAUcNACAKEN8PCyADQQxqIQMgBUF0aiIFDQALIAAoAiAhAwsgASgCMBCBEiEFIAJB4ABqQTRqIAFBNGooAgA2AgAgAkHoAGpBACkDmPucASINNwMAIAJB8ABqIgdBACkDkPucASIONwMAIAJB+ABqIA03AwAgAiABNgKAASACIAU2AoQBIAJBAToAiAEgAiABKQIsNwKMASACIA43A2AgAiABKAE6NgGaASACIAEtADg6AJgBIAJBAToAmQEgAkHgAGogAxB4AkAgAigCZCIBRQ0AIAIoAmAgAigCbBCSDCABIAFBBHRBF2pBcHEiA2pBCWoiAUUNACACKAJgIANrIAFBCBCeEgsgBxDWFQsgAkHAAWokAAvgHQMNfwV+AXwjAEHADGsiAyQAAkACQCACDQAgAEEBOwEADAELAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAIgRBVWoOAwABAAELIAJBf2oiAkUNASABQQFqIQELQgAhECACIQUgASEGIAJBCEkNAUIAIRAgASEGIAIhBQNAIAYpAAAiEULGjJmy5MiRo8YAfCARQtCfv/78+fPnT3wiEYRCgIGChIiQoMCAf4NQRQ0CIBFCCn4gEUIIiHwiEUIQiEL/gYCA8B+DQoGAgICA4gl+IBFC/4GAgPAfg0LkgICAgMjQB358QiCIIBBCgMLXL358IRAgBkEIaiEGIAVBeGoiBUEHSw0ACyAFDQFCACESQQEhBwwCCyAAQYECOwEADAgLA0AgBi0AACIIQVBqIglB/wFxQQlLDQIgEEIKfiAJrUL/AYN8IRBBASEHIAZBAWohBiAFQX9qIgUNAAtCACESC0EAIQUgAiEIQgAhEQwBCyACIAVrIQoCQAJAIAhB/wFxQS5GDQBBACEIQgAhESAFIQkMAQsgBkEBaiEGAkACQAJAAkACQCAFQX9qIgdBCE8NACAHIQkMAQsgByEJA0AgBikAACIRQsaMmbLkyJGjxgB8IBFC0J+//vz58+dPfCIRhEKAgYKEiJCgwIB/g1BFDQIgEUIKfiARQgiIfCIRQhCIQv+BgIDwH4NCgYCAgIDiCX4gEUL/gYCA8B+DQuSAgICAyNAHfnxCIIggEEKAwtcvfnwhECAGQQhqIQYgCUF4aiIJQQdLDQALCyAJRQ0BCyAGIgggCWohBgNAAkAgCC0AAEFQaiILQf8BcUEJTQ0AIAghBgwDCyAQQgp+IAutQv8Bg3whECAIQQFqIQggCUF/aiIJDQALC0EAIQkLQQAgByAJayIIa6whEQsgCCAKaiIIRQ0BQQEhB0IAIRIgCUUNAAJAIAYtAABBIHJB5QBGDQBBACEHDAELIAlBf2oiCkUNASAGQQFqIgstAAAiByEMAkACQCAHQVVqDgMAAQABCyAJQX5qIgpFDQIgBkECaiELIAYtAAIhDAsgDEFQakH/AXFBCUsNAUIAIRNCACESAkADQCALLQAAQVBqIgZB/wFxQQlLDQEgEkIKfiAGrUL/AYN8IhQgEiASQoCABFMiBhshEiAUIBMgBhshEyALQQFqIQsgCkF/aiIKDQALQQAhCgtCACATfSATIAdBLUYbIhIgEXwhESAKRSEHC0EAIQYCQCAIQRRIDQAgCEFtaiEIIAEhBiACIQsCQANAAkAgBi0AACIJQVJqDgMAAgACCyAIQQAgCUFRaiIKIAogCUsbayEIIAZBAWohBiALQX9qIgsNAAsLAkAgCEEBSA0AQQAgAmshCUIAIRAgASEGAkACQAJAAkADQCAJIQsgBi0AAEFQaiIKQf8BcUEJSw0BIAZBAWohBiALQQFqIQkCQCAQQgp+IAqtQv8Bg3wiEEL//4+7utat8A1WDQAgCQ0BCwsgEEL//4+7utat8A1WDQICQCALQX9GDQBBACAJayEFDAILQQFBAEG4+IABEKMgAAtBACALayEFCwJAIAVBf2oiCg0AQQAgCmshBgwCCyAGQQFqIQYgCiEFA0ACQCAGLQAAQVBqIglB/wFxQQlNDQAgBSAKayEGDAMLIAVBf2ohCwJAIBBCCn4gCa1C/wGDfCIQQv//j7u61q3wDVYNACAGQQFqIQYgBUEBRyEJIAshBSAJDQELCyALIAprIQYMAQtBACAFIAlqayEGCyASIAasfCERCyAIQQBKIQYLIAdFDQAgEUJafEJEVA0DIBBCgICAgICAgBBWDQMgBg0DAkAgEUIWVQ0AIBGnIQYgELohFSARQgBTDQIgBkEDdEGQ9oABaisDACAVoiEVDAMLIAMgEEIAIBGnQQN0QYDngAFqKQMAQgAQ5Q8gAykDCEIAUg0DIAMpAwAiEkKAgICAgICAEFYNAyASukSS1U0Gz/CARKIhFQwCCwJAAkACQAJAIAJBfWoOBgEDAwMDAAMLIAEpAABC37///v379+9fg0LJnJnK5KmSqtkAUg0CRAAAAAAAAPB/IRUMAQsCQCABMwAAIAExAAJCEIaEQt+//waDIhBCyZyZAlINAEQAAAAAAADwfyEVDAELIBBCzoK5AlINAUQAAAAAAAD4fyEVCyAAIBWaIBUgBEEtRhs5AwggAEEAOgAADAQLIABBAToAASAAQQE6AAAMAwsgFUGQ9oABIAZBA3RrKwMAoyEVCyAAQQA6AAAgACAVmiAVIARBLUYbOQMIDAELIANBEGogESAQEOgGIAMoAhghBQJAAkACQAJAIAZFDQAgBUF/Sg0BCyAFQQBIDQEgAykDECEQDAILIANBsAZqIBEgEEIBfBDoBiADKQMQIhAgAykDsAZSDQAgBSADKAK4BkYNAQtBACEGAkBBiQZFDQAgA0GwBmpBAEGJBvwLAAsgAkEBaiEFIANBuAZqIQ0CQAJAA0AgBSEJAkAgAiAGRw0AQQAhCAwCCyABIAZqIQggCUF/aiEFIAZBAWohBiAILQAAIghBMEYNAAsgASAGaiEKIAVBf2ohBwJAAkACQAJAAkACQAJAIAhBUGoiC0H/AXFBCUsNACACIAZrQQJqIQVBACEGAkADQCAFIQgCQCAGQf8FSw0AIA0gBmogCzoAAAsgBkEBaiEJAkAgByAGRg0AIAogBmohCyAIQX9qIQUgCSEGIAstAAAiDEFQaiILQf8BcUEJSw0CDAELCyAKIAZqIQogAyAJNgKwBkEAIQwgAiEGQQAhBQwGCyAKIAlqIQYgAyAJNgKwBiAMQf8BcUEuRg0BIAhBfmohBSAGQX9qIQpBACEMDAQLIAhBLkYNASAKQX9qIQpBACEIQQAhDAwFCyAGQX5qQQJqIQogBUF+aiIOIQUMAQsgCUF+aiEOQQAhBgNAAkAgByAGRw0AQQAhCCADQQAgDms2ArQGDAYLIAogBmohCSAGQQFqIQYgCS0AAEEwRg0ACyAFIAZrIQUgCiAGakF/aiEKQQAhCQsCQAJAAkAgBUEISQ0AIAlBCGohBgJAAkACQANAAkAgBiIJQYAGSQ0AIAlBeGohCQwDCyAKKQAAIhBCxoyZsuTIkaPGAHwgEELQn7/+/Pnz5098IhCEQoCBgoSIkKDAgH+DQgBSDQECQCAJQXhqIgZBgQZPDQAgA0GwBmogCWogEDcAACAJQQhqIQYgCkEIaiEKIAVBeGoiBUEHTQ0EDAELCyAGQYAGQZzqgAEQoyAACyAJQXhqIQkLIAMgCTYCsAYMAgsgAyAJNgKwBgsgBQ0AQQAhBQwBCwJAIAotAABBUGoiC0H/AXFBCUsNACAKQQFqIQ0gBUF/aiEHIAkgA0GwBmpqQQhqIQ9BACEIAkADQAJAIAkgCCIGaiIMQf8FSw0AIA8gBmogCzoAAAsCQCAHIAZGDQAgBUF/aiEFIAZBAWohCCANIAZqLQAAQVBqIgtB/wFxQQlLDQIMAQsLQQAhBQsgCiAGakEBaiEKIAxBAWohCQsgAyAJNgKwBgsgAyAFIA5rIgw2ArQGIAkNAEEAIQgMAgsgAiAFayEGIAIgBU8NACAGIAJBrOqAARCPIAALQQAhCAJAIAIgBUYNACABQX9qIQtBACEIA0ACQAJAIAsgBmotAABBUmoOAwEDAAMLIAhBAWohCAsgBkF/aiIGDQALCyADIAwgCWoiDDYCtAYgAyAJIAhrIgY2ArAGQYAGIQgCQCAGQYAGSw0AIAYhCAwBCyADQYAGNgKwBiADQQE6ALgMCwJAIAVFDQAgCkUNACAKLQAAQSByQeUARw0AAkACQCAFQX9qIgsNAEEAIQYMAQsCQAJAAkACQCAKQQFqIgktAAAiAkFVag4DAAEAAQsgBUF+aiILRQ0BIApBAmohCQtBACEFQQAhBgNAIAktAABBUGpB/wFxIgpBCUsNAiAGQQpsIApqIgogBiAGQYCABEgiBxshBiAKIAUgBxshBSAJQQFqIQkgC0F/aiILDQAMAgsLQQAhBQtBACAFayAFIAJBLUYbIQYLIAMgDCAGajYCtAYLIAhBEksNAQtBEyAIayIGRQ0AIANBsAZqIAhqQQhqQQAgBvwLAAsCQEGMBkUNACADQSRqIANBsAZqQYwG/AoAAAtBACEFQgAhECADKAIkRQ0AIAMoAigiBkG8fUgNAEH/DyEFIAZBtQJKDQACQAJAIAZBAU4NAEEAIQkMAQtBACEJA0BBPCEIAkAgBkETTw0AIAZB/PWAAWotAAAhCAsgA0EkaiAIEMEFAkAgAygCKCIGQYBwTA0AIAggCWohCSAGQQFIDQIMAQsLQQAhBQwBCyADQSxqIQsCQANAAkACQCAGDQAgCy0AACIGQQRLDQNBAkEBIAZBAkkbIQgMAQtBPCEIQQAgBmsiBkETTw0AIAZB/PWAAWotAAAhCAsgA0EkaiAIENEFAkAgAygCKCIGQf8PTA0AQf8PIQUMAwsgCSAIayEJIAZBAUgNAAsLAkAgCUF/aiIGQYF4Sg0AA0AgA0EkakGCeCAGayIJQTwgCUE8SRsiCRDBBSAJIAZqIgZBgnhJDQALCyAGQf8HakH+D0oNACADQSRqQTUQ0QUCQAJAAkACQCADKAIkIgpFDQAgAygCKCIIQQBIDQAgCEESSw0CAkAgCA0AQgAhEQwCC0EAIQlCACERA0AgEUIKfiERAkAgCSAKTw0AIBEgCyAJajEAAHwhEQsgCCAJQQFqIglGDQIMAAsLIAZB/gdqIQUMAwsCQCAIIApPDQACQAJAIAsgCGoiCy0AACIJQQVHDQAgCEEBaiAKRw0AIAMtAKwGDQEgCEUNAiALQX9qLQAAQQFxDQEMAgsgCUEETQ0BCyARQgF8IRELIBFCgICAgICAgBBUDQELIANBJGpBARDBBSADQSRqELULIREgBkGACGpB/g9KDQEgBkEBaiEGCyARQv////////8HgyEQQf4HQf8HIBFCgICAgICAgAhUGyAGaiEFCyAAQQA6AAAgACAFrUI0hiAQhL8iFZogFSAEQS1GGzkDCAsgA0HADGokAAv+HgIJfwN+IwBBgAFrIgIkAAJAAkACQAJAIAEoAgAiA0FXakEFSw0AA0BBAC0AwPGdARpBwAAQhQEiBEUNAiAEQQA2AgggBEIxNwMAIAEoAgQhAyABIAQ2AgQgAkEwakEIaiIEIANBCGopAwA3AwAgAkEwakEQaiIFIANBEGopAwA3AwAgAkEwakEYaiIGIANBGGopAwA3AwAgAkEwakEgaiIHIANBIGopAwA3AwAgAkEwakEoaiIIIANBKGopAwA3AwAgAkEwakEwaiIJIANBMGopAwA3AwAgAkEwakE4aiIKIANBOGopAwA3AwAgAiADKQMANwMwIAEQ2QEgAUE4aiAKKQMANwMAIAFBMGogCSkDADcDACABQShqIAgpAwA3AwAgAUEgaiAHKQMANwMAIAFBGGogBikDADcDACABQRBqIAUpAwA3AwAgAUEIaiAEKQMANwMAIAEgAikDMDcDACADQcAAQQgQnhIgASgCACIDQVdqQQZJDQALCyAALQDeAQ0CIANBFEcNAiABKAIoIgMoAgBBGkcNASACQTBqIAMpAwggA0EYaigCABC6GCACIAIoAjgiAzYCECACIAIpAzAiCzcDCAJAAkACQAJAIAAtANoBRQ0AIAAoAnxFDQEgCyADEO4XIQsgACgCcCIEQXBqIQYgC0IZiEKBgoSIkKDAgAF+IQwgACgCdCIFIAuncSEDQQAhBwNAAkAgBCADaikAACINIAyFIgtCf4UgC0L//fv379+//358g0KAgYKEiJCgwIB/gyILUA0AA0AgAkEIaiAGIAt6p0EDdiADaiAFcUEEdGsQ+x0NAyALQn98IAuDIgtQRQ0ACwsgDSANQgGGg0KAgYKEiJCgwIB/g1BFDQIgAyAHQQhqIgdqIAVxIQMMAAsLAkACQCABKAIIDgMAAgEACyABKQMQIgtCA4NCAFINAyALpyIDIAMoAgAiA0EBajYCACADQX9KDQMMBAsCQAJAIAEoAgwiAygCAEFlag4CAQACCyADKAIMDQEgAygCGEEBRw0BAkAgAygCFCIDKQMQUA0AIAJBMGogA0EQahCNCQJAIAIoAjBFDQAgAikDOCELDAULIAIoAjQpAwAiC0IDg0IAUg0EIAunIgMgAygCACIDQQFqNgIAIANBf0wNBQwECyADKQMAIgtCA4NCAFINAyALpyIDIAMoAgAiA0EBajYCACADQX9MDQQMAwsgAygCCEUNAQsgAikDCCILQgODQgBSDQMgC6ciAyADKAIAIgRBf2o2AgAgBEEBRw0DIAMgAygCEBDBGwwDCyACQTBqIANBEGoQjQkCQCACKAIwQQFHDQAgAikDOCELDAELIAIoAjQpAwAiC0IDg0IAUg0AIAunIgMgAygCACIDQQFqNgIAIANBf0wNAQsgAiALNwMoIAIgAigCEDYCICACIAIpAwg3AxgCQCAAQeAAaiACQRhqEOQHIgNFDQACQCADKAIYQQJPDQAgAkHwAGogA0EYahC2CSACQTBqIAJB8ABqEK0EIAEQ2QEgAUE4aiACQTBqQThqKQMANwMAIAFBMGogAkEwakEwaikDADcDACABQShqIAJBMGpBKGopAwA3AwAgAUEgaiACQTBqQSBqKQMANwMAIAFBGGogAkEwakEYaikDADcDACABQRBqIAJBMGpBEGopAwA3AwAgAUEIaiACQTBqQQhqKQMANwMAIAEgAikDMDcDAAsgAkEYahDpEAwCCyACQRhqEOkQDAELAAsgASgCACEDCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADQXRqIgRBByAEQSZJGw4mHwABAgMEBQYHCAkKCwwNHw4PEBESHxMUFR8fFhcYGRobHB0fHh8fCyABKAIMIgRFDR4gASgCCCEDIARBBHQhBANAAkAgAygCAEECRg0AIAAgA0EMaigCABCMAQsgA0EQaiEDIARBcGoiBA0ADB8LCyABKAIMIgNFDR0gASgCCCIEIANBDGxqIQcDQAJAAkAgBCgCACIDDQACQAJAAkACQAJAAkACQCAEKAIEIgYoAgAiBUF7aiIDQQQgA0EGSRsOBgABAgMEBQALIAZBADoAHAwFCwJAIAYoAghBA0cNACAAIAYoAgwQjAELIAAgBigCKBCMAQwECyAGQQA6ACQgACAGKAIoEIwBDAMLAkAgBigCCEEDRw0AIAAgBigCDBCMAQsCQCAGKAJIIgNFDQAgAygCACIFEMYDIAVB4ABBCBCeEiADQQxBBBCeEgsgBkEANgJIIAYoAihBgICAgHhGDQIgACAGQShqEMECDAILAkAgBigCIEEHRg0AIAZBIGoQ4wogBigCACEFCyAGQQc2AiACQCAFQQNHDQAgACAGKAIEEIwBCyAGQcgAaiEDIAYoAmgiBSAAEL4EAkAgACgCAEUNACAAIAUQgwgLIAMoAgBBgICAgHhGDQEgACADEMECDAELAkAgBigCCEEDRw0AIAAgBigCDBCMAQsgBigCKCIIIAAQigcgCEEYaiEJAkAgCEEUaigCACIFRQ0AIAhBEGooAgAhAyAFQQxsIQUDQCAAIAMoAgAQjAEgA0EMaiEDIAVBdGoiBQ0ACwsCQCAJKAIAQYCAgIB4Rg0AIAAgCRDBAgsCQCAIKAI8IgNFDQAgAxDkDSADKAIAIANBBGooAgAQwiAgA0EUQQQQnhILIAhBADYCPAJAIAgoAkAiA0UNACADKAIAIgUQxgMgBUHgAEEIEJ4SIANBDEEEEJ4SCyAIQQA2AkALIAAoAgBFDQEgACAGEPIKDAELIAAgAxCMAQsgBEEMaiIEIAdHDQAMHgsLAkAgAS0AHEECRg0AIAFBADoAHAsgASgCICIFIAAQigcgBUEYaiEGAkAgBUEUaigCACIERQ0AIAVBEGooAgAhAyAEQQxsIQQDQCAAIAMoAgAQjAEgA0EMaiEDIARBdGoiBA0ACwsCQCAGKAIAQYCAgIB4Rg0AIAAgBhDBAgsCQCAFKAI8IgNFDQAgAxDkDSADKAIAIANBBGooAgAQwiAgA0EUQQQQnhILIAVBADYCPAJAIAUoAkAiA0UNACADKAIAIgQQxgMgBEHgAEEIEJ4SIANBDEEEEJ4SCyAFQQA2AkAMHAsgACABKAIEEIwBDBsLIAAtAN4BIQMgAEEBOgDeASAAIAEoAgwQjAEgACADOgDeAQwaCyAAIAEoAgQQjAEgACABKAIIEIwBDBkLIAAtAN4BIQQgAEEBOgDeAQJAAkAgA0ELRw0AIAFBBGogABCDBgwBCyAAIAEQyQILIABBADoA3gEgACABKAI4EIwBIAAgBDoA3gEMGAsgAC0A3gEhAyAAQQA6AN4BIAAgASgCKBCMAQJAIAEoAghBAkkNACAAIAEoAgwQjAELIAAgAzoA3gEMFwsgASgCCEEBRw0WIAAgASgCDBCMAQwWCyAAIAEoAgQQjAEgACABKAIIEIwBIAAgASgCDBCMAQwVCwJAIAEtABhBBUcNACAAIAEoAhAQjAELAkAgASgCDCIDRQ0AIANBBHQhBCABKAIIQQxqIQMDQCAAIAMoAgAQjAEgA0EQaiEDIARBcGoiBA0ACwsCQCABKAIoIgNFDQAgAxC4GCADKAIAIANBBGooAgAQwCAgA0EUQQQQnhILIAFBADYCKAwUCyAAIAEoAhAQjAECQCABKAIEQYCAgIB4Rg0AIAEoAgwiA0UNACADQQR0IQQgASgCCEEMaiEDA0AgACADKAIAEIwBIANBEGohAyAEQXBqIgQNAAsLAkAgASgCICIDRQ0AIAMQuBggAygCACADQQRqKAIAEMAgIANBFEEEEJ4SCyABQQA2AiAMEwsgASgCDCIERQ0SIAEoAgghAyAEQQJ0IQQDQCAAIAMoAgAQjAEgA0EEaiEDIARBfGoiBA0ADBMLCyABQQA6ABwMEQsgASgCDCIERQ0QIAEoAgghAyAEQQJ0IQQDQCAAIAMoAgAQjAEgA0EEaiEDIARBfGoiBA0ADBELCyAAIAEoAgQQjAECQCABKAIYIgNFDQAgAxC4GCADKAIAIANBBGooAgAQwCAgA0EUQQQQnhILIAFBADYCGCABKAIIIgNBCGooAgAiBEUNDyADQQRqKAIAIQMgBEECdCEEA0AgACADKAIAEIwBIANBBGohAyAEQXxqIgQNAAwQCwsCQCABKAIMIgRFDQAgASgCCCEDIARBKGwhBANAIAMgABC+BAJAIAAoAgBFDQAgACADEIMICyADQShqIQMgBEFYaiIEDQALCwJAAkAgASgCECIDKAIAQYCAgIB4Rw0AIAAgAygCBBCMAQwBCyAAIAMQwQILAkAgASgCICIDRQ0AIAMQ5A0gAygCACADQQRqKAIAEMIgIANBFEEEEJ4SCyABQQA2AiACQCABKAIkIgNFDQAgAygCACIEEMYDIARB4ABBCBCeEiADQQxBBBCeEgsgAUEANgIkDA4LAkAgAS0AHEECRg0AIAFBADoAHAsgACABKAIgEKUJDA0LIAEoAgwiA0UNDCAAIAMQjAEMDAsgACABKAIEEIwBDAsLIAAgASgCBBCMAQwKCyABQSBqIQMCQAJAIAEtADRBAkYNACABQQA6ADQMAQsgAyAAEKIYCyAAKAIARQ0KIAAgAxC7BQwJCyABKAIEIAAQpQMMCAsgASgCDCIDRQ0HIANBKGwhBCABKAIIQQRqIQMDQAJAAkACQAJAAkAgA0F8aigCAA4FBAABAgMECyADKAIAQQFHDQMgACADQQRqKAIAEIwBDAMLIAAgAygCABCMAQwCCyADIAAQgQkMAQsgAyAAEO0GCyADQShqIQMgBEFYaiIEDQAMCAsLIAAgASgCBBCMAQwGCyAAIAEoAgQQjAEMBQsgACABKAIEEIwBDAQLIAAgASgCBBCMAQwDCyAAIAEoAgQQjAEMAgsgACABKAIEEIwBDAELAkAgASgCBCIDKAIAQQNHDQAgA0EEaiAAEK8QDAELIAMgABD6GQsgACgCAEUNACABKAIAQRpHDQAgACABQQhqIgQQngUiA0UNACABENkBIAFBOGogA0E4aikDADcDACABQTBqIANBMGopAwA3AwAgAUEoaiADQShqKQMANwMAIAFBIGogA0EgaikDADcDACABQRhqIANBGGopAwA3AwAgAUEQaiADQRBqKQMANwMAIAQgA0EIaikDADcDACABIAMpAwA3AwAgA0HAAEEIEJ4SCyACQYABaiQAC94eAiF/AX4jAEHABWsiBCQAAkACQCACQQFxDQBBACECAkBBgAJFDQAgBEGgAmpBAEGAAvwLAAsDQCAEQaACaiACaiACOgAAIAJBAWoiAkGAAkcNAAsCQEH/AUUNACAEQSFqIARBoAJqQf8B/AoAAAsgBC0AnwQhBQwBCwJAQf8BRQ0AIARBIWogA0HIAGpB/wH8CgAACyADLQDHAiEFCyADKAIIIQYCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcQ0AIAZBf0wNASAGQQFNDQIgBkEBdEF8aiEGCyAGQSAgBUH/AXEiB2drIghBACAHGyIJdCICQQEgCHRBASAHGyIISQ0CAkAgAiAIayIIQf////8HSQ0AIABC/v///wc3AxAgACAINgIMIABBADYCCCAAQQE2AgAgACAIrTcDGAwPCyADKALUAiEIAkACQCABQf8BcQ0AIAhFDQUCQCAIQX9qIghBf0wNACAIQQF0IQoMAgtBoKGAARCbIAALIAhFDQUgCEF/aiEKCyAEQYwFaiACQcChgAEQ4QsgCq1CDH4iJUIgiKcNBSAlpyICQf3///8HTw0FAkACQCACDQBBBCECQQAhCAwBC0EALQDA8Z0BGiACEIUBIgJFDQkgCiEICyAEQQA2ArQFIAQgAjYCsAUgBCAINgKsBQJAAkAgCkECSQ0AIApBf2ohCANAIARBoAJqQQRBABDFECACQQhqIARBoAJqQQhqKAIANgIAIAIgBCkCoAI3AgAgAkEMaiECIAhBf2oiCA0ADAILCyAKRQ0HQQEhCgsgAkEANgIIIAJCgICAgMAANwIADAcLQeCggAEQmyAAC0HwoIABEJsgAAtBgKGAARCbIAALQZChgAEQmyAAC0GwoYABEJsgAAtB0KGAARDTGQwCC0EAIQpBAEEEQQRBBBC1EQsgBEGgBWogCjYCACAEIAQpAqwFNwOYBQJAIAMoAjgiCEH/////A0sNACAIQQJ0IgJB/f///wdPDQAgAygCNCEKAkACQCACDQBBBCELQQAhDAwBC0EALQDA8Z0BGiACEIUBIgtFDQIgCCEMCwJAIAJFDQAgCyAKIAL8CgAACwJAAkAgAygCPCICDQAMAQsgAiACKAIAIgpBAWo2AgAgCkF/TA0CIAMoAkQhDSADKAJAIQ4LIAMtAOACIQ8gBEHgAmohCgJAQf8BRQ0AIAogBEEhakH/AfwKAAALIARB8ARqQgA3AwAgBEGgAmpBCGogBEGMBWpBCGooAgA2AgAgBEGgAmpBFGogBEGYBWpBCGooAgA2AgAgBEIANwPoBCAEQQA2AsQCIAQgDzoA+AQgBCANNgLQAiAEIA42AswCIAQgAjYCyAIgBCAINgLAAiAEIAs2ArwCIAQgDDYCuAIgBCAEKQKMBTcDoAIgBCAEKQOYBTcCrAIgBCADKQLIAjcD4AQgBCAFOgDfBCAEIAk2AtwCIAQgB0EBajYC2AIgBCAGNgLUAgJAIAFB/wFxDgMABAMACyADKAIEIRAgBEGABWogAygCCCICQaCigAEQ4QsgBEGMBWogAkGwooABEOELIARBmAVqIAZBwKKAARCUFUEBIAl0IREgAhDZEyISRQ0FIBAgAkEUbGohEyAEKAKQBSIUIAMoAtgCIhVBAnQiAmohFiAEKAKEBSIXIAJqIRggFCADKALcAiIZQQJ0IgJqIRogFyACaiEbIAMoAiwhHCADKAIoIR0gAygCECEeIAMoAhQhDyAEKAKcBSEfIAQoAqAFISAgBCgClAUhISAEKAKIBSEiQQAhC0EAISMgECEkAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAjIBJGDQACQCAjQQJJDQACQAJAICMgFUYNAAJAICMgGUYNACAEIAs2AqQFIAQgCyARaiIGNgKoBSAjICJPDQUgFyAjQQJ0IgJqIAs2AgAgIyAhTw0GIBQgAmogBCgCqAUiAjYCACACIAl2IgIgIE8NByAfIAJqQQE6AAAgJCgCCEUNFCAjIBJPDQggBEGgAmogBCgCpAUgHSAcIBAgI0EUbGoiAigCCBCICiAEQaACaiAEKAKoBSAdIBwgAigCCBCICgwUCyAZICJPDQggG0EANgIAIBkgIU8NCSAaIAs2AgAgCyAJdiICICBPDQogHyACakEBOgAADAELIBUgIk8NCiAYIAs2AgAgFSAhTw0LIBZBADYCAAsgJCgCCEUNDiAjIBJPDQsgBEGgAmogCyAdIBwgECAjQRRsaigCCBCICgwOCyAjICJPDQsgFyAjQQJ0IgJqIAs2AgAgIyAhTw0MIBQgAmogCzYCAAwOC0G4xoABEJsgAAsgIyAiQYCkgAEQsxEACyAjICFBkKSAARCzEQALIAIgIEGgpIABELMRAAsgIyASQYyugAEQsxEACyAZICJBsKSAARCzEQALIBkgIUHApIABELMRAAsgAiAgQdCkgAEQsxEACyAVICJB4KSAARCzEQALIBUgIUHwpIABELMRAAsgIyASQYyugAEQsxEACyAjICJBgKWAARCzEQALICMgIUGQpYABELMRAAsCQAJAAkAgIyASTw0AIAQoAqQCIQYgBCgCqAIhDEEAIQICQCAQICNBFGxqKAIAIg4NAEEAIQcMAwtBACEHA0ACQAJAAkAgDiAPTw0AIB4gDkEJbGoiCCgABSEOIAgoAAEhDSACIAgtAAAiBU8NAgNAIAogAkH/AXFqLQAAIQgCQAJAIAdBAXFFDQAgAUH/AXEgCEYNAQsgCyAIaiIHIAxPDQMgBiAHQQJ0akEANgIAIAghAQtBASEHIAUgAkEBaiICRw0ACyAFIQIMAgsgDiAPQYzjgwEQsxEACyAHIAxBsKWAARCzEQALIAogBWotAAAhCAJAAkACQCAHQQFxRQ0AIAFB/wFxIAhGDQELIAsgCGohBwJAAkAgDUEBRg0AIAcgDEkNASAHIAxBoKWAARCzEQALQQAhDSAHIAxPDQILIAYgB0ECdGogDTYCACAIIQELIAJBAWohAkEBIQcgDkUNAwwBCwsgByAMQbClgAEQsxEACyAjIBJB/K2AARCzEQALQQEhByACQf8BSw0BCwNAIAogAmotAAAhCAJAAkAgB0EBcUUNACABQf8BcSAIRg0BCyALIAhqIgcgDE8NAyAGIAdBAnRqQQA2AgAgCCEBCyACQf8BRiIIDQFBASEHQf8BIAJBAWogCBsiAkH/AU0NAAsLIAshBgwCCyAHIAxBsKWAARCzEQALIAQgAzYCsAUgBCAkNgKsBSAEIARBqAVqNgK8BSAEIARBpAVqNgK4BSAEIARBoAJqNgK0BSAjIBJPDQICQAJAIBAgI0EUbGooAgAiCw0AQQAhB0EAIQIMAQtBACECQQAhBwNAAkACQCALIA9PDQAgHiALQQlsaiIIKAAFIQsgCCgAASEMIAIgCC0AACIFTw0BA0AgCiACQf8BcWotAAAhCAJAAkAgB0EBcUUNACABQf8BcSAIQf8BcUYNAQsgBEGsBWogAiAIQQEQ3wYgCCEBC0EBIQcgBSACQQFqIgJHDQALIAUhAgwBCyALIA9BjOODARCzEQALIAogBWotAAAhCAJAAkAgB0EBcUUNACABQf8BcSAIQf8BcUYNAQsgBEGsBWogBSAIIAwQ3wYgCCEBCyACQQFqIQJBASEHIAsNAAtBASEHIAJB/wFLDQELA0AgCiACai0AACEIAkACQCAHQQFxRQ0AIAFB/wFxIAhB/wFxRg0BCyAEQawFaiACIAhBARDfBiAIIQELIAJB/wFGIggNAUEBIQdB/wEgAkEBaiAIGyICQf8BTQ0ACwsgI0EBaiEjIAYgEWohCyAkQRRqIiQgE0YNBgwACwsgIyASQfytgAEQsxEAC0G84JsBENMZAAsAC0EBIAMgBEGgAmoQnAQMAwtBACADIARBoAJqEJwEDAILIAQoAtQCIQYLAkACQCAGDQAgBCgClAUhCgwBCyARQQJ0IQ9BACEMIAQoApAFIQUgBCgClAUhCiAEKAKEBSELIAQoAogFIQEgBCgCnAUhDSAEKAKgBSEOA0ACQAJAAkACQAJAAkACQAJAIAwgDkYNACAMIAl0IQICQCANIAxqLQAADQAgBCgCqAIiCCACSQ0CIBEgCCACayIISw0DIAQoAqQCIAJBAnRqIQIgDyEIA0AgAigCACIHIAFPDQcgAiALIAdBAnRqKAIANgIAIAJBBGohAiAIQXxqIggNAAwJCwsgBCgCqAIiCCACSQ0DIBEgCCACayIISw0EIAQoAqQCIAJBAnRqIQIgDyEIA0AgAigCACIHIApPDQcgAiAFIAdBAnRqKAIANgIAIAJBBGohAiAIQXxqIghFDQgMAAsLIA4gDkGQo4ABELMRAAsgAiAIQaCjgAEQoyAACyARIAhBsKOAARCPIAALIAIgCEHQo4ABEKMgAAsgESAIQeCjgAEQjyAACyAHIAFBwKOAARCzEQALIAcgCkHwo4ABELMRAAsgDEEBaiIMIAZHDQALCyADKALQAiIIIApPDQIgBCAEKAKQBSICIAhBAnRqKAIANgLoBCADKALUAiIIIApPDQMgBCACIAhBAnRqKAIANgLsBCADKALYAiIIIAQoAogFIgdPDQQgBCAEKAKEBSIHIAhBAnRqKAIANgLwBAJAIAMoAtwCIgggCkkNACAIIApBgKOAARCzEQALIAQgAiAIQQJ0aigCADYC9AQgBCgCmAUgBCgCnAVBAUEBELURIAQoAowFIAJBBEEEELURIAQoAoAFIAdBBEEEELURCwJAIAQoAqACIAQoAqgCIgJNDQAgBEEYaiAEQaACaiACQQRBBBDtDCAEKAIYIgJBgYCAgHhHDQULAkAgBCgCuAIgBCgCwAIiAk0NACAEQRBqIARBuAJqIAJBBEEEEO0MIAQoAhAiAkGBgICAeEcNBgsCQCAEKAKsAiAEKAK0AiICTQ0AIARBCGogBEGsAmogAkEEQQwQ7QwgBCgCCCICQYGAgIB4Rw0HCwJAQdwCRQ0AIABBBGogBEGgAmpB3AL8CgAACyAAQQA2AgALIARBwAVqJAAPCyAIIApB0KKAARCzEQALIAggCkHgooABELMRAAsgCCAHQfCigAEQsxEACyACIAQoAhxB4KGAARCqHgALIAIgBCgCFEHwoYABEKoeAAsgAiAEKAIMQYCigAEQqh4AC7AeARF/IwBBIGsiAyQAAkACQAJAAkACQAJAIAIoAgAiBCACKAIEIgVLDQAgAS0A2AJFIAItABFyIQYCQCACLQAQDQAgASgCKCIHRQ0CIAZBAXENAyABKALQAiIIDQRBARDHHCEBIABBAjYCACAAIAE2AgQMBgsCQCABKALUAiIIDQBBABDHHCEBIABBAjYCACAAIAE2AgQMBgsCQAJAAkACQAJAAkACQCAIIAEoAswCIglNDQBBACEKDAELIAggASgCPHZBfmoiByABKAIUIgtPDQUgASgCECAHQQxsaiIHKAIIRQ0EIAcoAgQoAgAiDCABKAIgIgdPDQMgBCABKAIcIAxBAnRqKAIAIgdJDQIgBCAHayENQQEhCiAGQQFxDQELAkAgBCAFSQ0AIAQhDgwKCyACKAIMIg8gBCAPIARLGyEHIAFBwABqIQsgAigCCCEQIAQhAiAEIQ4DQAJAAkACQAJAAkACQCAHIAJGDQACQCAIIAsgECACai0AAGotAABqIgggASgCCCIRTw0AIAEoAgQgCEECdGooAgAiCCABKALIAksNBiAIRQ0RIAggCUsNBiAIIAEoAjx2QX5qIhEgASgCFCISTw0CIAEoAhAgEUEMbGoiESgCCEUNAyARKAIEKAIAIhEgASgCICISTw0EIAEoAhwgEUECdGooAgAiEiACQQFqIhNLDQUgAiASa0EBaiISIARLDQZBASEKAkAgBkEBcQ0AIBEhDCATIQ4gEiENDAcLIAAgETYCDCAAIBM2AgggACASNgIEIABBATYCAAwSCyAIIBFB9O6DARCzEQALIAcgD0GMnYABELMRAAsgESASQZTvgwEQsxEAC0EAQQBBpO+DARCzEQALIBEgEkGE74MBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAUgAkEBaiICRg0KDAALCyAAIAw2AgwgACAENgIIIAAgDTYCBCAAQQE2AgAMCQsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAwgB0GE74MBELMRAAtBAEEAQaTvgwEQsxEACyAHIAtBlO+DARCzEQALIABBADYCAAwECwJAAkAgBkEBcQ0AAkAgASgC0AIiCA0AQQEQxxwhASAAQQI2AgAgACABNgIEDAYLAkACQAJAAkACQAJAIAggASgCzAIiBk0NAEEAIRIMAQsgCCABKAI8dkF+aiIHIAEoAhQiC08NBCABKAIQIAdBDGxqIgcoAghFDQMgBygCBCgCACIRIAEoAiAiB08NAiAEIAEoAhwgEUECdGooAgAiB0kNASAEIAdrIQxBASESCwJAIAQgBUkNACAEIQkMBgsgAigCDCINIAQgDSAESxshByABQcAAaiELIAIoAgghECAEIQkDQAJAAkACQAJAAkACQCAHIARGDQACQCAIIAsgECAEai0AAGotAABqIgIgASgCCCIITw0AIAEoAgQgAkECdGooAgAiCCABKALIAksNBiAIRQ0NIAggBksNBiAIIAEoAjx2QX5qIgIgASgCFCIRTw0CIAEoAhAgAkEMbGoiAigCCEUNAyACKAIEKAIAIhEgASgCICICTw0EIAEoAhwgEUECdGooAgAiAiAEQQFqIglLDQVBASESIAQgAmtBAWohDAwGCyACIAhB9O6DARCzEQALIAcgDUGMnYABELMRAAsgAiARQZTvgwEQsxEAC0EAQQBBpO+DARCzEQALIBEgAkGE74MBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAUgBEEBaiIERg0GDAALCyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgESAHQYTvgwEQsxEAC0EAQQBBpO+DARCzEQALIAcgC0GU74MBELMRAAsCQCABKALQAiIIDQBBARDHHCEBIABBAjYCACAAIAE2AgQMBQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAIIAEoAswCIhFNDQACQCAEIAVPDQAgAigCDCIGIAQgBiAESxshByABQcAAaiELIAIoAgghEANAIAcgBEYNCiAIIAsgECAEai0AAGotAABqIgIgASgCCCIITw0JAkAgASgCBCACQQJ0aigCACIIIAEoAsgCSw0AIAhFDQQgCCARTQ0FCyAFIARBAWoiBEcNAAsLIABBADYCAAwRCyAIIAEoAjx2QX5qIgIgASgCFCIITw0CIAEoAhAgAkEMbGoiAigCCEUNAyACKAIEKAIAIgIgASgCICIITw0EIAQgASgCHCACQQJ0aigCACIBSQ0FIAAgAjYCDCAAIAQ2AgggAEEBNgIAIAAgBCABazYCBAwQCyAAQQA2AgAMDwsgCCABKAI8dkF+aiICIAEoAhQiCE8NBiABKAIQIAJBDGxqIgIoAghFDQcgAigCBCgCACICIAEoAiAiCE8NCCAEQQFqIgggASgCHCACQQJ0aigCACIBSQ0JIAAgAjYCDCAAIAg2AgggAEEBNgIAIAAgCCABazYCBAwOCyACIAhBlO+DARCzEQALQQBBAEGk74MBELMRAAsgAiAIQYTvgwEQsxEACyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgAiAIQfTugwEQsxEACyAHIAZBjJ2AARCzEQALIAIgCEGU74MBELMRAAtBAEEAQaTvgwEQsxEACyACIAhBhO+DARCzEQALIANBADYCGCADQQE2AgwgA0HE5oMBNgIIIANCBDcCECADQQhqQczmgwEQhRsACyAAIBE2AgwgACAJNgIIIAAgDDYCBCAAIBI2AgAMAwsCQCABKALQAiIIDQBBARDHHCEBIABBAjYCACAAIAE2AgQMAwsCQAJAAkACQAJAAkACQCAIIAEoAswCSw0AIAggASgCPHZBfmoiAiABKAIUIghPDQQgASgCECACQQxsaiICKAIIRQ0DIAIoAgQoAgAiAiABKAIgIghPDQIgBCABKAIcIAJBAnRqKAIAIgFJDQEgACACNgIMIAAgBDYCCCAAQQE2AgAgACAEIAFrNgIEDAkLIANBCGogByABKAIsIhAoAghBf2pBeHFqQQhqIAIoAggiCyACKAIMIgcgBCAFIBAoAhAREwACQCADKAIIIgIOAwYFAAYLAkAgAygCDCICIAVPDQAgAUHAAGohEANAAkACQAJAAkACQAJAIAIgB08NAAJAIAggECALIAJqLQAAai0AAGoiCCABKAIIIgRPDQAgASgCBCAIQQJ0aigCACIIIAEoAsgCSw0FAkACQAJAIAhFDQAgCCABKALMAksNASAIIAEoAjx2QX5qIgggASgCFCIETw0FIAEoAhAgCEEMbGoiCCgCCEUNBiAIKAIEKAIAIgggASgCICIETw0HIAJBAWoiAiABKAIcIAhBAnRqKAIAIgFPDQIgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIABBADYCAAwTCyADQQhqIAEoAiggASgCLCIEKAIIQX9qQXhxakEIaiALIAcgAiAFIAQoAhAREwACQCADKAIIRQ0AIAMoAgwiBCACTQ0HDAgLIABBADYCAAwSCyAAIAg2AgwgACACNgIIIABBATYCACAAIAIgAWs2AgQMEQsgCCAEQfTugwEQsxEACyACIAdBjJ2AARCzEQALIAggBEGU74MBELMRAAtBAEEAQaTvgwEQsxEACyAIIARBhO+DARCzEQALIAJBAWohBAsgBCECIAQgBUkNAAsLIABBADYCAAwICyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgAiAIQYTvgwEQsxEAC0EAQQBBpO+DARCzEQALIAIgCEGU74MBELMRAAsgACADKQIMNwIEIABBDGogA0EIakEMaigCADYCAAsgACACNgIADAILAkACQAJAAkACQAJAIAggASgCzAJNDQBBACEJDAELIAggASgCPHZBfmoiCyABKAIUIhBPDQQgASgCECALQQxsaiILKAIIRQ0DIAsoAgQoAgAiBiABKAIgIgtPDQIgBCABKAIcIAZBAnRqKAIAIgtJDQEgBCALayESQQEhCQsgA0EIaiAHIAEoAiwiECgCCEF/akF4cWpBCGogAigCCCILIAIoAgwiByAEIAUgECgCEBETAAJAAkACQAJAIAMo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QQJGDQAgA0Gw650BNgJkIANBsOudATYCVCADIANB7wZqNgKAASADIANB1ABqNgJ8IAMgA0HkAGo2AnhBwOudASADQfgAakHk4ZsBEJEGCyADKAI0IQUgAygCMCEGQQAoArTrnQEhBAJAAkACQEEAEPYOKAIAIgcgBCgC+AUiC0YNAAJAAkACQAJAIAsNACAEIAQoAvgFIgtBASALGzYC+AUgC0UNAQsgBEGEBmooAgAiC0UNASAEQYAGaigCACALIAcgC3BBmJubARCVHCILLQAAIQcgC0EBOgAAIAdFDQIgA0H4AGogBCgC8AUgBCgC9AUoAhQRBwBB8AVBCBD7HiEHAkBB8AVFDQAgByADQfgAakHwBfwKAAALQQEhC0EAIQgMBQsgA0H4AGogBCgC8AUgBCgC9AUoAhQRBwAgBBD6HgJAQfAFRQ0AIAQgA0H4AGpB8AX8CgAAC0EAIQtBASEIDAQLQYibmwEQzxkACwJAIAsoAgwiB0UNACALIAdBf2oiBzYCDCALKAIIIAdBAnRqKAIAIQdBACEIIAtBADoAAAwCC0EAIQggC0EAOgAAIANB+ABqIAQoAvAFIAQoAvQFKAIUEQcAQfAFQQgQ+x4hB0HwBUUNASAHIANB+ABqQfAF/AoAAAwBC0EBIQggBEEBNgL4BQtBACELCyADQYcBaiADQdQAakECai0AADoAACADQasBaiADQeQAakECai0AADoAACADQcABaiADQThqQQhqKQIANwIAIANByAFqIANBOGpBEGopAgA3AgAgA0HQAWogA0E4akEYaigCADYCACADIAs6AIQBIAMgBDYCgAEgAyAHNgJ8IAMgCDYCeCADIAMvAFQ7AIUBIAMgAy8AZDsAqQEgAyADKQI4NwK4ASADQQA2AtwBIANCADcC1AEgAyAFNgK0ASADIAY2ArABIANBsOudATYCrAEgA0EAOgCoASADIAU2AqQBIANBADYCoAEgAyAFNgKcASADIAY2ApgBIANBADYCkAEgA0EANgKIASADQfgAakEYaiEPIANB+ABqQRBqIRAgA0G4AWohEUEAIRJBACEEAkACQANAIANBOGogERCwCgJAAkAgAygCOEEBRw0AAkACQCADKAJ4QQFHDQAgAygCgAEhCAwBCyADKAJ8IQgLIAMoAjwhByADKAKsASITKAIAIgsoAhAhBQJA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AgBBGkcNASACIAEoAgAgASgCBCADQQhqIgYQtQwgAigCAEEyRg0DIAMQyQEgA0E4aiACQThqKQMANwMAIANBMGogAkEwaikDADcDACADQShqIAJBKGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgBiACQQhqKQMANwMAIAMgAikDADcDAAwDCyADQQRGDQICQAJAAkAgAw4EBQABBAULIAQoAgRBAUcNBCAEKAIIIgMoAgBBGkcNASACQYABaiABKAIAIAEoAgQgA0EIaiIGELUMIAIoAoABQTJGDQQgAxDJASADQThqIAJBgAFqQThqKQMANwMAIANBMGogAkGAAWpBMGopAwA3AwAgA0EoaiACQYABakEoaikDADcDACADQSBqIAJBgAFqQSBqKQMANwMAIANBGGogAkGAAWpBGGopAwA3AwAgA0EQaiACQYABakEQaikDADcDACAGIAJBgAFqQQhqKQMANwMAIAMgAikDgAE3AwAMBAsCQCAEKAIEIgctAGxBAkcNACAHQcAAaiEDA0AgAygCGCIDLQAsQQJGDQALCwJAIAcoAoQBIgZFDQAgBygCgAEhAyAGQdgAbCEGA0ACQAJAAkACQCADKAIAQXxqDgIDAAELIANBBGooAgAiCCgCAEEaRw0BIAJBgAFqIAEoAgAgASgCBCAIQQhqIgkQtQwgAigCgAFBMkYNAiAIEMkBIAhBOGogAkGAAWpBOGopAwA3AwAgCEEwaiACQYABakEwaikDADcDACAIQShqIAJBgAFqQShqKQMANwMAIAhBIGogAkGAAWpBIGopAwA3AwAgCEEYaiACQYABakEYaikDADcDACAIQRBqIAJBgAFqQRBqKQMANwMAIAkgAkGAAWpBCGopAwA3AwAgCCACKQOAATcDAAwCCyADIAEQ/gEMAQsgCCABEEYLIANB2ABqIQMgBkGof2oiBg0ACwsCQCAHQZgBaigCACIDRQ0AIAdBlAFqKAIAIgkgA0EobGohCgNAAkACQAJAAkACQAJAAkAgCSgCAA4FBgABAgUGCyAJKAIEQQFHDQUgCSgCCCIDKAIAQRpHDQMgAkGAAWogASgCACABKAIEIANBCGoiBhC1DCACKAKAAUEyRg0FIAMQyQEgA0E4aiACQYABakE4aikDADcDACADQTBqIAJBgAFqQTBqKQMANwMAIANBKGogAkGAAWpBKGopAwA3AwAgA0EgaiACQYABakEgaikDADcDACADQRhqIAJBgAFqQRhqKQMANwMAIANBEGogAkGAAWpBEGopAwA3AwAgBiACQYABakEIaikDADcDACADIAIpA4ABNwMADAULIAkoAgQiAygCAEEaRw0BIAJBgAFqIAEoAgAgASgCBCADQQhqIgYQtQwgAigCgAFBMkYNBCADEMkBIANBOGogAkGAAWpBOGopAwA3AwAgA0EwaiACQYABakEwaikDADcDACADQShqIAJBgAFqQShqKQMANwMAIANBIGogAkGAAWpBIGopAwA3AwAgA0EYaiACQYABakEYaikDADcDACADQRBqIAJBgAFqQRBqKQMANwMAIAYgAkGAAWpBCGopAwA3AwAgAyACKQOAATcDAAwECwJAIAkoAgQiCy0AbEECRw0AIAtBwABqIQMDQCADKAIYIgMtACxBAkYNAAsLAkAgC0GEAWooAgAiBkUNACALQYABaigCACEDIAZB2ABsIQYDQAJAAkACQCADKAIAQQVHDQAgA0EEaigCACIIKAIAQRpHDQEgAkGAAWogASgCACABKAIEIAhBCGoiDBC1DCACKAKAAUEyRg0CIAgQyQEgCEE4aiACQYABakE4aikDADcDACAIQTBqIAJBgAFqQTBqKQMANwMAIAhBKGogAkGAAWpBKGopAwA3AwAgCEEgaiACQYABakEgaikDADcDACAIQRhqIAJBgAFqQRhqKQMANwMAIAhBEGogAkGAAWpBEGopAwA3AwAgDCACQYABakEIaikDADcDACAIIAIpA4ABNwMADAILIAMgARCnCAwBCyAIIAEQRgsgA0HYAGohAyAGQah/aiIGDQALCwJAIAtBmAFqKAIAIgZFDQAgC0GUAWooAgAhAyAGQShsIQYDQCABIAMQuwIgA0EoaiEDIAZBWGoiBg0ACwsgCy0APCIDQQZGDQMgA0ECRw0DIAtBEGohAwNAIAMoAhgiAy0ALEECRg0ADAQLCyADIAEQRgwCCyADIAEQRgwBCyAJKAIMIQYgCSgCCCEDIAIgATYCgAEgBkUNACAGQShsIQYDQCACQYABaiADELwDIANBKGohAyAGQVhqIgYNAAsLIAlBKGoiCSAKRw0ACwsgBy0APCIDQQZGDQMgA0ECRw0DIAdBEGohAwNAIAMoAhgiAy0ALEECRg0ADAQLCyADIAEQRgwCCyADIAEQRgwBCyAEKAIMIQYgBCgCCCEDIAIgATYCgAEgBkUNACAGQShsIQYDQCACQYABaiADELwDIANBKGohAyAGQVhqIgYNAAsLIARB2ABqIgQgBUcNAAsLAkAgACgCmAEiA0UNACAAKAKUASIJIANBKGxqIQsDQAJAAkACQAJAAkACQAJAIAkoAgAOBQYAAQIFBgsgCSgCBEEBRw0FIAkoAggiAygCAEEaRw0DIAJBgAFqIAEoAgAgASgCBCADQQhqIgYQtQwgAigCgAFBMkYNBSADEMkBIANBOGogAkGAAWpBOGopAwA3AwAgA0EwaiACQYABakEwaikDADcDACADQShqIAJBgAFqQShqKQMANwMAIANBIGogAkGAAWpBIGopAwA3AwAgA0EYaiACQYABakEYaikDADcDACADQRBqIAJBgAFqQRBqKQMANwMAIAYgAkGAAWpBCGopAwA3AwAgAyACKQOAATcDAAwFCyAJKAIEIgMoAgBBGkcNASACQYABaiABKAIAIAEoAgQgA0EIaiIGELUMIAIoAoABQTJGDQQgAxDJASADQThqIAJBgAFqQThqKQMANwMAIANBMGogAkGAAWpBMGopAwA3AwAgA0EoaiACQYABakEoaikDADcDACADQSBqIAJBgAFqQSBqKQMANwMAIANBGGogAkGAAWpBGGopAwA3AwAgA0EQaiACQYABakEQaikDADcDACAGIAJBgAFqQQhqKQMANwMAIAMgAikDgAE3AwAMBAsCQCAJKAIEIgwtAGxBAkcNACAMQcAAaiEDA0AgAygCGCIDLQAsQQJGDQALCyAMQZABaiEKAkAgDEGEAWooAgAiBkUNACAMQYABaigCACEDIAZB2ABsIQYDQAJAAkACQCADKAIAQQVHDQAgA0EEaigCACIIKAIAQRpHDQEgAkGAAWogASgCACABKAIEIAhBCGoiBBC1DCACKAKAAUEyRg0CIAgQyQEgCEE4aiACQYABakE4aikDADcDACAIQTBqIAJBgAFqQTBqKQMANwMAIAhBKGogAkGAAWpBKGopAwA3AwAgCEEgaiACQYABakEgaikDADcDACAIQRhqIAJBgAFqQRhqKQMANwMAIAhBEGogAkGAAWpB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RQ0BIAEtAAANASAFIAEQlQEMAQsgBUEEaigCACABEPMICyAHIANBOGoiA0cNAAwFCwsgAygCBCABEPMIIAEtAAANAyADKAIIIAEQlQEMAwsgAS0AAA0CIAMoAgQgARCVAQwCCyADKAIwIgNFDQEgAS0AAA0BIAMgARCVAQwBCwJAAkACQAJAAkAgAygCBCIDKAIADgcFAAECAwUEBQsgA0EMaigCACIFRQ0EIANBCGooAgAhAyAFQShsIQUDQAJAIAMoAgBBB0YNACADIAEQ8wgLIANBKGohAyAFQVhqIgUNAAwFCwsgAygCBCABEPMIDAMLIANBDGooAgAiBUUNAiADQQhqKAIAIQYgBUE4bCEHQQAhAwNAAkACQAJAAkAgBiADaiIFKAIADgMAAQIACwJAIAVBCGooAgBBA0cNACABLQAADQAgBUEMaigCACABEJUBCyAFQShqKAIAIAEQ8wgMAgsgBUEwaigCACIFRQ0BIAEtAAANASAFIAEQlQEMAQsgBUEEaigCACABEPMICyAHIANBOGoiA0cNAAwDCwsgAygCBCABEPMIIAEtAAANASADKAIIIAEQlQEMAQsgAS0AAA0AIAMoAgQgARCVAQsgAiAERw0ADAILCwJAAkACQAJAAkACQAJAAkACQAJAIAIOCwoAAQIDBAUGBwgKCgsCQCABLQAADQAgACgCKCABEJUBCyAAKAIIQQJHDQkgAS0AAA0JIABBDGohAwwICyAAKAIIQQFHDQggAS0AAA0IIABBDGohAwwHCyABLQAADQcgAEEEaiEDDAYLAkAgACgCBCIDKAIAIgJBA0cNAAJAIAEtAAANACADKAIQIAEQlQELIANBDGooAgAiAkUNByABLQAADQcgAkEEdCECIANBCGooAgBBDGohAwNAAkAgAS0AAA0AIAMoAgAgARCVAQsgA0EQaiEDIAJBcGoiAg0ADAgLCwJAIAEtAAANACADKAIgIAEQlQELIAJBAkcNBiABLQAADQYgA0EEaiEDDAULIAEtAAANBSAAQQRqIQMMBAsgAS0AAA0EIABBBGohAwwDCyABLQAADQMgAEEEaiEDDAILIAEtAAANAiAAQQRqIQMMAQsgAS0AAA0BIABBBGohAwsgAygCACABEJUBCyABLQAADRggACgCOCEADBYLAkAgAS0AAA0AIAAoAiggARCVAQsg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IAFBABCeASADKAJEIQogAygCQCIEQQdGDQQgA0HoAWpBGGoiDSAHQRhqKQMANwMAIANB6AFqQRBqIg4gB0EQaikDADcDACADQegBakEIaiIPIAdBCGopAwA3AwAgAyAHKQMANwPoASABKAK8ASEIQQhBKBDrHyIFDQEMCwsgA0HAAGogARDVByADKAJEIQogAygCQCIMQQdGDQMgA0H4AGpBGGoiDSAHQRhqKQMANwMAIANB+ABqQRBqIg4gB0EQaikDADcDACADQfgAakEIaiIPIAdBCGopAwA3AwAgAyAHKQMANwN4AkAgAiADKAKoAUcNACADQagBakGwtJsBELUWCyADKAKsASIEIAJBKGxqIgUgCjYCBCAFIAw2AgAgBSADKQN4NwMIIAVBEGogDykDADcDACAFQRhqIA4pAwA3AwAgBUEgaiANKQMANwMADAELIAUgCjYCBCAFIAQ2AgAgBSADKQPoATcDCCAFQRBqIA8pAwA3AwAgBUEYaiAOKQMANwMAIAVBIGogDSkDADcDAAJAIAIgAygCqAFHDQAgA0GoAWpBwLSbARC1FgsgAygCrAEiBCACQShsaiIKQQA2AhggCiAMNgIUIAogCTYCECAKIAg2AgwgCiAJNgIIIAogBTYCBCAKQQI2AgALIAMgAkEBaiICNgKwAQJAAkAgAS0AyAEiBUF7ag4DAgEAAQsgARCHDiALQRxHDQEgAS0AyAFB/wFxQQVHDQEgASgCvAEhBSABKAK4ASEKIANBuoCAgHg2AkAgASAKIAUgA0HAAGoQrxoMAQsLIAEoAsQBIQIgASgCwAEhBCADQcgBaiAFEN4bIANBATYCRCADQZjvmwE2AkAgA0IBNwJMIANBigWtQiCGQbynmwGthDcDMCADIANBMGo2AkggA0GQAmogA0HAAGoQjRUgA0GkAmogA0HQAWooAgA2AgAgAyADKQLIATcCnAIgBCACIANBkAJqEIUVIQogAS0AyAFBogFHDQAgARDHESECIAEQhw4gASACEOURCyAAQQc2AgAgACAKNgIEIANBqAFqENYdDAULIANBEGogASACEN0FAkACQCADLQAkQQJGDQAgA0HcAGogA0EoaikDADcCACADQdQAaiADQSBqKQMANwIAIANBzABqIANBGGopAwA3AgAgAyADKQMQNwJEAkBBJEUNACAAQQRqIANBwABqQST8CgAAC0EAIQEMAQsgACADKAIQNgIEQQchAQsgACABNgIADAQLIARBogFGDQELIANBwABqQQRyIAQQ3hsgA0EcNgJUIANB0LWbATYCUCADQbCAgIB4NgJAIAEoAsABIAEoAsQBIANBwABqEIUVIQICQCABLQDIAUGiAUcNACABEMcRIQUgARCHDiABIAUQ5RELIABBBzYCACAAIAI2AgQMAgsgARDHESECIAEQhw4gAEEHNgIAIAAgAjYCBAwBCyABIAEoAngiEEH//3txNgJ4IAEoAsABIREgARCHDiADQQhqQQhBCEE4QZDCmwEQ2BQgA0EANgI4IAMgAygCDCILNgI0IAMgAygCCDYCMCADQegBakEIaiECIANB6AFqQQRqIQwgA0HAAGpBEGohEiADQegBakEEciETIANByAFqQQhqIQYgA0HAAGpBCGohFCADQcAAakEEciEVIAEtAMgBIQVBACEKQQAhFgJAAkADQCAKQThsIQcCQANAAkAgBUH/AXEiBUEDRw0AIAEQhw4gASgCvAEhBiADQcAAakEIaiADQTBqQQhqKAIAIgQ2AgAgAyADKQIwNwNAIAMgFjYCWCADIAY2AlQgAyARNgJQIAMgATYCTCAEQX9qIQUgAygCRCICIARBOGxqIQcgAyAYNwJcIBhCIIinIQggGKchCyAWQQFxIQkCQANAAkACQAJAIAIgB0YiBA0AIAIoAgAhCiAFRQ0BIApBAkcNAiACKAIMIQogAigCCCEMIANBu4CAgHg2AugBIAEgDCAKIANB6AFqEK8aDAILAkACQAJAIAEtAIEBQQRxDQBBACECIAEtAHlBwABxRQ0CIAEtAMgBQf8BcUEKRg0BDAILQQAhAiABLQDIAUEKRw0BCyABEIcOQQEhAgsgACADKQIwNwIEIAAgAjoAHCAAQQA2AhggACAGNgIUIAAgETYCECAAQQM2AgAgAEEMaiADQThqKAIANgIADAkLIApBAkcNACACKAIEKAIADQIgCUUNACADQbqAgIB4NgLoASABIAsgCCADQegBahCvGgsgAkEAQTggBBtqIQIgBUF/aiEFDAALCyACKAIIIQUgAigCDCECIANB7oCAgHg2AugBIAUgAiADQegBahCFFSECAkAgAS0AyAFBogFHDQAgARDHESEFIAEQhw4gASAFEOURCyAA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KAIIIQULIAJBADYCKCACQgA3AyAgAiAFNgIYIAIgDTcDECACIAMgAEEEdGo2AgwgAiAENgIIIAIgAzYCBCACIAM2AgAgAUHAAGogAhCfBgwLCwJAIA1CA4NCAFINACANpyIAIAAoAgAiAEEBajYCACAAQX9MDQkLIAIgAUHAAGogDCADIA0gASgCCBCbBQsgAikDAFANCSACKQMIIg1QDQkgDUIDg0IAUg0JIA2nIgMgAygCACIAQX9qNgIAIABBAUcNCSADIAMoAhAQwRsMCQsgACgCDCIDKAIADQggAiADKQMIIANBGGooAgAQuhggAigCCCEDIAIpAwAhDAJAAkAgASkDACINQgBSDQAgAiABQcAAaiAMIANCACADEJsFDAELAkAgDUIDg0IAUg0AIA2nIgAgACgCACIAQQFqNgIAIABBf0wNCAsgAiABQcAAaiAMIAMgDSABKAIIEJsFCyACKQMAUA0IIAIpAwgiDVANCCANQgODQgBSDQggDaciAyADKAIAIgBBf2o2AgAgAEEBRw0IIAMgAygCEBDBGwwICyAALQAgDQcgACgCGA0HAkAgACgCDCIERQ0AIAAoAgghAyAEQdAAbCEEIAFBwABqIQYDQEEIIQVBGCEHAkACQAJAAkAgAykDACIMQn58Ig1CAiANQgJUG6cOAwACAQALIANBCGooAgANAkEgIQdBECEFDAELIANByABqLQAADQECQAJAAkACQAJAIAEtAKABDQAgDKdBAXENAyACIANBCGoiBSkDACADQRhqIgcoAgAQuhggAigCCCEIIAIpAwAhDCABKQMAIg1CAFINASACIAYgDCAIQgAgAxCbBQwCCwJAIAynQQFxDQAgASADQQhqKQMAIANBGGooAgAQ1QwLIANBIGopAwAiDUICUQ0FIA2nQQFxDQUMAwsCQCANQgODQgBSDQAgDaciCSAJKAIAIglBAWo2AgAgCUF/TA0NCyACIAYgDCAIIA0gASgCCBCbBQsCQCACKQMAUA0AIAIpAwgiDVANACANQgODQgBSDQAgDaciCCAIKAIAIglBf2o2AgAgCUEBRw0AIAggCCgCEBDBGwsgASAFKQMAIAcoAgAQ1QwLIANBIGopAwAiDUICUQ0CIA2nQQFxDQILQTghB0EoIQULIAEgAyAFaikDACADIAdqKAIAENUMCyADQdAAaiEDIARBsH9qIgQNAAsLIAAoAhwiA0UNByADQQhqKAIAIgBFDQcgA0EEaigCACEDIABBDGwhAANAAkACQCADKAIAIgQNACADQQRqKAIAIAEQsQUMAQsgBCABEKgBCyADQQxqIQMgAEF0aiIADQAMCAsLIAEgACkDECAAKAIgENUMDAYLIAAoAgQgARCoAQwFCyAAKAIEIQQCQCABKAKcASIDRQ0AIAEoApgBIQAgAiAEKQMoIARBOGooAgAQuhggAigCCCEFIAIpAwAhDSAELQBBIQcgBC0AQCEIIAQoAiQhBiAEKAIgIQkCQCAAIANBLGxqIgNBXGoiCigCACIAIANBVGoiCygCAEcNACALEIcXCyADQVhqKAIAIABBBXRqIgMgBzoAGSADIAg6ABggAyAGNgIUIAMgCTYCECADIAU2AgggAyANNwMAIAogAEEBajYCAAsCQCABLQCgAQ0AIAQtAEBFDQAgAiAEKQMoIARBOGooAgAQuhggAigCCCEDIAIpAwAhDAJAAkAgASkDACINQgBSDQAgAiABQcAAaiAMIANCACADEJsFDAELAkAgDUIDg0IAUg0AIA2nIgAgACgCACIAQQFqNgIAIABBf0wNBQsgAiABQcAAaiAMIAMgDSABKAIIEJsFCyACKQMAUA0AIAIpAwgiDVANACANQgODQgBSDQAgDaciAyADKAIAIgBBf2o2AgAgAEEBRw0AIAMgAygCEBDBGwsgBC0AQQ0EIAQpAwBCAFINBCAEQQhqIQMCQCAELQAcQQJHDQADQCADKAIAIgBBGGohAyAALQAsQQJGDQALCwJAIAEoApwBIgBFDQAgASgCmAEgAEEsbGohAAJAIAQtAEANACACIAQpAyggBEE4aigCABC6GCACKAIIIQUgAikDACENIAIgAykDACADQRBqKAIAELoYIAIgAEFwaiANIAUgAikDACACKAIIEJ8FIAIpAwAiDVANASANQgODQgBSDQEgDaciACAAKAIAIgVBf2o2AgAgBUEBRw0BIAAgACgCEBDBGwwBCyACIAMpAwAgA0EQaigCABC6GCAAQWBqIgAgAikDACACKAIIEOcFGiACIAQpAyggBEE4aigCABC6GCAAIAIpAwAgAigCCBDnBRoLAkAgBC0AQA0AIAIgBCkDKCAEQThqKAIAELoYIAIoAgghACACKQMAIQ0gAiADKQMAIANBEGooAgAQuhggAiABQYABaiANIAAgAikDACACKAIIEJ8FIAIpAwAiDVANBSANQgODQgBSDQUgDaciAyADKAIAIgBBf2o2AgAgAEEBRw0FIAMgAygCEBDBGwwFCyABIAMpAwAgA0EQaigCABDVDCABIAQpAyggBEE4aigCABDVDAwECyAAKAIQIgNFDQMgA0EIaigCACIARQ0DIANBBGooAgAhAyAAQQxsIQADQAJAAkAgAygCACIEDQAgA0EEaigCACABELEFDAELIAQgARCoAQsgA0EMaiEDIABBdGoiAA0ADAQLCyAAKAIEIgMgARCoASABLQCgAQ0CIAMoAgBBGkcNAiACIAMpAwggA0EYaigCABC6GCACKAIIIQMgAikDACEMAkACQCABKQMAIg1CAFINACACIAFBwABqIAwgA0IAIAMQmwUMAQsCQCANQgODQgBSDQAgDaciACAAKAIAIgBBAWo2AgAgAEF/TA0CCyACIAFBwABqIAwgAyANIAEoAggQmwULIAIpAwBQDQIgAikDCCINUA0CIA1CA4NCAFINAiANpyIDIAMoAgAiAEF/ajYCACAAQQFHDQIgAyADKAIQEMEbDAILAAsCQAJAIAAoAggOAwABAgALAkAgACgCKCIEQQhqKAIAIgBFDQAgBEEEaigCACEDIABBDGwhAANAIAMoAgAgARCoASADQQxqIQMgAEF0aiIADQALCwJAIARBFGooAgAiAEUNACAEQRBqKAIAIQMgAEHYAGwhAANAIAMgARDxAiADQdgAaiEDIABBqH9qIgANAAsLIAQoAjAiA0UNASADIAEQqAEMAQsCQCAAKAIoIgZBCGooAgAiA0UNACAGQQRqKAIAIgQgA0EGdGohCANAAkAgBEE4aigCACIARQ0AIARBNGooAgAhAyAAQQxsIQADQCADKAIAIAEQqAEgA0EMaiEDIABBdGoiAA0ACwsCQAJAAkACQAJAAkAgBCgCAA4HBQABAgMFBAULIARBDGooAgAiAEUNBCAEQQhqKAIAIQMgAEEobCEAA0ACQCADKAIAQQdGDQAgAyABEKwJCyADQShqIQMgAEFYaiIADQAMBQsLIAQoAgQgARCsCQwDCyAEQQxqKAIAIgNFDQIgBEEIaigCACEFIANBOGwhB0EAIQMDQAJAAkACQAJAIAUgA2oiACgCAA4DAAECAAsCQCAAQQhqKAIAQQNHDQAgAEEMaigCACABEKgBCyAAQShqKAIAIAEQrAkMAgsgAEEwaigCACIARQ0BIAAgARCoAQwBCyAAQQRqKAIAIAEQrAkLIAcgA0E4aiIDRw0ADAMLCyAEKAIEIAEQrAkgBCgCCCABEKgBDAELIAQoAgQgARCoAQsgBEHAAGoiBCAIRw0ACwsCQCAGQRRqKAIAIgBFDQAgBkEQaigCACEDIABBDGwhAANAIAMoAgAgARCoASADQQxqIQMgAEF0aiIADQALCyAGKAIYQYCAgIB4Rg0AIAZBIGooAgAiAEUNACAGQRxqKAIAIQMgAEEwbCEAA0AgAyABEMUDIANBMGohAyAAQVBqIgANAAsLIAJBMGokAAuyGwIQfwN+IwBB8ABrIgIkAAJAAkAgAS0AhQMNACAAQQA2AgAMAQtBACEDAkACQAJAAkACQAJAAkACQAJAIAEtAIQDIgRFDQBBACEFQQAhBkEAIQcMAQsCQCABKAKwAkGAgICAeEYNAEEBIQggASgCvAJBAUcNAiABKAK0AiEJAkAgASgCuAIiCg0AQQAhAUHLACEFDAcLIAkgCmohC0EAIQMgCSEMQQEhBUEBIQggCS0AACINIQEDQAJAAkAgA0EBcUUNACAMIAtHDQEMCAsgBSALIAxrTw0HIAwgBWohDAtBASEDIAhBAXQhCCABQQF0IAwtAABqIQFBACEFIAxBAWohDAwACwsCQAJAIAEoAsQCQYCAgIB4Rw0AQQAhDUIAIRJBfyEKQQAhBQwBCyABKALcAiENIAEoAswCIQogAkE4aiABQcQCahDWAgJAIAIoAjhBgICAgHhHDQBBACEFQgAhEgwBC0EALQDA8Z0BGiACKAJEIgYoAhAhDiACKAJQIgwoAiQhByAMKAIQIQkgDCgCHCEPIAIpA2AhEiACKAJcIQggAigCWCEQIAIoAlQhCyACKQNIIRMgAigCQCERIAIpAzghFEE4EIUBIgVFDQggBSASNwIwIAUgCDYCLCAFIBA2AiggBSALNgIkIAUgDDYCICAFIBM3AhggBSAGNgIUIAUgETYCECAFIBQ3AgggBUKBgICAEDcCACAPQQJ0IAhBACALG2ogB2ogCSARakEMbGogDkEDdGqtQiCGIRILIA1BAUshByAKQRFJIQYgEkGQvoABrYQhEgsgASgC/AIiDkEDSw0CQQAhCiACQTpqQQA6AAAgAkEAOwE4IAEoAvQCIQggASgC+AIhA0EAIQsDQCAKIAMgCiADSxshDAJAAkADQCAKIg1BgAJGDQEgDCANRg0FIA1BAWohCiAIIA1qLQAARQ0ACyANQf8ATQ0BQQAhAwwFC0EAIQMCQAJAAkACQCALDgQIAQIDAAtBsqObAUEoQfDBgAEQ3RcAC0EALQDA8Z0BGiACLQA4IQ1BDBCFASIDRQ0KIAMgDToACCADQoGAgIAQNwIAQbTBgAEhEQwGC0EALQDA8Z0BGiACLQA5IQ0gAi0AOCEKQQwQhQEiA0UNCSADIA06AAkgAyAKOgAIIANCgYCAgBA3AgBByMGAASERDAULQQAtAMDxnQEaIAItADohDSACLQA5IQogAi0AOCEMQQwQhQEiA0UNCCADQoGAgIAQNwIAIANBCmogDToAACADIApBCHQgDEH/AXFyOwEIQdzBgAEhEQwECwJAIAtBA0YNACACQThqIAtqIA06AAAgC0EBaiELDAELC0EDQQNBkMKAARCzEQALIAJBADYCOEEAQYCGmwEgAUG8AmogAkE4akGov4ABEJkZAAsgDCADQYDCgAEQsxEACyABKAKgAiELQQAhDQJAAkACQAJAAkACQAJAAkACQCABLQCnAkEBRg0ADAELIAtBA0sNAEEAIQogAkE6akEAOgAAIAJBADsBOCABQYACaiEIQQAhDQNAIAIgCCANQYABcUEDdmoiDCkDACAMQQhqKQMAIA1B/wBxEI0SAkAgAikDAEIBg1ANACAKQQNPDQMgAkE4aiAKaiANOgAAIApBAWohCgsgDUH/AXFBAWoiDUH/AXEgDUYNAAtBACENAkACQAJAAkAgCg4EBAMBAgALQbKjmwFBKEGkwIABEN0XAAtBAC0AwPGdARogAi0AOSEKIAItADghDEGMAhCFASINRQ0NIA1CgYCAgBA3AgACQEGAAkUNACANQQhqIAFBgAL8CgAACyANIAo6AIkCIA0gDDoAiAJB/L+AASEMDAILQQAtAMDxnQEaIAItADohCiACLQA5IQwgAi0AOCEIQYwCEIUBIg1FDQwgDUKBgICAEDcCAAJAQYACRQ0AIA1BCGogAUGAAvwKAAALIA0gCjoAigIgDSAMOgCJAiANIAg6AIgCQZDAgAEhDAwBC0EALQDA8Z0BGiABIAItADgiCmotAAAhDEEMEIUBIg1FDQsgDSAMOgAJIA0gCjoACCANQoGAgIAQNwIAQei/gAEhDAsgEkIgiKchCCASpyEKAkACQAJAIANFDQAgDUUNASAGDQIgDiALSQ0EIAEvAYADIAEvAaQCQTJqQf//A3FNIQgMBgsCQAJAIA1FDQBBASEBAkAgBiAHcUEBRw0AIAtBAksNAgsgAEEANgIIIAAgDDYCBCAAIA02AgAMCQsCQCAEDQAgACAINgIIIAAgCjYCBCAAIAU2AgAMDwtBACEBIABBADYCAAwICyAAIAg2AgggACAKNgIEIAAgBTYCACANIA0oAgAiCkF/ajYCACAKQQFHDQ0MCAsCQCAGDQAgAEEANgIIIAAgETYCBCAAIAM2AgAgBUUNDSAFIAUoAgAiDUF/ajYCACANQQFHDQ0gBSAKEOoPDA0LAkAgByAOQQJLcQ0AQQAhASAAQQA2AgggACARNgIEIAAgAzYCAAwHCyAAIAg2AgggACAKNgIEIAAgBTYCACADIAMoAgAiDUF/ajYCACANQQFHDQwMAwsCQCAHDQAgDiALSQ0CIAEvAYADIAEvAaQCQTJqQf//A3FNIQgMBAsCQAJAAkAgDkEDSQ0AIAtBAksNAQsgDiALSQ0BIAEvAYADIAEvAaQCQTJqQf//A3FNIQgMBQsgACAINgIIIAAgCjYCBCAAIAU2AgAgDSANKAIAIgpBf2o2AgACQCAKQQFHDQAgDSAMEOoPCyADIAMoAgAiDUF/ajYCACANQQFHDQwMAwsgAEEANgIIIAAgETYCBCAAIAM2AgAgDSANKAIAIghBf2o2AgBBASEBIAhBAUYNBAwFCyAKQQNBtMCAARCzEQALIABBADYCCCAAIBE2AgQgACADNgIAIA0gDSgCACIIQX9qNgIAQQEhASAIQQFGDQIMAwsgAyAREOoPDAgLAkAgCA0AIABBADYCCCAAIAw2AgQgACANNgIAIAMgAygCACIIQX9qNgIAQQEhASAIQQFHDQIgAyAREOoPDAILIABBADYCCCAAIBE2AgQgACADNgIAIA0gDSgCACIIQX9qNgIAQQEhASAIQQFHDQELIA0gDBDqDwsCQCAFRQ0AIAUgBSgCACIIQX9qNgIAIAhBAUcNACAFIAoQ6g8LIAEgDUVyDQUgDSANKAIAIgpBf2o2AgAgCkEBRw0FCyANIAwQ6g8MBAtBASEOQcwAIQUgCkEBRg0AIAJBADoAbSAJLQABIQwgAkEBOgBuAkACQCAMQfyrhQFqLQAAIA1B/KuFAWotAABJDQBBACEDIA0hBSAMIQ0MAQtBACEOIAJBADoAbkEBIQMgAkEBOgBtIAwhBQtBAiEMIAJBAjYCSCACQoCAgIDwHzcCQCACIAs2AjwgAiAJNgI4A0AgBSELAkACQCAMDQBBACEMAkAgAigCRCIFDQAMAgsgAiAFQX9qNgJEIAIoAjgiESACKAI8Rg0BIAIgEUEBajYCOCACIAIoAkAiBUEBajYCQCARIQwMAQsgAkEANgJIIAJBMGogAkE4aiAMENELIAIoAjQhDCACKAIwIQULAkACQAJAAkACQAJAAkACQAJAAkAgDEUNACAMLQAAIgxB/KuFAWotAAAiBiALQf8BcSIRQfyrhQFqLQAASQ0BIAwgEUcNAgwICyADQf8BcSIMIA5B/wFxRw0CIAJBADYCOEEBIAJB7QBqIAJB7gBqIAJBOGpBoNOYARCXGQALIAIgAzoAbiAFQYACTw0CIAIgBToAbSADIQ4gBSEDIAwhBSALIQ0MBwsgBiANQf8BcUH8q4UBai0AAE8NBSAFQYACTw0CIAIgBToAbiAFIQ4gCyEFIAwhDQwGCwJAAkACQCAKIAxNDQBBACENIAkgDGotAAAiC0H8q4UBai0AAEH6AU0NAUHNACEFQQAhBwwCCyAMIApB9O2DARCzEQALIAogDkH/AXEiBU0NAyAJIAVqLQAAQRh0IAtBEHQgBUEIdHJyIAxyIQRBzgAhB0HPACEFC0IAIRICQANAIAogDUYNASAJIA1qIQwgDUEBaiENQgEgDDEAAIYgEoQhEgwACwsgAkEoaiAJIApBABDBCiACKAIsIQwgAigCKCENIAJBIGogCSAKQQEQwQogAkEYaiAJIAogDCACKAIkIA0gAigCICIRSyIGGyANIBEgBhsiDhDOCCAKQX9MDQMgAigCGCERIAIoAhwhBgwIC0HUpJsBQSsgAkHvAGpB8JiAAUHs7IMBEOgPAAtB1KSbAUErIAJB7wBqQfCYgAFB3OyDARDoDwALIAUgCkH87IMBELMRAAtB/NuDARDTGQwFCyALIQULIAIoAkghDAwACwsgDUH/AXEhEQsCQAJAIAoNAEEBIQwMAQtBAC0AwPGdARogChCFASIMRQ0BCwJAIApFDQAgDCAJIAr8CgAAC0EALQDA8Z0BGkHQABCFASINRQ0AIA0gCjYCSCANIAw2AkQgDUEBNgJAIA0gBTYCOCANIAg2AjQgDSABNgIwIA0gAzoAKSANIAs6ACggDSAENgIkIA0gBzYCICANIA42AhggDSASNwMQIA0gBjYCDCANIBE2AgggDUKBgICAEDcDACAAIAo2AgggAEGkvoABNgIEIAAgDTYCAAwBCwALIAJB8ABqJAAL6BkCDn8EfiMAQYABayICJAACQCAAKAKcASIDIAAoApQBRw0AIABBlAFqEIYXCyAAKAKYASADQSxsaiIEQQA2AgggBEKAgICAgAE3AgAgBEEAKQOQ+5wBIhA3AgwgBCAQNwIcIARBFGpBACkDmPucASIQNwIAIARBJGogEDcCACAAIANBAWoiBDYCnAECQCABKAIIIgNFDQAgASgCBCEEIANBOGwhAwNAAkACQCAEKAIAQQlHDQAgBEEIaiAAEMUDDAELIAQgABChAQsgBEE4aiEEIANBSGoiAw0ACyAAKAKcASEECwJAAkACQAJAIARFDQAgACAEQX9qIgQ2ApwBIAJB2ABqIgMgACgCmAEgBEEsbGoiBEEMaikCADcDACACQeAAaiIBIARBFGopAgA3AwAgAkHoAGoiBSAEQRxqKQIANwMAIAJB8ABqIgYgBEEkaikCADcDACACIAQpAgQ3A1AgBCgCACIEQYCAgIB4Rg0AIAJBBGpBJGogBikDADcCACACQQRqQQxqIAMpAwA3AgAgAkEEakEUaiABKQMANwIAIAJBBGpBHGoiByAFKQMANwIAIAIgBDYCBCACIAIpA1A3AgggAigCLEUNA0EAIQEgAkEwakEIakEAKQOY+5wBNwMAIAJBACkDkPucATcDMCACQRBqIQgCQCACKAIcIgkNAEIAIRBBiPucASEEQn8hEUEAIQNBACEFDAMLIAIoAhAiCkEIaiEGIAopAwBCf4VCgIGChIiQoMCAf4MhEgNAAkAgEkIAUg0AA0AgCkGAf2ohCiAGKQMAIRAgBkEIaiIEIQYgEEKAgYKEiJCgwIB/gyIQQoCBgoSIkKDAgH9RDQALIBBCgIGChIiQoMCAf4UhEiAEIQYLIAJB0ABqIAcgCiASeqdBAXRB8AFxa0FwahDXBgJAAkAgAikDUCIQUEUNACALIQQMAQsgAigCWCEEA0AgAiAENgJIIAIgEDcDQCAQIAQQ7hchECACKAIgIgRBYGohBSAQQhmIQoGChIiQoMCAAX4hESACKAIkIgEgEKdxIQNBACEMAkACQAJAA0ACQCAEIANqKQAAIhMgEYUiEEJ/hSAQQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DIhBQDQADQCACQcAAaiAFIBB6p0EDdiADaiABcSINQQV0Ig5rEPsdDQMgEEJ/fCAQgyIQUEUNAAsLIBMgE0IBhoNCgIGChIiQoMCAf4NQRQ0CIAMgDEEIaiIMaiABcSEDDAALCyAEQQAgDWtBBXRqIQVBgAEhAwJAIAQgDkEFdSINaiIOKQAAIhAgEEIBhoNCgIGChIiQoMCAf4N6p0EDdiAEIA1BeGogAXFqIgQpAAAiECAQQgGGg0KAgYKEiJCgwIB/g3mnQQN2akEHSw0AIAIgAigCKEEBajYCKEH/ASEDCyAOIAM6AAAgBEEIaiADOgAAIAIgAigCLEF/ajYCLCAFQWBqKQMAIhFQDQAgBUF4aigCACEEIAVBcGopAwAhECARQgODQgBSDQEgEaciAyADKAIAIgFBf2o2AgAgAUEBRw0BIAMgAygCEBDBGwwBC0IAIRAgCyEECyACIAQ2AlggAiAQNwNQIAJBMGogAikDQCACKAJIEOcFGiAEIQsgEEIAUg0ACwsgAigCLEUNAiASQn98IBKDIRIgBCELIAlBf2oiCQ0ADAILC0Hw5poBQTJBpOeaARDyEgALIAIoAjAiBCkDACERIAIoAjwhAwJAIAIoAjQiAQ0AQgAhEEEAIQUMAQsgBCABQQR0a0Fwaq1CIIYgAUERbEEZaq2EIRBBCCEFCyACIBA3AnQgAiAFNgJwIAggA0EBakEBdiADIAIoAhwbIAcQlR0gAiADNgJoIAIgEUJ/hUKAgYKEiJCgwIB/gzcDUCACIAQ2AmAgAiAEQQhqNgJYIAIgBCABakEBajYCXCACQdAAaiAIELUICwJAIAIoAgwiA0UNACACKAIIIgQgA0EFdGohBSAAQYABaiEIIABB8ABqIQ8DQAJAIAQtABkNAAJAIAQtABgNACACKAIcRQ0BIAQpAwAgBEEIaigCABDuFyEQIAIoAhAiAUFwaiELIBBCGYhCgYKEiJCgwIABfiERIAIoAhQiBiAQp3EhA0EAIQoDQAJAIAEgA2opAAAiEyARhSIQQn+FIBBC//379+/fv/9+fINCgIGChIiQoMCAf4MiEFANAANAIAQgCyAQeqdBA3YgA2ogBnFBBHRrEPsdDQMgEEJ/fCAQgyIQUEUNAAsLIBMgE0IBhoNCgIGChIiQoMCAf4NQRQ0CIAMgCkEIaiIKaiAGcSEDDAALCyAEKAIQIgpB3cvdnnlsIAQoAhQiDWpB3cvdnnlsQQ93IQMCQCAAKAJ4DQAgDyAIEKQCGgsgACgCdCILIANxIQEgA0EZdiIMrUKBgoSIkKDAgAF+IREgACgCcCEDQQAhB0EAIQ4DQAJAIAMgAWopAAAiEyARhSIQQn+FIBBC//379+/fv/9+fINCgIGChIiQoMCAf4MiEFANAANAAkAgCiADIBB6p0EDdiABaiALcUEDdGsiCUF4aigCAEcNACANIAlBfGooAgBGDQQLIBBCf3wgEIMiEFBFDQALCyATQoCBgoSIkKDAgH+DIRACQAJAAkAgDkEBRg0AIBBQDQEgEHqnQQN2IAFqIAtxIQYLAkAgECATQgGGg0IAUg0AQQEhDgwCCwJAIAMgBmosAAAiAUEASA0AIAMgAykDAEKAgYKEiJCgwIB/g3qnQQN2IgZqLQAAIQELIAMgBmogDDoAACADIAZBeGogC3FqQQhqIAw6AAAgACAAKAJ4IAFBAXFrNgJ4IAAgACgCfEEBajYCfCADIAZBA3RrIgNBeGogCjYCACADQXxqIA02AgAMAwtBACEOCyABIAdBCGoiB2ogC3EhAQwACwsgBEEgaiIEIAVHDQALCwJAAkAgACgCnAEiBEUNACAAKAKYASAEQSxsaiIEQVRqRQ0AIARBYGohCyACKAIQIgMpAwAhEUIAIRNBACENIAIoAhwhAUEAIQZCACEQAkAgAigCFCIFRQ0AIAMgBUEEdGtBcGqtQiCGIAVBEWxBGWqthCEQQQghBgsgAiAQNwJ0IAIgBjYCcCALIAFBAWpBAXYgASAEQWxqKAIAGyAEQXBqIgYQlR0gAiABNgJoIAIgEUJ/hUKAgYKEiJCgwIB/gzcDUCACIAM2AmAgAiADQQhqNgJYIAIgAyAFakEBajYCXCACQdAAaiALELUIIAIoAiAhAyACKAIsIQUCQCACKAIkIgpFDQAgAyAKQQV0a0Fgaq1CIIYgCkEhbEEpaq2EIRNBCCENCyADKQMAIRACQCAFQQFqQQF2IAUgBEF8aigCABsiASAEQXhqKAIATQ0AIAYgASAEEJACGgsCQCAFRQ0AIANBCGohBCAQQn+FQoCBgoSIkKDAgH+DIRADQAJAIBBCAFINAANAIANBgH5qIQMgBCkDACEQIARBCGoiASEEIBBCgIGChIiQoMCAf4MiEEKAgYKEiJCgwIB/UQ0ACyAQQoCBgoSIkKDAgH+FIRAgASEECyAFQX9qIQUgECIRQn98IBGDIRACQCADIBF6p0ECdEHgA3FrIgFBYGopAwAiEVANACACQdAAaiAGIBEgAUFoaigCACABQXBqKQMAIAFBeGooAgAQnwUCQCACKQNQIhFQDQAgEUIDg0IAUg0AIBGnIgEgASgCACILQX9qNgIAIAtBAUcNACABIAEoAhAQwRsLIAUNAQwCCwsgBUUNAANAAkAgEEIAUg0AA0AgA0GAfmohAyAEKQMAIRAgBEEIaiIBIQQgEEKAgYKEiJCgwIB/gyIQQoCBgoSIkKDAgH9RDQALIBBCgIGChIiQoMCAf4UhECABIQQLIAMgEHqnQQJ0QeADcWtBYGoQ6hAgEEJ/fCAQgyEQIAVBf2oiBQ0ACwsgCkUNASATpyIERQ0BIBNCIIinIAQgDRCeEgwBCwJAIAIoAhQiBEUNACACKAIQIAIoAhwQkwwgBCAEQQR0QRdqQXBxIgNqQQlqIgRFDQAgAigCECADayAEQQgQnhILIAIoAiQiBkUNAAJAIAIoAiwiBUUNACACKAIgIgNBCGohBCADKQMAQn+FQoCBgoSIkKDAgH+DIRADQAJAIBBCAFINAANAIANBgH5qIQMgBCkDACEQIARBCGoiASEEIBBCgIGChIiQoMCAf4MiEEKAgYKEiJCgwIB/UQ0ACyAQQoCBgoSIkKDAgH+FIRAgASEECyADIBB6p0ECdEHgA3FrQWBqEOoQIBBCf3wgEIMhECAFQX9qIgUNAAsLIAYgBkEFdEEnakFgcSIEakEJaiIDRQ0AIAIoAiAgBGsgA0EIEJ4SCyACQQRqEL4QIAJBgAFqJAALmxkBD38jAEHQAGsiAyQAIAJBADYCAAJAIAEoAgAiBCABKAIEIgVLDQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAI8IgZFDQAgAS0AEEEBRw0BCwJAAkAgAigCEEEBRw0AIAIoAhQhByACKAIYDQEgAigCICEEDBkLIABB3AJB2AIgAS0AEBtqKAIAIgdFDRcgByAAKALUAksNFyAHIAAoAggiCE8NAiAAKAIEIAdBFGxqKAIIIglFDRcgAigCHEEAIAIoAhgbIQogACgCKCEGIAAoAiwhC0EAIQwgCSEIA0AgCCALTw0EIAxBAWohDCAGIAhBA3RqKAIEIggNAAsgCiAMTw0XIAJBATYCGCACIApBAWo2AhwCQAJAAkAgCkUNAEEAIQcDQCAJRQ0CIAkgC08NCCAGIAlBA3RqKAIEIQkgCiAHQQFqIgdHDQALCyAJRQ0AIAkgC0kNASAJIAtBnOODARCzEQALQfjygwEQmyAACyAGIAlBA3RqKAIAIgcgACgCOCIITw0FIAQgACgCNCAHQQJ0aigCACIASQ0GIAIgBzYCDCACIAQ2AgggAkEBNgIAIAIgBCAAazYCBAwZCyAHIAAoAggiCE8NBgJAAkAgACgCBCAHQRRsaigCCCIJRQ0AIAIoAhwhCiAAKAIoIQYgACgCLCELQQAhDCAJIQgDQCAIIAtPDQogDEEBaiEMIAYgCEEDdGooAgQiCA0ACyAKIAxJDQELIAJBADYCGCACQQA2AgAgAiACKAIgQQFqIgQ2AiAMGAsgAkEBNgIYIAIgCkEBajYCHCACKAIgIQgCQAJAAkAgCkUNAEEAIQcDQCAJRQ0CIAkgC08NDCAGIAlBA3RqKAIEIQkgCiAHQQFqIgdHDQALCyAJRQ0AIAkgC0kNASAJIAtBnOODARCzEQALQfjygwEQmyAACyAGIAlBA3RqKAIAIgcgACgCOCIBTw0JIAhBAWoiCCAAKAI0IAdBAnRqKAIAIgBJDQogAiAHNgIMIAIgCDYCCCACQQE2AgAgAiAIIABrNgIEDBgLAkACQCACKAIQQQFHDQAgAigCFCEHIAIoAhgNASACKAIgIQQMFgsgACgC2AIiB0UNFCAHIAAoAtQCSw0UIAIoAhwhCSACKAIYIQsgA0EwaiAAIAcQmxkgAygCNCIIRQ0UQQAhDCAJQQAgCxshCiADKAIwIgtBLGooAgAhCSALQShqKAIAIQsDQCAIIAlPDQwgDEEBaiEMIAsgCEEDdGooAgQiCA0ACyAKIAxPDRQgAkEBNgIYIAIgCkEBajYCHCADQShqIAAgBxCbGSADIAMpAyg3AjggA0EgaiADQThqIAoQmAwgAygCIEEBcUUNDCADKAIkIgcgACgCOCIITw0NIAQgACgCNCAHQQJ0aigCACIASQ0OIAIgBzYCDCACIAQ2AgggAkEBNgIAIAIgBCAAazYCBAwYCyAHIAAoAggiCE8NDgJAAkAgACgCBCAHQRRsaigCCCIIRQ0AIAIoAhwhCiAAKAIoIQsgACgCLCEJQQAhDANAIAggCU8NEiAMQQFqIQwgCyAIQQN0aigCBCIIDQALIAogDEkNAQsgAkEANgIYIAJBADYCACACIAIoAiBBAWoiBDYCIAwVCyACQQE2AhggAiAKQQFqNgIcIAIoAiAhCCADQRhqIAAgBxCbGSADIAMpAxg3AjggA0EQaiADQThqIAoQmAwgAygCEEEBcUUNECADKAIUIgcgACgCOCIBTw0RIAhBAWoiCCAAKAI0IAdBAnRqKAIAIgBJDRIgAiAHNgIMIAIgCDYCCCACQQE2AgAgAiAIIABrNgIEDBcLIAcgCEGMroABELMRAAsgCCALQZzjgwEQsxEACyAJIAtBnOODARCzEQALIAcgCEHo8oMBELMRAAsgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIAcgCEGMroABELMRAAsgCCALQZzjgwEQsxEACyAJIAtBnOODARCzEQALIAcgAUHo8oMBELMRAAsgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIAggCUGc44MBELMRAAtB+PKDARCbIAALIAcgCEHo8oMBELMRAAsgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIAcgCEGMroABELMRAAsgCCAJQZzjgwEQsxEAC0H48oMBEJsgAAsgByABQejygwEQsxEACyADQQA2AkggA0EBNgI8IANBxOaDATYCOCADQgQ3AkAgA0E4akHM5oMBEIUbAAsgAkEANgIYIAIgBzYCFCACQQE2AhAgAiAENgIgIAJBADYCAAsCQCAEIAVPDQAgAEE8akEAIAYbIQ0gAEHIAGohDiABKAIMIQ8gASgCCCEQA0ACQAJAAkACQAJAAkACQAJAAkAgBCAPTw0AAkACQCAHIAAoAggiBk8NACAOIBAgBGotAAAiAWohCiAAKAIEIQsDQCALIAdBFGxqIgkhBwJAAkACQCAJKAIEIghFDQAgCCAKLQAAaiIHIAAoAiAiCE8NCCAAKAIcIAdBAnRqIQcMAQsDQCAHKAAAIgdFDQIgByAAKAIUIghPDQkgACgCECAHQQlsaiIIQQVqIQcgASAILQAAIgxLDQALIAEgDEcNASAIQQFqIQcLIAcoAAAiB0EBRw0DCyAJKAIMIgcgBkkNAAsLIAcgBkGs44MBELMRAAsgByAAKALQAk0NASAEIQgMBwsgBCAPQZydgAEQsxEACyACIAc2AhQgAkEBNgIQIAdFDQsCQCAHIAAoAtQCSw0AIAJCgYCAgBA3AhggA0EIaiAAIAcQmxkgAyADKQMINwI4IAMgA0E4akEAEJgMIAMoAgBBAXFFDQMgAygCBCIHIAAoAjgiCE8NBCAEQQFqIgggACgCNCAHQQJ0aigCACIASQ0FIAIgBzYCDCACIAg2AgggAkEBNgIAIAIgCCAAazYCBAwMCyADQThqIA0oAgAgDSgCBCIIKAIIQX9qQXhxakEIaiAQIA8gBCAFIAgoAhAREwAgAygCOEUNCyADKAI8IgQgAigCICIITQ0FDAYLIAcgCEG844MBELMRAAsgByAIQYzjgwEQsxEAC0H48oMBEJsgAAsgByAIQejygwEQsxEACyADQQA2AkggA0EBNgI8IANBxOaDATYCOCADQgQ3AkAgA0E4akHM5oMBEIUbAAsgCEEBaiEECyACIAQ2AiAgBCAFSQ0ACwsgAiAHNgIUIAJBATYCEAwCCyACQQA2AhggAiAHNgIUIAJBATYCECACIAQ2AiAgAkEANgIACwJAIAQgBU8NACAEIAEoAgwiESAEIBFLGyEQIABByABqIQ4gASgCCCENIAEtABBBAXEhBgNAAkACQAJAAkACQAJAIAQgEEYNAAJAIAcgACgCCCIKTw0AIA4gDSAEai0AACIBaiEPIAAoAgQhCwNAIAsgB0EUbGoiCSEHAkACQAJAIAkoAgQiCEUNACAIIA8tAABqIgcgACgCICIITw0HIAAoAhwgB0ECdGohBwwBCwNAIAcoAAAiB0UNAiAHIAAoAhQiCE8NCCAAKAIQIAdBCWxqIghBBWohByABIAgtAAAiDEsNAAsgASAMRw0BIAhBAWohBwsgBygAACIHQQFHDQQLAkAgBkUNACACQgE3AhAMCwsgCSgCDCIHIApJDQALCyAHIApBrOODARCzEQALIBAgEUGcnYABELMRAAsgByAAKALQAksNAyACIAc2AhQgAkEBNgIQIAcNAgwGCyAHIAhBvOODARCzEQALIAcgCEGM44MBELMRAAsgByAAKALUAksNACACQoGAgIAQNwIYAkACQAJAIAcgCk8NAAJAAkAgCyAHQRRsaigCCCIHRQ0AIAcgACgCLCIISQ0BIAcgCEGc44MBELMRAAtB+PKDARCbIAALIAAoAiggB0EDdGooAgAiByAAKAI4IghPDQEgBEEBaiIIIAAoAjQgB0ECdGooAgAiAEkNAiACIAc2AgwgAiAINgIIIAJBATYCACACIAggAGs2AgQMBgsgByAKQYyugAEQsxEACyAHIAhB6PKDARCzEQALIANBADYCSCADQQE2AjwgA0HE5oMBNgI4IANCBDcCQCADQThqQczmgwEQhRsACyACIARBAWoiBDYCICAEIAVHDQALCyACIAc2AhQgAkEBNgIQCyADQdAAaiQAC40YAhh/B34jAEGAAWsiBiQAIAAoAgghByAAQQA2AgggACgCACEIIAAoAgQhCSAAQoCAgICAATcCACAAKAIQIQogACgCDCELIABBACkDkPucASIeNwIMIABBFGpBACkDmPucASIfNwIAIAZBGGpBCGogHzcDACAGIB43AxggBkEANgIsIAsgChDVGiADQRBqIQwgCSAHQRhsaiENQYcFrUIghiAGQcgAaq2EISBBuAKtQiCGIAZBMGqthCEhIAUoAgAiDkF4aiEPIAZBGGpBEGohECAFKAIEIREgBSgCDCESIAkhCgJAA0ACQCAKIgcgDUcNACANIQoMAgsgB0EYaiEKIAcpAwAiHlANASAGIAcoAgg2AjggBiAeNwMwAkACQCAEIAZBMGoQixkNACABIAZBMGoQyAoNACACIAZBMGoQyAoNACAGQTBqQdzPmwEQ9hkNAAJAAkAgBigCJEUNACAGKQMwEPUYIh5CGYhCgYKEiJCgwIABfiEfIAYoAhwiEyAep3EhB0EAIRQgBigCGCELA0AgCyAHaikAACIiIB+FIh5Cf4UgHkL//fv379+//358g0KAgYKEiJCgwIB/gyEeAkACQANAIB5QDQEgBkEwaiAGKAIYIB56p0EDdiAHaiATcSIVQQR0a0FwahC2Cw0CIB5Cf3wgHoMhHgwACwsgIiAiQgGGg0KAgYKEiJCgwIB/g1BFDQIgByAUQQhqIhRqIBNxIQcMAQsLIAtBACAVa0EEdGpBeGooAgAhBwwBC0EAIQcLIAYgBzYCLCAAKAIcIhZBcGohFyAAKAIgIRggACgCKCEZA0AgBiAGQSxqNgJIAkACQCAHDQAgBikDMCIeQgODQgBSDQEgHqciByAHKAIAIgdBAWo2AgAgB0F/Sg0BDAQLIAZBAjYCXCAGQfTwmgE2AlggBkICNwJkIAYgIDcDeCAGICE3A3AgBiAGQfAAajYCYCAGQcwAaiAGQdgAahDFCSAGQcwAahDqHCEeCyAGKAJIIgcgBygCAEEBajYCACAGIB43A0ACQAJAIBJFDQAgHhD1GCIeQhmIQoGChIiQoMCAAX4hHyARIB6ncSEHQQAhCwNAIA4gB2opAAAiIiAfhSIeQn+FIB5C//379+/fv/9+fINCgIGChIiQoMCAf4MhHgJAA0AgHlANASAGQcAAaiAPIB56p0EDdiAHaiARcUEDdGsQtgsNBCAeQn98IB6DIR4MAAsLICIgIkIBhoNCgIGChIiQoMCAf4NQRQ0BIAcgC0EIaiILaiARcSEHDAALC0EAIQsgBigCOCEaIAMhGwJAAkADQAJAIAsiB0UgByAVRnIiFEEBRw0AIBtFDQMDQCAbKAIQIQcCQCAbKAIMRQ0AIAYpA0AQ9RghHiAbKAIAIhNBaGohHCAeQhmIQoGChIiQoMCAAX4hHyAbKAIEIhUgHqdxIQtBACEbAkADQAJAIBMgC2opAAAiIiAfhSIeQn+FIB5C//379+/fv/9+fINCgIGChIiQoMCAf4MiHlANAANAIAZBwABqIBxBACAeeqdBA3YgC2ogFXFrQRhsIh1qELYLDQMgHkJ/fCAegyIeUEUNAAsLICIgIkIBhoNCgIGChIiQoMCAf4NQRQ0CIAsgG0EIaiIbaiAVcSELDAALCyATIB1qIhNBdGooAgAiCyATQXhqKAIAQQR0aiEVIAchGwwDCyAHIRsgBw0ADAMLCyAHQRBqIQsCQAJAIAdBCGoiHCgCACITIBpGDQAgGUUNAgwBCyAGQRBqIAcQ/hEgBigCFCETIAYoAhAhHSAGQQhqIAZBMGoQ/hEgHSATIAYoAgggBigCDBCbHA0BIBlFDQEgHCgCACETCyAHKQMAIBMQ7hciHkIZiEKBgoSIkKDAgAF+IR8gGCAep3EhE0EAIRwDQAJAIBYgE2opAAAiIiAfhSIeQn+FIB5C//379+/fv/9+fINCgIGChIiQoMCAf4MiHlANAANAIAcgFyAeeqdBA3YgE2ogGHFBBHRrEPsdDQQgHkJ/fCAegyIeUEUNAAsLICIgIkIBhoNCgIGChIiQoMCAf4NQRQ0BIBMgHEEIaiIcaiAYcSETDAALCwsgFEUNAQsCQCAGKQNAIh9CA4NCAFINACAfpyIHIAcoAgAiB0EBajYCACAHQX9MDQQLAkAgBikDMCIeQgODQgBSDQAgHqciByAHKAIAIgdBAWo2AgAgB0F/TA0ECyAGKAIsIRMgBiAeNwNwIB4Q9RghHiAGIAZB8ABqNgJMAkAgBigCIA0AIAZBGGogEBDsBhoLIAYgBkEYajYCXCAGIAZBzABqNgJYIAYgBigCGCAGKAIcIB4gBkHYAGpBiAUQhgkgBigCBCEHIAYoAhghCwJAAkAgBigCAEEBcUUNACALIAdqIhUtAAAhFCAGKQNwISIgFSAeQhmIpyIaOgAAIAsgBigCHCAHQXhqcWpBCGogGjoAACALIAdBBHRrIgdBeGogEzYCACAHQXBqICI3AwAgBiAGKAIkQQFqNgIkIAYgBigCICAUQQFxazYCIAwBCyALIAdBBHRrQXhqIBM2AgAgBikDcBDGHQsgBikDQCEeAkAgBikDMCIiQgODQgBSDQAgIqciByAHKAIAIgdBAWo2AgAgB0F/TA0ECyAGKAI4IRMgBiAeNwNYIB4Q9RghHiADKAIAIgtBaGohGiAeQhmIQoGChIiQoMCAAX4hIyADKAIEIhQgHqciFXEhB0EAIR0CQAJAAkADQAJAIAsgB2opAAAiJCAjhSIeQn+FIB5C//379+/fv/9+fINCgIGChIiQoMCAf4MiHlANAANAIBpBACAeeqdBA3YgB2ogFHFrQRhsIhxqIAZB2ABqELYLDQMgHkJ/fCAegyIeUEUNAAsLICQgJEIBhoNCgIGChIiQoMCAf4NQRQ0CIAcgHUEIaiIdaiAUcSEHDAALCwJAIAYpA1giHkIDg0IAUg0AIB6nIgcgBygCACIVQX9qNgIAIBVBAUcNACAHIAcoAhAQwRsLIAsgHGohBwwBCwJAIAMoAggNACADIAwQlwIaCyAGKQNYISMCQCADKAIAIgcgAygCBCIUIBVxIgtqKQAAQoCBgoSIkKDAgH+DIh5CAFINAEEIIRoDQCALIBpqIQsgGkEIaiEaIAcgCyAUcSILaikAAEKAgYKEiJCgwIB/gyIeUA0ACwsCQCAHIB56p0EDdiALaiAUcSILaiwAACIaQQBIDQAgByAHKQMAQoCBgoSIkKDAgH+DeqdBA3YiC2otAAAhGgsgByALaiAVQRl2IhU6AAAgByALQXhqIBRxakEIaiAVOgAAIAMgAygCCCAaQQFxazYCCCADIAMoAgxBAWo2AgwgB0EAIAtrQRhsaiIHQXhqQQA2AgAgB0FwakKAgICAgAE3AwAgB0FoaiAjNwMACwJAIAdBeGoiFSgCACILIAdBcGoiFCgCAEcNACAUQcCkmgEQxhYLIAdBdGooAgAgC0EEdGoiByATNgIIIAcgIjcDACAVIAtBAWo2AgACQCAGKQMwIh5CA4NCAFINACAepyIHIAcoAgAiB0EBajYCACAHQX9MDQQLIAEgHiAGKAI4IB8Q6ggQpx8MAgsgBikDQBDGHSAGKAIsIQcMAAsLIAYpAzAQxh0MAQsLAAsgDSAKa0EYbiEHAkADQCAHRQ0BIAopAwAQxh0gB0F/aiEHIApBGGohCgwACwsgCCAJEL0gAkAgBigCHCIVRQ0AIAYoAhghCgJAIAYoAiQiE0UNACAKQQhqIQcgCikDAEJ/hUKAgYKEiJCgwIB/gyEeQQEhCwJAA0AgC0UNAQJAA0AgHkIAUg0BIApBgH9qIQogBykDAEJ/hUKAgYKEiJCgwIB/gyEeIAdBCGohBwwACwsgCiAeeqdBAXRB8AFxa0FwaikDABDGHSAeQn98IB6DIR4gE0F/aiITIQsMAAsLIAYoAhghCgsgBkHYAGpBEEEIIBVBAWoQkQ8gCiAGKAJgayAGKAJYIAYoAlwQox4LIAAoAjRBPGwhByAAKAIwIQoCQANAIAdFDQEgCiABQZD7nAEgAyAEIAUQpQFBkPucARCJDCAHQURqIQcgCkE8aiEKDAALCyAGQYABaiQAC6UgAgt/An4jAEEgayIBJABBAC0AwPGdARoCQEEgEIUBIgJFDQAgACgCACIAKAIEIQMgACgCACEEQYCAgIB4IQUCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCCCIGQTQgBkG9gYCAeEgbQf8BcQ69AbkBAAECAwQFBgcICQoLDA0ODxAREhMUFSEWFxgZGhscHR4hHyAhIiMkJSYnKCkqKywtLi8wMW4yMzRuNTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbkBC0GBgICAeCEFDLcBC0GCgICAeCEFDLYBC0GDgICAeCEFDLUBC0GEgICAeCEFDLQBC0GFgICAeCEFDLMBC0GGgICAeCEFDLIBC0GHgICAeCEFDLEBC0GIgICAeCEFDLABC0GJgICAeCEFDK8BC0GKgICAeCEFDK4BC0GLgICAeCEFDK0BC0GMgICAeCEFDKwBC0GNgICAeCEFDKsBC0GOgICAeCEFDKoBC0GPgICAeCEFDKkBC0GQgICAeCEFDKgBC0GRgICAeCEFDKcBC0GSgICAeCEFDKYBC0GTgICAeCEFDKUBC0GUgICAeCEFDKQBC0GVgICAeCEFDKMBC0GWgICAeCEFDKIBC0GYgICAeCEFDKEBC0GZgICAeCEFDKABC0GagICAeCEFDJ8BC0GbgICAeCEFDJ4BC0GcgICAeCEFDJ0BCyAAKQMQIgynIQcCQCAMQgODQgBSDQAgByAHKAIAIgBBAWo2AgAgAEF/TA2fAQsgDEIgiKchCEGdgICAeCEFDJ0BC0GegICAeCEFDJsBC0GfgICAeCEFDJoBC0GggICAeCEFDJkBC0GigICAeCEFDJgBC0GjgICAeCEFDJcBCyAAKAIcIQkgACgCGCEKIAAoAhQhCCAAKAIQIQcgACgCDCELIAYhBQyXAQtBpYCAgHghBQyVAQtBpoCAgHghBQyUAQsgACkDECIMpyEHAkAgDEIDg0IAUg0AIAcgBygCACIAQQFqNgIAIABBf0wNlgELIAxCIIinIQhBp4CAgHghBQyUAQtBqICAgHghBQySAQtBqYCAgHghBQyRAQtBqoCAgHghBQyQAQtBq4CAgHghBQyPAQsgAUEUaiAAQRBqKAIAIABBFGooAgAQ8xIgACgCHCEJIAAoAhghCiABKAIcIQggASgCGCEHIAEoAhQhC0GsgICAeCEFDI8BC0GtgICAeCEFDI0BC0GugICAeCEFDIwBC0GvgICAeCEFDIsBCyABQRRqIABBEGooAgAgAEEUaigCABDzEiAAKAIcIQkgACgCGCEKIAEoAhwhCCABKAIYIQcgASgCFCELQbCAgIB4IQUMiwELIAFBFGogAEEQaigCACAAQRRqKAIAEKkQIAEoAhwhCCABKAIYIQcgASgCFCELQbGAgIB4IQUMigELQbKAgIB4IQUMiAELQbOAgIB4IQUMhwELIAFBCGogAEEMaigCACAAQRBqKAIAEPMSIAFBFGogAEEYaigCACAAQRxqKAIAEPMSIAEoAhwhCSABKAIYIQogASgCFCEIIAEoAhAhByABKAIMIQsgASgCCCEFDIcBC0G2gICAeCEFDIUBC0G3gICAeCEFDIQBC0G4gICAeCEFDIMBC0G6gICAeCEFDIIBC0G7gICAeCEFDIEBC0G8gICAeCEFDIABC0G9gICAeCEFDH8LQb6AgIB4IQUMfgtBv4CAgHghBQx9C0HAgICAeCEFDHwLQcGAgIB4IQUMewtBwoCAgHghBQx6C0HDgICAeCEFDHkLIAApAxAiDKchBwJAIAxCA4NCAFINACAHIAcoAgAiAEEBajYCACAAQX9MDXsLIAxCIIinIQhBxICAgHghBQx5C0HFgICAeCEFDHcLQcaAgIB4IQUMdgtBx4CAgHghBQx1C0HIgICAeCEFDHQLQcmAgIB4IQUMcwtByoCAgHghBQxyC0HLgICAeCEFDHELQcyAgIB4IQUMcAtBzYCAgHghBQxvC0HOgICAeCEFDG4LQc+AgIB4IQUMbQtB0ICAgHghBQxsC0HRgICAeCEFDGsLQdKAgIB4IQUMagtB04CAgHghBQxpC0HUgICAeCEFDGgLQdWAgIB4IQUMZwtB1oCAgHghBQxmC0HXgICAeCEFDGULIAApAxAiDKchBwJAIAxCA4NCAFINACAHIAcoAgAiAEEBajYCACAAQX9MDWcLIAxCIIinIQhB2ICAgHghBQxlC0HZgICAeCEFDGMLQdqAgIB4IQUMYgtB24CAgHghBQxhC0HcgICAeCEFDGALQd2AgIB4IQUMXwtB3oCAgHghBQxeC0HfgICAeCEFDF0LQeCAgIB4IQUMXAsgACkDECIMpyEHAkAgDEIDg0IAUg0AIAcgBygCACIAQQFqNgIAIABBf0wNXgsgDEIgiKchCEHhgICAeCEFDFwLQeKAgIB4IQUMWgtB44CAgHghBQxZC0HkgICAeCEFDFgLQeWAgIB4IQUMVwtB5oCAgHghBQxWC0HngICAeCEFDFULQeiAgIB4IQUMVAtB6YCAgHghBQxTC0HqgICAeCEFDFILQeuAgIB4IQUMUQtB7ICAgHghBQxQCyAAKQMQIgynIQcCQCAMQgODQgBSDQAgByAHKAIAIgBBAWo2AgAgAEF/TA1SCyAMQiCIpyEIQe2AgIB4IQUMUAtB7oCAgHghBQxOC0HvgICAeCEFDE0LIAApAxAiDKchBwJAIAxCA4NCAFINACAHIAcoAgAiAEEBajYCACAAQX9MDU8LIAxCIIinIQhB8ICAgHghBQxNC0HxgICAeCEFDEsLQfKAgIB4IQUMSgsgACgCHCEJIAAoAhghCiAAKAIUIQggACgCECEHIAAoAgwhCyAGIQUMSgtB9ICAgHghBQxIC0H1gICAeCEFDEcLQfaAgIB4IQUMRgtB94CAgHghBQxFC0H4gICAeCEFDEQLQfmAgIB4IQUMQwsCQCAAKQMQIgxCA4NCAFINACAMpyIHIAcoAgAiB0EBajYCACAHQX9MDUULIAApAxgiDachCgJAIA1CA4NCAFINACAKIAooAgAiAEEBajYCACAAQX9MDUULIA1CIIinIQkgDEIgiKchCCAMpyEHQfqAgIB4IQUMQwsgACkDECIMpyEHAkAgDEIDg0IAUg0AIAcgBygCACIAQQFqNgIAIABBf0wNRAsgDEIgiKchCEH7gICAeCEFDEILQfyAgIB4IQUMQAtB/YCAgHghBQw/C0H+gICAeCEFDD4LQf+AgIB4IQUMPQtBgIGAgHghBQw8C0GBgYCAeCEFDDsLQYKBgIB4IQUMOgsgACkDECIMpyEHAkAgDEIDg0IAUg0AIAcgBygCACIAQQFqNgIAIABBf0wNPAsgDEIgiKchCEGDgYCAeCEFDDoLQYSBgIB4IQUMOAtBhYGAgHghBQw3C0GGgYCAeCEFDDYLQYeBgIB4IQUMNQtBiIGAgHghBQw0C0GJgYCAeCEFDDMLQYqBgIB4IQUMMgtBi4GAgHghBQwxC0GMgYCAeCEFDDALQY2BgIB4IQUMLwtBjoGAgHghBQwuC0GPgYCAeCEFDC0LQZCBgIB4IQUMLAtBkYGAgHghBQwrC0GSgYCAeCEFDCoLQZOBgIB4IQUMKQtBlIGAgHghBQwoC0GVgYCAeCEFDCcLQZaBgIB4IQUMJgtBl4GAgHghBQwlC0GYgYCAeCEFDCQLQZmBgIB4IQUMIwtBmoGAgHghBQwiC0GbgYCAeCEFDCELQZyBgIB4IQUMIAtBnYGAgHghBQwfC0GegYCAeCEFDB4LQZ+BgIB4IQUMHQsCQCAAKQMQIgxCA4NCAFINACAMpyIHIAcoAgAiB0EBajYCACAHQX9MDR8LIAApAxgiDachCgJAIA1CA4NCAFINACAKIAooAgAiAEEBajYCACAAQX9MDR8LIA1CIIinIQkgDEIgiKchCCAMpyEHQaCBgIB4IQUMHQtBoYGAgHghBQwbC0GigYCAeCEFDBoLQaOBgIB4IQUMGQsgACkDECIMpyEHAkAgDEIDg0IAUg0AIAcgBygCACIAQQFqNgIAIABBf0wNGwsgDEIgiKchCEGkgYCAeCEFDBkLIAApAxAiDKchBwJAIAxCA4NCAFINACAHIAcoAgAiAEEBajYCACAAQX9MDRoLIAxCIIinIQhBpYGAgHghBQwYCyAAKQMQIgynIQcCQCAMQgODQgBSDQAgByAHKAIAIgBBAWo2AgAgAEF/TA0ZCyAMQiCIpyEIQaaBgIB4IQUMFwtBp4GAgHghBQwVC0GogYCAeCEFDBQLQamBgIB4IQUMEwtBqoGAgHghBQwSC0GrgYCAeCEFDBELQayBgIB4IQUMEAtBrYGAgHghBQwPC0GugYCAeCEFDA4LQa+BgIB4IQUMDQtBsIGAgHghBQwMC0GxgYCAeCEFDAsLQbKBgIB4IQUMCgtBs4GAgHghBQwJC0G0gYCAeCEFDAgLQbWBgIB4IQUMBwtBtoGAgHghBQwGC0G3gYCAeCEFDAULIAApAxAiDKchBwJAIAxCA4NCAFINACAHIAcoAgAiAEEBajYCACAAQX9MDQcLIAxCIIinIQhBuIGAgHghBQwFC0EALQDA8Z0BGkEEEIUBIgtFDQUgCyAAKAIMEKYBNgIAIAAoAhAhByAAKAIUIQggACgCHCEJIAAoAhghCkG5gYCAeCEFDAQLQbqBgIB4IQUMAgtBu4GAgHghBQwBC0G8gYCAeCEFCwsgAiAJNgIcIAIgCjYCGCACIAg2AhQgAiAHNgIQIAIgCzYCDCACIAU2AgggAiADNgIEIAIgBDYCACABQSBqJAAgAg8LAAvEGAIIfwJ+IwBBIGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCACIDQXRqIgRBByAEQSZJGw4mHgABAgMEBQYHCAkKCwweHg0ODxARHhITFB4eFRYXGBkaGxweHR4eCyABKAIMIgNFDR0gASgCCCEEIANBBHQhAwNAAkAgBCgCAEECRg0AIAAgBEEMaigCABCnAQsgBEEQaiEEIANBcGoiAw0ADB4LCyABKAIMIgRFDRwgASgCCCIFIARBDGxqIQYDQAJAAkACQAJAAkAgBSgCACIEDQACQAJAIAUoAgQiBCgCACIHQXtqIgNBBCADQQZJGw4GBgABAwQFBgsgBCgCCEEDRw0AIAAgBCgCDBCnAQsgBCgCKCEECyAAIAQQpwEMAwsCQCAEKAIIQQNHDQAgACAEKAIMEKcBCyAEKAIoQYCAgIB4Rg0CIAQoAjAiA0UNAiAEKAIsIQQgA0EwbCEDA0AgBCAAEI8DIARBMGohBCADQVBqIgMNAAwDCwsgBEEgaiEDAkAgB0EDRw0AIAAgBCgCBBCnAQsCQCADKAIAQQdGDQAgAyAAEK0JCyAEKAJoIAAQrQkgBCgCSEGAgICAeEYNASAEKAJQIgNFDQEgBCgCTCEEIANBMGwhAwNAIAQgABCPAyAEQTBqIQQgA0FQaiIDDQAMAgsLAkAgBCgCCEEDRw0AIAAgBCgCDBCnAQsCQCAEKAIoIghBCGooAgAiBEUNACAIQQRqKAIAIgcgBEEGdGohCQNAAkAgB0E4aigCACIDRQ0AIAdBNGooAgAhBCADQQxsIQMDQCAAIAQoAgAQpwEgBEEMaiEEIANBdGoiAw0ACwsgByAAEIwLIAdBwABqIgQhByAEIAlHDQALCwJAIAhBFGooAgAiA0UNACAIQRBqKAIAIQQgA0EMbCEDA0AgACAEKAIAEKcBIARBDGohBCADQXRqIgMNAAsLIAgoAhhBgICAgHhGDQAgCEEgaigCACIDRQ0AIAhBHGooAgAhBCADQTBsIQMDQCAEIAAQjwMgBEEwaiEEIANBUGoiAw0ACwsgBUEMaiIFIAZHDQAMHQsLAkAgASgCICIJQQhqKAIAIgRFDQAgCUEEaigCACIHIARBBnRqIQUDQAJAIAdBOGooAgAiA0UNACAHQTRqKAIAIQQgA0EMbCEDA0AgACAEKAIAEKcBIARBDGohBCADQXRqIgMNAAsLIAcgABCMCyAHQcAAaiIEIQcgBCAFRw0ACwsCQCAJQRRqKAIAIgNFDQAgCUEQaigCACEEIANBDGwhAwNAIAAgBCgCABCnASAEQQxqIQQgA0F0aiIDDQALCyAJKAIYQYCAgIB4Rg0bIAkoAiAiA0UNGyAJKAIcIQQgA0EwbCEDA0AgBCAAEI8DIARBMGohBCADQVBqIgMNAAwcCwsgACABKAIEEKcBDBoLIAAgASgCDBCnAQwZCyAAIAEoAgQQpwEgACABKAIIEKcBDBgLAkACQCADQQtHDQAgACABQQRqEKALDAELIAEgABDyCQsgACABKAI4EKcBDBcLIAAgASgCKBCnASABKAIIQQJJDRYgACABKAIMEKcBDBYLIAEoAghBAUcNFSAAIAEoAgwQpwEMFQsgACABKAIEEKcBIAAgASgCCBCnASAAIAEoAgwQpwEMFAsCQCABLQAYQQVHDQAgACABKAIQEKcBCyABKAIMIgRFDRMgBEEEdCEDIAEoAghBDGohBANAIAAgBCgCABCnASAEQRBqIQQgA0FwaiIDDQAMFAsLIAAgASgCEBCnASABKAIEQYCAgIB4Rg0SIAEoAgwiBEUNEiAEQQR0IQMgASgCCEEMaiEEA0AgACAEKAIAEKcBIARBEGohBCADQXBqIgMNAAwTCwsgASgCDCIDRQ0RIAEoAgghBCADQQJ0IQMDQCAAIAQoAgAQpwEgBEEEaiEEIANBfGoiAw0ADBILCyABKAIMIgNFDRAgASgCCCEEIANBAnQhAwNAIAAgBCgCABCnASAEQQRqIQQgA0F8aiIDDQAMEQsLIAAgASgCBBCnASABKAIIIgRBCGooAgAiA0UNDyAEQQRqKAIAIQQgA0ECdCEDA0AgACAEKAIAEKcBIARBBGohBCADQXxqIgMNAAwQCwsCQCABKAIMIgNFDQAgASgCCCEEIANBKGwhAwNAIAQgABCtCSAEQShqIQQgA0FYaiIDDQALCwJAIAEoAhAiBCgCAEGAgICAeEcNACAAIAQoAgQQpwEMDwsgBCgCCCIDRQ0OIAQoAgQhBCADQTBsIQMDQCAEIAAQjwMgBEEwaiEEIANBUGoiAw0ADA8LCwJAIAEoAiAiB0EIaigCACIDRQ0AIAdBBGooAgAhBCADQQxsIQMDQCAAIAQoAgAQpwEgBEEMaiEEIANBdGoiAw0ACwsCQCAHQRRqKAIAIgNFDQAgB0EQaigCACEEIANB2ABsIQMDQCAEIAAQsQIgBEHYAGohBCADQah/aiIDDQALCyAHKAIwIgRFDQ0gACAEEKcBDA0LIAEoAgwiBEUNDCAAIAQQpwEMDAsgACABKAIEEKcBDAsLIAAgASgCBBCnAQwKCyABLQA0QQJHDQkgAUEIaiEEA0AgBCgCGCIELQAsQQJGDQAMCgsLAkAgASgCBCIGLQBsQQJHDQAgBkHAAGohBANAIAQoAhgiBC0ALEECRg0ACwsCQCAGKAKEASIERQ0AIAYoAoABIgMgBEHYAGxqIQUDQAJAAkACQCADKAIAIgRBfGoOAgIAAQsgACADKAIEEKcBDAELAkACQAJAIAQOBAMAAQIDCyADKAIEQQFHDQIgACADKAIIEKcBDAILAkAgAygCBCIJLQBsQQJHDQAgCUHAAGohBANAIAQoAhgiBC0ALEECRg0ACwsCQCAJQYQBaigCACIHRQ0AIAlBgAFqKAIAIQQgB0HYAGwhBwNAIAQgABDDByAEQdgAaiEEIAdBqH9qIgcNAAsLAkAgCUGYAWooAgAiB0UNACAJQZQBaigCACEEIAdBKGwhBwNAIAAgBBDbBSAEQShqIQQgB0FYaiIHDQALCyAJLQA8IgRBBkYNASAEQQJHDQEgCUEQaiEEA0AgBCgCGCIELQAsQQJGDQAMAgsLIAMoAgwhByADKAIIIQQgAiAANgIIIAdFDQAgB0EobCEHA0AgAkEIaiAEEOsGIARBKGohBCAHQVhqIgcNAAsLIANB2ABqIgMgBUcNAAsLAkAgBigCmAEiA0UNACAGKAKUASEEIANBKGwhAwNAIAQgABDvAyAEQShqIQQgA0FYaiIDDQALCyAGLQA8IgRBBkYNCCAEQQJHDQggBkEQaiEEA0AgBCgCGCIELQAsQQJGDQAMCQsLIAEoAgwhAyABKAIIIQQgAiAANgIIIANFDQcgA0EobCEDA0AgAkEIaiAEEOsGIARBKGohBCADQVhqIgMNAAwICwsgACABKAIEEKcBDAYLIAAgASgCBBCnAQwFCyAAIAEoAgQQpwEMBAsgACABKAIEEKcBDAMLIAAgASgCBBCnAQwCCyAAIAEoAgQQpwEMAQsCQCABKAIEIgQoAgBBA0cNACAEQQRqIAAQ3hUMAQsgBCAAELMcCwJAAkAgASgCAEEaRw0AIAAoAgQhAwJAIAAoAgAiBCkDACIKQgODQgBSDQAgCqciByAHKAIAIgdBAWo2AgAgB0F/TA0CCyAEKAIIIQQCQCABKQMIIgtCA4NCAFINACALpyIHIAcoAgAiB0EBajYCACAHQX9MDQILIAIgCzcDGCACIAQ2AhAgAiAKNwMIIAMgAkEIahDkByEEIAJBCGoQ6RAgBEUNAAJAIAAoAgAiBCkDACIKQgODQgBSDQAgCqciACAAKAIAIgBBAWo2AgAgAEF/TA0CCyABKAIUIQAgASgCECEDIAQoAgghBwJAIAEpAwgiC0IDg0IAUg0AIAunIgQgBCgCACIEQQFqNgIAIARBf0wNAgtBAC0AwPGdARpBwAAQhQEiBEUNASAEQQA6ABwgBCAHNgIYIARCADcCECAEIAo3AgggBEEaNgIAIAEQ2QEgASAENgIoIAFCADcDICABIAA2AhwgASADNgIYIAEgCzcDECABQQA2AgggAUEUNgIACyACQSBqJAAPCwAL1RgBBn8CQAJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACICQXRqIgNBByADQSZJGw4mGgABAgMEBQYHCAkKCwwZGg0ODxARGhISExoaFBUWFhYWFhYaFxoaCyAAKAIMIgNFDRkgACgCCCEAIANBBHQhAwNAAkAgACgCAEECRg0AIABBDGooAgAgARCoAQsgAEEQaiEAIANBcGoiAw0ADBoLCyAAKAIMIgNFDRggACgCCCEAIANBDGwhAwNAAkACQCAAKAIAIgINACAAQQRqKAIAIAEQsQUMAQsgAiABEKgBCyAAQQxqIQAgA0F0aiIDDQAMGQsLAkAgACgCICIEQQhqKAIAIgBFDQAgBEEEaigCACICIABBBnRqIQUDQAJAIAJBOGooAgAiA0UNACACQTRqKAIAIQAgA0EMbCEDA0AgACgCACABEKgBIABBDGohACADQXRqIgMNAAsLIAIgARDxCSACQcAAaiIAIQIgACAFRw0ACwsCQCAEQRRqKAIAIgNFDQAgBEEQaigCACEAIANBDGwhAwNAIAAoAgAgARCoASAAQQxqIQAgA0F0aiIDDQALCyAEKAIYQYCAgIB4Rg0XIAQoAiAiA0UNFyAEKAIcIQAgA0EwbCEDA0AgACABEMUDIABBMGohACADQVBqIgMNAAwYCwsgACgCBCEADBQLIAAoAgwhAAwTCyAAKAIEIAEQqAEgACgCCCEADBILAkACQCACQQtHDQACQAJAIAAoAgQOAwABAwALIAAoAhAiAkUNAiAAKAIMIQMgAkEobCECA0ACQCADKAIAQQdGDQAgAyABEKwJCyADQShqIQMgAkFYaiICDQAMAwsLIAAoAhAiA0UNASAAKAIMIgIgA0E4bGohBANAIAIiA0E4aiECAkACQAJAAkAgAygCAA4DAAECAAsCQCADKAIIQQNHDQAgAygCDCABEKgBCwJAAkACQAJAAkAgAygCKCIDKAIADgcHAAECAwcEBwsgA0EMaigCACIFRQ0GIANBCGooAgAhAyAFQShsIQUDQAJAIAMoAgBBB0YNACADIAEQrAkLIANBKGohAyAFQVhqIgUNAAwHCwsgAygCBCABEKwJDAULIANBDGooAgAiBUUNBCADQQhqKAIAIQYgBUE4bCEHQQAhAwNAAkACQAJAAkAgBiADaiIFKAIADgMAAQIACwJAIAVBCGooAgBBA0cNACAFQQxqKAIAIAEQqAELIAVBKGooAgAgARCsCQwCCyAFQTBqKAIAIgVFDQEgBSABEKgBDAELIAVBBGooAgAgARCsCQsgByADQThqIgNHDQAMBQsLIAMoAgQgARCsCSADKAIIIAEQqAEMAwsgAygCBCABEKgBDAILIAMoAjAiA0UNASADIAEQqAEMAQsCQAJAAkACQAJAIAMoAgQiAygCAA4HBQABAgMFBAULIANBDGooAgAiBUUNBCADQQhqKAIAIQMgBUEobCEFA0ACQCADKAIAQQdGDQAgAyABEKwJCyADQShqIQMgBUFYaiIFDQAMBQsLIAMoAgQgARCsCQwDCyADQQxqKAIAIgVFDQIgA0EIaigCACEGIAVBOGwhB0EAIQMDQAJAAkACQAJAIAYgA2oiBSgCAA4DAAECAAsCQCAFQQhqKAIAQQNHDQAgBUEMaigCACABEKgBCyAFQShqKAIAIAEQrAkMAgsgBUEwaigCACIFRQ0BIAUgARCoAQwBCyAFQQRqKAIAIAEQrAkLIAcgA0E4aiIDRw0ADAMLCyADKAIEIAEQrAkgAygCCCABEKgBDAELIAMoAgQgARCoAQsgAiAERw0ADAILCwJAAkACQAJAAkACQAJAAkACQAJAIAIOCwoAAQIDBAUGBwgKCgsgACgCKCABEKgBIAAoAghBAkkNCSAAQQxqIQMMCAsgACgCCEEBRw0IIABBDGohAwwHCyAAQQRqIQMMBgsCQCAAKAIEIgMoAgAiAkEDRw0AIAMoAhAgARCoASADQQxqKAIAIgJFDQcgAkEEdCECIANBCGooAgBBDGohAwNAIAMoAgAgARCoASADQRBqIQMgAkFwaiICDQAMCAsLIAMoAiAgARCoASACQQJJDQYgA0EEaiEDDAULIABBBGohAwwECyAAQQRqIQMMAwsgAEEEaiEDDAILIABBBGohAwwBCyAAQQRqIQMLIAMoAgAgARCoAQsgACgCOCEADBELIAAoAiggARCoASAAKAIIQQJJDRIgACgCDCEADBALIAAoAghBAUcNESAAKAIMIQAMDwsgACgCBCABEKgBIAAoAgggARCoASAAKAIMIQAMDgsCQCAALQAYQQVHDQAgACgCECABEKgBCyAAKAIMIgNFDQ8gA0EEdCEDIAAoAghBDGohAANAIAAoAgAgARCoASAAQRBqIQAgA0FwaiIDDQAMEAsLIAAoAhAgARCoASAAKAIEQYCAgIB4Rg0OIAAoAgwiA0UNDiADQQR0IQMgACgCCEEMaiEAA0AgACgCACABEKgBIABBEGohACADQXBqIgMNAAwPCwsgACgCDCIDRQ0NIAAoAgghACADQQJ0IQMDQCAAKAIAIAEQqAEgAEEEaiEAIANBfGoiAw0ADA4LCyAAKAIMIgNFDQwgACgCCCEAIANBAnQhAwNAIAAoAgAgARCoASAAQQRqIQAgA0F8aiIDDQAMDQsLIAAoAgQgARCoASAAKAIIIgBBCGooAgAiA0UNCyAAQQRqKAIAIQAgA0ECdCEDA0AgACgCACABEKgBIABBBGohACADQXxqIgMNAAwMCwsCQCAAKAIMIgJFDQAgACgCCCEDIAJBKGwhAgNAIAMgARCsCSADQShqIQMgAkFYaiICDQALCwJAIAAoAhAiACgCAEGAgICAeEcNACAAKAIEIQAMCQsgACgCCCIDRQ0KIAAoAgQhACADQTBsIQMDQCAAIAEQxQMgAEEwaiEAIANBUGoiAw0ADAsLCwJAIAAoAiAiAkEIaigCACIDRQ0AIAJBBGooAgAhACADQQxsIQMDQCAAKAIAIAEQqAEgAEEMaiEAIANBdGoiAw0ACwsCQCACQRRqKAIAIgNFDQAgAkEQaigCACEAIANB2ABsIQMDQCAAIAEQ8QIgAEHYAGohACADQah/aiIDDQALCyACKAIwIgANBwwJCyAAKAIMIgANBgwICyAAKAIEIQAMBQsgAEEgaiEDAkAgAC0ANEECRw0AA0AgAygCACIAQRhqIQMgAC0ALEECRg0ACwsgASADKQMAIANBEGooAgAQ1QwPCyABIAAoAgQiBkHAAGoQ+wgCQCAGQYQBaigCACIARQ0AIAZBgAFqKAIAIgMgAEHYAGxqIQUDQAJAAkACQCADKAIAIgBBfGoOAgIAAQsgAygCBCABEKgBDAELAkACQAJAIAAOBAMAAQIDCyADKAIEQQFHDQIgAygCCCABEKgBDAILIAEgAygCBCIEQcAAahD7CAJAIARBhAFqKAIAIgJFDQAgBEGAAWooAgAhACACQdgAbCECA0ACQAJAAkAgACgCAEF8ag4CAgABCyAAQQRqKAIAIAEQqAEMAQsgACABENMJCyAAQdgAaiEAIAJBqH9qIgINAAsLAkAgBEGYAWooAgAiAkUNACAEQZQBaigCACEAIAJBKGwhAgNAIAAgARCmByAAQShqIQAgAkFYaiICDQALCyAELQA8QQZGDQEgASAEQRBqEPsIDAELIAMoAgwiAkUNACADKAIIIQAgAkEobCECA0AgASAAEPQFIABBKGohACACQVhqIgINAAsLIANB2ABqIgMgBUcNAAsLAkAgBkGYAWooAgAiA0UNACAGQZQBaigCACEAIANBKGwhAwNAIAEgABD0BSAAQShqIQAgA0FYaiIDDQALCyAGLQA8QQZGDQUgASAGQRBqEPsIDwsgACgCDCIDRQ0EIAAoAgghACADQShsIQMDQCAAIAEQpgcgAEEoaiEAIANBWGoiAw0ADAULCyAAKAIEIQAMAQsCQCAAKAIEIgAoAgAiA0EDRw0AIAAoAhAgARCoASAAKAIMIgNFDQMgA0EEdCEDIAAoAghBDGohAANAIAAoAgAgARCoASAAQRBqIQAgA0FwaiIDDQAMBAsLIAAoAiAgARCoASADQQJJDQIgACgCBCEADAALCyABIAApAwggAEEYaigCABDVDAsLsRcCHX8CfiMAQcAAayICJABBASEDAkACQCABKAIAIgRB8KWAAUERIAEoAgQiBSgCDCIGEQwADQAgAEEoaiEHIAAoAigiCEECaiEJIAAoAsACIQogACgCvAIhCyAAKAK4AiEMIAAoAgQhDSAAKAIIIQ5BACEPAkACQAJAAkADQCAOIA9GDQQgDiAPayEQIA0gD0ECdGohEQJAAkACQAJAIA8NACARKAIAIgFB/wFxIRJBACETDAELIBEoAgAiAUH/AXEhEkEAIRMgDyAMTQ0BC0EAIRQMAQsCQAJAIBJB/wFGDQAgEiASQQJ2aiABQQNxQQBHakECaiIVIBBJDQEgFSAQQfzhgwEQsxEACyAJIRUgCSAQTw0IC0EBIRMgESAVQQJ0aigCACIVQQEgFUF/ShshFAsCQAJAAkACQAJAAkACQAJAAkAgAUH/AXFBgn5qDgIABAELIBBBf2oOAgECBAsCQCAQQQFGDQAgEkECdiABQQNxQQBHaiIWIBBBfmoiAUsNCyAQIBZBAmoiAUkNCiASIBAgAWsiFUsNCSARQQhqIRcgESgCBCEVIBEgAUECdGohGEEAIRkMBgtBAUEBQeCogAEQsxEAC0EBQQFBoKmAARCzEQALQQJBAkGwqYABELMRAAsCQCAQQQFGDQAgCCAQQX5qIgFLDQQgEUEIaiEXIBEoAgQhFUECIRkgCCEWDAILQQFBAUHAqYABELMRAAsgAUEIdiEaIBEoAgghFyARKAIEIRVBASEZCwsCQAJAIA8NAEG0+4MBIQEMAQsgDyALRiAPIApGciEBAkAgDyAMTQ0AQaydgAFBsPuDASABGyEBDAELQa6dgAFBsvuDASABGyEBC0EBIQMgBCABQQIgBhEMAA0GIAIgDzYCBCACQQI2AjQgAkGspoABNgIwIAJBAzYCJCACQZSmgAE2AiAgAkECNgIsIAJBDjYCFCACQQ42AgwgAiAVNgI8IAIgAkEIajYCKCACIAJBPGo2AhAgAiACQQRqNgIIIAQgBSACQSBqEM4FDQZBACEVQQAhG0EAIRwDQCAbIQECQAJAAkACQAJAAkADQCAgIR8CQAJAAkACQAJAAkACQAJAIBkOAwIAAQILIAENAkEBIRsgGiEdIBchAQwFCyABIBZPDQEgFyEeIAEhHQwDCyABIBJJDQELAkAgFUEBcUUNACAfQiCIpyEeQQAhFSAfISAMBAsCQCAEQdihmwFBASAGEQwADQACQAJAIA9FDQAgDyAMSw0BIARB3KaAAUESIAYRDAANAgJAAkAgFEUNAEEAIQEDQCACIAE2AgggCSEVAkAgES0AACIeQf8BRg0AIB4gHkECdmogHkEDcUEAR2pBAmohFQsgFSAQTw0CAkACQAJAAkAgESAVQQJ0aigCACIeQX9MDQAgFSABakEBaiIVIBBJDQEgFSAQQczhgwEQsxEACyABRQ0BIAJBADYCIEEAQZS3mAEgAkEIaiACQSBqQdzhgwEQmRkACyARIBVBAnRqKAIAIRUgAUUNASAEQdOOmAFBAiAGEQwADQcMAQsgHkH/////B3EhFQtBASEDIAJBATYCJCACQZjvmwE2AiAgAkIBNwIsIAJBDjYCDCACIBU2AjwgAiACQQhqNgIoIAIgAkE8ajYCCCAEIAUgAkEgahDOBQ0YIBQgAUEBaiIBRw0ACwtBASEDIARB2KGbAUEBIAYRDABFDQIMFgsgFSAQQbzhgwEQsxEAC0EBIQMgAkEBNgI0IAJBuPuDATYCMCACQQI2AiQgAkG0oIABNgIgIAJBATYCLCACQQ42AgwgAkEBNgI8IAIgAkEIajYCKCACIAJBPGo2AgggBCAFIAJBIGoQzgUNFAtBAiEZIAghHgJAAkACQCARLQAAIgFBgn5qDgIBAgALIAFBAnYgAUEDcUEAR2pBAmohGSABIR4MAQtBASEeC0EAIRUCQAJAAkACQCATRQ0AAkACQAJAIAFB/wFGDQAgASABQQJ2aiABQQNxQQBHakECaiIBIBBJDQEgASAQQfzhgwEQsxEACyAJIBBPDQNBASEVIBEgCUECdGooAgAiAUEASA0CIAFBAUcNAQwCC0EBIRUgESABQQJ0aigCACIBQQBIDQEgAUEBRg0BCyABQQFqIRULIBkgHmogFWogD2oiASAPSQ0BIAFB/////wdPDQIgASEPIAEgDk0NESABIA5BhKaAARCjIAALIAkgEEGM4oMBELMRAAtB8KaAARCbIAALIAIgAa03AyBB1KSbAUErIAJBIGpBgJmAAUGAp4ABEOgPAAtBASEDDBILIAFBAnYiHiAWTw0IIAIgFyAeQQJ0aigCADYCICACQSBqIAFBA3FyLQAAIR0gGCEeCyABQQFqIRsgHiABQQJ0aigCACEBCyAVQQFxRQ0CIAEgH0IgiKciHkYNAyABrUIghiAdrUL/AYMiIEIIhoQgIIQhIEEBIRUgGyEBCyAeQQFGDQALIBwNAwwFCyABrUIghiAdrUL/AYMiH0IIhoQgH4QhIAwBCyAfQv+BgIBwgyAdrUL/AYNCCIaEISALQQEhFQwDCyAEQdOOmAFBAiAGEQwARQ0BDAkLIB4gFkGMrIABELMRAAsgHEEBaiEcAkAgH6ciAUH/AXEgH0IIiKciHUH/AXFGDQAgAiABOgA7IAIgHToABCACQQM2AgwgAkHo+4MBNgIIIAJCAzcCFCACQSo2AjQgAkHDADYCLCACQcMANgIkIAIgHjYCPCACIAJBIGo2AhAgAiACQTxqNgIwIAIgAkEEajYCKCACIAJBO2o2AiAgBCAFIAJBCGoQzgVFDQEMCAsgAiABOgAEIAJBAjYCJCACQYD8gwE2AiAgAkICNwIsIAJBKjYCFCACQcMANgIMIAIgHjYCPCACIAJBCGo2AiggAiACQTxqNgIQIAIgAkEEajYCCCAEIAUgAkEgahDOBUUNAAwHCwsLIAggAUHQqYABEI8gAAsgEiAVQZCpgAEQjyAACyABIBBBgKmAARCjIAALIBYgAUHwqIABEI8gAAsgAkECNgIkIAJBtJ6AATYCICACQgE3AiwgAkHEADYCDCACIABBxAJqNgIIIAIgAkEIajYCKEEBIQMgBCAFIAJBIGoQzgUNACACQQI2AiQgAkHQnoABNgIgIAJCATcCLCACQcUANgIMIAIgACgCHCIBQQBHOgA8IAIgAkEIajYCKCACIAJBPGo2AgggBCAFIAJBIGoQzgUNACACQQI2AiQgAkGs+oMBNgIgIAJCATcCLCACQSo2AgwgAiAAQRhqNgIIIAIgAkEIajYCKCAEIAUgAkEgahCxHg0AIAJBAjYCJCACQcz6gwE2AiAgAkIBNwIsIAJBKjYCDCACIAAoAhQiFTYCPCACIAJBCGo2AiggAiACQTxqNgIIIAQgBSACQSBqELEeDQAgAkECNgIkIAJB/J6AATYCICACQgE3AiwgAkEqNgIMIAIgAEGsAmo2AgggAiACQQhqNgIoIAQgBSACQSBqELEeDQAgAkECNgIkIAJBpJ+AATYCICACQgE3AiwgAkEqNgIMIAIgAEGwAmo2AgggAiACQQhqNgIoIAQgBSACQSBqELEeDQAgAkECNgIkIAJByJ+AATYCICACQgE3AiwgAkEqNgIMIAIgBzYCCCACIAJBCGo2AiggBCAFIAJBIGoQsR4NACACQQI2AiQgAkGAoIABNgIgIAJCATcCLCACQcYANgIMIAIgAEEsajYCCCACIAJBCGo2AiggBCAFIAJBIGoQsR4NACACQaCggAE2AiAgAkIBNwIsIAJBKjYCDCAAKAIkIR4gAkECNgIkIAIgHkEAIAEbIBUgDmpBAnRqNgI8IAIgAkEIajYCKCACIAJBPGo2AgggBCAFIAJBIGoQsR4NACACQQA2AjAgAkEBNgIkIAJB4PqDATYCICACQgQ3AiggBCAFIAJBIGoQsR4hAwsgAkHAAGokACADDwsgCSAQQYzigwEQsxEAC/sYAgJ/An4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgFBdGoiAkEHIAJBJkkbQX9qDiQAAQIDBAUGBwgJCgsMDQ4PEBESEyIUFRYXIhgZGhscHR4fICEiCyAAKAIIIgIgACgCDBDKFyAAKAIEIAIQxCAPCyAAQQRqEOcSIAAoAgQgACgCCBDFIA8LAkAgAC0AHEECRg0AIAApAwgiA0IDg0IAUg0AIAOnIgIgAigCACIBQX9qNgIAIAFBAUcNACACIAIoAhAQwRsLIAAoAiAQwQwPCyAAKAIEIgAQqgEgAEHAAEEIEJ4SDwsgACgCDCIAEKoBIABBwABBCBCeEg8LIAAoAgQiAhCqASACQcAAQQgQnhIgACgCCCIAEKoBIABBwABBCBCeEg8LAkACQAJAAkACQAJAAkACQAJAAkACQCABDgwKAAECAwQFBgcIKAkoCyAAKAIoIgIQqgEgAkHAAEEIEJ4SAkACQAJAIAAoAggOAgECAAsgACgCDCICEKoBIAJBwABBCBCeEgwpCyAAKQMQIgNCA4NCAFINKCADpyICIAIoAgAiAUF/ajYCACABQQFHDSggAiACKAIQEMEbDCgLIAApAxAiA0IDg0IAUg0nIAOnIgIgAigCACIBQX9qNgIAIAFBAUcNJyACIAIoAhAQwRsMJwsCQCAAKAIIDQAgACkDECIDQgODQgBSDScgA6ciAiACKAIAIgFBf2o2AgAgAUEBRw0nIAIgAigCEBDBGwwnCyAAKAIMIgIQqgEgAkHAAEEIEJ4SDCYLIAAoAgQiAhCqASACQcAAQQgQnhIMJQsCQAJAIAAoAgQiAigCAEEDRg0AIAIoAiAiARCqASABQcAAQQgQnhIgAhD+DgwBCyACKAIQIgEQqgEgAUHAAEEIEJ4SIAJBBGoQ6xcgAigCBCACQQhqKAIAEMQgIAIoAiAiAUUNACABELgYIAEoAgAgAUEEaigCABDAICABQRRBBBCeEgsgAkEoQQgQnhIMJAsgACgCBCICEKoBIAJBwABBCBCeEiAAKAIIIgIQwwMgAkHgAEEIEJ4SDCMLIAAoAgQiAhCqASACQcAAQQgQnhIgACgCCCICEMMDIAJB4ABBCBCeEgwiCyAAKAIEIgIQqgEgAkHAAEEIEJ4SDCELIAAoAgQiAhCqASACQcAAQQgQnhIgACgCCCICEMMDIAJB4ABBCBCeEgwgCyAAKAIEIgIQqgEgAkHAAEEIEJ4SIAAoAggiAhC4GCACKAIAIAJBBGooAgAQwCAgAkEUQQQQnhIMHwsCQAJAIAAoAgQOAgABIAsgACgCDCICIAAoAhAQpBogACgCCCACEMEgDB4LIABBCGoQuAogACgCCCAAKAIMEL4gDB0LIABBCGoQrxIMHQsgACgCKCICEKoBIAJBwABBCBCeEiAAQQhqEP4ODwsCQCAAKAIIDQAgACkDECIDQgODQgBSDRogA6ciACAAKAIAIgJBf2o2AgAgAkEBRw0aIAAgACgCEBDBGw8LIABBDGoQ0B4PCyAAKAIEIgIQqgEgAkHAAEEIEJ4SIAAoAggiAhCqASACQcAAQQgQnhIgACgCDCIAEKoBIABBwABBCBCeEg8LIABBBGohAgJAIAAtABhBBUcNACAAKAIQIgEQqgEgAUHAAEEIEJ4SCyACEOsXIAAoAgQgACgCCBDEICAAKAIoIgBFDRcgABC4GCAAKAIAIABBBGooAgAQwCAgAEEUQQQQnhIPCyAAKAIQIgIQqgEgAkHAAEEIEJ4SAkAgACgCBCICQYCAgIB4Rg0AIABBBGoQ6xcgAiAAKAIIEMQgCyAAKAIgIgBFDRYgABC4GCAAKAIAIABBBGooAgAQwCAgAEEUQQQQnhIPCyAAKAIIIgIgACgCDBCmGiAAKAIEIAIQwCAPCyAAKQMIIgNCA4NCAFINFCADpyIAIAAoAgAiAkF/ajYCACACQQFHDRQgACAAKAIQEMEbDwsCQAJAAkACQAJAIAAoAggOBgEYGAIDBAALIAApAxghAwJAIAApAxAiBEIDg0IAUg0AIASnIgAgACgCACICQX9qNgIAIAJBAUcNACAAIAAoAhAQwRsLIANCA4NCAFINFyADpyIAIAAoAgAiAkF/ajYCACACQQFHDRcgACAAKAIQEMEbDwsgAEEQahCoEA8LIAApAyAiA1ANFSADQgODQgBSDRUgA6ciACAAKAIAIgJBf2o2AgAgAkEBRw0VIAAgACgCEBDBGw8LIAApAxggACgCIBChFA8LIAApAxghAwJAIAApAxAiBEIDg0IAUg0AIASnIgAgACgCACICQX9qNgIAIAJBAUcNACAAIAAoAhAQwRsLIANCA4NCAFINEyADpyIAIAAoAgAiAkF/ajYCACACQQFHDRMgACAAKAIQEMEbDwsgACgCCCICIAAoAgwQphogACgCBCACEMAgIAAoAhQiAiAAKAIYEJsOIAAoAhAgAhC/IA8LIAAoAgQiAhCqASACQcAAQQgQnhICQCAAKAIYIgJFDQAgAhC4GCACKAIAIAJBBGooAgAQwCAgAkEUQQQQnhILIAAoAggiAEEEaiICKAIAIABBCGooAgAQphogACgCACACKAIAEMAgIABBEGoiAigCACAAQRRqKAIAEJsOIAAoAgwgAigCABC/ICAAQSBBBBCeEg8LIAAoAggiAiAAKAIMEPkbIAAoAgQgAhDBICAAKAIQIgJBBGohAQJAAkAgAigCAEGAgICAeEYNACABKAIAIAJBCGooAgAQ+hsgAigCACABKAIAEMIgDAELIAEQ0B4LIAJBGEEEEJ4SAkAgACgCICICRQ0AIAIQ5A0gAigCACACQQRqKAIAEMIgIAJBFEEEEJ4SCyAAKAIkIgBFDRAgACgCACICEMMDIAJB4ABBCBCeEiAAQQxBBBCeEg8LAkAgAC0AHEECRg0AIAApAwgiA0IDg0IAUg0AIAOnIgIgAigCACIBQX9qNgIAIAFBAUcNACACIAIoAhAQwRsLIAAoAiAiAEEEaiICKAIAIABBCGooAgAQpRogACgCACACKAIAEMUgIABBEGoiAigCACAAQRRqKAIAEPsbIAAoAgwgAigCABDDIAJAIAAoAjAiAkUNACACEKoBIAJBwABBCBCeEgsCQCAAKAI0IgJFDQAgAhDkDSACKAIAIAJBBGooAgAQwiAgAkEUQQQQnhILAkAgACgCOCICRQ0AIAIQuBggAigCACACQQRqKAIAEMAgIAJBFEEEEJ4SCyAAQRxqIgIoAgAgAEEgaigCABDbDSAAKAIYIAIoAgAQxCAgAEHAAEEEEJ4SDwsgACgCDCIARQ0OIAAQqgEgAEHAAEEIEJ4SDwsgACgCBCIAEKoBIABBwABBCBCeEg8LIAAoAgQiABCqASAAQcAAQQgQnhIPCyAAQQhqEP8ODwsgAEEIahDlEA8LIAAoAgQiAEHAAGoQlBEgAEGAAWoiAigCACAAQYQBaigCABC3FSAAKAJ8IAIoAgAQwyACQCAAKAJ4IgJFDQAgAhC4GCACKAIAIAJBBGooAgAQwCAgAkEUQQQQnhILIABBkAFqEIoPIAAoApABIABBlAFqKAIAEMEgAkAgAC0APEEGRg0AIABBEGoQlBELIABBoAFBCBCeEg8LIABBBGoQig8gACgCBCAAKAIIEMEgDwsgACgCBCICEKoBIAJBwABBCBCeEiAAKAIIIgAQwwMgAEHgAEEIEJ4SDwsgACgCBCIAEKoBIABBwABBCBCeEg8LIAAoAgQiABCqASAAQcAAQQgQnhIPCyAAKAIEIgIQqgEgAkHAAEEIEJ4SIAAoAggiABDDAyAAQeAAQQgQnhIPCyAAKAIEIgIQqgEgAkHAAEEIEJ4SIAAoAggiABC4GCAAKAIAIABBBGooAgAQwCAgAEEUQQQQnhIPCyAAKAIEIgIQqgEgAkHAAEEIEJ4SIAAoAggiABDDAyAAQeAAQQgQnhIPCyAAKQMIIgNCA4NCAFINASADpyIAIAAoAgAiAkF/ajYCACACQQFHDQEgACAAKAIQEMEbDwsCQAJAIAAoAgQiACgCAEEDRg0AIAAQ5g0MAQsgAEEEahC4FQsgAEEoQQgQnhILDwsgACgCHCICRQ0AIAIoAgAiARDDAyABQeAAQQgQnhIgAkEMQQQQnhILIAAoAjgiABCqASAAQcAAQQgQnhILgBYCKn8HfiMAQYABayICJAAgASgCBCEDIAEoAgAhBAJAAkACQAJAAkACQAJAAkAgAS0AbEF9aiIFQQEgBUH/AXFBA0kbQf8BcQ4DAAECAAsgASgCUCEGIAEoAkwhByABKAJIIQgCQCABKQNAIixCA4NCAFINACAspyIFIAUoAgAiBUEBajYCACAFQX9MDQQLIAEtAFQhCUEDIQpBACELDAILIAEoAlQhCSABKAJQIQYgAkEgaiABQdgAahDTCCABKAJMIQcgASgCSCEIAkAgASkDQCIsQgODQgBSDQAgLKciBSAFKAIAIgVBAWo2AgAgBUF/TA0DCyACQRJqIAJBN2otAAA6AAAgAiACLwA1OwEQIAlBCHYhCyACLQA0IQogAigCMCEMIAIoAiwhDSACKAIoIQ4gAigCJCEPIAIoAiAhEAwBCyABKAJMIQcgASgCSCEIIAEoAmQhDSABKAJgIQ4CQCABKQNAIixCA4NCAFINACAspyIFIAUoAgAiBUEBajYCACAFQX9MDQILIAEoAlwhDyABKAJYIRAgASkDUCItpyEGAkAgLUIDg0IAUg0AIAYgBigCACIFQQFqNgIAIAVBf0wNAgsgLUIoiKchCyAtQiCIpyEJQQUhCgsgASgCgAEhESABKAJ0IRIgASgCcCETIAJBIGogASgChAEiFEEIQdgAEMwNIAIoAiQhFSACKAIgQQFGDQEgAigCKCEWAkAgFUUNACARIBRB2ABsaiEXIBUhGEEAIRkDQCARIBdGDQECQAJAIBEoAgAiBUEFRw0AQQAtAMDxnQEaIBEoAgwhGiARKAIIIRtBwAAQhQEiHEUNBCAcIBEoAgQQREEFIR0MAQsgESgCLCEeIBEoAighHwJAAkAgESkDMCItUA0AIBEoAjwhICARKAI4ISEgESgCVCEiIBEoAlAhIwJAIC1CA4NCAFINACAtpyIcIBwoAgAiHEEBajYCACAcQX9MDQYLIBEoAkwhJCARKAJIISUgESkDQCIupyEmAkAgLkIDg0IAUg0AICYgJigCACIcQQFqNgIAIBxBf0wNBgsgLkIgiKchJwwBCyARKAJEIScgESgCQCEmIBEpAzgiLachIQJAIC1CA4NCAFINACAhICEoAgAiHEEBajYCACAcQX9MDQULIC1CIIinISBCACEtC0EEIR0CQCAFQQRGDQACQAJAAkACQAJAIAUOBAABAgMACyARKAIUISggESgCECEpAkAgESkDCCIvQgODQgBSDQAgL6ciBSAFKAIAIgVBAWo2AgAgBUF/TA0JC0EAIR0gESkDGCIuUEUNA0IAIS4MBAsgESgCFCEoIBEoAhAhKQJAAkAgESgCBCIcQQFHDQBBAC0AwPGdARpBwAAQhQEiBUUNCSAFIBEoAggQREIAIS5BASEcDAELIBE1AgxCIIYhLiARKAIIIQULIC4gBa2EIS9BASEdDAMLQQAtAMDxnQEaQaABEIUBIhxFDQYgHCARKAIEEKsBQQIhHQwCCyARKAIIIR0gESkCGCEuIBEoAhQhKCARKAIQISkgAkEgaiARKAIMIipBCEEoEMwNIAIoAiQhHCACKAIgQQFGDQcgAigCKCErAkAgHEUNACAqQShsIRogKyEFIBwhGwNAIBpFDQEgAkEgaiAdEIQHIAVBIGogAkEgakEgaikDADcDACAFQRhqIAJBIGpBGGopAwA3AwAgBUEQaiACQSBqQRBqKQMANwMAIAVBCGogAkEgakEIaikDADcDACAFIAIpAyA3AwAgBUEoaiEFIBpBWGohGiAdQShqIR0gG0F/aiIbDQALCyAqrUIghiArrYQhLyARKQIgITBBAyEdDAELAkAgLkIDg0IAUQ0ADAELIC6nIgUgBSgCACIFQQFqNgIAIAVBf0wNBAsgJ61CIIYgJq2EITEgIK1CIIYgIa2EITIgL0IgiKchGiAvpyEbCyARQdgAaiERIBYgGUHYAGxqIgUgIjYCVCAFICM2AlAgBSAkNgJMIAUgJTYCSCAFIDE3A0AgBSAyNwM4IAUgLTcDMCAFIB42AiwgBSAfNgIoIAUgMDcDICAFIC43AxggBSAoNgIUIAUgKTYCECAFIBw2AgQgBSAdNgIAIAUgGq1CIIYgG62ENwMIIBlBAWohGSAYQX9qIhgNAAsLIAEtAIgBIRsCQAJAIAEoAngiEQ0AQQAhGAwBC0EALQDA8Z0BGkEUEIUBIhhFDQEgESgCBCEFIBEoAhAhHiARKAIMIR8gAkEgaiARKAIIIihBBEEEEMwNIAIoAiQhGiACKAIgQQFGDQQgAigCKCEpAkAgGkUNACAoQQJ0IREgKSEZIBohHQNAIBFFDQFBAC0AwPGdARpB4AAQhQEiHEUNAyACQSBqIAUoAgAQZAJAQeAARQ0AIBwgAkEgakHgAPwKAAALIBkgHDYCACAZQQRqIRkgEUF8aiERIAVBBGohBSAdQX9qIh0NAAsLIBggHjYCECAYIB82AgwgGCAoNgIIIBggKTYCBCAYIBo2AgALIAJBDGpBAmoiHCACQRBqQQJqLQAAOgAAIAIgAi8BEDsBDCACQRBqIAEoApQBIAEoApgBEOkDQQYhBQJAAkAgAS0APCIRQQZHDQAMAQsgASgCDCEaIAEoAgghHQJAAkACQAJAIBFBfWoiBUEBIAVBA0kbQf8BcQ4DAAECAAsgASgCICEjIAEoAhwhESABKAIYIRkCQCABKQMQIi1CA4NCAFINACAtpyIFIAUoAgAiBUEBajYCACAFQX9MDQULIAEtACQhIkEDIQVBACEkDAILIAEoAiQhIiABKAIgISMgAkEgaiABQShqENMIIAEoAhwhESABKAIYIRkCQCABKQMQIi1CA4NCAFINACAtpyIFIAUoAgAiBUEBajYCACAFQX9MDQQLIAJBHmogAkE3ai0AADoAACACIAIvADU7ARwgIkEIdiEkIAItADQhBSACKAIwIQEgAigCLCEoIAIoAighKSACKAIkIR4gAigCICEfDAELIAEoAhwhESABKAIYIRkgASgCNCEoIAEoAjAhKQJAIAEpAxAiLUIDg0IAUg0AIC2nIgUgBSgCACIFQQFqNgIAIAVBf0wNAwsgASgCLCEeIAEoAighHyABKQMgIi6nISMCQCAuQgODQgBSDQAgIyAjKAIAIgVBAWo2AgAgBUF/TA0DCyAuQiiIpyEkIC5CIIinISJBBSEFCyAkQQh0ICJB/wFxcq1CIIYgI62EIS4LIAAgCjoAbCAAIAw2AmggACANNgJkIAAgDjYCYCAAIA82AlwgACAQNgJYIAAgBzYCTCAAIAg2AkggACAsNwNAIAAgAzYCBCAAIAQ2AgAgACACLwEMOwBtIAAgGzoAiAEgACAUNgKEASAAIBY2AoABIAAgFTYCfCAAIBg2AnggACASNgJ0IAAgEzYCcCAAQe8AaiAcLQAAOgAAIAAgC0EIdCAJQf8BcXKtQiCGIAathDcDUCAAIAU6ADwgACABNgI4IAAgKDYCNCAAICk2AjAgACAeNgIsIAAgHzYCKCAAIC43AyAgACARNgIcIAAgGTYCGCAAIC03AxAgACAaNgIMIAAgHTYCCCAAQZgBaiACQRBqQQhqKAIANgIAIAAgAikCEDcCkAEgACACLwEcOwA9IABBP2ogAkEcakECai0AADoAACACQYABaiQADwsACyAVIAIoAihBiJ+aARCqHgALIBwgAigCKEGIn5oBEKoeAAsgGiACKAIoQYifmgEQqh4AC8QWAhh/BH4jAEGAAWsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAiAw4IAAECAwQFBgcACyABKAIYIQQgASgCFCEFIAEoAhAhBgJAIAEpAwgiGkIDg0IAUg0AIBqnIgcgBygCACIHQQFqNgIAIAdBf0wNCwtBAC0AwPGdARogAS0AJCEIIAEtABwhCUHAABCFASIHRQ0KIAcgASgCIBDoAiAAIAg6ACQgACAHNgIgIAAgCToAHCAAIAQ2AhggACAFNgIUIAAgBjYCECAAIBo3AwgMBwsgASgCGCEEIAEoAhQhBSABKAIQIQYCQCABKQMIIhpCA4NCAFINACAapyIHIAcoAgAiB0EBajYCACAHQX9MDQoLQQAtAMDxnQEaIAEtACQhCCABLQAcIQlByAAQhQEiB0UNCSAHIAEoAiAQ/AEgACAIOgAkIAAgBzYCICAAIAk6ABwgACAENgIYIAAgBTYCFCAAIAY2AhAgACAaNwMIDAYLQQAtAMDxnQEaQRwQhQEiB0UNCCABKAIEIgEpAgwhGiABKAIUIQQgAS8BGCEFIAcgARCoBSAHIAU7ARggByAENgIUIAcgGjcCDCAAIAc2AgQMBQtBAC0AwPGdARpBGBCFASIHRQ0HIAEoAgQiASkCDCEaIAEtABQhBCAHIAEQqAUgByAEOgAUIAcgGjcCDCAAIAc2AgQMBAtBAC0AwPGdARpByAAQhQEiBkUNBiABKAIEIgEoAhghCiABKAIUIQsgASgCECEMIAEoAgQhDSABKAIAIQ4CQCABKQMIIhpCA4NCAFINACAapyIHIAcoAgAiB0EBajYCACAHQX9MDQcLIAEtAEQhDyABLQAcIRACQAJAIAEoAiAiBw0AQQAhCQwBC0EALQDA8Z0BGkEUEIUBIglFDQcgBykCDCEbIAkgBygCBCAHKAIIEKIGIAkgGzcCDAsgAkEMaiABQThqEKMFIAEoAighByABKAI0IREgASgCMCESIAJBwABqIAEoAiwiE0EIQTgQzA0gAigCRCEIIAIoAkBBAUYNBCACKAJIIRQCQCAIRQ0AIBNBOGwhBCAUIQEgCCEFA0AgBEUNASACQcAAaiAHEMQBIAFBMGogAkHAAGpBMGopAwA3AwAgAUEoaiACQcAAakEoaikDADcDACABQSBqIAJBwABqQSBqKQMANwMAIAFBGGogAkHAAGpBGGopAwA3AwAgAUEQaiACQcAAakEQaikDADcDACABQQhqIAJBwABqQQhqKQMANwMAIAEgAikDQDcDACAEQUhqIQQgAUE4aiEBIAdBOGohByAFQX9qIgUNAAsLIAYgAikCDDcCOCAGQcAAaiACQRRqKAIANgIAIAYgDzoARCAGIBE2AjQgBiASNgIwIAYgEzYCLCAGIBQ2AiggBiAINgIkIAYgCTYCICAGIBA6ABwgBiAKNgIYIAYgCzYCFCAGIAw2AhAgBiAaNwMIIAYgDTYCBCAGIA42AgAgACAGNgIEDAMLQQAtAMDxnQEaQTAQhQEiB0UNBSABKAIEIgEoAhghBiABKAIUIQggASgCECEJIAEtACghEyABKAIEIRQgASgCACEKAkAgASkDCCIaQgODQgBSDQAgGqciBCAEKAIAIgRBAWo2AgAgBEF/TA0GCyABLQAcIQtBACEEAkAgASgCICIFRQ0AQQAtAMDxnQEaQRQQhQEiBEUNBiAFKQIMIRsgBCAFKAIEIAUoAggQogYgBCAbNwIMC0EALQDA8Z0BGkHgABCFASIFRQ0FIAUgASgCJBBkIAcgEzoAKCAHIAU2AiQgByAENgIgIAcgCzoAHCAHIAY2AhggByAINgIUIAcgCTYCECAHIBo3AwggByAUNgIEIAcgCjYCACAAIAc2AgQMAgtBAC0AwPGdARpBMBCFASIKRQ0EIAEoAgQiASgCECEQIAEoAgwhESABKAIIIRIgAS0ALSEVIAEtACwhFiABKAIcIRcgASgCGCEYAkAgASkDACIcQgODQgBSDQAgHKciByAHKAIAIgdBAWo2AgAgB0F/TA0FCyABKAIkIQwgAS0AFCEZIAJBwABqIAEoAigiD0EIQTAQzA0gAigCRCEOIAIoAkBBAUYNAyACKAJIIQsCQCAORQ0AIA9BMGwhDUEAIQUgDCEBIA4hBgNAIA0gBUYNASAMIAVqIQcgASgCFCEIIAEoAhAhCSABKAIkIRMgASgCICEUAkACQCABKAIAQQFHDQACQCAHQQhqKQMAIhtCA4NCAFINACAbpyIEIAQoAgAiBEEBajYCACAEQX9MDQkLQgEhHSAHQRhqKQMAIhpQDQEgGkIDg1BFDQEgGqciByAHKAIAIgdBAWo2AgAgB0F/Sg0BDAgLIAdBGGo1AgAhHQJAIAdBCGopAwAiG0IDg0IAUg0AIBunIgQgBCgCACIEQQFqNgIAIARBf0wNCAsgB0EcajEAAEIghiAaQoCAgICAYIMgHYSEIRpCACEdCwJAAkAgASgCKCIHDQBBACEEDAELQQAtAMDxnQEaQcAAEIUBIgRFDQcgAkHAAGogBxBEIARBOGogAkHAAGpBOGopAwA3AwAgBEEwaiACQcAAakEwaikDADcDACAEQShqIAJBwABqQShqKQMANwMAIARBIGogAkHAAGpBIGopAwA3AwAgBEEYaiACQcAAakEYaikDADcDACAEQRBqIAJBwABqQRBqKQMANwMAIARBCGogAkHAAGpBCGopAwA3AwAgBCACKQNANwMACyABQTBqIQEgCyAFaiIHIB03AwAgB0EoaiAENgIAIAdBJGogEzYCACAHQSBqIBQ2AgAgB0EYaiAaNwMAIAdBFGogCDYCACAHQRBqIAk2AgAgB0EIaiAbNwMAIAVBMGohBSAGQX9qIgYNAAsLIAogDzYCKCAKIAs2AiQgCiAONgIgIAogFToALSAKIBY6ACwgCiAXNgIcIAogGDYCGCAKIBk6ABQgCiAQNgIQIAogETYCDCAKIBI2AgggCiAcNwMAIAAgCjYCBAwBC0EALQDA8Z0BGkHYABCFASIHRQ0DIAEoAgQiASgCFCEGIAEoAhAhCCABLQBSIQkgAS0AUSETIAEtAFAhFCABKAJMIQogASgCSCELAkACQCABKAIAQQFHDQACQCABKQMIIhtCA4NCAFINACAbpyIEIAQoAgAiBEEBajYCACAEQX9MDQYLQgEhHSABKQMYIhpQDQEgGkIDg1BFDQEgGqciBCAEKAIAIgRBAWo2AgAgBEF/TA0FDAELQgAhHSABNQIYIRoCQCABKQMIIhtCA4NCAFINACAbpyIEIAQoAgAiBEEBajYCACAEQX9MDQULIAExABxCIIYgGoQhGgtBAyEEAkAgAS0ARUEDRg0AIAJBwABqIAFBIGoQVCACQRhqQR1qIAJBwABqQR1qKQAANwAAIAJBGGpBGGogAkHAAGpBGGopAwA3AwAgAkEYakEQaiACQcAAakEQaikDADcDACACQRhqQQhqIAJBwABqQQhqKQMANwMAIAIgAikDQDcDGCACLQBlIQQgAi8BZiEFCyAHIBo3AxggByAGNgIUIAcgCDYCECAHIBs3AwggByAdNwMAIAcgAikDGDcDICAHIAk6AFIgByATOgBRIAcgFDoAUCAHIAo2AkwgByALNgJIIAcgBTsBRiAHIAQ6AEUgB0EoaiACQSBqKQMANwMAIAdBMGogAkEoaikDADcDACAHQThqIAJBMGopAwA3AwAgB0E9aiACQTVqKQAANwAAIAAgBzYCBAsgACADNgIAIAJBgAFqJAAPCyAIIAIoAkhBiJ+aARCqHgALIA4gAigCSEGIn5oBEKoeAAsAC88YAQZ/IwBBgAJrIgUkACAFIAQ6AB8gBSACNgIYIAVBIGpBCGogA0EIaigCADYCACABIAEoAngiBEEIcjYCeCAFIAMpAgA3AyAgBSAFQRhqNgIwIAUgBUEfajYCLAJAAkACQAJAIAEtAMgBIgNB0ABHDQAgARCHDiAFQcABaiABIAUtAB9BARD8BCAFKALAASEDIAUtANQBIgJBA0cNASAAQQM6ABQgACADNgIADAILIAEoAsQBIQIgASgCwAEhBiAFQYABaiADEN4bIAVBATYCxAEgBUGY75sBNgLAASAFQgE3AswBIAVBigWtQiCGQZitmwGthDcDOCAFIAVBOGo2AsgBIAVBmAFqIAVBwAFqEI0VIAVBrAFqIAVBgAFqQQhqKAIANgIAIAUgBSkCgAE3AqQBIAYgAiAFQZgBahCFFSEDAkAgAS0AyAFBogFHDQAgARDHESECIAEQhw4gASACEOURCyAAQQM6ABQgACADNgIADAELIAVBOGpBDGogBUHAAWpBDGopAgA3AgAgBUE4akEXaiAFQcABakEXai0AADoAACAFIAUpAsQBNwI8IAUgBS8A1QE7AE0gBSACOgBMIAUgAzYCOEEAIQMCQAJAIAEtAIEBQSBxRQ0AAkAgAkECRg0AIAVBEGogBUE4ahD+EQJAIAUoAhAiAiAFKAIUIgZBg6SbAUEGEJkcDQAgAiAGQYmkmwFBBBCZHA0AIAIgBkGNpJsBQQYQmRwNACACIAZBk6SbAUEGEJkcDQAgAiAGQZmkmwFBAxCZHA0AIAIgBkGcpJsBQQcQmRwNACACIAZBo6SbAUEHEJkcDQAgAiAGQaqkmwFBBhCZHA0AIAIgBkGwpJsBQQYQmRwNACACIAZB8ZabAUEEEJkcDQAgAiAGQbakmwFBBRCZHA0AIAIgBkG7pJsBQQkQmRxFDQELIAUoAkQhAiAFKAJAIQYgBUGtgYCAeDYCwAEgASAGIAIgBUHAAWoQrxoLIAEtAIEBQSBxRQ0AIAVBCGogAUEBQQEQ1BMgBSgCDCEDIAUoAghBAXFFDQAgAEEDOgAUIAAgAzYCAAwBCwJAAkACQAJAAkAgAS0AyAEiAkHZAEYNAEEAIQcgBUEANgJUQQAhBgwBCyABEIcOIAVBwAFqIAEQjgsgBSgCxAEhBwJAAkACQCAFKALAASIGRQ0AIAUgBjYCgAEgAS0AyAEhAiABLQCBAUEgcUUNAiACQf8BcUEHRw0CIAEQhw4gBUHAAWogARCgBCAFKALEASECAkAgBSgCwAEiCEGAgICAeEcNACAAQQM6ABQgACACNgIAIAcQ8B8gBUGAAWoQ6x4MBgsgBSgCyAEhCSAFIAI2ApwBIAUgCDYCmAEgBSAJNgKgASAJQQR0IQgDQCAIRQ0CIAJFDQIgAigCCCEJIAIoAgQhCiAFQZiBgIB4NgLAASABIAogCSAFQcABahCvGiAIQXBqIQggAkEQaiECDAALCyAAQQM6ABQgACAHNgIADAQLIAVBmAFqEM0dIAEtAMgBIQILIAUgBjYCVCACQf8BcUHZAEcNACABEIcOIAEoArwBIQIgASgCuAEhCCAFQZaBgIB4NgLAASABIAggAiAFQcABahCvGiAFQcABaiABEI4LIAUoAsQBIQICQCAFKALAASIIDQAgAEEDOgAUIAAgAjYCAAwCCyAFIAI2ApwBIAUgCDYCmAEgBUGYAWoQ6x4gAhDwHyABLQDIASECCwJAAkACQAJAAkACQAJAAkACQAJAIAEtAIEBQSBxRQ0AIAJB/wFxQYEBRw0AIAEQhw4gBUHAAWogARCgBCAFKALEASECIAUoAsABIghBgICAgHhGDQIgBSgCyAEhCQwBCyAFQQRBBEEQQZytmwEQ2BRBACEJIAUoAgQhAiAFKAIAIQgLIAUgCTYCYCAFIAI2AlwgBSAINgJYIAEtAMgBIQICQCABLwGAAUGAwABxIghFDQAgAkH/AXFBgQFHDQAgARCHDiABKAK8ASECIAEoArgBIQggBUGZgYCAeDYCwAEgASAIIAIgBUHAAWoQrxogBUHAAWogARCgBCAFKALEASECAkAgBSgCwAEiCEGAgICAeEcNACAAQQM6ABQgACACNgIADAkLIAUgBSgCyAE2AqABIAUgAjYCnAEgBSAINgKYASAFQZgBahDNHSABLwGAAUGAwABxIQggAS0AyAEhAgsgCEUNBSACQf8BcUHZAEcNBSABEIcOIAEoArwBIQIgASgCuAEhCCAFQZeBgIB4NgLAASABIAggAiAFQcABahCvGiAFQcABaiABEI4LIAUoAsQBIQICQCAFKALAASIIDQAgAEEDOgAUIAAgAjYCAAwICyAFIAg2AsABIAYhCQJAIAYNACAFQdQAahCwHyAFIAg2AlQgAg0EIAghCQsgAhDwHyAGDQEMAgsgAEEDOgAUIAAgAjYCAAwHCyAFQcABahDrHgsgCSEIDAELIAcQ8B8gAiEHCyABLQDIASECDAELIAYhCAsCQAJAAkACQCACQf8BcUECRw0AIAEQhw4gCEUNASABIAEoAngiAkGAgIACcjYCeCAFQcABaiABEEogASACNgJ4IAUoAsQBIQIgBSgCwAEiBkGAgICAeEYNAgwDCyABKALEASEGIAEoAsABIQggBUGAAWogAhDeGyAFQQE2AsQBIAVBmO+bATYCwAEgBUIBNwLMASAFQYoFrUIghkHsoZsBrYQ3A3AgBSAFQfAAajYCyAEgBUGYAWogBUHAAWoQjRUgBUGsAWogBUGIAWooAgA2AgAgBSAFKQKAATcCpAEgCCAGIAVBmAFqEIUVIQICQCABLQDIAUGiAUcNACABEMcRIQYgARCHDiABIAYQ5RELIABBAzoAFCAAIAI2AgAMAwsgASABKAJ4IgJB////fXE2AnggBUHAAWogARBKIAEgAjYCeCAFKALEASECIAUoAsABIgZBgICAgHhHDQEgAEEDOgAUIAAgAjYCAAwCCyAAQQM6ABQgACACNgIADAELIAUgBSgCyAE2AmwgBSACNgJoIAUgBjYCZAJAAkAgAS0AyAEiAkEDRg0AIAJBowFHDQEgBUHwAGpBowEQ3hsgASgCxAEhAiABKALAASEGIAVBATYCxAEgBUGY75sBNgLAASAFQgE3AswBIAVBigWtQiCGQe2hmwGthDcDgAEgBSAFQYABajYCyAEgBUGYAWogBUHAAWoQjRUgBUGsAWogBUH4AGooAgA2AgAgBSAFKQJwNwKkASABIAYgAiAFQZgBahCvGgwFCyABEIcODAQLIAEoAsQBIQYgASgCwAEhCCAFQYABaiACEN4bIAVBATYCxAEgBUGY75sBNgLAASAFQgE3AswBIAVBigWtQiCGQe2hmwGthDcDcCAFIAVB8ABqNgLIASAFQZgBaiAFQcABahCNFSAFQawBaiAFQYgBaigCADYCACAFIAUpAoABNwKkASAIIAYgBUGYAWoQhRUhAgJAIAEtAMgBQaIBRw0AIAEQxxEhBiABEIcOIAEgBhDlEQsgAEEDOgAUIAAgAjYCACAFQeQAahDRHQsgBUHYAGoQzR0LIAcQ8B8gBUHUAGoQsB8LIAMQ7h8MAQsgASgCvAEhBiAFKAIYIQkgBUGAAWpBEGogBUE4akEQaikDADcDACAFQYABakEIaiAFQThqQQhqKQMANwMAIAUgBSkDODcDgAEgBUGYAWpBCGogBUEgakEIaigCADYCACAFQawBaiAFQeQAakEIaigCADYCACAFIAUpAyA3A5gBIAUgBSkCZDcCpAEgBUG4AWogBUHYAGpBCGooAgA2AgAgBSAFKQJYNwOwASAFQfUBakIANwAAIAVBADYC7AEgBUIANwLkASAFQgA3AvABIAVBADYC2AEgBUIINwLQASAFQgA3AsgBIAVCgICAgMAANwLAASAFQgQ3AtwBAkBBBEHAABDrHyICDQAACwJAQSRFDQAgAiAFQZgBakEk/AoAAAsgAkEAOgA8IAIgBzYCOCACIAM2AjQgAiAINgIwIAJBADYCLCACIAY2AiggAiAJNgIkIABBEGogBUGAAWpBEGopAwA3AwAgAEEIaiAFQYABakEIaikDADcDACAAIAUpA4ABNwMAIAAgAjYCGCAFQcABahD7GgwCCyAFKQM4IAUtAEwQhB4LIAVBIGoQzB0LIAEgBDYCeCAFQYACaiQAC9UVAg9/BH4jAEHAAGsiAiQAAkACQCAALQAoDQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQXRqIgNBByADQSZJGw4mAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUACyABQQhqIQMgAUEEaiEEDCwLIAFBFGohAyABQRBqIQQMKwsgAUEUaiEDIAFBEGohBAwqCyABKAIgIgRBNGohAyAEQTBqIQQMKQsgAUEMaiEDIAFBCGohBAwoCyABQQhqIQMgAUEEaiEEDCcLIAFBEGohAyABQQxqIQQMJgsgAUE0aiEDIAFBMGohBAwlCyABQSRqIQMgAUEgaiEEDCQLIAFBJGohAyABQSBqIQQMIwsgAUEUaiEDIAFBEGohBAwiCyABQSBqIQMgAUEcaiEEDCELIAFBGGohAyABQRRqIQQMIAsgAUEUaiEDIAFBEGohBAwfCyABQRRqIQMgAUEQaiEEDB4LIAEoAggOBxYXGBkaGxwWCyABQSBqIQMgAUEcaiEEDBwLIAFBEGohAyABQQxqIQQMGwsgAUEYaiEDIAFBFGohBAwaCyABKAIgIgRBKGohAyAEQSRqIQQMGQsgAUEIaiEDIAFBBGohBAwYCyABQQhqIQMgAUEEaiEEDBcLIAFBDGohAyABQQhqIQQMFgsgAUEMaiEDIAFBCGohBAwVCyABQRxqIQMgAUEYaiEEDBQLIAFBLGohAyABQShqIQQMEwsgAUEIaiEDIAFBBGohBAwSCyABKAIEIgRBBGohAwwRCyABQRRqIQMgAUEQaiEEDBALIAFBEGohAyABQQxqIQQMDwsgAUEMaiEDIAFBCGohBAwOCyABQQxqIQMgAUEIaiEEDA0LIAFBEGohAyABQQxqIQQMDAsgAUEQaiEDIAFBDGohBAwLCyABQRBqIQMgAUEMaiEEDAoLIAFBFGohAyABQRBqIQQMCQsgAUEMaiEDIAFBCGohBAwICyABQQhqIQMgAUEEaiEEDAcLIAFBHGohAyABQRhqIQQMBgsgAUEQaiEDIAFBDGohBAwFCyABQRBqIQMgAUEMaiEEDAQLIAFBFGohAyABQRBqIQQMAwsgAUEUaiEDIAFBEGohBAwCCyABQSRqIQMgAUEgaiEEDAELIAFBJGohAyABQSBqIQQLIAMoAgAhBSAEKAIAIQYCQAJAAkAgACgCCCIHDgICAAELIAYgACgCBCIDKAIARw0BIAUgA0EEaigCAEcNAUEAIQggAEEANgIIIAAoAgwiBEF8aiEJIAAoAhAiCiADKAIQIgZxIQcgBkEZdq1CgYKEiJCgwIABfiERIAMoAgwhBSADKAIIIQYDQCAEIAdqKQAAIhIgEYUiE0J/hSATQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DIRMCQANAIBNQDQEgE3ohFCATQn98IBODIRMgCSAUp0EDdiAHaiAKcSILQQJ0aygCAA0AC0GAASEDAkAgBCALQQJ0QQJ1IgdqIgkpAAAiEyATQgGGg0KAgYKEiJCgwIB/g3qnQQN2IAQgB0F4aiAKcWoiBCkAACITIBNCAYaDQoCBgoSIkKDAgH+DeadBA3ZqQQdLDQAgACAAKAIUQQFqNgIUQf8BIQMLIAkgAzoAACAEQQhqIAM6AAAgACAAKAIYQX9qNgIYDAMLIBIgEkIBhoNCgIGChIiQoMCAf4NCAFINAiAIQQhqIgggB2ogCnEhBwwACwsgACgCDCIEQXxqIQwgACgCECIJIAZB3cvdnnlsIAVqQd3L3Z55bEEPdyIKcSEDIApBGXatQoGChIiQoMCAAX4hESAAKAIEIQtBACENA0AgBCADaikAACIUIBGFIhNCf4UgE0L//fv379+//358g0KAgYKEiJCgwIB/gyETAkACQAJAAkACQANAIBNQDQUgDCATeqdBA3YgA2ogCXEiCkECdGsoAgAiCCAHTw0BIBNCf3wgE4MhEyAGIAsgCEEUbGoiCCgCAEcNACAFIAhBBGooAgBHDQALIARBACAKa0ECdGohBkGAASEDAkAgBCAKQQJ0QQJ1IgVqIgopAAAiEyATQgGGg0KAgYKEiJCgwIB/g3qnQQN2IAQgBUF4aiAJcWoiBSkAACITIBNCAYaDQoCBgoSIkKDAgH+DeadBA3ZqQQdLDQAgACAAKAIUQQFqNgIUQf8BIQMLIAogAzoAACAFQQhqIAM6AAAgACAAKAIYQX9qIgU2AhggByAGQXxqKAIAIg1BAWoiCkkNASAHIAprIgYgBSAAKAIUakEBdksNAiAHIApNDQMgCyAKQRRsaiEOQQAhA0EAIAYgBiAHSxshDwNAIAMgDWohCyADIApqIQUgA0EBaiEGIA4gA0EUbGooAhAiA0EZdq1CgYKEiJCgwIABfiERQQAhEANAIAQgAyAJcSIDaikAACISIBGFIhNCf4UgE0L//fv379+//358g0KAgYKEiJCgwIB/gyETAkADQCATUA0BIBN6IRQgE0J/fCATgyETIAwgFKdBA3YgA2ogCXFBAnRrIggoAgAgBUcNAAsgCCALNgIAIAYhAyAGIA9JDQIMBgsCQCASIBJCAYaDQoCBgoSIkKDAgH+DQgBSDQAgEEEIaiIQIANqIQMMAQsLC0G8oJoBQQ9BzKCaARDyEgALIAggB0GsoJoBELMRAAsgCiAHQeygmgEQqSAACyAFRQ0AIARBCGohAyAEKQMAQn+FQoCBgoSIkKDAgH+DIRMDQAJAIBNCAFINAANAIARBYGohBCADKQMAIRMgA0EIaiIGIQMgE0KAgYKEiJCgwIB/gyITQoCBgoSIkKDAgH9RDQALIBNCgIGChIiQoMCAf4UhEyAGIQMLIBNCf3whEQJAIAogBCATeqdBAXZBPHFrQXxqIgkoAgAiBksNACAGIAdPDQAgCSAGQX9qNgIACyARIBODIRMgBUF/aiIFDQALIAAoAgghBwsCQCANIAdPDQAgACgCBCANQRRsaiIDKAIMIQUgAygCCCEGAkAgByANQX9zakEUbCIERQ0AIAMgA0EUaiAE/AoAAAsgACAHQX9qNgIIDAMLIA0gB0H8oJoBELcRDAQLIBQgFEIBhoNCgIGChIiQoMCAf4NCAFINASANQQhqIg0gA2ogCXEhAwwACwsgASkDACETIAFCMTcDACACQThqIgQgAUE4aikDADcDACACQTBqIgAgAUEwaikDADcDACACQShqIgcgAUEoaikDADcDACACQSBqIgogAUEgaikDADcDACACQRhqIgkgAUEYaikDADcDACACQRBqIgsgAUEQaikDADcDACACQQhqIgggAUEIaiIDKQMANwMAIANBADYCAEEALQDA8Z0BGiACIBM3AwBBwAAQhQEiA0UNASADIAIpAwA3AwAgA0E4aiAEKQMANwMAIANBMGogACkDADcDACADQShqIAcpAwA3AwAgA0EgaiAKKQMANwMAIANBGGogCSkDADcDACADQRBqIAspAwA3AwAgA0EIaiAIKQMANwMAIAEQyQEgAUEAIAUgBkF+RiIEGzYCDCABQQAgBiAEGzYCCCABIAM2AgQgAUEjNgIACyACQcAAaiQADwsAC9AUARR/IwBBIGsiByQAAkACQAJAAkAgAUEhTw0AIAEhCAwBCyACQXxqIQkCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAA0ACQCAEDQAgACABIAIgA0EBIAYQhAIMEQsgACABQQN2IgpBHGxqIQggACAKQQR0aiELAkACQCABQcAASQ0AIAAgCyAIIAogBhCGCiEMIAYoAgAhDQwBCyAAKAIAIg4gBigCACINKAIAIg8oAggiCk8NDyALKAIAIhAgCk8NDiAIKAIAIhEgCk8NDSAAIAggCyAPKAIEIgogDkEMbGooAggiDiAKIBBBDGxqKAIIIg9LIhAgDyAKIBFBDGxqKAIIIgpLcxsgECAOIApLcxshDAsgBEF/aiEEIAcgDCgCACIONgIEIAwgAGtBAnYhEgJAAkACQAJAIAVFDQAgBSgCACILIA0oAgAiCCgCCCIKTw0PIA4gCk8NDiAIKAIEIgogC0EMbGooAgggCiAOQQxsaigCCE0NAQsgAyABSQ0UIAIgAUECdCITaiELQQAhCCAAIQogEiEUA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCiAAQQAgFEF9aiIPIA8gFEsbQQJ0aiIVSQ0AIA4hDwwBCyANKAIAIhYoAgghFwNAIAooAgAiDyAXTw0CIA4gF08NAyACIAtBfGogFigCBCIQIA9BDGxqKAIIIBAgDkEMbGooAghLIhgbIAhBAnRqIA82AgAgCkEEaigCACIQIA0oAgAiESgCCCIPTw0EIAwoAgAiGSAPTw0FIAIgC0F4aiARKAIEIhEgEEEMbGooAgggESAZQQxsaigCCCIZSyIaGyAIIBhqIhhBAnRqIBA2AgAgCkEIaigCACIIIA9PDQYgAiALQXRqIBEgCEEMbGooAgggGUsiERsgGCAaaiIYQQJ0aiAINgIAIApBDGooAgAiCCANKAIAIhkoAggiEE8NByAMKAIAIg8gEE8NCCACIAtBcGoiCyAZKAIEIhAgCEEMbGooAgggECAPQQxsaigCCEsiEBsgGCARaiIRQQJ0aiAINgIAIBEgEGohCCAKQRBqIgogFUkNAAsLAkAgCiAAIBRBAnRqIhdJDQAgDyEODAoLIAwoAgAhDiANKAIAIhgoAgghEANAIAooAgAiDyAQTw0IIA4gEE8NCSACIAtBfGoiCyAYKAIEIhEgD0EMbGooAgggESAOQQxsaigCCEsiERsgCEECdGogDzYCACAIIBFqIQggCkEEaiIKIBdPDQoMAAsLIA8gF0HMuIABELMRAAsgDiAXQdy4gAEQsxEACyAQIA9BzLiAARCzEQALIBkgD0HcuIABELMRAAsgCCAPQcy4gAEQsxEACyAIIBBBzLiAARCzEQALIA8gEEHcuIABELMRAAsgDyAQQcy4gAEQsxEACyAOIBBB3LiAARCzEQwWCwJAIBQgAUYNACALQXxqIgsgCEECdGogCigCADYCACAKQQRqIQogASEUDAELCwJAIAhBAnQiD0UNACAAIAIgD/wKAAALIAEgCGshEAJAIAEgCEYNACAJIBNqIQogACAPaiELIBAhDgNAIAsgCigCADYCACAKQXxqIQogC0EEaiELIA5Bf2oiDg0ACwsgCEUNACABIAhPDQEgB0EANgIYIAdBATYCDCAHQfTRmwE2AgggB0IENwIQIAdBCGpB6NSbARCFGwALIAMgAUkNEyACIAFBAnQiBWohCyAGKAIAIRRBACEOIAAhCgNAAkAgCiAAQQAgEkF9aiIIIAggEksbQQJ0aiIVTw0AIAYoAgAhFyAMKAIAIQ0gFCgCACIWKAIIIREDQCANIBFPDQQgCigCACIIIBFPDQYgAiALQXxqIBYoAgQiDyANQQxsaigCCCAPIAhBDGxqKAIITSIZGyAOQQJ0aiAINgIAIAwoAgAiGCAXKAIAIhAoAggiCE8NByAKQQRqKAIAIg8gCE8NCCACIAtBeGogECgCBCIQIBhBDGxqKAIIIhggECAPQQxsaigCCE0iGhsgDiAZaiIZQQJ0aiAPNgIAIApBCGooAgAiDiAITw0JIAIgC0F0aiAYIBAgDkEMbGooAghNIhAbIBkgGmoiGEECdGogDjYCACAMKAIAIg8gFygCACIZKAIIIg5PDQogCkEMaigCACIIIA5PDQsgAiALQXBqIgsgGSgCBCIOIA9BDGxqKAIIIA4gCEEMbGooAghNIg4bIBggEGoiD0ECdGogCDYCACAPIA5qIQ4gCkEQaiIKIBVJDQALCwJAIAogACASQQJ0aiINTw0AIAwoAgAhECAUKAIAIhcoAgghDwNAIBAgD08NDCAKKAIAIgggD08NDSACIAtBfGoiCyAXKAIEIhEgEEEMbGooAgggESAIQQxsaigCCE0iERsgDkECdGogCDYCACAOIBFqIQ4gCkEEaiIKIA1JDQALCwJAIBIgAUYNACACIA5BAnRqIAooAgA2AgAgCkEEaiEKIA5BAWohDiALQXxqIQsgASESDAELCwJAIA5BAnQiEEUNACAAIAIgEPwKAAALIAEgDkYNEiAJIAVqIQogACAQaiELIAEgDmsiCCEPA0AgCyAKKAIANgIAIApBfGohCiALQQRqIQsgD0F/aiIPDQALIAEgDkkNCyAAIBBqIQBBACEFIAghASAIQSFJDREMAgsgACAPaiAQIAIgAyAEIAdBBGogBhCvASAIIQEgCEEhSQ0QDAELCyANIBFBzLiAARCzEQALIAggEUHcuIABELMRAAsgGCAIQcy4gAEQsxEACyAPIAhB3LiAARCzEQALIA4gCEHcuIABELMRAAsgDyAOQcy4gAEQsxEACyAIIA5B3LiAARCzEQALIBAgD0HMuIABELMRAAsgCCAPQdy4gAEQsxEACyAOIAFB+NSbARCjIAALIA4gCkHcuIABELMRAAsgCyAKQcy4gAEQsxEACyARIApB3LiAARCzEQALIBAgCkHcuIABELMRAAsgDiAKQcy4gAEQsxEACyAIQQJJDQAgAyAIQRBqSQ0BIAYoAgAhECAIQQF2IQwCQAJAAkAgCEEPSw0AIAhBB00NASAAIAIgECgCABDuBSAAIAxBAnQiCmogAiAKaiAQKAIAEO4FQQQhDQwCCyAAIAIgAiAIQQJ0aiIKIBAQiBsgACAMQQJ0IgtqIAIgC2ogCkEgaiAQEIgbQQghDQwBCyACIAAoAgA2AgAgAiAMQQJ0IgpqIAAgCmooAgA2AgBBASENC0EAIQogB0EANgIQQQAgDWshGSAAIA1BAnQiC2ohGiACIAtqIRUgByAMNgIUIAggDGshFyAHQRBqIRgDQCAKIRECQCANIBcgDCAYIApBAnRqKAIAIgobIgtPDQAgAiAKQQJ0IgpqIQ8gGSALaiEOIBogCmohCyAVIApqIQoDQCAKIAsoAgA2AgAgDyAKIBAQiQsgC0EEaiELIApBBGohCiAOQX9qIg4NAAsLQQEhCiARQQFxRQ0ACyACIAggACAQEOYGCyAHQSBqJAAPCwALkRgCBn8CfiMAQfACayICJAAgAiABEL4JIgM2AgQCQAJAAkAgA0HcAEcNACACQQhqQQhqIgQgASgCACIDQdgAaigCADYCACACIAMpAlA3AwggA0HQAGohBQJAIAEQmggNACACQeQAaiAFQQhqKAIANgIAIAJB0ABqQQhqIAQoAgA2AgAgAiACKQMINwNQIAIgBSkCADcCXCACQQo2AsABIAJBsAJqIAEoAgQgASgCCCACQdAAaiACQcABahDRDEHAAEUNAyAAIAJBsAJqQcAA/AoAAAwDCwJAIAEQvgkiBEH4//8AcUEwRg0AAkACQAJAAkACQAJAAkACQAJAIARB/v//AHFBOEYNAAJAIARB7wBKDQACQCAEQbB/ag4IBAMDDQMFAw0ACyAEQcQARg0MIARB5ABHDQIMDAsgBEGQf2oOCQIBAQsBAwELAwELIAMtAGVBAUcNBQsgARCaCBogAkGYAmpBFGogBUEIaigCADYCACACQZgCakEIaiIDIAJBCGpBCGooAgA2AgAgAiAFKQIANwKkAiACIAIpAwg3A5gCIAQQxRcNBSAEQf8ASw0GIARBUGpBCkkNBiAEQb9/akEaSQ0GIARBn39qQRpJDQYgBEH9AHFBPEYNBiAAIAIpA5gCNwIMIABBAjoAJCAAIAQ2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGoAmopAwA3AgAgAEEUaiACQaACaikDADcCAAwKCyACQbACaiABEMABIAIoArACIQECQEE4RQ0AIAJBwAFqIAJBtAJqQTj8CgAACyABQSJGDQEgAigC7AIhAwJAQThFDQAgAEEEaiACQcABakE4/AoAAAsgACADNgI8DAILIAJBsAJqIAEQuAsgAkHAAWpBCGoiASACQbACakEMaikCADcDACACQcABakEQaiIDIAJBsAJqQRRqKQIANwMAIAJBwAFqQRhqIgUgAkGwAmpBHGopAgA3AwAgAiACKQK0AjcDwAECQAJAIAIoArACIgRBIkYNACAAIAIpAtQCNwIkIABBPGogAkGwAmpBPGooAgA2AgAgAEE0aiACQbACakE0aikCADcCACAAQSxqIAJBsAJqQSxqKQIANwIAIABBHGogBSkDADcCACAAQRRqIAMpAwA3AgAgAEEMaiABKQMANwIAIAAgAikDwAE3AgQMAQsgAkHoAGpBCGoiBiABKQMANwMAIAJB6ABqQRBqIAMpAwAiCDcDACACQegAakEYaiAFKQMAIgk3AwAgAkHoAGpBDGogAkEIakEIaigCADYCACACIAIpA8ABNwNoIABBgoCAgHg2AgQgAEEYaiAINwIAIABBIGogCTcCACACIAIpAwg3AmwgACACKQNoNwIIIABBEGogBikDADcCAAsgACAENgIADAgLAkBBOEUiAw0AIAJBiAFqIAJBwAFqQTj8CgAACyACQawBaiACQRBqKAIANgIAIAIgAikDCDcCpAEgAw0AIABBBGogAkGIAWpBOPwKAAALIAAgATYCAAwGCyACQdAAaiABEK8MIAJBOGpBFGogAkHQAGpBFGooAgA2AgAgAkE4akEIaiACQQhqQQhqKAIANgIAIAIgAikCXDcCRCACIAIpAwg3AzggAkEgNgLAASACQbACaiABKAIEIAEoAgggAkE4aiACQcABahDRDEHAAEUNBSAAIAJBsAJqQcAA/AoAAAwFCyAAIAIpA5gCNwIMIABBAToAJCAAIAQ2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGoAmopAwA3AgAgAEEUaiADKQMANwIADAQLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBEHtAEoNAAJAIARBRGoOBw0CDgICCQwACyAEQZ9/ag4GAgoBAQEDAQsCQCAEQY5/ag4JBgEEAQcBAQEJAAsgBEHuAEYNBAsgAkELNgLAASACQbACaiABKAIEIAEoAgggAkGYAmogAkHAAWoQ0QxBwABFDREgACACQbACakHAAPwKAAAMEQsgACACKQOYAjcCDCAAQQY7ASQgAEEHNgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBqAJqKQMANwIAIABBFGogAkGgAmopAwA3AgAMEAsgACACKQOYAjcCDCAAQYYCOwEkIABBDDYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQagCaikDADcCACAAQRRqIAJBoAJqKQMANwIADA8LIAAgAikDmAI3AgwgAEGGBDsBJCAAQQk2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGoAmopAwA3AgAgAEEUaiACQaACaikDADcCAAwOCyAAIAIpA5gCNwIMIABBhgY7ASQgAEEKNgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBqAJqKQMANwIAIABBFGogAkGgAmopAwA3AgAMDQsgACACKQOYAjcCDCAAQYYIOwEkIABBDTYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQagCaikDADcCACAAQRRqIAJBoAJqKQMANwIADAwLIAAgAikDmAI3AgwgAEGGCjsBJCAAQQs2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGoAmopAwA3AgAgAEEUaiACQaACaikDADcCAAwLCyAAIAIpA5gCNwIIIABBAjoAICAAQqKAgICwgICAgH83AgAgAEEYaiACQZgCakEQaikDADcCACAAQRBqIAJBoAJqKQMANwIADAoLIAAgAikDmAI3AgggAEEDOgAgIABCooCAgLCAgICAfzcCACAAQRhqIAJBmAJqQRBqKQMANwIAIABBEGogAkGgAmopAwA3AgAMCQsgAkHAAWpBEGoiBCACQZgCakEQaikDADcDACACQcABakEIaiIGIAJBmAJqQQhqKQMANwMAIAIgAikDmAI3A8ABQQQhAyAFKAIAIAEoAghGDQQgARC+CUH7AEcNBCACQbACaiABIAJBCGoQlQMgAi0AtAIhASACKAKwAiIHQSJGDQMCQEE7RQ0AIABBBWogAkGwAmpBBWpBO/wKAAALIAAgAToABCAAIAc2AgAMCAsgACACKQOYAjcCCCAAQQU6ACAgAEKigICAsICAgIB/NwIAIABBGGogAkGYAmpBEGopAwA3AgAgAEEQaiACQaACaikDADcCAAwHCyAAIAIpA5gCNwIIIABBCDoAICAAQqKAgICwgICAgH83AgAgAEEYaiACQZgCakEQaikDADcCACAAQRBqIAJBmAJqQQhqKQMANwIADAYLIAAgAikDmAI3AgggAEEJOgAgIABCooCAgLCAgICAfzcCACAAQRhqIAJBmAJqQRBqKQMANwIAIABBEGogAkGgAmopAwA3AgAMBQsgAUH/AXFBDEYNACACQdQBaiAFQQhqKAIANgIAIAIgBSkCADcCzAEgASEDCyAAIAIpA8ABNwIIIAAgAzoAICAAQqKAgICwgICAgH83AgAgAEEYaiAEKQMANwIAIABBEGogBikDADcCAAwDCwJAIAMtAGUNACACQdAAaiABEK8MIAJBOGpBFGogAkHQAGpBFGooAgA2AgAgAkE4akEIaiACQQhqQQhqKAIANgIAIAIgAikCXDcCRCACIAIpAwg3AzggAkEgNgLAASACQbACaiABKAIEIAEoAgggAkE4aiACQcABahDRDEHAAEUNAyAAIAJBsAJqQcAA/AoAAAwDCyACQRhqIAEQmQUgAkEkaiACQQhqQQhqKAIANgIAIABCooCAgKCAgICAfzcCACAAQRhqIAJBGGpBEGopAgA3AgAgAEEgaiACQRhqQRhqKQIANwIAIAIgAikDCDcCHCAAIAIpAhg3AgggAEEQaiACQRhqQQhqKQIANwIADAILIAJBADYCsAIgAkEEakGgh4UBIAJBsAJqQaSHhQEQtBkACyACQfgBaiABEN0JIAJB+AFqQQhqIgEgAkEIakEIaigCADYCACAAQqKAgIDQgICAgH83AgAgACACKQMIIgg3AgggAEEYaiACQfgBakEQaikDADcCACAAQSBqIAJB+AFqQRhqKAIANgIAIABBEGogASkDADcCACACIAg3A/gBCyACQfACaiQAC48XAhZ/AX4jAEGAAWsiAyQAIANBBjYCJEG4iIABIQQgA0G4iIABNgIgIANBlYCAgHg2AgggAyABIAJBBXRqIgU2AhwgA0HgAGpBBHIhBiADQfQAaiEHIANB0ABqQQRyIQggA0HAAGpBBHIhCSADQeAAakEQaiEKIANBCGpBBHIhC0EGIQJBAiEMQQQhDUECIQ5BAiEPQQIhEEECIREDQCACQQN0IRICQAJAAkACQAJAAkACQAJAAkADQAJAAkACQAJAIAEgBUYNACADQeAAaiETIAEoAgAiAkGVgICAeEYNA0EIIRQCQAJAAkACQCACQYCAgIB4cyICQRUgAkEVSRsiAkF0ag4EAwIAAQcLIANB0ABqIAEoAgggASgCDBDFBCADKAJQDQYMBAsgA0HQAGogASgCBCABKAIIEMUEIAMoAlBFDQMMBQtBCCECQQQhFAsgASACaigCACEVIAEgFGooAgAhFgwCCyAAIAxBAXE6AAUgACAOQQFxOgAEIAAgD0EBcToAAyAAIBBBAXE6AAIgACARQQFxOgABQQAhAiAAQQAgDSANQf8BcUEERhs6AAYgAyABNgIYDAsLIAMoAlghFSADKAJUIRYLIBIhFCAEIQIDQCAURQ0BIBRBeGohFCACKAIEIRcgAigCACEYIAJBCGohAiAYIBcgFiAVEJscRQ0ACyADQeAAakEYaiABQRhqKQMANwMAIAogAUEQaikDADcDACADQeAAakEIaiABQQhqKQMANwMAIAMgASkDADcDYCABIRMLIAFBIGohASATQZWAgIB4NgIAAkACQCADKAJgQZWAgIB4Rg0AIAMgATYCGCADKAJkIRcgAygCaCECIAMoAmwhGCADKAJgIRQgA0EIahCZHiADQQhqQQhqIApBCGopAwA3AwAgAyAKKQMANwMIAkACQAJAAkACQAJAAkACQAJAIBRBgICAgHhzIhRBFSAUQRVJG0F/ag4PAQAAAgAAAAAAAAADBAUGAAsgA0HgAGogA0HAAGpB+ICAARDqGiECIANBAToAUCADIAI2AlQMBwsgA0EAOgBQIAMgF0H/AXEiAkEGIAJBBkkbOgBRDAULIANBADoAUCADIBitQiCGIAKthCIZQgYgGUIGVBs8AFEMBAsgA0HQAGogAiAYEP4NIBcgAhCOIAwECyADQdAAaiAXIAIQ/g0MAgsgA0HQAGogAiAYEOYCIBcgAhCOIAwCCyADQdAAaiAXIAIQ5gILIANB4ABqEOYRCwJAIAMtAFBFDQAgAygCVCECDAoLAkACQAJAAkACQAJAAkACQAJAIAMtAFEOBwECAwQFBgABCyADKAIIIQIgA0GVgICAeDYCCCACQZWAgIB4Rg0HIAYgCykCADcCACAGQQhqIAtBCGooAgA2AgAgAyACNgJgIANB4ABqEOYRDBMLAkAgEUH/AXFBAkYNAEGohoABQRQQ1BIhAgwRCyADQeAAaiADQQhqEKUNIAMtAGANBSADLQBhIREMEgsCQCAQQf8BcUECRg0AQbyGgAFBFRDUEiECDBALIANB4ABqIANBCGoQpQ0gAy0AYA0EIAMtAGEhEAwRCwJAIA9B/wFxQQJGDQBB0YaAAUEVENQSIQIMDwsgAygCCCECIANBlYCAgHg2AggCQCACQZWAgIB4Rg0AIAMoAhQhASADKAIQIRcgAygCDCEUIAJBgICAgHhzIhhBFSAYQRVJGyIYQXRqQQJJDQcCQCAYQRVGDQAgAyABNgJcIAMgFzYCWCADIBQ2AlQgAyACNgJQIANB4ABqIANB0ABqEMEIIAMgA0HgAGpB0ICAAUGwgIABEOgRNgIsIANBAToAKCADQdAAahDmEQwOCyADIAI2AjggAyAUNgIwIAMgFDYCNCADIBQgF0EFdGo2AjwCQAJAAkACQCAXRQ0AIAMgFEEgaiICNgI0IBQoAgAiGEGVgICAeEYNACAJIBQpAgQ3AgAgCUEIaiAUQQxqKAIANgIAIANB0ABqQQhqIBRBGGopAgA3AwAgAyAYNgJAIAMgFCkCEDcDUCAXQQFHDQEgA0GVgICAeDYCYAwCCyADQQs6AGAgAyADQeAAakGogIABEOcRNgIsIANBAToAKAwPCyADQeAAakEIaiACQQhqKQMANwMAIAogAkEQaikDADcDACADQeAAakEYaiACQRhqKQMANwMAIAMgFEHAAGo2AjQgAyACKQMAIhk3A2AgGadBlYCAgHhHDQELIANB4ABqEJoeIANB4ABqQQhqIANBwABqQQhqKQMANwMAIAcgCCkCADcCACAHQQhqIAhBCGooAgA2AgAgAyADKQNANwNgIAMoAlAhAiADQTBqEKwXIAMgAjYCcCADQShqIANB4ABqEN4GDA4LIANB4ABqEJoeIANBCzoAYCADIANB4ABqQaiAgAEQ5xE2AiwgA0EBOgAoIANB0ABqEOYRIANBwABqEOYRDAwLQeGNgAFBEBCrGCECIANBAToAKCADIAI2AiwMDAsCQCAOQf8BcUECRg0AQeaGgAFBDRDUEiECDA4LIANB4ABqIANBCGoQpQ0gAy0AYA0CIAMtAGEhDgwPCwJAIA1B/wFxQQRGDQBB84aAAUEYENQSIQIMDQsgAygCCCECIANBlYCAgHg2AggCQCACQZWAgIB4Rg0AIAMoAhQhASADKAIQIRcgAygCDCEUIAJBgICAgHhzIhhBFSAYQRVJGyIYQXRqQQJJDQcCQCAYQRVGDQAgAyABNgJcIAMgFzYCWCADIBQ2AlQgAyACNgJQIANB4ABqIANB0ABqEMEIIAMgA0HgAGpB0ICAAUGwgIABEOgRNgIsIANBAToAKCADQdAAahDmEQwKCyADIAI2AjggAyAUNgIwIAMgFDYCNCADIBQgF0EFdGo2AjwCQAJAAkACQCAXRQ0AIAMgFEEgaiICNgI0IBQoAgAiGEGVgICAeEYNACAJIBQpAgQ3AgAgCUEIaiAUQQxqKAIANgIAIANB0ABqQQhqIBRBGGopAgA3AwAgAyAYNgJAIAMgFCkCEDcDUCAXQQFHDQEgA0GVgICAeDYCYAwCCyADQQs6AGAgAyADQeAAakGogIABEOcRNgIsIANBAToAKAwLCyADQeAAakEIaiACQQhqKQMANwMAIAogAkEQaikDADcDACADQeAAakEYaiACQRhqKQMANwMAIAMgFEHAAGo2AjQgAyACKQMAIhk3A2AgGadBlYCAgHhHDQELIANB4ABqEJoeIANB4ABqQQhqIANBwABqQQhqKQMANwMAIAcgCCkCADcCACAHQQhqIAhBCGooAgA2AgAgAyADKQNANwNgIAMoAlAhAiADQTBqEKwXIAMgAjYCcCADQShqIANB4ABqEMYGDAoLIANB4ABqEJoeIANBCzoAYCADIANB4ABqQaiAgAEQ5xE2AiwgA0EBOgAoIANB0ABqEOYRIANBwABqEOYRDAgLQeGNgAFBEBCrGCECIANBAToAKCADIAI2AiwMCAsCQCAMQf8BcUECRg0AQYuHgAFBDxDUEiECDAwLIANB4ABqIANBCGoQpQ0gAy0AYA0AIAMtAGEhDAwNCyADKAJkIQIMCgtB4Y2AAUEQEKsYIQIMCQsgA0HgAGoQmh4MAQsLIANBlYCAgHg2AnAgAyABNgJsIAMgFzYCaCADIBQ2AmQgAyACNgJgIANBKGogA0HgAGoQ3gYMBAsgA0GVgICAeDYCcCADIAE2AmwgAyAXNgJoIAMgFDYCZCADIAI2AmAgA0EoaiADQeAAahDGBgwBCyADQTBqEKwXCyADLQAoDQIgAy0AKSENDAULIANBMGoQrBcLIAMtACgNACADLQApIQ8MAwsgAygCLCECCyAAIAI2AgRBASECCyAAIAI6AAAgA0EIahCZHiADQYABaiQADwsgAygCJCECIAMoAiAhBCADKAIcIQUgAygCGCEBDAALC60WAhN/AX4jAEGQAmsiAiQAIAJBADYCJCACQoCAgIDAADcCHCACQYCAgIB4NgIoIAEoAgghAyABKAIEIQQgAiABKAIANgI8IAIgBDYCOCACIAQ2AjQgAiAEIANBHGxqNgJAAkACQAJAAkAgAw0AIAJBNGoQsxUMAQsgAkGMAWpBBGohBSACQcQAakEEaiEGQQQhB0EAIQgCQAJAAkACQANAIAQiAUEcaiEEIAEoAgAiA0EIRg0BIAYgASkCBDcCACAGQRBqIAFBFGopAgA3AgAgBkEIaiABQQxqKQIANwIAIAIgAzYCRCACQeAAakEQaiIDIAJBxABqQRBqKQIANwMAIAJB4ABqQQhqIgkgAkHEAGpBCGopAgA3AwAgAikCRCEVIAJBADYCRCACIBU3A2AQ3xIhASACKAJcIQogAiABNgJcIAJBxABqEPUdAkACQAJAAkACQAJAAkACQAJAAkACQCACKAJgDgcFAQQEBAQABAsgAigCbCEBIAIoAmghAyACIAIoAmQ2AoQBIAIgAzYCfCACIAMgAUEcbGoiCzYCiAEgAQ0CIAIgAzYCgAEgAkH8AGoQsxUMAQsgAigCaCEBIAIoAmQhAwJAAkAgAigCKEGAgICAeEYNACACQShqIAMgAyABahCKFAwBCyABQX9MDQUCQAJAIAENAEEBIQkMAQtBAC0AwPGdARogARCFASIJRQ0NCwJAIAFFDQAgCSADIAH8CgAACyACIAE2AjAgAiAJNgIsIAIgATYCKAsgAUUNACADIAFBARCeEgsgCkE0QQQQnhIMBwsDQCADIgEoAgAiDEEIRg0FIAVBEGogAUEUaiIJKQIANwIAIAVBCGogAUEMaiINKQIANwIAIAUgAUEEaikCADcCACACKAKQASEOIAIoApQBIQMgAkGoAWpBCGoiDyAJKAIANgIAIAJBADYCjAEgAiANKQIANwOoARDfEiEJIAIoAqQBIQ0gAiAJNgKkASACQYwBahD1HQJAAkAgDEEBRw0AAkACQCACKAIoQYCAgIB4Rg0AIAJBKGogDiAOIANqEIoUDAELIANBf0wNBwJAAkAgAw0AQQEhCQwBC0EALQDA8Z0BGiADEIUBIglFDQ4LAkAgA0UNACAJIA4gA/wKAAALIAIgAzYCMCACIAk2AiwgAiADNgIoCwJAIANFDQAgDiADQQEQnhILIA1BNEEEEJ4SDAELIAJBuAFqQQhqIgsgDygCADYCACACIAIpA6gBNwO4ASACKAIoIQkgAkGAgICAeDYCKAJAIAlBgICAgHhGDQAgAiACKQIsNwLMASACIAk2AsgBIAJBEGogAkHIAWpB9MWFARDyEAJAAkAgAigCFCIJRQ0AQQEhDyACKAIQIhAgCRDEDiERIAkhEgwBC0EAIQ8Q3xIhEQsCQCAIIAIoAhxHDQAgAkEcakGkxoUBEP4VIAIoAiAhBwsgByAIQRxsaiIJIBI2AgggCSAQNgIEIAkgDzYCACAJIAIpAtQBNwIMIAlBFGogAkHUAWpBCGooAgA2AgAgCSARNgIYIAIgCEEBaiIINgIkCwJAIAggAigCHEcNACACQRxqQbTGhQEQ/hULIAIoAiAiByAIQRxsaiIJIAM2AgggCSAONgIEIAkgDDYCACAJIAIpA7gBNwIMIAkgDTYCGCAJQRRqIAsoAgA2AgAgAiAIQQFqIgg2AiQgAigCiAEhCwsgAUEcaiIDIAtHDQAMBQsLIAJB4AFqQRBqIgwgAykDADcDACACQeABakEIaiIDIAkpAwA3AwAgAiACKQNgNwPgASACKAIoIQEgAkGAgICAeDYCKAJAIAFBgICAgHhGDQAgAiACKQIsNwL8ASACIAE2AvgBIAJBCGogAkH4AWpB9MWFARDyEAJAAkAgAigCDCIBRQ0AQQEhCSACKAIIIhMgARDEDiEOIAEhFAwBC0EAIQkQ3xIhDgsCQCAIIAIoAhxHDQAgAkEcakHExoUBEP4VIAIoAiAhBwsgByAIQRxsaiIBIBQ2AgggASATNgIEIAEgCTYCACABIAIpAnw3AgwgAUEUaiACQfwAakEIaigCADYCACABIA42AhggAiAIQQFqIgg2AiQLAkAgCCACKAIcRw0AIAJBHGpB1MaFARD+FQsgAigCICIHIAhBHGxqIgEgAikD4AE3AgAgASAKNgIYIAFBCGogAykDADcCACABQRBqIAwpAwA3AgAgAiAIQQFqIgg2AiQMBQsgCkE0QQQQnhIMAwtBvOCbARDTGQALQbzgmwEQ0xkACyACIAFBHGo2AoABIAIoAmAhASACQfwAahCzFSAKQTRBBBCeEiABQQFGDQEgAUEGRg0BCyACQeAAahDMCgsgBCACKAJARw0ACwsgAiAENgI4IAIoAighASACKQIsIRUgAkE0ahCzFQJAIAFBgICAgHhGDQAgAiAVNwKIAiACIAE2AoQCIAIgAkGEAmpB9MWFARDyEAJAAkAgAigCBCIDRQ0AQQEhBSACKAIAIgkgAxDEDiEMDAELQQAhBRDfEiEMCwJAIAggAigCHEcNACACQRxqQYTGhQEQ/hUgAigCICEHCyAHIAhBHGxqIgEgAzYCCCABIAk2AgQgASAFNgIAIAEgAikCYDcCDCABQRRqIAJB6ABqKAIANgIAIAEgDDYCGCACIAhBAWoiCDYCJAsCQAJAIAgOAgUAAQsgAkEANgIkIAIoAiAiASgCACIDQQhGDQMgACADNgIAIAAgASkCBDcCBCAAQQxqIAFBDGopAgA3AgAgAEEUaiABQRRqKQIANwIADAULIAIoAiAiEUEYaiEFIBEgCEEcbCIEaiESQQAhEEEBIQdBASEKQQAhFEEBIQxBACETQQAhD0EAIQNBASEOQQEhC0EBIQ0DQCAMIQYgBSgCACEBIA5BAXEhCUEAIQ4CQCAJRQ0AIAEtADAhDgtBACEJQQAhDAJAIAEoAhBBAUcNAEEAIQwgBkEBcUUNAEF/IAEoAhQiDCATaiIGIAYgDEkbIRNBASEMCwJAIAtBAXFFDQAgAS0AMSEJCyAJIQsgASgCLCEJIA1BAXEhBkEAIQ0CQCAGRQ0AIAEtADIhDQsgAyAJaiEJAkAgB0EBcUUNAEEAIQcgASgCAEUNAEF/IBAgASgCBGoiBiAGIBBJGyEQQQEhBwsgASgCGCEGIAkgA0khAwJAIApBAXFFDQBBACEKIAEoAghFDQAgASgCDCAUaiIBIBRPIQogASEUCyAGIA9yIQ9BfyAJIAMbIQMgBUEcaiEFIARBZGoiBA0ACyAIQRxsIQUgDUEBcSEEIAtBAXEhCyAOQQFxIQZBACEJQQAhDgJAA0AgBUUNASARKAIYIgEoAiQgCXIhCSABKAIcIA5yIQ4gASgCCEEBRw0BIAVBZGohBSARQRxqIREgASgCDEUNAAsLIAhBZGwhCEEAIQVBACENAkADQCAIRQ0BIBJBfGooAgAiASgCKCAFciEFIAEoAiAgDXIhDSABKAIIQQFHDQEgCEEcaiEIIBJBZGohEiABKAIMRQ0ACwtBAC0AwPGdARpBNBCFASIBDQELAAsgASAEOgAyIAEgCzoAMSABIAY6ADAgASADNgIsIAEgBTYCKCABIAk2AiQgASANNgIgIAEgDjYCHCABIA82AhggASATNgIUIAEgDDYCECABIBQ2AgwgASAKNgIIIAEgEDYCBCABIAc2AgAgACACKQIcNwIEIABBDGogAkEkaigCADYCACAAIAE2AhggAEEGNgIADAMLQZTGhQEQmyAACyAAEN8SNgIYIABBADYCAAsgAkEcahDpFwsgAkGQAmokAAusFQIRfwN+IwBBwABrIgIkAAJAAkACQAJAAkACQAJAIAEoAgBBAUcNAAJAAkAgASgCaCABKAIEIgNHDQAgASgCWCEEIAEoAlwhBQwBCyABKAJgIAMgASgCbGsiBmohBCABKAJkIAZrIQULIAEgA0EBaiIGNgJoIAEgBUF/aiIHNgJcIAEgBEEBajYCWAJAIAdFDQBBACEIQQAhBkEAIQlBACEKA0AgAyAGaiILQQFqIQwCQAJAAkACQAJAIAQgBmoiDUEBai0AACIOQYCAxAAgDsAiD0F/ShtBdmoOBAEAAAEACyAFIAhqIRAgCUEBcSERQQAhCSARDQMCQAJAAkACQCAOQaV/ag4DAQYCAAsgDkEvRg0CDAULQQEhCgwEC0EAIQoMAwsgCkEBcSEOQQEhCiAODQIgASALQQJqNgJoIAEgEEF+aiIGNgJcIAEgDUECaiIINgJYIAZFDQEgCCwAACIGQQBIDQEgBkHAp5kBai0AAEEBRw0BIAJBKGogARC2AiACKAIsIQYgAigCKCIIQYGAgIB4Rg0HIAEoAnRBCGogBiACKAIwEMsDIRMCQCAIQYCAgIB4Rg0AIAggBhCOIAsgAiATNwMQIAIgAkEQahD+EUEAIQoCQAJAIAIoAgQiBg0AQYj7nAEhC0EAIQlBACENDAELIAIoAgAiCCAGaiEFQYj7nAEhCyACQThqIRJBACEJQQAhEEEAIQ0DQAJAAkAgCCwAACIGQX9MDQAgCEEBaiEIIAZB/wFxIQ4MAQsgCC0AAUE/cSEOIAZBH3EhEQJAIAZBX0sNACARQQZ0IA5yIQ4gCEECaiEIDAELIA5BBnQgCC0AAkE/cXIhDgJAIAZBcE8NACAOIBFBDHRyIQ4gCEEDaiEIDAELIA5BBnQgCC0AA0E/cXIgEUESdEGAgPAAcXIiDkGAgMQARg0CIAhBBGohCAsgAiAJNgI0IAIgEDYCMCACIA02AiwgAiALNgIoIAIgDjYCOEEAIQdBACEGAkAgDkGcf2oiCUEVSw0AQQAhBkEBIAl0QamEmgFxRQ0AIA4hBgsgC0F4aiERIA0gBkHdy92eeWxBD3ciDnEhCSAOQRl2Ig+tQoGChIiQoMCAAX4hFAJAAkACQANAAkAgCyAJaikAACIVIBSFIhNCf4UgE0L//fv379+//358g0KAgYKEiJCgwIB/gyITUA0AA0AgESATeqdBA3YgCWogDXEiBEEDdGsoAgAgBkYNAyATQn98IBODIhNQRQ0ACwsCQCAVIBVCAYaDQoCBgoSIkKDAgH+DUEUNACAJIAdBCGoiB2ogDXEhCQwBCwsCQCAQDQAgAkEoaiASEKgCGgsgBkGAgMQARg0BAkAgAigCKCIJIAIoAiwiCyAOcSIOaikAAEKAgYKEiJCgwIB/gyITQgBSDQBBCCENA0AgDiANaiEOIA1BCGohDSAJIA4gC3EiDmopAABCgIGChIiQoMCAf4MiE1ANAAsLAkAgCSATeqdBA3YgDmogC3EiDmosAAAiDUEASA0AIAkgCSkDAEKAgYKEiJCgwIB/g3qnQQN2Ig5qLQAAIQ0LIAkgDmogDzoAACAJIA5BeGogC3FqQQhqIA86AAAgCSAOQQN0ayIOQXxqQQE2AgAgDkF4aiAGNgIAIAIgAigCMCANQQFxazYCMCACKAI0QQFqIQkMAgsgC0EAIARrQQN0aiEOCyAOQXxqIgYgBigCAEEBajYCACACKAI0IQkLIAIoAjAhECACKAIsIQ0gAigCKCELIAggBUcNAAsLIAtBeGohCEEAIQYCQAJAA0ACQCALIAZqKQAAIhNCgIGChIiQoMCAf4MiFUKAgYKEiJCgwIB/hSATQv/9+/fv37//fnyDIhRQDQADQCAIIBR6p0EDdiAGaiANcSIOQQN0aygCAEUNAyAUQn98IBSDIhRQRQ0ACwsgFSATQgGGg1BFDQIgBiAKQQhqIgpqIA1xIQYMAAsLIAsgDkEDdEEDdSIGaiIIQYB/QX8gCCkAACITIBNCAYaDQoCBgoSIkKDAgH+DeqdBA3YgCyAGQXhqIA1xaiIGKQAAIhMgE0IBhoNCgIGChIiQoMCAf4N5p0EDdmpBB0sbIgg6AAAgBkEIaiAIOgAAIAEoAmghBiACQfSAgIB4NgIoIAEgAyAGIAJBKGoQohMgCUF/aiEJCyALQQhqIQYgCykDAEJ/hUKAgYKEiJCgwIB/gyEUIAshCAJAA0AgCUUNASAUIRMCQCAUQgBSDQADQCAIQUBqIQggBikDACETIAZBCGoiDiEGIBNCgIGChIiQoMCAf4MiE0KAgYKEiJCgwIB/UQ0ACyATQoCBgoSIkKDAgH+FIRMgDiEGCyAJQX9qIQkgE0J/fCATgyEUIAggE3qnQfgAcWsiDkF8aigCAEECSQ0ACyABKAJoIQYgDkF4aigCACEIIAJB84CAgHg2AiggAiAINgIsIAEgAyAGIAJBKGoQohMLAkAgDUUNACANIA1BA3RBD2pBeHEiBmpBCWoiCEUNACALIAZrIAhBCBCeEgsgAikDECITQgODQgBSDQEgE6ciBiAGKAIAIghBf2o2AgAgCEEBRw0BIAYgBigCEBDBGwwBCyACQZ6AgIB4NgIoIAMgDCACQShqEIUVIQYMBgsCQCABKAIIQQpGDQAgAUEIahDECAsgASAMNgIMIAFBBjYCCCABKAJoIQRBwwAhDwwJCyAPQdwARiEJCyABIAtBAmo2AmggASAQQX5qNgJcIAEgDUECajYCWCAIQX9qIQggByAGQQFqIgZHDQALIAMgBmpBAWohBgsgAkGegICAeDYCKCADIAYgAkEoahCFFSEGDAELIAFBADoAHAJAIAEoAlwNACABQQA6AIMBIAEoAmghAwwDCwJAA0AgASABKAJYLQAAQQJ0QYDumQFqKAIAEQQAIQggASgCXCEGIAhFDQEgBg0ACwsgAUEAOgCDASABKAJoIQMgBkUNAiACQQhqIAEgASgCWC0AAEECdEHs5ZkBaigCABEHACACLQAIQQFxRQ0BIAIoAgwhBgsCQCABKAIIQQpGDQAgAUEIahDECAsgASAGNgIMIAFBCTYCCCABKAJoIQRBogEhDwwDCyABKAJoIQQgAi0ACSIPQaMBRw0CDAELIAEoAmghBAsgARCzBUGjASEPDAELIAEoAiBBgICAgHhGDQAgASgCNCEIIAFBADYCNCABKAIwIQYgAkEANgIgIAIgCDYCHCACIAFBLGo2AhggAiAGIAhBGGwiC2oiBTYCFAJAIAhFDQAgAUEgaiERIAEoAigiDkEFdCEJA0AgAkEoakEQaiINIAZBEGopAwA3AwAgAkEoakEIaiIQIAZBCGopAwA3AwAgAiAGKQMANwMoAkAgDiARKAIARw0AIBFB9KmZARCwFgsgBkEYaiEGIAEoAiQgCWoiCCACKQMoNwMAIAhBEGogDSkDADcDACAIQQhqIBApAwA3AwAgCEEcakEAOgAAIAhBGGogAzYCACABIA5BAWoiDjYCKCAJQSBqIQkgC0FoaiILDQALIAUhBgsgAiAGNgIQIAJBEGoQsQkLIAEgDzoAHSAAIA86AAggACAENgIEIAAgAzYCACABIAEoAmg2AhggACABLQAcOgAJIAJBwABqJAALpRcDBX8CfgJ8IwBB4AFrIgQkACACKAIEIQUgBEHIAWogASACKAIAIgZBABCVAgJAAkAgBC0AyAFBBEYNACAEKQPIASIJQv8Bg0IEUQ0AIAAgCTcCAAwBCyACQQhqIQcgAikDECEJAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKwMIIguZIgxEAAAAAAAA8H9iDQAgCVANAQsCQCAGRQ0AIARByAFqIAEgBhC0GiAELQDIAUEERg0AIAQpA8gBIgpC/wGDQgRSDQILIAJBEGohAiABLQBdDQIgCVANAyAEQegAaiACEP4RIAQoAmxBA0kNESABLQBiQf8BcUECSQ0EDBELIARByAFqIAcQ3g8gBEGoAWogASAGIAUgBCgCzAEiAiAEKALQARC/DSAELQCoAUEERg0GIAQpA6gBIglC/wGDQgRRDQYgACAJNwIAIAQoAsgBIAIQlyIMGAsgACAKNwIADBQLAkAgDEQAAAAAAADwf2INACAJUEUNBAsgBCALOQOAASALIAudoUQAAAAAAAAAAGINAiAMRAAAAAAAAPBDZUUNAiAEIAz8ByIJNwOIASAJQugHgiEKIAlCgK3iBFQNAiAKQgBRDQIgBEECNgLcASAEQfzWmAE2AtgBIARBAjYCzAEgBEH08JoBNgLIASAEQQI2AtQBIARBkgU2ArQBIARBCTYCrAEgBCALvSIJQj+IPgKYASAEQeeWmwFBASAJQgBTGzYClAEgBCAEQagBajYC0AEgBCAEQYgBajYCsAEgBCAEQZQBajYCqAEgBEHwAGogBEHIAWoQhBVBACEDDAoLIARByAFqIAcQ3g9BAEEBEJciIAQoAsgBIQYgBEHIAWogAUEAQQAgBCgCzAEiAiAEKALQASIFEL8NIAQtAMgBQQRGDQogBCkDyAEiCUL/AYNCBFENCiAAIAk3AgAMDAsgBEHgAGogAhD+ESAEKAJkIgZBAU0NAwJAIAQoAmAvAAAiBkGwhAFGDQAgBkGwngFGDQAgBkGw3gFGDQAgBkGwxAFHDQ0LAkAgDEQAAAAAAADwf2ENACAEQcgBaiAHEN4PQQBBARCXIiAEKALIASEGIARByAFqIAFBAEEAIAQoAswBIgIgBCgC0AEiBRC/DSAELQDIAUEERg0KIAQpA8gBIglC/wGDQgRRDQogACAJNwIADAwLIARB2ABqIAIQ/hFBACEFIARByAFqIAFBAEEAIAQoAlggBCgCXBC/DSAELQDIAUEERg0HIAQpA8gBIglC/wGDQgRSDQQMBgsgBEGUAWogBEGAAWoQzRAgBCgCmAEhBwJAAkAgBCgCnAEiCEEBSw0AQePEmwFBASAHIAgQmRwNAQwGCwJAIAhBB0sNACAIIQIgByEGA0AgAkUNByACQX9qIQIgBi0AACEFIAZBAWohBiAFQS5HDQAMAgsLIARBIGpBLiAHIAgQkAkgBCgCIEEBRw0FC0EAIQMMBAsgBEEoaiACEP4RQQAhBSAEQcgBaiABQQBBACAEKAIoIAQoAiwQvw0gBC0AyAFBBEYNBSAEKQPIASIJQv8Bg0IEUQ0EIAAgCTcCAAwPCyAEKALIASACEJciIABBBDsBAAwRC0ECIAZBvMmbARCPIAALIAAgCTcCAAwMCyAEQRhqIAcgCEGs15gBQQIQmhsCQAJAIAQoAhgiAkUNACAEKAIcIQYgBCACNgKgASAEIAY2AqQBAkAgAiAGEPYYIgVBAksNACAEQQE2AswBIARBsNeYATYCyAEgBEIBNwLUASAEQQk2AqwBIAQgBEGoAWo2AtABIAQgBEGgAWo2AqgBIARB8ABqIARByAFqEIQVDAILIARBEGogAiAGIAVBuNeYARDpFCAEIAQpAxA3ArwBIARBDjYCtAEgBEEJNgKsASAEQQI2AswBIARBzNeYATYCyAEgBEICNwLUASAEIAY2AsQBIAQgBEHEAWo2ArABIAQgBEG8AWo2AqgBIAQgBEGoAWo2AtABIARB8ABqIARByAFqEIQVDAELIARBCGogByAIQdzXmAFBAxCaGwJAIAQoAggiAkUNACAEKAIMIQYgBCACNgKgASAEIAY2AqQBAkAgAiAGEPYYIgVBAksNACAEQQE2AswBIARB5NeYATYCyAEgBEIBNwLUASAEQQk2AqwBIAQgBEGoAWo2AtABIAQgBEGgAWo2AqgBIARB8ABqIARByAFqEIQVDAILIAQgAiAGIAVB7NeYARDpFCAEIAQpAwA3ArwBIARBDjYCtAEgBEEJNgKsASAEQQI2AswBIARB/NeYATYCyAEgBEICNwLUASAEIAY2AsQBIAQgBEHEAWo2ArABIAQgBEG8AWo2AqgBIAQgBEGoAWo2AtABIARB8ABqIARByAFqEIQVDAELAkAgByAIQYzYmAFBAxCxG0UNAEEDIQICQCAIQQNJDQAgCEF9aiEFIAcgCGpBfGohBkEAIQIDQAJAAkAgBSACRg0AIAYtAABBMEYNASACIQULIAVBA2ohAgwCCyAGQX9qIQYgAkEBaiECDAALCyAEIAI2ArwBAkACQAJAIAggAkkNACAIIAJrIQYCQCAIIAJGDQAgBiAITw0AIAcgBmosAABBv39MDQILIAQgBjYCnAELIARBlAFqQeUAEOgJQQAhAyAEQQA2ArABIARCgICAgBA3AqgBIARBkNCYATYCzAEgBEKggICADjcC0AEgBCAEQagBajYCyAEgBEG8AWogBEHIAWoQnCANASAEKAKoASECIARBlAFqIAQoAqwBIgYgBCgCsAEQxR8gAiAGEI4gDAILQeTRmAFBMEGU0pgBEN0XAAtB+M+bAUE3IARB8ABqQajQmAFBsNCbARDoDwALIARB8ABqQQhqIARBlAFqQQhqKAIANgIAIAQgBCkClAE3A3AMAwsgBCgClAEgBxCOIAwCC0EBIQJBACEGDAILQQEhAkEAIQYgA0UNAkEAIQUMBQtBAEEBEJciIAQoAnAhBiAEQcgBaiABQQBBACAEKAJ0IgIgBCgCeCIFEL8NIAQtAMgBQQRGDQAgBCkDyAEiCUL/AYNCBFENACAAIAk3AgAMAgsgAw0DC0GAgICAeCEBDAULQYCAgIB4IQEMBgsgBEHQAGogAhD+EQJAAkACQAJAAkACQCAEKAJUQQNJDQAgAS0AYkH/AXFBCE8NACAEQcgAaiACEP4RIAQoAkggBCgCTEHfABC1Gg0BCyAEQcAAaiACEP4RIARByAFqIAFBAEEAIAQoAkAgBCgCRBC/DSAELQDIAUEERg0BIAQpA8gBIglC/wGDQgRRDQEgACAJNwIADAkLIARBMGogAhD+ESAEQcgBaiAEKAIwIAQoAjRB3wBBAUEAELQHIARBqAFqIAFBAEEAIAQoAswBIgUgBCgC0AEiBxC/DSAELQCoAUEERg0BIAQpA6gBIglC/wGDQgRRDQEgACAJNwIAIAQoAsgBIAUQlyIMCAsgAw0BIABBBDsBAAwHC0GAgICAeCAEEIUfIAQoAsgBIQEgAw0BQQEhAkEAIQYMBQsgBEE4aiACEP4RIARByAFqIAQoAjggBCgCPEHfAEEBQQAQtAdBgICAgHggBBCFHyAEKALQASEHIAQoAswBIQUgBCgCyAEhAQsgAUGAgICAeEcNAUEBIQJBACEFQQAhBgtBACEDIAIgBUEuELcaDQEgAiAFQeUAELcaQQFzIQMMAQtBACECAkACQANAIAcgAkYNASAFIAJqIQYgAkEBaiECIAYtAABBRmpB/wFxQfYBTw0AC0EAIQMMAQsCQCAHQQJPDQBBASEDDAELIAUtAABBMEchAwsgASAFEJciQQAhBkEBIQILIABBBDoAACAAIAM6AAEgBiACEJciDAQLIABBBDsBAAwCC0GAgICAeCEBQQAhBkEBIQILCyAGIAIQlyIgASAFEIUfCyAEQeABaiQAC8oVAQZ/AkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAUF0aiICQQcgAkEmSRsOJhoAAQIDBAUGBwgJCgsMGRoNDg8QERoSEhMaGhQVFhYWFhYWGhcaGgsgACgCDCICRQ0ZIAAoAgghACACQQR0IQIDQAJAIAAoAgBBAkYNACAAQQxqKAIAELUBCyAAQRBqIQAgAkFwaiICDQAMGgsLIAAoAgwiAkUNGCAAKAIIIgMgAkEMbGohBANAAkACQCADKAIAIgANAAJAAkACQAJAAkACQCADKAIEIgAoAgAiAUF7aiICQQQgAkEGSRsOBgABAgMEBQALIABBADYCGAwGCwJAIAAoAghBA0cNACAAKAIMELUBCyAAKAIoELUBDAULIABBADYCICAAKAIoELUBDAQLAkAgACgCCEEDRw0AIAAoAgwQtQELIAAoAihBgICAgHhGDQMgACgCMCICRQ0DIAAoAiwhACACQTBsIQIDQCAAEJYDIABBMGohACACQVBqIgINAAwECwsgAEEgaiECAkAgAUEDRw0AIAAoAgQQtQELAkAgAigCAEEHRg0AIAIQuwkLIAAoAmgQuwkgACgCSEGAgICAeEYNAiAAKAJQIgJFDQIgACgCTCEAIAJBMGwhAgNAIAAQlgMgAEEwaiEAIAJBUGoiAg0ADAMLCwJAIAAoAghBA0cNACAAKAIMELUBCwJAIAAoAigiBUEIaigCACIARQ0AIAVBBGooAgAiASAAQQZ0aiEGA0ACQCABQThqKAIAIgJFDQAgAUE0aigCACEAIAJBDGwhAgNAIAAoAgAQtQEgAEEMaiEAIAJBdGoiAg0ACwsgARD/CiABQcAAaiIAIQEgACAGRw0ACwsCQCAFQRRqKAIAIgJFDQAgBUEQaigCACEAIAJBDGwhAgNAIAAoAgAQtQEgAEEMaiEAIAJBdGoiAg0ACwsgBSgCGEGAgICAeEYNASAFQSBqKAIAIgJFDQEgBUEcaigCACEAIAJBMGwhAgNAIAAQlgMgAEEwaiEAIAJBUGoiAg0ADAILCyAAELUBCyADQQxqIgMgBEcNAAwZCwsCQCAALQAcQQJGDQAgAEEANgIYCwJAIAAoAiAiBkEIaigCACIARQ0AIAZBBGooAgAiASAAQQZ0aiEDA0ACQCABQThqKAIAIgJFDQAgAUE0aigCACEAIAJBDGwhAgNAIAAoAgAQtQEgAEEMaiEAIAJBdGoiAg0ACwsgARD/CiABQcAAaiIAIQEgACADRw0ACwsCQCAGQRRqKAIAIgJFDQAgBkEQaigCACEAIAJBDGwhAgNAIAAoAgAQtQEgAEEMaiEAIAJBdGoiAg0ACwsgBigCGEGAgICAeEYNFyAGKAIgIgJFDRcgBigCHCEAIAJBMGwhAgNAIAAQlgMgAEEwaiEAIAJBUGoiAg0ADBgLCyAAKAIEIQAMFAsgACgCDCEADBMLIAAoAgQQtQEgACgCCCEADBILAkACQCABQQtHDQACQAJAIAAoAgQOAwABAwALIAAoAhAiAUUNAiAAKAIMIQIgAUEobCEBA0ACQCACKAIAQQdGDQAgAhC7CQsgAkEoaiECIAFBWGoiAQ0ADAMLCyAAKAIQIgJFDQEgACgCDCEDIAJBOGwhBkEAIQIDQAJAAkACQAJAIAMgAmoiASgCAA4DAAECAAsCQCABQQhqKAIAQQNHDQAgAUEMaigCABC1AQsgAUEoaigCABC7CQwCCyABQSBqQQA2AgAgAUEwaigCACIBRQ0BIAEQtQEMAQsgAUEEaigCABC7CQsgBiACQThqIgJHDQAMAgsLAkACQAJAAkACQAJAAkACQAJAAkAgAQ4LAAECAwQFBgcICQoACyAAQQA2AhggACgCOCEADBsLIAAoAigQtQEgACgCCEECSQ0IIAAoAgwQtQEgACgCOCEADBoLIAAoAghBAUcNByAAKAIMELUBIAAoAjghAAwZCyAAKAIEELUBIAAoAjghAAwYCwJAIAAoAgQiAigCACIBQQNHDQAgAigCEBC1ASACQQxqKAIAIgFFDQYgAUEEdCEBIAJBCGooAgBBDGohAgNAIAIoAgAQtQEgAkEQaiECIAFBcGoiAQ0ADAcLCyACKAIgELUBIAFBAkkNBSACKAIEELUBIAAoAjghAAwXCyAAKAIEELUBIAAoAjghAAwWCyAAKAIEELUBIAAoAjghAAwVCyAAKAIEELUBIAAoAjghAAwUCyAAKAIEELUBIAAoAjghAAwTCyAAKAIEELUBCyAAKAI4IQAMEQsgACgCKBC1ASAAKAIIQQJJDRIgACgCDCEADBALIAAoAghBAUcNESAAKAIMIQAMDwsgACgCBBC1ASAAKAIIELUBIAAoAgwhAAwOCwJAIAAtABhBBUcNACAAKAIQELUBCyAAKAIMIgJFDQ8gAkEEdCECIAAoAghBDGohAANAIAAoAgAQtQEgAEEQaiEAIAJBcGoiAg0ADBALCyAAKAIQELUBIAAoAgRBgICAgHhGDQ4gACgCDCICRQ0OIAJBBHQhAiAAKAIIQQxqIQADQCAAKAIAELUBIABBEGohACACQXBqIgINAAwPCwsgACgCDCICRQ0NIAAoAgghACACQQJ0IQIDQCAAKAIAELUBIABBBGohACACQXxqIgINAAwOCwsgACgCDCICRQ0MIAAoAgghACACQQJ0IQIDQCAAKAIAELUBIABBBGohACACQXxqIgINAAwNCwsgACgCBBC1ASAAKAIIIgBBCGooAgAiAkUNCyAAQQRqKAIAIQAgAkECdCECA0AgACgCABC1ASAAQQRqIQAgAkF8aiICDQAMDAsLAkAgACgCDCIBRQ0AIAAoAgghAiABQShsIQEDQCACELsJIAJBKGohAiABQVhqIgENAAsLIAAoAhAiAigCBCEAIAIoAgBBgICAgHhGDQggAigCCCICRQ0KIAJBMGwhAgNAIAAQlgMgAEEwaiEAIAJBUGoiAg0ADAsLCwJAIAAtABxBAkYNACAAQQA2AhgLAkAgACgCICIBQQhqKAIAIgJFDQAgAUEEaigCACEAIAJBDGwhAgNAIAAoAgAQtQEgAEEMaiEAIAJBdGoiAg0ACwsCQCABQRRqKAIAIgJFDQAgAUEQaigCACEAIAJB2ABsIQIDQCAAELoCIABB2ABqIQAgAkGof2oiAg0ACwsgASgCMCIADQcMCQsgACgCDCIADQYMCAsgACgCBCEADAULIABBCGohAgJAIAAtADRBAkcNAANAIAIoAhgiAi0ALEECRg0ACwsgAkEANgIoDwsgACgCBBDGAg8LIAAoAgwiAkUNBCACQShsIQIgACgCCEEEaiEAA0ACQAJAAkACQAJAIABBfGooAgAOBQQAAQIDBAsgACgCAEEBRw0DIABBBGooAgAQtQEMAwsgACgCABC1AQwCCyAAEKUHDAELIAAQ5AULIABBKGohACACQVhqIgINAAwFCwsgACgCBCEADAELAkAgACgCBCIAKAIAIgJBA0cNACAAKAIQELUBIAAoAgwiAkUNAyACQQR0IQIgACgCCEEMaiEAA0AgACgCABC1ASAAQRBqIQAgAkFwaiICDQAMBAsLIAAoAiAQtQEgAkECSQ0CIAAoAgQhAAwACwsgAEEANgIYCwuwFwIIfwN+IwBBwBprIgMkACADQoOAgIAQNwIcIANCg4CAgBA3AhAgA0KDgICAEDcCKCADQQA6ADEgA0GAAjsBJCADQQI2AgwgA0EBOgAYIANBAkEBIAJB9QNJGzoAMCADQYAOaiADQShqEPYGIANB8A1qQQhqIgQgA0GWDmovAQA7AQAgAyADKQGODjcD8A0gAy0AjQ4hBSADLQCMDiEGIAMoAogOIQcgAygChA4hCCADKAKADiEJAkACQAJAAkACQCADKAK0ESIKQYCAgIB4Rw0AIANB8AVqQQhqIAQvAQA7AQAgAyADKQPwDTcD8AUMAQsCQEGcA0UNACADQaAUakEYaiADQYAOakEYakGcA/wKAAALAkBB6AJFDQAgA0GgFGpBuANqIANBgA5qQbgDakHoAvwKAAALIANBthRqIANB8A1qQQhqLwEAOwEAIAMgBToArRQgAyAGOgCsFCADIAc2AqgUIAMgCDYCpBQgAyAJNgKgFCADIAo2AtQXIAMgAykD8A03Aa4UIANB4BdqIQYCQCADKALoFyIJIAMoAuAXRw0AIAZBtOSDARDsFQsgAygC5BcgCUEJbGoiCEIANwAAIAhBCGpBADoAACADIAlBAWo2AugXIANB+BdqIQcCQCADKAKAGCIJIAMoAvgXRw0AIAdBxOSDARDvFQsgA0HUF2ohBCADKAL8FyAJQQN0akIANwIAIAMgCUEBajYCgBggA0HsF2ohBQJAIAMoAvQXIgkgAygC7BdHDQAgBUHU5IMBEOkVCyADKALwFyAJQQJ0akEANgIAIAMgCUEBajYC9BcgA0GADmogBEEAEK4OAkACQAJAIAMoAoAOIglBA0YNACADQegNaiADQZYOai8BADsBACADIAMpAY4ONwPgDQwBCyADQYAOaiAEQQAQrg4CQCADKAKADiIJQQNGDQAgA0HoDWogA0GWDmovAQA7AQAgAyADKQGODjcD4A0MAQsgA0GADmogBEEAEK4OIAMoAoQOIQgCQAJAIAMoAoAOIglBA0YNACADQegNaiADQZYOai8BADsBACADIAMpAY4ONwPgDQwBCyADIAg2AqwaIANBgA5qIARBABCuDiADKAKEDiEIAkAgAygCgA4iCUEDRg0AIANB6A1qIANBlg5qLwEAOwEAIAMgAykBjg43A+ANDAELIAMgCDYCsBogA0GADmogA0GgFGoQ4gsCQCADKAKADiIJQQNGDQAgA0HoDWogA0GWDmovAQA7AQAgAyADKQGODjcD4A0MAgsgA0GADmogA0GgFGoQ2hACQCADKAKADiIJQQNGDQAgA0HoDWogA0GWDmovAQA7AQAgAyADKQGODjcD4A0MAgsgA0GADmogA0GgFGogASACEIgDAkAgAygCgA4iCUEDRg0AIANB6A1qIANBlg5qLwEAOwEAIAMgAykBjg43A+ANDAILIAQQ3hMgA0GADmogA0GgFGoQzgwCQEGAAkUNACADQZwYaiADQYAOakGAAvwKAAALIANBgA5qIANBoBRqEOwHAkAgAygCgA4iCUEDRg0AIANB6A1qIANBlg5qLwEAOwEAIAMgAykBjg43A+ANDAILIANBoBRqEMAOIANBgA5qIANBoBRqEPcGAkAgAygCgA4iCUEDRg0AIANB6A1qIANBlg5qLwEAOwEAIAMgAykBjg43A+ANDAILIANBgA5qIANB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A2pBCWoiAEUNACACKAKIASADayAAQQgQnhILIAJBmAFqENYVCyAEKAIAQYCAgIB4Rg0FIAQgARCXBwwFCyABKAIwEIESIQMgAkGIAWpBNGogAUE0aigCADYCACACQZABakEAKQOY+5wBIgg3AwAgAkGYAWpBACkDkPucASIJNwMAIAJBoAFqIAg3AwAgAiABNgKoASACIAM2AqwBIAJBADoAsAEgAiABKQIsNwK0ASACIAk3A4gBIAIgASgBOjYBwgEgAiABLQA4OgDAASACQQA6AMEBAkAgACgCBCIBQQJGDQACQCABQQFxRQ0AIAJBAToAwQEgACgCCCACQYgBahBsDAELIAJBiAFqIAAoAggQoAoLIAJBAToAwQECQCAAKAIYIgFFDQAgASACQYgBahBsCyACQQE6AMEBAkAgACgCHCIBRQ0AIAEgAkGIAWoQbCACQQE6AMEBCyACIAAoAgw2AugBIAJBiAFqIAJB6AFqEIYHAkAgAigCjAEiAUUNACACKAKIASACKAKUARCSDCABIAFBBHRBF2pBcHEiAGpBCWoiAUUNACACKAKIASAAayABQQgQnhILIAJBmAFqENYVDAQLIAEoAjAQgRIhAyACQYgBakE0aiABQTRqKAIANgIAIAJBADoAsAEgAkGQAWpBACkDmPucASIINwMAIAJBmAFqQQApA5D7nAEiCTcDACACQaABaiAINwMAIAIgATYCqAEgAiADNgKsASACQQE6AMEBIAIgASkCLDcCtAEgAiABKAE6NgHCASACIAEtADg6AMABIAIgCTcDiAECQAJAAkACQCAAKAIEDgMAAQIACyACQYgBaiAAKAIIEKAKDAILIAJBiAFqIAAoAggQiwsMAQsgACgCCCACQYgBahCEBAsgACgCDCEBIAItAMEBIQMgAkEBOgDBASABIAJBiAFqEGwgAiADOgDBASACIAAoAhA2AugBIAJBiAFqIAJB6AFqEIYHAkAgAigCjAEiAUUNACACKAKIASACKAKUARCSDCABIAFBBHRBF2pBcHEiAGpBCWoiAUUNACACKAKIASAAayABQQgQnhILIAJBmAFqENYVDAMLIAEoAjAQgRIhAyACQYgBakE0aiABQTRqKAIANgIAIAJBADoAsAEgAkGQAWpBACkDmPucASIINwMAIAJBmAFqQQApA5D7nAEiCTcDACAC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GCAAIAM2AgQgAEEGNgIAIANBDGogBEGoAWopAwA3AgAgA0EUaiAEQbABaigCADYCAAwECyAEIAFBABDEAiAEKAIEIQMCQAJAIAQoAgBBAXENACADKAIIIQcgAygCBCEGIAMtABkhCCADKAIUIQkgAygCECEKIAMoAgAhAiAEKAIcIQsgA0EcQQQQnhIgAkGAgICAeEcNASAGIQMLIABBCTYCACAAIAM2AgQMBAtBBEEcEOsfIgNFDQYgAyAIOgAZIANBAToAGCADIAk2AhQgAyAKNgIQIAMgCzYCDCADIAc2AgggAyAGNgIEIAMgAjYCACAAIAM2AgQgAEECNgIADAMLIAZBtH9qQf8BcUHVAEkNACAAQQg2AgAgBEEgahDMHQwDCyAGIAEQiAshDyAEQThqIAEgBCgCGCADIA9BARCKBAJAIAQoAjgiA0EJRw0AQShFDQMgACAEQThqQSj8CgAADAMLQQghAgJAIANBCEYNACAEIAM2AtgBAkBBJEUiAw0AIARB2AFqQQRyIARBOGpBBHJBJPwKAAALIARBgAJqIARB2AFqEJoLIAQoAoACIQIgAw0AIARBtAFqIARBgAJqQQRyQST8CgAACyAAIAI2AgBBJEUNAiAAQQRqIARBtAFqQST8CgAADAILIAAgBCkDODcDCCAAIAM2AgQgACAINgIAIABBIGogBykDADcDACAAQRhqIAYpAwA3AwAgAEEQaiACKQMANwMACyAEQSBqEMwdCyABIAU2AngMAgsgAEEINgIAIAMQzB0MAQsACyAEQbACaiQAC8wTAg9/AX4jAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQXxqIgNBBCADQQdJGw4HAAECAwQFBgALIAEoAgghBCABKAIUIQUgASgCECEGIAJBCGogASgCDCIHQQhBKBDMDSACKAIMIQggAigCCEEBRg0HIAIoAhAhCQJAIAhFDQAgB0EobCEKIAkhAyAIIQsDQCAKRQ0BIAJBCGogBBDRAiADQSBqIAJBCGpBIGopAwA3AwAgA0EYaiACQQhqQRhqKQMANwMAIANBEGogAkEIakEQaikDADcDACADQQhqIAJBCGpBCGopAwA3AwAgAyACKQMINwMAIApBWGohCiADQShqIQMgBEEoaiEEIAtBf2oiCw0ACwtBACEEQQAh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AigCCEEBRg0FIAIoAhAhCQJAIAhFDQAgB0EobCEKIAkhAyAIIQsDQCAKRQ0BIAJBCGogBBDRAiADQSBqIAJBCGpBIGopAwA3AwAgA0EYaiACQQhqQRhqKQMANwMAIANBEGogAkEIakEQaikDADcDACADQQhqIAJBCGpBCGopAwA3AwAgAyACKQMINwMAIApBWGohCiADQShqIQMgBEEoaiEEIAtBf2oiCw0ACwsCQAJAIAEoAhAiBA0AQQAhAwwBC0EALQDA8Z0BGkEMEIUBIgNFDQNBAC0AwPGdARogBCgCCCELIAQoAgQhBUHgABCFASIKRQ0DIAogBCgCABBkIAMgCzYCCCADIAU2AgQgAyAKNgIACyAAIAM2AhAgACAHNgIMIAAgCTYCCCAAIAg2AgQgAEEKNgIAIAAgAS8BHDsBHCAAIAEpAhQ3AhQLIAJBMGokAA8LIAggAigCEEGIn5oBEKoeCwALIAggAigCEEGIn5oBEKoeAAsgCCACKAIQQYifmgEQqh4ACyAIIAIoAhBBiJ+aARCqHgALuBICC38BfiMAQYADayICJAACQAJAAkACQAJAAkACQCAAKAIADggABQQDBgYCAQALAkAgACgCICIDQQhqKAIAIgBFDQAgA0EEaigCACEEIABBDGwhBQNAAkACQCAEKAIAIgAoAgBBGkcNACACQcAAaiABKAIAIAEoAgQgAEEIaiIGELUMIAIoAkBBMkYNASAAEMkBIABBOGogAkHAAGpBOGopAwA3AwAgAEEwaiACQcAAakEwaikDADcDACAAQShqIAJBwABqQShqKQMANwMAIABBIGogAkHAAGpBIGopAwA3AwAgAEEYaiACQcAAakEYaikDADcDACAAQRBqIAJBwABqQRBqKQMANwMAIAYgAkHAAGpBCGopAwA3AwAgACACKQNANwMADAELIAAgARBGCyAEQQxqIQQgBUF0aiIFDQALCwJAIANBFGooAgAiBEUNACADQRBqKAIAIQAgBEHYAGwhBANAIAAgARBoIABB2ABqIQAgBEGof2oiBA0ACwsgAygCMCIARQ0FAkAgACgCAEEaRw0AIAIgASgCACABKAIEIABBCGoiBBC1DCACKAIAQTJGDQYgABDJASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACAEIAJBCGopAwA3AwAgACACKQMANwMADAYLIAAgARBGDAULIAAoAgQiAC0ARSIEQQNGDQQCQCAEQQJGDQACQCAAKAJAIgAtACVBAkYNACAAQSBqIAEQrBAMBgsgAEEIaigCACIERQ0FIABBBGooAgAhACAEQThsIQQDQAJAAkAgACgCAEEJRw0AIABBCGogARBvDAELIAAgARCgAgsgAEE4aiEAIARBSGoiBA0ADAYLCyAAQShqKAIAIgRFDQQgAEEkaigCACEAIARBOGwhBANAAkACQCAAKAIAQQlHDQAgAEEIaiABEG8MAQsgACABEKACCyAAQThqIQAgBEFIaiIEDQAMBQsLIAAoAgQiAEEoaigCACIERQ0DIARBMGwhBSAAQSRqKAIAQShqIQQDQAJAIAQoAgAiAEUNAAJAIAAoAgBBGkcNACACQcACaiABKAIAIAEoAgQgAEEIaiIGELUMIAIoAsACQTJGDQEgABDJASAAQThqIAJBwAJqQThqKQMANwMAIABBMGogAkHAAmpBMGopAwA3AwAgAEEoaiACQcACakEoaikDADcDACAAQSBqIAJBwAJqQSBqKQMANwMAIABBGGogAkHAAmpBGGopAwA3AwAgAEEQaiACQcACakEQaikDADcDACAGIAJBwAJqQQhqKQMANwMAIAAgAikDwAI3AwAMAQsgACABEEYLIARBMGohBCAFQVBqIgUNAAwECwsgACgCBCIAQQhqKAIAIgRFDQIgAEEEaigCACIAIARBOGxqIQUDQCAAIAEQlwMCQCAAQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkGAAmogASgCACABKAIEIARBCGoiBhC1DCACKAKAAkEyRg0BIAQQyQEgBEE4aiACQYACakE4aikDADcDACAEQTBqIAJBgAJqQTBqKQMANwMAIARBKGogAkGAAmpBKGopAwA3AwAgBEEgaiACQYACakEgaikDADcDACAEQRhqIAJBgAJqQRhqKQMANwMAIARBEGogAkGAAmpBEGopAwA3AwAgBiACQYACakEIaikDADcDACAEIAIpA4ACNwMADAELIAQgARBGCyAAQThqIgAgBUcNAAwDCwsgACgCBCIAQQhqKAIAIgRFDQEgAEEEaigCACIAIARBOGxqIQUDQCAAIAEQlwMCQCAAQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkHAAWogASgCACABKAIEIARBCGoiBhC1DCACKALAAUEyRg0BIAQQyQEgBEE4aiACQcABakE4aikDADcDACAEQTBqIAJBwAFqQTBqKQMANwMAIARBKGogAkHAAWpBKGopAwA3AwAgBEEgaiACQcABakEgaikDADcDACAEQRhqIAJBwAFqQRhqKQMANwMAIARBEGogAkHAAWpBEGopAwA3AwAgBiACQcABakEIaikDADcDACAEIAIpA8ABNwMADAELIAQgARBGCyAAQThqIgAgBUcNAAwCCwsCQCAAKAIgIgdBCGooAgAiAEUNACAHQQRqKAIAIgggAEEGdGohCQNAAkAgCEE4aigCACIARQ0AIAhBNGooAgAhBCAAQQxsIQUDQAJAAkAgBCgCACIAKAIAQRpHDQAgASgCAEEBRw0BIAEoAgQiAyAAKAIYRw0BAkACQCAAKQMIIg1CA4NCAFINACANpyIGIAYoAgAiBkEBajYCACAGQX9MDQELQQAtAMDxnQEaIAAoAhQhCiAAKAIQIQsgAC0AHCEMQcAAEIUBIgZFDQAgBiAMOgAcIAYgAzYCGCAGQgA3AxAgBiANNwMIIAZBGjYCACAAEMkBIAAgBjYCKCAAIAo2AiQgACALNgIgIABCADcDGCAAQpG+ATcDECAAQQA2AgggAEEUNgIADAILAAsgACABEEYLIARBDGohBCAFQXRqIgUNAAsLIAggARCDBCAIQcAAaiIAIQggACAJRw0ACwsCQCAHQRRqKAIAIgBFDQAgB0EQaigCACEEIABBDGwhBQNAAkACQCAEKAIAIgAoAgBBGkcNACACQYABaiABKAIAIAEoAgQgAEEIaiIGELUMIAIoAoABQTJGDQEgABDJASAAQThqIAJBgAFqQThqKQMANwMAIABBMGogAkGAAWpBMGopAwA3AwAgAEEoaiACQYABakEoaikDADcDACAAQSBqIAJBgAFqQSBqKQMANwMAIABBGGogAkGAAWpBGGopAwA3AwAgAEEQaiACQYABakEQaikDADcDACAGIAJBgAFqQQhqKQMANwMAIAAgAikDgAE3AwAMAQsgACABEEYLIARBDGohBCAFQXRqIgUNAAsLIAcoAhhB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QQBIDQAgCiAKKQMAQoCBgoSIkKDAgH+DeqdBA3YiE2otAAAhAwsgACgCCCEEIAogE2ogDzoAACAKIAsgE0F4anFqQQhqIA86AAAgCiATQQJ0a0F8aiAENgIAIAAgACgCFCADQQFxazYCFCAAIAAoAhhBAWo2AhggACgCCCIDIAAoAgBHDQMgACgCGCAAKAIUaiIEQebMmTMgBEHmzJkzSRsgA2siBEEBTQ0CIAAgAyAEQQRBFBCxCyEEIAAoAgghAyAEQYGAgIB4Rw0CDAMLIAMgDEGsoJoBELMRAAsgAyAEQYSimgEQsxEACyAAIANBAUEEQRQQ+AogACgCCCEDCwJAIAMgACgCAEcNACAAEMkWCyAAIANBAWo2AgggACgCBCADQRRsaiIDIAk2AhAgAyAFNgIMIAMgBjYCCCADIAc2AgQgAyAINgIADAELQQAtAMDxnQEaIAEoAgghCUHAABCFASIERQ0BIARBADYCCCAEQjE3AwAgCSgCACEDIAkgBDYCACACQQhqIgQgA0EIaikDADcDACACQRBqIgkgA0EQaikDADcDACACQRhqIgggA0EYaikDADcDACACQSBqIgcgA0EgaikDADcDACACQShqIgogA0EoaikDADcDACACQTBqIgsgA0EwaikDADcDACACQThqIgUgA0E4aikDADcDACACIAMpAwA3AwAgARDJASABQThqIAUpAwA3AwAgAUEwaiALKQMANwMAIAFBKGogCikDADcDACABQSBqIAcpAwA3AwAgAUEYaiAIKQMANwMAIAFBEGogCSkDADcDACABQQhqIAQpAwA3AwAgASACKQMANwMAIANBwABBCBCeEgwACwsAC7gSAQx/IwBBEGsiAiQAAkAgAC0AbEECRw0AIABBwABqIQMDQCADKAIYIgMtACxBAkYNAAsLAkAgACgChAEiA0UNACAAKAKAASIEIANB2ABsaiEFA0ACQAJAIAQoAgAiA0EFRw0AIAEtACQhBiABQQI6ACQgAS0AJSEDIAEgBCgCBCIHEMYBIAcgARBSIAEgAzoAJSABQQI6ACQgASAHEJsBIAEgAzoAJSABIAY6ACQMAQsgA0EERg0AAkACQAJAAkACQCADDgQFAAECBQsgBCgCBEEBRw0EIAQoAgghAyABLQAkIgcNAyADKAIAQXRqIgZBByAGQSZJG0F7aiIG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AhQhByACKAIYDQIgAigCICEFDBALAkAgACgC0AIiBw0AQQEQxxwhBAwTCyAHIAAoAswCSw0OIAcgACgCPHZBfmoiCCAAKAIUIglPDQggAigCHEEAIAIoAhgbIgkgACgCECAIQQxsaiIIKAIITw0OIAJBATYCGCACIAlBAWo2AhwgCCgCBCAJQQJ0aigCACIHIAAoAiAiBk8NCSAFIAAoAhwgB0ECdGooAgAiAEkNCiACIAc2AgwgAiAFNgIIIAJBATYCACACIAUgAGs2AgQLQQAhBAwRCyAHIAAoAjx2QX5qIgUgACgCFCIITw0JAkAgAigCHCIIIAAoAhAgBUEMbGoiBSgCCEkNACACQQA2AhggAkEANgIAIAIgAigCIEEBaiIFNgIgDA4LIAJBATYCGCACIAhBAWo2AhwgBSgCBCAIQQJ0aigCACIFIAAoAiAiB08NCiACKAIgQQFqIgcgACgCHCAFQQJ0aigCACIASQ0LIAIgBTYCDCACIAc2AgggAkEBNgIAIAIgByAAazYCBAwQCyAIIAlBtO+DARCzEQALIAcgBkGE74MBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAUgCEG074MBELMRAAsgBSAHQYTvgwEQsxEACyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgCCAJQbTvgwEQsxEACyAHIAZBhO+DARCzEQALIANBADYCGCADQQE2AgwgA0HE5oMBNgIIIANCBDcCECADQQhqQczmgwEQhRsACyAFIAhBtO+DARCzEQALIAUgB0GE74MBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAJBADYCGCACIAc2AhQgAkEBNgIQIAIgBTYCICACQQA2AgALAkAgBSAGTw0AIABBwABqIQogASgCDCEIIAEoAgghCQNAAkACQAJAAkACQAJAAkACQAJAIAUgCE8NACAHIAogCSAFai0AAGotAABqIgcgACgCCCIBTw0CIAAoAgQgB0ECdGooAgAiByAAKALIAk0NASAFIQEMBwsgBSAIQZydgAEQsxEACyACIAc2AhQgAkEBNgIQIAdFDQsCQCAHIAAoAswCSw0AIAJCgYCAgBA3AhggByAAKAI8dkF+aiIHIAAoAhQiBk8NAiAAKAIQIAdBDGxqIgcoAghFDQMgBygCBCgCACIHIAAoAiAiBk8NBCAFQQFqIgUgACgCHCAHQQJ0aigCACIASQ0FIAIgBzYCDCACIAU2AgggAkEBNgIAIAIgBSAAazYCBAwMCyADQQhqIAAoAiggACgCLCIBKAIIQX9qQXhxakEIaiAJIAggBSAGIAEoAhAREwAgAygCCEUNCyADKAIMIgUgAigCICIBTQ0FDAYLIAcgAUH07oMBELMRAAsgByAGQZTvgwEQsxEAC0EAQQBBpO+DARCzEQALIAcgBkGE74MBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAFBAWohBQsgAiAFNgIgIAUgBkkNAAsLIAIgBzYCFCACQQE2AhAMAgsgAkEANgIYIAIgBzYCFCACQQE2AhAgAiAFNgIgIAJBADYCAAsCQAJAIAUgBk8NACAFIAEoAgwiCyAFIAtLGyEIIABBwABqIQkgASgCCCEBA0AgCCAFRg0FIAcgCSABIAVqLQAAai0AAGoiByAAKAIIIgpPDQQCQCAAKAIEIAdBAnRqKAIAIgcgACgCyAJLDQAgAiAHNgIUIAJBATYCECAHRQ0EIAcgACgCzAJNDQMLIAIgBUEBaiIFNgIgIAYgBUcNAAsLIAIgBzYCFCACQQE2AhAMAQsgAkKBgICAEDcCGCAHIAAoAjx2QX5qIgcgACgCFCIGTw0DIAAoAhAgB0EMbGoiBygCCEUNBCAHKAIEKAIAIgcgACgCICIGTw0FIAVBAWoiBSAAKAIcIAdBAnRqKAIAIgBJDQYgAiAHNgIMIAIgBTYCCCACQQE2AgAgAiAFIABrNgIECyADQSBqJAAgBA8LIAcgCkH07oMBELMRAAsgCCALQZydgAEQsxEACyAHIAZBlO+DARCzEQALQQBBAEGk74MBELMRAAsgByAGQYTvgwEQsxEACyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAvpEAEFfyMAQcACayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIDDQACQAJAAkACQAJAIAAoAgQiAygCACIEQXtqIgBBBCAAQQZJGw4GEAABAgMEEAsgAygCCEEDRw0OIAMoAgwiACgCAEEaRw0FIAJBgAJqIAEoAgAgASgCBCAAQQhqIgQQtQwgAigCgAJBMkYNDiAAEMkBIABBOGogAkGAAmpBOGopAwA3AwAgAEEwaiACQYACakEwaikDADcDACAAQShqIAJBgAJqQShqKQMANwMAIABBIGogAkGAAmpBIGopAwA3AwAgAEEYaiACQYACakEYaikDADcDACAAQRBqIAJBgAJqQRBqKQMANwMAIAQgAkGAAmpBCGopAwA3AwAgACACKQOAAjcDAAwOCyADKAIoIgMoAgBBGkcNBSACQcAAaiABKAIAIAEoAgQgA0EIaiIBELUMIAIoAkBBMkYNDiADEMkBIANBOGogAkHAAGpBOGopAwA3AwAgA0EwaiACQcAAakEwaikDADcDACADQShqIAJBwABqQShqKQMANwMAIANBIGogAkHAAGpBIGopAwA3AwAgA0EYaiACQcAAakEYaikDADcDACADQRBqIAJBwABqQRBqKQMANwMAIAEgAkHAAGpBCGopAwA3AwAgAyACKQNANwMADA4LIAMoAghBA0cNCyADKAIMIgAoAgBBGkcNBSACQYACaiABKAIAIAEoAgQgAEEIaiIEELUMIAIoAoACQTJGDQsgABDJASAAQThqIAJBgAJqQThqKQMANwMAIABBMGogAkGAAmpBMGopAwA3AwAgAEEoaiACQYACakEoaikDADcDACAAQSBqIAJBgAJqQSBqKQMANwMAIABBGGogAkGAAmpBGGopAwA3AwAgAEEQaiACQYACakEQaikDADcDACAEIAJBgAJqQQhqKQMANwMAIAAgAikDgAI3AwAMCwsgA0EgaiEAIARBA0cNCSADKAIEIgQoAgBBGkcNBSACQYACaiABKAIAIAEoAgQgBEEIaiIFELUMIAIoAoACQTJGDQkgBBDJASAEQThqIAJBgAJqQThqKQMANwMAIARBMGogAkGAAmpBMGopAwA3AwAgBEEoaiACQYACakEoaikDADcDACAEQSBqIAJBgAJqQSBqKQMANwMAIARBGGogAkGAAmpBGGopAwA3AwAgBEEQaiACQYACakEQaikDADcDACAFIAJBgAJqQQhqKQMANwMAIAQgAikDgAI3AwAMCQsgAygCCEEDRw0HIAMoAgwiACgCAEEaRw0FIAJBgAJqIAEoAgAgASgCBCAAQQhqIgQQtQwgAigCgAJBMkYNByAAEMkBIABBOGogAkGAAmpBOGopAwA3AwAgAEEwaiACQYACakEwaikDADcDACAAQShqIAJBgAJqQShqKQMANwMAIABBIGogAkGAAmpBIGopAwA3AwAgAEEYaiACQYACakEYaikDADcDACAAQRBqIAJBgAJqQRBqKQMANwMAIAQgAkGAAmpBCGopAwA3AwAgACACKQOAAjcDAAwHCyADKAIAQRpHDQUgAiABKAIAIAEoAgQgA0EIaiIBELUMIAIoAgBBMkYNCiADEMkBIANBOGogAkE4aikDADcDACADQTBqIAJBMGopAwA3AwAgA0EoaiACQShqKQMANwMAIANBIGogAkEgaikDADcDACADQRhqIAJBGGopAwA3AwAgA0EQaiACQRBqKQMANwMAIAEgAkEIaikDADcDACADIAIpAwA3AwAMCgsgACABEEYMCAsgAyABEEYMCAsgACABEEYMBQsgBCABEEYMAwsgACABEEYMAQsgAyABEEYMBAsgAygCKCIGIAEQ1ggCQCAGQRRqKAIAIgNFDQAgBkEQaigCACEAIANBDGwhBANAAkACQCAAKAIAIgMoAgBBGkcNACACQcABaiABKAIAIAEoAgQgA0EIaiIFELUMIAIoAsABQTJGDQEgAxDJASADQThqIAJBwAFqQThqKQMANwMAIANBMGogAkHAAWpBMGopAwA3AwAgA0EoaiACQcABakEoaikDADcDACADQSBqIAJBwAFqQSBqKQMANwMAIANBGGogAkHAAWpBGGopAwA3AwAgA0EQaiACQcABakEQaikDADcDACAFIAJBwAFqQQhqKQMANwMAIAMgAikDwAE3AwAMAQsgAyABEEYLIABBDGohACAEQXRqIgQNAAsLIAYoAhhBgICAgHhGDQMgBkEgaigCACIARQ0DIAZBHGooAgAhAyAAQTBsIQADQCADIAEQbyADQTBqIQMgAEFQaiIADQAMBAsLAkAgACgCAEEHRg0AIAAgARCXAwsgAygCaCABEJcDIAMoAkhBgICAgHhGDQIgA0HQAGooAgAiAEUNAiADQcwAaigCACEDIABBMGwhAANAIAMgARBvIANBMGohAyAAQVBqIgANAAwDCwsgAygCKEGAgICAeEYNASADQTBqKAIAIgBFDQEgA0EsaigCACEDIABBMGwhAANAIAMgARBvIANBMGohAyAAQVBqIgANAAwCCwsCQCADKAIoIgMoAgBBGkcNACACQYABaiABKAIAIAEoAgQgA0EIaiIBELUMIAIoAoABQTJGDQEgAxDJASADQThqIAJBgAFqQThqKQMANwMAIANBMGogAkGAAWpBMGopAwA3AwAgA0EoaiACQYABakEoaikDADcDACADQSBqIAJBgAFqQSBqKQMANwMAIANBGGogAkGAAWpBGGopAwA3AwAgA0EQaiACQYABakEQaikDADcDACABIAJBgAFqQQhqKQMANwMAIAMgAikDgAE3AwAMAQsgAyABEEYLIAJBwAJqJAALgBECCn8BfiMAQZABayICJAACQAJAAkAgASgCACIDQQlHDQAgACABQQhqEN8BDAELAkACQAJAAkACQAJAAkACQCADDgkABwYFBAMJAgEACwJAIAEoAgwiBEUNACABKAIIIQNBACEFAkACQANAIAVBAWohBgJAIAMpAwBCAlYNACADQcAAai0AAEEBcQ0CCyADQcgAaiEDIAYhBSAEIAZHDQALQQAhBQwBCyADEL8JAkAgBiAERw0AQQEhBQwBCyAFQX9zIARqIQYgA0HIAGohA0EBIQUDQAJAAkAgAykDAEICVg0AIANBwABqLQAAQQFxRQ0AIAMQvwkgBUEBaiEFDAELQcgARQ0AIAMgBUG4f2xqIANByAD8CgAACyADQcgAaiEDIAZBf2oiBg0ACwsgASAEIAVrNgIMCyABKAIcIgNFDQcgA0EIaigCACIGRQ0HIANBBGooAgAhAyAGQQxsIQYDQAJAAkAgAygCACIFDQAgA0EEaigCACAAENwDDAELIAAgBRCMAQsgA0EMaiEDIAZBdGoiBg0ADAgLCyABQQA6ACQMBwsgACABKAIEEIwBDAULIAEoAhAiA0UNBCADQQhqKAIAIgZFDQQgA0EEaigCACEDIAZBDGwhBgNAAkACQCADKAIAIgUNACADQQRqKAIAIAAQ3AMMAQsgACAFEIwBCyADQQxqIQMgBkF0aiIGDQAMBQsLIAAgASgCBBCMAQwDCwJAAkACQCABKAIIDgMAAQYACwJAIAEtACQiB0ECRg0AIAFBADoAJAsgASgCKCIIQQA6ADwgCCgCICEFIAhBADYCIAJAIAVFDQAgCCgCHCEGA0AgBkEMaigCACEDIAYoAgAiBBDZASAEQcAAQQgQnhICQCADRQ0AIAMQuBggAygCACADQQRqKAIAEMAgIANBFEEEEJ4SCyAGQRBqIQYgBUF/aiIFDQALCyAIIAAQ6gwgB0ECRw0BDAQLAkAgAS0AJCIIQQJGDQAgAUEAOgAkCyAAIAEoAigiBRCLByAFQRhqIQQCQCAFKAIUIgZFDQAgBSgCECEDIAZBDGwhBgNAIAAgAygCABCMASADQQxqIQMgBkF0aiIGDQALCwJAIAQoAgBBgICAgHhGDQAgACAEEMECCwJAIAUoAjwiA0UNACADEOQNIAMoAgAgA0EEaigCABDCICADQRRBBBCeEgsgBUEANgI8AkAgBSgCQCIDRQ0AIAMoAgAiBhDGAyAGQeAAQQgQnhIgA0EMQQQQnhILIAVBADYCQCAIQQJGDQMLIAJB2ABqIAEpAxAgASgCIBC6GCAAQZABaiACKQNYIAIoAmAQ5wUaDAILAkAgASgCDCIERQ0AIAEoAgghA0EAIQUCQAJAA0AgBUEBaiEGAkAgAykDAEIBVg0AIANByABqLQAAQQFxDQILIANB0ABqIQMgBiEFIAQgBkcNAAtBACEFDAELIAMQyQgCQCAGIARHDQBBASEFDAELIAVBf3MgBGohBiADQdAAaiEDQQEhBQNAAkACQCADKQMAQgFWDQAgA0HIAGotAABBAXFFDQAgAxDJCCAFQQFqIQUMAQtB0ABFDQAgAyAFQbB/bGogA0HQAPwKAAALIANB0ABqIQMgBkF/aiIGDQALCyABIAQgBWs2AgwLIAEoAhwiA0UNASADQQhqKAIAIgZFDQEgA0EEaigCACEDIAZBDGwhBgNAAkACQCADKAIAIgUNACADQQRqKAIAIAAQ3AMMAQsgACAFEIwBCyADQQxqIQMgBkF0aiIGDQAMAgsLAkAgACgCAEUNACABKAIIQQJHDQAgASgCDCIDKAIIIgZFDQEgAygCBCEDIAZBOGwhBgNAIAMgABC+BAJAIAAoAgBFDQAgACADEIMICwJAIANBMGooAgAiBUUNACAAIAUQjAELIANBOGohAyAGQUhqIgYNAAwCCwsgAUEIaiAAEJYFCyABKAIAQQFHDQAgAkHYAGoQ7RcgAkEwakEgaiABQShqIgYpAwA3AwAgAkEwakEYaiABQSBqIgUpAwA3AwAgAkEwakEQaiABQRhqIgQpAwA3AwAgAkEwakEIaiABQRBqIgMpAwA3AwAgASkDCCEMIAEgAikDWDcDCCADIAJB2ABqQQhqIgcpAwA3AwAgBCACQdgAakEQaiIJKQMANwMAIAUgAkHYAGpBGGoiCikDADcDACAGIAJB2ABqQSBqIgspAwA3AwAgAiAMNwMwIAIgACACQTBqQQEQXiABQQhqIQACQAJAAkAgAigCAEFtaiIIQQIgCEECSRsOAwABAgALIAEpAwAhDCABQQk2AgAgAkHYAGpBMGogAUEwaikDADcDACACQdgAakEoaiAGKQMANwMAIAsgBSkDADcDACAKIAQpAwA3AwAgCSADKQMANwMAIAcgACkDADcDACADQQA2AgAgAEIBNwMAIAIgDDcDWAJAIAynQQlGDQAgAkHYAGoQpgUMAwsgAkHgAGoQ1wMMAgsgABD0BCAAQSBqIAJBKGopAwA3AwAgAEEYaiACQSBqKQMANwMAIABBEGogAkEYaikDADcDACAAQQhqIAJBEGopAwA3AwAgACACKQMINwMADAELIAJB2ABqQSxqIAJBKGopAwA3AgAgAkHYAGpBJGogAkEgaikDADcCACACQdgAakEcaiACQRhqKQMANwIAIAJB2ABqQRRqIAJBEGopAwA3AgAgAkHYAGpBDGogAkEIaikDADcCACACIAIpAwA3AlwgARCmBSABQQk2AgAgASACKQJYNwIEIAFBDGogBykCADcCACABQRRqIAkpAgA3AgAgAUEcaiAKKQIANwIAIAFBJGogCykCADcCACABQSxqIAJB2ABqQShqKQIANwIAIAFBNGogAkGIAWooAgA2AgALIAJBkAFqJAALzRECB38DfiMAQYAEayICJAACQAJAAkACQAJAIAAtAEUNACACQYACOwDEASABKAIEIQMCQCABKAIIIgRFDQAgBEEobCEFIAMhBgNAIAYgAkHEAWoQ8wggBkEoaiEGIAVBWGoiBQ0ACwsCQAJAIAEoAgwiBygCAEGAgICAeEcNACACLQDEAQ0BIAcoAgQgAkHEAWoQlQEMAQsgBygCCCIFRQ0AIAItAMQBDQAgBygCBCEGIAVBMGwhBQNAAkAgAi0AxAENACAGIAJBxAFqEPQCCyAGQTBqIQYgBUFQaiIFDQALCyACLQDEAUEBRw0AIARBKGwhBgNA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SAJAAkAgAS0AyAEiCEF9ag4FAwEBAQABCyABEIcODAELIARBBzoAhAIgBCAIOgDwASAEQcwAaiAEQfABahDWECABKALEASEIIAEoAsABIQ8gBEEBNgLUASAEQZjvmwE2AtABIARCATcC3AEgBCAWNwNwIAQgBEHwAGo2AtgBIARBiAFqIARB0AFqEI0VIBEgBEHMAGpBCGooAgA2AgAgCiAEKQJMNwIAIAEgDyAIIARBiAFqEK8aDAALCwJAIAQoAkAiCEGAgICAeEcNACANIQcMAgsgBCAHNgI8IAQgDTYCOCAEIAg2AjQgARCHDiABKAK8ASEBAkBBCEEwEOsfIgdFDQAgByABNgIcIAcgAjYCGEEAIQYgB0EAOgAUIAdBADYCECAHIAk2AgwgByAFNgIIIAcgFTcDACAHIAQpAjQ3AiAgByADOgAtIAdBADoALCAHQShqIARBNGpBCGooAgA2AgAMAwsACyABKALEASEHIAEoAsABIQogBEEoaiAIEN4bIARBATYC1AEgBEGY75sBNgLQASAEQgE3AtwBIARBigWtQiCGQeyhmwGthDcDcCAEIARB8ABqNgLYASAEQYgBaiAEQdABahCNFSAEQZwBaiAEQTBqKAIANgIAIAQgBCkCKDcClAEgCiAHIARBiAFqEIUVIQcgAS0AyAFBogFHDQAgARDHESEIIAEQhw4gASAIEOURCyAVEMYdCyAAIAc2AgQgACAGNgIAIARBkAJqJAAL4RACC38CfiMAQfAAayICJAACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgkAAQIDBAUGBwgACwJAIAAoAgwiA0UNACAAKAIIIQQgA0HIAGwhBSABQSxqIQYgAUGAAWohB0EAIQgDQAJAAkACQAJAIAQgCGoiAykDACINQn18Ig6nQQFqQQAgDkICVBsOAwABAgALIANBMGoiCSgCACEKAkAgAS0AkAENACAKRQ0AIAJB4ABqIANBIGopAwAgChC6GCAHIAIpA2AgAigCaBDnBRogAykDACENCwJAIA1CAlENACANp0EBcQ0AIAEtAJABDQAgA0EYaigCACILRQ0AIAJB4ABqIANBCGopAwAgCxC6GCAHIAIpA2AgAigCaBDnBRoLIAJB4ABqIANBIGoiAykDACAJKAIAELoYIAYgAikDYCACKAJoQQEQygsgASAD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QcgAakHXrJsBQQEQuAwgAy0AYEEERg0BIAMpA2AiDUL/AYNCBFENASAAIA03AgAMAgsgACANNwIADAELIAEoAgQhBiADQeAAaiACIAUgASgCCCIHQZCDkAEgBxDWFwJAAkACQCADLQBgQQVGDQAgAykDYCENDAELIANB4ABqEIQfAkAgB0UNACADQQE6AFYgA0HAAGogBhCwEwJAIAItAF0NACADQeAAaiACEOIOIAMtAGBBBEYNACADKQNgIg1C/wGDQgRSDQILIANBADoAVyAGQShqIQggByEJQQAhCkEAIQsDQAJAAkACQAJAAkACQCAJRQ0AIANBOGogCEFYaiIMELATIANB4ABqIAIgBEGQg5ABIAogCyADQdcAaiADQdYAahChBQJAIAMtAGBBBEYNACADKQNgIg1C/wGDQgRSDQkLIAwoAgAOAwECAwELAkAgBiAHQThsakFIaiIIRQ0AIANBCGogCBCwEwsgA0HgAGogAiAFIARBkIOQASAKIAsQuQIgAy0AYEEERg0GIAMpA2AiDUL/AYNCBFINBwwGCyADQTBqIAhBYGoiChDSEiADQeAAaiACIAMoAjBBABCVAgJAAkAgAy0AYEEERg0AIAMpA2AiDUL/AYNCBFINAQsgA0EoaiAKENISAkAgAygCKCILRQ0AIANB4ABqIAIgCxC0GiADLQBgQQRGDQAgAykDYCINQv8Bg0IEUg0BCyADQeAAaiAKIAIQwgUCQCADLQBgQQRGDQAgAykDYCINQv8Bg0IEUg0BCyADQQA2AmAgA0HYAGogAiADQeAAakGhxJsBQQEQuAwCQCADLQBYQQRGDQAgAykDWCINQv8Bg0IEUg0BCwJAIAItAF0NACADQeAAaiACEOIOIAMtAGBBBEYNACADKQNgIg1C/wGDQgRSDQELIANB4ABqIAggAhDbIAJAIAMtAGBBBEYNACADKQNgIg1C/wGDQgRSDQELIANBIGogChDSEiADKAIkIgpFDQQgA0HgAGogAiAKELQaIAMtAGBBBEYNBCADKQNgIg1C/wGDQgRRDQQLIA1C/wGDQgRSDQIMAwsgCEFkaigCACELIANB4ABqIAIgCEFgaigCACIKQQAQlQICQAJAIAMtAGBBBEYNACADKQNgIg1C/wGDQgRSDQELAkAgCkUNACADQeAAaiACIAoQtBogAy0AYEEE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NgIIIAMgBCACQShqEM4FDQAgAkECNgIsIAJBrPqDATYCKCACQgE3AjQgAkEqNgIMIAIgAEE0ajYCCCACIAJBCGo2AjAgAyAEIAJBKGoQzgUNACACQQI2AiwgAkHM+oMBNgIoIAJCATcCNCACQSo2AgwgAiAAKAIgIhk2AiQgAiACQQhqNgIwIAIgAkEkajYCCCADIAQgAkEoahDOBQ0AIAJBAjYCLCACQfyegAE2AiggAkIBNwI0IAJBKjYCDCACIABBwAJqNgIIIAIgAkEIajYCMCADIAQgAkEoahCxHg0AIAJBAjYCLCACQaSfgAE2AiggAkIBNwI0IAJBKjYCDCACIABBxAJqNgIIIAIgAkEIajYCMCADIAQgAkEoahCxHg0AIAJBAjYCLCACQcifgAE2AiggAkIBNwI0IAJBKjYCDCACIABBOGo2AgggAiACQQhqNgIwQQEhEyADIAQgAkEoahCxHg0BIAJBAjYCLCACQeCfgAE2AiggAkIBNwI0IAJBygA2AgxBASETIAJBASAAKAI8dDYCJCACIAJBCGo2AjAgAiACQSRqNgIIIAMgBCACQShqELEeDQEgAkECNgIsIAJBgKCAATYCKCACQgE3AjQgAkHGADYCDCACIABBwABqNgIIIAIgAkEIajYCMCADIAQgAkEoahCxHg0BIAJBoKCAATYCKCACQgE3AjQgAkEqNgIMIAAoAjAhFyAAKAIUIRQgACgCCCEdIAJBAjYCLCACIBRBDGwgHSAZakECdGogACgCJGogF0EAIAEbajYCJCACIAJBCGo2AjAgAiACQSRqNgIIIAMgBCACQShqELEeDQEgAkEANgI4IAJBATYCLCACQeD6gwE2AiggAkIENwIwIAMgBCACQShqELEeIRMMAQtBASETCyACQcAAaiQAIBMLhhEBCn8jAEGwAWsiAyQAAkACQCABKAIAIgQtABQiBUECRg0AIAVBAXENACAAIAEoAgQgASgCCCACQRxqQQAQlw8MAQsCQAJAAkACQAJAAkACQAJAAkAgAigCAEGAgICAeHMiBUECIAVBAkkbDgMCAAECCyADQeAAaiACKAIIIAIoAgwQpQggAkEcaiEGDAILIAIoAhQhBSACKAIQIQcgA0GYAWogAigCBCACKAIIEMUFIANBpAFqIAcgBRDFBSADQYgBaiADKAKcASIHIAMo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EKgXAkAgAygCKEGAgICAeEcNACADQeAAaiAEIAItADQgA0EoakEEahCtGyADKAJgIgFBgICAgHhGDQACQEEkRQ0AIABBBGogA0HgAGpBBGpBJPwKAAALIAAgATYCAAJAIAMoAigiAUGAgICAeEcNACADKAIsIAMoAjBBBEEIEMARDAILIAEgAygCLEEBQQEQwBEMAQtBKEUNACAAIANBKGpBKPwKAAALIANBsAFqJAAL/g8CC38BfiMAQZABayICJAACQAJAIAEQgAsNACABKAIAQQFGDQEgASkDACENIAFCATcDACACQeAAakEoaiABQShqKQMANwMAIAJB4ABqQSBqIAFBIGopAwA3AwAgAkHgAGpBGGogAUEYaikDADcDACACQeAAakEQaiABQRBqKQMANwMAIAJB4ABqQQhqIAFBCGoiAykDADcDACADQQA2AgAgAiANNwNgIAJB4ABqENcDDAELAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAOEwASEgECAwQFBgcICQoLDA0ODxAACyAAIAFBBGoQwQIMEAsgACABKAIEEIwBIAAgASgCCBDfAQwPCyABKAIMIgNFDQ4gACADEIwBDA4LIAFBADoAJCAAIAEoAigQ3wEMDQsgAS0AJEECRg0NIAFBADoAJAwMCyABLQAkQQJGDQwgAUEAOgAkDAsLIAAgASgCBBCMASAAIAEoAggQ3wEgASgCFCIDRQ0KIAAgAxDfAQwKCyAAIAEoAhAQjAEgASgCDCIERQ0JIAEoAgghAyAEQRhsIQQDQAJAIANBFGooAgAiBUUNACAAIAUQjAELIAAgAxDBAiADQRhqIQMgBEFoaiIEDQAMCgsLIAAgASgCBBCMAQwICyAAIAEoAgQiA0HIAGoQwQIgA0HgAGohBAJAIAMoAgAiBUEIRg0AIANBKGohBgJAIAVBB0YNACADIAAQvgQgACgCAEUNACAAIAMQgwgLIAAgBhDBAgsgBCgCAEGAgICAeEYNByAAIAQQwQIMBwsgACABKAIEEIwBIAAgASgCCBDfAQwGCyAAIAEoAgQQjAEgACABKAIIEN8BDAULAkAgASgCBCIDQQJGDQACQCADQQFxRQ0AIAAgASgCCBCMAQwBCyABKAIIIgMoAggiBEUNACADKAIEIgcgBEE4bGohCANA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AAAAwKCjIA4gASARoaEiACABIACioKGhRAAAAAAAAPA/oCIBvSILQiCIp2oiA0GAgMAASA0AIAOtQiCGIAtC/////w+DhL8hAQwBCyABIAUQ/Q0hAQsgDyABoiEODAELRAAAAAAAAPA/IA6jIA4gC0IAUxshDiAMQn9VDQACQCAIIAdBgIDAgHxqcg0AIA4gDqEiASABow8LIA6aIA4gCEEBRhsPCyAOC5EQAg5/A34jAEGwBmsiAyQAAkACQCABKAIAQQFxRQ0AIANBkARqQRhqIAFBKGopAwA3AwAgA0GgBGogAUEgaikDADcDACADIAEpAxA3A5AEIAMgAUEYaikDADcDmAQMAQsgA0GoBGpCADcDACADQaAEakIANwMAIANCADcDmAQgA0IANwOQBAsCQAJAAkACQCACLwC5AkGzBnFFDQACQAJAIAEtAFtBAXENAEGAASEEA0AgBEH/AXFBAWoiBUH/AXEgBUcNAiADQcAAaiADQZAEaiAEQYABcUEDdmoiBikDACAGKQMIIARB/wBxEI0SIAUhBCADKQNAQgGDUEUNAAwECwtBgAEhBANAIANBMGpCAUIAIARB/wBxEIwSIANBkARqIARBA3ZBEHFqIgUgBSkDACADKQMwhDcDACAFIAUpAwggAykDOIQ3AwggBEH/AXFBAWoiBEH/AXEgBEYNAAwCCwsgAykDqARCAFkNAQsgA0GIAWogAykDmAQiETcCACADQZABaiADQZAEakEQaikDACISNwIAIANB0AFqQRhqIANBkARqQRhqKQMAIhM3AwAgA0HQAWpBEGogEjcDACADQdAAakEYaiATNwMAIANB0ABqQRBqIBI3AwAgAyADKQOQBCISNwKAASADIBE3A9gBIAMgEjcD0AEgAyARNwNYIAMgEjcDUAJAAkAgAUHaAGotAAAiBEECRg0AIARBAXENAEEAIQQCQEGAAkUNACADQbAEakEAQYAC/AsACwNAIANBsARqIARqIAQ6AAAgBEEBaiIEQYACRw0ADAILCyADQaABakEYaiACQagCaikDADcDACADQaABakEQaiACQaACaikDADcDACADIAIpA5ACNwOgASADIAJBmAJqKQMANwOoAQJAIANB0ABqQbDLhAFBIBCSFUUNAEEAIQUDQCAFQYACIAVBgAJLGyEGA0AgBiAFIgRGDQIgA0EgaiADQdAAaiAEQQN2QfD///8BcWoiBSkDACAFKQMIIARB/wBxEI0SIARBAWohBSADKQMgQgGDUA0ACwJAAkAgBEH+AU0NACAEIQcMAQsgBCEHA0AgA0EQaiADQdAAaiAFQQN2QfD///8BcWoiBikDACAGKQMIIAVB/wBxEI0SIAMpAxBCAYNQDQEgBSEHIAVBAWoiBiEFIAZBgAJHDQALQf8BIQdBgAIhBQsgA0GgAWogBCAHEJ4NDAALCyADQbAEaiADQaABahDQDAtBGCEFAkAgAS0AWUEBcUUNACACKALcAkEYbEEYaiEFCyACKALQAiEEIAMtAK8GIQggA0EIahCrDyADKAIMIQYgAygCCCIHIAcoAgAiCUF/ajYCAAJAIAlBAUcNACAHIAYQ+hcLAkACQAJAAkACQCABKAJEIglBgICAASABKAJAIgobIgcgBEEMbEEUQSAgCEEBamdrdGogBWogBkEDbGogBEEFbCACKALcAkECdGpBCWoiBGogBEEBdGpB5ABqIgRPDQAgAS0AXUEBcUUNASAEIQcLIAMtAK8GIQYCQEGAAkUNACADQfABakEAQYAC/AsACyADQagCakGBAjsAACADQbkCakKBgoSIkKDAgAE3AAAgA0HBAmpCgYKEiJCgwIABNwAAIANByQJqQYECOwAAIANB2QJqQoGChIiQoMCAATcAACADQeECakKBgoSIkKDAgAE3AAAgA0HpAmpBgQI7AAAgA0EEOgD9ASADQoGChIiQoMCAATcAoAIgA0KBgoSIkKDAgAE3ALECIANCgYKEiJCgwIABNwDRAiACLQDgAiEEIANBAzoA+gEgA0EBOgDPAgJAAkAgBEF2ag4EAQAAAQALIANB8AFqIARqQQU6AAALIAEtAFghCCABLQA8IgRBA0YNAiAEQQJGDQIgASgCMCIFIAUoAgAiC0EBajYCACALQX9MDQEgASgCOCEMIAEoAjQhDQwDCyAAQgA3AwggAEICNwMAIAAgBzYCGCAAIAQ2AhQgAEEqNgIQDAQLAAsLIAZBAWohBiABQdoAaiELAkACQCABKAIAQQFxDQBCACERDAELIANB8ANqQRhqIAFBKGopAwA3AwAgA0GABGogAUEgaikDADcDACADIAEpAxA3A/ADIAMgAUEYaikDADcD+ANCASERCyAGZyEGIAstAAAhCyABLQBb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AgAMBgsgAygCACIEIAEoAggiBUYNBCACQbABaiABEOYDIAJB0ABqQQhqIgYgAkHIAWopAgA3AwAgAkHQAGpBEGoiByACQdABaikCADcDACACIAIpAsABNwNQIAIoArwBIQQgAigCuAEhCCACKAK0ASEJAkAgAigCsAEiCkEiRg0AIAAgAikC2AE3AiwgAEE8aiACQegBaikCADcCACAAQTRqIAJB4AFqKQIANwIAIAAgBDYCECAAIAg2AgwgACAJNgIIIAAgAikDUDcCFCAAQRxqIAYpAwA3AgAgAEEkaiAHKQMANwIAIAAgCjYCBCAAQYSAgIB4NgIADAYLIAJB+ABqQQhqIAYpAwA3AwAgAkH4AGpBEGogBykDADcDACACIAIpA1A3A3ggAiABEL4JIgY2ApQBIAEQmggaAkACQCAGQSlGDQAgBkE6Rg0BIAJBADYCsAEgAkGUAWpBuIaFASACQbABakG8hoUBELQZAAsCQCAERQ0AIAJBrAFqIANBCGooAgA2AgAgACACKQN4NwIQIAAgBDYCDCAAIAg2AgggACAJNgIEIABBg4CAgHg2AgAgAkGYAWpBCGoiASACQSBqQQhqKAIANgIAIABBGGogAkH4AGpBCGopAwA3AgAgAEEgaiACQfgAakEQaikDADcCACACIAMpAgA3AqQBIAIgAikCIDcDmAEgAEE4aiACQZgBakEQaikDADcCACAAQTBqIAEpAwA3AgAgACACKQOYATcCKAwHCyACQRs2ArABIABBBGogASgCBCAFIAJBOGogAkGwAWoQ0QwgAEGEgICAeDYCACAJIAhBBEEcEMARDAYLIAAgBDYCDCAAIAg2AgggACAJNgIEIAAgAikDeDcCECAAQRhqIAJB+ABqQQhqKQMANwIAIABBIGogAkH4AGpBEGopAwA3AgAgAkHEAWogA0EIaigCACIBNgIAIAJBsAFqQQhqIAE2AgAgAiADKQIAIgs3ArwBIAIgCzcDsAEgAkEIaiACQbABahCdFUEALQDA8Z0BGiACKAIMIQNBCBCFASIBRQ0DIAFBADYCACAAIAIpAiA3AjAgACABNgIsIABBgoCAgHg2AgAgASADNgIEIABBOGogAkEgakEIaikCADcCACAAQcAAaiACQSBqQRBqKQIANwIADAULIAJBsAFqIAEgBBDuASACKAKwASEBAkBB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BEF8akEAIARBe2pBCEkbDgkAAQIDBAcHBQYACyABIAAQzwMMBgsgASAAQQhqEIIEDAULQQAhAyACQfAAakEAKQOY+5wBIgk3AgAgAkGAAWogCTcCACACQQA2AaoBIAJBADYCZCACQoCAgICAATcCXCACQoCAgICAATcCmAEgAkKAgICAwAA3AogBIAJBADYCoAEgAkEAOgCUASACQQA2ApABIAIgAS8BeDsBqAEgAiABKAJ0NgKkASACQQApA5D7nAEiCTcCaCACIAk3AnggAiABLQB+OgCuASABQSxqIQUgACgCICEGAkADQCADQdQARg0BIAEgA2pBLGoiBCgCACEHIAQgAkHcAGogA2oiCCgCADYCACAIIAc2AgAgA0EEaiEDDAALCwJAIAYoAhQiA0UNACAGKAIQIQQgA0EMbCEHIAEtAHkhCCABLQAoIQADQCAEKAIAIQMgAUEAOgB5IAFBADoAKAJAIAMoAgBBGkcNACACQbABaiADKQMIIANBGGooAgAQuhggBSACKQOwASACKAK4ARDRCgsgBEEMaiEEIAMgARB3IAEgADoAKCABIAg6AHkgB0F0aiIHDQALCwJAIAYoAggiBEUNACAGKAIEIQMgBEEGdCEEA0AgASADEKcLIANBwABqIQMgBEFAaiIEDQALCwJAIAYoAhhBgICAgHhGDQAgBkEgaigCACIERQ0AIAZBHGooAgAhAyAEQTBsIQQDQCABQQA6AH0gAyABEGsgA0EwaiEDIARBUGoiBA0ACwsgBSACQdwAahCTAwwECwJAIAAoAghBA0cNACABLQAoIQQgAUEAOgAoIAEtAHkhByABQQA6AHkCQCAAKAIMIgMoAgBBGkcNACACQbABaiADKQMIIANBGGooAgAQuhggAUEsaiACKQOwASACKAK4ARDRCgsgAyABEHcgASAEOgAoIAEgBzoAeQsCQCAAKAI8IgNFDQAgAS0AKCEEIAFBADoAKCABLQB5IQcgAUEAOgB5AkAgAygCAEEaRw0AIAJBsAFqIAMpAwggA0EYaigCABC6GCABQSxqIAIpA7ABIAIoArgBENEKCyADIAEQdyABIAQ6ACggASAHOgB5CyAAKAI4IgRFDQMgACgCNCEDIARBDGwhByABQSxqIQUgAS0AeSEIIAEtACghAANAIAFBADoAeSABQQA6ACgCQCADKAIAIgQoAgBBGkcNACACQbABaiAEKQMIIARBGGooAgAQuhggBSACKQOwASACKAK4ARDRCgsgA0EMaiEDIAQgARB3IAEgADoAKCABIAg6AHkgB0F0aiIHDQAMBAsLAkAgACgCJCIDRQ0AIAEtACghBCABQQA6ACggAS0AeSEHIAFBADoAeQJAIAMoAgBBGkcNACACQbABaiADKQMIIANBGGooAgAQuhggAUEsaiACKQOwASACKAK4ARDRCgsgAyABEHcgASAEOgAoIAEgBzoAeQsgACgCNCIERQ0CIAAoAjAhAyAEQQxsIQcgAUEsaiEFIAEtAHkhCCABLQAoIQADQCABQQA6AHkgAUEAOgAoAkAgAygCACIEKAIAQRpHDQAgAkGwAWogBCkDCCAEQRhqKAIAELoYIAUgAikDsAEgAigCuAEQ0QoLIANBDGohAyAEIAEQdyABIAA6ACggASAIOgB5IAdBdGoiBw0ADAMLCyACQRxqQQApA5j7nAEiCTcCACACQSxqIAk3AgAgAkEANgFWIAJBADYCECACQoCAgICAATcCCCACQoCAgICAATcCRCACQoCAgIDAADcCNCACQQA2AkwgAkEAOgBAIAJBADYCPCACIAEvAXg7AVQgAiABKAJ0NgJQIAJBACkDkPucASIJNwIUIAIgCTcCJCACIAEtAH46AFogAUEsaiEFAkADQCADQdQARg0BIAEgA2pBLGoiBCgCACEHIAQgAkEIaiADaiIIKAIANgIAIAggBzYCACADQQRqIQMMAAsLAkAgACgCDCIERQ0AIAAoAgghAyAEQTBsIQQDQCABQQA6AH0gAyABEGsgA0EwaiEDIARBUGoiBA0ACwsgBSACQQhqEJMDDAELAkAgACgCCCIDQQVGDQAgA0EDRw0AIAEtACghBCABQQA6ACggAS0AeSEHIAFBADoAeQJAIAAoAgwiAygCAEEaRw0AIAJBsAFqIAMpAwggA0EYaigCABC6GCABQSxqIAIpA7ABIAIoArgBENEKCyADIAEQdyABIAQ6ACggASAHOgB5CwJAIAAoAjwiA0UNACABLQAoIQQgAUEAOgAoIAEtAHkhByABQQA6AHkCQCADKAIAQRpHDQAgAkGwAWogAykDCCADQRhqKAIAELoYIAFBLGogAikDsAEgAigCuAEQ0QoLIAMgARB3IAEgBDoAKCABIAc6AHkLIAAoAjgiBEUNACAAKAI0IQMgBEEMbCEHIAFBLGohBSABLQB5IQggAS0AKCEAA0AgAUEAOgB5IAFBADoAKAJAIAMoAgAiBCgCAEEaRw0AIAJBsAFqIAQpAwggBEEYaigCABC6GCAFIAIpA7ABIAIoArgBENEKCyADQQxqIQMgBCABEHcgASAAOgAoIAEgCDoAeSAHQXRqIgcNAAsLIAJBwAFqJAAL8w4CDn8BfiMAQYABayICJAACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQXtqIgNBBCADQQZJGw4GAAECAwQFAAsgASgCGCEDIAEoAhQhBCABKAIQIQUCQCABKQMIIhBCA4NCAFINACAQpyIGIAYoAgAiBkEBajYCACAGQX9MDQcLIAAgAzYCGCAAIAQ2AhQgACAFNgIQIAAgEDcDCCAAQQU2AgAgACABLQAcOgAcDAULIAJB0ABqIAFBCGoQ+wRBAC0AwPGdARpBwAAQhQEiA0UNBSADIAEoAigQRCAAQSBqIAJB0ABqQRhqKQMANwMAIABBGGogAkHQAGpBEGopAwA3AwAgAEEQaiACQdAAakEIaikDADcDACAAIAIpA1A3AwggAEEGNgIAIAAgAzYCKAwECyABKAIgIQQgASgCHCEFIAEoAhghBiABKAIMIQcgASgCCCEIAkAgASkDECIQQgODQgBSDQAgEKciAyADKAIAIgNBAWo2AgAgA0F/TA0FC0EALQDA8Z0BGiABLQAkIQlBwAAQhQEiA0UNBCADIAEoAigQRCAAIAM2AiggACAJOgAkIAAgBDYCICAAIAU2AhwgACAGNgIYIAAgEDcDECAAIAc2AgwgACAINgIIIABBBzYCAAwDCyABKAJEIQggASgCQCEJIAJBKGogAUEIahD7BAJAAkAgASgCSCIDDQBBACEGDAELQQAtAMDxnQEaQQwQhQEiBkUNBEEALQDA8Z0BGiADKAIIIQUgAygCBCEHQeAAEIUBIgRFDQQgBCADKAIAEGQgBiAFNgIIIAYgBzYCBCAGIAQ2AgALQYCAgIB4IQcCQAJAIAEoAihBgICAgHhHDQAMAQsgASgCLCEDIAEoAjwhCiABKAI4IQsgASgCNCEMIAJB0ABqIAEoAjAiDUEIQTAQzA0gAigCVCEHIAIoAlBBAUYNBSACKAJYIQ4CQCAHRQ0AIA1BMGwhBCAOIQEgByEFA0AgBEUNASACQdAAaiADEIABIAFBKGogAkHQAGpBKGopAwA3AwAgAUEgaiACQdAAakEgaikDADcDACABQRhqIAJB0ABqQRhqKQMANwMAIAFBEGogAkHQAGpBEGopAwA3AwAgAUEIaiACQdAAakEIaikDADcDACABIAIpA1A3AwAgAUEwaiEBIARBUGohBCADQTBqIQMgBUF/aiIFDQALCyANrUIghiAOrYQhEAsgACACKQMoNwMIIABBIGogAkEoakEYaikDADcDACAAQRhqIAJBKGpBEGopAwA3AwAgAEEQaiACQShqQQhqKQMANwMAIAAgBjYCSCAAIAg2AkQgACAJNgJAIAAgCjYCPCAAIAs2AjggACAMNgI0IAAgEDcCLCAAIAc2AiggAEEINgIADAILIAEoAmQhCSABKAJgIQwgAkEIaiABEPsEQQchCAJAIAEoAiBBB0YNACACQdAAaiABQSBqEKcCIAJBMGogAkHcAGopAgA3AwAgAkE4aiACQeQAaikCADcDACACQcAAaiACQewAaikCADcDACACQShqQSBqIAJB9ABqKAIANgIAIAIgAikCVDcDKCACKAJQIQgLQQAtAMDxnQEaQSgQhQEiB0UNAiAHIAEoAmgQpwJBgICAgHghBgJAAkAgASgCSEGAgICAeEcNAAwBCyABKAJMIQMgASgCXCENIAEoAlghCiABKAJUIQsgAkHQAGogASgCUCIOQQhBMBDMDSACKAJUIQYgAigCUEEBRg0FIAIoAlghDwJAIAZFDQAgDkEwbCEEIA8hASAGIQUDQCAERQ0BIAJB0ABqIAMQgAEgAUEoaiACQdAAakEoaikDADcDACABQSBqIAJB0ABqQSBqKQMANwMAIAFBGGogAkHQAGpBGGopAwA3AwAgAUEQaiACQdAAakEQaikDADcDACABQQhqIAJB0ABqQQhqKQMANwMAIAEgAikDUDcDACABQTBqIQEgBEFQaiEEIANBMGohAyAFQX9qIgUNAAsLIA6tQiCGIA+thCEQCyAAIAIpAwg3AwAgACACKQMoNwIkIABBGGogAkEIakEYaikDADcDACAAQRBqIAJBCGpBEGopAwA3AwAgAEEIaiACQQhqQQhqKQMANwMAIABBLGogAkEoakEIaikDADcCACAAQTRqIAJBKGpBEGopAwA3AgAg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AiADQZABaiADQewBaiADQdgAaiADQfQAahC+BSADKAKUASEPAkAgAygCkAEiBEEiRg0AAkBBOEUNACAAQQhqIANBkAFqQQhqQTj8CgAACyAAIA82AgQgACAENgIAQQEhBAwCC0EBIQRBAiENQQAhDgsCQAJAIAUoAgAgC0YNACABEL4JQf0ARg0BCyADQaQBaiAFQQhqKAIANgIAIANBkAFqQQhqIANBCGooAgA2AgAgAyADKQMANwOQASADIAUpAgA3ApwBIANBGjYC7AEgACABKAIEIAsgA0GQAWogA0HsAWoQ0QwMAQtBASEQAkAgARDMG0UNACABEL4JQT9HDQAgARCaCBpBACEQCyADQeQBaiAFQQhqKAIANgIAIANB0AFqQQhqIANBCGooAgA2AgAgAyADKQMANwPQASADIAUpAgA3AtwBIA4gDCAPTXINASADQRg2AuwBIAAgASgCBCALIANB0AFqIANB7AFqENEMCyAKRQ0CIARFDQIgAygCGEEiRg0CIAMoAjQgAygCOEEBQQEQwBEMAgsgCSEBAkACQAJAAkACQAJAAkACQCAHQX5qDgoABwcBBwIDBAUGAAsgCUEEaiEBDAYLIAlBHGohAQwFCyAJQdgAaiEBDAQLIAlBKGohAQwDCyAJQTBqIQEMAgsgCUEMaiEBDAELIAlBDGohAQsgA0GQAWpBFGogBUEIaigCADYCACADQZABakEIaiIEIAFBCGooAgA2AgAgA0HsAWpBFGogA0HQAWpBCGopAwA3AgAgA0GIAmogA0HQAWpBEGopAwA3AgAgAyADKQPQATcC+AFBAC0AwPGdARogAyAFKQIANwKcASADIAEpAgA3A5ABQQgQhQEiAUUNACABIAk2AgQgASAHNgIAIANBnAJqIAQpAwA3AgAgA0GkAmogA0GQAWpBEGopAwA3AgAgAyADKQOQATcClAIgAyAQOgCsAiADIA82AvQBIAMgDDYC8AEgAyANNgLsASADIAE2ApACIAggA0HsAWoQ9xo2AgQgCEEINgIAIAIgBjYCCAJAQSRFDQAgAEEEaiACQST8CgAACyAAQSI2AgAMAwsACyADQRBqELADCyACEOUXCyADQbACaiQAC5QPAQV/IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgC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IQAgBEGof2oiBA0ACwsCQCADQZgBaigCACIARQ0AIANBlAFqKAIAIgYgAEEobGohBwNAAkACQAJAAkACQAJAAkAgBigCAA4FBgABAgUGCyAGKAIEQQFHDQUgBigCCCIAKAIAQRpHDQMgAkGQAWogASgCACABKAIEIABBCGoiBBC1DCACKAKQAUEyRg0FIAAQyQEgAEE4aiACQZABakE4aikDADcDACAAQTBqIAJBkAFqQTBqKQMANwMAIABBKGogAkGQAWpBKGopAwA3AwAgAEEgaiACQZABakEgaikDADcDACAAQRhqIAJBkAFqQRhqKQMANwMAIABBEGogAkGQAWpBEGopAwA3AwAgBCACQZABakEIaikDADcDACAAIAIpA5ABNwMADAULIAYoAgQiACgCAEEaRw0BIAJB0ABqIAEoAgAgASgCBCAAQQhqIgQQtQwgAigCUEEyRg0EIAAQyQEgAEE4aiACQdAAakE4aikDADcDACAAQTBqIAJB0ABqQTBqKQMANwMAIABBKGogAkHQAGpBKGopAwA3AwAgAEEgaiACQdAAakEgaikDADcDACAAQRhqIAJB0ABqQRhqKQMANwMAIABBEGogAkHQAGpBEGopAwA3AwAgBCACQdAAakEIaikDADcDACAAIAIpA1A3AwAMBAsCQCAGKAIEIggtAGxBAkcNACAIQcAAaiEAA0AgACgCGCIALQAsQQJGDQALCwJAIAhBhAFqKAIAIgRFDQAgCEGAAWooAgAhACAEQdgAbCEEA0ACQAJAAkAgACgCAEEFRw0AIABBBGooAgAiBSgCAEEaRw0BIAJBkAJqIAEoAgAgASgCBCAFQQhqIgkQtQwgAigCkAJBMkYNAiAFEMkBIAVBOGogAkGQAmpBOGopAwA3AwAgBUEwaiACQZACakEwaikDADcDACAFQShqIAJBkAJqQShqKQMANwMAIAVBIGogAkGQAmpBIGopAwA3AwAgBUEYaiACQZACakEYaikDADcDACAFQRBqIAJBkAJqQRBqKQMANwMAIAkgAkGQAmpBCGopAwA3AwAgBSACKQOQAjcDAAwCCyAAIAEQpwgMAQsgBSABEEYLIABB2ABqIQAgBEGof2oiBA0ACwsCQCAIQZgBaigCACIERQ0AIAhBlAFqKAIAIQAgBEEobCEEA0AgASAAELsCIABBKGohACAE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gHg2ApABIAMgAjYClAEMBQsgASgCxAEhBiABKALAASEHIANBzAFqIAIQ3hsgA0EBNgK0AiADQZjvmwE2ArACIANCATcCvAIgA0GKBa1CIIZBiKObAa2ENwPoASADIANB6AFqNgK4AiADQfABaiADQbACahCNFSADQYQCaiADQdQBaigCADYCACADIAMpAswBNwL8ASAHIAYgA0HwAWoQhRUhAgJAIAEtAMgBQaIBRw0AIAEQxxEhBiABEIcOIAEgBhDlEQsgA0GBgICAeDYCkAEgAyACNgKUAQwECyABLQDIASEGCyADIAI2AtgBAkAgBkH/AXFBG0cNACABEIcOIANBkAFqQQhqIANBsAFqQQhqKAIANgIAIAMgAjYCoAEgAyAFNgKcASADIAMpArABIg83A5ABIA+nIQIMBgsgASgCxAEhAiABKALAASEHIANB3AFqIAYQ3hsgA0EBNgK0AiADQZjvmwE2ArACIANCATcCvAIgA0GKBa1CIIZByKibAa2ENwPoASADIANB6AFqNgK4AiADQfABaiADQbACahCNFSADQYQCaiADQeQBaigCADYCACADIAMpAtwBNwL8ASAHIAIgA0HwAWoQhRUhAgJAIAEtAMgBQaIBRw0AIAEQxxEhBiABEIcOIAEgBhDlEQsgA0GBgICAeDYCkAEgAyACNgKUASADQdgBahCpHwwCCyADQYGAgIB4NgKQASADIAc2ApQBDAILAAsgA0GwAWoQ1B0LQYGAgIB4IQILIAUQ7x8LAkACQCACQYCAgIB4ag4CAAEDCyABIANBIGoQ8AUgAygCkAFBgYCAgHhHDQMgA0GQAWoQshoMAwsgAygCkAEhAiABIANBIGoQ8AUgAkGBgICAeEcNAgsgA0GQAWoQshoMAQsgASABKAJ4QX5xIARBAXFyNgJ4IAMoApABIQIgAygCoAEhByADKAKcASEGIAMpApQBIQ8gA0EgahD9HiACQYCAgIB4Rg0AIAEgASgCeCINQf98cUGAAXI2AnggAyACNgKwAiADIAc2AsQCIAMgBjYCwAIgAyAPNwK0AiADIANBHGo2ArwCIAMgAUEBIA+nIA9CIIinENsYEK8JIAMoAgQhDgJAAkAgAygCAEEBcUUNACAAIA42AgQgA0GwAmoQ1B0gBhDvHyADQcQCahCpH0GBgICAeCECDAELIAAgDzcCBCABKAK8ASEMIAMoAhwhCRDcGiELIANBxABqQQA7AQAgAEEBOwEkIAAgBzYCICAAIAY2AhwgAEEANgIYIAAgDDYCFCAAIAk2AhAgACAONgIMIANBADYCOCADQgA3AjAgA0IANwI8IAMgCzYCLCADQQA2AiggA0KAgICAgAE3AiAgA0EgahDYHAsgACACNgIAIAEgDTYCeAwBCyAAQYCAgIB4NgIACyADQfACaiQAC5oOAQt/IwBB4AJrIgIkACACQaACaiABEMYXIAIoAqACIQMCQEE4RQ0AIAJB+ABqIAJBoAJqQQRqQTj8CgAACwJAAkAgA0EiRg0AIAIoAtwCIQECQEE4RQ0AIABBCGogAkH4AGpBOPwKAAALIAAgATYCQCAAIAM2AgQgAEGIgMQANgIADAELAkBBOEUNACACQQhqIAJB+ABqQTj8CgAACyABEOADAkACQAJAIAEoAgAoAlAgASgCCCIERg0AIAJBCGpBBGohAyABEL4JQS1HDQIgARCHBEHdAEYNAiABEIcEQS1GDQICQCABEMwbDQAgAEEEaiABELUKIABBiIDEADYCAAwCCyACQaACaiABEMYXIAIoAqACIQUCQEE4RQ0AIAJB+ABqIAJBpAJqQTj8CgAACwJAIAVBIkYNACACKALcAiEBAkBBOEUNACAAQQhqIAJB+ABqQTj8CgAACyAAIAE2AkAgACAFNgIEIABBiIDEADYCAAwCCwJAQThFDQAgAkHAAGogAkH4AGpBOPwKAAALIAJBCGpBCGohBQJAAkACQCACKAIIQf7///8HaiIGQQQgBkEESRsOBQIAAAABAgsgAyEFDAELIAJBCGpBHGohBQsgAkHAAGpBCGohAwJAAkACQCACKAJAQf7///8HaiIGQQQgBkEESRsOBQIAAAABAgsgAkHAAGpBBGohAwwBCyACQcAAakEcaiEDCyACQegBakEUaiADQRRqKAIANgIAIAJB6AFqQQhqIAVBCGooAgA2AgAgAiADKQIMNwL0ASACIAUpAgA3A+gBIAJBoAJqIAJBCGogASgCBCIDIAQQowwgAkGAAmpBCGoiBSACQaACakEQaiIHKQIANwMAIAJBgAJqQRBqIgggAkGgAmpBGGoiCSkCADcDACACQYACakEYaiIKIAJBwAJqIgsoAgA2AgAgAiACKQKoAjcDgAIgAigCpAIhAQJAIAIoAqACIgxBIkYNACAAIAIpAsQCNwIoIABBwABqIAJB3AJqKAIANgIAIABBOGogAkHUAmopAgA3AgAgAEEwaiACQcwCaikCADcCACAAQSRqIAooAgA2AgAgAEEcaiAIKQMANwIAIABBFGogBSkDADcCACAAIAIpA4ACNwIMIAAgATYCCCAAIAw2AgQgAEGIgMQANgIAIAZBBEkNBCACQcAAahDjFAwECyACQaACaiACQcAAaiADIAQQowwgAkH4AGpBCGogBykCADcDACACQfgAakEQaiAJKQIANwMAIAJB+ABqQRhqIAsoAgA2AgAgAiACKQKoAjcDeCACKAKkAiEFAkAgAigCoAIiBkEiRg0AIAAgAikCxAI3AiggAEHAAGogAkHcAmooAgA2AgAgAEE4aiACQdQCaikCADcCACAAQTBqIAJBzAJqKQIANwIAIABBJGogAkGQAWooAgA2AgAgAEEcaiACQYgBaikDADcCACAAQRRqIAJBgAFqKQMANwIAIAAgAikDeDcCDCAAIAU2AgggACAGNgIEIABBiIDEADYCAAwECyACQbABakEIaiACQfgAakEIaikDADcDACACQbABakEQaiACQfgAakEQaikDADcDACACQbABakEYaiACQfgAakEYaigCADYCACACQbABakEkaiACQegBakEIaikDADcCACACQdwBaiACQegBakEQaikDADcCACACIAIpA3g3A7ABIAIgAikD6AE3AswBAkAgASAFTQ0AIAJBAjYCoAIgAEEEaiADIAQgAkHoAWogAkGgAmoQ0QwgAEGIgMQANgIADAQLIAAgAikDgAI3AgQgAEEcaiACQYACakEYaigCADYCACAAQRRqIAJBgAJqQRBqKQMANwIAIABBDGogAkGAAmpBCGopAwA3AgACQEE0RQ0AIABBJGogAkGwAWpBNPwKAAALIAAgBTYCICAAIAE2AgAMAwsgAEEEaiABELUKIABBiIDEADYCAAsgAigCCEH+////B2pBBEkNASACQQhqEOMUDAELAkBBOEUNACACQaACaiACQQhqQTj8CgAACwJAAkACQAJAIAIoAqACQf7///8HaiIFQQQgBUEESSIFGw4FAQAAAgMACyACQQE2AnggAEEEaiABKAIEIAQgAkGgAmpBBGogAkH4AGoQ0QwgAEGIgMQANgIAIAUN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AgBBGkcNACACQYACaiABKAIAIAEoAgQgAEEIaiIGELUMIAIoAoACQTJGDQEgABDJASAAQThqIAJBgAJqQThqKQMANwMAIABBMGogAkGAAmpBMGopAwA3AwAgAEEoaiACQYACakEoaikDADcDACAAQSBqIAJBgAJqQSBqKQMANwMAIABBGGogAkGAAmpBGGopAwA3AwAgAEEQaiACQYACakEQaikDADcDACAGIAJBgAJqQQhqKQMANwMAIAAgAikDgAI3AwAMAQsgACABEEYLIANBDGohAyAFQXRqIgUNAAsLAkAgBEEUaigCACIDRQ0AIARBEGooAgAhACADQdgAbCEDA0AgACABEGggAEHYAGohACADQah/aiIDDQALCyAEKAIwIgBFDQQCQCAAKAIAQRpHDQAgAkHAAWogASgCACABKAIEIABBCGoiARC1DCACKALAAUEyRg0FIAAQyQEgAEE4aiACQcABakE4aikDADcDACAAQTBqIAJBwAFqQTBqKQMANwMAIABBKGogAkHAAWpBKGopAwA3AwAgAEEgaiACQcABakEgaikDADcDACAAQRhqIAJBwAFqQRhqKQMANwMAIABBEGogAkHAAWpBEGopAwA3AwAgASACQcABakEIaikDADcDACAAIAIpA8ABNwMADAULIAAgARBGDAQLAkAgACgCBCIAKAIAQRpHDQAgAkHAAGogASgCACABKAIEIABBCGoiARC1DCACKAJAQTJGDQQgABDJASAAQThqIAJBwABqQThqKQMANwMAIABBMGogAkHAAGpBMGopAwA3AwAgAEEoaiACQcAAakEoaikDADcDACAAQSBqIAJBwABqQSBqKQMANwMAIABBGGogAkHAAGpBGGopAwA3AwAgAEEQaiACQcAAakEQaikDADcDACABIAJBwABqQQhqKQMANwMAIAAgAikDQDcDAAwECyAAIAEQRgwDCyAAKAIQIgBFDQIgAEEIaigCACIDRQ0CIABBBGooAgAhACADQQxsIQMDQCAAIAEQywEgAEEMaiEAIANBdGoiAw0ADAMLCwJAIAAoAgQiACgCAEEaRw0AIAIgASgCACABKAIEIABBCGoiARC1DCACKAIAQTJGDQIgABDJASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAA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CwsCQCAAKAIkIgJFDQAgASACEKcBCyAAKAI0IgVFDQIgACgCMCECIAVBDGwhBQNAIAEgAigCABCnASACQQxqIQIgBUF0aiIFDQAMAwsLIAAoAgwiBUUNASAAKAIIIQIgBUEwbCEFA0AgAiABEI8DIAJBMGohAiAFQVBqIgUNAAwCCwsCQCAAKAIIIgJBBUYNACACQQNHDQAgASAAKAIMEKcBCwJAIAAoAjwiAkUNACABIAIQpwELIAAoAjgiBUUNACAAKAI0IQIgBUEMbCEFA0AgASACKAIAEKcBIAJBDGohAiAFQXRqIgUNAAsLC+ULAQd/IwBBwAJrIgIkAAJAIAAoAggiA0UNACAAKAIEIgQgA0EobGohBQNAAkACQAJAAkACQAJAAkAgBCgCAA4FBgABAgUGCyAEKAIEQQFHDQUgBCgCCCIAKAIAQRpHDQMgAkHAAWogASgCACABKAIEIABBCGoiAxC1DCACKALAAUEyRg0FIAAQyQEgAEE4aiACQcABakE4aikDADcDACAAQTBqIAJBwAFqQTBqKQMANwMAIABBKGogAkHAAWpBKGopAwA3AwAgAEEgaiACQcABakEgaikDADcDACAAQRhqIAJBwAFqQRhqKQMANwMAIABBEGogAkHAAWpBEGopAwA3AwAgAyACQcABakEIaikDADcDACAAIAIpA8ABNwMADAULIAQoAgQiACgCAEEaRw0BIAJBgAFqIAEoAgAgASgCBCAAQQhqIgMQtQwgAigCgAFBMkYNBCAAEMkBIABBOGogAkGAAWpBOGopAwA3AwAgAEEwaiACQYABakEwaikDADcDACAAQShqIAJBgAFqQShqKQMANwMAIABBIGogAkGAAWpBIGopAwA3AwAgAEEYaiACQYABakEYaikDADcDACAAQRBqIAJBgAFqQRBqKQMANwMAIAMgAkGAAWpBCGopAwA3AwAgACACKQOAATcDAAwECwJAIAQoAgQiBi0AbEECRw0AIAZBwABqIQADQCAAKAIYIgAtACxBAkYNAAsLAkAgBkGEAWooAgAiA0UNACAGQYABaigCACEAIANB2ABsIQMDQAJAAkACQAJAIAAoAgBBfGoOAgMAAQsgAEEEaigCACIHKAIAQRpHDQEgAkGAAmogASgCACABKAIEIAdBCGoiCBC1DCACKAKAAkEyRg0CIAcQyQEgB0E4aiACQYACakE4aikDADcDACAHQTBqIAJBgAJqQTBqKQMANwMAIAdBKGogAkGAAmpBKGopAwA3AwAgB0EgaiACQYACakEgaikDADcDACAHQRhqIAJBgAJqQRhqKQMANwMAIAdBEGogAkGAAmpBEGopAwA3AwAgCCACQYACakEIaikDADcDACAHIAIpA4ACNwMADAILIAAgARDFCAwBCyAHIAEQRgsgAEHYAGohACADQah/aiIDDQALCwJAIAZBmAFqKAIAIgBFDQAgAEEobCEDIAZBlAFqKAIAQQRqIQADQAJAAkACQAJAAkACQAJAIABBfGooAgAOBQYAAQIDBgsgACgCAEEBRw0FIABBBGooAgAiBygCAEEaRw0DIAJBwABqIAEoAgAgASgCBCAHQQhqIggQtQwgAigCQEEyRg0FIAcQyQEgB0E4aiACQcAAakE4aikDADcDACAHQTBqIAJBwABqQTBqKQMANwMAIAdBKGogAkHAAGpBKGopAwA3AwAgB0EgaiACQcAAakEgaikDADcDACAHQRhqIAJBwABqQRhqKQMANwMAIAdBEGogAkHAAGpBEGopAwA3AwAgCCACQcAAakEIaikDADcDACAHIAIpA0A3AwAMBQsgACgCACIHKAIAQRpHDQMgAiABKAIAIAEoAgQgB0EIaiIIELUMIAIoAgBBMkYNBCAHEMkBIAdBOGogAkE4aikDADcDACAHQTBqIAJBMGopAwA3AwAgB0EoaiACQShqKQMANwMAIAdBIGogAkEgaikDADcDACAHQRhqIAJBGGopAwA3AwAgB0EQaiACQRBqKQMANwMAIAggAkEIaikDADcDACAHIAIpAwA3AwAMBAsgACABELMGDAMLIAAgARCyAgwCCyAHIAEQRgwBCyAHIAEQRgsgAEEoaiEAIANBWGoiAw0ACwsgBi0APCIAQQZGDQMgAEECRw0DIAZBEGohAANAIAAoAhgiAC0ALEECRg0ADAQLCyAAIAEQRgwCCyAAIAEQRgwBCyAEQQxqKAIAIgNFDQAgBEEIaigCACEAIANBKGwhAwNAIAEgABC7AiAAQShqIQAgA0FYaiIDDQALCyAEQShqIgQgBUcNAAsLIAJBwAJqJAALyAwCFH8DfiMAQdAAayICJAAgACgCACEDAkACQCABKAIAIgRBkPqDAUEOIAEoAgQiBSgC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lwwCCX8DfiMAQZABayIBJAACQAJAIAAoAgQiAi0ATCIDQQdGDQAgACgCACEEQQAhBQJAAkBBAC0AzPCdAUUNAEEAKALQ8J0BIgVB/////wdJDQFBvLqYARD5FAALQQBBAToAzPCdAUEAQQE2AtTwnQFBAEGAxZgBNgLY8J0BQQBBADYC0PCdAQtBACAFNgLQ8J0BAkAgAigCAEECRg0AIARBNGoiBRCUBCACKAIAIQMgAUEUaiACKAIIIAIoAgwQ8xIgASADNgIQIARBOGohAyABQRBqEMgFIQogASABQRBqNgKIAQJAIAQoAkANACADIARByABqEOEGGgsgASADNgJUIAEgAUGIAWo2AlAgAUEIaiAEKAI4IAQoAjwgCiABQdAAakElEIYJAkACQCABKAIIQQFxRQ0AIAQoAjgiAyABKAIMIgZqIgctAAAhCCABQRBqQQhqKQIAIQsgASkCECEMIAcgCkIZiKciCToAACADIAQoAjwgBkF4anFqQQhqIAk6AAAgBCAEKAJEQQFqNgJEIAQgBCgCQCAIQQFxazYCQCADIAZBBHRrQXBqIgMgDDcCACADQQhqIAs3AgAMAQsgASgCFCABKAIYEI4gCyAFEP0MIAItAEwhAwsgAUHIAGpCADcDACABQcAAakIANwMAIAFBOGpCADcDACABQgA3AzAgAULzytHLp4zZsvQANwMoIAFCg9+R85bM3LfkADcDICABQuHklfPW7Nm87AA3AxggAUL1ys2D16zbt/MANwMQIAMgAUEQahC8ICACQRRqKAIAIAJBGGooAgAgAUEQahCmECABQRBqIAIoAgAiA0ECRxDOHAJAIANBAkYNACABQRBqIAMQzhwgAkEIaigCACACQQxqKAIAIAFBEGoQnx8LIAJBHGogAUEQahDIDSACKAI4IQggAUEQaiACKAI8IgMQmCEgA0EGdCEHQQAhBQJAA0AgByAFRg0BIAggBWoiA0E8ai0AACABQRBqELwgIANBBGooAgAgA0EIaigCACABQRBqEKYQIANBDGogAUEQahDIDSABQRBqIANBJGoiBigCACIDQYCAgIB4RxDOHAJAIANBgICAgHhGDQAgBiABQRBqEMgNCyAFQcAAaiEFDAALCyACKAJEIQggAUEQaiACKAJIIgMQmCEgCCADQRxsaiEJAkADQCAIIAlGDQEgCCgC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AgBBGkcNASACIAAoAgAgACgCBCABQQhqIgAQtQwgAigCAEEyRg0EIAEQyQEgAUE4aiACQThqKQMANwMAIAFBMGogAkEwaikDADcDACABQShqIAJBKGopAwA3AwAgAUEgaiACQSBqKQMANwMAIAFBGGogAkEYaikDADcDACABQRBqIAJBEGopAwA3AwAgACACQQhqKQMANwMAIAEgAikDADcDAAwECwJAIAEoAgQiAy0AbEECRw0AIANBwABqIQEDQCABKAIYIgEtACxBAkYNAAsLAkAgA0GEAWooAgAiBEUNACADQYABaigCACEBIARB2ABsIQQDQAJAAkACQAJAIAEoAgBBfGoOAgMAAQsgAUEEaigCACIFKAIAQRpHDQEgAkGAAmogACgCACAAKAIEIAVBCGoiBhC1DCACKAKAAkEyRg0CIAUQyQEgBUE4aiACQYACakE4aikDADcDACAFQTBqIAJBgAJqQTBqKQMANwMAIAVBKGogAkGAAmpBKGopAwA3AwAgBUEgaiACQYACakEgaikDADcDACAFQRhqIAJBgAJqQRhqKQMANwMAIAVBEGogAkGAAmpBEGopAwA3AwAgBiACQYACakEIaikDADcDACAFIAIpA4ACNwMADAILIAEgABDFCAwBCyAFIAAQRgsgAUHYAGohASAEQah/aiIEDQALCwJAIANBmAFqKAIAIgFFDQAgAUEobCEEIANBlAFqKAIAQQRqIQEDQAJAAkACQAJAAkACQAJAIAFBfGooAgAOBQYAAQIDBgsgASgCAEEBRw0FIAFBBGooAgAiBSgCAEEaRw0DIAJBwAFqIAAoAgAgACgCBCAFQQhqIgYQtQwgAigCwAFBMkYNBSAFEMkBIAVBOGogAkHAAWpBOGopAwA3AwAgBUEwaiACQcABakEwaikDADcDACAFQShqIAJBwAFqQShqKQMANwMAIAVBIGogAkHAAWpBIGopAwA3AwAgBUEYaiACQcABakEYaikDADcDACAFQRBqIAJBwAFqQRBqKQMANwMAIAYgAkHAAWpBCGopAwA3AwAgBSACKQPAATcDAAwFCyABKAIAIgUoAgBBGkcNAyACQYABaiAAKAIAIAAoAgQgBUEIaiIGELUMIAIoAoABQTJGDQQgBRDJASAFQThqIAJBgAFqQThqKQMANwMAIAVBMGogAkGAAWpBMGop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ACADQfAAakEIaiADQZABakEMaiIMKQIANwMAIAMgAykClAE3A3AgDCAIQQxqKQIANwIAIAsgCEEUaikCADcCACAJIAhBHGopAgA3AgAgAyAKNgKQASADIAgpAgQ3ApQBAkBBLEUNACADQcQAaiAIQSRqQSz8CgAACyADQShqQQhqIAhB3ABqKAIANgIAIAMgCCkCVDcDKAwBCyAILQBsIQcgCCgCUCEGIANBnAFqIAlBCGopAgA3AgAgA0GkAWogCUEQaikCADcCACADQawBaiAJQRhqKQIANwIAIAMgCjYCkAEgAyAJKQIANwKUAQJAQSxFDQAgA0HEAGogCEEkakEs/AoAAAsgA0EoakEIaiAIQdwAaigCADYCACADIAgpAlQ3AyhBgICAgHghBQsgBCAHQQFxOgBkIAIgBCkCUDcCGCACQSBqIARB2ABqIggoAgA2AgAgARCaCBogA0EoakEUaiAIKAIANgIAIAMgBCkCUDcCNAJAAkAgBUGAgICAeEYNACADQcgCaiADQfAAakEIaikDADcCACADQbwCakEUaiADQYABaigCADYCACADQbwCakEgaiACQRhqIgFBCGooAgA2AgAgAyADKQNwNwLAAiADIAEpAgA3AtQCIAMgBTYCvAICQEEkRQ0AIANBtAFqIAJBJPwKAAALIANBGGogA0G0AWoQmQ4gAygCHCECIAMoAhghCAJAIAMoAsQCIgEgBUcNACADQbwCakG4gYUBEPkVCyADKALAAiIJIAFBA3RqIgUgAjYCBCAFIAg2AgAgAyABQQFqIgE2AsQCAkACQAJAAkACQCABDgIBAgALIANBCGogA0G8AmoQ8RhBCiEBIAMoAgwhCAwDCyADQRBqIANByAJqEJ0VQQAhASADKAIUIQgMAQsgA0EANgLEAiAJKAIEIQggCSgCACEBCyADQbwCahDlFwtBAC0AwPGdARpBCBCFASICDQEMAwsCQEEkRQ0AIANBtAFqIAJBJPwKAAALIAMgA0G0AWoQmQ5BAC0AwPGdARogAygCBCEIIAMoAgAhAUEIEIUBIgJFDQILIAIgATYCACACIAg2AgQgBhCwAyAGQQhBBBCeEkEALQDA8Z0BGkHIABCFASIBRQ0BAkBBLEUNACABIANBxABqQSz8CgAACyABIAI2AiwgASADKQMoNwIwIAFBOGogA0EwaikD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CAkKCwwfHw0ODxARHxITFB8fFRYXGBkaGxwfHR8fCyAAKAIMQQR0IQQgACgCCCEAA0AgBEUNHwJAIAAoAgBBAkYNACAAQQxqIAEQyyELIABBEGohACAEQXBqIQQMAAsLIABBBGogARCnBgwdCyAAQSBqIAEQqAwMHAsgAEEEaiABEMshDBsLIABBDGogARDLIQwaCyAAQQRqIAEQyyEgAEEIaiABEMshDBkLIABBOGohBAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDgwBAgMEBQYHCAkKCwABCwJAAkAgACgCBA4DAAEMAAsgASAAQQhqELwPDAsLIAEgAEEIahD/CwwKCyABIABBCGoQ1xQMCQsgAEEIaiABEIIcDAgLIABBCGogARCYHQwHCyAAQQRqIAEQyyEMBgsgAEEEaiABENgYDAULIAEgAEEEahDEDwwECyABIABBBGoQxA8MAwsgASAAQQRqEKkaDAILIAEgAEEEahCxDwwBCyABIABBBGoQihULIAQgARDLIQwYCyAAQQhqIAEQghwMFwsgAEEIaiABEJgdDBYLIABBBGogARDLISAAQQhqIAEQyyEgAEEMaiABEMshDBULIABBBGohBAJAIAAtABhBBUcNACAAQRBqIAEQyyELIAQgARC+GCAAKAIoIAEQ2RgMFAsgAEEQaiABEMshAkAgACgCBEGAgICAeEYNACAAQQRqIAEQvhgLIAAoAiAgARDZGAwTCyAAQQRqIAEQhBkMEgsgAEEEaiABEIQZDBELIABBBGogARDLISAAKAIYIAEQ2RggACgCCCABEIQZDBALIAAoAiAiBEUNDiABIAQoAgwgBCgCEBC9GCAALQAoRQ0OIAJBCGogASgCKCABKAIsIAQoAgwgBCgCEBCOFyACIAIoAggiAyACKAIMajYCHCACIAM2AhggAkEYahCIEkUNDiABKAIcIAEoAiAgBCgCEBDgHiEDIAQoAgwhBCABIAMoAgBBIBDzFyABIARBKBDzFwwOCyAAQSBqIAEQzwEMDgsgACgCDCIERQ0NIABBDGogARDLISAEKAIAQR5HDQ0gBC0AKA0NIAEgBEEgaigCABCODgwNCyAAQQRqIAEQyyEMDAsgAEEEaiABEMshDAsLIABBIGoQ1hwMCgsgAEEEaiABELMNDAkLIABBBGogARDREAwICyABIABB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dEEAIQkDQCALIAlqIgdCgICAgMAANwIAIAdBCGpBADYCACAJQQxqIglB9AVHDQALQQAhBCALIAlqIglBADYCACAJQQRqQgQ3AgAgAkE4akHAADYCACACIAIpAnQ3AzAgAiAINgJEIAIgBjYCQCACIAo2AjwgCkEQaiEFIApBDGohA0EAIQcCQANAIAcgBSgCACIJTw0BIAcgCigCHCILTw0FIAIgAygCACAJIAooAhggBGooAgAiCBCoGyACKAIAIglFDQEgAigCQCILIAIoAgQiBksNBiACQTBqIAkgCxDrDyIGQT9xIgkgAigCOCILTw0HAkAgAigCNCAJQQxsaiIJKAIIIgsgCSgCAEcNACAJEO4VCyAJIAtBAWo2AgggCSgCBCALQQN0aiIJIAg2AgQgCSAGNgIAIAdBAWohByAEQQRqIQQMAAsLIAJB2ABqQRBqIAJBMGpBEGopAwA3AwAgAkHYAGpBCGogAkEwakEIaikDADcDACACIAIpAzA3A1gCQAJAIAEtACYiCUECRg0AIAlBAXENAQsgCiAKKAIAIglBAWo2AgAgCUF/TA0BIAEtACVFDQcgCigCEEHBAEkNByAKIAooAgAiCUF/ajYCACAJQQFHDQkMCAsgACACKQNYNwIAIABBADYCLCAAQQA2AhwgACAKNgIYIABBEGogAkHYAGpBEGopAwA3AgAgAEEIaiACQdgAakEIaikDADcCAAwJCwALQbzgmwEQ0xkAC0GMuYABQSVBoLqAARDdFwALIAcgC0H8uIABELMRAAsgCyAGQeC6gAEQjyAACyAJIAtB8LqAARCzEQALIAogCigCACIJQX9qNgIAIAlBAUcNAQsgChD7EQsgAEGAgICAeDYCACACQdgAahDeFyAKIAooAgAiCUF/ajYCACAJQQFHDQAgChD7EQsgAkGAAWokAAvVCgIMfwJ+IwBBgAFrIgEkACAAKAIAIgIoAgAhAyACQQA2AgAgA0EIaigCACECIANBBGooAgAhBCADKAJkIQVBBEEEEOcbIgMgBTYCACABQQE2AmQgASADNgJgIAFBATYCXCABQQA2AnAgAUKAgICAwAA3AmggAUEANgJ8IAFCgICAgMAANwJ0IAQgAmohBkEEIQdBACEIQQAhAwN/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA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DQIgBiAJaiALNgIACyAKQQFqIgogBEcNAAsgByAEQRRsaiENIAAtAPsFIg5BAWohDyAOQQJ0QQRqIRAgACgC0AMhESAAKALUAyECIAAoAsQDIQkgACgCyAMhBANAAkACQAJAAkAgBygCDCIDIAVPDQAgByAGIANBAnRqKAIANgIMIAcoAAAiA0UNAwNAIAMgBE8NAiAJIANBCWxqIgMoAAEiCyAFTw0DIAMgBiALQQJ0aigCADYAASADKAAFIgNFDQQMAAsLIAMgBUGMxIABELMRAAsgAyAEQeytgAEQsxEACyALIAVBjMSAARCzEQALAkAgBygCBCIDRQ0AAkACQAJAIAIgA0kNACACIANrIgsgDk0NASARIANBAnRqIQMgECELA0AgAygCACIKIAVPDQMgAyAGIApBAnRqKAIANgIAIANBBGohAyALQXxqIgtFDQQMAAsLIAMgAkHMrYABEKMgAAsgDyALQdytgAEQjyAACyAKIAVBjMSAARCzEQALIAdBFGoiByANRw0ACyAMIAhBBEEEELURIAEoAgggBkEEQQQQtREgAUEwaiQADwsgCiAFQfzDgAEQsxEACyALIAVB7MOAARCzEQALIAUgBUHcw4ABELMRAAtBvOCbARDTGQALAAvYCgINfwF+IwBBwAFrIgMkAAJAAkACQCABLQCAAUEEcUUNACADQQA2AiwgA0KAgICAwAA3AiRBigWtQiCGQYijmwGthCEQIANBmAFqQQxqIQQgA0HAAGpBDGohBSABKALAASEGQQAhBwNAAkACQAJAAkACQCABLQDIASIIQRhHDQAgASgCwAEhCSABEIcOAkACQAJAAkAgAS0AyAENACABEIcOIANBEGogARC/CCADKAIUIQggAygCEEEBcQ0FIAMgCDYCMCABLQDIASIHQQFHDQIgARCHDgwBCyADQZgBaiABQQBBABCfAwJAAkAgAy0ArAFBAkYNACADQeAAakEQaiADQZgBakEQaikDADcDACADQeAAakEIaiADQZgBakEIaikDADcDACADIAMpA5gBNwNgQQhBwAAQ6x8iBw0BDA0LIAMoApgBIQgMBQsgB0EaNgIAAkBBOEUNACAHQQhqIANB4ABqQTj8CgAACyADQQU6AKABIAMgBzYCmAEgA0EYaiABIANBmAFqQQBBARBmIAMoAhwhCCADKAIYQQFxDQQLIAMgCDYCQCABLQDIASEHQQAhCgJAAkACQCABLQCBAUEgcUUNACAHQf8BcUESRw0AIANBCGogARCZBCADKAIMIQoCQCADKAIIQQFxRQ0AIAohCAwCCyABEIcOIAEtAMgBIQcLAkAgCg0AIAdB/wFxDQQLIANBmAFqIAEQ6wQgAygCnAEhCyADKAKYASIMQYCAgIB4Rw0BIAoQ8B8gCyEICyADQcAAahDrHgwECyADKAKgASENIAMgCBC/AyABKAK8ASEOIAMoAgAhDyADQgA3ArABIANBAzoArAEgA0EANgKoASADQgA3ArgBIANCADcCoAEgA0KAgICAwAA3ApgBQQhBwAAQ6x8iB0UNCiAHQgA3AiQgByAONgIgIAcgDzYCHCAHQQU6ABggByAINgIQIAcgDTYCDCAHIAs2AgggByAMNgIEIAdBFzYCACAKEPAfIAQQ7R4gA0GYAWoQsh8gASgCvAEhCwwGCyABKALEASEIIAEoAsABIQogA0E0aiAHEN4bIANBATYCnAEgA0GY75sBNgKYASADQgE3AqQBIAMgEDcDWCADIANB2ABqNgKgASADQcAAaiADQZgBahCNFSAFQQhqIANBNGpBCGooAgA2AgAgBSADKQI0NwIAIAogCCADQcAAahCFFSEIAkAgAS0AyAFBogFHDQAgARDHESEHIAEQhw4gASAHEOURCyADQTBqEOseDAILAkAgCEUNACABKAK8ASELIAghBwwFCyAJIQgMAQsgB0UNAiAIQdgARw0BIAEoAngiB0GAgAhxDQEgB0GAgCBxIQcCQAJAIAINACAHDQAgASgCxAEhByABKALAASEIIANBjoCAgHg2AmAgCCAHIANB4ABqEIUVIQggAS0AyAFBogFGDQEMAgsgBw0CIAEtAIABQQhxDQIgASgCvAEhByADQdqAgIB4NgJgIAYgByADQeAAahCFFSEIIAEtAMgBQaIBRw0BCyABEMcRIQcgARCHDiABIAcQ5RELIABBgICAgHg2AgAgACAINgIEIANBJGoQzB0MBQsgACADKQIkNwIAIABBCGogA0EkakEIaigCADYCAAwECyAAIAMpAiQ3AgAgAEEIaiADQSRqQQhqKAIANgIADAMLAkAgAygCLCIIIAMoAiRHDQAgA0EkahDDFgsgAygCKCAIQQxsaiIKIAs2AgggCiAJNgIEIAogBzYCACADIAhBAWoiBzYCLAwACwsgAEEANgIIIABCgICAgMAANwIACyADQcABaiQADwsAC/wJAQh/IABBAToAHCAAKAJYIQFBACECQQAhAwJAAkACQCAAKAJcIgRBIUkNAEEAIQVBACEGA0ACQCABIAZqIgctAABBwLKZAWotAABFDQAgBiEDDAMLAkAgB0EBai0AAEHAspkBai0AAEUNACAGIQNBASEFDAMLAkAgB0ECai0AAEHAspkBai0AAEUNACAGIQNBAiEFDAMLAkAgB0EDai0AAEHAspkBai0AAEUNACAGIQNBAyEFDAMLAkAgB0EEai0AAEHAspkBai0AAEUNACAGIQNBBCEFDAMLAkAgB0EFai0AAEHAspkBai0AAEUNACAGIQNBBSEFDAMLAkAgB0EGai0AAEHAspkBai0AAEUNACAGIQNBBiEFDAMLAkAgB0EHai0AAEHAspkBai0AAEUNACAGIQNBByEFDAMLAkAgB0EIai0AAEHAspkBai0AAEUNACAGIQNBCCEFDAMLAkAgB0EJai0AAEHAspkBai0AAEUNACAGIQNBCSEFDAMLAkAgB0EKai0AAEHAspkBai0AAEUNACAGIQNBCiEFDAMLAkAgB0ELai0AAEHAspkBai0AAEUNACAGIQNBCyEFDAMLAkAgB0EMai0AAEHAspkBai0AAEUNACAGIQNBDCEFDAMLAkAgB0ENai0AAEHAspkBai0AAEUNACAGIQNBDSEFDAMLAkAgB0EOai0AAEHAspkBai0AAEUNACAGIQNBDiEFDAMLAkAgB0EPai0AAEHAspkBai0AAEUNACAGIQNBDyEFDAMLAkAgB0EQai0AAEHAspkBai0AAEUNACAGIQNBECEFDAMLAkAgB0ERai0AAEHAspkBai0AAEUNACAGIQNBESEFDAMLAkAgB0ESai0AAEHAspkBai0AAEUNACAGIQNBEiEFDAMLAkAgB0ETai0AAEHAspkBai0AAEUNACAGIQNBEyEFDAMLAkAgB0EUai0AAEHAspkBai0AAEUNACAGIQNBFCEFDAMLAkAgB0EVai0AAEHAspkBai0AAEUNACAGIQNBFSEFDAMLAkAgB0EWai0AAEHAspkBai0AAEUNACAGIQNBFiEFDAMLAkAgB0EXai0AAEHAspkBai0AAEUNACAGIQNBFyEFDAML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AgwhByACIAIoAngiBUH//99+cSIGQYCAgAFyIgg2AnggAiAGQYCBgAFyIAhB//5fcSABKAIQIgktAAAbIgY2AnggAkGAAkEAIActAAAbIAZB//1fcXI2AnggA0HoAGogAhDCAiACIAU2AnggAygCbCEGIAMoAmgiBUGAgICAeEcNASAGIQoMAgsgAigCxAEhBiACKALAASEIIANBFGogBRDeGyADQQE2AmwgA0GY75sBNgJoIANCATcCdCADQYoFrUIghkGB2pgBrYQ3AyAgAyADQSBqNgJwIANBOGogA0HoAGoQjRUgA0HMAGogA0EcaigCADYCACADIAMpAhQ3AkQgCCAGIANBOGoQhRUhCiACLQDIAUGiAUcNASACEMcRIQUgAhCHDiACIAUQ5REMAQsgAyADKAJwIgg2AiggAyAGNgIkIAMgBTYCIAJAAkACQCACLQDIASIFQQFHDQAgAhCHDkEAIQoCQCACLQCBAUEgcUUNACACLQDIAUH/AXFBCUcNACADIAJBCRCYBCADKAIEIQogAygCAEEBcQ0CCyADIAo2AjggA0HoAGogAiAJLQAAIActAAAgBiAIEN0YEL8KIAMoAmwhCyADKAJoIgxBgYCAgHhHDQIgA0E4ahCpHyALIQoMAQsgAigCxAEhBiACKALAASEIIANBLGogBRDeGyADQQE2AmwgA0GY75sBNgJoIANCATcCdCADQYoFrUIghkGIo5sBrYQ3A1AgAyADQdAAajYCcCADQThqIANB6ABqEI0VIANBzABqIANBNGooAgA2AgAgAyADKQIsNwJEIAggBiADQThqEIUVIQogAi0AyAFBogFHDQAgAhDHESEFIAIQhw4gAiAFEOURCyADQSBqEMsdDAELIANB2ABqQQhqIANB+ABqKQIANwMAIAMgAykCcDcDWAJAIAxBgICAgHhHDQAgAi8BgAFBgMAAcUUNACAGIAhBBnRqIQgDQCAGIgUgCEYNASAFIAUgCEdBBnRqIQYgBSgCAEEERw0AIAUoAhAhDSAFKAIMIQUgA0GqgYCAeDYCaCACIAUgDSADQegAahCvGgwACwsgA0H8AGogAUEIaigCADYCACADQegAakEIaiADQSBqQQhqKAIANgIAIAMgAykCIDcDaCADIAEpAgA3AnQgBy0AACEFIAktAAAhBiACKAK8ASEIIAEoAhQo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IAAoAgQQvQEgASACOgAMDAgLIABBCGogARCCBQ8LAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCICKAIIIgNFDQIgAigCBCICIANBOGxqIQQDQCACIAEQrgkCQCACQTBqKAIAIgNFDQAgASADEL0BCyACQThqIgIgBEcNAAwDCwsgACgCCCICKAIIIgNFDQEgAigCBCICIANBOGxqIQQDQCACIAEQrgkCQCACQTBqKAIAIgNFDQAgASADEL0BCyACQThqIgIgBEcNAAwCCwsgACgCCCABEJ0HCyABIAAoAgwQvQEgACgCECEADAQLAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCICKAIIIgNFDQIgAigCBCICIANBOGxqIQQDQCACIAEQrgkCQCACQTBqKAIAIgNFDQAgASADEL0BCyACQThqIgIgBEcNAAwDCwsgACgCCCICKAIIIgNFDQEgAigCBCICIANBOGxqIQQDQCACIAEQrgkCQCACQTBqKAIAIgNFDQAgASADEL0BCyACQThqIgIgBEcNAAwCCwsgACgCCCABEJ0HCyABIAAoAgwQvQEgACgCECEADAMLAkAgACgCBCICQQJGDQACQCACQQFxRQ0AIAEgACgCCBC9AQwBCyAAKAIIIgIoAggiA0UNACACKAIEIgIgA0E4bGohBANAIAIgARCuCQJAIAJBMGooAgAiA0UNACABIAMQvQELIAJBOGoiAiAERw0ACwsCQCAAKAIYIgJFDQAgASACEL0BCwJAIAAoAhwiAkUNACABIAIQvQELIAAoAgwhAAwCCyABIAAoAgQQvQEgACgCCCEADAELIAEgACgCBBC9ASAAKAIIIQAMAAsLAkAgACgCBCIDQdAAaigCACICRQ0AIANBzABqKAIAIQAgAkEwbCECA0AgACABEPsCIABBMGohACACQVBqIgINAAsLAkACQAJAIAMoAgBBeWoOAgECAAsgAyABEK4JCyADQTBqKAIAIgJFDQAgA0EsaigCACEAIAJBMGwhAgNAIAAgARD7AiAAQTBqIQAgAkFQaiICDQALCyADKAJgQYCAgIB4Rg0AIANB6ABqKAIAIgJFDQAgA0HkAGooAgAhACACQTBsIQIDQCAAIAEQ+wIgAEEwaiEAIAJBUGoiAg0ACwsPCyABIAAoAgQQvQELgQoCB38BfiMAQSBrIgEk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CGohByADQQRqIQgMKAsgA0EQaiEHIANBDGohCAwnCyADQTRqIQcgA0EwaiEIDCYLIANBJGohByADQSBqIQgMJQsgA0EkaiEHIANBIGohCAwkCyADQRRqIQcgA0EQaiEIDCMLIANBIGohByADQRxqIQgMIgsgA0EYaiEHIANBFGohCAwhCyADQRRqIQcgA0EQaiEIDCALIANBFGohByADQRBqIQgMHwsgAygCCA4HFhcYGRobHBYLIANBIGohByADQRxqIQgMHQsgA0EQaiEHIANBDGohCAwcCyADQRhqIQcgA0EUaiEIDBsLIAMoAiAiCEEoaiEHIAhBJGohCAwaCyADQQhqIQcgA0EEaiEIDBkLIANBCGohByADQQRqIQgMGAsgA0EMaiEHIANBCGohCAwXCyADQQxqIQcgA0EIaiEIDBYLIANBHGohByADQRhqIQgMFQsgA0EsaiEHIANBKGohCAwUCyADQQhqIQcgA0EEaiEIDBMLIAMoAgQiCEEEaiEHDBILIANBFGohByADQRBqIQgMEQsgA0EQaiEHIANBDGohCAwQCyADQQxqIQcgA0EIaiEIDA8LIANBDGohByADQQhqIQgMDgsgA0EQaiEHIANBDGohCAwNCyADQRBqIQcgA0EMaiEIDAwLIANBEGohByADQQxqIQgMCwsgA0EUaiEHIANBEGohCAwKCyADQQxqIQcgA0EIaiEIDAkLIANBCGohByADQQRqIQgMCAsgA0EcaiEHIANBGGohCAwHCyADQRBqIQcgA0EMaiEIDAYLIANBEGohByADQQxqIQgMBQsgA0EUaiEHIANBEGohCAwECyADQRRqIQcgA0EQaiEIDAMLIANBJGohByADQSBqIQgMAgsgA0EkaiEHIANBIGohCAwBCyADQQhqIQcgA0EEaiEICyAIKAIAIQggAUEMaiAHKAIANgIAIAFBCGogCDYCACABQQRqIAM2AgAgAUESNgIAIAAgACgCCEEBajYCCCABQTBqIgEgBUcNAAtBAQulCQEDfwJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4TAA8PAQIDDw8EBRAODAsKCQgHBgALIAAoAgwiAkUNDiAAKAIIIQAgAkEwbCECA0AgACABEI8DIABBMGohACACQVBqIgINAAwPCwsgASAAKAIEEKcBIAAoAgghAAwLCyAAKAIMIgBFDQwgASAAEKcBDwsgACgCKCEADAkLIAEgACgCBBCnASAAKAIIIAEQjwMgACgCFCIADQgMCgsgASAAKAIQEKcBIAAoAgwiAkUNCSAAKAIIIgMgAkEYbGohBANAAkAgAygCFCIARQ0AIAEgABCnAQsCQCADQQhqKAIAIgJFDQAgA0EEaigCACEAIAJBMGwhAgNAIAAgARCPAyAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNCgwACwsgASAAKAIEEKcBDAgLIABBCGogARDQAw8LAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCICKAIIIgNFDQIgAigCBCICIANBOGxqIQQDQCACIAEQrQkCQCACQTBqKAIAIgNFDQAgASADEKcBCyACQThqIgIgBEcNAAwDCwsgACgCCCICKAIIIgNFDQEgAigCBCICIANBOGxqIQQDQCACIAEQrQkCQCACQTBqKAIAIgNFDQAgASADEKcBCyACQThqIgIgBEcNAAwCCwsgACgCCCABEIwLCyABIAAoAgwQpwEgACgCECEADAQLAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCICKAIIIgNFDQIgAigCBCICIANBOGxqIQQDQCACIAEQrQkCQCACQTBqKAIAIgNFDQAgASADEKcBCyACQThqIgIgBEcNAAwDCwsgACgCCCICKAIIIgNFDQEgAigCBCICIANBOGxqIQQDQCACIAEQrQkCQCACQTBqKAIAIgNFDQAgASADEKcBCyACQThqIgIgBEcNAAwCCwsgACgCCCABEIwLCyABIAAoAgwQpwEgACgCECEADAMLAkAgACgCBCICQQJGDQACQCACQQFxRQ0AIAEgACgCCBCnAQwBCyAAKAIIIgIoAggiA0UNACACKAIEIgIgA0E4bGohBANAIAIgARCtCQJAIAJBMGooAgAiA0UNACABIAMQpwELIAJBOGoiAiAERw0ACwsCQCAAKAIYIgJFDQAgASACEKcBCwJAIAAoAhwiAkUNACABIAIQpwELIAAoAgwhAAwCCyABIAAoAgQQpwEgACgCCCEADAELIAEgACgCBBCnASAAKAIIIQAMAAsLAkAgACgCBCIDKAJQIgJFDQAgAygCTCEAIAJBMGwhAgNAIAAgARCPAyAAQTBqIQAgAkFQaiIC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A0AgABCWAyAAQTBqIQAgAUFQaiIBDQALCyACKAJgQYCAgIB4Rg0AIAIoAmgiAUUNACACKAJkIQAgAUEwbCEBA0AgABCWAyAAQTBqIQAgAUFQaiIBDQALCw8LIAAoAgQQtQEL3QgBBn8jAEGAAmsiAiQAAkACQAJAAkADQAJAIAAoAgAiA0ECRg0AAkACQCADDgcHAQAEBgcFBwsACyAAKAIMIgNFDQUgACgCCCEAIANBKGwhAwNAAkAgACgCAEEHRg0AIAAgARCXAwsgAEEoaiEAIANBWGoiAw0ADAYLCyAAKAIEIQAMAAsLIAAoAgwiA0UNAiAAKAIIIQQgA0E4bCEFQQAhAANAAkACQAJAAkACQAJAAkAgBCAAaiIDKAIADgMAAQIACyADQQhqKAIAQQNHDQQgA0EMaigCACIGKAIAQRpHDQIgAkHAAWogASgCACABKAIEIAZBCGoiBxC1DCACKALAAUEyRg0EIAYQyQEgBkE4aiACQcABakE4aikDADcDACAGQTBqIAJBwAFqQTBqKQMANwMAIAZBKGogAkHAAWpBKGopAwA3AwAgBkEgaiACQcABakEgaikDADcDACAGQRhqIAJBwAFqQRhqKQMANwMAIAZBEGogAkHAAWpBEGopAwA3AwAgByACQcABakEIaikDADcDACAGIAIpA8ABNwMADAQLIANBMGooAgAiA0UNBCADKAIAQRpHDQIgAkGAAWogASgCACABKAIEIANBCGoiBhC1DCACKAKAAUEyRg0EIAMQyQEgA0E4aiACQYABakE4aikDADcDACADQTBqIAJBgAFqQTBqKQMANwMAIANBKGogAkGAAWpBKGopAwA3AwAgA0EgaiACQYABakEgaikDADcDACADQRhqIAJBgAFqQRhqKQMANwMAIANBEGogAkGAAWpBEGopAwA3AwAgBiACQYABakEIaikDADcDACADIAIpA4ABNwMADAQLIANBBGooAgAgARCDBAwDCyAGIAEQRgwBCyADIAEQRgwBCyADQShqKAIAIAEQgwQLIAUgAEE4aiIARw0ADAMLCwJAIAAoAgQiACgCAEEaRw0AIAIgASgCACABKAIEIABBCGoiAxC1DCACKAIAQTJGDQIgABDJASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcD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AEHYAGohACADQah/aiIDDQALCwJAIAQoApgBIgNFDQAgBCgClAEhACADQShsIQMDQCAAIAEQjQUgAEEoaiEAIANBWGoiAw0ACwsgBC0APCIAQQZGDQUgAEECRw0FIARBEGohAANAIAAoAhgiAC0ALEECRg0ADAYLCyAFQQxqKAIAIgNFDQQgBUEIaigCACEAIANBKGwhAwNAIAEgABDiAyAAQShqIQAgA0FYaiIDDQAMBQsLIAAgARDbAQwDCyABQQA6AAQMAgsgACABENsBDAELIAFBADoABAsgBUEoaiIFIAJHDQALCw8LIAAgARDbAQ8LIAFBADoABAvSCAENfyMAQbABayICJAAgAkEoaiABEMICIAIoAiwhAwJAAkAgAigCKCIEQYCAgIB4Rw0AIABBgICAgHg2AgAgACADNgIEDAELIAIoAjAhBSACQQRBCEEoQcCnmwEQ2BRBACEGIAJBADYCFCACIAIoAgQiBzYCECACIAIoAgA2AgwgAiAENgIgIAIgAzYCGCACIAMgBUEGdCIIaiIJNgIkIAJB2ABqIQogAkHoAGpBBGohCyACQShqQQRyIQxBBCENAkACQANAAkACQAJAAkACQAJAIAhFDQACQCADKAIAIgVBB0YNACADQQRqIQQgAiAFNgIoAkBBPEUNACAMIARBPPwKAAALIANBwABqIQ4gBQ4EAgMEBQgLIANBwABqIQkLIAIgCTYCHCACQRhqEMMRAkAgAS0AyAEiA0EBRw0AIAEQhw4gAEEIaiACQQxqQQhqKAIANgIAIAAgAikCDDcCAAwJCyABKALEASEEIAEoAsABIQUgAkGMAWogAxDeGyACQQE2AiwgAkGY75sBNgIoIAJCATcCNCACQYoFrUIghkGIo5sBrYQ3AxggAiACQRhqNgIwIAJBmAFqIAJBKGoQjRUgAkGsAWogAkGUAWooAgA2AgAgAiACKQKMATcCpAEgBSAEIAJBmAFqEIUVIQMCQCABLQDIAUGiAUcNACABEMcRIQQgARCHDiABIAQQ5RELIABBgICAgHg2AgAgACADNgIEDAcLIAtBGGogA0EgaikCADcCACALQRBqIANBGGopAgA3AgAgC0EIaiADQRBqKQIANwIAIAsgA0EIaikCADcCAAwDCyACQegAakEYaiAEQRhqKAIANgIAIAJB6ABqQRBqIARBEGop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AhBBMkYNBCABEMkBIAFBOGogAkEQakE4aikDADcDACABQTBqIAJBEGpBMGopAwA3AwAgAUEoaiACQRBqQShqKQMANwMAIAFBIGogAkEQakEgaikDADcDACABQRhqIAJBEGpBGGopAwA3AwAgAUEQaiACQRBqQRBqKQMANwMAIAAgAkEQakEIaikDADcDACABIAIpAxA3AwAMBAsCQCABKAIEIgQtAGxBAkcNACAEQcAAaiEBA0AgASgCGCIBLQAsQQJGDQALCwJAIARBhAFqKAIAIgBFDQAgBEGAAWooAgAhASAAQdgAbCEAA0ACQAJAAkACQCABKAIAQXxqDgIDAAELIAFBBGooAgAiBSgCAEEaRw0BIAJBkAFqIAMoAgAgA0EEaigCACAFQQhqIgYQtQwgAigCkAFBMkYNAiAFEMkBIAVBOGogAkGQAWpBOGopAwA3AwAgBUEwaiACQZABakEwaikDADcDACAFQShqIAJBkAFqQShqKQMANwMAIAVBIGogAkGQAWpBIGopAwA3AwAgBUEYaiACQZABakEYaikDADcDACAFQRBqIAJBkAFqQRBqKQMANwMAIAYgAkGQAWpBCGopAwA3AwAgBSACKQOQATcDAAwCCyABIAMQxQgMAQsgBSADEEYLIAFB2ABqIQEgAEGof2oiAA0ACwsgBEGYAWooAgAhACAEQZQBaigCACEBIAIgAzYCDAJAIABFDQAgAEEobCEAA0AgAkEMaiABELwDIAFBKGohASAAQVhqIgANAAsLIAQtADwiAUEGRg0DIAFBAkcNAyAEQRBqIQEDQCABKAIYIgEtACxBAkYNAAwECwsgASADEEYMAgsgASADEEYMAQsgAUEEaiADELICCyACQdABaiQAC40IAgd/AX4jAEHQAGsiAiQAIAIgARC+CSIDNgIMAkACQAJAAkACQAJAAkACQCADQdsARw0AIAJBKGpBCGoiBCABKAIAIgNB2ABqKAIANgIAIAIgAykCUDcDKCADQdAAaiEDIAEQmghFDQUgARC+CUE6Rw0FAkAgARCaCA0AIAMgAikDKDcCACADQQhqIAJBKGpBCGooAgA2AgAMBwsCQCABEL4JIgVB3gBHDQAgARCaCA0AIAMgAikDKDcCACADQQhqIAJBKGpBCGooAgA2AgAMBwsgAygCACEGAkADQCABEL4JQTpGDQEg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AAvSBwIBfwF+IwBBIGsiAyQAIANBEGogAiABKAIAQQAQlQICQAJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELAkAgAS0AKkUNACADQQA2AhAgA0EIaiACIANBEGpB3pabAUEFELkMAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAgsgA0EQaiACEOIOIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELAkAgAS0AKEUNACADQQA2AhAgA0EIaiACIANBEGpBw5ebAUECELkMAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAgsgA0EQaiACEOIOIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELAkAgAS0AKUUNACADQQA2AhAgA0EIaiACIANBEGpBsq2bAUEDELkMAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAgsgA0EQaiACEOIOIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIANBEGogAUEIaiACELITAkAgAy0AEEEERg0AIAMpAxAiBEL/AYNCBFENACAAIAQ3AgAMAQsCQCABKAIgRQ0AIANBEGogAhDiDgJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAILIANBADYCECADQQhqIAIgA0EQakHbxJsBQQcQuQwCQCADLQAIQQRGDQAgAykDCCIEQv8Bg0IEUQ0AIAAgBDcCAAwCCyADQRBqIAIQ4g4CQCADLQAQQQRGDQAgAykDECIEQv8Bg0IEUQ0AIAAgBDcCAAwCCyADQRBqIAFBIGogAhBPIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELAkACQAJAAkAgASgCJEUNAAJAIAItAF0NACADQRBqIAIQ4g4gAy0AEEEERg0AIAMpAxAiBEL/AYNCBFINBAsgA0EANgIQIANBCGogAiADQRBqQfuWmwFBARC4DAJAIAMtAAhBBEYNACADKQMIIgRC/wGDQgRRDQAgACAENwIADAULAkAgAi0AXQ0AIANBEGogAhDiDiADLQAQQQRGDQAgAykDECIEQv8Bg0IEUg0CCyADQRBq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IAAQ4AoCQAJAAkAgASgCDCICDQAgAS0AECEDAkAgACgCECIERQ0AQQEhAiAEQeS0lwFB1LSXASADQQFxIgUbQRlBECAFGxDtBQ0FCyAAIAM6AARBACECDAELAkAgASgCECIDQQFxDQAgAUKAgICAIDcCGCABIAI2AgwgASADNgIQIAEgAiADaiIFNgIUAkADQCABQQxqELoDQYCAvH9qDgICAQALCyAAKAIQIgRFDQMgBCgCAEEiIARBBGoiBigCACgCEBEIAA0CIAFCgICAgCA3AhggASAFNgIUIAEgAzYCECABIAI2AgwgAUEoaiEHA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBDGoQugMiA0GBgMQARg0AIANBgIDEAEYNCiADQSdGDQsCQCADQSFKDQAgA0F3ag4FBwQDAwgCCyADQSJGDQQgA0HcAEcNAkHcACEIQQAhCUECIQpBACELQQAhA0EAIQxB3AAhBQwNCyAEKAIAQSIgBEEEaigCACgCEBEIACECDBILIANFDQMLIANB/wVNDQkgAxDmB0UNCSABQSBqIAMQtAogASkAIiIOQjCIpyELIA5CEIinIQMgAS0AKyEKIAEtACohDCABLQAhIQggAS0AICEFIA6nIQkMCgtB3AAhBUHuACEIDAQLQdwAIQVBIiEIDAMLQdwAIQVBMCEIQQAhCUECIQpBACELDAMLQdwAIQVB9AAhCAwBC0HcACEFQfIAIQgLQQAhCUECIQpBACELQQAhAwtBACEMDAMLQdSkmwFBKyABQSBqQcSslwFBtKyXARDoDwALIAQoAgBBJyAGKAIAKAIQEQgADQUMAgtBgAEhBSADEOsLDQAgAUEgaiADELQKIAEpACIiDkIwiKchCyAOQhCIpyEDIAEtACshCiABLQAqIQwgAS0AISEIIAEtACAhBSAOpyEJCyABIAg6ACEgASAFOgAgIAEgC61CMIYgCa1C//8Dg4QgA61CEIaENwEiIAohDSAMIQADQAJAAkAgBUH/AXFBgAFHDQBBACEFIAdBADsBACABQgA3AyBBACENQQAhACADIQJBACEDDAELIABB/wFxIgIgDUH/AXFPDQIgAEEBaiEAIAFBIGogAmotAAAhAgsgBCgCACACIAYoAgAoAhARCAANBAwACwsLAkAgACgCECICRQ0AIAJB1LSX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NgKIASAAIAEoAgQgASgCCCACQTRqIAJBiAFqENEMDAQLIAJBMGogBkEIaigCADYCACACIAYpAgA3AigCQEEkRQ0AIABBBGogAkEQakEk/AoAAAsgAEEiNgIADAQLAkACQAJAIAEQvglBLUYiAw0AIAJByAFqIAEQrwwgAkGIAWogARDJCyACLQCMASEEIAIoAogBIgVBIkYNAQJAQTtFDQAgAEEFaiACQYgBakEFakE7/AoAAAsgACAEOgAEIAAgBTYCAAwFCyACQTRqIAEQrwwgAkHMAGogARCvDCACQQc6AGQgAiACQRBqIAJBzABqELYKIAIoAgBBAXENAwwBCyACQegAakEIaiACQcgBakEIaikCADcDACACQegAakEQaiACQcgBakEQaikCADcDACACIAIpAsgBNwNoIAIgBDoAgAEgAkEIaiACQRBqIAJB6ABqELYKIAIoAghBAXFFDQAgAigCDCEDIAJByAFqIAEQrwwCQCADIAIoAhgiBE8NACACQZQBaiACKAIUIANBHGxqIgNBCGopAgA3AgAgAkGcAWogA0EQaikCADcCACACQQ02AogBIAIgAykCADcCjAEgACABKAIEIAEoAgggAkHIAWogAkGIAWoQ0QwMBAsgAyAEQZCHhQEQsxEACyABEJoIDQALIAJB3AFqIAZBCGooAgAiAzYCACACQcgBakEIaiADNgIAIAIgBikCACIHNwLUASACIAc3A8gBIAJBDzYCiAEgACABKAIEIAEoAgggAkHIAWogAkGIAWoQ0QwMAQsgAigCBCEDIAJByAFqIAEQrwwCQCADIAIoAhgiBE8NACACQZQBaiACKAIUIANBHGxqIgNBCGopAgA3AgAgAkGcAWogA0EQaikCADcCACACQQ42AogBIAIgAykCADcCjAEgACABKAIEIAEoAgggAkHIAWogAkGIAWoQ0QwMAQsgAyAEQYCHhQEQsxEACyACKAIQIAIoAhRBBEEcEMARCyACQeABaiQAC44HAgp/AX4jAEEwayIDJAAgA0EYaiABIAIoAgwiBEEAEJUCAkACQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUQ0AIAAgDTcCAAwBCwJAAkACQAJAIARFDQAgA0EYaiABIAQQtBogAy0AGEEERg0AIAMpAxgiDUL/AYNCBFINAQsgASgCSEUNAiACLQAZIQUgA0EANgIQIANCgICAgMAANwIIIAIoAghBOGwhBiADIANBCGo2AhggAigCBCEHA0AgBkUNAiAGQUhqIQYgByADQRhqEJsKIAdBOGohBwwACwsgACANNwIADAILIAMoAhAhByADKAIMIQYgAyADKAIINgIgIAMgBjYCGCADIAYgB0EMbCIHaiIINgIkIAVB/wFxQQBHIQkDQAJAAkAgB0UNAAJAIAYoAgAiBUGAgICAeEYNACAGQQxqIQogBkEEaiILKAIAIQYgASgCSEUNAiADQShqIAEgCykCACINpyILIA1CIIinIgwgCyAMIAkQuwYgAy0AKEEERg0CIAMpAygiDUL/AYNCBFENAiAAIA03AgAgAyAKNgIcIAUgBhCXIiADQRhqEOUUDAULIAZBDGohCAsgAyAINgIcIANBGGoQ5RQMAgsgBSAGEJciIAdBdGohByAKIQYMAAsLAkAgAi0AGEUNACADQQA2AhggA0EIaiABIANBGGpB7qGbAUEHELkMAkAgAy0ACEEERg0AIAMpAwgiDUL/AYNCBFENACAAIA03AgAMAgsgA0EYaiABEOIOIAMtABhBBEYNACADKQMYIg1C/wGDQgRRDQAgACANNwIADAELIANBADYCGCADQQhqIAEgA0EYaiACLQAZQQJ0IgZB6OCdAWooAgAgBkHc4J0BaigCABC5DAJAIAMtAAhBBEYNACADKQMIIg1C/wGDQgRRDQAgACANNwIADAELIAIoAgQhBgJAAkACQCACKAIIIgdFDQAgBigCAEF/akEDSQ0BCyADQRhqIAEQ4g4gAy0AGEEERg0BIAMpAxgiDUL/AYNCBFENASAAIA03AgAMAgsgAS0AXQ0AIANBGGogARDiDiADLQAYQQRGDQAgAykDGCINQv8Bg0IEUQ0AIAAgDTcCAAwBCyADQRhqIAEgBCACKAIQIAYgBxCTBAJAIAMtABhBBEYNACADKQMYIg1C/wGDQgRRDQAgACANNwIADAELIABBBDoAAAsgA0EwaiQAC/UHAQl/IwBBwABrIgMkACABQQhqIQQCQAJAAkACQAJAAkACQCABKAIIQbmBgIB4Rw0AIAEoAhwhBSABKAIYIQYgASgCECEHIAEoAhQhCCADQTRqIAEoAgwiCSgCACACEOgDIAMoAjghCiADIAhBAUEBEMwNIAMoAgQhCyADKAIA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AkAgACgCAA4JAAECAwQFBwYHAAsgACgCHCIARQ0GIABBCGooAgAiAkUNBiAAQQRqKAIAIQAgAkEMbCECA0ACQAJAIAAoAgAiAw0AIABBBGooAgAgARDJBAwBCyABLQAADQAgAyABEJUBCyAAQQxqIQAgAkF0aiICDQAMBwsLIABBCGogARCtAw8LIAAoAhgNBCAAKAIcIgBFDQQgAEEIaigCACICRQ0EIABBBGooAgAhACACQQxsIQIDQAJAAkAgACgCACIDDQAgAEEEaigCACABEMkEDAELIAEtAAANACADIAEQlQELIABBDGohACACQXRqIgINAAwFCwsCQAJAIAAoAggOAwABBQALAkAgACgCKCIDQQhqKAIAIgJFDQAgAS0AAA0AIANBBGooAgAhACACQQxsIQIDQAJAIAEtAAANACAAKAIAIAEQlQELIABBDGohACACQXRqIgINAAsLAkAgA0EUaigCACICRQ0AIANBEGooAgAhACACQdgAbCECA0AgACABEPYCIABB2ABqIQAgAkGof2oiAg0ACwsgAygCMCIARQ0EIAEtAAANBCAAIAEQlQEPCwJAIAAoAigiBEEIaigCACICRQ0AIARBBGooAgAiACACQQZ0aiEFA0ACQCAAIgNBOGooAgAiAkUNACABLQAADQAgA0E0aigCACEAIAJBDGwhAgNAAkAgAS0AAA0AIAAoAgAgARCVAQsgAEEMaiEAIAJBdGoiAg0ACwsgAyABEPMIIANBwABqIgAgBUcNAAsLAkAgBEEUaigCACICRQ0AIAEtAAANACAEQRBqKAIAIQAgAkEMbCECA0ACQCABLQAADQAgACgCACABEJUBCyAAQQxqIQAgAkF0aiICDQALCyAEKAIYQYCAgIB4Rg0DIARBIGooAgAiAkUNAyABLQAADQMgBEEcaigCACEAIAJBMGwhAgNAAkAgAS0AAA0AIAAgARD0AgsgAEEwaiEAIAJBUGoiAg0ADAQLCyABLQAADQIgACgCBCABEJUBDwsgACgCECIARQ0BIABBCGooAgAiAkUNASAAQQRqKAIAIQAgAkEMbCECA0ACQAJAIAAoAgAiAw0AIABBBGooAgAgARDJBAwBCyABLQAADQAgAyABEJUBCyAAQQxqIQAgAkF0aiICDQAMAgsLIAEtAAANACAAKAIEIAEQlQELC9MHAQd/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IQYgAUEAOgB5AkAgACgCBCIDKAIAQRpHDQAgAiADKQMIIANBGGooAgAQuhggAUEsaiACKQMAIAIoAggQ0QoLIAMgARB3IAEgBToAKCABIAY6AHkLAkAgBCgCAEEHRg0AIAQgARDnBAsgACgCaCABEOcEIAAoAkhBgICAgHhGDQEgASAAQcgAahDNCQwBCwJAIAAoAghBA0cNACABLQAoIQMgAUEAOgAoIAEtAHkhBSABQQA6AHkCQCAAKAIMIgQoAgBBGkcNACACIAQpAwggBEEYaigCABC6GCABQSxqIAIpAwAgAigCCBDRCgsgBCABEHcgASADOgAoIAEgBToAeQsgASAAKAIoEN4ECyACQRBqJAALlQcBB38jAEEQayICJAACQAJAAkACQAJAIAAoAgAOBQQAAQIDBAsgACgCBEEBRw0DIAEtACghAyABQQA6ACggAS0AeSEEIAFBADoAeQJAIAAoAggiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAELoYIAFBLGogAikDACACKAIIENEKCyAAIAEQdyABIAM6ACggASAEOgB5DAMLIAEtACghAyABQQA6ACggAS0AeSEEIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAELoYIAFBLGogAikDACACKAIIENEKCyAAIAEQdyABIAM6ACggASAEOgB5DAILIAAoAgQiBUHAAGogARDDCgJAIAVBhAFqKAIAIgNFDQAgBUGAAWooAgAhACADQdgAbCEDIAFBLGohBgNAAkACQAJAIAAoAgBBfGoOAgIAAQsgAS0AKCEHIAFBADoAKCABLQB5IQggAUEAOgB5AkAgAEEEaigCACIEKAIAQRpHDQAgAiAEKQMIIARBGGooAgAQuhggBiACKQMAIAIoAggQ0QoLIAQgARB3IAEgBzoAKCABIAg6AHkMAQsgACABELoFCyAAQdgAaiEAIANBqH9qIgMNAAsLAkAgBUGYAWooAgAiAEUNACAFQZQBaigCACIEIABBKGxqIQcgAUEsaiEGA0ACQAJAAkACQAJAIAQoAgAOBQQAAQIDBAsgBCgCBEEBRw0DIAEtACghAyABQQA6ACggAS0AeSEIIAFBADoAeQJAIAQoAggiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAELoYIAYgAikDACACKAIIENEKCyAAIAEQdyABIAM6ACggASAIOgB5DAMLIAEtACghAyABQQA6ACggAS0AeSEIIAFBADoAeQJAIAQoAgQiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAELoYIAYgAikDACACKAIIENEKCyAAIAEQdyABIAM6ACggASAIOgB5DAILIAEgBCgCBBDvBgwBCyAEQQxqKAIAIgNFDQAgBEEIaigCACEAIANBKGwhAwNAIAEgABChAyAAQShqIQAgA0FYaiIDDQALCyAEQShqIgQgB0cNAAsLIAUtADxBBkYNASAFQRBqIAEQwwoMAQsgACgCDCIDRQ0AIAAoAgghACADQShsIQMDQCABIAAQoQMgAEEoaiEAIANBWGoiAw0ACwsgAkEQaiQAC9UGAgV/AX4jAEHAAGsiByQAIAdBOGogASACIAUgBiAFENYXAkACQCAHLQA4QQVGDQAgACAHKQM4NwIADAELIAdBOGoQhB8CQAJAAkACQAJAIAVFDQAgB0EBOgA2IAdBKGogBBCFEQJAAkAgBkEDcQ0AIAZBgAFxRQ0BIAEtAF0NASAHQThqIAEQ4g4gBy0AOEEERg0BIAcpAzgiDEL/AYNCBFENASAAIAw3AgAMBwsCQCABLQBdDQAgB0E4aiABEIsSIActADhBBEYNACAHKQM4IgxC/wGDQgRSDQMLIAdBADoANgsgBkHAAHFFDQMgAS0AXUEBRw0CDAMLAkAgBkEBcUUNACABLQBdDQQgB0E4aiABEIsSIActADhBBEYNBCAHKQM4IgxC/wGDQgRRDQQgACAMNwIADAULIAZBgAFxRQ0DIAEtAF0NAyAHQThqIAEQ4g4gBy0AOEEERg0DIAcpAzgiDEL/AYNCBFENAyAAIAw3AgAMBAsgACAMNwIADAMLIAEgASgCOEEBajYCOAsgB0EAOgA3IAUhCCAEIQlBACEKQQAhCwNAAkACQAJAAkAgCEUNACAHQSBqIAkQhREgB0E4aiABIAMgBiAKIAsgB0E3aiAHQTZqEKEFAkAgBy0AOEEERg0AIAcpAzgiDEL/AYNCBFINAwsgB0E4aiAJIAEQ4AsCQCAHLQA4QQRGDQAgBykDOCIMQv8Bg0IEUg0DCyAHLQA2DQEgB0EBOgA2DAMLAkAgBCAFQQR0akFwaiIJRQ0AIAdBCGogCRCFEQsgB0E4aiABIAIgAyAGIAogCxC5AiAHLQA4QQRGDQQgBykDOCIMQv8Bg0IEUg0BDAQLIAEoAlRFDQEgB0EYaiAJEIURIAdBOGogASAHKAIcQQAQ1AMgBy0AOEEERg0BIAcpAzgiDEL/AYNCBFENAQsgACAMNwIADAMLAkAgBy0AN0UNACABIAEoAjhBf2o2AjggB0EAOgA3CyAIQX9qIQggB0EQaiAJEIURIAlBEGohCUEBIQogBygCFCELDAALCyAHQThqIAEgAyAFRSAGEMAQAkAgBy0AOEEERg0AIAcpAzgiDEL/AYNCBFENACAAIAw3AgAMAQsgAEEEOgAACyAHQcAAaiQAC+sGAgR/AX4jAEEgayIDJAAgASgCCCEEIANBCGogAiABKAIEIgVBABCVAgJAAkAgAy0ACEEERg0AIAMpAwgiB0L/AYNCBFENACAAIAc3AgAMAQsCQAJAAkACQAJAIAEoAgAiBigCAEEDRw0AIANBCGogBkEQaiACENogIAMtAAhBBEYNASADKQMIIgdC/wGDQgRRDQEgACAHNwIADAULAkACQCAGKAIgIgQoAgBBGEcNACADQQhqIAIgBEEEakEAEMQEIAMtAAhBBEYNASADKQMIIgdC/wGDQgRRDQEgACAHNwIADAYLIANBCGogBkEgaiACENogIAMtAAhBBEYNACADKQMIIgdC/wGDQgRSDQILAkACQAJAAkACQAJAIAEtAAwNACAGKAIAQQJGDQUgA0EANgIIIAMgAiADQQhqQePEmwFBARC4DCADLQAAQQRGDQEgAykDACIHQv8Bg0IEUQ0BIAAgBzcCAAwKCyADQQA2AgggAyACIANBCGpBjeCbAUECELgMIAMtAABBBEYNACADKQMAIgdC/wGDQgRSDQELIAYoAgAOAwECAwELIAAgBzcCAAwHCyADQQhqIAZBCGogAhDVEyADLQAIQQRGDQUgAykDCCIHQv8Bg0IEUQ0FIAAgBzcCAAwGCyADQQhqIAZBCGogAhDhCCADLQAIQQRGDQQgAykDCCIHQv8Bg0IEUQ0EIAAgBzcCAAwFCyADQQhqIAZBBGogAhDiCCADLQAIQQRGDQMgAykDCCIHQv8Bg0IEUQ0DIAAgBzcCAAwECyABLQAMRQ0BIANBADYCCCADIAIgA0EIakGN4JsBQQIQuAwgAy0AAEEERg0BIAMpAwAiB0L/AYNCBFENASAAIAc3AgAMAwsgACAHNwIADAILIANBADYCFCADQQhqIAIgA0EUakGwupsBQQEQuAwCQCADLQAIQQRGDQAgAykDCCIHQv8Bg0IEUQ0AIAAgBzcCAAwCCyADQQhqIAIgBSAEIAYoAgggBigCDEGQChD6AwJAIAMtAAhBBEYNACADKQMIIgdC/wGDQgRRDQAgACAHNwIADAILIANBCGogAiADQRRqQbP9nAFBARC4DCADLQAIQQRGDQAgAykDCCIHQv8Bg0IEUQ0AIAAgBzcCAAwBCyAAQQQ6AAALIANBIGokAAuOBgEOfyMAQZAJayICJAACQCABQQJJDQBBASEDIAAgAUEBdiIEQRhsIgVqIQYgAiAFaiEHAkACQCABQQhJDQAgACACEM4HIAYgBxDOB0EEIQMMAQsgAkEQaiAAQRBqKQIANwMAIAJBCGogAEEIaikCADcDACACIAApAgA3AwAgByAGKQIANwIAIAdBCGogBkEIaikCADcCACAHQRBqIAZBEGopAgA3AgALQQAhCCACQQA2AogJQQAgA2shCSAAIANBGGwiBmohCiACIAQ2AowJIAEgBGshCyACIAZqIQwgAkGACWpBCGohDQNAAkACQCAIQQJGDQAgCSALIAQgDSAIQQJ0aigCACIGGyIFIAMgBSADSxtqIQ4gDCAGQRhsIg9qIQYgCiAPaiEFIAIgD2ohDwNAIA5FDQIgBiAFKQIANwIAIAZBEGogBUEQaikCADcCACAGQQhqIAVBCGopAgA3AgAgDyAGENMKIA5Bf2ohDiAGQRhqIQYgBUEYaiEFDAALCyAHQWhqIQ4gACABQRhsQWhqIgVqIQYgAiAFaiEPIAIhBQJAA0ACQCAEDQAgDkEYaiEGAkAgAUEBcUUNACAAIAUgByAFIAZJIgQbIg4pAgA3AgAgAEEQaiAOQRBqKQIANwIAIABBCGogDkEIaikCADcCACAHIAUgBk9BGGxqIQcgBSAEQRhsaiEFCyAFIAZHDQIgByAPQRhqRw0CDAULIAAgByAFIAdBDGooAgAiAyAFQQxqKAIAIglJIgobIggpAgA3AgAgAEEIaiAIQQhqKQIANwIAIABBEGogCEEQaikCADcCACAGQRBqIA4gDyAPQQxqKAIAIgsgDkEMaigCACIMSSINGyIIQRBqKQIANwIAIAZBCGogCEEIaikCADcCACAGIAgpAgA3AgAgDkFoQQAgDRtqIQ4gD0FoQQAgCyAMTxtqIQ8gBSADIAlPQRhsaiEFIAcgCkEYbGohByAEQX9qIQQgBkFoaiEGIABBGGohAAwACwsQzRkACyAIQQFqIQgMAAsLIAJBkAlqJAAL1gYBEX8jAEGAAWsiBCQAIAFBA2ohBSABQQVqIQYgAiADQRhsaiEHIARB8ABqIQggBEHMAGohCQJAA0AgAiIKIAdGDQEgCkEYaiECIAotABBFDQAgBEEwaiAKEP4RIAQoAjAhCyAEIAQoAjQiDDYCSEEAIQ0gBEEANgJEIAQgDDYCQCAEIAs2AjwgBEEBOgBQIARBCjYCOCAEQQA7AVwgBCAMNgJYIARBADYCVCAEQQo2AkxBACEOQQAhDwNAIA5BAXENAQJAAkACQANAAkAgDCAPIhBPDQAgECEPDAMLIAsgEGohEQJAAkAgDCAQayISQQdLDQBBACEPQQAhAwNAAkAgEiADRw0AIBIhAwwDCwJAIBEgA2otAABBCkcNAEEBIQ8MAwsgA0EBaiEDDAALCyAEQShqQQogESASEJAJIAQoAiwhAyAEKAIoIQ8LIA9BAXFFDQEgBCADIBBqIhJBAWoiDzYCRCASIAxPDQAgCyADaiAQakEBIAlBARCZHEUNAAsgBCAPNgJUQQAhDiAPIRMgDyEDDAILIAQgDDYCRCAMIQ8LQQEhDiAEQQE6AF0gDSETIAwhAyAMIA1GDQILIARBCjYCYCAEQSBqIARB4ABqIAsgDWoiECADIA1rIg0Q0BsCQCAEKAIgIgNFDQAgBCgCJCESIARBDTYCYCAEQRhqIARB4ABqIAMgEhDQGyAEKAIcIBIgBCgCGCIRGyENIBEgAyARGyEQCyAQRQ0BIARBADYCeCAEIBA2AnAgBCAQNgJoIARCqoCAgIAENwNgIAQgDTYCbCAEIBAgDWo2AnQCQANAIARBEGogCBC5EAJAIAQoAhQiEUGAgMQARw0AIA0hFAwCCyAEKAIQIRRBACEDA0AgA0EIRg0CIARB4ABqIANqIRIgA0EEaiEDIBIoAgAgEUYNAQwACwsLIARBCGogECAUaiANIBRrEKUEIBMhDSAEKAIMIAZHDQACQCAEKAIIIgMgBkH4t5gBQQMQoBwNACATIQ0gAyAGQfu3mAFBAxCgHEUNAQsgEyENIAMgBkH+t5gBQQIQsRtFDQAgBCADIAZBAyAFQYC4mAEQmw8gEyENIAAgASAEKAIAIAQoAgQQmRxFDQALCwsgBEGAAWokACAKIAdHC+AGAQJ/IwBBwAFrIgIkAAJAAkACQAJAAkACQAJAIAEoAgAOAwABAgALIAFBCGogABCJBAwFCyABKAIwIgFFDQQgASgCAEEaRw0BIAJBgAFqIAAoAgAgACgCBCABQQhqIgAQtQwgAigCgAFBMkYNBCABEMkBIAFBOGogAkGAAWpBOGopAwA3AwAgAUEwaiACQYABakEwaikDADcDACABQShqIAJBgAFqQShqKQMANwMAIAFBIGogAkGAAWpBIGopAwA3AwAgAUEYaiACQYABakEYaikDADcDACABQRBqIAJBgAFqQRBqKQMANwMAIAAgAkGAAWpBCGopAwA3AwAgASACKQOAATcDAAwECwJAAkACQAJAAkAgASgCBCIBKAIADgcIAAECAwgECAsgAUEMaigCACIDRQ0HIAFBCGooAgAhASADQShsIQMDQAJAIAEoAgBBB0YNACABIAAQlwMLIAFBKGohASADQVhqIgMNAAwICwsgASgCBCAAEJcDDAYLIAFBDGooAgAiA0UNBSABQQhqKAIAIQEgA0E4bCEDA0AgACABEP4DIAFBOGohASADQUhqIgMNAAwGCwsgASgCBCAAEJcDIAEoAggiASgCAEEaRw0CIAJBwABqIAAoAgAgACgCBCABQQhqIgAQtQwgAigCQEEyRg0EIAEQyQEgAUE4aiACQcAAakE4aikDADcDACABQTBqIAJBwABqQTBqKQMANwMAIAFBKGogAkHAAGpBKGopAwA3AwAgAUEgaiACQcAAakEgaikDADcDACABQRhqIAJBwABqQRhqKQMANwMAIAFBEGogAkHAAGpBEGopAwA3AwAgACACQcAAakEIaikDADcDACABIAIpA0A3AwAMBAsgASgCBCIBKAIAQRpHDQIgAiAAKAIAIAAoAgQgAUEIaiIAELUMIAIoAgBBMkYNAyABEMkBIAFBOGogAkE4aikDADcDACABQTBqIAJBMGopAwA3AwAgAUEoaiACQShqKQMANwMAIAFBIGogAkEgaikDADcDACABQRhqIAJBGGopAwA3AwAgAUEQaiACQRBqKQMANwMAIAAgAkEIaikDADcDACABIAIpAwA3AwAMAwsgASAAEEYMAgsgASAAEEYMAQsgASAAEEYLIAJBwAFqJAAL/wYBBn8jAEHwAGsiASQAAkACQAJAAkAgACgCACICRQ0AQQAhAwJAIAAoAggiBCAAKAIEIgVPDQAgAiAEai0AAEHVAEcNAEEBIQMgACAEQQFqIgQ2AggLAkACQAJAAkAgBCAFTw0AIAIgBGotAABBywBGDQELIANFDQNBACEEDAELIAAgBEEBaiIGNgIIAkACQCAGIAVPDQAgAiAGai0AAEHDAEcNACAAIARBAmo2AghBASECQayvlwEhBAwBCyABQcgAaiAAELMEAkAgASgCSCIEDQAgAS0ATCECAkAgACgCECIFRQ0AQQEhBCAFQeS0lwFB1LSXASACQQFxIgMbQRlBECADGxDtBQ0ICyAAIAI6AARBACEEIABBADYCAAwHCwJAIAEoAkwiAkUNACABKAJURQ0BCwJAIAAoAhAiBEUNACAEQdS0lwFBEBDtBQ0FC0EAIQQgAEEAOgAEIABBADYCAAwGCyADRQ0BCwJAIAAoAhAiBUUNACAFQai1lwFBBxDtBQ0DCyAERQ0BCwJAIAAoAhAiA0UNACADQa+1lwFBCBDtBQ0CCyABQQE7AUQgASACNgJAIAFBADYCPCABQQE6ADggAUHfADYCNCABIAI2AjAgAUEANgIsIAEgAjYCKCABIAQ2AiQgAUHfADYCICABQRhqIAFBIGoQiAcCQCABKAIYIgRFDQACQCADRQ0AIAMgBCABKAIcEO0FDQMLAkBBKEUNACABQcgAaiABQSBqQSj8CgAACyADIQYDQCAGIQQCQANAIAQhAiABQRBqIAFByABqEIgHIAEoAhAiBUUNAUEAIQQgAkUNAAsgASgCFCEEIAJB55abAUEBEO0FDQRBACEGIANFDQEgAyEGIAMgBSAEEO0FDQQMAQsLIAZFDQEgBkHItZcBQQIQ7QVFDQEMAgtBuLWXARCbIAALAkAgACgCECIERQ0AIARByrWXAUEDEO0FDQELIAFBCGogABCaDkEBIQQgASgCCEEBcQ0CAkAgACgCECICRQ0AQQEhBCACQbP9nAFBARDtBQ0DCyAAKAIAIgRFDQEgACgCCCICIAAoAgRPDQEgBCACai0AAEH1AEcNASAAIAJBAWo2AghBACEEDAILQQEhBAwBCwJAIAAoAhAiAkUNAEEBIQQgAkHNtZcBQQQQ7QUNAQsgABD8AiEECyABQfAAaiQAIAQL+gYCCX8BfiMAQaABayIEJAACQCABEL4JQT9GDQAgARC+CUEqRg0AIAEQvglBK0YNAEGchYUBQdAAQeyFhQEQ3RcACyAEQQhqIAEoAgAiBUHYAGooAgA2AgAgBCAFKQJQNwMAIAVB0ABqIQUCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAIIIgZFDQAgAiAGQX9qIgc2AgggBCACKAIEIAdBA3RqIggoAgQiCTYCFCAEIAgoAgAiBzYCECAHQQJJDQlBASEKAkAgARCaCEUNACABEL4JQT9HDQAgARCaCBpBACEKCyAJIQEgB0F+ag4KAQgIAggDBAUGBwELIARBjAFqIAVBCGooAgAiBjYCACAEQfgAakEIaiAGNgIAIAQgBSkCACINNwKEASAEIA03A3ggBEEbNgIYIAAgASgCBCABKAIIIARB+ABqIARBGGoQ0QwMCgsgCUEEaiEBDAYLIAlBHGohAQwFCyAJQdgAaiEBDAQLIAlBKGohAQwDCyAJQTBqIQEMAgsgCUEMaiEBDAELIAlBDGohAQsgBEHgAGpBFGogBUEIaiILKAIANgIAIARB4ABqQQhqIgwgAUEIaigCADYCACAEIAUpAgA3AmwgBCABKQIANwNgIARBGGpBCGoiASAEQQhqKAIANgIAIARBGGpBFGogCygCADYCACAEQfgAakEIaiADQQhqKAIANgIAIAQgBSkCADcCJCAEQfgAakEUaiABKQMANwIAIARBlAFqIARBGGpBEGopAwA3AgAgBCAEKQMANwKEASAEIAMpAgA3A3hBAC0AwPGdARpBCBCFASIBRQ0BIAEgCTYCBCABIAc2AgAgBEHIAGogDCkDADcCACAEQdAAaiAEQeAAakEQaikDADcCACAEIAQpA2A3AkACQEEkRSIFDQAgBEEYaiAEQfgAakEk/AoAAAsgBCABNgI8IAQgCjoAWCAIIARBGGoQ9xo2AgQgCEEINgIAIAIgBjYCCAJAIAUNACAAQQRqIAJBJPwKAAALIABBIjYCAAwDCyAEQYwBaiAFQQhqKAIAIgY2AgAgBEH4AGpBCGogBjYCACAEIAUpAgAiDTcChAEgBCANNwN4IARBGzYCGCAAIAEoAgQgASgCCCAEQfgAaiAEQRhqENEMIARBEGoQsAMMAQsACyACEOUXCyAEQaABaiQAC4QHAgh/A34jAEGgAWsiASQAAkACQAJAAkACQAJAIAAoAgAOCAUFBQUAAQIDBQsgACgCDCICKAIAIAJBDGooAgAQxxpFDQQMAwsgACgCBCICKAIAIAJBDGooAgAQxxpFDQMMAgsgACgCDA0BDAILIAAoAgxFDQELQQAtAMDxnQEaAkACQEEcEIUBIgJFDQAQ3xIhAyACIAApAgA3AgAgAEEANgIAIAJBGGogAEEYaiIEKAIANgIAIAJBEGogAEEQaikCADcCACACQQhqIABBCGopAgA3AgAgBCADNgIAIAEgAjYCEEEBIQQgAUEBNgIMIAFBOGohAwNAIAFBGGpBCGoiBSABKAIQIgYgBEF/aiICQRxsaiIAQQxqKQIANwMAIAFBGGpBEGoiByAAQRRqKQIANwMAIAEgAjYCFCABIAApAgQ3AxgCQAJAAkACQAJAAkACQCAAKAIAIghBCEYNACADIAEpAxg3AgAgA0EIaiAFKQMANwIAIANBEGogBykDADcCACABIAg2AjQgCA4IBQUFBQIDAQQFCyABKAIMIQMgAkUNCCAGIQADQCAAEPUdIABBHGohACACQX9qIgINAAwJCwsgASgCQCEAIAFBADYCQCABKAI8IQIgAUEANgKcASABIAA2ApgBIAEgAzYClAEgASACIABBHGxqNgKQASABIAI2AowBIAFBDGogAUGMAWoQwwYMAwsgASgCQCECEN8SIQggAkEYaiIFKAIAIQcgBSAINgIAIAIpAgAhCSACQQA2AgAgAkEQaikCACEKIAJBCGopAgAhCyAAIAk3AgAgAEEIaiALNwIAIABBEGogCjcCACAAQRhqIAc2AgAgASAENgIUDAMLIAEoAjghAhDfEiEIIAJBGGoiBSgCACEHIAUgCDYCACACKQIAIQkgAkEANgIAIAJBEGopAgAhCiACQQhqKQIAIQsgACAJNwIAIABBCGogCzcCACAAQRBqIAo3AgAgAEEYaiAHNgIAIAEgBDYCFAwCCyABKAJAIQAgAUEANgJAIAEoAjwhAiABQQA2ApwBIAEgADYCmAEgASADNgKUASABIAIgAEEcbGo2ApABIAEgAjYCjAEgAUEMaiABQYwBahDDBgsgASgCFCEECyABQTRqEPUdIAQNAAsgASgCECEGIAEoAgwhAwwBCwALIAMgBkEEQRwQwBELIAFBoAFqJAALhAcCCn8BfiMAQfAAayICJAACQAJAIAEoAgBBA0YNACAALQB5IQMMAQsgAC0AKCEEIABBADoAKCAALQB5IQMgAEEAOgB5AkAgASgCBCIFKAIAQRpHDQAgAkHgAGogBSkDCCAFQRhqKAIAELoYIABBLGogAikDYCACKAJoENEKCyAFIAAQdyAAIAQ6ACggACADOgB5C0EAIQUgAkEgakEAKQOY+5wBIgw3AgAgAkEwaiAMNwIAIAIgAzoAWSACQQA2AhQgAkKAgICAgAE3AgwgAkEANgJAIAJBADoARCACQQA2AlAgAkEANgFaIAJCgICAgMAANwI4IAJCgICAgIABNwJIIAIgAC0AeDoAWCACIAAoAnQ2AlQgAkEAKQOQ+5wBIgw3AhggAiAMNwIoIAIgAC0AfjoAXiAAQSxqIQYCQANAIAVB1ABGDQEgACAFakEsaiIDKAIAIQQgAyACQQxqIAVqIgcoAgA2AgAgByAENgIAIAVBBGohBQwACwsCQCABKAIoIggoAhQiBUUNACAIKAIQIQMgBUEMbCEEIAAtAHkhByAALQAoIQEDQCADKAIAIQUgAEEAOgB5IABBADoAKAJAIAUoAgBBGkcNACACQeAAaiAFKQMIIAVBGGooAgAQuhggBiACKQNgIAIoAmgQ0QoLIANBDGohAyAFIAAQdyAAIAE6ACggACAHOgB5IARBdGoiBA0ACwsCQCAIKAIIIgVFDQAgCCgCBCIHIAVBBnRqIQEgAC0AeiEJIAAtAHkhCiAALQAoIQsDQCAAQQE6ACggAEEAOgB5IAAgAC0Ae0EBczoAegJAIAcoAjgiBUUNACAHKAI0IQMgBUEMbCEEA0AgAygCACEFIABBADoAeSAAQQA6ACgCQCAFKAIAQRpHDQAgAkHgAGogBSkDCCAFQRhqKAIAELoYIAYgAikDYCACKAJoENEKCyADQQxqIQMgBSAAEHcgAEEBOgAoIABBADoAeSAEQXRqIgQNAAsLIABBAToAeSAHIAAQ5wQgACAKOgB5IAAgCToAeiAAIAs6ACggB0HAAGoiBSEHIAUgAUcNAAsLAkAgCCgCGEGAgICAeEYNACAIQSBqKAIAIgNFDQAgCEEcaigCACEFIANBMGwhAwNAIABBADoAfSAFIAAQayAFQTBqIQUgA0FQaiIDDQALCyAGIAJBDGoQkwMgAkHwAGokAAvYBgEEfyMAQcABayICJAACQAJAAkACQAJAAkAgACgCAA4HBQABAgQFAwULIAAoAgwiA0UNBCAAKAIIIQAgA0EobCEDA0ACQCAAKAIAQQdGDQAgACABEJcDCyAAQShqIQAgA0FYaiIDDQAMBQsLIAAoAgQgARCXAwwDCyAAKAIMIgNFDQIgACgCCCEAIANBOGwhAwNAAkACQAJAAkACQCAAKAIADgMAAQIACyAAQQhqIAEQiQQMAwsgAEEwaigCACIERQ0CIAQoAgBBGkcNASACQYABaiABKAIAIAEoAgQgBEEIaiIFELUMIAIoAoABQTJGDQIgBBDJASAEQThqIAJBgAFqQThqKQMANwMAIARBMGogAkGAAWpBMGopAwA3AwAgBEEoaiACQYABakEoaikDADcDACAEQSBqIAJBgAFqQSBqKQMANwMAIARBGGogAkGAAWpBGGopAwA3AwAgBEEQaiACQYABakEQaikDADcDACAFIAJBgAFqQQhqKQMANwMAIAQgAikDgAE3AwAMAgsgAEEEaiABELgFDAELIAQgARBGCyAAQThqIQAgA0FIaiIDDQAMAwsLAkAgACgCBCIAKAIAQRpHDQAgAiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAgBBMkYNAiAAEMkBIABBOGogAkE4aikDADcDACAAQTBqIAJBMGopAwA3AwAgAEEoaiACQShqKQMANwMAIABBIGogAkEgaikDADcDACAAQRhqIAJBGGopAwA3AwAgAEEQaiACQRBqKQMANwMAIAEgAkEIaikDADcDACAAIAIpAwA3AwAMAgsgACABEEYMAQsgACgCBCABEJcDAkAgACgCCCIAKAIAQRpHDQAgAkHAAGogASgCACABKAIEIABBCGoiARC1DCACKAJAQTJGDQEgABDJASAAQThqIAJBwABqQThqKQMANwMAIABBMGogAkHAAGpBMGopAwA3AwAgAEEoaiACQcAAakEoaikDADcDACAAQSBqIAJBwABqQSBqKQMANwMAIABBGGogAkHAAGpBGGopAwA3AwAgAEEQaiACQcAAakEQaikDADcDACABIAJBwABqQQhqKQMANwMAIAAgAikDQDcDAAwBCyAAIAEQRgsgAkHAAWokAAv9BgELfyMAQSBrIgIkAAJA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KAIAIQUMAQsgA0HoAGogBUEUaikCADcDACADQdgAakEIaiIGIAVBDGopAgA3AwAgA0H4AGogBEHQAGoiB0EIaigCADYCACADIAUpAgQ3A1ggAyAHKQIANwNwAkBBJEUNACADQfABaiACQST8CgAACyADQRBqIANB8AFqEJkOIAMoAhQhBSADKAIQIQcCQCAGKAIAIgIgAygCWEcNACADQdgAakH4gYUBEPkVCyADKAJcIAJBA3RqIgYgBTYCBCAGIAc2AgAgAyACQQFqNgJgIANBCGogA0HYAGoQ8RhBCiEFIAMoAgwhAgsgAyAFNgIcIANBIjYCGCADIAI2AiAgBCgCHCICRQ0BIAQgAkF/aiICNgIcIAQoAhggAkHwAGxqIQICQEHwAEUNACADQYABaiACQfAA/AoAAAsgAygCgAFBgICAgHhqDgIDAQILAkBByABFDQAgA0HwAWogBUEkakHIAPwKAAALIANByAJqIAVB5ABqKQIANwMAIANBwAJqIAVB3ABqKQIANwMAIAMgBSkCVDcDuAIgA0EVNgLUAiAAIAEoAgQgASgCCCADQbgCaiADQdQCahDRDCADQfABahDkFCADQYABahDlFyAEIAQoAhBBAWo2AhAgAhDlFwwECwJAQcAARQ0AIAAgA0EYakHAAPwKAAALIAQgBCgCEEEBajYCEAwDCyADQRxqIQUCQEHIAEUNACADQfABaiACQSRqQcgA/AoAAAsgA0HIAmogAkHkAGopAgA3AwAgA0HAAmogAkHcAGopAgA3AwAgAyACKQJUNwO4AiADQRU2AtQCIAAgASgCBCABKAIIIANBuAJqIANB1AJqENEMIANB8AFqEOQUIAUQsAMgBCAEKAIQQQFqNgIQIANBgAFqEOUXDAILQbKjmwFBKEGIgoUBEN0XAAtB6IGFARD4FAALIANB8AJqJAALxgYBA38jAEHAAWsiAiQAAkAgACgCAEEDRw0AAkAgACgCBCIDKAIAQRpHDQAgAkGAAWogASgCACABKAIEIANBCGoiBBC1DCACKAKAAUEyRg0BIAMQyQEgA0E4aiACQYABakE4aikDADcDACADQTBqIAJBgAFqQTBqKQMANwMAIANBKGogAkGAAWpBKGopAwA3AwAgA0EgaiACQYABakEgaikDADcDACADQRhqIAJBgAFqQRhqKQMANwMAIANBEGogAkGAAWpBEGopAwA3AwAgBCACQYABakEIaikDADcDACADIAIpA4ABNwMADAELIAMgARBGCwJAAkACQAJAAkACQAJAAkAgACgCICIAKAIADgcHAAECAwcEBwsgAEEMaigCACIDRQ0GIABBCGooAgAhACADQShsIQMDQAJAIAAoAgBBB0YNACAAIAEQlwMLIABBKGohACADQVhqIgMNAAwHCwsgACgCBCABEJcDDAULIABBDGooAgAiA0UNBCAAQQhqKAIAIQAgA0E4bCEDA0AgASAAEP4DIABBOGohACADQUhqIgMNAAwFCwsgACgCBCABEJcDIAAoAggiACgCAEEaRw0BIAJBwABqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCQEEyRg0DIAAQyQEgAEE4aiACQcAAakE4aikDADcDACAAQTBqIAJBwABqQTBqKQMANwMAIABBKGogAkHAAGpBKGopAwA3AwAgAEEgaiACQcAAakEgaikDADcDACAAQRhqIAJBwABqQRhqKQMANwMAIABBEGogAkHAAGpBEGopAwA3AwAgASACQcAAakEIaikDADcDACAAIAIpA0A3AwAMAwsgACgCBCIAKAIAQRpHDQEgAiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAgBBMkYNAiAAEMkBIABBOGogAkE4aikDADcDACAAQTBqIAJBMGopAwA3AwAgAEEoaiACQShqKQMANwMAIABBIGogAkEgaikDADcDACAAQRhqIAJBGGopAwA3AwAgAEEQaiACQRBqKQMANwMAIAEgAkEIaikDADcDACAAIAIpAwA3AwAMAgsgACABEEYMAQsgACABEEYLIAJBwAFqJAAL+wYBA38jAEHwAGsiBiQAIAYgBDcDQCAGQThqIAZBwABqEP4RAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBigCOCIHIAYoAjwiCEHEoJsBQQgQmRwNAAJAIAcgCEHMoJsBQQQQmRwNAAJAIAcgCEHQoJsBQQkQmRwNAAJAAkACQCAHIAhB2aCbAUEGEJkcDQAgByAIQd+gmwFBCRCZHA0BIAcgCEHooJsBQQQQmRxFDQ0gBQ0GIAEtAMkBDQ0gASgCeCABLQDIARCmFUUNDQwOCyABLQDJAUUNAQwMCwJAIAUNACABKAJ4IAEtAMgBEKYVRQ0MDAsL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GzYCACAHIAIpAgQ3AgwgB0EUaiACQQxqKQIANwIAIAdBHGogAkEEakEQaikCADcCACAHQSRqIAJBBGpBGGooAgA2AgAMAQsgAkEEakEUaiAAQRhqKQIANwIAIAJBEGogAEEQaikCADcCAEEAIQRBAC0AwPGdARogAiAAKQIINwIIQcAAEIUBIgdFDQMgB0EENgIIIAdBGzYCACAHIAIpAgQ3AgwgB0EUaiACQQxqKQIANwIAIAdBHGogAkEEakEQaikCADcCACAHQSRqIAJBBGpBGGooAgA2AgALQQIhBkEAIQULC0EALQDA8Z0BGkHAABCFASIARQ0AIAAgASkDADcDACAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACAAQQhqIAFBCGopAwA3AwBBAC0AwPGdARpBwAAQhQEiAUUNACABQQA6ADwgASAANgI4IAFCADcDMCABIAM2AiggAUIANwMgIAEgCDcCGCABIAQ2AhQgASAFNgIQIAEgBzYCDCABIAY2AgggAUEBNgIAIAJBIGokACABDwsAC90GAg5/A34jAEHwAGsiAiQAIAEoAsABIQMgARC3ASACQdAAaiABEJAKAkACQAJAAkACQAJAAkAgAi0AZEECRw0AIAIoAlAhAQwBCyACKQNYIRAgAikDUCERIAEtAMgBQQlHDQIgARCHDiABELcBIAJB0ABqIAEQkAogAi0AZEECRw0BIAIoAlAhASAREMYdCyAAQQY6ACwgACABNgIADAQLIAIpA1AhEiARUEUNASAQIREgEiEQC0EAIQQgAkEAOgAUIAJBADYCECACIBA+AgggAiAQQiCIPgIMQQMhBQwBCyACKAJYIQUgAiACKAJcIgY2AiQgAiADNgIgIAIgBjYCHCACIAU2AhggAiAQNwMIIAIgEjcDECASQiCIpyEEQQUhBQsgAiAFOgAsIAIgETcDACACQS1qIQcgAkEcaiEIIAJBFWohCSACQQRyIQoDQAJAAkAgAS0AyAFBCEcNACABEIcOIAEQtwEgAkHQAGogARCQCiACLQBkQQJHDQEgAigCUCEBIABBBjoALCAAIAE2AgAgAhDSFwwDC0EwRQ0CIAAg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QQFyIQsMBAsgA0EIdCADQRB0ckEBciELDAELIAtBgP7/B3EhAyALQQFxRQ0BIAtB////B3EiAUEQdiEOIAFBCHYhASADIQsLIAIgAToABiACIA46AAcCQCABQf8BcSAORg0AIAJBAjYCHCACQdDKhAE2AhggAkICNwIkIAJBxwA2AhQgAkHHADYCDCACIAJBCGo2AiAgAiACQQdqNgIQIAIgAkEGajYCCCAEIAUgAkEYahDOBQ0EDAILQQEhASACQQE2AhwgAkGY75sBNgIYIAJCATcCJCACQccANgIMIAIgAkEIajYCICACIAJBBmo2AgggBCAFIAJBGGoQzgVFDQEMBAsLQQEhASAEQa/EmwFBASAGEQwARQ0ADAILC0EBIQELIAJBMGokACABC6YHAgF/AXwjAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAADhIAAQIDBAUGBwgJCgsMDQ4PEBEACyACIAAtAAE6AAggAkECNgIUIAJBzIuYATYCECACQgE3AhwgAkEDNgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQtx4hAQwRCyACIAApAwg3AwggAkECNgIUIAJB6IuYATYCECACQgE3AhwgAkEENgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQtx4hAQwQCyACIAApAwg3AwggAkECNgIUIAJB6IuYATYCECACQgE3AhwgAkEFNgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQtx4hAQwPCyAAKwMIIQMgAkECNgIUIAJBiIyYATYCECACQgE3AhwgAkEGNgIMIAIgAzkDKCACIAJBCGo2AhggAiACQShqNgIIIAEoAgAgASgCBCACQRBqELceIQEMDgsgAiAAKAIENgIIIAJBAjYCFCACQaSMmAE2AhAgAkIBNwIcIAJBBzYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqELceIQEMDQsgAiAAKQIENwIIIAJBATYCFCACQbyMmAE2AhAgAkIBNwIcIAJBCDYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqELceIQEMDAsgASgCAEG5i5gB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ECACQoCAgIDAADcCCAJAAkACQCADRQ0AIAJBCGogAxCwDiADIAIoAhwiBEsNAQsgAiADNgIcDAELIAJBFGogAyAEaxCwDgsgAkH8AWogAkEIakEYaigCADYCACACQfQBaiACQQhqQRBqKQIANwIAIAJB7AFqIAJBCGpBCGoiAykCADcCACACQcgBakEIaiACQYACakEIaikDADcDACACQcgBakEQaiACQYACakEQaikDADcDACACQcgBakEYaiACQYACakEYaigCADYCACACIAIpAgg3AuQBIAIgAikDgAI3A8gBIAJBADYCnAEgAkKAgICAwAA3ApQBIAJCBDcCjAEgAkIANwKEASACQoCAgIDAADcCfCADQQApA5j7nAE3AwAgAkEAKQOQ+5wBNwMIIAIgBTcDICACIAY3AxgCQEE4RQ0AIAJBOGogAkHIAWpBOPwKAAALIAJCATcDsAEgAkIANwOoASACQoCAgIDAADcDoAEgAkEANgK4ASACQQA2AnggAkIANwNwIAJBADYCKCACIAE2AsgBIAIgAkEIajYCzAEgAkHIAWoQ/wECQEHAAUUNACAAIAJBCGpBwAH8CgAACyACQaACaiQADwsgAkEBNgLMASACQbzlhAE2AsgBIAJCATcC1AEgAkEqNgKEAiACQbDihAE2AoACIAIgAkGAAmo2AtABIAJByAFqQbTmhAEQhRsAC+EFAgd/AX5BACECAkAgASgCCCIDIAEoAgQiBE8NACABKAIAIANqLQAAQfUARw0AQQEhAiABIANBAWoiAzYCCAsCQAJAIAMgBE8NACABKAIAIgUgA2otAABBUGoiBkH/AXEiB0EKSQ0BCyAAQQA2AgAgAEEAOgAEDwsgASADQQFqIgM2AggCQAJAAkAgBw0AQQAhBwwBCyAGQf8BcSEHA0ACQCAEIANHDQAgBCEDDAMLIAUgA2otAABBUGpB/wFxIgZBCUsNASABIANBAWoiAzYCCAJAIAetQgp+IglCIIinDQAgCaciCCAGaiIHIAhPDQELCyAAQQA2AgAgAEEAOgAEDwsgAyAETw0AIAUgA2otAABB3wBHDQAgASADQQFqIgM2AggLAkAgAyAHaiIGIANPDQAgAEEANgIAIABBADoABA8LIAEgBjYCCAJAAkACQAJAIAYgBEsNACADRQ0BIAMgBE8NASAFIANqLAAAQb9/Sg0BDAILIABBADYCACAAQQA6AAQPCwJAIAZFDQAgBiAETw0AIAUgBmosAABBv39MDQELIAUgA2ohBiACDQEgAEIBNwIIIAAgBzYCBCAAIAY2AgAPCyAFIAQgAyAGQZS0lwEQlR8ACyAFIANqQX9qIQQgByEBAkADQAJAIAEiAw0AQQAhAUEBIQMgBiEEDAILIANBf2ohASAEIANqLQAAQd8ARw0ACwJAAkAgAUUNAAJAAkAgASAHSQ0AIAEgB0cNASADDQJBACEIDAMLIAYgAWosAABBv39KDQELIAYgB0EAIAFBpLSXARCVHwALAkACQCADIAdJDQAgByEIIAMgB0cNAQwCCyAGIANqLAAAQb9/TA0AIAMhCAwBCyAGIAcgAyAHQbS0lwEQlR8ACyAGIAhqIQQgByAIayEHIAYhAwsCQCAHDQAgAEEANgIAIABBADoABA8LIAAgBzYCDCAAIAQ2AgggACABNgIEIAAgAzYCAAv7BQIGfwN+IwBBEGsiAiQAAkACQAJAAkAgAC0AJg0AIAAoAhxFDQIgASkDABD1GCEIIAAoAhAiA0F4aiEEIAhCGYhCgYKEiJCgwIABfiEJIAAoAhQiBSAIp3EhBkEAIQcDQAJAIAMgBmopAAAiCiAJhSIIQn+FIAhC//379+/fv/9+fINCgIGChIiQoMCAf4MiCFANAANAIAEgBCAIeqdBA3YgBmogBXFBA3RrELYLDQQgCEJ/fCAIgyIIUEUNAAsLIAogCkIBhoNCgIGChIiQoMCAf4NQRQ0DIAYgB0EIaiIHaiAFcSEGDAALCyACQQhqIAAoAiAgAUEBEL0EIAEpAwAhCAJAIAIoAghBAUcNACAAKAIcRQ0AIAgQ9RghCCAAKAIQIgNBeGohBCAIQhmIQoGChIiQoMCAAX4hCSAAKAIUIgUgCKdxIQZBACEHA0ACQCADIAZqKQAAIgogCYUiCEJ/hSAIQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DIghQDQADQCABIAQgCHqnQQN2IAZqIAVxQQN0axC2Cw0GIAhCf3wgCIMiCFBFDQALCwJAIAogCkIBhoNCgIGChIiQoMCAf4NQRQ0AIAYgB0EIaiIHaiAFcSEGDAELCyABKQMAIQgLAkACQCAIQgODQgBSDQAgCKciBiAGKAIAIgZBAWo2AgAgBkF/TA0BCyAAIAgQ6wUMAgsACyAAKAIMRQ0BIAEpAwAQ9RghCCAAKAIAIgNBeGohBCAIQhmIQoGChIiQoMCAAX4hCSAAKAIEIgUgCKdxIQZBACEHA0ACQCADIAZqKQAAIgogCYUiCEJ/hSAIQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DIghQDQADQCABIAQgCHqnQQN2IAZqIAVxQQN0axC2Cw0DIAhCf3wgCIMiCFBFDQALCyAKIApCAYaDQoCBgoSIkKDAgH+DUEUNAiAGIAdBCGoiB2ogBXEhBgwACwsgACgCICABIAAtACQQ+Q0LIAJBEGokAAv4BQIJfwF+IwBB8ABrIgIkAAJAAkACQCABKAIAQQFHDQAgACABQRBqIgMQngUiBEUNACABKAIwIQUgAUEANgIwAkACQCAFDQAgBCEADAELELUdIQAgAkEwaiAEEEQgAEE4aiACQTBqQThqKQMANwMAIABBMGogAkEwakEwaikDADcDACAAQShqIAJBMGpBKGoiBikDADcDACAAQSBqIAJBMGpBIGoiBykDADcDACAAQRhqIAJBMGpBGGoiCCkDADcDACAAQRBqIAJBMGpBEGoiCSkDADcDACAAQQhqIAJBMGpBCGoiCikDADcDACAAIAIpAzA3AwAgAiAAEO0OIAIoAgBBDEYNAiAGIAJBKGopAwA3AwAgByACQSBqKQMANwMAIAggAkEYaikDADcDACAJIAJBEGopAwA3AwAgCiACQQhqKQMANwMAIAIgAikDADcDMEEALQDA8Z0BGkHAABCFASIARQ0DIAAgAikDMDcDACAAQQA6ADwgACAFNgI4IABCADcDMCAAQShqIAJBMGpBKGopAwA3AwAgAEEgaiACQTBqQSBqKQMANwMAIABBGGogAkEwakEYaikDADcDACAAQRBqIAJBMGpBEGopAwA3AwAgAEEIaiACQTBqQQhqKQMANwMAIAQQ2QEgBEHAAEEIEJ4SCyACQTBqQRhqIANBGGopAwA3AwAgAkEwakEQaiADQRBqKQMANwMAIAJBMGpBCGogA0EIaikDADcDACABQgA3AxggAykDACELIAFCATcDECABQR1qQgA3AAAgAUEANgIoIAIgCzcDMCACIAJBMGoQnhRBAC0AwPGdARogAikDACELIAIoAgwhBSACKAIIIQZBKBCFASIERQ0CIAQgADYCBCAEQQY2AgAgAxDPEiABIAQ2AiggASAFNgIcIAEgBjYCGCABIAs3AxAgAUEANgIIIAFBADYCAAsgAkHwAGokAA8LIAIgAigCBDYCMEHUpJsBQSsgAkEwakGQ5ZoBQaDlmgEQ6A8LAAuEBgEMfyMAQTBrIgMkAAJAAkAgASgCaCACRw0AIAEoAlwhBAwBCyABIAI2AmggASABKAJkIAIgASgCbGsiBWsiBDYCXCABIAEoAmAgBWo2AlgLAkACQAJAAkACQAJAIARFDQACQANAIAEgASgCWC0AAEECdEGA7pkBaigCABEEACEFIAEoAlwhBCAFRQ0BIAQNAAsLIAEoAmghAiAERQ0AIAEoAlgiBi0AACIFQS9GDQMgBUE+Rw0BIAEgAkEBaiIHNgJoIAEgBEF/ajYCXCABIAZBAWo2AlhBEyEIDAQLIAFBADoAgwEgAiEHDAELIAFBADoAgwEgA0EYaiABIAVBAnRB7OWZAWooAgARBwACQCADLQAYQQFxRQ0AIAMoAhwhBAJAIAEoAghBCkYNACABQQhqEMQICyABIAQ2AgwgAUEJNgIIIAEoAmghB0GiASEIDAMLIAEoAmghByADLQAZIghBowFHDQILIAEQswVBowEhCAwCCyABIAJBAWoiBzYCaCABIARBf2o2AlwgASAGQQFqNgJYQRAhCAsgASgCIEGAgICAeEYNACABKAI0IQUgAUEANgI0IAEoAjAhBCADQQA2AhQgAyAFNgIQIAMgAUEsajYCDCADIAQgBUEYbCIJaiIKNgIIAkAgBUUNACABQSBqIQsgASgCKCIGQQV0IQwDQCADQRhqQRBqIg0gBEEQaikDADcDACADQRhqQQhqIg4gBEEIaikDADcDACADIAQpAwA3AxgCQCAGIAsoAgBHDQAgC0H0qZkBELAWCyAEQRhqIQQgASgCJCAMaiIFIAMpAxg3AwAgBUEQaiANKQMANwMAIAVBCGogDikDADcDACAFQRxqQQA6AAAgBUEYaiACNgIAIAEgBkEBaiIGNgIoIAxBIGohDCAJQWhqIgkNAAsgCiEECyADIAQ2AgQgA0EEahCxCQsgASAIOgAdIAAgCDoACCAAIAc2AgQgACACNgIAIAEgASgCaDYCGCAAIAEtABw6AAkgASAAELUNIANBMGokAAvLBQEHfyMAQSBrIgMkAAJAAkACQAJAIAEgAkkNAEEBIQQgAkUNA0EAIAJBfGoiBSAFIAJLGyIGIAJBf2oiBSAGIAVJGyEHAkACQANAIAUgBk0NASAFIAJPDQIgACAFaiEIIAVBf2oiCSEFIAgsAABBv39MDQALIAlBAWohBwsgAiAHSQ0CIAIgB0YNBAJAIAAgB2oiCCwAACIFQX9MDQAgBUH/AXEhBQwECyAFQUBJDQQgAiAHayEJAkACQAJAAkAgBUFgTw0AQQIhBgwBCyAFQXBPDQFBAyEGCyAGIAlNDQEMBgtBBCEGIAlBBEkNBSAFQXdLDQULIANBDGogCCAGEMUEQQEhBCADKAIMQQFGDQQgAyADKAIQIgUgAygCFGo2AhwgAyAFNgIYIANBGGoQogwiBUGAgMQARw0DQcDqhAEQmyAACyAFIAJB0OqEARCzEQALIAIgAUGk04QBEI8gAAsgByACQeDqhAEQoyAACyAFEMQNQf8BcUEBcyEEC0EAIQUCQAJAIAEgAkYNAAJAAkAgACACaiIALAAAIghBf0wNACAIQf8BcSEFDAELIAhBQEkNASABIAJrIQICQAJAAkACQCAIQWBPDQBBAiEIDAELIAhBcE8NAUEDIQgLIAggAk0NAQwDCyAIQXdLDQJBBCEIIAJBBEkNAgsgA0EMaiAAIAgQxQQgAygCDEEBRg0BIAMoAhRFDQICQCADKAIQIggsAAAiBUF/TA0AIAVB/wFxIQUMAQsgCC0AAUE/cSECIAVBH3EhAAJAIAVBX0sNACAAQQZ0IAJyIQUMAQsgAkEGdCAILQACQT9xciECAkAgBUFwTw0AIAIgAEEMdHIhBQwBCyACQQZ0IAgtAANBP3FyIABBEnRBgIDwAHFyIgVBgIDEAEYNAgsgBRDEDUH/AXEhBQsgA0EgaiQAIAQgBXEPC0HA6oQBEJsgAAvMBgIFfwF+IwBBMGsiAiQAIAIgAEECajYCDAJAAkAgASgCACIDQY74hAFBByABKAIEIgQoAgwiBREMAA0AAkACQAJAIAEoAggiBkGAgIAEcQ0AQQEhBCADQbC6mwFBASAFEQwADQQCQCAGQYCAgBBxDQAgBkGAgIAgcQ0CIAAgARDuDEUNAwwFCyAAIAEQow9FDQIMBAsgA0H9j4EBQQIgBREMAA0CIAJBAToAHyACIAQ2AhQgAiADNgIQIAJB4I+BATYCJCACIAEpAggiBzcCKCACIAJBH2o2AhggAiACQRBqNgIgAkACQAJAIAenIgRBgICAEHENACAEQYCAgCBxDQEgACACQSBqEO4MDQUMAgsgACACQSBqEKMPRQ0BDAQLIAAtAAAgAkEgahDHDw0DCyACKAIgQfuPgQFBAiACKAIkKAIMEQwADQIMAQsgAC0AACABEMcPDQILIABBAWohAAJAAkAgASgCCCIEQYCAgARxDQAgASgCAEHTjpgBQQIgASgCBCgCDBEMAA0CAkAgBEGAgIAQcQ0AAkAgBEGAgIAgcQ0AIAAgARDuDA0EDAMLIAAtAAAgARDHDw0DDAILIAAgARCjDw0CDAELIAJBAToAHyACQeCPgQE2AiQgAiABKQIANwIQIAIgASkCCCIHNwIoIAIgAkEfajYCGCACIAJBEGo2AiACQAJAAkAgB6ciBEGAgIAQcQ0AIARBgICAIHENASAAIAJBIGoQ7gwNBAwCCyAAIAJBIGoQow8NAwwBCyAALQAAIAJBIGoQxw8NAgsgAigCIEH7j4EBQQIgAigCJCgCDBEMAA0BCwJAAkAgAS0ACkGAAXENACABKAIAQdOOmAFBAiABKAIEKAIMEQwADQJBASEEIAJBDGogARCtGA0DIAEoAgQhACABKAIAIQMMAQtBASEEIAJBAToAHyACQeCPgQE2AiQgAiABKAIEIgA2AhQgAiABKAIAIgM2AhAgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEK0YDQIgAigCIEH7j4EBQQIgAigCJCgCDBEMAA0CCyADQbP9nAFBASAAKAIMEQwAIQQMAQtBASEECyACQTBqJAAgBAvLBQEXfyMAQRBrIgIkAEEAIQMCQAJAIAEtACVFDQAMAQsCQCABLQAkDQAgAUEBOgAkIAJBCGogARC5BAJAIAIoAggiA0UNACACKAIMIgQNAgtBACEDIAEtACVBAUYNAQsgASgCBCIFIAEoAgwiBmoiA0EDakF8cSADayEHIAFBFGohCCAFQX9qIQkgBUF4aiEKIAEtABgiC0F/aiEMIAEgC2pBE2ohDSABKAIQIQ4gASgCCCEPIAtBBUkhEANAAkACQAJAAkACQAJAIA4gD0sNACAOIAZJDQAgDiAGayIRQQAgESAHa0EHcSARIAdJGyISayETIBEgEkkNAiAHIBEgESAHSxshFCANLQAAIRUgCSAOaiEEIBIhAwJAAkACQANAIANFDQEgA0F/aiEDIAQtAAAhFiAEQX9qIQQgFiAVRw0ACyADIBNqIQMMAQsgFUGBgoQIbCEXIAkgDiASayIDaiEOIAogA2ohFgJAA0AgDiEEIBMiAyAUTQ0BIBYoAgAhEiAWQQRqIRggBEF4aiEOIBZBeGohFiADQXhqIRNBgIKECCASIBdzIhJrIBJyQYCChAggGCgCACAXcyISayAScnFBgIGChHhxQYCBgoR4Rg0ACwsgAyARSw0FA0AgA0UNAiADQX9qIQMgBC0AACEWIARBf2ohBCAWIBVHDQALCyAGIANqIg4gDEkNBiAOIAxrIgQgC2oiAyAESQ0GIAMgD0sNBiAQRQ0FIAUgBGogCyAIIAsQmRxFDQYgASAENgIQIAEoAiAhFiABIAQ2AiAgFiADayEEDAILIAEgBjYCEAsgAUEBOgAlIAEoAiAgASgCHCIDayEECyAFIANqIQMMBQsgEyARQfSSgQEQoyAACyADIBFBhJOBARCPIAALIAtBBEGI9ZoBEI8gAAsgASAONgIQDAALCyAAIAQ2AgQgACADNgIAIAJBEGokAAvIBQEHfyMAQSBrIgMkAAJAAkACQAJAIAEgAkkNAEEAIQRBACEFIAJFDQNBACACQXxqIgUgBSACSxsiBiACQX9qIgUgBiAFSRshBwJAAkADQCAFIAZNDQEgBSACTw0CIAAgBWohCCAFQX9qIgkhBSAILAAAQb9/TA0ACyAJQQFqIQcLIAIgB0kNAkEAIQUgAiAHRg0EAkAgACAHaiIGLAAAIghBf0wNACAIQf8BcSEFDAQLIAhBQEkNBCACIAdrIQcCQAJAAkACQCAIQWBPDQBBAiEJDAELIAhBcE8NAUEDIQkLIAkgB0sNBgwBC0EEIQkgB0EESQ0FIAhBd0sNBQsgA0EMaiAGIAkQxQQgAygCDEEBRg0EIAMgAygCECIFIAMoAhRqNgIcIAMgBTYCGCADQRhqEKIMIgVBgIDEAEcNA0HA6oQBEJsgAAsgBSACQdDqhAEQsxEACyACIAFBpNOEARCPIAALIAcgAkHg6oQBEKMgAAsgBRDEDUH/AXEhBQsCQAJAIAEgAkYNAAJAAkAgACACaiIALAAAIghBf0wNACAIQf8BcSEIDAELIAhBQEkNASABIAJrIQICQAJAAkACQCAIQWBPDQBBAiEIDAELIAhBcE8NAUEDIQgLIAggAk0NAQwDCyAIQXdLDQJBBCEIIAJBBEkNAgsgA0EMaiAAIAgQxQQgAygCDEEBRg0BIAMoAhRFDQICQCADKAIQIgIsAAAiCEF/TA0AIAhB/wFxIQgMAQsgAi0AAUE/cSEAIAhBH3EhBgJAIAhBX0sNACAGQQZ0IAByIQgMAQsgAEEGdCACLQACQT9xciEAAkAgCEFwTw0AIAAgBkEMdHIhCAwBCyAAQQZ0IAItAANBP3FyIAZBEnRBgIDwAHFyIghBgIDEAEYNAgsgCBDEDUH/AXEhBAsgA0EgaiQAIAUgBHMPC0HA6oQBEJsgAAugBgEJfyMAQfAAayICJAAgASABKAJ4IgNB////v39xNgJ4IAEoAsABIQQgAkEYaiABEIMDQQEhBSACKAIcIQYCQAJAIAIoAhhBAXENAEEAIQUgAS0AyQENACABLQDIAUH/AXFB2QBHDQAgARCHDiACIAY2AiAgASABKAJ4IgVBgICAwAByNgJ4IAJBEGogARCDAyACKAIQIQcgASAFNgJ4QQEhBSACKAIUIQgCQAJAIAdBAXFFDQAgCCEHDAELIAIgCDYCJAJAAkACQCABLQDIASIHQQpHDQAgARCHDiACQQhqIAEQuwQgAigCDCEJIAIoAghBAXFFDQEgCSEHDAILIAEoAsQBIQYgASgCwAEhBCACQSxqIAcQ3hsgAkEBNgJUIAJBmO+bATYCUCACQgE3AlwgAkGKBa1CIIZB2KGbAa2ENwNoIAIgAkHoAGo2AlggAkE4aiACQdAAahCNFSACQcwAaiACQTRqKAIANgIAIAIgAikCLDcCRCAEIAYgAkE4ahCFFSEHIAEtAMgBQaIBRw0BIAEQxxEhBiABEIcOIAEgBhDlEQwBCyACIAk2AigCQAJAAkAgAS0AyAEiB0EJRw0AIAEQhw4gAiABELsEIAIoAgQhCiACKAIAQQFxRQ0CIAohBwwBCyABKALEASEGIAEoAsABIQQgAkEsaiAHEN4bIAJBATYCVCACQZjvmwE2AlAgAkIBNwJcIAJBigWtQiCGQdmhmwGthDcDaCACIAJB6ABqNgJYIAJBOGogAkHQAGoQjRUgAkHMAGogAkE0aigCADYCACACIAIpAiw3AkQgBCAGIAJBOGoQhRUhByABLQDIAUGiAUcNACABEMcRIQYgARCHDiABIAYQ5RELIAJBKGoQ5AYMAQsgASgCvAEhBQJAQQhB4AAQ6x8iB0UNACAHIAU2AhggByAENgIUIAcgCjYCECAHIAk2AgwgByAINgIIIAcgBjYCBCAHQQs2AgBBACEFDAQLAAsgAkEkahDkBgsgAkEgahDkBgwBCyAGIQcLIAEgAzYCeCAAIAc2AgQgACAFNgIAIAJB8ABqJAALwgUCDH8DfiMAQaABayIDJAACQEGgAUUNACADQQBBoAH8CwALAkACQAJAIAAoAqABIgQgAkkNACAEQSlPDQIgBEECdCEFIARBAWohBiABIAJBAnRqIQdBACEIQQAhCQJAA0AgAyAIQQJ0aiEKA0AgCCELIAohDCABIAdGDQQgDEEEaiEKIAtBAWohCCABKAIAIQ0gAUEEaiIOIQEgDUUNAAsgDa0hD0IAIRAgBSENIAshASAAIQoDQCABQShPDQIgDCAQIAw1AgB8IAo1AgAgD358IhE+AgAgEUIgiCEQIAxBBGohDCABQQFqIQEgCkEEaiEKIA1BfGoiDQ0ACyAEIQwCQAJAIBFCgICAgBBUDQAgCyAEaiIMQShPDQEgAyAMQQJ0aiAQpzYCACAGIQwLIAkgDCALaiIMIAkgDEsbIQkgDiEBDAELCyAMQShB2KiBARCzEQALIAFBKEHYqIEBELMRAAsgAkECdCEFIAJBAWohBiAAIARBAnRqIQ5BACELIAAhCkEAIQkCQANAIAMgC0ECdGohCANAIAshDSAIIQwgCiAORg0DIAxBBGohCCANQQFqIQsgCigCACEHIApBBGoiBCEKIAdFDQALIAetIQ9CACEQIAUhByANIQogASEIA0AgCkEoTw0CIAwgECAMNQIAfCAINQIAIA9+fCIRPgIAIBFCIIghECAMQQRqIQwgCkEBaiEKIAhBBGohCCAHQXxqIgcNAAsgAiEMAkACQCARQoCAgIAQVA0AIA0gAmoiDEEoTw0BIAMgDEECdGogEKc2AgAgBiEMCyAJIAwgDWoiDCAJIAxLGyEJIAQhCgwBCwsgDEEoQdiogQEQsxEACyAKQShB2KiBARCzEQALAkBBoAFFDQAgACADQaAB/AoAAAsgACAJNgKgASADQaABaiQAIAAPCyAEQShB2KiBARCPIAAL/gUCCH8EfiMAQRBrIgQkAAJAAkACQAJAIAEtADQNACACKQMAIQwMAQsgAikDACEMIAEtADpBAUcNACABIQUDQAJAIAUoAhxFDQAgBSgCJCEGIAwQ9RghDSAFKAIQIgdBeGohCCANQhmIQoGChIiQoMCAAX4hDiAFKAIUIgkgDadxIQpBACELAkADQAJAIAcgCmopAAAiDyAOhSINQn+FIA1C//379+/fv/9+fINCgIGChIiQoMCAf4MiDVANAANAIAIgCCANeqdBA3YgCmogCXFBA3RrELYLDQMgDUJ/fCANgyINUEUNAAsLIA8gD0IBhoNCgIGChIiQoMCAf4NQRQ0CIAogC0EIaiILaiAJcSEKDAALCyAGRQ0CQQEhCgwECwJAIANFDQAgBS0AKEEBcQ0DCyAFKAIgIgUNAAsLIAEhBQNAAkAgBSgCDEUNACAFKAIkIQYgDBD1GCENIAUoAgAiB0FwaiEIIA1CGYhCgYKEiJCgwIABfiEOIAUoAgQiCSANp3EhCkEAIQsDQAJAIAcgCmopAAAiDyAOhSINQn+FIA1C//379+/fv/9+fINCgIGChIiQoMCAf4MiDVANAAJAA0AgAiAIIA16p0EDdiAKaiAJcUEEdGsQtgsNASANQn98IA2DIg1QDQIMAAsLIAZFDQQgBEEIaiACEP4RAkACQAJAIAQoAggiBSAEKAIMIgJBjMWbAUEJEJkcDQAgBSACQdjwmgFBAxCZHA0BQQEhCiAFIAJB2/CaAUEIEJkcRQ0IIAYgASgCMEcNCCABLQA7DQgMAgtBASEKIAYgASgCMEcNByABLQA7RQ0BDAcLQQEhCiAGIAEoAjBHDQYgAS0AOw0GCyABKAIsIQZBASEKDAULIA8gD0IBhoNCgIGChIiQoMCAf4NQRQ0BIAogC0EIaiILaiAJcSEKDAALC0EAIQoCQCADRQ0AIAUtAChBAXFFDQAMAwsgBSgCICIFDQAMAgsLQQAhCgsgACAGNgIEIAAgCjYCACAEQRBqJAALqAYBB38CQAJAAkACQAJAAkACQCAAKAIADgcAAQIDBAYFAAsgAEEAOgAcAkAgACgCICIBRQ0AIAEoAgAiAhDGAyACQeAAQQgQnhIgAUEMQQQQnhILIABBADYCIA8LAkAgACgCDCIDRQ0AIAAoAgghAiADQShsIQMDQAJAIAIoAgBBB0YNACACIAEQvgQgASgCAEUNACABIAIQgwgLIAJBKGohAiADQVhqIgMNAAsLAkAgACgCGCIBRQ0AIAEoAgAiAhDGAyACQeAAQQgQnhIgAUEMQQQQnhILIABBADoAHCAAQQA2AhgPCyAAKAIEIgIgARC+BAJAIAEoAgBFDQAgASACEIMICwJAIAAoAhgiAUUNACABKAIAIgIQxgMgAkHgAEEIEJ4SIAFBDEEEEJ4SCyAAQQA2AhgPCwJAIAAoAgwiAkUNACAAKAIIIQQgAkE4bCEFQQAhAwNAAkACQAJAAkACQCAEIANqIgIoAgAOAwABAgALAkAgAkEIaigCAEEDRw0AIAEgAkEMaigCABCMAQsgAkEoaigCACIGIAEQvgQgASgCAEUNAyABIAYQgwgMAgsgAkEkakEAOgAAAkAgAkEoaiIHKAIAIgZFDQAgBigCACIIEMYDIAhB4ABBCBCeEiAGQQxBBBCeEgsgB0EANgIAIAEtAN4BIQYgAUEAOgDeAQJAIAJBMGooAgAiB0UNACABIAcQjAELIAEgBjoA3gEMAQsgAkEEaigCACIGIAEQvgQCQCABKAIARQ0AIAEgBhCDCAsCQCACQRhqIgcoAgAiBkUNACAGKAIAIggQxgMgCEHgAEEIEJ4SIAZBDEEEEJ4SCyAHQQA2AgALIAEoAgBFDQAgASACELUECyAFIANBOGoiA0cNAAsLAkAgACgCGCIBRQ0AIAEoAgAiAhDGAyACQeAAQQgQnhIgAUEMQQQQnhILIABBADoAHCAAQQA2AhgPCyABLQDeASECIAFBAToA3gEgACgCBCIDIAEQvgQCQCABKAIARQ0AIAEgAxCDCAsgAUEAOgDeASABIAAoAggQjAEgASACOgDeAQ8LIAEgACgCBBCMAQsLjgYBBX8jAEEwayIEJAAgAkEANgIAAkACQAJAAkACQAJAAkACQCABKALkCkEDRg0AAkAgAygCAEF/akECSQ0AIAEoAogLIgUoArACIAUoArQCRw0BCyACKALYBEGAgICAeEYNASAEQRhqIAFB5ApqIAJB2ARqIAMgAigCDCACKAIQEOEHIAQoAhgiAUECRg0CDAYLAkAgASgCyAoiBUECRg0AAkAgAy0AGEEBRw0AIAMoAgxBgAFLDQELIAEoAuAKKALQAiIGRQ0DQQAgAygCFCIHIAMoAhBrIgggCCAHSxtBAEF/IAEoAswKQQN0QYCAgAEgBUEBcRsiBUEFdiAFQRhxQQBHaiIFQQV0IAVB////P0sbIAZuIgVBf2oiBiAGIAVLG0sNACACKALUBUGAgICAeEYNBCAEQRhqIAFByApqIAJB1AVqIAMgAigCDCACKAIQEJMGIAQoAhgiAUECRw0GIAQgBCgCHDYCFEHUpJsBQSsgBEEUakHo6IMBQYyghAEQ6A8ACyACKALoBEGAgICAeEYNBCAEQQhqIAFBsApqIAJB6ARqIAMgAigCDCACKAIQEPQHIAQoAgwhAyAEKAIIIQEMBgtBrKCEARCbIAALIAQgBCgCHDYCFEHUpJsBQSsgBEEUakHo6IMBQbyghAEQ6A8AC0H0o4QBENcZAAtB/J+EARCbIAALQayfhAEQmyAACyAEKAIcIQMLIAIgATYCACACIAM2AgRBASEFAkACQCABQQFxRQ0AQQAhAUEAIQYCQCACKAIUKAIQIgdBAUYNACADIAdPDQEgA0EBdCIGQQFyIQULIAYgAigCECIHTw0BIAIoAgwiAiAGQQJ0aigCACIGRQ0BIAUgB08NASACIAVBAnRqKAIAIgJFDQECQCAGQX9qIgEgAkF/aiICSw0AIAAgAzYCDCAAIAI2AgggACABNgIEQQEhAQwCCyAEQQA2AiggBEEBNgIcIARBxOaDATYCGCAEQgQ3AiAgBEEYakGg4oQBEIUbAAtBACEBCyAAIAE2AgAgBEEwaiQAC+QFAQl/IwBB4ABrIggkAAJAAkAgAg0AQQAhBgwBC0EAIQkgCEEANgIUIAhCgICAgBA3AgwgBCADaiEKIABBBGohCyAFIAZBBXRqIQwgCEHIAGpBBGoiDUEIaiEOAkADQCAFIgYgDEYNASAGQSBqIQUgAyAEIAZBDGooAgAiDyAGQRBqKAIAIhAQthNFDQACQAJAIA8gA08gECAPaiIPIApNcQ0AIA8gA0kNACAPIApNDQELIAggCzYCSCANIAYpABQ3AAAgDiAGQRxqLwAAOwAAIAhBMGogCEHIAGoQwhAgCEEMaiAIKAI0IgYgCCgCOBDFHyAIKAIwIAYQjiAgCUEBaiEJDAELC0EAIAIgCWsiBSAFIAJLGyEFAkAgB0H/AXEiA0ECRg0AIAggAEEkajYCSCAIQdQAaiIEIAZBHGoiDC8AADsBACAIIAYpABQ3AkwgCEEwaiAIQcgAahDCECAIQQxqIAgoAjQiDyAIKAI4EMUfIAgoAjAgDxCOICAIQTBqIAAoAgAQ8BIgCEEkaiAIKAI0Ig8gCCgCOEEBQQIgA0EBRhsgBWoQ3AggCCAIQSRqNgJIIAQgDC8AADsBACAIIAYpABQ3AkwgCEEYaiAIQcgAahDDECAIQQxqIAgoAhwiBiAIKAIgEMUfIAgoAhggBhCOICAIKAIkIAgoAigQjiAgCCgCMCAPEI4gIAUgCWpBA2ohCQwBCyAFQQJqIQYCQANAIAZFDQEgCEEMakEgEPESIAZBf2ohBgwACwsgBSAJakEDaiEJCyAIQdgAakEAIAJBA2oiBiAJayIFIAUgBksbQYiSgAEQ1xMgCEEJNgJUIAhBmO+bATYCUCAIQRQ2AkwgCEECNgJEIAhBmJKAATYCQCAIQQI2AjQgCEH08JoBNgIwIAhBAzYCPCAIIAhBDGo2AkggCCAIQcgAajYCOCABIAhBMGoQrR4hBiAIKAIMIAgoAhAQjiALIAhB4ABqJAAgBgu3BgIHfwF+IwBB4ABrIgMkACABKALAASEEQQAhBQJAAkACQAJAIAINACABLQDIASIGIQUCQCAGQfMARw0AIAEQhw4gAS0AyAEhBQsgBUH/AXFB4wBHDQEgARCHDiAGQfMARiEFCyADQQhqIAFBAEEBENQTIAMoAgwhBiADKAIIQQFxRQ0BIABBgYCAgHg2AgAgACAGNgIEDAILIAEoAsQBIQIgASgCwAEhBiADQRBqIAUQ3hsgA0EBNgJEIANBmO+bATYCQCADQgE3AkwgA0GKBa1CIIZB16abAa2ENwNYIAMgA0HYAGo2AkggA0EoaiADQcAAahCNFSADQTxqIANBGGooAgA2AgAgAyADKQIQNwI0IAYgAiADQShqEIUVIQICQCABLQDIAUGiAUcNACABEMcRIQYgARCHDiABIAYQ5RELIABBgYCAgHg2AgAgACACNgIEDAELAkACQAJAIAEtAMgBIgcNACABEIcOIANBwABqIAEQrwMgAygCRCEHIAMoAkAiCEGAgICAeEcNASAAQYGAgIB4NgIAIAAgBzYCBAwCCyABKALEASECIAEoAsABIQUgA0EcaiAHEN4bIANBATYCRCADQZjvmwE2AkAgA0IBNwJMIANBigWtQiCGQYHamAGthDcDWCADIANB2ABqNgJIIANBKGogA0HAAGoQjRUgA0E8aiADQSRqKAIANgIAIAMgAykCHDcCNCAFIAIgA0EoahCFFSECAkAgAS0AyAFBogFHDQAgARDHESEFIAEQhw4gASAFEOURCyAAQYGAgIB4NgIAIAAgAjYCBAwBCyADIAMoAkgiCTYCMCADIAc2AiwgAyAINgIoIAMgAUEbEJgEIAMoAgQhBwJAIAMoAgBBAXFFDQAgAEGBgICAeDYCACAAIAc2AgQgA0EoahCrHwwBCyABKAK8ASEBAkACQCACDQAgAykCLCEKIAQhAiABIQQgBiEBDAELQYCAgIB4IQggAykDKCEKIAchAiAGIQUgCSEHCyAAIAU2AhwgACABNgIYIAAgBDYCFCAAIAI2AhAgACAHNgIMIAAgCjcCBCAAIAg2AgAMAQsgBhDuHwsgA0HgAGokAAuMBgEEfwJAAkACQAJAAkACQAJAAkACQCAAKAIADgUEAAECAwQLIAAoAgRBAUcNAyABLQAEQQFHDQMCQAJAIAAoAggiACgCAEFmag4DCQABCAsgACgCCEEFRg0IDAcLIAAoAgxFDQYgAUEAOgAEDwsgAS0ABEEBRw0CAkACQCAAKAIEIgAoAgBBZmoOAwYAAQULIAAoAghBBUYNBQwECyAAKAIMRQ0DIAFBADoABA8LAkAgACgCBCICLQBsQQJHDQAgAkHAAGohAANAIAAoAhgiAC0ALEECRg0ACwsCQCACQYQBaigCACIDRQ0AIAJBgAFqKAIAIQAgA0HYAGwhAwNAAkACQAJAIAAoAgBBfGoOAgIAAQsgAUEAOgAEDAELIAAgARCuAwsgAEHYAGohACADQah/aiIDDQALCwJAIAJBmAFqKAIAIgBFDQAgAkGUAWooAgAiBCAAQShsaiEFA0ACQAJAAkACQAJAAkACQAJAAkAgBCgCAA4FCAABAgMICyAEKAIEQQFHDQcgAS0ABEEBRw0HAkACQCAEKAIIIgAoAgBBZmoOAwgAAQcLIAAoAghBBUYNBwwGCyAAKAIMRQ0FIAFBADoABAwHCyABLQAEQQFHDQYCQAJAIAQoAgQiACgCAEFmag4DBQABBAsgACgCCEEFRg0EDAMLIAAoAgxFDQIgAUEAOgAEDAYLIAEgBCgCBBDCCwwFCyAEQQxqKAIAIgNFDQQgBEEIaigCACEAIANBKGwhAwNAIAEgABDiAyAAQShqIQAgA0FYaiIDDQAMBQsLIAAgARDbAQwDCyABQQA6AAQMAgsgACABENsBDAELIAFBADoABAsgBEEoaiIEIAVHDQALCyACLQA8IgBBBkYNASAAQQJHDQEgAkEQaiEAA0AgACgCGCIALQAsQQJGDQAMAgsLIAAoAgwiA0UNACAAKAIIIQAgA0EobCEDA0AgASAAEOIDIABBKGohACADQVhqIgMNAAsLDwsgACABENsBDwsgAUEAOgAEDwsgACABENsBDwsgAUEAOgAEC/kFAQZ/IwBB8ABrIgQkACABKALAASEFIARBwABqIAEgA0F/akH/AXFBAkkQngEgBCgCRCEGAkACQCAEKAJAIgdBB0cNACAAQQc2AgAgACAGNgIEDAELIARBGGpBIGogBEHAAGpBIGopAwA3AwAgBEEYakEYaiAEQcAAakEYaikDADcDACAEQRhqQRBqIARBwABqQRBqKQMANwMAIAQgBCkDSDcDICAEIAY2AhwgAS8BgAEhCCABLQDIASEGIAQgBzYCGAJAIAdFIAZB/wFxQQtGcSAIQYDAAHEiCEENdnEiCUEBRw0AIAEQhw4gAS8BgAFBgMAAcSEIIAEtAMgBIQYLAkACQAJAIAhFDQAgBkH/AXFBCUcNACAEQRBqIAEQsRMgBCgCFCEGIAQoAhBBAXENASAEQRhqQSBqIQgCQAJAAkAgBw4EAgEBAQALIARBATYCRCAEQZi0mwE2AkAgBEIBNwJMIARBjQWtQiCGIARBGGqthDcDaCAEIARB6ABqNgJIIARBwABqQcy+mwEQhRsACyAEQRhqQRhqIQgLIAgQqR8gCCAGNgIAIAEtAMgBIQYLAkACQAJAIAINACAGQf8BcUEXRw0BDAILIAZB/wFxIghBF0YNAUEAIQYgCEGKAUYNAyAIQeAARg0DC0EAIQYgAS0AeUHAAHENAgJAAkAgAg0AIANB/wFxQQJGDQELIAdFDQMgASgCvAEhByAEQcmAgIB4NgJAIAUgByAEQcAAahCFFSEGIAEtAMgBQaIBRw0CIAEQxxEhByABEIcOIAEgBxDlEQwCCyABKAK8ASEHIARB8oCAgHg2AkAgASAFIAcgBEHAAGoQrxoMAgsgARCHDiAEQQhqIAEQswsgBCgCDCEGIAQoAghBAXFFDQELIABBBzYCACAAIAY2AgQgBEEYahDrEgwBCyABKAK8ASEBAkBBKEUNACAAIARBGGpBKPwKAAALIAAgCToANCAAIAY2AjAgACABNgIsIAAgBTYCKAsgBEHwAGokAAvjBQIDfwF+IwBBIGsiBCQAIAIoAhQhBSAEQRhqIAEgAigCECIGQQAQlQICQAJAIAQtABhBBEYNACAEKQMYIgdC/wGDQgRRDQAgACAHNwIADAELAkACQAJAIAZFDQAgBEEYaiABIAYQtBogBC0AGEEERg0AIAQpAxgiB0L/AYNCBFINAQsgBEEANgIMIARBGGogASAEQQxqQZ7EmwFBAxC5DCAELQAYQQRGDQEgBCkDGCIHQv8Bg0IEUQ0BIAAgBzcCAAwCCyAAIAc3AgAMAQsCQAJAIAIoAgwQ1QgNACABLQBdDQEgBEEYaiABEOIOIAQtABhBBEYNASAEKQMYIgdC/wGDQgRRDQEgACAHNwIADAILIARBGGogARDiDiAELQAYQQRGDQAgBCkDGCIHQv8Bg0IEUQ0AIAAgBzcCAAwBCyAEQRhqIAJBDGogARDaIAJAIAQtABhBBEYNACAEKQMYIgdC/wGDQgRRDQAgACAHNwIADAELAkACQAJAIAIoAhxFDQAgBEEYaiACQRxqIAEQ2gkgBC0AGEEERg0AIAQpAxgiB0L/AYNCBFINAQsgAigCAEGAgICAeEYNAQJAIAEtAF1FDQAgA0UNACACKAIIRQ0CCyAEQRhqIAEgBEEMakGwupsBQQEQuAwCQCAELQAYQQRGDQAgBCkDGCIHQv8Bg0IEUQ0AIAAgBzcCAAwDCyAEQRhqIAEgBiAFIAIoAgQgAigCCEGQygAQ+gMCQCAELQAYQQRGDQAgBCkDGCIHQv8Bg0IEUQ0AIAAgBzcCAAwDCyAEQRhqIAEgBEEMakGz/ZwBQQEQuAwgBC0AGEEERg0BIAQpAxgiB0L/AYNCBFENASAAIAc3AgAMAgsgACAHNwIADAELAkAgAw0AIAEoAlRFDQAgBEEYaiABIAVBARDUAyAELQAYQQRGDQAgBCkDGCIHQv8Bg0IEUQ0AIAAgBzcCAAwBCyAAQQQ6AAALIARBIGokAAvtBQIGfwJ+AkAgAkUNAEEAIAJBeWoiAyADIAJLGyEEIAFBA2pBfHEgAWshBUEAIQMDQAJAAkACQAJAIAEgA2otAAAiBsAiB0EASA0AIAUgA2tBA3ENASADIARPDQIDQCABIANqIgZBBGooAgAgBigCAHJBgIGChHhxDQMgA0EIaiIDIARJDQAMAwsLQoCAgICAICEJQoCAgIAQIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBkHnlYEBai0AAEF+ag4DAAECCgsgA0EBaiIGIAJJDQJCACEJQgAhCgwJC0IAIQkgA0EBaiIIIAJJDQJCACEKDAgLQgAhCSADQQFqIgggAkkNAkIAIQoMBwtCgICAgIAgIQlCgICAgBAhCiABIAZqLAAAQb9/Sg0GDAcLIAEgCGosAAAhCAJAAkACQCAGQaB+ag4OAAICAgICAgICAgICAgECCyAIQWBxQaB/Rg0EDAMLIAhBn39KDQIMAwsCQCAHQR9qQf8BcUEMSQ0AIAdBfnFBbkcNAiAIQUBIDQMMAgsgCEFASA0CDAELIAEgCGosAAAhCAJAAkACQAJAIAZBkH5qDgUBAAAAAgALIAdBD2pB/wFxQQJLDQMgCEFATg0DDAILIAhB8ABqQf8BcUEwTw0CDAELIAhBj39KDQELAkAgA0ECaiIGIAJJDQBCACEKDAULIAEgBmosAABBv39KDQJCACEKIANBA2oiBiACTw0EIAEgBmosAABBQEgNBUKAgICAgOAAIQkMAwtCgICAgIAgIQkMAgtCACEKIANBAmoiBiACTw0CIAEgBmosAABBv39MDQMLQoCAgICAwAAhCQtCgICAgBAhCgsgACAJIAOthCAKhDcCBCAAQQE2AgAPCyAGQQFqIQMMAgsgA0EBaiEDDAELIAMgAk8NAANAIAEgA2osAABBAEgNASACIANBAWoiA0cNAAwDCwsgAyACSQ0ACwsgACACNgIIIAAgATYCBCAAQQA2AgALlAYBCn8jAEGQAWsiAyQAAkBBACgCoOadAUECRg0AIANB2OWdATYCLCADQdjlnQE2AnwgAyADQYgBajYCQCADIANB/ABqNgI8IAMgA0EsajYCOEGg5p0BIANBOGpBsNOYARCRBgsgA0IBNwI4AkACQCACQQAoApjmnQEiBEkNACADQSBqQdjlnQEgA0E4aiABIAJBACgClOadASAEQQAoAojmnQERFQAgAygCIEUNACADQRhqQQBB2KKbARCgFCADQQA2AjQgAyADKQMYNwIsIANBOGogASACQYDamAFBAhDkAiADQcAAaiEFQQAhBgNAAkACQAJAAkACQAJAIAMoAjhBAUcNACADKAJ0IQQgAygCcCEHIAMoAmwhCCADKAJoIQkgAygCXEF/Rg0BIANB/ABqIAUgCSAIIAcgBEEAEMwGDAULQQAhCiADLQBGDQMgAygCbCELIAMoAmghDCADKAI8IQQgAy0ARCEIAkADQCADQRBqIAQgDCALEMATIAMoAhAiB0UNAyADKAIUIQkgAyAHNgKIASADIAcgCWo2AowBIANBCGogA0GIAWoQwAsgAygCCEEBcUUNAQJAIAhBAXENAEEBIQhBASEHAkAgAygCDCIJQYABSQ0AQQIhByAJQYAQSQ0AQQNBBCAJQYCABEkbIQcLIAcgBGohBAwBCwsgA0EAOgBEIAMgBDYCPAwDCyADIAQ2AjwgAyAIQX9zQQFxOgBEIAhBAXENAiADQQE6AEYMAwsgA0H8AGogBSAJIAggByAEQQEQzAYMAwsgDCALIAQgC0GQ4JsBEJUfAAsgAyAENgKEASADIAQ2AoABQQEhCgsgAyAKNgJ8CwJAIAMoAnxBAUcNACABIAZqIQQgAygChAEhBiADQSxqIAQgASADKAKAAWoQ4hggA0EsakGC2pgBQYPamAEQ4hgMAQsLIANBLGogASAGaiABIAJqEOIYIABBCGogA0EsakEIaigCADYCACAAIAMpAiw3AgAMAQsgACACNgIIIAAgATYCBCAAQYCAgIB4NgIACyADQZABaiQAC/8FAQZ/AkACQAJAAkACQAJAA0ACQCAAKAIAIgJBAkYNAAJAAkAgAg4HCQEABAUJBgkLAAsgACgCDCICRQ0HIAAoAgghACACQShsIQIDQAJAIAAoAgBBB0YNACAAIAEQxwQLIABBKGohACACQVhqIgINAAwICwsgACgCBCEADAALCyAAKAIMIgJFDQQgACgCCCEDIAJBOGwhBEEAIQADQAJAAkACQAJAIAMgAGoiAigCAA4DAAECAAsgAS0AJCEFIAFBAjoAJCABLQAlIQYCQCACQQhqKAIAQQNHDQAgAUEDOgAkIAEgAkEMaigCACIHEMYBIAcgARBSIAEgBjoAJSABQQM6ACQgASAHEJsBIAEgBjoAJSABQQI6ACQgBygCAEEZRw0AIAEgBxCuAQsgASAGOgAlIAEgBToAJCACQShqKAIAIAEQxwQMAgsgAS0AJCEHIAFBAjoAJCABLQAmIQUgAUEAOgAmIAEtACUhBgJAIAJBMGooAgAiAkUNACABIAIQxgEgAiABEFIgASAGOgAlIAFBAjoAJCABIAIQmwELIAEgBjoAJSABIAc6ACQgASAFOgAmDAELIAJBBGooAgAgARDoCgsgBCAAQThqIgBHDQAMBQsLIAEtACYhAiABQQA6ACYgACgCBCABEMcEIAEtACUhAyAAKAIIIQAgAS0AJCIEDQIgACgCAEF0aiIGQQcgBkEmSRtBe2oiBkEfSw0BQQEgBnRBrqKAgHhxDQIgBg0BIAAtABENAQwCCyABLQAlIQIgACgCBCEAAkAgAS0AJCIDDQACQCAAKAIAQXRqIgRBByAEQSZJG0F7aiIEQR9LDQBBASAEdEGuooCAeHENASAEDQAgAC0AEUUNAQsgAUEDOgAkCyABIAAQxgEgACABEFIgASACOgAlIAEgAzoAJCABIAAQmwEMAgsgAUEDOgAkCyABIAAQxgEgACABEFIgASADOgAlIAEgBDoAJCABIAAQmwEgASACOgAmIAAoAgBBGUcNACABIAAQrgEPCwveBQIEfwN+AkACQAJAAkACQAJAIAFBCEkNACABQQdxIgJFDQUgACgCoAEiA0EpTw0BAkAgAw0AIABBADYCoAEMBgsgACADQQJ0aiEEIANBAnQhBSACQQJ0Qfz4gAFqKAIAIAJ2rSEGQgAhByAAIQIDQCACIAI1AgAgBn4gB3wiCD4CACACQQRqIQIgCEIgiCEHIAVBfGoiBQ0ACwJAIAhCgICAgBBUDQAgA0EoRg0DIAQgB6c2AgAgA0EBaiEDCyAAIAM2AqABDAULIAAoAqABIgNBKU8NAgJAIAMNACAAQQA2AqABIAAPCyABQQJ0Qfz4gAFqNQIAIQYgACADQQJ0aiEBIANBAnQhBUIAIQcgACECA0AgAiACNQIAIAZ+IAd8Igg+AgAgAkEEaiECIAhCIIghByAFQXxqIgUNAAsCQCAIQoCAgIAQVA0AIANBKEYNBCABIAenNgIAIANBAWohAwsgACADNgKgASAADwsgA0EoQdiogQEQjyAAC0EoQShB2KiBARCzEQALIANBKEHYqIEBEI8gAAtBKEEoQdiogQEQsxEACwJAAkACQCABQQhxRQ0AIAAoAqABIgNBKU8NAQJAAkAgAw0AQQAhAwwBCyAAIANBAnQiBWohBEIAIQcgACECA0AgAiACNQIAQuHrF34gB3wiCD4CACACQQRqIQIgCEIgiCEHIAVBfGoiBQ0ACyAIQoCAgIAQVA0AIANBKEYNAyAEIAenNgIAIANBAWohAwsgACADNgKgAQsCQCABQRBxRQ0AIABBpPmAAUECELwEGgsCQCABQSBxRQ0AIABBrPmAAUEDELwEGgsCQCABQcAAcUUNACAAQbj5gAFBBRC8BBoLAkAgAUGAAXFFDQAgAEHM+YABQQoQvAQaCwJAIAFBgAJxRQ0AIABB9PmAAUETELwEGgsgACABEKMDGiAADwsgA0EoQdiogQEQjyAAC0EoQShB2KiBARCzEQAL5QUBBH8CQAJAAkACQAJAAkACQCAAKAIAIgJBe2oiA0EEIANBBkkbDgYGAAQBAgMGCyABLQAAIQMCQCAAKAIIIgJBA0cNACADQQFxDQAgACgCDCABEJUBIAEtAABBAXFFDQUMBgsgAkEDRg0FIANBAXFFDQQMBQsCQCAAKAIIQQNHDQAgAS0AAA0AIAAoAgwgARCVAQsgACgCKEGAgICAeEYNBCAAKAIwIgNFDQQgAS0AAA0EIAAoAiwhACADQTBsIQMDQAJAIAEtAAANACAAIAEQ9AILIABBMGohACADQVBqIgMNAAwFCwsgAEEgaiEDAkAgAkEDRw0AIAEtAAANACAAKAIEIAEQlQELAkAgAygCAEEHRg0AIAMgARDzCAsgACgCaCABEPMIIAAoAkhBgICAgHhGDQMgACgCUCIDRQ0DIAEtAAANAyAAKAJMIQAgA0EwbCEDA0ACQCABLQAADQAgACABEPQCCyAAQTBqIQAgA0FQaiIDDQAMBAsLAkAgACgCCEEDRw0AIAEtAAANACAAKAIMIAEQlQELAkAgACgCKCIEQQhqKAIAIgNFDQAgBEEEaigCACIAIANBBnRqIQUDQAJAIAAiAkE4aigCACIDRQ0AIAEtAAANACACQTRqKAIAIQAgA0EMbCEDA0ACQCABLQAADQAgACgCACABEJUBCyAAQQxqIQAgA0F0aiIDDQALCyACIAEQ8wggAkHAAGoiACAFRw0ACwsCQCAEQRRqKAIAIgNFDQAgAS0AAA0AIARBEGooAgAhACADQQxsIQMDQAJAIAEtAAANACAAKAIAIAEQlQELIABBDGohACADQXRqIgMNAAsLIAQoAhhBgICAgHhGDQIgBEEgaigCACIDRQ0CIAEtAAANAiAEQRxqKAIAIQAgA0EwbCEDA0ACQCABLQAADQAgACABEPQCCyAAQTBqIQAgA0FQaiIDDQAMAwsLIAEtAAANAQsgACgCKCABEJUBCwvyBQIIfwF+IwBB0ABrIgIkAAJAAkACQAJAIAEoAgAiAw0AIAFBCGohAyAALQAQDQEgACgCFCADEPwNGiABKAIgIAAQrwcMAgsCQAJAAkACQAJAIANBf2oOBwABAgYGAwQACyAAKAIUIAFBCGoQ/A0aIAFBIGogABDSIQwFCyABQQRqIAAQ1CEMBAsgAUEEaiAAENUhDAMLIAAoAhQgASgCBCIBEPwNGiABKAIoQTBsIQMgASgCJCIBQQhqIQQDQCADRQ0DAkAgASgCAA0AIAAoAhQgBBD8DRoLIAFBKGohBSABQTBqIQEgACAFEOQeIANBUGohAyAEQTBqIQQMAAsLAkAgASgCBCIBKAIADQAgACgCFCABQQhqEPwNGgsgAS0ARUEDRg0BIAFBIGogABD8GQwBCyABKAIgIgQoAighBSAEKAIkIQYgAkEIaiAAIAMgBBCQByACLQAcQQNGDQAgASgCGCEAIAEoAhQhByABKAIQIQgCQCABKQMIIgpCA4NCAFINACAKpyIDIAMoAgAiA0EBajYCACADQX9MDQILIAEtABwhCSACQcgAaiACQSBqKQMANwIAIAJBwABqIAJBGGopAwA3AgAgAkE4aiACQQhqQQhqKQMANwIAIAIgAikDCDcCMEEIQcAAEOsfIgRFDQEgBEEfNgIAAkBBJEUNACAEQQRqIAJBLGpBJPwKAAALQQhBOBDrHyIDRQ0BIANBADoANCADIAQ2AjAgAyAFNgIsIAMgBjYCKCADQQA2AiAgAyAJOgAcIAMgADYCGCADIAc2AhQgAyAINgIQIAMgCjcCCCADQQA2AgAgAkE+akIANwEAIAJCADcCOCACQoCAgICAATcCLCACQQA2AjRBBEEcEOsfIgRFDQEgBEGAAjsBGCAEQQA2AhQgBCAFNgIQIAQgBjYCDCAEQQE2AgggBCADNgIEIARBATYCACABEOwMIAEgBDYCBCABQQI2AgAgAkEsahDKHQsgAkHQAGokAA8LAAvuBQEDfwJAAkACQAJAAkACQAJAAkAgACgCAA4JAAECAwQFBwYHAAsgACgCHCIARQ0GIABBCGooAgAiAkUNBiAAQQRqKAIAIQAgAkEMbCECA0ACQAJAIAAoAgAiAw0AAkACQAJAIABBBGooAgAiBCgCAEF7aiIDQQQgA0EGSRsOBgQAAQQEAgQLIAQoAghBA0cNACABIAQoAgwQvQELIAQoAighAwwBCyAEKAIIQQNHDQEgBCgCDCEDCyABIAMQvQELIABBDGohACACQXRqIgINAAwHCwsgAEEIaiABEIIFDwsgACgCHCIARQ0EIABBCGooAgAiAkUNBCAAQQRqKAIAIQAgAkEMbCECA0ACQAJAIAAoAgAiAw0AAkACQAJAIABBBGooAgAiBCgCAEF7aiIDQQQgA0EGSRsOBgQAAQQEAgQLIAQoAghBA0cNACABIAQoAgwQvQELIAQoAighAwwBCyAEKAIIQQNHDQEgBCgCDCEDCyABIAMQvQELIABBDGohACACQXRqIgINAAwFCwsgACgCCA0DAkAgACgCKCIDQQhqKAIAIgJFDQAgA0EEaigCACEAIAJBDGwhAgNAIAEgACgCABC9ASAAQQxqIQAgAkF0aiICDQALCwJAIANBFGooAgAiAkUNACADQRBqKAIAIQAgAkHYAGwhAgNAIAAgARC+ByAAQdgAaiEAIAJBqH9qIgINAAsLIAMoAjAiAEUNAyABIAAQvQEPCyABIAAoAgQQvQEPCyAAKAIQIgBFDQEgAEEIaigCACICRQ0BIABBBGooAgAhACACQQxsIQIDQAJAAkAgACgCACIDDQACQAJAAkAgAEEEaigCACIEKAIAQXtqIgNBBCADQQZJGw4GBAABBAQCBAsgBCgCCEEDRw0AIAEgBCgCDBC9AQsgBCgCKCEDDAELIAQoAghBA0cNASAEKAIMIQMLIAEgAxC9AQsgAEEMaiEAIAJBdGoiAg0ADAILCyABIAAoAgQQvQELC8UGAQZ/IwBBEGsiAiQAAkACQCAALQAADQAgACgCBCEDAkAgAC0AAUEBRg0AIAMoAgAoAgBB4sSbAUEBEO8ICyAAQQI6AAEgAkEIaiADKAIAQfmNmwFBCBD+BQJAIAItAAhBBEYNACACKQMIEIwdIQQMAgsgAygCACgCAEGhxJsBQQEQ7wgCQAJAAkAgASgCAEGAgICAeEcNACADKAIAKAIAQYmkmwFBBBDvCAwBCyABKAIIIQQgASgCBCEAIAMoAgAiASgCAEGuxJsBQQEQ7wgCQCAERQ0AIARBGGwhBUGAAiEGA0AgBkEBcQ0DAkAgBkGA/gNxQYACRg0AIAMoAgAoAgBB4sSbAUEBEO8ICyADKAIAKAIAQdesmwFBARDvCCACIAM2AgQgAkGABDYCACAAQQxqKAIAIQEgAEEQaigCACEHIAJBCGogAygCAEG2jZsBQQYQ/gUCQCACLQAIQQRGDQAgAikDCBCMHSEEDAYLIAMoAgAoAgBBocSbAUEBEO8IIAMoAgAoAgBB16ybAUEBEO8IIAIgAzYCDCACQYACNgIIIAJBCGpBrI2bAUEEIAEQoQ0iBA0FIAItAAhBAUYNBCACQQhqQbCNmwFBBiAHEKENIgQNBQJAIAIoAggiAUGA/gNxRQ0AIAFBAXENACACKAIMKAIAKAIAQabEmwFBARDvCAsgAkG8jZsBQQMgABDMCyIEDQUgAi0AAEEBRg0EIAIoAgQhAQJAIAItAAFBAUYNACABKAIAKAIAQeLEmwFBARDvCAsgAkECOgABIAJBCGogASgCAEG/jZsBQQMQ/gUCQCACLQAIQQRGDQAgAikDCBCMHSEEDAYLIAEoAgAoAgBBocSbAUEBEO8IAkACQCAAQRRqKAIAIgQNACABKAIAKAIAQYmkmwFBBBDvCAwBCyAEIAEQ8QMiBA0GCwJAIAIoAgAiBEGA/gNxRQ0AIARBAXENACABKAIAKAIAQabEmwFBARDvCAsgAEEYaiEAIAZB/4F8cUGABHIhBiAFQWhqIgUNAAsgAygCACEBCyABKAIAQa/EmwFBARDvCAtBACEEDAILQbKjmwFBKEGkhpsBEN0XAAsQzRwhBAsgAkEQaiQAIAQLmAYBBX8gAEF4aiIBIABBfGooAgAiAkF4cSIAaiEDAkACQCACQQFxDQAgAkECcUUNASABKAIAIgIgAGohAAJAIAEgAmsiAUEAKAKg8J0BRw0AIAMoAgRBA3FBA0cNAUEAIAA2ApjwnQEgAyADKAIEQX5xNgIEIAEgAEEBcjYCBCADIAA2AgAPCyABIAIQ2gcLAkACQAJAAkACQAJAIAMoAgQiAkECcQ0AIANBACgCpPCdAUYNAiADQQAoAqDwnQFGDQMgAyACQXhxIgIQ2gcgASACIABqIgBBAXI2AgQgASAAaiAANgIAIAFBACgCoPCdAUcNAUEAIAA2ApjwnQEPCyADIAJBfnE2AgQgASAAQQFyNgIEIAEgAGogADYCAAsgAEGAAkkNAiABIAAQ9ghBACEBQQBBACgCuPCdAUF/aiIANgK48J0BIAANBAJAQQAoAoDunQEiAEUNAEEAIQEDQCABQQFqIQEgACgCCCIADQALC0EAIAFB/x8gAUH/H0sbNgK48J0BDwtBACABNgKk8J0BQQBBACgCnPCdASAAaiIANgKc8J0BIAEgAEEBcjYCBAJAIAFBACgCoPCdAUcNAEEAQQA2ApjwnQFBAEEANgKg8J0BCyAAQQAoArDwnQEiBE0NA0EAKAKk8J0BIgBFDQNBACECQQAoApzwnQEiBUEpSQ0CQfjtnQEhAQNAAkAgASgCACIDIABLDQAgACADIAEoAgRqSQ0ECyABKAIIIQEMAAsLQQAgATYCoPCdAUEAQQAoApjwnQEgAGoiADYCmPCdASABIABBAXI2AgQgASAAaiAANgIADwsgAEH4AXFBiO6dAWohAwJAAkBBACgCkPCdASICQQEgAEEDdnQiAHENAEEAIAIgAHI2ApDwnQEgAyEADAELIAMoAgghAAsgAyABNgIIIAAgATYCDCABIAM2AgwgASAANgIIDwsCQEEAKAKA7p0BIgFFDQBBACECA0AgAkEBaiECIAEoAggiAQ0ACwtBACACQf8fIAJB/x9LGzYCuPCdASAFIARNDQBBAEF/NgKw8J0BCwveBQEHfyMAQTBrIgUkAAJAAkAgAg0AIABBADYCCCAAQoCAgIAQNwIADAELIAQgAkEMbCIGQXRqIgdBDG5sIQggASEJAkADQCAGRQ0BIAZBdGohBiAJKAIIIAhqIgogCEkhCyAJQQxqIQkgCiEIIAtFDQALQfCAmwFBNUHwgZsBEPISAAsCQAJAAkACQAJAAkAgCEF/TA0AAkACQCAIDQBBASEGDAELQQAtAMDxnQEaIAgQhQEiBkUNAgsgBUEANgIUIAUgBjYCECABKAIIIQkgASgCBCEGIAUgCDYCDCAFQQxqIAYgBiAJahCKFCAIIAUoAhQiCWshBiAFKAIQIAlqIQkCQAJAIARBAkcNACACQQFGDQEgAUEUaiELA0AgBkEBTQ0HIAtBfGooAgAhAiALKAIAIQogCSADLwAAOwAAIAZBfmoiBiAKSQ0IIAlBAmohCQJAIApFDQAgCSACIAr8CgAACyALQQxqIQsgBiAKayEGIAkgCmohCSAHQXRqIgcNAAwCCwsgAkEBRg0AIAFBFGohCwNAIAZFDQQgC0F8aigCACECIAsoAgAhCiAJIAMtAAA6AAAgBkF/aiIGIApJDQUgCUEBaiEJAkAgCkUNACAJIAIgCvwKAAALIAtBDGohCyAGIAprIQYgCSAKaiEJIAdBdGoiBw0ACwsgACAFKQIMNwIAIABBCGogCCAGazYCAAwGC0GAgpsBENMZCwALIAVBADYCKCAFQQE2AhwgBUH00ZsBNgIYIAVCBDcCICAFQRhqQZCCmwEQhRsACyAFQQA2AiggBUEBNgIcIAVB9NGbATYCGCAFQgQ3AiAgBUEYakGQgpsBEIUbAAsgBUEANgIoIAVBATYCHCAFQfTRmwE2AhggBUIENwIgIAVBGGpBkIKbARCFGwALIAVBADYCKCAFQQE2AhwgBUH00ZsBNgIYIAVCBDcCICAFQRhqQZCCmwEQhRsACyAFQTBqJAAL3AUBCH8jAEEwayIFJAACQAJAIAINACAAQQA2AgggAEKAgICAEDcCAAwBCyABIAJBA3QiBmohByABQQhqIQggBCAGQXhqQQN2bCEJIAEhCgJAA0AgBkUNASAGQXhqIQYgCigCBCAJaiILIAlJIQwgCkEIaiEKIAshCSAMRQ0AC0HwgJsBQTVB8IGbARDyEgALIAVBGGogCUEBQQEQzA0gBSgCHCEGAkACQAJAAkACQCAFKAIYQQFGDQAgBUEANgIUIAUgBSgCIDYCECAFIAY2AgwgBUEMaiABKAIAIgYgBiABKAIEahDiGCAJIAUoAhQiBmshCiAFKAIQIAZqIQYCQAJAIARBBEcNACACQQFGDQEDQCAKQQNNDQYgCEEEaigCACELIAgoAgAhDCAGIAMoAAA2AAAgCkF8aiIKIAtJDQcgBkEEaiEGAkAgC0UNACAGIAwgC/wKAAALIAogC2shCiAGIAtqIQYgCEEIaiIIIAdHDQAMAgsLIAJBAUYNAANAIApBAk0NAyAIQQRqKAIAIQsgCCgCACEMIAYgAy8AADsAACAGQQJqIANBAmotAAA6AAAgCkF9aiIKIAtJDQQgBkEDaiEGAkAgC0UNACAGIAwgC/wKAAALIAogC2shCiAGIAtqIQYgCEEIaiIIIAdHDQALCyAAIAUpAgw3AgAgAEEIaiAJIAprNgIADAULIAYgBSgCIEGAgpsBEKoeAAsgBUEANgIoIAVBATYCHCAFQfTRmwE2AhggBUIENwIgIAVBGGpBkIKbARCFGwALIAVBADYCKCAFQQE2AhwgBUH00ZsBNgIYIAVCBDcCICAFQRhqQZCCmwEQhRsACyAFQQA2AiggBUEBNgIcIAVB9NGbATYCGCAFQgQ3AiAgBUEYakGQgpsBEIUbAAsgBUEANgIoIAVBATYCHCAFQfTRmwE2AhggBUIENwIgIAVBGGpBkIKbARCFGwALIAVBMGokAAu6BQILfwF+IAAoAgAhAwJAIAAoAgQiBEEBaiIFQQN2IAVBB3FBAEdqIgZFDQAgAyEHA0AgByAHKQMAIg5Cf4VCB4hCgYKEiJCgwIABgyAOQv/+/fv379+//wCEfDcDACAHQQhqIQcgBkF/aiIGDQALCwJAAkACQCAFQQhJDQAgAyAFaiADKQAANwAADAELAkAgBUUNACADQQhqIAMgBfwKAAALIAUNAEEAIQcMAQtBACEGQQAhBQNAAkAgACgCACIDIAUiB2otAABBgAFHDQAgAyAGaiEIIAMgB0ECdGtBfGohCQJAA0AgASAAIAcgAhENACEOIAAoAgQiAyAOpyIKcSILIQwCQCAAKAIAIgUgC2opAABCgIGChIiQoMCAf4MiDkIAUg0AQQghDSALIQwDQCAMIA1qIQwgDUEIaiENIAUgDCADcSIMaikAAEKAgYKEiJCgwIB/gyIOUA0ACwsCQCAFIA56p0EDdiAMaiADcSIMaiwAAEEASA0AIAUpAwBCgIGChIiQoMCAf4N6p0EDdiEMCyAMIAtrIAcgC2tzIANxQQhJDQEgBSAMaiILLQAAIQ0gCyAKQRl2Igo6AAAgBSAMQXhqIANxakEIaiAKOgAAIAUgDEECdGshCgJAIA1B/wFGDQBBfCEFA0AgBUUNAiAIIAVqIgMoAAAhCyADIAogBWoiDCgAADYAACAMIAs2AAAgBUEEaiEFDAALCwsgACgCBCEFIAAoAgAiAyAHakH/AToAACADIAUgB0F4anFqQQhqQf8BOgAAIApBfGogCSgAADYAAAwBCyAFIAdqIApBGXYiCzoAACAFIAMgB0F4anFqQQhqIAs6AAALIAdBAWohBSAGQXxqIQYgByAERw0ACyAAKAIEIgcgB0EBakEDdkEHbCAHQQhJGyEHCyAAIAcgACgCDGs2AggL8gUBC38jAEEwayIDJAAgASABKAJ4IgRB///vb3FBgICAEHI2AnggAi0APSEFIAItAEAhBiACLQA/IQcgAigCMCEIIAItAD4hCSACLQA8IQogAyABIAJBJGogAigCICILIAItAEEgAi0AQhDECSADKAIAIQwgASAENgJ4IAMoAgQhBAJAAkAgDEEBcUUNACAAQQ02AgAgACAENgIEIAIQ/hwMAQsCQAJAAkACQCAFDgMDAAEDCyABLQCBAUEgcUUNAiABLQCCAUH/AXENAgwBCyABLQCBAUEgcUUNASABLQCCAUH/AXENAQsgAkEIQRAgAigCAEF+akEDSSIMG2ooAgAhDSACQQxBFCAMG2ooAgAhDCADQYGBgIB4NgIIIAEgDSAMIANBCGoQrxoLAkACQAJAIAIoAgBBBUYNACABKAK8ASEMIAlBAXENAQwCCyACQQhqIQwgASgCvAEhDSACKAIUIQICQCAKQf8BcUEDRg0AIANBtoGAgHg2AgggASALIAIgCyACSRsgCyACIAsgAksbIANBCGoQrxoLIANBCGpBDGogDEEIaigCADYCACAAQQY2AgAgACAGOgApIAAgBzoAKCAAIAk6ACcgACAFOgAlIAAgCjoAJCAAIAQ2AiAgACANNgIcIAAgCzYCGCAAIAI2AhQgACAIQQFGOgAmIAMgDCkCADcCDCAAIAMpAgg3AgQgAEEMaiADQQhqQQhqKQIANwIADAILIAQoAhhBgICAgHhGDQAgA0GigYCAeDYCCCABIAsgDCADQQhqEK8aCyAAQQU2AgAgA0EkaiACQRhqKQIANwIAIANBHGogAkEQaikCADcCACADQRRqIAJBCGopAgA3AgAgAyACKQIANwIMAkBBJEUNACAAQQRqIANBCGpBJPwKAAALIAAgCjoAOSAAIAU6ADggACAGOgA3IAAgBzoANiAAIAk6ADUgACAIQQFGOgA0IAAgBDYCMCAAIAw2AiwgACALNgIoCyADQTBqJAALjQUDEX8BfgF8IwBBEGsiAiQAAkACQCABQRJJDQBEAAAAAAAAAAAhFANAIBREAAAAAAAAIEAgAC0AAEFQakH/AXG4EO8hIRQgAEEBaiEAIAFBf2oiAQ0ADAILC0EAIQMCQAJAAkACQAJAAkAgAQ4CBAABC0EBIQMgAC0AAEFVag4DAwEDAQsCQCAALQAAIgRBK0YNACABQRFGDQIgASEDDAELIAFBf2ohAyAAQQFqIQALQgAhEwNAAkAgAC0AAEFQaiIBQQdNDQBBASEDDAMLIABBAWohACATQgOGIAGthCETIANBf2oiAw0ADAMLC0EBIQMgBEFQaiIBQQhPDQAgAC0AAUFQaiIEQQdLDQAgAC0AAkFQaiIFQQdLDQAgAC0AA0FQaiIGQQdLDQAgAC0ABEFQaiIHQQdLDQAgAC0ABUFQaiIIQQdLDQAgAC0ABkFQaiIJQQdLDQAgAC0AB0FQaiIKQQdLDQAgAC0ACEFQaiILQQdLDQAgAC0ACUFQaiIMQQdLDQAgAC0ACkFQaiINQQdLDQAgAC0AC0FQaiIOQQdLDQAgAC0ADEFQaiIPQQdLDQAgAC0ADUFQaiIQQQdLDQAgAC0ADkFQaiIRQQdLDQAgAC0AD0FQaiISQQdLDQAgAC0AEEFQaiIAQQdLDQAgEiARQQN0IBAgD0EDdCAOQQZ0cnJBBnRycq1CA4YgByAGQQN0IAUgBEEDdCABQQZ0cnJBBnRycq1CBoYgCEEDdK2EIAmthEIGhiAKQQN0rYQgC62EQhiGIA1BEnQgDEEVdHKthIQgAK2EIRMMAQsgAiADOgAPQdSkmwFBKyACQQ9qQbCqmQFB4KqZARDoDwALIBO6IRQLIAJBEGokACAUC9IFAQt/IwBBsAFrIgMkAAJAAkACQAJAAkACQCABLQALQQFxDQAgAigCCCIEIAIoAgwiBU8NAiACIARBAWoiBDYCCCADQfAAaiACKAIAIgYgAigCBCIHEEggAygCeCEIIAMoAnQhCSADKAJwIQpBNEUNASADQQhqIANB/ABqQTT8CgAADAELIAIoAggiBCACKAIMIgVPDQEgAiAFQX9qIgU2AgwgA0HwAGogAigCACIGIAIoAgQiBxBIIAMoAnghCCADKAJ0IQkgAygCcCEKQTRFDQAgA0EIaiADQfwAakE0/AoAAAsgCkFWag4CAgABCyADQfAAaiABEJsVIABBCGohBSADKAJ0IQICQAJAIAMoAnAiAUEqRg0AQThFDQEgBSADQfAAakEIakE4/AoAAAwBCyAFIAI2AgALIAAgATYCACAAIAI2AgQMAgsCQEE0RQ0AIABBDGogA0EIakE0/AoAAAsgACAINgIIIAAgCTYCBCAAIAo2AgAMAQsgA0H8AGohCwNAAkACQAJAAkACQCABLQALQQFxDQAgBCAFTw0CIAIgBEEBaiIENgIIIANB8ABqIAYgBxBIIAMoAnghDCADKAJ0IQ0gAygCcCEKQTRFDQEgA0E8aiALQTT8CgAADAELIAQgBU8NASACIAVBf2oiBTYCDCADQfAAaiAGIAcQSCADKAJ4IQwgAygCdCENIAMoAnAhCkE0RQ0AIANBPGogC0E0/AoAAAsgCkEqRg0CIApBK0cNAQsgACAINgIIIAAgCTYCBCAAQSo2AgAMAwsCQEE0RQ0AIABBDGogA0E8akE0/AoAAAsgACAMNgIIIAAgDTYCBCAAIAo2AgAMAgsgA0HwAGogASAIIA0QnggCQCADKAJwIghBKkYNAAJAQTxFDQAgAEEEaiADQfAAakEEckE8/AoAAAsgACAINgIADAILIAwhCAwACwsgA0GwAWokAAuZBgIBfwF+AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4MCgABAgMEBQYHCAwJDAsgACgCKCIBEMkBIAFBwABBCBCeEgJAAkACQCAAKAIIDgIBAgALIAAoAgwiABDJASAAQcAAQQgQnhIPCyAAKQMQIgJCA4NCAFINDCACpyIAIAAoAgAiAUF/ajYCACABQQFHDQwgACAAKAIQEMEbDwsgACkDECICQgODQgBSDQsgAqciACAAKAIAIgFBf2o2AgAgAUEBRw0LIAAgACgCEBDBGw8LAkAgACgCCA0AIAApAxAiAkIDg0IAUg0LIAKnIgAgACgCACIBQX9qNgIAIAFBAUcNCyAAIAAoAhAQwRsPCyAAKAIMIgAQyQEgAEHAAEEIEJ4SDwsgACgCBCIAEMkBIABBwABBCBCeEg8LAkACQCAAKAIEIgAoAgBBA0YNACAAKAIgIgEQyQEgAUHAAEEIEJ4SIAAQgA8MAQsgACgCECIBEMkBIAFBwABBCBCeEiAAQQRqEOsXIAAoAgQgAEEIaigCABDEICAAKAIgIgFFDQAgARC4GCABKAIAIAFBBGooAgAQwCAgAUEUQQQQnhILIABBKEEIEJ4SDwsgACgCBCIBEMkBIAFBwABBCBCeEiAAKAIIIgAQxAMgAEHgAEEIEJ4SDwsgACgCBCIBEMkBIAFBwABBCBCeEiAAKAIIIgAQxAMgAEHgAEEIEJ4SDwsgACgCBCIAEMkBIABBwABBCBCeEg8LIAAoAgQiARDJASABQcAAQQgQnhIgACgCCCIAEMQDIABB4ABBCBCeEg8LIAAoAgQiARDJASABQcAAQQgQnhIgACgCCCIAELgYIAAoAgAgAEEEaigCABDAICAAQRRBBBCeEg8LAkACQCAAKAIEDgIAAQQLIAAoAgwiASAAKAIQEKQaIAAoAgggARDBIAwCCyAAQQhqELgKIAAoAgggACgCDBC+IAwBCyAAKQMIIAAoAiAQwhMMAQsgACgCHCIARQ0AIAAoAgAiARDEAyABQeAAQQgQnhIgAEEMQQQQnhIPCwucBgEBfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgAoAgAOFAABAgMEBQYHCAkKCwwNDg8QERITAAsgAiAAQQRqNgIMIAFBz4uaAUENIAJBDGpBowMQpAshAAwTCyACIABBBGo2AgwgAUHci5oBQQogAkEMakGkAxCkCyEADBILIAIgAEEEajYCDCABQeaLmgFBFSACQQxqQaUDEKQLIQAMEQsgAiAAQQhqNgIMIAFB+4uaAUEJIAJBDGpBpgMQpAshAAwQCyACIABBCGo2AgwgAUGEjJoBQQsgAkEMakGnAxCkCyEADA8LIAIgAEEEajYCDCABQY+MmgFBCSACQQxqQagDEKQLIQAMDgsgAiAAQQRqNgIMIAFBmIyaAUELIAJBDGpBqQMQpAshAAwNCyACIABBBGo2AgwgAUGjjJoBQQsgAkEMakGqAxCkCyEADAwLIAIgAEEEajYCDCABQa6MmgFBDiACQQxqQasDEKQLIQAMCwsgAiAAQQRqNgIMIAFBvIyaAUEKIAJBDGpBrAMQpAshAAwKCyACIABBBGo2AgwgAUHGjJoBQRkgAkEMakGtAxCkCyEADAkLIAIgAEEEajYCDCABQd+MmgFBESACQQxqQa4DEKQLIQAMCAsgAiAAQQhqNgIMIAFB8IyaAUELIAJBDGpBrwMQpAshAAwHCyACIABBBGo2AgwgAUH7jJoBQRMgAkEMakGwAxCkCyEADAYLIAIgAEEEajYCDCABQY6NmgFBDiACQQxqQbEDEKQLIQAMBQsgAiAAQQRqNgIMIAFBnI2aAUETIAJBDGpBsgMQpAshAAwECyACIABBCGo2AgwgAUGvjZoBQQwgAkEMakGzAxCkCyEADAMLIAIgAEEIajYCDCABQbuNmgFBCSACQQxqQbQDEKQLIQAMAgsgAiAAQQhqNgIMIAFBxI2aAUEPIAJBDGpBtQMQpAshAAwBCyACIABBCGo2AgwgAUHTjZoBQQwgAkEMakG2AxCkCyEACyACQRBqJAAgAAvMBQIKfwF+IwBBwABrIgIkABD8HRogASgCCEEMbCEDIAJBJGpBBGohBCAAKAIUIQUgASgCBCEBIAJBPGohBgNAAkACQAJAIANFDQACQCABKAIADQACQAJAAkAgAUEEaigCACIHKAIAQXtqIggNACAHKAIYIQggBygCFCEJIAcoAhAhCgJAIAcpAwgiDEIDg0IAUg0AIAynIgsgCygCACILQQFqNgIAIAtBf0wNBgsgAiAINgIYIAIgCTYCFCACIAo2AhAgAiAMNwMIIAIgBy0AHDoAHCAFIAJBCGoQ/A0NASACQQhqIAdBCGoQtgsNAiAHKAIUIQkgBygCECEKAkAgBykDCCIMQgODQgBSDQAgDKciCCAIKAIAIghBAWo2AgAgCEF/TA0GCyAEIAIpAwg3AgAgBEEQaiACQQhqQRBqKQMANwIAIARBCGogAkEIakEIaikDADcCAEEIQcAAEOsfIghFDQUgCEEaNgIAIAggAikCJDcCBCAIQQxqIAJBJGpBCGopAgA3AgAgCEEUaiACQSRqQRBqKQIANwIAIAhBHGogBigCADYCACAHEI4PIAcgCDYCKCAHIAk2AhwgByAKNgIYIAcgDDcDECAHQQA2AgggB0EGNgIADAYLAkACQAJAAkACQAJAIAhBBCAIQQZJGw4GAAECAwQFAAsgBSAHQQhqEPwNGgwKCyAAIAdBCGoQxR0gBygCKCAAEN4DDAkLIAUgB0EQahD8DRogB0EoaiAAENAhDAgLIAAgB0EIahDFHSAHQShqIAAQgR4MBwsgACAHEMUdIAdBIGogABCCHiAHQegAaiAAENEhIAdByABqIAAQgR4MBgsgACAHQQhqEMUdIAdBKGogABDSIQwFCyACKQMIEMYdDAQLIAIpAwgQxh0MAwsgASAAENAhDAILIAJBwABqJAAPCwALIAFBDGohASADQXRqIQMMAAsLkgUBCH8CQAJAAkACQAJAAkACQAJAAkACQCACIAAoAggiBE8NACAAIANB/wFxai0ALCIDQQJqIQUgACgCBCEGA0ACQAJAAkACQAJAIAYgAkECdGooAgAiAEH/AXFBgn5qDgICAAELIAUgAmoiACAETw0GIAYgAEECdGooAgAhAAJAIAENACAAQQFGDQQLIABBACAAQQFHGw8LIAQgAkECaiIHSQ0GIABBAnZBP3EgAEEDcUEAR2oiCCAEIAdrIgBLDQcgCEECdCEJIAYgB0ECdGohCkF/IQsCQAJAAkADQCAJRQ0FIAtBAWohCyADIAooAgAiAEH/AXFGDQEgAyAAQQh2Qf8BcUYNAiADIABBEHZB/wFxRg0DIApBBGohCiAJQXxqIQkgAyAAQRh2Rw0ACyAIIAdqIAtBAnRqQQNqIgMgBE8NDiAGIANBAnRqKAIADwsgC0ECdCAIIAdqaiIDIARPDQogBiADQQJ0aigCAA8LIAggB2ogC0ECdGpBAWoiAyAETw0KIAYgA0ECdGooAgAPCyAIIAdqIAtBAnRqQQJqIgMgBE8NCiAGIANBAnRqKAIADwsgAyAAQQh2Qf8BcUYNDAsgAUUNAEEADwsgAkEBaiIAIARPDQkgBiAAQQJ0aigCACICIARJDQALCyACIARBmPGDARCzEQALIAAgBEGY8oMBELMRAAsgByAEQajxgwEQoyAACyAIIABBuPGDARCPIAALIAMgBEH48YMBELMRAAsgAyAEQejxgwEQsxEACyADIARB2PGDARCzEQALIAMgBEHI8YMBELMRAAsgACAEQajygwEQsxEACwJAIAJBAmoiAyAETw0AIAYgA0ECdGooAgAPCyADIARBiPKDARCzEQALkgUBCH8CQAJAAkACQAJAAkACQAJAAkACQCACIAAoAggiBE8NACAAIANB/wFxai0ALCIDQQJqIQUgACgCBCEGA0ACQAJAAkACQAJAIAYgAkECdGooAgAiAEH/AXFBgn5qDgICAAELIAUgAmoiACAETw0GIAYgAEECdGooAgAhAAJAIAENACAAQQFGDQQLIABBACAAQQFHGw8LIAQgAkECaiIHSQ0GIABBAnZBP3EgAEEDcUEAR2oiCCAEIAdrIgBLDQcgCEECdCEJIAYgB0ECdGohCkF/IQsCQAJAAkADQCAJRQ0FIAtBAWohCyADIAooAgAiAEH/AXFGDQEgAyAAQQh2Qf8BcUYNAiADIABBEHZB/wFxRg0DIApBBGohCiAJQXxqIQkgAyAAQRh2Rw0ACyAIIAdqIAtBAnRqQQNqIgMgBE8NDiAGIANBAnRqKAIADwsgC0ECdCAIIAdqaiIDIARPDQogBiADQQJ0aigCAA8LIAggB2ogC0ECdGpBAWoiAyAETw0KIAYgA0ECdGooAgAPCyAIIAdqIAtBAnRqQQJqIgMgBE8NCiAGIANBAnRqKAIADwsgAyAAQQh2Qf8BcUYNDAsgAUUNAEEADwsgAkEBaiIAIARPDQkgBiAAQQJ0aigCACICIARJDQALCyACIARBmPGDARCzEQALIAAgBEGY8oMBELMRAAsgByAEQajxgwEQoyAACyAIIABBuPGDARCPIAALIAMgBEH48YMBELMRAAsgAyAEQejxgwEQsxEACyADIARB2PGDARCzEQALIAMgBEHI8YMBELMRAAsgACAEQajygwEQsxEACwJAIAJBAmoiAyAETw0AIAYgA0ECdGooAgAPCyADIARBiPKDARCzEQAL9gUBBX8jAEGwAWsiAiQAAkACQAJAAkACQAJAAkACQAJAIAEoAgAiAyABKAIERg0AIAEgA0EEajYCACABKAIIIgEoAiANAiABQX82AiAgASgCJA0DIAFBATYCJCABIAEoAkgiBDYCKAJAIAQgASgCQEcNACABQcAAakGwq4QBEOkVCyABKAJEIARBAnRqQQA2AgAgASAEQQFqNgJIIAEgASgCIEEBajYCICACQfAAaiABQQBBACABIAMoAgAQ6gIgAigCeCEDIAIoAnQhBQJAAkAgAigCcCIEQSpGDQBBNEUNASACQQhqIAJB/ABqQTT8CgAADAELIAEoAiANBSABQX82AiAgASgCJEUNBiABKAIoIQQgAkEJNgIIIAIgBDYCDCACQfAAaiABQSRqIAJBCGoQ2wsgAigCdCEGAkAgAigCcCIEQSpGDQAgAigCeCEDAkBBNEUiBQ0AIAJBPGogAkH8AGpBNPwKAAALIAEgASgCIEEBajYCIAJAIAUNACACQQhqIAJBPGpBNPwKAAALIAYhBQwBCyABIAEoAiBBAWo2AiAgAkHwAGogASADIAYQnggCQCACKAJwIgRBKkYNACACKAJ4IQMgAigCdCEFQTRFDQEgAkEIaiACQfwAakE0/AoAAAwBCyABKAIgDQcgAUF/NgIgIAEoAiRFDQggASgCKCIEIAEoAkgiA08NCSABKAJEIARBAnRqIAU2AgAgAUEANgIkIAEgASgCIEEBajYCIEEqIQQgBiEDCyAAIAM2AgggACAFNgIEIAAgBDYCAEE0RQ0BIABBDGogAkEIakE0/AoAAAwBCyAAQSs2AgALIAJBsAFqJAAPC0HksIQBEPgUAAsgAkEANgKAASACQQE2AnQgAkGcpoQBNgJwIAJCBDcCeCACQfAAakGgq4QBEIUbAAtBlLKEARD4FAALQdCrhAFBH0Hwq4QBEPISAAtB9LCEARD4FAALQdCrhAFBH0Hwq4QBEPISAAsgBCADQcCrhAEQsxEAC4QGAQR/IwBB0AFrIgMkAAJAAkACQCABKAIgDQAgAUF/NgIgAkACQAJAIAEoAiwiBEUNACABIARBf2oiBTYCLCABKAIoIAVBmAFsaiIFKAIAQff/u39qDgICAAELQbKjmwFBKEHchIUBEN0XAAsgASAENgIsQdgARQ0DIAAgAkHYAPwKAAAMAwsgBS0AXCEGIAVBBGohBAJAQdgARSIFDQAgA0HgAGogBEHYAPwKAAALAkAgBQ0AIANBCGogBEHYAPwKAAALAkACQCADKAIIIgRBiIDEAEcNACADQRRqIQQMAQsCQAJAAkACQAJAAkACQAJAIARBgIC8f2oiBEECIARBCEkbDggAAQIDBAUGBwALIANBDGohBAwHCyADQQhqQQhqIQQMBgsgA0HIAGohBAwFCyADQQxqIQQMBAsgA0EoaiEEDAMLIANBDGohBAwCCyADKAIMQdgAaiEEDAELIANBGGohBAsgA0G4AWpBCGogBEEIaigCADYCACADIAQpAgA3A7gBAkACQCACKAIAIgRBiIDEAEcNACACQQxqIQQMAQsCQAJAAkACQAJAAkACQAJAIARBgIC8f2oiBEECIARBCEkbDggAAQIDBAUGBwALIAJBBGohBAwHCyACQQhqIQQMBgsgAkHAAGohBAwFCyACQQRqIQQMBAsgAkEgaiEEDAMLIAJBBGohBAwCCyACKAIEQdgAaiEEDAELIAJBEGohBAsgA0G4AWpBFGogBEEUaigCADYCAEEALQDA8Z0BGiADIAQpAgw3AsQBQdgAEIUBIgRFDQECQEHYAEUNACAEIANB4ABqQdgA/AoAAAtBAC0AwPGdARpB2AAQhQEiBUUNAQJAQdgARQ0AIAUgAkHYAPwKAAALIAAgBjoAJCAAIAU2AgggACAENgIEIABBiIDEADYCACAAQRxqIANByAFqKQMANwIAIABBFGogA0HAAWopAwA3AgAgACADKQO4ATcCDAwCC0HMhIUBEPgUCwALIAEgASgCIEEBajYCICADQdABaiQAC9MFARB/IwBBMGsiASQAAkACQCAALQAMDQACQCAAKAIIIgJFDQBBACEDIAIhBANAIAMgBE8NAwJAIAAoAgQiBSADQQN0aiIGKAIAIgcgBigCBCIIELcQRQ0AIAcgCEsNAEEAIQlBgIDEACEGIAhBgLADc0GAgLx/akGAkLx/SSEKA0AgBiELAkACQANAIAggByIGRiIMDQEgBkEBaiEHIAZBgLADc0GAgLx/akGAkLx/SQ0ACyAGQYCAxABHDQEMAwsgCCEGIAghByAKDQILAkACQAJAAkAgC0GAgMQARg0AIAsgBk8NAQsgCUG+Fk8NAgJAAkACQCAJQQxsQfSlhgFqIgsoAgAgBkYNAEEAIQtBvhYhDQNAIAsgDUEBdiIOIAtqIg8gD0EMbEH0pYYBaigCACAGSxshCyANIA5rIg1BAUsNAAsgC0EMbCIOQfSlhgFqKAIAIg0gBkYNASALIA0gBklqIQkMBQsgC0EEaiEOIAtBCGohDQwBCyALIAlNDQIgDkH8pYYBaiENIA5B+KWGAWohDiALIQkLIAlBAWohCSANKAIAIg1FDQIgDigCACELIA1BAnQhDyAEQQN0IQ0DQCALKAIAIQ4CQCAEIAAoAgBHDQAgAEG4x4UBEPkVIAAoAgQhBQsgC0EEaiELIAUgDWoiECAONgIAIAAgBEEBaiIENgIIIBBBBGogDjYCACANQQhqIQ0gD0F8aiIPRQ0DDAALCyABIAY2AiggAUECNgIEIAFBlLSIATYCACABQgI3AgwgAUHfADYCJCABQd8ANgIcIAEgCzYCLCABIAFBGGo2AgggASABQSxqNgIgIAEgAUEoajYCGCABQYy1iAEQhRsAC0GctYgBQR9BvLWIARDdFwALIAwNASAHIAhNDQALCyADQQFqIgMgAkcNAAsLIAAQ9QQgAEEBOgAMCyABQTBqJAAPCyADIARBlKKFARCzEQALzQUBDH8jAEEgayIDJAAgASgCXCEEQQAhBSABKAJoIgYhB0EAIQgCQAJAA0ACQAJAIARFDQAgASgCWCEJAkACQCAIQQFxRQ0AIApB/wFxIgpBqH9qIQsgCkEuRiEMIApB+ABGIQ0DQCAJLQAAIgpB3wBHDQICQAJAIARBAUYNACAJLQABIgpBv39qQV5xQQpqIApBUGogCkE5SxtBD0sNAAJAAkAgCw4IAgEBAQEBAQIACyAMDQEgDQ0BCwJAIApBqH9qDggBAgICAgICAQALIApB+ABGDQAgCkEuRw0BCyADQe+AgIB4NgIIIAEgBiADQQhqEOcfIAEoAmghByABKAJcIQQgASgCWCEJCyABIAdBAWoiBzYCaCABIARBf2oiBDYCXCABIAlBAWoiCTYCWCAEDQAMAwsLA0AgCS0AACIKQd8ARw0BAkACQCAEQQFGDQAgCS0AASIKQb9/akFecUEKaiAKQVBqIApBOUsbQRBPDQACQCAKQah/ag4IAQICAgICAgEACyAKQS5GDQAgCkH4AEcNAQsgA0HvgICAeDYCCCABIAYgA0EIahDnHyABKAJoIQcgASgCXCEEIAEoAlghCQsgASAHQQFqIgc2AmggASAEQX9qIgQ2AlwgASAJQQFqIgk2AlggBA0ADAILCyAKQb9/akFfcUEKaiAKQVBqIApBOUsbIgtBEEkNAQsgAkH/AXEiBEUNAiAFQf8BcSAERg0CIABBADYCAAwDCyABIAdBAWoiBzYCaCABIARBf2oiBDYCXCABIAlBAWo2AlgCQCAOQQAgCEEBcRsiCUH/////AEsNAEEBIQggCyAJQQR0ciEOIAVBAWoiBUH/AXEgAkH/AXFHDQEMAgsLIANBo4CAgHg2AgggBiAGIANBCGoQhRUhBCAAQQI2AgAgACAENgIEDAELIAAgDjYCBCAAIAg2AgALIANBIGokAAu9BQEEfwJAAkACQAJAAkACQAJAAkAgACgCAA4JAAECAwQFBwYHAAsgACgCHCIARQ0GIABBCGooAgAiAkUNBiAAQQRqKAIAIQAgAkEMbCECA0AgACABELkFIABBDGohACACQXRqIgINAAwHCwsgAEEIaiABENADDwsgACgCHCIARQ0EIABBCGooAgAiAkUNBCAAQQRqKAIAIQAgAkEMbCECA0AgACABELkFIABBDGohACACQXRqIgINAAwFCwsCQAJAIAAoAggOAwABBQALAkAgACgCKCIDQQhqKAIAIgJFDQAgA0EEaigCACEAIAJBDGwhAgNAIAEgACgCABCnASAAQQxqIQAgAkF0aiICDQALCwJAIANBFGooAgAiAkUNACADQRBqKAIAIQAgAkHYAGwhAgNAIAAgARCxAiAAQdgAaiEAIAJBqH9qIgINAAsLIAMoAjAiAEUNBCABIAAQpwEPCwJAIAAoAigiBEEIaigCACIARQ0AIARBBGooAgAiAyAAQQZ0aiEFA0ACQCADQThqKAIAIgJFDQAgA0E0aigCACEAIAJBDGwhAgNAIAEgACgCABCnASAAQQxqIQAgAkF0aiICDQALCyADIAEQrQkgA0HAAGoiACEDIAAgBUcNAAsLAkAgBEEUaigCACICRQ0AIARBEGooAgAhACACQQxsIQIDQCABIAAoAgAQpwEgAEEMaiEAIAJBdGoiAg0ACwsgBCgCGEGAgICAeEYNAyAEKAIgIgJFDQMgBCgCHCEAIAJBMGwhAgNAIAAgARCPAyAAQTBqIQAgAkFQaiICDQAMBAsLIAEgACgCBBCnAQ8LIAAoAhAiAEUNASAAQQhqKAIAIgJFDQEgAEEEaigCACEAIAJBDGwhAgNAIAAgARC5BSAAQQxqIQAgAkF0aiICDQAMAgsLIAEgACgCBBCnAQsL7wUCCn8BfiMAQfAAayICJABBACEDIAJBIGpBACkDmPucASIMNwIAIAJBMGogDDcCACACQQA2AVogAkEANgIUIAJCgICAgIABNwIMIAJCgICAgIABNwJIIAJCgICAgMAANwI4IAJBADYCUCACQQA6AEQgAkEANgJAIAIgAC8BeDsBWCACIAAoAnQ2AlQgAkEAKQOQ+5wBIgw3AhggAiAMNwIoIAIgAC0AfjoAXiAAQSxqIQQCQANAIANB1ABGDQEgACADakEsaiIFKAIAIQYgBSACQQxqIANqIgcoAgA2AgAgByAGNgIAIANBBGohAwwACwsCQCABKAIUIgNFDQAgASgCECEFIANBDGwhBiAALQB5IQcgAC0AKCEIA0AgBSgCACEDIABBADoAeSAAQQA6ACgCQCADKAIAQRpHDQAgAkHgAGogAykDCCADQRhqKAIAELoYIAQgAikDYCACKAJoENEKCyAFQQxqIQUgAyAAEHcgACAIOgAoIAAgBzoAeSAGQXRqIgYNAAsLAkAgASgCCCIDRQ0AIAEoAgQiByADQQZ0aiEIIAAtAHohCSAALQB5IQogAC0AKCELA0AgAEEBOgAoIABBADoAeSAAIAAtAHtBAXM6AHoCQCAHKAI4IgNFDQAgBygCNCEFIANBDGwhBgNAIAUoAgAhAyAAQQA6AHkgAEEAOgAoAkAgAygCAEEaRw0AIAJB4ABqIAMpAwggA0EYaigCABC6GCAEIAIpA2AgAigCaBDRCgsgBUEMaiEFIAMgABB3IABBAToAKCAAQQA6AHkgBkF0aiIGDQALCyAAQQE6AHkgByAAEOcEIAAgCjoAeSAAIAk6AHogACALOgAoIAdBwABqIgMhByADIAhHDQALCwJAIAEoAhhBgICAgHhGDQAgASgCICIFRQ0AIAEoAhwhAyAFQTBsIQUDQCAAQQA6AH0gAyAAEGsgA0EwaiEDIAVBUGoiBQ0ACwsgBCACQQxqEJMDIAJB8ABqJAAL+QUBBX8jAEHgAGsiAyQAIAEoAsABIQQCQAJAAkACQCACRQ0AIAEtAMgBIgVB4wBHDQEgARCHDgsgA0EIaiABQQBBARDUEyADKAIMIQUgAygCCEEBcUUNASAAQQI2AgAgACAFNgIEDAILIAEoAsQBIQIgA0EQaiAFEN4bIANBATYCRCADQZjvmwE2AkAgA0IBNwJMIANBigWtQiCGQdemmwGthDcDWCADIANB2ABqNgJIIANBKGogA0HAAGoQjRUgA0E8aiADQRhqKAIANgIAIAMgAykCEDcCNCAEIAIgA0EoahCFFSECAkAgAS0AyAFBogFHDQAgARDHESEFIAEQhw4gASAFEOURCyAAQQI2AgAgACACNgIEDAELAkACQAJAIAEtAMgBIgYNACABEIcOIANBwABqIAEQrwMgAygCRCEGIAMoAkAiB0GAgICAeEcNASAAQQI2AgAgACAGNgIEDAILIAEoAsQBIQIgASgCwAEhBCADQRxqIAYQ3hsgA0EBNgJEIANBmO+bATYCQCADQgE3AkwgA0GKBa1CIIZBgdqYAa2ENwNYIAMgA0HYAGo2AkggA0EoaiADQcAAahCNFSADQTxqIANBJGooAgA2AgAgAyADKQIcNwI0IAQgAiADQShqEIUVIQICQCABLQDIAUGiAUcNACABEMcRIQQgARCHDiABIAQQ5RELIABBAjYCACAAIAI2AgQMAQsgAyADKAJINgIwIAMgBjYCLCADIAc2AihBACEGAkACQCABLQDIAUEJRw0AIAMgAUEJEJgEIAMoAgQhBiADKAIAQQFxRQ0AIABBAjYCACAAIAY2AgQMAQsgAyAGNgJAAkAgARD9HCIHRQ0AIABBAjYCACAAIAc2AgQgA0HAAGoQqR8MAQsgACADKQIoNwIEIAAgBTYCHCAAIAY2AhggACAENgIQIAAgAjYCACAAIAEoArwBNgIUIABBDGogA0EwaigCADYCAAwCCyADQShqEKsfCyAFEO4fCyADQeAAaiQAC60FAQh/IwBBIGsiAyQAQQEhBAJAIAJFDQACQAJAIAIgAUsNAEEAIAJBfGoiASABIAJLGyIFIAJBf2oiBiAFIAZJGyEHIAYhAQJAA0ACQCABIAVLDQAgByEBDAILAkAgASACSQ0AIAEgAkHQ6oQBELMRAAsgACABaiEIIAFBf2oiCSEBIAgsAABBv39MDQALIAlBAWohAQsCQAJAIAIgAUkNAAJAAkACQCACIAFGDQAgACABaiIJLAAAIghBf0oNAiAIQUBJDQAgAiABayEKAkACQAJAAkAgCEFgTw0AQQIhAQwBCyAIQXBPDQFBAyEBCyABIApNDQEMAgtBBCEBIApBBEkNASAIQXdLDQELIANBDGogCSABEMUEIAMoAgxBAUcNAQtBACEEDAYLIAMgAygCECIBIAMoAhRqNgIcIAMgATYCGCADQRhqEKIMQYCAxABHDQBBwOqEARCbIAALAkACQANAIAYgBU0NASAGIAJPDQIgACAGaiEBIAZBf2oiCCEGIAEsAABBv39MDQALIAhBAWohBwsgAiAHSQ0CIAIgB0YNBQJAIAAgB2oiCCwAACIBQX9MDQAgAUH/AXEhAQwFCyABQUBJDQUgAiAHayEGAkACQAJAAkAgAUFgTw0AQQIhAgwBCyABQXBPDQFBAyECCyACIAZLDQcMAQtBBCECIAZBBEkNBiABQXdLDQYLIANBDGogCCACEMUEQQEhBCADKAIMQQFGDQUgAyADKAIQIgEgAygCFGo2AhwgAyABNgIYIANBGGoQogwiAUGAgMQARw0EQcDqhAEQmyAACyAGIAJB0OqEARCzEQALIAEgAkHg6oQBEKMgAAsgByACQeDqhAEQoyAACyACIAFBlNOEARCPIAALIAEQxA1B/wFxQQFzIQQLIANBIGokACAEC6kFARx/QQAhAgJAAkAgACABRiIDRQ0AQQAhBEEAIQVBACEGDAELIABBGGohBSAAKAIYIgcoAhQhCCAHKAIQIQZBfyEEIABBHGohAAtBASEJQQEhCkEAIQtBACEMIAQhDUEAIQ5BASEPQQAhEEEAIRFBACESA39BACETA0AgECEUA0AgEyEQAkACQAJAAkACQAJAAkACQAJAIA9BAXENACAAIAFGDQIgAEEYaiEHIABBHGohAAwBCyAFIQcgAw0BCyAHKAIAIQcgCkEBcSEPQQAhCgJAIA9FDQAgBy0AMCEKCyAHKAIsIRMgBygCECEPIAZBAXEiFUUNASAPRQ0BIAggBygCFEcNAgwDC0EALQDA8Z0BGkE0EIUBIgdFDQMgB0EAOgAxIAcgAjYCLCAHIAs2AiggByAMNgIkIAcgBDYCICAHIA02AhwgByAONgIYIAcgCDYCFCAHIAY2AhAgByAWNgIMIAcgFDYCCCAHIBc2AgQgByARNgIAIAcgCUEBcToAMiAHIApBAXE6ADAgBw8LIBUNACAPRQ0BC0EAIQYLIAIgE2ohDyAJQQFxIRNBACEJAkAgE0UNACAHLQAxIQkLIAcoAighFSAHKAIkIRggBygCICEZIAcoAhwhGiAHKAIYIRsgDyACSSECQQEhEwJAIBJBAXENACAHKAIAIhINAkEAIRELQQEhEgwCCwALIBEgEiARIAcoAgQiHCAXT3EiHRshESAXIBwgHRshF0EAIRILIBUgC3IhCyAYIAxyIQwgGSAEcSEEIBogDXEhDSAbIA5yIQ5BfyAPIAIbIQJBACEPIBBBAXENAAtBASETQQAhD0EAIRAgBygCCCIVQQFHDQALIBQgFSAUIAcoAgwiByAWTXEiDxshECAWIAcgDxshFkEAIQ8MAAsL5AUBC38jAEEgayICJAAgASABKAJoIgNBAWoiBDYCaCABIAEoAlwiBUF/aiIGNgJcIAEgASgCWCIHQQFqIgg2AlggAS0AHCEJAkACQCABLQCBAUEgcUUNACABKAJ4QYDgAHFBgCBHDQAgAEGAJDsBAAwBC0ESIQoCQCAGRQ0AIAgtAAAhCwJAAkACQCAGQQFGDQAgC0H/AXFBIUcNACAGQQJGDQMgBy0AAkH/AXFBLUcNAyAHLQADQS1HDQMgAUEDEIgCAkAgASgCXEUNAANAIAEgASgCWC0AAEECdEGA7pkBaigCABEEAEUNASABKAJcDQALCyACQaaAgIB4NgIIIAEgAyACQQhqEIsPIAFBADoAgwEgASgCXA0BIABBgMYCOwEADAQLQRIhDCALIQoCQCALQf8BcUE8Rw0AIAEgA0ECaiIENgJoIAEgBUF+aiIGNgJcIAEgB0ECaiIINgJYAkAgBg0AQTUhCkEAIQYMAwsgCC0AACEKQTUhDAsCQCAKQf8BcUE9Rg0AIAwhCgwCCyABIARBAWo2AmggASAGQX9qIgY2AlwgASAIQQFqIgg2AlhBMyEKAkACQAJAIAxBbmoOAgQBAAsgDEE1Rg0BQbKjmwFBKEH4wJkBEN0XAAtBNCEKDAILQSQhCgwBCyAAIAEgASgCWC0AAEECdEHs5ZkBaigCABEHAAwCCyALQf8BcUE8Rw0AIAlBAXFFDQAgCCAGQcTAmQFBBhCgHEUNACACQZyBgIB4NgIIIAEgAyADQQdqIAJBCGoQohMgAUEFEIgCAkACQCABKAJcRQ0AAkADQCABIAEoAlgtAABBAnRBgO6ZAWooAgARBAAhCCABKAJcIQYgCEUNASAGDQALCyABQQA6AIMBIAZFDQEgACABIAEoAlgtAABBAnRB7OWZAWooAgARBwAMAwsgAUEAOgCDAQsgAEGAxgI7AQAMAQsgAEEAOgAAIAAgCjoAAQsgAkEgaiQAC8sFAQd/IwBB0ABrIgYkACAGIAQ2AkwgBkEANgJIIAYgAjYCRCAGIAE2AkAgBiABIAZBwABqENMEIAYoAgghByAGKAIEIQgCQAJAIAYoAgAiCUEqRg0AAkBBNEUNACAAQQxqIAZBDGpBNPwKAAALIAAgBzYCCCAAIAg2AgQgACAJNgIADAELAkAgBSAERg0AIAYgARCbFSAGKAIEIQkCQCAGKAIAIgpBKkYNAAJAQThFDQAgAEEIaiAGQQhqQTj8CgAACyAAIAk2AgQgACAKNgIADAILAkACQCAFIARLDQAgByEFDAELIAUgBGshCwNAAkACQCADDQAgBiABEI4UDAELIAYgARCPFAsgBigCBCEEAkAgBigCACIFQSpGDQACQEE4RQ0AIABBCGogBkEIakE4/AoAAAsgACAENgIEIAAgBTYCAAwECyAGIAEgAhBIIAYoAgghBSAGKAIEIQoCQCAGKAIAIgxBKkYNAAJAQTRFDQAgAEEMaiAGQQxqQTT8CgAACyAAIAU2AgggACAKNgIEIAAgDDYCAAwECyAGIAEgByAEEJ4IAkAgBigCACIHQSpGDQACQEE8RQ0AIABBBGogBkEEckE8/AoAAAsgACAHNgIADAQLIAYgASAEIAoQnggCQCAGKAIAIgdBKkYNAAJAQTxFDQAgAEEEaiAGQQRyQTz8CgAACyAAIAc2AgAMBAsgBiABIAQgCRCeCAJAIAYoAgAiBEEqRg0AAkBBPEUNACAAQQRqIAZBBHJBPPwKAAALIAAgBDYCAAwECyAFIQcgC0F/aiILDQALCyAGIAEgBSAJEJ4IAkAgBigCACIBQSpGDQACQEE8RQ0AIABBBGogBkEEckE8/AoAAAsgACABNgIADAILIAAgCTYCCCAAIAg2AgQgAEEqNgIADAELIAAgBzYCCCAAIAg2AgQgAEEqNgIACyAGQdAAaiQAC50FAQx/IwBBIGsiASQAIAAoAggiAkEBaiEDIAAoAgQiBCEFAkACQANAIANBf2oiA0ECSQ0BAkACQAJAIAUtAAAiBiAFQQJqIgctAAAiCEcNACAFQQFqLQAAIgkgBUEDai0AACIKSQ0BDAILIAYgCE8NASAFQQNqLQAAIQogBUEBai0AACEJCyAHIQUgCkH/AXEiByAJQf8BcSIJIAcgCUkbQQFqIAggBiAIIAZLG0kNAQsLAkACQCACQQJJDQACQCACQRVJDQAgBCACEPUMDAILIAJBAXQhBkECIQUDQCAEIAQgBWoQngsgBiAFQQJqIgVHDQALCyACDQBBwKWFAUEpQeylhQEQ3RcAC0EAIQZBASEIIAIhBQNAAkACQAJAAkAgBSACTQ0AIAYgBUF/aiIHTw0BIAQgCGoiCS0AACIDIAQgB0EBdGoiC0EBaiIMLQAAIgcgAyAHSRtBAWogCUF/ai0AACIJIAstAAAiCiAJIApLG0kNACAMIAkgCiAJIApJGyIJIAMgByADIAdLGyIDIAkgA0sbOgAAIAsgCSADIAkgA0kbOgAADAMLIAYgBU8NASAEIAhqIgMtAAAhByADQX9qLQAAIQMCQCAFIAAoAgBHDQAgAEGwpYUBEKMWIAAoAgQhBAsgACAFQQFqIgk2AgggBCAFQQF0aiIFIAc6AAEgBSADOgAAIAkhBQwCCyAGIAdBkKWFARCzEQALIAYgBUGgpYUBELMRAAsgCEECaiEIIAIgBkEBaiIGRw0ACyAFIAJJDQEgAEEANgIIIAEgADYCFCABIAAoAgQiBjYCDCABIAI2AhggASAFIAJrNgIcIAEgBiACQQF0ajYCECABQQxqEOULCyABQSBqJAAPCyACIAVBhPOaARCPIAAL5AUCCH8BfiMAQYABayIDJAAgAyABEL4JIgQ2AhACQAJAAkAgBEH8AEcNACACIAEoAgAiBCkCUDcCGCACQSBqIARB2ABqKAIANgIAAkBBJEUNACADQRRqIAJBJPwKAAALIAQoAhANASAEQdAAaiEFIARBfzYCEAJAAkACQCAEKAIcIgZFDQAgBCgCGCAGQfAAbGoiBkGQf2oiB0UNACAHKAIAQYCAgIB4Rg0BCyADQegAakEIaiIHIAJBFGooAgA2AgAgA0HoAGpBFGogBUEIaigCADYCAEEALQDA8Z0BGiADIAIpAgw3A2ggAyAFKQIANwJ0QQgQhQEiBkUNBCADIANBFGoQmQ4gBiADKQMANwIAIANB0ABqQQhqIAcpAwA3AwAgA0HQAGpBEGoiByADQegAakEQaikDADcDACADIAMpA2g3A1ACQCAEKAIcIgIgBCgCFEcNACAEQRRqQdCAhQEQnhYLIAQgAkEBajYCHCAEKAIYIAJB8ABsaiICQQE2AgwgAiAGNgIIIAJCgICAgBg3AgAgAiADKQNQNwIQIAJBGGogA0HYAGopAwA3AgAgAkEgaiAHKQMANwIADAELIANBCGogA0EUahCZDiADKAIMIQcgAygCCCEIAkAgBkGcf2oiCSgCACICIAZBlH9qIgooAgBHDQAgCkHAgIUBEPkVCyAJIAJBAWo2AgAgBkGYf2ooAgAgAkEDdGoiAiAHNgIEIAIgCDYCAAsgBCAEKAIQQQFqNgIQIAEQmggaIANBOGpBCGoiBCAFQQhqKAIAIgI2AgAgA0HMAGogAjYCACAAQQA2AgwgAEKAgICAwAA3AgQgAEEiNgIAIAAgBSkCACILNwIQIAMgCzcCRCAAQRhqIAQpAwA3AgAgAEEgaiADQcgAaikDADcCACADIAs3AzggA0GAAWokAA8LIANBADYCFCADQRBqQZyAhQEgA0EUakGggIUBELQZAAtBsICFARD4FAsAC9cFAQR/AkACQAJAAkACQAJAIAEoAgAOBQUAAQMEBQsgASgCBEEBRw0EIAAtAAANBEEIIQIMAQsgAC0AAA0DQQQhAgsgASACaigCACAAEJUBDwsCQCABKAIEIgMtAGxBAkcNACADQcAAaiEBA0AgASgCGCIBLQAsQQJGDQALCwJAIANBhAFqKAIAIgJFDQAgA0GAAWooAgAhASACQdgAbCECA0ACQAJAAkAgASgCAEF8ag4CAgABCyAALQAADQEgAUEEaigCACAAEJUBDAELIAEgABCmCAsgAUHYAGohASACQah/aiICDQALCwJAIANBmAFqKAIAIgJFDQAgA0GUAWooAgAhASACQShsIQIDQCABIAAQngYgAUEoaiEBIAJBWGoiAg0ACwsgAy0APCIBQQZGDQEgAUECRw0BIANBEGohAQNAIAEoAhgiAS0ALEECRg0ADAILCyABKAIMIgJFDQAgASgCCCIDIAJBKGxqIQQDQAJAAkACQAJAAkAgAygCAA4FBAABAgMECyADKAIEQQFHDQMgAC0AAA0DIAMoAgggABCVAQwDCyAALQAADQIgAygCBCAAEJUBDAILAkAgAygCBCIFLQBsQQJHDQAgBUHAAGohAQNAIAEoAhgiAS0ALEECRg0ACwsCQCAFQYQBaigCACICRQ0AIAVBgAFqKAIAIQEgAkHYAGwhAgNAAkACQAJAIAEoAgBBfGoOAgIAAQsgAC0AAA0BIAFBBGooAgAgABCVAQwBCyABIAAQpggLIAFB2ABqIQEgAkGof2oiAg0ACwsCQCAFQZgBaigCACICRQ0AIAVBlAFqKAIAIQEgAkEobCECA0AgASAAEJ4GIAFBKGohASACQVhqIgINAAsLIAUtADwiAUEGRg0BIAFBAkcNASAFQRBqIQEDQCABKAIYIgEtACxBAkYNAAwCCwsgA0EEaiAAEKMTCyADQShqIgMgBEcNAAsLC+AFAQh/IwBBEGsiAiQAAkACQAJAAkADQAJAIAAoAgAiA0ECRg0AAkACQAJAIAMOBwECAAUGCAcBCwALIAEgAEEIahDxCgwGCyAAKAIMIgNFDQUgACgCCCEAIANBKGwhAwNAAkAgACgCAEEHRg0AIAAgARDnBAsgAEEoaiEAIANBWGoiAw0ADAYLCyAAKAIEIQAMAAsLIAAoAgwiA0UNAiAAKAIIIQQgA0E4bCEFIAFBLGohBkEAIQMDQAJAAkACQAJAIAQgA2oiACgCAA4DAAECAAsCQCAAQQhqKAIAQQNHDQAgAS0AKCEHIAFBADoAKCABLQB5IQggAUEAOgB5AkAgAEEMaigCACIJKAIAQRpHDQAgAiAJKQMIIAlBGGooAgAQuhggBiACKQMAIAIoAggQ0QoLIAkgARB3IAEgBzoAKCABIAg6AHkLIABBKGooAgAgARDnBAwCCyABIABBEGoQ8QogAEEIaiEJAkAgAEEwaigCACIARQ0AIAEtACghByABQQA6ACggAS0AeSEIIAFBADoAeQJAIAAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCAGIAIpAwAgAigCCBDRCgsgACABEHcgASAHOgAoIAEgCDoAeQsgASAJEPsQDAELIABBBGooAgAgARDnBAsgBSADQThqIgNHDQAMAwsLIAAoAgQgARDnBCABLQAoIQMgAUEAOgAoIAEtAHkhBCABQQA6AHkCQCAAKAIIIgAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCABQSxqIAIpAwAgAigCCBDRCgsgACABEHcgASADOgAoIAEgBDoAeQwBCyABLQAoIQMgAUEAOgAoIAEtAHkhBCABQQA6AHkCQCAAKAIEIgAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCABQSxqIAIpAwAgAigCCBDRCgsgACABEHcgASADOgAoIAEgBDoAeQsgAkEQaiQAC+kFAQl/IwBB8AFrIgMkACADQaABakEEaiEEIANBCGpBCGohBSADQQhqQQRyIQYgACgCACEHAkACQANAIAEtAMgBIQACQAJAIActAAAiCEGkAUYNACADIAg6ANsBAkAgAEH/AXEiCUGjAUcNACADQdwBakGjARDeGyABKALEASEAIAEoAsABIQIgA0EBNgIMIANBmO+bATYCCCADQgE3AhQgA0GKBa1CIIYgA0HbAWqthDcD6AEgAyADQegBajYCECADQaABaiADQQhqEI0VIANBtAFqIANB5AFqKAIANgIAIAMgAykC3AE3AqwBIAEgAiAAIANBoAFqEK8aDAQLIAkgCEcNAQwDCyAAQf8BcUGjAUYNAgsgASgCwAEhCgJAAkAgAEH/AXFBGEYNAEEEIQhBACELQQAhCQwBCyADQaABaiABQQEQ7gIgAygCpAEhCCADKAKgASIJQYCAgIB4Rg0DIAMoAqgBIQsgAS0AyAEhAAsCQAJAIABB/wFxIgBB2ABGDQAgAEHfAEYNACABIAEoAngiAEH///v/fnFBgICAgAFyNgJ4IAMgCzYCqAEgAyAI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AkACQAJAIAIoAggiBEUNACABKAIIIgVFDQECQAJAAkACQAJAIARBAUcNACACKAIEIgIoAgBBAUYNASADQTRqIAEoAgQgBRDcEiADQRBqIANBNGogAkEBQQBB/OOCARCNHCgCABCUCCAAQQhqIANBEGpBCGooAgA2AgAgACADKQIQNwIAIABBDGogAygCHBDtEQwICyABKAIEIgYgBSACKAIEIgcgBBDrGEH/AXEOAgIDAQsgACABKAIEIAUQ3BIgAEEUakEAKALgj5sBNgIAIABBACkC2I+bATcCDAwGCyAAQQxqIAYgBRDcEiAAQQhqQQAoAuCPmwE2AgAgAEEAKQLYj5sBNwIADAULQQRBBBCJHSECIABBATYCCCAAIAI2AgQgAEEBNgIAIAJBATYCACAAQQApAtiPmwE3AgwgAEEUakEAKALgj5sBNgIADAQLIAcgBEECdGpBfGoiCEUNAgJAIAgoAgAiCWciCA0AIANBEGogBiAFENwSIAAgA0EQaiAHIAQQqAQMBAsgA0EoaiABIAgQiRQgA0E0aiACIAgQiRQgA0EQaiADQShqIAMoAjgiAiADKAI8EKgEIABBCGogA0EQakEIaigCADYCACAAIAMpAhA3AgAgA0EIaiADQSRqKAIANgIAIAMgAykCHDcDACADKAI0IAIQsSAgAEEMaiEAAkAgAygCBCADIAMoAgBBgICAgHhGGygCCEUNACAAIAMgCUUgCEEfcRCtCAwECyAAIAMQohcMAwsgA0EANgIgIANBATYCFCADQeTjggE2AhAgA0IENwIYIANBEGpBnOSCARCFGwALIABBCGpBACgC4I+bASICNgIAIABBACkC2I+bASIKNwIAIAAgCjcCDCAAQRRqIAI2AgAMAQtBjOSCARCbIAALIANBwABqJAALwQUBBn8jAEGwDmsiAyQAIAJBBHQhBCABQQhqKAIAIQUCQCACQQFGDQAgAUEYaiEGIARBcGpBBHYhBwNAIAYoAgAiCCAFIAggBUkbIQUgBkEQaiEGIAdBf2oiBw0ACwsgA0ECOwGMCSADQYCCiBA2AogJQQAhBiADQQA6AIQJIANC/////w83AvwIIANCBDcC9AggA0IANwLsCCADQoCAgIDAADcC5AgDQAJAIAMtAI0JDQACQCADKALsCEGAAUkNACADQQE6AI0JIANB5AhqEIcU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AHkMAgsgACgCBCIEQcAAaiABEMMKIARBgAFqKAIAIARBhAFqKAIAIAEQgggCQCAEQZgBaigCACIDRQ0AIARBlAFqKAIAIQAgA0EobCEDA0AgACABEJsHIABBKGohACADQVhqIgMNAAsLIAQtADxBBkYNASAEQRBqIAEQwwoMAQsgACgCDCIDRQ0AIAAoAggiBCADQShsaiEFIAFBLGohBgNAAkACQAJAAkACQCAEKAIADgUEAAECAwQLIAQoAgRBAUcNAyABLQAoIQMgAUEAOgAoIAEtAHkhByABQQA6AHkCQCAEKAIIIgAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCAGIAIpAwAgAigCCBDRCgsgACABEHcgASADOgAoIAEgBzoAeQwDCyABLQAoIQMgAUEAOgAoIAEtAHkhByABQQA6AHkCQCAEKAIEIgAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCAGIAIpAwAgAigCCBDRCgsgACABEHcgASADOgAoIAEgBzoAeQwCCyABIAQoAgQQ7wYMAQsgBEEMaigCACIDRQ0AIARBCGooAgAhACADQShsIQMDQCABIAAQoQMgAEEoaiEAIANBWGoiAw0ACwsgBEEoaiIEIAVHDQALCyACQRBqJAAL1QQCBH8BfiMAQYABayICJAACQAJAIAEtABRBAkYNACACQQhqIAAgARDSBSACLQA0QQZGDQAgAkE4akEoaiACQQhqQShqKQMANwMAIAJBOGpBIGogAkEIakEgaikDADcDACACQThqQRhqIAJBCGpBGGopAwA3AwAgAkE4akEQaiACQQhqQRBqKQMANwMAIAJBOGpBCGogAkEIakEIaikDADcDACACIAIpAwg3AzgCQAJAAkACQCACLQBkIgNBfWoiAEEBIABB/wFxQQNJG0H/AXEOAwACAQALIAJB8ABqQQhqIAJBFGopAgA3AwAgAkHuAGogAkEfai0AADoAACACIAIpAgw3A3AgAiACLwAdOwFsIAItAEwhBCACKAI4IQAMAgtBtuSaAUEPQYDlmgEQ3RcAC0EALQDA8Z0BGkEwEIUBIgBFDQIgACACKQMINwMAIABBKGogAkEIakEoaikDADcDACAAQSBqIAJBCGpBIGopAwA3AwAgAEEYaiACQQhqQRhqKQMANwMAIABBEGogAkEIakEQaikD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IQEDQCADIAFqQQhGDQIgACAGajEAACEKIAAgAWogCCAHiDwAACAKIAggCYNCCn58IQggAUEBaiEBIAUgBkEBaiIGakEIRw0ACyAIUA0DDAILQQAhBCAIQgBSDQEgAEEANgIADAMLIAZBeGpBgAZBjOqAARCzEQALA0AgCCIKIAmDQgp+IQggCiAHiKchAQJAAkAgBEGABkkNACABQf8BcUUNASAAQQE6AIgGDAELIAIgBGogAToAACAEQQFqIQQLIAhCAFINAAsLIAAgBDYCACAEQYAGSw0BIARBB2ohAQNAIAAgAWotAAANASAAIAFBeGo2AgAgAUF/aiIBQQdHDQALCw8LIARBf2pBgAZB3OmAARCzEQAL3gQCAn8BfiMAQcAAayIDJAACQAJAAkACQAJAAkACQAJAIAEoAgAOBQABAgMEAAsgA0EwaiACIAEoAhAiBEEAEJUCIAMtADBBBEYNBCADKQMwIgVC/wGDQgRRDQQgACAFNwIADAYLIANBMGogAUEIaiACEIcBIAMtADBBBEYNBCADKQMwIgVC/wGDQgRRDQQgACAFNwIADAULIANBMGogAUEIaiACENsUIAMtADBBBEYNAyADKQMwIgVC/wGDQgRRDQMgACAFNwIADAQLIANBMGogAUEEaiACEOIIIAMtADBBBEYNAiADKQMwIgVC/wGDQgRRDQIgACAFNwIADAMLIANBMGogAUEIaiACEKkDIAMtADBBBEYNASADKQMwIgVC/wGDQgRRDQEgACAFNwIADAILAkACQAJAIARFDQAgA0EwaiACIAQQtBogAy0AMEEERg0AIAMpAzAiBUL/AYNCBFINAQsgAUEIaiEBIAItAFwNASADQTBqIAEgAhDVEyADLQAwQQRGDQIgAykDMCIFQv8Bg0IEUQ0CIAAgBTcCAAwDCyAAIAU3AgAMAgsgA0EQaiABEP4RIANBMGogAygCECADKAIUEMYEIANBJGogAygCNCIBIAMoAjhBASACLQBiENABIANBCGogA0EkahDBEyADQRhqIAIgAygCCCADKAIMEMANAkAgAy0AGEEERg0AIAMpAxgiBUL/AYNCBFENACAAIAU3AgAgA0EkahCmHSADKAIwIAEQhR8MAgsgA0EkahCmHSADKAIwIAEQhR8LIABBBDoAAAsgA0HAAGokAAuPBQECfyMAQTBrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBfmoiBEEGIARBCUkbDgkAAQIDBAUGBwgACyADQQE2AhQgA0GY75sBNgIQIANCATcCHCADQYsCNgIMIAMgACkCCDcCKCADIANBCGo2AhggAyADQShqNgIIIAEgAiADQRBqELceIQAMCAsgAyAAQQRqNgIIIANBAjYCFCADQeDBmAE2AhAgA0IBNwIcIANB+gA2AiwgAyADQShqNgIYIAMgA0EIajYCKCABIAIgA0EQahC3HiEADAcLIANBADYCICADQQE2AhQgA0GEwpgBNgIQIANCBDcCGCABIAIgA0EQahC3HiEADAYLIANBADYCICADQQE2AhQgA0GUwpgBNgIQIANCBDcCGCABIAIgA0EQahC3HiEADAULIANBADYCICADQQE2AhQgA0GwwpgBNgIQIANCBDcCGCABIAIgA0EQahC3HiEADAQLIANBADYCICADQQE2AhQgA0HQwpgBNgIQIANCBDcCGCABIAIgA0EQahC3HiEADAMLIAMgADYCCCADQQE2AhQgA0GY75sBNgIQIANCATcCHCADQYwCNgIsIAMgA0EoajYCGCADIANBCGo2AiggASACIANBEGoQtx4hAAwCCyADIABBBGo2AgggA0ECNgIUIANB2MKYATYCECADQgE3AhwgA0H6ADYCLCADIANBKGo2AhggAyADQQhqNgIoIAEgAiADQRBqELceIQAMAQsgAyAAQQRqNgIIIANBATYCFCADQZjvmwE2AhAgA0IBNwIcIANB+gA2AiwgAyADQShqNgIYIAMgA0EIajYCKCABIAIgA0EQahC3HiEACyADQTBqJAAgAAv0BAEHfyMAQRBrIgIkACAAKAIAIQACQAJAAkACQAJAIAEoAgAOBQQAAQIDBAsgASgCBEEBRw0DIAAtACghAyAAQQA6ACggAC0AeSEEIABBADoAeQJAIAEoAggiASgCAEEaRw0AIAIgASkDCCABQRhqKAIAELoYIABBLGogAikDACACKAIIENEKCyABIAAQdyAAIAM6ACggACAEOgB5DAMLIAAtACghAyAAQQA6ACggAC0AeSEEIABBADoAeQJAIAEoAgQiASgCAEEaRw0AIAIgASkDCCABQRhqKAIAELoYIABBLGogAikDACACKAIIENEKCyABIAAQdyAAIAM6ACgg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BUUNAiAFIAQ2AAAgBUEEaiEEDAELQQAhAyAEIAVB////B3EiBUYNASACQQA2AhwgAiAFNgIYQQEhAyACQQE2AhQgAkEIaiACQRRqQfDSgAEQrhUgAigCCCEFIAIoAgwhBiAEQX9zQR92IARBgNCYARCJGiEEIAJBADYCHCACIAQ2AhggAkEBNgIUIAJBCGogAkEUakHw0oABEK4VIAIoAggiByACKAIMakF/akEAIAdrcSIHIARJDQEgACgCACAFIAZqQX9qQQAgBWtxIAUgBxDaAyIERQ0BCyAAIAFB////ByABQf///wdJG0GAgIBwcjYCCCAAIAQ2AgBBACEDCyACQSBqJAAgAwvpBAIEfwR+IwBB0ABrIgIkAAJAAkACQAJAAkACQAJAAkAgASgCAA4HBAEAAgADBgALIABBDDYCACAAIAEpAwA3AwggAEEoaiABQSBqKQMANwMAIABBIGogAUEYaikDADcDACAAQRhqIAFBEGopAwA3AwAgAEEQaiABQQhqKQMANwMADAYLIAJBEGogAUEQaikCADcDACACQQhqQRBqIAFBGGopAgA3AwAgAiABKQIINwMIIAEoAgQhAUELIQNBACEEDAMLIAJBEGogAUEQaikCADcDACACQQhqQRBqIAFBGGopAgA3AwAgAiABKQIINwMIIAEoAgQhAUELIQNBASEEDAILIABBCjYCACAAIAEpAgQ3AgQgARDYBwwDCyACQRBqIAFBFGopAgA3AwAgAkEYaiABQRxqKQIANwMAIAIgASkCDDcDCCABKAIkIQUgASgCCCEBQQAhAwsgACABNgIIIAAgBDYCBCAAIAM2AgAgACACKQMINwIMIAAgBTYCJCAAQRRqIAJBEGopAwA3AgAgAEEcaiACQRhqKQMANwIADAELIAJBIGogASgCBBCdBSACKAIkIQECQCACKAIgIgNBC0YNACACQRBqIAJBIGpBFGopAgAiBjcDACACQRhqIAJBIGpBHGopAgAiBzcDACACIAIpAiwiCDcDCCACKAJEIQQgAikDSCEJIAAgAigCKDYCCCAAIAE2AgQgACADNgIAIAAgCDcCDCAAQRRqIAY3AgAgAEEcaiAHNwIAIAAgCTcDKCAAIAQ2AiQMAQsgACABNgIMIABBBjYCCCAAQQw2AgALIAJB0ABqJAAL4AQBB38jAEEgayICJAAg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F2ogA0EWai0AADoAAAwCCyAAQQI6ABQgACACNgIADAELIAEoAsQBIQQgASgCwAEhAiADQcsAIAEQiAs3AwggARCHDiADEIoYIgs3AxggA0EYaiADQQhqELYLIQUgCxDGHQJAAkAgBQ0AIANCwcrZi8YNNwMYIANBGGogA0EIahC2CyEFQsHK2YvGDRDGHSAFRQ0BCyADQamAgIB4NgIYIAEgAiAEIANBGGoQhA0LIABBADYCGCAAQQA6ABQgAEEANgIQIAAgBDYCDCAAIAI2AgggACADKQMINwMACyADQTBqJAAL4AQCBn8BfiMAQYABayIDJAACQAJAAkACQCABLQDIASIEQYABRw0AIANBKGogARDDCyADKAIwIQUgAykDKCIJUA0CIANBADYCeCADIAMoAjQ2AnQgAyAFNgJwIANBADoAfCADIAk3A2hCACEJDAELAkAgBEHAAEYNACADQShqQQRyIAQQ3hsgA0EaNgI8IANByaibATYCOCADQbCAgIB4NgIoIAEoAsABIAEoAsQBIANBKGoQhRUhBSABLQDIAUGiAUcNAiABEMcRIQQgARCHDiABIAQQ5REMAgsgA0HoAGogARCsDUIBIQkLIANBCGpBEGogA0HwAGopAwA3AwAgA0EgaiADQegAakEQaikDADcDACADIAk3AwggAyADKQNoNwMQAkACQAJAAkAgAS0AyAFBAkcNACADQegAaiABEOcIIAMoAmgiBkGAgICAeEcNASADKAJsIQUMAwsgARCiDSIFDQJBAyEHDAELIANByABqIANB9ABqKQIANwMAIAMgAykCbDcDQEECIQcLIAEoArwBIQgCQEEIQdgAEOsfIgVFDQAgBSADKQMINwMAIAUgBjYCICAFQRhqIANBCGpBGGopAwA3AwAgBUEQaiADQQhqQRBqKQMANwMAIAVBCGogA0EIakEIaikDADcDAAJAQSFFDQAgBUEkaiADQcAAakEh/AoAAAtBACEBIAVBADoAUiAFIARBgAFGOgBRIAVBADoAUCAFIAg2AkwgBSACNgJIIAUgBzoARQwDCwALIANBCGoQuxwLQQEhAQsgACAFNgIEIAAgATYCACADQYABaiQAC88EAQl/IwBBMGsiAiQAAkACQAJAAkACQCABKAIAQYCAgIB4Rg0AAkACQCABKAIIIgNFDQAgA0EMbCIEQXRqIgVBDG4hBiABKAIEIgchCAJAA0AgBEUNASAEQXRqIQQgCCgCCCAGaiIJIAZJIQogCEEMaiEIIAkhBiAKRQ0AC0HwgJsBQTVB8IGbARDyEgALIAJBGGogBkEBQQEQ2QwgAigCHCEEIAIoAhhBAUYNBCACQQA2AhQgAiACKAIgNgIQIAIgBDYCDCACQQxqIAcoAgQiBCAEIAcoAghqEIQUIAYgAigCFCIEayEJAkAgA0EBRg0AIAdBFGohCCACKAIQIARqIQoDQCAJRQ0HIAhBfGooAgAhAyAIKAIAIQQgCkEKOgAAIAlBf2oiCSAESQ0IIApBAWohCgJAIARFDQAgCiADIAT8CgAACyAIQQxqIQggCSAEayEJIAogBGohCiAFQXRqIgUNAAsLIAJBCGogBiAJazYCACACIAIpAgw3AwAMAQsgAkEANgIIIAJCgICAgBA3AwALIAJBJGogAUEcai8BADsBACACIAEpAhQ3AhwgAiACNgIYIAAgAkEYahDDECACKAIAIAIoAgQQjiAMAQsgAEGAgICAeDYCAAsgAkEwaiQADwsgBCACKAIgQYCCmwEQqh4ACyACQQA2AiggAkEBNgIcIAJB9NGbATYCGCACQgQ3AiAgAkEYakGQgpsBEIUbAAsgAkEANgIoIAJBATYCHCACQfTRmwE2AhggAkIENwIgIAJBGGpBkIKbARCFGwALwwQBCX8CQAJAAkACQAJAAkACQCAFIARJDQAgBSADSw0BQQAhBiAFIARGDQYgAS0AAiEHIAEtAAEhCCABLQAAIQkgAiAEaiEKAkAgBSAEayIDQQNLDQAgCiEBA0AgByABLQAAIgVGDQcgCSAFRg0HIAggBUYNByABQQFqIQEgA0F/aiIDDQAMCAsLQYCChAggCigAACILIAlBgYKECGwiDHMiAWsgAXJBgIGChHhxQYCBgoR4Rw0DQYCChAggCyAIQYGChAhsIg1zIgFrIAFyQYCBgoR4cUGAgYKEeEcNAyAKIQFBgIKECCALIAdBgYKECGwiDnMiC2sgC3JBgIGChHhxQYCBgoR4Rw0EIApBfHFBBGoiASACIAVqIgVBfGoiC0sNAgNAQYCChAggASgCACIDIAxzIgJrIAJyQYCBgoR4cUGAgYKEeEcNA0GAgoQIIAMgDXMiAmsgAnJBgIGChHhxQYCBgoR4Rw0DQYCChAggAyAOcyIDayADckGAgYKEeHFBgIGChHhHDQMgAUEEaiIBIAtNDQAMAwsLIAQgBUHE1oQBEKkgAAsgBSADQcTWhAEQjyAACyABIAVPDQMDQCAHIAEtAAAiA0YNAyAJIANGDQMgCCADRg0DIAFBAWoiASAFRw0ADAQLCyAKIQELA0AgByABLQAAIgVGDQEgCSAFRg0BIAggBUYNASABQQFqIQEgA0F/aiIDDQAMAgsLIAAgASAKayAEaiIBNgIEQQEhBiAAIAFBAWo2AggLIAAgBjYCAAvHBAEHfyMAQSBrIgIkACAAIAFBwABqEMYIAkAgASgChAEiA0UNACABKAKAASIEIANB2ABsaiEFIAJBDGohBiACQQhqIQcDQAJAAkAgBCgCACIDQQVHDQAgBCgCBCEDIAAtADkhCCAAQQE6ADkgAkEDNgIIIAMgABBsIAAgCDoAOSACKAIIIgNBAUsNASAHIAIQoBggByACKQMAEO8XIANFDQEgAigCDCIDIAMoAgAiA0F/ajYCACADQQFHDQEgBhDfDwwBCyADQQRGDQACQAJAAkAgAw4EAwABAgMLIAQoAgRBAUcNAiAALQA5IQMgAEEBOgA5IAQoAgggABBsIAAgAzoAOQwCCyAEKAIEIAAQ1gEMAQsgBCgCDCEIIAQoAgghAyACIAA2AgAgCEUNACAIQShsIQgDQCACIAMQ6gQgA0EoaiEDIAhBWGoiCA0ACwsgBEHYAGoiBCAFRw0ACwsCQCABKAJ4IgRFDQAgAC0ANEEBRw0AIAAtADohBSAALQA5IQcgAEGBAjsAOQJAIAQoAggiA0UNACAEKAIEIQQgA0ECdCEDA0ACQCAALQA0QQFHDQAgBCgCACEIIABBgQI7ADkgCCAAEPQBIABBgQI7ADkLIARBBGohBCADQXxqIgMNAAsLIAAgBToAOiAAIAc6ADkLAkAgASgCmAEiA0UNACABKAKUASEEIANBKGwhAwNAIAAgBBC7AyAEQShqIQQgA0FYaiIDDQALCwJAIAEtADxBBkYNACAAIAFBEGoQxggLIAJBIGokAAvCBAELfyMAQcAAayIEJAACQCABKAJoIAJGDQAgASACNgJoIAEgASgCZCACIAEoAmxrIgVrNgJcIAEgASgCYCAFajYCWAsgBEEMaiABIAIgAxCSAgJAAkACQAJAIAQtAAxBAUcNACAEKAIQIQUCQCABKAIIQQpGDQAgAUEIahDECAsgASAFNgIMIAFBCTYCCCACIANBAXNqIQYgASgCaCEHQaIBIQgMAQsgAiADQQFzaiEGQaMBIQggASgCaCEHIAQtAA0iAkGjAUYNASACIQgLIAEoAiBBgICAgHhGDQEgASgCNCEDIAFBADYCNCABKAIwIQIgBEEANgIkIAQgAzYCICAEIAFBLGo2AhwgBCACIANBGGwiCWoiCjYCGAJAIANFDQAgAUEgaiELIAEoAigiBUEFdCEMA0AgBEEoakEQaiINIAJBEGopAwA3AwAgBEEoakEIaiIOIAJBCGopAwA3AwAgBCACKQMANwMoAkAgBSALKAIARw0AIAtB9KmZARCwFgsgAkEYaiECIAEoAiQgDGoiAyAEKQMoNwMAIANBEGogDSkDADcDACADQQhqIA4pAwA3AwAgA0EcakEAOgAAIANBGGogBjYCACABIAVBAWoiBTYCKCAMQSBqIQwgCUFoaiIJDQALIAohAgsgBCACNgIUIARBFGoQsQkMAQsgARCzBQsgASAIOgAdIAAgCDoACCAAIAc2AgQgACAGNgIAIAEgASgCaDYCGCAAIAEtABw6AAkgASAAELUNIARBwABqJAALuwQCCn8EfiMAQTBrIgIkACACIAE2AhAgAkEANgIUAkAgAUUNAAJAQQAoAuDwnQEiA0UNACADENUSIgNBIGohBCADQRBqIQUgA0EEaiEGIAMoAhQiByAAQd3L3Z55bCABakHdy92eeWxBD3ciCHEhCSAIrSIMQhmIQoGChIiQoMCAAX4hDSADKAIQIQpBACELA0AgCiAJaikAACIOIA2FIg9Cf4UgD0L//fv379+//358g0KAgYKEiJCgwIB/gyEPAkACQAJAA0AgD1ANAQJAIApBACAPeqdBA3YgCWogB3FrQQxsaiIIQXRqKAIAIABHDQAgCEF4aigCACABRg0DCyAPQn98IA+DIQ8MAAsLIA4gDkIBhoNCgIGChIiQoMCAf4NQDQECQCADKAIYDQAgBSAEEN0GGgsCQCADKAIMIgkgAygCBEcNACAGEKcWCyADKAIIIAlBA3RqIgggADYCBCAIIAE2AgAgAyAJQQFqNgIMIAJBCGogAygCECIIIAMoAhQgDBC1FSACKAIIIQogAi0ADCEHIAMgAygCHEEBajYCHCADIAMoAhggB0EBcWs2AhggCEEAIAprQQxsaiIIQXxqIAk2AgAgCEF4aiABNgIAIAhBdGogADYCAAsgCEF8aigCACEBIANBADoAACACQTBqJAAgAQ8LIAkgC0EIaiILaiAHcSEJDAALC0HgkJsBQcgAQYiSmwEQjCEACyACQQA2AhggAkEQaiACQRRqIAJBGGpB/MCYARC+GQALzQQBBH8CQCAAKAIIIgFFDQAgACgCBCICIAFBKGxqIQMDQAJAAkACQAJAAkAgAigCAA4FBAABAgMECyACKAIEQQFHDQMgAigCCBC1AQwDCyACKAIEELUBDAILAkACQAJAIAIoAgQiBC0AbCIBQX1qIgBBASAAQf8BcUEDSRtB/wFxDgMAAQIACyAEQQA2AlAMAQsgBEHAAGohAAJAIAFB/wFxQQJHDQADQCAAKAIYIgAtACxBAkYNAAsLIABBADYCKAsCQCAEQYQBaigCACIBRQ0AIARBgAFqKAIAIQAgAUHYAGwhAQNAAkACQAJAIAAoAgBBfGoOAgIAAQsgAEEEaigCABC1AQwBCyAAEPoNCyAAQdgAaiEAIAFBqH9qIgENAAsLAkAgBEGYAWooAgAiAEUNACAAQShsIQEgBEGUAWooAgBBBGohAANAAkACQAJAAkACQCAAQXxqKAIADgUEAAECAwQLIAAoAgBBAUcNAyAAQQRqKAIAELUBDAMLIAAoAgAQtQEMAgsgABClBwwBCyAAEOQFCyAAQShqIQAgAUFYaiIBDQALCyAELQA8IgFBBkYNAQJAAkAgAUF9aiIAQQEgAEEDSRtB/wFxDgMAAQMACyAEQQA2AiAMAgsgBEEQaiEAAkAgAUECRw0AA0AgACgCGCIALQAsQQJGDQALCyAAQQA2AigMAQsgAkEMaigCACIBRQ0AIAJBCGooAgAhACABQShsIQEDQCAAEJoGIABBKGohACABQVhqIgENAAsLIAJBKGoiAiADRw0ACwsLwgQBBX8jAEEQayICJAACQAJAAkACQCAAKAIADgUDAAECAwMLIAAoAgRBAUcNAiABIAAoAggQpwEMAgsCQCAAKAIEIgMtAGxBAkcNACADQcAAaiEAA0AgACgCGCIALQAsQQJGDQALCwJAIAMoAoQBIgBFDQAgAygCgAEiBCAAQdgAbGohBQNAAkACQAJAAkACQCAEKAIADgYEAQIDBAAECyABIAQoAgQQpwEMAwsgBCgCBEEBRw0CIAEgBCgCCBCnAQwCCyAEQQRqIAEQ9QcMAQsgBEEMaigCACIGRQ0AIARBCGooAgAhACAGQShsIQYDQCAAIAEQnwQgAEEoaiEAIAZBWGoiBg0ACwsgBEHYAGoiBCAFRw0ACwsgA0GYAWooAgAhBiADQZQBaigCACEAIAIgATYCDAJAIAZFDQAgBkEobCEBA0AgAkEMaiAAEOsGIABBKGohACABQVhqIgENAAsLIAMtADwiAEEGRg0BIABBAkcNASADQRBqIQADQCAAKAIYIgAtACxBAkYNAAwCCwsgACgCDCIGRQ0AIAAoAggiBCAGQShsaiEFA0ACQAJAAkACQAJAIAQoAgAOBQQAAQIDBAsgBCgCBEEBRw0DIAEgBCgCCBCnAQwDCyABIAQoAgQQpwEMAgsgASAEKAIEEPcEDAELIARBDGooAgAiBkUNACAEQQhqKAIAIQAgBkEobCEGA0AgACABEO8DIABBKGohACAGQVhqIgYNAAsLIARBKGoiBCAFRw0ACwsgAkEQaiQAC7IEAQJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOEwAREQECAwQFBgcICQoLDA0ODxAACyABIABBBGoQgQcPCyAAQQRqIAEQ0CEgAEEIaiABENMhDwsgASAAQQxqEOQeDwsgASgCFCAAQRBqEPwNGiAAQShqIAEQ0yEPCyAAQRBqIAEoAhQQxx0PCyAAQRBqIAEoAhQQxx0PCyAAQQRqIAEQ0CEgAEEIaiABENMhIAAoAhRFDQogAEEUaiABENMhDwsgAEEQaiABENAhIAAoAgxBGGwhAiAAKAIIIQADQCACRQ0KIAEgAEEUahDkHiABIAAQgQcgAkFoaiECIABBGGohAAwACwsgAEEEaiABENAhDwsgASAAKAIEIgBByABqEIEHAkAgACgCAEEIRg0AIAAgARCCHiABIABBKGoQgQcLIABB4ABqIAEQgR4PCyAAQQRqIAEQ0CEgAEEIaiABENMhDwsgAEEEaiABENAhIABBCGogARDTIQ8LAkAgACgCBCICQQJGDQAgAEEIaiEDAkAgAkEBcUUNACADIAEQ0CEMAQsgAyABENQhCyABIABBGGoQ5B4gASAAQRxqEOQeIABBDGogARDTIQ8LIABBBGogARDYGiAAQQxqIAEQ0CEgAEEQaiABENMhDwsgAEEEaiABENgaIABBDGogARDQISAAQRBqIAEQ0yEPCyABIABBCGoQygQPCyAAQQRqIAEQ0CELC6QEAgd/A34jAEEQayIDJAAgAyACNgIIIAMgATcDACABIAIQ7hchAQJAIAAoAggNACAAQQEgAEEQahCaAhoLIAFCGYgiCkKBgoSIkKDAgAF+IQsgACgCBCIEIAGncSECIAAoAgAhBUEAIQZBACEHA38CQAJAAkACQAJAIAUgAmopAAAiDCALhSIBQn+FIAFC//379+/fv/9+fINCgIGChIiQoMCAf4MiAVANAANAIAMgACgCACABeqdBA3YgAmogBHFBBHRrQXBqEPsdDQIgAUJ/fCABgyIBUEUNAAsLIAxCgIGChIiQoMCAf4MhAQJAIAdBAUYNACABUA0DIAF6p0EDdiACaiAEcSEICwJAIAEgDEIBhoNCAFINAEEBIQcMBAtBACECAkAgBSAIaiwAAEEASA0AIAUpAwBCgIGChIiQoMCAf4N6p0EDdiEICyAAKAIAIgUgCGoiBC0AACEHIAMpAwAhASADKAIIIQYgBCAKpyIJOgAAIAUgACgCBCAIQXhqcWpBCGogCToAACAAIAAoAgxBAWo2AgwgACAAKAIIIAdBAXFrNgIIIAUgCEEEdGsiAEF4aiAGNgIAIABBcGogATcDAAwBC0EBIQIgAykDACIBQgODQgBSDQAgAaciACAAKAIAIghBf2o2AgBBASECIAhBAUcNACAAIAAoAhAQwRsLIANBEGokACACDwtBACEHCyACIAZBCGoiBmogBHEhAgwACwufBAIIfwN+IwBBEGsiAyQAIAMgATcDCCABEPUYIQECQCAAKAIIDQAgACAAQRBqEKMCGgsgAUIZiCILQoGChIiQoMCAAX4hDCAAKAIEIgQgAadxIQUgACgCACEGQQAhB0EAIQgDQAJAAkACQAJAAkAgBiAFaikAACINIAyFIgFCf4UgAUL//fv379+//358g0KAgYKEiJCgwIB/gyIBUA0AA0AgA0EIaiAAKAIAIAF6p0EDdiAFaiAEcSIJQQR0a0FwahC2Cw0CIAFCf3wgAYMiAVBFDQALCyANQoCBgoSIkKDAgH+DIQECQCAIQQFGDQAgAVANAyABeqdBA3YgBWogBHEhCgsCQCABIA1CAYaDQgBSDQBBASEIDAQLAkAgBiAKaiwAAEEASA0AIAYpAwBCgIGChIiQoMCAf4N6p0EDdiEKCyAAKAIAIgUgCmoiBi0AACEEIAMpAwghASAGIAunIgg6AAAgBSAAKAIEIApBeGpxakEIaiAIOgAAIAAgACgCDEEBajYCDCAAIAAoAgggBEEBcWs2AgggBSAKQQR0ayIAQXhqIAI6AAAgAEFwaiABNwMADAELIAAoAgBBACAJa0EEdGpBeGogAjoAACADKQMIIgFCA4NCAFINACABpyIAIAAoAgAiBUF/ajYCACAFQQFHDQAgACAAKAIQEMEbCyADQRBqJAAPC0EAIQgLIAUgB0EIaiIHaiAEcSEFDAALC5cFAQJ/IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAEGAgICAeHMiA0ELIANBEkkbDhIAAQIDBAUGBwgJCgsMDQ4PEBEACyACIABBBGo2AgwgAUHN2JsBQQIgAkEMakGTBRCkCyEBDBELIAIgAEEEajYCDCABQc/YmwFBBCACQQxqQf8EEKQLIQEMEAsgAiAAQQRqNgIMIAFB09ibAUEHIAJBDGpBlAUQpAshAQwPCyABKAIAQdrYmwFBCyABKAIEKAIMEQwAIQEMDgsgASgCAEHl2JsBQQsgASgCBCgCDBEMACEBDA0LIAEoAgBB8NibAUELIAEoAgQoAgwRDAAhAQwMCyACIABBBGo2AgwgAUH72JsBQQ4gAkEMakEyEKQLIQEMCwsgAiAAQQRqNgIMIAFBidmbAUESIAJBDGpBMhCkCyEBDAoLIAIgAEEEajYCDCABQZvZmwFBECACQQxqQTIQpAshAQwJCyABKAIAQavZmwFBFSABKAIEKAIMEQwAIQEMCAsgASgCAEHA2ZsBQQ4gASgCBCgCDBEMACEBDAcLIAIgADYCDCABQc7ZmwFBDSACQQxqQZwBEKQLIQEMBgsgASgCAEHb2ZsBQRUgASgCBCgCDBEMACEBDAULIAEoAgBB8NmbAUEVIAEoAgQoAgwRDAAhAQwECyABKAIAQYXamwFBFSABKAIEKAIMEQwAIQEMAwsgASgCAEGa2psBQQ0gASgCBCgCDBEMACEBDAILIAIgAEEEajYCDCABQafamwFBGCACQQxqQZUFEKQLIQEMAQsgAiAAQQRqNgIMIAFBv9qbAUENIAJBDGpBrQIQpAshAQsgAkEQaiQAIAEL1QQBCH8jAEHAAGsiAyQAAkACQCABQYC9hAFBDyACKAIMIgQRDAANACAAKAK8AiEFAkACQAJAIAAoAsACIgYQ4xNFDQAgBkEUbCEHIAAoAqQCIQggACgCoAIhCUEAIQoDQCAGIApGDQIgAyAFNgIAIANB3gBBPkEgIAggCkYbIAkgCkYbNgIEIANBAzYCHCADQYC+hAE2AhggA0EENgIMIANB4L2EATYCCCADQQM2AhQgA0GEATYCPCADQSo2AjQgA0EHNgIsIAMgCjYCJCADIANBKGo2AhAgAyADNgI4IAMgA0EkajYCMCADIANBBGo2AiggASACIANBCGoQzgUNBCAFQRRqIQUgCkEBaiEKIAdBbGoiBw0ACwsgACgCzAIiBkEBTQ0BQQEhCiABQdihmwFBASAEEQwADQMgACgCyAIhCkEAIQUDQCADIAU2AiAgCigCACEHIANBAjYCPCADQfi3hAE2AjggA0EDNgIsIANByL2EATYCKCADQQI2AjQgA0EqNgIUIANBKjYCDCADIAc2AiQgAyADQQhqNgIwIAMgA0EkajYCECADIANBIGo2AgggASACIANBKGoQzgUNAyAKQQRqIQogBiAFQQFqIgVGDQIMAAsLQYT6hAEQmyAACyABQdihmwFBASAEEQwADQAgA0ECNgIsIANBsL2EATYCKCADQgE3AjQgA0GFATYCDCADIAA2AgggAyADQQhqNgIwQQEhCiABIAIgA0EoahDOBQ0BIAFB3PqDAUECIAQRDAAhCgwBC0EBIQoLIANBwABqJAAgCgugBAIIfwJ+IwBBEGsiAiQAIAIgATcDCAJAIAFCA4NCAFINACABpykDCCEBCyABp0Hdy92eeWwgAUIgiKdqQd3L3Z55bEEPdyEDAkAgACgCCA0AIABBARCpAhoLIAAoAgQiBCADcSEFIANBGXYiBq1CgYKEiJCgwIABfiEKIAAoAgAhB0EAIQhBACEJA0ACQAJAAkACQAJAIAcgBWopAAAiCyAKhSIBQn+FIAFC//379+/fv/9+fINCgIGChIiQoMCAf4MiAVANAANAIAJBCGogACgCACABeqdBA3YgBWogBHFBA3RrQXhqELYLDQIgAUJ/fCABgyIBUEUNAAsLIAtCgIGChIiQoMCAf4MhAQJAIAlBAUYNACABUA0DIAF6p0EDdiAFaiAEcSEDCwJAIAEgC0IBhoNCAFINAEEBIQkMBAsCQCAHIANqLAAAQQBIDQAgBykDAEKAgYKEiJCgwIB/g3qnQQN2IQMLIAAoAgAiBSADaiIHLQAAIQQgAikDCCEBIAcgBjoAACAFIAAoAgQgA0F4anFqQQhqIAY6AAAgACAAKAIMQQFqNgIMIAAgACgCCCAEQQFxazYCCCAFIANBA3RrQXhqIAE3AwAMAQsgAikDCCIBQgODQgBSDQAgAaciACAAKAIAIgVBf2o2AgAgBUEBRw0AIAAgACgCEBDBGwsgAkEQaiQADwtBACEJCyAFIAhBCGoiCGogBHEhBQwACwu6BAEFfyMAQRBrIgIkAEEEIQMCQAJAAkACQAJAIAEoAgAOBQQAAQIDBAsgASgCBEUNA0EIIQMLIAAgASADaigCABC9AQwCCwJAIAEoAgQiBC0AbEECRw0AIARBwABqIQEDQCABKAIYIgEtACxBAkYNAAsLAkAgBEGEAWooAgAiA0UNACAEQYABaigCACIBIANB2ABsaiEFA0ACQAJAIAEoAgAiA0EFRw0AIAAgASgCBBC9AQwBCyADQQRGDQACQAJAAkAgAw4EAwABAgMLIAEoAgRBAUcNAiAAIAEoAggQvQEMAgsgASgCBCAAEK4CDAELIAFBDGooAgAhBiABQQhqKAIAIQMgAiAANgIMIAZFDQAgBkEobCEGA0AgAkEMaiADEPAGIANBKGohAyAGQVhqIgYNAAsLIAFB2ABqIgEgBUcNAAsLAkAgBEGYAWooAgAiAUUNACABQShsIQMgBEGUAWooAgBBBGohAQNAAkACQAJAAkACQCABQXxqKAIADgUEAAECAwQLIAEoAgBBAUcNAyAAIAFBBGooAgAQvQEMAwsgACABKAIAEL0BDAILIAEgABDFBwwBCyABIAAQwAULIAFBKGohASADQVhqIgMNAAsLIAQtADwiAUEGRg0BIAFBAkcNASAEQRBqIQEDQCABKAIYIgEtACxBAkYNAAwCCwsgASgCDCIDRQ0AIAEoAgghASADQShsIQMDQCAAIAEQ7AUgAUEoaiEBIANBWGoiAw0ACwsgAkEQaiQAC6UEAQd/AkACQCAAKAIIIgNBgICAwAFxRQ0AAkACQAJAAkAgA0GAgICAAXFFDQAgAC8BDiIEDQFBACECQQAhBQwCCwJAIAJBEEkNACABIAIQ1gUhBgwDCwJAIAINAEEAIQJBACEGDAMLQQAhBkEAIQUDQCAGIAEgBWosAABBv39KaiEGIAIgBUEBaiIFRw0ADAMLCyABIAJqIQdBACECQQAhCCABIQYCQANAIAYiBSAHRg0BAkACQCAFLAAAIgZBf0wNACAFQQFqIQYMAQsCQCAGQWBPDQAgBUECaiEGDAELAkAgBkFwTw0AIAVBA2ohBgwBCyAFQQRqIQYLIAYgBWsgAmohAiAEIAhBAWoiCEcNAAtBACEFDAELIAQgCGshBQsgBCAFayEGCyAGIAAvAQwiBU8NACAFIAZrIQlBACEFQQAhBwJAAkACQCADQR12QQNxDgQCAAECAgsgCSEHDAELIAlB/v8DcUEBdiEHCyADQf///wBxIQQgACgCBCEIIAAoAgAhAAJAA0AgBUH//wNxIAdB//8DcU8NAUEBIQYgBUEBaiEFIAAgBCAIKAIQEQgADQMMAAsLQQEhBiAAIAEgAiAIKAIMEQwADQEgCSAHa0H//wNxIQJBACEFA0ACQCAFQf//A3EgAkkNAEEADwtBASEGIAVBAWohBSAAIAQgCCgCEBEIAA0CDAALCyAAKAIAIAEgAiAAKAIEKAIMEQwAIQYLIAYLnAQBCn8CQAJAAkACQAJAAkACQAJAAkACQCAAKAIEIgMgAigCCCIETw0AIAAoAgAiBSAETw0BIAAoAgwiBiAETw0CIAAoAggiByAETw0DIABBDEEIIAIoAgQiAiAGQQxsaigCCCACIAdBDGxqKAIISyIIG2oiBigCACIHIARPDQQgACACIANBDGxqKAIIIgkgAiAFQQxsaigCCCIKS0ECdGoiCygCACIDIARPDQUgAEEIQQwgCBtqIgUoAgAiDCAETw0GIAAgCSAKTUECdGoiACgCACIJIARPDQcgBSAAIAYgAiAHQQxsaigCCCACIANBDGxqKAIISyIIGyACIAxBDGxqKAIIIAIgCUEMbGooAghLIgkbIgooAgAiDCAETw0IIAsgBiAAIAkbIAgbIgYoAgAiCyAETw0JIAIgDEEMbGooAgghBCACIAtBDGxqKAIIIQIgASAHIAMgCBs2AgAgASAKIAYgBCACSyIEGygCADYCBCABIAYgCiAEGygCADYCCCABIAAgBSAJGygCADYCDA8LIAMgBEHMuIABELMRAAsgBSAEQdy4gAEQsxEACyAGIARBzLiAARCzEQALIAcgBEHcuIABELMRAAsgByAEQcy4gAEQsxEACyADIARB3LiAARCzEQALIAwgBEHMuIABELMRAAsgCSAEQdy4gAEQsxEACyAMIARBzLiAARCzEQALIAsgBEHcuIABELMRAAuxBAEHfwJAAkACQAJAAkACQAJAAkACQCACIAEoAggiBU8NAAJAIAEoAgQgAkEUbGoiBigCBCIHRQ0AIAcgASADQf8BcWotAEhqIgcgASgCICIITw0CIAEoAhwgB0ECdGogBDYCAAsCQCAGKAIAIgYNACABKAIUIQcMBwsgBiABKAIUIgdPDQIgA0H/AXEiCSABKAIQIgggBkEJbGoiCi0AACILSQ0GIAkgC0YNAyABQQxqIQogA0H/AXEhBQNAAkAgCCAGIgJBCWxqKAAFIgYNAEEAIQYMBwsgBiAHTw0FIAUgCCAGQQlsaiILLQAAIglLDQALIANB/wFxIAlJDQUgCyAENgABDAcLIAIgBUG8roABELMRAAsgByAIQcyugAEQsxEACyAGIAdB3K6AARCzEQALIAogBDYAAQwDCyAGIAdB7K6AARCzEQALAkAgByAKKAIARw0AIApB2LGAARDsFSABKAIQIQgLIAEgB0EBaiIFNgIUIAggB0EJbGoiASAGNgAFIAEgBDYAASABIAM6AAACQCACIAdLDQAgCCACQQlsaiAHNgAFDAILIAIgBUH8roABELMRAAsCQCAHIAEoAgxHDQAgAUEMakHYsYABEOwVIAEoAgghBQsgASAHQQFqNgIUIAEoAhAgB0EJbGoiCCAGNgAFIAggBDYAASAIIAM6AAAgAiAFTw0BIAEoAgQgAkEUbGogBzYCAAsgAEEDNgIADwsgAiAFQYyvgAEQsxEAC7QEAgV/AX4CQCABKAIwIgIgACgCkAFLDQAgACACNgKQAQsgAEEIaiECAkAgACgCCEEKRg0AIAIQxAgLIAAgASkDADcDACAAIAEoAig2AnggAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACACIAFBCGopAwA3AwACQCAAKAJoIAEoAiwiAkYNACAAIAI2AmggACAAKAJkIAIgACgCbGsiAms2AlwgACAAKAJgIAJqNgJYCwJAIAAoAiBBgICAgHhGDQAgASgCJCEDAkAgACgCKCIEIAEoAiAiAkkNACAAIAI2AiggBCACRg0AIAQgAmshBCAAKAIkIAJBBXRqIQIDQAJAIAIpAwAiB0IDg0IAUg0AIAenIgUgBSgCACIGQX9qNgIAIAZBAUcNACAFIAUoAhAQwRsLIAJBIGohAiAEQX9qIgQNAAsLIAAoAjQiAiADSQ0AIAAgAzYCNCACIANGDQAgAiADayEEIAAoAjAgA0EYbGohAgNAAkAgAikDACIHQgODQgBSDQAgB6ciBSAFKAIAIgZBf2o2AgAgBkEBRw0AIAUgBSgCEBDBGwsgAkEYaiECIARBf2oiBA0ACwsgACABKQNgNwPAASAAQcgBaiABQegAaigCADYCACAAQZgBahD8HiAAQbABaiABQdAAaikDADcDACAAQagBaiABQcgAaikDADcDACAAQaABaiABQcAAaikDADcDACAAIAEpAzg3A5gBIAAgASkDWDcDuAEL1AQDBn8CfgF8IwBBwABrIgIkACABKALAASEDIAIgAS0AyAEiBDoAHwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQeQARg0AAkAgBEFAag4DAwQFAAsgBEHaAEYNASAEQeoARg0BIARB3n5qDgIFBgcLIAEQhw4gASgCvAEhBEECIQVCACEIDAgLIARB6gBGIQYgARCHDiABKAK8ASEEQQEhBUIAIQgMBwsgAkEgaiABEKwNIAIpAzAiCUKAgICAcIMhCCACLwAlIAItACdBEHRyIQEgAisDKCEKIAItACQhBiACKAIgIQQgCachB0EAIQUMBwsgAkEIaiABIAMgASgCxAEQqhcgAigCCCACKAIMEPUVIQkgARCGESEKIAEQhw4gCUKAgICAcIMhCCABKAK8ASIGQQh2IQEgCachB0EDIQUgAyEEDAYLIAJBEGogASADIAEoAsQBEKoXIAIoAhAgAigCFBD1FSEIIAEQyREhByABEIcOIAEoArwBIgZBCHYhASAIvyEKQQQhBUIAIQggAyEEDAULIAEQxxEhBCABEIcODAILIAEoAnAQgRshBAwBCyACQQE2AiQgAkHgu5sBNgIgIAJCATcCLCACQYoFrUIghiACQR9qrYQ3AzggAiACQThqNgIoIAJBIGpB6LubARCFGwALIABBBzYCACAAIAQ2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fGohAQNAIAcgAy0AAEYNAiADQQFqIQMgAUF/aiIBDQAMAwsLIAMgBU8NAQNAIAcgAy0AAEYNASADQQFqIgMgBUcNAAwCCwsgACADIAhrIARqIgM2AgRBASEGIAAgA0EBajYCCAsgACAGNgIAC9kDAQR/IwBBgAFrIgIkAAJAAkAgACgCDCIDKAIAQRpHDQAgAiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAgBBMkYNASADEMkBIANBOGogAkE4aikDADcDACADQTBqIAJBMGopAwA3AwAgA0EoaiACQShqKQMANwMAIANBIGogAkEgaikDADcDACADQRhqIAJBGGopAwA3AwAgA0EQaiACQRBqKQMANwMAIAQgAkEIaikDADcDACADIAIpAwA3AwAMAQsgAyABEEYLAkAgACgCCCIDRQ0AIANBBHQhBCAAKAIEQQxqIQADQAJAAkAgACgCACIDKAIAQRpHDQAgAkHAAGogASgCACABKAIEIANBCGoiBRC1DCACKAJAQTJGDQEgAxDJASADQThqIAJBwABqQThqKQMANwMAIANBMGogAkHAAGpBMGopAwA3AwAgA0EoaiACQcAAakEoaikDADcDACADQSBqIAJBwABqQSBqKQMANwMAIANBGGogAkHAAGpBGGopAwA3AwAgA0EQaiACQcAAakEQaikDADcDACAFIAJBwABqQQhqKQMANwMAIAMgAikDQDcDAAwBCyADIAEQRgsgAEEQaiEAIARBcGoiBA0ACwsgAkGAAWokAAvdAwEFfyMAQYABayICJAACQAJAAkAgAS0AFEECRg0AIABBGjYCACAAIAEpAwA3AwggAEEYaiABQRBqKQMANwMAIABBEGogAUEIaikDADcDAAwBCyACQQhqIAEoAgAiA0EgaikDADcDACACQRBqIANBKGopAwA3AwAgAkEYakEIaiIEIANBCGopAwA3AwAgAiADKQMYNwMAIAIgAykDADcDGCADKAIUIQUgAygCECEGIAJBKGogAhDQBkEALQDA8Z0BGkHAABCFASIBRQ0BIAEgAikDKDcDACABQThqIAJBKGpBOGopAwA3AwAgAUEwaiACQShqQTBqKQMANwMAIAFBKGogAkEoakEoaikDADcDACABQSBqIAJBKGpBIGopAwA3AwAgAUEYaiACQShqQRhqKQMANwMAIAFBEGog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IAg6AHkLIAFBKGooAgAgABDnBAwCCyAAIAFBEGoQ8QogAUEIaiEJAkAgAUEwaigCACIBRQ0AIAAtACghByAAQQA6ACggAC0AeSEIIABBADoAeQJAIAEoAgBBGkcNACACIAEpAwggAUEYaigCABC6GCAGIAIpAwAgAigCCBDRCgsgASAAEHcgACAHOgAoIAAgCDoAeQsgACAJEPsQDAELIAFBBGooAgAgABDnBAsgBSADQThqIgNHDQALCyACQRBqJAAL2AMCA38CfiMAQcABayIDJAAgACgCMBCBEiEEIANBNGoiBSAAQTRqKAIANgIAIANBCGpBACkDmPucASIGNwMAIANBEGpBACkDkPucASIHNwMAIANBGGogBjcDACADIAA2AiAgAyAENgIkIANBAToAOSADQQE6ACggAyAAKQIsNwIsIAMgBzcDACADIAAoATo2ATogAyAALQA4OgA4IAMgAUEDEPkNIAMoAjAQgRIhACADQeAAakE0aiAFKAIANgIAIANB4ABqQQhqIAY3AwAgA0HgAGpBEGoiASAHNwMAIANB4ABqQRhqIAY3AwAgAyAANgKEASADQQE6AJkBIANBAToAiAEgAyADKQIsNwKMASADIAc3A2AgAyADKAE6NgGaASADIAMtADg6AJgBIAMgAzYCgAEgA0HgAGogAigCABDAAgJAIAMoAmQiAEUNACADKAJgIAMoAmwQkgwgACAAQQR0QRdqQXBxIgJqQQlqIgBFDQAgAygCYCACayAAQQgQnhILIAEQ1hUCQCADKAIEIgBFDQAgAygCACADKAIMEJIMIAAgAEEEdEEXakFwcSIBakEJaiIARQ0AIAMoAgAgAWsgAEEIEJ4SCyADQRBqENYVIANBwAFqJAAL0QMCCn8BfiMAQaABayICJAAgAiABKAIIIgNBCEEwQbSUmwEQ2BQgASgCACEEIAIoAgAhBSACKAIEIQYgAUEANgIAIAEoAgQhByABQQg2AgQgAUEANgIIIAJBADYCFCACIAY2AhAgAiAFNgIMIAIgByADQTBsIghqIgk2AiQgAiAENgIgIAIgBzYCGCACQShqQQRyIQogACkCDCEMIAAoAhQhC0EAIQBBACEEIAchAwJAA0AgCCAARg0BAkAgAygCACIFQRNGDQAgAiAFNgIoAkBBLEUNACAKIANBBGpBLPwKAAALIAIg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IANBEGpBDGogA0EgakEMaigAADYAACADIAMpACU3ABUgAyACOgAUIAMgATYCECADQRBqEPAEIABBCGogA0EQakEIaikCADcCACAAIAMpAhA3AgAMAwsgA0EgakGk54gBQaTriAEQnQsgACADQSBqEN0TDAILIANBIGpBsJiOAUG4mI4BEJ0LIAAgA0EgahDdEwwBCyADQSBqQaiYjgFBsJiOARCdCyAAIANBIGoQ3RMLIANBMGokAAu5AwIGfwF+IwBB4ABrIgQkACAEQQxqQSBBCEEQEMwNIAQoAhAhBQJAIAQoAgxBAUcNACAFIAQoAhRBjKWaARCqHgALIAQoAhQhBkEAEIESIQcgBEEMakEIaiIIQQA2AgAgBEEMakEwakIENwIAIARBDGpBOGoiCUEAOgAAIARBIGpBACkDmPucASIKNwIAIARBMGogCjcCACAEIAc2AlQgBEEANgJYIARCgICAgIABNwIMIARBADYCOCAEQoCAgICAATcCSCAEQQA7AVwgBEEAOgBeIARBADYCUCAEQQApA5D7nAEiCjcCGCAEIAo3AiggACACNgJIIAAgAToATCAAQQA7AE0gAEEAOgBPIABBMGpCBDcCACAAQThqIAkoAgA2AgAgACAEKQIMNwIAIABBCGogCCkCADcCACAAQRBqIARBDGpBEGopAgA3AgAgAEEYaiAEQQxqQRhqKQIANwIAIABBIGogBEEMakEgaikCADcCACAAQShqIARBDGpBKGopAgA3AgAgAEEBOwBRIAAgAzoAUCAAQQA2AkQgACAGNgJAIAAgBTYCPCAEQcgAahC9ECAEQeAAaiQAC7sDAQJ/AkACQAJAAkACQCABKAIADgUEAAECAwQLIAEoAgRBAUcNAyAAIAEoAggQjAEPCyAAIAEoAgQQjAEPCyAAIAEoAgQiAkHAAGoQhQoCQCACQYQBaigCACIDRQ0AIAJBgAFqKAIAIQEgA0HYAGwhAwNAAkACQAJAIAEoAgBBfGoOAgIAAQsgACABQQRqKAIAEIwBDAELIAEgABCyDQsgAUHYAGohASADQah/aiIDDQALCwJAIAIoAngiAUUNACABELgYIAEoAgAgAUEEaigCABDAICABQRRBBBCeEgsgAkEANgJ4AkAgAkGYAWooAgAiAUUNACABQShsIQMgAkGUAWooAgBBBGohAQNAAkACQAJAAkACQCABQXxqKAIADgUEAAECAwQLIAEoAgBBAUcNAyAAIAFBBGooAgAQjAEMAwsgACABKAIAEIwBDAILIAEgABCBCQwBCyABIAAQ7QYLIAFBKGohASADQVhqIgMNAAsLIAItADxBBkYNASAAIAJBEGoQhQoPCyABKAIMIgNFDQAgASgCCCEBIANBKGwhAwNAIAAgARChByABQShqIQEgA0FYaiIDDQALCwuyAwEEfyMAQSBrIgMkAAJAAkAgAi0ADCIEQQFHDQAgACABKQIANwIAIABBCGogAUEIaikCADcCACACKAIAIAIoAgQQsSAMAQsCQAJAAkACQAJAAkACQAJAAkAgAS0ADCIFDgMBAAIBCyAAIAIpAgA3AgAgAEECIARrOgAMIAAgAi8ADTsADSAAQQhqIAJBCGooAgA2AgAgAEEPaiACQQ9qLQAAOgAAIAEoAgQhBAwHCyAERQ0BDAILIARFDQELIAEoAgQiBCABKAIIIAIoAgQiBiACKAIIEOsYQf8BcQ4CAgMBCyADQRBqIAEgAhCTDyAAIAUgA0EQahCREwwECyADQRBqQQhqIAJBCGooAgA2AgAgAyACKQIANwMQIANBBGogA0EQaiABENwZIABBAiAFayADQQRqEJETDAMLIABBCGpBACkCyN+CATcCACAAQQApAsDfggE3AgAgAigCACAGELEgDAELIANBEGpBCGogAUEIaigCADYCACADIAEpAgA3AxAgA0EEaiADQRBqIAIQ3BkgACAFIANBBGoQkRMMAQsgASgCACAEELEgCyADQSBqJAALlgMBA38jAEEQayIDJAACQAJAIAINACAAQQI6AAAMAQsCQAJAAkACQCABLAAAIgRBf0oNAAJAIARBQEkNAAJAAkACQCAEQWBPDQBBAiEFDAELIARBcE8NAUEDIQULIAUgAk0NBAwFCyAEQXhJDQILIAAgBDoAASAAQQE6AAAMBAsgACAEQf8BcTYCBCAAQQA6AAAMAwtBBCEFIAJBBEkNAQsgA0EEaiABIAUQxQQCQCADKAIEQQFHDQAgACAEOgABIABBAToAAAwCCwJAIAMoAgxFDQACQAJAIAMoAggiASwAACICQX9MDQAgAkH/AXEhAgwBCyABLQABQT9xIQQgAkEfcSEFAkAgAkFfSw0AIAVBBnQgBHIhAgwBCyAEQQZ0IAEtAAJBP3FyIQQCQCACQXBPDQAgBCAFQQx0ciECDAELIARBBnQgAS0AA0E/cXIgBUESdEGAgPAAcXIiAkGAgMQARg0BCyAAIAI2AgQgAEEAOgAADAILQbCehQEQmyAACyAAIAQ6AAEgAEEBOgAACyADQRBqJAALhAMCBH8BfiMAQdAAayIDJAAgAyABIAJB+bGXAUEBEOQCA0AgA0HEAGogAxCaAyADKAJEIgRFDQALAkACQAJAIARBf2oOAgABAAsgAygCSCEEDAELIAIhBAtCACEHAkACQCACIARrQRBLDQBCACEHAkAgAiAERg0AIAEgAmohBSABIARqIQRCACEHA0ACQAJAIAQsAAAiAkF/TA0AIARBAWohBCACQf8BcSECDAELIAQtAAFBP3EhASACQR9xIQYCQCACQV9LDQAgBkEGdCABciECIARBAmohBAwBCyABQQZ0IAQtAAJBP3FyIQECQCACQXBPDQAgASAGQQx0ciECIARBA2ohBAwBCyABQQZ0IAQtAANBP3FyIAZBEnRBgIDwAHFyIQIgBEEEaiEECyACQb9/akFfcUEKaiACQVBqIAJBOUsbIgJBEE8NAyAHQgSGIAKthCEHIAQgBUcNAAsLIAAgBzcDCEIBIQcLIAAgBzcDACADQdAAaiQADwtB/LGXARCbIAALsgMBAn8CQAJAAkAgACgCACIBLQBsIgJBfWoiAEEBIABB/wFxQQNJG0H/AXEOAwABAgALIAFBADYCUAwBCyABQcAAaiEAAkAgAkH/AXFBAkcNAANAIAAoAhgiAC0ALEECRg0ACwsgAEEANgIoCwJAIAFBhAFqKAIAIgJFDQAgAUGAAWooAgAhACACQdgAbCECA0ACQAJAAkAgACgCAEF8ag4CAgABCyAAQQRqKAIAELUBDAELIAAQ+g0LIABB2ABqIQAgAkGof2oiAg0ACwsCQCABQZgBaigCACIARQ0AIABBKGwhAiABQZQBaigCAEEEaiEAA0ACQAJAAkACQAJAIABBfGooAgAOBQQAAQIDBAsgACgCAEEBRw0DIABBBGooAgAQtQEMAwsgACgCABC1AQwCCyAAEKUHDAELIAAQ5AULIABBKGohACACQVhqIgINAAsLAkAgAS0APCICQQZGDQACQAJAIAJBfWoiAEEBIABBA0kbQf8BcQ4DAAECAAsgAUEANgIgDwsgAUEQaiEAAkAgAkECRw0AA0AgACgCGCIALQAsQQJGDQALCyAAQQA2AigLC7EDAQR/AkACQAJAAkACQCAAKAIADgUEAAECAwQLIAAoAgRBAUcNAyAAKAIIIAEQqAEPCyAAKAIEIAEQqAEPCyABIAAoAgQiAkHAAGoQ+wgCQCACQYQBaigCACIDRQ0AIAJBgAFqKAIAIQAgA0HYAGwhAwNAAkACQAJAIAAoAgBBfGoOAgIAAQsgAEEEaigCACABEKgBDAELIAAgARCxBAsgAEHYAGohACADQah/aiIDDQALCwJAIAJBmAFqKAIAIgBFDQAgAkGUAWooAgAiBCAAQShsaiEFA0ACQAJAAkACQAJAIAQoAgAOBQQAAQIDBAsgBCgCBEEBRw0DIAQoAgggARCoAQwDCyAEKAIEIAEQqAEMAgsgASAEKAIEEI8KDAELIARBDGooAgAiA0UNACAEQQhqKAIAIQAgA0EobCEDA0AgASAAEPQFIABBKGohACADQVhqIgMNAAsLIARBKGoiBCAFRw0ACwsgAi0APEEGRg0BIAEgAkEQahD7CA8LIAAoAgwiA0UNACAAKAIIIQAgA0EobCEDA0AgASAAEPQFIABBKGohACADQVhqIgMNAAsLC58DAQh/IwBBIGsiAiQAAkACQAJAAkACQAJAIAEoAgBBAUcNACABQQhqIQMgASgCPCEEIAEoAjghBSABKAI0IQYgASgCMCEHIAEoAiRBf0YNASAAIAMgByAGIAUgBEEAEMwGDAULQQAhCCABLQAODQMgASgCNCEHIAEoAjAhCSABKAIEIQMgAS0ADCEFAkADQCACQRBqIAMgCSAHEMATIAIoAhAiBEUNAyACKAIUIQYgAiAENgIYIAIgBCAGajYCHCACQQhqIAJBGGoQwAsgAigCCEEBcUUNAQJAIAVBAXENAEEBIQVBASEEAkAgAigCDCIGQYABSQ0AQQIhBCAGQYAQSQ0AQQNBBCAGQYCABEkbIQQLIAEgBCADaiIDNgIEDAELCyABQQA6AAwMAwsgASAFQX9zQQFxOgAMIAVBAXENAiABQQE6AA4MAwsgACADIAcgBiAFIARBARDMBgwDCyABIAVBf3NBAXE6AAwgCSAHIAMgB0GQ4JsBEJUfAAsgACADNgIIIAAgAzYCBEEBIQgLIAAgCDYCAAsgAkEgaiQAC5QDAQh/IwBBMGsiBSQAIAUgASgCCCIGNgIEAkACQAJAAkACQAJAIAZBwABHDQAgASgCECIHIARqIgYgA0sNAiAGIARJDQEgASACIARqIAcQ6w8hCCABKAIUIQkgASgCBCEKIAEoAgwiC0EQaiEMAkADQAJAIAogCEE/cUEMbGoiASgCCCIGRQ0AIAEoAgQhASAGQQN0IQYDQAJAIAEoAgAgCEcNACAFQSBqIAtBDGooAgAgDCgCACABQQRqKAIAIAIgAyAEEKEIIAUoAiANBAsgAUEIaiEBIAZBeGoiBg0ACwsgBCAHaiIBIANPDQUgBCADRg0GIAggCSACIARqLQAAbGtBAXQgAiABai0AAGohCCAEQQFqIQQMAAsLIAAgBSkCIDcCACAAQQhqIAVBIGpBCGopAgA3AgAMBQsgBUEANgIIQQBBkLuAASAFQQRqIAVBCGpBtLuAARCZGQALIAQgBkGUu4ABEKkgAAsgAEEANgIADAILIABBADYCAAwBCyADIANBpLuAARCzEQALIAVBMGokAAu+AwEFfyMAQTBrIgQkAAJAAkACQCADKAIIIgUgAkkNACADKAIEIQYgBEEYaiABIAIgAkGM7IIBEIsRIAQoAiQhASAEKAIcIQcgBCgCGCEIIARBGGogBiAFIAJBnOyCARCKESAEKAIkIQYgBCgCICEFIAggByAEKAIYIAQoAhwQ8BAhAiABDQICQCACQf8BcQ0AIAZBAnQhAgNAIAJFDQMgAkF8aiECIAUoAgAhASAFQQRqIQUgAUUNAAsLIARBADYCKCAEQQE2AhwgBEH064IBNgIYIARCBDcCICAEQRhqQeDsggEQhRsACyAEQRBqIAEgAiAFQfDsggEQ7BsgBCgCECAEKAIUIAMoAgQgBRDwECEGIARBCGogBSABIAJBgO2CARCQGiADIAQoAgggBCgCDBC+HiAGQf8BcUUNACAEIAUgAygCBCADKAIIQZDtggEQjxogBCgCACAEKAIEQYCGmwFBARDtBwsgBEEYakEIaiICIANBCGooAgA2AgAgBCADKQIANwMYIARBGGoQ4wggAEEIaiACKAIANgIAIAAgBCkDGDcCACAEQTBqJAAPC0Gs7IIBQSFB0OyCARDdFwALlQMBDn8gAS0AFCIEIQUgAS0AEiIGIQcgAS0AECIIIQkgAS0AESIKIQsgAS0AEyIMIQ0gAS0AFSIOIQ8CQCADRQ0AIANBHGwhBSACQRhqIQNBAiEJQQEhB0ECIQtBAiENQQIhAkECIRBBAiERA0ACQAJAAkACQAJAAkACQAJAIAMtAAAOCAECAwQFBgcAAQtBACEHDAYLIAdBAXEhEQwFCyAHQQFxIRAMBAsgB0EBcSECDAMLIAdBAXEhDQwCCyAHQQFxIQsMAQsgB0EBcSEJCyADQRxqIQMgBUFkaiIFDQALIA4gCSAJQf8BcUECRhshDyAEIAsgC0H/AXFBAkYbIQUgDCANIA1B/wFxQQJGGyENIAYgAiACQf8BcUECRhshByAKIBAgEEH/AXFBAkYbIQsgCCARIBFB/wFxQQJGGyEJCyABIA86ABUgASAFOgAUIAEgDToAEyABIAc6ABIgASALOgARIAEgCToAECAAIA46AAUgACAEOgAEIAAgDDoAAyAAIAY6AAIgACAKOgABIAAgCDoAAAuoAwEDfyMAQRBrIgIkACAAKAIAIQACQAJAAkACQAJAIAEoAgAOBQQAAQIDBAsgASgCBEEBRw0DIAAtAAANAyABKAIIIAAQlQEMAwsgAC0AAA0CIAEoAgQgABCVAQwCCwJAIAEoAgQiAy0AbEECRw0AIANBwABqIQEDQCABKAIYIgEtACxBAkYNAAsLAkAgA0GEAWooAgAiBEUNACADQYABaigCACEBIARB2ABsIQQDQAJAAkACQCABKAIAQXxqDgICAAELIAAtAAANASABQQRqKAIAIAAQlQEMAQsgASAAEKYICyABQdgAaiEBIARBqH9qIgQNAAsLAkAgA0GYAWooAgAiBEUNACADQZQBaigCACEBIARBKGwhBANAIAEgABCeBiABQShqIQEgBEFYaiIEDQALCyADLQA8IgFBBkYNASABQQJHDQEgA0EQaiEBA0AgASgCGCIBLQAsQQJGDQAMAgsLIAEoAgwhBCABKAIIIQEgAiAANgIMIARFDQAgBEEobCEAA0AgAkEMaiABEKsHIAFBKGohASAAQVhqIgANAAsLIAJBEGokAAvsAgEIfyACIAFBDGxBdGoiA2ohBCAAIANqIQUgACABQQF2IgZBDGxqIgNBdGohBwJAA0ACQCAGDQAgB0EMaiEHAkAgAUEBcUUNACACIAAgAyAAIAdJIgQbIgYpAgA3AgAgAkEIaiAGQQhqKAIANgIAIAMgACAHT0EMbGohAyAAIARBDGxqIQALAkAgACAHRw0AIAMgBUEMakYNAwsQzRkACyACIAMgACADKAIEIAAoAgRJIAMoAgAiCCAAKAIAIglJIAggCUYbIggbIgkpAgA3AgAgAkEIaiAJQQhqKAIANgIAIAQgByAFIAUoAgQgBygCBEkgBSgCACIJIAcoAgAiCkkgCSAKRhsiCRsiCikCADcCACAEQQhqIApBCGooAgA2AgAgAyAIQQxsaiEDIAdBACAJa0EMbGohByAJQQxsIAVqQXRqIQUgACAIQQFzQQxsaiEAIAZBf2ohBiAEQXRqIQQgAkEMaiECDAALCwurAwEGfyMAQcAAayIEJAAgASABKAJ4IgVBgIAIcjYCeCAEQQhqIAEgAiADQQAQrQEgASAFNgJ4IAQoAgghBgJAAkAgBC0AHCIHQQNHDQBBASECDAELIARBMGpBCGogBEEUaikCADcDACAEQS5qIARBH2otAAA6AAAgBCAEKQIMNwMwIAQgBC8AHTsBLCAEKAIgIggoAhAiAiAIKAIUQdgAbGohCQJAA0ACQAJAAkACQCACIgMgCUYiAg0AIANBAEHYACACG2ohAiADKAIAIgVBfGpBACAFQXtqQQhJG0F/ag4DAQQCBAtBACECQQAtAMDxnQEaQcAAEIUBIgMNBAALIAMtADVFDQIMAQsgAy0ARUEBRw0BCyADKAIsIQUgAygCKCEDIARBoYGAgHg2AgggASADIAUgBEEIahCvGgwACwsgAyAGNgIIIANBHzYCACADIAQpAzA3AgwgAyAHOgAcIAMgBC8BLDsAHSADIAg2AiAgA0EUaiAEQThqKQMANwIAIANBH2ogBEEuai0AADoAACADIQYLIAAgBjYCBCAAIAI2AgAgBEHAAGokAAuYAwEGfyMAQSBrIgIkAAJAAkAgASgCWCIDLAAAIgRBf0wNACAEQf8BcSEEDAELIAMtAAFBP3EhBSAEQR9xIQYCQCAEQV9LDQAgBkEGdCAFciEEDAELIAVBBnQgAy0AAkE/cXIhBQJAIARBcE8NACAFIAZBDHRyIQQMAQsgBUEGdCADLQADQT9xciAGQRJ0QYCA8ABxciEECwJAAkAgBEHcAEYNACABKAJcIQUCQAJAIARB/wBLDQAgBEHAp5kBai0AAA0CIAEoAmghB0EBIQYMAQsgBBCCGA0BIAEoAmghB0ECIQYgBEGAEEkNAEEDQQQgBEGAgARJGyEGCyABIAYgB2o2AmggASAFIAZrNgJcIAEgAyAGajYCWCACQaGAgIB4NgIIIAIgBDYCDCACIAcgByACQQhqEJMdAkAgAi0AACIBQQJHDQAgAigCBCEBIABBAToAACAAIAE2AgQMAgsgACACLwABOwABIABBA2ogAi0AAzoAACAAIAIoAgQ2AgQgACABOgAADAELIAAgARCBDQsgAkEgaiQAC5wDAQd/IAEgABCIGRD8HRogACgCECICIAAoAhRB2ABsaiEDIAEoAhQhBAJAA0AgAiIFIANGDQEgBUHYAGohAgJAAkACQAJAAkACQAJAIAUoAgAiBkF8akEAIAZBe2pBCEkbDgkAAQIDBAcHBQYACyABIAUQxR0gBSgCSEEGdCEHIAUoAkQhBgJAA0AgB0UNAQJAAkAgBigCAEEHRg0AIAYgARDmHgwBCyABIAZBMGoQiBkgBkEIaiEIAkAgBkEcai0AAEECRw0AIAggARDnHgwBCyAEIAgQ/A0aCyAGQcAAaiEGIAdBQGohBwwACwsgBUEgaiABEIEeDAYLIAEgBUEIahDFHSAFQTBqIAEQ0iEMBQsgBUEgaiABENIhDAQLIAEgBUEIahDFHSABIAVBPGoQ5B4gASAFQTBqEIgZDAMLIAEgBUEkahDkHiABIAVBLGoQiBkMAgsgASAFQQRqEIEHDAELAkAgBSgCCEEFRg0AIAEgBUEIahDFHQsgASAFQTxqEOQeIAEgBUEwahCIGQwACwsgASAAQTBqEOQeC6oDAQV/IwBBwABrIgYkACABIAEoAngiB0GAgAhyNgJ4IAZBCGogASADIARBABCtASABIAc2AnggBigCCCEIAkACQCAGLQAcIglBA0cNACAAQQM2AgAgACAINgIEDAELIAZBMGpBCGogBkEUaikCADcDACAGQS5qIAZBH2otAAA6AAAgBiAGKQIMNwMwIAYgBi8AHTsBLCAGKAIgIQoCQAJAIAUNACAKKAIQIgMgCigCFEHYAGxqIQUDQCADIgQgBUYiAw0CIARBAEHYACADG2ohAwJAAkACQCAEKAIAIgdBfGpBACAHQXtqQQhJG0F/ag4DAAMBAwsgBC0ANUUNAgwBCyAELQBFQQFHDQELIAQoAiwhByAEKAIoIQQgBkGhgYCAeDYCCCABIAQgByAGQQhqEK8aDAALCyAKQQE6ADwLIAAgCDYCCCAAQQA2AgAgACAGKQMwNwIMIAAgCToAHCAAIAYvASw7AB0gACACNgIoIAAgCjYCICAAIAEoArwBNgIsIABBFGogBkE4aikDADcCACAAQR9qIAZBLmotAAA6AAALIAZBwABqJAALxgMBAX8jAEEQayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIAKAIADgsAAQIDBAUGBwgJCgALIAIgAEEIajYCDCABQbXWmwFBBSACQQxqQcECEKQLIQEMCgsgAiAAQQhqNgIMIAFBx/iZAUEGIAJBDGpB1gIQpAshAQwJCyACIABBCGo2AgwgAUHN+JkBQQkgAkEMakHXAhCkCyEBDAgLIAIgAEEEajYCDCABQYf5mQFBBSACQQxqQeUCEKQLIQEMBwsgAiAAQQRqNgIMIAFBlPqZAUEIIAJBDGpB8gIQpAshAQwGCyACIABBBGo2AgwgAUHr+ZkBQQQgAkEMakHuAhCkCyEBDAULIAIgAEEEajYCDCABQf75mQFBCyACQQxqQfACEKQLIQEMBAsgAiAAQQRqNgIMIAFB4vmZAUEJIAJBDGpB7QIQpAshAQwDCyACIABBBGo2AgwgAUHD+ZkBQQ8gAkEMakHrAhCkCyEBDAILIAIgAEEEajYCDCABQe/5mQFBDyACQQxqQe8CEKQLIQEMAQsgAiAAQQRqNgIMIAFBz9abAUEHIAJBDGpBxgIQpAshAQsgAkEQaiQAIAELowMBAn8CQAJAAkACQAJAAkAgACgCAA4EAwABAgMLIAAoAgRBAUcNAiABLQAEQQFHDQICQAJAIAAoAggiACgCAEFmag4DBgABBQsgACgCCEEFRg0FDAQLIAAoAgxFDQMgAUEAOgAEDwsCQCAAKAIEIgItAGxBAkcNACACQcAAaiEAA0AgACgCGCIALQAsQQJGDQALCwJAIAJBhAFqKAIAIgNFDQAgAkGAAWooAgAhACADQdgAbCEDA0ACQAJAAkAgACgCAEF8ag4CAgABCyABQQA6AAQMAQsgACABEK4DCyAAQdgAaiEAIANBqH9qIgMNAAsLAkAgAkGYAWooAgAiA0UNACACQZQBaigCACEAIANBKGwhAwNAIAAgARCNBSAAQShqIQAgA0FYaiIDDQALCyACLQA8IgBBBkYNASAAQQJHDQEgAkEQaiEAA0AgACgCGCIALQAsQQJGDQAMAgsLIAAoAgwiA0UNACAAKAIIIQAgA0EobCEDA0AgACABEMIEIABBKGohACADQVhqIgMNAAsLDwsgACABENsBDwsgAUEAOgAEC6UDAQN/IwBB4ABrIgUkACAFQQhqIAEgAiADIARBAEEBEJwFIAUoAgghBAJAAkAgBS0AHCIDQQNHDQAgAEEINgIAIAAgBDYCBAwBCyAFQThqQQhqIgYgBUEUaikCADcDACAFQTRqQQJqIgcgBUEfai0AADoAACAFIAUpAgw3AzggBSAFLwAdOwE0IAUoAiAhAiAFQcKAgIB4NgJIAkAgA0ECRw0AIAVBIGogBUHIAGpBEGopAwA3AwAgBUEIakEQaiAFQcgAakEIaikDADcDACAFIAUpA0g3AxAgAhDBDCAFQQg2AgggASgCwAEgASgCxAEgBUEIakEIahCFFSEEAkAgAS0AyAFBogFHDQAgARDHESEDIAEQhw4gASADEOURCyAAQQg2AgAgACAENgIEDAELIAVByABqEJsDIAVBHGogBikDADcCACAFQSdqIActAAA6AAAgBSAENgIQIAUgAzoAJCAFQQA6ACwgBSACNgIoIAVBATYCCCAFIAUpAzg3AhQgBSAFLwE0OwAlQShFDQAgACAFQQhqQSj8CgAACyAFQeAAaiQAC5IDAQN/IwBBwABrIgYkAAJAAkACQCAFRQ0AIAQtAAAhByAGQRhqIAJBAEEBQQEQ2wwgBigCHCEEIAYoAhhBAUYNASAGQQA2AjwgBiAGKAIgNgI4IAYgBDYCNCAGQTRqIAIQ9RsgBigCPCEEAkAgAkUNACAGKAI4IQggA0H/AXEhAwNAIAggBGogByABLQAAIgUgBSADRhs6AAAgAUEBaiEBIARBAWohBCACQX9qIgINAAsLIAAgBikCNDcCACAAQQhqIAQ2AgAMAgtBACEFIAZBAEEBQQFB2KKbARDYFCAGQQA2AhQgBiAGKQMANwIMIAZBGGogAyABIAIQ7hICQANAIAZBNGogBkEYahCwCiAGKAI0QQFHDQEgASAFaiEHIAYoAjwhBSAGQQxqIAcgASAGKAI4ahDiGCAGQQxqIAQgBBDiGAwACwsgBkEMaiABIAVqIAEgAmoQ4hggAEEIaiAGQQxqQQhqKAIANgIAIAAgBikCDDcCAAwBCyAEIAYoAiBBsJibARCqHgALIAZBwABqJAALhAMCBn8CfiMAQSBrIgMkAEEUIQQgACEJAkAgAELoB1QNAEEUIQQgACEKA0AgA0EMaiAEaiIFQX1qIAogCkKQzgCAIglCkM4Afn2nIgZB//8DcUHkAG4iB0EBdCIIQYHMmAFqLQAAOgAAIAVBfGogCEGAzJgBai0AADoAACAFQX9qIAYgB0HkAGxrQf//A3FBAXQiBkGBzJgBai0AADoAACAFQX5qIAZBgMyYAWotAAA6AAAgBEF8aiEEIApC/6ziBFYhBSAJIQogBQ0ACwsCQCAJQglYDQAgA0EMaiAEakF/aiAJpyIFIAVB//8DcUHkAG4iBUHkAGxrQf//A3FBAXQiBkGBzJgBai0AADoAACADQQxqIARBfmoiBGogBkGAzJgBai0AADoAACAFrSEJCwJAAkAgAFANACAJUA0BCyADQQxqIARBf2oiBGogCadBAXRBHnFBgcyYAWotAAA6AAALIAIgAUEBQQAgA0EMaiAEakEUIARrEMoFIQUgA0EgaiQAIAULqAMBBH8jAEEwayIDJAACQAJAIAItAAwiBEEBRw0AIAAgASkCADcCACAAQQhqIAFBCGopAgA3AgAMAQsCQAJAAkACQAJAAkACQAJAAkAgAS0ADCIFDgMBAAIBCyADIAIQ7hwgACADKQIANwIAIANBAiADLQAMazoADCAAQQhqIANBCGopAgA3AgAgASgCBCEEDAcLIARFDQEMAgsgBEUNAQsgASgCBCIEIAEoAgggAigCBCIGIAIoAggiAhDrGEH/AXEOAgIDAQsgA0EIaiABQQhqKAIANgIAIAMgASkCADcDACADQRRqIAMgAigCBCACKAIIENILIAAgBSADQRRqEJETDAQLIANBCGogAUEIaigCADYCACADIAEpAgA3AwAgA0EUaiAGIAIgAxCpByAAQQIgBWsgA0EUahCREwwDCyAAQQhqQQApAsjfggE3AgAgAEEAKQLA34IBNwIADAELIANBIGpBCGogAUEIaigCADYCACADIAEpAgA3AyAgA0EgaiAGIAIQ8h0gACAFIANBIGoQkRMMAQsgASgCACAEELEgCyADQTBqJAALsgMBAn8jAEHgAGsiAyQAAkACQAJAAkACQCABKAIALQAUIgRBAkYNACAEQQFxRQ0BCwJAAkACQAJAIAItABgOAwABAgALIANBOGpBpOeIAUGk64gBEJ0LIANBCGogA0E4ahDdEwwCCyADQThqQdTmiAFBpOeIARCdCyADQQhqIANBOGoQ3RMMAQsgA0E4akG8togBQdTmiAEQnQsgA0EIaiADQThqEN0TCyADQThqIAEoAgQgASgCCCACIANBCGoQqBcgA0EoakEIaiIBIANBOGpBDGopAgA3AwAgAyADKQI8NwMoAkAgAygCOCIEQYCAgIB4Rg0AIAAgAykCTDcCFCAAQSRqIANBOGpBJGooAgA2AgAgAEEcaiADQThqQRxqKQIANwIAIABBDGogASkDADcCACAAIAMpAyg3AgQgACAENgIADAQLIANBGGpBCGogASkDADcDACADIAMpAyg3AxggAi0AGQ0BDAILQYTBhQFBKEGswYUBEN0XAAsgA0EYahDwBAsgACADKQMYNwIEIABBgICAgHg2AgAgAEEMaiADQSBqKQMANwIACyADQeAAaiQAC4gDAQN/AkACQAJAIAEoAgQiAiABKAIQRg0AAkAgACgCFCICIAAoAgxHDQAgAEEMakHIoIUBEKEWCyAAIAJBAWoiAzYCFCAAKAIQIgQgAkEYbGoiACABKQIANwIAIABBCGogAUEIaikCADcCACAAQRBqIAFBEGopAgA3AgAgA0ECSQ0BAkAgA0EVSQ0AIAQgAxC9DA8LIAJBGGwhAEEAIQEDQCAEIAFBGGoiASAEahD4CCAAIAFHDQAMAgsLIAJBf2oiAiAAKAIIIgNPDQECQCAAKAIEIAJBDGxqIgAoAggiAiAAKAIARw0AIABB6KCFARChFgsgACgCBCACQRhsaiIDIAEpAgA3AgAgA0EQaiABQRBqKQIANwIAIANBCGogAUEIaikCADcCACAAIAJBAWoiATYCCCABQQJJDQAgACgCBCEAAkAgAUEVSQ0AIAAgARC9DA8LIAJBGGwhAkEAIQEDQCAAIAFBGGoiASAAahD4CCACIAFHDQALCw8LIAIgA0HYoIUBELMRAAuaAwEEfwJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAKAIEQQFHDQMgACgCCCABEKgBDwsgACgCBCABEKgBDwsgASAAKAIEIgJBwABqEPsIAkAgAkGEAWooAgAiA0UNACACQYABaigCACIAIANB2ABsaiEEA0ACQAJA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AkACQAJAAkAgAygCAA4HBQABAgMFBAULIANBDGooAgAiAkUNBCADQQhqKAIAIQAgAkEobCECA0ACQCAAKAIAQQdGDQAgACABEPMICyAAQShqIQAgAkFYaiICDQAMBQsLIAMoAgQgARDzCAwDCyADQQxqKAIAIgBFDQIgA0EIaigCACEFIABBOGwhBkEAIQADQAJAAkACQAJAIAUgAGoiAigCAA4DAAECAAsCQCACQQhqKAIAQQNHDQAgAS0AAA0AIAJBDGooAgAgARCVAQsgAkEoaigCACABEPMIDAILIAJBMGooAgAiAkUNASABLQAADQEgAiABEJUBDAELIAJBBGooAgAgARDzCAsgBiAAQThqIgBHDQAMAwsLIAMoAgQgARDzCCABLQAADQEgAygCCCABEJUBDAELIAEtAAANACADKAIEIAEQlQELAkAgAygCMCIARQ0AIAEtAAANACAAIAEQlQELIANBOGoiAyAERw0ACwsLmAMBBX8CQCAAKAIIIgJFDQAgACgCBCIDIAJBOGxqIQQDQAJAAkACQAJAAkACQCADKAIADgcFAAECAwUEBQsgA0EMaigCACICRQ0EIANBCGooAgAhACACQShsIQIDQAJAIAAoAgBBB0YNACAAIAEQ8wgLIABBKGohACACQVhqIgINAAwFCwsgAygCBCABEPMIDAMLIANBDGooAgAiAEUNAiADQQhqKAIAIQUgAEE4bCEGQQAhAANAAkACQAJAAkAgBSAAaiICKAIADgMAAQIACwJAIAJBCGooAgBBA0cNACABLQAADQAgAkEMaigCACABEJUBCyACQShqKAIAIAEQ8wgMAgsgAkEwaigCACICRQ0BIAEtAAANASACIAEQlQEMAQsgAkEEaigCACABEPMICyAGIABBOGoiAEcNAAwDCwsgAygCBCABEPMIIAEtAAANASADKAIIIAEQlQEMAQsgAS0AAA0AIAMoAgQgARCVAQsCQCADKAIwIgBFDQAgAS0AAA0AIAAgARCVAQsgA0E4aiIDIARHDQALCwu7AwIBfwF+AkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgoAAQIDBAUGBwgJCgsgAEEIahDPEg8LIAAoAigiARDZASABQcAAQQgQnhIgAEEIahCDDw8LAkAgACgCCA0AIAApAxAiAkIDg0IAUg0IIAKnIgAg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tOeEARCzEQALwwMCA38DfgJAAkAgAUERSQ0AIAFBcGohA0EAIQRCxObBm+DF4owTIQZC05GMrYjR2p8kIQcDQCAGIQggACAEaiIFQQhqKQAAQtDj/MyihM6EpH+FIgZC/////w+DIAUpAAAgB4UiB0IgiH5CIIkgBkIgiCAHQv////8Pg36FIQYgCCEHIARBEGoiBCADSQ0ACyAAIANqIgQpAAggBoUhBiAEKQAAIAiFIQcMAQsCQCABQQdLDQACQAJAIAFBA0sNACABDQFC05GMrYjR2p8kIQdCxObBm+DF4owTIQYMAwsgADUAAELTkYytiNHanySFIQcgACABakF8ajUAAELE5sGb4MXijBOFIQYMAgsgACABakF/ajEAAEIIhiAAIAFBAXZqMQAAhELE5sGb4MXijBOFIQYgADEAAELTkYytiNHanySFIQcMAQsgACkAAELTkYytiNHanySFIQcgACABakF4aikAAELE5sGb4MXijBOFIQYLIAIgAigCACAHQv////8PgyAGQiCIfiABrYUgB0IgiCAGQv////8Pg35CIImFIganakHdy92eeWwgBkIgiKdqQcnB+P0AbEGj7rmcBGo2AgALlAMBAX8jAEEwayIEJAAgBCADOgAXIARBCGpBCEEIQTBBtL2bARDYFCAEQQA2AiAgBCAEKQMINwIYAkACQAJAAkACQAJAAkAgAkUNACABLQDIAUH/AXFBwABHDQAgASgCxAEiAyABKALAASICa0EMRw0AIAQgASACIAMQqhcgBCgCACIDIAQoAgQiAkHEvZsBQQwQmRwNAiADIAJB0L2bAUEMEJkcIQMgBCAEQS9qNgIoIAQgBEEXajYCJCADRQ0BDAMLIAQgBEEvajYCKCAEIARBF2o2AiQLIARBJGogASAEQRhqEIsFIgNFDQIMAwsgBCAEQS9qNgIoIAQgBEEXajYCJAsgASABKAJ4IgJBCHI2AnggBEEkaiABIARBGGoQiwUhAyABIAI2AnggAw0BCwJAIAEtAMgBQaMBRg0AIAQtABdB/wFxQaQBRg0AIAEQhw4LIAAgBCkCGDcCACAAQQhqIARBGGpBCGooAgA2AgAMAQsgAEGAgICAeDYCACAAIAM2AgQgBEEYahDJHQsgBEEwaiQAC6YDAQN/IwBBwABrIgMkACADQSRqIAJBCGooAgA2AgAgAyABNgIYIAMgAikCADcCHCADQRxqIQICQAJAAkAgAS0AyAFB3wBHDQAgASgCwAEhBAJAIAEQogtB/wFxDQAgA0EIaiABEL8IIAMoAgwhBQJAIAMoAghBAXFFDQAgAEETNgIAIAAgBTYCBAwECwJAIAEtAMgBQQZHDQAgARCHDgsgACAENgIIIAAgBTYCBCAAQRI2AgAgACABKAK8ATYCDAwDCyABLQDIAUHfAEcNACABEKILQf8BcUEIRw0AIANBEGogARC/CCADKAIUIQUgAygCEEEBcUUNASAAQRM2AgAgACAFNgIEDAILIAEoAsQBIQQgASgCwAEhBSADQceAgIB4NgIoIAUgBCADQShqEIUVIQQCQCABLQDIAUGiAUcNACABEMcRIQUgARCHDiABIAUQ5RELIABBEzYCACAAIAQ2AgQMAQsCQCABLQDIAUEGRw0AIAEQhw4LIAAgBDYCCCAAIAU2AgQgAEESNgIAIAAgASgCvAE2AgwLIAIQzB0gA0HAAGokAAuUAwEBfyMAQTBrIgQkACAEIAM6ABcgBEEIakEIQQhBOEG0vZsBENgUIARBADYCICAEIAQpAwg3AhgCQAJAAkACQAJAAkACQCACRQ0AIAEtAMgBQf8BcUHAAEcNACABKALEASIDIAEoAsABIgJrQQxHDQAgBCABIAIgAxCqFyAEKAIAIgMgBCgCBCICQcS9mwFBDBCZHA0CIAMgAkHQvZsBQQwQmRwhAyAEIARBL2o2AiggBCAEQRdqNgIkIANFDQEMAwsgBCAEQS9qNgIoIAQgBEEXajYCJAsgBEEkaiABIARBGGoQ6AQiA0UNAgwDCyAEIARBL2o2AiggBCAEQRdqNgIkCyABIAEoAngiAkEIcjYCeCAEQSRqIAEgBEEYahDoBCEDIAEgAjYCeCADDQELAkAgAS0AyAFBowFGDQAgBC0AF0H/AXFBpAFGDQAgARCHDgsgACAEKQIYNwIAIABBCGogBEEYakEIaigCADYCAAwBCyAAQYCAgIB4NgIAIAAgAzYCBCAEQRhqEMgdCyAEQTBqJAALkQMBA38jAEEgayIGJAACQAJAIAEoAiQiBy0A4gJBAUcNACAHLQDjAkUNACAFIAcoAsQCKAIQQQF0IghPDQACQAJAAkACQCAHKALcAkEBRw0AIAZCADcCGCAGQQxqIAEgAiADIAZBGGpBAhD/ByAGKAIQIQECQCAGKAIMIgNBAkcNACAAQQI2AgAgACABNgIEDAYLIAVBA08NAQJAIAVBAnQiBUUNACAEIAZBGGogBfwKAAALIAAgATYCBCAAIAM2AgAMBQsgBkEMaiAIQYD4gwEQzA8gBkEYaiABIAIgAyAGKAIQIgcgBigCFCIIEP8HIAYoAhwhASAGKAIYIgNBAkYNAiAFIAhLDQECQCAFQQJ0IgVFDQAgBCAHIAX8CgAACyAAIAE2AgQgACADNgIAIAYoAgwgB0EEQQQQtREMBAsgBUECQfD3gwEQjyAACyAFIAhBkPiDARCPIAALIABBAjYCACAAIAE2AgQgBigCDCAHQQRBBBC1EQwBCyAAIAEgAiADIAQgBRD/BwsgBkEgaiQAC/QCAgJ/An4CQCABRQ0AA0ACQAJAAkACQCAAKQMAIgRCfnwiBUICIAVCAlQbpw4CAQIACyAAQQhqIQICQAJAIARCAFINACACKQMAIgVCA4NCAFINASAFpyICIAIoAgAiA0F/ajYCACADQQFHDQEgAiACKAIQEMEbDAELIAIQpxALIABBIGopAwAiBUICUQ0CIABBKGohAgJAIAVCAFINACACKQMAIgVCA4NCAFINAyAFpyICIAIoAgAiA0F/ajYCACADQQFHDQMgAiACKAIQEMEbDAMLIAIQpxAMAgsgAEEQaiECAkAgAEEIaigCAA0AIAIpAwAiBUIDg0IAUg0CIAWnIgIgAigCACIDQX9qNgIAIANBAUcNAiACIAIoAhAQwRsMAgsgAhCnEAwBCyAAQQhqKQMAIgVCA4NCAFINACAFpyICIAIoAgAiA0F/ajYCACADQQFHDQAgAiACKAIQEMEbCyAAQdAAaiEAIAFBf2oiAQ0ACwsLjAMBB38jAEEgayICJAAgASABKAJoIgNBAWo2AmggASABKAJcIgRBf2oiBTYCXCABIAEoAlgiBkEBaiIHNgJYAkACQAJAIAVFDQAgBy0AACIFQfwARg0BIAVBPUcNACAAQYDOADsBACABIANBAmo2AmggASAEQX5qNgJcIAEgBkECajYCWAwCCyAAQYAoOwEADAELIAEtABwhCCABIANBAmo2AmggASAEQX5qIgU2AlwgASAGQQJqIgc2AlgCQAJAAkAgBUUNACAHLQAAQT1GDQELIAhBAXFFDQEgByAFQfzEmQFBBhCgHEUNASACQZyBgIB4NgIIIAEgAyADQQdqIgUgAkEIahCiEyABQQUQiAICQCABKAJcRQ0AA0AgASABKAJYLQAAQQJ0QYDumQFqKAIAEQQARQ0BIAEoAlwNAAsLIAAgAyAFIAJBCGoQlB0MAgsgAEGA1gA7AQAgASADQQNqNgJoIAEgBEF9ajYCXCABIAZBA2o2AlgMAQsgAEGA8gA7AQALIAJBIGokAAv9AgIGfwN+AkAgACgCDA0AQQAPCwJAIAEpAwAiCEIDg0IAUg0AIAinKQMIIQgLIAinQd3L3Z55bCAIQiCIp2pB3cvdnnlsIAEoAggiAmpB3cvdnnlsIQMCQCABKQMQIghCA4NCAFINACAIpykDCCEICyABQRBqIQQgAyAIp2pB3cvdnnlsIAhCIIinakHdy92eeWxBD3ciBUEZdq1CgYKEiJCgwIABfiEJIAAoAgAhAyAAKAIEIQZBACEHAkADQAJAIAMgBSAGcSIFaikAACIKIAmFIghCf4UgCEL//fv379+//358g0KAgYKEiJCgwIB/gyIIUA0AA0ACQCABIANBACAIeqdBA3YgBWogBnFrQShsaiIAQVhqELYLRQ0AIAIgAEFgaigCAEcNACAEIABBaGoQtgsNBAsgCEJ/fCAIgyIIUEUNAAsLQQAhACAKIApCAYaDQoCBgoSIkKDAgH+DUEUNASAFIAdBCGoiB2ohBQwACwsgAEFYakEAIAAbC50DAQd/IwBBIGsiAiQAIAEgASgCaCIDQQFqNgJoIAEgASgCXCIEQX9qIgU2AlwgASABKAJYIgZBAWoiBzYCWEEOIQgCQAJAIAVFDQACQAJAIActAABBU2oOEQECAgICAgICAgICAgICAgIAAgsgASADQQJqNgJoIAEgBEF+ajYCXCABIAZBAmo2AlhBICEIDAELIAEgA0ECajYCaCABIARBfmoiBTYCXCABIAZBAmoiBzYCWEEeIQggAS0AHEUNACAFRQ0AIActAABBPkcNACABIANBA2o2AmggASAEQX1qNgJcIAEgBkEDajYCWCACQaaAgIB4NgIIIAEgAyACQQhqEIsPIAFBABCIAgJAAkAgASgCXEUNAAJAA0AgASABKAJYLQAAQQJ0QYDumQFqKAIAEQQAIQUgASgCXCEIIAVFDQEgCA0ACwsgAUEAOgCDASAIRQ0BIAAgASABKAJYLQAAQQJ0QezlmQFqKAIAEQcADAMLIAFBADoAgwELIABBgMYCOwEADAELIABBADoAACAAIAg6AAELIAJBIGokAAvcAgEFf0EAIQFBAEERIABBr7AESRsiAiACQQhyIgIgAkECdEHUgIIBaigCAEELdCAAQQt0IgJLGyIDIANBBHIiAyADQQJ0QdSAggFqKAIAQQt0IAJLGyIDIANBAnIiAyADQQJ0QdSAggFqKAIAQQt0IAJLGyIDIANBAWoiAyADQQJ0QdSAggFqKAIAQQt0IAJLGyIDIANBAWoiAyADQQJ0QdSAggFqKAIAQQt0IAJLGyIDQQJ0QdSAggFqKAIAQQt0IgQgAkYgBCACSWogA2oiA0ECdEHUgIIBaiIFKAIAQRV2IQJB7wUhBAJAAkAgA0EgSw0AIAUoAgRBFXYhBCADRQ0BCyAFQXxqKAIAQf///wBxIQELAkAgBCACQQFqRg0AIAAgAWshAyAEQX9qIQRBACEAA0AgACACQZvggAFqLQAAaiIAIANLDQEgBCACQQFqIgJHDQALCyACQQFxC6sDAQN/IwBBIGsiByQAAkACQCAAKAIAIgggASACIAAoAgQoAgwiCREMAEUNAEEBIQIMAQsCQAJAIAAtAApBgAFxDQBBASECIAhBsLqbAUEBIAkRDAANAiADIAAgBBEIAEUNAQwCCwJAIAhB/Y+BAUECIAkRDABFDQBBASECDAILQQEhAiAHQQE6AA8gB0Hgj4EBNgIUIAcgACkCADcCACAHIAApAgg3AhggByAHQQ9qNgIIIAcgBzYCECADIAdBEGogBBEIAA0BIAcoAhBB+4+BAUECIAcoAhQoAgwRDAANAQsCQAJAIAAtAApBgAFxDQACQCAAKAIAQdOOmAFBAiAAKAIEKAIMEQwARQ0AQQEhAgwDC0EBIQIgBSAAIAYRCABFDQEMAgtBASECIAdBAToADyAHQeCPgQE2AhQgByAAKQIANwIAIAcgACkCCDcCGCAHIAdBD2o2AgggByAHNgIQIAUgB0EQaiAGEQgADQEgBygCEEH7j4EBQQIgBygCFCgCDBEMAA0BCyAAKAIAQbP9nAFBASAAKAIEKAIMEQwAIQILIAdBIGokACACC9wCAQV/QQAhAUEAQRogAEHA2gVJGyICIAJBDWoiAiACQQJ0QYD/gQFqKAIAQQt0IABBC3QiAksbIgMgA0EHaiIDIANBAnRBgP+BAWooAgBBC3QgAksbIgMgA0EDaiIDIANBAnRBgP+BAWooAgBBC3QgAksbIgMgA0ECaiIDIANBAnRBgP+BAWooAgBBC3QgAksbIgMgA0EBaiIDIANBAnRBgP+BAWooAgBBC3QgAksbIgNBAnRBgP+BAWooAgBBC3QiBCACRiAEIAJJaiADaiIDQQJ0QYD/gQFqIgUoAgBBFXYhAkHrCyEEAkACQCADQTNLDQAgBSgCBEEVdiEEIANFDQELIAVBfGooAgBB////AHEhAQsCQCAEIAJBAWpGDQAgACABayEDIARBf2ohBEEAIQADQCAAIAJBsNSAAWotAABqIgAgA0sNASAEIAJBAWoiAkcNAAsLIAJBAXEL8wICB38CfiMAQRBrIgIkACABKAIAIQMCQAJAAkAgASgCCCIEIAEoAgQiBU8NACADIARqLQAAQd8ARg0BCyAEIAUgBCAFSxshBkIAIQkCQAJAA0ACQCAEIAVPDQAgAyAEai0AAEHfAEYNAwsCQAJAAkAgBiAERg0AIAMgBGotAAAiB0FQaiIIQf8BcUEKSQ0CIAdBn39qQf8BcUEaSQ0BIAdBv39qQf8BcUEaTw0AIAdBY2ohCAwCCyAAQQA6AAEMAwsgB0Gpf2ohCAsgASAEQQFqIgQ2AgggAiAJQgBCPkIAEOUPAkAgAikDCFANACAAQQA6AAEMAgsgAikDACIKIAitQv8Bg3wiCSAKWg0ACyAAQQA6AAELQQEhCAwCC0EBIQggASAEQQFqNgIIAkAgCUJ/UQ0AIAAgCUIBfDcDCEEAIQgMAgsgAEEAOgABDAELIABCADcDCCABIARBAWo2AghBACEICyAAIAg6AAAgAkEQaiQAC4cDAgR/AX4jAEEgayIBJAACQAJAAkAgACgCACICRQ0AIAAoAggiAyAAKAIETw0AAkACQAJAAkAgAiADai0AACICQckARg0AIAJBwgBHDQQgACADQQFqNgIIIAEgABDiDSABKAIADQEgACgCECICRQ0CIAJB5LSXAUHUtJcBIAEtAARBAXEiAxtBGUEQIAMbEO0FRQ0CQQIhAgwGCyAAIANBAWo2AghBAiECIABBABD2AUUNBAwFCyAAKAIQRQ0BIAApAgAhBSAAIAEpAgA3AgAgAUEQakEIaiIDIABBCGoiAikCADcDACACIAFBCGopAgA3AgAgASAFNwMQIAAQ6gchBCACIAMpAwA3AgAgACABKQMQNwIAIARB/wFxIQIMBAsgACABKQIANwIAIABBCGogAUEIaikCADcCAAtBACECDAILQQJBACAAQQAQ9gEbIQIMAQsCQCAAKAIQIgNFDQAgA0Gsl5sBQQEQ7QUNAQtBAkEBIAAQswhBAXEbIQILIAFBIGokACACC4ADAQR/IwBB0ABrIgIkAAJAAkACQAJAIAAtAAAiAEEgRw0AIAEoAgBBiJ2FAUEDIAEoAgQoAgwRDAAhAAwBC0EAIQMgAkEQakEAOwEAIAJCADcDCCACQRhqQQRqIAAQpA8CQCACLQAhIgQgAi0AICIATQ0AIAAgAkEYampBBGohBSAEIABrQf8BcSEDQQAhAANAIABBCkYNAyACQQhqIABqIAUgAGotAAAiBEFgaiAEIARBn39qQf8BcUEGSRsgBCAAQQFLGzoAACADIABBAWoiAEcNAAsLIAJBxABqIAJBCGogAxDFBCACKAJEQQFGDQIgAiACKQJINwI8IAJBDDYCOCACQQE2AhwgAkGY75sBNgIYIAJCATcCJCACIAJBPGo2AjQgAiACQTRqNgIgIAEoAgAgASgCBCACQRhqEM4FIQALIAJB0ABqJAAgAA8LQQpBCkGAvoABELMRAAsgAiACKQJINwMYQdSkmwFBKyACQRhqQZCZgAFB8L2AARDoDwALhAMBCn8jAEEwayICJAAgAUG0A2ohAyABKALEAyEEIAEoAsgDIQUgASgCkAYhBiABKAKMBiEHQQAhCEEAIQkCQAJAAkACQANAIAJBEGogAyAHIAkgChD3DyACKAIUIQogAigCECEJIAJBCGogAyAGIAggCxD3DyACKAIIIQgCQAJAIAlBAXFFDQAgCEEBcQ0BDAYLIAhBAXENBSACQRhqIAMgByAGELsHAkACQCACKAIYIgpBA0YNACAAIAIpAhw3AgQgAEEUaiACQRhqQRRqKAIANgIAIABBDGogAkEYakEMaikCADcCAAwBCyAGIAEoArwDIgpPDQMgASgCuAMgBkEUbGpBADYCDEEDIQoLIAAgCjYCACACQTBqJAAPCyAKIAVPDQIgAigCDCILIAVPDQMgBCALQQlsaiAEIApBCWxqKAABNgABDAALCyAGIApB1LWAARCzEQALIAogBUHktYABELMRAAsgCyAFQfS1gAEQsxEAC0Gyo5sBQShBhLaAARDdFwAL8QIBCH8jAEEgayIEJAAgBEEIaiAAIAEgAyABIAMgAUkbIgVBoOuCARCKESAEKAIUIQYgBCgCECEHIAQoAgghASAEKAIMIQAgBEEIaiACIAMgBUGw64IBEIsRIAQoAgwiAyAAIAMgAEkbIQMgBCgCFCEIIAQoAhAhAiAEKAIIIQBBACEFAkADQCADRQ0BIAEgASgCACIJIAAoAgAiCmsiCyAFQf8BcSIFazYCACAJIApJIAsgBUlyIQUgA0F/aiEDIABBBGohACABQQRqIQEMAAsLAkACQAJAIAVB/wFxRQ0AIAZBAnQhAQNAIAFFDQIgByAHKAIAIgNBf2o2AgAgAUF8aiEBIAdBBGohByADRQ0ACwsgCEECdCEBA0AgAUUNAiABQXxqIQEgAigCACEDIAJBBGohAiADRQ0ACwsgBEEANgIYIARBATYCDCAEQfTrggE2AgggBEIENwIQIARBCGpB/OuCARCFGwALIARBIGokAAuAAwEEfyMAQdAAayICJAACQAJAIAAtAAAiA0EgRw0AIAEoAgBBiJ2FAUEDIAEoAgQoAgwRDAAhAAwBC0EAIQAgAkEQakEAOwEAIAJCADcDCCACQRhqQQRqIAMQpA9BACACLQAhIgMgAi0AICIEayIFIAUgA0sbIQUgAkEYaiAEaiEEAkACQAJAA0AgBSAARg0BIABBCkYNAiACQQhqIABqIAQgAGpBBGotAAAiA0FgaiADIABBAUsbIAMgA0Gff2pB/wFxQQZJGzoAACAAQQFqIQAMAAsLIAJBxABqIAJBCGogABDFBCACKAJEQQFGDQEgAiACKQJINwI8IAJBDDYCOCACQQE2AhwgAkGY75sBNgIYIAJCATcCJCACIAJBPGo2AjQgAiACQTRqNgIgIAEoAgAgASgCBCACQRhqEM4FIQAMAgtBCkEKQczPhAEQsxEACyACIAIpAkg3AxhB1KSbAUErIAJBGGpBqOiDAUG8z4QBEOgPAAsgAkHQAGokACAAC4ADAQR/IwBB0ABrIgIkAAJAAkACQAJAIAAtAAAiAEEgRw0AIAEoAgBBiJ2FAUEDIAEoAgQoAgwRDAAhAAwBC0EAIQMgAkEQakEAOwEAIAJCADcDCCACQRhqQQRqIAAQpA8CQCACLQAhIgQgAi0AICIATQ0AIAAgAkEYampBBGohBSAEIABrQf8BcSEDQQAhAANAIABBCkYNAyACQQhqIABqIAUgAGotAAAiBEFgaiAEIARBn39qQf8BcUEGSRsgBCAAQQFLGzoAACADIABBAWoiAEcNAAsLIAJBxABqIAJBCGogAxDFBCACKAJEQQFGDQIgAiACKQJINwI8IAJBDDYCOCACQQE2AhwgAkGY75sBNgIYIAJCATcCJCACIAJBPGo2AjQgAiACQTRqNgIgIAEoAgAgASgCBCACQRhqEM4FIQALIAJB0ABqJAAgAA8LQQpBCkGAnoUBELMRAAsgAiACKQJINwMYQdSkmwFBKyACQRhqQcj8hAFB8J2FARDoDwAL/QICBn8EfiMAQTBrIgIkAAJAAkACQCABLQAUIgNBAkYNACABKAIQIQQgASgCDCEFIAEoAgghBgJAIAEpAwAiCEIDg0IAUg0AIAinIgEgASgCACIBQQFqNgIAIAFBf0wNAwsgACAENgIQIAAgBTYCDCAAIAY2AgggACAINwMADAELQQAtAMDxnQEaQTAQhQEiA0UNASABKAIAIgEoAhQhBCABKAIQIQUgAkEYaiABQRhqEPAHIAEoAgwhBiABKAIIIQcCQCABKQMAIghCA4NCAFINACAIpyIBIAEoAgAiAUEBajYCACABQX9MDQILIAJBEGogAkEYakEQaikDACIJNwMAIAJBCGogAkEYakEIaikDACIKNwMAIAIgAikDGCILNwMAIAMgBDYCFCADIAU2AhAgAyAGNgIMIAMgBzYCCCADIAg3AwAgAyALNwMYIANBIGogCjcDACADQShqIAk3AwAgACADNgIAQQIhAwsgACADOgAUIAJBMGokAA8LAAuWAwEGfyMAQTBrIgIkAAJAAkACQAJAAkAgACgCBCIDDgMEAQIAC0EBIQQgASgCACIFQcyOmAFBByABKAIEIgYoAgwiBxEMAA0CIANBA3QhASAAKAIAIQBBACEDA0ACQCABDQBBACEEDAQLIAIgADYCFAJAIANFDQAgBUHTjpgBQQIgBxEMAA0ECyACQQI2AhwgAkGcjpgBNgIYIAJCATcCJCACQQs2AgggAiACQQRqNgIgIAIgAkEUajYCBCAFIAYgAkEYahC3Hg0DIABBCGohACADQX9qIQMgAUF4aiEBDAALCyACQQI2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AkACQAJAAkAgAL0iA0KAgICAgICACFMNACADQv/////////3/wBWDQNBgXghAQJAIANCIIgiBEKAgMD/A1ENACAEpyECDAILQYCAwP8DIQIgA6cNAUQAAAAAAAAAAA8LAkAgAEQAAAAAAAAAAGINAEQAAAAAAADwvyAAIACiow8LIANCAFMNASAARAAAAAAAAFBDor0iA0IgiKchAkHLdyEBCyACQeK+JWoiAkH//z9xQZ7Bmv8Daq1CIIYgA0L/////D4OEv0QAAAAAAADwv6AiACAAIABEAAAAAAAA4D+ioiIFob1CgICAgHCDvyIGRAAAIGVHFfc/oiIHIAJBFHYgAWq3IgigIgkgByAIIAmhoCAAIAahIAWhIAAgAEQAAAAAAAAAQKCjIgAgBSAAIACiIgcgB6IiACAAIABEn8Z40Amawz+iRK94jh3Fccw/oKJEBPqXmZmZ2T+goiAHIAAgACAARERSPt8S8cI/okTeA8uWZEbHP6CiRFmTIpQkSdI/oKJEk1VVVVVV5T+goqCgoqAiAEQAACBlRxX3P6IgACAGoEQAou8u/AXnPaKgoKAPCyAAIAChRAAAAAAAAAAAoyEACyAAC4sDAQV/IwBBIGsiAyQAAkACQCACLQAMIgRBAUcNACAAIAEpAgA3AgAgAEEIaiABQQhqKQIANwIAIAIoAgAgAigCBBCxIAwBCwJAAkACQAJAAkACQCABLQAMIgUOAwEAAgELIAAgAikCADcCACAAQQhqIAJBCGopAgA3AgAgASgCBCEGDAQLIARFDQEMAgsgBEUNAQsgA0EQaiABIAIQkw8gACAFIANBEGoQkRMMAgsCQAJAAkAgASgCBCIGIAEoAgggAigCBCIHIAIoAggQ6xhB/wFxDgIBAgALIANBEGpBCGogAkEIaigCADYCACADIAIpAgA3AxAgA0EEaiADQRBqIAEQ3BkgACAEIANBBGoQkRMMAwsgAEEIakEAKQLI34IBNwIAIABBACkCwN+CATcCACACKAIAIAcQsSAMAQsgA0EQakEIaiABQQhqKAIANgIAIAMgASkCADcDECADQQRqIANBEGogAhDcGSAAIAUgA0EEahCREwwBCyABKAIAIAYQsSALIANBIGokAAv2AgEDfyMAQRBrIgYkAAJAAkACQAJAAkACQCABKAIkIgctAOICDQAgBkEIaiAB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KAIEQdgAaiEEDAELIAFBEGohBAsgACAEKQIANwIMIABBFGogBEEIaigCADYCAAsCQAJAAkACQAJAAkACQAJAAkAgAkECIAJBCEkbDggAAQIDBAUGBwALIAFBBGohAgwHCyABQQhqIQIMBgsgAUHAAGohAgwFCyABQQRqIQIMBAsgAUEgaiECDAMLIAFBBGohAgwCCyABKAIEQdgAaiECDAELIAFBEGohAgsgACACKQIMNwIYIABBIGogAkEUaigCADYCAAJAIAMgACgCAEcNACAAEJsWCwJAQdgARQ0AIAAoAgQgA0HYAGxqIAFB2AD8CgAACyAAIANBAWo2AggL8AICCX8BfiMAQcAAayICJAAgASgCBCEDIAIgASgCCCIEQQRBEBDMDSACKAIEIQUCQAJAIAIoAgBBAUYNACACKAIIIQYCQCAFRQ0AIARBBHQhByAGIQggBSEJA0AgB0UNAUEALQDA8Z0BGiADKQIEIQsgAygCACEKQcAAEIUBIgFFDQMgAiADKAIMEEQgAUE4aiACQThqKQMANwMAIAFBMGogAkEwaikDADcDACABQShqIAJBKGopAwA3AwAgAUEgaiACQSBqKQMANwMAIAFBGGogAkEYaikDADcDACABQRBqIAJBEGopAwA3AwAgAUEIaiACQQhqKQMANwMAIAEgAikDADcDACAIQQxqIAE2AgAgCEEEaiALNwIAIAggCjYCACAIQRBqIQggB0FwaiEHIANBEGohAyAJQX9qIgkNAAsLIAAgBDYCCCAAIAY2AgQgACAFNgIAIAJBwABqJAAPCyAFIAIoAghBiJ+aARCqHgsAC+4CAQp/IwBBwABrIgIkACABKAIEIQMgAiABKAIIIgRBBEEMEMwNIAIoAgQhBQJAAkAgAigCAEEBRg0AIAIoAgghBgJAIAVFDQAgBEEMbCEHIAYhCCAFIQkDQCAHRQ0BQQAtAMDxnQEaIAMoAgghCiADKAIEIQtBwAAQhQEiAUUNAyACIAMoAgAQRCABQThqIAJBOGopAwA3AwAgAUEwaiACQTBqKQMANwMAIAFBKGogAkEoaikDADcDACABQSBqIAJBIGopAwA3AwAgAUEYaiACQRhqKQMANwMAIAFBEGogAkEQaikDADcDACABQQhqIAJBCGopAwA3AwAgASACKQMANwMAIAhBCGogCjYCACAIQQRq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IAJBIGogARCyBgJAIAIoAiBBgICAgHhGDQAgAkEQakEIaiACQSBqQQhqKAIANgIAIAIgAikCIDcDECACQQhqIAJBEGpB9MWFARDyEAJAAkAgAigCDCIDRQ0AIAIoAggiBCADEMQOIQUgACADNgIIIAAgBDYCBEEBIQMMAQtBACEDEN8SIQULIAAgBTYCGCAAIAM2AgAMAgtBgICAgHggAigCJBDBHiAAIAEQ2wc2AhggAEECNgIAIABBFGogAUEQaigCADYCACAAQQxqIAFBCGopAgA3AgAgACABKQIANwIEDAILIAJBADYCPCACQoCAgIAQNwI0IAJBJGogAkE0ahDcEyACQQE2AiAgACACQSBqENsHNgIYIABBAjYCACAAQRRqIAJBMGooAgA2AgAgAEEMaiACQShqKQIANwIAIAAgAikCIDcCBAsgARDCGgsgAkHAAGokAAvtAgEEfyMAQcAAayICJAACQAJAAkAgASgCDEUNACACQSBqIAEQsgYCQCACKAIgQYCAgIB4Rg0AIAJBEGpBCGogAkEgakEIaigCADYCACACIAIpAiA3AxAgAkEIaiACQRBqQfTFhQEQ8hACQAJAIAIoAgwiA0UNACACKAIIIgQgAxDEDiEFIAAgAzYCCCAAIAQ2AgRBASEDDAELQQAhAxDfEiEFCyAAIAU2AhggACADNgIADAILIAEQ2wchAyAAQQI2AgAgACADNgIYIAAgASkCADcCBCAAQQxqIAFBCGopAgA3AgAgAEEUaiABQRBqKAIANgIADAILIAJBADYCPCACQoCAgIAQNwI0IAJBJGogAkE0ahDcEyACQQE2AiAgAkEgahDbByEDIABBAjYCACAAIAM2AhggACACKQIgNwIEIABBDGogAkEoaikCADcCACAAQRRqIAJBMGooAgA2AgALIAEQwhoLIAJBwABqJAAL6QIBBn8jAEEQayIBJAACQAJAAkACQCAAKAIAIgJFDQBBACEDA0ACQCAAKAIIIgQgACgCBCIFTw0AIAIgBGotAABBxQBHDQAgACAEQQFqNgIIDAILAkACQAJAAkAgA0UNACAAKAIQIgZFDQAgBkHTjpgBQQIQ7QUNByAAKAIAIgJFDQEgACgCCCEEIAAoAgQhBQsgBCAFTw0AAkAgAiAEai0AAEG1f2oOAgIAAQsgACAEQQFqNgIIIAEgABDp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QAJAAkAgASgCAA4FBAABAgMECyABKAIEQQFHDQMgASgCCCAAEKgBDAMLIAEoAgQgABCoAQwCCyAAIAEoAgQiA0HAAGoQ+wgCQCADQYQBaigCACIERQ0AIANBgAFqKAIAIQEgBEHYAGwhBANAAkACQAJAIAEoAgBBfGoOAgIAAQsgAUEEaigCACAAEKgBDAELIAEgABDTCQsgAUHYAGohASAEQah/aiIEDQALCwJAIANBmAFqKAIAIgRFDQAgA0GUAWooAgAhASAEQShsIQQDQCABIAAQpgcgAUEoaiEBIARBWGoiBA0ACwsgAy0APEEGRg0BIAAgA0EQahD7CAwBCyABKAIMIQQgASgCCCEBIAIgADYCDCAERQ0AIARBKGwhAANAIAJBDGogARDSCCABQShqIQEgAEFYaiIADQALCyACQRBqJAAL1gICBn8BfiMAQSBrIgIkAAJAAkACQCABLQAUIgNBAkYNACABKAIQIQQgASgCDCEFIAEoAgghBgJAIAEpAwAiCEIDg0IAUg0AIAinIgEgASgCACIBQQFqNgIAIAFBf0wNAwsgACAENgIQIAAgBTYCDCAAIAY2AgggACAINwMADAELQQAtAMDxnQEaQTAQhQEiA0UNASABKAIAIgEoAhQhBCABKAIQIQUgAkEIaiABQRhqENMIIAEoAgwhBiABKAIIIQcCQCABKQMAIghCA4NCAFINACAIpyIBIAEoAgAiAUEBajYCACABQX9MDQILIAMgAikDCDcDGCADQShqIAJBGGopAwA3AwAgA0EgaiACQRBqKQMANwMAIAMgBDYCFCADIAU2AhAgAyAGNgIMIAMgBzYCCCADIAg3AwAgACADNgIAQQIhAwsgACADOgAUIAJBIGokAA8LAAvCAgICfwJ+AkAgAUUNAANAAkACQAJAAkAgACkDACIEQn18IgWnQQFqQQAgBUICVBsOAgECAAsgAEEQaikDACIFQgODQgBSDQIgBaciAiACKAIAIgNBf2o2AgAgA0EBRw0CIAIgAigCEBDBGwwCCwJAIABBIGopAwAiBUIDg0IAUg0AIAWnIgIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAhAQwRsLIARCAlENASAAQQhqIQICQCAEQgBSDQAgAikDACIFQgODQgBSDQIgBaciAiACKAIAIgNBf2o2AgAgA0EBRw0CIAIgAigCEBDBGwwCCyACEKcQDAELIABBEGopAwAiBUIDg0IAUg0AIAWnIgIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAhAQwRsLIABByABqIQAgAUF/aiIBDQALCwuLAwEFfwN/QQAhAUEoIQJBASEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIEQXRqIgVBByAFQSZJGw4mCxAQCwABDgISCw4DCwQLBRAOBgsLCwsQCwsQEBAQDg4ODg4QCAsLCyAALQAQQXxqQf8BcUEDSQ8LIAAtABENCEEMIQIMEAtBBCECQQAhA0EAIQECQAJAIAQODAwADA8BERERDBEPCgwLQSghAgwQCyAAQQRqENEcDwsgAC0AGEEFRw0DIABBEGohAAwNCyAAKAIMRQ0FIAAoAgghAAwMCyAAKAIIQX9qQQRJDwsgAC0AKEUNAgtBASEDDAMLIABBBGoQ0RwPCyAAKAIMQQFGDQILQQAhAwsgAw8LIABBCGohAAJAA0ACQCAAKAIAIgAoAgAOBwMFBQUAAwIDCyAAQQRqIQAMAAsLIABBBGohAAwEC0EBDwtBBCECDAMLQQAhAQsgAQ8LIAAoAgAhAAwBCyAAIAJqKAIAIQAMAAsL2gICCX8BfgJAIAAoAggiAkUNACAAKAIEIgMgAkEGdGohBANAAkAgA0E4aigCACIARQ0AIANBNGooAgAhAiAAQQxsIQUDQAJAAkAgAigCACIAKAIAQRpHDQAgASgCAEEBRw0BIAEoAgQiBiAAKAIYRw0BAkACQCAAKQMIIgtCA4NCAFINACALpyIHIAcoAgAiB0EBajYCACAHQX9MDQELQQAtAMDxnQEaIAAoAhQhCCAAKAIQIQkgAC0AHCEKQcAAEIUBIgdFDQAgByAKOgAcIAcgBjYCGCAHQgA3AxAgByALNwMIIAdBGjYCACAAEMkBIAAgBzYCKCAAIAg2AiQgACAJNgIgIABCADcDGCAAQpG+ATcDECAAQQA2AgggAEEUNgIADAILAAsgACABEEYLIAJBDGohAiAFQXRqIgUNAAsLIAMgARCXAyADQcAAaiIAIQMgACAERw0ACwsLwQICA38BfiMAQSBrIgYkAAJAAkACQCACIANqIgMgAk8NAEEAIQIMAQtBACECIAQgBWpBf2pBACAEa3GtIAMgASgCACIHQQF0IgggAyAISxsiA0EIQQQgBUEBRhsiCCADIAhLGyIIrX4iCUIgiKcNACAJpyIDQYCAgIB4IARrSw0BAkACQCAHDQBBACEFIAZBHGohAgwBCyAGIAQ2AhwgByAFbCEFIAEoAgQhByAGQRhqIQILIAIgBTYCAAJAAkAgBigCHEUNAAJAIAYoAhgiBQ0AIAZBEGogBCADEOMbIAYoAhAhBQwCCyAHIAUgBCADENoDIQUMAQsgBkEIaiAEIAMQ4xsgBigCCCEFCyAEIQIgBUUNASABIAg2AgAgASAFNgIEQYGAgIB4IQILCyAAIAM2AgQgACACNgIAIAZBIGokAAvjAgEDfyMAQTBrIgQkAAJAAkACQAJAIAMoAhAiBSADKAIUIgZLDQAgAUEEaiEBAkAgAygCAEF/akECSQ0AIARBDGogASADKAIIIAMoAgwgBSAGEK0LQQAhAwJAIAQoAgxBAUcNACAEKAIQIgMgBCgCFCIBSw0DIABBADYCDCAAIAE2AgggACADNgIEQQEhAwsgACADNgIADAQLIARBDGogASADKAIIIAMoAgwgBSAGEK4LQQAhAwJAIAQoAgxBAUcNACAEKAIQIgMgBCgCFCIBSw0DIABBADYCDCAAIAE2AgggACADNgIEQQEhAwsgACADNgIADAMLIABBADYCAAwCCyAEQQA2AiggBEEBNgIcIARBxOaDATYCGCAEQgQ3AiAgBEEYakGg4oQBEIUbAAsgBEEANgIoIARBATYCHCAEQcTmgwE2AhggBEIENwIgIARBGGpBoOKEARCFGwALIARBMGokAAvEAgIKfwJ+IwBBEGsiAyQAIANBBGogAkEIQSAQzA0gAygCCCEEAkACQCADKAIEQQFGDQAgAygCDCEFAkAgBEUNACACQQV0IQYgBSEHIAQhCANAIAZFDQEgAS0AGCEJIAEoAgwhCiABKAIIIQsCQCABKQMQIg1QDQAgDUIDg0IAUg0AIA2nIgwgDCgCACIMQQFqNgIAIAxBf0wNBAsCQCABKQMAIg5CA4NCAFINACAOpyIMIAwoAgAiDEEBajYCACAMQX9MDQQLIAFBIGohASAHIA43AwAgB0EYaiAJOgAAIAdBEGogDTcDACAHQQxqIAo2AgAgB0EIaiALNgIAIAdBIGohByAGQWBqIQYgCEF/aiIIDQALCyAAIAI2AgggACAFNgIEIAAgBDYCACADQRBqJAAPCyAEIAMoAgxBiJ+aARCqHgsAC8ECAQd/IwBBIGsiAiQAAkAgAS0AJUECRg0AA0AgASgCICIBLQAlQQJHDQALCyACIAA2AgwCQCABKAIIIgNFDQAgAUEANgIIIAIgAzYCHCACQgA3AhQgAiABNgIQIAMgACACQRBqEJ0IIAMgAkEMaiACQRBqEJsGIAIoAhwhAyACKAIQIQQCQCACKAIYIgVFDQAgAyACKAIUIgZrQThsIgdFDQAgBCgCBCIIIAYgBWtBOGxqIAggBkE4bGogB/wKAAALIAQgAyAFazYCCCABKAIIIgNFDQAgASgCBCEBIANBOGwhAwNAAkAgASgCAEEJRw0AIAFBCGooAgBBEUcNACABQRBqKAIAQQdHDQAgAUEUaigCACIELQBFQQNGDQAgACAEQSBqENoICyABQThqIQEgA0FIaiIDDQALCyACQSBqJAAL3QIBBH8jAEEwayIBJAAgAEE8ahC7HyAAKAIAIAAoAgRBBEEcEK8RIABBDGoQjxMgAEHMAGoQux8gAEHcAGoQux8gAEEYahCPEwJAIAAoAjBBgICAgHhGDQAgAEEwahCPEwsgACgCKCECAkAgACgCLCIDRQ0AA0ACQCACKAIAIgRFDQAgAkEMaiACQQRqKAIAIAJBCGooAgAgBCgCEBELACACQRhqKAIAIAJBHGooAgAQniALIAJBJGohAiADQX9qIgMNAAsgACgCKCECCyAAKAIkIAJBBEEkEK8RAkACQCAAKAJsIgINAEEAIQJBACEDDAELIAEgAjYCGCABQQA2AhQgASACNgIIIAFBADYCBCABIAAoAnAiAjYCHCABIAI2AgwgACgCdCEDQQEhAgsgASADNgIgIAEgAjYCECABIAI2AgADQCABQSRqIAEQ4wYgASgCJA0ACyABQTBqJAAL0gICA38BfiMAQSBrIgQkAAJAAkAgAw0AIABBADYCCCAAQoCAgIAQNwIADAELAkACQCACrSADrX4iB0IgiKcNACAEQRRqIAenIgVBAUEBENkMIAQoAhghBgJAIAQoAhRBAUYNACAEQQA2AhAgBCAEKAIcNgIMIAQgBjYCCCAEQQhqIAEgASACahCEFCAEKAIQIQICQCADQQFGDQAgBCgCDCEGA0ACQCACRQ0AIAYgAmogBiAC/AoAAAsgAkEBdCECIANBBEkhASADQQF2IQMgAUUNAAsgBCACNgIQCyAFIAJGDQICQCAFIAJrIgNFDQAgBCgCDCIBIAJqIAEgA/wKAAALIAQgBTYCEAwCCyAGIAQoAhxBhN6CARCqHgALQYTfggFBEUGU3oIBEPISAAsgACAEKQIINwIAIABBCGogBEEIakEIaigCADYCAAsgBEEgaiQAC90CAQR/IAAoAgAiAUHAAGoQkxEgAUGAAWooAgAhAAJAIAEoAoQBIgJFDQADQAJAAkAgACgCAEEFRg0AIAAQ8ggMAQsgAEEEaigCACIDEJABIANBwABBCBCeEgsgAEHYAGohACACQX9qIgINAAsgAUGAAWooAgAhAAsgASgCfCAAQQhB2AAQrxECQCABKAJ4IgRFDQAgBEEEaigCACEAAkAgBCgCCCICRQ0AA0AgACgCACIDEKsCIANB4ABBCBCeEiAAQQRqIQAgAkF/aiICDQALIARBBGooAgAhAAsgBCgCACAAQQRBBBCvESAEQRRBBBCeEgsgAUGUAWooAgAhAAJAIAEoApgBIgJFDQADQCAAENQLIABBKGohACACQX9qIgINAAsgAUGUAWooAgAhAAsgASgCkAEgAEEIQSgQrxECQCABLQA8QQZGDQAgAUEQahCTEQsgAUGgAUEIEJ4SC9cCAQR/IAAoAgAiACgCICABELYcIABBOGogARD0FyAAKAIsQThsIQIgACgCKCEDQQAhAAJAA0AgAiAARg0BAkACQAJAAkACQAJAAkACQCADIABqIgQoAgBBfGoiBUEEIAVBB0kbDgcAAQIDBAUGAAsgBEEEaiABEIUZIARBGGooAgAgARC3HCAEQRxqKAIAIAEQthwMBgsgBEEEaiABEIUZIARBGGooAgAgARC3HCAEQRxqKAIAIAEQthwMBQsgBEEQaiABEMshIARBDGooAgAgARC3HAwECyAEQQRqIAEQyyEgBEEQaigCACABELccDAMLIARBMGogARDLISAEIAEQ0RcMAgsgBEEQaiABEMshIARBBGogARCFGSAEQRxqKAIAIAEQtxwgBEEgaigCACABELYcDAELIAEgBEEUaigCACAEQRhqKAIAEL0YCyAAQThqIQAMAAsLC/QCAQR/IwBB0ABrIgMkACABKALAASEEAkACQAJAIAEtAMgBIgVBAkcNACABEIcOIAEgASgCeCIFQf////99cTYCeCADQTBqIAEgAkEDEN4HIAEgBTYCeCADKAI0IQIgAygCMCIFQYCAgIB4Rw0BIABBgICAgHg2AgAgACACNgIEDAILIAEoAsQBIQIgA0EMaiAFEN4bIANBATYCNCADQZjvmwE2AjAgA0IBNwI8IANBigWtQiCGQeyhmwGthDcDSCADIANByABqNgI4IANBGGogA0EwahCNFSADQSxqIANBFGooAgA2AgAgAyADKQIMNwIkIAQgAiADQRhqEIUVIQICQCABLQDIAUGiAUcNACABEMcRIQUgARCHDiABIAUQ5RELIABBgICAgHg2AgAgACACNgIEDAELIAMoAjghBiAAQQA2AhQgACAENgIMIAAgBjYCCCAAIAI2AgQgACAFNgIAIAAgASgCvAE2AhALIANB0ABqJAAL5gICA38BfiMAQTBrIgIkAAJAAkACQAJAIAEtAMgBIgNBtX9qIgRBH0sNAEEBIAR0QYGAgpB4cQ0BCwJAIANBwABHDQAgAiABEKwNQgEhBQwCCyADQbR/akH/AXFB1QBJDQAgAkEYakEEciADEN4bIAJBFDYCLCACQeC/mwE2AiggAkGwgICAeDYCGCABKALAASABKALEASACQRhqEIUVIQQCQCABLQDIAUGiAUcNACABEMcRIQMgARCHDiABIAMQ5RELIABCAjcDACAAIAQ2AggMAgsgAkEYaiABEMMLIAIoAiAhAQJAIAIpAxgiBVBFDQAgAEICNwMAIAAgATYCCAwCCyACQQA2AhAgAiACKAIkNgIMIAIgATYCCCACQQA6ABQgAiAFNwMAQgAhBQsgACAFNwMAIAAgAikDADcDCCAAQRBqIAJBCGopAwA3AwAgAEEYaiACQRBqKQMANwMACyACQTBqJAALzQICA38BfiMAQSBrIgMkACABKAIMIQQgA0EQaiACIAEoAggiBUEAEJUCAkACQCADLQAQQQRGDQAgAykDECIGQv8Bg0IEUQ0AIAAgBjcCAAwBCwJAAkACQCAFRQ0AIANBEGogAiAFELQaIAMtABBBBEYNACADKQMQIgZC/wGDQgRSDQELIANBADYCECADQQhqIAIgA0EQakGP4JsBQQEQuAwgAy0ACEEERg0BIAMpAwgiBkL/AYNCBFENASAAIAY3AgAMAgsgACAGNwIADAELIANBEGogAiAFIAFBABDKBgJAIAMtABBBBEYNACADKQMQIgZC/wGDQgRRDQAgACAGNwIADAELAkACQCAERQ0AIANBEGogAiAEELQaIAMtABBBBEYNACADKQMQIgZC/wGDQgRSDQELIABBBDoAAAwBCyAAIAY3AgALIANBIGokAAvPAgICfwF+IwBBIGsiAyQAAkACQAJAAkAgASgCBCIERQ0AIANBGGogAiAEELQaIAMtABhBBEYNACADKQMYIgVC/wGDQgRSDQELIANBADYCDCADQRhqIAIgA0EMakGuxJsBQQEQuAwgAy0AGEEERg0BIAMpAxgiBUL/AYNCBFENASAAIAU3AgAMAgsgACAFNwIADAELIANBGGogASACENogAkAgAy0AGEEERg0AIAMpAxgiBUL/AYNCBFENACAAIAU3AgAMAQsgA0EYaiACIANBDGpBr8SbAUEBELgMAkAgAy0AGEEERg0AIAMpAxgiBUL/AYNCBFENACAAIAU3AgAMAQsCQAJAIAEoAggiAUUNACADQRhqIAIgARC0GiADLQAYQQRGDQAgAykDGCIFQv8Bg0IEUg0BCyAAQQQ6AAAMAQsgACAFNwIACyADQSBqJAALwQIBCH8jAEEQayIBJAAgACgCBCECAkAgACgCCCIDRQ0AIAIgA0ECdGpBfGoiBEUNACAEKAIADQAgA0ECdCEEIAJBfGohBSADQf////8DcSEGAkADQCAGIQcCQCAEDQBBACEHDAILIAdBf2ohBiAFIARqIQggBEF8aiEEIAgoAgBFDQALIAcgA0sNAQsgACAHNgIIIAchAwsCQAJAIAMgACgCACIEQQJ2Tw0AAkACQCAEDQBBACEEIAFBDGohBwwBCyABQQQ2AgwgBEECdCEEIAFBCGohBwsgByAENgIAIAEoAgwiBEUNACABKAIIIQcCQAJAIAMNACACIAQgBxCjHkEEIQcMAQsgAiAHIAQgA0ECdCIGENoDIgdFDQILIAAgAzYCACAAIAc2AgQLIAFBEGokAA8LIAQgBkHAkoMBEKoeAAv6AgEDfyAAKAI4IQECQCAAKAI8IgJFDQAgASEDA0AgAxCRGyADQRBqIQMgAkF/aiICDQALCyAAKAI0IAFBBEEQELURIAAoAkAgACgCREEEQQQQtREgACgCUCIDIAAoAlQQpBcgACgCTCADQQRBDBC1ESAAKAJoIgMgACgCbBDuGSAAKAJkIANBBEEUELURIAAoAnwhAQJAIAAoAoABIgJFDQAgASEDA0AgAygCACADQQRqKAIAQQRBCBC1ESADQRBqIQMgAkF/aiICDQALCyAAKAJ4IAFBBEEQELURIAAoAowBIgMgACgCkAEQ7xkgACgCiAEgA0EEQQwQtREgACgCmAEiAyAAKAKcARDvGSAAKAKUASADQQRBDBC1ESAAKAK8ASAAKALAAUEEQQgQtREgACgCzAEgACgC0AFBAUECELURIAAoAqABIAAoAqQBQQRBCBC1ESAAKAKsASAAKAKwAUEEQRAQtREgACgC3AEgACgC4AFBBEEQELURC9UCAQJ/AkACQAJAAkACQAJAAkAgAA4DAAECAAsgAS0AGA0CDAMLIAItACUNAyABKAIIIQAgASgCBCEBIAItACQhAyACQQA6ACQCQCAARQ0AIABBOGwhAANAAkACQCABKAIADQAgAiABQQhqELQEDAELIAEgAhDwCQsgAUE4aiEBIABBSGoiAA0ACwsgAiADOgAkDwsCQCABKAIADQAgAiABQQhqELQEDwsgASACEPAJDAILIAIoAiAtADRFDQELIAEtABkhAAJAIAItACUNACAAQf8BcUVBAXQhAwwCC0ECIQMgAEF/akH/AXFBAk8NAQsPCyACLQAkIQQgAiADOgAkAkAgASgCCCIARQ0AIAEoAgQhASAAQThsIQADQAJAAkAgASgCAA0AIAIgAUEIahC0BAwBCyABIAIQ8AkLIAFBOGohASAAQUhqIgANAAsLIAIgBDoAJAu4AgEFfyMAQSBrIQICQCABKAIEIgMgAUFoaigCAEkgASgCACIEIAFBZGooAgAiBUkgBCAFRhtBAUcNACACQQhqQRBqIAFBGGooAgA2AgAgAkEQaiABQRBqKQIANwMAIAIgASkCCDcDCCABQUhqIQUCQAJAA0AgBSIBQdAAaiABQTRqKAIANgIAIAFByABqIAFBLGopAgA3AgAgAUHAAGogAUEkaikCADcCACABQThqIAFBHGoiBSkCADcCACAFIABGDQEgAUFkaiEFIAMgAUEEaigCAEkgBCABKAIAIgZJIAQgBkYbDQALIAFBHGohBQwBCyABQRxqIQULIAFBHGogBDYCACAFIAM2AgQgBSACKQMINwIIIAVBEGogAkEQaikDADcC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IAEQlQEMAQsgAkEEaigCACABEPMICyAEIABBOGoiAEcNAAwDCwsgACgCBCABEPMIIAEtAAANASAAKAIIIAEQlQEPCyABLQAADQAgACgCBCABEJUBCwu+AgEDfwJAAkACQAJAAkADQAJAIAAoAgAiAkECRg0AAkACQCACDgcIAQAEBQgGCAsACyAAKAIMIgJFDQYgACgCCCEAIAJBKGwhAgNAAkAgACgCAEEHRg0AIAAgARCsCQsgAEEoaiEAIAJBWGoiAg0ADAcLCyAAKAIEIQAMAAsLIAAoAgwiAkUNAyAAKAIIIQMgAkE4bCEEQQAhAANAAkACQAJAAkAgAyAAaiICKAIADgMAAQIACwJAIAJBCGooAgBBA0cNACACQQxqKAIAIAEQqAELIAJBKGooAgAgARCsCQwCCyACQTBqKAIAIgJFDQEgAiABEKgBDAELIAJBBGooAgAgARCsCQsgBCAAQThqIgBHDQAMBAsLIAAoAgQgARCsCSAAQQhqIQAMAQsgAEEEaiEACyAAKAIAIAEQqAELC74CAQN/AkACQAJAAkACQANAAkAgACgCACICQQJGDQACQAJAIAIOBwgBAAQFCAYICwALIAAoAgwiAkUNBiAAKAIIIQAgAkEobCECA0ACQCAAKAIAQQdGDQAgACABEK0JCyAAQShqIQAgAkFYaiICDQAMBwsLIAAoAgQhAAwACwsgACgCDCICRQ0DIAAoAgghAyACQThsIQRBACEAA0ACQAJAAkACQCADIABqIgIoAgAOAwABAgALAkAgAkEIaigCAEEDRw0AIAEgAkEMaigCABCnAQsgAkEoaigCACABEIwLDAILIAJBMGooAgAiAkUNASABIAIQpwEMAQsgAkEEaigCACABEIwLCyAEIABBOGoiAEcNAAwECwsgACgCBCABEK0JIABBCGohAAwBCyAAQQRqIQALIAEgACgCABCnAQsLvgIBA38CQAJAAkACQAJAA0ACQCAAKAIAIgJBAkYNAAJAAkAgAg4HCAEABAUIBggLAAsgACgCDCICRQ0GIAAoAgghACACQShsIQIDQAJAIAAoAgBBB0YNACAAIAEQrgkLIABBKGohACACQVhqIgINAAwHCwsgACgCBCEADAALCyAAKAIMIgJFDQMgACgCCCEDIAJBOGwhBEEAIQADQAJAAkACQAJAIAMgAGoiAigC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IAY3AwAgAhCaGCIHNwMQIAIgAkEQahC2CyEFIAcQxh0CQCAFRQ0AIAJB4ICAgHg2AhAgASADIAQgAkEQahCvGgsgACAENgIUIAAgAzYCECAAIAY3AwggAEEFNgIADAELIAJBEGogARCLAwJAIAIoAhBBBUYNACAAIAIpAxA3AwAgAEEYaiACQRBqQRhqKQMANwMAIABBEGogAkEQakEQaikDADcDACAAQQhqIAJBEGpBCGopAwA3AwAMAQsgACACKAIUNgIEIABBBjYCAAsgAkEwaiQAC6ACAQN/IwBBgAFrIgIkACAAKAIAIQACQAJAAkAgASgCCCIDQYCAgBBxDQAgA0GAgIAgcQ0BIAAoAgBBASABEMcHIQAMAgsgACgCACEAQYEBIQMDQCACIANqQX5qIABBD3EiBEEwciAEQdcAaiAEQQpJGzoAACADQX9qIQMgAEEPSyEEIABBBHYhACAEDQALIAFBAUGIypsBQQIgAiADakF/akGBASADaxDKBSEADAELIAAoAgAhAEGBASEDA0AgAiADakF+aiAAQQ9xIgRBMHIgBEE3aiAEQQpJGzoAACADQX9qIQMgAEEPSyEEIABBBHYhACAEDQALIAFBAUGIypsBQQIgAiADakF/akGBASADaxDKBSEACyACQYABaiQAIAALsgICAn8BfiMAQcAAayICJAACQAJAAkACQAJAAkAgASgCAA4EAAECAwALAkAgASkDCCIEQgODQgBSDQAgBKciASABKAIAIgFBAWo2AgAgAUF/TA0FCyAAQQA2AgAgACAENwMIDAMLIAAgASkDADcDACAAQQhqIAFBCGopAwA3AwAMAgsgASgCBCEDELUdIQEgAiADEEQgAUE4aiACQThqKQMANwMAIAFBMGogAkEwaikDADcDACABQShqIAJBKGopAwA3AwAgAUEgaiACQSBqKQMANwMAIAFBGGogAkEYaikDADcDACABQRBqIAJBEGopAwA3AwAgAUEIaiACQQhqKQMANwMAIAEgAikDADcDACAAQQI2AgAgACABNgIEDAELIABBAzYCAAsgAkHAAGokAA8LAAu/AgEDfyMAQTBrIgMkAAJAIAEgACgCeEEIcUEDdhCuDw0AIANBEGogARC/AyADKAIUIQQgAygCECEFIANBq4GAgHg2AhggACAFIAQgA0EYahCvGgsCQCAA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BCIBEKoBIAFBwABBCBCeEgwFCyAAQQhqEK8SDAQLIABBCGoiASgCACAAQQxqKAIAEKQaIAAoAgQgASgCABDBICAAKAIYIgFFDQMgASgCACICEMMDIAJB4ABBCBCeEiABQQxBBBCeEgwDCyAAKAIEIgEQ4QogAUEoQQgQnhIgACgCGCIBRQ0CIAEoAgAiAhDDAyACQeAAQQgQnhIgAUEMQQQQnhIMAgsgAEEEahC4CiAAKAIEIABBCGooAgAQviAgACgCGCIBRQ0BIAEoAgAiAhDDAyACQeAAQQgQnhIgAUEMQQQQnhIMAQsgAEEEahDuCSAAKAIIIgEQqgEgAUHAAEEIEJ4SCyAAQShBCBCeEguQAgEFfyAAKAIEIQEgACgCACECIABChICAgMAANwIAIAAoAgghAwJAAkACQCABIAJHDQAgACgCECICRQ0BIAAoAgwiBCADKAIIIgFGDQIgAkEEdCIARQ0CIAMoAgQiBSABQQR0aiAFIARBBHRqIAD8CgAADAILIAEgAmtBBHYhAQNAAkAgAigCAEECRg0AIAJBDGooAgAiBBCqASAEQcAAQQgQnhILIAJBEGohAiABQX9qIgENAAsgACgCECICRQ0AAkAgACgCDCIEIAMoAggiAUYNACACQQR0IgBFDQAgAygCBCIFIAFBBHRqIAUgBEEEdGogAPwKAAALIAMgASACajYCCAsPCyADIAEgAmo2AggLswIBAn8gACgCACECAkADQAJAAkACQCACDgcEAAIBAgQEBAsgACgCDCICRQ0DIAAoAgghACACQShsIQIDQAJAAkACQCAAKAIADggAAQEBAQEBAgELIAEgAEEIahC0BAwBCyAAIAEQ8AkLIABBKGohACACQVhqIgINAAwECwsgACgCDCICRQ0CIAAoAgghACACQThsIQIDQAJAAkACQAJAIAAoAgAOAwABAgALAkAgAEEoaigCACIDKAIADQAgASADQQhqELQEDAMLIAMgARDwCQwCCyABIABBEGoQtAQMAQsCQCAAQQRqKAIAIgMoAgANACABIANBCGoQtAQMAQsgAyABEPAJCyAAQThqIQAgAkFIaiICDQAMAwsLIAAoAgQiACgCACICDQALIAEgAEEIahC0BAsLqAIBA38CQAJAAkACQAJAAkAgACgCAA4HBQABAgMFBAULIAAoAgwiAkUNBCAA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Rw0AQQEhAiAEKAIQIAQoAhRLDQILIAJFDQAgAxD/EgsgBEEwaiQADwsgBEEANgIoIARBATYCHCAEQcTmgwE2AhggBEIENwIgIARBGGpBoOKEARCFGwALpAICAn8BfiMAQdABayIEJAAgBEEIaiADENANIARB4ABqIAEgBEEIahDaBAJAIAEoAiANACABQX82AiACQCABKAIsIgMgASgCJEcNACABQSRqQbyEhQEQoBYLIAEoAiggA0GYAWxqIgVBiYDEADYCAAJAQdgARQ0AIAVBBGogBEHgAGpB2AD8CgAACyAFIAI6AFwgASADQQFqNgIsIAEgASgCIEEBajYCICAEQcABaiIDIAFB2ABqKAIAIgU2AgAgBEG4AWpBFGogBTYCACAAQQA2AgggAEKAgICAwAA3AgAgACABKQJQIgY3AgwgBCAGNwLEASAAQRRqIAMpAwA3AgAgAEEcaiAEQcgBaikDADcCACAEQdABaiQADwtBrISFARD4FAALlwIBBH8gACABQcAAahD7CAJAIAEoAoQBIgJFDQAgASgCgAEiAyACQdgAbGohBANAAkACQCADKAIAIgJBBUcNACADKAIEIAAQqAEMAQsgAkEERg0AAkACQAJAIAIOBAMAAQIDCyADKAIEQQFHDQIgAygCCCAAEKgBDAILIAAgAygCBBCPCgwBCyADKAIMIgVFDQAgAygCCCECIAVBKGwhBQNAIAIgABC5ByACQShqIQIgBUFYaiIFDQALCyADQdgAaiIDIARHDQALCwJAIAEoApgBIgJFDQAgASgClAEhAyACQShsIQIDQCADIAAQuQcgA0EoaiEDIAJBWGoiAg0ACwsCQCABLQA8QQZGDQAgACABQRBqEPsICwu3AgIDfwF+IwBBIGsiAiQAAkACQAJAAkACQCABLQDIASIDQbd/ag4DAAEAAQsgAS0AgwFBAXFFDQEgASgCxAEhAyABKALAASEEIAJBo4CAgHg2AgggBCADIAJBCGoQhRUhAwJAIAEtAMgBQaIBRw0AIAEQxxEhBCABEIcOIAEgBBDlEQsgACADNgIADAILIAJBCGpBBHIgAxDeGyACQQ42AhwgAkH0sZsBNgIYIAJBsICAgHg2AgggASgCwAEgASgCxAEgAkEIahCFFSEDAkAgAS0AyAFBogFHDQAgARDHESEEIAEQhw4gASAEEOURCyAAIAM2AgAMAQsgARDKESEFIAEQhw5BACEDIABBADYCECAAIAU3AwAgACABKQO4ATcDCAwBC0ECIQMLIAAgAzoAFCACQSBqJAALowIBAn8jAEEwayICJAACQAJAAkACQANAAkAgACgCAA4HAgMABAAFBQILIAAoAgQhAAwACwsgAkEIaiAAQQhqEP4RIAEoAgAgAigCCCACKAIMEOYaDAILIAAoAgwhAyACIAAoAggiADYCKCACQQA2AiAgAkEANgIYIAIgACADQShsajYCLANAIAJBGGoQ7hQiAEUNAiAAIAEQkQoMAAsLIAAoAgxBOGwhAyAAKAIIIQADQCADRQ0BAkACQAJAAkAgACgCAA4DAAECAAsgAEEoaigCACABEJEKDAILIAJBEGogAEEQahD+ESABKAIAIAIoAhAgAigCFBDmGgwBCyAAQQRqKAIAIAEQkQoLIABBOGohACADQUhqIQMMAAsLIAJBMGokAAujAgECfyMAQTBrIgIkAAJAAkACQAJAA0ACQCAAKAIADgcCAwAEAAUFAgsgACgCBCEADAALCyACQQhqIABBCGoQ/hEgASgCACACKAIIIAIoAgwQ5RoMAgsgACgCDCEDIAIgACgCCCIANgIoIAJBADYCICACQQA2AhggAiAAIANBKGxqNgIsA0AgAkEYahDuFCIARQ0CIAAgARCSCgwACwsgACgCDEE4bCEDIAAoAgghAANAIANFDQECQAJAAkACQCAAKAIADgMAAQIACyAAQShqKAIAIAEQkgoMAgsgAkEQaiAAQRBqEP4RIAEoAgAgAigCECACKAIUEOUaDAELIABBBGooAgAgARCSCgsgAEE4aiEAIANBSGohAwwACwsgAkEwaiQAC6MCAQJ/IwBBMGsiAiQAAkACQAJAAkADQAJAIAAoAgAOBwIDAAQABQUCCyAAKAIEIQAMAAsLIAJBCGogAEEIahD+ESABKAIAIAIoAgggAigCDBDjGgwCCyAAKAIMIQMgAiAAKAIIIgA2AiggAkEANgIgIAJBADYCGCACIAAgA0EobGo2AiwDQCACQRhqEO4UIgBFDQIgACABEJMKDAALCyAAKAIMQThsIQMgACgCCCEAA0AgA0UNAQJAAkACQAJAIAAoAgAOAwABAgALIABBKGooAgAgARCTCgwCCyACQRBqIABBEGoQ/hEgASgCACACKAIQIAIoAhQQ4xoMAQsgAEEEaigCACABEJMKCyAAQThqIQAgA0FIaiEDDAALCyACQTBqJAALowIBAn8jAEEwayICJAACQAJAAkACQANAAkAgACgCAA4HAgMABAAFBQILIAAoAgQhAAwACwsgAkEIaiAAQQhqEP4RIAEoAgAgAigCCCACKAIMEOQaDAILIAAoAgwhAyACIAAoAggiADYCKCACQQA2AiAgAkEANgIYIAIgACADQShsajYCLANAIAJBGGoQ7hQiAEUNAiAAIAEQlAoMAAsLIAAoAgxBOGwhAyAAKAIIIQADQCADRQ0BAkACQAJAAkAgACgCAA4DAAECAAsgAEEoaigCACABEJQKDAILIAJBEGogAEEQahD+ESABKAIAIAIoAhAgAigCFBDkGgwBCyAAQQRqKAIAIAEQlAoLIABBOGohACADQUhqIQMMAAsLIAJBMGokAAujAgECfyMAQTBrIgIkAAJAAkACQAJAA0ACQCAAKAIADgcCAwAEAAUFAgsgACgCBCEADAALCyACQQhqIABBCGoQ/hEgASgCACACKAIIIAIoAgwQ3RoMAgsgACgCDCEDIAIgACgCCCIANgIoIAJBADYCICACQQA2AhggAiAAIANBKGxqNgIsA0AgAkEYahDuFCIARQ0CIAAgARCVCgwACwsgACgCDEE4bCEDIAAoAgghAANAIANFDQECQAJAAkACQCAAKAIADgMAAQIACyAAQShqKAIAIAEQlQoMAgsgAkEQaiAAQRBqEP4RIAEoAgAgAigCECACKAIUEN0aDAELIABBBGooAgAgARCVCgsgAEE4aiEAIANBSGohAwwACwsgAkEwaiQAC6MCAQJ/IwBBMGsiAiQAAkACQAJAAkADQAJAIAAoAgAOBwIDAAQABQUCCyAAKAIEIQAMAAsLIAJBCGogAEEIahD+ESABKAIAIAIoAgggAigCDBDhGgwCCyAAKAIMIQMgAiAAKAIIIgA2AiggAkEANgIgIAJBADYCGCACIAAgA0EobGo2AiwDQCACQRhqEO4UIgBFDQIgACABEJYKDAALCyAAKAIMQThsIQMgACgCCCEAA0AgA0UNAQJAAkACQAJAIAAoAgAOAwABAgALIABBKGooAgAgARCWCgwCCyACQRBqIABBEGoQ/hEgASgCACACKAIQIAIoAhQQ4RoMAQsgAEEEaigCACABEJYKCyAAQThqIQAgA0FIaiEDDAALCyACQTBqJAALowIBAn8jAEEwayICJAACQAJAAkACQANAAkAgACgCAA4HAgMABAAFBQILIAAoAgQhAAwACwsgAkEIaiAAQQhqEP4RIAEoAgAgAigCCCACKAIMEOIaDAILIAAoAgwhAyACIAAoAggiADYCKCACQQA2AiAgAkEANgIYIAIgACADQShsajYCLANAIAJBGGoQ7hQiAEUNAiAAIAEQlwoMAAsLIAAoAgxBOGwhAyAAKAIIIQADQCADRQ0BAkACQAJAAkAgACgCAA4DAAECAAsgAEEoaigCACABEJcKDAILIAJBEGogAEEQahD+ESABKAIAIAIoAhAgAigCFBDiGgwBCyAAQQRqKAIAIAEQlwoLIABBOGohACADQUhqIQMMAAsLIAJBMGokAAuLAgEIfyMAQRBrIgIkACACQQRqIAEoAgQgASgCCEEQEL4BIAIoAgwhAwJAAkAgAS0ADEUNACACKAIIIQQMAQsCQCADIAIoAgRHDQAgAkEEakHIj5sBEMENCyACKAIIIgQgA2pBLToAACACIANBAWoiAzYCDAtBACEBQQAgA0EBdiIFayEGIAMgBGpBf2ohByADQQJJIQgCQANAIAYgAUYNASABQX9qIQMCQCAIDQAgBC0AACEJIAQgByABaiIBLQAAOgAAIAEgCToAACAEQQFqIQQgAyEBDAELCyADIAVBzNKbARCzEQALIAAgAikCBDcCACAAQQhqIAJBBGpBCGooAgA2AgAgAkEQaiQAC6MCAQJ/IwBBMGsiAiQAAkACQAJAAkADQAJAIAAoAgAOBwIDAAQABQUCCyAAKAIEIQAMAAsLIAJBCGogAEEIahD+ESABKAIAIAIoAgggAigCDBDgGgwCCyAAKAIMIQMgAiAAKAIIIgA2AiggAkEANgIgIAJBADYCGCACIAAgA0EobGo2AiwDQCACQRhqEO4UIgBFDQIgACABEJkKDAALCyAAKAIMQThsIQMgACgCCCEAA0AgA0UNAQJAAkACQAJAIAAoAgAOAwABAgALIABBKGooAgAgARCZCgwCCyACQRBqIABBEGoQ/hEgASgCACACKAIQIAIoAhQQ4BoMAQsgAEEEaigCACABEJkKCyAAQThqIQAgA0FIaiEDDAALCyACQTBqJAALowIBAn8jAEEwayIC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RQ0AIAEoAoABIQIgA0HYAGwhAwNAAkACQCACKAIAQQVHDQAgAC0AAA0BIAJBBGooAgAgABCVAQwBCyACIAAQuwgLIAJB2ABqIQIgA0Gof2oiAw0ACwsCQCABKAKYASIDRQ0AIAEoApQBIQIgA0EobCEDA0AgAiAAEMgGIAJBKGohAiADQVhqIgMNAAsLAkAgAS0APCICQQZGDQAgAkECRw0AIAFBEGohAgNAIAIoAhgiAi0ALEECRg0ACwsL8gEBBn8jAEEQayICJAACQCAAKAIIIgNFDQAgACgCBCEAIANBDGwhBCABQSxqIQUDQAJAAkAgACgCACIDDQAgAEEEaigCACIDIAEQ+AMgAygCAEEFRw0BIAIgAykDCCADQRhqKAIAELoYIAUgAikDACACKAIIENEKDAELIAEtACghBiABQQA6ACggAS0AeSEHIAFBADoAeQJAIAMoAgBBGkcNACACIAMpAwggA0EYaigCABC6GCAFIAIpAwAgAigCCBDRCgsgAyABEHcgASAGOgAoIAEgBzoAeQsgAEEMaiEAIARBdGoiBA0ACwsgAkEQaiQAC/sBAQR/IwBB0ABrIgMkACABKALAASEEAkACQCABLQDIASIFQfgARw0AIAEQhw4gACABQQEgBCACELMHDAELIAEoAsQBIQYgA0EMaiAFEN4bIANBATYCNCADQZjvmwE2AjAgA0IBNwI8IANBigWtQiCGQaytmwGthDcDSCADIANByABqNgI4IANBGGogA0EwahCNFSADQSxqIANBDGpBCGooAgA2AgAgAyADKQIMNwIkIAQgBiADQRhqEIUVIQQCQCABLQDIAUGiAUcNACABEMcRIQUgARCHDiABIAUQ5RELIABBCDYCACAAIAQ2AgQgAhDMHQsgA0HQAGokAAvxAQICfwJ+IwBBEGsiAyQAAkACQAJAIAEoAgBBBUYNACABKQIAIgVCIIghBgJAAkACQCAFpyIEQX1qIgFBAiABQQJJGw4DAAECAAtBASEBIANBAToABCADIAI2AgggA0EEahCXGiECDAMLIAJFDQMgAyAGpzoABSADQQA6AAQgAyACQX9qNgIIIANBBGoQlxohAkEBIQEMAgsgAyAGPgIMIAMgBDYCCCADQQM6AAQgA0EEahCXGiECQQEhAQwBCyABKAIEIQJBACEBCyAAIAI2AgQgACAB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NwIAIABBFGogA0EIakEUaikCADcCACAAIAU3AgQgACAENgIADAELAkAgBadBAXFFDQAgAEGAgICAeDYCACAAIAVCCIg8AAQMAQsCQCAFQoCAgICAEFQNACAAIAEoAgQgASgCCCACQQRqQQAQlw8MAQsgAEGAgICAeDYCACAAIAVCIIg8AAQLIANBMGokAAvsAQEIfyMAQRBrIgIkACAALQAoIQMgAEEBOgAoIAAtAHohBCAAIAAtAHtBAXM6AHogAC0AeSEFAkAgASgCOCIGRQ0AIAEoAjQhByAGQQxsIQggAEEsaiEJA0AgBygCACEGIABBADoAeSAAQQA6ACgCQCAGKAIAQRpHDQAgAiAGKQMIIAZBGGooAgAQuhggCSACKQMAIAIoAggQ0QoLIAdBDGohByAGIAAQdyAAQQE6ACggAEEAOgB5IAhBdGoiCA0ACwsgAEEBOgB5IAEgABDnBCAAIAU6AHkgACAEOgB6IAAgAzoAKCACQRBqJAAL9wEBAX8CQAJAA0ACQAJAAkAgASgCAA4HAAECBAIFBQALIAAgASkDCCABQRhqKAIAEPwQDwsgASgCDCICRQ0DIAEoAgghASACQShsIQIDQAJAIAEoAgBBB0YNACAAIAEQqAsLIAFBKGohASACQVhqIgINAAwECwsgASgCBCEBDAALCyABKAIMIgJFDQAgASgCCCEBIAJBOGwhAgNAAkACQAJAAkAgASgCAA4DAAECAAsgACABQShqKAIAEKgLDAILIAAgAUEQaikDACABQSBqKAIAEPwQDAELIAAgAUEEaigCABCoCwsgAUE4aiEBIAJBSGoiAg0ACwsL8wECA38CfiMAQeAAayICJAAgACgCMBCBEiEDIAJBNGogAEE0aigCADYCACACQQhqQQApA5j7nAEiBTcDACACQRBqIgRBACkDkPucASIGNwMAIAJBGGogBTcDACACIAA2AiAgAiADNgIkIAJBAToAOSACQQE6ACggAiAAKQIsNwIsIAIgBjcDACACIAAoATo2ATogAiAALQA4OgA4IAIgASgCABDAAgJAIAIoAgQiAEUNACACKAIAIAIoAgwQkgwgACAAQQR0QRdqQXBxIgFqQQlqIgBFDQAgAigCACABayAAQQgQnhILIAQQ1hUgAkHgAGokAAuMAgEBfyMAQeAAayICJAAgACgCACEAIAJB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AkEQaiEBIAJBDGohAgwECyABKAIEIgJBBGohAQwDCyABKAIEIgJBBGohAQwCCyABKAIEIgJBHGohASACQRhqIQIMAQsgASgCBCICQcwAaiEBIAJByABqIQILIAAgASgCADYCBCAAIAIoAgA2AgAL4AEBAX8jAEEQayITJAAgACgCACABIAIgACgCBCgCDBEMACECIBNBADoADSATIAI6AAwgEyAANgIIIBNBCGogAyAEIAUgBhChCSAHIAggCSAKEKEJIAsgDCANIA4QoQkgDyAQIBEgEhChCSESIBMtAA0iAiATLQAMIgFyIQACQCACQQFHDQAgAUEBcQ0AAkAgEigCACIALQAKQYABcQ0AIAAoAgBB17WXAUECIAAoAgQoAgwRDAAhAAwBCyAAKAIAQabEmwFBASAAKAIEKAIMEQwAIQALIBNBEGokACAAQQFxC84BAQN/IwBBIGsiAyQAAkACQAJAIAEgAmoiAiABTw0AQQAhBAwBC0EAIQQCQCACIAAoAgAiBUEBdCIBIAIgAUsbIgFBCCABQQhLGyIBQQBODQAMAQtBACECAkAgBUUNACADIAU2AhwgAyAAKAIENgIUQQEhAgsgAyACNgIYIANBCGogASADQRRqENkSIAMoAghBAUcNASADKAIQIQAgAygCDCEECyAEIABBnMeAARCqHgALIAMoAgwhAiAAIAE2AgAgACACNgIEIANBIGokAAvoAQECfyAAKAKgDSIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAKgDRDmDgsCQCAALQCsCkECRg0AIAAoAqAKIgEgASgCACIBQX9qNgIAIAFBAUcNACAAKAKgCiAAKAKkChDqDwsgACgCpA0iASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCpA0QpxkLAkAgACgCqA0iAUUNACABIAEoAgAiAkF/ajYCACACQQFHDQAgACgCqA0QpxkLIABBsApqEMQaIABByApqEM4YAkAgACgC5ApBA0YNACAAQeQKahClFwsgABDxGwvOAQEDfyMAQSBrIgMkAAJAAkACQCABIAJqIgIgAU8NAEEAIQQMAQtBACEEAkAgAiAAKAIAIgVBAXQiASACIAFLGyIBQQggAUEISxsiAUEATg0ADAELQQAhAgJAIAVFDQAgAyAFNgIcIAMgACgCBDYCFEEBIQILIAMg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MGsiAiQAIAEoAhQhAyABKQIEIQUgASgCECEEIAJBEGogARDdECACIAQ2AiAgAiAFNwIYIAIgAikDEDcCKCACIAQgA0EDdGo2AiQgAkEIaiACQRhqEOcOAkAgAigCCCIBDQBBqLiEARCbIAALIAIoAgwhBCAAIAIpAhg3AhggACABNgIwIABCBDcCECAAQgA3AgggAEKAgICAwAA3AgAgAEEoaiACQShqKQIANwIAIABBIGogAkEgaikCADcCACAAIAEgBEEDdGo2AjQgAkEwaiQAC84BAgF/AX4jAEEQayIEJAACQAJAAkAgA0EPSQ0AIANB/////wFLDQJBfyADQQN0QQduQX9qZ3ZBAWohAwwBC0EEQQhBECADQQhJGyADQQRJGyEDCyAEIAEgAiADEPgMIAQoAgQhAwJAAkAgBCgCACICDQAgACAEKAIINgIIIAAgAzYCBCAAQQA2AgAMAQsgBCkCCCEFAkAgA0EJaiIBRQ0AIAJB/wEgAfwLAAsgACAFNwIIIAAgAzYCBCAAIAI2AgALIARBEGokAA8LENkZAAvPAQEBfyMAQcAAayICJAACQAJAIAAoAgAiACgCAEEaRw0AIAIgASgCACABKAIEIABBCGoiARC1DCACKAIAQTJGDQEgABDJASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACABIAJBCGopAwA3AwAgACACKQMANwMADAELIAAgARBGCyACQcAAaiQAC88BAQF/IwBBwABrIgIkAAJAAkAgASgCACIBKAIAQRpHDQAgAiAAKAIAIAAoAgQgAUEIaiIAELUMIAIoAgBBMkYNASABEMkBIAFBOGogAkE4aikDADcDACABQTBqIAJBMGopAwA3AwAgAUEoaiACQShqKQMANwMAIAFBIGogAkEgaikDADcDACABQRhqIAJBGGopAwA3AwAgAUEQaiACQRBqKQMANwMAIAAgAkEIaikDADcDACABIAIpAwA3AwAMAQsgASAAEEYLIAJBwABqJAALugEBBX8CQCADQQhJDQAgACAAIANBA3YiA0HwAGwiBGogACADQcQBbCIFaiADEIgMIQAgASABIARqIAEgBWog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AQtBAC0AwPGdARogAhCFASIFRQ0CCwJAIAJFDQAgBSABIAL8CgAACyAAIAI2AiQgACAFNgIgIAAgAjYCHCAAQRhqIARBGGooAgA2AgAgAEEQaiAEQRBqKQIANwIAIABBCGogBEEIaikCADcCACAAIAQpAgA3AgAgACADKQIANwIoIABBMGogA0EIaikCADcCACAAQThqIANBEGopAgA3AgAPC0G84JsBENMZCwALvQEBCX9BACECAkADQCACIAFGDQEgACACQRxsaiIDKAIIIQQgAygCBCEFQQAhBgJAA0AgBiAERg0BIAUgBkEMbGoiBygCCCEIIAcoAgQiCSEKAkADQCAIRQ0BIAooAgAgCkEEaigCABCOICAIQX9qIQggCkEUaiEKDAALCyAHKAIAIAlBBEEUEK8RIAZBAWohBgwACwsgAygCACAFQQRBDBCvESADKAIMIANBEGooAgAQjiAgAkEBaiECDAALCwu5AQECfwJAAkACQCAAKAIIIgIgAUkNACACIAFGDQEgAiABayECAkACQCAAKAIEIAFBAnRqIgMtAAAiAUH/AUYNACABIAFBAnZqIAFBA3FBAEdqQQJqIgEgAkkNASABIAJB/OGDARCzEQALIAAoAihBAmoiASACTw0DCyADIAFBAnRqKAIAIgFBASABQX9KGw8LIAEgAkHY8oMBEKMgAAtBAEEAQezhgwEQsxEACyABIAJBjOKDARCzEQALywEBA38jAEHQAGsiASQAIAAoAgAiAigCACEDIAJBADYCACADKAJQIQIgA0EANgJQAkAgAkUNACABQQhqIAIRAwACQCAAKAIEIgIoAgAiAygCOCIAQQJGDQAgAEUNACADKAJAIgBFDQAgAygCPCAAQQEQnhIgAigCACEDCwJAQcgARQ0AIAMgAUEIakHIAPwKAAALIAFB0ABqJABBAQ8LIAFBADYCGCABQQE2AgwgAUG4/5wBNgIIIAFCBDcCECABQQhqQaTvmwEQhRsAC7cBAgJ/AX4jAEEQayIDJAAgAyABIAIQuhgCQAJAIAMpAwAiAUIDgyIFQgBSDQAgAaciAiACKAIAIgJBAWo2AgAgAkF/TA0BCyAAQRBqIAEgAygCCCICEOcFGgJAAkAgACgCnAEiBEUNACAAKAKYASAEQSxsakFgaiABIAIQ5wUaDAELIAVCAFINACABpyIA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QANAIANBEGogA0EIahCHBiADKAIQIgFFDQEgAygCFCEGAkAgAygCHA0AIAIgASAGEO0FIQQMAwtBASEEIAUgASAGIAAoAgwRDAANAiAFQf3/AyAAKAIQEQgARQ0ADAILC0EAIQQLIANBIGokACAEC6cBAQJ/IAAoAgQhAiABIAAoAggiAxCYISADQQN0IQMCQANAIANFDQEgAigCACACQQRqKAIAIAEQ5R8gA0F4aiEDIAJBCGohAgwACwsgACgCECECIAEgACgCFCIDEJghIANBFGwhAwJAA0AgA0UNASACKAIMIAJBEGooAgAgARDlHyACQQRqKAIAIAJBCGooAgAgARCfHyADQWxqIQMgAkEUaiECDAALCwuqAQICfwF+AkACQCAAKAIAIgEtACVBAkcNACABQQRqKAIAIQACQCABKAIIIgJFDQADQCAAEOoGIABBOGohACACQX9qIgINAAsgAUEEaigCACEACyABKAIAIABBCEE4EK8RDAELAkAgASkDCCIDQgODQgBSDQAgA6ciACAAKAIAIgJBf2o2AgAgAkEBRw0AIAAgACgCEBDBGwsgAUEgahDJDQsgAUEoQQgQnhILvwEAAkAgASACQcSgmwFBCBCZHEUNAEHzAA8LAkAgASACQaLEmwFBAhCZHEUNAEH1AA8LAkAgASACQYTLmwFBBRCZHEUNAEHMAA8LAkAgASACQZK4mwFBBRCZHEUNAEH4AA8LAkAgASACQbHGmwFBBhCZHEUNAEH3AA8LAkAgASACQanFmwFBBxCZHEUNAEH2AA8LAkAgASACQZmkmwFBAxCZHEUNAEH0AA8LQZx/QaR/IAEgAkG8zZsBQQgQmRwbC6cBAQV/IwBBEGsiAyQAAkAgAUUNACABQQR0IQQgAEEMaiEBIAJBLGohBSACLQB5IQYgAi0AKCEHA0AgAkEAOgB5IAJBADoAKAJAIAEoAgAiACgCAEEaRw0AIAMgACkDCCAAQRhqKAIAELoYIAUgAykDACADKAIIENEKCyAAIAIQdyACIAc6ACggAiAGOgB5IAFBEGohASAEQXBqIgQNAAsLIANBEGokAAuoAQICfwF+AkACQAJAIAIgA2pBf2pBACACa3GtIAGtfiIGQiCIpw0AIAanIgRBgICAgHggAmtNDQELIABBADYCBEEBIQMMAQsCQCAEDQAgACACNgIIQQAhAyAAQQA2AgQMAQtBACEDQQAtAMDxnQEaAkAgBCACEIYdIgVFDQAgACAFNgIIIAAgATYCBAwBCyAAIAQ2AgggACACNgIEQQEhAwsgACADNgIAC6gBAgJ/AX4CQAJAAkAgAiADakF/akEAIAJrca0gAa1+IgZCIIinDQAgBqciBEGAgICAeCACa00NAQsgAEEANgIEQQEhAwwBCwJAIAQNACAAIAI2AghBACEDIABBADYCBAwBC0EAIQNBAC0AwPGdARoCQCAEIAIQhh0iBUUNACAAIAU2AgggACABNgIEDAELIAAgBDYCCCAAIAI2AgRBASEDCyAAIAM2AgALogEBBH8CQCABKAIEIgIgASgCACIDa0ECdiIEIAAoAgAgACgCCCIFa00NACAAIAUgBEEEQQwQoBcgACgCCCEFCwJAIAMgAkYNACABKAIIIQQgACgCBCAFQQxsaiEBA0AgAUEIaiAEKAIANgIAIAFBADYCACABQQRqIAJBfGoiAigCADYCACABQQxqIQEgBUEBaiEFIAIgA0cNAAsLIAAgBTYCCAu+AQECfyMAQTBrIgIkACACQgA3AiggAkIENwIgIAJCADcCGCACQgQ3AhAgAkIANwIIIAJCgICAgMAANwIAIAIgARCkCAJAQTBFIgMNACAAQQxqIAJBMPwKAAALIAJCADcCKCACQgQ3AiAgAkIANwIYIAJCBDcCECACQgA3AgggAkKAgICAwAA3AgAgAiABEKQIAkAgAw0AIABBPGogAkEw/AoAAAsgAEEANgIIIABCgICAgMAANwIAIAJBMGokAAu7AQECfwJAAkACQAJAAkAgASgCCA4CAQIACwJAQSRFDQAgAEEEaiABQST8CgAACyAAQYeAxAA2AgAPCyAAQYCAxAA2AgAgACABKQIMNwIEIABBFGogAUEcaikCADcCACAAQQxqIAFBFGopAgA3AgAMAQsgAUEANgIIIAEoAgQiAigCACIDQYiAxABGDQEgACADNgIAQdQARQ0AIABBBGogAkEEakHUAPwKAAALIAEQ5xcPC0HYnIUBEJsgAAusAQICfwF+IwBBEGsiAyQAAkACQAJAAkAgASgCCCIEIAEoAgRPDQAgASgCACAEai0AACACQf8BcUYNAQsgAEIANwMIDAELQQEhAiABIARBAWo2AgggAyABEOkHAkAgAy0AAA0A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fgJAAkAgAa0gAq1+IgVCIIinDQAgBaciAUF4Sw0AIAFBB2pBeHEiASACQQhqaiIDIAFJDQAgA0H4////B0sNAEEALQDA8Z0BGiADEIUBIgNFDQEgAEEANgIMIAAgAkF/aiIENgIEIAAgAyABajYCACAAIAQgAkEDdkEHbCACQQlJGzYCCA8LENkZCwALnwEBA38jAEGQA2siAyQAIAMgASACELQDAkACQCADKAIAQYeAgIB4Rg0AAkACQCACDQBBACEEDAELIAFBCGooAgAhBCACQQFGDQAgAUEYaiEBIAJBf2pB/////wBxIQIDQCABKAIAIgUgBCAFIARLGyEEIAFBEGohASACQX9qIgINAAsLIAAgAyAEEL0GDAELIABBAjoADAsgA0GQA2okAAucAQEBfwJAAkACQAJAIAUgBEkNACAFIANLDQEgBSAERg0CIAUgBGshBiACIARqIQNBACEFAkADQCABIAMgBWotAABqLQAADQEgBiAFQQFqIgVGDQQMAAsLIAAgBSAEaiIBNgIEQQEhBSAAIAFBAWo2AggMAwsgBCAFQczUhAEQqSAACyAFIANBzNSEARCPIAALQQAhBQsgACAFNgIAC5UBAQJ+AkAgASgCAEEAIAJrQShsaiICQVhqKQMAIgNCA4NCAFINACADpykDCCEDCyACQWBqKAIAIQECQCACQWhqKQMAIgRCA4NCAFINACAEpykDCCEECyADp0Hdy92eeWwgA0IgiKdqQd3L3Z55bCABakHdy92eeWwgBKdqQd3L3Z55bCAEQiCIp2pB3cvdnnlsQQ93rQuSAQEBf0H/ASEFAkAgA0H/AXFFDQBBf0EAIANrQQdxdEF/cyADQQdxdCEFCyAAQQg6AA4gACADOgANIAAgBToADCAAIAE2AgggACAEOgAWIABBADoAFSAAIAJBfmo2AgQgACABQQFqNgIAIAAgASACakF/ajYCECAAQX9BfyAEQQdxdEF/cyAEQf8BcUEIRhs6ABQLoQEAIABBADoAGCAAQX82AhQgACAGNgIQIAAgBTYCDCAAIAQ2AgggACADNgIEIAAgAjYCAAJAIAEoAhQiBiABKAIMRw0AIAFBDGpB5IebARCMFwsgASAGQQFqNgIUIAEoAhAgBkEcbGoiASAAKQIANwIAIAFBCGogAEEIaikCADcCACABQRBqIABBEGopAgA3AgAgAUEYaiAAQRhqKAIANgIAC58BAQF/IwBBIGsiAiQAAkACQAJAIAEtABRBAkYNACACIAAgASABKAIYEJAHIAItABRBA0cNASABLQAUQQJGDQAgACgCFCABEPwNGgsgASgCGCAAEK8HDAELIAEQgx4gAUEYaiACQRhqKQMANwMAIAFBEGogAkEQaikDADcDACABQQhqIAJBCGopAwA3AwAgASACKQMANwMACyACQSBqJAALqwEBAn8jAEEgayIBJAAgACgCmAEhAiAAQQs2ApgBAkACQCACQQtGDQAgAUEIaiAAQbABaigCADYCACABQRxqIABBpAFqKAIANgIAIAEgAjYCECABIAApAqgBNwMAIAEgACkCnAE3AhQgACABQRBqEMUZDAELIAEgABD5HAsgACAAKQPAATcDuAEgACABKQMANwLAASAAQcgBaiABQQhqKAIANgIAIAFBIGokAAujAQICfwF+IwBBEGsiBCQAAkACQAJAIANFDQACQCABLQBMQQFHDQAgBEEIaiABEO0SAkAgBC0ACEEERg0AIAQpAwgiBkL/AYNCBFINAwsgAUEAOgBMIAEoAgAhBSABQQA2AgAgBUEBRw0AIAEgASgCBBCsBQsgASgCNCACIAMQ2h8gASACIAMQtQYLIABBBDoAAAwBCyAAIAY3AgALIARBEGokAAucAQEEfyMAQRBrIgIkAAJAAkAgAS0ABEUNAEECIQMMAQsgASgCABAeIQQgAkEIahDCG0EBIQMgAigCDCAEIAIoAghBAXEiBRshBAJAIAVFDQAgAUEBOgAEIAQhAQwBCwJAAkAgBBAfDQBBACEDIAQQICEBDAELIAFBAToABEECIQMLIAQQkh8LIAAgATYCBCAAIAM2AgAgAkEQaiQAC7IBAQN/IwBBIGsiAyQAIANCABCYCwJAAkAgAygCAEGEgICAeEcNAEEALQDA8Z0BGiADKAIEIQRBEBCFASIFRQ0BIAUgAjoADSAFIAE6AAwgBSAENgIIIAVCgYCAgBA3AgAgAEH8l4QBNgIEIAAgBTYCACADQSBqJAAPCyADQRBqQQhqIANBCGopAwA3AwAgAyADKQMANwMQQdSkmwFBKyADQRBqQcjogwFB/JaEARDoDwsAC5UBAgF/An4gACAAKAI4QQFqNgI4IAAgAa1C/wGDIgMgACgCPCIBQQN0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aiECAkACQCAAKAIADQAgAikDACIEQgODQgBSDQEgBKciAiACKAIAIgNBf2o2AgAgA0EBRw0BIAIgAigCEBDBGwwBCyACEKcQCwJAIABBKGooAgAiAkUNACACEJABIAJBwABBCBCeEgsgAEEwaiEAIAFBf2oiAQ0ACwsLowECAX8BfiMAQRBrIgIkAAJAAkACQAJAIAAoAgAiACkDAEJ+fCIDQgIgA0ICVBunDgMAAQIACyACIABBCGo2AgQgAUHimZoBQQkgAkEEakGgBBCkCyEADAILIAIgAEEIajYCCCABQeuZmgFBByACQQhqQaEEEKQLIQAMAQsgAiAANgIMIAFB8pmaAUEFIAJBDGpBogQQpAshAAsgAkEQaiQAIAAL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBH3EhAgsgAyACdLcL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBH3EhAgsgAyACdbcL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBH3EhAgsgAyACdrgLlwEBAX9BAC0AwPGdARoCQEHAABCFASIBDQAACyABIAApAwA3AwAgAUE4aiAAQThqKQMANwMAIAFBMGogAEEwaikDADcDACABQShqIABBKGopAwA3AwAgAUEgaiAAQSBqKQMANwMAIAFBGGogAEEYaikDADcDACABQRBqIABBEGopAwA3AwAgAUEIaiAAQQhqKQMANwMAIAELmgECA38CfiABKAIMIQIgASgCACIDKQMAIQUCQAJAIAEoAgQiAQ0AQgAhBkEAIQQMAQsgAyABQQR0a0Fwaq1CIIYgAUERbEEZaq2EIQZBCCEECyAAIAY3AiQgACAENgIgIAAgAjYCGCAAIAM2AhAgACADQQhqNgIIIAAgAyABakEBajYCDCAAIAVCf4VCgIGChIiQoMCAf4M3AwALlwEBAX8jAEEQayICJAACQAJAIAEoAgAiARDpIEUNACACQQRqIAEQrw4gAEEIaiACQQRqQQhqKAIANgIAIAAgAikCBDcCAAwBCwJAIAEQMkUNACACQQRqIAEQLiIBEK8OIABBCGogAkEEakEIaigCADYCACAAIAIpAgQ3AgAgARCSHwwBCyAAQYCAgIB4NgIACyACQRBqJAALlQEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBDGwhAQNAIAIgADYCDCACQQRqIAJBDGpBPBD0ChogAEEMaiEAIAFBdGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5UBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQxsIQEDQCACIAA2AgwgAkEEaiACQQxqQT8Q9AoaIABBDGohACABQXRqIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuVAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0ECdCEBA0AgAiAANgIMIAJBBGogAkEMakE+EPQKGiAAQQRqIQAgAUF8aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlQEBBH8jAEGAIGsiAiQAAkACQCABQYCJ+gAgAUGAifoASRsiAyABIAFBAXZrIgQgAyAESxsiA0GBCEkNACACIAMQrBUgACABIAIoAgQiAyACKAIIIgRBAnRqIAIoAgAiBSAEayABQcEASRDSAiAFIANBBEEEELURDAELIAAgASACQYAIIAFBwQBJENICCyACQYAgaiQAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQJ0IQEDQCACIAA2AgwgAkEEaiACQQxqQcEAEPQKGiAAQQRqIQAgAUF8aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlQEBB38jAEEQayIBJAAgAEG0A2ohAiAAKALEAyEDIAAoAsgDIQQgACgCjAYhBUEAIQYCQANAIAFBCGogAiAFIAYgABD3DyABKAIIIgZBAXFFDQECQCABKAIMIgAgBE8NACADIABBCWxqIgcoAAFBAUcNASAHQQFqIAU2AAAMAQsLIAAgBEGUtoABELMRAAsgAUEQaiQAC5UBAQN/IwBBIGsiASQAQQAhAgJAIABBf3NBH3YgAEHE0oABEIkaIgNB+P///wdLDQBBBCECIAFBBDYCHCABIANBBGo2AhgLIAEgAjYCFCABQQhqIAFBFGpB4NKAARCuFQJAIAEoAggiACAAIAEoAgxqQX9qQQAgAGtxENUfIgANAAALIAAgAzYAACABQSBqJAAgAEEEagudAQEBfyMAQSBrIgYkAAJAAkAgAUUNACAGQRRqIAEgAyAEIAUgAigCEBERAAJAIAYoAhQgBigCHCIBTQ0AIAZBCGogBkEUaiABQQRBBBClCyAGKAIIIgFBgYCAgHhHDQIgBigCHCEBCyAAIAE2AgQgACAGKAIYNgIAIAZBIGokAA8LQcT+nAFBMhDkIAALIAEgBigCDEHA2IIBEKoeAAuaAQECfwJAIAAoAgANACAAQX82AgACQCAAKAIMIgIgACgCBEcNACAAQQRqQZS2hQEQ/hULIAAoAgggAkEcbGoiAyABKQIANwIAIANBCGogAUEIaikCADcCACADQRBqIAFBEGopAgA3AgAgA0EYaiABQRhqKAIANgIAIAAgAkEBajYCDCAAIAAoAgBBAWo2AgAPC0GEtoUBEPgUAAuZAQECfyMAQRBrIgIkACACQQRqIAAgARDFBEEALQDA8Z0BGiACKAIEIQMCQEE0EIUBIgANAAALIABCADcCFCAAQQE2AhAgACABNgIMIABBATYCCCAAIAE2AgQgAEEBNgIAIABBgQI7ADEgAEEcakIANwIAIABBJGpCADcCACAAQSxqQQA2AgAgACADQQFzOgAwIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQJ0IQEDQCACIAA2AgwgAkEEaiACQQxqQbABEPQKGiAAQQRqIQAgAUF8aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBA3QhAQNAIAIgADYCDCACQQRqIAJBDGpBuAEQ9AoaIABBCGohACABQXhqIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EFdCEBA0AgAiAANgIMIAJBBGogAkEMakG5ARD0ChogAEEgaiEAIAFBYGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQxsIQEDQCACIAA2AgwgAkEEaiACQQxqQboBEPQKGiAAQQxqIQAgAUF0aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALqwEBA38jAEEgayICJAAgAkIAEJgLAkACQCACKAIAQYSAgIB4Rw0AQQAtAMDxnQEaIAIoAgQhA0EQEIUBIgRFDQEgBCABOgAMIAQgAzYCCCAEQoGAgIAQNwIAIABB7JiEATYCBCAAIAQ2AgAgAkEgaiQADwsgAkEQakEIaiACQQhqKQMANwMAIAIgAikDADcDEEHUpJsBQSsgAkEQakHI6IMBQfyWhAEQ6A8LAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EDdCEBA0AgAiAANgIMIAJBBGogAkEMakHYARD0ChogAEEIaiEAIAFBeGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQF0IQEDQCACIAA2AgwgAkEEaiACQQxqQe0BEPQKGiAAQQJqIQAgAUF+aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEEEdCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpBgwIQ9AoaIAFBcGohASADQRBqIQMMAAsLIAJBBGoQvxohASACQRBqJAAgAQuWAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQQN0IQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakGHAhD0ChogAUF4aiEBIANBCGohAwwACwsgAkEEahC/GiEBIAJBEGokACABC5QBAgJ/AX4CQCAALQAUQQJHDQAgACgCACIAQRhqEM4OAkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDBGwsgAEEwQQgQnhIPCwJAIAApAwAiA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQwRsLC5QBAgJ/AX4CQCAALQAUQQJHDQAgACgCACIAQRhqEM8OAkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDBGwsgAEEwQQgQnhIPCwJAIAApAwAiA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQwRsLC5QBAgJ/AX4CQCAALQAUQQJHDQAgACgCACIAQRhqENAOAkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDBGwsgAEEwQQgQnhIPCwJAIAApAwAiA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQwRsLC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQR0IQEDQCACIAA2AgwgAkEEaiACQQxqQaEDEPQKGiAAQRBqIQAgAUFwaiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALmQEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANB0ABsIQEDQCACIAA2AgwgAkEEaiACQQxqQZ4EEPQKGiAAQdAAaiEAIAFBsH9qIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuZAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0HIAGwhAQNAIAIgADYCDCACQQRqIAJBDGpBpgQQ9AoaIABByABqIQAgAUG4f2oiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQShsIQEDQCACIAA2AgwgAkEEaiACQQxqQbUEEPQKGiAAQShqIQAgAUFYaiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBBHQhAQNAIAIgADYCDCACQQRqIAJBDGpBtgQQ9AoaIABBEGohACABQXBqIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuZAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0HYAGwhAQNAIAIgADYCDCACQQRqIAJBDGpBuAQQ9AoaIABB2ABqIQAgAUGof2oiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5cBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQZ0IQEDQCACIAA2AgwgAkEEaiACQQxqQcQEEPQKGiAAQcAAaiEAIAFBQGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQxsIQEDQCACIAA2AgwgAkEEaiACQQxqQcgEEPQKGiAAQQxqIQAgAUF0aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlwEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBBnQhAQNAIAIgADYCDCACQQRqIAJBDGpBxQQQ9AoaIABBwABqIQAgAUFAaiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBAnQhAQNAIAIgADYCDCACQQRqIAJBDGpBnQMQ9AoaIABBBGohACABQXxqIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EobCEBA0AgAiAANgIMIAJBBGogAkEMakHVBBD0ChogAEEoaiEAIAFBWGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC6IBAQJ/IwBBEGsiAiQAAkACQAJAAkAgACgCACIALQAsQX1qIgNBASADQf8BcUEDSRtB/wFxDgMAAQIACyACIAA2AgQgAUG11psBQQUgAkEEakHcAhCkCyEADAILIAIgADYCCCABQZmAmgFBDSACQQhqQeYCEKQLIQAMAQsgAiAANgIMIAFBlfmZAUERIAJBDGpB5wIQpAshAAsgAkEQaiQAIAALmQEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANB2ABsIQEDQCACIAA2AgwgAkEEaiACQQxqQd0EEPQKGiAAQdgAaiEAIAFBqH9qIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EobCEBA0AgAiAANgIMIAJBBGogAkEMakHMAhD0ChogAEEoaiEAIAFBWGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQJ0IQEDQCACIAA2AgwgAkEEaiACQQxqQccCEPQKGiAAQQRqIQAgAUF8aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBOGwhAQNAIAIgADYCDCACQQRqIAJBDGpB6gQQ9AoaIABBOGohACABQUhqIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EobCEBA0AgAiAANgIMIAJBBGogAkEMakHuBBD0ChogAEEoaiEAIAFBWGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC6QBAgJ/AX4jAEEQayICJAACQAJAAkAgAS0ATEEBRw0AIAJBCGogARDtEgJAIAItAAhBBEYNACACKQMIIgRC/wGDQgRSDQILIAFBADoATCABKAIAIQMgAUEANgIAIANBAUcNACABIAEoAgQQrAULIAEoAjRBpJabAUGllpsBEIgUIAFBpJabAUEBELUGIABBBDoAAAwBCyAAIAQ3AgALIAJBEGokAAuXAQIBfwF+IwBBIGsiAyQAIANBEGogAiABQQAQlQICQAJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIANBADYCECADQQhqIAIgA0EQakGDlpsBQQEQuAwCQCADLQAIQQRGDQAgAykDCCIEQv8Bg0IEUQ0AIAAgBDcCAAwBCyAAQQQ6AAALIANBIGokAAuXAQECfyMAQRBrIgMkAAJAAkAgAigCBEUNAAJAIAIoAggiBA0AIANBCGpBBCABEKkcIAMoAgwhBCADKAIIIQIMAgsgAigCACAEQQQgARDaAyECIAEhBAwBCyADQQQgARCpHCADKAIEIQQgAygCACECCyAAIAJBBCACGzYCBCAAIAJFNgIAIAAgBCABIAIbNgIIIANBEGokAAuCAQEDfwJAIANBCEkNACAAIAAgA0EDdiIDQQR0IgRqIAAgA0EcbCIFaiADEOUOIQAgASABIARqIAEgBWogAxDlDiEBIAIgAiAEaiACIAVqIAMQ5Q4hAgsgACACIAEgACgCACIDIAEoAgAiBEkiBSAEIAIoAgAiBklzGyAFIAMgBklzGwuWAQECfyAAQTBqEOQXIABB0ABqKAIAIQECQCAAQdQAaigCACICRQ0AA0AgASgCAEE0QQQQnhIgAUEEaiEBIAJBf2oiAg0ACyAAQdAAaigCACEBCyAAKAJMIAFBBEEEELURIAAoAlhBNEEEEJ4SAkAgAEF/Rg0AIAAgACgCBCIBQX9qNgIEIAFBAUcNACAAQdwAQQQQnhILC5oBAQN/AkACQAJAAkAgASgCCCICIAEoAgxGDQAgASACQQhqNgIIIAIoAgQiAyACKAIAIgRJDQIgAyABKAIEIgJLDQMgAyAEayECIAEoAgAgBEEDdGohAwwBCyABKAIQIQMgAUEANgIQIAEoAhQhAgsgACACNgIEIAAgAzYCAA8LIAQgA0HYuIQBEKkgAAsgAyACQdi4hAEQjyAAC50BAQJ/IAAoAhgiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCGBD7EQsgACgCDCIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAIMEPsRCyAAKAIEIgEgACgCCBDRGSAAKAIAIAFBBEEMELURAkAgACgCHCIBRQ0AIAEgASgCACICQX9qNgIAIAJBAUcNACAAKAIcIAAoAiAQ6g8LC5EBAQN/IAAoAgghAyAAKAIEIQQCQAJAIAAoAgAoAlAiBUUNAAJAIAMgBUsNACADIAVGDQEMAgsgBCAFaiwAAEG/f0wNAQsCQCAEIAVqIAMgBWsgASACEKAcIgNFDQAgASACEJUZIgVFDQADQCAAEJoIGiAFQX9qIgUNAAsLIAMPCyAEIAMgBSADQZD/hAEQlR8AC5gBAQF/IwBBMGsiAyQAIANBCGpBsMeVAUENIAEgAhDdDAJAAkAgAygCCCICRQ0AIANBJGogAiACIAMoAgxBA3RqEJ0LIANBFGogA0EkahDdEyADKAIUQYCAgIB4Rg0AIAAgAykCFDcCACAAQQhqIANBFGpBCGopAgA3AgAMAQsgAEGAgICAeDYCACAAQQE6AAQLIANBMGokAAuYAQEBfyMAQTBrIgMkACADQQhqQYCklwFBDiABIAIQ3QwCQAJAIAMoAggiAkUNACADQSRqIAIgAiADKAIMQQN0ahCdCyADQRRqIANBJGoQ3RMgAygCFEGAgICAeEYNACAAIAMpAhQ3AgAgAEEIaiADQRRqQQhqKQIANwIADAELIABBgICAgHg2AgAgAEEBOgAECyADQTBqJAALmAEBAX8jAEEwayIDJAAgA0EIakHIipYBQRIgASACEN0MAkACQCADKAIIIgJFDQAgA0EkaiACIAIgAygCDEEDdGoQnQsgA0EUaiADQSRqEN0TIAMoAhRBgICAgHhGDQAgACADKQIUNwIAIABBCGogA0EUakEIaikCADcCAAwBCyAAQYCAgIB4NgIAIABBAToABAsgA0EwaiQAC5EBAQN/IwBBMGsiAiQAIAIgARCdBUEMIQEgAigCBCEDAkAgAigCACIEQQtGDQAgACACKQMINwMIIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACAEIQELIAAgATYCACAAIAM2AgQgAkEwaiQAC6ABAgR/AX4jAEEQayIBJAAgAUEIQQhBBBD4DCABKAIEIQICQAJAIAEoAgAiAw0AIAE1AgghBQwBCyABKQIIIQUgAkEJaiIERQ0AIANB/wEgBPwLAAsgAUEIaiIEIAU3AgAgASACNgIEIAEgAzYCACABQsHK2YvGDRDrBSABEIcYEOsFIABBCGogBCkCADcCACAAIAEpAgA3AgAgAUEQaiQAC6cBAAJAIAEgAkHU3JsBQQUQmRxFDQBB5gAPCwJAIAEgAkGKzZsBQQYQmRxFDQBBlAEPCwJAIAEgAkGUzJsBQQYQmRxFDQBB5wAPCwJAIAEgAkGwpJsBQQYQmRxFDQBBlgEPCwJAIAEgAkG1xZsBQQMQmRxFDQBBkwEPCwJAIAEgAkGDpJsBQQYQmRxFDQBBlQEPC0Gef0GkfyABIAJBoMWbAUEJEJkcGwunAQACQCABIAJBqsSbAUEEEJkcRQ0AQegADwsCQCABIAJB4MubAUEFEJkcRQ0AQekADwsCQCABIAJB0cmbAUEEEJkcRQ0AQeoADwsCQCABIAJB65abAUEGEJkcRQ0AQewADwsCQCABIAJBz8ubAUEDEJkcRQ0AQesADwsCQCABIAJB6KCbAUEEEJkcRQ0AQZcBDwtBoH9BpH8gASACQYy7mwFBBhCZHBsL0AEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMhAgsgAiADcrcL0AEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMhAgsgAiADc7cL0AEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMhAgsgAiADcbcLjQEBBH8jAEEQayIDJAAgA0EIaiAAKAIAIgQgACgCBCABELUVIAMoAgghBSADLQAMIQYgACAAKAIMQQFqNgIMIAAgACgCCCAGQQFxazYCCCAEQQAgBWtBGGxqQWhqIgAgAikDADcDACAAQQhqIAJBCGopAwA3AwAgAEEQaiACQRBqKQMANwMAIANBEGokAAuYAQECfyMAQRBrIgYkAEEAIQcCQAJAAkAgAS0AyAFBhAFHDQAgARCHDiAGQQhqIAFBACABKALAARDwDSAGKAIMIQcgBigCCEEBcQ0BCyAAIAc2AiAgACACNgIYIABBAjoAFCAAIAEoArwBNgIcIAAgBa1CIIYgBK2ENwMADAELIAAgBzYCAEECIQMLIAAgAzoAJCAGQRBqJAALrAEBAn8jAEEgayIBJAACQAJAQQAoAujwnQENAAJAAkAgAEUNACAAKAIAIQIgAEEANgIAIAJFDQAgACgCBCEADAELQQBBACgC/OOdASIAQQFqNgL8450BIABFDQILQQAgADYC7PCdAUEAQQE2AujwnQELIAFBIGokAEHs8J0BDwsgAUEANgIYIAFBATYCDCABQdz3hAE2AgggAUIENwIQIAFBCGpB5PeEARCFGwALnwEBA38g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AEEoahDoHg8LIAAQkRcgAEEgahDyHiAAQegAahDwHiAAQcgAahDoHguUAQEDfyAAQRxqEN8VIAAoAgwgACgCEBDVGiAAKAIIIQEgACgCBCICIQMCQANAIAFFDQEgAykDABDGHSABQX9qIQEgA0EYaiEDDAALCyAAKAIAIAIQvSAgACgCNCEBIAAoAjAiAiEDAkADQCABRQ0BIAFBf2ohASADEI8PIANBPGohAwwACwsgACgCLCACQQRBPBCvEQuRAQEEfyMAQSBrIgIkACACQQhqQRBqIgMgAUEsaigCADYCACACQQhqQQhqIgQgAUEkaikCADcDACACIAEpAhw3AwhBFEEEEPseIgVBEGogAygCADYCACAFQQhqIAQpAwA3AgAgBSACKQMINwIAIAFBBGoQqx0gARDoISAAQbjdmwE2AgQgACAFNgIAIAJBIGokAAuCAQIBfwF+AkACQCABrSADrX4iBUIgiKcNACAFpyIBIAJBf2pqIgQgAUkNACAEQQAgAmtxIgEgA0EIamoiAyABSQ0BAkAgA0GAgICAeCACa0sNACAAIAE2AgggACADNgIEIAAgAjYCAA8LIABBADYCAA8LIABBADYCAA8LIABBADYCAAuFAQICfwF+IwBBEGsiBCQAIARBCGpBfyACIANqIgMgAyACSRsiA0H/////ByACrUIDfiIGp0EBdiAGQiCIpxsiBSADIAVLGxC4DSAEKAIIIQUgBCgCDCEDAkAgAkUNACADIAEgAvwKAAALIAAgBTYCCCAAIAI2AgQgACADNgIAIARBEGokAAuSAQEEfyMAQRBrIgMkAAJAAkAgASgCACIEIAIoAgAiBU8NACADQQhqIAJBCGooAgA2AgAgAyACKQIANwMAIAAgAyABKAIEIgYgASgCCBDSCwwBCyADQQhqIAFBCGooAgA2AgAgAyABKQIANwMAIAAgAyACKAIEIgYgAigCCBDSCyAFIQQLIAQgBhCxICADQRBqJAALiQEAAkACQCABQYABSQ0AAkAgAUGAEE8NACACIAFBP3FBgAFyOgABIAIgAUEGdkHAAXI6AABBAiEBDAILIAIgAUE/cUGAAXI6AAIgAiABQQx2QeABcjoAACACIAFBBnZBP3FBgAFyOgABQQMhAQwBCyACIAE6AABBASEBCyAAIAE2AgQgACACNgIAC4QBAgJ/AX4g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RkEfdDYC1AUgAEECNgLIAQuZAQECfyABKAKkDSgCxAIiAiACKAIAIgNBAWo2AgACQCADQX9KDQAACyAAIAIQkRQgAEHoBGogASgCsAoQzw0gASgCyAohAiAAQdgEaiABKALkCiABKAKICxDZDyAAQdgBaiABEP8MIABCADcD6AUgAEKAgICAwAA3A+AFIABCBDcD2AUgACACQQJGQR90NgLUBSAAQQI2AsgBC5kBAQJ/IAEoAqQNKALEAiICIAIoAgAiA0EBajYCAAJAIANBf0oNAAALIAAgAhCRFCAAQegEaiABKAKwChDPDSABKALICiECIABB2ARqIAEoAuQKIAEoAogLENkPIABB2AFqIAEQ/wwgAEIANwPoBSAAQoCAgIDAADcD4AUgAEIENwPYBSAAIAJBAkZBH3Q2AtQFIABBAjYCyAELgQEBBn8CQCABRQ0AQQAhAgNAIAAgAkEGdGoiA0E0aiIEKAIAIQUCQCADKAI4IgZFDQADQCAFKAIAIgcQkAEgB0HAAEEIEJ4SIAVBDGohBSAGQX9qIgYNAAsgBCgCACEFCyADKAIwIAVBBEEMEK8RIAMQ2AcgAkEBaiICIAFHDQALCwuXAQICfwF8IwBBMGsiAiQAAkACQCABKwMAIgREAAAAAAAAAABhDQACQAJAIAS9Qv///////////wCDQv/////////3/wBVDQAgBCACQRdqEPcBIAJBF2prIQEgAkEXaiEDDAELIAJBCGogBBCzGCACKAIMIQEgAigCCCEDCyAAIAMgARCfFAwBCyAAIAEQzRALIAJBMGokAAt6AQJ/IAAoAgAhAQJAIAAoAgQiACgCACICRQ0AIAEgACgCCEF/akF4cWpBCGogAhEDAAsCQCABQX9GDQAgASABKAIEIgJBf2o2AgQgAkEBRw0AIAEgACgCCCICQQQgAkEESxsiAiACIAAoAgRqQQdqQQAgAmtxEKMeCwuRAQEDfwJAAkBBACgC4PCdASICRQ0AIAEoAhAiAyACENUSIgJBDGooAgAiBEkNASADIARB3PaZARCzEQALQeCQmwFByABBiJKbARCMIQALIAJBCGooAgAgA0EDdGooAgAhAyACQQA6AAACQCADIAAoAixHDQAgAUEANgIQCyAAQQE6ADogACABEJcQIABBADoAOguQAQECfwJAAkACQAJAIAEoAgAi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IABBKGohACACQVhqIQIMAAsLC3oBAX8gACgCCEEobCECIAAoAgQhAAJAA0AgAkUNAQJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAQQRqIAEQnB0MAwsgAEEEaiABENAhDAILIABBBGogARC0DQwBCyAAQQRqIAEQ0hALIABBKGohACACQVhqIQIMAAsLC3oBAX8gACgCCEEobCECIAAoAgQhAAJAA0AgAkUNAQJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAQQRqIAEQoR0MAwsgAEEEaiABEKsEDAILIABBBGogARDfDQwBCyAAQQRqIAEQ0xALIABBKGohACACQVhqIQIMAAsLC3YBAX8gACgCCEE4bCECIAAoAgQhAANAAkACQCACRQ0AAkACQAJAIAAoAgAOAwABAgALIABBCGogARCjHSAAQShqIAEQ3CEMAwsgASAAQTBqEPMeDAILIABBBGogARDcIQwBCw8LIABBOGohACACQUhqIQIMAAsLdAIFfwF+IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQAJAIAMpAwAiBkIDg0IAUg0AIAanIgQgBCgCACIFQX9qNgIAIAVBAUcNACAEIAQoAhAQwRsLIANBCGohAyACQX9qIgINAAsLIAAoAgAgAUEIQQgQrxELhgEBAX8jAEEgayICJAAgAkEANgIIIAJCgICAgBA3AgAgAkHgz5sBNgIQIAJCoICAgA43AhQgAiACNgIMAkAgASACQQxqEPkaRQ0AQfjPmwFBNyACQR9qQcSkmwFBsNCbARDoDwALIAAgAikCADcCACAAQQhqIAJBCGooAgA2AgAgAkEgaiQAC3YCA38BfiMAQRBrIgMkACABKAIUIQQgASgCECEFIAMgAUEIahD+ESADQQhqIAIgBSAEIAMoAgAgAygCBBC/DQJAAkAgAy0ACEEERg0AIAMpAwgiBkL/AYNCBFENACAAIAY3AgAMAQsgAEEEOgAACyADQRBqJAALhgEBAX8jAEEgayICJAAgAkEANgIIIAJCgICAgBA3AgAgAkHgz5sBNgIQIAJCoICAgA43AhQgAiACNgIMAkAgASACQQxqEMIhRQ0AQfjPmwFBNyACQR9qQcSkmwFBsNCbARDoDwALIAAgAikCADcCACAAQQhqIAJBCGooAgA2AgAgAkEgaiQAC3kBAX8jAEEQ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ATYCBCACIAA2AgwgAkEEakGM35sBQQcgAkEMakGWBRChCUGgq5sBQQYgAEEIakGYBRChCRC0ESEBIAJBEGokACABC2wBA38jAEEQayIBJAACQAJAIAAoAgAiAg0AQQAhAiABQQxqIQAMAQsgACgCBCEDIAFBATYCDCABQQhqIQALIAAgAjYCAAJAIAEoAgwiAEUNACABKAIIIgJFDQAgAyACIAAQnhILIAFBEGokAAtnAQF/IwBBEGsiBCQAAkACQCAADQBBACEAIARBDGohAwwBCyAEIAI2AgwgACADbCEAIARBCGohAwsgAyAANgIAAkAgBCgCDCIARQ0AIAQoAggiA0UNACABIAMgABCeEgsgBEEQaiQAC2cBAX8jAEEQayIEJAACQAJAIAANAEEAIQAgBEEMaiEDDAELIAQgAjYCDCAAIANsIQAgBEEIaiEDCyADIAA2AgACQCAEKAIMIgBFDQAgBCgCCCIDRQ0AIAEgAyAAEJ4SCyAEQRBqJAALagEBfwJAIAAoAggiAiAAKAIARw0AIAAQ4RULIAAgAkEBajYCCCAAKAIEIAJBBXRqIgAgASkDADcDACAAQQhqIAFBCGopAwA3AwAgAEEQaiABQRBqKQMANwMAIABBGGogAUEYaikDADcDAAtqAQF/AkAgACgCCCICIAAoAgBHDQAgABDjFQsgACACQQFqNgIIIAAoAgQgAkEFdGoiACABKQMANwMAIABBCGogAUEIaikDADcDACAAQRBqIAFBEGopAwA3AwAgAEEYaiABQRhqKQMANwMAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQayOgQE2AgggA0ICNwIUIANBDq1CIIYiBCADrYQ3AyggAyAEIANBBGqthDcDICADIANBIGo2AhAgA0EIaiACEIUbAAt5AQJ/IAAtAAQiASECAkAgAC0ABUUNAEEBIQICQCABQQFxDQACQCAAKAIAIgItAApBgAFxDQAgAigCAEHXtZcBQQIgAigCBCgCDBEMACECDAELIAIoAgBBpsSbAUEBIAIoAgQoAgwRDAAhAgsgACACOgAECyACQQFxC2cBAX8jAEEQayIEJAACQAJAIAANAEEAIQAgBEEMaiEDDAELIAQgAjYCDCAAIANsIQAgBEEIaiEDCyADIAA2AgACQCAEKAIMIgBFDQAgBCgCCCIDRQ0AIAEgAyAAEJ4SCyAEQRBqJAALaQIBfwF+IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EDNgIMIANBlMqAATYCCCADQgI3AhQgA0EOrUIghiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQhRsAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAzYCDCADQcDKgAE2AgggA0ICNwIUIANBDq1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEIUbAAtsAgF/AX4jAEEwayICJAAgAiABNgIEIAIgADYCACACQQM2AgwgAkHwyoABNgIIIAJCAjcCFCACQQ6tQiCGIgMgAkEEaq2ENwMoIAIgAyACrYQ3AyAgAiACQSBqNgIQIAJBCGpBvMiFARCFGwALZwEBfyMAQRBrIgQkAAJAAkAgAA0AQQAhACAEQQxqIQMMAQsgBCACNgIMIAAgA2whACAEQQhqIQMLIAMgADYCAAJAIAQoAgwiAEUNACAEKAIIIgNFDQAgASADIAAQnhILIARBEGokAAt8AQF/IwBBEGsiAyQAAkAgACgCBEEDRg0AIAEpAwBCtuvn6eHYxrZ2Ug0AIAEpAwhCtN+v6pWUsbIQUg0AIAEoAhANACABIABBBGo2AhALIANBCGogACAAKAIAKAIEEQcAIAMoAgggASACIAMoAgwoAigRCwAgA0EQaiQAC3EBAX9BDBCIGiIGQQI2AgggBiADNgIAIAYgBCADayAFajYCBCABIAYgASgCACIDIAMgAkYiAhs2AgACQCACDQAgACADIAQgBRCxGCAGEPMgDwsgACAGNgIMIAAgBTYCCCAAIAQ2AgQgAEGo0IABNgIAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQbD9gQE2AgggA0ICNwIUIANBDq1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEIUbAAtpAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0HQ/YEBNgIIIANCAjcCFCADQQ6tQiCGIgQgA0EEaq2ENwMoIAMgBCADrYQ3AyAgAyADQSBqNgIQIANBCGogAhCFGwALaQIBfwF+IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0ECNgIMIANBhP6BATYCCCADQgI3AhQgA0EOrUIghiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQhRsAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAzYCDCADQej+gQE2AgggA0ICNwIUIANBDq1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEIUbAAtnAQF/IwBBEGsiBCQAAkACQCAADQBBACEAIARBDGohAwwBCyAEIAI2AgwgACADbCEAIARBCGohAwsgAyAANgIAAkAgBCgCDCIARQ0AIAQoAggiA0UNACABIAMgABCeEgsgBEEQaiQAC28BAn8jAEEQayIDJAACQAJAIAEoAgAgASgCCCIETQ0AIANBCGogASAEQQRBBBDtDCADKAIIIgRBgYCAgHhHDQEgASgCCCEECyAAIAQ2AgQgACABKAIENgIAIANBEGokAA8LIAQgAygCDCACEKoeAAtoAQJ/IwBBIGsiASQAIABBNGohAgJAIAAoAjBBAkYNACABIAA2AgggASACNgIMIAEgAUEfajYCGCABIAFBDGo2AhQgASABQQhqNgIQIABBMGogAUEQakHotJgBEJEGCyABQSBqJAAgAgttAQN/AkAgACgCDCIBIAAoAgQiAkYNACABIAJrQQZ2IQEDQCACQTRqIgMoAgAgAkE4aigCABClGiACQTBqKAIAIAMoAgAQxSAgAhDhCiACQcAAaiECIAFBf2oiAQ0ACwsgACgCCCAAKAIAEMcgC2oBA38CQCAALQAlQQJGDQADQCAAKAIgIgAtACVBAkcNAAsLAkAgACgCCCIBDQBBAA8LIAAoAgQhACABQThsQUhqIQECQANAIAAQ2goiAg0BIABBOGohACABIQMgAUFIaiEBIAMNAAsLIAILbwICfwF+IABBCGohAQJAAkAgACgCAA0AIAEpAwAiA0IDg0IAUg0BIAOnIgEgASgCACICQX9qNgIAIAJBAUcNASABIAEoAhAQwRsMAQsgARCnEAsCQCAAKAIoIgBFDQAgABDZASAAQcAAQQgQnhILC28BBH9BACECAkACQCABLQAlRQ0ADAELIAFBAToAJQJA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IgJBdmoOBAIBAQIACyACQdi/f2pBAkkNASACQYCAxABHDQALQQAhAgwBC0EBIQILIAFBEGokACACC2YBAn8gACgCCEEGdCECIAAoAgQhAwJAA0AgAkUNASADIAEQjx4gAkFAaiECIANBwABqIQMMAAsLIAAoAhAgACgCFCABEK4aIABBGGogARD4HCABIABBPGoQ0xcgAEHAAGogARD1HgtxAQF/AkAgACgCACIBQQpGDQACQAJAAkACQAJAAkAgAUF+aiIBQQEgAUEISRsOCAECAwQGBgUAAQsgAEEEahDfHQ8LIAApAwgQxh0PCyAAEPocDwsgACkDCBDQHQ8LIAApAwgQxh0PCyAAKAIEEIUeCwtuAQJ/IAEoAgAhAiABQQA2AgACQCABLQBMDQAgASgCBCEDIAEoAjQgASgCHCABKAIgENofAkAgASgCREUNACABQQA2AkAgASABKAI8QQFqNgI8CyABQQE6AEwgAkUNACABIAMQrAULIABBBDoAAAtXAQF+AkACQCADQcAAcQ0AIANFDQEgAiADQT9xrSIEhiABQQAgA2tBP3GtiIQhAiABIASGIQEMAQsgASADQT9xrYYhAkIAIQELIAAgATcDACAAIAI3AwgLVwEBfgJAAkAgA0HAAHENACADRQ0BIAJBACADa0E/ca2GIAEgA0E/ca0iBIiEIQEgAiAEiCECDAELIAIgA0E/ca2IIQFCACECCyAAIAE3AwAgACACNwMIC2UBAn8jAEEQayICJAAgAiABNgIIAkACQCABEIQdQf8BcSIDQQJGDQAgACADOgABQQAhAwwBCyAAIAJBCGogAkEPakGAgIABENkGNgIEQQEhAwsgACADOgAAIAEQkh8gAkEQaiQAC2EBAX8jAEEgayICJAACQCAAKAIIQQJGDQAgAiABNgIIIAIgADYCDCACIAJBH2o2AhggAiACQQxqNgIUIAIgAkEIajYCECAAQQhqIAJBEGpBkNaCARCRBgsgAkEgaiQAIAALYAECfyMAQRBrIgIkAAJAAkAgAA0AQQAhACACQQxqIQMMAQsgAkEBNgIMIAJBCGohAwsgAyAANgIAAkAgAigCDCIARQ0AIAIoAggiA0UNACABIAMgABCeEgsgAkEQaiQAC2QBBH8jAEEQayICJAAgAC0ADCEDIAJBBGogACgCBCAAKAIIQQoQvgEg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DAELIAJBCGogASgCBCIBKAIAIAEoAgQoAiQRBwAgAigCDCEDIAIoAgghAQsgACADNgIEIAAgATYCACACQRBqJAALXAEBfwJAIAAoAggiAyAAKAIARw0AIAAgAhCpFgsgACADQQFqNgIIIAAoAgQgA0EYbGoiACABKQMANwMAIABBCGogAUEIaikDADcDACAAQRBqIAFBEGopAwA3AwALWgECfyMAQRBrIgIkAAJAAkAgACgCACIDQQFqQX5xIANGDQAgAkEIaiAAELgZIAIoAgwhACACKAIIIQMMAQsgACgCCCEACyABIAMgABDtBSEDIAJBEGokACADC1wBA38CQCAAKAIMIgEgACgCBCICRg0AIAEgAmtBAnYhAQNAIAIoAgAiA0EIahCbAyADQSBBCBCeEiACQQRqIQIgAUF/aiIBDQALCyAAKAIIIAAoAgBBBEEEEK8RC10BA38CQCAAKAIMIgEgACgCBCICRg0AIAEgAmtBBHYhASACQQxqIQIDQCACKAIAIgMQqgEgA0HAAEEIEJ4SIAJBEGohAiABQX9qIgENAAsLIAAoAgggACgCABDEIAtnAQF/IwBBEGsiAiQAIAIgAEEUajYCDCABQbXWmwFBBUHQ95kBQQQgAEEIakGBAkGw/JkBQQQgAEEQakGAA0H5/ZkBQQMgAEGwAkH8/ZkBQQggAkEMakGGAxD4CyEAIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtABRBAkYNACACIAA2AgwgAUG11psBQQUgAkEMakHcAhCkCyEADAELIAIgADYCCCABQZeVmgFBDyACQQhqQZ0EEKQLIQALIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtABRBAkYNACACIAA2AgwgAUG11psBQQUgAkEMakHcAhCkCyEADAELIAIgADYCCCABQdyLmgFBCiACQQhqQaQDEKQLIQALIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtADRBBEYNACACIAA2AgwgAUHX/ZkBQQYgAkEMakG2AxCkCyEADAELIAIgADYCCCABQduSmgFBDCACQQhqQcoDEKQLIQALIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtABRBAkYNACACIAA2AgwgAUG11psBQQUgAkEMakHcAhCkCyEADAELIAIg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AyACQeAAQQgQnhIgAUEMQQQQnhILC1wBA38jAEEQayIDJAAgA0EIaiACQQFBAUG84JsBENgUIAMoAgghBCADKAIMIQUCQCACRQ0AIAUgASAC/AoAAAsgACACNgIIIAAgBTYCBCAAIAQ2AgAgA0EQaiQAC1oBAn8jAEEQayICJAACQAJAIAEtABRBAkcNACABKAIMIQMgASgCCCEBDAELIAJBCGogARCdFCACKAIMIQMgAigCCCEBCyAAIAE2AgAgACADNgIEIAJBEGokAAtuAQF+AkACQAJAAkACQAJAIAAoAgAOBgECAgMEBQALIAApAxAhASAAKQMIEMYdIAEQxh0PCyAAKQMIIAApAxgQ1iELDwsgACkDGBCnHw8LIAApAxAgACgCGBDXIQ8LIAApAwgQxh0gACkDEBDGHQtgAQF/IwBBEGsiASQAAkAgACgCAA0AIAEgACgCBBCBECAAELcfIABBCGogAUEIaikCADcCACAAIAEpAgA3AgAgACgCAA0AQbKjmwFBKEGA2JsBEN0XAAsgAUEQaiQAIAALWAEDfyMAQRBrIgEkABC4HSECIAAtAAwhAyABIABBBGooAgAgAEEIaigCABDcEiACIAEpAgA3AgAgASADOgAMIAJBCGogAUEIaikCADcCACABQRBqJAAgAgtXAQN/IwBBEGsiBCQAQQAhBUEAIQYCQCABLQDIAUESRw0AIARBCGogASACIAMQvwIgBCgCCEEBcSEGIAQoAgwhBQsgACAFNgIEIAAgBjYCACAEQRBqJAALWQIBfwF+IwBBEGsiAyQAIANBCGogAiABKAIIIAFBABDKBgJAAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAQsgAEEEOgAACyADQRBqJAALYwACQAJAIAEgAkGah4ABQQYQmRwNAAJAIAEgAkGgh4ABQQgQmRwNACAAIAEgAkGoh4ABQQIQgxA2AgRBASECDAILIABBAToAAUEAIQIMAQtBACECIABBADoAAQsgACACOgAAC1kBAX8jAEEgayIDJAACQCABQf//A0sNACAAIAE7AQQgAEEANgIAIANBIGokAA8LIANBADYCGCADQQE2AgwgA0GwiYABNgIIIANCBDcCECADQQhqIAIQhRsAC2EBBH8gACgCACECIAAoAgQhA0EAIQRBACEFAkAD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AyACIQQCQCABKAKIAiIFRQ0AIAJBAWohAyABLwGQAyEECyABQQhByANBmAMgAhsQox4gACAFNgIAIAAgBK1CIIYgA62ENwIEC1ABAn8jAEEQayIBJAACQCAAKAIQIgJFDQAgAUEEaiAAKAIEIAAoAgggAkEBahCRDyAAKAIMIAEoAgxrIAEoAgQgASgCCBCjHgsgAUEQaiQAC1IBAn9BACECAkAgACgCACgCACIDKAIAIAAoAgQoAgAgAUEEdGsiAEFwaigCAEcNACADKAIIIAMoAgwgAEF4aigCACAAQXxqKAIAEJkcIQILIAILWQEBfyABKAIMIQICQAJAAkACQCABKAIEDgIAAQILIAINAUEBIQFBACECDAILIAINACABKAIAIgEoAgQhAiABKAIAIQEMAQsgACABEMUJDwsgACABIAIQnxQLVAEBf0EALQDA8Z0BGgJAQSAQhQEiAw0AAAsgAyABNgIEIAMgADYCACADIAIpAwA3AwggA0EQaiACQQhqKQMANwMAIANBGGogAkEQaikDADcDACADC1gBAX8jAEEQayICJAAgAiAAQRBqNgIMIAFB1PeZAUEDQdD3mQFBBCAAQQhqQYECQYD4mQFBBSAAQcgDQYX4mQFBAyACQQxqQckDEK0MIQAgAkEQaiQAIAALWAEBfyMAQRBrIgIkACACIAA2AgwgAUHjgpoBQQlB0PeZAUEEIABBDGpBgQJBsPyZAUEEIABBFGpBgANB7IKaAUEFIAJBDGpB3gMQrQwhACACQRBqJAAgAAt0AQF8RAAAAAAAAPC/IQECQCAAvUL///////////8Ag0L/////////9/8AVQ0AIACdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxv8A0F/c7chAQsgAQtYAQF/IwBBIGsiACQAIABBoOudATYCCCAAQaDrnQE2AgwgACAAQR9qNgIYIAAgAEEMajYCFCAAIABBCGo2AhBBqOudASAAQRBqQZTzmgEQkQYgAEEgaiQAC0sBA38jAEEQayICJAAgAkEIaiABKAIAEL4DIAAgAigCDCIDIAEoAgwiBCADIARJGyADIAQgAyAESxsQvRggASAAEMshIAJBEGokAAtPAQN/IwBBEGsiAiQAQQAhA0EAIQQCQCABKAIAQQJGDQAgAkEIaiABEIURIAIoAgwhAyACKAIIIQQLIAAgAzYCBCAAIAQ2AgAgAkEQaiQAC08BA38jAEEQayICJABBACEDQQAhBAJAIAEoAgBBB0YNACACQQhqIAEQ0w0gAigCDCEDIAIoAgghBAsgACADNgIEIAAgBDYCACACQRBqJAALWQEBfyABKAIMIQICQAJAAkACQCABKAIEDgIAAQILIAINAUEBIQFBACECDAILIAINACABKAIAIgEoAgQhAiABKAIAIQEMAQsgACABEMUJDwsgACABIAIQzxMLUAECfyMAQRBrIgMkACABIAEoAngiBCACcjYCeCADQQhqIAEQswsgAygCCCECIAEgBDYCeCADKAIMIQEgACACNgIAIAAgATYCBCADQRBqJAALUgEDfyMAQRBrIgIkACABIAEoAngiA0H//3txNgJ4IAJBCGogARCzCyACKAIIIQQgASADNgJ4IAIoAgwhASAAIAQ2AgAgACABNgIEIAJBEGokAAtRAQN/IwBBEGsiAiQAIAEgASgCeCIDQYAgcjYCeCACQQhqIAEQuwQgAigCCCEEIAEgAzYCeCACKAIMIQEgACAENgIAIAAgATYCBCACQRBqJAALUgEDfyMAQRBrIgIkACABIAEoAngiA0H/v39xNgJ4IAJBCGogARCZBCACKAIIIQQgASADNgJ4IAIoAgwhASAAIAQ2AgAgACABNgIEIAJBEGokAAtKAQN/QQAhAwJAIAJFDQACQANAIAAtAAAiBCABLQAAIgVHDQEgAEEBaiEAIAFBAWohASACQX9qIgJFDQIMAAsLIAQgBWshAwsgAwtTAQN/IAAoAgghASAAKAIEIgIhAwJAA0AgAUUNAQJAIAMoAgBBgICAgHhGDQAgAxCpFQsgAUF/aiEBIANBIGohAwwACwsgACgCACACQQRBIBCvEQtQAAJAAkAgAUF/TA0AAkACQCABDQBBASECDAELQQAtAMDxnQEaIAFBARCAGiICRQ0CCyAAIAE2AgggACACNgIEIAAgATYCAA8LIAIQ0xkLAAtSAQF/AkACQAJAIAJFDQBBACEDIAEoAtQCIgFFDQFBACECDAILQQAhAiABKALQAiIBDQFBASEDC0EBIQIgAxDHHCEBCyAAIAE2AgQgACACNgIAC1UBAX9BDCECAkAgAS0AC0H+AUcNACABKAII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IAFBCkY6AAAgAyABIAIoAhARCAALRgECfyMAQRBrIgMkACABIAIQIyECIANBCGoQwhsgAygCDCEBIAAgAygCCEEBcSIENgIAIAAgASACIAQbNgIEIANBEGokAAtNAQF/QQEhAgJAAkAgAEH/AXFBAUYNACABIQICQAJAAkAgAUH/AXEOAwADAQALIABB/wFxDQEMAwsgAEH/AXENAgtBACECCyACDwtBAgtEAQJ/AkAgACgCBCIBRQ0AIAAoAgAiAiAAKAIMEJkMIAEgAUEMbEETakF4cSIAakEJaiIBRQ0AIAIgAGsgAUEIEJ4SCwtSAQF/IwBBEGsiASQAAkBBAiAAdCIAQYCAgMAASQ0AIAEgAK03AwhB1KSbAUErIAFBCGpBiOmDAUG8hYQBEOgPAAsgAUEQaiQAIABBgICAgAJyC0wBAX8CQAJAIAFFDQBBACECAkAgAC0AAEECcUUNACABQQxNDQIgACgACSECCyACDwtBAEEAQazdhAEQsxEAC0ENIAFBrN6EARCPIAALTwEBfyAAKAKwASECIABBADYCsAECQCACQQFxDQBBhICEAUEfQaSAhAEQ8hIACyAAIAAoAnAgACgCtAEiAiABayABIAJrIAIgAUsbajYCcAtJAQF/IAAgASgCACICIAEoAgQiASgCCEF/akF4cWpBCGogASgCFBEHACACIAIoAgAiAEF/ajYCAAJAIABBAUcNACACIAEQ6g8LC14BAX8gASgCACIBIAEoAgAiAkEBajYCAAJAIAJBf0oNAAALIAAgARCRFCAAQYCAgIB4NgLUBSAAQYCAgIB4NgLoBCAAQYCAgIB4NgLYBCAAQQI2AsgEIABBAjYCyAELXgEBfyABKAJIIgEgASgCACICQQFqNgIAAkAgAkF/Sg0AAAsgACABEJEUIABBgICAgHg2AtQFIABBgICAgHg2AugEIABBgICAgHg2AtgEIABBAjYCyAQgAEECNgLIAQtfAQF/IAEoApADIgEgASgCACICQQFqNgIAAkAgAkF/Sg0AAAsgACABEJEUIABBgICAgHg2AtQFIABBgICAgHg2AugEIABBgICAgHg2AtgEIABBAjYCyAQgAEECNgLIAQtfAQF/IAEoAoACIgEgASgCACICQQFqNgIAAkAgAkF/Sg0AAAsgACABEJEUIABBgICAgHg2AtQFIABBgICA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KAIIQQR0IQIgACgCBCEAAkADQCACRQ0BIABBDGogARDLISACQXBqIQIgAEEQaiEADAALCws8AQJ/IAAgAhD/GyAAKAIIIQMCQCACQThsIgRFDQAgACgCBCADQThsaiABIAT8CgAACyAAIAMgAmo2AggLOgEBfyAAKAIIQQR0IQIgACgCBCEAAkADQCACRQ0BIABBDGogARCrBCACQXBqIQIgAEEQaiEADAALCws9AQJ/AkADQCABIgMgADYCDCADKAIQIgRFDQEgBEEEaiEBIAQoAgBBCEYNAAsLIANBEGoQtR8gAyACNgIQC0UBAX8CQAJAAkAgACgCACIAKAIADgIAAQILIAAoAggiAUUNASAAKAIEQQEgARCjHgwBCyAAQQRqEO8UCyAAQRRBBBCeEgs8AQF/IAAtABQhASAAQQE6ABQCQAJAIAENACAAQXhqIgAgACgCAEEBaiIBNgIAIAFFDQEgABCcIgsPCwALOgECfyMAQRBrIgEkACABQQRqIAAQ9wwgASgCCCIAIAEoAgwQCiECIAEoAgQgABCwICABQRBqJAAgAgs+AgF/AX4jAEEQayICJAAgAkEIaiABQQhBIEHwjIABEIMUIAIpAwghAyAAQQA2AgggACADNwIAIAJBEGokAAs+AgF/AX4jAEEQayICJAAgAkEIaiABQQhBEEGQjYABEIMUIAIpAwghAyAAQQA2AgggACADNwIAIAJBEGokAAs/AQF/IwBBEGsiAiQAIAIgACgCACgCADYCDCABQdbEgAFBDkHYq5cBQQMgAkEMakEnEI4NIQAgAkEQaiQAIAALOgEBfyMAQRBrIgIkACACQQA2AgwgAiABIAJBDGoQwBUgACACKAIAIAIoAgQQpgQhASACQRBqJAAgAQs4AAJAAkAgASACSw0AIAIgA00NASACIAMgBBCPIAALIAEgAiAEEKkgAAsgACACNgIEIAAgATYCAAtBAQF/IAAoAgAhAAJAIAEoAggiAkGAgIAQcQ0AAkAgAkGAgIAgcQ0AIAAgARCcIA8LIAAgARCzDw8LIAAgARC0Dws7AgF/AX4jAEEQayIDJAAgA0EIaiABQQFBASACENsTIAMpAwghBCAAQQA2AgggACAENwIAIANBEGokAAs7AgF/AX4jAEEQayIDJAAgA0EIaiABQQRBBCACENsTIAMpAwghBCAAQQA2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JAAgAUEIakEEIAAQyBwCQCABKAIIIgANAAALIAFBEGokACAACzQBAX8jAEEQayIDJAACQCAADQBBiM+YAUEOIANBD2pBtNKAASACEOgPAAsgA0EQaiQAIAELMQEBfyMAQRBrIgIkACACQQhqIAAQ4RcgASACKAIIIAIoAgwQ7QUhACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQdS0mAFBESACQQxqQcIAEKQLIQAgAkEQaiQAIAALMgEBfyMAQRBrIgIkACACIAA2AgwgAUG8zZkBQQQgAkEMakEyEKQLIQAgAkEQaiQAIAALKwACQCAAIAFBAnRqQXxqIgANAEGwkoMBEJsgAAsgAa1CBYYgACgCAGetfQs0AQF/AkAgACgCCCIDIAAoAgBHDQAgACACEMENCyAAIANBAWo2AgggACgCBCADaiABOgAACy0AAkAgAyABTw0AIAEgAyAEEKMgAAsgACADIAFrNgIEIAAgAiABQQJ0ajYCAAstAAJAIAMgAU8NACABIAMgBBCjIAALIAAgAyABazYCBCAAIAIgAUECdGo2AgALMwEBfyMAQRBrIgIkACACIAA2AgwgAUHF7oMBQQogAkEMakH8ABCkCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBkPWEAUEGIAJBDGpBpQEQpAshACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQfz0hAFBByACQQxqQacBEKQLIQAgAkEQaiQAIAALMwEBfyMAQRBrIgIkACACIAA2AgwgAUHS9IQBQRIgAkEMakGoARCkCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBwPSEAUEGIAJBDGpBqwEQpAshACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQdbvhAFBCSACQQxqQa0BEKQLIQAgAkEQaiQAIAALNgEBf0EALQDA8Z0BGgJAQQwQhQEiAQ0AAAsgASAAKQIANwIAIAFBCGogAEEIaigCADYCACABCzIBAX8jAEEQayICJAAgAiAANgIMIAFBpO+EAUELIAJBDGpBMhCkCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBmu+EAUEKIAJBDGpBwgAQpAshACACQRBqJAAg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Rw0AIAAgAiABEJIVRSEECyAECyUBAX8gASgCACECIAFBADYCACABKAIEIQEgAhCFHSAAIAEQjhILIAEBf0EAIQQCQCABIANHDQAgACACIAEQkhVFIQQLIAQLJQEBfyABKAIAIQIgAUEANgIAIAEoAgQhASACEIUdIAAgARDRAQsfACAAIAIQgQwgAEEQaiACQRBqEIEMIAJBCCABEJUJCx4AIAAoAiRBACAAKAIcGyAAKAIUIAAoAghqQQJ0agsiAQF/AkAgASAAKAIAIAAoAggiAmtNDQAgACACIAEQwgoLCyABAX9BACEEAkAgASADSQ0AIAIgACADEJIVRSEECyAECyQAAkAgAA0AQcT+nAFBMhDkIAALIAAgAiADIAQgASgCEBEPAAskAAJAIAANAEHE/pwBQTIQ5CAACyAAIAIgAyAEIAEoAhARDgALJAACQCAADQBBxP6cAUEyEOQgAAsgACACIAMgBCABKAIQEQ4ACyQAAkAgAA0AQcT+nAFBMhDkIAALIAAgAiADIAQgASgCEBEOAAskAAJAIAANAEHE/pwBQTIQ5CAACyAAIAIgAyAEIAEoAhARLwALJAACQCAADQBBxP6cAUEyEOQgAAsgACACIAMgBCABKAIQETkACyQAAkAgAA0AQcT+nAFBMhDkIAALIAAgAiADIAQgASgCEBE2AAskAAJAIAANAEHE/pwBQTIQ5CAACyAAIAIgAyAEIAEoAhARDwALIQACQCACRQ0AIAEgAhDZHyEBCyAAIAI2AgQgACABNgIACyIBAX8gACAAKAIAIgFBf2o2AgACQCABQQFHDQAgABDdEgsLIQAgACACEK4FIABBwABqIAJBwABqEK4FIAJBCCABEKwGCyQAIAAoAgAgACgCBEEEQQQQtREgACgCDCAAKAIQQQRBBBC1EQsfACAAIAIQigggAEEgaiACQSBqEIoIIAJBCCABEIYICx8AIAAgAhCJCCAAQQhqIAJBCGoQiQggAkEIIAEQgQgLHgAgASgCACACQQR0a0FwaigCAEHdy92eeWxBD3etCyYBAX9BAC0AwPGdARoCQEHAABCFASIBDQAACyABIAAoAgAQRCABCyQAIABBADYCECAAQQA6ABQgACABKQMINwMIIAAgASkDADcDAAslACABKAIAIAAtAABBAnRB5NydAWooAgBBBiABKAIEKAIM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NgIEIABBkNubATYCAAshACAAQoaOrZTj9K2WzQA3AwggAELB0czxy7CL0UE3AwALIQAgAELS98LKhY3E6Bk3AwggAEKh2uHa5tywu75/NwMACyAAIABCitrjnYXusOxqNwMIIABCno+sgc6Z2fZKNwMACyEAIABC37y4td/S3s86NwMIIABCvMPzmOfznfmBfzcDAAsTACAAQbDemwE2AgQgACABNgIACxMAIABB9N2bATYCBCAAIAE2AgALEwAgAEEoNgIEIABBwNGbATYCAAsNACAAIAFBAUEBEK8RCwwAIAAgASACEL0RAAsMACAAQYEBEDFBAEcLCwAgACABEARBAUYLCwAgACABEAhBAEcLDQAgACABQQRBBBCvEQsNACAAIAFBCEEgEK8RCw8AIAAoAgAgACgCBBCOIAsNACAAIAFBAUEBELARCw8AIAAoAgAgACgCBBCoHgsNACAAIAEgAhDFH0EACxAAQQAtAMDxnQEaIAAQhQELDQAgACABQQRBGBCwEQsPAEG0jYEBQSsgABDdFwALDgAgACgCAEEBIAEQxwcLDQAgACABQQRBEBCvEQsNACAAIAFBBEEIEK8RCw0AIAAgAUEEQRQQrxELDgAgACABQQRBwAAQrxELDQAgACABQQRBHBCvEQsOACAAKQMAQQEgARC1BwsMACAAIAEgAhC8EQALDQAgACABQQFBARC1EQsNACAAIAFBBEEEELURCw0AIAAgAUEEQQwQtRELDAAgACABIAIQdUEACw0AIAAgASACEKQBQQALDAAgACABIAIQvhEACwwAIABBDGogARCCDAsNACAAIAFBAUEBELkRCw8AIAAoAgAgACgCBBCrIAsNACAAIAEgAhCHGkEACw0AIAAoAgAoAghBAUYLDAAgASAAIAIQvxEACw0AIAAgAUEBQQEQnRILDQAgACABQQRBBBCdEgsPACAAKAIAIAAoAgQQpCALDQAgACABQQRBHBDAEQsOACAAKAIAQQJBARCeEgsNACAAIAFBBEEQEMARCw0AIAAgAUEEQQgQtRELDgAgACgCAEEMQQQQnhILDwAgACgCACgCACABEMgJCw0AIAAgAUEBQQEQlRILDQAgACABQQhBGBCVEgsPACAAKAIAIAAoAgQQuSALDQAgASAAQf8BcRDOHAsNACAAIAFBCEEYEK8RCw0AIAAgAUEIQTgQrxELDQAgACABQQhBIBCvEQsNACAAIAFBBEEEEK8RCw0AIAAgAUEIQSgQrxELDQAgACABQQhBMBCvEQsOACAAIAFBCEHYABCvEQsNACAAIAFBBEEQEK8RCw0AIAAgAUEEQQwQrxELDgAgACABQQhByAAQrxELDgAgACABQQhBwAAQrxELDQAgACABQQRBGBCvEQsOACAAIAFBCEHQABCvEQsNACAAIAFBBEEMEK8RCw8AIAAoAgAgACgCBBCOIAsNACAAIAIgASADEJQdCw0AIAAgAiABIAMQkx0LDwAgACgCACgCACABEJESCw8AIAAoAgAoAgAgARCABQsPACAAKAIAKAIAIAEQoQoLDQAgACABQQhBEBCvEQsSAEGyo5sBQShB5KGaARDdFwALDwAgACgCACAAKAIEEI4gCw8AIAAoAgAgACgCBBCOIAsNACAAIAFBBEEEEK8RCw8AIAAoAgAgACgCBBCOIAsPACAAEOseIAAoAgQQ8h8LDwAgACgCACAAKAIEEJciCw0AIAAgASgCACACEHMLDQAgACABKAIAIAIQRQsOACAAIAEoAgAgAhCoBgsNACABIABBBEEEEK8RCw0AIAAgASgCACACEEwLDwAgACgCACAAKAIEEJciCw8AIAAoAgggACgCDBCXIgsNACAAIAFBBEEMEK8RCwsAIAAjAGokACMACwkAIAAQA0EBRgsJACAAEAdBAUYLCQAgACABEDQACwsAIAAgARDxEkEACwwAIAAQ5R0gABDnIAsLACAAQSxBBBCeEgsJACAAEClBAEcLCQAgABAwQQBHCw4AIAFB4auXAUECEO0FCwsAIAEgACgCtAJNCwoAIAAgASACEFYLCwAgASAAKALQAk0LCgAgACABIAIQfAsLACABIAAoAsgCTQsLACAAIAEgAhCOAQsLACAAIAEgAhDKAQsLACAAKAIAIAEQagsLACAAQQxBBBCeEgsLACAAIAIgAxC1DwsLACACIAAgARDtBQsMACAAKAIAIAEQnxALCgAgABD4DxpBAQsOACABQeGrlwFBAhDtBQsJACAAEB1BAUYLDAAgACgCACABEO4MCwwAIAAoAgAgARD1BgsMACAAKAIAIAEQxhwLDAAgACgCACABEJwKCwoAIABBMGoQ5BcLDAAgACgCACABEMYcCwwAIAAoAgAgARCXEwsMACAAKAIAIAEQmBMLDAAgACgCACABEMgJCwwAIAAoAqQNQcQCagsLACAALQCsCkEBcQsMACAAKAKkDUHEAmoLDAAgACgCpA1BxAJqCwsAIAAoAowDQQJLCwsAIAAoAowDQQJLCwwAIAAoAgAgARD/DQsOACABQeGrlwFBAhDtBQsMACAAKAIAIAEQyx8LCgAgACABEI0hAAsKACAAIAEQmBsACwwAIAAoAgAgARDGHAsMACAAKAIAIAEQjQwLDAAgACABKQIANwMACwsAIAAgAUEEEPUXCwoAIAAQ1wIaQQELDAAgACgCACABEPERCwwAIAAoAgAgARCiGgsMACAAKAIAIAEQyBcLDAAgACgCACABELAbCwwAIAAoAgAgARD/DQsKACAAIAGtEJwPCwoAIAAQ+QwaQQELDAAgACgCACABENcfCwoAIAAQ1AwaQQELCwAgACABEOgJQQALCwAgACABIAIQhRULCwAgASAAIAIQtCELDAAgACABQZMCEPABCwwAIAAgAUGUAhDwAQsMACAAIAFBlQIQ8AELDAAgACABQZYCEPABCwwAIAAgAUGXAhDwAQsMACAAIAFBmAIQ8AELDAAgACABQZkCEPABCwwAIAAgAUGaAhDwAQsMACAAIAFBmwIQ8AELDAAgACABQZwCEPABCwwAIAAgAUGdAhDwAQsMACAAIAFBngIQ8AELDAAgACABQZ8CEPABCwwAIAAgAUGgAhDwAQsMACAAIAFBoQIQ8AELDAAgACABQaICEPABCwwAIAAgAUGjAhDwAQsMACAAIAFBpAIQ8AELDAAgACABQaUCEPABCwwAIAAgAUGmAhDwAQsMACAAIAFBpwIQ8AELCwAgACABIAIQhRULCwAgASAAIAIQnSELCwAgASAAIAIQtCELDAAgACgCACABEPMYCwwAIAAoAgAgARD3CAsMACAAKAIAIAEQ6B0LDAAgACgCACABENsQCwwAIAAoAgAgARD6CAsMACAAKAIAIAEQoRoLDAAgACgCACABELwJCwwAIAAoAgAgARDcAgsMACAAKAIAIAEQ1QQLDAAgACgCACABEIAFCwwAIAAoAgAgARC2DAsMACAAKAIAIAEQkRILDAAgACgCACABEKEKCwwAIAAoAgAgARCcIAsMACAAIAEpAhA3AwALDAAgACgCACABEI0MCwwAIAAoAgAgARCNDAsM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AAC5AgAAugIAACwAAAAEAAAAuwIAALoCAAAsAAAABAAAALwCAAC7AgAALAUgAL0CAAC+AgAAvwIAAMACAADBAgAAwgIAAMMCAADEAgAAxQIAAMYCAADHAgAAQ291bGRuJ3QgZGVzZXJpYWxpemUgaTY0IG9yIHU2NCBmcm9tIGEgQmlnSW50IG91dHNpZGUgaTY0OjpNSU4uLnU2NDo6TUFYIGJvdW5kcwD0riAAAQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXBfdGhyb3coKWAgb24gYSBgTm9uZWAgdmFsdWUvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS0xLjAuMjI4L3NyYy9wcml2YXRlL2RlLnJzAAAACQYgAGQAAADtAQAAEQAAAAkGIABkAAAA8wEAABUAAAAJBiAAZAAAAOEBAAARAAAACQYgAGQAAADjAQAAFQAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXBfdGhyb3coKWAgb24gYW4gYEVycmAgdmFsdWV2YWx1ZSBpcyBtaXNzaW5nTWFwQWNjZXNzOjpuZXh0X3ZhbHVlIGNhbGxlZCBiZWZvcmUgbmV4dF9rZXkvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9jb3JlLTEuMC4yMjgvc3JjL2RlL3ZhbHVlLnJzHQcgAGcAAABnBQAAGwAAAGJpbmRpbmdzL2JpbmRpbmdfdHlwZXNjcmlwdF93YXNtL3NyYy9lcnJvcl9yZXBvcnRlci5ycwAAlAcgADYAAABfAAAAHAAAAJQHIAA2AAAAegAAADYAAACUByAANgAAAIwAAAAeAAAAlAcgADYAAACRAAAAFgAAAJQHIAA2AAAAdgAAABoAAABGYWlsZWQgdG8gcmVhZCBjb250ZW50cyBmb3IgbGFiZWwAAAAcCCAAIQAAADxub25lPiAgWyBgYCAob2Zmc2V0OiAsIGxlbmd0aDogXQoAAE4IIAADAAAAUQggAAIAAABTCCAACwAAAF4IIAAKAAAAk/0gAAMAAABoCCAAAgAAAGNhbm5vdCBjcmFzaCBiZWNhdXNlIHJlc3Qgd291bGQgaGF2ZSBiZWVuIE5vbmUsIHNlZSBkb2NzIG9uIHRoZSBgbGFiZWxgIGZpZWxkIG9mIEZhbmN5U3BhbgAAlAcgADYAAADmAAAAOwAAAJQHIAA2AAAAtwEAAAkAAAACAAAAAAAAAAIAAAAAAAAAAAAAACAAAOACAAAAAAAAAAEAAAACAAAAAQAAACAAAOiUByAANgAAAMMBAAAuAAAAYXNzZXJ0aW9uIGZhaWxlZDogbGluZV9yYW5nZS5jb250YWlucygmb2Zmc2V0KQAAlAcgADYAAADfAQAACQAAAJQHIAA2AAAA6QEAAB4AAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAJQHIAA2AAAAJQIAABYAAAACAAAAAAAAAAEAAAAEAAAAAAAAACAAAOgCAAAAAAAAAAIAAAAAAAAAAQAAACAAAOACAAAAAAAAAAIAAAAAAAAAAgAAACAAAOACAAAAAAAAAAIAAAAAAAAAAwAAACAAAOABAAAAAAAAAAEAAAAAAAAAJMsmAAEAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAkyyYAAQAAALD9IAACAAAAJMsmAAEAAAAkyyYAAQAAAAEAAAAAAAAAJMsmAAEAAADY0CYAAQAAAJQHIAA2AAAAvQIAABkAAACUByAANgAAANUCAAAXAAAAYmluZGluZ3MvYmluZGluZ190eXBlc2NyaXB0X3dhc20vc3JjL2xpYi5ycwDIAgAAxAAAAAQAAADJAgAAygIAAMsCAABpdCBzaG91bGQgbm90IGZhaWwgd2l0aG91dCBlbWl0dGluZyBlcnJvcnMgdG8gaGFuZGxlcgAAAMAKIAArAAAAewAAABAAAADACiAAKwAAAKsAAAAfAAAAwAogACsAAAC1AAAAJQAAAG5vdCB5ZXQgaW1wbGVtZW50ZWQ6IGpzb24gc3ViZGlhZ25vc3RpYzogAAAAbAsgACkAAADACiAAKwAAAJQAAAAWAAAAzAIAABgAAAAEAAAAzQIAAM4CAADPAgAA0AIAAMAKIAArAAAAIwAAABcAAABJbnB1dCBpcyBub3QgYSBzdHJpbmcgb3IgVWludDhBcnJheUlucHV0IFVpbnQ4QXJyYXkgaXMgbm90IHZhbGlkIHV0Zi04AADACiAAKwAAAEEAAABAAAAAc25pcHBldHN0YXJ0TGluZXN0YXJ0Q29sdW1uZW5kTGluZWVuZENvbHVtbgAAAAAACAAAAAgAAADRAgAAAAAAAAAAAAABAAAA0gIAAAAAAAAIAAAACAAAANMCAAAAAAAACAAAAAQAAADUAgAAAAAAAAQAAAAEAAAA1QIAAAAAAAAEAAAABAAAACcAAAAAAAAABAAAAAQAAAAyAAAAQm9ycm93ZWRPd25lZENvd0J5dGVzbmVlZGxlANYCAABcAQAABAAAAMsAAADWAgAAXAEAAAQAAADXAgAA2AIAANkCAADaAgAA2wIAANwCAADdAgAA3gIAAN8CAADgAgAA4QIAAOICAADjAgAA5AIAAOUCAADmAgAA5wIAAMsAAADsDCAA6AIAAEgBAAAEAAAA6QIAAOgCAABIAQAABAAAAOoCAADrAgAA7AIAANoCAADtAgAA7gIAAO8CAADwAgAA8QIAAPICAADzAgAA9AIAAPUCAAD2AgAA9wIAAPgCAAD5AgAA6QIAAFQNIAD6AgAAZAEAAAQAAAD7AgAA+gIAAGQBAAAEAAAA/AIAAP0CAAD+AgAA2gIAAP8CAAAAAwAAAQMAAAIDAAADAwAABAMAAAUDAAAGAwAABwMAAAgDAAAJAwAACgMAAAsDAAD7AgAAvA0gAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvYXV0b21hdG9uLnJzJA4gAGgAAAAmBQAALQAAACQOIABoAAAA1wUAAA0AAAAgPio+7O8gAGIAAACwAAAARQAAAG1hdGNoIHN0YXRlIG11c3QgaGF2ZSBub24tZW1wdHkgcGlkc8AOIAAkAAAA7O8gAGIAAAC3AAAACQAAAOzvIABiAAAAswAAABkAAADs7yAAYgAAALMAAAAhAAAAZGZhOjpERkEoCm1hdGNoIGtpbmQ6IAAAJg8gAAwAAADY0CYAAQAAAHByZWZpbHRlcjogAEQPIAALAAAA2NAmAAEAAABzaG9ydGVzdCBwYXR0ZXJuIGxlbmd0aDogAAAAYA8gABkAAADY0CYAAQAAAGxvbmdlc3QgcGF0dGVybiBsZW5ndGg6IIwPIAAYAAAA2NAmAAEAAABhbHBoYWJldCBsZW5ndGg6IAAAALQPIAARAAAA2NAmAAEAAABzdHJpZGU6INgPIAAIAAAA2NAmAAEAAABieXRlIGNsYXNzZXM6IAAA8A8gAA4AAADY0CYAAQAAAG1lbW9yeSB1c2FnZTogAAAQECAADgAAANjQJgABAAAARiA6CjAQIAACAAAAMhAgAAIAAAAgbWF0Y2hlczogAADs7yAAYgAAAEwBAAArAAAA7O8gAGIAAADJAQAAFgAAAOzvIABiAAAAywEAABYAAADs7yAAYgAAANgBAABDAAAA7O8gAGIAAADoAQAAEgAAAOzvIABiAAAA6gEAABIAAADs7yAAYgAAAOEBAABHAAAA7O8gAGIAAADtAQAAFAAAAOzvIABiAAAA7gEAABYAAADs7yAAYgAAABICAAATAAAA7O8gAGIAAAATAgAAGgAAAOzvIABiAAAAFAIAABUAAADs7yAAYgAAAE0CAAAeAAAA7O8gAGIAAABwAgAAJAAAAOzvIABiAAAAcQIAACIAAADs7yAAYgAAAHICAAAfAAAA7O8gAGIAAADQAgAALAAAAOzvIABiAAAA0QIAACoAAADs7yAAYgAAANICAAAzAAAA7O8gAGIAAADTAgAALwAAAOzvIABiAAAAwgIAABsAAADs7yAAYgAAAMcCAAAmAAAA7O8gAGIAAADHAgAALQAAAOzvIABiAAAAyAIAAC0AAADs7yAAYgAAAMMCAAAmAAAA7O8gAGIAAADDAgAALQAAAOzvIABiAAAAxAIAACsAAADs7yAAYgAAAJ8CAAAhAAAA7O8gAGIAAACgAgAAHwAAAOzvIABiAAAAoQIAABwAAADs7yAAYgAAAIQCAAAlAAAA7O8gAGIAAACFAgAAIwAAAOzvIABiAAAAhgIAACAAAADs7yAAYgAAAIECAAAlAAAA7O8gAGIAAACCAgAAIwAAAOzvIABiAAAAegIAACEAAADs7yAAYgAAAHsCAAAfAAAA7O8gAGIAAACUAgAAJgAAAOzvIABiAAAAkgIAACYAAADs7yAAYgAAALkCAAAmAAAA7O8gAGIAAAC6AgAAJgAAAOzvIABiAAAAtwIAACYAAABjb250aWd1b3VzOjpORkEoCgAAAE7wIABtAAAASwEAACEAAAABAAAAAAAAADDdJgABAAAAk/0gAAMAAAACAAAAAAAAAAAABgAAAAAAAAAAACAAAOkCAAAAAAAAAAAABgAAAAAAAQAAACAAAOkgICAgICAgICBtYXRjaGVzOiAAAE7wIABtAAAAbAEAAEAAAABO8CAAbQAAAG0BAAASAAAATvAgAG0AAAD3AQAAIwAAAE7wIABtAAAA9wEAABgAAABO8CAAbQAAAPgBAAAeAAAATvAgAG0AAAD4AQAAMQAAAE7wIABtAAAA+QEAABkAAABO8CAAbQAAAPIBAAAjAAAATvAgAG0AAADyAQAAGAAAAE7wIABtAAAA8wEAACMAAABO8CAAbQAAAPMBAAAYAAAATvAgAG0AAADtAQAAIwAAAE7wIABtAAAA7QEAABgAAABO8CAAbQAAAO4BAAAjAAAATvAgAG0AAADvAQAAGQAAAE7wIABtAAAAmAIAADQAAABO8CAAbQAAAJsCAAAmAAAATvAgAG0AAACcAgAAHwAAAE7wIABtAAAAnAIAADIAAABO8CAAbQAAAJMCAAA0AAAATvAgAG0AAACVAgAAGAAAAE7wIABtAAAAjwIAADQAAABO8CAAbQAAAJACAAAsAAAATvAgAG0AAADSAgAAEQAAAE7wIABtAAAA0wIAABEAAABO8CAAbQAAAM4CAAARAAAATvAgAG0AAADPAgAAEQAAAE7wIABtAAAA0AIAABEAAABO8CAAbQAAAMgCAAARAAAATvAgAG0AAADJAgAAEQAAAE7wIABtAAAA3AIAABUAAABO8CAAbQAAANsCAAARAAAATvAgAG0AAADfAgAAFQAAAE7wIABtAAAA3gIAABEAAABO8CAAbQAAAAoDAAARAAAATvAgAG0AAAANAwAAEQAAAE7wIABtAAAA+AIAABUAAABlcXVpdmFsZW5jZSBjbGFzc2VzIGFyZSBuZXZlciBlbXB0eQDAFSAAIwAAAE7wIABtAAAALgMAAAkAAABO8CAAbQAAADADAAAQAAAATvAgAG0AAAA/AwAAHQAAAE7wIABtAAAAswMAACUAAABO8CAAbQAAAOADAAAjAAAATvAgAG0AAADhAwAAIQAAAE7wIABtAAAA4gMAACgAAABO8CAAbQAAAOMDAAAmAAAATvAgAG0AAADuAwAAEgAAAE7wIABtAAAA7wMAABoAAABO8CAAbQAAANgDAAAmAAAATvAgAG0AAADSAwAAHgAAAE7wIABtAAAAxgMAACIAAAAc8SAAcAAAAAABAAAVAAAAHPEgAHAAAAARAQAAJwAAABzxIABwAAAAEQEAADAAAAAc8SAAcAAAAAsBAAApAAAAHPEgAHAAAAAdAQAAIwAAABzxIABwAAAALQEAACMAAAAc8SAAcAAAAEgBAAAkAAAAHPEgAHAAAABIAQAAQQAAABzxIABwAAAAgwEAABcAAAAc8SAAcAAAAIYBAAAXAAAAHPEgAHAAAACKAQAANwAAABzxIABwAAAAmQEAAD8AAAAc8SAAcAAAAKEBAAAYAAAAHPEgAHAAAACNAQAAGAAAABzxIABwAAAAugEAABgAAABzdGF0ZSBtdXN0IG5vdCBiZSBkZW5zZSB5ZXQArBcgABsAAAAc8SAAcAAAALgBAAAJAAAAc3RhdGUgbXVzdCBoYXZlIHplcm8gdHJhbnNpdGlvbnPgFyAAIAAAABzxIABwAAAAvQEAAAkAAAAc8SAAcAAAAMoBAAAcAAAAHPEgAHAAAADIAQAAHAAAABzxIABwAAAA1wEAAB8AAAAc8SAAcAAAANkBAAAbAAAAHPEgAHAAAADfAQAAGAAAABzxIABwAAAA7wEAACMAAAAc8SAAcAAAAPEBAAAbAAAAHPEgAHAAAAD0AQAAJwAAABzxIABwAAAA/gEAACIAAAAc8SAAcAAAAP0BAAAaAAAAHPEgAHAAAAAEAgAAHQAAABzxIABwAAAAAgIAABwAAAAc8SAAcAAAABMCAAAVAAAAHPEgAHAAAAAdAgAAFgAAAHBhdHRlcm5zIGxvbmdlciB0aGFuIFNtYWxsSW5kZXg6Ok1BWCBhcmUgbm90IGFsbG93ZWQc8SAAcAAAAD0CAAAOAAAAHPEgAHAAAABBAgAAFQAAABzxIABwAAAABwUAACQAAAAc8SAAcAAAAA4FAAATAAAAHPEgAHAAAAAYBQAALgAAABzxIABwAAAAIAUAACgAAAAc8SAAcAAAACsFAAAXAAAAHPEgAHAAAABDBQAAMgAAABzxIABwAAAARwUAAC8AAAAc8SAAcAAAAEwFAAAgAAAAYXNzZXJ0aW9uIGZhaWxlZDogb2xkX3N0YXJ0X3VpZCA8IG9sZF9zdGFydF9haWQAHPEgAHAAAAB6BQAACQAAAAMAAAAc8SAAcAAAALwFAAASAAAAHPEgAHAAAAC/BQAAPwAAABzxIABwAAAAxQUAABsAAAAc8SAAcAAAAJoFAAA+AAAAYW5jaG9yZWQgc3RhcnQgc3RhdGUgc2hvdWxkIGJlIGF0IGluZGV4IDMAAABQGiAAKQAAABzxIABwAAAAewUAAAkAAAAc8SAAcAAAAOQFAAAfAAAAHPEgAHAAAADtBQAAKAAAABzxIABwAAAA8QUAAB8AAAAc8SAAcAAAAPMFAAAcAAAAHPEgAHAAAAAwBgAAGAAAABzxIABwAAAAJwYAADoAAAAc8SAAcAAAACcGAAAcAAAAHPEgAHAAAAAjBgAAFgAAABzxIABwAAAAQgYAAB8AAAAc8SAAcAAAAFYGAAApAAAAHPEgAHAAAABcBgAAIwAAABzxIABwAAAAYQYAACcAAABub25jb250aWd1b3VzOjpORkEoClzzIABpAAAAhwIAACkAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmJ5X2lkLmxlbigpIDw9IHUxNjo6TUFYIGFzIHVzaXplL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9wYWNrZWQvcGF0dGVybi5yc68bIABtAAAASAAAAAkAAACvGyAAbQAAAEsAAAAUAAAArxsgAG0AAABMAAAAFAAAAK8bIABtAAAAXQAAABoAAACvGyAAbQAAAF0AAAAwAAAArxsgAG0AAACPAAAAHAAAAK8bIABtAAAAyAAAACUAAABhc3NlcnRpb24gZmFpbGVkOiBwYXR0ZXJucy5sZW4oKSA+PSAxL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9wYWNrZWQvcmFiaW5rYXJwLnJzsRwgAG8AAAA9AAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGhhc2hfbGVuID49IDEAsRwgAG8AAAA/AAAACQAAALEcIABvAAAATQAAACwAAACxHCAAbwAAAE8AAAAXAAAAsRwgAG8AAABPAAAAIAAAAEAAAACxHCAAbwAAAGAAAAArAAAAsRwgAG8AAABvAAAAEQAAALEcIABvAAAAWwAAAAkAAACxHCAAbwAAAI4AAAAjAAAAsRwgAG8AAACXAAAACQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvdXRpbC9hbHBoYWJldC5yc0J5dGVDbGFzc2VzKDxvbmUtY2xhc3MtcGVyLWJ5dGU+KQAAAOQdIABsAAAA9QAAAC4AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvZGVidWcucnMAAACEHiAAaQAAABgAAAA9AAAAhB4gAGkAAAAVAAAADQAAAAwDAAAwAAAABAAAAA0DAAAOAwAADwMAAEgAAAAIAAAAEAMAABEDAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvcHJlZmlsdGVyLnJzAAAAOB8gAG0AAABgAQAADQAAADgfIABtAAAAkQEAAB4AAABSYXJlQnl0ZU9mZnNldHMAOB8gAG0AAADYAQAAGQAAAAAAAAACAAAAAQAAABIDAAATAwAAAAAAAAIBAAABAAAAFAMAABUDAAAAAAAAAwEAAAEAAAAWAwAAFwMAADgfIABtAAAAPQIAABYAAAA4HyAAbQAAACgCAAAVAAAAOB8gAG0AAACCAgAALwAAADgfIABtAAAApAIAAC0AAAA4HyAAbQAAALwCAAA6AAAAOB8gAG0AAAC/AgAAOwAAADgfIABtAAAA0wIAAEYAAAA4HyAAbQAAANYCAAA7AAAAOB8gAG0AAAD8AgAAFgAAAAAAAAABAAAAAQAAABgDAAAZAwAAAAAAAAIAAAABAAAAGgMAABsDAAAAAAAAAwAAAAEAAAAcAwAAHQMAADgfIABtAAAAMQMAABYAAAA4HyAAbQAAABYDAAAkAAAAOB8gAG0AAAAiAwAAEQAAADgfIABtAAAATwMAABkAAAA4HyAAbQAAAGEDAAAtAAAAOB8gAG0AAAByAwAAOgAAADgfIABtAAAAhAMAAEYAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvcmVtYXBwZXIucnNgISAAbAAAAHIAAAASAAAAYCEgAGwAAACMAAAAJAAAAGAhIABsAAAAkQAAACAAAABgISAAbAAAAJMAAAAdAAAAYCEgAGwAAACZAAAAHwAAAFBhdHRlcm5zYnlfaWRvcmRlcnRvdGFsX3BhdHRlcm5fYnl0ZXNpbXBtZW1vcnlfdXNhZ2VQYWNrZWRSYXJlQnl0ZU9mZnNldFJhcmVCeXRlc09uZWJ5dGUxUmFyZUJ5dGVzVHdvb2Zmc2V0c2J5dGUyUmFyZUJ5dGVzVGhyZWVieXRlM1N0YXJ0Qnl0ZXNPbmVTdGFydEJ5dGVzVHdvU3RhcnRCeXRlc1RocmVlL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL3ByaW1pdGl2ZXMucnMAySIgAG4AAADhAgAAAQAAAFN0YXRlSURFcnJvcgAAAAAEAAAABAAAAB4DAAAfAwAADAAAAAQAAAAgAwAAIQMAACIDAABsaWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5yc3wjIAAgAAAALgIAABEAAABsaWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMArCMgABsAAADoAQAAFwAAAAAAAAAAAAAAAQAAACMDAABhIGZvcm1hdHRpbmcgdHJhaXQgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3Igd2hlbiB0aGUgdW5kZXJseWluZyBzdHJlYW0gZGlkIG5vdGxpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwAAPiQgABgAAACKAgAADgAAAAAAAAAAAAAAAQAAACQDAABsaWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAeCQgABoAAAC+AQAAHQAAAGxpYnJhcnkvYWxsb2Mvc3JjL3N5bmMucnMAAACkJCAAGQAAAIQB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AQICAQICAgQBDAEBAQcBQQEEAggBBwEcAQQBBQEBAwcBAAIZARkBHwEZAR8BGQEfARkBHwEZAQgAHwYG1QcBEQIHAQIBBQU+IQFwLQoHEAEAHhIsABzkHgIBAAcBBAECAQ8BxTtEAwEDAQAEARsBAgEBAgEBCgEEAQEBAQYBBAEBAQEBAQMBAgEBAgEBAQEBAQEBAQECAQECBAEHAQQBBAEBAQoBEQUDAQUBEQAaBhoGGgAAIAAG3gIADgAPAAAAAAAFAAAAcAAHAC0BAQECAQIBAUgLMBUQAWUHAgYCAgEEIwEeG1sLOgkJARgEAQkBAwEFKwM7CSoYASA3AQEBBAgEAQMHCgIdAToBAQECBAgBCQEKAhoBAgI5AQQCBAICAwMBHgIDAQsCOQEEBQECBAEUAhYGAQE6AQECAQQIAQcDCgIeATsBAQEMAQkBKAEDATcBAQMFAwEEBwILAh0BOgECAgEBAwMBBAcCCwIcAjkCAQECBAgBCQEKAh0BSAEEAQIDAQEIAVEBAgcMCGIBAgkLB0kCGwEBAQEBNw4BBQECBQsBJAkBZgQBBgECAgIZAgQDEAQNAQICBgEPAQADAAQcAx0CHgJAAgEHCAECCwkBLQMBAXUCIgF2AwQCCQEGA9sCAgE6AQEHAQEBAQIIBgoCATAfMQQwCgQDJgkMAiAEAgY4AQECAwEBBTgIAgKYAwENAQcEAQYBAwLGQAABwyEAA40BYCAABmkCAAQBCiACUAIAAQMBBAEZAgUBlwIaEg0BJggZCwEBLAMwAQIEAgICASQBQwYCAgICDAEIAS8BMwEBAwICBQIBASoCCAHuAQIBBAEAAQAQEBAAAgAB4gGVBQADAQIFBCgDBAGlAgAEQQUAAk8ERgsxBHsBNg8pAQICCgMxBAICBwE9AyQFAQg+AQwCNAkBAQgEAgFfAwIEBgECAZ0BAwgVAjkCAQEBAQwBCQEOBwMFQwECBgEBAgEBAwQDAQEOAlUIAgMBARcBUQECBgEBAgEBAgEC6wECBAYCAQIbAlUIAgEBAmoBAQECCGUBAQECBAEFAAkBAvUBCgQEAZAEAgIEASAKKAYCBAgBCQYCAy4NAQIABwEGAQFSFgIHAQIBAnoGAwEBAgEHAQFIAgMBAQEAAgsCNAUFAxcBAAEGDwAMAwMABTsHAAE/BFEBCwIAAgAuAhcABQMGCAgCBx4ElAMANwQyCAEOARYFAQ8ABwERAgcBAgEFZAGgBwABPQQABP4CAAdtBwBggPAAMAp4AgUBAgMACoYKxgoACnYKBAZsCnYKdgoCBm4NcwoIB2cKaAcHE20KYAp2CkYUAApGCgAUAAPvCgYKFgoACoALpQoGCrYKVgqGCgYKAAEDBgYKxjMCBQA8ThYAHgABAAEZCQ4DAASKCh4IAQ8gCicPAAq8CgAGmgomCsYKFgpWCgAKAAoALQw5EQIAGyQEHQEIAYYFygoACBkHJwlLBRYGoAICEAIuQAk0Ah4DSwVoCBgIKQcABjAKBgoAH54KKgRwB4YegAo8CpAKBxT7CgAKdgoACmYKBhRMDAATXQoAClYd4wpGCgAKZhUAbwAKAApWCoYKAQcACgAXAAoAFAwUbBkAMgAKAAoACvcKAAmACgA7AQMBBEwtAQ8ADQAKAAAAAAAAAQAAAAAAAAAKAAAAAAAAAGQAAAAAAAAA6AMAAAAAAAAQJwAAAAAAAKCGAQAAAAAAQEIPAAAAAACAlpgAAAAAAADh9QUAAAAAAMqaOwAAAAAA5AtUAgAAAADodkgXAAAAABCl1OgAAAAAoHJOGAkAAABAehDzWgAAAIDGpH6NAwBsaWJyYXJ5L2NvcmUvc3JjL251bS9kZWMyZmx0L2RlY2ltYWxfc2VxLnJzALA0IAArAAAAVgAAACcAAACwNCAAKwAAAIgAAAATAAAAsDQgACsAAACwAAAAIAAAALA0IAArAAAAxwAAACUAAACwNCAAKwAAAPQAAAAVAAAAsDQgACsAAAD/AAAAGAAAAAAAAAgBCAMIBhAJEA0QEhgXGB0YJCArIDMgPCBGKFAoWyhnMHMwgDCOOJw4qzi7OMxA3UDvQAJJFUkpST5RU1FpUYBRmFmwWclZ42H9YRhiNGpQam1qi2qqcsly6XIKeyt7TXtwg5ODt4PcgwKMKIxPjHeUn5TIlPKcHAUcBRwFHAUFAgUBAgUGAgUDAQIFAQUGAgUHCAECBQMJAAYCBQEJBQMBAgUJBwYFBgIFBAgIAggBAgUCBAQBBAAGAgUBAgIABwADAQIFBgEAAwUBBQYCBQMABQEHBQcIAQIFAQUCBQgHCAkABgIFBwYCCQMJBAUDAQIFAwgBBAYJBwIGBQYCBQEJAAcDBAgGAwIIAQIFCQUDBgcEAwEGBAAGAgUEBwYIAwcBBQgCAAMBAgUCAwgEAQgFBwkBAAEFBgIFAQEJAgAJAggJBQUABwgBAgUFCQYABAYEBAcHBQMJAAYCBQIJCAACAwICAwgHBgkFAwECBQEECQABAQYBAQkDCAQHBgUGAgUHBAUABQgABQkGCQIDCAIIAQIFAwcCBQIJAAIJCAQGAQkBBAAGAgUBCAYCBgQFAQQJAgMACQUHAAMBAgUJAwEDAgIFBwQGAQUEBwgFAQUGAgUEBgUGBgECCAcDAAcHAwkCBQcIAQIFAgMCCAMABgQDBgUDCAYJBgIICQAGAgUBAQYEAQUDAgEIAgYJAwQIAQQEBQMBAgUFCAIABwYGAAkBAwQGBwQABwICBgUGAgUCCQEAAwgDAAQFBgcDAwcAAwYBAwIIAQIFAQQFBQEJAQUCAggDBgYIBQEIAAYGBAAGAgUHAgcFCQUHBgEEAQgDBAIFCQADAwIAAwECBQMGAwcJBwgIAAcACQEHAQIJBQEGBgABBQYCBQEIAQgJCAkEAAMFBAUIBQYEBwUIAwAABwgBAgUJAAkECQQHAAEHBwIJAggCAwcJAQUAAwkABgIFBAUEBwQHAwUACAgGBAYEAQEICQUHBQEJBQMBAgUCAgcDBwMGBwUEBAMCAwIABQkEBwgHBQkHBgUGAgUBAQMGCAYIAwcHAgEGAQYAAgkHAwkDBwkICAIIAQIFBQYIBAMEAQgIBgAIAAgAAQQIBgkGCAkJBAEEAAYCBQIIBAIBBwAJBAMABAAEAAAHBAMECAQECQcABwADAQIFAQQCAQAIBQQHAQUCAAIAAAMHAQcEAgIECAUDBQEFBgIFBwEABQQCBwMFBwYAAQAAAQgFCAcBAQIEAgYHBQcIAQIFAwUFAgcBAwYHCAgAAAUAAAkCCQMFBQYCAQMDBwgJAAYCBQEHBwYDBQYIAwkEAAACBQAEBgQGBwcIAQAGBggJBAUDAQIFCAgIAQcIBAEJBwAAAQIFAgMCAwMICQAFAwMEBAcCBgUGAgUEBAQACAkCAAkIBQAABgIGAQYBBgkEBQIGBgcCAwYDAggBAgUCAgIABAQGAAQJAgUAAwEDAAgACAQHAgYDAwMGAQgBBgQABgIFAQEBAAICAwACBAYCBQEFBgUEAAQCAwYDAQYGCAAJAAgCAAMBAgUFBQUBAQEFAQIDAQIFBwgCBwACAQEIAQUIAwQABAUEAQAB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AAAEAQAAGAAAANisIABoAAAABAEAACUAAADYrCAAaAAAAMIBAAAdAAAA2KwgAGgAAADDAQAAGQAAANisIABoAAAACgIAABsAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9tZW1jaHItMi43LjYvc3JjL2FyY2gvYWxsL21vZC5ycwAAADCuIABlAAAALAAAAB4AAAA8c2VhcmNoZXIgZnVuY3Rpb24+AKiuIAATAAAAY2FsbDxzZWFyY2hlciBraW5kIHVuaW9uPgAAAMiuIAAVAAAARmluZGVyaGFzaBtbMTIzNDU2Nzg5G1swbQAAAFrrJgBKAAAACwIAABcAAABa6yYASgAAAAoCAAAyAAAASW9FcnJvck91dE9mQm91bmRzL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pdGVyLnJzY2FwYWNpdHkgb3ZlcmZsb3cAAACEryAAEQAAAAAAAAAEAAAABAAAADIAAAA2ryAATgAAAPYFAAAVAAAAAAAAAAQAAAAAAAAAAQAAAG5lZ2F0aXZlIHZhbHVlcyBhcmUgbm9uLXplcm8vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWdpbnQvc2hpZnQucnMAAADsryAAaQAAAGYAAAAoAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9hZGRpdGlvbi5ycwAAAGiwIABtAAAAOwAAABoAAABosCAAbQAAAGgAAABCAAAAaLAgAG0AAABpAAAANAAAAGiwIABtAAAAagAAACIAAABosCAAbQAAAG8AAAAXAAAAaLAgAG0AAACJAAAAGwAAAGiwIABtAAAAjgAAABsAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWd1aW50L2RpdmlzaW9uLnJzAAAASLEgAG0AAAAcAAAABgAAAGF0dGVtcHQgdG8gZGl2aWRlIGJ5IHplcm8AAADIsSAAGQAAAEixIABtAAAAVwAAAAkAAABIsSAAbQAAAN0AAAA5AAAASLEgAG0AAADuAAAAHwAAAEixIABtAAAA0gAAAAkAAABIsSAAbQAAABUBAAAOAAAASLEgAG0AAAAWAQAADgAAAEixIABtAAAAGgEAAA8AAABIsSAAbQAAAFEBAAAMAAAASLEgAG0AAAAgAQAAIQAAAEixIABtAAAAIQEAABgAAABIsSAAbQAAAEIBAAA8AAAASLEgAG0AAABGAQAAKQAAAEixIABtAAAASwEAAA8AAABIsSAAbQAAAE4BAAAbAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9tdWx0aXBsaWNhdGlvbi5ycwDMsiAAcwAAACwAAAAcAAAAY2Fycnkgb3ZlcmZsb3cgZHVyaW5nIG11bHRpcGxpY2F0aW9uIQAAAFCzIAAlAAAAzLIgAHMAAAA5AAAABQAAAMyyIABzAAAARwAAABMAAADMsiAAcwAAAEgAAAAbAAAAzLIgAHMAAABPAAAAEwAAAMyyIABzAAAAUAAAABsAAADMsiAAcwAAAC0BAAAmAAAAzLIgAHMAAAAuAQAAJgAAAMyyIABzAAAAMQEAACYAAADMsiAAcwAAADIBAAAmAAAAzLIgAHMAAAAzAQAAJgAAAMyyIABzAAAAkwEAACcAAADMsiAAcwAAAJIBAAAmAAAAzLIgAHMAAADmAAAAGgAAAMyyIABzAAAA5wAAABoAAADMsiAAcwAAAOwAAAAlAAAAzLIgAHMAAAD0AAAAFgAAAMyyIABzAAAA9QAAABYAAADMsiAAcwAAAAABAAAWAAAAzLIgAHMAAAASAQAAHgAAAMyyIABzAAAADwEAAB4AAADMsiAAcwAAAKAAAAAfAAAAzLIgAHMAAACkAAAAFgAAAMyyIABzAAAAaAAAAB8AAADMsiAAcwAAAJwBAAAkAAAAzLIgAHMAAACvAQAAHAAAAMyyIABzAAAAuQEAAA8AAADMsiAAcwAAALwBAAAPAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9zdWJ0cmFjdGlvbi5yczC1IABwAAAANAAAABoAAAAwtSAAcAAAADUAAAAaAAAAQ2Fubm90IHN1YnRyYWN0IGIgZnJvbSBhIGJlY2F1c2UgYiBpcyBsYXJnZXIgdGhhbiBhLsC1IAA0AAAAMLUgAHAAAABFAAAABQAAADC1IABwAAAAXQAAABoAAAAwtSAAcAAAAF4AAAAaAAAAYXNzZXJ0aW9uIGZhaWxlZDogYV9oaS5pc19lbXB0eSgpAAAAMLUgAHAAAABiAAAABQAAADC1IABwAAAAZQAAAAUAAAAwtSAAcAAAAIQAAAAxAAAAMLUgAHAAAACFAAAANAAAADC1IABwAAAAhwAAACUAAADkxyYAbAAAAEkAAAAUAAAA5McmAGwAAABfAAAADgAAAOTHJgBsAAAAVQAAABIAAADkxyYAbAAAAHgAAAAUAAAA5McmAGwAAAB9AAAADQAAAOTHJgBsAAAAfwAAABoAAADkxyYAbAAAAIQAAAAKAAAA5McmAGwAAACJAAAAEgAAAOTHJgBsAAAA8AAAABUAAADkxyYAbAAAAPoAAAATAAAA5McmAGwAAABiAgAAEwAAAOTHJgBsAAAAZAIAABgAAADkxyYAbAAAAGsCAAAXAAAA5McmAGwAAABtAgAADQAAAOTHJgBsAAAAZgIAABEAAADkxyYAbAAAAHwCAAATAAAA5McmAGwAAACTAgAADQAAAOTHJgBsAAAAhgIAABEAAADkxyYAbAAAAK4CAAATAAAA5McmAGwAAADlAgAAHAAAAOTHJgBsAAAA5wIAAA0AAADkxyYAbAAAAN8CAAARAAAA5McmAGwAAADVAgAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEb1M8UAAAAAAAAAAAAAACVc8JIDQAAAAAQv4EMAAAAl5zbdQsAAAAAAAAAAAAAAJEb1M8KAAAAAMqaOwkAAAArbYuMCQAAAAAAoRkIAAAAIRCfMAgAAAAAwfZXCAAAAIGbwpgIAAAAAAAAAAAAAABxRXUYBwAAAIC8fSQHAAAAe2ZHNQcAAAAAQEtMBwAAAB1uWmsHAAAAgOGslAcAAABng/HKBwAAAAAAZAsGAAAAUUqNDgYAAABArmkSBgAAAEmRFxcGAAAAABC5HAYAAACZSHQjBgAAAECocysGAAAAQTvmNAYAAAAAAAAAAAAAAME8+kwGAAAAQNgTXAYAAAAZtZFtBgAAAAAQv4EGAAAAyeDtmAYAAABAPnezBgAAANHEu9EGAAAAAAAk9AYAAABJ0+cGBQAAAKAwygcFAAAAuyvDCAUAAAAAbNQJBQAAAP2s/woFAAAA4L5GDAUAAADvhqsNBQAAAAAAMA8FAAAA8TrWEAUAAAAgX6ASBQAAAOOqkBQFAAAAAHSpFgUAAAAlKO0YBQAAAGBNXhsFAAAAl4L/HQUAAAAAgNMgBQAAAJkX3SMFAAAAoDUfJwUAAAAL4ZwqBQAAAAA8WS4FAAAATYRXMgUAAADgE5s2BQAAAD9hJzsFAAAAAAAAAAAAAABBoShFBQAAACAUpUoFAAAAM0Z5UAUAAAAARKlWBQAAAHU5OV0FAAAAYHItZAUAAADnWoprBQAAAACAVHMFAAAA6Y+QewUAAACgWkOEBQAAAFvScY0FAAAAAAwhlwUAAACdP1ahBQAAAODIFqwFAAAAjydotwUAAAAAAFDDBQAAAJEb1M8FAAAAIGn63AUAAACD/cjqBQAAAAAURvkFAAAAsYQcAwQAAAAQq0IDBAAAACEsagMEAAAAABCTAwQAAADhXr0DBAAAABAh6QMEAAAA8V4WBAQAAAAAIUUEBAAAANFvdQQEAAAAEFSnBAQAAACB1toEBAAAAAAAEAUEAAAAgdlGBQQAAAAQbH8FBAAAANHAuQUEAAAAAOH1BQQAAADx1TMGBAAAABCpcwYEAAAA4WO1BgQAAAAAEPkGBAAAACG3PgcEAAAAEGOGBwQAAACxHdAHBAAAAADxGwgEAAAAEedpCAQAAAAQCroIBAAAAEFkDAkEAAAAAABhCQQAAADB57cJBAAAABAmEQoEAAAAkcVsCgQAAAAA0coKBAAAADFTKwsEAAAAEFeOCwQAAACh5/MLBAAAAAAQXAwEAAAAYdvGDAQAAAAQVTQNBAAAAHGIpA0EAAAAAIEXDgQAAABRSo0OBAAAABDwBQ8EAAAAAX6BDwQAAAAAAAAAAAAAAAGCgRAEAAAAEBAGEQQAAABRto0RBAAAAACBGBIEAAAAcXymEgQAAAAQtTcTBAAAAGE3zBMEAAAAABBkFAQAAAChS/8UBAAAABD3nRUEAAAAMR9AFgQAAAAA0eUWBAAAAJEZjxcEAAAAEAY8GAQAAADBo+wYBAAAAAAAoRkEAAAAQShZGgQAAAAQKhUbBAAAABET1RsEAAAAAPGYHAQAAACx0WAdBAAAABDDLB4EAAAAIdP8HgQAAAAAENEfBAAAAOGHqSAEAAAAEEmGIQQAAADxYWciBAAAAADhTCMEAAAA0dQ2JAQAAAAQTCUlBAAAAIFVGCYEAAAAAAAQJwQAAACBWgwoBAAAABB0DSkEAAAA0VsTKgQAAAAAIR4rBAAAAPHSLSwEAAAAEIFCLQQAAADhOlwuBAAAAAAQey8EAAAAIRCfMAQAAAAQS8gxBAAAALHQ9jIEAAAAALEqNAQAAAAR/GM1BAAAABDCojYEAAAAQRPnNwQAAAAAADE5BAAAAMGYgDoEAAAAEO7VOwQAAACREDE9BAAAAAARkj4EAAAAMQD5PwQAAAAQ72VBBAAAAKHu2EIEAAAAABBSRAQAAABhZNFFBAAAABD9VkcEAAAAceviSAQAAAAAQXVKBAAAAFEPDkwEAAAAEGitTQQAAAABXVNPBAAAAAAAAFEEAAAAAWOzUgQAAAAQmG1UBAAAAFGxLlYEAAAAAMH2VwQAAABx2cVZBAAAABANnFsEAAAAYW55XQQAAAAAEF5fBAAAAKEESmEEAAAAEF89YwQAAAAxMjhlBAAAAACROmcEAAAAkY5EaQQAAAAQPlZrBAAAAMGyb20EAAAAAACRbwQAAABBObpxBAAAABBy63MEAAAAEb4kdgQAAAAAMWZ4BAAAALHer3oEAAAAENsBfQQAAAAhOlx/BAAAAAAQv4EEAAAA4XAqhAQAAAAQcZ6GBAAAAPEkG4kEAAAAAKGgiwQAAADR+S6OBAAAABBExpAEAAAAgZRmkwQAAAAAABCWBAAAAIGbwpgEAAAAEHx+mwQAAADRtkOeBAAAAABhEqEEAAAA8Y/qowQAAAAQWcymBAAAAOHRt6kEAAAAABCtrAQAAAAhKayvBAAAABAztbIEAAAAsUPItQQAAAAAceW4BAAAABHRDLwEAAAAEHo+vwQAAABBgnrCBAAAAAAAwcUEAAAAwQkSyQQAAAAQtm3MBAAAAJEb1M8EAAAAAFFF0wQAAAAxbcHWBAAAABCHSNoEAAAAobXa3QQAAAAAEHjhBAAAAGGtIOUEAAAAEKXU6AQAAABxDpTsBAAAAAABX/AEAAAAUZQ19AQAAAAQ4Bf4BAAAAAH8BfwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACp5gAACgAAAAAAAAAAAAAACT0AAAYAAABAtgAABgAAAKdBAAAFAAAAAAAAAAAAAACp5gAABQAAABAnAAAEAAAAMTkAAAQAAAAAUQAABAAAAJFvAAAEAAAAEJYAAAQAAADBxQAABAAAAAAAAAAAAAAAMRMAAAMAAADIFgAAAwAAAMsaAAADAAAAQB8AAAMAAAAtJAAAAwAAAJgpAAADAAAAhy8AAAMAAAAANgAAAwAAAAk9AAADAAAAqEQAAAMAAADjTAAAAwAAAMBVAAADAAAARV8AAAMAAAB4aQAAAwAAAF90AAADAAAAAAAAAAAAAABhjAAAAwAAAIiZAAADAAAAe6cAAAMAAABAtgAAAwAAAN3FAAADAAAAWNYAAAMAAAC35wAAAwAAAAD6AAADAAAAkQYAAAIAAADkBgAAAgAAADkHAAACAAAAkAcAAAIAAADpBwAAAgAAAEQIAAACAAAAoQgAAAIAAAAACQAAAgAAAGEJAAACAAAAxAkAAAIAAAApCgAAAgAAAJAKAAACAAAA+QoAAAIAAABkCwAAAgAAANELAAACAAAAQAwAAAIAAACxDAAAAgAAACQNAAACAAAAmQ0AAAIAAAAQDgAAAgAAAIkOAAACAAAABA8AAAIAAACBDwAAAgAAAAAAAAAAAAAAgRAAAAIAAAAEEQAAAgAAAIkRAAACAAAAEBIAAAIAAACZEgAAAgAAACQTAAACAAAAsRMAAAIAAABAFAAAAgAAANEUAAACAAAAZBUAAAIAAAD5FQAAAgAAAJAWAAACAAAAKRcAAAIAAADEFwAAAgAAAGEYAAACAAAAABkAAAIAAAChGQAAAgAAAEQaAAACAAAA6RoAAAIAAACQGwAAAgAAADkcAAACAAAA5BwAAAIAAACRHQAAAgAAAEAeAAACAAAA8R4AAAIAAACkHwAAAgAAAFkgAAACAAAAECEAAAIAAADJIQAAAgAAAIQiAAACAAAAQSMAAAIAAAAAJAAAAgAAAMEkAAACAAAAhCUAAAIAAABJJgAAAgAAABAnAAACAAAA2ScAAAIAAACkKAAAAgAAAHEpAAACAAAAQCoAAAIAAAARKwAAAgAAAOQrAAACAAAAuSwAAAIAAACQLQAAAgAAAGkuAAACAAAARC8AAAIAAAAhMAAAAgAAAAAxAAACAAAA4TEAAAIAAADEMgAAAgAAAKkzAAACAAAAkDQAAAIAAAB5NQAAAgAAAGQ2AAACAAAAUTcAAAIAAABAOAAAAgAAADE5AAACAAAAJDoAAAIAAAAZOwAAAgAAABA8AAACAAAACT0AAAIAAAAEPgAAAgAAAAE/AAACAAAAAAAAAAAAAAABQQAAAgAAAARCAAACAAAACUMAAAIAAAAQRAAAAgAAABlFAAACAAAAJEYAAAIAAAAxRwAAAgAAAEBIAAACAAAAUUkAAAIAAABkSgAAAgAAAHlLAAACAAAAkEwAAAIAAACpTQAAAgAAAMROAAACAAAA4U8AAAIAAAAAUQAAAgAAACFSAAACAAAARFMAAAIAAABpVAAAAgAAAJBVAAACAAAAuVYAAAIAAADkVwAAAgAAABFZAAACAAAAQFoAAAIAAABxWwAAAgAAAKRcAAACAAAA2V0AAAIAAAAQXwAAAgAAAElgAAACAAAAhGEAAAIAAADBYgAAAgAAAABkAAACAAAAQWUAAAIAAACEZgAAAgAAAMlnAAACAAAAEGkAAAIAAABZagAAAgAAAKRrAAACAAAA8WwAAAIAAABAbgAAAgAAAJFvAAACAAAA5HAAAAIAAAA5cgAAAgAAAJBzAAACAAAA6XQAAAIAAABEdgAAAgAAAKF3AAACAAAAAHkAAAIAAABhegAAAgAAAMR7AAACAAAAKX0AAAIAAACQfgAAAgAAAPl/AAACAAAAZIEAAAIAAADRggAAAgAAAECEAAACAAAAsYUAAAIAAAAkhwAAAgAAAJmIAAACAAAAEIoAAAIAAACJiwAAAgAAAASNAAACAAAAgY4AAAIAAAAAkAAAAgAAAIGRAAACAAAABJMAAAIAAACJlAAAAgAAABCWAAACAAAAmZcAAAIAAAAkmQAAAgAAALGaAAACAAAAQJwAAAIAAADRnQAAAgAAAGSfAAACAAAA+aAAAAIAAACQogAAAgAAACmkAAACAAAAxKUAAAIAAABhpwAAAgAAAACpAAACAAAAoaoAAAIAAABErAAAAgAAAOmtAAACAAAAkK8AAAIAAAA5sQAAAgAAAOSyAAACAAAAkbQAAAIAAABAtgAAAgAAAPG3AAACAAAApLkAAAIAAABZuwAAAgAAABC9AAACAAAAyb4AAAIAAACEwAAAAgAAAEHCAAACAAAAAMQAAAIAAADBxQAAAgAAAITHAAACAAAASckAAAIAAAAQywAAAgAAANnMAAACAAAApM4AAAIAAABx0AAAAgAAAEDSAAACAAAAEdQAAAIAAADk1QAAAgAAALnXAAACAAAAkNkAAAIAAABp2wAAAgAAAETdAAACAAAAId8AAAIAAAAA4QAAAgAAAOHiAAACAAAAxOQAAAIAAACp5gAAAgAAAJDoAAACAAAAeeoAAAIAAABk7AAAAgAAAFHuAAACAAAAQPAAAAIAAAAx8gAAAgAAACT0AAACAAAAGfYAAAIAAAAQ+AAAAgAAAAn6AAACAAAABPwAAAIAAAAB/gAAAgAAAAAAAAAAAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9zaGlmdC5ycwAAIMggAGoAAAAeAAAAHAAAACDIIABqAAAAKAAAABkAAAAgyCAAagAAAC4AAAASAAAAIMggAGoAAABKAAAAIwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQucnPMyCAAZAAAAFYDAAArAAAAzMggAGQAAABjAwAAFwAAAMzIIABkAAAA4AMAACMAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0taW50ZWdlci0wLjEuNDYvc3JjL3Jvb3RzLnJzYMkgAGQAAACDAQAAAQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL29uY2VfY2VsbC0xLjIxLjMvc3JjL2ltcF9zdGQucnPUySAAZAAAAKEAAAA2AAAA1MkgAGQAAACbAAAACQAAADM4OzI7AAAAWMogAAUAAAADyyYAAQAAAAPLJgABAAAANDg7MjsAAAB4yiAABQAAAAPLJgABAAAAA8smAAEAAAAzMDMxMzIzMzM0MzUzNjM3Mzk5MDkxOTI5Mzk0OTU5Njk3NDA0MTQyNDM0NDQ1NDY0NzQ5MTAwMTAxMTAyMTAzMTA0MTA1MTA2MTA3Mzg7MjsyNDA7MjQ4OzI1NTM4OzI7MjUwOzIzNTsyMTUzODsyOzAwMDsyNTU7MjU1Mzg7MjsxMjc7MjU1OzIxMjM4OzI7MjQwOzI1NTsyNTUzODsyOzI0NTsyNDU7MjIwMzg7MjsyNTU7MjI4OzE5NjM4OzI7MDAwOzAwMDswMDAzODsyOzI1NTsyMzU7MjA1Mzg7MjswMDA7MDAwOzI1NTM4OzI7MTM4OzA0MzsyMjYzODsyOzE2NTswNDI7MDQyMzg7MjsyMjI7MTg0OzEzNTM4OzI7MDk1OzE1ODsxNjAzODsyOzEyNzsyNTU7MDAwMzg7MjsyMTA7MTA1OzAzMDM4OzI7MjU1OzEyNzswODAzODsyOzEwMDsxNDk7MjM3Mzg7MjsyNTU7MjQ4OzIyMDM4OzI7MjIwOzAyMDswNjAzODsyOzAwMDswMDA7MTM5Mzg7MjswMDA7MTM5OzEzOTM4OzI7MTg0OzEzNDswMTEzODsyOzE2OTsxNjk7MTY5Mzg7MjswMDA7MTAwOzAwMDM4OzI7MTg5OzE4MzsxMDczODsyOzEzOTswMDA7MTM5Mzg7MjswODU7MTA3OzA0NzM4OzI7MjU1OzE0MDswMDAzODsyOzE1MzswNTA7MjA0Mzg7MjsxMzk7MDAwOzAwMDM4OzI7MjMzOzE1MDsxMjIzODsyOzE0MzsxODg7MTQzMzg7MjswNzI7MDYxOzEzOTM4OzI7MDQ3OzA3OTswNzkzODsyOzAwMDsyMDY7MjA5Mzg7MjsxNDg7MDAwOzIxMTM4OzI7MjU1OzAyMDsxNDczODsyOzAwMDsxOTE7MjU1Mzg7MjsxMDU7MTA1OzEwNTM4OzI7MDMwOzE0NDsyNTUzODsyOzE3ODswMzQ7MDM0Mzg7MjsyNTU7MjUwOzI0MDM4OzI7MDM0OzEzOTswMzQzODsyOzI1NTswMDA7MjU1Mzg7MjsyMjA7MjIwOzIyMDM4OzI7MjQ4OzI0ODsyNTUzODsyOzI1NTsyMTU7MDAwMzg7MjsyMTg7MTY1OzAzMjM4OzI7MTI4OzEyODsxMjgzODsyOzAwMDsxMjg7MDAwMzg7MjsxNzM7MjU1OzA0NzM4OzI7MjQwOzI1NTsyNDAzODsyOzI1NTsxMDU7MTgwMzg7MjsyMDU7MDkyOzA5MjM4OzI7MDc1OzAwMDsxMzAzODsyOzI1NTsyNTU7MjQwMzg7MjsyNDA7MjMwOzE0MDM4OzI7MjMwOzIzMDsyNTAzODsyOzI1NTsyNDA7MjQ1Mzg7MjsxMjQ7MjUyOzAwMDM4OzI7MjU1OzI1MDsyMDUzODsyOzE3MzsyMTY7MjMwMzg7MjsyNDA7MTI4OzEyODM4OzI7MjI0OzI1NTsyNTUzODsyOzI1MDsyNTA7MjEwMzg7MjsyMTE7MjExOzIxMTM4OzI7MTQ0OzIzODsxNDQzODsyOzI1NTsxODI7MTkzMzg7MjsyNTU7MTYwOzEyMjM4OzI7MDMyOzE3ODsxNzAzODsyOzEzNTsyMDY7MjUwMzg7MjsxMTk7MTM2OzE1MzM4OzI7MTc2OzE5NjsyMjIzODsyOzI1NTsyNTU7MjI0Mzg7MjswMDA7MjU1OzAwMDM4OzI7MDUwOzIwNTswNTAzODsyOzI1MDsyNDA7MjMwMzg7MjsxMjg7MDAwOzAwMDM4OzI7MTAyOzIwNTsxNzAzODsyOzAwMDswMDA7MjA1Mzg7MjsxODY7MDg1OzIxMTM4OzI7MTQ3OzExMjsyMTkzODsyOzA2MDsxNzk7MTEzMzg7MjsxMjM7MTA0OzIzODM4OzI7MDAwOzI1MDsxNTQzODsyOzA3MjsyMDk7MjA0Mzg7MjsxOTk7MDIxOzEzMzM4OzI7MDI1OzAyNTsxMTIzODsyOzI0NTsyNTU7MjUwMzg7MjsyNTU7MjI4OzIyNTM4OzI7MjU1OzIyODsxODEzODsyOzI1NTsyMjI7MTczMzg7MjswMDA7MDAwOzEyODM4OzI7MjUzOzI0NTsyMzAzODsyOzEyODsxMjg7MDAwMzg7MjsxMDc7MTQyOzAzNTM4OzI7MjU1OzE2NTswMDAzODsyOzI1NTswNjk7MDAwMzg7MjsyMTg7MTEyOzIxNDM4OzI7MjM4OzIzMjsxNzAzODsyOzE1MjsyNTE7MTUyMzg7MjsxNzU7MjM4OzIzODM4OzI7MjE5OzExMjsxNDczODsyOzI1NTsyMzk7MjEzMzg7MjsyNTU7MjE4OzE4NTM4OzI7MjA1OzEzMzswNjMzODsyOzI1NTsxOTI7MjAzMzg7MjsyMjE7MTYwOzIyMTM4OzI7MTc2OzIyNDsyMzAzODsyOzEyODswMDA7MTI4Mzg7MjsxMDI7MDUxOzE1MzM4OzI7MjU1OzAwMDswMDAzODsyOzE4ODsxNDM7MTQzMzg7MjswNjU7MTA1OzIyNTM4OzI7MTM5OzA2OTswMTkzODsyOzI1MDsxMjg7MTE0Mzg7MjsyNDQ7MTY0OzA5NjM4OzI7MDQ2OzEzOTswODczODsyOzI1NTsyNDU7MjM4Mzg7MjsxNjA7MDgyOzA0NTM4OzI7MTkyOzE5MjsxOTIzODsyOzEzNTsyMDY7MjM1Mzg7MjsxMDY7MDkwOzIwNTM4OzI7MTEyOzEyODsxNDQzODsyOzI1NTsyNTA7MjUwMzg7MjswMDA7MjU1OzEyNzM4OzI7MDcwOzEzMDsxODAzODsyOzIxMDsxODA7MTQwMzg7MjswMDA7MTI4OzEyODM4OzI7MjE2OzE5MTsyMTYzODsyOzI1NTswOTk7MDcxMzg7MjswNjQ7MjI0OzIwODM4OzI7MjM4OzEzMDsyMzgzODsyOzI0NTsyMjI7MTc5Mzg7MjsyNTU7MjU1OzI1NTM4OzI7MjQ1OzI0NTsyNDUzODsyOzI1NTsyNTU7MDAwMzg7MjsxNTQ7MjA1OzA1MDQ4OzI7MjQwOzI0ODsyNTU0ODsyOzI1MDsyMzU7MjE1NDg7MjswMDA7MjU1OzI1NTQ4OzI7MTI3OzI1NTsyMTI0ODsyOzI0MDsyNTU7MjU1NDg7MjsyNDU7MjQ1OzIyMDQ4OzI7MjU1OzIyODsxOTY0ODsyOzAwMDswMDA7MDAwNDg7MjsyNTU7MjM1OzIwNTQ4OzI7MDAwOzAwMDsyNTU0ODsyOzEzODswNDM7MjI2NDg7MjsxNjU7MDQyOzA0MjQ4OzI7MjIyOzE4NDsxMzU0ODsyOzA5NTsxNTg7MTYwNDg7MjsxMjc7MjU1OzAwMDQ4OzI7MjEwOzEwNTswMzA0ODsyOzI1NTsxMjc7MDgwNDg7MjsxMDA7MTQ5OzIzNzQ4OzI7MjU1OzI0ODsyMjA0ODsyOzIyMDswMjA7MDYwNDg7MjswMDA7MDAwOzEzOTQ4OzI7MDAwOzEzOTsxMzk0ODsyOzE4NDsxMzQ7MDExNDg7MjsxNjk7MTY5OzE2OTQ4OzI7MDAwOzEwMDswMDA0ODsyOzE4OTsxODM7MTA3NDg7MjsxMzk7MDAwOzEzOTQ4OzI7MDg1OzEwNzswNDc0ODsyOzI1NTsxNDA7MDAwNDg7MjsxNTM7MDUwOzIwNDQ4OzI7MTM5OzAwMDswMDA0ODsyOzIzMzsxNTA7MTIyNDg7MjsxNDM7MTg4OzE0MzQ4OzI7MDcyOzA2MTsxMzk0ODsyOzA0NzswNzk7MDc5NDg7MjswMDA7MjA2OzIwOTQ4OzI7MTQ4OzAwMDsyMTE0ODsyOzI1NTswMjA7MTQ3NDg7MjswMDA7MTkxOzI1NTQ4OzI7MTA1OzEwNTsxMDU0ODsyOzAzMDsxNDQ7MjU1NDg7MjsxNzg7MDM0OzAzNDQ4OzI7MjU1OzI1MDsyNDA0ODsyOzAzNDsxMzk7MDM0NDg7MjsyNTU7MDAwOzI1NTQ4OzI7MjIwOzIyMDsyMjA0ODsyOzI0ODsyNDg7MjU1NDg7MjsyNTU7MjE1OzAwMDQ4OzI7MjE4OzE2NTswMzI0ODsyOzEyODsxMjg7MTI4NDg7MjswMDA7MTI4OzAwMDQ4OzI7MTczOzI1NTswNDc0ODsyOzI0MDsyNTU7MjQwNDg7MjsyNTU7MTA1OzE4MDQ4OzI7MjA1OzA5MjswOTI0ODsyOzA3NTswMDA7MTMwNDg7MjsyNTU7MjU1OzI0MDQ4OzI7MjQwOzIzMDsxNDA0ODsyOzIzMDsyMzA7MjUwNDg7MjsyNTU7MjQwOzI0NTQ4OzI7MTI0OzI1MjswMDA0ODsyOzI1NTsyNTA7MjA1NDg7MjsxNzM7MjE2OzIzMDQ4OzI7MjQwOzEyODsxMjg0ODsyOzIyNDsyNTU7MjU1NDg7MjsyNTA7MjUwOzIxMDQ4OzI7MjExOzIxMTsyMTE0ODsyOzE0NDsyMzg7MTQ0NDg7MjsyNTU7MTgyOzE5MzQ4OzI7MjU1OzE2MDsxMjI0ODsyOzAzMjsxNzg7MTcwNDg7MjsxMzU7MjA2OzI1MDQ4OzI7MTE5OzEzNjsxNTM0ODsyOzE3NjsxOTY7MjIyNDg7MjsyNTU7MjU1OzIyNDQ4OzI7MDAwOzI1NTswMDA0ODsyOzA1MDsyMDU7MDUwNDg7MjsyNTA7MjQwOzIzMDQ4OzI7MTI4OzAwMDswMDA0ODsyOzEwMjsyMDU7MTcwNDg7MjswMDA7MDAwOzIwNTQ4OzI7MTg2OzA4NTsyMTE0ODsyOzE0NzsxMTI7MjE5NDg7MjswNjA7MTc5OzExMzQ4OzI7MTIzOzEwNDsyMzg0ODsyOzAwMDsyNTA7MTU0NDg7MjswNzI7MjA5OzIwNDQ4OzI7MTk5OzAyMTsxMzM0ODsyOzAyNTswMjU7MTEyNDg7MjsyNDU7MjU1OzI1MDQ4OzI7MjU1OzIyODsyMjU0ODsyOzI1NTsyMjg7MTgxNDg7MjsyNTU7MjIyOzE3MzQ4OzI7MDAwOzAwMDsxMjg0ODsyOzI1MzsyNDU7MjMwNDg7MjsxMjg7MTI4OzAwMDQ4OzI7MTA3OzE0MjswMzU0ODsyOzI1NTsxNjU7MDAwNDg7MjsyNTU7MDY5OzAwMDQ4OzI7MjE4OzExMjsyMTQ0ODsyOzIzODsyMzI7MTcwNDg7MjsxNTI7MjUxOzE1MjQ4OzI7MTc1OzIzODsyMzg0ODsyOzIxOTsxMTI7MTQ3NDg7MjsyNTU7MjM5OzIxMzQ4OzI7MjU1OzIxODsxODU0ODsyOzIwNTsxMzM7MDYzNDg7MjsyNTU7MTkyOzIwMzQ4OzI7MjIxOzE2MDsyMjE0ODsyOzE3NjsyMjQ7MjMwNDg7MjsxMjg7MDAwOzEyODQ4OzI7MTAyOzA1MTsxNTM0ODsyOzI1NTswMDA7MDAwNDg7MjsxODg7MTQzOzE0MzQ4OzI7MDY1OzEwNTsyMjU0ODsyOzEzOTswNjk7MDE5NDg7MjsyNTA7MTI4OzExNDQ4OzI7MjQ0OzE2NDswOTY0ODsyOzA0NjsxMzk7MDg3NDg7MjsyNTU7MjQ1OzIzODQ4OzI7MTYwOzA4MjswNDU0ODsyOzE5MjsxOTI7MTkyNDg7MjsxMzU7MjA2OzIzNTQ4OzI7MTA2OzA5MDsyMDU0ODsyOzExMjsxMjg7MTQ0NDg7MjsyNTU7MjUwOzI1MDQ4OzI7MDAwOzI1NTsxMjc0ODsyOzA3MDsxMzA7MTgwNDg7MjsyMTA7MTgwOzE0MDQ4OzI7MDAwOzEyODsxMjg0ODsyOzIxNjsxOTE7MjE2NDg7MjsyNTU7MDk5OzA3MTQ4OzI7MDY0OzIyNDsyMDg0ODsyOzIzODsxMzA7MjM4NDg7MjsyNDU7MjIyOzE3OTQ4OzI7MjU1OzI1NTsyNTU0ODsyOzI0NTsyNDU7MjQ1NDg7MjsyNTU7MjU1OzAwMDQ4OzI7MTU0OzIwNTswNTAzODs1OzAzODs1OzEzODs1OzIzODs1OzMzODs1OzQzODs1OzUzODs1OzYzODs1OzczODs1OzgzODs1OzkzODs1OzEwMzg7NTsxMTM4OzU7MTIzODs1OzEzMzg7NTsxNDM4OzU7MTUzODs1OzE2Mzg7NTsxNzM4OzU7MTgzODs1OzE5Mzg7NTsyMDM4OzU7MjEzODs1OzIyMzg7NTsyMzM4OzU7MjQzODs1OzI1Mzg7NTsyNjM4OzU7MjczODs1OzI4Mzg7NTsyOTM4OzU7MzAzODs1OzMxMzg7NTszMjM4OzU7MzMzODs1OzM0Mzg7NTszNTM4OzU7MzYzODs1OzM3Mzg7NTszODM4OzU7MzkzODs1OzQwMzg7NTs0MTM4OzU7NDIzODs1OzQzMzg7NTs0NDM4OzU7NDUzODs1OzQ2Mzg7NTs0NzM4OzU7NDgzODs1OzQ5Mzg7NTs1MDM4OzU7NTEzODs1OzUyMzg7NTs1MzM4OzU7NTQzODs1OzU1Mzg7NTs1NjM4OzU7NTczODs1OzU4Mzg7NTs1OTM4OzU7NjAzODs1OzYxMzg7NTs2MjM4OzU7NjMzODs1OzY0Mzg7NTs2NTM4OzU7NjYzODs1OzY3Mzg7NTs2ODM4OzU7NjkzODs1OzcwMzg7NTs3MTM4OzU7NzIzODs1OzczMzg7NTs3NDM4OzU7NzUzODs1Ozc2Mzg7NTs3NzM4OzU7NzgzODs1Ozc5Mzg7NTs4MDM4OzU7ODEzODs1OzgyMzg7NTs4MzM4OzU7ODQzODs1Ozg1Mzg7NTs4NjM4OzU7ODczODs1Ozg4Mzg7NTs4OTM4OzU7OTAzODs1OzkxMzg7NTs5MjM4OzU7OTMzODs1Ozk0Mzg7NTs5NTM4OzU7OTYzODs1Ozk3Mzg7NTs5ODM4OzU7OTkzODs1OzEwMDM4OzU7MTAxMzg7NTsxMDIzODs1OzEwMzM4OzU7MTA0Mzg7NTsxMDUzODs1OzEwNjM4OzU7MTA3Mzg7NTsxMDgzODs1OzEwOTM4OzU7MTEwMzg7NTsxMTEzODs1OzExMjM4OzU7MTEzMzg7NTsxMTQzODs1OzExNTM4OzU7MTE2Mzg7NTsxMTczODs1OzExODM4OzU7MTE5Mzg7NTsxMjAzODs1OzEyMTM4OzU7MTIyMzg7NTsxMjMzODs1OzEyNDM4OzU7MTI1Mzg7NTsxMjYzODs1OzEyNzM4OzU7MTI4Mzg7NTsxMjkzODs1OzEzMDM4OzU7MTMxMzg7NTsxMzIzODs1OzEzMzM4OzU7MTM0Mzg7NTsxMzUzODs1OzEzNjM4OzU7MTM3Mzg7NTsxMzgzODs1OzEzOTM4OzU7MTQwMzg7NTsxNDEzODs1OzE0MjM4OzU7MTQzMzg7NTsxNDQzODs1OzE0NTM4OzU7MTQ2Mzg7NTsxNDczODs1OzE0ODM4OzU7MTQ5Mzg7NTsxNTAzODs1OzE1MTM4OzU7MTUyMzg7NTsxNTMzODs1OzE1NDM4OzU7MTU1Mzg7NTsxNTYzODs1OzE1NzM4OzU7MTU4Mzg7NTsxNTkzODs1OzE2MDM4OzU7MTYxMzg7NTsxNjIzODs1OzE2MzM4OzU7MTY0Mzg7NTsxNjUzODs1OzE2NjM4OzU7MTY3Mzg7NTsxNjgzODs1OzE2OTM4OzU7MTcwMzg7NTsxNzEzODs1OzE3MjM4OzU7MTczMzg7NTsxNzQzODs1OzE3NTM4OzU7MTc2Mzg7NTsxNzczODs1OzE3ODM4OzU7MTc5Mzg7NTsxODAzODs1OzE4MTM4OzU7MTgyMzg7NTsxODMzODs1OzE4NDM4OzU7MTg1Mzg7NTsxODYzODs1OzE4NzM4OzU7MTg4Mzg7NTsxODkzODs1OzE5MDM4OzU7MTkxMzg7NTsxOTIzODs1OzE5MzM4OzU7MTk0Mzg7NTsxOTUzODs1OzE5NjM4OzU7MTk3Mzg7NTsxOTgzODs1OzE5OTM4OzU7MjAwMzg7NTsyMDEzODs1OzIwMjM4OzU7MjAzMzg7NTsyMDQzODs1OzIwNTM4OzU7MjA2Mzg7NTsyMDczODs1OzIwODM4OzU7MjA5Mzg7NTsyMTAzODs1OzIxMTM4OzU7MjEyMzg7NTsyMTMzODs1OzIxNDM4OzU7MjE1Mzg7NTsyMTYzODs1OzIxNzM4OzU7MjE4Mzg7NTsyMTkzODs1OzIyMDM4OzU7MjIxMzg7NTsyMjIzODs1OzIyMzM4OzU7MjI0Mzg7NTsyMjUzODs1OzIyNjM4OzU7MjI3Mzg7NTsyMjgzODs1OzIyOTM4OzU7MjMwMzg7NTsyMzEzODs1OzIzMjM4OzU7MjMzMzg7NTsyMzQzODs1OzIzNTM4OzU7MjM2Mzg7NTsyMzczODs1OzIzODM4OzU7MjM5Mzg7NTsyNDAzODs1OzI0MTM4OzU7MjQyMzg7NTsyNDMzODs1OzI0NDM4OzU7MjQ1Mzg7NTsyNDYzODs1OzI0NzM4OzU7MjQ4Mzg7NTsyNDkzODs1OzI1MDM4OzU7MjUxMzg7NTsyNTIzODs1OzI1MzM4OzU7MjU0Mzg7NTsyNTU0ODs1OzA0ODs1OzE0ODs1OzI0ODs1OzM0ODs1OzQ0ODs1OzU0ODs1OzY0ODs1Ozc0ODs1Ozg0ODs1Ozk0ODs1OzEwNDg7NTsxMTQ4OzU7MTI0ODs1OzEzNDg7NTsxNDQ4OzU7MTU0ODs1OzE2NDg7NTsxNzQ4OzU7MTg0ODs1OzE5NDg7NTsyMDQ4OzU7MjE0ODs1OzIyNDg7NTsyMzQ4OzU7MjQ0ODs1OzI1NDg7NTsyNjQ4OzU7Mjc0ODs1OzI4NDg7NTsyOTQ4OzU7MzA0ODs1OzMxNDg7NTszMjQ4OzU7MzM0ODs1OzM0NDg7NTszNTQ4OzU7MzY0ODs1OzM3NDg7NTszODQ4OzU7Mzk0ODs1OzQwNDg7NTs0MTQ4OzU7NDI0ODs1OzQzNDg7NTs0NDQ4OzU7NDU0ODs1OzQ2NDg7NTs0NzQ4OzU7NDg0ODs1OzQ5NDg7NTs1MDQ4OzU7NTE0ODs1OzUyNDg7NTs1MzQ4OzU7NTQ0ODs1OzU1NDg7NTs1NjQ4OzU7NTc0ODs1OzU4NDg7NTs1OTQ4OzU7NjA0ODs1OzYxNDg7NTs2MjQ4OzU7NjM0ODs1OzY0NDg7NTs2NTQ4OzU7NjY0ODs1OzY3NDg7NTs2ODQ4OzU7Njk0ODs1OzcwNDg7NTs3MTQ4OzU7NzI0ODs1OzczNDg7NTs3NDQ4OzU7NzU0ODs1Ozc2NDg7NTs3NzQ4OzU7Nzg0ODs1Ozc5NDg7NTs4MDQ4OzU7ODE0ODs1OzgyNDg7NTs4MzQ4OzU7ODQ0ODs1Ozg1NDg7NTs4NjQ4OzU7ODc0ODs1Ozg4NDg7NTs4OTQ4OzU7OTA0ODs1OzkxNDg7NTs5MjQ4OzU7OTM0ODs1Ozk0NDg7NTs5NTQ4OzU7OTY0ODs1Ozk3NDg7NTs5ODQ4OzU7OTk0ODs1OzEwMDQ4OzU7MTAxNDg7NTsxMDI0ODs1OzEwMzQ4OzU7MTA0NDg7NTsxMDU0ODs1OzEwNjQ4OzU7MTA3NDg7NTsxMDg0ODs1OzEwOTQ4OzU7MTEwNDg7NTsxMTE0ODs1OzExMjQ4OzU7MTEzNDg7NTsxMTQ0ODs1OzExNTQ4OzU7MTE2NDg7NTsxMTc0ODs1OzExODQ4OzU7MTE5NDg7NTsxMjA0ODs1OzEyMTQ4OzU7MTIyNDg7NTsxMjM0ODs1OzEyNDQ4OzU7MTI1NDg7NTsxMjY0ODs1OzEyNzQ4OzU7MTI4NDg7NTsxMjk0ODs1OzEzMDQ4OzU7MTMxNDg7NTsxMzI0ODs1OzEzMzQ4OzU7MTM0NDg7NTsxMzU0ODs1OzEzNjQ4OzU7MTM3NDg7NTsxMzg0ODs1OzEzOTQ4OzU7MTQwNDg7NTsxNDE0ODs1OzE0MjQ4OzU7MTQzNDg7NTsxNDQ0ODs1OzE0NTQ4OzU7MTQ2NDg7NTsxNDc0ODs1OzE0ODQ4OzU7MTQ5NDg7NTsxNTA0ODs1OzE1MTQ4OzU7MTUyNDg7NTsxNTM0ODs1OzE1NDQ4OzU7MTU1NDg7NTsxNTY0ODs1OzE1NzQ4OzU7MTU4NDg7NTsxNTk0ODs1OzE2MDQ4OzU7MTYxNDg7NTsxNjI0ODs1OzE2MzQ4OzU7MTY0NDg7NTsxNjU0ODs1OzE2NjQ4OzU7MTY3NDg7NTsxNjg0ODs1OzE2OTQ4OzU7MTcwNDg7NTsxNzE0ODs1OzE3MjQ4OzU7MTczNDg7NTsxNzQ0ODs1OzE3NTQ4OzU7MTc2NDg7NTsxNzc0ODs1OzE3ODQ4OzU7MTc5NDg7NTsxODA0ODs1OzE4MTQ4OzU7MTgyNDg7NTsxODM0ODs1OzE4NDQ4OzU7MTg1NDg7NTsxODY0ODs1OzE4NzQ4OzU7MTg4NDg7NTsxODk0ODs1OzE5MDQ4OzU7MTkxNDg7NTsxOTI0ODs1OzE5MzQ4OzU7MTk0NDg7NTsxOTU0ODs1OzE5NjQ4OzU7MTk3NDg7NTsxOTg0ODs1OzE5OTQ4OzU7MjAwNDg7NTsyMDE0ODs1OzIwMjQ4OzU7MjAzNDg7NTsyMDQ0ODs1OzIwNTQ4OzU7MjA2NDg7NTsyMDc0ODs1OzIwODQ4OzU7MjA5NDg7NTsyMTA0ODs1OzIxMTQ4OzU7MjEyNDg7NTsyMTM0ODs1OzIxNDQ4OzU7MjE1NDg7NTsyMTY0ODs1OzIxNzQ4OzU7MjE4NDg7NTsyMTk0ODs1OzIyMDQ4OzU7MjIxNDg7NTsyMjI0ODs1OzIyMzQ4OzU7MjI0NDg7NTsyMjU0ODs1OzIyNjQ4OzU7MjI3NDg7NTsyMjg0ODs1OzIyOTQ4OzU7MjMwNDg7NTsyMzE0ODs1OzIzMjQ4OzU7MjMzNDg7NTsyMzQ0ODs1OzIzNTQ4OzU7MjM2NDg7NTsyMzc0ODs1OzIzODQ4OzU7MjM5NDg7NTsyNDA0ODs1OzI0MTQ4OzU7MjQyNDg7NTsyNDM0ODs1OzI0NDQ4OzU7MjQ1NDg7NTsyNDY0ODs1OzI0NzQ4OzU7MjQ4NDg7NTsyNDk0ODs1OzI1MDQ4OzU7MjUxNDg7NTsyNTI0ODs1OzI1MzQ4OzU7MjU0NDg7NTsyNTV46yAAbwAAAGsBAAAXAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFya2luZ19sb3RfY29yZS0wLjkuMTAvc3JjL3BhcmtpbmdfbG90LnJzAHjrIABvAAAASwAAABsAAAB46yAAbwAAAFIAAAAeAAAAeOsgAG8AAABOAAAAFQAAAHjrIABvAAAASgEAAAwAAABQYXJraW5nIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQAAKOwgACYAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMC9zcmMvdGhyZWFkX3Bhcmtlci93YXNtLnJzAABY7CAAdgAAABoAAAAJAAAAWOwgAHYAAAAqAAAACQAAAFADAAAMAAAABAAAAFEDAABSAwAAUwMAAAAAAAAAAAAAAQAAALACAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC0xLjEwLjYvc3JjL2J1aWxkZXJzLnJzAAAAGO0gAGEAAABHAAAACQAAAFN5bnRheCgKjO0gAAgAAABDb21waWxlZFRvb0JpZy9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvYWxsb2Mvc3JjL2JveGVkL2NvbnZlcnQucnOq7SAAUgAAAFIAAAATAAAAQWhvQ29yYXNpY2s6OnRyeV9maW5kIGlzIG5vdCBleHBlY3RlZCB0byBmYWlsL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9haG9jb3Jhc2ljay5ycwA57iAAagAAAJYBAAAOAAAAVAMAAGQBAAAEAAAA+wIAAFQDAABkAQAABAAAAPwCAABVAwAA/gIAANoCAAD/AgAAAAMAAAEDAABWAwAAVwMAAAQDAAAFAwAABgMAAAcDAAAIAwAACQMAAAoDAAALAwAA+wIAALTuIABYAwAASAEAAAQAAADpAgAAWAMAAEgBAAAEAAAA6gIAAFkDAADsAgAA2gIAAO0CAADuAgAA7wIAAPACAABaAwAA8gIAAPMCAAD0AgAA9QIAAPYCAAD3AgAA+AIAAPkCAADpAgAAHO8gAFsDAABcAQAABAAAAMsAAABbAwAAXAEAAAQAAADXAgAA2AIAANkCAADaAgAA2wIAANwCAADdAgAA3gIAAFwDAADgAgAA4QIAAOICAADjAgAA5AIAAOUCAADmAgAA5wIAAMsAAACE7yAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9kZmEucnMvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL25mYS9jb250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AAAWAQAAFQAAAEludmFsaWRJbnB1dEFuY2hvcmVkSW52YWxpZElucHV0VW5hbmNob3JlZFVuc3VwcG9ydGVkU3RyZWFtVW5zdXBwb3J0ZWRPdmVybGFwcGluZ1Vuc3VwcG9ydGVkRW1wdHlidWNrZXRzaGFzaF9sZW5oYXNoXzJwb3cvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy9ib3hlZC5ycwA9+CAASgAAAOkGAAAfAAAATvAgAG0AAADFAAAAHAAAAE7wIABtAAAA3QAAABkAAABO8CAAbQAAAN0AAAAiAAAATvAgAG0AAADqAAAALQAAAE7wIABtAAAA5wAAAC0AAABO8CAAbQAAAOQAAAAtAAAATvAgAG0AAADhAAAALQAAAE7wIABtAAAA1AAAACkAAABO8CAAbQAAAM4AAAApAAAATvAgAG0AAAD1AAAAIAAAAE7wIABtAAAAGgEAABoAAABO8CAAbQAAADABAAAXAAAATvAgAG0AAAApAQAANwAAABzxIABwAAAAmQIAABoAAAAc8SAAcAAAAK0CAAArAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL2RmYS9vbmVwYXNzLnJziPkgAGwAAAA2AgAAHAAAAIj5IABsAAAAXAIAAAkAAACI+SAAbAAAAHICAAAsAAAAbXVsdGlwbGUgZXBzaWxvbiB0cmFuc2l0aW9ucyB0byBtYXRjaCBzdGF0ZQCI+SAAbAAAAGcCAAAxAAAAdG9vIG1hbnkgZXhwbGljaXQgY2FwdHVyaW5nIGdyb3VwcyAobWF4IGlzIDE2KW1hdGNoIHN0YXRlcyBzaG91bGQgYmUgYSBwcm9wZXIgc3Vic2V0IG9mIGFsbCBzdGF0ZXMAAIj5IABsAAAA7QIAADsAAABjb25mbGljdGluZyB0cmFuc2l0aW9uYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5kZmEuc3RhcnRzLmlzX2VtcHR5KCkAAIj5IABsAAAAMQMAABUAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxm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Ymxpbmcgc3RhcnRzX2Zvcl9lYWNoX3BhdHRlcm4AEAIhAFMAAADk/iAAawAAAEEKAAARAAAA5P4gAGsAAABKCgAAGgAAAOT+IABrAAAAjgoAAB0AAADk/iAAawAAAJYKAAAbAAAA5P4gAGsAAACyCgAAMwAAAOT+IABrAAAAuwoAADMAAAAAAAAAAAAAAAAAAAACAAAAY2Fubm90IGJ1aWxkIGxhenkgREZBcyBmb3IgcmVnZXhlcyB3aXRoIFVuaWNvZGUgd29yZCBib3VuZGFyaWVzOyBzd2l0Y2ggdG8gQVNDSUkgd29yZCBib3VuZGFyaWVzLCBvciBoZXVyaXN0aWNhbGx5IGVuYWJsZSBVbmljb2RlIHdvcmQgYm91bmRhcmllcyBvciB1c2UgYSBkaWZmZXJlbnQgcmVnZXggZW5naW5lKSBhcmUgbm90IHN1cHBvcnRlZCBvciBlbmFibGVkcmV2ZXJzZSBzZWFyY2ggbXVzdCBtYXRjaCBpZiBmb3J3YXJkIHNlYXJjaCBkb2VzL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL2h5YnJpZC9yZWdleC5yc9sDIQBtAAAA8QEAAA4AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvaHlicmlkL3NlYXJjaC5ycwAAWAQhAG4AAABZAAAAKQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHNpZCBiZWluZyB1bmtub3duIGlzIGEgYnVn2AQhAEQAAABYBCEAbgAAAB0BAAARAAAAWAQhAG4AAAAaAQAALQAAAFgEIQBuAAAAVwEAACkAAABYBCEAbgAAAK0BAAARAAAAWAQhAG4AAACqAQAALQAAAFgEIQBuAAAA+wEAACUAAABYBCEAbgAAACICAAARAAAAWAQhAG4AAAAdAgAAFQAAAFgEIQBuAAAA4gIAABQAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBmb3VuZCBpbXBvc3NpYmxlIGVycm9yIGluIG1ldGEgZW5naW5lOiAAAAC0BSEAUQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9tZXRhL2Vycm9yLnJzABAGIQBrAAAA7QAAABEAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvbWV0YS9saW1pdGVkLnJzAAAAjAYhAG0AAACOAAAAJQAAAIwGIQBtAAAA6AAAABQAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvbWV0YS9saXRlcmFsLnJzAAAAHAchAG0AAAAeAAAADQAAABwHIQBtAAAAPgAAAA4AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBsaXRlcmFsLCBnb3QgrAchAEAAAAAcByEAbQAAADgAAAAeAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgbGl0ZXJhbCBvciBjb25jYXQsIGdvdCAAAAQIIQBKAAAAHAchAG0AAAA8AAAAEgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9tZXRhL3JlZ2V4LnJzAGgIIQBrAAAAiAcAABMAAABoCCEAawAAAG8NAAASAAAAaAghAGsAAABlDQAAEgAAAGsDAAAIAAAABAAAAGwDAABtAwAAbQMAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p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NgAcKCEAagAAAHgDAAAVAAAAHCghAGoAAACkAwAAKAAAABwoIQBqAAAAsAMAACYAAAAcKCEAagAAAL0DAAAQAAAAHCghAGoAAADMAwAAEAAAABwoIQBqAAAA2gMAADgAAAAcKCEAagAAADcEAAAxAAAAHCghAGoAAABMBAAAOAAAABwoIQBqAAAAWwQAADgAAAAcKCEAagAAAJ4EAAA4AAAAHCghAGoAAADIBAAAMQAAABwoIQBqAAAAQQYAAC0AAAAczSYAagAAAPABAAAeAAAAHM0mAGoAAADyAQAAGAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3ByZWZpbHRlci9ieXRlc2V0LnJzANQpIQB3AAAAIwAAABEAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9wcmVmaWx0ZXIvbWVtY2hyLnJzAABcKiEAdgAAACcAAAAtAAAAXCohAHYAAABVAAAAFgAAAFwqIQB2AAAAVgAAABYAAABcKiEAdgAAAGQAAAA2AAAAXCohAHYAAACSAAAAFgAAAFwqIQB2AAAAkwAAABYAAABcKiEAdgAAAJQAAAAWAAAAXCohAHYAAACiAAAAPgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3ByZWZpbHRlci9tZW1tZW0ucnMAAFQrIQB2AAAAKwAAACcAAABUKyEAdgAAADsAAAAYAAAAYWhvLWNvcmFzaWNrIERGQSBzaG91bGQgbmV2ZXIgZmFpbC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3ByZWZpbHRlci90ZWRkeS5ycwAOLCEAdQAAAHEAAAASAAAAAAAAAAEAAAABAAAAzgAAAN8DAADgAwAA4QMAAOIDAAAAAAAAAgAAAAEAAADQAAAA4wMAAOQDAADhAwAA4gMAAAAAAAADAAAAAQAAANEAAADlAwAA5gMAAOEDAADiAwAADwMAAEgAAAAIAAAA0gAAAOcDAADoAwAA6QMAAL4DAADqAwAAkAEAAAQAAADTAAAA6wMAAOwDAADtAwAA7gMAAAAAAAAAAQAAAQAAANQAAADvAwAA8AMAAOEDAADxAwAA8gMAAAwAAAAEAAAA1QAAAPMDAAD0AwAA9QMAAKEDAABTdGFydEJ5dGVNYXB7L2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvd2lyZS5ycwCBLSEAagAAAFcCAAAOAAAAgS0hAGoAAAB4AwAADAAAAAAAAAAAAAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL2RldGVybWluaXplL3N0YXRlLnJzFS4hAHcAAADyAAAAIwAAABUuIQB3AAAAjQEAAAkAAAAVLiEAdwAAAJgBAAAJAAAAFS4hAHcAAAC9AQAAIwAAABUuIQB3AAAAyAEAACMAAAAVLiEAdwAAAOMBAAA0AAAAFS4hAHcAAAAMAgAAHwAAABUuIQB3AAAAEAIAABkAAAAVLiEAdwAAACMCAAAgAAAAFS4hAHcAAAAjAgAAOQAAABUuIQB3AAAAMQIAAC8AAAAVLiEAdwAAAF4CAAAPAAAAFS4hAHcAAABnAgAADwAAABUuIQB3AAAAbwIAAA8AAAAVLiEAdwAAAIECAAA1AAAAFS4hAHcAAACHAgAANQAAABUuIQB3AAAAygIAADEAAAAVLiEAdwAAAMYCAAAJAAAAFS4hAHcAAAAAAwAACgAAABUuIQB3AAAA/QIAAA4AAAAVLiEAdwAAABwDAAAeAAAAYXNzZXJ0aW9uIGZhaWxlZDogc3RhY2suaXNfZW1wdHkoKS9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL2RldGVybWluaXplL21vZC5ycwD+LyEAdQAAAHgBAAAFAAAA/i8hAHUAAACAAQAACwAAAP4vIQB1AAAApAEAABsAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9lbXB0eS5ycwCkMCEAawAAAPkAAAA6AAAA7M0mAGwAAAD7AwAACQAAAP///39QYXR0ZXJuU2V0IHNob3VsZCBoYXZlIHN1ZmZpY2llbnQgY2FwYWNpdHkAAOzNJgBsAAAAywQAAA4AAABxdWl0IHNlYXJjaCBhZnRlciBvYnNlcnZpbmcgYnl0ZSAgYXQgb2Zmc2V0IHAxIQAhAAAAkTEhAAsAAABnYXZlIHVwIHNlYXJjaGluZyBhdCBvZmZzZXQgrDEhABwAAABoYXlzdGFjayBvZiBsZW5ndGggIGlzIHRvbyBsb25nANAxIQATAAAA4zEhAAwAAAB1bmFuY2hvcmVkIHNlYXJjaGVzIGFyZSBub3Qgc3VwcG9ydGVkIG9yIGVuYWJsZWRhbmNob3JlZCBzZWFyY2hlcyBhcmUgbm90IHN1cHBvcnRlZCBvciBlbmFibGVkYW5jaG9yZWQgc2VhcmNoZXMgZm9yIGEgc3BlY2lmaWMgcGF0dGVybiAoXjIhACoAAACNAyEAHgAAAHNwYXJzZSBzZXQgY2FwYWNpdHkgY2Fubm90IGV4Y2NlZCAAAJgyIQAiAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvc3BhcnNlX3NldC5yc8QyIQBwAAAAggAAAAkAAAAgZXhjZWVkcyBjYXBhY2l0eSBvZiAgd2hlbiBpbnNlcnRpbmcgAAAAAQAAAAAAAABEMyEAFQAAAFkzIQAQAAAAxDIhAHAAAACyAAAACQAAAMQyIQBwAAAAvQAAABQAAADEMiEAcAAAAMUAAAAgAAAAxDIhAHAAAADGAAAANAAAAMQyIQBwAAAA0QAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvdXRmOC5ycwAA1DQhAGoAAABDAAAAKwAAANQ0IQBqAAAAVQAAADgAAADUNCEAagAAAFgAAAAYAAAA9gMAAGAAAAAQAAAA9wMAAPgDAAAEAAAABAAAAMQAAAAAAAAAAAEAAAEAAAD5AwAAAAAAAAABAAABAAAAhQAAAAAAAAAgAAAAEAAAAPoDAABjb25maWduZmFzdHJpZGUyc3RhcnRfbWFwY2xhc3Nlc3F1aXRzZXRjYWNoZV9jYXBhY2l0eQAAAMA1IQAGAAAAxjUhAAMAAADJNSEABwAAANA1IQAJAAAA2TUhAAcAAADgNSEABwAAAOc1IQAOAAAAREZBAAAAAAABAAAAAQAAAJEAAAD7AwAAEAAAAAQAAAChAAAAAAAAAAEAAAABAAAA/AMAAAAAAAAwAAAAEAAAAP0DAAAAAAAACAAAAAQAAAD+AwAAAAAAAAQAAAAEAAAA/wMAAG1hdGNoX2tpbmRwcmVzdGFydHNfZm9yX2VhY2hfcGF0dGVybmJ5dGVfY2xhc3Nlc3VuaWNvZGVfd29yZF9ib3VuZGFyeXNwZWNpYWxpemVfc3RhcnRfc3RhdGVzc2tpcF9jYWNoZV9jYXBhY2l0eV9jaGVja21pbmltdW1fY2FjaGVfY2xlYXJfY291bnRtaW5pbXVtX2J5dGVzX3Blcl9zdGF0ZQAAAJQ2IQAKAAAAnjYhAAMAAAChNiEAFwAAALg2IQAMAAAAxDYhABUAAADgNSEABwAAANk2IQAXAAAA5zUhAA4AAADwNiEAGQAAAAk3IQAZAAAAIjchABcAAABDb25maWdDYWNoZUVycm9yTGF6eVN0YXRlSURMYXp5U3RhdGVJREVycm9yYXR0ZW1wdGVkZm9yd2FyZHJldmVyc2VSZWdleEluZm9SZWdleEluZm9JcHJvcHNfdW5pb24AAAAAAQAAAAEAAAAABAAAdXRmOF9lbXB0eWF1dG9wcmV3aGljaF9jYXB0dXJlc25mYV9zaXplX2xpbWl0b25lcGFzc19zaXplX2xpbWl0aHlicmlkX2NhY2hlX2NhcGFjaXR5aHlicmlkZGZhZGZhX3NpemVfbGltaXRkZmFfc3RhdGVfbGltaXRvbmVwYXNzYmFja3RyYWNrbGluZV90ZXJtaW5hdG9yAAAAlDYhAAoAAAAEOCEACgAAAA44IQAHAAAAnjYhAAMAAAAVOCEADgAAACM4IQAOAAAAMTghABIAAABDOCEAFQAAAFg4IQAGAAAAXjghAAMAAABhOCEADgAAAG84IQAPAAAAfjghAAcAAACFOCEACQAAALg2IQAMAAAAjjghAA8AAABQcmVncm91cF9pbmZvAAAAAQQAAAQAAAAEAAAAAgQAAAMEAAAQAAAABAAAAAQEAAAFBAAABAAAAAQAAAAGBAAABwQAABgAAAAEAAAACAQAAAkEAAAcAAAABAAAAAoEAAALBAAAPAEAAAQAAAAMBAAADQQAACAFAAAQAAAADgQAAAAAAAAEAAAABAAAAA8EAABpbmZvbmZhcmV2cGlrZXZtsDkhAAQAAACeNiEAAwAAAMY1IQADAAAAtDkhAAYAAAC6OSEABgAAAIU4IQAJAAAAfjghAAcAAABYOCEABgAAAF44IQADAAAAQ29yZVJldmVyc2VBbmNob3JlZGNvcmVSZXZlcnNlU3VmZml4UmV2ZXJzZUlubmVycHJlaW5uZXJQaWtlVk1QaWtlVk1FbmdpbmVCb3VuZGVkQmFja3RyYWNrZXJCb3VuZGVkQmFja3RyYWNrZXJFbmdpbmVPbmVQYXNzT25lUGFzc0VuZ2luZUh5YnJpZEh5YnJpZEVuZ2luZURGQUVuZ2luZVJldmVyc2VIeWJyaWRSZXZlcnNlSHlicmlkRW5naW5lUmV2ZXJzZURGQVJldmVyc2VERkFFbmdpbmV2aXNpdGVkX2NhcGFjaXR5QWxsSW1wbGljaXRUb29NYW55UGF0dGVybnNCeXRlU2V0Yml0c0dyb3VwSW5mb0dyb3VwSW5mb0lubmVyc2xvdF9yYW5nZXNuYW1lX3RvX2luZGV4aW5kZXhfdG9fbmFtZW1lbW9yeV9leHRyYUdyb3VwSW5mb0Vycm9yZXJyVG9vTWFueUdyb3Vwc21pbmltdW1NaXNzaW5nR3JvdXBzRmlyc3RNdXN0QmVVbm5hbWVkRHVwbGljYXRlcmVnZXg6IHRocmVhZCBJRCBhbGxvY2F0aW9uIHNwYWNlIGV4aGF1c3RlZAAArzshACsAAAAczSYAagAAAF4BAAARAAAAQWhvQ29yYXNpY2thY01lbWNock1lbWNocjJNZW1jaHIzTWVtbWVtZmluZGVyc2VhcmNoZXJhbmNob3JlZF9hY1ByZWZpbHRlcmlzX2Zhc3RtYXhfbmVlZGxlX2xlblNtYWxsSW5kZXhTbWFsbEluZGV4RXJyb3JQYXR0ZXJuSUQvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9wcmltaXRpdmVzLnJzdDwhAHAAAADxAgAAAQAAAFBhdHRlcm5JREVycm9yAAB0PCEAcAAAAPICAAABAAAAU3RhdGVJRGNhbm5vdCBjcmVhdGUgaXRlcmF0b3IgZm9yIFN0YXRlSUQgd2hlbiBudW1iZXIgb2YgZWxlbWVudHMgZXhjZWVkIAAAABs9IQBCAAAATm9uV29yZEJ5dGVXb3JkQnl0ZVRleHRMaW5lTEZMaW5lQ1JDdXN0b21MaW5lVGVybWluYXRvclBhdHRlcm5TZXRJbnNlcnRFcnJvcmNhcGFjaXR5Tm9ZZXNQYXR0ZXJuUXVpdGJ5dGVHYXZlVXBIYXlzdGFja1Rvb0xvbmdsZW5VbnN1cHBvcnRlZEFuY2hvcmVkbW9kZQAQBAAADAAAAAQA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dGVyIGNsYXNzIHJhbmdlLCB0aGUgc3RhcnQgbXVzdCBiZSA8PSB0aGUgZW5kaW52YWxpZCByYW5nZSBib3VuZGFyeSwgbXVzdCBiZSBhIGxpdGVyYWx1bmNsb3NlZCBjaGFyYWN0ZXIgY2xhc3NkZWNpbWFsIGxpdGVyYWwgZW1wdHlkZWNpbWFsIGxpdGVyYWwgaW52YWxpZGhleGFkZWNpbWFsIGxpdGVyYWwgZW1wdHloZXhhZGVjaW1hbCBsaXRlcmFsIGlzIG5vdCBhIFVuaWNvZGUgc2NhbGFyIHZhbHVlaW52YWxpZCBoZXhhZGVjaW1hbCBkaWdpdGluY29tcGxldGUgZXNjYXBlIHNlcXVlbmNlLCByZWFjaGVkIGVuZCBvZiBwYXR0ZXJuIHByZW1hdHVyZWx5dW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZWRhbmdsaW5nIGZsYWcgbmVnYXRpb24gb3BlcmF0b3JkdXBsaWNhdGUgZmxhZ2ZsYWcgbmVnYXRpb24gb3BlcmF0b3IgcmVwZWF0ZWRleHBlY3RlZCBmbGFnIGJ1dCBnb3QgZW5kIG9mIHJlZ2V4dW5yZWNvZ25pemVkIGZsYWdkdXBsaWNhdGUgY2FwdHVyZSBncm91cCBuYW1lZW1wdHkgY2FwdHVyZSBncm91cCBuYW1laW52YWxpZCBjYXB0dXJlIGdyb3VwIGNoYXJhY3RlcnVuY2xvc2VkIGNhcHR1cmUgZ3JvdXAgbmFtZXVuY2xvc2VkIGdyb3VwdW5vcGVuZWQgZ3JvdXBleGNlZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5lc3RlZCBwYXJlbnRoZXNlcy9icmFja2V0cyAo9kohADoAAACzPicAAQAAAGludmFsaWQgcmVwZXRpdGlvbiBjb3VudCByYW5nZSwgdGhlIHN0YXJ0IG11c3QgYmUgPD0gdGhlIGVuZHJlcGV0aXRpb24gcXVhbnRpZmllciBleHBlY3RzIGEgdmFsaWQgZGVjaW1hbHVuY2xvc2VkIGNvdW50ZWQgcmVwZXRpdGlvbnJlcGV0aXRpb24gb3BlcmF0b3IgbWlzc2luZyBleHByZXNzaW9uc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IGFzc2VydGlvbiBpcyBlaXRoZXIgdW5jbG9zZWQgb3IgY29udGFpbnMgYW4gaW52YWxpZCBjaGFyYWN0ZXJ1bnJlY29nbml6ZWQgc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IGFzc2VydGlvbiwgdmFsaWQgY2hvaWNlcyBhcmU6IHN0YXJ0LCBlbmQsIHN0YXJ0LWhhbGYgb3IgZW5kLWhhbGZmb3VuZCBlaXRoZXIgdGhlIGJlZ2lubmluZyBvZiBhIHNwZWNpYWwgd29yZCBib3VuZGFyeSBvciBhIGJvdW5kZWQgcmVwZXRpdGlvbiBvbiBhIFxiIHdpdGggYW4gb3BlbmluZyBicmFjZSwgYnV0IG5vIGNsb3NpbmcgYnJhY2VpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzYmFja3JlZmVyZW5jZXMgYXJlIG5vdCBzdXBwb3J0ZWRsb29rLWFyb3VuZCwgaW5jbHVkaW5nIGxvb2stYWhlYWQgYW5kIGxvb2stYmVoaW5kLCBpcyBub3Qgc3VwcG9ydGVkL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy9hc3QvbW9kLnJzYWxudW1hc2NpaWJsYW5rY250cmxkaWdpdGdyYXBobG93ZXJwcmludHB1bmN0c3BhY2V1cHBlcnhkaWdpdAAAo00hAGYAAADnBAAAFAAAAKNNIQBmAAAA8wQAACMAAACjTSEAZgAAAA8GAAAUAAAAo00hAGYAAADMBgAAGwAAACcgJy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNC9zcmMvZGVidWcucnMAi04hAGQAAAAYAAAAPQAAAItOIQBkAAAAFQAAAA0AAACLTiEAZAAAADIAAAAbAAAAi04hAGQAAAAuAAAAIwAAAItOIQBkAAAAaAAAACsAAAABAAAAAQAAAHJlZ2V4IHBhcnNlIGVycm9yOgplcnJvcjogAABbTyEABwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p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U0hjXUFPpu2jx77h0cvG2dvO6vie7/////////////////////////////////////////////////////////////////////////////////////90cmllZCB0byB1bndyYXAgZXhwciBmcm9tIEhpckZyYW1lLCBnb3Q6IAAAAPxWIQApAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy9oaXIvdHJhbnNsYXRlLnJzMFchAGwAAAABAQAAEgAAAHRyaWVkIHRvIHVud3JhcCBVbmljb2RlIGNsYXNzIGZyb20gSGlyRnJhbWUsIGdvdDogAACsVyEAMgAAADBXIQBsAAAACgEAABIAAAB0cmllZCB0byB1bndyYXAgYnl0ZSBjbGFzcyBmcm9tIEhpckZyYW1lLCBnb3Q6IAD4VyEALwAAADBXIQBsAAAAFwEAABIAAAB0cmllZCB0byB1bndyYXAgcmVwZXRpdGlvbiBmcm9tIEhpckZyYW1lLCBnb3Q6IABAWCEALwAAADBXIQBsAAAAJQEAABEAAAB0cmllZCB0byB1bndyYXAgZ3JvdXAgZnJvbSBIaXJGcmFtZSwgZ290OiAAAIhYIQAqAAAAMFchAGwAAAA0AQAAEQAAAHRyaWVkIHRvIHVud3JhcCBhbHQgcGlwZSBmcm9tIEhpckZyYW1lLCBnb3Q6IAAAAMxYIQAtAAAAMFchAGwAAAA/AQAAEQAAADBXIQBsAAAATgEAACcAAAAwVyEAbAAAAE8BAAAXAAAAMFchAGwAAABOAQAACQAAADBXIQBsAAAArAEAAC4AAAAwVyEAbAAAAKMBAAAuAAAAMFchAGwAAAC3AQAAJwAAADBXIQBsAAAAuAEAABwAAAAwVyEAbAAAALwBAAAnAAAAMFchAGwAAAC9AQAALAAAADBXIQBsAAAAzgEAACAAAAAwVyEAbAAAAM8BAAAbAAAAMFchAGwAAADFAQAAHwAAADBXIQBsAAAA/gEAAC4AAAAwVyEAbAAAAPoBAAAuAAAAMFchAGwAAAAKAgAALgAAADBXIQBsAAAABgIAAC4AAAAwVyEAbAAAABkCAAAuAAAAMFchAGwAAAAUAgAALgAAADBXIQBsAAAAIAIAACoAAAAwVyEAbAAAACwCAAAuAAAAMFchAGwAAAAnAgAALgAAADBXIQBsAAAAPgIAAC8AAAAwVyEAbAAAAEUCAAAvAAAAMFchAGwAAAAzAgAALwAAADBXIQBsAAAAOgIAAC8AAAAwVyEAbAAAAIwCAAAmAAAAMFchAGwAAACNAgAAJgAAADBXIQBsAAAAjgIAACYAAAAwVyEAbAAAAHMCAAAmAAAAMFchAGwAAAB0AgAAJgAAADBXIQBsAAAAdQIAACYAAAAwVyEAbAAAALgCAAAcAAAAMFchAGwAAAC4AgAAKQAAADBXIQBsAAAAwwIAACwAAAAwVyEAbAAAAMcCAAATAAAAMFchAGwAAADRAgAALAAAADBXIQBsAAAA0wIAABUAAAAwVyEAbAAAANUCAAATAAAAMFchAGwAAADbAgAAHAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgVW5pY29kZSBjbGFzc4RbIQBUAAAAMFchAGwAAADpAgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgYnl0ZSBjbGFzcwAAAPBbIQBRAAAAMFchAGwAAADsAgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgcmVwZXRpdGlvbgAAAFxcIQBRAAAAMFchAGwAAADvAgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgZ3JvdXDIXCEATAAAADBXIQBsAAAA8gIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGFsdCBtYXJrZXIAAAAsXSEAUQAAADBXIQBsAAAA9QIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGFsdCBicmFuY2ggbWFya2VymF0hAFgAAAAwVyEAbAAAAPgCAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBVbmljb2RlIGNsYXNzAAAACF4hAFEAAAAwVyEAbAAAAAgDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBieXRlIGNsYXNzAAB0XiEATgAAADBXIQBsAAAACwMAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGFsdCwgZ290IHJlcGV0aXRpb24AANxeIQBOAAAAMFchAGwAAAAOAwAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgYWx0LCBnb3QgZ3JvdXAAAABEXyEASQAAADBXIQBsAAAAEQMAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGFsdCwgZ290IGNvbmNhdCBtYXJrZXIAAACoXyEAUQAAADBXIQBsAAAAFAMAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGFsdCwgZ290IGFsdCBicmFuY2ggbWFya2VyAAAAFGAhAFUAAAAwVyEAbAAAABcDAAARAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5mbGFncygpLnVuaWNvZGUoKTBXIQBsAAAAQwQAAAkAAAAMYXNzZXJ0aW9uIGZhaWxlZDogIXNlbGYuZmxhZ3MoKS51bmljb2RlKCkAADBXIQBsAAAAWQQAAAkAAAAwOUFaYXpBWmF6AH8JCSAgAB9/fzA5IX5heiB+IS86QFtge34JCQoKCwsMDA0NICBBWjA5QVpfX2F6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AAAEBQAABwUAAAYFAAAJBQAACAUAAAsFAAAKBQAADQUAAAwFAAAPBQAADgUAABEFAAAQBQAAEwUAABIFAAAVBQAAFAUAABcFAAAWBQAAGQUAABgFAAAbBQAAGgUAAB0FAAAcBQAAHwUAAB4FAAAhBQAAIAUAACMFAAAiBQAAJQUAACQFAAAnBQAAJgUAACkFAAAoBQAAKwUAACoFAAAtBQAALAUAAC8FAAAuBQAAYQUAAGIFAABjBQAAZAUAAGUFAABmBQAAZwUAAGgFAABpBQAAagUAAGsFAABsBQAAbQUAAG4FAABvBQAAcAUAAHEFAAByBQAAcwUAAHQFAAB1BQAAdgUAAHcFAAB4BQAAeQUAAHoFAAB7BQAAfAUAAH0FAAB+BQAAfwUAAIAFAACBBQAAggUAAIMFAACEBQAAhQUAAIYFAAAxBQAAMgUAADMFAAA0BQAANQUAADYFAAA3BQAAOAUAADkFAAA6BQAAOwUAADwFAAA9BQAAPgUAAD8FAABABQAAQQUAAEIFAABDBQAARAUAAEUFAABGBQAARwUAAEgFAABJBQAASgUAAEsFAABMBQAATQUAAE4FAABPBQAAUAUAAFEFAABSBQAAUwUAAFQFAABVBQAAVgUAAAAtAAABLQAAAi0AAAMtAAAELQAABS0AAAYtAAAHLQAACC0AAAktAAAKLQAACy0AAAwtAAANLQAADi0AAA8tAAAQLQAAES0AABItAAATLQAAFC0AABUtAAAWLQAAFy0AABgtAAAZLQAAGi0AABstAAAcLQAAHS0AAB4tAAAfLQAAIC0AACEtAAAiLQAAIy0AACQtAAAlLQAAJy0AAC0tAACQHAAAkRwAAJIcAACTHAAAlBwAAJUcAACWHAAAlxwAAJgcAACZHAAAmhwAAJscAACcHAAAnRwAAJ4cAACfHAAAoBwAAKEcAACiHAAAoxwAAKQcAAClHAAAphwAAKccAACoHAAAqRwAAKocAACrHAAArBwAAK0cAACuHAAArxwAALAcAACxHAAAshwAALMcAAC0HAAAtRwAALYcAAC3HAAAuBwAALkcAAC6HAAAvRwAAL4cAAC/HAAAcKsAAHGrAAByqwAAc6sAAHSrAAB1qwAAdqsAAHerAAB4qwAAeasAAHqrAAB7qwAAfKsAAH2rAAB+qwAAf6sAAICrAACBqwAAgqsAAIOr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AAA2HwAANx8AAEgfAABJHwAASh8AAEsfAABMHwAATR8AAEAfAABBHwAAQh8AAEMfAABEHwAARR8AAFkfAABbHwAAXR8AAF8fAABRHwAAUx8AAFUfAABXHwAAaB8AAGkfAABqHwAAax8AAGwfAABtHwAAbh8AAG8fAABgHwAAYR8AAGIfAABjHwAAZB8AAGUfAABmHwAAZx8AALofAAC7HwAAyB8AAMkfAADKHwAAyx8AANofAADbHwAA+B8AAPkfAADqHwAA6x8AAPofAAD7HwAAiB8AAIkfAACKHwAAix8AAIwfAACNHwAAjh8AAI8fAACAHwAAgR8AAIIfAACDHwAAhB8AAIUfAACGHwAAhx8AAJgfAACZHwAAmh8AAJsfAACcHwAAnR8AAJ4fAACfHwAAkB8AAJEfAACSHwAAkx8AAJQfAACVHwAAlh8AAJcfAACoHwAAqR8AAKofAACrHwAArB8AAK0fAACuHwAArx8AAKAfAAChHwAAoh8AAKMfAACkHwAApR8AAKYfAACnHwAAuB8AALkfAAC8HwAAsB8AALEfAABwHwAAcR8AALMfAABFAwAAmQMAALkDAADMHwAAch8AAHMfAAB0HwAAdR8AAMMfAADYHwAA2R8AANAfAADRHwAAdh8AAHcfAADoHwAA6R8AAOwfAADgHwAA4R8AAHofAAB7HwAA5R8AAPwfAAB4HwAAeR8AAHwfAAB9HwAA8x8AAKkDAADJAwAASwAAAGsAAADFAAAA5QAAAE4hAAAyIQAAcCEAAHEhAAByIQAAcyEAAHQhAAB1IQAAdiEAAHchAAB4IQAAeSEAAHohAAB7IQAAfCEAAH0hAAB+IQAAfyEAAGAhAABhIQAAYiEAAGMhAABkIQAAZSEAAGYhAABnIQAAaCEAAGkhAABqIQAAayEAAGwhAABtIQAAbiEAAG8hAACEIQAAgyEAANAkAADRJAAA0iQAANMkAADUJAAA1SQAANYkAADXJAAA2CQAANkkAADaJAAA2yQAANwkAADdJAAA3iQAAN8kAADgJAAA4SQAAOIkAADjJAAA5CQAAOUkAADmJAAA5yQAAOgkAADpJAAAtiQAALckAAC4JAAAuSQAALokAAC7JAAAvCQAAL0kAAC+JAAAvyQAAMAkAADBJAAAwiQAAMMkAADEJAAAxSQAAMYkAADHJAAAyCQAAMkkAADKJAAAyyQAAMwkAADNJAAAziQAAM8kAAAwLAAAMSwAADIsAAAzLAAANCwAADUsAAA2LAAANywAADgsAAA5LAAAOiwAADssAAA8LAAAPSwAAD4sAAA/LAAAQCwAAEEsAABCLAAAQywAAEQsAABFLAAARiwAAEcsAABILAAASSwAAEosAABLLAAATCwAAE0sAABOLAAATywAAFAsAABRLAAAUiwAAFMsAABULAAAVSwAAFYsAABXLAAAWCwAAFksAABaLAAAWywAAFwsAABdLAAAXiwAAF8sAAAALAAAASwAAAIsAAADLAAABCwAAAUsAAAGLAAABywAAAgsAAAJLAAACiwAAAssAAAMLAAADSwAAA4sAAAPLAAAECwAABEsAAASLAAAEywAABQsAAAVLAAAFiwAABcsAAAYLAAAGSwAABosAAAbLAAAHCwAAB0sAAAeLAAAHywAACAsAAAhLAAAIiwAACMsAAAkLAAAJSwAACYsAAAnLAAAKCwAACksAAAqLAAAKywAACwsAAAtLAAALiwAAC8sAABhLAAAYCwAAGsCAAB9HQAAfQIAADoCAAA+AgAAaCwAAGcsAABqLAAAaSwAAGwsAABrLAAAUQIAAHECAABQAgAAUgIAAHMsAAByLAAAdiwAAHUsAAA/AgAAQAIAAIEsAACALAAAgywAAIIsAACFLAAAhCwAAIcsAACGLAAAiSwAAIgsAACLLAAAiiwAAI0sAACMLAAAjywAAI4sAACRLAAAkCwAAJMsAACSLAAAlSwAAJQsAACXLAAAliwAAJksAACYLAAAmywAAJosAACdLAAAnCwAAJ8sAACeLAAAoSwAAKAsAACjLAAAoiwAAKUsAACkLAAApywAAKYsAACpLAAAqCwAAKssAACqLAAArSwAAKwsAACvLAAAriwAALEsAACwLAAAsywAALIsAAC1LAAAtCwAALcsAAC2LAAAuSwAALgsAAC7LAAAuiwAAL0sAAC8LAAAvywAAL4sAADBLAAAwCwAAMMsAADCLAAAxSwAAMQsAADHLAAAxiwAAMksAADILAAAyywAAMosAADNLAAAzCwAAM8sAADOLAAA0SwAANAsAADTLAAA0iwAANUsAADULAAA1ywAANYsAADZLAAA2CwAANssAADaLAAA3SwAANwsAADfLAAA3iwAAOEsAADgLAAA4ywAAOIsAADsLAAA6ywAAO4sAADtLAAA8ywAAPIsAACgEAAAoRAAAKIQAACjEAAApBAAAKUQAACmEAAApxAAAKgQAACpEAAAqhAAAKsQAACsEAAArRAAAK4QAACvEAAAsBAAALEQAACyEAAAsxAAALQQAAC1EAAAthAAALcQAAC4EAAAuRAAALoQAAC7EAAAvBAAAL0QAAC+EAAAvxAAAMAQAADBEAAAwhAAAMMQAADEEAAAxRAAAMcQAADNEAAAQaYAAECmAABDpgAAQqYAAEWmAABEpgAAR6YAAEamAABJpgAASKYAAIgcAABLpgAAiBwAAEqmAABNpgAATKYAAE+mAABOpgAAUaYAAFCmAABTpgAAUqYAAFWmAABUpgAAV6YAAFamAABZpgAAWKYAAFumAABapgAAXaYAAFymAABfpgAAXqYAAGGmAABgpgAAY6YAAGKmAABlpgAAZKYAAGemAABmpgAAaaYAAGimAABrpgAAaqYAAG2mAABspgAAgaYAAICmAACDpgAAgqYAAIWmAACEpgAAh6YAAIamAACJpgAAiKYAAIumAACKpgAAjaYAAIymAACPpgAAjqYAAJGmAACQpgAAk6YAAJKmAACVpgAAlKYAAJemAACWpgAAmaYAAJimAACbpgAAmqYAACOnAAAipwAAJacAACSnAAAnpwAAJqcAACmnAAAopwAAK6cAACqnAAAtpwAALKcAAC+nAAAupwAAM6cAADKnAAA1pwAANKcAADenAAA2pwAAOacAADinAAA7pwAAOqcAAD2nAAA8pwAAP6cAAD6nAABBpwAAQKcAAEOnAABCpwAARacAAESnAABHpwAARqcAAEmnAABIpwAAS6cAAEqnAABNpwAATKcAAE+nAABOpwAAUacAAFCnAABTpwAAUqcAAFWnAABUpwAAV6cAAFanAABZpwAAWKcAAFunAABapwAAXacAAFynAABfpwAAXqcAAGGnAABgpwAAY6cAAGKnAABlpwAAZKcAAGenAABmpwAAaacAAGinAABrpwAAaqcAAG2nAABspwAAb6cAAG6nAAB6pwAAeacAAHynAAB7pwAAeR0AAH+nAAB+pwAAgacAAICnAACDpwAAgqcAAIWnAACEpwAAh6cAAIanAACMpwAAi6cAAGUCAACRpwAAkKcAAJOnAACSpwAAxKcAAJenAACWpwAAmacAAJin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AQAA6QEAAekBAALpAQAD6QEABOkBAAXpAQAG6QEAB+kBAAjpAQAJ6QEACukBAAvpAQAM6QEADekBAA7pAQAP6QEAEOkBABHpAQAS6QEAE+kBABTpAQAV6QEAFukBABfpAQAY6QEAGekBABrpAQAb6QEAHOkBAB3pAQAe6QEAH+kBACDpAQAh6QEAQQAAAHxkIQABAAAAQgAAAIBkIQABAAAAQwAAAIRkIQABAAAARAAAAIhkIQABAAAARQAAAIxkIQABAAAARgAAAJBkIQABAAAARwAAAJRkIQABAAAASAAAAJhkIQABAAAASQAAAJxkIQABAAAASgAAAKBkIQABAAAASwAAAKRkIQACAAAATAAAAKxkIQABAAAATQAAALBkIQABAAAATgAAALRkIQABAAAATwAAALhkIQABAAAAUAAAALxkIQABAAAAUQAAAMBkIQABAAAAUgAAAMRkIQABAAAAUwAAAMhkIQACAAAAVAAAANBkIQABAAAAVQAAANRkIQABAAAAVgAAANhkIQABAAAAVwAAANxkIQABAAAAWAAAAOBkIQABAAAAWQAAAORkIQABAAAAWgAAAOhkIQABAAAAYQAAAOxkIQABAAAAYgAAAPBkIQABAAAAYwAAAPRkIQABAAAAZAAAAPhkIQABAAAAZQAAAPxkIQABAAAAZgAAAABlIQABAAAAZwAAAARlIQABAAAAaAAAAAhlIQABAAAAaQAAAAxlIQABAAAAagAAABBlIQABAAAAawAAABRlIQACAAAAbAAAABxlIQABAAAAbQAAACBlIQABAAAAbgAAACRlIQABAAAAbwAAAChlIQABAAAAcAAAACxlIQABAAAAcQAAADBlIQABAAAAcgAAADRlIQABAAAAcwAAADhlIQACAAAAdAAAAEBlIQABAAAAdQAAAERlIQABAAAAdgAAAEhlIQABAAAAdwAAAExlIQABAAAAeAAAAFBlIQABAAAAeQAAAFRlIQABAAAAegAAAFhlIQABAAAAtQAAAFxlIQACAAAAwAAAAGRlIQABAAAAwQAAAGhlIQABAAAAwgAAAGxlIQABAAAAwwAAAHBlIQABAAAAxAAAAHRlIQABAAAAxQAAAHhlIQACAAAAxgAAAIBlIQABAAAAxwAAAIRlIQABAAAAyAAAAIhlIQABAAAAyQAAAIxlIQABAAAAygAAAJBlIQABAAAAywAAAJRlIQABAAAAzAAAAJhlIQABAAAAzQAAAJxlIQABAAAAzgAAAKBlIQABAAAAzwAAAKRlIQABAAAA0AAAAKhlIQABAAAA0QAAAKxlIQABAAAA0gAAALBlIQABAAAA0wAAALRlIQABAAAA1AAAALhlIQABAAAA1QAAALxlIQABAAAA1gAAAMBlIQABAAAA2AAAAMRlIQABAAAA2QAAAMhlIQABAAAA2gAAAMxlIQABAAAA2wAAANBlIQABAAAA3AAAANRlIQABAAAA3QAAANhlIQABAAAA3gAAANxlIQABAAAA3wAAAOBlIQABAAAA4AAAAORlIQABAAAA4QAAAOhlIQABAAAA4gAAAOxlIQABAAAA4wAAAPBlIQABAAAA5AAAAPRlIQABAAAA5QAAAPhlIQACAAAA5gAAAABmIQABAAAA5wAAAARmIQABAAAA6AAAAAhmIQABAAAA6QAAAAxmIQABAAAA6gAAABBmIQABAAAA6wAAABRmIQABAAAA7AAAABhmIQABAAAA7QAAABxmIQABAAAA7gAAACBmIQABAAAA7wAAACRmIQABAAAA8AAAAChmIQABAAAA8QAAACxmIQABAAAA8gAAADBmIQABAAAA8wAAADRmIQABAAAA9AAAADhmIQABAAAA9QAAADxmIQABAAAA9gAAAEBmIQABAAAA+AAAAERmIQABAAAA+QAAAEhmIQABAAAA+gAAAExmIQABAAAA+wAAAFBmIQABAAAA/AAAAFRmIQABAAAA/QAAAFhmIQABAAAA/gAAAFxmIQABAAAA/wAAAGBmIQABAAAAAAEAAGRmIQABAAAAAQEAAGhmIQABAAAAAgEAAGxmIQABAAAAAwEAAHBmIQABAAAABAEAAHRmIQABAAAABQEAAHhmIQABAAAABgEAAHxmIQABAAAABwEAAIBmIQABAAAACAEAAIRmIQABAAAACQEAAIhmIQABAAAACgEAAIxmIQABAAAACwEAAJBmIQABAAAADAEAAJRmIQABAAAADQEAAJhmIQABAAAADgEAAJxmIQABAAAADwEAAKBmIQABAAAAEAEAAKRmIQABAAAAEQEAAKhmIQABAAAAEgEAAKxmIQABAAAAEwEAALBmIQABAAAAFAEAALRmIQABAAAAFQEAALhmIQABAAAAFgEAALxmIQABAAAAFwEAAMBmIQABAAAAGAEAAMRmIQABAAAAGQEAAMhmIQABAAAAGgEAAMxmIQABAAAAGwEAANBmIQABAAAAHAEAANRmIQABAAAAHQEAANhmIQABAAAAHgEAANxmIQABAAAAHwEAAOBmIQABAAAAIAEAAORmIQABAAAAIQEAAOhmIQABAAAAIgEAAOxmIQABAAAAIwEAAPBmIQABAAAAJAEAAPRmIQABAAAAJQEAAPhmIQABAAAAJgEAAPxmIQABAAAAJwEAAABnIQABAAAAKAEAAARnIQABAAAAKQEAAAhnIQABAAAAKgEAAAxnIQABAAAAKwEAABBnIQABAAAALAEAABRnIQABAAAALQEAABhnIQABAAAALgEAABxnIQABAAAALwEAACBnIQABAAAAMgEAACRnIQABAAAAMwEAAChnIQABAAAANAEAACxnIQABAAAANQEAADBnIQABAAAANgEAADRnIQABAAAANwEAADhnIQABAAAAOQEAADxnIQABAAAAOgEAAEBnIQABAAAAOwEAAERnIQABAAAAPAEAAEhnIQABAAAAPQEAAExnIQABAAAAPgEAAFBnIQABAAAAPwEAAFRnIQABAAAAQAEAAFhnIQABAAAAQQEAAFxnIQABAAAAQgEAAGBnIQABAAAAQwEAAGRnIQABAAAARAEAAGhnIQABAAAARQEAAGxnIQABAAAARgEAAHBnIQABAAAARwEAAHRnIQABAAAASAEAAHhnIQABAAAASgEAAHxnIQABAAAASwEAAIBnIQABAAAATAEAAIRnIQABAAAATQEAAIhnIQABAAAATgEAAIxnIQABAAAATwEAAJBnIQABAAAAUAEAAJRnIQABAAAAUQEAAJhnIQABAAAAUgEAAJxnIQABAAAAUwEAAKBnIQABAAAAVAEAAKRnIQABAAAAVQEAAKhnIQABAAAAVgEAAKxnIQABAAAAVwEAALBnIQABAAAAWAEAALRnIQABAAAAWQEAALhnIQABAAAAWgEAALxnIQABAAAAWwEAAMBnIQABAAAAXAEAAMRnIQABAAAAXQEAAMhnIQABAAAAXgEAAMxnIQABAAAAXwEAANBnIQABAAAAYAEAANRnIQABAAAAYQEAANhnIQABAAAAYgEAANxnIQABAAAAYwEAAOBnIQABAAAAZAEAAORnIQABAAAAZQEAAOhnIQABAAAAZgEAAOxnIQABAAAAZwEAAPBnIQABAAAAaAEAAPRnIQABAAAAaQEAAPhnIQABAAAAagEAAPxnIQABAAAAawEAAABoIQABAAAAbAEAAARoIQABAAAAbQEAAAhoIQABAAAAbgEAAAxoIQABAAAAbwEAABBoIQABAAAAcAEAABRoIQABAAAAcQEAABhoIQABAAAAcgEAABxoIQABAAAAcwEAACBoIQABAAAAdAEAACRoIQABAAAAdQEAAChoIQABAAAAdgEAACxoIQABAAAAdwEAADBoIQABAAAAeAEAADRoIQABAAAAeQEAADhoIQABAAAAegEAADxoIQABAAAAewEAAEBoIQABAAAAfAEAAERoIQABAAAAfQEAAEhoIQABAAAAfgEAAExoIQABAAAAfwEAAFBoIQACAAAAgAEAAFhoIQABAAAAgQEAAFxoIQABAAAAggEAAGBoIQABAAAAgwEAAGRoIQABAAAAhAEAAGhoIQABAAAAhQEAAGxoIQABAAAAhgEAAHBoIQABAAAAhwEAAHRoIQABAAAAiAEAAHhoIQABAAAAiQEAAHxoIQABAAAAigEAAIBoIQABAAAAiwEAAIRoIQABAAAAjAEAAIhoIQABAAAAjgEAAIxoIQABAAAAjwEAAJBoIQABAAAAkAEAAJRoIQABAAAAkQEAAJhoIQABAAAAkgEAAJxoIQABAAAAkwEAAKBoIQABAAAAlAEAAKRoIQABAAAAlQEAAKhoIQABAAAAlgEAAKxoIQABAAAAlwEAALBoIQABAAAAmAEAALRoIQABAAAAmQEAALhoIQABAAAAmgEAALxoIQABAAAAnAEAAMBoIQABAAAAnQEAAMRoIQABAAAAngEAAMhoIQABAAAAnwEAAMxoIQABAAAAoAEAANBoIQABAAAAoQEAANRoIQABAAAAogEAANhoIQABAAAAowEAANxoIQABAAAApAEAAOBoIQABAAAApQEAAORoIQABAAAApgEAAOhoIQABAAAApwEAAOxoIQABAAAAqAEAAPBoIQABAAAAqQEAAPRoIQABAAAArAEAAPhoIQABAAAArQEAAPxoIQABAAAArgEAAABpIQABAAAArwEAAARpIQABAAAAsAEAAAhpIQABAAAAsQEAAAxpIQABAAAAsgEAABBpIQABAAAAswEAABRpIQABAAAAtAEAABhpIQABAAAAtQEAABxpIQABAAAAtgEAACBpIQABAAAAtwEAACRpIQABAAAAuAEAAChpIQABAAAAuQEAACxpIQABAAAAvAEAADBpIQABAAAAvQEAADRpIQABAAAAvwEAADhpIQABAAAAxAEAADxpIQACAAAAxQEAAERpIQACAAAAxgEAAExpIQACAAAAxwEAAFRpIQACAAAAyAEAAFxpIQACAAAAyQEAAGRpIQACAAAAygEAAGxpIQACAAAAywEAAHRpIQACAAAAzAEAAHxpIQACAAAAzQEAAIRpIQABAAAAzgEAAIhpIQABAAAAzwEAAIxpIQABAAAA0AEAAJBpIQABAAAA0QEAAJRpIQABAAAA0gEAAJhpIQABAAAA0wEAAJxpIQABAAAA1AEAAKBpIQABAAAA1QEAAKRpIQABAAAA1gEAAKhpIQABAAAA1wEAAKxpIQABAAAA2AEAALBpIQABAAAA2QEAALRpIQABAAAA2gEAALhpIQABAAAA2wEAALxpIQABAAAA3AEAAMBpIQABAAAA3QEAAMRpIQABAAAA3gEAAMhpIQABAAAA3wEAAMxpIQABAAAA4AEAANBpIQABAAAA4QEAANRpIQABAAAA4gEAANhpIQABAAAA4wEAANxpIQABAAAA5AEAAOBpIQABAAAA5QEAAORpIQABAAAA5gEAAOhpIQABAAAA5wEAAOxpIQABAAAA6AEAAPBpIQABAAAA6QEAAPRpIQABAAAA6gEAAPhpIQABAAAA6wEAAPxpIQABAAAA7AEAAABqIQABAAAA7QEAAARqIQABAAAA7gEAAAhqIQABAAAA7wEAAAxqIQABAAAA8QEAABBqIQACAAAA8gEAABhqIQACAAAA8wEAACBqIQACAAAA9AEAAChqIQABAAAA9QEAACxqIQABAAAA9gEAADBqIQABAAAA9wEAADRqIQABAAAA+AEAADhqIQABAAAA+QEAADxqIQABAAAA+gEAAEBqIQABAAAA+wEAAERqIQABAAAA/AEAAEhqIQABAAAA/QEAAExqIQABAAAA/gEAAFBqIQABAAAA/wEAAFRqIQABAAAAAAIAAFhqIQABAAAAAQIAAFxqIQABAAAAAgIAAGBqIQABAAAAAwIAAGRqIQABAAAABAIAAGhqIQABAAAABQIAAGxqIQABAAAABgIAAHBqIQABAAAABwIAAHRqIQABAAAACAIAAHhqIQABAAAACQIAAHxqIQABAAAACgIAAIBqIQABAAAACwIAAIRqIQABAAAADAIAAIhqIQABAAAADQIAAIxqIQABAAAADgIAAJBqIQABAAAADwIAAJRqIQABAAAAEAIAAJhqIQABAAAAEQIAAJxqIQABAAAAEgIAAKBqIQABAAAAEwIAAKRqIQABAAAAFAIAAKhqIQABAAAAFQIAAKxqIQABAAAAFgIAALBqIQABAAAAFwIAALRqIQABAAAAGAIAALhqIQABAAAAGQIAALxqIQABAAAAGgIAAMBqIQABAAAAGwIAAMRqIQABAAAAHAIAAMhqIQABAAAAHQIAAMxqIQABAAAAHgIAANBqIQABAAAAHwIAANRqIQABAAAAIAIAANhqIQABAAAAIgIAANxqIQABAAAAIwIAAOBqIQABAAAAJAIAAORqIQABAAAAJQIAAOhqIQABAAAAJgIAAOxqIQABAAAAJwIAAPBqIQABAAAAKAIAAPRqIQABAAAAKQIAAPhqIQABAAAAKgIAAPxqIQABAAAAKwIAAABrIQABAAAALAIAAARrIQABAAAALQIAAAhrIQABAAAALgIAAAxrIQABAAAALwIAABBrIQABAAAAMAIAABRrIQABAAAAMQIAABhrIQABAAAAMgIAABxrIQABAAAAMwIAACBrIQABAAAAOgIAACRrIQABAAAAOwIAAChrIQABAAAAPAIAACxrIQABAAAAPQIAADBrIQABAAAAPgIAADRrIQABAAAAPwIAADhrIQABAAAAQAIAADxrIQABAAAAQQIAAEBrIQABAAAAQgIAAERrIQABAAAAQwIAAEhrIQABAAAARAIAAExrIQABAAAARQIAAFBrIQABAAAARgIAAFRrIQABAAAARwIAAFhrIQABAAAASAIAAFxrIQABAAAASQIAAGBrIQABAAAASgIAAGRrIQABAAAASwIAAGhrIQABAAAATAIAAGxrIQABAAAATQIAAHBrIQABAAAATgIAAHRrIQABAAAATwIAAHhrIQABAAAAUAIAAHxrIQABAAAAUQIAAIBrIQABAAAAUgIAAIRrIQABAAAAUwIAAIhrIQABAAAAVAIAAIxrIQABAAAAVgIAAJBrIQABAAAAVwIAAJRrIQABAAAAWQIAAJhrIQABAAAAWwIAAJxrIQABAAAAXAIAAKBrIQABAAAAYAIAAKRrIQABAAAAYQIAAKhrIQABAAAAYwIAAKxrIQABAAAAZQIAALBrIQABAAAAZgIAALRrIQABAAAAaAIAALhrIQABAAAAaQIAALxrIQABAAAAagIAAMBrIQABAAAAawIAAMRrIQABAAAAbAIAAMhrIQABAAAAbwIAAMxrIQABAAAAcQIAANBrIQABAAAAcgIAANRrIQABAAAAdQIAANhrIQABAAAAfQIAANxrIQABAAAAgAIAAOBrIQABAAAAggIAAORrIQABAAAAgwIAAOhrIQABAAAAhwIAAOxrIQABAAAAiAIAAPBrIQABAAAAiQIAAPRrIQABAAAAigIAAPhrIQABAAAAiwIAAPxrIQABAAAAjAIAAABsIQABAAAAkgIAAARsIQABAAAAnQIAAAhsIQABAAAAngIAAAxsIQABAAAARQMAABBsIQADAAAAcAMAABxsIQABAAAAcQMAACBsIQABAAAAcgMAACRsIQABAAAAcwMAAChsIQABAAAAdgMAACxsIQABAAAAdwMAADBsIQABAAAAewMAADRsIQABAAAAfAMAADhsIQABAAAAfQMAADxsIQABAAAAfwMAAEBsIQABAAAAhgMAAERsIQABAAAAiAMAAEhsIQABAAAAiQMAAExsIQABAAAAigMAAFBsIQABAAAAjAMAAFRsIQABAAAAjgMAAFhsIQABAAAAjwMAAFxsIQABAAAAkQMAAGBsIQABAAAAkgMAAGRsIQACAAAAkwMAAGxsIQABAAAAlAMAAHBsIQABAAAAlQMAAHRsIQACAAAAlgMAAHxsIQABAAAAlwMAAIBsIQABAAAAmAMAAIRsIQADAAAAmQMAAJBsIQADAAAAmgMAAJxsIQACAAAAmwMAAKRsIQABAAAAnAMAAKhsIQACAAAAnQMAALBsIQABAAAAngMAALRsIQABAAAAnwMAALhsIQABAAAAoAMAALxsIQACAAAAoQMAAMRsIQACAAAAowMAAMxsIQACAAAApAMAANRsIQABAAAApQMAANhsIQABAAAApgMAANxsIQACAAAApwMAAORsIQABAAAAqAMAAOhsIQABAAAAqQMAAOxsIQACAAAAqgMAAPRsIQABAAAAqwMAAPhsIQABAAAArAMAAPxsIQABAAAArQMAAABtIQABAAAArgMAAARtIQABAAAArwMAAAhtIQABAAAAsQMAAAxtIQABAAAAsgMAABBtIQACAAAAswMAABhtIQABAAAAtAMAABxtIQABAAAAtQMAACBtIQACAAAAtgMAAChtIQABAAAAtwMAACxtIQABAAAAuAMAADBtIQADAAAAuQMAADxtIQADAAAAugMAAEhtIQACAAAAuwMAAFBtIQABAAAAvAMAAFRtIQACAAAAvQMAAFxtIQABAAAAvgMAAGBtIQABAAAAvwMAAGRtIQABAAAAwAMAAGhtIQACAAAAwQMAAHBtIQACAAAAwgMAAHhtIQACAAAAwwMAAIBtIQACAAAAxAMAAIhtIQABAAAAxQMAAIxtIQABAAAAxgMAAJBtIQACAAAAxwMAAJhtIQABAAAAyAMAAJxtIQABAAAAyQMAAKBtIQACAAAAygMAAKhtIQABAAAAywMAAKxtIQABAAAAzAMAALBtIQABAAAAzQMAALRtIQABAAAAzgMAALhtIQABAAAAzwMAALxtIQABAAAA0AMAAMBtIQACAAAA0QMAAMhtIQADAAAA1QMAANRtIQACAAAA1gMAANxtIQACAAAA1wMAAORtIQABAAAA2AMAAOhtIQABAAAA2QMAAOxtIQABAAAA2gMAAPBtIQABAAAA2wMAAPRtIQABAAAA3AMAAPhtIQABAAAA3QMAAPxtIQABAAAA3gMAAABuIQABAAAA3wMAAARuIQABAAAA4AMAAAhuIQABAAAA4QMAAAxuIQABAAAA4gMAABBuIQABAAAA4wMAABRuIQABAAAA5AMAABhuIQABAAAA5QMAABxuIQABAAAA5gMAACBuIQABAAAA5wMAACRuIQABAAAA6AMAAChuIQABAAAA6QMAACxuIQABAAAA6gMAADBuIQABAAAA6wMAADRuIQABAAAA7AMAADhuIQABAAAA7QMAADxuIQABAAAA7gMAAEBuIQABAAAA7wMAAERuIQABAAAA8AMAAEhuIQACAAAA8QMAAFBuIQACAAAA8gMAAFhuIQABAAAA8wMAAFxuIQABAAAA9AMAAGBuIQADAAAA9QMAAGxuIQACAAAA9wMAAHRuIQABAAAA+AMAAHhuIQABAAAA+QMAAHxuIQABAAAA+gMAAIBuIQABAAAA+wMAAIRuIQABAAAA/QMAAIhuIQABAAAA/gMAAIxuIQABAAAA/wMAAJBuIQABAAAAAAQAAJRuIQABAAAAAQQAAJhuIQABAAAAAgQAAJxuIQABAAAAAwQAAKBuIQABAAAABAQAAKRuIQABAAAABQQAAKhuIQABAAAABgQAAKxuIQABAAAABwQAALBuIQABAAAACAQAALRuIQABAAAACQQAALhuIQABAAAACgQAALxuIQABAAAACwQAAMBuIQABAAAADAQAAMRuIQABAAAADQQAAMhuIQABAAAADgQAAMxuIQABAAAADwQAANBuIQABAAAAEAQAANRuIQABAAAAEQQAANhuIQABAAAAEgQAANxuIQACAAAAEwQAAORuIQABAAAAFAQAAOhuIQACAAAAFQQAAPBuIQABAAAAFgQAAPRuIQABAAAAFwQAAPhuIQABAAAAGAQAAPxuIQABAAAAGQQAAABvIQABAAAAGgQAAARvIQABAAAAGwQAAAhvIQABAAAAHAQAAAxvIQABAAAAHQQAABBvIQABAAAAHgQAABRvIQACAAAAHwQAABxvIQABAAAAIAQAACBvIQABAAAAIQQAACRvIQACAAAAIgQAACxvIQADAAAAIwQAADhvIQABAAAAJAQAADxvIQABAAAAJQQAAEBvIQABAAAAJgQAAERvIQABAAAAJwQAAEhvIQABAAAAKAQAAExvIQABAAAAKQQAAFBvIQABAAAAKgQAAFRvIQACAAAAKwQAAFxvIQABAAAALAQAAGBvIQABAAAALQQAAGRvIQABAAAALgQAAGhvIQABAAAALwQAAGxvIQABAAAAMAQAAHBvIQABAAAAMQQAAHRvIQABAAAAMgQAAHhvIQACAAAAMwQAAIBvIQABAAAANAQAAIRvIQACAAAANQQAAIxvIQABAAAANgQAAJBvIQABAAAANwQAAJRvIQABAAAAOAQAAJhvIQABAAAAOQQAAJxvIQABAAAAOgQAAKBvIQABAAAAOwQAAKRvIQABAAAAPAQAAKhvIQABAAAAPQQAAKxvIQABAAAAPgQAALBvIQACAAAAPwQAALhvIQABAAAAQAQAALxvIQABAAAAQQQAAMBvIQACAAAAQgQAAMhvIQADAAAAQwQAANRvIQABAAAARAQAANhvIQABAAAARQQAANxvIQABAAAARgQAAOBvIQABAAAARwQAAORvIQABAAAASAQAAOhvIQABAAAASQQAAOxvIQABAAAASgQAAPBvIQACAAAASwQAAPhvIQABAAAATAQAAPxvIQABAAAATQQAAABwIQABAAAATgQAAARwIQABAAAATwQAAAhwIQABAAAAUAQAAAxwIQABAAAAUQQAABBwIQABAAAAUgQAABRwIQABAAAAUwQAABhwIQABAAAAVAQAABxwIQABAAAAVQQAACBwIQABAAAAVgQAACRwIQABAAAAVwQAAChwIQABAAAAWAQAACxwIQABAAAAWQQAADBwIQABAAAAWgQAADRwIQABAAAAWwQAADhwIQABAAAAXAQAADxwIQABAAAAXQQAAEBwIQABAAAAXgQAAERwIQABAAAAXwQAAEhwIQABAAAAYAQAAExwIQABAAAAYQQAAFBwIQABAAAAYgQAAFRwIQACAAAAYwQAAFxwIQACAAAAZAQAAGRwIQABAAAAZQQAAGhwIQABAAAAZgQAAGxwIQABAAAAZwQAAHBwIQABAAAAaAQAAHRwIQABAAAAaQQAAHhwIQABAAAAagQAAHxwIQABAAAAawQAAIBwIQABAAAAbAQAAIRwIQABAAAAbQQAAIhwIQABAAAAbgQAAIxwIQABAAAAbwQAAJBwIQABAAAAcAQAAJRwIQABAAAAcQQAAJhwIQABAAAAcgQAAJxwIQABAAAAcwQAAKBwIQABAAAAdAQAAKRwIQABAAAAdQQAAKhwIQABAAAAdgQAAKxwIQABAAAAdwQAALBwIQABAAAAeAQAALRwIQABAAAAeQQAALhwIQABAAAAegQAALxwIQABAAAAewQAAMBwIQABAAAAfAQAAMRwIQABAAAAfQQAAMhwIQABAAAAfgQAAMxwIQABAAAAfwQAANBwIQABAAAAgAQAANRwIQABAAAAgQQAANhwIQABAAAAigQAANxwIQABAAAAiwQAAOBwIQABAAAAjAQAAORwIQABAAAAjQQAAOhwIQABAAAAjgQAAOxwIQABAAAAjwQAAPBwIQABAAAAkAQAAPRwIQABAAAAkQQAAPhwIQABAAAAkgQAAPxwIQABAAAAkwQAAABxIQABAAAAlAQAAARxIQABAAAAlQQAAAhxIQABAAAAlgQAAAxxIQABAAAAlwQAABBxIQABAAAAmAQAABRxIQABAAAAmQQAABhxIQABAAAAmgQAABxxIQABAAAAmwQAACBxIQABAAAAnAQAACRxIQABAAAAnQQAAChxIQABAAAAngQAACxxIQABAAAAnwQAADBxIQABAAAAoAQAADRxIQABAAAAoQQAADhxIQABAAAAogQAADxxIQABAAAAowQAAEBxIQABAAAApAQAAERxIQABAAAApQQAAEhxIQABAAAApgQAAExxIQABAAAApwQAAFBxIQABAAAAqAQAAFRxIQABAAAAqQQAAFhxIQABAAAAqgQAAFxxIQABAAAAqwQAAGBxIQABAAAArAQAAGRxIQABAAAArQQAAGhxIQABAAAArgQAAGxxIQABAAAArwQAAHBxIQABAAAAsAQAAHRxIQABAAAAsQQAAHhxIQABAAAAsgQAAHxxIQABAAAAswQAAIBxIQABAAAAtAQAAIRxIQABAAAAtQQAAIhxIQABAAAAtgQAAIxxIQABAAAAtwQAAJBxIQABAAAAuAQAAJRxIQABAAAAuQQAAJhxIQABAAAAugQAAJxxIQABAAAAuwQAAKBxIQABAAAAvAQAAKRxIQABAAAAvQQAAKhxIQABAAAAvgQAAKxxIQABAAAAvwQAALBxIQABAAAAwAQAALRxIQABAAAAwQQAALhxIQABAAAAwgQAALxxIQABAAAAwwQAAMBxIQABAAAAxAQAAMRxIQABAAAAxQQAAMhxIQABAAAAxgQAAMxxIQABAAAAxwQAANBxIQABAAAAyAQAANRxIQABAAAAyQQAANhxIQABAAAAygQAANxxIQABAAAAywQAAOBxIQABAAAAzAQAAORxIQABAAAAzQQAAOhxIQABAAAAzgQAAOxxIQABAAAAzwQAAPBxIQABAAAA0AQAAPRxIQABAAAA0QQAAPhxIQABAAAA0gQAAPxxIQABAAAA0wQAAAByIQABAAAA1AQAAARyIQABAAAA1QQAAAhyIQABAAAA1gQAAAxyIQABAAAA1wQAABByIQABAAAA2AQAABRyIQABAAAA2QQAABhyIQABAAAA2gQAABxyIQABAAAA2wQAACByIQABAAAA3AQAACRyIQABAAAA3QQAAChyIQABAAAA3gQAACxyIQABAAAA3wQAADByIQABAAAA4AQAADRyIQABAAAA4QQAADhyIQABAAAA4gQAADxyIQABAAAA4wQAAEByIQABAAAA5AQAAERyIQABAAAA5QQAAEhyIQABAAAA5gQAAExyIQABAAAA5wQAAFByIQABAAAA6AQAAFRyIQABAAAA6QQAAFhyIQABAAAA6gQAAFxyIQABAAAA6wQAAGByIQABAAAA7AQAAGRyIQABAAAA7QQAAGhyIQABAAAA7gQAAGxyIQABAAAA7wQAAHByIQABAAAA8AQAAHRyIQABAAAA8QQAAHhyIQABAAAA8gQAAHxyIQABAAAA8wQAAIByIQABAAAA9AQAAIRyIQABAAAA9QQAAIhyIQABAAAA9gQAAIxyIQABAAAA9wQAAJByIQABAAAA+AQAAJRyIQABAAAA+QQAAJhyIQABAAAA+gQAAJxyIQABAAAA+wQAAKByIQABAAAA/AQAAKRyIQABAAAA/QQAAKhyIQABAAAA/gQAAKxyIQABAAAA/wQAALByIQABAAAAAAUAALRyIQABAAAAAQUAALhyIQABAAAAAgUAALxyIQABAAAAAwUAAMByIQABAAAABAUAAMRyIQABAAAABQUAAMhyIQABAAAABgUAAMxyIQABAAAABwUAANByIQABAAAACAUAANRyIQABAAAACQUAANhyIQABAAAACgUAANxyIQABAAAACwUAAOByIQABAAAADAUAAORyIQABAAAADQUAAOhyIQABAAAADgUAAOxyIQABAAAADwUAAPByIQABAAAAEAUAAPRyIQABAAAAEQUAAPhyIQABAAAAEgUAAPxyIQABAAAAEwUAAABzIQABAAAAFAUAAARzIQABAAAAFQUAAAhzIQABAAAAFgUAAAxzIQABAAAAFwUAABBzIQABAAAAGAUAABRzIQABAAAAGQUAABhzIQABAAAAGgUAABxzIQABAAAAGwUAACBzIQABAAAAHAUAACRzIQABAAAAHQUAAChzIQABAAAAHgUAACxzIQABAAAAHwUAADBzIQABAAAAIAUAADRzIQABAAAAIQUAADhzIQABAAAAIgUAADxzIQABAAAAIwUAAEBzIQABAAAAJAUAAERzIQABAAAAJQUAAEhzIQABAAAAJgUAAExzIQABAAAAJwUAAFBzIQABAAAAKAUAAFRzIQABAAAAKQUAAFhzIQABAAAAKgUAAFxzIQABAAAAKwUAAGBzIQABAAAALAUAAGRzIQABAAAALQUAAGhzIQABAAAALgUAAGxzIQABAAAALwUAAHBzIQABAAAAMQUAAHRzIQABAAAAMgUAAHhzIQABAAAAMwUAAHxzIQABAAAANAUAAIBzIQABAAAANQUAAIRzIQABAAAANgUAAIhzIQABAAAANwUAAIxzIQABAAAAOAUAAJBzIQABAAAAOQUAAJRzIQABAAAAOgUAAJhzIQABAAAAOwUAAJxzIQABAAAAPAUAAKBzIQABAAAAPQUAAKRzIQABAAAAPgUAAKhzIQABAAAAPwUAAKxzIQABAAAAQAUAALBzIQABAAAAQQUAALRzIQABAAAAQgUAALhzIQABAAAAQwUAALxzIQABAAAARAUAAMBzIQABAAAARQUAAMRzIQABAAAARgUAAMhzIQABAAAARwUAAMxzIQABAAAASAUAANBzIQABAAAASQUAANRzIQABAAAASgUAANhzIQABAAAASwUAANxzIQABAAAATAUAAOBzIQABAAAATQUAAORzIQABAAAATgUAAOhzIQABAAAATwUAAOxzIQABAAAAUAUAAPBzIQABAAAAUQUAAPRzIQABAAAAUgUAAPhzIQABAAAAUwUAAPxzIQABAAAAVAUAAAB0IQABAAAAVQUAAAR0IQABAAAAVgUAAAh0IQABAAAAYQUAAAx0IQABAAAAYgUAABB0IQABAAAAYwUAABR0IQABAAAAZAUAABh0IQABAAAAZQUAABx0IQABAAAAZgUAACB0IQABAAAAZwUAACR0IQABAAAAaAUAACh0IQABAAAAaQUAACx0IQABAAAAagUAADB0IQABAAAAawUAADR0IQABAAAAbAUAADh0IQABAAAAbQUAADx0IQABAAAAbgUAAEB0IQABAAAAbwUAAER0IQABAAAAcAUAAEh0IQABAAAAcQUAAEx0IQABAAAAcgUAAFB0IQABAAAAcwUAAFR0IQABAAAAdAUAAFh0IQABAAAAdQUAAFx0IQABAAAAdgUAAGB0IQABAAAAdwUAAGR0IQABAAAAeAUAAGh0IQABAAAAeQUAAGx0IQABAAAAegUAAHB0IQABAAAAewUAAHR0IQABAAAAfAUAAHh0IQABAAAAfQUAAHx0IQABAAAAfgUAAIB0IQABAAAAfwUAAIR0IQABAAAAgAUAAIh0IQABAAAAgQUAAIx0IQABAAAAggUAAJB0IQABAAAAgwUAAJR0IQABAAAAhAUAAJh0IQABAAAAhQUAAJx0IQABAAAAhgUAAKB0IQABAAAAoBAAAKR0IQABAAAAoRAAAKh0IQABAAAAohAAAKx0IQABAAAAoxAAALB0IQABAAAApBAAALR0IQABAAAApRAAALh0IQABAAAAphAAALx0IQABAAAApxAAAMB0IQABAAAAqBAAAMR0IQABAAAAqRAAAMh0IQABAAAAqhAAAMx0IQABAAAAqxAAANB0IQABAAAArBAAANR0IQABAAAArRAAANh0IQABAAAArhAAANx0IQABAAAArxAAAOB0IQABAAAAsBAAAOR0IQABAAAAsRAAAOh0IQABAAAAshAAAOx0IQABAAAAsxAAAPB0IQABAAAAtBAAAPR0IQABAAAAtRAAAPh0IQABAAAAthAAAPx0IQABAAAAtxAAAAB1IQABAAAAuBAAAAR1IQABAAAAuRAAAAh1IQABAAAAuhAAAAx1IQABAAAAuxAAABB1IQABAAAAvBAAABR1IQABAAAAvRAAABh1IQABAAAAvhAAABx1IQABAAAAvxAAACB1IQABAAAAwBAAACR1IQABAAAAwRAAACh1IQABAAAAwhAAACx1IQABAAAAwxAAADB1IQABAAAAxBAAADR1IQABAAAAxRAAADh1IQABAAAAxxAAADx1IQABAAAAzRAAAEB1IQABAAAA0BAAAER1IQABAAAA0RAAAEh1IQABAAAA0hAAAEx1IQABAAAA0xAAAFB1IQABAAAA1BAAAFR1IQABAAAA1RAAAFh1IQABAAAA1hAAAFx1IQABAAAA1xAAAGB1IQABAAAA2BAAAGR1IQABAAAA2RAAAGh1IQABAAAA2hAAAGx1IQABAAAA2xAAAHB1IQABAAAA3BAAAHR1IQABAAAA3RAAAHh1IQABAAAA3hAAAHx1IQABAAAA3xAAAIB1IQABAAAA4BAAAIR1IQABAAAA4RAAAIh1IQABAAAA4hAAAIx1IQABAAAA4xAAAJB1IQABAAAA5BAAAJR1IQABAAAA5RAAAJh1IQABAAAA5hAAAJx1IQABAAAA5xAAAKB1IQABAAAA6BAAAKR1IQABAAAA6RAAAKh1IQABAAAA6hAAAKx1IQABAAAA6xAAALB1IQABAAAA7BAAALR1IQABAAAA7RAAALh1IQABAAAA7hAAALx1IQABAAAA7xAAAMB1IQABAAAA8BAAAMR1IQABAAAA8RAAAMh1IQABAAAA8hAAAMx1IQABAAAA8xAAANB1IQABAAAA9BAAANR1IQABAAAA9RAAANh1IQABAAAA9hAAANx1IQABAAAA9xAAAOB1IQABAAAA+BAAAOR1IQABAAAA+RAAAOh1IQABAAAA+hAAAOx1IQABAAAA/RAAAPB1IQABAAAA/hAAAPR1IQABAAAA/xAAAPh1IQABAAAAoBMAAPx1IQABAAAAoRMAAAB2IQABAAAAohMAAAR2IQABAAAAoxMAAAh2IQABAAAApBMAAAx2IQABAAAApRMAABB2IQABAAAAphMAABR2IQABAAAApxMAABh2IQABAAAAqBMAABx2IQABAAAAqRMAACB2IQABAAAAqhMAACR2IQABAAAAqxMAACh2IQABAAAArBMAACx2IQABAAAArRMAADB2IQABAAAArhMAADR2IQABAAAArxMAADh2IQABAAAAsBMAADx2IQABAAAAsRMAAEB2IQABAAAAshMAAER2IQABAAAAsxMAAEh2IQABAAAAtBMAAEx2IQABAAAAtRMAAFB2IQABAAAAthMAAFR2IQABAAAAtxMAAFh2IQABAAAAuBMAAFx2IQABAAAAuRMAAGB2IQABAAAAuhMAAGR2IQABAAAAuxMAAGh2IQABAAAAvBMAAGx2IQABAAAAvRMAAHB2IQABAAAAvhMAAHR2IQABAAAAvxMAAHh2IQABAAAAwBMAAHx2IQABAAAAwRMAAIB2IQABAAAAwhMAAIR2IQABAAAAwxMAAIh2IQABAAAAxBMAAIx2IQABAAAAxRMAAJB2IQABAAAAxhMAAJR2IQABAAAAxxMAAJh2IQABAAAAyBMAAJx2IQABAAAAyRMAAKB2IQABAAAAyhMAAKR2IQABAAAAyxMAAKh2IQABAAAAzBMAAKx2IQABAAAAzRMAALB2IQABAAAAzhMAALR2IQABAAAAzxMAALh2IQABAAAA0BMAALx2IQABAAAA0RMAAMB2IQABAAAA0hMAAMR2IQABAAAA0xMAAMh2IQABAAAA1BMAAMx2IQABAAAA1RMAANB2IQABAAAA1hMAANR2IQABAAAA1xMAANh2IQABAAAA2BMAANx2IQABAAAA2RMAAOB2IQABAAAA2hMAAOR2IQABAAAA2xMAAOh2IQABAAAA3BMAAOx2IQABAAAA3RMAAPB2IQABAAAA3hMAAPR2IQABAAAA3xMAAPh2IQABAAAA4BMAAPx2IQABAAAA4RMAAAB3IQABAAAA4hMAAAR3IQABAAAA4xMAAAh3IQABAAAA5BMAAAx3IQABAAAA5RMAABB3IQABAAAA5hMAABR3IQABAAAA5xMAABh3IQABAAAA6BMAABx3IQABAAAA6RMAACB3IQABAAAA6hMAACR3IQABAAAA6xMAACh3IQABAAAA7BMAACx3IQABAAAA7RMAADB3IQABAAAA7hMAADR3IQABAAAA7xMAADh3IQABAAAA8BMAADx3IQABAAAA8RMAAEB3IQABAAAA8hMAAER3IQABAAAA8xMAAEh3IQABAAAA9BMAAEx3IQABAAAA9RMAAFB3IQABAAAA+BMAAFR3IQABAAAA+RMAAFh3IQABAAAA+hMAAFx3IQABAAAA+xMAAGB3IQABAAAA/BMAAGR3IQABAAAA/RMAAGh3IQABAAAAgBwAAGx3IQACAAAAgRwAAHR3IQACAAAAghwAAHx3IQACAAAAgxwAAIR3IQACAAAAhBwAAIx3IQADAAAAhRwAAJh3IQADAAAAhhwAAKR3IQACAAAAhxwAAKx3IQACAAAAiBwAALR3IQACAAAAkBwAALx3IQABAAAAkRwAAMB3IQABAAAAkhwAAMR3IQABAAAAkxwAAMh3IQABAAAAlBwAAMx3IQABAAAAlRwAANB3IQABAAAAlhwAANR3IQABAAAAlxwAANh3IQABAAAAmBwAANx3IQABAAAAmRwAAOB3IQABAAAAmhwAAOR3IQABAAAAmxwAAOh3IQABAAAAnBwAAOx3IQABAAAAnRwAAPB3IQABAAAAnhwAAPR3IQABAAAAnxwAAPh3IQABAAAAoBwAAPx3IQABAAAAoRwAAAB4IQABAAAAohwAAAR4IQABAAAAoxwAAAh4IQABAAAApBwAAAx4IQABAAAApRwAABB4IQABAAAAphwAABR4IQABAAAApxwAABh4IQABAAAAqBwAABx4IQABAAAAqRwAACB4IQABAAAAqhwAACR4IQABAAAAqxwAACh4IQABAAAArBwAACx4IQABAAAArRwAADB4IQABAAAArhwAADR4IQABAAAArxwAADh4IQABAAAAsBwAADx4IQABAAAAsRwAAEB4IQABAAAAshwAAER4IQABAAAAsxwAAEh4IQABAAAAtBwAAEx4IQABAAAAtRwAAFB4IQABAAAAthwAAFR4IQABAAAAtxwAAFh4IQABAAAAuBwAAFx4IQABAAAAuRwAAGB4IQABAAAAuhwAAGR4IQABAAAAvRwAAGh4IQABAAAAvhwAAGx4IQABAAAAvxwAAHB4IQABAAAAeR0AAHR4IQABAAAAfR0AAHh4IQABAAAAjh0AAHx4IQABAAAAAB4AAIB4IQABAAAAAR4AAIR4IQABAAAAAh4AAIh4IQABAAAAAx4AAIx4IQABAAAABB4AAJB4IQABAAAABR4AAJR4IQABAAAABh4AAJh4IQABAAAABx4AAJx4IQABAAAACB4AAKB4IQABAAAACR4AAKR4IQABAAAACh4AAKh4IQABAAAACx4AAKx4IQABAAAADB4AALB4IQABAAAADR4AALR4IQABAAAADh4AALh4IQABAAAADx4AALx4IQABAAAAEB4AAMB4IQABAAAAER4AAMR4IQABAAAAEh4AAMh4IQABAAAAEx4AAMx4IQABAAAAFB4AANB4IQABAAAAFR4AANR4IQABAAAAFh4AANh4IQABAAAAFx4AANx4IQABAAAAGB4AAOB4IQABAAAAGR4AAOR4IQABAAAAGh4AAOh4IQABAAAAGx4AAOx4IQABAAAAHB4AAPB4IQABAAAAHR4AAPR4IQABAAAAHh4AAPh4IQABAAAAHx4AAPx4IQABAAAAIB4AAAB5IQABAAAAIR4AAAR5IQABAAAAIh4AAAh5IQABAAAAIx4AAAx5IQABAAAAJB4AABB5IQABAAAAJR4AABR5IQABAAAAJh4AABh5IQABAAAAJx4AABx5IQABAAAAKB4AACB5IQABAAAAKR4AACR5IQABAAAAKh4AACh5IQABAAAAKx4AACx5IQABAAAALB4AADB5IQABAAAALR4AADR5IQABAAAALh4AADh5IQABAAAALx4AADx5IQABAAAAMB4AAEB5IQABAAAAMR4AAER5IQABAAAAMh4AAEh5IQABAAAAMx4AAEx5IQABAAAANB4AAFB5IQABAAAANR4AAFR5IQABAAAANh4AAFh5IQABAAAANx4AAFx5IQABAAAAOB4AAGB5IQABAAAAOR4AAGR5IQABAAAAOh4AAGh5IQABAAAAOx4AAGx5IQABAAAAPB4AAHB5IQABAAAAPR4AAHR5IQABAAAAPh4AAHh5IQABAAAAPx4AAHx5IQABAAAAQB4AAIB5IQABAAAAQR4AAIR5IQABAAAAQh4AAIh5IQABAAAAQx4AAIx5IQABAAAARB4AAJB5IQABAAAARR4AAJR5IQABAAAARh4AAJh5IQABAAAARx4AAJx5IQABAAAASB4AAKB5IQABAAAASR4AAKR5IQABAAAASh4AAKh5IQABAAAASx4AAKx5IQABAAAATB4AALB5IQABAAAATR4AALR5IQABAAAATh4AALh5IQABAAAATx4AALx5IQABAAAAUB4AAMB5IQABAAAAUR4AAMR5IQABAAAAUh4AAMh5IQABAAAAUx4AAMx5IQABAAAAVB4AANB5IQABAAAAVR4AANR5IQABAAAAVh4AANh5IQABAAAAVx4AANx5IQABAAAAWB4AAOB5IQABAAAAWR4AAOR5IQABAAAAWh4AAOh5IQABAAAAWx4AAOx5IQABAAAAXB4AAPB5IQABAAAAXR4AAPR5IQABAAAAXh4AAPh5IQABAAAAXx4AAPx5IQABAAAAYB4AAAB6IQACAAAAYR4AAAh6IQACAAAAYh4AABB6IQABAAAAYx4AABR6IQABAAAAZB4AABh6IQABAAAAZR4AABx6IQABAAAAZh4AACB6IQABAAAAZx4AACR6IQABAAAAaB4AACh6IQABAAAAaR4AACx6IQABAAAAah4AADB6IQABAAAAax4AADR6IQABAAAAbB4AADh6IQABAAAAbR4AADx6IQABAAAAbh4AAEB6IQABAAAAbx4AAER6IQABAAAAcB4AAEh6IQABAAAAcR4AAEx6IQABAAAAch4AAFB6IQABAAAAcx4AAFR6IQABAAAAdB4AAFh6IQABAAAAdR4AAFx6IQABAAAAdh4AAGB6IQABAAAAdx4AAGR6IQABAAAAeB4AAGh6IQABAAAAeR4AAGx6IQABAAAAeh4AAHB6IQABAAAAex4AAHR6IQABAAAAfB4AAHh6IQABAAAAfR4AAHx6IQABAAAAfh4AAIB6IQABAAAAfx4AAIR6IQABAAAAgB4AAIh6IQABAAAAgR4AAIx6IQABAAAAgh4AAJB6IQABAAAAgx4AAJR6IQABAAAAhB4AAJh6IQABAAAAhR4AAJx6IQABAAAAhh4AAKB6IQABAAAAhx4AAKR6IQABAAAAiB4AAKh6IQABAAAAiR4AAKx6IQABAAAAih4AALB6IQABAAAAix4AALR6IQABAAAAjB4AALh6IQABAAAAjR4AALx6IQABAAAAjh4AAMB6IQABAAAAjx4AAMR6IQABAAAAkB4AAMh6IQABAAAAkR4AAMx6IQABAAAAkh4AANB6IQABAAAAkx4AANR6IQABAAAAlB4AANh6IQABAAAAlR4AANx6IQABAAAAmx4AAOB6IQACAAAAnh4AAOh6IQABAAAAoB4AAOx6IQABAAAAoR4AAPB6IQABAAAAoh4AAPR6IQABAAAAox4AAPh6IQABAAAApB4AAPx6IQABAAAApR4AAAB7IQABAAAAph4AAAR7IQABAAAApx4AAAh7IQABAAAAqB4AAAx7IQABAAAAqR4AABB7IQABAAAAqh4AABR7IQABAAAAqx4AABh7IQABAAAArB4AABx7IQABAAAArR4AACB7IQABAAAArh4AACR7IQABAAAArx4AACh7IQABAAAAsB4AACx7IQABAAAAsR4AADB7IQABAAAAsh4AADR7IQABAAAAsx4AADh7IQABAAAAtB4AADx7IQABAAAAtR4AAEB7IQABAAAAth4AAER7IQABAAAAtx4AAEh7IQABAAAAuB4AAEx7IQABAAAAuR4AAFB7IQABAAAAuh4AAFR7IQABAAAAux4AAFh7IQABAAAAvB4AAFx7IQABAAAAvR4AAGB7IQABAAAAvh4AAGR7IQABAAAAvx4AAGh7IQABAAAAwB4AAGx7IQABAAAAwR4AAHB7IQABAAAAwh4AAHR7IQABAAAAwx4AAHh7IQABAAAAxB4AAHx7IQABAAAAxR4AAIB7IQABAAAAxh4AAIR7IQABAAAAxx4AAIh7IQABAAAAyB4AAIx7IQABAAAAyR4AAJB7IQABAAAAyh4AAJR7IQABAAAAyx4AAJh7IQABAAAAzB4AAJx7IQABAAAAzR4AAKB7IQABAAAAzh4AAKR7IQABAAAAzx4AAKh7IQABAAAA0B4AAKx7IQABAAAA0R4AALB7IQABAAAA0h4AALR7IQABAAAA0x4AALh7IQABAAAA1B4AALx7IQABAAAA1R4AAMB7IQABAAAA1h4AAMR7IQABAAAA1x4AAMh7IQABAAAA2B4AAMx7IQABAAAA2R4AANB7IQABAAAA2h4AANR7IQABAAAA2x4AANh7IQABAAAA3B4AANx7IQABAAAA3R4AAOB7IQABAAAA3h4AAOR7IQABAAAA3x4AAOh7IQABAAAA4B4AAOx7IQABAAAA4R4AAPB7IQABAAAA4h4AAPR7IQABAAAA4x4AAPh7IQABAAAA5B4AAPx7IQABAAAA5R4AAAB8IQABAAAA5h4AAAR8IQABAAAA5x4AAAh8IQABAAAA6B4AAAx8IQABAAAA6R4AABB8IQABAAAA6h4AABR8IQABAAAA6x4AABh8IQABAAAA7B4AABx8IQABAAAA7R4AACB8IQABAAAA7h4AACR8IQABAAAA7x4AACh8IQABAAAA8B4AACx8IQABAAAA8R4AADB8IQABAAAA8h4AADR8IQABAAAA8x4AADh8IQABAAAA9B4AADx8IQABAAAA9R4AAEB8IQABAAAA9h4AAER8IQABAAAA9x4AAEh8IQABAAAA+B4AAEx8IQABAAAA+R4AAFB8IQABAAAA+h4AAFR8IQABAAAA+x4AAFh8IQABAAAA/B4AAFx8IQABAAAA/R4AAGB8IQABAAAA/h4AAGR8IQABAAAA/x4AAGh8IQABAAAAAB8AAGx8IQABAAAAAR8AAHB8IQABAAAAAh8AAHR8IQABAAAAAx8AAHh8IQABAAAABB8AAHx8IQABAAAABR8AAIB8IQABAAAABh8AAIR8IQABAAAABx8AAIh8IQABAAAACB8AAIx8IQABAAAACR8AAJB8IQABAAAACh8AAJR8IQABAAAACx8AAJh8IQABAAAADB8AAJx8IQABAAAADR8AAKB8IQABAAAADh8AAKR8IQABAAAADx8AAKh8IQABAAAAEB8AAKx8IQABAAAAER8AALB8IQABAAAAEh8AALR8IQABAAAAEx8AALh8IQABAAAAFB8AALx8IQABAAAAFR8AAMB8IQABAAAAGB8AAMR8IQABAAAAGR8AAMh8IQABAAAAGh8AAMx8IQABAAAAGx8AANB8IQABAAAAHB8AANR8IQABAAAAHR8AANh8IQABAAAAIB8AANx8IQABAAAAIR8AAOB8IQABAAAAIh8AAOR8IQABAAAAIx8AAOh8IQABAAAAJB8AAOx8IQABAAAAJR8AAPB8IQABAAAAJh8AAPR8IQABAAAAJx8AAPh8IQABAAAAKB8AAPx8IQABAAAAKR8AAAB9IQABAAAAKh8AAAR9IQABAAAAKx8AAAh9IQABAAAALB8AAAx9IQABAAAALR8AABB9IQABAAAALh8AABR9IQABAAAALx8AABh9IQABAAAAMB8AABx9IQABAAAAMR8AACB9IQABAAAAMh8AACR9IQABAAAAMx8AACh9IQABAAAANB8AACx9IQABAAAANR8AADB9IQABAAAANh8AADR9IQABAAAANx8AADh9IQABAAAAOB8AADx9IQABAAAAOR8AAEB9IQABAAAAOh8AAER9IQABAAAAOx8AAEh9IQABAAAAPB8AAEx9IQABAAAAPR8AAFB9IQABAAAAPh8AAFR9IQABAAAAPx8AAFh9IQABAAAAQB8AAFx9IQABAAAAQR8AAGB9IQABAAAAQh8AAGR9IQABAAAAQx8AAGh9IQABAAAARB8AAGx9IQABAAAARR8AAHB9IQABAAAASB8AAHR9IQABAAAASR8AAHh9IQABAAAASh8AAHx9IQABAAAASx8AAIB9IQABAAAATB8AAIR9IQABAAAATR8AAIh9IQABAAAAUR8AAIx9IQABAAAAUx8AAJB9IQABAAAAVR8AAJR9IQABAAAAVx8AAJh9IQABAAAAWR8AAJx9IQABAAAAWx8AAKB9IQABAAAAXR8AAKR9IQABAAAAXx8AAKh9IQABAAAAYB8AAKx9IQABAAAAYR8AALB9IQABAAAAYh8AALR9IQABAAAAYx8AALh9IQABAAAAZB8AALx9IQABAAAAZR8AAMB9IQABAAAAZh8AAMR9IQABAAAAZx8AAMh9IQABAAAAaB8AAMx9IQABAAAAaR8AANB9IQABAAAAah8AANR9IQABAAAAax8AANh9IQABAAAAbB8AANx9IQABAAAAbR8AAOB9IQABAAAAbh8AAOR9IQABAAAAbx8AAOh9IQABAAAAcB8AAOx9IQABAAAAcR8AAPB9IQABAAAAch8AAPR9IQABAAAAcx8AAPh9IQABAAAAdB8AAPx9IQABAAAAdR8AAAB+IQABAAAAdh8AAAR+IQABAAAAdx8AAAh+IQABAAAAeB8AAAx+IQABAAAAeR8AABB+IQABAAAAeh8AABR+IQABAAAAex8AABh+IQABAAAAfB8AABx+IQABAAAAfR8AACB+IQABAAAAgB8AACR+IQABAAAAgR8AACh+IQABAAAAgh8AACx+IQABAAAAgx8AADB+IQABAAAAhB8AADR+IQABAAAAhR8AADh+IQABAAAAhh8AADx+IQABAAAAhx8AAEB+IQABAAAAiB8AAER+IQABAAAAiR8AAEh+IQABAAAAih8AAEx+IQABAAAAix8AAFB+IQABAAAAjB8AAFR+IQABAAAAjR8AAFh+IQABAAAAjh8AAFx+IQABAAAAjx8AAGB+IQABAAAAkB8AAGR+IQABAAAAkR8AAGh+IQABAAAAkh8AAGx+IQABAAAAkx8AAHB+IQABAAAAlB8AAHR+IQABAAAAlR8AAHh+IQABAAAAlh8AAHx+IQABAAAAlx8AAIB+IQABAAAAmB8AAIR+IQABAAAAmR8AAIh+IQABAAAAmh8AAIx+IQABAAAAmx8AAJB+IQABAAAAnB8AAJR+IQABAAAAnR8AAJh+IQABAAAAnh8AAJx+IQABAAAAnx8AAKB+IQABAAAAoB8AAKR+IQABAAAAoR8AAKh+IQABAAAAoh8AAKx+IQABAAAAox8AALB+IQABAAAApB8AALR+IQABAAAApR8AALh+IQABAAAAph8AALx+IQABAAAApx8AAMB+IQABAAAAqB8AAMR+IQABAAAAqR8AAMh+IQABAAAAqh8AAMx+IQABAAAAqx8AANB+IQABAAAArB8AANR+IQABAAAArR8AANh+IQABAAAArh8AANx+IQABAAAArx8AAOB+IQABAAAAsB8AAOR+IQABAAAAsR8AAOh+IQABAAAAsx8AAOx+IQABAAAAuB8AAPB+IQABAAAAuR8AAPR+IQABAAAAuh8AAPh+IQABAAAAux8AAPx+IQABAAAAvB8AAAB/IQABAAAAvh8AAAR/IQADAAAAwx8AABB/IQABAAAAyB8AABR/IQABAAAAyR8AABh/IQABAAAAyh8AABx/IQABAAAAyx8AACB/IQABAAAAzB8AACR/IQABAAAA0B8AACh/IQABAAAA0R8AACx/IQABAAAA2B8AADB/IQABAAAA2R8AADR/IQABAAAA2h8AADh/IQABAAAA2x8AADx/IQABAAAA4B8AAEB/IQABAAAA4R8AAER/IQABAAAA5R8AAEh/IQABAAAA6B8AAEx/IQABAAAA6R8AAFB/IQABAAAA6h8AAFR/IQABAAAA6x8AAFh/IQABAAAA7B8AAFx/IQABAAAA8x8AAGB/IQABAAAA+B8AAGR/IQABAAAA+R8AAGh/IQABAAAA+h8AAGx/IQABAAAA+x8AAHB/IQABAAAA/B8AAHR/IQABAAAAJiEAAHh/IQACAAAAKiEAAIB/IQACAAAAKyEAAIh/IQACAAAAMiEAAJB/IQABAAAATiEAAJR/IQABAAAAYCEAAJh/IQABAAAAYSEAAJx/IQABAAAAYiEAAKB/IQABAAAAYyEAAKR/IQABAAAAZCEAAKh/IQABAAAAZSEAAKx/IQABAAAAZiEAALB/IQABAAAAZyEAALR/IQABAAAAaCEAALh/IQABAAAAaSEAALx/IQABAAAAaiEAAMB/IQABAAAAayEAAMR/IQABAAAAbCEAAMh/IQABAAAAbSEAAMx/IQABAAAAbiEAANB/IQABAAAAbyEAANR/IQABAAAAcCEAANh/IQABAAAAcSEAANx/IQABAAAAciEAAOB/IQABAAAAcyEAAOR/IQABAAAAdCEAAOh/IQABAAAAdSEAAOx/IQABAAAAdiEAAPB/IQABAAAAdyEAAPR/IQABAAAAeCEAAPh/IQABAAAAeSEAAPx/IQABAAAAeiEAAACAIQABAAAAeyEAAASAIQABAAAAfCEAAAiAIQABAAAAfSEAAAyAIQABAAAAfiEAABCAIQABAAAAfyEAABSAIQABAAAAgyEAABiAIQABAAAAhCEAAByAIQABAAAAtiQAACCAIQABAAAAtyQAACSAIQABAAAAuCQAACiAIQABAAAAuSQAACyAIQABAAAAuiQAADCAIQABAAAAuyQAADSAIQABAAAAvCQAADiAIQABAAAAvSQAADyAIQABAAAAviQAAECAIQABAAAAvyQAAESAIQABAAAAwCQAAEiAIQABAAAAwSQAAEyAIQABAAAAwiQAAFCAIQABAAAAwyQAAFSAIQABAAAAxCQAAFiAIQABAAAAxSQAAFyAIQABAAAAxiQAAGCAIQABAAAAxyQAAGSAIQABAAAAyCQAAGiAIQABAAAAySQAAGyAIQABAAAAyiQAAHCAIQABAAAAyyQAAHSAIQABAAAAzCQAAHiAIQABAAAAzSQAAHyAIQABAAAAziQAAICAIQABAAAAzyQAAISAIQABAAAA0CQAAIiAIQABAAAA0SQAAIyAIQABAAAA0iQAAJCAIQABAAAA0yQAAJSAIQABAAAA1CQAAJiAIQABAAAA1SQAAJyAIQABAAAA1iQAAKCAIQABAAAA1yQAAKSAIQABAAAA2CQAAKiAIQABAAAA2SQAAKyAIQABAAAA2iQAALCAIQABAAAA2yQAALSAIQABAAAA3CQAALiAIQABAAAA3SQAALyAIQABAAAA3iQAAMCAIQABAAAA3yQAAMSAIQABAAAA4CQAAMiAIQABAAAA4SQAAMyAIQABAAAA4iQAANCAIQABAAAA4yQAANSAIQABAAAA5CQAANiAIQABAAAA5SQAANyAIQABAAAA5iQAAOCAIQABAAAA5yQAAOSAIQABAAAA6CQAAOiAIQABAAAA6SQAAOyAIQABAAAAACwAAPCAIQABAAAAASwAAPSAIQABAAAAAiwAAPiAIQABAAAAAywAAPyAIQABAAAABCwAAACBIQABAAAABSwAAASBIQABAAAABiwAAAiBIQABAAAABywAAAyBIQABAAAACCwAABCBIQABAAAACSwAABSBIQABAAAACiwAABiBIQABAAAACywAAByBIQABAAAADCwAACCBIQABAAAADSwAACSBIQABAAAADiwAACiBIQABAAAADywAACyBIQABAAAAECwAADCBIQABAAAAESwAADSBIQABAAAAEiwAADiBIQABAAAAEywAADyBIQABAAAAFCwAAECBIQABAAAAFSwAAESBIQABAAAAFiwAAEiBIQABAAAAFywAAEyBIQABAAAAGCwAAFCBIQABAAAAGSwAAFSBIQABAAAAGiwAAFiBIQABAAAAGywAAFyBIQABAAAAHCwAAGCBIQABAAAAHSwAAGSBIQABAAAAHiwAAGiBIQABAAAAHywAAGyBIQABAAAAICwAAHCBIQABAAAAISwAAHSBIQABAAAAIiwAAHiBIQABAAAAIywAAHyBIQABAAAAJCwAAICBIQABAAAAJSwAAISBIQABAAAAJiwAAIiBIQABAAAAJywAAIyBIQABAAAAKCwAAJCBIQABAAAAKSwAAJSBIQABAAAAKiwAAJiBIQABAAAAKywAAJyBIQABAAAALCwAAKCBIQABAAAALSwAAKSBIQABAAAALiwAAKiBIQABAAAALywAAKyBIQABAAAAMCwAALCBIQABAAAAMSwAALSBIQABAAAAMiwAALiBIQABAAAAMywAALyBIQABAAAANCwAAMCBIQABAAAANSwAAMSBIQABAAAANiwAAMiBIQABAAAANywAAMyBIQABAAAAOCwAANCBIQABAAAAOSwAANSBIQABAAAAOiwAANiBIQABAAAAOywAANyBIQABAAAAPCwAAOCBIQABAAAAPSwAAOSBIQABAAAAPiwAAOiBIQABAAAAPywAAOyBIQABAAAAQCwAAPCBIQABAAAAQSwAAPSBIQABAAAAQiwAAPiBIQABAAAAQywAAPyBIQABAAAARCwAAACCIQABAAAARSwAAASCIQABAAAARiwAAAiCIQABAAAARywAAAyCIQABAAAASCwAABCCIQABAAAASSwAABSCIQABAAAASiwAABiCIQABAAAASywAAByCIQABAAAATCwAACCCIQABAAAATSwAACSCIQABAAAATiwAACiCIQABAAAATywAACyCIQABAAAAUCwAADCCIQABAAAAUSwAADSCIQABAAAAUiwAADiCIQABAAAAUywAADyCIQABAAAAVCwAAECCIQABAAAAVSwAAESCIQABAAAAViwAAEiCIQABAAAAVywAAEyCIQABAAAAWCwAAFCCIQABAAAAWSwAAFSCIQABAAAAWiwAAFiCIQABAAAAWywAAFyCIQABAAAAXCwAAGCCIQABAAAAXSwAAGSCIQABAAAAXiwAAGiCIQABAAAAXywAAGyCIQABAAAAYCwAAHCCIQABAAAAYSwAAHSCIQABAAAAYiwAAHiCIQABAAAAYywAAHyCIQABAAAAZCwAAICCIQABAAAAZSwAAISCIQABAAAAZiwAAIiCIQABAAAAZywAAIyCIQABAAAAaCwAAJCCIQABAAAAaSwAAJSCIQABAAAAaiwAAJiCIQABAAAAaywAAJyCIQABAAAAbCwAAKCCIQABAAAAbSwAAKSCIQABAAAAbiwAAKiCIQABAAAAbywAAKyCIQABAAAAcCwAALCCIQABAAAAciwAALSCIQABAAAAcywAALiCIQABAAAAdSwAALyCIQABAAAAdiwAAMCCIQABAAAAfiwAAMSCIQABAAAAfywAAMiCIQABAAAAgCwAAMyCIQABAAAAgSwAANCCIQABAAAAgiwAANSCIQABAAAAgywAANiCIQABAAAAhCwAANyCIQABAAAAhSwAAOCCIQABAAAAhiwAAOSCIQABAAAAhywAAOiCIQABAAAAiCwAAOyCIQABAAAAiSwAAPCCIQABAAAAiiwAAPSCIQABAAAAiywAAPiCIQABAAAAjCwAAPyCIQABAAAAjSwAAACDIQABAAAAjiwAAASDIQABAAAAjywAAAiDIQABAAAAkCwAAAyDIQABAAAAkSwAABCDIQABAAAAkiwAABSDIQABAAAAkywAABiDIQABAAAAlCwAAByDIQABAAAAlSwAACCDIQABAAAAliwAACSDIQABAAAAlywAACiDIQABAAAAmCwAACyDIQABAAAAmSwAADCDIQABAAAAmiwAADSDIQABAAAAmywAADiDIQABAAAAnCwAADyDIQABAAAAnSwAAECDIQABAAAAniwAAESDIQABAAAAnywAAEiDIQABAAAAoCwAAEyDIQABAAAAoSwAAFCDIQABAAAAoiwAAFSDIQABAAAAoywAAFiDIQABAAAApCwAAFyDIQABAAAApSwAAGCDIQABAAAApiwAAGSDIQABAAAApywAAGiDIQABAAAAqCwAAGyDIQABAAAAqSwAAHCDIQABAAAAqiwAAHSDIQABAAAAqywAAHiDIQABAAAArCwAAHyDIQABAAAArSwAAICDIQABAAAAriwAAISDIQABAAAArywAAIiDIQABAAAAsCwAAIyDIQABAAAAsSwAAJCDIQABAAAAsiwAAJSDIQABAAAAsywAAJiDIQABAAAAtCwAAJyDIQABAAAAtSwAAKCDIQABAAAAtiwAAKSDIQABAAAAtywAAKiDIQABAAAAuCwAAKyDIQABAAAAuSwAALCDIQABAAAAuiwAALSDIQABAAAAuywAALiDIQABAAAAvCwAALyDIQABAAAAvSwAAMCDIQABAAAAviwAAMSDIQABAAAAvywAAMiDIQABAAAAwCwAAMyDIQABAAAAwSwAANCDIQABAAAAwiwAANSDIQABAAAAwywAANiDIQABAAAAxCwAANyDIQABAAAAxSwAAOCDIQABAAAAxiwAAOSDIQABAAAAxywAAOiDIQABAAAAyCwAAOyDIQABAAAAySwAAPCDIQABAAAAyiwAAPSDIQABAAAAyywAAPiDIQABAAAAzCwAAPyDIQABAAAAzSwAAACEIQABAAAAziwAAASEIQABAAAAzywAAAiEIQABAAAA0CwAAAyEIQABAAAA0SwAABCEIQABAAAA0iwAABSEIQABAAAA0ywAABiEIQABAAAA1CwAAByEIQABAAAA1SwAACCEIQABAAAA1iwAACSEIQABAAAA1ywAACiEIQABAAAA2CwAACyEIQABAAAA2SwAADCEIQABAAAA2iwAADSEIQABAAAA2ywAADiEIQABAAAA3CwAADyEIQABAAAA3SwAAECEIQABAAAA3iwAAESEIQABAAAA3ywAAEiEIQABAAAA4CwAAEyEIQABAAAA4SwAAFCEIQABAAAA4iwAAFSEIQABAAAA4ywAAFiEIQABAAAA6ywAAFyEIQABAAAA7CwAAGCEIQABAAAA7SwAAGSEIQABAAAA7iwAAGiEIQABAAAA8iwAAGyEIQABAAAA8ywAAHCEIQABAAAAAC0AAHSEIQABAAAAAS0AAHiEIQABAAAAAi0AAHyEIQABAAAAAy0AAICEIQABAAAABC0AAISEIQABAAAABS0AAIiEIQABAAAABi0AAIyEIQABAAAABy0AAJCEIQABAAAACC0AAJSEIQABAAAACS0AAJiEIQABAAAACi0AAJyEIQABAAAACy0AAKCEIQABAAAADC0AAKSEIQABAAAADS0AAKiEIQABAAAADi0AAKyEIQABAAAADy0AALCEIQABAAAAEC0AALSEIQABAAAAES0AALiEIQABAAAAEi0AALyEIQABAAAAEy0AAMCEIQABAAAAFC0AAMSEIQABAAAAFS0AAMiEIQABAAAAFi0AAMyEIQABAAAAFy0AANCEIQABAAAAGC0AANSEIQABAAAAGS0AANiEIQABAAAAGi0AANyEIQABAAAAGy0AAOCEIQABAAAAHC0AAOSEIQABAAAAHS0AAOiEIQABAAAAHi0AAOyEIQABAAAAHy0AAPCEIQABAAAAIC0AAPSEIQABAAAAIS0AAPiEIQABAAAAIi0AAPyEIQABAAAAIy0AAACFIQABAAAAJC0AAASFIQABAAAAJS0AAAiFIQABAAAAJy0AAAyFIQABAAAALS0AABCFIQABAAAAQKYAABSFIQABAAAAQaYAABiFIQABAAAAQqYAAByFIQABAAAAQ6YAACCFIQABAAAARKYAACSFIQABAAAARaYAACiFIQABAAAARqYAACyFIQABAAAAR6YAADCFIQABAAAASKYAADSFIQABAAAASaYAADiFIQABAAAASqYAADyFIQACAAAAS6YAAESFIQACAAAATKYAAEyFIQABAAAATaYAAFCFIQABAAAATqYAAFSFIQABAAAAT6YAAFiFIQABAAAAUKYAAFyFIQABAAAAUaYAAGCFIQABAAAAUqYAAGSFIQABAAAAU6YAAGiFIQABAAAAVKYAAGyFIQABAAAAVaYAAHCFIQABAAAAVqYAAHSFIQABAAAAV6YAAHiFIQABAAAAWKYAAHyFIQABAAAAWaYAAICFIQABAAAAWqYAAISFIQABAAAAW6YAAIiFIQABAAAAXKYAAIyFIQABAAAAXaYAAJCFIQABAAAAXqYAAJSFIQABAAAAX6YAAJiFIQABAAAAYKYAAJyFIQABAAAAYaYAAKCFIQABAAAAYqYAAKSFIQABAAAAY6YAAKiFIQABAAAAZKYAAKyFIQABAAAAZaYAALCFIQABAAAAZqYAALSFIQABAAAAZ6YAALiFIQABAAAAaKYAALyFIQABAAAAaaYAAMCFIQABAAAAaqYAAMSFIQABAAAAa6YAAMiFIQABAAAAbKYAAMyFIQABAAAAbaYAANCFIQABAAAAgKYAANSFIQABAAAAgaYAANiFIQABAAAAgqYAANyFIQABAAAAg6YAAOCFIQABAAAAhKYAAOSFIQABAAAAhaYAAOiFIQABAAAAhqYAAOyFIQABAAAAh6YAAPCFIQABAAAAiKYAAPSFIQABAAAAiaYAAPiFIQABAAAAiqYAAPyFIQABAAAAi6YAAACGIQABAAAAjKYAAASGIQABAAAAjaYAAAiGIQABAAAAjqYAAAyGIQABAAAAj6YAABCGIQABAAAAkKYAABSGIQABAAAAkaYAABiGIQABAAAAkqYAAByGIQABAAAAk6YAACCGIQABAAAAlKYAACSGIQABAAAAlaYAACiGIQABAAAAlqYAACyGIQABAAAAl6YAADCGIQABAAAAmKYAADSGIQABAAAAmaYAADiGIQABAAAAmqYAADyGIQABAAAAm6YAAECGIQABAAAAIqcAAESGIQABAAAAI6cAAEiGIQABAAAAJKcAAEyGIQABAAAAJacAAFCGIQABAAAAJqcAAFSGIQABAAAAJ6cAAFiGIQABAAAAKKcAAFyGIQABAAAAKacAAGCGIQABAAAAKqcAAGSGIQABAAAAK6cAAGiGIQABAAAALKcAAGyGIQABAAAALacAAHCGIQABAAAALqcAAHSGIQABAAAAL6cAAHiGIQABAAAAMqcAAHyGIQABAAAAM6cAAICGIQABAAAANKcAAISGIQABAAAANacAAIiGIQABAAAANqcAAIyGIQABAAAAN6cAAJCGIQABAAAAOKcAAJSGIQABAAAAOacAAJiGIQABAAAAOqcAAJyGIQABAAAAO6cAAKCGIQABAAAAPKcAAKSGIQABAAAAPacAAKiGIQABAAAAPqcAAKyGIQABAAAAP6cAALCGIQABAAAAQKcAALSGIQABAAAAQacAALiGIQABAAAAQqcAALyGIQABAAAAQ6cAAMCGIQABAAAARKcAAMSGIQABAAAARacAAMiGIQABAAAARqcAAMyGIQABAAAAR6cAANCGIQABAAAASKcAANSGIQABAAAASacAANiGIQABAAAASqcAANyGIQABAAAAS6cAAOCGIQABAAAATKcAAOSGIQABAAAATacAAOiGIQABAAAATqcAAOyGIQABAAAAT6cAAPCGIQABAAAAUKcAAPSGIQABAAAAUacAAPiGIQABAAAAUqcAAPyGIQABAAAAU6cAAACHIQABAAAAVKcAAASHIQABAAAAVacAAAiHIQABAAAAVqcAAAyHIQABAAAAV6cAABCHIQABAAAAWKcAABSHIQABAAAAWacAABiHIQABAAAAWqcAAByHIQABAAAAW6cAACCHIQABAAAAXKcAACSHIQABAAAAXacAACiHIQABAAAAXqcAACyHIQABAAAAX6cAADCHIQABAAAAYKcAADSHIQABAAAAYacAADiHIQABAAAAYqcAADyHIQABAAAAY6cAAECHIQABAAAAZKcAAESHIQABAAAAZacAAEiHIQABAAAAZqcAAEyHIQABAAAAZ6cAAFCHIQABAAAAaKcAAFSHIQABAAAAaacAAFiHIQABAAAAaqcAAFyHIQABAAAAa6cAAGCHIQABAAAAbKcAAGSHIQABAAAAbacAAGiHIQABAAAAbqcAAGyHIQABAAAAb6cAAHCHIQABAAAAeacAAHSHIQABAAAAeqcAAHiHIQABAAAAe6cAAHyHIQABAAAAfKcAAICHIQABAAAAfacAAISHIQABAAAAfqcAAIiHIQABAAAAf6cAAIyHIQABAAAAgKcAAJCHIQABAAAAgacAAJSHIQABAAAAgqcAAJiHIQABAAAAg6cAAJyHIQABAAAAhKcAAKCHIQABAAAAhacAAKSHIQABAAAAhqcAAKiHIQABAAAAh6cAAKyHIQABAAAAi6cAALCHIQABAAAAjKcAALSHIQABAAAAjacAALiHIQABAAAAkKcAALyHIQABAAAAkacAAMCHIQABAAAAkqcAAMSHIQABAAAAk6cAAMiHIQABAAAAlKcAAMyHIQABAAAAlqcAANCHIQABAAAAl6cAANSHIQABAAAAmKcAANiHIQABAAAAmacAANyHIQABAAAAmqcAAOCHIQABAAAAm6cAAOSHIQABAAAAnKcAAOiHIQABAAAAnacAAOyHIQABAAAAnqcAAPCHIQABAAAAn6cAAPSHIQABAAAAoKcAAPiHIQABAAAAoacAAPyHIQABAAAAoqcAAACIIQABAAAAo6cAAASIIQABAAAApKcAAAiIIQABAAAApacAAAyIIQABAAAApqcAABCIIQABAAAAp6cAABSIIQABAAAAqKcAABiIIQABAAAAqacAAByIIQABAAAAqqcAACCIIQABAAAAq6cAACSIIQABAAAArKcAACiIIQABAAAAracAACyIIQABAAAArqcAADCIIQABAAAAsKcAADSIIQABAAAAsacAADiIIQABAAAAsqcAADyIIQABAAAAs6cAAECIIQABAAAAtKcAAESIIQABAAAAtacAAEiIIQABAAAAtqcAAEyIIQABAAAAt6cAAFCIIQABAAAAuKcAAFSIIQABAAAAuacAAFiIIQABAAAAuqcAAFyIIQABAAAAu6cAAGCIIQABAAAAvKcAAGSIIQABAAAAvacAAGiIIQABAAAAvqcAAGyIIQABAAAAv6cAAHCIIQABAAAAwKcAAHSIIQABAAAAwacAAHiIIQABAAAAwqcAAHyIIQABAAAAw6cAAICIIQABAAAAxKcAAISIIQABAAAAxacAAIiIIQABAAAAxqcAAIyIIQABAAAAx6cAAJCIIQABAAAAyKcAAJSIIQABAAAAyacAAJiIIQABAAAAyqcAAJyIIQABAAAA0KcAAKCIIQABAAAA0acAAKSIIQABAAAA1qcAAKiIIQABAAAA16cAAKyIIQABAAAA2KcAALCIIQABAAAA2acAALSIIQABAAAA9acAALiIIQABAAAA9qcAALyIIQABAAAAU6sAAMCIIQABAAAAcKsAAMSIIQABAAAAcasAAMiIIQABAAAAcqsAAMyIIQABAAAAc6sAANCIIQABAAAAdKsAANSIIQABAAAAdasAANiIIQABAAAAdqsAANyIIQABAAAAd6sAAOCIIQABAAAAeKsAAOSIIQABAAAAeasAAOiIIQABAAAAeqsAAOyIIQABAAAAe6sAAPCIIQABAAAAfKsAAPSIIQABAAAAfasAAPiIIQABAAAAfqsAAPyIIQABAAAAf6sAAACJIQABAAAAgKsAAASJIQABAAAAgasAAAiJIQABAAAAgqsAAAyJIQABAAAAg6sAABCJIQABAAAAhKsAABSJIQABAAAAhasAABiJIQABAAAAhqsAAByJIQABAAAAh6sAACCJIQABAAAAiKsAACSJIQABAAAAiasAACiJIQABAAAAiqsAACyJIQABAAAAi6sAADCJIQABAAAAjKsAADSJIQABAAAAjasAADiJIQABAAAAjqsAADyJIQABAAAAj6sAAECJIQABAAAAkKsAAESJIQABAAAAkasAAEiJIQABAAAAkqsAAEyJIQABAAAAk6sAAFCJIQABAAAAlKsAAFSJIQABAAAAlasAAFiJIQABAAAAlqsAAFyJIQABAAAAl6sAAGCJIQABAAAAmKsAAGSJIQABAAAAmasAAGiJIQABAAAAmqsAAGyJIQABAAAAm6sAAHCJIQABAAAAnKsAAHSJIQABAAAAnasAAHiJIQABAAAAnqsAAHyJIQABAAAAn6sAAICJIQABAAAAoKsAAISJIQABAAAAoasAAIiJIQABAAAAoqsAAIyJIQABAAAAo6sAAJCJIQABAAAApKsAAJSJIQABAAAApasAAJiJIQABAAAApqsAAJyJIQABAAAAp6sAAKCJIQABAAAAqKsAAKSJIQABAAAAqasAAKiJIQABAAAAqqsAAKyJIQABAAAAq6sAALCJIQABAAAArKsAALSJIQABAAAArasAALiJIQABAAAArqsAALyJIQABAAAAr6sAAMCJIQABAAAAsKsAAMSJIQABAAAAsasAAMiJIQABAAAAsqsAAMyJIQABAAAAs6sAANCJIQABAAAAtKsAANSJIQABAAAAtasAANiJIQABAAAAtqsAANyJIQABAAAAt6sAAOCJIQABAAAAuKsAAOSJIQABAAAAuasAAOiJIQABAAAAuqsAAOyJIQABAAAAu6sAAPCJIQABAAAAvKsAAPSJIQABAAAAvasAAPiJIQABAAAAvqsAAPyJIQABAAAAv6sAAACKIQABAAAAIf8AAASKIQABAAAAIv8AAAiKIQABAAAAI/8AAAyKIQABAAAAJP8AABCKIQABAAAAJf8AABSKIQABAAAAJv8AABiKIQABAAAAJ/8AAByKIQABAAAAKP8AACCKIQABAAAAKf8AACSKIQABAAAAKv8AACiKIQABAAAAK/8AACyKIQABAAAALP8AADCKIQABAAAALf8AADSKIQABAAAALv8AADiKIQABAAAAL/8AADyKIQABAAAAMP8AAECKIQABAAAAMf8AAESKIQABAAAAMv8AAEiKIQABAAAAM/8AAEyKIQABAAAANP8AAFCKIQABAAAANf8AAFSKIQABAAAANv8AAFiKIQABAAAAN/8AAFyKIQABAAAAOP8AAGCKIQABAAAAOf8AAGSKIQABAAAAOv8AAGiKIQABAAAAQf8AAGyKIQABAAAAQv8AAHCKIQABAAAAQ/8AAHSKIQABAAAARP8AAHiKIQABAAAARf8AAHyKIQABAAAARv8AAICKIQABAAAAR/8AAISKIQABAAAASP8AAIiKIQABAAAASf8AAIyKIQABAAAASv8AAJCKIQABAAAAS/8AAJSKIQABAAAATP8AAJiKIQABAAAATf8AAJyKIQABAAAATv8AAKCKIQABAAAAT/8AAKSKIQABAAAAUP8AAKiKIQABAAAAUf8AAKyKIQABAAAAUv8AALCKIQABAAAAU/8AALSKIQABAAAAVP8AALiKIQABAAAAVf8AALyKIQABAAAAVv8AAMCKIQABAAAAV/8AAMSKIQABAAAAWP8AAMiKIQABAAAAWf8AAMyKIQABAAAAWv8AANCKIQABAAAAAAQBANSKIQABAAAAAQQBANiKIQABAAAAAgQBANyKIQABAAAAAwQBAOCKIQABAAAABAQBAOSKIQABAAAABQQBAOiKIQABAAAABgQBAOyKIQABAAAABwQBAPCKIQABAAAACAQBAPSKIQABAAAACQQBAPiKIQABAAAACgQBAPyKIQABAAAACwQBAACLIQABAAAADAQBAASLIQABAAAADQQBAAiLIQABAAAADgQBAAyLIQABAAAADwQBABCLIQABAAAAEAQBABSLIQABAAAAEQQBABiLIQABAAAAEgQBAByLIQABAAAAEwQBACCLIQABAAAAFAQBACSLIQABAAAAFQQBACiLIQABAAAAFgQBACyLIQABAAAAFwQBADCLIQABAAAAGAQBADSLIQABAAAAGQQBADiLIQABAAAAGgQBADyLIQABAAAAGwQBAECLIQABAAAAHAQBAESLIQABAAAAHQQBAEiLIQABAAAAHgQBAEyLIQABAAAAHwQBAFCLIQABAAAAIAQBAFSLIQABAAAAIQQBAFiLIQABAAAAIgQBAFyLIQABAAAAIwQBAGCLIQABAAAAJAQBAGSLIQABAAAAJQQBAGiLIQABAAAAJgQBAGyLIQABAAAAJwQBAHCLIQABAAAAKAQBAHSLIQABAAAAKQQBAHiLIQABAAAAKgQBAHyLIQABAAAAKwQBAICLIQABAAAALAQBAISLIQABAAAALQQBAIiLIQABAAAALgQBAIyLIQABAAAALwQBAJCLIQABAAAAMAQBAJSLIQABAAAAMQQBAJiLIQABAAAAMgQBAJyLIQABAAAAMwQBAKCLIQABAAAANAQBAKSLIQABAAAANQQBAKiLIQABAAAANgQBAKyLIQABAAAANwQBALCLIQABAAAAOAQBALSLIQABAAAAOQQBALiLIQABAAAAOgQBALyLIQABAAAAOwQBAMCLIQABAAAAPAQBAMSLIQABAAAAPQQBAMiLIQABAAAAPgQBAMyLIQABAAAAPwQBANCLIQABAAAAQAQBANSLIQABAAAAQQQBANiLIQABAAAAQgQBANyLIQABAAAAQwQBAOCLIQABAAAARAQBAOSLIQABAAAARQQBAOiLIQABAAAARgQBAOyLIQABAAAARwQBAPCLIQABAAAASAQBAPSLIQABAAAASQQBAPiLIQABAAAASgQBAPyLIQABAAAASwQBAACMIQABAAAATAQBAASMIQABAAAATQQBAAiMIQABAAAATgQBAAyMIQABAAAATwQBABCMIQABAAAAsAQBABSMIQABAAAAsQQBABiMIQABAAAAsgQBAByMIQABAAAAswQBACCMIQABAAAAtAQBACSMIQABAAAAtQQBACiMIQABAAAAtgQBACyMIQABAAAAtwQBADCMIQABAAAAuAQBADSMIQABAAAAuQQBADiMIQABAAAAugQBADyMIQABAAAAuwQBAECMIQABAAAAvAQBAESMIQABAAAAvQQBAEiMIQABAAAAvgQBAEyMIQABAAAAvwQBAFCMIQABAAAAwAQBAFSMIQABAAAAwQQBAFiMIQABAAAAwgQBAFyMIQABAAAAwwQBAGCMIQABAAAAxAQBAGSMIQABAAAAxQQBAGiMIQABAAAAxgQBAGyMIQABAAAAxwQBAHCMIQABAAAAyAQBAHSMIQABAAAAyQQBAHiMIQABAAAAygQBAHyMIQABAAAAywQBAICMIQABAAAAzAQBAISMIQABAAAAzQQBAIiMIQABAAAAzgQBAIyMIQABAAAAzwQBAJCMIQABAAAA0AQBAJSMIQABAAAA0QQBAJiMIQABAAAA0gQBAJyMIQABAAAA0wQBAKCMIQABAAAA2AQBAKSMIQABAAAA2QQBAKiMIQABAAAA2gQBAKyMIQABAAAA2wQBALCMIQABAAAA3AQBALSMIQABAAAA3QQBALiMIQABAAAA3gQBALyMIQABAAAA3wQBAMCMIQABAAAA4AQBAMSMIQABAAAA4QQBAMiMIQABAAAA4gQBAMyMIQABAAAA4wQBANCMIQABAAAA5AQBANSMIQABAAAA5QQBANiMIQABAAAA5gQBANyMIQABAAAA5wQBAOCMIQABAAAA6AQBAOSMIQABAAAA6QQBAOiMIQABAAAA6gQBAOyMIQABAAAA6wQBAPCMIQABAAAA7AQBAPSMIQABAAAA7QQBAPiMIQABAAAA7gQBAPyMIQABAAAA7wQBAACNIQABAAAA8AQBAASNIQABAAAA8QQBAAiNIQABAAAA8gQBAAyNIQABAAAA8wQBABCNIQABAAAA9AQBABSNIQABAAAA9QQBABiNIQABAAAA9gQBAByNIQABAAAA9wQBACCNIQABAAAA+AQBACSNIQABAAAA+QQBACiNIQABAAAA+gQBACyNIQABAAAA+wQBADCNIQABAAAAcAUBADSNIQABAAAAcQUBADiNIQABAAAAcgUBADyNIQABAAAAcwUBAECNIQABAAAAdAUBAESNIQABAAAAdQUBAEiNIQABAAAAdgUBAEyNIQABAAAAdwUBAFCNIQABAAAAeAUBAFSNIQABAAAAeQUBAFiNIQABAAAAegUBAFyNIQABAAAAfAUBAGCNIQABAAAAfQUBAGSNIQABAAAAfgUBAGiNIQABAAAAfwUBAGyNIQABAAAAgAUBAHCNIQABAAAAgQUBAHSNIQABAAAAggUBAHiNIQABAAAAgwUBAHyNIQABAAAAhAUBAICNIQABAAAAhQUBAISNIQABAAAAhgUBAIiNIQABAAAAhwUBAIyNIQABAAAAiAUBAJCNIQABAAAAiQUBAJSNIQABAAAAigUBAJiNIQABAAAAjAUBAJyNIQABAAAAjQUBAKCNIQABAAAAjgUBAKSNIQABAAAAjwUBAKiNIQABAAAAkAUBAKyNIQABAAAAkQUBALCNIQABAAAAkgUBALSNIQABAAAAlAUBALiNIQABAAAAlQUBALyNIQABAAAAlwUBAMCNIQABAAAAmAUBAMSNIQABAAAAmQUBAMiNIQABAAAAmgUBAMyNIQABAAAAmwUBANCNIQABAAAAnAUBANSNIQABAAAAnQUBANiNIQABAAAAngUBANyNIQABAAAAnwUBAOCNIQABAAAAoAUBAOSNIQABAAAAoQUBAOiNIQABAAAAowUBAOyNIQABAAAApAUBAPCNIQABAAAApQUBAPSNIQABAAAApgUBAPiNIQABAAAApwUBAPyNIQABAAAAqAUBAACOIQABAAAAqQUBAASOIQABAAAAqgUBAAiOIQABAAAAqwUBAAyOIQABAAAArAUBABCOIQABAAAArQUBABSOIQABAAAArgUBABiOIQABAAAArwUBAByOIQABAAAAsAUBACCOIQABAAAAsQUBACSOIQABAAAAswUBACiOIQABAAAAtAUBACyOIQABAAAAtQUBADCOIQABAAAAtgUBADSOIQABAAAAtwUBADiOIQABAAAAuAUBADyOIQABAAAAuQUBAECOIQABAAAAuwUBAESOIQABAAAAvAUBAEiOIQABAAAAgAwBAEyOIQABAAAAgQwBAFCOIQABAAAAggwBAFSOIQABAAAAgwwBAFiOIQABAAAAhAwBAFyOIQABAAAAhQwBAGCOIQABAAAAhgwBAGSOIQABAAAAhwwBAGiOIQABAAAAiAwBAGyOIQABAAAAiQwBAHCOIQABAAAAigwBAHSOIQABAAAAiwwBAHiOIQABAAAAjAwBAHyOIQABAAAAjQwBAICOIQABAAAAjgwBAISOIQABAAAAjwwBAIiOIQABAAAAkAwBAIyOIQABAAAAkQwBAJCOIQABAAAAkgwBAJSOIQABAAAAkwwBAJiOIQABAAAAlAwBAJyOIQABAAAAlQwBAKCOIQABAAAAlgwBAKSOIQABAAAAlwwBAKiOIQABAAAAmAwBAKyOIQABAAAAmQwBALCOIQABAAAAmgwBALSOIQABAAAAmwwBALiOIQABAAAAnAwBALyOIQABAAAAnQwBAMCOIQABAAAAngwBAMSOIQABAAAAnwwBAMiOIQABAAAAoAwBAMyOIQABAAAAoQwBANCOIQABAAAAogwBANSOIQABAAAAowwBANiOIQABAAAApAwBANyOIQABAAAApQwBAOCOIQABAAAApgwBAOSOIQABAAAApwwBAOiOIQABAAAAqAwBAOyOIQABAAAAqQwBAPCOIQABAAAAqgwBAPSOIQABAAAAqwwBAPiOIQABAAAArAwBAPyOIQABAAAArQwBAACPIQABAAAArgwBAASPIQABAAAArwwBAAiPIQABAAAAsAwBAAyPIQABAAAAsQwBABCPIQABAAAAsgwBABSPIQABAAAAwAwBABiPIQABAAAAwQwBAByPIQABAAAAwgwBACCPIQABAAAAwwwBACSPIQABAAAAxAwBACiPIQABAAAAxQwBACyPIQABAAAAxgwBADCPIQABAAAAxwwBADSPIQABAAAAyAwBADiPIQABAAAAyQwBADyPIQABAAAAygwBAECPIQABAAAAywwBAESPIQABAAAAzAwBAEiPIQABAAAAzQwBAEyPIQABAAAAzgwBAFCPIQABAAAAzwwBAFSPIQABAAAA0AwBAFiPIQABAAAA0QwBAFyPIQABAAAA0gwBAGCPIQABAAAA0wwBAGSPIQABAAAA1AwBAGiPIQABAAAA1QwBAGyPIQABAAAA1gwBAHCPIQABAAAA1wwBAHSPIQABAAAA2AwBAHiPIQABAAAA2QwBAHyPIQABAAAA2gwBAICPIQABAAAA2wwBAISPIQABAAAA3AwBAIiPIQABAAAA3QwBAIyPIQABAAAA3gwBAJCPIQABAAAA3wwBAJSPIQABAAAA4AwBAJiPIQABAAAA4QwBAJyPIQABAAAA4gwBAKCPIQABAAAA4wwBAKSPIQABAAAA5AwBAKiPIQABAAAA5QwBAKyPIQABAAAA5gwBALCPIQABAAAA5wwBALSPIQABAAAA6AwBALiPIQABAAAA6QwBALyPIQABAAAA6gwBAMCPIQABAAAA6wwBAMSPIQABAAAA7AwBAMiPIQABAAAA7QwBAMyPIQABAAAA7gwBANCPIQABAAAA7wwBANSPIQABAAAA8AwBANiPIQABAAAA8QwBANyPIQABAAAA8gwBAOCPIQABAAAAoBgBAOSPIQABAAAAoRgBAOiPIQABAAAAohgBAOyPIQABAAAAoxgBAPCPIQABAAAApBgBAPSPIQABAAAApRgBAPiPIQABAAAAphgBAPyPIQABAAAApxgBAACQIQABAAAAqBgBAASQIQABAAAAqRgBAAiQIQABAAAAqhgBAAyQIQABAAAAqxgBABCQIQABAAAArBgBABSQIQABAAAArRgBABiQIQABAAAArhgBAByQIQABAAAArxgBACCQIQABAAAAsBgBACSQIQABAAAAsRgBACiQIQABAAAAshgBACyQIQABAAAAsxgBADCQIQABAAAAtBgBADSQIQABAAAAtRgBADiQIQABAAAAthgBADyQIQABAAAAtxgBAECQIQABAAAAuBgBAESQIQABAAAAuRgBAEiQIQABAAAAuhgBAEyQIQABAAAAuxgBAFCQIQABAAAAvBgBAFSQIQABAAAAvRgBAFiQIQABAAAAvhgBAFyQIQABAAAAvxgBAGCQIQABAAAAwBgBAGSQIQABAAAAwRgBAGiQIQABAAAAwhgBAGyQIQABAAAAwxgBAHCQIQABAAAAxBgBAHSQIQABAAAAxRgBAHiQIQABAAAAxhgBAHyQIQABAAAAxxgBAICQIQABAAAAyBgBAISQIQABAAAAyRgBAIiQIQABAAAAyhgBAIyQIQABAAAAyxgBAJCQIQABAAAAzBgBAJSQIQABAAAAzRgBAJiQIQABAAAAzhgBAJyQIQABAAAAzxgBAKCQIQABAAAA0BgBAKSQIQABAAAA0RgBAKiQIQABAAAA0hgBAKyQIQABAAAA0xgBALCQIQABAAAA1BgBALSQIQABAAAA1RgBALiQIQABAAAA1hgBALyQIQABAAAA1xgBAMCQIQABAAAA2BgBAMSQIQABAAAA2RgBAMiQIQABAAAA2hgBAMyQIQABAAAA2xgBANCQIQABAAAA3BgBANSQIQABAAAA3RgBANiQIQABAAAA3hgBANyQIQABAAAA3xgBAOCQIQABAAAAQG4BAOSQIQABAAAAQW4BAOiQIQABAAAAQm4BAOyQIQABAAAAQ24BAPCQIQABAAAARG4BAPSQIQABAAAARW4BAPiQIQABAAAARm4BAPyQIQABAAAAR24BAACRIQABAAAASG4BAASRIQABAAAASW4BAAiRIQABAAAASm4BAAyRIQABAAAAS24BABCRIQABAAAATG4BABSRIQABAAAATW4BABiRIQABAAAATm4BAByRIQABAAAAT24BACCRIQABAAAAUG4BACSRIQABAAAAUW4BACiRIQABAAAAUm4BACyRIQABAAAAU24BADCRIQABAAAAVG4BADSRIQABAAAAVW4BADiRIQABAAAAVm4BADyRIQABAAAAV24BAECRIQABAAAAWG4BAESRIQABAAAAWW4BAEiRIQABAAAAWm4BAEyRIQABAAAAW24BAFCRIQABAAAAXG4BAFSRIQABAAAAXW4BAFiRIQABAAAAXm4BAFyRIQABAAAAX24BAGCRIQABAAAAYG4BAGSRIQABAAAAYW4BAGiRIQABAAAAYm4BAGyRIQABAAAAY24BAHCRIQABAAAAZG4BAHSRIQABAAAAZW4BAHiRIQABAAAAZm4BAHyRIQABAAAAZ24BAICRIQABAAAAaG4BAISRIQABAAAAaW4BAIiRIQABAAAAam4BAIyRIQABAAAAa24BAJCRIQABAAAAbG4BAJSRIQABAAAAbW4BAJiRIQABAAAAbm4BAJyRIQABAAAAb24BAKCRIQABAAAAcG4BAKSRIQABAAAAcW4BAKiRIQABAAAAcm4BAKyRIQABAAAAc24BALCRIQABAAAAdG4BALSRIQABAAAAdW4BALiRIQABAAAAdm4BALyRIQABAAAAd24BAMCRIQABAAAAeG4BAMSRIQABAAAAeW4BAMiRIQABAAAAem4BAMyRIQABAAAAe24BANCRIQABAAAAfG4BANSRIQABAAAAfW4BANiRIQABAAAAfm4BANyRIQABAAAAf24BAOCRIQABAAAAAOkBAOSRIQABAAAAAekBAOiRIQABAAAAAukBAOyRIQABAAAAA+kBAPCRIQABAAAABOkBAPSRIQABAAAABekBAPiRIQABAAAABukBAPyRIQABAAAAB+kBAACSIQABAAAACOkBAASSIQABAAAACekBAAiSIQABAAAACukBAAySIQABAAAAC+kBABCSIQABAAAADOkBABSSIQABAAAADekBABiSIQABAAAADukBABySIQABAAAAD+kBACCSIQABAAAAEOkBACSSIQABAAAAEekBACiSIQABAAAAEukBACySIQABAAAAE+kBADCSIQABAAAAFOkBADSSIQABAAAAFekBADiSIQABAAAAFukBADySIQABAAAAF+kBAECSIQABAAAAGOkBAESSIQABAAAAGekBAEiSIQABAAAAGukBAEySIQABAAAAG+kBAFCSIQABAAAAHOkBAFSS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AAAgDwAAKQ8AAEAQAABJEAAAkBAAAJkQAADgFwAA6RcAABAYAAAZGAAARhkAAE8ZAADQGQAA2RkAAIAaAACJGgAAkBoAAJkaAABQGwAAWRsAALAbAAC5GwAAQBwAAEkcAABQHAAAWRwAACCmAAAppgAA0KgAANmoAAAAqQAACakAANCpAADZqQAA8KkAAPmpAABQqgAAWaoAAPCrAAD5qwAAEP8AABn/AACgBAEAqQQBADANAQA5DQEAZhABAG8QAQDwEAEA+RABADYRAQA/EQEA0BEBANkRAQDwEgEA+RIBAFAUAQBZFAEA0BQBANkUAQBQFgEAWRYBAMAWAQDJFgEAMBcBADkXAQDgGAEA6RgBAFAZAQBZGQEAUBwBAFkcAQBQHQEAWR0BAKAdAQCpHQEAUB8BAFkfAQBgagEAaWoBAMBqAQDJagEAUGsBAFlrAQDO1wEA/9cBAEDhAQBJ4QEA8OIBAPniAQDw5AEA+eQBAFDpAQBZ6QEA8PsBAPn7AQBhc3NpZ25lZCQaIgBmAAAA/QEAAEAAAABBU0NJSUFzc2lnbmVkQW55JBoiAGYAAAAGAgAALgAAAGFnZWFoZXhBU0NJSV9IZXhfRGlnaXRBbHBoYWJldGljYWxwaGFiZXRpY2FzY2lpaGV4ZGlnaXRiY0JpZGlfQ2xhc3NiaWRpY0JpZGlfQ29udHJvbGJpZGljbGFzc2JpZGljb250cm9sYmlkaW1CaWRpX01pcnJvcmVkYmlkaW1pcnJvcmVkYmlkaW1pcnJvcmluZ2dseXBoQmlkaV9NaXJyb3JpbmdfR2x5cGhiaWRpcGFpcmVkYnJhY2tldEJpZGlfUGFpcmVkX0JyYWNrZXRiaWRpcGFpcmVkYnJhY2tldHR5cGVCaWRpX1BhaXJlZF9CcmFja2V0X1R5cGVibGtibWdicGJicHRjYW5vbmljYWxjb21iaW5pbmdjbGFzc0Nhbm9uaWNhbF9Db21iaW5pbmdfQ2xhc3NjYXNlZENhc2VkY2FzZWZvbGRpbmdDYXNlX0ZvbGRpbmdjYXNlaWdub3JhYmxlQ2FzZV9JZ25vcmFibGVjY2NjZUNvbXBvc2l0aW9uX0V4Y2x1c2lvbmNoYW5nZXN3aGVuY2FzZWZvbGRlZENoYW5nZXNfV2hlbl9DYXNlZm9sZGVkY2hhbmdlc3doZW5jYXNlbWFwcGVkQ2hhbmdlc19XaGVuX0Nhc2VtYXBwZWRjaGFuZ2Vzd2hlbmxvd2VyY2FzZWRDaGFuZ2VzX1doZW5fTG93ZXJjYXNlZGNoYW5nZXN3aGVubmZrY2Nhc2Vmb2xkZWRDaGFuZ2VzX1doZW5fTkZLQ19DYXNlZm9sZGVkY2hhbmdlc3doZW50aXRsZWNhc2VkQ2hhbmdlc19XaGVuX1RpdGxlY2FzZWRjaGFuZ2Vzd2hlbnVwcGVyY2FzZWRDaGFuZ2VzX1doZW5fVXBwZXJjYXNlZGNpY2prYWNjb3VudGluZ251bWVyaWNrQWNjb3VudGluZ051bWVyaWNjamtjb21wYXRpYmlsaXR5dmFyaWFudGtDb21wYXRpYmlsaXR5VmFyaWFudGNqa2lpY29yZWtJSUNvcmVjamtpcmdnc291cmNla0lSR19HU291cmNlY2praXJnaHNvdXJjZWtJUkdfSFNvdXJjZWNqa2lyZ2pzb3VyY2VrSVJHX0pTb3VyY2VjamtpcmdrcHNvdXJjZWtJUkdfS1BTb3VyY2Vjamtpcmdrc291cmNla0lSR19LU291cmNlY2praXJnbXNvdXJjZWtJUkdfTVNvdXJjZWNqa2lyZ3Nzb3VyY2VrSVJHX1NTb3VyY2Vjamtpcmd0c291cmNla0lSR19UU291cmNlY2praXJndWtzb3VyY2VrSVJHX1VLU291cmNlY2praXJndXNvdXJjZWtJUkdfVVNvdXJjZWNqa2lyZ3Zzb3VyY2VrSVJHX1ZTb3VyY2VjamtvdGhlcm51bWVyaWNrT3RoZXJOdW1lcmljY2prcHJpbWFyeW51bWVyaWNrUHJpbWFyeU51bWVyaWNjamtyc3VuaWNvZGVrUlNVbmljb2RlY29tcGV4RnVsbF9Db21wb3NpdGlvbl9FeGNsdXNpb25jb21wb3NpdGlvbmV4Y2x1c2lvbmN3Y2Zjd2NtY3drY2Zjd2xjd3Rjd3VkYXNoRGFzaGRlY29tcG9zaXRpb25tYXBwaW5nRGVjb21wb3NpdGlvbl9NYXBwaW5nZGVjb21wb3NpdGlvbnR5cGVEZWNvbXBvc2l0aW9uX1R5cGVkZWZhdWx0aWdub3JhYmxlY29kZXBvaW50RGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludGRlcERlcHJlY2F0ZWRkZXByZWNhdGVkZGlkaWFEaWFjcml0aWNkaWFjcml0aWNkbWR0ZWFFYXN0X0FzaWFuX1dpZHRoZWFzdGFzaWFud2lkdGhlYmFzZUVtb2ppX01vZGlmaWVyX0Jhc2VlY29tcEVtb2ppX0NvbXBvbmVudGVtb2RFbW9qaV9Nb2RpZmllcmVtb2ppRW1vamllbW9qaWNvbXBvbmVudGVtb2ppbW9kaWZpZXJlbW9qaW1vZGlmaWVyYmFzZWVtb2ppcHJlc2VudGF0aW9uRW1vamlfUHJlc2VudGF0aW9uZXByZXNlcXVpZGVvRXF1aXZhbGVudF9VbmlmaWVkX0lkZW9ncmFwaGVxdWl2YWxlbnR1bmlmaWVkaWRlb2dyYXBoZXhwYW5kc29ubmZjRXhwYW5kc19Pbl9ORkNleHBhbmRzb25uZmRFeHBhbmRzX09uX05GRGV4cGFuZHNvbm5ma2NFeHBhbmRzX09uX05GS0NleHBhbmRzb25uZmtkRXhwYW5kc19Pbl9ORktEZXh0RXh0ZW5kZXJleHRlbmRlZHBpY3RvZ3JhcGhpY0V4dGVuZGVkX1BpY3RvZ3JhcGhpY2V4dGVuZGVyZXh0cGljdGZjbmZrY0ZDX05GS0NfQ2xvc3VyZWZjbmZrY2Nsb3N1cmVmdWxsY29tcG9zaXRpb25leGNsdXNpb25nY2djYmdlbmVyYWxjYXRlZ29yeWdyYXBoZW1lYmFzZUdyYXBoZW1lX0Jhc2VncmFwaGVtZWNsdXN0ZXJicmVha2dyYXBoZW1lZXh0ZW5kR3JhcGhlbWVfRXh0ZW5kZ3JhcGhlbWVsaW5rR3JhcGhlbWVfTGlua2dyYmFzZWdyZXh0Z3JsaW5raGFuZ3Vsc3lsbGFibGV0eXBlSGFuZ3VsX1N5bGxhYmxlX1R5cGVoZXhIZXhfRGlnaXRoZXhkaWdpdGhzdGh5cGhlbkh5cGhlbmlkY0lEX0NvbnRpbnVlaWRjb250aW51ZWlkZW9JZGVvZ3JhcGhpY2lkZW9ncmFwaGljaWRzSURfU3RhcnRpZHNiSURTX0JpbmFyeV9PcGVyYXRvcmlkc2JpbmFyeW9wZXJhdG9yaWRzdElEU19UcmluYXJ5X09wZXJhdG9yaWRzdGFydGlkc3RyaW5hcnlvcGVyYXRvcmluZGljcG9zaXRpb25hbGNhdGVnb3J5SW5kaWNfUG9zaXRpb25hbF9DYXRlZ29yeWluZGljc3lsbGFiaWNjYXRlZ29yeUluZGljX1N5bGxhYmljX0NhdGVnb3J5aW5wY2luc2Npc2NJU09fQ29tbWVudGphbW9zaG9ydG5hbWVKYW1vX1Nob3J0X05hbWVqZ0pvaW5pbmdfR3JvdXBqb2luY0pvaW5fQ29udHJvbGpvaW5jb250cm9sam9pbmluZ2dyb3Vwam9pbmluZ3R5cGVKb2luaW5nX1R5cGVqc25qdGthY2NvdW50aW5nbnVtZXJpY2tjb21wYXRpYmlsaXR5dmFyaWFudGtpaWNvcmVraXJnZ3NvdXJjZWtpcmdoc291cmNla2lyZ2pzb3VyY2VraXJna3Bzb3VyY2VraXJna3NvdXJjZWtpcmdtc291cmNla2lyZ3Nzb3VyY2VraXJndHNvdXJjZWtpcmd1a3NvdXJjZWtpcmd1c291cmNla2lyZ3Zzb3VyY2Vrb3RoZXJudW1lcmlja3ByaW1hcnludW1lcmlja3JzdW5pY29kZWxiTGluZV9CcmVha0xvd2VyY2FzZV9NYXBwaW5nbGluZWJyZWFrbG9lTG9naWNhbF9PcmRlcl9FeGNlcHRpb25sb2dpY2Fsb3JkZXJleGNlcHRpb25Mb3dlcmNhc2Vsb3dlcmNhc2Vsb3dlcmNhc2VtYXBwaW5nbWF0aE1hdGhuYU5hbWVuYTFVbmljb2RlXzFfTmFtZW5hbWVhbGlhc05hbWVfQWxpYXNuY2hhck5vbmNoYXJhY3Rlcl9Db2RlX1BvaW50bmZjcWNORkNfUXVpY2tfQ2hlY2tuZmNxdWlja2NoZWNrbmZkcWNORkRfUXVpY2tfQ2hlY2tuZmRxdWlja2NoZWNrbmZrY2Nhc2Vmb2xkTkZLQ19DYXNlZm9sZG5ma2NjZm5ma2NxY05GS0NfUXVpY2tfQ2hlY2tuZmtjcXVpY2tjaGVja25ma2RxY05GS0RfUXVpY2tfQ2hlY2tuZmtkcXVpY2tjaGVja25vbmNoYXJhY3RlcmNvZGVwb2ludG50TnVtZXJpY19UeXBlbnVtZXJpY3R5cGVudW1lcmljdmFsdWVOdW1lcmljX1ZhbHVlbnZvYWxwaGFPdGhlcl9BbHBoYWJldGljb2NvbW1lbnRvZGlPdGhlcl9EZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50b2dyZXh0T3RoZXJfR3JhcGhlbWVfRXh0ZW5kb2lkY090aGVyX0lEX0NvbnRpbnVlb2lkc090aGVyX0lEX1N0YXJ0b2xvd2VyT3RoZXJfTG93ZXJjYXNlb21hdGhPdGhlcl9NYXRob3RoZXJhbHBoYWJldGljb3RoZXJkZWZhdWx0aWdub3JhYmxlY29kZXBvaW50b3RoZXJncmFwaGVtZWV4dGVuZG90aGVyaWRjb250aW51ZW90aGVyaWRzdGFydG90aGVybG93ZXJjYXNlb3RoZXJtYXRob3RoZXJ1cHBlcmNhc2VPdGhlcl9VcHBlcmNhc2VvdXBwZXJwYXRzeW5QYXR0ZXJuX1N5bnRheHBhdHRlcm5zeW50YXhwYXR0ZXJud2hpdGVzcGFjZVBhdHRlcm5fV2hpdGVfU3BhY2VwYXR3c3BjbVByZXBlbmRlZF9Db25jYXRlbmF0aW9uX01hcmtwcmVwZW5kZWRjb25jYXRlbmF0aW9ubWFya3FtYXJrUXVvdGF0aW9uX01hcmtxdW90YXRpb25tYXJrcmFkaWNhbFJhZGljYWxyZWdpb25hbGluZGljYXRvclJlZ2lvbmFsX0luZGljYXRvcnJpc2JzY2ZTaW1wbGVfQ2FzZV9Gb2xkaW5nc2NyaXB0ZXh0ZW5zaW9uc3NjeHNkU29mdF9Eb3R0ZWRzZW50ZW5jZWJyZWFrc2VudGVuY2V0ZXJtaW5hbFNlbnRlbmNlX1Rlcm1pbmFsc2Zjc2ltcGxlY2FzZWZvbGRpbmdzaW1wbGVsb3dlcmNhc2VtYXBwaW5nU2ltcGxlX0xvd2VyY2FzZV9NYXBwaW5nc2ltcGxldGl0bGVjYXNlbWFwcGluZ1NpbXBsZV9UaXRsZWNhc2VfTWFwcGluZ3NpbXBsZXVwcGVyY2FzZW1hcHBpbmdTaW1wbGVfVXBwZXJjYXNlX01hcHBpbmdzbGNzb2Z0ZG90dGVkV2hpdGVfU3BhY2VzdGNzdGVybXN1Y3RjVGl0bGVjYXNlX01hcHBpbmd0ZXJtVGVybWluYWxfUHVuY3R1YXRpb250ZXJtaW5hbHB1bmN0dWF0aW9udGl0bGVjYXNlbWFwcGluZ3VjVXBwZXJjYXNlX01hcHBpbmd1aWRlb1VuaWZpZWRfSWRlb2dyYXBodW5pY29k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AABIVyIABAAAAL5XIgADAAAAT1ciAAQAAADBVyIAAwAAAFZXIgAEAAAAxFciAAMAAABdVyIABAAAAGNhc2VkbGV0dGVyQ2FzZWRfTGV0dGVyY2NDb250cm9sRm9ybWF0Y2xvc2VwdW5jdHVhdGlvbkNsb3NlX1B1bmN0dWF0aW9uY25jb1ByaXZhdGVfVXNlY29tYmluaW5nbWFya2Nvbm5lY3RvcnB1bmN0dWF0aW9uQ29ubmVjdG9yX1B1bmN0dWF0aW9uY29udHJvbGNzU3Vycm9nYXRlY3VycmVuY3lzeW1ib2xDdXJyZW5jeV9TeW1ib2xkYXNocHVuY3R1YXRpb25EYXNoX1B1bmN0dWF0aW9uZGVjaW1hbG51bWJlckRlY2ltYWxfTnVtYmVyZW5jbG9zaW5nbWFya0VuY2xvc2luZ19NYXJrZmluYWxwdW5jdHVhdGlvbkZpbmFsX1B1bmN0dWF0aW9uZm9ybWF0aW5pdGlhbHB1bmN0dWF0aW9uSW5pdGlhbF9QdW5jdHVhdGlvbkxldHRlcmxldHRlcmxldHRlcm51bWJlckxldHRlcl9OdW1iZXJsaW5lc2VwYXJhdG9yTGluZV9TZXBhcmF0b3JsbExvd2VyY2FzZV9MZXR0ZXJsbU1vZGlmaWVyX0xldHRlcmxvT3RoZXJfTGV0dGVybG93ZXJjYXNlbGV0dGVyVGl0bGVjYXNlX0xldHRlcmx1VXBwZXJjYXNlX0xldHRlcm1hcmttYXRoc3ltYm9sTWF0aF9TeW1ib2xtY1NwYWNpbmdfTWFya21lbW5Ob25zcGFjaW5nX01hcmttb2RpZmllcmxldHRlcm1vZGlmaWVyc3ltYm9sTW9kaWZpZXJfU3ltYm9sbmRubG5vT3RoZXJfTnVtYmVybm9uc3BhY2luZ21hcmtvcGVucHVuY3R1YXRpb25PcGVuX1B1bmN0dWF0aW9ub3RoZXJvdGhlcmxldHRlcm90aGVybnVtYmVyb3RoZXJwdW5jdHVhdGlvbk90aGVyX1B1bmN0dWF0aW9ub3RoZXJzeW1ib2xPdGhlcl9TeW1ib2xQdW5jdHVhdGlvbnBhcmFncmFwaHNlcGFyYXRvclBhcmFncmFwaF9TZXBhcmF0b3JwY3BkcGVwZnBvcHJpdmF0ZXVzZXBzcHVuY3R1YXRpb25zZXBh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IgADAAAAql0iAAUAAAC+FiYABQAAACxkIgACAAAALmQiAAcAAAA1ZCIABwAAAC5kIgAHAAAA7UMiABEAAAD+QyIAEgAAABBEIgACAAAA/kMiABIAAABiXiIAAgAAADxkIgALAAAAg14iAAsAAAA8ZCIACwAAAEdkIgABAAAASGQiAAEAAABJZCIAAQAAAEpkIgABAAAAS2QiAAIAAAC+FiYABQAAAGlxJgADAAAATWQiAAMAAABhZGxhbUFkbGFtYWRsbWFnaGJDYXVjYXNpYW5fQWxiYW5pYW5haG9tQWhvbWFuYXRvbGlhbmhpZXJvZ2x5cGhzQW5hdG9saWFuX0hpZXJvZ2x5cGhzYXJhYkFyYWJpY2FyYWJpY2FybWVuaWFuQXJtZW5pYW5hcm1pSW1wZXJpYWxfQXJhbWFpY2FybW5hdmVzdGFuQXZlc3RhbmF2c3RiYWxpQmFsaW5lc2ViYWxpbmVzZWJhbXVCYW11bWJhbXVtYmFzc0Jhc3NhX1ZhaGJhc3NhdmFoYmF0YWtCYXRha2JhdGtiZW5nQmVuZ2FsaWJlbmdhbGliaGFpa3N1a2lCaGFpa3N1a2liaGtzYm9wb0JvcG9tb2ZvYm9wb21vZm9icmFoQnJhaG1pYnJhaG1pYnJhaUJyYWlsbGVicmFpbGxlYnVnaUJ1Z2luZXNlYnVnaW5lc2VidWhkQnVoaWRidWhpZGNha21DaGFrbWFjYW5hZGlhbmFib3JpZ2luYWxDYW5hZGlhbl9BYm9yaWdpbmFsY2Fuc2NhcmlDYXJpYW5jYXJpYW5jYXVjYXNpYW5hbGJhbmlhbmNoYWttYWNoYW1DaGFtY2hlckNoZXJva2VlY2hlcm9rZWVjaG9yYXNtaWFuQ2hvcmFzbWlhbmNocnNjb21tb25Db21tb25jb3B0Q29wdGljY29wdGljY3BtbkN5cHJvX01pbm9hbmNwcnRDeXByaW90Y3VuZWlmb3JtQ3VuZWlmb3JtY3lwcmlvdGN5cHJvbWlub2FuY3lyaWxsaWNDeXJpbGxpY2N5cmxkZXNlcmV0RGVzZXJldGRldmFEZXZhbmFnYXJpZGV2YW5hZ2FyaWRpYWtEaXZlc19Ba3VydWRpdmVzYWt1cnVkb2dyRG9ncmFkb2dyYWRzcnRkdXBsRHVwbG95YW5kdXBsb3lhbmVneXBFZ3lwdGlhbl9IaWVyb2dseXBoc2VneXB0aWFuaGllcm9nbHlwaHNlbGJhRWxiYXNhbmVsYmFzYW5lbHltRWx5bWFpY2VseW1haWNldGhpRXRoaW9waWNldGhpb3BpY2dlb3JHZW9yZ2lhbmdlb3JnaWFuZ2xhZ0dsYWdvbGl0aWNnbGFnb2xpdGljZ29uZ0d1bmphbGFfR29uZGlnb25tTWFzYXJhbV9Hb25kaWdvdGhHb3RoaWNnb3RoaWNncmFuR3JhbnRoYWdyYW50aGFncmVla0dyZWVrZ3Jla2d1amFyYXRpR3VqYXJhdGlndWpyZ3VuamFsYWdvbmRpZ3VybXVraGlHdXJtdWtoaWd1cnVoYW5IYW5oYW5nSGFuZ3VsaGFuZ3VsaGFuaWhhbmlmaXJvaGluZ3lhSGFuaWZpX1JvaGluZ3lhaGFub0hhbnVub29oYW51bm9vaGF0ckhhdHJhbmhhdHJhbmhlYnJIZWJyZXdoZWJyZXdoaXJhSGlyYWdhbmFoaXJhZ2FuYWhsdXdobW5nUGFoYXdoX0htb25naG1ucE55aWFrZW5nX1B1YWNodWVfSG1vbmdocmt0S2F0YWthbmFfT3JfSGlyYWdhbmFodW5nT2xkX0h1bmdhcmlhbmltcGVyaWFsYXJhbWFpY2luaGVyaXRlZEluaGVyaXRlZGluc2NyaXB0aW9uYWxwYWhsYXZpSW5zY3JpcHRpb25hbF9QYWhsYXZpaW5zY3JpcHRpb25hbHBhcnRoaWFuSW5zY3JpcHRpb25hbF9QYXJ0aGlhbml0YWxPbGRfSXRhbGljamF2YUphdmFuZXNlamF2YW5lc2VrYWl0aGlLYWl0aGlrYWxpS2F5YWhfTGlrYW5hS2F0YWthbmFrYW5uYWRhS2FubmFkYWthdGFrYW5ha2F0YWthbmFvcmhpcmFnYW5ha2F3aUthd2lrYXlhaGxpa2hhcktoYXJvc2h0aGlraGFyb3NodGhpa2hpdGFuc21hbGxzY3JpcHRLaGl0YW5fU21hbGxfU2NyaXB0a2htZXJLaG1lcmtobXJraG9qS2hvamtpa2hvamtpa2h1ZGF3YWRpS2h1ZGF3YWRpa2l0c2tuZGFrdGhpbGFuYVRhaV9UaGFtbGFvTGFvbGFvb2xhdGluTGF0aW5sYXRubGVwY0xlcGNoYWxlcGNoYWxpbWJMaW1idWxpbWJ1bGluYUxpbmVhcl9BbGluYkxpbmVhcl9CbGluZWFyYWxpbmVhcmJsaXN1TGlzdWx5Y2lMeWNpYW5seWNpYW5seWRpTHlkaWFubHlkaWFubWFoYWphbmlNYWhhamFuaW1haGptYWthTWFrYXNhcm1ha2FzYXJtYWxheWFsYW1NYWxheWFsYW1tYW5kTWFuZGFpY21hbmRhaWNtYW5pTWFuaWNoYWVhbm1hbmljaGFlYW5tYXJjTWFyY2hlbm1hcmNoZW5tYXNhcmFtZ29uZGltZWRlZmFpZHJpbk1lZGVmYWlkcmlubWVkZm1lZXRlaW1heWVrTWVldGVpX01heWVrbWVuZE1lbmRlX0tpa2FrdWltZW5kZWtpa2FrdWltZXJjTWVyb2l0aWNfQ3Vyc2l2ZW1lcm9NZXJvaXRpY19IaWVyb2dseXBoc21lcm9pdGljY3Vyc2l2ZW1lcm9pdGljaGllcm9nbHlwaHNtaWFvTWlhb21seW1tb2RpTW9kaW1vbmdNb25nb2xpYW5tb25nb2xpYW5tcm9Ncm9tcm9vbXRlaW11bHRNdWx0YW5pbXVsdGFuaW15YW5tYXJNeWFubWFybXltcm5hYmF0YWVhbk5hYmF0YWVhbm5hZ21OYWdfTXVuZGFyaW5hZ211bmRhcmluYW5kTmFuZGluYWdhcmluYW5kaW5hZ2FyaW5hcmJPbGRfTm9ydGhfQXJhYmlhbm5iYXRuZXdhTmV3YW5ld3RhaWx1ZU5ld19UYWlfTHVlbmtvTmtvbmtvb25zaHVOdXNodW51c2h1bnlpYWtlbmdwdWFjaHVlaG1vbmdvZ2FtT2doYW1vZ2hhbW9sY2hpa2lPbF9DaGlraW9sY2tvbGRodW5nYXJpYW5vbGRpdGFsaWNvbGRub3J0aGFyYWJpYW5vbGRwZXJtaWNPbGRfUGVybWljb2xkcGVyc2lhbk9sZF9QZXJzaWFub2xkc29nZGlhbk9sZF9Tb2dkaWFub2xkc291dGhhcmFiaWFuT2xkX1NvdXRoX0FyYWJpYW5vbGR0dXJraWNPbGRfVHVya2ljb2xkdXlnaHVyT2xkX1V5Z2h1cm9yaXlhT3JpeWFvcmtob3J5YW9zYWdlT3NhZ2Vvc2dlb3NtYU9zbWFueWFvc21hbnlhb3VncnBhaGF3aGhtb25ncGFsbVBhbG15cmVuZXBhbG15cmVuZXBhdWNQYXVfQ2luX0hhdXBhdWNpbmhhdXBlcm1waGFnUGhhZ3NfUGFwaGFnc3BhcGhsaXBobHBQc2FsdGVyX1BhaGxhdmlwaG54UGhvZW5pY2lhbnBob2VuaWNpYW5wbHJkcHJ0aXBzYWx0ZXJwYWhsYXZpcWFhY3FhYWlyZWphbmdSZWphbmdyam5ncm9oZ3J1bmljUnVuaWNydW5yc2FtYXJpdGFuU2FtYXJpdGFuc2FtcnNhcmJzYXVyU2F1cmFzaHRyYXNhdXJhc2h0cmFzZ253U2lnbldyaXRpbmdzaGFyYWRhU2hhcmFkYXNoYXZpYW5TaGF2aWFuc2hhd3NocmRzaWRkU2lkZGhhbXNpZGRoYW1zaWdud3JpdGluZ3NpbmRzaW5oU2luaGFsYXNpbmhhbGFzb2dkU29nZGlhbnNvZ2RpYW5zb2dvc29yYVNvcmFfU29tcGVuZ3NvcmFzb21wZW5nc295b1NveW9tYm9zb3lvbWJvc3VuZFN1bmRhbmVzZXN1bmRhbmVzZXN5bG9TeWxvdGlfTmFncmlzeWxvdGluYWdyaXN5cmNTeXJpYWNzeXJpYWN0YWdhbG9nVGFnYWxvZ3RhZ2JUYWdiYW53YXRhZ2JhbndhdGFpbGVUYWlfTGV0YWl0aGFtdGFpdmlldFRhaV9WaWV0dGFrclRha3JpdGFrcml0YWxldGFsdXRhbWlsVGFtaWx0YW1sdGFuZ1Rhbmd1dHRhbmdzYVRhbmdzYXRhbmd1dHRhdnR0ZWx1VGVsdWd1dGVsdWd1dGZuZ1RpZmluYWdodGdsZ3RoYWFUaGFhbmF0aGFhbmF0aGFpVGhhaXRpYmV0YW5UaWJldGFudGlidHRpZmluYWdodGlyaFRpcmh1dGF0aXJodXRhdG5zYXRvdG9Ub3RvdWdhclVnYXJpdGljdWdhcml0aWN2YWlWYWl2YWlpdml0aFZpdGhrdXFpdml0aGt1cWl3YW5jaG9XYW5jaG93YXJhV2FyYW5nX0NpdGl3YXJhbmdjaXRpd2Nob3hwZW94c3V4eWV6aVllemlkaXllemlkaXlpWWl5aWlpemFuYWJhemFyc3F1YXJlWmFuYWJhemFyX1NxdWFyZXphbmJ6aW5oenl5eXp6enoAAAAQZiIABQAAABVmIgAFAAAAGmYiAAQA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IgAEAAAAi20iABAAAACbbSIABAAAAJ9tIgAUAAAAs20iAA8AAACLbSIAEAAAAMJtIgATAAAAn20iABQAAADVbSIABAAAANltIgAEAAAA3W0iAAQAAADobCIACQAAAOFtIgAEAAAA5W0iAAQAAADpbSIABAAAAO1tIgAJAAAA9m0iAAkAAADtbSIACQAAAP9tIgADAAAAAm4iAAMAAAAFbiIABAAAAAJuIgADAAAACW4iAAQAAABebSIADAAAAA1uIgAEAAAAEW4iAAcAAAAYbiIABwAAABFuIgAHAAAAH24iAAcAAAAmbiIABwAAAC1uIgAEAAAAJm4iAAcAAAAxbiIACQAAADpuIgAJAAAAQ24iAAQAAABHbiIACwAAAFJuIgAKAAAAR24iAAsAAABcbiIABAAAAGBuIgALAAAAa24iAAsAAABgbiIACwAAAHZuIgAEAAAAem4iABEAAACLbiIABAAAADpuIgAJAAAAj24iAAQAAACTbiIABAAAAJduIgAJAAAAoG4iAAsAAACrbiIAAwAAAK5uIgADAAAAsW4iAAQAAACubiIAAwAAALVuIgAEAAAAuW4iAAUAAAC+biIABQAAALluIgAFAAAAw24iABQAAACAaiIAFgAAANduIgAEAAAA224iAAUAAADgbiIABQAAANtuIgAFAAAA5W4iAAcAAADsbiIACAAAAPRuIgAEAAAA7G4iAAgAAAD4biIADAAAALJqIgANAAAABG8iAAkAAAA4ayIACgAAAA1vIgAPAAAAem4iABEAAAAcbyIACQAAACVvIgAKAAAAL28iAAoAAAA5byIACwAAAERvIgAKAAAATm8iAAsAAABZbyIADwAAAGhvIgARAAAAeW8iAAkAAACCbyIACgAAAIxvIgAJAAAAlW8iAAoAAACfbyIABQAAAKRvIgAFAAAAqW8iAAQAAACCbyIACgAAAK1vIgAEAAAApG8iAAUAAACxbyIABQAAALZvIgAFAAAAu28iAAQAAAC2byIABQAAAL9vIgAEAAAAw28iAAcAAADKbyIABwAAAMNvIgAHAAAA0W8iAAQAAACVbyIACgAAANVvIgALAAAAcGoiAAwAAADgbyIABAAAAORvIgAJAAAA7W8iAAkAAADkbyIACQAAAPZvIgAEAAAA+m8iAAsAAAAFcCIACQAAAPpvIgALAAAADnAiAAQA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AADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AAIcfAACQHwAAlx8AAKAfAACnHwAAsB8AALQfAAC2HwAAtx8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAAAKIQAACiEAAA4hAAAPIQAAEyEAABMhAAAvIQAALyEAADQhAAA0IQAAOSEAADkhAAA8IQAAPSEAAEYhAABJIQAATiEAAE4hAACEIQAAhCEAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAeywAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAG+nAABxpwAAeKcAAHqnAAB6pwAAfKcAAHynAAB/pwAAf6cAAIGnAACBpwAAg6cAAIOnAACFpwAAhacAAIenAACHpwAAjKcAAIynAACOpwAAjqcAAJGnAACRpwAAk6cAAJWnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAAK+nAACvpwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADRpwAA0acAANOnAADTpwAA1acAANWnAADXpwAA16cAANmnAADZpwAA9qcAAPanAAD6pwAA+qcAADCrAABaqwAAYKsAAGirAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AABB/wAAWv8AACgEAQBPBAEA2AQBAPsEAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAMAMAQDyDAEAwBgBAN8YAQBgbgEAf24BABrUAQAz1AEATtQBAFTUAQBW1AEAZ9QBAILUAQCb1AEAttQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAM/UAQDq1AEAA9UBAB7VAQA31QEAUtUBAGvVAQCG1QEAn9UBALrVAQDT1QEA7tUBAAfWAQAi1gEAO9YBAFbWAQBv1gEAitYBAKXWAQDC1gEA2tYBANzWAQDh1gEA/NYBABTXAQAW1wEAG9cBADbXAQBO1wEAUNcBAFXXAQBw1wEAiNcBAIrXAQCP1wEAqtcBAMLXAQDE1wEAydcBAMvXAQDL1wEAAN8BAAnfAQAL3wEAHt8BACXfAQAq3wEAIukBAEPpAQAAAwAAbwMAAIMEAACJBAAAkQUAAL0FAAC/BQAAvwUAAMEFAADCBQAAxAUAAMUFAADHBQAAxwUAABAGAAAaBgAASwYAAF8GAABwBgAAcAYAANYGAADcBgAA3wYAAOQGAADnBgAA6AYAAOoGAADtBgAAEQcAABEHAAAwBwAASgcAAKYHAACwBwAA6wcAAPMHAAD9BwAA/QcAABYIAAAZCAAAGwgAACMIAAAlCAAAJwgAACkIAAAtCAAAWQgAAFsIAACYCAAAnwgAAMoIAADhCAAA4wgAAAMJAAA6CQAAPAkAAD4JAABPCQAAUQkAAFcJAABiCQAAYwkAAIEJAACDCQAAvAkAALwJAAC+CQAAxAkAAMcJAADICQAAywkAAM0JAADXCQAA1wkAAOIJAADjCQAA/gkAAP4JAAABCgAAAwoAADwKAAA8CgAAPgoAAEIKAABHCgAASAoAAEsKAABNCgAAUQoAAFEKAABwCgAAcQoAAHUKAAB1CgAAgQoAAIMKAAC8CgAAvAoAAL4KAADFCgAAxwoAAMkKAADLCgAAzQoAAOIKAADjCgAA+goAAP8KAAABCwAAAwsAADwLAAA8CwAAPgsAAEQLAABHCwAASAsAAEsLAABNCwAAVQsAAFcLAABiCwAAYwsAAIILAACCCwAAvgsAAMILAADGCwAAyAsAAMoLAADNCwAA1wsAANcLAAAADAAABAwAADwMAAA8DAAAPgwAAEQMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABiDAAAYwwAAIEMAACDDAAAvAwAALwMAAC+DAAAxAwAAMYMAADIDAAAygwAAM0MAADVDAAA1gwAAOIMAADjDAAA8wwAAPMMAAAADQAAAw0AADsNAAA8DQAAPg0AAEQNAABGDQAASA0AAEoNAABNDQAAVw0AAFcNAABiDQAAYw0AAIENAACDDQAAyg0AAMoNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADyDQAA8w0AADEOAAAxDgAANA4AADoOAABHDgAATg4AALEOAACxDgAAtA4AALwOAADIDgAAzg4AABgPAAAZDwAANQ8AADUPAAA3DwAANw8AADkPAAA5DwAAPg8AAD8PAABxDwAAhA8AAIYPAACHDwAAjQ8AAJcPAACZDwAAvA8AAMYPAADGDwAAKxAAAD4QAABWEAAAWRAAAF4QAABgEAAAYhAAAGQQAABnEAAAbRAAAHEQAAB0EAAAghAAAI0QAACPEAAAjxAAAJoQAACdEAAAXRMAAF8TAAASFwAAFRcAADIXAAA0FwAAUhcAAFMXAAByFwAAcxcAALQXAADTFwAA3RcAAN0XAAALGAAADRgAAA8YAAAPGAAAhRgAAIYYAACpGAAAqRgAACAZAAArGQAAMBkAADsZAAAXGgAAGxoAAFUaAABeGgAAYBoAAHwaAAB/GgAAfxoAALAaAADOGgAAABsAAAQbAAA0GwAARBsAAGsbAABzGwAAgBsAAIIbAAChGwAArRsAAOYbAADzGwAAJBwAADccAADQHAAA0hwAANQcAADoHAAA7RwAAO0cAAD0HAAA9BwAAPccAAD5HAAAwB0AAP8dAADQIAAA8CAAAO8sAADxLAAAfy0AAH8tAADgLQAA/y0AACowAAAvMAAAmTAAAJowAABvpgAAcqYAAHSmAAB9pgAAnqYAAJ+mAADwpgAA8aYAAAKoAAACqAAABqgAAAaoAAALqAAAC6gAACOoAAAnqAAALKgAACyoAACAqAAAgagAALSoAADFqAAA4KgAAPGoAAD/qAAA/6gAACapAAAtqQAAR6kAAFOpAACAqQAAg6kAALOpAADAqQAA5akAAOWpAAApqgAANqoAAEOqAABDqgAATKoAAE2qAAB7qgAAfaoAALCqAACwqgAAsqoAALSqAAC3qgAAuKoAAL6qAAC/qgAAwaoAAMGqAADrqgAA76oAAPWqAAD2qgAA46sAAOqrAADsqwAA7asAAB77AAAe+wAAAP4AAA/+AAAg/gAAL/4AAP0BAQD9AQEA4AIBAOACAQB2AwEAegMBAAEKAQADCgEABQoBAAYKAQAMCgEADwoBADgKAQA6CgEAPwoBAD8KAQDlCgEA5goBACQNAQAnDQEAqw4BAKwOAQD9DgEA/w4BAEYPAQBQDwEAgg8BAIUPAQAAEAEAAhABADgQAQBGEAEAcBABAHAQAQBzEAEAdBABAH8QAQCCEAEAsBABALoQAQDCEAEAwhABAAARAQACEQEAJxEBADQRAQBFEQEARhEBAHMRAQBzEQEAgBEBAIIRAQCzEQEAwBEBAMkRAQDMEQEAzhEBAM8RAQAsEgEANxIBAD4SAQA+EgEAQRIBAEESAQDfEgEA6hIBAAATAQADEwEAOxMBADwTAQA+EwEARBMBAEcTAQBIEwEASxMBAE0TAQBXEwEAVxMBAGITAQBjEwEAZhMBAGwTAQBwEwEAdBMBADUUAQBGFAEAXhQBAF4UAQCwFAEAwxQBAK8VAQC1FQEAuBUBAMAVAQDcFQEA3RUBADAWAQBAFgEAqxYBALcWAQAdFwEAKxcBACwYAQA6GAEAMBkBADUZAQA3GQEAOBkBADsZAQA+GQEAQBkBAEAZAQBCGQEAQxkBANEZAQDXGQEA2hkBAOAZAQDkGQEA5BkBAAEaAQAKGgEAMxoBADkaAQA7GgEAPhoBAEcaAQBHGgEAURoBAFsaAQCKGgEAmRoBAC8cAQA2HAEAOBwBAD8cAQCSHAEApxwBAKkcAQC2HAEAMR0BADYdAQA6HQEAOh0BADwdAQA9HQEAPx0BAEUdAQBHHQEARx0BAIodAQCOHQEAkB0BAJEdAQCTHQEAlx0BAPMeAQD2HgEAAB8BAAEfAQADHwEAAx8BADQfAQA6HwEAPh8BAEIfAQBANAEAQDQBAEc0AQBVNAEA8GoBAPRqAQAwawEANmsBAE9vAQBPbwEAUW8BAIdvAQCPbwEAkm8BAORvAQDkbwEA8G8BAPFvAQCdvAEAnrwBAADPAQAtzwEAMM8BAEbPAQBl0QEAadEBAG3RAQBy0QEAe9EBAILRAQCF0QEAi9EBAKrRAQCt0QEAQtIBAETSAQAA2gEANtoBADvaAQBs2gEAddoBAHXaAQCE2gEAhNoBAJvaAQCf2gEAodoBAK/aAQAA4AEABuABAAjgAQAY4AEAG+ABACHgAQAj4AEAJOABACbgAQAq4AEAj+ABAI/gAQAw4QEANuEBAK7iAQCu4gEA7OIBAO/iAQDs5AEA7+QBANDoAQDW6AEAROkBAErpAQAAAQ4A7wEOACsAAAArAAAAPAAAAD4AAAB8AAAAfAAAAH4AAAB+AAAArAAAAKwAAACxAAAAsQAAANcAAADXAAAA9wAAAPcAAAD2AwAA9gMAAAYGAAAIBgAARCAAAEQgAABSIAAAUiAAAHogAAB8IAAAiiAAAIwgAAAYIQAAGCEAAEAhAABEIQAASyEAAEshAACQIQAAlCEAAJohAACbIQAAoCEAAKAhAACjIQAAoyEAAKYhAACmIQAAriEAAK4hAADOIQAAzyEAANIhAADSIQAA1CEAANQhAAD0IQAA/yIAACAjAAAhIwAAfCMAAHwjAACbIwAAsyMAANwjAADhIwAAtyUAALclAADBJQAAwSUAAPglAAD/JQAAbyYAAG8mAADAJwAAxCcAAMcnAADlJwAA8CcAAP8nAAAAKQAAgikAAJkpAADXKQAA3CkAAPspAAD+KQAA/yoAADArAABEKwAARysAAEwrAAAp+wAAKfsAAGL+AABi/gAAZP4AAGb+AAAL/wAAC/8AABz/AAAe/wAAXP8AAFz/AABe/wAAXv8AAOL/AADi/wAA6f8AAOz/AADB1gEAwdYBANvWAQDb1gEA+9YBAPvWAQAV1wEAFdcBADXXAQA11wEAT9cBAE/XAQBv1wEAb9cBAInXAQCJ1wEAqdcBAKnXAQDD1wEAw9cBAPDuAQDx7gEAsAIAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAHQDAAB0AwAAegMAAHoDAABZBQAAWQUAAEAGAABABgAA5QYAAOYGAAD0BwAA9QcAAPoHAAD6BwAAGggAABoIAAAkCAAAJAgAACgIAAAoCAAAyQgAAMkIAABxCQAAcQkAAEYOAABGDgAAxg4AAMYOAAD8EAAA/BAAANcXAADXFwAAQxgAAEMYAACnGgAApxoAAHgcAAB9HAAALB0AAGodAAB4HQAAeB0AAJsdAAC/HQAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAAfCwAAH0sAABvLQAAby0AAC8uAAAvLgAABTAAAAUwAAAxMAAANTAAADswAAA7MAAAnTAAAJ4wAAD8MAAA/jAAABWgAAAVoAAA+KQAAP2kAAAMpgAADKYAAH+mAAB/pgAAnKYAAJ2mAAAXpwAAH6cAAHCnAABwpwAAiKcAAIinAADypwAA9KcAAPinAAD5pwAAz6kAAM+pAADmqQAA5qkAAHCqAABwqgAA3aoAAN2qAADzqgAA9KoAAFyrAABfqwAAaasAAGmrAABw/wAAcP8AAJ7/AACf/wAAgAcBAIUHAQCHBwEAsAcBALIHAQC6BwEAQGsBAENrAQCTbwEAn28BAOBvAQDhbwEA428BAONvAQDwrwEA868BAPWvAQD7rwEA/a8BAP6vAQAw4AEAbeABADfhAQA94QEA6+QBAOvkAQBL6QEAS+kBAF4AAABeAAAAYAAAAGAAAACoAAAAqAAAAK8AAACvAAAAtAAAALQAAAC4AAAAuAAAAMICAADFAgAA0gIAAN8CAADlAgAA6wIAAO0CAADtAgAA7wIAAP8CAAB1AwAAdQMAAIQDAACFAwAAiAgAAIgIAAC9HwAAvR8AAL8fAADBHwAAzR8AAM8fAADdHwAA3x8AAO0fAADvHwAA/R8AAP4fAACbMAAAnDAAAACnAAAWpwAAIKcAACGnAACJpwAAiqcAAFurAABbqwAAaqsAAGurAACy+wAAwvsAAD7/AAA+/wAAQP8AAED/AADj/wAA4/8AAPvzAQD/8wEAAAMAAG8DAACDBAAAhwQAAJEFAAC9BQAAvwUAAL8FAADBBQAAwgUAAMQFAADFBQAAxwUAAMcFAAAQBgAAGgYAAEsGAABfBgAAcAYAAHAGAADWBgAA3AYAAN8GAADkBgAA5wYAAOgGAADqBgAA7QYAABEHAAARBwAAMAcAAEoHAACmBwAAsAcAAOsHAADzBwAA/QcAAP0HAAAWCAAAGQgAABsIAAAjCAAAJQgAACcIAAApCAAALQgAAFkIAABbCAAAmAgAAJ8IAADKCAAA4QgAAOMIAAACCQAAOgkAADoJAAA8CQAAPAkAAEEJAABICQAATQkAAE0JAABRCQAAVwkAAGIJAABjCQAAgQkAAIEJAAC8CQAAvAkAAMEJAADECQAAzQkAAM0JAADiCQAA4wkAAP4JAAD+CQAAAQoAAAIKAAA8CgAAPAoAAEEKAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAcAoAAHEKAAB1CgAAdQoAAIEKAACCCgAAvAoAALwKAADBCgAAxQoAAMcKAADICgAAzQoAAM0KAADiCgAA4woAAPoKAAD/CgAAAQsAAAELAAA8CwAAPAsAAD8LAAA/CwAAQQsAAEQLAABNCwAATQsAAFULAABWCwAAYgsAAGMLAACCCwAAggsAAMALAADACwAAzQsAAM0LAAAADAAAAAwAAAQMAAAEDAAAPAwAADwMAAA+DAAAQAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAGIMAABjDAAAgQwAAIEMAAC8DAAAvAwAAL8MAAC/DAAAxgwAAMYMAADMDAAAzQwAAOIMAADjDAAAAA0AAAENAAA7DQAAPA0AAEENAABEDQAATQ0AAE0NAABiDQAAYw0AAIENAACBDQAAyg0AAMoNAADSDQAA1A0AANYNAADWDQAAMQ4AADEOAAA0DgAAOg4AAEcOAABODgAAsQ4AALEOAAC0DgAAvA4AAMgOAADODgAAGA8AABkPAAA1DwAANQ8AADcPAAA3DwAAOQ8AADkPAABxDwAAfg8AAIAPAACEDwAAhg8AAIcPAACNDwAAlw8AAJkPAAC8DwAAxg8AAMYPAAAtEAAAMBAAADIQAAA3EAAAORAAADoQAAA9EAAAPhAAAFgQAABZEAAAXhAAAGAQAABxEAAAdBAAAIIQAACCEAAAhRAAAIYQAACNEAAAjRAAAJ0QAACdEAAAXRMAAF8TAAASFwAAFBcAADIXAAAzFwAAUhcAAFMXAAByFwAAcxcAALQXAAC1FwAAtxcAAL0XAADGFwAAxhcAAMkXAADTFwAA3RcAAN0XAAALGAAADRgAAA8YAAAPGAAAhRgAAIYYAACpGAAAqRgAACAZAAAiGQAAJxkAACgZAAAyGQAAMhkAADkZAAA7GQAAFxoAABgaAAAbGgAAGxoAAFYaAABWGgAAWBoAAF4aAABgGgAAYBoAAGIaAABiGgAAZRoAAGwaAABzGgAAfBoAAH8aAAB/GgAAsBoAAL0aAAC/GgAAzhoAAAAbAAADGwAANBsAADQbAAA2GwAAOhsAADwbAAA8GwAAQhsAAEIbAABrGwAAcxsAAIAbAACBGwAAohsAAKUbAACoGwAAqRsAAKsbAACtGwAA5hsAAOYbAADoGwAA6RsAAO0bAADtGwAA7xsAAPEbAAAsHAAAMxwAADYcAAA3HAAA0BwAANIcAADUHAAA4BwAAOIcAADoHAAA7RwAAO0cAAD0HAAA9BwAAPgcAAD5HAAAwB0AAP8dAADQIAAA3CAAAOEgAADhIAAA5SAAAPAgAADvLAAA8SwAAH8tAAB/LQAA4C0AAP8tAAAqMAAALTAAAJkwAACaMAAAb6YAAG+mAAB0pgAAfaYAAJ6mAACfpgAA8KYAAPGmAAACqAAAAqgAAAaoAAAGqAAAC6gAAAuoAAAlqAAAJqgAACyoAAAsqAAAxKgAAMWoAADgqAAA8agAAP+oAAD/qAAAJqkAAC2pAABHqQAAUakAAICpAACCqQAAs6kAALOpAAC2qQAAuakAALypAAC9qQAA5akAAOWpAAApqgAALqoAADGqAAAyqgAANaoAADaqAABDqgAAQ6oAAEyqAABMqgAAfKoAAHyqAACwqgAAsKoAALKqAAC0qgAAt6oAALiqAAC+qgAAv6oAAMGqAADBqgAA7KoAAO2qAAD2qgAA9qoAAOWrAADlqwAA6KsAAOirAADtqwAA7asAAB77AAAe+wAAAP4AAA/+AAAg/gAAL/4AAP0BAQD9AQEA4AIBAOACAQB2AwEAegMBAAEKAQADCgEABQoBAAYKAQAMCgEADwoBADgKAQA6CgEAPwoBAD8KAQDlCgEA5goBACQNAQAnDQEAqw4BAKwOAQD9DgEA/w4BAEYPAQBQDwEAgg8BAIUPAQABEAEAARABADgQAQBGEAEAcBABAHAQAQBzEAEAdBABAH8QAQCBEAEAsxABALYQAQC5EAEAuhABAMIQAQDCEAEAABEBAAIRAQAnEQEAKxEBAC0RAQA0EQEAcxEBAHMRAQCAEQEAgREBALYRAQC+EQEAyREBAMwRAQDPEQEAzxEBAC8SAQAxEgEANBIBADQSAQA2EgEANxIBAD4SAQA+EgEAQRIBAEESAQDfEgEA3xIBAOMSAQDqEgEAABMBAAETAQA7EwEAPBMBAEATAQBAEwEAZhMBAGwTAQBwEwEAdBMBADgUAQA/FAEAQhQBAEQUAQBGFAEARhQBAF4UAQBeFAEAsxQBALgUAQC6FAEAuhQBAL8UAQDAFAEAwhQBAMMUAQCyFQEAtRUBALwVAQC9FQEAvxUBAMAVAQDcFQEA3RUBADMWAQA6FgEAPRYBAD0WAQA/FgEAQBYBAKsWAQCrFgEArRYBAK0WAQCwFgEAtRYBALcWAQC3FgEAHRcBAB8XAQAiFwEAJRcBACcXAQArFwEALxgBADcYAQA5GAEAOhgBADsZAQA8GQEAPhkBAD4ZAQBDGQEAQxkBANQZAQDXGQEA2hkBANsZAQDgGQEA4BkBAAEaAQAKGgEAMxoBADgaAQA7GgEAPhoBAEcaAQBHGgEAURoBAFYaAQBZGgEAWxoBAIoaAQCWGgEAmBoBAJkaAQAwHAEANhwBADgcAQA9HAEAPxwBAD8cAQCSHAEApxwBAKocAQCwHAEAshwBALMcAQC1HAEAthwBADEdAQA2HQEAOh0BADodAQA8HQEAPR0BAD8dAQBFHQEARx0BAEcdAQCQHQEAkR0BAJUdAQCVHQEAlx0BAJcdAQDzHgEA9B4BAAAfAQABHwEANh8BADofAQBAHwEAQB8BAEIfAQBCHwEAQDQBAEA0AQBHNAEAVTQBAPBqAQD0agEAMGsBADZrAQBPbwEAT28BAI9vAQCSbwEA5G8BAORvAQCdvAEAnrwBAADPAQAtzwEAMM8BAEbPAQBn0QEAadEBAHvRAQCC0QEAhdEBAIvRAQCq0QEArdEBAELSAQBE0gEAANoBADbaAQA72gEAbNoBAHXaAQB12gEAhNoBAITaAQCb2gEAn9oBAKHaAQCv2gEAAOABAAbgAQAI4AEAGOABABvgAQAh4AEAI+ABACTgAQAm4AEAKuABAI/gAQCP4AEAMOEBADbhAQCu4gEAruIBAOziAQDv4gEA7OQBAO/kAQDQ6AEA1ugBAETpAQBK6QEAAAEOAO8BDgAwAAAAOQAAALIAAACzAAAAuQAAALkAAAC8AAAAvgAAAGAGAABpBgAA8AYAAPkGAADABwAAyQcAAGYJAABvCQAA5gkAAO8JAAD0CQAA+QkAAGYKAABvCgAA5goAAO8KAABmCwAAbwsAAHILAAB3CwAA5gsAAPILAABmDAAAbwwAAHgMAAB+DAAA5gwAAO8MAABYDQAAXg0AAGYNAAB4DQAA5g0AAO8NAABQDgAAWQ4AANAOAADZDgAAIA8AADMPAABAEAAASRAAAJAQAACZEAAAaRMAAHwTAADuFgAA8BYAAOAXAADpFwAA8BcAAPkXAAAQGAAAGRgAAEYZAABPGQAA0BkAANoZAACAGgAAiRoAAJAaAACZGgAAUBsAAFkbAACwGwAAuRsAAEAcAABJHAAAUBwAAFkcAABwIAAAcCAAAHQgAAB5IAAAgCAAAIkgAABQIQAAgiEAAIUhAACJIQAAYCQAAJskAADqJAAA/yQAAHYnAACTJwAA/SwAAP0sAAAHMAAABzAAACEwAAApMAAAODAAADowAACSMQAAlTEAACAyAAApMgAASDIAAE8yAABRMgAAXzIAAIAyAACJMgAAsTIAAL8yAAAgpgAAKaYAAOamAADvpgAAMKgAADWoAADQqAAA2agAAACpAAAJqQAA0KkAANmpAADwqQAA+akAAFCqAABZqgAA8KsAAPmrAAAQ/wAAGf8AAAcBAQAzAQEAQAEBAHgBAQCKAQEAiwEBAOECAQD7AgEAIAMBACMDAQBBAwEAQQMBAEoDAQBKAwEA0QMBANUDAQCgBAEAqQQBAFgIAQBfCAEAeQgBAH8IAQCnCAEArwgBAPsIAQD/CAEAFgkBABsJAQC8CQEAvQkBAMAJAQDPCQEA0gkBAP8JAQBACgEASAoBAH0KAQB+CgEAnQoBAJ8KAQDrCgEA7woBAFgLAQBfCwEAeAsBAH8LAQCpCwEArwsBAPoMAQD/DAEAMA0BADkNAQBgDgEAfg4BAB0PAQAmDwEAUQ8BAFQPAQDFDwEAyw8BAFIQAQBvEAEA8BABAPkQAQA2EQEAPxEBANARAQDZEQEA4REBAPQRAQDwEgEA+RIBAFAUAQBZFAEA0BQBANkUAQBQFgEAWRYBAMAWAQDJFgEAMBcBADsXAQDgGAEA8hgBAFAZAQBZGQEAUBwBAGwcAQBQHQEAWR0BAKAdAQCpHQEAUB8BAFkfAQDAHwEA1B8BAAAkAQBuJAEAYGoBAGlqAQDAagEAyWoBAFBrAQBZawEAW2sBAGFrAQCAbgEAlm4BAMDSAQDT0gEA4NIBAPPSAQBg0wEAeNMBAM7XAQD/1wEAQOEBAEnhAQDw4gEA+eIBAPDkAQD55AEAx+gBAM/oAQBQ6QEAWekBAHHsAQCr7AEArewBAK/sAQCx7AEAtOwBAAHtAQAt7QEAL+0BAD3tAQAA8QEADPEBAPD7AQD5+wEAKAAAACgAAABbAAAAWwAAAHsAAAB7AAAAOg8AADoPAAA8DwAAPA8AAJsWAACbFgAAGiAAABogAAAeIAAAHiAAAEUgAABFIAAAfSAAAH0gAACNIAAAjSAAAAgjAAAIIwAACiMAAAojAAApIwAAKSMAAGgnAABoJwAAaicAAGonAABsJwAAbCcAAG4nAABuJwAAcCcAAHAnAAByJwAAcicAAHQnAAB0JwAAxScAAMUnAADmJwAA5icAAOgnAADoJwAA6icAAOonAADsJwAA7CcAAO4nAADuJwAAgykAAIMpAACFKQAAhSkAAIcpAACHKQAAiSkAAIkpAACLKQAAiykAAI0pAACNKQAAjykAAI8pAACRKQAAkSkAAJMpAACTKQAAlSkAAJUpAACXKQAAlykAANgpAADYKQAA2ikAANopAAD8KQAA/CkAACIuAAAiLgAAJC4AACQuAAAmLgAAJi4AACguAAAoLgAAQi4AAEIuAABVLgAAVS4AAFcuAABXLgAAWS4AAFkuAABbLgAAWy4AAAgwAAAIMAAACjAAAAowAAAMMAAADDAAAA4wAAAOMAAAEDAAABAwAAAUMAAAFDAAABYwAAAWMAAAGDAAABgwAAAaMAAAGjAAAB0wAAAdMAAAP/0AAD/9AAAX/gAAF/4AADX+AAA1/gAAN/4AADf+AAA5/gAAOf4AADv+AAA7/gAAPf4AAD3+AAA//gAAP/4AAEH+AABB/gAAQ/4AAEP+AABH/gAAR/4AAFn+AABZ/gAAW/4AAFv+AABd/gAAXf4AAAj/AAAI/wAAO/8AADv/AABb/wAAW/8AAF//AABf/wAAYv8AAGL/AAAAAAAAHwAAAH8AAACfAAAArQAAAK0AAAB4AwAAeQMAAIADAACDAwAAiwMAAIsDAACNAwAAjQMAAKIDAACiAwAAMAUAADAFAABXBQAAWAUAAIsFAACMBQAAkAUAAJAFAADIBQAAzwUAAOsFAADuBQAA9QUAAAUGAAAcBgAAHAYAAN0GAADdBgAADgcAAA8HAABLBwAATAcAALIHAAC/BwAA+wcAAPwHAAAuCAAALwgAAD8IAAA/CAAAXAgAAF0IAABfCAAAXwgAAGsIAABvCAAAjwgAAJcIAADiCAAA4ggAAIQJAACECQAAjQkAAI4JAACRCQAAkgkAAKkJAACpCQAAsQkAALEJAACzCQAAtQkAALoJAAC7CQAAxQkAAMYJAADJCQAAygkAAM8JAADWCQAA2AkAANsJAADeCQAA3gkAAOQJAADlCQAA/wkAAAAKAAAECgAABAoAAAsKAAAOCgAAEQoAABIKAAApCgAAKQoAADEKAAAxCgAANAoAADQKAAA3CgAANwoAADoKAAA7CgAAPQoAAD0KAABDCgAARgoAAEkKAABKCgAATgoAAFAKAABSCgAAWAoAAF0KAABdCgAAXwoAAGUKAAB3CgAAgAoAAIQKAACECgAAjgoAAI4KAACSCgAAkgoAAKkKAACpCgAAsQoAALEKAAC0CgAAtAoAALoKAAC7CgAAxgoAAMYKAADKCgAAygoAAM4KAADPCgAA0QoAAN8KAADkCgAA5QoAAPIKAAD4CgAAAAsAAAALAAAECwAABAsAAA0LAAAOCwAAEQsAABILAAApCwAAKQsAADELAAAxCwAANAsAADQLAAA6CwAAOwsAAEULAABGCwAASQsAAEoLAABOCwAAVAsAAFgLAABbCwAAXgsAAF4LAABkCwAAZQsAAHgLAACBCwAAhAsAAIQLAACLCwAAjQsAAJELAACRCwAAlgsAAJgLAACbCwAAmwsAAJ0LAACdCwAAoAsAAKILAAClCwAApwsAAKsLAACtCwAAugsAAL0LAADDCwAAxQsAAMkLAADJCwAAzgsAAM8LAADRCwAA1gsAANgLAADlCwAA+wsAAP8LAAANDAAADQwAABEMAAARDAAAKQwAACkMAAA6DAAAOwwAAEUMAABFDAAASQwAAEkMAABODAAAVAwAAFcMAABXDAAAWwwAAFwMAABeDAAAXwwAAGQMAABlDAAAcAwAAHYMAACNDAAAjQwAAJEMAACRDAAAqQwAAKkMAAC0DAAAtAwAALoMAAC7DAAAxQwAAMUMAADJDAAAyQwAAM4MAADUDAAA1wwAANwMAADfDAAA3wwAAOQMAADlDAAA8AwAAPAMAAD0DAAA/wwAAA0NAAANDQAAEQ0AABENAABFDQAARQ0AAEkNAABJDQAAUA0AAFMNAABkDQAAZQ0AAIANAACADQAAhA0AAIQNAACXDQAAmQ0AALINAACyDQAAvA0AALwNAAC+DQAAvw0AAMcNAADJDQAAyw0AAM4NAADVDQAA1Q0AANcNAADXDQAA4A0AAOUNAADwDQAA8Q0AAPUNAAAADgAAOw4AAD4OAABcDgAAgA4AAIMOAACDDgAAhQ4AAIUOAACLDgAAiw4AAKQOAACkDgAApg4AAKYOAAC+DgAAvw4AAMUOAADFDgAAxw4AAMcOAADPDgAAzw4AANoOAADbDgAA4A4AAP8OAABIDwAASA8AAG0PAABwDwAAmA8AAJgPAAC9DwAAvQ8AAM0PAADNDwAA2w8AAP8PAADGEAAAxhAAAMgQAADMEAAAzhAAAM8QAABJEgAASRIAAE4SAABPEgAAVxIAAFcSAABZEgAAWRIAAF4SAABfEgAAiRIAAIkSAACOEgAAjxIAALESAACxEgAAthIAALcSAAC/EgAAvxIAAMESAADBEgAAxhIAAMcSAADXEgAA1xIAABETAAAREwAAFhMAABcTAABbEwAAXBMAAH0TAAB/EwAAmhMAAJ8TAAD2EwAA9xMAAP4TAAD/EwAAnRYAAJ8WAAD5FgAA/xYAABYXAAAeFwAANxcAAD8XAABUFwAAXxcAAG0XAABtFwAAcRcAAHEXAAB0FwAAfxcAAN4XAADfFwAA6hcAAO8XAAD6FwAA/xcAAA4YAAAOGAAAGhgAAB8YAAB5GAAAfxgAAKsYAACvGAAA9hgAAP8YAAAfGQAAHxkAACwZAAAvGQAAPBkAAD8ZAABBGQAAQxkAAG4ZAABvGQAAdRkAAH8ZAACsGQAArxkAAMoZAADPGQAA2xkAAN0ZAAAcGgAAHRoAAF8aAABfGgAAfRoAAH4aAACKGgAAjxoAAJoaAACfGgAArhoAAK8aAADPGgAA/xoAAE0bAABPGwAAfxsAAH8bAAD0GwAA+xsAADgcAAA6HAAAShwAAEwcAACJHAAAjxwAALscAAC8HAAAyBwAAM8cAAD7HAAA/xwAABYfAAAXHwAAHh8AAB8fAABGHwAARx8AAE4fAABPHwAAWB8AAFgfAABaHwAAWh8AAFwfAABcHwAAXh8AAF4fAAB+HwAAfx8AALUfAAC1HwAAxR8AAMUfAADUHwAA1R8AANwfAADcHwAA8B8AAPEfAAD1HwAA9R8AAP8fAAD/HwAACyAAAA8gAAAqIAAALiAAAGAgAABvIAAAciAAAHMgAACPIAAAjyAAAJ0gAACfIAAAwSAAAM8gAADxIAAA/yAAAIwhAACPIQAAJyQAAD8kAABLJAAAXyQAAHQrAAB1KwAAlisAAJYrAAD0LAAA+CwAACYtAAAmLQAAKC0AACwtAAAuLQAALy0AAGgtAABuLQAAcS0AAH4tAACXLQAAny0AAKctAACnLQAAry0AAK8tAAC3LQAAty0AAL8tAAC/LQAAxy0AAMctAADPLQAAzy0AANctAADXLQAA3y0AAN8tAABeLgAAfy4AAJouAACaLgAA9C4AAP8uAADWLwAA7y8AAPwvAAD/LwAAQDAAAEAwAACXMAAAmDAAAAAxAAAEMQAAMDEAADAxAACPMQAAjzEAAOQxAADvMQAAHzIAAB8yAACNpAAAj6QAAMekAADPpAAALKYAAD+mAAD4pgAA/6YAAMunAADPpwAA0qcAANKnAADUpwAA1KcAANqnAADxpwAALagAAC+oAAA6qAAAP6gAAHioAAB/qAAAxqgAAM2oAADaqAAA36gAAFSpAABeqQAAfakAAH+pAADOqQAAzqkAANqpAADdqQAA/6kAAP+pAAA3qgAAP6oAAE6qAABPqgAAWqoAAFuqAADDqgAA2qoAAPeqAAAAqwAAB6sAAAirAAAPqwAAEKsAABerAAAfqwAAJ6sAACerAAAvqwAAL6sAAGyrAABvqwAA7qsAAO+rAAD6qwAA/6sAAKTXAACv1wAAx9cAAMrXAAD81wAA//gAAG76AABv+gAA2voAAP/6AAAH+wAAEvsAABj7AAAc+wAAN/sAADf7AAA9+wAAPfsAAD/7AAA/+wAAQvsAAEL7AABF+wAARfsAAMP7AADS+wAAkP0AAJH9AADI/QAAzv0AAND9AADv/QAAGv4AAB/+AABT/gAAU/4AAGf+AABn/gAAbP4AAG/+AAB1/gAAdf4AAP3+AAAA/wAAv/8AAMH/AADI/wAAyf8AAND/AADR/wAA2P8AANn/AADd/wAA3/8AAOf/AADn/wAA7/8AAPv/AAD+/wAA//8AAAwAAQAMAAEAJwABACcAAQA7AAEAOwABAD4AAQA+AAEATgABAE8AAQBeAAEAfwABAPsAAQD/AAEAAwEBAAYBAQA0AQEANgEBAI8BAQCPAQEAnQEBAJ8BAQChAQEAzwEBAP4BAQB/AgEAnQIBAJ8CAQDRAgEA3wIBAPwCAQD/AgEAJAMBACwDAQBLAwEATwMBAHsDAQB/AwEAngMBAJ4DAQDEAwEAxwMBANYDAQD/AwEAngQBAJ8EAQCqBAEArwQBANQEAQDXBAEA/AQBAP8EAQAoBQEALwUBAGQFAQBuBQEAewUBAHsFAQCLBQEAiwUBAJMFAQCTBQEAlgUBAJYFAQCiBQEAogUBALIFAQCyBQEAugUBALoFAQC9BQEA/wUBADcHAQA/BwEAVgcBAF8HAQBoBwEAfwcBAIYHAQCGBwEAsQcBALEHAQC7BwEA/wcBAAYIAQAHCAEACQgBAAkIAQA2CAEANggBADkIAQA7CAEAPQgBAD4IAQBWCAEAVggBAJ8IAQCmCAEAsAgBAN8IAQDzCAEA8wgBAPYIAQD6CAEAHAkBAB4JAQA6CQEAPgkBAEAJAQB/CQEAuAkBALsJAQDQCQEA0QkBAAQKAQAECgEABwoBAAsKAQAUCgEAFAoBABgKAQAYCgEANgoBADcKAQA7CgEAPgoBAEkKAQBPCgEAWQoBAF8KAQCgCgEAvwoBAOcKAQDqCgEA9woBAP8KAQA2CwEAOAsBAFYLAQBXCwEAcwsBAHcLAQCSCwEAmAsBAJ0LAQCoCwEAsAsBAP8LAQBJDAEAfwwBALMMAQC/DAEA8wwBAPkMAQAoDQEALw0BADoNAQBfDgEAfw4BAH8OAQCqDgEAqg4BAK4OAQCvDgEAsg4BAPwOAQAoDwEALw8BAFoPAQBvDwEAig8BAK8PAQDMDwEA3w8BAPcPAQD/DwEAThABAFEQAQB2EAEAfhABAL0QAQC9EAEAwxABAM8QAQDpEAEA7xABAPoQAQD/EAEANREBADURAQBIEQEATxEBAHcRAQB/EQEA4BEBAOARAQD1EQEA/xEBABISAQASEgEAQhIBAH8SAQCHEgEAhxIBAIkSAQCJEgEAjhIBAI4SAQCeEgEAnhIBAKoSAQCvEgEA6xIBAO8SAQD6EgEA/xIBAAQTAQAEEwEADRMBAA4TAQAREwEAEhMBACkTAQApEwEAMRMBADETAQA0EwEANBMBADoTAQA6EwEARRMBAEYTAQBJEwEAShMBAE4TAQBPEwEAURMBAFYTAQBYEwEAXBMBAGQTAQBlEwEAbRMBAG8TAQB1EwEA/xMBAFwUAQBcFAEAYhQBAH8UAQDIFAEAzxQBANoUAQB/FQEAthUBALcVAQDeFQEA/xUBAEUWAQBPFgEAWhYBAF8WAQBtFgEAfxYBALoWAQC/FgEAyhYBAP8WAQAbFwEAHBcBACwXAQAvFwEARxcBAP8XAQA8GAEAnxgBAPMYAQD+GAEABxkBAAgZAQAKGQEACxkBABQZAQAUGQEAFxkBABcZAQA2GQEANhkBADkZAQA6GQEARxkBAE8ZAQBaGQEAnxkBAKgZAQCpGQEA2BkBANkZAQDlGQEA/xkBAEgaAQBPGgEAoxoBAK8aAQD5GgEA/xoBAAobAQD/GwEACRwBAAkcAQA3HAEANxwBAEYcAQBPHAEAbRwBAG8cAQCQHAEAkRwBAKgcAQCoHAEAtxwBAP8cAQAHHQEABx0BAAodAQAKHQEANx0BADkdAQA7HQEAOx0BAD4dAQA+HQEASB0BAE8dAQBaHQEAXx0BAGYdAQBmHQEAaR0BAGkdAQCPHQEAjx0BAJIdAQCSHQEAmR0BAJ8dAQCqHQEA3x4BAPkeAQD/HgEAER8BABEfAQA7HwEAPR8BAFofAQCvHwEAsR8BAL8fAQDyHwEA/h8BAJojAQD/IwEAbyQBAG8kAQB1JAEAfyQBAEQlAQCPLwEA8y8BAP8vAQAwNAEAPzQBAFY0AQD/QwEAR0YBAP9nAQA5agEAP2oBAF9qAQBfagEAamoBAG1qAQC/agEAv2oBAMpqAQDPagEA7moBAO9qAQD2agEA/2oBAEZrAQBPawEAWmsBAFprAQBiawEAYmsBAHhrAQB8awEAkGsBAD9uAQCbbgEA/24BAEtvAQBObwEAiG8BAI5vAQCgbwEA328BAOVvAQDvbwEA8m8BAP9vAQD4hwEA/4cBANaMAQD/jAEACY0BAO+vAQD0rwEA9K8BAPyvAQD8rwEA/68BAP+vAQAjsQEAMbEBADOxAQBPsQEAU7EBAFSxAQBWsQEAY7EBAGixAQBvsQEA/LIBAP+7AQBrvAEAb7wBAH28AQB/vAEAibwBAI+8AQCavAEAm7wBAKC8AQD/zgEALs8BAC/PAQBHzwEAT88BAMTPAQD/zwEA9tABAP/QAQAn0QEAKNEBAHPRAQB60QEA69EBAP/RAQBG0gEAv9IBANTSAQDf0gEA9NIBAP/SAQBX0wEAX9MBAHnTAQD/0wEAVdQBAFXUAQCd1AEAndQBAKDUAQCh1AEAo9QBAKTUAQCn1AEAqNQBAK3UAQCt1AEAutQBALrUAQC81AEAvNQBAMTUAQDE1AEABtUBAAbVAQAL1QEADNUBABXVAQAV1QEAHdUBAB3VAQA61QEAOtUBAD/VAQA/1QEARdUBAEXVAQBH1QEASdUBAFHVAQBR1QEAptYBAKfWAQDM1wEAzdcBAIzaAQCa2gEAoNoBAKDaAQCw2gEA/94BAB/fAQAk3wEAK98BAP/fAQAH4AEAB+ABABngAQAa4AEAIuABACLgAQAl4AEAJeABACvgAQAv4AEAbuABAI7gAQCQ4AEA/+ABAC3hAQAv4QEAPuEBAD/hAQBK4QEATeEBAFDhAQCP4gEAr+IBAL/iAQD64gEA/uIBAADjAQDP5AEA+uQBAN/nAQDn5wEA5+cBAOznAQDs5wEA7+cBAO/nAQD/5wEA/+cBAMXoAQDG6AEA1+gBAP/oAQBM6QEAT+kBAFrpAQBd6QEAYOkBAHDsAQC17AEAAO0BAD7tAQD/7QEABO4BAATuAQAg7gEAIO4BACPuAQAj7gEAJe4BACbuAQAo7gEAKO4BADPuAQAz7gEAOO4BADjuAQA67gEAOu4BADzuAQBB7gEAQ+4BAEbuAQBI7gEASO4BAEruAQBK7gEATO4BAEzuAQBQ7gEAUO4BAFPuAQBT7gEAVe4BAFbuAQBY7gEAWO4BAFruAQBa7gEAXO4BAFzuAQBe7gEAXu4BAGDuAQBg7gEAY+4BAGPuAQBl7gEAZu4BAGvuAQBr7gEAc+4BAHPuAQB47gEAeO4BAH3uAQB97gEAf+4BAH/uAQCK7gEAiu4BAJzuAQCg7gEApO4BAKTuAQCq7gEAqu4BALzuAQDv7gEA8u4BAP/vAQAs8AEAL/ABAJTwAQCf8AEAr/ABALDwAQDA8AEAwPABANDwAQDQ8AEA9vABAP/wAQCu8QEA5fEBAAPyAQAP8gEAPPIBAD/yAQBJ8gEAT/IBAFLyAQBf8gEAZvIBAP/yAQDY9gEA2/YBAO32AQDv9gEA/fYBAP/2AQB39wEAevcBANr3AQDf9wEA7PcBAO/3AQDx9wEA//cBAAz4AQAP+AEASPgBAE/4AQBa+AEAX/gBAIj4AQCP+AEArvgBAK/4AQCy+AEA//gBAFT6AQBf+gEAbvoBAG/6AQB9+gEAf/oBAIn6AQCP+gEAvvoBAL76AQDG+gEAzfoBANz6AQDf+gEA6foBAO/6AQD5+gEA//oBAJP7AQCT+wEAy/sBAO/7AQD6+wEA//8BAOCmAgD/pgIAOrcCAD+3AgAeuAIAH7gCAKLOAgCvzgIA4esCAP/3AgAe+gIA//8CAEsTAwBPEwMAsCMDAP8ADgDwAQ4A//8QAKoAAACqAAAAugAAALoAAAC7AQAAuwEAAMABAADDAQAAlAIAAJQCAADQBQAA6gUAAO8FAADyBQAAIAYAAD8GAABBBgAASgYAAG4GAABvBgAAcQYAANMGAADVBgAA1QYAAO4GAADvBgAA+gYAAPwGAAD/BgAA/wYAABAHAAAQBwAAEgcAAC8HAABNBwAApQcAALEHAACxBwAAygcAAOoHAAAACAAAFQgAAEAIAABYCAAAYAgAAGoIAABwCAAAhwgAAIkIAACOCAAAoAgAAMgIAAAECQAAOQkAAD0JAAA9CQAAUAkAAFAJAABYCQAAYQkAAHIJAACACQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvQkAAL0JAADOCQAAzgkAANwJAADdCQAA3wkAAOEJAADwCQAA8QkAAPwJAAD8CQAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAABZCgAAXAoAAF4KAABeCgAAcgoAAHQKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC9CgAAvQoAANAKAADQCgAA4AoAAOEKAAD5CgAA+QoAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAAA9CwAAXAsAAF0LAABfCwAAYQsAAHELAABxCwAAgwsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAADQCwAA0AsAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPQwAAD0MAABYDAAAWgwAAF0MAABdDAAAYAwAAGEMAACADAAAgAwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC9DAAAvQwAAN0MAADeDAAA4AwAAOEMAADxDAAA8gwAAAQNAAAMDQAADg0AABANAAASDQAAOg0AAD0NAAA9DQAATg0AAE4NAABUDQAAVg0AAF8NAABhDQAAeg0AAH8NAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAAQ4AADAOAAAyDgAAMw4AAEAOAABFDgAAgQ4AAIIOAACEDgAAhA4AAIYOAACKDgAAjA4AAKMOAAClDgAApQ4AAKcOAACwDgAAsg4AALMOAAC9DgAAvQ4AAMAOAADEDgAA3A4AAN8OAAAADwAAAA8AAEAPAABHDwAASQ8AAGwPAACIDwAAjA8AAAAQAAAqEAAAPxAAAD8QAABQEAAAVRAAAFoQAABdEAAAYRAAAGEQAABlEAAAZhAAAG4QAABwEAAAdRAAAIEQAACOEAAAjhAAAAARAABIEgAAShIAAE0SAABQEgAAVhIAAFgSAABYEgAAWhIAAF0SAABgEgAAiBIAAIoSAACNEgAAkBIAALASAACyEgAAtRIAALgSAAC+EgAAwBIAAMASAADCEgAAxRIAAMgSAADWEgAA2BIAABATAAASEwAAFRMAABgTAABaEwAAgBMAAI8TAAABFAAAbBYAAG8WAAB/FgAAgRYAAJoWAACgFgAA6hYAAPEWAAD4FgAAABcAABEXAAAfFwAAMRcAAEAXAABRFwAAYBcAAGwXAABuFwAAcBcAAIAXAACzFwAA3BcAANwXAAAgGAAAQhgAAEQYAAB4GAAAgBgAAIQYAACHGAAAqBgAAKoYAACqGAAAsBgAAPUYAAAAGQAAHhkAAFAZAABtGQAAcBkAAHQZAACAGQAAqxkAALAZAADJGQAAABoAABYaAAAgGgAAVBoAAAUbAAAzGwAARRsAAEwbAACDGwAAoBsAAK4bAACvGwAAuhsAAOUbAAAAHAAAIxwAAE0cAABPHAAAWhwAAHccAADpHAAA7BwAAO4cAADzHAAA9RwAAPYcAAD6HAAA+hwAADUhAAA4IQAAMC0AAGctAACALQAAli0AAKAtAACmLQAAqC0AAK4tAACwLQAAti0AALgtAAC+LQAAwC0AAMYtAADILQAAzi0AANAtAADWLQAA2C0AAN4tAAAGMAAABjAAADwwAAA8MAAAQTAAAJYwAACfMAAAnzAAAKEwAAD6MAAA/zAAAP8wAAAFMQAALzEAADExAACOMQAAoDEAAL8xAADwMQAA/zEAAAA0AAC/TQAAAE4AABSgAAAWoAAAjKQAANCkAAD3pAAAAKUAAAumAAAQpgAAH6YAACqmAAArpgAAbqYAAG6mAACgpgAA5aYAAI+nAACPpwAA96cAAPenAAD7pwAAAagAAAOoAAAFqAAAB6gAAAqoAAAMqAAAIqgAAECoAABzqAAAgqgAALOoAADyqAAA96gAAPuoAAD7qAAA/agAAP6oAAAKqQAAJakAADCpAABGqQAAYKkAAHypAACEqQAAsqkAAOCpAADkqQAA56kAAO+pAAD6qQAA/qkAAACqAAAoqgAAQKoAAEKqAABEqgAAS6oAAGCqAABvqgAAcaoAAHaqAAB6qgAAeqoAAH6qAACvqgAAsaoAALGqAAC1qgAAtqoAALmqAAC9qgAAwKoAAMCqAADCqgAAwqoAANuqAADcqgAA4KoAAOqqAADyqgAA8qoAAAGrAAAGqwAACasAAA6rAAARqwAAFqsAACCrAAAmqwAAKKsAAC6rAADAqwAA4qsAAACsAACj1wAAsNcAAMbXAADL1wAA+9cAAAD5AABt+gAAcPoAANn6AAAd+wAAHfsAAB/7AAAo+wAAKvsAADb7AAA4+wAAPPsAAD77AAA++wAAQPsAAEH7AABD+wAARPsAAEb7AACx+wAA0/sAAD39AABQ/QAAj/0AAJL9AADH/QAA8P0AAPv9AABw/gAAdP4AAHb+AAD8/gAAZv8AAG//AABx/wAAnf8AAKD/AAC+/wAAwv8AAMf/AADK/wAAz/8AANL/AADX/wAA2v8AANz/AAAAAAEACwABAA0AAQAmAAEAKAABADoAAQA8AAEAPQABAD8AAQBNAAEAUAABAF0AAQCAAAEA+gABAIACAQCcAgEAoAIBANACAQAAAwEAHwMBAC0DAQBAAwEAQgMBAEkDAQBQAwEAdQMBAIADAQCdAwEAoAMBAMMDAQDIAwEAzwMBAFAEAQCdBAEAAAUBACcFAQAwBQEAYwUBAAAGAQA2BwEAQAcBAFUHAQBgBwEAZwcBAAAIAQAFCAEACAgBAAgIAQAKCAEANQgBADcIAQA4CAEAPAgBADwIAQA/CAEAVQgBAGAIAQB2CAEAgAgBAJ4IAQDgCAEA8ggBAPQIAQD1CAEAAAkBABUJAQAgCQEAOQkBAIAJAQC3CQEAvgkBAL8JAQAACgEAAAoBABAKAQATCgEAFQoBABcKAQAZCgEANQoBAGAKAQB8CgEAgAoBAJwKAQDACgEAxwoBAMkKAQDkCgEAAAsBADULAQBACwEAVQsBAGALAQByCwEAgAsBAJELAQAADAEASAwBAAANAQAjDQEAgA4BAKkOAQCwDgEAsQ4BAAAPAQAcDwEAJw8BACcPAQAwDwEARQ8BAHAPAQCBDwEAsA8BAMQPAQDgDwEA9g8BAAMQAQA3EAEAcRABAHIQAQB1EAEAdRABAIMQAQCvEAEA0BABAOgQAQADEQEAJhEBAEQRAQBEEQEARxEBAEcRAQBQEQEAchEBAHYRAQB2EQEAgxEBALIRAQDBEQEAxBEBANoRAQDaEQEA3BEBANwRAQAAEgEAERIBABMSAQArEgEAPxIBAEASAQCAEgEAhhIBAIgSAQCIEgEAihIBAI0SAQCPEgEAnRIBAJ8SAQCoEgEAsBIBAN4SAQAFEwEADBMBAA8TAQAQEwEAExMBACgTAQAqEwEAMBMBADITAQAzEwEANRMBADkTAQA9EwEAPRMBAFATAQBQEwEAXRMBAGETAQAAFAEANBQBAEcUAQBKFAEAXxQBAGEUAQCAFAEArxQBAMQUAQDFFAEAxxQBAMcUAQCAFQEArhUBANgVAQDbFQEAABYBAC8WAQBEFgEARBYBAIAWAQCqFgEAuBYBALgWAQAAFwEAGhcBAEAXAQBGFwEAABgBACsYAQD/GAEABhkBAAkZAQAJGQEADBkBABMZAQAVGQEAFhkBABgZAQAvGQEAPxkBAD8ZAQBBGQEAQRkBAKAZAQCnGQEAqhkBANAZAQDhGQEA4RkBAOMZAQDjGQEAABoBAAAaAQALGgEAMhoBADoaAQA6GgEAUBoBAFAaAQBcGgEAiRoBAJ0aAQCdGgEAsBoBAPgaAQAAHAEACBwBAAocAQAuHAEAQBwBAEAcAQByHAEAjxwBAAAdAQAGHQEACB0BAAkdAQALHQEAMB0BAEYdAQBGHQEAYB0BAGUdAQBnHQEAaB0BAGodAQCJHQEAmB0BAJgdAQDgHgEA8h4BAAIfAQACHwEABB8BABAfAQASHwEAMx8BALAfAQCwHwEAACABAJkjAQCAJAEAQyUBAJAvAQDwLwEAADABAC80AQBBNAEARjQBAABEAQBGRgEAAGgBADhqAQBAagEAXmoBAHBqAQC+agEA0GoBAO1qAQAAawEAL2sBAGNrAQB3awEAfWsBAI9rAQAAbwEASm8BAFBvAQBQbwEAAHABAPeHAQAAiAEA1YwBAACNAQAIjQEAALABACKxAQAysQEAMrEBAFCxAQBSsQEAVbEBAFWxAQBksQEAZ7EBAHCxAQD7sgEAALwBAGq8AQBwvAEAfLwBAIC8AQCIvAEAkLwBAJm8AQAK3wEACt8BAADhAQAs4QEATuEBAE7hAQCQ4gEAreIBAMDiAQDr4gEA0OQBAOrkAQDg5wEA5ucBAOjnAQDr5wEA7ecBAO7nAQDw5wEA/ucBAADoAQDE6AEAAO4BAAPuAQAF7gEAH+4BACHuAQAi7gEAJO4BACTuAQAn7gEAJ+4BACnuAQAy7gEANO4BADfuAQA57gEAOe4BADvuAQA77gEAQu4BAELuAQBH7gEAR+4BAEnuAQBJ7gEAS+4BAEvuAQBN7gEAT+4BAFHuAQBS7gEAVO4BAFTuAQBX7gEAV+4BAFnuAQBZ7gEAW+4BAFvuAQBd7gEAXe4BAF/uAQBf7gEAYe4BAGLuAQBk7gEAZO4BAGfuAQBq7gEAbO4BAHLuAQB07gEAd+4BAHnuAQB87gEAfu4BAH7uAQCA7gEAie4BAIvuAQCb7gEAoe4BAKPuAQCl7gEAqe4BAKvuAQC77gEAAAACAN+mAgAApwIAObcCAEC3AgAduAIAILgCAKHOAgCwzgIA4OsCAAD4AgAd+gIAAAADAEoTAwBQEwMAryMDALIAAACzAAAAuQAAALkAAAC8AAAAvgAAAPQJAAD5CQAAcgsAAHcLAADwCwAA8gsAAHgMAAB+DAAAWA0AAF4NAABwDQAAeA0AACoPAAAzDwAAaRMAAHwTAADwFwAA+RcAANoZAADaGQAAcCAAAHAgAAB0IAAAeSAAAIAgAACJIAAAUCEAAF8hAACJIQAAiSEAAGAkAACbJAAA6iQAAP8kAAB2JwAAkycAAP0sAAD9LAAAkjEAAJUxAAAgMgAAKTIAAEgyAABPMgAAUTIAAF8yAACAMgAAiTIAALEyAAC/MgAAMKgAADWoAAAHAQEAMwEBAHUBAQB4AQEAigEBAIsBAQDhAgEA+wIBACADAQAjAwEAWAgBAF8IAQB5CAEAfwgBAKcIAQCvCAEA+wgBAP8IAQAWCQEAGwkBALwJAQC9CQEAwAkBAM8JAQDSCQEA/wkBAEAKAQBICgEAfQoBAH4KAQCdCgEAnwoBAOsKAQDvCgEAWAsBAF8LAQB4CwEAfwsBAKkLAQCvCwEA+gwBAP8MAQBgDgEAfg4BAB0PAQAmDwEAUQ8BAFQPAQDFDwEAyw8BAFIQAQBlEAEA4REBAPQRAQA6FwEAOxcBAOoYAQDyGAEAWhwBAGwcAQDAHwEA1B8BAFtrAQBhawEAgG4BAJZuAQDA0gEA09IBAODSAQDz0gEAYNMBAHjTAQDH6AEAz+gBAHHsAQCr7AEArewBAK/sAQCx7AEAtOwBAAHtAQAt7QEAL+0BAD3tAQAA8QEADPEBACEAAAAjAAAAJQAAACcAAAAqAAAAKgAAACwAAAAsAAAALgAAAC8AAAA6AAAAOwAAAD8AAABAAAAAXAAAAFwAAAChAAAAoQAAAKcAAACnAAAAtgAAALcAAAC/AAAAvwAAAH4DAAB+AwAAhwMAAIcDAABaBQAAXwUAAIkFAACJBQAAwAUAAMAFAADDBQAAwwUAAMYFAADGBQAA8wUAAPQFAAAJBgAACgYAAAwGAAANBgAAGwYAABsGAAAdBgAAHwYAAGoGAABtBgAA1AYAANQGAAAABwAADQcAAPcHAAD5BwAAMAgAAD4IAABeCAAAXggAAGQJAABlCQAAcAkAAHAJAAD9CQAA/QkAAHYKAAB2CgAA8AoAAPAKAAB3DAAAdwwAAIQMAACEDAAA9A0AAPQNAABPDgAATw4AAFoOAABbDgAABA8AABIPAAAUDwAAFA8AAIUPAACFDwAA0A8AANQPAADZDwAA2g8AAEoQAABPEAAA+xAAAPsQAABgEwAAaBMAAG4WAABuFgAA6xYAAO0WAAA1FwAANhcAANQXAADWFwAA2BcAANoXAAAAGAAABRgAAAcYAAAKGAAARBkAAEUZAAAeGgAAHxoAAKAaAACmGgAAqBoAAK0aAABaGwAAYBsAAH0bAAB+GwAA/BsAAP8bAAA7HAAAPxwAAH4cAAB/HAAAwBwAAMccAADTHAAA0xwAABYgAAAXIAAAICAAACcgAAAwIAAAOCAAADsgAAA+IAAAQSAAAEMgAABHIAAAUSAAAFMgAABTIAAAVSAAAF4gAAD5LAAA/CwAAP4sAAD/LAAAcC0AAHAtAAAALgAAAS4AAAYuAAAILgAACy4AAAsuAAAOLgAAFi4AABguAAAZLgAAGy4AABsuAAAeLgAAHy4AACouAAAuLgAAMC4AADkuAAA8LgAAPy4AAEEuAABBLgAAQy4AAE8uAABSLgAAVC4AAAEwAAADMAAAPTAAAD0wAAD7MAAA+zAAAP6kAAD/pAAADaYAAA+mAABzpgAAc6YAAH6mAAB+pgAA8qYAAPemAAB0qAAAd6gAAM6oAADPqAAA+KgAAPqoAAD8qAAA/KgAAC6pAAAvqQAAX6kAAF+pAADBqQAAzakAAN6pAADfqQAAXKoAAF+qAADeqgAA36oAAPCqAADxqgAA66sAAOurAAAQ/gAAFv4AABn+AAAZ/gAAMP4AADD+AABF/gAARv4AAEn+AABM/gAAUP4AAFL+AABU/gAAV/4AAF/+AABh/gAAaP4AAGj+AABq/gAAa/4AAAH/AAAD/wAABf8AAAf/AAAK/wAACv8AAAz/AAAM/wAADv8AAA//AAAa/wAAG/8AAB//AAAg/wAAPP8AADz/AABh/wAAYf8AAGT/AABl/wAAAAEBAAIBAQCfAwEAnwMBANADAQDQAwEAbwUBAG8FAQBXCAEAVwgBAB8JAQAfCQEAPwkBAD8JAQBQCgEAWAoBAH8KAQB/CgEA8AoBAPYKAQA5CwEAPwsBAJkLAQCcCwEAVQ8BAFkPAQCGDwEAiQ8BAEcQAQBNEAEAuxABALwQAQC+EAEAwRABAEARAQBDEQEAdBEBAHURAQDFEQEAyBEBAM0RAQDNEQEA2xEBANsRAQDdEQEA3xEBADgSAQA9EgEAqRIBAKkSAQBLFAEATxQBAFoUAQBbFAEAXRQBAF0UAQDGFAEAxhQBAMEVAQDXFQEAQRYBAEMWAQBgFgEAbBYBALkWAQC5FgEAPBcBAD4XAQA7GAEAOxgBAEQZAQBGGQEA4hkBAOIZAQA/GgEARhoBAJoaAQCcGgEAnhoBAKIaAQAAGwEACRsBAEEcAQBFHAEAcBwBAHEcAQD3HgEA+B4BAEMfAQBPHwEA/x8BAP8fAQBwJAEAdCQBAPEvAQDyLwEAbmoBAG9qAQD1agEA9WoBADdrAQA7awEARGsBAERrAQCXbgEAmm4BAOJvAQDibwEAn7wBAJ+8AQCH2gEAi9oBAF7pAQBf6QEApgAAAKYAAACpAAAAqQAAAK4AAACuAAAAsAAAALAAAACCBAAAggQAAI0FAACOBQAADgYAAA8GAADeBgAA3gYAAOkGAADpBgAA/QYAAP4GAAD2BwAA9gcAAPoJAAD6CQAAcAsAAHALAADzCwAA+AsAAPoLAAD6CwAAfwwAAH8MAABPDQAATw0AAHkNAAB5DQAAAQ8AAAMPAAATDwAAEw8AABUPAAAXDwAAGg8AAB8PAAA0DwAANA8AADYPAAA2DwAAOA8AADgPAAC+DwAAxQ8AAMcPAADMDwAAzg8AAM8PAADVDwAA2A8AAJ4QAACfEAAAkBMAAJkTAABtFgAAbRYAAEAZAABAGQAA3hkAAP8ZAABhGwAAahsAAHQbAAB8GwAAACEAAAEhAAADIQAABiEAAAghAAAJIQAAFCEAABQhAAAWIQAAFyEAAB4hAAAjIQAAJSEAACUhAAAnIQAAJyEAACkhAAApIQAALiEAAC4hAAA6IQAAOyEAAEohAABKIQAATCEAAE0hAABPIQAATyEAAIohAACLIQAAlSEAAJkhAACcIQAAnyEAAKEhAACiIQAApCEAAKUhAACnIQAArSEAAK8hAADNIQAA0CEAANEhAADTIQAA0yEAANUhAADzIQAAACMAAAcjAAAMIwAAHyMAACIjAAAoIwAAKyMAAHsjAAB9IwAAmiMAALQjAADbIwAA4iMAACYkAABAJAAASiQAAJwkAADpJAAAACUAALYlAAC4JQAAwCUAAMIlAAD3JQAAACYAAG4mAABwJgAAZycAAJQnAAC/JwAAACgAAP8oAAAAKwAALysAAEUrAABGKwAATSsAAHMrAAB2KwAAlSsAAJcrAAD/KwAA5SwAAOosAABQLgAAUS4AAIAuAACZLgAAmy4AAPMuAAAALwAA1S8AAPAvAAD7LwAABDAAAAQwAAASMAAAEzAAACAwAAAgMAAANjAAADcwAAA+MAAAPzAAAJAxAACRMQAAljEAAJ8xAADAMQAA4zEAAAAyAAAeMgAAKjIAAEcyAABQMgAAUDIAAGAyAAB/MgAAijIAALAyAADAMgAA/zMAAMBNAAD/TQAAkKQAAMakAAAoqAAAK6gAADaoAAA3qAAAOagAADmoAAB3qgAAeaoAAED9AABP/QAAz/0AAM/9AAD9/QAA//0AAOT/AADk/wAA6P8AAOj/AADt/wAA7v8AAPz/AAD9/wAANwEBAD8BAQB5AQEAiQEBAIwBAQCOAQEAkAEBAJwBAQCgAQEAoAEBANABAQD8AQEAdwgBAHgIAQDICgEAyAoBAD8XAQA/FwEA1R8BANwfAQDhHwEA8R8BADxrAQA/awEARWsBAEVrAQCcvAEAnLwBAFDPAQDDzwEAANABAPXQAQAA0QEAJtEBACnRAQBk0QEAatEBAGzRAQCD0QEAhNEBAIzRAQCp0QEArtEBAOrRAQAA0gEAQdIBAEXSAQBF0gEAANMBAFbTAQAA2AEA/9kBADfaAQA62gEAbdoBAHTaAQB22gEAg9oBAIXaAQCG2gEAT+EBAE/hAQCs7AEArOwBAC7tAQAu7QEAAPABACvwAQAw8AEAk/ABAKDwAQCu8AEAsfABAL/wAQDB8AEAz/ABANHwAQD18AEADfEBAK3xAQDm8QEAAvIBABDyAQA78gEAQPIBAEjyAQBQ8gEAUfIBAGDyAQBl8gEAAPMBAPrzAQAA9AEA1/YBANz2AQDs9gEA8PYBAPz2AQAA9wEAdvcBAHv3AQDZ9wEA4PcBAOv3AQDw9wEA8PcBAAD4AQAL+AEAEPgBAEf4AQBQ+AEAWfgBAGD4AQCH+AEAkPgBAK34AQCw+AEAsfgBAAD5AQBT+gEAYPoBAG36AQBw+gEAfPoBAID6AQCI+gEAkPoBAL36AQC/+gEAxfoBAM76AQDb+gEA4PoBAOj6AQDw+gEA+PoBAAD7AQCS+wEAlPsBAMr7AQApIAAAKSAAAADgAAD/+AAAAAAPAP3/DwAAABAA/f8QACEAAAAjAAAAJQAAACoAAAAsAAAALwAAADoAAAA7AAAAPwAAAEAAAABbAAAAXQAAAF8AAABfAAAAewAAAHsAAAB9AAAAfQAAAKEAAAChAAAApwAAAKcAAACrAAAAqwAAALYAAAC3AAAAuwAAALsAAAC/AAAAvwAAAH4DAAB+AwAAhwMAAIcDAABaBQAAXwUAAIkFAACKBQAAvgUAAL4FAADABQAAwAUAAMMFAADDBQAAxgUAAMYFAADzBQAA9AUAAAkGAAAKBgAADAYAAA0GAAAbBgAAGwYAAB0GAAAfBgAAagYAAG0GAADUBgAA1AYAAAAHAAANBwAA9wcAAPkHAAAwCAAAPggAAF4IAABeCAAAZAkAAGUJAABwCQAAcAkAAP0JAAD9CQAAdgoAAHYKAADwCgAA8AoAAHcMAAB3DAAAhAwAAIQMAAD0DQAA9A0AAE8OAABPDgAAWg4AAFsOAAAEDwAAEg8AABQPAAAUDwAAOg8AAD0PAACFDwAAhQ8AANAPAADUDwAA2Q8AANoPAABKEAAATxAAAPsQAAD7EAAAYBMAAGgTAAAAFAAAABQAAG4WAABuFgAAmxYAAJwWAADrFgAA7RYAADUXAAA2FwAA1BcAANYXAADYFwAA2hcAAAAYAAAKGAAARBkAAEUZAAAeGgAAHxoAAKAaAACmGgAAqBoAAK0aAABaGwAAYBsAAH0bAAB+GwAA/BsAAP8bAAA7HAAAPxwAAH4cAAB/HAAAwBwAAMccAADTHAAA0xwAABAgAAAnIAAAMCAAAEMgAABFIAAAUSAAAFMgAABeIAAAfSAAAH4gAACNIAAAjiAAAAgjAAALIwAAKSMAACojAABoJwAAdScAAMUnAADGJwAA5icAAO8nAACDKQAAmCkAANgpAADbKQAA/CkAAP0pAAD5LAAA/CwAAP4sAAD/LAAAcC0AAHAtAAAALgAALi4AADAuAABPLgAAUi4AAF0uAAABMAAAAzAAAAgwAAARMAAAFDAAAB8wAAAwMAAAMDAAAD0wAAA9MAAAoDAAAKAwAAD7MAAA+zAAAP6kAAD/pAAADaYAAA+mAABzpgAAc6YAAH6mAAB+pgAA8qYAAPemAAB0qAAAd6gAAM6oAADPqAAA+KgAAPqoAAD8qAAA/KgAAC6pAAAvqQAAX6kAAF+pAADBqQAAzakAAN6pAADfqQAAXKoAAF+qAADeqgAA36oAAPCqAADxqgAA66sAAOurAAA+/QAAP/0AABD+AAAZ/gAAMP4AAFL+AABU/gAAYf4AAGP+AABj/gAAaP4AAGj+AABq/gAAa/4AAAH/AAAD/wAABf8AAAr/AAAM/wAAD/8AABr/AAAb/wAAH/8AACD/AAA7/wAAPf8AAD//AAA//wAAW/8AAFv/AABd/wAAXf8AAF//AABl/wAAAAEBAAIBAQCfAwEAnwMBANADAQDQAwEAbwUBAG8FAQBXCAEAVwgBAB8JAQAfCQEAPwkBAD8JAQBQCgEAWAoBAH8KAQB/CgEA8AoBAPYKAQA5CwEAPwsBAJkLAQCcCwEArQ4BAK0OAQBVDwEAWQ8BAIYPAQCJDwEARxABAE0QAQC7EAEAvBABAL4QAQDBEAEAQBEBAEMRAQB0EQEAdREBAMURAQDIEQEAzREBAM0RAQDbEQEA2xEBAN0RAQDfEQEAOBIBAD0SAQCpEgEAqRIBAEsUAQBPFAEAWhQBAFsUAQBdFAEAXRQBAMYUAQDGFAEAwRUBANcVAQBBFgEAQxYBAGAWAQBsFgEAuRYBALkWAQA8FwEAPhcBADsYAQA7GAEARBkBAEYZAQDiGQEA4hkBAD8aAQBGGgEAmhoBAJwaAQCeGgEAohoBAAAbAQAJGwEAQRwBAEUcAQBwHAEAcRwBAPceAQD4HgEAQx8BAE8fAQD/HwEA/x8BAHAkAQB0JAEA8S8BAPIvAQBuagEAb2oBAPVqAQD1agEAN2sBADtrAQBEawEARGsBAJduAQCabgEA4m8BAOJvAQCfvAEAn7wBAIfaAQCL2gEAXukBAF/pAQAgAAAAIAAAAKAAAACgAAAAgBYAAIAWAAAAIAAACiAAACggAAApIAAALyAAAC8gAABfIAAAXyAAAAAwAAAAMAAAIAAAACAAAACgAAAAoAAAAIAWAACAFgAAACAAAAogAAAvIAAALyAAAF8gAABfIAAAADAAAAAwAAADCQAAAwkAADsJAAA7CQAAPgkAAEAJAABJCQAATAkAAE4JAABPCQAAggkAAIMJAAC+CQAAwAkAAMcJAADICQAAywkAAMwJAADXCQAA1wkAAAMKAAADCgAAPgoAAEAKAACDCgAAgwoAAL4KAADACgAAyQoAAMkKAADLCgAAzAoAAAILAAADCwAAPgsAAD4LAABACwAAQAsAAEcLAABICwAASwsAAEwLAABXCwAAVwsAAL4LAAC/CwAAwQsAAMILAADGCwAAyAsAAMoLAADMCwAA1wsAANcLAAABDAAAAwwAAEEMAABEDAAAggwAAIMMAAC+DAAAvgwAAMAMAADEDAAAxwwAAMgMAADKDAAAywwAANUMAADWDAAA8wwAAPMMAAACDQAAAw0AAD4NAABADQAARg0AAEgNAABKDQAATA0AAFcNAABXDQAAgg0AAIMNAADPDQAA0Q0AANgNAADfDQAA8g0AAPMNAAA+DwAAPw8AAH8PAAB/DwAAKxAAACwQAAAxEAAAMRAAADgQAAA4EAAAOxAAADwQAABWEAAAVxAAAGIQAABkEAAAZxAAAG0QAACDEAAAhBAAAIcQAACMEAAAjxAAAI8QAACaEAAAnBAAABUXAAAVFwAANBcAADQXAAC2FwAAthcAAL4XAADFFwAAxxcAAMgXAAAjGQAAJhkAACkZAAArGQAAMBkAADEZAAAzGQAAOBkAABkaAAAaGgAAVRoAAFUaAABXGgAAVxoAAGEaAABhGgAAYxoAAGQaAABtGgAAchoAAAQbAAAEGwAANRsAADUbAAA7GwAAOxsAAD0bAABBGwAAQxsAAEQbAACCGwAAghsAAKEbAAChGwAAphsAAKcbAACqGwAAqhsAAOcbAADnGwAA6hsAAOwbAADuGwAA7hsAAPIbAADzGwAAJBwAACscAAA0HAAANRwAAOEcAADhHAAA9xwAAPccAAAuMAAALzAAACOoAAAkqAAAJ6gAACeoAACAqAAAgagAALSoAADDqAAAUqkAAFOpAACDqQAAg6kAALSpAAC1qQAAuqkAALupAAC+qQAAwKkAAC+qAAAwqgAAM6oAADSqAABNqgAATaoAAHuqAAB7qgAAfaoAAH2qAADrqgAA66oAAO6qAADvqgAA9aoAAPWqAADjqwAA5KsAAOarAADnqwAA6asAAOqrAADsqwAA7KsAAAAQAQAAEAEAAhABAAIQAQCCEAEAghABALAQAQCyEAEAtxABALgQAQAsEQEALBEBAEURAQBGEQEAghEBAIIRAQCzEQEAtREBAL8RAQDAEQEAzhEBAM4RAQAsEgEALhIBADISAQAzEgEANRIBADUSAQDgEgEA4hIBAAITAQADEwEAPhMBAD8TAQBBEwEARBMBAEcTAQBIEwEASxMBAE0TAQBXEwEAVxMBAGITAQBjEwEANRQBADcUAQBAFAEAQRQBAEUUAQBFFAEAsBQBALIUAQC5FAEAuRQBALsUAQC+FAEAwRQBAMEUAQCvFQEAsRUBALgVAQC7FQEAvhUBAL4VAQAwFgEAMhYBADsWAQA8FgEAPhYBAD4WAQCsFgEArBYBAK4WAQCvFgEAthYBALYWAQAgFwEAIRcBACYXAQAmFwEALBgBAC4YAQA4GAEAOBgBADAZAQA1GQEANxkBADgZAQA9GQEAPRkBAEAZAQBAGQEAQhkBAEIZAQDRGQEA0xkBANwZAQDfGQEA5BkBAOQZAQA5GgEAORoBAFcaAQBYGgEAlxoBAJcaAQAvHAEALxwBAD4cAQA+HAEAqRwBAKkcAQCxHAEAsRwBALQcAQC0HAEAih0BAI4dAQCTHQEAlB0BAJYdAQCWHQEA9R4BAPYeAQADHwEAAx8BADQfAQA1HwEAPh8BAD8fAQBBHwEAQR8BAFFvAQCHbwEA8G8BAPFvAQBl0QEAZtEBAG3RAQBy0QEAJAAAACQAAAArAAAAKwAAADwAAAA+AAAAXgAAAF4AAABgAAAAYAAAAHwAAAB8AAAAfgAAAH4AAACiAAAApgAAAKgAAACpAAAArAAAAKwAAACuAAAAsQAAALQAAAC0AAAAuAAAALgAAADXAAAA1wAAAPcAAAD3AAAAwgIAAMUCAADSAgAA3wIAAOUCAADrAgAA7QIAAO0CAADvAgAA/wIAAHUDAAB1AwAAhAMAAIUDAAD2AwAA9gMAAIIEAACCBAAAjQUAAI8FAAAGBgAACAYAAAsGAAALBgAADgYAAA8GAADeBgAA3gYAAOkGAADpBgAA/QYAAP4GAAD2BwAA9gcAAP4HAAD/BwAAiAgAAIgIAADyCQAA8wkAAPoJAAD7CQAA8QoAAPEKAABwCwAAcAsAAPMLAAD6CwAAfwwAAH8MAABPDQAATw0AAHkNAAB5DQAAPw4AAD8OAAABDwAAAw8AABMPAAATDwAAFQ8AABcPAAAaDwAAHw8AADQPAAA0DwAANg8AADYPAAA4DwAAOA8AAL4PAADFDwAAxw8AAMwPAADODwAAzw8AANUPAADYDwAAnhAAAJ8QAACQEwAAmRMAAG0WAABtFgAA2xcAANsXAABAGQAAQBkAAN4ZAAD/GQAAYRsAAGobAAB0GwAAfBsAAL0fAAC9HwAAvx8AAMEfAADNHwAAzx8AAN0fAADfHwAA7R8AAO8fAAD9HwAA/h8AAEQgAABEIAAAUiAAAFIgAAB6IAAAfCAAAIogAACMIAAAoCAAAMAgAAAAIQAAASEAAAMhAAAGIQAACCEAAAkhAAAUIQAAFCEAABYhAAAYIQAAHiEAACMhAAAlIQAAJSEAACchAAAnIQAAKSEAACkhAAAuIQAALiEAADohAAA7IQAAQCEAAEQhAABKIQAATSEAAE8hAABPIQAAiiEAAIshAACQIQAAByMAAAwjAAAoIwAAKyMAACYkAABAJAAASiQAAJwkAADpJAAAACUAAGcnAACUJwAAxCcAAMcnAADlJwAA8CcAAIIpAACZKQAA1ykAANwpAAD7KQAA/ikAAHMrAAB2KwAAlSsAAJcrAAD/KwAA5SwAAOosAABQLgAAUS4AAIAuAACZLgAAmy4AAPMuAAAALwAA1S8AAPAvAAD7LwAABDAAAAQwAAASMAAAEzAAACAwAAAgMAAANjAAADcwAAA+MAAAPzAAAJswAACcMAAAkDEAAJExAACWMQAAnzEAAMAxAADjMQAAADIAAB4yAAAqMgAARzIAAFAyAABQMgAAYDIAAH8yAACKMgAAsDIAAMAyAAD/MwAAwE0AAP9NAACQpAAAxqQAAACnAAAWpwAAIKcAACGnAACJpwAAiqcAACioAAArqAAANqgAADmoAAB3qgAAeaoAAFurAABbqwAAaqsAAGurAAAp+wAAKfsAALL7AADC+wAAQP0AAE/9AADP/QAAz/0AAPz9AAD//QAAYv4AAGL+AABk/gAAZv4AAGn+AABp/gAABP8AAAT/AAAL/wAAC/8AABz/AAAe/wAAPv8AAD7/AABA/wAAQP8AAFz/AABc/wAAXv8AAF7/AADg/wAA5v8AAOj/AADu/wAA/P8AAP3/AAA3AQEAPwEBAHkBAQCJAQEAjAEBAI4BAQCQAQEAnAEBAKABAQCgAQEA0AEBAPwBAQB3CAEAeAgBAMgKAQDICgEAPxcBAD8XAQDVHwEA8R8BADxrAQA/awEARWsBAEVrAQCcvAEAnLwBAFDPAQDDzwEAANABAPXQAQAA0QEAJtEBACnRAQBk0QEAatEBAGzRAQCD0QEAhNEBAIzRAQCp0QEArtEBAOrRAQAA0gEAQdIBAEXSAQBF0gEAANMBAFbTAQDB1gEAwdYBANvWAQDb1gEA+9YBAPvWAQAV1wEAFdcBADXXAQA11wEAT9cBAE/XAQBv1wEAb9cBAInXAQCJ1wEAqdcBAKnXAQDD1wEAw9cBAADYAQD/2QEAN9oBADraAQBt2gEAdNoBAHbaAQCD2gEAhdoBAIbaAQBP4QEAT+EBAP/iAQD/4gEArOwBAKzsAQCw7AEAsOwBAC7tAQAu7QEA8O4BAPHuAQAA8AEAK/ABADDwAQCT8AEAoPABAK7wAQCx8AEAv/ABAMHwAQDP8AEA0fABAPXwAQAN8QEArfEBAObxAQAC8gEAEPIBADvyAQBA8gEASPIBAFDyAQBR8gEAYPIBAGXyAQAA8wEA1/YBANz2AQDs9gEA8PYBAPz2AQAA9wEAdvcBAHv3AQDZ9wEA4PcBAOv3AQDw9wEA8PcBAAD4AQAL+AEAEPgBAEf4AQBQ+AEAWfgBAGD4AQCH+AEAkPgBAK34AQCw+AEAsfgBAAD5AQBT+gEAYPoBAG36AQBw+gEAfPoBAID6AQCI+gEAkPoBAL36AQC/+gEAxfoBAM76AQDb+gEA4PoBAOj6AQDw+gEA+PoBAAD7AQCS+wEAlPsBAMr7AQDFAQAAxQEAAMgBAADIAQAAywEAAMsBAADyAQAA8gEAAIgfAACPHwAAmB8AAJ8fAACoHwAArx8AALwfAAC8HwAAzB8AAMwfAAD8HwAA/B8AAHgDAAB5AwAAgAMAAIMDAACLAwAAiwMAAI0DAACNAwAAogMAAKIDAAAwBQAAMAUAAFcFAABYBQAAiwUAAIwFAACQBQAAkAUAAMgFAADPBQAA6wUAAO4FAAD1BQAA/wUAAA4HAAAOBwAASwcAAEwHAACyBwAAvwcAAPsHAAD8BwAALggAAC8IAAA/CAAAPwgAAFwIAABdCAAAXwgAAF8IAABrCAAAbwgAAI8IAACPCAAAkggAAJcIAACECQAAhAkAAI0JAACOCQAAkQkAAJIJAACpCQAAqQkAALEJAACxCQAAswkAALUJAAC6CQAAuwkAAMUJAADGCQAAyQkAAMoJAADPCQAA1gkAANgJAADbCQAA3gkAAN4JAADkCQAA5QkAAP8JAAAACgAABAoAAAQKAAALCgAADgoAABEKAAASCgAAKQoAACkKAAAxCgAAMQoAADQKAAA0CgAANwoAADcKAAA6CgAAOwoAAD0KAAA9CgAAQwoAAEYKAABJCgAASgoAAE4KAABQCgAAUgoAAFgKAABdCgAAXQoAAF8KAABlCgAAdwoAAIAKAACECgAAhAoAAI4KAACOCgAAkgoAAJIKAACpCgAAqQoAALEKAACxCgAAtAoAALQKAAC6CgAAuwoAAMYKAADGCgAAygoAAMoKAADOCgAAzwoAANEKAADfCgAA5AoAAOUKAADyCgAA+AoAAAALAAAACwAABAsAAAQLAAANCwAADgsAABELAAASCwAAKQsAACkLAAAxCwAAMQsAADQLAAA0CwAAOgsAADsLAABFCwAARgsAAEkLAABKCwAATgsAAFQLAABYCwAAWwsAAF4LAABeCwAAZAsAAGULAAB4CwAAgQsAAIQLAACECwAAiwsAAI0LAACRCwAAkQsAAJYLAACYCwAAmwsAAJsLAACdCwAAnQsAAKALAACiCwAApQsAAKcLAACrCwAArQsAALoLAAC9CwAAwwsAAMULAADJCwAAyQsAAM4LAADPCwAA0QsAANYLAADYCwAA5QsAAPsLAAD/CwAADQwAAA0MAAARDAAAEQwAACkMAAApDAAAOgwAADsMAABFDAAARQwAAEkMAABJDAAATgwAAFQMAABXDAAAVwwAAFsMAABcDAAAXgwAAF8MAABkDAAAZQwAAHAMAAB2DAAAjQwAAI0MAACRDAAAkQwAAKkMAACpDAAAtAwAALQMAAC6DAAAuwwAAMUMAADFDAAAyQwAAMkMAADODAAA1AwAANcMAADcDAAA3wwAAN8MAADkDAAA5QwAAPAMAADwDAAA9AwAAP8MAAANDQAADQ0AABENAAARDQAARQ0AAEUNAABJDQAASQ0AAFANAABTDQAAZA0AAGUNAACADQAAgA0AAIQNAACEDQAAlw0AAJkNAACyDQAAsg0AALwNAAC8DQAAvg0AAL8NAADHDQAAyQ0AAMsNAADODQAA1Q0AANUNAADXDQAA1w0AAOANAADlDQAA8A0AAPENAAD1DQAAAA4AADsOAAA+DgAAXA4AAIAOAACDDgAAgw4AAIUOAACFDgAAiw4AAIsOAACkDgAApA4AAKYOAACmDgAAvg4AAL8OAADFDgAAxQ4AAMcOAADHDgAAzw4AAM8OAADaDgAA2w4AAOAOAAD/DgAASA8AAEgPAABtDwAAcA8AAJgPAACYDwAAvQ8AAL0PAADNDwAAzQ8AANsPAAD/DwAAxhAAAMYQAADIEAAAzBAAAM4QAADPEAAASRIAAEkSAABOEgAATxIAAFcSAABXEgAAWRIAAFkSAABeEgAAXxIAAIkSAACJEgAAjhIAAI8SAACxEgAAsRIAALYSAAC3EgAAvxIAAL8SAADBEgAAwRIAAMYSAADHEgAA1xIAANcSAAAREwAAERMAABYTAAAXEwAAWxMAAFwTAAB9EwAAfxMAAJoTAACfEwAA9hMAAPcTAAD+EwAA/xMAAJ0WAACfFgAA+RYAAP8WAAAWFwAAHhcAADcXAAA/FwAAVBcAAF8XAABtFwAAbRcAAHEXAABxFwAAdBcAAH8XAADeFwAA3xcAAOoXAADvFwAA+hcAAP8XAAAaGAAAHxgAAHkYAAB/GAAAqxgAAK8YAAD2GAAA/xgAAB8ZAAAfGQAALBkAAC8ZAAA8GQAAPxkAAEEZAABDGQAAbhkAAG8ZAAB1GQAAfxkAAKwZAACvGQAAyhkAAM8ZAADbGQAA3RkAABwaAAAdGgAAXxoAAF8aAAB9GgAAfhoAAIoaAACPGgAAmhoAAJ8aAACuGgAArxoAAM8aAAD/GgAATRsAAE8bAAB/GwAAfxsAAPQbAAD7GwAAOBwAADocAABKHAAATBwAAIkcAACPHAAAuxwAALwcAADIHAAAzxwAAPscAAD/HAAAFh8AABcfAAAeHwAAHx8AAEYfAABHHwAATh8AAE8fAABYHwAAWB8AAFofAABaHwAAXB8AAFwfAABeHwAAXh8AAH4fAAB/HwAAtR8AALUfAADFHwAAxR8AANQfAADVHwAA3B8AANwfAADwHwAA8R8AAPUfAAD1HwAA/x8AAP8fAABlIAAAZSAAAHIgAABzIAAAjyAAAI8gAACdIAAAnyAAAMEgAADPIAAA8SAAAP8gAACMIQAAjyEAACckAAA/JAAASyQAAF8kAAB0KwAAdSsAAJYrAACWKwAA9CwAAPgsAAAmLQAAJi0AACgtAAAsLQAALi0AAC8tAABoLQAAbi0AAHEtAAB+LQAAly0AAJ8tAACnLQAApy0AAK8tAACvLQAAty0AALctAAC/LQAAvy0AAMctAADHLQAAzy0AAM8tAADXLQAA1y0AAN8tAADfLQAAXi4AAH8uAACaLgAAmi4AAPQuAAD/LgAA1i8AAO8vAAD8LwAA/y8AAEAwAABAMAAAlzAAAJgwAAAAMQAABDEAADAxAAAwMQAAjzEAAI8xAADkMQAA7zEAAB8yAAAfMgAAjaQAAI+kAADHpAAAz6QAACymAAA/pgAA+KYAAP+mAADLpwAAz6cAANKnAADSpwAA1KcAANSnAADapwAA8acAAC2oAAAvqAAAOqgAAD+oAAB4qAAAf6gAAMaoAADNqAAA2qgAAN+oAABUqQAAXqkAAH2pAAB/qQAAzqkAAM6pAADaqQAA3akAAP+pAAD/qQAAN6oAAD+qAABOqgAAT6oAAFqqAABbqgAAw6oAANqqAAD3qgAAAKsAAAerAAAIqwAAD6sAABCrAAAXqwAAH6sAACerAAAnqwAAL6sAAC+rAABsqwAAb6sAAO6rAADvqwAA+qsAAP+rAACk1wAAr9cAAMfXAADK1wAA/NcAAP/XAABu+gAAb/oAANr6AAD/+gAAB/sAABL7AAAY+wAAHPsAADf7AAA3+wAAPfsAAD37AAA/+wAAP/sAAEL7AABC+wAARfsAAEX7AADD+wAA0vsAAJD9AACR/QAAyP0AAM79AADQ/QAA7/0AABr+AAAf/gAAU/4AAFP+AABn/gAAZ/4AAGz+AABv/gAAdf4AAHX+AAD9/gAA/v4AAAD/AAAA/wAAv/8AAMH/AADI/wAAyf8AAND/AADR/wAA2P8AANn/AADd/wAA3/8AAOf/AADn/wAA7/8AAPj/AAD+/wAA//8AAAwAAQAMAAEAJwABACcAAQA7AAEAOwABAD4AAQA+AAEATgABAE8AAQBeAAEAfwABAPsAAQD/AAEAAwEBAAYBAQA0AQEANgEBAI8BAQCPAQEAnQEBAJ8BAQChAQEAzwEBAP4BAQB/AgEAnQIBAJ8CAQDRAgEA3wIBAPwCAQD/AgEAJAMBACwDAQBLAwEATwMBAHsDAQB/AwEAngMBAJ4DAQDEAwEAxwMBANYDAQD/AwEAngQBAJ8EAQCqBAEArwQBANQEAQDXBAEA/AQBAP8EAQAoBQEALwUBAGQFAQBuBQEAewUBAHsFAQCLBQEAiwUBAJMFAQCTBQEAlgUBAJYFAQCiBQEAogUBALIFAQCyBQEAugUBALoFAQC9BQEA/wUBADcHAQA/BwEAVgcBAF8HAQBoBwEAfwcBAIYHAQCGBwEAsQcBALEHAQC7BwEA/wcBAAYIAQAHCAEACQgBAAkIAQA2CAEANggBADkIAQA7CAEAPQgBAD4IAQBWCAEAVggBAJ8IAQCmCAEAsAgBAN8IAQDzCAEA8wgBAPYIAQD6CAEAHAkBAB4JAQA6CQEAPgkBAEAJAQB/CQEAuAkBALsJAQDQCQEA0QkBAAQKAQAECgEABwoBAAsKAQAUCgEAFAoBABgKAQAYCgEANgoBADcKAQA7CgEAPgoBAEkKAQBPCgEAWQoBAF8KAQCgCgEAvwoBAOcKAQDqCgEA9woBAP8KAQA2CwEAOAsBAFYLAQBXCwEAcwsBAHcLAQCSCwEAmAsBAJ0LAQCoCwEAsAsBAP8LAQBJDAEAfwwBALMMAQC/DAEA8wwBAPkMAQAoDQEALw0BADoNAQBfDgEAfw4BAH8OAQCqDgEAqg4BAK4OAQCvDgEAsg4BAPwOAQAoDwEALw8BAFoPAQBvDwEAig8BAK8PAQDMDwEA3w8BAPcPAQD/DwEAThABAFEQAQB2EAEAfhABAMMQAQDMEAEAzhABAM8QAQDpEAEA7xABAPoQAQD/EAEANREBADURAQBIEQEATxEBAHcRAQB/EQEA4BEBAOARAQD1EQEA/xEBABISAQASEgEAQhIBAH8SAQCHEgEAhxIBAIkSAQCJEgEAjhIBAI4SAQCeEgEAnhIBAKoSAQCvEgEA6xIBAO8SAQD6EgEA/xIBAAQTAQAEEwEADRMBAA4TAQAREwEAEhMBACkTAQApEwEAMRMBADETAQA0EwEANBMBADoTAQA6EwEARRMBAEYTAQBJEwEAShMBAE4TAQBPEwEAURMBAFYTAQBYEwEAXBMBAGQTAQBlEwEAbRMBAG8TAQB1EwEA/xMBAFwUAQBcFAEAYhQBAH8UAQDIFAEAzxQBANoUAQB/FQEAthUBALcVAQDeFQEA/xUBAEUWAQBPFgEAWhYBAF8WAQBtFgEAfxYBALoWAQC/FgEAyhYBAP8WAQAbFwEAHBcBACwXAQAvFwEARxcBAP8XAQA8GAEAnxgBAPMYAQD+GAEABxkBAAgZAQAKGQEACxkBABQZAQAUGQEAFxkBABcZAQA2GQEANhkBADkZAQA6GQEARxkBAE8ZAQBaGQEAnxkBAKgZAQCpGQEA2BkBANkZAQDlGQEA/xkBAEgaAQBPGgEAoxoBAK8aAQD5GgEA/xoBAAobAQD/GwEACRwBAAkcAQA3HAEANxwBAEYcAQBPHAEAbRwBAG8cAQCQHAEAkRwBAKgcAQCoHAEAtxwBAP8cAQAHHQEABx0BAAodAQAKHQEANx0BADkdAQA7HQEAOx0BAD4dAQA+HQEASB0BAE8dAQBaHQEAXx0BAGYdAQBmHQEAaR0BAGkdAQCPHQEAjx0BAJIdAQCSHQEAmR0BAJ8dAQCqHQEA3x4BAPkeAQD/HgEAER8BABEfAQA7HwEAPR8BAFofAQCvHwEAsR8BAL8fAQDyHwEA/h8BAJojAQD/IwEAbyQBAG8kAQB1JAEAfyQBAEQlAQCPLwEA8y8BAP8vAQBWNAEA/0MBAEdGAQD/ZwEAOWoBAD9qAQBfagEAX2oBAGpqAQBtagEAv2oBAL9qAQDKagEAz2oBAO5qAQDvagEA9moBAP9qAQBGawEAT2sBAFprAQBaawEAYmsBAGJrAQB4awEAfGsBAJBrAQA/bgEAm24BAP9uAQBLbwEATm8BAIhvAQCObwEAoG8BAN9vAQDlbwEA728BAPJvAQD/bwEA+IcBAP+HAQDWjAEA/4wBAAmNAQDvrwEA9K8BAPSvAQD8rwEA/K8BAP+vAQD/rwEAI7EBADGxAQAzsQEAT7EBAFOxAQBUsQEAVrEBAGOxAQBosQEAb7EBAPyyAQD/uwEAa7wBAG+8AQB9vAEAf7wBAIm8AQCPvAEAmrwBAJu8AQCkvAEA/84BAC7PAQAvzwEAR88BAE/PAQDEzwEA/88BAPbQAQD/0AEAJ9EBACjRAQDr0QEA/9EBAEbSAQC/0gEA1NIBAN/SAQD00gEA/9IBAFfTAQBf0wEAedMBAP/TAQBV1AEAVdQBAJ3UAQCd1AEAoNQBAKHUAQCj1AEApNQBAKfUAQCo1AEArdQBAK3UAQC61AEAutQBALzUAQC81AEAxNQBAMTUAQAG1QEABtUBAAvVAQAM1QEAFdUBABXVAQAd1QEAHdUBADrVAQA61QEAP9UBAD/VAQBF1QEARdUBAEfVAQBJ1QEAUdUBAFHVAQCm1gEAp9YBAMzXAQDN1wEAjNoBAJraAQCg2gEAoNoBALDaAQD/3gEAH98BACTfAQAr3wEA/98BAAfgAQAH4AEAGeABABrgAQAi4AEAIuABACXgAQAl4AEAK+ABAC/gAQBu4AEAjuABAJDgAQD/4AEALeEBAC/hAQA+4QEAP+EBAErhAQBN4QEAUOEBAI/iAQCv4gEAv+IBAPriAQD+4gEAAOMBAM/kAQD65AEA3+cBAOfnAQDn5wEA7OcBAOznAQDv5wEA7+cBAP/nAQD/5wEAxegBAMboAQDX6AEA/+gBAEzpAQBP6QEAWukBAF3pAQBg6QEAcOwBALXsAQAA7QEAPu0BAP/tAQAE7gEABO4BACDuAQAg7gEAI+4BACPuAQAl7gEAJu4BACjuAQAo7gEAM+4BADPuAQA47gEAOO4BADruAQA67gEAPO4BAEHuAQBD7gEARu4BAEjuAQBI7gEASu4BAEruAQBM7gEATO4BAFDuAQBQ7gEAU+4BAFPuAQBV7gEAVu4BAFjuAQBY7gEAWu4BAFruAQBc7gEAXO4BAF7uAQBe7gEAYO4BAGDuAQBj7gEAY+4BAGXuAQBm7gEAa+4BAGvuAQBz7gEAc+4BAHjuAQB47gEAfe4BAH3uAQB/7gEAf+4BAIruAQCK7gEAnO4BAKDuAQCk7gEApO4BAKruAQCq7gEAvO4BAO/uAQDy7gEA/+8BACzwAQAv8AEAlPABAJ/wAQCv8AEAsPABAMDwAQDA8AEA0PABANDwAQD28AEA//ABAK7xAQDl8QEAA/IBAA/yAQA88gEAP/IBAEnyAQBP8gEAUvIBAF/yAQBm8gEA//IBANj2AQDb9gEA7fYBAO/2AQD99gEA//YBAHf3AQB69wEA2vcBAN/3AQDs9wEA7/cBAPH3AQD/9wEADPgBAA/4AQBI+AEAT/gBAFr4AQBf+AEAiPgBAI/4AQCu+AEAr/gBALL4AQD/+AEAVPoBAF/6AQBu+gEAb/oBAH36AQB/+gEAifoBAI/6AQC++gEAvvoBAMb6AQDN+gEA3PoBAN/6AQDp+gEA7/oBAPn6AQD/+gEAk/sBAJP7AQDL+wEA7/sBAPr7AQD//wEA4KYCAP+mAgA6twIAP7cCAB64AgAfuAIAos4CAK/OAgDh6wIA//cCAB76AgD//wIASxMDAE8TAwCwIwMAAAAOAAIADgAfAA4AgAAOAP8ADgDwAQ4A//8OAP7/DwD//w8A/v8QAP//EABBAAAAWgAAAMAAAADWAAAA2AAAAN4AAAAAAQAAAAEAAAIBAAACAQAABAEAAAQBAAAGAQAABgEAAAgBAAAIAQAACgEAAAoBAAAMAQAADAEAAA4BAAAOAQAAEAEAABABAAASAQAAEgEAABQBAAAUAQAAFgEAABYBAAAYAQAAGAEAABoBAAAaAQAAHAEAABwBAAAeAQAAHgEAACABAAAgAQAAIgEAACIBAAAkAQAAJAEAACYBAAAmAQAAKAEAACgBAAAqAQAAKgEAACwBAAAsAQAALgEAAC4BAAAwAQAAMAEAADIBAAAyAQAANAEAADQBAAA2AQAANgEAADkBAAA5AQAAOwEAADsBAAA9AQAAPQEAAD8BAAA/AQAAQQEAAEEBAABDAQAAQwEAAEUBAABFAQAARwEAAEcBAABKAQAASgEAAEwBAABMAQAATgEAAE4BAABQAQAAUAEAAFIBAABSAQAAVAEAAFQBAABWAQAAVgEAAFgBAABYAQAAWgEAAFoBAABcAQAAXAEAAF4BAABeAQAAYAEAAGABAABiAQAAYgEAAGQBAABkAQAAZgEAAGYBAABoAQAAaAEAAGoBAABqAQAAbAEAAGwBAABuAQAAbgEAAHABAABwAQAAcgEAAHIBAAB0AQAAdAEAAHYBAAB2AQAAeAEAAHkBAAB7AQAAewEAAH0BAAB9AQAAgQEAAIIBAACEAQAAhAEAAIYBAACHAQAAiQEAAIsBAACOAQAAkQEAAJMBAACUAQAAlgEAAJgBAACcAQAAnQEAAJ8BAACgAQAAogEAAKIBAACkAQAApAEAAKYBAACnAQAAqQEAAKkBAACsAQAArAEAAK4BAACvAQAAsQEAALMBAAC1AQAAtQEAALcBAAC4AQAAvAEAALwBAADEAQAAxAEAAMcBAADHAQAAygEAAMoBAADNAQAAzQEAAM8BAADPAQAA0QEAANEBAADTAQAA0wEAANUBAADVAQAA1wEAANcBAADZAQAA2QEAANsBAADbAQAA3gEAAN4BAADgAQAA4AEAAOIBAADiAQAA5AEAAOQBAADmAQAA5gEAAOgBAADoAQAA6gEAAOoBAADsAQAA7AEAAO4BAADuAQAA8QEAAPEBAAD0AQAA9AEAAPYBAAD4AQAA+gEAAPoBAAD8AQAA/AEAAP4BAAD+AQAAAAIAAAACAAACAgAAAgIAAAQCAAAEAgAABgIAAAYCAAAIAgAACAIAAAoCAAAKAgAADAIAAAwCAAAOAgAADgIAABACAAAQAgAAEgIAABICAAAUAgAAFAIAABYCAAAWAgAAGAIAABgCAAAaAgAAGgIAABwCAAAcAgAAHgIAAB4CAAAgAgAAIAIAACICAAAiAgAAJAIAACQCAAAmAgAAJgIAACgCAAAoAgAAKgIAACoCAAAsAgAALAIAAC4CAAAuAgAAMAIAADACAAAyAgAAMgIAADoCAAA7AgAAPQIAAD4CAABBAgAAQQIAAEMCAABGAgAASAIAAEgCAABKAgAASgIAAEwCAABMAgAATgIAAE4CAABwAwAAcAMAAHIDAAByAwAAdgMAAHYDAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAACPAwAAkQMAAKEDAACjAwAAqwMAAM8DAADPAwAA0gMAANQDAADYAwAA2AMAANoDAADaAwAA3AMAANwDAADeAwAA3gMAAOADAADgAwAA4gMAAOIDAADkAwAA5AMAAOYDAADmAwAA6AMAAOgDAADqAwAA6gMAAOwDAADsAwAA7gMAAO4DAAD0AwAA9AMAAPcDAAD3AwAA+QMAAPoDAAD9AwAALwQAAGAEAABgBAAAYgQAAGIEAABkBAAAZAQAAGYEAABmBAAAaAQAAGgEAABqBAAAagQAAGwEAABsBAAAbgQAAG4EAABwBAAAcAQAAHIEAAByBAAAdAQAAHQEAAB2BAAAdgQAAHgEAAB4BAAAegQAAHoEAAB8BAAAfAQAAH4EAAB+BAAAgAQAAIAEAACKBAAAigQAAIwEAACMBAAAjgQAAI4EAACQBAAAkAQAAJIEAACSBAAAlAQAAJQEAACWBAAAlgQAAJgEAACYBAAAmgQAAJoEAACcBAAAnAQAAJ4EAACeBAAAoAQAAKAEAACiBAAAogQAAKQEAACkBAAApgQAAKYEAACoBAAAqAQAAKoEAACqBAAArAQAAKwEAACuBAAArgQAALAEAACwBAAAsgQAALIEAAC0BAAAtAQAALYEAAC2BAAAuAQAALgEAAC6BAAAugQAALwEAAC8BAAAvgQAAL4EAADABAAAwQQAAMMEAADDBAAAxQQAAMUEAADHBAAAxwQAAMkEAADJBAAAywQAAMsEAADNBAAAzQQAANAEAADQBAAA0gQAANIEAADUBAAA1AQAANYEAADWBAAA2AQAANgEAADaBAAA2gQAANwEAADcBAAA3gQAAN4EAADgBAAA4AQAAOIEAADiBAAA5AQAAOQEAADmBAAA5gQAAOgEAADoBAAA6gQAAOoEAADsBAAA7AQAAO4EAADuBAAA8AQAAPAEAADyBAAA8gQAAPQEAAD0BAAA9gQAAPYEAAD4BAAA+AQAAPoEAAD6BAAA/AQAAPwEAAD+BAAA/gQAAAAFAAAABQAAAgUAAAIFAAAEBQAABAUAAAYFAAAGBQAACAUAAAgFAAAKBQAACgUAAAwFAAAMBQAADgUAAA4FAAAQBQAAEAUAABIFAAASBQAAFAUAABQFAAAWBQAAFgUAABgFAAAYBQAAGgUAABoFAAAcBQAAHAUAAB4FAAAeBQAAIAUAACAFAAAiBQAAIgUAACQFAAAkBQAAJgUAACYFAAAoBQAAKAUAACoFAAAqBQAALAUAACwFAAAuBQAALgUAADEFAABWBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAAoBMAAPUTAACQHAAAuhwAAL0cAAC/HAAAAB4AAAAeAAACHgAAAh4AAAQeAAAEHgAABh4AAAYeAAAIHgAACB4AAAoeAAAKHgAADB4AAAweAAAOHgAADh4AABAeAAAQHgAAEh4AABIeAAAUHgAAFB4AABYeAAAWHgAAGB4AABgeAAAaHgAAGh4AABweAAAcHgAAHh4AAB4eAAAgHgAAIB4AACIeAAAiHgAAJB4AACQeAAAmHgAAJh4AACgeAAAoHgAAKh4AACoeAAAsHgAALB4AAC4eAAAuHgAAMB4AADAeAAAyHgAAMh4AADQeAAA0HgAANh4AADYeAAA4HgAAOB4AADoeAAA6HgAAPB4AADweAAA+HgAAPh4AAEAeAABAHgAAQh4AAEIeAABEHgAARB4AAEYeAABGHgAASB4AAEgeAABKHgAASh4AAEweAABMHgAATh4AAE4eAABQHgAAUB4AAFIeAABSHgAAVB4AAFQeAABWHgAAVh4AAFgeAABYHgAAWh4AAFoeAABcHgAAXB4AAF4eAABeHgAAYB4AAGAeAABiHgAAYh4AAGQeAABkHgAAZh4AAGYeAABoHgAAaB4AAGoeAABqHgAAbB4AAGweAABuHgAAbh4AAHAeAABwHgAAch4AAHIeAAB0HgAAdB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AALgfAAC7HwAAyB8AAMsfAADYHwAA2x8AAOgfAADsHwAA+B8AAPsfAAACIQAAAiEAAAchAAAHIQAACyEAAA0hAAAQIQAAEiEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAADAhAAAzIQAAPiEAAD8hAABFIQAARSEAAIMhAACDIQAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADQpwAA0KcAANanAADWpwAA2KcAANinAAD1pwAA9acAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQCgGAEAvxgBAEBuAQBfbgEAANQBABnUAQA01AEATdQBAGjUAQCB1AEAnNQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC11AEA0NQBAOnU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IwADAAAAEW4iAAcAAACgoyMABQAAACZuIgAHAAAAyKMjAAMAAAA6biIACQAAAOCjIwACAAAAR24iAAsAAADwoyMAAQAAAGBuIgALAAAA+KMjAAMAAACgbiIACwAAABCkIwAEAAAAk24iAAQAAAAwpCMAAgAAAK5uIgADAAAAQKQjAAIAAAC5biIABQAAAFCkIwACAAAAgGoiABYAAABgpCMABAAAANtuIgAFAAAAgKQjAAEAAADsbiIACAAAAIikIwABAAAAsmoiAA0AAACQpCMAAwAAADhrIgAKAAAAqKQjAAIAAAB6biIAEQAAALikIwABAAAAJW8iAAoAAADApCMAAQAAADlvIgALAAAAyKQjAAIAAABObyIACwAAANikIwABAAAAaG8iABEAAADgpCMAAQAAAIJvIgAKAAAA6KQjAAEAAACVbyIACgAAAPCkIwABAAAApG8iAAUAAAD4pCMADgAAALZvIgAFAAAAaKUjAAIAAADDbyIABwAAAHilIwACAAAAcGoiAAwAAACIpSMABQAAAORvIgAJAAAAsKUjAAEAAAD6byIACwAAALilIwABAAAAFnAiAAgAAADApSMAAQAAAEBwIgAKAAAAyKUjAAIAAAAtcCIADwAAANilIwADAAAAeHAiAAYAAADwpSMAAgAAAItwIgAFAAAAAKYjAAIAAACdcCIACQAAABCmIwACAAAAsnAiAAoAAAAgpiMAAgAAANxwIgAHAAAAMKYjAAEAAADqcCIABwAAADimIwABAAAA/XAiAAcAAABApiMAAgAAAMpwIgALAAAAUKYjAAMAAAAecSIABwAAAGimIwANAAAAMHEiAAcAAADQpiMAAQAAAEZxIgAMAAAA2KYjAAIAAABhcSIABwAAAOimIwABAAAAc3EiAAkAAADwpiMAAgAAAIlxIgAMAAAAAKcjAAEAAACkcSIABgAAAAinIwAEAAAAt3EiAAcAAAAopyMAAgAAAMJxIgAIAAAAOKcjAAMAAADXcSIABgAAAFCnIwACAAAALWwiAAgAAABgpyMABQAAAOtxIgAIAAAAiKcjAAIAAAD3cSIABQAAAJinIwACAAAADnIiAAUAAACopyMAEgAAACdyIgAGAAAAOKgjAAIAAAAbciIABgAAAEioIwAEAAAAO3IiAAYAAABoqCMADQAAAFtyIgAGAAAA0KgjAAEAAABrciIABAAAANioIwACAAAAdnIiAAcAAADoqCMABwAAAEtyIgAIAAAAIKkjAAMAAACNciIABwAAADipIwACAAAAo3IiAAQAAABIqSMAAQAAAKtyIgAIAAAAUKkjAAIAAAC+ciIAAwAAAGCpIwABAAAAyXIiAAgAAABoqSMACAAAAN9yIgAGAAAAqKkjAAIAAADpciIACwAAALipIwACAAAADnMiAAYAAADIqSMAAwAAABxzIgACAAAA4KkjAAIAAAAxcyIAEAAAAPCpIwABAAAAHwYAAB8GAABABgAAQAYAAADpAQBL6QEAUOkBAFnpAQBe6QEAX+kBAAAGAAAEBgAABgYAANwGAADeBgAA/wYAAFAHAAB/BwAAcAgAAI4IAACQCAAAkQgAAJgIAADhCAAA4wgAAP8IAABQ+wAAwvsAANP7AACP/QAAkv0AAMf9AADP/QAAz/0AAPD9AAD//QAAcP4AAHT+AAB2/gAA/P4AAOACAQD7AgEAYA4BAH4OAQD9DgEA/w4BAADuAQAD7gEABe4BAB/uAQAh7gEAIu4BACTuAQAk7gEAJ+4BACfuAQAp7gEAMu4BADTuAQA37gEAOe4BADnuAQA77gEAO+4BAELuAQBC7gEAR+4BAEfuAQBJ7gEASe4BAEvuAQBL7gEATe4BAE/uAQBR7gEAUu4BAFTuAQBU7gEAV+4BAFfuAQBZ7gEAWe4BAFvuAQBb7gEAXe4BAF3uAQBf7gEAX+4BAGHuAQBi7gEAZO4BAGTuAQBn7gEAau4BAGzuAQBy7gEAdO4BAHfuAQB57gEAfO4BAH7uAQB+7gEAgO4BAInuAQCL7gEAm+4BAKHuAQCj7gEApe4BAKnuAQCr7gEAu+4BAPDuAQDx7gEAUQkAAFIJAABkCQAAZQkAAIAJAACDCQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvAkAAMQJAADHCQAAyAkAAMsJAADOCQAA1wkAANcJAADcCQAA3QkAAN8JAADjCQAA5gkAAP4JAADQHAAA0BwAANIcAADSHAAA1RwAANYcAADYHAAA2BwAAOEcAADhHAAA6hwAAOocAADtHAAA7RwAAPIcAADyHAAA9RwAAPccAADxqAAA8agAAOoCAADrAgAAATAAAAMwAAAIMAAAETAAABMwAAAfMAAAKjAAAC0wAAAwMAAAMDAAADcwAAA3MAAA+zAAAPswAAAFMQAALzEAAKAxAAC/MQAARf4AAEb+AABh/wAAZf8AAAAaAAAbGgAAHhoAAB8aAADPqQAAz6kAADUXAAA2FwAAQBcAAFMXAADmCQAA7wkAAEAQAABJEAAAABEBADQRAQA2EQEARxEBAAAAAABAAAAAWwAAAGAAAAB7AAAAqQAAAKsAAAC5AAAAuwAAAL8AAADXAAAA1wAAAPcAAAD3AAAAuQIAAN8CAADlAgAA6QIAAOwCAAD/AgAAdAMAAHQDAAB+AwAAfgMAAIUDAACFAwAAhwMAAIcDAAAFBgAABQYAAN0GAADdBgAA4ggAAOIIAAA/DgAAPw4AANUPAADYDwAA6xYAAO0WAAAAIAAACyAAAA4gAAAuIAAAMCAAAGQgAABmIAAAcCAAAHQgAAB+IAAAgCAAAI4gAACgIAAAwCAAAAAhAAAlIQAAJyEAACkhAAAsIQAAMSEAADMhAABNIQAATyEAAF8hAACJIQAAiyEAAJAhAAAmJAAAQCQAAEokAABgJAAA/ycAAAApAABzKwAAdisAAJUrAACXKwAA/ysAAAAuAABCLgAARC4AAF0uAADwLwAA+y8AAAAwAAAAMAAABDAAAAQwAAASMAAAEjAAACAwAAAgMAAANjAAADYwAABIMgAAXzIAAH8yAAB/MgAAsTIAAL8yAADMMgAAzzIAAHEzAAB6MwAAgDMAAN8zAAD/MwAA/zMAAMBNAAD/TQAACKcAACGnAACIpwAAiqcAAFurAABbqwAAaqsAAGurAAAQ/gAAGf4AADD+AABE/gAAR/4AAFL+AABU/gAAZv4AAGj+AABr/gAA//4AAP/+AAAB/wAAIP8AADv/AABA/wAAW/8AAGD/AADg/wAA5v8AAOj/AADu/wAA+f8AAP3/AACQAQEAnAEBANABAQD8AQEAUM8BAMPPAQAA0AEA9dABAADRAQAm0QEAKdEBAGbRAQBq0QEAetEBAIPRAQCE0QEAjNEBAKnRAQCu0QEA6tEBAMDSAQDT0gEA4NIBAPPSAQAA0wEAVtMBAHLTAQB40wEAANQBAFTUAQBW1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQAe1QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAUtUBAKXWAQCo1gEAy9cBAM7XAQD/1wEAcewBALTsAQAB7QEAPe0BAADwAQAr8AEAMPABAJPwAQCg8AEArvABALHwAQC/8AEAwfABAM/wAQDR8AEA9fABAADxAQCt8QEA5vEBAP/xAQAB8gEAAvIBABDyAQA78gEAQPIBAEjyAQBg8gEAZfIBAADzAQDX9gEA3PYBAOz2AQDw9gEA/PYBAAD3AQB29wEAe/cBANn3AQDg9wEA6/cBAPD3AQDw9wEAAPgBAAv4AQAQ+AEAR/gBAFD4AQBZ+AEAYPgBAIf4AQCQ+AEArfgBALD4AQCx+AEAAPkBAFP6AQBg+gEAbfoBAHD6AQB8+gEAgPoBAIj6AQCQ+gEAvfoBAL/6AQDF+gEAzvoBANv6AQDg+gEA6PoBAPD6AQD4+gEAAPsBAJL7AQCU+wEAyvsBAPD7AQD5+wEAAQAOAAEADgAgAA4AfwAOAOIDAADvAwAAgCwAAPMsAAD5LAAA/ywAAOACAQD7AgEAAAEBAAIBAQAHAQEAMwEBADcBAQA/AQEAAAgBAAUIAQAICAEACAgBAAoIAQA1CAEANwgBADgIAQA8CAEAPAgBAD8IAQA/CAEAAAEBAAEBAQCQLwEA8i8BAAAEAAAvBQAAgBwAAIgcAAArHQAAKx0AAHgdAAB4HQAA+B0AAPgdAADgLQAA/y0AAEMuAABDLgAAQKYAAJ+mAAAu/gAAL/4AADDgAQBt4AEAj+ABAI/gAQAACQAAUgkAAFUJAAB/CQAA0BwAAPYcAAD4HAAA+RwAAPAgAADwIAAAMKgAADmoAADgqAAA/6gAAAAbAQAJGwEAZAkAAG8JAAAwqAAAOagAAAAYAQA7GAEAALwBAGq8AQBwvAEAfLwBAIC8AQCIvAEAkLwBAJm8AQCcvAEAo7wBAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAANAQAAD/EAAAkBwAALocAAC9HAAAvxwAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAIQEAACEBAAAhwQAAIcEAAAALAAAXywAAEMuAABDLgAAb6YAAG+mAAAA4AEABuABAAjgAQAY4AEAG+ABACHgAQAj4AEAJOABACbgAQAq4AEAUQkAAFIJAABkCQAAZQkAAOYLAADzCwAA0BwAANAcAADSHAAA0xwAAPIcAAD0HAAA+BwAAPkcAADwIAAA8CAAAAATAQADEwEABRMBAAwTAQAPEwEAEBMBABMTAQAoEwEAKhMBADATAQAyEwEAMxMBADUTAQA5EwEAOxMBAEQTAQBHEwEASBMBAEsTAQBNEwEAUBMBAFATAQBXEwEAVxMBAF0TAQBjEwEAZhMBAGwTAQBwEwEAdBMBANAfAQDRHwEA0x8BANMfAQBCAwAAQgMAAEUDAABFAwAAcAMAAHMDAAB1AwAAdwMAAHoDAAB9AwAAfwMAAH8DAACEAwAAhAMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAAChAwAAowMAAOEDAADwAwAA/wMAACYdAAAqHQAAXR0AAGEdAABmHQAAah0AAL8dAADBHQAAAB8AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAxB8AAMYfAADTHwAA1h8AANsfAADdHwAA7x8AAPIfAAD0HwAA9h8AAP4fAAAmIQAAJiEAAGWrAABlqwAAQAEBAI4BAQCgAQEAoAEBAADSAQBF0gEAUQkAAFIJAABkCQAAZQkAAIEKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvAoAAMUKAADHCgAAyQoAAMsKAADNCgAA0AoAANAKAADgCgAA4woAAOYKAADxCgAA+QoAAP8KAAAwqAAAOagAAGQJAABlCQAAYB0BAGUdAQBnHQEAaB0BAGodAQCOHQEAkB0BAJEdAQCTHQEAmB0BAKAdAQCpHQEAUQkAAFIJAABkCQAAZQkAAAEKAAADCgAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAGYKAAB2CgAAMKgAADmoAACALgAAmS4AAJsuAADzLgAAAC8AANUvAAABMAAAAzAAAAUwAAARMAAAEzAAAB8wAAAhMAAALTAAADAwAAAwMAAANzAAAD8wAAD7MAAA+zAAAJAxAACfMQAAwDEAAOMxAAAgMgAARzIAAIAyAACwMgAAwDIAAMsyAAD/MgAA/zIAAFgzAABwMwAAezMAAH8zAADgMwAA/jMAAAA0AAC/TQAAAE4AAP+fAAAApwAAB6cAAAD5AABt+gAAcPoAANn6AABF/gAARv4AAGH/AABl/wAA4m8BAONvAQDwbwEA8W8BAGDTAQBx0wEAUPIBAFHyAQAAAAIA36YCAACnAgA5twIAQLcCAB24AgAguAIAoc4CALDOAgDg6wIAAPgCAB36AgAAAAMAShMDAFATAwCvIwMAABEAAP8RAAABMAAAAzAAAAgwAAARMAAAEzAAAB8wAAAuMAAAMDAAADcwAAA3MAAA+zAAAPswAAAxMQAAjjEAAAAyAAAeMgAAYDIAAH4yAABgqQAAfKkAAACsAACj1wAAsNcAAMbXAADL1wAA+9cAAEX+AABG/gAAYf8AAGX/AACg/wAAvv8AAML/AADH/wAAyv8AAM//AADS/wAA1/8AANr/AADc/wAADAYAAAwGAAAbBgAAGwYAAB8GAAAfBgAAQAYAAEAGAADUBgAA1AYAAAANAQAnDQEAMA0BADkNAQAgFwAANhcAAAEwAAADMAAACDAAABEwAAATMAAAHzAAADAwAAA1MAAANzAAADcwAAA8MAAAPTAAAEEwAACWMAAAmTAAAKAwAAD7MAAA/DAAAEX+AABG/gAAYf8AAGX/AABw/wAAcP8AAJ7/AACf/wAAAbABAB+xAQAysQEAMrEBAFCxAQBSsQEAAPIBAADyAQAAAwAAQQMAAEMDAABEAwAARgMAAGIDAABTCQAAVAkAALAaAADOGgAAwh0AAPcdAAD5HQAA+R0AAPsdAAD/HQAADCAAAA0gAADQIAAA7yAAAAD+AAAP/gAAIP4AAC3+AAD9AQEA/QEBAADPAQAtzwEAMM8BAEbPAQBn0QEAadEBAHvRAQCC0QEAhdEBAIvRAQCq0QEArdEBAAABDgDvAQ4AgKkAAM2pAADPqQAA2akAAN6pAADfqQAAZgkAAG8JAAAwqAAAOagAAIAQAQDCEAEAzRABAM0QAQBRCQAAUgkAAGQJAABlCQAAgAwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAALwMAADEDAAAxgwAAMgMAADKDAAAzQwAANUMAADWDAAA3QwAAN4MAADgDAAA4wwAAOYMAADvDAAA8QwAAPMMAADQHAAA0BwAANIcAADSHAAA2hwAANocAADyHAAA8hwAAPQcAAD0HAAAMKgAADWoAAABMAAAAzAAAAgwAAARMAAAEzAAAB8wAAAwMAAANTAAADcwAAA3MAAAPDAAAD0wAACZMAAAnDAAAKAwAAD/MAAA8DEAAP8xAADQMgAA/jIAAAAzAABXMwAARf4AAEb+AABh/wAAn/8AAPCvAQDzrwEA9a8BAPuvAQD9rwEA/q8BAACwAQAAsAEAILEBACKxAQBVsQEAVbEBAGSxAQBnsQEAAKkAAC+pAADmCgAA7woAADCoAAA5qAAAABIBABESAQATEgEAQRIBAGQJAABlCQAAMKgAADmoAACwEgEA6hIBAPASAQD5EgEAQQAAAFoAAABhAAAAegAAAKoAAACqAAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAALgCAADgAgAA5AIAAGMDAABvAwAAhQQAAIYEAABRCQAAUgkAAPsQAAD7EAAAAB0AACUdAAAsHQAAXB0AAGIdAABlHQAAax0AAHcdAAB5HQAAvh0AAAAeAAD/HgAALyAAAC8gAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAADwIAAA8CAAACohAAArIQAAMiEAADIhAABOIQAATiEAAGAhAACIIQAAYCwAAH8sAAAApwAAB6cAACKnAACHpwAAi6cAAMqnAADQpwAA0acAANOnAADTpwAA1acAANmnAADypwAA/6cAAC6pAAAuqQAAMKsAAFqrAABcqwAAZKsAAGarAABpqwAAAPsAAAb7AAAh/wAAOv8AAEH/AABa/wAAgAcBAIUHAQCHBwEAsAcBALIHAQC6BwEAAN8BAB7fAQAl3wEAKt8BAGUJAABlCQAAABkAAB4ZAAAgGQAAKxkAADAZAAA7GQAAQBkAAEAZAABEGQAATxkAAAcBAQAzAQEAAAYBADYHAQBABwEAVQcBAGAHAQBnBwEAAAABAAsAAQANAAEAJgABACgAAQA6AAEAPAABAD0AAQA/AAEATQABAFAAAQBdAAEAgAABAPoAAQAAAQEAAgEBAAcBAQAzAQEANwEBAD8BAQBkCQAAbwkAADCoAAA5qAAAUBEBAHYRAQBRCQAAUgkAAGQJAABlCQAAAA0AAAwNAAAODQAAEA0AABINAABEDQAARg0AAEgNAABKDQAATw0AAFQNAABjDQAAZg0AAH8NAADaHAAA2hwAADCoAAAyqAAAQAYAAEAGAABACAAAWwgAAF4IAABeCAAAQAYAAEAGAADACgEA5goBAOsKAQD2CgEAZAkAAGUJAAAAHQEABh0BAAgdAQAJHQEACx0BADYdAQA6HQEAOh0BADwdAQA9HQEAPx0BAEcdAQBQHQEAWR0BADCoAAA5qAAAABYBAEQWAQBQFgEAWRYBAAAYAAAZGAAAIBgAAHgYAACAGAAAqhgAAC8gAAAvIAAAYBYBAGwWAQBmCgAAbwoAAIASAQCGEgEAiBIBAIgSAQCKEgEAjRIBAI8SAQCdEgEAnxIBAKkSAQAAEAAAnxAAAC6pAAAuqQAA4KkAAP6pAABgqgAAf6oAAGQJAABlCQAA5gwAAO8MAADpHAAA6RwAAPIcAADyHAAA+hwAAPocAAAwqAAANagAAKAZAQCnGQEAqhkBANcZAQDaGQEA5BkBAAwGAAAMBgAAGwYAABsGAAAfBgAAHwYAAMAHAAD6BwAA/QcAAP8HAAA+/QAAP/0AAIMEAACDBAAAUAMBAHoDAQBABgAAQAYAAPIKAQDyCgEAcA8BAIkPAQBRCQAAUgkAAGQJAABlCQAAAQsAAAMLAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA8CwAARAsAAEcLAABICwAASwsAAE0LAABVCwAAVwsAAFwLAABdCwAAXwsAAGMLAABmCwAAdwsAANocAADaHAAA8hwAAPIcAAACGAAAAxgAAAUYAAAFGAAAQKgAAHeoAABABgAAQAYAAIALAQCRCwEAmQsBAJwLAQCpCwEArwsBAFEJAABRCQAA1xwAANccAADZHAAA2RwAANwcAADdHAAA4BwAAOAcAACAEQEA3xEBAGQJAABlCQAAgQ0AAIMNAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAyg0AAMoNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADmDQAA7w0AAPINAAD0DQAA4REBAPQRAQBABgAAQAYAADAPAQBZDwEAZAkAAGUJAADmCQAA7wkAAACo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AADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AAIAfAACvHwAAsh8AALQfAAC3HwAAvB8AAMIfAADEHwAAxx8AAMwfAADYHwAA2x8AAOgfAADsHwAA8h8AAPQfAAD3HwAA/B8AACYhAAAmIQAAKiEAACshAAAyIQAAMiEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAA0KcAANCnAADWpwAA1qcAANin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AAA0HgAANh4AADYeAAA4HgAAOB4AADoeAAA6HgAAPB4AADweAAA+HgAAPh4AAEAeAABAHgAAQh4AAEIeAABEHgAARB4AAEYeAABGHgAASB4AAEgeAABKHgAASh4AAEweAABMHgAATh4AAE4eAABQHgAAUB4AAFIeAABSHgAAVB4AAFQeAABWHgAAVh4AAFgeAABYHgAAWh4AAFoeAABcHgAAXB4AAF4eAABeHgAAYB4AAGAeAABiHgAAYh4AAGQeAABkHgAAZh4AAGYeAABoHgAAaB4AAGoeAABqHgAAbB4AAGweAABuHgAAbh4AAHAeAABwHgAAch4AAHIeAAB0HgAAdB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AAIgfAACPHwAAmB8AAJ8fAACoHwAArx8AALgfAAC8HwAAyB8AAMwfAADYHwAA2x8AAOgfAADsHwAA+B8AAPwfAAAmIQAAJiEAACohAAArIQAAMiEAADIhAABgIQAAbyEAAIMhAACDIQAAtiQAAM8kAAAALAAALywAAGAsAABgLAAAYiwAAGQsAABnLAAAZywAAGksAABpLAAAaywAAGssAABtLAAAcCwAAHIsAAByLAAAdSwAAHUsAAB+LAAAgCwAAIIsAACCLAAAhCwAAIQsAACGLAAAhiwAAIgsAACILAAAiiwAAIosAACMLAAAjCwAAI4sAACOLAAAkCwAAJAsAACSLAAAkiwAAJQsAACULAAAliwAAJYsAACYLAAAmCwAAJosAACaLAAAnCwAAJwsAACeLAAAniwAAKAsAACgLAAAoiwAAKIsAACkLAAApCwAAKYsAACmLAAAqCwAAKgsAACqLAAAqiwAAKwsAACsLAAAriwAAK4sAACwLAAAsCwAALIsAACyLAAAtCwAALQsAAC2LAAAtiwAALgsAAC4LAAAuiwAALosAAC8LAAAvCwAAL4sAAC+LAAAwCwAAMAsAADCLAAAwiwAAMQsAADELAAAxiwAAMYsAADILAAAyCwAAMosAADKLAAAzCwAAMwsAADOLAAAziwAANAsAADQLAAA0iwAANIsAADULAAA1CwAANYsAADWLAAA2CwAANgsAADaLAAA2iwAANwsAADcLAAA3iwAAN4sAADgLAAA4CwAAOIsAADiLAAA6ywAAOssAADtLAAA7SwAAPIsAADyLAAAQKYAAECmAABCpgAAQqYAAESmAABEpgAARqYAAEamAABIpgAASKYAAEqmAABKpgAATKYAAEymAABOpgAATqYAAFCmAABQpgAAUqYAAFKmAABUpgAAVKYAAFamAABWpgAAWKYAAFimAABapgAAWqYAAFymAABcpgAAXqYAAF6mAABgpgAAYKYAAGKmAABipgAAZKYAAGSmAABmpgAAZqYAAGimAABopgAAaqYAAGqmAABspgAAbKYAAICmAACApgAAgqYAAIKmAACEpgAAhKYAAIamAACGpgAAiKYAAIimAACKpgAAiqYAAIymAACMpgAAjqYAAI6mAACQpgAAkKYAAJKmAACSpgAAlKYAAJSmAACWpgAAlqYAAJimAACYpgAAmqYAAJqmAAAipwAAIqcAACSnAAAkpwAAJqcAACanAAAopwAAKKcAACqnAAAqpwAALKcAACynAAAupwAALqcAADKnAAAypwAANKcAADSnAAA2pwAANqcAADinAAA4pwAAOqcAADqnAAA8pwAAPKcAAD6nAAA+pwAAQKcAAECnAABCpwAAQqcAAESnAABEpwAARqcAAEanAABIpwAASKcAAEqnAABKpwAATKcAAEynAABOpwAATqcAAFCnAABQpwAAUqcAAFKnAABUpwAAVKcAAFanAABWpwAAWKcAAFinAABapwAAWqcAAFynAABcpwAAXqcAAF6nAABgpwAAYKcAAGKnAABipwAAZKcAAGSnAABmpwAAZqcAAGinAABopwAAaqcAAGqnAABspwAAbKcAAG6nAABupwAAeacAAHmnAAB7pwAAe6cAAH2nAAB+pwAAgKcAAICnAACCpwAAgqcAAISnAACEpwAAhqcAAIanAACLpwAAi6cAAI2nAACNpwAAkKcAAJCnAACSpwAAkqcAAJanAACWpwAAmKcAAJinAACapwAAmqcAAJynAACcpwAAnqcAAJ6nAACgpwAAoKcAAKKnAACipwAApKcAAKSnAACmpwAApqcAAKinAACopwAAqqcAAK6nAACwpwAAtKcAALanAAC2pwAAuKcAALinAAC6pwAAuqcAALynAAC8pwAAvqcAAL6nAADApwAAwKcAAMKnAADCpwAAxKcAAMenAADJpwAAyacAANCnAADQpwAA1qcAANanAADYpwAA2KcAAPWnAAD1pwAAIf8AADr/AAAABAEAJwQBALAEAQDTBAEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCADAEAsgwBAKAYAQC/GAEAQG4BAF9uAQAA6QEAIekBAGEAAAB6AAAAtQAAALUAAADfAAAA9gAAAPgAAAD/AAAAAQEAAAEBAAADAQAAAwEAAAUBAAAFAQAABwEAAAcBAAAJAQAACQEAAAsBAAALAQAADQEAAA0BAAAPAQAADwEAABEBAAARAQAAEwEAABMBAAAVAQAAFQEAABcBAAAXAQAAGQEAABkBAAAbAQAAGwEAAB0BAAAdAQAAHwEAAB8BAAAhAQAAIQEAACMBAAAjAQAAJQEAACUBAAAnAQAAJwEAACkBAAApAQAAKwEAACsBAAAtAQAALQEAAC8BAAAvAQAAMQEAADEBAAAzAQAAMwEAADUBAAA1AQAANwEAADcBAAA6AQAAOgEAADwBAAA8AQAAPgEAAD4BAABAAQAAQAEAAEIBAABCAQAARAEAAEQBAABGAQAARgEAAEgBAABJAQAASwEAAEsBAABNAQAATQEAAE8BAABPAQAAUQEAAFEBAABTAQAAUwEAAFUBAABVAQAAVwEAAFcBAABZAQAAWQEAAFsBAABbAQAAXQEAAF0BAABfAQAAXwEAAGEBAABhAQAAYwEAAGMBAABlAQAAZQEAAGcBAABnAQAAaQEAAGkBAABrAQAAawEAAG0BAABtAQAAbwEAAG8BAABxAQAAcQEAAHMBAABzAQAAdQEAAHUBAAB3AQAAdwEAAHoBAAB6AQAAfAEAAHwBAAB+AQAAgAEAAIMBAACDAQAAhQEAAIUBAACIAQAAiAEAAIwBAACMAQAAkgEAAJIBAACVAQAAlQEAAJkBAACaAQAAngEAAJ4BAAChAQAAoQEAAKMBAACjAQAApQEAAKUBAACoAQAAqAEAAK0BAACtAQAAsAEAALABAAC0AQAAtAEAALYBAAC2AQAAuQEAALkBAAC9AQAAvQEAAL8BAAC/AQAAxAEAAMQBAADGAQAAxwEAAMkBAADKAQAAzAEAAMwBAADOAQAAzgEAANABAADQAQAA0gEAANIBAADUAQAA1AEAANYBAADWAQAA2AEAANgBAADaAQAA2gEAANwBAADdAQAA3wEAAN8BAADhAQAA4QEAAOMBAADjAQAA5QEAAOUBAADnAQAA5wEAAOkBAADpAQAA6wEAAOsBAADtAQAA7QEAAO8BAADxAQAA8wEAAPMBAAD1AQAA9QEAAPkBAAD5AQAA+wEAAPsBAAD9AQAA/QEAAP8BAAD/AQAAAQIAAAECAAADAgAAAwIAAAUCAAAFAgAABwIAAAcCAAAJAgAACQIAAAsCAAALAgAADQIAAA0CAAAPAgAADwIAABECAAARAgAAEwIAABMCAAAVAgAAFQIAABcCAAAXAgAAGQIAABkCAAAbAgAAGwIAAB0CAAAdAgAAHwIAAB8CAAAjAgAAIwIAACUCAAAlAgAAJwIAACcCAAApAgAAKQIAACsCAAArAgAALQIAAC0CAAAvAgAALwIAADECAAAxAgAAMwIAADMCAAA8AgAAPAIAAD8CAABAAgAAQgIAAEICAABHAgAARwIAAEkCAABJAgAASwIAAEsCAABNAgAATQIAAE8CAABUAgAAVgIAAFcCAABZAgAAWQIAAFsCAABcAgAAYAIAAGECAABjAgAAYwIAAGUCAABmAgAAaAIAAGwCAABvAgAAbwIAAHECAAByAgAAdQIAAHUCAAB9AgAAfQIAAIACAACAAgAAggIAAIMCAACHAgAAjAIAAJICAACSAgAAnQIAAJ4CAABFAwAARQMAAHEDAABxAwAAcwMAAHMDAAB3AwAAdwMAAHsDAAB9AwAAkAMAAJADAACsAwAAzgMAANADAADRAwAA1QMAANcDAADZAwAA2QMAANsDAADbAwAA3QMAAN0DAADfAwAA3wMAAOEDAADhAwAA4wMAAOMDAADlAwAA5QMAAOcDAADnAwAA6QMAAOkDAADrAwAA6wMAAO0DAADtAwAA7wMAAPMDAAD1AwAA9QMAAPgDAAD4AwAA+wMAAPsDAAAwBAAAXwQAAGEEAABhBAAAYwQAAGMEAABlBAAAZQQAAGcEAABnBAAAaQQAAGkEAABrBAAAawQAAG0EAABtBAAAbwQAAG8EAABxBAAAcQQAAHMEAABzBAAAdQQAAHUEAAB3BAAAdwQAAHkEAAB5BAAAewQAAHsEAAB9BAAAfQQAAH8EAAB/BAAAgQQAAIEEAACLBAAAiwQAAI0EAACNBAAAjwQAAI8EAACRBAAAkQQAAJMEAACTBAAAlQQAAJUEAACXBAAAlwQAAJkEAACZBAAAmwQAAJsEAACdBAAAnQQAAJ8EAACfBAAAoQQAAKEEAACjBAAAowQAAKUEAAClBAAApwQAAKcEAACpBAAAqQQAAKsEAACrBAAArQQAAK0EAACvBAAArwQAALEEAACxBAAAswQAALMEAAC1BAAAtQQAALcEAAC3BAAAuQQAALkEAAC7BAAAuwQAAL0EAAC9BAAAvwQAAL8EAADCBAAAwgQAAMQEAADEBAAAxgQAAMYEAADIBAAAyAQAAMoEAADKBAAAzAQAAMwEAADOBAAAzwQAANEEAADRBAAA0wQAANMEAADVBAAA1QQAANcEAADXBAAA2QQAANkEAADbBAAA2wQAAN0EAADdBAAA3wQAAN8EAADhBAAA4QQAAOMEAADjBAAA5QQAAOUEAADnBAAA5wQAAOkEAADpBAAA6wQAAOsEAADtBAAA7QQAAO8EAADvBAAA8QQAAPEEAADzBAAA8wQAAPUEAAD1BAAA9wQAAPcEAAD5BAAA+QQAAPsEAAD7BAAA/QQAAP0EAAD/BAAA/wQAAAEFAAABBQAAAwUAAAMFAAAFBQAABQUAAAcFAAAHBQAACQUAAAkFAAALBQAACwUAAA0FAAANBQAADwUAAA8FAAARBQAAEQUAABMFAAATBQAAFQUAABUFAAAXBQAAFwUAABkFAAAZBQAAGwUAABsFAAAdBQAAHQUAAB8FAAAfBQAAIQUAACEFAAAjBQAAIwUAACUFAAAlBQAAJwUAACcFAAApBQAAKQUAACsFAAArBQAALQUAAC0FAAAvBQAALwUAAGEFAACHBQAA+BMAAP0TAACAHAAAiBwAAHkdAAB5HQAAfR0AAH0dAACOHQAAjh0AAAEeAAABHgAAAx4AAAMeAAAFHgAABR4AAAceAAAHHgAACR4AAAkeAAALHgAACx4AAA0eAAANHgAADx4AAA8eAAARHgAAER4AABMeAAATHgAAFR4AABUeAAAXHgAAFx4AABkeAAAZHgAAGx4AABseAAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAmx4AAKEeAAChHgAAox4AAKMeAAClHgAApR4AAKceAACnHgAAqR4AAKkeAACrHgAAqx4AAK0eAACtHgAArx4AAK8eAACxHgAAsR4AALMeAACzHgAAtR4AALUeAAC3HgAAtx4AALkeAAC5HgAAux4AALseAAC9HgAAvR4AAL8eAAC/HgAAwR4AAMEeAADDHgAAwx4AAMUeAADFHgAAxx4AAMceAADJHgAAyR4AAMseAADLHgAAzR4AAM0eAADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AAIcfAACQHwAAlx8AAKAfAACnHwAAsB8AALQfAAC2HwAAtx8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHMsAABzLAAAdiwAAHYsAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADjLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJumAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAL6cAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAABvpwAAeqcAAHqnAAB8pwAAfKcAAH+nAAB/pwAAgacAAIGnAACDpwAAg6cAAIWnAACFpwAAh6cAAIenAACMpwAAjKcAAJGnAACRpwAAk6cAAJSnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWn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AAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAmx4AAKEeAAChHgAAox4AAKMeAAClHgAApR4AAKceAACnHgAAqR4AAKkeAACrHgAAqx4AAK0eAACtHgAArx4AAK8eAACxHgAAsR4AALMeAACzHgAAtR4AALUeAAC3HgAAtx4AALkeAAC5HgAAux4AALseAAC9HgAAvR4AAL8eAAC/HgAAwR4AAMEeAADDHgAAwx4AAMUeAADFHgAAxx4AAMceAADJHgAAyR4AAMseAADLHgAAzR4AAM0eAADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AALQfAAC2HwAAtx8AALwfAAC8HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAAzB8AAMwfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAA/B8AAPwfAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHMsAABzLAAAdiwAAHYsAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADjLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJumAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAL6cAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAABvpwAAeqcAAHqnAAB8pwAAfKcAAH+nAAB/pwAAgacAAIGnAACDpwAAg6cAAIWnAACFpwAAh6cAAIenAACMpwAAjKcAAJGnAACRpwAAk6cAAJSnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADBpwAAw6cAAMOnAADIpwAAyKcAAMqnAADKpwAA0acAANGnAADXpwAA16cAANmnAADZpwAA9qcAAPanAABTqwAAU6sAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAAEH/AABa/wAAKAQBAE8EAQDYBAEA+wQBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAwAwBAPIMAQDAGAEA3xgBAGBuAQB/bgEAIukBAEPpAQAtAAAALQAAAIoFAACKBQAAvgUAAL4FAAAAFAAAABQAAAYYAAAGGAAAECAAABUgAABTIAAAUyAAAHsgAAB7IAAAiyAAAIsgAAASIgAAEiIAABcuAAAXLgAAGi4AABouAAA6LgAAOy4AAEAuAABALgAAXS4AAF0uAAAcMAAAHDAAADAw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AABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAnR4AAJ8eAACfHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAohAAAKIQAADiEAAA8hAAATIQAAEyEAAC8hAAAvIQAANCEAADQhAAA5IQAAOSEAADwhAAA9IQAARiEAAEkhAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAfSwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAnaYAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAHinAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAjqcAAI6nAACRpwAAkacAAJOnAACVpwAAl6cAAJenAACZpwAAmacAAJunAACbpwAAnacAAJ2nAACfpwAAn6cAAKGnAAChpwAAo6cAAKOnAAClpwAApacAAKenAACnpwAAqacAAKmnAACvpwAAr6cAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADBpwAAw6cAAMOnAADIpwAAyKcAAMqnAADKpwAA0acAANGnAADTpwAA06cAANWnAADVpwAA16cAANenAADZpwAA2acAAPKnAAD0pwAA9qcAAPanAAD4pwAA+qcAADCrAABaqwAAXKsAAGmrAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AABB/wAAWv8AACgEAQBPBAEA2AQBAPsEAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAIAHAQCABwEAgwcBAIUHAQCHBwEAsAcBALIHAQC6BwEAwAwBAPIMAQDAGAEA3xgBAGBuAQB/bgEAGtQBADPUAQBO1AEAVNQBAFbUAQBn1AEAgtQBAJvUAQC21AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEAz9QBAOrUAQAD1QEAHtUBADfVAQBS1QEAa9UBAIbVAQCf1QEAutUBANPVAQDu1QEAB9YBACLWAQA71gEAVtYBAG/WAQCK1gEApdYBAMLWAQDa1gEA3NYBAOHWAQD81gEAFNcBABbXAQAb1wEANtcBAE7XAQBQ1wEAVdcBAHDX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AABgHgAAYB4AAGIeAABiHgAAZB4AAGQeAABmHgAAZh4AAGgeAABoHgAAah4AAGoeAABsHgAAbB4AAG4eAABuHgAAcB4AAHAeAAByHgAAch4AAHQeAAB0HgAAdh4AAHYeAAB4HgAAeB4AAHoeAAB6HgAAfB4AAHweAAB+HgAAfh4AAIAeAACAHgAAgh4AAIIeAACEHgAAhB4AAIYeAACGHgAAiB4AAIgeAACKHgAAih4AAIweAACMHgAAjh4AAI4eAACQHgAAkB4AAJIeAACSHgAAlB4AAJQeAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAuB8AALsfAADIHwAAyx8AANgfAADbHwAA6B8AAOwfAAD4HwAA+x8AAAIhAAACIQAAByEAAAchAAALIQAADSEAABAhAAASIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAAMCEAADMhAAA+IQAAPyEAAEUhAABFIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEin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AAD3AwAAgQQAAIoEAAAvBQAAMQUAAFYFAABZBQAAWQUAAGAFAACIBQAA0AUAAOoFAADvBQAA8gUAACAGAABKBgAAbgYAAG8GAABxBgAA0wYAANUGAADVBgAA5QYAAOYGAADuBgAA7wYAAPoGAAD8BgAA/wYAAP8GAAAQBwAAEAcAABIHAAAvBwAATQcAAKUHAACxBwAAsQcAAMoHAADqBwAA9AcAAPUHAAD6BwAA+gcAAAAIAAAVCAAAGggAABoIAAAkCAAAJAgAACgIAAAoCAAAQAgAAFgIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACgCAAAyQgAAAQJAAA5CQAAPQkAAD0JAABQCQAAUAkAAFgJAABhCQAAcQkAAIAJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAPAJAADxCQAA/AkAAPwJAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAFkKAABcCgAAXgoAAF4KAAByCgAAdAoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAAC9CgAA0AoAANAKAADgCgAA4QoAAPkKAAD5CgAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAD0LAABcCwAAXQsAAF8LAABhCwAAcQsAAHELAACDCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAANALAADQCwAABQwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA9DAAAPQwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAIAMAACADAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAAL0MAAC9DAAA3QwAAN4MAADgDAAA4QwAAPEMAADyDAAABA0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAABODQAATg0AAFQN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AQCF0QEAi9EBAKrRAQCt0QEAQtIBAETSAQAA2gEANtoBADvaAQBs2gEAddoBAHXaAQCE2gEAhNoBAJvaAQCf2gEAodoBAK/aAQAA4AEABuABAAjgAQAY4AEAG+ABACHgAQAj4AEAJOABACbgAQAq4AEAj+ABAI/gAQAw4QEANuEBAK7iAQCu4gEA7OIBAO/iAQDs5AEA7+QBANDoAQDW6AEAROkBAErpAQD78wEA//MBACAADgB/AA4AAAEOAO8BDgAAEQAAXxEAAGCpAAB8qQAACgAAAAoAAAAArAAAAKwAABysAAAcrAAAOKwAADisAABUrAAAVKwAAHCsAABwrAAAjKwAAIysAACorAAAqKwAAMSsAADErAAA4KwAAOCsAAD8rAAA/KwAABitAAAYrQAANK0AADStAABQrQAAUK0AAGytAABsrQAAiK0AAIitAACkrQAApK0AAMCtAADArQAA3K0AANytAAD4rQAA+K0AABSuAAAUrgAAMK4AADCuAABMrgAATK4AAGiuAABorgAAhK4AAISuAACgrgAAoK4AALyuAAC8rgAA2K4AANiuAAD0rgAA9K4AABCvAAAQrwAALK8AACyvAABIrwAASK8AAGSvAABkrwAAgK8AAICvAACcrwAAnK8AALivAAC4rwAA1K8AANSvAADwrwAA8K8AAAywAAAMsAAAKLAAACiwAABEsAAARLAAAGCwAABgsAAAfLAAAHywAACYsAAAmLAAALSwAAC0sAAA0LAAANCwAADssAAA7LAAAAixAAAIsQAAJLEAACSxAABAsQAAQLEAAFyxAABcsQAAeLEAAHixAACUsQAAlLEAALCxAACwsQAAzLEAAMyxAADosQAA6LEAAASyAAAEsgAAILIAACCyAAA8sgAAPLIAAFiyAABYsgAAdLIAAHSyAACQsgAAkLIAAKyyAACssgAAyLIAAMiyAADksgAA5LIAAACzAAAAswAAHLMAAByzAAA4swAAOLMAAFSzAABUswAAcLMAAHCzAACMswAAjLMAAKizAACoswAAxLMAAMSzAADgswAA4LMAAPyzAAD8swAAGLQAABi0AAA0tAAANLQAAFC0AABQtAAAbLQAAGy0AACItAAAiLQAAKS0AACktAAAwLQAAMC0AADctAAA3LQAAPi0AAD4tAAAFLUAABS1AAAwtQAAMLUAAEy1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AAChrgAAu64AAL2uAADXrgAA2a4AAPOuAAD1rgAAD68AABGvAAArrwAALa8AAEevAABJrwAAY68AAGWvAAB/rwAAga8AAJuvAACdrwAAt68AALmvAADTrwAA1a8AAO+vAADxrwAAC7AAAA2wAAAnsAAAKbAAAEOwAABFsAAAX7AAAGGwAAB7sAAAfbAAAJewAACZsAAAs7AAALWwAADPsAAA0bAAAOuwAADtsAAAB7EAAAmxAAAjsQAAJbEAAD+xAABBsQAAW7EAAF2xAAB3sQAAebEAAJOxAACVsQAAr7EAALGxAADLsQAAzbEAAOexAADpsQAAA7IAAAWyAAAfsgAAIbIAADuyAAA9sgAAV7IAAFmyAABzsgAAdbIAAI+yAACRsgAAq7IAAK2yAADHsgAAybIAAOOyAADlsgAA/7IAAAGzAAAbswAAHbMAADezAAA5swAAU7MAAFWzAABvswAAcbMAAIuzAACNswAAp7MAAKmzAADDswAAxbMAAN+zAADhswAA+7MAAP2zAAAXtAAAGbQAADO0AAA1tAAAT7QAAFG0AABrtAAAbbQAAIe0AACJtAAAo7QAAKW0AAC/tAAAwbQAANu0AADdtAAA97QAAPm0AAATtQAAFbUAAC+1AAAxtQAAS7UAAE21AABntQAAabUAAIO1AACFtQAAn7UAAKG1AAC7tQAAvbUAANe1AADZtQAA87UAAPW1AAAPtgAAEbYAACu2AAAttgAAR7YAAEm2AABjtgAAZbYAAH+2AACBtgAAm7YAAJ22AAC3tgAAubYAANO2AADVtgAA77YAAPG2AAALtwAADbcAACe3AAAptwAAQ7cAAEW3AABftwAAYbcAAHu3AAB9twAAl7cAAJm3AACztwAAtbcAAM+3AADRtwAA67cAAO23AAAHuAAACbgAACO4AAAluAAAP7gAAEG4AABbuAAAXbgAAHe4AAB5uAAAk7gAAJW4AACvuAAAsbgAAMu4AADNuAAA57gAAOm4AAADuQAABbkAAB+5AAAhuQAAO7kAAD25AABXuQAAWbkAAHO5AAB1uQAAj7kAAJG5AACruQAArbkAAMe5AADJuQAA47kAAOW5AAD/uQAAAboAABu6AAAdugAAN7oAADm6AABTugAAVboAAG+6AABxugAAi7oAAI26AACnugAAqboAAMO6AADFugAA37oAAOG6AAD7ugAA/boAABe7AAAZuwAAM7sAADW7AABPuwAAUbsAAGu7AABtuwAAh7sAAIm7AACjuwAApbsAAL+7AADBuwAA27sAAN27AAD3uwAA+bsAABO8AAAVvAAAL7wAADG8AABLvAAATbwAAGe8AABpvAAAg7wAAIW8AACfvAAAobwAALu8AAC9vAAA17wAANm8AADzvAAA9bwAAA+9AAARvQAAK70AAC29AABHvQAASb0AAGO9AABlvQAAf70AAIG9AACbvQAAnb0AALe9AAC5vQAA070AANW9AADvvQAA8b0AAAu+AAANvgAAJ74AACm+AABDvgAARb4AAF++AABhvgAAe74AAH2+AACXvgAAmb4AALO+AAC1vgAAz74AANG+AADrvgAA7b4AAAe/AAAJvwAAI78AACW/AAA/vwAAQb8AAFu/AABdvwAAd78AAHm/AACTvwAAlb8AAK+/AACxvwAAy78AAM2/AADnvwAA6b8AAAPAAAAFwAAAH8AAACHAAAA7wAAAPcAAAFfAAABZwAAAc8AAAHXAAACPwAAAkcAAAKvAAACtwAAAx8AAAMnAAADjwAAA5cAAAP/AAAABwQAAG8EAAB3BAAA3wQAAOcEAAFPBAABVwQAAb8EAAHHBAACLwQAAjcEAAKfBAACpwQAAw8EAAMXBAADfwQAA4cEAAPvBAAD9wQAAF8IAABnCAAAzwgAANcIAAE/CAABRwgAAa8IAAG3CAACHwgAAicIAAKPCAAClwgAAv8IAAMHCAADbwgAA3cIAAPfCAAD5wgAAE8MAABXDAAAvwwAAMcMAAEvDAABNwwAAZ8MAAGnDAACDwwAAhcMAAJ/DAAChwwAAu8MAAL3DAADXwwAA2cMAAPPDAAD1wwAAD8QAABHEAAArxAAALcQAAEfEAABJxAAAY8QAAGXEAAB/xAAAgcQAAJvEAACdxAAAt8QAALnEAADTxAAA1cQAAO/EAADxxAAAC8UAAA3FAAAnxQAAKcUAAEPFAABFxQAAX8UAAGHFAAB7xQAAfcUAAJfFAACZxQAAs8UAALXFAADPxQAA0cUAAOvFAADtxQAAB8YAAAnGAAAjxgAAJcYAAD/GAABBxgAAW8YAAF3GAAB3xgAAecYAAJPGAACVxgAAr8YAALHGAADLxgAAzcYAAOfGAADpxgAAA8cAAAXHAAAfxwAAIccAADvHAAA9xwAAV8cAAFnHAABzxwAAdccAAI/HAACRxwAAq8cAAK3HAADHxwAAyccAAOPHAADlxwAA/8cAAAHIAAAbyAAAHcgAADfIAAA5yAAAU8gAAFXIAABvyAAAccgAAIvIAACNyAAAp8gAAKnIAADDyAAAxcgAAN/IAADhyAAA+8gAAP3IAAAXyQAAGckAADPJAAA1yQAAT8kAAFHJAABryQAAbckAAIfJAACJyQAAo8kAAKXJAAC/yQAAwckAANvJAADdyQAA98kAAPnJAAATygAAFcoAAC/KAAAxygAAS8oAAE3KAABnygAAacoAAIPKAACFygAAn8oAAKHKAAC7ygAAvcoAANfKAADZygAA88oAAPXKAAAPywAAEcsAACvLAAAtywAAR8sAAEnLAABjywAAZcsAAH/LAACBywAAm8sAAJ3LAAC3ywAAucsAANPLAADVywAA78sAAPHLAAALzAAADcwAACfMAAApzAAAQ8wAAEXMAABfzAAAYcwAAHvMAAB9zAAAl8wAAJnMAACzzAAAtcwAAM/MAADRzAAA68wAAO3MAAAHzQAACc0AACPNAAAlzQAAP80AAEHNAABbzQAAXc0AAHfNAAB5zQAAk80AAJXNAACvzQAAsc0AAMvNAADNzQAA580AAOnNAAADzgAABc4AAB/OAAAhzgAAO84AAD3OAABXzgAAWc4AAHPOAAB1zgAAj84AAJHOAACrzgAArc4AAMfOAADJzgAA484AAOXOAAD/zgAAAc8AABvPAAAdzwAAN88AADnPAABTzwAAVc8AAG/PAABxzwAAi88AAI3PAACnzwAAqc8AAMPPAADFzwAA388AAOHPAAD7zwAA/c8AABfQAAAZ0AAAM9AAADXQAABP0AAAUdAAAGvQAABt0AAAh9AAAInQAACj0AAApdAAAL/QAADB0AAA29AAAN3QAAD30AAA+dAAABPRAAAV0QAAL9EAADHRAABL0QAATdEAAGfRAABp0QAAg9EAAIXRAACf0QAAodEAALvRAAC90QAA19EAANnRAADz0QAA9dEAAA/SAAAR0gAAK9IAAC3SAABH0gAASdIAAGPSAABl0gAAf9IAAIHSAACb0gAAndIAALfSAAC50gAA09IAANXSAADv0gAA8dIAAAvTAAAN0wAAJ9MAACnTAABD0wAARdMAAF/TAABh0wAAe9MAAH3T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AAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAAA9CwAAXAsAAF0LAABfCwAAYQsAAHELAABxCwAAgwsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAADQCwAA0AsAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPQwAAD0MAABYDAAAWgwAAF0MAABdDAAAYAwAAGEMAACADAAAgAwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC9DAAAvQwAAN0MAADeDAAA4AwAAOEMAADxDAAA8gwAAAQNAAAMDQAADg0AABANAAASDQAAOg0AAD0NAAA9DQAATg0AAE4NAABUDQAAVg0AAF8NAABhDQAAeg0AAH8NAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAAA8AAAAPAABADwAARw8AAEkPAABsDwAAiA8AAIwPAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAADQEAAA+hAAAPwQAABIEgAAShIAAE0SAABQEgAAVhIAAFgSAABYEgAAWhIAAF0SAABgEgAAiBIAAIoSAACNEgAAkBIAALASAACyEgAAtRIAALgSAAC+EgAAwBIAAMASAADCEgAAxRIAAMgSAADWEgAA2BIAABATAAASEwAAFRMAABgTAABaEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAARFwAAHxcAADEXAABAFwAAURcAAGAXAABsFwAAbhcAAHAXAAAgGAAAeBgAAIAYAACEGAAAhxgAAKgYAACqGAAAqhgAALAYAAD1GAAAABkAAB4ZAAAAGgAAFhoAAAUbAAAzGwAARRsAAEwbAACDGwAAoBsAAK4bAACvGwAAuhsAAOUbAAAAHAAAIxwAAE0cAABPHAAAWhwAAH0cAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAADpHAAA7BwAAO4cAADzHAAA9RwAAPYcAAD6HAAA+hwAAAAdAAC/HQAAAB4AABUfAAAYHwAAHR8AACAf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AAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAnR4AAJ8eAACfHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAohAAAKIQAADiEAAA8hAAATIQAAEyEAAC8hAAAvIQAANCEAADQhAAA5IQAAOSEAADwhAAA9IQAARiEAAEkhAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAfSwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAnaYAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAHinAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAjqcAAI6nAACRpwAAkacAAJOnAACVpwAAl6cAAJenAACZpwAAmacAAJunAACbpwAAnacAAJ2nAACfpwAAn6cAAKGnAAChpwAAo6cAAKOnAAClpwAApacAAKenAACnpwAAqacAAKmnAACvpwAAr6cAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADBpwAAw6cAAMOnAADIpwAAyKcAAMqnAADKpwAA0acAANGnAADTpwAA06cAANWnAADVpwAA16cAANenAADZpwAA2acAAPKnAAD0pwAA9qcAAPanAAD4pwAA+qcAADCrAABaqwAAXKsAAGmrAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AABB/wAAWv8AACgEAQBPBAEA2AQBAPsEAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAIAHAQCABwEAgwcBAIUHAQCHBwEAsAcBALIHAQC6BwEAwAwBAPIMAQDAGAEA3xgBAGBuAQB/bgEAGtQBADPUAQBO1AEAVNQBAFbUAQBn1AEAgtQBAJvUAQC21AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEAz9QBAOrUAQAD1QEAHtUBADfV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AADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAiB8AAI8fAACYHwAAnx8AAKgfAACvHwAAuB8AALwfAADIHwAAzB8AANgfAADbHwAA6B8AAOwfAAD4HwAA/B8AAAIhAAACIQAAByEAAAchAAALIQAADSEAABAhAAASIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAAMCEAADMhAAA+IQAAPyEAAEUhAABFIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADQpwAA0KcAANanAADWpwAA2KcAANinAAD1pwAA9acAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQCgGAEAvxgBAEBuAQBfbgEAANQBABnUAQA01AEATdQBAGjUAQCB1AEAnNQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC11AEA0NQBAOnUAQAE1QEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBADjVAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBs1QEAhdUBAKDVAQC51QEA1NUBAO3VAQAI1gEAIdYBADzWAQBV1gEAcNYBAInWAQCo1gEAwNYBAOLWAQD61gEAHNcBADTXAQBW1wEAbtcBAJDXAQCo1wEAytcBAMrXAQAA6QEAIekBADDxAQBJ8QEAUPEBAGnxAQBw8QEAifEBAJaHIgAFAAAAaIYlAAQAAAC+YyIAAgAAAOA4JQABAAAAoociAAUAAACIhiUALQAAAPRjIgAGAAAA8IclADkBAAAoWyIABgAAALiRJQAVAAAAIGQiAAIAAADwRCUAAQAAALWHIgAFAAAAYJIlAJ0CAAC6hyIABwAAAEinJQBBAAAArociAAcAAABQqSUAHwIAAM+HIgAJAAAASLolABMAAADvhyIABQAAAOC6JQBNAAAA44ciAAMAAABIvSUAAgAAAOuHIgACAAAAWL0lAAkAAAD2hyIABQAAAKC9JQCMAgAAJBoiAGYAAAB3AwAAHAAAACQaIgBmAAAAqgMAAAkAAAAkGiIAZgAAAKsDAAAJAAAAJBoiAGYAAACuAwAADwAAACQaIgBmAAAAoAMAAA0AAAAkGiIAZgAAAJ0DAAANAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy91dGY4LnJzAEDTJQBjAAAAQQEAABoAAABA0yUAYwAAALQBAAAtAAAAQNMlAGMAAAC1AQAAKwAAAEDTJQBjAAAAuAEAAAkAAABJbnRlcnZhbFNldHJhbmdlc2ZvbGRlZExpdGVyYWxDbGFzc1VuaWNvZGVDbGFzc0J5dGVzUmVwZXRpdGlvbkdyb3Vwb2xkX2ZsYWdzQ29uY2F0QWx0ZXJuYXRpb25BbHRlcm5hdGlvbkJyYW5jaAAAAAAAAAEAAAABAAAA/AMAAAAAAAAEAAAABAAAABkEAABjYXNlX2luc2Vuc2l0aXZlbXVsdGlfbGluZWRvdF9tYXRjaGVzX25ld19saW5lc3dhcF9ncmVlZHVuaWNvZGVjcmxmAHTUJQAQAAAAhNQlAAoAAACO1CUAFAAAAKLUJQAKAAAArNQlAAcAAACz1CUABAAAAEZsYWdzTG9va0NhcHR1cmVTdGFydEVuZFN0YXJ0TEZFbmRMRlN0YXJ0Q1JMRkVuZENSTEZXb3JkQXNjaWlXb3JkQXNjaWlOZWdhdGVXb3JkVW5pY29kZVdvcmRVbmljb2RlTmVnYXRlV29yZFN0YXJ0QXNjaWlXb3JkRW5kQXNjaWlXb3JkU3RhcnRVbmljb2RlV29yZEVuZFVuaWNvZGVXb3JkU3RhcnRIYWxmQXNjaWlXb3JkRW5kSGFsZkFzY2lpV29yZFN0YXJ0SGFsZlVuaWNvZGVXb3JkRW5kSGFsZlVuaWNvZGVpbmRleG1pbm1heGdyZWVkeSgpL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnMA49UlAFAAAACmAAAABQAAAAAAAAAAAAAAAQAAABoEAABJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAAAAAAAAwAAAAEAAAAGwQAABwEAAAdBAAAX1pOL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjQvc3JjL2xlZ2FjeS5ycwAAAJfWJQAuAAAAPQAAAAsAAACX1iUALgAAADoAAAALAAAAl9YlAC4AAAA2AAAACwAAAJfWJQAuAAAAZgAAABwAAACX1iUALgAAAG8AAAAnAAAAl9YlAC4AAABwAAAAHQAAAJfWJQAuAAAAcgAAACEAAACX1iUALgAAAHMAAAAaAAAAOjoAAJfWJQAuAAAAfgAAAB0AAACX1iUALgAAALQAAAAmAAAAl9YlAC4AAAC1AAAAIQAAAJfWJQAuAAAAigAAAEkAAACX1iUALgAAAIsAAAAfAAAAl9YlAC4AAACLAAAALwAAAEMAAACX1iUALgAAAJ0AAAA1AAAAl9YlAC4A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Q+xOCrQYMC4wYW55IHZhbHVlAAAAAAgAAAAEAAAAIQQAACIEAAAjBAAAdW5pdGEgYm9vbGVhbmEgc3RyaW5nYnl0ZSBhcnJheWJvb2xlYW4gYMMFJgAJAAAA7tsmAAEAAABpbnRlZ2VyIGAAAADcBSYACQAAAO7bJgABAAAAZmxvYXRpbmcgcG9pbnQgYPgFJgAQAAAA7tsmAAEAAABjaGFyYWN0ZXIgYAAYBiYACwAAAO7bJgABAAAAc3RyaW5nIAA0BiYABwAAAHVuaXQgdmFsdWVPcHRpb24gdmFsdWVuZXd0eXBlIHN0cnVjdHNlcXVlbmNldW5pdCB2YXJpYW50bmV3dHlwZSB2YXJpYW50dHVwbGUgdmFyaWFudHN0cnVjdCB2YXJpYW50L2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMApgYmAGUAAAAkCQAAEgAAAO7bJgABAAAA7tsmAAEAAABgIG9yIGAAAO7bJgABAAAALAcmAAYAAADu2yYAAQAAAG9uZSBvZiAsIC4wACQEAAAMAAAABAAAACUEAAAmBAAAJwQAAAAAAAAAAAAAAQAAALACAABA6CYATwAAADkGAAAUAAAAQOgmAE8AAAA5BgAAIQAAAEDoJgBPAAAALQYAABQAAABA6CYATwAAAC0GAAAhAAAADNEmAEsAAAAyCAAAHgAAAEDoJgBPAAAAugQAACQAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDAvc3JjL2Vycm9yLnJzRU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2luZyBhIHZhbHVlZXhwZWN0ZWQgYDpgZXhwZWN0ZWQgYCxgIG9yIGBdYGV4cGVjdGVkIGAsYCBvciBgfWBleHBlY3RlZCBpZGVudGV4cGVjdGVkIHZhbHVlZXhwZWN0ZWQgYCJgaW52YWxpZCBlc2NhcGVpbnZhbGlkIG51bWJlcm51bWJlciBvdXQgb2YgcmFuZ2VpbnZhbGlkIHVuaWNvZGUgY29kZSBwb2ludGNvbnRyb2wgY2hhcmFjdGVyIChcdTAwMDAtXHUwMDFGKSBmb3VuZCB3aGlsZSBwYXJzaW5nIGEgc3RyaW5na2V5IG11c3QgYmUgYSBzdHJpbmdpbnZhbGlkIHZhbHVlOiBleHBlY3RlZCBrZXkgdG8gYmUgYSBudW1iZXIgaW4gcXVvdGVzZmxvYXQga2V5IG11c3QgYmUgZmluaXRlIChnb3QgTmFOIG9yICsvLWluZilsb25lIGxlYWRpbmcgc3Vycm9nYXRlIGluIGhleCBlc2NhcGV0cmFpbGluZyBjb21tYXRyYWlsaW5nIGNoYXJhY3RlcnN1bmV4cGVjdGVkIGVuZCBvZiBoZXggZXNjYXBlcmVjdXJzaW9uIGxpbWl0IGV4Y2VlZGVkIGF0IGxpbmUgIGNvbHVtbiAAAAABAAAAAAAAAHgKJgAJAAAAgQomAAgAAABFcnJvcigsIGxpbmU6ICwgY29sdW1uOiCkCiYABgAAAKoKJgAIAAAAsgomAAoAAACzPicAAQAAAOAHJgBkAAAA9wEAACEAAADgByYAZAAAAPsBAAAMAAAA4AcmAGQAAAACAgAAIQAAAOAHJgBkAAAACwIAACoAAADgByYAZAAAAA8CAAAsAAAAaW52YWxpZCB0eXBlOiAsIGV4cGVjdGVkIAAAACwLJgAOAAAAOgsmAAsAAAAAAAAAAAAAAAEAAAAoBAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnNoCyYAaAAAADUAAAAOAAAAAAAAAAAAAAABAAAALAMAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYXJ0c3RyaW5nLTEuMC4xL3NyYy9pbmxpbmUucnPwCyYAZAAAACsAAAArAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc21hcnRzdHJpbmctMS4wLjEvc3JjL2JveGVkLnJzAGQMJgBjAAAAQQAAAA4AAABkDCYAYwAAAHYAAAAkAAAAOiAAAAAAAAAEAAAABAAAACkEAAAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi44L3NyYy9kbG1hbGxvYy5yc2Fzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQA/AwmACkAAACsBAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplIDw9IHNpemUgKyBtYXhfb3ZlcmhlYWQAAPwMJgApAAAAsgQAAA0AAAB1c2Ugb2Ygc3RkOjp0aHJlYWQ6OmN1cnJlbnQoKSBpcyBub3QgcG9zc2libGUgYWZ0ZXIgdGhlIHRocmVhZCdzIGxvY2FsIGRhdGEgaGFzIGJlZW4gZGVzdHJveWVkAACkDSYAXgAAAGxpYnJhcnkvc3RkL3NyYy90aHJlYWQvY3VycmVudC5ycwAAAAwOJgAhAAAAAQEAAAkAAABBY2Nlc3NFcnJvcmNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb246IABLDiYASAAAAGxpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzZmFpbGVkIHRvIGdlbmVyYXRlIHVuaXF1ZSB0aHJlYWQgSUQ6IGJpdHNwYWNlIGV4aGF1c3RlZLkOJgA3AAAAnA4mAB0AAACpBAAADQAAAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwAAAAgPJgAhAAAA0QAAABMAAABsaWJyYXJ5L3N0ZC9zcmMvYmFja3RyYWNlLnJzdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlADwPJgAcAAAAigEAAB0AAAAqBAAAEAAAAAQAAAArBAAALAQAAFdvdWxkQmxvY2tlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlcXVvdGEgZXhjZWVkZWRmaWxlIHRvbyBsYXJnZXJlc291cmNlIGJ1c3lleGVjdXRhYmxlIGZpbGUgYnVzeWRlYWRsb2NrY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1ldG9vIG1hbnkgbGlua3NpbnZhbGlkIGZpbGVuYW1lYXJndW1lbnQgbGlzdCB0b28gbG9uZ29wZXJhdGlvbiBpbnRlcnJ1cHRlZHVuc3VwcG9ydGVkdW5leHBlY3RlZCBlbmQgb2YgZmlsZW91dCBvZiBtZW1vcnlpbiBwcm9ncmVzc290aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvck9zY29kZUtpbmRDdXN0b20gKG9zIGVycm9yIAAAAQAAAAAAAACrEiYACwAAALM+JwABAAAAbGlicmFyeS9zdGQvc3JjL3BhdGgucnMA0BImABcAAADTAgAAIQAAANASJgAXAAAA+gIAACwAAADQEiYAFwAAAPwCAAAmAAAA0BImABcAAAAJAwAAJwAAANASJgAXAAAAFQMAACcAAADQEiYAFwAAAH8DAAApAAAA0BImABcAAACAAwAAKwAAANASJgAXAAAAlQMAAC8AAADQEiYAFwAAAI0DAAAvAAAA0BImABcAAACbAwAAKwAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJziBMmACwAAAATAAAACQAAAGxpYnJhcnkvc3RkL3NyYy9zeW5jL3BvaXNvbi9vbmNlLnJzAMQTJgAjAAAA1gAAABQAAAA8dW5rbm93bj7vv71saWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzBBQmADQAAABnAQAAMAAAAAEAAAAAAAAA6AwmAAIAAAACAAAAAAAAAAAABAAAAAAAAAAAACAAAOggLSAAAQAAAAAAAABwFCYAAwAAAAIAAAAAAAAAAQAAAAEAAAAAAAAAIAAA6CAgICAgICAgICAgICAgICAgICBhdCAAACHiJgABAAAATm90Rm91bmRQZXJtaXNzaW9uRGVuaWVkQ29ubmVjdGlvblJlZnVzZWRDb25uZWN0aW9uUmVzZXRIb3N0VW5yZWFjaGFibGVOZXR3b3JrVW5yZWFjaGFibGVDb25uZWN0aW9uQWJvcnRlZE5vdENvbm5lY3RlZEFkZHJJblVzZUFkZHJOb3RBdmFpbGFibGVOZXR3b3JrRG93bkJyb2tlblBpcGVBbHJlYWR5RXhpc3RzTm90QURpcmVjdG9yeUlzQURpcmVjdG9yeURpcmVjdG9yeU5vdEVtcHR5UmVhZE9ubHlGaWxlc3lzdGVtRmlsZXN5c3RlbUxvb3BTdGFsZU5ldHdvcmtGaWxlSGFuZGxlSW52YWxpZElucHV0SW52YWxpZERhdGFUaW1lZE91dFdyaXRlWmVyb1N0b3JhZ2VGdWxsTm90U2Vla2FibGVRdW90YUV4Y2VlZGVkRmlsZVRvb0xhcmdlUmVzb3VyY2VCdXN5RXhlY3V0YWJsZUZpbGVCdXN5RGVhZGxvY2tDcm9zc2VzRGV2aWNlc1Rvb01hbnlMaW5rc0ludmFsaWRGaWxlbmFtZUFyZ3VtZW50TGlzdFRvb0xvbmdJbnRlcnJ1cHRlZFVuc3VwcG9ydGVkVW5leHBlY3RlZEVvZk91dE9mTWVtb3J5SW5Qcm9ncmVzc090aGVyVW5jYXRlZ29yaXplZG9wZXJhdGlvbiBzdWNjZXNzZnVsT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAADkFiYAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5GBcmADgAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXN0Yy1oYXNoLTIuMS4xL3NyYy9saWIucnNYFyYAYAAAACMBAAAcAAAAWBcmAGAAAAAkAQAAKAAAAFgXJgBgAAAAJQEAACgAAABYFyYAYAAAAAgBAAArAAAAWBcmAGAAAAAIAQAAQgAAAFgXJgBgAAAABQEAACsAAABYFyYAYAAAAAUBAABCAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdW5pY29kZS13aWR0aC0wLjIuMi9zcmMvdGFibGVzLnJzAAAoGCYAZgAAALgAAAAVAAAAKBgmAGYAAAC+AAAAGQAAAG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm2wGCYAKAAAACQAAAAAAAAAAgAAANgYJgBjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRlePAYJgAgAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnMYGSYAXAAAABMAAAAJAAAArAIAAAwAAAAEAAAALQQAAC4EAACvAgAAAAAAAAAAAAABAAAAsAIAAAAAAAAAAAAAAQAAAC8EAAAAAAAABAAAAAQAAAA1AQAAAAAAAAQAAAAEAAAAMAQAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvc3RkL3NyYy9wYXRoLnJzANwZJgBHAAAAuAwAABsAAADcGSYARwAAANsMAAAhAAAA3BkmAEcAAADODAAAIgAAAFRyeUZyb21TbGljZUVycm9yAAAAAAAAAAwAAAAEAAAAMQQAADIEAAAAAAAADAAAAAQAAAAzBAAANAQAAGNy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b2RlZ2VuL3NyYy9saWIucnMAFSwmACIAAACKAAAAWwAAAGwqJgACAAAAqComAAIAAAAVLCYAIgAAADsEAAAxAAAAqiomAAQAAAAVLCYAIgAAADoEAABBAAAAFSwmACIAAABMBAAAMQAAABUsJgAiAAAAQwQAADsAAABoKyYAAwAAABUsJgAiAAAAPQQAADgAAABcdTAwMDAAALgsJgAGAAAAXHUwMMgsJgAEAAAAIlx1ANQsJgADAAAAWGImAAIAAAAMvSYAAQAAAAy9JgABAAAADL0mAAEAAABcAFwjX19QVVJFX18vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zbWFydHN0cmluZy0xLjAuMS9zcmMvb3BzLnJzAAAADC0mAGEAAAB6AAAAOwAAAE4EAAAMAAAABAAAAE8EAABQBAAArwIAAAAAAAAAAAAAAQAAAFEEAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2NvcmUvc3JjL2NoYXIvbWV0aG9kcy5yc6gtJgBQAAAAEgcAAAkAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9oc3RyL3NyYy93dGY4L21vZC5yc1BhcnNlSW50RXJyb3JPa0VyclBhcnNlRmxvYXRFcnJvclVuZXhwZWN0ZWQgZW9mRGVjbGFyYXRpb24gaXMgbm90IGFsbG93ZWRVc2luZyBkZWNsYXJhdGlvbiBpcyBub3QgYWxsb3dlZFVzaW5nIGRlY2xhcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIGZvci1pbiBsb29wVXNpbmcgZGVjbGFyYXRpb24gaXMgbm90IGVuYWJsZWQuIFNldCBqc2MucGFyc2VyLmV4cGxpY2l0UmVzb3VyY2VNYW5hZ2VtZW50IHRvIHRydWVVc2luZyBkZWNsYXJhdGlvbiBvbmx5IGFsbG93cyBpZGVudGlmaWVyc1VzaW5nIGRlY2xhcmF0aW9uIHJlcXVpcmVzIGluaXRpYWxpemVycHJpdmF0ZSBuYW1lcyBhcmUgbm90IGFsbG93ZWQgaW4gaW50ZXJmYWNlSW52YWxpZCBgc3VwZXIoKWBJbnZhbGlkIGFjY2VzcyB0byBzdXBlckluZGV4IHN1cGVyIHdpdGggcHJpdmF0ZSBuYW1lIGlzIG5vdCBhbGxvd2VkJ25ldy50YXJnZXQnIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCBmdW5jdGlvbiBleHByZXNzaW9uLCBvciBjbGFzcy5JbXBvcnQgaXMgbm90IGFsbG93ZWQgaGVyZUFuIGFycm93IGZ1bmN0aW9uIGlzIG5vdCBhbGxvd2VkIGhlcmVgZXhwb3J0YCBpcyBub3QgYWxsb3dlZCBoZXJlQSBnZXR0ZXIgb3IgYSBzZXR0ZXIgY2Fubm90IGJlIHJlYWRvbmx5QSBnZXR0ZXIgb3IgYSBzZXR0ZXIgY2Fubm90IGJlIG9wdGlvbmFsQSBgZ2V0YCBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzQSBgc2V0YCBhY2Nlc3NvciBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcGFyYW1ldGVydG9wIGxldmVsIGF3YWl0IGlzIG9ubHkgYWxsb3dlZCBpbiBtb2R1bGVMZWdhY3kgZGVjaW1hbCBlc2NhcGUgaXMgbm90IHBlcm1pdHRlZCBpbiBzdHJpY3QgbW9kZUxlZ2FjeSBvY3RhbCBlc2NhcGUgaXMgbm90IHBlcm1pdHRlZCBpbiBzdHJpY3QgbW9kZUludmFsaWQgY2hhcmFjdGVyIGluIGlkZW50aWZpZXJhIGJpbmFyeWFuIG9jdGFsYSBkZWNpbWFsYSBoZXhhZGVjaW1hbEV4cGVjdGVkICBkaWdpdC0yJgAJAAAANjImAAYAAABjcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9lcnJvci5ycwBMMiYAIwAAAEIBAAAaAAAAU2V0dGVyIHNob3VsZCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlclJlc3QgcGF0dGVybiBpcyBub3QgYWxsb3dlZCBpbiBzZXR0ZXJVbnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudFVudGVybWluYXRlZCBzdHJpbmcgY29uc3RhbnRFeHBlY3RlZCB1bmljb2RlIGVzY2FwZVVuZXhwZWN0ZWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlc2VydmVkIHdvcmQ6IAAaMyYALQAAAFVudGVybWluYXRlZCByZWdleHAgbGl0ZXJhbFVudGVybWluYXRlZCB0ZW1wbGF0ZUlkZW50aWZpZXIgY2Fubm90IGZvbGxvdyBudW1iZXJVbmV4cGVjdGVkIGNoYXJhY3RlciCfMyYAFQAAAEludmFsaWQgc3RyaW5nIGVzY2FwZUludmFsaWQgdW5pY29kZSBlc2NhcGVCYWQgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZSwgZXhwZWN0ZWQgAOczJgAoAAAARXhwZWN0ZWQgKywgLSBvciBkZWNpbWFsIGRpZ2l0IGFmdGVyIGVMZWdhY3kgY29tbWVudHMgY2Fubm90IGJlIHVzZWQgaW4gbW9kdWxlIGNvZGVgIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGlkZW50aWZpZXIgaW4gc3RyaWN0IG1vZGUA7tsmAAEAAABrNCYAMAAAAGBhd2FpdGAgY2Fubm90IGJlIHVzZWQgYXMgYW4gaWRlbnRpZmllciBpbiBhbiBhc3luYyBjb250ZXh0J2V2YWwnIGFuZCAnYXJndW1lbnRzJyBjYW5ub3QgYmUgdXNlZCBhcyBhIGJpbmRpbmcgaWRlbnRpZmllciBpbiBzdHJpY3QgbW9kZSdhcmd1bWVudHMnIGlzIG9ubHkgYWxsb3dlZCBpbiBmdW5jdGlvbnMgYW5kIGNsYXNzIG1ldGhvZHNJbGxlZ2FsICd1c2Ugc3RyaWN0JyBkaXJlY3RpdmUgaW4gZnVuY3Rpb24gd2l0aCBub24tc2ltcGxlIHBhcmFtZXRlciBsaXN0LicqKicgY2Fubm90IGJlIGFwcGxpZWQgdG8gdW5hcnkvYXdhaXQgZXhwcmVzc2lvbi5VbmV4cGVjdGVkIHRva2VuICcjJ0xpbmVCcmVhayBjYW5ub3QgZm9sbG93ICd0aHJvdydVbmV4cGVjdGVkIGxpbmUgYnJlYWsgYmV0d2VlbiBhcnJvdyBoZWFkIGFuZCBhcnJvd1VuZXhwZWN0ZWQgdG9rZW4gYGAuIEV4cGVjdGVkIABNNiYAEgAAAF82JgAMAAAAICwgb3IgAAB/NiYAAwAAACBvciBVbmV4cGVjdGVkIHRva2VuLiBEaWQgeW91IG1lYW4gAJA2JgAfAAAAZOImAAEAAABjYW5ub3QgaW1wb3J0IGFzIHJlc2VydmVkIHdvcmRhc3NpZ25tZW50IHByb3BlcnR5IGlzIGludmFsaWQgc3ludGF4RXhwZWN0ZWQgJycsIGdvdCAnJwAAAzcmAAoAAAANNyYACAAAABU3JgABAAAARXhwZWN0ZWQgJzsnLCAnfScgb3IgPGVvZj5hd2FpdCogaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBhc3luYyBmdW5jdGlvbnMgcHJvcG9zYWwuIFVzZSBQcm9taXNlLmFsbCgpIGluc3RlYWQuQ2Fubm90IHVzZSBhIHJlc2VydmVkIHdvcmQgYXMgYSBzaG9ydGhhbmQgcHJvcGVydHlOdWxsaXNoIGNvYWxlc2Npbmcgb3BlcmF0b3IoPz8pIHJlcXVpcmVzIHBhcmVucyB3aGVuIG1peGluZyB3aXRoIGxvZ2ljYWwgb3BlcmF0b3JzQSBzd2l0Y2ggYmxvY2sgY2Fubm90IGhhdmUgbXVsdGlwbGUgZGVmYXVsdHNUcmFpbGluZyBjb21tYSBpc24ndCBwZXJtaXR0ZWQgYWZ0ZXIgYSByZXN0IGVsZW1lbnRSZXN0IGVsZW1lbnQgbXVzdCBiZSBmaW5hbCBlbGVtZW50UGFyZW50aGVzaXplZCBleHByZXNzaW9uIGNhbm5vdCBjb250YWluIHNwcmVhZCBvcGVyYXRvclBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvbiBjYW5ub3QgYmUgZW1wdHlOb3QgYSBwYXR0ZXJuTm90IGFuIGV4cHJlc3Npb25DYW5ub3QgYXNzaWduIHRvIHRoaXNJbnZhbGlkIGFzc2lnbm1lbnQgdGFyZ2V0RXhwZWN0ZWQgaWRlbnRFeHBlY3RlZCAnOycgb3IgbGluZSBicmVha0xhYmVsICBpcyBhbHJlYWR5IGRlY2xhcmVkAAAAdzkmAAYAAAB9OSYAFAAAAEFuIGFzeW5jIGZ1bmN0aW9uIGNhbm5vdCBiZSBnZW5lcmF0b3InaW1wb3J0JywgYW5kICdleHBvcnQnIGFyZSBub3QgcGVybWl0dGVkIGhlcmUnaW1wb3J0JywgYW5kICdleHBvcnQnIGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgbW9kdWxlIGNvZGUnaW1wb3J0Lm1ldGEnIGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgbW9kdWxlIGNvZGUuRGVzdHJ1Y3R1cmluZyBiaW5kaW5ncyByZXF1aXJlIGluaXRpYWxpemVyc1dpdGggc3RhdGVtZW50IGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZVJldHVybiBzdGF0ZW1lbnQgaXMgbm90IGFsbG93ZWQgaGVyZUV4cGVjdGVkIG9uZSB2YXJpYWJsZSBiaW5kaW5nVW5leHBlY3RlZCBpbml0aWFsaXplciBpbiBmb3IgaW4vb2YgbG9vcEdlbmVyYXRvciBvciBhc3luYyBmdW5jdGlvbiBjYW5ub3QgYmUgbGFiZWxsZWRGdW5jdGlvbiBjYW5ub3QgYmUgbGFiZWxsZWQgaW4gc3RyaWN0IG1vZGUneWllbGQnIGNhbm5vdCBiZSB1c2VkIGFzIGEgcGFyYW1ldGVyIHdpdGhpbiBnZW5lcmF0b3JgYXdhaXRgIGV4cHJlc3Npb25zIGNhbm5vdCBiZSB1c2VkIGluIGEgcGFyYW1ldGVyIGluaXRpYWxpemVyLmZvciBhd2FpdCBzeW50YXggaXMgdmFsaWQgb25seSBmb3IgZm9yLW9mIHN0YXRlbWVudGF3YWl0IGlzbid0IGFsbG93ZWQgaW4gbm9uLWFzeW5jIGZ1bmN0aW9uVW50ZXJtaW5hdGVkIEpTWCBjb250ZW50c0pTWCBhdHRyaWJ1dGVzIG11c3Qgb25seSBiZSBhc3NpZ25lZCBhIG5vbi1lbXB0eSBleHByZXNzaW9uSlNYIHZhbHVlIHNob3VsZCBiZSBlaXRoZXIgYW4gZXhwcmVzc2lvbiBvciBhIHF1b3RlZCBKU1ggdGV4dEV4cGVjdGVkIGNvcnJlc3BvbmRpbmcgSlNYIGNsb3NpbmcgdGFnIGZvciA8PkV4cGVjdGVkIGNvcnJlc3BvbmRpbmcgSlNYIGNsb3NpbmcgdGFnIGZvciA8AAAADT0mACwAAACvyyYAAQAAAExlYWRpbmcgZGVjb3JhdG9ycyBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgY2xhc3MgZGVjbGFyYXRpb25Vc2luZyB0aGUgZXhwb3J0IGtleXdvcmQgYmV0d2VlbiBhIGRlY29yYXRvciBhbmQgYSBjbGFzcyBpcyBub3QgYWxsb3dlZC4gUGxlYXNlIHVzZSBgZXhwb3J0IEBkZWMgY2xhc3NgIGluc3RlYWQuQSByZXF1aXJlZCBlbGVtZW50IGNhbm5vdCBmb2xsb3cgYW4gb3B0aW9uYWwgZWxlbWVudC5UeXBlc2NyaXB0IHBhcmFtZXRlciBwcm9wZXJ0eSBtdXN0IGJlIGFuIGlkZW50aWZpZXIgb3IgYXNzaWdubWVudCBwYXR0ZXJuVW5leHBlY3RlZCBzcGFjZSBiZXR3ZWVuICMgYW5kIGlkZW50aWZpZXJDb25zdHJ1Y3RvciBjYW4ndCBiZSBhbiBhc3luYyBmdW5jdGlvbkNsYXNzZXMgbWF5IG5vdCBoYXZlIGEgbm9uLXN0YXRpYyBmaWVsZCBuYW1lZCAnY29uc3RydWN0b3InQ2xhc3NlcyBjYW4ndCBoYXZlIGEgcHJpdmF0ZSBmaWVsZCBuYW1lZCAnI2NvbnN0cnVjdG9yJy4nIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIHdpdGggYSBwcml2YXRlIGlkZW50aWZpZXIAAAAVNyYAAQAAADY/JgAzAAAAQ2xhc3MgY29uc3RydWN0b3IgY2FuJ3QgYmUgYW4gYWNjZXNzb3IuQSBtZXRob2QgY2Fubm90IGJlIHJlYWRvbmx5QSBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgZ2VuZXJhdG9yQSBjbGFzcyBjYW4gb25seSBoYXZlIG9uZSBjb25zdHJ1Y3RvckEgYmluZGluZyBwYXR0ZXJuIHBhcmFtZXRlciBjYW5ub3QgYmUgb3B0aW9uYWwgaW4gYW4gaW1wbGVtZW50YXRpb24gc2lnbmF0dXJlLlN1cGVyIGNhbGwgY2Fubm90IGJlIG9wdGlvbmFsQ29uc3RydWN0b3IgaW4vYWZ0ZXIgYW4gb3B0aW9uYWwgY2hhaW5pbmcgaXMgbm90IGFsbG93ZWQuVGFnZ2VkIHRlbXBsYXRlIGxpdGVyYWwgaXMgbm90IGFsbG93ZWQgaW4gb3B0aW9uYWwgY2hhaW4uVHJhaWxpbmcgY29tbWEgaXMgZGlzYWxsb3dlZCBpbnNpZGUgaW1wb3J0KC4uLikgYXJndW1lbnRzYGltcG9ydCgpYCByZXF1aXJlcyBleGFjdGx5IG9uZSBvciB0d28gYXJndW1lbnRzZXhwb3J0IGRlZmF1bHQgc3RhdGVtZW50cyByZXF1aXJlZCBmcm9tICcuLi4nO2AgY2Fubm90IGJlIHVzZWQgd2l0aG91dCBgZnJvbWAgY2xhdXNlAADu2yYAAQAAAHhBJgAmAAAAYC4uLmAgbXVzdCBiZSBmb2xsb3dlZCBieSBhbiBpZGVudGlmaWVyIGluIGRlY2xhcmF0aW9uIGNvbnRleHRzQSBudW1lcmljIHNlcGFyYXRvciBpcyBvbmx5IGFsbG93ZWQgYmV0d2VlbiB0d28gZGlnaXRzQSBzdHJpbmcgbGl0ZXJhbCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nLgotIERpZCB5b3UgbWVhbiBgaW1wb3J0IHsgIiIgYXMgZm9vIH1gPwAlQiYAUgAAAHdCJgAMAAAAQSBzdHJpbmcgbGl0ZXJhbCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBleHBvcnRlZCBiaW5kaW5nIHdpdGhvdXQgYGZyb21gLidjb25zdCcgZGVjbGFyYXRpb25zIG11c3QgYmUgaW5pdGlhbGl6ZWREdXBsaWNhdGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFnICcnLgJDJgAkAAAAJkMmAAIAAABVbmtub3duIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncy5FeHBlY3RlZCBhbiBpZGVudGlmaWVyRXhwZWN0ZWQgYSBzZW1pY29sb25UcmFpbGluZyBjb21tYSBpcyBub3QgYWxsb3dlZEEgcmVzdCBwYXJhbWV0ZXIgbXVzdCBiZSBsYXN0IGluIGEgcGFyYW1ldGVyIGxpc3RQYXJhbWV0ZXIgY2Fubm90IGhhdmUgcXVlc3Rpb24gbWFyayBhbmQgaW5pdGlhbGl6ZXInIG1vZGlmaWVyIG11c3QgcHJlY2VkZSAnJyBtb2RpZmllci4VNyYAAQAAAAREJgAZAAAAHUQmAAsAAAAnIG1vZGlmaWVyIGFscmVhZHkgc2Vlbi4VNyYAAQAAAEBEJgAYAAAAYGRlY2xhcmVgIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gY2xhc3MgZWxlbWVudHMgb2YgdGhpcyBraW5kYGRlY2xhcmVgIG1vZGlmaWVyIG5vdCBhbGxvd2VkIGZvciBjb2RlIGFscmVhZHkgaW4gYW4gYW1iaWVudCBjb250ZXh0YGFzeW5jYCBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCBoZXJlQSByZXN0IHBhcmFtZXRlciBjYW5ub3QgYmUgb3B0aW9uYWxBIHJlc3QgcGFyYW1ldGVyIGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyanNjLnRhcmdldCBzaG91bGQgYmUgZXM1IG9yIHVwcGVyIHRvIHVzZSBnZXR0ZXIgLyBzZXR0ZXJMZWdhY3kgb2N0YWwgbGl0ZXJhbHMgYXJlIG5vdCBhdmFpbGFibGUgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCA1IGFuZCBoaWdoZXInIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbgAAABU3JgABAAAA5EUmADUAAABUeXBlIHBhcmFtZXRlcnMgY2Fubm90IGFwcGVhciBvbiBhIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uQW4gaW5kZXggc2lnbmF0dXJlIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBwYXJhbWV0ZXJUeXBlIHBhcmFtZXRlciBsaXN0IGNhbm5vdCBiZSBlbXB0eUludmFsaWQgdXNlIG9mICdhcmd1bWVudHMnIGluIHN0cmljdCBtb2RlJ2RlbGV0ZScgY2Fubm90IGJlIGNhbGxlZCBvbiBhbiBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlQSAnYnJlYWsnIHN0YXRlbWVudCBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIG9yIHN3aXRjaCBzdGF0ZW1lbnRUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSBgZm9yLi4ub2ZgIHN0YXRlbWVudCBtYXkgbm90IGJlIGBhc3luY2BKdW1wIHRhcmdldCBjYW5ub3QgY3Jvc3MgZnVuY3Rpb24gYm91bmRhcnlFeHByZXNzaW9uIGV4cGVjdGVkdHlwZSBleHBlY3RlZER1cGxpY2F0ZSBsYWJlbEEgJ2NvbnRpbnVlJyBzdGF0ZW1lbnQgY2FuIG9ubHkganVtcCB0byBhIGxhYmVsIG9mIGFuIGVuY2xvc2luZyBpdGVyYXRpb24gc3RhdGVtZW50QSAnYnJlYWsnIHN0YXRlbWVudCBjYW4gb25seSBqdW1wIHRvIGEgbGFiZWwgb2YgYW4gZW5jbG9zaW5nIHN0YXRlbWVudFZhcmlhYmxlIGRlY2xhcmF0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5bGl0ZXJhbCBpbiBhbiBpbXBvcnQgdHlwZSBzaG91bGQgYmUgc3RyaW5nIGxpdGVyYWxBbiBvYmplY3QgbWVtYmVyIGNhbm5vdCBiZSBkZWNsYXJlZCBvcHRpb25hbENvbXB1dGVkIHByb3BlcnR5IG5hbWVzIGFyZSBub3QgYWxsb3dlZCBpbiBlbnVtc0EgY29tbWEgZXhwcmVzc2lvbiBpcyBub3QgYWxsb3dlZCBpbiBhIGNvbXB1dGVkIHByb3BlcnR5IG5hbWVgZXh0ZW5kc2AgY2xhdXNlIGFscmVhZHkgc2Vlbi4nZXh0ZW5kcycgY2xhdXNlIG11c3QgcHJlY2VkZSAnaW1wbGVtZW50cycgY2xhdXNlLkNsYXNzZXMgY2FuIG9ubHkgZXh0ZW5kIGEgc2luZ2xlIGNsYXNzYGltcGxlbWVudHNgIGNsYXVzZSBhbHJlYWR5IHNlZW5BbiBpbXBsZW1lbnRhdGlvbiBjYW5ub3QgYmUgZGVjbGFyZWQgaW4gYW1iaWVudCBjb250ZXh0c01vZGlmaWVycyBjYW5ub3QgYXBwZWFyIGhlcmVNZXJnZSBjb25mbGljdCBtYXJrZXIgZW5jb3VudGVyZWQuVHlwZSBhbm5vdGF0aW9uIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbkNhdGNoIGNsYXVzZSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBhIHR5cGUgYW5ub3RhdGlvbmBhYnN0cmFjdGAgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgY2xhc3Mgb3IgbWV0aG9kIGRlY2xhcmF0aW9uJyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCB3aXRoICcAAAAVNyYAAQAAAFVLJgAgAAAAHUQmAAsAAABBYnN0cmFjdCBtZXRob2RzIGNhbiBvbmx5IGFwcGVhciB3aXRoaW4gYW4gYWJzdHJhY3QgY2xhc3MuQWJzdHJhY3QgbWV0aG9kIGNhbm5vdCBoYXZlIGFuIGltcGxlbWVudGF0aW9uLkFic3RyYWN0IHByb3BlcnR5IGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyLicgbW9kaWZpZXIgY2Fubm90IGFwcGVhciBvbiBhIHR5cGUgcGFyYW1ldGVyAAAAFTcmAAEAAAAlTCYALAAAACcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgdHlwZSBwYXJhbWV0ZXIgb2YgYSBjbGFzcywgaW50ZXJmYWNlIG9yIHR5cGUgYWxpYXMAABU3JgABAAAAZEwmAFIAAAAnIG1vZGlmaWVyIGNhbiBvbmx5IGFwcGVhciBvbiBhIHR5cGUgcGFyYW1ldGVyIG9mIGEgZnVuY3Rpb24sIG1ldGhvZCBvciBjbGFzcwAAABU3JgABAAAAyEwmAE0AAABUaGUgJ3R5cGUnIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIG9uIGEgbmFtZWQgaW1wb3J0IHdoZW4gJ2ltcG9ydCB0eXBlJyBpcyB1c2VkIG9uIGl0cyBpbXBvcnQgc3RhdGVtZW50LlRoZSAndHlwZScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgb24gYSBuYW1lZCBleHBvcnQgd2hlbiAnZXhwb3J0IHR5cGUnIGlzIHVzZWQgb24gaXRzIGV4cG9ydCBzdGF0ZW1lbnQuQSBwYXJhbWV0ZXIgcHJvcGVydHkgaXMgb25seSBhbGxvd2VkIGluIGEgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb25BIHBhcmFtZXRlciBpbml0aWFsaXplciBpcyBvbmx5IGFsbG93ZWQgaW4gYSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvblRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IGV4cHJlc3Npb24gbXVzdCBiZSBhIHZhcmlhYmxlIG9yIGEgcHJvcGVydHkgYWNjZXNzLlRoZSAnd2l0aCcgc3RhdGVtZW50IGlzIG5vdCBzdXBwb3J0ZWQuIEFsbCBzeW1ib2xzIGluIGEgJ3dpdGgnIGJsb2NrIHdpbGwgaGF2ZSB0eXBlICdhbnknLkludmFsaWQgY2xhc3MgbmFtZWludGVyZmFjZSBuYW1lIGlzIGludmFsaWRBbiBlbnVtIG1lbWJlciBjYW5ub3QgaGF2ZSBhIG51bWVyaWMgbmFtZVRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhICdmb3IuLi5vZicgc3RhdGVtZW50IGNhbm5vdCB1c2UgYSB0eXBlIGFubm90YXRpb25UaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSAnZm9yLi4uaW4nIHN0YXRlbWVudCBjYW5ub3QgYmUgYSBkZXN0cnVjdHVyaW5nIHBhdHRlcm5BbiBpbnRlcmZhY2UgY2FuIG9ubHkgZXh0ZW5kIGFuIGlkZW50aWZpZXIvcXVhbGlmaWVkLW5hbWUgd2l0aCBvcHRpb25hbCB0eXBlIGFyZ3VtZW50cy5UaGUgb3BlcmFuZCBvZiBhIGRlbGV0ZSBvcGVyYXRvciBtdXN0IGJlIGEgcHJvcGVydHkgcmVmZXJlbmNlLlRoaXMgbWVtYmVyIGNhbm5vdCBoYXZlIGFuICdvdmVycmlkZScgbW9kaWZpZXIgYmVjYXVzZSBpdHMgY29udGFpbmluZyBjbGFzcyBkb2VzIG5vdCBleHRlbmQgYW5vdGhlciBjbGFzcy5EZWNvcmF0b3JzIG1heSBub3QgYXBwZWFyIGFmdGVyIGBleHBvcnRgIG9yIGBleHBvcnQgZGVmYXVsdGAgaWYgdGhleSBhbHNvIGFwcGVhciBiZWZvcmUgYGV4cG9ydGAuQW4gYWNjZXNzaWJpbGl0eSBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcHJpdmF0ZSBpZGVudGlmaWVyLlR5cGUgYW5ub3RhdGlvbnMgbXVzdCBjb21lIGJlZm9yZSBkZWZhdWx0IGFzc2lnbm1lbnRzVHlwZXNjcmlwdCBub24tbnVsbCBhc3NlcnRpb24gb3BlcmF0b3IgaXMgbm90IGFsbG93ZWQgd2l0aCAnAANSJgA8AAAAFTcmAAEAAABUaGlzIHN5bnRheCBpcyByZXNlcnZlZCBpbiBmaWxlcyB3aXRoIHRoZSAubXRzIG9yIC5jdHMgZXh0ZW5zaW9uLiBVc2UgYW4gYGFzYCBleHByZXNzaW9uIGluc3RlYWQuVGhpcyBzeW50YXggaXMgcmVzZXJ2ZWQgaW4gZmlsZXMg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AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBPT09PTw8PDw8ID4+Pj4gY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvbW9kLnJzAABPYCYAJwAAAHEBAAAWAAAACC4mADUAAADRAAAAFAAAAE9gJgAnAAAA2AEAACgAAABPYCYAJwAAAOQBAAAeAAAAT2AmACcAAACYAAAAFQAAAMBUJgAzAAAAMQAAABcAAADAVCYAMwAAADYAAAAeAAAAT2AmACcAAACTAgAAJgAAAE9gJgAnAAAA/AIAACoAAABmYWlsZWQgdG8gcGFyc2UgZmxvYXQgbGl0ZXJhbAAAAE9gJgAnAAAATAQAABkAAABPYCYAJwAAAPsDAABWAAAAT2AmACcAAACtBAAAPgAAAL7LJgABAAAAA8smAAEAAABPYCYAJwAAAO4EAAAlAAAAT2AmACcAAADvBAAANQAAAGZhaWxlZCB0byBwYXJzZSBudW1iZXIgYXMgY2hhcgAAT2AmACcAAADQBAAADgAAAGZhaWxlZCB0byBwYXJzZSBzdHJpbmcgYXMgbnVtYmVyT2AmACcAAADOBAAALwAAADQgaGV4IGNoYXJhY3RlcnMxLTYgaGV4IGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIDAgdG8gMTBGRkZGLjEtNiBoZXggY2hhcmFjdGVyczIgaGV4IGNoYXJhY3RlcnMAAE9gJgAnAAAAYAYAADkAAABcdQAAWGImAAIAAAACAAAAAAAAAAAABAAAAAAAAAAAACAAAOl8fHx8fCAAAE9gJgAnAAAAZggAACAAAABPYCYAJwAAAKsIAAAmAAAAAQAAAAAAAABj4iYAAQAAAAEAAAAAAAAAIeImAAEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBVc2luZyBpcyBub3QgYSB2YWxpZCBkZWNsYXJhdGlvbiBmb3IgYGRlY2xhcmVgIGtleXdvcmTEYiYAYAAAAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci90eXBlc2NyaXB0LnJzACxjJgAvAAAALAAAABwAAABFb2ZEZWNsTm90QWxsb3dlZFVzaW5nRGVjbE5vdEFsbG93ZWRVc2luZ0RlY2xOb3RBbGxvd2VkRm9yRm9ySW5Mb29wVXNpbmdEZWNsTm90RW5hYmxlZEludmFsaWROYW1lSW5Vc2luZ0RlY2xJbml0UmVxdWlyZWRGb3JVc2luZ0RlY2xQcml2YXRlTmFtZUluSW50ZXJmYWNlSW52YWxpZFN1cGVyQ2FsbEludmFsaWRTdXBlckludmFsaWRTdXBlclByaXZhdGVOYW1lSW52YWxpZE5ld1RhcmdldEludmFsaWRJbXBvcnRBcnJvd05vdEFsbG93ZWRFeHBvcnROb3RBbGxvd2VkR2V0dGVyU2V0dGVyQ2Fubm90QmVSZWFkb25seUdldHRlclNldHRlckNhbm5vdEJlT3B0aW9uYWxHZXR0ZXJQYXJhbVNldHRlclBhcmFtVG9wTGV2ZWxBd2FpdEluU2NyaXB0TGVnYWN5RGVjaW1hbExlZ2FjeU9jdGFsSW52YWxpZElkZW50Q2hhckV4cGVjdGVkRGlnaXRyYWRpeFNldHRlclBhcmFtUmVxdWlyZWRSZXN0UGF0SW5TZXR0ZXJVbnRlcm1pbmF0ZWRCbG9ja0NvbW1lbnRVbnRlcm1pbmF0ZWRTdHJMaXRFeHBlY3RlZFVuaWNvZGVFc2NhcGVFc2NhcGVJblJlc2VydmVkV29yZHdvcmRVbnRlcm1pbmF0ZWRSZWdFeHBVbnRlcm1pbmF0ZWRUcGxJZGVudEFmdGVyTnVtVW5leHBlY3RlZENoYXJJbnZhbGlkU3RyRXNjYXBlSW52YWxpZFVuaWNvZGVFc2NhcGVCYWRDaGFyYWN0ZXJFc2NhcGVTZXF1ZW5jZWV4cGVjdGVkTnVtTGl0VGVybWluYXRlZFdpdGhFeHBMZWdhY3lDb21tZW50SW5Nb2R1bGVJbnZhbGlkSWRlbnRJblN0cmljdEludmFsaWRJZGVudEluQXN5bmNFdmFsQW5kQXJndW1lbnRzSW5TdHJpY3RBcmd1bWVudHNJbkNsYXNzRmllbGRJbGxlZ2FsTGFuZ3VhZ2VNb2RlRGlyZWN0aXZlVW5hcnlJbkV4cGxlZnRfc3Bhbkhhc2hMaW5lQnJlYWtJblRocm93TGluZUJyZWFrQmVmb3JlQXJyb3dVbmV4cGVjdGVkZ290VW5leHBlY3RlZFRva2VuV2l0aFN1Z2dlc3Rpb25zY2FuZGlkYXRlX2xpc3RSZXNlcnZlZFdvcmRJbkltcG9ydEFzc2lnblByb3BlcnR5RXhwZWN0ZWRFeHBlY3RlZFNlbWlGb3JFeHByU3RtdEF3YWl0U3RhclJlc2VydmVkV29yZEluT2JqU2hvcnRoYW5kT3JQYXROdWxsaXNoQ29hbGVzY2luZ1dpdGhMb2dpY2FsT3BNdWx0aXBsZURlZmF1bHRwcmV2aW91c0NvbW1hQWZ0ZXJSZXN0RWxlbWVudE5vbkxhc3RSZXN0UGFyYW1TcHJlYWRJblBhcmVuRXhwckVtcHR5UGFyZW5FeHBySW52YWxpZFBhdEludmFsaWRFeHByTm90U2ltcGxlQXNzaWduSW52YWxpZEFzc2lnblRhcmdldEV4cGVjdGVkSWRlbnRFeHBlY3RlZFNlbWlEdXBsaWNhdGVMYWJlbEFzeW5jR2VuZXJhdG9yTm9uVG9wTGV2ZWxJbXBvcnRFeHBvcnRJbXBvcnRFeHBvcnRJblNjcmlwdEltcG9ydE1ldGFJblNjcmlwdFBhdFZhcldpdGhvdXRJbml0V2l0aEluU3RyaWN0UmV0dXJuTm90QWxsb3dlZFRvb01hbnlWYXJJbkZvckluSGVhZFZhckluaXRpYWxpemVySW5Gb3JJbkhlYWRMYWJlbGxlZEdlbmVyYXRvck9yQXN5bmNMYWJlbGxlZEZ1bmN0aW9uSW5TdHJpY3RZaWVsZFBhcmFtSW5HZW5Bd2FpdFBhcmFtSW5Bc3luY0F3YWl0Rm9yU3RtdEF3YWl0SW5GdW5jdGlvblVudGVybWluYXRlZEpTWENvbnRlbnRzRW1wdHlKU1hBdHRySW52YWxpZEpTWFZhbHVlSlNYRXhwZWN0ZWRDbG9zaW5nVGFnRm9yTHRHdEpTWEV4cGVjdGVkQ2xvc2luZ1RhZ0ludmFsaWRMZWFkaW5nRGVjb3JhdG9yRGVjb3JhdG9yT25FeHBvcnRUc1JlcXVpcmVkQWZ0ZXJPcHRpb25hbFRzSW52YWxpZFBhcmFtUHJvcFBhdFNwYWNlQmV0d2Vlbkhhc2hBbmRJZGVudEFzeW5jQ29uc3RydWN0b3JQcm9wZXJ0eU5hbWVkQ29uc3RydWN0b3JQcml2YXRlQ29uc3RydWN0b3JQcml2YXRlTmFtZU1vZGlmaWVyQ29uc3RydWN0b3JBY2Nlc3NvclJlYWRPbmx5TWV0aG9kR2VuZXJhdG9yQ29uc3RydWN0b3JEdXBsaWNhdGVDb25zdHJ1Y3RvclRzQmluZGluZ1BhdENhbm5vdEJlT3B0aW9uYWxTdXBlckNhbGxPcHRpb25hbE9wdENoYWluQ2Fubm90Rm9sbG93Q29uc3RydWN0b3JDYWxsVGFnZ2VkVHBsSW5PcHRDaGFpblRyYWlsaW5nQ29tbWFJbnNpZGVJbXBvcnRJbXBvcnRSZXF1aXJlc09uZU9yVHdvQXJnc0V4cG9ydERlZmF1bHRXaXRoT3V0RnJvbUV4cG9ydEV4cGVjdEZyb21Eb3RzV2l0aG91dElkZW50aWZpZXJOdW1lcmljU2VwYXJhdG9ySXNBbGxvd2VkT25seUJldHdlZW5Ud29EaWdpdHNJbXBvcnRCaW5kaW5nSXNTdHJpbmdFeHBvcnRCaW5kaW5nSXNTdHJpbmdDb25zdERlY2xhcmF0aW9uc1JlcXVpcmVJbml0aWFsaXphdGlvbkR1cGxpY2F0ZWRSZWdFeHBGbGFnc1Vua25vd25SZWdFeHBGbGFnc1RTMTAwM1RTMTAwNVRTMTAwOVRTMTAxNFRTMTAxNVRTMTAyOVRTMTAzMFRTMTAzMVRTMTAzOFRTMTA0MlRTMTA0N1RTMTA0OFRTMTA1NlRTMTA4NVRTMTA4OVRTMTA5MlRTMTA5NlRTMTA5OFRTMTEwMFRTMTEwMlRTMTEwNVRTMTEwNlRTMTEwN1RTMTEwOVRTMTExMFRTMTExNFRTMTExNVRTMTExNlRTMTEyM1RTMTE0MVRTMTE2MlRTMTE2NFRTMTE3MVRTMTE3MlRTMTE3M1RTMTE3NFRTMTE3NVRTMTE4M1RTMTE4NFRTMTE4NVRTMTA5M1RTMTE5NlRTMTI0MlRTMTI0M1RTMTI0NFRTMTI0NVRTMTI2N1RTMTI3M1RTMTI3NFRTMTI3N1RTMjIwNlRTMjIwN1RTMjM2OVRTMjM3MVRTMjQwNlRTMjQxMFRTMjQxNFRTMjQyN1RTMjQ1MlRTMjQ4M1RTMjQ5MVRTMjQ5OVRTMjcwM1RTNDExMlRTODAzOFRTMTgwMTBUU1R5cGVBbm5vdGF0aW9uQWZ0ZXJBc3NpZ25Uc05vbk51bGxBc3NlcnRpb25Ob3RBbGxvd2VkV2l0aExhYmVsaW5uZXJub3RlUmVzZXJ2ZWRUeXBlQXNzZXJ0aW9uUmVzZXJ2ZWRBcnJvd1R5cGVQYXJhbUVtcHR5VHlwZUFyZ3VtZW50TGlzdHF1b3RhbXBhcG9zbHRndG5ic3BpZXhjbGNlbnRwb3VuZGN1cnJlbnllbmJydmJhcnNlY3R1bWxjb3B5b3JkZmxhcXVvbm90c2h5cmVnbWFjcmRlZ3BsdXNtbnN1cDJzdXAzYWN1dGVtaWNyb3BhcmFtaWRkb3RjZWRpbHN1cDFvcmRtcmFxdW9mcmFjMTRmcmFjMTJmcmFjMzRpcXVlc3RBZ3JhdmVBYWN1dGVBY2lyY0F0aWxkZUF1bWxBcmluZ0FFbGlnQ2NlZGlsRWdyYXZlRWFjdXRlRWNpcmNFdW1sSWdyYXZlSWFjdXRlSWNpcmNJdW1sRVRITnRpbGRlT2dyYXZlT2FjdXRlT2NpcmNPdGlsZGVPdW1sdGltZXNPc2xhc2hVZ3JhdmVVYWN1dGVVY2lyY1V1bWxZYWN1dGVUSE9STnN6bGlnYWdyYXZlYWFjdXRlYWNpcmNhdGlsZGVhdW1sYXJpbmdhZWxpZ2NjZWRpbGVncmF2ZWVhY3V0ZWVjaXJjZXVtbGlncmF2ZWlhY3V0ZWljaXJjaXVtbGV0aG50aWxkZW9ncmF2ZW9hY3V0ZW9jaXJjb3RpbGRlb3VtbGRpdmlkZW9zbGFzaHVncmF2ZXVhY3V0ZXVjaXJjdXVtbHlhY3V0ZXRob3JueXVtbE9FbGlnb2VsaWdTY2Fyb25zY2Fyb25ZdW1sZm5vZmNpcmN0aWxkZUFscGhhQmV0YUdhbW1hRGVsdGFFcHNpbG9uWmV0YUV0YVRoZXRhSW90YUthcHBhTGFtYmRhTXVOdVhpT21pY3JvblBpUmhvU2lnbWFUYXVVcHNpbG9uUGhpQ2hpUHNpT21lZ2FhbHBoYWJldGFnYW1tYWRlbHRhZXBzaWxvbnpldGFldGF0aGV0YWlvdGFrYXBwYWxhbWJkYW11bnV4aW9taWNyb25waXJob3NpZ21hZnNpZ21hdGF1dXBzaWxvbnBoaWNoaXBzaW9tZWdhdGhldGFzeW11cHNpaHBpdmVuc3BlbXNwdGhpbnNwenduanp3amxybXJsbW5kYXNobWRhc2hsc3F1b3JzcXVvc2JxdW9sZHF1b3JkcXVvYmRxdW9kYWdnZXJEYWdnZXJidWxsaGVsbGlwcGVybWlscHJpbWVQcmltZWxzYXF1b3JzYXF1b29saW5lZnJhc2xldXJvaW1hZ2V3ZWllcnByZWFsdHJhZGVhbGVmc3ltbGFycnVhcnJyYXJyZGFycmhhcnJjcmFycmxBcnJ1QXJyckFycmRBcnJoQXJyZm9yYWxscGFydGV4aXN0ZW1wdHluYWJsYWlzaW5ub3Rpbm5pcHJvZHN1bW1pbnVzbG93YXN0cmFkaWNpbmZpbmFuZ2FuZG9yY2FwY3VwaW50dGhlcmU0c2ltY29uZ2FzeW1wbmVlcXVpdmxlZ2VzdWJzdXBuc3Vic3ViZXN1cGVvcGx1c290aW1lc3BlcnBzZG90bGNlaWxyY2VpbGxmbG9vcnJmbG9vcmxhbmdyYW5nbG96c3BhZGVzY2x1YnNoZWFydHNkaWFtc1QEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFUEAABWBAAAVwQAAFgEAABZBAAAWgQAAFYEAABbBAAAXAQAAF0EAABeBAAAXwQAAGAEAABhBAAAYgQAAGMEAABkBAAAZAQAAGQEAABkBAAAZAQAAGQEAABkBAAAZAQAAGQEAABlBAAAZgQAAGcEAABoBAAAaQQAAGoEAABrBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABsBAAAWAQAAG0EAABuBAAAWAQAAG8EAABwBAAAcQQAAHIEAABzBAAAdAQAAHUEAAB2BAAAWAQAAHcEAABYBAAAeAQAAHkEAAB6BAAAewQAAHwEAAB9BAAAWAQAAH4EAAB/BAAAgAQAAIEEAACCBAAAgwQAAFgEAACEBAAAWAQAAIUEAACGBAAAhwQAAIgEAABUBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAABXb3JkVGVtcGxhdGVKc3hUZXh0AIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIsEAACMBAAAiwQAAIsEAACMBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAiwQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAjQQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAABtZXNzYWdlc3RydWN0IFRzU3ludGF4L2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2NvbW1vbi9zcmMvc3ludGF4X3Bvcy9oeWdpZW5lLnJzABZ7JgBFAAAA0AEAADYAAABjYWxsZWQgZXhwZWN0IG9uIAAAAGx7JgARAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfYXN0L3NyYy9wYXQucnOIeyYAOAAAAA0AAAAUAAAAc3BhblN0ckJvb2xOdW1CaWdJbnRSZWdleEpTWFRleHQAAAAACAAAAAQAAAABAQAAdmFsdWVyYXdUcGxleHByc3F1YXNpcwAAAAAAAAQAAAAEAAAAhgEAAFByaXZhdGVQdWJsaWNUaGlzVW5hcnlVcGRhdGVCaW5NZW1iZXJTdXBlclByb3BDb25kQ2FsbE5ld1NlcUxpdFRhZ2dlZFRwbEFycm93WWllbGRNZXRhUHJvcEF3YWl0UGFyZW5KU1hNZW1iZXJKU1hOYW1lc3BhY2VkTmFtZUpTWEVtcHR5SlNYRWxlbWVudEpTWEZyYWdtZW50VHNUeXBlQXNzZXJ0aW9uVHNDb25zdEFzc2VydGlvblRzTm9uTnVsbFRzQXNUc0luc3RhbnRpYXRpb25Uc1NhdGlzZmllc1ByaXZhdGVOYW1lT3B0Q2hhaW5leHBmbGFnc1Nob3J0aGFuZEtleVZhbHVlR2V0dGVyU2V0dGVyTWV0aG9kQmxvY2tFbXB0eURlYnVnZ2VyV2l0aFJldHVybkxhYmVsZWRCcmVha0NvbnRpbnVlSWZTd2l0Y2hUaHJvd1RyeVdoaWxlRG9XaGlsZUZvckZvckluRm9yT2ZEZWNsU3VwZXJOdW1iZXIAAAAAAAQAAAAEAAAAgAEAAJQEAAAMAAAABAAAAEcCAACVBAAADAAAAAQAAACWBAAAlwQAAAQAAAAEAAAAkwEAAAAAAAABAAAAAQAAAEsBAACYBAAABAAAAAQAAAAFAgAAmQQAAAQAAAAEAAAAkAEAAAAAAAAEAAAABAAAAJoEAABjdHh0ZGVjb3JhdG9yc2JvZHlzdXBlcl9jbGFzc2lzX2Fic3RyYWN0dHlwZV9wYXJhbXNzdXBlcl90eXBlX3BhcmFtc9B7JgAEAAAAMH4mAAQAAAA0fiYACgAAAD5+JgAEAAAAQn4mAAsAAABNfiYACwAAAFh+JgALAAAAY34mABEAAACA5iYACgAAAJsEAAAYAAAACAAAAEgBAABGbkRlY2xpZGVudEltcG9ydEZuRXhwcgAAAAAABAAAAAQAAABmAgAAcGhhc2VzeW1vcHRpb25hbEpTWEF0dHJuYW1lSlNYRW1wdHlFeHByAAAAAAAEAAAABAAAAEkBAABSZXN0UGF0ZG90M190b2tlbmFyZ3R5cGVfYW5unAQAAAQAAAAEAAAAegEAAElmU3RtdHRlc3Rjb25zYWx0VmFyRGVjbGtpbmRkZWNsc0JpbkV4cHJvcGxlZnRyaWdodE5ld0V4cHJjYWxsZWVhcmdzdHlwZV9hcmdzT3B0Q2FsbFNlcUV4cHJBcnJheVBhdGVsZW1zVXNpbmdEZWNsUGF0Rm9yU3RtdGluaXR1cGRhdGVUcnlTdG10YmxvY2toYW5kbGVyZmluYWxpemVyQXJyYXlMaXRDYWxsRXhwckNvbmRFeHByVGhpc0V4cHJKU1hNZW1iZXJFeHByQXNzaWduUGF0T2JqZWN0UGF0cHJvcHNDb21wdXRlZEV4cHJTdG10ZXhwcldpdGhTdG10b2JqQ2xhc3NEZWNsaXNfYXdhaXQAAACdBAAADAAAAAQAAACeBAAAnwQAAAQAAAAEAAAAoAQAAHBhcmFtc2lzX2FzeW5jaXNfZ2VuZXJhdG9ycmV0dXJuX3R5cGUAAADQeyYABAAAADB+JgAEAAAAkIAmAAYAAAA+fiYABAAAAJaAJgAIAAAAnoAmAAwAAABYfiYACwAAAKqAJgALAAAAQXJyb3dFeHByQXdhaXRFeHByQ2xhc3NFeHByT2JqZWN0TGl0UGFyZW5FeHBydGFndHBsVW5hcnlFeHByWWllbGRFeHByZGVsZWdhdGVQYXJhbXBhdG9wZW5pbmdjaGlsZHJlbmNsb3NpbmdCbG9ja1N0bXRzdG10c0JyZWFrU3RtdGxhYmVsRW1wdHlTdG10Rm9ySW5TdG10Rm9yT2ZTdG10VGhyb3dTdG10V2hpbGVTdG10oQQAACAAAAAIAAAA1QEAAKIEAAAEAAAABAAAANYBAAAAAAAAAQAAAAEAAACjBAAAa2V5aXNfc3RhdGljYWNjZXNzaWJpbGl0eWlzX29wdGlvbmFsaXNfb3ZlcnJpZGVkZWZpbml0ZQDQeyYABAAAANyBJgADAAAAAHwmAAUAAABAfyYACAAAAN+BJgAJAAAANH4mAAoAAADogSYADQAAAE1+JgALAAAA9YEmAAsAAAAAgiYACwAAAFPiJgAIAAAA7tAmAAcAAAALgiYACAAAAENsYXNzUHJvcERlY29yYXRvckFzc2lnbkV4cHJNZW1iZXJFeHBycHJvcFRwbEVsZW1lbnR0YWlsY29va2VkVXBkYXRlRXhwcnByZWZpeElkZW50TmFtZUFzc2lnblByb3BHZXR0ZXJQcm9wTWV0aG9kUHJvcFNldHRlclByb3B0aGlzX3BhcmFtcGFyYW1SZXR1cm5TdG10U3dpdGNoQ2FzZVN3aXRjaFN0bXRkaXNjcmltaW5hbnRjYXNlc0pTWEV4cHJDb250YWluZXJDYXRjaENsYXVzZURvV2hpbGVTdG10TGFiZWxlZFN0bXRDb25zdHJ1Y3RvclByaXZhdGVNZXRob2RQcml2YXRlUHJvcFRzSW5kZXhTaWduYXR1cmVTdGF0aWNCbG9ja0F1dG9BY2Nlc3NvcqQEAAAEAAAABAAAAKUEAAAAAAAAAQAAAAEAAACmBAAA0HsmAAQAAADcgSYAAwAAAGnlJgAIAAAAcH8mAAQAAADfgSYACQAAAOiBJgANAAAATX4mAAsAAAD1gSYACwAAAACCJgALAAAAQ2xhc3NNZXRob2QApwQAAAwAAAAEAAAAqAQAAKkEAAAYAAAABAAAAKoEAADQeyYABAAAADB+JgAEAAAA3IEmAAMAAACQgCYABgAAAD5+JgAEAAAA6IEmAA0AAAD1gSYACwAAAKsEAAAQAAAACAAAAKwEAADQeyYABAAAADB+JgAEAAAA3IEmAAMAAAAAfCYABQAAAEB/JgAIAAAA34EmAAkAAAA0fiYACgAAAOiBJgANAAAA9YEmAAsAAAAAgiYACwAAAFPiJgAIAAAAC4ImAAgAAABTaW1wbGVFeHByT3JTcHJlYWRzcHJlYWRNZXRhUHJvcEV4cHJPcHRDaGFpbkV4cHJiYXNlU3ByZWFkUHJvcAAArQQAAAwAAAAEAAAArgQAAJCAJgAGAAAANH4mAAoAAADQeyYABAAAADB+JgAEAAAAPn4mAAQAAACegCYADAAAAJaAJgAIAAAAWH4mAAsAAACqgCYACwAAAEZ1bmN0aW9uTW9kdWxlRGVjbFN0bXRBc3NpZ25QYXRQcm9wS2V5VmFsdWVQcm9wQ29udGludWVTdG10RGVidWdnZXJTdG10VHNLZXl3b3JkVHlwZVRzVGhpc1R5cGVUc0ZuT3JDb25zdHJ1Y3RvclR5cGVUc1R5cGVSZWZUc1R5cGVRdWVyeVRzVHlwZUxpdFRzQXJyYXlUeXBlVHNUdXBsZVR5cGVUc09wdGlvbmFsVHlwZVRzUmVzdFR5cGVUc1VuaW9uT3JJbnRlcnNlY3Rpb25UeXBlVHNDb25kaXRpb25hbFR5cGVUc0luZmVyVHlwZVRzUGFyZW50aGVzaXplZFR5cGVUc1R5cGVPcGVyYXRvclRzSW5kZXhlZEFjY2Vzc1R5cGVUc01hcHBlZFR5cGVUc0xpdFR5cGVUc1R5cGVQcmVkaWNhdGVUc0ltcG9ydFR5cGUArwQAACAAAAAIAAAAsAQAANB7JgAEAAAA3IEmAAMAAAAAfCYABQAAAEB/JgAIAAAA34EmAAkAAAA0fiYACgAAAOiBJgANAAAATX4mAAsAAAAAgiYACwAAAAuCJgAIAAAAVmFyRGVjbGFyYXRvclNwcmVhZEVsZW1lbnRTdXBlclByb3BFeHByQmluZGluZ0lkZW50aWRKU1hTcHJlYWRDaGlsZEtleVZhbHVlUGF0UHJvcFRzQXNFeHByAACxBAAADAAAAAQAAAAzAgAAVHNGblR5cGVsaXRUc1R5cGVBbm5tZW1iZXJzdHlwZV9uYW1lSlNYQ2xvc2luZ0VsZW1lbnRuc0pTWE9wZW5pbmdFbGVtZW50YXR0cnNzZWxmX2Nsb3NpbmcAAACyBAAABAAAAAQAAACHAQAARXhwb3J0QWxsc3JjdHlwZV9vbmx5Q29tcHV0ZWRQcm9wTmFtZVRzRW51bURlY2xpc19jb25zdEpTWENsb3NpbmdGcmFnbWVudEpTWE9wZW5pbmdGcmFnbWVudEV4cG9ydERlY2xkZWNsAAAAswQAAAwAAAAEAAAAtAQAALUEAAAEAAAABAAAALYEAABzcGVjaWZpZXJzAADQeyYABAAAAKSIJgAKAAAAIYgmAAMAAAAkiCYACQAAAL/iJgAEAAAA9H4mAAUAAABJbXBvcnREZWNsRXhwb3J0TmFtZWRFeHBvcnREZWZhdWx0RGVjbEV4cG9ydERlZmF1bHRFeHByVHNJbXBvcnRFcXVhbHNUc0V4cG9ydEFzc2lnbm1lbnRUc05hbWVzcGFjZUV4cG9ydGVsZW1fdHlwZXR5cGVfcGFyYW1Uc0VudGl0eU5hbWVUc0V4dGVybmFsTW9kdWxlUmVmAAAAAAAABAAAAAQAAAC3BAAA0HsmAAQAAAA0fiYACgAAAOiBJgANAAAAAIImAAsAAABT4iYACAAAAAWDJgAFAAAAVHNQYXJhbVByb3BlbGVtX3R5cGVzAAAAuAQAAAQAAAAEAAAAuQQAAAAAAAAEAAAABAAAALoEAABpc19pbmlzX291dGNvbnN0cmFpbnQAAADQeyYABAAAAAt/JgAEAAAA9IkmAAUAAAD5iSYABgAAAEeIJgAIAAAA/4kmAAoAAADk4yYABwAAAFRzVHlwZVBhcmFtZXhwcl9uYW1lVHNVbmlvblR5cGV0eXBlc1RzSW50ZXJmYWNlRGVjbEV2YWx1YXRpb25Tb3VyY2VEZWZlck5hbWVkRXhwb3J0VHNRdWFsaWZpZWROYW1lVHNFbnVtTWVtYmVycXVhbGlmaWVyYXR0cmlidXRlcwAAAAAAAAABAAAAAQAAALsEAAC8BAAAMAAAAAgAAAC9BAAAbmFtZV90eXBlAAAA0HsmAAQAAABT4iYACAAAAFGJJgAKAAAA6IomAAkAAAD8fiYACAAAAEB/JgAIAAAAvgQAACAAAAAIAAAAJAIAAAAAAAAEAAAABAAAAL8EAADQeyYABAAAAO7QJgAHAAAA9dAmAAYAAABf0CYACQAAAHOHJgACAAAAPn4mAAQAAABUc01vZHVsZURlY2xUc1RwbExpdFR5cGVQcm90ZWN0ZWRUcnVlUGx1c01pbnVzVHNNb2R1bGVCbG9ja1RzTm9uTnVsbEV4cHJUc0NhbGxTaWduYXR1cmVEZWNsVHNDb25zdHJ1Y3RTaWduYXR1cmVEZWNsVHNQcm9wZXJ0eVNpZ25hdHVyZVRzR2V0dGVyU2lnbmF0dXJlVHNTZXR0ZXJTaWduYXR1cmVUc01ldGhvZFNpZ25hdHVyZVRzVHVwbGVFbGVtZW50dHlUc0ludGVyZmFjZUJvZHnABAAADAAAAAQAAADBBAAAAAAAAAQAAAAEAAAAwgQAANB7JgAEAAAAc4cmAAIAAADu0CYABwAAAFh+JgALAAAAW+ImAAcAAAA+fiYABAAAAFRzTmFtZXNwYWNlRGVjbFRzU2F0aXNmaWVzRXhwclRzVHlwZUFsaWFzRGVjbFRzVHlwZVBhcmFtRGVjbHBhcmFtX25hbWVOYW1lc3BhY2VEZWZhdWx0TmFtZWRjaGVja190eXBlZXh0ZW5kc190eXBldHJ1ZV90eXBlZmFsc2VfdHlwZVRzQ29uc3RydWN0b3JUeXBlY29tcHV0ZWRUc0FueUtleXdvcmRUc1Vua25vd25LZXl3b3JkVHNOdW1iZXJLZXl3b3JkVHNPYmplY3RLZXl3b3JkVHNCb29sZWFuS2V5d29yZFRzQmlnSW50S2V5d29yZFRzU3RyaW5nS2V5d29yZFRzU3ltYm9sS2V5d29yZFRzVm9pZEtleXdvcmRUc1VuZGVmaW5lZEtleXdvcmRUc051bGxLZXl3b3JkVHNOZXZlcktleXdvcmRUc0ludHJpbnNpY0tleXdvcmQAAAAABAAAAAQAAAA0AgAA0HsmAAQAAADcgSYAAwAAADGNJgAIAAAA/H4mAAgAAACQgCYABgAAAEB/JgAIAAAAWH4mAAsAAABUc0V4cHJXaXRoVHlwZUFyZ3NUc0ltcG9ydEVxdWFsc0RlY2xpc19leHBvcnRpc190eXBlX29ubHltb2R1bGVfcmVmVHNJbnRlcnNlY3Rpb25UeXBlVHNJbXBvcnRDYWxsT3B0aW9uc29ial90eXBlaW5kZXhfdHlwZQAA0HsmAAQAAABT4iYACAAAANyBJgADAAAAMY0mAAgAAAD8fiYACAAAAEB/JgAIAAAARXhwb3J0TmFtZWRTcGVjaWZpZXJvcmlnZXhwb3J0ZWRJbXBvcnROYW1lZFNwZWNpZmllcmxvY2FsaW1wb3J0ZWRUc05hbWVzcGFjZUV4cG9ydERlY2xJbXBvcnRTdGFyQXNTcGVjaWZpZXJFeHBvcnREZWZhdWx0U3BlY2lmaWVySW1wb3J0RGVmYXVsdFNwZWNpZmllcgBa6yYASgAAAKgBAAAfAAAAVHNUeXBlUGFyYW1JbnN0YW50aWF0aW9uRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW5kZXhtYXAtMi4xMi4wL3NyYy9tYXAvY29yZS5yc8iPJgBkAAAAOwAAACMAAABpbmRleCBub3QgZm91bmQAyI8mAGQAAABLAAAACgAAAMiPJgBkAAAAGgIAAA0AAADIjyYAZAAAAKICAAAsAAAAyI8mAGQAAAB6AgAAIgAAAGFzc2VydGlvbiBmYWlsZWQ6IGluZGljZXMuY2FwYWNpdHkoKSAtIGluZGljZXMubGVuKCkgPj0gZW50cmllcy5sZW4oKQAAAMiPJgBkAAAAVAAAAAUAAADIjyYAZAAAAFYAAABEAAAAyI8mAGQAAABMAQAAFgAAAMiPJgBkAAAAWAEAADgAAADIjyYAZAAAAMgBAAA0AAAAyI8mAGQAAAAzAAAADwAAAEWyJgA6AAAAdwYAABQAAABjcmF0ZXMvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlL3NyYy9maXhlci5yc0SRJgAsAAAAxgAAAEAAAABEkSYALAAAAG8DAAAjAAAARJEmACwAAAB/AwAAMQAAAESRJgAsAAAAiwMAACkAAABjcmF0ZXMvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlL3NyYy9oZWxwZXJzL21vZC5yc0Bzd2MvaGVscGVycy9fL18AAOKRJgAQAAAAY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS9zcmMvcmVuYW1lL2FuYWx5emVyL3JldmVyc2VfbWFwLnJzAAD8kSYAQgAAAA4AAAAsAAAAY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS9zcmMvcmVuYW1lL2FuYWx5emVyL21vZC5ycwAAUJImADoAAAAuAAAAGwAAAFCSJgA6AAAAOgAAADcAAABQkiYAOgAAAIsAAAAdAAAATWFya2VyIHByb3ZpZGVkIHRvIHJlc29sdmVyIHNob3VsZCBub3QgYmUgdGhlIHJvb3QgbWFyawC8kiYANwAAAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX2Jhc2Uvc3JjL3Jlc29sdmVyL21vZC5ycwD8kiYAMwAAAIcAAAAFAAAA/JImADMAAADUBgAANgAAAMMEAACwkSYAMgAAAPsAAAABAAAAX2FwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2FwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yX2FycmF5X2xpa2VfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9fYXJyYXlfbGlrZV90b19hcnJheV9hcnJheV93aXRoX2hvbGVzQHN3Yy9oZWxwZXJzL18vX2FycmF5X3dpdGhfaG9sZXNfYXJyYXlfd2l0aG91dF9ob2xlc0Bzd2MvaGVscGVycy9fL19hcnJheV93aXRob3V0X2hvbGVzX2Fzc2VydF90aGlzX2luaXRpYWxpemVkQHN3Yy9oZWxwZXJzL18vX2Fzc2VydF90aGlzX2luaXRpYWxpemVkX2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL19hc3luY19nZW5lcmF0b3JfYXN5bmNfZ2VuZXJhdG9yX2RlbGVnYXRlQHN3Yy9oZWxwZXJzL18vX2FzeW5jX2dlbmVyYXRvcl9kZWxlZ2F0ZV9hc3luY19pdGVyYXRvckBzd2MvaGVscGVycy9fL19hc3luY19pdGVyYXRvcl9hc3luY190b19nZW5lcmF0b3JAc3djL2hlbHBlcnMvXy9fYXN5bmNfdG9fZ2VuZXJhdG9yX2F3YWl0X2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL19hd2FpdF9hc3luY19nZW5lcmF0b3JfYXdhaXRfdmFsdWVAc3djL2hlbHBlcnMvXy9fYXdhaXRfdmFsdWVfY2FsbF9zdXBlckBzd2MvaGVscGVycy9fL19jYWxsX3N1cGVyX2NoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbkBzd2MvaGVscGVycy9fL19jaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb25fY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9kZXN0cnVjdHVyZUBzd2MvaGVscGVycy9fL19jbGFzc19hcHBseV9kZXNjcmlwdG9yX2Rlc3RydWN0dXJlX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0X2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0X2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlX2NsYXNzX2NhbGxfY2hlY2tAc3djL2hlbHBlcnMvXy9fY2xhc3NfY2FsbF9jaGVja19jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19maWVsZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2ZpZWxkX2Rlc2NyaXB0b3JfY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcl9jbGFzc19uYW1lX3Rkel9lcnJvckBzd2MvaGVscGVycy9fL19jbGFzc19uYW1lX3Rkel9lcnJvcl9jbGFzc19wcml2YXRlX2ZpZWxkX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2dldF9jbGFzc19wcml2YXRlX2ZpZWxkX2luaXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9pbml0X2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2VfYmFzZUBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2VfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXlAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXlfY2xhc3NfcHJpdmF0ZV9maWVsZF9zZXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9zZXRfY2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVfY2xhc3NfcHJpdmF0ZV9tZXRob2RfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX2dldF9jbGFzc19wcml2YXRlX21ldGhvZF9pbml0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX2luaXRfY2xhc3NfcHJpdmF0ZV9tZXRob2Rfc2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX3NldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX2dldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF91cGRhdGVAc3djL2hlbHBlcnMvXy9fY2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfdXBkYXRlX2NvbnN0cnVjdEBzd2MvaGVscGVycy9fL19jb25zdHJ1Y3RfY3JlYXRlX2NsYXNzQHN3Yy9oZWxwZXJzL18vX2NyZWF0ZV9jbGFzc19kZWNvcmF0ZUBzd2MvaGVscGVycy9fL19kZWNvcmF0ZV9kZWZhdWx0c0Bzd2MvaGVscGVycy9fL19kZWZhdWx0c19kZWZpbmVfZW51bWVyYWJsZV9wcm9wZXJ0aWVzQHN3Yy9oZWxwZXJzL18vX2RlZmluZV9lbnVtZXJhYmxlX3Byb3BlcnRpZXNfZGVmaW5lX3Byb3BlcnR5QHN3Yy9oZWxwZXJzL18vX2RlZmluZV9wcm9wZXJ0eV9leHBvcnRfc3RhckBzd2MvaGVscGVycy9fL19leHBvcnRfc3Rhcl9leHRlbmRzQHN3Yy9oZWxwZXJzL18vX2V4dGVuZHNfZ2V0QHN3Yy9oZWxwZXJzL18vX2dldF9nZXRfcHJvdG90eXBlX29mQHN3Yy9oZWxwZXJzL18vX2dldF9wcm90b3R5cGVfb2ZfaW5oZXJpdHNAc3djL2hlbHBlcnMvXy9faW5oZXJpdHNfaW5oZXJpdHNfbG9vc2VAc3djL2hlbHBlcnMvXy9faW5oZXJpdHNfbG9vc2VfaW5pdGlhbGl6ZXJfZGVmaW5lX3Byb3BlcnR5QHN3Yy9oZWxwZXJzL18vX2luaXRpYWxpemVyX2RlZmluZV9wcm9wZXJ0eV9pbml0aWFsaXplcl93YXJuaW5nX2hlbHBlckBzd2MvaGVscGVycy9fL19pbml0aWFsaXplcl93YXJuaW5nX2hlbHBlcl9pbnN0YW5jZW9mQHN3Yy9oZWxwZXJzL18vX2luc3RhbmNlb2ZfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZF9pc19uYXRpdmVfZnVuY3Rpb25Ac3djL2hlbHBlcnMvXy9faXNfbmF0aXZlX2Z1bmN0aW9uX2l0ZXJhYmxlX3RvX2FycmF5QHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0QHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlQHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlX2pzeEBzd2MvaGVscGVycy9fL19qc3hfbmV3X2Fycm93X2NoZWNrQHN3Yy9oZWxwZXJzL18vX25ld19hcnJvd19jaGVja19ub25faXRlcmFibGVfcmVzdEBzd2MvaGVscGVycy9fL19ub25faXRlcmFibGVfcmVzdF9ub25faXRlcmFibGVfc3ByZWFkQHN3Yy9oZWxwZXJzL18vX25vbl9pdGVyYWJsZV9zcHJlYWRfb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlAc3djL2hlbHBlcnMvXy9fb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlfb2JqZWN0X3NwcmVhZEBzd2MvaGVscGVycy9fL19vYmplY3Rfc3ByZWFkX29iamVjdF9zcHJlYWRfcHJvcHNAc3djL2hlbHBlcnMvXy9fb2JqZWN0X3NwcmVhZF9wcm9wc19vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzQHN3Yy9oZWxwZXJzL18vX29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNfb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllc19sb29zZUBzd2MvaGVscGVycy9fL19vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzX2xvb3NlX292ZXJsb2FkX3lpZWxkQHN3Yy9oZWxwZXJzL18vX292ZXJsb2FkX3lpZWxkX3Bvc3NpYmxlX2NvbnN0cnVjdG9yX3JldHVybkBzd2MvaGVscGVycy9fL19wb3NzaWJsZV9jb25zdHJ1Y3Rvcl9yZXR1cm5fcmVhZF9vbmx5X2Vycm9yQHN3Yy9oZWxwZXJzL18vX3JlYWRfb25seV9lcnJvcl9zZXRAc3djL2hlbHBlcnMvXy9fc2V0X3NldF9wcm90b3R5cGVfb2ZAc3djL2hlbHBlcnMvXy9fc2V0X3Byb3RvdHlwZV9vZl9za2lwX2ZpcnN0X2dlbmVyYXRvcl9uZXh0QHN3Yy9oZWxwZXJzL18vX3NraXBfZmlyc3RfZ2VuZXJhdG9yX25leHRfc2xpY2VkX3RvX2FycmF5QHN3Yy9oZWxwZXJzL18vX3NsaWNlZF90b19hcnJheV9zbGljZWRfdG9fYXJyYXlfbG9vc2VAc3djL2hlbHBlcnMvXy9fc2xpY2VkX3RvX2FycmF5X2xvb3NlX3N1cGVyX3Byb3BfYmFzZUBzd2MvaGVscGVycy9fL19zdXBlcl9wcm9wX2Jhc2VfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxAc3djL2hlbHBlcnMvXy9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2VAc3djL2hlbHBlcnMvXy9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2VfdGhyb3dAc3djL2hlbHBlcnMvXy9fdGhyb3dfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9fdG9fYXJyYXlfdG9fY29uc3VtYWJsZV9hcnJheUBzd2MvaGVscGVycy9fL190b19jb25zdW1hYmxlX2FycmF5X3RvX3ByaW1pdGl2ZUBzd2MvaGVscGVycy9fL190b19wcmltaXRpdmVfdG9fcHJvcGVydHlfa2V5QHN3Yy9oZWxwZXJzL18vX3RvX3Byb3BlcnR5X2tleV91cGRhdGVAc3djL2hlbHBlcnMvXy9fdXBkYXRlX3R5cGVfb2ZAc3djL2hlbHBlcnMvXy9fdHlwZV9vZl91bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheUBzd2MvaGVscGVycy9fL191bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheV93cmFwX2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL193cmFwX2FzeW5jX2dlbmVyYXRvcl93cmFwX25hdGl2ZV9zdXBlckBzd2MvaGVscGVycy9fL193cmFwX25hdGl2ZV9zdXBlcl93cml0ZV9vbmx5X2Vycm9yQHN3Yy9oZWxwZXJzL18vX3dyaXRlX29ubHlfZXJyb3JfY2xhc3NfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZUBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlX2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlX2NsYXNzX3N0YXRpY19wcml2YXRlX21ldGhvZF9nZXRAc3djL2hlbHBlcnMvXy9fY2xhc3Nfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2dldF9jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19hY2Nlc3NAc3djL2hlbHBlcnMvXy9fY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfYWNjZXNzX2lzX25hdGl2ZV9yZWZsZWN0X2NvbnN0cnVjdEBzd2MvaGVscGVycy9fL19pc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3RfY3JlYXRlX3N1cGVyQHN3Yy9oZWxwZXJzL18vX2NyZWF0ZV9zdXBlcl9jcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZUBzd2MvaGVscGVycy9fL19jcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZV90c19kZWNvcmF0ZUBzd2MvaGVscGVycy9fL190c19kZWNvcmF0ZV90c19nZW5lcmF0b3JAc3djL2hlbHBlcnMvXy9fdHNfZ2VuZXJhdG9yX3RzX21ldGFkYXRhQHN3Yy9oZWxwZXJzL18vX3RzX21ldGFkYXRhX3RzX3BhcmFtQHN3Yy9oZWxwZXJzL18vX3RzX3BhcmFtX3RzX3ZhbHVlc0Bzd2MvaGVscGVycy9fL190c192YWx1ZXNfdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2VAc3djL2hlbHBlcnMvXy9fdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2VfdHNfZGlzcG9zZV9yZXNvdXJjZXNAc3djL2hlbHBlcnMvXy9fdHNfZGlzcG9zZV9yZXNvdXJjZXNfdHNfcmV3cml0ZV9yZWxhdGl2ZV9pbXBvcnRfZXh0ZW5zaW9uQHN3Yy9oZWxwZXJzL18vX3RzX3Jld3JpdGVfcmVsYXRpdmVfaW1wb3J0X2V4dGVuc2lvbl9hcHBseV9kZWNzXzIyMDNfckBzd2MvaGVscGVycy9fL19hcHBseV9kZWNzXzIyMDNfcl9pZGVudGl0eUBzd2MvaGVscGVycy9fL19pZGVudGl0eV9kaXNwb3NlQHN3Yy9oZWxwZXJzL18vX2Rpc3Bvc2VfdXNpbmdAc3djL2hlbHBlcnMvXy9fdXNpbmdfdXNpbmdfY3R4QHN3Yy9oZWxwZXJzL18vX3VzaW5nX2N0eGFwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yYXJyYXlfbGlrZV90b19hcnJheWFycmF5X3dpdGhfaG9sZXNhcnJheV93aXRob3V0X2hvbGVzYXNzZXJ0X3RoaXNfaW5pdGlhbGl6ZWRhc3luY19nZW5lcmF0b3Jhc3luY19nZW5lcmF0b3JfZGVsZWdhdGVhc3luY19pdGVyYXRvcmFzeW5jX3RvX2dlbmVyYXRvcmF3YWl0X2FzeW5jX2dlbmVyYXRvcmF3YWl0X3ZhbHVlY2FsbF9zdXBlcmNoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbmNsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZGVzdHJ1Y3R1cmVjbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldGNsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0Y2xhc3NfYXBwbHlfZGVzY3JpcHRvcl91cGRhdGVjbGFzc19jYWxsX2NoZWNrY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfZmllbGRfZGVzY3JpcHRvcmNsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcmNsYXNzX25hbWVfdGR6X2Vycm9yY2xhc3NfcHJpdmF0ZV9maWVsZF9nZXRjbGFzc19wcml2YXRlX2ZpZWxkX2luaXRjbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2VjbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleWNsYXNzX3ByaXZhdGVfZmllbGRfc2V0Y2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVjbGFzc19wcml2YXRlX21ldGhvZF9nZXRjbGFzc19wcml2YXRlX21ldGhvZF9pbml0Y2xhc3NfcHJpdmF0ZV9tZXRob2Rfc2V0Y2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfc3BlY19nZXRjbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldGNsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3VwZGF0ZWNvbnN0cnVjdGNyZWF0ZV9jbGFzc2RlY29yYXRlZGVmYXVsdHNkZWZpbmVfZW51bWVyYWJsZV9wcm9wZXJ0aWVzZGVmaW5lX3Byb3BlcnR5ZXhwb3J0X3N0YXJnZXRfcHJvdG90eXBlX29maW5oZXJpdHNpbmhlcml0c19sb29zZWluaXRpYWxpemVyX2RlZmluZV9wcm9wZXJ0eWluaXRpYWxpemVyX3dhcm5pbmdfaGVscGVyaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRpbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmRpc19uYXRpdmVfZnVuY3Rpb25pdGVyYWJsZV90b19hcnJheWl0ZXJhYmxlX3RvX2FycmF5X2xpbWl0aXRlcmFibGVfdG9fYXJyYXlfbGltaXRfbG9vc2Vqc3huZXdfYXJyb3dfY2hlY2tub25faXRlcmFibGVfcmVzdG5vbl9pdGVyYWJsZV9zcHJlYWRvYmplY3RfZGVzdHJ1Y3R1cmluZ19lbXB0eW9iamVjdF9zcHJlYWRvYmplY3Rfc3ByZWFkX3Byb3Bzb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllc29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNfbG9vc2VvdmVybG9hZF95aWVsZHBvc3NpYmxlX2NvbnN0cnVjdG9yX3JldHVybnJlYWRfb25seV9lcnJvcnNldF9wcm90b3R5cGVfb2Zza2lwX2ZpcnN0X2dlbmVyYXRvcl9uZXh0c2xpY2VkX3RvX2FycmF5c2xpY2VkX3RvX2FycmF5X2xvb3Nlc3VwZXJfcHJvcF9iYXNldGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWx0YWdnZWRfdGVtcGxhdGVfbGl0ZXJhbF9sb29zZXRvX2FycmF5dG9fY29uc3VtYWJsZV9hcnJheXRvX3ByaW1pdGl2ZXRvX3Byb3BlcnR5X2tleXR5cGVfb2Z1bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheXdyYXBfYXN5bmNfZ2VuZXJhdG9yd3JhcF9uYXRpdmVfc3VwZXJ3cml0ZV9vbmx5X2Vycm9yY2xhc3NfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZWNsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlY2xhc3Nfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2dldGNsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2FjY2Vzc2lzX25hdGl2ZV9yZWZsZWN0X2NvbnN0cnVjdGNyZWF0ZV9zdXBlcmNyZWF0ZV9mb3Jfb2ZfaXRlcmF0b3JfaGVscGVyX2xvb3NldHNfZGVjb3JhdGV0c19nZW5lcmF0b3J0c19tZXRhZGF0YXRzX3BhcmFtdHNfdmFsdWVzdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2V0c19kaXNwb3NlX3Jlc291cmNlc3RzX3Jld3JpdGVfcmVsYXRpdmVfaW1wb3J0X2V4dGVuc2lvbmFwcGx5X2RlY3NfMjIwM19yaWRlbnRpdHlkaXNwb3NldXNpbmdfY3R4YXJndW1lbnRzbm90IGltcGxlbWVudGVkL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfdXRpbHMvc3JjL2xpYi5ycwBFsiYAOgAAAPwJAAA+AAAAxAQAAAQAAAAEAAAAegEAAEWyJgA6AAAACgoAADwAAABFsiYAOgAAAOkJAAAmAAAATgQAAAwAAAAEAAAATwQAAFAEAACvAgAAAAAAAAAAAAABAAAAUQQAAENsYXNzRm5WYXJVc2luZ1RzSW50ZXJmYWNlVHNUeXBlQWxpYXNUc0VudW1Uc01vZHVsZWNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQvc3JjL3NlbWFudGljLnJzG7MmADUAAABTAQAAKwAAABuzJgA1AAAA7gEAACQAAABuYW1lc3BhY2UgYmxvY2sgc3RhY2sgc2hvdWxkIGNvbnRhaW4gY3VycmVudCBibG9jawAAG7MmADUAAAD1AQAADgAAAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQvc3JjL3RyYW5zZm9ybS5ycwAAtLMmADYAAACQAAAAFwAAALSzJgA2AAAArAAAABIAAAC0syYANgAAABMBAAAoAAAAtLMmADYAAAAUAQAALQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGRlc3RydWN0dXJpbmcgcGF0dGVybiBpbnNpZGUgVHNQYXJhbWV0ZXJQcm9wZXJ0eQAALLQmAFoAAAC0syYANgAAAAABAAAhAAAAtLMmADYAAAAxAQAAEgAAALSzJgA2AAAA6wEAACwAAAC0syYANgAAADADAAAnAAAAtLMmADYAAAAtAwAAMgAAALSzJgA2AAAAswMAAEEAAAC0syYANgAAACYEAAANAAAAtLMmADYAAACGBAAAHwAAALSzJgA2AAAAhwQAAB8AAAC0syYANgAAAK8EAAAfAAAAtLMmADYAAAC3BAAAHQAAALSzJgA2AAAA0wQAACMAAAC0syYANgAAAH8EAAAxAAAAxQQAACgAAAAIAAAAQAEAALSzJgA2AAAAkgQAAEAAAABJbXBvcnQgZGVjbGFyYXRpb25zIGluIGEgbmFtZXNwYWNlIGNhbm5vdCByZWZlcmVuY2UgYSBtb2R1bGUuRVNNLXN0eWxlIG1vZHVsZSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gYSBuYW1lc3BhY2UutLMmADYAAABHBQAAIwAAALSzJgA2AAAAHQUAACsAAAC0syYANgAAACkFAABRAAAAtLMmADYAAAAsBQAAHwAAALSzJgA2AAAANgUAAFYAAAC0syYANgAAADgFAAAfAAAAZXhwb3J0cwC0syYANgAAAG4GAAAjAAAAtLMmADYAAAByBgAAHwAAALSzJgA2AAAAKQYAABoAAAC0syYANgAAACsGAAAaAAAASW1wb3J0IGFzc2lnbm1lbnQgY2Fubm90IGJlIHVzZWQgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCBtb2R1bGVzLiBDb25zaWRlciB1c2luZyBgaW1wb3J0ICogYXMgbnMgZnJvbSAibW9kImAsIGBpbXBvcnQge2F9IGZyb20gIm1vZCJgLCBgaW1wb3J0IGQgZnJvbSAibW9kImAsIG9yIGFub3RoZXIgbW9kdWxlIGZvcm1hdCBpbnN0ZWFkLkV4cG9ydCBhc3NpZ25tZW50IGNhbm5vdCBiZSB1c2VkIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgbW9kdWxlcy4gQ29uc2lkZXIgdXNpbmcgYGV4cG9ydCBkZWZhdWx0YCBvciBhbm90aGVyIG1vZHVsZSBmb3JtYXQgaW5zdGVhZC5Pbmx5IGFtYmllbnQgbW9kdWxlcyBjYW4gdXNlIHF1b3RlZCBuYW1lcy60syYANgAAANcGAAAOAAAAY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfdHlwZXNjcmlwdC9zcmMvdHNfZW51bS5yc05hTkluZmluaXR5ACS4JgA0AAAAuAAAABIAAAABAAAAAAAAAAEAAAAAAAAAJLgmADQAAADiAAAAGgAAAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQvc3JjL3R5cGVzY3JpcHQucnMAlLgmADcAAAA7AAAALAAAAJS4JgA3AAAAUwAAABAAAABfY3JlYXRlUmVxdWlyZV9fcmVxdWlyZWNyZWF0ZVJlcXVpcmVOBAAADAAAAAQAAABPBAAAUAQAAK8CAAAAAAAAAAAAAAEAAABRBAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5yczi5JgBMAAAAVgoAACQAAAAAAAAADAAAAAQAAADKBAAAywQAAGNvbnN0cnVjdG9yIHNob3VsZCBoYXZlIGEgYm9keWNyYXRlcy9zd2NfZWNtYV91dGlscy9zcmMvY29uc3RydWN0b3IucnMAAMa5JgAoAAAADgAAACAAAABTeW1ib2wAAAEAAAAAAAAAfNUmAAEAAABzdXBlcl8AABi6JgAGAAAAfNUmAAEAAAAYySYAPQAAAHoCAAAUAAAAGMkmAD0AAACiAgAAPAAAABjJJgA9AAAAkQIAAD4AAACsAgAADAAAAAQAAAAtBAAAzQQAAK8CAAAAAAAAAAAAAAEAAACwAgAAQOgmAE8AAAAKAgAANwAAAM4EAAAsAAAABAAAAM8EAADQBAAA0QQAANIEAADTBAAA1AQAALYCAAAkc2VyZGVfanNvbjo6cHJpdmF0ZTo6UmF3VmFsdWVyYW5nZSAgb3V0IG9mIGJvdW5kczog3romAAYAAADkuiYAEAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2JpdHZlYy0xLjAuMS9zcmMvc2xpY2UvYXBpLnJzAAAEuyYAYgAAAI4KAAABAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQwL3NyYy9zZXIucnMAAHi7JgBiAAAADQYAABIAAAB4uyYAYgAAAEwIAAAzAAAAdXV1dXV1dXVidG51ZnJ1dXV1dXV1dXV1dXV1dXV1dXUAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHi7JgBiAAAAPwgAAEAAAAAiXCJcXFxiXGZcblxyXHQAeMkmAF4AAAA0AAAABQAAAEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93eXotMC41LjEvc3JjL2NvbXUucnMAAGy9JgBaAAAAJwEAAAIAAADVBAAADAAAAAQAAADWBAAA1wQAAK8CAAAAAAAAAAAAAAEAAAATBAAAdTgAANgEAAAUAAAABAAAANkEAAAAAAAACAAAAAQAAADaBAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAJL4mAF8AAADGAAAAJwAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL21hcC9lbnRyeS5yc5S+JgBgAAAAoQEAAC4AAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9ub2RlLnJzYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5oZWlnaHQgLSAxAAS/JgBbAAAArQIAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzcmMubGVuKCkgPT0gZHN0LmxlbigpBL8mAFsAAABKBwAABQAAAAS/JgBbAAAAxwQAACMAAAAEvyYAWwAAAAoFAAAkAAAAYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5ub2RlLmhlaWdodCAtIDEAAAAEvyYAWwAAAPoDAAAJAAAAJL4mAF8AAABYAgAAMAAAACS+JgBfAAAAFgIAAC8AAAAkviYAXwAAAKEAAAAkAAAAYXR0ZW1wdCB0byBqb2luIGludG8gY29sbGVjdGlvbiB3aXRoIGxlbiA+IHVzaXplOjpNQVgvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHIucnMAAAClwCYASAAAAJoAAAAKAAAApcAmAEgAAACdAAAAFgAAAKXAJgBIAAAAsQAAABYAAABOdWxsUHRyRXJyb3JJbmNsdWRlZEV4Y2x1ZGVkVW5ib3VuZGVkY2Fubm90ICBiaXRzIGZyb20gYSAtYml0IHJlZ2lvbkXBJgAHAAAAJMsmAAEAAABMwSYADQAAAFnBJgALAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYml0dmVjLTEuMC4xL3NyYy9maWVsZC5ycwAAhMEmAF4AAAAOAgAAAgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2JpdHZlYy0xLjAuMS9zcmMvc2xpY2UucnMAAPTBJgBeAAAA9wAAAB8AAAD0wSYAXgAAAE8BAAAjAAAAaW5kZXggIG91dCBvZiByYW5nZTogAAAAdMImAAYAAAB6wiYADwAAAPTBJgBeAAAAMQYAAAMAAAAuLmxvYWRCaXRTcGFuRXJyb3I8Pjo6AACywiYADQAAAL/CJgADAAAATnVsbE1pc2FsaWduZWRUb29Mb25nVG9vSGlnaE1pc2FsaWduRXJyb3IAAAABAAAAeLsmAGIAAAB/AgAAKgAAAHi7JgBiAAAApAIAACoAAAB4uyYAYgAAAPwBAAAqAAAAeLsmAGIAAAAKAgAAKgAAAGV4cGVjdGVkIFJhd1ZhbHVlY3JhdGVzL3N3Y19zb3VyY2VtYXAvc3JjL2J1aWxkZXIucnNVwyYAIwAAAGwAAAAaAAAAVcMmACMAAABtAAAAIgAAAENhbm5vdCBzZXQgc291cmNlcyBmb3IgdG9tYnN0b25lIHNvdXJjZSBpZAAAVcMmACMAAACDAAAACQAAAFXDJgAjAAAAhwAAAB0AAABVwyYAIwAAAAoBAAAVAAAAY3JhdGVzL3N3Y19zb3VyY2VtYXAvc3JjL2VuY29kZXIucnMA9MMmACMAAAA3AAAADQAAAGludmFsaWQgYnl0ZfTDJgAjAAAAIwAAABIAAABpbnZhbGlkIHV0Zjj0wyYAIwAAAGYAAAAhAAAA9MMmACMAAABYAAAAEQAAAGJhZCBqc29uOiAAAHDEJgAKAAAAbGVmdG92ZXIgY3VyL3NoaWZ0IGluIHZscSBkZWNvZGV2bHEgZGVjb2RlIGRpZCBub3QgcHJvZHVjZSBhbnkgdmFsdWVzdmxxIGRlY29kZSBjYXVzZWQgYW4gb3ZlcmZsb3dnb3QgIHNlZ21lbnRzLCBleHBlY3RlZCA0IG9yIDXmxCYABAAAAOrEJgAaAAAAYmFkIHJlZmVyZW5jZSB0byBzb3VyY2UgIwAAABTFJgAZAAAAYmFkIHJlZmVyZW5jZSB0byBuYW1lICMAOMUmABcAAABlbmNvdW50ZXJlZCBpbmNvbXBhdGlibGUgc291cmNlbWFwIGZvcm1hdHRoZSBwcm92aWRlZCBkYXRhIFVSTCBpcyBpbnZhbGlkY2Fubm90IGZsYXR0ZW4gdGhlIGluZGV4ZWQgc291cmNlbWFwOiAAocUmACYAAABpbnZhbGlkIG1hZ2ljIG51bWJlciBmb3IgcmFtIGJ1bmRsZWludmFsaWQgbW9kdWxlIGluZGV4IGluIHJhbSBidW5kbGVpbnZhbGlkIHJhbSBidW5kbGUgbW9kdWxlIGVudHJ5bm90IGEgcmFtIGJ1bmRsZWludmFsaWQgcmFuZ2UgbWFwcGluZyBpbmRleDogAAAARMYmAB0AAABpbnZhbGlkIGJhc2U2NCBjaGFyYWN0ZXI6IAAAbMYmABoAAABodHRwOmh0dHBzOgABAAAAAAAAALrLJgABAAAAbGluZWNvbHVtbm9mZnNldHVybG1hcG5hbWVzbWFwcGluZ3N2ZXJzaW9uZmlsZXNvdXJjZXNzb3VyY2VSb290c291cmNlc0NvbnRlbnRzZWN0aW9uc3Njb3Blc3JhbmdlTWFwcGluZ3NpZ25vcmVMaXN0eF9mYWNlYm9va19vZmZzZXRzeF9tZXRyb19tb2R1bGVfcGF0aHN4X2ZhY2Vib29rX3NvdXJjZXNkZWJ1Z19pZGRlYnVnSWQvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWdpbnQucnNlxyYAYwAAAGwDAAAPAAAAAAAAAAQAAAAAAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9jb252ZXJ0LnJz5McmAGwAAADwAQAAFgAAAGNhbm5vdCBhY2Nlc3MgYSBzY29wZWQgdGhyZWFkIGxvY2FsIHZhcmlhYmxlIHdpdGhvdXQgY2FsbGluZyBgc2V0YCBmaXJzdC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3Njb3BlZC10bHMtMS4wLjEvc3JjL2xpYi5yc6jIJgBgAAAAqAAAAAkAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfY29tbW9uL3NyYy9zb3VyY2VfbWFwLnJzAAAAGMkmAD0AAAA9BQAASgAAABjJJgA9AAAAagUAACYAAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvc3BlY19mcm9tX2l0ZXJfbmVzdGVkLnJzAAB4ySYAXgAAABMAAAAFAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlL3NyYy9yZW5hbWUvb3BzLnJzAOjJJgBLAAAASgIAABcAAADoySYASwAAAE8CAAARAAAA6MkmAEsAAAAeAQAAGQAAAOjJJgBLAAAARwEAABkAAADoySYASwAAAHsBAAAcAAAA6MkmAEsAAAC7AQAAFwAAAOjJJgBLAAAAwAEAABEAAADoySYASwAAAH4CAAASAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfY29kZWdlbi9zcmMvdGV4dF93cml0ZXIvYmFzaWNfaW1wbC5yczu0yiYATwAAAE4BAAAQAAAAtMomAE8AAABZAQAAGgAAACAAAAC0yiYATwAAAIsBAAAgAAAAtMomAE8AAACQAQAAGAAAALTKJgBPAAAAfwEAACMAAAB2YXJsZXRjb25zdE5vbmUtKyF+dHlwZW9mdm9pZGRlbGV0ZT0rPS09Kj0vPSU9PDw9Pj49Pj4+PXw9Xj0mPSoqPSYmPXx8PT8/PT09IT09PT0hPT08PD0+Pj08PD4+Pj4+Ki8lfF4mfHwmJmluaW5zdGFuY2VvZioqPz8rKy0tL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5ycwDXyyYAWAAAANMHAAAJAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvaXRlci5yc3VuZXhwZWN0ZWQgcmVnZXggZmluZCBlcnJvcjogCnRvIGhhbmRsZSBmaW5kIGVycm9ycywgdXNlICd0cnknIG9yICdzZWFyY2gnIG1ldGhvZHOqzCYAHQAAAMfMJgA1AAAAQMwmAGoAAAB+AQAAGQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3Bvb2wucnMAABzNJgBqAAAAPQIAABwAAAAczSYAagAAAEQCAAAyAAAAHM0mAGoAAABeAgAAHAAAABzNJgBqAAAAawIAADIAAAAczSYAagAAAG8CAAAXAAAAAgAAABzNJgBqAAAAAQMAABUAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9zZWFyY2gucnNpbnZhbGlkIHNwYW4gIGZvciBoYXlzdGFjayBvZiBsZW5ndGggAAAAWM4mAA0AAABlziYAGAAAAOzNJgBsAAAAqgEAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzcGFuLmxvID49IHNlbGYuaW5wdXQuc3RhcnRfcG9zKCkgJiYgc3Bhbi5oaSA8PSBzZWxmLmlucHV0LmVuZF9wb3MoKS9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvc3RhdGUucnMAAAD2ziYAQwAAAFEAAAAJAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogAABMzyYAKgAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAIACA4C9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvdG9rZW4ucnMAmM8mAEMAAAB9AQAAEQAAAC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvY2FwdHVyaW5nLnJzAOzPJgBHAAAAPgAAAAsAAABhYnN0cmFjdGVudW1pbnRlcmZhY2Vtb2R1bGVuYW1lc3BhY2V0eXBlL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9wYXJzZXIvdHlwZXNjcmlwdC5ycwAAAGzQJgBJAAAAOwAAABcAAABs0CYASQAAAD8AAAARAAAACgkAAGzQJgBJAAAAcQEAACAAAAACA2RlY2xhcmVnbG9iYWwSkI+OkZ1ZkI6PkXNRjGCLbC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAM0SYASwAAAOgB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c3djL2NyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci9pZGVudC5yc1zfJgBEAAAAzAAAAA0AAABsZXQgaXMgcmVzZXJ2ZWQgaW4gY29uc3QsIGxldCwgY2xhc3MgZGVjbGFyYXRpb25pZGVudGlmaWVyIG9yIHN0cmluZy9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvcGFyc2VyL2lucHV0LnJz9N8mAEQAAACDAQAAIAAAAPTfJgBEAAAAZAAAAA0AAAD03yYARAAAAJwAAAANAAAA9N8mAEQAAACOAAAADQAAAPTfJgBEAAAAhwAAAA0AAAD03yYARAAAAHIAAAANAAAA9N8mAEQAAAB5AAAADQAAAPTfJgBEAAAAgAAAAA0AAAD03yYARAAAAJUAAAANAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9wYXJzZXIvb2JqZWN0LnJzAAAAyOAmAEUAAAAWAAAAHQAAAMjgJgBFAAAAGQAAABcAAAAuLi4gLCAqLCAgKCwgWywgOiwgLCA/LCA9LCBhbiBpZGVudGlmaWVyLCBwdWJsaWMsIHByb3RlY3RlZCwgcHJpdmF0ZSwgcmVhZG9ubHksIDwuLi4uICwgKiwgICgsIFssIDosICwgPywgPSBvciBhbiBpZGVudGlmaWVyaWRlbnRpZmllcgAAyOAmAEUAAACfAQAAIgAAAGFuIGlkZW50aWZpZXIvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy90eXBlc2NyaXB0LnJzZXhwb3J0bmV3OmFzPT59Li4udGhpc1tdaW5mZXJwdWJsaWNwcm90ZWN0ZWRwcml2YXRlb3ZlcnJpZGVyZWFkb25seWV4dGVuZHMsLj8AAADV4SYAQwAAABUCAAAiAAAAJHsAANXhJgBDAAAAGAIAACEAAAB1bmRlZmluZWRrZXlvZnVuaXF1ZXNhdGlzZmllc2Fzc2VydHNpc2dldHNldHJlcXVpcmV3aXRoALTKJgBPAAAAgAAAABoAAAAgICAgtMomAE8AAACZAAAAGAAAAC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX2NvZGVnZW4vc3JjL21vZHVsZV9kZWNscy5yc2Zyb21hc3NlcnQA6OImAEUAAAChAAAAIAAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuc3BlY2lmaWVycy5sZW4oKSA8PSAy6OImAEUAAACvAAAAFQAAAOjiJgBFAAAAZQEAACgAAABub3QgaW1wbGVtZW50ZWQ6IGNvZGVnZW4gb2YgYGV4cG9ydCBkZWZhdWx0IGZyb20gJ2Zvbyc7YJTjJgA4AAAA6OImAEUAAAAHAQAAEQAAAGRlZmF1bHQvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy9saWIucnMA6+MmADwAAADIAwAAEgAAAOvjJgA8AAAAOQIAAEgAAADr4yYAPAAAADoCAAAoAAAA6+MmADwAAAD+AAAATAAAAOvjJgA8AAAAAQEAACcAAAA8LzwvPjw+L2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfY29kZWdlbi9zcmMvbGl0LnJzAH/kJgA8AAAA/wAAADQAAABmYWxzZXRydWV1c2Ugc3RyaWN0c2NyaXB0XHV7PCEtLVx4M2MhLS0tLT4tLVx4M2VuLTB4/eQmAAMAAAAweAAACOUmAAIAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy9kZWNsLnJzAAAAFOUmAD0AAABDAAAAPwAAAGNsYXNzZnVuY3Rpb24AAAAU5SYAPQAAALQAAAAXAAAAYXdhaXQvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy9zdG10LnJzaWZlbHNlZm9ydHJ5ZmluYWxseWJyZWFrb2Z0aHJvd3doaWxlcmV0dXJuY2FzZYnlJgA9AAAAEQEAAB0AAACJ5SYAPQAAABQBAABBAAAAc3dpdGNoY2F0Y2gAieUmAD0AAADjAAAAPwAAAGRvY29udGludWVkZWJ1Z2dlci9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX2NvZGVnZW4vc3JjL2NsYXNzLnJzaW1wbGVtZW50c3N0YXRpY0LmJgA+AAAAMQEAABcAAABjb25zdHJ1Y3RvcgBC5iYAPgAAAEQCAAAXAAAAYWNjZXNzb3JC5iYAPgAAAPEAAAAXAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfY29kZWdlbi9zcmMvb2JqZWN0LnJzANTmJgA/AAAAzAAAABcAAADU5iYAPwAAAJMAAABBAAAALy8vKiovIGlzIGFscmVhZHkgcmVuYW1lZCB0byAsIGJ1dCBpdCdzIHJlbmFtZWQgYXMgAEzPJgAqAAAAOucmABcAAABR5yYAFgAAAC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS9zcmMvcmVuYW1lL21vZC5ycwCA5yYASwAAABEBAAAZAAAAZXZhbNsEAAAMAAAABAAAAC0EAACuAgAArwIAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkADNEmAEsAAADwCgAADgAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAQOgmAE8AAADiBQAAFAAAAEDoJgBPAAAA4gUAACEAAABA6CYATwAAANYFAAAhAAAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxheW1pZCA+IGxlbgAAAOjoJgAJAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tb2QucnMAAAD86CYATQAAAOwDAAArAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9kcmlmdC5ycwBc6SYAWwAAAP8AAAAZAAAAXOkmAFsAAADyAAAAEgAAAFzpJgBbAAAAzgAAACQAAABc6SYAWwAAANEAAAAkAAAAXOkmAFsAAABAAAAAIgAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAAjqJgBfAAAATgAAAB8AAAAI6iYAXwAAAEgAAAAXAAAAAAAAAAQAAAAEAAAAYAAAAAAAAAAEAAAABAAAANwEAADdBAAACAAAAAQAAADeBAAA3wQAAAwAAAAEAAAA4AQAAN8EAAAMAAAABAAAAJcCAADgBAAAuOomALYCAADhBAAAuAIAAOIEAAC5AgAA4wQAABQAAAAEAAAA5AQAAOMEAAAUAAAABAAAAJgCAADkBAAA9OomALYCAADlBAAA5gQAALYCAAC5AgAARXJyb3JJZGVudEFycmF5UmVzdE9iamVjdEFzc2lnbkludmFsaWRFeHByL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnNa6yYASgAAAGIDAAAJAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvYm9ycm93LnJzALTrJgBLAAAAFQEAACUAAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlbjxpbnZhbGlkPkZyb21VdGY4RXJyb3JieXRlc2Vycm9ySW9VdGY4QmFkSnNvblZscUxlZnRvdmVyVmxxTm9WYWx1ZXNWbHFPdmVyZmxvd0JhZFNlZ21lbnRTaXplQmFkU291cmNlUmVmZXJlbmNlQmFkTmFtZVJlZmVyZW5jZUluY29tcGF0aWJsZVNvdXJjZU1hcEludmFsaWREYXRhVXJsQ2Fubm90RmxhdHRlbkludmFsaWRSYW1CdW5kbGVNYWdpY0ludmFsaWRSYW1CdW5kbGVJbmRleEludmFsaWRSYW1CdW5kbGVFbnRyeU5vdEFSYW1CdW5kbGVJbnZhbGlkUmFuZ2VNYXBwaW5nSW5kZXhJbnZhbGlkQmFzZTY0U29tZWludmFsaWQgdXRmLTg6IGNvcnJ1cHQgY29udGVudHMA6+MmADwAAAB4CAAAIgAAAOvj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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////////////z8//////z8//6r///8/////////31/cH88P/x/cHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAQgBP//f////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKAE//9/////f///////////////////////////////////////////////////////////////////////DwD//3/4//////8P////////////////////////////////w/8DAB9QAAAAAAAAAAAAAAAAAAAAAN+8QNf///v///////////+//////////////////////////////////8P/AwAfUAAA///////////////////fvMDX///7////////////v///////////////////////A/z///////////////////////////7///9/Av//////AQAAAAAAAAAA////hwcA//////////////////////v8///////////////////////////+////fwL//////wH+/////7+2AP///4cHAAAAAAD//////wcAAADA/v//////////////LwBgwACcAAD9////AAAA4P////////////8/AAIAAPz///8HMAQAAP8H////////////w////////////////++f//3/nwAA/////////+f///////////////8DAP///////z8k//8/BBABAAD///8B/wf///9+AAD//////wMAAAAAAADw////////IwAAAf8DAP7/4Z/5///9xSMAQACwAwADEP//////PwAA////D/8H////foD////////////7////////////////////z//+/++f+f///cXzn3mAsM//A1Dgh/n///1tAwAAAF4AABwA4L/7///97SMAAAEAAwAAAuCf+f///e0jAAAAsAMAAgDoxz3WGMf/AwAAAQAAAAAA7of5///9bdOHOQJewP8/AO6/+////e3zvzsBAM//AP7un/n///3t85854LDP/wIA7Mc91hjH/8PHPYEAwP8AAODf/f///f8jAAAAJwMAAADh3/3///3vIwAAAGADAAYA8N/9/////ycAQHCAAwAA/OD/f/z///svfwAAAAAAAAD/3/3///3/8989YCfP/wAA79/9///97/PfPWBgz/8OAP/f/f//////333wgM//APzu/3/8///7L3+EX//A/wwA/v//////DQB/AAAAAAAAANb3//+v/w0gXwAA8AAAAAABAAAAAAAAAP/+////HwAAAB8AAAAAAAAAAAAAAAAAAP7///////8H/3//AwAAAADW9///r///P19///MAAAAAAQAAA/8DoML//v///x/+/9////7///8fQAAAAAAAAAD//////wcAgAAAPzxiwOH/A0AAAP////+/IP//////9////////////////////////////////////////////////////z8AAP///////////P///////wAAAAAA/w////////////8D////////////P/////+/IP//////9///////////////////////////////////////////////////fwD//z8A/wAAAL////////0HAAAAAAAAAAD///////////89fz3//////z3/////PX89/3//////////Pf//////////BwAAAAD//wAA/////////////z8/////////////PX89//////89/////z1/Pf9//////////z3//////////+cA/gMA//8AAP////////////8/P/7/////////////////////////////////////////////////////////////////////////////////////////////////////////////AwAAAAAAAAAAAAAAAP////////////////+f///+//8H////////////x/8B//8DgP//AwD//wMA/98BAP///////w8AAACAEAAAAAD/////////////////n////v//B////////////8f/Af//P4D//x8A//8PAP/fDQD/////////////jzD/AwAAAAAAAP//////////////Af//////Bf//////////PwD///9/AAAAAAAA////Px8A//////8P////AwAAAAAAAAC4/wP//////////////wH//////wf//////////z8A////f/8P/w/A/////z8fAP//////D////wP/BwAAAAD//38A////////HwAAAAAAAAAAAIAAAAAAAAAAAAAAAOD//////w8A4B8AAAAAAAD4////AcAA/P////8/AAAA////D/////////9/////n/8D/wOAAP+//38AAAAAAAD///////////8f/wMA+A8A//////////////////8PAP////8PAAAAAOAA/P///z//B///////5wAAAAAA3m8E////////////////////////////////AAAAAAAAAAD/////////AP/j//////8//wf//////+cAAPf/////B////////////////////////////////////////////////////////////////////////////////////wcAAAAAAAAAAAAAAAAAAAKAAAD/HwAAAAAAAAAAAAAAAIT8Lz9Q/f/z4EMAAP//////AQAAAAAAAAAAAAAAAAAAADAAAAAAAIABABAAAAACgAAA/x8AAAAAAAD/H+L/AQCE/C8/UP3/8+BDAAD//////wEAAAAAAAAAAAAAAAAAAP////////////////////////////////////8feAwA/////78g/////////4AAAP//fwB/f39/f39/fwAAAAD/////////////////////////////////////H/gPAP////+/IP////////+AAID//38Af39/f39/f3//////4AAAAP4DPh/+////////////f/j+//////////////fg///////+/////////////38AAP////8AAAAAAAD//+AAAAD+/z4f/v///////////3/+/v//////////////4P///////v////////////9/AAD/////AAAAAAAA/////////////////////////x8AAAAAAAAAAP//////P////////////////////////////////////////////////////////////////////////////////////wD/H///AAwAAP//////fwCA////P/////////////8AAAAAgP/8////////////////+f////////8/6x8AAPz//x////8PAAD////////wv///////////////////AwAAAID//P////////////////n/////////P+sfAAD8/7v3//8HAAAA////////DwD8//////8PAAAAAAAAAPxoAPz//z8A//9/AAAA////H/D//////wcAAIAAAN//AHz//////xAAAP///////w8A//////////8/AP8D////6P//////P/////8PAP///x///////////wGA/wP///9///////8BAAD3DwAA//9/xP///////2I+BQAAOP8HHAB+fn4Af3////////f/A///////////////////BwAAAP///////38A/z//A///f/z//////////wcAADj//3wAfn5+AH9////////3/wP///////////////////83/wP/////////////////P/////////////////8DAAAAAH8A+KD//X9f2/////////////////8DAAAA+P///////////////////////z//////////////////AwAAAAB/APjg//1/X9v/////////////////AwAAAPj//////wAAAAAAAAAAAAAAAAAA3/////////////////////8fAAAAAP7//wf+//8HwP////////////9//Pz8HAAAAAD//wAA//8YAADgAAAAAN//////////////////////HwAA/wP+//+H/v//B+D/////////////f/z8/BwAAAAA/+///3///7f/P/8/AAAAAP///////////////////wcAAAAAAAAAAP///////x8AAAAAAAAAAAAAAAAAAAAAAP/v//9///+3/z//PwAAAAD///////////////////8HAAAAAAAAAAD///////8fAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAA////H////////wEAAAAAAP////8A4P///wf/////PwD///8//////w//PgAAAAAAAAAAAAAAAAAAAAAAAAAAAP///x////////8BAAEAAAD/////AOD///8H//////8H////P/////8P/z4AAAAAAP////////////////////////8/AAD/////D/////8P//////8A////////DwD/9//3t//7//sb////////DwD/////////////////////////P/8D/////w//////D///////AP///////w8A//f/97f/+//7G////////w8AP/3/////v5H//z8A//9/AP///38AAAAAAAAAAP//NwD//z8A////AwAAAAAAAAAA/////////8AAAAAAAAAAAAEA7/7//z8AAAAAAP///x////8fAAAAAP/+//8fAAAA////////PwD//z8A//8HAP//AwAAAAAAAAAAAAAAAABv8O/+//8/hwAAAAD///8f////HwAAAAD//v//fwAAAP///////z8A//8/AP//BwD//wMAAAAAAAAAAAAAAAAA////////////AQAAAAAAAP///////wcA////////BwD/////DwAAAAD8//8/gP//PwAAAAAAAAAAAAAAAAAAAP///////////wEAAAAAAAD///////8HAP///////wcA//////8A/wP/////P77//z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8DAwAcAAAAAAAAAP///x+AAP//PwAAAAAA//8DAAAAAAD//x8AAAD//38AAAAAAAAAAAAAAAAAAAAAAP//////GwMAHAAAAAAAAPD///8fgAD/////AQAAAP//PwAAAAAA//8fAAAA//9/APj///////8AAAAAAAAAJgD4//////8AAAAA////AQAA+P///38AAACQAP////9HAPj//////wcAHgAAFAAAAAD//////////38AAADA/z+A/////////wcEAP///wH/A////////9//8AD/////TwD//////////x/e/xcAAAAA///7//8PAIABAAAAAAAAAH+9/7//Af//////fwAAAADgn/n///3tIwAAAeADAAAA/0v/////vwAAAAoAAAAAAP//+//////AAwAAAAAAAAB/vf+//wH/////////B/8D75/5///97fufOYHgzx8fAP9L/////7//pfcPAAYAAAD///////8fAIAHAIADAAAA////////AACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////38AAAAAAA8AAAAA////////////B//DAwAAAP//////////vwD/AwAAAAAAAAAAAAAAAAAAAAAAAAAA////////P/8BAAA/AAAAAP///////wAAEAAAAAAAAAD//////wcAAQAAAAAAAAAA////BwAAAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////xEA/wMAAAAA/////////wH/A///DwAAAP///+f/D/8DfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8PAAAAAAAAAAAAAAAAAAD//////////wAAAIB/8m////8AgAIAAAAAAAAAAAAAAP/8/////wEACgAAAP////////8HAAAAAAAAAAAAAAAA////////////AwCAf/Jv////v/kPAP8DAAAAAAAAAAD//P///////BsAAAAB+P////8HBAAAAfD//////wMAIAAA////////////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAAAA/////////3+AAP///////////yMAAP///////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQD/A//9////fwAAAQAAAAAA/P///wAAAAAAAAAAAAAAAAAAf/v/////AQBAAAAAv/3///8DAAEAAAAAAAAAAAAAAAD//f////9//wEA/wMAAPz////8///+fwAAAAAAAAAAAH/7/////3+0/wD/A7/9////f/sB/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//BwD0//3///8PAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//38A///9/////8cHAP8HAAAAAAAAAAAAAAEAAAAAAAAAAAD/////////////////fwAA////////////////////////////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8BAP///////wAAfgAAAP//////////////////////////////////////////////////////////////////////////BwAEAAAAJwDwAP///////////////////////////////wAA//8/AP//////////////////////////////////////////////////////////////////////////////A///////////////////////////////////////////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////Af///38AAP///////////38AAP///z8AAP///////wAADwAAAPj//+D//wAAAAAAAAAAAAAAAAAA/////////wH///9//wP///////////9//wP///8/HwD///////9/AA8A/wP4///g//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////x8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8f/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAD///////////8HAQAAAAAAAAD4/wAAAAAAAAAACwAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAA////////////h/////////+A//8AAAAAAAAAABsAAwD//////////////////////////////////z8AAAAAgP8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvb/////////////////////////////////////////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////z///38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////8H/x//Af8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4wf45w8AAAA8AAAAAAAAAAAAAP////////////////8H/x//Af9jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9/4AcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf2//fwAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/A//////////////f///////////fZN7/6+//////////v+ff3////3tf/P3//////////////////////////////////////////////////////z/////9///3////9///3////9///3////9//////f////3///cPAAAAAAAA//////////////////////////8//////f//9/////f//9/////f//9/////f/////3////9///3z////////////////3/4//////8fIAAQAAD4/v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////////////8AAAAAAAAAAP////////8/AAAAAAAAAAAAAAAAAAAAAAAA//////8fgD8AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////52wf/////////PwAAAIAAAAAAAAAAAAAAAAAAAP//////H/8//0MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////PwAA//////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///38AAP////////8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////PwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////B////////////////////////////////x8AAAAAAAAA//////////8PCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////8fAH8AAAAAAP///////////w//AwAAAAAAAAAAAAAAAAAAAAAAAAAA7////5b+9wqE6paqlvf3Xv/7/w/u+/8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAA////////////////////////////////////////////////////////////////////////////////AQD//////z////////////////////////////////////////////////////////////////////////////////////////////8H////////////////////////////////////////////////////////AwD/////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAP//////////////PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAgIDBAUGBwgJCgsMDQICAgICAgIOAgICAgICAg4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgICAgMCAgQCBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHQICHgICAgICAgIfICEiIwIkJSYnKCkCKgICAgIrLAICAgItLgICAi8wMTIzAgICAgICNAICNTY3Ajg5Ojs8PT4/OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUACAkFCAgJDREVGR0gCSTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUoCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI5OTk5SwICAgICTE1OTwICAlACUVICAgICAgICAgICAgICU1QCAlUCVgICV1hZWltcXV5fYGFiYwJkZWZnAmgCaWprbG0Cbm9wcQJycwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQICAgICAgICAgICAgICAgICAnZ3AgICeAICAnl6OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5e3x9AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn45OX85OYACAgICAgICAgICAgICAgICAgICgQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICAgKDhIUChgICAgICAgICAgICAgKHiAICAgICAgICAgKJincCAosCAgKMAo0CjgICAo+QAgICAgICAgICAgICApGSApOUApWWl5iZmpucAp0CAp6foKECAgICAgICAgICOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5oh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAowICAgKkpQIEAgUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0CAh4CAgICAgICHyAhIiMCJCUmJygpAioCAgICpqeoqaqrrC6tOa6vsLGyswICAgICArQCAjU2NwI4OTo7PD0+tTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUsCAgICArZNTreJincCAosCAgKMAo0CjgICAo+QAgICAgICAgICAgICApGSuLmUApWWl5iZmpucAp0CAp6foKECAgICAgICAgICVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVVVUVAFBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBAAAAAAAAAAAAABBBEFVVVVVVV1VVVVVVVVVVVVFVVQAAQFT13VVVVVVVVVVVFQAAAAAAVVVVVfxdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFABQAFARQVVVVVVVVVRVRVVVVVVVVVQAAAAAAAEBVVVVVVVVVVVXVV1VVVVVVVVVVVVVVBQAAVFVVVVVVVVVVVVVVVVUVAABVVVFVVVVVVQUQAAABAVBVVVVVVVVVVVVVAVVVVVVV/////39VVVVQFQAAVVVVVVVVVVVVVQUAAAAAAAAAAAAAAAAAQFVVVVVVVVVVVVVVVVVFVAEAVFEBAFVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVEAVRVUVUVVVUFVVVVVVVVRUFVVVVVVVVVVVVVVVVVVVRBFRRQUVVVVVVVVVVQUVVVQVVVVVVVVVVVVVVVVVVVVAEQVFFVVVVVBVVVVVVVBQBRVVVVVVVVVVVVVVVVVVUEAVRVUVUBVVUFVVVVVVVVVUVVVVVVVVVVVVVVVVVVVUVUVVVRVRVVVVVVVVVVVVVVVFRVVVVVVVVVVVVVVVVVBFQFBFBVQVVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVUURAUEUFVBVVUFVVVVVVVVVVBVVVVVVVVVVVVVVVVVFUQBVFVBVRVVVQVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVRRUFRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVRAEBVVRUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEAAFRVVQBAVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVRFRVVVVVVVVVVVVVVVVVQEAAEAABFUBAAABAAAAAAAAAABUVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAQQAQUFVVVVVVVVQBVRVVVUBVFVVRUFVUVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBVVVVVVVVVVVVVVVVBVBVVVVVVVUFVFVVVVVVVQVVVVVVVVVVBVVVVX///ff//ddfd9bV11UQAFBVRQEAAFVXUVVVVVVVVVVVVVUVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVUVUVVAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVcVFFVVVVVVVVVVVVVVVVVVRQBARAEAVBUAABRVVVVVVVVVVVVVVVUAAAAAAAAAAAAAAFAAAABVVVVVVQBVVVVVVVVVVVVVVVUAAFAFVFVVVVVVVVVVFQAAVVVVUFVVVVVVVVUFUABQVVVVVVVVVVVVVVVVVUVQEQBVVVVVVVVVVVVVVVVVVQAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAQAVFFVVFBVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAAAAAAAAAAABVVRUAVVVVVVVVBUBVVVVVVVVVVVVVVVUAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAABUVVVVVVVVVVVV9VVVVWlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf1X11VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV9VVVVVVVfVVVVVVVVqqpVVVVV////VVVVVVVVVVVVVdVVVaWq1VVVVV1V9VVVVVV9VV9VdVVXVVVVVXVV9V11XVVd9VVVVVVVVVVXVVVVVVVVVVV31d9VVVVVVVVVVVVVVVVVVVX9VVVVVVVVV1VV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVV1VVVVVVVVVVVVVVVVddVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVQVVVVVVVVVVVVVVVVVVVV/f///////////////19V1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAKqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVVVVVVVVqqqqqqqqqqqqqqqqqqoKAKqqqmqpqqqqqqqqqqqqqqqqqqqqqqqqqqpqgaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVqaqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqKqqqqqqqqqqqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVZWqqqqqqqqqqqqqqmqqqqqqqqqqqqqqVVWqqqqqqqqqqqqqqqqqqqpWqqqqqqqqqqqqqqqqqmpVVVVVVVVVVVVVVVVVX1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVAAABQVVVVVVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVFRRVVVVVVVVVBVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVQAAAABQVUUVVVVVVVVVVVVVBQBQVVVVVVUVAAAQVVVVqqqqqqqqqlZAVVVVVVVVVVVVVVUVBVBQVFVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVUBQEFBVVUVVVVUVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVBBRUBVFVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVRRVVVVVaqqqqqqqqqqqlVVVQAAAAAAQBUAAAAAAAAAAAAAAABVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUMAADwqqpaVQAAAACqqqqqqqqqqmqqqqqqaqpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVlVVVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVWqalVVAABUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVAVQFBVQBVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVAVBVVVVVVVVVVVVVVVVVVRVUVVVVVVVVVVVVVVVVVVVVVVVVBQBVVVVVVVVVVVVVVVVVVVVVVQUAAFRVVVVVVVVVVVVVVQVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVUAAABAVVVVVVVVVVVVVRRUVRVQVVVVVVVVVVVVVVUVQEFVRVVVVVVVVVVVVVVVVVVVVUBVVVVVVVVVVRUAAQBUVVVVVVVVVVVVVVVVVVUVVVVVUFVVVVVVVVVVVVVVVQUAQARVARRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVQAFVFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFRUAQFVVVVVVUFVVVVVVVVVVVVVVVVUVRFRVVVFVFVVVVQUAVABUVVVVVVVVVVVVVVVVVVVVVRQARBFQBUBVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAFRFVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVFABEEQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUFUFUQVFVVVVVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVRUAQBFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVRAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEQUQAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQAAQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUVABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUABVVUVVVVVVVVVQEAQFVVVVVVVVVVVRUAFEBVFVVVAUABVVVVVVVVVVVVVQAAAABAUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUERFVVVVVVVVVVVVVVVVVVVVVVVQBAABBVVVVVVVVVVVVVVVVVVVVVVVVVVQUAAAAAAAUABEFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBQEUQAABVVVVVVVVVVVVVVVVVVVVVVVVQEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVUVVVAVVVVVVVVVVVVVVVVBUBVQFVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFQAAAFBVVVVVVVVVVVVVVVVVVVVVVQUAAFABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFRVVVVVVVVVVVVVVVVVVQBAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVRVAVVVVVVVVVVVVVVVVVVVVVVVVVapUVVWgalVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVVVVVZWqqqqqqqqqalVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpqVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqpqmmqqqqqqqqqqmpVVVVlVVVVVVVVVWpZVVVVqlVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVVVVVVVVVUEAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAAAAAFAAAAAAAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBUAEAAAAAQAEAVVVVVVVVVQVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqmpVVaqqqqqqalVVAAAAAAAAAAAAAAAAAEAVAAAAAAAAAAAAAAAAVFVRVVVVVFVVVVUVAAEAAABVVVVVVVVVVVVVVVVVVVVVVVVVVQBAAAAAABQAEARAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVRVUFVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVVVVVVVVVVVVVVVVVVVVVdf3/f1VVVVVVVVVVVVVVVVVVVVVVVfX///////9uVVVVqqq6qqqqqur6v79VqqpWVV9VVVWqWlVVVVVVVf//////////V1VV/f/f///////////////////////3//////9VVVX/////////////f9X/VVVV/////1dX//////////////////////9/9//////////////////////////////////////////////////////////////X////////////////////X1VV1X////////9VVVVVdVVVVVVVVX1VVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVXV////////////////////////////VVVVVVVVVVVVVVVV//////////////////////9fVVd//Vf/VVXVV1X//1dVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX///9VV1VVVVVVVf//////////////f///3/////////////////////////////////////////////////////////////9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV////V///f/X/////////////////f1f9////1///f9X//1dVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVVVVVVVVVVVmWVWGqpVmqVVVVVVWVVVVVVVVVVZVVVQAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAABVVVVVVZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUAlmpaWmqqBUCmWZVlVVVVVVVVVVUAAAAAVVZVValWVVVVVVVVVVVVVlVVVVVVVVVVAAAAAAAAAABUVVVVlVlZVVVlVVVpVVVVVVVVVVVVVVWqqqpqqqqqVaqqWlVVVVlVqqqqVVVVVWVVVVpVVVVVpWVWVVVVlVVVVVVVVaaWmpZZWWWplqqqZlWqVVpZVVpWZVVVVWqqpaVaVVVVpapaVVVZWVVVWVVVVVVVlVVVVVVVVVVVVVVVVVVVVVVVVVVVZVX1VVVVaVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlWqqqqqqqqqqqpWVVWqqqqqpVpVVZqqWlWlpVVaWqWWpVpVVVWlWlWVVVVVfVVpWaVVr1VmVVVVVaqqVVVmVf///1VVVZqaappVVVXVVVWlqtVVVaVdVfVVVVVVvVWvqrqqq6qqmlW6qvquuq5VXfVVVVVVVVVVV1VVVVVZVVVVd9XfVVVVVVVVVaWqqqqqqqqq/VVVVVVVVVdVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1VdVVVVVVVVVVVVVVVVXrVpVVVVVVVVVVVWqqqqqqqqqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjMAAMCqqlpVAAAAAKqqqqqqqqqqaqqqqqpqqlVVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVVVqmpVVQAAVFmqqqpWqqqqqqqqqlqqqqqqqqqqqqqqqqqqqlpVqqqqqqqqqrr+/7+qqqqqVlVVVVVVVVVVVVVVVVX1////////JQUAAAwAAAAEAAAALQQAACYFAACvAgAAMDEyMzQ1Njc4OWFiY2RlZi9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3V1aWQtMS4xNi4wL3NyYy9mbXQucnMA6DwnAFsAAAC7AAAADQAAAOg8JwBbAAAAswAAABUAAADoPCcAWwAAALYAAAANAAAA6DwnAFsAAAC3AAAADQAAAAAAAAD//////////4g9JwAAAAAAAAAAAAAAAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAKA9JwBPAAAAGQEAABkAAABUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHkAPicAJAAAALRBJwBQAAAAuQIAAAkAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEwMC9zcmMvY29udmVydC9zbGljZXMucnNKc1ZhbHVlKCmrPicACAAAALM+JwABAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NhY2hlL2ludGVybi5ycwAAAMQ+JwBtAAAAGgAAACsAAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZAAAKAUAAAQAAAAEAAAAKQUAACoFAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAIw/JwAqAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvbGliLnJzwD8nAGAAAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AAAwQCcADgAAAMA/JwBgAAAAegIAAA0AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNTAvc3JjL3F1ZXVlLnJzAAAAWEAnAG0AAAAlAAAALgAAAFhAJwBtAAAAKAAAACkAAABYQCcAbQAAAD4AAAAaAAAAWEAnAG0AAAA+AAAAJwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC41MC9zcmMvdGFzay9zaW5nbGV0aHJlYWQucnMAAAAIQScAeQAAACIAAAAVAAAALAUAAC0FAAAuBQAALwUAAAhBJwB5AAAAZwAAACUAAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhk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AAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgA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JgCAyyYAgssmAITLJgCGyyYAicsmAIzLJgCQyyYAkssmAJTLJgCWyyYAmcsmAJzLJgCfyyYAAQAAAAEAAAABAAAAAQAAAAYAAAAEAAAABgAAAGfLJgBoyyYAacsmAGrLJgBryyYAccsmAHXLJgAFAAAABgAAAAgAAACV4iYAmuImAFPiJgAGAAAACgAAAAkAAAAJAAAAAgAAAAUAAAAJAAAABQAAAAYAAAAGAAAAAgAAAAMAAAAIAAAABwAAAAcAAAAJAAAABgAAAAgAAAAHAAAAAwAAAAYAAAAGAAAABgAAAAQAAAAJAAAABgAAAAcAAAAFAAAACAAAAAUAAAAJAAAABAAAAAYAAAACAAAADgAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAADAAAAAgAAAAIAAAACAAAAAgAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAACAAAAAgAAAAIAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAADAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAADQAAAAsA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", "base64");
     var wasmModule = new WebAssembly.Module(bytes);
     var wasmInstance = new WebAssembly.Instance(wasmModule, imports);
     wasm = wasmInstance.exports;
diff --git a/deps/amaro/dist/package.json b/deps/amaro/dist/package.json
index 6ac346490e1d95..99a1362b1c6682 100644
--- a/deps/amaro/dist/package.json
+++ b/deps/amaro/dist/package.json
@@ -4,7 +4,7 @@
     "강동윤 <kdy1997.dev@gmail.com>"
   ],
   "description": "wasm module for swc",
-  "version": "1.15.11",
+  "version": "1.15.18",
   "license": "Apache-2.0",
   "repository": {
     "type": "git",
diff --git a/deps/amaro/package.json b/deps/amaro/package.json
index 6722d424d7562e..d8d5c9f497b90d 100644
--- a/deps/amaro/package.json
+++ b/deps/amaro/package.json
@@ -1,6 +1,6 @@
 {
 	"name": "amaro",
-	"version": "1.1.7",
+	"version": "1.1.8",
 	"description": "Node.js TypeScript wrapper",
 	"license": "MIT",
 	"type": "commonjs",
diff --git a/src/amaro_version.h b/src/amaro_version.h
index 514371f22648ee..203d46ebc74217 100644
--- a/src/amaro_version.h
+++ b/src/amaro_version.h
@@ -2,5 +2,5 @@
 // Refer to tools/dep_updaters/update-amaro.sh
 #ifndef SRC_AMARO_VERSION_H_
 #define SRC_AMARO_VERSION_H_
-#define AMARO_VERSION "1.1.7"
+#define AMARO_VERSION "1.1.8"
 #endif  // SRC_AMARO_VERSION_H_

From 71a2f82d7c452a4f0215ca2315e7a3fbcd833b65 Mon Sep 17 00:00:00 2001
From: npm CLI robot <npm-cli+bot@github.com>
Date: Mon, 16 Mar 2026 14:59:47 -0700
Subject: [PATCH 180/267] deps: upgrade npm to 11.11.1

PR-URL: https://github.com/nodejs/node/pull/62216
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
---
 deps/npm/docs/content/commands/npm-ls.md      |   2 +-
 deps/npm/docs/content/commands/npm-trust.md   |   2 +-
 deps/npm/docs/content/commands/npm.md         |   2 +-
 deps/npm/docs/content/using-npm/scripts.md    |   4 -
 deps/npm/docs/content/using-npm/workspaces.md |  13 +-
 deps/npm/docs/lib/index.js                    |   2 +-
 deps/npm/docs/output/commands/npm-access.html |   4 +-
 .../npm/docs/output/commands/npm-adduser.html |   4 +-
 deps/npm/docs/output/commands/npm-audit.html  |   4 +-
 deps/npm/docs/output/commands/npm-bugs.html   |   4 +-
 deps/npm/docs/output/commands/npm-cache.html  |   4 +-
 deps/npm/docs/output/commands/npm-ci.html     |   4 +-
 .../docs/output/commands/npm-completion.html  |   4 +-
 deps/npm/docs/output/commands/npm-config.html |   4 +-
 deps/npm/docs/output/commands/npm-dedupe.html |   4 +-
 .../docs/output/commands/npm-deprecate.html   |   4 +-
 deps/npm/docs/output/commands/npm-diff.html   |   4 +-
 .../docs/output/commands/npm-dist-tag.html    |   4 +-
 deps/npm/docs/output/commands/npm-docs.html   |   4 +-
 deps/npm/docs/output/commands/npm-doctor.html |   4 +-
 deps/npm/docs/output/commands/npm-edit.html   |   4 +-
 deps/npm/docs/output/commands/npm-exec.html   |   4 +-
 .../npm/docs/output/commands/npm-explain.html |   4 +-
 .../npm/docs/output/commands/npm-explore.html |   4 +-
 .../docs/output/commands/npm-find-dupes.html  |   4 +-
 deps/npm/docs/output/commands/npm-fund.html   |   4 +-
 deps/npm/docs/output/commands/npm-get.html    |   4 +-
 .../docs/output/commands/npm-help-search.html |   4 +-
 deps/npm/docs/output/commands/npm-help.html   |   4 +-
 deps/npm/docs/output/commands/npm-init.html   |   4 +-
 .../output/commands/npm-install-ci-test.html  |   4 +-
 .../output/commands/npm-install-test.html     |   4 +-
 .../npm/docs/output/commands/npm-install.html |   4 +-
 deps/npm/docs/output/commands/npm-link.html   |   4 +-
 deps/npm/docs/output/commands/npm-ll.html     |   4 +-
 deps/npm/docs/output/commands/npm-login.html  |   4 +-
 deps/npm/docs/output/commands/npm-logout.html |   4 +-
 deps/npm/docs/output/commands/npm-ls.html     |   6 +-
 deps/npm/docs/output/commands/npm-org.html    |   4 +-
 .../docs/output/commands/npm-outdated.html    |   4 +-
 deps/npm/docs/output/commands/npm-owner.html  |   4 +-
 deps/npm/docs/output/commands/npm-pack.html   |   4 +-
 deps/npm/docs/output/commands/npm-ping.html   |   4 +-
 deps/npm/docs/output/commands/npm-pkg.html    |   4 +-
 deps/npm/docs/output/commands/npm-prefix.html |   4 +-
 .../npm/docs/output/commands/npm-profile.html |   4 +-
 deps/npm/docs/output/commands/npm-prune.html  |   4 +-
 .../npm/docs/output/commands/npm-publish.html |   4 +-
 deps/npm/docs/output/commands/npm-query.html  |   4 +-
 .../npm/docs/output/commands/npm-rebuild.html |   4 +-
 deps/npm/docs/output/commands/npm-repo.html   |   4 +-
 .../npm/docs/output/commands/npm-restart.html |   4 +-
 deps/npm/docs/output/commands/npm-root.html   |   4 +-
 deps/npm/docs/output/commands/npm-run.html    |   4 +-
 deps/npm/docs/output/commands/npm-sbom.html   |   4 +-
 deps/npm/docs/output/commands/npm-search.html |   4 +-
 deps/npm/docs/output/commands/npm-set.html    |   4 +-
 .../docs/output/commands/npm-shrinkwrap.html  |   4 +-
 deps/npm/docs/output/commands/npm-star.html   |   4 +-
 deps/npm/docs/output/commands/npm-stars.html  |   4 +-
 deps/npm/docs/output/commands/npm-start.html  |   4 +-
 deps/npm/docs/output/commands/npm-stop.html   |   4 +-
 deps/npm/docs/output/commands/npm-team.html   |   4 +-
 deps/npm/docs/output/commands/npm-test.html   |   4 +-
 deps/npm/docs/output/commands/npm-token.html  |   4 +-
 deps/npm/docs/output/commands/npm-trust.html  |   7 +-
 .../docs/output/commands/npm-undeprecate.html |   4 +-
 .../docs/output/commands/npm-uninstall.html   |   4 +-
 .../docs/output/commands/npm-unpublish.html   |   4 +-
 deps/npm/docs/output/commands/npm-unstar.html |   4 +-
 deps/npm/docs/output/commands/npm-update.html |   4 +-
 .../npm/docs/output/commands/npm-version.html |   4 +-
 deps/npm/docs/output/commands/npm-view.html   |   4 +-
 deps/npm/docs/output/commands/npm-whoami.html |   4 +-
 deps/npm/docs/output/commands/npm.html        |   6 +-
 deps/npm/docs/output/commands/npx.html        |   4 +-
 .../docs/output/configuring-npm/folders.html  |   4 +-
 .../docs/output/configuring-npm/install.html  |   4 +-
 .../output/configuring-npm/npm-global.html    |   4 +-
 .../docs/output/configuring-npm/npm-json.html |   4 +-
 .../configuring-npm/npm-shrinkwrap-json.html  |   4 +-
 .../docs/output/configuring-npm/npmrc.html    |   4 +-
 .../output/configuring-npm/package-json.html  |   4 +-
 .../configuring-npm/package-lock-json.html    |   4 +-
 deps/npm/docs/output/using-npm/config.html    |   4 +-
 .../using-npm/dependency-selectors.html       |   4 +-
 .../npm/docs/output/using-npm/developers.html |   4 +-
 deps/npm/docs/output/using-npm/logging.html   |   4 +-
 deps/npm/docs/output/using-npm/orgs.html      |   4 +-
 .../docs/output/using-npm/package-spec.html   |   4 +-
 deps/npm/docs/output/using-npm/registry.html  |   4 +-
 deps/npm/docs/output/using-npm/removal.html   |   4 +-
 deps/npm/docs/output/using-npm/scope.html     |   4 +-
 deps/npm/docs/output/using-npm/scripts.html   |   8 +-
 .../npm/docs/output/using-npm/workspaces.html |  16 +-
 deps/npm/lib/arborist-cmd.js                  |  10 +-
 deps/npm/lib/base-cmd.js                      |  19 +-
 deps/npm/lib/cli/entry.js                     |  14 +-
 deps/npm/lib/cli/exit-handler.js              |  22 +-
 deps/npm/lib/cli/update-notifier.js           |  47 +-
 deps/npm/lib/cli/validate-engines.js          |  12 +-
 deps/npm/lib/commands/audit.js                |   2 +-
 deps/npm/lib/commands/cache.js                |  22 +-
 deps/npm/lib/commands/ci.js                   |  37 +-
 deps/npm/lib/commands/completion.js           |  66 +-
 deps/npm/lib/commands/config.js               |  16 +-
 deps/npm/lib/commands/dedupe.js               |   7 +-
 deps/npm/lib/commands/diff.js                 |  32 +-
 deps/npm/lib/commands/dist-tag.js             |   6 +-
 deps/npm/lib/commands/doctor.js               |   3 +-
 deps/npm/lib/commands/exec.js                 |  11 +-
 deps/npm/lib/commands/explore.js              |   4 +-
 deps/npm/lib/commands/find-dupes.js           |   1 -
 deps/npm/lib/commands/fund.js                 |  12 +-
 deps/npm/lib/commands/help-search.js          |   9 +-
 deps/npm/lib/commands/help.js                 |  12 +-
 deps/npm/lib/commands/init.js                 |  19 +-
 deps/npm/lib/commands/install-ci-test.js      |   2 -
 deps/npm/lib/commands/install-test.js         |   2 -
 deps/npm/lib/commands/install.js              |  16 +-
 deps/npm/lib/commands/link.js                 |  19 +-
 deps/npm/lib/commands/ls.js                   |  87 +--
 deps/npm/lib/commands/org.js                  |   4 +-
 deps/npm/lib/commands/outdated.js             |  16 +-
 deps/npm/lib/commands/pack.js                 |  16 +-
 deps/npm/lib/commands/pkg.js                  |  12 +-
 deps/npm/lib/commands/profile.js              |  31 +-
 deps/npm/lib/commands/prune.js                |   1 -
 deps/npm/lib/commands/publish.js              |  22 +-
 deps/npm/lib/commands/run.js                  |   6 +-
 deps/npm/lib/commands/sbom.js                 |   6 +-
 deps/npm/lib/commands/shrinkwrap.js           |   7 +-
 deps/npm/lib/commands/team.js                 |   6 +-
 deps/npm/lib/commands/trust/index.js          |   1 +
 deps/npm/lib/commands/unpublish.js            |  35 +-
 deps/npm/lib/commands/update.js               |   3 +-
 deps/npm/lib/commands/view.js                 |  15 +-
 deps/npm/lib/lifecycle-cmd.js                 |   2 +-
 deps/npm/lib/npm.js                           |  74 +--
 deps/npm/lib/package-url-cmd.js               |   5 +-
 deps/npm/lib/utils/audit-error.js             |  10 +-
 deps/npm/lib/utils/auth.js                    |   5 +-
 deps/npm/lib/utils/cmd-list.js                |   5 +-
 deps/npm/lib/utils/error-message.js           |  60 +-
 deps/npm/lib/utils/explain-eresolve.js        |  17 +-
 deps/npm/lib/utils/format-bytes.js            |   3 +-
 deps/npm/lib/utils/format-search-stream.js    |   8 +-
 deps/npm/lib/utils/get-identity.js            |   3 +-
 deps/npm/lib/utils/log-file.js                |  50 +-
 deps/npm/lib/utils/oidc.js                    |  13 +-
 deps/npm/lib/utils/open-url.js                |   6 +-
 deps/npm/lib/utils/ping.js                    |   3 +-
 deps/npm/lib/utils/queryable.js               |  93 +--
 deps/npm/lib/utils/reify-finish.js            |  34 +-
 deps/npm/lib/utils/reify-output.js            |  21 +-
 deps/npm/lib/utils/update-workspaces.js       |   9 +-
 deps/npm/lib/utils/verify-signatures.js       |  10 +-
 deps/npm/man/man1/npm-access.1                |   2 +-
 deps/npm/man/man1/npm-adduser.1               |   2 +-
 deps/npm/man/man1/npm-audit.1                 |   2 +-
 deps/npm/man/man1/npm-bugs.1                  |   2 +-
 deps/npm/man/man1/npm-cache.1                 |   2 +-
 deps/npm/man/man1/npm-ci.1                    |   2 +-
 deps/npm/man/man1/npm-completion.1            |   2 +-
 deps/npm/man/man1/npm-config.1                |   2 +-
 deps/npm/man/man1/npm-dedupe.1                |   2 +-
 deps/npm/man/man1/npm-deprecate.1             |   2 +-
 deps/npm/man/man1/npm-diff.1                  |   2 +-
 deps/npm/man/man1/npm-dist-tag.1              |   2 +-
 deps/npm/man/man1/npm-docs.1                  |   2 +-
 deps/npm/man/man1/npm-doctor.1                |   2 +-
 deps/npm/man/man1/npm-edit.1                  |   2 +-
 deps/npm/man/man1/npm-exec.1                  |   2 +-
 deps/npm/man/man1/npm-explain.1               |   2 +-
 deps/npm/man/man1/npm-explore.1               |   2 +-
 deps/npm/man/man1/npm-find-dupes.1            |   2 +-
 deps/npm/man/man1/npm-fund.1                  |   2 +-
 deps/npm/man/man1/npm-get.1                   |   2 +-
 deps/npm/man/man1/npm-help-search.1           |   2 +-
 deps/npm/man/man1/npm-help.1                  |   2 +-
 deps/npm/man/man1/npm-init.1                  |   2 +-
 deps/npm/man/man1/npm-install-ci-test.1       |   2 +-
 deps/npm/man/man1/npm-install-test.1          |   2 +-
 deps/npm/man/man1/npm-install.1               |   2 +-
 deps/npm/man/man1/npm-link.1                  |   2 +-
 deps/npm/man/man1/npm-ll.1                    |   2 +-
 deps/npm/man/man1/npm-login.1                 |   2 +-
 deps/npm/man/man1/npm-logout.1                |   2 +-
 deps/npm/man/man1/npm-ls.1                    |   4 +-
 deps/npm/man/man1/npm-org.1                   |   2 +-
 deps/npm/man/man1/npm-outdated.1              |   2 +-
 deps/npm/man/man1/npm-owner.1                 |   2 +-
 deps/npm/man/man1/npm-pack.1                  |   2 +-
 deps/npm/man/man1/npm-ping.1                  |   2 +-
 deps/npm/man/man1/npm-pkg.1                   |   2 +-
 deps/npm/man/man1/npm-prefix.1                |   2 +-
 deps/npm/man/man1/npm-profile.1               |   2 +-
 deps/npm/man/man1/npm-prune.1                 |   2 +-
 deps/npm/man/man1/npm-publish.1               |   2 +-
 deps/npm/man/man1/npm-query.1                 |   2 +-
 deps/npm/man/man1/npm-rebuild.1               |   2 +-
 deps/npm/man/man1/npm-repo.1                  |   2 +-
 deps/npm/man/man1/npm-restart.1               |   2 +-
 deps/npm/man/man1/npm-root.1                  |   2 +-
 deps/npm/man/man1/npm-run.1                   |   2 +-
 deps/npm/man/man1/npm-sbom.1                  |   2 +-
 deps/npm/man/man1/npm-search.1                |   2 +-
 deps/npm/man/man1/npm-set.1                   |   2 +-
 deps/npm/man/man1/npm-shrinkwrap.1            |   2 +-
 deps/npm/man/man1/npm-star.1                  |   2 +-
 deps/npm/man/man1/npm-stars.1                 |   2 +-
 deps/npm/man/man1/npm-start.1                 |   2 +-
 deps/npm/man/man1/npm-stop.1                  |   2 +-
 deps/npm/man/man1/npm-team.1                  |   2 +-
 deps/npm/man/man1/npm-test.1                  |   2 +-
 deps/npm/man/man1/npm-token.1                 |   2 +-
 deps/npm/man/man1/npm-trust.1                 |   4 +-
 deps/npm/man/man1/npm-undeprecate.1           |   2 +-
 deps/npm/man/man1/npm-uninstall.1             |   2 +-
 deps/npm/man/man1/npm-unpublish.1             |   2 +-
 deps/npm/man/man1/npm-unstar.1                |   2 +-
 deps/npm/man/man1/npm-update.1                |   2 +-
 deps/npm/man/man1/npm-version.1               |   2 +-
 deps/npm/man/man1/npm-view.1                  |   2 +-
 deps/npm/man/man1/npm-whoami.1                |   2 +-
 deps/npm/man/man1/npm.1                       |   4 +-
 deps/npm/man/man1/npx.1                       |   2 +-
 deps/npm/man/man5/folders.5                   |   2 +-
 deps/npm/man/man5/install.5                   |   2 +-
 deps/npm/man/man5/npm-global.5                |   2 +-
 deps/npm/man/man5/npm-json.5                  |   2 +-
 deps/npm/man/man5/npm-shrinkwrap-json.5       |   2 +-
 deps/npm/man/man5/npmrc.5                     |   2 +-
 deps/npm/man/man5/package-json.5              |   2 +-
 deps/npm/man/man5/package-lock-json.5         |   2 +-
 deps/npm/man/man7/config.7                    |   2 +-
 deps/npm/man/man7/dependency-selectors.7      |   2 +-
 deps/npm/man/man7/developers.7                |   2 +-
 deps/npm/man/man7/logging.7                   |   2 +-
 deps/npm/man/man7/orgs.7                      |   2 +-
 deps/npm/man/man7/package-spec.7              |   2 +-
 deps/npm/man/man7/registry.7                  |   2 +-
 deps/npm/man/man7/removal.7                   |   2 +-
 deps/npm/man/man7/scope.7                     |   2 +-
 deps/npm/man/man7/scripts.7                   |   5 +-
 deps/npm/man/man7/workspaces.7                |  12 +-
 .../arborist/lib/arborist/isolated-reifier.js | 607 +++++++++---------
 .../@npmcli/arborist/lib/arborist/rebuild.js  |  12 +-
 .../@npmcli/arborist/lib/arborist/reify.js    | 122 +++-
 .../@npmcli/arborist/lib/audit-report.js      |   2 +
 .../node_modules/@npmcli/arborist/lib/diff.js |   8 +-
 .../@npmcli/arborist/lib/inventory.js         |   3 +-
 .../@npmcli/arborist/lib/isolated-classes.js  | 138 ++++
 .../node_modules/@npmcli/arborist/lib/node.js |  39 +-
 .../arborist/lib/query-selector-all.js        |   9 +-
 .../@npmcli/arborist/package.json             |   3 +-
 .../@npmcli/run-script/lib/set-path.js        |   8 +
 .../@npmcli/run-script/package.json           |   9 +-
 .../brace-expansion/dist/commonjs/index.js    |   2 +-
 .../brace-expansion/dist/esm/index.js         |   2 +-
 .../node_modules/brace-expansion/package.json |   2 +-
 deps/npm/node_modules/libnpmdiff/package.json |   4 +-
 deps/npm/node_modules/libnpmexec/package.json |   4 +-
 deps/npm/node_modules/libnpmfund/package.json |   4 +-
 deps/npm/node_modules/libnpmpack/package.json |   4 +-
 .../minimatch/dist/commonjs/ast.js            | 287 ++++++++-
 .../minimatch/dist/commonjs/index.js          | 270 +++++---
 .../node_modules/minimatch/dist/esm/ast.js    | 287 ++++++++-
 .../node_modules/minimatch/dist/esm/index.js  | 270 +++++---
 deps/npm/node_modules/minimatch/package.json  |   4 +-
 deps/npm/node_modules/pacote/lib/registry.js  |   1 +
 deps/npm/node_modules/pacote/package.json     |   6 +-
 .../tar/dist/commonjs/index.min.js            |   4 +-
 .../node_modules/tar/dist/commonjs/unpack.js  |   8 +-
 .../node_modules/tar/dist/esm/index.min.js    |   4 +-
 deps/npm/node_modules/tar/dist/esm/unpack.js  |   8 +-
 deps/npm/node_modules/tar/package.json        |  12 +-
 .../write-file-atomic/lib/index.js            |  14 +-
 .../write-file-atomic/package.json            |   9 +-
 deps/npm/package.json                         |  20 +-
 .../test/lib/commands/init.js.test.cjs        |   6 +-
 .../test/lib/commands/install.js.test.cjs     |  18 +-
 .../tap-snapshots/test/lib/docs.js.test.cjs   |   8 +-
 .../test/lib/utils/error-message.js.test.cjs  | 146 ++---
 .../lib/utils/explain-eresolve.js.test.cjs    |  84 +--
 deps/npm/test/lib/base-cmd.js                 |   1 +
 deps/npm/test/lib/commands/ls.js              | 104 +++
 287 files changed, 2458 insertions(+), 1817 deletions(-)
 create mode 100644 deps/npm/node_modules/@npmcli/arborist/lib/isolated-classes.js

diff --git a/deps/npm/docs/content/commands/npm-ls.md b/deps/npm/docs/content/commands/npm-ls.md
index 63db0081de3a24..c5b4388b3fb501 100644
--- a/deps/npm/docs/content/commands/npm-ls.md
+++ b/deps/npm/docs/content/commands/npm-ls.md
@@ -23,7 +23,7 @@ Note that nested packages will *also* show the paths to the specified packages.
 For example, running `npm ls promzard` in npm's source tree will show:
 
 ```bash
-npm@11.11.0 /path/to/npm
+npm@11.11.1 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5
 ```
diff --git a/deps/npm/docs/content/commands/npm-trust.md b/deps/npm/docs/content/commands/npm-trust.md
index cdd00c26851b01..c26e47ad1271d9 100644
--- a/deps/npm/docs/content/commands/npm-trust.md
+++ b/deps/npm/docs/content/commands/npm-trust.md
@@ -7,7 +7,7 @@ description: Manage trusted publishing relationships between packages and CI/CD
 ### Synopsis
 
 ```bash
-npm trust
+
 ```
 
 Note: This command is unaware of workspaces.
diff --git a/deps/npm/docs/content/commands/npm.md b/deps/npm/docs/content/commands/npm.md
index e85c05b84902a1..b6dde2852ac661 100644
--- a/deps/npm/docs/content/commands/npm.md
+++ b/deps/npm/docs/content/commands/npm.md
@@ -14,7 +14,7 @@ Note: This command is unaware of workspaces.
 
 ### Version
 
-11.11.0
+11.11.1
 
 ### Description
 
diff --git a/deps/npm/docs/content/using-npm/scripts.md b/deps/npm/docs/content/using-npm/scripts.md
index df4e1fcc754d38..91de8f22d47f0a 100644
--- a/deps/npm/docs/content/using-npm/scripts.md
+++ b/deps/npm/docs/content/using-npm/scripts.md
@@ -241,10 +241,6 @@ For more details, see:
 - [npm v7 release notes](https://github.com/npm/cli/releases/tag/v7.0.0)
 - [Discussion about script working directory reliability in npm v6 and earlier](https://github.com/npm/npm/issues/12356)
 
-### User
-
-When npm is run as root, scripts are always run with the effective uid and gid of the working directory owner.
-
 ### Environment
 
 Package scripts run in an environment where many pieces of information are made available regarding the setup of npm and the current state of the process.
diff --git a/deps/npm/docs/content/using-npm/workspaces.md b/deps/npm/docs/content/using-npm/workspaces.md
index 57344341be76c3..09d569748cd23f 100644
--- a/deps/npm/docs/content/using-npm/workspaces.md
+++ b/deps/npm/docs/content/using-npm/workspaces.md
@@ -88,24 +88,25 @@ npm install abbrev -w a
 
 **Adding a workspace as a dependency of another workspace:**
 
-If you want to add workspace **b** as a dependency of workspace **a**, you can use the workspace protocol in the dependency specifier:
+The same approach works when adding one workspace as a dependency of another.
+If you want to add workspace **b** as a dependency of workspace **a**, run:
 
 ```
-npm install b@workspace:* -w a
+npm install b -w a
 ```
 
-This will add an entry to workspace **a**'s `package.json` like:
+npm will detect that **b** is a workspace and automatically symlink it rather
+than fetching it from the registry. The resulting entry in workspace **a**'s
+`package.json` will use a standard version range:
 
 ```json
 {
   "dependencies": {
-    "b": "workspace:*"
+    "b": "^1.0.0"
   }
 }
 ```
 
-The `workspace:` protocol tells npm to link to the local workspace rather than fetching from the registry. The `*` version means it will use whatever version is defined in workspace **b**'s `package.json`.
-
 Note: other installing commands such as `uninstall`, `ci`, etc will also respect the provided `workspace` configuration.
 
 ### Using workspaces
diff --git a/deps/npm/docs/lib/index.js b/deps/npm/docs/lib/index.js
index 1056fd4e120fc8..17f7bfca8fce90 100644
--- a/deps/npm/docs/lib/index.js
+++ b/deps/npm/docs/lib/index.js
@@ -94,7 +94,7 @@ const getCommandByDoc = (docFile, docExt, commandLoader = defaultCommandLoader)
     name,
     workspaces,
     definitions: name === 'npx' ? {} : resolvedDefs,
-    usage: usage.map(u => `${usagePrefix} ${u}`.trim()).join('\n'),
+    usage: usage?.map(u => `${usagePrefix} ${u}`.trim()).join('\n'),
   }
 }
 
diff --git a/deps/npm/docs/output/commands/npm-access.html b/deps/npm/docs/output/commands/npm-access.html
index 703b4b0c59bd55..4eccf2281ade9c 100644
--- a/deps/npm/docs/output/commands/npm-access.html
+++ b/deps/npm/docs/output/commands/npm-access.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-access----11110">
+<h1 id="----npm-access----11111">
     <span>npm-access</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Set access level on published packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-adduser.html b/deps/npm/docs/output/commands/npm-adduser.html
index 2694392d938b10..8c1b0ba23ee659 100644
--- a/deps/npm/docs/output/commands/npm-adduser.html
+++ b/deps/npm/docs/output/commands/npm-adduser.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-adduser----11110">
+<h1 id="----npm-adduser----11111">
     <span>npm-adduser</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Add a registry user account</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-audit.html b/deps/npm/docs/output/commands/npm-audit.html
index 424288ea335503..70be84e75b76be 100644
--- a/deps/npm/docs/output/commands/npm-audit.html
+++ b/deps/npm/docs/output/commands/npm-audit.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-audit----11110">
+<h1 id="----npm-audit----11111">
     <span>npm-audit</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Run a security audit</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-bugs.html b/deps/npm/docs/output/commands/npm-bugs.html
index 511a206d1b055d..fa807fa6bfaed3 100644
--- a/deps/npm/docs/output/commands/npm-bugs.html
+++ b/deps/npm/docs/output/commands/npm-bugs.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-bugs----11110">
+<h1 id="----npm-bugs----11111">
     <span>npm-bugs</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Report bugs for a package in a web browser</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-cache.html b/deps/npm/docs/output/commands/npm-cache.html
index 1e6e9e45c1cc57..9037645c51e382 100644
--- a/deps/npm/docs/output/commands/npm-cache.html
+++ b/deps/npm/docs/output/commands/npm-cache.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-cache----11110">
+<h1 id="----npm-cache----11111">
     <span>npm-cache</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Manipulates packages cache</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-ci.html b/deps/npm/docs/output/commands/npm-ci.html
index af7b4c27d41ddd..0816651531157b 100644
--- a/deps/npm/docs/output/commands/npm-ci.html
+++ b/deps/npm/docs/output/commands/npm-ci.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-ci----11110">
+<h1 id="----npm-ci----11111">
     <span>npm-ci</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Clean install a project</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-completion.html b/deps/npm/docs/output/commands/npm-completion.html
index 50759a5f865c8d..2fe9944f7573ba 100644
--- a/deps/npm/docs/output/commands/npm-completion.html
+++ b/deps/npm/docs/output/commands/npm-completion.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-completion----11110">
+<h1 id="----npm-completion----11111">
     <span>npm-completion</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Tab Completion for npm</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-config.html b/deps/npm/docs/output/commands/npm-config.html
index c54962e9094d67..b8bfd67a530a11 100644
--- a/deps/npm/docs/output/commands/npm-config.html
+++ b/deps/npm/docs/output/commands/npm-config.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-config----11110">
+<h1 id="----npm-config----11111">
     <span>npm-config</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Manage the npm configuration files</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-dedupe.html b/deps/npm/docs/output/commands/npm-dedupe.html
index f2ef16750b3369..195cd69f6731f8 100644
--- a/deps/npm/docs/output/commands/npm-dedupe.html
+++ b/deps/npm/docs/output/commands/npm-dedupe.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-dedupe----11110">
+<h1 id="----npm-dedupe----11111">
     <span>npm-dedupe</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Reduce duplication in the package tree</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-deprecate.html b/deps/npm/docs/output/commands/npm-deprecate.html
index 716191ad4afa87..1dd7caf57f1b49 100644
--- a/deps/npm/docs/output/commands/npm-deprecate.html
+++ b/deps/npm/docs/output/commands/npm-deprecate.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-deprecate----11110">
+<h1 id="----npm-deprecate----11111">
     <span>npm-deprecate</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Deprecate a version of a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-diff.html b/deps/npm/docs/output/commands/npm-diff.html
index 1c9fada601ef9d..28e6e2aff1e234 100644
--- a/deps/npm/docs/output/commands/npm-diff.html
+++ b/deps/npm/docs/output/commands/npm-diff.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-diff----11110">
+<h1 id="----npm-diff----11111">
     <span>npm-diff</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">The registry diff command</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-dist-tag.html b/deps/npm/docs/output/commands/npm-dist-tag.html
index a12638e23e496c..5625e9d1613cc1 100644
--- a/deps/npm/docs/output/commands/npm-dist-tag.html
+++ b/deps/npm/docs/output/commands/npm-dist-tag.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-dist-tag----11110">
+<h1 id="----npm-dist-tag----11111">
     <span>npm-dist-tag</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Modify package distribution tags</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-docs.html b/deps/npm/docs/output/commands/npm-docs.html
index 4db6e52b4f681d..9278b5b4073e66 100644
--- a/deps/npm/docs/output/commands/npm-docs.html
+++ b/deps/npm/docs/output/commands/npm-docs.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-docs----11110">
+<h1 id="----npm-docs----11111">
     <span>npm-docs</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Open documentation for a package in a web browser</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-doctor.html b/deps/npm/docs/output/commands/npm-doctor.html
index ab8172dcc93055..21565a2c12f6eb 100644
--- a/deps/npm/docs/output/commands/npm-doctor.html
+++ b/deps/npm/docs/output/commands/npm-doctor.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-doctor----11110">
+<h1 id="----npm-doctor----11111">
     <span>npm-doctor</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Check the health of your npm environment</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-edit.html b/deps/npm/docs/output/commands/npm-edit.html
index 0f08e1698a91f4..5caff2aa9f861d 100644
--- a/deps/npm/docs/output/commands/npm-edit.html
+++ b/deps/npm/docs/output/commands/npm-edit.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-edit----11110">
+<h1 id="----npm-edit----11111">
     <span>npm-edit</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Edit an installed package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-exec.html b/deps/npm/docs/output/commands/npm-exec.html
index 44a91638730ee1..55518247acdd9f 100644
--- a/deps/npm/docs/output/commands/npm-exec.html
+++ b/deps/npm/docs/output/commands/npm-exec.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-exec----11110">
+<h1 id="----npm-exec----11111">
     <span>npm-exec</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Run a command from a local or remote npm package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-explain.html b/deps/npm/docs/output/commands/npm-explain.html
index dde3546884c2c6..fd9b4fe19a5dd6 100644
--- a/deps/npm/docs/output/commands/npm-explain.html
+++ b/deps/npm/docs/output/commands/npm-explain.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-explain----11110">
+<h1 id="----npm-explain----11111">
     <span>npm-explain</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Explain installed packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-explore.html b/deps/npm/docs/output/commands/npm-explore.html
index e636584ffdcbce..1936c345582111 100644
--- a/deps/npm/docs/output/commands/npm-explore.html
+++ b/deps/npm/docs/output/commands/npm-explore.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-explore----11110">
+<h1 id="----npm-explore----11111">
     <span>npm-explore</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Browse an installed package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-find-dupes.html b/deps/npm/docs/output/commands/npm-find-dupes.html
index 0d82625008b36e..04370edd8ba11c 100644
--- a/deps/npm/docs/output/commands/npm-find-dupes.html
+++ b/deps/npm/docs/output/commands/npm-find-dupes.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-find-dupes----11110">
+<h1 id="----npm-find-dupes----11111">
     <span>npm-find-dupes</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Find duplication in the package tree</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-fund.html b/deps/npm/docs/output/commands/npm-fund.html
index 5fc4fc3eb6a57e..2297635ae27b47 100644
--- a/deps/npm/docs/output/commands/npm-fund.html
+++ b/deps/npm/docs/output/commands/npm-fund.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-fund----11110">
+<h1 id="----npm-fund----11111">
     <span>npm-fund</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Retrieve funding information</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-get.html b/deps/npm/docs/output/commands/npm-get.html
index 813ba55be475b2..0b2f9dd572e3f2 100644
--- a/deps/npm/docs/output/commands/npm-get.html
+++ b/deps/npm/docs/output/commands/npm-get.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-get----11110">
+<h1 id="----npm-get----11111">
     <span>npm-get</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Get a value from the npm configuration</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-help-search.html b/deps/npm/docs/output/commands/npm-help-search.html
index dccf8d128b3d22..66cdfe1fd090b3 100644
--- a/deps/npm/docs/output/commands/npm-help-search.html
+++ b/deps/npm/docs/output/commands/npm-help-search.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-help-search----11110">
+<h1 id="----npm-help-search----11111">
     <span>npm-help-search</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Search npm help documentation</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-help.html b/deps/npm/docs/output/commands/npm-help.html
index 22f69c8f68d9bf..c4ea6e037d0afe 100644
--- a/deps/npm/docs/output/commands/npm-help.html
+++ b/deps/npm/docs/output/commands/npm-help.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-help----11110">
+<h1 id="----npm-help----11111">
     <span>npm-help</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Get help on npm</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-init.html b/deps/npm/docs/output/commands/npm-init.html
index b495f87f83b837..b259127c68e1f4 100644
--- a/deps/npm/docs/output/commands/npm-init.html
+++ b/deps/npm/docs/output/commands/npm-init.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-init----11110">
+<h1 id="----npm-init----11111">
     <span>npm-init</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Create a package.json file</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-install-ci-test.html b/deps/npm/docs/output/commands/npm-install-ci-test.html
index 2b05373fb8ee8f..9177de9e34a1db 100644
--- a/deps/npm/docs/output/commands/npm-install-ci-test.html
+++ b/deps/npm/docs/output/commands/npm-install-ci-test.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-install-ci-test----11110">
+<h1 id="----npm-install-ci-test----11111">
     <span>npm-install-ci-test</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Install a project with a clean slate and run tests</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-install-test.html b/deps/npm/docs/output/commands/npm-install-test.html
index 6b7ed9b5531f33..0a6fe28ae8732f 100644
--- a/deps/npm/docs/output/commands/npm-install-test.html
+++ b/deps/npm/docs/output/commands/npm-install-test.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-install-test----11110">
+<h1 id="----npm-install-test----11111">
     <span>npm-install-test</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Install package(s) and run tests</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-install.html b/deps/npm/docs/output/commands/npm-install.html
index b0d72b6006cece..07b6acef4ce40b 100644
--- a/deps/npm/docs/output/commands/npm-install.html
+++ b/deps/npm/docs/output/commands/npm-install.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-install----11110">
+<h1 id="----npm-install----11111">
     <span>npm-install</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Install a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-link.html b/deps/npm/docs/output/commands/npm-link.html
index 857eff466dab14..74c8d34a40290c 100644
--- a/deps/npm/docs/output/commands/npm-link.html
+++ b/deps/npm/docs/output/commands/npm-link.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-link----11110">
+<h1 id="----npm-link----11111">
     <span>npm-link</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Symlink a package folder</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-ll.html b/deps/npm/docs/output/commands/npm-ll.html
index 02b17bede5dede..2207540e832f4e 100644
--- a/deps/npm/docs/output/commands/npm-ll.html
+++ b/deps/npm/docs/output/commands/npm-ll.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-ll----11110">
+<h1 id="----npm-ll----11111">
     <span>npm-ll</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">List installed packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-login.html b/deps/npm/docs/output/commands/npm-login.html
index 5e4cdff4ec54b1..f8398bd514d915 100644
--- a/deps/npm/docs/output/commands/npm-login.html
+++ b/deps/npm/docs/output/commands/npm-login.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-login----11110">
+<h1 id="----npm-login----11111">
     <span>npm-login</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Login to a registry user account</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-logout.html b/deps/npm/docs/output/commands/npm-logout.html
index 9dfbc04b73ea03..e90ec8738f1e51 100644
--- a/deps/npm/docs/output/commands/npm-logout.html
+++ b/deps/npm/docs/output/commands/npm-logout.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-logout----11110">
+<h1 id="----npm-logout----11111">
     <span>npm-logout</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Log out of the registry</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html
index 18e2535e780293..5c6d051f6da5d2 100644
--- a/deps/npm/docs/output/commands/npm-ls.html
+++ b/deps/npm/docs/output/commands/npm-ls.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-ls----11110">
+<h1 id="----npm-ls----11111">
     <span>npm-ls</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">List installed packages</span>
 </header>
@@ -209,7 +209,7 @@ <h3 id="description">Description</h3>
 <p>Positional arguments are <code>name@version-range</code> identifiers, which will limit the results to only the paths to the packages named.
 Note that nested packages will <em>also</em> show the paths to the specified packages.
 For example, running <code>npm ls promzard</code> in npm's source tree will show:</p>
-<pre><code class="language-bash">npm@11.11.0 /path/to/npm
+<pre><code class="language-bash">npm@11.11.1 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5
 </code></pre>
diff --git a/deps/npm/docs/output/commands/npm-org.html b/deps/npm/docs/output/commands/npm-org.html
index f12c24ccd08677..640c87bf527128 100644
--- a/deps/npm/docs/output/commands/npm-org.html
+++ b/deps/npm/docs/output/commands/npm-org.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-org----11110">
+<h1 id="----npm-org----11111">
     <span>npm-org</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Manage orgs</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-outdated.html b/deps/npm/docs/output/commands/npm-outdated.html
index 85013138e96410..3469df56add2a9 100644
--- a/deps/npm/docs/output/commands/npm-outdated.html
+++ b/deps/npm/docs/output/commands/npm-outdated.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-outdated----11110">
+<h1 id="----npm-outdated----11111">
     <span>npm-outdated</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Check for outdated packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-owner.html b/deps/npm/docs/output/commands/npm-owner.html
index 418a012852bbba..fd5291d69b506b 100644
--- a/deps/npm/docs/output/commands/npm-owner.html
+++ b/deps/npm/docs/output/commands/npm-owner.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-owner----11110">
+<h1 id="----npm-owner----11111">
     <span>npm-owner</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Manage package owners</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-pack.html b/deps/npm/docs/output/commands/npm-pack.html
index 9e7bc2495c4953..fba8289e0527e6 100644
--- a/deps/npm/docs/output/commands/npm-pack.html
+++ b/deps/npm/docs/output/commands/npm-pack.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-pack----11110">
+<h1 id="----npm-pack----11111">
     <span>npm-pack</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Create a tarball from a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-ping.html b/deps/npm/docs/output/commands/npm-ping.html
index 5d4cf7159bd5f5..f88d576d495ebc 100644
--- a/deps/npm/docs/output/commands/npm-ping.html
+++ b/deps/npm/docs/output/commands/npm-ping.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-ping----11110">
+<h1 id="----npm-ping----11111">
     <span>npm-ping</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Ping npm registry</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-pkg.html b/deps/npm/docs/output/commands/npm-pkg.html
index e7f28ef03626a1..08173ffca459fa 100644
--- a/deps/npm/docs/output/commands/npm-pkg.html
+++ b/deps/npm/docs/output/commands/npm-pkg.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-pkg----11110">
+<h1 id="----npm-pkg----11111">
     <span>npm-pkg</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Manages your package.json</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-prefix.html b/deps/npm/docs/output/commands/npm-prefix.html
index a296f1c2e6b4dd..616cb1300bcf8a 100644
--- a/deps/npm/docs/output/commands/npm-prefix.html
+++ b/deps/npm/docs/output/commands/npm-prefix.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-prefix----11110">
+<h1 id="----npm-prefix----11111">
     <span>npm-prefix</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Display prefix</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-profile.html b/deps/npm/docs/output/commands/npm-profile.html
index c33cc5765687ca..6bff0b4e6e10dd 100644
--- a/deps/npm/docs/output/commands/npm-profile.html
+++ b/deps/npm/docs/output/commands/npm-profile.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-profile----11110">
+<h1 id="----npm-profile----11111">
     <span>npm-profile</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Change settings on your registry profile</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-prune.html b/deps/npm/docs/output/commands/npm-prune.html
index 7294045e9ffe65..86dd429a5ffd74 100644
--- a/deps/npm/docs/output/commands/npm-prune.html
+++ b/deps/npm/docs/output/commands/npm-prune.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-prune----11110">
+<h1 id="----npm-prune----11111">
     <span>npm-prune</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Remove extraneous packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-publish.html b/deps/npm/docs/output/commands/npm-publish.html
index 6aab3b9374a5e2..a5c1cea63f28bb 100644
--- a/deps/npm/docs/output/commands/npm-publish.html
+++ b/deps/npm/docs/output/commands/npm-publish.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-publish----11110">
+<h1 id="----npm-publish----11111">
     <span>npm-publish</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Publish a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-query.html b/deps/npm/docs/output/commands/npm-query.html
index 56c1b211099f28..3e1851a521b156 100644
--- a/deps/npm/docs/output/commands/npm-query.html
+++ b/deps/npm/docs/output/commands/npm-query.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-query----11110">
+<h1 id="----npm-query----11111">
     <span>npm-query</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Dependency selector query</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-rebuild.html b/deps/npm/docs/output/commands/npm-rebuild.html
index 26d26ffe16f47b..713867b0d0b28e 100644
--- a/deps/npm/docs/output/commands/npm-rebuild.html
+++ b/deps/npm/docs/output/commands/npm-rebuild.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-rebuild----11110">
+<h1 id="----npm-rebuild----11111">
     <span>npm-rebuild</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Rebuild a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-repo.html b/deps/npm/docs/output/commands/npm-repo.html
index ef019253fa5109..f4f226ee6ca3a3 100644
--- a/deps/npm/docs/output/commands/npm-repo.html
+++ b/deps/npm/docs/output/commands/npm-repo.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-repo----11110">
+<h1 id="----npm-repo----11111">
     <span>npm-repo</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Open package repository page in the browser</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-restart.html b/deps/npm/docs/output/commands/npm-restart.html
index 123e15d48d85b4..29bea2ad94fb0a 100644
--- a/deps/npm/docs/output/commands/npm-restart.html
+++ b/deps/npm/docs/output/commands/npm-restart.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-restart----11110">
+<h1 id="----npm-restart----11111">
     <span>npm-restart</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Restart a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-root.html b/deps/npm/docs/output/commands/npm-root.html
index c87ed80cc733ad..94db6ba66642a8 100644
--- a/deps/npm/docs/output/commands/npm-root.html
+++ b/deps/npm/docs/output/commands/npm-root.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-root----11110">
+<h1 id="----npm-root----11111">
     <span>npm-root</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Display npm root</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-run.html b/deps/npm/docs/output/commands/npm-run.html
index 363590f8443e2d..a82a3da49388d5 100644
--- a/deps/npm/docs/output/commands/npm-run.html
+++ b/deps/npm/docs/output/commands/npm-run.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-run----11110">
+<h1 id="----npm-run----11111">
     <span>npm-run</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Run arbitrary package scripts</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-sbom.html b/deps/npm/docs/output/commands/npm-sbom.html
index 66cfa902200837..e5d680cc23c342 100644
--- a/deps/npm/docs/output/commands/npm-sbom.html
+++ b/deps/npm/docs/output/commands/npm-sbom.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-sbom----11110">
+<h1 id="----npm-sbom----11111">
     <span>npm-sbom</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Generate a Software Bill of Materials (SBOM)</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-search.html b/deps/npm/docs/output/commands/npm-search.html
index 17af8e24ab6979..8b8b208cfec8e7 100644
--- a/deps/npm/docs/output/commands/npm-search.html
+++ b/deps/npm/docs/output/commands/npm-search.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-search----11110">
+<h1 id="----npm-search----11111">
     <span>npm-search</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Search for packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-set.html b/deps/npm/docs/output/commands/npm-set.html
index c106498372d977..07ac21208aa929 100644
--- a/deps/npm/docs/output/commands/npm-set.html
+++ b/deps/npm/docs/output/commands/npm-set.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-set----11110">
+<h1 id="----npm-set----11111">
     <span>npm-set</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Set a value in the npm configuration</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-shrinkwrap.html b/deps/npm/docs/output/commands/npm-shrinkwrap.html
index 2c9592acf95945..28179afe5d77fb 100644
--- a/deps/npm/docs/output/commands/npm-shrinkwrap.html
+++ b/deps/npm/docs/output/commands/npm-shrinkwrap.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-shrinkwrap----11110">
+<h1 id="----npm-shrinkwrap----11111">
     <span>npm-shrinkwrap</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Lock down dependency versions for publication</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-star.html b/deps/npm/docs/output/commands/npm-star.html
index b922de136847bb..bed11d853274df 100644
--- a/deps/npm/docs/output/commands/npm-star.html
+++ b/deps/npm/docs/output/commands/npm-star.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-star----11110">
+<h1 id="----npm-star----11111">
     <span>npm-star</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Mark your favorite packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-stars.html b/deps/npm/docs/output/commands/npm-stars.html
index b2bcb0584e61f0..1e46905bb1a2dd 100644
--- a/deps/npm/docs/output/commands/npm-stars.html
+++ b/deps/npm/docs/output/commands/npm-stars.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-stars----11110">
+<h1 id="----npm-stars----11111">
     <span>npm-stars</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">View packages marked as favorites</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-start.html b/deps/npm/docs/output/commands/npm-start.html
index 577e283ca51278..5a4ea33a60d388 100644
--- a/deps/npm/docs/output/commands/npm-start.html
+++ b/deps/npm/docs/output/commands/npm-start.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-start----11110">
+<h1 id="----npm-start----11111">
     <span>npm-start</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Start a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-stop.html b/deps/npm/docs/output/commands/npm-stop.html
index 2b54db5b7463f3..403b4df448f296 100644
--- a/deps/npm/docs/output/commands/npm-stop.html
+++ b/deps/npm/docs/output/commands/npm-stop.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-stop----11110">
+<h1 id="----npm-stop----11111">
     <span>npm-stop</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Stop a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-team.html b/deps/npm/docs/output/commands/npm-team.html
index 3c7eae9e8967bb..2f5198c2082771 100644
--- a/deps/npm/docs/output/commands/npm-team.html
+++ b/deps/npm/docs/output/commands/npm-team.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-team----11110">
+<h1 id="----npm-team----11111">
     <span>npm-team</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Manage organization teams and team memberships</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-test.html b/deps/npm/docs/output/commands/npm-test.html
index 2bd1be34b98cd1..e6192317e09ef3 100644
--- a/deps/npm/docs/output/commands/npm-test.html
+++ b/deps/npm/docs/output/commands/npm-test.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-test----11110">
+<h1 id="----npm-test----11111">
     <span>npm-test</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Test a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-token.html b/deps/npm/docs/output/commands/npm-token.html
index 4e1121c7dab2b4..ed4519a8d8b686 100644
--- a/deps/npm/docs/output/commands/npm-token.html
+++ b/deps/npm/docs/output/commands/npm-token.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-token----11110">
+<h1 id="----npm-token----11111">
     <span>npm-token</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Manage your authentication tokens</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-trust.html b/deps/npm/docs/output/commands/npm-trust.html
index 777b1b91529baf..8d9082f694c567 100644
--- a/deps/npm/docs/output/commands/npm-trust.html
+++ b/deps/npm/docs/output/commands/npm-trust.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-trust----11110">
+<h1 id="----npm-trust----11111">
     <span>npm-trust</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Manage trusted publishing relationships between packages and CI/CD providers</span>
 </header>
@@ -199,8 +199,7 @@ <h2 id="table-of-contents">Table of contents</h2>
 </section>
 
 <div id="_content"><h3 id="synopsis">Synopsis</h3>
-<pre><code class="language-bash">npm trust
-</code></pre>
+<pre><code class="language-bash"></code></pre>
 <p>Note: This command is unaware of workspaces.</p>
 <h3 id="prerequisites">Prerequisites</h3>
 <p>Before using npm trust commands, ensure the following requirements are met:</p>
diff --git a/deps/npm/docs/output/commands/npm-undeprecate.html b/deps/npm/docs/output/commands/npm-undeprecate.html
index 961da2379eee38..469f7ded0d83b8 100644
--- a/deps/npm/docs/output/commands/npm-undeprecate.html
+++ b/deps/npm/docs/output/commands/npm-undeprecate.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-undeprecate----11110">
+<h1 id="----npm-undeprecate----11111">
     <span>npm-undeprecate</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Undeprecate a version of a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-uninstall.html b/deps/npm/docs/output/commands/npm-uninstall.html
index 70dff9cfcfb4cc..a617d154dc525f 100644
--- a/deps/npm/docs/output/commands/npm-uninstall.html
+++ b/deps/npm/docs/output/commands/npm-uninstall.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-uninstall----11110">
+<h1 id="----npm-uninstall----11111">
     <span>npm-uninstall</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Remove a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-unpublish.html b/deps/npm/docs/output/commands/npm-unpublish.html
index b31d1337409445..a728e0f4d56aa3 100644
--- a/deps/npm/docs/output/commands/npm-unpublish.html
+++ b/deps/npm/docs/output/commands/npm-unpublish.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-unpublish----11110">
+<h1 id="----npm-unpublish----11111">
     <span>npm-unpublish</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Remove a package from the registry</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-unstar.html b/deps/npm/docs/output/commands/npm-unstar.html
index 2b66840d5d748e..ec751ca17381fc 100644
--- a/deps/npm/docs/output/commands/npm-unstar.html
+++ b/deps/npm/docs/output/commands/npm-unstar.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-unstar----11110">
+<h1 id="----npm-unstar----11111">
     <span>npm-unstar</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Remove an item from your favorite packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-update.html b/deps/npm/docs/output/commands/npm-update.html
index 062f516cdcc1e7..8c64d8cb02a8fc 100644
--- a/deps/npm/docs/output/commands/npm-update.html
+++ b/deps/npm/docs/output/commands/npm-update.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-update----11110">
+<h1 id="----npm-update----11111">
     <span>npm-update</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Update packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-version.html b/deps/npm/docs/output/commands/npm-version.html
index afc26227983beb..fcf5f7f6bf1ab6 100644
--- a/deps/npm/docs/output/commands/npm-version.html
+++ b/deps/npm/docs/output/commands/npm-version.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-version----11110">
+<h1 id="----npm-version----11111">
     <span>npm-version</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Bump a package version</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-view.html b/deps/npm/docs/output/commands/npm-view.html
index 962fb3e917a597..682902d4b79089 100644
--- a/deps/npm/docs/output/commands/npm-view.html
+++ b/deps/npm/docs/output/commands/npm-view.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-view----11110">
+<h1 id="----npm-view----11111">
     <span>npm-view</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">View registry info</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-whoami.html b/deps/npm/docs/output/commands/npm-whoami.html
index bbe839b749e927..4daee589dd841a 100644
--- a/deps/npm/docs/output/commands/npm-whoami.html
+++ b/deps/npm/docs/output/commands/npm-whoami.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-whoami----11110">
+<h1 id="----npm-whoami----11111">
     <span>npm-whoami</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Display npm username</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html
index f2426536a0a57e..e64366fc75a975 100644
--- a/deps/npm/docs/output/commands/npm.html
+++ b/deps/npm/docs/output/commands/npm.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm----11110">
+<h1 id="----npm----11111">
     <span>npm</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">javascript package manager</span>
 </header>
@@ -203,7 +203,7 @@ <h2 id="table-of-contents">Table of contents</h2>
 </code></pre>
 <p>Note: This command is unaware of workspaces.</p>
 <h3 id="version">Version</h3>
-<p>11.11.0</p>
+<p>11.11.1</p>
 <h3 id="description">Description</h3>
 <p>npm is the package manager for the Node JavaScript platform.
 It puts modules in place so that node can find them, and manages dependency conflicts intelligently.</p>
diff --git a/deps/npm/docs/output/commands/npx.html b/deps/npm/docs/output/commands/npx.html
index 1d8e36310c207d..08bc84e9953fad 100644
--- a/deps/npm/docs/output/commands/npx.html
+++ b/deps/npm/docs/output/commands/npx.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npx----11110">
+<h1 id="----npx----11111">
     <span>npx</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Run a command from a local or remote npm package</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/folders.html b/deps/npm/docs/output/configuring-npm/folders.html
index 47da8cc4d77d2e..c278f339ceaf04 100644
--- a/deps/npm/docs/output/configuring-npm/folders.html
+++ b/deps/npm/docs/output/configuring-npm/folders.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----folders----11110">
+<h1 id="----folders----11111">
     <span>Folders</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Folder structures used by npm</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/install.html b/deps/npm/docs/output/configuring-npm/install.html
index ff278db8f72ece..0312f76a620994 100644
--- a/deps/npm/docs/output/configuring-npm/install.html
+++ b/deps/npm/docs/output/configuring-npm/install.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----install----11110">
+<h1 id="----install----11111">
     <span>Install</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Download and install node and npm</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/npm-global.html b/deps/npm/docs/output/configuring-npm/npm-global.html
index 47da8cc4d77d2e..c278f339ceaf04 100644
--- a/deps/npm/docs/output/configuring-npm/npm-global.html
+++ b/deps/npm/docs/output/configuring-npm/npm-global.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----folders----11110">
+<h1 id="----folders----11111">
     <span>Folders</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Folder structures used by npm</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/npm-json.html b/deps/npm/docs/output/configuring-npm/npm-json.html
index 5b6c4ae33b70c8..64be225d20808e 100644
--- a/deps/npm/docs/output/configuring-npm/npm-json.html
+++ b/deps/npm/docs/output/configuring-npm/npm-json.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----packagejson----11110">
+<h1 id="----packagejson----11111">
     <span>package.json</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Specifics of npm's package.json handling</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
index 6576d09f77fbd1..97a6b0c9fb8d6f 100644
--- a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
+++ b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-shrinkwrapjson----11110">
+<h1 id="----npm-shrinkwrapjson----11111">
     <span>npm-shrinkwrap.json</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">A publishable lockfile</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/npmrc.html b/deps/npm/docs/output/configuring-npm/npmrc.html
index 34b344f7da087c..e1a3b32e5b8f30 100644
--- a/deps/npm/docs/output/configuring-npm/npmrc.html
+++ b/deps/npm/docs/output/configuring-npm/npmrc.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npmrc----11110">
+<h1 id="----npmrc----11111">
     <span>.npmrc</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">The npm config files</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/package-json.html b/deps/npm/docs/output/configuring-npm/package-json.html
index 5b6c4ae33b70c8..64be225d20808e 100644
--- a/deps/npm/docs/output/configuring-npm/package-json.html
+++ b/deps/npm/docs/output/configuring-npm/package-json.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----packagejson----11110">
+<h1 id="----packagejson----11111">
     <span>package.json</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Specifics of npm's package.json handling</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/package-lock-json.html b/deps/npm/docs/output/configuring-npm/package-lock-json.html
index 1b6398d7315a41..f11857e2c95c87 100644
--- a/deps/npm/docs/output/configuring-npm/package-lock-json.html
+++ b/deps/npm/docs/output/configuring-npm/package-lock-json.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----package-lockjson----11110">
+<h1 id="----package-lockjson----11111">
     <span>package-lock.json</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">A manifestation of the manifest</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/config.html b/deps/npm/docs/output/using-npm/config.html
index c80f9aef29940a..12d8c8ae0e4e38 100644
--- a/deps/npm/docs/output/using-npm/config.html
+++ b/deps/npm/docs/output/using-npm/config.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----config----11110">
+<h1 id="----config----11111">
     <span>Config</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">About npm configuration</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/dependency-selectors.html b/deps/npm/docs/output/using-npm/dependency-selectors.html
index d05e6b11d01bce..6473c4ac5e107f 100644
--- a/deps/npm/docs/output/using-npm/dependency-selectors.html
+++ b/deps/npm/docs/output/using-npm/dependency-selectors.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----dependency-selectors----11110">
+<h1 id="----dependency-selectors----11111">
     <span>Dependency Selectors</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Dependency Selector Syntax & Querying</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/developers.html b/deps/npm/docs/output/using-npm/developers.html
index 30cc68a686b84e..299b23a026de01 100644
--- a/deps/npm/docs/output/using-npm/developers.html
+++ b/deps/npm/docs/output/using-npm/developers.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----developers----11110">
+<h1 id="----developers----11111">
     <span>Developers</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Developer guide</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/logging.html b/deps/npm/docs/output/using-npm/logging.html
index 1169069dd85831..5ad039009097ca 100644
--- a/deps/npm/docs/output/using-npm/logging.html
+++ b/deps/npm/docs/output/using-npm/logging.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----logging----11110">
+<h1 id="----logging----11111">
     <span>Logging</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Why, What & How we Log</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/orgs.html b/deps/npm/docs/output/using-npm/orgs.html
index 103db8e1b477ea..ab24b5d19e3006 100644
--- a/deps/npm/docs/output/using-npm/orgs.html
+++ b/deps/npm/docs/output/using-npm/orgs.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----organizations----11110">
+<h1 id="----organizations----11111">
     <span>Organizations</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Working with teams & organizations</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/package-spec.html b/deps/npm/docs/output/using-npm/package-spec.html
index 9ca82242a8fee0..afd8988b733220 100644
--- a/deps/npm/docs/output/using-npm/package-spec.html
+++ b/deps/npm/docs/output/using-npm/package-spec.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----package-spec----11110">
+<h1 id="----package-spec----11111">
     <span>Package spec</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Package name specifier</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/registry.html b/deps/npm/docs/output/using-npm/registry.html
index 63d5d7f6c48b43..67c15a687628a8 100644
--- a/deps/npm/docs/output/using-npm/registry.html
+++ b/deps/npm/docs/output/using-npm/registry.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----registry----11110">
+<h1 id="----registry----11111">
     <span>Registry</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">The JavaScript Package Registry</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/removal.html b/deps/npm/docs/output/using-npm/removal.html
index 330f6bd6467780..eb1dc4329d1490 100644
--- a/deps/npm/docs/output/using-npm/removal.html
+++ b/deps/npm/docs/output/using-npm/removal.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----removal----11110">
+<h1 id="----removal----11111">
     <span>Removal</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Cleaning the slate</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/scope.html b/deps/npm/docs/output/using-npm/scope.html
index 59a73ec4c0a501..1ed3f678e8a598 100644
--- a/deps/npm/docs/output/using-npm/scope.html
+++ b/deps/npm/docs/output/using-npm/scope.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----scope----11110">
+<h1 id="----scope----11111">
     <span>Scope</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Scoped packages</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/scripts.html b/deps/npm/docs/output/using-npm/scripts.html
index 0b8857e3799fb8..3513f553e08b2c 100644
--- a/deps/npm/docs/output/using-npm/scripts.html
+++ b/deps/npm/docs/output/using-npm/scripts.html
@@ -186,16 +186,16 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----scripts----11110">
+<h1 id="----scripts----11111">
     <span>Scripts</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">How npm handles the "scripts" field</span>
 </header>
 
 <section id="table_of_contents">
 <h2 id="table-of-contents">Table of contents</h2>
-<div id="_table_of_contents"><ul><li><a href="#description">Description</a></li><li><a href="#pre--post-scripts">Pre & Post Scripts</a></li><li><a href="#life-cycle-scripts">Life Cycle Scripts</a></li><ul><li><a href="#prepare-and-prepublish">Prepare and Prepublish</a></li><li><a href="#dependencies">Dependencies</a></li></ul><li><a href="#life-cycle-operation-order">Life Cycle Operation Order</a></li><ul><li><a href="#npm-cache-add"><a href="../commands/npm-cache.html"><code>npm cache add</code></a></a></li><li><a href="#npm-ci"><a href="../commands/npm-ci.html"><code>npm ci</code></a></a></li><li><a href="#npm-diff"><a href="../commands/npm-diff.html"><code>npm diff</code></a></a></li><li><a href="#npm-install"><a href="../commands/npm-install.html"><code>npm install</code></a></a></li><li><a href="#npm-pack"><a href="../commands/npm-pack.html"><code>npm pack</code></a></a></li><li><a href="#npm-publish"><a href="../commands/npm-publish.html"><code>npm publish</code></a></a></li><li><a href="#npm-rebuild"><a href="../commands/npm-rebuild.html"><code>npm rebuild</code></a></a></li><li><a href="#npm-restart"><a href="../commands/npm-restart.html"><code>npm restart</code></a></a></li><li><a href="#npm-run-user-defined"><a href="../commands/npm-run.html"><code>npm run <user defined></code></a></a></li><li><a href="#npm-start"><a href="../commands/npm-start.html"><code>npm start</code></a></a></li><li><a href="#npm-stop"><a href="../commands/npm-stop.html"><code>npm stop</code></a></a></li><li><a href="#npm-test"><a href="../commands/npm-test.html"><code>npm test</code></a></a></li><li><a href="#npm-version"><a href="../commands/npm-version.html"><code>npm version</code></a></a></li><li><a href="#a-note-on-a-lack-of-npm-uninstall-scripts">A Note on a lack of <a href="../commands/npm-uninstall.html"><code>npm uninstall</code></a> scripts</a></li></ul><li><a href="#working-directory-for-scripts">Working Directory for Scripts</a></li><ul><li><a href="#historical-behavior-in-older-npm-versions">Historical Behavior in Older npm Versions</a></li></ul><li><a href="#user">User</a></li><li><a href="#environment">Environment</a></li><ul><li><a href="#path">path</a></li><li><a href="#packagejson-vars">package.json vars</a></li><li><a href="#current-lifecycle-event">current lifecycle event</a></li></ul><li><a href="#examples">Examples</a></li><li><a href="#exiting">Exiting</a></li><li><a href="#best-practices">Best Practices</a></li><li><a href="#see-also">See Also</a></li></ul></div>
+<div id="_table_of_contents"><ul><li><a href="#description">Description</a></li><li><a href="#pre--post-scripts">Pre & Post Scripts</a></li><li><a href="#life-cycle-scripts">Life Cycle Scripts</a></li><ul><li><a href="#prepare-and-prepublish">Prepare and Prepublish</a></li><li><a href="#dependencies">Dependencies</a></li></ul><li><a href="#life-cycle-operation-order">Life Cycle Operation Order</a></li><ul><li><a href="#npm-cache-add"><a href="../commands/npm-cache.html"><code>npm cache add</code></a></a></li><li><a href="#npm-ci"><a href="../commands/npm-ci.html"><code>npm ci</code></a></a></li><li><a href="#npm-diff"><a href="../commands/npm-diff.html"><code>npm diff</code></a></a></li><li><a href="#npm-install"><a href="../commands/npm-install.html"><code>npm install</code></a></a></li><li><a href="#npm-pack"><a href="../commands/npm-pack.html"><code>npm pack</code></a></a></li><li><a href="#npm-publish"><a href="../commands/npm-publish.html"><code>npm publish</code></a></a></li><li><a href="#npm-rebuild"><a href="../commands/npm-rebuild.html"><code>npm rebuild</code></a></a></li><li><a href="#npm-restart"><a href="../commands/npm-restart.html"><code>npm restart</code></a></a></li><li><a href="#npm-run-user-defined"><a href="../commands/npm-run.html"><code>npm run <user defined></code></a></a></li><li><a href="#npm-start"><a href="../commands/npm-start.html"><code>npm start</code></a></a></li><li><a href="#npm-stop"><a href="../commands/npm-stop.html"><code>npm stop</code></a></a></li><li><a href="#npm-test"><a href="../commands/npm-test.html"><code>npm test</code></a></a></li><li><a href="#npm-version"><a href="../commands/npm-version.html"><code>npm version</code></a></a></li><li><a href="#a-note-on-a-lack-of-npm-uninstall-scripts">A Note on a lack of <a href="../commands/npm-uninstall.html"><code>npm uninstall</code></a> scripts</a></li></ul><li><a href="#working-directory-for-scripts">Working Directory for Scripts</a></li><ul><li><a href="#historical-behavior-in-older-npm-versions">Historical Behavior in Older npm Versions</a></li></ul><li><a href="#environment">Environment</a></li><ul><li><a href="#path">path</a></li><li><a href="#packagejson-vars">package.json vars</a></li><li><a href="#current-lifecycle-event">current lifecycle event</a></li></ul><li><a href="#examples">Examples</a></li><li><a href="#exiting">Exiting</a></li><li><a href="#best-practices">Best Practices</a></li><li><a href="#see-also">See Also</a></li></ul></div>
 </section>
 
 <div id="_content"><h3 id="description">Description</h3>
@@ -421,8 +421,6 @@ <h4 id="historical-behavior-in-older-npm-versions">Historical Behavior in Older
 <li><a href="https://github.com/npm/cli/releases/tag/v7.0.0">npm v7 release notes</a></li>
 <li><a href="https://github.com/npm/npm/issues/12356">Discussion about script working directory reliability in npm v6 and earlier</a></li>
 </ul>
-<h3 id="user">User</h3>
-<p>When npm is run as root, scripts are always run with the effective uid and gid of the working directory owner.</p>
 <h3 id="environment">Environment</h3>
 <p>Package scripts run in an environment where many pieces of information are made available regarding the setup of npm and the current state of the process.</p>
 <h4 id="path">path</h4>
diff --git a/deps/npm/docs/output/using-npm/workspaces.html b/deps/npm/docs/output/using-npm/workspaces.html
index 9b4982f2a0de29..9c614074f63d85 100644
--- a/deps/npm/docs/output/using-npm/workspaces.html
+++ b/deps/npm/docs/output/using-npm/workspaces.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----workspaces----11110">
+<h1 id="----workspaces----11111">
     <span>Workspaces</span>
-    <span class="version">@11.11.0</span>
+    <span class="version">@11.11.1</span>
 </h1>
 <span class="description">Working with workspaces</span>
 </header>
@@ -253,17 +253,19 @@ <h3 id="adding-dependencies-to-a-workspace">Adding dependencies to a workspace</
 <pre><code>npm install abbrev -w a
 </code></pre>
 <p><strong>Adding a workspace as a dependency of another workspace:</strong></p>
-<p>If you want to add workspace <strong>b</strong> as a dependency of workspace <strong>a</strong>, you can use the workspace protocol in the dependency specifier:</p>
-<pre><code>npm install b@workspace:* -w a
+<p>The same approach works when adding one workspace as a dependency of another.
+If you want to add workspace <strong>b</strong> as a dependency of workspace <strong>a</strong>, run:</p>
+<pre><code>npm install b -w a
 </code></pre>
-<p>This will add an entry to workspace <strong>a</strong>'s <code>package.json</code> like:</p>
+<p>npm will detect that <strong>b</strong> is a workspace and automatically symlink it rather
+than fetching it from the registry. The resulting entry in workspace <strong>a</strong>'s
+<code>package.json</code> will use a standard version range:</p>
 <pre><code class="language-json">{
   "dependencies": {
-    "b": "workspace:*"
+    "b": "^1.0.0"
   }
 }
 </code></pre>
-<p>The <code>workspace:</code> protocol tells npm to link to the local workspace rather than fetching from the registry. The <code>*</code> version means it will use whatever version is defined in workspace <strong>b</strong>'s <code>package.json</code>.</p>
 <p>Note: other installing commands such as <code>uninstall</code>, <code>ci</code>, etc will also respect the provided <code>workspace</code> configuration.</p>
 <h3 id="using-workspaces">Using workspaces</h3>
 <p>Given the <a href="https://nodejs.org/dist/latest-v14.x/docs/api/modules.html#modules_all_together">specifics of how Node.js handles module resolution</a> it's possible to consume any defined workspace by its declared <code>package.json</code> <code>name</code>.
diff --git a/deps/npm/lib/arborist-cmd.js b/deps/npm/lib/arborist-cmd.js
index f0167887b06996..2206b043791631 100644
--- a/deps/npm/lib/arborist-cmd.js
+++ b/deps/npm/lib/arborist-cmd.js
@@ -1,9 +1,7 @@
 const { log } = require('proc-log')
 const BaseCommand = require('./base-cmd.js')
 
-// This is the base for all commands whose execWorkspaces just gets
-// a list of workspace names and passes it on to new Arborist() to
-// be able to run a filtered Arborist.reify() at some point.
+// This is the base for all commands whose execWorkspaces just gets a list of workspace names and passes it on to new Arborist() to be able to run a filtered Arborist.reify() at some point.
 class ArboristCmd extends BaseCommand {
   get isArboristCmd () {
     return true
@@ -25,8 +23,7 @@ class ArboristCmd extends BaseCommand {
 
     const { config } = this.npm
 
-    // when location isn't set and global isn't true check for a package.json at
-    // the localPrefix and set the location to project if found
+    // when location isn't set and global isn't true check for a package.json at the localPrefix and set the location to project if found
     const locationProject = config.get('location') === 'project' || (
       config.isDefault('location')
       // this is different then `npm.global` which falls back to checking
@@ -35,8 +32,7 @@ class ArboristCmd extends BaseCommand {
       && npm.localPackage
     )
 
-    // if audit is not set and we are in global mode and location is not project
-    // and we assume its not a project related context, then we set audit=false
+    // if audit is not set and we are in global mode and location is not project and we assume its not a project related context, then we set audit=false
     if (config.isDefault('audit') && (this.npm.global || !locationProject)) {
       config.set('audit', false)
     } else if (this.npm.global && config.get('audit')) {
diff --git a/deps/npm/lib/base-cmd.js b/deps/npm/lib/base-cmd.js
index 8b846316a4b96f..089ec680c74250 100644
--- a/deps/npm/lib/base-cmd.js
+++ b/deps/npm/lib/base-cmd.js
@@ -17,8 +17,7 @@ class BaseCommand {
   // Number of expected positional arguments (null = unlimited/unchecked)
   static positionals = null
 
-  // this is a static so that we can read from it without instantiating a command
-  // which would require loading the config
+  // this is a static so that we can read from it without instantiating a command which would require loading the config
   static get describeUsage () {
     return this.getUsage()
   }
@@ -29,8 +28,7 @@ class BaseCommand {
     const wrapWidth = 80
     const { description, usage = [''], name } = this
 
-    // Resolve to a definitions array: if the command has its own definitions, use
-    // those directly; otherwise resolve params from the global definitions pool.
+    // Resolve to a definitions array: if the command has its own definitions, use those directly; otherwise resolve params from the global definitions pool.
     let cmdDefs
     if (this.definitions) {
       cmdDefs = this.definitions
@@ -45,10 +43,15 @@ class BaseCommand {
       `${description}`,
       '',
       'Usage:',
-      ...usage.map(u => `npm ${fullCommandName} ${u}`.trim()),
     ]
+    if (usage) {
+      fullUsage.push(...usage.map(u => `npm ${fullCommandName} ${u}`.trim()))
+    }
 
     if (this.subcommands) {
+      for (const sub in this.subcommands) {
+        fullUsage.push(`npm ${fullCommandName} ${sub} ${this.subcommands[sub].usage}`)
+      }
       fullUsage.push('')
       fullUsage.push('Subcommands:')
       const subcommandEntries = Object.entries(this.subcommands)
@@ -392,8 +395,7 @@ class BaseCommand {
       throw this.usageError(`Unknown flag${unknownFlags.length > 1 ? 's' : ''}: ${flagList}`)
     }
 
-    // Remove warnings for command-specific definitions that npm's global config
-    // doesn't know about (these were queued as "unknown" during config.load())
+    // Remove warnings for command-specific definitions that npm's global config doesn't know about (these were queued as "unknown" during config.load())
     for (const def of commandDefinitions) {
       this.npm.config.removeWarning(def.key)
       if (def.alias && Array.isArray(def.alias)) {
@@ -403,8 +405,7 @@ class BaseCommand {
       }
     }
 
-    // Remove warnings for unknown positionals that were actually consumed as flag values
-    // by command-specific definitions (e.g., --id <value> where --id is command-specific)
+    // Remove warnings for unknown positionals that were actually consumed as flag values by command-specific definitions (e.g., --id <value> where --id is command-specific)
     const remainsSet = new Set(remains)
     for (const unknownPos of this.npm.config.getUnknownPositionals()) {
       if (!remainsSet.has(unknownPos)) {
diff --git a/deps/npm/lib/cli/entry.js b/deps/npm/lib/cli/entry.js
index a068d22c55cbf1..962c62a5766dae 100644
--- a/deps/npm/lib/cli/entry.js
+++ b/deps/npm/lib/cli/entry.js
@@ -1,7 +1,6 @@
 // Separated out for easier unit testing
 module.exports = async (process, validateEngines) => {
-  // set it here so that regardless of what happens later, we don't
-  // leak any private CLI configs to other programs
+  // set it here so that regardless of what happens later, we don't leak any private CLI configs to other programs
   process.title = 'npm'
 
   // Patch the global fs module here at the app level
@@ -20,11 +19,13 @@ module.exports = async (process, validateEngines) => {
   log.info('using', 'npm@%s', npm.version)
   log.info('using', 'node@%s', process.version)
 
-  // At this point we've required a few files and can be pretty sure we don't contain invalid syntax for this version of node. It's possible a lazy require would, but that's unlikely enough that it's not worth catching anymore and we attach the more important exit handlers.
+  // At this point we've required a few files and can be pretty sure we don't contain invalid syntax for this version of node.
+  // It's possible a lazy require would, but that's unlikely enough that it's not worth catching anymore and we attach the more important exit handlers.
   validateEngines.off()
   exitHandler.registerUncaughtHandlers()
 
-  // It is now safe to log a warning if they are using a version of node that is not going to fail on syntax errors but is still unsupported and untested and might not work reliably. This is safe to use the logger now which we want since this will show up in the error log too.
+  // It is now safe to log a warning if they are using a version of node that is not going to fail on syntax errors but is still unsupported and untested and might not work reliably.
+  // This is safe to use the logger now which we want since this will show up in the error log too.
   if (!satisfies(validateEngines.node, validateEngines.engines)) {
     log.warn('cli', validateEngines.unsupportedMessage)
   }
@@ -57,9 +58,8 @@ module.exports = async (process, validateEngines) => {
 
     const execPromise = npm.exec(command, args)
 
-    // this is async but we don't await it, since its ok if it doesnt
-    // finish before the command finishes running. it uses command and argv
-    // so it must be initiated here, after the command name is set
+    // this is async but we don't await it, since its ok if it doesnt finish before the command finishes running.
+    // it uses command and argv so it must be initiated here, after the command name is set
     const updateNotifier = require('./update-notifier.js')
     // eslint-disable-next-line promise/catch-or-return
     updateNotifier(npm).then((msg) => (npm.updateNotification = msg))
diff --git a/deps/npm/lib/cli/exit-handler.js b/deps/npm/lib/cli/exit-handler.js
index f4fbcd9d834f16..2c95d0d909a371 100644
--- a/deps/npm/lib/cli/exit-handler.js
+++ b/deps/npm/lib/cli/exit-handler.js
@@ -52,8 +52,7 @@ class ExitHandler {
   #handleProcessExitAndReset = (code) => {
     this.#handleProcessExit(code)
 
-    // Reset all the state. This is only relevant for tests since
-    // in reality the process fully exits here.
+    // Reset all the state. This is only relevant for tests since in reality the process fully exits here.
     this.#process.off('exit', this.#handleProcessExitAndReset)
     this.#process.off('uncaughtException', this.#handleExit)
     this.#process.off('unhandledRejection', this.#handleExit)
@@ -115,9 +114,8 @@ class ExitHandler {
   }
 
   #logConsoleError (err) {
-    // Run our error message formatters on all errors even if we
-    // have no npm or an unloaded npm. This will clean the error
-    // and possible return a formatted message about EACCESS or something.
+    // Run our error message formatters on all errors even if we have no npm or an unloaded npm.
+    // This will clean the error and possible return a formatted message about EACCESS or something.
     const { summary, detail } = errorMessage(err, this.#npm)
     const formatted = [...new Set([...summary, ...detail].flat().filter(Boolean))].join('\n')
     // If we didn't get anything from the formatted message then just display the full stack
@@ -147,9 +145,7 @@ class ExitHandler {
       return this.#process.exit(this.#process.exitCode || getExitCodeFromError(err) || 1)
     }
 
-    // npm was never loaded but we still might have a config loading error or
-    // something similar that we can run through the error message formatter
-    // to give the user a clue as to what happened.s
+    // npm was never loaded but we still might have a config loading error or something similar that we can run through the error message formatter to give the user a clue as to what happened.
     if (!this.#loaded) {
       this.#logConsoleError(new Error('Exit prior to config file resolving', { cause: err }))
       return this.#process.exit(this.#process.exitCode || getExitCodeFromError(err) || 1)
@@ -157,14 +153,12 @@ class ExitHandler {
 
     this.#exitErrorMessage = err?.suppressError === true ? false : !!err
 
-    // Prefer the exit code of the error, then the current process exit code,
-    // then set it to 1 if we still have an error. Otherwise, we call process.exit
-    // with undefined so that it can determine the final exit code
+    // Prefer the exit code of the error, then the current process exit code, then set it to 1 if we still have an error.
+    // Otherwise, we call process.exit with undefined so that it can determine the final exit code
     const exitCode = err?.exitCode ?? this.#process.exitCode ?? (err ? 1 : undefined)
 
-    // explicitly call process.exit now so we don't hang on things like the
-    // update notifier, also flush stdout/err beforehand because process.exit doesn't
-    // wait for that to happen.
+    // explicitly call process.exit now so we don't hang on things like the update notifier
+    // also flush stdout/err beforehand because process.exit doesn't wait for that to happen.
     this.#process.stderr.write('', () => this.#process.stdout.write('', () => {
       this.#process.exit(exitCode)
     }))
diff --git a/deps/npm/lib/cli/update-notifier.js b/deps/npm/lib/cli/update-notifier.js
index 20a22900268934..893a6f0ccdbe0c 100644
--- a/deps/npm/lib/cli/update-notifier.js
+++ b/deps/npm/lib/cli/update-notifier.js
@@ -1,6 +1,4 @@
-// print a banner telling the user to upgrade npm to latest
-// but not in CI, and not if we're doing that already.
-// Check daily for betas, and weekly otherwise.
+// print a banner telling the user to upgrade npm to latest but not in CI, and not if we're doing that already.
 
 const ciInfo = require('ci-info')
 const gt = require('semver/functions/gt')
@@ -14,11 +12,9 @@ const DAILY = 1000 * 60 * 60 * 24
 const WEEKLY = DAILY * 7
 
 // don't put it in the _cacache folder, just in npm's cache
-const lastCheckedFile = npm =>
-  resolve(npm.flatOptions.cache, '../_update-notifier-last-checked')
+const lastCheckedFile = npm => resolve(npm.flatOptions.cache, '../_update-notifier-last-checked')
 
-// Actual check for updates. This is a separate function so that we only load
-// this if we are doing the actual update
+// Actual check for updates. This is a separate function so that we only load this if we are doing the actual update
 const updateCheck = async (npm, spec, version, current) => {
   const pacote = require('pacote')
 
@@ -36,10 +32,8 @@ const updateCheck = async (npm, spec, version, current) => {
 
   const latest = mani.version
 
-  // if the current version is *greater* than latest, we're on a 'next'
-  // and should get the updates from that release train.
-  // Note that this isn't another http request over the network, because
-  // the packument will be cached by pacote from previous request.
+  // if the current version is *greater* than latest, we're on a 'next' and should get the updates from that release train.
+  // Note that this isn't another http request over the network, because the packument will be cached by pacote from previous request.
   if (gt(version, latest) && spec === '*') {
     return updateNotifier(npm, `^${version}`)
   }
@@ -51,9 +45,8 @@ const updateCheck = async (npm, spec, version, current) => {
 
   const chalk = npm.logChalk
 
-  // ok!  notify the user about this update they should get.
-  // The message is saved for printing at process exit so it will not get
-  // lost in any other messages being printed as part of the command.
+  // ok! notify the user about this update they should get.
+  // The message is saved for printing at process exit so it will not get lost in any other messages being printed as part of the command.
   const update = parse(mani.version)
   const type = update.major !== current.major ? 'major'
     : update.minor !== current.minor ? 'minor'
@@ -62,18 +55,20 @@ const updateCheck = async (npm, spec, version, current) => {
   const typec = type === 'major' ? 'red'
     : type === 'minor' ? 'yellow'
     : 'cyan'
-  const cmd = `npm install -g npm@${latest}`
-  const message = `\nNew ${chalk[typec](type)} version of npm available! ` +
-    `${chalk[typec](current)} -> ${chalk.blue(latest)}\n` +
-    `Changelog: ${chalk.blue(`https://github.com/npm/cli/releases/tag/v${latest}`)}\n` +
-    `To update run: ${chalk.underline(cmd)}\n`
+  const message = [
+    '',
+    `New ${chalk[typec](type)} version of npm available! ${chalk[typec](current)} -> ${chalk.blue(latest)}`,
+    `Changelog: ${chalk.blue(`https://github.com/npm/cli/releases/tag/v${latest}`)}`,
+    `To update run: ${chalk.underline(`npm install -g npm@${latest}`)}`,
+    '',
+  ].join('\n')
 
   return message
 }
 
 const updateNotifier = async (npm, spec = '*') => {
-  // if we're on a prerelease train, then updates are coming fast
-  // check for a new one daily.  otherwise, weekly.
+  // if we're on a prerelease train, then updates are coming fast check for a new one daily.
+  // otherwise, weekly.
   const { version } = npm
   const current = parse(version)
 
@@ -94,15 +89,15 @@ const updateNotifier = async (npm, spec = '*') => {
     return null
   }
 
-  // intentional.  do not await this.  it's a best-effort update.  if this
-  // fails, it's ok.  might be using /dev/null as the cache or something weird
-  // like that.
+  // intentional.  do not await this.  it's a best-effort update.
+  // if this fails, it's ok.
+  // might be using /dev/null as the cache or something weird like that.
   writeFile(lastCheckedFile(npm), '').catch(() => {})
 
   return updateCheck(npm, spec, version, current)
 }
 
-module.exports = npm => {
+module.exports = async npm => {
   if (
     // opted out
     !npm.config.get('update-notifier')
@@ -113,7 +108,7 @@ module.exports = npm => {
     // CI
     || ciInfo.isCI
   ) {
-    return Promise.resolve(null)
+    return null
   }
 
   return updateNotifier(npm)
diff --git a/deps/npm/lib/cli/validate-engines.js b/deps/npm/lib/cli/validate-engines.js
index 971cc6bb518676..d9d38157564c9f 100644
--- a/deps/npm/lib/cli/validate-engines.js
+++ b/deps/npm/lib/cli/validate-engines.js
@@ -1,9 +1,6 @@
-// This is separate to indicate that it should contain code we expect to work in
-// all versions of node >= 6.  This is a best effort to catch syntax errors to
-// give users a good error message if they are using a node version that doesn't
-// allow syntax we are using such as private properties, etc. This file is
-// linted with ecmaVersion=6 so we don't use invalid syntax, which is set in the
-// .eslintrc.local.json file
+// This is separate to indicate that it should contain code we expect to work in all versions of node >= 6.
+// This is a best effort to catch syntax errors to give users a good error message if they are using a node version that doesn't allow syntax we are using such as private properties, etc.
+// This file is linted with ecmaVersion=6 so we don't use invalid syntax, which is set in the .eslintrc.local.json file
 
 const { engines: { node: engines }, version } = require('../../package.json')
 const npm = `v${version}`
@@ -15,8 +12,7 @@ module.exports = (process, getCli) => {
 
   const brokenMessage = `ERROR: npm ${npm} is known not to run on Node.js ${node}.  This version of npm supports the following node versions: \`${engines}\`. You can find the latest version at https://nodejs.org/.`
 
-  // coverage ignored because this is only hit in very unsupported node versions
-  // and it's a best effort attempt to show something nice in those cases
+  // coverage ignored because this is only hit in very unsupported node versions and it's a best effort attempt to show something nice in those cases
   /* istanbul ignore next */
   const syntaxErrorHandler = (err) => {
     if (err instanceof SyntaxError) {
diff --git a/deps/npm/lib/commands/audit.js b/deps/npm/lib/commands/audit.js
index 97d0729da9618d..c9ac3bac7d055e 100644
--- a/deps/npm/lib/commands/audit.js
+++ b/deps/npm/lib/commands/audit.js
@@ -36,7 +36,7 @@ class Audit extends ArboristWorkspaceCmd {
       case 'signatures':
         return []
       default:
-        throw Object.assign(new Error(argv[2] + ' not recognized'), {
+        throw Object.assign(new Error(`${argv[2]} not recognized`), {
           code: 'EUSAGE',
         })
     }
diff --git a/deps/npm/lib/commands/cache.js b/deps/npm/lib/commands/cache.js
index 580997b66c6f71..e1d1dcad88df6d 100644
--- a/deps/npm/lib/commands/cache.js
+++ b/deps/npm/lib/commands/cache.js
@@ -131,20 +131,14 @@ class Cache extends BaseCommand {
     const cachePath = this.npm.flatOptions.cache
     if (args.length === 0) {
       if (!this.npm.config.get('force')) {
-        throw new Error(`As of npm@5, the npm cache self-heals from corruption issues
-  by treating integrity mismatches as cache misses.  As a result,
-  data extracted from the cache is guaranteed to be valid.  If you
-  want to make sure everything is consistent, use \`npm cache verify\`
-  instead.  Deleting the cache can only make npm go slower, and is
-  not likely to correct any problems you may be encountering!
+        throw new Error(`As of npm@5, the npm cache self-heals from corruption issues by treating integrity mismatches as cache misses.
+As a result, data extracted from the cache is guaranteed to be valid.
+If you want to make sure everything is consistent, use \`npm cache verify\` instead.
+Deleting the cache can only make npm go slower, and is not likely to correct any problems you may be encountering!
 
-  On the other hand, if you're debugging an issue with the installer,
-  or race conditions that depend on the timing of writing to an empty
-  cache, you can use \`npm install --cache /tmp/empty-cache\` to use a
-  temporary cache instead of nuking the actual one.
+On the other hand, if you're debugging an issue with the installer, or race conditions that depend on the timing of writing to an empty cache, you can use \`npm install --cache /tmp/empty-cache\` to use a temporary cache instead of removing the actual one.
 
-  If you're sure you want to delete the entire cache, rerun this command
-  with --force.`)
+If you're sure you want to delete the entire cache, rerun this command with --force.`)
       }
       return fs.rm(cachePath, { recursive: true, force: true })
     }
@@ -175,9 +169,7 @@ class Cache extends BaseCommand {
 
     await Promise.all(args.map(async spec => {
       log.silly('cache add', 'spec', spec)
-      // we ask pacote for the thing, and then just throw the data
-      // away so that it tee-pipes it into the cache like it does
-      // for a normal request.
+      // we ask pacote for the thing, and then just throw the data away so that it tee-pipes it into the cache like it does for a normal request.
       await pacote.tarball.stream(spec, stream => {
         stream.resume()
         return stream.promise()
diff --git a/deps/npm/lib/commands/ci.js b/deps/npm/lib/commands/ci.js
index 7480e645a4e0d5..f6c97aea30f70a 100644
--- a/deps/npm/lib/commands/ci.js
+++ b/deps/npm/lib/commands/ci.js
@@ -36,6 +36,8 @@ class CI extends ArboristWorkspaceCmd {
       })
     }
 
+    const dryRun = this.npm.config.get('dry-run')
+    const ignoreScripts = this.npm.config.get('ignore-scripts')
     const where = this.npm.prefix
     const Arborist = require('@npmcli/arborist')
     const opts = {
@@ -46,46 +48,42 @@ class CI extends ArboristWorkspaceCmd {
       workspaces: this.workspaceNames,
     }
 
-    const arb = new Arborist(opts)
-    await arb.loadVirtual().catch(er => {
-      log.verbose('loadVirtual', er.stack)
+    // generate an inventory from the virtual tree in the lockfile
+    const virtualArb = new Arborist(opts)
+    try {
+      await virtualArb.loadVirtual()
+    } catch (err) {
+      log.verbose('loadVirtual', err.stack)
       const msg =
         'The `npm ci` command can only install with an existing package-lock.json or\n' +
         'npm-shrinkwrap.json with lockfileVersion >= 1. Run an install with npm@5 or\n' +
         'later to generate a package-lock.json file, then try again.'
       throw this.usageError(msg)
-    })
-
-    // retrieves inventory of packages from loaded virtual tree (lock file)
-    const virtualInventory = new Map(arb.virtualTree.inventory)
+    }
+    const virtualInventory = new Map(virtualArb.virtualTree.inventory)
 
-    // build ideal tree step needs to come right after retrieving the virtual
-    // inventory since it's going to erase the previous ref to virtualTree
+    // Now we make our real Arborist.
+    // We need a new one because the virtual tree fromt the lockfile can have extraneous dependencies in it that won't install on this platform
+    const arb = new Arborist(opts)
     await arb.buildIdealTree()
 
-    // verifies that the packages from the ideal tree will match
-    // the same versions that are present in the virtual tree (lock file)
-    // throws a validation error in case of mismatches
+    // Verifies that the packages from the ideal tree will match the same versions that are present in the virtual tree (lock file).
     const errors = validateLockfile(virtualInventory, arb.idealTree.inventory)
     if (errors.length) {
       throw this.usageError(
-        '`npm ci` can only install packages when your package.json and ' +
-        'package-lock.json or npm-shrinkwrap.json are in sync. Please ' +
-        'update your lock file with `npm install` ' +
-        'before continuing.\n\n' +
+        '`npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. ' +
+        'Please update your lock file with `npm install` before continuing.\n\n' +
         errors.join('\n')
       )
     }
 
-    const dryRun = this.npm.config.get('dry-run')
     if (!dryRun) {
       const workspacePaths = await getWorkspaces([], {
         path: this.npm.localPrefix,
         includeWorkspaceRoot: true,
       })
 
-      // Only remove node_modules after we've successfully loaded the virtual
-      // tree and validated the lockfile
+      // Only remove node_modules after we've successfully loaded the virtual tree and validated the lockfile
       await time.start('npm-ci:rm', async () => {
         return await Promise.all([...workspacePaths.values()].map(async modulePath => {
           const fullPath = path.join(modulePath, 'node_modules')
@@ -100,7 +98,6 @@ class CI extends ArboristWorkspaceCmd {
 
     await arb.reify(opts)
 
-    const ignoreScripts = this.npm.config.get('ignore-scripts')
     // run the same set of scripts that `npm install` runs.
     if (!ignoreScripts) {
       const scripts = [
diff --git a/deps/npm/lib/commands/completion.js b/deps/npm/lib/commands/completion.js
index bfb01b8d08843b..499afcb5c68bcf 100644
--- a/deps/npm/lib/commands/completion.js
+++ b/deps/npm/lib/commands/completion.js
@@ -1,32 +1,24 @@
-// Each command has a completion function that takes an options object and a cb
-// The callback gets called with an error and an array of possible completions.
-// The options object is built up based on the environment variables set by
-// zsh or bash when calling a function for completion, based on the cursor
-// position and the command line thus far.  These are:
+// Each command has a completion function that takes an options object and a cb The callback gets called with an error and an array of possible completions.
+// The options object is built up based on the environment variables set by zsh or bash when calling a function for completion, based on the cursor position and the command line thus far.
+// These are:
 // COMP_CWORD: the index of the "word" in the command line being completed
 // COMP_LINE: the full command line thus far as a string
 // COMP_POINT: the cursor index at the point of triggering completion
 //
-// We parse the command line with nopt, like npm does, and then create an
-// options object containing:
+// We parse the command line with nopt, like npm does, and then create an options object containing:
 // words: array of words in the command line
 // w: the index of the word being completed (ie, COMP_CWORD)
 // word: the word being completed
 // line: the COMP_LINE
 // lineLength
-// point: the COMP_POINT, usually equal to line length, but not always, eg if
-// the user has pressed the left-arrow to complete an earlier word
+// point: the COMP_POINT, usually equal to line length, but not always, eg if the user has pressed the left-arrow to complete an earlier word
 // partialLine: the line up to the point
 // partialWord: the word being completed (which might be ''), up to the point
 // conf: a nopt parse of the command line
 //
-// When the implementation completion method returns its list of strings,
-// and arrays of strings, we filter that by any that start with the
-// partialWord, since only those can possibly be valid matches.
+// When the implementation completion method returns its list of strings, and arrays of strings, we filter that by any that start with the partialWord, since only those can possibly be valid matches.
 //
-// Matches are wrapped with ' to escape them, if necessary, and then printed
-// one per line for the shell completion method to consume in IFS=$'\n' mode
-// as an array.
+// Matches are wrapped with ' to escape them, if necessary, and then printed one per line for the shell completion method to consume in IFS=$'\n' mode as an array.
 
 const fs = require('node:fs/promises')
 const nopt = require('nopt')
@@ -43,9 +35,7 @@ const fileExists = (file) => fs.stat(file).then(s => s.isFile()).catch(() => fal
 class Completion extends BaseCommand {
   static description = 'Tab Completion for npm'
   static name = 'completion'
-  // Completion command uses args differently - they represent the command line
-  // being completed, not actual arguments to this command, so we use an empty
-  // definitions object to prevent flag validation
+  // Completion command uses args differently - they represent the command line being completed, not actual arguments to this command, so we use an empty definitions object to prevent flag validation
   static definitions = []
 
   // completion for the completion command
@@ -85,9 +75,7 @@ class Completion extends BaseCommand {
       return dumpScript(resolve(this.npm.npmRoot, 'lib', 'utils', 'completion.sh'))
     }
 
-    // ok we're actually looking at the envs and outputting the suggestions
-    // get the partial line and partial word,
-    // if the point isn't at the end.
+    // ok we're actually looking at the envs and outputting the suggestions get the partial line and partial word, if the point isn't at the end.
     // ie, tabbing at: npm foo b|ar
     const w = +COMP_CWORD
     const line = COMP_LINE
@@ -123,8 +111,7 @@ class Completion extends BaseCommand {
       raw: args,
     }
 
-    // try to find the npm command and subcommand early for flag completion
-    // this helps with custom command definitions from subcommands
+    // try to find the npm command and subcommand early for flag completion this helps with custom command definitions from subcommands
     const types = Object.entries(definitions).reduce((acc, [key, def]) => {
       acc[key] = def.type
       return acc
@@ -155,8 +142,7 @@ class Completion extends BaseCommand {
 
     Object.keys(parsed).forEach(k => this.npm.config.set(k, parsed[k]))
 
-    // at this point, if words[1] is some kind of npm command,
-    // then complete on it.
+    // at this point, if words[1] is some kind of npm command, then complete on it.
     // otherwise, do nothing
     try {
       const { completion } = Npm.cmd(cmd)
@@ -169,18 +155,11 @@ class Completion extends BaseCommand {
     }
   }
 
-  // The command should respond with an array.  Loop over that,
-  // wrapping quotes around any that have spaces, and writing
-  // them to stdout.
+  // The command should respond with an array.
+  // Loop over that, wrapping quotes around any that have spaces, and writing them to stdout.
   // If any of the items are arrays, then join them with a space.
-  // Ie, returning ['a', 'b c', ['d', 'e']] would allow it to expand
-  // to: 'a', 'b c', or 'd' 'e'
+  // e.g. returning ['a', 'b c', ['d', 'e']] would allow it to expand to: 'a', 'b c', or 'd' 'e'
   wrap (opts, compls) {
-    // TODO this was dead code, leaving it in case we find some command we
-    // forgot that requires this. if so *that command should fix its
-    // completions*
-    // compls = compls.map(w => !/\s+/.test(w) ? w : '\'' + w + '\'')
-
     if (opts.partialWord) {
       compls = compls.filter(c => c.startsWith(opts.partialWord))
     }
@@ -204,14 +183,10 @@ const dumpScript = async (p) => {
 
       // Darwin is a pain sometimes.
       //
-      // This is necessary because the "source" or "." program in
-      // bash on OS X closes its file argument before reading
-      // from it, meaning that you get exactly 1 write, which will
-      // work most of the time, and will always raise an EPIPE.
+      // This is necessary because the "source" or "." program in bash on OS X closes its file argument before reading from it, meaning that you get exactly 1 write, which will work most of the time, and will always raise an EPIPE.
       //
-      // Really, one should not be tossing away EPIPE errors, or any
-      // errors, so casually.  But, without this, `. <(npm completion)`
-      // can never ever work on OS X.
+      // Really, one should not be tossing away EPIPE errors, or any errors, so casually.
+      // But, without this, `. <(npm completion)` can never ever work on OS X.
       // TODO Ignoring coverage, see 'non EPIPE errors cause failures' test.
       /* istanbul ignore next */
       if (er.errno === 'EPIPE') {
@@ -274,8 +249,8 @@ const getCustomConfigNames = (customDefs) => {
   return [...names]
 }
 
-// the current word has a dash.  Return the config names,
-// with the same number of dashes as the current word has.
+// the current word has a dash.
+// Return the config names with the same number of dashes as the current word has.
 const configCompl = (opts, cmd, subCmd, npm) => {
   const word = opts.word
   const split = word.match(/^(-+)((?:no-)*)(.*)$/)
@@ -330,8 +305,7 @@ const isFlag = (word, cmd, subCmd, npm) => {
       (Array.isArray(type) && type.includes(Boolean))
   }
 
-  // No custom definitions found, should not reach here in normal flow
-  // since configCompl returns empty array when no custom defs exist
+  // No custom definitions found, should not reach here in normal flow since configCompl returns empty array when no custom defs exist
   return false
 }
 
diff --git a/deps/npm/lib/commands/config.js b/deps/npm/lib/commands/config.js
index ce26a46b877dab..015850c48304a6 100644
--- a/deps/npm/lib/commands/config.js
+++ b/deps/npm/lib/commands/config.js
@@ -9,14 +9,11 @@ const { log, output } = require('proc-log')
 const BaseCommand = require('../base-cmd.js')
 const { redact } = require('@npmcli/redact')
 
-// These are the config values to swap with "protected".  It does not catch
-// every single sensitive thing a user may put in the npmrc file but it gets
-// the common ones.  This is distinct from nerfDarts because that is used to
-// validate valid configs during "npm config set", and folks may have old
-// invalid entries lying around in a config file that we still want to protect
-// when running "npm config list"
-// This is a more general list of values to consider protected.  You cannot
-// "npm config get" them, and they will not display during "npm config list"
+// These are the config values to swap with "protected".
+// It does not catch every single sensitive thing a user may put in the npmrc file but it gets the common ones.
+// This is distinct from nerfDarts because that is used to validate valid configs during "npm config set", and folks may have old invalid entries lying around in a config file that we still want to protect when running "npm config list"
+// This is a more general list of values to consider protected.
+// You cannot "npm config get" them, and they will not display during "npm config list"
 const protected = [
   'auth',
   'authToken',
@@ -27,8 +24,7 @@ const protected = [
   'username',
 ]
 
-// take an array of `[key, value, k2=v2, k3, v3, ...]` and turn into
-// { key: value, k2: v2, k3: v3 }
+// take an array of `[key, value, k2=v2, k3, v3, ...]` and turn into { key: value, k2: v2, k3: v3 }
 const keyValues = args => {
   const kv = {}
   for (let i = 0; i < args.length; i++) {
diff --git a/deps/npm/lib/commands/dedupe.js b/deps/npm/lib/commands/dedupe.js
index 3b7365c2011d3f..a931cabd646043 100644
--- a/deps/npm/lib/commands/dedupe.js
+++ b/deps/npm/lib/commands/dedupe.js
@@ -36,10 +36,9 @@ class Dedupe extends ArboristWorkspaceCmd {
       ...this.npm.flatOptions,
       path: where,
       dryRun,
-      // Saving during dedupe would only update if one of your direct
-      // dependencies was also duplicated somewhere in your tree. It would be
-      // confusing if running this were to also update your package.json.  In
-      // order to reduce potential confusion we set this to false.
+      // Saving during dedupe would only update if one of your direct dependencies was also duplicated somewhere in your tree.
+      // It would be confusing if running this were to also update your package.json.
+      // In order to reduce potential confusion we set this to false.
       save: false,
       workspaces: this.workspaceNames,
     }
diff --git a/deps/npm/lib/commands/diff.js b/deps/npm/lib/commands/diff.js
index d104218b3d7efa..ecc0e0aa682675 100644
--- a/deps/npm/lib/commands/diff.js
+++ b/deps/npm/lib/commands/diff.js
@@ -45,11 +45,7 @@ class Diff extends BaseCommand {
       this.prefix = this.npm.prefix
     }
 
-    // this is the "top" directory, one up from node_modules
-    // in global mode we have to walk one up from globalDir because our
-    // node_modules is sometimes under ./lib, and in global mode we're only ever
-    // walking through node_modules (because we will have been given a package
-    // name already)
+    // this is the "top" directory, one up from node_modules in global mode we have to walk one up from globalDir because our node_modules is sometimes under ./lib, and in global mode we're only ever walking through node_modules (because we will have been given a package name already)
     if (this.npm.global) {
       this.top = resolve(this.npm.globalDir, '..')
     } else {
@@ -100,8 +96,7 @@ class Diff extends BaseCommand {
       return this.findVersionsByPackageName(specs)
     }
 
-    // no arguments, defaults to comparing cwd
-    // to its latest published registry version
+    // no arguments, defaults to comparing cwd to its latest published registry version
     if (!a) {
       const pkgName = await this.packageName()
       return [
@@ -110,8 +105,7 @@ class Diff extends BaseCommand {
       ]
     }
 
-    // single argument, used to compare wanted versions of an
-    // installed dependency or to compare the cwd to a published version
+    // single argument, used to compare wanted versions of an installed dependency or to compare the cwd to a published version
     let noPackageJson
     let pkgName
     try {
@@ -125,9 +119,7 @@ class Diff extends BaseCommand {
     const missingPackageJson =
       this.usageError('Needs multiple arguments to compare or run from a project dir.')
 
-    // using a valid semver range, that means it should just diff
-    // the cwd against a published version to the registry using the
-    // same project name and the provided semver range
+    // using a valid semver range, that means it should just diff the cwd against a published version to the registry using the same project name and the provided semver range
     if (semver.validRange(a)) {
       if (!pkgName) {
         throw missingPackageJson
@@ -138,9 +130,7 @@ class Diff extends BaseCommand {
       ]
     }
 
-    // when using a single package name as arg and it's part of the current
-    // install tree, then retrieve the current installed version and compare
-    // it against the same value `npm outdated` would suggest you to update to
+    // when using a single package name as arg and it's part of the current install tree, then retrieve the current installed version and compare it against the same value `npm outdated` would suggest you to update to
     const spec = npa(a)
     if (spec.registry) {
       let actualTree
@@ -181,10 +171,9 @@ class Diff extends BaseCommand {
 
       const aSpec = `file:${node.realpath}`
 
-      // finds what version of the package to compare against, if an exact
-      // version or tag was passed than it should use that; otherwise,
-      // work from the top of the arborist tree to find the original semver
-      // range declared in the package that depends on the package.
+      // finds what version of the package to compare against
+      // if an exact version or tag was passed than it should use that
+      // otherwise, work from the top of the arborist tree to find the original semver range declared in the package that depends on the package.
       let bSpec
       if (spec.rawSpec !== '*') {
         bSpec = spec.rawSpec
@@ -193,7 +182,7 @@ class Diff extends BaseCommand {
           tryRootNodeSpec()
           || tryAnySpec()
 
-        // figure out what to compare against,
+        // figure out what to compare against
         // follows same logic to npm outdated "Wanted" results
         const packument = await pacote.packument(spec, {
           ...this.npm.flatOptions,
@@ -242,8 +231,7 @@ class Diff extends BaseCommand {
       return [`${pkgName}@${a}`, `${pkgName}@${b}`]
     }
 
-    // otherwise uses the name from the other arg to
-    // figure out the spec.name of what to compare
+    // otherwise uses the name from the other arg to figure out the spec.name of what to compare
     if (!semverA && semverB) {
       return [a, `${npa(a).name}@${b}`]
     }
diff --git a/deps/npm/lib/commands/dist-tag.js b/deps/npm/lib/commands/dist-tag.js
index 655ec0d17539ef..4b51e839d78aa8 100644
--- a/deps/npm/lib/commands/dist-tag.js
+++ b/deps/npm/lib/commands/dist-tag.js
@@ -49,8 +49,7 @@ class DistTag extends BaseCommand {
     }
 
     if (!pkg) {
-      // when only using the pkg name the default behavior
-      // should be listing the existing tags
+      // when only using the pkg name the default behavior should be listing the existing tags
       return this.list(cmdName, opts)
     } else {
       throw this.usageError()
@@ -183,8 +182,7 @@ class DistTag extends BaseCommand {
         output.standard(`${name}:`)
         await this.list(npa(name), this.npm.flatOptions)
       } catch {
-        // set the exitCode directly, but ignore the error
-        // since it will have already been logged by this.list()
+        // set the exitCode directly, but ignore the error since it will have already been logged by this.list()
         process.exitCode = 1
       }
     }
diff --git a/deps/npm/lib/commands/doctor.js b/deps/npm/lib/commands/doctor.js
index 0d948da231187b..f01b05bead27ad 100644
--- a/deps/npm/lib/commands/doctor.js
+++ b/deps/npm/lib/commands/doctor.js
@@ -29,8 +29,7 @@ const maskLabel = mask => {
 
 const checks = [
   {
-    // Ping is left in as a legacy command but is listed as "connection" to
-    // make more sense to more people
+    // Ping is left in as a legacy command but is listed as "connection" to make more sense to more people
     groups: ['connection', 'ping', 'registry'],
     title: 'Connecting to the registry',
     cmd: 'checkPing',
diff --git a/deps/npm/lib/commands/exec.js b/deps/npm/lib/commands/exec.js
index c91222ffe3230d..5b1d117889a1ee 100644
--- a/deps/npm/lib/commands/exec.js
+++ b/deps/npm/lib/commands/exec.js
@@ -46,8 +46,7 @@ class Exec extends BaseCommand {
     if (!runPath) {
       runPath = process.cwd()
     } else {
-      // We have to consider if the workspace has its own separate versions
-      // libnpmexec will walk up to localDir after looking here
+      // We have to consider if the workspace has its own separate versions libnpmexec will walk up to localDir after looking here
       localBin = resolve(this.npm.localDir, name, 'node_modules', '.bin')
       // We also need to look for `bin` entries in the workspace package.json
       // libnpmexec will NOT look in the project root for the bin entry
@@ -65,9 +64,8 @@ class Exec extends BaseCommand {
     const scriptShell = this.npm.config.get('script-shell') || undefined
     const packages = this.npm.config.get('package')
     const yes = this.npm.config.get('yes')
-    // --prefix sets both of these to the same thing, meaning the global prefix
-    // is invalid (i.e. no lib/node_modules).  This is not a trivial thing to
-    // untangle and fix so we work around it here.
+    // --prefix sets both of these to the same thing, meaning the global prefix is invalid (i.e. no lib/node_modules).
+    // This is not a trivial thing to untangle and fix so we work around it here.
     if (this.npm.localPrefix !== this.npm.globalPrefix) {
       globalPath = resolve(globalDir, '..')
     }
@@ -78,8 +76,7 @@ class Exec extends BaseCommand {
 
     return libexec({
       ...flatOptions,
-      // we explicitly set packageLockOnly to false because if it's true
-      // when we try to install a missing package, we won't actually install it
+      // we explicitly set packageLockOnly to false because if it's true when we try to install a missing package, we won't actually install it
       packageLockOnly: false,
       // what the user asked to run args[0] is run by default
       args: [...args], // copy args so they don't get mutated
diff --git a/deps/npm/lib/commands/explore.js b/deps/npm/lib/commands/explore.js
index d0d2e5c3ef8912..b8891deda4dce0 100644
--- a/deps/npm/lib/commands/explore.js
+++ b/deps/npm/lib/commands/explore.js
@@ -31,9 +31,7 @@ class Explore extends BaseCommand {
       throw this.usageError()
     }
 
-    // run as if running a script named '_explore', which we set to either
-    // the set of arguments, or the shell config, and let @npmcli/run-script
-    // handle all the escaping and PATH setup stuff.
+    // run as if running a script named '_explore', which we set to either the set of arguments, or the shell config, and let @npmcli/run-script handle all the escaping and PATH setup stuff.
 
     const { content: pkg } = await pkgJson.normalize(path).catch(er => {
       log.error('explore', `It doesn't look like ${pkgname} is installed.`)
diff --git a/deps/npm/lib/commands/find-dupes.js b/deps/npm/lib/commands/find-dupes.js
index 735ac7c4a7ed09..15b312e6a7aec8 100644
--- a/deps/npm/lib/commands/find-dupes.js
+++ b/deps/npm/lib/commands/find-dupes.js
@@ -1,6 +1,5 @@
 const ArboristWorkspaceCmd = require('../arborist-cmd.js')
 
-// dedupe duplicated packages, or find them in the tree
 class FindDupes extends ArboristWorkspaceCmd {
   static description = 'Find duplication in the package tree'
   static name = 'find-dupes'
diff --git a/deps/npm/lib/commands/fund.js b/deps/npm/lib/commands/fund.js
index a281912d77b326..6f5ed8af015054 100644
--- a/deps/npm/lib/commands/fund.js
+++ b/deps/npm/lib/commands/fund.js
@@ -98,8 +98,7 @@ class Fund extends ArboristWorkspaceCmd {
     const result = depth({
       tree: fundingInfo,
 
-      // composes human readable package name
-      // and creates a new archy item for readable output
+      // composes human readable package name and creates a new archy item for readable output
       visit: ({ name, version, funding }) => {
         const [fundingSource] = [].concat(normalizeFunding(funding)).filter(isValidFunding)
         const { url } = fundingSource || {}
@@ -126,8 +125,7 @@ class Fund extends ArboristWorkspaceCmd {
         return item
       },
 
-      // puts child nodes back into returned archy
-      // output while also filtering out missing items
+      // puts child nodes back into returned archy output while also filtering out missing items
       leave: (item, children) => {
         if (item) {
           item.nodes = children.filter(Boolean)
@@ -136,8 +134,7 @@ class Fund extends ArboristWorkspaceCmd {
         return item
       },
 
-      // turns tree-like object return by libnpmfund
-      // into children to be properly read by treeverse
+      // turns tree-like object return by libnpmfund into children to be properly read by treeverse
       getChildren: node =>
         Object.keys(node.dependencies || {}).map(key => ({
           name: key,
@@ -166,8 +163,7 @@ class Fund extends ArboristWorkspaceCmd {
           }
         }
       } else {
-        // tries to retrieve a package from arborist inventory
-        // by matching resulted package name from the provided spec
+        // tries to retrieve a package from arborist inventory by matching resulted package name from the provided spec
         const [item] = [...tree.inventory.query('name', arg.name)]
           .filter(i => semver.valid(i.package.version))
           .sort((a, b) => semver.rcompare(a.package.version, b.package.version))
diff --git a/deps/npm/lib/commands/help-search.js b/deps/npm/lib/commands/help-search.js
index f5f6ec05cfa593..cb8075918dba10 100644
--- a/deps/npm/lib/commands/help-search.js
+++ b/deps/npm/lib/commands/help-search.js
@@ -53,7 +53,8 @@ class HelpSearch extends BaseCommand {
 
       // if a line has a search term, then skip it and the next line.
       // if the next line has a search term, then skip all 3
-      // otherwise, set the line to null.  then remove the nulls.
+      // otherwise, set the line to null
+      // finally, remove the nulls
       for (let i = 0; i < lines.length; i++) {
         const line = lines[i]
         const nextLine = lines[i + 1]
@@ -123,11 +124,9 @@ class HelpSearch extends BaseCommand {
       })
     }
 
-    // sort results by number of results found, then by number of hits
-    // then by number of matching lines
+    // sort results by number of results found, then by number of hits then by number of matching lines
 
-    // coverage is ignored here because the contents of results are
-    // nondeterministic due to either glob or readFiles or Object.entries
+    // coverage is ignored here because the contents of results are nondeterministic due to either glob or readFiles or Object.entries
     return results.sort(/* istanbul ignore next */ (a, b) =>
       a.found.length > b.found.length ? -1
       : a.found.length < b.found.length ? 1
diff --git a/deps/npm/lib/commands/help.js b/deps/npm/lib/commands/help.js
index 6eca85b4b0fe00..a684667e324117 100644
--- a/deps/npm/lib/commands/help.js
+++ b/deps/npm/lib/commands/help.js
@@ -10,12 +10,10 @@ const BaseCommand = require('../base-cmd.js')
 const globify = pattern => pattern.split('\\').join('/')
 
 // Strips out the number from foo.7 or foo.7. or foo.7.tgz
-// We don't currently compress our man pages but if we ever did this would
-// seamlessly continue supporting it
+// We don't currently compress our man pages but if we ever did this would seamlessly continue supporting it
 const manNumberRegex = /\.(\d+)(\.[^/\\]*)?$/
 // hardcoded names for man sections
-// XXX: these are used in the docs workspace and should be exported
-// from npm so section names can changed more easily
+// XXX: these are used in the docs workspace and should be exported from npm so section names can changed more easily
 const manSectionNames = {
   1: 'commands',
   5: 'configuring-npm',
@@ -46,8 +44,7 @@ class Help extends BaseCommand {
   }
 
   async exec (args) {
-    // By default we search all of our man subdirectories, but if the user has
-    // asked for a specific one we limit the search to just there
+    // By default we search all of our man subdirectories, but if the user has asked for a specific one we limit the search to just there
     const manSearch = /^\d+$/.test(args[0]) ? `man${args.shift()}` : 'man*'
 
     if (!args.length) {
@@ -66,8 +63,7 @@ class Help extends BaseCommand {
     const f = globify(path.resolve(this.npm.npmRoot, `man/${manSearch}/?(npm-)${arg}.[0-9]*`))
 
     const [man] = await glob(f).then(r => r.sort((a, b) => {
-      // Because the glob is (subtly) different from manNumberRegex,
-      // we can't rely on it passing.
+      // Because the glob is (subtly) different from manNumberRegex, we can't rely on it passing.
       const aManNumberMatch = a.match(manNumberRegex)?.[1] || 999
       const bManNumberMatch = b.match(manNumberRegex)?.[1] || 999
       if (aManNumberMatch !== bManNumberMatch) {
diff --git a/deps/npm/lib/commands/init.js b/deps/npm/lib/commands/init.js
index 290c8ea78ccda0..17ae655223fc74 100644
--- a/deps/npm/lib/commands/init.js
+++ b/deps/npm/lib/commands/init.js
@@ -56,9 +56,8 @@ class Init extends BaseCommand {
       await this.exec(args)
     }
 
-    // reads package.json for the top-level folder first, by doing this we
-    // ensure the command throw if no package.json is found before trying
-    // to create a workspace package.json file or its folders
+    // reads package.json for the top-level folder first
+    // by doing this we ensure the command throw if no package.json is found before trying to create a workspace package.json file or its folders
     const { content: pkg } = await PackageJson.normalize(this.npm.localPrefix).catch(err => {
       if (err.code === 'ENOENT') {
         log.warn('init', 'Missing package.json. Try with `--include-workspace-root`.')
@@ -66,8 +65,7 @@ class Init extends BaseCommand {
       throw err
     })
 
-    // these are workspaces that are being created, so we can't use
-    // this.setWorkspaces()
+    // these are workspaces that are being created, so we can't use this.setWorkspaces()
     const filters = this.npm.config.get('workspace')
     const wPath = filterArg => resolve(this.npm.localPrefix, filterArg)
 
@@ -161,11 +159,9 @@ class Init extends BaseCommand {
         'This utility will walk you through creating a package.json file.',
         'It only covers the most common items, and tries to guess sensible defaults.',
         '',
-        'See `npm help init` for definitive documentation on these fields',
-        'and exactly what they do.',
+        'See `npm help init` for definitive documentation on these fields and exactly what they do.',
         '',
-        'Use `npm install <pkg>` afterwards to install a package and',
-        'save it as a dependency in the package.json file.',
+        'Use `npm install <pkg>` afterwards to install a package and save it as a dependency in the package.json file.',
         '',
         'Press ^C at any time to quit.',
       ].join('\n'))
@@ -195,10 +191,7 @@ class Init extends BaseCommand {
       }
     }
 
-    // if a create-pkg didn't generate a package.json at the workspace
-    // folder level, it might not be recognized as a workspace by
-    // mapWorkspaces, so we're just going to avoid touching the
-    // top-level package.json
+    // if a create-pkg didn't generate a package.json at the workspace folder level, it might not be recognized as a workspace by mapWorkspaces, so we're just going to avoid touching the top-level package.json
     try {
       statSync(resolve(workspacePath, 'package.json'))
     } catch {
diff --git a/deps/npm/lib/commands/install-ci-test.js b/deps/npm/lib/commands/install-ci-test.js
index 4b9dd269f8c748..2503d4ddbf4800 100644
--- a/deps/npm/lib/commands/install-ci-test.js
+++ b/deps/npm/lib/commands/install-ci-test.js
@@ -1,7 +1,5 @@
 const CI = require('./ci.js')
 
-// npm install-ci-test
-// Runs `npm ci` and then runs `npm test`
 class InstallCITest extends CI {
   static description = 'Install a project with a clean slate and run tests'
   static name = 'install-ci-test'
diff --git a/deps/npm/lib/commands/install-test.js b/deps/npm/lib/commands/install-test.js
index e21ca7c929c55e..60335ac0d8f651 100644
--- a/deps/npm/lib/commands/install-test.js
+++ b/deps/npm/lib/commands/install-test.js
@@ -1,7 +1,5 @@
 const Install = require('./install.js')
 
-// npm install-test
-// Runs `npm install` and then runs `npm test`
 class InstallTest extends Install {
   static description = 'Install package(s) and run tests'
   static name = 'install-test'
diff --git a/deps/npm/lib/commands/install.js b/deps/npm/lib/commands/install.js
index 43647c6bf7e88d..5970fddfdfe4fa 100644
--- a/deps/npm/lib/commands/install.js
+++ b/deps/npm/lib/commands/install.js
@@ -11,8 +11,7 @@ class Install extends ArboristWorkspaceCmd {
   static description = 'Install a package'
   static name = 'install'
 
-  // These are in the order they will show up in when running "-h"
-  // If adding to this list, consider adding also to ci.js
+  // These are in the order they will show up in when running "-h" If adding to this list, consider adding also to ci.js
   static params = [
     'save',
     'save-exact',
@@ -54,10 +53,8 @@ class Install extends ArboristWorkspaceCmd {
     }
 
     if (/\//.test(partialWord)) {
-      // Complete fully to folder if there is exactly one match and it
-      // is a folder containing a package.json file.  If that is not the
-      // case we return 0 matches, which will trigger the default bash
-      // complete.
+      // Complete fully to folder if there is exactly one match and it is a folder containing a package.json file.
+      // If that is not the case we return 0 matches, which will trigger the default bash complete.
       const lastSlashIdx = partialWord.lastIndexOf('/')
       const partialName = partialWord.slice(lastSlashIdx + 1)
       const partialPath = partialWord.slice(0, lastSlashIdx) || '/'
@@ -93,9 +90,7 @@ class Install extends ArboristWorkspaceCmd {
         return [] // invalid dir: no matching
       }
     }
-    // Note: there used to be registry completion here,
-    // but it stopped making sense somewhere around
-    // 50,000 packages on the registry
+    // Note: there used to be registry completion here, but it stopped making sense somewhere around 50,000 packages on the registry
   }
 
   async exec (args) {
@@ -134,8 +129,7 @@ class Install extends ArboristWorkspaceCmd {
       args = ['.']
     }
 
-    // throw usage error if trying to install empty package
-    // name to global space, e.g: `npm i -g ""`
+    // throw usage error if trying to install empty package name to global space, e.g: `npm i -g ""`
     if (where === globalTop && !args.every(Boolean)) {
       throw this.usageError()
     }
diff --git a/deps/npm/lib/commands/link.js b/deps/npm/lib/commands/link.js
index e36e5bededcba0..e166a0051299a7 100644
--- a/deps/npm/lib/commands/link.js
+++ b/deps/npm/lib/commands/link.js
@@ -61,8 +61,7 @@ class Link extends ArboristWorkspaceCmd {
   }
 
   async linkInstall (args) {
-    // load current packages from the global space,
-    // and then add symlinks installs locally
+    // load current packages from the global space, and then add symlinks installs locally
     const globalTop = resolve(this.npm.globalDir, '..')
     const Arborist = require('@npmcli/arborist')
     const globalOpts = {
@@ -80,8 +79,7 @@ class Link extends ArboristWorkspaceCmd {
         !node.isRoot || args.some(a => npa(a).name === kid),
     })
 
-    // any extra arg that is missing from the current
-    // global space should be reified there first
+    // any extra arg that is missing from the current global space should be reified there first
     const missing = this.missingArgsFromTree(globals, args)
     if (missing.length) {
       await globalArb.reify({
@@ -102,8 +100,7 @@ class Link extends ArboristWorkspaceCmd {
       }
     }
 
-    // npm link should not save=true by default unless you're
-    // using any of --save-dev or other types
+    // npm link should not save=true by default unless you're using any of --save-dev or other types
     const save =
       Boolean(
         (this.npm.config.find('save') !== 'default' &&
@@ -151,8 +148,7 @@ class Link extends ArboristWorkspaceCmd {
     await reifyFinish(this.npm, arb)
   }
 
-  // Returns a list of items that can't be fulfilled by
-  // things found in the current arborist inventory
+  // Returns a list of items that can't be fulfilled by things found in the current arborist inventory
   missingArgsFromTree (tree, args) {
     if (tree.isLink) {
       return this.missingArgsFromTree(tree.target, args)
@@ -163,8 +159,8 @@ class Link extends ArboristWorkspaceCmd {
       const arg = npa(a)
       const nodes = tree.children.values()
       const argFound = [...nodes].every(node => {
-        // TODO: write tests for unmatching version specs, this is hard to test
-        // atm but should be simple once we have a mocked registry again
+        // TODO: write tests for unmatching version specs
+        // this is hard to test atm but should be simple once we have a mocked registry again
         if (arg.name !== node.name /* istanbul ignore next */ || (
           arg.version &&
           /* istanbul ignore next */
@@ -177,8 +173,7 @@ class Link extends ArboristWorkspaceCmd {
       return argFound
     })
 
-    // remote nodes from the loaded tree in order
-    // to avoid dropping them later when reifying
+    // remote nodes from the loaded tree in order to avoid dropping them later when reifying
     for (const node of foundNodes) {
       node.parent = null
     }
diff --git a/deps/npm/lib/commands/ls.js b/deps/npm/lib/commands/ls.js
index 0ea8704a50573a..5dacd3919882e8 100644
--- a/deps/npm/lib/commands/ls.js
+++ b/deps/npm/lib/commands/ls.js
@@ -57,6 +57,7 @@ class LS extends ArboristWorkspaceCmd {
     const unicode = this.npm.config.get('unicode')
     const packageLockOnly = this.npm.config.get('package-lock-only')
     const workspacesEnabled = this.npm.flatOptions.workspacesEnabled
+    const installStrategy = this.npm.flatOptions.installStrategy
 
     const path = global ? resolve(this.npm.globalDir, '..') : this.npm.prefix
 
@@ -71,8 +72,7 @@ class LS extends ArboristWorkspaceCmd {
     const tree = await this.initTree({ arb, args, packageLockOnly })
 
     // filters by workspaces nodes when using -w <workspace-name>
-    // We only have to filter the first layer of edges, so we don't
-    // explore anything that isn't part of the selected workspace set.
+    // We only have to filter the first layer of edges, so we don't explore anything that isn't part of the selected workspace set.
     let wsNodes
     if (this.workspaceNames && this.workspaceNames.length) {
       wsNodes = arb.workspaceNodes(tree, this.workspaceNames)
@@ -119,9 +119,7 @@ class LS extends ArboristWorkspaceCmd {
     // tree traversal happens here, using treeverse.breadth
     const result = await breadth({
       tree,
-      // recursive method, `node` is going to be the current elem (starting from
-      // the `tree` obj) that was just visited in the `visit` method below
-      // `nodeResult` is going to be the returned `item` from `visit`
+      // recursive method, `node` is going to be the current elem (starting from the `tree` obj) that was just visited in the `visit` method below `nodeResult` is going to be the returned `item` from `visit`
       getChildren (node, nodeResult) {
         const seenPaths = new Set()
         const workspace = node.isWorkspace
@@ -136,6 +134,9 @@ class LS extends ArboristWorkspaceCmd {
               link,
               omit,
             }) : () => true)
+            .filter(installStrategy === 'linked'
+              ? filterLinkedStrategyEdges({ node, currentDepth })
+              : () => true)
             .map(mapEdgesToNodes({ seenPaths }))
             .concat(appendExtraneousChildren({ node, seenPaths }))
             .sort(sortAlphabetically)
@@ -146,8 +147,7 @@ class LS extends ArboristWorkspaceCmd {
               seenNodes,
             }))
       },
-      // visit each `node` of the `tree`, returning an `item` - these are
-      // the elements that will be used to build the final output
+      // visit each `node` of the `tree`, returning an `item` - these are the elements that will be used to build the final output
       visit (node) {
         node[_problems] = getProblems(node, { global })
 
@@ -260,14 +260,12 @@ const getProblems = (node, { global }) => {
   return problems
 }
 
-// annotates _parent and _include metadata into the resulting
-// item obj allowing for filtering out results during output
+// annotates _parent and _include metadata into the resulting item obj allowing for filtering out results during output
 const augmentItemWithIncludeMetadata = (node, item) => {
   item[_parent] = node[_parent]
   item[_include] = node[_include]
 
-  // append current item to its parent.nodes which is the
-  // structure expected by archy in order to print tree
+  // append current item to its parent.nodes which is the structure expected by archy in order to print tree
   if (node[_include]) {
     // includes all ancestors of included node
     let p = node[_parent]
@@ -353,9 +351,8 @@ const getJsonOutputItem = (node, { global, long }) => {
     item.resolved = node.resolved
   }
 
-  // if the node is the project root, do not add the overridden flag. the project root can't be
-  // overridden anyway, and if we add the flag it causes undesirable behavior when `npm ls --json`
-  // is ran in an empty directory since we end up printing an object with only an overridden prop
+  // if the node is the project root, do not add the overridden flag.
+  // the project root can't be overridden anyway, and if we add the flag it causes undesirable behavior when `npm ls --json` is ran in an empty directory since we end up printing an object with only an overridden prop
   if (!node.isProjectRoot) {
     item.overridden = node.overridden
   }
@@ -403,6 +400,34 @@ const getJsonOutputItem = (node, { global, long }) => {
   return augmentItemWithIncludeMetadata(node, item)
 }
 
+// In linked strategy, two types of edges produce false UNMET DEPENDENCYs:
+// 1. Workspace edges for undeclared workspaces: the lockfile records edges from root to ALL workspaces, but only declared workspaces are hoisted to root/node_modules in linked mode.  Undeclared ones are intentionally absent.
+// 2. Dev edges on non-root packages: store package link targets have no parent in the node tree, so they are treated as "top" nodes and their devDependencies are loaded as edges.  Those devDeps are never installed.
+const filterLinkedStrategyEdges = ({ node, currentDepth }) => {
+  const declaredDeps = new Set(Object.keys(Object.assign({},
+    node.target.package.dependencies,
+    node.target.package.devDependencies,
+    node.target.package.optionalDependencies,
+    node.target.package.peerDependencies
+  )))
+
+  return (edge) => {
+    // Skip workspace edges for undeclared workspaces at root level
+    if (currentDepth === 0 && edge.type === 'workspace' && edge.missing) {
+      if (!declaredDeps.has(edge.name)) {
+        return false
+      }
+    }
+
+    // Skip dev edges for non-root packages (store packages)
+    if (currentDepth > 0 && edge.dev) {
+      return false
+    }
+
+    return true
+  }
+}
+
 const filterByEdgesTypes = ({ link, omit }) => (edge) => {
   for (const omitType of omit) {
     if (edge[omitType]) {
@@ -421,18 +446,15 @@ const appendExtraneousChildren = ({ node, seenPaths }) =>
 const mapEdgesToNodes = ({ seenPaths }) => (edge) => {
   let node = edge.to
 
-  // if the edge is linking to a missing node, we go ahead
-  // and create a new obj that will represent the missing node
+  // if the edge is linking to a missing node, we go ahead and create a new obj that will represent the missing node
   if (edge.missing || (edge.optional && !node)) {
     const { name, spec } = edge
     const pkgid = `${name}@${spec}`
     node = { name, pkgid, [_missing]: edge.from.pkgid }
   }
 
-  // keeps track of a set of seen paths to avoid the edge case in which a tree
-  // item would appear twice given that it's a children of an extraneous item,
-  // so it's marked extraneous but it will ALSO show up in edgesOuts of
-  // its parent so it ends up as two diff nodes if we don't track it
+  // keeps track of a set of seen paths to avoid the edge case in which a tree item would appear twice given that it's a children of an extraneous item
+  // so it's marked extraneous but it will ALSO show up in edgesOuts of its parent so it ends up as two diff nodes if we don't track it
   if (node.path) {
     seenPaths.add(node.path)
   }
@@ -461,9 +483,7 @@ const augmentNodesWithMetadata = ({
   nodeResult,
   seenNodes,
 }) => (node) => {
-  // if the original edge was a deduped dep, treeverse will fail to
-  // revisit that node in tree traversal logic, so we make it so that
-  // we have a diff obj for deduped nodes:
+  // if the original edge was a deduped dep, treeverse will fail to revisit that node in tree traversal logic, so we make it so that we have a diff obj for deduped nodes:
   if (seenNodes.has(node.path)) {
     const { realpath, root } = node
     const targetLocation = root ? relative(root.realpath, realpath)
@@ -488,18 +508,14 @@ const augmentNodesWithMetadata = ({
     seenNodes.set(node.path, node)
   }
 
-  // _parent is going to be a ref to a treeverse-visited node (returned from
-  // getHumanOutputItem, getJsonOutputItem, etc) so that we have an easy
-  // shortcut to place new nodes in their right place during tree traversal
+  // _parent is going to be a ref to a treeverse-visited node (returned from getHumanOutputItem, getJsonOutputItem, etc) so that we have an easy shortcut to place new nodes in their right place during tree traversal
   node[_parent] = nodeResult
   // _include is the property that allow us to filter based on position args
   // e.g: `npm ls foo`, `npm ls simple-output@2`
-  // _filteredBy is used to apply extra color info to the item that
-  // was used in args in order to filter
+  // _filteredBy is used to apply extra color info to the item that was used in args in order to filter
   node[_filteredBy] = node[_include] =
     filterByPositionalArgs(args, { node: seenNodes.get(node.path) })
-  // _depth keeps track of how many levels deep tree traversal currently is
-  // so that we can `npm ls --depth=1`
+  // _depth keeps track of how many levels deep tree traversal currently is so that we can `npm ls --depth=1`
   node[_depth] = currentDepth + 1
 
   return node
@@ -508,9 +524,7 @@ const augmentNodesWithMetadata = ({
 const sortAlphabetically = ({ pkgid: a }, { pkgid: b }) => localeCompare(a, b)
 
 const humanOutput = ({ chalk, result, seenItems, unicode }) => {
-  // we need to traverse the entire tree in order to determine which items
-  // should be included (since a nested transitive included dep will make it
-  // so that all its ancestors should be displayed)
+  // we need to traverse the entire tree in order to determine which items should be included (since a nested transitive included dep will make it so that all its ancestors should be displayed)
   // here is where we put items in their expected place for archy output
   for (const item of seenItems) {
     if (item[_include] && item[_parent]) {
@@ -539,13 +553,10 @@ const jsonOutput = ({ path, problems, result, rootError, seenItems }) => {
     result.invalid = true
   }
 
-  // we need to traverse the entire tree in order to determine which items
-  // should be included (since a nested transitive included dep will make it
-  // so that all its ancestors should be displayed)
+  // we need to traverse the entire tree in order to determine which items should be included (since a nested transitive included dep will make it so that all its ancestors should be displayed)
   // here is where we put items in their expected place for json output
   for (const item of seenItems) {
-    // append current item to its parent item.dependencies obj in order
-    // to provide a json object structure that represents the installed tree
+    // append current item to its parent item.dependencies obj in order to provide a json object structure that represents the installed tree
     if (item[_include] && item[_parent]) {
       if (!item[_parent].dependencies) {
         item[_parent].dependencies = {}
diff --git a/deps/npm/lib/commands/org.js b/deps/npm/lib/commands/org.js
index 3daf9e550fb729..4ece9e19d60bc4 100644
--- a/deps/npm/lib/commands/org.js
+++ b/deps/npm/lib/commands/org.js
@@ -110,9 +110,7 @@ class Org extends BaseCommand {
       output.standard([user, org, userCount, true].join('\t'))
     } else if (!this.npm.silent) {
       output.standard(
-        `Successfully removed ${user} from ${org}. You now have ${userCount} member${
-          userCount === 1 ? '' : 's'
-        } in this org.`
+        `Successfully removed ${user} from ${org}. You now have ${userCount} member${userCount === 1 ? '' : 's'} in this org.`
       )
     }
   }
diff --git a/deps/npm/lib/commands/outdated.js b/deps/npm/lib/commands/outdated.js
index 6c2d4cdcd9581d..e6f2cd006b60fb 100644
--- a/deps/npm/lib/commands/outdated.js
+++ b/deps/npm/lib/commands/outdated.js
@@ -95,8 +95,7 @@ class Outdated extends ArboristWorkspaceCmd {
   }
 
   #getEdges (nodes, type) {
-    // when no nodes are provided then it should only read direct deps
-    // from the root node and its workspaces direct dependencies
+    // when no nodes are provided then it should only read direct deps from the root node and its workspaces direct dependencies
     if (!nodes) {
       this.#getEdgesOut(this.#tree)
       this.#getWorkspacesEdges()
@@ -170,8 +169,7 @@ class Outdated extends ArboristWorkspaceCmd {
       }
     }
 
-    // deps different from prod not currently
-    // on disk are not included in the output
+    // deps different from prod not currently on disk are not included in the output
     if (edge.error === MISSING && type !== 'dependencies') {
       return
     }
@@ -204,8 +202,8 @@ class Outdated extends ArboristWorkspaceCmd {
         })
       }
     } catch (err) {
-      // silently catch and ignore ETARGET, E403 &
-      // E404 errors, deps are just skipped
+      // silently catch and ignore ETARGET, E403 & E404 errors
+      // deps are just skipped
       if (!['ETARGET', 'E404', 'E404'].includes(err.code)) {
         throw err
       }
@@ -261,10 +259,8 @@ class Outdated extends ArboristWorkspaceCmd {
   }
 
   #json (list) {
-    // TODO(BREAKING_CHANGE): this should just return an array. It's a list and
-    // turing it into an object with keys is lossy since multiple items in the
-    // list could have the same key. For now we hack that by only changing
-    // top level values into arrays if they have multiple outdated items
+    // TODO(BREAKING_CHANGE): this should just return an array.
+    // It's a list and turning it into an object with keys is lossy since multiple items in the list could have the same key. For now we hack that by only changing top level values into arrays if they have multiple outdated items
     return list.reduce((acc, d) => {
       const dep = {
         current: d.current,
diff --git a/deps/npm/lib/commands/pack.js b/deps/npm/lib/commands/pack.js
index fdde78f6afe238..ca57de03997b41 100644
--- a/deps/npm/lib/commands/pack.js
+++ b/deps/npm/lib/commands/pack.js
@@ -31,14 +31,14 @@ class Pack extends BaseCommand {
     const json = this.npm.config.get('json')
 
     const Arborist = require('@npmcli/arborist')
-    // Get the manifests and filenames first so we can bail early on manifest
-    // errors before making any tarballs
+    // Get the manifests and filenames first so we can bail early on manifest errors before making any tarballs
     const manifests = []
     for (const arg of args) {
       const spec = npa(arg)
       const manifest = await pacote.manifest(spec, {
         ...this.npm.flatOptions,
         Arborist,
+        preferOnline: true,
         _isRoot: true,
       })
       if (!manifest._id) {
@@ -47,8 +47,7 @@ class Pack extends BaseCommand {
       manifests.push({ arg, manifest })
     }
 
-    // Load tarball names up for printing afterward to isolate from the
-    // noise generated during packing
+    // Load tarball names up for printing afterward to isolate from the noise generated during packing
     const tarballs = []
     for (const { arg, manifest } of manifests) {
       const tarballData = await libpack(arg, {
@@ -56,6 +55,7 @@ class Pack extends BaseCommand {
         foregroundScripts: this.npm.config.isDefault('foreground-scripts')
           ? true
           : this.npm.config.get('foreground-scripts'),
+        preferOnline: true,
         prefix: this.npm.localPrefix,
         workspaces: this.workspacePaths,
       })
@@ -63,8 +63,8 @@ class Pack extends BaseCommand {
     }
 
     for (const [index, tar] of Object.entries(tarballs)) {
-      // XXX(BREAKING_CHANGE): publish outputs a json object with package
-      // names as keys. Pack should do the same here instead of an array
+      // XXX(BREAKING_CHANGE): publish outputs a json object with package names as keys.
+      // Pack should do the same here instead of an array
       logTar(tar, { unicode, json, key: index })
       if (!json) {
         output.standard(tar.filename.replace(/^@/, '').replace(/\//, '-'))
@@ -73,9 +73,7 @@ class Pack extends BaseCommand {
   }
 
   async execWorkspaces (args) {
-    // If they either ask for nothing, or explicitly include '.' in the args,
-    // we effectively translate that into each workspace requested
-
+    // If they either ask for nothing, or explicitly include '.' in the args, we effectively translate that into each workspace requested
     const useWorkspaces = args.length === 0 || args.includes('.')
 
     if (!useWorkspaces) {
diff --git a/deps/npm/lib/commands/pkg.js b/deps/npm/lib/commands/pkg.js
index 5a236f6e622709..3eccb24769eb6e 100644
--- a/deps/npm/lib/commands/pkg.js
+++ b/deps/npm/lib/commands/pkg.js
@@ -63,19 +63,17 @@ class Pkg extends BaseCommand {
 
     if (args.length) {
       result = new Queryable(result).query(args)
-      // in case there's only a single argument and a single result from the query
-      // just prints that one element to stdout.
-      // TODO(BREAKING_CHANGE): much like other places where we unwrap single
-      // item arrays this should go away. it makes the behavior unknown for users
-      // who don't already know the shape of the data.
+      // in case there's only a single argument and a single result from the query just prints that one element to stdout.
+      // TODO(BREAKING_CHANGE): much like other places where we unwrap single item arrays this should go away.
+      // it makes the behavior unknown for users who don't already know the shape of the data.
       if (Object.keys(result).length === 1 && args.length === 1) {
         result = result[args]
       }
     }
 
     // The display layer is responsible for calling JSON.stringify on the result
-    // TODO: https://github.com/npm/cli/issues/5508 a raw mode has been requested similar
-    // to jq -r. If that was added then this method should no longer set `json:true` all the time
+    // TODO: https://github.com/npm/cli/issues/5508 a raw mode has been requested similar to jq -r.
+    // If that was added then this method should no longer set `json:true` all the time
     output.buffer(workspace ? { [workspace]: result } : result)
   }
 
diff --git a/deps/npm/lib/commands/profile.js b/deps/npm/lib/commands/profile.js
index 2e11f93788f99e..926eb02f49c22d 100644
--- a/deps/npm/lib/commands/profile.js
+++ b/deps/npm/lib/commands/profile.js
@@ -259,8 +259,7 @@ class Profile extends BaseCommand {
       },
     }
 
-    // if they're using legacy auth currently then we have to
-    // update them to a bearer token before continuing.
+    // if they're using legacy auth currently then we have to update them to a bearer token before continuing.
     const creds = this.npm.config.getCredentialsByURI(this.npm.config.get('registry'))
     const auth = {}
 
@@ -287,11 +286,7 @@ class Profile extends BaseCommand {
       )
 
       if (!result.token) {
-        throw new Error(
-          `Your registry ${this.npm.config.get('registry')} does not seem to ` +
-          'support bearer tokens. Bearer tokens are required for ' +
-          'two-factor authentication'
-        )
+        throw new Error(`Your registry ${this.npm.config.get('registry')} does not seem to support bearer tokens. Bearer tokens are required for two-factor authentication.`)
       }
 
       this.npm.config.setCredentialsByURI(
@@ -321,35 +316,23 @@ class Profile extends BaseCommand {
     const badResponse = typeof challenge.tfa !== 'string'
       || !/^otpauth:[/][/]/.test(challenge.tfa)
     if (badResponse) {
-      throw new Error(
-        'Unknown error enabling two-factor authentication. Expected otpauth URL' +
-        ', got: ' + inspect(challenge.tfa)
-      )
+      throw new Error(`Unknown error enabling two-factor authentication. Expected otpauth URL, got: ${inspect(challenge.tfa)}`)
     }
 
     const otpauth = new URL(challenge.tfa)
     const secret = otpauth.searchParams.get('secret')
     const code = await qrcode(challenge.tfa)
 
-    output.standard(
-      'Scan into your authenticator app:\n' + code + '\n Or enter code:', secret
-    )
+    output.standard('Scan into your authenticator app:\n' + code + '\n Or enter code:', secret)
 
-    const interactiveOTP =
-      await readUserInfo.otp('And an OTP code from your authenticator: ')
+    const interactiveOTP = await readUserInfo.otp('And an OTP code from your authenticator: ')
 
     log.info('profile', 'Finalizing two-factor authentication')
 
     const result = await set({ tfa: [interactiveOTP] }, conf)
 
-    output.standard(
-      '2FA successfully enabled. Below are your recovery codes, ' +
-      'please print these out.'
-    )
-    output.standard(
-      'You will need these to recover access to your account ' +
-      'if you lose your authentication device.'
-    )
+    output.standard('2FA successfully enabled. Below are your recovery codes, please print these out.')
+    output.standard('You will need these to recover access to your account if you lose your authentication device.')
 
     for (const tfaCode of result.tfa) {
       output.standard('\t' + tfaCode)
diff --git a/deps/npm/lib/commands/prune.js b/deps/npm/lib/commands/prune.js
index 1bcf8a9576316c..d91b0030524431 100644
--- a/deps/npm/lib/commands/prune.js
+++ b/deps/npm/lib/commands/prune.js
@@ -1,7 +1,6 @@
 const reifyFinish = require('../utils/reify-finish.js')
 const ArboristWorkspaceCmd = require('../arborist-cmd.js')
 
-// prune extraneous packages
 class Prune extends ArboristWorkspaceCmd {
   static description = 'Remove extraneous packages'
   static name = 'prune'
diff --git a/deps/npm/lib/commands/publish.js b/deps/npm/lib/commands/publish.js
index 3c8cbfb825129f..98478ae1e95f1d 100644
--- a/deps/npm/lib/commands/publish.js
+++ b/deps/npm/lib/commands/publish.js
@@ -9,10 +9,8 @@ const npmFetch = require('npm-registry-fetch')
 const { redactLog: replaceInfo } = require('@npmcli/redact')
 const { otplease } = require('../utils/auth.js')
 const { getContents, logTar } = require('../utils/tar.js')
-// for historical reasons, publishConfig in package.json can contain ANY config
-// keys that npm supports in .npmrc files and elsewhere.  We *may* want to
-// revisit this at some point, and have a minimal set that's a SemVer-major
-// change that ought to get a RFC written on it.
+// for historical reasons, publishConfig in package.json can contain ANY config keys that npm supports in .npmrc files and elsewhere.
+// We *may* want to revisit this at some point, and have a minimal set that's a SemVer-major change that ought to get a RFC written on it.
 const { flatten } = require('@npmcli/config/lib/definitions')
 const pkgJson = require('@npmcli/package-json')
 const BaseCommand = require('../base-cmd.js')
@@ -83,8 +81,7 @@ class Publish extends BaseCommand {
 
     const opts = { ...this.npm.flatOptions, progress: false }
 
-    // you can publish name@version, ./foo.tgz, etc.
-    // even though the default is the 'file:.' cwd.
+    // you can publish name@version, ./foo.tgz, etc even though the default is the 'file:.' cwd.
     const spec = npa(args[0])
     let manifest = await this.#getManifest(spec, opts)
 
@@ -111,9 +108,7 @@ class Publish extends BaseCommand {
     const pkgContents = await getContents(manifest, tarballData)
     const logPkg = () => logTar(pkgContents, { unicode, json, key: workspace })
 
-    // The purpose of re-reading the manifest is in case it changed,
-    // so that we send the latest and greatest thing to the registry
-    // note that publishConfig might have changed as well!
+    // The purpose of re-reading the manifest is in case it changed, so that we send the latest and greatest thing to the registry note that publishConfig might have changed as well!
     manifest = await this.#getManifest(spec, opts, true)
     const force = this.npm.config.get('force')
     const isDefaultTag = this.npm.config.isDefault('tag') && !manifest.publishConfig?.tag
@@ -125,8 +120,7 @@ class Publish extends BaseCommand {
       }
     }
 
-    // If we are not in JSON mode then we show the user the contents of the tarball
-    // before it is published so they can see it while their otp is pending
+    // If we are not in JSON mode then we show the user the contents of the tarball before it is published so they can see it while their otp is pending
     if (!json) {
       logPkg()
     }
@@ -188,8 +182,7 @@ class Publish extends BaseCommand {
       await otplease(this.npm, opts, o => libpub(manifest, tarballData, o))
     }
 
-    // In json mode we don't log until the publish has completed as this will
-    // add it to the output only if completes successfully
+    // In json mode we don't log until the publish has completed as this will add it to the output only if completes successfully
     if (json) {
       logPkg()
     }
@@ -267,8 +260,7 @@ class Publish extends BaseCommand {
     }
     if (manifest.publishConfig) {
       const cliFlags = this.npm.config.data.get('cli').raw
-      // Filter out properties set in CLI flags to prioritize them over
-      // corresponding `publishConfig` settings
+      // Filter out properties set in CLI flags to prioritize them over corresponding `publishConfig` settings
       const filteredPublishConfig = Object.fromEntries(
         Object.entries(manifest.publishConfig).filter(([key]) => !(key in cliFlags)))
       if (logWarnings) {
diff --git a/deps/npm/lib/commands/run.js b/deps/npm/lib/commands/run.js
index bed82a6a08701b..4547679754ea96 100644
--- a/deps/npm/lib/commands/run.js
+++ b/deps/npm/lib/commands/run.js
@@ -113,7 +113,8 @@ class RunScript extends BaseCommand {
         ? ` --workspace=${pkg._id || pkg.name}`
         : ''
       throw new Error([
-        `Missing script: "${event}"${suggestions}\n`,
+        `Missing script: "${event}"${suggestions}`,
+        '',
         'To see a list of scripts, run:',
         `  npm run${wsArg}`,
       ].join('\n'))
@@ -213,8 +214,7 @@ class RunScript extends BaseCommand {
       }
     }
 
-    // Return true to indicate that something was output for this path
-    // that should be separated from others
+    // Return true to indicate that something was output for this path that should be separated from others
     return true
   }
 }
diff --git a/deps/npm/lib/commands/sbom.js b/deps/npm/lib/commands/sbom.js
index 98452d646dfe82..fb3d81bb2d368f 100644
--- a/deps/npm/lib/commands/sbom.js
+++ b/deps/npm/lib/commands/sbom.js
@@ -62,8 +62,7 @@ class SBOM extends BaseCommand {
     // Populate the response with the list of unique nodes (sorted by location)
     this.#buildResponse(items.sort((a, b) => localeCompare(a.location, b.location)))
 
-    // TODO(BREAKING_CHANGE): all sbom output is in json mode but setting it before
-    // any of the errors will cause those to be thrown in json mode.
+    // TODO(BREAKING_CHANGE): all sbom output is in json mode but setting it before any of the errors will cause those to be thrown in json mode.
     this.npm.config.set('json', true)
     output.standard(JSON.stringify(this.#response, null, 2), { [META]: true, redact: false })
   }
@@ -79,8 +78,7 @@ class SBOM extends BaseCommand {
     const omit = this.npm.flatOptions.omit
     const workspacesEnabled = this.npm.flatOptions.workspacesEnabled
 
-    // If omit is specified, omit all nodes and their children which match the
-    // specified selectors
+    // If omit is specified, omit all nodes and their children which match the specified selectors
     const omits = omit.reduce((acc, o) => `${acc}:not(.${o})`, '')
 
     if (!workspacesEnabled) {
diff --git a/deps/npm/lib/commands/shrinkwrap.js b/deps/npm/lib/commands/shrinkwrap.js
index 86215c18e62dd8..e8d3a256f195fd 100644
--- a/deps/npm/lib/commands/shrinkwrap.js
+++ b/deps/npm/lib/commands/shrinkwrap.js
@@ -31,11 +31,8 @@ class Shrinkwrap extends BaseCommand {
     const oldFilename = meta.filename
     const notSW = !newFile && basename(oldFilename) !== 'npm-shrinkwrap.json'
 
-    // The computed lockfile version of a hidden lockfile is always 3
-    // even if the actual value of the property is a different.
-    // When shrinkwrap is run with only a hidden lockfile we want to
-    // set the shrinkwrap lockfile version as whatever was explicitly
-    // requested with a fallback to the actual value from the hidden
+    // The computed lockfile version of a hidden lockfile is always 3 even if the actual value of the property is a different.
+    // When shrinkwrap is run with only a hidden lockfile we want to set the shrinkwrap lockfile version as whatever was explicitly requested with a fallback to the actual value from the hidden
     // lockfile.
     if (meta.hiddenLockfile) {
       meta.lockfileVersion = arb.options.lockfileVersion ||
diff --git a/deps/npm/lib/commands/team.js b/deps/npm/lib/commands/team.js
index 98f5d2d16b0084..2cac0fb24660c2 100644
--- a/deps/npm/lib/commands/team.js
+++ b/deps/npm/lib/commands/team.js
@@ -40,9 +40,9 @@ class Team extends BaseCommand {
 
   async exec ([cmd, entity = '', user = '']) {
     // Entities are in the format <scope>:<team>
-    // XXX: "description" option to libnpmteam is used as a description of the
-    // team, but in npm's options, this is a boolean meaning "show the
-    // description in npm search output".  Hence its being set to null here.
+    // XXX: "description" option to libnpmteam is used as a description of the team, but in npm's options
+    // this is a boolean meaning "show the description in npm search output".
+    // Hence its being set to null here.
     await otplease(this.npm, { ...this.npm.flatOptions }, opts => {
       entity = entity.replace(/^@/, '')
       switch (cmd) {
diff --git a/deps/npm/lib/commands/trust/index.js b/deps/npm/lib/commands/trust/index.js
index 9c3bf070a4ce1a..9b866a2cd5e61a 100644
--- a/deps/npm/lib/commands/trust/index.js
+++ b/deps/npm/lib/commands/trust/index.js
@@ -3,6 +3,7 @@ const BaseCommand = require('../../base-cmd.js')
 class Trust extends BaseCommand {
   static description = 'Create a trusted relationship between a package and a OIDC provider'
   static name = 'trust'
+  static usage = null
 
   static subcommands = {
     github: require('./github.js'),
diff --git a/deps/npm/lib/commands/unpublish.js b/deps/npm/lib/commands/unpublish.js
index 73d9d038045586..fc390a2b9edff7 100644
--- a/deps/npm/lib/commands/unpublish.js
+++ b/deps/npm/lib/commands/unpublish.js
@@ -9,9 +9,7 @@ const getIdentity = require('../utils/get-identity.js')
 const { otplease } = require('../utils/auth.js')
 const BaseCommand = require('../base-cmd.js')
 
-const LAST_REMAINING_VERSION_ERROR = 'Refusing to delete the last version of the package. ' +
-'It will block from republishing a new version for 24 hours.\n' +
-'Run with --force to do this.'
+const LAST_REMAINING_VERSION_ERROR = 'Refusing to delete the last version of the package. It will block from republishing a new version for 24 hours.\nRun with --force to do this.'
 
 class Unpublish extends BaseCommand {
   static description = 'Remove a package from the registry'
@@ -45,9 +43,7 @@ class Unpublish extends BaseCommand {
     }
 
     const access = await libaccess.getPackages(username, opts)
-    // do a bit of filtering at this point, so that we don't need
-    // to fetch versions for more than one thing, but also don't
-    // accidentally unpublish a whole project
+    // do a bit of filtering at this point, so that we don't need to fetch versions for more than one thing, but also don't accidentally unpublish a whole project
     let pkgs = Object.keys(access)
     if (!partialWord || !pkgs.length) {
       return pkgs
@@ -85,10 +81,7 @@ class Unpublish extends BaseCommand {
     if (args.length) {
       spec = npa(args[0])
       if (spec.type !== 'version' && spec.rawSpec !== '*') {
-        throw this.usageError(
-          'Can only unpublish a single version, or the entire project.\n' +
-          'Tags and ranges are not supported.'
-        )
+        throw this.usageError('Can only unpublish a single version, or the entire project.\nTags and ranges are not supported.')
       }
     }
 
@@ -96,10 +89,7 @@ class Unpublish extends BaseCommand {
     log.silly('unpublish', 'spec', spec)
 
     if (spec?.rawSpec === '*' && !force) {
-      throw this.usageError(
-        'Refusing to delete entire project.\n' +
-        'Run with --force to do this.'
-      )
+      throw this.usageError('Refusing to delete entire project.\nRun with --force to do this.')
     }
 
     const opts = { ...this.npm.flatOptions }
@@ -111,14 +101,12 @@ class Unpublish extends BaseCommand {
     } catch (err) {
       if (err.code === 'ENOENT' || err.code === 'ENOTDIR') {
         if (!spec) {
-          // We needed a local package.json to figure out what package to
-          // unpublish
+          // We needed a local package.json to figure out what package to unpublish
           throw this.usageError()
         }
       } else {
         // folks should know if ANY local package.json had a parsing error.
-        // They may be relying on `publishConfig` to be loading and we don't
-        // want to ignore errors in that case.
+        // They may be relying on `publishConfig` to be loading and we don't want to ignore errors in that case.
         throw err
       }
     }
@@ -131,19 +119,14 @@ class Unpublish extends BaseCommand {
       log.verbose('unpublish', manifest)
       pkgVersion = manifest.version ? `@${manifest.version}` : ''
       if (!manifest.version && !force) {
-        throw this.usageError(
-          'Refusing to delete entire project.\n' +
-          'Run with --force to do this.'
-        )
+        throw this.usageError('Refusing to delete entire project.\nRun with --force to do this.')
       }
     }
 
-    // If localPrefix has a package.json with a name that matches the package
-    // being unpublished, load up the publishConfig
+    // If localPrefix has a package.json with a name that matches the package being unpublished, load up the publishConfig
     if (manifest?.name === spec.name && manifest.publishConfig) {
       const cliFlags = this.npm.config.data.get('cli').raw
-      // Filter out properties set in CLI flags to prioritize them over
-      // corresponding `publishConfig` settings
+      // Filter out properties set in CLI flags to prioritize them over corresponding `publishConfig` settings
       const filteredPublishConfig = Object.fromEntries(
         Object.entries(manifest.publishConfig).filter(([key]) => !(key in cliFlags)))
       for (const key in filteredPublishConfig) {
diff --git a/deps/npm/lib/commands/update.js b/deps/npm/lib/commands/update.js
index 38e83f3f6bb953..ed1416d70c13e2 100644
--- a/deps/npm/lib/commands/update.js
+++ b/deps/npm/lib/commands/update.js
@@ -39,8 +39,7 @@ class Update extends ArboristWorkspaceCmd {
     const global = path.resolve(this.npm.globalDir, '..')
     const where = this.npm.global ? global : this.npm.prefix
 
-    // In the context of `npm update` the save
-    // config value should default to `false`
+    // In the context of `npm update` the save config value should default to `false`
     const save = this.npm.config.isDefault('save')
       ? false
       : this.npm.config.get('save')
diff --git a/deps/npm/lib/commands/view.js b/deps/npm/lib/commands/view.js
index 44b94dfccb05a6..28393c823d65f4 100644
--- a/deps/npm/lib/commands/view.js
+++ b/deps/npm/lib/commands/view.js
@@ -31,8 +31,7 @@ class View extends BaseCommand {
 
   static async completion (opts, npm) {
     if (opts.conf.argv.remain.length <= 2) {
-      // There used to be registry completion here, but it stopped
-      // making sense somewhere around 50,000 packages on the registry
+      // There used to be registry completion here, but it stopped making sense somewhere around 50,000 packages on the registry
       return
     }
     // have the package, get the fields
@@ -103,8 +102,7 @@ class View extends BaseCommand {
     const wholePackument = !args.length
     const json = this.npm.config.get('json')
 
-    // If we are viewing many packages and outputting individual fields then
-    // output the name before doing any async activity
+    // If we are viewing many packages and outputting individual fields then output the name before doing any async activity
     if (!json && !wholePackument && workspace) {
       output.standard(`${name}:`)
     }
@@ -241,11 +239,10 @@ class View extends BaseCommand {
     })
 
     if (json) {
-      // TODO(BREAKING_CHANGE): all unwrapping should be removed. Users should know
-      // based on their arguments if they can expect an array or an object. And this
-      // unwrapping can break that assumption. Eg `npm view abbrev@^2` should always
-      // return an array, but currently since there is only one version matching `^2`
-      // this will return a single object instead.
+      // TODO(BREAKING_CHANGE): all unwrapping should be removed.
+      // Users should know based on their arguments if they can expect an array or an object.
+      // And this unwrapping can break that assumption.
+      // e.g. `npm view abbrev@^2` should always return an array, but currently since there is only one version matching `^2` this will return a single object instead.
       const first = Object.keys(res[0] || {})
       const jsonRes = first.length === 1 ? res.map(m => m[first[0]]) : res
       if (jsonRes.length === 0) {
diff --git a/deps/npm/lib/lifecycle-cmd.js b/deps/npm/lib/lifecycle-cmd.js
index eb3cc1c9beed7f..e4604b6115131e 100644
--- a/deps/npm/lib/lifecycle-cmd.js
+++ b/deps/npm/lib/lifecycle-cmd.js
@@ -1,7 +1,7 @@
 const BaseCommand = require('./base-cmd.js')
 
 // The implementation of commands that are just "run a script"
-// restart, start, stop, test
+// e.g. restart, start, stop, test
 class LifecycleCmd extends BaseCommand {
   static usage = ['[-- <args>]']
   static isShellout = true
diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js
index d30554d400f07f..b2ab377e95d71f 100644
--- a/deps/npm/lib/npm.js
+++ b/deps/npm/lib/npm.js
@@ -43,18 +43,13 @@ class Npm {
   #logFile = new LogFile()
   #timers = new Timers()
 
-  // all these options are only used by tests in order to make testing more
-  // closely resemble real world usage. for now, npm has no programmatic API so
-  // it is ok to add stuff here, but we should not rely on it more than
-  // necessary. XXX: make these options not necessary by refactoring @npmcli/config
+  // All these options are only used by tests in order to make testing more closely resemble real world usage.
+  // For now, npm has no programmatic API so it is ok to add stuff here, but we should not rely on it more than necessary.
+  // XXX: make these options not necessary by refactoring @npmcli/config
   //   - npmRoot: this is where npm looks for docs files and the builtin config
-  //   - argv: this allows tests to extend argv in the same way the argv would
-  //     be passed in via a CLI arg.
-  //   - excludeNpmCwd: this is a hack to get @npmcli/config to stop walking up
-  //     dirs to set a local prefix when it encounters the `npmRoot`. this
-  //     allows tests created by tap inside this repo to not set the local
-  //     prefix to `npmRoot` since that is the first dir it would encounter when
-  //     doing implicit detection
+  //   - argv: this allows tests to extend argv in the same way the argv would be passed in via a CLI arg.
+  //   - excludeNpmCwd: this is a hack to get @npmcli/config to stop walking up dirs to set a local prefix when it encounters the `npmRoot`.
+  //       this allows tests created by tap inside this repo to not set the local prefix to `npmRoot` since that is the first dir it would encounter when doing implicit detection
   constructor ({
     stdout = process.stdout,
     stderr = process.stderr,
@@ -108,13 +103,11 @@ class Npm {
     }
 
     // Remove first argv since that is our command as typed
-    // Note that this might not be the actual name of the command
-    // due to aliases, etc. But we use the raw form of it later
-    // in user output so it must be preserved as is.
+    // Note that this might not be the actual name of the command due to aliases, etc.
+    // But we use the raw form of it later in user output so it must be preserved as is.
     const commandArg = this.argv.shift()
 
-    // This is the actual name of the command that will be run or
-    // undefined if deref could not find a match
+    // This is the actual name of the command that will be run or undefined if deref could not find a match
     const command = deref(commandArg)
 
     await this.#display.load({
@@ -137,47 +130,38 @@ class Npm {
       return { exec: false }
     }
 
-    // mkdir this separately since the logs dir can be set to
-    // a different location. if this fails, then we don't have
-    // a cache dir, but we don't want to fail immediately since
-    // the command might not need a cache dir (like `npm --version`)
+    // mkdir this separately since the logs dir can be set to a different location.
+    // if this fails, then we don't have a cache dir, but we don't want to fail immediately since the command might not need a cache dir (like `npm --version`)
     await time.start('npm:load:mkdirpcache', () =>
       fs.mkdir(this.cache, { recursive: true })
         .catch((e) => log.verbose('cache', `could not create cache: ${e}`)))
 
-    // it's ok if this fails. user might have specified an invalid dir
-    // which we will tell them about at the end
+    // it's ok if this fails. user might have specified an invalid dir which we will tell them about at the end
     if (this.config.get('logs-max') > 0) {
       await time.start('npm:load:mkdirplogs', () =>
         fs.mkdir(this.#logsDir, { recursive: true })
           .catch((e) => log.verbose('logfile', `could not create logs-dir: ${e}`)))
     }
 
-    // note: this MUST be shorter than the actual argv length, because it
-    // uses the same memory, so node will truncate it if it's too long.
-    // We time this because setting process.title is slow sometimes but we
-    // have to do it for security reasons. But still helpful to know how slow it is.
+    // note: this MUST be shorter than the actual argv length, because it uses the same memory, so node will truncate it if it's too long.
+    // We time this because setting process.title is slow sometimes but we have to do it for security reasons. But still helpful to know how slow it is.
     time.start('npm:load:setTitle', () => {
       const { parsedArgv: { cooked, remain } } = this.config
-      // Secrets are mostly in configs, so title is set using only the positional args
-      // to keep those from being leaked.  We still do a best effort replaceInfo.
+      // Secrets are mostly in configs, so title is set using only the positional args to keep those from being leaked.
+      // We still do a best effort replaceInfo.
       this.#title = ['npm'].concat(replaceInfo(remain)).join(' ').trim()
       process.title = this.#title
-      // The cooked argv is also logged separately for debugging purposes. It is
-      // cleaned as a best effort by replacing known secrets like basic auth
-      // password and strings that look like npm tokens. XXX: for this to be
-      // safer the config should create a sanitized version of the argv as it
-      // has the full context of what each option contains.
+      // The cooked argv is also logged separately for debugging purposes.
+      // It is cleaned as a best effort by replacing known secrets like basic auth password and strings that look like npm tokens.
+      // XXX: for this to be safer the config should create a sanitized version of the argv as it has the full context of what each option contains.
       this.#argvClean = replaceInfo(cooked)
       log.verbose('title', this.title)
       log.verbose('argv', this.#argvClean.map(JSON.stringify).join(' '))
     })
 
     // logFile.load returns a promise that resolves when old logs are done being cleaned.
-    // We save this promise to an array so that we can await it in tests to ensure more
-    // deterministic logging behavior. The process will also hang open if this were to
-    // take a long time to resolve, but that is why process.exit is called explicitly
-    // in the exit-handler.
+    // We save this promise to an array so that we can await it in tests to ensure more deterministic logging behavior.
+    // The process will also hang open if this were to take a long time to resolve, but that is why process.exit is called explicitly in the exit-handler.
     this.unrefPromises.push(this.#logFile.load({
       command,
       path: this.logPath,
@@ -221,8 +205,7 @@ class Npm {
     const Command = this.constructor.cmd(cmd)
     const command = new Command(this)
 
-    // since 'test', 'start', 'stop', etc. commands re-enter this function
-    // to call the run command, we need to only set it one time.
+    // since 'test', 'start', 'stop', etc. commands re-enter this function to call the run command, we need to only set it one time.
     if (!this.#command) {
       this.#command = command
       process.env.npm_command = this.command
@@ -235,8 +218,7 @@ class Npm {
       this.config.logWarnings()
     }
 
-    // this needs to be rest after because some commands run
-    // this.npm.config.checkUnknown('publishConfig', key)
+    // this needs to be rest after because some commands run this.npm.config.checkUnknown('publishConfig', key)
     this.config.warn = true
 
     return this.execCommandClass(command, args, [cmd])
@@ -327,8 +309,7 @@ class Npm {
     }
   }
 
-  // This gets called at the end of the exit handler and
-  // during any tests to cleanup all of our listeners
+  // This gets called at the end of the exit handler and during any tests to cleanup all of our listeners
   // Everything in here should be synchronous
   unload () {
     this.#timers.off()
@@ -347,8 +328,7 @@ class Npm {
 
     output.flush({
       [META]: true,
-      // json can be set during a command so we send the
-      // final value of it to the display layer here
+      // json can be set during a command so we send the final value of it to the display layer here
       json: this.loaded && this.config.get('json'),
       jsonError: jsonError(err, this),
     })
@@ -437,9 +417,7 @@ class Npm {
     return flat
   }
 
-  // color and logColor are a special derived values that takes into
-  // consideration not only the config, but whether or not we are operating
-  // in a tty with the associated output (stdout/stderr)
+  // color and logColor are a special derived values that takes into consideration not only the config, but whether or not we are operating in a tty with the associated output (stdout/stderr)
   get color () {
     return this.flatOptions.color
   }
diff --git a/deps/npm/lib/package-url-cmd.js b/deps/npm/lib/package-url-cmd.js
index 26c61b521ae60a..5a45b92057245b 100644
--- a/deps/npm/lib/package-url-cmd.js
+++ b/deps/npm/lib/package-url-cmd.js
@@ -45,9 +45,8 @@ class PackageUrlCommand extends BaseCommand {
     return this.exec(this.workspacePaths)
   }
 
-  // given a manifest, try to get the hosted git info from it based on
-  // repository (if a string) or repository.url (if an object) returns null
-  // if it's not a valid repo, or not a known hosted repo
+  // given a manifest, try to get the hosted git info from it based on repository (if a string) or repository.url (if an object)
+  // returns null if it's not a valid repo, or not a known hosted repo
   hostedFromMani (mani) {
     const hostedGitInfo = require('hosted-git-info')
     const r = mani.repository
diff --git a/deps/npm/lib/utils/audit-error.js b/deps/npm/lib/utils/audit-error.js
index c56ec9ba86f185..a93dbb15de7802 100644
--- a/deps/npm/lib/utils/audit-error.js
+++ b/deps/npm/lib/utils/audit-error.js
@@ -1,13 +1,12 @@
 const { log, output } = require('proc-log')
 const { redactLog: replaceInfo } = require('@npmcli/redact')
 
-// print an error or just nothing if the audit report has an error
-// this is called by the audit command, and by the reify-output util
-// prints a JSON version of the error if it's --json
-// returns 'true' if there was an error, false otherwise
+// Print an error or just nothing if the audit report has an error.
+// This is called by the audit command, and by the reify-output util prints a JSON version of the error if it's --json.
+// Returns 'true' if there was an error, false otherwise.
 
 const auditError = (npm, report) => {
-  if (!report || !report.error) {
+  if (!report?.error) {
     return false
   }
 
@@ -34,6 +33,7 @@ const auditError = (npm, report) => {
     output.standard(body)
   }
 
+  // XXX we should throw a real error here
   throw 'audit endpoint returned an error'
 }
 
diff --git a/deps/npm/lib/utils/auth.js b/deps/npm/lib/utils/auth.js
index a617ab9430b2ab..f93e6a3b9c3257 100644
--- a/deps/npm/lib/utils/auth.js
+++ b/deps/npm/lib/utils/auth.js
@@ -52,9 +52,8 @@ const adduser = async (npm, { creds, ...opts }) => {
     const username = await read.username('Username:', creds.username)
     const password = await read.password('Password:', creds.password)
     const email = await read.email('Email (this will be public):', creds.email)
-    // npm registry quirk: If you "add" an existing user with their current
-    // password, it's effectively a login, and if that account has otp you'll
-    // be prompted for it.
+    // npm registry quirk:
+    // If you "add" an existing user with their current password, it's effectively a login, and if that account has otp you'll be prompted for it.
     res = await otplease(npm, opts, (reqOpts) => adduserCouch(username, email, password, reqOpts))
   }
 
diff --git a/deps/npm/lib/utils/cmd-list.js b/deps/npm/lib/utils/cmd-list.js
index ec1d50dcc0c560..8740977cb7619a 100644
--- a/deps/npm/lib/utils/cmd-list.js
+++ b/deps/npm/lib/utils/cmd-list.js
@@ -162,9 +162,8 @@ const deref = (c) => {
 
   const abbrevs = abbrev(commands.concat(Object.keys(aliases)))
 
-  // first deref the abbrev, if there is one
-  // then resolve any aliases
-  // so `npm install-cl` will resolve to `install-clean` then to `ci`
+  // first deref the abbrev,
+  // if there is one then resolve any aliases so `npm install-cl` will resolve to `install-clean` then to `ci`
   let a = abbrevs[c]
   while (aliases[a]) {
     a = aliases[a]
diff --git a/deps/npm/lib/utils/error-message.js b/deps/npm/lib/utils/error-message.js
index 9faf4c339b1a5d..ab01ca621d18bf 100644
--- a/deps/npm/lib/utils/error-message.js
+++ b/deps/npm/lib/utils/error-message.js
@@ -17,9 +17,8 @@ const errorMessage = (er, npm) => {
       const { report } = require('./explain-eresolve.js')
       summary.push(['ERESOLVE', er.message])
       detail.push(['', ''])
-      // XXX(display): error messages are logged so we use the logColor since that is based
-      // on stderr. This should be handled solely by the display layer so it could also be
-      // printed to stdout if necessary.
+      // XXX(display): error messages are logged so we use the logColor since that is based on stderr.
+      // This should be handled solely by the display layer so it could also be printed to stdout if necessary.
       const { explanation, file } = report(er, npm.logChalk, npm.noColorChalk)
       detail.push(['', explanation])
       files.push(['eresolve-report.txt', file])
@@ -42,8 +41,7 @@ const errorMessage = (er, npm) => {
       summary.push(['', er])
       detail.push(['', [
         '',
-        'If you are behind a proxy, please make sure that the',
-        "'proxy' config is set properly.  See: 'npm help config'",
+        `If you are behind a proxy, please make sure that the 'proxy' config is set properly.  See: 'npm help config'`,
       ].join('\n')])
       break
 
@@ -59,8 +57,7 @@ const errorMessage = (er, npm) => {
         log.verbose(er.stack)
         summary.push(['', [
           '',
-          'Your cache folder contains root-owned files, due to a bug in',
-          'previous versions of npm which has since been addressed.',
+          'Your cache folder contains root-owned files, due to a bug in previous versions of npm which has since been addressed.',
           '',
           'To permanently fix this problem, please run:',
           `  sudo chown -R ${process.getuid()}:${process.getgid()} "${npm.config.get('cache')}"`,
@@ -71,15 +68,12 @@ const errorMessage = (er, npm) => {
           '',
           'The operation was rejected by your operating system.',
           ...process.platform === 'win32' ? [
-            "It's possible that the file was already in use (by a text editor or antivirus),",
-            'or that you lack permissions to access it.',
+            `It's possible that the file was already in use (by a text editor or antivirus), or that you lack permissions to access it.`,
           ] : [
             'It is likely you do not have the permissions to access this file as the current user',
           ],
           '',
-          'If you believe this might be a permissions issue, please double-check the',
-          'permissions of the file and its containing directories, or try running',
-          'the command again as root/Administrator.',
+          'If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.',
         ].join('\n')])
       }
       break
@@ -138,8 +132,7 @@ const errorMessage = (er, npm) => {
           summary.push(['', 'This operation requires a one-time password from your authenticator.'])
           detail.push(['', [
             'You can provide a one-time password by passing --otp=<code> to the command you ran.',
-            'If you already provided a one-time password then it is likely that you either typoed',
-            'it, or it timed out. Please try again.',
+            'If you already provided a one-time password then it is likely that you either typoed it, or it timed out. Please try again.',
           ].join('\n')])
         }
       } else {
@@ -160,14 +153,12 @@ const errorMessage = (er, npm) => {
         } else if (auth.includes('Basic')) {
           summary.push(['', 'Incorrect or missing password.'])
           detail.push(['', [
-            'If you were trying to login, change your password, create an',
-            'authentication token or enable two-factor authentication then',
-            'that means you likely typed your password in incorrectly.',
+            'If you were trying to login, change your password, create an authentication token or enable two-factor authentication then that means you likely typed your password in incorrectly.',
             'Please try again, or recover your password at:',
             '  https://www.npmjs.com/forgot',
             '',
-            'If you were doing some other operation then your saved credentials are',
-            'probably out of date. To correct this please try logging in again with:',
+            'If you were doing some other operation then your saved credentials are probably out of date.',
+            'To correct this please try logging in again with:',
             '  npm login',
           ].join('\n')])
         } else {
@@ -207,7 +198,7 @@ const errorMessage = (er, npm) => {
 
     case 'EPUBLISHCONFLICT':
       summary.push(['publish fail', 'Cannot publish over existing version.'])
-      detail.push(['publish fail', "Update the 'version' field in package.json and try again."])
+      detail.push(['publish fail', `Update the 'version' field in package.json and try again.`])
       detail.push(['publish fail', ''])
       detail.push(['publish fail', 'To automatically increment version numbers, see:'])
       detail.push(['publish fail', '  npm help version'])
@@ -217,8 +208,7 @@ const errorMessage = (er, npm) => {
       summary.push(['git', er.message])
       summary.push(['git', `  ${er.path}`])
       detail.push(['git', [
-        'Refusing to remove it. Update manually,',
-        'or move it out of the way first.',
+        'Refusing to remove it. Update manually, or move it out of the way first.',
       ].join('\n')])
       break
 
@@ -290,25 +280,21 @@ const errorMessage = (er, npm) => {
         'This is a problem related to network connectivity.',
         'In most cases you are behind a proxy or have bad network settings.',
         '',
-        'If you are behind a proxy, please make sure that the',
-        "'proxy' config is set properly.  See: 'npm help config'",
+        `If you are behind a proxy, please make sure that the 'proxy' config is set properly.  See: 'npm help config'`,
       ].join('\n')])
       break
 
     case 'ETARGET':
       summary.push(['notarget', er.message])
       detail.push(['notarget', [
-        'In most cases you or one of your dependencies are requesting',
-        "a package version that doesn't exist.",
+        `In most cases you or one of your dependencies are requesting a package version that doesn't exist.`,
       ].join('\n')])
       break
 
     case 'E403':
       summary.push(['403', er.message])
       detail.push(['403', [
-        'In most cases, you or one of your dependencies are requesting',
-        'a package version that is forbidden by your security policy, or',
-        'on a server you do not have access to.',
+        'In most cases, you or one of your dependencies are requesting a package version that is forbidden by your security policy, or on a server you do not have access to.',
       ].join('\n')])
       break
 
@@ -334,8 +320,7 @@ const errorMessage = (er, npm) => {
     case 'EROFS':
       summary.push(['rofs', er.message])
       detail.push(['rofs', [
-        'Often virtualized file systems, or other file systems',
-        "that don't support symlinks, give this error.",
+        `Often virtualized file systems, or other file systems that don't support symlinks, give this error.`,
       ].join('\n')])
       break
 
@@ -354,7 +339,7 @@ const errorMessage = (er, npm) => {
       summary.push(['typeerror', er.stack])
       detail.push(['typeerror', [
         'This is an error with npm itself. Please report this error at:',
-        '  https://github.com/npm/cli/issues',
+        'https://github.com/npm/cli/issues',
       ].join('\n')])
       break
 
@@ -395,10 +380,8 @@ const getExitCodeFromError = (err) => {
 }
 
 const getError = (err, { npm, command, pkg }) => {
-  // if we got a command that just shells out to something else, then it
-  // will presumably print its own errors and exit with a proper status
-  // code if there's a problem.  If we got an error with a code=0, then...
-  // something else went wrong along the way, so maybe an npm problem?
+  // if we got a command that just shells out to something else, then it will presumably print its own errors and exit with a proper status code if there's a problem.
+  // If we got an error with a code=0, then... something else went wrong along the way, so maybe an npm problem?
   if (command?.constructor?.isShellout && typeof err.code === 'number' && err.code) {
     return {
       exitCode: err.code,
@@ -438,10 +421,9 @@ const getError = (err, { npm, command, pkg }) => {
     }
   }
 
-  // Anything after this is not suppressed and get more logged information
+  // Anything after this is not suppressed and gets more logged information
 
-  // add a code to the error if it doesnt have one and mutate some properties
-  // so they have redacted information
+  // add a code to the error if it doesnt have one and mutate some properties so they have redacted information
   err.code ??= err.message.match(/^(?:Error: )?(E[A-Z]+)/)?.[1]
   // this mutates the error and redacts stack/message
   const { summary, detail, files, json } = errorMessage(err, npm)
diff --git a/deps/npm/lib/utils/explain-eresolve.js b/deps/npm/lib/utils/explain-eresolve.js
index f3c6ae23a479db..41152a8f4a20f5 100644
--- a/deps/npm/lib/utils/explain-eresolve.js
+++ b/deps/npm/lib/utils/explain-eresolve.js
@@ -1,12 +1,9 @@
-// this is called when an ERESOLVE error is caught in the exit-handler,
-// or when there's a log.warn('eresolve', msg, explanation), to turn it
-// into a human-intelligible explanation of what's wrong and how to fix.
+// this is called when an ERESOLVE error is caught in the exit-handler, or when there's a log.warn('eresolve', msg, explanation), to turn it into a human-intelligible explanation of what's wrong and how to fix.
 const { explainEdge, explainNode, printNode } = require('./explain-dep.js')
 
-// expl is an explanation object that comes from Arborist.  It looks like:
+// expl is an explanation object that comes from Arborist.
 // Depth is how far we want to want to descend into the object making a report.
-// The full report (ie, depth=Infinity) is always written to the cache folder
-// at ${cache}/eresolve-report.txt along with full json.
+// The full report (ie, depth=Infinity) is always written to the cache folder at ${cache}/eresolve-report.txt along with full json.
 const explain = (expl, chalk, depth) => {
   const { edge, dep, current, peerConflict, currentEdge } = expl
 
@@ -18,9 +15,7 @@ const explain = (expl, chalk, depth) => {
     out.push('While resolving: ' + printNode(whileInstalling, chalk))
   }
 
-  // it "should" be impossible for an ERESOLVE explanation to lack both
-  // current and currentEdge, but better to have a less helpful error
-  // than a crashing failure.
+  // it "should" be impossible for an ERESOLVE explanation to lack both current and currentEdge, but better to have a less helpful error than a crashing failure.
   if (current) {
     out.push('Found: ' + explainNode(current, depth, chalk))
   } else if (peerConflict && peerConflict.current) {
@@ -55,9 +50,7 @@ const report = (expl, chalk, noColorChalk) => {
     ? arr.join(' or ') :
     arr.map((v, i, l) => i + 1 === l.length ? `or ${v}` : v).join(', ')
 
-  const fix = `Fix the upstream dependency conflict, or retry
-this command with ${or(flags)}
-to accept an incorrect (and potentially broken) dependency resolution.`
+  const fix = `Fix the upstream dependency conflict, or retry this command with ${or(flags)} to accept an incorrect (and potentially broken) dependency resolution.`
 
   return {
     explanation: `${explain(expl, chalk, 4)}\n\n${fix}`,
diff --git a/deps/npm/lib/utils/format-bytes.js b/deps/npm/lib/utils/format-bytes.js
index b5c53484825eb2..d111c8cab09454 100644
--- a/deps/npm/lib/utils/format-bytes.js
+++ b/deps/npm/lib/utils/format-bytes.js
@@ -1,6 +1,5 @@
 // Convert bytes to printable output, for file reporting in tarballs
-// Only supports up to GB because that's way larger than anything the registry
-// supports anyways.
+// Only supports up to GB because that's way larger than anything the registry supports anyways.
 
 const formatBytes = (bytes, space = true) => {
   let spacer = ''
diff --git a/deps/npm/lib/utils/format-search-stream.js b/deps/npm/lib/utils/format-search-stream.js
index 6d4e20a2d63407..fd5f6c2385cc34 100644
--- a/deps/npm/lib/utils/format-search-stream.js
+++ b/deps/npm/lib/utils/format-search-stream.js
@@ -12,8 +12,7 @@ const { Minipass } = require('minipass')
 //   date: Date // can be null,
 // }
 //
-// The returned stream will format this package data
-// into a byte stream of formatted, displayable output.
+// The returned stream will format this package data into a byte stream of formatted, displayable output.
 
 function filter (data, exclude) {
   const words = [data.name]
@@ -81,7 +80,10 @@ class TextOutputStream extends Minipass {
 
   constructor (opts) {
     super()
-    // Consider a search for "cowboys" and "boy".  If we highlight "boys" first the "cowboys" string will no longer string match because of the ansi highlighting added to "boys".  If we highlight "boy" second then the ansi reset at the end will make the highlighting only on "cowboy" with a normal "s".  Neither is perfect but at least the first option doesn't do partial highlighting. So, we sort strings smaller to larger
+    // Consider a search for "cowboys" and "boy".
+    // If we highlight "boys" first the "cowboys" string will no longer string match because of the ansi highlighting added to "boys".
+    // If we highlight "boy" second then the ansi reset at the end will make the highlighting only on "cowboy" with a normal "s".
+    // Neither is perfect but at least the first option doesn't do partial highlighting. So, we sort strings smaller to larger
     this.#args = opts.args
       .map(s => s.toLowerCase())
       .filter(Boolean)
diff --git a/deps/npm/lib/utils/get-identity.js b/deps/npm/lib/utils/get-identity.js
index d8f59da14247a1..a523a7c716d36c 100644
--- a/deps/npm/lib/utils/get-identity.js
+++ b/deps/npm/lib/utils/get-identity.js
@@ -17,8 +17,7 @@ module.exports = async (npm, opts) => {
     }
   }
 
-  // At this point, even if they have a credentials object, it doesn't have a
-  // valid token.
+  // At this point, even if they have a credentials object, it doesn't have a valid token.
   throw Object.assign(
     new Error('This command requires you to be logged in.'),
     { code: 'ENEEDAUTH' }
diff --git a/deps/npm/lib/utils/log-file.js b/deps/npm/lib/utils/log-file.js
index c7c1d754009a3c..14b00b180564d3 100644
--- a/deps/npm/lib/utils/log-file.js
+++ b/deps/npm/lib/utils/log-file.js
@@ -13,14 +13,12 @@ class LogFiles {
   #logStream = []
 
   // We cap log files at a certain number of log events per file.
-  // Note that each log event can write more than one line to the
-  // file. Then we rotate log files once this number of events is reached
+  // Note that each log event can write more than one line to the file.
+  // Then we rotate log files once this number of events is reached
   #MAX_LOGS_PER_FILE = null
 
-  // Now that we write logs continuously we need to have a backstop
-  // here for infinite loops that still log. This is also partially handled
-  // by the config.get('max-files') option, but this is a failsafe to
-  // prevent runaway log file creation
+  // Now that we write logs continuously we need to have a backstop here for infinite loops that still log.
+  // This is also partially handled by the config.get('max-files') option, but this is a failsafe to prevent runaway log file creation
   #MAX_FILES_PER_PROCESS = null
 
   #fileLogCount = 0
@@ -53,8 +51,7 @@ class LogFiles {
       return
     }
 
-    // dir is user configurable and is required to exist so
-    // this can error if the dir is missing or not configured correctly
+    // dir is user configurable and is required to exist so this can error if the dir is missing or not configured correctly
     this.#path = path
     this.#logsMax = logsMax
     this.#timing = timing
@@ -66,8 +63,7 @@ class LogFiles {
 
     log.verbose('logfile', `logs-max:${logsMax} dir:${this.#path}`)
 
-    // Write the contents of our array buffer to our new file stream and
-    // set that as the new log logstream for future writes
+    // Write the contents of our array buffer to our new file stream and set that as the new log logstream for future writes
     // if logs max is 0 then the user does not want a log file
     if (this.#logsMax > 0) {
       const initialFile = this.#openLogFile()
@@ -106,8 +102,7 @@ class LogFiles {
   }
 
   #logHandler = (level, ...args) => {
-    // Ignore pause and resume events since we
-    // write everything to the log file
+    // Ignore pause and resume events since we write everything to the log file
     if (level === 'pause' || level === 'resume') {
       return
     }
@@ -118,8 +113,7 @@ class LogFiles {
     }
 
     if (this.#isBuffered) {
-      // Cant do anything but buffer the output if we don't
-      // have a file stream yet
+      // Cant do anything but buffer the output if we don't have a file stream yet
       this.#logStream.push([level, ...args])
       return
     }
@@ -166,43 +160,35 @@ class LogFiles {
 
     try {
       // Pad with zeros so that our log files are always sorted properly
-      // We never want to write files ending in `-9.log` and `-10.log` because
-      // log file cleaning is done by deleting the oldest so in this example
-      // `-10.log` would be deleted next
+      // We never want to write files ending in `-9.log` and `-10.log` because log file cleaning is done by deleting the oldest.
+      // So in this example `-10.log` would be deleted next.
       const f = this.#getLogFilePath(padZero(count, this.#MAX_FILES_PER_PROCESS))
-      // Some effort was made to make the async, but we need to write logs
-      // during process.on('exit') which has to be synchronous. So in order
-      // to never drop log messages, it is easiest to make it sync all the time
-      // and this was measured to be about 1.5% slower for 40k lines of output
+      // Some effort was made to make the async, but we need to write logs during process.on('exit') which has to be synchronous.
+      // So in order to never drop log messages, it is easiest to make it sync all the time and this was measured to be about 1.5% slower for 40k lines of output
       const logStream = new fsMiniPass.WriteStreamSync(f, { flags: 'a' })
       if (count > 0) {
-        // Reset file log count if we are opening
-        // after our first file
+        // Reset file log count if we are opening after our first file
         this.#fileLogCount = 0
       }
       this.#files.push(logStream.path)
       return logStream
     } catch (e) {
-      // If the user has a readonly logdir then we don't want to
-      // warn this on every command so it should be verbose
+      // If the user has a readonly logdir then we don't want to warn this on every command so it should be verbose
       log.verbose('logfile', `could not be created: ${e}`)
     }
   }
 
   async #cleanLogs () {
-    // module to clean out the old log files
-    // this is a best-effort attempt.  if a rm fails, we just
-    // log a message about it and move on.  We do return a
-    // Promise that succeeds when we've tried to delete everything,
-    // just for the benefit of testing this function properly.
+    // module to clean out the old log files this is a best-effort attempt.
+    // if a rm fails, we just log a message about it and move on.
+    // We do return a Promise that succeeds when we've tried to delete everything, just for the benefit of testing this function properly.
 
     try {
       const logPath = this.#getLogFilePath()
       const patternFileName = basename(logPath)
         // tell glob to only match digits
         .replace(/\d/g, 'd')
-        // Handle the old (prior to 8.2.0) log file names which did not have a
-        // counter suffix
+        // Handle the old (prior to 8.2.0) log file names which did not have a counter suffix
         .replace('-.log', '')
 
       let files = await fs.readdir(
diff --git a/deps/npm/lib/utils/oidc.js b/deps/npm/lib/utils/oidc.js
index 690bc96dba4a4a..00f32c642621c6 100644
--- a/deps/npm/lib/utils/oidc.js
+++ b/deps/npm/lib/utils/oidc.js
@@ -8,9 +8,8 @@ const libaccess = require('libnpmaccess')
 /**
  * Handles OpenID Connect (OIDC) token retrieval and exchange for CI environments.
  *
- * This function is designed to work in Continuous Integration (CI) environments such as GitHub Actions,
- * GitLab, and CircleCI. It retrieves an OIDC token from the CI environment, exchanges it for an npm token, and
- * sets the token in the provided configuration for authentication with the npm registry.
+ * This function is designed to work in Continuous Integration (CI) environments such as GitHub Actions, GitLab, and CircleCI.
+ * It retrieves an OIDC token from the CI environment, exchanges it for an npm token, and sets the token in the provided configuration for authentication with the npm registry.
  *
  * This function is intended to never throw, as it mutates the state of the `opts` and `config` objects on success.
  * OIDC is always an optional feature, and the function should not throw if OIDC is not configured by the registry.
@@ -70,8 +69,7 @@ async function oidc ({ packageName, registry, opts, config }) {
       }
 
       /**
-       * The specification for an audience is `npm:registry.npmjs.org`,
-       * where "registry.npmjs.org" can be any supported registry.
+       * The specification for an audience is `npm:registry.npmjs.org`, where "registry.npmjs.org" can be any supported registry.
        */
       const audience = `npm:${new URL(registry).hostname}`
       const url = new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL)
@@ -135,9 +133,8 @@ async function oidc ({ packageName, registry, opts, config }) {
     }
 
     /*
-     * The "opts" object is a clone of npm.flatOptions and is passed through the `publish` command,
-     * eventually reaching `otplease`. To ensure the token is accessible during the publishing process,
-     * it must be directly attached to the `opts` object.
+     * The "opts" object is a clone of npm.flatOptions and is passed through the `publish` command, eventually reaching `otplease`.
+     * To ensure the token is accessible during the publishing process, it must be directly attached to the `opts` object.
      * Additionally, the token is required by the "live" configuration or getters within `config`.
      */
     opts[authTokenKey] = response.token
diff --git a/deps/npm/lib/utils/open-url.js b/deps/npm/lib/utils/open-url.js
index 9aa04b13822776..7d25a4bef6cc48 100644
--- a/deps/npm/lib/utils/open-url.js
+++ b/deps/npm/lib/utils/open-url.js
@@ -34,8 +34,7 @@ const openUrl = async (npm, url, title, isFile) => {
     return
   }
 
-  // We pass this in as true from the help command so we know we don't have to
-  // check the protocol
+  // We pass this in as true from the help command so we know we don't have to check the protocol
   if (!isFile) {
     assertValidUrl(url)
   }
@@ -87,8 +86,7 @@ const openUrlPrompt = async (npm, url, title, prompt, { signal }) => {
   }
 }
 
-// Rearrange arguments and return a function that takes the two arguments
-// returned from the npm-profile methods that take an opener
+// Rearrange arguments and return a function that takes the two arguments returned from the npm-profile methods that take an opener
 const createOpener = (npm, title, prompt = 'Press ENTER to open in the browser...') =>
   (url, opts) => openUrlPrompt(npm, url, title, prompt, opts)
 
diff --git a/deps/npm/lib/utils/ping.js b/deps/npm/lib/utils/ping.js
index 3d47ca1ecaf545..92a7a7b6c68672 100644
--- a/deps/npm/lib/utils/ping.js
+++ b/deps/npm/lib/utils/ping.js
@@ -1,5 +1,4 @@
-// ping the npm registry
-// used by the ping and doctor commands
+// ping the npm registry used by the ping and doctor commands
 const npmFetch = require('npm-registry-fetch')
 module.exports = async (flatOptions) => {
   const res = await npmFetch('/-/ping', { ...flatOptions, cache: false })
diff --git a/deps/npm/lib/utils/queryable.js b/deps/npm/lib/utils/queryable.js
index 7e51194eaf1fc7..e18222e83fcfa6 100644
--- a/deps/npm/lib/utils/queryable.js
+++ b/deps/npm/lib/utils/queryable.js
@@ -4,9 +4,8 @@ const _append = Symbol('append')
 
 const sqBracketsMatcher = str => str.match(/(.+)\[([^\]]+)\]\.?(.*)$/)
 
-// replaces any occurrence of an empty-brackets (e.g: []) with a special
-// Symbol(append) to represent it, this is going to be useful for the setter
-// method that will push values to the end of the array when finding these
+// replaces any occurrence of an empty-brackets (e.g: []) with a special Symbol(append) to represent it
+// this is going to be useful for the setter method that will push values to the end of the array when finding these
 const replaceAppendSymbols = str => {
   const matchEmptyBracket = str.match(/^(.*)\[\]\.?(.*)$/)
 
@@ -28,22 +27,17 @@ const parseKeys = key => {
     if (index) {
       const preSqBracketPortion = index[1]
 
-      // we want to have a `new String` wrapper here in order to differentiate
-      // between multiple occurrences of the same string, e.g:
-      // foo.bar[foo.bar] should split into { foo: { bar: { 'foo.bar': {} } }
+      // we want to have a `new String` wrapper here in order to differentiate between multiple occurrences of the same string,
+      // e.g: foo.bar[foo.bar] should split into { foo: { bar: { 'foo.bar': {} } }
       /* eslint-disable-next-line no-new-wrappers */
       const foundKey = new String(index[2])
       const postSqBracketPortion = index[3]
 
-      // we keep track of items found during this step to make sure
-      // we don't try to split-separate keys that were defined within
-      // square brackets, since the key name itself might contain dots
+      // we keep track of items found during this step to make sure we don't try to split-separate keys that were defined within square brackets, since the key name itself might contain dots
       sqBracketItems.add(foundKey)
 
-      // returns an array that contains either dot-separate items (that will
-      // be split apart during the next step OR the fully parsed keys
-      // read from square brackets, e.g:
-      // foo.bar[1.0.0].a.b -> ['foo.bar', '1.0.0', 'a.b']
+      // returns an array that contains either dot-separate items (that will be split apart during the next step OR the fully parsed keys read from square brackets
+      // e.g: foo.bar[1.0.0].a.b -> ['foo.bar', '1.0.0', 'a.b']
       return [
         ...parseSqBrackets(preSqBracketPortion),
         foundKey,
@@ -51,22 +45,19 @@ const parseKeys = key => {
       ]
     }
 
-    // at the end of parsing, any usage of the special empty-bracket syntax
-    // (e.g: foo.array[]) has  not yet been parsed, here we'll take care
-    // of parsing it and adding a special symbol to represent it in
-    // the resulting list of keys
+    // at the end of parsing, any usage of the special empty-bracket syntax (e.g: foo.array[]) has not yet been parsed
+    // here we'll take care of parsing it and adding a special symbol to represent it in the resulting list of keys
     return replaceAppendSymbols(str)
   }
 
   const res = []
-  // starts by parsing items defined as square brackets, those might be
-  // representing properties that have a dot in the name or just array
-  // indexes, e.g: foo[1.0.0] or list[0]
+  // starts by parsing items defined as square brackets
+  // those might be representing properties that have a dot in the name or just array indexes
+  // e.g: foo[1.0.0] or list[0]
   const sqBracketKeys = parseSqBrackets(key.trim())
 
   for (const k of sqBracketKeys) {
-    // keys parsed from square brackets should just be added to list of
-    // resulting keys as they might have dots as part of the key
+    // keys parsed from square brackets should just be added to list of resulting keys as they might have dots as part of the key
     if (sqBracketItems.has(k)) {
       res.push(k)
     } else {
@@ -78,15 +69,12 @@ const parseKeys = key => {
     }
   }
 
-  // returns an ordered list of strings in which each entry
-  // represents a key in an object defined by the previous entry
+  // returns an ordered list of strings in which each entry represents a key in an object defined by the previous entry
   return res
 }
 
 const getter = ({ data, key }, { unwrapSingleItemArrays = true } = {}) => {
-  // keys are a list in which each entry represents the name of
-  // a property that should be walked through the object in order to
-  // return the final found value
+  // keys are a list in which each entry represents the name of a property that should be walked through the object in order to return the final found value
   const keys = parseKeys(key)
   let _data = data
   let label = ''
@@ -99,10 +87,8 @@ const getter = ({ data, key }, { unwrapSingleItemArrays = true } = {}) => {
       })
     }
 
-    // extra logic to take into account printing array, along with its
-    // special syntax in which using a dot-sep property name after an
-    // array will expand it's results, e.g:
-    // arr.name -> arr[0].name=value, arr[1].name=value, ...
+    // extra logic to take into account printing array, along with its special syntax in which using a dot-sep property name after an array will expand it's results
+    // e.g: arr.name -> arr[0].name=value, arr[1].name=value, ...
     const maybeIndex = Number(k)
     if (Array.isArray(_data) && !Number.isInteger(maybeIndex)) {
       _data = _data.reduce((acc, i, index) => {
@@ -120,8 +106,7 @@ const getter = ({ data, key }, { unwrapSingleItemArrays = true } = {}) => {
     label += k
   }
 
-  // these are some legacy expectations from
-  // the old API consumed by lib/view.js
+  // these are some legacy expectations from the old API consumed by lib/view.js
   if (unwrapSingleItemArrays && Array.isArray(_data) && _data.length <= 1) {
     _data = _data[0]
   }
@@ -132,14 +117,13 @@ const getter = ({ data, key }, { unwrapSingleItemArrays = true } = {}) => {
 }
 
 const setter = ({ data, key, value, force }) => {
-  // setter goes to recursively transform the provided data obj,
-  // setting properties from the list of parsed keys, e.g:
-  // ['foo', 'bar', 'baz'] -> { foo: { bar: { baz:  {} } }
+  // setter goes to recursively transform the provided data obj
+  // setting properties from the list of parsed keys
+  // e.g: ['foo', 'bar', 'baz'] -> { foo: { bar: { baz:  {} } }
   const keys = parseKeys(key)
   const setKeys = (_data, _key) => {
-    // handles array indexes, converting valid integers to numbers,
-    // note that occurrences of Symbol(append) will throw,
-    // so we just ignore these for now
+    // handles array indexes, converting valid integers to numbers
+    // note that occurrences of Symbol(append) will throw so we just ignore these for now
     let maybeIndex = Number.NaN
     try {
       maybeIndex = Number(_key)
@@ -150,23 +134,21 @@ const setter = ({ data, key, value, force }) => {
       _key = maybeIndex
     }
 
-    // creates new array in case key is an index
-    // and the array obj is not yet defined
+    // creates new array in case key is an index and the array obj is not yet defined
     const keyIsAnArrayIndex = _key === maybeIndex || _key === _append
     const dataHasNoItems = !Object.keys(_data).length
     if (keyIsAnArrayIndex && dataHasNoItems && !Array.isArray(_data)) {
       _data = []
     }
 
-    // converting from array to an object is also possible, in case the
-    // user is using force mode, we should also convert existing arrays
-    // to an empty object if the current _data is an array
+    // converting from array to an object is also possible, in case the user is using force mode
+    // we should also convert existing arrays to an empty object if the current _data is an array
     if (force && Array.isArray(_data) && !keyIsAnArrayIndex) {
       _data = { ..._data }
     }
 
-    // the _append key is a special key that is used to represent
-    // the empty-bracket notation, e.g: arr[] -> arr[arr.length]
+    // the _append key is a special key that is used to represent the empty-bracket notation
+    // e.g: arr[] -> arr[arr.length]
     if (_key === _append) {
       if (!Array.isArray(_data)) {
         throw Object.assign(new Error(`Can't use append syntax in non-Array element`), {
@@ -176,14 +158,12 @@ const setter = ({ data, key, value, force }) => {
       _key = _data.length
     }
 
-    // retrieves the next data object to recursively iterate on,
+    // retrieves the next data object to recursively iterate on
     // throws if trying to override a literal value or add props to an array
     const next = () => {
       const haveContents = !force && _data[_key] != null && value !== _delete
       const shouldNotOverrideLiteralValue = !(typeof _data[_key] === 'object')
-      // if the next obj to recurse is an array and the next key to be
-      // appended to the resulting obj is not an array index, then it
-      // should throw since we can't append arbitrary props to arrays
+      // if the next obj to recurse is an array and the next key to be appended to the resulting obj is not an array index, then it should throw since we can't append arbitrary props to arrays
       const shouldNotAddPropsToArrays =
         typeof keys[0] !== 'symbol' && Array.isArray(_data[_key]) && Number.isNaN(Number(keys[0]))
 
@@ -205,9 +185,8 @@ const setter = ({ data, key, value, force }) => {
       return typeof _data[_key] === 'object' ? _data[_key] || {} : {}
     }
 
-    // sets items from the parsed array of keys as objects, recurses to
-    // setKeys in case there are still items to be handled; otherwise, it
-    // just sets the original value set by the user
+    // sets items from the parsed array of keys as objects, recurses to setKeys in case there are still items to be handled
+    // otherwise, it just sets the original value set by the user
     if (keys.length) {
       _data[_key] = setKeys(next(), keys.shift())
     } else {
@@ -246,9 +225,8 @@ class Queryable {
   }
 
   query (queries, opts) {
-    // this ugly interface here is meant to be a compatibility layer
-    // with the legacy API lib/view.js is consuming, if at some point
-    // we refactor that command then we can revisit making this nicer
+    // this ugly interface here is meant to be a compatibility layer with the legacy API lib/view.js is consuming
+    // if at some point we refactor that command then we can revisit making this nicer
     if (queries === Queryable.ALL) {
       return { [Queryable.ALL]: this.#data }
     }
@@ -278,8 +256,7 @@ class Queryable {
     }
   }
 
-  // creates objects along the way for the provided `query` parameter
-  // and assigns `value` to the last property of the query chain
+  // creates objects along the way for the provided `query` parameter and assigns `value` to the last property of the query chain
   set (query, value, { force } = {}) {
     setter({
       data: this.#data,
diff --git a/deps/npm/lib/utils/reify-finish.js b/deps/npm/lib/utils/reify-finish.js
index 410c19730cdf4c..5e1330f4937bbd 100644
--- a/deps/npm/lib/utils/reify-finish.js
+++ b/deps/npm/lib/utils/reify-finish.js
@@ -4,30 +4,18 @@ const { writeFile } = require('node:fs/promises')
 const { resolve } = require('node:path')
 
 const reifyFinish = async (npm, arb) => {
-  await saveBuiltinConfig(npm, arb)
-  reifyOutput(npm, arb)
-}
-
-const saveBuiltinConfig = async (npm, arb) => {
-  const { options: { global }, actualTree } = arb
-  if (!global) {
-    return
-  }
-
-  // if we are using a builtin config, and just installed npm as
-  // a top-level global package, we have to preserve that config.
-  const npmNode = actualTree.inventory.get('node_modules/npm')
-  if (!npmNode) {
-    return
+  // if we are using a builtin config, and just installed npm as a top-level global package, we have to preserve that config.
+  if (arb.options.global) {
+    const npmNode = arb.actualTree.inventory.get('node_modules/npm')
+    if (npmNode) {
+      const builtinConf = npm.config.data.get('builtin')
+      if (!builtinConf.loadError) {
+        const content = ini.stringify(builtinConf.raw).trim() + '\n'
+        await writeFile(resolve(npmNode.path, 'npmrc'), content)
+      }
+    }
   }
-
-  const builtinConf = npm.config.data.get('builtin')
-  if (builtinConf.loadError) {
-    return
-  }
-
-  const content = ini.stringify(builtinConf.raw).trim() + '\n'
-  await writeFile(resolve(npmNode.path, 'npmrc'), content)
+  reifyOutput(npm, arb)
 }
 
 module.exports = reifyFinish
diff --git a/deps/npm/lib/utils/reify-output.js b/deps/npm/lib/utils/reify-output.js
index 48a5525d87f802..99427faaf66488 100644
--- a/deps/npm/lib/utils/reify-output.js
+++ b/deps/npm/lib/utils/reify-output.js
@@ -20,13 +20,10 @@ const auditError = require('./audit-error.js')
 const reifyOutput = (npm, arb) => {
   const { diff, actualTree } = arb
 
-  // note: fails and crashes if we're running audit fix and there was an error
-  // which is a good thing, because there's no point printing all this other
-  // stuff in that case!
+  // note: fails and crashes if we're running audit fix and there was an error which is a good thing, because there's no point printing all this other stuff in that case!
   const auditReport = auditError(npm, arb.auditReport) ? null : arb.auditReport
 
-  // don't print any info in --silent mode, but we still need to
-  // set the exitCode properly from the audit report, if we have one.
+  // don't print any info in --silent mode, but we still need to set the exitCode properly from the audit report, if we have one.
   if (npm.silent) {
     getAuditReport(npm, auditReport)
     return
@@ -124,12 +121,10 @@ const reifyOutput = (npm, arb) => {
   }
 }
 
-// if we're running `npm audit fix`, then we print the full audit report
-// at the end if there's still stuff, because it's silly for `npm audit`
-// to tell you to run `npm audit` for details.  otherwise, use the summary
-// report.  if we get here, we know it's not quiet or json.
-// If the loglevel is silent, then we just run the report
-// to get the exitCode set appropriately.
+// if we're running `npm audit fix`, then we print the full audit report at the end if there's still stuff, because it's silly for `npm audit` to tell you to run `npm audit` for details.
+// otherwise, use the summary report.
+// if we get here, we know it's not quiet or json.
+// If the loglevel is silent, then we just run the report to get the exitCode set appropriately.
 const printAuditReport = (npm, report) => {
   const res = getAuditReport(npm, report)
   if (!res || !res.report) {
@@ -143,8 +138,8 @@ const getAuditReport = (npm, report) => {
     return
   }
 
-  // when in silent mode, we print nothing.  the JSON output is
-  // going to just JSON.stringify() the report object.
+  // when in silent mode, we print nothing.
+  // the JSON output is going to just JSON.stringify() the report object.
   const reporter = npm.silent ? 'quiet'
     : npm.flatOptions.json ? 'quiet'
     : npm.command !== 'audit' ? 'install'
diff --git a/deps/npm/lib/utils/update-workspaces.js b/deps/npm/lib/utils/update-workspaces.js
index 892f366e9980a2..c44abfba7bd108 100644
--- a/deps/npm/lib/utils/update-workspaces.js
+++ b/deps/npm/lib/utils/update-workspaces.js
@@ -13,16 +13,13 @@ async function updateWorkspaces ({
     return
   }
 
-  // default behavior is to not save by default in order to avoid
-  // race condition problems when publishing multiple workspaces
-  // that have dependencies on one another, it might still be useful
-  // in some cases, which then need to set --save
+  // default behavior is to not save by default in order to avoid race condition problems when publishing multiple workspaces that have dependencies on one another
+  // it might still be useful in some cases, which then need to set --save
   const save = config.isDefault('save')
     ? false
     : config.get('save')
 
-  // runs a minimalistic reify update, targeting only the workspaces
-  // that had version updates and skipping fund/audit/save
+  // runs a minimalistic reify update, targeting only the workspaces that had version updates and skipping fund/audit/save
   const opts = {
     ...flatOptions,
     audit: false,
diff --git a/deps/npm/lib/utils/verify-signatures.js b/deps/npm/lib/utils/verify-signatures.js
index c9b39591eadc8a..9aef49e8f4785a 100644
--- a/deps/npm/lib/utils/verify-signatures.js
+++ b/deps/npm/lib/utils/verify-signatures.js
@@ -43,8 +43,7 @@ class VerifySignatures {
     log.verbose('verifying registry signatures')
     await pMap(edges, (e) => this.getVerifiedInfo(e), { concurrency: 20, stopOnError: true })
 
-    // Didn't find any dependencies that could be verified, e.g. only local
-    // deps, missing version, not on a registry etc.
+    // Didn't find any dependencies that could be verified, e.g. only local deps, missing version, not on a registry etc.
     if (!this.auditedWithKeysCount && !this.verifiedAttestationCount) {
       throw new Error('found no dependencies to audit that were installed from ' +
                       'a supported registry')
@@ -318,8 +317,7 @@ class VerifySignatures {
     }
     this.checkedPackages.add(location)
 
-    // We only "audit" or verify the signature, or the presence of it, on
-    // packages whose registry returns signing keys
+    // We only "audit" or verify the signature, or the presence of it, on packages whose registry returns signing keys
     const keys = this.keys.get(registry) || []
     if (keys.length) {
       this.auditedWithKeysCount += 1
@@ -345,9 +343,7 @@ class VerifySignatures {
         })
       }
 
-      // Track verified attestations separately to registry signatures, as all
-      // packages on registries with signing keys are expected to have registry
-      // signatures, but not all packages have provenance and publish attestations.
+      // Track verified attestations separately to registry signatures, as all packages on registries with signing keys are expected to have registry signatures, but not all packages have provenance and publish attestations.
       if (attestations) {
         this.verifiedAttestationCount += 1
       }
diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1
index 56bda5adf7c1a7..efe5c38060c282 100644
--- a/deps/npm/man/man1/npm-access.1
+++ b/deps/npm/man/man1/npm-access.1
@@ -1,4 +1,4 @@
-.TH "NPM-ACCESS" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-ACCESS" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-access\fR - Set access level on published packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1
index b0a8a368f157a6..2fc10725efa4f6 100644
--- a/deps/npm/man/man1/npm-adduser.1
+++ b/deps/npm/man/man1/npm-adduser.1
@@ -1,4 +1,4 @@
-.TH "NPM-ADDUSER" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-ADDUSER" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-adduser\fR - Add a registry user account
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1
index ae1e4ff9c846ed..1af936f51590d7 100644
--- a/deps/npm/man/man1/npm-audit.1
+++ b/deps/npm/man/man1/npm-audit.1
@@ -1,4 +1,4 @@
-.TH "NPM-AUDIT" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-AUDIT" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-audit\fR - Run a security audit
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1
index 24106ee21fe71e..b846617fb7f68a 100644
--- a/deps/npm/man/man1/npm-bugs.1
+++ b/deps/npm/man/man1/npm-bugs.1
@@ -1,4 +1,4 @@
-.TH "NPM-BUGS" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-BUGS" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-bugs\fR - Report bugs for a package in a web browser
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1
index ac8ce843afa6ef..b89d619fa6ecee 100644
--- a/deps/npm/man/man1/npm-cache.1
+++ b/deps/npm/man/man1/npm-cache.1
@@ -1,4 +1,4 @@
-.TH "NPM-CACHE" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-CACHE" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-cache\fR - Manipulates packages cache
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1
index 7c1a4c33f5a5fb..7aa9667243491a 100644
--- a/deps/npm/man/man1/npm-ci.1
+++ b/deps/npm/man/man1/npm-ci.1
@@ -1,4 +1,4 @@
-.TH "NPM-CI" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-CI" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-ci\fR - Clean install a project
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1
index 858399832a39e1..2ec95a1400e6ab 100644
--- a/deps/npm/man/man1/npm-completion.1
+++ b/deps/npm/man/man1/npm-completion.1
@@ -1,4 +1,4 @@
-.TH "NPM-COMPLETION" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-COMPLETION" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-completion\fR - Tab Completion for npm
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1
index 4cb726ffd2cdab..d0ffeff119855c 100644
--- a/deps/npm/man/man1/npm-config.1
+++ b/deps/npm/man/man1/npm-config.1
@@ -1,4 +1,4 @@
-.TH "NPM-CONFIG" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-CONFIG" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-config\fR - Manage the npm configuration files
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1
index 69b8f89e831765..1ed0a6c7e4a024 100644
--- a/deps/npm/man/man1/npm-dedupe.1
+++ b/deps/npm/man/man1/npm-dedupe.1
@@ -1,4 +1,4 @@
-.TH "NPM-DEDUPE" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-DEDUPE" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-dedupe\fR - Reduce duplication in the package tree
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1
index c81e6f048c0e2a..f9270e2591003a 100644
--- a/deps/npm/man/man1/npm-deprecate.1
+++ b/deps/npm/man/man1/npm-deprecate.1
@@ -1,4 +1,4 @@
-.TH "NPM-DEPRECATE" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-DEPRECATE" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-deprecate\fR - Deprecate a version of a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-diff.1 b/deps/npm/man/man1/npm-diff.1
index e502ea264ef881..36b28e8413d486 100644
--- a/deps/npm/man/man1/npm-diff.1
+++ b/deps/npm/man/man1/npm-diff.1
@@ -1,4 +1,4 @@
-.TH "NPM-DIFF" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-DIFF" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-diff\fR - The registry diff command
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1
index 8e3f3c1ca8eb15..46796c3a706dcd 100644
--- a/deps/npm/man/man1/npm-dist-tag.1
+++ b/deps/npm/man/man1/npm-dist-tag.1
@@ -1,4 +1,4 @@
-.TH "NPM-DIST-TAG" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-DIST-TAG" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-dist-tag\fR - Modify package distribution tags
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1
index ad43cda739b107..54bfe990744555 100644
--- a/deps/npm/man/man1/npm-docs.1
+++ b/deps/npm/man/man1/npm-docs.1
@@ -1,4 +1,4 @@
-.TH "NPM-DOCS" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-DOCS" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-docs\fR - Open documentation for a package in a web browser
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-doctor.1 b/deps/npm/man/man1/npm-doctor.1
index 8d5bda4832eb20..d997f55d4d8f18 100644
--- a/deps/npm/man/man1/npm-doctor.1
+++ b/deps/npm/man/man1/npm-doctor.1
@@ -1,4 +1,4 @@
-.TH "NPM-DOCTOR" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-DOCTOR" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-doctor\fR - Check the health of your npm environment
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1
index 35c025535a70fc..d2be7039d6e347 100644
--- a/deps/npm/man/man1/npm-edit.1
+++ b/deps/npm/man/man1/npm-edit.1
@@ -1,4 +1,4 @@
-.TH "NPM-EDIT" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-EDIT" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-edit\fR - Edit an installed package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-exec.1 b/deps/npm/man/man1/npm-exec.1
index c4ae1db70f6f0d..af6f5a4915e536 100644
--- a/deps/npm/man/man1/npm-exec.1
+++ b/deps/npm/man/man1/npm-exec.1
@@ -1,4 +1,4 @@
-.TH "NPM-EXEC" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-EXEC" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-exec\fR - Run a command from a local or remote npm package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-explain.1 b/deps/npm/man/man1/npm-explain.1
index 99b4f567a5a4bb..52b160d5d5e7df 100644
--- a/deps/npm/man/man1/npm-explain.1
+++ b/deps/npm/man/man1/npm-explain.1
@@ -1,4 +1,4 @@
-.TH "NPM-EXPLAIN" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-EXPLAIN" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-explain\fR - Explain installed packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1
index 6d508bbaf80d46..0e2656d7934374 100644
--- a/deps/npm/man/man1/npm-explore.1
+++ b/deps/npm/man/man1/npm-explore.1
@@ -1,4 +1,4 @@
-.TH "NPM-EXPLORE" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-EXPLORE" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-explore\fR - Browse an installed package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-find-dupes.1 b/deps/npm/man/man1/npm-find-dupes.1
index afea51be5d5864..408254ef442f9c 100644
--- a/deps/npm/man/man1/npm-find-dupes.1
+++ b/deps/npm/man/man1/npm-find-dupes.1
@@ -1,4 +1,4 @@
-.TH "NPM-FIND-DUPES" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-FIND-DUPES" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-find-dupes\fR - Find duplication in the package tree
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-fund.1 b/deps/npm/man/man1/npm-fund.1
index a4d9c91b177fe1..1af1d44feded9b 100644
--- a/deps/npm/man/man1/npm-fund.1
+++ b/deps/npm/man/man1/npm-fund.1
@@ -1,4 +1,4 @@
-.TH "NPM-FUND" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-FUND" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-fund\fR - Retrieve funding information
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-get.1 b/deps/npm/man/man1/npm-get.1
index 7c436651daa492..c49c771c00177d 100644
--- a/deps/npm/man/man1/npm-get.1
+++ b/deps/npm/man/man1/npm-get.1
@@ -1,4 +1,4 @@
-.TH "NPM-GET" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-GET" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-get\fR - Get a value from the npm configuration
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1
index c49353ee685556..fee7226ba3eb8f 100644
--- a/deps/npm/man/man1/npm-help-search.1
+++ b/deps/npm/man/man1/npm-help-search.1
@@ -1,4 +1,4 @@
-.TH "NPM-HELP-SEARCH" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-HELP-SEARCH" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-help-search\fR - Search npm help documentation
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1
index 7c208d49e76a57..366842b5da4b74 100644
--- a/deps/npm/man/man1/npm-help.1
+++ b/deps/npm/man/man1/npm-help.1
@@ -1,4 +1,4 @@
-.TH "NPM-HELP" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-HELP" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-help\fR - Get help on npm
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1
index 16f1d1980b4725..3efe21f259d863 100644
--- a/deps/npm/man/man1/npm-init.1
+++ b/deps/npm/man/man1/npm-init.1
@@ -1,4 +1,4 @@
-.TH "NPM-INIT" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-INIT" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-init\fR - Create a package.json file
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1
index 45ef15113df761..61100bcf94f4b8 100644
--- a/deps/npm/man/man1/npm-install-ci-test.1
+++ b/deps/npm/man/man1/npm-install-ci-test.1
@@ -1,4 +1,4 @@
-.TH "NPM-INSTALL-CI-TEST" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-INSTALL-CI-TEST" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-install-ci-test\fR - Install a project with a clean slate and run tests
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1
index 82e58aaf14e043..431a75d9ed797a 100644
--- a/deps/npm/man/man1/npm-install-test.1
+++ b/deps/npm/man/man1/npm-install-test.1
@@ -1,4 +1,4 @@
-.TH "NPM-INSTALL-TEST" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-INSTALL-TEST" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-install-test\fR - Install package(s) and run tests
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1
index 3b40d3633608b2..668a07c3c4f005 100644
--- a/deps/npm/man/man1/npm-install.1
+++ b/deps/npm/man/man1/npm-install.1
@@ -1,4 +1,4 @@
-.TH "NPM-INSTALL" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-INSTALL" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-install\fR - Install a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1
index 4b554a2492751a..ee3e84c814040e 100644
--- a/deps/npm/man/man1/npm-link.1
+++ b/deps/npm/man/man1/npm-link.1
@@ -1,4 +1,4 @@
-.TH "NPM-LINK" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-LINK" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-link\fR - Symlink a package folder
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ll.1 b/deps/npm/man/man1/npm-ll.1
index 712a4b96c37cb5..48109d800c5fe9 100644
--- a/deps/npm/man/man1/npm-ll.1
+++ b/deps/npm/man/man1/npm-ll.1
@@ -1,4 +1,4 @@
-.TH "NPM-LL" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-LL" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-ll\fR - List installed packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-login.1 b/deps/npm/man/man1/npm-login.1
index 84ee231156b786..cf4f8826ec243a 100644
--- a/deps/npm/man/man1/npm-login.1
+++ b/deps/npm/man/man1/npm-login.1
@@ -1,4 +1,4 @@
-.TH "NPM-LOGIN" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-LOGIN" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-login\fR - Login to a registry user account
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1
index 35fe68417a461e..7aeb68cc8f49da 100644
--- a/deps/npm/man/man1/npm-logout.1
+++ b/deps/npm/man/man1/npm-logout.1
@@ -1,4 +1,4 @@
-.TH "NPM-LOGOUT" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-LOGOUT" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-logout\fR - Log out of the registry
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1
index b3028b8dd393ed..e7f020cfa3f80f 100644
--- a/deps/npm/man/man1/npm-ls.1
+++ b/deps/npm/man/man1/npm-ls.1
@@ -1,4 +1,4 @@
-.TH "NPM-LS" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-LS" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-ls\fR - List installed packages
 .SS "Synopsis"
@@ -20,7 +20,7 @@ Positional arguments are \fBname@version-range\fR identifiers, which will limit
 .P
 .RS 2
 .nf
-npm@11.11.0 /path/to/npm
+npm@11.11.1 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5
 .fi
diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1
index 83fb117858ec88..55dc1b791f079e 100644
--- a/deps/npm/man/man1/npm-org.1
+++ b/deps/npm/man/man1/npm-org.1
@@ -1,4 +1,4 @@
-.TH "NPM-ORG" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-ORG" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-org\fR - Manage orgs
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1
index 3c0e64bdf84935..07cf9e96940d78 100644
--- a/deps/npm/man/man1/npm-outdated.1
+++ b/deps/npm/man/man1/npm-outdated.1
@@ -1,4 +1,4 @@
-.TH "NPM-OUTDATED" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-OUTDATED" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-outdated\fR - Check for outdated packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1
index 81b2fec8ff27ac..017b53e96cdaa1 100644
--- a/deps/npm/man/man1/npm-owner.1
+++ b/deps/npm/man/man1/npm-owner.1
@@ -1,4 +1,4 @@
-.TH "NPM-OWNER" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-OWNER" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-owner\fR - Manage package owners
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1
index 8f5488d7a3b7a6..01b5b3095ca07c 100644
--- a/deps/npm/man/man1/npm-pack.1
+++ b/deps/npm/man/man1/npm-pack.1
@@ -1,4 +1,4 @@
-.TH "NPM-PACK" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-PACK" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-pack\fR - Create a tarball from a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1
index a80faff74ff914..05e595ba54868e 100644
--- a/deps/npm/man/man1/npm-ping.1
+++ b/deps/npm/man/man1/npm-ping.1
@@ -1,4 +1,4 @@
-.TH "NPM-PING" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-PING" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-ping\fR - Ping npm registry
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-pkg.1 b/deps/npm/man/man1/npm-pkg.1
index 8667ddbe27c6ff..c992521223a5d0 100644
--- a/deps/npm/man/man1/npm-pkg.1
+++ b/deps/npm/man/man1/npm-pkg.1
@@ -1,4 +1,4 @@
-.TH "NPM-PKG" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-PKG" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-pkg\fR - Manages your package.json
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1
index 6cd9f675b34fb5..d08388e3c67749 100644
--- a/deps/npm/man/man1/npm-prefix.1
+++ b/deps/npm/man/man1/npm-prefix.1
@@ -1,4 +1,4 @@
-.TH "NPM-PREFIX" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-PREFIX" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-prefix\fR - Display prefix
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1
index 67b1c3170e518f..6f344d45540209 100644
--- a/deps/npm/man/man1/npm-profile.1
+++ b/deps/npm/man/man1/npm-profile.1
@@ -1,4 +1,4 @@
-.TH "NPM-PROFILE" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-PROFILE" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-profile\fR - Change settings on your registry profile
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1
index 2569575bbb1a28..0b892012f1126c 100644
--- a/deps/npm/man/man1/npm-prune.1
+++ b/deps/npm/man/man1/npm-prune.1
@@ -1,4 +1,4 @@
-.TH "NPM-PRUNE" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-PRUNE" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-prune\fR - Remove extraneous packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1
index bab2c123579bb1..4161e191cd8723 100644
--- a/deps/npm/man/man1/npm-publish.1
+++ b/deps/npm/man/man1/npm-publish.1
@@ -1,4 +1,4 @@
-.TH "NPM-PUBLISH" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-PUBLISH" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-publish\fR - Publish a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-query.1 b/deps/npm/man/man1/npm-query.1
index 0811845c1c4ae2..95bba2f25cafe8 100644
--- a/deps/npm/man/man1/npm-query.1
+++ b/deps/npm/man/man1/npm-query.1
@@ -1,4 +1,4 @@
-.TH "NPM-QUERY" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-QUERY" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-query\fR - Dependency selector query
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1
index d138bf51dc91c4..5f4c5cd20e9d19 100644
--- a/deps/npm/man/man1/npm-rebuild.1
+++ b/deps/npm/man/man1/npm-rebuild.1
@@ -1,4 +1,4 @@
-.TH "NPM-REBUILD" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-REBUILD" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-rebuild\fR - Rebuild a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1
index 8746de5cc2ea39..92dc03f4a2e1ba 100644
--- a/deps/npm/man/man1/npm-repo.1
+++ b/deps/npm/man/man1/npm-repo.1
@@ -1,4 +1,4 @@
-.TH "NPM-REPO" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-REPO" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-repo\fR - Open package repository page in the browser
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1
index 81a86e23397605..37a0f9b814013d 100644
--- a/deps/npm/man/man1/npm-restart.1
+++ b/deps/npm/man/man1/npm-restart.1
@@ -1,4 +1,4 @@
-.TH "NPM-RESTART" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-RESTART" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-restart\fR - Restart a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1
index 537d4c306a120f..bb0d8d822367b8 100644
--- a/deps/npm/man/man1/npm-root.1
+++ b/deps/npm/man/man1/npm-root.1
@@ -1,4 +1,4 @@
-.TH "NPM-ROOT" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-ROOT" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-root\fR - Display npm root
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-run.1 b/deps/npm/man/man1/npm-run.1
index 20a5032fe62a85..956aa52fa4282e 100644
--- a/deps/npm/man/man1/npm-run.1
+++ b/deps/npm/man/man1/npm-run.1
@@ -1,4 +1,4 @@
-.TH "NPM-RUN" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-RUN" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-run\fR - Run arbitrary package scripts
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-sbom.1 b/deps/npm/man/man1/npm-sbom.1
index 7894164e892e64..8c939742ffd100 100644
--- a/deps/npm/man/man1/npm-sbom.1
+++ b/deps/npm/man/man1/npm-sbom.1
@@ -1,4 +1,4 @@
-.TH "NPM-SBOM" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-SBOM" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-sbom\fR - Generate a Software Bill of Materials (SBOM)
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1
index 22ef258454ae15..c547fb7d6f439c 100644
--- a/deps/npm/man/man1/npm-search.1
+++ b/deps/npm/man/man1/npm-search.1
@@ -1,4 +1,4 @@
-.TH "NPM-SEARCH" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-SEARCH" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-search\fR - Search for packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-set.1 b/deps/npm/man/man1/npm-set.1
index ef485c3521738e..b220a6c275f35b 100644
--- a/deps/npm/man/man1/npm-set.1
+++ b/deps/npm/man/man1/npm-set.1
@@ -1,4 +1,4 @@
-.TH "NPM-SET" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-SET" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-set\fR - Set a value in the npm configuration
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1
index 846b7affa62b6c..d07105d3c01277 100644
--- a/deps/npm/man/man1/npm-shrinkwrap.1
+++ b/deps/npm/man/man1/npm-shrinkwrap.1
@@ -1,4 +1,4 @@
-.TH "NPM-SHRINKWRAP" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-SHRINKWRAP" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-shrinkwrap\fR - Lock down dependency versions for publication
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1
index bdc27193d061c1..0fbec6948b308e 100644
--- a/deps/npm/man/man1/npm-star.1
+++ b/deps/npm/man/man1/npm-star.1
@@ -1,4 +1,4 @@
-.TH "NPM-STAR" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-STAR" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-star\fR - Mark your favorite packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1
index 6a49b6305e4dd4..52df512f34c2d2 100644
--- a/deps/npm/man/man1/npm-stars.1
+++ b/deps/npm/man/man1/npm-stars.1
@@ -1,4 +1,4 @@
-.TH "NPM-STARS" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-STARS" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-stars\fR - View packages marked as favorites
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1
index 5f783b75308e67..6af2ccc7c8cf02 100644
--- a/deps/npm/man/man1/npm-start.1
+++ b/deps/npm/man/man1/npm-start.1
@@ -1,4 +1,4 @@
-.TH "NPM-START" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-START" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-start\fR - Start a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1
index b417dd8a7e5e13..f1c705a06eb865 100644
--- a/deps/npm/man/man1/npm-stop.1
+++ b/deps/npm/man/man1/npm-stop.1
@@ -1,4 +1,4 @@
-.TH "NPM-STOP" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-STOP" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-stop\fR - Stop a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1
index b48019f33e5249..829de3ec393217 100644
--- a/deps/npm/man/man1/npm-team.1
+++ b/deps/npm/man/man1/npm-team.1
@@ -1,4 +1,4 @@
-.TH "NPM-TEAM" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-TEAM" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-team\fR - Manage organization teams and team memberships
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1
index b06b0b1ff8eb11..4ee5931a296ffa 100644
--- a/deps/npm/man/man1/npm-test.1
+++ b/deps/npm/man/man1/npm-test.1
@@ -1,4 +1,4 @@
-.TH "NPM-TEST" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-TEST" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-test\fR - Test a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1
index c31030d09f1e59..62c1f741787b64 100644
--- a/deps/npm/man/man1/npm-token.1
+++ b/deps/npm/man/man1/npm-token.1
@@ -1,4 +1,4 @@
-.TH "NPM-TOKEN" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-TOKEN" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-token\fR - Manage your authentication tokens
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-trust.1 b/deps/npm/man/man1/npm-trust.1
index 2b2223c9384307..0b361c2fcb848f 100644
--- a/deps/npm/man/man1/npm-trust.1
+++ b/deps/npm/man/man1/npm-trust.1
@@ -1,11 +1,11 @@
-.TH "NPM-TRUST" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-TRUST" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-trust\fR - Manage trusted publishing relationships between packages and CI/CD providers
 .SS "Synopsis"
 .P
 .RS 2
 .nf
-npm trust
+
 .fi
 .RE
 .P
diff --git a/deps/npm/man/man1/npm-undeprecate.1 b/deps/npm/man/man1/npm-undeprecate.1
index 7fccdf4d79b87b..1908fbef2da9dd 100644
--- a/deps/npm/man/man1/npm-undeprecate.1
+++ b/deps/npm/man/man1/npm-undeprecate.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNDEPRECATE" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-UNDEPRECATE" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-undeprecate\fR - Undeprecate a version of a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1
index 8c2645515bf469..69b1a0e4254fec 100644
--- a/deps/npm/man/man1/npm-uninstall.1
+++ b/deps/npm/man/man1/npm-uninstall.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNINSTALL" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-UNINSTALL" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-uninstall\fR - Remove a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1
index debc77cae0b8cd..107cfef94e739d 100644
--- a/deps/npm/man/man1/npm-unpublish.1
+++ b/deps/npm/man/man1/npm-unpublish.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNPUBLISH" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-UNPUBLISH" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-unpublish\fR - Remove a package from the registry
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-unstar.1 b/deps/npm/man/man1/npm-unstar.1
index 48f1e1e60112e4..de0398b60d84d2 100644
--- a/deps/npm/man/man1/npm-unstar.1
+++ b/deps/npm/man/man1/npm-unstar.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNSTAR" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-UNSTAR" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-unstar\fR - Remove an item from your favorite packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1
index 6444774c6aee1e..09fa88433aac0c 100644
--- a/deps/npm/man/man1/npm-update.1
+++ b/deps/npm/man/man1/npm-update.1
@@ -1,4 +1,4 @@
-.TH "NPM-UPDATE" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-UPDATE" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-update\fR - Update packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1
index fa5c13186c76fd..cd0ddfc1c473e3 100644
--- a/deps/npm/man/man1/npm-version.1
+++ b/deps/npm/man/man1/npm-version.1
@@ -1,4 +1,4 @@
-.TH "NPM-VERSION" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-VERSION" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-version\fR - Bump a package version
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1
index a8b7f368ddd0c4..8b3659188303d3 100644
--- a/deps/npm/man/man1/npm-view.1
+++ b/deps/npm/man/man1/npm-view.1
@@ -1,4 +1,4 @@
-.TH "NPM-VIEW" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-VIEW" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-view\fR - View registry info
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1
index ee79598fadc52f..92f4f5820566a5 100644
--- a/deps/npm/man/man1/npm-whoami.1
+++ b/deps/npm/man/man1/npm-whoami.1
@@ -1,4 +1,4 @@
-.TH "NPM-WHOAMI" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-WHOAMI" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-whoami\fR - Display npm username
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1
index 8c2522323757ea..60a0cdb60876ac 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -1,4 +1,4 @@
-.TH "NPM" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPM" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm\fR - javascript package manager
 .SS "Synopsis"
@@ -12,7 +12,7 @@ npm
 Note: This command is unaware of workspaces.
 .SS "Version"
 .P
-11.11.0
+11.11.1
 .SS "Description"
 .P
 npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency conflicts intelligently.
diff --git a/deps/npm/man/man1/npx.1 b/deps/npm/man/man1/npx.1
index ac1e6a4b2a30e6..ec515d0d41969d 100644
--- a/deps/npm/man/man1/npx.1
+++ b/deps/npm/man/man1/npx.1
@@ -1,4 +1,4 @@
-.TH "NPX" "1" "February 2026" "NPM@11.11.0" ""
+.TH "NPX" "1" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpx\fR - Run a command from a local or remote npm package
 .SS "Synopsis"
diff --git a/deps/npm/man/man5/folders.5 b/deps/npm/man/man5/folders.5
index dfbffb819d79b6..bf013eaf6aa8e5 100644
--- a/deps/npm/man/man5/folders.5
+++ b/deps/npm/man/man5/folders.5
@@ -1,4 +1,4 @@
-.TH "FOLDERS" "5" "February 2026" "NPM@11.11.0" ""
+.TH "FOLDERS" "5" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBFolders\fR - Folder structures used by npm
 .SS "Description"
diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5
index 1ed6027eb63623..dcc1668bc5df71 100644
--- a/deps/npm/man/man5/install.5
+++ b/deps/npm/man/man5/install.5
@@ -1,4 +1,4 @@
-.TH "INSTALL" "5" "February 2026" "NPM@11.11.0" ""
+.TH "INSTALL" "5" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBInstall\fR - Download and install node and npm
 .SS "Description"
diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5
index dfbffb819d79b6..bf013eaf6aa8e5 100644
--- a/deps/npm/man/man5/npm-global.5
+++ b/deps/npm/man/man5/npm-global.5
@@ -1,4 +1,4 @@
-.TH "FOLDERS" "5" "February 2026" "NPM@11.11.0" ""
+.TH "FOLDERS" "5" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBFolders\fR - Folder structures used by npm
 .SS "Description"
diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5
index bae7f6290e798a..c736becf20b453 100644
--- a/deps/npm/man/man5/npm-json.5
+++ b/deps/npm/man/man5/npm-json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE.JSON" "5" "February 2026" "NPM@11.11.0" ""
+.TH "PACKAGE.JSON" "5" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBpackage.json\fR - Specifics of npm's package.json handling
 .SS "Description"
diff --git a/deps/npm/man/man5/npm-shrinkwrap-json.5 b/deps/npm/man/man5/npm-shrinkwrap-json.5
index 4a6d0d279330a0..e257df187cec9b 100644
--- a/deps/npm/man/man5/npm-shrinkwrap-json.5
+++ b/deps/npm/man/man5/npm-shrinkwrap-json.5
@@ -1,4 +1,4 @@
-.TH "NPM-SHRINKWRAP.JSON" "5" "February 2026" "NPM@11.11.0" ""
+.TH "NPM-SHRINKWRAP.JSON" "5" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBnpm-shrinkwrap.json\fR - A publishable lockfile
 .SS "Description"
diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5
index f788802907bef4..5d4dc6a0761202 100644
--- a/deps/npm/man/man5/npmrc.5
+++ b/deps/npm/man/man5/npmrc.5
@@ -1,4 +1,4 @@
-.TH ".NPMRC" "5" "February 2026" "NPM@11.11.0" ""
+.TH ".NPMRC" "5" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fB.npmrc\fR - The npm config files
 .SS "Description"
diff --git a/deps/npm/man/man5/package-json.5 b/deps/npm/man/man5/package-json.5
index bae7f6290e798a..c736becf20b453 100644
--- a/deps/npm/man/man5/package-json.5
+++ b/deps/npm/man/man5/package-json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE.JSON" "5" "February 2026" "NPM@11.11.0" ""
+.TH "PACKAGE.JSON" "5" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBpackage.json\fR - Specifics of npm's package.json handling
 .SS "Description"
diff --git a/deps/npm/man/man5/package-lock-json.5 b/deps/npm/man/man5/package-lock-json.5
index d95af3d209fe33..d904c97f93bd20 100644
--- a/deps/npm/man/man5/package-lock-json.5
+++ b/deps/npm/man/man5/package-lock-json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE-LOCK.JSON" "5" "February 2026" "NPM@11.11.0" ""
+.TH "PACKAGE-LOCK.JSON" "5" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBpackage-lock.json\fR - A manifestation of the manifest
 .SS "Description"
diff --git a/deps/npm/man/man7/config.7 b/deps/npm/man/man7/config.7
index 6fa65fc4a6cf9a..8920b050503512 100644
--- a/deps/npm/man/man7/config.7
+++ b/deps/npm/man/man7/config.7
@@ -1,4 +1,4 @@
-.TH "CONFIG" "7" "February 2026" "NPM@11.11.0" ""
+.TH "CONFIG" "7" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBConfig\fR - About npm configuration
 .SS "Description"
diff --git a/deps/npm/man/man7/dependency-selectors.7 b/deps/npm/man/man7/dependency-selectors.7
index 6f81407c07bea7..e78b647eec364f 100644
--- a/deps/npm/man/man7/dependency-selectors.7
+++ b/deps/npm/man/man7/dependency-selectors.7
@@ -1,4 +1,4 @@
-.TH "SELECTORS" "7" "February 2026" "NPM@11.11.0" ""
+.TH "SELECTORS" "7" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBSelectors\fR - Dependency Selector Syntax & Querying
 .SS "Description"
diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7
index 888e6ab1e0f981..1e77c8a5a3b013 100644
--- a/deps/npm/man/man7/developers.7
+++ b/deps/npm/man/man7/developers.7
@@ -1,4 +1,4 @@
-.TH "DEVELOPERS" "7" "February 2026" "NPM@11.11.0" ""
+.TH "DEVELOPERS" "7" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBDevelopers\fR - Developer guide
 .SS "Description"
diff --git a/deps/npm/man/man7/logging.7 b/deps/npm/man/man7/logging.7
index 41b6b0b1799c12..58e9adca8469ad 100644
--- a/deps/npm/man/man7/logging.7
+++ b/deps/npm/man/man7/logging.7
@@ -1,4 +1,4 @@
-.TH "LOGGING" "7" "February 2026" "NPM@11.11.0" ""
+.TH "LOGGING" "7" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBLogging\fR - Why, What & How we Log
 .SS "Description"
diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7
index dbebbe0bd09973..5883ba259fc68c 100644
--- a/deps/npm/man/man7/orgs.7
+++ b/deps/npm/man/man7/orgs.7
@@ -1,4 +1,4 @@
-.TH "ORGANIZATIONS" "7" "February 2026" "NPM@11.11.0" ""
+.TH "ORGANIZATIONS" "7" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBOrganizations\fR - Working with teams & organizations
 .SS "Description"
diff --git a/deps/npm/man/man7/package-spec.7 b/deps/npm/man/man7/package-spec.7
index 2e4c1e0ddf5035..ec00504169cfb9 100644
--- a/deps/npm/man/man7/package-spec.7
+++ b/deps/npm/man/man7/package-spec.7
@@ -1,4 +1,4 @@
-.TH "SPEC" "7" "February 2026" "NPM@11.11.0" ""
+.TH "SPEC" "7" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBspec\fR - Package name specifier
 .SS "Description"
diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7
index 7ea6e6ced1a911..05de53d3513eb3 100644
--- a/deps/npm/man/man7/registry.7
+++ b/deps/npm/man/man7/registry.7
@@ -1,4 +1,4 @@
-.TH "REGISTRY" "7" "February 2026" "NPM@11.11.0" ""
+.TH "REGISTRY" "7" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBRegistry\fR - The JavaScript Package Registry
 .SS "Description"
diff --git a/deps/npm/man/man7/removal.7 b/deps/npm/man/man7/removal.7
index 2e9b4ea94e581a..b375f99e64187c 100644
--- a/deps/npm/man/man7/removal.7
+++ b/deps/npm/man/man7/removal.7
@@ -1,4 +1,4 @@
-.TH "REMOVAL" "7" "February 2026" "NPM@11.11.0" ""
+.TH "REMOVAL" "7" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBRemoval\fR - Cleaning the slate
 .SS "Synopsis"
diff --git a/deps/npm/man/man7/scope.7 b/deps/npm/man/man7/scope.7
index 70f869a059961e..5e1e8414884bf5 100644
--- a/deps/npm/man/man7/scope.7
+++ b/deps/npm/man/man7/scope.7
@@ -1,4 +1,4 @@
-.TH "SCOPE" "7" "February 2026" "NPM@11.11.0" ""
+.TH "SCOPE" "7" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBScope\fR - Scoped packages
 .SS "Description"
diff --git a/deps/npm/man/man7/scripts.7 b/deps/npm/man/man7/scripts.7
index 561bea6c784a7e..809b611b147d4e 100644
--- a/deps/npm/man/man7/scripts.7
+++ b/deps/npm/man/man7/scripts.7
@@ -1,4 +1,4 @@
-.TH "SCRIPTS" "7" "February 2026" "NPM@11.11.0" ""
+.TH "SCRIPTS" "7" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBScripts\fR - How npm handles the "scripts" field
 .SS "Description"
@@ -319,9 +319,6 @@ For more details, see:
 \fBDiscussion about script working directory reliability in npm v6 and earlier\fR \fI\(lahttps://github.com/npm/npm/issues/12356\(ra\fR
 .RE 0
 
-.SS "User"
-.P
-When npm is run as root, scripts are always run with the effective uid and gid of the working directory owner.
 .SS "Environment"
 .P
 Package scripts run in an environment where many pieces of information are made available regarding the setup of npm and the current state of the process.
diff --git a/deps/npm/man/man7/workspaces.7 b/deps/npm/man/man7/workspaces.7
index a8a8c4b0c8cedd..175fc466578ba4 100644
--- a/deps/npm/man/man7/workspaces.7
+++ b/deps/npm/man/man7/workspaces.7
@@ -1,4 +1,4 @@
-.TH "WORKSPACES" "7" "February 2026" "NPM@11.11.0" ""
+.TH "WORKSPACES" "7" "March 2026" "NPM@11.11.1" ""
 .SH "NAME"
 \fBWorkspaces\fR - Working with workspaces
 .SS "Description"
@@ -90,28 +90,26 @@ npm install abbrev -w a
 .P
 \fBAdding a workspace as a dependency of another workspace:\fR
 .P
-If you want to add workspace \fBb\fR as a dependency of workspace \fBa\fR, you can use the workspace protocol in the dependency specifier:
+The same approach works when adding one workspace as a dependency of another. If you want to add workspace \fBb\fR as a dependency of workspace \fBa\fR, run:
 .P
 .RS 2
 .nf
-npm install b@workspace:* -w a
+npm install b -w a
 .fi
 .RE
 .P
-This will add an entry to workspace \fBa\fR's \fBpackage.json\fR like:
+npm will detect that \fBb\fR is a workspace and automatically symlink it rather than fetching it from the registry. The resulting entry in workspace \fBa\fR's \fBpackage.json\fR will use a standard version range:
 .P
 .RS 2
 .nf
 {
   "dependencies": {
-    "b": "workspace:*"
+    "b": "^1.0.0"
   }
 }
 .fi
 .RE
 .P
-The \fBworkspace:\fR protocol tells npm to link to the local workspace rather than fetching from the registry. The \fB*\fR version means it will use whatever version is defined in workspace \fBb\fR's \fBpackage.json\fR.
-.P
 Note: other installing commands such as \fBuninstall\fR, \fBci\fR, etc will also respect the provided \fBworkspace\fR configuration.
 .SS "Using workspaces"
 .P
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js
index 8da64ce965b7ea..121ad0effc8f6d 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js
@@ -1,71 +1,103 @@
-const _makeIdealGraph = Symbol('makeIdealGraph')
-const _createIsolatedTree = Symbol.for('createIsolatedTree')
 const { mkdirSync } = require('node:fs')
 const pacote = require('pacote')
 const { join } = require('node:path')
 const { depth } = require('treeverse')
 const crypto = require('node:crypto')
+const { IsolatedNode, IsolatedLink } = require('../isolated-classes.js')
 
-// cache complicated function results
-const memoize = (fn) => {
-  const memo = new Map()
-  return async function (arg) {
-    const key = arg
-    if (memo.has(key)) {
-      return memo.get(key)
-    }
-    const result = {}
-    memo.set(key, result)
-    await fn(result, arg)
-    return result
-  }
+// generate short hash key based on the dependency tree starting at this node
+const getKey = (startNode) => {
+  const deps = []
+  const branch = []
+  depth({
+    tree: startNode,
+    getChildren: node => node.dependencies,
+    visit: node => {
+      branch.push(`${node.packageName}@${node.version}`)
+      deps.push(`${branch.join('->')}::${node.resolved}`)
+    },
+    leave: () => {
+      branch.pop()
+    },
+  })
+  deps.sort()
+  // TODO these replaces were originally to deal with node 14 not supporting base64url and likely don't need to happen anymore
+  // Changing this is a pretty significant breaking change, but removing parts of the hash increases collision possibilities (even if slight).
+  const hash = crypto.createHash('shake256', { outputLength: 16 })
+    .update(deps.join(','))
+    .digest('base64')
+    .replace(/\+/g, '-')
+    .replace(/\//g, '_')
+    .replace(/=+$/m, '')
+  return `${startNode.packageName}@${startNode.version}-${hash}`
 }
 
 module.exports = cls => class IsolatedReifier extends cls {
+  #externalProxies = new Map()
+  #omit = new Set()
+  #rootDeclaredDeps = new Set()
+  #processedEdges = new Set()
+  #workspaceProxies = new Map()
+
+  #generateChild (node, location, pkg, isInStore, root) {
+    const newChild = new IsolatedNode({
+      isInStore,
+      location,
+      name: node.packageName || node.name,
+      optional: node.optional,
+      package: pkg,
+      parent: root,
+      path: join(this.idealGraph.localPath, location),
+      resolved: node.resolved,
+      root,
+    })
+    // XXX top is from place-dep not lib/node.js
+    newChild.top = { path: this.idealGraph.localPath }
+    root.children.set(newChild.location, newChild)
+    root.inventory.set(newChild.location, newChild)
+  }
+
   /**
    * Create an ideal graph.
    *
    * An implementation of npm RFC-0042
    * https://github.com/npm/rfcs/blob/main/accepted/0042-isolated-mode.md
    *
-   * This entire file should be considered technical debt that will be resolved
-   * with an Arborist refactor or rewrite. Embedded logic in Nodes and Links,
-   * and the incremental state of building trees and reifying contains too many
-   * assumptions to do a linked mode properly.
+   * This entire file should be considered technical debt that will be resolved with an Arborist refactor or rewrite.
+   * Embedded logic in Nodes and Links, and the incremental state of building trees and reifying contains too many assumptions to do a linked mode properly.
    *
-   * Instead, this approach takes a tree built from build-ideal-tree, and
-   * returns a new tree-like structure without the embedded logic of Node and
-   * Link classes.
+   * Instead, this approach takes a tree built from build-ideal-tree, and returns a new tree-like structure without the embedded logic of Node and Link classes.
    *
-   * Since the RFC requires leaving the package-lock in place, this approach
-   * temporarily replaces the tree state for a couple of steps of reifying.
+   * Since the RFC requires leaving the package-lock in place, this approach temporarily replaces the tree state for a couple of steps of reifying.
    *
    **/
-  async [_makeIdealGraph] (options) {
-    /* Make sure that the ideal tree is build as the rest of
-     * the algorithm depends on it.
-     */
-    const bitOpt = {
-      ...options,
-      complete: false,
-    }
-    await this.buildIdealTree(bitOpt)
+  async makeIdealGraph () {
     const idealTree = this.idealTree
+    this.#omit = new Set(this.options.omit)
+    const omit = this.#omit
 
-    this.rootNode = {}
-    const root = this.rootNode
-    this.counter = 0
+    // npm auto-creates 'workspace' edges from root to all workspaces.
+    // For isolated/linked mode, only include workspaces that root explicitly declares as dependencies.
+    // When omitting dep types, exclude those from the declared set so their workspaces aren't hoisted.
+    const rootPkg = idealTree.package
+    this.#rootDeclaredDeps = new Set(Object.keys(Object.assign({},
+      rootPkg.dependencies,
+      (!omit.has('dev') && rootPkg.devDependencies),
+      (!omit.has('optional') && rootPkg.optionalDependencies),
+      (!omit.has('peer') && rootPkg.peerDependencies)
+    )))
 
-    // memoize to cache generating proxy Nodes
-    this.externalProxyMemo = memoize(this.externalProxy.bind(this))
-    this.workspaceProxyMemo = memoize(this.workspaceProxy.bind(this))
+    // XXX this sometimes acts like a node too
+    this.idealGraph = {
+      external: [],
+      isProjectRoot: true,
+      localLocation: idealTree.location,
+      localPath: idealTree.path,
+      path: idealTree.path,
+    }
+    this.counter = 0
 
-    root.external = []
-    root.isProjectRoot = true
-    root.localLocation = idealTree.location
-    root.localPath = idealTree.path
-    root.workspaces = await Promise.all(
-      Array.from(idealTree.fsChildren.values(), this.workspaceProxyMemo))
+    this.idealGraph.workspaces = await Promise.all(Array.from(idealTree.fsChildren.values(), w => this.#workspaceProxy(w)))
     const processed = new Set()
     const queue = [idealTree, ...idealTree.fsChildren]
     while (queue.length !== 0) {
@@ -74,32 +106,44 @@ module.exports = cls => class IsolatedReifier extends cls {
         continue
       }
       processed.add(next.location)
-      next.edgesOut.forEach(e => {
-        if (!e.to || (next.package.bundleDependencies || next.package.bundledDependencies || []).includes(e.to.name)) {
-          return
+      next.edgesOut.forEach(edge => {
+        if (edge.to && !(next.package.bundleDependencies || next.package.bundledDependencies || []).includes(edge.to.name) && !edge.to.shouldOmit?.(omit)) {
+          queue.push(edge.to)
         }
-        queue.push(e.to)
       })
-      if (!next.isProjectRoot && !next.isWorkspace && !next.inert) {
-        root.external.push(await this.externalProxyMemo(next))
+      // local `file:` deps are in fsChildren but are not workspaces.
+      // they are already handled as workspace-like proxies above and should not go through the external/store extraction path.
+      if (!next.isProjectRoot && !next.isWorkspace && !next.inert && !idealTree.fsChildren.has(next) && !idealTree.fsChildren.has(next.target)) {
+        this.idealGraph.external.push(await this.#externalProxy(next))
       }
     }
 
-    await this.assignCommonProperties(idealTree, root)
-
-    this.idealGraph = root
+    await this.#assignCommonProperties(idealTree, this.idealGraph)
   }
 
-  async workspaceProxy (result, node) {
+  async #workspaceProxy (node) {
+    if (this.#workspaceProxies.has(node)) {
+      return this.#workspaceProxies.get(node)
+    }
+    const result = {}
+    // XXX this goes recursive if we don't set here because assignCommonProperties also calls this.#workspaceProxy
+    this.#workspaceProxies.set(node, result)
     result.localLocation = node.location
     result.localPath = node.path
     result.isWorkspace = true
     result.resolved = node.resolved
-    await this.assignCommonProperties(node, result)
+    await this.#assignCommonProperties(node, result)
+    return result
   }
 
-  async externalProxy (result, node) {
-    await this.assignCommonProperties(node, result)
+  async #externalProxy (node) {
+    if (this.#externalProxies.has(node)) {
+      return this.#externalProxies.get(node)
+    }
+    const result = {}
+    // XXX this goes recursive if we don't set here because assignCommonProperties also calls this.#externalProxy
+    this.#externalProxies.set(node, result)
+    await this.#assignCommonProperties(node, result, !node.hasShrinkwrap)
     if (node.hasShrinkwrap) {
       const dir = join(
         node.root.path,
@@ -108,8 +152,7 @@ module.exports = cls => class IsolatedReifier extends cls {
         `${node.packageName}@${node.version}`
       )
       mkdirSync(dir, { recursive: true })
-      // TODO this approach feels wrong
-      // and shouldn't be necessary for shrinkwraps
+      // TODO this approach feels wrong and shouldn't be necessary for shrinkwraps
       await pacote.extract(node.resolved, dir, {
         ...this.options,
         resolved: node.resolved,
@@ -117,65 +160,100 @@ module.exports = cls => class IsolatedReifier extends cls {
       })
       const Arborist = this.constructor
       const arb = new Arborist({ ...this.options, path: dir })
-      await arb[_makeIdealGraph]({ dev: false })
-      this.rootNode.external.push(...arb.idealGraph.external)
-      arb.idealGraph.external.forEach(e => {
-        e.root = this.rootNode
-        e.id = `${node.id}=>${e.id}`
+      // Make sure that the ideal tree is build as the rest of the algorithm depends on it.
+      await arb.buildIdealTree({
+        complete: false,
+        dev: false,
       })
+      await arb.makeIdealGraph()
+      this.idealGraph.external.push(...arb.idealGraph.external)
+      for (const edge of arb.idealGraph.external) {
+        edge.root = this.idealGraph
+        edge.id = `${node.id}=>${edge.id}`
+      }
       result.localDependencies = []
       result.externalDependencies = arb.idealGraph.externalDependencies
       result.externalOptionalDependencies = arb.idealGraph.externalOptionalDependencies
       result.dependencies = [
         ...result.externalDependencies,
-        ...result.localDependencies,
         ...result.externalOptionalDependencies,
       ]
     }
     result.optional = node.optional
     result.resolved = node.resolved
     result.version = node.version
+    return result
   }
 
-  async assignCommonProperties (node, result) {
-    function validEdgesOut (node) {
-      return [...node.edgesOut.values()].filter(e => e.to && e.to.target && !(node.package.bundledDependencies || node.package.bundleDependencies || []).includes(e.to.name))
+  async #assignCommonProperties (node, result, populateDeps = true) {
+    result.root = this.idealGraph
+    // XXX does anything need this?
+    result.id = this.counter++
+    /* istanbul ignore next - packageName is always set for real packages */
+    result.name = result.isWorkspace ? (node.packageName || node.name) : node.name
+    result.packageName = node.packageName || node.name
+    result.package = { ...node.package }
+    result.package.bundleDependencies = undefined
+
+    if (!populateDeps) {
+      return
+    }
+
+    let edges = [...node.edgesOut.values()].filter(edge =>
+      edge.to?.target &&
+      !(node.package.bundledDependencies || node.package.bundleDependencies)?.includes(edge.to.name)
+    )
+
+    // Only omit edge types for root and workspace nodes (matching shouldOmit scope)
+    if ((node.isProjectRoot || node.isWorkspace) && this.#omit.size) {
+      edges = edges.filter(edge => {
+        if (edge.dev && this.#omit.has('dev')) {
+          return false
+        }
+        if (edge.optional && this.#omit.has('optional')) {
+          return false
+        }
+        if (edge.peer && this.#omit.has('peer')) {
+          return false
+        }
+        return true
+      })
     }
-    const edges = validEdgesOut(node)
-    const optionalDeps = edges.filter(e => e.optional).map(e => e.to.target)
-    const nonOptionalDeps = edges.filter(e => !e.optional).map(e => e.to.target)
 
-    // When legacyPeerDeps is enabled, peer dep edges are not created on the
-    // node. Resolve them from the tree so they get symlinked in the store.
+    let nonOptionalDeps = edges.filter(edge => !edge.optional).map(edge => edge.to.target)
+
+    // npm auto-creates 'workspace' edges from root to all workspaces.
+    // For isolated/linked mode, only include workspaces that root explicitly declares as dependencies.
+    if (node.isProjectRoot) {
+      nonOptionalDeps = nonOptionalDeps.filter(n => !n.isWorkspace || this.#rootDeclaredDeps.has(n.packageName))
+    }
+
+    // When legacyPeerDeps is enabled, peer dep edges are not created on the node.
+    // Resolve them from the tree so they get symlinked in the store.
     const peerDeps = node.package.peerDependencies
     if (peerDeps && node.legacyPeerDeps) {
-      const edgeNames = new Set(edges.map(e => e.name))
-      for (const peerName of Object.keys(peerDeps)) {
+      const edgeNames = new Set(edges.map(edge => edge.name))
+      for (const peerName in peerDeps) {
         if (!edgeNames.has(peerName)) {
           const resolved = node.resolve(peerName)
           if (resolved && resolved !== node && !resolved.inert) {
-            nonOptionalDeps.push(resolved)
+            nonOptionalDeps.push(resolved.target)
           }
         }
       }
     }
 
-    result.localDependencies = await Promise.all(nonOptionalDeps.filter(n => n.isWorkspace).map(this.workspaceProxyMemo))
-    result.externalDependencies = await Promise.all(nonOptionalDeps.filter(n => !n.isWorkspace && !n.inert).map(this.externalProxyMemo))
-    result.externalOptionalDependencies = await Promise.all(optionalDeps.filter(n => !n.inert).map(this.externalProxyMemo))
+    // local `file:` deps (non-workspace fsChildren) should be treated as local dependencies, not external, so they get symlinked directly instead of being extracted into the store.
+    const isLocal = (n) => n.isWorkspace || node.fsChildren?.has(n)
+    const optionalDeps = edges.filter(edge => edge.optional).map(edge => edge.to.target)
+    result.localDependencies = await Promise.all(nonOptionalDeps.filter(isLocal).map(n => this.#workspaceProxy(n)))
+    result.externalDependencies = await Promise.all(nonOptionalDeps.filter(n => !isLocal(n) && !n.inert).map(n => this.#externalProxy(n)))
+    result.externalOptionalDependencies = await Promise.all(optionalDeps.filter(n => !n.inert).map(n => this.#externalProxy(n)))
     result.dependencies = [
       ...result.externalDependencies,
       ...result.localDependencies,
       ...result.externalOptionalDependencies,
     ]
-    result.root = this.rootNode
-    result.id = this.counter++
-    /* istanbul ignore next - packageName is always set for real packages */
-    result.name = result.isWorkspace ? (node.packageName || node.name) : node.name
-    result.packageName = node.packageName || node.name
-    result.package = { ...node.package }
-    result.package.bundleDependencies = undefined
-    result.hasInstallScript = node.hasInstallScript
   }
 
   async #createBundledTree () {
@@ -217,261 +295,178 @@ module.exports = cls => class IsolatedReifier extends cls {
       nodes.set(to.location, { location: to.location, resolved: to.resolved, name: to.name, optional: to.optional, pkg: { ...to.package, bundleDependencies: undefined } })
       edges.push({ from: from.isRoot ? 'root' : from.location, to: to.location })
 
-      to.edgesOut.forEach(e => {
+      to.edgesOut.forEach(edge => {
         // an edge out should always have a to
         /* istanbul ignore else */
-        if (e.to) {
-          queue.push({ from: e.from, to: e.to })
+        if (edge.to) {
+          queue.push({ from: edge.from, to: edge.to })
         }
       })
     }
     return { edges, nodes }
   }
 
-  async [_createIsolatedTree] () {
-    await this[_makeIdealGraph](this.options)
-
-    const proxiedIdealTree = this.idealGraph
-
+  async createIsolatedTree () {
+    await this.makeIdealGraph()
     const bundledTree = await this.#createBundledTree()
 
-    const treeHash = (startNode) => {
-      // generate short hash based on the dependency tree
-      // starting at this node
-      const deps = []
-      const branch = []
-      depth({
-        tree: startNode,
-        getChildren: node => node.dependencies,
-        filter: node => node,
-        visit: node => {
-          branch.push(`${node.packageName}@${node.version}`)
-          deps.push(`${branch.join('->')}::${node.resolved}`)
-        },
-        leave: () => {
-          branch.pop()
-        },
-      })
-      deps.sort()
-      return crypto.createHash('shake256', { outputLength: 16 })
-        .update(deps.join(','))
-        .digest('base64')
-        // Node v14 doesn't support base64url
-        .replace(/\+/g, '-')
-        .replace(/\//g, '_')
-        .replace(/=+$/m, '')
-    }
-
-    const getKey = (idealTreeNode) => {
-      return `${idealTreeNode.packageName}@${idealTreeNode.version}-${treeHash(idealTreeNode)}`
-    }
-
-    const root = {
-      fsChildren: [],
-      integrity: null,
-      inventory: new Map(),
-      isLink: false,
-      isRoot: true,
-      binPaths: [],
-      edgesIn: new Set(),
-      edgesOut: new Map(),
-      hasShrinkwrap: false,
-      parent: null,
-      // TODO: we should probably not reference this.idealTree
-      resolved: this.idealTree.resolved,
-      isTop: true,
-      path: proxiedIdealTree.root.localPath,
-      realpath: proxiedIdealTree.root.localPath,
-      package: proxiedIdealTree.root.package,
-      meta: { loadedFromDisk: false },
-      global: false,
-      isProjectRoot: true,
-      children: [],
-    }
-    // root.inventory.set('', t)
-    // root.meta = this.idealTree.meta
-    // TODO We should mock better the inventory object because it is used by audit-report.js ... maybe
-    root.inventory.query = () => {
-      return []
-    }
+    const root = new IsolatedNode(this.idealGraph)
+    root.root = root
+    root.inventory.set('', root)
     const processed = new Set()
-    proxiedIdealTree.workspaces.forEach(c => {
-      const workspace = {
-        edgesIn: new Set(),
-        edgesOut: new Map(),
-        children: [],
-        hasInstallScript: c.hasInstallScript,
-        binPaths: [],
-        package: c.package,
+    for (const c of this.idealGraph.workspaces) {
+      const wsName = c.packageName
+      // XXX parent? root?
+      const workspace = new IsolatedNode({
         location: c.localLocation,
+        name: wsName,
+        package: c.package,
         path: c.localPath,
-        realpath: c.localPath,
         resolved: c.resolved,
-      }
-      root.fsChildren.push(workspace)
+      })
+      root.fsChildren.add(workspace)
       root.inventory.set(workspace.location, workspace)
-    })
-    const generateChild = (node, location, pkg, inStore) => {
-      const newChild = {
-        global: false,
-        globalTop: false,
-        isProjectRoot: false,
-        isTop: false,
-        location,
-        name: node.packageName || node.name,
-        optional: node.optional,
-        top: { path: proxiedIdealTree.root.localPath },
-        children: [],
-        edgesIn: new Set(),
-        edgesOut: new Map(),
-        binPaths: [],
-        fsChildren: [],
-        /* istanbul ignore next -- emulate Node */
-        getBundler () {
-          return null
-        },
-        hasShrinkwrap: false,
-        inDepBundle: false,
-        integrity: null,
-        isLink: false,
-        isRoot: false,
-        isInStore: inStore,
-        path: join(proxiedIdealTree.root.localPath, location),
-        realpath: join(proxiedIdealTree.root.localPath, location),
-        resolved: node.resolved,
-        version: pkg.version,
-        package: pkg,
+      root.workspaces.set(wsName, workspace.path)
+
+      // Create workspace Link. For root declared deps, link at root node_modules/. For undeclared deps, link at the workspace's own node_modules/ (self-link).
+      const isDeclared = this.#rootDeclaredDeps.has(wsName)
+      const wsLink = new IsolatedLink({
+        location: isDeclared ? join('node_modules', wsName) : join(c.localLocation, 'node_modules', wsName),
+        name: wsName,
+        package: workspace.package,
+        parent: root,
+        path: isDeclared ? join(root.path, 'node_modules', wsName) : join(root.path, c.localLocation, 'node_modules', wsName),
+        realpath: workspace.path,
+        root,
+        target: workspace,
+      })
+      if (!isDeclared) {
+        workspace.children.set(wsName, wsLink)
       }
-      newChild.target = newChild
-      root.children.push(newChild)
-      root.inventory.set(newChild.location, newChild)
+      root.children.set(wsName, wsLink)
+      root.inventory.set(wsLink.location, wsLink)
+      workspace.linksIn.add(wsLink)
     }
-    proxiedIdealTree.external.forEach(c => {
+
+    this.idealGraph.external.forEach(c => {
       const key = getKey(c)
       if (processed.has(key)) {
         return
       }
       processed.add(key)
       const location = join('node_modules', '.store', key, 'node_modules', c.packageName)
-      generateChild(c, location, c.package, true)
+      this.#generateChild(c, location, c.package, true, root)
     })
+
     bundledTree.nodes.forEach(node => {
-      generateChild(node, node.location, node.pkg, false)
+      this.#generateChild(node, node.location, node.pkg, false, root)
     })
-    bundledTree.edges.forEach(e => {
-      const from = e.from === 'root' ? root : root.inventory.get(e.from)
-      const to = root.inventory.get(e.to)
+
+    bundledTree.edges.forEach(edge => {
+      const from = edge.from === 'root' ? root : root.inventory.get(edge.from)
+      const to = root.inventory.get(edge.to)
       // Maybe optional should be propagated from the original edge
-      const edge = { optional: false, from, to }
-      from.edgesOut.set(to.name, edge)
-      to.edgesIn.add(edge)
+      const newEdge = { optional: false, from, to }
+      from.edgesOut.set(to.name, newEdge)
+      to.edgesIn.add(newEdge)
     })
-    const memo = new Set()
 
-    function processEdges (node, externalEdge) {
-      externalEdge = !!externalEdge
-      const key = getKey(node)
-      if (memo.has(key)) {
-        return
-      }
-      memo.add(key)
-
-      let from, nmFolder
-      if (externalEdge) {
-        const fromLocation = join('node_modules', '.store', key, 'node_modules', node.packageName)
-        from = root.children.find(c => c.location === fromLocation)
-        nmFolder = join('node_modules', '.store', key, 'node_modules')
-      } else {
-        from = node.isProjectRoot ? root : root.fsChildren.find(c => c.location === node.localLocation)
-        nmFolder = join(node.localLocation, 'node_modules')
-      }
-      /* istanbul ignore next - strict-peer-deps can exclude nodes from the tree */
-      if (!from) {
-        return
-      }
+    this.#processEdges(this.idealGraph, false, root)
+    for (const node of this.idealGraph.workspaces) {
+      this.#processEdges(node, false, root)
+    }
+    return root
+  }
 
-      const processDeps = (dep, optional, external) => {
-        optional = !!optional
-        external = !!external
+  #processEdges (node, externalEdge, root) {
+    const key = getKey(node)
+    if (this.#processedEdges.has(key)) {
+      return
+    }
+    this.#processedEdges.add(key)
 
-        const location = join(nmFolder, dep.name)
-        const binNames = dep.package.bin && Object.keys(dep.package.bin) || []
-        const toKey = getKey(dep)
+    let from, nmFolder
+    if (externalEdge) {
+      const fromLocation = join('node_modules', '.store', key, 'node_modules', node.packageName)
+      from = root.children.get(fromLocation)
+      nmFolder = join('node_modules', '.store', key, 'node_modules')
+    } else {
+      from = node.isProjectRoot ? root : root.inventory.get(node.localLocation)
+      nmFolder = join(node.localLocation, 'node_modules')
+    }
+    /* istanbul ignore next - strict-peer-deps can exclude nodes from the tree */
+    if (!from) {
+      return
+    }
 
-        let target
-        if (external) {
-          const toLocation = join('node_modules', '.store', toKey, 'node_modules', dep.packageName)
-          target = root.children.find(c => c.location === toLocation)
-        } else {
-          target = root.fsChildren.find(c => c.location === dep.localLocation)
-        }
-        // TODO: we should no-op is an edge has already been created with the same fromKey and toKey
-        /* istanbul ignore next - strict-peer-deps can exclude nodes from the tree */
-        if (!target) {
-          return
-        }
+    for (const dep of node.localDependencies) {
+      this.#processEdges(dep, false, root)
+      // nonOptional, local
+      this.#processDeps(dep, false, false, root, from, nmFolder)
+    }
+    for (const dep of node.externalDependencies) {
+      this.#processEdges(dep, true, root)
+      // nonOptional, external
+      this.#processDeps(dep, false, true, root, from, nmFolder)
+    }
+    for (const dep of node.externalOptionalDependencies) {
+      this.#processEdges(dep, true, root)
+      // optional, external
+      this.#processDeps(dep, true, true, root, from, nmFolder)
+    }
+  }
 
-        binNames.forEach(bn => {
-          target.binPaths.push(join(from.realpath, 'node_modules', '.bin', bn))
-        })
-
-        const link = {
-          global: false,
-          globalTop: false,
-          isProjectRoot: false,
-          edgesIn: new Set(),
-          edgesOut: new Map(),
-          binPaths: [],
-          isTop: false,
-          optional,
-          location: location,
-          path: join(dep.root.localPath, nmFolder, dep.name),
-          realpath: target.path,
-          name: toKey,
-          resolved: dep.resolved,
-          top: { path: dep.root.localPath },
-          children: [],
-          fsChildren: [],
-          isLink: true,
-          isStoreLink: true,
-          isRoot: false,
-          package: { _id: 'abc', bundleDependencies: undefined, deprecated: undefined, bin: target.package.bin, scripts: dep.package.scripts },
-          target,
-        }
-        const newEdge1 = { optional, from, to: link }
-        from.edgesOut.set(dep.name, newEdge1)
-        link.edgesIn.add(newEdge1)
-        const newEdge2 = { optional: false, from: link, to: target }
-        link.edgesOut.set(dep.name, newEdge2)
-        target.edgesIn.add(newEdge2)
-        root.children.push(link)
-      }
+  #processDeps (dep, optional, external, root, from, nmFolder) {
+    const toKey = getKey(dep)
 
-      for (const dep of node.localDependencies) {
-        processEdges(dep, false)
-        // nonOptional, local
-        processDeps(dep, false, false)
-      }
-      for (const dep of node.externalDependencies) {
-        processEdges(dep, true)
-        // nonOptional, external
-        processDeps(dep, false, true)
-      }
-      for (const dep of node.externalOptionalDependencies) {
-        processEdges(dep, true)
-        // optional, external
-        processDeps(dep, true, true)
+    let target
+    if (external) {
+      const toLocation = join('node_modules', '.store', toKey, 'node_modules', dep.packageName)
+      target = root.children.get(toLocation)
+    } else {
+      target = root.inventory.get(dep.localLocation)
+    }
+    // TODO: we should no-op is an edge has already been created with the same fromKey and toKey
+    /* istanbul ignore next - strict-peer-deps can exclude nodes from the tree */
+    if (!target) {
+      return
+    }
+
+    if (dep.package.bin) {
+      for (const bn in dep.package.bin) {
+        target.binPaths.push(join(dep.root.localPath, nmFolder, '.bin', bn))
       }
     }
 
-    processEdges(proxiedIdealTree, false)
-    for (const node of proxiedIdealTree.workspaces) {
-      processEdges(node, false)
+    const pkg = {
+      _id: dep.package._id,
+      bin: target.package.bin,
+      bundleDependencies: undefined,
+      deprecated: undefined,
+      scripts: dep.package.scripts,
+      version: dep.package.version,
     }
-    root.children.forEach(c => c.parent = root)
-    root.children.forEach(c => c.root = root)
-    root.root = root
-    root.target = root
-    return root
+    const link = new IsolatedLink({
+      isStoreLink: true,
+      location: join(nmFolder, dep.name),
+      name: toKey,
+      optional,
+      parent: root,
+      package: pkg,
+      path: join(dep.root.localPath, nmFolder, dep.name),
+      realpath: target.path,
+      resolved: external ? `file:.store/${toKey}/node_modules/${dep.packageName}` : dep.resolved,
+      root,
+      target,
+    })
+    // XXX top is from place-dep not lib/link.js
+    link.top = { path: dep.root.localPath }
+    const newEdge1 = { optional, from, to: link }
+    from.edgesOut.set(dep.name, newEdge1)
+    link.edgesIn.add(newEdge1)
+    const newEdge2 = { optional: false, from: link, to: target }
+    link.edgesOut.set(dep.name, newEdge2)
+    target.edgesIn.add(newEdge2)
+    root.children.set(link.location, link)
   }
 }
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js
index 317cfc1df8a728..d4cce1ac02776c 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js
@@ -9,6 +9,7 @@ const runScript = require('@npmcli/run-script')
 const { callLimit: promiseCallLimit } = require('promise-call-limit')
 const { depth: dfwalk } = require('treeverse')
 const { isNodeGypPackage, defaultGypInstallScript } = require('@npmcli/node-gyp')
+const { promiseRetry } = require('@gar/promise-retry')
 const { log, time } = require('proc-log')
 const { resolve } = require('node:path')
 
@@ -381,13 +382,20 @@ module.exports = cls => class Builder extends cls {
 
     const timeEnd = time.start(`build:link:${node.location}`)
 
-    const p = binLinks({
+    // On Windows, antivirus/indexer can transiently lock files, causing EPERM/EACCES/EBUSY on the rename inside write-file-atomic (used by bin-links/fix-bin.js), so, retry with backoff.
+    const p = promiseRetry((retry) => binLinks({
       pkg: node.package,
       path: node.path,
       top: !!(node.isTop || node.globalTop),
       force: this.options.force,
       global: !!node.globalTop,
-    })
+    }).catch(/* istanbul ignore next - Windows-only transient antivirus locks */ err => {
+      if (process.platform === 'win32' &&
+          (err.code === 'EPERM' || err.code === 'EACCES' || err.code === 'EBUSY')) {
+        return retry(err)
+      }
+      throw err
+    }), { retries: 5, minTimeout: 500 })
 
     await (this.#doHandleOptionalFailure
       ? this[_handleOptionalFailure](node, p)
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js
index 5f376e94a4cecf..a20e936666cfad 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js
@@ -8,9 +8,10 @@ const promiseAllRejectLate = require('promise-all-reject-late')
 const runScript = require('@npmcli/run-script')
 const { callLimit: promiseCallLimit } = require('promise-call-limit')
 const { depth: dfwalk } = require('treeverse')
-const { dirname, resolve, relative, join } = require('node:path')
+const { dirname, resolve, relative, join, sep } = require('node:path')
 const { log, time } = require('proc-log')
-const { lstat, mkdir, rm, symlink } = require('node:fs/promises')
+const { existsSync } = require('node:fs')
+const { lstat, mkdir, readdir, rm, symlink } = require('node:fs/promises')
 const { moveFile } = require('@npmcli/fs')
 const { subset, intersects } = require('semver')
 const { walkUp } = require('walk-up-path')
@@ -26,6 +27,7 @@ const retirePath = require('../retire-path.js')
 const treeCheck = require('../tree-check.js')
 const { defaultLockfileVersion } = require('../shrinkwrap.js')
 const { saveTypeMap, hasSubKey } = require('../add-rm-pkg-deps.js')
+const { IsolatedNode, IsolatedLink } = require('../isolated-classes.js')
 
 // Part of steps (steps need refactoring before we can do anything about these)
 const _retireShallowNodes = Symbol.for('retireShallowNodes')
@@ -63,8 +65,6 @@ const _resolvedAdd = Symbol.for('resolvedAdd')
 // used by build-ideal-tree mixin
 const _addNodeToTrashList = Symbol.for('addNodeToTrashList')
 
-const _createIsolatedTree = Symbol.for('createIsolatedTree')
-
 module.exports = cls => class Reifier extends cls {
   #bundleMissing = new Set() // child nodes we'd EXPECT to be included in a bundle, but aren't
   #bundleUnpacked = new Set() // the nodes we unpack to read their bundles
@@ -75,6 +75,7 @@ module.exports = cls => class Reifier extends cls {
   #shrinkwrapInflated = new Set()
   #sparseTreeDirs = new Set()
   #sparseTreeRoots = new Set()
+  #linkedActualForDiff = null
 
   constructor (options) {
     super(options)
@@ -115,16 +116,21 @@ module.exports = cls => class Reifier extends cls {
       // this is currently technical debt which will be resolved in a refactor
       // of Node/Link trees
       log.warn('reify', 'The "linked" install strategy is EXPERIMENTAL and may contain bugs.')
-      this.idealTree = await this[_createIsolatedTree]()
+      this.idealTree = await this.createIsolatedTree()
+      this.#linkedActualForDiff = this.#buildLinkedActualForDiff(
+        this.idealTree, this.actualTree
+      )
     }
     await this[_diffTrees]()
     await this.#reifyPackages()
     if (linked) {
+      await this.#cleanOrphanedStoreEntries()
       // swap back in the idealTree
       // so that the lockfile is preserved
       this.idealTree = oldTree
     }
     await this[_saveIdealTree](options)
+    this.#linkedActualForDiff = null
     // clean inert
     for (const node of this.idealTree.inventory.values()) {
       if (node.inert) {
@@ -146,7 +152,7 @@ module.exports = cls => class Reifier extends cls {
     // was not changed, delete anything in the ideal and not actual.
     // Then we move the entire idealTree over to this.actualTree, and
     // save the hidden lockfile.
-    if (this.diff && this.diff.filterSet.size) {
+    if (this.diff && this.diff.filterSet.size && !linked) {
       const reroot = new Set()
 
       const { filterSet } = this.diff
@@ -422,13 +428,18 @@ module.exports = cls => class Reifier extends cls {
       if (includeWorkspaces) {
         // add all ws nodes to filterNodes
         for (const ws of this.options.workspaces) {
-          const ideal = this.idealTree.children.get && this.idealTree.children.get(ws)
+          const ideal = this.idealTree.children.get(ws)
           if (ideal) {
             filterNodes.push(ideal)
           }
-          const actual = this.actualTree.children.get(ws)
-          if (actual) {
-            filterNodes.push(actual)
+          // Skip actual-side filterNodes when using the linked diff wrapper.
+          // Those nodes have root===actualTree, not root===linkedActualForDiff, and Diff.calculate requires filterNode.root to match actual.
+          // The ideal filterNode alone is sufficient to scope the workspace diff.
+          if (!this.#linkedActualForDiff) {
+            const actual = this.actualTree.children.get(ws)
+            if (actual) {
+              filterNodes.push(actual)
+            }
           }
         }
       }
@@ -450,7 +461,7 @@ module.exports = cls => class Reifier extends cls {
       omit: this.#omit,
       shrinkwrapInflated: this.#shrinkwrapInflated,
       filterNodes,
-      actual: this.actualTree,
+      actual: this.#linkedActualForDiff || this.actualTree,
       ideal: this.idealTree,
     })
 
@@ -573,6 +584,7 @@ module.exports = cls => class Reifier extends cls {
       // if the directory already exists, made will be undefined. if that's the case
       // we don't want to remove it because we aren't the ones who created it so we
       // omit it from the #sparseTreeRoots
+      /* istanbul ignore next -- pre-existing: mkdir returns undefined when dir exists, covered in reify tests but lost in aggregate coverage merge */
       if (made) {
         this.#sparseTreeRoots.add(made)
       }
@@ -789,6 +801,59 @@ module.exports = cls => class Reifier extends cls {
     return join(filePath)
   }
 
+  // Build a flat actual tree wrapper for linked installs so the diff can correctly match store entries that already exist on disk.
+  // The proxy tree from createIsolatedTree() is flat (all children on root), but loadActual() produces a nested tree where store entries are deep link targets.
+  // This wrapper surfaces them at the root level for comparison.
+  #buildLinkedActualForDiff (idealTree, actualTree) {
+    // Combined Map keyed by path (how allChildren() in diff.js keys)
+    const combined = new Map()
+
+    // Create synthetic actual entries for ALL ideal children that exist on disk.
+    // The isolated ideal tree is flat (all entries as root children), but loadActual() produces a nested tree where workspace deps are under fsChildren and store entries are deep link targets.
+    // Synthetic entries ensure the diff compares matching resolved/integrity values (e.g. workspace links have resolved=undefined in the ideal tree but resolved="file:../packages/..." in the actual tree).
+    for (const child of idealTree.children.values()) {
+      if (combined.has(child.path) || !existsSync(child.path)) {
+        continue
+      }
+      let entry
+      if (child.isLink) {
+        entry = new IsolatedLink(child)
+      } else {
+        entry = new IsolatedNode(child)
+      }
+      if (child.isLink && combined.has(child.realpath)) {
+        entry.target = combined.get(child.realpath)
+      }
+      combined.set(child.path, entry)
+    }
+
+    // Proxy .get(name) to original actual tree for filterNodes compatibility
+    // (scoped workspace installs use .get(name), allChildren uses .values())
+    const origGet = actualTree.children.get.bind(actualTree.children)
+    const combinedGet = combined.get.bind(combined)
+    /* istanbul ignore next -- only reached during scoped workspace installs */
+    combined.get = (key) => combinedGet(key) || origGet(key)
+
+    let wrapper
+    /* istanbul ignore next - untested! */
+    if (actualTree.isLink) {
+      wrapper = new IsolatedLink(actualTree)
+    } else {
+      wrapper = new IsolatedNode(actualTree)
+    }
+    wrapper.root = wrapper
+    wrapper.binPaths = actualTree.binPaths
+    wrapper.children = combined
+    wrapper.edgesOut = actualTree.edgesOut
+    // Use empty fsChildren so that allChildren() only picks up entries from the combined map.
+    // The actual fsChildren have real children with different resolved values (e.g. file:../../../node_modules/.store/... vs file:.store/...) that would overwrite our synthetic entries in allChildren().
+    wrapper.fsChildren = new Set()
+    wrapper.integrity = actualTree.integrity
+    wrapper.inventory = actualTree.inventory
+
+    return wrapper
+  }
+
   #registryResolved (resolved) {
     // the default registry url is a magic value meaning "the currently
     // configured registry".
@@ -1247,6 +1312,41 @@ module.exports = cls => class Reifier extends cls {
     timeEnd()
   }
 
+  // After a linked install, scan node_modules/.store/ and remove any directories that are not referenced by the current ideal tree.
+  // Store entries become orphaned when dependencies are updated or removed, because the diff never sees the old store keys.
+  async #cleanOrphanedStoreEntries () {
+    const storeDir = resolve(this.path, 'node_modules', '.store')
+    let entries
+    try {
+      entries = await readdir(storeDir)
+    } catch {
+      return
+    }
+
+    // Collect valid store keys from the isolated ideal tree (location: node_modules/.store/{key}/node_modules/{pkg})
+    const validKeys = new Set()
+    for (const child of this.idealTree.children.values()) {
+      if (child.isInStore) {
+        const key = child.location.split(sep)[2]
+        validKeys.add(key)
+      }
+    }
+
+    const orphaned = entries.filter(e => !validKeys.has(e))
+    if (!orphaned.length) {
+      return
+    }
+
+    log.silly('reify', 'cleaning orphaned store entries', orphaned)
+    await promiseAllRejectLate(
+      orphaned.map(e =>
+        rm(resolve(storeDir, e), { recursive: true, force: true })
+          .catch(/* istanbul ignore next -- rm with force rarely fails */
+            er => log.warn('cleanup', `Failed to remove orphaned store entry ${e}`, er))
+      )
+    )
+  }
+
   // last but not least, we save the ideal tree metadata to the package-lock
   // or shrinkwrap file, and any additions or removals to package.json
   async [_saveIdealTree] (options) {
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js b/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js
index ce274635d3b7ca..3e74e100b6c537 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js
@@ -296,6 +296,8 @@ class AuditReport extends Map {
     if (
       !node.version ||
       node.isRoot ||
+      node.isLink ||
+      node.linksIn?.size > 0 ||
       (this.filterSet && this.filterSet?.size !== 0 && !this.filterSet?.has(node))
     ) {
       return false
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/diff.js b/deps/npm/node_modules/@npmcli/arborist/lib/diff.js
index 465657cc624222..5a20749ad135db 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/diff.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/diff.js
@@ -71,6 +71,7 @@ class Diff {
         tree: filterNode,
         visit: node => filterSet.add(node),
         getChildren: node => {
+          const orig = node
           node = node.target
           const loc = node.location
           const idealNode = ideal.inventory.get(loc)
@@ -87,7 +88,12 @@ class Diff {
             }
           }
 
-          return ideals.concat(actuals)
+          const result = ideals.concat(actuals)
+          // Include link targets so store entries end up in filterSet
+          if (orig.isLink) {
+            result.push(node)
+          }
+          return result
         },
       })
     }
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/inventory.js b/deps/npm/node_modules/@npmcli/arborist/lib/inventory.js
index 7b3f294fdab2c3..5e4a67eeed1032 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/inventory.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/inventory.js
@@ -1,5 +1,4 @@
-// a class to manage an inventory and set of indexes of a set of objects based
-// on specific fields.
+// a class to manage an inventory and set of indexes of a set of objects based on specific fields.
 const { hasOwnProperty } = Object.prototype
 const debug = require('./debug.js')
 
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/isolated-classes.js b/deps/npm/node_modules/@npmcli/arborist/lib/isolated-classes.js
new file mode 100644
index 00000000000000..d9770a386791f5
--- /dev/null
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/isolated-classes.js
@@ -0,0 +1,138 @@
+// Alternate versions of different classes that we use for isolated mode
+const CaseInsensitiveMap = require('./case-insensitive-map.js')
+const { resolve } = require('node:path')
+
+// fake lib/inventory.js
+class IsolatedInventory extends Map {
+  query () {
+    return []
+  }
+}
+
+// fake lib/node.js
+class IsolatedNode {
+  binPaths = []
+  children = new CaseInsensitiveMap()
+  edgesIn = new Set()
+  edgesOut = new CaseInsensitiveMap()
+  fsChildren = new Set()
+  hasShrinkwrap = false
+  integrity = null
+  inventory = new IsolatedInventory()
+  isInStore = false
+  linksIn = new Set()
+  meta = { loadedFromDisk: false }
+  optional = false
+  parent = null
+  root = null
+  tops = new Set()
+  workspaces = new Map()
+
+  constructor (options) {
+    this.location = options.location
+    this.name = options.name
+    this.package = options.package
+    this.path = options.path
+    this.realpath = !this.isLink ? this.path : resolve(options.realpath)
+
+    if (options.parent) {
+      this.parent = options.parent
+    }
+    if (options.resolved) {
+      this.resolved = options.resolved
+    }
+    if (options.root) {
+      this.root = options.root
+    }
+    if (options.isInStore) {
+      this.isInStore = true
+    }
+    if (options.optional) {
+      this.optional = true
+    }
+  }
+
+  get isRoot () {
+    return this === this.root
+  }
+
+  // The idealGraph is where this is set to true
+  get isProjectRoot () {
+    return false
+  }
+
+  get inDepBundle () {
+    return false
+  }
+
+  get isLink () {
+    return false
+  }
+
+  get isTop () {
+    return !this.parent
+  }
+
+  /* istanbul ignore next -- emulate lib/node.js */
+  get global () {
+    return false
+  }
+
+  get globalTop () {
+    return false
+  }
+
+  /* istanbul ignore next -- emulate lib/node.js */
+  set target (t) {
+    // nop
+    // In the real lib/node.js this throws in debug mode
+  }
+
+  get target () {
+    return this
+  }
+
+  /* istanbul ignore next -- emulate lib/node.js */
+  getBundler () {
+    return null
+  }
+
+  /* istanbul ignore next -- emulate lib/node.js */
+  get hasInstallScript () {
+    const { hasInstallScript, scripts } = this.package
+    const { install, preinstall, postinstall } = scripts || {}
+    return !!(hasInstallScript || install || preinstall || postinstall)
+  }
+
+  get version () {
+    return this.package.version
+  }
+}
+
+// fake lib/link.js
+class IsolatedLink extends IsolatedNode {
+  #target
+  isStoreLink = false
+
+  constructor (options) {
+    super(options)
+    this.#target = options.target
+    if (options.isStoreLink) {
+      this.isStoreLink = true
+    }
+  }
+
+  get isLink () {
+    return true
+  }
+
+  set target (t) {
+    this.#target = t
+  }
+
+  get target () {
+    return this.#target
+  }
+}
+
+module.exports = { IsolatedNode, IsolatedLink }
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/node.js b/deps/npm/node_modules/@npmcli/arborist/lib/node.js
index c0891df4af1e4c..451ede1e52cbf6 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/node.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/node.js
@@ -73,35 +73,34 @@ class Node {
   constructor (options) {
     // NB: path can be null if it's a link target
     const {
-      root,
-      path,
-      realpath,
-      parent,
-      error,
-      meta,
-      fsParent,
-      resolved,
-      integrity,
-      // allow setting name explicitly when we haven't set a path yet
-      name,
       children,
+      dev = true,
+      devOptional = true,
+      dummy = false,
+      error,
+      extraneous = true,
       fsChildren,
+      fsParent,
+      global = false,
+      hasShrinkwrap,
+      inert = false,
       installLinks = false,
+      integrity,
+      isInStore = false,
       legacyPeerDeps = false,
       linksIn,
-      isInStore = false,
-      hasShrinkwrap,
-      overrides,
       loadOverrides = false,
-      extraneous = true,
-      dev = true,
+      meta,
+      name, // allow setting name explicitly when we haven't set a path yet
       optional = true,
-      devOptional = true,
+      overrides,
+      parent,
+      path,
       peer = true,
-      global = false,
-      dummy = false,
+      realpath,
+      resolved,
+      root,
       sourceReference = null,
-      inert = false,
     } = options
     // this object gives querySelectorAll somewhere to stash context about a node
     // while processing a query
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js b/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js
index 71cfee736d9ccb..626af0c908e9cd 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js
@@ -793,9 +793,14 @@ const hasParent = (node, compareNodes) => {
       compareNode = compareNode.target
     }
 
-    // follows logical parent for link ancestors
+    // Follows logical parent for link ancestors (e.g. workspaces whose target lives outside node_modules).
+    // Only match if the node has a link whose parent is the compareNode. Without this check, nodes deep in the store (linked strategy) would incorrectly match as children of root via their fsParent chain.
     if (node.isTop && (node.resolveParent === compareNode)) {
-      return true
+      for (const link of node.linksIn) {
+        if (link.parent === compareNode) {
+          return true
+        }
+      }
     }
     // follows edges-in to check if they match a possible parent
     for (const edge of node.edgesIn) {
diff --git a/deps/npm/node_modules/@npmcli/arborist/package.json b/deps/npm/node_modules/@npmcli/arborist/package.json
index 3b49201fe966b8..6d480fad6ebc9b 100644
--- a/deps/npm/node_modules/@npmcli/arborist/package.json
+++ b/deps/npm/node_modules/@npmcli/arborist/package.json
@@ -1,8 +1,9 @@
 {
   "name": "@npmcli/arborist",
-  "version": "9.4.0",
+  "version": "9.4.1",
   "description": "Manage node_modules trees",
   "dependencies": {
+    "@gar/promise-retry": "^1.0.0",
     "@isaacs/string-locale-compare": "^1.1.0",
     "@npmcli/fs": "^5.0.0",
     "@npmcli/installed-package-contents": "^4.0.0",
diff --git a/deps/npm/node_modules/@npmcli/run-script/lib/set-path.js b/deps/npm/node_modules/@npmcli/run-script/lib/set-path.js
index c59c270d9969a0..0344cc0b736f43 100644
--- a/deps/npm/node_modules/@npmcli/run-script/lib/set-path.js
+++ b/deps/npm/node_modules/@npmcli/run-script/lib/set-path.js
@@ -1,3 +1,4 @@
+const { log } = require('proc-log')
 const { resolve, dirname, delimiter } = require('path')
 // the path here is relative, even though it does not need to be
 // in order to make the posix tests pass in windows
@@ -14,6 +15,13 @@ const setPATH = (projectPath, binPaths, env) => {
 
   const pathArr = []
   if (binPaths) {
+    for (const bin of binPaths) {
+      if (bin.includes(delimiter)) {
+        const event = env.npm_lifecycle_event
+        const context = event ? `"${event}" script` : 'script execution'
+        log.warn('run-script', `Path contains delimiter ("${delimiter}"), ${context} may not behave as expected.`)
+      }
+    }
     pathArr.push(...binPaths)
   }
   // unshift the ./node_modules/.bin from every folder
diff --git a/deps/npm/node_modules/@npmcli/run-script/package.json b/deps/npm/node_modules/@npmcli/run-script/package.json
index 9ddb499084173c..6f782661de3488 100644
--- a/deps/npm/node_modules/@npmcli/run-script/package.json
+++ b/deps/npm/node_modules/@npmcli/run-script/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@npmcli/run-script",
-  "version": "10.0.3",
+  "version": "10.0.4",
   "description": "Run a lifecycle script for a package (descendant of npm-lifecycle)",
   "author": "GitHub Inc.",
   "license": "ISC",
@@ -16,7 +16,7 @@
   },
   "devDependencies": {
     "@npmcli/eslint-config": "^6.0.0",
-    "@npmcli/template-oss": "4.28.0",
+    "@npmcli/template-oss": "4.29.0",
     "spawk": "^1.8.1",
     "tap": "^16.0.1"
   },
@@ -25,8 +25,7 @@
     "@npmcli/package-json": "^7.0.0",
     "@npmcli/promise-spawn": "^9.0.0",
     "node-gyp": "^12.1.0",
-    "proc-log": "^6.0.0",
-    "which": "^6.0.0"
+    "proc-log": "^6.0.0"
   },
   "files": [
     "bin/",
@@ -42,7 +41,7 @@
   },
   "templateOSS": {
     "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
-    "version": "4.28.0",
+    "version": "4.29.0",
     "publish": "true"
   },
   "tap": {
diff --git a/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js b/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js
index 2caa572c59de67..3323b505d9c05e 100644
--- a/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js
+++ b/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js
@@ -17,7 +17,7 @@ const slashPattern = /\\\\/g;
 const openPattern = /\\{/g;
 const closePattern = /\\}/g;
 const commaPattern = /\\,/g;
-const periodPattern = /\\./g;
+const periodPattern = /\\\./g;
 exports.EXPANSION_MAX = 100_000;
 function numeric(str) {
     return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);
diff --git a/deps/npm/node_modules/brace-expansion/dist/esm/index.js b/deps/npm/node_modules/brace-expansion/dist/esm/index.js
index ec682796e358b2..ca4124926adfd3 100644
--- a/deps/npm/node_modules/brace-expansion/dist/esm/index.js
+++ b/deps/npm/node_modules/brace-expansion/dist/esm/index.js
@@ -13,7 +13,7 @@ const slashPattern = /\\\\/g;
 const openPattern = /\\{/g;
 const closePattern = /\\}/g;
 const commaPattern = /\\,/g;
-const periodPattern = /\\./g;
+const periodPattern = /\\\./g;
 export const EXPANSION_MAX = 100_000;
 function numeric(str) {
     return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);
diff --git a/deps/npm/node_modules/brace-expansion/package.json b/deps/npm/node_modules/brace-expansion/package.json
index c921f0bed27ce9..c2d66fa17cb035 100644
--- a/deps/npm/node_modules/brace-expansion/package.json
+++ b/deps/npm/node_modules/brace-expansion/package.json
@@ -1,7 +1,7 @@
 {
   "name": "brace-expansion",
   "description": "Brace expansion as known from sh/bash",
-  "version": "5.0.3",
+  "version": "5.0.4",
   "files": [
     "dist"
   ],
diff --git a/deps/npm/node_modules/libnpmdiff/package.json b/deps/npm/node_modules/libnpmdiff/package.json
index c2a14dedcbef4c..dd268cd3b7b0f7 100644
--- a/deps/npm/node_modules/libnpmdiff/package.json
+++ b/deps/npm/node_modules/libnpmdiff/package.json
@@ -1,6 +1,6 @@
 {
   "name": "libnpmdiff",
-  "version": "8.1.3",
+  "version": "8.1.4",
   "description": "The registry diff",
   "repository": {
     "type": "git",
@@ -47,7 +47,7 @@
     "tap": "^16.3.8"
   },
   "dependencies": {
-    "@npmcli/arborist": "^9.4.0",
+    "@npmcli/arborist": "^9.4.1",
     "@npmcli/installed-package-contents": "^4.0.0",
     "binary-extensions": "^3.0.0",
     "diff": "^8.0.2",
diff --git a/deps/npm/node_modules/libnpmexec/package.json b/deps/npm/node_modules/libnpmexec/package.json
index 99c11b81bc2d84..d6654212a4f063 100644
--- a/deps/npm/node_modules/libnpmexec/package.json
+++ b/deps/npm/node_modules/libnpmexec/package.json
@@ -1,6 +1,6 @@
 {
   "name": "libnpmexec",
-  "version": "10.2.3",
+  "version": "10.2.4",
   "files": [
     "bin/",
     "lib/"
@@ -61,7 +61,7 @@
   },
   "dependencies": {
     "@gar/promise-retry": "^1.0.0",
-    "@npmcli/arborist": "^9.4.0",
+    "@npmcli/arborist": "^9.4.1",
     "@npmcli/package-json": "^7.0.0",
     "@npmcli/run-script": "^10.0.0",
     "ci-info": "^4.0.0",
diff --git a/deps/npm/node_modules/libnpmfund/package.json b/deps/npm/node_modules/libnpmfund/package.json
index 2e8a755b8d0b50..b59fb249ad8015 100644
--- a/deps/npm/node_modules/libnpmfund/package.json
+++ b/deps/npm/node_modules/libnpmfund/package.json
@@ -1,6 +1,6 @@
 {
   "name": "libnpmfund",
-  "version": "7.0.17",
+  "version": "7.0.18",
   "main": "lib/index.js",
   "files": [
     "bin/",
@@ -46,7 +46,7 @@
     "tap": "^16.3.8"
   },
   "dependencies": {
-    "@npmcli/arborist": "^9.4.0"
+    "@npmcli/arborist": "^9.4.1"
   },
   "engines": {
     "node": "^20.17.0 || >=22.9.0"
diff --git a/deps/npm/node_modules/libnpmpack/package.json b/deps/npm/node_modules/libnpmpack/package.json
index cf0822a7775fc9..ffd3bfd612a640 100644
--- a/deps/npm/node_modules/libnpmpack/package.json
+++ b/deps/npm/node_modules/libnpmpack/package.json
@@ -1,6 +1,6 @@
 {
   "name": "libnpmpack",
-  "version": "9.1.3",
+  "version": "9.1.4",
   "description": "Programmatic API for the bits behind npm pack",
   "author": "GitHub Inc.",
   "main": "lib/index.js",
@@ -37,7 +37,7 @@
   "bugs": "https://github.com/npm/libnpmpack/issues",
   "homepage": "https://npmjs.com/package/libnpmpack",
   "dependencies": {
-    "@npmcli/arborist": "^9.4.0",
+    "@npmcli/arborist": "^9.4.1",
     "@npmcli/run-script": "^10.0.0",
     "npm-package-arg": "^13.0.0",
     "pacote": "^21.0.2"
diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/ast.js b/deps/npm/node_modules/minimatch/dist/commonjs/ast.js
index 909b2daa0517dc..682be214093f9b 100644
--- a/deps/npm/node_modules/minimatch/dist/commonjs/ast.js
+++ b/deps/npm/node_modules/minimatch/dist/commonjs/ast.js
@@ -1,11 +1,113 @@
 "use strict";
 // parse a single path portion
+var _a;
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.AST = void 0;
 const brace_expressions_js_1 = require("./brace-expressions.js");
 const unescape_js_1 = require("./unescape.js");
 const types = new Set(['!', '?', '+', '*', '@']);
 const isExtglobType = (c) => types.has(c);
+const isExtglobAST = (c) => isExtglobType(c.type);
+// Map of which extglob types can adopt the children of a nested extglob
+//
+// anything but ! can adopt a matching type:
+// +(a|+(b|c)|d) => +(a|b|c|d)
+// *(a|*(b|c)|d) => *(a|b|c|d)
+// @(a|@(b|c)|d) => @(a|b|c|d)
+// ?(a|?(b|c)|d) => ?(a|b|c|d)
+//
+// * can adopt anything, because 0 or repetition is allowed
+// *(a|?(b|c)|d) => *(a|b|c|d)
+// *(a|+(b|c)|d) => *(a|b|c|d)
+// *(a|@(b|c)|d) => *(a|b|c|d)
+//
+// + can adopt @, because 1 or repetition is allowed
+// +(a|@(b|c)|d) => +(a|b|c|d)
+//
+// + and @ CANNOT adopt *, because 0 would be allowed
+// +(a|*(b|c)|d) => would match "", on *(b|c)
+// @(a|*(b|c)|d) => would match "", on *(b|c)
+//
+// + and @ CANNOT adopt ?, because 0 would be allowed
+// +(a|?(b|c)|d) => would match "", on ?(b|c)
+// @(a|?(b|c)|d) => would match "", on ?(b|c)
+//
+// ? can adopt @, because 0 or 1 is allowed
+// ?(a|@(b|c)|d) => ?(a|b|c|d)
+//
+// ? and @ CANNOT adopt * or +, because >1 would be allowed
+// ?(a|*(b|c)|d) => would match bbb on *(b|c)
+// @(a|*(b|c)|d) => would match bbb on *(b|c)
+// ?(a|+(b|c)|d) => would match bbb on +(b|c)
+// @(a|+(b|c)|d) => would match bbb on +(b|c)
+//
+// ! CANNOT adopt ! (nothing else can either)
+// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)
+//
+// ! can adopt @
+// !(a|@(b|c)|d) => !(a|b|c|d)
+//
+// ! CANNOT adopt *
+// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed
+//
+// ! CANNOT adopt +
+// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed
+//
+// ! CANNOT adopt ?
+// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match "x"
+const adoptionMap = new Map([
+    ['!', ['@']],
+    ['?', ['?', '@']],
+    ['@', ['@']],
+    ['*', ['*', '+', '?', '@']],
+    ['+', ['+', '@']],
+]);
+// nested extglobs that can be adopted in, but with the addition of
+// a blank '' element.
+const adoptionWithSpaceMap = new Map([
+    ['!', ['?']],
+    ['@', ['?']],
+    ['+', ['?', '*']],
+]);
+// union of the previous two maps
+const adoptionAnyMap = new Map([
+    ['!', ['?', '@']],
+    ['?', ['?', '@']],
+    ['@', ['?', '@']],
+    ['*', ['*', '+', '?', '@']],
+    ['+', ['+', '@', '?', '*']],
+]);
+// Extglobs that can take over their parent if they are the only child
+// the key is parent, value maps child to resulting extglob parent type
+// '@' is omitted because it's a special case. An `@` extglob with a single
+// member can always be usurped by that subpattern.
+const usurpMap = new Map([
+    ['!', new Map([['!', '@']])],
+    [
+        '?',
+        new Map([
+            ['*', '*'],
+            ['+', '*'],
+        ]),
+    ],
+    [
+        '@',
+        new Map([
+            ['!', '!'],
+            ['?', '?'],
+            ['@', '@'],
+            ['*', '*'],
+            ['+', '+'],
+        ]),
+    ],
+    [
+        '+',
+        new Map([
+            ['?', '*'],
+            ['*', '*'],
+        ]),
+    ],
+]);
 // Patterns that get prepended to bind to the start of either the
 // entire string, or just a single path portion, to prevent dots
 // and/or traversal patterns, when needed.
@@ -29,6 +131,7 @@ const star = qmark + '*?';
 const starNoEmpty = qmark + '+?';
 // remove the \ chars that we added if we end up doing a nonmagic compare
 // const deslash = (s: string) => s.replace(/\\(.)/g, '$1')
+let ID = 0;
 class AST {
     type;
     #root;
@@ -44,6 +147,22 @@ class AST {
     // set to true if it's an extglob with no children
     // (which really means one child of '')
     #emptyExt = false;
+    id = ++ID;
+    get depth() {
+        return (this.#parent?.depth ?? -1) + 1;
+    }
+    [Symbol.for('nodejs.util.inspect.custom')]() {
+        return {
+            '@@type': 'AST',
+            id: this.id,
+            type: this.type,
+            root: this.#root.id,
+            parent: this.#parent?.id,
+            depth: this.depth,
+            partsLength: this.#parts.length,
+            parts: this.#parts,
+        };
+    }
     constructor(type, parent, options = {}) {
         this.type = type;
         // extglobs are inherently magical
@@ -123,7 +242,7 @@ class AST {
                 continue;
             /* c8 ignore start */
             if (typeof p !== 'string' &&
-                !(p instanceof AST && p.#parent === this)) {
+                !(p instanceof _a && p.#parent === this)) {
                 throw new Error('invalid part: ' + p);
             }
             /* c8 ignore stop */
@@ -157,7 +276,7 @@ class AST {
         const p = this.#parent;
         for (let i = 0; i < this.#parentIndex; i++) {
             const pp = p.#parts[i];
-            if (!(pp instanceof AST && pp.type === '!')) {
+            if (!(pp instanceof _a && pp.type === '!')) {
                 return false;
             }
         }
@@ -185,13 +304,14 @@ class AST {
             this.push(part.clone(this));
     }
     clone(parent) {
-        const c = new AST(this.type, parent);
+        const c = new _a(this.type, parent);
         for (const p of this.#parts) {
             c.copyIn(p);
         }
         return c;
     }
-    static #parseAST(str, ast, pos, opt) {
+    static #parseAST(str, ast, pos, opt, extDepth) {
+        const maxDepth = opt.maxExtglobRecursion ?? 2;
         let escaping = false;
         let inBrace = false;
         let braceStart = -1;
@@ -228,11 +348,17 @@ class AST {
                     acc += c;
                     continue;
                 }
-                if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {
+                // we don't have to check for adoption here, because that's
+                // done at the other recursion point.
+                const doRecurse = !opt.noext &&
+                    isExtglobType(c) &&
+                    str.charAt(i) === '(' &&
+                    extDepth <= maxDepth;
+                if (doRecurse) {
                     ast.push(acc);
                     acc = '';
-                    const ext = new AST(c, ast);
-                    i = AST.#parseAST(str, ext, i, opt);
+                    const ext = new _a(c, ast);
+                    i = _a.#parseAST(str, ext, i, opt, extDepth + 1);
                     ast.push(ext);
                     continue;
                 }
@@ -244,7 +370,7 @@ class AST {
         // some kind of extglob, pos is at the (
         // find the next | or )
         let i = pos + 1;
-        let part = new AST(null, ast);
+        let part = new _a(null, ast);
         const parts = [];
         let acc = '';
         while (i < str.length) {
@@ -275,19 +401,26 @@ class AST {
                 acc += c;
                 continue;
             }
-            if (isExtglobType(c) && str.charAt(i) === '(') {
+            const doRecurse = !opt.noext &&
+                isExtglobType(c) &&
+                str.charAt(i) === '(' &&
+                /* c8 ignore start - the maxDepth is sufficient here */
+                (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));
+            /* c8 ignore stop */
+            if (doRecurse) {
+                const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;
                 part.push(acc);
                 acc = '';
-                const ext = new AST(c, part);
+                const ext = new _a(c, part);
                 part.push(ext);
-                i = AST.#parseAST(str, ext, i, opt);
+                i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);
                 continue;
             }
             if (c === '|') {
                 part.push(acc);
                 acc = '';
                 parts.push(part);
-                part = new AST(null, ast);
+                part = new _a(null, ast);
                 continue;
             }
             if (c === ')') {
@@ -309,9 +442,82 @@ class AST {
         ast.#parts = [str.substring(pos - 1)];
         return i;
     }
+    #canAdoptWithSpace(child) {
+        return this.#canAdopt(child, adoptionWithSpaceMap);
+    }
+    #canAdopt(child, map = adoptionMap) {
+        if (!child ||
+            typeof child !== 'object' ||
+            child.type !== null ||
+            child.#parts.length !== 1 ||
+            this.type === null) {
+            return false;
+        }
+        const gc = child.#parts[0];
+        if (!gc || typeof gc !== 'object' || gc.type === null) {
+            return false;
+        }
+        return this.#canAdoptType(gc.type, map);
+    }
+    #canAdoptType(c, map = adoptionAnyMap) {
+        return !!map.get(this.type)?.includes(c);
+    }
+    #adoptWithSpace(child, index) {
+        const gc = child.#parts[0];
+        const blank = new _a(null, gc, this.options);
+        blank.#parts.push('');
+        gc.push(blank);
+        this.#adopt(child, index);
+    }
+    #adopt(child, index) {
+        const gc = child.#parts[0];
+        this.#parts.splice(index, 1, ...gc.#parts);
+        for (const p of gc.#parts) {
+            if (typeof p === 'object')
+                p.#parent = this;
+        }
+        this.#toString = undefined;
+    }
+    #canUsurpType(c) {
+        const m = usurpMap.get(this.type);
+        return !!(m?.has(c));
+    }
+    #canUsurp(child) {
+        if (!child ||
+            typeof child !== 'object' ||
+            child.type !== null ||
+            child.#parts.length !== 1 ||
+            this.type === null ||
+            this.#parts.length !== 1) {
+            return false;
+        }
+        const gc = child.#parts[0];
+        if (!gc || typeof gc !== 'object' || gc.type === null) {
+            return false;
+        }
+        return this.#canUsurpType(gc.type);
+    }
+    #usurp(child) {
+        const m = usurpMap.get(this.type);
+        const gc = child.#parts[0];
+        const nt = m?.get(gc.type);
+        /* c8 ignore start - impossible */
+        if (!nt)
+            return false;
+        /* c8 ignore stop */
+        this.#parts = gc.#parts;
+        for (const p of this.#parts) {
+            if (typeof p === 'object') {
+                p.#parent = this;
+            }
+        }
+        this.type = nt;
+        this.#toString = undefined;
+        this.#emptyExt = false;
+    }
     static fromGlob(pattern, options = {}) {
-        const ast = new AST(null, undefined, options);
-        AST.#parseAST(pattern, ast, 0, options);
+        const ast = new _a(null, undefined, options);
+        _a.#parseAST(pattern, ast, 0, options, 0);
         return ast;
     }
     // returns the regular expression if there's magic, or the unescaped
@@ -415,16 +621,18 @@ class AST {
     // or start or whatever) and prepend ^ or / at the Regexp construction.
     toRegExpSource(allowDot) {
         const dot = allowDot ?? !!this.#options.dot;
-        if (this.#root === this)
+        if (this.#root === this) {
+            this.#flatten();
             this.#fillNegs();
-        if (!this.type) {
+        }
+        if (!isExtglobAST(this)) {
             const noEmpty = this.isStart() &&
                 this.isEnd() &&
                 !this.#parts.some(s => typeof s !== 'string');
             const src = this.#parts
                 .map(p => {
                 const [re, _, hasMagic, uflag] = typeof p === 'string' ?
-                    AST.#parseGlob(p, this.#hasMagic, noEmpty)
+                    _a.#parseGlob(p, this.#hasMagic, noEmpty)
                     : p.toRegExpSource(allowDot);
                 this.#hasMagic = this.#hasMagic || hasMagic;
                 this.#uflag = this.#uflag || uflag;
@@ -486,12 +694,12 @@ class AST {
             // invalid extglob, has to at least be *something* present, if it's
             // the entire path portion.
             const s = this.toString();
-            this.#parts = [s];
-            this.type = null;
-            this.#hasMagic = undefined;
+            const me = this;
+            me.#parts = [s];
+            me.type = null;
+            me.#hasMagic = undefined;
             return [s, (0, unescape_js_1.unescape)(this.toString()), false, false];
         }
-        // XXX abstract out this map method
         let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?
             ''
             : this.#partsToRegExp(true);
@@ -527,6 +735,42 @@ class AST {
             this.#uflag,
         ];
     }
+    #flatten() {
+        if (!isExtglobAST(this)) {
+            for (const p of this.#parts) {
+                if (typeof p === 'object') {
+                    p.#flatten();
+                }
+            }
+        }
+        else {
+            // do up to 10 passes to flatten as much as possible
+            let iterations = 0;
+            let done = false;
+            do {
+                done = true;
+                for (let i = 0; i < this.#parts.length; i++) {
+                    const c = this.#parts[i];
+                    if (typeof c === 'object') {
+                        c.#flatten();
+                        if (this.#canAdopt(c)) {
+                            done = false;
+                            this.#adopt(c, i);
+                        }
+                        else if (this.#canAdoptWithSpace(c)) {
+                            done = false;
+                            this.#adoptWithSpace(c, i);
+                        }
+                        else if (this.#canUsurp(c)) {
+                            done = false;
+                            this.#usurp(c);
+                        }
+                    }
+                }
+            } while (!done && ++iterations < 10);
+        }
+        this.#toString = undefined;
+    }
     #partsToRegExp(dot) {
         return this.#parts
             .map(p => {
@@ -598,4 +842,5 @@ class AST {
     }
 }
 exports.AST = AST;
+_a = AST;
 //# sourceMappingURL=ast.js.map
\ No newline at end of file
diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/index.js b/deps/npm/node_modules/minimatch/dist/commonjs/index.js
index 5a0ba2a87fb036..b28f9b455ecf8b 100644
--- a/deps/npm/node_modules/minimatch/dist/commonjs/index.js
+++ b/deps/npm/node_modules/minimatch/dist/commonjs/index.js
@@ -202,11 +202,13 @@ class Minimatch {
     isWindows;
     platform;
     windowsNoMagicRoot;
+    maxGlobstarRecursion;
     regexp;
     constructor(pattern, options = {}) {
         (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
         options = options || {};
         this.options = options;
+        this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;
         this.pattern = pattern;
         this.platform = options.platform || defaultPlatform;
         this.isWindows = this.platform === 'win32';
@@ -611,7 +613,8 @@ class Minimatch {
     // out of pattern, then that's fine, as long as all
     // the parts match.
     matchOne(file, pattern, partial = false) {
-        const options = this.options;
+        let fileStartIndex = 0;
+        let patternStartIndex = 0;
         // UNC paths like //?/X:/... can match X:/... and vice versa
         // Drive letters in absolute drive or unc paths are always compared
         // case-insensitively.
@@ -640,14 +643,11 @@ class Minimatch {
                     file[fdi],
                     pattern[pdi],
                 ];
+                // start matching at the drive letter index of each
                 if (fd.toLowerCase() === pd.toLowerCase()) {
                     pattern[pdi] = fd;
-                    if (pdi > fdi) {
-                        pattern = pattern.slice(pdi);
-                    }
-                    else if (fdi > pdi) {
-                        file = file.slice(fdi);
-                    }
+                    patternStartIndex = pdi;
+                    fileStartIndex = fdi;
                 }
             }
         }
@@ -657,99 +657,185 @@ class Minimatch {
         if (optimizationLevel >= 2) {
             file = this.levelTwoFileOptimize(file);
         }
-        this.debug('matchOne', this, { file, pattern });
-        this.debug('matchOne', file.length, pattern.length);
-        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+        if (pattern.includes(exports.GLOBSTAR)) {
+            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);
+        }
+        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);
+    }
+    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {
+        // split the pattern into head, tail, and middle of ** delimited parts
+        const firstgs = pattern.indexOf(exports.GLOBSTAR, patternIndex);
+        const lastgs = pattern.lastIndexOf(exports.GLOBSTAR);
+        // split the pattern up into globstar-delimited sections
+        // the tail has to be at the end, and the others just have
+        // to be found in order from the head.
+        const [head, body, tail] = partial ? [
+            pattern.slice(patternIndex, firstgs),
+            pattern.slice(firstgs + 1),
+            [],
+        ] : [
+            pattern.slice(patternIndex, firstgs),
+            pattern.slice(firstgs + 1, lastgs),
+            pattern.slice(lastgs + 1),
+        ];
+        // check the head, from the current file/pattern index.
+        if (head.length) {
+            const fileHead = file.slice(fileIndex, fileIndex + head.length);
+            if (!this.#matchOne(fileHead, head, partial, 0, 0)) {
+                return false;
+            }
+            fileIndex += head.length;
+            patternIndex += head.length;
+        }
+        // now we know the head matches!
+        // if the last portion is not empty, it MUST match the end
+        // check the tail
+        let fileTailMatch = 0;
+        if (tail.length) {
+            // if head + tail > file, then we cannot possibly match
+            if (tail.length + fileIndex > file.length)
+                return false;
+            // try to match the tail
+            let tailStart = file.length - tail.length;
+            if (this.#matchOne(file, tail, partial, tailStart, 0)) {
+                fileTailMatch = tail.length;
+            }
+            else {
+                // affordance for stuff like a/**/* matching a/b/
+                // if the last file portion is '', and there's more to the pattern
+                // then try without the '' bit.
+                if (file[file.length - 1] !== '' ||
+                    fileIndex + tail.length === file.length) {
+                    return false;
+                }
+                tailStart--;
+                if (!this.#matchOne(file, tail, partial, tailStart, 0)) {
+                    return false;
+                }
+                fileTailMatch = tail.length + 1;
+            }
+        }
+        // now we know the tail matches!
+        // the middle is zero or more portions wrapped in **, possibly
+        // containing more ** sections.
+        // so a/**/b/**/c/**/d has become **/b/**/c/**
+        // if it's empty, it means a/**/b, just verify we have no bad dots
+        // if there's no tail, so it ends on /**, then we must have *something*
+        // after the head, or it's not a matc
+        if (!body.length) {
+            let sawSome = !!fileTailMatch;
+            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {
+                const f = String(file[i]);
+                sawSome = true;
+                if (f === '.' ||
+                    f === '..' ||
+                    (!this.options.dot && f.startsWith('.'))) {
+                    return false;
+                }
+            }
+            // in partial mode, we just need to get past all file parts
+            return partial || sawSome;
+        }
+        // now we know that there's one or more body sections, which can
+        // be matched anywhere from the 0 index (because the head was pruned)
+        // through to the length-fileTailMatch index.
+        // split the body up into sections, and note the minimum index it can
+        // be found at (start with the length of all previous segments)
+        // [section, before, after]
+        const bodySegments = [[[], 0]];
+        let currentBody = bodySegments[0];
+        let nonGsParts = 0;
+        const nonGsPartsSums = [0];
+        for (const b of body) {
+            if (b === exports.GLOBSTAR) {
+                nonGsPartsSums.push(nonGsParts);
+                currentBody = [[], 0];
+                bodySegments.push(currentBody);
+            }
+            else {
+                currentBody[0].push(b);
+                nonGsParts++;
+            }
+        }
+        let i = bodySegments.length - 1;
+        const fileLength = file.length - fileTailMatch;
+        for (const b of bodySegments) {
+            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);
+        }
+        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);
+    }
+    // return false for "nope, not matching"
+    // return null for "not matching, cannot keep trying"
+    #matchGlobStarBodySections(file,
+    // pattern section, last possible position for it
+    bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {
+        // take the first body segment, and walk from fileIndex to its "after"
+        // value at the end
+        // If it doesn't match at that position, we increment, until we hit
+        // that final possible position, and give up.
+        // If it does match, then advance and try to rest.
+        // If any of them fail we keep walking forward.
+        // this is still a bit recursively painful, but it's more constrained
+        // than previous implementations, because we never test something that
+        // can't possibly be a valid matching condition.
+        const bs = bodySegments[bodyIndex];
+        if (!bs) {
+            // just make sure that there's no bad dots
+            for (let i = fileIndex; i < file.length; i++) {
+                sawTail = true;
+                const f = file[i];
+                if (f === '.' ||
+                    f === '..' ||
+                    (!this.options.dot && f.startsWith('.'))) {
+                    return false;
+                }
+            }
+            return sawTail;
+        }
+        // have a non-globstar body section to test
+        const [body, after] = bs;
+        while (fileIndex <= after) {
+            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);
+            // if limit exceeded, no match. intentional false negative,
+            // acceptable break in correctness for security.
+            if (m && globStarDepth < this.maxGlobstarRecursion) {
+                // match! see if the rest match. if so, we're done!
+                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);
+                if (sub !== false) {
+                    return sub;
+                }
+            }
+            const f = file[fileIndex];
+            if (f === '.' ||
+                f === '..' ||
+                (!this.options.dot && f.startsWith('.'))) {
+                return false;
+            }
+            fileIndex++;
+        }
+        // walked off. no point continuing
+        return partial || null;
+    }
+    #matchOne(file, pattern, partial, fileIndex, patternIndex) {
+        let fi;
+        let pi;
+        let pl;
+        let fl;
+        for (fi = fileIndex,
+            pi = patternIndex,
+            fl = file.length,
+            pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
             this.debug('matchOne loop');
-            var p = pattern[pi];
-            var f = file[fi];
+            let p = pattern[pi];
+            let f = file[fi];
             this.debug(pattern, p, f);
             // should be impossible.
             // some invalid regexp stuff in the set.
             /* c8 ignore start */
-            if (p === false) {
+            if (p === false || p === exports.GLOBSTAR) {
                 return false;
             }
             /* c8 ignore stop */
-            if (p === exports.GLOBSTAR) {
-                this.debug('GLOBSTAR', [pattern, p, f]);
-                // "**"
-                // a/**/b/**/c would match the following:
-                // a/b/x/y/z/c
-                // a/x/y/z/b/c
-                // a/b/x/b/x/c
-                // a/b/c
-                // To do this, take the rest of the pattern after
-                // the **, and see if it would match the file remainder.
-                // If so, return success.
-                // If not, the ** "swallows" a segment, and try again.
-                // This is recursively awful.
-                //
-                // a/**/b/**/c matching a/b/x/y/z/c
-                // - a matches a
-                // - doublestar
-                //   - matchOne(b/x/y/z/c, b/**/c)
-                //     - b matches b
-                //     - doublestar
-                //       - matchOne(x/y/z/c, c) -> no
-                //       - matchOne(y/z/c, c) -> no
-                //       - matchOne(z/c, c) -> no
-                //       - matchOne(c, c) yes, hit
-                var fr = fi;
-                var pr = pi + 1;
-                if (pr === pl) {
-                    this.debug('** at the end');
-                    // a ** at the end will just swallow the rest.
-                    // We have found a match.
-                    // however, it will not swallow /.x, unless
-                    // options.dot is set.
-                    // . and .. are *never* matched by **, for explosively
-                    // exponential reasons.
-                    for (; fi < fl; fi++) {
-                        if (file[fi] === '.' ||
-                            file[fi] === '..' ||
-                            (!options.dot && file[fi].charAt(0) === '.'))
-                            return false;
-                    }
-                    return true;
-                }
-                // ok, let's see if we can swallow whatever we can.
-                while (fr < fl) {
-                    var swallowee = file[fr];
-                    this.debug('\nglobstar while', file, fr, pattern, pr, swallowee);
-                    // XXX remove this slice.  Just pass the start index.
-                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
-                        this.debug('globstar found match!', fr, fl, swallowee);
-                        // found a match.
-                        return true;
-                    }
-                    else {
-                        // can't swallow "." or ".." ever.
-                        // can only swallow ".foo" when explicitly asked.
-                        if (swallowee === '.' ||
-                            swallowee === '..' ||
-                            (!options.dot && swallowee.charAt(0) === '.')) {
-                            this.debug('dot detected!', file, fr, pattern, pr);
-                            break;
-                        }
-                        // ** swallows a segment, and continue.
-                        this.debug('globstar swallow a segment, and continue');
-                        fr++;
-                    }
-                }
-                // no match was found.
-                // However, in partial mode, we can't say this is necessarily over.
-                /* c8 ignore start */
-                if (partial) {
-                    // ran out of file
-                    this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
-                    if (fr === fl) {
-                        return true;
-                    }
-                }
-                /* c8 ignore stop */
-                return false;
-            }
             // something other than **
             // non-magic patterns just have to match exactly
             // patterns with magic have been turned into regexps.
diff --git a/deps/npm/node_modules/minimatch/dist/esm/ast.js b/deps/npm/node_modules/minimatch/dist/esm/ast.js
index bcc9d72b0f9cc0..4501f7208dbc02 100644
--- a/deps/npm/node_modules/minimatch/dist/esm/ast.js
+++ b/deps/npm/node_modules/minimatch/dist/esm/ast.js
@@ -1,8 +1,110 @@
 // parse a single path portion
+var _a;
 import { parseClass } from './brace-expressions.js';
 import { unescape } from './unescape.js';
 const types = new Set(['!', '?', '+', '*', '@']);
 const isExtglobType = (c) => types.has(c);
+const isExtglobAST = (c) => isExtglobType(c.type);
+// Map of which extglob types can adopt the children of a nested extglob
+//
+// anything but ! can adopt a matching type:
+// +(a|+(b|c)|d) => +(a|b|c|d)
+// *(a|*(b|c)|d) => *(a|b|c|d)
+// @(a|@(b|c)|d) => @(a|b|c|d)
+// ?(a|?(b|c)|d) => ?(a|b|c|d)
+//
+// * can adopt anything, because 0 or repetition is allowed
+// *(a|?(b|c)|d) => *(a|b|c|d)
+// *(a|+(b|c)|d) => *(a|b|c|d)
+// *(a|@(b|c)|d) => *(a|b|c|d)
+//
+// + can adopt @, because 1 or repetition is allowed
+// +(a|@(b|c)|d) => +(a|b|c|d)
+//
+// + and @ CANNOT adopt *, because 0 would be allowed
+// +(a|*(b|c)|d) => would match "", on *(b|c)
+// @(a|*(b|c)|d) => would match "", on *(b|c)
+//
+// + and @ CANNOT adopt ?, because 0 would be allowed
+// +(a|?(b|c)|d) => would match "", on ?(b|c)
+// @(a|?(b|c)|d) => would match "", on ?(b|c)
+//
+// ? can adopt @, because 0 or 1 is allowed
+// ?(a|@(b|c)|d) => ?(a|b|c|d)
+//
+// ? and @ CANNOT adopt * or +, because >1 would be allowed
+// ?(a|*(b|c)|d) => would match bbb on *(b|c)
+// @(a|*(b|c)|d) => would match bbb on *(b|c)
+// ?(a|+(b|c)|d) => would match bbb on +(b|c)
+// @(a|+(b|c)|d) => would match bbb on +(b|c)
+//
+// ! CANNOT adopt ! (nothing else can either)
+// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)
+//
+// ! can adopt @
+// !(a|@(b|c)|d) => !(a|b|c|d)
+//
+// ! CANNOT adopt *
+// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed
+//
+// ! CANNOT adopt +
+// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed
+//
+// ! CANNOT adopt ?
+// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match "x"
+const adoptionMap = new Map([
+    ['!', ['@']],
+    ['?', ['?', '@']],
+    ['@', ['@']],
+    ['*', ['*', '+', '?', '@']],
+    ['+', ['+', '@']],
+]);
+// nested extglobs that can be adopted in, but with the addition of
+// a blank '' element.
+const adoptionWithSpaceMap = new Map([
+    ['!', ['?']],
+    ['@', ['?']],
+    ['+', ['?', '*']],
+]);
+// union of the previous two maps
+const adoptionAnyMap = new Map([
+    ['!', ['?', '@']],
+    ['?', ['?', '@']],
+    ['@', ['?', '@']],
+    ['*', ['*', '+', '?', '@']],
+    ['+', ['+', '@', '?', '*']],
+]);
+// Extglobs that can take over their parent if they are the only child
+// the key is parent, value maps child to resulting extglob parent type
+// '@' is omitted because it's a special case. An `@` extglob with a single
+// member can always be usurped by that subpattern.
+const usurpMap = new Map([
+    ['!', new Map([['!', '@']])],
+    [
+        '?',
+        new Map([
+            ['*', '*'],
+            ['+', '*'],
+        ]),
+    ],
+    [
+        '@',
+        new Map([
+            ['!', '!'],
+            ['?', '?'],
+            ['@', '@'],
+            ['*', '*'],
+            ['+', '+'],
+        ]),
+    ],
+    [
+        '+',
+        new Map([
+            ['?', '*'],
+            ['*', '*'],
+        ]),
+    ],
+]);
 // Patterns that get prepended to bind to the start of either the
 // entire string, or just a single path portion, to prevent dots
 // and/or traversal patterns, when needed.
@@ -26,6 +128,7 @@ const star = qmark + '*?';
 const starNoEmpty = qmark + '+?';
 // remove the \ chars that we added if we end up doing a nonmagic compare
 // const deslash = (s: string) => s.replace(/\\(.)/g, '$1')
+let ID = 0;
 export class AST {
     type;
     #root;
@@ -41,6 +144,22 @@ export class AST {
     // set to true if it's an extglob with no children
     // (which really means one child of '')
     #emptyExt = false;
+    id = ++ID;
+    get depth() {
+        return (this.#parent?.depth ?? -1) + 1;
+    }
+    [Symbol.for('nodejs.util.inspect.custom')]() {
+        return {
+            '@@type': 'AST',
+            id: this.id,
+            type: this.type,
+            root: this.#root.id,
+            parent: this.#parent?.id,
+            depth: this.depth,
+            partsLength: this.#parts.length,
+            parts: this.#parts,
+        };
+    }
     constructor(type, parent, options = {}) {
         this.type = type;
         // extglobs are inherently magical
@@ -120,7 +239,7 @@ export class AST {
                 continue;
             /* c8 ignore start */
             if (typeof p !== 'string' &&
-                !(p instanceof AST && p.#parent === this)) {
+                !(p instanceof _a && p.#parent === this)) {
                 throw new Error('invalid part: ' + p);
             }
             /* c8 ignore stop */
@@ -154,7 +273,7 @@ export class AST {
         const p = this.#parent;
         for (let i = 0; i < this.#parentIndex; i++) {
             const pp = p.#parts[i];
-            if (!(pp instanceof AST && pp.type === '!')) {
+            if (!(pp instanceof _a && pp.type === '!')) {
                 return false;
             }
         }
@@ -182,13 +301,14 @@ export class AST {
             this.push(part.clone(this));
     }
     clone(parent) {
-        const c = new AST(this.type, parent);
+        const c = new _a(this.type, parent);
         for (const p of this.#parts) {
             c.copyIn(p);
         }
         return c;
     }
-    static #parseAST(str, ast, pos, opt) {
+    static #parseAST(str, ast, pos, opt, extDepth) {
+        const maxDepth = opt.maxExtglobRecursion ?? 2;
         let escaping = false;
         let inBrace = false;
         let braceStart = -1;
@@ -225,11 +345,17 @@ export class AST {
                     acc += c;
                     continue;
                 }
-                if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {
+                // we don't have to check for adoption here, because that's
+                // done at the other recursion point.
+                const doRecurse = !opt.noext &&
+                    isExtglobType(c) &&
+                    str.charAt(i) === '(' &&
+                    extDepth <= maxDepth;
+                if (doRecurse) {
                     ast.push(acc);
                     acc = '';
-                    const ext = new AST(c, ast);
-                    i = AST.#parseAST(str, ext, i, opt);
+                    const ext = new _a(c, ast);
+                    i = _a.#parseAST(str, ext, i, opt, extDepth + 1);
                     ast.push(ext);
                     continue;
                 }
@@ -241,7 +367,7 @@ export class AST {
         // some kind of extglob, pos is at the (
         // find the next | or )
         let i = pos + 1;
-        let part = new AST(null, ast);
+        let part = new _a(null, ast);
         const parts = [];
         let acc = '';
         while (i < str.length) {
@@ -272,19 +398,26 @@ export class AST {
                 acc += c;
                 continue;
             }
-            if (isExtglobType(c) && str.charAt(i) === '(') {
+            const doRecurse = !opt.noext &&
+                isExtglobType(c) &&
+                str.charAt(i) === '(' &&
+                /* c8 ignore start - the maxDepth is sufficient here */
+                (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));
+            /* c8 ignore stop */
+            if (doRecurse) {
+                const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;
                 part.push(acc);
                 acc = '';
-                const ext = new AST(c, part);
+                const ext = new _a(c, part);
                 part.push(ext);
-                i = AST.#parseAST(str, ext, i, opt);
+                i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);
                 continue;
             }
             if (c === '|') {
                 part.push(acc);
                 acc = '';
                 parts.push(part);
-                part = new AST(null, ast);
+                part = new _a(null, ast);
                 continue;
             }
             if (c === ')') {
@@ -306,9 +439,82 @@ export class AST {
         ast.#parts = [str.substring(pos - 1)];
         return i;
     }
+    #canAdoptWithSpace(child) {
+        return this.#canAdopt(child, adoptionWithSpaceMap);
+    }
+    #canAdopt(child, map = adoptionMap) {
+        if (!child ||
+            typeof child !== 'object' ||
+            child.type !== null ||
+            child.#parts.length !== 1 ||
+            this.type === null) {
+            return false;
+        }
+        const gc = child.#parts[0];
+        if (!gc || typeof gc !== 'object' || gc.type === null) {
+            return false;
+        }
+        return this.#canAdoptType(gc.type, map);
+    }
+    #canAdoptType(c, map = adoptionAnyMap) {
+        return !!map.get(this.type)?.includes(c);
+    }
+    #adoptWithSpace(child, index) {
+        const gc = child.#parts[0];
+        const blank = new _a(null, gc, this.options);
+        blank.#parts.push('');
+        gc.push(blank);
+        this.#adopt(child, index);
+    }
+    #adopt(child, index) {
+        const gc = child.#parts[0];
+        this.#parts.splice(index, 1, ...gc.#parts);
+        for (const p of gc.#parts) {
+            if (typeof p === 'object')
+                p.#parent = this;
+        }
+        this.#toString = undefined;
+    }
+    #canUsurpType(c) {
+        const m = usurpMap.get(this.type);
+        return !!(m?.has(c));
+    }
+    #canUsurp(child) {
+        if (!child ||
+            typeof child !== 'object' ||
+            child.type !== null ||
+            child.#parts.length !== 1 ||
+            this.type === null ||
+            this.#parts.length !== 1) {
+            return false;
+        }
+        const gc = child.#parts[0];
+        if (!gc || typeof gc !== 'object' || gc.type === null) {
+            return false;
+        }
+        return this.#canUsurpType(gc.type);
+    }
+    #usurp(child) {
+        const m = usurpMap.get(this.type);
+        const gc = child.#parts[0];
+        const nt = m?.get(gc.type);
+        /* c8 ignore start - impossible */
+        if (!nt)
+            return false;
+        /* c8 ignore stop */
+        this.#parts = gc.#parts;
+        for (const p of this.#parts) {
+            if (typeof p === 'object') {
+                p.#parent = this;
+            }
+        }
+        this.type = nt;
+        this.#toString = undefined;
+        this.#emptyExt = false;
+    }
     static fromGlob(pattern, options = {}) {
-        const ast = new AST(null, undefined, options);
-        AST.#parseAST(pattern, ast, 0, options);
+        const ast = new _a(null, undefined, options);
+        _a.#parseAST(pattern, ast, 0, options, 0);
         return ast;
     }
     // returns the regular expression if there's magic, or the unescaped
@@ -412,16 +618,18 @@ export class AST {
     // or start or whatever) and prepend ^ or / at the Regexp construction.
     toRegExpSource(allowDot) {
         const dot = allowDot ?? !!this.#options.dot;
-        if (this.#root === this)
+        if (this.#root === this) {
+            this.#flatten();
             this.#fillNegs();
-        if (!this.type) {
+        }
+        if (!isExtglobAST(this)) {
             const noEmpty = this.isStart() &&
                 this.isEnd() &&
                 !this.#parts.some(s => typeof s !== 'string');
             const src = this.#parts
                 .map(p => {
                 const [re, _, hasMagic, uflag] = typeof p === 'string' ?
-                    AST.#parseGlob(p, this.#hasMagic, noEmpty)
+                    _a.#parseGlob(p, this.#hasMagic, noEmpty)
                     : p.toRegExpSource(allowDot);
                 this.#hasMagic = this.#hasMagic || hasMagic;
                 this.#uflag = this.#uflag || uflag;
@@ -483,12 +691,12 @@ export class AST {
             // invalid extglob, has to at least be *something* present, if it's
             // the entire path portion.
             const s = this.toString();
-            this.#parts = [s];
-            this.type = null;
-            this.#hasMagic = undefined;
+            const me = this;
+            me.#parts = [s];
+            me.type = null;
+            me.#hasMagic = undefined;
             return [s, unescape(this.toString()), false, false];
         }
-        // XXX abstract out this map method
         let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?
             ''
             : this.#partsToRegExp(true);
@@ -524,6 +732,42 @@ export class AST {
             this.#uflag,
         ];
     }
+    #flatten() {
+        if (!isExtglobAST(this)) {
+            for (const p of this.#parts) {
+                if (typeof p === 'object') {
+                    p.#flatten();
+                }
+            }
+        }
+        else {
+            // do up to 10 passes to flatten as much as possible
+            let iterations = 0;
+            let done = false;
+            do {
+                done = true;
+                for (let i = 0; i < this.#parts.length; i++) {
+                    const c = this.#parts[i];
+                    if (typeof c === 'object') {
+                        c.#flatten();
+                        if (this.#canAdopt(c)) {
+                            done = false;
+                            this.#adopt(c, i);
+                        }
+                        else if (this.#canAdoptWithSpace(c)) {
+                            done = false;
+                            this.#adoptWithSpace(c, i);
+                        }
+                        else if (this.#canUsurp(c)) {
+                            done = false;
+                            this.#usurp(c);
+                        }
+                    }
+                }
+            } while (!done && ++iterations < 10);
+        }
+        this.#toString = undefined;
+    }
     #partsToRegExp(dot) {
         return this.#parts
             .map(p => {
@@ -594,4 +838,5 @@ export class AST {
         return [re, unescape(glob), !!hasMagic, uflag];
     }
 }
+_a = AST;
 //# sourceMappingURL=ast.js.map
\ No newline at end of file
diff --git a/deps/npm/node_modules/minimatch/dist/esm/index.js b/deps/npm/node_modules/minimatch/dist/esm/index.js
index 3175327db5efbf..ac45d7c48e309f 100644
--- a/deps/npm/node_modules/minimatch/dist/esm/index.js
+++ b/deps/npm/node_modules/minimatch/dist/esm/index.js
@@ -193,11 +193,13 @@ export class Minimatch {
     isWindows;
     platform;
     windowsNoMagicRoot;
+    maxGlobstarRecursion;
     regexp;
     constructor(pattern, options = {}) {
         assertValidPattern(pattern);
         options = options || {};
         this.options = options;
+        this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;
         this.pattern = pattern;
         this.platform = options.platform || defaultPlatform;
         this.isWindows = this.platform === 'win32';
@@ -602,7 +604,8 @@ export class Minimatch {
     // out of pattern, then that's fine, as long as all
     // the parts match.
     matchOne(file, pattern, partial = false) {
-        const options = this.options;
+        let fileStartIndex = 0;
+        let patternStartIndex = 0;
         // UNC paths like //?/X:/... can match X:/... and vice versa
         // Drive letters in absolute drive or unc paths are always compared
         // case-insensitively.
@@ -631,14 +634,11 @@ export class Minimatch {
                     file[fdi],
                     pattern[pdi],
                 ];
+                // start matching at the drive letter index of each
                 if (fd.toLowerCase() === pd.toLowerCase()) {
                     pattern[pdi] = fd;
-                    if (pdi > fdi) {
-                        pattern = pattern.slice(pdi);
-                    }
-                    else if (fdi > pdi) {
-                        file = file.slice(fdi);
-                    }
+                    patternStartIndex = pdi;
+                    fileStartIndex = fdi;
                 }
             }
         }
@@ -648,99 +648,185 @@ export class Minimatch {
         if (optimizationLevel >= 2) {
             file = this.levelTwoFileOptimize(file);
         }
-        this.debug('matchOne', this, { file, pattern });
-        this.debug('matchOne', file.length, pattern.length);
-        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+        if (pattern.includes(GLOBSTAR)) {
+            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);
+        }
+        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);
+    }
+    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {
+        // split the pattern into head, tail, and middle of ** delimited parts
+        const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);
+        const lastgs = pattern.lastIndexOf(GLOBSTAR);
+        // split the pattern up into globstar-delimited sections
+        // the tail has to be at the end, and the others just have
+        // to be found in order from the head.
+        const [head, body, tail] = partial ? [
+            pattern.slice(patternIndex, firstgs),
+            pattern.slice(firstgs + 1),
+            [],
+        ] : [
+            pattern.slice(patternIndex, firstgs),
+            pattern.slice(firstgs + 1, lastgs),
+            pattern.slice(lastgs + 1),
+        ];
+        // check the head, from the current file/pattern index.
+        if (head.length) {
+            const fileHead = file.slice(fileIndex, fileIndex + head.length);
+            if (!this.#matchOne(fileHead, head, partial, 0, 0)) {
+                return false;
+            }
+            fileIndex += head.length;
+            patternIndex += head.length;
+        }
+        // now we know the head matches!
+        // if the last portion is not empty, it MUST match the end
+        // check the tail
+        let fileTailMatch = 0;
+        if (tail.length) {
+            // if head + tail > file, then we cannot possibly match
+            if (tail.length + fileIndex > file.length)
+                return false;
+            // try to match the tail
+            let tailStart = file.length - tail.length;
+            if (this.#matchOne(file, tail, partial, tailStart, 0)) {
+                fileTailMatch = tail.length;
+            }
+            else {
+                // affordance for stuff like a/**/* matching a/b/
+                // if the last file portion is '', and there's more to the pattern
+                // then try without the '' bit.
+                if (file[file.length - 1] !== '' ||
+                    fileIndex + tail.length === file.length) {
+                    return false;
+                }
+                tailStart--;
+                if (!this.#matchOne(file, tail, partial, tailStart, 0)) {
+                    return false;
+                }
+                fileTailMatch = tail.length + 1;
+            }
+        }
+        // now we know the tail matches!
+        // the middle is zero or more portions wrapped in **, possibly
+        // containing more ** sections.
+        // so a/**/b/**/c/**/d has become **/b/**/c/**
+        // if it's empty, it means a/**/b, just verify we have no bad dots
+        // if there's no tail, so it ends on /**, then we must have *something*
+        // after the head, or it's not a matc
+        if (!body.length) {
+            let sawSome = !!fileTailMatch;
+            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {
+                const f = String(file[i]);
+                sawSome = true;
+                if (f === '.' ||
+                    f === '..' ||
+                    (!this.options.dot && f.startsWith('.'))) {
+                    return false;
+                }
+            }
+            // in partial mode, we just need to get past all file parts
+            return partial || sawSome;
+        }
+        // now we know that there's one or more body sections, which can
+        // be matched anywhere from the 0 index (because the head was pruned)
+        // through to the length-fileTailMatch index.
+        // split the body up into sections, and note the minimum index it can
+        // be found at (start with the length of all previous segments)
+        // [section, before, after]
+        const bodySegments = [[[], 0]];
+        let currentBody = bodySegments[0];
+        let nonGsParts = 0;
+        const nonGsPartsSums = [0];
+        for (const b of body) {
+            if (b === GLOBSTAR) {
+                nonGsPartsSums.push(nonGsParts);
+                currentBody = [[], 0];
+                bodySegments.push(currentBody);
+            }
+            else {
+                currentBody[0].push(b);
+                nonGsParts++;
+            }
+        }
+        let i = bodySegments.length - 1;
+        const fileLength = file.length - fileTailMatch;
+        for (const b of bodySegments) {
+            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);
+        }
+        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);
+    }
+    // return false for "nope, not matching"
+    // return null for "not matching, cannot keep trying"
+    #matchGlobStarBodySections(file,
+    // pattern section, last possible position for it
+    bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {
+        // take the first body segment, and walk from fileIndex to its "after"
+        // value at the end
+        // If it doesn't match at that position, we increment, until we hit
+        // that final possible position, and give up.
+        // If it does match, then advance and try to rest.
+        // If any of them fail we keep walking forward.
+        // this is still a bit recursively painful, but it's more constrained
+        // than previous implementations, because we never test something that
+        // can't possibly be a valid matching condition.
+        const bs = bodySegments[bodyIndex];
+        if (!bs) {
+            // just make sure that there's no bad dots
+            for (let i = fileIndex; i < file.length; i++) {
+                sawTail = true;
+                const f = file[i];
+                if (f === '.' ||
+                    f === '..' ||
+                    (!this.options.dot && f.startsWith('.'))) {
+                    return false;
+                }
+            }
+            return sawTail;
+        }
+        // have a non-globstar body section to test
+        const [body, after] = bs;
+        while (fileIndex <= after) {
+            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);
+            // if limit exceeded, no match. intentional false negative,
+            // acceptable break in correctness for security.
+            if (m && globStarDepth < this.maxGlobstarRecursion) {
+                // match! see if the rest match. if so, we're done!
+                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);
+                if (sub !== false) {
+                    return sub;
+                }
+            }
+            const f = file[fileIndex];
+            if (f === '.' ||
+                f === '..' ||
+                (!this.options.dot && f.startsWith('.'))) {
+                return false;
+            }
+            fileIndex++;
+        }
+        // walked off. no point continuing
+        return partial || null;
+    }
+    #matchOne(file, pattern, partial, fileIndex, patternIndex) {
+        let fi;
+        let pi;
+        let pl;
+        let fl;
+        for (fi = fileIndex,
+            pi = patternIndex,
+            fl = file.length,
+            pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
             this.debug('matchOne loop');
-            var p = pattern[pi];
-            var f = file[fi];
+            let p = pattern[pi];
+            let f = file[fi];
             this.debug(pattern, p, f);
             // should be impossible.
             // some invalid regexp stuff in the set.
             /* c8 ignore start */
-            if (p === false) {
+            if (p === false || p === GLOBSTAR) {
                 return false;
             }
             /* c8 ignore stop */
-            if (p === GLOBSTAR) {
-                this.debug('GLOBSTAR', [pattern, p, f]);
-                // "**"
-                // a/**/b/**/c would match the following:
-                // a/b/x/y/z/c
-                // a/x/y/z/b/c
-                // a/b/x/b/x/c
-                // a/b/c
-                // To do this, take the rest of the pattern after
-                // the **, and see if it would match the file remainder.
-                // If so, return success.
-                // If not, the ** "swallows" a segment, and try again.
-                // This is recursively awful.
-                //
-                // a/**/b/**/c matching a/b/x/y/z/c
-                // - a matches a
-                // - doublestar
-                //   - matchOne(b/x/y/z/c, b/**/c)
-                //     - b matches b
-                //     - doublestar
-                //       - matchOne(x/y/z/c, c) -> no
-                //       - matchOne(y/z/c, c) -> no
-                //       - matchOne(z/c, c) -> no
-                //       - matchOne(c, c) yes, hit
-                var fr = fi;
-                var pr = pi + 1;
-                if (pr === pl) {
-                    this.debug('** at the end');
-                    // a ** at the end will just swallow the rest.
-                    // We have found a match.
-                    // however, it will not swallow /.x, unless
-                    // options.dot is set.
-                    // . and .. are *never* matched by **, for explosively
-                    // exponential reasons.
-                    for (; fi < fl; fi++) {
-                        if (file[fi] === '.' ||
-                            file[fi] === '..' ||
-                            (!options.dot && file[fi].charAt(0) === '.'))
-                            return false;
-                    }
-                    return true;
-                }
-                // ok, let's see if we can swallow whatever we can.
-                while (fr < fl) {
-                    var swallowee = file[fr];
-                    this.debug('\nglobstar while', file, fr, pattern, pr, swallowee);
-                    // XXX remove this slice.  Just pass the start index.
-                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
-                        this.debug('globstar found match!', fr, fl, swallowee);
-                        // found a match.
-                        return true;
-                    }
-                    else {
-                        // can't swallow "." or ".." ever.
-                        // can only swallow ".foo" when explicitly asked.
-                        if (swallowee === '.' ||
-                            swallowee === '..' ||
-                            (!options.dot && swallowee.charAt(0) === '.')) {
-                            this.debug('dot detected!', file, fr, pattern, pr);
-                            break;
-                        }
-                        // ** swallows a segment, and continue.
-                        this.debug('globstar swallow a segment, and continue');
-                        fr++;
-                    }
-                }
-                // no match was found.
-                // However, in partial mode, we can't say this is necessarily over.
-                /* c8 ignore start */
-                if (partial) {
-                    // ran out of file
-                    this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
-                    if (fr === fl) {
-                        return true;
-                    }
-                }
-                /* c8 ignore stop */
-                return false;
-            }
             // something other than **
             // non-magic patterns just have to match exactly
             // patterns with magic have been turned into regexps.
diff --git a/deps/npm/node_modules/minimatch/package.json b/deps/npm/node_modules/minimatch/package.json
index 6d4fc25af97a05..7967489f17fe98 100644
--- a/deps/npm/node_modules/minimatch/package.json
+++ b/deps/npm/node_modules/minimatch/package.json
@@ -2,7 +2,7 @@
   "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
   "name": "minimatch",
   "description": "a glob matcher in javascript",
-  "version": "10.2.2",
+  "version": "10.2.4",
   "repository": {
     "type": "git",
     "url": "git@github.com:isaacs/minimatch"
@@ -45,7 +45,7 @@
     "@types/node": "^25.3.0",
     "mkdirp": "^3.0.1",
     "prettier": "^3.6.2",
-    "tap": "^21.6.1",
+    "tap": "^21.6.2",
     "tshy": "^3.0.2",
     "typedoc": "^0.28.5"
   },
diff --git a/deps/npm/node_modules/pacote/lib/registry.js b/deps/npm/node_modules/pacote/lib/registry.js
index 1bfee0dd5e2990..f50b27956dbeb6 100644
--- a/deps/npm/node_modules/pacote/lib/registry.js
+++ b/deps/npm/node_modules/pacote/lib/registry.js
@@ -342,6 +342,7 @@ class RegistryFetcher extends Fetcher {
             }
           }
           mani._attestations = dist.attestations
+          mani._attestationBundles = attestations
         } else {
           mani._attestations = dist.attestations
         }
diff --git a/deps/npm/node_modules/pacote/package.json b/deps/npm/node_modules/pacote/package.json
index 566ad698cf89ec..d7dfa447f6abd8 100644
--- a/deps/npm/node_modules/pacote/package.json
+++ b/deps/npm/node_modules/pacote/package.json
@@ -1,6 +1,6 @@
 {
   "name": "pacote",
-  "version": "21.4.0",
+  "version": "21.5.0",
   "description": "JavaScript package downloader",
   "author": "GitHub Inc.",
   "bin": {
@@ -28,7 +28,7 @@
   "devDependencies": {
     "@npmcli/arborist": "^9.0.2",
     "@npmcli/eslint-config": "^6.0.0",
-    "@npmcli/template-oss": "4.28.0",
+    "@npmcli/template-oss": "4.29.0",
     "hosted-git-info": "^9.0.0",
     "mutate-fs": "^2.1.1",
     "nock": "^13.2.4",
@@ -73,7 +73,7 @@
   },
   "templateOSS": {
     "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
-    "version": "4.28.0",
+    "version": "4.29.0",
     "windowsCI": false,
     "publish": "true"
   }
diff --git a/deps/npm/node_modules/tar/dist/commonjs/index.min.js b/deps/npm/node_modules/tar/dist/commonjs/index.min.js
index 4ae8fa0dbc3e38..d7e71f819af1a5 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/index.min.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/index.min.js
@@ -1,4 +1,4 @@
-"use strict";var d=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var We=d(C=>{"use strict";var yo=C&&C.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(C,"__esModule",{value:!0});C.Minipass=C.isWritable=C.isReadable=C.isStream=void 0;var Br=typeof process=="object"&&process?process:{stdout:null,stderr:null},es=require("node:events"),xr=yo(require("node:stream")),Eo=require("node:string_decoder"),bo=s=>!!s&&typeof s=="object"&&(s instanceof Wt||s instanceof xr.default||(0,C.isReadable)(s)||(0,C.isWritable)(s));C.isStream=bo;var So=s=>!!s&&typeof s=="object"&&s instanceof es.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==xr.default.Writable.prototype.pipe;C.isReadable=So;var go=s=>!!s&&typeof s=="object"&&s instanceof es.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function";C.isWritable=go;var le=Symbol("EOF"),ue=Symbol("maybeEmitEnd"),_e=Symbol("emittedEnd"),zt=Symbol("emittingEnd"),ft=Symbol("emittedError"),kt=Symbol("closed"),zr=Symbol("read"),jt=Symbol("flush"),kr=Symbol("flushChunk"),K=Symbol("encoding"),Ue=Symbol("decoder"),R=Symbol("flowing"),dt=Symbol("paused"),qe=Symbol("resume"),O=Symbol("buffer"),I=Symbol("pipes"),v=Symbol("bufferLength"),Ki=Symbol("bufferPush"),xt=Symbol("bufferShift"),N=Symbol("objectMode"),y=Symbol("destroyed"),Vi=Symbol("error"),$i=Symbol("emitData"),jr=Symbol("emitEnd"),Xi=Symbol("emitEnd2"),J=Symbol("async"),Qi=Symbol("abort"),Ut=Symbol("aborted"),mt=Symbol("signal"),Pe=Symbol("dataListeners"),k=Symbol("discarded"),pt=s=>Promise.resolve().then(s),Ro=s=>s(),Oo=s=>s==="end"||s==="finish"||s==="prefinish",vo=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,To=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),qt=class{src;dest;opts;ondrain;constructor(e,t,i){this.src=e,this.dest=t,this.opts=i,this.ondrain=()=>e[qe](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},Ji=class extends qt{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,i){super(e,t,i),this.proxyErrors=r=>t.emit("error",r),e.on("error",this.proxyErrors)}},Do=s=>!!s.objectMode,Po=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",Wt=class extends es.EventEmitter{[R]=!1;[dt]=!1;[I]=[];[O]=[];[N];[K];[J];[Ue];[le]=!1;[_e]=!1;[zt]=!1;[kt]=!1;[ft]=null;[v]=0;[y]=!1;[mt];[Ut]=!1;[Pe]=0;[k]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Do(t)?(this[N]=!0,this[K]=null):Po(t)?(this[K]=t.encoding,this[N]=!1):(this[N]=!1,this[K]=null),this[J]=!!t.async,this[Ue]=this[K]?new Eo.StringDecoder(this[K]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[O]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[I]});let{signal:i}=t;i&&(this[mt]=i,i.aborted?this[Qi]():i.addEventListener("abort",()=>this[Qi]()))}get bufferLength(){return this[v]}get encoding(){return this[K]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[N]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[J]}set async(e){this[J]=this[J]||!!e}[Qi](){this[Ut]=!0,this.emit("abort",this[mt]?.reason),this.destroy(this[mt]?.reason)}get aborted(){return this[Ut]}set aborted(e){}write(e,t,i){if(this[Ut])return!1;if(this[le])throw new Error("write after end");if(this[y])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(i=t,t="utf8"),t||(t="utf8");let r=this[J]?pt:Ro;if(!this[N]&&!Buffer.isBuffer(e)){if(To(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(vo(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[N]?(this[R]&&this[v]!==0&&this[jt](!0),this[R]?this.emit("data",e):this[Ki](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):e.length?(typeof e=="string"&&!(t===this[K]&&!this[Ue]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[K]&&(e=this[Ue].write(e)),this[R]&&this[v]!==0&&this[jt](!0),this[R]?this.emit("data",e):this[Ki](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):(this[v]!==0&&this.emit("readable"),i&&r(i),this[R])}read(e){if(this[y])return null;if(this[k]=!1,this[v]===0||e===0||e&&e>this[v])return this[ue](),null;this[N]&&(e=null),this[O].length>1&&!this[N]&&(this[O]=[this[K]?this[O].join(""):Buffer.concat(this[O],this[v])]);let t=this[zr](e||null,this[O][0]);return this[ue](),t}[zr](e,t){if(this[N])this[xt]();else{let i=t;e===i.length||e===null?this[xt]():typeof i=="string"?(this[O][0]=i.slice(e),t=i.slice(0,e),this[v]-=e):(this[O][0]=i.subarray(e),t=i.subarray(0,e),this[v]-=e)}return this.emit("data",t),!this[O].length&&!this[le]&&this.emit("drain"),t}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t="utf8"),e!==void 0&&this.write(e,t),i&&this.once("end",i),this[le]=!0,this.writable=!1,(this[R]||!this[dt])&&this[ue](),this}[qe](){this[y]||(!this[Pe]&&!this[I].length&&(this[k]=!0),this[dt]=!1,this[R]=!0,this.emit("resume"),this[O].length?this[jt]():this[le]?this[ue]():this.emit("drain"))}resume(){return this[qe]()}pause(){this[R]=!1,this[dt]=!0,this[k]=!1}get destroyed(){return this[y]}get flowing(){return this[R]}get paused(){return this[dt]}[Ki](e){this[N]?this[v]+=1:this[v]+=e.length,this[O].push(e)}[xt](){return this[N]?this[v]-=1:this[v]-=this[O][0].length,this[O].shift()}[jt](e=!1){do;while(this[kr](this[xt]())&&this[O].length);!e&&!this[O].length&&!this[le]&&this.emit("drain")}[kr](e){return this.emit("data",e),this[R]}pipe(e,t){if(this[y])return e;this[k]=!1;let i=this[_e];return t=t||{},e===Br.stdout||e===Br.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,i?t.end&&e.end():(this[I].push(t.proxyErrors?new Ji(this,e,t):new qt(this,e,t)),this[J]?pt(()=>this[qe]()):this[qe]()),e}unpipe(e){let t=this[I].find(i=>i.dest===e);t&&(this[I].length===1?(this[R]&&this[Pe]===0&&(this[R]=!1),this[I]=[]):this[I].splice(this[I].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let i=super.on(e,t);if(e==="data")this[k]=!1,this[Pe]++,!this[I].length&&!this[R]&&this[qe]();else if(e==="readable"&&this[v]!==0)super.emit("readable");else if(Oo(e)&&this[_e])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[ft]){let r=t;this[J]?pt(()=>r.call(this,this[ft])):r.call(this,this[ft])}return i}removeListener(e,t){return this.off(e,t)}off(e,t){let i=super.off(e,t);return e==="data"&&(this[Pe]=this.listeners("data").length,this[Pe]===0&&!this[k]&&!this[I].length&&(this[R]=!1)),i}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Pe]=0,!this[k]&&!this[I].length&&(this[R]=!1)),t}get emittedEnd(){return this[_e]}[ue](){!this[zt]&&!this[_e]&&!this[y]&&this[O].length===0&&this[le]&&(this[zt]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[kt]&&this.emit("close"),this[zt]=!1)}emit(e,...t){let i=t[0];if(e!=="error"&&e!=="close"&&e!==y&&this[y])return!1;if(e==="data")return!this[N]&&!i?!1:this[J]?(pt(()=>this[$i](i)),!0):this[$i](i);if(e==="end")return this[jr]();if(e==="close"){if(this[kt]=!0,!this[_e]&&!this[y])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[ft]=i,super.emit(Vi,i);let n=!this[mt]||this.listeners("error").length?super.emit("error",i):!1;return this[ue](),n}else if(e==="resume"){let n=super.emit("resume");return this[ue](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let r=super.emit(e,...t);return this[ue](),r}[$i](e){for(let i of this[I])i.dest.write(e)===!1&&this.pause();let t=this[k]?!1:super.emit("data",e);return this[ue](),t}[jr](){return this[_e]?!1:(this[_e]=!0,this.readable=!1,this[J]?(pt(()=>this[Xi]()),!0):this[Xi]())}[Xi](){if(this[Ue]){let t=this[Ue].end();if(t){for(let i of this[I])i.dest.write(t);this[k]||super.emit("data",t)}}for(let t of this[I])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[N]||(e.dataLength=0);let t=this.promise();return this.on("data",i=>{e.push(i),this[N]||(e.dataLength+=i.length)}),await t,e}async concat(){if(this[N])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[K]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(y,()=>t(new Error("stream destroyed"))),this.on("error",i=>t(i)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[k]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[le])return t();let n,o,a=c=>{this.off("data",h),this.off("end",l),this.off(y,u),t(),o(c)},h=c=>{this.off("error",a),this.off("end",l),this.off(y,u),this.pause(),n({value:c,done:!!this[le]})},l=()=>{this.off("error",a),this.off("data",h),this.off(y,u),t(),n({done:!0,value:void 0})},u=()=>a(new Error("stream destroyed"));return new Promise((c,E)=>{o=E,n=c,this.once(y,u),this.once("error",a),this.once("end",l),this.once("data",h)})},throw:t,return:t,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[k]=!1;let e=!1,t=()=>(this.pause(),this.off(Vi,t),this.off(y,t),this.off("end",t),e=!0,{done:!0,value:void 0}),i=()=>{if(e)return t();let r=this.read();return r===null?t():{done:!1,value:r}};return this.once("end",t),this.once(Vi,t),this.once(y,t),{next:i,throw:t,return:t,[Symbol.iterator](){return this}}}destroy(e){if(this[y])return e?this.emit("error",e):this.emit(y),this;this[y]=!0,this[k]=!0,this[O].length=0,this[v]=0;let t=this;return typeof t.close=="function"&&!this[kt]&&t.close(),e?this.emit("error",e):this.emit(y),this}static get isStream(){return C.isStream}};C.Minipass=Wt});var Ke=d(W=>{"use strict";var Ur=W&&W.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(W,"__esModule",{value:!0});W.WriteStreamSync=W.WriteStream=W.ReadStreamSync=W.ReadStream=void 0;var No=Ur(require("events")),B=Ur(require("fs")),Mo=We(),Lo=B.default.writev,ye=Symbol("_autoClose"),$=Symbol("_close"),_t=Symbol("_ended"),p=Symbol("_fd"),ts=Symbol("_finished"),fe=Symbol("_flags"),is=Symbol("_flush"),os=Symbol("_handleChunk"),as=Symbol("_makeBuf"),yt=Symbol("_mode"),Ht=Symbol("_needDrain"),Ge=Symbol("_onerror"),Ye=Symbol("_onopen"),ss=Symbol("_onread"),He=Symbol("_onwrite"),Ee=Symbol("_open"),V=Symbol("_path"),we=Symbol("_pos"),ee=Symbol("_queue"),Ze=Symbol("_read"),rs=Symbol("_readSize"),ce=Symbol("_reading"),wt=Symbol("_remain"),ns=Symbol("_size"),Zt=Symbol("_write"),Ne=Symbol("_writing"),Gt=Symbol("_defaultFlag"),Me=Symbol("_errored"),Yt=class extends Mo.Minipass{[Me]=!1;[p];[V];[rs];[ce]=!1;[ns];[wt];[ye];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Me]=!1,this[p]=typeof t.fd=="number"?t.fd:void 0,this[V]=e,this[rs]=t.readSize||16*1024*1024,this[ce]=!1,this[ns]=typeof t.size=="number"?t.size:1/0,this[wt]=this[ns],this[ye]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[p]=="number"?this[Ze]():this[Ee]()}get fd(){return this[p]}get path(){return this[V]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Ee](){B.default.open(this[V],"r",(e,t)=>this[Ye](e,t))}[Ye](e,t){e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ze]())}[as](){return Buffer.allocUnsafe(Math.min(this[rs],this[wt]))}[Ze](){if(!this[ce]){this[ce]=!0;let e=this[as]();if(e.length===0)return process.nextTick(()=>this[ss](null,0,e));B.default.read(this[p],e,0,e.length,null,(t,i,r)=>this[ss](t,i,r))}}[ss](e,t,i){this[ce]=!1,e?this[Ge](e):this[os](t,i)&&this[Ze]()}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[Ge](e){this[ce]=!0,this[$](),this.emit("error",e)}[os](e,t){let i=!1;return this[wt]-=e,e>0&&(i=super.write(e<t.length?t.subarray(0,e):t)),(e===0||this[wt]<=0)&&(i=!1,this[$](),super.end()),i}emit(e,...t){switch(e){case"prefinish":case"finish":return!1;case"drain":return typeof this[p]=="number"&&this[Ze](),!1;case"error":return this[Me]?!1:(this[Me]=!0,super.emit(e,...t));default:return super.emit(e,...t)}}};W.ReadStream=Yt;var hs=class extends Yt{[Ee](){let e=!0;try{this[Ye](null,B.default.openSync(this[V],"r")),e=!1}finally{e&&this[$]()}}[Ze](){let e=!0;try{if(!this[ce]){this[ce]=!0;do{let t=this[as](),i=t.length===0?0:B.default.readSync(this[p],t,0,t.length,null);if(!this[os](i,t))break}while(!0);this[ce]=!1}e=!1}finally{e&&this[$]()}}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.closeSync(e),this.emit("close")}}};W.ReadStreamSync=hs;var Kt=class extends No.default{readable=!1;writable=!0;[Me]=!1;[Ne]=!1;[_t]=!1;[ee]=[];[Ht]=!1;[V];[yt];[ye];[p];[Gt];[fe];[ts]=!1;[we];constructor(e,t){t=t||{},super(t),this[V]=e,this[p]=typeof t.fd=="number"?t.fd:void 0,this[yt]=t.mode===void 0?438:t.mode,this[we]=typeof t.start=="number"?t.start:void 0,this[ye]=typeof t.autoClose=="boolean"?t.autoClose:!0;let i=this[we]!==void 0?"r+":"w";this[Gt]=t.flags===void 0,this[fe]=t.flags===void 0?i:t.flags,this[p]===void 0&&this[Ee]()}emit(e,...t){if(e==="error"){if(this[Me])return!1;this[Me]=!0}return super.emit(e,...t)}get fd(){return this[p]}get path(){return this[V]}[Ge](e){this[$](),this[Ne]=!0,this.emit("error",e)}[Ee](){B.default.open(this[V],this[fe],this[yt],(e,t)=>this[Ye](e,t))}[Ye](e,t){this[Gt]&&this[fe]==="r+"&&e&&e.code==="ENOENT"?(this[fe]="w",this[Ee]()):e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ne]||this[is]())}end(e,t){return e&&this.write(e,t),this[_t]=!0,!this[Ne]&&!this[ee].length&&typeof this[p]=="number"&&this[He](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[_t]?(this.emit("error",new Error("write() after end()")),!1):this[p]===void 0||this[Ne]||this[ee].length?(this[ee].push(e),this[Ht]=!0,!1):(this[Ne]=!0,this[Zt](e),!0)}[Zt](e){B.default.write(this[p],e,0,e.length,this[we],(t,i)=>this[He](t,i))}[He](e,t){e?this[Ge](e):(this[we]!==void 0&&typeof t=="number"&&(this[we]+=t),this[ee].length?this[is]():(this[Ne]=!1,this[_t]&&!this[ts]?(this[ts]=!0,this[$](),this.emit("finish")):this[Ht]&&(this[Ht]=!1,this.emit("drain"))))}[is](){if(this[ee].length===0)this[_t]&&this[He](null,0);else if(this[ee].length===1)this[Zt](this[ee].pop());else{let e=this[ee];this[ee]=[],Lo(this[p],e,this[we],(t,i)=>this[He](t,i))}}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}};W.WriteStream=Kt;var ls=class extends Kt{[Ee](){let e;if(this[Gt]&&this[fe]==="r+")try{e=B.default.openSync(this[V],this[fe],this[yt])}catch(t){if(t?.code==="ENOENT")return this[fe]="w",this[Ee]();throw t}else e=B.default.openSync(this[V],this[fe],this[yt]);this[Ye](null,e)}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.closeSync(e),this.emit("close")}}[Zt](e){let t=!0;try{this[He](null,B.default.writeSync(this[p],e,0,e.length,this[we])),t=!1}finally{if(t)try{this[$]()}catch{}}}};W.WriteStreamSync=ls});var Vt=d(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.dealias=b.isNoFile=b.isFile=b.isAsync=b.isSync=b.isAsyncNoFile=b.isSyncNoFile=b.isAsyncFile=b.isSyncFile=void 0;var Ao=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),Io=s=>!!s.sync&&!!s.file;b.isSyncFile=Io;var Co=s=>!s.sync&&!!s.file;b.isAsyncFile=Co;var Fo=s=>!!s.sync&&!s.file;b.isSyncNoFile=Fo;var Bo=s=>!s.sync&&!s.file;b.isAsyncNoFile=Bo;var zo=s=>!!s.sync;b.isSync=zo;var ko=s=>!s.sync;b.isAsync=ko;var jo=s=>!!s.file;b.isFile=jo;var xo=s=>!s.file;b.isNoFile=xo;var Uo=s=>{let e=Ao.get(s);return e||s},qo=(s={})=>{if(!s)return{};let e={};for(let[t,i]of Object.entries(s)){let r=Uo(t);e[r]=i}return e.chmod===void 0&&e.noChmod===!1&&(e.chmod=!0),delete e.noChmod,e};b.dealias=qo});var Ve=d($t=>{"use strict";Object.defineProperty($t,"__esModule",{value:!0});$t.makeCommand=void 0;var Et=Vt(),Wo=(s,e,t,i,r)=>Object.assign((n=[],o,a)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(a=o,o=void 0),o?o=Array.from(o):o=[];let h=(0,Et.dealias)(n);if(r?.(h,o),(0,Et.isSyncFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return s(h,o)}else if((0,Et.isAsyncFile)(h)){let l=e(h,o),u=a||void 0;return u?l.then(()=>u(),u):l}else if((0,Et.isSyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return t(h,o)}else if((0,Et.isAsyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback only supported with file option");return i(h,o)}else throw new Error("impossible options??")},{syncFile:s,asyncFile:e,syncNoFile:t,asyncNoFile:i,validate:r});$t.makeCommand=Wo});var us=d($e=>{"use strict";var Ho=$e&&$e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty($e,"__esModule",{value:!0});$e.constants=void 0;var Zo=Ho(require("zlib")),Go=Zo.default.constants||{ZLIB_VERNUM:4736};$e.constants=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Go))});var vs=d(f=>{"use strict";var Yo=f&&f.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ko=f&&f.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Vo=f&&f.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&Yo(t,e,i[r]);return Ko(t,e),t}})(),$o=f&&f.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(f,"__esModule",{value:!0});f.ZstdDecompress=f.ZstdCompress=f.BrotliDecompress=f.BrotliCompress=f.Unzip=f.InflateRaw=f.DeflateRaw=f.Gunzip=f.Gzip=f.Inflate=f.Deflate=f.Zlib=f.ZlibError=f.constants=void 0;var ds=$o(require("assert")),Le=require("buffer"),Xo=We(),qr=Vo(require("zlib")),te=us(),Qo=us();Object.defineProperty(f,"constants",{enumerable:!0,get:function(){return Qo.constants}});var Jo=Le.Buffer.concat,Wr=Object.getOwnPropertyDescriptor(Le.Buffer,"concat"),ea=s=>s,cs=Wr?.writable===!0||Wr?.set!==void 0?s=>{Le.Buffer.concat=s?ea:Jo}:s=>{},Ae=Symbol("_superWrite"),Ie=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}};f.ZlibError=Ie;var fs=Symbol("flushFlag"),bt=class extends Xo.Minipass{#e=!1;#i=!1;#s;#n;#r;#t;#o;get sawError(){return this.#e}get handle(){return this.#t}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#n=e.finishFlush??0,this.#r=e.fullFlushFlag??0,typeof qr[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#t=new qr[t](e)}catch(i){throw new Ie(i,this.constructor)}this.#o=i=>{this.#e||(this.#e=!0,this.close(),this.emit("error",i))},this.#t?.on("error",i=>this.#o(new Ie(i))),this.once("end",()=>this.close)}close(){this.#t&&(this.#t.close(),this.#t=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,ds.default)(this.#t,"zlib binding closed"),this.#t.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#r),this.write(Object.assign(Le.Buffer.alloc(0),{[fs]:e})))}end(e,t,i){return typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ae](e){return super.write(e)}write(e,t,i){if(typeof t=="function"&&(i=t,t="utf8"),typeof e=="string"&&(e=Le.Buffer.from(e,t)),this.#e)return;(0,ds.default)(this.#t,"zlib binding closed");let r=this.#t._handle,n=r.close;r.close=()=>{};let o=this.#t.close;this.#t.close=()=>{},cs(!0);let a;try{let l=typeof e[fs]=="number"?e[fs]:this.#s;a=this.#t._processChunk(e,l),cs(!1)}catch(l){cs(!1),this.#o(new Ie(l,this.write))}finally{this.#t&&(this.#t._handle=r,r.close=n,this.#t.close=o,this.#t.removeAllListeners("error"))}this.#t&&this.#t.on("error",l=>this.#o(new Ie(l,this.write)));let h;if(a)if(Array.isArray(a)&&a.length>0){let l=a[0];h=this[Ae](Le.Buffer.from(l));for(let u=1;u<a.length;u++)h=this[Ae](a[u])}else h=this[Ae](Le.Buffer.from(a));return i&&i(),h}},ie=class extends bt{#e;#i;constructor(e,t){e=e||{},e.flush=e.flush||te.constants.Z_NO_FLUSH,e.finishFlush=e.finishFlush||te.constants.Z_FINISH,e.fullFlushFlag=te.constants.Z_FULL_FLUSH,super(e,t),this.#e=e.level,this.#i=e.strategy}params(e,t){if(!this.sawError){if(!this.handle)throw new Error("cannot switch params when binding is closed");if(!this.handle.params)throw new Error("not supported in this implementation");if(this.#e!==e||this.#i!==t){this.flush(te.constants.Z_SYNC_FLUSH),(0,ds.default)(this.handle,"zlib binding closed");let i=this.handle.flush;this.handle.flush=(r,n)=>{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(e,t)}finally{this.handle.flush=i}this.handle&&(this.#e=e,this.#i=t)}}}};f.Zlib=ie;var ms=class extends ie{constructor(e){super(e,"Deflate")}};f.Deflate=ms;var ps=class extends ie{constructor(e){super(e,"Inflate")}};f.Inflate=ps;var _s=class extends ie{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[Ae](e){return this.#e?(this.#e=!1,e[9]=255,super[Ae](e)):super[Ae](e)}};f.Gzip=_s;var ws=class extends ie{constructor(e){super(e,"Gunzip")}};f.Gunzip=ws;var ys=class extends ie{constructor(e){super(e,"DeflateRaw")}};f.DeflateRaw=ys;var Es=class extends ie{constructor(e){super(e,"InflateRaw")}};f.InflateRaw=Es;var bs=class extends ie{constructor(e){super(e,"Unzip")}};f.Unzip=bs;var Xt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||te.constants.BROTLI_OPERATION_FINISH,e.fullFlushFlag=te.constants.BROTLI_OPERATION_FLUSH,super(e,t)}},Ss=class extends Xt{constructor(e){super(e,"BrotliCompress")}};f.BrotliCompress=Ss;var gs=class extends Xt{constructor(e){super(e,"BrotliDecompress")}};f.BrotliDecompress=gs;var Qt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.ZSTD_e_continue,e.finishFlush=e.finishFlush||te.constants.ZSTD_e_end,e.fullFlushFlag=te.constants.ZSTD_e_flush,super(e,t)}},Rs=class extends Qt{constructor(e){super(e,"ZstdCompress")}};f.ZstdCompress=Rs;var Os=class extends Qt{constructor(e){super(e,"ZstdDecompress")}};f.ZstdDecompress=Os});var Gr=d(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.parse=Xe.encode=void 0;var ta=(s,e)=>{if(Number.isSafeInteger(s))s<0?sa(s,e):ia(s,e);else throw Error("cannot encode number outside of javascript safe integer range");return e};Xe.encode=ta;var ia=(s,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=s&255,s=Math.floor(s/256)},sa=(s,e)=>{e[0]=255;var t=!1;s=s*-1;for(var i=e.length;i>1;i--){var r=s&255;s=Math.floor(s/256),t?e[i-1]=Hr(r):r===0?e[i-1]=0:(t=!0,e[i-1]=Zr(r))}},ra=s=>{let e=s[0],t=e===128?oa(s.subarray(1,s.length)):e===255?na(s):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t};Xe.parse=ra;var na=s=>{for(var e=s.length,t=0,i=!1,r=e-1;r>-1;r--){var n=Number(s[r]),o;i?o=Hr(n):n===0?o=n:(i=!0,o=Zr(n)),o!==0&&(t-=o*Math.pow(256,e-r-1))}return t},oa=s=>{for(var e=s.length,t=0,i=e-1;i>-1;i--){var r=Number(s[i]);r!==0&&(t+=r*Math.pow(256,e-i-1))}return t},Hr=s=>(255^s)&255,Zr=s=>(255^s)+1&255});var Ts=d(j=>{"use strict";Object.defineProperty(j,"__esModule",{value:!0});j.code=j.name=j.isName=j.isCode=void 0;var aa=s=>j.name.has(s);j.isCode=aa;var ha=s=>j.code.has(s);j.isName=ha;j.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);j.code=new Map(Array.from(j.name).map(s=>[s[1],s[0]]))});var Je=d(se=>{"use strict";var la=se&&se.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ua=se&&se.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Yr=se&&se.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&la(t,e,i[r]);return ua(t,e),t}})();Object.defineProperty(se,"__esModule",{value:!0});se.Header=void 0;var Qe=require("node:path"),Kr=Yr(Gr()),St=Yr(Ts()),Ns=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#e="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(e,t=0,i,r){Buffer.isBuffer(e)?this.decode(e,t||0,i,r):e&&this.#i(e)}decode(e,t,i,r){if(t||(t=0),!e||!(e.length>=t+512))throw new Error("need 512 bytes for header");this.path=i?.path??Ce(e,t,100),this.mode=i?.mode??r?.mode??be(e,t+100,8),this.uid=i?.uid??r?.uid??be(e,t+108,8),this.gid=i?.gid??r?.gid??be(e,t+116,8),this.size=i?.size??r?.size??be(e,t+124,12),this.mtime=i?.mtime??r?.mtime??Ds(e,t+136,12),this.cksum=be(e,t+148,12),r&&this.#i(r,!0),i&&this.#i(i);let n=Ce(e,t+156,1);if(St.isCode(n)&&(this.#e=n||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=Ce(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=i?.uname??r?.uname??Ce(e,t+265,32),this.gname=i?.gname??r?.gname??Ce(e,t+297,32),this.devmaj=i?.devmaj??r?.devmaj??be(e,t+329,8)??0,this.devmin=i?.devmin??r?.devmin??be(e,t+337,8)??0,e[t+475]!==0){let a=Ce(e,t+345,155);this.path=a+"/"+this.path}else{let a=Ce(e,t+345,130);a&&(this.path=a+"/"+this.path),this.atime=i?.atime??r?.atime??Ds(e,t+476,12),this.ctime=i?.ctime??r?.ctime??Ds(e,t+488,12)}let o=256;for(let a=t;a<t+148;a++)o+=e[a];for(let a=t+156;a<t+512;a++)o+=e[a];this.cksumValid=o===this.cksum,this.cksum===void 0&&o===256&&(this.nullBlock=!0)}#i(e,t=!1){Object.assign(this,Object.fromEntries(Object.entries(e).filter(([i,r])=>!(r==null||i==="path"&&t||i==="linkpath"&&t||i==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=ca(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Fe(e,t,100,n)||this.needPax,this.needPax=Se(e,t+100,8,this.mode)||this.needPax,this.needPax=Se(e,t+108,8,this.uid)||this.needPax,this.needPax=Se(e,t+116,8,this.gid)||this.needPax,this.needPax=Se(e,t+124,12,this.size)||this.needPax,this.needPax=Ps(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this.#e.charCodeAt(0),this.needPax=Fe(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Fe(e,t+265,32,this.uname)||this.needPax,this.needPax=Fe(e,t+297,32,this.gname)||this.needPax,this.needPax=Se(e,t+329,8,this.devmaj)||this.needPax,this.needPax=Se(e,t+337,8,this.devmin)||this.needPax,this.needPax=Fe(e,t+345,i,o)||this.needPax,e[t+475]!==0?this.needPax=Fe(e,t+345,155,o)||this.needPax:(this.needPax=Fe(e,t+345,130,o)||this.needPax,this.needPax=Ps(e,t+476,12,this.atime)||this.needPax,this.needPax=Ps(e,t+488,12,this.ctime)||this.needPax);let a=256;for(let h=t;h<t+148;h++)a+=e[h];for(let h=t+156;h<t+512;h++)a+=e[h];return this.cksum=a,Se(e,t+148,8,this.cksum),this.cksumValid=!0,this.needPax}get type(){return this.#e==="Unsupported"?this.#e:St.name.get(this.#e)}get typeKey(){return this.#e}set type(e){let t=String(St.code.get(e));if(St.isCode(t)||t==="Unsupported")this.#e=t;else if(St.isCode(e))this.#e=e;else throw new TypeError("invalid entry type: "+e)}};se.Header=Ns;var ca=(s,e)=>{let i=s,r="",n,o=Qe.posix.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Qe.posix.dirname(i),i=Qe.posix.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=e?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=e?n=[i.slice(0,99),r,!0]:(i=Qe.posix.join(Qe.posix.basename(r),i),r=Qe.posix.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Ce=(s,e,t)=>s.subarray(e,e+t).toString("utf8").replace(/\0.*/,""),Ds=(s,e,t)=>fa(be(s,e,t)),fa=s=>s===void 0?void 0:new Date(s*1e3),be=(s,e,t)=>Number(s[e])&128?Kr.parse(s.subarray(e,e+t)):ma(s,e,t),da=s=>isNaN(s)?void 0:s,ma=(s,e,t)=>da(parseInt(s.subarray(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),pa={12:8589934591,8:2097151},Se=(s,e,t,i)=>i===void 0?!1:i>pa[t]||i<0?(Kr.encode(i,s.subarray(e,e+t)),!0):(_a(s,e,t,i),!1),_a=(s,e,t,i)=>s.write(wa(i,t),e,t,"ascii"),wa=(s,e)=>ya(Math.floor(s).toString(8),e),ya=(s,e)=>(s.length===e-1?s:new Array(e-s.length-1).join("0")+s+" ")+"\0",Ps=(s,e,t,i)=>i===void 0?!1:Se(s,e,t,i.getTime()/1e3),Ea=new Array(156).join("\0"),Fe=(s,e,t,i)=>i===void 0?!1:(s.write(i+Ea,e,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t)});var ei=d(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.Pax=void 0;var ba=require("node:path"),Sa=Je(),Ms=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(e,t=!1){this.atime=e.atime,this.charset=e.charset,this.comment=e.comment,this.ctime=e.ctime,this.dev=e.dev,this.gid=e.gid,this.global=t,this.gname=e.gname,this.ino=e.ino,this.linkpath=e.linkpath,this.mtime=e.mtime,this.nlink=e.nlink,this.path=e.path,this.size=e.size,this.uid=e.uid,this.uname=e.uname}encode(){let e=this.encodeBody();if(e==="")return Buffer.allocUnsafe(0);let t=Buffer.byteLength(e),i=512*Math.ceil(1+t/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new Sa.Header({path:("PaxHeader/"+(0,ba.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:t,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(e,512,t,"utf8");for(let n=t+512;n<r.length;n++)r[n]=0;return r}encodeBody(){return this.encodeField("path")+this.encodeField("ctime")+this.encodeField("atime")+this.encodeField("dev")+this.encodeField("ino")+this.encodeField("nlink")+this.encodeField("charset")+this.encodeField("comment")+this.encodeField("gid")+this.encodeField("gname")+this.encodeField("linkpath")+this.encodeField("mtime")+this.encodeField("size")+this.encodeField("uid")+this.encodeField("uname")}encodeField(e){if(this[e]===void 0)return"";let t=this[e],i=t instanceof Date?t.getTime()/1e3:t,r=" "+(e==="dev"||e==="ino"||e==="nlink"?"SCHILY.":"")+e+"="+i+`
+"use strict";var d=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var We=d(C=>{"use strict";var yo=C&&C.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(C,"__esModule",{value:!0});C.Minipass=C.isWritable=C.isReadable=C.isStream=void 0;var Br=typeof process=="object"&&process?process:{stdout:null,stderr:null},es=require("node:events"),xr=yo(require("node:stream")),Eo=require("node:string_decoder"),bo=s=>!!s&&typeof s=="object"&&(s instanceof Wt||s instanceof xr.default||(0,C.isReadable)(s)||(0,C.isWritable)(s));C.isStream=bo;var So=s=>!!s&&typeof s=="object"&&s instanceof es.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==xr.default.Writable.prototype.pipe;C.isReadable=So;var go=s=>!!s&&typeof s=="object"&&s instanceof es.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function";C.isWritable=go;var le=Symbol("EOF"),ue=Symbol("maybeEmitEnd"),_e=Symbol("emittedEnd"),zt=Symbol("emittingEnd"),ft=Symbol("emittedError"),kt=Symbol("closed"),zr=Symbol("read"),jt=Symbol("flush"),kr=Symbol("flushChunk"),K=Symbol("encoding"),Ue=Symbol("decoder"),R=Symbol("flowing"),dt=Symbol("paused"),qe=Symbol("resume"),O=Symbol("buffer"),I=Symbol("pipes"),v=Symbol("bufferLength"),Ki=Symbol("bufferPush"),xt=Symbol("bufferShift"),N=Symbol("objectMode"),y=Symbol("destroyed"),Vi=Symbol("error"),$i=Symbol("emitData"),jr=Symbol("emitEnd"),Xi=Symbol("emitEnd2"),J=Symbol("async"),Qi=Symbol("abort"),Ut=Symbol("aborted"),mt=Symbol("signal"),Pe=Symbol("dataListeners"),k=Symbol("discarded"),pt=s=>Promise.resolve().then(s),Ro=s=>s(),Oo=s=>s==="end"||s==="finish"||s==="prefinish",vo=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,To=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),qt=class{src;dest;opts;ondrain;constructor(e,t,i){this.src=e,this.dest=t,this.opts=i,this.ondrain=()=>e[qe](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},Ji=class extends qt{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,i){super(e,t,i),this.proxyErrors=r=>this.dest.emit("error",r),e.on("error",this.proxyErrors)}},Do=s=>!!s.objectMode,Po=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",Wt=class extends es.EventEmitter{[R]=!1;[dt]=!1;[I]=[];[O]=[];[N];[K];[J];[Ue];[le]=!1;[_e]=!1;[zt]=!1;[kt]=!1;[ft]=null;[v]=0;[y]=!1;[mt];[Ut]=!1;[Pe]=0;[k]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Do(t)?(this[N]=!0,this[K]=null):Po(t)?(this[K]=t.encoding,this[N]=!1):(this[N]=!1,this[K]=null),this[J]=!!t.async,this[Ue]=this[K]?new Eo.StringDecoder(this[K]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[O]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[I]});let{signal:i}=t;i&&(this[mt]=i,i.aborted?this[Qi]():i.addEventListener("abort",()=>this[Qi]()))}get bufferLength(){return this[v]}get encoding(){return this[K]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[N]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[J]}set async(e){this[J]=this[J]||!!e}[Qi](){this[Ut]=!0,this.emit("abort",this[mt]?.reason),this.destroy(this[mt]?.reason)}get aborted(){return this[Ut]}set aborted(e){}write(e,t,i){if(this[Ut])return!1;if(this[le])throw new Error("write after end");if(this[y])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(i=t,t="utf8"),t||(t="utf8");let r=this[J]?pt:Ro;if(!this[N]&&!Buffer.isBuffer(e)){if(To(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(vo(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[N]?(this[R]&&this[v]!==0&&this[jt](!0),this[R]?this.emit("data",e):this[Ki](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):e.length?(typeof e=="string"&&!(t===this[K]&&!this[Ue]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[K]&&(e=this[Ue].write(e)),this[R]&&this[v]!==0&&this[jt](!0),this[R]?this.emit("data",e):this[Ki](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):(this[v]!==0&&this.emit("readable"),i&&r(i),this[R])}read(e){if(this[y])return null;if(this[k]=!1,this[v]===0||e===0||e&&e>this[v])return this[ue](),null;this[N]&&(e=null),this[O].length>1&&!this[N]&&(this[O]=[this[K]?this[O].join(""):Buffer.concat(this[O],this[v])]);let t=this[zr](e||null,this[O][0]);return this[ue](),t}[zr](e,t){if(this[N])this[xt]();else{let i=t;e===i.length||e===null?this[xt]():typeof i=="string"?(this[O][0]=i.slice(e),t=i.slice(0,e),this[v]-=e):(this[O][0]=i.subarray(e),t=i.subarray(0,e),this[v]-=e)}return this.emit("data",t),!this[O].length&&!this[le]&&this.emit("drain"),t}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t="utf8"),e!==void 0&&this.write(e,t),i&&this.once("end",i),this[le]=!0,this.writable=!1,(this[R]||!this[dt])&&this[ue](),this}[qe](){this[y]||(!this[Pe]&&!this[I].length&&(this[k]=!0),this[dt]=!1,this[R]=!0,this.emit("resume"),this[O].length?this[jt]():this[le]?this[ue]():this.emit("drain"))}resume(){return this[qe]()}pause(){this[R]=!1,this[dt]=!0,this[k]=!1}get destroyed(){return this[y]}get flowing(){return this[R]}get paused(){return this[dt]}[Ki](e){this[N]?this[v]+=1:this[v]+=e.length,this[O].push(e)}[xt](){return this[N]?this[v]-=1:this[v]-=this[O][0].length,this[O].shift()}[jt](e=!1){do;while(this[kr](this[xt]())&&this[O].length);!e&&!this[O].length&&!this[le]&&this.emit("drain")}[kr](e){return this.emit("data",e),this[R]}pipe(e,t){if(this[y])return e;this[k]=!1;let i=this[_e];return t=t||{},e===Br.stdout||e===Br.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,i?t.end&&e.end():(this[I].push(t.proxyErrors?new Ji(this,e,t):new qt(this,e,t)),this[J]?pt(()=>this[qe]()):this[qe]()),e}unpipe(e){let t=this[I].find(i=>i.dest===e);t&&(this[I].length===1?(this[R]&&this[Pe]===0&&(this[R]=!1),this[I]=[]):this[I].splice(this[I].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let i=super.on(e,t);if(e==="data")this[k]=!1,this[Pe]++,!this[I].length&&!this[R]&&this[qe]();else if(e==="readable"&&this[v]!==0)super.emit("readable");else if(Oo(e)&&this[_e])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[ft]){let r=t;this[J]?pt(()=>r.call(this,this[ft])):r.call(this,this[ft])}return i}removeListener(e,t){return this.off(e,t)}off(e,t){let i=super.off(e,t);return e==="data"&&(this[Pe]=this.listeners("data").length,this[Pe]===0&&!this[k]&&!this[I].length&&(this[R]=!1)),i}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Pe]=0,!this[k]&&!this[I].length&&(this[R]=!1)),t}get emittedEnd(){return this[_e]}[ue](){!this[zt]&&!this[_e]&&!this[y]&&this[O].length===0&&this[le]&&(this[zt]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[kt]&&this.emit("close"),this[zt]=!1)}emit(e,...t){let i=t[0];if(e!=="error"&&e!=="close"&&e!==y&&this[y])return!1;if(e==="data")return!this[N]&&!i?!1:this[J]?(pt(()=>this[$i](i)),!0):this[$i](i);if(e==="end")return this[jr]();if(e==="close"){if(this[kt]=!0,!this[_e]&&!this[y])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[ft]=i,super.emit(Vi,i);let n=!this[mt]||this.listeners("error").length?super.emit("error",i):!1;return this[ue](),n}else if(e==="resume"){let n=super.emit("resume");return this[ue](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let r=super.emit(e,...t);return this[ue](),r}[$i](e){for(let i of this[I])i.dest.write(e)===!1&&this.pause();let t=this[k]?!1:super.emit("data",e);return this[ue](),t}[jr](){return this[_e]?!1:(this[_e]=!0,this.readable=!1,this[J]?(pt(()=>this[Xi]()),!0):this[Xi]())}[Xi](){if(this[Ue]){let t=this[Ue].end();if(t){for(let i of this[I])i.dest.write(t);this[k]||super.emit("data",t)}}for(let t of this[I])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[N]||(e.dataLength=0);let t=this.promise();return this.on("data",i=>{e.push(i),this[N]||(e.dataLength+=i.length)}),await t,e}async concat(){if(this[N])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[K]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(y,()=>t(new Error("stream destroyed"))),this.on("error",i=>t(i)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[k]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[le])return t();let n,o,a=c=>{this.off("data",h),this.off("end",l),this.off(y,u),t(),o(c)},h=c=>{this.off("error",a),this.off("end",l),this.off(y,u),this.pause(),n({value:c,done:!!this[le]})},l=()=>{this.off("error",a),this.off("data",h),this.off(y,u),t(),n({done:!0,value:void 0})},u=()=>a(new Error("stream destroyed"));return new Promise((c,E)=>{o=E,n=c,this.once(y,u),this.once("error",a),this.once("end",l),this.once("data",h)})},throw:t,return:t,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[k]=!1;let e=!1,t=()=>(this.pause(),this.off(Vi,t),this.off(y,t),this.off("end",t),e=!0,{done:!0,value:void 0}),i=()=>{if(e)return t();let r=this.read();return r===null?t():{done:!1,value:r}};return this.once("end",t),this.once(Vi,t),this.once(y,t),{next:i,throw:t,return:t,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(e){if(this[y])return e?this.emit("error",e):this.emit(y),this;this[y]=!0,this[k]=!0,this[O].length=0,this[v]=0;let t=this;return typeof t.close=="function"&&!this[kt]&&t.close(),e?this.emit("error",e):this.emit(y),this}static get isStream(){return C.isStream}};C.Minipass=Wt});var Ke=d(W=>{"use strict";var Ur=W&&W.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(W,"__esModule",{value:!0});W.WriteStreamSync=W.WriteStream=W.ReadStreamSync=W.ReadStream=void 0;var No=Ur(require("events")),B=Ur(require("fs")),Mo=We(),Lo=B.default.writev,ye=Symbol("_autoClose"),$=Symbol("_close"),_t=Symbol("_ended"),p=Symbol("_fd"),ts=Symbol("_finished"),fe=Symbol("_flags"),is=Symbol("_flush"),os=Symbol("_handleChunk"),as=Symbol("_makeBuf"),yt=Symbol("_mode"),Ht=Symbol("_needDrain"),Ge=Symbol("_onerror"),Ye=Symbol("_onopen"),ss=Symbol("_onread"),He=Symbol("_onwrite"),Ee=Symbol("_open"),V=Symbol("_path"),we=Symbol("_pos"),ee=Symbol("_queue"),Ze=Symbol("_read"),rs=Symbol("_readSize"),ce=Symbol("_reading"),wt=Symbol("_remain"),ns=Symbol("_size"),Zt=Symbol("_write"),Ne=Symbol("_writing"),Gt=Symbol("_defaultFlag"),Me=Symbol("_errored"),Yt=class extends Mo.Minipass{[Me]=!1;[p];[V];[rs];[ce]=!1;[ns];[wt];[ye];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Me]=!1,this[p]=typeof t.fd=="number"?t.fd:void 0,this[V]=e,this[rs]=t.readSize||16*1024*1024,this[ce]=!1,this[ns]=typeof t.size=="number"?t.size:1/0,this[wt]=this[ns],this[ye]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[p]=="number"?this[Ze]():this[Ee]()}get fd(){return this[p]}get path(){return this[V]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Ee](){B.default.open(this[V],"r",(e,t)=>this[Ye](e,t))}[Ye](e,t){e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ze]())}[as](){return Buffer.allocUnsafe(Math.min(this[rs],this[wt]))}[Ze](){if(!this[ce]){this[ce]=!0;let e=this[as]();if(e.length===0)return process.nextTick(()=>this[ss](null,0,e));B.default.read(this[p],e,0,e.length,null,(t,i,r)=>this[ss](t,i,r))}}[ss](e,t,i){this[ce]=!1,e?this[Ge](e):this[os](t,i)&&this[Ze]()}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[Ge](e){this[ce]=!0,this[$](),this.emit("error",e)}[os](e,t){let i=!1;return this[wt]-=e,e>0&&(i=super.write(e<t.length?t.subarray(0,e):t)),(e===0||this[wt]<=0)&&(i=!1,this[$](),super.end()),i}emit(e,...t){switch(e){case"prefinish":case"finish":return!1;case"drain":return typeof this[p]=="number"&&this[Ze](),!1;case"error":return this[Me]?!1:(this[Me]=!0,super.emit(e,...t));default:return super.emit(e,...t)}}};W.ReadStream=Yt;var hs=class extends Yt{[Ee](){let e=!0;try{this[Ye](null,B.default.openSync(this[V],"r")),e=!1}finally{e&&this[$]()}}[Ze](){let e=!0;try{if(!this[ce]){this[ce]=!0;do{let t=this[as](),i=t.length===0?0:B.default.readSync(this[p],t,0,t.length,null);if(!this[os](i,t))break}while(!0);this[ce]=!1}e=!1}finally{e&&this[$]()}}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.closeSync(e),this.emit("close")}}};W.ReadStreamSync=hs;var Kt=class extends No.default{readable=!1;writable=!0;[Me]=!1;[Ne]=!1;[_t]=!1;[ee]=[];[Ht]=!1;[V];[yt];[ye];[p];[Gt];[fe];[ts]=!1;[we];constructor(e,t){t=t||{},super(t),this[V]=e,this[p]=typeof t.fd=="number"?t.fd:void 0,this[yt]=t.mode===void 0?438:t.mode,this[we]=typeof t.start=="number"?t.start:void 0,this[ye]=typeof t.autoClose=="boolean"?t.autoClose:!0;let i=this[we]!==void 0?"r+":"w";this[Gt]=t.flags===void 0,this[fe]=t.flags===void 0?i:t.flags,this[p]===void 0&&this[Ee]()}emit(e,...t){if(e==="error"){if(this[Me])return!1;this[Me]=!0}return super.emit(e,...t)}get fd(){return this[p]}get path(){return this[V]}[Ge](e){this[$](),this[Ne]=!0,this.emit("error",e)}[Ee](){B.default.open(this[V],this[fe],this[yt],(e,t)=>this[Ye](e,t))}[Ye](e,t){this[Gt]&&this[fe]==="r+"&&e&&e.code==="ENOENT"?(this[fe]="w",this[Ee]()):e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ne]||this[is]())}end(e,t){return e&&this.write(e,t),this[_t]=!0,!this[Ne]&&!this[ee].length&&typeof this[p]=="number"&&this[He](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[_t]?(this.emit("error",new Error("write() after end()")),!1):this[p]===void 0||this[Ne]||this[ee].length?(this[ee].push(e),this[Ht]=!0,!1):(this[Ne]=!0,this[Zt](e),!0)}[Zt](e){B.default.write(this[p],e,0,e.length,this[we],(t,i)=>this[He](t,i))}[He](e,t){e?this[Ge](e):(this[we]!==void 0&&typeof t=="number"&&(this[we]+=t),this[ee].length?this[is]():(this[Ne]=!1,this[_t]&&!this[ts]?(this[ts]=!0,this[$](),this.emit("finish")):this[Ht]&&(this[Ht]=!1,this.emit("drain"))))}[is](){if(this[ee].length===0)this[_t]&&this[He](null,0);else if(this[ee].length===1)this[Zt](this[ee].pop());else{let e=this[ee];this[ee]=[],Lo(this[p],e,this[we],(t,i)=>this[He](t,i))}}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}};W.WriteStream=Kt;var ls=class extends Kt{[Ee](){let e;if(this[Gt]&&this[fe]==="r+")try{e=B.default.openSync(this[V],this[fe],this[yt])}catch(t){if(t?.code==="ENOENT")return this[fe]="w",this[Ee]();throw t}else e=B.default.openSync(this[V],this[fe],this[yt]);this[Ye](null,e)}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.closeSync(e),this.emit("close")}}[Zt](e){let t=!0;try{this[He](null,B.default.writeSync(this[p],e,0,e.length,this[we])),t=!1}finally{if(t)try{this[$]()}catch{}}}};W.WriteStreamSync=ls});var Vt=d(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.dealias=b.isNoFile=b.isFile=b.isAsync=b.isSync=b.isAsyncNoFile=b.isSyncNoFile=b.isAsyncFile=b.isSyncFile=void 0;var Ao=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),Io=s=>!!s.sync&&!!s.file;b.isSyncFile=Io;var Co=s=>!s.sync&&!!s.file;b.isAsyncFile=Co;var Fo=s=>!!s.sync&&!s.file;b.isSyncNoFile=Fo;var Bo=s=>!s.sync&&!s.file;b.isAsyncNoFile=Bo;var zo=s=>!!s.sync;b.isSync=zo;var ko=s=>!s.sync;b.isAsync=ko;var jo=s=>!!s.file;b.isFile=jo;var xo=s=>!s.file;b.isNoFile=xo;var Uo=s=>{let e=Ao.get(s);return e||s},qo=(s={})=>{if(!s)return{};let e={};for(let[t,i]of Object.entries(s)){let r=Uo(t);e[r]=i}return e.chmod===void 0&&e.noChmod===!1&&(e.chmod=!0),delete e.noChmod,e};b.dealias=qo});var Ve=d($t=>{"use strict";Object.defineProperty($t,"__esModule",{value:!0});$t.makeCommand=void 0;var Et=Vt(),Wo=(s,e,t,i,r)=>Object.assign((n=[],o,a)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(a=o,o=void 0),o?o=Array.from(o):o=[];let h=(0,Et.dealias)(n);if(r?.(h,o),(0,Et.isSyncFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return s(h,o)}else if((0,Et.isAsyncFile)(h)){let l=e(h,o),u=a||void 0;return u?l.then(()=>u(),u):l}else if((0,Et.isSyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return t(h,o)}else if((0,Et.isAsyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback only supported with file option");return i(h,o)}else throw new Error("impossible options??")},{syncFile:s,asyncFile:e,syncNoFile:t,asyncNoFile:i,validate:r});$t.makeCommand=Wo});var us=d($e=>{"use strict";var Ho=$e&&$e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty($e,"__esModule",{value:!0});$e.constants=void 0;var Zo=Ho(require("zlib")),Go=Zo.default.constants||{ZLIB_VERNUM:4736};$e.constants=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Go))});var vs=d(f=>{"use strict";var Yo=f&&f.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ko=f&&f.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Vo=f&&f.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&Yo(t,e,i[r]);return Ko(t,e),t}})(),$o=f&&f.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(f,"__esModule",{value:!0});f.ZstdDecompress=f.ZstdCompress=f.BrotliDecompress=f.BrotliCompress=f.Unzip=f.InflateRaw=f.DeflateRaw=f.Gunzip=f.Gzip=f.Inflate=f.Deflate=f.Zlib=f.ZlibError=f.constants=void 0;var ds=$o(require("assert")),Le=require("buffer"),Xo=We(),qr=Vo(require("zlib")),te=us(),Qo=us();Object.defineProperty(f,"constants",{enumerable:!0,get:function(){return Qo.constants}});var Jo=Le.Buffer.concat,Wr=Object.getOwnPropertyDescriptor(Le.Buffer,"concat"),ea=s=>s,cs=Wr?.writable===!0||Wr?.set!==void 0?s=>{Le.Buffer.concat=s?ea:Jo}:s=>{},Ae=Symbol("_superWrite"),Ie=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}};f.ZlibError=Ie;var fs=Symbol("flushFlag"),bt=class extends Xo.Minipass{#e=!1;#i=!1;#s;#n;#r;#t;#o;get sawError(){return this.#e}get handle(){return this.#t}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#n=e.finishFlush??0,this.#r=e.fullFlushFlag??0,typeof qr[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#t=new qr[t](e)}catch(i){throw new Ie(i,this.constructor)}this.#o=i=>{this.#e||(this.#e=!0,this.close(),this.emit("error",i))},this.#t?.on("error",i=>this.#o(new Ie(i))),this.once("end",()=>this.close)}close(){this.#t&&(this.#t.close(),this.#t=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,ds.default)(this.#t,"zlib binding closed"),this.#t.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#r),this.write(Object.assign(Le.Buffer.alloc(0),{[fs]:e})))}end(e,t,i){return typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ae](e){return super.write(e)}write(e,t,i){if(typeof t=="function"&&(i=t,t="utf8"),typeof e=="string"&&(e=Le.Buffer.from(e,t)),this.#e)return;(0,ds.default)(this.#t,"zlib binding closed");let r=this.#t._handle,n=r.close;r.close=()=>{};let o=this.#t.close;this.#t.close=()=>{},cs(!0);let a;try{let l=typeof e[fs]=="number"?e[fs]:this.#s;a=this.#t._processChunk(e,l),cs(!1)}catch(l){cs(!1),this.#o(new Ie(l,this.write))}finally{this.#t&&(this.#t._handle=r,r.close=n,this.#t.close=o,this.#t.removeAllListeners("error"))}this.#t&&this.#t.on("error",l=>this.#o(new Ie(l,this.write)));let h;if(a)if(Array.isArray(a)&&a.length>0){let l=a[0];h=this[Ae](Le.Buffer.from(l));for(let u=1;u<a.length;u++)h=this[Ae](a[u])}else h=this[Ae](Le.Buffer.from(a));return i&&i(),h}},ie=class extends bt{#e;#i;constructor(e,t){e=e||{},e.flush=e.flush||te.constants.Z_NO_FLUSH,e.finishFlush=e.finishFlush||te.constants.Z_FINISH,e.fullFlushFlag=te.constants.Z_FULL_FLUSH,super(e,t),this.#e=e.level,this.#i=e.strategy}params(e,t){if(!this.sawError){if(!this.handle)throw new Error("cannot switch params when binding is closed");if(!this.handle.params)throw new Error("not supported in this implementation");if(this.#e!==e||this.#i!==t){this.flush(te.constants.Z_SYNC_FLUSH),(0,ds.default)(this.handle,"zlib binding closed");let i=this.handle.flush;this.handle.flush=(r,n)=>{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(e,t)}finally{this.handle.flush=i}this.handle&&(this.#e=e,this.#i=t)}}}};f.Zlib=ie;var ms=class extends ie{constructor(e){super(e,"Deflate")}};f.Deflate=ms;var ps=class extends ie{constructor(e){super(e,"Inflate")}};f.Inflate=ps;var _s=class extends ie{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[Ae](e){return this.#e?(this.#e=!1,e[9]=255,super[Ae](e)):super[Ae](e)}};f.Gzip=_s;var ws=class extends ie{constructor(e){super(e,"Gunzip")}};f.Gunzip=ws;var ys=class extends ie{constructor(e){super(e,"DeflateRaw")}};f.DeflateRaw=ys;var Es=class extends ie{constructor(e){super(e,"InflateRaw")}};f.InflateRaw=Es;var bs=class extends ie{constructor(e){super(e,"Unzip")}};f.Unzip=bs;var Xt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||te.constants.BROTLI_OPERATION_FINISH,e.fullFlushFlag=te.constants.BROTLI_OPERATION_FLUSH,super(e,t)}},Ss=class extends Xt{constructor(e){super(e,"BrotliCompress")}};f.BrotliCompress=Ss;var gs=class extends Xt{constructor(e){super(e,"BrotliDecompress")}};f.BrotliDecompress=gs;var Qt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.ZSTD_e_continue,e.finishFlush=e.finishFlush||te.constants.ZSTD_e_end,e.fullFlushFlag=te.constants.ZSTD_e_flush,super(e,t)}},Rs=class extends Qt{constructor(e){super(e,"ZstdCompress")}};f.ZstdCompress=Rs;var Os=class extends Qt{constructor(e){super(e,"ZstdDecompress")}};f.ZstdDecompress=Os});var Gr=d(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.parse=Xe.encode=void 0;var ta=(s,e)=>{if(Number.isSafeInteger(s))s<0?sa(s,e):ia(s,e);else throw Error("cannot encode number outside of javascript safe integer range");return e};Xe.encode=ta;var ia=(s,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=s&255,s=Math.floor(s/256)},sa=(s,e)=>{e[0]=255;var t=!1;s=s*-1;for(var i=e.length;i>1;i--){var r=s&255;s=Math.floor(s/256),t?e[i-1]=Hr(r):r===0?e[i-1]=0:(t=!0,e[i-1]=Zr(r))}},ra=s=>{let e=s[0],t=e===128?oa(s.subarray(1,s.length)):e===255?na(s):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t};Xe.parse=ra;var na=s=>{for(var e=s.length,t=0,i=!1,r=e-1;r>-1;r--){var n=Number(s[r]),o;i?o=Hr(n):n===0?o=n:(i=!0,o=Zr(n)),o!==0&&(t-=o*Math.pow(256,e-r-1))}return t},oa=s=>{for(var e=s.length,t=0,i=e-1;i>-1;i--){var r=Number(s[i]);r!==0&&(t+=r*Math.pow(256,e-i-1))}return t},Hr=s=>(255^s)&255,Zr=s=>(255^s)+1&255});var Ts=d(j=>{"use strict";Object.defineProperty(j,"__esModule",{value:!0});j.code=j.name=j.isName=j.isCode=void 0;var aa=s=>j.name.has(s);j.isCode=aa;var ha=s=>j.code.has(s);j.isName=ha;j.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);j.code=new Map(Array.from(j.name).map(s=>[s[1],s[0]]))});var Je=d(se=>{"use strict";var la=se&&se.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ua=se&&se.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Yr=se&&se.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&la(t,e,i[r]);return ua(t,e),t}})();Object.defineProperty(se,"__esModule",{value:!0});se.Header=void 0;var Qe=require("node:path"),Kr=Yr(Gr()),St=Yr(Ts()),Ns=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#e="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(e,t=0,i,r){Buffer.isBuffer(e)?this.decode(e,t||0,i,r):e&&this.#i(e)}decode(e,t,i,r){if(t||(t=0),!e||!(e.length>=t+512))throw new Error("need 512 bytes for header");this.path=i?.path??Ce(e,t,100),this.mode=i?.mode??r?.mode??be(e,t+100,8),this.uid=i?.uid??r?.uid??be(e,t+108,8),this.gid=i?.gid??r?.gid??be(e,t+116,8),this.size=i?.size??r?.size??be(e,t+124,12),this.mtime=i?.mtime??r?.mtime??Ds(e,t+136,12),this.cksum=be(e,t+148,12),r&&this.#i(r,!0),i&&this.#i(i);let n=Ce(e,t+156,1);if(St.isCode(n)&&(this.#e=n||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=Ce(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=i?.uname??r?.uname??Ce(e,t+265,32),this.gname=i?.gname??r?.gname??Ce(e,t+297,32),this.devmaj=i?.devmaj??r?.devmaj??be(e,t+329,8)??0,this.devmin=i?.devmin??r?.devmin??be(e,t+337,8)??0,e[t+475]!==0){let a=Ce(e,t+345,155);this.path=a+"/"+this.path}else{let a=Ce(e,t+345,130);a&&(this.path=a+"/"+this.path),this.atime=i?.atime??r?.atime??Ds(e,t+476,12),this.ctime=i?.ctime??r?.ctime??Ds(e,t+488,12)}let o=256;for(let a=t;a<t+148;a++)o+=e[a];for(let a=t+156;a<t+512;a++)o+=e[a];this.cksumValid=o===this.cksum,this.cksum===void 0&&o===256&&(this.nullBlock=!0)}#i(e,t=!1){Object.assign(this,Object.fromEntries(Object.entries(e).filter(([i,r])=>!(r==null||i==="path"&&t||i==="linkpath"&&t||i==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=ca(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Fe(e,t,100,n)||this.needPax,this.needPax=Se(e,t+100,8,this.mode)||this.needPax,this.needPax=Se(e,t+108,8,this.uid)||this.needPax,this.needPax=Se(e,t+116,8,this.gid)||this.needPax,this.needPax=Se(e,t+124,12,this.size)||this.needPax,this.needPax=Ps(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this.#e.charCodeAt(0),this.needPax=Fe(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Fe(e,t+265,32,this.uname)||this.needPax,this.needPax=Fe(e,t+297,32,this.gname)||this.needPax,this.needPax=Se(e,t+329,8,this.devmaj)||this.needPax,this.needPax=Se(e,t+337,8,this.devmin)||this.needPax,this.needPax=Fe(e,t+345,i,o)||this.needPax,e[t+475]!==0?this.needPax=Fe(e,t+345,155,o)||this.needPax:(this.needPax=Fe(e,t+345,130,o)||this.needPax,this.needPax=Ps(e,t+476,12,this.atime)||this.needPax,this.needPax=Ps(e,t+488,12,this.ctime)||this.needPax);let a=256;for(let h=t;h<t+148;h++)a+=e[h];for(let h=t+156;h<t+512;h++)a+=e[h];return this.cksum=a,Se(e,t+148,8,this.cksum),this.cksumValid=!0,this.needPax}get type(){return this.#e==="Unsupported"?this.#e:St.name.get(this.#e)}get typeKey(){return this.#e}set type(e){let t=String(St.code.get(e));if(St.isCode(t)||t==="Unsupported")this.#e=t;else if(St.isCode(e))this.#e=e;else throw new TypeError("invalid entry type: "+e)}};se.Header=Ns;var ca=(s,e)=>{let i=s,r="",n,o=Qe.posix.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Qe.posix.dirname(i),i=Qe.posix.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=e?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=e?n=[i.slice(0,99),r,!0]:(i=Qe.posix.join(Qe.posix.basename(r),i),r=Qe.posix.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Ce=(s,e,t)=>s.subarray(e,e+t).toString("utf8").replace(/\0.*/,""),Ds=(s,e,t)=>fa(be(s,e,t)),fa=s=>s===void 0?void 0:new Date(s*1e3),be=(s,e,t)=>Number(s[e])&128?Kr.parse(s.subarray(e,e+t)):ma(s,e,t),da=s=>isNaN(s)?void 0:s,ma=(s,e,t)=>da(parseInt(s.subarray(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),pa={12:8589934591,8:2097151},Se=(s,e,t,i)=>i===void 0?!1:i>pa[t]||i<0?(Kr.encode(i,s.subarray(e,e+t)),!0):(_a(s,e,t,i),!1),_a=(s,e,t,i)=>s.write(wa(i,t),e,t,"ascii"),wa=(s,e)=>ya(Math.floor(s).toString(8),e),ya=(s,e)=>(s.length===e-1?s:new Array(e-s.length-1).join("0")+s+" ")+"\0",Ps=(s,e,t,i)=>i===void 0?!1:Se(s,e,t,i.getTime()/1e3),Ea=new Array(156).join("\0"),Fe=(s,e,t,i)=>i===void 0?!1:(s.write(i+Ea,e,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t)});var ei=d(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.Pax=void 0;var ba=require("node:path"),Sa=Je(),Ms=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(e,t=!1){this.atime=e.atime,this.charset=e.charset,this.comment=e.comment,this.ctime=e.ctime,this.dev=e.dev,this.gid=e.gid,this.global=t,this.gname=e.gname,this.ino=e.ino,this.linkpath=e.linkpath,this.mtime=e.mtime,this.nlink=e.nlink,this.path=e.path,this.size=e.size,this.uid=e.uid,this.uname=e.uname}encode(){let e=this.encodeBody();if(e==="")return Buffer.allocUnsafe(0);let t=Buffer.byteLength(e),i=512*Math.ceil(1+t/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new Sa.Header({path:("PaxHeader/"+(0,ba.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:t,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(e,512,t,"utf8");for(let n=t+512;n<r.length;n++)r[n]=0;return r}encodeBody(){return this.encodeField("path")+this.encodeField("ctime")+this.encodeField("atime")+this.encodeField("dev")+this.encodeField("ino")+this.encodeField("nlink")+this.encodeField("charset")+this.encodeField("comment")+this.encodeField("gid")+this.encodeField("gname")+this.encodeField("linkpath")+this.encodeField("mtime")+this.encodeField("size")+this.encodeField("uid")+this.encodeField("uname")}encodeField(e){if(this[e]===void 0)return"";let t=this[e],i=t instanceof Date?t.getTime()/1e3:t,r=" "+(e==="dev"||e==="ino"||e==="nlink"?"SCHILY.":"")+e+"="+i+`
 `,n=Buffer.byteLength(r),o=Math.floor(Math.log(n)/Math.log(10))+1;return n+o>=Math.pow(10,o)&&(o+=1),o+n+r}static parse(e,t,i=!1){return new s(ga(Ra(e),t),i)}};Jt.Pax=Ms;var ga=(s,e)=>e?Object.assign({},e,s):s,Ra=s=>s.replace(/\n$/,"").split(`
-`).reduce(Oa,Object.create(null)),Oa=(s,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return s;e=e.slice((t+" ").length);let i=e.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s}});var et=d(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.normalizeWindowsPath=void 0;var va=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;ti.normalizeWindowsPath=va!=="win32"?s=>s:s=>s&&s.replace(/\\/g,"/")});var ri=d(si=>{"use strict";Object.defineProperty(si,"__esModule",{value:!0});si.ReadEntry=void 0;var Ta=We(),ii=et(),Ls=class extends Ta.Minipass{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,i){switch(super({}),this.pause(),this.extended=t,this.globalExtended=i,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=(0,ii.normalizeWindowsPath)(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?(0,ii.normalizeWindowsPath)(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),i&&this.#e(i,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-t),this.blockRemain=Math.max(0,r-t),this.ignore?!0:i>=t?super.write(e):super.write(e.subarray(0,i))}#e(e,t=!1){e.path&&(e.path=(0,ii.normalizeWindowsPath)(e.path)),e.linkpath&&(e.linkpath=(0,ii.normalizeWindowsPath)(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([i,r])=>!(r==null||i==="path"&&t))))}};si.ReadEntry=Ls});var oi=d(ni=>{"use strict";Object.defineProperty(ni,"__esModule",{value:!0});ni.warnMethod=void 0;var Da=(s,e,t,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!s.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),s.emit("warn",e,t,i)):t instanceof Error?s.emit("error",Object.assign(t,i)):s.emit("error",Object.assign(new Error(`${e}: ${t}`),i))};ni.warnMethod=Da});var mi=d(di=>{"use strict";Object.defineProperty(di,"__esModule",{value:!0});di.Parser=void 0;var Pa=require("events"),As=vs(),Vr=Je(),$r=ei(),Na=ri(),Ma=oi(),La=1024*1024,zs=Buffer.from([31,139]),ks=Buffer.from([40,181,47,253]),Aa=Math.max(zs.length,ks.length),H=Symbol("state"),Be=Symbol("writeEntry"),de=Symbol("readEntry"),Is=Symbol("nextEntry"),Xr=Symbol("processEntry"),re=Symbol("extendedHeader"),gt=Symbol("globalExtendedHeader"),ge=Symbol("meta"),Qr=Symbol("emitMeta"),_=Symbol("buffer"),me=Symbol("queue"),Re=Symbol("ended"),Cs=Symbol("emittedEnd"),ze=Symbol("emit"),S=Symbol("unzip"),ai=Symbol("consumeChunk"),hi=Symbol("consumeChunkSub"),Fs=Symbol("consumeBody"),Jr=Symbol("consumeMeta"),en=Symbol("consumeHeader"),Rt=Symbol("consuming"),Bs=Symbol("bufferConcat"),li=Symbol("maybeEnd"),tt=Symbol("writing"),Oe=Symbol("aborted"),ui=Symbol("onDone"),ke=Symbol("sawValidEntry"),ci=Symbol("sawNullBlock"),fi=Symbol("sawEOF"),tn=Symbol("closeStream"),Ia=()=>!0,js=class extends Pa.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[me]=[];[_];[de];[Be];[H]="begin";[ge]="";[re];[gt];[Re]=!1;[S];[Oe]=!1;[ke];[ci]=!1;[fi]=!1;[tt]=!1;[Rt]=!1;[Cs]=!1;constructor(e={}){super(),this.file=e.file||"",this.on(ui,()=>{(this[H]==="begin"||this[ke]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(ui,e.ondone):this.on(ui,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||La,this.filter=typeof e.filter=="function"?e.filter:Ia;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let i=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:i?!0:void 0,this.on("end",()=>this[tn]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,i={}){(0,Ma.warnMethod)(this,e,t,i)}[en](e,t){this[ke]===void 0&&(this[ke]=!1);let i;try{i=new Vr.Header(e,t,this[re],this[gt])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[ci]?(this[fi]=!0,this[H]==="begin"&&(this[H]="header"),this[ze]("eof")):(this[ci]=!0,this[ze]("nullBlock"));else if(this[ci]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Be]=new Na.ReadEntry(i,this[re],this[gt]);if(!this[ke])if(n.remain){let o=()=>{n.invalid||(this[ke]=!0)};n.on("end",o)}else this[ke]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[ze]("ignoredEntry",n),this[H]="ignore",n.resume()):n.size>0&&(this[ge]="",n.on("data",o=>this[ge]+=o),this[H]="meta"):(this[re]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[ze]("ignoredEntry",n),this[H]=n.remain?"ignore":"header",n.resume()):(n.remain?this[H]="body":(this[H]="header",n.end()),this[de]?this[me].push(n):(this[me].push(n),this[Is]())))}}}[tn](){queueMicrotask(()=>this.emit("close"))}[Xr](e){let t=!0;if(!e)this[de]=void 0,t=!1;else if(Array.isArray(e)){let[i,...r]=e;this.emit(i,...r)}else this[de]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[Is]()),t=!1);return t}[Is](){do;while(this[Xr](this[me].shift()));if(!this[me].length){let e=this[de];!e||e.flowing||e.size===e.remain?this[tt]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[Fs](e,t){let i=this[Be];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=e.length&&t===0?e:e.subarray(t,t+r);return i.write(n),i.blockRemain||(this[H]="header",this[Be]=void 0,i.end()),n.length}[Jr](e,t){let i=this[Be],r=this[Fs](e,t);return!this[Be]&&i&&this[Qr](i),r}[ze](e,t,i){!this[me].length&&!this[de]?this.emit(e,t,i):this[me].push([e,t,i])}[Qr](e){switch(this[ze]("meta",this[ge]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[re]=$r.Pax.parse(this[ge],this[re],!1);break;case"GlobalExtendedHeader":this[gt]=$r.Pax.parse(this[ge],this[gt],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[re]??Object.create(null);this[re]=t,t.path=this[ge].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[re]||Object.create(null);this[re]=t,t.linkpath=this[ge].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Oe]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[Oe])return i?.(),!1;if((this[S]===void 0||this.brotli===void 0&&this[S]===!1)&&e){if(this[_]&&(e=Buffer.concat([this[_],e]),this[_]=void 0),e.length<Aa)return this[_]=e,i?.(),!0;for(let h=0;this[S]===void 0&&h<zs.length;h++)e[h]!==zs[h]&&(this[S]=!1);let o=!1;if(this[S]===!1&&this.zstd!==!1){o=!0;for(let h=0;h<ks.length;h++)if(e[h]!==ks[h]){o=!1;break}}let a=this.brotli===void 0&&!o;if(this[S]===!1&&a)if(e.length<512)if(this[Re])this.brotli=!0;else return this[_]=e,i?.(),!0;else try{new Vr.Header(e.subarray(0,512)),this.brotli=!1}catch{this.brotli=!0}if(this[S]===void 0||this[S]===!1&&(this.brotli||o)){let h=this[Re];this[Re]=!1,this[S]=this[S]===void 0?new As.Unzip({}):o?new As.ZstdDecompress({}):new As.BrotliDecompress({}),this[S].on("data",u=>this[ai](u)),this[S].on("error",u=>this.abort(u)),this[S].on("end",()=>{this[Re]=!0,this[ai]()}),this[tt]=!0;let l=!!this[S][h?"end":"write"](e);return this[tt]=!1,i?.(),l}}this[tt]=!0,this[S]?this[S].write(e):this[ai](e),this[tt]=!1;let n=this[me].length?!1:this[de]?this[de].flowing:!0;return!n&&!this[me].length&&this[de]?.once("drain",()=>this.emit("drain")),i?.(),n}[Bs](e){e&&!this[Oe]&&(this[_]=this[_]?Buffer.concat([this[_],e]):e)}[li](){if(this[Re]&&!this[Cs]&&!this[Oe]&&!this[Rt]){this[Cs]=!0;let e=this[Be];if(e&&e.blockRemain){let t=this[_]?this[_].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[_]&&e.write(this[_]),e.end()}this[ze](ui)}}[ai](e){if(this[Rt]&&e)this[Bs](e);else if(!e&&!this[_])this[li]();else if(e){if(this[Rt]=!0,this[_]){this[Bs](e);let t=this[_];this[_]=void 0,this[hi](t)}else this[hi](e);for(;this[_]&&this[_]?.length>=512&&!this[Oe]&&!this[fi];){let t=this[_];this[_]=void 0,this[hi](t)}this[Rt]=!1}(!this[_]||this[Re])&&this[li]()}[hi](e){let t=0,i=e.length;for(;t+512<=i&&!this[Oe]&&!this[fi];)switch(this[H]){case"begin":case"header":this[en](e,t),t+=512;break;case"ignore":case"body":t+=this[Fs](e,t);break;case"meta":t+=this[Jr](e,t);break;default:throw new Error("invalid state: "+this[H])}t<i&&(this[_]?this[_]=Buffer.concat([e.subarray(t),this[_]]):this[_]=e.subarray(t))}end(e,t,i){return typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t)),i&&this.once("finish",i),this[Oe]||(this[S]?(e&&this[S].write(e),this[S].end()):(this[Re]=!0,(this.brotli===void 0||this.zstd===void 0)&&(e=e||Buffer.alloc(0)),e&&this.write(e),this[li]())),this}};di.Parser=js});var _i=d(pi=>{"use strict";Object.defineProperty(pi,"__esModule",{value:!0});pi.stripTrailingSlashes=void 0;var Ca=s=>{let e=s.length-1,t=-1;for(;e>-1&&s.charAt(e)==="/";)t=e,e--;return t===-1?s:s.slice(0,t)};pi.stripTrailingSlashes=Ca});var st=d(F=>{"use strict";var Fa=F&&F.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ba=F&&F.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),za=F&&F.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&Fa(t,e,i[r]);return Ba(t,e),t}})(),ka=F&&F.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(F,"__esModule",{value:!0});F.list=F.filesFilter=void 0;var ja=za(Ke()),it=ka(require("node:fs")),sn=require("path"),xa=Ve(),wi=mi(),xs=_i(),Ua=s=>{let e=s.onReadEntry;s.onReadEntry=e?t=>{e(t),t.resume()}:t=>t.resume()},qa=(s,e)=>{let t=new Map(e.map(n=>[(0,xs.stripTrailingSlashes)(n),!0])),i=s.filter,r=(n,o="")=>{let a=o||(0,sn.parse)(n).root||".",h;if(n===a)h=!1;else{let l=t.get(n);l!==void 0?h=l:h=r((0,sn.dirname)(n),a)}return t.set(n,h),h};s.filter=i?(n,o)=>i(n,o)&&r((0,xs.stripTrailingSlashes)(n)):n=>r((0,xs.stripTrailingSlashes)(n))};F.filesFilter=qa;var Wa=s=>{let e=new wi.Parser(s),t=s.file,i;try{i=it.default.openSync(t,"r");let r=it.default.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size<n){let o=Buffer.allocUnsafe(r.size),a=it.default.readSync(i,o,0,r.size,0);e.end(a===o.byteLength?o:o.subarray(0,a))}else{let o=0,a=Buffer.allocUnsafe(n);for(;o<r.size;){let h=it.default.readSync(i,a,0,n,o);if(h===0)break;o+=h,e.write(a.subarray(0,h))}e.end()}}finally{if(typeof i=="number")try{it.default.closeSync(i)}catch{}}},Ha=(s,e)=>{let t=new wi.Parser(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("end",o),it.default.stat(r,(h,l)=>{if(h)a(h);else{let u=new ja.ReadStream(r,{readSize:i,size:l.size});u.on("error",a),u.pipe(t)}})})};F.list=(0,xa.makeCommand)(Wa,Ha,s=>new wi.Parser(s),s=>new wi.Parser(s),(s,e)=>{e?.length&&(0,F.filesFilter)(s,e),s.noResume||Ua(s)})});var rn=d(yi=>{"use strict";Object.defineProperty(yi,"__esModule",{value:!0});yi.modeFix=void 0;var Za=(s,e,t)=>(s&=4095,t&&(s=(s|384)&-19),e&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);yi.modeFix=Za});var Us=d(Ei=>{"use strict";Object.defineProperty(Ei,"__esModule",{value:!0});Ei.stripAbsolutePath=void 0;var Ga=require("node:path"),{isAbsolute:Ya,parse:nn}=Ga.win32,Ka=s=>{let e="",t=nn(s);for(;Ya(s)||t.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":t.root;s=s.slice(i.length),e+=i,t=nn(s)}return[e,s]};Ei.stripAbsolutePath=Ka});var Ws=d(rt=>{"use strict";Object.defineProperty(rt,"__esModule",{value:!0});rt.decode=rt.encode=void 0;var bi=["|","<",">","?",":"],qs=bi.map(s=>String.fromCharCode(61440+s.charCodeAt(0))),Va=new Map(bi.map((s,e)=>[s,qs[e]])),$a=new Map(qs.map((s,e)=>[s,bi[e]])),Xa=s=>bi.reduce((e,t)=>e.split(t).join(Va.get(t)),s);rt.encode=Xa;var Qa=s=>qs.reduce((e,t)=>e.split(t).join($a.get(t)),s);rt.decode=Qa});var er=d(M=>{"use strict";var Ja=M&&M.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),eh=M&&M.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),th=M&&M.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&Ja(t,e,i[r]);return eh(t,e),t}})(),cn=M&&M.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(M,"__esModule",{value:!0});M.WriteEntryTar=M.WriteEntrySync=M.WriteEntry=void 0;var oe=cn(require("fs")),fn=We(),on=cn(require("path")),dn=Je(),mn=rn(),ne=et(),pn=Vt(),_n=ei(),wn=Us(),ih=_i(),yn=oi(),sh=th(Ws()),En=(s,e)=>e?(s=(0,ne.normalizeWindowsPath)(s).replace(/^\.(\/|$)/,""),(0,ih.stripTrailingSlashes)(e)+"/"+s):(0,ne.normalizeWindowsPath)(s),rh=16*1024*1024,an=Symbol("process"),hn=Symbol("file"),ln=Symbol("directory"),Zs=Symbol("symlink"),un=Symbol("hardlink"),Ot=Symbol("header"),Si=Symbol("read"),Gs=Symbol("lstat"),gi=Symbol("onlstat"),Ys=Symbol("onread"),Ks=Symbol("onreadlink"),Vs=Symbol("openfile"),$s=Symbol("onopenfile"),ve=Symbol("close"),Ri=Symbol("mode"),Xs=Symbol("awaitDrain"),Hs=Symbol("ondrain"),ae=Symbol("prefix"),Oi=class extends fn.Minipass{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.path=(0,ne.normalizeWindowsPath)(e),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||rh,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=(0,ne.normalizeWindowsPath)(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?(0,ne.normalizeWindowsPath)(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,a]=(0,wn.stripAbsolutePath)(this.path);o&&typeof a=="string"&&(this.path=a,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=sh.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=(0,ne.normalizeWindowsPath)(i.absolute||on.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[gi](n):this[Gs]()}warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[Gs](){oe.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[gi](t)})}[gi](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=nh(e),this.emit("stat",e),this[an]()}[an](){switch(this.type){case"File":return this[hn]();case"Directory":return this[ln]();case"SymbolicLink":return this[Zs]();default:return this.end()}}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}[ae](e){return En(e,this.prefix)}[Ot](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this[Ri](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[ln](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Ot](),this.end()}[Zs](){oe.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Ks](t)})}[Ks](e){this.linkpath=(0,ne.normalizeWindowsPath)(e),this[Ot](),this.end()}[un](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=(0,ne.normalizeWindowsPath)(on.default.relative(this.cwd,e)),this.stat.size=0,this[Ot](),this.end()}[hn](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[un](t);this.linkCache.set(e,this.absolute)}if(this[Ot](),this.stat.size===0)return this.end();this[Vs]()}[Vs](){oe.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[$s](t)})}[$s](e){if(this.fd=e,this.#e)return this[ve]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Si]()}[Si](){let{fd:e,buf:t,offset:i,length:r,pos:n}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");oe.default.read(e,t,i,r,n,(o,a)=>{if(o)return this[ve](()=>this.emit("error",o));this[Ys](a)})}[ve](e=()=>{}){this.fd!==void 0&&oe.default.close(this.fd,e)}[Ys](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;r<this.length&&e<this.blockRemain;r++)this.buf[r+this.offset]=0,e++,this.remain++;let t=this.offset===0&&e===this.buf.length?this.buf:this.buf.subarray(this.offset,this.offset+e);this.write(t)?this[Hs]():this[Xs](()=>this[Hs]())}[Xs](e){this.once("drain",e)}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemain<e.length){let r=Object.assign(new Error("writing more data than expected"),{path:this.absolute});return this.emit("error",r)}return this.remain-=e.length,this.blockRemain-=e.length,this.pos+=e.length,this.offset+=e.length,super.write(e,null,i)}[Hs](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[ve](e=>e?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Si]()}};M.WriteEntry=Oi;var Qs=class extends Oi{sync=!0;[Gs](){this[gi](oe.default.lstatSync(this.absolute))}[Zs](){this[Ks](oe.default.readlinkSync(this.absolute))}[Vs](){this[$s](oe.default.openSync(this.absolute,"r"))}[Si](){let e=!0;try{let{fd:t,buf:i,offset:r,length:n,pos:o}=this;if(t===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let a=oe.default.readSync(t,i,r,n,o);this[Ys](a),e=!1}finally{if(e)try{this[ve](()=>{})}catch{}}}[Xs](e){e()}[ve](e=()=>{}){this.fd!==void 0&&oe.default.closeSync(this.fd),e()}};M.WriteEntrySync=Qs;var Js=class extends fn.Minipass{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=e;let{type:r}=e;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=(0,ne.normalizeWindowsPath)(e.path),this.mode=e.mode!==void 0?this[Ri](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:i.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?(0,ne.normalizeWindowsPath)(e.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[a,h]=(0,wn.stripAbsolutePath)(this.path);a&&typeof h=="string"&&(this.path=h,n=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),e.pipe(this)}[ae](e){return En(e,this.prefix)}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}write(e,t,i){typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e,i)}end(e,t,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),i&&this.once("finish",i),e?super.end(e,i):super.end(i),this}};M.WriteEntryTar=Js;var nh=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported"});var bn=d(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.Node=ot.Yallist=void 0;var tr=class s{tail;head;length=0;static create(e=[]){return new s(e)}constructor(e=[]){for(let t of e)this.push(t)}*[Symbol.iterator](){for(let e=this.head;e;e=e.next)yield e.value}removeNode(e){if(e.list!==this)throw new Error("removing node which does not belong to this list");let t=e.next,i=e.prev;return t&&(t.prev=i),i&&(i.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=i),this.length--,e.next=void 0,e.prev=void 0,e.list=void 0,t}unshiftNode(e){if(e===this.head)return;e.list&&e.list.removeNode(e);let t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}pushNode(e){if(e===this.tail)return;e.list&&e.list.removeNode(e);let t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}push(...e){for(let t=0,i=e.length;t<i;t++)ah(this,e[t]);return this.length}unshift(...e){for(var t=0,i=e.length;t<i;t++)hh(this,e[t]);return this.length}pop(){if(!this.tail)return;let e=this.tail.value,t=this.tail;return this.tail=this.tail.prev,this.tail?this.tail.next=void 0:this.head=void 0,t.list=void 0,this.length--,e}shift(){if(!this.head)return;let e=this.head.value,t=this.head;return this.head=this.head.next,this.head?this.head.prev=void 0:this.tail=void 0,t.list=void 0,this.length--,e}forEach(e,t){t=t||this;for(let i=this.head,r=0;i;r++)e.call(t,i.value,r,this),i=i.next}forEachReverse(e,t){t=t||this;for(let i=this.tail,r=this.length-1;i;r--)e.call(t,i.value,r,this),i=i.prev}get(e){let t=0,i=this.head;for(;i&&t<e;t++)i=i.next;if(t===e&&i)return i.value}getReverse(e){let t=0,i=this.tail;for(;i&&t<e;t++)i=i.prev;if(t===e&&i)return i.value}map(e,t){t=t||this;let i=new s;for(let r=this.head;r;)i.push(e.call(t,r.value,this)),r=r.next;return i}mapReverse(e,t){t=t||this;var i=new s;for(let r=this.tail;r;)i.push(e.call(t,r.value,this)),r=r.prev;return i}reduce(e,t){let i,r=this.head;if(arguments.length>1)i=t;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=e(i,r.value,n),r=r.next;return i}reduceReverse(e,t){let i,r=this.tail;if(arguments.length>1)i=t;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=e(i,r.value,n),r=r.prev;return i}toArray(){let e=new Array(this.length);for(let t=0,i=this.head;i;t++)e[t]=i.value,i=i.next;return e}toArrayReverse(){let e=new Array(this.length);for(let t=0,i=this.tail;i;t++)e[t]=i.value,i=i.prev;return e}slice(e=0,t=this.length){t<0&&(t+=this.length),e<0&&(e+=this.length);let i=new s;if(t<e||t<0)return i;e<0&&(e=0),t>this.length&&(t=this.length);let r=this.head,n=0;for(n=0;r&&n<e;n++)r=r.next;for(;r&&n<t;n++,r=r.next)i.push(r.value);return i}sliceReverse(e=0,t=this.length){t<0&&(t+=this.length),e<0&&(e+=this.length);let i=new s;if(t<e||t<0)return i;e<0&&(e=0),t>this.length&&(t=this.length);let r=this.length,n=this.tail;for(;n&&r>t;r--)n=n.prev;for(;n&&r>e;r--,n=n.prev)i.push(n.value);return i}splice(e,t=0,...i){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);let r=this.head;for(let o=0;r&&o<e;o++)r=r.next;let n=[];for(let o=0;r&&o<t;o++)n.push(r.value),r=this.removeNode(r);r?r!==this.tail&&(r=r.prev):r=this.tail;for(let o of i)r=oh(this,r,o);return n}reverse(){let e=this.head,t=this.tail;for(let i=e;i;i=i.prev){let r=i.prev;i.prev=i.next,i.next=r}return this.head=t,this.tail=e,this}};ot.Yallist=tr;function oh(s,e,t){let i=e,r=e?e.next:s.head,n=new nt(t,i,r,s);return n.next===void 0&&(s.tail=n),n.prev===void 0&&(s.head=n),s.length++,n}function ah(s,e){s.tail=new nt(e,s.tail,void 0,s),s.head||(s.head=s.tail),s.length++}function hh(s,e){s.head=new nt(e,void 0,s.head,s),s.tail||(s.tail=s.head),s.length++}var nt=class{list;next;prev;value;constructor(e,t,i,r){this.list=r,this.value=e,t?(t.next=this,this.prev=t):this.prev=void 0,i?(i.prev=this,this.next=i):this.next=void 0}};ot.Node=nt});var Ai=d(L=>{"use strict";var lh=L&&L.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),uh=L&&L.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),ch=L&&L.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&lh(t,e,i[r]);return uh(t,e),t}})(),vn=L&&L.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(L,"__esModule",{value:!0});L.PackSync=L.Pack=L.PackJob=void 0;var Mi=vn(require("fs")),hr=er(),Dt=class{path;absolute;entry;stat;readdir;pending=!1;ignore=!1;piped=!1;constructor(e,t){this.path=e||"./",this.absolute=t}};L.PackJob=Dt;var fh=We(),ir=ch(vs()),dh=bn(),mh=ri(),ph=oi(),Sn=Buffer.alloc(1024),vi=Symbol("onStat"),vt=Symbol("ended"),X=Symbol("queue"),je=Symbol("current"),xe=Symbol("process"),Tt=Symbol("processing"),sr=Symbol("processJob"),Q=Symbol("jobs"),rr=Symbol("jobDone"),Ti=Symbol("addFSEntry"),gn=Symbol("addTarEntry"),lr=Symbol("stat"),ur=Symbol("readdir"),Di=Symbol("onreaddir"),Pi=Symbol("pipe"),Rn=Symbol("entry"),nr=Symbol("entryOpt"),Ni=Symbol("writeEntryClass"),Tn=Symbol("write"),or=Symbol("ondrain"),On=vn(require("path")),ar=et(),Li=class extends fh.Minipass{sync=!1;opt;cwd;maxReadSize;preservePaths;strict;noPax;prefix;linkCache;statCache;file;portable;zip;readdirCache;noDirRecurse;follow;noMtime;mtime;filter;jobs;[Ni];onWriteEntry;[X];[Q]=0;[Tt]=!1;[vt]=!1;constructor(e={}){if(super(),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(0,ar.normalizeWindowsPath)(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this.onWriteEntry=e.onWriteEntry,this[Ni]=hr.WriteEntry,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,e.gzip||e.brotli||e.zstd){if((e.gzip?1:0)+(e.brotli?1:0)+(e.zstd?1:0)>1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new ir.Gzip(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new ir.BrotliCompress(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new ir.ZstdCompress(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",i=>super.write(i)),t.on("end",()=>super.end()),t.on("drain",()=>this[or]()),this.on("resume",()=>t.resume())}else this.on("drain",this[or]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[X]=new dh.Yallist,this[Q]=0,this.jobs=Number(e.jobs)||4,this[Tt]=!1,this[vt]=!1}[Tn](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&this.add(e),this[vt]=!0,this[xe](),i&&i(),this}write(e){if(this[vt])throw new Error("write after end");return e instanceof mh.ReadEntry?this[gn](e):this[Ti](e),this.flowing}[gn](e){let t=(0,ar.normalizeWindowsPath)(On.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let i=new Dt(e.path,t);i.entry=new hr.WriteEntryTar(e,this[nr](i)),i.entry.on("end",()=>this[rr](i)),this[Q]+=1,this[X].push(i)}this[xe]()}[Ti](e){let t=(0,ar.normalizeWindowsPath)(On.default.resolve(this.cwd,e));this[X].push(new Dt(e,t)),this[xe]()}[lr](e){e.pending=!0,this[Q]+=1;let t=this.follow?"stat":"lstat";Mi.default[t](e.absolute,(i,r)=>{e.pending=!1,this[Q]-=1,i?this.emit("error",i):this[vi](e,r)})}[vi](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)?t.isFile()&&t.nlink>1&&e===this[je]&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync&&this[sr](e):e.ignore=!0,this[xe]()}[ur](e){e.pending=!0,this[Q]+=1,Mi.default.readdir(e.absolute,(t,i)=>{if(e.pending=!1,this[Q]-=1,t)return this.emit("error",t);this[Di](e,i)})}[Di](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[xe]()}[xe](){if(!this[Tt]){this[Tt]=!0;for(let e=this[X].head;e&&this[Q]<this.jobs;e=e.next)if(this[sr](e.value),e.value.ignore){let t=e.next;this[X].removeNode(e),e.next=t}this[Tt]=!1,this[vt]&&!this[X].length&&this[Q]===0&&(this.zip?this.zip.end(Sn):(super.write(Sn),super.end()))}}get[je](){return this[X]&&this[X].head&&this[X].head.value}[rr](e){this[X].shift(),this[Q]-=1,this[xe]()}[sr](e){if(!e.pending){if(e.entry){e===this[je]&&!e.piped&&this[Pi](e);return}if(!e.stat){let t=this.statCache.get(e.absolute);t?this[vi](e,t):this[lr](e)}if(e.stat&&!e.ignore){if(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir){let t=this.readdirCache.get(e.absolute);if(t?this[Di](e,t):this[ur](e),!e.readdir)return}if(e.entry=this[Rn](e),!e.entry){e.ignore=!0;return}e===this[je]&&!e.piped&&this[Pi](e)}}}[nr](e){return{onwarn:(t,i,r)=>this.warn(t,i,r),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[Rn](e){this[Q]+=1;try{return new this[Ni](e.path,this[nr](e)).on("end",()=>this[rr](e)).on("error",i=>this.emit("error",i))}catch(t){this.emit("error",t)}}[or](){this[je]&&this[je].entry&&this[je].entry.resume()}[Pi](e){e.piped=!0,e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ti](o+r)});let t=e.entry,i=this.zip;if(!t)throw new Error("cannot pipe without source");i?t.on("data",r=>{i.write(r)||t.pause()}):t.on("data",r=>{super.write(r)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,i={}){(0,ph.warnMethod)(this,e,t,i)}};L.Pack=Li;var cr=class extends Li{sync=!0;constructor(e){super(e),this[Ni]=hr.WriteEntrySync}pause(){}resume(){}[lr](e){let t=this.follow?"statSync":"lstatSync";this[vi](e,Mi.default[t](e.absolute))}[ur](e){this[Di](e,Mi.default.readdirSync(e.absolute))}[Pi](e){let t=e.entry,i=this.zip;if(e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ti](o+r)}),!t)throw new Error("Cannot pipe without source");i?t.on("data",r=>{i.write(r)}):t.on("data",r=>{super[Tn](r)})}};L.PackSync=cr});var fr=d(at=>{"use strict";var _h=at&&at.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(at,"__esModule",{value:!0});at.create=void 0;var Dn=Ke(),Pn=_h(require("node:path")),Nn=st(),wh=Ve(),Ii=Ai(),yh=(s,e)=>{let t=new Ii.PackSync(s),i=new Dn.WriteStreamSync(s.file,{mode:s.mode||438});t.pipe(i),Mn(t,e)},Eh=(s,e)=>{let t=new Ii.Pack(s),i=new Dn.WriteStream(s.file,{mode:s.mode||438});t.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),t.on("error",o)});return Ln(t,e),r},Mn=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,Nn.list)({file:Pn.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},Ln=async(s,e)=>{for(let t=0;t<e.length;t++){let i=String(e[t]);i.charAt(0)==="@"?await(0,Nn.list)({file:Pn.default.resolve(String(s.cwd),i.slice(1)),noResume:!0,onReadEntry:r=>{s.add(r)}}):s.add(i)}s.end()},bh=(s,e)=>{let t=new Ii.PackSync(s);return Mn(t,e),t},Sh=(s,e)=>{let t=new Ii.Pack(s);return Ln(t,e),t};at.create=(0,wh.makeCommand)(yh,Eh,bh,Sh,(s,e)=>{if(!e?.length)throw new TypeError("no paths specified to add to archive")})});var Cn=d(ht=>{"use strict";var gh=ht&&ht.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ht,"__esModule",{value:!0});ht.getWriteFlag=void 0;var An=gh(require("fs")),Rh=process.env.__FAKE_PLATFORM__||process.platform,Oh=Rh==="win32",{O_CREAT:vh,O_TRUNC:Th,O_WRONLY:Dh}=An.default.constants,In=Number(process.env.__FAKE_FS_O_FILENAME__)||An.default.constants.UV_FS_O_FILEMAP||0,Ph=Oh&&!!In,Nh=512*1024,Mh=In|Th|vh|Dh;ht.getWriteFlag=Ph?s=>s<Nh?Mh:"w":()=>"w"});var Bn=d(he=>{"use strict";var Fn=he&&he.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(he,"__esModule",{value:!0});he.chownrSync=he.chownr=void 0;var Fi=Fn(require("node:fs")),Pt=Fn(require("node:path")),dr=(s,e,t)=>{try{return Fi.default.lchownSync(s,e,t)}catch(i){if(i?.code!=="ENOENT")throw i}},Ci=(s,e,t,i)=>{Fi.default.lchown(s,e,t,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},Lh=(s,e,t,i,r)=>{if(e.isDirectory())(0,he.chownr)(Pt.default.resolve(s,e.name),t,i,n=>{if(n)return r(n);let o=Pt.default.resolve(s,e.name);Ci(o,t,i,r)});else{let n=Pt.default.resolve(s,e.name);Ci(n,t,i,r)}},Ah=(s,e,t,i)=>{Fi.default.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return Ci(s,e,t,i);let o=n.length,a=null,h=l=>{if(!a){if(l)return i(a=l);if(--o===0)return Ci(s,e,t,i)}};for(let l of n)Lh(s,l,e,t,h)})};he.chownr=Ah;var Ih=(s,e,t,i)=>{e.isDirectory()&&(0,he.chownrSync)(Pt.default.resolve(s,e.name),t,i),dr(Pt.default.resolve(s,e.name),t,i)},Ch=(s,e,t)=>{let i;try{i=Fi.default.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return dr(s,e,t);throw n}for(let r of i)Ih(s,r,e,t);return dr(s,e,t)};he.chownrSync=Ch});var zn=d(Bi=>{"use strict";Object.defineProperty(Bi,"__esModule",{value:!0});Bi.CwdError=void 0;var mr=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}};Bi.CwdError=mr});var _r=d(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.SymlinkError=void 0;var pr=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}};zi.SymlinkError=pr});var qn=d(Te=>{"use strict";var yr=Te&&Te.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Te,"__esModule",{value:!0});Te.mkdirSync=Te.mkdir=void 0;var kn=Bn(),x=yr(require("node:fs")),Fh=yr(require("node:fs/promises")),ki=yr(require("node:path")),jn=zn(),pe=et(),xn=_r(),Bh=(s,e)=>{x.default.stat(s,(t,i)=>{(t||!i.isDirectory())&&(t=new jn.CwdError(s,t?.code||"ENOTDIR")),e(t)})},zh=(s,e,t)=>{s=(0,pe.normalizeWindowsPath)(s);let i=e.umask??18,r=e.mode|448,n=(r&i)!==0,o=e.uid,a=e.gid,h=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),l=e.preserve,u=e.unlink,c=(0,pe.normalizeWindowsPath)(e.cwd),E=(w,P)=>{w?t(w):P&&h?(0,kn.chownr)(P,o,a,Cr=>E(Cr)):n?x.default.chmod(s,r,t):t()};if(s===c)return Bh(s,E);if(l)return Fh.default.mkdir(s,{mode:r,recursive:!0}).then(w=>E(null,w??void 0),E);let A=(0,pe.normalizeWindowsPath)(ki.default.relative(c,s)).split("/");wr(c,A,r,u,c,void 0,E)};Te.mkdir=zh;var wr=(s,e,t,i,r,n,o)=>{if(!e.length)return o(null,n);let a=e.shift(),h=(0,pe.normalizeWindowsPath)(ki.default.resolve(s+"/"+a));x.default.mkdir(h,t,Un(h,e,t,i,r,n,o))},Un=(s,e,t,i,r,n,o)=>a=>{a?x.default.lstat(s,(h,l)=>{if(h)h.path=h.path&&(0,pe.normalizeWindowsPath)(h.path),o(h);else if(l.isDirectory())wr(s,e,t,i,r,n,o);else if(i)x.default.unlink(s,u=>{if(u)return o(u);x.default.mkdir(s,t,Un(s,e,t,i,r,n,o))});else{if(l.isSymbolicLink())return o(new xn.SymlinkError(s,s+"/"+e.join("/")));o(a)}}):(n=n||s,wr(s,e,t,i,r,n,o))},kh=s=>{let e=!1,t;try{e=x.default.statSync(s).isDirectory()}catch(i){t=i?.code}finally{if(!e)throw new jn.CwdError(s,t??"ENOTDIR")}},jh=(s,e)=>{s=(0,pe.normalizeWindowsPath)(s);let t=e.umask??18,i=e.mode|448,r=(i&t)!==0,n=e.uid,o=e.gid,a=typeof n=="number"&&typeof o=="number"&&(n!==e.processUid||o!==e.processGid),h=e.preserve,l=e.unlink,u=(0,pe.normalizeWindowsPath)(e.cwd),c=w=>{w&&a&&(0,kn.chownrSync)(w,n,o),r&&x.default.chmodSync(s,i)};if(s===u)return kh(u),c();if(h)return c(x.default.mkdirSync(s,{mode:i,recursive:!0})??void 0);let D=(0,pe.normalizeWindowsPath)(ki.default.relative(u,s)).split("/"),A;for(let w=D.shift(),P=u;w&&(P+="/"+w);w=D.shift()){P=(0,pe.normalizeWindowsPath)(ki.default.resolve(P));try{x.default.mkdirSync(P,i),A=A||P}catch{let Fr=x.default.lstatSync(P);if(Fr.isDirectory())continue;if(l){x.default.unlinkSync(P),x.default.mkdirSync(P,i),A=A||P;continue}else if(Fr.isSymbolicLink())return new xn.SymlinkError(P,P+"/"+D.join("/"))}}return c(A)};Te.mkdirSync=jh});var Hn=d(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.normalizeUnicode=void 0;var Er=Object.create(null),Wn=1e4,lt=new Set,xh=s=>{lt.has(s)?lt.delete(s):Er[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),lt.add(s);let e=Er[s],t=lt.size-Wn;if(t>Wn/10){for(let i of lt)if(lt.delete(i),delete Er[i],--t<=0)break}return e};ji.normalizeUnicode=xh});var Gn=d(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.PathReservations=void 0;var Zn=require("node:path"),Uh=Hn(),qh=_i(),Wh=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Hh=Wh==="win32",Zh=s=>s.split("/").slice(0,-1).reduce((t,i)=>{let r=t[t.length-1];return r!==void 0&&(i=(0,Zn.join)(r,i)),t.push(i||"/"),t},[]),br=class{#e=new Map;#i=new Map;#s=new Set;reserve(e,t){e=Hh?["win32 parallelization disabled"]:e.map(r=>(0,qh.stripTrailingSlashes)((0,Zn.join)((0,Uh.normalizeUnicode)(r))));let i=new Set(e.map(r=>Zh(r)).reduce((r,n)=>r.concat(n)));this.#i.set(t,{dirs:i,paths:e});for(let r of e){let n=this.#e.get(r);n?n.push(t):this.#e.set(r,[t])}for(let r of i){let n=this.#e.get(r);if(!n)this.#e.set(r,[new Set([t])]);else{let o=n[n.length-1];o instanceof Set?o.add(t):n.push(new Set([t]))}}return this.#r(t)}#n(e){let t=this.#i.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(i=>this.#e.get(i)),dirs:[...t.dirs].map(i=>this.#e.get(i))}}check(e){let{paths:t,dirs:i}=this.#n(e);return t.every(r=>r&&r[0]===e)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(e))}#r(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#t(e)),!0)}#t(e){if(!this.#s.has(e))return!1;let t=this.#i.get(e);if(!t)throw new Error("invalid reservation");let{paths:i,dirs:r}=t,n=new Set;for(let o of i){let a=this.#e.get(o);if(!a||a?.[0]!==e)continue;let h=a[1];if(!h){this.#e.delete(o);continue}if(a.shift(),typeof h=="function")n.add(h);else for(let l of h)n.add(l)}for(let o of r){let a=this.#e.get(o),h=a?.[0];if(!(!a||!(h instanceof Set)))if(h.size===1&&a.length===1){this.#e.delete(o);continue}else if(h.size===1){a.shift();let l=a[0];typeof l=="function"&&n.add(l)}else h.delete(e)}return this.#s.delete(e),n.forEach(o=>this.#r(o)),!0}};xi.PathReservations=br});var Yn=d(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.umask=void 0;var Gh=()=>process.umask();Ui.umask=Gh});var Lr=d(z=>{"use strict";var Yh=z&&z.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Kh=z&&z.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),so=z&&z.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&Yh(t,e,i[r]);return Kh(t,e),t}})(),Mr=z&&z.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(z,"__esModule",{value:!0});z.UnpackSync=z.Unpack=void 0;var Vh=so(Ke()),$h=Mr(require("node:assert")),ro=require("node:crypto"),m=Mr(require("node:fs")),g=Mr(require("node:path")),no=Cn(),oo=qn(),U=et(),Xh=mi(),Qh=Us(),Kn=so(Ws()),Jh=Gn(),ao=_r(),el=Yn(),Vn=Symbol("onEntry"),Or=Symbol("checkFs"),$n=Symbol("checkFs2"),vr=Symbol("isReusable"),Z=Symbol("makeFs"),Tr=Symbol("file"),Dr=Symbol("directory"),Wi=Symbol("link"),Xn=Symbol("symlink"),Qn=Symbol("hardlink"),Mt=Symbol("ensureNoSymlink"),Jn=Symbol("unsupported"),eo=Symbol("checkPath"),Sr=Symbol("stripAbsolutePath"),De=Symbol("mkdir"),T=Symbol("onError"),qi=Symbol("pending"),to=Symbol("pend"),ut=Symbol("unpend"),gr=Symbol("ended"),Rr=Symbol("maybeClose"),Pr=Symbol("skip"),Lt=Symbol("doChown"),At=Symbol("uid"),It=Symbol("gid"),Ct=Symbol("checkedCwd"),tl=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Ft=tl==="win32",il=1024,sl=(s,e)=>{if(!Ft)return m.default.unlink(s,e);let t=s+".DELETE."+(0,ro.randomBytes)(16).toString("hex");m.default.rename(s,t,i=>{if(i)return e(i);m.default.unlink(t,e)})},rl=s=>{if(!Ft)return m.default.unlinkSync(s);let e=s+".DELETE."+(0,ro.randomBytes)(16).toString("hex");m.default.renameSync(s,e),m.default.unlinkSync(e)},io=(s,e,t)=>s!==void 0&&s===s>>>0?s:e!==void 0&&e===e>>>0?e:t,Hi=class extends Xh.Parser{[gr]=!1;[Ct]=!1;[qi]=0;reservations=new Jh.PathReservations;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[gr]=!0,this[Rr]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:il,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Ft,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=(0,U.normalizeWindowsPath)(g.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:(0,el.umask)():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[Vn](t))}warn(e,t,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,t,i)}[Rr](){this[gr]&&this[qi]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Sr](e,t){let i=e[t],{type:r}=e;if(!i||this.preservePaths)return!0;let n=i.split("/");if(n.includes("..")||Ft&&/^[a-z]:\.\.$/i.test(n[0]??"")){if(t==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:i}),!1;{let h=g.default.posix.dirname(e.path),l=g.default.posix.normalize(g.default.posix.join(h,i));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:i}),!1}}let[o,a]=(0,Qh.stripAbsolutePath)(i);return o&&(e[t]=String(a),this.warn("TAR_ENTRY_INFO",`stripping ${o} from absolute ${t}`,{entry:e,[t]:i})),!0}[eo](e){let t=(0,U.normalizeWindowsPath)(e.path),i=t.split("/");if(this.strip){if(i.length<this.strip)return!1;if(e.type==="Link"){let r=(0,U.normalizeWindowsPath)(String(e.linkpath)).split("/");if(r.length>=this.strip)e.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),e.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[Sr](e,"path")||!this[Sr](e,"linkpath"))return!1;if(g.default.isAbsolute(e.path)?e.absolute=(0,U.normalizeWindowsPath)(g.default.resolve(e.path)):e.absolute=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:(0,U.normalizeWindowsPath)(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=g.default.win32.parse(String(e.absolute));e.absolute=r+Kn.encode(String(e.absolute).slice(r.length));let{root:n}=g.default.win32.parse(e.path);e.path=n+Kn.encode(e.path.slice(n.length))}return!0}[Vn](e){if(!this[eo](e))return e.resume();switch($h.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Or](e);default:return this[Jn](e)}}[T](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[ut](),t.resume())}[De](e,t,i){(0,oo.mkdir)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},i)}[Lt](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[At](e){return io(this.uid,e.uid,this.processUid)}[It](e){return io(this.gid,e.gid,this.processGid)}[Tr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=new Vh.WriteStream(String(e.absolute),{flags:(0,no.getWriteFlag)(e.size),mode:i,autoClose:!1});r.on("error",h=>{r.fd&&m.default.close(r.fd,()=>{}),r.write=()=>!0,this[T](h,e),t()});let n=1,o=h=>{if(h){r.fd&&m.default.close(r.fd,()=>{}),this[T](h,e),t();return}--n===0&&r.fd!==void 0&&m.default.close(r.fd,l=>{l?this[T](l,e):this[ut](),t()})};r.on("finish",()=>{let h=String(e.absolute),l=r.fd;if(typeof l=="number"&&e.mtime&&!this.noMtime){n++;let u=e.atime||new Date,c=e.mtime;m.default.futimes(l,u,c,E=>E?m.default.utimes(h,u,c,D=>o(D&&E)):o())}if(typeof l=="number"&&this[Lt](e)){n++;let u=this[At](e),c=this[It](e);typeof u=="number"&&typeof c=="number"&&m.default.fchown(l,u,c,E=>E?m.default.chown(h,u,c,D=>o(D&&E)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",h=>{this[T](h,e),t()}),e.pipe(a)),a.pipe(r)}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode;this[De](String(e.absolute),i,r=>{if(r){this[T](r,e),t();return}let n=1,o=()=>{--n===0&&(t(),this[ut](),e.resume())};e.mtime&&!this.noMtime&&(n++,m.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,o)),this[Lt](e)&&(n++,m.default.chown(String(e.absolute),Number(this[At](e)),Number(this[It](e)),o)),o()})}[Jn](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Xn](e,t){let i=(0,U.normalizeWindowsPath)(g.default.relative(this.cwd,g.default.resolve(g.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Mt](e,this.cwd,i,()=>this[Wi](e,String(e.linkpath),"symlink",t),r=>{this[T](r,e),t()})}[Qn](e,t){let i=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,String(e.linkpath))),r=(0,U.normalizeWindowsPath)(String(e.linkpath)).split("/");this[Mt](e,this.cwd,r,()=>this[Wi](e,i,"link",t),n=>{this[T](n,e),t()})}[Mt](e,t,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let a=g.default.resolve(t,o);m.default.lstat(a,(h,l)=>{if(h)return r();if(l?.isSymbolicLink())return n(new ao.SymlinkError(a,g.default.resolve(a,i.join("/"))));this[Mt](e,a,i,r,n)})}[to](){this[qi]++}[ut](){this[qi]--,this[Rr]()}[Pr](e){this[ut](),e.resume()}[vr](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!Ft}[Or](e){this[to]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,i=>this[$n](e,i))}[$n](e,t){let i=a=>{t(a)},r=()=>{this[De](this.cwd,this.dmode,a=>{if(a){this[T](a,e),i();return}this[Ct]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let a=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(a!==this.cwd)return this[De](a,this.dmode,h=>{if(h){this[T](h,e),i();return}o()})}o()},o=()=>{m.default.lstat(String(e.absolute),(a,h)=>{if(h&&(this.keep||this.newer&&h.mtime>(e.mtime??h.mtime))){this[Pr](e),i();return}if(a||this[vr](e,h))return this[Z](null,e,i);if(h.isDirectory()){if(e.type==="Directory"){let l=this.chmod&&e.mode&&(h.mode&4095)!==e.mode,u=c=>this[Z](c??null,e,i);return l?m.default.chmod(String(e.absolute),Number(e.mode),u):u()}if(e.absolute!==this.cwd)return m.default.rmdir(String(e.absolute),l=>this[Z](l??null,e,i))}if(e.absolute===this.cwd)return this[Z](null,e,i);sl(String(e.absolute),l=>this[Z](l??null,e,i))})};this[Ct]?n():r()}[Z](e,t,i){if(e){this[T](e,t),i();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[Tr](t,i);case"Link":return this[Qn](t,i);case"SymbolicLink":return this[Xn](t,i);case"Directory":case"GNUDumpDir":return this[Dr](t,i)}}[Wi](e,t,i,r){m.default[i](t,String(e.absolute),n=>{n?this[T](n,e):(this[ut](),e.resume()),r()})}};z.Unpack=Hi;var Nt=s=>{try{return[null,s()]}catch(e){return[e,null]}},Nr=class extends Hi{sync=!0;[Z](e,t){return super[Z](e,t,()=>{})}[Or](e){if(!this[Ct]){let n=this[De](this.cwd,this.dmode);if(n)return this[T](n,e);this[Ct]=!0}if(e.absolute!==this.cwd){let n=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(n!==this.cwd){let o=this[De](n,this.dmode);if(o)return this[T](o,e)}}let[t,i]=Nt(()=>m.default.lstatSync(String(e.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(e.mtime??i.mtime)))return this[Pr](e);if(t||this[vr](e,i))return this[Z](null,e);if(i.isDirectory()){if(e.type==="Directory"){let o=this.chmod&&e.mode&&(i.mode&4095)!==e.mode,[a]=o?Nt(()=>{m.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[Z](a,e)}let[n]=Nt(()=>m.default.rmdirSync(String(e.absolute)));this[Z](n,e)}let[r]=e.absolute===this.cwd?[]:Nt(()=>rl(String(e.absolute)));this[Z](r,e)}[Tr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=a=>{let h;try{m.default.closeSync(n)}catch(l){h=l}(a||h)&&this[T](a||h,e),t()},n;try{n=m.default.openSync(String(e.absolute),(0,no.getWriteFlag)(e.size),i)}catch(a){return r(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[T](a,e)),e.pipe(o)),o.on("data",a=>{try{m.default.writeSync(n,a,0,a.length)}catch(h){r(h)}}),o.on("end",()=>{let a=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,l=e.mtime;try{m.default.futimesSync(n,h,l)}catch(u){try{m.default.utimesSync(String(e.absolute),h,l)}catch{a=u}}}if(this[Lt](e)){let h=this[At](e),l=this[It](e);try{m.default.fchownSync(n,Number(h),Number(l))}catch(u){try{m.default.chownSync(String(e.absolute),Number(h),Number(l))}catch{a=a||u}}}r(a)})}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode,r=this[De](String(e.absolute),i);if(r){this[T](r,e),t();return}if(e.mtime&&!this.noMtime)try{m.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[Lt](e))try{m.default.chownSync(String(e.absolute),Number(this[At](e)),Number(this[It](e)))}catch{}t(),e.resume()}[De](e,t){try{return(0,oo.mkdirSync)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(i){return i}}[Mt](e,t,i,r,n){if(this.preservePaths||!i.length)return r();let o=t;for(let a of i){o=g.default.resolve(o,a);let[h,l]=Nt(()=>m.default.lstatSync(o));if(h)return r();if(l.isSymbolicLink())return n(new ao.SymlinkError(o,g.default.resolve(t,i.join("/"))))}r()}[Wi](e,t,i,r){let n=`${i}Sync`;try{m.default[n](t,String(e.absolute)),r(),e.resume()}catch(o){return this[T](o,e)}}};z.UnpackSync=Nr});var Ar=d(G=>{"use strict";var nl=G&&G.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ol=G&&G.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),al=G&&G.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&nl(t,e,i[r]);return ol(t,e),t}})(),hl=G&&G.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(G,"__esModule",{value:!0});G.extract=void 0;var ho=al(Ke()),lo=hl(require("node:fs")),ll=st(),ul=Ve(),Zi=Lr(),cl=s=>{let e=new Zi.UnpackSync(s),t=s.file,i=lo.default.statSync(t),r=s.maxReadSize||16*1024*1024;new ho.ReadStreamSync(t,{readSize:r,size:i.size}).pipe(e)},fl=(s,e)=>{let t=new Zi.Unpack(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("close",o),lo.default.stat(r,(h,l)=>{if(h)a(h);else{let u=new ho.ReadStream(r,{readSize:i,size:l.size});u.on("error",a),u.pipe(t)}})})};G.extract=(0,ul.makeCommand)(cl,fl,s=>new Zi.UnpackSync(s),s=>new Zi.Unpack(s),(s,e)=>{e?.length&&(0,ll.filesFilter)(s,e)})});var Gi=d(ct=>{"use strict";var uo=ct&&ct.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ct,"__esModule",{value:!0});ct.replace=void 0;var co=Ke(),q=uo(require("node:fs")),fo=uo(require("node:path")),mo=Je(),po=st(),dl=Ve(),ml=Vt(),_o=Ai(),pl=(s,e)=>{let t=new _o.PackSync(s),i=!0,r,n;try{try{r=q.default.openSync(s.file,"r+")}catch(h){if(h?.code==="ENOENT")r=q.default.openSync(s.file,"w+");else throw h}let o=q.default.fstatSync(r),a=Buffer.alloc(512);e:for(n=0;n<o.size;n+=512){for(let u=0,c=0;u<512;u+=c){if(c=q.default.readSync(r,a,u,a.length-u,n+u),n===0&&a[0]===31&&a[1]===139)throw new Error("cannot append to compressed archives");if(!c)break e}let h=new mo.Header(a);if(!h.cksumValid)break;let l=512*Math.ceil((h.size||0)/512);if(n+l+512>o.size)break;n+=l,s.mtimeCache&&h.mtime&&s.mtimeCache.set(String(h.path),h.mtime)}i=!1,_l(s,t,n,r,e)}finally{if(i)try{q.default.closeSync(r)}catch{}}},_l=(s,e,t,i,r)=>{let n=new co.WriteStreamSync(s.file,{fd:i,start:t});e.pipe(n),yl(e,r)},wl=(s,e)=>{e=Array.from(e);let t=new _o.Pack(s),i=(n,o,a)=>{let h=(D,A)=>{D?q.default.close(n,w=>a(D)):a(null,A)},l=0;if(o===0)return h(null,0);let u=0,c=Buffer.alloc(512),E=(D,A)=>{if(D||typeof A>"u")return h(D);if(u+=A,u<512&&A)return q.default.read(n,c,u,c.length-u,l+u,E);if(l===0&&c[0]===31&&c[1]===139)return h(new Error("cannot append to compressed archives"));if(u<512)return h(null,l);let w=new mo.Header(c);if(!w.cksumValid)return h(null,l);let P=512*Math.ceil((w.size??0)/512);if(l+P+512>o||(l+=P+512,l>=o))return h(null,l);s.mtimeCache&&w.mtime&&s.mtimeCache.set(String(w.path),w.mtime),u=0,q.default.read(n,c,0,512,l,E)};q.default.read(n,c,0,512,l,E)};return new Promise((n,o)=>{t.on("error",o);let a="r+",h=(l,u)=>{if(l&&l.code==="ENOENT"&&a==="r+")return a="w+",q.default.open(s.file,a,h);if(l||!u)return o(l);q.default.fstat(u,(c,E)=>{if(c)return q.default.close(u,()=>o(c));i(u,E.size,(D,A)=>{if(D)return o(D);let w=new co.WriteStream(s.file,{fd:u,start:A});t.pipe(w),w.on("error",o),w.on("close",n),El(t,e)})})};q.default.open(s.file,a,h)})},yl=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,po.list)({file:fo.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},El=async(s,e)=>{for(let t=0;t<e.length;t++){let i=String(e[t]);i.charAt(0)==="@"?await(0,po.list)({file:fo.default.resolve(String(s.cwd),i.slice(1)),noResume:!0,onReadEntry:r=>s.add(r)}):s.add(i)}s.end()};ct.replace=(0,dl.makeCommand)(pl,wl,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,e)=>{if(!(0,ml.isFile)(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!e?.length)throw new TypeError("no paths specified to add/replace")})});var Ir=d(Yi=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});Yi.update=void 0;var bl=Ve(),Bt=Gi();Yi.update=(0,bl.makeCommand)(Bt.replace.syncFile,Bt.replace.asyncFile,Bt.replace.syncNoFile,Bt.replace.asyncNoFile,(s,e=[])=>{Bt.replace.validate?.(s,e),Sl(s)});var Sl=s=>{let e=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=e?(t,i)=>e(t,i)&&!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0)):(t,i)=>!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0))}});var wo=exports&&exports.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),gl=exports&&exports.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Y=exports&&exports.__exportStar||function(s,e){for(var t in s)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&wo(e,s,t)},Rl=exports&&exports.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&wo(t,e,i[r]);return gl(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0});exports.u=exports.types=exports.r=exports.t=exports.x=exports.c=void 0;Y(fr(),exports);var Ol=fr();Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Ol.create}});Y(Ar(),exports);var vl=Ar();Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return vl.extract}});Y(Je(),exports);Y(st(),exports);var Tl=st();Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Tl.list}});Y(Ai(),exports);Y(mi(),exports);Y(ei(),exports);Y(ri(),exports);Y(Gi(),exports);var Dl=Gi();Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Dl.replace}});exports.types=Rl(Ts());Y(Lr(),exports);Y(Ir(),exports);var Pl=Ir();Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Pl.update}});Y(er(),exports);
+`).reduce(Oa,Object.create(null)),Oa=(s,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return s;e=e.slice((t+" ").length);let i=e.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s}});var et=d(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.normalizeWindowsPath=void 0;var va=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;ti.normalizeWindowsPath=va!=="win32"?s=>s:s=>s&&s.replace(/\\/g,"/")});var ri=d(si=>{"use strict";Object.defineProperty(si,"__esModule",{value:!0});si.ReadEntry=void 0;var Ta=We(),ii=et(),Ls=class extends Ta.Minipass{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,i){switch(super({}),this.pause(),this.extended=t,this.globalExtended=i,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=(0,ii.normalizeWindowsPath)(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?(0,ii.normalizeWindowsPath)(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),i&&this.#e(i,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-t),this.blockRemain=Math.max(0,r-t),this.ignore?!0:i>=t?super.write(e):super.write(e.subarray(0,i))}#e(e,t=!1){e.path&&(e.path=(0,ii.normalizeWindowsPath)(e.path)),e.linkpath&&(e.linkpath=(0,ii.normalizeWindowsPath)(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([i,r])=>!(r==null||i==="path"&&t))))}};si.ReadEntry=Ls});var oi=d(ni=>{"use strict";Object.defineProperty(ni,"__esModule",{value:!0});ni.warnMethod=void 0;var Da=(s,e,t,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!s.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),s.emit("warn",e,t,i)):t instanceof Error?s.emit("error",Object.assign(t,i)):s.emit("error",Object.assign(new Error(`${e}: ${t}`),i))};ni.warnMethod=Da});var mi=d(di=>{"use strict";Object.defineProperty(di,"__esModule",{value:!0});di.Parser=void 0;var Pa=require("events"),As=vs(),Vr=Je(),$r=ei(),Na=ri(),Ma=oi(),La=1024*1024,zs=Buffer.from([31,139]),ks=Buffer.from([40,181,47,253]),Aa=Math.max(zs.length,ks.length),H=Symbol("state"),Be=Symbol("writeEntry"),de=Symbol("readEntry"),Is=Symbol("nextEntry"),Xr=Symbol("processEntry"),re=Symbol("extendedHeader"),gt=Symbol("globalExtendedHeader"),ge=Symbol("meta"),Qr=Symbol("emitMeta"),_=Symbol("buffer"),me=Symbol("queue"),Re=Symbol("ended"),Cs=Symbol("emittedEnd"),ze=Symbol("emit"),S=Symbol("unzip"),ai=Symbol("consumeChunk"),hi=Symbol("consumeChunkSub"),Fs=Symbol("consumeBody"),Jr=Symbol("consumeMeta"),en=Symbol("consumeHeader"),Rt=Symbol("consuming"),Bs=Symbol("bufferConcat"),li=Symbol("maybeEnd"),tt=Symbol("writing"),Oe=Symbol("aborted"),ui=Symbol("onDone"),ke=Symbol("sawValidEntry"),ci=Symbol("sawNullBlock"),fi=Symbol("sawEOF"),tn=Symbol("closeStream"),Ia=()=>!0,js=class extends Pa.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[me]=[];[_];[de];[Be];[H]="begin";[ge]="";[re];[gt];[Re]=!1;[S];[Oe]=!1;[ke];[ci]=!1;[fi]=!1;[tt]=!1;[Rt]=!1;[Cs]=!1;constructor(e={}){super(),this.file=e.file||"",this.on(ui,()=>{(this[H]==="begin"||this[ke]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(ui,e.ondone):this.on(ui,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||La,this.filter=typeof e.filter=="function"?e.filter:Ia;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let i=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:i?!0:void 0,this.on("end",()=>this[tn]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,i={}){(0,Ma.warnMethod)(this,e,t,i)}[en](e,t){this[ke]===void 0&&(this[ke]=!1);let i;try{i=new Vr.Header(e,t,this[re],this[gt])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[ci]?(this[fi]=!0,this[H]==="begin"&&(this[H]="header"),this[ze]("eof")):(this[ci]=!0,this[ze]("nullBlock"));else if(this[ci]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Be]=new Na.ReadEntry(i,this[re],this[gt]);if(!this[ke])if(n.remain){let o=()=>{n.invalid||(this[ke]=!0)};n.on("end",o)}else this[ke]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[ze]("ignoredEntry",n),this[H]="ignore",n.resume()):n.size>0&&(this[ge]="",n.on("data",o=>this[ge]+=o),this[H]="meta"):(this[re]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[ze]("ignoredEntry",n),this[H]=n.remain?"ignore":"header",n.resume()):(n.remain?this[H]="body":(this[H]="header",n.end()),this[de]?this[me].push(n):(this[me].push(n),this[Is]())))}}}[tn](){queueMicrotask(()=>this.emit("close"))}[Xr](e){let t=!0;if(!e)this[de]=void 0,t=!1;else if(Array.isArray(e)){let[i,...r]=e;this.emit(i,...r)}else this[de]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[Is]()),t=!1);return t}[Is](){do;while(this[Xr](this[me].shift()));if(!this[me].length){let e=this[de];!e||e.flowing||e.size===e.remain?this[tt]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[Fs](e,t){let i=this[Be];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=e.length&&t===0?e:e.subarray(t,t+r);return i.write(n),i.blockRemain||(this[H]="header",this[Be]=void 0,i.end()),n.length}[Jr](e,t){let i=this[Be],r=this[Fs](e,t);return!this[Be]&&i&&this[Qr](i),r}[ze](e,t,i){!this[me].length&&!this[de]?this.emit(e,t,i):this[me].push([e,t,i])}[Qr](e){switch(this[ze]("meta",this[ge]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[re]=$r.Pax.parse(this[ge],this[re],!1);break;case"GlobalExtendedHeader":this[gt]=$r.Pax.parse(this[ge],this[gt],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[re]??Object.create(null);this[re]=t,t.path=this[ge].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[re]||Object.create(null);this[re]=t,t.linkpath=this[ge].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Oe]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[Oe])return i?.(),!1;if((this[S]===void 0||this.brotli===void 0&&this[S]===!1)&&e){if(this[_]&&(e=Buffer.concat([this[_],e]),this[_]=void 0),e.length<Aa)return this[_]=e,i?.(),!0;for(let h=0;this[S]===void 0&&h<zs.length;h++)e[h]!==zs[h]&&(this[S]=!1);let o=!1;if(this[S]===!1&&this.zstd!==!1){o=!0;for(let h=0;h<ks.length;h++)if(e[h]!==ks[h]){o=!1;break}}let a=this.brotli===void 0&&!o;if(this[S]===!1&&a)if(e.length<512)if(this[Re])this.brotli=!0;else return this[_]=e,i?.(),!0;else try{new Vr.Header(e.subarray(0,512)),this.brotli=!1}catch{this.brotli=!0}if(this[S]===void 0||this[S]===!1&&(this.brotli||o)){let h=this[Re];this[Re]=!1,this[S]=this[S]===void 0?new As.Unzip({}):o?new As.ZstdDecompress({}):new As.BrotliDecompress({}),this[S].on("data",u=>this[ai](u)),this[S].on("error",u=>this.abort(u)),this[S].on("end",()=>{this[Re]=!0,this[ai]()}),this[tt]=!0;let l=!!this[S][h?"end":"write"](e);return this[tt]=!1,i?.(),l}}this[tt]=!0,this[S]?this[S].write(e):this[ai](e),this[tt]=!1;let n=this[me].length?!1:this[de]?this[de].flowing:!0;return!n&&!this[me].length&&this[de]?.once("drain",()=>this.emit("drain")),i?.(),n}[Bs](e){e&&!this[Oe]&&(this[_]=this[_]?Buffer.concat([this[_],e]):e)}[li](){if(this[Re]&&!this[Cs]&&!this[Oe]&&!this[Rt]){this[Cs]=!0;let e=this[Be];if(e&&e.blockRemain){let t=this[_]?this[_].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[_]&&e.write(this[_]),e.end()}this[ze](ui)}}[ai](e){if(this[Rt]&&e)this[Bs](e);else if(!e&&!this[_])this[li]();else if(e){if(this[Rt]=!0,this[_]){this[Bs](e);let t=this[_];this[_]=void 0,this[hi](t)}else this[hi](e);for(;this[_]&&this[_]?.length>=512&&!this[Oe]&&!this[fi];){let t=this[_];this[_]=void 0,this[hi](t)}this[Rt]=!1}(!this[_]||this[Re])&&this[li]()}[hi](e){let t=0,i=e.length;for(;t+512<=i&&!this[Oe]&&!this[fi];)switch(this[H]){case"begin":case"header":this[en](e,t),t+=512;break;case"ignore":case"body":t+=this[Fs](e,t);break;case"meta":t+=this[Jr](e,t);break;default:throw new Error("invalid state: "+this[H])}t<i&&(this[_]?this[_]=Buffer.concat([e.subarray(t),this[_]]):this[_]=e.subarray(t))}end(e,t,i){return typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t)),i&&this.once("finish",i),this[Oe]||(this[S]?(e&&this[S].write(e),this[S].end()):(this[Re]=!0,(this.brotli===void 0||this.zstd===void 0)&&(e=e||Buffer.alloc(0)),e&&this.write(e),this[li]())),this}};di.Parser=js});var _i=d(pi=>{"use strict";Object.defineProperty(pi,"__esModule",{value:!0});pi.stripTrailingSlashes=void 0;var Ca=s=>{let e=s.length-1,t=-1;for(;e>-1&&s.charAt(e)==="/";)t=e,e--;return t===-1?s:s.slice(0,t)};pi.stripTrailingSlashes=Ca});var st=d(F=>{"use strict";var Fa=F&&F.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ba=F&&F.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),za=F&&F.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&Fa(t,e,i[r]);return Ba(t,e),t}})(),ka=F&&F.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(F,"__esModule",{value:!0});F.list=F.filesFilter=void 0;var ja=za(Ke()),it=ka(require("node:fs")),sn=require("path"),xa=Ve(),wi=mi(),xs=_i(),Ua=s=>{let e=s.onReadEntry;s.onReadEntry=e?t=>{e(t),t.resume()}:t=>t.resume()},qa=(s,e)=>{let t=new Map(e.map(n=>[(0,xs.stripTrailingSlashes)(n),!0])),i=s.filter,r=(n,o="")=>{let a=o||(0,sn.parse)(n).root||".",h;if(n===a)h=!1;else{let l=t.get(n);l!==void 0?h=l:h=r((0,sn.dirname)(n),a)}return t.set(n,h),h};s.filter=i?(n,o)=>i(n,o)&&r((0,xs.stripTrailingSlashes)(n)):n=>r((0,xs.stripTrailingSlashes)(n))};F.filesFilter=qa;var Wa=s=>{let e=new wi.Parser(s),t=s.file,i;try{i=it.default.openSync(t,"r");let r=it.default.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size<n){let o=Buffer.allocUnsafe(r.size),a=it.default.readSync(i,o,0,r.size,0);e.end(a===o.byteLength?o:o.subarray(0,a))}else{let o=0,a=Buffer.allocUnsafe(n);for(;o<r.size;){let h=it.default.readSync(i,a,0,n,o);if(h===0)break;o+=h,e.write(a.subarray(0,h))}e.end()}}finally{if(typeof i=="number")try{it.default.closeSync(i)}catch{}}},Ha=(s,e)=>{let t=new wi.Parser(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("end",o),it.default.stat(r,(h,l)=>{if(h)a(h);else{let u=new ja.ReadStream(r,{readSize:i,size:l.size});u.on("error",a),u.pipe(t)}})})};F.list=(0,xa.makeCommand)(Wa,Ha,s=>new wi.Parser(s),s=>new wi.Parser(s),(s,e)=>{e?.length&&(0,F.filesFilter)(s,e),s.noResume||Ua(s)})});var rn=d(yi=>{"use strict";Object.defineProperty(yi,"__esModule",{value:!0});yi.modeFix=void 0;var Za=(s,e,t)=>(s&=4095,t&&(s=(s|384)&-19),e&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);yi.modeFix=Za});var Us=d(Ei=>{"use strict";Object.defineProperty(Ei,"__esModule",{value:!0});Ei.stripAbsolutePath=void 0;var Ga=require("node:path"),{isAbsolute:Ya,parse:nn}=Ga.win32,Ka=s=>{let e="",t=nn(s);for(;Ya(s)||t.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":t.root;s=s.slice(i.length),e+=i,t=nn(s)}return[e,s]};Ei.stripAbsolutePath=Ka});var Ws=d(rt=>{"use strict";Object.defineProperty(rt,"__esModule",{value:!0});rt.decode=rt.encode=void 0;var bi=["|","<",">","?",":"],qs=bi.map(s=>String.fromCharCode(61440+s.charCodeAt(0))),Va=new Map(bi.map((s,e)=>[s,qs[e]])),$a=new Map(qs.map((s,e)=>[s,bi[e]])),Xa=s=>bi.reduce((e,t)=>e.split(t).join(Va.get(t)),s);rt.encode=Xa;var Qa=s=>qs.reduce((e,t)=>e.split(t).join($a.get(t)),s);rt.decode=Qa});var er=d(M=>{"use strict";var Ja=M&&M.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),eh=M&&M.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),th=M&&M.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&Ja(t,e,i[r]);return eh(t,e),t}})(),cn=M&&M.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(M,"__esModule",{value:!0});M.WriteEntryTar=M.WriteEntrySync=M.WriteEntry=void 0;var oe=cn(require("fs")),fn=We(),on=cn(require("path")),dn=Je(),mn=rn(),ne=et(),pn=Vt(),_n=ei(),wn=Us(),ih=_i(),yn=oi(),sh=th(Ws()),En=(s,e)=>e?(s=(0,ne.normalizeWindowsPath)(s).replace(/^\.(\/|$)/,""),(0,ih.stripTrailingSlashes)(e)+"/"+s):(0,ne.normalizeWindowsPath)(s),rh=16*1024*1024,an=Symbol("process"),hn=Symbol("file"),ln=Symbol("directory"),Zs=Symbol("symlink"),un=Symbol("hardlink"),Ot=Symbol("header"),Si=Symbol("read"),Gs=Symbol("lstat"),gi=Symbol("onlstat"),Ys=Symbol("onread"),Ks=Symbol("onreadlink"),Vs=Symbol("openfile"),$s=Symbol("onopenfile"),ve=Symbol("close"),Ri=Symbol("mode"),Xs=Symbol("awaitDrain"),Hs=Symbol("ondrain"),ae=Symbol("prefix"),Oi=class extends fn.Minipass{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.path=(0,ne.normalizeWindowsPath)(e),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||rh,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=(0,ne.normalizeWindowsPath)(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?(0,ne.normalizeWindowsPath)(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,a]=(0,wn.stripAbsolutePath)(this.path);o&&typeof a=="string"&&(this.path=a,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=sh.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=(0,ne.normalizeWindowsPath)(i.absolute||on.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[gi](n):this[Gs]()}warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[Gs](){oe.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[gi](t)})}[gi](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=nh(e),this.emit("stat",e),this[an]()}[an](){switch(this.type){case"File":return this[hn]();case"Directory":return this[ln]();case"SymbolicLink":return this[Zs]();default:return this.end()}}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}[ae](e){return En(e,this.prefix)}[Ot](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this[Ri](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[ln](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Ot](),this.end()}[Zs](){oe.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Ks](t)})}[Ks](e){this.linkpath=(0,ne.normalizeWindowsPath)(e),this[Ot](),this.end()}[un](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=(0,ne.normalizeWindowsPath)(on.default.relative(this.cwd,e)),this.stat.size=0,this[Ot](),this.end()}[hn](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[un](t);this.linkCache.set(e,this.absolute)}if(this[Ot](),this.stat.size===0)return this.end();this[Vs]()}[Vs](){oe.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[$s](t)})}[$s](e){if(this.fd=e,this.#e)return this[ve]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Si]()}[Si](){let{fd:e,buf:t,offset:i,length:r,pos:n}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");oe.default.read(e,t,i,r,n,(o,a)=>{if(o)return this[ve](()=>this.emit("error",o));this[Ys](a)})}[ve](e=()=>{}){this.fd!==void 0&&oe.default.close(this.fd,e)}[Ys](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;r<this.length&&e<this.blockRemain;r++)this.buf[r+this.offset]=0,e++,this.remain++;let t=this.offset===0&&e===this.buf.length?this.buf:this.buf.subarray(this.offset,this.offset+e);this.write(t)?this[Hs]():this[Xs](()=>this[Hs]())}[Xs](e){this.once("drain",e)}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemain<e.length){let r=Object.assign(new Error("writing more data than expected"),{path:this.absolute});return this.emit("error",r)}return this.remain-=e.length,this.blockRemain-=e.length,this.pos+=e.length,this.offset+=e.length,super.write(e,null,i)}[Hs](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[ve](e=>e?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Si]()}};M.WriteEntry=Oi;var Qs=class extends Oi{sync=!0;[Gs](){this[gi](oe.default.lstatSync(this.absolute))}[Zs](){this[Ks](oe.default.readlinkSync(this.absolute))}[Vs](){this[$s](oe.default.openSync(this.absolute,"r"))}[Si](){let e=!0;try{let{fd:t,buf:i,offset:r,length:n,pos:o}=this;if(t===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let a=oe.default.readSync(t,i,r,n,o);this[Ys](a),e=!1}finally{if(e)try{this[ve](()=>{})}catch{}}}[Xs](e){e()}[ve](e=()=>{}){this.fd!==void 0&&oe.default.closeSync(this.fd),e()}};M.WriteEntrySync=Qs;var Js=class extends fn.Minipass{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=e;let{type:r}=e;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=(0,ne.normalizeWindowsPath)(e.path),this.mode=e.mode!==void 0?this[Ri](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:i.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?(0,ne.normalizeWindowsPath)(e.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[a,h]=(0,wn.stripAbsolutePath)(this.path);a&&typeof h=="string"&&(this.path=h,n=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),e.pipe(this)}[ae](e){return En(e,this.prefix)}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}write(e,t,i){typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e,i)}end(e,t,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),i&&this.once("finish",i),e?super.end(e,i):super.end(i),this}};M.WriteEntryTar=Js;var nh=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported"});var bn=d(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.Node=ot.Yallist=void 0;var tr=class s{tail;head;length=0;static create(e=[]){return new s(e)}constructor(e=[]){for(let t of e)this.push(t)}*[Symbol.iterator](){for(let e=this.head;e;e=e.next)yield e.value}removeNode(e){if(e.list!==this)throw new Error("removing node which does not belong to this list");let t=e.next,i=e.prev;return t&&(t.prev=i),i&&(i.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=i),this.length--,e.next=void 0,e.prev=void 0,e.list=void 0,t}unshiftNode(e){if(e===this.head)return;e.list&&e.list.removeNode(e);let t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}pushNode(e){if(e===this.tail)return;e.list&&e.list.removeNode(e);let t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}push(...e){for(let t=0,i=e.length;t<i;t++)ah(this,e[t]);return this.length}unshift(...e){for(var t=0,i=e.length;t<i;t++)hh(this,e[t]);return this.length}pop(){if(!this.tail)return;let e=this.tail.value,t=this.tail;return this.tail=this.tail.prev,this.tail?this.tail.next=void 0:this.head=void 0,t.list=void 0,this.length--,e}shift(){if(!this.head)return;let e=this.head.value,t=this.head;return this.head=this.head.next,this.head?this.head.prev=void 0:this.tail=void 0,t.list=void 0,this.length--,e}forEach(e,t){t=t||this;for(let i=this.head,r=0;i;r++)e.call(t,i.value,r,this),i=i.next}forEachReverse(e,t){t=t||this;for(let i=this.tail,r=this.length-1;i;r--)e.call(t,i.value,r,this),i=i.prev}get(e){let t=0,i=this.head;for(;i&&t<e;t++)i=i.next;if(t===e&&i)return i.value}getReverse(e){let t=0,i=this.tail;for(;i&&t<e;t++)i=i.prev;if(t===e&&i)return i.value}map(e,t){t=t||this;let i=new s;for(let r=this.head;r;)i.push(e.call(t,r.value,this)),r=r.next;return i}mapReverse(e,t){t=t||this;var i=new s;for(let r=this.tail;r;)i.push(e.call(t,r.value,this)),r=r.prev;return i}reduce(e,t){let i,r=this.head;if(arguments.length>1)i=t;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=e(i,r.value,n),r=r.next;return i}reduceReverse(e,t){let i,r=this.tail;if(arguments.length>1)i=t;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=e(i,r.value,n),r=r.prev;return i}toArray(){let e=new Array(this.length);for(let t=0,i=this.head;i;t++)e[t]=i.value,i=i.next;return e}toArrayReverse(){let e=new Array(this.length);for(let t=0,i=this.tail;i;t++)e[t]=i.value,i=i.prev;return e}slice(e=0,t=this.length){t<0&&(t+=this.length),e<0&&(e+=this.length);let i=new s;if(t<e||t<0)return i;e<0&&(e=0),t>this.length&&(t=this.length);let r=this.head,n=0;for(n=0;r&&n<e;n++)r=r.next;for(;r&&n<t;n++,r=r.next)i.push(r.value);return i}sliceReverse(e=0,t=this.length){t<0&&(t+=this.length),e<0&&(e+=this.length);let i=new s;if(t<e||t<0)return i;e<0&&(e=0),t>this.length&&(t=this.length);let r=this.length,n=this.tail;for(;n&&r>t;r--)n=n.prev;for(;n&&r>e;r--,n=n.prev)i.push(n.value);return i}splice(e,t=0,...i){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);let r=this.head;for(let o=0;r&&o<e;o++)r=r.next;let n=[];for(let o=0;r&&o<t;o++)n.push(r.value),r=this.removeNode(r);r?r!==this.tail&&(r=r.prev):r=this.tail;for(let o of i)r=oh(this,r,o);return n}reverse(){let e=this.head,t=this.tail;for(let i=e;i;i=i.prev){let r=i.prev;i.prev=i.next,i.next=r}return this.head=t,this.tail=e,this}};ot.Yallist=tr;function oh(s,e,t){let i=e,r=e?e.next:s.head,n=new nt(t,i,r,s);return n.next===void 0&&(s.tail=n),n.prev===void 0&&(s.head=n),s.length++,n}function ah(s,e){s.tail=new nt(e,s.tail,void 0,s),s.head||(s.head=s.tail),s.length++}function hh(s,e){s.head=new nt(e,void 0,s.head,s),s.tail||(s.tail=s.head),s.length++}var nt=class{list;next;prev;value;constructor(e,t,i,r){this.list=r,this.value=e,t?(t.next=this,this.prev=t):this.prev=void 0,i?(i.prev=this,this.next=i):this.next=void 0}};ot.Node=nt});var Ai=d(L=>{"use strict";var lh=L&&L.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),uh=L&&L.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),ch=L&&L.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&lh(t,e,i[r]);return uh(t,e),t}})(),vn=L&&L.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(L,"__esModule",{value:!0});L.PackSync=L.Pack=L.PackJob=void 0;var Mi=vn(require("fs")),hr=er(),Dt=class{path;absolute;entry;stat;readdir;pending=!1;ignore=!1;piped=!1;constructor(e,t){this.path=e||"./",this.absolute=t}};L.PackJob=Dt;var fh=We(),ir=ch(vs()),dh=bn(),mh=ri(),ph=oi(),Sn=Buffer.alloc(1024),vi=Symbol("onStat"),vt=Symbol("ended"),X=Symbol("queue"),je=Symbol("current"),xe=Symbol("process"),Tt=Symbol("processing"),sr=Symbol("processJob"),Q=Symbol("jobs"),rr=Symbol("jobDone"),Ti=Symbol("addFSEntry"),gn=Symbol("addTarEntry"),lr=Symbol("stat"),ur=Symbol("readdir"),Di=Symbol("onreaddir"),Pi=Symbol("pipe"),Rn=Symbol("entry"),nr=Symbol("entryOpt"),Ni=Symbol("writeEntryClass"),Tn=Symbol("write"),or=Symbol("ondrain"),On=vn(require("path")),ar=et(),Li=class extends fh.Minipass{sync=!1;opt;cwd;maxReadSize;preservePaths;strict;noPax;prefix;linkCache;statCache;file;portable;zip;readdirCache;noDirRecurse;follow;noMtime;mtime;filter;jobs;[Ni];onWriteEntry;[X];[Q]=0;[Tt]=!1;[vt]=!1;constructor(e={}){if(super(),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(0,ar.normalizeWindowsPath)(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this.onWriteEntry=e.onWriteEntry,this[Ni]=hr.WriteEntry,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,e.gzip||e.brotli||e.zstd){if((e.gzip?1:0)+(e.brotli?1:0)+(e.zstd?1:0)>1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new ir.Gzip(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new ir.BrotliCompress(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new ir.ZstdCompress(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",i=>super.write(i)),t.on("end",()=>super.end()),t.on("drain",()=>this[or]()),this.on("resume",()=>t.resume())}else this.on("drain",this[or]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[X]=new dh.Yallist,this[Q]=0,this.jobs=Number(e.jobs)||4,this[Tt]=!1,this[vt]=!1}[Tn](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&this.add(e),this[vt]=!0,this[xe](),i&&i(),this}write(e){if(this[vt])throw new Error("write after end");return e instanceof mh.ReadEntry?this[gn](e):this[Ti](e),this.flowing}[gn](e){let t=(0,ar.normalizeWindowsPath)(On.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let i=new Dt(e.path,t);i.entry=new hr.WriteEntryTar(e,this[nr](i)),i.entry.on("end",()=>this[rr](i)),this[Q]+=1,this[X].push(i)}this[xe]()}[Ti](e){let t=(0,ar.normalizeWindowsPath)(On.default.resolve(this.cwd,e));this[X].push(new Dt(e,t)),this[xe]()}[lr](e){e.pending=!0,this[Q]+=1;let t=this.follow?"stat":"lstat";Mi.default[t](e.absolute,(i,r)=>{e.pending=!1,this[Q]-=1,i?this.emit("error",i):this[vi](e,r)})}[vi](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)?t.isFile()&&t.nlink>1&&e===this[je]&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync&&this[sr](e):e.ignore=!0,this[xe]()}[ur](e){e.pending=!0,this[Q]+=1,Mi.default.readdir(e.absolute,(t,i)=>{if(e.pending=!1,this[Q]-=1,t)return this.emit("error",t);this[Di](e,i)})}[Di](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[xe]()}[xe](){if(!this[Tt]){this[Tt]=!0;for(let e=this[X].head;e&&this[Q]<this.jobs;e=e.next)if(this[sr](e.value),e.value.ignore){let t=e.next;this[X].removeNode(e),e.next=t}this[Tt]=!1,this[vt]&&!this[X].length&&this[Q]===0&&(this.zip?this.zip.end(Sn):(super.write(Sn),super.end()))}}get[je](){return this[X]&&this[X].head&&this[X].head.value}[rr](e){this[X].shift(),this[Q]-=1,this[xe]()}[sr](e){if(!e.pending){if(e.entry){e===this[je]&&!e.piped&&this[Pi](e);return}if(!e.stat){let t=this.statCache.get(e.absolute);t?this[vi](e,t):this[lr](e)}if(e.stat&&!e.ignore){if(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir){let t=this.readdirCache.get(e.absolute);if(t?this[Di](e,t):this[ur](e),!e.readdir)return}if(e.entry=this[Rn](e),!e.entry){e.ignore=!0;return}e===this[je]&&!e.piped&&this[Pi](e)}}}[nr](e){return{onwarn:(t,i,r)=>this.warn(t,i,r),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[Rn](e){this[Q]+=1;try{return new this[Ni](e.path,this[nr](e)).on("end",()=>this[rr](e)).on("error",i=>this.emit("error",i))}catch(t){this.emit("error",t)}}[or](){this[je]&&this[je].entry&&this[je].entry.resume()}[Pi](e){e.piped=!0,e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ti](o+r)});let t=e.entry,i=this.zip;if(!t)throw new Error("cannot pipe without source");i?t.on("data",r=>{i.write(r)||t.pause()}):t.on("data",r=>{super.write(r)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,i={}){(0,ph.warnMethod)(this,e,t,i)}};L.Pack=Li;var cr=class extends Li{sync=!0;constructor(e){super(e),this[Ni]=hr.WriteEntrySync}pause(){}resume(){}[lr](e){let t=this.follow?"statSync":"lstatSync";this[vi](e,Mi.default[t](e.absolute))}[ur](e){this[Di](e,Mi.default.readdirSync(e.absolute))}[Pi](e){let t=e.entry,i=this.zip;if(e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ti](o+r)}),!t)throw new Error("Cannot pipe without source");i?t.on("data",r=>{i.write(r)}):t.on("data",r=>{super[Tn](r)})}};L.PackSync=cr});var fr=d(at=>{"use strict";var _h=at&&at.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(at,"__esModule",{value:!0});at.create=void 0;var Dn=Ke(),Pn=_h(require("node:path")),Nn=st(),wh=Ve(),Ii=Ai(),yh=(s,e)=>{let t=new Ii.PackSync(s),i=new Dn.WriteStreamSync(s.file,{mode:s.mode||438});t.pipe(i),Mn(t,e)},Eh=(s,e)=>{let t=new Ii.Pack(s),i=new Dn.WriteStream(s.file,{mode:s.mode||438});t.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),t.on("error",o)});return Ln(t,e),r},Mn=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,Nn.list)({file:Pn.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},Ln=async(s,e)=>{for(let t=0;t<e.length;t++){let i=String(e[t]);i.charAt(0)==="@"?await(0,Nn.list)({file:Pn.default.resolve(String(s.cwd),i.slice(1)),noResume:!0,onReadEntry:r=>{s.add(r)}}):s.add(i)}s.end()},bh=(s,e)=>{let t=new Ii.PackSync(s);return Mn(t,e),t},Sh=(s,e)=>{let t=new Ii.Pack(s);return Ln(t,e),t};at.create=(0,wh.makeCommand)(yh,Eh,bh,Sh,(s,e)=>{if(!e?.length)throw new TypeError("no paths specified to add to archive")})});var Cn=d(ht=>{"use strict";var gh=ht&&ht.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ht,"__esModule",{value:!0});ht.getWriteFlag=void 0;var An=gh(require("fs")),Rh=process.env.__FAKE_PLATFORM__||process.platform,Oh=Rh==="win32",{O_CREAT:vh,O_TRUNC:Th,O_WRONLY:Dh}=An.default.constants,In=Number(process.env.__FAKE_FS_O_FILENAME__)||An.default.constants.UV_FS_O_FILEMAP||0,Ph=Oh&&!!In,Nh=512*1024,Mh=In|Th|vh|Dh;ht.getWriteFlag=Ph?s=>s<Nh?Mh:"w":()=>"w"});var Bn=d(he=>{"use strict";var Fn=he&&he.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(he,"__esModule",{value:!0});he.chownrSync=he.chownr=void 0;var Fi=Fn(require("node:fs")),Pt=Fn(require("node:path")),dr=(s,e,t)=>{try{return Fi.default.lchownSync(s,e,t)}catch(i){if(i?.code!=="ENOENT")throw i}},Ci=(s,e,t,i)=>{Fi.default.lchown(s,e,t,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},Lh=(s,e,t,i,r)=>{if(e.isDirectory())(0,he.chownr)(Pt.default.resolve(s,e.name),t,i,n=>{if(n)return r(n);let o=Pt.default.resolve(s,e.name);Ci(o,t,i,r)});else{let n=Pt.default.resolve(s,e.name);Ci(n,t,i,r)}},Ah=(s,e,t,i)=>{Fi.default.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return Ci(s,e,t,i);let o=n.length,a=null,h=l=>{if(!a){if(l)return i(a=l);if(--o===0)return Ci(s,e,t,i)}};for(let l of n)Lh(s,l,e,t,h)})};he.chownr=Ah;var Ih=(s,e,t,i)=>{e.isDirectory()&&(0,he.chownrSync)(Pt.default.resolve(s,e.name),t,i),dr(Pt.default.resolve(s,e.name),t,i)},Ch=(s,e,t)=>{let i;try{i=Fi.default.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return dr(s,e,t);throw n}for(let r of i)Ih(s,r,e,t);return dr(s,e,t)};he.chownrSync=Ch});var zn=d(Bi=>{"use strict";Object.defineProperty(Bi,"__esModule",{value:!0});Bi.CwdError=void 0;var mr=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}};Bi.CwdError=mr});var _r=d(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.SymlinkError=void 0;var pr=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}};zi.SymlinkError=pr});var qn=d(Te=>{"use strict";var yr=Te&&Te.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Te,"__esModule",{value:!0});Te.mkdirSync=Te.mkdir=void 0;var kn=Bn(),x=yr(require("node:fs")),Fh=yr(require("node:fs/promises")),ki=yr(require("node:path")),jn=zn(),pe=et(),xn=_r(),Bh=(s,e)=>{x.default.stat(s,(t,i)=>{(t||!i.isDirectory())&&(t=new jn.CwdError(s,t?.code||"ENOTDIR")),e(t)})},zh=(s,e,t)=>{s=(0,pe.normalizeWindowsPath)(s);let i=e.umask??18,r=e.mode|448,n=(r&i)!==0,o=e.uid,a=e.gid,h=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),l=e.preserve,u=e.unlink,c=(0,pe.normalizeWindowsPath)(e.cwd),E=(w,P)=>{w?t(w):P&&h?(0,kn.chownr)(P,o,a,Cr=>E(Cr)):n?x.default.chmod(s,r,t):t()};if(s===c)return Bh(s,E);if(l)return Fh.default.mkdir(s,{mode:r,recursive:!0}).then(w=>E(null,w??void 0),E);let A=(0,pe.normalizeWindowsPath)(ki.default.relative(c,s)).split("/");wr(c,A,r,u,c,void 0,E)};Te.mkdir=zh;var wr=(s,e,t,i,r,n,o)=>{if(!e.length)return o(null,n);let a=e.shift(),h=(0,pe.normalizeWindowsPath)(ki.default.resolve(s+"/"+a));x.default.mkdir(h,t,Un(h,e,t,i,r,n,o))},Un=(s,e,t,i,r,n,o)=>a=>{a?x.default.lstat(s,(h,l)=>{if(h)h.path=h.path&&(0,pe.normalizeWindowsPath)(h.path),o(h);else if(l.isDirectory())wr(s,e,t,i,r,n,o);else if(i)x.default.unlink(s,u=>{if(u)return o(u);x.default.mkdir(s,t,Un(s,e,t,i,r,n,o))});else{if(l.isSymbolicLink())return o(new xn.SymlinkError(s,s+"/"+e.join("/")));o(a)}}):(n=n||s,wr(s,e,t,i,r,n,o))},kh=s=>{let e=!1,t;try{e=x.default.statSync(s).isDirectory()}catch(i){t=i?.code}finally{if(!e)throw new jn.CwdError(s,t??"ENOTDIR")}},jh=(s,e)=>{s=(0,pe.normalizeWindowsPath)(s);let t=e.umask??18,i=e.mode|448,r=(i&t)!==0,n=e.uid,o=e.gid,a=typeof n=="number"&&typeof o=="number"&&(n!==e.processUid||o!==e.processGid),h=e.preserve,l=e.unlink,u=(0,pe.normalizeWindowsPath)(e.cwd),c=w=>{w&&a&&(0,kn.chownrSync)(w,n,o),r&&x.default.chmodSync(s,i)};if(s===u)return kh(u),c();if(h)return c(x.default.mkdirSync(s,{mode:i,recursive:!0})??void 0);let D=(0,pe.normalizeWindowsPath)(ki.default.relative(u,s)).split("/"),A;for(let w=D.shift(),P=u;w&&(P+="/"+w);w=D.shift()){P=(0,pe.normalizeWindowsPath)(ki.default.resolve(P));try{x.default.mkdirSync(P,i),A=A||P}catch{let Fr=x.default.lstatSync(P);if(Fr.isDirectory())continue;if(l){x.default.unlinkSync(P),x.default.mkdirSync(P,i),A=A||P;continue}else if(Fr.isSymbolicLink())return new xn.SymlinkError(P,P+"/"+D.join("/"))}}return c(A)};Te.mkdirSync=jh});var Hn=d(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.normalizeUnicode=void 0;var Er=Object.create(null),Wn=1e4,lt=new Set,xh=s=>{lt.has(s)?lt.delete(s):Er[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),lt.add(s);let e=Er[s],t=lt.size-Wn;if(t>Wn/10){for(let i of lt)if(lt.delete(i),delete Er[i],--t<=0)break}return e};ji.normalizeUnicode=xh});var Gn=d(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.PathReservations=void 0;var Zn=require("node:path"),Uh=Hn(),qh=_i(),Wh=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Hh=Wh==="win32",Zh=s=>s.split("/").slice(0,-1).reduce((t,i)=>{let r=t[t.length-1];return r!==void 0&&(i=(0,Zn.join)(r,i)),t.push(i||"/"),t},[]),br=class{#e=new Map;#i=new Map;#s=new Set;reserve(e,t){e=Hh?["win32 parallelization disabled"]:e.map(r=>(0,qh.stripTrailingSlashes)((0,Zn.join)((0,Uh.normalizeUnicode)(r))));let i=new Set(e.map(r=>Zh(r)).reduce((r,n)=>r.concat(n)));this.#i.set(t,{dirs:i,paths:e});for(let r of e){let n=this.#e.get(r);n?n.push(t):this.#e.set(r,[t])}for(let r of i){let n=this.#e.get(r);if(!n)this.#e.set(r,[new Set([t])]);else{let o=n[n.length-1];o instanceof Set?o.add(t):n.push(new Set([t]))}}return this.#r(t)}#n(e){let t=this.#i.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(i=>this.#e.get(i)),dirs:[...t.dirs].map(i=>this.#e.get(i))}}check(e){let{paths:t,dirs:i}=this.#n(e);return t.every(r=>r&&r[0]===e)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(e))}#r(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#t(e)),!0)}#t(e){if(!this.#s.has(e))return!1;let t=this.#i.get(e);if(!t)throw new Error("invalid reservation");let{paths:i,dirs:r}=t,n=new Set;for(let o of i){let a=this.#e.get(o);if(!a||a?.[0]!==e)continue;let h=a[1];if(!h){this.#e.delete(o);continue}if(a.shift(),typeof h=="function")n.add(h);else for(let l of h)n.add(l)}for(let o of r){let a=this.#e.get(o),h=a?.[0];if(!(!a||!(h instanceof Set)))if(h.size===1&&a.length===1){this.#e.delete(o);continue}else if(h.size===1){a.shift();let l=a[0];typeof l=="function"&&n.add(l)}else h.delete(e)}return this.#s.delete(e),n.forEach(o=>this.#r(o)),!0}};xi.PathReservations=br});var Yn=d(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.umask=void 0;var Gh=()=>process.umask();Ui.umask=Gh});var Lr=d(z=>{"use strict";var Yh=z&&z.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Kh=z&&z.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),so=z&&z.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&Yh(t,e,i[r]);return Kh(t,e),t}})(),Mr=z&&z.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(z,"__esModule",{value:!0});z.UnpackSync=z.Unpack=void 0;var Vh=so(Ke()),$h=Mr(require("node:assert")),ro=require("node:crypto"),m=Mr(require("node:fs")),g=Mr(require("node:path")),no=Cn(),oo=qn(),U=et(),Xh=mi(),Qh=Us(),Kn=so(Ws()),Jh=Gn(),ao=_r(),el=Yn(),Vn=Symbol("onEntry"),Or=Symbol("checkFs"),$n=Symbol("checkFs2"),vr=Symbol("isReusable"),Z=Symbol("makeFs"),Tr=Symbol("file"),Dr=Symbol("directory"),Wi=Symbol("link"),Xn=Symbol("symlink"),Qn=Symbol("hardlink"),Mt=Symbol("ensureNoSymlink"),Jn=Symbol("unsupported"),eo=Symbol("checkPath"),Sr=Symbol("stripAbsolutePath"),De=Symbol("mkdir"),T=Symbol("onError"),qi=Symbol("pending"),to=Symbol("pend"),ut=Symbol("unpend"),gr=Symbol("ended"),Rr=Symbol("maybeClose"),Pr=Symbol("skip"),Lt=Symbol("doChown"),At=Symbol("uid"),It=Symbol("gid"),Ct=Symbol("checkedCwd"),tl=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Ft=tl==="win32",il=1024,sl=(s,e)=>{if(!Ft)return m.default.unlink(s,e);let t=s+".DELETE."+(0,ro.randomBytes)(16).toString("hex");m.default.rename(s,t,i=>{if(i)return e(i);m.default.unlink(t,e)})},rl=s=>{if(!Ft)return m.default.unlinkSync(s);let e=s+".DELETE."+(0,ro.randomBytes)(16).toString("hex");m.default.renameSync(s,e),m.default.unlinkSync(e)},io=(s,e,t)=>s!==void 0&&s===s>>>0?s:e!==void 0&&e===e>>>0?e:t,Hi=class extends Xh.Parser{[gr]=!1;[Ct]=!1;[qi]=0;reservations=new Jh.PathReservations;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[gr]=!0,this[Rr]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:il,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Ft,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=(0,U.normalizeWindowsPath)(g.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:(0,el.umask)():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[Vn](t))}warn(e,t,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,t,i)}[Rr](){this[gr]&&this[qi]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Sr](e,t){let i=e[t],{type:r}=e;if(!i||this.preservePaths)return!0;let[n,o]=(0,Qh.stripAbsolutePath)(i),a=o.replace(/\\/g,"/").split("/");if(a.includes("..")||Ft&&/^[a-z]:\.\.$/i.test(a[0]??"")){if(t==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:i}),!1;{let h=g.default.posix.dirname(e.path),l=g.default.posix.normalize(g.default.posix.join(h,a.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:i}),!1}}return n&&(e[t]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${t}`,{entry:e,[t]:i})),!0}[eo](e){let t=(0,U.normalizeWindowsPath)(e.path),i=t.split("/");if(this.strip){if(i.length<this.strip)return!1;if(e.type==="Link"){let r=(0,U.normalizeWindowsPath)(String(e.linkpath)).split("/");if(r.length>=this.strip)e.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),e.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[Sr](e,"path")||!this[Sr](e,"linkpath"))return!1;if(g.default.isAbsolute(e.path)?e.absolute=(0,U.normalizeWindowsPath)(g.default.resolve(e.path)):e.absolute=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:(0,U.normalizeWindowsPath)(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=g.default.win32.parse(String(e.absolute));e.absolute=r+Kn.encode(String(e.absolute).slice(r.length));let{root:n}=g.default.win32.parse(e.path);e.path=n+Kn.encode(e.path.slice(n.length))}return!0}[Vn](e){if(!this[eo](e))return e.resume();switch($h.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Or](e);default:return this[Jn](e)}}[T](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[ut](),t.resume())}[De](e,t,i){(0,oo.mkdir)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},i)}[Lt](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[At](e){return io(this.uid,e.uid,this.processUid)}[It](e){return io(this.gid,e.gid,this.processGid)}[Tr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=new Vh.WriteStream(String(e.absolute),{flags:(0,no.getWriteFlag)(e.size),mode:i,autoClose:!1});r.on("error",h=>{r.fd&&m.default.close(r.fd,()=>{}),r.write=()=>!0,this[T](h,e),t()});let n=1,o=h=>{if(h){r.fd&&m.default.close(r.fd,()=>{}),this[T](h,e),t();return}--n===0&&r.fd!==void 0&&m.default.close(r.fd,l=>{l?this[T](l,e):this[ut](),t()})};r.on("finish",()=>{let h=String(e.absolute),l=r.fd;if(typeof l=="number"&&e.mtime&&!this.noMtime){n++;let u=e.atime||new Date,c=e.mtime;m.default.futimes(l,u,c,E=>E?m.default.utimes(h,u,c,D=>o(D&&E)):o())}if(typeof l=="number"&&this[Lt](e)){n++;let u=this[At](e),c=this[It](e);typeof u=="number"&&typeof c=="number"&&m.default.fchown(l,u,c,E=>E?m.default.chown(h,u,c,D=>o(D&&E)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",h=>{this[T](h,e),t()}),e.pipe(a)),a.pipe(r)}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode;this[De](String(e.absolute),i,r=>{if(r){this[T](r,e),t();return}let n=1,o=()=>{--n===0&&(t(),this[ut](),e.resume())};e.mtime&&!this.noMtime&&(n++,m.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,o)),this[Lt](e)&&(n++,m.default.chown(String(e.absolute),Number(this[At](e)),Number(this[It](e)),o)),o()})}[Jn](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Xn](e,t){let i=(0,U.normalizeWindowsPath)(g.default.relative(this.cwd,g.default.resolve(g.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Mt](e,this.cwd,i,()=>this[Wi](e,String(e.linkpath),"symlink",t),r=>{this[T](r,e),t()})}[Qn](e,t){let i=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,String(e.linkpath))),r=(0,U.normalizeWindowsPath)(String(e.linkpath)).split("/");this[Mt](e,this.cwd,r,()=>this[Wi](e,i,"link",t),n=>{this[T](n,e),t()})}[Mt](e,t,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let a=g.default.resolve(t,o);m.default.lstat(a,(h,l)=>{if(h)return r();if(l?.isSymbolicLink())return n(new ao.SymlinkError(a,g.default.resolve(a,i.join("/"))));this[Mt](e,a,i,r,n)})}[to](){this[qi]++}[ut](){this[qi]--,this[Rr]()}[Pr](e){this[ut](),e.resume()}[vr](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!Ft}[Or](e){this[to]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,i=>this[$n](e,i))}[$n](e,t){let i=a=>{t(a)},r=()=>{this[De](this.cwd,this.dmode,a=>{if(a){this[T](a,e),i();return}this[Ct]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let a=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(a!==this.cwd)return this[De](a,this.dmode,h=>{if(h){this[T](h,e),i();return}o()})}o()},o=()=>{m.default.lstat(String(e.absolute),(a,h)=>{if(h&&(this.keep||this.newer&&h.mtime>(e.mtime??h.mtime))){this[Pr](e),i();return}if(a||this[vr](e,h))return this[Z](null,e,i);if(h.isDirectory()){if(e.type==="Directory"){let l=this.chmod&&e.mode&&(h.mode&4095)!==e.mode,u=c=>this[Z](c??null,e,i);return l?m.default.chmod(String(e.absolute),Number(e.mode),u):u()}if(e.absolute!==this.cwd)return m.default.rmdir(String(e.absolute),l=>this[Z](l??null,e,i))}if(e.absolute===this.cwd)return this[Z](null,e,i);sl(String(e.absolute),l=>this[Z](l??null,e,i))})};this[Ct]?n():r()}[Z](e,t,i){if(e){this[T](e,t),i();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[Tr](t,i);case"Link":return this[Qn](t,i);case"SymbolicLink":return this[Xn](t,i);case"Directory":case"GNUDumpDir":return this[Dr](t,i)}}[Wi](e,t,i,r){m.default[i](t,String(e.absolute),n=>{n?this[T](n,e):(this[ut](),e.resume()),r()})}};z.Unpack=Hi;var Nt=s=>{try{return[null,s()]}catch(e){return[e,null]}},Nr=class extends Hi{sync=!0;[Z](e,t){return super[Z](e,t,()=>{})}[Or](e){if(!this[Ct]){let n=this[De](this.cwd,this.dmode);if(n)return this[T](n,e);this[Ct]=!0}if(e.absolute!==this.cwd){let n=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(n!==this.cwd){let o=this[De](n,this.dmode);if(o)return this[T](o,e)}}let[t,i]=Nt(()=>m.default.lstatSync(String(e.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(e.mtime??i.mtime)))return this[Pr](e);if(t||this[vr](e,i))return this[Z](null,e);if(i.isDirectory()){if(e.type==="Directory"){let o=this.chmod&&e.mode&&(i.mode&4095)!==e.mode,[a]=o?Nt(()=>{m.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[Z](a,e)}let[n]=Nt(()=>m.default.rmdirSync(String(e.absolute)));this[Z](n,e)}let[r]=e.absolute===this.cwd?[]:Nt(()=>rl(String(e.absolute)));this[Z](r,e)}[Tr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=a=>{let h;try{m.default.closeSync(n)}catch(l){h=l}(a||h)&&this[T](a||h,e),t()},n;try{n=m.default.openSync(String(e.absolute),(0,no.getWriteFlag)(e.size),i)}catch(a){return r(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[T](a,e)),e.pipe(o)),o.on("data",a=>{try{m.default.writeSync(n,a,0,a.length)}catch(h){r(h)}}),o.on("end",()=>{let a=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,l=e.mtime;try{m.default.futimesSync(n,h,l)}catch(u){try{m.default.utimesSync(String(e.absolute),h,l)}catch{a=u}}}if(this[Lt](e)){let h=this[At](e),l=this[It](e);try{m.default.fchownSync(n,Number(h),Number(l))}catch(u){try{m.default.chownSync(String(e.absolute),Number(h),Number(l))}catch{a=a||u}}}r(a)})}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode,r=this[De](String(e.absolute),i);if(r){this[T](r,e),t();return}if(e.mtime&&!this.noMtime)try{m.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[Lt](e))try{m.default.chownSync(String(e.absolute),Number(this[At](e)),Number(this[It](e)))}catch{}t(),e.resume()}[De](e,t){try{return(0,oo.mkdirSync)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(i){return i}}[Mt](e,t,i,r,n){if(this.preservePaths||!i.length)return r();let o=t;for(let a of i){o=g.default.resolve(o,a);let[h,l]=Nt(()=>m.default.lstatSync(o));if(h)return r();if(l.isSymbolicLink())return n(new ao.SymlinkError(o,g.default.resolve(t,i.join("/"))))}r()}[Wi](e,t,i,r){let n=`${i}Sync`;try{m.default[n](t,String(e.absolute)),r(),e.resume()}catch(o){return this[T](o,e)}}};z.UnpackSync=Nr});var Ar=d(G=>{"use strict";var nl=G&&G.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ol=G&&G.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),al=G&&G.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&nl(t,e,i[r]);return ol(t,e),t}})(),hl=G&&G.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(G,"__esModule",{value:!0});G.extract=void 0;var ho=al(Ke()),lo=hl(require("node:fs")),ll=st(),ul=Ve(),Zi=Lr(),cl=s=>{let e=new Zi.UnpackSync(s),t=s.file,i=lo.default.statSync(t),r=s.maxReadSize||16*1024*1024;new ho.ReadStreamSync(t,{readSize:r,size:i.size}).pipe(e)},fl=(s,e)=>{let t=new Zi.Unpack(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("close",o),lo.default.stat(r,(h,l)=>{if(h)a(h);else{let u=new ho.ReadStream(r,{readSize:i,size:l.size});u.on("error",a),u.pipe(t)}})})};G.extract=(0,ul.makeCommand)(cl,fl,s=>new Zi.UnpackSync(s),s=>new Zi.Unpack(s),(s,e)=>{e?.length&&(0,ll.filesFilter)(s,e)})});var Gi=d(ct=>{"use strict";var uo=ct&&ct.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ct,"__esModule",{value:!0});ct.replace=void 0;var co=Ke(),q=uo(require("node:fs")),fo=uo(require("node:path")),mo=Je(),po=st(),dl=Ve(),ml=Vt(),_o=Ai(),pl=(s,e)=>{let t=new _o.PackSync(s),i=!0,r,n;try{try{r=q.default.openSync(s.file,"r+")}catch(h){if(h?.code==="ENOENT")r=q.default.openSync(s.file,"w+");else throw h}let o=q.default.fstatSync(r),a=Buffer.alloc(512);e:for(n=0;n<o.size;n+=512){for(let u=0,c=0;u<512;u+=c){if(c=q.default.readSync(r,a,u,a.length-u,n+u),n===0&&a[0]===31&&a[1]===139)throw new Error("cannot append to compressed archives");if(!c)break e}let h=new mo.Header(a);if(!h.cksumValid)break;let l=512*Math.ceil((h.size||0)/512);if(n+l+512>o.size)break;n+=l,s.mtimeCache&&h.mtime&&s.mtimeCache.set(String(h.path),h.mtime)}i=!1,_l(s,t,n,r,e)}finally{if(i)try{q.default.closeSync(r)}catch{}}},_l=(s,e,t,i,r)=>{let n=new co.WriteStreamSync(s.file,{fd:i,start:t});e.pipe(n),yl(e,r)},wl=(s,e)=>{e=Array.from(e);let t=new _o.Pack(s),i=(n,o,a)=>{let h=(D,A)=>{D?q.default.close(n,w=>a(D)):a(null,A)},l=0;if(o===0)return h(null,0);let u=0,c=Buffer.alloc(512),E=(D,A)=>{if(D||typeof A>"u")return h(D);if(u+=A,u<512&&A)return q.default.read(n,c,u,c.length-u,l+u,E);if(l===0&&c[0]===31&&c[1]===139)return h(new Error("cannot append to compressed archives"));if(u<512)return h(null,l);let w=new mo.Header(c);if(!w.cksumValid)return h(null,l);let P=512*Math.ceil((w.size??0)/512);if(l+P+512>o||(l+=P+512,l>=o))return h(null,l);s.mtimeCache&&w.mtime&&s.mtimeCache.set(String(w.path),w.mtime),u=0,q.default.read(n,c,0,512,l,E)};q.default.read(n,c,0,512,l,E)};return new Promise((n,o)=>{t.on("error",o);let a="r+",h=(l,u)=>{if(l&&l.code==="ENOENT"&&a==="r+")return a="w+",q.default.open(s.file,a,h);if(l||!u)return o(l);q.default.fstat(u,(c,E)=>{if(c)return q.default.close(u,()=>o(c));i(u,E.size,(D,A)=>{if(D)return o(D);let w=new co.WriteStream(s.file,{fd:u,start:A});t.pipe(w),w.on("error",o),w.on("close",n),El(t,e)})})};q.default.open(s.file,a,h)})},yl=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,po.list)({file:fo.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},El=async(s,e)=>{for(let t=0;t<e.length;t++){let i=String(e[t]);i.charAt(0)==="@"?await(0,po.list)({file:fo.default.resolve(String(s.cwd),i.slice(1)),noResume:!0,onReadEntry:r=>s.add(r)}):s.add(i)}s.end()};ct.replace=(0,dl.makeCommand)(pl,wl,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,e)=>{if(!(0,ml.isFile)(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!e?.length)throw new TypeError("no paths specified to add/replace")})});var Ir=d(Yi=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});Yi.update=void 0;var bl=Ve(),Bt=Gi();Yi.update=(0,bl.makeCommand)(Bt.replace.syncFile,Bt.replace.asyncFile,Bt.replace.syncNoFile,Bt.replace.asyncNoFile,(s,e=[])=>{Bt.replace.validate?.(s,e),Sl(s)});var Sl=s=>{let e=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=e?(t,i)=>e(t,i)&&!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0)):(t,i)=>!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0))}});var wo=exports&&exports.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),gl=exports&&exports.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Y=exports&&exports.__exportStar||function(s,e){for(var t in s)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&wo(e,s,t)},Rl=exports&&exports.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r<i.length;r++)i[r]!=="default"&&wo(t,e,i[r]);return gl(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0});exports.u=exports.types=exports.r=exports.t=exports.x=exports.c=void 0;Y(fr(),exports);var Ol=fr();Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Ol.create}});Y(Ar(),exports);var vl=Ar();Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return vl.extract}});Y(Je(),exports);Y(st(),exports);var Tl=st();Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Tl.list}});Y(Ai(),exports);Y(mi(),exports);Y(ei(),exports);Y(ri(),exports);Y(Gi(),exports);var Dl=Gi();Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Dl.replace}});exports.types=Rl(Ts());Y(Lr(),exports);Y(Ir(),exports);var Pl=Ir();Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Pl.update}});Y(er(),exports);
 //# sourceMappingURL=index.min.js.map
diff --git a/deps/npm/node_modules/tar/dist/commonjs/unpack.js b/deps/npm/node_modules/tar/dist/commonjs/unpack.js
index dce465312bc7e6..7248fbacfc93a1 100644
--- a/deps/npm/node_modules/tar/dist/commonjs/unpack.js
+++ b/deps/npm/node_modules/tar/dist/commonjs/unpack.js
@@ -260,7 +260,9 @@ class Unpack extends parse_js_1.Parser {
         const { type } = entry;
         if (!p || this.preservePaths)
             return true;
-        const parts = p.split('/');
+        // strip off the root
+        const [root, stripped] = (0, strip_absolute_path_js_1.stripAbsolutePath)(p);
+        const parts = stripped.replace(/\\/g, '/').split('/');
         if (parts.includes('..') ||
             /* c8 ignore next */
             (isWindows && /^[a-z]:\.\.$/i.test(parts[0] ?? ''))) {
@@ -281,7 +283,7 @@ class Unpack extends parse_js_1.Parser {
                 // `path.posix` is safe to use because we're operating on
                 // tar paths, not a filesystem.
                 const entryDir = node_path_1.default.posix.dirname(entry.path);
-                const resolved = node_path_1.default.posix.normalize(node_path_1.default.posix.join(entryDir, p));
+                const resolved = node_path_1.default.posix.normalize(node_path_1.default.posix.join(entryDir, parts.join('/')));
                 // If the resolved path escapes (starts with ..), reject it
                 if (resolved.startsWith('../') || resolved === '..') {
                     this.warn('TAR_ENTRY_ERROR', `${field} escapes extraction directory`, {
@@ -292,8 +294,6 @@ class Unpack extends parse_js_1.Parser {
                 }
             }
         }
-        // strip off the root
-        const [root, stripped] = (0, strip_absolute_path_js_1.stripAbsolutePath)(p);
         if (root) {
             // ok, but triggers warning about stripping root
             entry[field] = String(stripped);
diff --git a/deps/npm/node_modules/tar/dist/esm/index.min.js b/deps/npm/node_modules/tar/dist/esm/index.min.js
index 4e06ce82dfbdef..40a573e4cce6c3 100644
--- a/deps/npm/node_modules/tar/dist/esm/index.min.js
+++ b/deps/npm/node_modules/tar/dist/esm/index.min.js
@@ -1,4 +1,4 @@
-var Dr=Object.defineProperty;var Ar=(s,t)=>{for(var e in t)Dr(s,e,{get:t[e],enumerable:!0})};import Hr from"events";import I from"fs";import{EventEmitter as Oi}from"node:events";import Ds from"node:stream";import{StringDecoder as Ir}from"node:string_decoder";var Ts=typeof process=="object"&&process?process:{stdout:null,stderr:null},Cr=s=>!!s&&typeof s=="object"&&(s instanceof A||s instanceof Ds||Fr(s)||kr(s)),Fr=s=>!!s&&typeof s=="object"&&s instanceof Oi&&typeof s.pipe=="function"&&s.pipe!==Ds.Writable.prototype.pipe,kr=s=>!!s&&typeof s=="object"&&s instanceof Oi&&typeof s.write=="function"&&typeof s.end=="function",q=Symbol("EOF"),j=Symbol("maybeEmitEnd"),rt=Symbol("emittedEnd"),xe=Symbol("emittingEnd"),jt=Symbol("emittedError"),Le=Symbol("closed"),xs=Symbol("read"),Ne=Symbol("flush"),Ls=Symbol("flushChunk"),z=Symbol("encoding"),Mt=Symbol("decoder"),b=Symbol("flowing"),Qt=Symbol("paused"),Bt=Symbol("resume"),g=Symbol("buffer"),D=Symbol("pipes"),_=Symbol("bufferLength"),Si=Symbol("bufferPush"),De=Symbol("bufferShift"),L=Symbol("objectMode"),w=Symbol("destroyed"),yi=Symbol("error"),Ri=Symbol("emitData"),Ns=Symbol("emitEnd"),bi=Symbol("emitEnd2"),Z=Symbol("async"),gi=Symbol("abort"),Ae=Symbol("aborted"),Jt=Symbol("signal"),yt=Symbol("dataListeners"),C=Symbol("discarded"),te=s=>Promise.resolve().then(s),vr=s=>s(),Mr=s=>s==="end"||s==="finish"||s==="prefinish",Br=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,Pr=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Ie=class{src;dest;opts;ondrain;constructor(t,e,i){this.src=t,this.dest=e,this.opts=i,this.ondrain=()=>t[Bt](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},_i=class extends Ie{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,i){super(t,e,i),this.proxyErrors=r=>e.emit("error",r),t.on("error",this.proxyErrors)}},zr=s=>!!s.objectMode,Ur=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",A=class extends Oi{[b]=!1;[Qt]=!1;[D]=[];[g]=[];[L];[z];[Z];[Mt];[q]=!1;[rt]=!1;[xe]=!1;[Le]=!1;[jt]=null;[_]=0;[w]=!1;[Jt];[Ae]=!1;[yt]=0;[C]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");zr(e)?(this[L]=!0,this[z]=null):Ur(e)?(this[z]=e.encoding,this[L]=!1):(this[L]=!1,this[z]=null),this[Z]=!!e.async,this[Mt]=this[z]?new Ir(this[z]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[g]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[D]});let{signal:i}=e;i&&(this[Jt]=i,i.aborted?this[gi]():i.addEventListener("abort",()=>this[gi]()))}get bufferLength(){return this[_]}get encoding(){return this[z]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[L]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[Z]}set async(t){this[Z]=this[Z]||!!t}[gi](){this[Ae]=!0,this.emit("abort",this[Jt]?.reason),this.destroy(this[Jt]?.reason)}get aborted(){return this[Ae]}set aborted(t){}write(t,e,i){if(this[Ae])return!1;if(this[q])throw new Error("write after end");if(this[w])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof e=="function"&&(i=e,e="utf8"),e||(e="utf8");let r=this[Z]?te:vr;if(!this[L]&&!Buffer.isBuffer(t)){if(Pr(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Br(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[L]?(this[b]&&this[_]!==0&&this[Ne](!0),this[b]?this.emit("data",t):this[Si](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[b]):t.length?(typeof t=="string"&&!(e===this[z]&&!this[Mt]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[z]&&(t=this[Mt].write(t)),this[b]&&this[_]!==0&&this[Ne](!0),this[b]?this.emit("data",t):this[Si](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[b]):(this[_]!==0&&this.emit("readable"),i&&r(i),this[b])}read(t){if(this[w])return null;if(this[C]=!1,this[_]===0||t===0||t&&t>this[_])return this[j](),null;this[L]&&(t=null),this[g].length>1&&!this[L]&&(this[g]=[this[z]?this[g].join(""):Buffer.concat(this[g],this[_])]);let e=this[xs](t||null,this[g][0]);return this[j](),e}[xs](t,e){if(this[L])this[De]();else{let i=e;t===i.length||t===null?this[De]():typeof i=="string"?(this[g][0]=i.slice(t),e=i.slice(0,t),this[_]-=t):(this[g][0]=i.subarray(t),e=i.subarray(0,t),this[_]-=t)}return this.emit("data",e),!this[g].length&&!this[q]&&this.emit("drain"),e}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e="utf8"),t!==void 0&&this.write(t,e),i&&this.once("end",i),this[q]=!0,this.writable=!1,(this[b]||!this[Qt])&&this[j](),this}[Bt](){this[w]||(!this[yt]&&!this[D].length&&(this[C]=!0),this[Qt]=!1,this[b]=!0,this.emit("resume"),this[g].length?this[Ne]():this[q]?this[j]():this.emit("drain"))}resume(){return this[Bt]()}pause(){this[b]=!1,this[Qt]=!0,this[C]=!1}get destroyed(){return this[w]}get flowing(){return this[b]}get paused(){return this[Qt]}[Si](t){this[L]?this[_]+=1:this[_]+=t.length,this[g].push(t)}[De](){return this[L]?this[_]-=1:this[_]-=this[g][0].length,this[g].shift()}[Ne](t=!1){do;while(this[Ls](this[De]())&&this[g].length);!t&&!this[g].length&&!this[q]&&this.emit("drain")}[Ls](t){return this.emit("data",t),this[b]}pipe(t,e){if(this[w])return t;this[C]=!1;let i=this[rt];return e=e||{},t===Ts.stdout||t===Ts.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,i?e.end&&t.end():(this[D].push(e.proxyErrors?new _i(this,t,e):new Ie(this,t,e)),this[Z]?te(()=>this[Bt]()):this[Bt]()),t}unpipe(t){let e=this[D].find(i=>i.dest===t);e&&(this[D].length===1?(this[b]&&this[yt]===0&&(this[b]=!1),this[D]=[]):this[D].splice(this[D].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let i=super.on(t,e);if(t==="data")this[C]=!1,this[yt]++,!this[D].length&&!this[b]&&this[Bt]();else if(t==="readable"&&this[_]!==0)super.emit("readable");else if(Mr(t)&&this[rt])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[jt]){let r=e;this[Z]?te(()=>r.call(this,this[jt])):r.call(this,this[jt])}return i}removeListener(t,e){return this.off(t,e)}off(t,e){let i=super.off(t,e);return t==="data"&&(this[yt]=this.listeners("data").length,this[yt]===0&&!this[C]&&!this[D].length&&(this[b]=!1)),i}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[yt]=0,!this[C]&&!this[D].length&&(this[b]=!1)),e}get emittedEnd(){return this[rt]}[j](){!this[xe]&&!this[rt]&&!this[w]&&this[g].length===0&&this[q]&&(this[xe]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Le]&&this.emit("close"),this[xe]=!1)}emit(t,...e){let i=e[0];if(t!=="error"&&t!=="close"&&t!==w&&this[w])return!1;if(t==="data")return!this[L]&&!i?!1:this[Z]?(te(()=>this[Ri](i)),!0):this[Ri](i);if(t==="end")return this[Ns]();if(t==="close"){if(this[Le]=!0,!this[rt]&&!this[w])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[jt]=i,super.emit(yi,i);let n=!this[Jt]||this.listeners("error").length?super.emit("error",i):!1;return this[j](),n}else if(t==="resume"){let n=super.emit("resume");return this[j](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let r=super.emit(t,...e);return this[j](),r}[Ri](t){for(let i of this[D])i.dest.write(t)===!1&&this.pause();let e=this[C]?!1:super.emit("data",t);return this[j](),e}[Ns](){return this[rt]?!1:(this[rt]=!0,this.readable=!1,this[Z]?(te(()=>this[bi]()),!0):this[bi]())}[bi](){if(this[Mt]){let e=this[Mt].end();if(e){for(let i of this[D])i.dest.write(e);this[C]||super.emit("data",e)}}for(let e of this[D])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[L]||(t.dataLength=0);let e=this.promise();return this.on("data",i=>{t.push(i),this[L]||(t.dataLength+=i.length)}),await e,t}async concat(){if(this[L])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[z]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(w,()=>e(new Error("stream destroyed"))),this.on("error",i=>e(i)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[C]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[q])return e();let n,o,h=d=>{this.off("data",a),this.off("end",l),this.off(w,c),e(),o(d)},a=d=>{this.off("error",h),this.off("end",l),this.off(w,c),this.pause(),n({value:d,done:!!this[q]})},l=()=>{this.off("error",h),this.off("data",a),this.off(w,c),e(),n({done:!0,value:void 0})},c=()=>h(new Error("stream destroyed"));return new Promise((d,S)=>{o=S,n=d,this.once(w,c),this.once("error",h),this.once("end",l),this.once("data",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[C]=!1;let t=!1,e=()=>(this.pause(),this.off(yi,e),this.off(w,e),this.off("end",e),t=!0,{done:!0,value:void 0}),i=()=>{if(t)return e();let r=this.read();return r===null?e():{done:!1,value:r}};return this.once("end",e),this.once(yi,e),this.once(w,e),{next:i,throw:e,return:e,[Symbol.iterator](){return this}}}destroy(t){if(this[w])return t?this.emit("error",t):this.emit(w),this;this[w]=!0,this[C]=!0,this[g].length=0,this[_]=0;let e=this;return typeof e.close=="function"&&!this[Le]&&e.close(),t?this.emit("error",t):this.emit(w),this}static get isStream(){return Cr}};var Wr=I.writev,ot=Symbol("_autoClose"),H=Symbol("_close"),ee=Symbol("_ended"),m=Symbol("_fd"),Ti=Symbol("_finished"),J=Symbol("_flags"),xi=Symbol("_flush"),Ai=Symbol("_handleChunk"),Ii=Symbol("_makeBuf"),se=Symbol("_mode"),Ce=Symbol("_needDrain"),Ut=Symbol("_onerror"),Ht=Symbol("_onopen"),Li=Symbol("_onread"),Pt=Symbol("_onwrite"),ht=Symbol("_open"),U=Symbol("_path"),nt=Symbol("_pos"),Y=Symbol("_queue"),zt=Symbol("_read"),Ni=Symbol("_readSize"),Q=Symbol("_reading"),ie=Symbol("_remain"),Di=Symbol("_size"),Fe=Symbol("_write"),Rt=Symbol("_writing"),ke=Symbol("_defaultFlag"),bt=Symbol("_errored"),gt=class extends A{[bt]=!1;[m];[U];[Ni];[Q]=!1;[Di];[ie];[ot];constructor(t,e){if(e=e||{},super(e),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[bt]=!1,this[m]=typeof e.fd=="number"?e.fd:void 0,this[U]=t,this[Ni]=e.readSize||16*1024*1024,this[Q]=!1,this[Di]=typeof e.size=="number"?e.size:1/0,this[ie]=this[Di],this[ot]=typeof e.autoClose=="boolean"?e.autoClose:!0,typeof this[m]=="number"?this[zt]():this[ht]()}get fd(){return this[m]}get path(){return this[U]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[ht](){I.open(this[U],"r",(t,e)=>this[Ht](t,e))}[Ht](t,e){t?this[Ut](t):(this[m]=e,this.emit("open",e),this[zt]())}[Ii](){return Buffer.allocUnsafe(Math.min(this[Ni],this[ie]))}[zt](){if(!this[Q]){this[Q]=!0;let t=this[Ii]();if(t.length===0)return process.nextTick(()=>this[Li](null,0,t));I.read(this[m],t,0,t.length,null,(e,i,r)=>this[Li](e,i,r))}}[Li](t,e,i){this[Q]=!1,t?this[Ut](t):this[Ai](e,i)&&this[zt]()}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}[Ut](t){this[Q]=!0,this[H](),this.emit("error",t)}[Ai](t,e){let i=!1;return this[ie]-=t,t>0&&(i=super.write(t<e.length?e.subarray(0,t):e)),(t===0||this[ie]<=0)&&(i=!1,this[H](),super.end()),i}emit(t,...e){switch(t){case"prefinish":case"finish":return!1;case"drain":return typeof this[m]=="number"&&this[zt](),!1;case"error":return this[bt]?!1:(this[bt]=!0,super.emit(t,...e));default:return super.emit(t,...e)}}},ve=class extends gt{[ht](){let t=!0;try{this[Ht](null,I.openSync(this[U],"r")),t=!1}finally{t&&this[H]()}}[zt](){let t=!0;try{if(!this[Q]){this[Q]=!0;do{let e=this[Ii](),i=e.length===0?0:I.readSync(this[m],e,0,e.length,null);if(!this[Ai](i,e))break}while(!0);this[Q]=!1}t=!1}finally{t&&this[H]()}}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}},tt=class extends Hr{readable=!1;writable=!0;[bt]=!1;[Rt]=!1;[ee]=!1;[Y]=[];[Ce]=!1;[U];[se];[ot];[m];[ke];[J];[Ti]=!1;[nt];constructor(t,e){e=e||{},super(e),this[U]=t,this[m]=typeof e.fd=="number"?e.fd:void 0,this[se]=e.mode===void 0?438:e.mode,this[nt]=typeof e.start=="number"?e.start:void 0,this[ot]=typeof e.autoClose=="boolean"?e.autoClose:!0;let i=this[nt]!==void 0?"r+":"w";this[ke]=e.flags===void 0,this[J]=e.flags===void 0?i:e.flags,this[m]===void 0&&this[ht]()}emit(t,...e){if(t==="error"){if(this[bt])return!1;this[bt]=!0}return super.emit(t,...e)}get fd(){return this[m]}get path(){return this[U]}[Ut](t){this[H](),this[Rt]=!0,this.emit("error",t)}[ht](){I.open(this[U],this[J],this[se],(t,e)=>this[Ht](t,e))}[Ht](t,e){this[ke]&&this[J]==="r+"&&t&&t.code==="ENOENT"?(this[J]="w",this[ht]()):t?this[Ut](t):(this[m]=e,this.emit("open",e),this[Rt]||this[xi]())}end(t,e){return t&&this.write(t,e),this[ee]=!0,!this[Rt]&&!this[Y].length&&typeof this[m]=="number"&&this[Pt](null,0),this}write(t,e){return typeof t=="string"&&(t=Buffer.from(t,e)),this[ee]?(this.emit("error",new Error("write() after end()")),!1):this[m]===void 0||this[Rt]||this[Y].length?(this[Y].push(t),this[Ce]=!0,!1):(this[Rt]=!0,this[Fe](t),!0)}[Fe](t){I.write(this[m],t,0,t.length,this[nt],(e,i)=>this[Pt](e,i))}[Pt](t,e){t?this[Ut](t):(this[nt]!==void 0&&typeof e=="number"&&(this[nt]+=e),this[Y].length?this[xi]():(this[Rt]=!1,this[ee]&&!this[Ti]?(this[Ti]=!0,this[H](),this.emit("finish")):this[Ce]&&(this[Ce]=!1,this.emit("drain"))))}[xi](){if(this[Y].length===0)this[ee]&&this[Pt](null,0);else if(this[Y].length===1)this[Fe](this[Y].pop());else{let t=this[Y];this[Y]=[],Wr(this[m],t,this[nt],(e,i)=>this[Pt](e,i))}}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}},Wt=class extends tt{[ht](){let t;if(this[ke]&&this[J]==="r+")try{t=I.openSync(this[U],this[J],this[se])}catch(e){if(e?.code==="ENOENT")return this[J]="w",this[ht]();throw e}else t=I.openSync(this[U],this[J],this[se]);this[Ht](null,t)}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}[Fe](t){let e=!0;try{this[Pt](null,I.writeSync(this[m],t,0,t.length,this[nt])),e=!1}finally{if(e)try{this[H]()}catch{}}}};import or from"node:path";import Vt from"node:fs";import{dirname as bn,parse as gn}from"path";var Gr=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),As=s=>!!s.sync&&!!s.file,Is=s=>!s.sync&&!!s.file,Cs=s=>!!s.sync&&!s.file,Fs=s=>!s.sync&&!s.file;var ks=s=>!!s.file;var Zr=s=>{let t=Gr.get(s);return t||s},re=(s={})=>{if(!s)return{};let t={};for(let[e,i]of Object.entries(s)){let r=Zr(e);t[r]=i}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t};var K=(s,t,e,i,r)=>Object.assign((n=[],o,h)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(h=o,o=void 0),o?o=Array.from(o):o=[];let a=re(n);if(r?.(a,o),As(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return s(a,o)}else if(Is(a)){let l=t(a,o),c=h||void 0;return c?l.then(()=>c(),c):l}else if(Cs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return e(a,o)}else if(Fs(a)){if(typeof h=="function")throw new TypeError("callback only supported with file option");return i(a,o)}else throw new Error("impossible options??")},{syncFile:s,asyncFile:t,syncNoFile:e,asyncNoFile:i,validate:r});import{EventEmitter as wn}from"events";import vi from"assert";import{Buffer as _t}from"buffer";import*as vs from"zlib";import Yr from"zlib";var Kr=Yr.constants||{ZLIB_VERNUM:4736},M=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Kr));var Vr=_t.concat,Ms=Object.getOwnPropertyDescriptor(_t,"concat"),$r=s=>s,Fi=Ms?.writable===!0||Ms?.set!==void 0?s=>{_t.concat=s?$r:Vr}:s=>{},Ot=Symbol("_superWrite"),Gt=class extends Error{code;errno;constructor(t,e){super("zlib: "+t.message,{cause:t}),this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,e??this.constructor)}get name(){return"ZlibError"}},ki=Symbol("flushFlag"),ne=class extends A{#t=!1;#i=!1;#s;#n;#r;#e;#o;get sawError(){return this.#t}get handle(){return this.#e}get flushFlag(){return this.#s}constructor(t,e){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(t),this.#s=t.flush??0,this.#n=t.finishFlush??0,this.#r=t.fullFlushFlag??0,typeof vs[e]!="function")throw new TypeError("Compression method not supported: "+e);try{this.#e=new vs[e](t)}catch(i){throw new Gt(i,this.constructor)}this.#o=i=>{this.#t||(this.#t=!0,this.close(),this.emit("error",i))},this.#e?.on("error",i=>this.#o(new Gt(i))),this.once("end",()=>this.close)}close(){this.#e&&(this.#e.close(),this.#e=void 0,this.emit("close"))}reset(){if(!this.#t)return vi(this.#e,"zlib binding closed"),this.#e.reset?.()}flush(t){this.ended||(typeof t!="number"&&(t=this.#r),this.write(Object.assign(_t.alloc(0),{[ki]:t})))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&(e?this.write(t,e):this.write(t)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ot](t){return super.write(t)}write(t,e,i){if(typeof e=="function"&&(i=e,e="utf8"),typeof t=="string"&&(t=_t.from(t,e)),this.#t)return;vi(this.#e,"zlib binding closed");let r=this.#e._handle,n=r.close;r.close=()=>{};let o=this.#e.close;this.#e.close=()=>{},Fi(!0);let h;try{let l=typeof t[ki]=="number"?t[ki]:this.#s;h=this.#e._processChunk(t,l),Fi(!1)}catch(l){Fi(!1),this.#o(new Gt(l,this.write))}finally{this.#e&&(this.#e._handle=r,r.close=n,this.#e.close=o,this.#e.removeAllListeners("error"))}this.#e&&this.#e.on("error",l=>this.#o(new Gt(l,this.write)));let a;if(h)if(Array.isArray(h)&&h.length>0){let l=h[0];a=this[Ot](_t.from(l));for(let c=1;c<h.length;c++)a=this[Ot](h[c])}else a=this[Ot](_t.from(h));return i&&i(),a}},Me=class extends ne{#t;#i;constructor(t,e){t=t||{},t.flush=t.flush||M.Z_NO_FLUSH,t.finishFlush=t.finishFlush||M.Z_FINISH,t.fullFlushFlag=M.Z_FULL_FLUSH,super(t,e),this.#t=t.level,this.#i=t.strategy}params(t,e){if(!this.sawError){if(!this.handle)throw new Error("cannot switch params when binding is closed");if(!this.handle.params)throw new Error("not supported in this implementation");if(this.#t!==t||this.#i!==e){this.flush(M.Z_SYNC_FLUSH),vi(this.handle,"zlib binding closed");let i=this.handle.flush;this.handle.flush=(r,n)=>{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(t,e)}finally{this.handle.flush=i}this.handle&&(this.#t=t,this.#i=e)}}}};var Be=class extends Me{#t;constructor(t){super(t,"Gzip"),this.#t=t&&!!t.portable}[Ot](t){return this.#t?(this.#t=!1,t[9]=255,super[Ot](t)):super[Ot](t)}};var Pe=class extends Me{constructor(t){super(t,"Unzip")}},ze=class extends ne{constructor(t,e){t=t||{},t.flush=t.flush||M.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||M.BROTLI_OPERATION_FINISH,t.fullFlushFlag=M.BROTLI_OPERATION_FLUSH,super(t,e)}},Ue=class extends ze{constructor(t){super(t,"BrotliCompress")}},He=class extends ze{constructor(t){super(t,"BrotliDecompress")}},We=class extends ne{constructor(t,e){t=t||{},t.flush=t.flush||M.ZSTD_e_continue,t.finishFlush=t.finishFlush||M.ZSTD_e_end,t.fullFlushFlag=M.ZSTD_e_flush,super(t,e)}},Ge=class extends We{constructor(t){super(t,"ZstdCompress")}},Ze=class extends We{constructor(t){super(t,"ZstdDecompress")}};import{posix as Zt}from"node:path";var Bs=(s,t)=>{if(Number.isSafeInteger(s))s<0?jr(s,t):qr(s,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},qr=(s,t)=>{t[0]=128;for(var e=t.length;e>1;e--)t[e-1]=s&255,s=Math.floor(s/256)},jr=(s,t)=>{t[0]=255;var e=!1;s=s*-1;for(var i=t.length;i>1;i--){var r=s&255;s=Math.floor(s/256),e?t[i-1]=zs(r):r===0?t[i-1]=0:(e=!0,t[i-1]=Us(r))}},Ps=s=>{let t=s[0],e=t===128?Jr(s.subarray(1,s.length)):t===255?Qr(s):null;if(e===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(e))throw Error("parsed number outside of javascript safe integer range");return e},Qr=s=>{for(var t=s.length,e=0,i=!1,r=t-1;r>-1;r--){var n=Number(s[r]),o;i?o=zs(n):n===0?o=n:(i=!0,o=Us(n)),o!==0&&(e-=o*Math.pow(256,t-r-1))}return e},Jr=s=>{for(var t=s.length,e=0,i=t-1;i>-1;i--){var r=Number(s[i]);r!==0&&(e+=r*Math.pow(256,t-i-1))}return e},zs=s=>(255^s)&255,Us=s=>(255^s)+1&255;var Mi={};Ar(Mi,{code:()=>Ye,isCode:()=>oe,isName:()=>en,name:()=>he});var oe=s=>he.has(s),en=s=>Ye.has(s),he=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),Ye=new Map(Array.from(he).map(s=>[s[1],s[0]]));var F=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#t="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(t,e=0,i,r){Buffer.isBuffer(t)?this.decode(t,e||0,i,r):t&&this.#i(t)}decode(t,e,i,r){if(e||(e=0),!t||!(t.length>=e+512))throw new Error("need 512 bytes for header");this.path=i?.path??Tt(t,e,100),this.mode=i?.mode??r?.mode??at(t,e+100,8),this.uid=i?.uid??r?.uid??at(t,e+108,8),this.gid=i?.gid??r?.gid??at(t,e+116,8),this.size=i?.size??r?.size??at(t,e+124,12),this.mtime=i?.mtime??r?.mtime??Bi(t,e+136,12),this.cksum=at(t,e+148,12),r&&this.#i(r,!0),i&&this.#i(i);let n=Tt(t,e+156,1);if(oe(n)&&(this.#t=n||"0"),this.#t==="0"&&this.path.slice(-1)==="/"&&(this.#t="5"),this.#t==="5"&&(this.size=0),this.linkpath=Tt(t,e+157,100),t.subarray(e+257,e+265).toString()==="ustar\x0000")if(this.uname=i?.uname??r?.uname??Tt(t,e+265,32),this.gname=i?.gname??r?.gname??Tt(t,e+297,32),this.devmaj=i?.devmaj??r?.devmaj??at(t,e+329,8)??0,this.devmin=i?.devmin??r?.devmin??at(t,e+337,8)??0,t[e+475]!==0){let h=Tt(t,e+345,155);this.path=h+"/"+this.path}else{let h=Tt(t,e+345,130);h&&(this.path=h+"/"+this.path),this.atime=i?.atime??r?.atime??Bi(t,e+476,12),this.ctime=i?.ctime??r?.ctime??Bi(t,e+488,12)}let o=256;for(let h=e;h<e+148;h++)o+=t[h];for(let h=e+156;h<e+512;h++)o+=t[h];this.cksumValid=o===this.cksum,this.cksum===void 0&&o===256&&(this.nullBlock=!0)}#i(t,e=!1){Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="path"&&e||i==="linkpath"&&e||i==="global"))))}encode(t,e=0){if(t||(t=this.block=Buffer.alloc(512)),this.#t==="Unsupported"&&(this.#t="0"),!(t.length>=e+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=sn(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=xt(t,e,100,n)||this.needPax,this.needPax=lt(t,e+100,8,this.mode)||this.needPax,this.needPax=lt(t,e+108,8,this.uid)||this.needPax,this.needPax=lt(t,e+116,8,this.gid)||this.needPax,this.needPax=lt(t,e+124,12,this.size)||this.needPax,this.needPax=Pi(t,e+136,12,this.mtime)||this.needPax,t[e+156]=this.#t.charCodeAt(0),this.needPax=xt(t,e+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",e+257,8),this.needPax=xt(t,e+265,32,this.uname)||this.needPax,this.needPax=xt(t,e+297,32,this.gname)||this.needPax,this.needPax=lt(t,e+329,8,this.devmaj)||this.needPax,this.needPax=lt(t,e+337,8,this.devmin)||this.needPax,this.needPax=xt(t,e+345,i,o)||this.needPax,t[e+475]!==0?this.needPax=xt(t,e+345,155,o)||this.needPax:(this.needPax=xt(t,e+345,130,o)||this.needPax,this.needPax=Pi(t,e+476,12,this.atime)||this.needPax,this.needPax=Pi(t,e+488,12,this.ctime)||this.needPax);let h=256;for(let a=e;a<e+148;a++)h+=t[a];for(let a=e+156;a<e+512;a++)h+=t[a];return this.cksum=h,lt(t,e+148,8,this.cksum),this.cksumValid=!0,this.needPax}get type(){return this.#t==="Unsupported"?this.#t:he.get(this.#t)}get typeKey(){return this.#t}set type(t){let e=String(Ye.get(t));if(oe(e)||e==="Unsupported")this.#t=e;else if(oe(t))this.#t=t;else throw new TypeError("invalid entry type: "+t)}},sn=(s,t)=>{let i=s,r="",n,o=Zt.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Zt.dirname(i),i=Zt.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=t?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=t?n=[i.slice(0,99),r,!0]:(i=Zt.join(Zt.basename(r),i),r=Zt.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Tt=(s,t,e)=>s.subarray(t,t+e).toString("utf8").replace(/\0.*/,""),Bi=(s,t,e)=>rn(at(s,t,e)),rn=s=>s===void 0?void 0:new Date(s*1e3),at=(s,t,e)=>Number(s[t])&128?Ps(s.subarray(t,t+e)):on(s,t,e),nn=s=>isNaN(s)?void 0:s,on=(s,t,e)=>nn(parseInt(s.subarray(t,t+e).toString("utf8").replace(/\0.*$/,"").trim(),8)),hn={12:8589934591,8:2097151},lt=(s,t,e,i)=>i===void 0?!1:i>hn[e]||i<0?(Bs(i,s.subarray(t,t+e)),!0):(an(s,t,e,i),!1),an=(s,t,e,i)=>s.write(ln(i,e),t,e,"ascii"),ln=(s,t)=>cn(Math.floor(s).toString(8),t),cn=(s,t)=>(s.length===t-1?s:new Array(t-s.length-1).join("0")+s+" ")+"\0",Pi=(s,t,e,i)=>i===void 0?!1:lt(s,t,e,i.getTime()/1e3),fn=new Array(156).join("\0"),xt=(s,t,e,i)=>i===void 0?!1:(s.write(i+fn,t,e,"utf8"),i.length!==Buffer.byteLength(i)||i.length>e);import{basename as dn}from"node:path";var ct=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,e=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=e,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let e=Buffer.byteLength(t),i=512*Math.ceil(1+e/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new F({path:("PaxHeader/"+dn(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:e,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(t,512,e,"utf8");for(let n=e+512;n<r.length;n++)r[n]=0;return r}encodeBody(){return this.encodeField("path")+this.encodeField("ctime")+this.encodeField("atime")+this.encodeField("dev")+this.encodeField("ino")+this.encodeField("nlink")+this.encodeField("charset")+this.encodeField("comment")+this.encodeField("gid")+this.encodeField("gname")+this.encodeField("linkpath")+this.encodeField("mtime")+this.encodeField("size")+this.encodeField("uid")+this.encodeField("uname")}encodeField(t){if(this[t]===void 0)return"";let e=this[t],i=e instanceof Date?e.getTime()/1e3:e,r=" "+(t==="dev"||t==="ino"||t==="nlink"?"SCHILY.":"")+t+"="+i+`
+var Dr=Object.defineProperty;var Ar=(s,t)=>{for(var e in t)Dr(s,e,{get:t[e],enumerable:!0})};import Hr from"events";import I from"fs";import{EventEmitter as Oi}from"node:events";import Ds from"node:stream";import{StringDecoder as Ir}from"node:string_decoder";var Ts=typeof process=="object"&&process?process:{stdout:null,stderr:null},Cr=s=>!!s&&typeof s=="object"&&(s instanceof A||s instanceof Ds||Fr(s)||kr(s)),Fr=s=>!!s&&typeof s=="object"&&s instanceof Oi&&typeof s.pipe=="function"&&s.pipe!==Ds.Writable.prototype.pipe,kr=s=>!!s&&typeof s=="object"&&s instanceof Oi&&typeof s.write=="function"&&typeof s.end=="function",q=Symbol("EOF"),j=Symbol("maybeEmitEnd"),rt=Symbol("emittedEnd"),xe=Symbol("emittingEnd"),jt=Symbol("emittedError"),Le=Symbol("closed"),xs=Symbol("read"),Ne=Symbol("flush"),Ls=Symbol("flushChunk"),z=Symbol("encoding"),Mt=Symbol("decoder"),b=Symbol("flowing"),Qt=Symbol("paused"),Bt=Symbol("resume"),g=Symbol("buffer"),D=Symbol("pipes"),_=Symbol("bufferLength"),Si=Symbol("bufferPush"),De=Symbol("bufferShift"),L=Symbol("objectMode"),w=Symbol("destroyed"),yi=Symbol("error"),Ri=Symbol("emitData"),Ns=Symbol("emitEnd"),bi=Symbol("emitEnd2"),Z=Symbol("async"),gi=Symbol("abort"),Ae=Symbol("aborted"),Jt=Symbol("signal"),yt=Symbol("dataListeners"),C=Symbol("discarded"),te=s=>Promise.resolve().then(s),vr=s=>s(),Mr=s=>s==="end"||s==="finish"||s==="prefinish",Br=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,Pr=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Ie=class{src;dest;opts;ondrain;constructor(t,e,i){this.src=t,this.dest=e,this.opts=i,this.ondrain=()=>t[Bt](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},_i=class extends Ie{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,i){super(t,e,i),this.proxyErrors=r=>this.dest.emit("error",r),t.on("error",this.proxyErrors)}},zr=s=>!!s.objectMode,Ur=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",A=class extends Oi{[b]=!1;[Qt]=!1;[D]=[];[g]=[];[L];[z];[Z];[Mt];[q]=!1;[rt]=!1;[xe]=!1;[Le]=!1;[jt]=null;[_]=0;[w]=!1;[Jt];[Ae]=!1;[yt]=0;[C]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");zr(e)?(this[L]=!0,this[z]=null):Ur(e)?(this[z]=e.encoding,this[L]=!1):(this[L]=!1,this[z]=null),this[Z]=!!e.async,this[Mt]=this[z]?new Ir(this[z]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[g]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[D]});let{signal:i}=e;i&&(this[Jt]=i,i.aborted?this[gi]():i.addEventListener("abort",()=>this[gi]()))}get bufferLength(){return this[_]}get encoding(){return this[z]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[L]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[Z]}set async(t){this[Z]=this[Z]||!!t}[gi](){this[Ae]=!0,this.emit("abort",this[Jt]?.reason),this.destroy(this[Jt]?.reason)}get aborted(){return this[Ae]}set aborted(t){}write(t,e,i){if(this[Ae])return!1;if(this[q])throw new Error("write after end");if(this[w])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof e=="function"&&(i=e,e="utf8"),e||(e="utf8");let r=this[Z]?te:vr;if(!this[L]&&!Buffer.isBuffer(t)){if(Pr(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Br(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[L]?(this[b]&&this[_]!==0&&this[Ne](!0),this[b]?this.emit("data",t):this[Si](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[b]):t.length?(typeof t=="string"&&!(e===this[z]&&!this[Mt]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[z]&&(t=this[Mt].write(t)),this[b]&&this[_]!==0&&this[Ne](!0),this[b]?this.emit("data",t):this[Si](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[b]):(this[_]!==0&&this.emit("readable"),i&&r(i),this[b])}read(t){if(this[w])return null;if(this[C]=!1,this[_]===0||t===0||t&&t>this[_])return this[j](),null;this[L]&&(t=null),this[g].length>1&&!this[L]&&(this[g]=[this[z]?this[g].join(""):Buffer.concat(this[g],this[_])]);let e=this[xs](t||null,this[g][0]);return this[j](),e}[xs](t,e){if(this[L])this[De]();else{let i=e;t===i.length||t===null?this[De]():typeof i=="string"?(this[g][0]=i.slice(t),e=i.slice(0,t),this[_]-=t):(this[g][0]=i.subarray(t),e=i.subarray(0,t),this[_]-=t)}return this.emit("data",e),!this[g].length&&!this[q]&&this.emit("drain"),e}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e="utf8"),t!==void 0&&this.write(t,e),i&&this.once("end",i),this[q]=!0,this.writable=!1,(this[b]||!this[Qt])&&this[j](),this}[Bt](){this[w]||(!this[yt]&&!this[D].length&&(this[C]=!0),this[Qt]=!1,this[b]=!0,this.emit("resume"),this[g].length?this[Ne]():this[q]?this[j]():this.emit("drain"))}resume(){return this[Bt]()}pause(){this[b]=!1,this[Qt]=!0,this[C]=!1}get destroyed(){return this[w]}get flowing(){return this[b]}get paused(){return this[Qt]}[Si](t){this[L]?this[_]+=1:this[_]+=t.length,this[g].push(t)}[De](){return this[L]?this[_]-=1:this[_]-=this[g][0].length,this[g].shift()}[Ne](t=!1){do;while(this[Ls](this[De]())&&this[g].length);!t&&!this[g].length&&!this[q]&&this.emit("drain")}[Ls](t){return this.emit("data",t),this[b]}pipe(t,e){if(this[w])return t;this[C]=!1;let i=this[rt];return e=e||{},t===Ts.stdout||t===Ts.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,i?e.end&&t.end():(this[D].push(e.proxyErrors?new _i(this,t,e):new Ie(this,t,e)),this[Z]?te(()=>this[Bt]()):this[Bt]()),t}unpipe(t){let e=this[D].find(i=>i.dest===t);e&&(this[D].length===1?(this[b]&&this[yt]===0&&(this[b]=!1),this[D]=[]):this[D].splice(this[D].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let i=super.on(t,e);if(t==="data")this[C]=!1,this[yt]++,!this[D].length&&!this[b]&&this[Bt]();else if(t==="readable"&&this[_]!==0)super.emit("readable");else if(Mr(t)&&this[rt])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[jt]){let r=e;this[Z]?te(()=>r.call(this,this[jt])):r.call(this,this[jt])}return i}removeListener(t,e){return this.off(t,e)}off(t,e){let i=super.off(t,e);return t==="data"&&(this[yt]=this.listeners("data").length,this[yt]===0&&!this[C]&&!this[D].length&&(this[b]=!1)),i}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[yt]=0,!this[C]&&!this[D].length&&(this[b]=!1)),e}get emittedEnd(){return this[rt]}[j](){!this[xe]&&!this[rt]&&!this[w]&&this[g].length===0&&this[q]&&(this[xe]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Le]&&this.emit("close"),this[xe]=!1)}emit(t,...e){let i=e[0];if(t!=="error"&&t!=="close"&&t!==w&&this[w])return!1;if(t==="data")return!this[L]&&!i?!1:this[Z]?(te(()=>this[Ri](i)),!0):this[Ri](i);if(t==="end")return this[Ns]();if(t==="close"){if(this[Le]=!0,!this[rt]&&!this[w])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[jt]=i,super.emit(yi,i);let n=!this[Jt]||this.listeners("error").length?super.emit("error",i):!1;return this[j](),n}else if(t==="resume"){let n=super.emit("resume");return this[j](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let r=super.emit(t,...e);return this[j](),r}[Ri](t){for(let i of this[D])i.dest.write(t)===!1&&this.pause();let e=this[C]?!1:super.emit("data",t);return this[j](),e}[Ns](){return this[rt]?!1:(this[rt]=!0,this.readable=!1,this[Z]?(te(()=>this[bi]()),!0):this[bi]())}[bi](){if(this[Mt]){let e=this[Mt].end();if(e){for(let i of this[D])i.dest.write(e);this[C]||super.emit("data",e)}}for(let e of this[D])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[L]||(t.dataLength=0);let e=this.promise();return this.on("data",i=>{t.push(i),this[L]||(t.dataLength+=i.length)}),await e,t}async concat(){if(this[L])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[z]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(w,()=>e(new Error("stream destroyed"))),this.on("error",i=>e(i)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[C]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[q])return e();let n,o,h=d=>{this.off("data",a),this.off("end",l),this.off(w,c),e(),o(d)},a=d=>{this.off("error",h),this.off("end",l),this.off(w,c),this.pause(),n({value:d,done:!!this[q]})},l=()=>{this.off("error",h),this.off("data",a),this.off(w,c),e(),n({done:!0,value:void 0})},c=()=>h(new Error("stream destroyed"));return new Promise((d,S)=>{o=S,n=d,this.once(w,c),this.once("error",h),this.once("end",l),this.once("data",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[C]=!1;let t=!1,e=()=>(this.pause(),this.off(yi,e),this.off(w,e),this.off("end",e),t=!0,{done:!0,value:void 0}),i=()=>{if(t)return e();let r=this.read();return r===null?e():{done:!1,value:r}};return this.once("end",e),this.once(yi,e),this.once(w,e),{next:i,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[w])return t?this.emit("error",t):this.emit(w),this;this[w]=!0,this[C]=!0,this[g].length=0,this[_]=0;let e=this;return typeof e.close=="function"&&!this[Le]&&e.close(),t?this.emit("error",t):this.emit(w),this}static get isStream(){return Cr}};var Wr=I.writev,ot=Symbol("_autoClose"),H=Symbol("_close"),ee=Symbol("_ended"),m=Symbol("_fd"),Ti=Symbol("_finished"),J=Symbol("_flags"),xi=Symbol("_flush"),Ai=Symbol("_handleChunk"),Ii=Symbol("_makeBuf"),se=Symbol("_mode"),Ce=Symbol("_needDrain"),Ut=Symbol("_onerror"),Ht=Symbol("_onopen"),Li=Symbol("_onread"),Pt=Symbol("_onwrite"),ht=Symbol("_open"),U=Symbol("_path"),nt=Symbol("_pos"),Y=Symbol("_queue"),zt=Symbol("_read"),Ni=Symbol("_readSize"),Q=Symbol("_reading"),ie=Symbol("_remain"),Di=Symbol("_size"),Fe=Symbol("_write"),Rt=Symbol("_writing"),ke=Symbol("_defaultFlag"),bt=Symbol("_errored"),gt=class extends A{[bt]=!1;[m];[U];[Ni];[Q]=!1;[Di];[ie];[ot];constructor(t,e){if(e=e||{},super(e),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[bt]=!1,this[m]=typeof e.fd=="number"?e.fd:void 0,this[U]=t,this[Ni]=e.readSize||16*1024*1024,this[Q]=!1,this[Di]=typeof e.size=="number"?e.size:1/0,this[ie]=this[Di],this[ot]=typeof e.autoClose=="boolean"?e.autoClose:!0,typeof this[m]=="number"?this[zt]():this[ht]()}get fd(){return this[m]}get path(){return this[U]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[ht](){I.open(this[U],"r",(t,e)=>this[Ht](t,e))}[Ht](t,e){t?this[Ut](t):(this[m]=e,this.emit("open",e),this[zt]())}[Ii](){return Buffer.allocUnsafe(Math.min(this[Ni],this[ie]))}[zt](){if(!this[Q]){this[Q]=!0;let t=this[Ii]();if(t.length===0)return process.nextTick(()=>this[Li](null,0,t));I.read(this[m],t,0,t.length,null,(e,i,r)=>this[Li](e,i,r))}}[Li](t,e,i){this[Q]=!1,t?this[Ut](t):this[Ai](e,i)&&this[zt]()}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}[Ut](t){this[Q]=!0,this[H](),this.emit("error",t)}[Ai](t,e){let i=!1;return this[ie]-=t,t>0&&(i=super.write(t<e.length?e.subarray(0,t):e)),(t===0||this[ie]<=0)&&(i=!1,this[H](),super.end()),i}emit(t,...e){switch(t){case"prefinish":case"finish":return!1;case"drain":return typeof this[m]=="number"&&this[zt](),!1;case"error":return this[bt]?!1:(this[bt]=!0,super.emit(t,...e));default:return super.emit(t,...e)}}},ve=class extends gt{[ht](){let t=!0;try{this[Ht](null,I.openSync(this[U],"r")),t=!1}finally{t&&this[H]()}}[zt](){let t=!0;try{if(!this[Q]){this[Q]=!0;do{let e=this[Ii](),i=e.length===0?0:I.readSync(this[m],e,0,e.length,null);if(!this[Ai](i,e))break}while(!0);this[Q]=!1}t=!1}finally{t&&this[H]()}}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}},tt=class extends Hr{readable=!1;writable=!0;[bt]=!1;[Rt]=!1;[ee]=!1;[Y]=[];[Ce]=!1;[U];[se];[ot];[m];[ke];[J];[Ti]=!1;[nt];constructor(t,e){e=e||{},super(e),this[U]=t,this[m]=typeof e.fd=="number"?e.fd:void 0,this[se]=e.mode===void 0?438:e.mode,this[nt]=typeof e.start=="number"?e.start:void 0,this[ot]=typeof e.autoClose=="boolean"?e.autoClose:!0;let i=this[nt]!==void 0?"r+":"w";this[ke]=e.flags===void 0,this[J]=e.flags===void 0?i:e.flags,this[m]===void 0&&this[ht]()}emit(t,...e){if(t==="error"){if(this[bt])return!1;this[bt]=!0}return super.emit(t,...e)}get fd(){return this[m]}get path(){return this[U]}[Ut](t){this[H](),this[Rt]=!0,this.emit("error",t)}[ht](){I.open(this[U],this[J],this[se],(t,e)=>this[Ht](t,e))}[Ht](t,e){this[ke]&&this[J]==="r+"&&t&&t.code==="ENOENT"?(this[J]="w",this[ht]()):t?this[Ut](t):(this[m]=e,this.emit("open",e),this[Rt]||this[xi]())}end(t,e){return t&&this.write(t,e),this[ee]=!0,!this[Rt]&&!this[Y].length&&typeof this[m]=="number"&&this[Pt](null,0),this}write(t,e){return typeof t=="string"&&(t=Buffer.from(t,e)),this[ee]?(this.emit("error",new Error("write() after end()")),!1):this[m]===void 0||this[Rt]||this[Y].length?(this[Y].push(t),this[Ce]=!0,!1):(this[Rt]=!0,this[Fe](t),!0)}[Fe](t){I.write(this[m],t,0,t.length,this[nt],(e,i)=>this[Pt](e,i))}[Pt](t,e){t?this[Ut](t):(this[nt]!==void 0&&typeof e=="number"&&(this[nt]+=e),this[Y].length?this[xi]():(this[Rt]=!1,this[ee]&&!this[Ti]?(this[Ti]=!0,this[H](),this.emit("finish")):this[Ce]&&(this[Ce]=!1,this.emit("drain"))))}[xi](){if(this[Y].length===0)this[ee]&&this[Pt](null,0);else if(this[Y].length===1)this[Fe](this[Y].pop());else{let t=this[Y];this[Y]=[],Wr(this[m],t,this[nt],(e,i)=>this[Pt](e,i))}}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}},Wt=class extends tt{[ht](){let t;if(this[ke]&&this[J]==="r+")try{t=I.openSync(this[U],this[J],this[se])}catch(e){if(e?.code==="ENOENT")return this[J]="w",this[ht]();throw e}else t=I.openSync(this[U],this[J],this[se]);this[Ht](null,t)}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}[Fe](t){let e=!0;try{this[Pt](null,I.writeSync(this[m],t,0,t.length,this[nt])),e=!1}finally{if(e)try{this[H]()}catch{}}}};import or from"node:path";import Vt from"node:fs";import{dirname as bn,parse as gn}from"path";var Gr=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),As=s=>!!s.sync&&!!s.file,Is=s=>!s.sync&&!!s.file,Cs=s=>!!s.sync&&!s.file,Fs=s=>!s.sync&&!s.file;var ks=s=>!!s.file;var Zr=s=>{let t=Gr.get(s);return t||s},re=(s={})=>{if(!s)return{};let t={};for(let[e,i]of Object.entries(s)){let r=Zr(e);t[r]=i}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t};var K=(s,t,e,i,r)=>Object.assign((n=[],o,h)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(h=o,o=void 0),o?o=Array.from(o):o=[];let a=re(n);if(r?.(a,o),As(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return s(a,o)}else if(Is(a)){let l=t(a,o),c=h||void 0;return c?l.then(()=>c(),c):l}else if(Cs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return e(a,o)}else if(Fs(a)){if(typeof h=="function")throw new TypeError("callback only supported with file option");return i(a,o)}else throw new Error("impossible options??")},{syncFile:s,asyncFile:t,syncNoFile:e,asyncNoFile:i,validate:r});import{EventEmitter as wn}from"events";import vi from"assert";import{Buffer as _t}from"buffer";import*as vs from"zlib";import Yr from"zlib";var Kr=Yr.constants||{ZLIB_VERNUM:4736},M=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Kr));var Vr=_t.concat,Ms=Object.getOwnPropertyDescriptor(_t,"concat"),$r=s=>s,Fi=Ms?.writable===!0||Ms?.set!==void 0?s=>{_t.concat=s?$r:Vr}:s=>{},Ot=Symbol("_superWrite"),Gt=class extends Error{code;errno;constructor(t,e){super("zlib: "+t.message,{cause:t}),this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,e??this.constructor)}get name(){return"ZlibError"}},ki=Symbol("flushFlag"),ne=class extends A{#t=!1;#i=!1;#s;#n;#r;#e;#o;get sawError(){return this.#t}get handle(){return this.#e}get flushFlag(){return this.#s}constructor(t,e){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(t),this.#s=t.flush??0,this.#n=t.finishFlush??0,this.#r=t.fullFlushFlag??0,typeof vs[e]!="function")throw new TypeError("Compression method not supported: "+e);try{this.#e=new vs[e](t)}catch(i){throw new Gt(i,this.constructor)}this.#o=i=>{this.#t||(this.#t=!0,this.close(),this.emit("error",i))},this.#e?.on("error",i=>this.#o(new Gt(i))),this.once("end",()=>this.close)}close(){this.#e&&(this.#e.close(),this.#e=void 0,this.emit("close"))}reset(){if(!this.#t)return vi(this.#e,"zlib binding closed"),this.#e.reset?.()}flush(t){this.ended||(typeof t!="number"&&(t=this.#r),this.write(Object.assign(_t.alloc(0),{[ki]:t})))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&(e?this.write(t,e):this.write(t)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ot](t){return super.write(t)}write(t,e,i){if(typeof e=="function"&&(i=e,e="utf8"),typeof t=="string"&&(t=_t.from(t,e)),this.#t)return;vi(this.#e,"zlib binding closed");let r=this.#e._handle,n=r.close;r.close=()=>{};let o=this.#e.close;this.#e.close=()=>{},Fi(!0);let h;try{let l=typeof t[ki]=="number"?t[ki]:this.#s;h=this.#e._processChunk(t,l),Fi(!1)}catch(l){Fi(!1),this.#o(new Gt(l,this.write))}finally{this.#e&&(this.#e._handle=r,r.close=n,this.#e.close=o,this.#e.removeAllListeners("error"))}this.#e&&this.#e.on("error",l=>this.#o(new Gt(l,this.write)));let a;if(h)if(Array.isArray(h)&&h.length>0){let l=h[0];a=this[Ot](_t.from(l));for(let c=1;c<h.length;c++)a=this[Ot](h[c])}else a=this[Ot](_t.from(h));return i&&i(),a}},Me=class extends ne{#t;#i;constructor(t,e){t=t||{},t.flush=t.flush||M.Z_NO_FLUSH,t.finishFlush=t.finishFlush||M.Z_FINISH,t.fullFlushFlag=M.Z_FULL_FLUSH,super(t,e),this.#t=t.level,this.#i=t.strategy}params(t,e){if(!this.sawError){if(!this.handle)throw new Error("cannot switch params when binding is closed");if(!this.handle.params)throw new Error("not supported in this implementation");if(this.#t!==t||this.#i!==e){this.flush(M.Z_SYNC_FLUSH),vi(this.handle,"zlib binding closed");let i=this.handle.flush;this.handle.flush=(r,n)=>{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(t,e)}finally{this.handle.flush=i}this.handle&&(this.#t=t,this.#i=e)}}}};var Be=class extends Me{#t;constructor(t){super(t,"Gzip"),this.#t=t&&!!t.portable}[Ot](t){return this.#t?(this.#t=!1,t[9]=255,super[Ot](t)):super[Ot](t)}};var Pe=class extends Me{constructor(t){super(t,"Unzip")}},ze=class extends ne{constructor(t,e){t=t||{},t.flush=t.flush||M.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||M.BROTLI_OPERATION_FINISH,t.fullFlushFlag=M.BROTLI_OPERATION_FLUSH,super(t,e)}},Ue=class extends ze{constructor(t){super(t,"BrotliCompress")}},He=class extends ze{constructor(t){super(t,"BrotliDecompress")}},We=class extends ne{constructor(t,e){t=t||{},t.flush=t.flush||M.ZSTD_e_continue,t.finishFlush=t.finishFlush||M.ZSTD_e_end,t.fullFlushFlag=M.ZSTD_e_flush,super(t,e)}},Ge=class extends We{constructor(t){super(t,"ZstdCompress")}},Ze=class extends We{constructor(t){super(t,"ZstdDecompress")}};import{posix as Zt}from"node:path";var Bs=(s,t)=>{if(Number.isSafeInteger(s))s<0?jr(s,t):qr(s,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},qr=(s,t)=>{t[0]=128;for(var e=t.length;e>1;e--)t[e-1]=s&255,s=Math.floor(s/256)},jr=(s,t)=>{t[0]=255;var e=!1;s=s*-1;for(var i=t.length;i>1;i--){var r=s&255;s=Math.floor(s/256),e?t[i-1]=zs(r):r===0?t[i-1]=0:(e=!0,t[i-1]=Us(r))}},Ps=s=>{let t=s[0],e=t===128?Jr(s.subarray(1,s.length)):t===255?Qr(s):null;if(e===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(e))throw Error("parsed number outside of javascript safe integer range");return e},Qr=s=>{for(var t=s.length,e=0,i=!1,r=t-1;r>-1;r--){var n=Number(s[r]),o;i?o=zs(n):n===0?o=n:(i=!0,o=Us(n)),o!==0&&(e-=o*Math.pow(256,t-r-1))}return e},Jr=s=>{for(var t=s.length,e=0,i=t-1;i>-1;i--){var r=Number(s[i]);r!==0&&(e+=r*Math.pow(256,t-i-1))}return e},zs=s=>(255^s)&255,Us=s=>(255^s)+1&255;var Mi={};Ar(Mi,{code:()=>Ye,isCode:()=>oe,isName:()=>en,name:()=>he});var oe=s=>he.has(s),en=s=>Ye.has(s),he=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),Ye=new Map(Array.from(he).map(s=>[s[1],s[0]]));var F=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#t="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(t,e=0,i,r){Buffer.isBuffer(t)?this.decode(t,e||0,i,r):t&&this.#i(t)}decode(t,e,i,r){if(e||(e=0),!t||!(t.length>=e+512))throw new Error("need 512 bytes for header");this.path=i?.path??Tt(t,e,100),this.mode=i?.mode??r?.mode??at(t,e+100,8),this.uid=i?.uid??r?.uid??at(t,e+108,8),this.gid=i?.gid??r?.gid??at(t,e+116,8),this.size=i?.size??r?.size??at(t,e+124,12),this.mtime=i?.mtime??r?.mtime??Bi(t,e+136,12),this.cksum=at(t,e+148,12),r&&this.#i(r,!0),i&&this.#i(i);let n=Tt(t,e+156,1);if(oe(n)&&(this.#t=n||"0"),this.#t==="0"&&this.path.slice(-1)==="/"&&(this.#t="5"),this.#t==="5"&&(this.size=0),this.linkpath=Tt(t,e+157,100),t.subarray(e+257,e+265).toString()==="ustar\x0000")if(this.uname=i?.uname??r?.uname??Tt(t,e+265,32),this.gname=i?.gname??r?.gname??Tt(t,e+297,32),this.devmaj=i?.devmaj??r?.devmaj??at(t,e+329,8)??0,this.devmin=i?.devmin??r?.devmin??at(t,e+337,8)??0,t[e+475]!==0){let h=Tt(t,e+345,155);this.path=h+"/"+this.path}else{let h=Tt(t,e+345,130);h&&(this.path=h+"/"+this.path),this.atime=i?.atime??r?.atime??Bi(t,e+476,12),this.ctime=i?.ctime??r?.ctime??Bi(t,e+488,12)}let o=256;for(let h=e;h<e+148;h++)o+=t[h];for(let h=e+156;h<e+512;h++)o+=t[h];this.cksumValid=o===this.cksum,this.cksum===void 0&&o===256&&(this.nullBlock=!0)}#i(t,e=!1){Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="path"&&e||i==="linkpath"&&e||i==="global"))))}encode(t,e=0){if(t||(t=this.block=Buffer.alloc(512)),this.#t==="Unsupported"&&(this.#t="0"),!(t.length>=e+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=sn(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=xt(t,e,100,n)||this.needPax,this.needPax=lt(t,e+100,8,this.mode)||this.needPax,this.needPax=lt(t,e+108,8,this.uid)||this.needPax,this.needPax=lt(t,e+116,8,this.gid)||this.needPax,this.needPax=lt(t,e+124,12,this.size)||this.needPax,this.needPax=Pi(t,e+136,12,this.mtime)||this.needPax,t[e+156]=this.#t.charCodeAt(0),this.needPax=xt(t,e+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",e+257,8),this.needPax=xt(t,e+265,32,this.uname)||this.needPax,this.needPax=xt(t,e+297,32,this.gname)||this.needPax,this.needPax=lt(t,e+329,8,this.devmaj)||this.needPax,this.needPax=lt(t,e+337,8,this.devmin)||this.needPax,this.needPax=xt(t,e+345,i,o)||this.needPax,t[e+475]!==0?this.needPax=xt(t,e+345,155,o)||this.needPax:(this.needPax=xt(t,e+345,130,o)||this.needPax,this.needPax=Pi(t,e+476,12,this.atime)||this.needPax,this.needPax=Pi(t,e+488,12,this.ctime)||this.needPax);let h=256;for(let a=e;a<e+148;a++)h+=t[a];for(let a=e+156;a<e+512;a++)h+=t[a];return this.cksum=h,lt(t,e+148,8,this.cksum),this.cksumValid=!0,this.needPax}get type(){return this.#t==="Unsupported"?this.#t:he.get(this.#t)}get typeKey(){return this.#t}set type(t){let e=String(Ye.get(t));if(oe(e)||e==="Unsupported")this.#t=e;else if(oe(t))this.#t=t;else throw new TypeError("invalid entry type: "+t)}},sn=(s,t)=>{let i=s,r="",n,o=Zt.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Zt.dirname(i),i=Zt.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=t?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=t?n=[i.slice(0,99),r,!0]:(i=Zt.join(Zt.basename(r),i),r=Zt.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Tt=(s,t,e)=>s.subarray(t,t+e).toString("utf8").replace(/\0.*/,""),Bi=(s,t,e)=>rn(at(s,t,e)),rn=s=>s===void 0?void 0:new Date(s*1e3),at=(s,t,e)=>Number(s[t])&128?Ps(s.subarray(t,t+e)):on(s,t,e),nn=s=>isNaN(s)?void 0:s,on=(s,t,e)=>nn(parseInt(s.subarray(t,t+e).toString("utf8").replace(/\0.*$/,"").trim(),8)),hn={12:8589934591,8:2097151},lt=(s,t,e,i)=>i===void 0?!1:i>hn[e]||i<0?(Bs(i,s.subarray(t,t+e)),!0):(an(s,t,e,i),!1),an=(s,t,e,i)=>s.write(ln(i,e),t,e,"ascii"),ln=(s,t)=>cn(Math.floor(s).toString(8),t),cn=(s,t)=>(s.length===t-1?s:new Array(t-s.length-1).join("0")+s+" ")+"\0",Pi=(s,t,e,i)=>i===void 0?!1:lt(s,t,e,i.getTime()/1e3),fn=new Array(156).join("\0"),xt=(s,t,e,i)=>i===void 0?!1:(s.write(i+fn,t,e,"utf8"),i.length!==Buffer.byteLength(i)||i.length>e);import{basename as dn}from"node:path";var ct=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,e=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=e,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let e=Buffer.byteLength(t),i=512*Math.ceil(1+e/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new F({path:("PaxHeader/"+dn(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:e,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(t,512,e,"utf8");for(let n=e+512;n<r.length;n++)r[n]=0;return r}encodeBody(){return this.encodeField("path")+this.encodeField("ctime")+this.encodeField("atime")+this.encodeField("dev")+this.encodeField("ino")+this.encodeField("nlink")+this.encodeField("charset")+this.encodeField("comment")+this.encodeField("gid")+this.encodeField("gname")+this.encodeField("linkpath")+this.encodeField("mtime")+this.encodeField("size")+this.encodeField("uid")+this.encodeField("uname")}encodeField(t){if(this[t]===void 0)return"";let e=this[t],i=e instanceof Date?e.getTime()/1e3:e,r=" "+(t==="dev"||t==="ino"||t==="nlink"?"SCHILY.":"")+t+"="+i+`
 `,n=Buffer.byteLength(r),o=Math.floor(Math.log(n)/Math.log(10))+1;return n+o>=Math.pow(10,o)&&(o+=1),o+n+r}static parse(t,e,i=!1){return new s(un(mn(t),e),i)}},un=(s,t)=>t?Object.assign({},t,s):s,mn=s=>s.replace(/\n$/,"").split(`
-`).reduce(pn,Object.create(null)),pn=(s,t)=>{let e=parseInt(t,10);if(e!==Buffer.byteLength(t)+1)return s;t=t.slice((e+" ").length);let i=t.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s};var En=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,f=En!=="win32"?s=>s:s=>s&&s.replace(/\\/g,"/");var Yt=class extends A{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(t,e,i){switch(super({}),this.pause(),this.extended=e,this.globalExtended=i,this.header=t,this.remain=t.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=t.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!t.path)throw new Error("no path provided for tar.ReadEntry");this.path=f(t.path),this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=this.remain,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath?f(t.linkpath):void 0,this.uname=t.uname,this.gname=t.gname,e&&this.#t(e),i&&this.#t(i,!0)}write(t){let e=t.length;if(e>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-e),this.blockRemain=Math.max(0,r-e),this.ignore?!0:i>=e?super.write(t):super.write(t.subarray(0,i))}#t(t,e=!1){t.path&&(t.path=f(t.path)),t.linkpath&&(t.linkpath=f(t.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="path"&&e))))}};var Lt=(s,t,e,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=e instanceof Error&&e.code||t,i.tarCode=t,!s.strict&&i.recoverable!==!1?(e instanceof Error&&(i=Object.assign(e,i),e=e.message),s.emit("warn",t,e,i)):e instanceof Error?s.emit("error",Object.assign(e,i)):s.emit("error",Object.assign(new Error(`${t}: ${e}`),i))};var Sn=1024*1024,Gi=Buffer.from([31,139]),Zi=Buffer.from([40,181,47,253]),yn=Math.max(Gi.length,Zi.length),B=Symbol("state"),Nt=Symbol("writeEntry"),et=Symbol("readEntry"),zi=Symbol("nextEntry"),Hs=Symbol("processEntry"),V=Symbol("extendedHeader"),ae=Symbol("globalExtendedHeader"),ft=Symbol("meta"),Ws=Symbol("emitMeta"),p=Symbol("buffer"),it=Symbol("queue"),dt=Symbol("ended"),Ui=Symbol("emittedEnd"),Dt=Symbol("emit"),y=Symbol("unzip"),Ke=Symbol("consumeChunk"),Ve=Symbol("consumeChunkSub"),Hi=Symbol("consumeBody"),Gs=Symbol("consumeMeta"),Zs=Symbol("consumeHeader"),le=Symbol("consuming"),Wi=Symbol("bufferConcat"),$e=Symbol("maybeEnd"),Kt=Symbol("writing"),ut=Symbol("aborted"),Xe=Symbol("onDone"),At=Symbol("sawValidEntry"),qe=Symbol("sawNullBlock"),je=Symbol("sawEOF"),Ys=Symbol("closeStream"),Rn=()=>!0,st=class extends wn{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[it]=[];[p];[et];[Nt];[B]="begin";[ft]="";[V];[ae];[dt]=!1;[y];[ut]=!1;[At];[qe]=!1;[je]=!1;[Kt]=!1;[le]=!1;[Ui]=!1;constructor(t={}){super(),this.file=t.file||"",this.on(Xe,()=>{(this[B]==="begin"||this[At]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(Xe,t.ondone):this.on(Xe,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||Sn,this.filter=typeof t.filter=="function"?t.filter:Rn;let e=t.file&&(t.file.endsWith(".tar.br")||t.file.endsWith(".tbr"));this.brotli=!(t.gzip||t.zstd)&&t.brotli!==void 0?t.brotli:e?void 0:!1;let i=t.file&&(t.file.endsWith(".tar.zst")||t.file.endsWith(".tzst"));this.zstd=!(t.gzip||t.brotli)&&t.zstd!==void 0?t.zstd:i?!0:void 0,this.on("end",()=>this[Ys]()),typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onReadEntry=="function"&&this.on("entry",t.onReadEntry)}warn(t,e,i={}){Lt(this,t,e,i)}[Zs](t,e){this[At]===void 0&&(this[At]=!1);let i;try{i=new F(t,e,this[V],this[ae])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[qe]?(this[je]=!0,this[B]==="begin"&&(this[B]="header"),this[Dt]("eof")):(this[qe]=!0,this[Dt]("nullBlock"));else if(this[qe]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Nt]=new Yt(i,this[V],this[ae]);if(!this[At])if(n.remain){let o=()=>{n.invalid||(this[At]=!0)};n.on("end",o)}else this[At]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[Dt]("ignoredEntry",n),this[B]="ignore",n.resume()):n.size>0&&(this[ft]="",n.on("data",o=>this[ft]+=o),this[B]="meta"):(this[V]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[Dt]("ignoredEntry",n),this[B]=n.remain?"ignore":"header",n.resume()):(n.remain?this[B]="body":(this[B]="header",n.end()),this[et]?this[it].push(n):(this[it].push(n),this[zi]())))}}}[Ys](){queueMicrotask(()=>this.emit("close"))}[Hs](t){let e=!0;if(!t)this[et]=void 0,e=!1;else if(Array.isArray(t)){let[i,...r]=t;this.emit(i,...r)}else this[et]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",()=>this[zi]()),e=!1);return e}[zi](){do;while(this[Hs](this[it].shift()));if(!this[it].length){let t=this[et];!t||t.flowing||t.size===t.remain?this[Kt]||this.emit("drain"):t.once("drain",()=>this.emit("drain"))}}[Hi](t,e){let i=this[Nt];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=t.length&&e===0?t:t.subarray(e,e+r);return i.write(n),i.blockRemain||(this[B]="header",this[Nt]=void 0,i.end()),n.length}[Gs](t,e){let i=this[Nt],r=this[Hi](t,e);return!this[Nt]&&i&&this[Ws](i),r}[Dt](t,e,i){!this[it].length&&!this[et]?this.emit(t,e,i):this[it].push([t,e,i])}[Ws](t){switch(this[Dt]("meta",this[ft]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[V]=ct.parse(this[ft],this[V],!1);break;case"GlobalExtendedHeader":this[ae]=ct.parse(this[ft],this[ae],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let e=this[V]??Object.create(null);this[V]=e,e.path=this[ft].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let e=this[V]||Object.create(null);this[V]=e,e.linkpath=this[ft].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+t.type)}}abort(t){this[ut]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this[ut])return i?.(),!1;if((this[y]===void 0||this.brotli===void 0&&this[y]===!1)&&t){if(this[p]&&(t=Buffer.concat([this[p],t]),this[p]=void 0),t.length<yn)return this[p]=t,i?.(),!0;for(let a=0;this[y]===void 0&&a<Gi.length;a++)t[a]!==Gi[a]&&(this[y]=!1);let o=!1;if(this[y]===!1&&this.zstd!==!1){o=!0;for(let a=0;a<Zi.length;a++)if(t[a]!==Zi[a]){o=!1;break}}let h=this.brotli===void 0&&!o;if(this[y]===!1&&h)if(t.length<512)if(this[dt])this.brotli=!0;else return this[p]=t,i?.(),!0;else try{new F(t.subarray(0,512)),this.brotli=!1}catch{this.brotli=!0}if(this[y]===void 0||this[y]===!1&&(this.brotli||o)){let a=this[dt];this[dt]=!1,this[y]=this[y]===void 0?new Pe({}):o?new Ze({}):new He({}),this[y].on("data",c=>this[Ke](c)),this[y].on("error",c=>this.abort(c)),this[y].on("end",()=>{this[dt]=!0,this[Ke]()}),this[Kt]=!0;let l=!!this[y][a?"end":"write"](t);return this[Kt]=!1,i?.(),l}}this[Kt]=!0,this[y]?this[y].write(t):this[Ke](t),this[Kt]=!1;let n=this[it].length?!1:this[et]?this[et].flowing:!0;return!n&&!this[it].length&&this[et]?.once("drain",()=>this.emit("drain")),i?.(),n}[Wi](t){t&&!this[ut]&&(this[p]=this[p]?Buffer.concat([this[p],t]):t)}[$e](){if(this[dt]&&!this[Ui]&&!this[ut]&&!this[le]){this[Ui]=!0;let t=this[Nt];if(t&&t.blockRemain){let e=this[p]?this[p].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${e} available)`,{entry:t}),this[p]&&t.write(this[p]),t.end()}this[Dt](Xe)}}[Ke](t){if(this[le]&&t)this[Wi](t);else if(!t&&!this[p])this[$e]();else if(t){if(this[le]=!0,this[p]){this[Wi](t);let e=this[p];this[p]=void 0,this[Ve](e)}else this[Ve](t);for(;this[p]&&this[p]?.length>=512&&!this[ut]&&!this[je];){let e=this[p];this[p]=void 0,this[Ve](e)}this[le]=!1}(!this[p]||this[dt])&&this[$e]()}[Ve](t){let e=0,i=t.length;for(;e+512<=i&&!this[ut]&&!this[je];)switch(this[B]){case"begin":case"header":this[Zs](t,e),e+=512;break;case"ignore":case"body":e+=this[Hi](t,e);break;case"meta":e+=this[Gs](t,e);break;default:throw new Error("invalid state: "+this[B])}e<i&&(this[p]?this[p]=Buffer.concat([t.subarray(e),this[p]]):this[p]=t.subarray(e))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e)),i&&this.once("finish",i),this[ut]||(this[y]?(t&&this[y].write(t),this[y].end()):(this[dt]=!0,(this.brotli===void 0||this.zstd===void 0)&&(t=t||Buffer.alloc(0)),t&&this.write(t),this[$e]())),this}};var mt=s=>{let t=s.length-1,e=-1;for(;t>-1&&s.charAt(t)==="/";)e=t,t--;return e===-1?s:s.slice(0,e)};var _n=s=>{let t=s.onReadEntry;s.onReadEntry=t?e=>{t(e),e.resume()}:e=>e.resume()},Yi=(s,t)=>{let e=new Map(t.map(n=>[mt(n),!0])),i=s.filter,r=(n,o="")=>{let h=o||gn(n).root||".",a;if(n===h)a=!1;else{let l=e.get(n);l!==void 0?a=l:a=r(bn(n),h)}return e.set(n,a),a};s.filter=i?(n,o)=>i(n,o)&&r(mt(n)):n=>r(mt(n))},On=s=>{let t=new st(s),e=s.file,i;try{i=Vt.openSync(e,"r");let r=Vt.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size<n){let o=Buffer.allocUnsafe(r.size),h=Vt.readSync(i,o,0,r.size,0);t.end(h===o.byteLength?o:o.subarray(0,h))}else{let o=0,h=Buffer.allocUnsafe(n);for(;o<r.size;){let a=Vt.readSync(i,h,0,n,o);if(a===0)break;o+=a,t.write(h.subarray(0,a))}t.end()}}finally{if(typeof i=="number")try{Vt.closeSync(i)}catch{}}},Tn=(s,t)=>{let e=new st(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("end",o),Vt.stat(r,(a,l)=>{if(a)h(a);else{let c=new gt(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},It=K(On,Tn,s=>new st(s),s=>new st(s),(s,t)=>{t?.length&&Yi(s,t),s.noResume||_n(s)});import ci from"fs";import $ from"fs";import Xs from"path";var Ki=(s,t,e)=>(s&=4095,e&&(s=(s|384)&-19),t&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);import{win32 as xn}from"node:path";var{isAbsolute:Ln,parse:Ks}=xn,ce=s=>{let t="",e=Ks(s);for(;Ln(s)||e.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":e.root;s=s.slice(i.length),t+=i,e=Ks(s)}return[t,s]};var Qe=["|","<",">","?",":"],Vi=Qe.map(s=>String.fromCharCode(61440+s.charCodeAt(0))),Nn=new Map(Qe.map((s,t)=>[s,Vi[t]])),Dn=new Map(Vi.map((s,t)=>[s,Qe[t]])),$i=s=>Qe.reduce((t,e)=>t.split(e).join(Nn.get(e)),s),Vs=s=>Vi.reduce((t,e)=>t.split(e).join(Dn.get(e)),s);var tr=(s,t)=>t?(s=f(s).replace(/^\.(\/|$)/,""),mt(t)+"/"+s):f(s),An=16*1024*1024,qs=Symbol("process"),js=Symbol("file"),Qs=Symbol("directory"),qi=Symbol("symlink"),Js=Symbol("hardlink"),fe=Symbol("header"),Je=Symbol("read"),ji=Symbol("lstat"),ti=Symbol("onlstat"),Qi=Symbol("onread"),Ji=Symbol("onreadlink"),ts=Symbol("openfile"),es=Symbol("onopenfile"),pt=Symbol("close"),ei=Symbol("mode"),is=Symbol("awaitDrain"),Xi=Symbol("ondrain"),X=Symbol("prefix"),de=class extends A{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#t=!1;constructor(t,e={}){let i=re(e);super(),this.path=f(t),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||An,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=f(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?f(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,h]=ce(this.path);o&&typeof h=="string"&&(this.path=h,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=Vs(this.path.replace(/\\/g,"/")),t=t.replace(/\\/g,"/")),this.absolute=f(i.absolute||Xs.resolve(this.cwd,t)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[ti](n):this[ji]()}warn(t,e,i={}){return Lt(this,t,e,i)}emit(t,...e){return t==="error"&&(this.#t=!0),super.emit(t,...e)}[ji](){$.lstat(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[ti](e)})}[ti](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=In(t),this.emit("stat",t),this[qs]()}[qs](){switch(this.type){case"File":return this[js]();case"Directory":return this[Qs]();case"SymbolicLink":return this[qi]();default:return this.end()}}[ei](t){return Ki(t,this.type==="Directory",this.portable)}[X](t){return tr(t,this.prefix)}[fe](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new F({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this[ei](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let t=this.header?.block;if(!t)throw new Error("failed to encode header");super.write(t)}[Qs](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[fe](),this.end()}[qi](){$.readlink(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[Ji](e)})}[Ji](t){this.linkpath=f(t),this[fe](),this.end()}[Js](t){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=f(Xs.relative(this.cwd,t)),this.stat.size=0,this[fe](),this.end()}[js](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let t=`${this.stat.dev}:${this.stat.ino}`,e=this.linkCache.get(t);if(e?.indexOf(this.cwd)===0)return this[Js](e);this.linkCache.set(t,this.absolute)}if(this[fe](),this.stat.size===0)return this.end();this[ts]()}[ts](){$.open(this.absolute,"r",(t,e)=>{if(t)return this.emit("error",t);this[es](e)})}[es](t){if(this.fd=t,this.#t)return this[pt]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let e=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(e),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Je]()}[Je](){let{fd:t,buf:e,offset:i,length:r,pos:n}=this;if(t===void 0||e===void 0)throw new Error("cannot read file without first opening");$.read(t,e,i,r,n,(o,h)=>{if(o)return this[pt](()=>this.emit("error",o));this[Qi](h)})}[pt](t=()=>{}){this.fd!==void 0&&$.close(this.fd,t)}[Qi](t){if(t<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(t>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(t===this.remain)for(let r=t;r<this.length&&t<this.blockRemain;r++)this.buf[r+this.offset]=0,t++,this.remain++;let e=this.offset===0&&t===this.buf.length?this.buf:this.buf.subarray(this.offset,this.offset+t);this.write(e)?this[Xi]():this[is](()=>this[Xi]())}[is](t){this.once("drain",t)}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this.blockRemain<t.length){let r=Object.assign(new Error("writing more data than expected"),{path:this.absolute});return this.emit("error",r)}return this.remain-=t.length,this.blockRemain-=t.length,this.pos+=t.length,this.offset+=t.length,super.write(t,null,i)}[Xi](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[pt](t=>t?this.emit("error",t):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Je]()}},ii=class extends de{sync=!0;[ji](){this[ti]($.lstatSync(this.absolute))}[qi](){this[Ji]($.readlinkSync(this.absolute))}[ts](){this[es]($.openSync(this.absolute,"r"))}[Je](){let t=!0;try{let{fd:e,buf:i,offset:r,length:n,pos:o}=this;if(e===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let h=$.readSync(e,i,r,n,o);this[Qi](h),t=!1}finally{if(t)try{this[pt](()=>{})}catch{}}}[is](t){t()}[pt](t=()=>{}){this.fd!==void 0&&$.closeSync(this.fd),t()}},si=class extends A{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(t,e,i={}){return Lt(this,t,e,i)}constructor(t,e={}){let i=re(e);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=t;let{type:r}=t;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=f(t.path),this.mode=t.mode!==void 0?this[ei](t.mode):void 0,this.uid=this.portable?void 0:t.uid,this.gid=this.portable?void 0:t.gid,this.uname=this.portable?void 0:t.uname,this.gname=this.portable?void 0:t.gname,this.size=t.size,this.mtime=this.noMtime?void 0:i.mtime||t.mtime,this.atime=this.portable?void 0:t.atime,this.ctime=this.portable?void 0:t.ctime,this.linkpath=t.linkpath!==void 0?f(t.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[h,a]=ce(this.path);h&&typeof a=="string"&&(this.path=a,n=h)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.onWriteEntry?.(this),this.header=new F({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),t.pipe(this)}[X](t){return tr(t,this.prefix)}[ei](t){return Ki(t,this.type==="Directory",this.portable)}write(t,e,i){typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8"));let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t,i)}end(t,e,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e??"utf8")),i&&this.once("finish",i),t?super.end(t,i):super.end(i),this}},In=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported";var ri=class s{tail;head;length=0;static create(t=[]){return new s(t)}constructor(t=[]){for(let e of t)this.push(e)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let e=t.next,i=t.prev;return e&&(e.prev=i),i&&(i.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=i),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,e}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let e=0,i=t.length;e<i;e++)Fn(this,t[e]);return this.length}unshift(...t){for(var e=0,i=t.length;e<i;e++)kn(this,t[e]);return this.length}pop(){if(!this.tail)return;let t=this.tail.value,e=this.tail;return this.tail=this.tail.prev,this.tail?this.tail.next=void 0:this.head=void 0,e.list=void 0,this.length--,t}shift(){if(!this.head)return;let t=this.head.value,e=this.head;return this.head=this.head.next,this.head?this.head.prev=void 0:this.tail=void 0,e.list=void 0,this.length--,t}forEach(t,e){e=e||this;for(let i=this.head,r=0;i;r++)t.call(e,i.value,r,this),i=i.next}forEachReverse(t,e){e=e||this;for(let i=this.tail,r=this.length-1;i;r--)t.call(e,i.value,r,this),i=i.prev}get(t){let e=0,i=this.head;for(;i&&e<t;e++)i=i.next;if(e===t&&i)return i.value}getReverse(t){let e=0,i=this.tail;for(;i&&e<t;e++)i=i.prev;if(e===t&&i)return i.value}map(t,e){e=e||this;let i=new s;for(let r=this.head;r;)i.push(t.call(e,r.value,this)),r=r.next;return i}mapReverse(t,e){e=e||this;var i=new s;for(let r=this.tail;r;)i.push(t.call(e,r.value,this)),r=r.prev;return i}reduce(t,e){let i,r=this.head;if(arguments.length>1)i=e;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=t(i,r.value,n),r=r.next;return i}reduceReverse(t,e){let i,r=this.tail;if(arguments.length>1)i=e;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=t(i,r.value,n),r=r.prev;return i}toArray(){let t=new Array(this.length);for(let e=0,i=this.head;i;e++)t[e]=i.value,i=i.next;return t}toArrayReverse(){let t=new Array(this.length);for(let e=0,i=this.tail;i;e++)t[e]=i.value,i=i.prev;return t}slice(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s;if(e<t||e<0)return i;t<0&&(t=0),e>this.length&&(e=this.length);let r=this.head,n=0;for(n=0;r&&n<t;n++)r=r.next;for(;r&&n<e;n++,r=r.next)i.push(r.value);return i}sliceReverse(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s;if(e<t||e<0)return i;t<0&&(t=0),e>this.length&&(e=this.length);let r=this.length,n=this.tail;for(;n&&r>e;r--)n=n.prev;for(;n&&r>t;r--,n=n.prev)i.push(n.value);return i}splice(t,e=0,...i){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let r=this.head;for(let o=0;r&&o<t;o++)r=r.next;let n=[];for(let o=0;r&&o<e;o++)n.push(r.value),r=this.removeNode(r);r?r!==this.tail&&(r=r.prev):r=this.tail;for(let o of i)r=Cn(this,r,o);return n}reverse(){let t=this.head,e=this.tail;for(let i=t;i;i=i.prev){let r=i.prev;i.prev=i.next,i.next=r}return this.head=e,this.tail=t,this}};function Cn(s,t,e){let i=t,r=t?t.next:s.head,n=new ue(e,i,r,s);return n.next===void 0&&(s.tail=n),n.prev===void 0&&(s.head=n),s.length++,n}function Fn(s,t){s.tail=new ue(t,s.tail,void 0,s),s.head||(s.head=s.tail),s.length++}function kn(s,t){s.head=new ue(t,void 0,s.head,s),s.tail||(s.tail=s.head),s.length++}var ue=class{list;next;prev;value;constructor(t,e,i,r){this.list=r,this.value=t,e?(e.next=this,this.prev=e):this.prev=void 0,i?(i.prev=this,this.next=i):this.next=void 0}};import rr from"path";var fi=class{path;absolute;entry;stat;readdir;pending=!1;ignore=!1;piped=!1;constructor(t,e){this.path=t||"./",this.absolute=e}},er=Buffer.alloc(1024),ni=Symbol("onStat"),me=Symbol("ended"),W=Symbol("queue"),Ct=Symbol("current"),Ft=Symbol("process"),pe=Symbol("processing"),ss=Symbol("processJob"),G=Symbol("jobs"),rs=Symbol("jobDone"),oi=Symbol("addFSEntry"),ir=Symbol("addTarEntry"),hs=Symbol("stat"),as=Symbol("readdir"),hi=Symbol("onreaddir"),ai=Symbol("pipe"),sr=Symbol("entry"),ns=Symbol("entryOpt"),li=Symbol("writeEntryClass"),nr=Symbol("write"),os=Symbol("ondrain"),Et=class extends A{sync=!1;opt;cwd;maxReadSize;preservePaths;strict;noPax;prefix;linkCache;statCache;file;portable;zip;readdirCache;noDirRecurse;follow;noMtime;mtime;filter;jobs;[li];onWriteEntry;[W];[G]=0;[pe]=!1;[me]=!1;constructor(t={}){if(super(),this.opt=t,this.file=t.file||"",this.cwd=t.cwd||process.cwd(),this.maxReadSize=t.maxReadSize,this.preservePaths=!!t.preservePaths,this.strict=!!t.strict,this.noPax=!!t.noPax,this.prefix=f(t.prefix||""),this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.readdirCache=t.readdirCache||new Map,this.onWriteEntry=t.onWriteEntry,this[li]=de,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),this.portable=!!t.portable,t.gzip||t.brotli||t.zstd){if((t.gzip?1:0)+(t.brotli?1:0)+(t.zstd?1:0)>1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(t.gzip&&(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new Be(t.gzip)),t.brotli&&(typeof t.brotli!="object"&&(t.brotli={}),this.zip=new Ue(t.brotli)),t.zstd&&(typeof t.zstd!="object"&&(t.zstd={}),this.zip=new Ge(t.zstd)),!this.zip)throw new Error("impossible");let e=this.zip;e.on("data",i=>super.write(i)),e.on("end",()=>super.end()),e.on("drain",()=>this[os]()),this.on("resume",()=>e.resume())}else this.on("drain",this[os]);this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,t.mtime&&(this.mtime=t.mtime),this.filter=typeof t.filter=="function"?t.filter:()=>!0,this[W]=new ri,this[G]=0,this.jobs=Number(t.jobs)||4,this[pe]=!1,this[me]=!1}[nr](t){return super.write(t)}add(t){return this.write(t),this}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&this.add(t),this[me]=!0,this[Ft](),i&&i(),this}write(t){if(this[me])throw new Error("write after end");return t instanceof Yt?this[ir](t):this[oi](t),this.flowing}[ir](t){let e=f(rr.resolve(this.cwd,t.path));if(!this.filter(t.path,t))t.resume();else{let i=new fi(t.path,e);i.entry=new si(t,this[ns](i)),i.entry.on("end",()=>this[rs](i)),this[G]+=1,this[W].push(i)}this[Ft]()}[oi](t){let e=f(rr.resolve(this.cwd,t));this[W].push(new fi(t,e)),this[Ft]()}[hs](t){t.pending=!0,this[G]+=1;let e=this.follow?"stat":"lstat";ci[e](t.absolute,(i,r)=>{t.pending=!1,this[G]-=1,i?this.emit("error",i):this[ni](t,r)})}[ni](t,e){this.statCache.set(t.absolute,e),t.stat=e,this.filter(t.path,e)?e.isFile()&&e.nlink>1&&t===this[Ct]&&!this.linkCache.get(`${e.dev}:${e.ino}`)&&!this.sync&&this[ss](t):t.ignore=!0,this[Ft]()}[as](t){t.pending=!0,this[G]+=1,ci.readdir(t.absolute,(e,i)=>{if(t.pending=!1,this[G]-=1,e)return this.emit("error",e);this[hi](t,i)})}[hi](t,e){this.readdirCache.set(t.absolute,e),t.readdir=e,this[Ft]()}[Ft](){if(!this[pe]){this[pe]=!0;for(let t=this[W].head;t&&this[G]<this.jobs;t=t.next)if(this[ss](t.value),t.value.ignore){let e=t.next;this[W].removeNode(t),t.next=e}this[pe]=!1,this[me]&&!this[W].length&&this[G]===0&&(this.zip?this.zip.end(er):(super.write(er),super.end()))}}get[Ct](){return this[W]&&this[W].head&&this[W].head.value}[rs](t){this[W].shift(),this[G]-=1,this[Ft]()}[ss](t){if(!t.pending){if(t.entry){t===this[Ct]&&!t.piped&&this[ai](t);return}if(!t.stat){let e=this.statCache.get(t.absolute);e?this[ni](t,e):this[hs](t)}if(t.stat&&!t.ignore){if(!this.noDirRecurse&&t.stat.isDirectory()&&!t.readdir){let e=this.readdirCache.get(t.absolute);if(e?this[hi](t,e):this[as](t),!t.readdir)return}if(t.entry=this[sr](t),!t.entry){t.ignore=!0;return}t===this[Ct]&&!t.piped&&this[ai](t)}}}[ns](t){return{onwarn:(e,i,r)=>this.warn(e,i,r),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[sr](t){this[G]+=1;try{return new this[li](t.path,this[ns](t)).on("end",()=>this[rs](t)).on("error",i=>this.emit("error",i))}catch(e){this.emit("error",e)}}[os](){this[Ct]&&this[Ct].entry&&this[Ct].entry.resume()}[ai](t){t.piped=!0,t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[oi](o+r)});let e=t.entry,i=this.zip;if(!e)throw new Error("cannot pipe without source");i?e.on("data",r=>{i.write(r)||e.pause()}):e.on("data",r=>{super.write(r)||e.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(t,e,i={}){Lt(this,t,e,i)}},kt=class extends Et{sync=!0;constructor(t){super(t),this[li]=ii}pause(){}resume(){}[hs](t){let e=this.follow?"statSync":"lstatSync";this[ni](t,ci[e](t.absolute))}[as](t){this[hi](t,ci.readdirSync(t.absolute))}[ai](t){let e=t.entry,i=this.zip;if(t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[oi](o+r)}),!e)throw new Error("Cannot pipe without source");i?e.on("data",r=>{i.write(r)}):e.on("data",r=>{super[nr](r)})}};var vn=(s,t)=>{let e=new kt(s),i=new Wt(s.file,{mode:s.mode||438});e.pipe(i),hr(e,t)},Mn=(s,t)=>{let e=new Et(s),i=new tt(s.file,{mode:s.mode||438});e.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),e.on("error",o)});return ar(e,t),r},hr=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?It({file:or.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},ar=async(s,t)=>{for(let e=0;e<t.length;e++){let i=String(t[e]);i.charAt(0)==="@"?await It({file:or.resolve(String(s.cwd),i.slice(1)),noResume:!0,onReadEntry:r=>{s.add(r)}}):s.add(i)}s.end()},Bn=(s,t)=>{let e=new kt(s);return hr(e,t),e},Pn=(s,t)=>{let e=new Et(s);return ar(e,t),e},zn=K(vn,Mn,Bn,Pn,(s,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")});import Lr from"node:fs";import io from"node:assert";import{randomBytes as xr}from"node:crypto";import u from"node:fs";import R from"node:path";import lr from"fs";var Un=process.env.__FAKE_PLATFORM__||process.platform,Hn=Un==="win32",{O_CREAT:Wn,O_TRUNC:Gn,O_WRONLY:Zn}=lr.constants,cr=Number(process.env.__FAKE_FS_O_FILENAME__)||lr.constants.UV_FS_O_FILEMAP||0,Yn=Hn&&!!cr,Kn=512*1024,Vn=cr|Gn|Wn|Zn,ls=Yn?s=>s<Kn?Vn:"w":()=>"w";import ui from"node:fs";import Ee from"node:path";var cs=(s,t,e)=>{try{return ui.lchownSync(s,t,e)}catch(i){if(i?.code!=="ENOENT")throw i}},di=(s,t,e,i)=>{ui.lchown(s,t,e,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},$n=(s,t,e,i,r)=>{if(t.isDirectory())fs(Ee.resolve(s,t.name),e,i,n=>{if(n)return r(n);let o=Ee.resolve(s,t.name);di(o,e,i,r)});else{let n=Ee.resolve(s,t.name);di(n,e,i,r)}},fs=(s,t,e,i)=>{ui.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return di(s,t,e,i);let o=n.length,h=null,a=l=>{if(!h){if(l)return i(h=l);if(--o===0)return di(s,t,e,i)}};for(let l of n)$n(s,l,t,e,a)})},Xn=(s,t,e,i)=>{t.isDirectory()&&ds(Ee.resolve(s,t.name),e,i),cs(Ee.resolve(s,t.name),e,i)},ds=(s,t,e)=>{let i;try{i=ui.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return cs(s,t,e);throw n}for(let r of i)Xn(s,r,t,e);return cs(s,t,e)};import k from"node:fs";import qn from"node:fs/promises";import mi from"node:path";var we=class extends Error{path;code;syscall="chdir";constructor(t,e){super(`${e}: Cannot cd into '${t}'`),this.path=t,this.code=e}get name(){return"CwdError"}};var wt=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(t,e){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=t,this.path=e}get name(){return"SymlinkError"}};var jn=(s,t)=>{k.stat(s,(e,i)=>{(e||!i.isDirectory())&&(e=new we(s,e?.code||"ENOTDIR")),t(e)})},fr=(s,t,e)=>{s=f(s);let i=t.umask??18,r=t.mode|448,n=(r&i)!==0,o=t.uid,h=t.gid,a=typeof o=="number"&&typeof h=="number"&&(o!==t.processUid||h!==t.processGid),l=t.preserve,c=t.unlink,d=f(t.cwd),S=(E,x)=>{E?e(E):x&&a?fs(x,o,h,_s=>S(_s)):n?k.chmod(s,r,e):e()};if(s===d)return jn(s,S);if(l)return qn.mkdir(s,{mode:r,recursive:!0}).then(E=>S(null,E??void 0),S);let N=f(mi.relative(d,s)).split("/");us(d,N,r,c,d,void 0,S)},us=(s,t,e,i,r,n,o)=>{if(!t.length)return o(null,n);let h=t.shift(),a=f(mi.resolve(s+"/"+h));k.mkdir(a,e,dr(a,t,e,i,r,n,o))},dr=(s,t,e,i,r,n,o)=>h=>{h?k.lstat(s,(a,l)=>{if(a)a.path=a.path&&f(a.path),o(a);else if(l.isDirectory())us(s,t,e,i,r,n,o);else if(i)k.unlink(s,c=>{if(c)return o(c);k.mkdir(s,e,dr(s,t,e,i,r,n,o))});else{if(l.isSymbolicLink())return o(new wt(s,s+"/"+t.join("/")));o(h)}}):(n=n||s,us(s,t,e,i,r,n,o))},Qn=s=>{let t=!1,e;try{t=k.statSync(s).isDirectory()}catch(i){e=i?.code}finally{if(!t)throw new we(s,e??"ENOTDIR")}},ur=(s,t)=>{s=f(s);let e=t.umask??18,i=t.mode|448,r=(i&e)!==0,n=t.uid,o=t.gid,h=typeof n=="number"&&typeof o=="number"&&(n!==t.processUid||o!==t.processGid),a=t.preserve,l=t.unlink,c=f(t.cwd),d=E=>{E&&h&&ds(E,n,o),r&&k.chmodSync(s,i)};if(s===c)return Qn(c),d();if(a)return d(k.mkdirSync(s,{mode:i,recursive:!0})??void 0);let T=f(mi.relative(c,s)).split("/"),N;for(let E=T.shift(),x=c;E&&(x+="/"+E);E=T.shift()){x=f(mi.resolve(x));try{k.mkdirSync(x,i),N=N||x}catch{let Os=k.lstatSync(x);if(Os.isDirectory())continue;if(l){k.unlinkSync(x),k.mkdirSync(x,i),N=N||x;continue}else if(Os.isSymbolicLink())return new wt(x,x+"/"+T.join("/"))}}return d(N)};import{join as Er}from"node:path";var ms=Object.create(null),mr=1e4,$t=new Set,pr=s=>{$t.has(s)?$t.delete(s):ms[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),$t.add(s);let t=ms[s],e=$t.size-mr;if(e>mr/10){for(let i of $t)if($t.delete(i),delete ms[i],--e<=0)break}return t};var Jn=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,to=Jn==="win32",eo=s=>s.split("/").slice(0,-1).reduce((e,i)=>{let r=e[e.length-1];return r!==void 0&&(i=Er(r,i)),e.push(i||"/"),e},[]),pi=class{#t=new Map;#i=new Map;#s=new Set;reserve(t,e){t=to?["win32 parallelization disabled"]:t.map(r=>mt(Er(pr(r))));let i=new Set(t.map(r=>eo(r)).reduce((r,n)=>r.concat(n)));this.#i.set(e,{dirs:i,paths:t});for(let r of t){let n=this.#t.get(r);n?n.push(e):this.#t.set(r,[e])}for(let r of i){let n=this.#t.get(r);if(!n)this.#t.set(r,[new Set([e])]);else{let o=n[n.length-1];o instanceof Set?o.add(e):n.push(new Set([e]))}}return this.#r(e)}#n(t){let e=this.#i.get(t);if(!e)throw new Error("function does not have any path reservations");return{paths:e.paths.map(i=>this.#t.get(i)),dirs:[...e.dirs].map(i=>this.#t.get(i))}}check(t){let{paths:e,dirs:i}=this.#n(t);return e.every(r=>r&&r[0]===t)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(t))}#r(t){return this.#s.has(t)||!this.check(t)?!1:(this.#s.add(t),t(()=>this.#e(t)),!0)}#e(t){if(!this.#s.has(t))return!1;let e=this.#i.get(t);if(!e)throw new Error("invalid reservation");let{paths:i,dirs:r}=e,n=new Set;for(let o of i){let h=this.#t.get(o);if(!h||h?.[0]!==t)continue;let a=h[1];if(!a){this.#t.delete(o);continue}if(h.shift(),typeof a=="function")n.add(a);else for(let l of a)n.add(l)}for(let o of r){let h=this.#t.get(o),a=h?.[0];if(!(!h||!(a instanceof Set)))if(a.size===1&&h.length===1){this.#t.delete(o);continue}else if(a.size===1){h.shift();let l=h[0];typeof l=="function"&&n.add(l)}else a.delete(t)}return this.#s.delete(t),n.forEach(o=>this.#r(o)),!0}};var wr=()=>process.umask();var Sr=Symbol("onEntry"),Ss=Symbol("checkFs"),yr=Symbol("checkFs2"),ys=Symbol("isReusable"),P=Symbol("makeFs"),Rs=Symbol("file"),bs=Symbol("directory"),wi=Symbol("link"),Rr=Symbol("symlink"),br=Symbol("hardlink"),ye=Symbol("ensureNoSymlink"),gr=Symbol("unsupported"),_r=Symbol("checkPath"),ps=Symbol("stripAbsolutePath"),St=Symbol("mkdir"),O=Symbol("onError"),Ei=Symbol("pending"),Or=Symbol("pend"),Xt=Symbol("unpend"),Es=Symbol("ended"),ws=Symbol("maybeClose"),gs=Symbol("skip"),Re=Symbol("doChown"),be=Symbol("uid"),ge=Symbol("gid"),_e=Symbol("checkedCwd"),so=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Oe=so==="win32",ro=1024,no=(s,t)=>{if(!Oe)return u.unlink(s,t);let e=s+".DELETE."+xr(16).toString("hex");u.rename(s,e,i=>{if(i)return t(i);u.unlink(e,t)})},oo=s=>{if(!Oe)return u.unlinkSync(s);let t=s+".DELETE."+xr(16).toString("hex");u.renameSync(s,t),u.unlinkSync(t)},Tr=(s,t,e)=>s!==void 0&&s===s>>>0?s:t!==void 0&&t===t>>>0?t:e,qt=class extends st{[Es]=!1;[_e]=!1;[Ei]=0;reservations=new pi;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(t={}){if(t.ondone=()=>{this[Es]=!0,this[ws]()},super(t),this.transform=t.transform,this.chmod=!!t.chmod,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;t.preserveOwner===void 0&&typeof t.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:ro,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||Oe,this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=f(R.resolve(t.cwd||process.cwd())),this.strip=Number(t.strip)||0,this.processUmask=this.chmod?typeof t.processUmask=="number"?t.processUmask:wr():0,this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",e=>this[Sr](e))}warn(t,e,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,e,i)}[ws](){this[Es]&&this[Ei]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[ps](t,e){let i=t[e],{type:r}=t;if(!i||this.preservePaths)return!0;let n=i.split("/");if(n.includes("..")||Oe&&/^[a-z]:\.\.$/i.test(n[0]??"")){if(e==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${e} contains '..'`,{entry:t,[e]:i}),!1;{let a=R.posix.dirname(t.path),l=R.posix.normalize(R.posix.join(a,i));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${e} escapes extraction directory`,{entry:t,[e]:i}),!1}}let[o,h]=ce(i);return o&&(t[e]=String(h),this.warn("TAR_ENTRY_INFO",`stripping ${o} from absolute ${e}`,{entry:t,[e]:i})),!0}[_r](t){let e=f(t.path),i=e.split("/");if(this.strip){if(i.length<this.strip)return!1;if(t.type==="Link"){let r=f(String(t.linkpath)).split("/");if(r.length>=this.strip)t.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),t.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:t,path:e,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[ps](t,"path")||!this[ps](t,"linkpath"))return!1;if(R.isAbsolute(t.path)?t.absolute=f(R.resolve(t.path)):t.absolute=f(R.resolve(this.cwd,t.path)),!this.preservePaths&&typeof t.absolute=="string"&&t.absolute.indexOf(this.cwd+"/")!==0&&t.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:t,path:f(t.path),resolvedPath:t.absolute,cwd:this.cwd}),!1;if(t.absolute===this.cwd&&t.type!=="Directory"&&t.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=R.win32.parse(String(t.absolute));t.absolute=r+$i(String(t.absolute).slice(r.length));let{root:n}=R.win32.parse(t.path);t.path=n+$i(t.path.slice(n.length))}return!0}[Sr](t){if(!this[_r](t))return t.resume();switch(io.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Ss](t);default:return this[gr](t)}}[O](t,e){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:e}),this[Xt](),e.resume())}[St](t,e,i){fr(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e},i)}[Re](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[be](t){return Tr(this.uid,t.uid,this.processUid)}[ge](t){return Tr(this.gid,t.gid,this.processGid)}[Rs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=new tt(String(t.absolute),{flags:ls(t.size),mode:i,autoClose:!1});r.on("error",a=>{r.fd&&u.close(r.fd,()=>{}),r.write=()=>!0,this[O](a,t),e()});let n=1,o=a=>{if(a){r.fd&&u.close(r.fd,()=>{}),this[O](a,t),e();return}--n===0&&r.fd!==void 0&&u.close(r.fd,l=>{l?this[O](l,t):this[Xt](),e()})};r.on("finish",()=>{let a=String(t.absolute),l=r.fd;if(typeof l=="number"&&t.mtime&&!this.noMtime){n++;let c=t.atime||new Date,d=t.mtime;u.futimes(l,c,d,S=>S?u.utimes(a,c,d,T=>o(T&&S)):o())}if(typeof l=="number"&&this[Re](t)){n++;let c=this[be](t),d=this[ge](t);typeof c=="number"&&typeof d=="number"&&u.fchown(l,c,d,S=>S?u.chown(a,c,d,T=>o(T&&S)):o())}o()});let h=this.transform&&this.transform(t)||t;h!==t&&(h.on("error",a=>{this[O](a,t),e()}),t.pipe(h)),h.pipe(r)}[bs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode;this[St](String(t.absolute),i,r=>{if(r){this[O](r,t),e();return}let n=1,o=()=>{--n===0&&(e(),this[Xt](),t.resume())};t.mtime&&!this.noMtime&&(n++,u.utimes(String(t.absolute),t.atime||new Date,t.mtime,o)),this[Re](t)&&(n++,u.chown(String(t.absolute),Number(this[be](t)),Number(this[ge](t)),o)),o()})}[gr](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Rr](t,e){let i=f(R.relative(this.cwd,R.resolve(R.dirname(String(t.absolute)),String(t.linkpath)))).split("/");this[ye](t,this.cwd,i,()=>this[wi](t,String(t.linkpath),"symlink",e),r=>{this[O](r,t),e()})}[br](t,e){let i=f(R.resolve(this.cwd,String(t.linkpath))),r=f(String(t.linkpath)).split("/");this[ye](t,this.cwd,r,()=>this[wi](t,i,"link",e),n=>{this[O](n,t),e()})}[ye](t,e,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let h=R.resolve(e,o);u.lstat(h,(a,l)=>{if(a)return r();if(l?.isSymbolicLink())return n(new wt(h,R.resolve(h,i.join("/"))));this[ye](t,h,i,r,n)})}[Or](){this[Ei]++}[Xt](){this[Ei]--,this[ws]()}[gs](t){this[Xt](),t.resume()}[ys](t,e){return t.type==="File"&&!this.unlink&&e.isFile()&&e.nlink<=1&&!Oe}[Ss](t){this[Or]();let e=[t.path];t.linkpath&&e.push(t.linkpath),this.reservations.reserve(e,i=>this[yr](t,i))}[yr](t,e){let i=h=>{e(h)},r=()=>{this[St](this.cwd,this.dmode,h=>{if(h){this[O](h,t),i();return}this[_e]=!0,n()})},n=()=>{if(t.absolute!==this.cwd){let h=f(R.dirname(String(t.absolute)));if(h!==this.cwd)return this[St](h,this.dmode,a=>{if(a){this[O](a,t),i();return}o()})}o()},o=()=>{u.lstat(String(t.absolute),(h,a)=>{if(a&&(this.keep||this.newer&&a.mtime>(t.mtime??a.mtime))){this[gs](t),i();return}if(h||this[ys](t,a))return this[P](null,t,i);if(a.isDirectory()){if(t.type==="Directory"){let l=this.chmod&&t.mode&&(a.mode&4095)!==t.mode,c=d=>this[P](d??null,t,i);return l?u.chmod(String(t.absolute),Number(t.mode),c):c()}if(t.absolute!==this.cwd)return u.rmdir(String(t.absolute),l=>this[P](l??null,t,i))}if(t.absolute===this.cwd)return this[P](null,t,i);no(String(t.absolute),l=>this[P](l??null,t,i))})};this[_e]?n():r()}[P](t,e,i){if(t){this[O](t,e),i();return}switch(e.type){case"File":case"OldFile":case"ContiguousFile":return this[Rs](e,i);case"Link":return this[br](e,i);case"SymbolicLink":return this[Rr](e,i);case"Directory":case"GNUDumpDir":return this[bs](e,i)}}[wi](t,e,i,r){u[i](e,String(t.absolute),n=>{n?this[O](n,t):(this[Xt](),t.resume()),r()})}},Se=s=>{try{return[null,s()]}catch(t){return[t,null]}},Te=class extends qt{sync=!0;[P](t,e){return super[P](t,e,()=>{})}[Ss](t){if(!this[_e]){let n=this[St](this.cwd,this.dmode);if(n)return this[O](n,t);this[_e]=!0}if(t.absolute!==this.cwd){let n=f(R.dirname(String(t.absolute)));if(n!==this.cwd){let o=this[St](n,this.dmode);if(o)return this[O](o,t)}}let[e,i]=Se(()=>u.lstatSync(String(t.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(t.mtime??i.mtime)))return this[gs](t);if(e||this[ys](t,i))return this[P](null,t);if(i.isDirectory()){if(t.type==="Directory"){let o=this.chmod&&t.mode&&(i.mode&4095)!==t.mode,[h]=o?Se(()=>{u.chmodSync(String(t.absolute),Number(t.mode))}):[];return this[P](h,t)}let[n]=Se(()=>u.rmdirSync(String(t.absolute)));this[P](n,t)}let[r]=t.absolute===this.cwd?[]:Se(()=>oo(String(t.absolute)));this[P](r,t)}[Rs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=h=>{let a;try{u.closeSync(n)}catch(l){a=l}(h||a)&&this[O](h||a,t),e()},n;try{n=u.openSync(String(t.absolute),ls(t.size),i)}catch(h){return r(h)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",h=>this[O](h,t)),t.pipe(o)),o.on("data",h=>{try{u.writeSync(n,h,0,h.length)}catch(a){r(a)}}),o.on("end",()=>{let h=null;if(t.mtime&&!this.noMtime){let a=t.atime||new Date,l=t.mtime;try{u.futimesSync(n,a,l)}catch(c){try{u.utimesSync(String(t.absolute),a,l)}catch{h=c}}}if(this[Re](t)){let a=this[be](t),l=this[ge](t);try{u.fchownSync(n,Number(a),Number(l))}catch(c){try{u.chownSync(String(t.absolute),Number(a),Number(l))}catch{h=h||c}}}r(h)})}[bs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode,r=this[St](String(t.absolute),i);if(r){this[O](r,t),e();return}if(t.mtime&&!this.noMtime)try{u.utimesSync(String(t.absolute),t.atime||new Date,t.mtime)}catch{}if(this[Re](t))try{u.chownSync(String(t.absolute),Number(this[be](t)),Number(this[ge](t)))}catch{}e(),t.resume()}[St](t,e){try{return ur(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e})}catch(i){return i}}[ye](t,e,i,r,n){if(this.preservePaths||!i.length)return r();let o=e;for(let h of i){o=R.resolve(o,h);let[a,l]=Se(()=>u.lstatSync(o));if(a)return r();if(l.isSymbolicLink())return n(new wt(o,R.resolve(e,i.join("/"))))}r()}[wi](t,e,i,r){let n=`${i}Sync`;try{u[n](e,String(t.absolute)),r(),t.resume()}catch(o){return this[O](o,t)}}};var ho=s=>{let t=new Te(s),e=s.file,i=Lr.statSync(e),r=s.maxReadSize||16*1024*1024;new ve(e,{readSize:r,size:i.size}).pipe(t)},ao=(s,t)=>{let e=new qt(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("close",o),Lr.stat(r,(a,l)=>{if(a)h(a);else{let c=new gt(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},lo=K(ho,ao,s=>new Te(s),s=>new qt(s),(s,t)=>{t?.length&&Yi(s,t)});import v from"node:fs";import Nr from"node:path";var co=(s,t)=>{let e=new kt(s),i=!0,r,n;try{try{r=v.openSync(s.file,"r+")}catch(a){if(a?.code==="ENOENT")r=v.openSync(s.file,"w+");else throw a}let o=v.fstatSync(r),h=Buffer.alloc(512);t:for(n=0;n<o.size;n+=512){for(let c=0,d=0;c<512;c+=d){if(d=v.readSync(r,h,c,h.length-c,n+c),n===0&&h[0]===31&&h[1]===139)throw new Error("cannot append to compressed archives");if(!d)break t}let a=new F(h);if(!a.cksumValid)break;let l=512*Math.ceil((a.size||0)/512);if(n+l+512>o.size)break;n+=l,s.mtimeCache&&a.mtime&&s.mtimeCache.set(String(a.path),a.mtime)}i=!1,fo(s,e,n,r,t)}finally{if(i)try{v.closeSync(r)}catch{}}},fo=(s,t,e,i,r)=>{let n=new Wt(s.file,{fd:i,start:e});t.pipe(n),mo(t,r)},uo=(s,t)=>{t=Array.from(t);let e=new Et(s),i=(n,o,h)=>{let a=(T,N)=>{T?v.close(n,E=>h(T)):h(null,N)},l=0;if(o===0)return a(null,0);let c=0,d=Buffer.alloc(512),S=(T,N)=>{if(T||typeof N>"u")return a(T);if(c+=N,c<512&&N)return v.read(n,d,c,d.length-c,l+c,S);if(l===0&&d[0]===31&&d[1]===139)return a(new Error("cannot append to compressed archives"));if(c<512)return a(null,l);let E=new F(d);if(!E.cksumValid)return a(null,l);let x=512*Math.ceil((E.size??0)/512);if(l+x+512>o||(l+=x+512,l>=o))return a(null,l);s.mtimeCache&&E.mtime&&s.mtimeCache.set(String(E.path),E.mtime),c=0,v.read(n,d,0,512,l,S)};v.read(n,d,0,512,l,S)};return new Promise((n,o)=>{e.on("error",o);let h="r+",a=(l,c)=>{if(l&&l.code==="ENOENT"&&h==="r+")return h="w+",v.open(s.file,h,a);if(l||!c)return o(l);v.fstat(c,(d,S)=>{if(d)return v.close(c,()=>o(d));i(c,S.size,(T,N)=>{if(T)return o(T);let E=new tt(s.file,{fd:c,start:N});e.pipe(E),E.on("error",o),E.on("close",n),po(e,t)})})};v.open(s.file,h,a)})},mo=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?It({file:Nr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},po=async(s,t)=>{for(let e=0;e<t.length;e++){let i=String(t[e]);i.charAt(0)==="@"?await It({file:Nr.resolve(String(s.cwd),i.slice(1)),noResume:!0,onReadEntry:r=>s.add(r)}):s.add(i)}s.end()},vt=K(co,uo,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,t)=>{if(!ks(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")});var Eo=K(vt.syncFile,vt.asyncFile,vt.syncNoFile,vt.asyncNoFile,(s,t=[])=>{vt.validate?.(s,t),wo(s)}),wo=s=>{let t=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=t?(e,i)=>t(e,i)&&!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0)):(e,i)=>!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0))};export{F as Header,Et as Pack,fi as PackJob,kt as PackSync,st as Parser,ct as Pax,Yt as ReadEntry,qt as Unpack,Te as UnpackSync,de as WriteEntry,ii as WriteEntrySync,si as WriteEntryTar,zn as c,zn as create,lo as extract,Yi as filesFilter,It as list,vt as r,vt as replace,It as t,Mi as types,Eo as u,Eo as update,lo as x};
+`).reduce(pn,Object.create(null)),pn=(s,t)=>{let e=parseInt(t,10);if(e!==Buffer.byteLength(t)+1)return s;t=t.slice((e+" ").length);let i=t.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s};var En=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,f=En!=="win32"?s=>s:s=>s&&s.replace(/\\/g,"/");var Yt=class extends A{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(t,e,i){switch(super({}),this.pause(),this.extended=e,this.globalExtended=i,this.header=t,this.remain=t.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=t.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!t.path)throw new Error("no path provided for tar.ReadEntry");this.path=f(t.path),this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=this.remain,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath?f(t.linkpath):void 0,this.uname=t.uname,this.gname=t.gname,e&&this.#t(e),i&&this.#t(i,!0)}write(t){let e=t.length;if(e>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-e),this.blockRemain=Math.max(0,r-e),this.ignore?!0:i>=e?super.write(t):super.write(t.subarray(0,i))}#t(t,e=!1){t.path&&(t.path=f(t.path)),t.linkpath&&(t.linkpath=f(t.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="path"&&e))))}};var Lt=(s,t,e,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=e instanceof Error&&e.code||t,i.tarCode=t,!s.strict&&i.recoverable!==!1?(e instanceof Error&&(i=Object.assign(e,i),e=e.message),s.emit("warn",t,e,i)):e instanceof Error?s.emit("error",Object.assign(e,i)):s.emit("error",Object.assign(new Error(`${t}: ${e}`),i))};var Sn=1024*1024,Gi=Buffer.from([31,139]),Zi=Buffer.from([40,181,47,253]),yn=Math.max(Gi.length,Zi.length),B=Symbol("state"),Nt=Symbol("writeEntry"),et=Symbol("readEntry"),zi=Symbol("nextEntry"),Hs=Symbol("processEntry"),V=Symbol("extendedHeader"),ae=Symbol("globalExtendedHeader"),ft=Symbol("meta"),Ws=Symbol("emitMeta"),p=Symbol("buffer"),it=Symbol("queue"),dt=Symbol("ended"),Ui=Symbol("emittedEnd"),Dt=Symbol("emit"),y=Symbol("unzip"),Ke=Symbol("consumeChunk"),Ve=Symbol("consumeChunkSub"),Hi=Symbol("consumeBody"),Gs=Symbol("consumeMeta"),Zs=Symbol("consumeHeader"),le=Symbol("consuming"),Wi=Symbol("bufferConcat"),$e=Symbol("maybeEnd"),Kt=Symbol("writing"),ut=Symbol("aborted"),Xe=Symbol("onDone"),At=Symbol("sawValidEntry"),qe=Symbol("sawNullBlock"),je=Symbol("sawEOF"),Ys=Symbol("closeStream"),Rn=()=>!0,st=class extends wn{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[it]=[];[p];[et];[Nt];[B]="begin";[ft]="";[V];[ae];[dt]=!1;[y];[ut]=!1;[At];[qe]=!1;[je]=!1;[Kt]=!1;[le]=!1;[Ui]=!1;constructor(t={}){super(),this.file=t.file||"",this.on(Xe,()=>{(this[B]==="begin"||this[At]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(Xe,t.ondone):this.on(Xe,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||Sn,this.filter=typeof t.filter=="function"?t.filter:Rn;let e=t.file&&(t.file.endsWith(".tar.br")||t.file.endsWith(".tbr"));this.brotli=!(t.gzip||t.zstd)&&t.brotli!==void 0?t.brotli:e?void 0:!1;let i=t.file&&(t.file.endsWith(".tar.zst")||t.file.endsWith(".tzst"));this.zstd=!(t.gzip||t.brotli)&&t.zstd!==void 0?t.zstd:i?!0:void 0,this.on("end",()=>this[Ys]()),typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onReadEntry=="function"&&this.on("entry",t.onReadEntry)}warn(t,e,i={}){Lt(this,t,e,i)}[Zs](t,e){this[At]===void 0&&(this[At]=!1);let i;try{i=new F(t,e,this[V],this[ae])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[qe]?(this[je]=!0,this[B]==="begin"&&(this[B]="header"),this[Dt]("eof")):(this[qe]=!0,this[Dt]("nullBlock"));else if(this[qe]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Nt]=new Yt(i,this[V],this[ae]);if(!this[At])if(n.remain){let o=()=>{n.invalid||(this[At]=!0)};n.on("end",o)}else this[At]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[Dt]("ignoredEntry",n),this[B]="ignore",n.resume()):n.size>0&&(this[ft]="",n.on("data",o=>this[ft]+=o),this[B]="meta"):(this[V]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[Dt]("ignoredEntry",n),this[B]=n.remain?"ignore":"header",n.resume()):(n.remain?this[B]="body":(this[B]="header",n.end()),this[et]?this[it].push(n):(this[it].push(n),this[zi]())))}}}[Ys](){queueMicrotask(()=>this.emit("close"))}[Hs](t){let e=!0;if(!t)this[et]=void 0,e=!1;else if(Array.isArray(t)){let[i,...r]=t;this.emit(i,...r)}else this[et]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",()=>this[zi]()),e=!1);return e}[zi](){do;while(this[Hs](this[it].shift()));if(!this[it].length){let t=this[et];!t||t.flowing||t.size===t.remain?this[Kt]||this.emit("drain"):t.once("drain",()=>this.emit("drain"))}}[Hi](t,e){let i=this[Nt];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=t.length&&e===0?t:t.subarray(e,e+r);return i.write(n),i.blockRemain||(this[B]="header",this[Nt]=void 0,i.end()),n.length}[Gs](t,e){let i=this[Nt],r=this[Hi](t,e);return!this[Nt]&&i&&this[Ws](i),r}[Dt](t,e,i){!this[it].length&&!this[et]?this.emit(t,e,i):this[it].push([t,e,i])}[Ws](t){switch(this[Dt]("meta",this[ft]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[V]=ct.parse(this[ft],this[V],!1);break;case"GlobalExtendedHeader":this[ae]=ct.parse(this[ft],this[ae],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let e=this[V]??Object.create(null);this[V]=e,e.path=this[ft].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let e=this[V]||Object.create(null);this[V]=e,e.linkpath=this[ft].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+t.type)}}abort(t){this[ut]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this[ut])return i?.(),!1;if((this[y]===void 0||this.brotli===void 0&&this[y]===!1)&&t){if(this[p]&&(t=Buffer.concat([this[p],t]),this[p]=void 0),t.length<yn)return this[p]=t,i?.(),!0;for(let a=0;this[y]===void 0&&a<Gi.length;a++)t[a]!==Gi[a]&&(this[y]=!1);let o=!1;if(this[y]===!1&&this.zstd!==!1){o=!0;for(let a=0;a<Zi.length;a++)if(t[a]!==Zi[a]){o=!1;break}}let h=this.brotli===void 0&&!o;if(this[y]===!1&&h)if(t.length<512)if(this[dt])this.brotli=!0;else return this[p]=t,i?.(),!0;else try{new F(t.subarray(0,512)),this.brotli=!1}catch{this.brotli=!0}if(this[y]===void 0||this[y]===!1&&(this.brotli||o)){let a=this[dt];this[dt]=!1,this[y]=this[y]===void 0?new Pe({}):o?new Ze({}):new He({}),this[y].on("data",c=>this[Ke](c)),this[y].on("error",c=>this.abort(c)),this[y].on("end",()=>{this[dt]=!0,this[Ke]()}),this[Kt]=!0;let l=!!this[y][a?"end":"write"](t);return this[Kt]=!1,i?.(),l}}this[Kt]=!0,this[y]?this[y].write(t):this[Ke](t),this[Kt]=!1;let n=this[it].length?!1:this[et]?this[et].flowing:!0;return!n&&!this[it].length&&this[et]?.once("drain",()=>this.emit("drain")),i?.(),n}[Wi](t){t&&!this[ut]&&(this[p]=this[p]?Buffer.concat([this[p],t]):t)}[$e](){if(this[dt]&&!this[Ui]&&!this[ut]&&!this[le]){this[Ui]=!0;let t=this[Nt];if(t&&t.blockRemain){let e=this[p]?this[p].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${e} available)`,{entry:t}),this[p]&&t.write(this[p]),t.end()}this[Dt](Xe)}}[Ke](t){if(this[le]&&t)this[Wi](t);else if(!t&&!this[p])this[$e]();else if(t){if(this[le]=!0,this[p]){this[Wi](t);let e=this[p];this[p]=void 0,this[Ve](e)}else this[Ve](t);for(;this[p]&&this[p]?.length>=512&&!this[ut]&&!this[je];){let e=this[p];this[p]=void 0,this[Ve](e)}this[le]=!1}(!this[p]||this[dt])&&this[$e]()}[Ve](t){let e=0,i=t.length;for(;e+512<=i&&!this[ut]&&!this[je];)switch(this[B]){case"begin":case"header":this[Zs](t,e),e+=512;break;case"ignore":case"body":e+=this[Hi](t,e);break;case"meta":e+=this[Gs](t,e);break;default:throw new Error("invalid state: "+this[B])}e<i&&(this[p]?this[p]=Buffer.concat([t.subarray(e),this[p]]):this[p]=t.subarray(e))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e)),i&&this.once("finish",i),this[ut]||(this[y]?(t&&this[y].write(t),this[y].end()):(this[dt]=!0,(this.brotli===void 0||this.zstd===void 0)&&(t=t||Buffer.alloc(0)),t&&this.write(t),this[$e]())),this}};var mt=s=>{let t=s.length-1,e=-1;for(;t>-1&&s.charAt(t)==="/";)e=t,t--;return e===-1?s:s.slice(0,e)};var _n=s=>{let t=s.onReadEntry;s.onReadEntry=t?e=>{t(e),e.resume()}:e=>e.resume()},Yi=(s,t)=>{let e=new Map(t.map(n=>[mt(n),!0])),i=s.filter,r=(n,o="")=>{let h=o||gn(n).root||".",a;if(n===h)a=!1;else{let l=e.get(n);l!==void 0?a=l:a=r(bn(n),h)}return e.set(n,a),a};s.filter=i?(n,o)=>i(n,o)&&r(mt(n)):n=>r(mt(n))},On=s=>{let t=new st(s),e=s.file,i;try{i=Vt.openSync(e,"r");let r=Vt.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size<n){let o=Buffer.allocUnsafe(r.size),h=Vt.readSync(i,o,0,r.size,0);t.end(h===o.byteLength?o:o.subarray(0,h))}else{let o=0,h=Buffer.allocUnsafe(n);for(;o<r.size;){let a=Vt.readSync(i,h,0,n,o);if(a===0)break;o+=a,t.write(h.subarray(0,a))}t.end()}}finally{if(typeof i=="number")try{Vt.closeSync(i)}catch{}}},Tn=(s,t)=>{let e=new st(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("end",o),Vt.stat(r,(a,l)=>{if(a)h(a);else{let c=new gt(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},It=K(On,Tn,s=>new st(s),s=>new st(s),(s,t)=>{t?.length&&Yi(s,t),s.noResume||_n(s)});import ci from"fs";import $ from"fs";import Xs from"path";var Ki=(s,t,e)=>(s&=4095,e&&(s=(s|384)&-19),t&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);import{win32 as xn}from"node:path";var{isAbsolute:Ln,parse:Ks}=xn,ce=s=>{let t="",e=Ks(s);for(;Ln(s)||e.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":e.root;s=s.slice(i.length),t+=i,e=Ks(s)}return[t,s]};var Qe=["|","<",">","?",":"],Vi=Qe.map(s=>String.fromCharCode(61440+s.charCodeAt(0))),Nn=new Map(Qe.map((s,t)=>[s,Vi[t]])),Dn=new Map(Vi.map((s,t)=>[s,Qe[t]])),$i=s=>Qe.reduce((t,e)=>t.split(e).join(Nn.get(e)),s),Vs=s=>Vi.reduce((t,e)=>t.split(e).join(Dn.get(e)),s);var tr=(s,t)=>t?(s=f(s).replace(/^\.(\/|$)/,""),mt(t)+"/"+s):f(s),An=16*1024*1024,qs=Symbol("process"),js=Symbol("file"),Qs=Symbol("directory"),qi=Symbol("symlink"),Js=Symbol("hardlink"),fe=Symbol("header"),Je=Symbol("read"),ji=Symbol("lstat"),ti=Symbol("onlstat"),Qi=Symbol("onread"),Ji=Symbol("onreadlink"),ts=Symbol("openfile"),es=Symbol("onopenfile"),pt=Symbol("close"),ei=Symbol("mode"),is=Symbol("awaitDrain"),Xi=Symbol("ondrain"),X=Symbol("prefix"),de=class extends A{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#t=!1;constructor(t,e={}){let i=re(e);super(),this.path=f(t),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||An,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=f(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?f(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,h]=ce(this.path);o&&typeof h=="string"&&(this.path=h,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=Vs(this.path.replace(/\\/g,"/")),t=t.replace(/\\/g,"/")),this.absolute=f(i.absolute||Xs.resolve(this.cwd,t)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[ti](n):this[ji]()}warn(t,e,i={}){return Lt(this,t,e,i)}emit(t,...e){return t==="error"&&(this.#t=!0),super.emit(t,...e)}[ji](){$.lstat(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[ti](e)})}[ti](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=In(t),this.emit("stat",t),this[qs]()}[qs](){switch(this.type){case"File":return this[js]();case"Directory":return this[Qs]();case"SymbolicLink":return this[qi]();default:return this.end()}}[ei](t){return Ki(t,this.type==="Directory",this.portable)}[X](t){return tr(t,this.prefix)}[fe](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new F({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this[ei](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let t=this.header?.block;if(!t)throw new Error("failed to encode header");super.write(t)}[Qs](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[fe](),this.end()}[qi](){$.readlink(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[Ji](e)})}[Ji](t){this.linkpath=f(t),this[fe](),this.end()}[Js](t){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=f(Xs.relative(this.cwd,t)),this.stat.size=0,this[fe](),this.end()}[js](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let t=`${this.stat.dev}:${this.stat.ino}`,e=this.linkCache.get(t);if(e?.indexOf(this.cwd)===0)return this[Js](e);this.linkCache.set(t,this.absolute)}if(this[fe](),this.stat.size===0)return this.end();this[ts]()}[ts](){$.open(this.absolute,"r",(t,e)=>{if(t)return this.emit("error",t);this[es](e)})}[es](t){if(this.fd=t,this.#t)return this[pt]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let e=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(e),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Je]()}[Je](){let{fd:t,buf:e,offset:i,length:r,pos:n}=this;if(t===void 0||e===void 0)throw new Error("cannot read file without first opening");$.read(t,e,i,r,n,(o,h)=>{if(o)return this[pt](()=>this.emit("error",o));this[Qi](h)})}[pt](t=()=>{}){this.fd!==void 0&&$.close(this.fd,t)}[Qi](t){if(t<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(t>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(t===this.remain)for(let r=t;r<this.length&&t<this.blockRemain;r++)this.buf[r+this.offset]=0,t++,this.remain++;let e=this.offset===0&&t===this.buf.length?this.buf:this.buf.subarray(this.offset,this.offset+t);this.write(e)?this[Xi]():this[is](()=>this[Xi]())}[is](t){this.once("drain",t)}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this.blockRemain<t.length){let r=Object.assign(new Error("writing more data than expected"),{path:this.absolute});return this.emit("error",r)}return this.remain-=t.length,this.blockRemain-=t.length,this.pos+=t.length,this.offset+=t.length,super.write(t,null,i)}[Xi](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[pt](t=>t?this.emit("error",t):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Je]()}},ii=class extends de{sync=!0;[ji](){this[ti]($.lstatSync(this.absolute))}[qi](){this[Ji]($.readlinkSync(this.absolute))}[ts](){this[es]($.openSync(this.absolute,"r"))}[Je](){let t=!0;try{let{fd:e,buf:i,offset:r,length:n,pos:o}=this;if(e===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let h=$.readSync(e,i,r,n,o);this[Qi](h),t=!1}finally{if(t)try{this[pt](()=>{})}catch{}}}[is](t){t()}[pt](t=()=>{}){this.fd!==void 0&&$.closeSync(this.fd),t()}},si=class extends A{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(t,e,i={}){return Lt(this,t,e,i)}constructor(t,e={}){let i=re(e);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=t;let{type:r}=t;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=f(t.path),this.mode=t.mode!==void 0?this[ei](t.mode):void 0,this.uid=this.portable?void 0:t.uid,this.gid=this.portable?void 0:t.gid,this.uname=this.portable?void 0:t.uname,this.gname=this.portable?void 0:t.gname,this.size=t.size,this.mtime=this.noMtime?void 0:i.mtime||t.mtime,this.atime=this.portable?void 0:t.atime,this.ctime=this.portable?void 0:t.ctime,this.linkpath=t.linkpath!==void 0?f(t.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[h,a]=ce(this.path);h&&typeof a=="string"&&(this.path=a,n=h)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.onWriteEntry?.(this),this.header=new F({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),t.pipe(this)}[X](t){return tr(t,this.prefix)}[ei](t){return Ki(t,this.type==="Directory",this.portable)}write(t,e,i){typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8"));let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t,i)}end(t,e,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e??"utf8")),i&&this.once("finish",i),t?super.end(t,i):super.end(i),this}},In=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported";var ri=class s{tail;head;length=0;static create(t=[]){return new s(t)}constructor(t=[]){for(let e of t)this.push(e)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let e=t.next,i=t.prev;return e&&(e.prev=i),i&&(i.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=i),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,e}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let e=0,i=t.length;e<i;e++)Fn(this,t[e]);return this.length}unshift(...t){for(var e=0,i=t.length;e<i;e++)kn(this,t[e]);return this.length}pop(){if(!this.tail)return;let t=this.tail.value,e=this.tail;return this.tail=this.tail.prev,this.tail?this.tail.next=void 0:this.head=void 0,e.list=void 0,this.length--,t}shift(){if(!this.head)return;let t=this.head.value,e=this.head;return this.head=this.head.next,this.head?this.head.prev=void 0:this.tail=void 0,e.list=void 0,this.length--,t}forEach(t,e){e=e||this;for(let i=this.head,r=0;i;r++)t.call(e,i.value,r,this),i=i.next}forEachReverse(t,e){e=e||this;for(let i=this.tail,r=this.length-1;i;r--)t.call(e,i.value,r,this),i=i.prev}get(t){let e=0,i=this.head;for(;i&&e<t;e++)i=i.next;if(e===t&&i)return i.value}getReverse(t){let e=0,i=this.tail;for(;i&&e<t;e++)i=i.prev;if(e===t&&i)return i.value}map(t,e){e=e||this;let i=new s;for(let r=this.head;r;)i.push(t.call(e,r.value,this)),r=r.next;return i}mapReverse(t,e){e=e||this;var i=new s;for(let r=this.tail;r;)i.push(t.call(e,r.value,this)),r=r.prev;return i}reduce(t,e){let i,r=this.head;if(arguments.length>1)i=e;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=t(i,r.value,n),r=r.next;return i}reduceReverse(t,e){let i,r=this.tail;if(arguments.length>1)i=e;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=t(i,r.value,n),r=r.prev;return i}toArray(){let t=new Array(this.length);for(let e=0,i=this.head;i;e++)t[e]=i.value,i=i.next;return t}toArrayReverse(){let t=new Array(this.length);for(let e=0,i=this.tail;i;e++)t[e]=i.value,i=i.prev;return t}slice(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s;if(e<t||e<0)return i;t<0&&(t=0),e>this.length&&(e=this.length);let r=this.head,n=0;for(n=0;r&&n<t;n++)r=r.next;for(;r&&n<e;n++,r=r.next)i.push(r.value);return i}sliceReverse(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s;if(e<t||e<0)return i;t<0&&(t=0),e>this.length&&(e=this.length);let r=this.length,n=this.tail;for(;n&&r>e;r--)n=n.prev;for(;n&&r>t;r--,n=n.prev)i.push(n.value);return i}splice(t,e=0,...i){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let r=this.head;for(let o=0;r&&o<t;o++)r=r.next;let n=[];for(let o=0;r&&o<e;o++)n.push(r.value),r=this.removeNode(r);r?r!==this.tail&&(r=r.prev):r=this.tail;for(let o of i)r=Cn(this,r,o);return n}reverse(){let t=this.head,e=this.tail;for(let i=t;i;i=i.prev){let r=i.prev;i.prev=i.next,i.next=r}return this.head=e,this.tail=t,this}};function Cn(s,t,e){let i=t,r=t?t.next:s.head,n=new ue(e,i,r,s);return n.next===void 0&&(s.tail=n),n.prev===void 0&&(s.head=n),s.length++,n}function Fn(s,t){s.tail=new ue(t,s.tail,void 0,s),s.head||(s.head=s.tail),s.length++}function kn(s,t){s.head=new ue(t,void 0,s.head,s),s.tail||(s.tail=s.head),s.length++}var ue=class{list;next;prev;value;constructor(t,e,i,r){this.list=r,this.value=t,e?(e.next=this,this.prev=e):this.prev=void 0,i?(i.prev=this,this.next=i):this.next=void 0}};import rr from"path";var fi=class{path;absolute;entry;stat;readdir;pending=!1;ignore=!1;piped=!1;constructor(t,e){this.path=t||"./",this.absolute=e}},er=Buffer.alloc(1024),ni=Symbol("onStat"),me=Symbol("ended"),W=Symbol("queue"),Ct=Symbol("current"),Ft=Symbol("process"),pe=Symbol("processing"),ss=Symbol("processJob"),G=Symbol("jobs"),rs=Symbol("jobDone"),oi=Symbol("addFSEntry"),ir=Symbol("addTarEntry"),hs=Symbol("stat"),as=Symbol("readdir"),hi=Symbol("onreaddir"),ai=Symbol("pipe"),sr=Symbol("entry"),ns=Symbol("entryOpt"),li=Symbol("writeEntryClass"),nr=Symbol("write"),os=Symbol("ondrain"),Et=class extends A{sync=!1;opt;cwd;maxReadSize;preservePaths;strict;noPax;prefix;linkCache;statCache;file;portable;zip;readdirCache;noDirRecurse;follow;noMtime;mtime;filter;jobs;[li];onWriteEntry;[W];[G]=0;[pe]=!1;[me]=!1;constructor(t={}){if(super(),this.opt=t,this.file=t.file||"",this.cwd=t.cwd||process.cwd(),this.maxReadSize=t.maxReadSize,this.preservePaths=!!t.preservePaths,this.strict=!!t.strict,this.noPax=!!t.noPax,this.prefix=f(t.prefix||""),this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.readdirCache=t.readdirCache||new Map,this.onWriteEntry=t.onWriteEntry,this[li]=de,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),this.portable=!!t.portable,t.gzip||t.brotli||t.zstd){if((t.gzip?1:0)+(t.brotli?1:0)+(t.zstd?1:0)>1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(t.gzip&&(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new Be(t.gzip)),t.brotli&&(typeof t.brotli!="object"&&(t.brotli={}),this.zip=new Ue(t.brotli)),t.zstd&&(typeof t.zstd!="object"&&(t.zstd={}),this.zip=new Ge(t.zstd)),!this.zip)throw new Error("impossible");let e=this.zip;e.on("data",i=>super.write(i)),e.on("end",()=>super.end()),e.on("drain",()=>this[os]()),this.on("resume",()=>e.resume())}else this.on("drain",this[os]);this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,t.mtime&&(this.mtime=t.mtime),this.filter=typeof t.filter=="function"?t.filter:()=>!0,this[W]=new ri,this[G]=0,this.jobs=Number(t.jobs)||4,this[pe]=!1,this[me]=!1}[nr](t){return super.write(t)}add(t){return this.write(t),this}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&this.add(t),this[me]=!0,this[Ft](),i&&i(),this}write(t){if(this[me])throw new Error("write after end");return t instanceof Yt?this[ir](t):this[oi](t),this.flowing}[ir](t){let e=f(rr.resolve(this.cwd,t.path));if(!this.filter(t.path,t))t.resume();else{let i=new fi(t.path,e);i.entry=new si(t,this[ns](i)),i.entry.on("end",()=>this[rs](i)),this[G]+=1,this[W].push(i)}this[Ft]()}[oi](t){let e=f(rr.resolve(this.cwd,t));this[W].push(new fi(t,e)),this[Ft]()}[hs](t){t.pending=!0,this[G]+=1;let e=this.follow?"stat":"lstat";ci[e](t.absolute,(i,r)=>{t.pending=!1,this[G]-=1,i?this.emit("error",i):this[ni](t,r)})}[ni](t,e){this.statCache.set(t.absolute,e),t.stat=e,this.filter(t.path,e)?e.isFile()&&e.nlink>1&&t===this[Ct]&&!this.linkCache.get(`${e.dev}:${e.ino}`)&&!this.sync&&this[ss](t):t.ignore=!0,this[Ft]()}[as](t){t.pending=!0,this[G]+=1,ci.readdir(t.absolute,(e,i)=>{if(t.pending=!1,this[G]-=1,e)return this.emit("error",e);this[hi](t,i)})}[hi](t,e){this.readdirCache.set(t.absolute,e),t.readdir=e,this[Ft]()}[Ft](){if(!this[pe]){this[pe]=!0;for(let t=this[W].head;t&&this[G]<this.jobs;t=t.next)if(this[ss](t.value),t.value.ignore){let e=t.next;this[W].removeNode(t),t.next=e}this[pe]=!1,this[me]&&!this[W].length&&this[G]===0&&(this.zip?this.zip.end(er):(super.write(er),super.end()))}}get[Ct](){return this[W]&&this[W].head&&this[W].head.value}[rs](t){this[W].shift(),this[G]-=1,this[Ft]()}[ss](t){if(!t.pending){if(t.entry){t===this[Ct]&&!t.piped&&this[ai](t);return}if(!t.stat){let e=this.statCache.get(t.absolute);e?this[ni](t,e):this[hs](t)}if(t.stat&&!t.ignore){if(!this.noDirRecurse&&t.stat.isDirectory()&&!t.readdir){let e=this.readdirCache.get(t.absolute);if(e?this[hi](t,e):this[as](t),!t.readdir)return}if(t.entry=this[sr](t),!t.entry){t.ignore=!0;return}t===this[Ct]&&!t.piped&&this[ai](t)}}}[ns](t){return{onwarn:(e,i,r)=>this.warn(e,i,r),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[sr](t){this[G]+=1;try{return new this[li](t.path,this[ns](t)).on("end",()=>this[rs](t)).on("error",i=>this.emit("error",i))}catch(e){this.emit("error",e)}}[os](){this[Ct]&&this[Ct].entry&&this[Ct].entry.resume()}[ai](t){t.piped=!0,t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[oi](o+r)});let e=t.entry,i=this.zip;if(!e)throw new Error("cannot pipe without source");i?e.on("data",r=>{i.write(r)||e.pause()}):e.on("data",r=>{super.write(r)||e.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(t,e,i={}){Lt(this,t,e,i)}},kt=class extends Et{sync=!0;constructor(t){super(t),this[li]=ii}pause(){}resume(){}[hs](t){let e=this.follow?"statSync":"lstatSync";this[ni](t,ci[e](t.absolute))}[as](t){this[hi](t,ci.readdirSync(t.absolute))}[ai](t){let e=t.entry,i=this.zip;if(t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[oi](o+r)}),!e)throw new Error("Cannot pipe without source");i?e.on("data",r=>{i.write(r)}):e.on("data",r=>{super[nr](r)})}};var vn=(s,t)=>{let e=new kt(s),i=new Wt(s.file,{mode:s.mode||438});e.pipe(i),hr(e,t)},Mn=(s,t)=>{let e=new Et(s),i=new tt(s.file,{mode:s.mode||438});e.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),e.on("error",o)});return ar(e,t),r},hr=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?It({file:or.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},ar=async(s,t)=>{for(let e=0;e<t.length;e++){let i=String(t[e]);i.charAt(0)==="@"?await It({file:or.resolve(String(s.cwd),i.slice(1)),noResume:!0,onReadEntry:r=>{s.add(r)}}):s.add(i)}s.end()},Bn=(s,t)=>{let e=new kt(s);return hr(e,t),e},Pn=(s,t)=>{let e=new Et(s);return ar(e,t),e},zn=K(vn,Mn,Bn,Pn,(s,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")});import Lr from"node:fs";import io from"node:assert";import{randomBytes as xr}from"node:crypto";import u from"node:fs";import R from"node:path";import lr from"fs";var Un=process.env.__FAKE_PLATFORM__||process.platform,Hn=Un==="win32",{O_CREAT:Wn,O_TRUNC:Gn,O_WRONLY:Zn}=lr.constants,cr=Number(process.env.__FAKE_FS_O_FILENAME__)||lr.constants.UV_FS_O_FILEMAP||0,Yn=Hn&&!!cr,Kn=512*1024,Vn=cr|Gn|Wn|Zn,ls=Yn?s=>s<Kn?Vn:"w":()=>"w";import ui from"node:fs";import Ee from"node:path";var cs=(s,t,e)=>{try{return ui.lchownSync(s,t,e)}catch(i){if(i?.code!=="ENOENT")throw i}},di=(s,t,e,i)=>{ui.lchown(s,t,e,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},$n=(s,t,e,i,r)=>{if(t.isDirectory())fs(Ee.resolve(s,t.name),e,i,n=>{if(n)return r(n);let o=Ee.resolve(s,t.name);di(o,e,i,r)});else{let n=Ee.resolve(s,t.name);di(n,e,i,r)}},fs=(s,t,e,i)=>{ui.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return di(s,t,e,i);let o=n.length,h=null,a=l=>{if(!h){if(l)return i(h=l);if(--o===0)return di(s,t,e,i)}};for(let l of n)$n(s,l,t,e,a)})},Xn=(s,t,e,i)=>{t.isDirectory()&&ds(Ee.resolve(s,t.name),e,i),cs(Ee.resolve(s,t.name),e,i)},ds=(s,t,e)=>{let i;try{i=ui.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return cs(s,t,e);throw n}for(let r of i)Xn(s,r,t,e);return cs(s,t,e)};import k from"node:fs";import qn from"node:fs/promises";import mi from"node:path";var we=class extends Error{path;code;syscall="chdir";constructor(t,e){super(`${e}: Cannot cd into '${t}'`),this.path=t,this.code=e}get name(){return"CwdError"}};var wt=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(t,e){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=t,this.path=e}get name(){return"SymlinkError"}};var jn=(s,t)=>{k.stat(s,(e,i)=>{(e||!i.isDirectory())&&(e=new we(s,e?.code||"ENOTDIR")),t(e)})},fr=(s,t,e)=>{s=f(s);let i=t.umask??18,r=t.mode|448,n=(r&i)!==0,o=t.uid,h=t.gid,a=typeof o=="number"&&typeof h=="number"&&(o!==t.processUid||h!==t.processGid),l=t.preserve,c=t.unlink,d=f(t.cwd),S=(E,x)=>{E?e(E):x&&a?fs(x,o,h,_s=>S(_s)):n?k.chmod(s,r,e):e()};if(s===d)return jn(s,S);if(l)return qn.mkdir(s,{mode:r,recursive:!0}).then(E=>S(null,E??void 0),S);let N=f(mi.relative(d,s)).split("/");us(d,N,r,c,d,void 0,S)},us=(s,t,e,i,r,n,o)=>{if(!t.length)return o(null,n);let h=t.shift(),a=f(mi.resolve(s+"/"+h));k.mkdir(a,e,dr(a,t,e,i,r,n,o))},dr=(s,t,e,i,r,n,o)=>h=>{h?k.lstat(s,(a,l)=>{if(a)a.path=a.path&&f(a.path),o(a);else if(l.isDirectory())us(s,t,e,i,r,n,o);else if(i)k.unlink(s,c=>{if(c)return o(c);k.mkdir(s,e,dr(s,t,e,i,r,n,o))});else{if(l.isSymbolicLink())return o(new wt(s,s+"/"+t.join("/")));o(h)}}):(n=n||s,us(s,t,e,i,r,n,o))},Qn=s=>{let t=!1,e;try{t=k.statSync(s).isDirectory()}catch(i){e=i?.code}finally{if(!t)throw new we(s,e??"ENOTDIR")}},ur=(s,t)=>{s=f(s);let e=t.umask??18,i=t.mode|448,r=(i&e)!==0,n=t.uid,o=t.gid,h=typeof n=="number"&&typeof o=="number"&&(n!==t.processUid||o!==t.processGid),a=t.preserve,l=t.unlink,c=f(t.cwd),d=E=>{E&&h&&ds(E,n,o),r&&k.chmodSync(s,i)};if(s===c)return Qn(c),d();if(a)return d(k.mkdirSync(s,{mode:i,recursive:!0})??void 0);let T=f(mi.relative(c,s)).split("/"),N;for(let E=T.shift(),x=c;E&&(x+="/"+E);E=T.shift()){x=f(mi.resolve(x));try{k.mkdirSync(x,i),N=N||x}catch{let Os=k.lstatSync(x);if(Os.isDirectory())continue;if(l){k.unlinkSync(x),k.mkdirSync(x,i),N=N||x;continue}else if(Os.isSymbolicLink())return new wt(x,x+"/"+T.join("/"))}}return d(N)};import{join as Er}from"node:path";var ms=Object.create(null),mr=1e4,$t=new Set,pr=s=>{$t.has(s)?$t.delete(s):ms[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),$t.add(s);let t=ms[s],e=$t.size-mr;if(e>mr/10){for(let i of $t)if($t.delete(i),delete ms[i],--e<=0)break}return t};var Jn=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,to=Jn==="win32",eo=s=>s.split("/").slice(0,-1).reduce((e,i)=>{let r=e[e.length-1];return r!==void 0&&(i=Er(r,i)),e.push(i||"/"),e},[]),pi=class{#t=new Map;#i=new Map;#s=new Set;reserve(t,e){t=to?["win32 parallelization disabled"]:t.map(r=>mt(Er(pr(r))));let i=new Set(t.map(r=>eo(r)).reduce((r,n)=>r.concat(n)));this.#i.set(e,{dirs:i,paths:t});for(let r of t){let n=this.#t.get(r);n?n.push(e):this.#t.set(r,[e])}for(let r of i){let n=this.#t.get(r);if(!n)this.#t.set(r,[new Set([e])]);else{let o=n[n.length-1];o instanceof Set?o.add(e):n.push(new Set([e]))}}return this.#r(e)}#n(t){let e=this.#i.get(t);if(!e)throw new Error("function does not have any path reservations");return{paths:e.paths.map(i=>this.#t.get(i)),dirs:[...e.dirs].map(i=>this.#t.get(i))}}check(t){let{paths:e,dirs:i}=this.#n(t);return e.every(r=>r&&r[0]===t)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(t))}#r(t){return this.#s.has(t)||!this.check(t)?!1:(this.#s.add(t),t(()=>this.#e(t)),!0)}#e(t){if(!this.#s.has(t))return!1;let e=this.#i.get(t);if(!e)throw new Error("invalid reservation");let{paths:i,dirs:r}=e,n=new Set;for(let o of i){let h=this.#t.get(o);if(!h||h?.[0]!==t)continue;let a=h[1];if(!a){this.#t.delete(o);continue}if(h.shift(),typeof a=="function")n.add(a);else for(let l of a)n.add(l)}for(let o of r){let h=this.#t.get(o),a=h?.[0];if(!(!h||!(a instanceof Set)))if(a.size===1&&h.length===1){this.#t.delete(o);continue}else if(a.size===1){h.shift();let l=h[0];typeof l=="function"&&n.add(l)}else a.delete(t)}return this.#s.delete(t),n.forEach(o=>this.#r(o)),!0}};var wr=()=>process.umask();var Sr=Symbol("onEntry"),Ss=Symbol("checkFs"),yr=Symbol("checkFs2"),ys=Symbol("isReusable"),P=Symbol("makeFs"),Rs=Symbol("file"),bs=Symbol("directory"),wi=Symbol("link"),Rr=Symbol("symlink"),br=Symbol("hardlink"),ye=Symbol("ensureNoSymlink"),gr=Symbol("unsupported"),_r=Symbol("checkPath"),ps=Symbol("stripAbsolutePath"),St=Symbol("mkdir"),O=Symbol("onError"),Ei=Symbol("pending"),Or=Symbol("pend"),Xt=Symbol("unpend"),Es=Symbol("ended"),ws=Symbol("maybeClose"),gs=Symbol("skip"),Re=Symbol("doChown"),be=Symbol("uid"),ge=Symbol("gid"),_e=Symbol("checkedCwd"),so=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Oe=so==="win32",ro=1024,no=(s,t)=>{if(!Oe)return u.unlink(s,t);let e=s+".DELETE."+xr(16).toString("hex");u.rename(s,e,i=>{if(i)return t(i);u.unlink(e,t)})},oo=s=>{if(!Oe)return u.unlinkSync(s);let t=s+".DELETE."+xr(16).toString("hex");u.renameSync(s,t),u.unlinkSync(t)},Tr=(s,t,e)=>s!==void 0&&s===s>>>0?s:t!==void 0&&t===t>>>0?t:e,qt=class extends st{[Es]=!1;[_e]=!1;[Ei]=0;reservations=new pi;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(t={}){if(t.ondone=()=>{this[Es]=!0,this[ws]()},super(t),this.transform=t.transform,this.chmod=!!t.chmod,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;t.preserveOwner===void 0&&typeof t.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:ro,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||Oe,this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=f(R.resolve(t.cwd||process.cwd())),this.strip=Number(t.strip)||0,this.processUmask=this.chmod?typeof t.processUmask=="number"?t.processUmask:wr():0,this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",e=>this[Sr](e))}warn(t,e,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,e,i)}[ws](){this[Es]&&this[Ei]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[ps](t,e){let i=t[e],{type:r}=t;if(!i||this.preservePaths)return!0;let[n,o]=ce(i),h=o.replace(/\\/g,"/").split("/");if(h.includes("..")||Oe&&/^[a-z]:\.\.$/i.test(h[0]??"")){if(e==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${e} contains '..'`,{entry:t,[e]:i}),!1;{let a=R.posix.dirname(t.path),l=R.posix.normalize(R.posix.join(a,h.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${e} escapes extraction directory`,{entry:t,[e]:i}),!1}}return n&&(t[e]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${e}`,{entry:t,[e]:i})),!0}[_r](t){let e=f(t.path),i=e.split("/");if(this.strip){if(i.length<this.strip)return!1;if(t.type==="Link"){let r=f(String(t.linkpath)).split("/");if(r.length>=this.strip)t.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),t.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:t,path:e,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[ps](t,"path")||!this[ps](t,"linkpath"))return!1;if(R.isAbsolute(t.path)?t.absolute=f(R.resolve(t.path)):t.absolute=f(R.resolve(this.cwd,t.path)),!this.preservePaths&&typeof t.absolute=="string"&&t.absolute.indexOf(this.cwd+"/")!==0&&t.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:t,path:f(t.path),resolvedPath:t.absolute,cwd:this.cwd}),!1;if(t.absolute===this.cwd&&t.type!=="Directory"&&t.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=R.win32.parse(String(t.absolute));t.absolute=r+$i(String(t.absolute).slice(r.length));let{root:n}=R.win32.parse(t.path);t.path=n+$i(t.path.slice(n.length))}return!0}[Sr](t){if(!this[_r](t))return t.resume();switch(io.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Ss](t);default:return this[gr](t)}}[O](t,e){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:e}),this[Xt](),e.resume())}[St](t,e,i){fr(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e},i)}[Re](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[be](t){return Tr(this.uid,t.uid,this.processUid)}[ge](t){return Tr(this.gid,t.gid,this.processGid)}[Rs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=new tt(String(t.absolute),{flags:ls(t.size),mode:i,autoClose:!1});r.on("error",a=>{r.fd&&u.close(r.fd,()=>{}),r.write=()=>!0,this[O](a,t),e()});let n=1,o=a=>{if(a){r.fd&&u.close(r.fd,()=>{}),this[O](a,t),e();return}--n===0&&r.fd!==void 0&&u.close(r.fd,l=>{l?this[O](l,t):this[Xt](),e()})};r.on("finish",()=>{let a=String(t.absolute),l=r.fd;if(typeof l=="number"&&t.mtime&&!this.noMtime){n++;let c=t.atime||new Date,d=t.mtime;u.futimes(l,c,d,S=>S?u.utimes(a,c,d,T=>o(T&&S)):o())}if(typeof l=="number"&&this[Re](t)){n++;let c=this[be](t),d=this[ge](t);typeof c=="number"&&typeof d=="number"&&u.fchown(l,c,d,S=>S?u.chown(a,c,d,T=>o(T&&S)):o())}o()});let h=this.transform&&this.transform(t)||t;h!==t&&(h.on("error",a=>{this[O](a,t),e()}),t.pipe(h)),h.pipe(r)}[bs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode;this[St](String(t.absolute),i,r=>{if(r){this[O](r,t),e();return}let n=1,o=()=>{--n===0&&(e(),this[Xt](),t.resume())};t.mtime&&!this.noMtime&&(n++,u.utimes(String(t.absolute),t.atime||new Date,t.mtime,o)),this[Re](t)&&(n++,u.chown(String(t.absolute),Number(this[be](t)),Number(this[ge](t)),o)),o()})}[gr](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Rr](t,e){let i=f(R.relative(this.cwd,R.resolve(R.dirname(String(t.absolute)),String(t.linkpath)))).split("/");this[ye](t,this.cwd,i,()=>this[wi](t,String(t.linkpath),"symlink",e),r=>{this[O](r,t),e()})}[br](t,e){let i=f(R.resolve(this.cwd,String(t.linkpath))),r=f(String(t.linkpath)).split("/");this[ye](t,this.cwd,r,()=>this[wi](t,i,"link",e),n=>{this[O](n,t),e()})}[ye](t,e,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let h=R.resolve(e,o);u.lstat(h,(a,l)=>{if(a)return r();if(l?.isSymbolicLink())return n(new wt(h,R.resolve(h,i.join("/"))));this[ye](t,h,i,r,n)})}[Or](){this[Ei]++}[Xt](){this[Ei]--,this[ws]()}[gs](t){this[Xt](),t.resume()}[ys](t,e){return t.type==="File"&&!this.unlink&&e.isFile()&&e.nlink<=1&&!Oe}[Ss](t){this[Or]();let e=[t.path];t.linkpath&&e.push(t.linkpath),this.reservations.reserve(e,i=>this[yr](t,i))}[yr](t,e){let i=h=>{e(h)},r=()=>{this[St](this.cwd,this.dmode,h=>{if(h){this[O](h,t),i();return}this[_e]=!0,n()})},n=()=>{if(t.absolute!==this.cwd){let h=f(R.dirname(String(t.absolute)));if(h!==this.cwd)return this[St](h,this.dmode,a=>{if(a){this[O](a,t),i();return}o()})}o()},o=()=>{u.lstat(String(t.absolute),(h,a)=>{if(a&&(this.keep||this.newer&&a.mtime>(t.mtime??a.mtime))){this[gs](t),i();return}if(h||this[ys](t,a))return this[P](null,t,i);if(a.isDirectory()){if(t.type==="Directory"){let l=this.chmod&&t.mode&&(a.mode&4095)!==t.mode,c=d=>this[P](d??null,t,i);return l?u.chmod(String(t.absolute),Number(t.mode),c):c()}if(t.absolute!==this.cwd)return u.rmdir(String(t.absolute),l=>this[P](l??null,t,i))}if(t.absolute===this.cwd)return this[P](null,t,i);no(String(t.absolute),l=>this[P](l??null,t,i))})};this[_e]?n():r()}[P](t,e,i){if(t){this[O](t,e),i();return}switch(e.type){case"File":case"OldFile":case"ContiguousFile":return this[Rs](e,i);case"Link":return this[br](e,i);case"SymbolicLink":return this[Rr](e,i);case"Directory":case"GNUDumpDir":return this[bs](e,i)}}[wi](t,e,i,r){u[i](e,String(t.absolute),n=>{n?this[O](n,t):(this[Xt](),t.resume()),r()})}},Se=s=>{try{return[null,s()]}catch(t){return[t,null]}},Te=class extends qt{sync=!0;[P](t,e){return super[P](t,e,()=>{})}[Ss](t){if(!this[_e]){let n=this[St](this.cwd,this.dmode);if(n)return this[O](n,t);this[_e]=!0}if(t.absolute!==this.cwd){let n=f(R.dirname(String(t.absolute)));if(n!==this.cwd){let o=this[St](n,this.dmode);if(o)return this[O](o,t)}}let[e,i]=Se(()=>u.lstatSync(String(t.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(t.mtime??i.mtime)))return this[gs](t);if(e||this[ys](t,i))return this[P](null,t);if(i.isDirectory()){if(t.type==="Directory"){let o=this.chmod&&t.mode&&(i.mode&4095)!==t.mode,[h]=o?Se(()=>{u.chmodSync(String(t.absolute),Number(t.mode))}):[];return this[P](h,t)}let[n]=Se(()=>u.rmdirSync(String(t.absolute)));this[P](n,t)}let[r]=t.absolute===this.cwd?[]:Se(()=>oo(String(t.absolute)));this[P](r,t)}[Rs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=h=>{let a;try{u.closeSync(n)}catch(l){a=l}(h||a)&&this[O](h||a,t),e()},n;try{n=u.openSync(String(t.absolute),ls(t.size),i)}catch(h){return r(h)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",h=>this[O](h,t)),t.pipe(o)),o.on("data",h=>{try{u.writeSync(n,h,0,h.length)}catch(a){r(a)}}),o.on("end",()=>{let h=null;if(t.mtime&&!this.noMtime){let a=t.atime||new Date,l=t.mtime;try{u.futimesSync(n,a,l)}catch(c){try{u.utimesSync(String(t.absolute),a,l)}catch{h=c}}}if(this[Re](t)){let a=this[be](t),l=this[ge](t);try{u.fchownSync(n,Number(a),Number(l))}catch(c){try{u.chownSync(String(t.absolute),Number(a),Number(l))}catch{h=h||c}}}r(h)})}[bs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode,r=this[St](String(t.absolute),i);if(r){this[O](r,t),e();return}if(t.mtime&&!this.noMtime)try{u.utimesSync(String(t.absolute),t.atime||new Date,t.mtime)}catch{}if(this[Re](t))try{u.chownSync(String(t.absolute),Number(this[be](t)),Number(this[ge](t)))}catch{}e(),t.resume()}[St](t,e){try{return ur(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e})}catch(i){return i}}[ye](t,e,i,r,n){if(this.preservePaths||!i.length)return r();let o=e;for(let h of i){o=R.resolve(o,h);let[a,l]=Se(()=>u.lstatSync(o));if(a)return r();if(l.isSymbolicLink())return n(new wt(o,R.resolve(e,i.join("/"))))}r()}[wi](t,e,i,r){let n=`${i}Sync`;try{u[n](e,String(t.absolute)),r(),t.resume()}catch(o){return this[O](o,t)}}};var ho=s=>{let t=new Te(s),e=s.file,i=Lr.statSync(e),r=s.maxReadSize||16*1024*1024;new ve(e,{readSize:r,size:i.size}).pipe(t)},ao=(s,t)=>{let e=new qt(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("close",o),Lr.stat(r,(a,l)=>{if(a)h(a);else{let c=new gt(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},lo=K(ho,ao,s=>new Te(s),s=>new qt(s),(s,t)=>{t?.length&&Yi(s,t)});import v from"node:fs";import Nr from"node:path";var co=(s,t)=>{let e=new kt(s),i=!0,r,n;try{try{r=v.openSync(s.file,"r+")}catch(a){if(a?.code==="ENOENT")r=v.openSync(s.file,"w+");else throw a}let o=v.fstatSync(r),h=Buffer.alloc(512);t:for(n=0;n<o.size;n+=512){for(let c=0,d=0;c<512;c+=d){if(d=v.readSync(r,h,c,h.length-c,n+c),n===0&&h[0]===31&&h[1]===139)throw new Error("cannot append to compressed archives");if(!d)break t}let a=new F(h);if(!a.cksumValid)break;let l=512*Math.ceil((a.size||0)/512);if(n+l+512>o.size)break;n+=l,s.mtimeCache&&a.mtime&&s.mtimeCache.set(String(a.path),a.mtime)}i=!1,fo(s,e,n,r,t)}finally{if(i)try{v.closeSync(r)}catch{}}},fo=(s,t,e,i,r)=>{let n=new Wt(s.file,{fd:i,start:e});t.pipe(n),mo(t,r)},uo=(s,t)=>{t=Array.from(t);let e=new Et(s),i=(n,o,h)=>{let a=(T,N)=>{T?v.close(n,E=>h(T)):h(null,N)},l=0;if(o===0)return a(null,0);let c=0,d=Buffer.alloc(512),S=(T,N)=>{if(T||typeof N>"u")return a(T);if(c+=N,c<512&&N)return v.read(n,d,c,d.length-c,l+c,S);if(l===0&&d[0]===31&&d[1]===139)return a(new Error("cannot append to compressed archives"));if(c<512)return a(null,l);let E=new F(d);if(!E.cksumValid)return a(null,l);let x=512*Math.ceil((E.size??0)/512);if(l+x+512>o||(l+=x+512,l>=o))return a(null,l);s.mtimeCache&&E.mtime&&s.mtimeCache.set(String(E.path),E.mtime),c=0,v.read(n,d,0,512,l,S)};v.read(n,d,0,512,l,S)};return new Promise((n,o)=>{e.on("error",o);let h="r+",a=(l,c)=>{if(l&&l.code==="ENOENT"&&h==="r+")return h="w+",v.open(s.file,h,a);if(l||!c)return o(l);v.fstat(c,(d,S)=>{if(d)return v.close(c,()=>o(d));i(c,S.size,(T,N)=>{if(T)return o(T);let E=new tt(s.file,{fd:c,start:N});e.pipe(E),E.on("error",o),E.on("close",n),po(e,t)})})};v.open(s.file,h,a)})},mo=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?It({file:Nr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},po=async(s,t)=>{for(let e=0;e<t.length;e++){let i=String(t[e]);i.charAt(0)==="@"?await It({file:Nr.resolve(String(s.cwd),i.slice(1)),noResume:!0,onReadEntry:r=>s.add(r)}):s.add(i)}s.end()},vt=K(co,uo,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,t)=>{if(!ks(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")});var Eo=K(vt.syncFile,vt.asyncFile,vt.syncNoFile,vt.asyncNoFile,(s,t=[])=>{vt.validate?.(s,t),wo(s)}),wo=s=>{let t=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=t?(e,i)=>t(e,i)&&!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0)):(e,i)=>!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0))};export{F as Header,Et as Pack,fi as PackJob,kt as PackSync,st as Parser,ct as Pax,Yt as ReadEntry,qt as Unpack,Te as UnpackSync,de as WriteEntry,ii as WriteEntrySync,si as WriteEntryTar,zn as c,zn as create,lo as extract,Yi as filesFilter,It as list,vt as r,vt as replace,It as t,Mi as types,Eo as u,Eo as update,lo as x};
 //# sourceMappingURL=index.min.js.map
diff --git a/deps/npm/node_modules/tar/dist/esm/unpack.js b/deps/npm/node_modules/tar/dist/esm/unpack.js
index 1d0b53d1df4e66..bc277018e4f169 100644
--- a/deps/npm/node_modules/tar/dist/esm/unpack.js
+++ b/deps/npm/node_modules/tar/dist/esm/unpack.js
@@ -221,7 +221,9 @@ export class Unpack extends Parser {
         const { type } = entry;
         if (!p || this.preservePaths)
             return true;
-        const parts = p.split('/');
+        // strip off the root
+        const [root, stripped] = stripAbsolutePath(p);
+        const parts = stripped.replace(/\\/g, '/').split('/');
         if (parts.includes('..') ||
             /* c8 ignore next */
             (isWindows && /^[a-z]:\.\.$/i.test(parts[0] ?? ''))) {
@@ -242,7 +244,7 @@ export class Unpack extends Parser {
                 // `path.posix` is safe to use because we're operating on
                 // tar paths, not a filesystem.
                 const entryDir = path.posix.dirname(entry.path);
-                const resolved = path.posix.normalize(path.posix.join(entryDir, p));
+                const resolved = path.posix.normalize(path.posix.join(entryDir, parts.join('/')));
                 // If the resolved path escapes (starts with ..), reject it
                 if (resolved.startsWith('../') || resolved === '..') {
                     this.warn('TAR_ENTRY_ERROR', `${field} escapes extraction directory`, {
@@ -253,8 +255,6 @@ export class Unpack extends Parser {
                 }
             }
         }
-        // strip off the root
-        const [root, stripped] = stripAbsolutePath(p);
         if (root) {
             // ok, but triggers warning about stripping root
             entry[field] = String(stripped);
diff --git a/deps/npm/node_modules/tar/package.json b/deps/npm/node_modules/tar/package.json
index 7565cf8144df33..27cdae830128d7 100644
--- a/deps/npm/node_modules/tar/package.json
+++ b/deps/npm/node_modules/tar/package.json
@@ -2,7 +2,7 @@
   "author": "Isaac Z. Schlueter",
   "name": "tar",
   "description": "tar for node",
-  "version": "7.5.9",
+  "version": "7.5.11",
   "repository": {
     "type": "git",
     "url": "https://github.com/isaacs/node-tar.git"
@@ -28,18 +28,18 @@
     "yallist": "^5.0.0"
   },
   "devDependencies": {
-    "@types/node": "^25.0.9",
+    "@types/node": "^25.3.3",
     "chmodr": "^2.0.2",
     "end-of-stream": "^1.4.3",
     "esbuild": "^0.27.3",
     "events-to-array": "^2.0.3",
     "mutate-fs": "^2.1.1",
     "nock": "^13.5.4",
-    "prettier": "^3.8.0",
+    "prettier": "^3.8.1",
     "rimraf": "^6.1.2",
-    "tap": "^21.5.0",
-    "tshy": "^3.1.0",
-    "typedoc": "^0.28.16"
+    "tap": "^21.6.2",
+    "tshy": "^3.3.2",
+    "typedoc": "^0.28.17"
   },
   "license": "BlueOak-1.0.0",
   "engines": {
diff --git a/deps/npm/node_modules/write-file-atomic/lib/index.js b/deps/npm/node_modules/write-file-atomic/lib/index.js
index 6013894cd1f4fc..d470cdd18de8c3 100644
--- a/deps/npm/node_modules/write-file-atomic/lib/index.js
+++ b/deps/npm/node_modules/write-file-atomic/lib/index.js
@@ -5,7 +5,7 @@ module.exports._getTmpname = getTmpname // for testing
 module.exports._cleanupOnExit = cleanupOnExit
 
 const fs = require('fs')
-const MurmurHash3 = require('imurmurhash')
+const crypto = require('node:crypto')
 const { onExit } = require('signal-exit')
 const path = require('path')
 const { promisify } = require('util')
@@ -28,11 +28,13 @@ const threadId = (function getId () {
 let invocations = 0
 function getTmpname (filename) {
   return filename + '.' +
-    MurmurHash3(__filename)
-      .hash(String(process.pid))
-      .hash(String(threadId))
-      .hash(String(++invocations))
-      .result()
+    crypto.createHash('sha1')
+      .update(__filename)
+      .update(String(process.pid))
+      .update(String(threadId))
+      .update(String(++invocations))
+      .digest()
+      .readUInt32BE(0)
 }
 
 function cleanupOnExit (tmpfile) {
diff --git a/deps/npm/node_modules/write-file-atomic/package.json b/deps/npm/node_modules/write-file-atomic/package.json
index c72d839f0e6611..da35aeec25414f 100644
--- a/deps/npm/node_modules/write-file-atomic/package.json
+++ b/deps/npm/node_modules/write-file-atomic/package.json
@@ -1,6 +1,6 @@
 {
   "name": "write-file-atomic",
-  "version": "7.0.0",
+  "version": "7.0.1",
   "description": "Write files in an atomic fashion w/configurable ownership",
   "main": "./lib/index.js",
   "scripts": {
@@ -28,12 +28,11 @@
   },
   "homepage": "https://github.com/npm/write-file-atomic",
   "dependencies": {
-    "imurmurhash": "^0.1.4",
     "signal-exit": "^4.0.1"
   },
   "devDependencies": {
-    "@npmcli/eslint-config": "^5.0.0",
-    "@npmcli/template-oss": "4.27.1",
+    "@npmcli/eslint-config": "^6.0.0",
+    "@npmcli/template-oss": "4.28.1",
     "tap": "^16.0.1"
   },
   "files": [
@@ -46,7 +45,7 @@
   "templateOSS": {
     "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
     "windowsCI": false,
-    "version": "4.27.1",
+    "version": "4.28.1",
     "publish": "true"
   },
   "tap": {
diff --git a/deps/npm/package.json b/deps/npm/package.json
index 46ebacd5ade907..45209901d7928f 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,5 +1,5 @@
 {
-  "version": "11.11.0",
+  "version": "11.11.1",
   "name": "npm",
   "description": "a package manager for JavaScript",
   "workspaces": [
@@ -52,7 +52,7 @@
   },
   "dependencies": {
     "@isaacs/string-locale-compare": "^1.1.0",
-    "@npmcli/arborist": "^9.4.0",
+    "@npmcli/arborist": "^9.4.1",
     "@npmcli/config": "^10.7.1",
     "@npmcli/fs": "^5.0.0",
     "@npmcli/map-workspaces": "^5.0.3",
@@ -60,7 +60,7 @@
     "@npmcli/package-json": "^7.0.5",
     "@npmcli/promise-spawn": "^9.0.1",
     "@npmcli/redact": "^4.0.0",
-    "@npmcli/run-script": "^10.0.3",
+    "@npmcli/run-script": "^10.0.4",
     "@sigstore/tuf": "^4.0.1",
     "abbrev": "^4.0.0",
     "archy": "~1.0.0",
@@ -77,17 +77,17 @@
     "is-cidr": "^6.0.3",
     "json-parse-even-better-errors": "^5.0.0",
     "libnpmaccess": "^10.0.3",
-    "libnpmdiff": "^8.1.3",
-    "libnpmexec": "^10.2.3",
-    "libnpmfund": "^7.0.17",
+    "libnpmdiff": "^8.1.4",
+    "libnpmexec": "^10.2.4",
+    "libnpmfund": "^7.0.18",
     "libnpmorg": "^8.0.1",
-    "libnpmpack": "^9.1.3",
+    "libnpmpack": "^9.1.4",
     "libnpmpublish": "^11.1.3",
     "libnpmsearch": "^9.0.1",
     "libnpmteam": "^8.0.2",
     "libnpmversion": "^8.0.3",
     "make-fetch-happen": "^15.0.4",
-    "minimatch": "^10.2.2",
+    "minimatch": "^10.2.4",
     "minipass": "^7.1.3",
     "minipass-pipeline": "^1.2.4",
     "ms": "^2.1.2",
@@ -101,7 +101,7 @@
     "npm-registry-fetch": "^19.1.1",
     "npm-user-validate": "^4.0.0",
     "p-map": "^7.0.4",
-    "pacote": "^21.4.0",
+    "pacote": "^21.5.0",
     "parse-conflict-json": "^5.0.1",
     "proc-log": "^6.1.0",
     "qrcode-terminal": "^0.12.0",
@@ -110,7 +110,7 @@
     "spdx-expression-parse": "^4.0.0",
     "ssri": "^13.0.1",
     "supports-color": "^10.2.2",
-    "tar": "^7.5.9",
+    "tar": "^7.5.11",
     "text-table": "~0.2.0",
     "tiny-relative-date": "^2.0.2",
     "treeverse": "^3.0.0",
diff --git a/deps/npm/tap-snapshots/test/lib/commands/init.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/init.js.test.cjs
index 821193a55e1a98..d8c31b95d9d7d7 100644
--- a/deps/npm/tap-snapshots/test/lib/commands/init.js.test.cjs
+++ b/deps/npm/tap-snapshots/test/lib/commands/init.js.test.cjs
@@ -9,11 +9,9 @@ exports[`test/lib/commands/init.js TAP displays output > displays helper info 1`
 This utility will walk you through creating a package.json file.
 It only covers the most common items, and tries to guess sensible defaults.
 
-See \`npm help init\` for definitive documentation on these fields
-and exactly what they do.
+See \`npm help init\` for definitive documentation on these fields and exactly what they do.
 
-Use \`npm install <pkg>\` afterwards to install a package and
-save it as a dependency in the package.json file.
+Use \`npm install <pkg>\` afterwards to install a package and save it as a dependency in the package.json file.
 
 Press ^C at any time to quit.
 `
diff --git a/deps/npm/tap-snapshots/test/lib/commands/install.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/install.js.test.cjs
index 6143eacb57ffa2..dd618ee3688f19 100644
--- a/deps/npm/tap-snapshots/test/lib/commands/install.js.test.cjs
+++ b/deps/npm/tap-snapshots/test/lib/commands/install.js.test.cjs
@@ -134,9 +134,9 @@ silly logfile done cleaning log files
 verbose stack Error: The developer of this package has specified the following through devEngines
 verbose stack Invalid devEngines.runtime
 verbose stack Invalid name "nondescript" does not match "node" for "runtime"
-verbose stack     at Install.checkDevEngines ({CWD}/lib/base-cmd.js:244:27)
-verbose stack     at MockNpm.execCommandClass ({CWD}/lib/npm.js:310:7)
-verbose stack     at MockNpm.exec ({CWD}/lib/npm.js:209:9)
+verbose stack     at Install.checkDevEngines ({CWD}/lib/base-cmd.js:247:27)
+verbose stack     at MockNpm.execCommandClass ({CWD}/lib/npm.js:292:7)
+verbose stack     at MockNpm.exec ({CWD}/lib/npm.js:193:9)
 error code EBADDEVENGINES
 error EBADDEVENGINES The developer of this package has specified the following through devEngines
 error EBADDEVENGINES Invalid devEngines.runtime
@@ -199,9 +199,9 @@ warn EBADDEVENGINES }
 verbose stack Error: The developer of this package has specified the following through devEngines
 verbose stack Invalid devEngines.runtime
 verbose stack Invalid name "nondescript" does not match "node" for "runtime"
-verbose stack     at Install.checkDevEngines ({CWD}/lib/base-cmd.js:244:27)
-verbose stack     at MockNpm.execCommandClass ({CWD}/lib/npm.js:310:7)
-verbose stack     at MockNpm.exec ({CWD}/lib/npm.js:209:9)
+verbose stack     at Install.checkDevEngines ({CWD}/lib/base-cmd.js:247:27)
+verbose stack     at MockNpm.execCommandClass ({CWD}/lib/npm.js:292:7)
+verbose stack     at MockNpm.exec ({CWD}/lib/npm.js:193:9)
 error code EBADDEVENGINES
 error EBADDEVENGINES The developer of this package has specified the following through devEngines
 error EBADDEVENGINES Invalid devEngines.runtime
@@ -225,9 +225,9 @@ silly logfile done cleaning log files
 verbose stack Error: The developer of this package has specified the following through devEngines
 verbose stack Invalid devEngines.runtime
 verbose stack Invalid name "nondescript" does not match "node" for "runtime"
-verbose stack     at Install.checkDevEngines ({CWD}/lib/base-cmd.js:244:27)
-verbose stack     at MockNpm.execCommandClass ({CWD}/lib/npm.js:310:7)
-verbose stack     at MockNpm.exec ({CWD}/lib/npm.js:209:9)
+verbose stack     at Install.checkDevEngines ({CWD}/lib/base-cmd.js:247:27)
+verbose stack     at MockNpm.execCommandClass ({CWD}/lib/npm.js:292:7)
+verbose stack     at MockNpm.exec ({CWD}/lib/npm.js:193:9)
 error code EBADDEVENGINES
 error EBADDEVENGINES The developer of this package has specified the following through devEngines
 error EBADDEVENGINES Invalid devEngines.runtime
diff --git a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
index c0f7bf8fb278ca..f04c0868ce8823 100644
--- a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
+++ b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
@@ -5782,7 +5782,11 @@ exports[`test/lib/docs.js TAP usage trust > must match snapshot 1`] = `
 Create a trusted relationship between a package and a OIDC provider
 
 Usage:
-npm trust
+npm trust github [package] --file [--repo|--repository] [--env|--environment] [-y|--yes]
+npm trust gitlab [package] --file [--project|--repo|--repository] [--env|--environment] [-y|--yes]
+npm trust circleci [package] --org-id <uuid> --project-id <uuid> --pipeline-definition-id <uuid> --vcs-origin <origin> [--context-id <uuid>...] [-y|--yes]
+npm trust list [package]
+npm trust revoke [package] --id=<trust-id>
 
 Subcommands:
   github
@@ -5805,7 +5809,7 @@ Run "npm trust <subcommand> --help" for more info on a subcommand.
 Run "npm help trust" for more info
 
 \`\`\`bash
-npm trust
+
 \`\`\`
 
 Note: This command is unaware of workspaces.
diff --git a/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs
index 463cdae374c93d..d41a85d99ff855 100644
--- a/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs
+++ b/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs
@@ -370,9 +370,7 @@ Object {
         The operation was rejected by your operating system.
         It is likely you do not have the permissions to access this file as the current user
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -403,9 +401,7 @@ Object {
         The operation was rejected by your operating system.
         It is likely you do not have the permissions to access this file as the current user
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -436,9 +432,7 @@ Object {
         The operation was rejected by your operating system.
         It is likely you do not have the permissions to access this file as the current user
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -469,9 +463,7 @@ Object {
         The operation was rejected by your operating system.
         It is likely you do not have the permissions to access this file as the current user
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -502,9 +494,7 @@ Object {
         The operation was rejected by your operating system.
         It is likely you do not have the permissions to access this file as the current user
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -538,8 +528,7 @@ Object {
       "",
       String(
         
-        Your cache folder contains root-owned files, due to a bug in
-        previous versions of npm which has since been addressed.
+        Your cache folder contains root-owned files, due to a bug in previous versions of npm which has since been addressed.
         
         To permanently fix this problem, please run:
           sudo chown -R 867:5309 "{CWD}/cache"
@@ -567,8 +556,7 @@ Object {
       "",
       String(
         
-        Your cache folder contains root-owned files, due to a bug in
-        previous versions of npm which has since been addressed.
+        Your cache folder contains root-owned files, due to a bug in previous versions of npm which has since been addressed.
         
         To permanently fix this problem, please run:
           sudo chown -R 867:5309 "{CWD}/cache"
@@ -596,8 +584,7 @@ Object {
       "",
       String(
         
-        Your cache folder contains root-owned files, due to a bug in
-        previous versions of npm which has since been addressed.
+        Your cache folder contains root-owned files, due to a bug in previous versions of npm which has since been addressed.
         
         To permanently fix this problem, please run:
           sudo chown -R 867:5309 "{CWD}/cache"
@@ -625,12 +612,9 @@ Object {
       String(
         
         The operation was rejected by your operating system.
-        It's possible that the file was already in use (by a text editor or antivirus),
-        or that you lack permissions to access it.
+        It's possible that the file was already in use (by a text editor or antivirus), or that you lack permissions to access it.
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -659,12 +643,9 @@ Object {
       String(
         
         The operation was rejected by your operating system.
-        It's possible that the file was already in use (by a text editor or antivirus),
-        or that you lack permissions to access it.
+        It's possible that the file was already in use (by a text editor or antivirus), or that you lack permissions to access it.
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -693,12 +674,9 @@ Object {
       String(
         
         The operation was rejected by your operating system.
-        It's possible that the file was already in use (by a text editor or antivirus),
-        or that you lack permissions to access it.
+        It's possible that the file was already in use (by a text editor or antivirus), or that you lack permissions to access it.
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -727,12 +705,9 @@ Object {
       String(
         
         The operation was rejected by your operating system.
-        It's possible that the file was already in use (by a text editor or antivirus),
-        or that you lack permissions to access it.
+        It's possible that the file was already in use (by a text editor or antivirus), or that you lack permissions to access it.
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -761,12 +736,9 @@ Object {
       String(
         
         The operation was rejected by your operating system.
-        It's possible that the file was already in use (by a text editor or antivirus),
-        or that you lack permissions to access it.
+        It's possible that the file was already in use (by a text editor or antivirus), or that you lack permissions to access it.
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -800,12 +772,9 @@ Object {
       String(
         
         The operation was rejected by your operating system.
-        It's possible that the file was already in use (by a text editor or antivirus),
-        or that you lack permissions to access it.
+        It's possible that the file was already in use (by a text editor or antivirus), or that you lack permissions to access it.
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -839,12 +808,9 @@ Object {
       String(
         
         The operation was rejected by your operating system.
-        It's possible that the file was already in use (by a text editor or antivirus),
-        or that you lack permissions to access it.
+        It's possible that the file was already in use (by a text editor or antivirus), or that you lack permissions to access it.
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -878,12 +844,9 @@ Object {
       String(
         
         The operation was rejected by your operating system.
-        It's possible that the file was already in use (by a text editor or antivirus),
-        or that you lack permissions to access it.
+        It's possible that the file was already in use (by a text editor or antivirus), or that you lack permissions to access it.
         
-        If you believe this might be a permissions issue, please double-check the
-        permissions of the file and its containing directories, or try running
-        the command again as root/Administrator.
+        If you believe this might be a permissions issue, please double-check the permissions of the file and its containing directories, or try running the command again as root/Administrator.
       ),
     ],
   ],
@@ -980,8 +943,7 @@ Object {
       "",
       String(
         You can provide a one-time password by passing --otp=<code> to the command you ran.
-        If you already provided a one-time password then it is likely that you either typoed
-        it, or it timed out. Please try again.
+        If you already provided a one-time password then it is likely that you either typoed it, or it timed out. Please try again.
       ),
     ],
   ],
@@ -1001,8 +963,7 @@ Object {
       "",
       String(
         You can provide a one-time password by passing --otp=<code> to the command you ran.
-        If you already provided a one-time password then it is likely that you either typoed
-        it, or it timed out. Please try again.
+        If you already provided a one-time password then it is likely that you either typoed it, or it timed out. Please try again.
       ),
     ],
   ],
@@ -1058,14 +1019,12 @@ Object {
     Array [
       "",
       String(
-        If you were trying to login, change your password, create an
-        authentication token or enable two-factor authentication then
-        that means you likely typed your password in incorrectly.
+        If you were trying to login, change your password, create an authentication token or enable two-factor authentication then that means you likely typed your password in incorrectly.
         Please try again, or recover your password at:
           https://www.npmjs.com/forgot
         
-        If you were doing some other operation then your saved credentials are
-        probably out of date. To correct this please try logging in again with:
+        If you were doing some other operation then your saved credentials are probably out of date.
+        To correct this please try logging in again with:
           npm login
       ),
     ],
@@ -1171,8 +1130,7 @@ Object {
         This is a problem related to network connectivity.
         In most cases you are behind a proxy or have bad network settings.
         
-        If you are behind a proxy, please make sure that the
-        'proxy' config is set properly.  See: 'npm help config'
+        If you are behind a proxy, please make sure that the 'proxy' config is set properly.  See: 'npm help config'
       ),
     ],
   ],
@@ -1194,8 +1152,7 @@ Object {
         This is a problem related to network connectivity.
         In most cases you are behind a proxy or have bad network settings.
         
-        If you are behind a proxy, please make sure that the
-        'proxy' config is set properly.  See: 'npm help config'
+        If you are behind a proxy, please make sure that the 'proxy' config is set properly.  See: 'npm help config'
       ),
     ],
   ],
@@ -1217,8 +1174,7 @@ Object {
         This is a problem related to network connectivity.
         In most cases you are behind a proxy or have bad network settings.
         
-        If you are behind a proxy, please make sure that the
-        'proxy' config is set properly.  See: 'npm help config'
+        If you are behind a proxy, please make sure that the 'proxy' config is set properly.  See: 'npm help config'
       ),
     ],
   ],
@@ -1281,10 +1237,7 @@ Object {
   "detail": Array [
     Array [
       "rofs",
-      String(
-        Often virtualized file systems, or other file systems
-        that don't support symlinks, give this error.
-      ),
+      "Often virtualized file systems, or other file systems that don't support symlinks, give this error.",
     ],
   ],
   "summary": Array [
@@ -1324,7 +1277,7 @@ Object {
       "typeerror",
       String(
         This is an error with npm itself. Please report this error at:
-          https://github.com/npm/cli/issues
+        https://github.com/npm/cli/issues
       ),
     ],
   ],
@@ -1344,7 +1297,7 @@ Object {
       "typeerror",
       String(
         This is an error with npm itself. Please report this error at:
-          https://github.com/npm/cli/issues
+        https://github.com/npm/cli/issues
       ),
     ],
   ],
@@ -1364,7 +1317,7 @@ Object {
       "typeerror",
       String(
         This is an error with npm itself. Please report this error at:
-          https://github.com/npm/cli/issues
+        https://github.com/npm/cli/issues
       ),
     ],
   ],
@@ -1405,7 +1358,7 @@ Object {
       "typeerror",
       String(
         This is an error with npm itself. Please report this error at:
-          https://github.com/npm/cli/issues
+        https://github.com/npm/cli/issues
       ),
     ],
   ],
@@ -1423,10 +1376,7 @@ Object {
   "detail": Array [
     Array [
       "notarget",
-      String(
-        In most cases you or one of your dependencies are requesting
-        a package version that doesn't exist.
-      ),
+      "In most cases you or one of your dependencies are requesting a package version that doesn't exist.",
     ],
   ],
   "summary": Array [
@@ -1443,11 +1393,7 @@ Object {
   "detail": Array [
     Array [
       "403",
-      String(
-        In most cases, you or one of your dependencies are requesting
-        a package version that is forbidden by your security policy, or
-        on a server you do not have access to.
-      ),
+      "In most cases, you or one of your dependencies are requesting a package version that is forbidden by your security policy, or on a server you do not have access to.",
     ],
   ],
   "summary": Array [
@@ -1468,8 +1414,7 @@ Object {
         This is a problem related to network connectivity.
         In most cases you are behind a proxy or have bad network settings.
 
-        If you are behind a proxy, please make sure that the
-        'proxy' config is set properly.  See: 'npm help config'
+        If you are behind a proxy, please make sure that the 'proxy' config is set properly.  See: 'npm help config'
       ),
     ],
   ],
@@ -1489,8 +1434,7 @@ Object {
       "",
       String(
         
-        If you are behind a proxy, please make sure that the
-        'proxy' config is set properly.  See: 'npm help config'
+        If you are behind a proxy, please make sure that the 'proxy' config is set properly.  See: 'npm help config'
       ),
     ],
   ],
@@ -1563,10 +1507,7 @@ Object {
   "detail": Array [
     Array [
       "git",
-      String(
-        Refusing to remove it. Update manually,
-        or move it out of the way first.
-      ),
+      "Refusing to remove it. Update manually, or move it out of the way first.",
     ],
   ],
   "summary": Array [
@@ -1633,8 +1574,7 @@ Object {
         This is a problem related to network connectivity.
         In most cases you are behind a proxy or have bad network settings.
         
-        If you are behind a proxy, please make sure that the
-        'proxy' config is set properly.  See: 'npm help config'
+        If you are behind a proxy, please make sure that the 'proxy' config is set properly.  See: 'npm help config'
       ),
     ],
   ],
diff --git a/deps/npm/tap-snapshots/test/lib/utils/explain-eresolve.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/explain-eresolve.js.test.cjs
index 5190ead244697c..ac3f8607cc6c8e 100644
--- a/deps/npm/tap-snapshots/test/lib/utils/explain-eresolve.js.test.cjs
+++ b/deps/npm/tap-snapshots/test/lib/utils/explain-eresolve.js.test.cjs
@@ -42,9 +42,7 @@ peer @isaacs/testing-peer-dep-conflict-chain-d@"1" from @isaacs/testing-peer-dep
 node_modules/@isaacs/testing-peer-dep-conflict-chain-c
   @isaacs/testing-peer-dep-conflict-chain-c@"1" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic chain-conflict > report with color 1`] = `
@@ -58,9 +56,7 @@ Could not resolve dependency:
 node_modules/@isaacs/testing-peer-dep-conflict-chain-c
   @isaacs/testing-peer-dep-conflict-chain-c@"1" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic chain-conflict > report with no color 1`] = `
@@ -74,9 +70,7 @@ peer @isaacs/testing-peer-dep-conflict-chain-d@"1" from @isaacs/testing-peer-dep
 node_modules/@isaacs/testing-peer-dep-conflict-chain-c
   @isaacs/testing-peer-dep-conflict-chain-c@"1" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic cycleNested > explain with color, depth of 2 1`] = `
@@ -136,9 +130,7 @@ node_modules/@isaacs/peer-dep-cycle-c
     node_modules/@isaacs/peer-dep-cycle-a
       @isaacs/peer-dep-cycle-a@"1.x" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --no-strict-peer-deps, --force, or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --no-strict-peer-deps, --force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic cycleNested > report with color 1`] = `
@@ -159,9 +151,7 @@ Conflicting peer dependency: @isaacs/peer-dep-cycle-c@1.0.0
     node_modules/@isaacs/peer-dep-cycle-a
       @isaacs/peer-dep-cycle-a@"1.x" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --no-strict-peer-deps, --force, or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --no-strict-peer-deps, --force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic cycleNested > report with no color 1`] = `
@@ -182,9 +172,7 @@ node_modules/@isaacs/peer-dep-cycle-c
     node_modules/@isaacs/peer-dep-cycle-a
       @isaacs/peer-dep-cycle-a@"1.x" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --no-strict-peer-deps, --force, or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --no-strict-peer-deps, --force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic eslint-plugin case > explain with color, depth of 2 1`] = `
@@ -256,9 +244,7 @@ node_modules/eslint
   node_modules/eslint-plugin-eslint-plugin
     dev eslint-plugin-eslint-plugin@"^3.1.0" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic eslint-plugin case > report with color 1`] = `
@@ -280,9 +266,7 @@ Conflicting peer dependency: eslint@7.31.0
   node_modules/eslint-plugin-eslint-plugin
     dev eslint-plugin-eslint-plugin@"^3.1.0" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic eslint-plugin case > report with no color 1`] = `
@@ -304,9 +288,7 @@ node_modules/eslint
   node_modules/eslint-plugin-eslint-plugin
     dev eslint-plugin-eslint-plugin@"^3.1.0" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic gatsby > explain with color, depth of 2 1`] = `
@@ -374,9 +356,7 @@ node_modules/ink-box
       node_modules/gatsby
         gatsby@"" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --no-strict-peer-deps, --force, or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --no-strict-peer-deps, --force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic gatsby > report with color 1`] = `
@@ -401,9 +381,7 @@ Could not resolve dependency:
       gatsby-cli@"^2.12.107" from gatsby@2.24.74
       node_modules/gatsby
 
-Fix the upstream dependency conflict, or retry
-this command with --no-strict-peer-deps, --force, or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --no-strict-peer-deps, --force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic gatsby > report with no color 1`] = `
@@ -428,9 +406,7 @@ node_modules/ink-box
       gatsby-cli@"^2.12.107" from gatsby@2.24.74
       node_modules/gatsby
 
-Fix the upstream dependency conflict, or retry
-this command with --no-strict-peer-deps, --force, or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --no-strict-peer-deps, --force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic no current node, but has current edge > explain with color, depth of 2 1`] = `
@@ -464,9 +440,7 @@ peer eslint@"^6.0.0" from eslint-plugin-jsdoc@22.2.0
 node_modules/eslint-plugin-jsdoc
   dev eslint-plugin-jsdoc@"^22.1.0" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic no current node, but has current edge > report with color 1`] = `
@@ -478,9 +452,7 @@ Could not resolve dependency:
 node_modules/eslint-plugin-jsdoc
   dev eslint-plugin-jsdoc@"^22.1.0" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic no current node, but has current edge > report with no color 1`] = `
@@ -492,9 +464,7 @@ peer eslint@"^6.0.0" from eslint-plugin-jsdoc@22.2.0
 node_modules/eslint-plugin-jsdoc
   dev eslint-plugin-jsdoc@"^22.1.0" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic no current node, no current edge, idk > explain with color, depth of 2 1`] = `
@@ -534,9 +504,7 @@ peer eslint@"^6.0.0" from eslint-plugin-jsdoc@22.2.0
 node_modules/eslint-plugin-jsdoc
   dev eslint-plugin-jsdoc@"^22.1.0" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic no current node, no current edge, idk > report with color 1`] = `
@@ -550,9 +518,7 @@ Could not resolve dependency:
 node_modules/eslint-plugin-jsdoc
   dev eslint-plugin-jsdoc@"^22.1.0" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic no current node, no current edge, idk > report with no color 1`] = `
@@ -566,9 +532,7 @@ peer eslint@"^6.0.0" from eslint-plugin-jsdoc@22.2.0
 node_modules/eslint-plugin-jsdoc
   dev eslint-plugin-jsdoc@"^22.1.0" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --force or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic withShrinkwrap > explain with color, depth of 2 1`] = `
@@ -613,9 +577,7 @@ node_modules/@isaacs/peer-dep-cycle-b
   node_modules/@isaacs/peer-dep-cycle-a
     @isaacs/peer-dep-cycle-a@"1.x" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --no-strict-peer-deps, --force, or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --no-strict-peer-deps, --force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic withShrinkwrap > report with color 1`] = `
@@ -631,9 +593,7 @@ Could not resolve dependency:
   node_modules/@isaacs/peer-dep-cycle-a
     @isaacs/peer-dep-cycle-a@"1.x" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --no-strict-peer-deps, --force, or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --no-strict-peer-deps, --force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
 
 exports[`test/lib/utils/explain-eresolve.js TAP basic withShrinkwrap > report with no color 1`] = `
@@ -649,7 +609,5 @@ node_modules/@isaacs/peer-dep-cycle-b
   node_modules/@isaacs/peer-dep-cycle-a
     @isaacs/peer-dep-cycle-a@"1.x" from the root project
 
-Fix the upstream dependency conflict, or retry
-this command with --no-strict-peer-deps, --force, or --legacy-peer-deps
-to accept an incorrect (and potentially broken) dependency resolution.
+Fix the upstream dependency conflict, or retry this command with --no-strict-peer-deps, --force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
 `
diff --git a/deps/npm/test/lib/base-cmd.js b/deps/npm/test/lib/base-cmd.js
index 21e83d729b0b8c..41bade7298b900 100644
--- a/deps/npm/test/lib/base-cmd.js
+++ b/deps/npm/test/lib/base-cmd.js
@@ -221,6 +221,7 @@ t.test('getUsage() with no params and no definitions', async t => {
   class TestCommand extends BaseCommand {
     static name = 'test-command'
     static description = 'Test command description'
+    static usage = ['']
   }
 
   const usage = TestCommand.describeUsage
diff --git a/deps/npm/test/lib/commands/ls.js b/deps/npm/test/lib/commands/ls.js
index 1de85b8cfd0959..ab98773bc68e5c 100644
--- a/deps/npm/test/lib/commands/ls.js
+++ b/deps/npm/test/lib/commands/ls.js
@@ -5301,3 +5301,107 @@ t.test('completion', async t => {
   const res = await ls.completion({ conf: { argv: { remain: ['npm', 'ls'] } } })
   t.type(res, Array)
 })
+
+t.test('ls --install-strategy=linked', async t => {
+  t.test('should not report undeclared workspaces as UNMET DEPENDENCY', async t => {
+    const { result, ls } = await mockLs(t, {
+      config: {
+        'install-strategy': 'linked',
+      },
+      prefixDir: {
+        'package.json': JSON.stringify({
+          name: 'test-linked-ws',
+          version: '1.0.0',
+          workspaces: ['packages/*'],
+          dependencies: { 'workspace-a': '*' },
+        }),
+        packages: {
+          'workspace-a': {
+            'package.json': JSON.stringify({
+              name: 'workspace-a',
+              version: '1.0.0',
+            }),
+          },
+          'workspace-b': {
+            'package.json': JSON.stringify({
+              name: 'workspace-b',
+              version: '1.0.0',
+            }),
+          },
+        },
+        node_modules: {
+          'workspace-a': t.fixture('symlink', '../packages/workspace-a'),
+          // workspace-b intentionally NOT linked (undeclared in dependencies)
+        },
+      },
+    })
+    await ls.exec([])
+    const output = cleanCwd(result())
+    t.notMatch(output, /UNMET DEPENDENCY/, 'should not report undeclared workspace as UNMET DEPENDENCY')
+    t.match(output, /workspace-a/, 'should list declared workspace')
+  })
+
+  t.test('should not report devDeps of store packages as UNMET DEPENDENCY', async t => {
+    const { result, ls } = await mockLs(t, {
+      config: {
+        'install-strategy': 'linked',
+      },
+      prefixDir: {
+        'package.json': JSON.stringify({
+          name: 'test-linked-store',
+          version: '1.0.0',
+          dependencies: { nopt: '^1.0.0' },
+        }),
+        node_modules: {
+          nopt: t.fixture('symlink', '.store/nopt@1.0.0/node_modules/nopt'),
+          '.store': {
+            'nopt@1.0.0': {
+              node_modules: {
+                nopt: {
+                  'package.json': JSON.stringify({
+                    name: 'nopt',
+                    version: '1.0.0',
+                    devDependencies: { tap: '^16.0.0' },
+                  }),
+                },
+              },
+            },
+          },
+        },
+      },
+    })
+    await ls.exec([])
+    const output = cleanCwd(result())
+    t.notMatch(output, /UNMET DEPENDENCY/, 'should not report devDeps of store packages')
+    t.match(output, /nopt/, 'should list the dependency')
+  })
+
+  t.test('should still report declared workspace as UNMET DEPENDENCY when missing', async t => {
+    const { ls } = await mockLs(t, {
+      config: {
+        'install-strategy': 'linked',
+      },
+      prefixDir: {
+        'package.json': JSON.stringify({
+          name: 'test-linked-ws-missing',
+          version: '1.0.0',
+          workspaces: ['packages/*'],
+          dependencies: { 'workspace-a': '*' },
+        }),
+        packages: {
+          'workspace-a': {
+            'package.json': JSON.stringify({
+              name: 'workspace-a',
+              version: '1.0.0',
+            }),
+          },
+        },
+        node_modules: {
+          // workspace-a is declared but its symlink is missing
+        },
+      },
+    })
+    await t.rejects(ls.exec([]), { code: 'ELSPROBLEMS' },
+      'should report declared workspace as UNMET DEPENDENCY')
+  })
+})

From 3d87ecacbce9d322b7dbc5aa2471851aae412ebf Mon Sep 17 00:00:00 2001
From: tannal <tannal2409@gmail.com>
Date: Tue, 3 Mar 2026 07:14:47 +0800
Subject: [PATCH 181/267] cli: add --max-heap-size option
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/58708
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
---
 doc/api/cli.md                         |  7 ++++
 src/node_options.cc                    |  1 +
 test/common/v8-max-heap-size-option.js | 49 ++++++++++++++++++++++++++
 3 files changed, 57 insertions(+)
 create mode 100644 test/common/v8-max-heap-size-option.js

diff --git a/doc/api/cli.md b/doc/api/cli.md
index d6409347d8f00c..0877615700df41 100644
--- a/doc/api/cli.md
+++ b/doc/api/cli.md
@@ -3612,6 +3612,7 @@ V8 options that are allowed are:
 * `--expose-gc`
 * `--interpreted-frames-native-stack`
 * `--jitless`
+* `--max-heap-size`
 * `--max-old-space-size`
 * `--max-semi-space-size`
 * `--perf-basic-prof-only-functions`
@@ -3968,6 +3969,12 @@ documented here:
 
 ### `--jitless`
 
+### `--max-heap-size`
+
+Specifies the maximum heap size (in megabytes) for the process.
+
+This option is typically used to limit the amount of memory the process can use for its JavaScript heap.
+
 <!-- Anchor to make sure old links find a target -->
 
 <a id="--max-old-space-sizesize-in-megabytes"></a>
diff --git a/src/node_options.cc b/src/node_options.cc
index 02cc4fde90e7cd..79d7c8cac002ba 100644
--- a/src/node_options.cc
+++ b/src/node_options.cc
@@ -1157,6 +1157,7 @@ PerIsolateOptionsParser::PerIsolateOptionsParser(
             "help system profilers to translate JavaScript interpreted frames",
             V8Option{},
             kAllowedInEnvvar);
+  AddOption("--max-heap-size", "", V8Option{}, kAllowedInEnvvar);
   AddOption("--max-old-space-size", "", V8Option{}, kAllowedInEnvvar);
   AddOption("--max-old-space-size-percentage",
             "set V8's max old space size as a percentage of available memory "
diff --git a/test/common/v8-max-heap-size-option.js b/test/common/v8-max-heap-size-option.js
new file mode 100644
index 00000000000000..4487b011a97cdf
--- /dev/null
+++ b/test/common/v8-max-heap-size-option.js
@@ -0,0 +1,49 @@
+'use strict';
+
+const assert = require('assert');
+const { spawnSync } = require('child_process');
+const path = require('path');
+const fs = require('fs');
+const tmpdir = require('./tmpdir');
+
+const testScript = `
+  const v8 = require('v8');
+  const stats = v8.getHeapStatistics();
+  const maxHeapSizeMB = Math.round(stats.heap_size_limit / 1024 / 1024);
+  console.log(maxHeapSizeMB);
+`;
+
+tmpdir.refresh();
+const scriptPath = path.join(tmpdir.path, 'heap-limit-test.js');
+fs.writeFileSync(scriptPath, testScript);
+
+const child = spawnSync(
+  process.execPath,
+  [scriptPath],
+  {
+    encoding: 'utf8',
+    env: {
+      ...process.env,
+      NODE_OPTIONS: '--max-heap-size=750',
+    },
+  },
+);
+
+assert.strictEqual(
+  child.status,
+  0,
+  [
+    `Child process did not exit cleanly.`,
+    `  Exit code: ${child.status}`,
+    child.stderr ? `  Stderr: ${child.stderr.toString()}` : '',
+    child.stdout ? `  Stdout: ${child.stdout.toString()}` : '',
+  ].filter(Boolean).join('\n'),
+);
+const output = child.stdout.trim();
+const heapLimit = Number(output);
+
+assert.strictEqual(
+  heapLimit,
+  750,
+  `max heap size is ${heapLimit}MB, expected 750MB`,
+);

From 4691f3e7fbb53bdcfd902988b4458a5a0146d0b1 Mon Sep 17 00:00:00 2001
From: Stefan Stojanovic <StefanStojanovic@users.noreply.github.com>
Date: Tue, 10 Mar 2026 15:11:23 +0100
Subject: [PATCH 182/267] fs: fix cpSync to handle non-ASCII characters

Fixes: https://github.com/nodejs/node/issues/61878
PR-URL: https://github.com/nodejs/node/pull/61950
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 src/node_file.cc                              | 16 +++++++++----
 .../parallel/test-fs-cp-sync-unicode-dest.mjs | 23 +++++++++++++++++++
 2 files changed, 34 insertions(+), 5 deletions(-)
 create mode 100644 test/parallel/test-fs-cp-sync-unicode-dest.mjs

diff --git a/src/node_file.cc b/src/node_file.cc
index 1538b231f2276f..65bd2661bbceba 100644
--- a/src/node_file.cc
+++ b/src/node_file.cc
@@ -3423,15 +3423,18 @@ static void CpSyncOverrideFile(const FunctionCallbackInfo<Value>& args) {
   THROW_IF_INSUFFICIENT_PERMISSIONS(
       env, permission::PermissionScope::kFileSystemWrite, dest.ToStringView());
 
+  auto src_path = src.ToPath();
+  auto dest_path = dest.ToPath();
+
   std::error_code error;
 
-  if (!std::filesystem::remove(*dest, error)) {
+  if (!std::filesystem::remove(dest_path, error)) {
     return env->ThrowStdErrException(error, "unlink", *dest);
   }
 
   if (mode == 0) {
     // if no mode is specified use the faster std::filesystem API
-    if (!std::filesystem::copy_file(*src, *dest, error)) {
+    if (!std::filesystem::copy_file(src_path, dest_path, error)) {
       return env->ThrowStdErrException(error, "cp", *dest);
     }
   } else {
@@ -3444,7 +3447,7 @@ static void CpSyncOverrideFile(const FunctionCallbackInfo<Value>& args) {
   }
 
   if (preserve_timestamps) {
-    CopyUtimes(*src, *dest, env);
+    CopyUtimes(src_path, dest_path, env);
   }
 }
 
@@ -3487,8 +3490,11 @@ static void CpSyncCopyDir(const FunctionCallbackInfo<Value>& args) {
   bool verbatim_symlinks = args[5]->IsTrue();
   bool preserve_timestamps = args[6]->IsTrue();
 
+  auto src_path = src.ToPath();
+  auto dest_path = dest.ToPath();
+
   std::error_code error;
-  std::filesystem::create_directories(*dest, error);
+  std::filesystem::create_directories(dest_path, error);
   if (error) {
     return env->ThrowStdErrException(error, "cp", *dest);
   }
@@ -3630,7 +3636,7 @@ static void CpSyncCopyDir(const FunctionCallbackInfo<Value>& args) {
     return true;
   };
 
-  copy_dir_contents(std::filesystem::path(*src), std::filesystem::path(*dest));
+  copy_dir_contents(src_path, dest_path);
 }
 
 BindingData::FilePathIsFileReturnType BindingData::FilePathIsFile(
diff --git a/test/parallel/test-fs-cp-sync-unicode-dest.mjs b/test/parallel/test-fs-cp-sync-unicode-dest.mjs
new file mode 100644
index 00000000000000..0638b98180c5da
--- /dev/null
+++ b/test/parallel/test-fs-cp-sync-unicode-dest.mjs
@@ -0,0 +1,23 @@
+// Regression test for https://github.com/nodejs/node/issues/61878
+// fs.cpSync should copy files when destination path has UTF characters.
+import '../common/index.mjs';
+import { cpSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
+import { join } from 'node:path';
+import assert from 'node:assert';
+import tmpdir from '../common/tmpdir.js';
+
+tmpdir.refresh();
+
+const src = join(tmpdir.path, 'src');
+mkdirSync(join(src, 'subdir'), { recursive: true });
+writeFileSync(join(src, 'file1.txt'), 'Hello World');
+writeFileSync(join(src, 'subdir', 'nested.txt'), 'Nested File');
+
+const dest = join(tmpdir.path, 'Eyjafjallajökull-Pranckevičius');
+cpSync(src, dest, { recursive: true, force: true });
+
+const destFiles = readdirSync(dest);
+assert.ok(destFiles.includes('file1.txt'));
+assert.strictEqual(readFileSync(join(dest, 'file1.txt'), 'utf8'), 'Hello World');
+assert.ok(destFiles.includes('subdir'));
+assert.strictEqual(readFileSync(join(dest, 'subdir', 'nested.txt'), 'utf8'), 'Nested File');

From 795d663ff42ff1ad82b83588771567c7b2a7c39a Mon Sep 17 00:00:00 2001
From: Antoine du Hamel <duhamelantoine1995@gmail.com>
Date: Wed, 11 Mar 2026 15:15:24 +0100
Subject: [PATCH 183/267] tools: keep GN files when updating Merve

PR-URL: https://github.com/nodejs/node/pull/62167
Reviewed-By: Shelley Vohr <shelley.vohr@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 tools/dep_updaters/update-merve.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/dep_updaters/update-merve.sh b/tools/dep_updaters/update-merve.sh
index ec0525aadb48b6..31d9b15148ad5d 100755
--- a/tools/dep_updaters/update-merve.sh
+++ b/tools/dep_updaters/update-merve.sh
@@ -54,8 +54,8 @@ rm "$MERVE_ZIP"
 
 curl -sL -o "$MERVE_LICENSE" "https://raw.githubusercontent.com/anonrig/merve/HEAD/LICENSE-MIT"
 
-echo "Replacing existing merve (except GYP build files)"
-mv "$DEPS_DIR/merve/merve.gyp" "$WORKSPACE/"
+echo "Replacing existing merve (except GYP/GN build files)"
+mv "$DEPS_DIR/merve/merve.gyp" "$DEPS_DIR/merve/BUILD.gn" "$DEPS_DIR/merve/unofficial.gni" "$WORKSPACE/"
 rm -rf "$DEPS_DIR/merve"
 mv "$WORKSPACE" "$DEPS_DIR/merve"
 

From 20cb932bcf40bbcbbc1ba6f0b03eb15640091f92 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Wed, 11 Mar 2026 19:23:21 +0100
Subject: [PATCH 184/267] crypto: read algorithm name property only once in
 normalizeAlgorithm

PR-URL: https://github.com/nodejs/node/pull/62170
Refs: https://redirect.github.com/web-platform-tests/wpt/pull/57614#pullrequestreview-3808145365
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
---
 lib/internal/crypto/util.js          | 11 ++++++----
 test/parallel/test-webcrypto-util.js | 32 ++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 4 deletions(-)

diff --git a/lib/internal/crypto/util.js b/lib/internal/crypto/util.js
index 5ec1d409ec05b9..96abe6a04b28e1 100644
--- a/lib/internal/crypto/util.js
+++ b/lib/internal/crypto/util.js
@@ -565,10 +565,13 @@ function normalizeAlgorithm(algorithm, op) {
     return { name: algName };
 
   // 6.
-  const normalizedAlgorithm = webidl.converters[desiredType](algorithm, {
-    prefix: 'Failed to normalize algorithm',
-    context: 'passed algorithm',
-  });
+  const normalizedAlgorithm = webidl.converters[desiredType](
+    { __proto__: algorithm, name: algName },
+    {
+      prefix: 'Failed to normalize algorithm',
+      context: 'passed algorithm',
+    },
+  );
   // 7.
   normalizedAlgorithm.name = algName;
 
diff --git a/test/parallel/test-webcrypto-util.js b/test/parallel/test-webcrypto-util.js
index b8d5361433fd0e..89d8575e20ddbd 100644
--- a/test/parallel/test-webcrypto-util.js
+++ b/test/parallel/test-webcrypto-util.js
@@ -17,3 +17,35 @@ const {
   assert.strictEqual(normalizeAlgorithm(algorithm, 'sign') !== algorithm, true);
   assert.deepStrictEqual(algorithm, { name: 'ECDSA', hash: 'SHA-256' });
 }
+
+// The algorithm name getter should only be invoked once during
+// normalizeAlgorithm, including for algorithms with a non-null desiredType
+// where step 6 runs the specialized dictionary converter.
+// Refs: https://github.com/web-platform-tests/wpt/pull/57614#pullrequestreview-3808145365
+{
+  let nameReadCount = 0;
+  const algorithm = {
+    get name() {
+      nameReadCount++;
+      return 'AES-GCM';
+    },
+    iv: new Uint8Array(12),
+  };
+  const normalized = normalizeAlgorithm(algorithm, 'encrypt');
+  assert.strictEqual(normalized.name, 'AES-GCM');
+  assert.strictEqual(nameReadCount, 1);
+}
+
+{
+  let nameReadCount = 0;
+  const algorithm = {
+    get name() {
+      nameReadCount++;
+      return 'ECDSA';
+    },
+    hash: 'SHA-256',
+  };
+  const normalized = normalizeAlgorithm(algorithm, 'sign');
+  assert.strictEqual(normalized.name, 'ECDSA');
+  assert.strictEqual(nameReadCount, 1);
+}

From 8aa6e706df2ca167630bf98c66c2d93a7406cb35 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Wed, 11 Mar 2026 19:43:14 +0100
Subject: [PATCH 185/267] crypto: refactor WebCrypto AEAD algorithms auth tag
 handling

PR-URL: https://github.com/nodejs/node/pull/62169
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
---
 lib/internal/crypto/aes.js                    | 64 ++-----------
 lib/internal/crypto/chacha20_poly1305.js      | 31 +------
 src/crypto/crypto_aes.cc                      | 85 ++++++-----------
 src/crypto/crypto_aes.h                       |  1 -
 src/crypto/crypto_chacha20_poly1305.cc        | 91 +++----------------
 src/crypto/crypto_chacha20_poly1305.h         |  1 -
 ...pto-webcrypto-aes-decrypt-tag-too-small.js |  1 -
 ...-webcrypto-aead-decrypt-detached-buffer.js | 42 +++++++++
 ...rypto-encrypt-decrypt-chacha20-poly1305.js |  2 +-
 9 files changed, 91 insertions(+), 227 deletions(-)
 create mode 100644 test/parallel/test-webcrypto-aead-decrypt-detached-buffer.js

diff --git a/lib/internal/crypto/aes.js b/lib/internal/crypto/aes.js
index 0474060d394c99..c0765f75642189 100644
--- a/lib/internal/crypto/aes.js
+++ b/lib/internal/crypto/aes.js
@@ -1,12 +1,9 @@
 'use strict';
 
 const {
-  ArrayBufferIsView,
-  ArrayBufferPrototypeSlice,
   ArrayFrom,
   ArrayPrototypePush,
   SafeSet,
-  TypedArrayPrototypeSlice,
 } = primordials;
 
 const {
@@ -28,8 +25,6 @@ const {
   kKeyVariantAES_GCM_256,
   kKeyVariantAES_KW_256,
   kKeyVariantAES_OCB_256,
-  kWebCryptoCipherDecrypt,
-  kWebCryptoCipherEncrypt,
 } = internalBinding('crypto');
 
 const {
@@ -143,80 +138,33 @@ function asyncAesKwCipher(mode, key, data) {
     getVariant('AES-KW', key[kAlgorithm].length)));
 }
 
-async function asyncAesGcmCipher(mode, key, data, algorithm) {
+function asyncAesGcmCipher(mode, key, data, algorithm) {
   const { tagLength = 128 } = algorithm;
-
   const tagByteLength = tagLength / 8;
-  let tag;
-  switch (mode) {
-    case kWebCryptoCipherDecrypt: {
-      const slice = ArrayBufferIsView(data) ?
-        TypedArrayPrototypeSlice : ArrayBufferPrototypeSlice;
-      tag = slice(data, -tagByteLength);
-
-      // Refs: https://www.w3.org/TR/WebCryptoAPI/#aes-gcm-operations
-      //
-      // > If *plaintext* has a length less than *tagLength* bits, then `throw`
-      // > an `OperationError`.
-      if (tagByteLength > tag.byteLength) {
-        throw lazyDOMException(
-          'The provided data is too small.',
-          'OperationError');
-      }
 
-      data = slice(data, 0, -tagByteLength);
-      break;
-    }
-    case kWebCryptoCipherEncrypt:
-      tag = tagByteLength;
-      break;
-  }
-
-  return await jobPromise(() => new AESCipherJob(
+  return jobPromise(() => new AESCipherJob(
     kCryptoJobAsync,
     mode,
     key[kKeyObject][kHandle],
     data,
     getVariant('AES-GCM', key[kAlgorithm].length),
     algorithm.iv,
-    tag,
+    tagByteLength,
     algorithm.additionalData));
 }
 
-async function asyncAesOcbCipher(mode, key, data, algorithm) {
+function asyncAesOcbCipher(mode, key, data, algorithm) {
   const { tagLength = 128 } = algorithm;
-
   const tagByteLength = tagLength / 8;
-  let tag;
-  switch (mode) {
-    case kWebCryptoCipherDecrypt: {
-      const slice = ArrayBufferIsView(data) ?
-        TypedArrayPrototypeSlice : ArrayBufferPrototypeSlice;
-      tag = slice(data, -tagByteLength);
-
-      // Similar to GCM, OCB requires the tag to be present for decryption
-      if (tagByteLength > tag.byteLength) {
-        throw lazyDOMException(
-          'The provided data is too small.',
-          'OperationError');
-      }
 
-      data = slice(data, 0, -tagByteLength);
-      break;
-    }
-    case kWebCryptoCipherEncrypt:
-      tag = tagByteLength;
-      break;
-  }
-
-  return await jobPromise(() => new AESCipherJob(
+  return jobPromise(() => new AESCipherJob(
     kCryptoJobAsync,
     mode,
     key[kKeyObject][kHandle],
     data,
     getVariant('AES-OCB', key.algorithm.length),
     algorithm.iv,
-    tag,
+    tagByteLength,
     algorithm.additionalData));
 }
 
diff --git a/lib/internal/crypto/chacha20_poly1305.js b/lib/internal/crypto/chacha20_poly1305.js
index 0979d7aaddbb61..a2b7c1fb04fb89 100644
--- a/lib/internal/crypto/chacha20_poly1305.js
+++ b/lib/internal/crypto/chacha20_poly1305.js
@@ -1,19 +1,14 @@
 'use strict';
 
 const {
-  ArrayBufferIsView,
-  ArrayBufferPrototypeSlice,
   ArrayFrom,
   SafeSet,
-  TypedArrayPrototypeSlice,
 } = primordials;
 
 const {
   ChaCha20Poly1305CipherJob,
   KeyObjectHandle,
   kCryptoJobAsync,
-  kWebCryptoCipherDecrypt,
-  kWebCryptoCipherEncrypt,
 } = internalBinding('crypto');
 
 const {
@@ -46,35 +41,13 @@ function validateKeyLength(length) {
     throw lazyDOMException('Invalid key length', 'DataError');
 }
 
-async function c20pCipher(mode, key, data, algorithm) {
-  let tag;
-  switch (mode) {
-    case kWebCryptoCipherDecrypt: {
-      const slice = ArrayBufferIsView(data) ?
-        TypedArrayPrototypeSlice : ArrayBufferPrototypeSlice;
-
-      if (data.byteLength < 16) {
-        throw lazyDOMException(
-          'The provided data is too small.',
-          'OperationError');
-      }
-
-      tag = slice(data, -16);
-      data = slice(data, 0, -16);
-      break;
-    }
-    case kWebCryptoCipherEncrypt:
-      tag = 16;
-      break;
-  }
-
-  return await jobPromise(() => new ChaCha20Poly1305CipherJob(
+function c20pCipher(mode, key, data, algorithm) {
+  return jobPromise(() => new ChaCha20Poly1305CipherJob(
     kCryptoJobAsync,
     mode,
     key[kKeyObject][kHandle],
     data,
     algorithm.iv,
-    tag,
     algorithm.additionalData));
 }
 
diff --git a/src/crypto/crypto_aes.cc b/src/crypto/crypto_aes.cc
index b5495e59737eb6..fa619696ffd5b2 100644
--- a/src/crypto/crypto_aes.cc
+++ b/src/crypto/crypto_aes.cc
@@ -76,24 +76,28 @@ WebCryptoCipherStatus AES_Cipher(Environment* env,
   }
 
   size_t tag_len = 0;
+  size_t data_len = in.size();
 
   if (params.cipher.isGcmMode() || params.cipher.isOcbMode()) {
+    tag_len = params.length;
     switch (cipher_mode) {
       case kWebCryptoCipherDecrypt: {
-        // If in decrypt mode, the auth tag must be set in the params.tag.
-        CHECK(params.tag);
+        // In decrypt mode, the auth tag is appended to the end of the
+        // ciphertext. Split it off and set it on the cipher context.
+        if (data_len < tag_len) {
+          return WebCryptoCipherStatus::FAILED;
+        }
+        data_len -= tag_len;
 
-        // For OCB mode, we need to set the auth tag length before setting the
-        // tag
         if (params.cipher.isOcbMode()) {
-          if (!ctx.setAeadTagLength(params.tag.size())) {
+          if (!ctx.setAeadTagLength(tag_len)) {
             return WebCryptoCipherStatus::FAILED;
           }
         }
 
         ncrypto::Buffer<const char> buffer = {
-            .data = params.tag.data<char>(),
-            .len = params.tag.size(),
+            .data = in.data<char>() + data_len,
+            .len = tag_len,
         };
         if (!ctx.setAeadTag(buffer)) {
           return WebCryptoCipherStatus::FAILED;
@@ -101,14 +105,6 @@ WebCryptoCipherStatus AES_Cipher(Environment* env,
         break;
       }
       case kWebCryptoCipherEncrypt: {
-        // In encrypt mode, we grab the tag length here. We'll use it to
-        // ensure that that allocated buffer has enough room for both the
-        // final block and the auth tag. Unlike our other AES-GCM implementation
-        // in CipherBase, in WebCrypto, the auth tag is concatenated to the end
-        // of the generated ciphertext and returned in the same ArrayBuffer.
-        tag_len = params.length;
-
-        // For OCB mode, we need to set the auth tag length
         if (params.cipher.isOcbMode()) {
           if (!ctx.setAeadTagLength(tag_len)) {
             return WebCryptoCipherStatus::FAILED;
@@ -122,7 +118,7 @@ WebCryptoCipherStatus AES_Cipher(Environment* env,
   }
 
   size_t total = 0;
-  int buf_len = in.size() + ctx.getBlockSize() + tag_len;
+  int buf_len = data_len + ctx.getBlockSize() + (encrypt ? tag_len : 0);
   int out_len;
 
   ncrypto::Buffer<const unsigned char> buffer = {
@@ -148,9 +144,9 @@ WebCryptoCipherStatus AES_Cipher(Environment* env,
   // Refs: https://github.com/nodejs/node/pull/38913#issuecomment-866505244
   buffer = {
       .data = in.data<unsigned char>(),
-      .len = in.size(),
+      .len = data_len,
   };
-  if (in.empty()) {
+  if (data_len == 0) {
     out_len = 0;
   } else if (!ctx.update(buffer, ptr, &out_len)) {
     return WebCryptoCipherStatus::FAILED;
@@ -381,42 +377,17 @@ bool ValidateCounter(
   return true;
 }
 
-bool ValidateAuthTag(
-    Environment* env,
-    CryptoJobMode mode,
-    WebCryptoCipherMode cipher_mode,
-    Local<Value> value,
-    AESCipherConfig* params) {
-  switch (cipher_mode) {
-    case kWebCryptoCipherDecrypt: {
-      if (!IsAnyBufferSource(value)) {
-        THROW_ERR_CRYPTO_INVALID_TAG_LENGTH(env);
-        return false;
-      }
-      ArrayBufferOrViewContents<char> tag_contents(value);
-      if (!tag_contents.CheckSizeInt32()) [[unlikely]] {
-        THROW_ERR_OUT_OF_RANGE(env, "tagLength is too big");
-        return false;
-      }
-      params->tag = mode == kCryptoJobAsync
-          ? tag_contents.ToCopy()
-          : tag_contents.ToByteSource();
-      break;
-    }
-    case kWebCryptoCipherEncrypt: {
-      if (!value->IsUint32()) {
-        THROW_ERR_CRYPTO_INVALID_TAG_LENGTH(env);
-        return false;
-      }
-      params->length = value.As<Uint32>()->Value();
-      if (params->length > 128) {
-        THROW_ERR_CRYPTO_INVALID_TAG_LENGTH(env);
-        return false;
-      }
-      break;
-    }
-    default:
-      UNREACHABLE();
+bool ValidateAuthTag(Environment* env,
+                     Local<Value> value,
+                     AESCipherConfig* params) {
+  if (!value->IsUint32()) {
+    THROW_ERR_CRYPTO_INVALID_TAG_LENGTH(env);
+    return false;
+  }
+  params->length = value.As<Uint32>()->Value();
+  if (params->length > 128) {
+    THROW_ERR_CRYPTO_INVALID_TAG_LENGTH(env);
+    return false;
   }
   return true;
 }
@@ -451,8 +422,7 @@ AESCipherConfig::AESCipherConfig(AESCipherConfig&& other) noexcept
       cipher(other.cipher),
       length(other.length),
       iv(std::move(other.iv)),
-      additional_data(std::move(other.additional_data)),
-      tag(std::move(other.tag)) {}
+      additional_data(std::move(other.additional_data)) {}
 
 AESCipherConfig& AESCipherConfig::operator=(AESCipherConfig&& other) noexcept {
   if (&other == this) return *this;
@@ -466,7 +436,6 @@ void AESCipherConfig::MemoryInfo(MemoryTracker* tracker) const {
   if (mode == kCryptoJobAsync) {
     tracker->TrackFieldWithSize("iv", iv.size());
     tracker->TrackFieldWithSize("additional_data", additional_data.size());
-    tracker->TrackFieldWithSize("tag", tag.size());
   }
 }
 
@@ -510,7 +479,7 @@ Maybe<void> AESCipherTraits::AdditionalConfig(
         return Nothing<void>();
       }
     } else if (params->cipher.isGcmMode() || params->cipher.isOcbMode()) {
-      if (!ValidateAuthTag(env, mode, cipher_mode, args[offset + 2], params) ||
+      if (!ValidateAuthTag(env, args[offset + 2], params) ||
           !ValidateAdditionalData(env, mode, args[offset + 3], params)) {
         return Nothing<void>();
       }
diff --git a/src/crypto/crypto_aes.h b/src/crypto/crypto_aes.h
index 401ef70a5eba9f..5627f9020bad54 100644
--- a/src/crypto/crypto_aes.h
+++ b/src/crypto/crypto_aes.h
@@ -52,7 +52,6 @@ struct AESCipherConfig final : public MemoryRetainer {
   size_t length;
   ByteSource iv;  // Used for both iv or counter
   ByteSource additional_data;
-  ByteSource tag;  // Used only for authenticated modes (GCM)
 
   AESCipherConfig() = default;
 
diff --git a/src/crypto/crypto_chacha20_poly1305.cc b/src/crypto/crypto_chacha20_poly1305.cc
index bfe904c49ad771..0fd3e0517317ca 100644
--- a/src/crypto/crypto_chacha20_poly1305.cc
+++ b/src/crypto/crypto_chacha20_poly1305.cc
@@ -54,63 +54,6 @@ bool ValidateIV(Environment* env,
   return true;
 }
 
-bool ValidateAuthTag(Environment* env,
-                     CryptoJobMode mode,
-                     WebCryptoCipherMode cipher_mode,
-                     Local<Value> value,
-                     ChaCha20Poly1305CipherConfig* params) {
-  switch (cipher_mode) {
-    case kWebCryptoCipherDecrypt: {
-      if (!IsAnyBufferSource(value)) {
-        THROW_ERR_CRYPTO_INVALID_TAG_LENGTH(
-            env, "Authentication tag must be a buffer");
-        return false;
-      }
-
-      ArrayBufferOrViewContents<unsigned char> tag(value);
-      if (!tag.CheckSizeInt32()) [[unlikely]] {
-        THROW_ERR_OUT_OF_RANGE(env, "tag is too large");
-        return false;
-      }
-
-      if (tag.size() != kChaCha20Poly1305TagSize) {
-        THROW_ERR_CRYPTO_INVALID_TAG_LENGTH(
-            env, "Invalid authentication tag length");
-        return false;
-      }
-
-      if (mode == kCryptoJobAsync) {
-        params->tag = tag.ToCopy();
-      } else {
-        params->tag = tag.ToByteSource();
-      }
-      break;
-    }
-    case kWebCryptoCipherEncrypt: {
-      // For encryption, the value should be the tag length (passed from
-      // JavaScript) We expect it to be the tag size constant for
-      // ChaCha20-Poly1305
-      if (!value->IsUint32()) {
-        THROW_ERR_CRYPTO_INVALID_TAG_LENGTH(env, "Tag length must be a number");
-        return false;
-      }
-
-      uint32_t tag_length = value.As<v8::Uint32>()->Value();
-      if (tag_length != kChaCha20Poly1305TagSize) {
-        THROW_ERR_CRYPTO_INVALID_TAG_LENGTH(
-            env, "Invalid tag length for ChaCha20-Poly1305");
-        return false;
-      }
-      // Tag is generated during encryption, not provided
-      break;
-    }
-    default:
-      UNREACHABLE();
-  }
-
-  return true;
-}
-
 bool ValidateAdditionalData(Environment* env,
                             CryptoJobMode mode,
                             Local<Value> value,
@@ -138,8 +81,7 @@ ChaCha20Poly1305CipherConfig::ChaCha20Poly1305CipherConfig(
     : mode(other.mode),
       cipher(other.cipher),
       iv(std::move(other.iv)),
-      additional_data(std::move(other.additional_data)),
-      tag(std::move(other.tag)) {}
+      additional_data(std::move(other.additional_data)) {}
 
 ChaCha20Poly1305CipherConfig& ChaCha20Poly1305CipherConfig::operator=(
     ChaCha20Poly1305CipherConfig&& other) noexcept {
@@ -154,7 +96,6 @@ void ChaCha20Poly1305CipherConfig::MemoryInfo(MemoryTracker* tracker) const {
   if (mode == kCryptoJobAsync) {
     tracker->TrackFieldWithSize("iv", iv.size());
     tracker->TrackFieldWithSize("additional_data", additional_data.size());
-    tracker->TrackFieldWithSize("tag", tag.size());
   }
 }
 
@@ -179,17 +120,9 @@ Maybe<void> ChaCha20Poly1305CipherTraits::AdditionalConfig(
     return Nothing<void>();
   }
 
-  // Authentication tag parameter (only for decryption) or tag length (for
-  // encryption)
-  if (static_cast<unsigned int>(args.Length()) > offset + 1) {
-    if (!ValidateAuthTag(env, mode, cipher_mode, args[offset + 1], params)) {
-      return Nothing<void>();
-    }
-  }
-
   // Additional authenticated data parameter (optional)
-  if (static_cast<unsigned int>(args.Length()) > offset + 2) {
-    if (!ValidateAdditionalData(env, mode, args[offset + 2], params)) {
+  if (static_cast<unsigned int>(args.Length()) > offset + 1) {
+    if (!ValidateAdditionalData(env, mode, args[offset + 1], params)) {
       return Nothing<void>();
     }
   }
@@ -229,23 +162,25 @@ WebCryptoCipherStatus ChaCha20Poly1305CipherTraits::DoCipher(
     return WebCryptoCipherStatus::FAILED;
   }
 
-  size_t tag_len = 0;
+  size_t tag_len = kChaCha20Poly1305TagSize;
+  size_t data_len = in.size();
 
   switch (cipher_mode) {
     case kWebCryptoCipherDecrypt: {
-      if (params.tag.size() != kChaCha20Poly1305TagSize) {
+      if (data_len < tag_len) {
         return WebCryptoCipherStatus::FAILED;
       }
+      data_len -= tag_len;
+
       if (!ctx.setAeadTag(ncrypto::Buffer<const char>{
-              .data = params.tag.data<char>(),
-              .len = params.tag.size(),
+              .data = in.data<char>() + data_len,
+              .len = tag_len,
           })) {
         return WebCryptoCipherStatus::FAILED;
       }
       break;
     }
     case kWebCryptoCipherEncrypt: {
-      tag_len = kChaCha20Poly1305TagSize;
       break;
     }
     default:
@@ -253,7 +188,7 @@ WebCryptoCipherStatus ChaCha20Poly1305CipherTraits::DoCipher(
   }
 
   size_t total = 0;
-  int buf_len = in.size() + ctx.getBlockSize() + tag_len;
+  int buf_len = data_len + ctx.getBlockSize() + (encrypt ? tag_len : 0);
   int out_len;
 
   // Process additional authenticated data if present
@@ -271,9 +206,9 @@ WebCryptoCipherStatus ChaCha20Poly1305CipherTraits::DoCipher(
   // Process the input data
   buffer = {
       .data = in.data<unsigned char>(),
-      .len = in.size(),
+      .len = data_len,
   };
-  if (in.empty()) {
+  if (data_len == 0) {
     if (!ctx.update({}, ptr, &out_len)) {
       return WebCryptoCipherStatus::FAILED;
     }
diff --git a/src/crypto/crypto_chacha20_poly1305.h b/src/crypto/crypto_chacha20_poly1305.h
index 5b4d5cde2c3929..f56b1a2e74a152 100644
--- a/src/crypto/crypto_chacha20_poly1305.h
+++ b/src/crypto/crypto_chacha20_poly1305.h
@@ -17,7 +17,6 @@ struct ChaCha20Poly1305CipherConfig final : public MemoryRetainer {
   ncrypto::Cipher cipher;
   ByteSource iv;
   ByteSource additional_data;
-  ByteSource tag;
 
   ChaCha20Poly1305CipherConfig() = default;
 
diff --git a/test/parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js b/test/parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js
index 589a2f91a17cc2..2f0612db2bc253 100644
--- a/test/parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js
+++ b/test/parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js
@@ -24,6 +24,5 @@ subtle.importKey(
       }, k, new Uint8Array(0));
     }, {
       name: 'OperationError',
-      message: /The provided data is too small/,
     })
   ).then(common.mustCall());
diff --git a/test/parallel/test-webcrypto-aead-decrypt-detached-buffer.js b/test/parallel/test-webcrypto-aead-decrypt-detached-buffer.js
new file mode 100644
index 00000000000000..a96e709095430f
--- /dev/null
+++ b/test/parallel/test-webcrypto-aead-decrypt-detached-buffer.js
@@ -0,0 +1,42 @@
+'use strict';
+
+const common = require('../common');
+
+if (!common.hasCrypto)
+  common.skip('missing crypto');
+
+const assert = require('assert');
+const { hasOpenSSL } = require('../common/crypto');
+const { subtle } = globalThis.crypto;
+
+async function test(algorithmName, keyLength, ivLength, format = 'raw') {
+  const key = await subtle.importKey(
+    format,
+    new Uint8Array(keyLength),
+    { name: algorithmName },
+    false,
+    ['encrypt', 'decrypt'],
+  );
+
+  const data = new Uint8Array(32);
+  data.buffer.transfer();
+
+  await assert.rejects(
+    subtle.decrypt({ name: algorithmName, iv: new Uint8Array(ivLength) }, key, data),
+    { name: 'OperationError' },
+  );
+}
+
+const tests = [
+  test('AES-GCM', 32, 12),
+];
+
+if (hasOpenSSL(3)) {
+  tests.push(test('AES-OCB', 32, 12, 'raw-secret'));
+}
+
+if (!process.features.openssl_is_boringssl) {
+  tests.push(test('ChaCha20-Poly1305', 32, 12, 'raw-secret'));
+}
+
+Promise.all(tests).then(common.mustCall());
diff --git a/test/parallel/test-webcrypto-encrypt-decrypt-chacha20-poly1305.js b/test/parallel/test-webcrypto-encrypt-decrypt-chacha20-poly1305.js
index aea9528f2463db..5362484288089d 100644
--- a/test/parallel/test-webcrypto-encrypt-decrypt-chacha20-poly1305.js
+++ b/test/parallel/test-webcrypto-encrypt-decrypt-chacha20-poly1305.js
@@ -189,7 +189,7 @@ async function testDecrypt({ keyBuffer, algorithm, result }) {
     const iv = globalThis.crypto.getRandomValues(new Uint8Array(12));
     await assert.rejects(
       subtle.decrypt({ name: 'ChaCha20-Poly1305', iv }, secretKey, new Uint8Array(8)),
-      { name: 'OperationError', message: /The provided data is too small/ }
+      { name: 'OperationError' }
     );
 
     // Test invalid tagLength values

From 44bde8e573cc542ce85396be2ccff6b04d7f2621 Mon Sep 17 00:00:00 2001
From: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com>
Date: Wed, 11 Mar 2026 21:20:16 +0100
Subject: [PATCH 186/267] doc: add note (and caveat) for `mock.module` about
 customization hooks

PR-URL: https://github.com/nodejs/node/pull/62075
Reviewed-By: Pietro Marchini <pietro.marchini94@gmail.com>
---
 doc/api/test.md | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/api/test.md b/doc/api/test.md
index 98f875e4e78bfb..8e309ebcc2590c 100644
--- a/doc/api/test.md
+++ b/doc/api/test.md
@@ -2494,6 +2494,11 @@ Node.js builtin modules. Any references to the original module prior to mocking
 order to enable module mocking, Node.js must be started with the
 [`--experimental-test-module-mocks`][] command-line flag.
 
+**Note**: [module customization hooks][] registered via the **synchronous** API effect resolution of
+the `specifier` provided to `mock.module`. Customization hooks registered via the **asynchronous**
+API are currently ignored (because the test runner's loader is synchronous, and node does not
+support multi-chain / cross-chain loading).
+
 The following example demonstrates how a mock is created for a module.
 
 ```js
@@ -4239,6 +4244,7 @@ Can be used to abort test subtasks when the test has been aborted.
 [configuration files]: cli.md#--experimental-config-fileconfig
 [describe options]: #describename-options-fn
 [it options]: #testname-options-fn
+[module customization hooks]: module.md#customization-hooks
 [running tests from the command line]: #running-tests-from-the-command-line
 [stream.compose]: stream.md#streamcomposestreams
 [subtests]: #subtests

From dc541370b42b8d63861c4838e22e7e35ab66d76b Mon Sep 17 00:00:00 2001
From: Ali Hassan <24819103+thisalihassan@users.noreply.github.com>
Date: Thu, 12 Mar 2026 03:16:16 +0500
Subject: [PATCH 187/267] stream: replace bind with arrow function for onwrite
 callback

PR-URL: https://github.com/nodejs/node/pull/62087
Reviewed-By: Mattias Buelens <mattias@buelens.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
---
 lib/internal/streams/writable.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/internal/streams/writable.js b/lib/internal/streams/writable.js
index a9beecee156ee6..e934c38bbf9acc 100644
--- a/lib/internal/streams/writable.js
+++ b/lib/internal/streams/writable.js
@@ -347,7 +347,7 @@ function WritableState(options, stream, isDuplex) {
   this.corked = 0;
 
   // The callback that's passed to _write(chunk, cb).
-  this.onwrite = onwrite.bind(undefined, stream);
+  this.onwrite = (er) => onwrite(stream, er);
 
   // The amount that is being written when _write is called.
   this.writelen = 0;

From 4c12ab8abcff6dc1eb184b7408bfa3be39c740c4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9?= <contact.9a5d6388@renegade334.me.uk>
Date: Thu, 12 Mar 2026 02:02:47 +0000
Subject: [PATCH 188/267] typings: rationalise TypedArray types

PR-URL: https://github.com/nodejs/node/pull/62174
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
---
 typings/globals.d.ts     | 14 +++++++++
 typings/primordials.d.ts | 61 ++++++++++++----------------------------
 2 files changed, 32 insertions(+), 43 deletions(-)

diff --git a/typings/globals.d.ts b/typings/globals.d.ts
index 739f3d9a534026..ddd5885faa057f 100644
--- a/typings/globals.d.ts
+++ b/typings/globals.d.ts
@@ -87,6 +87,20 @@ declare global {
     | BigUint64Array
     | BigInt64Array;
 
+  type TypedArrayConstructor =
+    | typeof Uint8Array
+    | typeof Uint8ClampedArray
+    | typeof Uint16Array
+    | typeof Uint32Array
+    | typeof Int8Array
+    | typeof Int16Array
+    | typeof Int32Array
+    | typeof Float16Array
+    | typeof Float32Array
+    | typeof Float64Array
+    | typeof BigUint64Array
+    | typeof BigInt64Array;
+
   namespace NodeJS {
     interface Global {
       internalBinding<T extends InternalBindingKeys>(binding: T): InternalBindingMap[T]
diff --git a/typings/primordials.d.ts b/typings/primordials.d.ts
index 204c12b0087f91..5437ac2736792a 100644
--- a/typings/primordials.d.ts
+++ b/typings/primordials.d.ts
@@ -19,7 +19,7 @@ type UncurryGetter<O, K extends keyof O, T = O> =
 type UncurrySetter<O, K extends keyof O, T = O> =
   O[K] extends infer V ? (self: T, value: V) => void : never;
 
-type TypedArrayContentType<T extends TypedArray> = T extends { [k: number]: infer V } ? V : never;
+type TypedArrayContentType<T extends TypedArrayConstructor> = InstanceType<T>[number];
 
 /**
  * Primordials are a way to safely use globals without fear of global mutation
@@ -472,14 +472,12 @@ declare namespace primordials {
   export const SyntaxErrorPrototype: typeof SyntaxError.prototype
   export import TypeError = globalThis.TypeError;
   export const TypeErrorPrototype: typeof TypeError.prototype
-  export function TypedArrayFrom<T extends TypedArray>(
-    constructor: new (length: number) => T,
-    source:
-      | Iterable<TypedArrayContentType<T>>
-      | ArrayLike<TypedArrayContentType<T>>,
-  ): T;
-  export function TypedArrayFrom<T extends TypedArray, U, THIS_ARG = undefined>(
-    constructor: new (length: number) => T,
+  export function TypedArrayFrom<T extends TypedArrayConstructor>(
+    constructor: T,
+    source: Iterable<TypedArrayContentType<T>> | ArrayLike<TypedArrayContentType<T>>,
+  ): InstanceType<T>
+  export function TypedArrayFrom<T extends TypedArrayConstructor, U, THIS_ARG = undefined>(
+    constructor: T,
     source: Iterable<U> | ArrayLike<U>,
     mapfn: (
       this: THIS_ARG,
@@ -487,28 +485,17 @@ declare namespace primordials {
       index: number,
     ) => TypedArrayContentType<T>,
     thisArg?: THIS_ARG,
-  ): T;
-  export function TypedArrayOf<T extends TypedArray>(
-    constructor: new (length: number) => T,
-    ...items: readonly TypedArrayContentType<T>[]
-  ): T;
-  export function TypedArrayOfApply<T extends TypedArray>(
-    constructor: new (length: number) => T,
+  ): InstanceType<T>;
+  export function TypedArrayOf<T extends TypedArrayConstructor>(
+    constructor: T,
+    ...items: TypedArrayContentType<T>[],
+  ): InstanceType<T>;
+  export function TypedArrayOfApply<T extends TypedArrayConstructor>(
+    constructor: T,
     items: readonly TypedArrayContentType<T>[],
-  ): T;
-  export const TypedArray: TypedArray;
-  export const TypedArrayPrototype:
-    | typeof Uint8Array.prototype
-    | typeof Int8Array.prototype
-    | typeof Uint16Array.prototype
-    | typeof Int16Array.prototype
-    | typeof Uint32Array.prototype
-    | typeof Int32Array.prototype
-    | typeof Float32Array.prototype
-    | typeof Float64Array.prototype
-    | typeof BigInt64Array.prototype
-    | typeof BigUint64Array.prototype
-    | typeof Uint8ClampedArray.prototype;
+  ): InstanceType<T>;
+  export const TypedArray: TypedArrayConstructor;
+  export const TypedArrayPrototype: TypedArrayConstructor["prototype"];
   export const TypedArrayPrototypeGetBuffer: UncurryGetter<TypedArray, "buffer">;
   export const TypedArrayPrototypeGetByteLength: UncurryGetter<TypedArray, "byteLength">;
   export const TypedArrayPrototypeGetByteOffset: UncurryGetter<TypedArray, "byteOffset">;
@@ -519,19 +506,7 @@ declare namespace primordials {
   export function TypedArrayPrototypeSet<T extends TypedArray>(self: T, ...args: Parameters<T["set"]>): ReturnType<T["set"]>;
   export function TypedArrayPrototypeSubarray<T extends TypedArray>(self: T, ...args: Parameters<T["subarray"]>): ReturnType<T["subarray"]>;
   export function TypedArrayPrototypeSlice<T extends TypedArray>(self: T, ...args: Parameters<T["slice"]>): ReturnType<T["slice"]>;
-  export function TypedArrayPrototypeGetSymbolToStringTag(self: unknown):
-    | 'Int8Array'
-    | 'Int16Array'
-    | 'Int32Array'
-    | 'Uint8Array'
-    | 'Uint16Array'
-    | 'Uint32Array'
-    | 'Uint8ClampedArray'
-    | 'BigInt64Array'
-    | 'BigUint64Array'
-    | 'Float32Array'
-    | 'Float64Array'
-    | undefined;
+  export function TypedArrayPrototypeGetSymbolToStringTag(self: unknown): TypedArray[typeof Symbol.toStringTag] | undefined;
   export import URIError = globalThis.URIError;
   export const URIErrorPrototype: typeof URIError.prototype
   export import Uint16Array = globalThis.Uint16Array;

From fc9a60ec747ec00302e42dec114e25d2e0318f9e Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Thu, 12 Mar 2026 11:42:08 -0400
Subject: [PATCH 189/267] test: update WPT for WebCryptoAPI to 6a1c545d77

PR-URL: https://github.com/nodejs/node/pull/62187
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
---
 test/fixtures/wpt/README.md                   |   2 +-
 .../digest/cshake.tentative.https.any.js      |  41 +++-
 .../WebCryptoAPI/digest/digest.https.any.js   |  24 +++
 .../digest/sha3.tentative.https.any.js        |  38 +++-
 .../wpt/WebCryptoAPI/encrypt_decrypt/aes.js   | 126 +++++++++++
 .../wpt/WebCryptoAPI/encrypt_decrypt/rsa.js   | 179 ++++++++++++++--
 .../wpt/WebCryptoAPI/sign_verify/ecdsa.js     | 142 +++++++++++--
 .../wpt/WebCryptoAPI/sign_verify/eddsa.js     |  92 +++++++-
 .../wpt/WebCryptoAPI/sign_verify/hmac.js      | 134 ++++++++++--
 .../wpt/WebCryptoAPI/sign_verify/kmac.js      | 148 ++++++++++++-
 .../wpt/WebCryptoAPI/sign_verify/mldsa.js     | 200 ++++++++++++++++++
 .../wpt/WebCryptoAPI/sign_verify/rsa.js       | 134 ++++++++++--
 .../wrapKey_unwrapKey.https.any.js            |   6 +-
 test/fixtures/wpt/versions.json               |   2 +-
 test/wpt/status/WebCryptoAPI.cjs              |   6 +
 15 files changed, 1193 insertions(+), 81 deletions(-)

diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md
index a33a656e0479db..a011af1bf15c2e 100644
--- a/test/fixtures/wpt/README.md
+++ b/test/fixtures/wpt/README.md
@@ -34,7 +34,7 @@ Last update:
 - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/cde25e7e3c/wasm/jsapi
 - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi
 - web-locks: https://github.com/web-platform-tests/wpt/tree/10a122a6bc/web-locks
-- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/c9e955840a/WebCryptoAPI
+- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/6a1c545d77/WebCryptoAPI
 - webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/2f96fa1996/webidl/ecmascript-binding/es-exceptions
 - webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/6495c91853/webmessaging/broadcastchannel
 - webstorage: https://github.com/web-platform-tests/wpt/tree/1d2c5fb36a/webstorage
diff --git a/test/fixtures/wpt/WebCryptoAPI/digest/cshake.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/digest/cshake.tentative.https.any.js
index d5f790e42b4982..d0c23c09ada4a9 100644
--- a/test/fixtures/wpt/WebCryptoAPI/digest/cshake.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/digest/cshake.tentative.https.any.js
@@ -195,17 +195,52 @@ Object.keys(digestedData).forEach(function (alg) {
 
         promise_test(function (test) {
           var buffer = new Uint8Array(sourceData[size]);
-          return crypto.subtle
+          var promise = crypto.subtle
             .digest({ name: alg, length: length }, buffer)
             .then(function (result) {
-              // Alter the buffer after calling digest
-              buffer[0] = ~buffer[0];
               assert_true(
                 equalBuffers(result, digestedData[alg][length][size]),
                 'digest matches expected'
               );
             });
+          // Alter the buffer after calling digest
+          buffer[0] = ~buffer[0];
+          return promise;
         }, alg + ' with ' + length + ' bit output and ' + size + ' source data and altered buffer after call');
+
+        promise_test(function (test) {
+          var buffer = new Uint8Array(sourceData[size]);
+          return crypto.subtle
+            .digest({
+              get name() {
+                // Transfer the buffer while calling digest
+                buffer.buffer.transfer();
+                return alg;
+              },
+              length
+            }, buffer)
+            .then(function (result) {
+              assert_true(
+                equalBuffers(result, digestedData[alg][length].empty),
+                'digest on transferred buffer should match result for empty buffer'
+              );
+            });
+        }, alg + ' with ' + length + ' bit output and ' + size + ' source data and transferred buffer during call');
+
+        promise_test(function (test) {
+          var buffer = new Uint8Array(sourceData[size]);
+          var promise = crypto.subtle
+            .digest({ name: alg, length: length }, buffer)
+            .then(function (result) {
+              assert_true(
+                equalBuffers(result, digestedData[alg][length][size]),
+                'digest matches expected'
+              );
+            });
+          // Transfer the buffer after calling digest
+          buffer.buffer.transfer();
+          return promise;
+        }, alg + ' with ' + length + ' bit output and ' + size + ' source data and transferred buffer after call');
       }
     });
   });
diff --git a/test/fixtures/wpt/WebCryptoAPI/digest/digest.https.any.js b/test/fixtures/wpt/WebCryptoAPI/digest/digest.https.any.js
index e0c85f8f6b30e4..47bc220d44fb70 100644
--- a/test/fixtures/wpt/WebCryptoAPI/digest/digest.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/digest/digest.https.any.js
@@ -113,6 +113,30 @@
                     copiedBuffer[0] = 255 - copiedBuffer[0];
                     return promise;
                 }, upCase + " with " + size + " source data and altered buffer after call");
+
+                promise_test(function(test) {
+                    var copiedBuffer = copyBuffer(sourceData[size]);
+                    copiedBuffer.buffer.transfer();
+                    return subtle.digest({name: upCase}, copiedBuffer)
+                    .then(function(result) {
+                        assert_true(equalBuffers(result, digestedData[alg].empty), "digest() on transferred buffer should yield result for empty buffer for " + alg + ":" + size);
+                    }, function(err) {
+                        assert_unreached("digest() threw an error for transferred buffer for " + alg + ":" + size + ": " + err.message);
+                    });
+                }, upCase + " with " + size + " source data and transferred buffer during call");
+
+                promise_test(function(test) {
+                    var copiedBuffer = copyBuffer(sourceData[size]);
+                    var promise = subtle.digest({name: upCase}, copiedBuffer)
+                    .then(function(result) {
+                        assert_true(equalBuffers(result, digestedData[alg][size]), "digest() yielded expected result for " + alg + ":" + size);
+                    }, function(err) {
+                        assert_unreached("digest() threw an error for " + alg + ":" + size + " - " + err.message);
+                    });
+
+                    copiedBuffer.buffer.transfer();
+                    return promise;
+                }, upCase + " with " + size + " source data and transferred buffer after call");
             }
         });
     });
diff --git a/test/fixtures/wpt/WebCryptoAPI/digest/sha3.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/digest/sha3.tentative.https.any.js
index fc33608e07ab14..4ae99791b8c95f 100644
--- a/test/fixtures/wpt/WebCryptoAPI/digest/sha3.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/digest/sha3.tentative.https.any.js
@@ -132,15 +132,47 @@ Object.keys(sourceData).forEach(function (size) {
 
       promise_test(function (test) {
         var buffer = new Uint8Array(sourceData[size]);
-        return crypto.subtle.digest(alg, buffer).then(function (result) {
-          // Alter the buffer after calling digest
-          buffer[0] = ~buffer[0];
+        var promise = crypto.subtle.digest(alg, buffer).then(function (result) {
           assert_true(
             equalBuffers(result, digestedData[alg][size]),
             'digest matches expected'
           );
         });
+        // Alter the buffer after calling digest
+        buffer[0] = ~buffer[0];
+        return promise;
       }, alg + ' with ' + size + ' source data and altered buffer after call');
+
+      promise_test(function (test) {
+        var buffer = new Uint8Array(sourceData[size]);
+        return crypto.subtle
+          .digest({
+            get name() {
+              // Transfer the buffer while calling digest
+              buffer.buffer.transfer();
+              return alg;
+            }
+          }, buffer)
+          .then(function (result) {
+            assert_true(
+              equalBuffers(result, digestedData[alg].empty),
+              'digest on transferred buffer should match result for empty buffer'
+            );
+          });
+      }, alg + ' with ' + size + ' source data and transferred buffer during call');
+
+      promise_test(function (test) {
+        var buffer = new Uint8Array(sourceData[size]);
+        var promise = crypto.subtle.digest(alg, buffer).then(function (result) {
+          assert_true(
+            equalBuffers(result, digestedData[alg][size]),
+            'digest matches expected'
+          );
+        });
+        // Transfer the buffer after calling digest
+        buffer.buffer.transfer();
+        return promise;
+      }, alg + ' with ' + size + ' source data and transferred buffer after call');
     }
   });
 });
diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes.js b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes.js
index b157a94a0dc4fb..456f66423419c8 100644
--- a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes.js
+++ b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes.js
@@ -93,6 +93,67 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for encryption of an empty value if the buffer is transferred while calling encrypt.
+    passingVectors.forEach(function(vector) {
+        var plaintext = copyBuffer(vector.plaintext);
+        var promise = importVectorKey(vector, ["encrypt", "decrypt"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var operation = subtle.encrypt({
+                    ...vector.algorithm,
+                    get name() {
+                        plaintext.buffer.transfer();
+                        return vector.algorithm.name;
+                    }
+                }, vector.key, plaintext)
+                .then(function(result) {
+                    var expectedLength =
+                        ["AES-GCM", "AES-OCB"].includes(vector.algorithm.name) ? vector.algorithm.tagLength / 8 :
+                        vector.algorithm.name === "AES-CBC" ? 16 :
+                        0;
+                    assert_equals(result.byteLength, expectedLength, "Transferred plaintext yields an empty ciphertext");
+                }, function(err) {
+                    assert_unreached("encrypt error for test " + vector.name + ": " + err.message);
+                });
+                return operation;
+            }, vector.name + " with transferred plaintext during call");
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importKey failed for " + vector.name);
+            }, "importKey step: " + vector.name + " with transferred plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Check for successful encryption even if the buffer is transferred after calling encrypt.
+    passingVectors.forEach(function(vector) {
+        var plaintext = copyBuffer(vector.plaintext);
+        var promise = importVectorKey(vector, ["encrypt", "decrypt"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var operation = subtle.encrypt(vector.algorithm, vector.key, plaintext)
+                .then(function(result) {
+                    assert_true(equalBuffers(result, vector.result), "Should return expected result");
+                }, function(err) {
+                    assert_unreached("encrypt error for test " + vector.name + ": " + err.message);
+                });
+                plaintext.buffer.transfer();
+                return operation;
+            }, vector.name + " with transferred plaintext after call");
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importKey failed for " + vector.name);
+            }, "importKey step: " + vector.name + " with transferred plaintext after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful decryption.
     passingVectors.forEach(function(vector) {
         var promise = importVectorKey(vector, ["encrypt", "decrypt"])
@@ -174,6 +235,71 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for decryption when ciphertext is transferred while calling decrypt.
+    passingVectors.forEach(function(vector) {
+        var ciphertext = copyBuffer(vector.result);
+        var promise = importVectorKey(vector, ["encrypt", "decrypt"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var operation = subtle.decrypt({
+                    ...vector.algorithm,
+                    get name() {
+                        ciphertext.buffer.transfer();
+                        return vector.algorithm.name;
+                    }
+                }, vector.key, ciphertext)
+                .then(function(result) {
+                    if (vector.algorithm.name === "AES-CTR") {
+                        assert_equals(result.byteLength, 0, "Transferred ciphertext yields empty plaintext");
+                    } else {
+                        assert_unreached("decrypt should not have succeeded for " + vector.name);
+                    }
+                }, function(err) {
+                    if (vector.algorithm.name === "AES-CTR") {
+                        assert_unreached("decrypt error for test " + vector.name + ": " + err.message);
+                    } else {
+                        assert_equals(err.name, "OperationError", "Should throw an OperationError instead of " + err.message);
+                    }
+                });
+                return operation;
+            }, vector.name + " decryption with transferred ciphertext during call");
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importKey failed for " + vector.name);
+            }, "importKey step for decryption: " + vector.name + " with transferred ciphertext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Check for successful decryption even if ciphertext is transferred after calling encrypt.
+    passingVectors.forEach(function(vector) {
+        var ciphertext = copyBuffer(vector.result);
+        var promise = importVectorKey(vector, ["encrypt", "decrypt"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var operation = subtle.decrypt(vector.algorithm, vector.key, ciphertext)
+                .then(function(result) {
+                    assert_true(equalBuffers(result, vector.plaintext), "Should return expected result");
+                }, function(err) {
+                    assert_unreached("decrypt error for test " + vector.name + ": " + err.message);
+                });
+                ciphertext.buffer.transfer();
+                return operation;
+            }, vector.name + " decryption with transferred ciphertext after call");
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importKey failed for " + vector.name);
+            }, "importKey step for decryption: " + vector.name + " with transferred ciphertext after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Everything that succeeded should fail if no "encrypt" usage.
     passingVectors.forEach(function(vector) {
         // Don't want to overwrite key being used for success tests!
diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/rsa.js b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/rsa.js
index 76c90809783205..6f585cbe1ffcef 100644
--- a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/rsa.js
+++ b/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/rsa.js
@@ -25,7 +25,7 @@ function run_test() {
                 .then(function(plaintext) {
                     assert_true(equalBuffers(plaintext, vector.plaintext, "Decryption works"));
                 }, function(err) {
-                    assert_unreached("Decryption should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Decryption should not throw error " + vector.name + ": '" + err.message + "'");
                 });
             }, vector.name + " decryption");
 
@@ -62,7 +62,7 @@ function run_test() {
                 .then(function(plaintext) {
                     assert_true(equalBuffers(plaintext, vector.plaintext, "Decryption works"));
                 }, function(err) {
-                    assert_unreached("Decryption should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Decryption should not throw error " + vector.name + ": '" + err.message + "'");
                 });
                 return operation;
             }, vector.name + " decryption with altered ciphertext during call");
@@ -78,7 +78,7 @@ function run_test() {
         all_promises.push(promise);
     });
 
-    // Test decryption with an altered buffer
+    // Test decryption with an altered buffer after call
     passingVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["encrypt"], ["decrypt"])
         .then(function(vectors) {
@@ -93,7 +93,7 @@ function run_test() {
                 .then(function(plaintext) {
                     assert_true(equalBuffers(plaintext, vector.plaintext, "Decryption works"));
                 }, function(err) {
-                    assert_unreached("Decryption should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Decryption should not throw error " + vector.name + ": '" + err.message + "'");
                 });
                 ciphertext[0] = 255 - ciphertext[0];
                 return operation;
@@ -110,6 +110,75 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Test decryption with a transferred buffer during call
+    passingVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["encrypt"], ["decrypt"])
+        .then(function(vectors) {
+            // Get a one byte longer plaintext to encrypt
+            if (!("ciphertext" in vector)) {
+                return;
+            }
+
+            promise_test(function(test) {
+                var ciphertext = copyBuffer(vector.ciphertext);
+                var operation = subtle.decrypt({
+                    ...vector.algorithm,
+                    get name() {
+                        ciphertext.buffer.transfer();
+                        return vector.algorithm.name;
+                    }
+                }, vector.privateKey, ciphertext)
+                .then(function(plaintext) {
+                    assert_unreached("Decryption should not have succeeded for " + vector.name);
+                }, function(err) {
+                    assert_equals(err.name, "OperationError", "Should throw OperationError instead of " + err.message);
+                });
+                return operation;
+            }, vector.name + " decryption with transferred ciphertext during call");
+
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " decryption with transferred ciphertext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Test decryption with a transferred buffer after call
+    passingVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["encrypt"], ["decrypt"])
+        .then(function(vectors) {
+            // Get a one byte longer plaintext to encrypt
+            if (!("ciphertext" in vector)) {
+                return;
+            }
+
+            promise_test(function(test) {
+                var ciphertext = copyBuffer(vector.ciphertext);
+                var operation = subtle.decrypt(vector.algorithm, vector.privateKey, ciphertext)
+                .then(function(plaintext) {
+                    assert_true(equalBuffers(plaintext, vector.plaintext, "Decryption works"));
+                }, function(err) {
+                    assert_unreached("Decryption should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+                ciphertext.buffer.transfer();
+                return operation;
+            }, vector.name + " decryption with transferred ciphertext after call");
+
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " decryption with transferred ciphertext after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for failures due to using publicKey to decrypt.
     passingVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["encrypt"], ["decrypt"])
@@ -117,7 +186,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.decrypt(vector.algorithm, vector.publicKey, vector.ciphertext)
                 .then(function(plaintext) {
-                    assert_unreached("Should have thrown error for using publicKey to decrypt in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for using publicKey to decrypt in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of " + err.message);
                 });
@@ -145,7 +214,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.decrypt(vector.algorithm, vector.publicKey, vector.ciphertext)
                 .then(function(plaintext) {
-                    assert_unreached("Should have thrown error for no decrypt usage in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for no decrypt usage in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of " + err.message);
                 });
@@ -185,7 +254,7 @@ function run_test() {
                         assert_true(equalBuffers(result, vector.plaintext), "Round trip returns original plaintext");
                         return ciphertext;
                     }, function(err) {
-                        assert_unreached("decrypt error for test " + vector.name + ": " + err.message + "'");
+                        assert_unreached("decrypt error for test " + vector.name + ": '" + err.message + "'");
                     });
                 })
                 .then(function(priorCiphertext) {
@@ -229,7 +298,7 @@ function run_test() {
                         assert_true(equalBuffers(result, vector.plaintext), "Round trip returns original plaintext");
                         return ciphertext;
                     }, function(err) {
-                        assert_unreached("decrypt error for test " + vector.name + ": " + err.message + "'");
+                        assert_unreached("decrypt error for test " + vector.name + ": '" + err.message + "'");
                     });
                 })
                 .then(function(priorCiphertext) {
@@ -259,6 +328,92 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for encryption of an empty value if plaintext is transferred during call.
+    passingVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["encrypt"], ["decrypt"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                var operation = subtle.encrypt({
+                    ...vector.algorithm,
+                    get name() {
+                        plaintext.buffer.transfer();
+                        return vector.algorithm.name;
+                    }
+                }, vector.publicKey, plaintext)
+                .then(function(ciphertext) {
+                    assert_equals(ciphertext.byteLength * 8, vector.privateKey.algorithm.modulusLength, "Ciphertext length matches modulus length");
+                    // Do we get an empty plaintext back via decrypt?
+                    return subtle.decrypt(vector.algorithm, vector.privateKey, ciphertext)
+                    .then(function(result) {
+                        assert_equals(result.byteLength, 0, "Decryption returns empty plaintext");
+                        return ciphertext;
+                    }, function(err) {
+                        assert_unreached("decrypt error for test " + vector.name + ": '" + err.message + "'");
+                    });
+                }, function(err) {
+                    assert_unreached("encrypt error for test " + vector.name + ": '" + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " with transferred plaintext during call");
+
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with transferred plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Check for successful encryption even if plaintext is transferred after call.
+    passingVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["encrypt"], ["decrypt"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                var operation = subtle.encrypt(vector.algorithm, vector.publicKey, plaintext)
+                .then(function(ciphertext) {
+                    assert_equals(ciphertext.byteLength * 8, vector.privateKey.algorithm.modulusLength, "Ciphertext length matches modulus length");
+                    // Can we get the original plaintext back via decrypt?
+                    return subtle.decrypt(vector.algorithm, vector.privateKey, ciphertext)
+                    .then(function(result) {
+                        assert_true(equalBuffers(result, vector.plaintext), "Round trip returns original plaintext");
+                        return ciphertext;
+                    }, function(err) {
+                        assert_unreached("decrypt error for test " + vector.name + ": '" + err.message + "'");
+                    });
+                })
+                .then(function(priorCiphertext) {
+                    // Will a second encrypt give us different ciphertext, as it should?
+                    return subtle.encrypt(vector.algorithm, vector.publicKey, vector.plaintext)
+                    .then(function(ciphertext) {
+                        assert_false(equalBuffers(priorCiphertext, ciphertext), "Two encrypts give different results")
+                    }, function(err) {
+                        assert_unreached("second time encrypt error for test " + vector.name + ": '" + err.message + "'");
+                    });
+                }, function(err) {
+                    assert_unreached("decrypt error for test " + vector.name + ": '" + err.message + "'");
+                });
+
+                plaintext.buffer.transfer();
+                return operation;
+            }, vector.name + " with transferred plaintext after call");
+
+        }, function(err) {
+            // We need a failed test if the importVectorKey operation fails, so
+            // we know we never tested encryption
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with transferred plaintext after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful encryption.
     passingVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["encrypt"], ["decrypt"])
@@ -274,7 +429,7 @@ function run_test() {
                         assert_true(equalBuffers(result, vector.plaintext), "Round trip returns original plaintext");
                         return ciphertext;
                     }, function(err) {
-                        assert_unreached("decrypt error for test " + vector.name + ": " + err.message + "'");
+                        assert_unreached("decrypt error for test " + vector.name + ": '" + err.message + "'");
                     });
                 })
                 .then(function(priorCiphertext) {
@@ -312,7 +467,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.encrypt(vector.algorithm, vector.publicKey, plaintext)
                 .then(function(ciphertext) {
-                    assert_unreached("Should have thrown error for too long plaintext in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for too long plaintext in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "OperationError", "Should throw OperationError instead of " + err.message);
                 });
@@ -337,7 +492,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.encrypt(vector.algorithm, vector.privateKey, vector.plaintext)
                 .then(function(ciphertext) {
-                    assert_unreached("Should have thrown error for using privateKey to encrypt in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for using privateKey to encrypt in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of " + err.message);
                 });
@@ -365,7 +520,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.encrypt(vector.algorithm, vector.publicKey, vector.plaintext)
                 .then(function(ciphertext) {
-                    assert_unreached("Should have thrown error for no encrypt usage in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for no encrypt usage in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of " + err.message);
                 });
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa.js
index 9b47868fe32bfb..b2e0bf606b5fee 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/ecdsa.js
@@ -22,7 +22,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -57,7 +57,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -82,7 +82,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 signature[0] = 255 - signature[0];
@@ -97,6 +97,63 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Test verification with a transferred buffer during call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                var algorithm = {
+                    get name() {
+                        signature.buffer.transfer();
+                        return vector.algorithmName;
+                    },
+                    hash: vector.hashName
+                };
+                var operation = subtle.verify(algorithm, vector.publicKey, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_false(is_verified, "Signature is NOT verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " verification with transferred signature during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with transferred signature during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Test verification with a transferred buffer after call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            var algorithm = {name: vector.algorithmName, hash: vector.hashName};
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                var operation = subtle.verify(algorithm, vector.publicKey, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                signature.buffer.transfer();
+                return operation;
+            }, vector.name + " verification with transferred signature after call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with transferred signature after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful verification even if plaintext is altered during call.
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify"], ["sign"])
@@ -115,7 +172,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -140,7 +197,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 plaintext[0] = 255 - plaintext[0];
@@ -155,6 +212,63 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for failed verification if plaintext is transferred during call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                var algorithm = {
+                    get name() {
+                        plaintext.buffer.transfer();
+                        return vector.algorithmName;
+                    },
+                    hash: vector.hashName
+                };
+                var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_false(is_verified, "Signature is NOT verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " with transferred plaintext during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with transferred plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Check for successful verification even if plaintext is transferred after call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            var algorithm = {name: vector.algorithmName, hash: vector.hashName};
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                plaintext.buffer.transfer();
+                return operation;
+            }, vector.name + " with transferred plaintext after call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with transferred plaintext after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for failures due to using privateKey to verify.
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify"], ["sign"])
@@ -163,7 +277,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.verify(algorithm, vector.privateKey, vector.signature, vector.plaintext)
                 .then(function(plaintext) {
-                    assert_unreached("Should have thrown error for using privateKey to verify in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for using privateKey to verify in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'");
                 });
@@ -186,7 +300,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.sign(algorithm, vector.publicKey, vector.plaintext)
                 .then(function(signature) {
-                    assert_unreached("Should have thrown error for using publicKey to sign in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for using publicKey to sign in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'");
                 });
@@ -210,7 +324,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.verify(algorithm, vector.publicKey, vector.signature, vector.plaintext)
                 .then(function(plaintext) {
-                    assert_unreached("Should have thrown error for no verify usage in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for no verify usage in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'");
                 });
@@ -238,7 +352,7 @@ function run_test() {
                         assert_true(is_verified, "Round trip verification works");
                         return signature;
                     }, function(err) {
-                        assert_unreached("verify error for test " + vector.name + ": " + err.message + "'");
+                        assert_unreached("verify error for test " + vector.name + ": '" + err.message + "'");
                     });
                 }, function(err) {
                     assert_unreached("sign error for test " + vector.name + ": '" + err.message + "'");
@@ -338,7 +452,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -369,7 +483,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -426,7 +540,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -455,7 +569,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -482,7 +596,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature unexpectedly verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/eddsa.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/eddsa.js
index 4bf1887b2ae9bb..5ff6f21150c272 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/eddsa.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/eddsa.js
@@ -18,7 +18,7 @@ function run_test(algorithmName) {
               isVerified = await subtle.verify(algorithm, key, vector.signature, vector.data)
           } catch (err) {
               assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
-              assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
           };
           assert_true(isVerified, "Signature verified");
       }, vector.name + " verification");
@@ -39,7 +39,7 @@ function run_test(algorithmName) {
               }, key, signature, vector.data);
           } catch (err) {
               assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
-              assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
           };
           assert_true(isVerified, "Signature verified");
       }, vector.name + " verification with altered signature during call");
@@ -57,11 +57,48 @@ function run_test(algorithmName) {
               ]);
           } catch (err) {
               assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
-              assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
           };
           assert_true(isVerified, "Signature verified");
       }, vector.name + " verification with altered signature after call");
 
+      // Test verification with a transferred buffer during call
+      promise_test(async() => {
+          let isVerified = false;
+          let key;
+          try {
+              key = await subtle.importKey("spki", vector.publicKeyBuffer, algorithm, false, ["verify"]);
+              var signature = copyBuffer(vector.signature);
+              isVerified = await subtle.verify({
+                  get name() {
+                      signature.buffer.transfer();
+                      return vector.algorithmName;
+                  }
+              }, key, signature, vector.data);
+          } catch (err) {
+              assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+          };
+          assert_false(isVerified, "Signature is NOT verified");
+      }, vector.name + " verification with transferred signature during call");
+
+      // Test verification with a transferred buffer after call
+      promise_test(async() => {
+          let isVerified = false;
+          let key;
+          try {
+              key = await subtle.importKey("spki", vector.publicKeyBuffer, algorithm, false, ["verify"]);
+              var signature = copyBuffer(vector.signature);
+              var operation = subtle.verify(algorithm, key, signature, vector.data);
+              signature.buffer.transfer();
+              isVerified = await operation;
+          } catch (err) {
+              assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+          };
+          assert_true(isVerified, "Signature verified");
+      }, vector.name + " verification with transferred signature after call");
+
       // Check for successful verification even if data is altered during call.
       promise_test(async() => {
           let isVerified = false;
@@ -78,7 +115,7 @@ function run_test(algorithmName) {
               }, key, vector.signature, data);
           } catch (err) {
               assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
-              assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
           };
           assert_true(isVerified, "Signature verified");
       }, vector.name + " with altered data during call");
@@ -96,11 +133,48 @@ function run_test(algorithmName) {
               ]);
           } catch (err) {
               assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
-              assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
           };
           assert_true(isVerified, "Signature verified");
       }, vector.name + " with altered data after call");
 
+      // Check for failed verification if data is transferred during call.
+      promise_test(async() => {
+          let isVerified = false;
+          let key;
+          try {
+              key = await subtle.importKey("spki", vector.publicKeyBuffer, algorithm, false, ["verify"]);
+              var data = copyBuffer(vector.data);
+              isVerified = await subtle.verify({
+                  get name() {
+                      data.buffer.transfer();
+                      return vector.algorithmName;
+                  }
+              }, key, vector.signature, data);
+          } catch (err) {
+              assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+          };
+          assert_false(isVerified, "Signature is NOT verified");
+      }, vector.name + " with transferred data during call");
+
+      // Check for successful verification even if data is transferred after call.
+      promise_test(async() => {
+          let isVerified = false;
+          let key;
+          try {
+              key = await subtle.importKey("spki", vector.publicKeyBuffer, algorithm, false, ["verify"]);
+              var data = copyBuffer(vector.data);
+              var operation = subtle.verify(algorithm, key, vector.signature, data);
+              data.buffer.transfer();
+              isVerified = await operation;
+          } catch (err) {
+              assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+          };
+          assert_true(isVerified, "Signature verified");
+      }, vector.name + " with transferred data after call");
+
       // Check for failures due to using privateKey to verify.
       promise_test(async() => {
           let isVerified = false;
@@ -165,7 +239,7 @@ function run_test(algorithmName) {
           } catch (err) {
               assert_false(publicKey === undefined || privateKey === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
               assert_false(signature === undefined, "sign error for test " + vector.name + ": '" + err.message + "'");
-              assert_unreached("verify error for test " + vector.name + ": " + err.message + "'");
+              assert_unreached("verify error for test " + vector.name + ": '" + err.message + "'");
           };
           assert_true(isVerified, "Round trip verification works");
       }, vector.name + " round trip");
@@ -214,7 +288,7 @@ function run_test(algorithmName) {
               isVerified = await subtle.verify(algorithm, key, signature, vector.data)
           } catch (err) {
               assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
-              assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
           };
           assert_false(isVerified, "Signature verified");
       }, vector.name + " verification failure due to altered signature");
@@ -229,7 +303,7 @@ function run_test(algorithmName) {
               isVerified = await subtle.verify(algorithm, key, signature, vector.data)
           } catch (err) {
               assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
-              assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
           };
           assert_false(isVerified, "Signature verified");
       }, vector.name + " verification failure due to shortened signature");
@@ -245,7 +319,7 @@ function run_test(algorithmName) {
               isVerified = await subtle.verify(algorithm, key, vector.signature, data)
           } catch (err) {
               assert_false(key === undefined, "importKey failed for " + vector.name + ". Message: ''" + err.message + "''");
-              assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+              assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
           };
           assert_false(isVerified, "Signature verified");
       }, vector.name + " verification failure due to altered data");
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.js
index dff8c994d83de0..8a099f4ce9377a 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.js
@@ -20,7 +20,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -45,16 +45,16 @@ function run_test() {
                 var signature = copyBuffer(vector.signature);
                 signature[0] = 255 - signature[0];
                 var operation = subtle.verify({
-                    hash: vector.hash,
                     get name() {
                         signature[0] = vector.signature[0];
                         return "HMAC";
-                    }
+                    },
+                    hash: vector.hash
                 }, vector.key, signature, vector.plaintext)
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature is not verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -78,7 +78,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature is not verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 signature[0] = 255 - signature[0];
@@ -93,6 +93,61 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Test verification with a transferred buffer during call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                var operation = subtle.verify({
+                    get name() {
+                        signature.buffer.transfer();
+                        return "HMAC";
+                    },
+                    hash: vector.hash
+                }, vector.key, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_false(is_verified, "Signature is NOT verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " verification with transferred signature during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with transferred signature during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Test verification with a transferred buffer after call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                var operation = subtle.verify({name: "HMAC", hash: vector.hash}, vector.key, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature is not verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                signature.buffer.transfer();
+                return operation;
+            }, vector.name + " verification with transferred signature after call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with transferred signature after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful verification even if plaintext is altered during call.
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify", "sign"])
@@ -110,7 +165,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -134,7 +189,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 plaintext[0] = 255 - plaintext[0];
@@ -149,6 +204,61 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for failed verification if plaintext is transferred during call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                var operation = subtle.verify({
+                    get name() {
+                        plaintext.buffer.transfer();
+                        return "HMAC";
+                    },
+                    hash: vector.hash
+                }, vector.key, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_false(is_verified, "Signature is NOT verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " with transferred plaintext during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with transferred plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Check for successful verification even if plaintext is transferred after call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                var operation = subtle.verify({name: "HMAC", hash: vector.hash}, vector.key, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                plaintext.buffer.transfer();
+                return operation;
+            }, vector.name + " with transferred plaintext after call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with transferred plaintext after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for failures due to no "verify" usage.
     testVectors.forEach(function(originalVector) {
         var vector = Object.assign({}, originalVector);
@@ -158,7 +268,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.verify({name: "HMAC", hash: vector.hash}, vector.key, vector.signature, vector.plaintext)
                 .then(function(plaintext) {
-                    assert_unreached("Should have thrown error for no verify usage in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for no verify usage in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'");
                 });
@@ -186,7 +296,7 @@ function run_test() {
                         assert_true(is_verified, "Round trip verifies");
                         return signature;
                     }, function(err) {
-                        assert_unreached("verify error for test " + vector.name + ": " + err.message + "'");
+                        assert_unreached("verify error for test " + vector.name + ": '" + err.message + "'");
                     });
                 });
             }, vector.name + " round trip");
@@ -281,7 +391,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature is NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -309,7 +419,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature is NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -336,7 +446,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature is NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.js
index 57c9dc6f34790a..f3cc9b4cd1dbfd 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.js
@@ -23,7 +23,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -61,7 +61,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature is not verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -89,7 +89,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature is not verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 signature[0] = 255 - signature[0];
@@ -104,6 +104,69 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Test verification with a transferred buffer during call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                var algorithmParams = {
+                    get name() {
+                        signature.buffer.transfer();
+                        return vector.algorithm;
+                    },
+                    length: vector.length
+                };
+                if (vector.customization !== undefined) {
+                    algorithmParams.customization = vector.customization;
+                }
+                var operation = subtle.verify(algorithmParams, vector.key, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_false(is_verified, "Signature is NOT verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " verification with transferred signature during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with transferred signature during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Test verification with a transferred buffer after call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                var algorithmParams = {name: vector.algorithm, length: vector.length};
+                if (vector.customization !== undefined) {
+                    algorithmParams.customization = vector.customization;
+                }
+                var operation = subtle.verify(algorithmParams, vector.key, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature is not verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                signature.buffer.transfer();
+                return operation;
+            }, vector.name + " verification with transferred signature after call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with transferred signature after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful verification even if plaintext is altered during call.
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify", "sign"])
@@ -125,7 +188,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -153,7 +216,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 plaintext[0] = 255 - plaintext[0];
@@ -168,6 +231,69 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for failed verification if plaintext is transferred during call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                var algorithmParams = {
+                    get name() {
+                        plaintext.buffer.transfer();
+                        return vector.algorithm;
+                    },
+                    length: vector.length
+                };
+                if (vector.customization !== undefined) {
+                    algorithmParams.customization = vector.customization;
+                }
+                var operation = subtle.verify(algorithmParams, vector.key, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_false(is_verified, "Signature is NOT verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " with transferred plaintext during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with transferred plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Check for successful verification even if plaintext is transferred after call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify", "sign"])
+        .then(function(vector) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                var algorithmParams = {name: vector.algorithm, length: vector.length};
+                if (vector.customization !== undefined) {
+                    algorithmParams.customization = vector.customization;
+                }
+                var operation = subtle.verify(algorithmParams, vector.key, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                plaintext.buffer.transfer();
+                return operation;
+            }, vector.name + " with transferred plaintext after call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with transferred plaintext after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for failures due to no "verify" usage.
     testVectors.forEach(function(originalVector) {
         var vector = Object.assign({}, originalVector);
@@ -181,7 +307,7 @@ function run_test() {
                 }
                 return subtle.verify(algorithmParams, vector.key, vector.signature, vector.plaintext)
                 .then(function(plaintext) {
-                    assert_unreached("Should have thrown error for no verify usage in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for no verify usage in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'");
                 });
@@ -213,7 +339,7 @@ function run_test() {
                         assert_true(is_verified, "Round trip verifies");
                         return signature;
                     }, function(err) {
-                        assert_unreached("verify error for test " + vector.name + ": " + err.message + "'");
+                        assert_unreached("verify error for test " + vector.name + ": '" + err.message + "'");
                     });
                 });
             }, vector.name + " round trip");
@@ -320,7 +446,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature is NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -352,7 +478,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature is NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -383,7 +509,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature is NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -414,7 +540,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature is NOT verified with wrong length");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.js
index 88143a33879ed7..9c654685c74f31 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.js
@@ -156,6 +156,106 @@ function run_test() {
     all_promises.push(promise);
   });
 
+  // Test verification with a transferred buffer during call
+  testVectors.forEach(function (vector) {
+    var promise = importVectorKeys(vector, ['verify'], ['sign']).then(
+      function (vectors) {
+        promise_test(function (test) {
+          var signature = copyBuffer(vector.signature);
+          var operation = subtle
+            .verify(
+              {
+                get name() {
+                  signature.buffer.transfer();
+                  return vector.algorithmName;
+                },
+              },
+              vector.publicKey,
+              signature,
+              vector.data
+            )
+            .then(
+              function (is_verified) {
+                assert_false(is_verified, 'Signature is NOT verified');
+              },
+              function (err) {
+                assert_unreached(
+                  'Verification should not throw error ' +
+                    vector.name +
+                    ': ' +
+                    err.message +
+                    "'"
+                );
+              }
+            );
+
+          return operation;
+        }, vector.name + ' verification with transferred signature during call');
+      },
+      function (err) {
+        promise_test(function (test) {
+          assert_unreached(
+            'importVectorKeys failed for ' +
+              vector.name +
+              ". Message: ''" +
+              err.message +
+              "''"
+          );
+        }, 'importVectorKeys step: ' +
+          vector.name +
+          ' verification with transferred signature during call');
+      }
+    );
+
+    all_promises.push(promise);
+  });
+
+  // Test verification with a transferred buffer after call
+  testVectors.forEach(function (vector) {
+    var promise = importVectorKeys(vector, ['verify'], ['sign']).then(
+      function (vectors) {
+        var algorithm = vector.algorithmName;
+        promise_test(function (test) {
+          var signature = copyBuffer(vector.signature);
+          var operation = subtle
+            .verify(algorithm, vector.publicKey, signature, vector.data)
+            .then(
+              function (is_verified) {
+                assert_true(is_verified, 'Signature verified');
+              },
+              function (err) {
+                assert_unreached(
+                  'Verification should not throw error ' +
+                    vector.name +
+                    ': ' +
+                    err.message +
+                    "'"
+                );
+              }
+            );
+
+          signature.buffer.transfer();
+          return operation;
+        }, vector.name + ' verification with transferred signature after call');
+      },
+      function (err) {
+        promise_test(function (test) {
+          assert_unreached(
+            'importVectorKeys failed for ' +
+              vector.name +
+              ". Message: ''" +
+              err.message +
+              "''"
+          );
+        }, 'importVectorKeys step: ' +
+          vector.name +
+          ' verification with transferred signature after call');
+      }
+    );
+
+    all_promises.push(promise);
+  });
+
   // Check for successful verification even if plaintext is altered during call.
   testVectors.forEach(function (vector) {
     var promise = importVectorKeys(vector, ['verify'], ['sign']).then(
@@ -257,6 +357,106 @@ function run_test() {
     all_promises.push(promise);
   });
 
+  // Check for failed verification if plaintext is transferred during call.
+  testVectors.forEach(function (vector) {
+    var promise = importVectorKeys(vector, ['verify'], ['sign']).then(
+      function (vectors) {
+        promise_test(function (test) {
+          var plaintext = copyBuffer(vector.data);
+          var operation = subtle
+            .verify(
+              {
+                get name() {
+                  plaintext.buffer.transfer();
+                  return vector.algorithmName;
+                },
+              },
+              vector.publicKey,
+              vector.signature,
+              plaintext
+            )
+            .then(
+              function (is_verified) {
+                assert_false(is_verified, 'Signature is NOT verified');
+              },
+              function (err) {
+                assert_unreached(
+                  'Verification should not throw error ' +
+                    vector.name +
+                    ': ' +
+                    err.message +
+                    "'"
+                );
+              }
+            );
+
+          return operation;
+        }, vector.name + ' with transferred plaintext during call');
+      },
+      function (err) {
+        promise_test(function (test) {
+          assert_unreached(
+            'importVectorKeys failed for ' +
+              vector.name +
+              ". Message: ''" +
+              err.message +
+              "''"
+          );
+        }, 'importVectorKeys step: ' +
+          vector.name +
+          ' with transferred plaintext during call');
+      }
+    );
+
+    all_promises.push(promise);
+  });
+
+  // Check for successful verification even if plaintext is transferred after call.
+  testVectors.forEach(function (vector) {
+    var promise = importVectorKeys(vector, ['verify'], ['sign']).then(
+      function (vectors) {
+        var algorithm = vector.algorithmName;
+        promise_test(function (test) {
+          var plaintext = copyBuffer(vector.data);
+          var operation = subtle
+            .verify(algorithm, vector.publicKey, vector.signature, plaintext)
+            .then(
+              function (is_verified) {
+                assert_true(is_verified, 'Signature verified');
+              },
+              function (err) {
+                assert_unreached(
+                  'Verification should not throw error ' +
+                    vector.name +
+                    ': ' +
+                    err.message +
+                    "'"
+                );
+              }
+            );
+
+          plaintext.buffer.transfer();
+          return operation;
+        }, vector.name + ' with transferred plaintext after call');
+      },
+      function (err) {
+        promise_test(function (test) {
+          assert_unreached(
+            'importVectorKeys failed for ' +
+              vector.name +
+              ". Message: ''" +
+              err.message +
+              "''"
+          );
+        }, 'importVectorKeys step: ' +
+          vector.name +
+          ' with transferred plaintext after call');
+      }
+    );
+
+    all_promises.push(promise);
+  });
+
   // Check for failures due to using privateKey to verify.
   testVectors.forEach(function (vector) {
     var promise = importVectorKeys(vector, ['verify'], ['sign']).then(
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/rsa.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/rsa.js
index f808714cfb11d4..09c7ceb7675107 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/rsa.js
+++ b/test/fixtures/wpt/WebCryptoAPI/sign_verify/rsa.js
@@ -20,7 +20,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -54,7 +54,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -78,7 +78,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 signature[0] = 255 - signature[0];
@@ -93,6 +93,61 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Test verification with a transferred buffer during call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                var operation = subtle.verify({
+                    ...vector.algorithm,
+                    get name() {
+                        signature.buffer.transfer();
+                        return vector.algorithm.name;
+                    }
+                }, vector.publicKey, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_false(is_verified, "Signature is NOT verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " verification with transferred signature during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with transferred signature during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Test verification with a transferred buffer after call
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var signature = copyBuffer(vector.signature);
+                var operation = subtle.verify(vector.algorithm, vector.publicKey, signature, vector.plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                signature.buffer.transfer();
+                return operation;
+            }, vector.name + " verification with transferred signature after call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " verification with transferred signature after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for successful verification even if plaintext is altered during call.
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify"], ["sign"])
@@ -110,7 +165,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -134,7 +189,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_true(is_verified, "Signature verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 plaintext[0] = 255 - plaintext[0];
@@ -149,6 +204,61 @@ function run_test() {
         all_promises.push(promise);
     });
 
+    // Check for failed verification if plaintext is transferred during call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                var operation = subtle.verify({
+                    ...vector.algorithm,
+                    get name() {
+                        plaintext.buffer.transfer();
+                        return vector.algorithm.name;
+                    }
+                }, vector.publicKey, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_false(is_verified, "Signature is NOT verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                return operation;
+            }, vector.name + " with transferred plaintext during call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with transferred plaintext during call");
+        });
+
+        all_promises.push(promise);
+    });
+
+    // Check for successful verification even if plaintext is transferred after call.
+    testVectors.forEach(function(vector) {
+        var promise = importVectorKeys(vector, ["verify"], ["sign"])
+        .then(function(vectors) {
+            promise_test(function(test) {
+                var plaintext = copyBuffer(vector.plaintext);
+                var operation = subtle.verify(vector.algorithm, vector.publicKey, vector.signature, plaintext)
+                .then(function(is_verified) {
+                    assert_true(is_verified, "Signature verified");
+                }, function(err) {
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
+                });
+
+                plaintext.buffer.transfer();
+                return operation;
+            }, vector.name + " with transferred plaintext after call");
+        }, function(err) {
+            promise_test(function(test) {
+                assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''");
+            }, "importVectorKeys step: " + vector.name + " with transferred plaintext after call");
+        });
+
+        all_promises.push(promise);
+    });
+
     // Check for failures due to using privateKey to verify.
     testVectors.forEach(function(vector) {
         var promise = importVectorKeys(vector, ["verify"], ["sign"])
@@ -156,7 +266,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.verify(vector.algorithm, vector.privateKey, vector.signature, vector.plaintext)
                 .then(function(plaintext) {
-                    assert_unreached("Should have thrown error for using privateKey to verify in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for using privateKey to verify in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'");
                 });
@@ -178,7 +288,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.sign(vector.algorithm, vector.publicKey, vector.plaintext)
                 .then(function(signature) {
-                    assert_unreached("Should have thrown error for using publicKey to sign in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for using publicKey to sign in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'");
                 });
@@ -201,7 +311,7 @@ function run_test() {
             promise_test(function(test) {
                 return subtle.verify(vector.algorithm, vector.publicKey, vector.signature, vector.plaintext)
                 .then(function(plaintext) {
-                    assert_unreached("Should have thrown error for no verify usage in " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Should have thrown error for no verify usage in " + vector.name + ": '" + err.message + "'");
                 }, function(err) {
                     assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'");
                 });
@@ -234,7 +344,7 @@ function run_test() {
                         assert_true(is_verified, "Round trip verifies");
                         return signature;
                     }, function(err) {
-                        assert_unreached("verify error for test " + vector.name + ": " + err.message + "'");
+                        assert_unreached("verify error for test " + vector.name + ": '" + err.message + "'");
                     });
                 })
                 .then(function(priorSignature) {
@@ -351,7 +461,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
@@ -379,7 +489,7 @@ function run_test() {
                     .then(function(is_verified) {
                         assert_false(is_verified, "Signature NOT verified");
                     }, function(err) {
-                        assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                        assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                     });
 
                     return operation;
@@ -408,7 +518,7 @@ function run_test() {
                 .then(function(is_verified) {
                     assert_false(is_verified, "Signature NOT verified");
                 }, function(err) {
-                    assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'");
+                    assert_unreached("Verification should not throw error " + vector.name + ": '" + err.message + "'");
                 });
 
                 return operation;
diff --git a/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js b/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js
index e40b4b6d35f794..880f7d650964ae 100644
--- a/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js
@@ -75,7 +75,7 @@
             var wrapper = wrappers[wrapperParam.name];
             keysToWrapParameters.filter((param) => Object.keys(keys).includes(param.algorithm.name)).forEach(function(toWrapParam) {
                 var keyData = keys[toWrapParam.algorithm.name];
-                ["raw", "spki", "pkcs8"].filter((fmt) => Object.keys(keyData).includes(fmt)).forEach(function(keyDataFormat) {
+                ["raw", "raw-secret", "spki", "pkcs8"].filter((fmt) => Object.keys(keyData).includes(fmt)).forEach(function(keyDataFormat) {
                     var toWrap = keyData[keyDataFormat];
                     [keyDataFormat, "jwk"].forEach(function(format) {
                         if (wrappingIsPossible(toWrap.originalExport[format], wrapper.parameters.name)) {
@@ -114,7 +114,7 @@
                               }));
             } else if (params.name === "ChaCha20-Poly1305") {
                 var algorithm = {name: params.name};
-                promises.push(subtle.importKey("raw", wrappingKeyData["SYMMETRIC256"].raw, algorithm, true, ["wrapKey", "unwrapKey"])
+                promises.push(subtle.importKey("raw-secret", wrappingKeyData["SYMMETRIC256"].raw, algorithm, true, ["wrapKey", "unwrapKey"])
                               .then(function(key) {
                                   wrappers[params.name] = {wrappingKey: key, unwrappingKey: key, parameters: params};
                               }));
@@ -165,7 +165,7 @@
                 promises.push(importAndExport("pkcs8", keyData.pkcs8, params.algorithm, params.privateUsages, "private key "));
             } else if (params.algorithm.name === "ChaCha20-Poly1305") {
                 keys[params.algorithm.name] = {};
-                promises.push(importAndExport("raw", toWrapKeyData["SYMMETRIC256"].raw, params.algorithm, params.usages, ""));
+                promises.push(importAndExport("raw-secret", toWrapKeyData["SYMMETRIC256"].raw, params.algorithm, params.usages, ""));
             } else {
                 keys[params.algorithm.name] = {};
                 promises.push(importAndExport("raw", toWrapKeyData["SYMMETRIC128"].raw, params.algorithm, params.usages, ""));
diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json
index 153e72d51858d6..aa0b9679ddf213 100644
--- a/test/fixtures/wpt/versions.json
+++ b/test/fixtures/wpt/versions.json
@@ -96,7 +96,7 @@
     "path": "web-locks"
   },
   "WebCryptoAPI": {
-    "commit": "c9e955840a21be6e492225a4a53fc4828d8933b9",
+    "commit": "6a1c545d778f115c84a1c27c25484afd442b89d8",
     "path": "WebCryptoAPI"
   },
   "webidl/ecmascript-binding/es-exceptions": {
diff --git a/test/wpt/status/WebCryptoAPI.cjs b/test/wpt/status/WebCryptoAPI.cjs
index 4d919480da6352..d7f2d4aca70f5d 100644
--- a/test/wpt/status/WebCryptoAPI.cjs
+++ b/test/wpt/status/WebCryptoAPI.cjs
@@ -56,6 +56,8 @@ const cshakeExpectedFailures = ['cSHAKE128', 'cSHAKE256'].flatMap((algorithm) =>
       ].concat(size !== 'empty' ? [
         `${base} and altered buffer after call`,
         `${base} and altered buffer during call`,
+        `${base} and transferred buffer after call`,
+        `${base} and transferred buffer during call`,
       ] : []);
     });
   });
@@ -73,10 +75,14 @@ const kmacVectorNames = [
 const kmacExpectedFailures = kmacVectorNames.flatMap((name) => {
   return [
     `${name} verification`,
+    `${name} verification with transferred signature during call`,
+    `${name} verification with transferred signature after call`,
     `${name} verification with altered signature during call`,
     `${name} verification with altered signature after call`,
     `${name} with altered plaintext during call`,
     `${name} with altered plaintext after call`,
+    `${name} with transferred plaintext during call`,
+    `${name} with transferred plaintext after call`,
     `${name} no verify usage`,
     `${name} round trip`,
     `${name} verification failure due to wrong plaintext`,

From a141ad0aeb0f2478076ad3b1037b4f2cc0d2740d Mon Sep 17 00:00:00 2001
From: Kit Dallege <xaum.io@gmail.com>
Date: Fri, 13 Mar 2026 14:17:17 +0100
Subject: [PATCH 190/267] doc: remove outdated Chrome 66 and ndb references
 from debugger
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Remove the Chrome 66.0.3345.0 version check (Chrome 66 shipped in
2018), the claim that Chrome DevTools doesn't support debugging worker
threads (which uses time-tied language), and the recommendation to use
ndb (which has been archived since July 2023).

Fixes: https://github.com/nodejs/node/issues/54078

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PR-URL: https://github.com/nodejs/node/pull/62202
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
---
 doc/api/debugger.md | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/doc/api/debugger.md b/doc/api/debugger.md
index 03e9cd9185027e..ce25c927d8ef81 100644
--- a/doc/api/debugger.md
+++ b/doc/api/debugger.md
@@ -260,13 +260,5 @@ For help, see: https://nodejs.org/en/docs/inspector
 at the end of the URL is generated on the fly, it varies in different
 debugging sessions.)
 
-If the Chrome browser is older than 66.0.3345.0,
-use `inspector.html` instead of `js_app.html` in the above URL.
-
-Chrome DevTools doesn't support debugging [worker threads][] yet.
-[ndb][] can be used to debug them.
-
 [Chrome DevTools Protocol]: https://chromedevtools.github.io/devtools-protocol/
 [`debugger`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger
-[ndb]: https://github.com/GoogleChromeLabs/ndb/
-[worker threads]: worker_threads.md

From 9dc102ba903a1aab8a448f8a26db0092f47892a3 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Thu, 12 Mar 2026 13:15:44 +0100
Subject: [PATCH 191/267] lib: prefer primordials in SubtleCrypto

PR-URL: https://github.com/nodejs/node/pull/62226
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
---
 lib/internal/crypto/cfrg.js   |  3 ++-
 lib/internal/crypto/ml_dsa.js |  3 ++-
 lib/internal/crypto/ml_kem.js |  3 ++-
 lib/internal/crypto/util.js   | 20 ++++++++++----------
 lib/internal/crypto/webidl.js | 12 +++++++-----
 5 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/lib/internal/crypto/cfrg.js b/lib/internal/crypto/cfrg.js
index c5bbaae90cf595..fd3f168435ddcb 100644
--- a/lib/internal/crypto/cfrg.js
+++ b/lib/internal/crypto/cfrg.js
@@ -2,6 +2,7 @@
 
 const {
   SafeSet,
+  StringPrototypeToLowerCase,
 } = primordials;
 
 const { Buffer } = require('buffer');
@@ -332,7 +333,7 @@ function cfrgImportKey(
       return undefined;
   }
 
-  if (keyObject.asymmetricKeyType !== name.toLowerCase()) {
+  if (keyObject.asymmetricKeyType !== StringPrototypeToLowerCase(name)) {
     throw lazyDOMException('Invalid key type', 'DataError');
   }
 
diff --git a/lib/internal/crypto/ml_dsa.js b/lib/internal/crypto/ml_dsa.js
index ebe3bfe3d17ca0..f4df51ae7cb6aa 100644
--- a/lib/internal/crypto/ml_dsa.js
+++ b/lib/internal/crypto/ml_dsa.js
@@ -2,6 +2,7 @@
 
 const {
   SafeSet,
+  StringPrototypeToLowerCase,
   TypedArrayPrototypeGetBuffer,
   TypedArrayPrototypeSet,
   Uint8Array,
@@ -276,7 +277,7 @@ function mlDsaImportKey(
       return undefined;
   }
 
-  if (keyObject.asymmetricKeyType !== name.toLowerCase()) {
+  if (keyObject.asymmetricKeyType !== StringPrototypeToLowerCase(name)) {
     throw lazyDOMException('Invalid key type', 'DataError');
   }
 
diff --git a/lib/internal/crypto/ml_kem.js b/lib/internal/crypto/ml_kem.js
index f6eb76cef10b20..208913cae86c36 100644
--- a/lib/internal/crypto/ml_kem.js
+++ b/lib/internal/crypto/ml_kem.js
@@ -3,6 +3,7 @@
 const {
   PromiseWithResolvers,
   SafeSet,
+  StringPrototypeToLowerCase,
   TypedArrayPrototypeGetBuffer,
   TypedArrayPrototypeSet,
   Uint8Array,
@@ -209,7 +210,7 @@ function mlKemImportKey(
       return undefined;
   }
 
-  if (keyObject.asymmetricKeyType !== name.toLowerCase()) {
+  if (keyObject.asymmetricKeyType !== StringPrototypeToLowerCase(name)) {
     throw lazyDOMException('Invalid key type', 'DataError');
   }
 
diff --git a/lib/internal/crypto/util.js b/lib/internal/crypto/util.js
index 96abe6a04b28e1..ab10c53a655a60 100644
--- a/lib/internal/crypto/util.js
+++ b/lib/internal/crypto/util.js
@@ -15,7 +15,7 @@ const {
   ObjectEntries,
   ObjectKeys,
   ObjectPrototypeHasOwnProperty,
-  Promise,
+  PromiseWithResolvers,
   StringPrototypeToUpperCase,
   Symbol,
   TypedArrayPrototypeGetBuffer,
@@ -656,15 +656,15 @@ function onDone(resolve, reject, err, result) {
 }
 
 function jobPromise(getJob) {
-  return new Promise((resolve, reject) => {
-    try {
-      const job = getJob();
-      job.ondone = FunctionPrototypeBind(onDone, job, resolve, reject);
-      job.run();
-    } catch (err) {
-      onDone(resolve, reject, err);
-    }
-  });
+  const { promise, resolve, reject } = PromiseWithResolvers();
+  try {
+    const job = getJob();
+    job.ondone = FunctionPrototypeBind(onDone, job, resolve, reject);
+    job.run();
+  } catch (err) {
+    onDone(resolve, reject, err);
+  }
+  return promise;
 }
 
 // In WebCrypto, the publicExponent option in RSA is represented as a
diff --git a/lib/internal/crypto/webidl.js b/lib/internal/crypto/webidl.js
index 581f541847faea..2b8ac167bc3627 100644
--- a/lib/internal/crypto/webidl.js
+++ b/lib/internal/crypto/webidl.js
@@ -195,12 +195,14 @@ converters.object = (V, opts) => {
 
 const isNonSharedArrayBuffer = isArrayBuffer;
 
+/**
+ * @param {string | object} V - The hash algorithm identifier (string or object).
+ * @param {string} label - The dictionary name for the error message.
+ */
 function ensureSHA(V, label) {
-  if (
-    typeof V === 'string' ?
-      !StringPrototypeStartsWith(StringPrototypeToLowerCase(V), 'sha') :
-      V.name?.toLowerCase?.().startsWith('sha') === false
-  )
+  const name = typeof V === 'string' ? V : V.name;
+  if (typeof name !== 'string' ||
+      !StringPrototypeStartsWith(StringPrototypeToLowerCase(name), 'sha'))
     throw lazyDOMException(
       `Only SHA hashes are supported in ${label}`, 'NotSupportedError');
 }

From af8d0922dd5410b31ff21650539bc4415d47b38a Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Thu, 12 Mar 2026 12:16:32 +0100
Subject: [PATCH 192/267] test: add WebCrypto Promise.prototype.then pollution
 regression tests

PR-URL: https://github.com/nodejs/node/pull/62226
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
---
 ...-webcrypto-promise-prototype-pollution.mjs | 95 +++++++++++++++++++
 1 file changed, 95 insertions(+)
 create mode 100644 test/parallel/test-webcrypto-promise-prototype-pollution.mjs

diff --git a/test/parallel/test-webcrypto-promise-prototype-pollution.mjs b/test/parallel/test-webcrypto-promise-prototype-pollution.mjs
new file mode 100644
index 00000000000000..b4fbedba5e3242
--- /dev/null
+++ b/test/parallel/test-webcrypto-promise-prototype-pollution.mjs
@@ -0,0 +1,95 @@
+import * as common from '../common/index.mjs';
+
+if (!common.hasCrypto) common.skip('missing crypto');
+
+// WebCrypto subtle methods must not leak intermediate values
+// through Promise.prototype.then pollution.
+// Regression test for https://github.com/nodejs/node/pull/61492
+// and https://github.com/nodejs/node/issues/59699.
+
+import { hasOpenSSL } from '../common/crypto.js';
+
+const { subtle } = globalThis.crypto;
+
+Promise.prototype.then = common.mustNotCall('Promise.prototype.then');
+
+await subtle.digest('SHA-256', new Uint8Array([1, 2, 3]));
+
+await subtle.generateKey({ name: 'AES-CBC', length: 256 }, true, ['encrypt', 'decrypt']);
+
+await subtle.generateKey({ name: 'ECDSA', namedCurve: 'P-256' }, true, ['sign', 'verify']);
+
+const rawKey = globalThis.crypto.getRandomValues(new Uint8Array(32));
+
+const importedKey = await subtle.importKey(
+  'raw', rawKey, { name: 'AES-CBC', length: 256 }, false, ['encrypt', 'decrypt']);
+
+const exportableKey = await subtle.importKey(
+  'raw', rawKey, { name: 'AES-CBC', length: 256 }, true, ['encrypt', 'decrypt']);
+
+await subtle.exportKey('raw', exportableKey);
+
+const iv = globalThis.crypto.getRandomValues(new Uint8Array(16));
+const plaintext = new TextEncoder().encode('Hello, world!');
+
+const ciphertext = await subtle.encrypt({ name: 'AES-CBC', iv }, importedKey, plaintext);
+
+await subtle.decrypt({ name: 'AES-CBC', iv }, importedKey, ciphertext);
+
+const signingKey = await subtle.generateKey(
+  { name: 'HMAC', hash: 'SHA-256' }, false, ['sign', 'verify']);
+
+const data = new TextEncoder().encode('test data');
+
+const signature = await subtle.sign('HMAC', signingKey, data);
+
+await subtle.verify('HMAC', signingKey, signature, data);
+
+const pbkdf2Key = await subtle.importKey(
+  'raw', rawKey, 'PBKDF2', false, ['deriveBits', 'deriveKey']);
+
+await subtle.deriveBits(
+  { name: 'PBKDF2', salt: rawKey, iterations: 1000, hash: 'SHA-256' },
+  pbkdf2Key, 256);
+
+await subtle.deriveKey(
+  { name: 'PBKDF2', salt: rawKey, iterations: 1000, hash: 'SHA-256' },
+  pbkdf2Key,
+  { name: 'AES-CBC', length: 256 },
+  true,
+  ['encrypt', 'decrypt']);
+
+const wrappingKey = await subtle.generateKey(
+  { name: 'AES-KW', length: 256 }, true, ['wrapKey', 'unwrapKey']);
+
+const keyToWrap = await subtle.generateKey(
+  { name: 'AES-CBC', length: 256 }, true, ['encrypt', 'decrypt']);
+
+const wrapped = await subtle.wrapKey('raw', keyToWrap, wrappingKey, 'AES-KW');
+
+await subtle.unwrapKey(
+  'raw', wrapped, wrappingKey, 'AES-KW',
+  { name: 'AES-CBC', length: 256 }, true, ['encrypt', 'decrypt']);
+
+const { privateKey } = await subtle.generateKey(
+  { name: 'ECDSA', namedCurve: 'P-256' }, true, ['sign', 'verify']);
+
+await subtle.getPublicKey(privateKey, ['verify']);
+
+if (hasOpenSSL(3, 5)) {
+  const kemPair = await subtle.generateKey(
+    { name: 'ML-KEM-768' }, false,
+    ['encapsulateKey', 'encapsulateBits', 'decapsulateKey', 'decapsulateBits']);
+
+  const { ciphertext: ct1 } = await subtle.encapsulateKey(
+    { name: 'ML-KEM-768' }, kemPair.publicKey, 'HKDF', false, ['deriveBits']);
+
+  await subtle.decapsulateKey(
+    { name: 'ML-KEM-768' }, kemPair.privateKey, ct1, 'HKDF', false, ['deriveBits']);
+
+  const { ciphertext: ct2 } = await subtle.encapsulateBits(
+    { name: 'ML-KEM-768' }, kemPair.publicKey);
+
+  await subtle.decapsulateBits(
+    { name: 'ML-KEM-768' }, kemPair.privateKey, ct2);
+}

From f7a408d6f711f8c23bfa3bf58c91b75a95f731b7 Mon Sep 17 00:00:00 2001
From: Guy Bedford <gbedford@cloudflare.com>
Date: Tue, 10 Mar 2026 22:12:44 -0400
Subject: [PATCH 193/267] wasm: support js string constant esm import

Extends the Wasm ESM Integration for importing WebAssembly
modules in either the source phase or instance phase to support
importing static JS string constants from the special
import name `wasm:js/string-constants`.

PR-URL: https://github.com/nodejs/node/pull/62198
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
---
 doc/api/esm.md                                  |   9 +++++++++
 lib/internal/modules/esm/translators.js         |   1 +
 .../fixtures/es-modules/js-string-builtins.wasm | Bin 325 -> 401 bytes
 test/fixtures/es-modules/js-string-builtins.wat |   8 ++++++++
 .../es-modules/test-wasm-js-string-builtins.mjs |   1 +
 5 files changed, 19 insertions(+)

diff --git a/doc/api/esm.md b/doc/api/esm.md
index d55f7f5c81386a..c3377fc7c29a71 100644
--- a/doc/api/esm.md
+++ b/doc/api/esm.md
@@ -800,6 +800,15 @@ imports and they cannot be inspected via `WebAssembly.Module.imports(mod)`
 or virtualized unless recompiling the module using the direct
 `WebAssembly.compile` API with string builtins disabled.
 
+String constants may also be imported from the `wasm:js/string-constants` builtin
+import URL, allowing static JS string globals to be defined:
+
+```text
+(module
+  (import "wasm:js/string-constants" "hello" (global $hello externref))
+)
+```
+
 Importing a module in the source phase before it has been instantiated will also
 use the compile-time builtins automatically:
 
diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js
index 22e10587dcea86..96696634543be2 100644
--- a/lib/internal/modules/esm/translators.js
+++ b/lib/internal/modules/esm/translators.js
@@ -521,6 +521,7 @@ translators.set('wasm', function(url, translateContext) {
   try {
     compiled = new WebAssembly.Module(source, {
       builtins: ['js-string'],
+      importedStringConstants: 'wasm:js/string-constants',
     });
   } catch (err) {
     err.message = errPath(url) + ': ' + err.message;
diff --git a/test/fixtures/es-modules/js-string-builtins.wasm b/test/fixtures/es-modules/js-string-builtins.wasm
index b4c08587dd08e715fa2a79fead8fc46143d949d2..fe520bab1fbbf5af043b905c4729d2e2ce2746fa 100644
GIT binary patch
delta 157
zcmX@gG?7__A+b1@k%57MQJf`#F`uzMfhj+qF(n^N)h948<}+opOjPjDkthc$w8|>h
zFD@y{%uClz&d)0@Nz5xLX3a>=$;oHVXJBS!VPIrpX18RSSg6a#k)B%O0g_>0<C15Y
vxKL7ng+ZBtn_(^^OI~7bDq|Y^#G_H%Y@9%4@n91s%QLERv2!poKnw%`gz_kJ

delta 100
zcmbQpe3VInA+b1@k%57MQJ6V_F`uzMfhj+qF(n^N)iZfAPgL>XWM*MzU}R#~W1cue
tSDj0WnT<h#L4bjq14t<_3NXSLOxz3|j4XMHxv7lNY!m-PO-^J~0|1j|5!3(x

diff --git a/test/fixtures/es-modules/js-string-builtins.wat b/test/fixtures/es-modules/js-string-builtins.wat
index 9bc55a8fa750cc..08f4ade8c4151c 100644
--- a/test/fixtures/es-modules/js-string-builtins.wat
+++ b/test/fixtures/es-modules/js-string-builtins.wat
@@ -4,11 +4,15 @@
   (import "wasm:js-string" "length" (func $string_length (param externref) (result i32)))
   (import "wasm:js-string" "concat" (func $string_concat (param externref externref) (result (ref extern))))
   (import "wasm:js-string" "equals" (func $string_equals (param externref externref) (result i32)))
+
+  ;; Import a string constant via importedStringConstants
+  (import "wasm:js/string-constants" "hello" (global $hello externref))
   
   ;; Export functions that use the builtins
   (export "getLength" (func $get_length))
   (export "concatStrings" (func $concat_strings))
   (export "compareStrings" (func $compare_strings))
+  (export "getHello" (func $get_hello))
   
   (func $get_length (param $str externref) (result i32)
     local.get $str
@@ -26,4 +30,8 @@
     local.get $str2
     call $string_equals
   )
+
+  (func $get_hello (result externref)
+    global.get $hello
+  )
 )
\ No newline at end of file
diff --git a/test/fixtures/es-modules/test-wasm-js-string-builtins.mjs b/test/fixtures/es-modules/test-wasm-js-string-builtins.mjs
index 2364f246b2558d..c76dcc39894932 100644
--- a/test/fixtures/es-modules/test-wasm-js-string-builtins.mjs
+++ b/test/fixtures/es-modules/test-wasm-js-string-builtins.mjs
@@ -6,3 +6,4 @@ strictEqual(wasmExports.getLength('hello'), 5);
 strictEqual(wasmExports.concatStrings('hello', ' world'), 'hello world');
 strictEqual(wasmExports.compareStrings('test', 'test'), 1);
 strictEqual(wasmExports.compareStrings('test', 'different'), 0);
+strictEqual(wasmExports.getHello(), 'hello');

From f3fd7ed426e274b8b6da86367b981698181d1fbb Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Sat, 14 Mar 2026 18:17:23 -0400
Subject: [PATCH 194/267] deps: update googletest to
 73a63ea05dc8ca29ec1d2c1d66481dd0de1950f1

PR-URL: https://github.com/nodejs/node/pull/61927
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
---
 .../include/gtest/gtest-test-part.h           |  9 ++++----
 deps/googletest/include/gtest/gtest.h         | 11 +++++----
 .../include/gtest/internal/gtest-internal.h   |  3 +--
 deps/googletest/src/gtest-test-part.cc        |  8 ++++---
 deps/googletest/src/gtest.cc                  | 23 +++++++++++++++----
 5 files changed, 37 insertions(+), 17 deletions(-)

diff --git a/deps/googletest/include/gtest/gtest-test-part.h b/deps/googletest/include/gtest/gtest-test-part.h
index 90380a973070b9..ce1e21945cf399 100644
--- a/deps/googletest/include/gtest/gtest-test-part.h
+++ b/deps/googletest/include/gtest/gtest-test-part.h
@@ -37,6 +37,7 @@
 #include <iosfwd>
 #include <ostream>
 #include <string>
+#include <string_view>
 #include <vector>
 
 #include "gtest/internal/gtest-internal.h"
@@ -65,10 +66,10 @@ class GTEST_API_ [[nodiscard]] TestPartResult {
   // C'tor.  TestPartResult does NOT have a default constructor.
   // Always use this constructor (with parameters) to create a
   // TestPartResult object.
-  TestPartResult(Type a_type, const char* a_file_name, int a_line_number,
-                 const char* a_message)
+  TestPartResult(Type a_type, std::string_view a_file_name, int a_line_number,
+                 std::string_view a_message)
       : type_(a_type),
-        file_name_(a_file_name == nullptr ? "" : a_file_name),
+        file_name_(a_file_name),
         line_number_(a_line_number),
         summary_(ExtractSummary(a_message)),
         message_(a_message) {}
@@ -112,7 +113,7 @@ class GTEST_API_ [[nodiscard]] TestPartResult {
 
   // Gets the summary of the failure message by omitting the stack
   // trace in it.
-  static std::string ExtractSummary(const char* message);
+  static std::string ExtractSummary(std::string_view message);
 
   // The name of the source file where the test part took place, or
   // "" if the source file is unknown.
diff --git a/deps/googletest/include/gtest/gtest.h b/deps/googletest/include/gtest/gtest.h
index b63685380c8a14..4218adebde20d8 100644
--- a/deps/googletest/include/gtest/gtest.h
+++ b/deps/googletest/include/gtest/gtest.h
@@ -57,6 +57,7 @@
 #include <set>
 #include <sstream>
 #include <string>
+#include <string_view>
 #include <type_traits>
 #include <vector>
 
@@ -1246,7 +1247,7 @@ class GTEST_API_ [[nodiscard]] UnitTest {
   // eventually call this to report their results.  The user code
   // should use the assertion macros instead of calling this directly.
   void AddTestPartResult(TestPartResult::Type result_type,
-                         const char* file_name, int line_number,
+                         std::string_view file_name, int line_number,
                          const std::string& message,
                          const std::string& os_stack_trace)
       GTEST_LOCK_EXCLUDED_(mutex_);
@@ -1619,6 +1620,8 @@ class GTEST_API_ [[nodiscard]] AssertHelper {
   // Constructor.
   AssertHelper(TestPartResult::Type type, const char* file, int line,
                const char* message);
+  AssertHelper(TestPartResult::Type type, std::string_view file, int line,
+               std::string_view message);
   ~AssertHelper();
 
   // Message assignment is a semantic trick to enable assertion
@@ -1632,12 +1635,12 @@ class GTEST_API_ [[nodiscard]] AssertHelper {
   // re-using stack space even for temporary variables, so every EXPECT_EQ
   // reserves stack space for another AssertHelper.
   struct AssertHelperData {
-    AssertHelperData(TestPartResult::Type t, const char* srcfile, int line_num,
-                     const char* msg)
+    AssertHelperData(TestPartResult::Type t, std::string_view srcfile,
+                     int line_num, std::string_view msg)
         : type(t), file(srcfile), line(line_num), message(msg) {}
 
     TestPartResult::Type const type;
-    const char* const file;
+    const std::string_view file;
     int const line;
     std::string const message;
 
diff --git a/deps/googletest/include/gtest/internal/gtest-internal.h b/deps/googletest/include/gtest/internal/gtest-internal.h
index 4379137d77eba3..7096355d5dd6be 100644
--- a/deps/googletest/include/gtest/internal/gtest-internal.h
+++ b/deps/googletest/include/gtest/internal/gtest-internal.h
@@ -1452,8 +1452,7 @@ class [[nodiscard]] NeverThrown {
     ;                                                                 \
   else                                                                \
     fail(::testing::internal::GetBoolAssertionFailureMessage(         \
-             gtest_ar_, text, #actual, #expected)                     \
-             .c_str())
+        gtest_ar_, text, #actual, #expected))
 
 #define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail)               \
   GTEST_AMBIGUOUS_ELSE_BLOCKER_                                     \
diff --git a/deps/googletest/src/gtest-test-part.cc b/deps/googletest/src/gtest-test-part.cc
index 6f8ddd7c485c2f..c7f993c8b4304d 100644
--- a/deps/googletest/src/gtest-test-part.cc
+++ b/deps/googletest/src/gtest-test-part.cc
@@ -34,7 +34,9 @@
 
 #include <ostream>
 #include <string>
+#include <string_view>
 
+#include "gtest/internal/gtest-internal.h"
 #include "gtest/internal/gtest-port.h"
 #include "src/gtest-internal-inl.h"
 
@@ -42,9 +44,9 @@ namespace testing {
 
 // Gets the summary of the failure message by omitting the stack trace
 // in it.
-std::string TestPartResult::ExtractSummary(const char* message) {
-  const char* const stack_trace = strstr(message, internal::kStackTraceMarker);
-  return stack_trace == nullptr ? message : std::string(message, stack_trace);
+std::string TestPartResult::ExtractSummary(const std::string_view message) {
+  auto stack_trace = message.find(internal::kStackTraceMarker);
+  return std::string(message.substr(0, stack_trace));
 }
 
 // Prints a TestPartResult object.
diff --git a/deps/googletest/src/gtest.cc b/deps/googletest/src/gtest.cc
index 193f880be27fff..8a3801807e7dfa 100644
--- a/deps/googletest/src/gtest.cc
+++ b/deps/googletest/src/gtest.cc
@@ -58,6 +58,7 @@
 #include <ostream>  // NOLINT
 #include <set>
 #include <sstream>
+#include <string_view>
 #include <unordered_set>
 #include <utility>
 #include <vector>
@@ -485,6 +486,15 @@ bool ShouldEmitStackTraceForResultType(TestPartResult::Type type) {
 // AssertHelper constructor.
 AssertHelper::AssertHelper(TestPartResult::Type type, const char* file,
                            int line, const char* message)
+    : AssertHelper(
+          type, file == nullptr ? std::string_view() : std::string_view(file),
+          line,
+          message == nullptr ? std::string_view() : std::string_view(message)) {
+}
+
+AssertHelper::AssertHelper(TestPartResult::Type type,
+                           const std::string_view file, int line,
+                           const std::string_view message)
     : data_(new AssertHelperData(type, file, line, message)) {}
 
 AssertHelper::~AssertHelper() { delete data_; }
@@ -875,7 +885,11 @@ class PositiveAndNegativeUnitTestFilter {
   // and does not match the negative filter.
   bool MatchesTest(const std::string& test_suite_name,
                    const std::string& test_name) const {
+#ifdef GTEST_HAS_ABSL
+    return MatchesName(absl::StrCat(test_suite_name, ".", test_name));
+#else
     return MatchesName(test_suite_name + "." + test_name);
+#endif
   }
 
   // Returns true if and only if name matches the positive filter and does not
@@ -2547,8 +2561,9 @@ void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
   // AddTestPartResult.
   UnitTest::GetInstance()->AddTestPartResult(
       result_type,
-      nullptr,  // No info about the source file where the exception occurred.
-      -1,       // We have no info on which line caused the exception.
+      std::string_view(),  // No info about the source file where the exception
+                           // occurred.
+      -1,  // We have no info on which line caused the exception.
       message,
       "");  // No stack trace, either.
 }
@@ -5428,8 +5443,8 @@ Environment* UnitTest::AddEnvironment(Environment* env) {
 // this to report their results.  The user code should use the
 // assertion macros instead of calling this directly.
 void UnitTest::AddTestPartResult(TestPartResult::Type result_type,
-                                 const char* file_name, int line_number,
-                                 const std::string& message,
+                                 const std::string_view file_name,
+                                 int line_number, const std::string& message,
                                  const std::string& os_stack_trace)
     GTEST_LOCK_EXCLUDED_(mutex_) {
   Message msg;

From ace802e59bdbec35941478f4d4fd9a5f811b5c46 Mon Sep 17 00:00:00 2001
From: Ilyas Shabi <ilyasshabi94@gmail.com>
Date: Sat, 14 Mar 2026 23:43:11 +0100
Subject: [PATCH 195/267] diagnostics_channel: add diagnostics channels for web
 locks

PR-URL: https://github.com/nodejs/node/pull/62123
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
---
 doc/api/diagnostics_channel.md                |  46 +++++
 lib/internal/locks.js                         |  60 ++++++-
 .../test-diagnostics-channel-web-locks.js     | 167 ++++++++++++++++++
 3 files changed, 270 insertions(+), 3 deletions(-)
 create mode 100644 test/parallel/test-diagnostics-channel-web-locks.js

diff --git a/doc/api/diagnostics_channel.md b/doc/api/diagnostics_channel.md
index 6e83e30cac9112..8b63fa813eb313 100644
--- a/doc/api/diagnostics_channel.md
+++ b/doc/api/diagnostics_channel.md
@@ -1443,6 +1443,50 @@ Emitted when [`child_process.spawn()`][] encounters an error.
 
 Emitted when [`process.execve()`][] is invoked.
 
+#### Web Locks
+
+> Stability: 1 - Experimental
+
+<!-- YAML
+added: REPLACEME
+-->
+
+These channels are emitted for each [`locks.request()`][] call. See
+[`worker_threads.locks`][] for details on Web Locks.
+
+##### Event: `'locks.request.start'`
+
+* `name` {string} The name of the requested lock resource.
+* `mode` {string} The lock mode: `'exclusive'` or `'shared'`.
+
+Emitted when a lock request is initiated, before the lock is granted.
+
+##### Event: `'locks.request.grant'`
+
+* `name` {string} The name of the requested lock resource.
+* `mode` {string} The lock mode: `'exclusive'` or `'shared'`.
+
+Emitted when a lock is successfully granted and the callback is about to run.
+
+##### Event: `'locks.request.miss'`
+
+* `name` {string} The name of the requested lock resource.
+* `mode` {string} The lock mode: `'exclusive'` or `'shared'`.
+
+Emitted when `ifAvailable` is `true` and the lock is not immediately available,
+and the request callback is invoked with `null` instead of a `Lock` object.
+
+##### Event: `'locks.request.end'`
+
+* `name` {string} The name of the requested lock resource.
+* `mode` {string} The lock mode: `'exclusive'` or `'shared'`.
+* `steal` {boolean} Whether the request uses steal semantics.
+* `ifAvailable` {boolean} Whether the request uses ifAvailable semantics.
+* `error` {Error|undefined} The error thrown by the callback, if any.
+
+Emitted when a lock request has finished, whether the callback succeeded,
+threw an error, or the lock was stolen.
+
 #### Worker Thread
 
 > Stability: 1 - Experimental
@@ -1472,7 +1516,9 @@ Emitted when a new thread is created.
 [`diagnostics_channel.tracingChannel()`]: #diagnostics_channeltracingchannelnameorchannels
 [`end` event]: #endevent
 [`error` event]: #errorevent
+[`locks.request()`]: worker_threads.md#locksrequestname-options-callback
 [`net.Server.listen()`]: net.md#serverlisten
 [`process.execve()`]: process.md#processexecvefile-args-env
 [`start` event]: #startevent
+[`worker_threads.locks`]: worker_threads.md#worker_threadslocks
 [context loss]: async_context.md#troubleshooting-context-loss
diff --git a/lib/internal/locks.js b/lib/internal/locks.js
index 054197bcaefcc6..05000e933f0b55 100644
--- a/lib/internal/locks.js
+++ b/lib/internal/locks.js
@@ -29,8 +29,13 @@ const {
   createEnumConverter,
   createDictionaryConverter,
 } = require('internal/webidl');
+const dc = require('diagnostics_channel');
 
 const locks = internalBinding('locks');
+const lockRequestStartChannel = dc.channel('locks.request.start');
+const lockRequestGrantChannel = dc.channel('locks.request.grant');
+const lockRequestMissChannel = dc.channel('locks.request.miss');
+const lockRequestEndChannel = dc.channel('locks.request.end');
 
 const kName = Symbol('kName');
 const kMode = Symbol('kMode');
@@ -113,6 +118,30 @@ function convertLockError(error) {
   return error;
 }
 
+function publishLockRequestStart(name, mode) {
+  if (lockRequestStartChannel.hasSubscribers) {
+    lockRequestStartChannel.publish({ name, mode });
+  }
+}
+
+function publishLockRequestGrant(name, mode) {
+  if (lockRequestGrantChannel.hasSubscribers) {
+    lockRequestGrantChannel.publish({ name, mode });
+  }
+}
+
+function publishLockRequestMiss(name, mode, ifAvailable) {
+  if (ifAvailable && lockRequestMissChannel.hasSubscribers) {
+    lockRequestMissChannel.publish({ name, mode });
+  }
+}
+
+function publishLockRequestEnd(name, mode, ifAvailable, steal, error) {
+  if (lockRequestEndChannel.hasSubscribers) {
+    lockRequestEndChannel.publish({ name, mode, ifAvailable, steal, error });
+  }
+}
+
 // https://w3c.github.io/web-locks/#api-lock-manager
 class LockManager {
   constructor(symbol = undefined) {
@@ -192,6 +221,7 @@ class LockManager {
     }
 
     const clientId = `node-${process.pid}-${threadId}`;
+    publishLockRequestStart(name, mode);
 
     // Handle requests with AbortSignal
     if (signal) {
@@ -212,6 +242,8 @@ class LockManager {
               return undefined;
             }
             lockGranted = true;
+            publishLockRequestGrant(name, mode);
+
             return callback(createLock(lock));
           });
         };
@@ -228,27 +260,49 @@ class LockManager {
 
           // When released promise settles, clean up listener and resolve main promise
           SafePromisePrototypeFinally(
-            PromisePrototypeThen(released, resolve, (error) => reject(convertLockError(error))),
+            PromisePrototypeThen(
+              released,
+              (result) => {
+                publishLockRequestEnd(name, mode, ifAvailable, steal, undefined);
+                resolve(result);
+              },
+              (error) => {
+                const convertedError = convertLockError(error);
+                publishLockRequestEnd(name, mode, ifAvailable, steal, convertedError);
+                reject(convertedError);
+              },
+            ),
             () => signal.removeEventListener('abort', abortListener),
           );
         } catch (error) {
           signal.removeEventListener('abort', abortListener);
-          reject(convertLockError(error));
+          const convertedError = convertLockError(error);
+          publishLockRequestEnd(name, mode, ifAvailable, steal, convertedError);
+          reject(convertedError);
         }
       });
     }
 
     // When ifAvailable: true and lock is not available, C++ passes null to indicate no lock granted
     const wrapCallback = (internalLock) => {
+      if (internalLock === null) {
+        publishLockRequestMiss(name, mode, ifAvailable);
+      } else {
+        publishLockRequestGrant(name, mode);
+      }
       const lock = createLock(internalLock);
       return callback(lock);
     };
 
     // Standard request without signal
     try {
-      return await locks.request(name, clientId, mode, steal, ifAvailable, wrapCallback);
+      const result = await locks.request(name, clientId, mode, steal, ifAvailable, wrapCallback);
+      publishLockRequestEnd(name, mode, ifAvailable, steal, undefined);
+
+      return result;
     } catch (error) {
       const convertedError = convertLockError(error);
+      publishLockRequestEnd(name, mode, ifAvailable, steal, convertedError);
       throw convertedError;
     }
   }
diff --git a/test/parallel/test-diagnostics-channel-web-locks.js b/test/parallel/test-diagnostics-channel-web-locks.js
new file mode 100644
index 00000000000000..dec0daef9868a0
--- /dev/null
+++ b/test/parallel/test-diagnostics-channel-web-locks.js
@@ -0,0 +1,167 @@
+'use strict';
+
+const common = require('../common');
+const { describe, it } = require('node:test');
+const assert = require('node:assert');
+const dc = require('node:diagnostics_channel');
+
+function subscribe({ start, grant, miss, end }) {
+  if (start) dc.subscribe('locks.request.start', start);
+  if (grant) dc.subscribe('locks.request.grant', grant);
+  if (miss) dc.subscribe('locks.request.miss', miss);
+  if (end) dc.subscribe('locks.request.end', end);
+
+  return () => {
+    if (start) dc.unsubscribe('locks.request.start', start);
+    if (grant) dc.unsubscribe('locks.request.grant', grant);
+    if (miss) dc.unsubscribe('locks.request.miss', miss);
+    if (end) dc.unsubscribe('locks.request.end', end);
+  };
+}
+
+describe('Web Locks diagnostics channel', () => {
+  it('emits start, grant, and end on success', async () => {
+    let startEvent;
+    const unsubscribe = subscribe({
+      start: common.mustCall((e) => startEvent = e),
+      grant: common.mustCall(),
+      miss: common.mustNotCall(),
+      end: common.mustCall(),
+    });
+
+    try {
+      const result = await navigator.locks.request('normal-lock', async () => 'done');
+      assert.strictEqual(result, 'done');
+      assert.strictEqual(startEvent.name, 'normal-lock');
+      assert.strictEqual(startEvent.mode, 'exclusive');
+    } finally {
+      unsubscribe();
+    }
+  });
+
+  it('emits start, miss, and end when lock is unavailable', async () => {
+    await navigator.locks.request('ifavailable-true-lock', common.mustCall(async () => {
+      let startEvent;
+      const unsubscribe = subscribe({
+        start: common.mustCall((e) => startEvent = e),
+        grant: common.mustNotCall(),
+        miss: common.mustCall(),
+        end: common.mustCall(),
+      });
+
+      try {
+        const result = await navigator.locks.request(
+          'ifavailable-true-lock',
+          { ifAvailable: true },
+          (lock) => lock,
+        );
+
+        assert.strictEqual(result, null);
+        assert.strictEqual(startEvent.name, 'ifavailable-true-lock');
+        assert.strictEqual(startEvent.mode, 'exclusive');
+      } finally {
+        unsubscribe();
+      }
+    }));
+  });
+
+  it('queued lock request emits start, grant, and end without miss', async () => {
+    // Outer fires first, inner is queued — so events arrive in insertion order
+    let outerStartEvent, innerStartEvent;
+    const unsubscribe = subscribe({
+      start: common.mustCall((e) => (outerStartEvent ? innerStartEvent = e : outerStartEvent = e), 2),
+      grant: common.mustCall(2),
+      miss: common.mustNotCall(),
+      end: common.mustCall(2),
+    });
+
+    try {
+      let innerDone;
+
+      const outerResult = await navigator.locks.request('ifavailable-false-lock', common.mustCall(async () => {
+        innerDone = navigator.locks.request(
+          'ifavailable-false-lock',
+          { ifAvailable: false },
+          common.mustCall(async (lock) => {
+            assert.ok(lock);
+            return 'inner-done';
+          }),
+        );
+        await new Promise((resolve) => setTimeout(resolve, 20));
+        return 'outer-done';
+      }));
+
+      assert.strictEqual(outerResult, 'outer-done');
+      assert.strictEqual(await innerDone, 'inner-done');
+
+      assert.strictEqual(outerStartEvent.name, 'ifavailable-false-lock');
+      assert.strictEqual(outerStartEvent.mode, 'exclusive');
+      assert.strictEqual(innerStartEvent.name, 'ifavailable-false-lock');
+      assert.strictEqual(innerStartEvent.mode, 'exclusive');
+    } finally {
+      unsubscribe();
+    }
+  });
+
+  it('reports callback error in end event', async () => {
+    const expectedError = new Error('Callback error');
+    let endEvent;
+    const unsubscribe = subscribe({
+      start: common.mustCall(),
+      grant: common.mustCall(),
+      miss: common.mustNotCall(),
+      end: common.mustCall((e) => endEvent = e),
+    });
+
+    try {
+      await assert.rejects(
+        navigator.locks.request('error-lock', async () => { throw expectedError; }),
+        (error) => error === expectedError,
+      );
+
+      assert.strictEqual(endEvent.name, 'error-lock');
+      assert.strictEqual(endEvent.mode, 'exclusive');
+      assert.strictEqual(endEvent.error, expectedError);
+    } finally {
+      unsubscribe();
+    }
+  });
+
+  it('stolen lock ends original request with AbortError', async () => {
+    let stolenEndEvent, stealerEndEvent;
+    const unsubscribe = subscribe({
+      start: common.mustCall(2),
+      grant: common.mustCall(2),
+      miss: common.mustNotCall(),
+      end: common.mustCall((e) => (e.steal ? stealerEndEvent = e : stolenEndEvent = e), 2),
+    });
+
+    try {
+      let resolveGranted;
+      const granted = new Promise((r) => { resolveGranted = r; });
+
+      const originalRejected = assert.rejects(
+        navigator.locks.request('steal-lock', async () => {
+          resolveGranted();
+          await new Promise((r) => setTimeout(r, 200));
+        }),
+        { name: 'AbortError' },
+      );
+
+      await granted;
+      await navigator.locks.request('steal-lock', { steal: true }, async () => {});
+      await originalRejected;
+
+      assert.strictEqual(stolenEndEvent.name, 'steal-lock');
+      assert.strictEqual(stolenEndEvent.mode, 'exclusive');
+      assert.strictEqual(stolenEndEvent.steal, false);
+      assert.strictEqual(stealerEndEvent.name, 'steal-lock');
+      assert.strictEqual(stealerEndEvent.mode, 'exclusive');
+      assert.strictEqual(stealerEndEvent.steal, true);
+      assert.strictEqual(stolenEndEvent.error.name, 'AbortError');
+      assert.strictEqual(stealerEndEvent.error, undefined);
+    } finally {
+      unsubscribe();
+    }
+  });
+});

From eee96f7f5dd2c900b471a2aa3dc46e2e59e0e097 Mon Sep 17 00:00:00 2001
From: Ilyas Shabi <ilyasshabi94@gmail.com>
Date: Sun, 15 Mar 2026 15:08:02 +0100
Subject: [PATCH 196/267] worker: heap profile optimizations
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62201
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Reviewed-By: theanarkh <theratliter@gmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
---
 src/node_worker.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/node_worker.cc b/src/node_worker.cc
index fa7dc52b19119e..1d07449c5293f0 100644
--- a/src/node_worker.cc
+++ b/src/node_worker.cc
@@ -1121,7 +1121,8 @@ static bool serializeProfile(Isolate* isolate, std::ostringstream& out_stream) {
   if (!profile) {
     return false;
   }
-  JSONWriter writer(out_stream, false);
+  profiler->StopSamplingHeapProfiler();
+  JSONWriter writer(out_stream, true);
   writer.json_start();
 
   writer.json_arraystart("samples");
@@ -1139,7 +1140,6 @@ static bool serializeProfile(Isolate* isolate, std::ostringstream& out_stream) {
   writer.json_objectend();
 
   writer.json_end();
-  profiler->StopSamplingHeapProfiler();
   return true;
 }
 

From bad48b9700a5e04f0db2299fcf14c026c47b140e Mon Sep 17 00:00:00 2001
From: Antoine du Hamel <duhamelantoine1995@gmail.com>
Date: Sun, 15 Mar 2026 19:23:34 +0100
Subject: [PATCH 197/267] tools: validate all commits that are pushed to `main`

PR-URL: https://github.com/nodejs/node/pull/62246
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
---
 .github/workflows/notify-on-push.yml | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml
index 9b704b788261ba..605a896541f2f3 100644
--- a/.github/workflows/notify-on-push.yml
+++ b/.github/workflows/notify-on-push.yml
@@ -30,20 +30,16 @@ jobs:
 
   validateCommitMessage:
     name: Notify on Push on `main` with invalid message
-    if: github.repository == 'nodejs/node'
     # cannot use ubuntu-slim here because rtCamp/action-slack-notify is dockerized
     runs-on: ubuntu-24.04-arm
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2
-        with:
-          persist-credentials: false
-      - name: Check commit message
+      - name: Validate commits
+        run: echo "$COMMITS" | npx -q core-validate-commit -
         id: commit-check
-        run: npx -q core-validate-commit "$COMMIT"
         env:
-          COMMIT: ${{ github.event.after }}
+          COMMITS: ${{ toJSON(github.event.commits) }}
       - name: Slack Notification
-        if: ${{ failure() && steps.commit-check.conclusion == 'failure' }}
+        if: ${{ failure() && steps.commit-check.conclusion == 'failure' && github.repository == 'nodejs/node' }}
         uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661  # 2.3.3
         env:
           SLACK_COLOR: '#DE512A'

From aad7b3cfcac08e44d8f05741c0529f604583797c Mon Sep 17 00:00:00 2001
From: Yagiz Nizipli <yagiz@nizipli.com>
Date: Sun, 15 Mar 2026 19:59:11 -0400
Subject: [PATCH 198/267] url: enable simdutf for ada
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/61477
Reviewed-By: Daniel Lemire <daniel@lemire.me>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Reviewed-By: Robert Nagy <ronagy@icloud.com>
---
 deps/ada/ada.gyp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/deps/ada/ada.gyp b/deps/ada/ada.gyp
index 4c8910dcb5c915..30054e63e567fd 100644
--- a/deps/ada/ada.gyp
+++ b/deps/ada/ada.gyp
@@ -6,10 +6,19 @@
     {
       'target_name': 'ada',
       'type': 'static_library',
-      'include_dirs': ['.'],
+      'include_dirs': [
+        '.',
+        '<(DEPTH)/deps/v8/third_party/simdutf',
+      ],
       'direct_dependent_settings': {
         'include_dirs': ['.'],
       },
+      'defines': [
+        'ADA_USE_SIMDUTF=1',
+      ],
+      'dependencies': [
+        '../../tools/v8_gypfiles/v8.gyp:simdutf',
+      ],
       'sources': [ '<@(ada_sources)' ]
     },
   ]

From 125bdbf504dd180202118d1f99eb2834d9136ef2 Mon Sep 17 00:00:00 2001
From: Antoine du Hamel <duhamelantoine1995@gmail.com>
Date: Mon, 16 Mar 2026 11:35:48 +0100
Subject: [PATCH 199/267] doc: clarify that any truthy value of `shell` is part
 of DEP0190
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62249
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 doc/api/deprecations.md | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md
index 71004f6170a933..3d3fdd0ff3e8af 100644
--- a/doc/api/deprecations.md
+++ b/doc/api/deprecations.md
@@ -4104,7 +4104,7 @@ Type: Documentation-only
 `process.features.tls_alpn`, `process.features.tls_ocsp`, and `process.features.tls_sni` are
 deprecated, as their values are guaranteed to be identical to that of `process.features.tls`.
 
-### DEP0190: Passing `args` to `node:child_process` `execFile`/`spawn` with `shell` option `true`
+### DEP0190: Passing `args` to `node:child_process` `execFile`/`spawn` with `shell` option
 
 <!-- YAML
 changes:
@@ -4121,7 +4121,8 @@ changes:
 Type: Runtime
 
 When an `args` array is passed to [`child_process.execFile`][] or [`child_process.spawn`][] with the option
-`{ shell: true }`, the values are not escaped, only space-separated, which can lead to shell injection.
+`{ shell: true }` or `{ shell: '/path/to/shell' }`, the values are not escaped, only space-separated,
+which can lead to shell injection.
 
 ### DEP0191: `repl.builtinModules`
 

From 2c9436b43d06ac94aa3b81919befe3a79081bdf2 Mon Sep 17 00:00:00 2001
From: Ali Hassan <24819103+thisalihassan@users.noreply.github.com>
Date: Mon, 16 Mar 2026 23:16:39 +0500
Subject: [PATCH 200/267] benchmark: fix destructuring in dgram/single-buffer

PR #59872 renamed the config key from `num` to `n` but did not update
the destructuring in main(), leaving `{ num: n }` which resolves to
undefined. This caused the benchmark to produce near-zero throughput
since the send-batching logic never fires when n is undefined.

Refs: https://github.com/nodejs/node/pull/59872
PR-URL: https://github.com/nodejs/node/pull/62084
Refs: https://github.com/nodejs/performance/issues/187
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 benchmark/crypto/hash-stream-creation.js       | 18 +++++++++---------
 benchmark/crypto/hash-stream-throughput.js     | 18 +++++++++---------
 benchmark/crypto/rsa-sign-verify-throughput.js | 12 ++++++------
 benchmark/dgram/single-buffer.js               |  4 ++--
 4 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/benchmark/crypto/hash-stream-creation.js b/benchmark/crypto/hash-stream-creation.js
index 5143be03263d74..0adb7d87f93959 100644
--- a/benchmark/crypto/hash-stream-creation.js
+++ b/benchmark/crypto/hash-stream-creation.js
@@ -5,7 +5,7 @@ const common = require('../common.js');
 const crypto = require('crypto');
 
 const bench = common.createBenchmark(main, {
-  writes: [500],
+  n: [500],
   algo: [ 'sha256', 'md5' ],
   type: ['asc', 'utf', 'buf'],
   out: ['hex', 'binary', 'buffer'],
@@ -13,7 +13,7 @@ const bench = common.createBenchmark(main, {
   api: ['legacy', 'stream'],
 });
 
-function main({ api, type, len, out, writes, algo }) {
+function main({ api, type, len, out, n, algo }) {
   if (api === 'stream' && /^v0\.[0-8]\./.test(process.version)) {
     console.error('Crypto streams not available until v0.10');
     // Use the legacy, just so that we can compare them.
@@ -41,15 +41,15 @@ function main({ api, type, len, out, writes, algo }) {
   const fn = api === 'stream' ? streamWrite : legacyWrite;
 
   bench.start();
-  fn(algo, message, encoding, writes, len, out);
+  fn(algo, message, encoding, n, len, out);
 }
 
-function legacyWrite(algo, message, encoding, writes, len, outEnc) {
-  const written = writes * len;
+function legacyWrite(algo, message, encoding, n, len, outEnc) {
+  const written = n * len;
   const bits = written * 8;
   const gbits = bits / (1024 * 1024 * 1024);
 
-  while (writes-- > 0) {
+  while (n-- > 0) {
     const h = crypto.createHash(algo);
     h.update(message, encoding);
     h.digest(outEnc);
@@ -58,12 +58,12 @@ function legacyWrite(algo, message, encoding, writes, len, outEnc) {
   bench.end(gbits);
 }
 
-function streamWrite(algo, message, encoding, writes, len, outEnc) {
-  const written = writes * len;
+function streamWrite(algo, message, encoding, n, len, outEnc) {
+  const written = n * len;
   const bits = written * 8;
   const gbits = bits / (1024 * 1024 * 1024);
 
-  while (writes-- > 0) {
+  while (n-- > 0) {
     const h = crypto.createHash(algo);
 
     if (outEnc !== 'buffer')
diff --git a/benchmark/crypto/hash-stream-throughput.js b/benchmark/crypto/hash-stream-throughput.js
index db10c439e0e446..4a5dbbd440ba16 100644
--- a/benchmark/crypto/hash-stream-throughput.js
+++ b/benchmark/crypto/hash-stream-throughput.js
@@ -5,14 +5,14 @@ const common = require('../common.js');
 const crypto = require('crypto');
 
 const bench = common.createBenchmark(main, {
-  writes: [500],
+  n: [500],
   algo: ['sha1', 'sha256', 'sha512'],
   type: ['asc', 'utf', 'buf'],
   len: [2, 1024, 102400, 1024 * 1024],
   api: ['legacy', 'stream'],
 });
 
-function main({ api, type, len, algo, writes }) {
+function main({ api, type, len, algo, n }) {
   if (api === 'stream' && /^v0\.[0-8]\./.test(process.version)) {
     console.error('Crypto streams not available until v0.10');
     // Use the legacy, just so that we can compare them.
@@ -40,16 +40,16 @@ function main({ api, type, len, algo, writes }) {
   const fn = api === 'stream' ? streamWrite : legacyWrite;
 
   bench.start();
-  fn(algo, message, encoding, writes, len);
+  fn(algo, message, encoding, n, len);
 }
 
-function legacyWrite(algo, message, encoding, writes, len) {
-  const written = writes * len;
+function legacyWrite(algo, message, encoding, n, len) {
+  const written = n * len;
   const bits = written * 8;
   const gbits = bits / (1024 * 1024 * 1024);
   const h = crypto.createHash(algo);
 
-  while (writes-- > 0)
+  while (n-- > 0)
     h.update(message, encoding);
 
   h.digest();
@@ -57,13 +57,13 @@ function legacyWrite(algo, message, encoding, writes, len) {
   bench.end(gbits);
 }
 
-function streamWrite(algo, message, encoding, writes, len) {
-  const written = writes * len;
+function streamWrite(algo, message, encoding, n, len) {
+  const written = n * len;
   const bits = written * 8;
   const gbits = bits / (1024 * 1024 * 1024);
   const h = crypto.createHash(algo);
 
-  while (writes-- > 0)
+  while (n-- > 0)
     h.write(message, encoding);
 
   h.end();
diff --git a/benchmark/crypto/rsa-sign-verify-throughput.js b/benchmark/crypto/rsa-sign-verify-throughput.js
index ceaa2942780a8e..8cdd1378b359dc 100644
--- a/benchmark/crypto/rsa-sign-verify-throughput.js
+++ b/benchmark/crypto/rsa-sign-verify-throughput.js
@@ -17,20 +17,20 @@ keylen_list.forEach((key) => {
 });
 
 const bench = common.createBenchmark(main, {
-  writes: [500],
+  n: [500],
   algo: ['SHA1', 'SHA224', 'SHA256', 'SHA384', 'SHA512'],
   keylen: keylen_list,
   len: [1024, 102400, 2 * 102400, 3 * 102400, 1024 * 1024],
 });
 
-function main({ len, algo, keylen, writes }) {
+function main({ len, algo, keylen, n }) {
   const message = Buffer.alloc(len, 'b');
   bench.start();
-  StreamWrite(algo, keylen, message, writes, len);
+  StreamWrite(algo, keylen, message, n, len);
 }
 
-function StreamWrite(algo, keylen, message, writes, len) {
-  const written = writes * len;
+function StreamWrite(algo, keylen, message, n, len) {
+  const written = n * len;
   const bits = written * 8;
   const kbits = bits / (1024);
 
@@ -38,7 +38,7 @@ function StreamWrite(algo, keylen, message, writes, len) {
   const s = crypto.createSign(algo);
   const v = crypto.createVerify(algo);
 
-  while (writes-- > 0) {
+  while (n-- > 0) {
     s.update(message);
     v.update(message);
   }
diff --git a/benchmark/dgram/single-buffer.js b/benchmark/dgram/single-buffer.js
index bab8cee1594f24..9ac41d15da8d20 100644
--- a/benchmark/dgram/single-buffer.js
+++ b/benchmark/dgram/single-buffer.js
@@ -5,7 +5,7 @@ const common = require('../common.js');
 const dgram = require('dgram');
 const PORT = common.PORT;
 
-// `num` is the number of send requests to queue up each time.
+// `n` is the number of send requests to queue up each time.
 // Keep it reasonably high (>10) otherwise you're benchmarking the speed of
 // event loop cycles more than anything else.
 const bench = common.createBenchmark(main, {
@@ -15,7 +15,7 @@ const bench = common.createBenchmark(main, {
   dur: [5],
 });
 
-function main({ dur, len, num: n, type }) {
+function main({ dur, len, n, type }) {
   const chunk = Buffer.allocUnsafe(len);
   let sent = 0;
   let received = 0;

From 679d18b57f0f5db83c7baf68ddcca41dcbeeaec2 Mon Sep 17 00:00:00 2001
From: Antoine du Hamel <duhamelantoine1995@gmail.com>
Date: Mon, 16 Mar 2026 19:39:56 +0100
Subject: [PATCH 201/267] esm: fix path normalization in `finalizeResolution`

PR-URL: https://github.com/nodejs/node/pull/62080
Refs: https://github.com/nodejs/node/pull/61478/changes/BASE..6cd90e1c0167f94c7dc671d10316e561c81f26af#r2871221559
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
---
 lib/internal/modules/esm/resolve.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js
index d253a3ff67280c..cbdc120302443c 100644
--- a/lib/internal/modules/esm/resolve.js
+++ b/lib/internal/modules/esm/resolve.js
@@ -245,7 +245,7 @@ function finalizeResolution(resolved, base, preserveSymlinks) {
   }
 
   const stats = internalFsBinding.internalModuleStat(
-    StringPrototypeEndsWith(internalFsBinding, path, '/') ? StringPrototypeSlice(path, -1) : path,
+    StringPrototypeEndsWith(path, '/') ? StringPrototypeSlice(path, -1) : path,
   );
 
   // Check for stats.isDirectory()

From bc5b9a04ada3b2e05fe93b174de13db75ac44eda Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 16 Mar 2026 23:02:31 +0000
Subject: [PATCH 202/267] tools: bump flatted from 3.3.3 to 3.4.1 in
 /tools/eslint

Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.3 to 3.4.1.
- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.3...v3.4.1)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: https://github.com/nodejs/node/pull/62255
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 tools/eslint/package-lock.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/eslint/package-lock.json b/tools/eslint/package-lock.json
index b8a33ce4881db3..75862d33c7e79c 100644
--- a/tools/eslint/package-lock.json
+++ b/tools/eslint/package-lock.json
@@ -1257,9 +1257,9 @@
       }
     },
     "node_modules/flatted": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
-      "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz",
+      "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==",
       "license": "ISC"
     },
     "node_modules/format": {

From 952d7150288f580644d2619432b729e04c721694 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Mon, 16 Mar 2026 20:59:29 -0400
Subject: [PATCH 203/267] deps: update sqlite to 3.51.3

PR-URL: https://github.com/nodejs/node/pull/62256
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com>
---
 deps/sqlite/sqlite3.c    | 8344 ++++++++++++++++----------------------
 deps/sqlite/sqlite3.h    |  253 +-
 deps/sqlite/sqlite3ext.h |   11 +-
 3 files changed, 3489 insertions(+), 5119 deletions(-)

diff --git a/deps/sqlite/sqlite3.c b/deps/sqlite/sqlite3.c
index 76d2887bf034c6..851a2504cd0bde 100644
--- a/deps/sqlite/sqlite3.c
+++ b/deps/sqlite/sqlite3.c
@@ -1,6 +1,6 @@
 /******************************************************************************
 ** This file is an amalgamation of many separate C source files from SQLite
-** version 3.52.0.  By combining all the individual C code files into this
+** version 3.51.3.  By combining all the individual C code files into this
 ** single large file, the entire code can be compiled as a single translation
 ** unit.  This allows many compilers to do optimizations that would not be
 ** possible if the files were compiled separately.  Performance improvements
@@ -18,7 +18,7 @@
 ** separate file. This file contains only code for the core SQLite library.
 **
 ** The content in this amalgamation comes from Fossil check-in
-** 557aeb43869d3585137b17690cb3b64f7de6 with changes in files:
+** 737ae4a34738ffa0c3ff7f9bb18df914dd1c with changes in files:
 **
 **    
 */
@@ -467,12 +467,12 @@ extern "C" {
 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
 ** [sqlite_version()] and [sqlite_source_id()].
 */
-#define SQLITE_VERSION        "3.52.0"
-#define SQLITE_VERSION_NUMBER 3052000
-#define SQLITE_SOURCE_ID      "2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6"
-#define SQLITE_SCM_BRANCH     "trunk"
-#define SQLITE_SCM_TAGS       "release major-release version-3.52.0"
-#define SQLITE_SCM_DATETIME   "2026-03-06T16:01:44.367Z"
+#define SQLITE_VERSION        "3.51.3"
+#define SQLITE_VERSION_NUMBER 3051003
+#define SQLITE_SOURCE_ID      "2026-03-13 10:38:09 737ae4a34738ffa0c3ff7f9bb18df914dd1cad163f28fd6b6e114a344fe6d618"
+#define SQLITE_SCM_BRANCH     "branch-3.51"
+#define SQLITE_SCM_TAGS       "release version-3.51.3"
+#define SQLITE_SCM_DATETIME   "2026-03-13T10:38:09.694Z"
 
 /*
 ** CAPI3REF: Run-Time Library Version Numbers
@@ -1811,7 +1811,7 @@ typedef const char *sqlite3_filename;
 ** greater and the function pointer is not NULL) and will fall back
 ** to xCurrentTime() if xCurrentTimeInt64() is unavailable.
 **
-** ^The xSetSystemCall(), xGetSystemCall(), and xNextSystemCall() interfaces
+** ^The xSetSystemCall(), xGetSystemCall(), and xNestSystemCall() interfaces
 ** are not used by the SQLite core.  These optional interfaces are provided
 ** by some VFSes to facilitate testing of the VFS code. By overriding
 ** system calls with functions under its control, a test program can
@@ -2888,15 +2888,12 @@ struct sqlite3_mem_methods {
 ** [[SQLITE_DBCONFIG_STMT_SCANSTATUS]]
 ** <dt>SQLITE_DBCONFIG_STMT_SCANSTATUS</dt>
 ** <dd>The SQLITE_DBCONFIG_STMT_SCANSTATUS option is only useful in
-** [SQLITE_ENABLE_STMT_SCANSTATUS] builds. In this case, it sets or clears
-** a flag that enables collection of run-time performance statistics
-** used by [sqlite3_stmt_scanstatus_v2()] and the [nexec and ncycle]
-** columns of the [bytecode virtual table].
-** For statistics to be collected, the flag must be set on
-** the database handle both when the SQL statement is
-** [sqlite3_prepare|prepared] and when it is [sqlite3_step|stepped].
-** The flag is set (collection of statistics is enabled) by default.
-** <p>This option takes two arguments: an integer and a pointer to
+** SQLITE_ENABLE_STMT_SCANSTATUS builds. In this case, it sets or clears
+** a flag that enables collection of the sqlite3_stmt_scanstatus_v2()
+** statistics. For statistics to be collected, the flag must be set on
+** the database handle both when the SQL statement is prepared and when it
+** is stepped. The flag is set (collection of statistics is enabled)
+** by default. <p>This option takes two arguments: an integer and a pointer to
 ** an integer.  The first argument is 1, 0, or -1 to enable, disable, or
 ** leave unchanged the statement scanstatus option.  If the second argument
 ** is not NULL, then the value of the statement scanstatus setting after
@@ -2969,22 +2966,6 @@ struct sqlite3_mem_methods {
 ** comments are allowed in SQL text after processing the first argument.
 ** </dd>
 **
-** [[SQLITE_DBCONFIG_FP_DIGITS]]
-** <dt>SQLITE_DBCONFIG_FP_DIGITS</dt>
-** <dd>The SQLITE_DBCONFIG_FP_DIGITS setting is a small integer that determines
-** the number of significant digits that SQLite will attempt to preserve when
-** converting floating point numbers (IEEE 754 "doubles") into text.  The
-** default value 17, as of SQLite version 3.52.0.  The value was 15 in all
-** prior versions.<p>
-** This option takes two arguments which are an integer and a pointer
-** to an integer.  The first argument is a small integer, between 3 and 23, or
-** zero.  The FP_DIGITS setting is changed to that small integer, or left
-** altered if the first argument is zero or out of range.  The second argument
-** is a pointer to an integer.  If the pointer is not NULL, then the value of
-** the FP_DIGITS setting, after possibly being modified by the first
-** arguments, is written into the integer to which the second argument points.
-** </dd>
-**
 ** </dl>
 **
 ** [[DBCONFIG arguments]] <h3>Arguments To SQLITE_DBCONFIG Options</h3>
@@ -3002,10 +2983,9 @@ struct sqlite3_mem_methods {
 ** the first argument.
 **
 ** <p>While most SQLITE_DBCONFIG options use the argument format
-** described in the previous paragraph, the [SQLITE_DBCONFIG_MAINDBNAME],
-** [SQLITE_DBCONFIG_LOOKASIDE], and [SQLITE_DBCONFIG_FP_DIGITS] options
-** are different.  See the documentation of those exceptional options for
-** details.
+** described in the previous paragraph, the [SQLITE_DBCONFIG_MAINDBNAME]
+** and [SQLITE_DBCONFIG_LOOKASIDE] options are different.  See the
+** documentation of those exceptional options for details.
 */
 #define SQLITE_DBCONFIG_MAINDBNAME            1000 /* const char* */
 #define SQLITE_DBCONFIG_LOOKASIDE             1001 /* void* int int */
@@ -3030,8 +3010,7 @@ struct sqlite3_mem_methods {
 #define SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE  1020 /* int int* */
 #define SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE   1021 /* int int* */
 #define SQLITE_DBCONFIG_ENABLE_COMMENTS       1022 /* int int* */
-#define SQLITE_DBCONFIG_FP_DIGITS             1023 /* int int* */
-#define SQLITE_DBCONFIG_MAX                   1023 /* Largest DBCONFIG */
+#define SQLITE_DBCONFIG_MAX                   1022 /* Largest DBCONFIG */
 
 /*
 ** CAPI3REF: Enable Or Disable Extended Result Codes
@@ -4513,7 +4492,6 @@ SQLITE_API void sqlite3_free_filename(sqlite3_filename);
 ** <li> sqlite3_errmsg()
 ** <li> sqlite3_errmsg16()
 ** <li> sqlite3_error_offset()
-** <li> sqlite3_db_handle()
 ** </ul>
 **
 ** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
@@ -4560,7 +4538,7 @@ SQLITE_API const char *sqlite3_errstr(int);
 SQLITE_API int sqlite3_error_offset(sqlite3 *db);
 
 /*
-** CAPI3REF: Set Error Code And Message
+** CAPI3REF: Set Error Codes And Message
 ** METHOD: sqlite3
 **
 ** Set the error code of the database handle passed as the first argument
@@ -4679,10 +4657,6 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 ** [[SQLITE_LIMIT_EXPR_DEPTH]] ^(<dt>SQLITE_LIMIT_EXPR_DEPTH</dt>
 ** <dd>The maximum depth of the parse tree on any expression.</dd>)^
 **
-** [[SQLITE_LIMIT_PARSER_DEPTH]] ^(<dt>SQLITE_LIMIT_PARSER_DEPTH</dt>
-** <dd>The maximum depth of the LALR(1) parser stack used to analyze
-** input SQL statements.</dd>)^
-**
 ** [[SQLITE_LIMIT_COMPOUND_SELECT]] ^(<dt>SQLITE_LIMIT_COMPOUND_SELECT</dt>
 ** <dd>The maximum number of terms in a compound SELECT statement.</dd>)^
 **
@@ -4727,7 +4701,6 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 #define SQLITE_LIMIT_VARIABLE_NUMBER           9
 #define SQLITE_LIMIT_TRIGGER_DEPTH            10
 #define SQLITE_LIMIT_WORKER_THREADS           11
-#define SQLITE_LIMIT_PARSER_DEPTH             12
 
 /*
 ** CAPI3REF: Prepare Flags
@@ -4772,29 +4745,12 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 ** fails, the sqlite3_prepare_v3() call returns the same error indications
 ** with or without this flag; it just omits the call to [sqlite3_log()] that
 ** logs the error.
-**
-** [[SQLITE_PREPARE_FROM_DDL]] <dt>SQLITE_PREPARE_FROM_DDL</dt>
-** <dd>The SQLITE_PREPARE_FROM_DDL flag causes the SQL compiler to enforce
-** security constraints that would otherwise only be enforced when parsing
-** the database schema.  In other words, the SQLITE_PREPARE_FROM_DDL flag
-** causes the SQL compiler to treat the SQL statement being prepared as if
-** it had come from an attacker.  When SQLITE_PREPARE_FROM_DDL is used and
-** [SQLITE_DBCONFIG_TRUSTED_SCHEMA] is off, SQL functions may only be called
-** if they are tagged with [SQLITE_INNOCUOUS] and virtual tables may only
-** be used if they are tagged with [SQLITE_VTAB_INNOCUOUS].  Best practice
-** is to use the SQLITE_PREPARE_FROM_DDL option when preparing any SQL that
-** is derived from parts of the database schema. In particular, virtual
-** table implementations that run SQL statements that are derived from
-** arguments to their CREATE VIRTUAL TABLE statement should always use
-** [sqlite3_prepare_v3()] and set the SQLITE_PREPARE_FROM_DDL flag to
-** prevent bypass of the [SQLITE_DBCONFIG_TRUSTED_SCHEMA] security checks.
 ** </dl>
 */
 #define SQLITE_PREPARE_PERSISTENT              0x01
 #define SQLITE_PREPARE_NORMALIZE               0x02
 #define SQLITE_PREPARE_NO_VTAB                 0x04
 #define SQLITE_PREPARE_DONT_LOG                0x10
-#define SQLITE_PREPARE_FROM_DDL                0x20
 
 /*
 ** CAPI3REF: Compiling An SQL Statement
@@ -4808,9 +4764,8 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 **
 ** The preferred routine to use is [sqlite3_prepare_v2()].  The
 ** [sqlite3_prepare()] interface is legacy and should be avoided.
-** [sqlite3_prepare_v3()] has an extra
-** [SQLITE_PREPARE_FROM_DDL|"prepFlags" option] that is some times
-** needed for special purpose or to pass along security restrictions.
+** [sqlite3_prepare_v3()] has an extra "prepFlags" option that is used
+** for special purposes.
 **
 ** The use of the UTF-8 interfaces is preferred, as SQLite currently
 ** does all parsing using UTF-8.  The UTF-16 interfaces are provided
@@ -5215,8 +5170,8 @@ typedef struct sqlite3_context sqlite3_context;
 ** it should be a pointer to well-formed UTF16 text.
 ** ^If the third parameter to sqlite3_bind_text64() is not NULL, then
 ** it should be a pointer to a well-formed unicode string that is
-** either UTF8 if the sixth parameter is SQLITE_UTF8 or SQLITE_UTF8_ZT,
-** or UTF16 otherwise.
+** either UTF8 if the sixth parameter is SQLITE_UTF8, or UTF16
+** otherwise.
 **
 ** [[byte-order determination rules]] ^The byte-order of
 ** UTF16 input text is determined by the byte-order mark (BOM, U+FEFF)
@@ -5262,15 +5217,10 @@ typedef struct sqlite3_context sqlite3_context;
 ** object and pointer to it must remain valid until then. ^SQLite will then
 ** manage the lifetime of its private copy.
 **
-** ^The sixth argument (the E argument)
-** to sqlite3_bind_text64(S,K,Z,N,D,E) must be one of
-** [SQLITE_UTF8], [SQLITE_UTF8_ZT], [SQLITE_UTF16], [SQLITE_UTF16BE],
-** or [SQLITE_UTF16LE] to specify the encoding of the text in the
-** third parameter, Z.  The special value [SQLITE_UTF8_ZT] means that the
-** string argument is both UTF-8 encoded and is zero-terminated.  In other
-** words, SQLITE_UTF8_ZT means that the Z array is allocated to hold at
-** least N+1 bytes and that the Z[N] byte is zero.  If
-** the E argument to sqlite3_bind_text64(S,K,Z,N,D,E) is not one of the
+** ^The sixth argument to sqlite3_bind_text64() must be one of
+** [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE]
+** to specify the encoding of the text in the third parameter.  If
+** the sixth argument to sqlite3_bind_text64() is not one of the
 ** allowed values shown above, or if the text encoding is different
 ** from the encoding specified by the sixth parameter, then the behavior
 ** is undefined.
@@ -6137,51 +6087,6 @@ SQLITE_API int sqlite3_create_window_function(
 **
 ** These constants define integer codes that represent the various
 ** text encodings supported by SQLite.
-**
-** <dl>
-** [[SQLITE_UTF8]] <dt>SQLITE_UTF8</dt><dd>Text is encoding as UTF-8</dd>
-**
-** [[SQLITE_UTF16LE]] <dt>SQLITE_UTF16LE</dt><dd>Text is encoding as UTF-16
-** with each code point being expressed "little endian" - the least significant
-** byte first.  This is the usual encoding, for example on Windows.</dd>
-**
-** [[SQLITE_UTF16BE]] <dt>SQLITE_UTF16BE</dt><dd>Text is encoding as UTF-16
-** with each code point being expressed "big endian" - the most significant
-** byte first.  This encoding is less common, but is still sometimes seen,
-** specially on older systems.
-**
-** [[SQLITE_UTF16]] <dt>SQLITE_UTF16</dt><dd>Text is encoding as UTF-16
-** with each code point being expressed either little endian or as big
-** endian, according to the native endianness of the host computer.
-**
-** [[SQLITE_ANY]] <dt>SQLITE_ANY</dt><dd>This encoding value may only be used
-** to declare the preferred text for [application-defined SQL functions]
-** created using [sqlite3_create_function()] and similar.  If the preferred
-** encoding (the 4th parameter to sqlite3_create_function() - the eTextRep
-** parameter) is SQLITE_ANY, that indicates that the function does not have
-** a preference regarding the text encoding of its parameters and can take
-** any text encoding that the SQLite core find convenient to supply.  This
-** option is deprecated.  Please do not use it in new applications.
-**
-** [[SQLITE_UTF16_ALIGNED]] <dt>SQLITE_UTF16_ALIGNED</dt><dd>This encoding
-** value may be used as the 3rd parameter (the eTextRep parameter) to
-** [sqlite3_create_collation()] and similar.  This encoding value means
-** that the application-defined collating sequence created expects its
-** input strings to be in UTF16 in native byte order, and that the start
-** of the strings must be aligned to a 2-byte boundary.
-**
-** [[SQLITE_UTF8_ZT]] <dt>SQLITE_UTF8_ZT</dt><dd>This option can only be
-** used to specify the text encoding to strings input to [sqlite3_result_text64()]
-** and [sqlite3_bind_text64()].  It means that the input string (call it "z")
-** is UTF-8 encoded and that it is zero-terminated.  If the length parameter
-** (call it "n") is non-negative, this encoding option means that the caller
-** guarantees that z array contains at least n+1 bytes and that the z[n]
-** byte has a value of zero.
-** This option gives the same output as SQLITE_UTF8, but can be more efficient
-** by avoiding the need to make a copy of the input string, in some cases.
-** However, if z is allocated to hold fewer than n+1 bytes or if the
-** z[n] byte is not zero, undefined behavior may result.
-** </dl>
 */
 #define SQLITE_UTF8           1    /* IMP: R-37514-35566 */
 #define SQLITE_UTF16LE        2    /* IMP: R-03371-37637 */
@@ -6189,7 +6094,6 @@ SQLITE_API int sqlite3_create_window_function(
 #define SQLITE_UTF16          4    /* Use native byte order */
 #define SQLITE_ANY            5    /* Deprecated */
 #define SQLITE_UTF16_ALIGNED  8    /* sqlite3_create_collation only */
-#define SQLITE_UTF8_ZT       16    /* Zero-terminated UTF8 */
 
 /*
 ** CAPI3REF: Function Flags
@@ -6695,14 +6599,10 @@ SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(voi
 **
 ** There is no limit (other than available memory) on the number of different
 ** client data pointers (with different names) that can be attached to a
-** single database connection.  However, the current implementation stores
-** the content on a linked list.  Insert and retrieval performance will
-** be proportional to the number of entries.  The design use case, and
-** the use case for which the implementation is optimized, is
-** that an application will store only small number of client data names,
-** typically just one or two.  This interface is not intended to be a
-** generalized key/value store for thousands or millions of keys.  It
-** will work for that, but performance might be disappointing.
+** single database connection.  However, the implementation is optimized
+** for the case of having only one or two different client data names.
+** Applications and wrapper libraries are discouraged from using more than
+** one client data name each.
 **
 ** There is no way to enumerate the client data pointers
 ** associated with a database connection.  The N parameter can be thought
@@ -6810,14 +6710,10 @@ typedef void (*sqlite3_destructor_type)(void*);
 ** set the return value of the application-defined function to be
 ** a text string which is represented as UTF-8, UTF-16 native byte order,
 ** UTF-16 little endian, or UTF-16 big endian, respectively.
-** ^The sqlite3_result_text64(C,Z,N,D,E) interface sets the return value of an
+** ^The sqlite3_result_text64() interface sets the return value of an
 ** application-defined function to be a text string in an encoding
-** specified the E parameter, which must be one
-** of [SQLITE_UTF8], [SQLITE_UTF8_ZT], [SQLITE_UTF16], [SQLITE_UTF16BE],
-** or [SQLITE_UTF16LE].  ^The special value [SQLITE_UTF8_ZT] means that
-** the result text is both UTF-8 and zero-terminated.  In other words,
-** SQLITE_UTF8_ZT means that the Z array holds at least N+1 byes and that
-** the Z[N] is zero.
+** specified by the fifth (and last) parameter, which must be one
+** of [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE].
 ** ^SQLite takes the text result from the application from
 ** the 2nd parameter of the sqlite3_result_text* interfaces.
 ** ^If the 3rd parameter to any of the sqlite3_result_text* interfaces
@@ -6904,7 +6800,7 @@ SQLITE_API void sqlite3_result_int(sqlite3_context*, int);
 SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
 SQLITE_API void sqlite3_result_null(sqlite3_context*);
 SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
-SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char *z, sqlite3_uint64 n,
+SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
                            void(*)(void*), unsigned char encoding);
 SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
 SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
@@ -7843,7 +7739,7 @@ SQLITE_API int sqlite3_table_column_metadata(
 ** ^The sqlite3_load_extension() interface attempts to load an
 ** [SQLite extension] library contained in the file zFile.  If
 ** the file cannot be loaded directly, attempts are made to load
-** with various operating-system specific filename extensions added.
+** with various operating-system specific extensions added.
 ** So for example, if "samplelib" cannot be loaded, then names like
 ** "samplelib.so" or "samplelib.dylib" or "samplelib.dll" might
 ** be tried also.
@@ -7851,10 +7747,10 @@ SQLITE_API int sqlite3_table_column_metadata(
 ** ^The entry point is zProc.
 ** ^(zProc may be 0, in which case SQLite will try to come up with an
 ** entry point name on its own.  It first tries "sqlite3_extension_init".
-** If that does not work, it tries names of the form "sqlite3_X_init"
-** where X consists of the lower-case equivalent of all ASCII alphabetic
-** characters or all ASCII alphanumeric characters in the filename from
-** the last "/" to the first following "." and omitting any initial "lib".)^
+** If that does not work, it constructs a name "sqlite3_X_init" where
+** X consists of the lower-case equivalent of all ASCII alphabetic
+** characters in the filename from the last "/" to the first following
+** "." and omitting any initial "lib".)^
 ** ^The sqlite3_load_extension() interface returns
 ** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
 ** ^If an error occurs and pzErrMsg is not 0, then the
@@ -9147,22 +9043,17 @@ SQLITE_API sqlite3_str *sqlite3_str_new(sqlite3*);
 ** pass the returned value to [sqlite3_free()] to avoid a memory leak.
 ** ^The [sqlite3_str_finish(X)] interface may return a NULL pointer if any
 ** errors were encountered during construction of the string.  ^The
-** [sqlite3_str_finish(X)] interface might also return a NULL pointer if the
+** [sqlite3_str_finish(X)] interface will also return a NULL pointer if the
 ** string in [sqlite3_str] object X is zero bytes long.
-**
-** ^The [sqlite3_str_free(X)] interface destroys both the sqlite3_str object
-** X and the string content it contains.  Calling sqlite3_str_free(X) is
-** the equivalent of calling [sqlite3_free](sqlite3_str_finish(X)).
 */
 SQLITE_API char *sqlite3_str_finish(sqlite3_str*);
-SQLITE_API void sqlite3_str_free(sqlite3_str*);
 
 /*
 ** CAPI3REF: Add Content To A Dynamic String
 ** METHOD: sqlite3_str
 **
-** These interfaces add or remove content to an sqlite3_str object
-** previously obtained from [sqlite3_str_new()].
+** These interfaces add content to an sqlite3_str object previously obtained
+** from [sqlite3_str_new()].
 **
 ** ^The [sqlite3_str_appendf(X,F,...)] and
 ** [sqlite3_str_vappendf(X,F,V)] interfaces uses the [built-in printf]
@@ -9185,10 +9076,6 @@ SQLITE_API void sqlite3_str_free(sqlite3_str*);
 ** ^The [sqlite3_str_reset(X)] method resets the string under construction
 ** inside [sqlite3_str] object X back to zero bytes in length.
 **
-** ^The [sqlite3_str_truncate(X,N)] method changes the length of the string
-** under construction to be N bytes are less.  This routine is a no-op if
-** N is negative or if the string is already N bytes or smaller in size.
-**
 ** These methods do not return a result code.  ^If an error occurs, that fact
 ** is recorded in the [sqlite3_str] object and can be recovered by a
 ** subsequent call to [sqlite3_str_errcode(X)].
@@ -9199,7 +9086,6 @@ SQLITE_API void sqlite3_str_append(sqlite3_str*, const char *zIn, int N);
 SQLITE_API void sqlite3_str_appendall(sqlite3_str*, const char *zIn);
 SQLITE_API void sqlite3_str_appendchar(sqlite3_str*, int N, char C);
 SQLITE_API void sqlite3_str_reset(sqlite3_str*);
-SQLITE_API void sqlite3_str_truncate(sqlite3_str*,int N);
 
 /*
 ** CAPI3REF: Status Of A Dynamic String
@@ -11033,9 +10919,9 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
 ** a variable pointed to by the "pOut" parameter.
 **
 ** The "flags" parameter must be passed a mask of flags. At present only
-** one flag is defined - [SQLITE_SCANSTAT_COMPLEX]. If SQLITE_SCANSTAT_COMPLEX
+** one flag is defined - SQLITE_SCANSTAT_COMPLEX. If SQLITE_SCANSTAT_COMPLEX
 ** is specified, then status information is available for all elements
-** of a query plan that are reported by "[EXPLAIN QUERY PLAN]" output. If
+** of a query plan that are reported by "EXPLAIN QUERY PLAN" output. If
 ** SQLITE_SCANSTAT_COMPLEX is not specified, then only query plan elements
 ** that correspond to query loops (the "SCAN..." and "SEARCH..." elements of
 ** the EXPLAIN QUERY PLAN output) are available. Invoking API
@@ -11049,8 +10935,7 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
 ** elements used to implement the statement - a non-zero value is returned and
 ** the variable that pOut points to is unchanged.
 **
-** See also: [sqlite3_stmt_scanstatus_reset()] and the
-** [nexec and ncycle] columnes of the [bytecode virtual table].
+** See also: [sqlite3_stmt_scanstatus_reset()]
 */
 SQLITE_API int sqlite3_stmt_scanstatus(
   sqlite3_stmt *pStmt,      /* Prepared statement for which info desired */
@@ -11592,41 +11477,19 @@ SQLITE_API int sqlite3_deserialize(
 /*
 ** CAPI3REF: Bind array values to the CARRAY table-valued function
 **
-** The sqlite3_carray_bind_v2(S,I,P,N,F,X,D) interface binds an array value to
-** parameter that is the first argument of the [carray() table-valued function].
-** The S parameter is a pointer to the [prepared statement] that uses the carray()
-** functions.  I is the parameter index to be bound.  I must be the index of the
-** parameter that is the first argument to the carray() table-valued function.
-** P is a pointer to the array to be bound, and N is the number of elements in
-** the array.  The F argument is one of constants [SQLITE_CARRAY_INT32],
-** [SQLITE_CARRAY_INT64], [SQLITE_CARRAY_DOUBLE], [SQLITE_CARRAY_TEXT],
-** or [SQLITE_CARRAY_BLOB] to indicate the datatype of the array P.
-**
-** If the X argument is not a NULL pointer or one of the special
-** values [SQLITE_STATIC] or [SQLITE_TRANSIENT], then SQLite will invoke
-** the function X with argument D when it is finished using the data in P.
-** The call to X(D) is a destructor for the array P. The destructor X(D)
-** is invoked even if the call to sqlite3_carray_bind() fails. If the X
-** parameter is the special-case value [SQLITE_STATIC], then SQLite assumes
-** that the data static and the destructor is never invoked.  If the X
-** parameter is the special-case value [SQLITE_TRANSIENT], then
-** sqlite3_carray_bind_v2() makes its own private copy of the data prior
-** to returning and never invokes the destructor X.
-**
-** The sqlite3_carray_bind() function works the same as sqlite_carray_bind_v2()
-** with a D parameter set to P.  In other words,
-** sqlite3_carray_bind(S,I,P,N,F,X) is same as
-** sqlite3_carray_bind(S,I,P,N,F,X,P).
-*/
-SQLITE_API int sqlite3_carray_bind_v2(
-  sqlite3_stmt *pStmt,        /* Statement to be bound */
-  int i,                      /* Parameter index */
-  void *aData,                /* Pointer to array data */
-  int nData,                  /* Number of data elements */
-  int mFlags,                 /* CARRAY flags */
-  void (*xDel)(void*),        /* Destructor for aData */
-  void *pDel                  /* Optional argument to xDel() */
-);
+** The sqlite3_carray_bind(S,I,P,N,F,X) interface binds an array value to
+** one of the first argument of the [carray() table-valued function].  The
+** S parameter is a pointer to the [prepared statement] that uses the carray()
+** functions.  I is the parameter index to be bound.  P is a pointer to the
+** array to be bound, and N is the number of eements in the array.  The
+** F argument is one of constants [SQLITE_CARRAY_INT32], [SQLITE_CARRAY_INT64],
+** [SQLITE_CARRAY_DOUBLE], [SQLITE_CARRAY_TEXT], or [SQLITE_CARRAY_BLOB] to
+** indicate the datatype of the array being bound.  The X argument is not a
+** NULL pointer, then SQLite will invoke the function X on the P parameter
+** after it has finished using P, even if the call to
+** sqlite3_carray_bind() fails. The special-case finalizer
+** SQLITE_TRANSIENT has no effect here.
+*/
 SQLITE_API int sqlite3_carray_bind(
   sqlite3_stmt *pStmt,        /* Statement to be bound */
   int i,                      /* Parameter index */
@@ -14527,42 +14390,21 @@ struct fts5_api {
 ** It used to be the case that setting this value to zero would
 ** turn the limit off.  That is no longer true.  It is not possible
 ** to turn this limit off.
-**
-** The hard limit is the largest possible 32-bit signed integer less
-** 1024, or 2147482624.
 */
 #ifndef SQLITE_MAX_SQL_LENGTH
 # define SQLITE_MAX_SQL_LENGTH 1000000000
 #endif
 
 /*
-** The maximum depth of an expression tree. The expression tree depth
-** is also limited indirectly by SQLITE_MAX_SQL_LENGTH and by
-** SQLITE_MAX_PARSER_DEPTH.  Reducing the maximum complexity of
-** expressions can help prevent excess memory usage by hostile SQL.
-**
-** A value of 0 for this compile-time option causes all expression
-** depth limiting code to be omitted.
+** The maximum depth of an expression tree. This is limited to
+** some extent by SQLITE_MAX_SQL_LENGTH. But sometime you might
+** want to place more severe limits on the complexity of an
+** expression. A value of 0 means that there is no limit.
 */
 #ifndef SQLITE_MAX_EXPR_DEPTH
 # define SQLITE_MAX_EXPR_DEPTH 1000
 #endif
 
-/*
-** The maximum depth of the LALR(1) stack used in the parser that
-** interprets SQL inputs. The parser stack depth can also be limited
-** indirectly by SQLITE_MAX_SQL_LENGTH.  Limiting the parser stack
-** depth can help prevent excess memory usage and excess CPU stack
-** usage when processing hostile SQL.
-**
-** Prior to version 3.45.0 (2024-01-15), the parser stack was
-** hard-coded to 100 entries, and that worked fine for almost all
-** applications.  So the upper bound on this limit need not be large.
-*/
-#ifndef SQLITE_MAX_PARSER_DEPTH
-# define SQLITE_MAX_PARSER_DEPTH 2500
-#endif
-
 /*
 ** The maximum number of terms in a compound SELECT statement.
 ** The code generator for compound SELECT statements does one
@@ -15448,7 +15290,6 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*);
 # define float sqlite_int64
 # define fabs(X) ((X)<0?-(X):(X))
 # define sqlite3IsOverflow(X) 0
-# define INFINITY (9223372036854775807LL)
 # ifndef SQLITE_BIG_DBL
 #   define SQLITE_BIG_DBL (((sqlite3_int64)1)<<50)
 # endif
@@ -15858,7 +15699,6 @@ typedef INT16_TYPE LogEst;
 #else
 # define EIGHT_BYTE_ALIGNMENT(X)   ((((uptr)(X) - (uptr)0)&7)==0)
 #endif
-#define TWO_BYTE_ALIGNMENT(X)      ((((uptr)(X) - (uptr)0)&1)==0)
 
 /*
 ** Disable MMAP on platforms where it is known to not work
@@ -17671,7 +17511,7 @@ typedef struct VdbeOpList VdbeOpList;
 ** Additional non-public SQLITE_PREPARE_* flags
 */
 #define SQLITE_PREPARE_SAVESQL  0x80  /* Preserve SQL text */
-#define SQLITE_PREPARE_MASK     0x3f  /* Mask of public flags */
+#define SQLITE_PREPARE_MASK     0x1f  /* Mask of public flags */
 
 /*
 ** Prototypes for the VDBE interface.  See comments on the implementation
@@ -17953,10 +17793,10 @@ struct PgHdr {
   PCache *pCache;                /* PRIVATE: Cache that owns this page */
   PgHdr *pDirty;                 /* Transient list of dirty sorted by pgno */
   Pager *pPager;                 /* The pager this page is part of */
+  Pgno pgno;                     /* Page number for this page */
 #ifdef SQLITE_CHECK_PAGES
-  u64 pageHash;                  /* Hash of page content */
+  u32 pageHash;                  /* Hash of page content */
 #endif
-  Pgno pgno;                     /* Page number for this page */
   u16 flags;                     /* PGHDR flags defined below */
 
   /**********************************************************************
@@ -18296,7 +18136,7 @@ struct Schema {
 ** The number of different kinds of things that can be limited
 ** using the sqlite3_limit() interface.
 */
-#define SQLITE_N_LIMIT (SQLITE_LIMIT_PARSER_DEPTH+1)
+#define SQLITE_N_LIMIT (SQLITE_LIMIT_WORKER_THREADS+1)
 
 /*
 ** Lookaside malloc is a set of fixed-size buffers that can be used
@@ -18450,7 +18290,6 @@ struct sqlite3 {
   u8 noSharedCache;             /* True if no shared-cache backends */
   u8 nSqlExec;                  /* Number of pending OP_SqlExec opcodes */
   u8 eOpenState;                /* Current condition of the connection */
-  u8 nFpDigit;                  /* Significant digits to keep on double->text */
   int nextPagesize;             /* Pagesize after VACUUM if >0 */
   i64 nChange;                  /* Value returned by sqlite3_changes() */
   i64 nTotalChange;             /* Value returned by sqlite3_total_changes() */
@@ -20345,6 +20184,19 @@ struct Upsert {
 /*
 ** An instance of the following structure contains all information
 ** needed to generate code for a single SELECT statement.
+**
+** See the header comment on the computeLimitRegisters() routine for a
+** detailed description of the meaning of the iLimit and iOffset fields.
+**
+** addrOpenEphm[] entries contain the address of OP_OpenEphemeral opcodes.
+** These addresses must be stored so that we can go back and fill in
+** the P4_KEYINFO and P2 parameters later.  Neither the KeyInfo nor
+** the number of columns in P2 can be computed at the same time
+** as the OP_OpenEphm instruction is coded because not
+** enough information about the compound query is known at that point.
+** The KeyInfo for addrOpenTran[0] and [1] contains collating sequences
+** for the result set.  The KeyInfo for addrOpenEphm[2] contains collating
+** sequences for the ORDER BY clause.
 */
 struct Select {
   u8 op;                 /* One of: TK_UNION TK_ALL TK_INTERSECT TK_EXCEPT */
@@ -20352,6 +20204,7 @@ struct Select {
   u32 selFlags;          /* Various SF_* values */
   int iLimit, iOffset;   /* Memory registers holding LIMIT & OFFSET counters */
   u32 selId;             /* Unique identifier number for this SELECT */
+  int addrOpenEphm[2];   /* OP_OpenEphem opcodes related to this select */
   ExprList *pEList;      /* The fields of the result */
   SrcList *pSrc;         /* The FROM clause */
   Expr *pWhere;          /* The WHERE clause */
@@ -20383,7 +20236,7 @@ struct Select {
 #define SF_Resolved      0x0000004 /* Identifiers have been resolved */
 #define SF_Aggregate     0x0000008 /* Contains agg functions or a GROUP BY */
 #define SF_HasAgg        0x0000010 /* Contains aggregate functions */
-#define SF_ClonedRhsIn   0x0000020 /* Cloned RHS of an IN operator */
+#define SF_UsesEphemeral 0x0000020 /* Uses the OpenEphemeral opcode */
 #define SF_Expanded      0x0000040 /* sqlite3SelectExpand() called on this */
 #define SF_HasTypeInfo   0x0000080 /* FROM subqueries have Table metadata */
 #define SF_Compound      0x0000100 /* Part of a compound query */
@@ -20393,14 +20246,14 @@ struct Select {
 #define SF_MinMaxAgg     0x0001000 /* Aggregate containing min() or max() */
 #define SF_Recursive     0x0002000 /* The recursive part of a recursive CTE */
 #define SF_FixedLimit    0x0004000 /* nSelectRow set by a constant LIMIT */
-/*                       0x0008000 // available for reuse */
+#define SF_MaybeConvert  0x0008000 /* Need convertCompoundSelectToSubquery() */
 #define SF_Converted     0x0010000 /* By convertCompoundSelectToSubquery() */
 #define SF_IncludeHidden 0x0020000 /* Include hidden columns in output */
 #define SF_ComplexResult 0x0040000 /* Result contains subquery or function */
 #define SF_WhereBegin    0x0080000 /* Really a WhereBegin() call.  Debug Only */
 #define SF_WinRewrite    0x0100000 /* Window function rewrite accomplished */
 #define SF_View          0x0200000 /* SELECT statement is a view */
-/*                       0x0400000 // available for reuse */
+#define SF_NoopOrderBy   0x0400000 /* ORDER BY is ignored for this query */
 #define SF_UFSrcCheck    0x0800000 /* Check pSrc as required by UPDATE...FROM */
 #define SF_PushDown      0x1000000 /* Modified by WHERE-clause push-down opt */
 #define SF_MultiPart     0x2000000 /* Has multiple incompatible PARTITIONs */
@@ -20420,6 +20273,11 @@ struct Select {
 ** by one of the following macros.  The "SRT" prefix means "SELECT Result
 ** Type".
 **
+**     SRT_Union       Store results as a key in a temporary index
+**                     identified by pDest->iSDParm.
+**
+**     SRT_Except      Remove results from the temporary index pDest->iSDParm.
+**
 **     SRT_Exists      Store a 1 in memory cell pDest->iSDParm if the result
 **                     set is not empty.
 **
@@ -20483,28 +20341,30 @@ struct Select {
 **                     table. (pDest->iSDParm) is the number of key columns in
 **                     each index record in this case.
 */
-#define SRT_Exists       1  /* Store 1 if the result is not empty */
-#define SRT_Discard      2  /* Do not save the results anywhere */
-#define SRT_DistFifo     3  /* Like SRT_Fifo, but unique results only */
-#define SRT_DistQueue    4  /* Like SRT_Queue, but unique results only */
+#define SRT_Union        1  /* Store result as keys in an index */
+#define SRT_Except       2  /* Remove result from a UNION index */
+#define SRT_Exists       3  /* Store 1 if the result is not empty */
+#define SRT_Discard      4  /* Do not save the results anywhere */
+#define SRT_DistFifo     5  /* Like SRT_Fifo, but unique results only */
+#define SRT_DistQueue    6  /* Like SRT_Queue, but unique results only */
 
 /* The DISTINCT clause is ignored for all of the above.  Not that
 ** IgnorableDistinct() implies IgnorableOrderby() */
 #define IgnorableDistinct(X) ((X->eDest)<=SRT_DistQueue)
 
-#define SRT_Queue        5  /* Store result in an queue */
-#define SRT_Fifo         6  /* Store result as data with an automatic rowid */
+#define SRT_Queue        7  /* Store result in an queue */
+#define SRT_Fifo         8  /* Store result as data with an automatic rowid */
 
 /* The ORDER BY clause is ignored for all of the above */
 #define IgnorableOrderby(X) ((X->eDest)<=SRT_Fifo)
 
-#define SRT_Output       7  /* Output each row of result */
-#define SRT_Mem          8  /* Store result in a memory cell */
-#define SRT_Set          9  /* Store results as keys in an index */
-#define SRT_EphemTab    10  /* Create transient tab and store like SRT_Table */
-#define SRT_Coroutine   11  /* Generate a single row of result */
-#define SRT_Table       12  /* Store result as data with an automatic rowid */
-#define SRT_Upfrom      13  /* Store result as data with rowid */
+#define SRT_Output       9  /* Output each row of result */
+#define SRT_Mem         10  /* Store result in a memory cell */
+#define SRT_Set         11  /* Store results as keys in an index */
+#define SRT_EphemTab    12  /* Create transient tab and store like SRT_Table */
+#define SRT_Coroutine   13  /* Generate a single row of result */
+#define SRT_Table       14  /* Store result as data with an automatic rowid */
+#define SRT_Upfrom      15  /* Store result as data with rowid */
 
 /*
 ** An instance of this object describes where to put of the results of
@@ -20640,12 +20500,17 @@ struct Parse {
   u8 nested;           /* Number of nested calls to the parser/code generator */
   u8 nTempReg;         /* Number of temporary registers in aTempReg[] */
   u8 isMultiWrite;     /* True if statement may modify/insert multiple rows */
+  u8 mayAbort;         /* True if statement may throw an ABORT exception */
+  u8 hasCompound;      /* Need to invoke convertCompoundSelectToSubquery() */
   u8 disableLookaside; /* Number of times lookaside has been disabled */
   u8 prepFlags;        /* SQLITE_PREPARE_* flags */
   u8 withinRJSubrtn;   /* Nesting level for RIGHT JOIN body subroutines */
+  u8 bHasExists;       /* Has a correlated "EXISTS (SELECT ....)" expression */
   u8 mSubrtnSig;       /* mini Bloom filter on available SubrtnSig.selId */
   u8 eTriggerOp;       /* TK_UPDATE, TK_INSERT or TK_DELETE */
+  u8 bReturning;       /* Coding a RETURNING trigger */
   u8 eOrconf;          /* Default ON CONFLICT policy for trigger steps */
+  u8 disableTriggers;  /* True to disable triggers */
 #if defined(SQLITE_DEBUG) || defined(SQLITE_COVERAGE_TEST)
   u8 earlyCleanup;     /* OOM inside sqlite3ParserAddCleanup() */
 #endif
@@ -20654,15 +20519,10 @@ struct Parse {
   u8 isCreate;         /* CREATE TABLE, INDEX, or VIEW (but not TRIGGER)
                        ** and ALTER TABLE ADD COLUMN. */
 #endif
-  bft disableTriggers:1; /* True to disable triggers */
-  bft mayAbort :1;     /* True if statement may throw an ABORT exception */
-  bft hasCompound :1;  /* Need to invoke convertCompoundSelectToSubquery() */
-  bft bReturning :1;   /* Coding a RETURNING trigger */
-  bft bHasExists :1;   /* Has a correlated "EXISTS (SELECT ....)" expression */
-  bft colNamesSet :1;  /* TRUE after OP_ColumnName has been issued to pVdbe */
-  bft bHasWith :1;     /* True if statement contains WITH */
-  bft okConstFactor:1; /* OK to factor out constants */
-  bft checkSchema :1;  /* Causes schema cookie check after an error */
+  bft colNamesSet :1;   /* TRUE after OP_ColumnName has been issued to pVdbe */
+  bft bHasWith :1;      /* True if statement contains WITH */
+  bft okConstFactor :1; /* OK to factor out constants */
+  bft checkSchema :1;   /* Causes schema cookie check after an error */
   int nRangeReg;       /* Size of the temporary register block */
   int iRangeReg;       /* First register in temporary register block */
   int nErr;            /* Number of errors seen */
@@ -20891,19 +20751,19 @@ struct Trigger {
 ** orconf    -> stores the ON CONFLICT algorithm
 ** pSelect   -> The content to be inserted - either a SELECT statement or
 **              a VALUES clause.
-** pSrc      -> Table to insert into.
+** zTarget   -> Dequoted name of the table to insert into.
 ** pIdList   -> If this is an INSERT INTO ... (<column-names>) VALUES ...
 **              statement, then this stores the column-names to be
 **              inserted into.
 ** pUpsert   -> The ON CONFLICT clauses for an Upsert
 **
 ** (op == TK_DELETE)
-** pSrc      -> Table to delete from
+** zTarget   -> Dequoted name of the table to delete from.
 ** pWhere    -> The WHERE clause of the DELETE statement if one is specified.
 **              Otherwise NULL.
 **
 ** (op == TK_UPDATE)
-** pSrc      -> Table to update, followed by any FROM clause tables.
+** zTarget   -> Dequoted name of the table to update.
 ** pWhere    -> The WHERE clause of the UPDATE statement if one is specified.
 **              Otherwise NULL.
 ** pExprList -> A list of the columns to update and the expressions to update
@@ -20923,7 +20783,8 @@ struct TriggerStep {
   u8 orconf;           /* OE_Rollback etc. */
   Trigger *pTrig;      /* The trigger that this step is a part of */
   Select *pSelect;     /* SELECT statement or RHS of INSERT INTO SELECT ... */
-  SrcList *pSrc;       /* Table to insert/update/delete */
+  char *zTarget;       /* Target table for DELETE, UPDATE, INSERT */
+  SrcList *pFrom;      /* FROM clause for UPDATE statement (if any) */
   Expr *pWhere;        /* The WHERE clause for DELETE or UPDATE steps */
   ExprList *pExprList; /* SET clause for UPDATE, or RETURNING clause */
   IdList *pIdList;     /* Column names for INSERT */
@@ -21006,11 +20867,10 @@ typedef struct {
 /*
 ** Allowed values for mInitFlags
 */
-#define INITFLAG_AlterMask     0x0007  /* Types of ALTER */
+#define INITFLAG_AlterMask     0x0003  /* Types of ALTER */
 #define INITFLAG_AlterRename   0x0001  /* Reparse after a RENAME */
 #define INITFLAG_AlterDrop     0x0002  /* Reparse after a DROP COLUMN */
 #define INITFLAG_AlterAdd      0x0003  /* Reparse after an ADD COLUMN */
-#define INITFLAG_AlterDropCons 0x0004  /* Reparse after an ADD COLUMN */
 
 /* Tuning parameters are set using SQLITE_TESTCTRL_TUNE and are controlled
 ** on debug-builds of the CLI using ".testctrl tune ID VALUE".  Tuning
@@ -21140,7 +21000,6 @@ struct Walker {
     NameContext *pNC;                         /* Naming context */
     int n;                                    /* A counter */
     int iCur;                                 /* A cursor number */
-    int sz;                                   /* String literal length */
     SrcList *pSrcList;                        /* FROM clause */
     struct CCurHint *pCCurHint;               /* Used by codeCursorHint() */
     struct RefSrcList *pRefSrcList;           /* sqlite3ReferencesSrcList() */
@@ -21545,20 +21404,7 @@ SQLITE_PRIVATE int sqlite3LookasideUsed(sqlite3*,int*);
 SQLITE_PRIVATE sqlite3_mutex *sqlite3Pcache1Mutex(void);
 SQLITE_PRIVATE sqlite3_mutex *sqlite3MallocMutex(void);
 
-
-/* The SQLITE_THREAD_MISUSE_WARNINGS compile-time option used to be called
-** SQLITE_ENABLE_MULTITHREADED_CHECKS.  Keep that older macro for backwards
-** compatibility, at least for a while... */
-#ifdef SQLITE_ENABLE_MULTITHREADED_CHECKS
-# define SQLITE_THREAD_MISUSE_WARNINGS 1
-#endif
-
-/* SQLITE_THREAD_MISUSE_ABORT implies SQLITE_THREAD_MISUSE_WARNINGS */
-#ifdef SQLITE_THREAD_MISUSE_ABORT
-# define SQLITE_THREAD_MISUSE_WARNINGS 1
-#endif
-
-#if defined(SQLITE_THREAD_MISUSE_WARNINGS) && !defined(SQLITE_MUTEX_OMIT)
+#if defined(SQLITE_ENABLE_MULTITHREADED_CHECKS) && !defined(SQLITE_MUTEX_OMIT)
 SQLITE_PRIVATE void sqlite3MutexWarnOnContention(sqlite3_mutex*);
 #else
 # define sqlite3MutexWarnOnContention(x)
@@ -21592,12 +21438,12 @@ struct PrintfArguments {
 ** value into an approximate decimal representation.
 */
 struct FpDecode {
+  char sign;           /* '+' or '-' */
+  char isSpecial;      /* 1: Infinity  2: NaN */
   int n;               /* Significant digits in the decode */
   int iDP;             /* Location of the decimal point */
   char *z;             /* Start of significant digits */
-  char zBuf[20];       /* Storage for significant digits */
-  char sign;           /* '+' or '-' */
-  char isSpecial;      /* 1: Infinity  2: NaN */
+  char zBuf[24];       /* Storage for significant digits */
 };
 
 SQLITE_PRIVATE void sqlite3FpDecode(FpDecode*,double,int,int);
@@ -21686,7 +21532,6 @@ SQLITE_PRIVATE int sqlite3NoTempsInRange(Parse*,int,int);
 #endif
 SQLITE_PRIVATE Expr *sqlite3ExprAlloc(sqlite3*,int,const Token*,int);
 SQLITE_PRIVATE Expr *sqlite3Expr(sqlite3*,int,const char*);
-SQLITE_PRIVATE Expr *sqlite3ExprInt32(sqlite3*,int);
 SQLITE_PRIVATE void sqlite3ExprAttachSubtrees(sqlite3*,Expr*,Expr*,Expr*);
 SQLITE_PRIVATE Expr *sqlite3PExpr(Parse*, int, Expr*, Expr*);
 SQLITE_PRIVATE void sqlite3PExprAddSelect(Parse*, Expr*, Select*);
@@ -21938,7 +21783,6 @@ SQLITE_PRIVATE int sqlite3ExprContainsSubquery(Expr*);
 SQLITE_PRIVATE int sqlite3ExprIsInteger(const Expr*, int*, Parse*);
 SQLITE_PRIVATE int sqlite3ExprCanBeNull(const Expr*);
 SQLITE_PRIVATE int sqlite3ExprNeedsNoAffinityChange(const Expr*, char);
-SQLITE_PRIVATE int sqlite3ExprIsLikeOperator(const Expr*);
 SQLITE_PRIVATE int sqlite3IsRowid(const char*);
 SQLITE_PRIVATE const char *sqlite3RowidAlias(Table *pTab);
 SQLITE_PRIVATE void sqlite3GenerateRowDelete(
@@ -22007,16 +21851,17 @@ SQLITE_PRIVATE   void sqlite3CodeRowTriggerDirect(Parse *, Trigger *, Table *, i
 SQLITE_PRIVATE   void sqlite3DeleteTriggerStep(sqlite3*, TriggerStep*);
 SQLITE_PRIVATE   TriggerStep *sqlite3TriggerSelectStep(sqlite3*,Select*,
                                         const char*,const char*);
-SQLITE_PRIVATE   TriggerStep *sqlite3TriggerInsertStep(Parse*,SrcList*, IdList*,
+SQLITE_PRIVATE   TriggerStep *sqlite3TriggerInsertStep(Parse*,Token*, IdList*,
                                         Select*,u8,Upsert*,
                                         const char*,const char*);
-SQLITE_PRIVATE   TriggerStep *sqlite3TriggerUpdateStep(Parse*,SrcList*,SrcList*,ExprList*,
+SQLITE_PRIVATE   TriggerStep *sqlite3TriggerUpdateStep(Parse*,Token*,SrcList*,ExprList*,
                                         Expr*, u8, const char*,const char*);
-SQLITE_PRIVATE   TriggerStep *sqlite3TriggerDeleteStep(Parse*,SrcList*, Expr*,
+SQLITE_PRIVATE   TriggerStep *sqlite3TriggerDeleteStep(Parse*,Token*, Expr*,
                                         const char*,const char*);
 SQLITE_PRIVATE   void sqlite3DeleteTrigger(sqlite3*, Trigger*);
 SQLITE_PRIVATE   void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*);
 SQLITE_PRIVATE   u32 sqlite3TriggerColmask(Parse*,Trigger*,ExprList*,int,int,Table*,int);
+SQLITE_PRIVATE   SrcList *sqlite3TriggerStepSrc(Parse*, TriggerStep*);
 # define sqlite3ParseToplevel(p) ((p)->pToplevel ? (p)->pToplevel : (p))
 # define sqlite3IsToplevel(p) ((p)->pToplevel==0)
 #else
@@ -22030,6 +21875,7 @@ SQLITE_PRIVATE   u32 sqlite3TriggerColmask(Parse*,Trigger*,ExprList*,int,int,Tab
 # define sqlite3ParseToplevel(p) p
 # define sqlite3IsToplevel(p) 1
 # define sqlite3TriggerColmask(A,B,C,D,E,F,G) 0
+# define sqlite3TriggerStepSrc(A,B) 0
 #endif
 
 SQLITE_PRIVATE int sqlite3JoinType(Parse*, Token*, Token*, Token*);
@@ -22062,7 +21908,7 @@ SQLITE_PRIVATE int sqlite3FixTriggerStep(DbFixer*, TriggerStep*);
 SQLITE_PRIVATE int sqlite3RealSameAsInt(double,sqlite3_int64);
 SQLITE_PRIVATE i64 sqlite3RealToI64(double);
 SQLITE_PRIVATE int sqlite3Int64ToText(i64,char*);
-SQLITE_PRIVATE int sqlite3AtoF(const char *z, double*);
+SQLITE_PRIVATE int sqlite3AtoF(const char *z, double*, int, u8);
 SQLITE_PRIVATE int sqlite3GetInt32(const char *, int*);
 SQLITE_PRIVATE int sqlite3GetUInt32(const char*, u32*);
 SQLITE_PRIVATE int sqlite3Atoi(const char*);
@@ -22206,13 +22052,10 @@ SQLITE_PRIVATE void sqlite3Reindex(Parse*, Token*, Token*);
 SQLITE_PRIVATE void sqlite3AlterFunctions(void);
 SQLITE_PRIVATE void sqlite3AlterRenameTable(Parse*, SrcList*, Token*);
 SQLITE_PRIVATE void sqlite3AlterRenameColumn(Parse*, SrcList*, Token*, Token*);
-SQLITE_PRIVATE void sqlite3AlterDropConstraint(Parse*,SrcList*,Token*,Token*);
-SQLITE_PRIVATE void sqlite3AlterAddConstraint(Parse*,SrcList*,Token*,Token*,const char*,int);
-SQLITE_PRIVATE void sqlite3AlterSetNotNull(Parse*, SrcList*, Token*, Token*);
 SQLITE_PRIVATE i64 sqlite3GetToken(const unsigned char *, int *);
 SQLITE_PRIVATE void sqlite3NestedParse(Parse*, const char*, ...);
 SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3*, int);
-SQLITE_PRIVATE void sqlite3CodeRhsOfIN(Parse*, Expr*, int, int);
+SQLITE_PRIVATE void sqlite3CodeRhsOfIN(Parse*, Expr*, int);
 SQLITE_PRIVATE int sqlite3CodeSubselect(Parse*, Expr*);
 SQLITE_PRIVATE void sqlite3SelectPrep(Parse*, Select*, NameContext*);
 SQLITE_PRIVATE int sqlite3ExpandSubquery(Parse*, SrcItem*);
@@ -24627,7 +24470,6 @@ SQLITE_PRIVATE void sqlite3VdbeMemShallowCopy(Mem*, const Mem*, int);
 SQLITE_PRIVATE void sqlite3VdbeMemMove(Mem*, Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemNulTerminate(Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemSetStr(Mem*, const char*, i64, u8, void(*)(void*));
-SQLITE_PRIVATE int sqlite3VdbeMemSetText(Mem*, const char*, i64, void(*)(void*));
 SQLITE_PRIVATE void sqlite3VdbeMemSetInt64(Mem*, i64);
 #ifdef SQLITE_OMIT_FLOATING_POINT
 # define sqlite3VdbeMemSetDouble sqlite3VdbeMemSetInt64
@@ -24646,14 +24488,13 @@ SQLITE_PRIVATE int sqlite3VdbeMemSetZeroBlob(Mem*,int);
 SQLITE_PRIVATE int sqlite3VdbeMemIsRowSet(const Mem*);
 #endif
 SQLITE_PRIVATE int sqlite3VdbeMemSetRowSet(Mem*);
-SQLITE_PRIVATE int sqlite3VdbeMemZeroTerminateIfAble(Mem*);
+SQLITE_PRIVATE void sqlite3VdbeMemZeroTerminateIfAble(Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem*, u8, u8);
 SQLITE_PRIVATE int sqlite3IntFloatCompare(i64,double);
 SQLITE_PRIVATE i64 sqlite3VdbeIntValue(const Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemIntegerify(Mem*);
 SQLITE_PRIVATE double sqlite3VdbeRealValue(Mem*);
-SQLITE_PRIVATE SQLITE_NOINLINE double sqlite3MemRealValueRC(Mem*, int*);
 SQLITE_PRIVATE int sqlite3VdbeBooleanValue(Mem*, int ifNull);
 SQLITE_PRIVATE void sqlite3VdbeIntegerAffinity(Mem*);
 SQLITE_PRIVATE int sqlite3VdbeMemRealify(Mem*);
@@ -25613,7 +25454,7 @@ static int parseDateOrTime(
     return 0;
   }else if( sqlite3StrICmp(zDate,"now")==0 && sqlite3NotPureFunc(context) ){
     return setDateTimeToCurrent(context, p);
-  }else if( sqlite3AtoF(zDate, &r)>0 ){
+  }else if( sqlite3AtoF(zDate, &r, sqlite3Strlen30(zDate), SQLITE_UTF8)>0 ){
     setRawDateNumber(p, r);
     return 0;
   }else if( (sqlite3StrICmp(zDate,"subsec")==0
@@ -26059,7 +25900,7 @@ static int parseModifier(
       ** date is already on the appropriate weekday, this is a no-op.
       */
       if( sqlite3_strnicmp(z, "weekday ", 8)==0
-               && sqlite3AtoF(&z[8], &r)>0
+               && sqlite3AtoF(&z[8], &r, sqlite3Strlen30(&z[8]), SQLITE_UTF8)>0
                && r>=0.0 && r<7.0 && (n=(int)r)==r ){
         sqlite3_int64 Z;
         computeYMD_HMS(p);
@@ -26130,11 +25971,9 @@ static int parseModifier(
     case '8':
     case '9': {
       double rRounder;
-      int i, rx;
+      int i;
       int Y,M,D,h,m,x;
       const char *z2 = z;
-      char *zCopy;
-      sqlite3 *db = sqlite3_context_db_handle(pCtx);
       char z0 = z[0];
       for(n=1; z[n]; n++){
         if( z[n]==':' ) break;
@@ -26144,11 +25983,7 @@ static int parseModifier(
           if( n==6 && getDigits(&z[1], "50f", &Y)==1 ) break;
         }
       }
-      zCopy = sqlite3DbStrNDup(db, z, n);
-      if( zCopy==0 ) break;
-      rx = sqlite3AtoF(zCopy, &r)<=0;
-      sqlite3DbFree(db, zCopy);
-      if( rx ){
+      if( sqlite3AtoF(z, &r, n, SQLITE_UTF8)<=0 ){
         assert( rc==1 );
         break;
       }
@@ -26968,7 +26803,7 @@ static void datedebugFunc(
     char *zJson;
     zJson = sqlite3_mprintf(
       "{iJD:%lld,Y:%d,M:%d,D:%d,h:%d,m:%d,tz:%d,"
-      "s:%.3f,validJD:%d,validYMD:%d,validHMS:%d,"
+      "s:%.3f,validJD:%d,validYMS:%d,validHMS:%d,"
       "nFloor:%d,rawS:%d,isError:%d,useSubsec:%d,"
       "isUtc:%d,isLocal:%d}",
       x.iJD, x.Y, x.M, x.D, x.h, x.m, x.tz,
@@ -29747,28 +29582,23 @@ static SQLITE_WSD int mutexIsInit = 0;
 
 #ifndef SQLITE_MUTEX_OMIT
 
-#ifdef SQLITE_THREAD_MISUSE_WARNINGS
+#ifdef SQLITE_ENABLE_MULTITHREADED_CHECKS
 /*
-** This block (enclosed by SQLITE_THREAD_MISUSE_WARNINGS) contains
+** This block (enclosed by SQLITE_ENABLE_MULTITHREADED_CHECKS) contains
 ** the implementation of a wrapper around the system default mutex
 ** implementation (sqlite3DefaultMutex()).
 **
 ** Most calls are passed directly through to the underlying default
 ** mutex implementation. Except, if a mutex is configured by calling
 ** sqlite3MutexWarnOnContention() on it, then if contention is ever
-** encountered within xMutexEnter() then a warning is emitted via
-** sqlite3_log().  Furthermore, if SQLITE_THREAD_MISUSE_ABORT is
-** defined then abort() is called after the sqlite3_log() warning.
+** encountered within xMutexEnter() a warning is emitted via sqlite3_log().
 **
-** This type of mutex is used on the database handle mutex when testing
-** apps that usually use SQLITE_CONFIG_MULTITHREAD mode.  A failure
-** indicates that the app ought to be using SQLITE_OPEN_FULLMUTEX or
-** similar because it is trying to use the same database handle from
-** two different connections at the same time.
+** This type of mutex is used as the database handle mutex when testing
+** apps that usually use SQLITE_CONFIG_MULTITHREAD mode.
 */
 
 /*
-** Type for all mutexes used when SQLITE_THREAD_MISUSE_WARNINGS
+** Type for all mutexes used when SQLITE_ENABLE_MULTITHREADED_CHECKS
 ** is defined. Variable CheckMutex.mutex is a pointer to the real mutex
 ** allocated by the system mutex implementation. Variable iType is usually set
 ** to the type of mutex requested - SQLITE_MUTEX_RECURSIVE, SQLITE_MUTEX_FAST
@@ -29804,12 +29634,11 @@ static int checkMutexNotheld(sqlite3_mutex *p){
 */
 static int checkMutexInit(void){
   pGlobalMutexMethods = sqlite3DefaultMutex();
-  return pGlobalMutexMethods->xMutexInit();
+  return SQLITE_OK;
 }
 static int checkMutexEnd(void){
-  int rc = pGlobalMutexMethods->xMutexEnd();
   pGlobalMutexMethods = 0;
-  return rc;
+  return SQLITE_OK;
 }
 
 /*
@@ -29886,9 +29715,6 @@ static void checkMutexEnter(sqlite3_mutex *p){
     sqlite3_log(SQLITE_MISUSE,
         "illegal multi-threaded access to database connection"
     );
-#if SQLITE_THREAD_MISUSE_ABORT
-    abort();
-#endif
   }
   pGlobalMutexMethods->xMutexEnter(pCheck->mutex);
 }
@@ -29940,7 +29766,7 @@ SQLITE_PRIVATE void sqlite3MutexWarnOnContention(sqlite3_mutex *p){
     pCheck->iType = SQLITE_MUTEX_WARNONCONTENTION;
   }
 }
-#endif   /* ifdef SQLITE_THREAD_MISUSE_WARNINGS */
+#endif   /* ifdef SQLITE_ENABLE_MULTITHREADED_CHECKS */
 
 /*
 ** Initialize the mutex system.
@@ -29957,7 +29783,7 @@ SQLITE_PRIVATE int sqlite3MutexInit(void){
     sqlite3_mutex_methods *pTo = &sqlite3GlobalConfig.mutex;
 
     if( sqlite3GlobalConfig.bCoreMutex ){
-#ifdef SQLITE_THREAD_MISUSE_WARNINGS
+#ifdef SQLITE_ENABLE_MULTITHREADED_CHECKS
       pFrom = multiThreadedCheckMutex();
 #else
       pFrom = sqlite3DefaultMutex();
@@ -30805,6 +30631,14 @@ SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){
 # define SQLITE_OS_WINCE 0
 #endif
 
+/*
+** Determine if we are dealing with WinRT, which provides only a subset of
+** the full Win32 API.
+*/
+#if !defined(SQLITE_OS_WINRT)
+# define SQLITE_OS_WINRT 0
+#endif
+
 /*
 ** For WinCE, some API function parameters do not appear to be declared as
 ** volatile.
@@ -30819,7 +30653,7 @@ SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){
 ** For some Windows sub-platforms, the _beginthreadex() / _endthreadex()
 ** functions are not available (e.g. those not using MSVC, Cygwin, etc).
 */
-#if SQLITE_OS_WIN && !SQLITE_OS_WINCE && \
+#if SQLITE_OS_WIN && !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && \
     SQLITE_THREADSAFE>0 && !defined(__CYGWIN__)
 # define SQLITE_OS_WIN_THREADS 1
 #else
@@ -30936,7 +30770,11 @@ static int winMutexInit(void){
   if( InterlockedCompareExchange(&winMutex_lock, 1, 0)==0 ){
     int i;
     for(i=0; i<ArraySize(winMutex_staticMutexes); i++){
+#if SQLITE_OS_WINRT
+      InitializeCriticalSectionEx(&winMutex_staticMutexes[i].mutex, 0, 0);
+#else
       InitializeCriticalSection(&winMutex_staticMutexes[i].mutex);
+#endif
     }
     winMutex_isInit = 1;
   }else{
@@ -31026,7 +30864,11 @@ static sqlite3_mutex *winMutexAlloc(int iType){
         p->trace = 1;
 #endif
 #endif
+#if SQLITE_OS_WINRT
+        InitializeCriticalSectionEx(&p->mutex, 0, 0);
+#else
         InitializeCriticalSection(&p->mutex);
+#endif
       }
       break;
     }
@@ -32651,7 +32493,7 @@ SQLITE_API void sqlite3_str_vappendf(
         }else{
           iRound = precision+1;
         }
-        sqlite3FpDecode(&s, realvalue, iRound, flag_altform2 ? 20 : 16);
+        sqlite3FpDecode(&s, realvalue, iRound, flag_altform2 ? 26 : 16);
         if( s.isSpecial ){
           if( s.isSpecial==2 ){
             bufpt = flag_zeropad ? "null" : "NaN";
@@ -33330,14 +33172,6 @@ SQLITE_API int sqlite3_str_length(sqlite3_str *p){
   return p ? p->nChar : 0;
 }
 
-/* Truncate the text of the string to be no more than N bytes. */
-SQLITE_API void sqlite3_str_truncate(sqlite3_str *p, int N){
-  if( p!=0 && N>=0 && (u32)N<p->nChar ){
-    p->nChar = N;
-    p->zText[p->nChar] = 0;
-  }
-}
-
 /* Return the current value for p */
 SQLITE_API char *sqlite3_str_value(sqlite3_str *p){
   if( p==0 || p->nChar==0 ) return 0;
@@ -33358,17 +33192,6 @@ SQLITE_API void sqlite3_str_reset(StrAccum *p){
   p->zText = 0;
 }
 
-/*
-** Destroy a dynamically allocate sqlite3_str object and all
-** of its content, all in one call.
-*/
-SQLITE_API void sqlite3_str_free(sqlite3_str *p){
-  if( p ){
-    sqlite3_str_reset(p);
-    sqlite3_free(p);
-  }
-}
-
 /*
 ** Initialize a string accumulator.
 **
@@ -34982,13 +34805,7 @@ SQLITE_PRIVATE void sqlite3TreeViewTrigger(
 SQLITE_PRIVATE void sqlite3ShowExpr(const Expr *p){ sqlite3TreeViewExpr(0,p,0); }
 SQLITE_PRIVATE void sqlite3ShowExprList(const ExprList *p){ sqlite3TreeViewExprList(0,p,0,0);}
 SQLITE_PRIVATE void sqlite3ShowIdList(const IdList *p){ sqlite3TreeViewIdList(0,p,0,0); }
-SQLITE_PRIVATE void sqlite3ShowSrcList(const SrcList *p){
-  TreeView *pView = 0;
-  sqlite3TreeViewPush(&pView, 0);
-  sqlite3TreeViewLine(pView, "SRCLIST");
-  sqlite3TreeViewSrcList(pView,p);
-  sqlite3TreeViewPop(&pView);
-}
+SQLITE_PRIVATE void sqlite3ShowSrcList(const SrcList *p){ sqlite3TreeViewSrcList(0,p); }
 SQLITE_PRIVATE void sqlite3ShowSelect(const Select *p){ sqlite3TreeViewSelect(0,p,0); }
 SQLITE_PRIVATE void sqlite3ShowWith(const With *p){ sqlite3TreeViewWith(0,p,0); }
 SQLITE_PRIVATE void sqlite3ShowUpsert(const Upsert *p){ sqlite3TreeViewUpsert(0,p,0); }
@@ -36508,262 +36325,48 @@ SQLITE_PRIVATE u8 sqlite3StrIHash(const char *z){
   return h;
 }
 
-/*
-** Two inputs are multiplied to get a 128-bit result.  Return
-** the high-order 64 bits of that result.
-*/
-static u64 sqlite3Multiply128(u64 a, u64 b){
-#if (defined(__GNUC__) || defined(__clang__)) \
-        && (defined(__x86_64__) || defined(__aarch64__) || defined(__riscv))
-  return ((__uint128_t)a * b) >> 64;
-#elif defined(_MSC_VER) && defined(_M_X64)
-  return __umulh(a, b);
-#else
-  u64 a1 = (u32)a;
-  u64 a2 = a >> 32;
-  u64 b1 = (u32)b;
-  u64 b2 = b >> 32;
-  u64 p0 = a1 * b1;
-  u64 p1 = a1 * b2;
-  u64 p2 = a2 * b1;
-  u64 p3 = a2 * b2;
-  u64 carry = ((p0 >> 32) + (u32)p1 + (u32)p2) >> 32;
-  return p3 + (p1 >> 32) + (p2 >> 32) + carry;
-#endif
-}
-
-/*
-** Return a u64 with the N-th bit set.
-*/
-#define U64_BIT(N)  (((u64)1)<<(N))
-
-/*
-** Range of powers of 10 that we need to deal with when converting
-** IEEE754 doubles to and from decimal.
-*/
-#define POWERSOF10_FIRST (-348)
-#define POWERSOF10_LAST  (+347)
-
-/*
-** For any p between -348 and +347, return the integer part of
-**
-**    pow(10,p) * pow(2,63-pow10to2(p))
-**
-** Or, in other words, for any p in range, return the most significant
-** 64 bits of pow(10,p).  The pow(10,p) value is shifted left or right,
-** as appropriate so the most significant 64 bits fit exactly into a
-** 64-bit unsigned integer.
-**
-** Algorithm:
-**
-** (1) For p between 0 and 26, return the value directly from the aBase[]
-**     lookup table.
-**
-** (2) For p outside the range 0 to 26, use aScale[] for the initial value
-**     then refine that result (if necessary) by a single multiplication
-**     against aBase[].
-*/
-static u64 powerOfTen(int p){
-  static const u64 aBase[] = {
-    0x8000000000000000LLU, /*  0: 1.0e+0 << 63 */
-    0xa000000000000000LLU, /*  1: 1.0e+1 << 60 */
-    0xc800000000000000LLU, /*  2: 1.0e+2 << 57 */
-    0xfa00000000000000LLU, /*  3: 1.0e+3 << 54 */
-    0x9c40000000000000LLU, /*  4: 1.0e+4 << 50 */
-    0xc350000000000000LLU, /*  5: 1.0e+5 << 47 */
-    0xf424000000000000LLU, /*  6: 1.0e+6 << 44 */
-    0x9896800000000000LLU, /*  7: 1.0e+7 << 40 */
-    0xbebc200000000000LLU, /*  8: 1.0e+8 << 37 */
-    0xee6b280000000000LLU, /*  9: 1.0e+9 << 34 */
-    0x9502f90000000000LLU, /* 10: 1.0e+10 << 30 */
-    0xba43b74000000000LLU, /* 11: 1.0e+11 << 27 */
-    0xe8d4a51000000000LLU, /* 12: 1.0e+12 << 24 */
-    0x9184e72a00000000LLU, /* 13: 1.0e+13 << 20 */
-    0xb5e620f480000000LLU, /* 14: 1.0e+14 << 17 */
-    0xe35fa931a0000000LLU, /* 15: 1.0e+15 << 14 */
-    0x8e1bc9bf04000000LLU, /* 16: 1.0e+16 << 10 */
-    0xb1a2bc2ec5000000LLU, /* 17: 1.0e+17 << 7 */
-    0xde0b6b3a76400000LLU, /* 18: 1.0e+18 << 4 */
-    0x8ac7230489e80000LLU, /* 19: 1.0e+19 >> 0 */
-    0xad78ebc5ac620000LLU, /* 20: 1.0e+20 >> 3 */
-    0xd8d726b7177a8000LLU, /* 21: 1.0e+21 >> 6 */
-    0x878678326eac9000LLU, /* 22: 1.0e+22 >> 10 */
-    0xa968163f0a57b400LLU, /* 23: 1.0e+23 >> 13 */
-    0xd3c21bcecceda100LLU, /* 24: 1.0e+24 >> 16 */
-    0x84595161401484a0LLU, /* 25: 1.0e+25 >> 20 */
-    0xa56fa5b99019a5c8LLU, /* 26: 1.0e+26 >> 23 */
-  };
-  static const u64 aScale[] = {
-    0x8049a4ac0c5811aeLLU, /*  0: 1.0e-351 << 1229 */
-    0xcf42894a5dce35eaLLU, /*  1: 1.0e-324 << 1140 */
-    0xa76c582338ed2622LLU, /*  2: 1.0e-297 << 1050 */
-    0x873e4f75e2224e68LLU, /*  3: 1.0e-270 << 960 */
-    0xda7f5bf590966849LLU, /*  4: 1.0e-243 << 871 */
-    0xb080392cc4349dedLLU, /*  5: 1.0e-216 << 781 */
-    0x8e938662882af53eLLU, /*  6: 1.0e-189 << 691 */
-    0xe65829b3046b0afaLLU, /*  7: 1.0e-162 << 602 */
-    0xba121a4650e4ddecLLU, /*  8: 1.0e-135 << 512 */
-    0x964e858c91ba2655LLU, /*  9: 1.0e-108 << 422 */
-    0xf2d56790ab41c2a3LLU, /* 10: 1.0e-81 << 333 */
-    0xc428d05aa4751e4dLLU, /* 11: 1.0e-54 << 243 */
-    0x9e74d1b791e07e48LLU, /* 12: 1.0e-27 << 153 */
-    0x8000000000000000LLU, /* 13: 1.0e+0 << 63 */
-    0xcecb8f27f4200f3aLLU, /* 14: 1.0e+27 >> 26 */
-    0xa70c3c40a64e6c52LLU, /* 15: 1.0e+54 >> 116 */
-    0x86f0ac99b4e8dafdLLU, /* 16: 1.0e+81 >> 206 */
-    0xda01ee641a708deaLLU, /* 17: 1.0e+108 >> 295 */
-    0xb01ae745b101e9e4LLU, /* 18: 1.0e+135 >> 385 */
-    0x8e41ade9fbebc27dLLU, /* 19: 1.0e+162 >> 475 */
-    0xe5d3ef282a242e82LLU, /* 20: 1.0e+189 >> 564 */
-    0xb9a74a0637ce2ee1LLU, /* 21: 1.0e+216 >> 654 */
-    0x95f83d0a1fb69cd9LLU, /* 22: 1.0e+243 >> 744 */
-    0xf24a01a73cf2dcd0LLU, /* 23: 1.0e+270 >> 833 */
-    0xc3b8358109e84f07LLU, /* 24: 1.0e+297 >> 923 */
-    0x9e19db92b4e31ba9LLU, /* 25: 1.0e+324 >> 1013 */
-  };
-  int g, n;
-  u64 x, y;
-
-  assert( p>=POWERSOF10_FIRST && p<=POWERSOF10_LAST );
-  if( p<0 ){
-    g = p/27;
-    n = p%27;
-    if( n ){
-      g--;
-      n += 27;
-    }
-  }else if( p<27 ){
-    return aBase[p];
-  }else{
-    g = p/27;
-    n = p%27;
-  }
-  y = aScale[g+13];
-  if( n==0 ){
-    return y;
-  }
-  x = sqlite3Multiply128(aBase[n],y);
-  if( (U64_BIT(63) & x)==0 ){
-    x  = (x<<1)|1;
-  }
-  return x;
-}
-
-/*
-** pow10to2(x) computes floor(log2(pow(10,x))).
-** pow2to10(y) computes floor(log10(pow(2,y))).
-**
-** Conceptually, pow10to2(p) converts a base-10 exponent p into
-** a corresponding base-2 exponent, and pow2to10(e) converts a base-2
-** exponent into a base-10 exponent.
-**
-** The conversions are based on the observation that:
-**
-**     ln(10.0)/ln(2.0) == 108853/32768     (approximately)
-**     ln(2.0)/ln(10.0) == 78913/262144     (approximately)
-**
-** These ratios are approximate, but they are accurate to 5 digits,
-** which is close enough for the usage here.  Right-shift is used
-** for division so that rounding of negative numbers happens in the
-** right direction.
-*/
-static int pwr10to2(int p){ return (p*108853) >> 15; }
-static int pwr2to10(int p){ return (p*78913) >> 18; }
-
-/*
-** Count leading zeros for a 64-bit unsigned integer.
-*/
-static int countLeadingZeros(u64 m){
-#if defined(__GNUC__) || defined(__clang__)
-  return __builtin_clzll(m);
-#else
-  int n = 0;
-  if( m <= 0x00000000ffffffffULL) { n += 32; m <<= 32; }
-  if( m <= 0x0000ffffffffffffULL) { n += 16; m <<= 16; }
-  if( m <= 0x00ffffffffffffffULL) { n += 8;  m <<= 8;  }
-  if( m <= 0x0fffffffffffffffULL) { n += 4;  m <<= 4;  }
-  if( m <= 0x3fffffffffffffffULL) { n += 2;  m <<= 2;  }
-  if( m <= 0x7fffffffffffffffULL) { n += 1;            }
-  return n;
-#endif
-}
-
-/*
-** Given m and e, which represent a quantity r == m*pow(2,e),
-** return values *pD and *pP such that r == (*pD)*pow(10,*pP),
-** approximately.  *pD should contain at least n significant digits.
+/* Double-Double multiplication.  (x[0],x[1]) *= (y,yy)
 **
-** The input m is required to have its highest bit set.  In other words,
-** m should be left-shifted, and e decremented, to maximize the value of m.
-*/
-static void sqlite3Fp2Convert10(u64 m, int e, int n, u64 *pD, int *pP){
-  int p;
-  u64 h;
-  assert( n>=1 && n<=18 );
-  p = n - 1 - pwr2to10(e+63);
-  h = sqlite3Multiply128(m, powerOfTen(p));
-  assert( -(e + pwr10to2(p) + 2) >= 0  );
-  assert( -(e + pwr10to2(p) + 1) <= 63 );
-  if( n==18 ){
-    h >>= -(e + pwr10to2(p) + 2);
-    *pD = (h + ((h<<1)&2))>>1;
-  }else{
-    *pD = h >> -(e + pwr10to2(p) + 1);
-  }
-  *pP = -p;
-}
-
-/*
-** Return an IEEE754 floating point value that approximates d*pow(10,p).
+** Reference:
+**   T. J. Dekker, "A Floating-Point Technique for Extending the
+**   Available Precision".  1971-07-26.
 */
-static double sqlite3Fp10Convert2(u64 d, int p){
-  u64 out;
-  int e1;
-  int lz;
-  int lp;
-  int x;
-  u64 h;
-  double r;
-  assert( (d & U64_BIT(63))==0 );
-  assert( d!=0 );
-  if( p<POWERSOF10_FIRST ){
-    return 0.0;
-  }
-  if( p>POWERSOF10_LAST ){
-    return INFINITY;
-  }
-  lz = countLeadingZeros(d);
-  lp = pwr10to2(p);
-  e1 = lz - (lp + 11);
-  if( e1>1074 ){
-    if( e1>=1130 ) return 0.0;
-    e1 = 1074;
-  }
-  h = sqlite3Multiply128(d<<lz, powerOfTen(p));
-  x = lz - (e1 + lp + 3);
-  assert( x >= 0  );
-  assert( x <= 63 );
-  out = h >> x;
-  if( out >= U64_BIT(55)-2 ){
-    out >>= 1;
-    e1--;
-  }
-  if( e1<=(-972) ){
-    return INFINITY;
-  }
-  out = (out + 2) >> 2;
-  if( (out & U64_BIT(52))!=0 ){
-    out = (out & ~U64_BIT(52)) | ((u64)(1075-e1)<<52);
-  }
-  memcpy(&r, &out, 8);
-  return r;
+static void dekkerMul2(volatile double *x, double y, double yy){
+  /*
+  ** The "volatile" keywords on parameter x[] and on local variables
+  ** below are needed force intermediate results to be truncated to
+  ** binary64 rather than be carried around in an extended-precision
+  ** format.  The truncation is necessary for the Dekker algorithm to
+  ** work.  Intel x86 floating point might omit the truncation without
+  ** the use of volatile.
+  */
+  volatile double tx, ty, p, q, c, cc;
+  double hx, hy;
+  u64 m;
+  memcpy(&m, (void*)&x[0], 8);
+  m &= 0xfffffffffc000000LL;
+  memcpy(&hx, &m, 8);
+  tx = x[0] - hx;
+  memcpy(&m, &y, 8);
+  m &= 0xfffffffffc000000LL;
+  memcpy(&hy, &m, 8);
+  ty = y - hy;
+  p = hx*hy;
+  q = hx*ty + tx*hy;
+  c = p+q;
+  cc = p - c + q + tx*ty;
+  cc = x[0]*yy + x[1]*y + cc;
+  x[0] = c + cc;
+  x[1] = c - x[0];
+  x[1] += cc;
 }
 
 /*
 ** The string z[] is an text representation of a real number.
 ** Convert this string to a double and write it into *pResult.
 **
-** z[] must be UTF-8 and zero-terminated.
+** The string z[] is length bytes in length (bytes, not characters) and
+** uses the encoding enc.  The string is not necessarily zero-terminated.
 **
 ** Return TRUE if the result is a valid real number (or integer) and FALSE
 ** if the string is empty or contains extraneous text.  More specifically
@@ -36790,131 +36393,198 @@ static double sqlite3Fp10Convert2(u64 d, int p){
 #if defined(_MSC_VER)
 #pragma warning(disable : 4756)
 #endif
-SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult){
+SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult, int length, u8 enc){
 #ifndef SQLITE_OMIT_FLOATING_POINT
+  int incr;
+  const char *zEnd;
   /* sign * significand * (10 ^ (esign * exponent)) */
-  int neg = 0;     /* True for a negative value */
-  u64 s = 0;       /* mantissa */
-  int d = 0;       /* Value is s * pow(10,d) */
+  int sign = 1;    /* sign of significand */
+  u64 s = 0;       /* significand */
+  int d = 0;       /* adjust exponent for shifting decimal point */
+  int esign = 1;   /* sign of exponent */
+  int e = 0;       /* exponent */
+  int eValid = 1;  /* True exponent is either not used or is well-formed */
   int nDigit = 0;  /* Number of digits processed */
-  int eType = 1;   /* 1: pure integer,  2+: fractional */
+  int eType = 1;   /* 1: pure integer,  2+: fractional  -1 or less: bad UTF16 */
+  u64 s2;          /* round-tripped significand */
+  double rr[2];
 
+  assert( enc==SQLITE_UTF8 || enc==SQLITE_UTF16LE || enc==SQLITE_UTF16BE );
   *pResult = 0.0;   /* Default return value, in case of an error */
+  if( length==0 ) return 0;
+
+  if( enc==SQLITE_UTF8 ){
+    incr = 1;
+    zEnd = z + length;
+  }else{
+    int i;
+    incr = 2;
+    length &= ~1;
+    assert( SQLITE_UTF16LE==2 && SQLITE_UTF16BE==3 );
+    testcase( enc==SQLITE_UTF16LE );
+    testcase( enc==SQLITE_UTF16BE );
+    for(i=3-enc; i<length && z[i]==0; i+=2){}
+    if( i<length ) eType = -100;
+    zEnd = &z[i^1];
+    z += (enc&1);
+  }
 
   /* skip leading spaces */
-  while( sqlite3Isspace(*z) ) z++;
+  while( z<zEnd && sqlite3Isspace(*z) ) z+=incr;
+  if( z>=zEnd ) return 0;
 
   /* get sign of significand */
   if( *z=='-' ){
-    neg = 1;
-    z++;
+    sign = -1;
+    z+=incr;
   }else if( *z=='+' ){
-    z++;
+    z+=incr;
   }
 
   /* copy max significant digits to significand */
-  while( sqlite3Isdigit(*z) ){
+  while( z<zEnd && sqlite3Isdigit(*z) ){
     s = s*10 + (*z - '0');
-    z++; nDigit++;
-    if( s>=((LARGEST_INT64-9)/10) ){
+    z+=incr; nDigit++;
+    if( s>=((LARGEST_UINT64-9)/10) ){
       /* skip non-significant significand digits
       ** (increase exponent by d to shift decimal left) */
-      while( sqlite3Isdigit(*z) ){ z++; d++; }
+      while( z<zEnd && sqlite3Isdigit(*z) ){ z+=incr; d++; }
     }
   }
+  if( z>=zEnd ) goto do_atof_calc;
 
   /* if decimal point is present */
   if( *z=='.' ){
-    z++;
+    z+=incr;
     eType++;
     /* copy digits from after decimal to significand
     ** (decrease exponent by d to shift decimal right) */
-    while( sqlite3Isdigit(*z) ){
-      if( s<((LARGEST_INT64-9)/10) ){
+    while( z<zEnd && sqlite3Isdigit(*z) ){
+      if( s<((LARGEST_UINT64-9)/10) ){
         s = s*10 + (*z - '0');
         d--;
         nDigit++;
       }
-      z++;
+      z+=incr;
     }
   }
+  if( z>=zEnd ) goto do_atof_calc;
 
   /* if exponent is present */
   if( *z=='e' || *z=='E' ){
-    int esign = 1;   /* sign of exponent */
-    z++;
+    z+=incr;
+    eValid = 0;
     eType++;
 
+    /* This branch is needed to avoid a (harmless) buffer overread.  The
+    ** special comment alerts the mutation tester that the correct answer
+    ** is obtained even if the branch is omitted */
+    if( z>=zEnd ) goto do_atof_calc;              /*PREVENTS-HARMLESS-OVERREAD*/
+
     /* get sign of exponent */
     if( *z=='-' ){
       esign = -1;
-      z++;
+      z+=incr;
     }else if( *z=='+' ){
-      z++;
+      z+=incr;
     }
     /* copy digits to exponent */
-    if( sqlite3Isdigit(*z) ){
-      int exp = *z - '0';
-      z++;
-      while( sqlite3Isdigit(*z) ){
-        exp = exp<10000 ? (exp*10 + (*z - '0')) : 10000;
-        z++;
-      }
-      d += esign*exp;
-    }else{
-      eType = -1;
+    while( z<zEnd && sqlite3Isdigit(*z) ){
+      e = e<10000 ? (e*10 + (*z - '0')) : 10000;
+      z+=incr;
+      eValid = 1;
     }
   }
 
   /* skip trailing spaces */
-  while( sqlite3Isspace(*z) ) z++;
+  while( z<zEnd && sqlite3Isspace(*z) ) z+=incr;
 
+do_atof_calc:
   /* Zero is a special case */
   if( s==0 ){
-    *pResult = neg ? -0.0 : +0.0;
+    *pResult = sign<0 ? -0.0 : +0.0;
+    goto atof_return;
+  }
+
+  /* adjust exponent by d, and update sign */
+  e = (e*esign) + d;
+
+  /* Try to adjust the exponent to make it smaller */
+  while( e>0 && s<((LARGEST_UINT64-0x7ff)/10) ){
+    s *= 10;
+    e--;
+  }
+  while( e<0 && (s%10)==0 ){
+    s /= 10;
+    e++;
+  }
+
+  rr[0] = (double)s;
+  assert( sizeof(s2)==sizeof(rr[0]) );
+#ifdef SQLITE_DEBUG
+  rr[1] = 18446744073709549568.0;
+  memcpy(&s2, &rr[1], sizeof(s2));
+  assert( s2==0x43efffffffffffffLL );
+#endif
+  /* Largest double that can be safely converted to u64
+  **         vvvvvvvvvvvvvvvvvvvvvv   */
+  if( rr[0]<=18446744073709549568.0 ){
+    s2 = (u64)rr[0];
+    rr[1] = s>=s2 ? (double)(s - s2) : -(double)(s2 - s);
+  }else{
+    rr[1] = 0.0;
+  }
+  assert( rr[1]<=1.0e-10*rr[0] );  /* Equal only when rr[0]==0.0 */
+
+  if( e>0 ){
+    while( e>=100  ){
+      e -= 100;
+      dekkerMul2(rr, 1.0e+100, -1.5902891109759918046e+83);
+    }
+    while( e>=10   ){
+      e -= 10;
+      dekkerMul2(rr, 1.0e+10, 0.0);
+    }
+    while( e>=1    ){
+      e -= 1;
+      dekkerMul2(rr, 1.0e+01, 0.0);
+    }
   }else{
-    *pResult = sqlite3Fp10Convert2(s,d);
-    if( neg ) *pResult = -*pResult;
-    assert( !sqlite3IsNaN(*pResult) );
+    while( e<=-100 ){
+      e += 100;
+      dekkerMul2(rr, 1.0e-100, -1.99918998026028836196e-117);
+    }
+    while( e<=-10  ){
+      e += 10;
+      dekkerMul2(rr, 1.0e-10, -3.6432197315497741579e-27);
+    }
+    while( e<=-1   ){
+      e += 1;
+      dekkerMul2(rr, 1.0e-01, -5.5511151231257827021e-18);
+    }
   }
+  *pResult = rr[0]+rr[1];
+  if( sqlite3IsNaN(*pResult) ) *pResult = 1e300*1e300;
+  if( sign<0 ) *pResult = -*pResult;
+  assert( !sqlite3IsNaN(*pResult) );
 
+atof_return:
   /* return true if number and no extra non-whitespace characters after */
-  if( z[0]==0 && nDigit>0 ){
+  if( z==zEnd && nDigit>0 && eValid && eType>0 ){
     return eType;
-  }else if( eType>=2 && nDigit>0 ){
+  }else if( eType>=2 && (eType==3 || eValid) && nDigit>0 ){
     return -1;
   }else{
     return 0;
   }
 #else
-  return !sqlite3Atoi64(z, pResult, strlen(z), SQLITE_UTF8);
+  return !sqlite3Atoi64(z, pResult, length, enc);
 #endif /* SQLITE_OMIT_FLOATING_POINT */
 }
 #if defined(_MSC_VER)
 #pragma warning(default : 4756)
 #endif
 
-/*
-** Digit pairs used to convert a U64 or I64 into text, two digits
-** at a time.
-*/
-static const union {
-  char a[201];
-  short int forceAlignment;
-} sqlite3DigitPairs = {
-  "00010203040506070809"
-  "10111213141516171819"
-  "20212223242526272829"
-  "30313233343536373839"
-  "40414243444546474849"
-  "50515253545556575859"
-  "60616263646566676869"
-  "70717273747576777879"
-  "80818283848586878889"
-  "90919293949596979899"
-};
-
-
 /*
 ** Render an signed 64-bit integer as text.  Store the result in zOut[] and
 ** return the length of the string that was stored, in bytes.  The value
@@ -36926,35 +36596,23 @@ static const union {
 SQLITE_PRIVATE int sqlite3Int64ToText(i64 v, char *zOut){
   int i;
   u64 x;
-  union {
-    char a[23];
-    u16 forceAlignment;
-  } u;
-  if( v>0 ){
-    x = v;
-  }else if( v==0 ){
-    zOut[0] = '0';
-    zOut[1] = 0;
-    return 1;
-  }else{
+  char zTemp[22];
+  if( v<0 ){
     x = (v==SMALLEST_INT64) ? ((u64)1)<<63 : (u64)-v;
+  }else{
+    x = v;
   }
-  i = sizeof(u.a)-1;
-  u.a[i] = 0;
-  while( x>=10 ){
-    int kk = (x%100)*2;
-    assert( TWO_BYTE_ALIGNMENT(&sqlite3DigitPairs.a[kk]) );
-    assert( TWO_BYTE_ALIGNMENT(&u.a[i-2]) );
-    *(u16*)(&u.a[i-2]) = *(u16*)&sqlite3DigitPairs.a[kk];
-    i -= 2;
-    x /= 100;
-  }
-  if( x ){
-    u.a[--i] = x + '0';
-  }
-  if( v<0 ) u.a[--i] = '-';
-  memcpy(zOut, &u.a[i], sizeof(u.a)-i);
-  return sizeof(u.a)-1-i;
+  i = sizeof(zTemp)-2;
+  zTemp[sizeof(zTemp)-1] = 0;
+  while( 1 /*exit-by-break*/ ){
+    zTemp[i] = (x%10) + '0';
+    x = x/10;
+    if( x==0 ) break;
+    i--;
+  };
+  if( v<0 ) zTemp[--i] = '-';
+  memcpy(zOut, &zTemp[i], sizeof(zTemp)-i);
+  return sizeof(zTemp)-1-i;
 }
 
 /*
@@ -37211,7 +36869,7 @@ SQLITE_PRIVATE int sqlite3Atoi(const char *z){
 ** representation.
 **
 ** If iRound<=0 then round to -iRound significant digits to the
-** the right of the decimal point, or to a maximum of mxRound total
+** the left of the decimal point, or to a maximum of mxRound total
 ** significant digits.
 **
 ** If iRound>0 round to min(iRound,mxRound) significant digits total.
@@ -37224,14 +36882,13 @@ SQLITE_PRIVATE int sqlite3Atoi(const char *z){
 ** The p->z[] array is *not* zero-terminated.
 */
 SQLITE_PRIVATE void sqlite3FpDecode(FpDecode *p, double r, int iRound, int mxRound){
-  int i;               /* Index into zBuf[] where to put next character */
-  int n;               /* Number of digits */
-  u64 v;               /* mantissa */
-  int e, exp = 0;      /* Base-2 and base-10 exponent */
-  char *zBuf;          /* Local alias for p->zBuf */
-  char *z;             /* Local alias for p->z */
+  int i;
+  u64 v;
+  int e, exp = 0;
+  double rr[2];
 
   p->isSpecial = 0;
+  p->z = p->zBuf;
   assert( mxRound>0 );
 
   /* Convert negative numbers to positive.  Deal with Infinity, 0.0, and
@@ -37249,94 +36906,78 @@ SQLITE_PRIVATE void sqlite3FpDecode(FpDecode *p, double r, int iRound, int mxRou
     p->sign = '+';
   }
   memcpy(&v,&r,8);
-  e = (v>>52)&0x7ff;
-  if( e==0x7ff ){
+  e = v>>52;
+  if( (e&0x7ff)==0x7ff ){
     p->isSpecial = 1 + (v!=0x7ff0000000000000LL);
     p->n = 0;
     p->iDP = 0;
-    p->z = p->zBuf;
     return;
   }
-  v &= 0x000fffffffffffffULL;
-  if( e==0 ){
-    int nn = countLeadingZeros(v);
-    v <<= nn;
-    e = -1074 - nn;
+
+  /* Multiply r by powers of ten until it lands somewhere in between
+  ** 1.0e+19 and 1.0e+17.
+  **
+  ** Use Dekker-style double-double computation to increase the
+  ** precision.
+  **
+  ** The error terms on constants like 1.0e+100 computed using the
+  ** decimal extension, for example as follows:
+  **
+  **   SELECT decimal_exp(decimal_sub('1.0e+100',decimal(1.0e+100)));
+  */
+  rr[0] = r;
+  rr[1] = 0.0;
+  if( rr[0]>9.223372036854774784e+18 ){
+    while( rr[0]>9.223372036854774784e+118 ){
+      exp += 100;
+      dekkerMul2(rr, 1.0e-100, -1.99918998026028836196e-117);
+    }
+    while( rr[0]>9.223372036854774784e+28 ){
+      exp += 10;
+      dekkerMul2(rr, 1.0e-10, -3.6432197315497741579e-27);
+    }
+    while( rr[0]>9.223372036854774784e+18 ){
+      exp += 1;
+      dekkerMul2(rr, 1.0e-01, -5.5511151231257827021e-18);
+    }
   }else{
-    v = (v<<11) | U64_BIT(63);
-    e -= 1086;
+    while( rr[0]<9.223372036854774784e-83  ){
+      exp -= 100;
+      dekkerMul2(rr, 1.0e+100, -1.5902891109759918046e+83);
+    }
+    while( rr[0]<9.223372036854774784e+07  ){
+      exp -= 10;
+      dekkerMul2(rr, 1.0e+10, 0.0);
+    }
+    while( rr[0]<9.22337203685477478e+17  ){
+      exp -= 1;
+      dekkerMul2(rr, 1.0e+01, 0.0);
+    }
   }
-  sqlite3Fp2Convert10(v, e, (iRound<=0||iRound>=18)?18:iRound+1, &v, &exp);
+  v = rr[1]<0.0 ? (u64)rr[0]-(u64)(-rr[1]) : (u64)rr[0]+(u64)rr[1];
 
-  /* Extract significant digits, start at the right-most slot in p->zBuf
-  ** and working back to the right.  "i" keeps track of the next slot in
-  ** which to store a digit. */
+  /* Extract significant digits. */
   i = sizeof(p->zBuf)-1;
-  zBuf = p->zBuf;
   assert( v>0 );
-  while( v>=10 ){
-    int kk = (v%100)*2;
-    assert( TWO_BYTE_ALIGNMENT(&sqlite3DigitPairs.a[kk]) );
-    assert( TWO_BYTE_ALIGNMENT(&zBuf[i-1]) );
-    *(u16*)(&zBuf[i-1]) = *(u16*)&sqlite3DigitPairs.a[kk];
-    i -= 2;
-    v /= 100;
-  }
-  if( v ){
-    assert( v<10 );
-    zBuf[i--] = v + '0';
-  }
+  while( v ){  p->zBuf[i--] = (v%10) + '0'; v /= 10; }
   assert( i>=0 && i<sizeof(p->zBuf)-1 );
-  n = sizeof(p->zBuf) - 1 - i;  /* Total number of digits extracted */
-  assert( n>0 );
-  assert( n<sizeof(p->zBuf) );
-  testcase( n==sizeof(p->zBuf)-1 );
-  p->iDP = n + exp;
+  p->n = sizeof(p->zBuf) - 1 - i;
+  assert( p->n>0 );
+  assert( p->n<sizeof(p->zBuf) );
+  p->iDP = p->n + exp;
   if( iRound<=0 ){
     iRound = p->iDP - iRound;
-    if( iRound==0 && zBuf[i+1]>='5' ){
+    if( iRound==0 && p->zBuf[i+1]>='5' ){
       iRound = 1;
-      zBuf[i--] = '0';
-      n++;
+      p->zBuf[i--] = '0';
+      p->n++;
       p->iDP++;
     }
   }
-  z = &zBuf[i+1];  /* z points to the first digit */
-  if( iRound>0 && (iRound<n || n>mxRound) ){
+  if( iRound>0 && (iRound<p->n || p->n>mxRound) ){
+    char *z = &p->zBuf[i+1];
     if( iRound>mxRound ) iRound = mxRound;
-    if( iRound==17 ){
-      /* If the precision is exactly 17, which only happens with the "!"
-      ** flag (ex: "%!.17g") then try to reduce the precision if that
-      ** yields text that will round-trip to the original floating-point.
-      ** value.  Thus, for exaple, 49.47 will render as 49.47, rather than
-      ** as 49.469999999999999. */
-      if( z[15]=='9' && z[14]=='9' ){
-        int jj, kk;
-        u64 v2;
-        for(jj=14; jj>0 && z[jj-1]=='9'; jj--){}
-        if( jj==0 ){
-          v2 = 1;
-        }else{
-          v2 = z[0] - '0';
-          for(kk=1; kk<jj; kk++) v2 = (v2*10) + z[kk] - '0';
-          v2++;
-        }
-        if( r==sqlite3Fp10Convert2(v2, exp + n - jj) ){
-          iRound = jj+1;
-        }
-      }else if( p->iDP>=n || (z[15]=='0' && z[14]=='0' && z[13]=='0') ){
-        int jj, kk;
-        u64 v2;
-        assert( z[0]!='0' );
-        for(jj=14; z[jj-1]=='0'; jj--){}
-        v2 = z[0] - '0';
-        for(kk=1; kk<jj; kk++) v2 = (v2*10) + z[kk] - '0';
-        if( r==sqlite3Fp10Convert2(v2, exp + n - jj) ){
-          iRound = jj+1;
-        }
-      }
-    }
-    n = iRound;
+    p->n = iRound;
     if( z[iRound]>='5' ){
       int j = iRound-1;
       while( 1 /*exit-by-break*/ ){
@@ -37344,9 +36985,8 @@ SQLITE_PRIVATE void sqlite3FpDecode(FpDecode *p, double r, int iRound, int mxRou
         if( z[j]<='9' ) break;
         z[j] = '0';
         if( j==0 ){
-          z--;
-          z[0] = '1';
-          n++;
+          p->z[i--] = '1';
+          p->n++;
           p->iDP++;
           break;
         }else{
@@ -37355,13 +36995,13 @@ SQLITE_PRIVATE void sqlite3FpDecode(FpDecode *p, double r, int iRound, int mxRou
       }
     }
   }
-  assert( n>0 );
-  while( z[n-1]=='0' ){
-    n--;
-    assert( n>0 );
+  p->z = &p->zBuf[i+1];
+  assert( i+p->n < sizeof(p->zBuf) );
+  assert( p->n>0 );
+  while( p->z[p->n-1]=='0' ){
+    p->n--;
+    assert( p->n>0 );
   }
-  p->n = n;
-  p->z = z;
 }
 
 /*
@@ -38600,7 +38240,7 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
 ** Debugging logic
 */
 
-/* SQLITE_KV_TRACE() is used for tracing calls to kvrecord routines. */
+/* SQLITE_KV_TRACE() is used for tracing calls to kvstorage routines. */
 #if 0
 #define SQLITE_KV_TRACE(X)  printf X
 #else
@@ -38614,6 +38254,7 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
 #define SQLITE_KV_LOG(X)
 #endif
 
+
 /*
 ** Forward declaration of objects used by this VFS implementation
 */
@@ -38621,11 +38262,6 @@ typedef struct KVVfsFile KVVfsFile;
 
 /* A single open file.  There are only two files represented by this
 ** VFS - the database and the rollback journal.
-**
-** Maintenance reminder: if this struct changes in any way, the JSON
-** rendering of its structure must be updated in
-** sqlite3-wasm.c:sqlite3__wasm_enum_json(). There are no binary
-** compatibility concerns, so it does not need an iVersion member.
 */
 struct KVVfsFile {
   sqlite3_file base;              /* IO methods */
@@ -38675,7 +38311,7 @@ static int kvvfsCurrentTime(sqlite3_vfs*, double*);
 static int kvvfsCurrentTimeInt64(sqlite3_vfs*, sqlite3_int64*);
 
 static sqlite3_vfs sqlite3OsKvvfsObject = {
-  2,                              /* iVersion */
+  1,                              /* iVersion */
   sizeof(KVVfsFile),              /* szOsFile */
   1024,                           /* mxPathname */
   0,                              /* pNext */
@@ -38751,37 +38387,23 @@ static sqlite3_io_methods kvvfs_jrnl_io_methods = {
 
 /* Forward declarations for the low-level storage engine
 */
-#ifndef SQLITE_WASM
-/* In WASM builds these are implemented in JS. */
-static int kvrecordWrite(const char*, const char *zKey, const char *zData);
-static int kvrecordDelete(const char*, const char *zKey);
-static int kvrecordRead(const char*, const char *zKey, char *zBuf, int nBuf);
-#endif
-#ifndef KVRECORD_KEY_SZ
-#define KVRECORD_KEY_SZ 32
-#endif
+static int kvstorageWrite(const char*, const char *zKey, const char *zData);
+static int kvstorageDelete(const char*, const char *zKey);
+static int kvstorageRead(const char*, const char *zKey, char *zBuf, int nBuf);
+#define KVSTORAGE_KEY_SZ  32
 
 /* Expand the key name with an appropriate prefix and put the result
 ** in zKeyOut[].  The zKeyOut[] buffer is assumed to hold at least
-** KVRECORD_KEY_SZ bytes.
+** KVSTORAGE_KEY_SZ bytes.
 */
-static void kvrecordMakeKey(
+static void kvstorageMakeKey(
   const char *zClass,
   const char *zKeyIn,
   char *zKeyOut
 ){
-  assert( zKeyIn );
-  assert( zKeyOut );
-  assert( zClass );
-  sqlite3_snprintf(KVRECORD_KEY_SZ, zKeyOut, "kvvfs-%s-%s",
-                   zClass, zKeyIn);
+  sqlite3_snprintf(KVSTORAGE_KEY_SZ, zKeyOut, "kvvfs-%s-%s", zClass, zKeyIn);
 }
 
-#ifndef SQLITE_WASM
-/* In WASM builds do not define APIs which use fopen(), fwrite(),
-** and the like because those APIs are a portability issue for
-** WASM.
-*/
 /* Write content into a key.  zClass is the particular namespace of the
 ** underlying key/value store to use - either "local" or "session".
 **
@@ -38789,14 +38411,14 @@ static void kvrecordMakeKey(
 **
 ** Return the number of errors.
 */
-static int kvrecordWrite(
+static int kvstorageWrite(
   const char *zClass,
   const char *zKey,
   const char *zData
 ){
   FILE *fd;
-  char zXKey[KVRECORD_KEY_SZ];
-  kvrecordMakeKey(zClass, zKey, zXKey);
+  char zXKey[KVSTORAGE_KEY_SZ];
+  kvstorageMakeKey(zClass, zKey, zXKey);
   fd = fopen(zXKey, "wb");
   if( fd ){
     SQLITE_KV_TRACE(("KVVFS-WRITE  %-15s (%d) %.50s%s\n", zXKey,
@@ -38814,9 +38436,9 @@ static int kvrecordWrite(
 ** namespace given by zClass.  If the key does not previously exist,
 ** this routine is a no-op.
 */
-static int kvrecordDelete(const char *zClass, const char *zKey){
-  char zXKey[KVRECORD_KEY_SZ];
-  kvrecordMakeKey(zClass, zKey, zXKey);
+static int kvstorageDelete(const char *zClass, const char *zKey){
+  char zXKey[KVSTORAGE_KEY_SZ];
+  kvstorageMakeKey(zClass, zKey, zXKey);
   unlink(zXKey);
   SQLITE_KV_TRACE(("KVVFS-DELETE %-15s\n", zXKey));
   return 0;
@@ -38837,7 +38459,7 @@ static int kvrecordDelete(const char *zClass, const char *zKey){
 ** zero-terminates zBuf at zBuf[0] and returns the size of the data
 ** without reading it.
 */
-static int kvrecordRead(
+static int kvstorageRead(
   const char *zClass,
   const char *zKey,
   char *zBuf,
@@ -38845,8 +38467,8 @@ static int kvrecordRead(
 ){
   FILE *fd;
   struct stat buf;
-  char zXKey[KVRECORD_KEY_SZ];
-  kvrecordMakeKey(zClass, zKey, zXKey);
+  char zXKey[KVSTORAGE_KEY_SZ];
+  kvstorageMakeKey(zClass, zKey, zXKey);
   if( access(zXKey, R_OK)!=0
    || stat(zXKey, &buf)!=0
    || !S_ISREG(buf.st_mode)
@@ -38878,8 +38500,6 @@ static int kvrecordRead(
     return (int)n;
   }
 }
-#endif /* #ifndef SQLITE_WASM */
-
 
 /*
 ** An internal level of indirection which enables us to replace the
@@ -38887,27 +38507,17 @@ static int kvrecordRead(
 ** Maintenance reminder: if this struct changes in any way, the JSON
 ** rendering of its structure must be updated in
 ** sqlite3-wasm.c:sqlite3__wasm_enum_json(). There are no binary
-** compatibility concerns, so it does not need an iVersion member.
+** compatibility concerns, so it does not need an iVersion
+** member.
 */
 typedef struct sqlite3_kvvfs_methods sqlite3_kvvfs_methods;
 struct sqlite3_kvvfs_methods {
-  int (*xRcrdRead)(const char*, const char *zKey, char *zBuf, int nBuf);
-  int (*xRcrdWrite)(const char*, const char *zKey, const char *zData);
-  int (*xRcrdDelete)(const char*, const char *zKey);
+  int (*xRead)(const char *zClass, const char *zKey, char *zBuf, int nBuf);
+  int (*xWrite)(const char *zClass, const char *zKey, const char *zData);
+  int (*xDelete)(const char *zClass, const char *zKey);
   const int nKeySize;
-  const int nBufferSize;
-#ifndef SQLITE_WASM
-#  define MAYBE_CONST const
-#else
-#  define MAYBE_CONST
-#endif
-  MAYBE_CONST sqlite3_vfs * pVfs;
-  MAYBE_CONST sqlite3_io_methods *pIoDb;
-  MAYBE_CONST sqlite3_io_methods *pIoJrnl;
-#undef MAYBE_CONST
 };
 
-
 /*
 ** This object holds the kvvfs I/O methods which may be swapped out
 ** for JavaScript-side implementations in WASM builds. In such builds
@@ -38922,20 +38532,10 @@ struct sqlite3_kvvfs_methods {
 const
 #endif
 SQLITE_PRIVATE sqlite3_kvvfs_methods sqlite3KvvfsMethods = {
-#ifndef SQLITE_WASM
-  .xRcrdRead       = kvrecordRead,
-  .xRcrdWrite      = kvrecordWrite,
-  .xRcrdDelete     = kvrecordDelete,
-#else
-  .xRcrdRead       = 0,
-  .xRcrdWrite      = 0,
-  .xRcrdDelete     = 0,
-#endif
-  .nKeySize        = KVRECORD_KEY_SZ,
-  .nBufferSize     = SQLITE_KVOS_SZ,
-  .pVfs            = &sqlite3OsKvvfsObject,
-  .pIoDb           = &kvvfs_db_io_methods,
-  .pIoJrnl         = &kvvfs_jrnl_io_methods
+kvstorageRead,
+kvstorageWrite,
+kvstorageDelete,
+KVSTORAGE_KEY_SZ
 };
 
 /****** Utility subroutines ************************************************/
@@ -38962,10 +38562,7 @@ SQLITE_PRIVATE sqlite3_kvvfs_methods sqlite3KvvfsMethods = {
 **      of hexadecimal and base-26 numbers, it is always clear where
 **      one stops and the next begins.
 */
-#ifndef SQLITE_WASM
-static
-#endif
-int kvvfsEncode(const char *aData, int nData, char *aOut){
+static int kvvfsEncode(const char *aData, int nData, char *aOut){
   int i, j;
   const unsigned char *a = (const unsigned char*)aData;
   for(i=j=0; i<nData; i++){
@@ -39016,13 +38613,9 @@ static const signed char kvvfsHexValue[256] = {
 ** Decode the text encoding back to binary.  The binary content is
 ** written into pOut, which must be at least nOut bytes in length.
 **
-** The return value is the number of bytes actually written into aOut[], or
-** -1 for malformed inputs.
+** The return value is the number of bytes actually written into aOut[].
 */
-#ifndef SQLITE_WASM
-static
-#endif
-int kvvfsDecode(const char *a, char *aOut, int nOut){
+static int kvvfsDecode(const char *a, char *aOut, int nOut){
   int i, j;
   int c;
   const unsigned char *aIn = (const unsigned char*)a;
@@ -39047,7 +38640,7 @@ int kvvfsDecode(const char *a, char *aOut, int nOut){
     }else{
       aOut[j] = c<<4;
       c = kvvfsHexValue[aIn[++i]];
-      if( c<0 ) return -1 /* hex bytes are always in pairs */;
+      if( c<0 ) break;
       aOut[j++] += c;
       i++;
     }
@@ -39100,14 +38693,13 @@ static void kvvfsDecodeJournal(
 static sqlite3_int64 kvvfsReadFileSize(KVVfsFile *pFile){
   char zData[50];
   zData[0] = 0;
-  sqlite3KvvfsMethods.xRcrdRead(pFile->zClass, "sz", zData,
-                                sizeof(zData)-1);
+  sqlite3KvvfsMethods.xRead(pFile->zClass, "sz", zData, sizeof(zData)-1);
   return strtoll(zData, 0, 0);
 }
 static int kvvfsWriteFileSize(KVVfsFile *pFile, sqlite3_int64 sz){
   char zData[50];
   sqlite3_snprintf(sizeof(zData), zData, "%lld", sz);
-  return sqlite3KvvfsMethods.xRcrdWrite(pFile->zClass, "sz", zData);
+  return sqlite3KvvfsMethods.xWrite(pFile->zClass, "sz", zData);
 }
 
 /****** sqlite3_io_methods methods ******************************************/
@@ -39122,9 +38714,6 @@ static int kvvfsClose(sqlite3_file *pProtoFile){
              pFile->isJournal ? "journal" : "db"));
   sqlite3_free(pFile->aJrnl);
   sqlite3_free(pFile->aData);
-#ifdef SQLITE_WASM
-  memset(pFile, 0, sizeof(*pFile));
-#endif
   return SQLITE_OK;
 }
 
@@ -39141,22 +38730,16 @@ static int kvvfsReadJrnl(
   assert( pFile->isJournal );
   SQLITE_KV_LOG(("xRead('%s-journal',%d,%lld)\n", pFile->zClass, iAmt, iOfst));
   if( pFile->aJrnl==0 ){
-    int rc;
-    int szTxt = sqlite3KvvfsMethods.xRcrdRead(pFile->zClass, "jrnl",
-                                              0, 0);
+    int szTxt = kvstorageRead(pFile->zClass, "jrnl", 0, 0);
     char *aTxt;
     if( szTxt<=4 ){
       return SQLITE_IOERR;
     }
     aTxt = sqlite3_malloc64( szTxt+1 );
     if( aTxt==0 ) return SQLITE_NOMEM;
-    rc = sqlite3KvvfsMethods.xRcrdRead(pFile->zClass, "jrnl",
-                                       aTxt, szTxt+1);
-    if( rc>=0 ){
-      kvvfsDecodeJournal(pFile, aTxt, szTxt);
-    }
+    kvstorageRead(pFile->zClass, "jrnl", aTxt, szTxt+1);
+    kvvfsDecodeJournal(pFile, aTxt, szTxt);
     sqlite3_free(aTxt);
-    if( rc ) return rc;
     if( pFile->aJrnl==0 ) return SQLITE_IOERR;
   }
   if( iOfst+iAmt>pFile->nJrnl ){
@@ -39196,8 +38779,8 @@ static int kvvfsReadDb(
     pgno = 1;
   }
   sqlite3_snprintf(sizeof(zKey), zKey, "%u", pgno);
-  got = sqlite3KvvfsMethods.xRcrdRead(pFile->zClass, zKey,
-                                      aData, SQLITE_KVOS_SZ-1);
+  got = sqlite3KvvfsMethods.xRead(pFile->zClass, zKey,
+                                  aData, SQLITE_KVOS_SZ-1);
   if( got<0 ){
     n = 0;
   }else{
@@ -39265,7 +38848,6 @@ static int kvvfsWriteDb(
   unsigned int pgno;
   char zKey[30];
   char *aData = pFile->aData;
-  int rc;
   SQLITE_KV_LOG(("xWrite('%s-db',%d,%lld)\n", pFile->zClass, iAmt, iOfst));
   assert( iAmt>=512 && iAmt<=65536 );
   assert( (iAmt & (iAmt-1))==0 );
@@ -39274,13 +38856,13 @@ static int kvvfsWriteDb(
   pgno = 1 + iOfst/iAmt;
   sqlite3_snprintf(sizeof(zKey), zKey, "%u", pgno);
   kvvfsEncode(zBuf, iAmt, aData);
-  rc = sqlite3KvvfsMethods.xRcrdWrite(pFile->zClass, zKey, aData);
-  if( 0==rc ){
-    if( iOfst+iAmt > pFile->szDb ){
-      pFile->szDb = iOfst + iAmt;
-    }
+  if( sqlite3KvvfsMethods.xWrite(pFile->zClass, zKey, aData) ){
+    return SQLITE_IOERR;
   }
-  return rc;
+  if( iOfst+iAmt > pFile->szDb ){
+    pFile->szDb = iOfst + iAmt;
+  }
+  return SQLITE_OK;
 }
 
 /*
@@ -39290,7 +38872,7 @@ static int kvvfsTruncateJrnl(sqlite3_file *pProtoFile, sqlite_int64 size){
   KVVfsFile *pFile = (KVVfsFile *)pProtoFile;
   SQLITE_KV_LOG(("xTruncate('%s-journal',%lld)\n", pFile->zClass, size));
   assert( size==0 );
-  sqlite3KvvfsMethods.xRcrdDelete(pFile->zClass, "jrnl");
+  sqlite3KvvfsMethods.xDelete(pFile->zClass, "jrnl");
   sqlite3_free(pFile->aJrnl);
   pFile->aJrnl = 0;
   pFile->nJrnl = 0;
@@ -39309,7 +38891,7 @@ static int kvvfsTruncateDb(sqlite3_file *pProtoFile, sqlite_int64 size){
     pgnoMax = 2 + pFile->szDb/pFile->szPage;
     while( pgno<=pgnoMax ){
       sqlite3_snprintf(sizeof(zKey), zKey, "%u", pgno);
-      sqlite3KvvfsMethods.xRcrdDelete(pFile->zClass, zKey);
+      sqlite3KvvfsMethods.xDelete(pFile->zClass, zKey);
       pgno++;
     }
     pFile->szDb = size;
@@ -39341,7 +38923,7 @@ static int kvvfsSyncJrnl(sqlite3_file *pProtoFile, int flags){
   }while( n>0 );
   zOut[i++] = ' ';
   kvvfsEncode(pFile->aJrnl, pFile->nJrnl, &zOut[i]);
-  i = sqlite3KvvfsMethods.xRcrdWrite(pFile->zClass, "jrnl", zOut);
+  i = sqlite3KvvfsMethods.xWrite(pFile->zClass, "jrnl", zOut);
   sqlite3_free(zOut);
   return i ? SQLITE_IOERR : SQLITE_OK;
 }
@@ -39455,32 +39037,33 @@ static int kvvfsOpen(
   KVVfsFile *pFile = (KVVfsFile*)pProtoFile;
   if( zName==0 ) zName = "";
   SQLITE_KV_LOG(("xOpen(\"%s\")\n", zName));
-  assert(!pFile->zClass);
-  assert(!pFile->aData);
-  assert(!pFile->aJrnl);
-  assert(!pFile->nJrnl);
-  assert(!pFile->base.pMethods);
-  pFile->szPage = -1;
-  pFile->szDb = -1;
-  if( 0==sqlite3_strglob("*-journal", zName) ){
+  if( strcmp(zName, "local")==0
+   || strcmp(zName, "session")==0
+  ){
+    pFile->isJournal = 0;
+    pFile->base.pMethods = &kvvfs_db_io_methods;
+  }else
+  if( strcmp(zName, "local-journal")==0
+   || strcmp(zName, "session-journal")==0
+  ){
     pFile->isJournal = 1;
     pFile->base.pMethods = &kvvfs_jrnl_io_methods;
-    if( 0==strcmp("session-journal",zName) ){
-      pFile->zClass = "session";
-    }else if( 0==strcmp("local-journal",zName) ){
-      pFile->zClass = "local";
-    }
   }else{
-    pFile->isJournal = 0;
-    pFile->base.pMethods = &kvvfs_db_io_methods;
+    return SQLITE_CANTOPEN;
   }
-  if( !pFile->zClass ){
-    pFile->zClass = zName;
+  if( zName[0]=='s' ){
+    pFile->zClass = "session";
+  }else{
+    pFile->zClass = "local";
   }
   pFile->aData = sqlite3_malloc64(SQLITE_KVOS_SZ);
   if( pFile->aData==0 ){
     return SQLITE_NOMEM;
   }
+  pFile->aJrnl = 0;
+  pFile->nJrnl = 0;
+  pFile->szPage = -1;
+  pFile->szDb = -1;
   return SQLITE_OK;
 }
 
@@ -39490,17 +39073,13 @@ static int kvvfsOpen(
 ** returning.
 */
 static int kvvfsDelete(sqlite3_vfs *pVfs, const char *zPath, int dirSync){
-  int rc /* The JS impl can fail with OOM in argument conversion */;
   if( strcmp(zPath, "local-journal")==0 ){
-    rc = sqlite3KvvfsMethods.xRcrdDelete("local", "jrnl");
+    sqlite3KvvfsMethods.xDelete("local", "jrnl");
   }else
   if( strcmp(zPath, "session-journal")==0 ){
-    rc = sqlite3KvvfsMethods.xRcrdDelete("session", "jrnl");
+    sqlite3KvvfsMethods.xDelete("session", "jrnl");
   }
-  else{
-    rc = 0;
-  }
-  return rc;
+  return SQLITE_OK;
 }
 
 /*
@@ -39514,42 +39093,21 @@ static int kvvfsAccess(
   int *pResOut
 ){
   SQLITE_KV_LOG(("xAccess(\"%s\")\n", zPath));
-#if 0 && defined(SQLITE_WASM)
-  /*
-  ** This is not having the desired effect in the JS bindings.
-  ** It's ostensibly the same logic as the #else block, but
-  ** it's not behaving that way.
-  **
-  ** In JS we map all zPaths to Storage objects, and -journal files
-  ** are mapped to the storage for the main db (which is is exactly
-  ** what the mapping of "local-journal" -> "local" is doing).
-  */
-  const char *zKey = (0==sqlite3_strglob("*-journal", zPath))
-    ? "jrnl" : "sz";
-  *pResOut =
-    sqlite3KvvfsMethods.xRcrdRead(zPath, zKey, 0, 0)>0;
-#else
   if( strcmp(zPath, "local-journal")==0 ){
-    *pResOut =
-      sqlite3KvvfsMethods.xRcrdRead("local", "jrnl", 0, 0)>0;
+    *pResOut = sqlite3KvvfsMethods.xRead("local", "jrnl", 0, 0)>0;
   }else
   if( strcmp(zPath, "session-journal")==0 ){
-    *pResOut =
-      sqlite3KvvfsMethods.xRcrdRead("session", "jrnl", 0, 0)>0;
+    *pResOut = sqlite3KvvfsMethods.xRead("session", "jrnl", 0, 0)>0;
   }else
   if( strcmp(zPath, "local")==0 ){
-    *pResOut =
-      sqlite3KvvfsMethods.xRcrdRead("local", "sz", 0, 0)>0;
+    *pResOut = sqlite3KvvfsMethods.xRead("local", "sz", 0, 0)>0;
   }else
   if( strcmp(zPath, "session")==0 ){
-    *pResOut =
-      sqlite3KvvfsMethods.xRcrdRead("session", "sz", 0, 0)>0;
+    *pResOut = sqlite3KvvfsMethods.xRead("session", "sz", 0, 0)>0;
   }else
   {
     *pResOut = 0;
   }
-  /*all current JS tests avoid triggering: assert( *pResOut == 0 ); */
-#endif
   SQLITE_KV_LOG(("xAccess returns %d\n",*pResOut));
   return SQLITE_OK;
 }
@@ -44833,7 +44391,7 @@ static int unixShmMap(
     }
 
     /* Map the requested memory region into this processes address space. */
-    apNew = (char **)sqlite3_realloc64(
+    apNew = (char **)sqlite3_realloc(
         pShmNode->apRegion, nReqRegion*sizeof(char *)
     );
     if( !apNew ){
@@ -48278,7 +47836,7 @@ SQLITE_API int sqlite3_os_end(void){
 ** Are most of the Win32 ANSI APIs available (i.e. with certain exceptions
 ** based on the sub-platform)?
 */
-#if !SQLITE_OS_WINCE && !defined(SQLITE_WIN32_NO_ANSI)
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && !defined(SQLITE_WIN32_NO_ANSI)
 #  define SQLITE_WIN32_HAS_ANSI
 #endif
 
@@ -48286,7 +47844,7 @@ SQLITE_API int sqlite3_os_end(void){
 ** Are most of the Win32 Unicode APIs available (i.e. with certain exceptions
 ** based on the sub-platform)?
 */
-#if (SQLITE_OS_WINCE || SQLITE_OS_WINNT) && \
+#if (SQLITE_OS_WINCE || SQLITE_OS_WINNT || SQLITE_OS_WINRT) && \
     !defined(SQLITE_WIN32_NO_WIDE)
 #  define SQLITE_WIN32_HAS_WIDE
 #endif
@@ -48425,7 +47983,16 @@ SQLITE_API int sqlite3_os_end(void){
 */
 #if SQLITE_WIN32_FILEMAPPING_API && \
         (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
+/*
+** Two of the file mapping APIs are different under WinRT.  Figure out which
+** set we need.
+*/
+#if SQLITE_OS_WINRT
+WINBASEAPI HANDLE WINAPI CreateFileMappingFromApp(HANDLE, \
+        LPSECURITY_ATTRIBUTES, ULONG, ULONG64, LPCWSTR);
 
+WINBASEAPI LPVOID WINAPI MapViewOfFileFromApp(HANDLE, ULONG, ULONG64, SIZE_T);
+#else
 #if defined(SQLITE_WIN32_HAS_ANSI)
 WINBASEAPI HANDLE WINAPI CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, \
         DWORD, DWORD, DWORD, LPCSTR);
@@ -48437,6 +48004,7 @@ WINBASEAPI HANDLE WINAPI CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, \
 #endif /* defined(SQLITE_WIN32_HAS_WIDE) */
 
 WINBASEAPI LPVOID WINAPI MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, SIZE_T);
+#endif /* SQLITE_OS_WINRT */
 
 /*
 ** These file mapping APIs are common to both Win32 and WinRT.
@@ -48727,7 +48295,7 @@ static LONG SQLITE_WIN32_VOLATILE sqlite3_os_type = 0;
 ** This function is not available on Windows CE or WinRT.
  */
 
-#if SQLITE_OS_WINCE
+#if SQLITE_OS_WINCE || SQLITE_OS_WINRT
 #  define osAreFileApisANSI()       1
 #endif
 
@@ -48742,7 +48310,7 @@ static struct win_syscall {
   sqlite3_syscall_ptr pCurrent; /* Current value of the system call */
   sqlite3_syscall_ptr pDefault; /* Default value */
 } aSyscall[] = {
-#if !SQLITE_OS_WINCE
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
   { "AreFileApisANSI",         (SYSCALL)AreFileApisANSI,         0 },
 #else
   { "AreFileApisANSI",         (SYSCALL)0,                       0 },
@@ -48781,7 +48349,7 @@ static struct win_syscall {
 #define osCreateFileA ((HANDLE(WINAPI*)(LPCSTR,DWORD,DWORD, \
         LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE))aSyscall[4].pCurrent)
 
-#if defined(SQLITE_WIN32_HAS_WIDE)
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
   { "CreateFileW",             (SYSCALL)CreateFileW,             0 },
 #else
   { "CreateFileW",             (SYSCALL)0,                       0 },
@@ -48790,7 +48358,7 @@ static struct win_syscall {
 #define osCreateFileW ((HANDLE(WINAPI*)(LPCWSTR,DWORD,DWORD, \
         LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE))aSyscall[5].pCurrent)
 
-#if defined(SQLITE_WIN32_HAS_ANSI) && \
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_ANSI) && \
         (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0) && \
         SQLITE_WIN32_CREATEFILEMAPPINGA
   { "CreateFileMappingA",      (SYSCALL)CreateFileMappingA,      0 },
@@ -48801,8 +48369,8 @@ static struct win_syscall {
 #define osCreateFileMappingA ((HANDLE(WINAPI*)(HANDLE,LPSECURITY_ATTRIBUTES, \
         DWORD,DWORD,DWORD,LPCSTR))aSyscall[6].pCurrent)
 
-#if (SQLITE_OS_WINCE || defined(SQLITE_WIN32_HAS_WIDE)) && \
-        (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
+#if SQLITE_OS_WINCE || (!SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE) && \
+        (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0))
   { "CreateFileMappingW",      (SYSCALL)CreateFileMappingW,      0 },
 #else
   { "CreateFileMappingW",      (SYSCALL)0,                       0 },
@@ -48811,7 +48379,7 @@ static struct win_syscall {
 #define osCreateFileMappingW ((HANDLE(WINAPI*)(HANDLE,LPSECURITY_ATTRIBUTES, \
         DWORD,DWORD,DWORD,LPCWSTR))aSyscall[7].pCurrent)
 
-#if defined(SQLITE_WIN32_HAS_WIDE)
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
   { "CreateMutexW",            (SYSCALL)CreateMutexW,            0 },
 #else
   { "CreateMutexW",            (SYSCALL)0,                       0 },
@@ -48897,7 +48465,7 @@ static struct win_syscall {
 #define osGetDiskFreeSpaceA ((BOOL(WINAPI*)(LPCSTR,LPDWORD,LPDWORD,LPDWORD, \
         LPDWORD))aSyscall[18].pCurrent)
 
-#if !SQLITE_OS_WINCE && defined(SQLITE_WIN32_HAS_WIDE)
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
   { "GetDiskFreeSpaceW",       (SYSCALL)GetDiskFreeSpaceW,       0 },
 #else
   { "GetDiskFreeSpaceW",       (SYSCALL)0,                       0 },
@@ -48914,7 +48482,7 @@ static struct win_syscall {
 
 #define osGetFileAttributesA ((DWORD(WINAPI*)(LPCSTR))aSyscall[20].pCurrent)
 
-#if defined(SQLITE_WIN32_HAS_WIDE)
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
   { "GetFileAttributesW",      (SYSCALL)GetFileAttributesW,      0 },
 #else
   { "GetFileAttributesW",      (SYSCALL)0,                       0 },
@@ -48931,7 +48499,11 @@ static struct win_syscall {
 #define osGetFileAttributesExW ((BOOL(WINAPI*)(LPCWSTR,GET_FILEEX_INFO_LEVELS, \
         LPVOID))aSyscall[22].pCurrent)
 
+#if !SQLITE_OS_WINRT
   { "GetFileSize",             (SYSCALL)GetFileSize,             0 },
+#else
+  { "GetFileSize",             (SYSCALL)0,                       0 },
+#endif
 
 #define osGetFileSize ((DWORD(WINAPI*)(HANDLE,LPDWORD))aSyscall[23].pCurrent)
 
@@ -48944,7 +48516,7 @@ static struct win_syscall {
 #define osGetFullPathNameA ((DWORD(WINAPI*)(LPCSTR,DWORD,LPSTR, \
         LPSTR*))aSyscall[24].pCurrent)
 
-#if !SQLITE_OS_WINCE && defined(SQLITE_WIN32_HAS_WIDE)
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
   { "GetFullPathNameW",        (SYSCALL)GetFullPathNameW,        0 },
 #else
   { "GetFullPathNameW",        (SYSCALL)0,                       0 },
@@ -48979,10 +48551,16 @@ static struct win_syscall {
 #define osGetProcAddressA ((FARPROC(WINAPI*)(HMODULE, \
         LPCSTR))aSyscall[27].pCurrent)
 
+#if !SQLITE_OS_WINRT
   { "GetSystemInfo",           (SYSCALL)GetSystemInfo,           0 },
+#else
+  { "GetSystemInfo",           (SYSCALL)0,                       0 },
+#endif
+
 #define osGetSystemInfo ((VOID(WINAPI*)(LPSYSTEM_INFO))aSyscall[28].pCurrent)
 
   { "GetSystemTime",           (SYSCALL)GetSystemTime,           0 },
+
 #define osGetSystemTime ((VOID(WINAPI*)(LPSYSTEMTIME))aSyscall[29].pCurrent)
 
 #if !SQLITE_OS_WINCE
@@ -49002,7 +48580,7 @@ static struct win_syscall {
 
 #define osGetTempPathA ((DWORD(WINAPI*)(DWORD,LPSTR))aSyscall[31].pCurrent)
 
-#if defined(SQLITE_WIN32_HAS_WIDE)
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE)
   { "GetTempPathW",            (SYSCALL)GetTempPathW,            0 },
 #else
   { "GetTempPathW",            (SYSCALL)0,                       0 },
@@ -49010,7 +48588,11 @@ static struct win_syscall {
 
 #define osGetTempPathW ((DWORD(WINAPI*)(DWORD,LPWSTR))aSyscall[32].pCurrent)
 
+#if !SQLITE_OS_WINRT
   { "GetTickCount",            (SYSCALL)GetTickCount,            0 },
+#else
+  { "GetTickCount",            (SYSCALL)0,                       0 },
+#endif
 
 #define osGetTickCount ((DWORD(WINAPI*)(VOID))aSyscall[33].pCurrent)
 
@@ -49023,7 +48605,7 @@ static struct win_syscall {
 #define osGetVersionExA ((BOOL(WINAPI*)( \
         LPOSVERSIONINFOA))aSyscall[34].pCurrent)
 
-#if defined(SQLITE_WIN32_HAS_WIDE) && \
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE) && \
         SQLITE_WIN32_GETVERSIONEX
   { "GetVersionExW",           (SYSCALL)GetVersionExW,           0 },
 #else
@@ -49038,12 +48620,20 @@ static struct win_syscall {
 #define osHeapAlloc ((LPVOID(WINAPI*)(HANDLE,DWORD, \
         SIZE_T))aSyscall[36].pCurrent)
 
+#if !SQLITE_OS_WINRT
   { "HeapCreate",              (SYSCALL)HeapCreate,              0 },
+#else
+  { "HeapCreate",              (SYSCALL)0,                       0 },
+#endif
 
 #define osHeapCreate ((HANDLE(WINAPI*)(DWORD,SIZE_T, \
         SIZE_T))aSyscall[37].pCurrent)
 
+#if !SQLITE_OS_WINRT
   { "HeapDestroy",             (SYSCALL)HeapDestroy,             0 },
+#else
+  { "HeapDestroy",             (SYSCALL)0,                       0 },
+#endif
 
 #define osHeapDestroy ((BOOL(WINAPI*)(HANDLE))aSyscall[38].pCurrent)
 
@@ -49061,12 +48651,16 @@ static struct win_syscall {
 #define osHeapSize ((SIZE_T(WINAPI*)(HANDLE,DWORD, \
         LPCVOID))aSyscall[41].pCurrent)
 
+#if !SQLITE_OS_WINRT
   { "HeapValidate",            (SYSCALL)HeapValidate,            0 },
+#else
+  { "HeapValidate",            (SYSCALL)0,                       0 },
+#endif
 
 #define osHeapValidate ((BOOL(WINAPI*)(HANDLE,DWORD, \
         LPCVOID))aSyscall[42].pCurrent)
 
-#if !SQLITE_OS_WINCE
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
   { "HeapCompact",             (SYSCALL)HeapCompact,             0 },
 #else
   { "HeapCompact",             (SYSCALL)0,                       0 },
@@ -49082,7 +48676,7 @@ static struct win_syscall {
 
 #define osLoadLibraryA ((HMODULE(WINAPI*)(LPCSTR))aSyscall[44].pCurrent)
 
-#if defined(SQLITE_WIN32_HAS_WIDE) && \
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE) && \
         !defined(SQLITE_OMIT_LOAD_EXTENSION)
   { "LoadLibraryW",            (SYSCALL)LoadLibraryW,            0 },
 #else
@@ -49091,11 +48685,15 @@ static struct win_syscall {
 
 #define osLoadLibraryW ((HMODULE(WINAPI*)(LPCWSTR))aSyscall[45].pCurrent)
 
+#if !SQLITE_OS_WINRT
   { "LocalFree",               (SYSCALL)LocalFree,               0 },
+#else
+  { "LocalFree",               (SYSCALL)0,                       0 },
+#endif
 
 #define osLocalFree ((HLOCAL(WINAPI*)(HLOCAL))aSyscall[46].pCurrent)
 
-#if !SQLITE_OS_WINCE
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
   { "LockFile",                (SYSCALL)LockFile,                0 },
 #else
   { "LockFile",                (SYSCALL)0,                       0 },
@@ -49117,7 +48715,8 @@ static struct win_syscall {
         LPOVERLAPPED))aSyscall[48].pCurrent)
 #endif
 
-#if SQLITE_OS_WINCE || !defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0
+#if SQLITE_OS_WINCE || (!SQLITE_OS_WINRT && \
+        (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0))
   { "MapViewOfFile",           (SYSCALL)MapViewOfFile,           0 },
 #else
   { "MapViewOfFile",           (SYSCALL)0,                       0 },
@@ -49145,12 +48744,20 @@ static struct win_syscall {
 
 #define osSetEndOfFile ((BOOL(WINAPI*)(HANDLE))aSyscall[53].pCurrent)
 
+#if !SQLITE_OS_WINRT
   { "SetFilePointer",          (SYSCALL)SetFilePointer,          0 },
+#else
+  { "SetFilePointer",          (SYSCALL)0,                       0 },
+#endif
 
 #define osSetFilePointer ((DWORD(WINAPI*)(HANDLE,LONG,PLONG, \
         DWORD))aSyscall[54].pCurrent)
 
+#if !SQLITE_OS_WINRT
   { "Sleep",                   (SYSCALL)Sleep,                   0 },
+#else
+  { "Sleep",                   (SYSCALL)0,                       0 },
+#endif
 
 #define osSleep ((VOID(WINAPI*)(DWORD))aSyscall[55].pCurrent)
 
@@ -49159,7 +48766,7 @@ static struct win_syscall {
 #define osSystemTimeToFileTime ((BOOL(WINAPI*)(const SYSTEMTIME*, \
         LPFILETIME))aSyscall[56].pCurrent)
 
-#if !SQLITE_OS_WINCE
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
   { "UnlockFile",              (SYSCALL)UnlockFile,              0 },
 #else
   { "UnlockFile",              (SYSCALL)0,                       0 },
@@ -49197,6 +48804,15 @@ static struct win_syscall {
 #define osWriteFile ((BOOL(WINAPI*)(HANDLE,LPCVOID,DWORD,LPDWORD, \
         LPOVERLAPPED))aSyscall[61].pCurrent)
 
+#if SQLITE_OS_WINRT
+  { "CreateEventExW",          (SYSCALL)CreateEventExW,          0 },
+#else
+  { "CreateEventExW",          (SYSCALL)0,                       0 },
+#endif
+
+#define osCreateEventExW ((HANDLE(WINAPI*)(LPSECURITY_ATTRIBUTES,LPCWSTR, \
+        DWORD,DWORD))aSyscall[62].pCurrent)
+
 /*
 ** For WaitForSingleObject(), MSDN says:
 **
@@ -49206,7 +48822,7 @@ static struct win_syscall {
   { "WaitForSingleObject",     (SYSCALL)WaitForSingleObject,     0 },
 
 #define osWaitForSingleObject ((DWORD(WINAPI*)(HANDLE, \
-        DWORD))aSyscall[62].pCurrent)
+        DWORD))aSyscall[63].pCurrent)
 
 #if !SQLITE_OS_WINCE
   { "WaitForSingleObjectEx",   (SYSCALL)WaitForSingleObjectEx,   0 },
@@ -49215,12 +48831,69 @@ static struct win_syscall {
 #endif
 
 #define osWaitForSingleObjectEx ((DWORD(WINAPI*)(HANDLE,DWORD, \
-        BOOL))aSyscall[63].pCurrent)
+        BOOL))aSyscall[64].pCurrent)
 
+#if SQLITE_OS_WINRT
+  { "SetFilePointerEx",        (SYSCALL)SetFilePointerEx,        0 },
+#else
+  { "SetFilePointerEx",        (SYSCALL)0,                       0 },
+#endif
+
+#define osSetFilePointerEx ((BOOL(WINAPI*)(HANDLE,LARGE_INTEGER, \
+        PLARGE_INTEGER,DWORD))aSyscall[65].pCurrent)
+
+#if SQLITE_OS_WINRT
+  { "GetFileInformationByHandleEx", (SYSCALL)GetFileInformationByHandleEx, 0 },
+#else
+  { "GetFileInformationByHandleEx", (SYSCALL)0,                  0 },
+#endif
+
+#define osGetFileInformationByHandleEx ((BOOL(WINAPI*)(HANDLE, \
+        FILE_INFO_BY_HANDLE_CLASS,LPVOID,DWORD))aSyscall[66].pCurrent)
+
+#if SQLITE_OS_WINRT && (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
+  { "MapViewOfFileFromApp",    (SYSCALL)MapViewOfFileFromApp,    0 },
+#else
+  { "MapViewOfFileFromApp",    (SYSCALL)0,                       0 },
+#endif
+
+#define osMapViewOfFileFromApp ((LPVOID(WINAPI*)(HANDLE,ULONG,ULONG64, \
+        SIZE_T))aSyscall[67].pCurrent)
+
+#if SQLITE_OS_WINRT
+  { "CreateFile2",             (SYSCALL)CreateFile2,             0 },
+#else
+  { "CreateFile2",             (SYSCALL)0,                       0 },
+#endif
+
+#define osCreateFile2 ((HANDLE(WINAPI*)(LPCWSTR,DWORD,DWORD,DWORD, \
+        LPCREATEFILE2_EXTENDED_PARAMETERS))aSyscall[68].pCurrent)
+
+#if SQLITE_OS_WINRT && !defined(SQLITE_OMIT_LOAD_EXTENSION)
+  { "LoadPackagedLibrary",     (SYSCALL)LoadPackagedLibrary,     0 },
+#else
+  { "LoadPackagedLibrary",     (SYSCALL)0,                       0 },
+#endif
+
+#define osLoadPackagedLibrary ((HMODULE(WINAPI*)(LPCWSTR, \
+        DWORD))aSyscall[69].pCurrent)
+
+#if SQLITE_OS_WINRT
+  { "GetTickCount64",          (SYSCALL)GetTickCount64,          0 },
+#else
+  { "GetTickCount64",          (SYSCALL)0,                       0 },
+#endif
+
+#define osGetTickCount64 ((ULONGLONG(WINAPI*)(VOID))aSyscall[70].pCurrent)
+
+#if SQLITE_OS_WINRT
   { "GetNativeSystemInfo",     (SYSCALL)GetNativeSystemInfo,     0 },
+#else
+  { "GetNativeSystemInfo",     (SYSCALL)0,                       0 },
+#endif
 
 #define osGetNativeSystemInfo ((VOID(WINAPI*)( \
-        LPSYSTEM_INFO))aSyscall[64].pCurrent)
+        LPSYSTEM_INFO))aSyscall[71].pCurrent)
 
 #if defined(SQLITE_WIN32_HAS_ANSI)
   { "OutputDebugStringA",      (SYSCALL)OutputDebugStringA,      0 },
@@ -49228,7 +48901,7 @@ static struct win_syscall {
   { "OutputDebugStringA",      (SYSCALL)0,                       0 },
 #endif
 
-#define osOutputDebugStringA ((VOID(WINAPI*)(LPCSTR))aSyscall[65].pCurrent)
+#define osOutputDebugStringA ((VOID(WINAPI*)(LPCSTR))aSyscall[72].pCurrent)
 
 #if defined(SQLITE_WIN32_HAS_WIDE)
   { "OutputDebugStringW",      (SYSCALL)OutputDebugStringW,      0 },
@@ -49236,11 +48909,20 @@ static struct win_syscall {
   { "OutputDebugStringW",      (SYSCALL)0,                       0 },
 #endif
 
-#define osOutputDebugStringW ((VOID(WINAPI*)(LPCWSTR))aSyscall[66].pCurrent)
+#define osOutputDebugStringW ((VOID(WINAPI*)(LPCWSTR))aSyscall[73].pCurrent)
 
   { "GetProcessHeap",          (SYSCALL)GetProcessHeap,          0 },
 
-#define osGetProcessHeap ((HANDLE(WINAPI*)(VOID))aSyscall[67].pCurrent)
+#define osGetProcessHeap ((HANDLE(WINAPI*)(VOID))aSyscall[74].pCurrent)
+
+#if SQLITE_OS_WINRT && (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
+  { "CreateFileMappingFromApp", (SYSCALL)CreateFileMappingFromApp, 0 },
+#else
+  { "CreateFileMappingFromApp", (SYSCALL)0,                      0 },
+#endif
+
+#define osCreateFileMappingFromApp ((HANDLE(WINAPI*)(HANDLE, \
+        LPSECURITY_ATTRIBUTES,ULONG,ULONG64,LPCWSTR))aSyscall[75].pCurrent)
 
 /*
 ** NOTE: On some sub-platforms, the InterlockedCompareExchange "function"
@@ -49255,25 +48937,25 @@ static struct win_syscall {
   { "InterlockedCompareExchange", (SYSCALL)InterlockedCompareExchange, 0 },
 
 #define osInterlockedCompareExchange ((LONG(WINAPI*)(LONG \
-        SQLITE_WIN32_VOLATILE*, LONG,LONG))aSyscall[68].pCurrent)
+        SQLITE_WIN32_VOLATILE*, LONG,LONG))aSyscall[76].pCurrent)
 #endif /* defined(InterlockedCompareExchange) */
 
-#if !SQLITE_OS_WINCE && SQLITE_WIN32_USE_UUID
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
   { "UuidCreate",               (SYSCALL)UuidCreate,             0 },
 #else
   { "UuidCreate",               (SYSCALL)0,                      0 },
 #endif
 
-#define osUuidCreate ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[69].pCurrent)
+#define osUuidCreate ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[77].pCurrent)
 
-#if !SQLITE_OS_WINCE && SQLITE_WIN32_USE_UUID
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
   { "UuidCreateSequential",     (SYSCALL)UuidCreateSequential,   0 },
 #else
   { "UuidCreateSequential",     (SYSCALL)0,                      0 },
 #endif
 
 #define osUuidCreateSequential \
-        ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[70].pCurrent)
+        ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[78].pCurrent)
 
 #if !defined(SQLITE_NO_SYNC) && SQLITE_MAX_MMAP_SIZE>0
   { "FlushViewOfFile",          (SYSCALL)FlushViewOfFile,        0 },
@@ -49282,7 +48964,7 @@ static struct win_syscall {
 #endif
 
 #define osFlushViewOfFile \
-        ((BOOL(WINAPI*)(LPCVOID,SIZE_T))aSyscall[71].pCurrent)
+        ((BOOL(WINAPI*)(LPCVOID,SIZE_T))aSyscall[79].pCurrent)
 
 /*
 ** If SQLITE_ENABLE_SETLK_TIMEOUT is defined, we require CreateEvent()
@@ -49299,7 +48981,7 @@ static struct win_syscall {
 
 #define osCreateEvent ( \
     (HANDLE(WINAPI*) (LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCSTR)) \
-    aSyscall[72].pCurrent \
+    aSyscall[80].pCurrent \
 )
 
 /*
@@ -49316,7 +48998,7 @@ static struct win_syscall {
   { "CancelIo",                 (SYSCALL)0,                      0 },
 #endif
 
-#define osCancelIo ((BOOL(WINAPI*)(HANDLE))aSyscall[73].pCurrent)
+#define osCancelIo ((BOOL(WINAPI*)(HANDLE))aSyscall[81].pCurrent)
 
 #if defined(SQLITE_WIN32_HAS_WIDE) && defined(_WIN32)
   { "GetModuleHandleW",         (SYSCALL)GetModuleHandleW,       0 },
@@ -49324,7 +49006,7 @@ static struct win_syscall {
   { "GetModuleHandleW",         (SYSCALL)0,                      0 },
 #endif
 
-#define osGetModuleHandleW ((HMODULE(WINAPI*)(LPCWSTR))aSyscall[74].pCurrent)
+#define osGetModuleHandleW ((HMODULE(WINAPI*)(LPCWSTR))aSyscall[82].pCurrent)
 
 #ifndef _WIN32
   { "getenv",                   (SYSCALL)getenv,                 0 },
@@ -49332,7 +49014,7 @@ static struct win_syscall {
   { "getenv",                   (SYSCALL)0,                      0 },
 #endif
 
-#define osGetenv ((const char *(*)(const char *))aSyscall[75].pCurrent)
+#define osGetenv ((const char *(*)(const char *))aSyscall[83].pCurrent)
 
 #ifndef _WIN32
   { "getcwd",                   (SYSCALL)getcwd,                 0 },
@@ -49340,7 +49022,7 @@ static struct win_syscall {
   { "getcwd",                   (SYSCALL)0,                      0 },
 #endif
 
-#define osGetcwd ((char*(*)(char*,size_t))aSyscall[76].pCurrent)
+#define osGetcwd ((char*(*)(char*,size_t))aSyscall[84].pCurrent)
 
 #ifndef _WIN32
   { "readlink",                 (SYSCALL)readlink,               0 },
@@ -49348,7 +49030,7 @@ static struct win_syscall {
   { "readlink",                 (SYSCALL)0,                      0 },
 #endif
 
-#define osReadlink ((ssize_t(*)(const char*,char*,size_t))aSyscall[77].pCurrent)
+#define osReadlink ((ssize_t(*)(const char*,char*,size_t))aSyscall[85].pCurrent)
 
 #ifndef _WIN32
   { "lstat",                    (SYSCALL)lstat,                  0 },
@@ -49356,7 +49038,7 @@ static struct win_syscall {
   { "lstat",                    (SYSCALL)0,                      0 },
 #endif
 
-#define osLstat ((int(*)(const char*,struct stat*))aSyscall[78].pCurrent)
+#define osLstat ((int(*)(const char*,struct stat*))aSyscall[86].pCurrent)
 
 #ifndef _WIN32
   { "__errno",                  (SYSCALL)__errno,                0 },
@@ -49364,7 +49046,7 @@ static struct win_syscall {
   { "__errno",                  (SYSCALL)0,                      0 },
 #endif
 
-#define osErrno (*((int*(*)(void))aSyscall[79].pCurrent)())
+#define osErrno (*((int*(*)(void))aSyscall[87].pCurrent)())
 
 #ifndef _WIN32
   { "cygwin_conv_path",         (SYSCALL)cygwin_conv_path,       0 },
@@ -49373,7 +49055,7 @@ static struct win_syscall {
 #endif
 
 #define osCygwin_conv_path ((size_t(*)(unsigned int, \
-    const void *, void *, size_t))aSyscall[80].pCurrent)
+    const void *, void *, size_t))aSyscall[88].pCurrent)
 
 }; /* End of the overrideable system calls */
 
@@ -49477,10 +49159,10 @@ SQLITE_API int sqlite3_win32_compact_heap(LPUINT pnLargest){
   hHeap = winMemGetHeap();
   assert( hHeap!=0 );
   assert( hHeap!=INVALID_HANDLE_VALUE );
-#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(hHeap, SQLITE_WIN32_HEAP_FLAGS, NULL) );
 #endif
-#if !SQLITE_OS_WINCE
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
   if( (nLargest=osHeapCompact(hHeap, SQLITE_WIN32_HEAP_FLAGS))==0 ){
     DWORD lastErrno = osGetLastError();
     if( lastErrno==NO_ERROR ){
@@ -49593,11 +49275,28 @@ SQLITE_API void sqlite3_win32_write_debug(const char *zBuf, int nBuf){
 }
 #endif /* _WIN32 */
 
+/*
+** The following routine suspends the current thread for at least ms
+** milliseconds.  This is equivalent to the Win32 Sleep() interface.
+*/
+#if SQLITE_OS_WINRT
+static HANDLE sleepObj = NULL;
+#endif
+
 SQLITE_API void sqlite3_win32_sleep(DWORD milliseconds){
+#if SQLITE_OS_WINRT
+  if ( sleepObj==NULL ){
+    sleepObj = osCreateEventExW(NULL, NULL, CREATE_EVENT_MANUAL_RESET,
+                                SYNCHRONIZE);
+  }
+  assert( sleepObj!=NULL );
+  osWaitForSingleObjectEx(sleepObj, milliseconds, FALSE);
+#else
   osSleep(milliseconds);
+#endif
 }
 
-#if SQLITE_MAX_WORKER_THREADS>0 && !SQLITE_OS_WINCE && \
+#if SQLITE_MAX_WORKER_THREADS>0 && !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && \
         SQLITE_THREADSAFE>0
 SQLITE_PRIVATE DWORD sqlite3Win32Wait(HANDLE hObject){
   DWORD rc;
@@ -49621,7 +49320,7 @@ SQLITE_PRIVATE DWORD sqlite3Win32Wait(HANDLE hObject){
 
 #if !SQLITE_WIN32_GETVERSIONEX
 # define osIsNT()  (1)
-#elif SQLITE_OS_WINCE || !defined(SQLITE_WIN32_HAS_ANSI)
+#elif SQLITE_OS_WINCE || SQLITE_OS_WINRT || !defined(SQLITE_WIN32_HAS_ANSI)
 # define osIsNT()  (1)
 #elif !defined(SQLITE_WIN32_HAS_WIDE)
 # define osIsNT()  (0)
@@ -49634,7 +49333,13 @@ SQLITE_PRIVATE DWORD sqlite3Win32Wait(HANDLE hObject){
 ** based on the NT kernel.
 */
 SQLITE_API int sqlite3_win32_is_nt(void){
-#if SQLITE_WIN32_GETVERSIONEX
+#if SQLITE_OS_WINRT
+  /*
+  ** NOTE: The WinRT sub-platform is always assumed to be based on the NT
+  **       kernel.
+  */
+  return 1;
+#elif SQLITE_WIN32_GETVERSIONEX
   if( osInterlockedCompareExchange(&sqlite3_os_type, 0, 0)==0 ){
 #if defined(SQLITE_WIN32_HAS_ANSI)
     OSVERSIONINFOA sInfo;
@@ -49676,7 +49381,7 @@ static void *winMemMalloc(int nBytes){
   hHeap = winMemGetHeap();
   assert( hHeap!=0 );
   assert( hHeap!=INVALID_HANDLE_VALUE );
-#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(hHeap, SQLITE_WIN32_HEAP_FLAGS, NULL) );
 #endif
   assert( nBytes>=0 );
@@ -49698,7 +49403,7 @@ static void winMemFree(void *pPrior){
   hHeap = winMemGetHeap();
   assert( hHeap!=0 );
   assert( hHeap!=INVALID_HANDLE_VALUE );
-#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(hHeap, SQLITE_WIN32_HEAP_FLAGS, pPrior) );
 #endif
   if( !pPrior ) return; /* Passing NULL to HeapFree is undefined. */
@@ -49719,7 +49424,7 @@ static void *winMemRealloc(void *pPrior, int nBytes){
   hHeap = winMemGetHeap();
   assert( hHeap!=0 );
   assert( hHeap!=INVALID_HANDLE_VALUE );
-#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(hHeap, SQLITE_WIN32_HEAP_FLAGS, pPrior) );
 #endif
   assert( nBytes>=0 );
@@ -49747,7 +49452,7 @@ static int winMemSize(void *p){
   hHeap = winMemGetHeap();
   assert( hHeap!=0 );
   assert( hHeap!=INVALID_HANDLE_VALUE );
-#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(hHeap, SQLITE_WIN32_HEAP_FLAGS, p) );
 #endif
   if( !p ) return 0;
@@ -49777,7 +49482,7 @@ static int winMemInit(void *pAppData){
   assert( pWinMemData->magic1==WINMEM_MAGIC1 );
   assert( pWinMemData->magic2==WINMEM_MAGIC2 );
 
-#if SQLITE_WIN32_HEAP_CREATE
+#if !SQLITE_OS_WINRT && SQLITE_WIN32_HEAP_CREATE
   if( !pWinMemData->hHeap ){
     DWORD dwInitialSize = SQLITE_WIN32_HEAP_INIT_SIZE;
     DWORD dwMaximumSize = (DWORD)sqlite3GlobalConfig.nHeap;
@@ -49810,7 +49515,7 @@ static int winMemInit(void *pAppData){
 #endif
   assert( pWinMemData->hHeap!=0 );
   assert( pWinMemData->hHeap!=INVALID_HANDLE_VALUE );
-#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
   assert( osHeapValidate(pWinMemData->hHeap, SQLITE_WIN32_HEAP_FLAGS, NULL) );
 #endif
   return SQLITE_OK;
@@ -49828,7 +49533,7 @@ static void winMemShutdown(void *pAppData){
 
   if( pWinMemData->hHeap ){
     assert( pWinMemData->hHeap!=INVALID_HANDLE_VALUE );
-#if defined(SQLITE_WIN32_MALLOC_VALIDATE)
+#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE)
     assert( osHeapValidate(pWinMemData->hHeap, SQLITE_WIN32_HEAP_FLAGS, NULL) );
 #endif
     if( pWinMemData->bOwned ){
@@ -50209,6 +49914,17 @@ static int winGetLastErrorMsg(DWORD lastErrno, int nBuf, char *zBuf){
   char *zOut = 0;
 
   if( osIsNT() ){
+#if SQLITE_OS_WINRT
+    WCHAR zTempWide[SQLITE_WIN32_MAX_ERRMSG_CHARS+1];
+    dwLen = osFormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM |
+                             FORMAT_MESSAGE_IGNORE_INSERTS,
+                             NULL,
+                             lastErrno,
+                             0,
+                             zTempWide,
+                             SQLITE_WIN32_MAX_ERRMSG_CHARS,
+                             0);
+#else
     LPWSTR zTempWide = NULL;
     dwLen = osFormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER |
                              FORMAT_MESSAGE_FROM_SYSTEM |
@@ -50219,13 +49935,16 @@ static int winGetLastErrorMsg(DWORD lastErrno, int nBuf, char *zBuf){
                              (LPWSTR) &zTempWide,
                              0,
                              0);
+#endif
     if( dwLen > 0 ){
       /* allocate a buffer and convert to UTF8 */
       sqlite3BeginBenignMalloc();
       zOut = winUnicodeToUtf8(zTempWide);
       sqlite3EndBenignMalloc();
+#if !SQLITE_OS_WINRT
       /* free the system buffer allocated by FormatMessage */
       osLocalFree(zTempWide);
+#endif
     }
   }
 #ifdef SQLITE_WIN32_HAS_ANSI
@@ -50886,6 +50605,7 @@ static int winHandleUnlock(HANDLE h, int iOff, int nByte){
 static int winHandleSeek(HANDLE h, sqlite3_int64 iOffset){
   int rc = SQLITE_OK;             /* Return value */
 
+#if !SQLITE_OS_WINRT
   LONG upperBits;                 /* Most sig. 32 bits of new offset */
   LONG lowerBits;                 /* Least sig. 32 bits of new offset */
   DWORD dwRet;                    /* Value returned by SetFilePointer() */
@@ -50907,7 +50627,20 @@ static int winHandleSeek(HANDLE h, sqlite3_int64 iOffset){
       rc = SQLITE_IOERR_SEEK;
     }
   }
-  OSTRACE(("SEEK file=%p, offset=%lld rc=%s\n", h, iOffset,sqlite3ErrName(rc)));
+#else
+  /* This implementation works for WinRT. */
+  LARGE_INTEGER x;                /* The new offset */
+  BOOL bRet;                      /* Value returned by SetFilePointerEx() */
+
+  x.QuadPart = iOffset;
+  bRet = osSetFilePointerEx(h, x, 0, FILE_BEGIN);
+
+  if(!bRet){
+    rc = SQLITE_IOERR_SEEK;
+  }
+#endif
+
+  OSTRACE(("SEEK file=%p, offset=%lld rc=%s\n", h, iOffset, sqlite3ErrName(rc)));
   return rc;
 }
 
@@ -51208,6 +50941,17 @@ static int winHandleTruncate(HANDLE h, sqlite3_int64 nByte){
 */
 static int winHandleSize(HANDLE h, sqlite3_int64 *pnByte){
   int rc = SQLITE_OK;
+
+#if SQLITE_OS_WINRT
+  FILE_STANDARD_INFO info;
+  BOOL b;
+  b = osGetFileInformationByHandleEx(h, FileStandardInfo, &info, sizeof(info));
+  if( b ){
+    *pnByte = info.EndOfFile.QuadPart;
+  }else{
+    rc = SQLITE_IOERR_FSTAT;
+  }
+#else
   DWORD upperBits = 0;
   DWORD lowerBits = 0;
 
@@ -51217,6 +50961,8 @@ static int winHandleSize(HANDLE h, sqlite3_int64 *pnByte){
   if( lowerBits==INVALID_FILE_SIZE && osGetLastError()!=NO_ERROR ){
     rc = SQLITE_IOERR_FSTAT;
   }
+#endif
+
   return rc;
 }
 
@@ -51415,6 +51161,20 @@ static int winFileSize(sqlite3_file *id, sqlite3_int64 *pSize){
   assert( pSize!=0 );
   SimulateIOError(return SQLITE_IOERR_FSTAT);
   OSTRACE(("SIZE file=%p, pSize=%p\n", pFile->h, pSize));
+
+#if SQLITE_OS_WINRT
+  {
+    FILE_STANDARD_INFO info;
+    if( osGetFileInformationByHandleEx(pFile->h, FileStandardInfo,
+                                     &info, sizeof(info)) ){
+      *pSize = info.EndOfFile.QuadPart;
+    }else{
+      pFile->lastErrno = osGetLastError();
+      rc = winLogError(SQLITE_IOERR_FSTAT, pFile->lastErrno,
+                       "winFileSize", pFile->zPath);
+    }
+  }
+#else
   {
     DWORD upperBits;
     DWORD lowerBits;
@@ -51429,6 +51189,7 @@ static int winFileSize(sqlite3_file *id, sqlite3_int64 *pSize){
                        "winFileSize", pFile->zPath);
     }
   }
+#endif
   OSTRACE(("SIZE file=%p, pSize=%p, *pSize=%lld, rc=%s\n",
            pFile->h, pSize, *pSize, sqlite3ErrName(rc)));
   return rc;
@@ -52390,6 +52151,20 @@ static int winHandleOpen(
   ** TODO: retry-on-ioerr.
   */
   if( osIsNT() ){
+#if SQLITE_OS_WINRT
+    CREATEFILE2_EXTENDED_PARAMETERS extendedParameters;
+    memset(&extendedParameters, 0, sizeof(extendedParameters));
+    extendedParameters.dwSize = sizeof(extendedParameters);
+    extendedParameters.dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
+    extendedParameters.dwFileFlags = flag_overlapped;
+    extendedParameters.dwSecurityQosFlags = SECURITY_ANONYMOUS;
+    h = osCreateFile2((LPCWSTR)zConverted,
+        (GENERIC_READ | (bReadonly ? 0 : GENERIC_WRITE)),/* dwDesiredAccess */
+        FILE_SHARE_READ | FILE_SHARE_WRITE,      /* dwShareMode */
+        OPEN_ALWAYS,                             /* dwCreationDisposition */
+        &extendedParameters
+    );
+#else
     h = osCreateFileW((LPCWSTR)zConverted,         /* lpFileName */
         (GENERIC_READ | (bReadonly ? 0 : GENERIC_WRITE)),  /* dwDesiredAccess */
         FILE_SHARE_READ | FILE_SHARE_WRITE,        /* dwShareMode */
@@ -52398,6 +52173,7 @@ static int winHandleOpen(
         FILE_ATTRIBUTE_NORMAL|flag_overlapped,
         NULL
     );
+#endif
   }else{
     /* Due to pre-processor directives earlier in this file,
     ** SQLITE_WIN32_HAS_ANSI is always defined if osIsNT() is false. */
@@ -52865,7 +52641,9 @@ static int winShmMap(
       HANDLE hMap = NULL;         /* file-mapping handle */
       void *pMap = 0;             /* Mapped memory region */
 
-#if defined(SQLITE_WIN32_HAS_WIDE)
+#if SQLITE_OS_WINRT
+      hMap = osCreateFileMappingFromApp(hShared, NULL, protect, nByte, NULL);
+#elif defined(SQLITE_WIN32_HAS_WIDE)
       hMap = osCreateFileMappingW(hShared, NULL, protect, 0, nByte, NULL);
 #elif defined(SQLITE_WIN32_HAS_ANSI) && SQLITE_WIN32_CREATEFILEMAPPINGA
       hMap = osCreateFileMappingA(hShared, NULL, protect, 0, nByte, NULL);
@@ -52877,9 +52655,15 @@ static int winShmMap(
       if( hMap ){
         int iOffset = pShmNode->nRegion*szRegion;
         int iOffsetShift = iOffset % winSysInfo.dwAllocationGranularity;
+#if SQLITE_OS_WINRT
+        pMap = osMapViewOfFileFromApp(hMap, flags,
+            iOffset - iOffsetShift, szRegion + iOffsetShift
+        );
+#else
         pMap = osMapViewOfFile(hMap, flags,
             0, iOffset - iOffsetShift, szRegion + iOffsetShift
         );
+#endif
         OSTRACE(("SHM-MAP-MAP pid=%lu, region=%d, offset=%d, size=%d, rc=%s\n",
                  osGetCurrentProcessId(), pShmNode->nRegion, iOffset,
                  szRegion, pMap ? "ok" : "failed"));
@@ -53012,7 +52796,9 @@ static int winMapfile(winFile *pFd, sqlite3_int64 nByte){
       flags |= FILE_MAP_WRITE;
     }
 #endif
-#if defined(SQLITE_WIN32_HAS_WIDE)
+#if SQLITE_OS_WINRT
+    pFd->hMap = osCreateFileMappingFromApp(pFd->h, NULL, protect, nMap, NULL);
+#elif defined(SQLITE_WIN32_HAS_WIDE)
     pFd->hMap = osCreateFileMappingW(pFd->h, NULL, protect,
                                 (DWORD)((nMap>>32) & 0xffffffff),
                                 (DWORD)(nMap & 0xffffffff), NULL);
@@ -53032,7 +52818,11 @@ static int winMapfile(winFile *pFd, sqlite3_int64 nByte){
     }
     assert( (nMap % winSysInfo.dwPageSize)==0 );
     assert( sizeof(SIZE_T)==sizeof(sqlite3_int64) || nMap<=0xffffffff );
+#if SQLITE_OS_WINRT
+    pNew = osMapViewOfFileFromApp(pFd->hMap, flags, 0, (SIZE_T)nMap);
+#else
     pNew = osMapViewOfFile(pFd->hMap, flags, 0, 0, (SIZE_T)nMap);
+#endif
     if( pNew==NULL ){
       osCloseHandle(pFd->hMap);
       pFd->hMap = NULL;
@@ -53367,6 +53157,7 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){
   }
 #endif
 
+#if !SQLITE_OS_WINRT && defined(_WIN32)
   else if( osIsNT() ){
     char *zMulti;
     LPWSTR zWidePath = sqlite3MallocZero( nMax*sizeof(WCHAR) );
@@ -53420,6 +53211,7 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){
     }
   }
 #endif /* SQLITE_WIN32_HAS_ANSI */
+#endif /* !SQLITE_OS_WINRT */
 
   /*
   ** Check to make sure the temporary directory ends with an appropriate
@@ -53594,6 +53386,13 @@ static int winOpen(
   memset(pFile, 0, sizeof(winFile));
   pFile->h = INVALID_HANDLE_VALUE;
 
+#if SQLITE_OS_WINRT
+  if( !zUtf8Name && !sqlite3_temp_directory ){
+    sqlite3_log(SQLITE_ERROR,
+        "sqlite3_temp_directory variable should be set for WinRT");
+  }
+#endif
+
   /* If the second argument to this function is NULL, generate a
   ** temporary file name to use
   */
@@ -53676,6 +53475,31 @@ static int winOpen(
 #endif
 
   if( osIsNT() ){
+#if SQLITE_OS_WINRT
+    CREATEFILE2_EXTENDED_PARAMETERS extendedParameters;
+    extendedParameters.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS);
+    extendedParameters.dwFileAttributes =
+            dwFlagsAndAttributes & FILE_ATTRIBUTE_MASK;
+    extendedParameters.dwFileFlags = dwFlagsAndAttributes & FILE_FLAG_MASK;
+    extendedParameters.dwSecurityQosFlags = SECURITY_ANONYMOUS;
+    extendedParameters.lpSecurityAttributes = NULL;
+    extendedParameters.hTemplateFile = NULL;
+    do{
+      h = osCreateFile2((LPCWSTR)zConverted,
+                        dwDesiredAccess,
+                        dwShareMode,
+                        dwCreationDisposition,
+                        &extendedParameters);
+      if( h!=INVALID_HANDLE_VALUE ) break;
+      if( isReadWrite ){
+        int rc2;
+        sqlite3BeginBenignMalloc();
+        rc2 = winAccess(pVfs, zUtf8Name, SQLITE_ACCESS_READ|NORETRY, &isRO);
+        sqlite3EndBenignMalloc();
+        if( rc2==SQLITE_OK && isRO ) break;
+      }
+    }while( winRetryIoerr(&cnt, &lastErrno) );
+#else
     do{
       h = osCreateFileW((LPCWSTR)zConverted,
                         dwDesiredAccess,
@@ -53692,6 +53516,7 @@ static int winOpen(
         if( rc2==SQLITE_OK && isRO ) break;
       }
     }while( winRetryIoerr(&cnt, &lastErrno) );
+#endif
   }
 #ifdef SQLITE_WIN32_HAS_ANSI
   else{
@@ -53828,7 +53653,25 @@ static int winDelete(
   }
   if( osIsNT() ){
     do {
+#if SQLITE_OS_WINRT
+      WIN32_FILE_ATTRIBUTE_DATA sAttrData;
+      memset(&sAttrData, 0, sizeof(sAttrData));
+      if ( osGetFileAttributesExW(zConverted, GetFileExInfoStandard,
+                                  &sAttrData) ){
+        attr = sAttrData.dwFileAttributes;
+      }else{
+        lastErrno = osGetLastError();
+        if( lastErrno==ERROR_FILE_NOT_FOUND
+         || lastErrno==ERROR_PATH_NOT_FOUND ){
+          rc = SQLITE_IOERR_DELETE_NOENT; /* Already gone? */
+        }else{
+          rc = SQLITE_ERROR;
+        }
+        break;
+      }
+#else
       attr = osGetFileAttributesW(zConverted);
+#endif
       if ( attr==INVALID_FILE_ATTRIBUTES ){
         lastErrno = osGetLastError();
         if( lastErrno==ERROR_FILE_NOT_FOUND
@@ -53951,7 +53794,6 @@ static int winAccess(
         attr = sAttrData.dwFileAttributes;
       }
     }else{
-      if( noRetry ) lastErrno = osGetLastError();
       winLogIoerr(cnt, __LINE__);
       if( lastErrno!=ERROR_FILE_NOT_FOUND && lastErrno!=ERROR_PATH_NOT_FOUND ){
         sqlite3_free(zConverted);
@@ -54120,7 +53962,7 @@ static int winFullPathnameNoMutex(
   int nFull,                    /* Size of output buffer in bytes */
   char *zFull                   /* Output buffer */
 ){
-#if !SQLITE_OS_WINCE
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
   int nByte;
   void *zConverted;
   char *zOut;
@@ -54209,7 +54051,7 @@ static int winFullPathnameNoMutex(
   }
 #endif /* __CYGWIN__ */
 
-#if SQLITE_OS_WINCE && defined(_WIN32)
+#if (SQLITE_OS_WINCE || SQLITE_OS_WINRT) && defined(_WIN32)
   SimulateIOError( return SQLITE_ERROR );
   /* WinCE has no concept of a relative pathname, or so I am told. */
   /* WinRT has no way to convert a relative path to an absolute one. */
@@ -54228,7 +54070,7 @@ static int winFullPathnameNoMutex(
   return SQLITE_OK;
 #endif
 
-#if !SQLITE_OS_WINCE
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT
 #if defined(_WIN32)
   /* It's odd to simulate an io-error here, but really this is just
   ** using the io-error infrastructure to test that SQLite handles this
@@ -54360,7 +54202,11 @@ static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){
     return 0;
   }
   if( osIsNT() ){
+#if SQLITE_OS_WINRT
+    h = osLoadPackagedLibrary((LPCWSTR)zConverted, 0);
+#else
     h = osLoadLibraryW((LPCWSTR)zConverted);
+#endif
   }
 #ifdef SQLITE_WIN32_HAS_ANSI
   else{
@@ -54442,16 +54288,23 @@ static int winRandomness(sqlite3_vfs *pVfs, int nBuf, char *zBuf){
     DWORD pid = osGetCurrentProcessId();
     xorMemory(&e, (unsigned char*)&pid, sizeof(DWORD));
   }
+#if SQLITE_OS_WINRT
+  {
+    ULONGLONG cnt = osGetTickCount64();
+    xorMemory(&e, (unsigned char*)&cnt, sizeof(ULONGLONG));
+  }
+#else
   {
     DWORD cnt = osGetTickCount();
     xorMemory(&e, (unsigned char*)&cnt, sizeof(DWORD));
   }
+#endif /* SQLITE_OS_WINRT */
   {
     LARGE_INTEGER i;
     osQueryPerformanceCounter(&i);
     xorMemory(&e, (unsigned char*)&i, sizeof(LARGE_INTEGER));
   }
-#if !SQLITE_OS_WINCE && SQLITE_WIN32_USE_UUID
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
   {
     UUID id;
     memset(&id, 0, sizeof(UUID));
@@ -54461,7 +54314,7 @@ static int winRandomness(sqlite3_vfs *pVfs, int nBuf, char *zBuf){
     osUuidCreateSequential(&id);
     xorMemory(&e, (unsigned char*)&id, sizeof(UUID));
   }
-#endif /* !SQLITE_OS_WINCE && SQLITE_WIN32_USE_UUID */
+#endif /* !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID */
   return e.nXor>nBuf ? nBuf : e.nXor;
 #endif /* defined(SQLITE_TEST) || defined(SQLITE_OMIT_RANDOMNESS) */
 }
@@ -54692,16 +54545,15 @@ SQLITE_API int sqlite3_os_init(void){
 
   /* Double-check that the aSyscall[] array has been constructed
   ** correctly.  See ticket [bb3a86e890c8e96ab] */
-  assert( ArraySize(aSyscall)==81 );
-  assert( strcmp(aSyscall[0].zName,"AreFileApisANSI")==0 );
-  assert( strcmp(aSyscall[20].zName,"GetFileAttributesA")==0 );
-  assert( strcmp(aSyscall[40].zName,"HeapReAlloc")==0 );
-  assert( strcmp(aSyscall[60].zName,"WideCharToMultiByte")==0 );
-  assert( strcmp(aSyscall[80].zName,"cygwin_conv_path")==0 );
+  assert( ArraySize(aSyscall)==89 );
 
   /* get memory map allocation granularity */
   memset(&winSysInfo, 0, sizeof(SYSTEM_INFO));
+#if SQLITE_OS_WINRT
+  osGetNativeSystemInfo(&winSysInfo);
+#else
   osGetSystemInfo(&winSysInfo);
+#endif
   assert( winSysInfo.dwAllocationGranularity>0 );
   assert( winSysInfo.dwPageSize>0 );
 
@@ -54725,9 +54577,17 @@ SQLITE_API int sqlite3_os_init(void){
 }
 
 SQLITE_API int sqlite3_os_end(void){
+#if SQLITE_OS_WINRT
+  if( sleepObj!=NULL ){
+    osCloseHandle(sleepObj);
+    sleepObj = NULL;
+  }
+#endif
+
 #ifndef SQLITE_OMIT_WAL
   winBigLock = 0;
 #endif
+
   return SQLITE_OK;
 }
 
@@ -59876,8 +59736,6 @@ SQLITE_PRIVATE int sqlite3PagerDirectReadOk(Pager *pPager, Pgno pgno){
     (void)sqlite3WalFindFrame(pPager->pWal, pgno, &iRead);
     if( iRead ) return 0;  /* Case (4) */
   }
-#else
-  UNUSED_PARAMETER(pgno);
 #endif
   assert( pPager->fd->pMethods->xDeviceCharacteristics!=0 );
   if( (pPager->fd->pMethods->xDeviceCharacteristics(pPager->fd)
@@ -60298,17 +60156,17 @@ static int jrnlBufferSize(Pager *pPager){
 */
 #ifdef SQLITE_CHECK_PAGES
 /*
-** Return a 64-bit hash of the page data for pPage.
+** Return a 32-bit hash of the page data for pPage.
 */
-static u64 pager_datahash(int nByte, unsigned char *pData){
-  u64 hash = 0;
+static u32 pager_datahash(int nByte, unsigned char *pData){
+  u32 hash = 0;
   int i;
   for(i=0; i<nByte; i++){
     hash = (hash*1039) + pData[i];
   }
   return hash;
 }
-static u64 pager_pagehash(PgHdr *pPage){
+static u32 pager_pagehash(PgHdr *pPage){
   return pager_datahash(pPage->pPager->pageSize, (unsigned char *)pPage->pData);
 }
 static void pager_set_pagehash(PgHdr *pPage){
@@ -63257,8 +63115,6 @@ SQLITE_PRIVATE int sqlite3PagerClose(Pager *pPager, sqlite3 *db){
     sqlite3WalClose(pPager->pWal, db, pPager->walSyncFlags, pPager->pageSize,a);
     pPager->pWal = 0;
   }
-#else
-  UNUSED_PARAMETER(db);
 #endif
   pager_reset(pPager);
   if( MEMDB ){
@@ -76268,30 +76124,6 @@ static SQLITE_NOINLINE int btreeBeginTrans(
     }
 #endif
 
-#ifdef SQLITE_EXPERIMENTAL_PRAGMA_20251114
-    /* If both a read and write transaction will be opened by this call,
-    ** then issue a file-control as if the following pragma command had
-    ** been evaluated:
-    **
-    **     PRAGMA experimental_pragma_20251114 = 1|2
-    **
-    ** where the RHS is "1" if wrflag is 1 (RESERVED lock), or "2" if wrflag
-    ** is 2 (EXCLUSIVE lock). Ignore any result or error returned by the VFS.
-    **
-    ** WARNING: This code will likely remain part of SQLite only temporarily -
-    ** it exists to allow users to experiment with certain types of blocking
-    ** locks in custom VFS implementations. It MAY BE REMOVED AT ANY TIME.  */
-    if( pBt->pPage1==0 && wrflag ){
-      sqlite3_file *fd = sqlite3PagerFile(pPager);
-      char *aFcntl[3] = {0,0,0};
-      aFcntl[1] = "experimental_pragma_20251114";
-      assert( wrflag==1 || wrflag==2 );
-      aFcntl[2] = (wrflag==1 ? "1" : "2");
-      sqlite3OsFileControlHint(fd, SQLITE_FCNTL_PRAGMA, (void*)aFcntl);
-      sqlite3_free(aFcntl[0]);
-    }
-#endif
-
     /* Call lockBtree() until either pBt->pPage1 is populated or
     ** lockBtree() returns something other than SQLITE_OK. lockBtree()
     ** may return SQLITE_OK but leave pBt->pPage1 set to 0 if after
@@ -78296,7 +78128,7 @@ SQLITE_PRIVATE int sqlite3BtreeIsEmpty(BtCursor *pCur, int *pRes){
 
   assert( cursorOwnsBtShared(pCur) );
   assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
-  if( NEVER(pCur->eState==CURSOR_VALID) ){
+  if( pCur->eState==CURSOR_VALID ){
     *pRes = 0;
     return SQLITE_OK;
   }
@@ -82377,7 +82209,7 @@ SQLITE_PRIVATE int sqlite3BtreeTransferRow(BtCursor *pDest, BtCursor *pSrc, i64
       }while( rc==SQLITE_OK && nOut>0 );
 
       if( rc==SQLITE_OK && nRem>0 && ALWAYS(pPgnoOut) ){
-        Pgno pgnoNew = 0;  /* Prevent harmless static-analyzer warning */
+        Pgno pgnoNew;
         MemPage *pNew = 0;
         rc = allocateBtreePage(pBt, &pNew, &pgnoNew, 0, 0);
         put4byte(pPgnoOut, pgnoNew);
@@ -85043,27 +84875,21 @@ static void vdbeMemRenderNum(int sz, char *zBuf, Mem *p){
   StrAccum acc;
   assert( p->flags & (MEM_Int|MEM_Real|MEM_IntReal) );
   assert( sz>22 );
-  if( p->flags & (MEM_Int|MEM_IntReal) ){
-#if GCC_VERSION>=7000000 && GCC_VERSION<15000000 && defined(__i386__)
-    /* Work-around for GCC bug or bugs:
-    ** https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96270
-    ** https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114659
-    ** The problem appears to be fixed in GCC 15 */
+  if( p->flags & MEM_Int ){
+#if GCC_VERSION>=7000000
+    /* Work-around for GCC bug
+    ** https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96270 */
     i64 x;
-    assert( (MEM_Str&~p->flags)*4==sizeof(x) );
-    memcpy(&x, (char*)&p->u, (MEM_Str&~p->flags)*4);
+    assert( (p->flags&MEM_Int)*2==sizeof(x) );
+    memcpy(&x, (char*)&p->u, (p->flags&MEM_Int)*2);
     p->n = sqlite3Int64ToText(x, zBuf);
 #else
     p->n = sqlite3Int64ToText(p->u.i, zBuf);
 #endif
-    if( p->flags & MEM_IntReal ){
-      memcpy(zBuf+p->n,".0", 3);
-      p->n += 2;
-    }
   }else{
     sqlite3StrAccumInit(&acc, 0, zBuf, sz, 0);
-    sqlite3_str_appendf(&acc, "%!.*g",
-         (p->db ? p->db->nFpDigit : 17), p->u.r);
+    sqlite3_str_appendf(&acc, "%!.15g",
+         (p->flags & MEM_IntReal)!=0 ? (double)p->u.i : p->u.r);
     assert( acc.zText==zBuf && acc.mxAlloc<=0 );
     zBuf[acc.nChar] = 0; /* Fast version of sqlite3StrAccumFinish(&acc) */
     p->n = acc.nChar;
@@ -85112,9 +84938,6 @@ SQLITE_PRIVATE int sqlite3VdbeMemValidStrRep(Mem *p){
     assert( p->enc==SQLITE_UTF8 || p->z[((p->n+1)&~1)+1]==0 );
   }
   if( (p->flags & (MEM_Int|MEM_Real|MEM_IntReal))==0 ) return 1;
-  if( p->db==0 ){
-    return 1;  /* db->nFpDigit required to validate p->z[] */
-  }
   memcpy(&tmp, p, sizeof(tmp));
   vdbeMemRenderNum(sizeof(zBuf), zBuf, &tmp);
   z = p->z;
@@ -85265,16 +85088,13 @@ SQLITE_PRIVATE int sqlite3VdbeMemClearAndResize(Mem *pMem, int szNew){
 **
 ** This is an optimization.  Correct operation continues even if
 ** this routine is a no-op.
-**
-** Return true if the strig is zero-terminated after this routine is
-** called and false if it is not.
 */
-SQLITE_PRIVATE int sqlite3VdbeMemZeroTerminateIfAble(Mem *pMem){
+SQLITE_PRIVATE void sqlite3VdbeMemZeroTerminateIfAble(Mem *pMem){
   if( (pMem->flags & (MEM_Str|MEM_Term|MEM_Ephem|MEM_Static))!=MEM_Str ){
     /* pMem must be a string, and it cannot be an ephemeral or static string */
-    return 0;
+    return;
   }
-  if( pMem->enc!=SQLITE_UTF8 ) return 0;
+  if( pMem->enc!=SQLITE_UTF8 ) return;
   assert( pMem->z!=0 );
   if( pMem->flags & MEM_Dyn ){
     if( pMem->xDel==sqlite3_free
@@ -85282,19 +85102,18 @@ SQLITE_PRIVATE int sqlite3VdbeMemZeroTerminateIfAble(Mem *pMem){
     ){
       pMem->z[pMem->n] = 0;
       pMem->flags |= MEM_Term;
-      return 1;
+      return;
     }
     if( pMem->xDel==sqlite3RCStrUnref ){
       /* Blindly assume that all RCStr objects are zero-terminated */
       pMem->flags |= MEM_Term;
-      return 1;
+      return;
     }
   }else if( pMem->szMalloc >= pMem->n+1 ){
     pMem->z[pMem->n] = 0;
     pMem->flags |= MEM_Term;
-    return 1;
+    return;
   }
-  return 0;
 }
 
 /*
@@ -85592,70 +85411,18 @@ SQLITE_PRIVATE i64 sqlite3VdbeIntValue(const Mem *pMem){
   }
 }
 
-/*
-** Invoke sqlite3AtoF() on the text value of pMem and return the
-** double result.  If sqlite3AtoF() returns an error code, write
-** that code into *pRC if (*pRC)!=NULL.
-**
-** The caller must ensure that pMem->db!=0 and that pMem is in
-** mode MEM_Str or MEM_Blob.
-*/
-SQLITE_PRIVATE SQLITE_NOINLINE double sqlite3MemRealValueRC(Mem *pMem, int *pRC){
-  double val = (double)0;
-  int rc = 0;
-  assert( pMem->db!=0 );
-  assert( pMem->flags & (MEM_Str|MEM_Blob) );
-  if( pMem->z==0 ){
-    /* no-op */
-  }else if( pMem->enc==SQLITE_UTF8
-   && ((pMem->flags & MEM_Term)!=0 || sqlite3VdbeMemZeroTerminateIfAble(pMem))
-  ){
-    rc = sqlite3AtoF(pMem->z, &val);
-  }else if( pMem->n==0 ){
-    /* no-op */
-  }else if( pMem->enc==SQLITE_UTF8 ){
-    char *zCopy = sqlite3DbStrNDup(pMem->db, pMem->z, pMem->n);
-    if( zCopy ){
-      rc = sqlite3AtoF(zCopy, &val);
-      sqlite3DbFree(pMem->db, zCopy);
-    }
-  }else{
-    int n, i, j;
-    char *zCopy;
-    const char *z;
-
-    n = pMem->n & ~1;
-    zCopy = sqlite3DbMallocRaw(pMem->db, n/2 + 2);
-    if( zCopy ){
-      z = pMem->z;
-      if( pMem->enc==SQLITE_UTF16LE ){
-        for(i=j=0; i<n-1; i+=2, j++){
-          zCopy[j] = z[i];
-          if( z[i+1]!=0 ) break;
-        }
-      }else{
-        for(i=j=0; i<n-1; i+=2, j++){
-          if( z[i]!=0 ) break;
-          zCopy[j] = z[i+1];
-        }
-      }
-      assert( j<=n/2 );
-      zCopy[j] = 0;
-      rc = sqlite3AtoF(zCopy, &val);
-      if( i<n ) rc = -100;
-      sqlite3DbFree(pMem->db, zCopy);
-    }
-  }
-  if( pRC ) *pRC = rc;
-  return val;
-}
-
 /*
 ** Return the best representation of pMem that we can get into a
 ** double.  If pMem is already a double or an integer, return its
 ** value.  If it is a string or blob, try to convert it to a double.
 ** If it is a NULL, return 0.0.
 */
+static SQLITE_NOINLINE double memRealValue(Mem *pMem){
+  /* (double)0 In case of SQLITE_OMIT_FLOATING_POINT... */
+  double val = (double)0;
+  sqlite3AtoF(pMem->z, &val, pMem->n, pMem->enc);
+  return val;
+}
 SQLITE_PRIVATE double sqlite3VdbeRealValue(Mem *pMem){
   assert( pMem!=0 );
   assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
@@ -85666,7 +85433,7 @@ SQLITE_PRIVATE double sqlite3VdbeRealValue(Mem *pMem){
     testcase( pMem->flags & MEM_IntReal );
     return (double)pMem->u.i;
   }else if( pMem->flags & (MEM_Str|MEM_Blob) ){
-    return sqlite3MemRealValueRC(pMem, 0);
+    return memRealValue(pMem);
   }else{
     /* (double)0 In case of SQLITE_OMIT_FLOATING_POINT... */
     return (double)0;
@@ -85790,7 +85557,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemNumerify(Mem *pMem){
     sqlite3_int64 ix;
     assert( (pMem->flags & (MEM_Blob|MEM_Str))!=0 );
     assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
-    pMem->u.r = sqlite3MemRealValueRC(pMem, &rc);
+    rc = sqlite3AtoF(pMem->z, &pMem->u.r, pMem->n, pMem->enc);
     if( ((rc==0 || rc==1) && sqlite3Atoi64(pMem->z, &ix, pMem->n, pMem->enc)<=1)
      || sqlite3RealSameAsInt(pMem->u.r, (ix = sqlite3RealToI64(pMem->u.r)))
     ){
@@ -86255,84 +86022,6 @@ SQLITE_PRIVATE int sqlite3VdbeMemSetStr(
   return SQLITE_OK;
 }
 
-/* Like sqlite3VdbeMemSetStr() except:
-**
-**   enc is always SQLITE_UTF8
-**   pMem->db is always non-NULL
-*/
-SQLITE_PRIVATE int sqlite3VdbeMemSetText(
-  Mem *pMem,          /* Memory cell to set to string value */
-  const char *z,      /* String pointer */
-  i64 n,              /* Bytes in string, or negative */
-  void (*xDel)(void*) /* Destructor function */
-){
-  i64 nByte = n;      /* New value for pMem->n */
-  u16 flags;
-
-  assert( pMem!=0 );
-  assert( pMem->db!=0 );
-  assert( sqlite3_mutex_held(pMem->db->mutex) );
-  assert( !sqlite3VdbeMemIsRowSet(pMem) );
-
-  /* If z is a NULL pointer, set pMem to contain an SQL NULL. */
-  if( !z ){
-    sqlite3VdbeMemSetNull(pMem);
-    return SQLITE_OK;
-  }
-
-  if( nByte<0 ){
-    nByte = strlen(z);
-    flags = MEM_Str|MEM_Term;
-  }else{
-    flags = MEM_Str;
-  }
-  if( nByte>(i64)pMem->db->aLimit[SQLITE_LIMIT_LENGTH] ){
-    if( xDel && xDel!=SQLITE_TRANSIENT ){
-      if( xDel==SQLITE_DYNAMIC ){
-        sqlite3DbFree(pMem->db, (void*)z);
-      }else{
-        xDel((void*)z);
-      }
-    }
-    sqlite3VdbeMemSetNull(pMem);
-    return sqlite3ErrorToParser(pMem->db, SQLITE_TOOBIG);
-  }
-
-  /* The following block sets the new values of Mem.z and Mem.xDel. It
-  ** also sets a flag in local variable "flags" to indicate the memory
-  ** management (one of MEM_Dyn or MEM_Static).
-  */
-  if( xDel==SQLITE_TRANSIENT ){
-    i64 nAlloc = nByte + 1;
-    testcase( nAlloc==31 );
-    testcase( nAlloc==32 );
-    if( sqlite3VdbeMemClearAndResize(pMem, (int)MAX(nAlloc,32)) ){
-      return SQLITE_NOMEM_BKPT;
-    }
-    assert( pMem->z!=0 );
-    memcpy(pMem->z, z, nByte);
-    pMem->z[nByte] = 0;
-  }else{
-    sqlite3VdbeMemRelease(pMem);
-    pMem->z = (char *)z;
-    if( xDel==SQLITE_DYNAMIC ){
-      pMem->zMalloc = pMem->z;
-      pMem->szMalloc = sqlite3DbMallocSize(pMem->db, pMem->zMalloc);
-      pMem->xDel = 0;
-    }else if( xDel==SQLITE_STATIC ){
-      pMem->xDel = xDel;
-      flags |= MEM_Static;
-    }else{
-      pMem->xDel = xDel;
-      flags |= MEM_Dyn;
-    }
-  }
-  pMem->flags = flags;
-  pMem->n = (int)(nByte & 0x7fffffff);
-  pMem->enc = SQLITE_UTF8;
-  return SQLITE_OK;
-}
-
 /*
 ** Move data out of a btree key or data field and into a Mem structure.
 ** The data is payload from the entry that pCur is currently pointing
@@ -86761,7 +86450,7 @@ static int valueFromExpr(
     if( affinity==SQLITE_AFF_BLOB ){
       if( op==TK_FLOAT ){
         assert( pVal && pVal->z && pVal->flags==(MEM_Str|MEM_Term) );
-        sqlite3AtoF(pVal->z, &pVal->u.r);
+        sqlite3AtoF(pVal->z, &pVal->u.r, pVal->n, SQLITE_UTF8);
         pVal->flags = MEM_Real;
       }else if( op==TK_INTEGER ){
         /* This case is required by -9223372036854775808 and other strings
@@ -87029,11 +86718,6 @@ SQLITE_PRIVATE int sqlite3Stat4ValueFromExpr(
 **
 ** If *ppVal is initially NULL then the caller is responsible for
 ** ensuring that the value written into *ppVal is eventually freed.
-**
-** If the buffer does not contain a well-formed record, this routine may
-** read several bytes past the end of the buffer. Callers must therefore
-** ensure that any buffer which may contain a corrupt record is padded
-** with at least 8 bytes of addressable memory.
 */
 SQLITE_PRIVATE int sqlite3Stat4Column(
   sqlite3 *db,                    /* Database handle */
@@ -90050,7 +89734,7 @@ SQLITE_PRIVATE int sqlite3VdbeSetColName(
   }
   assert( p->aColName!=0 );
   pColName = &(p->aColName[idx+var*p->nResAlloc]);
-  rc = sqlite3VdbeMemSetText(pColName, zName, -1, xDel);
+  rc = sqlite3VdbeMemSetStr(pColName, zName, -1, SQLITE_UTF8, xDel);
   assert( rc!=0 || !zName || (pColName->flags&MEM_Term)!=0 );
   return rc;
 }
@@ -93128,23 +92812,7 @@ static void setResultStrOrError(
   void (*xDel)(void*)     /* Destructor function */
 ){
   Mem *pOut = pCtx->pOut;
-  int rc;
-  if( enc==SQLITE_UTF8 ){
-    rc = sqlite3VdbeMemSetText(pOut, z, n, xDel);
-  }else if( enc==SQLITE_UTF8_ZT ){
-    /* It is usually considered improper to assert() on an input. However,
-    ** the following assert() is checking for inputs that are documented
-    ** to result in undefined behavior. */
-    assert( z==0
-         || n<0
-         || n>pOut->db->aLimit[SQLITE_LIMIT_LENGTH]
-         || z[n]==0
-    );
-    rc = sqlite3VdbeMemSetText(pOut, z, n, xDel);
-    pOut->flags |= MEM_Term;
-  }else{
-    rc = sqlite3VdbeMemSetStr(pOut, z, n, enc, xDel);
-  }
+  int rc = sqlite3VdbeMemSetStr(pOut, z, n, enc, xDel);
   if( rc ){
     if( rc==SQLITE_TOOBIG ){
       sqlite3_result_error_toobig(pCtx);
@@ -93337,7 +93005,7 @@ SQLITE_API void sqlite3_result_text64(
 #endif
   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
   assert( xDel!=SQLITE_DYNAMIC );
-  if( enc!=SQLITE_UTF8 && enc!=SQLITE_UTF8_ZT ){
+  if( enc!=SQLITE_UTF8 ){
     if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
     n &= ~(u64)1;
   }
@@ -93488,8 +93156,6 @@ static int doWalCallbacks(sqlite3 *db){
       }
     }
   }
-#else
-  UNUSED_PARAMETER(db);
 #endif
   return rc;
 }
@@ -94446,25 +94112,13 @@ static int bindText(
     assert( p!=0 && p->aVar!=0 && i>0 && i<=p->nVar ); /* tag-20240917-01 */
     if( zData!=0 ){
       pVar = &p->aVar[i-1];
-      if( encoding==SQLITE_UTF8 ){
-        rc = sqlite3VdbeMemSetText(pVar, zData, nData, xDel);
-      }else if( encoding==SQLITE_UTF8_ZT ){
-        /* It is usually consider improper to assert() on an input.
-        ** However, the following assert() is checking for inputs
-        ** that are documented to result in undefined behavior. */
-        assert( zData==0
-             || nData<0
-             || nData>pVar->db->aLimit[SQLITE_LIMIT_LENGTH]
-             || ((u8*)zData)[nData]==0
-        );
-        rc = sqlite3VdbeMemSetText(pVar, zData, nData, xDel);
-        pVar->flags |= MEM_Term;
-      }else{
-        rc = sqlite3VdbeMemSetStr(pVar, zData, nData, encoding, xDel);
-        if( encoding==0 ) pVar->enc = ENC(p->db);
-      }
-      if( rc==SQLITE_OK && encoding!=0 ){
-        rc = sqlite3VdbeChangeEncoding(pVar, ENC(p->db));
+      rc = sqlite3VdbeMemSetStr(pVar, zData, nData, encoding, xDel);
+      if( rc==SQLITE_OK ){
+        if( encoding==0 ){
+          pVar->enc = ENC(p->db);
+        }else{
+          rc = sqlite3VdbeChangeEncoding(pVar, ENC(p->db));
+        }
       }
       if( rc ){
         sqlite3Error(p->db, rc);
@@ -94576,7 +94230,7 @@ SQLITE_API int sqlite3_bind_text64(
   unsigned char enc
 ){
   assert( xDel!=SQLITE_DYNAMIC );
-  if( enc!=SQLITE_UTF8 && enc!=SQLITE_UTF8_ZT ){
+  if( enc!=SQLITE_UTF8 ){
     if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
     nData &= ~(u64)1;
   }
@@ -95613,26 +95267,35 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
 #ifndef SQLITE_HWTIME_H
 #define SQLITE_HWTIME_H
 
-#if defined(_MSC_VER) && defined(_WIN32)
-
-/*   #include "windows.h" */
-  #include <profileapi.h>
-
-  __inline sqlite3_uint64 sqlite3Hwtime(void){
-    LARGE_INTEGER tm;
-    QueryPerformanceCounter(&tm);
-    return (sqlite3_uint64)tm.QuadPart;
-  }
-
-#elif !defined(__STRICT_ANSI__) && defined(__GNUC__) && \
+/*
+** The following routine only works on Pentium-class (or newer) processors.
+** It uses the RDTSC opcode to read the cycle count value out of the
+** processor and returns that value.  This can be used for high-res
+** profiling.
+*/
+#if !defined(__STRICT_ANSI__) && \
+    (defined(__GNUC__) || defined(_MSC_VER)) && \
     (defined(i386) || defined(__i386__) || defined(_M_IX86))
 
+  #if defined(__GNUC__)
+
   __inline__ sqlite_uint64 sqlite3Hwtime(void){
      unsigned int lo, hi;
      __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
      return (sqlite_uint64)hi << 32 | lo;
   }
 
+  #elif defined(_MSC_VER)
+
+  __declspec(naked) __inline sqlite_uint64 __cdecl sqlite3Hwtime(void){
+     __asm {
+        rdtsc
+        ret       ; return value at EDX:EAX
+     }
+  }
+
+  #endif
+
 #elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__x86_64__))
 
   __inline__ sqlite_uint64 sqlite3Hwtime(void){
@@ -95641,14 +95304,6 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
      return (sqlite_uint64)hi << 32 | lo;
   }
 
-#elif !defined(__STRICT_ANSI__) && defined(__GNUC__) &&  defined(__aarch64__)
-
-  __inline__ sqlite_uint64 sqlite3Hwtime(void){
-     sqlite3_uint64 cnt;
-     __asm__ __volatile__ ("mrs %0, cntvct_el0" : "=r" (cnt));
-     return cnt;
-  }
-
 #elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__ppc__))
 
   __inline__ sqlite_uint64 sqlite3Hwtime(void){
@@ -96007,9 +95662,10 @@ static int alsoAnInt(Mem *pRec, double rValue, i64 *piValue){
 */
 static void applyNumericAffinity(Mem *pRec, int bTryForInt){
   double rValue;
+  u8 enc = pRec->enc;
   int rc;
   assert( (pRec->flags & (MEM_Str|MEM_Int|MEM_Real|MEM_IntReal))==MEM_Str );
-  rValue = sqlite3MemRealValueRC(pRec, &rc);
+  rc = sqlite3AtoF(pRec->z, &rValue, pRec->n, enc);
   if( rc<=0 ) return;
   if( rc==1 && alsoAnInt(pRec, rValue, &pRec->u.i) ){
     pRec->flags |= MEM_Int;
@@ -96091,10 +95747,7 @@ SQLITE_API int sqlite3_value_numeric_type(sqlite3_value *pVal){
   int eType = sqlite3_value_type(pVal);
   if( eType==SQLITE_TEXT ){
     Mem *pMem = (Mem*)pVal;
-    assert( pMem->db!=0 );
-    sqlite3_mutex_enter(pMem->db->mutex);
     applyNumericAffinity(pMem, 0);
-    sqlite3_mutex_leave(pMem->db->mutex);
     eType = sqlite3_value_type(pVal);
   }
   return eType;
@@ -96127,7 +95780,7 @@ static u16 SQLITE_NOINLINE computeNumericType(Mem *pMem){
     pMem->u.i = 0;
     return MEM_Int;
   }
-  pMem->u.r = sqlite3MemRealValueRC(pMem, &rc);
+  rc = sqlite3AtoF(pMem->z, &pMem->u.r, pMem->n, pMem->enc);
   if( rc<=0 ){
     if( rc==0 && sqlite3Atoi64(pMem->z, &ix, pMem->n, pMem->enc)<=1 ){
       pMem->u.i = ix;
@@ -102276,15 +101929,20 @@ case OP_SorterInsert: {     /* in2 */
   break;
 }
 
-/* Opcode: IdxDelete P1 P2 P3 * *
+/* Opcode: IdxDelete P1 P2 P3 * P5
 ** Synopsis: key=r[P2@P3]
 **
 ** The content of P3 registers starting at register P2 form
 ** an unpacked index key. This opcode removes that entry from the
 ** index opened by cursor P1.
 **
-** Raise an SQLITE_CORRUPT_INDEX error if no matching index entry is found
-** and not in writable_schema mode.
+** If P5 is not zero, then raise an SQLITE_CORRUPT_INDEX error
+** if no matching index entry is found.  This happens when running
+** an UPDATE or DELETE statement and the index entry to be updated
+** or deleted is not found.  For some uses of IdxDelete
+** (example:  the EXCEPT operator) it does not matter that no matching
+** entry is found.  For those cases, P5 is zero.  Also, do not raise
+** this (self-correcting and non-critical) error if in writable_schema mode.
 */
 case OP_IdxDelete: {
   VdbeCursor *pC;
@@ -102310,7 +101968,7 @@ case OP_IdxDelete: {
   if( res==0 ){
     rc = sqlite3BtreeDelete(pCrsr, BTREE_AUXDELETE);
     if( rc ) goto abort_due_to_error;
-  }else if( !sqlite3WritableSchema(db) ){
+  }else if( pOp->p5 && !sqlite3WritableSchema(db) ){
     rc = sqlite3ReportError(SQLITE_CORRUPT_INDEX, __LINE__, "index corruption");
     goto abort_due_to_error;
   }
@@ -110404,7 +110062,7 @@ static int exprProbability(Expr *p){
   double r = -1.0;
   if( p->op!=TK_FLOAT ) return -1;
   assert( !ExprHasProperty(p, EP_IntValue) );
-  sqlite3AtoF(p->u.zToken, &r);
+  sqlite3AtoF(p->u.zToken, &r, sqlite3Strlen30(p->u.zToken), SQLITE_UTF8);
   assert( r>=0.0 );
   if( r>1.0 ) return -1;
   return (int)(r*134217728.0);
@@ -111124,8 +110782,10 @@ static int resolveCompoundOrderBy(
         /* Convert the ORDER BY term into an integer column number iCol,
         ** taking care to preserve the COLLATE clause if it exists. */
         if( !IN_RENAME_OBJECT ){
-          Expr *pNew = sqlite3ExprInt32(db, iCol);
+          Expr *pNew = sqlite3Expr(db, TK_INTEGER, 0);
           if( pNew==0 ) return 1;
+          pNew->flags |= EP_IntValue;
+          pNew->u.iValue = iCol;
           if( pItem->pExpr==pE ){
             pItem->pExpr = pNew;
           }else{
@@ -111479,6 +111139,10 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
     }
 #endif
 
+    /* The ORDER BY and GROUP BY clauses may not refer to terms in
+    ** outer queries
+    */
+    sNC.pNext = 0;
     sNC.ncFlags |= NC_AllowAgg|NC_AllowWin;
 
     /* If this is a converted compound query, move the ORDER BY clause from
@@ -112725,22 +112389,34 @@ SQLITE_PRIVATE Expr *sqlite3ExprAlloc(
   int dequote             /* True to dequote */
 ){
   Expr *pNew;
-  int nExtra = pToken ? pToken->n+1 : 0;
+  int nExtra = 0;
+  int iValue = 0;
 
   assert( db!=0 );
+  if( pToken ){
+    if( op!=TK_INTEGER || pToken->z==0
+          || sqlite3GetInt32(pToken->z, &iValue)==0 ){
+      nExtra = pToken->n+1;  /* tag-20240227-a */
+      assert( iValue>=0 );
+    }
+  }
   pNew = sqlite3DbMallocRawNN(db, sizeof(Expr)+nExtra);
   if( pNew ){
     memset(pNew, 0, sizeof(Expr));
     pNew->op = (u8)op;
     pNew->iAgg = -1;
-    if( nExtra ){
-      assert( pToken!=0 );
-      pNew->u.zToken = (char*)&pNew[1];
-      assert( pToken->z!=0 || pToken->n==0 );
-      if( pToken->n ) memcpy(pNew->u.zToken, pToken->z, pToken->n);
-      pNew->u.zToken[pToken->n] = 0;
-      if( dequote && sqlite3Isquote(pNew->u.zToken[0]) ){
-        sqlite3DequoteExpr(pNew);
+    if( pToken ){
+      if( nExtra==0 ){
+        pNew->flags |= EP_IntValue|EP_Leaf|(iValue?EP_IsTrue:EP_IsFalse);
+        pNew->u.iValue = iValue;
+      }else{
+        pNew->u.zToken = (char*)&pNew[1];
+        assert( pToken->z!=0 || pToken->n==0 );
+        if( pToken->n ) memcpy(pNew->u.zToken, pToken->z, pToken->n);
+        pNew->u.zToken[pToken->n] = 0;
+        if( dequote && sqlite3Isquote(pNew->u.zToken[0]) ){
+          sqlite3DequoteExpr(pNew);
+        }
       }
     }
 #if SQLITE_MAX_EXPR_DEPTH>0
@@ -112765,24 +112441,6 @@ SQLITE_PRIVATE Expr *sqlite3Expr(
   return sqlite3ExprAlloc(db, op, &x, 0);
 }
 
-/*
-** Allocate an expression for a 32-bit signed integer literal.
-*/
-SQLITE_PRIVATE Expr *sqlite3ExprInt32(sqlite3 *db, int iVal){
-  Expr *pNew = sqlite3DbMallocRawNN(db, sizeof(Expr));
-  if( pNew ){
-    memset(pNew, 0, sizeof(Expr));
-    pNew->op = TK_INTEGER;
-    pNew->iAgg = -1;
-    pNew->flags = EP_IntValue|EP_Leaf|(iVal?EP_IsTrue:EP_IsFalse);
-    pNew->u.iValue = iVal;
-#if SQLITE_MAX_EXPR_DEPTH>0
-    pNew->nHeight = 1;
-#endif
-  }
-  return pNew;
-}
-
 /*
 ** Attach subtrees pLeft and pRight to the Expr node pRoot.
 **
@@ -112945,7 +112603,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprAnd(Parse *pParse, Expr *pLeft, Expr *pRight){
     ){
       sqlite3ExprDeferredDelete(pParse, pLeft);
       sqlite3ExprDeferredDelete(pParse, pRight);
-      return sqlite3ExprInt32(db, 0);
+      return sqlite3Expr(db, TK_INTEGER, "0");
     }else{
       return sqlite3PExpr(pParse, TK_AND, pLeft, pRight);
     }
@@ -113070,9 +112728,7 @@ SQLITE_PRIVATE void sqlite3ExprFunctionUsable(
 ){
   assert( !IN_RENAME_OBJECT );
   assert( (pDef->funcFlags & (SQLITE_FUNC_DIRECT|SQLITE_FUNC_UNSAFE))!=0 );
-  if( ExprHasProperty(pExpr, EP_FromDDL)
-   || pParse->prepFlags & SQLITE_PREPARE_FROM_DDL
-  ){
+  if( ExprHasProperty(pExpr, EP_FromDDL) ){
     if( (pDef->funcFlags & SQLITE_FUNC_DIRECT)!=0
      || (pParse->db->flags & SQLITE_TrustedSchema)==0
     ){
@@ -113768,7 +113424,9 @@ SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3 *db, const Select *pDup, int fla
     pNew->pLimit = sqlite3ExprDup(db, p->pLimit, flags);
     pNew->iLimit = 0;
     pNew->iOffset = 0;
-    pNew->selFlags = p->selFlags;
+    pNew->selFlags = p->selFlags & ~(u32)SF_UsesEphemeral;
+    pNew->addrOpenEphm[0] = -1;
+    pNew->addrOpenEphm[1] = -1;
     pNew->nSelectRow = p->nSelectRow;
     pNew->pWith = sqlite3WithDup(db, p->pWith);
 #ifndef SQLITE_OMIT_WINDOWFUNC
@@ -114420,7 +114078,7 @@ static int exprIsConst(Parse *pParse, Expr *p, int initFlag){
 
 /*
 ** Walk an expression tree.  Return non-zero if the expression is constant
-** or return zero if the expression involves variables or function calls.
+** and 0 if it involves variables or function calls.
 **
 ** For the purposes of this function, a double-quoted string (ex: "abc")
 ** is considered a variable but a single-quoted string (ex: 'abc') is
@@ -115210,7 +114868,6 @@ SQLITE_PRIVATE int sqlite3FindInIndex(
     */
     u32 savedNQueryLoop = pParse->nQueryLoop;
     int rMayHaveNull = 0;
-    int bloomOk = (inFlags & IN_INDEX_MEMBERSHIP)!=0;
     eType = IN_INDEX_EPH;
     if( inFlags & IN_INDEX_LOOP ){
       pParse->nQueryLoop = 0;
@@ -115218,13 +114875,7 @@ SQLITE_PRIVATE int sqlite3FindInIndex(
       *prRhsHasNull = rMayHaveNull = ++pParse->nMem;
     }
     assert( pX->op==TK_IN );
-    if( !bloomOk
-     && ExprUseXSelect(pX)
-     && (pX->x.pSelect->selFlags & SF_ClonedRhsIn)!=0
-    ){
-      bloomOk = 1;
-    }
-    sqlite3CodeRhsOfIN(pParse, pX, iTab, bloomOk);
+    sqlite3CodeRhsOfIN(pParse, pX, iTab);
     if( rMayHaveNull ){
       sqlite3SetHasNullFlag(v, iTab, rMayHaveNull);
     }
@@ -115382,8 +115033,7 @@ static int findCompatibleInRhsSubrtn(
 SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
   Parse *pParse,          /* Parsing context */
   Expr *pExpr,            /* The IN operator */
-  int iTab,               /* Use this cursor number */
-  int allowBloom          /* True to allow the use of a Bloom filter */
+  int iTab                /* Use this cursor number */
 ){
   int addrOnce = 0;           /* Address of the OP_Once instruction at top */
   int addr;                   /* Address of OP_OpenEphemeral instruction */
@@ -115505,10 +115155,7 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
       sqlite3SelectDestInit(&dest, SRT_Set, iTab);
       dest.zAffSdst = exprINAffinity(pParse, pExpr);
       pSelect->iLimit = 0;
-      if( addrOnce
-       && allowBloom
-       && OptimizationEnabled(pParse->db, SQLITE_BloomFilter)
-      ){
+      if( addrOnce && OptimizationEnabled(pParse->db, SQLITE_BloomFilter) ){
         int regBloom = ++pParse->nMem;
         addrBloom = sqlite3VdbeAddOp2(v, OP_Blob, 10000, regBloom);
         VdbeComment((v, "Bloom filter"));
@@ -115729,7 +115376,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(Parse *pParse, Expr *pExpr){
      || (pLeft->u.iValue!=1 && pLeft->u.iValue!=0)
     ){
       sqlite3 *db = pParse->db;
-      pLimit = sqlite3ExprInt32(db, 0);
+      pLimit = sqlite3Expr(db, TK_INTEGER, "0");
       if( pLimit ){
         pLimit->affExpr = SQLITE_AFF_NUMERIC;
         pLimit = sqlite3PExpr(pParse, TK_NE,
@@ -115740,7 +115387,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(Parse *pParse, Expr *pExpr){
     }
   }else{
     /* If there is no pre-existing limit add a limit of 1 */
-    pLimit = sqlite3ExprInt32(pParse->db, 1);
+    pLimit = sqlite3Expr(pParse->db, TK_INTEGER, "1");
     pSel->pLimit = sqlite3PExpr(pParse, TK_LIMIT, pLimit, 0);
   }
   pSel->iLimit = 0;
@@ -116001,9 +115648,8 @@ static void sqlite3ExprCodeIN(
       if( ExprHasProperty(pExpr, EP_Subrtn) ){
         const VdbeOp *pOp = sqlite3VdbeGetOp(v, pExpr->y.sub.iAddr);
         assert( pOp->opcode==OP_Once || pParse->nErr );
-        if( pOp->p3>0 ){  /* tag-202407032019 */
-          assert( OptimizationEnabled(pParse->db, SQLITE_BloomFilter)
-                 || pParse->nErr );
+        if( pOp->opcode==OP_Once && pOp->p3>0 ){  /* tag-202407032019 */
+          assert( OptimizationEnabled(pParse->db, SQLITE_BloomFilter) );
           sqlite3VdbeAddOp4Int(v, OP_Filter, pOp->p3, destIfFalse,
                                rLhs, nVector); VdbeCoverage(v);
         }
@@ -116093,7 +115739,7 @@ static void sqlite3ExprCodeIN(
 static void codeReal(Vdbe *v, const char *z, int negateFlag, int iMem){
   if( ALWAYS(z!=0) ){
     double value;
-    sqlite3AtoF(z, &value);
+    sqlite3AtoF(z, &value, sqlite3Strlen30(z), SQLITE_UTF8);
     assert( !sqlite3IsNaN(value) ); /* The new AtoF never returns NaN */
     if( negateFlag ) value = -value;
     sqlite3VdbeAddOp4Dup8(v, OP_Real, 0, iMem, 0, (u8*)&value, P4_REAL);
@@ -119194,10 +118840,7 @@ static int analyzeAggregate(Walker *pWalker, Expr *pExpr){
       if( pIEpr==0 ) break;
       if( NEVER(!ExprUseYTab(pExpr)) ) break;
       for(i=0; i<pSrcList->nSrc; i++){
-         if( pSrcList->a[i].iCursor==pIEpr->iDataCur ){
-           testcase( i>0 );
-           break;
-         }
+         if( pSrcList->a[0].iCursor==pIEpr->iDataCur ) break;
       }
       if( i>=pSrcList->nSrc ) break;
       if( NEVER(pExpr->pAggInfo!=0) ) break; /* Resolved by outer context */
@@ -119986,7 +119629,7 @@ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
   /* Look up the table being altered. */
   assert( pParse->pNewTable==0 );
   assert( sqlite3BtreeHoldsAllMutexes(db) );
-  if( NEVER(db->mallocFailed) ) goto exit_begin_add_column;
+  if( db->mallocFailed ) goto exit_begin_add_column;
   pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
   if( !pTab ) goto exit_begin_add_column;
 
@@ -120058,7 +119701,7 @@ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
 ** Or, if pTab is not a view or virtual table, zero is returned.
 */
 #if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE)
-static int isRealTable(Parse *pParse, Table *pTab, int iOp){
+static int isRealTable(Parse *pParse, Table *pTab, int bDrop){
   const char *zType = 0;
 #ifndef SQLITE_OMIT_VIEW
   if( IsView(pTab) ){
@@ -120071,12 +119714,9 @@ static int isRealTable(Parse *pParse, Table *pTab, int iOp){
   }
 #endif
   if( zType ){
-    const char *azMsg[] = {
-      "rename columns of", "drop column from", "edit constraints of"
-    };
-    assert( iOp>=0 && iOp<ArraySize(azMsg) );
     sqlite3ErrorMsg(pParse, "cannot %s %s \"%s\"",
-        azMsg[iOp], zType, pTab->zName
+        (bDrop ? "drop column from" : "rename columns of"),
+        zType, pTab->zName
     );
     return 1;
   }
@@ -120547,25 +120187,6 @@ static RenameToken *renameColumnTokenNext(RenameCtx *pCtx){
   return pBest;
 }
 
-/*
-** Set the error message of the context passed as the first argument to
-** the result of formatting zFmt using printf() style formatting.
-*/
-static void errorMPrintf(sqlite3_context *pCtx, const char *zFmt, ...){
-  sqlite3 *db = sqlite3_context_db_handle(pCtx);
-  char *zErr = 0;
-  va_list ap;
-  va_start(ap, zFmt);
-  zErr = sqlite3VMPrintf(db, zFmt, ap);
-  va_end(ap);
-  if( zErr ){
-    sqlite3_result_error(pCtx, zErr, -1);
-    sqlite3DbFree(db, zErr);
-  }else{
-    sqlite3_result_error_nomem(pCtx);
-  }
-}
-
 /*
 ** An error occurred while parsing or otherwise processing a database
 ** object (either pParse->pNewTable, pNewIndex or pNewTrigger) as part of an
@@ -120863,8 +120484,8 @@ static int renameResolveTrigger(Parse *pParse){
       sqlite3SelectPrep(pParse, pStep->pSelect, &sNC);
       if( pParse->nErr ) rc = pParse->rc;
     }
-    if( rc==SQLITE_OK && pStep->pSrc ){
-      SrcList *pSrc = sqlite3SrcListDup(db, pStep->pSrc, 0);
+    if( rc==SQLITE_OK && pStep->zTarget ){
+      SrcList *pSrc = sqlite3TriggerStepSrc(pParse, pStep);
       if( pSrc ){
         Select *pSel = sqlite3SelectNew(
             pParse, pStep->pExprList, pSrc, 0, 0, 0, 0, 0, 0
@@ -120892,10 +120513,10 @@ static int renameResolveTrigger(Parse *pParse){
           pSel->pSrc = 0;
           sqlite3SelectDelete(db, pSel);
         }
-        if( ALWAYS(pStep->pSrc) ){
+        if( pStep->pFrom ){
           int i;
-          for(i=0; i<pStep->pSrc->nSrc && rc==SQLITE_OK; i++){
-            SrcItem *p = &pStep->pSrc->a[i];
+          for(i=0; i<pStep->pFrom->nSrc && rc==SQLITE_OK; i++){
+            SrcItem *p = &pStep->pFrom->a[i];
             if( p->fg.isSubquery ){
               assert( p->u4.pSubq!=0 );
               sqlite3SelectPrep(pParse, p->u4.pSubq->pSelect, 0);
@@ -120964,13 +120585,13 @@ static void renameWalkTrigger(Walker *pWalker, Trigger *pTrigger){
       sqlite3WalkExpr(pWalker, pUpsert->pUpsertWhere);
       sqlite3WalkExpr(pWalker, pUpsert->pUpsertTargetWhere);
     }
-    if( pStep->pSrc ){
+    if( pStep->pFrom ){
       int i;
-      SrcList *pSrc = pStep->pSrc;
-      for(i=0; i<pSrc->nSrc; i++){
-        if( pSrc->a[i].fg.isSubquery ){
-          assert( pSrc->a[i].u4.pSubq!=0 );
-          sqlite3WalkSelect(pWalker, pSrc->a[i].u4.pSubq->pSelect);
+      SrcList *pFrom = pStep->pFrom;
+      for(i=0; i<pFrom->nSrc; i++){
+        if( pFrom->a[i].fg.isSubquery ){
+          assert( pFrom->a[i].u4.pSubq!=0 );
+          sqlite3WalkSelect(pWalker, pFrom->a[i].u4.pSubq->pSelect);
         }
       }
     }
@@ -121141,8 +120762,8 @@ static void renameColumnFunc(
     if( rc!=SQLITE_OK ) goto renameColumnFunc_done;
 
     for(pStep=sParse.pNewTrigger->step_list; pStep; pStep=pStep->pNext){
-      if( pStep->pSrc ){
-        Table *pTarget = sqlite3LocateTableItem(&sParse, 0, &pStep->pSrc->a[0]);
+      if( pStep->zTarget ){
+        Table *pTarget = sqlite3LocateTable(&sParse, 0, pStep->zTarget, zDb);
         if( pTarget==pTab ){
           if( pStep->pUpsert ){
             ExprList *pUpsertSet = pStep->pUpsert->pUpsertSet;
@@ -121154,6 +120775,7 @@ static void renameColumnFunc(
       }
     }
 
+
     /* Find tokens to edit in UPDATE OF clause */
     if( sParse.pTriggerTab==pTab ){
       renameColumnIdlistNames(&sParse, &sCtx,sParse.pNewTrigger->pColumns,zOld);
@@ -121355,10 +120977,13 @@ static void renameTableFunc(
           if( rc==SQLITE_OK ){
             renameWalkTrigger(&sWalker, pTrigger);
             for(pStep=pTrigger->step_list; pStep; pStep=pStep->pNext){
-              if( pStep->pSrc ){
+              if( pStep->zTarget && 0==sqlite3_stricmp(pStep->zTarget, zOld) ){
+                renameTokenFind(&sParse, &sCtx, pStep->zTarget);
+              }
+              if( pStep->pFrom ){
                 int i;
-                for(i=0; i<pStep->pSrc->nSrc; i++){
-                  SrcItem *pItem = &pStep->pSrc->a[i];
+                for(i=0; i<pStep->pFrom->nSrc; i++){
+                  SrcItem *pItem = &pStep->pFrom->a[i];
                   if( 0==sqlite3_stricmp(pItem->zName, zOld) ){
                     renameTokenFind(&sParse, &sCtx, pItem->zName);
                   }
@@ -121605,57 +121230,6 @@ static void renameTableTest(
 #endif
 }
 
-
-/*
-** Return the number of bytes until the end of the next non-whitespace and
-** non-comment token.  For the purpose of this function, a "(" token includes
-** all of the bytes through and including the matching ")", or until the
-** first illegal token, whichever comes first.
-**
-** Write the token type into *piToken.
-**
-** The value returned is the number of bytes in the token itself plus
-** the number of bytes of leading whitespace and comments skipped plus
-** all bytes through the next matching ")" if the token is TK_LP.
-**
-** Example:    (Note: '.' used in place of '*' in the example z[] text)
-**
-**                                    ,--------- *piToken := TK_RP
-**                                    v
-**    z[] = " /.comment./ --comment\n (two three four) five"
-**          |                                        |
-**          |<-------------------------------------->|
-**                              |
-**                              `--- return value
-*/
-static int getConstraintToken(const u8 *z, int *piToken){
-  int iOff = 0;
-  int t = 0;
-  do {
-    iOff += sqlite3GetToken(&z[iOff], &t);
-  }while( t==TK_SPACE || t==TK_COMMENT );
-
-  *piToken = t;
-
-  if( t==TK_LP ){
-    int nNest = 1;
-    while( nNest>0 ){
-      iOff += sqlite3GetToken(&z[iOff], &t);
-      if( t==TK_LP ){
-        nNest++;
-      }else if( t==TK_RP ){
-        t = TK_LP;
-        nNest--;
-      }else if( t==TK_ILLEGAL ){
-        break;
-      }
-    }
-  }
-
-  *piToken = t;
-  return iOff;
-}
-
 /*
 ** The implementation of internal UDF sqlite_drop_column().
 **
@@ -121700,24 +121274,15 @@ static void dropColumnFunc(
     goto drop_column_done;
   }
 
+  pCol = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol].zCnName);
   if( iCol<pTab->nCol-1 ){
     RenameToken *pEnd;
-    pCol = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol].zCnName);
     pEnd = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol+1].zCnName);
     zEnd = (const char*)pEnd->t.z;
   }else{
-    int eTok;
     assert( IsOrdinaryTable(pTab) );
-    assert( iCol!=0 );
-    /* Point pCol->t.z at the "," immediately preceding the definition of
-    ** the column being dropped. To do this, start at the name of the
-    ** previous column, and tokenize until the next ",".  */
-    pCol = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol-1].zCnName);
-    do {
-      pCol->t.z += getConstraintToken((const u8*)pCol->t.z, &eTok);
-    }while( eTok!=TK_COMMA );
-    pCol->t.z--;
     zEnd = (const char*)&zSql[pTab->u.tab.addColOffset];
+    while( ALWAYS(pCol->t.z[0]!=0) && pCol->t.z[0]!=',' ) pCol->t.z--;
   }
 
   zNew = sqlite3MPrintf(db, "%.*s%s", pCol->t.z-zSql, zSql, zEnd);
@@ -121886,651 +121451,6 @@ SQLITE_PRIVATE void sqlite3AlterDropColumn(Parse *pParse, SrcList *pSrc, const T
   sqlite3SrcListDelete(db, pSrc);
 }
 
-/*
-** Return the number of bytes of leading whitespace/comments in string z[].
-*/
-static int getWhitespace(const u8 *z){
-  int nRet = 0;
-  while( 1 ){
-    int t = 0;
-    int n = sqlite3GetToken(&z[nRet], &t);
-    if( t!=TK_SPACE && t!=TK_COMMENT ) break;
-    nRet += n;
-  }
-  return nRet;
-}
-
-
-/*
-** Argument z points into the body of a constraint - specifically the
-** second token of the constraint definition.  For a named constraint,
-** z points to the first token past the CONSTRAINT keyword.  For an
-** unnamed NOT NULL constraint, z points to the first byte past the NOT
-** keyword.
-**
-** Return the number of bytes until the end of the constraint.
-*/
-static int getConstraint(const u8 *z){
-  int iOff = 0;
-  int t = 0;
-
-  /* Now, the current constraint proceeds until the next occurence of one
-  ** of the following tokens:
-  **
-  **   CONSTRAINT, PRIMARY, NOT, UNIQUE, CHECK, DEFAULT,
-  **   COLLATE, REFERENCES, FOREIGN, GENERATED, AS, RP, or COMMA
-  **
-  ** Also exit the loop if ILLEGAL turns up.
-  */
-  while( 1 ){
-    int n = getConstraintToken(&z[iOff], &t);
-    if( t==TK_CONSTRAINT || t==TK_PRIMARY || t==TK_NOT || t==TK_UNIQUE
-     || t==TK_CHECK || t==TK_DEFAULT || t==TK_COLLATE || t==TK_REFERENCES
-     || t==TK_FOREIGN || t==TK_RP || t==TK_COMMA || t==TK_ILLEGAL
-     || t==TK_AS || t==TK_GENERATED
-    ){
-      break;
-    }
-    iOff += n;
-  }
-
-  return iOff;
-}
-
-/*
-** Compare two constraint names.
-**
-** Summary:   *pRes := zQuote != zCmp
-**
-** Details:
-** Compare the (possibly quoted) constraint name zQuote[0..nQuote-1]
-** against zCmp[].  Write zero into *pRes if they are the same and
-** non-zero if they differ.  Normally return SQLITE_OK, except if there
-** is an OOM, set the OOM error condition on ctx and return SQLITE_NOMEM.
-*/
-static int quotedCompare(
-  sqlite3_context *ctx,  /* Function context on which to report errors */
-  int t,                 /* Token type */
-  const u8 *zQuote,      /* Possibly quoted text.  Not zero-terminated. */
-  int nQuote,            /* Length of zQuote in bytes */
-  const u8 *zCmp,        /* Zero-terminated, unquoted name to compare against */
-  int *pRes              /* OUT: Set to 0 if equal, non-zero if unequal */
-){
-  char *zCopy = 0;       /* De-quoted, zero-terminated copy of zQuote[] */
-
-  if( t==TK_ILLEGAL ){
-    *pRes = 1;
-    return SQLITE_OK;
-  }
-  zCopy = sqlite3MallocZero(nQuote+1);
-  if( zCopy==0 ){
-    sqlite3_result_error_nomem(ctx);
-    return SQLITE_NOMEM_BKPT;
-  }
-  memcpy(zCopy, zQuote, nQuote);
-  sqlite3Dequote(zCopy);
-  *pRes = sqlite3_stricmp((const char*)zCopy, (const char*)zCmp);
-  sqlite3_free(zCopy);
-  return SQLITE_OK;
-}
-
-/*
-** zSql[] is a CREATE TABLE statement, supposedly.  Find the offset
-** into zSql[] of the first character past the first "(" and write
-** that offset into *piOff and return SQLITE_OK.  Or, if not found,
-** set the SQLITE_CORRUPT error code and return SQLITE_ERROR.
-*/
-static int skipCreateTable(sqlite3_context *ctx, const u8 *zSql, int *piOff){
-  int iOff = 0;
-
-  if( zSql==0 ) return SQLITE_ERROR;
-
-  /* Jump past the "CREATE TABLE" bit. */
-  while( 1 ){
-    int t = 0;
-    iOff += sqlite3GetToken(&zSql[iOff], &t);
-    if( t==TK_LP ) break;
-    if( t==TK_ILLEGAL ){
-      sqlite3_result_error_code(ctx, SQLITE_CORRUPT_BKPT);
-      return SQLITE_ERROR;
-    }
-  }
-
-  *piOff = iOff;
-  return SQLITE_OK;
-}
-
-/*
-** Internal SQL function sqlite3_drop_constraint():  Given an input
-** CREATE TABLE statement, return a revised CREATE TABLE statement
-** with a constraint removed.  Two forms, depending on the datatype
-** of argv[2]:
-**
-**   sqlite_drop_constraint(SQL, INT)  -- Omit NOT NULL from the INT-th column
-**   sqlite_drop_constraint(SQL, TEXT) -- OMIT constraint with name TEXT
-**
-** In the first case, the left-most column is 0.
-*/
-static void dropConstraintFunc(
-  sqlite3_context *ctx,
-  int NotUsed,
-  sqlite3_value **argv
-){
-  const u8 *zSql = sqlite3_value_text(argv[0]);
-  const u8 *zCons = 0;
-  int iNotNull = -1;
-  int ii;
-  int iOff = 0;
-  int iStart = 0;
-  int iEnd = 0;
-  char *zNew = 0;
-  int t = 0;
-  sqlite3 *db;
-  UNUSED_PARAMETER(NotUsed);
-
-  if( zSql==0 ) return;
-
-  /* Jump past the "CREATE TABLE" bit. */
-  if( skipCreateTable(ctx, zSql, &iOff) ) return;
-
-  if( sqlite3_value_type(argv[1])==SQLITE_INTEGER ){
-    iNotNull = sqlite3_value_int(argv[1]);
-  }else{
-    zCons = sqlite3_value_text(argv[1]);
-  }
-
-  /* Search for the named constraint within column definitions. */
-  for(ii=0; iEnd==0; ii++){
-
-    /* Now parse the column or table constraint definition. Search
-    ** for the token CONSTRAINT if this is a DROP CONSTRAINT command, or
-    ** NOT in the right column if this is a DROP NOT NULL. */
-    while( 1 ){
-      iStart = iOff;
-      iOff += getConstraintToken(&zSql[iOff], &t);
-      if( t==TK_CONSTRAINT && (zCons || iNotNull==ii) ){
-        /* Check if this is the constraint we are searching for. */
-        int nTok = 0;
-        int cmp = 1;
-
-        /* Skip past any whitespace. */
-        iOff += getWhitespace(&zSql[iOff]);
-
-        /* Compare the next token - which may be quoted - with the name of
-        ** the constraint being dropped.  */
-        nTok = getConstraintToken(&zSql[iOff], &t);
-        if( zCons ){
-          if( quotedCompare(ctx, t, &zSql[iOff], nTok, zCons, &cmp) ) return;
-        }
-        iOff += nTok;
-
-        /* The next token is usually the first token of the constraint
-        ** definition. This is enough to tell the type of the constraint -
-        ** TK_NOT means it is a NOT NULL, TK_CHECK a CHECK constraint etc.
-        **
-        ** There is also the chance that the next token is TK_CONSTRAINT
-        ** (or TK_DEFAULT or TK_COLLATE), for example if a table has been
-        ** created as follows:
-        **
-        **    CREATE TABLE t1(cols, CONSTRAINT one CONSTRAINT two NOT NULL);
-        **
-        ** In this case, allow the "CONSTRAINT one" bit to be dropped by
-        ** this command if that is what is requested, or to advance to
-        ** the next iteration of the loop with &zSql[iOff] still pointing
-        ** to the CONSTRAINT keyword.  */
-        nTok = getConstraintToken(&zSql[iOff], &t);
-        if( t==TK_CONSTRAINT || t==TK_DEFAULT || t==TK_COLLATE
-         || t==TK_COMMA || t==TK_RP || t==TK_GENERATED || t==TK_AS
-        ){
-          t = TK_CHECK;
-        }else{
-          iOff += nTok;
-          iOff += getConstraint(&zSql[iOff]);
-        }
-
-        if( cmp==0 || (iNotNull>=0 && t==TK_NOT) ){
-          if( t!=TK_NOT && t!=TK_CHECK ){
-            errorMPrintf(ctx, "constraint may not be dropped: %s", zCons);
-            return;
-          }
-          iEnd = iOff;
-          break;
-        }
-
-      }else if( t==TK_NOT && iNotNull==ii ){
-        iEnd = iOff + getConstraint(&zSql[iOff]);
-        break;
-      }else if( t==TK_RP || t==TK_ILLEGAL ){
-        iEnd = -1;
-        break;
-      }else if( t==TK_COMMA ){
-        break;
-      }
-    }
-  }
-
-  /* If the constraint has not been found it is an error. */
-  if( iEnd<=0 ){
-    if( zCons ){
-      errorMPrintf(ctx, "no such constraint: %s", zCons);
-    }else{
-      /* SQLite follows postgres in that a DROP NOT NULL on a column that is
-      ** not NOT NULL is not an error. So just return the original SQL here. */
-      sqlite3_result_text(ctx, (const char*)zSql, -1, SQLITE_TRANSIENT);
-    }
-  }else{
-
-    /* Figure out if an extra space should be inserted after the constraint
-    ** is removed. And if an additional comma preceding the constraint
-    ** should be removed. */
-    const char *zSpace = " ";
-    iEnd += getWhitespace(&zSql[iEnd]);
-    sqlite3GetToken(&zSql[iEnd], &t);
-    if( t==TK_RP || t==TK_COMMA ){
-      zSpace = "";
-      if( zSql[iStart-1]==',' ) iStart--;
-    }
-
-    db = sqlite3_context_db_handle(ctx);
-    zNew = sqlite3MPrintf(db, "%.*s%s%s", iStart, zSql, zSpace, &zSql[iEnd]);
-    sqlite3_result_text(ctx, zNew, -1, SQLITE_DYNAMIC);
-  }
-}
-
-/*
-** Internal SQL function:
-**
-**     sqlite_add_constraint(SQL, CONSTRAINT-TEXT, ICOL)
-**
-** SQL is a CREATE TABLE statement.  Return a modified version of
-** SQL that adds CONSTRAINT-TEXT at the end of the ICOL-th column
-** definition.  (The left-most column defintion is 0.)
-*/
-static void addConstraintFunc(
-  sqlite3_context *ctx,
-  int NotUsed,
-  sqlite3_value **argv
-){
-  const u8 *zSql = sqlite3_value_text(argv[0]);
-  const char *zCons = (const char*)sqlite3_value_text(argv[1]);
-  int iCol = sqlite3_value_int(argv[2]);
-  int iOff = 0;
-  int ii;
-  char *zNew = 0;
-  int t = 0;
-  sqlite3 *db;
-  UNUSED_PARAMETER(NotUsed);
-
-  if( skipCreateTable(ctx, zSql, &iOff) ) return;
-
-  for(ii=0; ii<=iCol || (iCol<0 && t!=TK_RP); ii++){
-    iOff += getConstraintToken(&zSql[iOff], &t);
-    while( 1 ){
-      int nTok = getConstraintToken(&zSql[iOff], &t);
-      if( t==TK_COMMA || t==TK_RP ) break;
-      if( t==TK_ILLEGAL ){
-        sqlite3_result_error_code(ctx, SQLITE_CORRUPT_BKPT);
-        return;
-      }
-      iOff += nTok;
-    }
-  }
-
-  iOff += getWhitespace(&zSql[iOff]);
-
-  db = sqlite3_context_db_handle(ctx);
-  if( iCol<0 ){
-    zNew = sqlite3MPrintf(db, "%.*s, %s%s", iOff, zSql, zCons, &zSql[iOff]);
-  }else{
-    zNew = sqlite3MPrintf(db, "%.*s %s%s", iOff, zSql, zCons, &zSql[iOff]);
-  }
-  sqlite3_result_text(ctx, zNew, -1, SQLITE_DYNAMIC);
-}
-
-/*
-** Find a column named pCol in table pTab. If successful, set output
-** parameter *piCol to the index of the column in the table and return
-** SQLITE_OK. Otherwise, set *piCol to -1 and return an SQLite error
-** code.
-*/
-static int alterFindCol(Parse *pParse, Table *pTab, Token *pCol, int *piCol){
-  sqlite3 *db = pParse->db;
-  char *zName = sqlite3NameFromToken(db, pCol);
-  int rc = SQLITE_NOMEM;
-  int iCol = -1;
-
-  if( zName ){
-    iCol = sqlite3ColumnIndex(pTab, zName);
-    if( iCol<0 ){
-      sqlite3ErrorMsg(pParse, "no such column: %s", zName);
-      rc = SQLITE_ERROR;
-    }else{
-      rc = SQLITE_OK;
-    }
-  }
-
-#ifndef SQLITE_OMIT_AUTHORIZATION
-  if( rc==SQLITE_OK ){
-    const char *zDb = db->aDb[sqlite3SchemaToIndex(db, pTab->pSchema)].zDbSName;
-    const char *zCol = pTab->aCol[iCol].zCnName;
-    if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, zDb, pTab->zName, zCol) ){
-      pTab = 0;
-    }
-  }
-#endif
-
-  sqlite3DbFree(db, zName);
-  *piCol = iCol;
-  return rc;
-}
-
-
-/*
-** Find the table named by the first entry in source list pSrc. If successful,
-** return a pointer to the Table structure and set output variable (*pzDb)
-** to point to the name of the database containin the table (i.e. "main",
-** "temp" or the name of an attached database).
-**
-** If the table cannot be located, return NULL. The value of the two output
-** parameters is undefined in this case.
-*/
-static Table *alterFindTable(
-  Parse *pParse,        /* Parsing context */
-  SrcList *pSrc,        /* Name of the table to look for */
-  int *piDb,            /* OUT: write the iDb here */
-  const char **pzDb,    /* OUT: write name of schema here */
-  int bAuth             /* Do ALTER TABLE authorization checks if true */
-){
-  sqlite3 *db = pParse->db;
-  Table *pTab = 0;
-  assert( sqlite3BtreeHoldsAllMutexes(db) );
-  pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
-  if( pTab ){
-    int iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
-    *pzDb = db->aDb[iDb].zDbSName;
-    *piDb = iDb;
-
-    if( SQLITE_OK!=isRealTable(pParse, pTab, 2)
-     || SQLITE_OK!=isAlterableTable(pParse, pTab)
-    ){
-      pTab = 0;
-    }
-  }
-#ifndef SQLITE_OMIT_AUTHORIZATION
-  if( pTab && bAuth ){
-    if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, *pzDb, pTab->zName, 0) ){
-      pTab = 0;
-    }
-  }
-#endif
-  sqlite3SrcListDelete(db, pSrc);
-  return pTab;
-}
-
-/*
-** Generate bytecode for one of:
-**
-**  (1)   ALTER TABLE pSrc DROP CONSTRAINT pCons
-**  (2)   ALTER TABLE pSrc ALTER pCol DROP NOT NULL
-**
-** One of pCons and pCol must be NULL and the other non-null.
-*/
-SQLITE_PRIVATE void sqlite3AlterDropConstraint(
-  Parse *pParse,    /* Parsing context */
-  SrcList *pSrc,    /* The table being altered */
-  Token *pCons,     /* Name of the constraint to drop */
-  Token *pCol       /* Name of the column from which to remove the NOT NULL */
-){
-  sqlite3 *db = pParse->db;
-  Table *pTab = 0;
-  int iDb = 0;
-  const char *zDb = 0;
-  char *zArg = 0;
-
-  assert( (pCol==0)!=(pCons==0) );
-  assert( pSrc->nSrc==1 );
-  pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, pCons!=0);
-  if( !pTab ) return;
-
-  if( pCons ){
-    zArg = sqlite3MPrintf(db, "%.*Q", pCons->n, pCons->z);
-  }else{
-    int iCol;
-    if( alterFindCol(pParse, pTab, pCol, &iCol) ) return;
-    zArg = sqlite3MPrintf(db, "%d", iCol);
-  }
-
-  /* Edit the SQL for the named table. */
-  sqlite3NestedParse(pParse,
-      "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
-      "sql = sqlite_drop_constraint(sql, %s) "
-      "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
-      , zDb, zArg, pTab->zName
-  );
-  sqlite3DbFree(db, zArg);
-
-  /* Finally, reload the database schema. */
-  renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
-}
-
-/*
-** The implementation of SQL function sqlite_fail(MSG). This takes a single
-** argument, and returns it as an error message with the error code set to
-** SQLITE_CONSTRAINT.
-*/
-static void failConstraintFunc(
-  sqlite3_context *ctx,
-  int NotUsed,
-  sqlite3_value **argv
-){
-  const char *zText = (const char*)sqlite3_value_text(argv[0]);
-  int err = sqlite3_value_int(argv[1]);
-  (void)NotUsed;
-  sqlite3_result_error(ctx, zText, -1);
-  sqlite3_result_error_code(ctx, err);
-}
-
-/*
-** Buffer pCons, which is nCons bytes in size, contains the text of a
-** NOT NULL or CHECK constraint that will be inserted into a CREATE TABLE
-** statement. If successful, this function returns the size of the buffer in
-** bytes not including any trailing whitespace or "--" style comments. Or,
-** if an OOM occurs, it returns 0 and sets db->mallocFailed to true.
-**
-** C-style comments at the end are preserved.  "--" style comments are
-** removed because the comment terminator might be \000, and we are about
-** to insert the pCons[] text into the middle of a larger string, and that
-** will have the effect of removing the comment terminator and messing up
-** the syntax.
-*/
-static int alterRtrimConstraint(
-  sqlite3 *db,                    /* used to record OOM error */
-  const char *pCons,              /* Buffer containing constraint */
-  int nCons                       /* Size of pCons in bytes */
-){
-  u8 *zTmp = (u8*)sqlite3MPrintf(db, "%.*s", nCons, pCons);
-  int iOff = 0;
-  int iEnd = 0;
-
-  if( zTmp==0 ) return 0;
-
-  while( 1 ){
-    int t = 0;
-    int nToken = sqlite3GetToken(&zTmp[iOff], &t);
-    if( t==TK_ILLEGAL ) break;
-    if( t!=TK_SPACE && (t!=TK_COMMENT || zTmp[iOff]!='-') ){
-      iEnd = iOff+nToken;
-    }
-    iOff += nToken;
-  }
-
-  sqlite3DbFree(db, zTmp);
-  return iEnd;
-}
-
-/*
-** Prepare a statement of the form:
-**
-**   ALTER TABLE pSrc ALTER pCol SET NOT NULL
-*/
-SQLITE_PRIVATE void sqlite3AlterSetNotNull(
-  Parse *pParse,   /* Parsing context */
-  SrcList *pSrc,   /* Name of the table being altered */
-  Token *pCol,     /* Name of the column to add a NOT NULL constraint to */
-  Token *pFirst    /* The NOT token of the NOT NULL constraint text */
-){
-  Table *pTab = 0;
-  int iCol = 0;
-  int iDb = 0;
-  const char *zDb = 0;
-  const char *pCons = 0;
-  int nCons = 0;
-
-  /* Look up the table being altered. */
-  assert( pSrc->nSrc==1 );
-  pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, 0);
-  if( !pTab ) return;
-
-  /* Find the column being altered. */
-  if( alterFindCol(pParse, pTab, pCol, &iCol) ){
-    return;
-  }
-
-  /* Find the length in bytes of the constraint definition */
-  pCons = pFirst->z;
-  nCons = alterRtrimConstraint(pParse->db, pCons, pParse->sLastToken.z - pCons);
-
-  /* Search for a constraint violation. Throw an exception if one is found. */
-  sqlite3NestedParse(pParse,
-      "SELECT sqlite_fail('constraint failed', %d) "
-      "FROM %Q.%Q AS x WHERE x.%.*s IS NULL",
-      SQLITE_CONSTRAINT, zDb, pTab->zName, (int)pCol->n, pCol->z
-  );
-
-  /* Edit the SQL for the named table. */
-  sqlite3NestedParse(pParse,
-      "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
-      "sql = sqlite_add_constraint(sqlite_drop_constraint(sql, %d), %.*Q, %d) "
-      "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
-      , zDb, iCol, nCons, pCons, iCol, pTab->zName
-  );
-
-  /* Finally, reload the database schema. */
-  renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
-}
-
-/*
-** Implementation of internal SQL function:
-**
-**     sqlite_find_constraint(SQL, CONSTRAINT-NAME)
-**
-** This function returns true if the SQL passed as the first argument is a
-** CREATE TABLE that contains a constraint with the name CONSTRAINT-NAME,
-** or false otherwise.
-*/
-static void findConstraintFunc(
-  sqlite3_context *ctx,
-  int NotUsed,
-  sqlite3_value **argv
-){
-  const u8 *zSql = 0;
-  const u8 *zCons = 0;
-  int iOff = 0;
-  int t = 0;
-
-  (void)NotUsed;
-  zSql = sqlite3_value_text(argv[0]);
-  zCons = sqlite3_value_text(argv[1]);
-
-  if( zSql==0 || zCons==0 ) return;
-  while( t!=TK_LP && t!=TK_ILLEGAL ){
-    iOff += sqlite3GetToken(&zSql[iOff], &t);
-  }
-
-  while( 1 ){
-    iOff += getConstraintToken(&zSql[iOff], &t);
-    if( t==TK_CONSTRAINT ){
-      int nTok = 0;
-      int cmp = 0;
-      iOff += getWhitespace(&zSql[iOff]);
-      nTok = getConstraintToken(&zSql[iOff], &t);
-      if( quotedCompare(ctx, t, &zSql[iOff], nTok, zCons, &cmp) ) return;
-      if( cmp==0 ){
-        sqlite3_result_int(ctx, 1);
-        return;
-      }
-    }else if( t==TK_ILLEGAL ){
-      break;
-    }
-  }
-
-  sqlite3_result_int(ctx, 0);
-}
-
-/*
-** Generate bytecode to implement:
-**
-**    ALTER TABLE pSrc ADD [CONSTRAINT pName] CHECK(pExpr)
-**
-** Any "ON CONFLICT" text that occurs after the "CHECK(...)", up
-** until pParse->sLastToken, is included as part of the new constraint.
-*/
-SQLITE_PRIVATE void sqlite3AlterAddConstraint(
-  Parse *pParse,           /* Parse context */
-  SrcList *pSrc,           /* Table to add constraint to */
-  Token *pFirst,           /* First token of new constraint */
-  Token *pName,            /* Name of new constraint. NULL if name omitted. */
-  const char *pExpr,       /* Text of CHECK expression */
-  int nExpr                /* Size of pExpr in bytes */
-){
-  Table *pTab = 0;         /* Table identified by pSrc */
-  int iDb = 0;             /* Which schema does pTab live in */
-  const char *zDb = 0;     /* Name of the schema in which pTab lives */
-  const char *pCons = 0;   /* Text of the constraint */
-  int nCons;               /* Bytes of text to use from pCons[] */
-
-  /* Look up the table being altered. */
-  assert( pSrc->nSrc==1 );
-  pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, 1);
-  if( !pTab ) return;
-
-  /* If this new constraint has a name, check that it is not a duplicate of
-  ** an existing constraint. It is an error if it is.  */
-  if( pName ){
-    char *zName = sqlite3NameFromToken(pParse->db, pName);
-
-    sqlite3NestedParse(pParse,
-        "SELECT sqlite_fail('constraint %q already exists', %d) "
-        "FROM \"%w\"." LEGACY_SCHEMA_TABLE " "
-        "WHERE type='table' AND tbl_name=%Q COLLATE nocase "
-        "AND sqlite_find_constraint(sql, %Q)",
-        zName, SQLITE_ERROR, zDb, pTab->zName, zName
-    );
-    sqlite3DbFree(pParse->db, zName);
-  }
-
-  /* Search for a constraint violation. Throw an exception if one is found. */
-  sqlite3NestedParse(pParse,
-      "SELECT sqlite_fail('constraint failed', %d) "
-      "FROM %Q.%Q WHERE (%.*s) IS NOT TRUE",
-      SQLITE_CONSTRAINT, zDb, pTab->zName, nExpr, pExpr
-  );
-
-  /* Edit the SQL for the named table. */
-  pCons = pFirst->z;
-  nCons = alterRtrimConstraint(pParse->db, pCons, pParse->sLastToken.z - pCons);
-
-  sqlite3NestedParse(pParse,
-      "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
-      "sql = sqlite_add_constraint(sql, %.*Q, -1) "
-      "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
-      , zDb, nCons, pCons, pTab->zName
-  );
-
-  /* Finally, reload the database schema. */
-  renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
-}
-
 /*
 ** Register built-in functions used to help implement ALTER TABLE
 */
@@ -122541,10 +121461,6 @@ SQLITE_PRIVATE void sqlite3AlterFunctions(void){
     INTERNAL_FUNCTION(sqlite_rename_test,    7, renameTableTest),
     INTERNAL_FUNCTION(sqlite_drop_column,    3, dropColumnFunc),
     INTERNAL_FUNCTION(sqlite_rename_quotefix,2, renameQuotefixFunc),
-    INTERNAL_FUNCTION(sqlite_drop_constraint,2, dropConstraintFunc),
-    INTERNAL_FUNCTION(sqlite_fail,           2, failConstraintFunc),
-    INTERNAL_FUNCTION(sqlite_add_constraint, 3, addConstraintFunc),
-    INTERNAL_FUNCTION(sqlite_find_constraint,2, findConstraintFunc),
   };
   sqlite3InsertBuiltinFuncs(aAlterTableFuncs, ArraySize(aAlterTableFuncs));
 }
@@ -125165,7 +124081,7 @@ SQLITE_PRIVATE int sqlite3FixTriggerStep(
     if( sqlite3WalkSelect(&pFix->w, pStep->pSelect)
      || sqlite3WalkExpr(&pFix->w, pStep->pWhere)
      || sqlite3WalkExprList(&pFix->w, pStep->pExprList)
-     || sqlite3FixSrcList(pFix, pStep->pSrc)
+     || sqlite3FixSrcList(pFix, pStep->pFrom)
     ){
       return 1;
     }
@@ -125272,7 +124188,7 @@ SQLITE_API int sqlite3_set_authorizer(
   sqlite3_mutex_enter(db->mutex);
   db->xAuth = (sqlite3_xauth)xAuth;
   db->pAuthArg = pArg;
-  sqlite3ExpirePreparedStatements(db, 1);
+  if( db->xAuth ) sqlite3ExpirePreparedStatements(db, 1);
   sqlite3_mutex_leave(db->mutex);
   return SQLITE_OK;
 }
@@ -125943,7 +124859,6 @@ SQLITE_PRIVATE Table *sqlite3LocateTableItem(
   const char *zDb;
   if( p->fg.fixedSchema ){
     int iDb = sqlite3SchemaToIndex(pParse->db, p->u4.pSchema);
-    assert( iDb>=0 && iDb<pParse->db->nDb );
     zDb = pParse->db->aDb[iDb].zDbSName;
   }else{
     assert( !p->fg.isSubquery );
@@ -127517,8 +126432,8 @@ SQLITE_PRIVATE void sqlite3ChangeCookie(Parse *pParse, int iDb){
 ** The estimate is conservative.  It might be larger that what is
 ** really needed.
 */
-static i64 identLength(const char *z){
-  i64 n;
+static int identLength(const char *z){
+  int n;
   for(n=0; *z; n++, z++){
     if( *z=='"' ){ n++; }
   }
@@ -128028,14 +126943,13 @@ SQLITE_PRIVATE void sqlite3MarkAllShadowTablesOf(sqlite3 *db, Table *pTab){
 ** restored to its original value prior to this routine returning.
 */
 SQLITE_PRIVATE int sqlite3ShadowTableName(sqlite3 *db, const char *zName){
-  const char *zTail;            /* Pointer to the last "_" in zName */
+  char *zTail;                  /* Pointer to the last "_" in zName */
   Table *pTab;                  /* Table that zName is a shadow of */
-  char *zCopy;
   zTail = strrchr(zName, '_');
   if( zTail==0 ) return 0;
-  zCopy = sqlite3DbStrNDup(db, zName, (int)(zTail-zName));
-  pTab = zCopy ? sqlite3FindTable(db, zCopy, 0) : 0;
-  sqlite3DbFree(db, zCopy);
+  *zTail = 0;
+  pTab = sqlite3FindTable(db, zName, 0);
+  *zTail = '_';
   if( pTab==0 ) return 0;
   if( !IsVirtual(pTab) ) return 0;
   return sqlite3IsShadowTableOf(db, pTab, zName);
@@ -128188,7 +127102,6 @@ SQLITE_PRIVATE void sqlite3EndTable(
     convertToWithoutRowidTable(pParse, p);
   }
   iDb = sqlite3SchemaToIndex(db, p->pSchema);
-  assert( iDb>=0 && iDb<=db->nDb );
 
 #ifndef SQLITE_OMIT_CHECK
   /* Resolve names in all CHECK constraint expressions.
@@ -128484,7 +127397,6 @@ SQLITE_PRIVATE void sqlite3CreateView(
 
   sqlite3TwoPartName(pParse, pName1, pName2, &pName);
   iDb = sqlite3SchemaToIndex(db, p->pSchema);
-  assert( iDb>=0 && iDb<db->nDb );
   sqlite3FixInit(&sFix, pParse, iDb, "view", pName);
   if( sqlite3FixSelect(&sFix, pSelect) ) goto create_view_fail;
 
@@ -130081,7 +128993,6 @@ SQLITE_PRIVATE void sqlite3DropIndex(Parse *pParse, SrcList *pName, int ifExists
     goto exit_drop_index;
   }
   iDb = sqlite3SchemaToIndex(db, pIndex->pSchema);
-  assert( iDb>=0 && iDb<db->nDb );
 #ifndef SQLITE_OMIT_AUTHORIZATION
   {
     int code = SQLITE_DROP_INDEX;
@@ -131916,7 +130827,7 @@ static int vtabIsReadOnly(Parse *pParse, Table *pTab){
   **   *  Only allow DELETE, INSERT, or UPDATE of non-SQLITE_VTAB_INNOCUOUS
   **      virtual tables if PRAGMA trusted_schema=ON.
   */
-  if( (pParse->pToplevel!=0 || (pParse->prepFlags & SQLITE_PREPARE_FROM_DDL))
+  if( pParse->pToplevel!=0
    && pTab->u.vtab.p->eVtabRisk >
            ((pParse->db->flags & SQLITE_TrustedSchema)!=0)
   ){
@@ -132754,6 +131665,7 @@ SQLITE_PRIVATE void sqlite3GenerateRowIndexDelete(
         &iPartIdxLabel, pPrior, r1);
     sqlite3VdbeAddOp3(v, OP_IdxDelete, iIdxCur+i, r1,
         pIdx->uniqNotNull ? pIdx->nKeyCol : pIdx->nColumn);
+    sqlite3VdbeChangeP5(v, 1);  /* Cause IdxDelete to error if no entry found */
     sqlite3ResolvePartIdxLabel(pParse, iPartIdxLabel);
     pPrior = pIdx;
   }
@@ -133328,7 +132240,7 @@ static void roundFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
       sqlite3_result_error_nomem(context);
       return;
     }
-    sqlite3AtoF(zBuf, &r);
+    sqlite3AtoF(zBuf, &r, sqlite3Strlen30(zBuf), SQLITE_UTF8);
     sqlite3_free(zBuf);
   }
   sqlite3_result_double(context, r);
@@ -133966,7 +132878,7 @@ SQLITE_PRIVATE void sqlite3QuoteValue(StrAccum *pStr, sqlite3_value *pValue, int
       sqlite3_str_appendf(pStr, "%!0.15g", r1);
       zVal = sqlite3_str_value(pStr);
       if( zVal ){
-        sqlite3AtoF(zVal, &r2);
+        sqlite3AtoF(zVal, &r2, pStr->nChar, SQLITE_UTF8);
         if( r1!=r2 ){
           sqlite3_str_reset(pStr);
           sqlite3_str_appendf(pStr, "%!0.20e", r1);
@@ -134063,7 +132975,7 @@ static void unistrFunc(
   }
   i = j = 0;
   while( i<nIn ){
-    const char *z = strchr(&zIn[i],'\\');
+    char *z = strchr(&zIn[i],'\\');
     if( z==0 ){
       n = nIn - i;
       memmove(&zOut[j], &zIn[i], n);
@@ -134100,7 +133012,7 @@ static void unistrFunc(
     }
   }
   zOut[j] = 0;
-  sqlite3_result_text64(context, zOut, j, sqlite3_free, SQLITE_UTF8_ZT);
+  sqlite3_result_text64(context, zOut, j, sqlite3_free, SQLITE_UTF8);
   return;
 
 unistr_error:
@@ -134193,7 +133105,7 @@ static void charFunc(
     }                                                    \
   }
   *zOut = 0;
-  sqlite3_result_text64(context, (char*)z, zOut-z,sqlite3_free,SQLITE_UTF8_ZT);
+  sqlite3_result_text64(context, (char*)z, zOut-z, sqlite3_free, SQLITE_UTF8);
 }
 
 /*
@@ -134222,7 +133134,7 @@ static void hexFunc(
     }
     *z = 0;
     sqlite3_result_text64(context, zHex, (u64)(z-zHex),
-                          sqlite3_free, SQLITE_UTF8_ZT);
+                          sqlite3_free, SQLITE_UTF8);
   }
 }
 
@@ -134560,7 +133472,7 @@ static void concatFuncCore(
   }
   z[j] = 0;
   assert( j<=n );
-  sqlite3_result_text64(context, z, j, sqlite3_free, SQLITE_UTF8_ZT);
+  sqlite3_result_text64(context, z, j, sqlite3_free, SQLITE_UTF8);
 }
 
 /*
@@ -135226,8 +134138,6 @@ SQLITE_PRIVATE void sqlite3RegisterLikeFunctions(sqlite3 *db, int caseSensitive)
     sqlite3CreateFunc(db, "like", nArg, SQLITE_UTF8, pInfo, likeFunc,
                       0, 0, 0, 0, 0);
     pDef = sqlite3FindFunction(db, "like", nArg, SQLITE_UTF8, 0);
-    assert( pDef!=0 ); /* The sqlite3CreateFunc() call above cannot fail
-                       ** because the "like" SQL-function already exists */
     pDef->funcFlags |= flags;
     pDef->funcFlags &= ~SQLITE_FUNC_UNSAFE;
   }
@@ -137016,7 +135926,6 @@ SQLITE_PRIVATE FKey *sqlite3FkReferences(Table *pTab){
 static void fkTriggerDelete(sqlite3 *dbMem, Trigger *p){
   if( p ){
     TriggerStep *pStep = p->step_list;
-    sqlite3SrcListDelete(dbMem, pStep->pSrc);
     sqlite3ExprDelete(dbMem, pStep->pWhere);
     sqlite3ExprListDelete(dbMem, pStep->pExprList);
     sqlite3SelectDelete(dbMem, pStep->pSelect);
@@ -137236,7 +136145,6 @@ SQLITE_PRIVATE void sqlite3FkCheck(
   if( !IsOrdinaryTable(pTab) ) return;
 
   iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
-  assert( iDb>=00 && iDb<db->nDb );
   zDb = db->aDb[iDb].zDbSName;
 
   /* Loop through all the foreign key constraints for which pTab is the
@@ -137684,14 +136592,14 @@ static Trigger *fkActionTrigger(
 
     pTrigger = (Trigger *)sqlite3DbMallocZero(db,
         sizeof(Trigger) +         /* struct Trigger */
-        sizeof(TriggerStep)       /* Single step in trigger program */
+        sizeof(TriggerStep) +     /* Single step in trigger program */
+        nFrom + 1                 /* Space for pStep->zTarget */
     );
     if( pTrigger ){
       pStep = pTrigger->step_list = (TriggerStep *)&pTrigger[1];
-      pStep->pSrc = sqlite3SrcListAppend(pParse, 0, 0, 0);
-      if( pStep->pSrc ){
-        pStep->pSrc->a[0].zName = sqlite3DbStrNDup(db, zFrom, nFrom);
-      }
+      pStep->zTarget = (char *)&pStep[1];
+      memcpy((char *)pStep->zTarget, zFrom, nFrom);
+
       pStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE);
       pStep->pExprList = sqlite3ExprListDup(db, pList, EXPRDUP_REDUCE);
       pStep->pSelect = sqlite3SelectDup(db, pSelect, EXPRDUP_REDUCE);
@@ -141748,11 +140656,7 @@ struct sqlite3_api_routines {
   /* Version 3.51.0 and later */
   int (*set_errmsg)(sqlite3*,int,const char*);
   int (*db_status64)(sqlite3*,int,sqlite3_int64*,sqlite3_int64*,int);
-  /* Version 3.52.0 and later */
-  void (*str_truncate)(sqlite3_str*,int);
-  void (*str_free)(sqlite3_str*);
-  int (*carray_bind)(sqlite3_stmt*,int,void*,int,int,void(*)(void*));
-  int (*carray_bind_v2)(sqlite3_stmt*,int,void*,int,int,void(*)(void*),void*);
+
 };
 
 /*
@@ -142091,11 +140995,6 @@ typedef int (*sqlite3_loadext_entry)(
 /* Version 3.51.0 and later */
 #define sqlite3_set_errmsg             sqlite3_api->set_errmsg
 #define sqlite3_db_status64            sqlite3_api->db_status64
-/* Version 3.52.0 and later */
-#define sqlite3_str_truncate           sqlite3_api->str_truncate
-#define sqlite3_str_free               sqlite3_api->str_free
-#define sqlite3_carray_bind            sqlite3_api->carray_bind
-#define sqlite3_carray_bind_v2         sqlite3_api->carray_bind_v2
 #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
 
 #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
@@ -142622,17 +141521,7 @@ static const sqlite3_api_routines sqlite3Apis = {
   sqlite3_setlk_timeout,
   /* Version 3.51.0 and later */
   sqlite3_set_errmsg,
-  sqlite3_db_status64,
-  /* Version 3.52.0 and later */
-  sqlite3_str_truncate,
-  sqlite3_str_free,
-#ifdef SQLITE_ENABLE_CARRAY
-  sqlite3_carray_bind,
-  sqlite3_carray_bind_v2
-#else
-  0,
-  0
-#endif
+  sqlite3_db_status64
 };
 
 /* True if x is the directory separator character
@@ -142734,42 +141623,33 @@ static int sqlite3LoadExtension(
   ** entry point name "sqlite3_extension_init" was not found, then
   ** construct an entry point name "sqlite3_X_init" where the X is
   ** replaced by the lowercase value of every ASCII alphabetic
-  ** character in the filename after the last "/" up to the first ".",
-  ** and skipping the first three characters if they are "lib".
+  ** character in the filename after the last "/" upto the first ".",
+  ** and eliding the first three characters if they are "lib".
   ** Examples:
   **
   **    /usr/local/lib/libExample5.4.3.so ==>  sqlite3_example_init
   **    C:/lib/mathfuncs.dll              ==>  sqlite3_mathfuncs_init
-  **
-  ** If that still finds no entry point, repeat a second time but this
-  ** time include both alphabetic and numeric characters up to the first
-  ** ".".  Example:
-  **
-  **    /usr/local/lib/libExample5.4.3.so ==>  sqlite3_example5_init
   */
   if( xInit==0 && zProc==0 ){
     int iFile, iEntry, c;
     int ncFile = sqlite3Strlen30(zFile);
-    int cnt = 0;
     zAltEntry = sqlite3_malloc64(ncFile+30);
     if( zAltEntry==0 ){
       sqlite3OsDlClose(pVfs, handle);
       return SQLITE_NOMEM_BKPT;
     }
-    do{
-      memcpy(zAltEntry, "sqlite3_", 8);
-      for(iFile=ncFile-1; iFile>=0 && !DirSep(zFile[iFile]); iFile--){}
-      iFile++;
-      if( sqlite3_strnicmp(zFile+iFile, "lib", 3)==0 ) iFile += 3;
-      for(iEntry=8; (c = zFile[iFile])!=0 && c!='.'; iFile++){
-        if( sqlite3Isalpha(c) || (cnt && sqlite3Isdigit(c)) ){
-          zAltEntry[iEntry++] = (char)sqlite3UpperToLower[(unsigned)c];
-        }
+    memcpy(zAltEntry, "sqlite3_", 8);
+    for(iFile=ncFile-1; iFile>=0 && !DirSep(zFile[iFile]); iFile--){}
+    iFile++;
+    if( sqlite3_strnicmp(zFile+iFile, "lib", 3)==0 ) iFile += 3;
+    for(iEntry=8; (c = zFile[iFile])!=0 && c!='.'; iFile++){
+      if( sqlite3Isalpha(c) ){
+        zAltEntry[iEntry++] = (char)sqlite3UpperToLower[(unsigned)c];
       }
-      memcpy(zAltEntry+iEntry, "_init", 6);
-      zEntry = zAltEntry;
-      xInit = (sqlite3_loadext_entry)sqlite3OsDlSym(pVfs, handle, zEntry);
-    }while( xInit==0 && (++cnt)<2 );
+    }
+    memcpy(zAltEntry+iEntry, "_init", 6);
+    zEntry = zAltEntry;
+    xInit = (sqlite3_loadext_entry)sqlite3OsDlSym(pVfs, handle, zEntry);
   }
   if( xInit==0 ){
     if( pzErrMsg ){
@@ -146841,8 +145721,7 @@ static void corruptSchema(
     static const char *azAlterType[] = {
        "rename",
        "drop column",
-       "add column",
-       "drop constraint"
+       "add column"
     };
     *pData->pzErrMsg = sqlite3MPrintf(db,
         "error in %s %s after %s: %s", azObj[0], azObj[1],
@@ -147925,7 +146804,7 @@ SQLITE_API int sqlite3_prepare16_v3(
 */
 typedef struct DistinctCtx DistinctCtx;
 struct DistinctCtx {
-  u8 isTnct;      /* 0: Not distinct. 1: DISTINCT  2: DISTINCT and ORDER BY */
+  u8 isTnct;      /* 0: Not distinct. 1: DISTICT  2: DISTINCT and ORDER BY */
   u8 eTnctType;   /* One of the WHERE_DISTINCT_* operators */
   int tabTnct;    /* Ephemeral table used for DISTINCT processing */
   int addrTnct;   /* Address of OP_OpenEphemeral opcode for tabTnct */
@@ -148055,6 +146934,8 @@ SQLITE_PRIVATE Select *sqlite3SelectNew(
   pNew->iLimit = 0;
   pNew->iOffset = 0;
   pNew->selId = ++pParse->nSelect;
+  pNew->addrOpenEphm[0] = -1;
+  pNew->addrOpenEphm[1] = -1;
   pNew->nSelectRow = 0;
   if( pSrc==0 ) pSrc = sqlite3DbMallocZero(pParse->db, SZ_SRCLIST_1);
   pNew->pSrc = pSrc;
@@ -148563,10 +147444,6 @@ static int sqlite3ProcessJoin(Parse *pParse, Select *p){
       pRight->fg.isOn = 1;
       p->selFlags |= SF_OnToWhere;
     }
-
-    if( IsVirtual(pRightTab) && joinType==EP_OuterON && pRight->u1.pFuncArg ){
-      p->selFlags |= SF_OnToWhere;
-    }
   }
   return 0;
 }
@@ -149206,6 +148083,29 @@ static void selectInnerLoop(
   }
 
   switch( eDest ){
+    /* In this mode, write each query result to the key of the temporary
+    ** table iParm.
+    */
+#ifndef SQLITE_OMIT_COMPOUND_SELECT
+    case SRT_Union: {
+      int r1;
+      r1 = sqlite3GetTempReg(pParse);
+      sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r1);
+      sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, regResult, nResultCol);
+      sqlite3ReleaseTempReg(pParse, r1);
+      break;
+    }
+
+    /* Construct a record from the query result, but instead of
+    ** saving that record, use it as a key to delete elements from
+    ** the temporary table iParm.
+    */
+    case SRT_Except: {
+      sqlite3VdbeAddOp3(v, OP_IdxDelete, iParm, regResult, nResultCol);
+      break;
+    }
+#endif /* SQLITE_OMIT_COMPOUND_SELECT */
+
     /* Store the result as data using a unique key.
     */
     case SRT_Fifo:
@@ -150318,8 +149218,8 @@ SQLITE_PRIVATE void sqlite3SubqueryColumnTypes(
       }
     }
     if( zType ){
-      const i64 k = strlen(zType);
-      n = strlen(pCol->zCnName);
+      const i64 k = sqlite3Strlen30(zType);
+      n = sqlite3Strlen30(pCol->zCnName);
       pCol->zCnName = sqlite3DbReallocOrFree(db, pCol->zCnName, n+k+2);
       pCol->colFlags &= ~(COLFLAG_HASTYPE|COLFLAG_HASCOLL);
       if( pCol->zCnName ){
@@ -150492,9 +149392,9 @@ static CollSeq *multiSelectCollSeq(Parse *pParse, Select *p, int iCol){
 ** function is responsible for ensuring that this structure is eventually
 ** freed.
 */
-static KeyInfo *multiSelectByMergeKeyInfo(Parse *pParse, Select *p, int nExtra){
+static KeyInfo *multiSelectOrderByKeyInfo(Parse *pParse, Select *p, int nExtra){
   ExprList *pOrderBy = p->pOrderBy;
-  int nOrderBy = (pOrderBy!=0) ? pOrderBy->nExpr : 0;
+  int nOrderBy = ALWAYS(pOrderBy!=0) ? pOrderBy->nExpr : 0;
   sqlite3 *db = pParse->db;
   KeyInfo *pRet = sqlite3KeyInfoAlloc(db, nOrderBy+nExtra, 1);
   if( pRet ){
@@ -150627,7 +149527,7 @@ static void generateWithRecursiveQuery(
   regCurrent = ++pParse->nMem;
   sqlite3VdbeAddOp3(v, OP_OpenPseudo, iCurrent, regCurrent, nCol);
   if( pOrderBy ){
-    KeyInfo *pKeyInfo = multiSelectByMergeKeyInfo(pParse, p, 1);
+    KeyInfo *pKeyInfo = multiSelectOrderByKeyInfo(pParse, p, 1);
     sqlite3VdbeAddOp4(v, OP_OpenEphemeral, iQueue, pOrderBy->nExpr+2, 0,
                       (char*)pKeyInfo, P4_KEYINFO);
     destQueue.pOrderBy = pOrderBy;
@@ -150636,28 +149536,8 @@ static void generateWithRecursiveQuery(
   }
   VdbeComment((v, "Queue table"));
   if( iDistinct ){
-    /* Generate an ephemeral table used to enforce distinctness on the
-    ** output of the recursive part of the CTE.
-    */
-    KeyInfo *pKeyInfo;            /* Collating sequence for the result set */
-    CollSeq **apColl;             /* For looping through pKeyInfo->aColl[] */
-
-    assert( p->pNext==0 );
-    assert( p->pEList!=0 );
-    nCol = p->pEList->nExpr;
-    pKeyInfo = sqlite3KeyInfoAlloc(pParse->db, nCol, 1);
-    if( pKeyInfo ){
-      for(i=0, apColl=pKeyInfo->aColl; i<nCol; i++, apColl++){
-        *apColl = multiSelectCollSeq(pParse, p, i);
-        if( 0==*apColl ){
-          *apColl = pParse->db->pDfltColl;
-        }
-      }
-      sqlite3VdbeAddOp4(v, OP_OpenEphemeral, iDistinct, nCol, 0,
-                           (void*)pKeyInfo, P4_KEYINFO);
-    }else{
-      assert( pParse->nErr>0 );
-    }
+    p->addrOpenEphm[0] = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, iDistinct, 0);
+    p->selFlags |= SF_UsesEphemeral;
   }
 
   /* Detach the ORDER BY clause from the compound SELECT */
@@ -150732,7 +149612,7 @@ static void generateWithRecursiveQuery(
 #endif /* SQLITE_OMIT_CTE */
 
 /* Forward references */
-static int multiSelectByMerge(
+static int multiSelectOrderBy(
   Parse *pParse,        /* Parsing context */
   Select *p,            /* The right-most of SELECTs to be coded */
   SelectDest *pDest     /* What to do with query results */
@@ -150881,26 +149761,12 @@ static int multiSelect(
     generateWithRecursiveQuery(pParse, p, &dest);
   }else
 #endif
+
+  /* Compound SELECTs that have an ORDER BY clause are handled separately.
+  */
   if( p->pOrderBy ){
-    /* If the compound has an ORDER BY clause, then always use the merge
-    ** algorithm. */
-    return multiSelectByMerge(pParse, p, pDest);
-  }else if( p->op!=TK_ALL ){
-    /* If the compound is EXCEPT, INTERSECT, or UNION (anything other than
-    ** UNION ALL) then also always use the merge algorithm.  However, the
-    ** multiSelectByMerge() routine requires that the compound have an
-    ** ORDER BY clause, and it doesn't right now.  So invent one first. */
-    Expr *pOne = sqlite3ExprInt32(db, 1);
-    p->pOrderBy = sqlite3ExprListAppend(pParse, 0, pOne);
-    if( pParse->nErr ) goto multi_select_end;
-    assert( p->pOrderBy!=0 );
-    p->pOrderBy->a[0].u.x.iOrderByCol = 1;
-    return multiSelectByMerge(pParse, p, pDest);
-  }else{
-    /* For a UNION ALL compound without ORDER BY, simply run the left
-    ** query, then run the right query */
-    int addr = 0;
-    int nLimit = 0;  /* Initialize to suppress harmless compiler warning */
+    return multiSelectOrderBy(pParse, p, pDest);
+  }else{
 
 #ifndef SQLITE_OMIT_EXPLAIN
     if( pPrior->pPrior==0 ){
@@ -150908,49 +149774,300 @@ static int multiSelect(
       ExplainQueryPlan((pParse, 1, "LEFT-MOST SUBQUERY"));
     }
 #endif
-    assert( !pPrior->pLimit );
-    pPrior->iLimit = p->iLimit;
-    pPrior->iOffset = p->iOffset;
-    pPrior->pLimit = sqlite3ExprDup(db, p->pLimit, 0);
-    TREETRACE(0x200, pParse, p, ("multiSelect UNION ALL left...\n"));
-    rc = sqlite3Select(pParse, pPrior, &dest);
-    sqlite3ExprDelete(db, pPrior->pLimit);
-    pPrior->pLimit = 0;
-    if( rc ){
-      goto multi_select_end;
-    }
-    p->pPrior = 0;
-    p->iLimit = pPrior->iLimit;
-    p->iOffset = pPrior->iOffset;
-    if( p->iLimit ){
-      addr = sqlite3VdbeAddOp1(v, OP_IfNot, p->iLimit); VdbeCoverage(v);
-      VdbeComment((v, "Jump ahead if LIMIT reached"));
-      if( p->iOffset ){
-        sqlite3VdbeAddOp3(v, OP_OffsetLimit,
-                          p->iLimit, p->iOffset+1, p->iOffset);
-      }
-    }
-    ExplainQueryPlan((pParse, 1, "UNION ALL"));
-    TREETRACE(0x200, pParse, p, ("multiSelect UNION ALL right...\n"));
-    rc = sqlite3Select(pParse, p, &dest);
-    testcase( rc!=SQLITE_OK );
-    pDelete = p->pPrior;
-    p->pPrior = pPrior;
-    p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
-    if( p->pLimit
-     && sqlite3ExprIsInteger(p->pLimit->pLeft, &nLimit, pParse)
-     && nLimit>0 && p->nSelectRow > sqlite3LogEst((u64)nLimit)
-    ){
-      p->nSelectRow = sqlite3LogEst((u64)nLimit);
-    }
-    if( addr ){
-      sqlite3VdbeJumpHere(v, addr);
+
+    /* Generate code for the left and right SELECT statements.
+    */
+    switch( p->op ){
+      case TK_ALL: {
+        int addr = 0;
+        int nLimit = 0;  /* Initialize to suppress harmless compiler warning */
+        assert( !pPrior->pLimit );
+        pPrior->iLimit = p->iLimit;
+        pPrior->iOffset = p->iOffset;
+        pPrior->pLimit = p->pLimit;
+        TREETRACE(0x200, pParse, p, ("multiSelect UNION ALL left...\n"));
+        rc = sqlite3Select(pParse, pPrior, &dest);
+        pPrior->pLimit = 0;
+        if( rc ){
+          goto multi_select_end;
+        }
+        p->pPrior = 0;
+        p->iLimit = pPrior->iLimit;
+        p->iOffset = pPrior->iOffset;
+        if( p->iLimit ){
+          addr = sqlite3VdbeAddOp1(v, OP_IfNot, p->iLimit); VdbeCoverage(v);
+          VdbeComment((v, "Jump ahead if LIMIT reached"));
+          if( p->iOffset ){
+            sqlite3VdbeAddOp3(v, OP_OffsetLimit,
+                              p->iLimit, p->iOffset+1, p->iOffset);
+          }
+        }
+        ExplainQueryPlan((pParse, 1, "UNION ALL"));
+        TREETRACE(0x200, pParse, p, ("multiSelect UNION ALL right...\n"));
+        rc = sqlite3Select(pParse, p, &dest);
+        testcase( rc!=SQLITE_OK );
+        pDelete = p->pPrior;
+        p->pPrior = pPrior;
+        p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
+        if( p->pLimit
+         && sqlite3ExprIsInteger(p->pLimit->pLeft, &nLimit, pParse)
+         && nLimit>0 && p->nSelectRow > sqlite3LogEst((u64)nLimit)
+        ){
+          p->nSelectRow = sqlite3LogEst((u64)nLimit);
+        }
+        if( addr ){
+          sqlite3VdbeJumpHere(v, addr);
+        }
+        break;
+      }
+      case TK_EXCEPT:
+      case TK_UNION: {
+        int unionTab;    /* Cursor number of the temp table holding result */
+        u8 op = 0;       /* One of the SRT_ operations to apply to self */
+        int priorOp;     /* The SRT_ operation to apply to prior selects */
+        Expr *pLimit;    /* Saved values of p->nLimit  */
+        int addr;
+        int emptyBypass = 0;   /* IfEmpty opcode to bypass RHS */
+        SelectDest uniondest;
+
+
+        testcase( p->op==TK_EXCEPT );
+        testcase( p->op==TK_UNION );
+        priorOp = SRT_Union;
+        if( dest.eDest==priorOp ){
+          /* We can reuse a temporary table generated by a SELECT to our
+          ** right.
+          */
+          assert( p->pLimit==0 );      /* Not allowed on leftward elements */
+          unionTab = dest.iSDParm;
+        }else{
+          /* We will need to create our own temporary table to hold the
+          ** intermediate results.
+          */
+          unionTab = pParse->nTab++;
+          assert( p->pOrderBy==0 );
+          addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, unionTab, 0);
+          assert( p->addrOpenEphm[0] == -1 );
+          p->addrOpenEphm[0] = addr;
+          findRightmost(p)->selFlags |= SF_UsesEphemeral;
+          assert( p->pEList );
+        }
+
+
+        /* Code the SELECT statements to our left
+        */
+        assert( !pPrior->pOrderBy );
+        sqlite3SelectDestInit(&uniondest, priorOp, unionTab);
+        TREETRACE(0x200, pParse, p, ("multiSelect EXCEPT/UNION left...\n"));
+        rc = sqlite3Select(pParse, pPrior, &uniondest);
+        if( rc ){
+          goto multi_select_end;
+        }
+
+        /* Code the current SELECT statement
+        */
+        if( p->op==TK_EXCEPT ){
+          op = SRT_Except;
+          emptyBypass = sqlite3VdbeAddOp1(v, OP_IfEmpty, unionTab);
+          VdbeCoverage(v);
+        }else{
+          assert( p->op==TK_UNION );
+          op = SRT_Union;
+        }
+        p->pPrior = 0;
+        pLimit = p->pLimit;
+        p->pLimit = 0;
+        uniondest.eDest = op;
+        ExplainQueryPlan((pParse, 1, "%s USING TEMP B-TREE",
+                          sqlite3SelectOpName(p->op)));
+        TREETRACE(0x200, pParse, p, ("multiSelect EXCEPT/UNION right...\n"));
+        rc = sqlite3Select(pParse, p, &uniondest);
+        testcase( rc!=SQLITE_OK );
+        assert( p->pOrderBy==0 );
+        pDelete = p->pPrior;
+        p->pPrior = pPrior;
+        p->pOrderBy = 0;
+        if( p->op==TK_UNION ){
+          p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
+        }
+        if( emptyBypass ) sqlite3VdbeJumpHere(v, emptyBypass);
+        sqlite3ExprDelete(db, p->pLimit);
+        p->pLimit = pLimit;
+        p->iLimit = 0;
+        p->iOffset = 0;
+
+        /* Convert the data in the temporary table into whatever form
+        ** it is that we currently need.
+        */
+        assert( unionTab==dest.iSDParm || dest.eDest!=priorOp );
+        assert( p->pEList || db->mallocFailed );
+        if( dest.eDest!=priorOp && db->mallocFailed==0 ){
+          int iCont, iBreak, iStart;
+          iBreak = sqlite3VdbeMakeLabel(pParse);
+          iCont = sqlite3VdbeMakeLabel(pParse);
+          computeLimitRegisters(pParse, p, iBreak);
+          sqlite3VdbeAddOp2(v, OP_Rewind, unionTab, iBreak); VdbeCoverage(v);
+          iStart = sqlite3VdbeCurrentAddr(v);
+          selectInnerLoop(pParse, p, unionTab,
+                          0, 0, &dest, iCont, iBreak);
+          sqlite3VdbeResolveLabel(v, iCont);
+          sqlite3VdbeAddOp2(v, OP_Next, unionTab, iStart); VdbeCoverage(v);
+          sqlite3VdbeResolveLabel(v, iBreak);
+          sqlite3VdbeAddOp2(v, OP_Close, unionTab, 0);
+        }
+        break;
+      }
+      default: assert( p->op==TK_INTERSECT ); {
+        int tab1, tab2;
+        int iCont, iBreak, iStart;
+        Expr *pLimit;
+        int addr, iLimit, iOffset;
+        SelectDest intersectdest;
+        int r1;
+        int emptyBypass;
+
+        /* INTERSECT is different from the others since it requires
+        ** two temporary tables.  Hence it has its own case.  Begin
+        ** by allocating the tables we will need.
+        */
+        tab1 = pParse->nTab++;
+        tab2 = pParse->nTab++;
+        assert( p->pOrderBy==0 );
+
+        addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, tab1, 0);
+        assert( p->addrOpenEphm[0] == -1 );
+        p->addrOpenEphm[0] = addr;
+        findRightmost(p)->selFlags |= SF_UsesEphemeral;
+        assert( p->pEList );
+
+        /* Code the SELECTs to our left into temporary table "tab1".
+        */
+        sqlite3SelectDestInit(&intersectdest, SRT_Union, tab1);
+        TREETRACE(0x400, pParse, p, ("multiSelect INTERSECT left...\n"));
+        rc = sqlite3Select(pParse, pPrior, &intersectdest);
+        if( rc ){
+          goto multi_select_end;
+        }
+
+        /* Initialize LIMIT counters before checking to see if the LHS
+        ** is empty, in case the jump is taken */
+        iBreak = sqlite3VdbeMakeLabel(pParse);
+        computeLimitRegisters(pParse, p, iBreak);
+        emptyBypass = sqlite3VdbeAddOp1(v, OP_IfEmpty, tab1); VdbeCoverage(v);
+
+        /* Code the current SELECT into temporary table "tab2"
+        */
+        addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, tab2, 0);
+        assert( p->addrOpenEphm[1] == -1 );
+        p->addrOpenEphm[1] = addr;
+
+        /* Disable prior SELECTs and the LIMIT counters during the computation
+        ** of the RHS select */
+        pLimit = p->pLimit;
+        iLimit = p->iLimit;
+        iOffset = p->iOffset;
+        p->pPrior = 0;
+        p->pLimit = 0;
+        p->iLimit = 0;
+        p->iOffset = 0;
+
+        intersectdest.iSDParm = tab2;
+        ExplainQueryPlan((pParse, 1, "%s USING TEMP B-TREE",
+                          sqlite3SelectOpName(p->op)));
+        TREETRACE(0x400, pParse, p, ("multiSelect INTERSECT right...\n"));
+        rc = sqlite3Select(pParse, p, &intersectdest);
+        testcase( rc!=SQLITE_OK );
+        pDelete = p->pPrior;
+        p->pPrior = pPrior;
+        if( p->nSelectRow>pPrior->nSelectRow ){
+          p->nSelectRow = pPrior->nSelectRow;
+        }
+        sqlite3ExprDelete(db, p->pLimit);
+
+        /* Reinstate the LIMIT counters prior to running the final intersect */
+        p->pLimit = pLimit;
+        p->iLimit = iLimit;
+        p->iOffset = iOffset;
+
+        /* Generate code to take the intersection of the two temporary
+        ** tables.
+        */
+        if( rc ) break;
+        assert( p->pEList );
+        sqlite3VdbeAddOp1(v, OP_Rewind, tab1);
+        r1 = sqlite3GetTempReg(pParse);
+        iStart = sqlite3VdbeAddOp2(v, OP_RowData, tab1, r1);
+        iCont = sqlite3VdbeMakeLabel(pParse);
+        sqlite3VdbeAddOp4Int(v, OP_NotFound, tab2, iCont, r1, 0);
+        VdbeCoverage(v);
+        sqlite3ReleaseTempReg(pParse, r1);
+        selectInnerLoop(pParse, p, tab1,
+                        0, 0, &dest, iCont, iBreak);
+        sqlite3VdbeResolveLabel(v, iCont);
+        sqlite3VdbeAddOp2(v, OP_Next, tab1, iStart); VdbeCoverage(v);
+        sqlite3VdbeResolveLabel(v, iBreak);
+        sqlite3VdbeAddOp2(v, OP_Close, tab2, 0);
+        sqlite3VdbeJumpHere(v, emptyBypass);
+        sqlite3VdbeAddOp2(v, OP_Close, tab1, 0);
+        break;
+      }
     }
-#ifndef SQLITE_OMIT_EXPLAIN
+
+  #ifndef SQLITE_OMIT_EXPLAIN
     if( p->pNext==0 ){
       ExplainQueryPlanPop(pParse);
     }
-#endif
+  #endif
+  }
+  if( pParse->nErr ) goto multi_select_end;
+
+  /* Compute collating sequences used by
+  ** temporary tables needed to implement the compound select.
+  ** Attach the KeyInfo structure to all temporary tables.
+  **
+  ** This section is run by the right-most SELECT statement only.
+  ** SELECT statements to the left always skip this part.  The right-most
+  ** SELECT might also skip this part if it has no ORDER BY clause and
+  ** no temp tables are required.
+  */
+  if( p->selFlags & SF_UsesEphemeral ){
+    int i;                        /* Loop counter */
+    KeyInfo *pKeyInfo;            /* Collating sequence for the result set */
+    Select *pLoop;                /* For looping through SELECT statements */
+    CollSeq **apColl;             /* For looping through pKeyInfo->aColl[] */
+    int nCol;                     /* Number of columns in result set */
+
+    assert( p->pNext==0 );
+    assert( p->pEList!=0 );
+    nCol = p->pEList->nExpr;
+    pKeyInfo = sqlite3KeyInfoAlloc(db, nCol, 1);
+    if( !pKeyInfo ){
+      rc = SQLITE_NOMEM_BKPT;
+      goto multi_select_end;
+    }
+    for(i=0, apColl=pKeyInfo->aColl; i<nCol; i++, apColl++){
+      *apColl = multiSelectCollSeq(pParse, p, i);
+      if( 0==*apColl ){
+        *apColl = db->pDfltColl;
+      }
+    }
+
+    for(pLoop=p; pLoop; pLoop=pLoop->pPrior){
+      for(i=0; i<2; i++){
+        int addr = pLoop->addrOpenEphm[i];
+        if( addr<0 ){
+          /* If [0] is unused then [1] is also unused.  So we can
+          ** always safely abort as soon as the first unused slot is found */
+          assert( pLoop->addrOpenEphm[1]<0 );
+          break;
+        }
+        sqlite3VdbeChangeP2(v, addr, nCol);
+        sqlite3VdbeChangeP4(v, addr, (char*)sqlite3KeyInfoRef(pKeyInfo),
+                            P4_KEYINFO);
+        pLoop->addrOpenEphm[i] = -1;
+      }
+    }
+    sqlite3KeyInfoUnref(pKeyInfo);
   }
 
 multi_select_end:
@@ -150982,8 +150099,8 @@ SQLITE_PRIVATE void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p){
 ** Code an output subroutine for a coroutine implementation of a
 ** SELECT statement.
 **
-** The data to be output is contained in an array of pIn->nSdst registers
-** starting at register pIn->iSdst.  pDest is where the output should
+** The data to be output is contained in pIn->iSdst.  There are
+** pIn->nSdst columns to be output.  pDest is where the output should
 ** be sent.
 **
 ** regReturn is the number of the register holding the subroutine
@@ -151012,8 +150129,6 @@ static int generateOutputSubroutine(
   int iContinue;
   int addr;
 
-  assert( pIn->eDest==SRT_Coroutine );
-
   addr = sqlite3VdbeCurrentAddr(v);
   iContinue = sqlite3VdbeMakeLabel(pParse);
 
@@ -151035,60 +150150,23 @@ static int generateOutputSubroutine(
   */
   codeOffset(v, p->iOffset, iContinue);
 
+  assert( pDest->eDest!=SRT_Exists );
+  assert( pDest->eDest!=SRT_Table );
   switch( pDest->eDest ){
     /* Store the result as data using a unique key.
     */
-    case SRT_Fifo:
-    case SRT_DistFifo:
-    case SRT_Table:
     case SRT_EphemTab: {
       int r1 = sqlite3GetTempReg(pParse);
       int r2 = sqlite3GetTempReg(pParse);
-      int iParm = pDest->iSDParm;
-      testcase( pDest->eDest==SRT_Table );
-      testcase( pDest->eDest==SRT_EphemTab );
-      testcase( pDest->eDest==SRT_Fifo );
-      testcase( pDest->eDest==SRT_DistFifo );
       sqlite3VdbeAddOp3(v, OP_MakeRecord, pIn->iSdst, pIn->nSdst, r1);
-#if !defined(SQLITE_ENABLE_NULL_TRIM) && defined(SQLITE_DEBUG)
-      /* A destination of SRT_Table and a non-zero iSDParm2 parameter means
-      ** that this is an "UPDATE ... FROM" on a virtual table or view. In this
-      ** case set the p5 parameter of the OP_MakeRecord to OPFLAG_NOCHNG_MAGIC.
-      ** This does not affect operation in any way - it just allows MakeRecord
-      ** to process OPFLAG_NOCHANGE values without an assert() failing. */
-      if( pDest->eDest==SRT_Table && pDest->iSDParm2 ){
-        sqlite3VdbeChangeP5(v, OPFLAG_NOCHNG_MAGIC);
-      }
-#endif
-#ifndef SQLITE_OMIT_CTE
-      if( pDest->eDest==SRT_DistFifo ){
-        /* If the destination is DistFifo, then cursor (iParm+1) is open
-        ** on an ephemeral index that is used to enforce uniqueness on the
-        ** total result.  At this point, we are processing the setup portion
-        ** of the recursive CTE using the merge algorithm, so the results are
-        ** guaranteed to be unique anyhow.  But we still need to populate the
-        ** (iParm+1) cursor for use by the subsequent recursive phase.
-        */
-        sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm+1, r1,
-                             pIn->iSdst, pIn->nSdst);
-      }
-#endif
-      sqlite3VdbeAddOp2(v, OP_NewRowid, iParm, r2);
-      sqlite3VdbeAddOp3(v, OP_Insert, iParm, r1, r2);
+      sqlite3VdbeAddOp2(v, OP_NewRowid, pDest->iSDParm, r2);
+      sqlite3VdbeAddOp3(v, OP_Insert, pDest->iSDParm, r1, r2);
       sqlite3VdbeChangeP5(v, OPFLAG_APPEND);
       sqlite3ReleaseTempReg(pParse, r2);
       sqlite3ReleaseTempReg(pParse, r1);
       break;
     }
 
-    /* If any row exist in the result set, record that fact and abort.
-    */
-    case SRT_Exists: {
-      sqlite3VdbeAddOp2(v, OP_Integer, 1, pDest->iSDParm);
-      /* The LIMIT clause will terminate the loop for us */
-      break;
-    }
-
 #ifndef SQLITE_OMIT_SUBQUERY
     /* If we are creating a set for an "expr IN (SELECT ...)".
     */
@@ -151135,51 +150213,9 @@ static int generateOutputSubroutine(
       break;
     }
 
-#ifndef SQLITE_OMIT_CTE
-    /* Write the results into a priority queue that is order according to
-    ** pDest->pOrderBy (in pSO).  pDest->iSDParm (in iParm) is the cursor for an
-    ** index with pSO->nExpr+2 columns.  Build a key using pSO for the first
-    ** pSO->nExpr columns, then make sure all keys are unique by adding a
-    ** final OP_Sequence column.  The last column is the record as a blob.
-    */
-    case SRT_DistQueue:
-    case SRT_Queue: {
-      int nKey;
-      int r1, r2, r3, ii;
-      ExprList *pSO;
-      int iParm = pDest->iSDParm;
-      pSO = pDest->pOrderBy;
-      assert( pSO );
-      nKey = pSO->nExpr;
-      r1 = sqlite3GetTempReg(pParse);
-      r2 = sqlite3GetTempRange(pParse, nKey+2);
-      r3 = r2+nKey+1;
-
-      sqlite3VdbeAddOp3(v, OP_MakeRecord, pIn->iSdst, pIn->nSdst, r3);
-      if( pDest->eDest==SRT_DistQueue ){
-        sqlite3VdbeAddOp2(v, OP_IdxInsert, iParm+1, r3);
-      }
-      for(ii=0; ii<nKey; ii++){
-        sqlite3VdbeAddOp2(v, OP_SCopy,
-                          pIn->iSdst + pSO->a[ii].u.x.iOrderByCol - 1,
-                          r2+ii);
-      }
-      sqlite3VdbeAddOp2(v, OP_Sequence, iParm, r2+nKey);
-      sqlite3VdbeAddOp3(v, OP_MakeRecord, r2, nKey+2, r1);
-      sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, r2, nKey+2);
-      sqlite3ReleaseTempReg(pParse, r1);
-      sqlite3ReleaseTempRange(pParse, r2, nKey+2);
-      break;
-    }
-#endif /* SQLITE_OMIT_CTE */
-
-    /* Ignore the output */
-    case SRT_Discard: {
-      break;
-    }
-
     /* If none of the above, then the result destination must be
-    ** SRT_Output.
+    ** SRT_Output.  This routine is never called with any other
+    ** destination other than the ones handled above or SRT_Output.
     **
     ** For SRT_Output, results are stored in a sequence of registers.
     ** Then the OP_ResultRow opcode is used to cause sqlite3_step() to
@@ -151207,9 +150243,8 @@ static int generateOutputSubroutine(
 }
 
 /*
-** Generate code for a compound SELECT statement using a merge
-** algorithm.  The compound must have an ORDER BY clause for this
-** to work.
+** Alternative compound select code generator for cases when there
+** is an ORDER BY clause.
 **
 ** We assume a query of the following form:
 **
@@ -151226,7 +150261,7 @@ static int generateOutputSubroutine(
 **
 **    outB:    Move the output of the selectB coroutine into the output
 **             of the compound query.  (Only generated for UNION and
-**             UNION ALL.  EXCEPT and INTERSECT never output a row that
+**             UNION ALL.  EXCEPT and INSERTSECT never output a row that
 **             appears only in B.)
 **
 **    AltB:    Called when there is data from both coroutines and A<B.
@@ -151279,8 +150314,10 @@ static int generateOutputSubroutine(
 **    AeqB: ...
 **    AgtB: ...
 **    Init: initialize coroutine registers
-**          yield coA, on eof goto EofA
-**          yield coB, on eof goto EofB
+**          yield coA
+**          if eof(A) goto EofA
+**          yield coB
+**          if eof(B) goto EofB
 **    Cmpr: Compare A, B
 **          Jump AltB, AeqB, AgtB
 **     End: ...
@@ -151288,10 +150325,10 @@ static int generateOutputSubroutine(
 ** We call AltB, AeqB, AgtB, EofA, and EofB "subroutines" but they are not
 ** actually called using Gosub and they do not Return.  EofA and EofB loop
 ** until all data is exhausted then jump to the "end" label.  AltB, AeqB,
-** and AgtB jump to either Cmpr or to one of EofA or EofB.
+** and AgtB jump to either L2 or to one of EofA or EofB.
 */
 #ifndef SQLITE_OMIT_COMPOUND_SELECT
-static int multiSelectByMerge(
+static int multiSelectOrderBy(
   Parse *pParse,        /* Parsing context */
   Select *p,            /* The right-most of SELECTs to be coded */
   SelectDest *pDest     /* What to do with query results */
@@ -151363,8 +150400,10 @@ static int multiSelectByMerge(
         if( pItem->u.x.iOrderByCol==i ) break;
       }
       if( j==nOrderBy ){
-        Expr *pNew = sqlite3ExprInt32(db, i);
+        Expr *pNew = sqlite3Expr(db, TK_INTEGER, 0);
         if( pNew==0 ) return SQLITE_NOMEM_BKPT;
+        pNew->flags |= EP_IntValue;
+        pNew->u.iValue = i;
         p->pOrderBy = pOrderBy = sqlite3ExprListAppend(pParse, pOrderBy, pNew);
         if( pOrderBy ) pOrderBy->a[nOrderBy++].u.x.iOrderByCol = (u16)i;
       }
@@ -151372,29 +150411,26 @@ static int multiSelectByMerge(
   }
 
   /* Compute the comparison permutation and keyinfo that is used with
-  ** the permutation to determine if the next row of results comes
-  ** from selectA or selectB.  Also add literal collations to the
-  ** ORDER BY clause terms so that when selectA and selectB are
-  ** evaluated, they use the correct collation.
+  ** the permutation used to determine if the next
+  ** row of results comes from selectA or selectB.  Also add explicit
+  ** collations to the ORDER BY clause terms so that when the subqueries
+  ** to the right and the left are evaluated, they use the correct
+  ** collation.
   */
   aPermute = sqlite3DbMallocRawNN(db, sizeof(u32)*(nOrderBy + 1));
   if( aPermute ){
     struct ExprList_item *pItem;
-    int bKeep = 0;
     aPermute[0] = nOrderBy;
     for(i=1, pItem=pOrderBy->a; i<=nOrderBy; i++, pItem++){
       assert( pItem!=0 );
       assert( pItem->u.x.iOrderByCol>0 );
       assert( pItem->u.x.iOrderByCol<=p->pEList->nExpr );
       aPermute[i] = pItem->u.x.iOrderByCol - 1;
-      if( aPermute[i]!=(u32)i-1 ) bKeep = 1;
-    }
-     if( bKeep==0 ){
-      sqlite3DbFreeNN(db, aPermute);
-      aPermute = 0;
     }
+    pKeyMerge = multiSelectOrderByKeyInfo(pParse, p, 1);
+  }else{
+    pKeyMerge = 0;
   }
-  pKeyMerge = multiSelectByMergeKeyInfo(pParse, p, 1);
 
   /* Allocate a range of temporary registers and the KeyInfo needed
   ** for the logic that removes duplicate result rows when the
@@ -151473,7 +150509,7 @@ static int multiSelectByMerge(
   */
   addrSelectA = sqlite3VdbeCurrentAddr(v) + 1;
   addr1 = sqlite3VdbeAddOp3(v, OP_InitCoroutine, regAddrA, 0, addrSelectA);
-  VdbeComment((v, "SUBR: next-A"));
+  VdbeComment((v, "left SELECT"));
   pPrior->iLimit = regLimitA;
   ExplainQueryPlan((pParse, 1, "LEFT"));
   sqlite3Select(pParse, pPrior, &destA);
@@ -151485,7 +150521,7 @@ static int multiSelectByMerge(
   */
   addrSelectB = sqlite3VdbeCurrentAddr(v) + 1;
   addr1 = sqlite3VdbeAddOp3(v, OP_InitCoroutine, regAddrB, 0, addrSelectB);
-  VdbeComment((v, "SUBR: next-B"));
+  VdbeComment((v, "right SELECT"));
   savedLimit = p->iLimit;
   savedOffset = p->iOffset;
   p->iLimit = regLimitB;
@@ -151499,7 +150535,7 @@ static int multiSelectByMerge(
   /* Generate a subroutine that outputs the current row of the A
   ** select as the next output row of the compound select.
   */
-  VdbeNoopComment((v, "SUBR: out-A"));
+  VdbeNoopComment((v, "Output routine for A"));
   addrOutA = generateOutputSubroutine(pParse,
                  p, &destA, pDest, regOutA,
                  regPrev, pKeyDup, labelEnd);
@@ -151508,7 +150544,7 @@ static int multiSelectByMerge(
   ** select as the next output row of the compound select.
   */
   if( op==TK_ALL || op==TK_UNION ){
-    VdbeNoopComment((v, "SUBR: out-B"));
+    VdbeNoopComment((v, "Output routine for B"));
     addrOutB = generateOutputSubroutine(pParse,
                  p, &destB, pDest, regOutB,
                  regPrev, pKeyDup, labelEnd);
@@ -151521,12 +150557,10 @@ static int multiSelectByMerge(
   if( op==TK_EXCEPT || op==TK_INTERSECT ){
     addrEofA_noB = addrEofA = labelEnd;
   }else{
-    VdbeNoopComment((v, "SUBR: eof-A"));
+    VdbeNoopComment((v, "eof-A subroutine"));
     addrEofA = sqlite3VdbeAddOp2(v, OP_Gosub, regOutB, addrOutB);
-    VdbeComment((v, "out-B"));
     addrEofA_noB = sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, labelEnd);
                                      VdbeCoverage(v);
-    VdbeComment((v, "next-B"));
     sqlite3VdbeGoto(v, addrEofA);
     p->nSelectRow = sqlite3LogEstAdd(p->nSelectRow, pPrior->nSelectRow);
   }
@@ -151538,20 +150572,17 @@ static int multiSelectByMerge(
     addrEofB = addrEofA;
     if( p->nSelectRow > pPrior->nSelectRow ) p->nSelectRow = pPrior->nSelectRow;
   }else{
-    VdbeNoopComment((v, "SUBR: eof-B"));
+    VdbeNoopComment((v, "eof-B subroutine"));
     addrEofB = sqlite3VdbeAddOp2(v, OP_Gosub, regOutA, addrOutA);
-    VdbeComment((v, "out-A"));
     sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, labelEnd); VdbeCoverage(v);
-    VdbeComment((v, "next-A"));
     sqlite3VdbeGoto(v, addrEofB);
   }
 
   /* Generate code to handle the case of A<B
   */
+  VdbeNoopComment((v, "A-lt-B subroutine"));
   addrAltB = sqlite3VdbeAddOp2(v, OP_Gosub, regOutA, addrOutA);
-  VdbeComment((v, "out-A"));
   sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA); VdbeCoverage(v);
-  VdbeComment((v, "next-A"));
   sqlite3VdbeGoto(v, labelCmpr);
 
   /* Generate code to handle the case of A==B
@@ -151562,48 +150593,36 @@ static int multiSelectByMerge(
     addrAeqB = addrAltB;
     addrAltB++;
   }else{
-    addrAeqB = addrAltB + 1;
+    VdbeNoopComment((v, "A-eq-B subroutine"));
+    addrAeqB =
+    sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA); VdbeCoverage(v);
+    sqlite3VdbeGoto(v, labelCmpr);
   }
 
   /* Generate code to handle the case of A>B
   */
+  VdbeNoopComment((v, "A-gt-B subroutine"));
   addrAgtB = sqlite3VdbeCurrentAddr(v);
   if( op==TK_ALL || op==TK_UNION ){
     sqlite3VdbeAddOp2(v, OP_Gosub, regOutB, addrOutB);
-    VdbeComment((v, "out-B"));
-    sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, addrEofB); VdbeCoverage(v);
-    VdbeComment((v, "next-B"));
-    sqlite3VdbeGoto(v, labelCmpr);
-  }else{
-    addrAgtB++; /* Just do next-B.  Might as well use the next-B call
-                ** in the next code block */
   }
+  sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, addrEofB); VdbeCoverage(v);
+  sqlite3VdbeGoto(v, labelCmpr);
 
   /* This code runs once to initialize everything.
   */
   sqlite3VdbeJumpHere(v, addr1);
   sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA_noB); VdbeCoverage(v);
-  VdbeComment((v, "next-A"));
-  /* v---  Also the A>B case for EXCEPT and INTERSECT */
   sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, addrEofB); VdbeCoverage(v);
-  VdbeComment((v, "next-B"));
 
   /* Implement the main merge loop
   */
-  if( aPermute!=0 ){
-    sqlite3VdbeAddOp4(v, OP_Permutation, 0, 0, 0, (char*)aPermute, P4_INTARRAY);
-  }
   sqlite3VdbeResolveLabel(v, labelCmpr);
+  sqlite3VdbeAddOp4(v, OP_Permutation, 0, 0, 0, (char*)aPermute, P4_INTARRAY);
   sqlite3VdbeAddOp4(v, OP_Compare, destA.iSdst, destB.iSdst, nOrderBy,
                          (char*)pKeyMerge, P4_KEYINFO);
-  if( aPermute!=0 ){
-    sqlite3VdbeChangeP5(v, OPFLAG_PERMUTE);
-  }
-  sqlite3VdbeAddOp3(v, OP_Jump, addrAltB, addrAeqB, addrAgtB);
-  VdbeCoverageIf(v, op==TK_ALL);
-  VdbeCoverageIf(v, op==TK_UNION);
-  VdbeCoverageIf(v, op==TK_EXCEPT);
-  VdbeCoverageIf(v, op==TK_INTERSECT);
+  sqlite3VdbeChangeP5(v, OPFLAG_PERMUTE);
+  sqlite3VdbeAddOp3(v, OP_Jump, addrAltB, addrAeqB, addrAgtB); VdbeCoverage(v);
 
   /* Jump to the this point in order to terminate the query.
   */
@@ -152520,7 +151539,7 @@ static int flattenSubquery(
     }
     pSubitem->fg.jointype |= jointype;
 
-    /* Begin substituting subquery result set expressions for
+    /* Now begin substituting subquery result set expressions for
     ** references to the iParent in the outer query.
     **
     ** Example:
@@ -152532,7 +151551,7 @@ static int flattenSubquery(
     ** We look at every expression in the outer query and every place we see
     ** "a" we substitute "x*3" and every place we see "b" we substitute "y+10".
     */
-    if( pSub->pOrderBy ){
+    if( pSub->pOrderBy && (pParent->selFlags & SF_NoopOrderBy)==0 ){
       /* At this point, any non-zero iOrderByCol values indicate that the
       ** ORDER BY column expression is identical to the iOrderByCol'th
       ** expression returned by SELECT statement pSub. Since these values
@@ -152540,9 +151559,9 @@ static int flattenSubquery(
       ** zero them before transferring the ORDER BY clause.
       **
       ** Not doing this may cause an error if a subsequent call to this
-      ** function attempts to flatten a compound sub-query into pParent.
-      ** See ticket [d11a6e908f].
-      */
+      ** function attempts to flatten a compound sub-query into pParent
+      ** (the only way this can happen is if the compound sub-query is
+      ** currently part of pSub->pSrc). See ticket [d11a6e908f].  */
       ExprList *pOrderBy = pSub->pOrderBy;
       for(i=0; i<pOrderBy->nExpr; i++){
         pOrderBy->a[i].u.x.iOrderByCol = 0;
@@ -153160,16 +152179,6 @@ static int pushDownWhereTerms(
       x.pEList = pSubq->pEList;
       x.pCList = findLeftmostExprlist(pSubq);
       pNew = substExpr(&x, pNew);
-      assert( pNew!=0 || pParse->nErr!=0 );
-      if( pParse->nErr==0 && pNew->op==TK_IN && ExprUseXSelect(pNew) ){
-        assert( pNew->x.pSelect!=0 );
-        pNew->x.pSelect->selFlags |= SF_ClonedRhsIn;
-        assert( pWhere!=0 );
-        assert( pWhere->op==TK_IN );
-        assert( ExprUseXSelect(pWhere) );
-        assert( pWhere->x.pSelect!=0 );
-        pWhere->x.pSelect->selFlags |= SF_ClonedRhsIn;
-      }
 #ifndef SQLITE_OMIT_WINDOWFUNC
       if( pSubq->pWin && 0==pushDownWindowCheck(pParse, pSubq, pNew) ){
         /* Restriction 6c has prevented push-down in this case */
@@ -153404,14 +152413,14 @@ SQLITE_PRIVATE int sqlite3IndexedByLookup(Parse *pParse, SrcItem *pFrom){
 **    SELECT * FROM (SELECT ... FROM t1 EXCEPT SELECT ... FROM t2)
 **     ORDER BY ... COLLATE ...
 **
-** This transformation is necessary because the multiSelectByMerge() routine
+** This transformation is necessary because the multiSelectOrderBy() routine
 ** above that generates the code for a compound SELECT with an ORDER BY clause
 ** uses a merge algorithm that requires the same collating sequence on the
 ** result columns as on the ORDER BY clause.  See ticket
 ** http://sqlite.org/src/info/6709574d2a
 **
 ** This transformation is only needed for EXCEPT, INTERSECT, and UNION.
-** The UNION ALL operator works fine with multiSelectByMerge() even when
+** The UNION ALL operator works fine with multiSelectOrderBy() even when
 ** there are COLLATE terms in the ORDER BY.
 */
 static int convertCompoundSelectToSubquery(Walker *pWalker, Select *p){
@@ -153957,7 +152966,7 @@ static int selectExpander(Walker *pWalker, Select *p){
         }
 #ifndef SQLITE_OMIT_VIRTUALTABLE
         else if( ALWAYS(IsVirtual(pTab))
-         && (pFrom->fg.fromDDL || (pParse->prepFlags & SQLITE_PREPARE_FROM_DDL))
+         && pFrom->fg.fromDDL
          && ALWAYS(pTab->u.vtab.p!=0)
          && pTab->u.vtab.p->eVtabRisk > ((db->flags & SQLITE_TrustedSchema)!=0)
         ){
@@ -154910,7 +153919,7 @@ static int havingToWhereExprCb(Walker *pWalker, Expr *pExpr){
      && pExpr->pAggInfo==0
     ){
       sqlite3 *db = pWalker->pParse->db;
-      Expr *pNew = sqlite3ExprInt32(db, 1);
+      Expr *pNew = sqlite3Expr(db, TK_INTEGER, "1");
       if( pNew ){
         Expr *pWhere = pS->pWhere;
         SWAP(Expr, *pNew, *pExpr);
@@ -155261,6 +154270,7 @@ static SQLITE_NOINLINE void existsToJoin(
         ExprSetProperty(pWhere, EP_IntValue);
         assert( p->pWhere!=0 );
         pSub->pSrc->a[0].fg.fromExists = 1;
+        pSub->pSrc->a[0].fg.jointype |= JT_CROSS;
         p->pSrc = sqlite3SrcListAppendList(pParse, p->pSrc, pSub->pSrc);
         if( pSubWhere ){
           p->pWhere = sqlite3PExpr(pParse, TK_AND, p->pWhere, pSubWhere);
@@ -155288,7 +154298,6 @@ typedef struct CheckOnCtx CheckOnCtx;
 struct CheckOnCtx {
   SrcList *pSrc;                  /* SrcList for this context */
   int iJoin;                      /* Cursor numbers must be =< than this */
-  int bFuncArg;                   /* True for table-function arg */
   CheckOnCtx *pParent;            /* Parent context */
 };
 
@@ -155340,9 +154349,7 @@ static int selectCheckOnClausesExpr(Walker *pWalker, Expr *pExpr){
       if( iTab>=pSrc->a[0].iCursor && iTab<=pSrc->a[pSrc->nSrc-1].iCursor ){
         if( pCtx->iJoin && iTab>pCtx->iJoin ){
           sqlite3ErrorMsg(pWalker->pParse,
-              "%s references tables to its right",
-              (pCtx->bFuncArg ? "table-function argument" : "ON clause")
-          );
+              "ON clause references tables to its right");
           return WRC_Abort;
         }
         break;
@@ -155380,7 +154387,6 @@ static int selectCheckOnClausesSelect(Walker *pWalker, Select *pSelect){
 SQLITE_PRIVATE void sqlite3SelectCheckOnClauses(Parse *pParse, Select *pSelect){
   Walker w;
   CheckOnCtx sCtx;
-  int ii;
   assert( pSelect->selFlags & SF_OnToWhere );
   assert( pSelect->pSrc!=0 && pSelect->pSrc->nSrc>=2 );
   memset(&w, 0, sizeof(w));
@@ -155390,46 +154396,8 @@ SQLITE_PRIVATE void sqlite3SelectCheckOnClauses(Parse *pParse, Select *pSelect){
   w.u.pCheckOnCtx = &sCtx;
   memset(&sCtx, 0, sizeof(sCtx));
   sCtx.pSrc = pSelect->pSrc;
-  sqlite3WalkExpr(&w, pSelect->pWhere);
+  sqlite3WalkExprNN(&w, pSelect->pWhere);
   pSelect->selFlags &= ~SF_OnToWhere;
-
-  /* Check for any table-function args that are attached to virtual tables
-  ** on the RHS of an outer join. They are subject to the same constraints
-  ** as ON clauses. */
-  sCtx.bFuncArg = 1;
-  for(ii=0; ii<pSelect->pSrc->nSrc; ii++){
-    SrcItem *pItem = &pSelect->pSrc->a[ii];
-    if( pItem->fg.isTabFunc
-     && (pItem->fg.jointype & JT_OUTER)
-    ){
-      sCtx.iJoin = pItem->iCursor;
-      sqlite3WalkExprList(&w, pItem->u1.pFuncArg);
-    }
-  }
-}
-
-/*
-** If p2 exists and p1 and p2 have the same number of terms, then change
-** every term of p1 to have the same sort order as p2 and return true.
-**
-** If p2 is NULL or p1 and p2 are different lengths, then make no changes
-** and return false.
-**
-** p1 must be non-NULL.
-*/
-static int sqlite3CopySortOrder(ExprList *p1, ExprList *p2){
-  assert( p1 );
-  if( p2 && p1->nExpr==p2->nExpr ){
-    int ii;
-    for(ii=0; ii<p1->nExpr; ii++){
-      u8 sortFlags;
-      sortFlags = p2->a[ii].fg.sortFlags & KEYINFO_ORDER_DESC;
-      p1->a[ii].fg.sortFlags = sortFlags;
-    }
-    return 1;
-  }else{
-    return 0;
-  }
 }
 
 /*
@@ -155527,7 +154495,8 @@ SQLITE_PRIVATE int sqlite3Select(
   assert( p->pOrderBy==0 || pDest->eDest!=SRT_DistQueue );
   assert( p->pOrderBy==0 || pDest->eDest!=SRT_Queue );
   if( IgnorableDistinct(pDest) ){
-    assert(pDest->eDest==SRT_Exists     || pDest->eDest==SRT_Discard ||
+    assert(pDest->eDest==SRT_Exists     || pDest->eDest==SRT_Union ||
+           pDest->eDest==SRT_Except     || pDest->eDest==SRT_Discard ||
            pDest->eDest==SRT_DistQueue  || pDest->eDest==SRT_DistFifo );
     /* All of these destinations are also able to ignore the ORDER BY clause */
     if( p->pOrderBy ){
@@ -155543,6 +154512,7 @@ SQLITE_PRIVATE int sqlite3Select(
       p->pOrderBy = 0;
     }
     p->selFlags &= ~(u32)SF_Distinct;
+    p->selFlags |= SF_NoopOrderBy;
   }
   sqlite3SelectPrep(pParse, p, 0);
   if( pParse->nErr ){
@@ -156070,8 +155040,7 @@ SQLITE_PRIVATE int sqlite3Select(
   ** BY and DISTINCT, and an index or separate temp-table for the other.
   */
   if( (p->selFlags & (SF_Distinct|SF_Aggregate))==SF_Distinct
-   && sqlite3CopySortOrder(pEList, sSort.pOrderBy)
-   && sqlite3ExprListCompare(pEList, sSort.pOrderBy, -1)==0
+   && sqlite3ExprListCompare(sSort.pOrderBy, pEList, -1)==0
    && OptimizationEnabled(db, SQLITE_GroupByOrder)
 #ifndef SQLITE_OMIT_WINDOWFUNC
    && p->pWin==0
@@ -156285,10 +155254,21 @@ SQLITE_PRIVATE int sqlite3Select(
       ** but not actually sorted. Either way, record the fact that the
       ** ORDER BY and GROUP BY clauses are the same by setting the orderByGrp
       ** variable.  */
-      if( sqlite3CopySortOrder(pGroupBy, sSort.pOrderBy)
-       && sqlite3ExprListCompare(pGroupBy, sSort.pOrderBy, -1)==0
-      ){
-        orderByGrp = 1;
+      if( sSort.pOrderBy && pGroupBy->nExpr==sSort.pOrderBy->nExpr ){
+        int ii;
+        /* The GROUP BY processing doesn't care whether rows are delivered in
+        ** ASC or DESC order - only that each group is returned contiguously.
+        ** So set the ASC/DESC flags in the GROUP BY to match those in the
+        ** ORDER BY to maximize the chances of rows being delivered in an
+        ** order that makes the ORDER BY redundant.  */
+        for(ii=0; ii<pGroupBy->nExpr; ii++){
+          u8 sortFlags;
+          sortFlags = sSort.pOrderBy->a[ii].fg.sortFlags & KEYINFO_ORDER_DESC;
+          pGroupBy->a[ii].fg.sortFlags = sortFlags;
+        }
+        if( sqlite3ExprListCompare(pGroupBy, sSort.pOrderBy, -1)==0 ){
+          orderByGrp = 1;
+        }
       }
     }else{
       assert( 0==sqlite3LogEst(1) );
@@ -157098,7 +156078,7 @@ SQLITE_PRIVATE void sqlite3DeleteTriggerStep(sqlite3 *db, TriggerStep *pTriggerS
     sqlite3SelectDelete(db, pTmp->pSelect);
     sqlite3IdListDelete(db, pTmp->pIdList);
     sqlite3UpsertDelete(db, pTmp->pUpsert);
-    sqlite3SrcListDelete(db, pTmp->pSrc);
+    sqlite3SrcListDelete(db, pTmp->pFrom);
     sqlite3DbFree(db, pTmp->zSpan);
 
     sqlite3DbFree(db, pTmp);
@@ -157287,16 +156267,11 @@ SQLITE_PRIVATE void sqlite3BeginTrigger(
     }
   }
 
-  /* NB: The SQLITE_ALLOW_TRIGGERS_ON_SYSTEM_TABLES compile-time option is
-  ** experimental and unsupported. Do not use it unless understand the
-  ** implications and you cannot get by without this capability. */
-#if !defined(SQLITE_ALLOW_TRIGGERS_ON_SYSTEM_TABLES) /* Experimental */
   /* Do not create a trigger on a system table */
   if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0 ){
     sqlite3ErrorMsg(pParse, "cannot create trigger on system table");
     goto trigger_cleanup;
   }
-#endif
 
   /* INSTEAD of triggers are only for views and views only support INSTEAD
   ** of triggers.
@@ -157408,7 +156383,6 @@ SQLITE_PRIVATE void sqlite3FinishTrigger(
   if( NEVER(pParse->nErr) || !pTrig ) goto triggerfinish_cleanup;
   zName = pTrig->zName;
   iDb = sqlite3SchemaToIndex(pParse->db, pTrig->pSchema);
-  assert( iDb>=00 && iDb<db->nDb );
   pTrig->step_list = pStepList;
   while( pStepList ){
     pStepList->pTrig = pTrig;
@@ -157443,12 +156417,12 @@ SQLITE_PRIVATE void sqlite3FinishTrigger(
     if( sqlite3ReadOnlyShadowTables(db) ){
       TriggerStep *pStep;
       for(pStep=pTrig->step_list; pStep; pStep=pStep->pNext){
-        if( pStep->pSrc!=0
-         && sqlite3ShadowTableName(db, pStep->pSrc->a[0].zName)
+        if( pStep->zTarget!=0
+         && sqlite3ShadowTableName(db, pStep->zTarget)
         ){
           sqlite3ErrorMsg(pParse,
             "trigger \"%s\" may not write to shadow table \"%s\"",
-            pTrig->zName, pStep->pSrc->a[0].zName);
+            pTrig->zName, pStep->zTarget);
           goto triggerfinish_cleanup;
         }
       }
@@ -157539,39 +156513,26 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerSelectStep(
 static TriggerStep *triggerStepAllocate(
   Parse *pParse,              /* Parser context */
   u8 op,                      /* Trigger opcode */
-  SrcList *pTabList,          /* Target table */
+  Token *pName,               /* The target name */
   const char *zStart,         /* Start of SQL text */
   const char *zEnd            /* End of SQL text */
 ){
-  Trigger *pNew = pParse->pNewTrigger;
   sqlite3 *db = pParse->db;
-  TriggerStep *pTriggerStep = 0;
+  TriggerStep *pTriggerStep;
 
-  if( pParse->nErr==0 ){
-    if( pNew
-     && pNew->pSchema!=db->aDb[1].pSchema
-     && pTabList->a[0].u4.zDatabase
-    ){
-      sqlite3ErrorMsg(pParse,
-          "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
-          "statements within triggers");
-    }else{
-      pTriggerStep = sqlite3DbMallocZero(db, sizeof(TriggerStep));
-      if( pTriggerStep ){
-        pTriggerStep->pSrc = sqlite3SrcListDup(db, pTabList, EXPRDUP_REDUCE);
-        pTriggerStep->op = op;
-        pTriggerStep->zSpan = triggerSpanDup(db, zStart, zEnd);
-        if( pTriggerStep->pSrc && IN_RENAME_OBJECT ){
-          sqlite3RenameTokenRemap(pParse,
-              pTriggerStep->pSrc->a[0].zName,
-              pTabList->a[0].zName
-          );
-        }
-      }
+  if( pParse->nErr ) return 0;
+  pTriggerStep = sqlite3DbMallocZero(db, sizeof(TriggerStep) + pName->n + 1);
+  if( pTriggerStep ){
+    char *z = (char*)&pTriggerStep[1];
+    memcpy(z, pName->z, pName->n);
+    sqlite3Dequote(z);
+    pTriggerStep->zTarget = z;
+    pTriggerStep->op = op;
+    pTriggerStep->zSpan = triggerSpanDup(db, zStart, zEnd);
+    if( IN_RENAME_OBJECT ){
+      sqlite3RenameTokenMap(pParse, pTriggerStep->zTarget, pName);
     }
   }
-
-  sqlite3SrcListDelete(db, pTabList);
   return pTriggerStep;
 }
 
@@ -157584,7 +156545,7 @@ static TriggerStep *triggerStepAllocate(
 */
 SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep(
   Parse *pParse,      /* Parser */
-  SrcList *pTabList,  /* Table to INSERT into */
+  Token *pTableName,  /* Name of the table into which we insert */
   IdList *pColumn,    /* List of columns in pTableName to insert into */
   Select *pSelect,    /* A SELECT statement that supplies values */
   u8 orconf,          /* The conflict algorithm (OE_Abort, OE_Replace, etc.) */
@@ -157597,7 +156558,7 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep(
 
   assert(pSelect != 0 || db->mallocFailed);
 
-  pTriggerStep = triggerStepAllocate(pParse, TK_INSERT, pTabList, zStart, zEnd);
+  pTriggerStep = triggerStepAllocate(pParse, TK_INSERT, pTableName,zStart,zEnd);
   if( pTriggerStep ){
     if( IN_RENAME_OBJECT ){
       pTriggerStep->pSelect = pSelect;
@@ -157629,7 +156590,7 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep(
 */
 SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep(
   Parse *pParse,          /* Parser */
-  SrcList *pTabList,   /* Name of the table to be updated */
+  Token *pTableName,   /* Name of the table to be updated */
   SrcList *pFrom,      /* FROM clause for an UPDATE-FROM, or NULL */
   ExprList *pEList,    /* The SET clause: list of column and new values */
   Expr *pWhere,        /* The WHERE clause */
@@ -157640,36 +156601,21 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep(
   sqlite3 *db = pParse->db;
   TriggerStep *pTriggerStep;
 
-  pTriggerStep = triggerStepAllocate(pParse, TK_UPDATE, pTabList, zStart, zEnd);
+  pTriggerStep = triggerStepAllocate(pParse, TK_UPDATE, pTableName,zStart,zEnd);
   if( pTriggerStep ){
-    SrcList *pFromDup = 0;
     if( IN_RENAME_OBJECT ){
       pTriggerStep->pExprList = pEList;
       pTriggerStep->pWhere = pWhere;
-      pFromDup = pFrom;
+      pTriggerStep->pFrom = pFrom;
       pEList = 0;
       pWhere = 0;
       pFrom = 0;
     }else{
       pTriggerStep->pExprList = sqlite3ExprListDup(db, pEList, EXPRDUP_REDUCE);
       pTriggerStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE);
-      pFromDup = sqlite3SrcListDup(db, pFrom, EXPRDUP_REDUCE);
+      pTriggerStep->pFrom = sqlite3SrcListDup(db, pFrom, EXPRDUP_REDUCE);
     }
     pTriggerStep->orconf = orconf;
-
-    if( pFromDup && !IN_RENAME_OBJECT){
-      Select *pSub;
-      Token as = {0, 0};
-      pSub = sqlite3SelectNew(pParse, 0, pFromDup, 0,0,0,0, SF_NestedFrom, 0);
-      pFromDup = sqlite3SrcListAppendFromTerm(pParse, 0, 0, 0, &as, pSub ,0);
-    }
-    if( pFromDup && pTriggerStep->pSrc ){
-      pTriggerStep->pSrc = sqlite3SrcListAppendList(
-          pParse, pTriggerStep->pSrc, pFromDup
-      );
-    }else{
-      sqlite3SrcListDelete(db, pFromDup);
-    }
   }
   sqlite3ExprListDelete(db, pEList);
   sqlite3ExprDelete(db, pWhere);
@@ -157684,7 +156630,7 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep(
 */
 SQLITE_PRIVATE TriggerStep *sqlite3TriggerDeleteStep(
   Parse *pParse,          /* Parser */
-  SrcList *pTabList,      /* The table from which rows are deleted */
+  Token *pTableName,      /* The table from which rows are deleted */
   Expr *pWhere,           /* The WHERE clause */
   const char *zStart,     /* Start of SQL text */
   const char *zEnd        /* End of SQL text */
@@ -157692,7 +156638,7 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerDeleteStep(
   sqlite3 *db = pParse->db;
   TriggerStep *pTriggerStep;
 
-  pTriggerStep = triggerStepAllocate(pParse, TK_DELETE, pTabList, zStart, zEnd);
+  pTriggerStep = triggerStepAllocate(pParse, TK_DELETE, pTableName,zStart,zEnd);
   if( pTriggerStep ){
     if( IN_RENAME_OBJECT ){
       pTriggerStep->pWhere = pWhere;
@@ -157892,7 +156838,6 @@ static SQLITE_NOINLINE Trigger *triggersReallyExist(
     p = pList;
     if( (pParse->db->flags & SQLITE_EnableTrigger)==0
      && pTab->pTrigger!=0
-     && sqlite3SchemaToIndex(pParse->db, pTab->pTrigger->pSchema)!=1
     ){
       /* The SQLITE_DBCONFIG_ENABLE_TRIGGER setting is off.  That means that
       ** only TEMP triggers are allowed.  Truncate the pList so that it
@@ -157955,6 +156900,52 @@ SQLITE_PRIVATE Trigger *sqlite3TriggersExist(
   return triggersReallyExist(pParse,pTab,op,pChanges,pMask);
 }
 
+/*
+** Convert the pStep->zTarget string into a SrcList and return a pointer
+** to that SrcList.
+**
+** This routine adds a specific database name, if needed, to the target when
+** forming the SrcList.  This prevents a trigger in one database from
+** referring to a target in another database.  An exception is when the
+** trigger is in TEMP in which case it can refer to any other database it
+** wants.
+*/
+SQLITE_PRIVATE SrcList *sqlite3TriggerStepSrc(
+  Parse *pParse,       /* The parsing context */
+  TriggerStep *pStep   /* The trigger containing the target token */
+){
+  sqlite3 *db = pParse->db;
+  SrcList *pSrc;                  /* SrcList to be returned */
+  char *zName = sqlite3DbStrDup(db, pStep->zTarget);
+  pSrc = sqlite3SrcListAppend(pParse, 0, 0, 0);
+  assert( pSrc==0 || pSrc->nSrc==1 );
+  assert( zName || pSrc==0 );
+  if( pSrc ){
+    Schema *pSchema = pStep->pTrig->pSchema;
+    pSrc->a[0].zName = zName;
+    if( pSchema!=db->aDb[1].pSchema ){
+      assert( pSrc->a[0].fg.fixedSchema || pSrc->a[0].u4.zDatabase==0 );
+      pSrc->a[0].u4.pSchema = pSchema;
+      pSrc->a[0].fg.fixedSchema = 1;
+    }
+    if( pStep->pFrom ){
+      SrcList *pDup = sqlite3SrcListDup(db, pStep->pFrom, 0);
+      if( pDup && pDup->nSrc>1 && !IN_RENAME_OBJECT ){
+        Select *pSubquery;
+        Token as;
+        pSubquery = sqlite3SelectNew(pParse,0,pDup,0,0,0,0,SF_NestedFrom,0);
+        as.n = 0;
+        as.z = 0;
+        pDup = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&as,pSubquery,0);
+      }
+      pSrc = sqlite3SrcListAppendList(pParse, pSrc, pDup);
+    }
+  }else{
+    sqlite3DbFree(db, zName);
+  }
+  return pSrc;
+}
+
 /*
 ** Return true if the pExpr term from the RETURNING clause argument
 ** list is of the form "*".  Raise an error if the terms if of the
@@ -158220,7 +157211,7 @@ static int codeTriggerProgram(
     switch( pStep->op ){
       case TK_UPDATE: {
         sqlite3Update(pParse,
-          sqlite3SrcListDup(db, pStep->pSrc, 0),
+          sqlite3TriggerStepSrc(pParse, pStep),
           sqlite3ExprListDup(db, pStep->pExprList, 0),
           sqlite3ExprDup(db, pStep->pWhere, 0),
           pParse->eOrconf, 0, 0, 0
@@ -158230,7 +157221,7 @@ static int codeTriggerProgram(
       }
       case TK_INSERT: {
         sqlite3Insert(pParse,
-          sqlite3SrcListDup(db, pStep->pSrc, 0),
+          sqlite3TriggerStepSrc(pParse, pStep),
           sqlite3SelectDup(db, pStep->pSelect, 0),
           sqlite3IdListDup(db, pStep->pIdList),
           pParse->eOrconf,
@@ -158241,7 +157232,7 @@ static int codeTriggerProgram(
       }
       case TK_DELETE: {
         sqlite3DeleteFrom(pParse,
-          sqlite3SrcListDup(db, pStep->pSrc, 0),
+          sqlite3TriggerStepSrc(pParse, pStep),
           sqlite3ExprDup(db, pStep->pWhere, 0), 0, 0
         );
         sqlite3VdbeAddOp0(v, OP_ResetCount);
@@ -160563,11 +159554,9 @@ SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3RunVacuum(
   pDb = &db->aDb[nDb];
   assert( strcmp(pDb->zDbSName,zDbVacuum)==0 );
   pTemp = pDb->pBt;
-  nRes = sqlite3BtreeGetRequestedReserve(pMain);
   if( pOut ){
     sqlite3_file *id = sqlite3PagerFile(sqlite3BtreePager(pTemp));
     i64 sz = 0;
-    const char *zFilename;
     if( id->pMethods!=0 && (sqlite3OsFileSize(id, &sz)!=SQLITE_OK || sz>0) ){
       rc = SQLITE_ERROR;
       sqlite3SetString(pzErrMsg, db, "output file already exists");
@@ -160579,16 +159568,8 @@ SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3RunVacuum(
     ** they are for the database being vacuumed, except that PAGER_CACHESPILL
     ** is always set. */
     pgflags = db->aDb[iDb].safety_level | (db->flags & PAGER_FLAGS_MASK);
-
-    /* If the VACUUM INTO target file is a URI filename and if the
-    ** "reserve=N" query parameter is present, reset the reserve to the
-    ** amount specified, if the amount is within range */
-    zFilename = sqlite3BtreeGetFilename(pTemp);
-    if( ALWAYS(zFilename) ){
-      int nNew = (int)sqlite3_uri_int64(zFilename, "reserve", nRes);
-      if( nNew>=0 && nNew<=255 ) nRes = nNew;
-    }
   }
+  nRes = sqlite3BtreeGetRequestedReserve(pMain);
 
   sqlite3BtreeSetCacheSize(pTemp, db->aDb[iDb].pSchema->cache_size);
   sqlite3BtreeSetSpillSize(pTemp, sqlite3BtreeSetSpillSize(pMain,0));
@@ -164393,7 +163374,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
         if( SMASKBIT32(j) & pLoop->u.vtab.mHandleIn ){
           int iTab = pParse->nTab++;
           int iCache = ++pParse->nMem;
-          sqlite3CodeRhsOfIN(pParse, pTerm->pExpr, iTab, 0);
+          sqlite3CodeRhsOfIN(pParse, pTerm->pExpr, iTab);
           sqlite3VdbeAddOp3(v, OP_VInitIn, iTab, iTarget, iCache);
         }else{
           codeEqualityTerm(pParse, pTerm, pLevel, j, bRev, iTarget);
@@ -165712,6 +164693,15 @@ SQLITE_PRIVATE SQLITE_NOINLINE void sqlite3WhereRightJoinLoop(
                                  sqlite3ExprDup(pParse->db, pTerm->pExpr, 0));
     }
   }
+  if( pLevel->iIdxCur ){
+    /* pSubWhere may contain expressions that read from an index on the
+    ** table on the RHS of the right join. All such expressions first test
+    ** if the index is pointing at a NULL row, and if so, read from the
+    ** table cursor instead. So ensure that the index cursor really is
+    ** pointing at a NULL row here, so that no values are read from it during
+    ** the scan of the RHS of the RIGHT join below.  */
+    sqlite3VdbeAddOp1(v, OP_NullRow, pLevel->iIdxCur);
+  }
   pFrom = &uSrc.sSrc;
   pFrom->nSrc = 1;
   pFrom->nAlloc = 1;
@@ -166052,14 +165042,13 @@ static int isLikeOrGlob(
         ){
           int isNum;
           double rDummy;
-          assert( zNew[iTo]==0 );
-          isNum = sqlite3AtoF(zNew, &rDummy);
+          isNum = sqlite3AtoF(zNew, &rDummy, iTo, SQLITE_UTF8);
           if( isNum<=0 ){
             if( iTo==1 && zNew[0]=='-' ){
               isNum = +1;
             }else{
               zNew[iTo-1]++;
-              isNum = sqlite3AtoF(zNew, &rDummy);
+              isNum = sqlite3AtoF(zNew, &rDummy, iTo, SQLITE_UTF8);
               zNew[iTo-1]--;
             }
           }
@@ -166102,34 +165091,6 @@ static int isLikeOrGlob(
 }
 #endif /* SQLITE_OMIT_LIKE_OPTIMIZATION */
 
-/*
-** If pExpr is one of "like", "glob", "match", or "regexp", then
-** return the corresponding SQLITE_INDEX_CONSTRAINT_xxxx value.
-** If not, return 0.
-**
-** pExpr is guaranteed to be a TK_FUNCTION.
-*/
-SQLITE_PRIVATE int sqlite3ExprIsLikeOperator(const Expr *pExpr){
-  static const struct {
-    const char *zOp;
-    unsigned char eOp;
-  } aOp[] = {
-    { "match",  SQLITE_INDEX_CONSTRAINT_MATCH },
-    { "glob",   SQLITE_INDEX_CONSTRAINT_GLOB },
-    { "like",   SQLITE_INDEX_CONSTRAINT_LIKE },
-    { "regexp", SQLITE_INDEX_CONSTRAINT_REGEXP }
-  };
-  int i;
-  assert( pExpr->op==TK_FUNCTION );
-  assert( !ExprHasProperty(pExpr, EP_IntValue) );
-  for(i=0; i<ArraySize(aOp); i++){
-    if( sqlite3StrICmp(pExpr->u.zToken, aOp[i].zOp)==0 ){
-      return aOp[i].eOp;
-    }
-  }
-  return 0;
-}
-
 
 #ifndef SQLITE_OMIT_VIRTUALTABLE
 /*
@@ -166166,6 +165127,15 @@ static int isAuxiliaryVtabOperator(
   Expr **ppRight                  /* Expression to left of MATCH/op2 */
 ){
   if( pExpr->op==TK_FUNCTION ){
+    static const struct Op2 {
+      const char *zOp;
+      unsigned char eOp2;
+    } aOp[] = {
+      { "match",  SQLITE_INDEX_CONSTRAINT_MATCH },
+      { "glob",   SQLITE_INDEX_CONSTRAINT_GLOB },
+      { "like",   SQLITE_INDEX_CONSTRAINT_LIKE },
+      { "regexp", SQLITE_INDEX_CONSTRAINT_REGEXP }
+    };
     ExprList *pList;
     Expr *pCol;                     /* Column reference */
     int i;
@@ -166185,11 +165155,16 @@ static int isAuxiliaryVtabOperator(
     */
     pCol = pList->a[1].pExpr;
     assert( pCol->op!=TK_COLUMN || (ExprUseYTab(pCol) && pCol->y.pTab!=0) );
-    if( ExprIsVtab(pCol) && (i = sqlite3ExprIsLikeOperator(pExpr))!=0 ){
-      *peOp2 = i;
-      *ppRight = pList->a[0].pExpr;
-      *ppLeft = pCol;
-      return 1;
+    if( ExprIsVtab(pCol) ){
+      for(i=0; i<ArraySize(aOp); i++){
+        assert( !ExprHasProperty(pExpr, EP_IntValue) );
+        if( sqlite3StrICmp(pExpr->u.zToken, aOp[i].zOp)==0 ){
+          *peOp2 = aOp[i].eOp2;
+          *ppRight = pList->a[0].pExpr;
+          *ppLeft = pCol;
+          return 1;
+        }
+      }
     }
 
     /* We can also match against the first column of overloaded
@@ -166323,22 +165298,16 @@ static void whereCombineDisjuncts(
   Expr *pNew;            /* New virtual expression */
   int op;                /* Operator for the combined expression */
   int idxNew;            /* Index in pWC of the next virtual term */
-  Expr *pA, *pB;         /* Expressions associated with pOne and pTwo */
 
   if( (pOne->wtFlags | pTwo->wtFlags) & TERM_VNULL ) return;
   if( (pOne->eOperator & (WO_EQ|WO_LT|WO_LE|WO_GT|WO_GE))==0 ) return;
   if( (pTwo->eOperator & (WO_EQ|WO_LT|WO_LE|WO_GT|WO_GE))==0 ) return;
   if( (eOp & (WO_EQ|WO_LT|WO_LE))!=eOp
    && (eOp & (WO_EQ|WO_GT|WO_GE))!=eOp ) return;
-  pA = pOne->pExpr;
-  pB = pTwo->pExpr;
-  assert( pA->pLeft!=0 && pA->pRight!=0 );
-  assert( pB->pLeft!=0 && pB->pRight!=0 );
-  if( sqlite3ExprCompare(0,pA->pLeft, pB->pLeft, -1) )  return;
-  if( sqlite3ExprCompare(0,pA->pRight, pB->pRight,-1) ) return;
-  if( ExprHasProperty(pA,EP_Commuted)!=ExprHasProperty(pB,EP_Commuted) ){
-    return;
-  }
+  assert( pOne->pExpr->pLeft!=0 && pOne->pExpr->pRight!=0 );
+  assert( pTwo->pExpr->pLeft!=0 && pTwo->pExpr->pRight!=0 );
+  if( sqlite3ExprCompare(0,pOne->pExpr->pLeft, pTwo->pExpr->pLeft, -1) ) return;
+  if( sqlite3ExprCompare(0,pOne->pExpr->pRight, pTwo->pExpr->pRight,-1) )return;
   /* If we reach this point, it means the two subterms can be combined */
   if( (eOp & (eOp-1))!=0 ){
     if( eOp & (WO_LT|WO_LE) ){
@@ -166349,7 +165318,7 @@ static void whereCombineDisjuncts(
     }
   }
   db = pWC->pWInfo->pParse->db;
-  pNew = sqlite3ExprDup(db, pA, 0);
+  pNew = sqlite3ExprDup(db, pOne->pExpr, 0);
   if( pNew==0 ) return;
   for(op=TK_EQ; eOp!=(WO_EQ<<(op-TK_EQ)); op++){ assert( op<TK_GE ); }
   pNew->op = op;
@@ -167389,11 +166358,13 @@ static void whereAddLimitExpr(
   int iVal = 0;
 
   if( sqlite3ExprIsInteger(pExpr, &iVal, pParse) && iVal>=0 ){
-    Expr *pVal = sqlite3ExprInt32(db, iVal);
+    Expr *pVal = sqlite3Expr(db, TK_INTEGER, 0);
     if( pVal==0 ) return;
+    ExprSetProperty(pVal, EP_IntValue);
+    pVal->u.iValue = iVal;
     pNew = sqlite3PExpr(pParse, TK_MATCH, 0, pVal);
   }else{
-    Expr *pVal = sqlite3ExprAlloc(db, TK_REGISTER, 0, 0);
+    Expr *pVal = sqlite3Expr(db, TK_REGISTER, 0);
     if( pVal==0 ) return;
     pVal->iTable = iReg;
     pNew = sqlite3PExpr(pParse, TK_MATCH, 0, pVal);
@@ -169220,14 +168191,11 @@ static sqlite3_index_info *allocateIndexInfo(
       break;
     }
     if( i==n ){
-      int bSortByGroup = (pWInfo->wctrlFlags & WHERE_SORTBYGROUP)!=0;
       nOrderBy = n;
       if( (pWInfo->wctrlFlags & WHERE_DISTINCTBY) && !pSrc->fg.rowidUsed ){
-        eDistinct = 2 + bSortByGroup;
+        eDistinct = 2 + ((pWInfo->wctrlFlags & WHERE_SORTBYGROUP)!=0);
       }else if( pWInfo->wctrlFlags & WHERE_GROUPBY ){
-        eDistinct = 1 - bSortByGroup;
-      }else if( pWInfo->wctrlFlags & WHERE_WANT_DISTINCT ){
-        eDistinct = 3;
+        eDistinct = 1;
       }
     }
   }
@@ -170638,67 +169606,6 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){
   return rc;
 }
 
-/*
-** Callback for estLikePatternLength().
-**
-** If this node is a string literal that is longer pWalker->sz, then set
-** pWalker->sz to the byte length of that string literal.
-**
-** pWalker->eCode indicates how to count characters:
-**
-**    eCode==0     Count as a GLOB pattern
-**    eCode==1     Count as a LIKE pattern
-*/
-static int exprNodePatternLengthEst(Walker *pWalker, Expr *pExpr){
-  if( pExpr->op==TK_STRING ){
-    int sz = 0;                    /* Pattern size in bytes */
-    u8 *z = (u8*)pExpr->u.zToken;  /* The pattern */
-    u8 c;                          /* Next character of the pattern */
-    u8 c1, c2, c3;                 /* Wildcards */
-    if( pWalker->eCode ){
-      c1 = '%';
-      c2 = '_';
-      c3 = 0;
-    }else{
-      c1 = '*';
-      c2 = '?';
-      c3 = '[';
-    }
-    while( (c = *(z++))!=0 ){
-      if( c==c3 ){
-        if( *z ) z++;
-        while( *z && *z!=']' ) z++;
-      }else if( c!=c1 && c!=c2 ){
-        sz++;
-      }
-    }
-    if( sz>pWalker->u.sz ) pWalker->u.sz = sz;
-  }
-  return WRC_Continue;
-}
-
-/*
-** Return the length of the longest string literal in the given
-** expression.
-**
-** eCode indicates how to count characters:
-**
-**    eCode==0     Count as a GLOB pattern
-**    eCode==1     Count as a LIKE pattern
-*/
-static int estLikePatternLength(Expr *p, u16 eCode){
-  Walker w;
-  w.u.sz = 0;
-  w.eCode = eCode;
-  w.xExprCallback = exprNodePatternLengthEst;
-  w.xSelectCallback = sqlite3SelectWalkFail;
-#ifdef SQLITE_DEBUG
-  w.xSelectCallback2 = sqlite3SelectWalkAssert2;
-#endif
-  sqlite3WalkExpr(&w, p);
-  return w.u.sz;
-}
-
 /*
 ** Adjust the WhereLoop.nOut value downward to account for terms of the
 ** WHERE clause that reference the loop but which are not used by an
@@ -170727,13 +169634,6 @@ static int estLikePatternLength(Expr *p, u16 eCode){
 ** "x" column is boolean or else -1 or 0 or 1 is a common default value
 ** on the "x" column and so in that case only cap the output row estimate
 ** at 1/2 instead of 1/4.
-**
-** Heuristic 3:  If there is a LIKE or GLOB (or REGEXP or MATCH) operator
-** with a large constant pattern, then reduce the size of the search
-** space according to the length of the pattern, under the theory that
-** longer patterns are less likely to match.  This heuristic was added
-** to give better output-row count estimates when preparing queries for
-** the Join-Order Benchmarks.  See forum thread 2026-01-30T09:57:54z
 */
 static void whereLoopOutputAdjust(
   WhereClause *pWC,      /* The WHERE clause */
@@ -170783,14 +169683,13 @@ static void whereLoopOutputAdjust(
       }else{
         /* In the absence of explicit truth probabilities, use heuristics to
         ** guess a reasonable truth probability. */
-        Expr *pOpExpr = pTerm->pExpr;
         pLoop->nOut--;
         if( (pTerm->eOperator&(WO_EQ|WO_IS))!=0
          && (pTerm->wtFlags & TERM_HIGHTRUTH)==0  /* tag-20200224-1 */
         ){
-          Expr *pRight = pOpExpr->pRight;
+          Expr *pRight = pTerm->pExpr->pRight;
           int k = 0;
-          testcase( pOpExpr->op==TK_IS );
+          testcase( pTerm->pExpr->op==TK_IS );
           if( sqlite3ExprIsInteger(pRight, &k, 0) && k>=(-1) && k<=1 ){
             k = 10;
           }else{
@@ -170800,23 +169699,6 @@ static void whereLoopOutputAdjust(
             pTerm->wtFlags |= TERM_HEURTRUTH;
             iReduce = k;
           }
-        }else
-        if( ExprHasProperty(pOpExpr, EP_InfixFunc)
-         && pOpExpr->op==TK_FUNCTION
-        ){
-          int eOp;
-          assert( ExprUseXList(pOpExpr) );
-          assert( pOpExpr->x.pList->nExpr>=2 );
-          eOp = sqlite3ExprIsLikeOperator(pOpExpr);
-          if( ALWAYS(eOp>0) ){
-            int szPattern;
-            Expr *pRHS = pOpExpr->x.pList->a[0].pExpr;
-            eOp = eOp==SQLITE_INDEX_CONSTRAINT_LIKE;
-            szPattern = estLikePatternLength(pRHS, eOp);
-            if( szPattern>0 ){
-              pLoop->nOut -= szPattern*2;
-            }
-          }
         }
       }
     }
@@ -170888,7 +169770,7 @@ static int whereRangeVectorLen(
     idxaff = sqlite3TableColumnAffinity(pIdx->pTable, pLhs->iColumn);
     if( aff!=idxaff ) break;
 
-    pColl = sqlite3ExprCompareCollSeq(pParse, pTerm->pExpr);
+    pColl = sqlite3BinaryCompareCollSeq(pParse, pLhs, pRhs);
     if( pColl==0 ) break;
     if( sqlite3StrICmp(pColl->zName, pIdx->azColl[i+nEq]) ) break;
   }
@@ -171277,7 +170159,6 @@ static int whereLoopAddBtreeIndex(
     pNew->rRun += nInMul + nIn;
     pNew->nOut += nInMul + nIn;
     whereLoopOutputAdjust(pBuilder->pWC, pNew, rSize);
-    if( pSrc->fg.fromExists ) pNew->nOut = 0;
     rc = whereLoopInsert(pBuilder, pNew);
 
     if( pNew->wsFlags & WHERE_COLUMN_RANGE ){
@@ -171874,8 +170755,6 @@ static int whereLoopAddBtree(
       if( pSrc->fg.isSubquery ){
         if( pSrc->fg.viaCoroutine ) pNew->wsFlags |= WHERE_COROUTINE;
         pNew->u.btree.pOrderBy = pSrc->u4.pSubq->pSelect->pOrderBy;
-      }else if( pSrc->fg.fromExists ){
-        pNew->nOut = 0;
       }
       rc = whereLoopInsert(pBuilder, pNew);
       pNew->nOut = rSize;
@@ -171978,7 +170857,6 @@ static int whereLoopAddBtree(
           ** positioned to the correct row during the right-join no-match
           ** loop. */
         }else{
-          if( pSrc->fg.fromExists ) pNew->nOut = 0;
           rc = whereLoopInsert(pBuilder, pNew);
         }
         pNew->nOut = rSize;
@@ -172641,7 +171519,7 @@ static int whereLoopAddAll(WhereLoopBuilder *pBuilder){
   sqlite3 *db = pWInfo->pParse->db;
   int rc = SQLITE_OK;
   int bFirstPastRJ = 0;
-  int hasRightCrossJoin = 0;
+  int hasRightJoin = 0;
   WhereLoop *pNew;
 
 
@@ -172668,34 +171546,15 @@ static int whereLoopAddAll(WhereLoopBuilder *pBuilder){
       ** prevents the right operand of a RIGHT JOIN from being swapped with
       ** other elements even further to the right.
       **
-      ** The hasRightCrossJoin flag prevent FROM-clause terms from moving
-      ** from the right side of a LEFT JOIN or CROSS JOIN over to the
-      ** left side of that same join.  This is a required restriction in
-      ** the case of LEFT JOIN - an incorrect answer may results if it is
-      ** not enforced.  This restriction is not required for CROSS JOIN.
-      ** It is provided merely as a means of controlling join order, under
-      ** the theory that no real-world queries that care about performance
-      ** actually use the CROSS JOIN syntax.
+      ** The JT_LTORJ case and the hasRightJoin flag work together to
+      ** prevent FROM-clause terms from moving from the right side of
+      ** a LEFT JOIN over to the left side of that join if the LEFT JOIN
+      ** is itself on the left side of a RIGHT JOIN.
       */
-      if( pItem->fg.jointype & (JT_LTORJ|JT_CROSS) ){
-        testcase( pItem->fg.jointype & JT_LTORJ );
-        testcase( pItem->fg.jointype & JT_CROSS );
-        hasRightCrossJoin = 1;
-      }
+      if( pItem->fg.jointype & JT_LTORJ ) hasRightJoin = 1;
       mPrereq |= mPrior;
       bFirstPastRJ = (pItem->fg.jointype & JT_RIGHT)!=0;
-    }else if( pItem->fg.fromExists ){
-      /* joins that result from the EXISTS-to-JOIN optimization should not
-      ** be moved to the left of any of their dependencies */
-      WhereClause *pWC = &pWInfo->sWC;
-      WhereTerm *pTerm;
-      int i;
-      for(i=pWC->nBase, pTerm=pWC->a; i>0; i--, pTerm++){
-        if( (pNew->maskSelf & pTerm->prereqAll)!=0 ){
-          mPrereq |= (pTerm->prereqAll & (pNew->maskSelf-1));
-        }
-      }
-    }else if( !hasRightCrossJoin ){
+    }else if( !hasRightJoin ){
       mPrereq = 0;
     }
 #ifndef SQLITE_OMIT_VIRTUALTABLE
@@ -172918,7 +171777,9 @@ static i8 wherePathSatisfiesOrderBy(
       pLoop = pLast;
     }
     if( pLoop->wsFlags & WHERE_VIRTUALTABLE ){
-      if( pLoop->u.vtab.isOrdered && pWInfo->pOrderBy==pOrderBy ){
+      if( pLoop->u.vtab.isOrdered
+       && ((wctrlFlags&(WHERE_DISTINCTBY|WHERE_SORTBYGROUP))!=WHERE_DISTINCTBY)
+      ){
         obSat = obDone;
       }else{
         /* No further ORDER BY terms may be matched. So this call should
@@ -173294,21 +172155,12 @@ static LogEst whereSortingCost(
 **     12    otherwise
 **
 ** For the purposes of this heuristic, a star-query is defined as a query
-** with a central "fact" table that is joined against multiple
-** "dimension" tables, subject to the following constraints:
-**
-**   (aa)  Only a five-way or larger join is considered for this
-**         optimization.  If there are fewer than four terms in the FROM
-**         clause, this heuristic does not apply.
-**
-**   (bb)  The join between the fact table and the dimension tables must
-**         be an INNER join.  CROSS and OUTER JOINs do not qualify.
-**
-**   (cc)  A table must have 3 or more dimension tables in order to be
-**         considered a fact table. (Was 4 prior to 2026-02-10.)
-**
-**   (dd)  A table that is a self-join cannot be a dimension table.
-**         Dimension tables are joined against fact tables.
+** with a large central table that is joined using an INNER JOIN,
+** not CROSS or OUTER JOINs, against four or more smaller tables.
+** The central table is called the "fact" table.  The smaller tables
+** that get joined are "dimension tables".  Also, any table that is
+** self-joined cannot be a dimension table; we assume that dimension
+** tables may only be joined against fact tables.
 **
 ** SIDE EFFECT:  (and really the whole point of this subroutine)
 **
@@ -173361,7 +172213,7 @@ static int computeMxChoice(WhereInfo *pWInfo){
   }
 #endif /* SQLITE_DEBUG */
 
-  if( nLoop>=4  /* Constraint (aa) */
+  if( nLoop>=5
    && !pWInfo->bStarDone
    && OptimizationEnabled(pWInfo->pParse->db, SQLITE_StarQuery)
   ){
@@ -173373,7 +172225,7 @@ static int computeMxChoice(WhereInfo *pWInfo){
 
     pWInfo->bStarDone = 1; /* Only do this computation once */
 
-    /* Look for fact tables with three or more dimensions where the
+    /* Look for fact tables with four or more dimensions where the
     ** dimension tables are not separately from the fact tables by an outer
     ** or cross join.  Adjust cost weights if found.
     */
@@ -173390,17 +172242,18 @@ static int computeMxChoice(WhereInfo *pWInfo){
       if( (pFactTab->fg.jointype & (JT_OUTER|JT_CROSS))!=0 ){
         /* If the candidate fact-table is the right table of an outer join
         ** restrict the search for dimension-tables to be tables to the right
-        ** of the fact-table.  Constraint (bb) */
-        if( iFromIdx+3 > nLoop ){
-          break;  /* ^-- Impossible to reach nDep>=2 - Constraint (cc) */
-        }
+        ** of the fact-table. */
+        if( iFromIdx+4 > nLoop ) break;  /* Impossible to reach nDep>=4 */
         while( pStart && pStart->iTab<=iFromIdx ){
           pStart = pStart->pNextLoop;
         }
       }
       for(pWLoop=pStart; pWLoop; pWLoop=pWLoop->pNextLoop){
         if( (aFromTabs[pWLoop->iTab].fg.jointype & (JT_OUTER|JT_CROSS))!=0 ){
-          break; /* Constraint (bb) */
+          /* Fact-tables and dimension-tables cannot be separated by an
+          ** outer join (at least for the definition of fact- and dimension-
+          ** used by this heuristic). */
+          break;
         }
         if( (pWLoop->prereq & m)!=0        /* pWInfo depends on iFromIdx */
          && (pWLoop->maskSelf & mSeen)==0  /* pWInfo not already a dependency */
@@ -173414,9 +172267,7 @@ static int computeMxChoice(WhereInfo *pWInfo){
           }
         }
       }
-      if( nDep<=2 ){
-        continue; /* Constraint (cc) */
-      }
+      if( nDep<=3 ) continue;
 
       /* If we reach this point, it means that pFactTab is a fact table
       ** with four or more dimensions connected by inner joins.  Proceed
@@ -173429,23 +172280,6 @@ static int computeMxChoice(WhereInfo *pWInfo){
           pWLoop->rStarDelta = 0;
         }
       }
-#endif
-#ifdef WHERETRACE_ENABLED /* 0x80000 */
-      if( sqlite3WhereTrace & 0x80000 ){
-        Bitmask mShow = mSeen;
-        sqlite3DebugPrintf("Fact table %s(%d), dimensions:",
-            pFactTab->zAlias ? pFactTab->zAlias : pFactTab->pSTab->zName,
-            iFromIdx);
-        for(pWLoop=pStart; pWLoop; pWLoop=pWLoop->pNextLoop){
-          if( mShow & pWLoop->maskSelf ){
-            SrcItem *pDim = aFromTabs + pWLoop->iTab;
-            mShow &= ~pWLoop->maskSelf;
-            sqlite3DebugPrintf(" %s(%d)",
-              pDim->zAlias ? pDim->zAlias: pDim->pSTab->zName, pWLoop->iTab);
-          }
-        }
-        sqlite3DebugPrintf("\n");
-      }
 #endif
       pWInfo->bStarUsed = 1;
 
@@ -173469,8 +172303,10 @@ static int computeMxChoice(WhereInfo *pWInfo){
           if( sqlite3WhereTrace & 0x80000 ){
             SrcItem *pDim = aFromTabs + pWLoop->iTab;
             sqlite3DebugPrintf(
-              "Increase SCAN cost of %s to %d\n",
-              pDim->zAlias ? pDim->zAlias: pDim->pSTab->zName, mxRun
+              "Increase SCAN cost of dimension %s(%d) of fact %s(%d) to %d\n",
+              pDim->zAlias ? pDim->zAlias: pDim->pSTab->zName, pWLoop->iTab,
+              pFactTab->zAlias ? pFactTab->zAlias : pFactTab->pSTab->zName,
+              iFromIdx, mxRun
             );
           }
           pWLoop->rStarDelta = mxRun - pWLoop->rRun;
@@ -174284,7 +173120,6 @@ static SQLITE_NOINLINE Bitmask whereOmitNoopJoin(
     for(pTerm=pWInfo->sWC.a; pTerm<pEnd; pTerm++){
       if( (pTerm->prereqAll & pLoop->maskSelf)!=0 ){
         pTerm->wtFlags |= TERM_CODED;
-        pTerm->prereqAll = 0;
       }
     }
     if( i!=pWInfo->nLevel-1 ){
@@ -175272,15 +174107,14 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
       }
 #endif /* SQLITE_DISABLE_SKIPAHEAD_DISTINCT */
     }
-    if( pTabList->a[pLevel->iFrom].fg.fromExists
-     && (i==pWInfo->nLevel-1
-           || pTabList->a[pWInfo->a[i+1].iFrom].fg.fromExists==0)
-    ){
-      /* This is an EXISTS-to-JOIN optimization which is either the
-      ** inner-most loop, or the inner-most of a group of nested
-      ** EXISTS-to-JOIN optimization loops.  If this loop sees a successful
-      ** row, it should break out of itself as well as other EXISTS-to-JOIN
-      ** loops in which is is directly nested. */
+    if( pTabList->a[pLevel->iFrom].fg.fromExists && i==pWInfo->nLevel-1 ){
+      /* If the EXISTS-to-JOIN optimization was applied, then the EXISTS
+      ** loop(s) will be the inner-most loops of the join. There might be
+      ** multiple EXISTS loops, but they will all be nested, and the join
+      ** order will not have been changed by the query planner.  If the
+      ** inner-most EXISTS loop sees a single successful row, it should
+      ** break out of *all* EXISTS loops.  But only the inner-most of the
+      ** nested EXISTS loops should do this breakout. */
       int nOuter = 0; /* Nr of outer EXISTS that this one is nested within */
       while( nOuter<i ){
         if( !pTabList->a[pLevel[-nOuter-1].iFrom].fg.fromExists ) break;
@@ -175288,11 +174122,7 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
       }
       testcase( nOuter>0 );
       sqlite3VdbeAddOp2(v, OP_Goto, 0, pLevel[-nOuter].addrBrk);
-      if( nOuter ){
-        VdbeComment((v, "EXISTS break %d..%d", i-nOuter, i));
-      }else{
-        VdbeComment((v, "EXISTS break %d", i));
-      }
+      VdbeComment((v, "EXISTS break"));
     }
     sqlite3VdbeResolveLabel(v, pLevel->addrCont);
     if( pLevel->op!=OP_Noop ){
@@ -176309,7 +175139,7 @@ SQLITE_PRIVATE void sqlite3WindowUpdate(
           pWin->eEnd = aUp[i].eEnd;
           pWin->eExclude = 0;
           if( pWin->eStart==TK_FOLLOWING ){
-            pWin->pStart = sqlite3ExprInt32(db, 1);
+            pWin->pStart = sqlite3Expr(db, TK_INTEGER, "1");
           }
           break;
         }
@@ -176654,7 +175484,9 @@ SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
     ** keep everything legal in this case.
     */
     if( pSublist==0 ){
-      pSublist = sqlite3ExprListAppend(pParse, 0, sqlite3ExprInt32(db, 0));
+      pSublist = sqlite3ExprListAppend(pParse, 0,
+        sqlite3Expr(db, TK_INTEGER, "0")
+      );
     }
 
     pSub = sqlite3SelectNew(
@@ -178878,23 +177710,8 @@ static void updateDeleteLimitError(
   ** sqlite3_realloc() that includes a call to sqlite3FaultSim() to facilitate
   ** testing.
   */
-  static void *parserStackRealloc(
-    void *pOld,               /* Prior allocation */
-    sqlite3_uint64 newSize,   /* Requested new alloation size */
-    Parse *pParse             /* Parsing context */
-  ){
-    void *p = sqlite3FaultSim(700) ? 0 : sqlite3_realloc(pOld, newSize);
-    if( p==0 ) sqlite3OomFault(pParse->db);
-    return p;
-  }
-  static void parserStackFree(void *pOld, Parse *pParse){
-    (void)pParse;
-    sqlite3_free(pOld);
-  }
-
-  /* Return an integer that is the maximum allowed stack size */
-  static int parserStackSizeLimit(Parse *pParse){
-    return pParse->db->aLimit[SQLITE_LIMIT_PARSER_DEPTH];
+  static void *parserStackRealloc(void *pOld, sqlite3_uint64 newSize){
+    return sqlite3FaultSim(700) ? 0 : sqlite3_realloc(pOld, newSize);
   }
 
 
@@ -178933,46 +177750,15 @@ static void updateDeleteLimitError(
   }
 
 
-  /* Create a TK_ISNULL or TK_NOTNULL expression, perhaps optimized to
-  ** to TK_TRUEFALSE, if possible */
-  static Expr *sqlite3PExprIsNull(
-    Parse *pParse,  /* Parsing context */
-    int op,         /* TK_ISNULL or TK_NOTNULL */
-    Expr *pLeft     /* Operand */
-  ){
-    Expr *p = pLeft;
-    assert( op==TK_ISNULL || op==TK_NOTNULL );
-    assert( pLeft!=0 );
-    while( p->op==TK_UPLUS || p->op==TK_UMINUS ){
-      p = p->pLeft;
-      assert( p!=0 );
-    }
-    switch( p->op ){
-      case TK_INTEGER:
-      case TK_STRING:
-      case TK_FLOAT:
-      case TK_BLOB:
-        sqlite3ExprDeferredDelete(pParse, pLeft);
-        return sqlite3ExprInt32(pParse->db, op==TK_NOTNULL);
-      default:
-        break;
-    }
-    return sqlite3PExpr(pParse, op, pLeft, 0);
-  }
-
-  /* Create a TK_IS or TK_ISNOT operator, perhaps optimized to
-  ** TK_ISNULL or TK_NOTNULL or TK_TRUEFALSE. */
-  static Expr *sqlite3PExprIs(
-    Parse *pParse,  /* Parsing context */
-    int op,         /* TK_IS or TK_ISNOT */
-    Expr *pLeft,    /* Left operand */
-    Expr *pRight    /* Right operand */
-  ){
-    if( pRight && pRight->op==TK_NULL ){
-      sqlite3ExprDeferredDelete(pParse, pRight);
-      return sqlite3PExprIsNull(pParse, op==TK_IS ? TK_ISNULL : TK_NOTNULL, pLeft);
+  /* A routine to convert a binary TK_IS or TK_ISNOT expression into a
+  ** unary TK_ISNULL or TK_NOTNULL expression. */
+  static void binaryToUnaryIfNull(Parse *pParse, Expr *pY, Expr *pA, int op){
+    sqlite3 *db = pParse->db;
+    if( pA && pY && pY->op==TK_NULL && !IN_RENAME_OBJECT ){
+      pA->op = (u8)op;
+      sqlite3ExprDelete(db, pA->pRight);
+      pA->pRight = 0;
     }
-    return sqlite3PExpr(pParse, op, pLeft, pRight);
   }
 
   /* Add a single new term to an ExprList that is used to store a
@@ -179255,72 +178041,63 @@ static void updateDeleteLimitError(
 #endif
 /************* Begin control #defines *****************************************/
 #define YYCODETYPE unsigned short int
-#define YYNOCODE 322
+#define YYNOCODE 323
 #define YYACTIONTYPE unsigned short int
 #define YYWILDCARD 102
 #define sqlite3ParserTOKENTYPE Token
 typedef union {
   int yyinit;
   sqlite3ParserTOKENTYPE yy0;
-  ExprList* yy14;
-  With* yy59;
-  Cte* yy67;
-  Upsert* yy122;
-  IdList* yy132;
-  int yy144;
-  const char* yy168;
-  SrcList* yy203;
-  Window* yy211;
-  OnOrUsing yy269;
-  struct TrigEvent yy286;
-  struct {int value; int mask;} yy383;
-  u32 yy391;
-  TriggerStep* yy427;
-  Expr* yy454;
-  u8 yy462;
-  struct FrameBound yy509;
-  Select* yy555;
+  u32 yy9;
+  struct TrigEvent yy28;
+  With* yy125;
+  IdList* yy204;
+  struct FrameBound yy205;
+  TriggerStep* yy319;
+  const char* yy342;
+  Cte* yy361;
+  ExprList* yy402;
+  Upsert* yy403;
+  OnOrUsing yy421;
+  u8 yy444;
+  struct {int value; int mask;} yy481;
+  Window* yy483;
+  int yy502;
+  SrcList* yy563;
+  Expr* yy590;
+  Select* yy637;
 } YYMINORTYPE;
 #ifndef YYSTACKDEPTH
-#define YYSTACKDEPTH 50
+#define YYSTACKDEPTH 100
 #endif
 #define sqlite3ParserARG_SDECL
 #define sqlite3ParserARG_PDECL
 #define sqlite3ParserARG_PARAM
 #define sqlite3ParserARG_FETCH
 #define sqlite3ParserARG_STORE
-#undef YYREALLOC
 #define YYREALLOC parserStackRealloc
-#undef YYFREE
-#define YYFREE parserStackFree
-#undef YYDYNSTACK
+#define YYFREE sqlite3_free
 #define YYDYNSTACK 1
-#undef YYSIZELIMIT
-#define YYSIZELIMIT parserStackSizeLimit
-#define sqlite3ParserCTX(P) ((P)->pParse)
 #define sqlite3ParserCTX_SDECL Parse *pParse;
 #define sqlite3ParserCTX_PDECL ,Parse *pParse
 #define sqlite3ParserCTX_PARAM ,pParse
 #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
-#undef YYERRORSYMBOL
-#undef YYERRSYMDT
-#undef YYFALLBACK
 #define YYFALLBACK 1
-#define YYNSTATE             600
-#define YYNRULE              412
-#define YYNRULE_WITH_ACTION  348
+#define YYNSTATE             583
+#define YYNRULE              409
+#define YYNRULE_WITH_ACTION  344
 #define YYNTOKEN             187
-#define YY_MAX_SHIFT         599
-#define YY_MIN_SHIFTREDUCE   867
-#define YY_MAX_SHIFTREDUCE   1278
-#define YY_ERROR_ACTION      1279
-#define YY_ACCEPT_ACTION     1280
-#define YY_NO_ACTION         1281
-#define YY_MIN_REDUCE        1282
-#define YY_MAX_REDUCE        1693
+#define YY_MAX_SHIFT         582
+#define YY_MIN_SHIFTREDUCE   845
+#define YY_MAX_SHIFTREDUCE   1253
+#define YY_ERROR_ACTION      1254
+#define YY_ACCEPT_ACTION     1255
+#define YY_NO_ACTION         1256
+#define YY_MIN_REDUCE        1257
+#define YY_MAX_REDUCE        1665
 #define YY_MIN_DSTRCTR       206
-#define YY_MAX_DSTRCTR       319
+#define YY_MAX_DSTRCTR       320
 /************* End control #defines *******************************************/
 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
 
@@ -179403,680 +178180,643 @@ typedef union {
 **  yy_default[]       Default action for each state.
 **
 *********** Begin parsing tables **********************************************/
-#define YY_ACTTAB_COUNT (2379)
+#define YY_ACTTAB_COUNT (2207)
 static const YYACTIONTYPE yy_action[] = {
- /*     0 */   134,  131,  238,  290,  290, 1353,  593, 1332,  478, 1606,
- /*    10 */   593, 1315,  593,    7,  593, 1353,  590,  593,  579,  424,
- /*    20 */  1566,  134,  131,  238, 1318,  541,  478,  477,  575,   84,
- /*    30 */    84, 1005,  303,   84,   84,   51,   51,   63,   63, 1006,
- /*    40 */    84,   84,  498,  141,  142,   93,  442, 1254, 1254, 1085,
- /*    50 */  1088, 1075, 1075,  139,  139,  140,  140,  140,  140,  424,
- /*    60 */   296,  296,  498,  296,  296,  567,  553,  296,  296, 1306,
- /*    70 */   574, 1358, 1358,  590,  542,  579,  590,  574,  579,  548,
- /*    80 */   590, 1304,  579,  141,  142,   93,  576, 1254, 1254, 1085,
- /*    90 */  1088, 1075, 1075,  139,  139,  140,  140,  140,  140,  399,
- /*   100 */   478,  395,    6,  138,  138,  138,  138,  137,  137,  136,
- /*   110 */   136,  136,  135,  132,  463,   44,  342,  593,  305, 1127,
- /*   120 */  1280,    1,    1,  599,    2, 1284,  598, 1200, 1284, 1200,
- /*   130 */   330,  424,  158,  330, 1613,  158,  390,  116,  308, 1366,
- /*   140 */    51,   51, 1366,  138,  138,  138,  138,  137,  137,  136,
- /*   150 */   136,  136,  135,  132,  463,  141,  142,   93,  515, 1254,
- /*   160 */  1254, 1085, 1088, 1075, 1075,  139,  139,  140,  140,  140,
- /*   170 */   140, 1230,  329,  584,  296,  296,  212,  296,  296,  568,
- /*   180 */   568,  488,  143, 1072, 1072, 1086, 1089,  590, 1195,  579,
- /*   190 */   590,  340,  579,  140,  140,  140,  140,  133,  392,  564,
- /*   200 */   536, 1195,  250,  425, 1195,  250,  137,  137,  136,  136,
- /*   210 */   136,  135,  132,  463,  291,  138,  138,  138,  138,  137,
- /*   220 */   137,  136,  136,  136,  135,  132,  463,  966, 1230, 1231,
- /*   230 */  1230,  412,  965,  467,  412,  424,  467,  489,  357, 1611,
- /*   240 */   391,  138,  138,  138,  138,  137,  137,  136,  136,  136,
- /*   250 */   135,  132,  463,  463,  134,  131,  238,  555, 1076,  141,
- /*   260 */   142,   93,  593, 1254, 1254, 1085, 1088, 1075, 1075,  139,
- /*   270 */   139,  140,  140,  140,  140, 1317,  134,  131,  238,  424,
- /*   280 */   549, 1597, 1531,  333,   97,   83,   83,  140,  140,  140,
- /*   290 */   140,  138,  138,  138,  138,  137,  137,  136,  136,  136,
- /*   300 */   135,  132,  463,  141,  142,   93, 1657, 1254, 1254, 1085,
- /*   310 */  1088, 1075, 1075,  139,  139,  140,  140,  140,  140,  138,
- /*   320 */   138,  138,  138,  137,  137,  136,  136,  136,  135,  132,
- /*   330 */   463,  591, 1230,  958,  958,  138,  138,  138,  138,  137,
- /*   340 */   137,  136,  136,  136,  135,  132,  463,   44,  398,  547,
- /*   350 */  1306,  136,  136,  136,  135,  132,  463,  386,  593,  442,
- /*   360 */   595,  145,  595,  138,  138,  138,  138,  137,  137,  136,
- /*   370 */   136,  136,  135,  132,  463,  500, 1230,  112,  550,  460,
- /*   380 */   459,   51,   51,  424,  296,  296,  479,  334, 1259, 1230,
- /*   390 */  1231, 1230, 1599, 1261,  388,  312,  444,  590,  246,  579,
- /*   400 */   546, 1260,  271,  235,  329,  584,  551,  141,  142,   93,
- /*   410 */   429, 1254, 1254, 1085, 1088, 1075, 1075,  139,  139,  140,
- /*   420 */   140,  140,  140,   22,   22, 1230, 1262,  424, 1262,  216,
- /*   430 */   296,  296,   98, 1230, 1231, 1230,  264,  884,   45,  528,
- /*   440 */   525,  524, 1041,  590, 1269,  579,  421,  420,  393,  523,
- /*   450 */    44,  141,  142,   93,  498, 1254, 1254, 1085, 1088, 1075,
- /*   460 */  1075,  139,  139,  140,  140,  140,  140,  138,  138,  138,
- /*   470 */   138,  137,  137,  136,  136,  136,  135,  132,  463,  593,
- /*   480 */  1611,  561, 1230, 1231, 1230,   23,  264,  515,  200,  528,
- /*   490 */   525,  524,  127,  585,  509,    4,  355,  487,  506,  523,
- /*   500 */   593,  498,   84,   84,  134,  131,  238,  329,  584,  588,
- /*   510 */  1627,  138,  138,  138,  138,  137,  137,  136,  136,  136,
- /*   520 */   135,  132,  463,   19,   19,  435, 1230, 1460,  297,  297,
- /*   530 */   311,  424, 1565,  464, 1631,  599,    2, 1284,  437,  574,
- /*   540 */  1107,  590,  330,  579,  158,  582,  489,  357,  573,  593,
- /*   550 */   592, 1366,  409, 1274, 1230,  141,  142,   93, 1364, 1254,
- /*   560 */  1254, 1085, 1088, 1075, 1075,  139,  139,  140,  140,  140,
- /*   570 */   140,  389,   84,   84, 1062,  567, 1230,  313, 1523,  593,
- /*   580 */   125,  125,  970, 1230, 1231, 1230,  296,  296,  126,   46,
- /*   590 */   464,  594,  464,  296,  296, 1050, 1230,  218,  439,  590,
- /*   600 */  1604,  579,   84,   84,    7,  403,  590,  515,  579,  325,
- /*   610 */   417, 1230, 1231, 1230,  250,  138,  138,  138,  138,  137,
- /*   620 */   137,  136,  136,  136,  135,  132,  463, 1050, 1050, 1052,
- /*   630 */  1053,   35, 1275, 1230, 1231, 1230,  424, 1370,  993,  574,
- /*   640 */   371,  414,  274,  412, 1597,  467, 1302,  552,  451,  590,
- /*   650 */   543,  579, 1530, 1230, 1231, 1230, 1214,  201,  409, 1174,
- /*   660 */   141,  142,   93,  223, 1254, 1254, 1085, 1088, 1075, 1075,
- /*   670 */   139,  139,  140,  140,  140,  140,  296,  296, 1250,  593,
- /*   680 */   424,  296,  296,  236,  529,  296,  296,  515,  100,  590,
- /*   690 */  1600,  579,   48, 1605,  590, 1230,  579,    7,  590,  577,
- /*   700 */   579,  904,   84,   84,  141,  142,   93,  496, 1254, 1254,
- /*   710 */  1085, 1088, 1075, 1075,  139,  139,  140,  140,  140,  140,
- /*   720 */   138,  138,  138,  138,  137,  137,  136,  136,  136,  135,
- /*   730 */   132,  463, 1365, 1230,  296,  296, 1250,  115, 1275,  326,
- /*   740 */   233,  539, 1062,   40,  282,  127,  585,  590,    4,  579,
- /*   750 */   329,  584, 1230, 1231, 1230, 1598,  593,  388,  904, 1051,
- /*   760 */  1356, 1356,  588, 1050,  138,  138,  138,  138,  137,  137,
- /*   770 */   136,  136,  136,  135,  132,  463,  185,  593, 1230,   19,
- /*   780 */    19, 1230,  971, 1597,  424, 1651,  464,  129,  908, 1195,
- /*   790 */  1230, 1231, 1230, 1325,  443, 1050, 1050, 1052,  582, 1603,
- /*   800 */   149,  149, 1195,    7,    5, 1195, 1687,  410,  141,  142,
- /*   810 */    93, 1536, 1254, 1254, 1085, 1088, 1075, 1075,  139,  139,
- /*   820 */   140,  140,  140,  140, 1214,  397,  593, 1062,  424, 1536,
- /*   830 */  1538,   50,  901,  125,  125, 1230, 1231, 1230, 1230, 1231,
- /*   840 */  1230,  126, 1230,  464,  594,  464,  515, 1230, 1050,   84,
- /*   850 */    84,    3,  141,  142,   93,  924, 1254, 1254, 1085, 1088,
- /*   860 */  1075, 1075,  139,  139,  140,  140,  140,  140,  138,  138,
- /*   870 */   138,  138,  137,  137,  136,  136,  136,  135,  132,  463,
- /*   880 */  1050, 1050, 1052, 1053,   35,  442,  457,  532,  433, 1230,
- /*   890 */  1062, 1361,  540,  540, 1598,  925,  388,    7, 1129, 1230,
- /*   900 */  1231, 1230, 1129, 1536, 1230, 1231, 1230, 1051,  570, 1214,
- /*   910 */   593, 1050,  138,  138,  138,  138,  137,  137,  136,  136,
- /*   920 */   136,  135,  132,  463,    6,  185, 1195, 1230,  231,  593,
- /*   930 */   382,  992,  424,  151,  151,  510, 1213,  557,  482, 1195,
- /*   940 */   381,  160, 1195, 1050, 1050, 1052, 1230, 1231, 1230,  422,
- /*   950 */   593,  447,   84,   84,  593,  217,  141,  142,   93,  593,
- /*   960 */  1254, 1254, 1085, 1088, 1075, 1075,  139,  139,  140,  140,
- /*   970 */   140,  140, 1214,   19,   19,  593,  424,   19,   19,  442,
- /*   980 */  1063,  442,   19,   19, 1230, 1231, 1230,  515,  445,  458,
- /*   990 */  1597,  386,  315, 1175, 1685,  556, 1685,  450,   84,   84,
- /*  1000 */   141,  142,   93,  505, 1254, 1254, 1085, 1088, 1075, 1075,
- /*  1010 */   139,  139,  140,  140,  140,  140,  138,  138,  138,  138,
- /*  1020 */   137,  137,  136,  136,  136,  135,  132,  463,  442, 1147,
- /*  1030 */   454, 1597,  362, 1041,  593,  462, 1460, 1233,   47, 1393,
- /*  1040 */   324,  565,  565,  115, 1148,  449,    7,  460,  459,  307,
- /*  1050 */   375,  354,  593,  113,  593,  329,  584,   19,   19, 1149,
- /*  1060 */   138,  138,  138,  138,  137,  137,  136,  136,  136,  135,
- /*  1070 */   132,  463,  209, 1173,  563,   19,   19,   19,   19,   49,
- /*  1080 */   424,  944, 1175, 1686, 1046, 1686,  218,  355,  484,  343,
- /*  1090 */   210,  945,  569,  562, 1262, 1233, 1262,  490,  314,  423,
- /*  1100 */   424, 1598, 1206,  388,  141,  142,   93,  440, 1254, 1254,
- /*  1110 */  1085, 1088, 1075, 1075,  139,  139,  140,  140,  140,  140,
- /*  1120 */   352,  316,  531,  316,  141,  142,   93,  549, 1254, 1254,
- /*  1130 */  1085, 1088, 1075, 1075,  139,  139,  140,  140,  140,  140,
- /*  1140 */   446,   10, 1598,  274,  388,  915,  281,  299,  383,  534,
- /*  1150 */   378,  533,  269,  593, 1206,  587,  587,  587,  374,  293,
- /*  1160 */  1579,  991, 1173,  302,  138,  138,  138,  138,  137,  137,
- /*  1170 */   136,  136,  136,  135,  132,  463,   53,   53,  520, 1250,
- /*  1180 */   593, 1147, 1576,  431,  138,  138,  138,  138,  137,  137,
- /*  1190 */   136,  136,  136,  135,  132,  463, 1148,  301,  593, 1577,
- /*  1200 */   593, 1307,  431,   54,   54,  593,  268,  593,  461,  461,
- /*  1210 */   461, 1149,  347,  492,  424,  135,  132,  463, 1146, 1195,
- /*  1220 */   474,   68,   68,   69,   69,  550,  332,  287,   21,   21,
- /*  1230 */    55,   55, 1195,  581,  424, 1195,  309, 1250,  141,  142,
- /*  1240 */    93,  119, 1254, 1254, 1085, 1088, 1075, 1075,  139,  139,
- /*  1250 */   140,  140,  140,  140,  593,  237,  480, 1476,  141,  142,
- /*  1260 */    93,  593, 1254, 1254, 1085, 1088, 1075, 1075,  139,  139,
- /*  1270 */   140,  140,  140,  140,  344,  430,  346,   70,   70,  494,
- /*  1280 */   991, 1132, 1132,  512,   56,   56, 1269,  593,  268,  593,
- /*  1290 */   369,  374,  593,  481,  215,  384, 1624,  481,  138,  138,
- /*  1300 */   138,  138,  137,  137,  136,  136,  136,  135,  132,  463,
- /*  1310 */    71,   71,   72,   72,  225,   73,   73,  593,  138,  138,
- /*  1320 */   138,  138,  137,  137,  136,  136,  136,  135,  132,  463,
- /*  1330 */   586,  431,  593,  872,  873,  874,  593,  911,  593, 1602,
- /*  1340 */    74,   74,  593,    7, 1460,  242,  593,  306,  424, 1578,
- /*  1350 */   472,  306,  364,  219,  367,   75,   75,  430,  345,   57,
- /*  1360 */    57,   58,   58,  432,  187,   59,   59,  593,  424,   61,
- /*  1370 */    61, 1475,  141,  142,   93,  123, 1254, 1254, 1085, 1088,
- /*  1380 */  1075, 1075,  139,  139,  140,  140,  140,  140,  424,  570,
- /*  1390 */    62,   62,  141,  142,   93,  911, 1254, 1254, 1085, 1088,
- /*  1400 */  1075, 1075,  139,  139,  140,  140,  140,  140,  161,  384,
- /*  1410 */  1624, 1474,  141,  130,   93,  441, 1254, 1254, 1085, 1088,
- /*  1420 */  1075, 1075,  139,  139,  140,  140,  140,  140,  267,  266,
- /*  1430 */   265, 1460,  138,  138,  138,  138,  137,  137,  136,  136,
- /*  1440 */   136,  135,  132,  463,  593, 1336,  593, 1269, 1460,  384,
- /*  1450 */  1624,  231,  138,  138,  138,  138,  137,  137,  136,  136,
- /*  1460 */   136,  135,  132,  463,  593,  163,  593,   76,   76,   77,
- /*  1470 */    77,  593,  138,  138,  138,  138,  137,  137,  136,  136,
- /*  1480 */   136,  135,  132,  463,  475,  593,  483,   78,   78,   20,
- /*  1490 */    20, 1249,  424,  491,   79,   79,  495,  422,  295,  235,
- /*  1500 */  1574,   38,  511,  896,  422,  335,  240,  422,  147,  147,
- /*  1510 */   112,  593,  424,  593,  101,  222,  991,  142,   93,  455,
- /*  1520 */  1254, 1254, 1085, 1088, 1075, 1075,  139,  139,  140,  140,
- /*  1530 */   140,  140,  593,   39,  148,  148,   80,   80,   93,  551,
- /*  1540 */  1254, 1254, 1085, 1088, 1075, 1075,  139,  139,  140,  140,
- /*  1550 */   140,  140,  328,  923,  922,   64,   64,  502, 1656, 1005,
- /*  1560 */   933,  896,  124,  422,  121,  254,  593, 1006,  593,  226,
- /*  1570 */   593,  127,  585,  164,    4,   16,  138,  138,  138,  138,
- /*  1580 */   137,  137,  136,  136,  136,  135,  132,  463,  588,   81,
- /*  1590 */    81,   65,   65,   82,   82,  593,  138,  138,  138,  138,
- /*  1600 */   137,  137,  136,  136,  136,  135,  132,  463,  593,  226,
- /*  1610 */   237,  966,  464,  593,  298,  593,  965,  593,   66,   66,
- /*  1620 */   593, 1170,  593,  411,  582,  353,  469,  115,  593,  471,
- /*  1630 */   169,  173,  173,  593,   44,  991,  174,  174,   89,   89,
- /*  1640 */    67,   67,  593,   85,   85,  150,  150, 1114, 1043,  593,
- /*  1650 */   273,   86,   86, 1062,  593,  503,  171,  171,  593,  125,
- /*  1660 */   125,  497,  593,  273,  336,  152,  152,  126, 1335,  464,
- /*  1670 */   594,  464,  146,  146, 1050,  593,  545,  172,  172,  593,
- /*  1680 */  1054,  165,  165,  256,  339,  156,  156,  127,  585, 1586,
- /*  1690 */     4,  329,  584,  499,  358,  273,  115,  348,  155,  155,
- /*  1700 */   930,  931,  153,  153,  588, 1114, 1050, 1050, 1052, 1053,
- /*  1710 */    35, 1554,  521,  593,  270, 1008, 1009,    9,  593,  372,
- /*  1720 */   593,  115,  593,  168,  593,  115,  593, 1110,  464,  270,
- /*  1730 */   996,  964,  273,  129, 1645, 1214,  154,  154, 1054, 1404,
- /*  1740 */   582,   88,   88,   90,   90,   87,   87,   52,   52,   60,
- /*  1750 */    60, 1405,  504,  537,  559, 1179,  961,  507,  129,  558,
- /*  1760 */   127,  585, 1126,    4, 1126, 1125,  894, 1125,  162, 1062,
- /*  1770 */   963,  359,  129, 1401,  363,  125,  125,  588,  366,  368,
- /*  1780 */   370, 1349, 1334,  126, 1333,  464,  594,  464,  377,  387,
- /*  1790 */  1050, 1391, 1414, 1618, 1459, 1387, 1399,  208,  580, 1464,
- /*  1800 */  1314,  464,  243,  516, 1305, 1293, 1384, 1292, 1294, 1638,
- /*  1810 */   288,  170,  228,  582,   12,  408,  321,  322,  241,  323,
- /*  1820 */   245, 1446, 1050, 1050, 1052, 1053,   35,  559,  304,  350,
- /*  1830 */   351,  501,  560,  127,  585, 1441,    4, 1451, 1434,  310,
- /*  1840 */  1450,  526, 1062, 1332,  415,  380,  232, 1527,  125,  125,
- /*  1850 */   588, 1214, 1396,  356, 1526,  583,  126, 1397,  464,  594,
- /*  1860 */   464, 1641,  535, 1050, 1581, 1395, 1269, 1583, 1582,  213,
- /*  1870 */   402,  277,  214,  227,  464, 1573,  239, 1571, 1266, 1394,
- /*  1880 */   434,  198,  100,  224,   96,  183,  582,  191,  485,  193,
- /*  1890 */   486,  194,  195,  196,  519, 1050, 1050, 1052, 1053,   35,
- /*  1900 */   559,  113,  252,  413, 1447,  558,  493,   13, 1455,  416,
- /*  1910 */  1453, 1452,   14,  202, 1521, 1062, 1532,  508,  258,  106,
- /*  1920 */   514,  125,  125,   99, 1214, 1543,  289,  260,  206,  126,
- /*  1930 */   365,  464,  594,  464,  361,  517, 1050,  261,  448, 1295,
- /*  1940 */   262,  418, 1352, 1351,  108, 1350, 1655, 1654, 1343,  915,
- /*  1950 */   419, 1322,  233,  452,  319,  379, 1321,  453, 1623,  320,
- /*  1960 */  1320,  275, 1653,  544,  276, 1609, 1608, 1342, 1050, 1050,
- /*  1970 */  1052, 1053,   35, 1630, 1218,  466,  385,  456,  300, 1419,
- /*  1980 */   144, 1418,  570,  407,  407,  406,  284,  404,   11, 1508,
- /*  1990 */   881,  396,  120,  127,  585,  394,    4, 1214,  327,  114,
- /*  2000 */  1375, 1374,  220,  247,  400,  338,  401,  554,   42, 1224,
- /*  2010 */   588,  596,  283,  337,  285,  286,  188,  597, 1290, 1285,
- /*  2020 */   175, 1558,  176, 1559, 1557, 1556,  159,  317,  229,  177,
- /*  2030 */   868,  230,   91,  465,  464,  221,  331,  468, 1165,  470,
- /*  2040 */   473,   94,  244,   95,  249,  189,  582, 1124, 1122,  341,
- /*  2050 */   427,  190,  178, 1249,  179,   43,  192,  947,  349,  428,
- /*  2060 */  1138,  197,  251,  180,  181,  436,  102,  182,  438,  103,
- /*  2070 */   104,  199,  248, 1140,  253, 1062,  105,  255, 1137,  166,
- /*  2080 */    24,  125,  125,  257, 1264,  273,  360,  513,  259,  126,
- /*  2090 */    15,  464,  594,  464,  204,  883, 1050,  518,  263,  373,
- /*  2100 */   381,   92,  585, 1130,    4,  203,  205,  426,  107,  522,
- /*  2110 */    25,   26,  329,  584,  913,  572,  527,  376,  588,  926,
- /*  2120 */   530,  109,  184,  318,  167,  110,   27,  538, 1050, 1050,
- /*  2130 */  1052, 1053,   35, 1211, 1091,   17,  476,  111, 1181,  234,
- /*  2140 */   292, 1180,  464,  294,  207,  994,  129, 1201,  272, 1000,
- /*  2150 */    28, 1197,   29,   30,  582, 1199, 1205, 1214,   31, 1204,
- /*  2160 */    32, 1186,   41,  566,   33, 1105,  211,    8,  115, 1092,
- /*  2170 */  1090, 1094,   34,  278,  578, 1095,  117,  122,  118, 1145,
- /*  2180 */    36,   18,  128, 1062, 1055,  895,  957,   37,  589,  125,
- /*  2190 */   125,  279,  186,  280, 1646,  157,  405,  126, 1220,  464,
- /*  2200 */   594,  464, 1218,  466, 1050, 1219,  300, 1281, 1281, 1281,
- /*  2210 */  1281,  407,  407,  406,  284,  404, 1281, 1281,  881, 1281,
- /*  2220 */   300, 1281, 1281,  571, 1281,  407,  407,  406,  284,  404,
- /*  2230 */  1281,  247,  881,  338, 1281, 1281, 1050, 1050, 1052, 1053,
- /*  2240 */    35,  337, 1281, 1281, 1281,  247, 1281,  338, 1281, 1281,
- /*  2250 */  1281, 1281, 1281, 1281, 1281,  337, 1281, 1281, 1281, 1281,
- /*  2260 */  1281, 1281, 1281, 1281, 1281, 1214, 1281, 1281, 1281, 1281,
- /*  2270 */  1281, 1281,  249, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
- /*  2280 */   178, 1281, 1281,   43, 1281, 1281,  249, 1281, 1281, 1281,
- /*  2290 */  1281, 1281, 1281, 1281,  178, 1281, 1281,   43, 1281, 1281,
- /*  2300 */   248, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
- /*  2310 */  1281, 1281, 1281, 1281,  248, 1281, 1281, 1281, 1281, 1281,
- /*  2320 */  1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
- /*  2330 */  1281, 1281, 1281, 1281, 1281,  426, 1281, 1281, 1281, 1281,
- /*  2340 */   329,  584, 1281, 1281, 1281, 1281, 1281, 1281, 1281,  426,
- /*  2350 */  1281, 1281, 1281, 1281,  329,  584, 1281, 1281, 1281, 1281,
- /*  2360 */  1281, 1281, 1281, 1281,  476, 1281, 1281, 1281, 1281, 1281,
- /*  2370 */  1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,  476,
+ /*     0 */   130,  127,  234,  282,  282, 1328,  576, 1307,  460,  289,
+ /*    10 */   289,  576, 1622,  381,  576, 1328,  573,  576,  562,  413,
+ /*    20 */  1300, 1542,  573,  481,  562,  524,  460,  459,  558,   82,
+ /*    30 */    82,  983,  294,  375,   51,   51,  498,   61,   61,  984,
+ /*    40 */    82,   82, 1577,  137,  138,   91,    7, 1228, 1228, 1063,
+ /*    50 */  1066, 1053, 1053,  135,  135,  136,  136,  136,  136,  413,
+ /*    60 */   288,  288,  182,  288,  288,  481,  536,  288,  288,  130,
+ /*    70 */   127,  234,  432,  573,  525,  562,  573,  557,  562, 1290,
+ /*    80 */   573,  421,  562,  137,  138,   91,  559, 1228, 1228, 1063,
+ /*    90 */  1066, 1053, 1053,  135,  135,  136,  136,  136,  136,  296,
+ /*   100 */   460,  398, 1249,  134,  134,  134,  134,  133,  133,  132,
+ /*   110 */   132,  132,  131,  128,  451,  451, 1050, 1050, 1064, 1067,
+ /*   120 */  1255,    1,    1,  582,    2, 1259,  581, 1174, 1259, 1174,
+ /*   130 */   321,  413,  155,  321, 1584,  155,  379,  112,  481, 1341,
+ /*   140 */   456,  299, 1341,  134,  134,  134,  134,  133,  133,  132,
+ /*   150 */   132,  132,  131,  128,  451,  137,  138,   91,  498, 1228,
+ /*   160 */  1228, 1063, 1066, 1053, 1053,  135,  135,  136,  136,  136,
+ /*   170 */   136, 1204,  862, 1281,  288,  288,  283,  288,  288,  523,
+ /*   180 */   523, 1250,  139,  578,    7,  578, 1345,  573, 1169,  562,
+ /*   190 */   573, 1054,  562,  136,  136,  136,  136,  129,  573,  547,
+ /*   200 */   562, 1169,  245, 1541, 1169,  245,  133,  133,  132,  132,
+ /*   210 */   132,  131,  128,  451,  302,  134,  134,  134,  134,  133,
+ /*   220 */   133,  132,  132,  132,  131,  128,  451, 1575, 1204, 1205,
+ /*   230 */  1204,    7,  470,  550,  455,  413,  550,  455,  130,  127,
+ /*   240 */   234,  134,  134,  134,  134,  133,  133,  132,  132,  132,
+ /*   250 */   131,  128,  451,  136,  136,  136,  136,  538,  483,  137,
+ /*   260 */   138,   91, 1019, 1228, 1228, 1063, 1066, 1053, 1053,  135,
+ /*   270 */   135,  136,  136,  136,  136, 1085,  576, 1204,  132,  132,
+ /*   280 */   132,  131,  128,  451,   93,  214,  134,  134,  134,  134,
+ /*   290 */   133,  133,  132,  132,  132,  131,  128,  451,  401,   19,
+ /*   300 */    19,  134,  134,  134,  134,  133,  133,  132,  132,  132,
+ /*   310 */   131,  128,  451, 1498,  426,  267,  344,  467,  332,  134,
+ /*   320 */   134,  134,  134,  133,  133,  132,  132,  132,  131,  128,
+ /*   330 */   451, 1281,  576,    6, 1204, 1205, 1204,  257,  576,  413,
+ /*   340 */   511,  508,  507, 1279,   94, 1019,  464, 1204,  551,  551,
+ /*   350 */   506, 1224, 1571,   44,   38,   51,   51,  411,  576,  413,
+ /*   360 */    45,   51,   51,  137,  138,   91,  530, 1228, 1228, 1063,
+ /*   370 */  1066, 1053, 1053,  135,  135,  136,  136,  136,  136,  398,
+ /*   380 */  1148,   82,   82,  137,  138,   91,   39, 1228, 1228, 1063,
+ /*   390 */  1066, 1053, 1053,  135,  135,  136,  136,  136,  136,  344,
+ /*   400 */    44,  288,  288,  375, 1204, 1205, 1204,  209, 1204, 1224,
+ /*   410 */   320,  567,  471,  576,  573,  576,  562,  576,  316,  264,
+ /*   420 */   231,   46,  160,  134,  134,  134,  134,  133,  133,  132,
+ /*   430 */   132,  132,  131,  128,  451,  303,   82,   82,   82,   82,
+ /*   440 */    82,   82,  442,  134,  134,  134,  134,  133,  133,  132,
+ /*   450 */   132,  132,  131,  128,  451, 1582,  544,  320,  567, 1250,
+ /*   460 */   874, 1582,  380,  382,  413, 1204, 1205, 1204,  360,  182,
+ /*   470 */   288,  288, 1576,  557, 1339,  557,    7,  557, 1277,  472,
+ /*   480 */   346,  526,  531,  573,  556,  562,  439, 1511,  137,  138,
+ /*   490 */    91,  219, 1228, 1228, 1063, 1066, 1053, 1053,  135,  135,
+ /*   500 */   136,  136,  136,  136,  465, 1511, 1513,  532,  413,  288,
+ /*   510 */   288,  423,  512,  288,  288,  411,  288,  288,  874,  130,
+ /*   520 */   127,  234,  573, 1107,  562, 1204,  573, 1107,  562,  573,
+ /*   530 */   560,  562,  137,  138,   91, 1293, 1228, 1228, 1063, 1066,
+ /*   540 */  1053, 1053,  135,  135,  136,  136,  136,  136,  134,  134,
+ /*   550 */   134,  134,  133,  133,  132,  132,  132,  131,  128,  451,
+ /*   560 */   493,  503, 1292, 1204,  257,  288,  288,  511,  508,  507,
+ /*   570 */  1204, 1628, 1169,  123,  568,  275,    4,  506,  573, 1511,
+ /*   580 */   562,  331, 1204, 1205, 1204, 1169,  548,  548, 1169,  261,
+ /*   590 */   571,    7,  134,  134,  134,  134,  133,  133,  132,  132,
+ /*   600 */   132,  131,  128,  451,  108,  533,  130,  127,  234, 1204,
+ /*   610 */   448,  447,  413, 1451,  452,  983,  886,   96, 1598, 1233,
+ /*   620 */  1204, 1205, 1204,  984, 1235, 1450,  565, 1204, 1205, 1204,
+ /*   630 */   229,  522, 1234,  534, 1333, 1333,  137,  138,   91, 1449,
+ /*   640 */  1228, 1228, 1063, 1066, 1053, 1053,  135,  135,  136,  136,
+ /*   650 */   136,  136,  373, 1595,  971, 1040,  413, 1236,  418, 1236,
+ /*   660 */   879,  121,  121,  948,  373, 1595, 1204, 1205, 1204,  122,
+ /*   670 */  1204,  452,  577,  452,  363,  417, 1028,  882,  373, 1595,
+ /*   680 */   137,  138,   91,  462, 1228, 1228, 1063, 1066, 1053, 1053,
+ /*   690 */   135,  135,  136,  136,  136,  136,  134,  134,  134,  134,
+ /*   700 */   133,  133,  132,  132,  132,  131,  128,  451, 1028, 1028,
+ /*   710 */  1030, 1031,   35,  570,  570,  570,  197,  423, 1040,  198,
+ /*   720 */  1204,  123,  568, 1204,    4,  320,  567, 1204, 1205, 1204,
+ /*   730 */    40,  388,  576,  384,  882, 1029,  423, 1188,  571, 1028,
+ /*   740 */   134,  134,  134,  134,  133,  133,  132,  132,  132,  131,
+ /*   750 */   128,  451,  529, 1568, 1204,   19,   19, 1204,  575,  492,
+ /*   760 */   413,  157,  452,  489, 1187, 1331, 1331,    5, 1204,  949,
+ /*   770 */   431, 1028, 1028, 1030,  565,   22,   22, 1204, 1205, 1204,
+ /*   780 */  1204, 1205, 1204,  477,  137,  138,   91,  212, 1228, 1228,
+ /*   790 */  1063, 1066, 1053, 1053,  135,  135,  136,  136,  136,  136,
+ /*   800 */  1188,   48,  111, 1040,  413, 1204,  213,  970, 1041,  121,
+ /*   810 */   121, 1204, 1205, 1204, 1204, 1205, 1204,  122,  221,  452,
+ /*   820 */   577,  452,   44,  487, 1028, 1204, 1205, 1204,  137,  138,
+ /*   830 */    91,  378, 1228, 1228, 1063, 1066, 1053, 1053,  135,  135,
+ /*   840 */   136,  136,  136,  136,  134,  134,  134,  134,  133,  133,
+ /*   850 */   132,  132,  132,  131,  128,  451, 1028, 1028, 1030, 1031,
+ /*   860 */    35,  461, 1204, 1205, 1204, 1569, 1040,  377,  214, 1149,
+ /*   870 */  1657,  535, 1657,  437,  902,  320,  567, 1568,  364,  320,
+ /*   880 */   567,  412,  329, 1029,  519, 1188,    3, 1028,  134,  134,
+ /*   890 */   134,  134,  133,  133,  132,  132,  132,  131,  128,  451,
+ /*   900 */  1659,  399, 1169,  307,  893,  307,  515,  576,  413,  214,
+ /*   910 */   498,  944, 1024,  540,  903, 1169,  943,  392, 1169, 1028,
+ /*   920 */  1028, 1030,  406,  298, 1204,   50, 1149, 1658,  413, 1658,
+ /*   930 */   145,  145,  137,  138,   91,  293, 1228, 1228, 1063, 1066,
+ /*   940 */  1053, 1053,  135,  135,  136,  136,  136,  136, 1188, 1147,
+ /*   950 */   514, 1568,  137,  138,   91, 1505, 1228, 1228, 1063, 1066,
+ /*   960 */  1053, 1053,  135,  135,  136,  136,  136,  136,  434,  323,
+ /*   970 */   435,  539,  111, 1506,  274,  291,  372,  517,  367,  516,
+ /*   980 */   262, 1204, 1205, 1204, 1574,  481,  363,  576,    7, 1569,
+ /*   990 */  1568,  377,  134,  134,  134,  134,  133,  133,  132,  132,
+ /*  1000 */   132,  131,  128,  451, 1568,  576, 1147,  576,  232,  576,
+ /*  1010 */    19,   19,  134,  134,  134,  134,  133,  133,  132,  132,
+ /*  1020 */   132,  131,  128,  451, 1169,  433,  576, 1207,   19,   19,
+ /*  1030 */    19,   19,   19,   19, 1627,  576,  911, 1169,   47,  120,
+ /*  1040 */  1169,  117,  413,  306,  498,  438, 1125,  206,  336,   19,
+ /*  1050 */    19, 1435,   49,  449,  449,  449, 1368,  315,   81,   81,
+ /*  1060 */   576,  304,  413, 1570,  207,  377,  137,  138,   91,  115,
+ /*  1070 */  1228, 1228, 1063, 1066, 1053, 1053,  135,  135,  136,  136,
+ /*  1080 */   136,  136,  576,   82,   82, 1207,  137,  138,   91, 1340,
+ /*  1090 */  1228, 1228, 1063, 1066, 1053, 1053,  135,  135,  136,  136,
+ /*  1100 */   136,  136, 1569,  386,  377,   82,   82,  463, 1126, 1552,
+ /*  1110 */   333,  463,  335,  131,  128,  451, 1569,  161,  377,   16,
+ /*  1120 */   317,  387,  428, 1127,  448,  447,  134,  134,  134,  134,
+ /*  1130 */   133,  133,  132,  132,  132,  131,  128,  451, 1128,  576,
+ /*  1140 */  1105,   10,  445,  267,  576, 1554,  134,  134,  134,  134,
+ /*  1150 */   133,  133,  132,  132,  132,  131,  128,  451,  532,  576,
+ /*  1160 */   922,  576,   19,   19,  576, 1573,  576,  147,  147,    7,
+ /*  1170 */   923, 1236,  498, 1236,  576,  487,  413,  552,  285, 1224,
+ /*  1180 */   969,  215,   82,   82,   66,   66, 1435,   67,   67,   21,
+ /*  1190 */    21, 1110, 1110,  495,  334,  297,  413,   53,   53,  297,
+ /*  1200 */   137,  138,   91,  119, 1228, 1228, 1063, 1066, 1053, 1053,
+ /*  1210 */   135,  135,  136,  136,  136,  136,  413, 1336, 1311,  446,
+ /*  1220 */   137,  138,   91,  227, 1228, 1228, 1063, 1066, 1053, 1053,
+ /*  1230 */   135,  135,  136,  136,  136,  136,  574, 1224,  936,  936,
+ /*  1240 */   137,  126,   91,  141, 1228, 1228, 1063, 1066, 1053, 1053,
+ /*  1250 */   135,  135,  136,  136,  136,  136,  533,  429,  472,  346,
+ /*  1260 */   134,  134,  134,  134,  133,  133,  132,  132,  132,  131,
+ /*  1270 */   128,  451,  576,  457,  233,  343, 1435,  403,  498, 1550,
+ /*  1280 */   134,  134,  134,  134,  133,  133,  132,  132,  132,  131,
+ /*  1290 */   128,  451,  576,  324,  576,   82,   82,  487,  576,  969,
+ /*  1300 */   134,  134,  134,  134,  133,  133,  132,  132,  132,  131,
+ /*  1310 */   128,  451,  288,  288,  546,   68,   68,   54,   54,  553,
+ /*  1320 */   413,   69,   69,  351,    6,  573,  944,  562,  410,  409,
+ /*  1330 */  1435,  943,  450,  545,  260,  259,  258,  576,  158,  576,
+ /*  1340 */   413,  222, 1180,  479,  969,  138,   91,  430, 1228, 1228,
+ /*  1350 */  1063, 1066, 1053, 1053,  135,  135,  136,  136,  136,  136,
+ /*  1360 */    70,   70,   71,   71,  576, 1126,   91,  576, 1228, 1228,
+ /*  1370 */  1063, 1066, 1053, 1053,  135,  135,  136,  136,  136,  136,
+ /*  1380 */  1127,  166,  850,  851,  852, 1282,  419,   72,   72,  108,
+ /*  1390 */    73,   73, 1310,  358, 1180, 1128,  576,  305,  576,  123,
+ /*  1400 */   568,  494,    4,  488,  134,  134,  134,  134,  133,  133,
+ /*  1410 */   132,  132,  132,  131,  128,  451,  571,  564,  534,   55,
+ /*  1420 */    55,   56,   56,  576,  134,  134,  134,  134,  133,  133,
+ /*  1430 */   132,  132,  132,  131,  128,  451,  576, 1104,  233, 1104,
+ /*  1440 */   452, 1602,  582,    2, 1259,  576,   57,   57,  576,  321,
+ /*  1450 */   576,  155,  565, 1435,  485,  353,  576,  356, 1341,   59,
+ /*  1460 */    59,  576,   44,  969,  569,  419,  576,  238,   60,   60,
+ /*  1470 */   261,   74,   74,   75,   75,  287,  231,  576, 1366,   76,
+ /*  1480 */    76, 1040,  420,  184,   20,   20,  576,  121,  121,   77,
+ /*  1490 */    77,   97,  218,  288,  288,  122,  125,  452,  577,  452,
+ /*  1500 */   143,  143, 1028,  576,  520,  576,  573,  576,  562,  144,
+ /*  1510 */   144,  474,  227, 1244,  478,  123,  568,  576,    4,  320,
+ /*  1520 */   567,  245,  411,  576,  443,  411,   78,   78,   62,   62,
+ /*  1530 */    79,   79,  571,  319, 1028, 1028, 1030, 1031,   35,  418,
+ /*  1540 */    63,   63,  576,  290,  411,    9,   80,   80, 1144,  576,
+ /*  1550 */   400,  576,  486,  455,  576, 1223,  452,  576,  325,  342,
+ /*  1560 */   576,  111,  576, 1188,  242,   64,   64,  473,  565,  576,
+ /*  1570 */    23,  576,  170,  170,  171,  171,  576,   87,   87,  328,
+ /*  1580 */    65,   65,  542,   83,   83,  146,  146,  541,  123,  568,
+ /*  1590 */   341,    4,   84,   84,  168,  168,  576, 1040,  576,  148,
+ /*  1600 */   148,  576, 1380,  121,  121,  571, 1021,  576,  266,  576,
+ /*  1610 */   424,  122,  576,  452,  577,  452,  576,  553, 1028,  142,
+ /*  1620 */   142,  169,  169,  576,  162,  162,  528,  889,  371,  452,
+ /*  1630 */   152,  152,  151,  151, 1379,  149,  149,  109,  370,  150,
+ /*  1640 */   150,  565,  576,  480,  576,  266,   86,   86,  576, 1092,
+ /*  1650 */  1028, 1028, 1030, 1031,   35,  542,  482,  576,  266,  466,
+ /*  1660 */   543,  123,  568, 1616,    4,   88,   88,   85,   85,  475,
+ /*  1670 */  1040,   52,   52,  222,  901,  900,  121,  121,  571, 1188,
+ /*  1680 */    58,   58,  244, 1032,  122,  889,  452,  577,  452,  908,
+ /*  1690 */   909, 1028,  300,  347,  504,  111,  263,  361,  165,  111,
+ /*  1700 */   111, 1088,  452,  263,  974, 1153,  266, 1092,  986,  987,
+ /*  1710 */   942,  939,  125,  125,  565, 1103,  872, 1103,  159,  941,
+ /*  1720 */  1309,  125, 1557, 1028, 1028, 1030, 1031,   35,  542,  337,
+ /*  1730 */  1530,  205, 1529,  541,  499, 1589,  490,  348, 1376,  352,
+ /*  1740 */   355, 1032,  357, 1040,  359, 1324, 1308,  366,  563,  121,
+ /*  1750 */   121,  376, 1188, 1389, 1434, 1362,  280,  122, 1374,  452,
+ /*  1760 */   577,  452,  167, 1439, 1028, 1289, 1280, 1268, 1267, 1269,
+ /*  1770 */  1609, 1359,  312,  313,  314,  397,   12,  237,  224, 1421,
+ /*  1780 */   295, 1416, 1409, 1426,  339,  484,  340,  509, 1371, 1612,
+ /*  1790 */  1372, 1425, 1244,  404,  301,  228, 1028, 1028, 1030, 1031,
+ /*  1800 */    35, 1601, 1192,  454,  345, 1307,  292,  369, 1502, 1501,
+ /*  1810 */   270,  396,  396,  395,  277,  393, 1370, 1369,  859, 1549,
+ /*  1820 */   186,  123,  568,  235,    4, 1188,  391,  210,  211,  223,
+ /*  1830 */  1547,  239, 1241,  327,  422,   96,  220,  195,  571,  180,
+ /*  1840 */   188,  326,  468,  469,  190,  191,  502,  192,  193,  566,
+ /*  1850 */   247,  109, 1430,  491,  199,  251,  102,  281,  402,  476,
+ /*  1860 */   405, 1496,  452,  497,  253, 1422,   13, 1428,   14, 1427,
+ /*  1870 */   203, 1507,  241,  500,  565,  354,  407,   92,   95, 1270,
+ /*  1880 */   175,  254,  518,   43, 1327,  255, 1326, 1325,  436, 1518,
+ /*  1890 */   350, 1318,  104,  229,  893, 1626,  440,  441, 1625,  408,
+ /*  1900 */   240, 1296,  268, 1040,  310,  269, 1297,  527,  444,  121,
+ /*  1910 */   121,  368, 1295, 1594, 1624,  311, 1394,  122, 1317,  452,
+ /*  1920 */   577,  452,  374, 1580, 1028, 1393,  140,  553,   11,   90,
+ /*  1930 */   568,  385,    4,  116,  318,  414, 1579,  110, 1483,  537,
+ /*  1940 */   320,  567, 1350,  555,   42,  579,  571, 1349, 1198,  383,
+ /*  1950 */   276,  390,  216,  389,  278,  279, 1028, 1028, 1030, 1031,
+ /*  1960 */    35,  172,  580, 1265,  458, 1260,  415,  416,  185,  156,
+ /*  1970 */   452, 1534, 1535,  173, 1533, 1532,   89,  308,  225,  226,
+ /*  1980 */   846,  174,  565,  453,  217, 1188,  322,  236, 1102,  154,
+ /*  1990 */  1100,  330,  187,  176, 1223,  243,  189,  925,  338,  246,
+ /*  2000 */  1116,  194,  177,  425,  178,  427,   98,  196,   99,  100,
+ /*  2010 */   101, 1040,  179, 1119, 1115,  248,  249,  121,  121,  163,
+ /*  2020 */    24,  250,  349, 1238,  496,  122, 1108,  452,  577,  452,
+ /*  2030 */  1192,  454, 1028,  266,  292,  200,  252,  201,  861,  396,
+ /*  2040 */   396,  395,  277,  393,   15,  501,  859,  370,  292,  256,
+ /*  2050 */   202,  554,  505,  396,  396,  395,  277,  393,  103,  239,
+ /*  2060 */   859,  327,   25,   26, 1028, 1028, 1030, 1031,   35,  326,
+ /*  2070 */   362,  510,  891,  239,  365,  327,  513,  904,  105,  309,
+ /*  2080 */   164,  181,   27,  326,  106,  521,  107, 1185, 1069, 1155,
+ /*  2090 */    17, 1154,  230, 1188,  284,  286,  265,  204,  125, 1171,
+ /*  2100 */   241,   28,  978,  972,   29,   41, 1175, 1179,  175, 1173,
+ /*  2110 */    30,   43,   31,    8,  241, 1178,   32, 1160,  208,  549,
+ /*  2120 */    33,  111,  175, 1083, 1070,   43, 1068, 1072,  240,  113,
+ /*  2130 */   114,   34,  561,  118, 1124,  271, 1073,   36,   18,  572,
+ /*  2140 */  1033,  873,  240,  124,   37,  935,  272,  273, 1617,  183,
+ /*  2150 */   153,  394, 1194, 1193, 1256, 1256, 1256, 1256, 1256, 1256,
+ /*  2160 */  1256, 1256, 1256,  414, 1256, 1256, 1256, 1256,  320,  567,
+ /*  2170 */  1256, 1256, 1256, 1256, 1256, 1256, 1256,  414, 1256, 1256,
+ /*  2180 */  1256, 1256,  320,  567, 1256, 1256, 1256, 1256, 1256, 1256,
+ /*  2190 */  1256, 1256,  458, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
+ /*  2200 */  1256, 1256, 1256, 1256, 1256, 1256,  458,
 };
 static const YYCODETYPE yy_lookahead[] = {
- /*     0 */   277,  278,  279,  241,  242,  225,  195,  227,  195,  312,
- /*    10 */   195,  218,  195,  316,  195,  235,  254,  195,  256,   19,
- /*    20 */   297,  277,  278,  279,  218,  206,  213,  214,  206,  218,
- /*    30 */   219,   31,  206,  218,  219,  218,  219,  218,  219,   39,
- /*    40 */   218,  219,  195,   43,   44,   45,  195,   47,   48,   49,
+ /*     0 */   277,  278,  279,  241,  242,  225,  195,  227,  195,  241,
+ /*    10 */   242,  195,  217,  221,  195,  235,  254,  195,  256,   19,
+ /*    20 */   225,  298,  254,  195,  256,  206,  213,  214,  206,  218,
+ /*    30 */   219,   31,  206,  195,  218,  219,  195,  218,  219,   39,
+ /*    40 */   218,  219,  313,   43,   44,   45,  317,   47,   48,   49,
  /*    50 */    50,   51,   52,   53,   54,   55,   56,   57,   58,   19,
- /*    60 */   241,  242,  195,  241,  242,  195,  255,  241,  242,  195,
- /*    70 */   255,  237,  238,  254,  255,  256,  254,  255,  256,  264,
- /*    80 */   254,  207,  256,   43,   44,   45,  264,   47,   48,   49,
- /*    90 */    50,   51,   52,   53,   54,   55,   56,   57,   58,  251,
- /*   100 */   287,  253,  215,  103,  104,  105,  106,  107,  108,  109,
- /*   110 */   110,  111,  112,  113,  114,   82,  265,  195,  271,   11,
+ /*    60 */   241,  242,  195,  241,  242,  195,  255,  241,  242,  277,
+ /*    70 */   278,  279,  234,  254,  255,  256,  254,  255,  256,  218,
+ /*    80 */   254,  240,  256,   43,   44,   45,  264,   47,   48,   49,
+ /*    90 */    50,   51,   52,   53,   54,   55,   56,   57,   58,  271,
+ /*   100 */   287,   22,   23,  103,  104,  105,  106,  107,  108,  109,
+ /*   110 */   110,  111,  112,  113,  114,  114,   47,   48,   49,   50,
  /*   120 */   187,  188,  189,  190,  191,  192,  190,   87,  192,   89,
- /*   130 */   197,   19,  199,  197,  317,  199,  319,   25,  271,  206,
- /*   140 */   218,  219,  206,  103,  104,  105,  106,  107,  108,  109,
+ /*   130 */   197,   19,  199,  197,  318,  199,  320,   25,  195,  206,
+ /*   140 */   299,  271,  206,  103,  104,  105,  106,  107,  108,  109,
  /*   150 */   110,  111,  112,  113,  114,   43,   44,   45,  195,   47,
  /*   160 */    48,   49,   50,   51,   52,   53,   54,   55,   56,   57,
- /*   170 */    58,   60,  139,  140,  241,  242,  289,  241,  242,  309,
- /*   180 */   310,  294,   70,   47,   48,   49,   50,  254,   77,  256,
- /*   190 */   254,  195,  256,   55,   56,   57,   58,   59,  221,   88,
- /*   200 */   109,   90,  269,  240,   93,  269,  107,  108,  109,  110,
- /*   210 */   111,  112,  113,  114,  215,  103,  104,  105,  106,  107,
- /*   220 */   108,  109,  110,  111,  112,  113,  114,  136,  117,  118,
- /*   230 */   119,  298,  141,  300,  298,   19,  300,  129,  130,  317,
- /*   240 */   318,  103,  104,  105,  106,  107,  108,  109,  110,  111,
- /*   250 */   112,  113,  114,  114,  277,  278,  279,  146,  122,   43,
- /*   260 */    44,   45,  195,   47,   48,   49,   50,   51,   52,   53,
- /*   270 */    54,   55,   56,   57,   58,  218,  277,  278,  279,   19,
- /*   280 */    19,  195,  286,   23,   68,  218,  219,   55,   56,   57,
- /*   290 */    58,  103,  104,  105,  106,  107,  108,  109,  110,  111,
- /*   300 */   112,  113,  114,   43,   44,   45,  232,   47,   48,   49,
- /*   310 */    50,   51,   52,   53,   54,   55,   56,   57,   58,  103,
+ /*   170 */    58,   60,   21,  195,  241,  242,  215,  241,  242,  312,
+ /*   180 */   313,  102,   70,  205,  317,  207,  242,  254,   77,  256,
+ /*   190 */   254,  122,  256,   55,   56,   57,   58,   59,  254,   88,
+ /*   200 */   256,   90,  269,  240,   93,  269,  107,  108,  109,  110,
+ /*   210 */   111,  112,  113,  114,  271,  103,  104,  105,  106,  107,
+ /*   220 */   108,  109,  110,  111,  112,  113,  114,  313,  117,  118,
+ /*   230 */   119,  317,   81,  195,  301,   19,  195,  301,  277,  278,
+ /*   240 */   279,  103,  104,  105,  106,  107,  108,  109,  110,  111,
+ /*   250 */   112,  113,  114,   55,   56,   57,   58,  146,  195,   43,
+ /*   260 */    44,   45,   74,   47,   48,   49,   50,   51,   52,   53,
+ /*   270 */    54,   55,   56,   57,   58,  124,  195,   60,  109,  110,
+ /*   280 */   111,  112,  113,  114,   68,  195,  103,  104,  105,  106,
+ /*   290 */   107,  108,  109,  110,  111,  112,  113,  114,  208,  218,
+ /*   300 */   219,  103,  104,  105,  106,  107,  108,  109,  110,  111,
+ /*   310 */   112,  113,  114,  162,  233,   24,  128,  129,  130,  103,
  /*   320 */   104,  105,  106,  107,  108,  109,  110,  111,  112,  113,
- /*   330 */   114,  135,   60,  137,  138,  103,  104,  105,  106,  107,
- /*   340 */   108,  109,  110,  111,  112,  113,  114,   82,  281,  206,
- /*   350 */   195,  109,  110,  111,  112,  113,  114,  195,  195,  195,
- /*   360 */   205,   22,  207,  103,  104,  105,  106,  107,  108,  109,
- /*   370 */   110,  111,  112,  113,  114,  195,   60,  116,  117,  107,
- /*   380 */   108,  218,  219,   19,  241,  242,  121,   23,  116,  117,
- /*   390 */   118,  119,  306,  121,  308,  206,  234,  254,   15,  256,
- /*   400 */   195,  129,  259,  260,  139,  140,  145,   43,   44,   45,
- /*   410 */   200,   47,   48,   49,   50,   51,   52,   53,   54,   55,
- /*   420 */    56,   57,   58,  218,  219,   60,  154,   19,  156,  265,
- /*   430 */   241,  242,   24,  117,  118,  119,  120,   21,   73,  123,
- /*   440 */   124,  125,   74,  254,   61,  256,  107,  108,  221,  133,
- /*   450 */    82,   43,   44,   45,  195,   47,   48,   49,   50,   51,
- /*   460 */    52,   53,   54,   55,   56,   57,   58,  103,  104,  105,
- /*   470 */   106,  107,  108,  109,  110,  111,  112,  113,  114,  195,
- /*   480 */   317,  318,  117,  118,  119,   22,  120,  195,   22,  123,
- /*   490 */   124,  125,   19,   20,  284,   22,  128,   81,  288,  133,
- /*   500 */   195,  195,  218,  219,  277,  278,  279,  139,  140,   36,
- /*   510 */   195,  103,  104,  105,  106,  107,  108,  109,  110,  111,
- /*   520 */   112,  113,  114,  218,  219,   62,   60,  195,  241,  242,
- /*   530 */   271,   19,  240,   60,  189,  190,  191,  192,  233,  255,
- /*   540 */   124,  254,  197,  256,  199,   72,  129,  130,  264,  195,
- /*   550 */   195,  206,   22,   23,   60,   43,   44,   45,  206,   47,
- /*   560 */    48,   49,   50,   51,   52,   53,   54,   55,   56,   57,
- /*   570 */    58,  195,  218,  219,  101,  195,   60,  271,  162,  195,
- /*   580 */   107,  108,  109,  117,  118,  119,  241,  242,  115,   73,
- /*   590 */   117,  118,  119,  241,  242,  122,   60,  195,  266,  254,
- /*   600 */   312,  256,  218,  219,  316,  203,  254,  195,  256,  255,
- /*   610 */   208,  117,  118,  119,  269,  103,  104,  105,  106,  107,
- /*   620 */   108,  109,  110,  111,  112,  113,  114,  154,  155,  156,
- /*   630 */   157,  158,  102,  117,  118,  119,   19,  242,  144,  255,
- /*   640 */    23,  206,   24,  298,  195,  300,  206,  195,  264,  254,
- /*   650 */   206,  256,  240,  117,  118,  119,  183,   22,   22,   23,
- /*   660 */    43,   44,   45,  151,   47,   48,   49,   50,   51,   52,
- /*   670 */    53,   54,   55,   56,   57,   58,  241,  242,   60,  195,
- /*   680 */    19,  241,  242,  195,   23,  241,  242,  195,  152,  254,
- /*   690 */   310,  256,  243,  312,  254,   60,  256,  316,  254,  206,
- /*   700 */   256,   60,  218,  219,   43,   44,   45,  272,   47,   48,
- /*   710 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
- /*   720 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
- /*   730 */   113,  114,  240,   60,  241,  242,  118,   25,  102,  255,
- /*   740 */   166,  167,  101,   22,   26,   19,   20,  254,   22,  256,
- /*   750 */   139,  140,  117,  118,  119,  306,  195,  308,  117,  118,
- /*   760 */   237,  238,   36,  122,  103,  104,  105,  106,  107,  108,
- /*   770 */   109,  110,  111,  112,  113,  114,  195,  195,   60,  218,
- /*   780 */   219,   60,  109,  195,   19,  217,   60,   25,   23,   77,
- /*   790 */   117,  118,  119,  225,  233,  154,  155,  156,   72,  312,
- /*   800 */   218,  219,   90,  316,   22,   93,  303,  304,   43,   44,
- /*   810 */    45,  195,   47,   48,   49,   50,   51,   52,   53,   54,
- /*   820 */    55,   56,   57,   58,  183,  195,  195,  101,   19,  213,
- /*   830 */   214,  243,   23,  107,  108,  117,  118,  119,  117,  118,
- /*   840 */   119,  115,   60,  117,  118,  119,  195,   60,  122,  218,
- /*   850 */   219,   22,   43,   44,   45,   35,   47,   48,   49,   50,
- /*   860 */    51,   52,   53,   54,   55,   56,   57,   58,  103,  104,
- /*   870 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
- /*   880 */   154,  155,  156,  157,  158,  195,  255,   67,  195,   60,
- /*   890 */   101,  240,  311,  312,  306,   75,  308,  316,   29,  117,
- /*   900 */   118,  119,   33,  287,  117,  118,  119,  118,  146,  183,
- /*   910 */   195,  122,  103,  104,  105,  106,  107,  108,  109,  110,
- /*   920 */   111,  112,  113,  114,  215,  195,   77,   60,   25,  195,
- /*   930 */   122,  144,   19,  218,  219,   66,   23,   88,  246,   90,
- /*   940 */   132,   25,   93,  154,  155,  156,  117,  118,  119,  257,
- /*   950 */   195,  131,  218,  219,  195,  265,   43,   44,   45,  195,
- /*   960 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
- /*   970 */    57,   58,  183,  218,  219,  195,   19,  218,  219,  195,
- /*   980 */    23,  195,  218,  219,  117,  118,  119,  195,  233,  255,
- /*   990 */   195,  195,  233,   22,   23,  146,   25,  233,  218,  219,
- /*  1000 */    43,   44,   45,  294,   47,   48,   49,   50,   51,   52,
- /*  1010 */    53,   54,   55,   56,   57,   58,  103,  104,  105,  106,
- /*  1020 */   107,  108,  109,  110,  111,  112,  113,  114,  195,   12,
- /*  1030 */   234,  195,  240,   74,  195,  255,  195,   60,  243,  262,
- /*  1040 */   263,  311,  312,   25,   27,   19,  316,  107,  108,  265,
- /*  1050 */    24,  265,  195,  150,  195,  139,  140,  218,  219,   42,
- /*  1060 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
- /*  1070 */   113,  114,  233,  102,   67,  218,  219,  218,  219,  243,
- /*  1080 */    19,   64,   22,   23,   23,   25,  195,  128,  129,  130,
- /*  1090 */   233,   74,  233,   86,  154,  118,  156,  130,  265,  208,
- /*  1100 */    19,  306,   95,  308,   43,   44,   45,  266,   47,   48,
- /*  1110 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
- /*  1120 */   153,  230,   96,  232,   43,   44,   45,   19,   47,   48,
- /*  1130 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
- /*  1140 */   114,   22,  306,   24,  308,  127,  120,  121,  122,  123,
- /*  1150 */   124,  125,  126,  195,  147,  212,  213,  214,  132,   23,
- /*  1160 */   195,   25,  102,  100,  103,  104,  105,  106,  107,  108,
- /*  1170 */   109,  110,  111,  112,  113,  114,  218,  219,   19,   60,
- /*  1180 */   195,   12,  210,  211,  103,  104,  105,  106,  107,  108,
- /*  1190 */   109,  110,  111,  112,  113,  114,   27,  134,  195,  195,
- /*  1200 */   195,  210,  211,  218,  219,  195,   47,  195,  212,  213,
- /*  1210 */   214,   42,   16,  130,   19,  112,  113,  114,   23,   77,
- /*  1220 */   195,  218,  219,  218,  219,  117,  163,  164,  218,  219,
- /*  1230 */   218,  219,   90,   64,   19,   93,  153,  118,   43,   44,
- /*  1240 */    45,  160,   47,   48,   49,   50,   51,   52,   53,   54,
- /*  1250 */    55,   56,   57,   58,  195,  119,  272,  276,   43,   44,
- /*  1260 */    45,  195,   47,   48,   49,   50,   51,   52,   53,   54,
- /*  1270 */    55,   56,   57,   58,   78,  116,   80,  218,  219,  116,
- /*  1280 */   144,  128,  129,  130,  218,  219,   61,  195,   47,  195,
- /*  1290 */    16,  132,  195,  263,  195,  314,  315,  267,  103,  104,
- /*  1300 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
- /*  1310 */   218,  219,  218,  219,  151,  218,  219,  195,  103,  104,
- /*  1320 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
- /*  1330 */   210,  211,  195,    7,    8,    9,  195,   60,  195,  312,
- /*  1340 */   218,  219,  195,  316,  195,  120,  195,  263,   19,  195,
- /*  1350 */   125,  267,   78,   24,   80,  218,  219,  116,  162,  218,
- /*  1360 */   219,  218,  219,  301,  302,  218,  219,  195,   19,  218,
- /*  1370 */   219,  276,   43,   44,   45,  160,   47,   48,   49,   50,
- /*  1380 */    51,   52,   53,   54,   55,   56,   57,   58,   19,  146,
- /*  1390 */   218,  219,   43,   44,   45,  118,   47,   48,   49,   50,
- /*  1400 */    51,   52,   53,   54,   55,   56,   57,   58,  165,  314,
- /*  1410 */   315,  276,   43,   44,   45,  266,   47,   48,   49,   50,
- /*  1420 */    51,   52,   53,   54,   55,   56,   57,   58,  128,  129,
- /*  1430 */   130,  195,  103,  104,  105,  106,  107,  108,  109,  110,
- /*  1440 */   111,  112,  113,  114,  195,  228,  195,   61,  195,  314,
- /*  1450 */   315,   25,  103,  104,  105,  106,  107,  108,  109,  110,
- /*  1460 */   111,  112,  113,  114,  195,   22,  195,  218,  219,  218,
- /*  1470 */   219,  195,  103,  104,  105,  106,  107,  108,  109,  110,
- /*  1480 */   111,  112,  113,  114,  195,  195,  246,  218,  219,  218,
- /*  1490 */   219,   25,   19,  246,  218,  219,  246,  257,  259,  260,
- /*  1500 */   195,   22,  266,   60,  257,  195,  120,  257,  218,  219,
- /*  1510 */   116,  195,   19,  195,  150,  151,   25,   44,   45,  266,
- /*  1520 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
- /*  1530 */    57,   58,  195,   54,  218,  219,  218,  219,   45,  145,
- /*  1540 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
- /*  1550 */    57,   58,  246,  121,  122,  218,  219,   19,   23,   31,
- /*  1560 */    25,  118,  159,  257,  161,   24,  195,   39,  195,  143,
- /*  1570 */   195,   19,   20,   22,   22,   24,  103,  104,  105,  106,
- /*  1580 */   107,  108,  109,  110,  111,  112,  113,  114,   36,  218,
- /*  1590 */   219,  218,  219,  218,  219,  195,  103,  104,  105,  106,
- /*  1600 */   107,  108,  109,  110,  111,  112,  113,  114,  195,  143,
- /*  1610 */   119,  136,   60,  195,   22,  195,  141,  195,  218,  219,
- /*  1620 */   195,   23,  195,   25,   72,   23,  131,   25,  195,  134,
- /*  1630 */    23,  218,  219,  195,   82,  144,  218,  219,  218,  219,
- /*  1640 */   218,  219,  195,  218,  219,  218,  219,   60,   23,  195,
- /*  1650 */    25,  218,  219,  101,  195,  117,  218,  219,  195,  107,
- /*  1660 */   108,   23,  195,   25,  195,  218,  219,  115,  228,  117,
- /*  1670 */   118,  119,  218,  219,  122,  195,   19,  218,  219,  195,
- /*  1680 */    60,  218,  219,  142,  195,  218,  219,   19,   20,  195,
- /*  1690 */    22,  139,  140,   23,   23,   25,   25,  195,  218,  219,
- /*  1700 */     7,    8,  218,  219,   36,  118,  154,  155,  156,  157,
- /*  1710 */   158,  195,   23,  195,   25,   84,   85,   49,  195,   23,
- /*  1720 */   195,   25,  195,   23,  195,   25,  195,   23,   60,   25,
- /*  1730 */    23,   23,   25,   25,  142,  183,  218,  219,  118,  195,
- /*  1740 */    72,  218,  219,  218,  219,  218,  219,  218,  219,  218,
- /*  1750 */   219,  195,  195,  146,   86,   98,   23,  195,   25,   91,
- /*  1760 */    19,   20,  154,   22,  156,  154,   23,  156,   25,  101,
- /*  1770 */    23,  195,   25,  195,  195,  107,  108,   36,  195,  195,
- /*  1780 */   195,  195,  228,  115,  195,  117,  118,  119,  195,  195,
- /*  1790 */   122,  261,  195,  321,  195,  195,  195,  258,  238,  195,
- /*  1800 */   195,   60,  299,  291,  195,  195,  258,  195,  195,  195,
- /*  1810 */   290,  244,  216,   72,  245,  193,  258,  258,  299,  258,
- /*  1820 */   299,  274,  154,  155,  156,  157,  158,   86,  247,  295,
- /*  1830 */   248,  295,   91,   19,   20,  270,   22,  274,  270,  248,
- /*  1840 */   274,  222,  101,  227,  274,  221,  231,  221,  107,  108,
- /*  1850 */    36,  183,  262,  247,  221,  283,  115,  262,  117,  118,
- /*  1860 */   119,  198,  116,  122,  220,  262,   61,  220,  220,  251,
- /*  1870 */   247,  142,  251,  245,   60,  202,  299,  202,   38,  262,
- /*  1880 */   202,   22,  152,  151,  296,   43,   72,  236,   18,  239,
- /*  1890 */   202,  239,  239,  239,   18,  154,  155,  156,  157,  158,
- /*  1900 */    86,  150,  201,  248,  275,   91,  248,  273,  236,  248,
- /*  1910 */   275,  275,  273,  236,  248,  101,  286,  202,  201,  159,
- /*  1920 */    63,  107,  108,  296,  183,  293,  202,  201,   22,  115,
- /*  1930 */   202,  117,  118,  119,  292,  223,  122,  201,   65,  202,
- /*  1940 */   201,  223,  220,  220,   22,  220,  226,  226,  229,  127,
- /*  1950 */   223,  220,  166,   24,  285,  220,  222,  114,  315,  285,
- /*  1960 */   220,  202,  220,  307,   92,  320,  320,  229,  154,  155,
- /*  1970 */   156,  157,  158,    0,    1,    2,  223,   83,    5,  268,
- /*  1980 */   149,  268,  146,   10,   11,   12,   13,   14,   22,  280,
- /*  1990 */    17,  202,  159,   19,   20,  251,   22,  183,  282,  148,
- /*  2000 */   252,  252,  250,   30,  249,   32,  248,  147,   25,   13,
- /*  2010 */    36,  204,  196,   40,  196,    6,  302,  194,  194,  194,
- /*  2020 */   209,  215,  209,  215,  215,  215,  224,  224,  216,  209,
- /*  2030 */     4,  216,  215,    3,   60,   22,  122,   19,  122,   19,
- /*  2040 */   125,   22,   15,   22,   71,   16,   72,   23,   23,  140,
- /*  2050 */   305,  152,   79,   25,  131,   82,  143,   20,   16,  305,
- /*  2060 */     1,  143,  145,  131,  131,   62,   54,  131,   37,   54,
- /*  2070 */    54,  152,   99,  117,   34,  101,   54,   24,    1,    5,
- /*  2080 */    22,  107,  108,  116,   76,   25,  162,   41,  142,  115,
- /*  2090 */    24,  117,  118,  119,  116,   20,  122,   19,  126,   23,
- /*  2100 */   132,   19,   20,   69,   22,   69,   22,  134,   22,   68,
- /*  2110 */    22,   22,  139,  140,   60,  141,   68,   24,   36,   28,
- /*  2120 */    97,   22,   37,   68,   23,  150,   34,   22,  154,  155,
- /*  2130 */   156,  157,  158,   23,   23,   22,  163,   25,   23,  142,
- /*  2140 */    23,   98,   60,   23,   22,  144,   25,   76,   34,  117,
- /*  2150 */    34,   89,   34,   34,   72,   87,   76,  183,   34,   94,
- /*  2160 */    34,   23,   22,   24,   34,   23,   25,   44,   25,   23,
- /*  2170 */    23,   23,   22,   22,   25,   11,  143,   25,  143,   23,
- /*  2180 */    22,   22,   22,  101,   23,   23,  136,   22,   25,  107,
- /*  2190 */   108,  142,   25,  142,  142,   23,   15,  115,    1,  117,
- /*  2200 */   118,  119,    1,    2,  122,    1,    5,  322,  322,  322,
- /*  2210 */   322,   10,   11,   12,   13,   14,  322,  322,   17,  322,
- /*  2220 */     5,  322,  322,  141,  322,   10,   11,   12,   13,   14,
- /*  2230 */   322,   30,   17,   32,  322,  322,  154,  155,  156,  157,
- /*  2240 */   158,   40,  322,  322,  322,   30,  322,   32,  322,  322,
- /*  2250 */   322,  322,  322,  322,  322,   40,  322,  322,  322,  322,
- /*  2260 */   322,  322,  322,  322,  322,  183,  322,  322,  322,  322,
- /*  2270 */   322,  322,   71,  322,  322,  322,  322,  322,  322,  322,
- /*  2280 */    79,  322,  322,   82,  322,  322,   71,  322,  322,  322,
- /*  2290 */   322,  322,  322,  322,   79,  322,  322,   82,  322,  322,
- /*  2300 */    99,  322,  322,  322,  322,  322,  322,  322,  322,  322,
- /*  2310 */   322,  322,  322,  322,   99,  322,  322,  322,  322,  322,
- /*  2320 */   322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
- /*  2330 */   322,  322,  322,  322,  322,  134,  322,  322,  322,  322,
- /*  2340 */   139,  140,  322,  322,  322,  322,  322,  322,  322,  134,
- /*  2350 */   322,  322,  322,  322,  139,  140,  322,  322,  322,  322,
- /*  2360 */   322,  322,  322,  322,  163,  322,  322,  322,  322,  322,
- /*  2370 */   322,  322,  322,  322,  322,  322,  322,  322,  163,  322,
- /*  2380 */   322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
- /*  2390 */   322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
- /*  2400 */   322,  322,  322,  322,  322,  322,  322,  322,  187,  187,
- /*  2410 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2420 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2430 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2440 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2450 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2460 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2470 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2480 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2490 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2500 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2510 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2520 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2530 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2540 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2550 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
- /*  2560 */   187,  187,  187,  187,  187,  187,
+ /*   330 */   114,  195,  195,  215,  117,  118,  119,  120,  195,   19,
+ /*   340 */   123,  124,  125,  207,   24,   74,  246,   60,  310,  311,
+ /*   350 */   133,   60,  311,   82,   22,  218,  219,  257,  195,   19,
+ /*   360 */    73,  218,  219,   43,   44,   45,  206,   47,   48,   49,
+ /*   370 */    50,   51,   52,   53,   54,   55,   56,   57,   58,   22,
+ /*   380 */    23,  218,  219,   43,   44,   45,   54,   47,   48,   49,
+ /*   390 */    50,   51,   52,   53,   54,   55,   56,   57,   58,  128,
+ /*   400 */    82,  241,  242,  195,  117,  118,  119,  289,   60,  118,
+ /*   410 */   139,  140,  294,  195,  254,  195,  256,  195,  255,  259,
+ /*   420 */   260,   73,   22,  103,  104,  105,  106,  107,  108,  109,
+ /*   430 */   110,  111,  112,  113,  114,  206,  218,  219,  218,  219,
+ /*   440 */   218,  219,  234,  103,  104,  105,  106,  107,  108,  109,
+ /*   450 */   110,  111,  112,  113,  114,  318,  319,  139,  140,  102,
+ /*   460 */    60,  318,  319,  221,   19,  117,  118,  119,   23,  195,
+ /*   470 */   241,  242,  313,  255,  206,  255,  317,  255,  206,  129,
+ /*   480 */   130,  206,  264,  254,  264,  256,  264,  195,   43,   44,
+ /*   490 */    45,  151,   47,   48,   49,   50,   51,   52,   53,   54,
+ /*   500 */    55,   56,   57,   58,  246,  213,  214,   19,   19,  241,
+ /*   510 */   242,  195,   23,  241,  242,  257,  241,  242,  118,  277,
+ /*   520 */   278,  279,  254,   29,  256,   60,  254,   33,  256,  254,
+ /*   530 */   206,  256,   43,   44,   45,  218,   47,   48,   49,   50,
+ /*   540 */    51,   52,   53,   54,   55,   56,   57,   58,  103,  104,
+ /*   550 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
+ /*   560 */    66,   19,  218,   60,  120,  241,  242,  123,  124,  125,
+ /*   570 */    60,  232,   77,   19,   20,   26,   22,  133,  254,  287,
+ /*   580 */   256,  265,  117,  118,  119,   90,  312,  313,   93,   47,
+ /*   590 */    36,  317,  103,  104,  105,  106,  107,  108,  109,  110,
+ /*   600 */   111,  112,  113,  114,  116,  117,  277,  278,  279,   60,
+ /*   610 */   107,  108,   19,  276,   60,   31,   23,  152,  195,  116,
+ /*   620 */   117,  118,  119,   39,  121,  276,   72,  117,  118,  119,
+ /*   630 */   166,  167,  129,  145,  237,  238,   43,   44,   45,  276,
+ /*   640 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
+ /*   650 */    57,   58,  315,  316,  144,  101,   19,  154,  116,  156,
+ /*   660 */    23,  107,  108,  109,  315,  316,  117,  118,  119,  115,
+ /*   670 */    60,  117,  118,  119,  132,  200,  122,   60,  315,  316,
+ /*   680 */    43,   44,   45,  272,   47,   48,   49,   50,   51,   52,
+ /*   690 */    53,   54,   55,   56,   57,   58,  103,  104,  105,  106,
+ /*   700 */   107,  108,  109,  110,  111,  112,  113,  114,  154,  155,
+ /*   710 */   156,  157,  158,  212,  213,  214,   22,  195,  101,   22,
+ /*   720 */    60,   19,   20,   60,   22,  139,  140,  117,  118,  119,
+ /*   730 */    22,  251,  195,  253,  117,  118,  195,  183,   36,  122,
+ /*   740 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
+ /*   750 */   113,  114,  195,  195,   60,  218,  219,   60,  195,  284,
+ /*   760 */    19,   25,   60,  288,   23,  237,  238,   22,   60,  109,
+ /*   770 */   233,  154,  155,  156,   72,  218,  219,  117,  118,  119,
+ /*   780 */   117,  118,  119,  116,   43,   44,   45,  265,   47,   48,
+ /*   790 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
+ /*   800 */   183,  243,   25,  101,   19,   60,  265,  144,   23,  107,
+ /*   810 */   108,  117,  118,  119,  117,  118,  119,  115,  151,  117,
+ /*   820 */   118,  119,   82,  195,  122,  117,  118,  119,   43,   44,
+ /*   830 */    45,  195,   47,   48,   49,   50,   51,   52,   53,   54,
+ /*   840 */    55,   56,   57,   58,  103,  104,  105,  106,  107,  108,
+ /*   850 */   109,  110,  111,  112,  113,  114,  154,  155,  156,  157,
+ /*   860 */   158,  121,  117,  118,  119,  307,  101,  309,  195,   22,
+ /*   870 */    23,  195,   25,   19,   35,  139,  140,  195,   24,  139,
+ /*   880 */   140,  208,  195,  118,  109,  183,   22,  122,  103,  104,
+ /*   890 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
+ /*   900 */   304,  305,   77,  230,  127,  232,   67,  195,   19,  195,
+ /*   910 */   195,  136,   23,   88,   75,   90,  141,  203,   93,  154,
+ /*   920 */   155,  156,  208,  295,   60,  243,   22,   23,   19,   25,
+ /*   930 */   218,  219,   43,   44,   45,  100,   47,   48,   49,   50,
+ /*   940 */    51,   52,   53,   54,   55,   56,   57,   58,  183,  102,
+ /*   950 */    96,  195,   43,   44,   45,  240,   47,   48,   49,   50,
+ /*   960 */    51,   52,   53,   54,   55,   56,   57,   58,  114,  134,
+ /*   970 */   131,  146,   25,  286,  120,  121,  122,  123,  124,  125,
+ /*   980 */   126,  117,  118,  119,  313,  195,  132,  195,  317,  307,
+ /*   990 */   195,  309,  103,  104,  105,  106,  107,  108,  109,  110,
+ /*  1000 */   111,  112,  113,  114,  195,  195,  102,  195,  195,  195,
+ /*  1010 */   218,  219,  103,  104,  105,  106,  107,  108,  109,  110,
+ /*  1020 */   111,  112,  113,  114,   77,  233,  195,   60,  218,  219,
+ /*  1030 */   218,  219,  218,  219,   23,  195,   25,   90,  243,  159,
+ /*  1040 */    93,  161,   19,  233,  195,  233,   23,  233,   16,  218,
+ /*  1050 */   219,  195,  243,  212,  213,  214,  262,  263,  218,  219,
+ /*  1060 */   195,  271,   19,  307,  233,  309,   43,   44,   45,  160,
+ /*  1070 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
+ /*  1080 */    57,   58,  195,  218,  219,  118,   43,   44,   45,  240,
+ /*  1090 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
+ /*  1100 */    57,   58,  307,  195,  309,  218,  219,  263,   12,  195,
+ /*  1110 */    78,  267,   80,  112,  113,  114,  307,   22,  309,   24,
+ /*  1120 */   255,  281,  266,   27,  107,  108,  103,  104,  105,  106,
+ /*  1130 */   107,  108,  109,  110,  111,  112,  113,  114,   42,  195,
+ /*  1140 */    11,   22,  255,   24,  195,  195,  103,  104,  105,  106,
+ /*  1150 */   107,  108,  109,  110,  111,  112,  113,  114,   19,  195,
+ /*  1160 */    64,  195,  218,  219,  195,  313,  195,  218,  219,  317,
+ /*  1170 */    74,  154,  195,  156,  195,  195,   19,  233,   23,   60,
+ /*  1180 */    25,   24,  218,  219,  218,  219,  195,  218,  219,  218,
+ /*  1190 */   219,  128,  129,  130,  162,  263,   19,  218,  219,  267,
+ /*  1200 */    43,   44,   45,  160,   47,   48,   49,   50,   51,   52,
+ /*  1210 */    53,   54,   55,   56,   57,   58,   19,  240,  228,  255,
+ /*  1220 */    43,   44,   45,   25,   47,   48,   49,   50,   51,   52,
+ /*  1230 */    53,   54,   55,   56,   57,   58,  135,  118,  137,  138,
+ /*  1240 */    43,   44,   45,   22,   47,   48,   49,   50,   51,   52,
+ /*  1250 */    53,   54,   55,   56,   57,   58,  117,  266,  129,  130,
+ /*  1260 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
+ /*  1270 */   113,  114,  195,  195,  119,  295,  195,  206,  195,  195,
+ /*  1280 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
+ /*  1290 */   113,  114,  195,  195,  195,  218,  219,  195,  195,  144,
+ /*  1300 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
+ /*  1310 */   113,  114,  241,  242,   67,  218,  219,  218,  219,  146,
+ /*  1320 */    19,  218,  219,  240,  215,  254,  136,  256,  107,  108,
+ /*  1330 */   195,  141,  255,   86,  128,  129,  130,  195,  165,  195,
+ /*  1340 */    19,  143,   95,  272,   25,   44,   45,  266,   47,   48,
+ /*  1350 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
+ /*  1360 */   218,  219,  218,  219,  195,   12,   45,  195,   47,   48,
+ /*  1370 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
+ /*  1380 */    27,   23,    7,    8,    9,  210,  211,  218,  219,  116,
+ /*  1390 */   218,  219,  228,   16,  147,   42,  195,  295,  195,   19,
+ /*  1400 */    20,  266,   22,  294,  103,  104,  105,  106,  107,  108,
+ /*  1410 */   109,  110,  111,  112,  113,  114,   36,   64,  145,  218,
+ /*  1420 */   219,  218,  219,  195,  103,  104,  105,  106,  107,  108,
+ /*  1430 */   109,  110,  111,  112,  113,  114,  195,  154,  119,  156,
+ /*  1440 */    60,  189,  190,  191,  192,  195,  218,  219,  195,  197,
+ /*  1450 */   195,  199,   72,  195,   19,   78,  195,   80,  206,  218,
+ /*  1460 */   219,  195,   82,  144,  210,  211,  195,   15,  218,  219,
+ /*  1470 */    47,  218,  219,  218,  219,  259,  260,  195,  261,  218,
+ /*  1480 */   219,  101,  302,  303,  218,  219,  195,  107,  108,  218,
+ /*  1490 */   219,  150,  151,  241,  242,  115,   25,  117,  118,  119,
+ /*  1500 */   218,  219,  122,  195,  146,  195,  254,  195,  256,  218,
+ /*  1510 */   219,  246,   25,   61,  246,   19,   20,  195,   22,  139,
+ /*  1520 */   140,  269,  257,  195,  266,  257,  218,  219,  218,  219,
+ /*  1530 */   218,  219,   36,  246,  154,  155,  156,  157,  158,  116,
+ /*  1540 */   218,  219,  195,   22,  257,   49,  218,  219,   23,  195,
+ /*  1550 */    25,  195,  117,  301,  195,   25,   60,  195,  195,   23,
+ /*  1560 */   195,   25,  195,  183,   24,  218,  219,  130,   72,  195,
+ /*  1570 */    22,  195,  218,  219,  218,  219,  195,  218,  219,  195,
+ /*  1580 */   218,  219,   86,  218,  219,  218,  219,   91,   19,   20,
+ /*  1590 */   153,   22,  218,  219,  218,  219,  195,  101,  195,  218,
+ /*  1600 */   219,  195,  195,  107,  108,   36,   23,  195,   25,  195,
+ /*  1610 */    62,  115,  195,  117,  118,  119,  195,  146,  122,  218,
+ /*  1620 */   219,  218,  219,  195,  218,  219,   19,   60,  122,   60,
+ /*  1630 */   218,  219,  218,  219,  195,  218,  219,  150,  132,  218,
+ /*  1640 */   219,   72,  195,   23,  195,   25,  218,  219,  195,   60,
+ /*  1650 */   154,  155,  156,  157,  158,   86,   23,  195,   25,  195,
+ /*  1660 */    91,   19,   20,  142,   22,  218,  219,  218,  219,  130,
+ /*  1670 */   101,  218,  219,  143,  121,  122,  107,  108,   36,  183,
+ /*  1680 */   218,  219,  142,   60,  115,  118,  117,  118,  119,    7,
+ /*  1690 */     8,  122,  153,   23,   23,   25,   25,   23,   23,   25,
+ /*  1700 */    25,   23,   60,   25,   23,   98,   25,  118,   84,   85,
+ /*  1710 */    23,   23,   25,   25,   72,  154,   23,  156,   25,   23,
+ /*  1720 */   228,   25,  195,  154,  155,  156,  157,  158,   86,  195,
+ /*  1730 */   195,  258,  195,   91,  291,  322,  195,  195,  195,  195,
+ /*  1740 */   195,  118,  195,  101,  195,  195,  195,  195,  238,  107,
+ /*  1750 */   108,  195,  183,  195,  195,  195,  290,  115,  195,  117,
+ /*  1760 */   118,  119,  244,  195,  122,  195,  195,  195,  195,  195,
+ /*  1770 */   195,  258,  258,  258,  258,  193,  245,  300,  216,  274,
+ /*  1780 */   247,  270,  270,  274,  296,  296,  248,  222,  262,  198,
+ /*  1790 */   262,  274,   61,  274,  248,  231,  154,  155,  156,  157,
+ /*  1800 */   158,    0,    1,    2,  247,  227,    5,  221,  221,  221,
+ /*  1810 */   142,   10,   11,   12,   13,   14,  262,  262,   17,  202,
+ /*  1820 */   300,   19,   20,  300,   22,  183,  247,  251,  251,  245,
+ /*  1830 */   202,   30,   38,   32,  202,  152,  151,   22,   36,   43,
+ /*  1840 */   236,   40,   18,  202,  239,  239,   18,  239,  239,  283,
+ /*  1850 */   201,  150,  236,  202,  236,  201,  159,  202,  248,  248,
+ /*  1860 */   248,  248,   60,   63,  201,  275,  273,  275,  273,  275,
+ /*  1870 */    22,  286,   71,  223,   72,  202,  223,  297,  297,  202,
+ /*  1880 */    79,  201,  116,   82,  220,  201,  220,  220,   65,  293,
+ /*  1890 */   292,  229,   22,  166,  127,  226,   24,  114,  226,  223,
+ /*  1900 */    99,  222,  202,  101,  285,   92,  220,  308,   83,  107,
+ /*  1910 */   108,  220,  220,  316,  220,  285,  268,  115,  229,  117,
+ /*  1920 */   118,  119,  223,  321,  122,  268,  149,  146,   22,   19,
+ /*  1930 */    20,  202,   22,  159,  282,  134,  321,  148,  280,  147,
+ /*  1940 */   139,  140,  252,  141,   25,  204,   36,  252,   13,  251,
+ /*  1950 */   196,  248,  250,  249,  196,    6,  154,  155,  156,  157,
+ /*  1960 */   158,  209,  194,  194,  163,  194,  306,  306,  303,  224,
+ /*  1970 */    60,  215,  215,  209,  215,  215,  215,  224,  216,  216,
+ /*  1980 */     4,  209,   72,    3,   22,  183,  164,   15,   23,   16,
+ /*  1990 */    23,  140,  152,  131,   25,   24,  143,   20,   16,  145,
+ /*  2000 */     1,  143,  131,   62,  131,   37,   54,  152,   54,   54,
+ /*  2010 */    54,  101,  131,  117,    1,   34,  142,  107,  108,    5,
+ /*  2020 */    22,  116,  162,   76,   41,  115,   69,  117,  118,  119,
+ /*  2030 */     1,    2,  122,   25,    5,   69,  142,  116,   20,   10,
+ /*  2040 */    11,   12,   13,   14,   24,   19,   17,  132,    5,  126,
+ /*  2050 */    22,  141,   68,   10,   11,   12,   13,   14,   22,   30,
+ /*  2060 */    17,   32,   22,   22,  154,  155,  156,  157,  158,   40,
+ /*  2070 */    23,   68,   60,   30,   24,   32,   97,   28,   22,   68,
+ /*  2080 */    23,   37,   34,   40,  150,   22,   25,   23,   23,   23,
+ /*  2090 */    22,   98,  142,  183,   23,   23,   34,   22,   25,   89,
+ /*  2100 */    71,   34,  117,  144,   34,   22,   76,   76,   79,   87,
+ /*  2110 */    34,   82,   34,   44,   71,   94,   34,   23,   25,   24,
+ /*  2120 */    34,   25,   79,   23,   23,   82,   23,   23,   99,  143,
+ /*  2130 */   143,   22,   25,   25,   23,   22,   11,   22,   22,   25,
+ /*  2140 */    23,   23,   99,   22,   22,  136,  142,  142,  142,   25,
+ /*  2150 */    23,   15,    1,    1,  323,  323,  323,  323,  323,  323,
+ /*  2160 */   323,  323,  323,  134,  323,  323,  323,  323,  139,  140,
+ /*  2170 */   323,  323,  323,  323,  323,  323,  323,  134,  323,  323,
+ /*  2180 */   323,  323,  139,  140,  323,  323,  323,  323,  323,  323,
+ /*  2190 */   323,  323,  163,  323,  323,  323,  323,  323,  323,  323,
+ /*  2200 */   323,  323,  323,  323,  323,  323,  163,  323,  323,  323,
+ /*  2210 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2220 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2230 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2240 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2250 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2260 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2270 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2280 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2290 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2300 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2310 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2320 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2330 */   323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+ /*  2340 */   323,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2350 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2360 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2370 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2380 */   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+ /*  2390 */   187,  187,  187,  187,
 };
-#define YY_SHIFT_COUNT    (599)
+#define YY_SHIFT_COUNT    (582)
 #define YY_SHIFT_MIN      (0)
-#define YY_SHIFT_MAX      (2215)
+#define YY_SHIFT_MAX      (2152)
 static const unsigned short int yy_shift_ofst[] = {
- /*     0 */  2201, 1973, 2215, 1552, 1552,   33,  368, 1668, 1741, 1814,
- /*    10 */   726,  726,  726,  265,   33,   33,   33,   33,   33,    0,
- /*    20 */     0,  216, 1349,  726,  726,  726,  726,  726,  726,  726,
- /*    30 */   726,  726,  726,  726,  726,  726,  726,  726,  272,  272,
- /*    40 */   111,  111,  316,  365,  516,  867,  867,  916,  916,  916,
- /*    50 */   916,   40,  112,  260,  364,  408,  512,  617,  661,  765,
- /*    60 */   809,  913,  957, 1061, 1081, 1195, 1215, 1329, 1349, 1349,
- /*    70 */  1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349,
- /*    80 */  1349, 1349, 1349, 1349, 1349, 1349, 1369, 1349, 1473, 1493,
- /*    90 */  1493,  473, 1974, 2082,  726,  726,  726,  726,  726,  726,
- /*   100 */   726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
- /*   110 */   726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
- /*   120 */   726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
- /*   130 */   726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
- /*   140 */   726,  726,  726,  726,  726,  726,  138,  232,  232,  232,
- /*   150 */   232,  232,  232,  232,  188,   99,  242,  718,  416, 1159,
- /*   160 */   867,  867,  940,  940,  867, 1103,  417,  574,  574,  574,
- /*   170 */   611,  139,  139, 2379, 2379, 1026, 1026, 1026,  536,  466,
- /*   180 */   466,  466,  466, 1017, 1017,  849,  718,  971, 1060,  867,
- /*   190 */   867,  867,  867,  867,  867,  867,  867,  867,  867,  867,
- /*   200 */   867,  867,  867,  867,  867,  867,  867,  867,  261,  712,
- /*   210 */   712,  867,  108, 1142, 1142,  977, 1108, 1108,  977,  977,
- /*   220 */  1243, 2379, 2379, 2379, 2379, 2379, 2379, 2379,  641,  789,
- /*   230 */   789,  635,  366,  721,  673,  782,  494,  787,  829,  867,
- /*   240 */   867,  867,  867,  867,  867,  867,  867,  867,  867,  867,
- /*   250 */   959,  867,  867,  867,  867,  867,  867,  867,  867,  867,
- /*   260 */   867,  867,  867,  867,  867,  820,  820,  820,  867,  867,
- /*   270 */   867, 1136,  867,  867,  867, 1119, 1007,  867, 1169,  867,
- /*   280 */   867,  867,  867,  867,  867,  867,  867, 1225, 1153,  869,
- /*   290 */   196,  618,  618,  618,  618, 1491,  196,  196,   91,  339,
- /*   300 */  1326, 1386,  383, 1163, 1364, 1426, 1364, 1538,  903, 1163,
- /*   310 */  1163,  903, 1163, 1426, 1538, 1018, 1535, 1241, 1528, 1528,
- /*   320 */  1528, 1394, 1394, 1394, 1394,  762,  762, 1403, 1466, 1475,
- /*   330 */  1551, 1746, 1805, 1746, 1746, 1729, 1729, 1840, 1840, 1729,
- /*   340 */  1730, 1732, 1859, 1842, 1870, 1870, 1870, 1870, 1729, 1876,
- /*   350 */  1751, 1732, 1732, 1751, 1859, 1842, 1751, 1842, 1751, 1729,
- /*   360 */  1876, 1760, 1857, 1729, 1876, 1906, 1729, 1876, 1729, 1876,
- /*   370 */  1906, 1746, 1746, 1746, 1873, 1922, 1922, 1906, 1746, 1822,
- /*   380 */  1746, 1873, 1746, 1746, 1786, 1929, 1843, 1843, 1906, 1729,
- /*   390 */  1872, 1872, 1894, 1894, 1831, 1836, 1966, 1729, 1833, 1831,
- /*   400 */  1851, 1860, 1751, 1983, 1996, 1996, 2009, 2009, 2009, 2379,
- /*   410 */  2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379,
- /*   420 */  2379, 2379, 2379, 2379,  136, 1063, 1196,  530,  636, 1274,
- /*   430 */  1300, 1443, 1598, 1495, 1479,  967, 1083, 1602,  463, 1625,
- /*   440 */  1638, 1670, 1541, 1671, 1689, 1696, 1277, 1432, 1693,  808,
- /*   450 */  1700, 1607, 1657, 1587, 1704, 1707, 1631, 1708, 1733, 1608,
- /*   460 */  1611, 1743, 1747, 1620, 1592, 2026, 2030, 2013, 1914, 2018,
- /*   470 */  1916, 2020, 2019, 2021, 1915, 2027, 2029, 2024, 2025, 1909,
- /*   480 */  1899, 1923, 2028, 2028, 1913, 2037, 1917, 2042, 2059, 1918,
- /*   490 */  1932, 2028, 1933, 2003, 2031, 2028, 1919, 2012, 2015, 2016,
- /*   500 */  2022, 1936, 1956, 2040, 2053, 2077, 2074, 2058, 1967, 1924,
- /*   510 */  2034, 2060, 2036, 2008, 2046, 1946, 1978, 2066, 2075, 2078,
- /*   520 */  1968, 1972, 2084, 2041, 2086, 2088, 2076, 2089, 2048, 2054,
- /*   530 */  2093, 2023, 2091, 2099, 2055, 2085, 2101, 2092, 1975, 2105,
- /*   540 */  2110, 2111, 2112, 2115, 2113, 2043, 1997, 2117, 2120, 2032,
- /*   550 */  2114, 2122, 2001, 2121, 2116, 2118, 2119, 2124, 2062, 2071,
- /*   560 */  2068, 2123, 2080, 2065, 2126, 2138, 2140, 2139, 2141, 2143,
- /*   570 */  2130, 2033, 2035, 2142, 2121, 2146, 2147, 2148, 2150, 2149,
- /*   580 */  2152, 2156, 2151, 2164, 2158, 2159, 2161, 2162, 2160, 2165,
- /*   590 */  2163, 2050, 2049, 2051, 2052, 2167, 2172, 2181, 2197, 2204,
+ /*     0 */  2029, 1801, 2043, 1380, 1380,  318,  271, 1496, 1569, 1642,
+ /*    10 */   702,  702,  702,  740,  318,  318,  318,  318,  318,    0,
+ /*    20 */     0,  216, 1177,  702,  702,  702,  702,  702,  702,  702,
+ /*    30 */   702,  702,  702,  702,  702,  702,  702,  702,  503,  503,
+ /*    40 */   111,  111,  217,  287,  348,  610,  610,  736,  736,  736,
+ /*    50 */   736,   40,  112,  320,  340,  445,  489,  593,  637,  741,
+ /*    60 */   785,  889,  909, 1023, 1043, 1157, 1177, 1177, 1177, 1177,
+ /*    70 */  1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
+ /*    80 */  1177, 1177, 1177, 1177, 1197, 1177, 1301, 1321, 1321,  554,
+ /*    90 */  1802, 1910,  702,  702,  702,  702,  702,  702,  702,  702,
+ /*   100 */   702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
+ /*   110 */   702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
+ /*   120 */   702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
+ /*   130 */   702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
+ /*   140 */   702,  702,  138,  198,  198,  198,  198,  198,  198,  198,
+ /*   150 */   183,   99,  169,  549,  610,  151,  542,  610,  610, 1017,
+ /*   160 */  1017,  610, 1001,  350,  464,  464,  464,  586,    1,    1,
+ /*   170 */  2207, 2207,  854,  854,  854,  465,  694,  694,  694,  694,
+ /*   180 */  1096, 1096,  825,  549,  847,  904,  610,  610,  610,  610,
+ /*   190 */   610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+ /*   200 */   610,  610,  610,  610,  610,  488,  947,  947,  610, 1129,
+ /*   210 */   495,  495, 1139, 1139,  967,  967, 1173, 2207, 2207, 2207,
+ /*   220 */  2207, 2207, 2207, 2207,  617,  765,  765,  697,  444,  708,
+ /*   230 */   660,  745,  510,  663,  864,  610,  610,  610,  610,  610,
+ /*   240 */   610,  610,  610,  610,  610,  188,  610,  610,  610,  610,
+ /*   250 */   610,  610,  610,  610,  610,  610,  610,  610,  839,  839,
+ /*   260 */   839,  610,  610,  610, 1155,  610,  610,  610, 1119, 1247,
+ /*   270 */   610, 1353,  610,  610,  610,  610,  610,  610,  610,  610,
+ /*   280 */  1063,  494, 1101,  291,  291,  291,  291, 1319, 1101, 1101,
+ /*   290 */   775, 1221, 1375, 1452,  667, 1341, 1198, 1341, 1435, 1487,
+ /*   300 */   667,  667, 1487,  667, 1198, 1435,  777, 1011, 1423,  584,
+ /*   310 */   584,  584, 1273, 1273, 1273, 1273, 1471, 1471,  880, 1530,
+ /*   320 */  1190, 1095, 1731, 1731, 1668, 1668, 1794, 1794, 1668, 1683,
+ /*   330 */  1685, 1815, 1796, 1824, 1824, 1824, 1824, 1668, 1828, 1701,
+ /*   340 */  1685, 1685, 1701, 1815, 1796, 1701, 1796, 1701, 1668, 1828,
+ /*   350 */  1697, 1800, 1668, 1828, 1848, 1668, 1828, 1668, 1828, 1848,
+ /*   360 */  1766, 1766, 1766, 1823, 1870, 1870, 1848, 1766, 1767, 1766,
+ /*   370 */  1823, 1766, 1766, 1727, 1872, 1783, 1783, 1848, 1668, 1813,
+ /*   380 */  1813, 1825, 1825, 1777, 1781, 1906, 1668, 1774, 1777, 1789,
+ /*   390 */  1792, 1701, 1919, 1935, 1935, 1949, 1949, 1949, 2207, 2207,
+ /*   400 */  2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207,
+ /*   410 */  2207, 2207, 2207,   69, 1032,   79,  357, 1377, 1206,  400,
+ /*   420 */  1525,  835,  332, 1540, 1437, 1539, 1536, 1548, 1583, 1620,
+ /*   430 */  1633, 1670, 1671, 1674, 1567, 1553, 1682, 1506, 1675, 1358,
+ /*   440 */  1607, 1589, 1678, 1681, 1624, 1687, 1688, 1283, 1561, 1693,
+ /*   450 */  1696, 1623, 1521, 1976, 1980, 1962, 1822, 1972, 1973, 1965,
+ /*   460 */  1967, 1851, 1840, 1862, 1969, 1969, 1971, 1853, 1977, 1854,
+ /*   470 */  1982, 1999, 1858, 1871, 1969, 1873, 1941, 1968, 1969, 1855,
+ /*   480 */  1952, 1954, 1955, 1956, 1881, 1896, 1981, 1874, 2013, 2014,
+ /*   490 */  1998, 1905, 1860, 1957, 2008, 1966, 1947, 1983, 1894, 1921,
+ /*   500 */  2020, 2018, 2026, 1915, 1923, 2028, 1984, 2036, 2040, 2047,
+ /*   510 */  2041, 2003, 2012, 2050, 1979, 2049, 2056, 2011, 2044, 2057,
+ /*   520 */  2048, 1934, 2063, 2064, 2065, 2061, 2066, 2068, 1993, 1950,
+ /*   530 */  2071, 2072, 1985, 2062, 2075, 1959, 2073, 2067, 2070, 2076,
+ /*   540 */  2078, 2010, 2030, 2022, 2069, 2031, 2021, 2082, 2094, 2083,
+ /*   550 */  2095, 2093, 2096, 2086, 1986, 1987, 2100, 2073, 2101, 2103,
+ /*   560 */  2104, 2109, 2107, 2108, 2111, 2113, 2125, 2115, 2116, 2117,
+ /*   570 */  2118, 2121, 2122, 2114, 2009, 2004, 2005, 2006, 2124, 2127,
+ /*   580 */  2136, 2151, 2152,
 };
-#define YY_REDUCE_COUNT (423)
-#define YY_REDUCE_MIN   (-303)
-#define YY_REDUCE_MAX   (1825)
+#define YY_REDUCE_COUNT (412)
+#define YY_REDUCE_MIN   (-277)
+#define YY_REDUCE_MAX   (1772)
 static const short yy_reduce_ofst[] = {
- /*     0 */   -67,  345,  -64, -178, -181,  143,  435,  -78, -183,  163,
- /*    10 */  -185,  284,  384, -174,  189,  352,  440,  444,  493,  -23,
- /*    20 */   227, -277,   -1,  305,  561,  755,  759,  764, -189,  839,
- /*    30 */   857,  354,  484,  859,  631,   67,  734,  780, -187,  616,
- /*    40 */   581,  730,  891,  449,  588,  795,  836, -238,  287, -238,
- /*    50 */   287, -256, -256, -256, -256, -256, -256, -256, -256, -256,
- /*    60 */  -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
- /*    70 */  -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
- /*    80 */  -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
- /*    90 */  -256,  205,  582,  715,  958,  985, 1003, 1005, 1010, 1012,
- /*   100 */  1059, 1066, 1092, 1094, 1097, 1122, 1137, 1141, 1143, 1147,
- /*   110 */  1151, 1172, 1249, 1251, 1269, 1271, 1276, 1290, 1316, 1318,
- /*   120 */  1337, 1371, 1373, 1375, 1400, 1413, 1418, 1420, 1422, 1425,
- /*   130 */  1427, 1433, 1438, 1447, 1454, 1459, 1463, 1467, 1480, 1484,
- /*   140 */  1518, 1523, 1525, 1527, 1529, 1531, -256, -256, -256, -256,
- /*   150 */  -256, -256, -256, -256, -256, -256, -256,  155,  210, -220,
- /*   160 */    86, -130,  943,  996,  402, -256, -113,  981, 1095, 1135,
- /*   170 */   395, -256, -256, -256, -256,  568,  568,  568,   -4, -153,
- /*   180 */  -133,  259,  306, -166,  523, -303, -126,  503,  503,  -37,
- /*   190 */  -149,  164,  690,  292,  412,  492,  651,  784,  332,  786,
- /*   200 */   841, 1149,  833, 1236,  792,  162,  796, 1253,  777,  288,
- /*   210 */   381,  380,  709,  487, 1027,  972, 1030, 1084,  991, 1120,
- /*   220 */  -152, 1062,  692, 1240, 1247, 1250, 1239, 1306, -207, -194,
- /*   230 */    57,  180,   74,  315,  355,  376,  452,  488,  630,  693,
- /*   240 */   965, 1004, 1025, 1099, 1154, 1289, 1305, 1310, 1469, 1489,
- /*   250 */   984, 1494, 1502, 1516, 1544, 1556, 1557, 1562, 1576, 1578,
- /*   260 */  1579, 1583, 1584, 1585, 1586, 1217, 1440, 1554, 1589, 1593,
- /*   270 */  1594, 1530, 1597, 1599, 1600, 1539, 1472, 1601, 1560, 1604,
- /*   280 */   355, 1605, 1609, 1610, 1612, 1613, 1614, 1503, 1512, 1520,
- /*   290 */  1567, 1548, 1558, 1559, 1561, 1530, 1567, 1567, 1569, 1596,
- /*   300 */  1622, 1519, 1521, 1547, 1565, 1581, 1568, 1534, 1582, 1563,
- /*   310 */  1566, 1591, 1570, 1606, 1536, 1619, 1615, 1616, 1624, 1626,
- /*   320 */  1633, 1590, 1595, 1603, 1617, 1618, 1621, 1572, 1623, 1628,
- /*   330 */  1663, 1644, 1577, 1647, 1648, 1673, 1675, 1588, 1627, 1678,
- /*   340 */  1630, 1629, 1634, 1651, 1650, 1652, 1653, 1654, 1688, 1701,
- /*   350 */  1655, 1635, 1636, 1658, 1639, 1672, 1661, 1677, 1666, 1715,
- /*   360 */  1717, 1632, 1642, 1724, 1726, 1712, 1728, 1736, 1737, 1739,
- /*   370 */  1718, 1722, 1723, 1725, 1719, 1720, 1721, 1727, 1731, 1734,
- /*   380 */  1735, 1738, 1740, 1742, 1643, 1656, 1669, 1674, 1753, 1759,
- /*   390 */  1645, 1646, 1711, 1713, 1748, 1744, 1709, 1789, 1716, 1749,
- /*   400 */  1752, 1755, 1758, 1807, 1816, 1818, 1823, 1824, 1825, 1745,
- /*   410 */  1754, 1714, 1811, 1806, 1808, 1809, 1810, 1813, 1802, 1803,
- /*   420 */  1812, 1815, 1817, 1820,
+ /*     0 */   -67, 1252,  -64, -178, -181,  160, 1071,  143, -184,  137,
+ /*    10 */   218,  220,  222, -174,  229,  268,  272,  275,  324, -208,
+ /*    20 */   242, -277,  -39,   81,  537,  792,  810,  812, -189,  814,
+ /*    30 */   831,  163,  865,  944,  887,  840,  964, 1077, -187,  292,
+ /*    40 */  -133,  274,  673,  558,  682,  795,  809, -238, -232, -238,
+ /*    50 */  -232,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*    60 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*    70 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*    80 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  557,
+ /*    90 */   712,  949,  966,  969,  971,  979, 1097, 1099, 1103, 1142,
+ /*   100 */  1144, 1169, 1172, 1201, 1203, 1228, 1241, 1250, 1253, 1255,
+ /*   110 */  1261, 1266, 1271, 1282, 1291, 1308, 1310, 1312, 1322, 1328,
+ /*   120 */  1347, 1354, 1356, 1359, 1362, 1365, 1367, 1374, 1376, 1381,
+ /*   130 */  1401, 1403, 1406, 1412, 1414, 1417, 1421, 1428, 1447, 1449,
+ /*   140 */  1453, 1462,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*   150 */   329,  329,  329,  -22, -159,  475, -220,  756,   38,  501,
+ /*   160 */   841,  714,  329,  118,  337,  349,  363,  -56,  329,  329,
+ /*   170 */   329,  329, -205, -205, -205,  687, -172, -130,  -57,  790,
+ /*   180 */   397,  528, -271,  136,  596,  596,   90,  316,  522,  541,
+ /*   190 */   -37,  715,  849,  977,  628,  856,  980,  991, 1081, 1102,
+ /*   200 */  1135, 1083, -162,  208, 1258,  794,  -86,  159,   41, 1109,
+ /*   210 */   671,  852,  844,  932, 1175, 1254,  480, 1180,  100,  258,
+ /*   220 */  1265, 1268, 1216, 1287, -139,  317,  344,   63,  339,  423,
+ /*   230 */   563,  636,  676,  813,  908,  914,  950, 1078, 1084, 1098,
+ /*   240 */  1363, 1384, 1407, 1439, 1464,  411, 1527, 1534, 1535, 1537,
+ /*   250 */  1541, 1542, 1543, 1544, 1545, 1547, 1549, 1550,  990, 1164,
+ /*   260 */  1492, 1551, 1552, 1556, 1217, 1558, 1559, 1560, 1473, 1413,
+ /*   270 */  1563, 1510, 1568,  563, 1570, 1571, 1572, 1573, 1574, 1575,
+ /*   280 */  1443, 1466, 1518, 1513, 1514, 1515, 1516, 1217, 1518, 1518,
+ /*   290 */  1531, 1562, 1582, 1477, 1505, 1511, 1533, 1512, 1488, 1538,
+ /*   300 */  1509, 1517, 1546, 1519, 1557, 1489, 1565, 1564, 1578, 1586,
+ /*   310 */  1587, 1588, 1526, 1528, 1554, 1555, 1576, 1577, 1566, 1579,
+ /*   320 */  1584, 1591, 1520, 1523, 1617, 1628, 1580, 1581, 1632, 1585,
+ /*   330 */  1590, 1593, 1604, 1605, 1606, 1608, 1609, 1641, 1649, 1610,
+ /*   340 */  1592, 1594, 1611, 1595, 1616, 1612, 1618, 1613, 1651, 1654,
+ /*   350 */  1596, 1598, 1655, 1663, 1650, 1673, 1680, 1677, 1684, 1653,
+ /*   360 */  1664, 1666, 1667, 1662, 1669, 1672, 1676, 1686, 1679, 1691,
+ /*   370 */  1689, 1692, 1694, 1597, 1599, 1619, 1630, 1699, 1700, 1602,
+ /*   380 */  1615, 1648, 1657, 1690, 1698, 1658, 1729, 1652, 1695, 1702,
+ /*   390 */  1704, 1703, 1741, 1754, 1758, 1768, 1769, 1771, 1660, 1661,
+ /*   400 */  1665, 1752, 1756, 1757, 1759, 1760, 1764, 1745, 1753, 1762,
+ /*   410 */  1763, 1761, 1772,
 };
 static const YYACTIONTYPE yy_default[] = {
- /*     0 */  1691, 1691, 1691, 1516, 1279, 1392, 1279, 1279, 1279, 1279,
- /*    10 */  1516, 1516, 1516, 1279, 1279, 1279, 1279, 1279, 1279, 1422,
- /*    20 */  1422, 1568, 1312, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*    30 */  1279, 1279, 1279, 1279, 1279, 1515, 1279, 1279, 1279, 1279,
- /*    40 */  1607, 1607, 1279, 1279, 1279, 1279, 1279, 1592, 1591, 1279,
- /*    50 */  1279, 1279, 1431, 1279, 1279, 1279, 1438, 1279, 1279, 1279,
- /*    60 */  1279, 1279, 1517, 1518, 1279, 1279, 1279, 1279, 1567, 1569,
- /*    70 */  1533, 1445, 1444, 1443, 1442, 1551, 1410, 1436, 1429, 1433,
- /*    80 */  1512, 1513, 1511, 1670, 1518, 1517, 1279, 1432, 1480, 1496,
- /*    90 */  1479, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   100 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   110 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   120 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   130 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   140 */  1279, 1279, 1279, 1279, 1279, 1279, 1488, 1495, 1494, 1493,
- /*   150 */  1502, 1492, 1489, 1482, 1481, 1483, 1484, 1303, 1300, 1354,
- /*   160 */  1279, 1279, 1279, 1279, 1279, 1485, 1312, 1473, 1472, 1471,
- /*   170 */  1279, 1499, 1486, 1498, 1497, 1575, 1644, 1643, 1534, 1279,
- /*   180 */  1279, 1279, 1279, 1279, 1279, 1607, 1279, 1279, 1279, 1279,
- /*   190 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   200 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1412, 1607,
- /*   210 */  1607, 1279, 1312, 1607, 1607, 1308, 1413, 1413, 1308, 1308,
- /*   220 */  1416, 1587, 1383, 1383, 1383, 1383, 1392, 1383, 1279, 1279,
- /*   230 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   240 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1572, 1570, 1279,
- /*   250 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   260 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   270 */  1279, 1279, 1279, 1279, 1279, 1388, 1279, 1279, 1279, 1279,
- /*   280 */  1279, 1279, 1279, 1279, 1279, 1279, 1637, 1683, 1279, 1546,
- /*   290 */  1368, 1388, 1388, 1388, 1388, 1390, 1369, 1367, 1382, 1313,
- /*   300 */  1286, 1683, 1683, 1448, 1437, 1389, 1437, 1680, 1435, 1448,
- /*   310 */  1448, 1435, 1448, 1389, 1680, 1329, 1659, 1324, 1422, 1422,
- /*   320 */  1422, 1412, 1412, 1412, 1412, 1416, 1416, 1514, 1389, 1382,
- /*   330 */  1279, 1355, 1683, 1355, 1355, 1398, 1398, 1682, 1682, 1398,
- /*   340 */  1534, 1667, 1457, 1357, 1363, 1363, 1363, 1363, 1398, 1297,
- /*   350 */  1435, 1667, 1667, 1435, 1457, 1357, 1435, 1357, 1435, 1398,
- /*   360 */  1297, 1550, 1678, 1398, 1297, 1524, 1398, 1297, 1398, 1297,
- /*   370 */  1524, 1355, 1355, 1355, 1344, 1279, 1279, 1524, 1355, 1329,
- /*   380 */  1355, 1344, 1355, 1355, 1625, 1279, 1528, 1528, 1524, 1398,
- /*   390 */  1617, 1617, 1425, 1425, 1430, 1416, 1519, 1398, 1279, 1430,
- /*   400 */  1428, 1426, 1435, 1347, 1640, 1640, 1636, 1636, 1636, 1688,
- /*   410 */  1688, 1587, 1652, 1312, 1312, 1312, 1312, 1652, 1331, 1331,
- /*   420 */  1313, 1313, 1312, 1652, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   430 */  1279, 1647, 1279, 1279, 1535, 1279, 1279, 1279, 1279, 1279,
- /*   440 */  1279, 1279, 1402, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   450 */  1279, 1279, 1593, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   460 */  1279, 1279, 1279, 1279, 1462, 1279, 1282, 1584, 1279, 1279,
- /*   470 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   480 */  1279, 1279, 1439, 1440, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   490 */  1279, 1454, 1279, 1279, 1279, 1449, 1279, 1279, 1279, 1279,
- /*   500 */  1279, 1279, 1279, 1279, 1403, 1279, 1279, 1279, 1279, 1279,
- /*   510 */  1279, 1549, 1548, 1279, 1279, 1400, 1279, 1279, 1279, 1279,
- /*   520 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1327,
- /*   530 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   540 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   550 */  1279, 1279, 1279, 1427, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   560 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1622, 1417,
- /*   570 */  1279, 1279, 1279, 1279, 1671, 1279, 1279, 1279, 1279, 1377,
- /*   580 */  1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
- /*   590 */  1663, 1371, 1463, 1279, 1466, 1301, 1279, 1291, 1279, 1279,
+ /*     0 */  1663, 1663, 1663, 1491, 1254, 1367, 1254, 1254, 1254, 1254,
+ /*    10 */  1491, 1491, 1491, 1254, 1254, 1254, 1254, 1254, 1254, 1397,
+ /*    20 */  1397, 1544, 1287, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*    30 */  1254, 1254, 1254, 1254, 1254, 1490, 1254, 1254, 1254, 1254,
+ /*    40 */  1578, 1578, 1254, 1254, 1254, 1254, 1254, 1563, 1562, 1254,
+ /*    50 */  1254, 1254, 1406, 1254, 1413, 1254, 1254, 1254, 1254, 1254,
+ /*    60 */  1492, 1493, 1254, 1254, 1254, 1254, 1543, 1545, 1508, 1420,
+ /*    70 */  1419, 1418, 1417, 1526, 1385, 1411, 1404, 1408, 1487, 1488,
+ /*    80 */  1486, 1641, 1493, 1492, 1254, 1407, 1455, 1471, 1454, 1254,
+ /*    90 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   100 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   110 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   120 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   130 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   140 */  1254, 1254, 1463, 1470, 1469, 1468, 1477, 1467, 1464, 1457,
+ /*   150 */  1456, 1458, 1459, 1278, 1254, 1275, 1329, 1254, 1254, 1254,
+ /*   160 */  1254, 1254, 1460, 1287, 1448, 1447, 1446, 1254, 1474, 1461,
+ /*   170 */  1473, 1472, 1551, 1615, 1614, 1509, 1254, 1254, 1254, 1254,
+ /*   180 */  1254, 1254, 1578, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   190 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   200 */  1254, 1254, 1254, 1254, 1254, 1387, 1578, 1578, 1254, 1287,
+ /*   210 */  1578, 1578, 1388, 1388, 1283, 1283, 1391, 1558, 1358, 1358,
+ /*   220 */  1358, 1358, 1367, 1358, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   230 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1548,
+ /*   240 */  1546, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   250 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   260 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1363, 1254,
+ /*   270 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1608,
+ /*   280 */  1254, 1521, 1343, 1363, 1363, 1363, 1363, 1365, 1344, 1342,
+ /*   290 */  1357, 1288, 1261, 1655, 1423, 1412, 1364, 1412, 1652, 1410,
+ /*   300 */  1423, 1423, 1410, 1423, 1364, 1652, 1304, 1630, 1299, 1397,
+ /*   310 */  1397, 1397, 1387, 1387, 1387, 1387, 1391, 1391, 1489, 1364,
+ /*   320 */  1357, 1254, 1655, 1655, 1373, 1373, 1654, 1654, 1373, 1509,
+ /*   330 */  1638, 1432, 1332, 1338, 1338, 1338, 1338, 1373, 1272, 1410,
+ /*   340 */  1638, 1638, 1410, 1432, 1332, 1410, 1332, 1410, 1373, 1272,
+ /*   350 */  1525, 1649, 1373, 1272, 1499, 1373, 1272, 1373, 1272, 1499,
+ /*   360 */  1330, 1330, 1330, 1319, 1254, 1254, 1499, 1330, 1304, 1330,
+ /*   370 */  1319, 1330, 1330, 1596, 1254, 1503, 1503, 1499, 1373, 1588,
+ /*   380 */  1588, 1400, 1400, 1405, 1391, 1494, 1373, 1254, 1405, 1403,
+ /*   390 */  1401, 1410, 1322, 1611, 1611, 1607, 1607, 1607, 1660, 1660,
+ /*   400 */  1558, 1623, 1287, 1287, 1287, 1287, 1623, 1306, 1306, 1288,
+ /*   410 */  1288, 1287, 1623, 1254, 1254, 1254, 1254, 1254, 1254, 1618,
+ /*   420 */  1254, 1553, 1510, 1377, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   430 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   440 */  1564, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   450 */  1254, 1254, 1437, 1254, 1257, 1555, 1254, 1254, 1254, 1254,
+ /*   460 */  1254, 1254, 1254, 1254, 1414, 1415, 1378, 1254, 1254, 1254,
+ /*   470 */  1254, 1254, 1254, 1254, 1429, 1254, 1254, 1254, 1424, 1254,
+ /*   480 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1651, 1254, 1254,
+ /*   490 */  1254, 1254, 1254, 1254, 1524, 1523, 1254, 1254, 1375, 1254,
+ /*   500 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   510 */  1254, 1254, 1302, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   520 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   530 */  1254, 1254, 1254, 1254, 1254, 1254, 1402, 1254, 1254, 1254,
+ /*   540 */  1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   550 */  1254, 1593, 1392, 1254, 1254, 1254, 1254, 1642, 1254, 1254,
+ /*   560 */  1254, 1254, 1352, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+ /*   570 */  1254, 1254, 1254, 1634, 1346, 1438, 1254, 1441, 1276, 1254,
+ /*   580 */  1266, 1254, 1254,
 };
 /********** End of lemon-generated parsing tables *****************************/
 
@@ -180661,33 +179401,34 @@ static const char *const yyTokenName[] = {
   /*  292 */ "foreach_clause",
   /*  293 */ "when_clause",
   /*  294 */ "trigger_cmd",
-  /*  295 */ "tridxby",
-  /*  296 */ "database_kw_opt",
-  /*  297 */ "key_opt",
-  /*  298 */ "alter_add",
-  /*  299 */ "kwcolumn_opt",
-  /*  300 */ "create_vtab",
-  /*  301 */ "vtabarglist",
-  /*  302 */ "vtabarg",
-  /*  303 */ "vtabargtoken",
-  /*  304 */ "lp",
-  /*  305 */ "anylist",
-  /*  306 */ "wqitem",
-  /*  307 */ "wqas",
-  /*  308 */ "withnm",
-  /*  309 */ "windowdefn_list",
-  /*  310 */ "windowdefn",
-  /*  311 */ "window",
-  /*  312 */ "frame_opt",
-  /*  313 */ "part_opt",
-  /*  314 */ "filter_clause",
-  /*  315 */ "over_clause",
-  /*  316 */ "range_or_rows",
-  /*  317 */ "frame_bound",
-  /*  318 */ "frame_bound_s",
-  /*  319 */ "frame_bound_e",
-  /*  320 */ "frame_exclude_opt",
-  /*  321 */ "frame_exclude",
+  /*  295 */ "trnm",
+  /*  296 */ "tridxby",
+  /*  297 */ "database_kw_opt",
+  /*  298 */ "key_opt",
+  /*  299 */ "add_column_fullname",
+  /*  300 */ "kwcolumn_opt",
+  /*  301 */ "create_vtab",
+  /*  302 */ "vtabarglist",
+  /*  303 */ "vtabarg",
+  /*  304 */ "vtabargtoken",
+  /*  305 */ "lp",
+  /*  306 */ "anylist",
+  /*  307 */ "wqitem",
+  /*  308 */ "wqas",
+  /*  309 */ "withnm",
+  /*  310 */ "windowdefn_list",
+  /*  311 */ "windowdefn",
+  /*  312 */ "window",
+  /*  313 */ "frame_opt",
+  /*  314 */ "part_opt",
+  /*  315 */ "filter_clause",
+  /*  316 */ "over_clause",
+  /*  317 */ "range_or_rows",
+  /*  318 */ "frame_bound",
+  /*  319 */ "frame_bound_s",
+  /*  320 */ "frame_bound_e",
+  /*  321 */ "frame_exclude_opt",
+  /*  322 */ "frame_exclude",
 };
 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
 
@@ -180817,8 +179558,8 @@ static const char *const yyRuleName[] = {
  /* 119 */ "fullname ::= nm DOT nm",
  /* 120 */ "xfullname ::= nm",
  /* 121 */ "xfullname ::= nm DOT nm",
- /* 122 */ "xfullname ::= nm AS nm",
- /* 123 */ "xfullname ::= nm DOT nm AS nm",
+ /* 122 */ "xfullname ::= nm DOT nm AS nm",
+ /* 123 */ "xfullname ::= nm AS nm",
  /* 124 */ "joinop ::= COMMA|JOIN",
  /* 125 */ "joinop ::= JOIN_KW JOIN",
  /* 126 */ "joinop ::= JOIN_KW nm JOIN",
@@ -180967,146 +179708,143 @@ static const char *const yyRuleName[] = {
  /* 269 */ "when_clause ::= WHEN expr",
  /* 270 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
  /* 271 */ "trigger_cmd_list ::= trigger_cmd SEMI",
- /* 272 */ "tridxby ::= INDEXED BY nm",
- /* 273 */ "tridxby ::= NOT INDEXED",
- /* 274 */ "trigger_cmd ::= UPDATE orconf xfullname tridxby SET setlist from where_opt scanpt",
- /* 275 */ "trigger_cmd ::= scanpt insert_cmd INTO xfullname idlist_opt select upsert scanpt",
- /* 276 */ "trigger_cmd ::= DELETE FROM xfullname tridxby where_opt scanpt",
- /* 277 */ "trigger_cmd ::= scanpt select scanpt",
- /* 278 */ "expr ::= RAISE LP IGNORE RP",
- /* 279 */ "expr ::= RAISE LP raisetype COMMA expr RP",
- /* 280 */ "raisetype ::= ROLLBACK",
- /* 281 */ "raisetype ::= ABORT",
- /* 282 */ "raisetype ::= FAIL",
- /* 283 */ "cmd ::= DROP TRIGGER ifexists fullname",
- /* 284 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
- /* 285 */ "cmd ::= DETACH database_kw_opt expr",
- /* 286 */ "key_opt ::=",
- /* 287 */ "key_opt ::= KEY expr",
- /* 288 */ "cmd ::= REINDEX",
- /* 289 */ "cmd ::= REINDEX nm dbnm",
- /* 290 */ "cmd ::= ANALYZE",
- /* 291 */ "cmd ::= ANALYZE nm dbnm",
- /* 292 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
- /* 293 */ "cmd ::= alter_add carglist",
- /* 294 */ "alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken",
+ /* 272 */ "trnm ::= nm DOT nm",
+ /* 273 */ "tridxby ::= INDEXED BY nm",
+ /* 274 */ "tridxby ::= NOT INDEXED",
+ /* 275 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
+ /* 276 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
+ /* 277 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
+ /* 278 */ "trigger_cmd ::= scanpt select scanpt",
+ /* 279 */ "expr ::= RAISE LP IGNORE RP",
+ /* 280 */ "expr ::= RAISE LP raisetype COMMA expr RP",
+ /* 281 */ "raisetype ::= ROLLBACK",
+ /* 282 */ "raisetype ::= ABORT",
+ /* 283 */ "raisetype ::= FAIL",
+ /* 284 */ "cmd ::= DROP TRIGGER ifexists fullname",
+ /* 285 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
+ /* 286 */ "cmd ::= DETACH database_kw_opt expr",
+ /* 287 */ "key_opt ::=",
+ /* 288 */ "key_opt ::= KEY expr",
+ /* 289 */ "cmd ::= REINDEX",
+ /* 290 */ "cmd ::= REINDEX nm dbnm",
+ /* 291 */ "cmd ::= ANALYZE",
+ /* 292 */ "cmd ::= ANALYZE nm dbnm",
+ /* 293 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
+ /* 294 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
  /* 295 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
- /* 296 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
- /* 297 */ "cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm",
- /* 298 */ "cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL",
- /* 299 */ "cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf",
- /* 300 */ "cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf",
- /* 301 */ "cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf",
- /* 302 */ "cmd ::= create_vtab",
- /* 303 */ "cmd ::= create_vtab LP vtabarglist RP",
- /* 304 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
- /* 305 */ "vtabarg ::=",
- /* 306 */ "vtabargtoken ::= ANY",
- /* 307 */ "vtabargtoken ::= lp anylist RP",
- /* 308 */ "lp ::= LP",
- /* 309 */ "with ::= WITH wqlist",
- /* 310 */ "with ::= WITH RECURSIVE wqlist",
- /* 311 */ "wqas ::= AS",
- /* 312 */ "wqas ::= AS MATERIALIZED",
- /* 313 */ "wqas ::= AS NOT MATERIALIZED",
- /* 314 */ "wqitem ::= withnm eidlist_opt wqas LP select RP",
- /* 315 */ "withnm ::= nm",
- /* 316 */ "wqlist ::= wqitem",
- /* 317 */ "wqlist ::= wqlist COMMA wqitem",
- /* 318 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
- /* 319 */ "windowdefn ::= nm AS LP window RP",
- /* 320 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
- /* 321 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
- /* 322 */ "window ::= ORDER BY sortlist frame_opt",
- /* 323 */ "window ::= nm ORDER BY sortlist frame_opt",
- /* 324 */ "window ::= nm frame_opt",
- /* 325 */ "frame_opt ::=",
- /* 326 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
- /* 327 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
- /* 328 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
- /* 329 */ "frame_bound_s ::= frame_bound",
- /* 330 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
- /* 331 */ "frame_bound_e ::= frame_bound",
- /* 332 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
- /* 333 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
- /* 334 */ "frame_bound ::= CURRENT ROW",
- /* 335 */ "frame_exclude_opt ::=",
- /* 336 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
- /* 337 */ "frame_exclude ::= NO OTHERS",
- /* 338 */ "frame_exclude ::= CURRENT ROW",
- /* 339 */ "frame_exclude ::= GROUP|TIES",
- /* 340 */ "window_clause ::= WINDOW windowdefn_list",
- /* 341 */ "filter_over ::= filter_clause over_clause",
- /* 342 */ "filter_over ::= over_clause",
- /* 343 */ "filter_over ::= filter_clause",
- /* 344 */ "over_clause ::= OVER LP window RP",
- /* 345 */ "over_clause ::= OVER nm",
- /* 346 */ "filter_clause ::= FILTER LP WHERE expr RP",
- /* 347 */ "term ::= QNUMBER",
- /* 348 */ "input ::= cmdlist",
- /* 349 */ "cmdlist ::= cmdlist ecmd",
- /* 350 */ "cmdlist ::= ecmd",
- /* 351 */ "ecmd ::= SEMI",
- /* 352 */ "ecmd ::= cmdx SEMI",
- /* 353 */ "ecmd ::= explain cmdx SEMI",
- /* 354 */ "trans_opt ::=",
- /* 355 */ "trans_opt ::= TRANSACTION",
- /* 356 */ "trans_opt ::= TRANSACTION nm",
- /* 357 */ "savepoint_opt ::= SAVEPOINT",
- /* 358 */ "savepoint_opt ::=",
- /* 359 */ "cmd ::= create_table create_table_args",
- /* 360 */ "table_option_set ::= table_option",
- /* 361 */ "columnlist ::= columnlist COMMA columnname carglist",
- /* 362 */ "columnlist ::= columnname carglist",
- /* 363 */ "nm ::= ID|INDEXED|JOIN_KW",
- /* 364 */ "nm ::= STRING",
- /* 365 */ "typetoken ::= typename",
- /* 366 */ "typename ::= ID|STRING",
- /* 367 */ "signed ::= plus_num",
- /* 368 */ "signed ::= minus_num",
- /* 369 */ "carglist ::= carglist ccons",
- /* 370 */ "carglist ::=",
- /* 371 */ "ccons ::= NULL onconf",
- /* 372 */ "ccons ::= GENERATED ALWAYS AS generated",
- /* 373 */ "ccons ::= AS generated",
- /* 374 */ "conslist_opt ::= COMMA conslist",
- /* 375 */ "conslist ::= conslist tconscomma tcons",
- /* 376 */ "conslist ::= tcons",
- /* 377 */ "tconscomma ::=",
- /* 378 */ "defer_subclause_opt ::= defer_subclause",
- /* 379 */ "resolvetype ::= raisetype",
- /* 380 */ "selectnowith ::= oneselect",
- /* 381 */ "oneselect ::= values",
- /* 382 */ "sclp ::= selcollist COMMA",
- /* 383 */ "as ::= ID|STRING",
- /* 384 */ "indexed_opt ::= indexed_by",
- /* 385 */ "returning ::=",
- /* 386 */ "expr ::= term",
- /* 387 */ "likeop ::= LIKE_KW|MATCH",
- /* 388 */ "case_operand ::= expr",
- /* 389 */ "exprlist ::= nexprlist",
- /* 390 */ "nmnum ::= plus_num",
- /* 391 */ "nmnum ::= nm",
- /* 392 */ "nmnum ::= ON",
- /* 393 */ "nmnum ::= DELETE",
- /* 394 */ "nmnum ::= DEFAULT",
- /* 395 */ "plus_num ::= INTEGER|FLOAT",
- /* 396 */ "foreach_clause ::=",
- /* 397 */ "foreach_clause ::= FOR EACH ROW",
- /* 398 */ "tridxby ::=",
- /* 399 */ "database_kw_opt ::= DATABASE",
- /* 400 */ "database_kw_opt ::=",
- /* 401 */ "kwcolumn_opt ::=",
- /* 402 */ "kwcolumn_opt ::= COLUMNKW",
- /* 403 */ "vtabarglist ::= vtabarg",
- /* 404 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
- /* 405 */ "vtabarg ::= vtabarg vtabargtoken",
- /* 406 */ "anylist ::=",
- /* 407 */ "anylist ::= anylist LP anylist RP",
- /* 408 */ "anylist ::= anylist ANY",
- /* 409 */ "with ::=",
- /* 410 */ "windowdefn_list ::= windowdefn",
- /* 411 */ "window ::= frame_opt",
+ /* 296 */ "add_column_fullname ::= fullname",
+ /* 297 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
+ /* 298 */ "cmd ::= create_vtab",
+ /* 299 */ "cmd ::= create_vtab LP vtabarglist RP",
+ /* 300 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
+ /* 301 */ "vtabarg ::=",
+ /* 302 */ "vtabargtoken ::= ANY",
+ /* 303 */ "vtabargtoken ::= lp anylist RP",
+ /* 304 */ "lp ::= LP",
+ /* 305 */ "with ::= WITH wqlist",
+ /* 306 */ "with ::= WITH RECURSIVE wqlist",
+ /* 307 */ "wqas ::= AS",
+ /* 308 */ "wqas ::= AS MATERIALIZED",
+ /* 309 */ "wqas ::= AS NOT MATERIALIZED",
+ /* 310 */ "wqitem ::= withnm eidlist_opt wqas LP select RP",
+ /* 311 */ "withnm ::= nm",
+ /* 312 */ "wqlist ::= wqitem",
+ /* 313 */ "wqlist ::= wqlist COMMA wqitem",
+ /* 314 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
+ /* 315 */ "windowdefn ::= nm AS LP window RP",
+ /* 316 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
+ /* 317 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
+ /* 318 */ "window ::= ORDER BY sortlist frame_opt",
+ /* 319 */ "window ::= nm ORDER BY sortlist frame_opt",
+ /* 320 */ "window ::= nm frame_opt",
+ /* 321 */ "frame_opt ::=",
+ /* 322 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
+ /* 323 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
+ /* 324 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
+ /* 325 */ "frame_bound_s ::= frame_bound",
+ /* 326 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
+ /* 327 */ "frame_bound_e ::= frame_bound",
+ /* 328 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
+ /* 329 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
+ /* 330 */ "frame_bound ::= CURRENT ROW",
+ /* 331 */ "frame_exclude_opt ::=",
+ /* 332 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
+ /* 333 */ "frame_exclude ::= NO OTHERS",
+ /* 334 */ "frame_exclude ::= CURRENT ROW",
+ /* 335 */ "frame_exclude ::= GROUP|TIES",
+ /* 336 */ "window_clause ::= WINDOW windowdefn_list",
+ /* 337 */ "filter_over ::= filter_clause over_clause",
+ /* 338 */ "filter_over ::= over_clause",
+ /* 339 */ "filter_over ::= filter_clause",
+ /* 340 */ "over_clause ::= OVER LP window RP",
+ /* 341 */ "over_clause ::= OVER nm",
+ /* 342 */ "filter_clause ::= FILTER LP WHERE expr RP",
+ /* 343 */ "term ::= QNUMBER",
+ /* 344 */ "input ::= cmdlist",
+ /* 345 */ "cmdlist ::= cmdlist ecmd",
+ /* 346 */ "cmdlist ::= ecmd",
+ /* 347 */ "ecmd ::= SEMI",
+ /* 348 */ "ecmd ::= cmdx SEMI",
+ /* 349 */ "ecmd ::= explain cmdx SEMI",
+ /* 350 */ "trans_opt ::=",
+ /* 351 */ "trans_opt ::= TRANSACTION",
+ /* 352 */ "trans_opt ::= TRANSACTION nm",
+ /* 353 */ "savepoint_opt ::= SAVEPOINT",
+ /* 354 */ "savepoint_opt ::=",
+ /* 355 */ "cmd ::= create_table create_table_args",
+ /* 356 */ "table_option_set ::= table_option",
+ /* 357 */ "columnlist ::= columnlist COMMA columnname carglist",
+ /* 358 */ "columnlist ::= columnname carglist",
+ /* 359 */ "nm ::= ID|INDEXED|JOIN_KW",
+ /* 360 */ "nm ::= STRING",
+ /* 361 */ "typetoken ::= typename",
+ /* 362 */ "typename ::= ID|STRING",
+ /* 363 */ "signed ::= plus_num",
+ /* 364 */ "signed ::= minus_num",
+ /* 365 */ "carglist ::= carglist ccons",
+ /* 366 */ "carglist ::=",
+ /* 367 */ "ccons ::= NULL onconf",
+ /* 368 */ "ccons ::= GENERATED ALWAYS AS generated",
+ /* 369 */ "ccons ::= AS generated",
+ /* 370 */ "conslist_opt ::= COMMA conslist",
+ /* 371 */ "conslist ::= conslist tconscomma tcons",
+ /* 372 */ "conslist ::= tcons",
+ /* 373 */ "tconscomma ::=",
+ /* 374 */ "defer_subclause_opt ::= defer_subclause",
+ /* 375 */ "resolvetype ::= raisetype",
+ /* 376 */ "selectnowith ::= oneselect",
+ /* 377 */ "oneselect ::= values",
+ /* 378 */ "sclp ::= selcollist COMMA",
+ /* 379 */ "as ::= ID|STRING",
+ /* 380 */ "indexed_opt ::= indexed_by",
+ /* 381 */ "returning ::=",
+ /* 382 */ "expr ::= term",
+ /* 383 */ "likeop ::= LIKE_KW|MATCH",
+ /* 384 */ "case_operand ::= expr",
+ /* 385 */ "exprlist ::= nexprlist",
+ /* 386 */ "nmnum ::= plus_num",
+ /* 387 */ "nmnum ::= nm",
+ /* 388 */ "nmnum ::= ON",
+ /* 389 */ "nmnum ::= DELETE",
+ /* 390 */ "nmnum ::= DEFAULT",
+ /* 391 */ "plus_num ::= INTEGER|FLOAT",
+ /* 392 */ "foreach_clause ::=",
+ /* 393 */ "foreach_clause ::= FOR EACH ROW",
+ /* 394 */ "trnm ::= nm",
+ /* 395 */ "tridxby ::=",
+ /* 396 */ "database_kw_opt ::= DATABASE",
+ /* 397 */ "database_kw_opt ::=",
+ /* 398 */ "kwcolumn_opt ::=",
+ /* 399 */ "kwcolumn_opt ::= COLUMNKW",
+ /* 400 */ "vtabarglist ::= vtabarg",
+ /* 401 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
+ /* 402 */ "vtabarg ::= vtabarg vtabargtoken",
+ /* 403 */ "anylist ::=",
+ /* 404 */ "anylist ::= anylist LP anylist RP",
+ /* 405 */ "anylist ::= anylist ANY",
+ /* 406 */ "with ::=",
+ /* 407 */ "windowdefn_list ::= windowdefn",
+ /* 408 */ "window ::= frame_opt",
 };
 #endif /* NDEBUG */
 
@@ -181121,24 +179859,15 @@ static int yyGrowStack(yyParser *p){
   int newSize;
   int idx;
   yyStackEntry *pNew;
-#ifdef YYSIZELIMIT
-  int nLimit = YYSIZELIMIT(sqlite3ParserCTX(p));
-#endif
 
   newSize = oldSize*2 + 100;
-#ifdef YYSIZELIMIT
-  if( newSize>nLimit ){
-    newSize = nLimit;
-    if( newSize<=oldSize ) return 1;
-  }
-#endif
   idx = (int)(p->yytos - p->yystack);
   if( p->yystack==p->yystk0 ){
-    pNew = YYREALLOC(0, newSize*sizeof(pNew[0]), sqlite3ParserCTX(p));
+    pNew = YYREALLOC(0, newSize*sizeof(pNew[0]));
     if( pNew==0 ) return 1;
     memcpy(pNew, p->yystack, oldSize*sizeof(pNew[0]));
   }else{
-    pNew = YYREALLOC(p->yystack, newSize*sizeof(pNew[0]), sqlite3ParserCTX(p));
+    pNew = YYREALLOC(p->yystack, newSize*sizeof(pNew[0]));
     if( pNew==0 ) return 1;
   }
   p->yystack = pNew;
@@ -181245,7 +179974,7 @@ static void yy_destructor(
     case 254: /* values */
     case 256: /* mvalues */
 {
-sqlite3SelectDelete(pParse->db, (yypminor->yy555));
+sqlite3SelectDelete(pParse->db, (yypminor->yy637));
 }
       break;
     case 218: /* term */
@@ -181257,10 +179986,10 @@ sqlite3SelectDelete(pParse->db, (yypminor->yy555));
     case 283: /* case_else */
     case 286: /* vinto */
     case 293: /* when_clause */
-    case 297: /* key_opt */
-    case 314: /* filter_clause */
+    case 298: /* key_opt */
+    case 315: /* filter_clause */
 {
-sqlite3ExprDelete(pParse->db, (yypminor->yy454));
+sqlite3ExprDelete(pParse->db, (yypminor->yy590));
 }
       break;
     case 223: /* eidlist_opt */
@@ -181275,9 +180004,9 @@ sqlite3ExprDelete(pParse->db, (yypminor->yy454));
     case 271: /* setlist */
     case 280: /* paren_exprlist */
     case 282: /* case_exprlist */
-    case 313: /* part_opt */
+    case 314: /* part_opt */
 {
-sqlite3ExprListDelete(pParse->db, (yypminor->yy14));
+sqlite3ExprListDelete(pParse->db, (yypminor->yy402));
 }
       break;
     case 240: /* fullname */
@@ -181286,51 +180015,51 @@ sqlite3ExprListDelete(pParse->db, (yypminor->yy14));
     case 260: /* stl_prefix */
     case 265: /* xfullname */
 {
-sqlite3SrcListDelete(pParse->db, (yypminor->yy203));
+sqlite3SrcListDelete(pParse->db, (yypminor->yy563));
 }
       break;
     case 243: /* wqlist */
 {
-sqlite3WithDelete(pParse->db, (yypminor->yy59));
+sqlite3WithDelete(pParse->db, (yypminor->yy125));
 }
       break;
     case 253: /* window_clause */
-    case 309: /* windowdefn_list */
+    case 310: /* windowdefn_list */
 {
-sqlite3WindowListDelete(pParse->db, (yypminor->yy211));
+sqlite3WindowListDelete(pParse->db, (yypminor->yy483));
 }
       break;
     case 266: /* idlist */
     case 273: /* idlist_opt */
 {
-sqlite3IdListDelete(pParse->db, (yypminor->yy132));
+sqlite3IdListDelete(pParse->db, (yypminor->yy204));
 }
       break;
     case 276: /* filter_over */
-    case 310: /* windowdefn */
-    case 311: /* window */
-    case 312: /* frame_opt */
-    case 315: /* over_clause */
+    case 311: /* windowdefn */
+    case 312: /* window */
+    case 313: /* frame_opt */
+    case 316: /* over_clause */
 {
-sqlite3WindowDelete(pParse->db, (yypminor->yy211));
+sqlite3WindowDelete(pParse->db, (yypminor->yy483));
 }
       break;
     case 289: /* trigger_cmd_list */
     case 294: /* trigger_cmd */
 {
-sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy427));
+sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy319));
 }
       break;
     case 291: /* trigger_event */
 {
-sqlite3IdListDelete(pParse->db, (yypminor->yy286).b);
+sqlite3IdListDelete(pParse->db, (yypminor->yy28).b);
 }
       break;
-    case 317: /* frame_bound */
-    case 318: /* frame_bound_s */
-    case 319: /* frame_bound_e */
+    case 318: /* frame_bound */
+    case 319: /* frame_bound_s */
+    case 320: /* frame_bound_e */
 {
-sqlite3ExprDelete(pParse->db, (yypminor->yy509).pExpr);
+sqlite3ExprDelete(pParse->db, (yypminor->yy205).pExpr);
 }
       break;
 /********* End destructor definitions *****************************************/
@@ -181383,9 +180112,7 @@ SQLITE_PRIVATE void sqlite3ParserFinalize(void *p){
   }
 
 #if YYGROWABLESTACK
-  if( pParser->yystack!=pParser->yystk0 ){
-    YYFREE(pParser->yystack, sqlite3ParserCTX(pParser));
-  }
+  if( pParser->yystack!=pParser->yystk0 ) YYFREE(pParser->yystack);
 #endif
 }
 
@@ -181568,7 +180295,7 @@ static void yyStackOverflow(yyParser *yypParser){
    ** stack every overflows */
 /******** Begin %stack_overflow code ******************************************/
 
-  if( pParse->nErr==0 ) sqlite3ErrorMsg(pParse, "Recursion limit");
+  sqlite3OomFault(pParse->db);
 /******** End %stack_overflow code ********************************************/
    sqlite3ParserARG_STORE /* Suppress warning about unused %extra_argument var */
    sqlite3ParserCTX_STORE
@@ -181756,8 +180483,8 @@ static const YYCODETYPE yyRuleInfoLhs[] = {
    240,  /* (119) fullname ::= nm DOT nm */
    265,  /* (120) xfullname ::= nm */
    265,  /* (121) xfullname ::= nm DOT nm */
-   265,  /* (122) xfullname ::= nm AS nm */
-   265,  /* (123) xfullname ::= nm DOT nm AS nm */
+   265,  /* (122) xfullname ::= nm DOT nm AS nm */
+   265,  /* (123) xfullname ::= nm AS nm */
    261,  /* (124) joinop ::= COMMA|JOIN */
    261,  /* (125) joinop ::= JOIN_KW JOIN */
    261,  /* (126) joinop ::= JOIN_KW nm JOIN */
@@ -181906,146 +180633,143 @@ static const YYCODETYPE yyRuleInfoLhs[] = {
    293,  /* (269) when_clause ::= WHEN expr */
    289,  /* (270) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
    289,  /* (271) trigger_cmd_list ::= trigger_cmd SEMI */
-   295,  /* (272) tridxby ::= INDEXED BY nm */
-   295,  /* (273) tridxby ::= NOT INDEXED */
-   294,  /* (274) trigger_cmd ::= UPDATE orconf xfullname tridxby SET setlist from where_opt scanpt */
-   294,  /* (275) trigger_cmd ::= scanpt insert_cmd INTO xfullname idlist_opt select upsert scanpt */
-   294,  /* (276) trigger_cmd ::= DELETE FROM xfullname tridxby where_opt scanpt */
-   294,  /* (277) trigger_cmd ::= scanpt select scanpt */
-   219,  /* (278) expr ::= RAISE LP IGNORE RP */
-   219,  /* (279) expr ::= RAISE LP raisetype COMMA expr RP */
-   238,  /* (280) raisetype ::= ROLLBACK */
-   238,  /* (281) raisetype ::= ABORT */
-   238,  /* (282) raisetype ::= FAIL */
-   192,  /* (283) cmd ::= DROP TRIGGER ifexists fullname */
-   192,  /* (284) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
-   192,  /* (285) cmd ::= DETACH database_kw_opt expr */
-   297,  /* (286) key_opt ::= */
-   297,  /* (287) key_opt ::= KEY expr */
-   192,  /* (288) cmd ::= REINDEX */
-   192,  /* (289) cmd ::= REINDEX nm dbnm */
-   192,  /* (290) cmd ::= ANALYZE */
-   192,  /* (291) cmd ::= ANALYZE nm dbnm */
-   192,  /* (292) cmd ::= ALTER TABLE fullname RENAME TO nm */
-   192,  /* (293) cmd ::= alter_add carglist */
-   298,  /* (294) alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
+   295,  /* (272) trnm ::= nm DOT nm */
+   296,  /* (273) tridxby ::= INDEXED BY nm */
+   296,  /* (274) tridxby ::= NOT INDEXED */
+   294,  /* (275) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
+   294,  /* (276) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
+   294,  /* (277) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
+   294,  /* (278) trigger_cmd ::= scanpt select scanpt */
+   219,  /* (279) expr ::= RAISE LP IGNORE RP */
+   219,  /* (280) expr ::= RAISE LP raisetype COMMA expr RP */
+   238,  /* (281) raisetype ::= ROLLBACK */
+   238,  /* (282) raisetype ::= ABORT */
+   238,  /* (283) raisetype ::= FAIL */
+   192,  /* (284) cmd ::= DROP TRIGGER ifexists fullname */
+   192,  /* (285) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+   192,  /* (286) cmd ::= DETACH database_kw_opt expr */
+   298,  /* (287) key_opt ::= */
+   298,  /* (288) key_opt ::= KEY expr */
+   192,  /* (289) cmd ::= REINDEX */
+   192,  /* (290) cmd ::= REINDEX nm dbnm */
+   192,  /* (291) cmd ::= ANALYZE */
+   192,  /* (292) cmd ::= ANALYZE nm dbnm */
+   192,  /* (293) cmd ::= ALTER TABLE fullname RENAME TO nm */
+   192,  /* (294) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
    192,  /* (295) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
-   192,  /* (296) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
-   192,  /* (297) cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
-   192,  /* (298) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
-   192,  /* (299) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
-   192,  /* (300) cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
-   192,  /* (301) cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
-   192,  /* (302) cmd ::= create_vtab */
-   192,  /* (303) cmd ::= create_vtab LP vtabarglist RP */
-   300,  /* (304) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
-   302,  /* (305) vtabarg ::= */
-   303,  /* (306) vtabargtoken ::= ANY */
-   303,  /* (307) vtabargtoken ::= lp anylist RP */
-   304,  /* (308) lp ::= LP */
-   269,  /* (309) with ::= WITH wqlist */
-   269,  /* (310) with ::= WITH RECURSIVE wqlist */
-   307,  /* (311) wqas ::= AS */
-   307,  /* (312) wqas ::= AS MATERIALIZED */
-   307,  /* (313) wqas ::= AS NOT MATERIALIZED */
-   306,  /* (314) wqitem ::= withnm eidlist_opt wqas LP select RP */
-   308,  /* (315) withnm ::= nm */
-   243,  /* (316) wqlist ::= wqitem */
-   243,  /* (317) wqlist ::= wqlist COMMA wqitem */
-   309,  /* (318) windowdefn_list ::= windowdefn_list COMMA windowdefn */
-   310,  /* (319) windowdefn ::= nm AS LP window RP */
-   311,  /* (320) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
-   311,  /* (321) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
-   311,  /* (322) window ::= ORDER BY sortlist frame_opt */
-   311,  /* (323) window ::= nm ORDER BY sortlist frame_opt */
-   311,  /* (324) window ::= nm frame_opt */
-   312,  /* (325) frame_opt ::= */
-   312,  /* (326) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
-   312,  /* (327) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
-   316,  /* (328) range_or_rows ::= RANGE|ROWS|GROUPS */
-   318,  /* (329) frame_bound_s ::= frame_bound */
-   318,  /* (330) frame_bound_s ::= UNBOUNDED PRECEDING */
-   319,  /* (331) frame_bound_e ::= frame_bound */
-   319,  /* (332) frame_bound_e ::= UNBOUNDED FOLLOWING */
-   317,  /* (333) frame_bound ::= expr PRECEDING|FOLLOWING */
-   317,  /* (334) frame_bound ::= CURRENT ROW */
-   320,  /* (335) frame_exclude_opt ::= */
-   320,  /* (336) frame_exclude_opt ::= EXCLUDE frame_exclude */
-   321,  /* (337) frame_exclude ::= NO OTHERS */
-   321,  /* (338) frame_exclude ::= CURRENT ROW */
-   321,  /* (339) frame_exclude ::= GROUP|TIES */
-   253,  /* (340) window_clause ::= WINDOW windowdefn_list */
-   276,  /* (341) filter_over ::= filter_clause over_clause */
-   276,  /* (342) filter_over ::= over_clause */
-   276,  /* (343) filter_over ::= filter_clause */
-   315,  /* (344) over_clause ::= OVER LP window RP */
-   315,  /* (345) over_clause ::= OVER nm */
-   314,  /* (346) filter_clause ::= FILTER LP WHERE expr RP */
-   218,  /* (347) term ::= QNUMBER */
-   187,  /* (348) input ::= cmdlist */
-   188,  /* (349) cmdlist ::= cmdlist ecmd */
-   188,  /* (350) cmdlist ::= ecmd */
-   189,  /* (351) ecmd ::= SEMI */
-   189,  /* (352) ecmd ::= cmdx SEMI */
-   189,  /* (353) ecmd ::= explain cmdx SEMI */
-   194,  /* (354) trans_opt ::= */
-   194,  /* (355) trans_opt ::= TRANSACTION */
-   194,  /* (356) trans_opt ::= TRANSACTION nm */
-   196,  /* (357) savepoint_opt ::= SAVEPOINT */
-   196,  /* (358) savepoint_opt ::= */
-   192,  /* (359) cmd ::= create_table create_table_args */
-   205,  /* (360) table_option_set ::= table_option */
-   203,  /* (361) columnlist ::= columnlist COMMA columnname carglist */
-   203,  /* (362) columnlist ::= columnname carglist */
-   195,  /* (363) nm ::= ID|INDEXED|JOIN_KW */
-   195,  /* (364) nm ::= STRING */
-   210,  /* (365) typetoken ::= typename */
-   211,  /* (366) typename ::= ID|STRING */
-   212,  /* (367) signed ::= plus_num */
-   212,  /* (368) signed ::= minus_num */
-   209,  /* (369) carglist ::= carglist ccons */
-   209,  /* (370) carglist ::= */
-   217,  /* (371) ccons ::= NULL onconf */
-   217,  /* (372) ccons ::= GENERATED ALWAYS AS generated */
-   217,  /* (373) ccons ::= AS generated */
-   204,  /* (374) conslist_opt ::= COMMA conslist */
-   230,  /* (375) conslist ::= conslist tconscomma tcons */
-   230,  /* (376) conslist ::= tcons */
-   231,  /* (377) tconscomma ::= */
-   235,  /* (378) defer_subclause_opt ::= defer_subclause */
-   237,  /* (379) resolvetype ::= raisetype */
-   241,  /* (380) selectnowith ::= oneselect */
-   242,  /* (381) oneselect ::= values */
-   257,  /* (382) sclp ::= selcollist COMMA */
-   258,  /* (383) as ::= ID|STRING */
-   267,  /* (384) indexed_opt ::= indexed_by */
-   275,  /* (385) returning ::= */
-   219,  /* (386) expr ::= term */
-   277,  /* (387) likeop ::= LIKE_KW|MATCH */
-   281,  /* (388) case_operand ::= expr */
-   264,  /* (389) exprlist ::= nexprlist */
-   287,  /* (390) nmnum ::= plus_num */
-   287,  /* (391) nmnum ::= nm */
-   287,  /* (392) nmnum ::= ON */
-   287,  /* (393) nmnum ::= DELETE */
-   287,  /* (394) nmnum ::= DEFAULT */
-   213,  /* (395) plus_num ::= INTEGER|FLOAT */
-   292,  /* (396) foreach_clause ::= */
-   292,  /* (397) foreach_clause ::= FOR EACH ROW */
-   295,  /* (398) tridxby ::= */
-   296,  /* (399) database_kw_opt ::= DATABASE */
-   296,  /* (400) database_kw_opt ::= */
-   299,  /* (401) kwcolumn_opt ::= */
-   299,  /* (402) kwcolumn_opt ::= COLUMNKW */
-   301,  /* (403) vtabarglist ::= vtabarg */
-   301,  /* (404) vtabarglist ::= vtabarglist COMMA vtabarg */
-   302,  /* (405) vtabarg ::= vtabarg vtabargtoken */
-   305,  /* (406) anylist ::= */
-   305,  /* (407) anylist ::= anylist LP anylist RP */
-   305,  /* (408) anylist ::= anylist ANY */
-   269,  /* (409) with ::= */
-   309,  /* (410) windowdefn_list ::= windowdefn */
-   311,  /* (411) window ::= frame_opt */
+   299,  /* (296) add_column_fullname ::= fullname */
+   192,  /* (297) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
+   192,  /* (298) cmd ::= create_vtab */
+   192,  /* (299) cmd ::= create_vtab LP vtabarglist RP */
+   301,  /* (300) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+   303,  /* (301) vtabarg ::= */
+   304,  /* (302) vtabargtoken ::= ANY */
+   304,  /* (303) vtabargtoken ::= lp anylist RP */
+   305,  /* (304) lp ::= LP */
+   269,  /* (305) with ::= WITH wqlist */
+   269,  /* (306) with ::= WITH RECURSIVE wqlist */
+   308,  /* (307) wqas ::= AS */
+   308,  /* (308) wqas ::= AS MATERIALIZED */
+   308,  /* (309) wqas ::= AS NOT MATERIALIZED */
+   307,  /* (310) wqitem ::= withnm eidlist_opt wqas LP select RP */
+   309,  /* (311) withnm ::= nm */
+   243,  /* (312) wqlist ::= wqitem */
+   243,  /* (313) wqlist ::= wqlist COMMA wqitem */
+   310,  /* (314) windowdefn_list ::= windowdefn_list COMMA windowdefn */
+   311,  /* (315) windowdefn ::= nm AS LP window RP */
+   312,  /* (316) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+   312,  /* (317) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+   312,  /* (318) window ::= ORDER BY sortlist frame_opt */
+   312,  /* (319) window ::= nm ORDER BY sortlist frame_opt */
+   312,  /* (320) window ::= nm frame_opt */
+   313,  /* (321) frame_opt ::= */
+   313,  /* (322) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+   313,  /* (323) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+   317,  /* (324) range_or_rows ::= RANGE|ROWS|GROUPS */
+   319,  /* (325) frame_bound_s ::= frame_bound */
+   319,  /* (326) frame_bound_s ::= UNBOUNDED PRECEDING */
+   320,  /* (327) frame_bound_e ::= frame_bound */
+   320,  /* (328) frame_bound_e ::= UNBOUNDED FOLLOWING */
+   318,  /* (329) frame_bound ::= expr PRECEDING|FOLLOWING */
+   318,  /* (330) frame_bound ::= CURRENT ROW */
+   321,  /* (331) frame_exclude_opt ::= */
+   321,  /* (332) frame_exclude_opt ::= EXCLUDE frame_exclude */
+   322,  /* (333) frame_exclude ::= NO OTHERS */
+   322,  /* (334) frame_exclude ::= CURRENT ROW */
+   322,  /* (335) frame_exclude ::= GROUP|TIES */
+   253,  /* (336) window_clause ::= WINDOW windowdefn_list */
+   276,  /* (337) filter_over ::= filter_clause over_clause */
+   276,  /* (338) filter_over ::= over_clause */
+   276,  /* (339) filter_over ::= filter_clause */
+   316,  /* (340) over_clause ::= OVER LP window RP */
+   316,  /* (341) over_clause ::= OVER nm */
+   315,  /* (342) filter_clause ::= FILTER LP WHERE expr RP */
+   218,  /* (343) term ::= QNUMBER */
+   187,  /* (344) input ::= cmdlist */
+   188,  /* (345) cmdlist ::= cmdlist ecmd */
+   188,  /* (346) cmdlist ::= ecmd */
+   189,  /* (347) ecmd ::= SEMI */
+   189,  /* (348) ecmd ::= cmdx SEMI */
+   189,  /* (349) ecmd ::= explain cmdx SEMI */
+   194,  /* (350) trans_opt ::= */
+   194,  /* (351) trans_opt ::= TRANSACTION */
+   194,  /* (352) trans_opt ::= TRANSACTION nm */
+   196,  /* (353) savepoint_opt ::= SAVEPOINT */
+   196,  /* (354) savepoint_opt ::= */
+   192,  /* (355) cmd ::= create_table create_table_args */
+   205,  /* (356) table_option_set ::= table_option */
+   203,  /* (357) columnlist ::= columnlist COMMA columnname carglist */
+   203,  /* (358) columnlist ::= columnname carglist */
+   195,  /* (359) nm ::= ID|INDEXED|JOIN_KW */
+   195,  /* (360) nm ::= STRING */
+   210,  /* (361) typetoken ::= typename */
+   211,  /* (362) typename ::= ID|STRING */
+   212,  /* (363) signed ::= plus_num */
+   212,  /* (364) signed ::= minus_num */
+   209,  /* (365) carglist ::= carglist ccons */
+   209,  /* (366) carglist ::= */
+   217,  /* (367) ccons ::= NULL onconf */
+   217,  /* (368) ccons ::= GENERATED ALWAYS AS generated */
+   217,  /* (369) ccons ::= AS generated */
+   204,  /* (370) conslist_opt ::= COMMA conslist */
+   230,  /* (371) conslist ::= conslist tconscomma tcons */
+   230,  /* (372) conslist ::= tcons */
+   231,  /* (373) tconscomma ::= */
+   235,  /* (374) defer_subclause_opt ::= defer_subclause */
+   237,  /* (375) resolvetype ::= raisetype */
+   241,  /* (376) selectnowith ::= oneselect */
+   242,  /* (377) oneselect ::= values */
+   257,  /* (378) sclp ::= selcollist COMMA */
+   258,  /* (379) as ::= ID|STRING */
+   267,  /* (380) indexed_opt ::= indexed_by */
+   275,  /* (381) returning ::= */
+   219,  /* (382) expr ::= term */
+   277,  /* (383) likeop ::= LIKE_KW|MATCH */
+   281,  /* (384) case_operand ::= expr */
+   264,  /* (385) exprlist ::= nexprlist */
+   287,  /* (386) nmnum ::= plus_num */
+   287,  /* (387) nmnum ::= nm */
+   287,  /* (388) nmnum ::= ON */
+   287,  /* (389) nmnum ::= DELETE */
+   287,  /* (390) nmnum ::= DEFAULT */
+   213,  /* (391) plus_num ::= INTEGER|FLOAT */
+   292,  /* (392) foreach_clause ::= */
+   292,  /* (393) foreach_clause ::= FOR EACH ROW */
+   295,  /* (394) trnm ::= nm */
+   296,  /* (395) tridxby ::= */
+   297,  /* (396) database_kw_opt ::= DATABASE */
+   297,  /* (397) database_kw_opt ::= */
+   300,  /* (398) kwcolumn_opt ::= */
+   300,  /* (399) kwcolumn_opt ::= COLUMNKW */
+   302,  /* (400) vtabarglist ::= vtabarg */
+   302,  /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */
+   303,  /* (402) vtabarg ::= vtabarg vtabargtoken */
+   306,  /* (403) anylist ::= */
+   306,  /* (404) anylist ::= anylist LP anylist RP */
+   306,  /* (405) anylist ::= anylist ANY */
+   269,  /* (406) with ::= */
+   310,  /* (407) windowdefn_list ::= windowdefn */
+   312,  /* (408) window ::= frame_opt */
 };
 
 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
@@ -182173,8 +180897,8 @@ static const signed char yyRuleInfoNRhs[] = {
    -3,  /* (119) fullname ::= nm DOT nm */
    -1,  /* (120) xfullname ::= nm */
    -3,  /* (121) xfullname ::= nm DOT nm */
-   -3,  /* (122) xfullname ::= nm AS nm */
-   -5,  /* (123) xfullname ::= nm DOT nm AS nm */
+   -5,  /* (122) xfullname ::= nm DOT nm AS nm */
+   -3,  /* (123) xfullname ::= nm AS nm */
    -1,  /* (124) joinop ::= COMMA|JOIN */
    -2,  /* (125) joinop ::= JOIN_KW JOIN */
    -3,  /* (126) joinop ::= JOIN_KW nm JOIN */
@@ -182323,146 +181047,143 @@ static const signed char yyRuleInfoNRhs[] = {
    -2,  /* (269) when_clause ::= WHEN expr */
    -3,  /* (270) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
    -2,  /* (271) trigger_cmd_list ::= trigger_cmd SEMI */
-   -3,  /* (272) tridxby ::= INDEXED BY nm */
-   -2,  /* (273) tridxby ::= NOT INDEXED */
-   -9,  /* (274) trigger_cmd ::= UPDATE orconf xfullname tridxby SET setlist from where_opt scanpt */
-   -8,  /* (275) trigger_cmd ::= scanpt insert_cmd INTO xfullname idlist_opt select upsert scanpt */
-   -6,  /* (276) trigger_cmd ::= DELETE FROM xfullname tridxby where_opt scanpt */
-   -3,  /* (277) trigger_cmd ::= scanpt select scanpt */
-   -4,  /* (278) expr ::= RAISE LP IGNORE RP */
-   -6,  /* (279) expr ::= RAISE LP raisetype COMMA expr RP */
-   -1,  /* (280) raisetype ::= ROLLBACK */
-   -1,  /* (281) raisetype ::= ABORT */
-   -1,  /* (282) raisetype ::= FAIL */
-   -4,  /* (283) cmd ::= DROP TRIGGER ifexists fullname */
-   -6,  /* (284) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
-   -3,  /* (285) cmd ::= DETACH database_kw_opt expr */
-    0,  /* (286) key_opt ::= */
-   -2,  /* (287) key_opt ::= KEY expr */
-   -1,  /* (288) cmd ::= REINDEX */
-   -3,  /* (289) cmd ::= REINDEX nm dbnm */
-   -1,  /* (290) cmd ::= ANALYZE */
-   -3,  /* (291) cmd ::= ANALYZE nm dbnm */
-   -6,  /* (292) cmd ::= ALTER TABLE fullname RENAME TO nm */
-   -2,  /* (293) cmd ::= alter_add carglist */
-   -7,  /* (294) alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
+   -3,  /* (272) trnm ::= nm DOT nm */
+   -3,  /* (273) tridxby ::= INDEXED BY nm */
+   -2,  /* (274) tridxby ::= NOT INDEXED */
+   -9,  /* (275) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
+   -8,  /* (276) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
+   -6,  /* (277) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
+   -3,  /* (278) trigger_cmd ::= scanpt select scanpt */
+   -4,  /* (279) expr ::= RAISE LP IGNORE RP */
+   -6,  /* (280) expr ::= RAISE LP raisetype COMMA expr RP */
+   -1,  /* (281) raisetype ::= ROLLBACK */
+   -1,  /* (282) raisetype ::= ABORT */
+   -1,  /* (283) raisetype ::= FAIL */
+   -4,  /* (284) cmd ::= DROP TRIGGER ifexists fullname */
+   -6,  /* (285) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+   -3,  /* (286) cmd ::= DETACH database_kw_opt expr */
+    0,  /* (287) key_opt ::= */
+   -2,  /* (288) key_opt ::= KEY expr */
+   -1,  /* (289) cmd ::= REINDEX */
+   -3,  /* (290) cmd ::= REINDEX nm dbnm */
+   -1,  /* (291) cmd ::= ANALYZE */
+   -3,  /* (292) cmd ::= ANALYZE nm dbnm */
+   -6,  /* (293) cmd ::= ALTER TABLE fullname RENAME TO nm */
+   -7,  /* (294) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
    -6,  /* (295) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
-   -8,  /* (296) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
-   -6,  /* (297) cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
-   -9,  /* (298) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
-  -10,  /* (299) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
-  -11,  /* (300) cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
-   -9,  /* (301) cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
-   -1,  /* (302) cmd ::= create_vtab */
-   -4,  /* (303) cmd ::= create_vtab LP vtabarglist RP */
-   -8,  /* (304) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
-    0,  /* (305) vtabarg ::= */
-   -1,  /* (306) vtabargtoken ::= ANY */
-   -3,  /* (307) vtabargtoken ::= lp anylist RP */
-   -1,  /* (308) lp ::= LP */
-   -2,  /* (309) with ::= WITH wqlist */
-   -3,  /* (310) with ::= WITH RECURSIVE wqlist */
-   -1,  /* (311) wqas ::= AS */
-   -2,  /* (312) wqas ::= AS MATERIALIZED */
-   -3,  /* (313) wqas ::= AS NOT MATERIALIZED */
-   -6,  /* (314) wqitem ::= withnm eidlist_opt wqas LP select RP */
-   -1,  /* (315) withnm ::= nm */
-   -1,  /* (316) wqlist ::= wqitem */
-   -3,  /* (317) wqlist ::= wqlist COMMA wqitem */
-   -3,  /* (318) windowdefn_list ::= windowdefn_list COMMA windowdefn */
-   -5,  /* (319) windowdefn ::= nm AS LP window RP */
-   -5,  /* (320) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
-   -6,  /* (321) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
-   -4,  /* (322) window ::= ORDER BY sortlist frame_opt */
-   -5,  /* (323) window ::= nm ORDER BY sortlist frame_opt */
-   -2,  /* (324) window ::= nm frame_opt */
-    0,  /* (325) frame_opt ::= */
-   -3,  /* (326) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
-   -6,  /* (327) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
-   -1,  /* (328) range_or_rows ::= RANGE|ROWS|GROUPS */
-   -1,  /* (329) frame_bound_s ::= frame_bound */
-   -2,  /* (330) frame_bound_s ::= UNBOUNDED PRECEDING */
-   -1,  /* (331) frame_bound_e ::= frame_bound */
-   -2,  /* (332) frame_bound_e ::= UNBOUNDED FOLLOWING */
-   -2,  /* (333) frame_bound ::= expr PRECEDING|FOLLOWING */
-   -2,  /* (334) frame_bound ::= CURRENT ROW */
-    0,  /* (335) frame_exclude_opt ::= */
-   -2,  /* (336) frame_exclude_opt ::= EXCLUDE frame_exclude */
-   -2,  /* (337) frame_exclude ::= NO OTHERS */
-   -2,  /* (338) frame_exclude ::= CURRENT ROW */
-   -1,  /* (339) frame_exclude ::= GROUP|TIES */
-   -2,  /* (340) window_clause ::= WINDOW windowdefn_list */
-   -2,  /* (341) filter_over ::= filter_clause over_clause */
-   -1,  /* (342) filter_over ::= over_clause */
-   -1,  /* (343) filter_over ::= filter_clause */
-   -4,  /* (344) over_clause ::= OVER LP window RP */
-   -2,  /* (345) over_clause ::= OVER nm */
-   -5,  /* (346) filter_clause ::= FILTER LP WHERE expr RP */
-   -1,  /* (347) term ::= QNUMBER */
-   -1,  /* (348) input ::= cmdlist */
-   -2,  /* (349) cmdlist ::= cmdlist ecmd */
-   -1,  /* (350) cmdlist ::= ecmd */
-   -1,  /* (351) ecmd ::= SEMI */
-   -2,  /* (352) ecmd ::= cmdx SEMI */
-   -3,  /* (353) ecmd ::= explain cmdx SEMI */
-    0,  /* (354) trans_opt ::= */
-   -1,  /* (355) trans_opt ::= TRANSACTION */
-   -2,  /* (356) trans_opt ::= TRANSACTION nm */
-   -1,  /* (357) savepoint_opt ::= SAVEPOINT */
-    0,  /* (358) savepoint_opt ::= */
-   -2,  /* (359) cmd ::= create_table create_table_args */
-   -1,  /* (360) table_option_set ::= table_option */
-   -4,  /* (361) columnlist ::= columnlist COMMA columnname carglist */
-   -2,  /* (362) columnlist ::= columnname carglist */
-   -1,  /* (363) nm ::= ID|INDEXED|JOIN_KW */
-   -1,  /* (364) nm ::= STRING */
-   -1,  /* (365) typetoken ::= typename */
-   -1,  /* (366) typename ::= ID|STRING */
-   -1,  /* (367) signed ::= plus_num */
-   -1,  /* (368) signed ::= minus_num */
-   -2,  /* (369) carglist ::= carglist ccons */
-    0,  /* (370) carglist ::= */
-   -2,  /* (371) ccons ::= NULL onconf */
-   -4,  /* (372) ccons ::= GENERATED ALWAYS AS generated */
-   -2,  /* (373) ccons ::= AS generated */
-   -2,  /* (374) conslist_opt ::= COMMA conslist */
-   -3,  /* (375) conslist ::= conslist tconscomma tcons */
-   -1,  /* (376) conslist ::= tcons */
-    0,  /* (377) tconscomma ::= */
-   -1,  /* (378) defer_subclause_opt ::= defer_subclause */
-   -1,  /* (379) resolvetype ::= raisetype */
-   -1,  /* (380) selectnowith ::= oneselect */
-   -1,  /* (381) oneselect ::= values */
-   -2,  /* (382) sclp ::= selcollist COMMA */
-   -1,  /* (383) as ::= ID|STRING */
-   -1,  /* (384) indexed_opt ::= indexed_by */
-    0,  /* (385) returning ::= */
-   -1,  /* (386) expr ::= term */
-   -1,  /* (387) likeop ::= LIKE_KW|MATCH */
-   -1,  /* (388) case_operand ::= expr */
-   -1,  /* (389) exprlist ::= nexprlist */
-   -1,  /* (390) nmnum ::= plus_num */
-   -1,  /* (391) nmnum ::= nm */
-   -1,  /* (392) nmnum ::= ON */
-   -1,  /* (393) nmnum ::= DELETE */
-   -1,  /* (394) nmnum ::= DEFAULT */
-   -1,  /* (395) plus_num ::= INTEGER|FLOAT */
-    0,  /* (396) foreach_clause ::= */
-   -3,  /* (397) foreach_clause ::= FOR EACH ROW */
-    0,  /* (398) tridxby ::= */
-   -1,  /* (399) database_kw_opt ::= DATABASE */
-    0,  /* (400) database_kw_opt ::= */
-    0,  /* (401) kwcolumn_opt ::= */
-   -1,  /* (402) kwcolumn_opt ::= COLUMNKW */
-   -1,  /* (403) vtabarglist ::= vtabarg */
-   -3,  /* (404) vtabarglist ::= vtabarglist COMMA vtabarg */
-   -2,  /* (405) vtabarg ::= vtabarg vtabargtoken */
-    0,  /* (406) anylist ::= */
-   -4,  /* (407) anylist ::= anylist LP anylist RP */
-   -2,  /* (408) anylist ::= anylist ANY */
-    0,  /* (409) with ::= */
-   -1,  /* (410) windowdefn_list ::= windowdefn */
-   -1,  /* (411) window ::= frame_opt */
+   -1,  /* (296) add_column_fullname ::= fullname */
+   -8,  /* (297) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
+   -1,  /* (298) cmd ::= create_vtab */
+   -4,  /* (299) cmd ::= create_vtab LP vtabarglist RP */
+   -8,  /* (300) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+    0,  /* (301) vtabarg ::= */
+   -1,  /* (302) vtabargtoken ::= ANY */
+   -3,  /* (303) vtabargtoken ::= lp anylist RP */
+   -1,  /* (304) lp ::= LP */
+   -2,  /* (305) with ::= WITH wqlist */
+   -3,  /* (306) with ::= WITH RECURSIVE wqlist */
+   -1,  /* (307) wqas ::= AS */
+   -2,  /* (308) wqas ::= AS MATERIALIZED */
+   -3,  /* (309) wqas ::= AS NOT MATERIALIZED */
+   -6,  /* (310) wqitem ::= withnm eidlist_opt wqas LP select RP */
+   -1,  /* (311) withnm ::= nm */
+   -1,  /* (312) wqlist ::= wqitem */
+   -3,  /* (313) wqlist ::= wqlist COMMA wqitem */
+   -3,  /* (314) windowdefn_list ::= windowdefn_list COMMA windowdefn */
+   -5,  /* (315) windowdefn ::= nm AS LP window RP */
+   -5,  /* (316) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+   -6,  /* (317) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+   -4,  /* (318) window ::= ORDER BY sortlist frame_opt */
+   -5,  /* (319) window ::= nm ORDER BY sortlist frame_opt */
+   -2,  /* (320) window ::= nm frame_opt */
+    0,  /* (321) frame_opt ::= */
+   -3,  /* (322) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+   -6,  /* (323) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+   -1,  /* (324) range_or_rows ::= RANGE|ROWS|GROUPS */
+   -1,  /* (325) frame_bound_s ::= frame_bound */
+   -2,  /* (326) frame_bound_s ::= UNBOUNDED PRECEDING */
+   -1,  /* (327) frame_bound_e ::= frame_bound */
+   -2,  /* (328) frame_bound_e ::= UNBOUNDED FOLLOWING */
+   -2,  /* (329) frame_bound ::= expr PRECEDING|FOLLOWING */
+   -2,  /* (330) frame_bound ::= CURRENT ROW */
+    0,  /* (331) frame_exclude_opt ::= */
+   -2,  /* (332) frame_exclude_opt ::= EXCLUDE frame_exclude */
+   -2,  /* (333) frame_exclude ::= NO OTHERS */
+   -2,  /* (334) frame_exclude ::= CURRENT ROW */
+   -1,  /* (335) frame_exclude ::= GROUP|TIES */
+   -2,  /* (336) window_clause ::= WINDOW windowdefn_list */
+   -2,  /* (337) filter_over ::= filter_clause over_clause */
+   -1,  /* (338) filter_over ::= over_clause */
+   -1,  /* (339) filter_over ::= filter_clause */
+   -4,  /* (340) over_clause ::= OVER LP window RP */
+   -2,  /* (341) over_clause ::= OVER nm */
+   -5,  /* (342) filter_clause ::= FILTER LP WHERE expr RP */
+   -1,  /* (343) term ::= QNUMBER */
+   -1,  /* (344) input ::= cmdlist */
+   -2,  /* (345) cmdlist ::= cmdlist ecmd */
+   -1,  /* (346) cmdlist ::= ecmd */
+   -1,  /* (347) ecmd ::= SEMI */
+   -2,  /* (348) ecmd ::= cmdx SEMI */
+   -3,  /* (349) ecmd ::= explain cmdx SEMI */
+    0,  /* (350) trans_opt ::= */
+   -1,  /* (351) trans_opt ::= TRANSACTION */
+   -2,  /* (352) trans_opt ::= TRANSACTION nm */
+   -1,  /* (353) savepoint_opt ::= SAVEPOINT */
+    0,  /* (354) savepoint_opt ::= */
+   -2,  /* (355) cmd ::= create_table create_table_args */
+   -1,  /* (356) table_option_set ::= table_option */
+   -4,  /* (357) columnlist ::= columnlist COMMA columnname carglist */
+   -2,  /* (358) columnlist ::= columnname carglist */
+   -1,  /* (359) nm ::= ID|INDEXED|JOIN_KW */
+   -1,  /* (360) nm ::= STRING */
+   -1,  /* (361) typetoken ::= typename */
+   -1,  /* (362) typename ::= ID|STRING */
+   -1,  /* (363) signed ::= plus_num */
+   -1,  /* (364) signed ::= minus_num */
+   -2,  /* (365) carglist ::= carglist ccons */
+    0,  /* (366) carglist ::= */
+   -2,  /* (367) ccons ::= NULL onconf */
+   -4,  /* (368) ccons ::= GENERATED ALWAYS AS generated */
+   -2,  /* (369) ccons ::= AS generated */
+   -2,  /* (370) conslist_opt ::= COMMA conslist */
+   -3,  /* (371) conslist ::= conslist tconscomma tcons */
+   -1,  /* (372) conslist ::= tcons */
+    0,  /* (373) tconscomma ::= */
+   -1,  /* (374) defer_subclause_opt ::= defer_subclause */
+   -1,  /* (375) resolvetype ::= raisetype */
+   -1,  /* (376) selectnowith ::= oneselect */
+   -1,  /* (377) oneselect ::= values */
+   -2,  /* (378) sclp ::= selcollist COMMA */
+   -1,  /* (379) as ::= ID|STRING */
+   -1,  /* (380) indexed_opt ::= indexed_by */
+    0,  /* (381) returning ::= */
+   -1,  /* (382) expr ::= term */
+   -1,  /* (383) likeop ::= LIKE_KW|MATCH */
+   -1,  /* (384) case_operand ::= expr */
+   -1,  /* (385) exprlist ::= nexprlist */
+   -1,  /* (386) nmnum ::= plus_num */
+   -1,  /* (387) nmnum ::= nm */
+   -1,  /* (388) nmnum ::= ON */
+   -1,  /* (389) nmnum ::= DELETE */
+   -1,  /* (390) nmnum ::= DEFAULT */
+   -1,  /* (391) plus_num ::= INTEGER|FLOAT */
+    0,  /* (392) foreach_clause ::= */
+   -3,  /* (393) foreach_clause ::= FOR EACH ROW */
+   -1,  /* (394) trnm ::= nm */
+    0,  /* (395) tridxby ::= */
+   -1,  /* (396) database_kw_opt ::= DATABASE */
+    0,  /* (397) database_kw_opt ::= */
+    0,  /* (398) kwcolumn_opt ::= */
+   -1,  /* (399) kwcolumn_opt ::= COLUMNKW */
+   -1,  /* (400) vtabarglist ::= vtabarg */
+   -3,  /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */
+   -2,  /* (402) vtabarg ::= vtabarg vtabargtoken */
+    0,  /* (403) anylist ::= */
+   -4,  /* (404) anylist ::= anylist LP anylist RP */
+   -2,  /* (405) anylist ::= anylist ANY */
+    0,  /* (406) with ::= */
+   -1,  /* (407) windowdefn_list ::= windowdefn */
+   -1,  /* (408) window ::= frame_opt */
 };
 
 static void yy_accept(yyParser*);  /* Forward Declaration */
@@ -182514,16 +181235,16 @@ static YYACTIONTYPE yy_reduce(
 { sqlite3FinishCoding(pParse); }
         break;
       case 3: /* cmd ::= BEGIN transtype trans_opt */
-{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy144);}
+{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy502);}
         break;
       case 4: /* transtype ::= */
-{yymsp[1].minor.yy144 = TK_DEFERRED;}
+{yymsp[1].minor.yy502 = TK_DEFERRED;}
         break;
       case 5: /* transtype ::= DEFERRED */
       case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
       case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
-      case 328: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==328);
-{yymsp[0].minor.yy144 = yymsp[0].major; /*A-overwrites-X*/}
+      case 324: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==324);
+{yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-X*/}
         break;
       case 8: /* cmd ::= COMMIT|END trans_opt */
       case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
@@ -182546,7 +181267,7 @@ static YYACTIONTYPE yy_reduce(
         break;
       case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
 {
-   sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy144,0,0,yymsp[-2].minor.yy144);
+   sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy502,0,0,yymsp[-2].minor.yy502);
 }
         break;
       case 14: /* createkw ::= CREATE */
@@ -182562,38 +181283,38 @@ static YYACTIONTYPE yy_reduce(
       case 81: /* ifexists ::= */ yytestcase(yyruleno==81);
       case 100: /* distinct ::= */ yytestcase(yyruleno==100);
       case 246: /* collate ::= */ yytestcase(yyruleno==246);
-{yymsp[1].minor.yy144 = 0;}
+{yymsp[1].minor.yy502 = 0;}
         break;
       case 16: /* ifnotexists ::= IF NOT EXISTS */
-{yymsp[-2].minor.yy144 = 1;}
+{yymsp[-2].minor.yy502 = 1;}
         break;
       case 17: /* temp ::= TEMP */
-{yymsp[0].minor.yy144 = pParse->db->init.busy==0;}
+{yymsp[0].minor.yy502 = pParse->db->init.busy==0;}
         break;
       case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_option_set */
 {
-  sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy391,0);
+  sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy9,0);
 }
         break;
       case 20: /* create_table_args ::= AS select */
 {
-  sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy555);
-  sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy555);
+  sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy637);
+  sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy637);
 }
         break;
       case 21: /* table_option_set ::= */
-{yymsp[1].minor.yy391 = 0;}
+{yymsp[1].minor.yy9 = 0;}
         break;
       case 22: /* table_option_set ::= table_option_set COMMA table_option */
-{yylhsminor.yy391 = yymsp[-2].minor.yy391|yymsp[0].minor.yy391;}
-  yymsp[-2].minor.yy391 = yylhsminor.yy391;
+{yylhsminor.yy9 = yymsp[-2].minor.yy9|yymsp[0].minor.yy9;}
+  yymsp[-2].minor.yy9 = yylhsminor.yy9;
         break;
       case 23: /* table_option ::= WITHOUT nm */
 {
   if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
-    yymsp[-1].minor.yy391 = TF_WithoutRowid | TF_NoVisibleRowid;
+    yymsp[-1].minor.yy9 = TF_WithoutRowid | TF_NoVisibleRowid;
   }else{
-    yymsp[-1].minor.yy391 = 0;
+    yymsp[-1].minor.yy9 = 0;
     sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
   }
 }
@@ -182601,13 +181322,13 @@ static YYACTIONTYPE yy_reduce(
       case 24: /* table_option ::= nm */
 {
   if( yymsp[0].minor.yy0.n==6 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"strict",6)==0 ){
-    yylhsminor.yy391 = TF_Strict;
+    yylhsminor.yy9 = TF_Strict;
   }else{
-    yylhsminor.yy391 = 0;
+    yylhsminor.yy9 = 0;
     sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
   }
 }
-  yymsp[0].minor.yy391 = yylhsminor.yy391;
+  yymsp[0].minor.yy9 = yylhsminor.yy9;
         break;
       case 25: /* columnname ::= nm typetoken */
 {sqlite3AddColumn(pParse,yymsp[-1].minor.yy0,yymsp[0].minor.yy0);}
@@ -182633,7 +181354,7 @@ static YYACTIONTYPE yy_reduce(
       case 30: /* scanpt ::= */
 {
   assert( yyLookahead!=YYNOCODE );
-  yymsp[1].minor.yy168 = yyLookaheadToken.z;
+  yymsp[1].minor.yy342 = yyLookaheadToken.z;
 }
         break;
       case 31: /* scantok ::= */
@@ -182647,17 +181368,17 @@ static YYACTIONTYPE yy_reduce(
 {ASSERT_IS_CREATE; pParse->u1.cr.constraintName = yymsp[0].minor.yy0;}
         break;
       case 33: /* ccons ::= DEFAULT scantok term */
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy454,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy590,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
         break;
       case 34: /* ccons ::= DEFAULT LP expr RP */
-{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy454,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
+{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy590,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
         break;
       case 35: /* ccons ::= DEFAULT PLUS scantok term */
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy454,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy590,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
         break;
       case 36: /* ccons ::= DEFAULT MINUS scantok term */
 {
-  Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy454, 0);
+  Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy590, 0);
   sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
 }
         break;
@@ -182672,133 +181393,133 @@ static YYACTIONTYPE yy_reduce(
 }
         break;
       case 38: /* ccons ::= NOT NULL onconf */
-{sqlite3AddNotNull(pParse, yymsp[0].minor.yy144);}
+{sqlite3AddNotNull(pParse, yymsp[0].minor.yy502);}
         break;
       case 39: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
-{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy144,yymsp[0].minor.yy144,yymsp[-2].minor.yy144);}
+{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy502,yymsp[0].minor.yy502,yymsp[-2].minor.yy502);}
         break;
       case 40: /* ccons ::= UNIQUE onconf */
-{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy144,0,0,0,0,
+{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy502,0,0,0,0,
                                    SQLITE_IDXTYPE_UNIQUE);}
         break;
       case 41: /* ccons ::= CHECK LP expr RP */
-{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy454,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
+{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy590,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
         break;
       case 42: /* ccons ::= REFERENCES nm eidlist_opt refargs */
-{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy14,yymsp[0].minor.yy144);}
+{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy402,yymsp[0].minor.yy502);}
         break;
       case 43: /* ccons ::= defer_subclause */
-{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy144);}
+{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy502);}
         break;
       case 44: /* ccons ::= COLLATE ID|STRING */
 {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
         break;
       case 45: /* generated ::= LP expr RP */
-{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy454,0);}
+{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy590,0);}
         break;
       case 46: /* generated ::= LP expr RP ID */
-{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy454,&yymsp[0].minor.yy0);}
+{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy590,&yymsp[0].minor.yy0);}
         break;
       case 48: /* autoinc ::= AUTOINCR */
-{yymsp[0].minor.yy144 = 1;}
+{yymsp[0].minor.yy502 = 1;}
         break;
       case 49: /* refargs ::= */
-{ yymsp[1].minor.yy144 = OE_None*0x0101; /* EV: R-19803-45884 */}
+{ yymsp[1].minor.yy502 = OE_None*0x0101; /* EV: R-19803-45884 */}
         break;
       case 50: /* refargs ::= refargs refarg */
-{ yymsp[-1].minor.yy144 = (yymsp[-1].minor.yy144 & ~yymsp[0].minor.yy383.mask) | yymsp[0].minor.yy383.value; }
+{ yymsp[-1].minor.yy502 = (yymsp[-1].minor.yy502 & ~yymsp[0].minor.yy481.mask) | yymsp[0].minor.yy481.value; }
         break;
       case 51: /* refarg ::= MATCH nm */
-{ yymsp[-1].minor.yy383.value = 0;     yymsp[-1].minor.yy383.mask = 0x000000; }
+{ yymsp[-1].minor.yy481.value = 0;     yymsp[-1].minor.yy481.mask = 0x000000; }
         break;
       case 52: /* refarg ::= ON INSERT refact */
-{ yymsp[-2].minor.yy383.value = 0;     yymsp[-2].minor.yy383.mask = 0x000000; }
+{ yymsp[-2].minor.yy481.value = 0;     yymsp[-2].minor.yy481.mask = 0x000000; }
         break;
       case 53: /* refarg ::= ON DELETE refact */
-{ yymsp[-2].minor.yy383.value = yymsp[0].minor.yy144;     yymsp[-2].minor.yy383.mask = 0x0000ff; }
+{ yymsp[-2].minor.yy481.value = yymsp[0].minor.yy502;     yymsp[-2].minor.yy481.mask = 0x0000ff; }
         break;
       case 54: /* refarg ::= ON UPDATE refact */
-{ yymsp[-2].minor.yy383.value = yymsp[0].minor.yy144<<8;  yymsp[-2].minor.yy383.mask = 0x00ff00; }
+{ yymsp[-2].minor.yy481.value = yymsp[0].minor.yy502<<8;  yymsp[-2].minor.yy481.mask = 0x00ff00; }
         break;
       case 55: /* refact ::= SET NULL */
-{ yymsp[-1].minor.yy144 = OE_SetNull;  /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy502 = OE_SetNull;  /* EV: R-33326-45252 */}
         break;
       case 56: /* refact ::= SET DEFAULT */
-{ yymsp[-1].minor.yy144 = OE_SetDflt;  /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy502 = OE_SetDflt;  /* EV: R-33326-45252 */}
         break;
       case 57: /* refact ::= CASCADE */
-{ yymsp[0].minor.yy144 = OE_Cascade;  /* EV: R-33326-45252 */}
+{ yymsp[0].minor.yy502 = OE_Cascade;  /* EV: R-33326-45252 */}
         break;
       case 58: /* refact ::= RESTRICT */
-{ yymsp[0].minor.yy144 = OE_Restrict; /* EV: R-33326-45252 */}
+{ yymsp[0].minor.yy502 = OE_Restrict; /* EV: R-33326-45252 */}
         break;
       case 59: /* refact ::= NO ACTION */
-{ yymsp[-1].minor.yy144 = OE_None;     /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy502 = OE_None;     /* EV: R-33326-45252 */}
         break;
       case 60: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
-{yymsp[-2].minor.yy144 = 0;}
+{yymsp[-2].minor.yy502 = 0;}
         break;
       case 61: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
       case 76: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==76);
       case 173: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==173);
-{yymsp[-1].minor.yy144 = yymsp[0].minor.yy144;}
+{yymsp[-1].minor.yy502 = yymsp[0].minor.yy502;}
         break;
       case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
       case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
       case 219: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==219);
       case 222: /* in_op ::= NOT IN */ yytestcase(yyruleno==222);
       case 247: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==247);
-{yymsp[-1].minor.yy144 = 1;}
+{yymsp[-1].minor.yy502 = 1;}
         break;
       case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
-{yymsp[-1].minor.yy144 = 0;}
+{yymsp[-1].minor.yy502 = 0;}
         break;
       case 66: /* tconscomma ::= COMMA */
 {ASSERT_IS_CREATE; pParse->u1.cr.constraintName.n = 0;}
         break;
       case 68: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
-{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy14,yymsp[0].minor.yy144,yymsp[-2].minor.yy144,0);}
+{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy402,yymsp[0].minor.yy502,yymsp[-2].minor.yy502,0);}
         break;
       case 69: /* tcons ::= UNIQUE LP sortlist RP onconf */
-{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy14,yymsp[0].minor.yy144,0,0,0,0,
+{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy402,yymsp[0].minor.yy502,0,0,0,0,
                                        SQLITE_IDXTYPE_UNIQUE);}
         break;
       case 70: /* tcons ::= CHECK LP expr RP onconf */
-{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy454,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
+{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy590,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
         break;
       case 71: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
 {
-    sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy14, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy14, yymsp[-1].minor.yy144);
-    sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy144);
+    sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy402, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy402, yymsp[-1].minor.yy502);
+    sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy502);
 }
         break;
       case 73: /* onconf ::= */
       case 75: /* orconf ::= */ yytestcase(yyruleno==75);
-{yymsp[1].minor.yy144 = OE_Default;}
+{yymsp[1].minor.yy502 = OE_Default;}
         break;
       case 74: /* onconf ::= ON CONFLICT resolvetype */
-{yymsp[-2].minor.yy144 = yymsp[0].minor.yy144;}
+{yymsp[-2].minor.yy502 = yymsp[0].minor.yy502;}
         break;
       case 77: /* resolvetype ::= IGNORE */
-{yymsp[0].minor.yy144 = OE_Ignore;}
+{yymsp[0].minor.yy502 = OE_Ignore;}
         break;
       case 78: /* resolvetype ::= REPLACE */
       case 174: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==174);
-{yymsp[0].minor.yy144 = OE_Replace;}
+{yymsp[0].minor.yy502 = OE_Replace;}
         break;
       case 79: /* cmd ::= DROP TABLE ifexists fullname */
 {
-  sqlite3DropTable(pParse, yymsp[0].minor.yy203, 0, yymsp[-1].minor.yy144);
+  sqlite3DropTable(pParse, yymsp[0].minor.yy563, 0, yymsp[-1].minor.yy502);
 }
         break;
       case 82: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
 {
-  sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy14, yymsp[0].minor.yy555, yymsp[-7].minor.yy144, yymsp[-5].minor.yy144);
+  sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy402, yymsp[0].minor.yy637, yymsp[-7].minor.yy502, yymsp[-5].minor.yy502);
 }
         break;
       case 83: /* cmd ::= DROP VIEW ifexists fullname */
 {
-  sqlite3DropTable(pParse, yymsp[0].minor.yy203, 1, yymsp[-1].minor.yy144);
+  sqlite3DropTable(pParse, yymsp[0].minor.yy563, 1, yymsp[-1].minor.yy502);
 }
         break;
       case 84: /* cmd ::= select */
@@ -182807,20 +181528,20 @@ static YYACTIONTYPE yy_reduce(
   if( (pParse->db->mDbFlags & DBFLAG_EncodingFixed)!=0
    || sqlite3ReadSchema(pParse)==SQLITE_OK
   ){
-    sqlite3Select(pParse, yymsp[0].minor.yy555, &dest);
+    sqlite3Select(pParse, yymsp[0].minor.yy637, &dest);
   }
-  sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy555);
+  sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy637);
 }
         break;
       case 85: /* select ::= WITH wqlist selectnowith */
-{yymsp[-2].minor.yy555 = attachWithToSelect(pParse,yymsp[0].minor.yy555,yymsp[-1].minor.yy59);}
+{yymsp[-2].minor.yy637 = attachWithToSelect(pParse,yymsp[0].minor.yy637,yymsp[-1].minor.yy125);}
         break;
       case 86: /* select ::= WITH RECURSIVE wqlist selectnowith */
-{yymsp[-3].minor.yy555 = attachWithToSelect(pParse,yymsp[0].minor.yy555,yymsp[-1].minor.yy59);}
+{yymsp[-3].minor.yy637 = attachWithToSelect(pParse,yymsp[0].minor.yy637,yymsp[-1].minor.yy125);}
         break;
       case 87: /* select ::= selectnowith */
 {
-  Select *p = yymsp[0].minor.yy555;
+  Select *p = yymsp[0].minor.yy637;
   if( p ){
     parserDoubleLinkSelect(pParse, p);
   }
@@ -182828,8 +181549,8 @@ static YYACTIONTYPE yy_reduce(
         break;
       case 88: /* selectnowith ::= selectnowith multiselect_op oneselect */
 {
-  Select *pRhs = yymsp[0].minor.yy555;
-  Select *pLhs = yymsp[-2].minor.yy555;
+  Select *pRhs = yymsp[0].minor.yy637;
+  Select *pLhs = yymsp[-2].minor.yy637;
   if( pRhs && pRhs->pPrior ){
     SrcList *pFrom;
     Token x;
@@ -182839,60 +181560,60 @@ static YYACTIONTYPE yy_reduce(
     pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
   }
   if( pRhs ){
-    pRhs->op = (u8)yymsp[-1].minor.yy144;
+    pRhs->op = (u8)yymsp[-1].minor.yy502;
     pRhs->pPrior = pLhs;
     if( ALWAYS(pLhs) ) pLhs->selFlags &= ~(u32)SF_MultiValue;
     pRhs->selFlags &= ~(u32)SF_MultiValue;
-    if( yymsp[-1].minor.yy144!=TK_ALL ) pParse->hasCompound = 1;
+    if( yymsp[-1].minor.yy502!=TK_ALL ) pParse->hasCompound = 1;
   }else{
     sqlite3SelectDelete(pParse->db, pLhs);
   }
-  yymsp[-2].minor.yy555 = pRhs;
+  yymsp[-2].minor.yy637 = pRhs;
 }
         break;
       case 89: /* multiselect_op ::= UNION */
       case 91: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==91);
-{yymsp[0].minor.yy144 = yymsp[0].major; /*A-overwrites-OP*/}
+{yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-OP*/}
         break;
       case 90: /* multiselect_op ::= UNION ALL */
-{yymsp[-1].minor.yy144 = TK_ALL;}
+{yymsp[-1].minor.yy502 = TK_ALL;}
         break;
       case 92: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
 {
-  yymsp[-8].minor.yy555 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy14,yymsp[-5].minor.yy203,yymsp[-4].minor.yy454,yymsp[-3].minor.yy14,yymsp[-2].minor.yy454,yymsp[-1].minor.yy14,yymsp[-7].minor.yy144,yymsp[0].minor.yy454);
+  yymsp[-8].minor.yy637 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy402,yymsp[-5].minor.yy563,yymsp[-4].minor.yy590,yymsp[-3].minor.yy402,yymsp[-2].minor.yy590,yymsp[-1].minor.yy402,yymsp[-7].minor.yy502,yymsp[0].minor.yy590);
 }
         break;
       case 93: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
 {
-  yymsp[-9].minor.yy555 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy14,yymsp[-6].minor.yy203,yymsp[-5].minor.yy454,yymsp[-4].minor.yy14,yymsp[-3].minor.yy454,yymsp[-1].minor.yy14,yymsp[-8].minor.yy144,yymsp[0].minor.yy454);
-  if( yymsp[-9].minor.yy555 ){
-    yymsp[-9].minor.yy555->pWinDefn = yymsp[-2].minor.yy211;
+  yymsp[-9].minor.yy637 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy402,yymsp[-6].minor.yy563,yymsp[-5].minor.yy590,yymsp[-4].minor.yy402,yymsp[-3].minor.yy590,yymsp[-1].minor.yy402,yymsp[-8].minor.yy502,yymsp[0].minor.yy590);
+  if( yymsp[-9].minor.yy637 ){
+    yymsp[-9].minor.yy637->pWinDefn = yymsp[-2].minor.yy483;
   }else{
-    sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy211);
+    sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy483);
   }
 }
         break;
       case 94: /* values ::= VALUES LP nexprlist RP */
 {
-  yymsp[-3].minor.yy555 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy14,0,0,0,0,0,SF_Values,0);
+  yymsp[-3].minor.yy637 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy402,0,0,0,0,0,SF_Values,0);
 }
         break;
       case 95: /* oneselect ::= mvalues */
 {
-  sqlite3MultiValuesEnd(pParse, yymsp[0].minor.yy555);
+  sqlite3MultiValuesEnd(pParse, yymsp[0].minor.yy637);
 }
         break;
       case 96: /* mvalues ::= values COMMA LP nexprlist RP */
       case 97: /* mvalues ::= mvalues COMMA LP nexprlist RP */ yytestcase(yyruleno==97);
 {
-  yymsp[-4].minor.yy555 = sqlite3MultiValues(pParse, yymsp[-4].minor.yy555, yymsp[-1].minor.yy14);
+  yymsp[-4].minor.yy637 = sqlite3MultiValues(pParse, yymsp[-4].minor.yy637, yymsp[-1].minor.yy402);
 }
         break;
       case 98: /* distinct ::= DISTINCT */
-{yymsp[0].minor.yy144 = SF_Distinct;}
+{yymsp[0].minor.yy502 = SF_Distinct;}
         break;
       case 99: /* distinct ::= ALL */
-{yymsp[0].minor.yy144 = SF_All;}
+{yymsp[0].minor.yy502 = SF_All;}
         break;
       case 101: /* sclp ::= */
       case 134: /* orderby_opt ::= */ yytestcase(yyruleno==134);
@@ -182900,20 +181621,20 @@ static YYACTIONTYPE yy_reduce(
       case 234: /* exprlist ::= */ yytestcase(yyruleno==234);
       case 237: /* paren_exprlist ::= */ yytestcase(yyruleno==237);
       case 242: /* eidlist_opt ::= */ yytestcase(yyruleno==242);
-{yymsp[1].minor.yy14 = 0;}
+{yymsp[1].minor.yy402 = 0;}
         break;
       case 102: /* selcollist ::= sclp scanpt expr scanpt as */
 {
-   yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy14, yymsp[-2].minor.yy454);
-   if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy14, &yymsp[0].minor.yy0, 1);
-   sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy14,yymsp[-3].minor.yy168,yymsp[-1].minor.yy168);
+   yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy402, yymsp[-2].minor.yy590);
+   if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy402, &yymsp[0].minor.yy0, 1);
+   sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy402,yymsp[-3].minor.yy342,yymsp[-1].minor.yy342);
 }
         break;
       case 103: /* selcollist ::= sclp scanpt STAR */
 {
   Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
   sqlite3ExprSetErrorOffset(p, (int)(yymsp[0].minor.yy0.z - pParse->zTail));
-  yymsp[-2].minor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy14, p);
+  yymsp[-2].minor.yy402 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy402, p);
 }
         break;
       case 104: /* selcollist ::= sclp scanpt nm DOT STAR */
@@ -182923,7 +181644,7 @@ static YYACTIONTYPE yy_reduce(
   sqlite3ExprSetErrorOffset(pRight, (int)(yymsp[0].minor.yy0.z - pParse->zTail));
   pLeft = tokenExpr(pParse, TK_ID, yymsp[-2].minor.yy0);
   pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
-  yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, pDot);
+  yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy402, pDot);
 }
         break;
       case 105: /* as ::= AS nm */
@@ -182934,50 +181655,50 @@ static YYACTIONTYPE yy_reduce(
         break;
       case 107: /* from ::= */
       case 110: /* stl_prefix ::= */ yytestcase(yyruleno==110);
-{yymsp[1].minor.yy203 = 0;}
+{yymsp[1].minor.yy563 = 0;}
         break;
       case 108: /* from ::= FROM seltablist */
 {
-  yymsp[-1].minor.yy203 = yymsp[0].minor.yy203;
-  sqlite3SrcListShiftJoinType(pParse,yymsp[-1].minor.yy203);
+  yymsp[-1].minor.yy563 = yymsp[0].minor.yy563;
+  sqlite3SrcListShiftJoinType(pParse,yymsp[-1].minor.yy563);
 }
         break;
       case 109: /* stl_prefix ::= seltablist joinop */
 {
-   if( ALWAYS(yymsp[-1].minor.yy203 && yymsp[-1].minor.yy203->nSrc>0) ) yymsp[-1].minor.yy203->a[yymsp[-1].minor.yy203->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy144;
+   if( ALWAYS(yymsp[-1].minor.yy563 && yymsp[-1].minor.yy563->nSrc>0) ) yymsp[-1].minor.yy563->a[yymsp[-1].minor.yy563->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy502;
 }
         break;
       case 111: /* seltablist ::= stl_prefix nm dbnm as on_using */
 {
-  yymsp[-4].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-4].minor.yy203,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy269);
+  yymsp[-4].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-4].minor.yy563,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy421);
 }
         break;
       case 112: /* seltablist ::= stl_prefix nm dbnm as indexed_by on_using */
 {
-  yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,0,&yymsp[0].minor.yy269);
-  sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy203, &yymsp[-1].minor.yy0);
+  yymsp[-5].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy563,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,0,&yymsp[0].minor.yy421);
+  sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy563, &yymsp[-1].minor.yy0);
 }
         break;
       case 113: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_using */
 {
-  yymsp[-7].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-7].minor.yy203,&yymsp[-6].minor.yy0,&yymsp[-5].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy269);
-  sqlite3SrcListFuncArgs(pParse, yymsp[-7].minor.yy203, yymsp[-3].minor.yy14);
+  yymsp[-7].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-7].minor.yy563,&yymsp[-6].minor.yy0,&yymsp[-5].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy421);
+  sqlite3SrcListFuncArgs(pParse, yymsp[-7].minor.yy563, yymsp[-3].minor.yy402);
 }
         break;
       case 114: /* seltablist ::= stl_prefix LP select RP as on_using */
 {
-    yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,0,0,&yymsp[-1].minor.yy0,yymsp[-3].minor.yy555,&yymsp[0].minor.yy269);
+    yymsp[-5].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy563,0,0,&yymsp[-1].minor.yy0,yymsp[-3].minor.yy637,&yymsp[0].minor.yy421);
   }
         break;
       case 115: /* seltablist ::= stl_prefix LP seltablist RP as on_using */
 {
-    if( yymsp[-5].minor.yy203==0 && yymsp[-1].minor.yy0.n==0 && yymsp[0].minor.yy269.pOn==0 && yymsp[0].minor.yy269.pUsing==0 ){
-      yymsp[-5].minor.yy203 = yymsp[-3].minor.yy203;
-    }else if( ALWAYS(yymsp[-3].minor.yy203!=0) && yymsp[-3].minor.yy203->nSrc==1 ){
-      yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,0,0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy269);
-      if( yymsp[-5].minor.yy203 ){
-        SrcItem *pNew = &yymsp[-5].minor.yy203->a[yymsp[-5].minor.yy203->nSrc-1];
-        SrcItem *pOld = yymsp[-3].minor.yy203->a;
+    if( yymsp[-5].minor.yy563==0 && yymsp[-1].minor.yy0.n==0 && yymsp[0].minor.yy421.pOn==0 && yymsp[0].minor.yy421.pUsing==0 ){
+      yymsp[-5].minor.yy563 = yymsp[-3].minor.yy563;
+    }else if( ALWAYS(yymsp[-3].minor.yy563!=0) && yymsp[-3].minor.yy563->nSrc==1 ){
+      yymsp[-5].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy563,0,0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy421);
+      if( yymsp[-5].minor.yy563 ){
+        SrcItem *pNew = &yymsp[-5].minor.yy563->a[yymsp[-5].minor.yy563->nSrc-1];
+        SrcItem *pOld = yymsp[-3].minor.yy563->a;
         assert( pOld->fg.fixedSchema==0 );
         pNew->zName = pOld->zName;
         assert( pOld->fg.fixedSchema==0 );
@@ -183002,12 +181723,12 @@ static YYACTIONTYPE yy_reduce(
         }
         pOld->zName = 0;
       }
-      sqlite3SrcListDelete(pParse->db, yymsp[-3].minor.yy203);
+      sqlite3SrcListDelete(pParse->db, yymsp[-3].minor.yy563);
     }else{
       Select *pSubquery;
-      sqlite3SrcListShiftJoinType(pParse,yymsp[-3].minor.yy203);
-      pSubquery = sqlite3SelectNew(pParse,0,yymsp[-3].minor.yy203,0,0,0,0,SF_NestedFrom,0);
-      yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,0,0,&yymsp[-1].minor.yy0,pSubquery,&yymsp[0].minor.yy269);
+      sqlite3SrcListShiftJoinType(pParse,yymsp[-3].minor.yy563);
+      pSubquery = sqlite3SelectNew(pParse,0,yymsp[-3].minor.yy563,0,0,0,0,SF_NestedFrom,0);
+      yymsp[-5].minor.yy563 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy563,0,0,&yymsp[-1].minor.yy0,pSubquery,&yymsp[0].minor.yy421);
     }
   }
         break;
@@ -183016,67 +181737,57 @@ static YYACTIONTYPE yy_reduce(
 {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
         break;
       case 118: /* fullname ::= nm */
-      case 120: /* xfullname ::= nm */ yytestcase(yyruleno==120);
 {
-  yylhsminor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
-  if( IN_RENAME_OBJECT && yylhsminor.yy203 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy203->a[0].zName, &yymsp[0].minor.yy0);
+  yylhsminor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
+  if( IN_RENAME_OBJECT && yylhsminor.yy563 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy563->a[0].zName, &yymsp[0].minor.yy0);
 }
-  yymsp[0].minor.yy203 = yylhsminor.yy203;
+  yymsp[0].minor.yy563 = yylhsminor.yy563;
         break;
       case 119: /* fullname ::= nm DOT nm */
-      case 121: /* xfullname ::= nm DOT nm */ yytestcase(yyruleno==121);
 {
-  yylhsminor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
-  if( IN_RENAME_OBJECT && yylhsminor.yy203 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy203->a[0].zName, &yymsp[0].minor.yy0);
+  yylhsminor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
+  if( IN_RENAME_OBJECT && yylhsminor.yy563 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy563->a[0].zName, &yymsp[0].minor.yy0);
 }
-  yymsp[-2].minor.yy203 = yylhsminor.yy203;
+  yymsp[-2].minor.yy563 = yylhsminor.yy563;
         break;
-      case 122: /* xfullname ::= nm AS nm */
+      case 120: /* xfullname ::= nm */
+{yymsp[0].minor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
+        break;
+      case 121: /* xfullname ::= nm DOT nm */
+{yymsp[-2].minor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
+        break;
+      case 122: /* xfullname ::= nm DOT nm AS nm */
 {
-  yylhsminor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0);
-  if( yylhsminor.yy203 ){
-    if( IN_RENAME_OBJECT ){
-      sqlite3RenameTokenMap(pParse, yylhsminor.yy203->a[0].zName, &yymsp[-2].minor.yy0);
-    }else{
-      yylhsminor.yy203->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
-    }
-  }
+   yymsp[-4].minor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
+   if( yymsp[-4].minor.yy563 ) yymsp[-4].minor.yy563->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
 }
-  yymsp[-2].minor.yy203 = yylhsminor.yy203;
         break;
-      case 123: /* xfullname ::= nm DOT nm AS nm */
+      case 123: /* xfullname ::= nm AS nm */
 {
-  yylhsminor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0);
-  if( yylhsminor.yy203 ){
-    if( IN_RENAME_OBJECT ){
-      sqlite3RenameTokenMap(pParse, yylhsminor.yy203->a[0].zName, &yymsp[-2].minor.yy0);
-    }else{
-      yylhsminor.yy203->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
-    }
-  }
+   yymsp[-2].minor.yy563 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
+   if( yymsp[-2].minor.yy563 ) yymsp[-2].minor.yy563->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
 }
-  yymsp[-4].minor.yy203 = yylhsminor.yy203;
         break;
       case 124: /* joinop ::= COMMA|JOIN */
-{ yymsp[0].minor.yy144 = JT_INNER; }
+{ yymsp[0].minor.yy502 = JT_INNER; }
         break;
       case 125: /* joinop ::= JOIN_KW JOIN */
-{yymsp[-1].minor.yy144 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0);  /*X-overwrites-A*/}
+{yymsp[-1].minor.yy502 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0);  /*X-overwrites-A*/}
         break;
       case 126: /* joinop ::= JOIN_KW nm JOIN */
-{yymsp[-2].minor.yy144 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
+{yymsp[-2].minor.yy502 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
         break;
       case 127: /* joinop ::= JOIN_KW nm nm JOIN */
-{yymsp[-3].minor.yy144 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
+{yymsp[-3].minor.yy502 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
         break;
       case 128: /* on_using ::= ON expr */
-{yymsp[-1].minor.yy269.pOn = yymsp[0].minor.yy454; yymsp[-1].minor.yy269.pUsing = 0;}
+{yymsp[-1].minor.yy421.pOn = yymsp[0].minor.yy590; yymsp[-1].minor.yy421.pUsing = 0;}
         break;
       case 129: /* on_using ::= USING LP idlist RP */
-{yymsp[-3].minor.yy269.pOn = 0; yymsp[-3].minor.yy269.pUsing = yymsp[-1].minor.yy132;}
+{yymsp[-3].minor.yy421.pOn = 0; yymsp[-3].minor.yy421.pUsing = yymsp[-1].minor.yy204;}
         break;
       case 130: /* on_using ::= */
-{yymsp[1].minor.yy269.pOn = 0; yymsp[1].minor.yy269.pUsing = 0;}
+{yymsp[1].minor.yy421.pOn = 0; yymsp[1].minor.yy421.pUsing = 0;}
         break;
       case 132: /* indexed_by ::= INDEXED BY nm */
 {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
@@ -183086,35 +181797,35 @@ static YYACTIONTYPE yy_reduce(
         break;
       case 135: /* orderby_opt ::= ORDER BY sortlist */
       case 145: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==145);
-{yymsp[-2].minor.yy14 = yymsp[0].minor.yy14;}
+{yymsp[-2].minor.yy402 = yymsp[0].minor.yy402;}
         break;
       case 136: /* sortlist ::= sortlist COMMA expr sortorder nulls */
 {
-  yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14,yymsp[-2].minor.yy454);
-  sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy14,yymsp[-1].minor.yy144,yymsp[0].minor.yy144);
+  yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy402,yymsp[-2].minor.yy590);
+  sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy402,yymsp[-1].minor.yy502,yymsp[0].minor.yy502);
 }
         break;
       case 137: /* sortlist ::= expr sortorder nulls */
 {
-  yymsp[-2].minor.yy14 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy454); /*A-overwrites-Y*/
-  sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy14,yymsp[-1].minor.yy144,yymsp[0].minor.yy144);
+  yymsp[-2].minor.yy402 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy590); /*A-overwrites-Y*/
+  sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy402,yymsp[-1].minor.yy502,yymsp[0].minor.yy502);
 }
         break;
       case 138: /* sortorder ::= ASC */
-{yymsp[0].minor.yy144 = SQLITE_SO_ASC;}
+{yymsp[0].minor.yy502 = SQLITE_SO_ASC;}
         break;
       case 139: /* sortorder ::= DESC */
-{yymsp[0].minor.yy144 = SQLITE_SO_DESC;}
+{yymsp[0].minor.yy502 = SQLITE_SO_DESC;}
         break;
       case 140: /* sortorder ::= */
       case 143: /* nulls ::= */ yytestcase(yyruleno==143);
-{yymsp[1].minor.yy144 = SQLITE_SO_UNDEFINED;}
+{yymsp[1].minor.yy502 = SQLITE_SO_UNDEFINED;}
         break;
       case 141: /* nulls ::= NULLS FIRST */
-{yymsp[-1].minor.yy144 = SQLITE_SO_ASC;}
+{yymsp[-1].minor.yy502 = SQLITE_SO_ASC;}
         break;
       case 142: /* nulls ::= NULLS LAST */
-{yymsp[-1].minor.yy144 = SQLITE_SO_DESC;}
+{yymsp[-1].minor.yy502 = SQLITE_SO_DESC;}
         break;
       case 146: /* having_opt ::= */
       case 148: /* limit_opt ::= */ yytestcase(yyruleno==148);
@@ -183123,42 +181834,42 @@ static YYACTIONTYPE yy_reduce(
       case 232: /* case_else ::= */ yytestcase(yyruleno==232);
       case 233: /* case_operand ::= */ yytestcase(yyruleno==233);
       case 252: /* vinto ::= */ yytestcase(yyruleno==252);
-{yymsp[1].minor.yy454 = 0;}
+{yymsp[1].minor.yy590 = 0;}
         break;
       case 147: /* having_opt ::= HAVING expr */
       case 154: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==154);
       case 156: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==156);
       case 231: /* case_else ::= ELSE expr */ yytestcase(yyruleno==231);
       case 251: /* vinto ::= INTO expr */ yytestcase(yyruleno==251);
-{yymsp[-1].minor.yy454 = yymsp[0].minor.yy454;}
+{yymsp[-1].minor.yy590 = yymsp[0].minor.yy590;}
         break;
       case 149: /* limit_opt ::= LIMIT expr */
-{yymsp[-1].minor.yy454 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy454,0);}
+{yymsp[-1].minor.yy590 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy590,0);}
         break;
       case 150: /* limit_opt ::= LIMIT expr OFFSET expr */
-{yymsp[-3].minor.yy454 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy454,yymsp[0].minor.yy454);}
+{yymsp[-3].minor.yy590 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy590,yymsp[0].minor.yy590);}
         break;
       case 151: /* limit_opt ::= LIMIT expr COMMA expr */
-{yymsp[-3].minor.yy454 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy454,yymsp[-2].minor.yy454);}
+{yymsp[-3].minor.yy590 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy590,yymsp[-2].minor.yy590);}
         break;
       case 152: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
 {
-  sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy203, &yymsp[-1].minor.yy0);
-  sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy203,yymsp[0].minor.yy454,0,0);
+  sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy563, &yymsp[-1].minor.yy0);
+  sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy563,yymsp[0].minor.yy590,0,0);
 }
         break;
       case 157: /* where_opt_ret ::= RETURNING selcollist */
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy14); yymsp[-1].minor.yy454 = 0;}
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy402); yymsp[-1].minor.yy590 = 0;}
         break;
       case 158: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy14); yymsp[-3].minor.yy454 = yymsp[-2].minor.yy454;}
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy402); yymsp[-3].minor.yy590 = yymsp[-2].minor.yy590;}
         break;
       case 159: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
 {
-  sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy203, &yymsp[-4].minor.yy0);
-  sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy14,"set list");
-  if( yymsp[-1].minor.yy203 ){
-    SrcList *pFromClause = yymsp[-1].minor.yy203;
+  sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy563, &yymsp[-4].minor.yy0);
+  sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy402,"set list");
+  if( yymsp[-1].minor.yy563 ){
+    SrcList *pFromClause = yymsp[-1].minor.yy563;
     if( pFromClause->nSrc>1 ){
       Select *pSubquery;
       Token as;
@@ -183167,90 +181878,90 @@ static YYACTIONTYPE yy_reduce(
       as.z = 0;
       pFromClause = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&as,pSubquery,0);
     }
-    yymsp[-5].minor.yy203 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy203, pFromClause);
+    yymsp[-5].minor.yy563 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy563, pFromClause);
   }
-  sqlite3Update(pParse,yymsp[-5].minor.yy203,yymsp[-2].minor.yy14,yymsp[0].minor.yy454,yymsp[-6].minor.yy144,0,0,0);
+  sqlite3Update(pParse,yymsp[-5].minor.yy563,yymsp[-2].minor.yy402,yymsp[0].minor.yy590,yymsp[-6].minor.yy502,0,0,0);
 }
         break;
       case 160: /* setlist ::= setlist COMMA nm EQ expr */
 {
-  yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy14, yymsp[0].minor.yy454);
-  sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy14, &yymsp[-2].minor.yy0, 1);
+  yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy402, yymsp[0].minor.yy590);
+  sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy402, &yymsp[-2].minor.yy0, 1);
 }
         break;
       case 161: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
 {
-  yymsp[-6].minor.yy14 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy14, yymsp[-3].minor.yy132, yymsp[0].minor.yy454);
+  yymsp[-6].minor.yy402 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy402, yymsp[-3].minor.yy204, yymsp[0].minor.yy590);
 }
         break;
       case 162: /* setlist ::= nm EQ expr */
 {
-  yylhsminor.yy14 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy454);
-  sqlite3ExprListSetName(pParse, yylhsminor.yy14, &yymsp[-2].minor.yy0, 1);
+  yylhsminor.yy402 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy590);
+  sqlite3ExprListSetName(pParse, yylhsminor.yy402, &yymsp[-2].minor.yy0, 1);
 }
-  yymsp[-2].minor.yy14 = yylhsminor.yy14;
+  yymsp[-2].minor.yy402 = yylhsminor.yy402;
         break;
       case 163: /* setlist ::= LP idlist RP EQ expr */
 {
-  yymsp[-4].minor.yy14 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy132, yymsp[0].minor.yy454);
+  yymsp[-4].minor.yy402 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy204, yymsp[0].minor.yy590);
 }
         break;
       case 164: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
 {
-  sqlite3Insert(pParse, yymsp[-3].minor.yy203, yymsp[-1].minor.yy555, yymsp[-2].minor.yy132, yymsp[-5].minor.yy144, yymsp[0].minor.yy122);
+  sqlite3Insert(pParse, yymsp[-3].minor.yy563, yymsp[-1].minor.yy637, yymsp[-2].minor.yy204, yymsp[-5].minor.yy502, yymsp[0].minor.yy403);
 }
         break;
       case 165: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
 {
-  sqlite3Insert(pParse, yymsp[-4].minor.yy203, 0, yymsp[-3].minor.yy132, yymsp[-6].minor.yy144, 0);
+  sqlite3Insert(pParse, yymsp[-4].minor.yy563, 0, yymsp[-3].minor.yy204, yymsp[-6].minor.yy502, 0);
 }
         break;
       case 166: /* upsert ::= */
-{ yymsp[1].minor.yy122 = 0; }
+{ yymsp[1].minor.yy403 = 0; }
         break;
       case 167: /* upsert ::= RETURNING selcollist */
-{ yymsp[-1].minor.yy122 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy14); }
+{ yymsp[-1].minor.yy403 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy402); }
         break;
       case 168: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
-{ yymsp[-11].minor.yy122 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy14,yymsp[-6].minor.yy454,yymsp[-2].minor.yy14,yymsp[-1].minor.yy454,yymsp[0].minor.yy122);}
+{ yymsp[-11].minor.yy403 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy402,yymsp[-6].minor.yy590,yymsp[-2].minor.yy402,yymsp[-1].minor.yy590,yymsp[0].minor.yy403);}
         break;
       case 169: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
-{ yymsp[-8].minor.yy122 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy14,yymsp[-3].minor.yy454,0,0,yymsp[0].minor.yy122); }
+{ yymsp[-8].minor.yy403 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy402,yymsp[-3].minor.yy590,0,0,yymsp[0].minor.yy403); }
         break;
       case 170: /* upsert ::= ON CONFLICT DO NOTHING returning */
-{ yymsp[-4].minor.yy122 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
+{ yymsp[-4].minor.yy403 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
         break;
       case 171: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
-{ yymsp[-7].minor.yy122 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy14,yymsp[-1].minor.yy454,0);}
+{ yymsp[-7].minor.yy403 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy402,yymsp[-1].minor.yy590,0);}
         break;
       case 172: /* returning ::= RETURNING selcollist */
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy14);}
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy402);}
         break;
       case 175: /* idlist_opt ::= */
-{yymsp[1].minor.yy132 = 0;}
+{yymsp[1].minor.yy204 = 0;}
         break;
       case 176: /* idlist_opt ::= LP idlist RP */
-{yymsp[-2].minor.yy132 = yymsp[-1].minor.yy132;}
+{yymsp[-2].minor.yy204 = yymsp[-1].minor.yy204;}
         break;
       case 177: /* idlist ::= idlist COMMA nm */
-{yymsp[-2].minor.yy132 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy132,&yymsp[0].minor.yy0);}
+{yymsp[-2].minor.yy204 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy204,&yymsp[0].minor.yy0);}
         break;
       case 178: /* idlist ::= nm */
-{yymsp[0].minor.yy132 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
+{yymsp[0].minor.yy204 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
         break;
       case 179: /* expr ::= LP expr RP */
-{yymsp[-2].minor.yy454 = yymsp[-1].minor.yy454;}
+{yymsp[-2].minor.yy590 = yymsp[-1].minor.yy590;}
         break;
       case 180: /* expr ::= ID|INDEXED|JOIN_KW */
-{yymsp[0].minor.yy454=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
+{yymsp[0].minor.yy590=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
         break;
       case 181: /* expr ::= nm DOT nm */
 {
   Expr *temp1 = tokenExpr(pParse,TK_ID,yymsp[-2].minor.yy0);
   Expr *temp2 = tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0);
-  yylhsminor.yy454 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
+  yylhsminor.yy590 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
 }
-  yymsp[-2].minor.yy454 = yylhsminor.yy454;
+  yymsp[-2].minor.yy590 = yylhsminor.yy590;
         break;
       case 182: /* expr ::= nm DOT nm DOT nm */
 {
@@ -183261,32 +181972,27 @@ static YYACTIONTYPE yy_reduce(
   if( IN_RENAME_OBJECT ){
     sqlite3RenameTokenRemap(pParse, 0, temp1);
   }
-  yylhsminor.yy454 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
+  yylhsminor.yy590 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
 }
-  yymsp[-4].minor.yy454 = yylhsminor.yy454;
+  yymsp[-4].minor.yy590 = yylhsminor.yy590;
         break;
       case 183: /* term ::= NULL|FLOAT|BLOB */
       case 184: /* term ::= STRING */ yytestcase(yyruleno==184);
-{yymsp[0].minor.yy454=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
+{yymsp[0].minor.yy590=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
         break;
       case 185: /* term ::= INTEGER */
 {
-  int iValue;
-  if( sqlite3GetInt32(yymsp[0].minor.yy0.z, &iValue)==0 ){
-    yylhsminor.yy454 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 0);
-  }else{
-    yylhsminor.yy454 = sqlite3ExprInt32(pParse->db, iValue);
-  }
-  if( yylhsminor.yy454 ) yylhsminor.yy454->w.iOfst = (int)(yymsp[0].minor.yy0.z - pParse->zTail);
+  yylhsminor.yy590 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
+  if( yylhsminor.yy590 ) yylhsminor.yy590->w.iOfst = (int)(yymsp[0].minor.yy0.z - pParse->zTail);
 }
-  yymsp[0].minor.yy454 = yylhsminor.yy454;
+  yymsp[0].minor.yy590 = yylhsminor.yy590;
         break;
       case 186: /* expr ::= VARIABLE */
 {
   if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
     u32 n = yymsp[0].minor.yy0.n;
-    yymsp[0].minor.yy454 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
-    sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy454, n);
+    yymsp[0].minor.yy590 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
+    sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy590, n);
   }else{
     /* When doing a nested parse, one can include terms in an expression
     ** that look like this:   #1 #2 ...  These terms refer to registers
@@ -183295,80 +182001,80 @@ static YYACTIONTYPE yy_reduce(
     assert( t.n>=2 );
     if( pParse->nested==0 ){
       parserSyntaxError(pParse, &t);
-      yymsp[0].minor.yy454 = 0;
+      yymsp[0].minor.yy590 = 0;
     }else{
-      yymsp[0].minor.yy454 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
-      if( yymsp[0].minor.yy454 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy454->iTable);
+      yymsp[0].minor.yy590 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
+      if( yymsp[0].minor.yy590 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy590->iTable);
     }
   }
 }
         break;
       case 187: /* expr ::= expr COLLATE ID|STRING */
 {
-  yymsp[-2].minor.yy454 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy454, &yymsp[0].minor.yy0, 1);
+  yymsp[-2].minor.yy590 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy590, &yymsp[0].minor.yy0, 1);
 }
         break;
       case 188: /* expr ::= CAST LP expr AS typetoken RP */
 {
-  yymsp[-5].minor.yy454 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
-  sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy454, yymsp[-3].minor.yy454, 0);
+  yymsp[-5].minor.yy590 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
+  sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy590, yymsp[-3].minor.yy590, 0);
 }
         break;
       case 189: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP */
 {
-  yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy14, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy144);
+  yylhsminor.yy590 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy402, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy502);
 }
-  yymsp[-4].minor.yy454 = yylhsminor.yy454;
+  yymsp[-4].minor.yy590 = yylhsminor.yy590;
         break;
       case 190: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP */
 {
-  yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-4].minor.yy14, &yymsp[-7].minor.yy0, yymsp[-5].minor.yy144);
-  sqlite3ExprAddFunctionOrderBy(pParse, yylhsminor.yy454, yymsp[-1].minor.yy14);
+  yylhsminor.yy590 = sqlite3ExprFunction(pParse, yymsp[-4].minor.yy402, &yymsp[-7].minor.yy0, yymsp[-5].minor.yy502);
+  sqlite3ExprAddFunctionOrderBy(pParse, yylhsminor.yy590, yymsp[-1].minor.yy402);
 }
-  yymsp[-7].minor.yy454 = yylhsminor.yy454;
+  yymsp[-7].minor.yy590 = yylhsminor.yy590;
         break;
       case 191: /* expr ::= ID|INDEXED|JOIN_KW LP STAR RP */
 {
-  yylhsminor.yy454 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
+  yylhsminor.yy590 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
 }
-  yymsp[-3].minor.yy454 = yylhsminor.yy454;
+  yymsp[-3].minor.yy590 = yylhsminor.yy590;
         break;
       case 192: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP filter_over */
 {
-  yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy14, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy144);
-  sqlite3WindowAttach(pParse, yylhsminor.yy454, yymsp[0].minor.yy211);
+  yylhsminor.yy590 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy402, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy502);
+  sqlite3WindowAttach(pParse, yylhsminor.yy590, yymsp[0].minor.yy483);
 }
-  yymsp[-5].minor.yy454 = yylhsminor.yy454;
+  yymsp[-5].minor.yy590 = yylhsminor.yy590;
         break;
       case 193: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP filter_over */
 {
-  yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-5].minor.yy14, &yymsp[-8].minor.yy0, yymsp[-6].minor.yy144);
-  sqlite3WindowAttach(pParse, yylhsminor.yy454, yymsp[0].minor.yy211);
-  sqlite3ExprAddFunctionOrderBy(pParse, yylhsminor.yy454, yymsp[-2].minor.yy14);
+  yylhsminor.yy590 = sqlite3ExprFunction(pParse, yymsp[-5].minor.yy402, &yymsp[-8].minor.yy0, yymsp[-6].minor.yy502);
+  sqlite3WindowAttach(pParse, yylhsminor.yy590, yymsp[0].minor.yy483);
+  sqlite3ExprAddFunctionOrderBy(pParse, yylhsminor.yy590, yymsp[-2].minor.yy402);
 }
-  yymsp[-8].minor.yy454 = yylhsminor.yy454;
+  yymsp[-8].minor.yy590 = yylhsminor.yy590;
         break;
       case 194: /* expr ::= ID|INDEXED|JOIN_KW LP STAR RP filter_over */
 {
-  yylhsminor.yy454 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
-  sqlite3WindowAttach(pParse, yylhsminor.yy454, yymsp[0].minor.yy211);
+  yylhsminor.yy590 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
+  sqlite3WindowAttach(pParse, yylhsminor.yy590, yymsp[0].minor.yy483);
 }
-  yymsp[-4].minor.yy454 = yylhsminor.yy454;
+  yymsp[-4].minor.yy590 = yylhsminor.yy590;
         break;
       case 195: /* term ::= CTIME_KW */
 {
-  yylhsminor.yy454 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
+  yylhsminor.yy590 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
 }
-  yymsp[0].minor.yy454 = yylhsminor.yy454;
+  yymsp[0].minor.yy590 = yylhsminor.yy590;
         break;
       case 196: /* expr ::= LP nexprlist COMMA expr RP */
 {
-  ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy14, yymsp[-1].minor.yy454);
-  yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
-  if( yymsp[-4].minor.yy454 ){
-    yymsp[-4].minor.yy454->x.pList = pList;
+  ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy402, yymsp[-1].minor.yy590);
+  yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
+  if( yymsp[-4].minor.yy590 ){
+    yymsp[-4].minor.yy590->x.pList = pList;
     if( ALWAYS(pList->nExpr) ){
-      yymsp[-4].minor.yy454->flags |= pList->a[0].pExpr->flags & EP_Propagate;
+      yymsp[-4].minor.yy590->flags |= pList->a[0].pExpr->flags & EP_Propagate;
     }
   }else{
     sqlite3ExprListDelete(pParse->db, pList);
@@ -183376,7 +182082,7 @@ static YYACTIONTYPE yy_reduce(
 }
         break;
       case 197: /* expr ::= expr AND expr */
-{yymsp[-2].minor.yy454=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy454,yymsp[0].minor.yy454);}
+{yymsp[-2].minor.yy590=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy590,yymsp[0].minor.yy590);}
         break;
       case 198: /* expr ::= expr OR expr */
       case 199: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==199);
@@ -183385,7 +182091,7 @@ static YYACTIONTYPE yy_reduce(
       case 202: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==202);
       case 203: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==203);
       case 204: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==204);
-{yymsp[-2].minor.yy454=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy454,yymsp[0].minor.yy454);}
+{yymsp[-2].minor.yy590=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy590,yymsp[0].minor.yy590);}
         break;
       case 205: /* likeop ::= NOT LIKE_KW|MATCH */
 {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
@@ -183395,11 +182101,11 @@ static YYACTIONTYPE yy_reduce(
   ExprList *pList;
   int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
   yymsp[-1].minor.yy0.n &= 0x7fffffff;
-  pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy454);
-  pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy454);
-  yymsp[-2].minor.yy454 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
-  if( bNot ) yymsp[-2].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy454, 0);
-  if( yymsp[-2].minor.yy454 ) yymsp[-2].minor.yy454->flags |= EP_InfixFunc;
+  pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy590);
+  pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy590);
+  yymsp[-2].minor.yy590 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
+  if( bNot ) yymsp[-2].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy590, 0);
+  if( yymsp[-2].minor.yy590 ) yymsp[-2].minor.yy590->flags |= EP_InfixFunc;
 }
         break;
       case 207: /* expr ::= expr likeop expr ESCAPE expr */
@@ -183407,87 +182113,91 @@ static YYACTIONTYPE yy_reduce(
   ExprList *pList;
   int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
   yymsp[-3].minor.yy0.n &= 0x7fffffff;
-  pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy454);
-  pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy454);
-  pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy454);
-  yymsp[-4].minor.yy454 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
-  if( bNot ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0);
-  if( yymsp[-4].minor.yy454 ) yymsp[-4].minor.yy454->flags |= EP_InfixFunc;
+  pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy590);
+  pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy590);
+  pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy590);
+  yymsp[-4].minor.yy590 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
+  if( bNot ) yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy590, 0);
+  if( yymsp[-4].minor.yy590 ) yymsp[-4].minor.yy590->flags |= EP_InfixFunc;
 }
         break;
       case 208: /* expr ::= expr ISNULL|NOTNULL */
-{yymsp[-1].minor.yy454 = sqlite3PExprIsNull(pParse,yymsp[0].major,yymsp[-1].minor.yy454);}
+{yymsp[-1].minor.yy590 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy590,0);}
         break;
       case 209: /* expr ::= expr NOT NULL */
-{yymsp[-2].minor.yy454 = sqlite3PExprIsNull(pParse,TK_NOTNULL,yymsp[-2].minor.yy454);}
+{yymsp[-2].minor.yy590 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy590,0);}
         break;
       case 210: /* expr ::= expr IS expr */
 {
-  yymsp[-2].minor.yy454 = sqlite3PExprIs(pParse, TK_IS, yymsp[-2].minor.yy454, yymsp[0].minor.yy454);
+  yymsp[-2].minor.yy590 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy590,yymsp[0].minor.yy590);
+  binaryToUnaryIfNull(pParse, yymsp[0].minor.yy590, yymsp[-2].minor.yy590, TK_ISNULL);
 }
         break;
       case 211: /* expr ::= expr IS NOT expr */
 {
-  yymsp[-3].minor.yy454 = sqlite3PExprIs(pParse, TK_ISNOT, yymsp[-3].minor.yy454, yymsp[0].minor.yy454);
+  yymsp[-3].minor.yy590 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy590,yymsp[0].minor.yy590);
+  binaryToUnaryIfNull(pParse, yymsp[0].minor.yy590, yymsp[-3].minor.yy590, TK_NOTNULL);
 }
         break;
       case 212: /* expr ::= expr IS NOT DISTINCT FROM expr */
 {
-  yymsp[-5].minor.yy454 = sqlite3PExprIs(pParse, TK_IS, yymsp[-5].minor.yy454, yymsp[0].minor.yy454);
+  yymsp[-5].minor.yy590 = sqlite3PExpr(pParse,TK_IS,yymsp[-5].minor.yy590,yymsp[0].minor.yy590);
+  binaryToUnaryIfNull(pParse, yymsp[0].minor.yy590, yymsp[-5].minor.yy590, TK_ISNULL);
 }
         break;
       case 213: /* expr ::= expr IS DISTINCT FROM expr */
 {
-  yymsp[-4].minor.yy454 = sqlite3PExprIs(pParse, TK_ISNOT, yymsp[-4].minor.yy454, yymsp[0].minor.yy454);
+  yymsp[-4].minor.yy590 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-4].minor.yy590,yymsp[0].minor.yy590);
+  binaryToUnaryIfNull(pParse, yymsp[0].minor.yy590, yymsp[-4].minor.yy590, TK_NOTNULL);
 }
         break;
       case 214: /* expr ::= NOT expr */
       case 215: /* expr ::= BITNOT expr */ yytestcase(yyruleno==215);
-{yymsp[-1].minor.yy454 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy454, 0);/*A-overwrites-B*/}
+{yymsp[-1].minor.yy590 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy590, 0);/*A-overwrites-B*/}
         break;
       case 216: /* expr ::= PLUS|MINUS expr */
 {
-  Expr *p = yymsp[0].minor.yy454;
+  Expr *p = yymsp[0].minor.yy590;
   u8 op = yymsp[-1].major + (TK_UPLUS-TK_PLUS);
   assert( TK_UPLUS>TK_PLUS );
   assert( TK_UMINUS == TK_MINUS + (TK_UPLUS - TK_PLUS) );
   if( p && p->op==TK_UPLUS ){
     p->op = op;
-    yymsp[-1].minor.yy454 = p;
+    yymsp[-1].minor.yy590 = p;
   }else{
-    yymsp[-1].minor.yy454 = sqlite3PExpr(pParse, op, p, 0);
+    yymsp[-1].minor.yy590 = sqlite3PExpr(pParse, op, p, 0);
     /*A-overwrites-B*/
   }
 }
         break;
       case 217: /* expr ::= expr PTR expr */
 {
-  ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy454);
-  pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy454);
-  yylhsminor.yy454 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
+  ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy590);
+  pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy590);
+  yylhsminor.yy590 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
 }
-  yymsp[-2].minor.yy454 = yylhsminor.yy454;
+  yymsp[-2].minor.yy590 = yylhsminor.yy590;
         break;
       case 218: /* between_op ::= BETWEEN */
       case 221: /* in_op ::= IN */ yytestcase(yyruleno==221);
-{yymsp[0].minor.yy144 = 0;}
+{yymsp[0].minor.yy502 = 0;}
         break;
       case 220: /* expr ::= expr between_op expr AND expr */
 {
-  ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy454);
-  pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy454);
-  yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy454, 0);
-  if( yymsp[-4].minor.yy454 ){
-    yymsp[-4].minor.yy454->x.pList = pList;
+  ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy590);
+  pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy590);
+  yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy590, 0);
+  if( yymsp[-4].minor.yy590 ){
+    yymsp[-4].minor.yy590->x.pList = pList;
   }else{
     sqlite3ExprListDelete(pParse->db, pList);
   }
-  if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0);
+  if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy590, 0);
 }
         break;
       case 223: /* expr ::= expr in_op LP exprlist RP */
 {
-    if( yymsp[-1].minor.yy14==0 ){
+    if( yymsp[-1].minor.yy402==0 ){
       /* Expressions of the form
       **
       **      expr1 IN ()
@@ -183500,145 +182210,145 @@ static YYACTIONTYPE yy_reduce(
       ** it is or not) and if it is an aggregate, that could change the meaning
       ** of the whole query.
       */
-      Expr *pB = sqlite3Expr(pParse->db, TK_STRING, yymsp[-3].minor.yy144 ? "true" : "false");
+      Expr *pB = sqlite3Expr(pParse->db, TK_STRING, yymsp[-3].minor.yy502 ? "true" : "false");
       if( pB ) sqlite3ExprIdToTrueFalse(pB);
-      if( !ExprHasProperty(yymsp[-4].minor.yy454, EP_HasFunc) ){
-        sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy454);
-        yymsp[-4].minor.yy454 = pB;
+      if( !ExprHasProperty(yymsp[-4].minor.yy590, EP_HasFunc) ){
+        sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy590);
+        yymsp[-4].minor.yy590 = pB;
       }else{
-        yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, yymsp[-3].minor.yy144 ? TK_OR : TK_AND, pB, yymsp[-4].minor.yy454);
+        yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, yymsp[-3].minor.yy502 ? TK_OR : TK_AND, pB, yymsp[-4].minor.yy590);
       }
     }else{
-      Expr *pRHS = yymsp[-1].minor.yy14->a[0].pExpr;
-      if( yymsp[-1].minor.yy14->nExpr==1 && sqlite3ExprIsConstant(pParse,pRHS) && yymsp[-4].minor.yy454->op!=TK_VECTOR ){
-        yymsp[-1].minor.yy14->a[0].pExpr = 0;
-        sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy14);
+      Expr *pRHS = yymsp[-1].minor.yy402->a[0].pExpr;
+      if( yymsp[-1].minor.yy402->nExpr==1 && sqlite3ExprIsConstant(pParse,pRHS) && yymsp[-4].minor.yy590->op!=TK_VECTOR ){
+        yymsp[-1].minor.yy402->a[0].pExpr = 0;
+        sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy402);
         pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
-        yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy454, pRHS);
-      }else if( yymsp[-1].minor.yy14->nExpr==1 && pRHS->op==TK_SELECT ){
-        yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy454, 0);
-        sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy454, pRHS->x.pSelect);
+        yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy590, pRHS);
+      }else if( yymsp[-1].minor.yy402->nExpr==1 && pRHS->op==TK_SELECT ){
+        yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy590, 0);
+        sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy590, pRHS->x.pSelect);
         pRHS->x.pSelect = 0;
-        sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy14);
+        sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy402);
       }else{
-        yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy454, 0);
-        if( yymsp[-4].minor.yy454==0 ){
-          sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy14);
-        }else if( yymsp[-4].minor.yy454->pLeft->op==TK_VECTOR ){
-          int nExpr = yymsp[-4].minor.yy454->pLeft->x.pList->nExpr;
-          Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy14);
+        yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy590, 0);
+        if( yymsp[-4].minor.yy590==0 ){
+          sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy402);
+        }else if( yymsp[-4].minor.yy590->pLeft->op==TK_VECTOR ){
+          int nExpr = yymsp[-4].minor.yy590->pLeft->x.pList->nExpr;
+          Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy402);
           if( pSelectRHS ){
             parserDoubleLinkSelect(pParse, pSelectRHS);
-            sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy454, pSelectRHS);
+            sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy590, pSelectRHS);
           }
         }else{
-          yymsp[-4].minor.yy454->x.pList = yymsp[-1].minor.yy14;
-          sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy454);
+          yymsp[-4].minor.yy590->x.pList = yymsp[-1].minor.yy402;
+          sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy590);
         }
       }
-      if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0);
+      if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy590, 0);
     }
   }
         break;
       case 224: /* expr ::= LP select RP */
 {
-    yymsp[-2].minor.yy454 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
-    sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy454, yymsp[-1].minor.yy555);
+    yymsp[-2].minor.yy590 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
+    sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy590, yymsp[-1].minor.yy637);
   }
         break;
       case 225: /* expr ::= expr in_op LP select RP */
 {
-    yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy454, 0);
-    sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy454, yymsp[-1].minor.yy555);
-    if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0);
+    yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy590, 0);
+    sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy590, yymsp[-1].minor.yy637);
+    if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy590, 0);
   }
         break;
       case 226: /* expr ::= expr in_op nm dbnm paren_exprlist */
 {
     SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
     Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
-    if( yymsp[0].minor.yy14 )  sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy14);
-    yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy454, 0);
-    sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy454, pSelect);
-    if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0);
+    if( yymsp[0].minor.yy402 )  sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy402);
+    yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy590, 0);
+    sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy590, pSelect);
+    if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy590, 0);
   }
         break;
       case 227: /* expr ::= EXISTS LP select RP */
 {
     Expr *p;
-    p = yymsp[-3].minor.yy454 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
-    sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy555);
+    p = yymsp[-3].minor.yy590 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
+    sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy637);
   }
         break;
       case 228: /* expr ::= CASE case_operand case_exprlist case_else END */
 {
-  yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy454, 0);
-  if( yymsp[-4].minor.yy454 ){
-    yymsp[-4].minor.yy454->x.pList = yymsp[-1].minor.yy454 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy14,yymsp[-1].minor.yy454) : yymsp[-2].minor.yy14;
-    sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy454);
+  yymsp[-4].minor.yy590 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy590, 0);
+  if( yymsp[-4].minor.yy590 ){
+    yymsp[-4].minor.yy590->x.pList = yymsp[-1].minor.yy590 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy402,yymsp[-1].minor.yy590) : yymsp[-2].minor.yy402;
+    sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy590);
   }else{
-    sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy14);
-    sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy454);
+    sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy402);
+    sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy590);
   }
 }
         break;
       case 229: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
 {
-  yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, yymsp[-2].minor.yy454);
-  yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, yymsp[0].minor.yy454);
+  yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy402, yymsp[-2].minor.yy590);
+  yymsp[-4].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy402, yymsp[0].minor.yy590);
 }
         break;
       case 230: /* case_exprlist ::= WHEN expr THEN expr */
 {
-  yymsp[-3].minor.yy14 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy454);
-  yymsp[-3].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy14, yymsp[0].minor.yy454);
+  yymsp[-3].minor.yy402 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy590);
+  yymsp[-3].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy402, yymsp[0].minor.yy590);
 }
         break;
       case 235: /* nexprlist ::= nexprlist COMMA expr */
-{yymsp[-2].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy14,yymsp[0].minor.yy454);}
+{yymsp[-2].minor.yy402 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy402,yymsp[0].minor.yy590);}
         break;
       case 236: /* nexprlist ::= expr */
-{yymsp[0].minor.yy14 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy454); /*A-overwrites-Y*/}
+{yymsp[0].minor.yy402 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy590); /*A-overwrites-Y*/}
         break;
       case 238: /* paren_exprlist ::= LP exprlist RP */
       case 243: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==243);
-{yymsp[-2].minor.yy14 = yymsp[-1].minor.yy14;}
+{yymsp[-2].minor.yy402 = yymsp[-1].minor.yy402;}
         break;
       case 239: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
 {
   sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
-                     sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy14, yymsp[-10].minor.yy144,
-                      &yymsp[-11].minor.yy0, yymsp[0].minor.yy454, SQLITE_SO_ASC, yymsp[-8].minor.yy144, SQLITE_IDXTYPE_APPDEF);
+                     sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy402, yymsp[-10].minor.yy502,
+                      &yymsp[-11].minor.yy0, yymsp[0].minor.yy590, SQLITE_SO_ASC, yymsp[-8].minor.yy502, SQLITE_IDXTYPE_APPDEF);
   if( IN_RENAME_OBJECT && pParse->pNewIndex ){
     sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
   }
 }
         break;
       case 240: /* uniqueflag ::= UNIQUE */
-      case 281: /* raisetype ::= ABORT */ yytestcase(yyruleno==281);
-{yymsp[0].minor.yy144 = OE_Abort;}
+      case 282: /* raisetype ::= ABORT */ yytestcase(yyruleno==282);
+{yymsp[0].minor.yy502 = OE_Abort;}
         break;
       case 241: /* uniqueflag ::= */
-{yymsp[1].minor.yy144 = OE_None;}
+{yymsp[1].minor.yy502 = OE_None;}
         break;
       case 244: /* eidlist ::= eidlist COMMA nm collate sortorder */
 {
-  yymsp[-4].minor.yy14 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy14, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy144, yymsp[0].minor.yy144);
+  yymsp[-4].minor.yy402 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy402, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy502, yymsp[0].minor.yy502);
 }
         break;
       case 245: /* eidlist ::= nm collate sortorder */
 {
-  yymsp[-2].minor.yy14 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy144, yymsp[0].minor.yy144); /*A-overwrites-Y*/
+  yymsp[-2].minor.yy402 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy502, yymsp[0].minor.yy502); /*A-overwrites-Y*/
 }
         break;
       case 248: /* cmd ::= DROP INDEX ifexists fullname */
-{sqlite3DropIndex(pParse, yymsp[0].minor.yy203, yymsp[-1].minor.yy144);}
+{sqlite3DropIndex(pParse, yymsp[0].minor.yy563, yymsp[-1].minor.yy502);}
         break;
       case 249: /* cmd ::= VACUUM vinto */
-{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy454);}
+{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy590);}
         break;
       case 250: /* cmd ::= VACUUM nm vinto */
-{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy454);}
+{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy590);}
         break;
       case 253: /* cmd ::= PRAGMA nm dbnm */
 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
@@ -183660,12 +182370,12 @@ static YYACTIONTYPE yy_reduce(
   Token all;
   all.z = yymsp[-3].minor.yy0.z;
   all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
-  sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy427, &all);
+  sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy319, &all);
 }
         break;
       case 261: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
 {
-  sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy144, yymsp[-4].minor.yy286.a, yymsp[-4].minor.yy286.b, yymsp[-2].minor.yy203, yymsp[0].minor.yy454, yymsp[-10].minor.yy144, yymsp[-8].minor.yy144);
+  sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy502, yymsp[-4].minor.yy28.a, yymsp[-4].minor.yy28.b, yymsp[-2].minor.yy563, yymsp[0].minor.yy590, yymsp[-10].minor.yy502, yymsp[-8].minor.yy502);
   yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
 #ifdef SQLITE_DEBUG
   assert( pParse->isCreate ); /* Set by createkw reduce action */
@@ -183674,439 +182384,421 @@ static YYACTIONTYPE yy_reduce(
 }
         break;
       case 262: /* trigger_time ::= BEFORE|AFTER */
-{ yymsp[0].minor.yy144 = yymsp[0].major; /*A-overwrites-X*/ }
+{ yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-X*/ }
         break;
       case 263: /* trigger_time ::= INSTEAD OF */
-{ yymsp[-1].minor.yy144 = TK_INSTEAD;}
+{ yymsp[-1].minor.yy502 = TK_INSTEAD;}
         break;
       case 264: /* trigger_time ::= */
-{ yymsp[1].minor.yy144 = TK_BEFORE; }
+{ yymsp[1].minor.yy502 = TK_BEFORE; }
         break;
       case 265: /* trigger_event ::= DELETE|INSERT */
       case 266: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==266);
-{yymsp[0].minor.yy286.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy286.b = 0;}
+{yymsp[0].minor.yy28.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy28.b = 0;}
         break;
       case 267: /* trigger_event ::= UPDATE OF idlist */
-{yymsp[-2].minor.yy286.a = TK_UPDATE; yymsp[-2].minor.yy286.b = yymsp[0].minor.yy132;}
+{yymsp[-2].minor.yy28.a = TK_UPDATE; yymsp[-2].minor.yy28.b = yymsp[0].minor.yy204;}
         break;
       case 268: /* when_clause ::= */
-      case 286: /* key_opt ::= */ yytestcase(yyruleno==286);
-{ yymsp[1].minor.yy454 = 0; }
+      case 287: /* key_opt ::= */ yytestcase(yyruleno==287);
+{ yymsp[1].minor.yy590 = 0; }
         break;
       case 269: /* when_clause ::= WHEN expr */
-      case 287: /* key_opt ::= KEY expr */ yytestcase(yyruleno==287);
-{ yymsp[-1].minor.yy454 = yymsp[0].minor.yy454; }
+      case 288: /* key_opt ::= KEY expr */ yytestcase(yyruleno==288);
+{ yymsp[-1].minor.yy590 = yymsp[0].minor.yy590; }
         break;
       case 270: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
 {
-  yymsp[-2].minor.yy427->pLast->pNext = yymsp[-1].minor.yy427;
-  yymsp[-2].minor.yy427->pLast = yymsp[-1].minor.yy427;
+  assert( yymsp[-2].minor.yy319!=0 );
+  yymsp[-2].minor.yy319->pLast->pNext = yymsp[-1].minor.yy319;
+  yymsp[-2].minor.yy319->pLast = yymsp[-1].minor.yy319;
 }
         break;
       case 271: /* trigger_cmd_list ::= trigger_cmd SEMI */
 {
-  yymsp[-1].minor.yy427->pLast = yymsp[-1].minor.yy427;
+  assert( yymsp[-1].minor.yy319!=0 );
+  yymsp[-1].minor.yy319->pLast = yymsp[-1].minor.yy319;
 }
         break;
-      case 272: /* tridxby ::= INDEXED BY nm */
+      case 272: /* trnm ::= nm DOT nm */
+{
+  yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
+  sqlite3ErrorMsg(pParse,
+        "qualified table names are not allowed on INSERT, UPDATE, and DELETE "
+        "statements within triggers");
+}
+        break;
+      case 273: /* tridxby ::= INDEXED BY nm */
 {
   sqlite3ErrorMsg(pParse,
         "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
         "within triggers");
 }
         break;
-      case 273: /* tridxby ::= NOT INDEXED */
+      case 274: /* tridxby ::= NOT INDEXED */
 {
   sqlite3ErrorMsg(pParse,
         "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
         "within triggers");
 }
         break;
-      case 274: /* trigger_cmd ::= UPDATE orconf xfullname tridxby SET setlist from where_opt scanpt */
-{yylhsminor.yy427 = sqlite3TriggerUpdateStep(pParse, yymsp[-6].minor.yy203, yymsp[-2].minor.yy203, yymsp[-3].minor.yy14, yymsp[-1].minor.yy454, yymsp[-7].minor.yy144, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy168);}
-  yymsp[-8].minor.yy427 = yylhsminor.yy427;
+      case 275: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
+{yylhsminor.yy319 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy563, yymsp[-3].minor.yy402, yymsp[-1].minor.yy590, yymsp[-7].minor.yy502, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy342);}
+  yymsp[-8].minor.yy319 = yylhsminor.yy319;
         break;
-      case 275: /* trigger_cmd ::= scanpt insert_cmd INTO xfullname idlist_opt select upsert scanpt */
+      case 276: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
 {
-   yylhsminor.yy427 = sqlite3TriggerInsertStep(pParse,yymsp[-4].minor.yy203,yymsp[-3].minor.yy132,yymsp[-2].minor.yy555,yymsp[-6].minor.yy144,yymsp[-1].minor.yy122,yymsp[-7].minor.yy168,yymsp[0].minor.yy168);/*yylhsminor.yy427-overwrites-yymsp[-6].minor.yy144*/
+   yylhsminor.yy319 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy204,yymsp[-2].minor.yy637,yymsp[-6].minor.yy502,yymsp[-1].minor.yy403,yymsp[-7].minor.yy342,yymsp[0].minor.yy342);/*yylhsminor.yy319-overwrites-yymsp[-6].minor.yy502*/
 }
-  yymsp[-7].minor.yy427 = yylhsminor.yy427;
+  yymsp[-7].minor.yy319 = yylhsminor.yy319;
         break;
-      case 276: /* trigger_cmd ::= DELETE FROM xfullname tridxby where_opt scanpt */
-{yylhsminor.yy427 = sqlite3TriggerDeleteStep(pParse, yymsp[-3].minor.yy203, yymsp[-1].minor.yy454, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy168);}
-  yymsp[-5].minor.yy427 = yylhsminor.yy427;
+      case 277: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
+{yylhsminor.yy319 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy590, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy342);}
+  yymsp[-5].minor.yy319 = yylhsminor.yy319;
         break;
-      case 277: /* trigger_cmd ::= scanpt select scanpt */
-{yylhsminor.yy427 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy555, yymsp[-2].minor.yy168, yymsp[0].minor.yy168); /*yylhsminor.yy427-overwrites-yymsp[-1].minor.yy555*/}
-  yymsp[-2].minor.yy427 = yylhsminor.yy427;
+      case 278: /* trigger_cmd ::= scanpt select scanpt */
+{yylhsminor.yy319 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy637, yymsp[-2].minor.yy342, yymsp[0].minor.yy342); /*yylhsminor.yy319-overwrites-yymsp[-1].minor.yy637*/}
+  yymsp[-2].minor.yy319 = yylhsminor.yy319;
         break;
-      case 278: /* expr ::= RAISE LP IGNORE RP */
+      case 279: /* expr ::= RAISE LP IGNORE RP */
 {
-  yymsp[-3].minor.yy454 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
-  if( yymsp[-3].minor.yy454 ){
-    yymsp[-3].minor.yy454->affExpr = OE_Ignore;
+  yymsp[-3].minor.yy590 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
+  if( yymsp[-3].minor.yy590 ){
+    yymsp[-3].minor.yy590->affExpr = OE_Ignore;
   }
 }
         break;
-      case 279: /* expr ::= RAISE LP raisetype COMMA expr RP */
+      case 280: /* expr ::= RAISE LP raisetype COMMA expr RP */
 {
-  yymsp[-5].minor.yy454 = sqlite3PExpr(pParse, TK_RAISE, yymsp[-1].minor.yy454, 0);
-  if( yymsp[-5].minor.yy454 ) {
-    yymsp[-5].minor.yy454->affExpr = (char)yymsp[-3].minor.yy144;
+  yymsp[-5].minor.yy590 = sqlite3PExpr(pParse, TK_RAISE, yymsp[-1].minor.yy590, 0);
+  if( yymsp[-5].minor.yy590 ) {
+    yymsp[-5].minor.yy590->affExpr = (char)yymsp[-3].minor.yy502;
   }
 }
         break;
-      case 280: /* raisetype ::= ROLLBACK */
-{yymsp[0].minor.yy144 = OE_Rollback;}
+      case 281: /* raisetype ::= ROLLBACK */
+{yymsp[0].minor.yy502 = OE_Rollback;}
         break;
-      case 282: /* raisetype ::= FAIL */
-{yymsp[0].minor.yy144 = OE_Fail;}
+      case 283: /* raisetype ::= FAIL */
+{yymsp[0].minor.yy502 = OE_Fail;}
         break;
-      case 283: /* cmd ::= DROP TRIGGER ifexists fullname */
+      case 284: /* cmd ::= DROP TRIGGER ifexists fullname */
 {
-  sqlite3DropTrigger(pParse,yymsp[0].minor.yy203,yymsp[-1].minor.yy144);
+  sqlite3DropTrigger(pParse,yymsp[0].minor.yy563,yymsp[-1].minor.yy502);
 }
         break;
-      case 284: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+      case 285: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
 {
-  sqlite3Attach(pParse, yymsp[-3].minor.yy454, yymsp[-1].minor.yy454, yymsp[0].minor.yy454);
+  sqlite3Attach(pParse, yymsp[-3].minor.yy590, yymsp[-1].minor.yy590, yymsp[0].minor.yy590);
 }
         break;
-      case 285: /* cmd ::= DETACH database_kw_opt expr */
+      case 286: /* cmd ::= DETACH database_kw_opt expr */
 {
-  sqlite3Detach(pParse, yymsp[0].minor.yy454);
+  sqlite3Detach(pParse, yymsp[0].minor.yy590);
 }
         break;
-      case 288: /* cmd ::= REINDEX */
+      case 289: /* cmd ::= REINDEX */
 {sqlite3Reindex(pParse, 0, 0);}
         break;
-      case 289: /* cmd ::= REINDEX nm dbnm */
+      case 290: /* cmd ::= REINDEX nm dbnm */
 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
         break;
-      case 290: /* cmd ::= ANALYZE */
+      case 291: /* cmd ::= ANALYZE */
 {sqlite3Analyze(pParse, 0, 0);}
         break;
-      case 291: /* cmd ::= ANALYZE nm dbnm */
+      case 292: /* cmd ::= ANALYZE nm dbnm */
 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
         break;
-      case 292: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
+      case 293: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
 {
-  sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy203,&yymsp[0].minor.yy0);
+  sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy563,&yymsp[0].minor.yy0);
 }
         break;
-      case 293: /* cmd ::= alter_add carglist */
+      case 294: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
 {
   yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
   sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
-}
-        break;
-      case 294: /* alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
-{
-  disableLookaside(pParse);
-  sqlite3AlterBeginAddColumn(pParse, yymsp[-4].minor.yy203);
-  sqlite3AddColumn(pParse, yymsp[-1].minor.yy0, yymsp[0].minor.yy0);
-  yymsp[-6].minor.yy0 = yymsp[-1].minor.yy0;
 }
         break;
       case 295: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
 {
-  sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy203, &yymsp[0].minor.yy0);
-}
-        break;
-      case 296: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
-{
-  sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy203, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
+  sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy563, &yymsp[0].minor.yy0);
 }
         break;
-      case 297: /* cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
+      case 296: /* add_column_fullname ::= fullname */
 {
-  sqlite3AlterDropConstraint(pParse, yymsp[-3].minor.yy203, &yymsp[0].minor.yy0, 0);
-}
-        break;
-      case 298: /* cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
-{
-  sqlite3AlterDropConstraint(pParse, yymsp[-6].minor.yy203, 0, &yymsp[-3].minor.yy0);
-}
-        break;
-      case 299: /* cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
-{
-  sqlite3AlterSetNotNull(pParse, yymsp[-7].minor.yy203, &yymsp[-4].minor.yy0, &yymsp[-2].minor.yy0);
-}
-        break;
-      case 300: /* cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
-{
-  sqlite3AlterAddConstraint(pParse, yymsp[-8].minor.yy203, &yymsp[-6].minor.yy0, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy0.z+1, (yymsp[-1].minor.yy0.z-yymsp[-3].minor.yy0.z-1));
+  disableLookaside(pParse);
+  sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy563);
 }
-  yy_destructor(yypParser,219,&yymsp[-2].minor);
         break;
-      case 301: /* cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
+      case 297: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
 {
-  sqlite3AlterAddConstraint(pParse, yymsp[-6].minor.yy203, &yymsp[-4].minor.yy0, 0, yymsp[-3].minor.yy0.z+1, (yymsp[-1].minor.yy0.z-yymsp[-3].minor.yy0.z-1));
+  sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy563, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
 }
-  yy_destructor(yypParser,219,&yymsp[-2].minor);
         break;
-      case 302: /* cmd ::= create_vtab */
+      case 298: /* cmd ::= create_vtab */
 {sqlite3VtabFinishParse(pParse,0);}
         break;
-      case 303: /* cmd ::= create_vtab LP vtabarglist RP */
+      case 299: /* cmd ::= create_vtab LP vtabarglist RP */
 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
         break;
-      case 304: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+      case 300: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
 {
-    sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy144);
+    sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy502);
 }
         break;
-      case 305: /* vtabarg ::= */
+      case 301: /* vtabarg ::= */
 {sqlite3VtabArgInit(pParse);}
         break;
-      case 306: /* vtabargtoken ::= ANY */
-      case 307: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==307);
-      case 308: /* lp ::= LP */ yytestcase(yyruleno==308);
+      case 302: /* vtabargtoken ::= ANY */
+      case 303: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==303);
+      case 304: /* lp ::= LP */ yytestcase(yyruleno==304);
 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
         break;
-      case 309: /* with ::= WITH wqlist */
-      case 310: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==310);
-{ sqlite3WithPush(pParse, yymsp[0].minor.yy59, 1); }
+      case 305: /* with ::= WITH wqlist */
+      case 306: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==306);
+{ sqlite3WithPush(pParse, yymsp[0].minor.yy125, 1); }
         break;
-      case 311: /* wqas ::= AS */
-{yymsp[0].minor.yy462 = M10d_Any;}
+      case 307: /* wqas ::= AS */
+{yymsp[0].minor.yy444 = M10d_Any;}
         break;
-      case 312: /* wqas ::= AS MATERIALIZED */
-{yymsp[-1].minor.yy462 = M10d_Yes;}
+      case 308: /* wqas ::= AS MATERIALIZED */
+{yymsp[-1].minor.yy444 = M10d_Yes;}
         break;
-      case 313: /* wqas ::= AS NOT MATERIALIZED */
-{yymsp[-2].minor.yy462 = M10d_No;}
+      case 309: /* wqas ::= AS NOT MATERIALIZED */
+{yymsp[-2].minor.yy444 = M10d_No;}
         break;
-      case 314: /* wqitem ::= withnm eidlist_opt wqas LP select RP */
+      case 310: /* wqitem ::= withnm eidlist_opt wqas LP select RP */
 {
-  yymsp[-5].minor.yy67 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy14, yymsp[-1].minor.yy555, yymsp[-3].minor.yy462); /*A-overwrites-X*/
+  yymsp[-5].minor.yy361 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy402, yymsp[-1].minor.yy637, yymsp[-3].minor.yy444); /*A-overwrites-X*/
 }
         break;
-      case 315: /* withnm ::= nm */
+      case 311: /* withnm ::= nm */
 {pParse->bHasWith = 1;}
         break;
-      case 316: /* wqlist ::= wqitem */
+      case 312: /* wqlist ::= wqitem */
 {
-  yymsp[0].minor.yy59 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy67); /*A-overwrites-X*/
+  yymsp[0].minor.yy125 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy361); /*A-overwrites-X*/
 }
         break;
-      case 317: /* wqlist ::= wqlist COMMA wqitem */
+      case 313: /* wqlist ::= wqlist COMMA wqitem */
 {
-  yymsp[-2].minor.yy59 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy59, yymsp[0].minor.yy67);
+  yymsp[-2].minor.yy125 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy125, yymsp[0].minor.yy361);
 }
         break;
-      case 318: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
+      case 314: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
 {
-  assert( yymsp[0].minor.yy211!=0 );
-  sqlite3WindowChain(pParse, yymsp[0].minor.yy211, yymsp[-2].minor.yy211);
-  yymsp[0].minor.yy211->pNextWin = yymsp[-2].minor.yy211;
-  yylhsminor.yy211 = yymsp[0].minor.yy211;
+  assert( yymsp[0].minor.yy483!=0 );
+  sqlite3WindowChain(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy483);
+  yymsp[0].minor.yy483->pNextWin = yymsp[-2].minor.yy483;
+  yylhsminor.yy483 = yymsp[0].minor.yy483;
 }
-  yymsp[-2].minor.yy211 = yylhsminor.yy211;
+  yymsp[-2].minor.yy483 = yylhsminor.yy483;
         break;
-      case 319: /* windowdefn ::= nm AS LP window RP */
+      case 315: /* windowdefn ::= nm AS LP window RP */
 {
-  if( ALWAYS(yymsp[-1].minor.yy211) ){
-    yymsp[-1].minor.yy211->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
+  if( ALWAYS(yymsp[-1].minor.yy483) ){
+    yymsp[-1].minor.yy483->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
   }
-  yylhsminor.yy211 = yymsp[-1].minor.yy211;
+  yylhsminor.yy483 = yymsp[-1].minor.yy483;
 }
-  yymsp[-4].minor.yy211 = yylhsminor.yy211;
+  yymsp[-4].minor.yy483 = yylhsminor.yy483;
         break;
-      case 320: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+      case 316: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
 {
-  yymsp[-4].minor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, yymsp[-2].minor.yy14, yymsp[-1].minor.yy14, 0);
+  yymsp[-4].minor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy402, yymsp[-1].minor.yy402, 0);
 }
         break;
-      case 321: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+      case 317: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
 {
-  yylhsminor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, yymsp[-2].minor.yy14, yymsp[-1].minor.yy14, &yymsp[-5].minor.yy0);
+  yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy402, yymsp[-1].minor.yy402, &yymsp[-5].minor.yy0);
 }
-  yymsp[-5].minor.yy211 = yylhsminor.yy211;
+  yymsp[-5].minor.yy483 = yylhsminor.yy483;
         break;
-      case 322: /* window ::= ORDER BY sortlist frame_opt */
+      case 318: /* window ::= ORDER BY sortlist frame_opt */
 {
-  yymsp[-3].minor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, 0, yymsp[-1].minor.yy14, 0);
+  yymsp[-3].minor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy402, 0);
 }
         break;
-      case 323: /* window ::= nm ORDER BY sortlist frame_opt */
+      case 319: /* window ::= nm ORDER BY sortlist frame_opt */
 {
-  yylhsminor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, 0, yymsp[-1].minor.yy14, &yymsp[-4].minor.yy0);
+  yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy402, &yymsp[-4].minor.yy0);
 }
-  yymsp[-4].minor.yy211 = yylhsminor.yy211;
+  yymsp[-4].minor.yy483 = yylhsminor.yy483;
         break;
-      case 324: /* window ::= nm frame_opt */
+      case 320: /* window ::= nm frame_opt */
 {
-  yylhsminor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, 0, 0, &yymsp[-1].minor.yy0);
+  yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, 0, &yymsp[-1].minor.yy0);
 }
-  yymsp[-1].minor.yy211 = yylhsminor.yy211;
+  yymsp[-1].minor.yy483 = yylhsminor.yy483;
         break;
-      case 325: /* frame_opt ::= */
+      case 321: /* frame_opt ::= */
 {
-  yymsp[1].minor.yy211 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
+  yymsp[1].minor.yy483 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
 }
         break;
-      case 326: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+      case 322: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
 {
-  yylhsminor.yy211 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy144, yymsp[-1].minor.yy509.eType, yymsp[-1].minor.yy509.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy462);
+  yylhsminor.yy483 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy502, yymsp[-1].minor.yy205.eType, yymsp[-1].minor.yy205.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy444);
 }
-  yymsp[-2].minor.yy211 = yylhsminor.yy211;
+  yymsp[-2].minor.yy483 = yylhsminor.yy483;
         break;
-      case 327: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+      case 323: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
 {
-  yylhsminor.yy211 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy144, yymsp[-3].minor.yy509.eType, yymsp[-3].minor.yy509.pExpr, yymsp[-1].minor.yy509.eType, yymsp[-1].minor.yy509.pExpr, yymsp[0].minor.yy462);
+  yylhsminor.yy483 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy502, yymsp[-3].minor.yy205.eType, yymsp[-3].minor.yy205.pExpr, yymsp[-1].minor.yy205.eType, yymsp[-1].minor.yy205.pExpr, yymsp[0].minor.yy444);
 }
-  yymsp[-5].minor.yy211 = yylhsminor.yy211;
+  yymsp[-5].minor.yy483 = yylhsminor.yy483;
         break;
-      case 329: /* frame_bound_s ::= frame_bound */
-      case 331: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==331);
-{yylhsminor.yy509 = yymsp[0].minor.yy509;}
-  yymsp[0].minor.yy509 = yylhsminor.yy509;
+      case 325: /* frame_bound_s ::= frame_bound */
+      case 327: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==327);
+{yylhsminor.yy205 = yymsp[0].minor.yy205;}
+  yymsp[0].minor.yy205 = yylhsminor.yy205;
         break;
-      case 330: /* frame_bound_s ::= UNBOUNDED PRECEDING */
-      case 332: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==332);
-      case 334: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==334);
-{yylhsminor.yy509.eType = yymsp[-1].major; yylhsminor.yy509.pExpr = 0;}
-  yymsp[-1].minor.yy509 = yylhsminor.yy509;
+      case 326: /* frame_bound_s ::= UNBOUNDED PRECEDING */
+      case 328: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==328);
+      case 330: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==330);
+{yylhsminor.yy205.eType = yymsp[-1].major; yylhsminor.yy205.pExpr = 0;}
+  yymsp[-1].minor.yy205 = yylhsminor.yy205;
         break;
-      case 333: /* frame_bound ::= expr PRECEDING|FOLLOWING */
-{yylhsminor.yy509.eType = yymsp[0].major; yylhsminor.yy509.pExpr = yymsp[-1].minor.yy454;}
-  yymsp[-1].minor.yy509 = yylhsminor.yy509;
+      case 329: /* frame_bound ::= expr PRECEDING|FOLLOWING */
+{yylhsminor.yy205.eType = yymsp[0].major; yylhsminor.yy205.pExpr = yymsp[-1].minor.yy590;}
+  yymsp[-1].minor.yy205 = yylhsminor.yy205;
         break;
-      case 335: /* frame_exclude_opt ::= */
-{yymsp[1].minor.yy462 = 0;}
+      case 331: /* frame_exclude_opt ::= */
+{yymsp[1].minor.yy444 = 0;}
         break;
-      case 336: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
-{yymsp[-1].minor.yy462 = yymsp[0].minor.yy462;}
+      case 332: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
+{yymsp[-1].minor.yy444 = yymsp[0].minor.yy444;}
         break;
-      case 337: /* frame_exclude ::= NO OTHERS */
-      case 338: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==338);
-{yymsp[-1].minor.yy462 = yymsp[-1].major; /*A-overwrites-X*/}
+      case 333: /* frame_exclude ::= NO OTHERS */
+      case 334: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==334);
+{yymsp[-1].minor.yy444 = yymsp[-1].major; /*A-overwrites-X*/}
         break;
-      case 339: /* frame_exclude ::= GROUP|TIES */
-{yymsp[0].minor.yy462 = yymsp[0].major; /*A-overwrites-X*/}
+      case 335: /* frame_exclude ::= GROUP|TIES */
+{yymsp[0].minor.yy444 = yymsp[0].major; /*A-overwrites-X*/}
         break;
-      case 340: /* window_clause ::= WINDOW windowdefn_list */
-{ yymsp[-1].minor.yy211 = yymsp[0].minor.yy211; }
+      case 336: /* window_clause ::= WINDOW windowdefn_list */
+{ yymsp[-1].minor.yy483 = yymsp[0].minor.yy483; }
         break;
-      case 341: /* filter_over ::= filter_clause over_clause */
+      case 337: /* filter_over ::= filter_clause over_clause */
 {
-  if( yymsp[0].minor.yy211 ){
-    yymsp[0].minor.yy211->pFilter = yymsp[-1].minor.yy454;
+  if( yymsp[0].minor.yy483 ){
+    yymsp[0].minor.yy483->pFilter = yymsp[-1].minor.yy590;
   }else{
-    sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy454);
+    sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy590);
   }
-  yylhsminor.yy211 = yymsp[0].minor.yy211;
+  yylhsminor.yy483 = yymsp[0].minor.yy483;
 }
-  yymsp[-1].minor.yy211 = yylhsminor.yy211;
+  yymsp[-1].minor.yy483 = yylhsminor.yy483;
         break;
-      case 342: /* filter_over ::= over_clause */
+      case 338: /* filter_over ::= over_clause */
 {
-  yylhsminor.yy211 = yymsp[0].minor.yy211;
+  yylhsminor.yy483 = yymsp[0].minor.yy483;
 }
-  yymsp[0].minor.yy211 = yylhsminor.yy211;
+  yymsp[0].minor.yy483 = yylhsminor.yy483;
         break;
-      case 343: /* filter_over ::= filter_clause */
+      case 339: /* filter_over ::= filter_clause */
 {
-  yylhsminor.yy211 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
-  if( yylhsminor.yy211 ){
-    yylhsminor.yy211->eFrmType = TK_FILTER;
-    yylhsminor.yy211->pFilter = yymsp[0].minor.yy454;
+  yylhsminor.yy483 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
+  if( yylhsminor.yy483 ){
+    yylhsminor.yy483->eFrmType = TK_FILTER;
+    yylhsminor.yy483->pFilter = yymsp[0].minor.yy590;
   }else{
-    sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy454);
+    sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy590);
   }
 }
-  yymsp[0].minor.yy211 = yylhsminor.yy211;
+  yymsp[0].minor.yy483 = yylhsminor.yy483;
         break;
-      case 344: /* over_clause ::= OVER LP window RP */
+      case 340: /* over_clause ::= OVER LP window RP */
 {
-  yymsp[-3].minor.yy211 = yymsp[-1].minor.yy211;
-  assert( yymsp[-3].minor.yy211!=0 );
+  yymsp[-3].minor.yy483 = yymsp[-1].minor.yy483;
+  assert( yymsp[-3].minor.yy483!=0 );
 }
         break;
-      case 345: /* over_clause ::= OVER nm */
+      case 341: /* over_clause ::= OVER nm */
 {
-  yymsp[-1].minor.yy211 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
-  if( yymsp[-1].minor.yy211 ){
-    yymsp[-1].minor.yy211->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
+  yymsp[-1].minor.yy483 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
+  if( yymsp[-1].minor.yy483 ){
+    yymsp[-1].minor.yy483->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
   }
 }
         break;
-      case 346: /* filter_clause ::= FILTER LP WHERE expr RP */
-{ yymsp[-4].minor.yy454 = yymsp[-1].minor.yy454; }
+      case 342: /* filter_clause ::= FILTER LP WHERE expr RP */
+{ yymsp[-4].minor.yy590 = yymsp[-1].minor.yy590; }
         break;
-      case 347: /* term ::= QNUMBER */
+      case 343: /* term ::= QNUMBER */
 {
-  yylhsminor.yy454=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0);
-  sqlite3DequoteNumber(pParse, yylhsminor.yy454);
+  yylhsminor.yy590=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0);
+  sqlite3DequoteNumber(pParse, yylhsminor.yy590);
 }
-  yymsp[0].minor.yy454 = yylhsminor.yy454;
+  yymsp[0].minor.yy590 = yylhsminor.yy590;
         break;
       default:
-      /* (348) input ::= cmdlist */ yytestcase(yyruleno==348);
-      /* (349) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==349);
-      /* (350) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=350);
-      /* (351) ecmd ::= SEMI */ yytestcase(yyruleno==351);
-      /* (352) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==352);
-      /* (353) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=353);
-      /* (354) trans_opt ::= */ yytestcase(yyruleno==354);
-      /* (355) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==355);
-      /* (356) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==356);
-      /* (357) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==357);
-      /* (358) savepoint_opt ::= */ yytestcase(yyruleno==358);
-      /* (359) cmd ::= create_table create_table_args */ yytestcase(yyruleno==359);
-      /* (360) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=360);
-      /* (361) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==361);
-      /* (362) columnlist ::= columnname carglist */ yytestcase(yyruleno==362);
-      /* (363) nm ::= ID|INDEXED|JOIN_KW */ yytestcase(yyruleno==363);
-      /* (364) nm ::= STRING */ yytestcase(yyruleno==364);
-      /* (365) typetoken ::= typename */ yytestcase(yyruleno==365);
-      /* (366) typename ::= ID|STRING */ yytestcase(yyruleno==366);
-      /* (367) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=367);
-      /* (368) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=368);
-      /* (369) carglist ::= carglist ccons */ yytestcase(yyruleno==369);
-      /* (370) carglist ::= */ yytestcase(yyruleno==370);
-      /* (371) ccons ::= NULL onconf */ yytestcase(yyruleno==371);
-      /* (372) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==372);
-      /* (373) ccons ::= AS generated */ yytestcase(yyruleno==373);
-      /* (374) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==374);
-      /* (375) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==375);
-      /* (376) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=376);
-      /* (377) tconscomma ::= */ yytestcase(yyruleno==377);
-      /* (378) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=378);
-      /* (379) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=379);
-      /* (380) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=380);
-      /* (381) oneselect ::= values */ yytestcase(yyruleno==381);
-      /* (382) sclp ::= selcollist COMMA */ yytestcase(yyruleno==382);
-      /* (383) as ::= ID|STRING */ yytestcase(yyruleno==383);
-      /* (384) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=384);
-      /* (385) returning ::= */ yytestcase(yyruleno==385);
-      /* (386) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=386);
-      /* (387) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==387);
-      /* (388) case_operand ::= expr */ yytestcase(yyruleno==388);
-      /* (389) exprlist ::= nexprlist */ yytestcase(yyruleno==389);
-      /* (390) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=390);
-      /* (391) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=391);
-      /* (392) nmnum ::= ON */ yytestcase(yyruleno==392);
-      /* (393) nmnum ::= DELETE */ yytestcase(yyruleno==393);
-      /* (394) nmnum ::= DEFAULT */ yytestcase(yyruleno==394);
-      /* (395) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==395);
-      /* (396) foreach_clause ::= */ yytestcase(yyruleno==396);
-      /* (397) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==397);
-      /* (398) tridxby ::= */ yytestcase(yyruleno==398);
-      /* (399) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==399);
-      /* (400) database_kw_opt ::= */ yytestcase(yyruleno==400);
-      /* (401) kwcolumn_opt ::= */ yytestcase(yyruleno==401);
-      /* (402) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==402);
-      /* (403) vtabarglist ::= vtabarg */ yytestcase(yyruleno==403);
-      /* (404) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==404);
-      /* (405) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==405);
-      /* (406) anylist ::= */ yytestcase(yyruleno==406);
-      /* (407) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==407);
-      /* (408) anylist ::= anylist ANY */ yytestcase(yyruleno==408);
-      /* (409) with ::= */ yytestcase(yyruleno==409);
-      /* (410) windowdefn_list ::= windowdefn (OPTIMIZED OUT) */ assert(yyruleno!=410);
-      /* (411) window ::= frame_opt (OPTIMIZED OUT) */ assert(yyruleno!=411);
+      /* (344) input ::= cmdlist */ yytestcase(yyruleno==344);
+      /* (345) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==345);
+      /* (346) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=346);
+      /* (347) ecmd ::= SEMI */ yytestcase(yyruleno==347);
+      /* (348) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==348);
+      /* (349) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=349);
+      /* (350) trans_opt ::= */ yytestcase(yyruleno==350);
+      /* (351) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==351);
+      /* (352) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==352);
+      /* (353) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==353);
+      /* (354) savepoint_opt ::= */ yytestcase(yyruleno==354);
+      /* (355) cmd ::= create_table create_table_args */ yytestcase(yyruleno==355);
+      /* (356) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=356);
+      /* (357) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==357);
+      /* (358) columnlist ::= columnname carglist */ yytestcase(yyruleno==358);
+      /* (359) nm ::= ID|INDEXED|JOIN_KW */ yytestcase(yyruleno==359);
+      /* (360) nm ::= STRING */ yytestcase(yyruleno==360);
+      /* (361) typetoken ::= typename */ yytestcase(yyruleno==361);
+      /* (362) typename ::= ID|STRING */ yytestcase(yyruleno==362);
+      /* (363) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=363);
+      /* (364) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=364);
+      /* (365) carglist ::= carglist ccons */ yytestcase(yyruleno==365);
+      /* (366) carglist ::= */ yytestcase(yyruleno==366);
+      /* (367) ccons ::= NULL onconf */ yytestcase(yyruleno==367);
+      /* (368) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==368);
+      /* (369) ccons ::= AS generated */ yytestcase(yyruleno==369);
+      /* (370) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==370);
+      /* (371) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==371);
+      /* (372) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=372);
+      /* (373) tconscomma ::= */ yytestcase(yyruleno==373);
+      /* (374) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=374);
+      /* (375) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=375);
+      /* (376) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=376);
+      /* (377) oneselect ::= values */ yytestcase(yyruleno==377);
+      /* (378) sclp ::= selcollist COMMA */ yytestcase(yyruleno==378);
+      /* (379) as ::= ID|STRING */ yytestcase(yyruleno==379);
+      /* (380) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=380);
+      /* (381) returning ::= */ yytestcase(yyruleno==381);
+      /* (382) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=382);
+      /* (383) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==383);
+      /* (384) case_operand ::= expr */ yytestcase(yyruleno==384);
+      /* (385) exprlist ::= nexprlist */ yytestcase(yyruleno==385);
+      /* (386) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=386);
+      /* (387) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=387);
+      /* (388) nmnum ::= ON */ yytestcase(yyruleno==388);
+      /* (389) nmnum ::= DELETE */ yytestcase(yyruleno==389);
+      /* (390) nmnum ::= DEFAULT */ yytestcase(yyruleno==390);
+      /* (391) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==391);
+      /* (392) foreach_clause ::= */ yytestcase(yyruleno==392);
+      /* (393) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==393);
+      /* (394) trnm ::= nm */ yytestcase(yyruleno==394);
+      /* (395) tridxby ::= */ yytestcase(yyruleno==395);
+      /* (396) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==396);
+      /* (397) database_kw_opt ::= */ yytestcase(yyruleno==397);
+      /* (398) kwcolumn_opt ::= */ yytestcase(yyruleno==398);
+      /* (399) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==399);
+      /* (400) vtabarglist ::= vtabarg */ yytestcase(yyruleno==400);
+      /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==401);
+      /* (402) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==402);
+      /* (403) anylist ::= */ yytestcase(yyruleno==403);
+      /* (404) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==404);
+      /* (405) anylist ::= anylist ANY */ yytestcase(yyruleno==405);
+      /* (406) with ::= */ yytestcase(yyruleno==406);
+      /* (407) windowdefn_list ::= windowdefn (OPTIMIZED OUT) */ assert(yyruleno!=407);
+      /* (408) window ::= frame_opt (OPTIMIZED OUT) */ assert(yyruleno!=408);
         break;
 /********** End reduce actions ************************************************/
   };
@@ -184885,8 +183577,8 @@ static const unsigned char aKWCode[148] = {0,
 /* Check to see if z[0..n-1] is a keyword. If it is, write the
 ** parser symbol code for that keyword into *pType.  Always
 ** return the integer n (the length of the token). */
-static i64 keywordCode(const char *z, i64 n, int *pType){
-  i64 i, j;
+static int keywordCode(const char *z, int n, int *pType){
+  int i, j;
   const char *zKW;
   assert( n>=2 );
   i = ((charMap(z[0])*4) ^ (charMap(z[n-1])*3) ^ n*1) % 127;
@@ -185440,7 +184132,7 @@ SQLITE_PRIVATE i64 sqlite3GetToken(const unsigned char *z, int *tokenType){
     }
     case CC_DOLLAR:
     case CC_VARALPHA: {
-      i64 n = 0;
+      int n = 0;
       testcase( z[0]=='$' );  testcase( z[0]=='@' );
       testcase( z[0]==':' );  testcase( z[0]=='#' );
       *tokenType = TK_VARIABLE;
@@ -185536,7 +184228,7 @@ SQLITE_PRIVATE int sqlite3RunParser(Parse *pParse, const char *zSql){
   int tokenType;                  /* type of the next token */
   int lastTokenParsed = -1;       /* type of the previous token */
   sqlite3 *db = pParse->db;       /* The database connection */
-  i64 mxSqlLen;                   /* Max length of an SQL string */
+  int mxSqlLen;                   /* Max length of an SQL string */
   Parse *pParentParse = 0;        /* Outer parse context, if any */
 #ifdef sqlite3Parser_ENGINEALWAYSONSTACK
   yyParser sEngine;    /* Space to hold the Lemon-generated Parser object */
@@ -187192,14 +185884,6 @@ SQLITE_API int sqlite3_db_config(sqlite3 *db, int op, ...){
       rc = setupLookaside(db, pBuf, sz, cnt);
       break;
     }
-    case SQLITE_DBCONFIG_FP_DIGITS: {
-      int nIn = va_arg(ap, int);
-      int *pOut = va_arg(ap, int*);
-      if( nIn>3 && nIn<24 ) db->nFpDigit = (u8)nIn;
-      if( pOut ) *pOut = db->nFpDigit;
-      rc = SQLITE_OK;
-      break;
-    }
     default: {
       static const struct {
         int op;      /* The opcode */
@@ -188755,9 +187439,6 @@ SQLITE_API void *sqlite3_wal_hook(
   sqlite3_mutex_leave(db->mutex);
   return pRet;
 #else
-  UNUSED_PARAMETER(db);
-  UNUSED_PARAMETER(xCallback);
-  UNUSED_PARAMETER(pArg);
   return 0;
 #endif
 }
@@ -188773,11 +187454,6 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
   int *pnCkpt                     /* OUT: Total number of frames checkpointed */
 ){
 #ifdef SQLITE_OMIT_WAL
-  UNUSED_PARAMETER(db);
-  UNUSED_PARAMETER(zDb);
-  UNUSED_PARAMETER(eMode);
-  UNUSED_PARAMETER(pnLog);
-  UNUSED_PARAMETER(pnCkpt);
   return SQLITE_OK;
 #else
   int rc;                         /* Return code */
@@ -188791,12 +187467,11 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
   if( pnLog ) *pnLog = -1;
   if( pnCkpt ) *pnCkpt = -1;
 
-  assert( SQLITE_CHECKPOINT_NOOP==-1 );
   assert( SQLITE_CHECKPOINT_PASSIVE==0 );
   assert( SQLITE_CHECKPOINT_FULL==1 );
   assert( SQLITE_CHECKPOINT_RESTART==2 );
   assert( SQLITE_CHECKPOINT_TRUNCATE==3 );
-  if( eMode<SQLITE_CHECKPOINT_NOOP || eMode>SQLITE_CHECKPOINT_TRUNCATE ){
+  if( eMode<SQLITE_CHECKPOINT_PASSIVE || eMode>SQLITE_CHECKPOINT_TRUNCATE ){
     /* EVIDENCE-OF: R-03996-12088 The M parameter must be a valid checkpoint
     ** mode: */
     return SQLITE_MISUSE_BKPT;
@@ -189160,7 +187835,6 @@ static const int aHardLimit[] = {
   SQLITE_MAX_VARIABLE_NUMBER,      /* IMP: R-38091-32352 */
   SQLITE_MAX_TRIGGER_DEPTH,
   SQLITE_MAX_WORKER_THREADS,
-  SQLITE_MAX_PARSER_DEPTH,
 };
 
 /*
@@ -189175,9 +187849,6 @@ static const int aHardLimit[] = {
 #if SQLITE_MAX_SQL_LENGTH>SQLITE_MAX_LENGTH
 # error SQLITE_MAX_SQL_LENGTH must not be greater than SQLITE_MAX_LENGTH
 #endif
-#if SQLITE_MAX_SQL_LENGTH>2147482624     /* 1024 less than 2^31 */
-# error SQLITE_MAX_SQL_LENGTH must not be greater than 2147482624
-#endif
 #if SQLITE_MAX_COMPOUND_SELECT<2
 # error SQLITE_MAX_COMPOUND_SELECT must be at least 2
 #endif
@@ -189233,7 +187904,6 @@ SQLITE_API int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){
   assert( aHardLimit[SQLITE_LIMIT_SQL_LENGTH]==SQLITE_MAX_SQL_LENGTH );
   assert( aHardLimit[SQLITE_LIMIT_COLUMN]==SQLITE_MAX_COLUMN );
   assert( aHardLimit[SQLITE_LIMIT_EXPR_DEPTH]==SQLITE_MAX_EXPR_DEPTH );
-  assert( aHardLimit[SQLITE_LIMIT_PARSER_DEPTH]==SQLITE_MAX_PARSER_DEPTH );
   assert( aHardLimit[SQLITE_LIMIT_COMPOUND_SELECT]==SQLITE_MAX_COMPOUND_SELECT);
   assert( aHardLimit[SQLITE_LIMIT_VDBE_OP]==SQLITE_MAX_VDBE_OP );
   assert( aHardLimit[SQLITE_LIMIT_FUNCTION_ARG]==SQLITE_MAX_FUNCTION_ARG );
@@ -189243,7 +187913,7 @@ SQLITE_API int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){
   assert( aHardLimit[SQLITE_LIMIT_VARIABLE_NUMBER]==SQLITE_MAX_VARIABLE_NUMBER);
   assert( aHardLimit[SQLITE_LIMIT_TRIGGER_DEPTH]==SQLITE_MAX_TRIGGER_DEPTH );
   assert( aHardLimit[SQLITE_LIMIT_WORKER_THREADS]==SQLITE_MAX_WORKER_THREADS );
-  assert( SQLITE_LIMIT_PARSER_DEPTH==(SQLITE_N_LIMIT-1) );
+  assert( SQLITE_LIMIT_WORKER_THREADS==(SQLITE_N_LIMIT-1) );
 
 
   if( limitId<0 || limitId>=SQLITE_N_LIMIT ){
@@ -189607,7 +188277,7 @@ static int openDatabase(
   db = sqlite3MallocZero( sizeof(sqlite3) );
   if( db==0 ) goto opendb_out;
   if( isThreadsafe
-#if defined(SQLITE_THREAD_MISUSE_WARNINGS)
+#ifdef SQLITE_ENABLE_MULTITHREADED_CHECKS
    || sqlite3GlobalConfig.bCoreMutex
 #endif
   ){
@@ -189628,7 +188298,6 @@ static int openDatabase(
   db->aDb = db->aDbStatic;
   db->lookaside.bDisable = 1;
   db->lookaside.sz = 0;
-  db->nFpDigit = 17;
 
   assert( sizeof(db->aLimit)==sizeof(aHardLimit) );
   memcpy(db->aLimit, aHardLimit, sizeof(db->aLimit));
@@ -190074,12 +188743,6 @@ SQLITE_API int sqlite3_collation_needed16(
 */
 SQLITE_API void *sqlite3_get_clientdata(sqlite3 *db, const char *zName){
   DbClientData *p;
-#ifdef SQLITE_ENABLE_API_ARMOR
-  if( !zName || !sqlite3SafetyCheckOk(db) ){
-    (void)SQLITE_MISUSE_BKPT;
-    return 0;
-  }
-#endif
   sqlite3_mutex_enter(db->mutex);
   for(p=db->pDbData; p; p=p->pNext){
     if( strcmp(p->zName, zName)==0 ){
@@ -191153,7 +189816,6 @@ SQLITE_API const char *sqlite3_filename_journal(const char *zFilename){
 }
 SQLITE_API const char *sqlite3_filename_wal(const char *zFilename){
 #ifdef SQLITE_OMIT_WAL
-  UNUSED_PARAMETER(zFilename);
   return 0;
 #else
   zFilename = sqlite3_filename_journal(zFilename);
@@ -192925,15 +191587,6 @@ SQLITE_PRIVATE int sqlite3Fts3Incrmerge(Fts3Table*,int,int);
   (*(u8*)(p)&0x80) ? sqlite3Fts3GetVarint32(p, piVal) : (*piVal=*(u8*)(p), 1) \
 )
 
-SQLITE_PRIVATE int sqlite3Fts3PrepareStmt(
-  Fts3Table *p,                   /* Prepare for this connection */
-  const char *zSql,               /* SQL to prepare */
-  int bPersist,                   /* True to set SQLITE_PREPARE_PERSISTENT */
-  int bAllowVtab,                 /* True to omit SQLITE_PREPARE_NO_VTAB */
-  sqlite3_stmt **pp               /* OUT: Prepared statement */
-);
-
-
 /* fts3.c */
 SQLITE_PRIVATE void sqlite3Fts3ErrMsg(char**,const char*,...);
 SQLITE_PRIVATE int sqlite3Fts3PutVarint(char *, sqlite3_int64);
@@ -194541,7 +193194,9 @@ static int fts3CursorSeekStmt(Fts3Cursor *pCsr){
       zSql = sqlite3_mprintf("SELECT %s WHERE rowid = ?", p->zReadExprlist);
       if( !zSql ) return SQLITE_NOMEM;
       p->bLock++;
-      rc = sqlite3Fts3PrepareStmt(p, zSql, 1, 1, &pCsr->pStmt);
+      rc = sqlite3_prepare_v3(
+          p->db, zSql,-1,SQLITE_PREPARE_PERSISTENT,&pCsr->pStmt,0
+      );
       p->bLock--;
       sqlite3_free(zSql);
     }
@@ -196116,7 +194771,9 @@ static int fts3FilterMethod(
     }
     if( zSql ){
       p->bLock++;
-      rc = sqlite3Fts3PrepareStmt(p, zSql, 1, 1, &pCsr->pStmt);
+      rc = sqlite3_prepare_v3(
+          p->db,zSql,-1,SQLITE_PREPARE_PERSISTENT,&pCsr->pStmt,0
+      );
       p->bLock--;
       sqlite3_free(zSql);
     }else{
@@ -196739,7 +195396,6 @@ static int fts3IntegrityMethod(
 
   UNUSED_PARAMETER(isQuick);
   rc = sqlite3Fts3IntegrityCheck(p, &bOk);
-  assert( pVtab->zErrMsg==0 || rc!=SQLITE_OK );
   assert( rc!=SQLITE_CORRUPT_VTAB );
   if( rc==SQLITE_ERROR || (rc&0xFF)==SQLITE_CORRUPT ){
     *pzErr = sqlite3_mprintf("unable to validate the inverted index for"
@@ -203177,9 +201833,9 @@ typedef struct SegmentWriter SegmentWriter;
 ** incrementally. See function fts3PendingListAppend() for details.
 */
 struct PendingList {
-  sqlite3_int64 nData;
+  int nData;
   char *aData;
-  sqlite3_int64 nSpace;
+  int nSpace;
   sqlite3_int64 iLastDocid;
   sqlite3_int64 iLastCol;
   sqlite3_int64 iLastPos;
@@ -203352,24 +202008,6 @@ struct SegmentNode {
 #define SQL_UPDATE_LEVEL_IDX          38
 #define SQL_UPDATE_LEVEL              39
 
-/*
-** Wrapper around sqlite3_prepare_v3() to ensure that SQLITE_PREPARE_FROM_DDL
-** is always set.
-*/
-SQLITE_PRIVATE int sqlite3Fts3PrepareStmt(
-  Fts3Table *p,                   /* Prepare for this connection */
-  const char *zSql,               /* SQL to prepare */
-  int bPersist,                   /* True to set SQLITE_PREPARE_PERSISTENT */
-  int bAllowVtab,                 /* True to omit SQLITE_PREPARE_NO_VTAB */
-  sqlite3_stmt **pp               /* OUT: Prepared statement */
-){
-  int f = SQLITE_PREPARE_FROM_DDL
-         |((bAllowVtab==0) ? SQLITE_PREPARE_NO_VTAB : 0)
-         |(bPersist ? SQLITE_PREPARE_PERSISTENT : 0);
-
-  return sqlite3_prepare_v3(p->db, zSql, -1, f, pp, NULL);
-}
-
 /*
 ** This function is used to obtain an SQLite prepared statement handle
 ** for the statement identified by the second argument. If successful,
@@ -203495,12 +202133,12 @@ static int fts3SqlStmt(
 
   pStmt = p->aStmt[eStmt];
   if( !pStmt ){
-    int bAllowVtab = 0;
+    int f = SQLITE_PREPARE_PERSISTENT|SQLITE_PREPARE_NO_VTAB;
     char *zSql;
     if( eStmt==SQL_CONTENT_INSERT ){
       zSql = sqlite3_mprintf(azSql[eStmt], p->zDb, p->zName, p->zWriteExprlist);
     }else if( eStmt==SQL_SELECT_CONTENT_BY_ROWID ){
-      bAllowVtab = 1;
+      f &= ~SQLITE_PREPARE_NO_VTAB;
       zSql = sqlite3_mprintf(azSql[eStmt], p->zReadExprlist);
     }else{
       zSql = sqlite3_mprintf(azSql[eStmt], p->zDb, p->zName);
@@ -203508,7 +202146,7 @@ static int fts3SqlStmt(
     if( !zSql ){
       rc = SQLITE_NOMEM;
     }else{
-      rc = sqlite3Fts3PrepareStmt(p, zSql, 1, bAllowVtab, &pStmt);
+      rc = sqlite3_prepare_v3(p->db, zSql, -1, f, &pStmt, NULL);
       sqlite3_free(zSql);
       assert( rc==SQLITE_OK || pStmt==0 );
       p->aStmt[eStmt] = pStmt;
@@ -203857,9 +202495,7 @@ static int fts3PendingTermsAddOne(
 
   pList = (PendingList *)fts3HashFind(pHash, zToken, nToken);
   if( pList ){
-    assert( (i64)pList->nData+(i64)nToken+(i64)sizeof(Fts3HashElem)
-             <= (i64)p->nPendingData );
-    p->nPendingData -= (int)(pList->nData + nToken + sizeof(Fts3HashElem));
+    p->nPendingData -= (pList->nData + nToken + sizeof(Fts3HashElem));
   }
   if( fts3PendingListAppend(&pList, p->iPrevDocid, iCol, iPos, &rc) ){
     if( pList==fts3HashInsert(pHash, zToken, nToken, pList) ){
@@ -203872,9 +202508,7 @@ static int fts3PendingTermsAddOne(
     }
   }
   if( rc==SQLITE_OK ){
-    assert( (i64)p->nPendingData + pList->nData + nToken
-             + sizeof(Fts3HashElem) <= 0x3fffffff );
-    p->nPendingData += (int)(pList->nData + nToken + sizeof(Fts3HashElem));
+    p->nPendingData += (pList->nData + nToken + sizeof(Fts3HashElem));
   }
   return rc;
 }
@@ -206675,7 +205309,7 @@ static int fts3DoRebuild(Fts3Table *p){
     if( !zSql ){
       rc = SQLITE_NOMEM;
     }else{
-      rc = sqlite3Fts3PrepareStmt(p, zSql, 0, 1, &pStmt);
+      rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0);
       sqlite3_free(zSql);
     }
 
@@ -208428,7 +207062,7 @@ SQLITE_PRIVATE int sqlite3Fts3IntegrityCheck(Fts3Table *p, int *pbOk){
     if( !zSql ){
       rc = SQLITE_NOMEM;
     }else{
-      rc = sqlite3Fts3PrepareStmt(p, zSql, 0, 1, &pStmt);
+      rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0);
       sqlite3_free(zSql);
     }
 
@@ -208558,7 +207192,7 @@ static int fts3SpecialInsert(Fts3Table *p, sqlite3_value *pVal){
       v = atoi(&zVal[9]);
       if( v>=24 && v<=p->nPgsz-35 ) p->nNodeSize = v;
       rc = SQLITE_OK;
-    }else if( nVal>11 && 0==sqlite3_strnicmp(zVal, "maxpending=", 11) ){
+    }else if( nVal>11 && 0==sqlite3_strnicmp(zVal, "maxpending=", 9) ){
       v = atoi(&zVal[11]);
       if( v>=64 && v<=FTS3_MAX_PENDING_DATA ) p->nMaxPendingData = v;
       rc = SQLITE_OK;
@@ -211833,10 +210467,7 @@ struct JsonString {
 #define JSON_SQL       0x02        /* Result is always SQL */
 #define JSON_ABPATH    0x03        /* Allow abbreviated JSON path specs */
 #define JSON_ISSET     0x04        /* json_set(), not json_insert() */
-#define JSON_AINS      0x08        /* json_array_insert(), not json_insert() */
-#define JSON_BLOB      0x10        /* Use the BLOB output format */
-
-#define JSON_INSERT_TYPE(X)  (((X)&0xC)>>2)
+#define JSON_BLOB      0x08        /* Use the BLOB output format */
 
 
 /* A parsed JSON value.  Lifecycle:
@@ -211882,7 +210513,6 @@ struct JsonParse {
 #define JEDIT_REPL  2   /* Overwrite if exists */
 #define JEDIT_INS   3   /* Insert if not exists */
 #define JEDIT_SET   4   /* Insert or overwrite */
-#define JEDIT_AINS  5   /* array_insert() */
 
 /*
 ** Maximum nesting depth of JSON for this implementation.
@@ -214379,8 +213009,7 @@ static int jsonLabelCompare(
 */
 #define JSON_LOOKUP_ERROR      0xffffffff
 #define JSON_LOOKUP_NOTFOUND   0xfffffffe
-#define JSON_LOOKUP_NOTARRAY   0xfffffffd
-#define JSON_LOOKUP_PATHERROR  0xfffffffc
+#define JSON_LOOKUP_PATHERROR  0xfffffffd
 #define JSON_LOOKUP_ISERROR(x) ((x)>=JSON_LOOKUP_PATHERROR)
 
 /* Forward declaration */
@@ -214409,7 +213038,7 @@ static u32 jsonLookupStep(JsonParse*,u32,const char*,u32);
 static u32 jsonCreateEditSubstructure(
   JsonParse *pParse,  /* The original JSONB that is being edited */
   JsonParse *pIns,    /* Populate this with the blob data to insert */
-  const char *zTail   /* Tail of the path that determines substructure */
+  const char *zTail   /* Tail of the path that determins substructure */
 ){
   static const u8 emptyObject[] = { JSONB_ARRAY, JSONB_OBJECT };
   int rc;
@@ -214444,9 +213073,9 @@ static u32 jsonCreateEditSubstructure(
 ** Return one of the JSON_LOOKUP error codes if problems are seen.
 **
 ** This routine will also modify the blob.  If pParse->eEdit is one of
-** JEDIT_DEL, JEDIT_REPL, JEDIT_INS, JEDIT_SET, or JEDIT_AINS, then changes
-** might be made to the selected value. If an edit is performed, then the
-** return value does not necessarily point to the select element. If an edit
+** JEDIT_DEL, JEDIT_REPL, JEDIT_INS, or JEDIT_SET, then changes might be
+** made to the selected value.  If an edit is performed, then the return
+** value does not necessarily point to the select element.  If an edit
 ** is performed, the return value is only useful for detecting error
 ** conditions.
 */
@@ -214472,13 +213101,6 @@ static u32 jsonLookupStep(
         jsonBlobEdit(pParse, iRoot, sz, 0, 0);
       }else if( pParse->eEdit==JEDIT_INS ){
         /* Already exists, so json_insert() is a no-op */
-      }else if( pParse->eEdit==JEDIT_AINS ){
-        /* json_array_insert() */
-        if( zPath[-1]!=']' ){
-          return JSON_LOOKUP_NOTARRAY;
-        }else{
-          jsonBlobEdit(pParse, iRoot, 0, pParse->aIns, pParse->nIns);
-        }
       }else{
         /* json_set() or json_replace() */
         jsonBlobEdit(pParse, iRoot, sz, pParse->aIns, pParse->nIns);
@@ -214550,10 +213172,6 @@ static u32 jsonLookupStep(
       JsonParse ix;      /* Header of the label to be inserted */
       testcase( pParse->eEdit==JEDIT_INS );
       testcase( pParse->eEdit==JEDIT_SET );
-      testcase( pParse->eEdit==JEDIT_AINS );
-      if( pParse->eEdit==JEDIT_AINS && sqlite3_strglob("*]",&zPath[i])!=0 ){
-        return JSON_LOOKUP_NOTARRAY;
-      }
       memset(&ix, 0, sizeof(ix));
       ix.db = pParse->db;
       jsonBlobAppendNode(&ix, rawKey?JSONB_TEXTRAW:JSONB_TEXT5, nKey, 0);
@@ -214581,32 +213199,28 @@ static u32 jsonLookupStep(
       return rc;
     }
   }else if( zPath[0]=='[' ){
-    u64 kk = 0;
     x = pParse->aBlob[iRoot] & 0x0f;
     if( x!=JSONB_ARRAY )  return JSON_LOOKUP_NOTFOUND;
     n = jsonbPayloadSize(pParse, iRoot, &sz);
+    k = 0;
     i = 1;
     while( sqlite3Isdigit(zPath[i]) ){
-      if( kk<0xffffffff ) kk = kk*10 + zPath[i] - '0';
-      /*     ^^^^^^^^^^--- Allow kk to be bigger than any JSON array so that
-      ** we get NOTFOUND instead of PATHERROR, without overflowing kk. */
+      k = k*10 + zPath[i] - '0';
       i++;
     }
     if( i<2 || zPath[i]!=']' ){
       if( zPath[1]=='#' ){
-        kk = jsonbArrayCount(pParse, iRoot);
+        k = jsonbArrayCount(pParse, iRoot);
         i = 2;
         if( zPath[2]=='-' && sqlite3Isdigit(zPath[3]) ){
-          u64 nn = 0;
+          unsigned int nn = 0;
           i = 3;
           do{
-            if( nn<0xffffffff ) nn = nn*10 + zPath[i] - '0';
-            /*     ^^^^^^^^^^--- Allow nn to be bigger than any JSON array to
-            ** get NOTFOUND instead of PATHERROR, without overflowing nn. */
+            nn = nn*10 + zPath[i] - '0';
             i++;
           }while( sqlite3Isdigit(zPath[i]) );
-          if( nn>kk ) return JSON_LOOKUP_NOTFOUND;
-          kk -= nn;
+          if( nn>k ) return JSON_LOOKUP_NOTFOUND;
+          k -= nn;
         }
         if( zPath[i]!=']' ){
           return JSON_LOOKUP_PATHERROR;
@@ -214618,22 +213232,21 @@ static u32 jsonLookupStep(
     j = iRoot+n;
     iEnd = j+sz;
     while( j<iEnd ){
-      if( kk==0 ){
+      if( k==0 ){
         rc = jsonLookupStep(pParse, j, &zPath[i+1], 0);
         if( pParse->delta ) jsonAfterEditSizeAdjust(pParse, iRoot);
         return rc;
       }
-      kk--;
+      k--;
       n = jsonbPayloadSize(pParse, j, &sz);
       if( n==0 ) return JSON_LOOKUP_ERROR;
       j += n+sz;
     }
     if( j>iEnd ) return JSON_LOOKUP_ERROR;
-    if( kk>0 ) return JSON_LOOKUP_NOTFOUND;
+    if( k>0 ) return JSON_LOOKUP_NOTFOUND;
     if( pParse->eEdit>=JEDIT_INS ){
       JsonParse v;
       testcase( pParse->eEdit==JEDIT_INS );
-      testcase( pParse->eEdit==JEDIT_AINS );
       testcase( pParse->eEdit==JEDIT_SET );
       rc = jsonCreateEditSubstructure(pParse, &v, &zPath[i+1]);
       if( !JSON_LOOKUP_ISERROR(rc)
@@ -214771,7 +213384,7 @@ static void jsonReturnFromBlob(
     to_double:
       z = sqlite3DbStrNDup(db, (const char*)&pParse->aBlob[i+n], (int)sz);
       if( z==0 ) goto returnfromblob_oom;
-      rc = sqlite3AtoF(z, &r);
+      rc = sqlite3AtoF(z, &r, sqlite3Strlen30(z), SQLITE_UTF8);
       sqlite3DbFree(db, z);
       if( rc<=0 ) goto returnfromblob_malformed;
       sqlite3_result_double(pCtx, r);
@@ -214958,15 +213571,9 @@ static int jsonFunctionArgToBlob(
 */
 static char *jsonBadPathError(
   sqlite3_context *ctx,     /* The function call containing the error */
-  const char *zPath,        /* The path with the problem */
-  int rc                    /* Maybe JSON_LOOKUP_NOTARRAY */
+  const char *zPath         /* The path with the problem */
 ){
-  char *zMsg;
-  if( rc==(int)JSON_LOOKUP_NOTARRAY ){
-    zMsg = sqlite3_mprintf("not an array element: %Q", zPath);
-  }else{
-    zMsg = sqlite3_mprintf("bad JSON path: %Q", zPath);
-  }
+  char *zMsg = sqlite3_mprintf("bad JSON path: %Q", zPath);
   if( ctx==0 ) return zMsg;
   if( zMsg ){
     sqlite3_result_error(ctx, zMsg, -1);
@@ -214983,13 +213590,13 @@ static char *jsonBadPathError(
 ** and return the result.
 **
 ** The specific operation is determined by eEdit, which can be one
-** of JEDIT_INS, JEDIT_REPL, JEDIT_SET, or JEDIT_AINS.
+** of JEDIT_INS, JEDIT_REPL, or JEDIT_SET.
 */
 static void jsonInsertIntoBlob(
   sqlite3_context *ctx,
   int argc,
   sqlite3_value **argv,
-  int eEdit                /* JEDIT_INS, JEDIT_REPL, JEDIT_SET, JEDIT_AINS */
+  int eEdit                /* JEDIT_INS, JEDIT_REPL, or JEDIT_SET */
 ){
   int i;
   u32 rc = 0;
@@ -215041,7 +213648,7 @@ static void jsonInsertIntoBlob(
   if( rc==JSON_LOOKUP_ERROR ){
     sqlite3_result_error(ctx, "malformed JSON", -1);
   }else{
-    jsonBadPathError(ctx, zPath, rc);
+    jsonBadPathError(ctx, zPath);
   }
   return;
 }
@@ -215483,7 +214090,7 @@ static void jsonArrayLengthFunc(
       if( i==JSON_LOOKUP_NOTFOUND ){
         /* no-op */
       }else if( i==JSON_LOOKUP_PATHERROR ){
-        jsonBadPathError(ctx, zPath, 0);
+        jsonBadPathError(ctx, zPath);
       }else{
         sqlite3_result_error(ctx, "malformed JSON", -1);
       }
@@ -215588,7 +214195,7 @@ static void jsonExtractFunc(
       j = jsonLookupStep(p, 0, jx.zBuf, 0);
       jsonStringReset(&jx);
     }else{
-      jsonBadPathError(ctx, zPath, 0);
+      jsonBadPathError(ctx, zPath);
       goto json_extract_error;
     }
     if( j<p->nBlob ){
@@ -215623,7 +214230,7 @@ static void jsonExtractFunc(
       sqlite3_result_error(ctx, "malformed JSON", -1);
       goto json_extract_error;
     }else{
-      jsonBadPathError(ctx, zPath, 0);
+      jsonBadPathError(ctx, zPath);
       goto json_extract_error;
     }
   }
@@ -215952,7 +214559,7 @@ static void jsonRemoveFunc(
       if( rc==JSON_LOOKUP_NOTFOUND ){
         continue;  /* No-op */
       }else if( rc==JSON_LOOKUP_PATHERROR ){
-        jsonBadPathError(ctx, zPath, rc);
+        jsonBadPathError(ctx, zPath);
       }else{
         sqlite3_result_error(ctx, "malformed JSON", -1);
       }
@@ -215964,7 +214571,7 @@ static void jsonRemoveFunc(
   return;
 
 json_remove_patherror:
-  jsonBadPathError(ctx, zPath, 0);
+  jsonBadPathError(ctx, zPath);
 
 json_remove_done:
   jsonParseFree(p);
@@ -216008,18 +214615,16 @@ static void jsonSetFunc(
   int argc,
   sqlite3_value **argv
 ){
+
   int flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
-  int eInsType = JSON_INSERT_TYPE(flags);
-  static const char *azInsType[] = { "insert", "set", "array_insert" };
-  static const u8 aEditType[] = { JEDIT_INS, JEDIT_SET, JEDIT_AINS };
+  int bIsSet = (flags&JSON_ISSET)!=0;
 
   if( argc<1 ) return;
-  assert( eInsType>=0 && eInsType<=2 );
   if( (argc&1)==0 ) {
-    jsonWrongNumArgs(ctx, azInsType[eInsType]);
+    jsonWrongNumArgs(ctx, bIsSet ? "set" : "insert");
     return;
   }
-  jsonInsertIntoBlob(ctx, argc, argv, aEditType[eInsType]);
+  jsonInsertIntoBlob(ctx, argc, argv, bIsSet ? JEDIT_SET : JEDIT_INS);
 }
 
 /*
@@ -216044,7 +214649,7 @@ static void jsonTypeFunc(
     zPath = (const char*)sqlite3_value_text(argv[1]);
     if( zPath==0 ) goto json_type_done;
     if( zPath[0]!='$' ){
-      jsonBadPathError(ctx, zPath, 0);
+      jsonBadPathError(ctx, zPath);
       goto json_type_done;
     }
     i = jsonLookupStep(p, 0, zPath+1, 0);
@@ -216052,7 +214657,7 @@ static void jsonTypeFunc(
       if( i==JSON_LOOKUP_NOTFOUND ){
         /* no-op */
       }else if( i==JSON_LOOKUP_PATHERROR ){
-        jsonBadPathError(ctx, zPath, 0);
+        jsonBadPathError(ctx, zPath);
       }else{
         sqlite3_result_error(ctx, "malformed JSON", -1);
       }
@@ -216308,11 +214913,12 @@ static void jsonArrayStep(
 }
 static void jsonArrayCompute(sqlite3_context *ctx, int isFinal){
   JsonString *pStr;
-  int flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
   pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0);
   if( pStr ){
+    int flags;
     pStr->pCtx = ctx;
     jsonAppendChar(pStr, ']');
+    flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
     if( pStr->eErr ){
       jsonReturnString(pStr, 0, 0);
       return;
@@ -216333,9 +214939,6 @@ static void jsonArrayCompute(sqlite3_context *ctx, int isFinal){
       sqlite3_result_text(ctx, pStr->zBuf, (int)pStr->nUsed, SQLITE_TRANSIENT);
       jsonStringTrimOneChar(pStr);
     }
-  }else if( flags & JSON_BLOB ){
-    static const u8 emptyArray = 0x0b;
-    sqlite3_result_blob(ctx, &emptyArray, 1, SQLITE_STATIC);
   }else{
     sqlite3_result_text(ctx, "[]", 2, SQLITE_STATIC);
   }
@@ -216432,11 +215035,12 @@ static void jsonObjectStep(
 }
 static void jsonObjectCompute(sqlite3_context *ctx, int isFinal){
   JsonString *pStr;
-  int flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
   pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0);
   if( pStr ){
+    int flags;
     jsonAppendChar(pStr, '}');
     pStr->pCtx = ctx;
+    flags = SQLITE_PTR_TO_INT(sqlite3_user_data(ctx));
     if( pStr->eErr ){
       jsonReturnString(pStr, 0, 0);
       return;
@@ -216457,9 +215061,6 @@ static void jsonObjectCompute(sqlite3_context *ctx, int isFinal){
       sqlite3_result_text(ctx, pStr->zBuf, (int)pStr->nUsed, SQLITE_TRANSIENT);
       jsonStringTrimOneChar(pStr);
     }
-  }else if( flags & JSON_BLOB ){
-    static const unsigned char emptyObject = 0x0c;
-    sqlite3_result_blob(ctx, &emptyObject, 1, SQLITE_STATIC);
   }else{
     sqlite3_result_text(ctx, "{}", 2, SQLITE_STATIC);
   }
@@ -216960,7 +215561,7 @@ static int jsonEachFilter(
     if( zRoot==0 ) return SQLITE_OK;
     if( zRoot[0]!='$' ){
       sqlite3_free(cur->pVtab->zErrMsg);
-      cur->pVtab->zErrMsg = jsonBadPathError(0, zRoot, 0);
+      cur->pVtab->zErrMsg = jsonBadPathError(0, zRoot);
       jsonEachCursorReset(p);
       return cur->pVtab->zErrMsg ? SQLITE_ERROR : SQLITE_NOMEM;
     }
@@ -216978,7 +215579,7 @@ static int jsonEachFilter(
           return SQLITE_OK;
         }
         sqlite3_free(cur->pVtab->zErrMsg);
-        cur->pVtab->zErrMsg = jsonBadPathError(0, zRoot, 0);
+        cur->pVtab->zErrMsg = jsonBadPathError(0, zRoot);
         jsonEachCursorReset(p);
         return cur->pVtab->zErrMsg ? SQLITE_ERROR : SQLITE_NOMEM;
       }
@@ -217068,8 +215669,6 @@ SQLITE_PRIVATE void sqlite3RegisterJsonFunctions(void){
     JFUNCTION(jsonb,              1,1,0, 0,1,0,          jsonRemoveFunc),
     JFUNCTION(json_array,        -1,0,1, 1,0,0,          jsonArrayFunc),
     JFUNCTION(jsonb_array,       -1,0,1, 1,1,0,          jsonArrayFunc),
-    JFUNCTION(json_array_insert, -1,1,1, 1,0,JSON_AINS,  jsonSetFunc),
-    JFUNCTION(jsonb_array_insert,-1,1,0, 1,1,JSON_AINS,  jsonSetFunc),
     JFUNCTION(json_array_length,  1,1,0, 0,0,0,          jsonArrayLengthFunc),
     JFUNCTION(json_array_length,  2,1,0, 0,0,0,          jsonArrayLengthFunc),
     JFUNCTION(json_error_position,1,1,0, 0,0,0,          jsonErrorFunc),
@@ -221650,7 +220249,7 @@ static int geopolyParseNumber(GeoParse *p, GeoCoord *pVal){
      /* The sqlite3AtoF() routine is much much faster than atof(), if it
      ** is available */
      double r;
-     (void)sqlite3AtoF((const char*)p->z, &r);
+     (void)sqlite3AtoF((const char*)p->z, &r, j, SQLITE_UTF8);
      *pVal = r;
 #else
      *pVal = (GeoCoord)atof((const char*)p->z);
@@ -227235,8 +225834,8 @@ static char *rbuObjIterGetIndexWhere(sqlite3rbu *p, RbuObjIter *pIter){
 
           /* If necessary, grow the pIter->aIdxCol[] array */
           if( iIdxCol==nIdxAlloc ){
-            RbuSpan *aIdxCol = (RbuSpan*)sqlite3_realloc64(
-                pIter->aIdxCol, nIdxAlloc*sizeof(RbuSpan) + 16*sizeof(RbuSpan)
+            RbuSpan *aIdxCol = (RbuSpan*)sqlite3_realloc(
+                pIter->aIdxCol, (nIdxAlloc+16)*sizeof(RbuSpan)
             );
             if( aIdxCol==0 ){
               rc = SQLITE_NOMEM;
@@ -231909,7 +230508,6 @@ struct carray_bind {
   int nData;                  /* Number of elements */
   int mFlags;                 /* Control flags */
   void (*xDel)(void*);        /* Destructor for aData */
-  void *pDel;                 /* Alternative argument to xDel() */
 };
 
 
@@ -232242,7 +230840,7 @@ static sqlite3_module carrayModule = {
 static void carrayBindDel(void *pPtr){
   carray_bind *p = (carray_bind*)pPtr;
   if( p->xDel!=SQLITE_STATIC ){
-    p->xDel(p->pDel);
+     p->xDel(p->aData);
   }
   sqlite3_free(p);
 }
@@ -232250,26 +230848,14 @@ static void carrayBindDel(void *pPtr){
 /*
 ** Invoke this interface in order to bind to the single-argument
 ** version of CARRAY().
-**
-**    pStmt        The prepared statement to which to bind
-**    idx          The index of the parameter of pStmt to which to bind
-**    aData        The data to be bound
-**    nData        The number of elements in aData
-**    mFlags       One of SQLITE_CARRAY_xxxx indicating datatype of aData
-**    xDestroy     Destructor for pDestroy or aData if pDestroy==NULL.
-**    pDestroy     Invoke xDestroy on this pointer if not NULL
-**
-** The destructor is called pDestroy if pDestroy!=NULL, or against
-** aData if pDestroy==NULL.
 */
-SQLITE_API int sqlite3_carray_bind_v2(
+SQLITE_API int sqlite3_carray_bind(
   sqlite3_stmt *pStmt,
   int idx,
   void *aData,
   int nData,
   int mFlags,
-  void (*xDestroy)(void*),
-  void *pDestroy
+  void (*xDestroy)(void*)
 ){
   carray_bind *pNew = 0;
   int i;
@@ -232346,38 +230932,20 @@ SQLITE_API int sqlite3_carray_bind_v2(
       memcpy(pNew->aData, aData, sz);
     }
     pNew->xDel = sqlite3_free;
-    pNew->pDel = pNew->aData;
   }else{
     pNew->aData = aData;
     pNew->xDel = xDestroy;
-    pNew->pDel = pDestroy;
   }
   return sqlite3_bind_pointer(pStmt, idx, pNew, "carray-bind", carrayBindDel);
 
  carray_bind_error:
   if( xDestroy!=SQLITE_STATIC && xDestroy!=SQLITE_TRANSIENT ){
-    xDestroy(pDestroy);
+    xDestroy(aData);
   }
   sqlite3_free(pNew);
   return rc;
 }
 
-/*
-** Invoke this interface in order to bind to the single-argument
-** version of CARRAY().  Same as sqlite3_carray_bind_v2() with the
-** pDestroy parameter set to NULL.
-*/
-SQLITE_API int sqlite3_carray_bind(
-  sqlite3_stmt *pStmt,
-  int idx,
-  void *aData,
-  int nData,
-  int mFlags,
-  void (*xDestroy)(void*)
-){
-  return sqlite3_carray_bind_v2(pStmt,idx,aData,nData,mFlags,xDestroy,aData);
-}
-
 /*
 ** Invoke this routine to register the carray() function.
 */
@@ -232740,20 +231308,6 @@ static int sessionVarintGet(const u8 *aBuf, int *piVal){
   return getVarint32(aBuf, *piVal);
 }
 
-/*
-** Read a varint value from buffer aBuf[], size nBuf bytes, into *piVal.
-** Return the number of bytes read.
-*/
-static int sessionVarintGetSafe(const u8 *aBuf, int nBuf, int *piVal){
-  u8 aCopy[5];
-  const u8 *aRead = aBuf;
-  if( nBuf<5 ){
-    memcpy(aCopy, aBuf, nBuf);
-    aRead = aCopy;
-  }
-  return getVarint32(aRead, *piVal);
-}
-
 /* Load an unaligned and unsigned 32-bit integer */
 #define SESSION_UINT32(x) (((u32)(x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3])
 
@@ -233048,10 +231602,14 @@ static unsigned int sessionChangeHash(
     int isPK = pTab->abPK[i];
     if( bPkOnly && isPK==0 ) continue;
 
+    /* It is not possible for eType to be SQLITE_NULL here. The session
+    ** module does not record changes for rows with NULL values stored in
+    ** primary key columns. */
     assert( eType==SQLITE_INTEGER || eType==SQLITE_FLOAT
          || eType==SQLITE_TEXT || eType==SQLITE_BLOB
          || eType==SQLITE_NULL || eType==0
     );
+    assert( !isPK || (eType!=0 && eType!=SQLITE_NULL) );
 
     if( isPK ){
       a++;
@@ -233059,16 +231617,12 @@ static unsigned int sessionChangeHash(
       if( eType==SQLITE_INTEGER || eType==SQLITE_FLOAT ){
         h = sessionHashAppendI64(h, sessionGetI64(a));
         a += 8;
-      }else if( eType==SQLITE_TEXT || eType==SQLITE_BLOB ){
+      }else{
         int n;
         a += sessionVarintGet(a, &n);
         h = sessionHashAppendBlob(h, n, a);
         a += n;
       }
-      /* It should not be possible for eType to be SQLITE_NULL or 0x00 here,
-      ** as the session module does not record changes for rows with NULL
-      ** values stored in primary key columns. But a corrupt changesets
-      ** may contain such a value.  */
     }else{
       a += sessionSerialLen(a);
     }
@@ -235477,13 +234031,10 @@ static int sessionGenerateChangeset(
   }
 
   if( pSession->rc ) return pSession->rc;
+  rc = sqlite3_exec(pSession->db, "SAVEPOINT changeset", 0, 0, 0);
+  if( rc!=SQLITE_OK ) return rc;
 
   sqlite3_mutex_enter(sqlite3_db_mutex(db));
-  rc = sqlite3_exec(pSession->db, "SAVEPOINT changeset", 0, 0, 0);
-  if( rc!=SQLITE_OK ){
-    sqlite3_mutex_leave(sqlite3_db_mutex(db));
-    return rc;
-  }
 
   for(pTab=pSession->pTable; rc==SQLITE_OK && pTab; pTab=pTab->pNext){
     if( pTab->nEntry ){
@@ -235966,8 +234517,7 @@ static int sessionReadRecord(
       u8 *aVal = &pIn->aData[pIn->iNext];
       if( eType==SQLITE_TEXT || eType==SQLITE_BLOB ){
         int nByte;
-        int nRem = pIn->nData - pIn->iNext;
-        pIn->iNext += sessionVarintGetSafe(aVal, nRem, &nByte);
+        pIn->iNext += sessionVarintGet(aVal, &nByte);
         rc = sessionInputBuffer(pIn, nByte);
         if( rc==SQLITE_OK ){
           if( nByte<0 || nByte>pIn->nData-pIn->iNext ){
@@ -236020,8 +234570,7 @@ static int sessionChangesetBufferTblhdr(SessionInput *pIn, int *pnByte){
 
   rc = sessionInputBuffer(pIn, 9);
   if( rc==SQLITE_OK ){
-    int nBuf = pIn->nData - pIn->iNext;
-    nRead += sessionVarintGetSafe(&pIn->aData[pIn->iNext], nBuf, &nCol);
+    nRead += sessionVarintGet(&pIn->aData[pIn->iNext + nRead], &nCol);
     /* The hard upper limit for the number of columns in an SQLite
     ** database table is, according to sqliteLimit.h, 32676. So
     ** consider any table-header that purports to have more than 65536
@@ -236041,15 +234590,8 @@ static int sessionChangesetBufferTblhdr(SessionInput *pIn, int *pnByte){
     while( (pIn->iNext + nRead)<pIn->nData && pIn->aData[pIn->iNext + nRead] ){
       nRead++;
     }
-
-    /* Break out of the loop if if the nul-terminator byte has been found.
-    ** Otherwise, read some more input data and keep seeking. If there is
-    ** no more input data, consider the changeset corrupt.  */
     if( (pIn->iNext + nRead)<pIn->nData ) break;
     rc = sessionInputBuffer(pIn, nRead + 100);
-    if( rc==SQLITE_OK && (pIn->iNext + nRead)>=pIn->nData ){
-      rc = SQLITE_CORRUPT_BKPT;
-    }
   }
   *pnByte = nRead+1;
   return rc;
@@ -236181,10 +234723,10 @@ static int sessionChangesetNextOne(
     memset(p->apValue, 0, sizeof(sqlite3_value*)*p->nCol*2);
   }
 
-  /* Make sure the buffer contains at least 2 bytes of input data, or all
-  ** remaining data if there are less than 2 bytes available. This is
-  ** sufficient either for the 'T' or 'P' byte that begins a new table,
-  ** or for the "op" and "bIndirect" single bytes otherwise. */
+  /* Make sure the buffer contains at least 10 bytes of input data, or all
+  ** remaining data if there are less than 10 bytes available. This is
+  ** sufficient either for the 'T' or 'P' byte and the varint that follows
+  ** it, or for the two single byte values otherwise. */
   p->rc = sessionInputBuffer(&p->in, 2);
   if( p->rc!=SQLITE_OK ) return p->rc;
 
@@ -236214,13 +234756,11 @@ static int sessionChangesetNextOne(
     return (p->rc = SQLITE_CORRUPT_BKPT);
   }
 
-  if( (op!=SQLITE_UPDATE && op!=SQLITE_DELETE && op!=SQLITE_INSERT)
-   || (p->in.iNext>=p->in.nData)
-  ){
-    return (p->rc = SQLITE_CORRUPT_BKPT);
-  }
   p->op = op;
   p->bIndirect = p->in.aData[p->in.iNext++];
+  if( p->op!=SQLITE_UPDATE && p->op!=SQLITE_DELETE && p->op!=SQLITE_INSERT ){
+    return (p->rc = SQLITE_CORRUPT_BKPT);
+  }
 
   if( paRec ){
     int nVal;                     /* Number of values to buffer */
@@ -241108,22 +239648,14 @@ typedef union {
 #define sqlite3Fts5ParserARG_PARAM ,pParse
 #define sqlite3Fts5ParserARG_FETCH Fts5Parse *pParse=fts5yypParser->pParse;
 #define sqlite3Fts5ParserARG_STORE fts5yypParser->pParse=pParse;
-#undef fts5YYREALLOC
 #define fts5YYREALLOC realloc
-#undef fts5YYFREE
 #define fts5YYFREE free
-#undef fts5YYDYNSTACK
 #define fts5YYDYNSTACK 0
-#undef fts5YYSIZELIMIT
-#define sqlite3Fts5ParserCTX(P) 0
 #define sqlite3Fts5ParserCTX_SDECL
 #define sqlite3Fts5ParserCTX_PDECL
 #define sqlite3Fts5ParserCTX_PARAM
 #define sqlite3Fts5ParserCTX_FETCH
 #define sqlite3Fts5ParserCTX_STORE
-#undef fts5YYERRORSYMBOL
-#undef fts5YYERRSYMDT
-#undef fts5YYFALLBACK
 #define fts5YYNSTATE             35
 #define fts5YYNRULE              28
 #define fts5YYNRULE_WITH_ACTION  28
@@ -241448,24 +239980,15 @@ static int fts5yyGrowStack(fts5yyParser *p){
   int newSize;
   int idx;
   fts5yyStackEntry *pNew;
-#ifdef fts5YYSIZELIMIT
-  int nLimit = fts5YYSIZELIMIT(sqlite3Fts5ParserCTX(p));
-#endif
 
   newSize = oldSize*2 + 100;
-#ifdef fts5YYSIZELIMIT
-  if( newSize>nLimit ){
-    newSize = nLimit;
-    if( newSize<=oldSize ) return 1;
-  }
-#endif
   idx = (int)(p->fts5yytos - p->fts5yystack);
   if( p->fts5yystack==p->fts5yystk0 ){
-    pNew = fts5YYREALLOC(0, newSize*sizeof(pNew[0]), sqlite3Fts5ParserCTX(p));
+    pNew = fts5YYREALLOC(0, newSize*sizeof(pNew[0]));
     if( pNew==0 ) return 1;
     memcpy(pNew, p->fts5yystack, oldSize*sizeof(pNew[0]));
   }else{
-    pNew = fts5YYREALLOC(p->fts5yystack, newSize*sizeof(pNew[0]), sqlite3Fts5ParserCTX(p));
+    pNew = fts5YYREALLOC(p->fts5yystack, newSize*sizeof(pNew[0]));
     if( pNew==0 ) return 1;
   }
   p->fts5yystack = pNew;
@@ -241645,9 +240168,7 @@ static void sqlite3Fts5ParserFinalize(void *p){
   }
 
 #if fts5YYGROWABLESTACK
-  if( pParser->fts5yystack!=pParser->fts5yystk0 ){
-    fts5YYFREE(pParser->fts5yystack, sqlite3Fts5ParserCTX(pParser));
-  }
+  if( pParser->fts5yystack!=pParser->fts5yystk0 ) fts5YYFREE(pParser->fts5yystack);
 #endif
 }
 
@@ -242929,7 +241450,7 @@ static void fts5SnippetFunction(
 
   iBestCol = (iCol>=0 ? iCol : 0);
   nPhrase = pApi->xPhraseCount(pFts);
-  aSeen = sqlite3_malloc64(nPhrase);
+  aSeen = sqlite3_malloc(nPhrase);
   if( aSeen==0 ){
     rc = SQLITE_NOMEM;
   }
@@ -243584,7 +242105,7 @@ static char *sqlite3Fts5Strndup(int *pRc, const char *pIn, int nIn){
     if( nIn<0 ){
       nIn = (int)strlen(pIn);
     }
-    zRet = (char*)sqlite3_malloc64((i64)nIn+1);
+    zRet = (char*)sqlite3_malloc(nIn+1);
     if( zRet ){
       memcpy(zRet, pIn, nIn);
       zRet[nIn] = '\0';
@@ -244284,7 +242805,7 @@ static int sqlite3Fts5ConfigParse(
   sqlite3_int64 nByte;
   int bUnindexed = 0;             /* True if there are one or more UNINDEXED */
 
-  *ppOut = pRet = (Fts5Config*)sqlite3_malloc64(sizeof(Fts5Config));
+  *ppOut = pRet = (Fts5Config*)sqlite3_malloc(sizeof(Fts5Config));
   if( pRet==0 ) return SQLITE_NOMEM;
   memset(pRet, 0, sizeof(Fts5Config));
   pRet->pGlobal = pGlobal;
@@ -244832,6 +243353,8 @@ static void sqlite3Fts5ConfigErrmsg(Fts5Config *pConfig, const char *zFmt, ...){
   va_end(ap);
 }
 
+
+
 /*
 ** 2014 May 31
 **
@@ -245148,7 +243671,7 @@ static int sqlite3Fts5ExprNew(
 
   assert( sParse.rc!=SQLITE_OK || sParse.zErr==0 );
   if( sParse.rc==SQLITE_OK ){
-    *ppNew = pNew = sqlite3_malloc64(sizeof(Fts5Expr));
+    *ppNew = pNew = sqlite3_malloc(sizeof(Fts5Expr));
     if( pNew==0 ){
       sParse.rc = SQLITE_NOMEM;
       sqlite3Fts5ParseNodeFree(sParse.pExpr);
@@ -245300,7 +243823,7 @@ static int sqlite3Fts5ExprAnd(Fts5Expr **pp1, Fts5Expr *p2){
     p2->pRoot = 0;
 
     if( sParse.rc==SQLITE_OK ){
-      Fts5ExprPhrase **ap = (Fts5ExprPhrase**)sqlite3_realloc64(
+      Fts5ExprPhrase **ap = (Fts5ExprPhrase**)sqlite3_realloc(
           p1->apExprPhrase, nPhrase * sizeof(Fts5ExprPhrase*)
       );
       if( ap==0 ){
@@ -248212,7 +246735,7 @@ static int sqlite3Fts5HashNew(Fts5Config *pConfig, Fts5Hash **ppNew, int *pnByte
   int rc = SQLITE_OK;
   Fts5Hash *pNew;
 
-  *ppNew = pNew = (Fts5Hash*)sqlite3_malloc64(sizeof(Fts5Hash));
+  *ppNew = pNew = (Fts5Hash*)sqlite3_malloc(sizeof(Fts5Hash));
   if( pNew==0 ){
     rc = SQLITE_NOMEM;
   }else{
@@ -250805,7 +249328,7 @@ static void fts5SegIterReverseInitPage(Fts5Index *p, Fts5SegIter *pIter){
 
     /* If necessary, grow the pIter->aRowidOffset[] array. */
     if( iRowidOffset>=pIter->nRowidOffset ){
-      i64 nNew = pIter->nRowidOffset + 8;
+      int nNew = pIter->nRowidOffset + 8;
       int *aNew = (int*)sqlite3_realloc64(pIter->aRowidOffset,nNew*sizeof(int));
       if( aNew==0 ){
         p->rc = SQLITE_NOMEM;
@@ -254111,31 +252634,31 @@ static void fts5DoSecureDelete(
       ** is another term following it on this page. So the subsequent term
       ** needs to be moved to replace the term associated with the entry
       ** being removed. */
-      u64 nPrefix = 0;
-      u64 nSuffix = 0;
-      u64 nPrefix2 = 0;
-      u64 nSuffix2 = 0;
+      int nPrefix = 0;
+      int nSuffix = 0;
+      int nPrefix2 = 0;
+      int nSuffix2 = 0;
 
       iDelKeyOff = iNextOff;
-      iNextOff += fts5GetVarint(&aPg[iNextOff], &nPrefix2);
-      iNextOff += fts5GetVarint(&aPg[iNextOff], &nSuffix2);
+      iNextOff += fts5GetVarint32(&aPg[iNextOff], nPrefix2);
+      iNextOff += fts5GetVarint32(&aPg[iNextOff], nSuffix2);
 
       if( iKey!=1 ){
-        iKeyOff += fts5GetVarint(&aPg[iKeyOff], &nPrefix);
+        iKeyOff += fts5GetVarint32(&aPg[iKeyOff], nPrefix);
       }
-      iKeyOff += fts5GetVarint(&aPg[iKeyOff], &nSuffix);
+      iKeyOff += fts5GetVarint32(&aPg[iKeyOff], nSuffix);
 
       nPrefix = MIN(nPrefix, nPrefix2);
       nSuffix = (nPrefix2 + nSuffix2) - nPrefix;
 
-      if( (iKeyOff+nSuffix)>(u64)iPgIdx || (iNextOff+nSuffix2)>(u64)iPgIdx ){
+      if( (iKeyOff+nSuffix)>iPgIdx || (iNextOff+nSuffix2)>iPgIdx ){
         FTS5_CORRUPT_IDX(p);
       }else{
         if( iKey!=1 ){
           iOff += sqlite3Fts5PutVarint(&aPg[iOff], nPrefix);
         }
         iOff += sqlite3Fts5PutVarint(&aPg[iOff], nSuffix);
-        if( nPrefix2>(u64)pSeg->term.n ){
+        if( nPrefix2>pSeg->term.n ){
           FTS5_CORRUPT_IDX(p);
         }else if( nPrefix2>nPrefix ){
           memcpy(&aPg[iOff], &pSeg->term.p[nPrefix], nPrefix2-nPrefix);
@@ -254166,7 +252689,7 @@ static void fts5DoSecureDelete(
         u8 *aTermIdx = &pTerm->p[pTerm->szLeaf];
         int nTermIdx = pTerm->nn - pTerm->szLeaf;
         int iTermIdx = 0;
-        i64 iTermOff = 0;
+        int iTermOff = 0;
 
         while( 1 ){
           u32 iVal = 0;
@@ -254177,15 +252700,12 @@ static void fts5DoSecureDelete(
         }
         nTermIdx = iTermIdx;
 
-        if( iTermOff>pTerm->szLeaf ){
-          FTS5_CORRUPT_IDX(p);
-        }else{
-          memmove(&pTerm->p[iTermOff], &pTerm->p[pTerm->szLeaf], nTermIdx);
-          fts5PutU16(&pTerm->p[2], iTermOff);
-          fts5DataWrite(p, iId, pTerm->p, iTermOff+nTermIdx);
-          if( nTermIdx==0 ){
-            fts5SecureDeleteIdxEntry(p, iSegid, pSeg->iTermLeafPgno);
-          }
+        memmove(&pTerm->p[iTermOff], &pTerm->p[pTerm->szLeaf], nTermIdx);
+        fts5PutU16(&pTerm->p[2], iTermOff);
+
+        fts5DataWrite(p, iId, pTerm->p, iTermOff+nTermIdx);
+        if( nTermIdx==0 ){
+          fts5SecureDeleteIdxEntry(p, iSegid, pSeg->iTermLeafPgno);
         }
       }
       fts5DataRelease(pTerm);
@@ -254208,9 +252728,7 @@ static void fts5DoSecureDelete(
     int iPrevKeyOut = 0;
     int iKeyIn = 0;
 
-    if( nMove>0 ){
-      memmove(&aPg[iOff], &aPg[iNextOff], nMove);
-    }
+    memmove(&aPg[iOff], &aPg[iNextOff], nMove);
     iPgIdx -= nShift;
     nPg = iPgIdx;
     fts5PutU16(&aPg[2], iPgIdx);
@@ -255130,16 +253648,16 @@ struct Fts5TokenDataMap {
 ** aMap[] variables.
 */
 struct Fts5TokenDataIter {
-  i64 nMapAlloc;                  /* Allocated size of aMap[] in entries */
-  i64 nMap;                       /* Number of valid entries in aMap[] */
+  int nMapAlloc;                  /* Allocated size of aMap[] in entries */
+  int nMap;                       /* Number of valid entries in aMap[] */
   Fts5TokenDataMap *aMap;         /* Array of (rowid+pos -> token) mappings */
 
   /* The following are used for prefix-queries only. */
   Fts5Buffer terms;
 
   /* The following are used for other full-token tokendata queries only. */
-  i64 nIter;
-  i64 nIterAlloc;
+  int nIter;
+  int nIterAlloc;
   Fts5PoslistReader *aPoslistReader;
   int *aPoslistToIter;
   Fts5Iter *apIter[FLEXARRAY];
@@ -255195,11 +253713,11 @@ static void fts5TokendataIterAppendMap(
 ){
   if( p->rc==SQLITE_OK ){
     if( pT->nMap==pT->nMapAlloc ){
-      i64 nNew = pT->nMapAlloc ? pT->nMapAlloc*2 : 64;
-      i64 nAlloc = nNew * sizeof(Fts5TokenDataMap);
+      int nNew = pT->nMapAlloc ? pT->nMapAlloc*2 : 64;
+      int nAlloc = nNew * sizeof(Fts5TokenDataMap);
       Fts5TokenDataMap *aNew;
 
-      aNew = (Fts5TokenDataMap*)sqlite3_realloc64(pT->aMap, nAlloc);
+      aNew = (Fts5TokenDataMap*)sqlite3_realloc(pT->aMap, nAlloc);
       if( aNew==0 ){
         p->rc = SQLITE_NOMEM;
         return;
@@ -255225,7 +253743,7 @@ static void fts5TokendataIterAppendMap(
 */
 static void fts5TokendataIterSortMap(Fts5Index *p, Fts5TokenDataIter *pT){
   Fts5TokenDataMap *aTmp = 0;
-  i64 nByte = pT->nMap * sizeof(Fts5TokenDataMap);
+  int nByte = pT->nMap * sizeof(Fts5TokenDataMap);
 
   aTmp = (Fts5TokenDataMap*)sqlite3Fts5MallocZero(&p->rc, nByte);
   if( aTmp ){
@@ -255759,10 +254277,9 @@ static Fts5TokenDataIter *fts5AppendTokendataIter(
 
   if( p->rc==SQLITE_OK ){
     if( pIn==0 || pIn->nIter==pIn->nIterAlloc ){
-      i64 nAlloc = pIn ? pIn->nIterAlloc*2 : 16;
-      i64 nByte = SZ_FTS5TOKENDATAITER(nAlloc+1);
-      Fts5TokenDataIter *pNew;
-      pNew = (Fts5TokenDataIter*)sqlite3_realloc64(pIn, nByte);
+      int nAlloc = pIn ? pIn->nIterAlloc*2 : 16;
+      int nByte = SZ_FTS5TOKENDATAITER(nAlloc+1);
+      Fts5TokenDataIter *pNew = (Fts5TokenDataIter*)sqlite3_realloc(pIn, nByte);
 
       if( pNew==0 ){
         p->rc = SQLITE_NOMEM;
@@ -255859,8 +254376,8 @@ static void fts5IterSetOutputsTokendata(Fts5Iter *pIter){
 
       /* Ensure the token-mapping is large enough */
       if( eDetail==FTS5_DETAIL_FULL && pT->nMapAlloc<(pT->nMap + nByte) ){
-        i64 nNew = (pT->nMapAlloc + nByte) * 2;
-        Fts5TokenDataMap *aNew = (Fts5TokenDataMap*)sqlite3_realloc64(
+        int nNew = (pT->nMapAlloc + nByte) * 2;
+        Fts5TokenDataMap *aNew = (Fts5TokenDataMap*)sqlite3_realloc(
             pT->aMap, nNew*sizeof(Fts5TokenDataMap)
         );
         if( aNew==0 ){
@@ -258889,7 +257406,7 @@ static int fts5BestIndexMethod(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){
     return SQLITE_ERROR;
   }
 
-  idxStr = (char*)sqlite3_malloc64((i64)pInfo->nConstraint * 8 + 1);
+  idxStr = (char*)sqlite3_malloc(pInfo->nConstraint * 8 + 1);
   if( idxStr==0 ) return SQLITE_NOMEM;
   pInfo->idxStr = idxStr;
   pInfo->needToFreeIdxStr = 1;
@@ -260339,7 +258856,6 @@ static int fts5UpdateMethod(
   }
 
  update_out:
-  sqlite3Fts5IndexCloseReader(pTab->p.pIndex);
   pTab->p.pConfig->pzErrmsg = 0;
   return rc;
 }
@@ -261857,7 +260373,7 @@ static void fts5SourceIdFunc(
 ){
   assert( nArg==0 );
   UNUSED_PARAM2(nArg, apUnused);
-  sqlite3_result_text(pCtx, "fts5: 2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6", -1, SQLITE_TRANSIENT);
+  sqlite3_result_text(pCtx, "fts5: 2026-03-13 10:38:09 737ae4a34738ffa0c3ff7f9bb18df914dd1cad163f28fd6b6e114a344fe6d618", -1, SQLITE_TRANSIENT);
 }
 
 /*
@@ -262021,7 +260537,7 @@ static int fts5Init(sqlite3 *db){
   int rc;
   Fts5Global *pGlobal = 0;
 
-  pGlobal = (Fts5Global*)sqlite3_malloc64(sizeof(Fts5Global));
+  pGlobal = (Fts5Global*)sqlite3_malloc(sizeof(Fts5Global));
   if( pGlobal==0 ){
     rc = SQLITE_NOMEM;
   }else{
@@ -263737,7 +262253,7 @@ static int fts5AsciiCreate(
   if( nArg%2 ){
     rc = SQLITE_ERROR;
   }else{
-    p = sqlite3_malloc64(sizeof(AsciiTokenizer));
+    p = sqlite3_malloc(sizeof(AsciiTokenizer));
     if( p==0 ){
       rc = SQLITE_NOMEM;
     }else{
@@ -264032,7 +262548,7 @@ static int fts5UnicodeCreate(
   if( nArg%2 ){
     rc = SQLITE_ERROR;
   }else{
-    p = (Unicode61Tokenizer*)sqlite3_malloc64(sizeof(Unicode61Tokenizer));
+    p = (Unicode61Tokenizer*)sqlite3_malloc(sizeof(Unicode61Tokenizer));
     if( p ){
       const char *zCat = "L* N* Co";
       int i;
@@ -264255,7 +262771,7 @@ static int fts5PorterCreate(
     zBase = azArg[0];
   }
 
-  pRet = (PorterTokenizer*)sqlite3_malloc64(sizeof(PorterTokenizer));
+  pRet = (PorterTokenizer*)sqlite3_malloc(sizeof(PorterTokenizer));
   if( pRet ){
     memset(pRet, 0, sizeof(PorterTokenizer));
     rc = pApi->xFindTokenizer_v2(pApi, zBase, &pUserdata, &pV2);
@@ -264962,7 +263478,7 @@ static int fts5TriCreate(
     rc = SQLITE_ERROR;
   }else{
     int i;
-    pNew = (TrigramTokenizer*)sqlite3_malloc64(sizeof(*pNew));
+    pNew = (TrigramTokenizer*)sqlite3_malloc(sizeof(*pNew));
     if( pNew==0 ){
       rc = SQLITE_NOMEM;
     }else{
@@ -266948,7 +265464,7 @@ static int fts5VocabFilterMethod(
       const char *zCopy = (const char *)sqlite3_value_text(pLe);
       if( zCopy==0 ) zCopy = "";
       pCsr->nLeTerm = sqlite3_value_bytes(pLe);
-      pCsr->zLeTerm = sqlite3_malloc64((i64)pCsr->nLeTerm+1);
+      pCsr->zLeTerm = sqlite3_malloc(pCsr->nLeTerm+1);
       if( pCsr->zLeTerm==0 ){
         rc = SQLITE_NOMEM;
       }else{
diff --git a/deps/sqlite/sqlite3.h b/deps/sqlite/sqlite3.h
index 33856750dd35a9..302f0f5b1698d1 100644
--- a/deps/sqlite/sqlite3.h
+++ b/deps/sqlite/sqlite3.h
@@ -146,12 +146,12 @@ extern "C" {
 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
 ** [sqlite_version()] and [sqlite_source_id()].
 */
-#define SQLITE_VERSION        "3.52.0"
-#define SQLITE_VERSION_NUMBER 3052000
-#define SQLITE_SOURCE_ID      "2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6"
-#define SQLITE_SCM_BRANCH     "trunk"
-#define SQLITE_SCM_TAGS       "release major-release version-3.52.0"
-#define SQLITE_SCM_DATETIME   "2026-03-06T16:01:44.367Z"
+#define SQLITE_VERSION        "3.51.3"
+#define SQLITE_VERSION_NUMBER 3051003
+#define SQLITE_SOURCE_ID      "2026-03-13 10:38:09 737ae4a34738ffa0c3ff7f9bb18df914dd1cad163f28fd6b6e114a344fe6d618"
+#define SQLITE_SCM_BRANCH     "branch-3.51"
+#define SQLITE_SCM_TAGS       "release version-3.51.3"
+#define SQLITE_SCM_DATETIME   "2026-03-13T10:38:09.694Z"
 
 /*
 ** CAPI3REF: Run-Time Library Version Numbers
@@ -1490,7 +1490,7 @@ typedef const char *sqlite3_filename;
 ** greater and the function pointer is not NULL) and will fall back
 ** to xCurrentTime() if xCurrentTimeInt64() is unavailable.
 **
-** ^The xSetSystemCall(), xGetSystemCall(), and xNextSystemCall() interfaces
+** ^The xSetSystemCall(), xGetSystemCall(), and xNestSystemCall() interfaces
 ** are not used by the SQLite core.  These optional interfaces are provided
 ** by some VFSes to facilitate testing of the VFS code. By overriding
 ** system calls with functions under its control, a test program can
@@ -2567,15 +2567,12 @@ struct sqlite3_mem_methods {
 ** [[SQLITE_DBCONFIG_STMT_SCANSTATUS]]
 ** <dt>SQLITE_DBCONFIG_STMT_SCANSTATUS</dt>
 ** <dd>The SQLITE_DBCONFIG_STMT_SCANSTATUS option is only useful in
-** [SQLITE_ENABLE_STMT_SCANSTATUS] builds. In this case, it sets or clears
-** a flag that enables collection of run-time performance statistics
-** used by [sqlite3_stmt_scanstatus_v2()] and the [nexec and ncycle]
-** columns of the [bytecode virtual table].
-** For statistics to be collected, the flag must be set on
-** the database handle both when the SQL statement is
-** [sqlite3_prepare|prepared] and when it is [sqlite3_step|stepped].
-** The flag is set (collection of statistics is enabled) by default.
-** <p>This option takes two arguments: an integer and a pointer to
+** SQLITE_ENABLE_STMT_SCANSTATUS builds. In this case, it sets or clears
+** a flag that enables collection of the sqlite3_stmt_scanstatus_v2()
+** statistics. For statistics to be collected, the flag must be set on
+** the database handle both when the SQL statement is prepared and when it
+** is stepped. The flag is set (collection of statistics is enabled)
+** by default. <p>This option takes two arguments: an integer and a pointer to
 ** an integer.  The first argument is 1, 0, or -1 to enable, disable, or
 ** leave unchanged the statement scanstatus option.  If the second argument
 ** is not NULL, then the value of the statement scanstatus setting after
@@ -2648,22 +2645,6 @@ struct sqlite3_mem_methods {
 ** comments are allowed in SQL text after processing the first argument.
 ** </dd>
 **
-** [[SQLITE_DBCONFIG_FP_DIGITS]]
-** <dt>SQLITE_DBCONFIG_FP_DIGITS</dt>
-** <dd>The SQLITE_DBCONFIG_FP_DIGITS setting is a small integer that determines
-** the number of significant digits that SQLite will attempt to preserve when
-** converting floating point numbers (IEEE 754 "doubles") into text.  The
-** default value 17, as of SQLite version 3.52.0.  The value was 15 in all
-** prior versions.<p>
-** This option takes two arguments which are an integer and a pointer
-** to an integer.  The first argument is a small integer, between 3 and 23, or
-** zero.  The FP_DIGITS setting is changed to that small integer, or left
-** altered if the first argument is zero or out of range.  The second argument
-** is a pointer to an integer.  If the pointer is not NULL, then the value of
-** the FP_DIGITS setting, after possibly being modified by the first
-** arguments, is written into the integer to which the second argument points.
-** </dd>
-**
 ** </dl>
 **
 ** [[DBCONFIG arguments]] <h3>Arguments To SQLITE_DBCONFIG Options</h3>
@@ -2681,10 +2662,9 @@ struct sqlite3_mem_methods {
 ** the first argument.
 **
 ** <p>While most SQLITE_DBCONFIG options use the argument format
-** described in the previous paragraph, the [SQLITE_DBCONFIG_MAINDBNAME],
-** [SQLITE_DBCONFIG_LOOKASIDE], and [SQLITE_DBCONFIG_FP_DIGITS] options
-** are different.  See the documentation of those exceptional options for
-** details.
+** described in the previous paragraph, the [SQLITE_DBCONFIG_MAINDBNAME]
+** and [SQLITE_DBCONFIG_LOOKASIDE] options are different.  See the
+** documentation of those exceptional options for details.
 */
 #define SQLITE_DBCONFIG_MAINDBNAME            1000 /* const char* */
 #define SQLITE_DBCONFIG_LOOKASIDE             1001 /* void* int int */
@@ -2709,8 +2689,7 @@ struct sqlite3_mem_methods {
 #define SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE  1020 /* int int* */
 #define SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE   1021 /* int int* */
 #define SQLITE_DBCONFIG_ENABLE_COMMENTS       1022 /* int int* */
-#define SQLITE_DBCONFIG_FP_DIGITS             1023 /* int int* */
-#define SQLITE_DBCONFIG_MAX                   1023 /* Largest DBCONFIG */
+#define SQLITE_DBCONFIG_MAX                   1022 /* Largest DBCONFIG */
 
 /*
 ** CAPI3REF: Enable Or Disable Extended Result Codes
@@ -4192,7 +4171,6 @@ SQLITE_API void sqlite3_free_filename(sqlite3_filename);
 ** <li> sqlite3_errmsg()
 ** <li> sqlite3_errmsg16()
 ** <li> sqlite3_error_offset()
-** <li> sqlite3_db_handle()
 ** </ul>
 **
 ** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
@@ -4239,7 +4217,7 @@ SQLITE_API const char *sqlite3_errstr(int);
 SQLITE_API int sqlite3_error_offset(sqlite3 *db);
 
 /*
-** CAPI3REF: Set Error Code And Message
+** CAPI3REF: Set Error Codes And Message
 ** METHOD: sqlite3
 **
 ** Set the error code of the database handle passed as the first argument
@@ -4358,10 +4336,6 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 ** [[SQLITE_LIMIT_EXPR_DEPTH]] ^(<dt>SQLITE_LIMIT_EXPR_DEPTH</dt>
 ** <dd>The maximum depth of the parse tree on any expression.</dd>)^
 **
-** [[SQLITE_LIMIT_PARSER_DEPTH]] ^(<dt>SQLITE_LIMIT_PARSER_DEPTH</dt>
-** <dd>The maximum depth of the LALR(1) parser stack used to analyze
-** input SQL statements.</dd>)^
-**
 ** [[SQLITE_LIMIT_COMPOUND_SELECT]] ^(<dt>SQLITE_LIMIT_COMPOUND_SELECT</dt>
 ** <dd>The maximum number of terms in a compound SELECT statement.</dd>)^
 **
@@ -4406,7 +4380,6 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 #define SQLITE_LIMIT_VARIABLE_NUMBER           9
 #define SQLITE_LIMIT_TRIGGER_DEPTH            10
 #define SQLITE_LIMIT_WORKER_THREADS           11
-#define SQLITE_LIMIT_PARSER_DEPTH             12
 
 /*
 ** CAPI3REF: Prepare Flags
@@ -4451,29 +4424,12 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 ** fails, the sqlite3_prepare_v3() call returns the same error indications
 ** with or without this flag; it just omits the call to [sqlite3_log()] that
 ** logs the error.
-**
-** [[SQLITE_PREPARE_FROM_DDL]] <dt>SQLITE_PREPARE_FROM_DDL</dt>
-** <dd>The SQLITE_PREPARE_FROM_DDL flag causes the SQL compiler to enforce
-** security constraints that would otherwise only be enforced when parsing
-** the database schema.  In other words, the SQLITE_PREPARE_FROM_DDL flag
-** causes the SQL compiler to treat the SQL statement being prepared as if
-** it had come from an attacker.  When SQLITE_PREPARE_FROM_DDL is used and
-** [SQLITE_DBCONFIG_TRUSTED_SCHEMA] is off, SQL functions may only be called
-** if they are tagged with [SQLITE_INNOCUOUS] and virtual tables may only
-** be used if they are tagged with [SQLITE_VTAB_INNOCUOUS].  Best practice
-** is to use the SQLITE_PREPARE_FROM_DDL option when preparing any SQL that
-** is derived from parts of the database schema. In particular, virtual
-** table implementations that run SQL statements that are derived from
-** arguments to their CREATE VIRTUAL TABLE statement should always use
-** [sqlite3_prepare_v3()] and set the SQLITE_PREPARE_FROM_DDL flag to
-** prevent bypass of the [SQLITE_DBCONFIG_TRUSTED_SCHEMA] security checks.
 ** </dl>
 */
 #define SQLITE_PREPARE_PERSISTENT              0x01
 #define SQLITE_PREPARE_NORMALIZE               0x02
 #define SQLITE_PREPARE_NO_VTAB                 0x04
 #define SQLITE_PREPARE_DONT_LOG                0x10
-#define SQLITE_PREPARE_FROM_DDL                0x20
 
 /*
 ** CAPI3REF: Compiling An SQL Statement
@@ -4487,9 +4443,8 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
 **
 ** The preferred routine to use is [sqlite3_prepare_v2()].  The
 ** [sqlite3_prepare()] interface is legacy and should be avoided.
-** [sqlite3_prepare_v3()] has an extra
-** [SQLITE_PREPARE_FROM_DDL|"prepFlags" option] that is some times
-** needed for special purpose or to pass along security restrictions.
+** [sqlite3_prepare_v3()] has an extra "prepFlags" option that is used
+** for special purposes.
 **
 ** The use of the UTF-8 interfaces is preferred, as SQLite currently
 ** does all parsing using UTF-8.  The UTF-16 interfaces are provided
@@ -4894,8 +4849,8 @@ typedef struct sqlite3_context sqlite3_context;
 ** it should be a pointer to well-formed UTF16 text.
 ** ^If the third parameter to sqlite3_bind_text64() is not NULL, then
 ** it should be a pointer to a well-formed unicode string that is
-** either UTF8 if the sixth parameter is SQLITE_UTF8 or SQLITE_UTF8_ZT,
-** or UTF16 otherwise.
+** either UTF8 if the sixth parameter is SQLITE_UTF8, or UTF16
+** otherwise.
 **
 ** [[byte-order determination rules]] ^The byte-order of
 ** UTF16 input text is determined by the byte-order mark (BOM, U+FEFF)
@@ -4941,15 +4896,10 @@ typedef struct sqlite3_context sqlite3_context;
 ** object and pointer to it must remain valid until then. ^SQLite will then
 ** manage the lifetime of its private copy.
 **
-** ^The sixth argument (the E argument)
-** to sqlite3_bind_text64(S,K,Z,N,D,E) must be one of
-** [SQLITE_UTF8], [SQLITE_UTF8_ZT], [SQLITE_UTF16], [SQLITE_UTF16BE],
-** or [SQLITE_UTF16LE] to specify the encoding of the text in the
-** third parameter, Z.  The special value [SQLITE_UTF8_ZT] means that the
-** string argument is both UTF-8 encoded and is zero-terminated.  In other
-** words, SQLITE_UTF8_ZT means that the Z array is allocated to hold at
-** least N+1 bytes and that the Z[N] byte is zero.  If
-** the E argument to sqlite3_bind_text64(S,K,Z,N,D,E) is not one of the
+** ^The sixth argument to sqlite3_bind_text64() must be one of
+** [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE]
+** to specify the encoding of the text in the third parameter.  If
+** the sixth argument to sqlite3_bind_text64() is not one of the
 ** allowed values shown above, or if the text encoding is different
 ** from the encoding specified by the sixth parameter, then the behavior
 ** is undefined.
@@ -5816,51 +5766,6 @@ SQLITE_API int sqlite3_create_window_function(
 **
 ** These constants define integer codes that represent the various
 ** text encodings supported by SQLite.
-**
-** <dl>
-** [[SQLITE_UTF8]] <dt>SQLITE_UTF8</dt><dd>Text is encoding as UTF-8</dd>
-**
-** [[SQLITE_UTF16LE]] <dt>SQLITE_UTF16LE</dt><dd>Text is encoding as UTF-16
-** with each code point being expressed "little endian" - the least significant
-** byte first.  This is the usual encoding, for example on Windows.</dd>
-**
-** [[SQLITE_UTF16BE]] <dt>SQLITE_UTF16BE</dt><dd>Text is encoding as UTF-16
-** with each code point being expressed "big endian" - the most significant
-** byte first.  This encoding is less common, but is still sometimes seen,
-** specially on older systems.
-**
-** [[SQLITE_UTF16]] <dt>SQLITE_UTF16</dt><dd>Text is encoding as UTF-16
-** with each code point being expressed either little endian or as big
-** endian, according to the native endianness of the host computer.
-**
-** [[SQLITE_ANY]] <dt>SQLITE_ANY</dt><dd>This encoding value may only be used
-** to declare the preferred text for [application-defined SQL functions]
-** created using [sqlite3_create_function()] and similar.  If the preferred
-** encoding (the 4th parameter to sqlite3_create_function() - the eTextRep
-** parameter) is SQLITE_ANY, that indicates that the function does not have
-** a preference regarding the text encoding of its parameters and can take
-** any text encoding that the SQLite core find convenient to supply.  This
-** option is deprecated.  Please do not use it in new applications.
-**
-** [[SQLITE_UTF16_ALIGNED]] <dt>SQLITE_UTF16_ALIGNED</dt><dd>This encoding
-** value may be used as the 3rd parameter (the eTextRep parameter) to
-** [sqlite3_create_collation()] and similar.  This encoding value means
-** that the application-defined collating sequence created expects its
-** input strings to be in UTF16 in native byte order, and that the start
-** of the strings must be aligned to a 2-byte boundary.
-**
-** [[SQLITE_UTF8_ZT]] <dt>SQLITE_UTF8_ZT</dt><dd>This option can only be
-** used to specify the text encoding to strings input to [sqlite3_result_text64()]
-** and [sqlite3_bind_text64()].  It means that the input string (call it "z")
-** is UTF-8 encoded and that it is zero-terminated.  If the length parameter
-** (call it "n") is non-negative, this encoding option means that the caller
-** guarantees that z array contains at least n+1 bytes and that the z[n]
-** byte has a value of zero.
-** This option gives the same output as SQLITE_UTF8, but can be more efficient
-** by avoiding the need to make a copy of the input string, in some cases.
-** However, if z is allocated to hold fewer than n+1 bytes or if the
-** z[n] byte is not zero, undefined behavior may result.
-** </dl>
 */
 #define SQLITE_UTF8           1    /* IMP: R-37514-35566 */
 #define SQLITE_UTF16LE        2    /* IMP: R-03371-37637 */
@@ -5868,7 +5773,6 @@ SQLITE_API int sqlite3_create_window_function(
 #define SQLITE_UTF16          4    /* Use native byte order */
 #define SQLITE_ANY            5    /* Deprecated */
 #define SQLITE_UTF16_ALIGNED  8    /* sqlite3_create_collation only */
-#define SQLITE_UTF8_ZT       16    /* Zero-terminated UTF8 */
 
 /*
 ** CAPI3REF: Function Flags
@@ -6374,14 +6278,10 @@ SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(voi
 **
 ** There is no limit (other than available memory) on the number of different
 ** client data pointers (with different names) that can be attached to a
-** single database connection.  However, the current implementation stores
-** the content on a linked list.  Insert and retrieval performance will
-** be proportional to the number of entries.  The design use case, and
-** the use case for which the implementation is optimized, is
-** that an application will store only small number of client data names,
-** typically just one or two.  This interface is not intended to be a
-** generalized key/value store for thousands or millions of keys.  It
-** will work for that, but performance might be disappointing.
+** single database connection.  However, the implementation is optimized
+** for the case of having only one or two different client data names.
+** Applications and wrapper libraries are discouraged from using more than
+** one client data name each.
 **
 ** There is no way to enumerate the client data pointers
 ** associated with a database connection.  The N parameter can be thought
@@ -6489,14 +6389,10 @@ typedef void (*sqlite3_destructor_type)(void*);
 ** set the return value of the application-defined function to be
 ** a text string which is represented as UTF-8, UTF-16 native byte order,
 ** UTF-16 little endian, or UTF-16 big endian, respectively.
-** ^The sqlite3_result_text64(C,Z,N,D,E) interface sets the return value of an
+** ^The sqlite3_result_text64() interface sets the return value of an
 ** application-defined function to be a text string in an encoding
-** specified the E parameter, which must be one
-** of [SQLITE_UTF8], [SQLITE_UTF8_ZT], [SQLITE_UTF16], [SQLITE_UTF16BE],
-** or [SQLITE_UTF16LE].  ^The special value [SQLITE_UTF8_ZT] means that
-** the result text is both UTF-8 and zero-terminated.  In other words,
-** SQLITE_UTF8_ZT means that the Z array holds at least N+1 byes and that
-** the Z[N] is zero.
+** specified by the fifth (and last) parameter, which must be one
+** of [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE].
 ** ^SQLite takes the text result from the application from
 ** the 2nd parameter of the sqlite3_result_text* interfaces.
 ** ^If the 3rd parameter to any of the sqlite3_result_text* interfaces
@@ -6583,7 +6479,7 @@ SQLITE_API void sqlite3_result_int(sqlite3_context*, int);
 SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
 SQLITE_API void sqlite3_result_null(sqlite3_context*);
 SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
-SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char *z, sqlite3_uint64 n,
+SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
                            void(*)(void*), unsigned char encoding);
 SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
 SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
@@ -7522,7 +7418,7 @@ SQLITE_API int sqlite3_table_column_metadata(
 ** ^The sqlite3_load_extension() interface attempts to load an
 ** [SQLite extension] library contained in the file zFile.  If
 ** the file cannot be loaded directly, attempts are made to load
-** with various operating-system specific filename extensions added.
+** with various operating-system specific extensions added.
 ** So for example, if "samplelib" cannot be loaded, then names like
 ** "samplelib.so" or "samplelib.dylib" or "samplelib.dll" might
 ** be tried also.
@@ -7530,10 +7426,10 @@ SQLITE_API int sqlite3_table_column_metadata(
 ** ^The entry point is zProc.
 ** ^(zProc may be 0, in which case SQLite will try to come up with an
 ** entry point name on its own.  It first tries "sqlite3_extension_init".
-** If that does not work, it tries names of the form "sqlite3_X_init"
-** where X consists of the lower-case equivalent of all ASCII alphabetic
-** characters or all ASCII alphanumeric characters in the filename from
-** the last "/" to the first following "." and omitting any initial "lib".)^
+** If that does not work, it constructs a name "sqlite3_X_init" where
+** X consists of the lower-case equivalent of all ASCII alphabetic
+** characters in the filename from the last "/" to the first following
+** "." and omitting any initial "lib".)^
 ** ^The sqlite3_load_extension() interface returns
 ** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
 ** ^If an error occurs and pzErrMsg is not 0, then the
@@ -8826,22 +8722,17 @@ SQLITE_API sqlite3_str *sqlite3_str_new(sqlite3*);
 ** pass the returned value to [sqlite3_free()] to avoid a memory leak.
 ** ^The [sqlite3_str_finish(X)] interface may return a NULL pointer if any
 ** errors were encountered during construction of the string.  ^The
-** [sqlite3_str_finish(X)] interface might also return a NULL pointer if the
+** [sqlite3_str_finish(X)] interface will also return a NULL pointer if the
 ** string in [sqlite3_str] object X is zero bytes long.
-**
-** ^The [sqlite3_str_free(X)] interface destroys both the sqlite3_str object
-** X and the string content it contains.  Calling sqlite3_str_free(X) is
-** the equivalent of calling [sqlite3_free](sqlite3_str_finish(X)).
 */
 SQLITE_API char *sqlite3_str_finish(sqlite3_str*);
-SQLITE_API void sqlite3_str_free(sqlite3_str*);
 
 /*
 ** CAPI3REF: Add Content To A Dynamic String
 ** METHOD: sqlite3_str
 **
-** These interfaces add or remove content to an sqlite3_str object
-** previously obtained from [sqlite3_str_new()].
+** These interfaces add content to an sqlite3_str object previously obtained
+** from [sqlite3_str_new()].
 **
 ** ^The [sqlite3_str_appendf(X,F,...)] and
 ** [sqlite3_str_vappendf(X,F,V)] interfaces uses the [built-in printf]
@@ -8864,10 +8755,6 @@ SQLITE_API void sqlite3_str_free(sqlite3_str*);
 ** ^The [sqlite3_str_reset(X)] method resets the string under construction
 ** inside [sqlite3_str] object X back to zero bytes in length.
 **
-** ^The [sqlite3_str_truncate(X,N)] method changes the length of the string
-** under construction to be N bytes are less.  This routine is a no-op if
-** N is negative or if the string is already N bytes or smaller in size.
-**
 ** These methods do not return a result code.  ^If an error occurs, that fact
 ** is recorded in the [sqlite3_str] object and can be recovered by a
 ** subsequent call to [sqlite3_str_errcode(X)].
@@ -8878,7 +8765,6 @@ SQLITE_API void sqlite3_str_append(sqlite3_str*, const char *zIn, int N);
 SQLITE_API void sqlite3_str_appendall(sqlite3_str*, const char *zIn);
 SQLITE_API void sqlite3_str_appendchar(sqlite3_str*, int N, char C);
 SQLITE_API void sqlite3_str_reset(sqlite3_str*);
-SQLITE_API void sqlite3_str_truncate(sqlite3_str*,int N);
 
 /*
 ** CAPI3REF: Status Of A Dynamic String
@@ -10712,9 +10598,9 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
 ** a variable pointed to by the "pOut" parameter.
 **
 ** The "flags" parameter must be passed a mask of flags. At present only
-** one flag is defined - [SQLITE_SCANSTAT_COMPLEX]. If SQLITE_SCANSTAT_COMPLEX
+** one flag is defined - SQLITE_SCANSTAT_COMPLEX. If SQLITE_SCANSTAT_COMPLEX
 ** is specified, then status information is available for all elements
-** of a query plan that are reported by "[EXPLAIN QUERY PLAN]" output. If
+** of a query plan that are reported by "EXPLAIN QUERY PLAN" output. If
 ** SQLITE_SCANSTAT_COMPLEX is not specified, then only query plan elements
 ** that correspond to query loops (the "SCAN..." and "SEARCH..." elements of
 ** the EXPLAIN QUERY PLAN output) are available. Invoking API
@@ -10728,8 +10614,7 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
 ** elements used to implement the statement - a non-zero value is returned and
 ** the variable that pOut points to is unchanged.
 **
-** See also: [sqlite3_stmt_scanstatus_reset()] and the
-** [nexec and ncycle] columnes of the [bytecode virtual table].
+** See also: [sqlite3_stmt_scanstatus_reset()]
 */
 SQLITE_API int sqlite3_stmt_scanstatus(
   sqlite3_stmt *pStmt,      /* Prepared statement for which info desired */
@@ -11271,41 +11156,19 @@ SQLITE_API int sqlite3_deserialize(
 /*
 ** CAPI3REF: Bind array values to the CARRAY table-valued function
 **
-** The sqlite3_carray_bind_v2(S,I,P,N,F,X,D) interface binds an array value to
-** parameter that is the first argument of the [carray() table-valued function].
-** The S parameter is a pointer to the [prepared statement] that uses the carray()
-** functions.  I is the parameter index to be bound.  I must be the index of the
-** parameter that is the first argument to the carray() table-valued function.
-** P is a pointer to the array to be bound, and N is the number of elements in
-** the array.  The F argument is one of constants [SQLITE_CARRAY_INT32],
-** [SQLITE_CARRAY_INT64], [SQLITE_CARRAY_DOUBLE], [SQLITE_CARRAY_TEXT],
-** or [SQLITE_CARRAY_BLOB] to indicate the datatype of the array P.
-**
-** If the X argument is not a NULL pointer or one of the special
-** values [SQLITE_STATIC] or [SQLITE_TRANSIENT], then SQLite will invoke
-** the function X with argument D when it is finished using the data in P.
-** The call to X(D) is a destructor for the array P. The destructor X(D)
-** is invoked even if the call to sqlite3_carray_bind() fails. If the X
-** parameter is the special-case value [SQLITE_STATIC], then SQLite assumes
-** that the data static and the destructor is never invoked.  If the X
-** parameter is the special-case value [SQLITE_TRANSIENT], then
-** sqlite3_carray_bind_v2() makes its own private copy of the data prior
-** to returning and never invokes the destructor X.
-**
-** The sqlite3_carray_bind() function works the same as sqlite_carray_bind_v2()
-** with a D parameter set to P.  In other words,
-** sqlite3_carray_bind(S,I,P,N,F,X) is same as
-** sqlite3_carray_bind(S,I,P,N,F,X,P).
-*/
-SQLITE_API int sqlite3_carray_bind_v2(
-  sqlite3_stmt *pStmt,        /* Statement to be bound */
-  int i,                      /* Parameter index */
-  void *aData,                /* Pointer to array data */
-  int nData,                  /* Number of data elements */
-  int mFlags,                 /* CARRAY flags */
-  void (*xDel)(void*),        /* Destructor for aData */
-  void *pDel                  /* Optional argument to xDel() */
-);
+** The sqlite3_carray_bind(S,I,P,N,F,X) interface binds an array value to
+** one of the first argument of the [carray() table-valued function].  The
+** S parameter is a pointer to the [prepared statement] that uses the carray()
+** functions.  I is the parameter index to be bound.  P is a pointer to the
+** array to be bound, and N is the number of eements in the array.  The
+** F argument is one of constants [SQLITE_CARRAY_INT32], [SQLITE_CARRAY_INT64],
+** [SQLITE_CARRAY_DOUBLE], [SQLITE_CARRAY_TEXT], or [SQLITE_CARRAY_BLOB] to
+** indicate the datatype of the array being bound.  The X argument is not a
+** NULL pointer, then SQLite will invoke the function X on the P parameter
+** after it has finished using P, even if the call to
+** sqlite3_carray_bind() fails. The special-case finalizer
+** SQLITE_TRANSIENT has no effect here.
+*/
 SQLITE_API int sqlite3_carray_bind(
   sqlite3_stmt *pStmt,        /* Statement to be bound */
   int i,                      /* Parameter index */
diff --git a/deps/sqlite/sqlite3ext.h b/deps/sqlite/sqlite3ext.h
index cad1a2a0016041..5258faaed313c7 100644
--- a/deps/sqlite/sqlite3ext.h
+++ b/deps/sqlite/sqlite3ext.h
@@ -371,11 +371,7 @@ struct sqlite3_api_routines {
   /* Version 3.51.0 and later */
   int (*set_errmsg)(sqlite3*,int,const char*);
   int (*db_status64)(sqlite3*,int,sqlite3_int64*,sqlite3_int64*,int);
-  /* Version 3.52.0 and later */
-  void (*str_truncate)(sqlite3_str*,int);
-  void (*str_free)(sqlite3_str*);
-  int (*carray_bind)(sqlite3_stmt*,int,void*,int,int,void(*)(void*));
-  int (*carray_bind_v2)(sqlite3_stmt*,int,void*,int,int,void(*)(void*),void*);
+  
 };
 
 /*
@@ -714,11 +710,6 @@ typedef int (*sqlite3_loadext_entry)(
 /* Version 3.51.0 and later */
 #define sqlite3_set_errmsg             sqlite3_api->set_errmsg
 #define sqlite3_db_status64            sqlite3_api->db_status64
-/* Version 3.52.0 and later */
-#define sqlite3_str_truncate           sqlite3_api->str_truncate
-#define sqlite3_str_free               sqlite3_api->str_free
-#define sqlite3_carray_bind            sqlite3_api->carray_bind
-#define sqlite3_carray_bind_v2         sqlite3_api->carray_bind_v2
 #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
 
 #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)

From 7b28fb9812a5c36ab2630110f69e2f2f5d19e228 Mon Sep 17 00:00:00 2001
From: sangwook <rewq5991@gmail.com>
Date: Tue, 17 Mar 2026 16:57:07 +0900
Subject: [PATCH 204/267] util: allow color aliases in styleText
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fixes an issue where `util.styleText()` would throw an error for
valid color aliases like 'grey' in Node.js >= 25.7.0. It now uses
`ObjectGetOwnPropertyNames` instead of `ObjectKeys` to fetch both
keys and aliases.

Fixes: https://github.com/nodejs/node/issues/62177
PR-URL: https://github.com/nodejs/node/pull/62180
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
---
 lib/util.js                          |  5 +++--
 test/parallel/test-util-styletext.js | 33 ++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/lib/util.js b/lib/util.js
index 5d3c0c75a28fc5..54b7e2f9a442f7 100644
--- a/lib/util.js
+++ b/lib/util.js
@@ -32,6 +32,7 @@ const {
   ObjectDefineProperties,
   ObjectDefineProperty,
   ObjectGetOwnPropertyDescriptors,
+  ObjectGetOwnPropertyNames,
   ObjectKeys,
   ObjectSetPrototypeOf,
   ObjectValues,
@@ -115,7 +116,7 @@ function getStyleCache() {
   if (styleCache === undefined) {
     styleCache = { __proto__: null };
     const colors = inspect.colors;
-    for (const key of ObjectKeys(colors)) {
+    for (const key of ObjectGetOwnPropertyNames(colors)) {
       const codes = colors[key];
       if (codes) {
         const openNum = codes[0];
@@ -206,7 +207,7 @@ function styleText(format, text, options) {
     if (key === 'none') continue;
     const style = cache[key];
     if (style === undefined) {
-      validateOneOf(key, 'format', ObjectKeys(inspect.colors));
+      validateOneOf(key, 'format', ObjectGetOwnPropertyNames(inspect.colors));
     }
     openCodes += style.openSeq;
     closeCodes = style.closeSeq + closeCodes;
diff --git a/test/parallel/test-util-styletext.js b/test/parallel/test-util-styletext.js
index 4fdf419143453c..3db01bec1c3acd 100644
--- a/test/parallel/test-util-styletext.js
+++ b/test/parallel/test-util-styletext.js
@@ -41,6 +41,16 @@ assert.strictEqual(
   '\u001b[31mtest\u001b[39m',
 );
 
+assert.strictEqual(
+  util.styleText('gray', 'test', { validateStream: false }),
+  '\u001b[90mtest\u001b[39m',
+);
+
+assert.strictEqual(
+  util.styleText('grey', 'test', { validateStream: false }),
+  '\u001b[90mtest\u001b[39m',
+);
+
 assert.strictEqual(
   util.styleText(['bold', 'red'], 'test', { validateStream: false }),
   '\u001b[1m\u001b[31mtest\u001b[39m\u001b[22m',
@@ -144,6 +154,29 @@ assert.throws(() => {
   code: 'ERR_INVALID_ARG_TYPE',
 });
 
+// Color aliases should be accepted (e.g. 'grey' is an alias for 'gray')
+// See https://github.com/nodejs/node/issues/62177
+assert.strictEqual(
+  util.styleText('grey', 'test', { validateStream: false }),
+  util.styleText('gray', 'test', { validateStream: false }),
+);
+assert.strictEqual(
+  util.styleText('bgGrey', 'test', { validateStream: false }),
+  util.styleText('bgGray', 'test', { validateStream: false }),
+);
+assert.strictEqual(
+  util.styleText('blackBright', 'test', { validateStream: false }),
+  util.styleText('gray', 'test', { validateStream: false }),
+);
+assert.strictEqual(
+  util.styleText('faint', 'test', { validateStream: false }),
+  util.styleText('dim', 'test', { validateStream: false }),
+);
+assert.strictEqual(
+  util.styleText(['grey', 'bold'], 'test', { validateStream: false }),
+  util.styleText(['gray', 'bold'], 'test', { validateStream: false }),
+);
+
 // does not throw
 util.styleText('red', 'text', { stream: {}, validateStream: false });
 

From a035bd5235854d37ab39ef358cac9c1851d2a0be Mon Sep 17 00:00:00 2001
From: kovan <xaum.io@gmail.com>
Date: Fri, 13 Mar 2026 18:15:54 +0100
Subject: [PATCH 205/267] doc,test: clarify --eval syntax for leading '-'
 scripts

If the script passed to --eval starts with a hyphen, the CLI parser
treats it as another option flag. Document the --eval=<script> form
as the workaround and add tests for --eval=-42, --eval=-0, and the
-e -p missing-argument error.

Co-authored-by: jorge guerrero <grrr.jrg@gmail.com>
Refs: https://github.com/nodejs/node/issues/43397
Refs: https://github.com/nodejs/node/pull/61962
PR-URL: https://github.com/nodejs/node/pull/62244
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
---
 doc/api/cli.md                 |  3 +++
 test/parallel/test-cli-eval.js | 20 ++++++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/doc/api/cli.md b/doc/api/cli.md
index 0877615700df41..935c5375d8d62a 100644
--- a/doc/api/cli.md
+++ b/doc/api/cli.md
@@ -943,6 +943,9 @@ changes:
 Evaluate the following argument as JavaScript. The modules which are
 predefined in the REPL can also be used in `script`.
 
+If `script` starts with `-`, pass it using `=` (for example,
+`node --print --eval=-42`) so it is parsed as the value of `--eval`.
+
 On Windows, using `cmd.exe` a single quote will not work correctly because it
 only recognizes double `"` for quoting. In Powershell or Git bash, both `'`
 and `"` are usable.
diff --git a/test/parallel/test-cli-eval.js b/test/parallel/test-cli-eval.js
index 2e5b3dc5992abc..5b090279621f37 100644
--- a/test/parallel/test-cli-eval.js
+++ b/test/parallel/test-cli-eval.js
@@ -115,6 +115,26 @@ child.exec(...common.escapePOSIXShell`"${process.execPath}" -p "\\-42"`, common.
   assert.strictEqual(stderr, '');
 }));
 
+// Eval expressions that start with '-' can be passed with '='.
+child.exec(...common.escapePOSIXShell`"${process.execPath}" --print --eval=-42`, common.mustSucceed((stdout, stderr) => {
+  assert.strictEqual(stdout, '-42\n');
+  assert.strictEqual(stderr, '');
+}));
+
+// Edge case: negative zero should preserve its sign when printed.
+child.exec(...common.escapePOSIXShell`"${process.execPath}" --print --eval=-0`, common.mustSucceed((stdout, stderr) => {
+  assert.strictEqual(stdout, '-0\n');
+  assert.strictEqual(stderr, '');
+}));
+
+// Nearby-path safety: option-looking values should still be rejected with -e.
+child.exec(...common.escapePOSIXShell`"${process.execPath}" -e -p`, common.mustCall((err, stdout, stderr) => {
+  assert.strictEqual(err.code, 9);
+  assert.strictEqual(stdout, '');
+  assert.strictEqual(stderr.trim(),
+                     `${process.execPath}: -e requires an argument`);
+}));
+
 // Long output should not be truncated.
 child.exec(...common.escapePOSIXShell`"${process.execPath}" -p "'1'.repeat(1e5)"`, common.mustSucceed((stdout, stderr) => {
   assert.strictEqual(stdout, `${'1'.repeat(1e5)}\n`);

From 78ac17f426975e79d7b4ac2c38d9a3569bd74527 Mon Sep 17 00:00:00 2001
From: Marco <marco.piraccini@gmail.com>
Date: Tue, 17 Mar 2026 17:02:55 +0100
Subject: [PATCH 206/267] module: fix coverage of mocked CJS modules imported
 from ESM

Signed-off-by: marcopiraccini <marco.piraccini@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/62133
Fixes: https://github.com/nodejs/node/issues/61709
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
---
 lib/internal/modules/esm/translators.js       |  4 ++-
 .../coverage-with-mock/dependency.cjs         |  9 ++++++
 .../coverage-with-mock/subject.mjs            |  5 +++
 .../output/coverage-with-mock-cjs.mjs         | 11 +++++++
 .../output/coverage-with-mock-cjs.snapshot    | 31 +++++++++++++++++++
 .../test-output-coverage-with-mock-cjs.mjs    | 22 +++++++++++++
 6 files changed, 81 insertions(+), 1 deletion(-)
 create mode 100644 test/fixtures/test-runner/coverage-with-mock/dependency.cjs
 create mode 100644 test/fixtures/test-runner/coverage-with-mock/subject.mjs
 create mode 100644 test/fixtures/test-runner/output/coverage-with-mock-cjs.mjs
 create mode 100644 test/fixtures/test-runner/output/coverage-with-mock-cjs.snapshot
 create mode 100644 test/test-runner/test-output-coverage-with-mock-cjs.mjs

diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js
index 96696634543be2..12c3cef5e68014 100644
--- a/lib/internal/modules/esm/translators.js
+++ b/lib/internal/modules/esm/translators.js
@@ -107,7 +107,9 @@ const kShouldNotSkipModuleHooks = { __proto__: null, shouldSkipModuleHooks: fals
  * @param {boolean} isMain - Whether the module is the entrypoint
  */
 function loadCJSModule(module, source, url, filename, isMain) {
-  const compileResult = compileFunctionForCJSLoader(source, filename, false /* is_sea_main */, false);
+  // Use the full URL as the V8 resource name so that any search params
+  // (e.g. ?node-test-mock) are preserved in coverage reports.
+  const compileResult = compileFunctionForCJSLoader(source, url, false /* is_sea_main */, false);
 
   const { function: compiledWrapper, sourceMapURL, sourceURL } = compileResult;
   // Cache the source map for the cjs module if present.
diff --git a/test/fixtures/test-runner/coverage-with-mock/dependency.cjs b/test/fixtures/test-runner/coverage-with-mock/dependency.cjs
new file mode 100644
index 00000000000000..fa305d24a3f3c1
--- /dev/null
+++ b/test/fixtures/test-runner/coverage-with-mock/dependency.cjs
@@ -0,0 +1,9 @@
+throw new Error('This should never be called');
+
+exports.dependency = function dependency() {
+  return 'foo';
+}
+
+exports.unused = function unused() {
+  return 'bar';
+}
diff --git a/test/fixtures/test-runner/coverage-with-mock/subject.mjs b/test/fixtures/test-runner/coverage-with-mock/subject.mjs
new file mode 100644
index 00000000000000..ae63dd386c4998
--- /dev/null
+++ b/test/fixtures/test-runner/coverage-with-mock/subject.mjs
@@ -0,0 +1,5 @@
+import { dependency } from './dependency.cjs';
+
+export function subject() {
+  return dependency();
+}
diff --git a/test/fixtures/test-runner/output/coverage-with-mock-cjs.mjs b/test/fixtures/test-runner/output/coverage-with-mock-cjs.mjs
new file mode 100644
index 00000000000000..4841aa03e6904a
--- /dev/null
+++ b/test/fixtures/test-runner/output/coverage-with-mock-cjs.mjs
@@ -0,0 +1,11 @@
+import { mock, test } from 'node:test';
+
+const dependency = mock.fn(() => 'mock-return-value');
+mock.module('../coverage-with-mock/dependency.cjs', { namedExports: { dependency } });
+
+const { subject } = await import('../coverage-with-mock/subject.mjs');
+
+test('subject calls dependency', (t) => {
+  t.assert.strictEqual(subject(), 'mock-return-value');
+  t.assert.strictEqual(dependency.mock.callCount(), 1);
+});
diff --git a/test/fixtures/test-runner/output/coverage-with-mock-cjs.snapshot b/test/fixtures/test-runner/output/coverage-with-mock-cjs.snapshot
new file mode 100644
index 00000000000000..6d19904b02228a
--- /dev/null
+++ b/test/fixtures/test-runner/output/coverage-with-mock-cjs.snapshot
@@ -0,0 +1,31 @@
+TAP version 13
+# Subtest: subject calls dependency
+ok 1 - subject calls dependency
+  ---
+  duration_ms: *
+  type: 'test'
+  ...
+1..1
+# tests 1
+# suites 0
+# pass 1
+# fail 0
+# cancelled 0
+# skipped 0
+# todo 0
+# duration_ms *
+# start of coverage report
+# -------------------------------------------------------------------------------
+# file                           | line % | branch % | funcs % | uncovered lines
+# -------------------------------------------------------------------------------
+# test                           |        |          |         |
+#  fixtures                      |        |          |         |
+#   test-runner                  |        |          |         |
+#    coverage-with-mock          |        |          |         |
+#     subject.mjs                | 100.00 |   100.00 |  100.00 |
+#    output                      |        |          |         |
+#     coverage-with-mock-cjs.mjs | 100.00 |   100.00 |  100.00 |
+# -------------------------------------------------------------------------------
+# all files                      | 100.00 |   100.00 |  100.00 |
+# -------------------------------------------------------------------------------
+# end of coverage report
diff --git a/test/test-runner/test-output-coverage-with-mock-cjs.mjs b/test/test-runner/test-output-coverage-with-mock-cjs.mjs
new file mode 100644
index 00000000000000..3f8152a5cdcd89
--- /dev/null
+++ b/test/test-runner/test-output-coverage-with-mock-cjs.mjs
@@ -0,0 +1,22 @@
+import * as common from '../common/index.mjs';
+import * as fixtures from '../common/fixtures.mjs';
+import { spawnAndAssert, defaultTransform, ensureCwdIsProjectRoot } from '../common/assertSnapshot.js';
+
+if (!process.features.inspector) {
+  common.skip('inspector support required');
+}
+
+ensureCwdIsProjectRoot();
+await spawnAndAssert(
+  fixtures.path('test-runner/output/coverage-with-mock-cjs.mjs'),
+  defaultTransform,
+  {
+    flags: [
+      '--disable-warning=ExperimentalWarning',
+      '--test-reporter=tap',
+      '--experimental-test-module-mocks',
+      '--experimental-test-coverage',
+      '--test-coverage-exclude=!test/**',
+    ],
+  },
+);

From ba0a82a1e11aee503c8808ce4d675d9e97effe7a Mon Sep 17 00:00:00 2001
From: Kit Dallege <xaum.io@gmail.com>
Date: Tue, 17 Mar 2026 17:03:11 +0100
Subject: [PATCH 207/267] doc: clarify fs.ReadStream and fs.WriteStream are not
 constructable
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Add explicit wording that fs.ReadStream and fs.WriteStream should not
be constructed directly, matching the existing pattern used by fs.Stats
("not to be created directly using the new keyword"). The factory
functions fs.createReadStream() and fs.createWriteStream() are the
supported API.

Fixes: https://github.com/nodejs/node/issues/40546

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PR-URL: https://github.com/nodejs/node/pull/62208
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
---
 doc/api/fs.md | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/doc/api/fs.md b/doc/api/fs.md
index 032918659e6b86..18464b76a2da86 100644
--- a/doc/api/fs.md
+++ b/doc/api/fs.md
@@ -7138,8 +7138,8 @@ added: v0.1.93
 
 * Extends: {stream.Readable}
 
-Instances of {fs.ReadStream} are created and returned using the
-[`fs.createReadStream()`][] function.
+Instances of {fs.ReadStream} cannot be constructed directly. They are created and
+returned using the [`fs.createReadStream()`][] function.
 
 #### Event: `'close'`
 
@@ -7909,8 +7909,8 @@ added: v0.1.93
 
 * Extends {stream.Writable}
 
-Instances of {fs.WriteStream} are created and returned using the
-[`fs.createWriteStream()`][] function.
+Instances of {fs.WriteStream} cannot be constructed directly. They are created and
+returned using the [`fs.createWriteStream()`][] function.
 
 #### Event: `'close'`
 

From 83416a640aeff5a5f4d637179d1f3708a3adfb77 Mon Sep 17 00:00:00 2001
From: Stewart X Addison <6487691+sxa@users.noreply.github.com>
Date: Tue, 17 Mar 2026 16:03:31 +0000
Subject: [PATCH 208/267] test: skip test-cluster-dgram-reuse on AIX 7.3

Signed-off-by: Stewart X Addison <sxa@ibm.com>
PR-URL: https://github.com/nodejs/node/pull/62238
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
---
 test/parallel/test-cluster-dgram-reuse.js | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/test/parallel/test-cluster-dgram-reuse.js b/test/parallel/test-cluster-dgram-reuse.js
index d2790b5d99c012..b8eae5826fd349 100644
--- a/test/parallel/test-cluster-dgram-reuse.js
+++ b/test/parallel/test-cluster-dgram-reuse.js
@@ -1,7 +1,10 @@
 'use strict';
 const common = require('../common');
+const os = require('os');
 if (common.isWindows)
   common.skip('dgram clustering is currently not supported on windows.');
+if (common.isAIX && os.release() === '7.3')
+  common.skip('dgram clutering with reuse does not work if built on AIX 7.3.');
 
 const assert = require('assert');
 const cluster = require('cluster');

From 70f805725881b8470c3ff4f9e9bcb554a93419cc Mon Sep 17 00:00:00 2001
From: Mert Can Altin <mertgold60@gmail.com>
Date: Tue, 17 Mar 2026 23:27:43 +0300
Subject: [PATCH 209/267] src: use stack allocation in indexOf latin1 path

PR-URL: https://github.com/nodejs/node/pull/62268
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Daniel Lemire <daniel@lemire.me>
---
 benchmark/buffers/buffer-indexof.js |  2 +-
 src/node_buffer.cc                  | 10 +++-------
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/benchmark/buffers/buffer-indexof.js b/benchmark/buffers/buffer-indexof.js
index 52cc95ccb9cf7e..be6cc243a975da 100644
--- a/benchmark/buffers/buffer-indexof.js
+++ b/benchmark/buffers/buffer-indexof.js
@@ -19,7 +19,7 @@ const searchStrings = [
 
 const bench = common.createBenchmark(main, {
   search: searchStrings,
-  encoding: ['undefined', 'utf8', 'ucs2'],
+  encoding: ['undefined', 'utf8', 'ucs2', 'latin1'],
   type: ['buffer', 'string'],
   n: [5e4],
 }, {
diff --git a/src/node_buffer.cc b/src/node_buffer.cc
index e40a21288ee79d..acf4aff37c5a9c 100644
--- a/src/node_buffer.cc
+++ b/src/node_buffer.cc
@@ -1051,23 +1051,19 @@ void IndexOfString(const FunctionCallbackInfo<Value>& args) {
         offset,
         is_forward);
   } else if (enc == LATIN1) {
-    uint8_t* needle_data = node::UncheckedMalloc<uint8_t>(needle_length);
-    if (needle_data == nullptr) {
-      return args.GetReturnValue().Set(-1);
-    }
+    MaybeStackBuffer<uint8_t> needle_data(needle_length);
     StringBytes::Write(isolate,
-                       reinterpret_cast<char*>(needle_data),
+                       reinterpret_cast<char*>(needle_data.out()),
                        needle_length,
                        needle,
                        enc);
 
     result = nbytes::SearchString(reinterpret_cast<const uint8_t*>(haystack),
                                   haystack_length,
-                                  needle_data,
+                                  needle_data.out(),
                                   needle_length,
                                   offset,
                                   is_forward);
-    free(needle_data);
   }
 
   args.GetReturnValue().Set(

From 0291be584b3c6b03237fd4e48e245a68d8d2d46d Mon Sep 17 00:00:00 2001
From: Xavier Stouder <xavier@stouder.io>
Date: Wed, 18 Mar 2026 00:19:31 +0100
Subject: [PATCH 210/267] doc: test and test-only targets do not run linter
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

`make test` and `make test-only` targets no longer runs linters.
This commit updates the inline comments and building doc to reflect
reality.

Fixes: https://github.com/nodejs/node/issues/58606
PR-URL: https://github.com/nodejs/node/pull/62120
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
---
 BUILDING.md | 6 ++----
 Makefile    | 4 ++--
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/BUILDING.md b/BUILDING.md
index 7e9d76a46d9064..eb0606eb2dff65 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -324,11 +324,9 @@ If you are running tests before submitting a pull request, use:
 make -j4 test
 ```
 
-`make -j4 test` does a full check on the codebase, including running linters and
-documentation tests.
+`make -j4 test` does a full check on the codebase, including documentation tests.
 
-To run the linter without running tests, use
-`make lint`/`vcbuild lint`. It will lint JavaScript, C++, and Markdown files.
+To run the linter, use `make lint`/`vcbuild lint`. It will lint JavaScript, C++, and Markdown files.
 
 To fix auto fixable JavaScript linting errors, use `make lint-js-fix`.
 
diff --git a/Makefile b/Makefile
index 794d45ddbc98da..1dbb9f95206aa6 100644
--- a/Makefile
+++ b/Makefile
@@ -338,7 +338,7 @@ coverage-run-js: ## Run JavaScript tests with coverage.
 
 .PHONY: test
 # This does not run tests of third-party libraries inside deps.
-test: all ## Run default tests, linters, and build docs.
+test: all ## Run default tests and build docs.
 	$(MAKE) -s tooltest
 	$(MAKE) -s test-doc
 	$(MAKE) -s build-addons
@@ -349,7 +349,7 @@ test: all ## Run default tests, linters, and build docs.
 	$(MAKE) -s jstest
 
 .PHONY: test-only
-test-only: all  ## Run default tests, without linters or building the docs.
+test-only: all  ## Run default tests without building the docs.
 	$(MAKE) build-addons
 	$(MAKE) build-js-native-api-tests
 	$(MAKE) build-node-api-tests

From c44f53b544cf8fbeea64247239651743dd970170 Mon Sep 17 00:00:00 2001
From: Marco <marco.piraccini@gmail.com>
Date: Wed, 18 Mar 2026 07:04:26 +0100
Subject: [PATCH 211/267] stream: preserve error over AbortError in pipeline

Signed-off-by: marcopiraccini <marco.piraccini@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/62113
Fixes: https://github.com/nodejs/node/issues/62089
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
---
 lib/internal/streams/pipeline.js      |  2 +-
 test/parallel/test-stream-pipeline.js | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/lib/internal/streams/pipeline.js b/lib/internal/streams/pipeline.js
index ad3f0796875aae..546ff579d8ebbd 100644
--- a/lib/internal/streams/pipeline.js
+++ b/lib/internal/streams/pipeline.js
@@ -227,7 +227,7 @@ function pipelineImpl(streams, callback, opts) {
   }
 
   function finishImpl(err, final) {
-    if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) {
+    if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE' || error.name === 'AbortError')) {
       error = err;
     }
 
diff --git a/test/parallel/test-stream-pipeline.js b/test/parallel/test-stream-pipeline.js
index 6220bc15365361..8852f24a75050f 100644
--- a/test/parallel/test-stream-pipeline.js
+++ b/test/parallel/test-stream-pipeline.js
@@ -1749,3 +1749,24 @@ tmpdir.refresh();
     assert.deepStrictEqual(err, new Error('booom'));
   }));
 }
+
+{
+  // Errors thrown in Readable.map inside pipeline should not be
+  // swallowed by AbortError when the source is an infinite stream.
+  pipeline(
+    new Readable({ read() { this.push('data'); } }),
+    new Transform({
+      readableObjectMode: true,
+      transform(chunk, encoding, callback) {
+        this.push({});
+        callback();
+      },
+    }),
+    (readable) => readable.map(async () => {
+      throw new Error('Boom!');
+    }),
+    common.mustCall((err) => {
+      assert.strictEqual(err.message, 'Boom!');
+    }),
+  );
+}

From f5d74f821636ff71f20a4a631a7f4278a4793ee1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= <jlhwung@gmail.com>
Date: Wed, 18 Mar 2026 05:37:29 -0400
Subject: [PATCH 212/267] tools: add eslint-plugin-regexp
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62093
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
---
 eslint.config.mjs              | 38 ++++++++++++++++++++
 tools/eslint/package-lock.json | 65 ++++++++++++++++++++++++++++++++++
 tools/eslint/package.json      |  1 +
 3 files changed, 104 insertions(+)

diff --git a/eslint.config.mjs b/eslint.config.mjs
index cd66c1392b68c7..fb6f9623587583 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -20,6 +20,7 @@ const { default: js } = await importEslintTool('@eslint/js');
 const { default: babelEslintParser } = await importEslintTool('@babel/eslint-parser');
 const babelPluginSyntaxImportSource = resolveEslintTool('@babel/plugin-syntax-import-source');
 const { default: jsdoc } = await importEslintTool('eslint-plugin-jsdoc');
+const { default: regexpPlugin } = await importEslintTool('eslint-plugin-regexp');
 const { default: markdown } = await importEslintTool('@eslint/markdown');
 const { default: stylisticJs } = await importEslintTool('@stylistic/eslint-plugin');
 
@@ -84,6 +85,7 @@ export default [
   // #region general config
   js.configs.recommended,
   jsdoc.configs['flat/recommended'],
+  regexpPlugin.configs.recommended,
   {
     files: ['**/*.js'],
     languageOptions: {
@@ -275,6 +277,42 @@ export default [
       'jsdoc/reject-any-type': 'off',
       'jsdoc/reject-function-type': 'off',
 
+      // RegExp recommended rules that we disable.
+      // Todo: Investigate which rules should be enabled.
+      'prefer-regex-literals': 'off',
+      'regexp/control-character-escape': 'off',
+      'regexp/match-any': 'off',
+      'regexp/negation': 'off',
+      'regexp/no-contradiction-with-assertion': 'off',
+      'regexp/no-dupe-characters-character-class': 'off',
+      'regexp/no-dupe-disjunctions': 'off',
+      'regexp/no-empty-alternative': 'off',
+      'regexp/no-legacy-features': 'off',
+      'regexp/no-misleading-capturing-group': 'off',
+      'regexp/no-obscure-range': 'off',
+      'regexp/no-potentially-useless-backreference': 'off',
+      'regexp/no-super-linear-backtracking': 'off',
+      'regexp/no-trivially-nested-quantifier': 'off',
+      'regexp/no-unused-capturing-group': 'off',
+      'regexp/no-useless-assertions': 'off',
+      'regexp/no-useless-character-class': 'off',
+      'regexp/no-useless-escape': 'off',
+      'regexp/no-useless-flag': 'off',
+      'regexp/no-useless-lazy': 'off',
+      'regexp/no-useless-non-capturing-group': 'off',
+      'regexp/no-useless-quantifier': 'off',
+      'regexp/no-useless-range': 'off',
+      'regexp/optimal-lookaround-quantifier': 'off',
+      'regexp/optimal-quantifier-concatenation': 'off',
+      'regexp/prefer-character-class': 'off',
+      'regexp/prefer-d': 'off',
+      'regexp/prefer-question-quantifier': 'off',
+      'regexp/prefer-star-quantifier': 'off',
+      'regexp/prefer-w': 'off',
+      'regexp/sort-flags': 'off',
+      'regexp/strict': 'off',
+      'regexp/use-ignore-case': 'off',
+
       // Stylistic rules.
       '@stylistic/js/arrow-parens': 'error',
       '@stylistic/js/arrow-spacing': 'error',
diff --git a/tools/eslint/package-lock.json b/tools/eslint/package-lock.json
index 75862d33c7e79c..096d3e6e3d96db 100644
--- a/tools/eslint/package-lock.json
+++ b/tools/eslint/package-lock.json
@@ -17,6 +17,7 @@
         "eslint": "^10.0.2",
         "eslint-formatter-tap": "^9.0.1",
         "eslint-plugin-jsdoc": "^62.7.1",
+        "eslint-plugin-regexp": "^3.0.0",
         "globals": "^17.3.0"
       }
     },
@@ -47,6 +48,7 @@
       "resolved": "https://registry.npmjs.org/@babel/core/-/core-8.0.0-rc.2.tgz",
       "integrity": "sha512-mlBJdKJJEZNGDE+w+P6B5w+FTMkht1liPkxtB4wk39EpGH01Am5tg1htaNlOU5rO9Ge3psMjAFycpc3ru5uaQw==",
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "@babel/code-frame": "^8.0.0-rc.2",
         "@babel/generator": "^8.0.0-rc.2",
@@ -662,6 +664,7 @@
       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
       "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
       "license": "MIT",
+      "peer": true,
       "bin": {
         "acorn": "bin/acorn"
       },
@@ -761,6 +764,7 @@
         }
       ],
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "baseline-browser-mapping": "^2.9.0",
         "caniuse-lite": "^1.0.30001759",
@@ -934,6 +938,7 @@
       "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.2.tgz",
       "integrity": "sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==",
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.8.0",
         "@eslint-community/regexpp": "^4.12.2",
@@ -1041,6 +1046,27 @@
         "url": "https://opencollective.com/eslint"
       }
     },
+    "node_modules/eslint-plugin-regexp": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-3.0.0.tgz",
+      "integrity": "sha512-iW7hgAV8NOG6E2dz+VeKpq67YLQ9jaajOKYpoOSic2/q8y9BMdXBKkSR9gcMtbqEhNQzdW41E3wWzvhp8ExYwQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@eslint-community/regexpp": "^4.11.0",
+        "comment-parser": "^1.4.0",
+        "jsdoc-type-pratt-parser": "^7.0.0",
+        "refa": "^0.12.1",
+        "regexp-ast-analysis": "^0.7.1",
+        "scslre": "^0.3.0"
+      },
+      "engines": {
+        "node": "^20.19.0 || ^22.13.0 || >=24"
+      },
+      "peerDependencies": {
+        "eslint": ">=9.38.0"
+      }
+    },
     "node_modules/eslint-scope": {
       "version": "9.1.1",
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz",
@@ -2490,6 +2516,31 @@
         "node": ">=6"
       }
     },
+    "node_modules/refa": {
+      "version": "0.12.1",
+      "resolved": "https://registry.npmjs.org/refa/-/refa-0.12.1.tgz",
+      "integrity": "sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==",
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/regexpp": "^4.8.0"
+      },
+      "engines": {
+        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+      }
+    },
+    "node_modules/regexp-ast-analysis": {
+      "version": "0.7.1",
+      "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.7.1.tgz",
+      "integrity": "sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==",
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/regexpp": "^4.8.0",
+        "refa": "^0.12.1"
+      },
+      "engines": {
+        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+      }
+    },
     "node_modules/reserved-identifiers": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz",
@@ -2502,6 +2553,20 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/scslre": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.3.0.tgz",
+      "integrity": "sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/regexpp": "^4.8.0",
+        "refa": "^0.12.0",
+        "regexp-ast-analysis": "^0.7.0"
+      },
+      "engines": {
+        "node": "^14.0.0 || >=16.0.0"
+      }
+    },
     "node_modules/semver": {
       "version": "7.7.4",
       "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
diff --git a/tools/eslint/package.json b/tools/eslint/package.json
index 6225ad5486c26f..1adf4a970c5fa4 100644
--- a/tools/eslint/package.json
+++ b/tools/eslint/package.json
@@ -12,6 +12,7 @@
     "eslint": "^10.0.2",
     "eslint-formatter-tap": "^9.0.1",
     "eslint-plugin-jsdoc": "^62.7.1",
+    "eslint-plugin-regexp": "^3.0.0",
     "globals": "^17.3.0"
   }
 }

From 490168c993965965a3692ae9e78fb430e2c04082 Mon Sep 17 00:00:00 2001
From: chris <earthaccount+gh@mailbox.org>
Date: Wed, 18 Mar 2026 16:48:15 +0100
Subject: [PATCH 213/267] doc: fix small environment_variables typo
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62279
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
---
 doc/api/environment_variables.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/api/environment_variables.md b/doc/api/environment_variables.md
index 6e114c1b9dcce7..ebaa5c9f5e86ef 100644
--- a/doc/api/environment_variables.md
+++ b/doc/api/environment_variables.md
@@ -145,7 +145,7 @@ There following two functions allow you to directly interact with `.env` files:
 
 * [`process.loadEnvFile`][] loads an `.env` file and populates `process.env` with its variables
 
-* [`util.parseEnv`][] parses the row content of an `.env` file and returns its value in an object
+* [`util.parseEnv`][] parses the raw content of an `.env` file and returns its value in an object
 
 [CLI Environment Variables documentation]: cli.md#environment-variables_1
 [`--env-file-if-exists=file`]: cli.md#--env-file-if-existsfile

From 09f7920267e3ba07938be00637ffe3b41ca535b2 Mon Sep 17 00:00:00 2001
From: Chengzhong Wu <cwu631@bloomberg.net>
Date: Wed, 18 Mar 2026 11:48:29 -0400
Subject: [PATCH 214/267] build: fix timezone-update path references

PR-URL: https://github.com/nodejs/node/pull/62280
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 .github/workflows/timezone-update.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/timezone-update.yml b/.github/workflows/timezone-update.yml
index 176944e3bd72d3..3901a589ab2fa2 100644
--- a/.github/workflows/timezone-update.yml
+++ b/.github/workflows/timezone-update.yml
@@ -57,7 +57,7 @@ jobs:
         with:
           author: Node.js GitHub Bot <github-bot@iojs.org>
           body: |
-            This PR was generated by tools/timezone-update.yml.
+            This PR was generated by `.github/workflows/timezone-update.yml` and `tools/update-timezone.mjs`.
 
             Updates the ICU files as per the instructions present in https://github.com/nodejs/node/blob/main/doc/contributing/maintaining/maintaining-icu.md#time-zone-data
 

From 2cb357373586665759687645dc29ca3cf2e31ede Mon Sep 17 00:00:00 2001
From: Edy Silva <edigleyssonsilva@gmail.com>
Date: Wed, 18 Mar 2026 13:15:32 -0300
Subject: [PATCH 215/267] src,sqlite: fix filterFunc dangling reference
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62281
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 src/node_sqlite.cc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/node_sqlite.cc b/src/node_sqlite.cc
index 7050d26ce44ef6..f7942f68fdb46e 100644
--- a/src/node_sqlite.cc
+++ b/src/node_sqlite.cc
@@ -2157,7 +2157,8 @@ void DatabaseSync::ApplyChangeset(const FunctionCallbackInfo<Value>& args) {
 
       Local<Function> filterFunc = filterValue.As<Function>();
 
-      context.filterCallback = [&](std::string_view item) -> bool {
+      context.filterCallback =
+          [env, db, filterFunc](std::string_view item) -> bool {
         // If there was an error in the previous call to the filter's
         // callback, we skip calling it again.
         if (db->ignore_next_sqlite_error_) {

From e0cde40e1d55aa6e894bca474de733e4d7fc91bf Mon Sep 17 00:00:00 2001
From: Edy Silva <edigleyssonsilva@gmail.com>
Date: Wed, 18 Mar 2026 14:09:42 -0300
Subject: [PATCH 216/267] test_runner: set non-zero exit code when suite errors
 occur

PR-URL: https://github.com/nodejs/node/pull/62282
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Pietro Marchini <pietro.marchini94@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
---
 lib/internal/test_runner/utils.js           |  3 +++
 test/fixtures/test-runner/describe_error.js | 10 ++++++++++
 test/parallel/test-runner-exit-code.js      |  8 ++++++++
 3 files changed, 21 insertions(+)
 create mode 100644 test/fixtures/test-runner/describe_error.js

diff --git a/lib/internal/test_runner/utils.js b/lib/internal/test_runner/utils.js
index 5b53342933cdcb..db7e2ee50dd8d6 100644
--- a/lib/internal/test_runner/utils.js
+++ b/lib/internal/test_runner/utils.js
@@ -384,6 +384,9 @@ function countCompletedTest(test, harness = test.root.harness) {
   }
   if (test.reportedType === 'suite') {
     harness.counters.suites++;
+    if (!test.passed) {
+      harness.success = false;
+    }
     return;
   }
   // Check SKIP and TODO tests first, as those should not be counted as
diff --git a/test/fixtures/test-runner/describe_error.js b/test/fixtures/test-runner/describe_error.js
new file mode 100644
index 00000000000000..04e9d1faa042d1
--- /dev/null
+++ b/test/fixtures/test-runner/describe_error.js
@@ -0,0 +1,10 @@
+'use strict';
+const { describe, it } = require('node:test');
+
+describe('should fail', () => {
+  throw new Error('error in describe');
+});
+
+describe('should pass', () => {
+  it('ok', () => {});
+});
diff --git a/test/parallel/test-runner-exit-code.js b/test/parallel/test-runner-exit-code.js
index 4024a52841bb28..c25becee3f708f 100644
--- a/test/parallel/test-runner-exit-code.js
+++ b/test/parallel/test-runner-exit-code.js
@@ -70,6 +70,14 @@ if (process.argv[2] === 'child') {
   assert.strictEqual(child.status, 1);
   assert.strictEqual(child.signal, null);
 
+  // An error thrown inside describe() should cause a non-zero exit code.
+  child = spawnSync(process.execPath, [
+    '--test',
+    fixtures.path('test-runner', 'describe_error.js'),
+  ]);
+  assert.strictEqual(child.status, 1);
+  assert.strictEqual(child.signal, null);
+
   // With process isolation (default), the test name shown is the file path
   // because the parent runner only knows about file-level tests
   const neverEndingSync = fixtures.path('test-runner', 'never_ending_sync.js');

From 59ac10a4fd987fb88b570ef297d169753b05e992 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Fri, 20 Mar 2026 08:57:46 +0100
Subject: [PATCH 217/267] lib: make SubtleCrypto.supports enumerable
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62307
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
---
 lib/internal/crypto/webcrypto.js | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/internal/crypto/webcrypto.js b/lib/internal/crypto/webcrypto.js
index 031bb9a3669fdf..e95c4fd1392bca 100644
--- a/lib/internal/crypto/webcrypto.js
+++ b/lib/internal/crypto/webcrypto.js
@@ -1894,6 +1894,10 @@ ObjectDefineProperties(
     },
   });
 
+ObjectDefineProperties(SubtleCrypto, {
+  supports: kEnumerableProperty,
+});
+
 module.exports = {
   Crypto,
   CryptoKey,

From 57b105c9d54f2f9d97b2e3dc56089ba43157d46e Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Fri, 20 Mar 2026 15:06:08 +0100
Subject: [PATCH 218/267] doc: deprecate CryptoKey use in node:crypto

Refs: https://github.com/nodejs/node/issues/55293
PR-URL: https://github.com/nodejs/node/pull/62321
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 doc/api/deprecations.md | 50 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md
index 3d3fdd0ff3e8af..e99da121f2225c 100644
--- a/doc/api/deprecations.md
+++ b/doc/api/deprecations.md
@@ -4381,6 +4381,42 @@ const server = http2.createSecureServer({
 });
 ```
 
+### DEP0203: Passing `CryptoKey` to `node:crypto` APIs
+
+<!-- YAML
+changes:
+  - version: REPLACEME
+    pr-url: https://github.com/nodejs/node/pull/62321
+    description: Documentation-only deprecation.
+-->
+
+Type: Documentation-only
+
+Passing a [`CryptoKey`][] to `node:crypto` functions is deprecated and
+will throw an error in a future version. This includes
+[`crypto.createPublicKey()`][], [`crypto.createPrivateKey()`][],
+[`crypto.sign()`][], [`crypto.verify()`][],
+[`crypto.publicEncrypt()`][], [`crypto.publicDecrypt()`][],
+[`crypto.privateEncrypt()`][], [`crypto.privateDecrypt()`][],
+[`Sign.prototype.sign()`][], [`Verify.prototype.verify()`][],
+[`crypto.createHmac()`][], [`crypto.createCipheriv()`][],
+[`crypto.createDecipheriv()`][], [`crypto.encapsulate()`][], and
+[`crypto.decapsulate()`][].
+
+### DEP0204: `KeyObject.from()` with non-extractable `CryptoKey`
+
+<!-- YAML
+changes:
+  - version: REPLACEME
+    pr-url: https://github.com/nodejs/node/pull/62321
+    description: Documentation-only deprecation.
+-->
+
+Type: Documentation-only
+
+Passing a non-extractable [`CryptoKey`][] to [`KeyObject.from()`][] is
+deprecated and will throw an error in a future version.
+
 [DEP0142]: #dep0142-repl_builtinlibs
 [NIST SP 800-38D]: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf
 [RFC 6066]: https://tools.ietf.org/html/rfc6066#section-3
@@ -4398,15 +4434,19 @@ const server = http2.createSecureServer({
 [`Buffer.from(buffer)`]: buffer.md#static-method-bufferfrombuffer
 [`Buffer.isBuffer()`]: buffer.md#static-method-bufferisbufferobj
 [`Cipheriv`]: crypto.md#class-cipheriv
+[`CryptoKey`]: webcrypto.md#class-cryptokey
 [`Decipheriv`]: crypto.md#class-decipheriv
 [`Duplex.toWeb()`]: stream.md#streamduplextowebstreamduplex-options
 [`Error.isError`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/isError
+[`KeyObject.from()`]: crypto.md#static-method-keyobjectfromkey
 [`REPLServer.clearBufferedCommand()`]: repl.md#replserverclearbufferedcommand
 [`ReadStream.open()`]: fs.md#class-fsreadstream
 [`Server.getConnections()`]: net.md#servergetconnectionscallback
 [`Server.listen({fd: <number>})`]: net.md#serverlistenhandle-backlog-callback
+[`Sign.prototype.sign()`]: crypto.md#signsignprivatekey-outputencoding
 [`SlowBuffer`]: buffer.md#class-slowbuffer
 [`String.prototype.toWellFormed`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toWellFormed
+[`Verify.prototype.verify()`]: crypto.md#verifyverifyobject-signature-signatureencoding
 [`WriteStream.open()`]: fs.md#class-fswritestream
 [`assert.CallTracker`]: assert.md#class-assertcalltracker
 [`assert`]: assert.md
@@ -4425,11 +4465,21 @@ const server = http2.createSecureServer({
 [`crypto.createDecipheriv()`]: crypto.md#cryptocreatedecipherivalgorithm-key-iv-options
 [`crypto.createHash()`]: crypto.md#cryptocreatehashalgorithm-options
 [`crypto.createHmac()`]: crypto.md#cryptocreatehmacalgorithm-key-options
+[`crypto.createPrivateKey()`]: crypto.md#cryptocreateprivatekeykey
+[`crypto.createPublicKey()`]: crypto.md#cryptocreatepublickeykey
+[`crypto.decapsulate()`]: crypto.md#cryptodecapsulatekey-ciphertext-callback
+[`crypto.encapsulate()`]: crypto.md#cryptoencapsulatekey-callback
 [`crypto.fips`]: crypto.md#cryptofips
 [`crypto.pbkdf2()`]: crypto.md#cryptopbkdf2password-salt-iterations-keylen-digest-callback
+[`crypto.privateDecrypt()`]: crypto.md#cryptoprivatedecryptprivatekey-buffer
+[`crypto.privateEncrypt()`]: crypto.md#cryptoprivateencryptprivatekey-buffer
+[`crypto.publicDecrypt()`]: crypto.md#cryptopublicdecryptkey-buffer
+[`crypto.publicEncrypt()`]: crypto.md#cryptopublicencryptkey-buffer
 [`crypto.randomBytes()`]: crypto.md#cryptorandombytessize-callback
 [`crypto.scrypt()`]: crypto.md#cryptoscryptpassword-salt-keylen-options-callback
 [`crypto.setEngine()`]: crypto.md#cryptosetengineengine-flags
+[`crypto.sign()`]: crypto.md#cryptosignalgorithm-data-key-callback
+[`crypto.verify()`]: crypto.md#cryptoverifyalgorithm-data-key-signature-callback
 [`decipher.final()`]: crypto.md#decipherfinaloutputencoding
 [`decipher.setAuthTag()`]: crypto.md#deciphersetauthtagbuffer-encoding
 [`dirent.parentPath`]: fs.md#direntparentpath

From bfc8a12977409b6d46106dca11c0535771b2f03c Mon Sep 17 00:00:00 2001
From: Matteo Collina <hello@matteocollina.com>
Date: Sun, 22 Mar 2026 14:07:26 +0100
Subject: [PATCH 219/267] test_runner: make it compatible with fake timers

Signed-off-by: Matteo Collina <hello@matteocollina.com>
PR-URL: https://github.com/nodejs/node/pull/59272
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
---
 lib/internal/test_runner/test.js              |  2 +-
 .../test-runner/mock-timers-with-timeout.js   | 43 +++++++++++++++++++
 .../test-runner-mock-timers-with-timeout.js   | 14 ++++++
 3 files changed, 58 insertions(+), 1 deletion(-)
 create mode 100644 test/fixtures/test-runner/mock-timers-with-timeout.js
 create mode 100644 test/parallel/test-runner-mock-timers-with-timeout.js

diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js
index 7cabb3e7525195..0fcf0bdab644d2 100644
--- a/lib/internal/test_runner/test.js
+++ b/lib/internal/test_runner/test.js
@@ -149,7 +149,7 @@ function stopTest(timeout, signal) {
 
     disposeFunction = () => {
       abortListener[SymbolDispose]();
-      timer[SymbolDispose]();
+      clearTimeout(timer);
     };
   }
 
diff --git a/test/fixtures/test-runner/mock-timers-with-timeout.js b/test/fixtures/test-runner/mock-timers-with-timeout.js
new file mode 100644
index 00000000000000..4eb94ec5d6d8e9
--- /dev/null
+++ b/test/fixtures/test-runner/mock-timers-with-timeout.js
@@ -0,0 +1,43 @@
+'use strict';
+
+// Simulate @sinonjs/fake-timers: patch the timers module BEFORE
+// the test runner is loaded, so the test runner captures the patched
+// versions at import time.
+const nodeTimers = require('node:timers');
+const originalSetTimeout = nodeTimers.setTimeout;
+const originalClearTimeout = nodeTimers.clearTimeout;
+
+const fakeTimers = new Map();
+let nextId = 1;
+
+nodeTimers.setTimeout = (fn, delay, ...args) => {
+  const id = nextId++;
+  const timer = originalSetTimeout(fn, delay, ...args);
+  fakeTimers.set(id, timer);
+  // Sinon fake timers return an object with unref/ref but without
+  // Symbol.dispose, which would cause the test runner to throw.
+  return { id, unref() {}, ref() {} };
+};
+
+nodeTimers.clearTimeout = (id) => {
+  if (id != null && typeof id === 'object') id = id.id;
+  const timer = fakeTimers.get(id);
+  if (timer) {
+    originalClearTimeout(timer);
+    fakeTimers.delete(id);
+  }
+};
+
+// Now load the test runner - it will capture our patched setTimeout/clearTimeout
+const { test } = require('node:test');
+
+test('test with fake timers and timeout', { timeout: 10_000 }, () => {
+  // This test verifies that the test runner works when setTimeout returns
+  // an object without Symbol.dispose (like sinon fake timers).
+  // Previously, the test runner called timer[Symbol.dispose]() which would
+  // throw TypeError on objects returned by fake timer implementations.
+});
+
+// Restore
+nodeTimers.setTimeout = originalSetTimeout;
+nodeTimers.clearTimeout = originalClearTimeout;
diff --git a/test/parallel/test-runner-mock-timers-with-timeout.js b/test/parallel/test-runner-mock-timers-with-timeout.js
new file mode 100644
index 00000000000000..67f266851fe1ed
--- /dev/null
+++ b/test/parallel/test-runner-mock-timers-with-timeout.js
@@ -0,0 +1,14 @@
+'use strict';
+require('../common');
+const fixtures = require('../common/fixtures');
+const assert = require('node:assert');
+const { spawnSync } = require('node:child_process');
+const { test } = require('node:test');
+
+test('mock timers do not break test timeout cleanup', async () => {
+  const fixture = fixtures.path('test-runner', 'mock-timers-with-timeout.js');
+  const cp = spawnSync(process.execPath, ['--test', fixture], {
+    timeout: 30_000,
+  });
+  assert.strictEqual(cp.status, 0, `Test failed:\nstdout: ${cp.stdout}\nstderr: ${cp.stderr}`);
+});

From 3db35d2c5909a6c5ac79033d05ab5a874cb794d9 Mon Sep 17 00:00:00 2001
From: Rafael Gonzaga <rafael.nunu@hotmail.com>
Date: Sun, 22 Mar 2026 14:41:22 -0300
Subject: [PATCH 220/267] doc: add path to vulnerabilities.json mention

Refs: https://github.com/nodejs/node-core-utils/commit/89df0538426b32826db9f8e39a3d1f687d42abaa
PR-URL: https://github.com/nodejs/node/pull/62355
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Aviv Keller <me@aviv.sh>
---
 doc/contributing/releases.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/contributing/releases.md b/doc/contributing/releases.md
index adbe8c80c3d806..81ab323ec89b44 100644
--- a/doc/contributing/releases.md
+++ b/doc/contributing/releases.md
@@ -314,14 +314,14 @@ git checkout -b v1.2.3-proposal upstream/v1.x-staging
 You can also run:
 
 ```bash
-git node release -S --prepare --security --filterLabel vX.x
+git node release -S --prepare --security=../vulnerabilities.json --filterLabel vX.x
 ```
 
 Example:
 
 ```bash
 git checkout v20.x
-git node release -S --prepare --security --filterLabel v20.x
+git node release -S --prepare --security=../vulnerabilities.json --filterLabel v20.x
 ```
 
 to automate the remaining steps until step 6 or you can perform it manually
@@ -329,7 +329,7 @@ following the below steps. For semver-minors, you can pass the new version
 explicitly with `--newVersion` arg:
 
 ```bash
-git node release -S --prepare --security --filterLabel v20.x --newVersion 20.20.0
+git node release -S --prepare --security=../vulnerabilities.json --filterLabel v20.x --newVersion 20.20.0
 ```
 
 <details>

From 93d19b1a1cc0457914783c24f158e42996528e4d Mon Sep 17 00:00:00 2001
From: Jeff Matson <6805601+JeffMatson@users.noreply.github.com>
Date: Sun, 22 Mar 2026 17:48:57 -0400
Subject: [PATCH 221/267] doc: minor typo fix
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62358
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Minwoo Jung <nodecorelab@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
---
 doc/api/vm.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/api/vm.md b/doc/api/vm.md
index 8a5b935aa82bf9..16cc536c8818c8 100644
--- a/doc/api/vm.md
+++ b/doc/api/vm.md
@@ -1823,10 +1823,10 @@ It does several things at once:
 
 1. Creates a new context.
 2. If `contextObject` is an object, [contextifies][contextified] it with the new context.
-   If  `contextObject` is undefined, creates a new object and [contextifies][contextified] it.
+   If `contextObject` is undefined, creates a new object and [contextifies][contextified] it.
    If `contextObject` is [`vm.constants.DONT_CONTEXTIFY`][], don't [contextify][contextified] anything.
-3. Compiles the code as a`vm.Script`
-4. Runs the compield code within the created context. The code does not have access to the scope in
+3. Compiles the code as a `vm.Script`
+4. Runs the compiled code within the created context. The code does not have access to the scope in
    which this method is called.
 5. Returns the result.
 

From 384a41047f3530d10526eb57cb20cc9dea23e805 Mon Sep 17 00:00:00 2001
From: Mowafak Almahaini <97206982+SuperMo0@users.noreply.github.com>
Date: Fri, 20 Mar 2026 01:33:44 +0200
Subject: [PATCH 222/267] doc: enhance clarification about the main field

removed "this" to enhance sentence flow.

PR-URL: https://github.com/nodejs/node/pull/62302
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 doc/api/packages.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/api/packages.md b/doc/api/packages.md
index 09acf6af878821..f13ef8a3019cb1 100644
--- a/doc/api/packages.md
+++ b/doc/api/packages.md
@@ -1010,7 +1010,7 @@ added: v0.4.0
 The `"main"` field defines the entry point of a package when imported by name
 via a `node_modules` lookup.  Its value is a path.
 
-When a package has an [`"exports"`][] field, this will take precedence over the
+The [`"exports"`][] field, if it exists, takes precedence over the
 `"main"` field when importing the package by name.
 
 It also defines the script that is used when the [package directory is loaded

From dc034a4ac9fb91ebf37445cf4b5a05719abc76c1 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Fri, 13 Mar 2026 22:22:20 +0100
Subject: [PATCH 223/267] crypto: reject ML-KEM/ML-DSA PKCS#8 import without
 seed in SubtleCrypto

Reject importing ML-KEM and ML-DSA PKCS#8 private keys that do not
include a seed, throwing NotSupportedError.

Also add tests for importing PKCS#8 keys with a mismatched expanded key.

Refs: https://redirect.github.com/WICG/webcrypto-modern-algos/pull/34
PR-URL: https://github.com/nodejs/node/pull/62218
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Mattias Buelens <mattias@buelens.com>
---
 doc/api/webcrypto.md                          |  4 ++
 lib/internal/crypto/ml_dsa.js                 | 13 ++++
 lib/internal/crypto/ml_kem.js                 | 13 ++++
 .../test-webcrypto-export-import-ml-dsa.js    | 63 ++++++++++---------
 .../test-webcrypto-export-import-ml-kem.js    | 63 ++++++++++---------
 5 files changed, 100 insertions(+), 56 deletions(-)

diff --git a/doc/api/webcrypto.md b/doc/api/webcrypto.md
index 71ab62ff8aa608..6666428994b8eb 100644
--- a/doc/api/webcrypto.md
+++ b/doc/api/webcrypto.md
@@ -1259,6 +1259,10 @@ The {CryptoKey} (secret key) generating algorithms supported include:
 <!-- YAML
 added: v15.0.0
 changes:
+  - version: REPLACEME
+    pr-url: https://github.com/nodejs/node/pull/62218
+    description: Importing ML-DSA and ML-KEM PKCS#8 keys
+      without a seed is no longer supported.
   - version: v24.8.0
     pr-url: https://github.com/nodejs/node/pull/59647
     description: KMAC algorithms are now supported.
diff --git a/lib/internal/crypto/ml_dsa.js b/lib/internal/crypto/ml_dsa.js
index f4df51ae7cb6aa..11a7e8d843a0a7 100644
--- a/lib/internal/crypto/ml_dsa.js
+++ b/lib/internal/crypto/ml_dsa.js
@@ -192,6 +192,19 @@ function mlDsaImportKey(
     }
     case 'pkcs8': {
       verifyAcceptableMlDsaKeyUse(name, false, usagesSet);
+
+      const privOnlyLengths = {
+        '__proto__': null,
+        'ML-DSA-44': 2588,
+        'ML-DSA-65': 4060,
+        'ML-DSA-87': 4924,
+      };
+      if (keyData.byteLength === privOnlyLengths[name]) {
+        throw lazyDOMException(
+          'Importing an ML-DSA PKCS#8 key without a seed is not supported',
+          'NotSupportedError');
+      }
+
       try {
         keyObject = createPrivateKey({
           key: keyData,
diff --git a/lib/internal/crypto/ml_kem.js b/lib/internal/crypto/ml_kem.js
index 208913cae86c36..9cf44efc37f20a 100644
--- a/lib/internal/crypto/ml_kem.js
+++ b/lib/internal/crypto/ml_kem.js
@@ -182,6 +182,19 @@ function mlKemImportKey(
     }
     case 'pkcs8': {
       verifyAcceptableMlKemKeyUse(name, false, usagesSet);
+
+      const privOnlyLengths = {
+        '__proto__': null,
+        'ML-KEM-512': 1660,
+        'ML-KEM-768': 2428,
+        'ML-KEM-1024': 3196,
+      };
+      if (keyData.byteLength === privOnlyLengths[name]) {
+        throw lazyDOMException(
+          'Importing an ML-KEM PKCS#8 key without a seed is not supported',
+          'NotSupportedError');
+      }
+
       try {
         keyObject = createPrivateKey({
           key: keyData,
diff --git a/test/parallel/test-webcrypto-export-import-ml-dsa.js b/test/parallel/test-webcrypto-export-import-ml-dsa.js
index 38d619eb8c00ec..ceb652955d5929 100644
--- a/test/parallel/test-webcrypto-export-import-ml-dsa.js
+++ b/test/parallel/test-webcrypto-export-import-ml-dsa.js
@@ -12,6 +12,7 @@ if (!hasOpenSSL(3, 5))
 
 const assert = require('assert');
 const { subtle } = globalThis.crypto;
+const { createPrivateKey } = require('crypto');
 
 const fixtures = require('../common/fixtures');
 
@@ -196,41 +197,32 @@ async function testImportPkcs8SeedOnly({ name, privateUsages }, extractable) {
 }
 
 async function testImportPkcs8PrivOnly({ name, privateUsages }, extractable) {
-  const key = await subtle.importKey(
-    'pkcs8',
-    keyData[name].pkcs8_priv_only,
-    { name },
-    extractable,
-    privateUsages);
-  assert.strictEqual(key.type, 'private');
-  assert.strictEqual(key.extractable, extractable);
-  assert.deepStrictEqual(key.usages, privateUsages);
-  assert.deepStrictEqual(key.algorithm.name, name);
-  assert.strictEqual(key.algorithm, key.algorithm);
-  assert.strictEqual(key.usages, key.usages);
-
-  if (extractable) {
-    await assert.rejects(subtle.exportKey('pkcs8', key), (err) => {
-      assert.strictEqual(err.name, 'OperationError');
-      assert.strictEqual(err.cause.code, 'ERR_CRYPTO_OPERATION_FAILED');
-      assert.strictEqual(err.cause.message, 'Failed to get raw seed');
-      return true;
+  await assert.rejects(
+    subtle.importKey(
+      'pkcs8',
+      keyData[name].pkcs8_priv_only,
+      { name },
+      extractable,
+      privateUsages),
+    {
+      name: 'NotSupportedError',
+      message: 'Importing an ML-DSA PKCS#8 key without a seed is not supported',
     });
-  } else {
-    await assert.rejects(
-      subtle.exportKey('pkcs8', key), {
-        message: /key is not extractable/
-      });
-  }
+}
 
+async function testImportPkcs8MismatchedSeed({ name, privateUsages }, extractable) {
+  const modified = Buffer.from(keyData[name].pkcs8);
+  modified[30] ^= 0xff;
   await assert.rejects(
     subtle.importKey(
       'pkcs8',
-      keyData[name].pkcs8_seed_only,
+      modified,
       { name },
       extractable,
-      [/* empty usages */]),
-    { name: 'SyntaxError', message: 'Usages cannot be empty when importing a private key.' });
+      privateUsages),
+    {
+      name: 'DataError',
+    });
 }
 
 async function testImportJwk({ name, publicUsages, privateUsages }, extractable) {
@@ -493,6 +485,7 @@ async function testImportRawSeed({ name, privateUsages }, extractable) {
       tests.push(testImportPkcs8(vector, extractable));
       tests.push(testImportPkcs8SeedOnly(vector, extractable));
       tests.push(testImportPkcs8PrivOnly(vector, extractable));
+      tests.push(testImportPkcs8MismatchedSeed(vector, extractable));
       tests.push(testImportJwk(vector, extractable));
       tests.push(testImportRawSeed(vector, extractable));
       tests.push(testImportRawPublic(vector, extractable));
@@ -509,3 +502,17 @@ async function testImportRawSeed({ name, privateUsages }, extractable) {
     message: 'Unable to import ML-DSA-44 using raw format',
   });
 })().then(common.mustCall());
+
+(async function() {
+  for (const { name, privateUsages } of testVectors) {
+    const pem = fixtures.readKey(getKeyFileName(name.toLowerCase(), 'private_priv_only'), 'ascii');
+    const keyObject = createPrivateKey(pem);
+    const key = keyObject.toCryptoKey({ name }, true, privateUsages);
+    await assert.rejects(subtle.exportKey('pkcs8', key), (err) => {
+      assert.strictEqual(err.name, 'OperationError');
+      assert.strictEqual(err.cause.code, 'ERR_CRYPTO_OPERATION_FAILED');
+      assert.strictEqual(err.cause.message, 'Failed to get raw seed');
+      return true;
+    });
+  }
+})().then(common.mustCall());
diff --git a/test/parallel/test-webcrypto-export-import-ml-kem.js b/test/parallel/test-webcrypto-export-import-ml-kem.js
index c927b5571a69da..c33eb2b5993156 100644
--- a/test/parallel/test-webcrypto-export-import-ml-kem.js
+++ b/test/parallel/test-webcrypto-export-import-ml-kem.js
@@ -12,6 +12,7 @@ if (!hasOpenSSL(3, 5))
 
 const assert = require('assert');
 const { subtle } = globalThis.crypto;
+const { createPrivateKey } = require('crypto');
 
 const fixtures = require('../common/fixtures');
 
@@ -179,41 +180,32 @@ async function testImportPkcs8SeedOnly({ name, privateUsages }, extractable) {
 }
 
 async function testImportPkcs8PrivOnly({ name, privateUsages }, extractable) {
-  const key = await subtle.importKey(
-    'pkcs8',
-    keyData[name].pkcs8_priv_only,
-    { name },
-    extractable,
-    privateUsages);
-  assert.strictEqual(key.type, 'private');
-  assert.strictEqual(key.extractable, extractable);
-  assert.deepStrictEqual(key.usages, privateUsages);
-  assert.deepStrictEqual(key.algorithm.name, name);
-  assert.strictEqual(key.algorithm, key.algorithm);
-  assert.strictEqual(key.usages, key.usages);
-
-  if (extractable) {
-    await assert.rejects(subtle.exportKey('pkcs8', key), (err) => {
-      assert.strictEqual(err.name, 'OperationError');
-      assert.strictEqual(err.cause.code, 'ERR_CRYPTO_OPERATION_FAILED');
-      assert.strictEqual(err.cause.message, 'Failed to get raw seed');
-      return true;
+  await assert.rejects(
+    subtle.importKey(
+      'pkcs8',
+      keyData[name].pkcs8_priv_only,
+      { name },
+      extractable,
+      privateUsages),
+    {
+      name: 'NotSupportedError',
+      message: 'Importing an ML-KEM PKCS#8 key without a seed is not supported',
     });
-  } else {
-    await assert.rejects(
-      subtle.exportKey('pkcs8', key), {
-        message: /key is not extractable/
-      });
-  }
+}
 
+async function testImportPkcs8MismatchedSeed({ name, privateUsages }, extractable) {
+  const modified = Buffer.from(keyData[name].pkcs8);
+  modified[30] ^= 0xff;
   await assert.rejects(
     subtle.importKey(
       'pkcs8',
-      keyData[name].pkcs8_seed_only,
+      modified,
       { name },
       extractable,
-      [/* empty usages */]),
-    { name: 'SyntaxError', message: 'Usages cannot be empty when importing a private key.' });
+      privateUsages),
+    {
+      name: 'DataError',
+    });
 }
 
 async function testImportRawPublic({ name, publicUsages }, extractable) {
@@ -298,6 +290,7 @@ async function testImportRawSeed({ name, privateUsages }, extractable) {
       tests.push(testImportPkcs8(vector, extractable));
       tests.push(testImportPkcs8SeedOnly(vector, extractable));
       tests.push(testImportPkcs8PrivOnly(vector, extractable));
+      tests.push(testImportPkcs8MismatchedSeed(vector, extractable));
       tests.push(testImportRawSeed(vector, extractable));
       tests.push(testImportRawPublic(vector, extractable));
     }
@@ -313,3 +306,17 @@ async function testImportRawSeed({ name, privateUsages }, extractable) {
     message: 'Unable to import ML-KEM-512 using raw format',
   });
 })().then(common.mustCall());
+
+(async function() {
+  for (const { name, privateUsages } of testVectors) {
+    const pem = fixtures.readKey(getKeyFileName(name.toLowerCase(), 'private_priv_only'), 'ascii');
+    const keyObject = createPrivateKey(pem);
+    const key = keyObject.toCryptoKey({ name }, true, privateUsages);
+    await assert.rejects(subtle.exportKey('pkcs8', key), (err) => {
+      assert.strictEqual(err.name, 'OperationError');
+      assert.strictEqual(err.cause.code, 'ERR_CRYPTO_OPERATION_FAILED');
+      assert.strictEqual(err.cause.message, 'Failed to get raw seed');
+      return true;
+    });
+  }
+})().then(common.mustCall());

From b0cbfe38a4be400706a18def520f141c8dd02d6e Mon Sep 17 00:00:00 2001
From: Tim Perry <1526883+pimterry@users.noreply.github.com>
Date: Mon, 23 Mar 2026 12:27:22 +0100
Subject: [PATCH 224/267] crypto: add crypto::GetSSLCtx API for addon access to
 OpenSSL contexts

This intended to replace usage of the unsupported _external field,
offering an official API for native addons to access OpenSSL directly
while reducing the JS API and internal field exposure.

PR-URL: https://github.com/nodejs/node/pull/62254
Reviewed-By: Anna Henningsen <anna@addaleax.net>
---
 src/crypto/crypto_context.cc                | 25 ++++++++++
 src/node.h                                  | 16 +++++++
 test/addons/addons.status                   |  1 +
 test/addons/openssl-get-ssl-ctx/binding.cc  | 52 +++++++++++++++++++++
 test/addons/openssl-get-ssl-ctx/binding.gyp | 29 ++++++++++++
 test/addons/openssl-get-ssl-ctx/test.js     | 49 +++++++++++++++++++
 6 files changed, 172 insertions(+)
 create mode 100644 test/addons/openssl-get-ssl-ctx/binding.cc
 create mode 100644 test/addons/openssl-get-ssl-ctx/binding.gyp
 create mode 100644 test/addons/openssl-get-ssl-ctx/test.js

diff --git a/src/crypto/crypto_context.cc b/src/crypto/crypto_context.cc
index 4e968477ebcc08..980b7fafb3144b 100644
--- a/src/crypto/crypto_context.cc
+++ b/src/crypto/crypto_context.cc
@@ -2371,5 +2371,30 @@ void UseExtraCaCerts(std::string_view file) {
   extra_root_certs_file = file;
 }
 
+NODE_EXTERN SSL_CTX* GetSSLCtx(Local<Context> context, Local<Value> value) {
+  Environment* env = Environment::GetCurrent(context);
+  if (env == nullptr) return nullptr;
+
+  // TryCatchto swallow any exceptions from Get() (e.g. failing getters)
+  v8::TryCatch try_catch(env->isolate());
+
+  // Unwrap the .context property from the JS SecureContext wrapper
+  // (as returned by tls.createSecureContext()).
+  if (value->IsObject()) {
+    Local<Value> inner;
+    if (!value.As<v8::Object>()
+             ->Get(context, FIXED_ONE_BYTE_STRING(env->isolate(), "context"))
+             .ToLocal(&inner)) {
+      return nullptr;
+    }
+    value = inner;
+  }
+
+  if (!SecureContext::HasInstance(env, value)) return nullptr;
+  SecureContext* sc = BaseObject::FromJSObject<SecureContext>(value);
+  if (sc == nullptr) return nullptr;
+  return sc->ctx().get();
+}
+
 }  // namespace crypto
 }  // namespace node
diff --git a/src/node.h b/src/node.h
index ebfd7229b5f004..2087509f7961dc 100644
--- a/src/node.h
+++ b/src/node.h
@@ -124,6 +124,8 @@
 
 // Forward-declare libuv loop
 struct uv_loop_s;
+struct napi_module;
+struct ssl_ctx_st;  // Forward declaration of SSL_CTX for OpenSSL.
 
 // Forward-declare these functions now to stop MSVS from becoming
 // terminally confused when it's done in node_internals.h
@@ -1700,6 +1702,20 @@ NODE_DEPRECATED("Use v8::Object::Wrap()",
                                                    v8::Local<v8::Object> object,
                                                    void* wrappable));
 
+namespace crypto {
+
+// Returns the SSL_CTX* from a SecureContext JS object, as returned by
+// tls.createSecureContext().
+// Returns nullptr if the value is not a SecureContext instance,
+// or if Node.js was built without OpenSSL.
+//
+// The returned pointer is not owned by the caller and must not be freed.
+// It is valid only while the SecureContext JS object remains alive.
+NODE_EXTERN struct ssl_ctx_st* GetSSLCtx(v8::Local<v8::Context> context,
+                                         v8::Local<v8::Value> secure_context);
+
+}  // namespace crypto
+
 }  // namespace node
 
 #endif  // SRC_NODE_H_
diff --git a/test/addons/addons.status b/test/addons/addons.status
index 7f5fd8f0c2f51f..18b1c2b2157d81 100644
--- a/test/addons/addons.status
+++ b/test/addons/addons.status
@@ -12,6 +12,7 @@ openssl-binding/test: PASS,FLAKY
 
 [$system==ibmi]
 openssl-binding/test: SKIP
+openssl-get-ssl-ctx/test: SKIP
 openssl-providers/test-default-only-config: SKIP
 openssl-providers/test-legacy-provider-config: SKIP
 openssl-providers/test-legacy-provider-inactive-config: SKIP
diff --git a/test/addons/openssl-get-ssl-ctx/binding.cc b/test/addons/openssl-get-ssl-ctx/binding.cc
new file mode 100644
index 00000000000000..3945ec870fb8b9
--- /dev/null
+++ b/test/addons/openssl-get-ssl-ctx/binding.cc
@@ -0,0 +1,52 @@
+#include <node.h>
+#include <openssl/ssl.h>
+
+namespace {
+
+// Test: extract SSL_CTX* from a SecureContext object via
+// node::crypto::GetSSLCtx.
+void GetSSLCtx(const v8::FunctionCallbackInfo<v8::Value>& args) {
+  v8::Isolate* isolate = args.GetIsolate();
+  v8::Local<v8::Context> context = isolate->GetCurrentContext();
+
+  SSL_CTX* ctx = node::crypto::GetSSLCtx(context, args[0]);
+  if (ctx == nullptr) {
+    isolate->ThrowException(v8::Exception::Error(
+        v8::String::NewFromUtf8(
+            isolate, "GetSSLCtx returned nullptr for a valid SecureContext")
+            .ToLocalChecked()));
+    return;
+  }
+
+  // Verify the pointer is a valid SSL_CTX by calling an OpenSSL function.
+  const SSL_METHOD* method = SSL_CTX_get_ssl_method(ctx);
+  if (method == nullptr) {
+    isolate->ThrowException(v8::Exception::Error(
+        v8::String::NewFromUtf8(isolate,
+                                "SSL_CTX_get_ssl_method returned nullptr")
+            .ToLocalChecked()));
+    return;
+  }
+
+  args.GetReturnValue().Set(true);
+}
+
+// Test: passing a non-SecureContext value returns nullptr.
+void GetSSLCtxInvalid(const v8::FunctionCallbackInfo<v8::Value>& args) {
+  v8::Isolate* isolate = args.GetIsolate();
+  v8::Local<v8::Context> context = isolate->GetCurrentContext();
+
+  SSL_CTX* ctx = node::crypto::GetSSLCtx(context, args[0]);
+  args.GetReturnValue().Set(ctx == nullptr);
+}
+
+void Initialize(v8::Local<v8::Object> exports,
+                v8::Local<v8::Value> module,
+                v8::Local<v8::Context> context) {
+  NODE_SET_METHOD(exports, "getSSLCtx", GetSSLCtx);
+  NODE_SET_METHOD(exports, "getSSLCtxInvalid", GetSSLCtxInvalid);
+}
+
+}  // anonymous namespace
+
+NODE_MODULE_CONTEXT_AWARE(NODE_GYP_MODULE_NAME, Initialize)
diff --git a/test/addons/openssl-get-ssl-ctx/binding.gyp b/test/addons/openssl-get-ssl-ctx/binding.gyp
new file mode 100644
index 00000000000000..46a558e1203036
--- /dev/null
+++ b/test/addons/openssl-get-ssl-ctx/binding.gyp
@@ -0,0 +1,29 @@
+{
+  'targets': [
+    {
+      'target_name': 'binding',
+      'includes': ['../common.gypi'],
+      'conditions': [
+        ['node_use_openssl=="true"', {
+          'conditions': [
+            ['OS in "aix os400"', {
+              'variables': {
+                # Used to differentiate `AIX` and `OS400`(IBM i).
+                'aix_variant_name': '<!(uname -s)',
+              },
+              'conditions': [
+                [ '"<(aix_variant_name)"!="OS400"', { # Not `OS400`(IBM i)
+                  'sources': ['binding.cc'],
+                  'include_dirs': ['../../../deps/openssl/openssl/include'],
+                }],
+              ],
+            }, {
+              'sources': ['binding.cc'],
+              'include_dirs': ['../../../deps/openssl/openssl/include'],
+            }],
+          ],
+        }],
+      ],
+    },
+  ],
+}
diff --git a/test/addons/openssl-get-ssl-ctx/test.js b/test/addons/openssl-get-ssl-ctx/test.js
new file mode 100644
index 00000000000000..9acedb6ab93cff
--- /dev/null
+++ b/test/addons/openssl-get-ssl-ctx/test.js
@@ -0,0 +1,49 @@
+'use strict';
+const common = require('../../common');
+if (!common.hasCrypto)
+  common.skip('missing crypto');
+
+const assert = require('assert');
+const tls = require('tls');
+const binding = require(`./build/${common.buildType}/binding`);
+
+// Test 1: Pass a SecureContext to getSSLCtx.
+{
+  const ctx = tls.createSecureContext();
+  assert.strictEqual(binding.getSSLCtx(ctx), true);
+}
+
+// Test 2: Passing a non-SecureContext should return nullptr.
+{
+  assert.strictEqual(binding.getSSLCtxInvalid({}), true);
+}
+
+// Test 3: Passing a number should return nullptr.
+{
+  assert.strictEqual(binding.getSSLCtxInvalid(42), true);
+}
+
+// Test 4: Passing undefined should return nullptr.
+{
+  assert.strictEqual(binding.getSSLCtxInvalid(undefined), true);
+}
+
+// Test 5: Passing null should return nullptr.
+{
+  assert.strictEqual(binding.getSSLCtxInvalid(null), true);
+}
+
+// Test 6: An object with a non-SecureContext .context property should return
+// nullptr.
+{
+  assert.strictEqual(binding.getSSLCtxInvalid({ context: 'not a context' }), true);
+}
+
+// Test 7: An object with a throwing .context getter should return nullptr
+// without propagating the exception.
+{
+  const obj = {
+    get context() { throw new Error('getter threw'); },
+  };
+  assert.strictEqual(binding.getSSLCtxInvalid(obj), true);
+}

From c4567e4a8d729405045f292a1adc4bd883b05c42 Mon Sep 17 00:00:00 2001
From: Kit Dallege <xaum.io@gmail.com>
Date: Tue, 24 Mar 2026 11:49:30 +0100
Subject: [PATCH 225/267] doc: fix overstated Date header requirement in
 response.sendDate

The docs stated "HTTP requires the Date header in responses" which
oversimplifies the actual requirement. Per RFC 9110 Section 6.6.1,
the Date header is required only in most responses (2xx/3xx/4xx from
servers with a clock), not all. Reference the specific RFC section.

Fixes: https://github.com/nodejs/node/issues/42619

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PR-URL: https://github.com/nodejs/node/pull/62206
Reviewed-By: Tim Perry <pimterry@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 doc/api/http.md | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/doc/api/http.md b/doc/api/http.md
index 91950b1ab8f39b..2d2b202e41baab 100644
--- a/doc/api/http.md
+++ b/doc/api/http.md
@@ -2298,8 +2298,8 @@ added: v0.7.5
 When true, the Date header will be automatically generated and sent in
 the response if it is not already present in the headers. Defaults to true.
 
-This should only be disabled for testing; HTTP requires the Date header
-in responses.
+This should only be disabled for testing; the Date header is required in
+most HTTP responses (see [RFC 9110 Section 6.6.1][] for details).
 
 ### `response.setHeader(name, value)`
 
@@ -4555,6 +4555,7 @@ const agent2 = new http.Agent({ proxyEnv: process.env });
 
 [Built-in Proxy Support]: #built-in-proxy-support
 [RFC 8187]: https://www.rfc-editor.org/rfc/rfc8187.txt
+[RFC 9110 Section 6.6.1]: https://www.rfc-editor.org/rfc/rfc9110#section-6.6.1
 [`'ERR_HTTP_CONTENT_LENGTH_MISMATCH'`]: errors.md#err_http_content_length_mismatch
 [`'checkContinue'`]: #event-checkcontinue
 [`'finish'`]: #event-finish

From f102e79b8030bc5d030cd9c3da9c22f878439a48 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= <jlhwung@gmail.com>
Date: Tue, 24 Mar 2026 10:41:33 -0400
Subject: [PATCH 226/267] tools: bump eslint deps

PR-URL: https://github.com/nodejs/node/pull/62356
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
---
 tools/eslint/package-lock.json | 326 ++++++++++++++++-----------------
 tools/eslint/package.json      |  16 +-
 2 files changed, 171 insertions(+), 171 deletions(-)

diff --git a/tools/eslint/package-lock.json b/tools/eslint/package-lock.json
index 096d3e6e3d96db..56d69e9aae56c5 100644
--- a/tools/eslint/package-lock.json
+++ b/tools/eslint/package-lock.json
@@ -8,26 +8,26 @@
       "name": "eslint-tools",
       "version": "0.0.0",
       "dependencies": {
-        "@babel/core": "^8.0.0-rc.2",
-        "@babel/eslint-parser": "^8.0.0-rc.2",
-        "@babel/plugin-syntax-import-source": "^8.0.0-rc.2",
+        "@babel/core": "^8.0.0-rc.3",
+        "@babel/eslint-parser": "^8.0.0-rc.3",
+        "@babel/plugin-syntax-import-source": "^8.0.0-rc.3",
         "@eslint/js": "^10.0.1",
         "@eslint/markdown": "^7.5.1",
-        "@stylistic/eslint-plugin": "^5.9.0",
-        "eslint": "^10.0.2",
+        "@stylistic/eslint-plugin": "^5.10.0",
+        "eslint": "^10.1.0",
         "eslint-formatter-tap": "^9.0.1",
-        "eslint-plugin-jsdoc": "^62.7.1",
-        "eslint-plugin-regexp": "^3.0.0",
-        "globals": "^17.3.0"
+        "eslint-plugin-jsdoc": "^62.8.0",
+        "eslint-plugin-regexp": "^3.1.0",
+        "globals": "^17.4.0"
       }
     },
     "node_modules/@babel/code-frame": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0-rc.2.tgz",
-      "integrity": "sha512-zbPFBDbQdChkGN02WRc/BcOvZLDTctFJZVeWkciVr82T5V0GVBXztq4/Wi4Ca+ZKx7U+Kdt5b862cpFJ4Cjf1A==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0-rc.3.tgz",
+      "integrity": "sha512-585nwYQGQKKc+jMIAPeZJ+aGMn4FHmIUUjLZa9zI7mslvYmShnx0u7rFA4gliRip6S2vkwTYrMxPeXadkKW93Q==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-validator-identifier": "^8.0.0-rc.2",
+        "@babel/helper-validator-identifier": "^8.0.0-rc.3",
         "js-tokens": "^10.0.0"
       },
       "engines": {
@@ -35,29 +35,29 @@
       }
     },
     "node_modules/@babel/compat-data": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-8.0.0-rc.2.tgz",
-      "integrity": "sha512-zDrQeMrDVCkisxxjZmP+xeAyGfZCVOwP+7VECgOvMXttb+1pTUMpeEYI0LaozIzeES/Uvu7OqhHLb3oN1qo6Wg==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-8.0.0-rc.3.tgz",
+      "integrity": "sha512-TlS7d9xYz/93xC8ovkRBwTKPodbwPfzTn7TxUgZo4c3LwpPINnScqIlN0QRDE/x1S4C1bmyqxGmAZUIC0buW0A==",
       "license": "MIT",
       "engines": {
         "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/core": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-8.0.0-rc.2.tgz",
-      "integrity": "sha512-mlBJdKJJEZNGDE+w+P6B5w+FTMkht1liPkxtB4wk39EpGH01Am5tg1htaNlOU5rO9Ge3psMjAFycpc3ru5uaQw==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-8.0.0-rc.3.tgz",
+      "integrity": "sha512-ov5mBbHiosqX1eqt8nN0JM7VuhirO6V8lln5rUXNZpNB+a9NnPTVYeDqSTBkf9C6GmFq3fnFlGT8eg3QBI7jJQ==",
       "license": "MIT",
       "peer": true,
       "dependencies": {
-        "@babel/code-frame": "^8.0.0-rc.2",
-        "@babel/generator": "^8.0.0-rc.2",
-        "@babel/helper-compilation-targets": "^8.0.0-rc.2",
-        "@babel/helpers": "^8.0.0-rc.2",
-        "@babel/parser": "^8.0.0-rc.2",
-        "@babel/template": "^8.0.0-rc.2",
-        "@babel/traverse": "^8.0.0-rc.2",
-        "@babel/types": "^8.0.0-rc.2",
+        "@babel/code-frame": "^8.0.0-rc.3",
+        "@babel/generator": "^8.0.0-rc.3",
+        "@babel/helper-compilation-targets": "^8.0.0-rc.3",
+        "@babel/helpers": "^8.0.0-rc.3",
+        "@babel/parser": "^8.0.0-rc.3",
+        "@babel/template": "^8.0.0-rc.3",
+        "@babel/traverse": "^8.0.0-rc.3",
+        "@babel/types": "^8.0.0-rc.3",
         "@jridgewell/remapping": "^2.3.5",
         "@types/gensync": "^1.0.0",
         "convert-source-map": "^2.0.0",
@@ -84,9 +84,9 @@
       }
     },
     "node_modules/@babel/eslint-parser": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-8.0.0-rc.2.tgz",
-      "integrity": "sha512-hczs5f2oe/BjS3OpQb2ljVVsauEjBIR3UsTmIPNDECIz02olxaVYDHd4mk3GEx0N7PD8gsz2cZ6sqZTctVaMug==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-8.0.0-rc.3.tgz",
+      "integrity": "sha512-YsJgMO5TVzHGpX0zNF5WkrKj04QI32kQv0L2r/KKbCOmOt4A/XhM5zctW7WgFiOAEZafWfQyo6dWEwwBjZnHlQ==",
       "license": "MIT",
       "dependencies": {
         "eslint-scope": "^9.1.0",
@@ -97,18 +97,18 @@
         "node": "^20.19.0 || >=22.12.0"
       },
       "peerDependencies": {
-        "@babel/core": "^8.0.0-rc.2",
+        "@babel/core": "^8.0.0-rc.3",
         "eslint": "^9.0.0 || ^10.0.0"
       }
     },
     "node_modules/@babel/generator": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0-rc.2.tgz",
-      "integrity": "sha512-oCQ1IKPwkzCeJzAPb7Fv8rQ9k5+1sG8mf2uoHiMInPYvkRfrDJxbTIbH51U+jstlkghus0vAi3EBvkfvEsYNLQ==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0-rc.3.tgz",
+      "integrity": "sha512-em37/13/nR320G4jab/nIIHZgc2Wz2y/D39lxnTyxB4/D/omPQncl/lSdlnJY1OhQcRGugTSIF2l/69o31C9dA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/parser": "^8.0.0-rc.2",
-        "@babel/types": "^8.0.0-rc.2",
+        "@babel/parser": "^8.0.0-rc.3",
+        "@babel/types": "^8.0.0-rc.3",
         "@jridgewell/gen-mapping": "^0.3.12",
         "@jridgewell/trace-mapping": "^0.3.28",
         "@types/jsesc": "^2.5.0",
@@ -119,13 +119,13 @@
       }
     },
     "node_modules/@babel/helper-compilation-targets": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-8.0.0-rc.2.tgz",
-      "integrity": "sha512-oMIhKru9gl3mj0eKDyKW6wBDAvyWoZd28d6V/m4JTeeiFsJLfOYnqu+s+cnK4jSo87cg/oj4hsATgkmZ3AzsDQ==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-8.0.0-rc.3.tgz",
+      "integrity": "sha512-UXlT7t103KBJjiphN7Ij9DtELX2Q5uk1xMle7oN/eckxR8dmJyvbFsIm5u+cY0KZyF7qNkAiLsJljEPix1yfKg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/compat-data": "^8.0.0-rc.2",
-        "@babel/helper-validator-option": "^8.0.0-rc.2",
+        "@babel/compat-data": "^8.0.0-rc.3",
+        "@babel/helper-validator-option": "^8.0.0-rc.3",
         "browserslist": "^4.24.0",
         "lru-cache": "^7.14.1",
         "semver": "^7.7.3"
@@ -135,73 +135,73 @@
       }
     },
     "node_modules/@babel/helper-globals": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-8.0.0-rc.2.tgz",
-      "integrity": "sha512-Q1AIOaW4EOxkI/8wYJKyLI59gfqTK3imFUfIqxuve0Q3GlOSrOTVmvHU6Gb3Y5GxtoS1hIzhO47k5GkfyGTQEQ==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-8.0.0-rc.3.tgz",
+      "integrity": "sha512-rwtdZPunoa/IAlcZhgDoLxROXPW5evSN7SXMdObS8vNt7Wu6fCf8nLPFcuuhLCzeRoIrGNKx08v/XEQ4riQDGg==",
       "license": "MIT",
       "engines": {
         "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/helper-plugin-utils": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-8.0.0-rc.2.tgz",
-      "integrity": "sha512-APa2p8RHBNGUmNPDYshswXQkS2sMNthL8VZSc9soe5lQfT2RXRXM6TwOLaktQwnNSwdoEy+Xu9q3qMdFrV92sg==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-8.0.0-rc.3.tgz",
+      "integrity": "sha512-1+lvhojDf75++IwFRWrch4BBaznB2Z99GCfggHFWEKJ8B40iovZ8KqP0kDeb60ThuAa7WxCbtuYHfP5BtJL1kA==",
       "license": "MIT",
       "engines": {
         "node": "^20.19.0 || >=22.12.0"
       },
       "peerDependencies": {
-        "@babel/core": "^8.0.0-rc.2"
+        "@babel/core": "^8.0.0-rc.3"
       }
     },
     "node_modules/@babel/helper-string-parser": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0-rc.2.tgz",
-      "integrity": "sha512-noLx87RwlBEMrTzncWd/FvTxoJ9+ycHNg0n8yyYydIoDsLZuxknKgWRJUqcrVkNrJ74uGyhWQzQaS3q8xfGAhQ==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0-rc.3.tgz",
+      "integrity": "sha512-AmwWFx1m8G/a5cXkxLxTiWl+YEoWuoFLUCwqMlNuWO1tqAYITQAbCRPUkyBHv1VOFgfjVOqEj6L3u15J5ZCzTA==",
       "license": "MIT",
       "engines": {
         "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/helper-validator-identifier": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0-rc.2.tgz",
-      "integrity": "sha512-xExUBkuXWJjVuIbO7z6q7/BA9bgfJDEhVL0ggrggLMbg0IzCUWGT1hZGE8qUH7Il7/RD/a6cZ3AAFrrlp1LF/A==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0-rc.3.tgz",
+      "integrity": "sha512-8AWCJ2VJJyDFlGBep5GpaaQ9AAaE/FjAcrqI7jyssYhtL7WGV0DOKpJsQqM037xDbpRLHXsY8TwU7zDma7coOw==",
       "license": "MIT",
       "engines": {
         "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/helper-validator-option": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-8.0.0-rc.2.tgz",
-      "integrity": "sha512-EtxQopsocKue0ZdjnX5INoDiRN+RCBb1TDh3d0N8bM6aX0lyUhQfRNRQaKB+vCx+YvGjXWRf3JD6/YvTsf2qgQ==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-8.0.0-rc.3.tgz",
+      "integrity": "sha512-wpzZ9KycQDqmJct4ee/ihua2KKdW/MXTDidD4Ya7HdUHL+Jp5zBZTj8oNrxc8wp5Qr4sofKgZF1GIyymfdq7+g==",
       "license": "MIT",
       "engines": {
         "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/helpers": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-8.0.0-rc.2.tgz",
-      "integrity": "sha512-Cc2IpMRiu8PDBUxtQ6oSkML0etJ27kZGnf3XE+qqAJJFGtVl549kyfvDWLywCAFhq16kHUe2WMZMdFUtPz6kWw==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-8.0.0-rc.3.tgz",
+      "integrity": "sha512-dbPuulmsPOwIAXP4pGsKiAv1E50pKYmAJfWXYytCwLpgj6IDNUFAzGuVVemaphYP/WniKsCf42+Cfo4xpc4jjQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/template": "^8.0.0-rc.2",
-        "@babel/types": "^8.0.0-rc.2"
+        "@babel/template": "^8.0.0-rc.3",
+        "@babel/types": "^8.0.0-rc.3"
       },
       "engines": {
         "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/parser": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0-rc.2.tgz",
-      "integrity": "sha512-29AhEtcq4x8Dp3T72qvUMZHx0OMXCj4Jy/TEReQa+KWLln524Cj1fWb3QFi0l/xSpptQBR6y9RNEXuxpFvwiUQ==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0-rc.3.tgz",
+      "integrity": "sha512-B20dvP3MfNc/XS5KKCHy/oyWl5IA6Cn9YjXRdDlCjNmUFrjvLXMNUfQq/QUy9fnG2gYkKKcrto2YaF9B32ToOQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/types": "^8.0.0-rc.2"
+        "@babel/types": "^8.0.0-rc.3"
       },
       "bin": {
         "parser": "bin/babel-parser.js"
@@ -211,46 +211,46 @@
       }
     },
     "node_modules/@babel/plugin-syntax-import-source": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-source/-/plugin-syntax-import-source-8.0.0-rc.2.tgz",
-      "integrity": "sha512-aB2h3oetnsvPM1RmH5sm17yuMiQ/vXx4YIJS1gaEWvFoZXrQol/lq/pFh4zVp9Y7uB2XfOOxjAigq9vwrMyIBA==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-source/-/plugin-syntax-import-source-8.0.0-rc.3.tgz",
+      "integrity": "sha512-enWWk7TiwxhNMdLgyY1JKYhpsTHoKh5rotU6RHelLGefWCk6vAA1wamfNhu1wWch/tRUm4UCo8imafyzUem1Mg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^8.0.0-rc.2"
+        "@babel/helper-plugin-utils": "^8.0.0-rc.3"
       },
       "engines": {
         "node": "^20.19.0 || >=22.12.0"
       },
       "peerDependencies": {
-        "@babel/core": "^8.0.0-rc.2"
+        "@babel/core": "^8.0.0-rc.3"
       }
     },
     "node_modules/@babel/template": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0-rc.2.tgz",
-      "integrity": "sha512-INp+KufeQpvU+V+gxR7xoiVzU6sRRQo8oOsCU/sTe0wtJ/Adrfgyet0i19qvXXSeuyiZ9+PV8IF/eEPzyJ527g==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0-rc.3.tgz",
+      "integrity": "sha512-9iet2svxZhCGgmt/b6M3Fbmy2i+OgjhXMDWNqDTBrNvb9Cc60NgETNIaJq6b0wICiCqpsFdIt8NYXMXyCQU6jA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/code-frame": "^8.0.0-rc.2",
-        "@babel/parser": "^8.0.0-rc.2",
-        "@babel/types": "^8.0.0-rc.2"
+        "@babel/code-frame": "^8.0.0-rc.3",
+        "@babel/parser": "^8.0.0-rc.3",
+        "@babel/types": "^8.0.0-rc.3"
       },
       "engines": {
         "node": "^20.19.0 || >=22.12.0"
       }
     },
     "node_modules/@babel/traverse": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-8.0.0-rc.2.tgz",
-      "integrity": "sha512-H9ZChE8gRy4fSloEQaT17ijcFNoayS9JIyE0IUWkjYgldU+Czkg2h5XtuJmfIk6cbuHfDK/FFJox+g/TlmXB7g==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-8.0.0-rc.3.tgz",
+      "integrity": "sha512-3gvZCynaX+zxYZ2v5odaBBcc9eT4Yr7Gf16l3QSEvvBPVyMSZbYhsGAZfO79kjOCNJY2j6rWvNkWl1ZwYa64lQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/code-frame": "^8.0.0-rc.2",
-        "@babel/generator": "^8.0.0-rc.2",
-        "@babel/helper-globals": "^8.0.0-rc.2",
-        "@babel/parser": "^8.0.0-rc.2",
-        "@babel/template": "^8.0.0-rc.2",
-        "@babel/types": "^8.0.0-rc.2",
+        "@babel/code-frame": "^8.0.0-rc.3",
+        "@babel/generator": "^8.0.0-rc.3",
+        "@babel/helper-globals": "^8.0.0-rc.3",
+        "@babel/parser": "^8.0.0-rc.3",
+        "@babel/template": "^8.0.0-rc.3",
+        "@babel/types": "^8.0.0-rc.3",
         "obug": "^2.1.1"
       },
       "engines": {
@@ -258,13 +258,13 @@
       }
     },
     "node_modules/@babel/types": {
-      "version": "8.0.0-rc.2",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0-rc.2.tgz",
-      "integrity": "sha512-91gAaWRznDwSX4E2tZ1YjBuIfnQVOFDCQ2r0Toby0gu4XEbyF623kXLMA8d4ZbCu+fINcrudkmEcwSUHgDDkNw==",
+      "version": "8.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0-rc.3.tgz",
+      "integrity": "sha512-mOm5ZrYmphGfqVWoH5YYMTITb3cDXsFgmvFlvkvWDMsR9X8RFnt7a0Wb6yNIdoFsiMO9WjYLq+U/FMtqIYAF8Q==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-string-parser": "^8.0.0-rc.2",
-        "@babel/helper-validator-identifier": "^8.0.0-rc.2"
+        "@babel/helper-string-parser": "^8.0.0-rc.3",
+        "@babel/helper-validator-identifier": "^8.0.0-rc.3"
       },
       "engines": {
         "node": "^20.19.0 || >=22.12.0"
@@ -335,35 +335,35 @@
       }
     },
     "node_modules/@eslint/config-array": {
-      "version": "0.23.2",
-      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.2.tgz",
-      "integrity": "sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==",
+      "version": "0.23.3",
+      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.3.tgz",
+      "integrity": "sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@eslint/object-schema": "^3.0.2",
+        "@eslint/object-schema": "^3.0.3",
         "debug": "^4.3.1",
-        "minimatch": "^10.2.1"
+        "minimatch": "^10.2.4"
       },
       "engines": {
         "node": "^20.19.0 || ^22.13.0 || >=24"
       }
     },
     "node_modules/@eslint/config-helpers": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz",
-      "integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==",
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.3.tgz",
+      "integrity": "sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@eslint/core": "^1.1.0"
+        "@eslint/core": "^1.1.1"
       },
       "engines": {
         "node": "^20.19.0 || ^22.13.0 || >=24"
       }
     },
     "node_modules/@eslint/config-helpers/node_modules/@eslint/core": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz",
-      "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==",
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz",
+      "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==",
       "license": "Apache-2.0",
       "dependencies": {
         "@types/json-schema": "^7.0.15"
@@ -428,9 +428,9 @@
       }
     },
     "node_modules/@eslint/object-schema": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.2.tgz",
-      "integrity": "sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.3.tgz",
+      "integrity": "sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==",
       "license": "Apache-2.0",
       "engines": {
         "node": "^20.19.0 || ^22.13.0 || >=24"
@@ -555,9 +555,9 @@
       }
     },
     "node_modules/@stylistic/eslint-plugin": {
-      "version": "5.9.0",
-      "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.9.0.tgz",
-      "integrity": "sha512-FqqSkvDMYJReydrMhlugc71M76yLLQWNfmGq+SIlLa7N3kHp8Qq8i2PyWrVNAfjOyOIY+xv9XaaYwvVW7vroMA==",
+      "version": "5.10.0",
+      "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.10.0.tgz",
+      "integrity": "sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==",
       "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.9.1",
@@ -713,18 +713,18 @@
       "license": "Python-2.0"
     },
     "node_modules/balanced-match": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz",
-      "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==",
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+      "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
       "license": "MIT",
       "engines": {
-        "node": "20 || >=22"
+        "node": "18 || 20 || >=22"
       }
     },
     "node_modules/baseline-browser-mapping": {
-      "version": "2.10.0",
-      "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz",
-      "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==",
+      "version": "2.10.8",
+      "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.8.tgz",
+      "integrity": "sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==",
       "license": "Apache-2.0",
       "bin": {
         "baseline-browser-mapping": "dist/cli.cjs"
@@ -734,15 +734,15 @@
       }
     },
     "node_modules/brace-expansion": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz",
-      "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==",
+      "version": "5.0.4",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
+      "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
       "license": "MIT",
       "dependencies": {
         "balanced-match": "^4.0.2"
       },
       "engines": {
-        "node": "20 || >=22"
+        "node": "18 || 20 || >=22"
       }
     },
     "node_modules/browserslist": {
@@ -780,9 +780,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001770",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz",
-      "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==",
+      "version": "1.0.30001780",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz",
+      "integrity": "sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==",
       "funding": [
         {
           "type": "opencollective",
@@ -907,9 +907,9 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.5.302",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz",
-      "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==",
+      "version": "1.5.321",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz",
+      "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==",
       "license": "ISC"
     },
     "node_modules/escalade": {
@@ -934,18 +934,18 @@
       }
     },
     "node_modules/eslint": {
-      "version": "10.0.2",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.2.tgz",
-      "integrity": "sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==",
+      "version": "10.1.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.1.0.tgz",
+      "integrity": "sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==",
       "license": "MIT",
       "peer": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.8.0",
         "@eslint-community/regexpp": "^4.12.2",
-        "@eslint/config-array": "^0.23.2",
-        "@eslint/config-helpers": "^0.5.2",
-        "@eslint/core": "^1.1.0",
-        "@eslint/plugin-kit": "^0.6.0",
+        "@eslint/config-array": "^0.23.3",
+        "@eslint/config-helpers": "^0.5.3",
+        "@eslint/core": "^1.1.1",
+        "@eslint/plugin-kit": "^0.6.1",
         "@humanfs/node": "^0.16.6",
         "@humanwhocodes/module-importer": "^1.0.1",
         "@humanwhocodes/retry": "^0.4.2",
@@ -954,9 +954,9 @@
         "cross-spawn": "^7.0.6",
         "debug": "^4.3.2",
         "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^9.1.1",
+        "eslint-scope": "^9.1.2",
         "eslint-visitor-keys": "^5.0.1",
-        "espree": "^11.1.1",
+        "espree": "^11.2.0",
         "esquery": "^1.7.0",
         "esutils": "^2.0.2",
         "fast-deep-equal": "^3.1.3",
@@ -967,7 +967,7 @@
         "imurmurhash": "^0.1.4",
         "is-glob": "^4.0.0",
         "json-stable-stringify-without-jsonify": "^1.0.1",
-        "minimatch": "^10.2.1",
+        "minimatch": "^10.2.4",
         "natural-compare": "^1.4.0",
         "optionator": "^0.9.3"
       },
@@ -1002,9 +1002,9 @@
       }
     },
     "node_modules/eslint-plugin-jsdoc": {
-      "version": "62.7.1",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.7.1.tgz",
-      "integrity": "sha512-4Zvx99Q7d1uggYBUX/AIjvoyqXhluGbbKrRmG8SQTLprPFg6fa293tVJH1o1GQwNe3lUydd8ZHzn37OaSncgSQ==",
+      "version": "62.8.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.8.0.tgz",
+      "integrity": "sha512-hu3r9/6JBmPG6wTcqtYzgZAnjEG2eqRUATfkFscokESg1VDxZM21ZaMire0KjeMwfj+SXvgB4Rvh5LBuesj92w==",
       "license": "BSD-3-Clause",
       "dependencies": {
         "@es-joy/jsdoccomment": "~0.84.0",
@@ -1047,9 +1047,9 @@
       }
     },
     "node_modules/eslint-plugin-regexp": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-3.0.0.tgz",
-      "integrity": "sha512-iW7hgAV8NOG6E2dz+VeKpq67YLQ9jaajOKYpoOSic2/q8y9BMdXBKkSR9gcMtbqEhNQzdW41E3wWzvhp8ExYwQ==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-3.1.0.tgz",
+      "integrity": "sha512-qGXIC3DIKZHcK1H9A9+Byz9gmndY6TTSRkSMTZpNXdyCw2ObSehRgccJv35n9AdUakEjQp5VFNLas6BMXizCZg==",
       "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
@@ -1068,9 +1068,9 @@
       }
     },
     "node_modules/eslint-scope": {
-      "version": "9.1.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz",
-      "integrity": "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==",
+      "version": "9.1.2",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz",
+      "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "@types/esrecurse": "^4.3.1",
@@ -1098,9 +1098,9 @@
       }
     },
     "node_modules/eslint/node_modules/@eslint/core": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz",
-      "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==",
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz",
+      "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==",
       "license": "Apache-2.0",
       "dependencies": {
         "@types/json-schema": "^7.0.15"
@@ -1110,12 +1110,12 @@
       }
     },
     "node_modules/eslint/node_modules/@eslint/plugin-kit": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz",
-      "integrity": "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==",
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz",
+      "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==",
       "license": "Apache-2.0",
       "dependencies": {
-        "@eslint/core": "^1.1.0",
+        "@eslint/core": "^1.1.1",
         "levn": "^0.4.1"
       },
       "engines": {
@@ -1123,9 +1123,9 @@
       }
     },
     "node_modules/eslint/node_modules/espree": {
-      "version": "11.1.1",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz",
-      "integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==",
+      "version": "11.2.0",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+      "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "acorn": "^8.16.0",
@@ -1283,9 +1283,9 @@
       }
     },
     "node_modules/flatted": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz",
-      "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==",
+      "version": "3.4.2",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
+      "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
       "license": "ISC"
     },
     "node_modules/format": {
@@ -1324,9 +1324,9 @@
       }
     },
     "node_modules/globals": {
-      "version": "17.3.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz",
-      "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==",
+      "version": "17.4.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz",
+      "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==",
       "license": "MIT",
       "engines": {
         "node": ">=18"
@@ -2379,9 +2379,9 @@
       "license": "MIT"
     },
     "node_modules/node-releases": {
-      "version": "2.0.27",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
-      "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
+      "version": "2.0.36",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz",
+      "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==",
       "license": "MIT"
     },
     "node_modules/object-deep-merge": {
diff --git a/tools/eslint/package.json b/tools/eslint/package.json
index 1adf4a970c5fa4..75c6ae2346d4d8 100644
--- a/tools/eslint/package.json
+++ b/tools/eslint/package.json
@@ -3,16 +3,16 @@
   "version": "0.0.0",
   "private": true,
   "dependencies": {
-    "@babel/core": "^8.0.0-rc.2",
-    "@babel/eslint-parser": "^8.0.0-rc.2",
-    "@babel/plugin-syntax-import-source": "^8.0.0-rc.2",
+    "@babel/core": "^8.0.0-rc.3",
+    "@babel/eslint-parser": "^8.0.0-rc.3",
+    "@babel/plugin-syntax-import-source": "^8.0.0-rc.3",
     "@eslint/js": "^10.0.1",
     "@eslint/markdown": "^7.5.1",
-    "@stylistic/eslint-plugin": "^5.9.0",
-    "eslint": "^10.0.2",
+    "@stylistic/eslint-plugin": "^5.10.0",
+    "eslint": "^10.1.0",
     "eslint-formatter-tap": "^9.0.1",
-    "eslint-plugin-jsdoc": "^62.7.1",
-    "eslint-plugin-regexp": "^3.0.0",
-    "globals": "^17.3.0"
+    "eslint-plugin-jsdoc": "^62.8.0",
+    "eslint-plugin-regexp": "^3.1.0",
+    "globals": "^17.4.0"
   }
 }

From b53377e8fec8307b547bf9280d01a643bd2b098a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 24 Mar 2026 14:41:49 +0000
Subject: [PATCH 227/267] tools: bump flatted from 3.4.1 to 3.4.2 in
 /tools/eslint

Bumps [flatted](https://github.com/WebReflection/flatted) from 3.4.1 to 3.4.2.
- [Commits](https://github.com/WebReflection/flatted/compare/v3.4.1...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: https://github.com/nodejs/node/pull/62375
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 tools/eslint/package-lock.json | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/tools/eslint/package-lock.json b/tools/eslint/package-lock.json
index 56d69e9aae56c5..acf0cbc2ee55b4 100644
--- a/tools/eslint/package-lock.json
+++ b/tools/eslint/package-lock.json
@@ -48,7 +48,6 @@
       "resolved": "https://registry.npmjs.org/@babel/core/-/core-8.0.0-rc.3.tgz",
       "integrity": "sha512-ov5mBbHiosqX1eqt8nN0JM7VuhirO6V8lln5rUXNZpNB+a9NnPTVYeDqSTBkf9C6GmFq3fnFlGT8eg3QBI7jJQ==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@babel/code-frame": "^8.0.0-rc.3",
         "@babel/generator": "^8.0.0-rc.3",
@@ -664,7 +663,6 @@
       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
       "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
       "license": "MIT",
-      "peer": true,
       "bin": {
         "acorn": "bin/acorn"
       },
@@ -764,7 +762,6 @@
         }
       ],
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "baseline-browser-mapping": "^2.9.0",
         "caniuse-lite": "^1.0.30001759",
@@ -938,7 +935,6 @@
       "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.1.0.tgz",
       "integrity": "sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.8.0",
         "@eslint-community/regexpp": "^4.12.2",

From 1c3d93bfabb1262af0b2d9f6c27bf562c23c7d7d Mon Sep 17 00:00:00 2001
From: Yuya Inoue <65857152+inoway46@users.noreply.github.com>
Date: Thu, 26 Mar 2026 06:22:41 +0900
Subject: [PATCH 228/267] test: avoid flaky run wait in debugger restart test

PR-URL: https://github.com/nodejs/node/pull/62112
Refs: https://github.com/nodejs/node/issues/61762
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 test/parallel/test-debugger-run-after-quit-restart.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/test/parallel/test-debugger-run-after-quit-restart.js b/test/parallel/test-debugger-run-after-quit-restart.js
index 8ea8b74035edf6..e5f6f86e53750c 100644
--- a/test/parallel/test-debugger-run-after-quit-restart.js
+++ b/test/parallel/test-debugger-run-after-quit-restart.js
@@ -41,7 +41,7 @@ const path = require('path');
     .then(() => {
       assert.match(cli.output, /Use `run` to start the app again/);
     })
-    .then(() => cli.stepCommand('run'))
+    .then(() => cli.command('run'))
     .then(() => cli.waitForInitialBreak())
     .then(() => cli.waitForPrompt())
     .then(() => {
@@ -71,7 +71,7 @@ const path = require('path');
     .then(() => {
       assert.match(cli.output, /Use `run` to start the app again/);
     })
-    .then(() => cli.stepCommand('run'))
+    .then(() => cli.command('run'))
     .then(() => cli.waitForInitialBreak())
     .then(() => cli.waitForPrompt())
     .then(() => {

From 4f553cdc01929c7b83ccf7027a5523f5417016a1 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Thu, 26 Mar 2026 14:02:48 +0100
Subject: [PATCH 229/267] src: enable compilation/linking with OpenSSL 4.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62410
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 deps/ncrypto/ncrypto.cc                     | 56 +++++++++++++--------
 deps/ncrypto/ncrypto.h                      |  5 +-
 test/parallel/test-tls-client-auth.js       |  5 +-
 test/parallel/test-tls-empty-sni-context.js |  5 +-
 test/parallel/test-tls-psk-circuit.js       |  5 +-
 test/parallel/test-tls-set-ciphers.js       |  4 +-
 test/parallel/test-tls-set-sigalgs.js       |  5 +-
 7 files changed, 52 insertions(+), 33 deletions(-)

diff --git a/deps/ncrypto/ncrypto.cc b/deps/ncrypto/ncrypto.cc
index 3a26cfbdcab52e..87a6b7a3501e4d 100644
--- a/deps/ncrypto/ncrypto.cc
+++ b/deps/ncrypto/ncrypto.cc
@@ -777,11 +777,15 @@ bool PrintGeneralName(const BIOPointer& out, const GENERAL_NAME* gen) {
     // Note that the preferred name syntax (see RFCs 5280 and 1034) with
     // wildcards is a subset of what we consider "safe", so spec-compliant DNS
     // names will never need to be escaped.
-    PrintAltName(out, reinterpret_cast<const char*>(name->data), name->length);
+    PrintAltName(out,
+                 reinterpret_cast<const char*>(ASN1_STRING_get0_data(name)),
+                 ASN1_STRING_length(name));
   } else if (gen->type == GEN_EMAIL) {
     ASN1_IA5STRING* name = gen->d.rfc822Name;
     BIO_write(out.get(), "email:", 6);
-    PrintAltName(out, reinterpret_cast<const char*>(name->data), name->length);
+    PrintAltName(out,
+                 reinterpret_cast<const char*>(ASN1_STRING_get0_data(name)),
+                 ASN1_STRING_length(name));
   } else if (gen->type == GEN_URI) {
     ASN1_IA5STRING* name = gen->d.uniformResourceIdentifier;
     BIO_write(out.get(), "URI:", 4);
@@ -789,7 +793,9 @@ bool PrintGeneralName(const BIOPointer& out, const GENERAL_NAME* gen) {
     // with a few exceptions, most notably URIs that contains commas (see
     // RFC 2396). In other words, most legitimate URIs will not require
     // escaping.
-    PrintAltName(out, reinterpret_cast<const char*>(name->data), name->length);
+    PrintAltName(out,
+                 reinterpret_cast<const char*>(ASN1_STRING_get0_data(name)),
+                 ASN1_STRING_length(name));
   } else if (gen->type == GEN_DIRNAME) {
     // Earlier versions of Node.js used X509_NAME_oneline to print the X509_NAME
     // object. The format was non standard and should be avoided. The use of
@@ -822,17 +828,18 @@ bool PrintGeneralName(const BIOPointer& out, const GENERAL_NAME* gen) {
   } else if (gen->type == GEN_IPADD) {
     BIO_printf(out.get(), "IP Address:");
     const ASN1_OCTET_STRING* ip = gen->d.ip;
-    const unsigned char* b = ip->data;
-    if (ip->length == 4) {
+    const unsigned char* b = ASN1_STRING_get0_data(ip);
+    int ip_len = ASN1_STRING_length(ip);
+    if (ip_len == 4) {
       BIO_printf(out.get(), "%d.%d.%d.%d", b[0], b[1], b[2], b[3]);
-    } else if (ip->length == 16) {
+    } else if (ip_len == 16) {
       for (unsigned int j = 0; j < 8; j++) {
         uint16_t pair = (b[2 * j] << 8) | b[2 * j + 1];
         BIO_printf(out.get(), (j == 0) ? "%X" : ":%X", pair);
       }
     } else {
 #if OPENSSL_VERSION_MAJOR >= 3
-      BIO_printf(out.get(), "<invalid length=%d>", ip->length);
+      BIO_printf(out.get(), "<invalid length=%d>", ip_len);
 #else
       BIO_printf(out.get(), "<invalid>");
 #endif
@@ -882,15 +889,15 @@ bool PrintGeneralName(const BIOPointer& out, const GENERAL_NAME* gen) {
       if (unicode) {
         auto name = gen->d.otherName->value->value.utf8string;
         PrintAltName(out,
-                     reinterpret_cast<const char*>(name->data),
-                     name->length,
+                     reinterpret_cast<const char*>(ASN1_STRING_get0_data(name)),
+                     ASN1_STRING_length(name),
                      AltNameOption::UTF8,
                      prefix);
       } else {
         auto name = gen->d.otherName->value->value.ia5string;
         PrintAltName(out,
-                     reinterpret_cast<const char*>(name->data),
-                     name->length,
+                     reinterpret_cast<const char*>(ASN1_STRING_get0_data(name)),
+                     ASN1_STRING_length(name),
                      AltNameOption::NONE,
                      prefix);
       }
@@ -911,11 +918,14 @@ bool PrintGeneralName(const BIOPointer& out, const GENERAL_NAME* gen) {
 }
 }  // namespace
 
-bool SafeX509SubjectAltNamePrint(const BIOPointer& out, X509_EXTENSION* ext) {
-  auto ret = OBJ_obj2nid(X509_EXTENSION_get_object(ext));
+bool SafeX509SubjectAltNamePrint(const BIOPointer& out,
+                                 const X509_EXTENSION* ext) {
+  // const_cast needed for OpenSSL < 4.0 which lacks const-correctness
+  auto* mext = const_cast<X509_EXTENSION*>(ext);
+  auto ret = OBJ_obj2nid(X509_EXTENSION_get_object(mext));
   if (ret != NID_subject_alt_name) return false;
 
-  GENERAL_NAMES* names = static_cast<GENERAL_NAMES*>(X509V3_EXT_d2i(ext));
+  GENERAL_NAMES* names = static_cast<GENERAL_NAMES*>(X509V3_EXT_d2i(mext));
   if (names == nullptr) return false;
 
   bool ok = true;
@@ -934,12 +944,14 @@ bool SafeX509SubjectAltNamePrint(const BIOPointer& out, X509_EXTENSION* ext) {
   return ok;
 }
 
-bool SafeX509InfoAccessPrint(const BIOPointer& out, X509_EXTENSION* ext) {
-  auto ret = OBJ_obj2nid(X509_EXTENSION_get_object(ext));
+bool SafeX509InfoAccessPrint(const BIOPointer& out, const X509_EXTENSION* ext) {
+  // const_cast needed for OpenSSL < 4.0 which lacks const-correctness
+  auto* mext = const_cast<X509_EXTENSION*>(ext);
+  auto ret = OBJ_obj2nid(X509_EXTENSION_get_object(mext));
   if (ret != NID_info_access) return false;
 
   AUTHORITY_INFO_ACCESS* descs =
-      static_cast<AUTHORITY_INFO_ACCESS*>(X509V3_EXT_d2i(ext));
+      static_cast<AUTHORITY_INFO_ACCESS*>(X509V3_EXT_d2i(mext));
   if (descs == nullptr) return false;
 
   bool ok = true;
@@ -1083,7 +1095,7 @@ BIOPointer X509View::getValidFrom() const {
   if (cert_ == nullptr) return {};
   BIOPointer bio(BIO_new(BIO_s_mem()));
   if (!bio) return {};
-  ASN1_TIME_print(bio.get(), X509_get_notBefore(cert_));
+  ASN1_TIME_print(bio.get(), X509_get0_notBefore(cert_));
   return bio;
 }
 
@@ -1092,7 +1104,7 @@ BIOPointer X509View::getValidTo() const {
   if (cert_ == nullptr) return {};
   BIOPointer bio(BIO_new(BIO_s_mem()));
   if (!bio) return {};
-  ASN1_TIME_print(bio.get(), X509_get_notAfter(cert_));
+  ASN1_TIME_print(bio.get(), X509_get0_notAfter(cert_));
   return bio;
 }
 
@@ -4643,12 +4655,12 @@ bool X509Name::Iterator::operator!=(const Iterator& other) const {
 std::pair<std::string, std::string> X509Name::Iterator::operator*() const {
   if (loc_ == name_.total_) return {{}, {}};
 
-  X509_NAME_ENTRY* entry = X509_NAME_get_entry(name_, loc_);
+  const X509_NAME_ENTRY* entry = X509_NAME_get_entry(name_, loc_);
   if (entry == nullptr) [[unlikely]]
     return {{}, {}};
 
-  ASN1_OBJECT* name = X509_NAME_ENTRY_get_object(entry);
-  ASN1_STRING* value = X509_NAME_ENTRY_get_data(entry);
+  const ASN1_OBJECT* name = X509_NAME_ENTRY_get_object(entry);
+  const ASN1_STRING* value = X509_NAME_ENTRY_get_data(entry);
 
   if (name == nullptr || value == nullptr) [[unlikely]] {
     return {{}, {}};
diff --git a/deps/ncrypto/ncrypto.h b/deps/ncrypto/ncrypto.h
index 70623d740b72e2..4f86702da88267 100644
--- a/deps/ncrypto/ncrypto.h
+++ b/deps/ncrypto/ncrypto.h
@@ -1582,8 +1582,9 @@ int NoPasswordCallback(char* buf, int size, int rwflag, void* u);
 
 int PasswordCallback(char* buf, int size, int rwflag, void* u);
 
-bool SafeX509SubjectAltNamePrint(const BIOPointer& out, X509_EXTENSION* ext);
-bool SafeX509InfoAccessPrint(const BIOPointer& out, X509_EXTENSION* ext);
+bool SafeX509SubjectAltNamePrint(const BIOPointer& out,
+                                 const X509_EXTENSION* ext);
+bool SafeX509InfoAccessPrint(const BIOPointer& out, const X509_EXTENSION* ext);
 
 // ============================================================================
 // SPKAC
diff --git a/test/parallel/test-tls-client-auth.js b/test/parallel/test-tls-client-auth.js
index 04bf40b9a9e1ac..67aed40914c9fe 100644
--- a/test/parallel/test-tls-client-auth.js
+++ b/test/parallel/test-tls-client-auth.js
@@ -82,8 +82,9 @@ connect({
 }, common.mustCall((err, pair, cleanup) => {
   assert.strictEqual(pair.server.err.code,
                      'ERR_SSL_PEER_DID_NOT_RETURN_A_CERTIFICATE');
-  const expectedErr = hasOpenSSL(3, 2) ?
-    'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE';
+  const expectedErr = hasOpenSSL(4, 0) ?
+    'ERR_SSL_TLS_ALERT_HANDSHAKE_FAILURE' : hasOpenSSL(3, 2) ?
+      'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE';
   assert.strictEqual(pair.client.err.code,
                      expectedErr);
   return cleanup();
diff --git a/test/parallel/test-tls-empty-sni-context.js b/test/parallel/test-tls-empty-sni-context.js
index 79f1ddd341d938..e4136ff71e1d52 100644
--- a/test/parallel/test-tls-empty-sni-context.js
+++ b/test/parallel/test-tls-empty-sni-context.js
@@ -26,8 +26,9 @@ const server = tls.createServer(options, (c) => {
   }, common.mustNotCall());
 
   c.on('error', common.mustCall((err) => {
-    const expectedErr = hasOpenSSL(3, 2) ?
-      'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE';
+    const expectedErr = hasOpenSSL(4, 0) ?
+      'ERR_SSL_TLS_ALERT_HANDSHAKE_FAILURE' : hasOpenSSL(3, 2) ?
+        'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE';
     assert.strictEqual(err.code, expectedErr);
   }));
 }));
diff --git a/test/parallel/test-tls-psk-circuit.js b/test/parallel/test-tls-psk-circuit.js
index 9cbc7a91fb852b..bdf9c86c26a7b6 100644
--- a/test/parallel/test-tls-psk-circuit.js
+++ b/test/parallel/test-tls-psk-circuit.js
@@ -64,8 +64,9 @@ test({ psk: USERS.UserA, identity: 'UserA' }, { minVersion: 'TLSv1.3' });
 test({ psk: USERS.UserB, identity: 'UserB' });
 test({ psk: USERS.UserB, identity: 'UserB' }, { minVersion: 'TLSv1.3' });
 // Unrecognized user should fail handshake
-const expectedHandshakeErr = hasOpenSSL(3, 2) ?
-  'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE';
+const expectedHandshakeErr = hasOpenSSL(4, 0) ?
+  'ERR_SSL_TLS_ALERT_HANDSHAKE_FAILURE' : hasOpenSSL(3, 2) ?
+    'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE';
 test({ psk: USERS.UserB, identity: 'UserC' }, {}, expectedHandshakeErr);
 // Recognized user but incorrect secret should fail handshake
 const expectedIllegalParameterErr = hasOpenSSL(3, 4) ? 'ERR_SSL_TLSV1_ALERT_DECRYPT_ERROR' :
diff --git a/test/parallel/test-tls-set-ciphers.js b/test/parallel/test-tls-set-ciphers.js
index 1e63e9376e134b..82a19bb9e90fc2 100644
--- a/test/parallel/test-tls-set-ciphers.js
+++ b/test/parallel/test-tls-set-ciphers.js
@@ -90,7 +90,9 @@ function test(cciphers, sciphers, cipher, cerr, serr, options) {
 const U = undefined;
 
 let expectedTLSAlertError = 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE';
-if (hasOpenSSL(3, 2)) {
+if (hasOpenSSL(4, 0)) {
+  expectedTLSAlertError = 'ERR_SSL_TLS_ALERT_HANDSHAKE_FAILURE';
+} else if (hasOpenSSL(3, 2)) {
   expectedTLSAlertError = 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE';
 }
 
diff --git a/test/parallel/test-tls-set-sigalgs.js b/test/parallel/test-tls-set-sigalgs.js
index 985ca13ba2ac7d..1bce814f3e8604 100644
--- a/test/parallel/test-tls-set-sigalgs.js
+++ b/test/parallel/test-tls-set-sigalgs.js
@@ -66,8 +66,9 @@ test('RSA-PSS+SHA256:RSA-PSS+SHA512:ECDSA+SHA256',
      ['RSA-PSS+SHA256', 'ECDSA+SHA256']);
 
 // Do not have shared sigalgs.
-const handshakeErr = hasOpenSSL(3, 2) ?
-  'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE';
+const handshakeErr = hasOpenSSL(4, 0) ?
+  'ERR_SSL_TLS_ALERT_HANDSHAKE_FAILURE' : hasOpenSSL(3, 2) ?
+    'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE';
 test('RSA-PSS+SHA384', 'ECDSA+SHA256',
      undefined, handshakeErr,
      'ERR_SSL_NO_SHARED_SIGNATURE_ALGORITHMS');

From 12b04d17d54483dc9865a0f3d41432f69b00e000 Mon Sep 17 00:00:00 2001
From: Rafael Gonzaga <rafael.nunu@hotmail.com>
Date: Thu, 26 Mar 2026 17:59:14 -0300
Subject: [PATCH 230/267] doc: add Rafael to last security release steward
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62423
Refs: https://github.com/nodejs-private/security-release/pull/71
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
---
 doc/contributing/security-release-process.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/contributing/security-release-process.md b/doc/contributing/security-release-process.md
index 1107edc5a68976..ba7dbae378f730 100644
--- a/doc/contributing/security-release-process.md
+++ b/doc/contributing/security-release-process.md
@@ -39,6 +39,7 @@ The current security stewards are documented in the main Node.js
 | NodeSource              | Rafael          | 2025-May-14  |
 | NodeSource              | Rafael          | 2025-Jul-15  |
 | HeroDevs and NodeSource | Marco / Rafael  | 2026-Jan-13  |
+| NodeSource              | Rafael          | 2026-Mar-24  |
 | Datadog                 | Bryan           |              |
 | IBM                     | Joe             |              |
 | Platformatic            | Matteo          |              |

From b93bf7dbfcbd16ab662030c16f4f45391da09333 Mon Sep 17 00:00:00 2001
From: Guy Bedford <gbedford@cloudflare.com>
Date: Mon, 23 Mar 2026 16:26:13 -0700
Subject: [PATCH 231/267] esm: fix source phase identity bug in loadCache
 eviction

PR-URL: https://github.com/nodejs/node/pull/62415
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
---
 lib/internal/modules/esm/module_job.js            | 15 +++++++++++----
 .../test-esm-wasm-source-phase-identity.mjs       | 11 +++++++++++
 .../test-wasm-source-phase-identity-parent.mjs    |  6 ++++++
 .../test-wasm-source-phase-identity.mjs           | 14 ++++++++++++++
 4 files changed, 42 insertions(+), 4 deletions(-)
 create mode 100644 test/es-module/test-esm-wasm-source-phase-identity.mjs
 create mode 100644 test/fixtures/es-modules/test-wasm-source-phase-identity-parent.mjs
 create mode 100644 test/fixtures/es-modules/test-wasm-source-phase-identity.mjs

diff --git a/lib/internal/modules/esm/module_job.js b/lib/internal/modules/esm/module_job.js
index 929577c0da6d08..22032f79e90d44 100644
--- a/lib/internal/modules/esm/module_job.js
+++ b/lib/internal/modules/esm/module_job.js
@@ -145,7 +145,9 @@ class ModuleJobBase {
    */
   syncLink(requestType) {
     // Store itself into the cache first before linking in case there are circular
-    // references in the linking.
+    // references in the linking. Track whether we're overwriting an existing entry
+    // so we know whether to remove the temporary entry in the finally block.
+    const hadPreviousEntry = this.loader.loadCache.get(this.url, this.type) !== undefined;
     this.loader.loadCache.set(this.url, this.type, this);
     const moduleRequests = this.module.getModuleRequests();
     // Modules should be aligned with the moduleRequests array in order.
@@ -169,9 +171,14 @@ class ModuleJobBase {
       }
       this.module.link(modules);
     } finally {
-      // Restore it - if it succeeds, we'll reset in the caller; Otherwise it's
-      // not cached and if the error is caught, subsequent attempt would still fail.
-      this.loader.loadCache.delete(this.url, this.type);
+      if (!hadPreviousEntry) {
+        // Remove the temporary entry. On failure this ensures subsequent attempts
+        // don't return a broken job. On success the caller
+        // (#getOrCreateModuleJobAfterResolve) will re-insert under the correct key.
+        this.loader.loadCache.delete(this.url, this.type);
+      }
+      // If there was a previous entry (ensurePhase() path), leave this in cache -
+      // it is the upgraded job and the caller will not re-insert.
     }
 
     return evaluationDepJobs;
diff --git a/test/es-module/test-esm-wasm-source-phase-identity.mjs b/test/es-module/test-esm-wasm-source-phase-identity.mjs
new file mode 100644
index 00000000000000..2d742dfcff61ab
--- /dev/null
+++ b/test/es-module/test-esm-wasm-source-phase-identity.mjs
@@ -0,0 +1,11 @@
+// Regression test for source phase import identity with mixed eval/source
+// phase imports of the same module in one parent.
+import '../common/index.mjs';
+import { spawnSyncAndAssert } from '../common/child_process.js';
+import * as fixtures from '../common/fixtures.mjs';
+
+spawnSyncAndAssert(
+  process.execPath,
+  ['--no-warnings', fixtures.path('es-modules/test-wasm-source-phase-identity.mjs')],
+  { stdout: '', stderr: '', trim: true }
+);
diff --git a/test/fixtures/es-modules/test-wasm-source-phase-identity-parent.mjs b/test/fixtures/es-modules/test-wasm-source-phase-identity-parent.mjs
new file mode 100644
index 00000000000000..36d5765c17f0ad
--- /dev/null
+++ b/test/fixtures/es-modules/test-wasm-source-phase-identity-parent.mjs
@@ -0,0 +1,6 @@
+import * as mod1 from './simple.wasm';
+import * as mod2 from './simple.wasm';
+import source mod3 from './simple.wasm';
+import source mod4 from './simple.wasm';
+
+export { mod1, mod2, mod3, mod4 };
diff --git a/test/fixtures/es-modules/test-wasm-source-phase-identity.mjs b/test/fixtures/es-modules/test-wasm-source-phase-identity.mjs
new file mode 100644
index 00000000000000..84cf6261139038
--- /dev/null
+++ b/test/fixtures/es-modules/test-wasm-source-phase-identity.mjs
@@ -0,0 +1,14 @@
+import { strictEqual } from 'node:assert';
+
+// Pre-load simple.wasm at kSourcePhase to prime the loadCache.
+const preloaded = await import.source('./simple.wasm');
+strictEqual(preloaded instanceof WebAssembly.Module, true);
+
+// Import a parent that has both eval-phase and source-phase imports of the
+// same wasm file, which triggers ensurePhase(kEvaluationPhase) on the cached
+// job and exposes the loadCache eviction bug.
+const { mod1, mod2, mod3, mod4 } =
+  await import('./test-wasm-source-phase-identity-parent.mjs');
+
+strictEqual(mod1, mod2, 'two eval-phase imports of the same wasm must be identical');
+strictEqual(mod3, mod4, 'two source-phase imports of the same wasm must be identical');

From b15ea64ed97fa1a26ea0aa31d3f7d882b62b802e Mon Sep 17 00:00:00 2001
From: Matteo Collina <hello@matteocollina.com>
Date: Thu, 26 Mar 2026 23:18:32 +0100
Subject: [PATCH 232/267] zlib: fix use-after-free when reset() is called
 during write

The Reset() method did not check the write_in_progress_ flag before
resetting the compression stream. This allowed reset() to free the
compression library's internal state while a worker thread was still
using it during an async write, causing a use-after-free.

Add a write_in_progress_ guard to Reset() that throws an error if a
write is in progress, matching the existing pattern used by Close()
and Write().

PR-URL: TODO
Refs: https://hackerone.com/reports/3609132
PR-URL: https://github.com/nodejs/node/pull/62325
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 src/node_zlib.cc                              |  6 +++++
 test/parallel/test-zlib-reset-during-write.js | 23 +++++++++++++++++++
 2 files changed, 29 insertions(+)
 create mode 100644 test/parallel/test-zlib-reset-during-write.js

diff --git a/src/node_zlib.cc b/src/node_zlib.cc
index 9d49f13d07c125..792d800847e105 100644
--- a/src/node_zlib.cc
+++ b/src/node_zlib.cc
@@ -644,6 +644,12 @@ class CompressionStream : public AsyncWrap,
     CompressionStream* wrap;
     ASSIGN_OR_RETURN_UNWRAP(&wrap, args.This());
 
+    if (wrap->write_in_progress_) {
+      wrap->env()->ThrowError(
+          "Cannot reset zlib stream while a write is in progress");
+      return;
+    }
+
     AllocScope alloc_scope(wrap);
     const CompressionError err = wrap->context()->ResetStream();
     if (err.IsError())
diff --git a/test/parallel/test-zlib-reset-during-write.js b/test/parallel/test-zlib-reset-during-write.js
new file mode 100644
index 00000000000000..35c4c853e5ea59
--- /dev/null
+++ b/test/parallel/test-zlib-reset-during-write.js
@@ -0,0 +1,23 @@
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const { createBrotliCompress, createDeflate } = require('zlib');
+
+// Tests that calling .reset() while an async write is in progress
+// throws an error instead of causing a use-after-free.
+
+for (const factory of [createBrotliCompress, createDeflate]) {
+  const stream = factory();
+  const input = Buffer.alloc(1024, 0x41);
+
+  stream.write(input, common.mustCall());
+  stream.on('error', common.mustNotCall());
+
+  // The write has been dispatched to the thread pool.
+  // Calling reset while write is in progress must throw.
+  assert.throws(() => {
+    stream._handle.reset();
+  }, {
+    message: 'Cannot reset zlib stream while a write is in progress',
+  });
+}

From f5f21d36a67a12b273ba2f7720ee6bbfd49bac36 Mon Sep 17 00:00:00 2001
From: sangwook <rewq5991@gmail.com>
Date: Sat, 28 Mar 2026 00:52:13 +0900
Subject: [PATCH 233/267] test_runner: add exports option for module mocks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Add options.exports support in mock.module() and normalize option

shapes through a shared exports path.

Keep defaultExport and namedExports as aliases, emit runtime

deprecation warnings for legacy options, and update docs and tests,

including output fixtures and coverage snapshots.

Refs: https://github.com/nodejs/node/issues/58443
PR-URL: https://github.com/nodejs/node/pull/61727
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Pietro Marchini <pietro.marchini94@gmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
---
 doc/api/test.md                               |  20 ++-
 lib/internal/test_runner/mock/loader.js       |   8 +-
 lib/internal/test_runner/mock/mock.js         | 119 ++++++++++---
 .../output/coverage-with-mock-cjs.mjs         |   2 +-
 .../test-runner/output/coverage-with-mock.mjs |   2 +-
 .../output/typescript-coverage.mts            |   6 +-
 .../output/typescript-coverage.snapshot       |   2 +-
 test/parallel/test-runner-module-mocking.js   | 157 +++++++++++++++---
 8 files changed, 256 insertions(+), 60 deletions(-)

diff --git a/doc/api/test.md b/doc/api/test.md
index 8e309ebcc2590c..0da838f8de04f1 100644
--- a/doc/api/test.md
+++ b/doc/api/test.md
@@ -2477,16 +2477,32 @@ changes:
     generates a new mock module. If `true`, subsequent calls will return the same
     module mock, and the mock module is inserted into the CommonJS cache.
     **Default:** false.
+  * `exports` {Object} Optional mocked exports. The `default` property, if
+    provided, is used as the mocked module's default export. All other own
+    enumerable properties are used as named exports.
+    **This option cannot be used with `defaultExport` or `namedExports`.**
+    * If the mock is a CommonJS or builtin module, `exports.default` is used as
+      the value of `module.exports`.
+    * If `exports.default` is not provided for a CommonJS or builtin mock,
+      `module.exports` defaults to an empty object.
+    * If named exports are provided with a non-object default export, the mock
+      throws an exception when used as a CommonJS or builtin module.
   * `defaultExport` {any} An optional value used as the mocked module's default
     export. If this value is not provided, ESM mocks do not include a default
     export. If the mock is a CommonJS or builtin module, this setting is used as
     the value of `module.exports`. If this value is not provided, CJS and builtin
     mocks use an empty object as the value of `module.exports`.
+    **This option cannot be used with `options.exports`.**
+    This option is deprecated and will be removed in a later version.
+    Prefer `options.exports.default`.
   * `namedExports` {Object} An optional object whose keys and values are used to
     create the named exports of the mock module. If the mock is a CommonJS or
     builtin module, these values are copied onto `module.exports`. Therefore, if a
     mock is created with both named exports and a non-object default export, the
     mock will throw an exception when used as a CJS or builtin module.
+    **This option cannot be used with `options.exports`.**
+    This option is deprecated and will be removed in a later version.
+    Prefer `options.exports`.
 * Returns: {MockModuleContext} An object that can be used to manipulate the mock.
 
 This function is used to mock the exports of ECMAScript modules, CommonJS modules, JSON modules, and
@@ -2503,10 +2519,10 @@ The following example demonstrates how a mock is created for a module.
 
 ```js
 test('mocks a builtin module in both module systems', async (t) => {
-  // Create a mock of 'node:readline' with a named export named 'fn', which
+  // Create a mock of 'node:readline' with a named export named 'foo', which
   // does not exist in the original 'node:readline' module.
   const mock = t.mock.module('node:readline', {
-    namedExports: { fn() { return 42; } },
+    exports: { foo: () => 42 },
   });
 
   let esmImpl = await import('node:readline');
diff --git a/lib/internal/test_runner/mock/loader.js b/lib/internal/test_runner/mock/loader.js
index a7a22539be3093..d64ffdfa096559 100644
--- a/lib/internal/test_runner/mock/loader.js
+++ b/lib/internal/test_runner/mock/loader.js
@@ -113,10 +113,10 @@ function defaultExportSource(useESM, hasDefaultExport) {
   if (!hasDefaultExport) {
     return '';
   } else if (useESM) {
-    return 'export default $__exports.defaultExport;';
+    return 'export default $__exports.moduleExports.default;';
   }
 
-  return 'module.exports = $__exports.defaultExport;';
+  return 'module.exports = $__exports.moduleExports.default;';
 }
 
 function namedExportsSource(useESM, exportNames) {
@@ -134,9 +134,9 @@ if (module.exports === null || typeof module.exports !== 'object') {
     const name = exportNames[i];
 
     if (useESM) {
-      source += `export let ${name} = $__exports.namedExports[${JSONStringify(name)}];\n`;
+      source += `export let ${name} = $__exports.moduleExports[${JSONStringify(name)}];\n`;
     } else {
-      source += `module.exports[${JSONStringify(name)}] = $__exports.namedExports[${JSONStringify(name)}];\n`;
+      source += `module.exports[${JSONStringify(name)}] = $__exports.moduleExports[${JSONStringify(name)}];\n`;
     }
   }
 
diff --git a/lib/internal/test_runner/mock/mock.js b/lib/internal/test_runner/mock/mock.js
index 1af24c77a10731..fb1ed322b414fc 100644
--- a/lib/internal/test_runner/mock/mock.js
+++ b/lib/internal/test_runner/mock/mock.js
@@ -1,10 +1,12 @@
 'use strict';
 const {
+  ArrayPrototypeFilter,
   ArrayPrototypePush,
   ArrayPrototypeSlice,
   Error,
   FunctionPrototypeBind,
   FunctionPrototypeCall,
+  ObjectAssign,
   ObjectDefineProperty,
   ObjectGetOwnPropertyDescriptor,
   ObjectGetPrototypeOf,
@@ -33,6 +35,7 @@ const {
   URLParse,
 } = require('internal/url');
 const {
+  deprecateProperty,
   emitExperimentalWarning,
   getStructuredStack,
   kEmptyObject,
@@ -61,6 +64,14 @@ const kSupportedFormats = [
   'module',
 ];
 let sharedModuleState;
+const deprecateNamedExports = deprecateProperty(
+  'namedExports',
+  'mock.module(): options.namedExports is deprecated. Use options.exports instead.',
+);
+const deprecateDefaultExport = deprecateProperty(
+  'defaultExport',
+  'mock.module(): options.defaultExport is deprecated. Use options.exports.default instead.',
+);
 const {
   hooks: mockHooks,
   mocks,
@@ -185,20 +196,16 @@ class MockModuleContext {
     baseURL,
     cache,
     caller,
-    defaultExport,
     format,
     fullPath,
-    hasDefaultExport,
-    namedExports,
+    moduleExports,
     sharedState,
     specifier,
   }) {
     const config = {
       __proto__: null,
       cache,
-      defaultExport,
-      hasDefaultExport,
-      namedExports,
+      moduleExports,
       caller,
     };
 
@@ -230,8 +237,8 @@ class MockModuleContext {
         __proto__: null,
         url: baseURL,
         cache,
-        exportNames: ObjectKeys(namedExports),
-        hasDefaultExport,
+        exportNames: ArrayPrototypeFilter(ObjectKeys(moduleExports), (k) => k !== 'default'),
+        hasDefaultExport: 'default' in moduleExports,
         format,
         localVersion,
         active: true,
@@ -241,8 +248,7 @@ class MockModuleContext {
     delete Module._cache[fullPath];
     sharedState.mockExports.set(baseURL, {
       __proto__: null,
-      defaultExport,
-      namedExports,
+      moduleExports,
     });
   }
 
@@ -627,14 +633,9 @@ class MockTracker {
     debug('module mock entry, specifier = "%s", options = %o', specifier, options);
 
     const {
-      cache = false,
-      namedExports = kEmptyObject,
-      defaultExport,
-    } = options;
-    const hasDefaultExport = 'defaultExport' in options;
-
-    validateBoolean(cache, 'options.cache');
-    validateObject(namedExports, 'options.namedExports');
+      cache,
+      moduleExports,
+    } = normalizeModuleMockOptions(options);
 
     const sharedState = setupSharedModuleState();
     const mockSpecifier = StringPrototypeStartsWith(specifier, 'node:') ?
@@ -673,11 +674,9 @@ class MockTracker {
       baseURL: baseURL.href,
       cache,
       caller,
-      defaultExport,
       format,
       fullPath,
-      hasDefaultExport,
-      namedExports,
+      moduleExports,
       sharedState,
       specifier: mockSpecifier,
     });
@@ -816,6 +815,73 @@ class MockTracker {
   }
 }
 
+function normalizeModuleMockOptions(options) {
+  const { cache = false } = options;
+  validateBoolean(cache, 'options.cache');
+
+  const hasExports = 'exports' in options;
+  const hasNamedExports = 'namedExports' in options;
+  const hasDefaultExport = 'defaultExport' in options;
+
+  deprecateNamedExports(options);
+  deprecateDefaultExport(options);
+
+  const moduleExports = { __proto__: null };
+
+  if (hasExports) {
+    validateObject(options.exports, 'options.exports');
+  }
+
+  if (hasNamedExports) {
+    validateObject(options.namedExports, 'options.namedExports');
+  }
+
+  if (hasExports && (hasNamedExports || hasDefaultExport)) {
+    let reason = "cannot be used with 'options.namedExports'";
+
+    if (hasDefaultExport) {
+      reason = hasNamedExports ?
+        "cannot be used with 'options.namedExports' or 'options.defaultExport'" :
+        "cannot be used with 'options.defaultExport'";
+    }
+
+    throw new ERR_INVALID_ARG_VALUE('options.exports', options.exports, reason);
+  }
+
+  if (hasExports) {
+    copyOwnProperties(options.exports, moduleExports);
+  }
+
+  if (hasNamedExports) {
+    copyOwnProperties(options.namedExports, moduleExports);
+  }
+
+  if (hasDefaultExport) {
+    ObjectDefineProperty(
+      moduleExports,
+      'default',
+      ObjectAssign({ __proto__: null }, ObjectGetOwnPropertyDescriptor(options, 'defaultExport')),
+    );
+  }
+
+  return {
+    __proto__: null,
+    cache,
+    moduleExports,
+  };
+}
+
+
+function copyOwnProperties(from, to) {
+  const keys = ObjectKeys(from);
+
+  for (let i = 0; i < keys.length; ++i) {
+    const key = keys[i];
+    const descriptor = ObjectGetOwnPropertyDescriptor(from, key);
+    ObjectDefineProperty(to, key, descriptor);
+  }
+}
+
 function setupSharedModuleState() {
   if (sharedModuleState === undefined) {
     const { mock } = require('test');
@@ -855,9 +921,7 @@ function cjsMockModuleLoad(request, parent, isMain) {
   const {
     cache,
     caller,
-    defaultExport,
-    hasDefaultExport,
-    namedExports,
+    moduleExports,
   } = config;
 
   if (cache && Module._cache[resolved]) {
@@ -866,9 +930,10 @@ function cjsMockModuleLoad(request, parent, isMain) {
     return Module._cache[resolved].exports;
   }
 
+  const hasDefaultExport = 'default' in moduleExports;
   // eslint-disable-next-line node-core/set-proto-to-null-in-object
-  const modExports = hasDefaultExport ? defaultExport : {};
-  const exportNames = ObjectKeys(namedExports);
+  const modExports = hasDefaultExport ? moduleExports.default : {};
+  const exportNames = ArrayPrototypeFilter(ObjectKeys(moduleExports), (k) => k !== 'default');
 
   if ((typeof modExports !== 'object' || modExports === null) &&
       exportNames.length > 0) {
@@ -878,7 +943,7 @@ function cjsMockModuleLoad(request, parent, isMain) {
 
   for (let i = 0; i < exportNames.length; ++i) {
     const name = exportNames[i];
-    const descriptor = ObjectGetOwnPropertyDescriptor(namedExports, name);
+    const descriptor = ObjectGetOwnPropertyDescriptor(moduleExports, name);
     ObjectDefineProperty(modExports, name, descriptor);
   }
 
diff --git a/test/fixtures/test-runner/output/coverage-with-mock-cjs.mjs b/test/fixtures/test-runner/output/coverage-with-mock-cjs.mjs
index 4841aa03e6904a..9acf8019f789ea 100644
--- a/test/fixtures/test-runner/output/coverage-with-mock-cjs.mjs
+++ b/test/fixtures/test-runner/output/coverage-with-mock-cjs.mjs
@@ -1,7 +1,7 @@
 import { mock, test } from 'node:test';
 
 const dependency = mock.fn(() => 'mock-return-value');
-mock.module('../coverage-with-mock/dependency.cjs', { namedExports: { dependency } });
+mock.module('../coverage-with-mock/dependency.cjs', { exports: { dependency } });
 
 const { subject } = await import('../coverage-with-mock/subject.mjs');
 
diff --git a/test/fixtures/test-runner/output/coverage-with-mock.mjs b/test/fixtures/test-runner/output/coverage-with-mock.mjs
index 5d5b2b14f66a95..e3b8fcc473f450 100644
--- a/test/fixtures/test-runner/output/coverage-with-mock.mjs
+++ b/test/fixtures/test-runner/output/coverage-with-mock.mjs
@@ -2,7 +2,7 @@ import { describe, it, mock } from 'node:test';
 
 describe('module test with mock', async () => {
   mock.module('../coverage-with-mock/sum.js', {
-    namedExports: {
+    exports: {
       sum: (a, b) => 1,
       getData: () => ({}),
     },
diff --git a/test/fixtures/test-runner/output/typescript-coverage.mts b/test/fixtures/test-runner/output/typescript-coverage.mts
index c26ddcac9b33f9..5498d5f83831a1 100644
--- a/test/fixtures/test-runner/output/typescript-coverage.mts
+++ b/test/fixtures/test-runner/output/typescript-coverage.mts
@@ -10,8 +10,10 @@ describe('foo', { concurrency: true }, () => {
             .then(({ default: _, ...rest }) => rest);
 
         mock.module('../coverage/bar.mts', {
-            defaultExport: barMock,
-            namedExports: barNamedExports,
+            exports: {
+                ...barNamedExports,
+                default: barMock,
+            },
         });
 
         ({ foo } = await import('../coverage/foo.mts'));
diff --git a/test/fixtures/test-runner/output/typescript-coverage.snapshot b/test/fixtures/test-runner/output/typescript-coverage.snapshot
index 25546c9a5d0060..d31a59c5be61a3 100644
--- a/test/fixtures/test-runner/output/typescript-coverage.snapshot
+++ b/test/fixtures/test-runner/output/typescript-coverage.snapshot
@@ -34,6 +34,6 @@ ok 1 - foo
 #    output                   |        |          |         |
 #     typescript-coverage.mts | 100.00 |   100.00 |  100.00 |
 # ----------------------------------------------------------------------------
-# all files                   |  93.55 |   100.00 |   85.71 |
+# all files                   |  93.94 |   100.00 |   85.71 |
 # ----------------------------------------------------------------------------
 # end of coverage report
diff --git a/test/parallel/test-runner-module-mocking.js b/test/parallel/test-runner-module-mocking.js
index dcb6f84597fe71..7f2c76663ba29c 100644
--- a/test/parallel/test-runner-module-mocking.js
+++ b/test/parallel/test-runner-module-mocking.js
@@ -39,6 +39,42 @@ test('input validation', async (t) => {
       });
     }, { code: 'ERR_INVALID_ARG_TYPE' });
   });
+
+  await t.test('throws if exports is not an object', async (t) => {
+    assert.throws(() => {
+      t.mock.module(__filename, {
+        exports: null,
+      });
+    }, { code: 'ERR_INVALID_ARG_TYPE' });
+  });
+
+  await t.test('throws if exports is used with namedExports', async (t) => {
+    assert.throws(() => {
+      t.mock.module(__filename, {
+        exports: {},
+        namedExports: {},
+      });
+    }, { code: 'ERR_INVALID_ARG_VALUE' });
+  });
+
+  await t.test('throws if exports is used with defaultExport', async (t) => {
+    assert.throws(() => {
+      t.mock.module(__filename, {
+        exports: {},
+        defaultExport: {},
+      });
+    }, { code: 'ERR_INVALID_ARG_VALUE' });
+  });
+
+  await t.test('throws if exports is used with both legacy options', async (t) => {
+    assert.throws(() => {
+      t.mock.module(__filename, {
+        exports: {},
+        namedExports: {},
+        defaultExport: {},
+      });
+    }, { code: 'ERR_INVALID_ARG_VALUE' });
+  });
 });
 
 test('core module mocking with namedExports option', async (t) => {
@@ -517,42 +553,33 @@ test('mocks can be restored independently', async (t) => {
   assert.strictEqual(esmImpl.fn, undefined);
 });
 
-test('core module mocks can be used by both module systems', async (t) => {
-  const coreMock = t.mock.module('readline', {
-    namedExports: { fn() { return 42; } },
-  });
+async function assertCoreModuleMockWorksInBothModuleSystems(t, specifier, options) {
+  const coreMock = t.mock.module(specifier, options);
 
-  let esmImpl = await import('readline');
-  let cjsImpl = require('readline');
+  let esmImpl = await import(specifier);
+  let cjsImpl = require(specifier);
 
   assert.strictEqual(esmImpl.fn(), 42);
   assert.strictEqual(cjsImpl.fn(), 42);
 
   coreMock.restore();
-  esmImpl = await import('readline');
-  cjsImpl = require('readline');
+  esmImpl = await import(specifier);
+  cjsImpl = require(specifier);
 
   assert.strictEqual(typeof esmImpl.cursorTo, 'function');
   assert.strictEqual(typeof cjsImpl.cursorTo, 'function');
+}
+
+test('core module mocks can be used by both module systems', async (t) => {
+  await assertCoreModuleMockWorksInBothModuleSystems(t, 'readline', {
+    namedExports: { fn() { return 42; } },
+  });
 });
 
 test('node:- core module mocks can be used by both module systems', async (t) => {
-  const coreMock = t.mock.module('node:readline', {
+  await assertCoreModuleMockWorksInBothModuleSystems(t, 'node:readline', {
     namedExports: { fn() { return 42; } },
   });
-
-  let esmImpl = await import('node:readline');
-  let cjsImpl = require('node:readline');
-
-  assert.strictEqual(esmImpl.fn(), 42);
-  assert.strictEqual(cjsImpl.fn(), 42);
-
-  coreMock.restore();
-  esmImpl = await import('node:readline');
-  cjsImpl = require('node:readline');
-
-  assert.strictEqual(typeof esmImpl.cursorTo, 'function');
-  assert.strictEqual(typeof cjsImpl.cursorTo, 'function');
 });
 
 test('CJS mocks can be used by both module systems', async (t) => {
@@ -666,6 +693,92 @@ test('defaultExports work with ESM mocks in both module systems', async (t) => {
   assert.strictEqual(require(fixturePath), defaultExport);
 });
 
+test('exports option works with core module mocks in both module systems', async (t) => {
+  await assertCoreModuleMockWorksInBothModuleSystems(t, 'readline', {
+    exports: { fn() { return 42; } },
+  });
+});
+
+async function assertGetterMockWorksInBothSystems(t, mockOptionsFactory) {
+  const fixturePath = fixtures.path('module-mocking', 'basic-esm.mjs');
+  const fixture = pathToFileURL(fixturePath);
+  const original = await import(fixture);
+  let getterCalls = 0;
+
+  assert.strictEqual(original.string, 'original esm string');
+
+  const options = mockOptionsFactory(() => {
+    getterCalls++;
+    return { mocked: true };
+  });
+
+  t.mock.module(`${fixture}`, options);
+
+  assert.deepStrictEqual((await import(fixture)).default, { mocked: true });
+  assert.deepStrictEqual(require(fixturePath), { mocked: true });
+  assert.strictEqual(getterCalls, 2);
+}
+
+test('defaultExports getter works in both module systems', async (t) => {
+  await assertGetterMockWorksInBothSystems(t, (getter) => ({
+    get defaultExport() {
+      return getter();
+    },
+  }));
+});
+
+test('exports.default getter works in both module systems', async (t) => {
+  await assertGetterMockWorksInBothSystems(t, (getter) => ({
+    exports: {
+      get default() {
+        return getter();
+      },
+    },
+  }));
+});
+test('exports option supports default for CJS mocks in both module systems', async (t) => {
+  const fixturePath = fixtures.path('module-mocking', 'basic-cjs.js');
+  const fixture = pathToFileURL(fixturePath);
+  const defaultExport = { val1: 5, val2: 3 };
+
+  t.mock.module(fixture, {
+    exports: {
+      default: defaultExport,
+      val1: 'mock value',
+    },
+  });
+
+  const cjsMock = require(fixturePath);
+  const esmMock = await import(fixture);
+
+  assert.strictEqual(cjsMock, defaultExport);
+  assert.strictEqual(esmMock.default, defaultExport);
+  assert.strictEqual(cjsMock.val1, 'mock value');
+  assert.strictEqual(esmMock.val1, 'mock value');
+  assert.strictEqual(cjsMock.val2, 3);
+});
+
+test('exports option supports default for ESM mocks in both module systems', async (t) => {
+  const fixturePath = fixtures.path('module-mocking', 'basic-esm.mjs');
+  const fixture = pathToFileURL(fixturePath);
+  const defaultExport = { mocked: true };
+
+  t.mock.module(fixture, {
+    exports: {
+      default: defaultExport,
+      val1: 'mock value',
+    },
+  });
+
+  const esmMock = await import(fixture);
+  const cjsMock = require(fixturePath);
+
+  assert.strictEqual(esmMock.default, defaultExport);
+  assert.strictEqual(esmMock.val1, 'mock value');
+  assert.strictEqual(cjsMock, defaultExport);
+  assert.strictEqual(cjsMock.val1, 'mock value');
+});
+
 test('wrong import syntax should throw error after module mocking', async () => {
   const { stdout, stderr, code } = await common.spawnPromisified(
     process.execPath,

From a6ced7d2726a5307159e8539fec147aa9d8d08ac Mon Sep 17 00:00:00 2001
From: Ali Hassan <24819103+thisalihassan@users.noreply.github.com>
Date: Sat, 28 Mar 2026 02:50:58 +0500
Subject: [PATCH 234/267] buffer: improve performance of multiple Buffer
 operations

- copyBytesFrom: calculate byte offsets directly instead of
  slicing into an intermediate typed array
- toString('hex'): use V8 Uint8Array.prototype.toHex() builtin
- fill: add single-char ASCII fast path
- indexOf: use indexOfString directly for ASCII encoding
- swap16/32/64: add V8 Fast API functions

PR-URL: https://github.com/nodejs/node/pull/61871
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
---
 benchmark/buffers/buffer-bytelength-string.js |   2 +-
 benchmark/buffers/buffer-copy-bytes-from.js   |  31 +++++
 benchmark/buffers/buffer-fill.js              |   1 +
 benchmark/buffers/buffer-indexof.js           |   2 +-
 benchmark/buffers/buffer-tostring.js          |   2 +-
 lib/buffer.js                                 | 121 ++++++++++--------
 src/node_buffer.cc                            |  57 +++++++--
 test/parallel/test-buffer-from.js             |  39 ++++++
 test/parallel/test-buffer-swap-fast.js        |  55 ++++++++
 test/parallel/test-buffer-tostring-range.js   |  40 ++++++
 10 files changed, 280 insertions(+), 70 deletions(-)
 create mode 100644 benchmark/buffers/buffer-copy-bytes-from.js
 create mode 100644 test/parallel/test-buffer-swap-fast.js

diff --git a/benchmark/buffers/buffer-bytelength-string.js b/benchmark/buffers/buffer-bytelength-string.js
index 557bc8d6fe38d6..65d92cb6f1cbba 100644
--- a/benchmark/buffers/buffer-bytelength-string.js
+++ b/benchmark/buffers/buffer-bytelength-string.js
@@ -4,7 +4,7 @@ const common = require('../common');
 const bench = common.createBenchmark(main, {
   type: ['one_byte', 'two_bytes', 'three_bytes',
          'four_bytes', 'latin1'],
-  encoding: ['utf8', 'base64'],
+  encoding: ['utf8', 'base64', 'latin1', 'hex'],
   repeat: [1, 2, 16, 256], // x16
   n: [4e6],
 });
diff --git a/benchmark/buffers/buffer-copy-bytes-from.js b/benchmark/buffers/buffer-copy-bytes-from.js
new file mode 100644
index 00000000000000..508092264f3a43
--- /dev/null
+++ b/benchmark/buffers/buffer-copy-bytes-from.js
@@ -0,0 +1,31 @@
+'use strict';
+
+const common = require('../common.js');
+
+const bench = common.createBenchmark(main, {
+  type: ['Uint8Array', 'Uint16Array', 'Uint32Array', 'Float64Array'],
+  len: [64, 256, 2048],
+  partial: ['none', 'offset', 'offset-length'],
+  n: [6e5],
+});
+
+function main({ n, len, type, partial }) {
+  const TypedArrayCtor = globalThis[type];
+  const src = new TypedArrayCtor(len);
+  for (let i = 0; i < len; i++) src[i] = i;
+
+  let offset;
+  let length;
+  if (partial === 'offset') {
+    offset = len >>> 2;
+  } else if (partial === 'offset-length') {
+    offset = len >>> 2;
+    length = len >>> 1;
+  }
+
+  bench.start();
+  for (let i = 0; i < n; i++) {
+    Buffer.copyBytesFrom(src, offset, length);
+  }
+  bench.end(n);
+}
diff --git a/benchmark/buffers/buffer-fill.js b/benchmark/buffers/buffer-fill.js
index f1ae896843eee0..95e584e246af73 100644
--- a/benchmark/buffers/buffer-fill.js
+++ b/benchmark/buffers/buffer-fill.js
@@ -10,6 +10,7 @@ const bench = common.createBenchmark(main, {
     'fill("t")',
     'fill("test")',
     'fill("t", "utf8")',
+    'fill("t", "ascii")',
     'fill("t", 0, "utf8")',
     'fill("t", 0)',
     'fill(Buffer.alloc(1), 0)',
diff --git a/benchmark/buffers/buffer-indexof.js b/benchmark/buffers/buffer-indexof.js
index be6cc243a975da..ac5dffdd6d9103 100644
--- a/benchmark/buffers/buffer-indexof.js
+++ b/benchmark/buffers/buffer-indexof.js
@@ -19,7 +19,7 @@ const searchStrings = [
 
 const bench = common.createBenchmark(main, {
   search: searchStrings,
-  encoding: ['undefined', 'utf8', 'ucs2', 'latin1'],
+  encoding: ['undefined', 'utf8', 'ascii', 'latin1', 'ucs2'],
   type: ['buffer', 'string'],
   n: [5e4],
 }, {
diff --git a/benchmark/buffers/buffer-tostring.js b/benchmark/buffers/buffer-tostring.js
index 0638dc996b39ac..64d2373d49980d 100644
--- a/benchmark/buffers/buffer-tostring.js
+++ b/benchmark/buffers/buffer-tostring.js
@@ -3,7 +3,7 @@
 const common = require('../common.js');
 
 const bench = common.createBenchmark(main, {
-  encoding: ['', 'utf8', 'ascii', 'latin1', 'hex', 'UCS-2'],
+  encoding: ['', 'utf8', 'ascii', 'latin1', 'hex', 'base64', 'base64url', 'UCS-2'],
   args: [0, 1, 3],
   len: [1, 64, 1024],
   n: [1e6],
diff --git a/lib/buffer.js b/lib/buffer.js
index 5ee849edc1d563..5124d60fe01099 100644
--- a/lib/buffer.js
+++ b/lib/buffer.js
@@ -50,7 +50,6 @@ const {
   TypedArrayPrototypeGetByteOffset,
   TypedArrayPrototypeGetLength,
   TypedArrayPrototypeSet,
-  TypedArrayPrototypeSlice,
   TypedArrayPrototypeSubarray,
   Uint8Array,
   Uint8ArrayPrototype,
@@ -385,28 +384,33 @@ Buffer.copyBytesFrom = function copyBytesFrom(view, offset, length) {
     return new FastBuffer();
   }
 
-  if (offset !== undefined || length !== undefined) {
-    if (offset !== undefined) {
-      validateInteger(offset, 'offset', 0);
-      if (offset >= viewLength) return new FastBuffer();
-    } else {
-      offset = 0;
-    }
-    let end;
-    if (length !== undefined) {
-      validateInteger(length, 'length', 0);
-      end = offset + length;
-    } else {
-      end = viewLength;
-    }
+  let start = 0;
+  let end = viewLength;
 
-    view = TypedArrayPrototypeSlice(view, offset, end);
+  if (offset !== undefined) {
+    validateInteger(offset, 'offset', 0);
+    if (offset >= viewLength) return new FastBuffer();
+    start = offset;
   }
 
+  if (length !== undefined) {
+    validateInteger(length, 'length', 0);
+    // The old code used TypedArrayPrototypeSlice which clamps internally.
+    end = MathMin(start + length, viewLength);
+  }
+
+  if (end <= start) return new FastBuffer();
+
+  const viewByteLength = TypedArrayPrototypeGetByteLength(view);
+  const elementSize = viewByteLength / viewLength;
+  const srcByteOffset = TypedArrayPrototypeGetByteOffset(view) +
+                        start * elementSize;
+  const srcByteLength = (end - start) * elementSize;
+
   return fromArrayLike(new Uint8Array(
     TypedArrayPrototypeGetBuffer(view),
-    TypedArrayPrototypeGetByteOffset(view),
-    TypedArrayPrototypeGetByteLength(view)));
+    srcByteOffset,
+    srcByteLength));
 };
 
 // Identical to the built-in %TypedArray%.of(), but avoids using the deprecated
@@ -563,14 +567,15 @@ function fromArrayBuffer(obj, byteOffset, length) {
 }
 
 function fromArrayLike(obj) {
-  if (obj.length <= 0)
+  const { length } = obj;
+  if (length <= 0)
     return new FastBuffer();
-  if (obj.length < (Buffer.poolSize >>> 1)) {
-    if (obj.length > (poolSize - poolOffset))
+  if (length < (Buffer.poolSize >>> 1)) {
+    if (length > (poolSize - poolOffset))
       createPool();
-    const b = new FastBuffer(allocPool, poolOffset, obj.length);
+    const b = new FastBuffer(allocPool, poolOffset, length);
     TypedArrayPrototypeSet(b, obj, 0);
-    poolOffset += obj.length;
+    poolOffset += length;
     alignPool();
     return b;
   }
@@ -744,11 +749,7 @@ const encodingOps = {
     write: asciiWrite,
     slice: asciiSlice,
     indexOf: (buf, val, byteOffset, dir) =>
-      indexOfBuffer(buf,
-                    fromStringFast(val, encodingOps.ascii),
-                    byteOffset,
-                    encodingsMap.ascii,
-                    dir),
+      indexOfString(buf, val, byteOffset, encodingsMap.ascii, dir),
   },
   base64: {
     encoding: 'base64',
@@ -909,17 +910,17 @@ Buffer.prototype.toString = function toString(encoding, start, end) {
     return utf8Slice(this, 0, this.length);
   }
 
-  const len = this.length;
+  const bufferLength = TypedArrayPrototypeGetLength(this);
 
   if (start <= 0)
     start = 0;
-  else if (start >= len)
+  else if (start >= bufferLength)
     return '';
   else
     start = MathTrunc(start) || 0;
 
-  if (end === undefined || end > len)
-    end = len;
+  if (end === undefined || end > bufferLength)
+    end = bufferLength;
   else
     end = MathTrunc(end) || 0;
 
@@ -1130,7 +1131,9 @@ function _fill(buf, value, offset, end, encoding) {
       value = 0;
     } else if (value.length === 1) {
       // Fast path: If `value` fits into a single byte, use that numeric value.
-      if (normalizedEncoding === 'utf8') {
+      // ASCII shares this branch with utf8 since code < 128 covers the full
+      // ASCII range; anything outside falls through to C++ bindingFill.
+      if (normalizedEncoding === 'utf8' || normalizedEncoding === 'ascii') {
         const code = StringPrototypeCharCodeAt(value, 0);
         if (code < 128) {
           value = code;
@@ -1180,21 +1183,22 @@ function _fill(buf, value, offset, end, encoding) {
 }
 
 Buffer.prototype.write = function write(string, offset, length, encoding) {
+  const bufferLength = TypedArrayPrototypeGetLength(this);
   // Buffer#write(string);
   if (offset === undefined) {
-    return utf8Write(this, string, 0, this.length);
+    return utf8Write(this, string, 0, bufferLength);
   }
   // Buffer#write(string, encoding)
   if (length === undefined && typeof offset === 'string') {
     encoding = offset;
-    length = this.length;
+    length = bufferLength;
     offset = 0;
 
   // Buffer#write(string, offset[, length][, encoding])
   } else {
-    validateOffset(offset, 'offset', 0, this.length);
+    validateOffset(offset, 'offset', 0, bufferLength);
 
-    const remaining = this.length - offset;
+    const remaining = bufferLength - offset;
 
     if (length === undefined) {
       length = remaining;
@@ -1202,7 +1206,7 @@ Buffer.prototype.write = function write(string, offset, length, encoding) {
       encoding = length;
       length = remaining;
     } else {
-      validateOffset(length, 'length', 0, this.length);
+      validateOffset(length, 'length', 0, bufferLength);
       if (length > remaining)
         length = remaining;
     }
@@ -1220,9 +1224,10 @@ Buffer.prototype.write = function write(string, offset, length, encoding) {
 };
 
 Buffer.prototype.toJSON = function toJSON() {
-  if (this.length > 0) {
-    const data = new Array(this.length);
-    for (let i = 0; i < this.length; ++i)
+  const bufferLength = TypedArrayPrototypeGetLength(this);
+  if (bufferLength > 0) {
+    const data = new Array(bufferLength);
+    for (let i = 0; i < bufferLength; ++i)
       data[i] = this[i];
     return { type: 'Buffer', data };
   }
@@ -1247,7 +1252,7 @@ function adjustOffset(offset, length) {
 }
 
 Buffer.prototype.subarray = function subarray(start, end) {
-  const srcLength = this.length;
+  const srcLength = TypedArrayPrototypeGetLength(this);
   start = adjustOffset(start, srcLength);
   end = end !== undefined ? adjustOffset(end, srcLength) : srcLength;
   const newLength = end > start ? end - start : 0;
@@ -1265,45 +1270,52 @@ function swap(b, n, m) {
 }
 
 Buffer.prototype.swap16 = function swap16() {
-  // For Buffer.length < 128, it's generally faster to
+  // Ref: https://github.com/nodejs/node/pull/61871#discussion_r2889557696
+  // For Buffer.length <= 32, it's generally faster to
   // do the swap in javascript. For larger buffers,
   // dropping down to the native code is faster.
-  const len = this.length;
+  const len = TypedArrayPrototypeGetLength(this);
   if (len % 2 !== 0)
     throw new ERR_INVALID_BUFFER_SIZE('16-bits');
-  if (len < 128) {
+  if (len <= 32) {
     for (let i = 0; i < len; i += 2)
       swap(this, i, i + 1);
     return this;
   }
-  return _swap16(this);
+  _swap16(this);
+  return this;
 };
 
 Buffer.prototype.swap32 = function swap32() {
-  // For Buffer.length < 192, it's generally faster to
+  // Ref: https://github.com/nodejs/node/pull/61871#discussion_r2889557696
+  // For Buffer.length <= 32, it's generally faster to
   // do the swap in javascript. For larger buffers,
   // dropping down to the native code is faster.
-  const len = this.length;
+  const len = TypedArrayPrototypeGetLength(this);
   if (len % 4 !== 0)
     throw new ERR_INVALID_BUFFER_SIZE('32-bits');
-  if (len < 192) {
+  if (len <= 32) {
     for (let i = 0; i < len; i += 4) {
       swap(this, i, i + 3);
       swap(this, i + 1, i + 2);
     }
     return this;
   }
-  return _swap32(this);
+  _swap32(this);
+  return this;
 };
 
 Buffer.prototype.swap64 = function swap64() {
-  // For Buffer.length < 192, it's generally faster to
+  // Ref: https://github.com/nodejs/node/pull/61871#discussion_r2889557696
+  // For Buffer.length < 48, it's generally faster to
   // do the swap in javascript. For larger buffers,
   // dropping down to the native code is faster.
-  const len = this.length;
+  // Threshold differs from swap16/swap32 (<=32) because swap64's
+  // crossover is between 40 and 48 (native wins at 48, loses at 40).
+  const len = TypedArrayPrototypeGetLength(this);
   if (len % 8 !== 0)
     throw new ERR_INVALID_BUFFER_SIZE('64-bits');
-  if (len < 192) {
+  if (len < 48) {
     for (let i = 0; i < len; i += 8) {
       swap(this, i, i + 7);
       swap(this, i + 1, i + 6);
@@ -1312,7 +1324,8 @@ Buffer.prototype.swap64 = function swap64() {
     }
     return this;
   }
-  return _swap64(this);
+  _swap64(this);
+  return this;
 };
 
 Buffer.prototype.toLocaleString = Buffer.prototype.toString;
diff --git a/src/node_buffer.cc b/src/node_buffer.cc
index acf4aff37c5a9c..362ac268483ea3 100644
--- a/src/node_buffer.cc
+++ b/src/node_buffer.cc
@@ -1050,7 +1050,7 @@ void IndexOfString(const FunctionCallbackInfo<Value>& args) {
         needle_length,
         offset,
         is_forward);
-  } else if (enc == LATIN1) {
+  } else if (enc == ASCII || enc == LATIN1) {
     MaybeStackBuffer<uint8_t> needle_data(needle_length);
     StringBytes::Write(isolate,
                        reinterpret_cast<char*>(needle_data.out()),
@@ -1196,31 +1196,59 @@ int32_t FastIndexOfNumber(Local<Value>,
 static CFunction fast_index_of_number(CFunction::Make(FastIndexOfNumber));
 
 void Swap16(const FunctionCallbackInfo<Value>& args) {
-  Environment* env = Environment::GetCurrent(args);
-  THROW_AND_RETURN_UNLESS_BUFFER(env, args[0]);
+  DCHECK(args[0]->IsArrayBufferView());
   SPREAD_BUFFER_ARG(args[0], ts_obj);
   CHECK(nbytes::SwapBytes16(ts_obj_data, ts_obj_length));
-  args.GetReturnValue().Set(args[0]);
 }
 
+void FastSwap16(Local<Value> receiver,
+                Local<Value> buffer_obj,
+                // NOLINTNEXTLINE(runtime/references)
+                FastApiCallbackOptions& options) {
+  TRACK_V8_FAST_API_CALL("buffer.swap16");
+  HandleScope scope(options.isolate);
+  SPREAD_BUFFER_ARG(buffer_obj, ts_obj);
+  CHECK(nbytes::SwapBytes16(ts_obj_data, ts_obj_length));
+}
+
+static CFunction fast_swap16(CFunction::Make(FastSwap16));
 
 void Swap32(const FunctionCallbackInfo<Value>& args) {
-  Environment* env = Environment::GetCurrent(args);
-  THROW_AND_RETURN_UNLESS_BUFFER(env, args[0]);
+  DCHECK(args[0]->IsArrayBufferView());
   SPREAD_BUFFER_ARG(args[0], ts_obj);
   CHECK(nbytes::SwapBytes32(ts_obj_data, ts_obj_length));
-  args.GetReturnValue().Set(args[0]);
 }
 
+void FastSwap32(Local<Value> receiver,
+                Local<Value> buffer_obj,
+                // NOLINTNEXTLINE(runtime/references)
+                FastApiCallbackOptions& options) {
+  TRACK_V8_FAST_API_CALL("buffer.swap32");
+  HandleScope scope(options.isolate);
+  SPREAD_BUFFER_ARG(buffer_obj, ts_obj);
+  CHECK(nbytes::SwapBytes32(ts_obj_data, ts_obj_length));
+}
+
+static CFunction fast_swap32(CFunction::Make(FastSwap32));
 
 void Swap64(const FunctionCallbackInfo<Value>& args) {
-  Environment* env = Environment::GetCurrent(args);
-  THROW_AND_RETURN_UNLESS_BUFFER(env, args[0]);
+  DCHECK(args[0]->IsArrayBufferView());
   SPREAD_BUFFER_ARG(args[0], ts_obj);
   CHECK(nbytes::SwapBytes64(ts_obj_data, ts_obj_length));
-  args.GetReturnValue().Set(args[0]);
 }
 
+void FastSwap64(Local<Value> receiver,
+                Local<Value> buffer_obj,
+                // NOLINTNEXTLINE(runtime/references)
+                FastApiCallbackOptions& options) {
+  TRACK_V8_FAST_API_CALL("buffer.swap64");
+  HandleScope scope(options.isolate);
+  SPREAD_BUFFER_ARG(buffer_obj, ts_obj);
+  CHECK(nbytes::SwapBytes64(ts_obj_data, ts_obj_length));
+}
+
+static CFunction fast_swap64(CFunction::Make(FastSwap64));
+
 static void IsUtf8(const FunctionCallbackInfo<Value>& args) {
   Environment* env = Environment::GetCurrent(args);
   CHECK_EQ(args.Length(), 1);
@@ -1619,9 +1647,9 @@ void Initialize(Local<Object> target,
   SetMethodNoSideEffect(
       context, target, "createUnsafeArrayBuffer", CreateUnsafeArrayBuffer);
 
-  SetMethod(context, target, "swap16", Swap16);
-  SetMethod(context, target, "swap32", Swap32);
-  SetMethod(context, target, "swap64", Swap64);
+  SetFastMethod(context, target, "swap16", Swap16, &fast_swap16);
+  SetFastMethod(context, target, "swap32", Swap32, &fast_swap32);
+  SetFastMethod(context, target, "swap64", Swap64, &fast_swap64);
 
   SetMethodNoSideEffect(context, target, "isUtf8", IsUtf8);
   SetMethodNoSideEffect(context, target, "isAscii", IsAscii);
@@ -1690,8 +1718,11 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
   registry->Register(IndexOfString);
 
   registry->Register(Swap16);
+  registry->Register(fast_swap16);
   registry->Register(Swap32);
+  registry->Register(fast_swap32);
   registry->Register(Swap64);
+  registry->Register(fast_swap64);
 
   registry->Register(IsUtf8);
   registry->Register(IsAscii);
diff --git a/test/parallel/test-buffer-from.js b/test/parallel/test-buffer-from.js
index 6c08b973e6ab41..b8f4a5d2a2a67b 100644
--- a/test/parallel/test-buffer-from.js
+++ b/test/parallel/test-buffer-from.js
@@ -140,5 +140,44 @@ assert.throws(() => {
   })
 );
 
+// copyBytesFrom: length exceeds view (should clamp, not throw)
+{
+  const u8 = new Uint8Array([1, 2, 3, 4, 5]);
+  const b = Buffer.copyBytesFrom(u8, 2, 100);
+  assert.strictEqual(b.length, 3);
+  assert.deepStrictEqual([...b], [3, 4, 5]);
+}
+
+// copyBytesFrom: length 0 returns empty buffer
+{
+  const u8 = new Uint8Array([1, 2, 3]);
+  const b = Buffer.copyBytesFrom(u8, 1, 0);
+  assert.strictEqual(b.length, 0);
+}
+
+// copyBytesFrom: offset past end returns empty buffer
+{
+  const u8 = new Uint8Array([1, 2, 3]);
+  const b = Buffer.copyBytesFrom(u8, 10);
+  assert.strictEqual(b.length, 0);
+}
+
+// copyBytesFrom: Float64Array with offset and length
+{
+  const f64 = new Float64Array([1.0, 2.0, 3.0, 4.0]);
+  const b = Buffer.copyBytesFrom(f64, 1, 2);
+  assert.strictEqual(b.length, 16);
+  const view = new Float64Array(b.buffer, b.byteOffset, 2);
+  assert.strictEqual(view[0], 2.0);
+  assert.strictEqual(view[1], 3.0);
+}
+
+// copyBytesFrom: empty typed array returns empty buffer
+{
+  const empty = new Uint8Array(0);
+  const b = Buffer.copyBytesFrom(empty);
+  assert.strictEqual(b.length, 0);
+}
+
 // Invalid encoding is allowed
 Buffer.from('asd', 1);
diff --git a/test/parallel/test-buffer-swap-fast.js b/test/parallel/test-buffer-swap-fast.js
new file mode 100644
index 00000000000000..755edb6d598892
--- /dev/null
+++ b/test/parallel/test-buffer-swap-fast.js
@@ -0,0 +1,55 @@
+// Flags: --expose-internals --no-warnings --allow-natives-syntax
+'use strict';
+
+const common = require('../common');
+const assert = require('assert');
+
+function testFastSwap16() {
+  const buf = Buffer.from([0x01, 0x02, 0x03, 0x04]);
+  const expected = Buffer.from([0x02, 0x01, 0x04, 0x03]);
+  const padded = Buffer.alloc(256);
+  buf.copy(padded);
+  padded.swap16();
+  assert.deepStrictEqual(padded.subarray(0, 4), expected);
+}
+
+function testFastSwap32() {
+  const buf = Buffer.from([0x01, 0x02, 0x03, 0x04]);
+  const expected = Buffer.from([0x04, 0x03, 0x02, 0x01]);
+  const padded = Buffer.alloc(256);
+  buf.copy(padded);
+  padded.swap32();
+  assert.deepStrictEqual(padded.subarray(0, 4), expected);
+}
+
+function testFastSwap64() {
+  const buf = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]);
+  const expected = Buffer.from([0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01]);
+  const padded = Buffer.alloc(256);
+  buf.copy(padded);
+  padded.swap64();
+  assert.deepStrictEqual(padded.subarray(0, 8), expected);
+}
+
+eval('%PrepareFunctionForOptimization(Buffer.prototype.swap16)');
+testFastSwap16();
+eval('%OptimizeFunctionOnNextCall(Buffer.prototype.swap16)');
+testFastSwap16();
+
+eval('%PrepareFunctionForOptimization(Buffer.prototype.swap32)');
+testFastSwap32();
+eval('%OptimizeFunctionOnNextCall(Buffer.prototype.swap32)');
+testFastSwap32();
+
+eval('%PrepareFunctionForOptimization(Buffer.prototype.swap64)');
+testFastSwap64();
+eval('%OptimizeFunctionOnNextCall(Buffer.prototype.swap64)');
+testFastSwap64();
+
+if (common.isDebug) {
+  const { internalBinding } = require('internal/test/binding');
+  const { getV8FastApiCallCount } = internalBinding('debug');
+  assert.strictEqual(getV8FastApiCallCount('buffer.swap16'), 1);
+  assert.strictEqual(getV8FastApiCallCount('buffer.swap32'), 1);
+  assert.strictEqual(getV8FastApiCallCount('buffer.swap64'), 1);
+}
diff --git a/test/parallel/test-buffer-tostring-range.js b/test/parallel/test-buffer-tostring-range.js
index f4adf64c8d9129..00803bc35d7f4e 100644
--- a/test/parallel/test-buffer-tostring-range.js
+++ b/test/parallel/test-buffer-tostring-range.js
@@ -78,6 +78,46 @@ assert.strictEqual(rangeBuffer.toString('ascii', 0, '-1.99'), '');
 assert.strictEqual(rangeBuffer.toString('ascii', 0, 1.99), 'a');
 assert.strictEqual(rangeBuffer.toString('ascii', 0, true), 'a');
 
+// Test hex/base64/base64url partial range encoding (exercises V8 builtin path)
+{
+  const buf = Buffer.from([0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe]);
+  assert.strictEqual(buf.toString('hex'), 'deadbeefcafe');
+  assert.strictEqual(buf.toString('hex', 0, 3), 'deadbe');
+  assert.strictEqual(buf.toString('hex', 2, 5), 'beefca');
+  assert.strictEqual(buf.toString('hex', 4), 'cafe');
+  assert.strictEqual(buf.toString('hex', 6), '');
+  assert.strictEqual(buf.toString('hex', 0, 0), '');
+}
+
+{
+  const buf = Buffer.from('Hello, World!');
+  assert.strictEqual(buf.toString('base64'), 'SGVsbG8sIFdvcmxkIQ==');
+  assert.strictEqual(buf.toString('base64', 0, 5), 'SGVsbG8=');
+  assert.strictEqual(buf.toString('base64', 7), 'V29ybGQh');
+  assert.strictEqual(buf.toString('base64', 0, 0), '');
+}
+
+{
+  const buf = Buffer.from('Hello, World!');
+  assert.strictEqual(buf.toString('base64url'), 'SGVsbG8sIFdvcmxkIQ');
+  assert.strictEqual(buf.toString('base64url', 0, 5), 'SGVsbG8');
+  assert.strictEqual(buf.toString('base64url', 7), 'V29ybGQh');
+  assert.strictEqual(buf.toString('base64url', 0, 0), '');
+}
+
+// Test with pool-allocated buffer (has non-zero byteOffset)
+{
+  const poolBuf = Buffer.from('test data for hex encoding');
+  assert.strictEqual(
+    poolBuf.toString('hex'),
+    Buffer.from('test data for hex encoding').toString('hex')
+  );
+  assert.strictEqual(
+    poolBuf.toString('hex', 5, 9),
+    Buffer.from('data').toString('hex')
+  );
+}
+
 // Try toString() with an object as an encoding
 assert.strictEqual(rangeBuffer.toString({ toString: function() {
   return 'ascii';

From 4c206ecb31f232535edd591a90fdf301191ad523 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Sat, 28 Mar 2026 10:00:57 +0100
Subject: [PATCH 235/267] quic: remove CryptoKey support from session keys
 option

PR-URL: https://github.com/nodejs/node/pull/62335
Refs: https://github.com/nodejs/node/issues/55293
Refs: https://github.com/nodejs/node/pull/62321
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
---
 doc/api/quic.md              |  6 +++++-
 lib/internal/quic/quic.js    | 12 ++----------
 lib/internal/quic/symbols.js |  2 --
 3 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/doc/api/quic.md b/doc/api/quic.md
index 723c26c5bd0b99..b23a46108b8508 100644
--- a/doc/api/quic.md
+++ b/doc/api/quic.md
@@ -1197,9 +1197,13 @@ True to enable TLS keylogging output.
 
 <!-- YAML
 added: v23.8.0
+changes:
+  - version: REPLACEME
+    pr-url: https://github.com/nodejs/node/pull/62335
+    description: CryptoKey is no longer accepted.
 -->
 
-* Type: {KeyObject|CryptoKey|KeyObject\[]|CryptoKey\[]}
+* Type: {KeyObject|KeyObject\[]}
 
 The TLS crypto keys to use for sessions.
 
diff --git a/lib/internal/quic/quic.js b/lib/internal/quic/quic.js
index b150c24abbbb0b..cae80dc12be341 100644
--- a/lib/internal/quic/quic.js
+++ b/lib/internal/quic/quic.js
@@ -93,7 +93,6 @@ const {
 
 const {
   isKeyObject,
-  isCryptoKey,
 } = require('internal/crypto/keys');
 
 const {
@@ -138,7 +137,6 @@ const {
   kVersionNegotiation,
   kInspect,
   kKeyObjectHandle,
-  kKeyObjectInner,
   kWantsHeaders,
   kWantsTrailers,
 } = require('internal/quic/symbols');
@@ -182,7 +180,6 @@ const onSessionHandshakeChannel = dc.channel('quic.session.handshake');
 /**
  * @typedef {import('../socketaddress.js').SocketAddress} SocketAddress
  * @typedef {import('../crypto/keys.js').KeyObject} KeyObject
- * @typedef {import('../crypto/keys.js').CryptoKey} CryptoKey
  */
 
 /**
@@ -255,7 +252,7 @@ const onSessionHandshakeChannel = dc.channel('quic.session.handshake');
  * @property {boolean} [verifyClient] Verify the client
  * @property {boolean} [tlsTrace] Enable TLS tracing
  * @property {boolean} [verifyPrivateKey] Verify the private key
- * @property {KeyObject|CryptoKey|Array<KeyObject|CryptoKey>} [keys] The keys
+ * @property {KeyObject|KeyObject[]} [keys] The keys
  * @property {ArrayBuffer|ArrayBufferView|Array<ArrayBuffer|ArrayBufferView>} [certs] The certificates
  * @property {ArrayBuffer|ArrayBufferView|Array<ArrayBuffer|ArrayBufferView>} [ca] The certificate authority
  * @property {ArrayBuffer|ArrayBufferView|Array<ArrayBuffer|ArrayBufferView>} [crl] The certificate revocation list
@@ -1999,13 +1996,8 @@ function processTlsOptions(tls, forServer) {
           throw new ERR_INVALID_ARG_VALUE('options.keys', key, 'must be a private key');
         }
         ArrayPrototypePush(keyHandles, key[kKeyObjectHandle]);
-      } else if (isCryptoKey(key)) {
-        if (key.type !== 'private') {
-          throw new ERR_INVALID_ARG_VALUE('options.keys', key, 'must be a private key');
-        }
-        ArrayPrototypePush(keyHandles, key[kKeyObjectInner][kKeyObjectHandle]);
       } else {
-        throw new ERR_INVALID_ARG_TYPE('options.keys', ['KeyObject', 'CryptoKey'], key);
+        throw new ERR_INVALID_ARG_TYPE('options.keys', 'KeyObject', key);
       }
     }
   }
diff --git a/lib/internal/quic/symbols.js b/lib/internal/quic/symbols.js
index 15f2339fc95504..61e1791bda153a 100644
--- a/lib/internal/quic/symbols.js
+++ b/lib/internal/quic/symbols.js
@@ -10,7 +10,6 @@ const {
 
 const {
   kHandle: kKeyObjectHandle,
-  kKeyObject: kKeyObjectInner,
 } = require('internal/crypto/util');
 
 // Symbols used to hide various private properties and methods from the
@@ -54,7 +53,6 @@ module.exports = {
   kHeaders,
   kInspect,
   kKeyObjectHandle,
-  kKeyObjectInner,
   kListen,
   kNewSession,
   kNewStream,

From deb0b7846038c4f3ce7d9c372e0af06ae61788c6 Mon Sep 17 00:00:00 2001
From: jakecastelli <38635403+jakecastelli@users.noreply.github.com>
Date: Sun, 29 Mar 2026 03:18:29 +1030
Subject: [PATCH 236/267] esm: fix typo in worker loader hook comment

PR-URL: https://github.com/nodejs/node/pull/62475
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 lib/internal/modules/esm/worker.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/internal/modules/esm/worker.js b/lib/internal/modules/esm/worker.js
index fa5fa87d20efb1..e2553b253db830 100644
--- a/lib/internal/modules/esm/worker.js
+++ b/lib/internal/modules/esm/worker.js
@@ -37,7 +37,7 @@ const { isCascadedLoaderInitialized, getOrInitializeCascadedLoader } = require('
 const { AsyncLoaderHooksOnLoaderHookWorker } = require('internal/modules/esm/hooks');
 
 /**
- * Register asynchronus module loader customization hooks. This should only be run in the loader
+ * Register asynchronous module loader customization hooks. This should only be run in the loader
  * hooks worker. In a non-loader-hooks thread, if any asynchronous loader hook is registered, the
  * ModuleLoader#asyncLoaderHooks are initialized to be AsyncLoaderHooksProxiedToLoaderHookWorker
  * which posts the messages to the async loader hook worker thread.

From 4d9123e57db4db3a5c25c142f38e44c6887d7dcf Mon Sep 17 00:00:00 2001
From: npm CLI robot <npm-cli+bot@github.com>
Date: Sat, 28 Mar 2026 15:57:33 -0700
Subject: [PATCH 237/267] deps: upgrade npm to 11.12.1

PR-URL: https://github.com/nodejs/node/pull/62448
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
---
 deps/npm/docs/content/commands/npm-audit.md   |  22 ++
 .../docs/content/commands/npm-install-test.md |   2 +
 deps/npm/docs/content/commands/npm-install.md |   2 +
 deps/npm/docs/content/commands/npm-ls.md      |   2 +-
 .../npm/docs/content/commands/npm-outdated.md |   2 +
 deps/npm/docs/content/commands/npm-publish.md |   2 +
 deps/npm/docs/content/commands/npm-trust.md   |   4 -
 deps/npm/docs/content/commands/npm-update.md  |   2 +
 deps/npm/docs/content/commands/npm.md         |   2 +-
 deps/npm/docs/content/using-npm/config.md     |  14 +
 deps/npm/docs/lib/index.js                    |  33 ++-
 deps/npm/docs/output/commands/npm-access.html |   4 +-
 .../npm/docs/output/commands/npm-adduser.html |   4 +-
 deps/npm/docs/output/commands/npm-audit.html  |  21 +-
 deps/npm/docs/output/commands/npm-bugs.html   |   4 +-
 deps/npm/docs/output/commands/npm-cache.html  |   4 +-
 deps/npm/docs/output/commands/npm-ci.html     |   4 +-
 .../docs/output/commands/npm-completion.html  |   4 +-
 deps/npm/docs/output/commands/npm-config.html |   4 +-
 deps/npm/docs/output/commands/npm-dedupe.html |   4 +-
 .../docs/output/commands/npm-deprecate.html   |   4 +-
 deps/npm/docs/output/commands/npm-diff.html   |   4 +-
 .../docs/output/commands/npm-dist-tag.html    |   4 +-
 deps/npm/docs/output/commands/npm-docs.html   |   4 +-
 deps/npm/docs/output/commands/npm-doctor.html |   4 +-
 deps/npm/docs/output/commands/npm-edit.html   |   4 +-
 deps/npm/docs/output/commands/npm-exec.html   |   4 +-
 .../npm/docs/output/commands/npm-explain.html |   4 +-
 .../npm/docs/output/commands/npm-explore.html |   4 +-
 .../docs/output/commands/npm-find-dupes.html  |   4 +-
 deps/npm/docs/output/commands/npm-fund.html   |   4 +-
 deps/npm/docs/output/commands/npm-get.html    |   4 +-
 .../docs/output/commands/npm-help-search.html |   4 +-
 deps/npm/docs/output/commands/npm-help.html   |   4 +-
 deps/npm/docs/output/commands/npm-init.html   |   4 +-
 .../output/commands/npm-install-ci-test.html  |   4 +-
 .../output/commands/npm-install-test.html     |   5 +-
 .../npm/docs/output/commands/npm-install.html |   5 +-
 deps/npm/docs/output/commands/npm-link.html   |   4 +-
 deps/npm/docs/output/commands/npm-ll.html     |   4 +-
 deps/npm/docs/output/commands/npm-login.html  |   4 +-
 deps/npm/docs/output/commands/npm-logout.html |   4 +-
 deps/npm/docs/output/commands/npm-ls.html     |   6 +-
 deps/npm/docs/output/commands/npm-org.html    |   4 +-
 .../docs/output/commands/npm-outdated.html    |   5 +-
 deps/npm/docs/output/commands/npm-owner.html  |   4 +-
 deps/npm/docs/output/commands/npm-pack.html   |   4 +-
 deps/npm/docs/output/commands/npm-ping.html   |   4 +-
 deps/npm/docs/output/commands/npm-pkg.html    |   4 +-
 deps/npm/docs/output/commands/npm-prefix.html |   4 +-
 .../npm/docs/output/commands/npm-profile.html |   4 +-
 deps/npm/docs/output/commands/npm-prune.html  |   4 +-
 .../npm/docs/output/commands/npm-publish.html |   5 +-
 deps/npm/docs/output/commands/npm-query.html  |   4 +-
 .../npm/docs/output/commands/npm-rebuild.html |   4 +-
 deps/npm/docs/output/commands/npm-repo.html   |   4 +-
 .../npm/docs/output/commands/npm-restart.html |   4 +-
 deps/npm/docs/output/commands/npm-root.html   |   4 +-
 deps/npm/docs/output/commands/npm-run.html    |   4 +-
 deps/npm/docs/output/commands/npm-sbom.html   |   4 +-
 deps/npm/docs/output/commands/npm-search.html |   4 +-
 deps/npm/docs/output/commands/npm-set.html    |   4 +-
 .../docs/output/commands/npm-shrinkwrap.html  |   4 +-
 deps/npm/docs/output/commands/npm-star.html   |   4 +-
 deps/npm/docs/output/commands/npm-stars.html  |   4 +-
 deps/npm/docs/output/commands/npm-start.html  |   4 +-
 deps/npm/docs/output/commands/npm-stop.html   |   4 +-
 deps/npm/docs/output/commands/npm-team.html   |   4 +-
 deps/npm/docs/output/commands/npm-test.html   |   4 +-
 deps/npm/docs/output/commands/npm-token.html  |   4 +-
 deps/npm/docs/output/commands/npm-trust.html  |   5 +-
 .../docs/output/commands/npm-undeprecate.html |   4 +-
 .../docs/output/commands/npm-uninstall.html   |   4 +-
 .../docs/output/commands/npm-unpublish.html   |   4 +-
 deps/npm/docs/output/commands/npm-unstar.html |   4 +-
 deps/npm/docs/output/commands/npm-update.html |   5 +-
 .../npm/docs/output/commands/npm-version.html |   4 +-
 deps/npm/docs/output/commands/npm-view.html   |   4 +-
 deps/npm/docs/output/commands/npm-whoami.html |   4 +-
 deps/npm/docs/output/commands/npm.html        |   6 +-
 deps/npm/docs/output/commands/npx.html        |   4 +-
 .../docs/output/configuring-npm/folders.html  |   4 +-
 .../docs/output/configuring-npm/install.html  |   4 +-
 .../output/configuring-npm/npm-global.html    |   4 +-
 .../docs/output/configuring-npm/npm-json.html |   4 +-
 .../configuring-npm/npm-shrinkwrap-json.html  |   4 +-
 .../docs/output/configuring-npm/npmrc.html    |   4 +-
 .../output/configuring-npm/package-json.html  |   4 +-
 .../configuring-npm/package-lock-json.html    |   4 +-
 deps/npm/docs/output/using-npm/config.html    |  16 +-
 .../using-npm/dependency-selectors.html       |   4 +-
 .../npm/docs/output/using-npm/developers.html |   4 +-
 deps/npm/docs/output/using-npm/logging.html   |   4 +-
 deps/npm/docs/output/using-npm/orgs.html      |   4 +-
 .../docs/output/using-npm/package-spec.html   |   4 +-
 deps/npm/docs/output/using-npm/registry.html  |   4 +-
 deps/npm/docs/output/using-npm/removal.html   |   4 +-
 deps/npm/docs/output/using-npm/scope.html     |   4 +-
 deps/npm/docs/output/using-npm/scripts.html   |   4 +-
 .../npm/docs/output/using-npm/workspaces.html |   4 +-
 deps/npm/lib/commands/audit.js                |   1 +
 deps/npm/lib/utils/explain-dep.js             |  39 ++-
 deps/npm/lib/utils/verify-signatures.js       |  27 +-
 deps/npm/man/man1/npm-access.1                |   2 +-
 deps/npm/man/man1/npm-adduser.1               |   2 +-
 deps/npm/man/man1/npm-audit.1                 |  22 +-
 deps/npm/man/man1/npm-bugs.1                  |   2 +-
 deps/npm/man/man1/npm-cache.1                 |   2 +-
 deps/npm/man/man1/npm-ci.1                    |   2 +-
 deps/npm/man/man1/npm-completion.1            |   2 +-
 deps/npm/man/man1/npm-config.1                |   2 +-
 deps/npm/man/man1/npm-dedupe.1                |   2 +-
 deps/npm/man/man1/npm-deprecate.1             |   2 +-
 deps/npm/man/man1/npm-diff.1                  |   2 +-
 deps/npm/man/man1/npm-dist-tag.1              |   2 +-
 deps/npm/man/man1/npm-docs.1                  |   2 +-
 deps/npm/man/man1/npm-doctor.1                |   2 +-
 deps/npm/man/man1/npm-edit.1                  |   2 +-
 deps/npm/man/man1/npm-exec.1                  |   2 +-
 deps/npm/man/man1/npm-explain.1               |   2 +-
 deps/npm/man/man1/npm-explore.1               |   2 +-
 deps/npm/man/man1/npm-find-dupes.1            |   2 +-
 deps/npm/man/man1/npm-fund.1                  |   2 +-
 deps/npm/man/man1/npm-get.1                   |   2 +-
 deps/npm/man/man1/npm-help-search.1           |   2 +-
 deps/npm/man/man1/npm-help.1                  |   2 +-
 deps/npm/man/man1/npm-init.1                  |   2 +-
 deps/npm/man/man1/npm-install-ci-test.1       |   2 +-
 deps/npm/man/man1/npm-install-test.1          |   4 +-
 deps/npm/man/man1/npm-install.1               |   4 +-
 deps/npm/man/man1/npm-link.1                  |   2 +-
 deps/npm/man/man1/npm-ll.1                    |   2 +-
 deps/npm/man/man1/npm-login.1                 |   2 +-
 deps/npm/man/man1/npm-logout.1                |   2 +-
 deps/npm/man/man1/npm-ls.1                    |   4 +-
 deps/npm/man/man1/npm-org.1                   |   2 +-
 deps/npm/man/man1/npm-outdated.1              |   4 +-
 deps/npm/man/man1/npm-owner.1                 |   2 +-
 deps/npm/man/man1/npm-pack.1                  |   2 +-
 deps/npm/man/man1/npm-ping.1                  |   2 +-
 deps/npm/man/man1/npm-pkg.1                   |   2 +-
 deps/npm/man/man1/npm-prefix.1                |   2 +-
 deps/npm/man/man1/npm-profile.1               |   2 +-
 deps/npm/man/man1/npm-prune.1                 |   2 +-
 deps/npm/man/man1/npm-publish.1               |   4 +-
 deps/npm/man/man1/npm-query.1                 |   2 +-
 deps/npm/man/man1/npm-rebuild.1               |   2 +-
 deps/npm/man/man1/npm-repo.1                  |   2 +-
 deps/npm/man/man1/npm-restart.1               |   2 +-
 deps/npm/man/man1/npm-root.1                  |   2 +-
 deps/npm/man/man1/npm-run.1                   |   2 +-
 deps/npm/man/man1/npm-sbom.1                  |   2 +-
 deps/npm/man/man1/npm-search.1                |   2 +-
 deps/npm/man/man1/npm-set.1                   |   2 +-
 deps/npm/man/man1/npm-shrinkwrap.1            |   2 +-
 deps/npm/man/man1/npm-star.1                  |   2 +-
 deps/npm/man/man1/npm-stars.1                 |   2 +-
 deps/npm/man/man1/npm-start.1                 |   2 +-
 deps/npm/man/man1/npm-stop.1                  |   2 +-
 deps/npm/man/man1/npm-team.1                  |   2 +-
 deps/npm/man/man1/npm-test.1                  |   2 +-
 deps/npm/man/man1/npm-token.1                 |   2 +-
 deps/npm/man/man1/npm-trust.1                 |   8 +-
 deps/npm/man/man1/npm-undeprecate.1           |   2 +-
 deps/npm/man/man1/npm-uninstall.1             |   2 +-
 deps/npm/man/man1/npm-unpublish.1             |   2 +-
 deps/npm/man/man1/npm-unstar.1                |   2 +-
 deps/npm/man/man1/npm-update.1                |   4 +-
 deps/npm/man/man1/npm-version.1               |   2 +-
 deps/npm/man/man1/npm-view.1                  |   2 +-
 deps/npm/man/man1/npm-whoami.1                |   2 +-
 deps/npm/man/man1/npm.1                       |   4 +-
 deps/npm/man/man1/npx.1                       |   2 +-
 deps/npm/man/man5/folders.5                   |   2 +-
 deps/npm/man/man5/install.5                   |   2 +-
 deps/npm/man/man5/npm-global.5                |   2 +-
 deps/npm/man/man5/npm-json.5                  |   2 +-
 deps/npm/man/man5/npm-shrinkwrap-json.5       |   2 +-
 deps/npm/man/man5/npmrc.5                     |   2 +-
 deps/npm/man/man5/package-json.5              |   2 +-
 deps/npm/man/man5/package-lock-json.5         |   2 +-
 deps/npm/man/man7/config.7                    |  14 +-
 deps/npm/man/man7/dependency-selectors.7      |   2 +-
 deps/npm/man/man7/developers.7                |   2 +-
 deps/npm/man/man7/logging.7                   |   2 +-
 deps/npm/man/man7/orgs.7                      |   2 +-
 deps/npm/man/man7/package-spec.7              |   2 +-
 deps/npm/man/man7/registry.7                  |   2 +-
 deps/npm/man/man7/removal.7                   |   2 +-
 deps/npm/man/man7/scope.7                     |   2 +-
 deps/npm/man/man7/scripts.7                   |   2 +-
 deps/npm/man/man7/workspaces.7                |   2 +-
 .../node_modules/@gar/promise-retry/LICENSE   |   1 +
 .../@gar/promise-retry/lib/index.js           |  52 +++-
 .../@gar/promise-retry/lib/retry.js           | 109 ++++++++
 .../promise-retry/node_modules/retry/License  |  21 --
 .../node_modules/retry/example/dns.js         |  31 ---
 .../node_modules/retry/example/stop.js        |  40 ---
 .../promise-retry/node_modules/retry/index.js |   1 -
 .../node_modules/retry/lib/retry.js           | 100 -------
 .../node_modules/retry/lib/retry_operation.js | 162 -----------
 .../node_modules/retry/package.json           |  36 ---
 .../@gar/promise-retry/package.json           |   5 +-
 .../@npmcli/arborist/lib/arborist/reify.js    |  12 +-
 .../@npmcli/arborist/lib/override-set.js      |  25 +-
 .../@npmcli/arborist/package.json             |   2 +-
 .../config/lib/definitions/definitions.js     |  12 +
 .../node_modules/@npmcli/config/lib/index.js  |   9 +-
 .../node_modules/@npmcli/config/package.json  |   2 +-
 .../@sigstore/core/dist/crypto.js             |  11 +-
 .../node_modules/@sigstore/core/package.json  |   2 +-
 .../@sigstore/sign/dist/external/fetch.js     |   4 +-
 .../node_modules/@sigstore/sign/package.json  |  13 +-
 .../node_modules/@sigstore/tuf/package.json   |   4 +-
 .../npm/node_modules/@sigstore/tuf/seeds.json |   2 +-
 .../node_modules/cacache/lib/content/write.js |   4 +-
 .../node_modules/cacache/lib/entry-index.js   |   4 +-
 deps/npm/node_modules/cacache/lib/util/tmp.js |   6 +
 deps/npm/node_modules/cacache/package.json    |   9 +-
 deps/npm/node_modules/err-code/bower.json     |  30 --
 deps/npm/node_modules/err-code/index.js       |  47 ----
 deps/npm/node_modules/err-code/index.umd.js   |  51 ----
 deps/npm/node_modules/err-code/package.json   |  34 ---
 deps/npm/node_modules/err-code/test/test.js   | 159 -----------
 .../node_modules/imurmurhash/imurmurhash.js   | 138 ---------
 .../imurmurhash/imurmurhash.min.js            |  12 -
 .../npm/node_modules/imurmurhash/package.json |  40 ---
 deps/npm/node_modules/libnpmdiff/package.json |   4 +-
 deps/npm/node_modules/libnpmexec/package.json |   4 +-
 deps/npm/node_modules/libnpmfund/package.json |   4 +-
 deps/npm/node_modules/libnpmpack/package.json |   4 +-
 .../lru-cache/dist/commonjs/index.js          |  52 ++--
 .../lru-cache/dist/commonjs/index.min.js      |   2 +-
 .../node_modules/lru-cache/dist/esm/index.js  |  52 ++--
 .../lru-cache/dist/esm/index.min.js           |   2 +-
 deps/npm/node_modules/lru-cache/package.json  |  10 +-
 .../make-fetch-happen/lib/remote.js           |   6 +-
 .../make-fetch-happen/package.json            |   3 +-
 deps/npm/node_modules/promise-retry/LICENSE   |  19 --
 deps/npm/node_modules/promise-retry/index.js  |  52 ----
 .../node_modules/promise-retry/package.json   |  37 ---
 .../node_modules/promise-retry/test/test.js   | 263 ------------------
 deps/npm/node_modules/retry/License           |  21 --
 deps/npm/node_modules/retry/Makefile          |  18 --
 deps/npm/node_modules/retry/equation.gif      | Bin 1209 -> 0 bytes
 deps/npm/node_modules/retry/example/dns.js    |  31 ---
 deps/npm/node_modules/retry/example/stop.js   |  40 ---
 deps/npm/node_modules/retry/index.js          |   1 -
 deps/npm/node_modules/retry/lib/retry.js      | 100 -------
 .../node_modules/retry/lib/retry_operation.js | 158 -----------
 deps/npm/node_modules/retry/package.json      |  32 ---
 deps/npm/node_modules/retry/test/common.js    |  10 -
 .../retry/test/integration/test-forever.js    |  24 --
 .../test/integration/test-retry-operation.js  | 258 -----------------
 .../retry/test/integration/test-retry-wrap.js | 101 -------
 .../retry/test/integration/test-timeouts.js   |  69 -----
 deps/npm/node_modules/unique-filename/LICENSE |   5 -
 .../node_modules/unique-filename/lib/index.js |   7 -
 .../node_modules/unique-filename/package.json |  53 ----
 deps/npm/node_modules/unique-slug/LICENSE     |  15 -
 .../npm/node_modules/unique-slug/lib/index.js |  11 -
 .../npm/node_modules/unique-slug/package.json |  49 ----
 deps/npm/package.json                         |  20 +-
 .../test/lib/commands/audit.js.test.cjs       |   1 +
 .../test/lib/commands/config.js.test.cjs      |   2 +
 .../tap-snapshots/test/lib/docs.js.test.cjs   |  27 +-
 .../test/lib/utils/explain-dep.js.test.cjs    |  27 ++
 deps/npm/test/lib/commands/audit.js           |  90 ++++++
 deps/npm/test/lib/utils/explain-dep.js        |  43 ++-
 269 files changed, 976 insertions(+), 2720 deletions(-)
 create mode 100644 deps/npm/node_modules/@gar/promise-retry/lib/retry.js
 delete mode 100644 deps/npm/node_modules/@gar/promise-retry/node_modules/retry/License
 delete mode 100644 deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/dns.js
 delete mode 100644 deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/stop.js
 delete mode 100644 deps/npm/node_modules/@gar/promise-retry/node_modules/retry/index.js
 delete mode 100644 deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry.js
 delete mode 100644 deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry_operation.js
 delete mode 100644 deps/npm/node_modules/@gar/promise-retry/node_modules/retry/package.json
 delete mode 100644 deps/npm/node_modules/err-code/bower.json
 delete mode 100644 deps/npm/node_modules/err-code/index.js
 delete mode 100644 deps/npm/node_modules/err-code/index.umd.js
 delete mode 100644 deps/npm/node_modules/err-code/package.json
 delete mode 100644 deps/npm/node_modules/err-code/test/test.js
 delete mode 100644 deps/npm/node_modules/imurmurhash/imurmurhash.js
 delete mode 100644 deps/npm/node_modules/imurmurhash/imurmurhash.min.js
 delete mode 100644 deps/npm/node_modules/imurmurhash/package.json
 delete mode 100644 deps/npm/node_modules/promise-retry/LICENSE
 delete mode 100644 deps/npm/node_modules/promise-retry/index.js
 delete mode 100644 deps/npm/node_modules/promise-retry/package.json
 delete mode 100644 deps/npm/node_modules/promise-retry/test/test.js
 delete mode 100644 deps/npm/node_modules/retry/License
 delete mode 100644 deps/npm/node_modules/retry/Makefile
 delete mode 100644 deps/npm/node_modules/retry/equation.gif
 delete mode 100644 deps/npm/node_modules/retry/example/dns.js
 delete mode 100644 deps/npm/node_modules/retry/example/stop.js
 delete mode 100644 deps/npm/node_modules/retry/index.js
 delete mode 100644 deps/npm/node_modules/retry/lib/retry.js
 delete mode 100644 deps/npm/node_modules/retry/lib/retry_operation.js
 delete mode 100644 deps/npm/node_modules/retry/package.json
 delete mode 100644 deps/npm/node_modules/retry/test/common.js
 delete mode 100644 deps/npm/node_modules/retry/test/integration/test-forever.js
 delete mode 100644 deps/npm/node_modules/retry/test/integration/test-retry-operation.js
 delete mode 100644 deps/npm/node_modules/retry/test/integration/test-retry-wrap.js
 delete mode 100644 deps/npm/node_modules/retry/test/integration/test-timeouts.js
 delete mode 100644 deps/npm/node_modules/unique-filename/LICENSE
 delete mode 100644 deps/npm/node_modules/unique-filename/lib/index.js
 delete mode 100644 deps/npm/node_modules/unique-filename/package.json
 delete mode 100644 deps/npm/node_modules/unique-slug/LICENSE
 delete mode 100644 deps/npm/node_modules/unique-slug/lib/index.js
 delete mode 100644 deps/npm/node_modules/unique-slug/package.json

diff --git a/deps/npm/docs/content/commands/npm-audit.md b/deps/npm/docs/content/commands/npm-audit.md
index f7d4e06718c96f..e0b80373ad181b 100644
--- a/deps/npm/docs/content/commands/npm-audit.md
+++ b/deps/npm/docs/content/commands/npm-audit.md
@@ -44,6 +44,16 @@ The `audit signatures` command will also verify the provenance attestations of d
 Because provenance attestations are such a new feature, security features may be added to (or changed in) the attestation format over time.
 To ensure that you're always able to verify attestation signatures check that you're running the latest version of the npm CLI. Please note this often means updating npm beyond the version that ships with Node.js.
 
+To include the full sigstore attestation bundles in JSON output, use:
+
+```bash
+$ npm audit signatures --json --include-attestations
+```
+
+This adds a `verified` array to the JSON output containing the attestation
+bundles (DSSE envelopes, verification material, and transparency log entries)
+for each verified package.
+
 The npm CLI supports registry signatures and signing keys provided by any registry if the following conventions are followed:
 
 1. Signatures are provided in the package's `packument` in each published version within the `dist` object:
@@ -357,6 +367,18 @@ run any pre- or post-scripts.
 
 
 
+#### `include-attestations`
+
+* Default: false
+* Type: Boolean
+
+When used with `npm audit signatures --json`, includes the full sigstore
+attestation bundles in the JSON output for each verified package. The
+bundles contain DSSE envelopes, verification material, and transparency log
+entries.
+
+
+
 #### `workspace`
 
 * Default:
diff --git a/deps/npm/docs/content/commands/npm-install-test.md b/deps/npm/docs/content/commands/npm-install-test.md
index d576d335a66481..8291409edfb835 100644
--- a/deps/npm/docs/content/commands/npm-install-test.md
+++ b/deps/npm/docs/content/commands/npm-install-test.md
@@ -281,6 +281,8 @@ of a relative number of days.
 
 This config cannot be used with: `before`
 
+This value is not exported to the environment for child processes.
+
 #### `bin-links`
 
 * Default: true
diff --git a/deps/npm/docs/content/commands/npm-install.md b/deps/npm/docs/content/commands/npm-install.md
index 34c5ee6b1878da..77a34667725c3f 100644
--- a/deps/npm/docs/content/commands/npm-install.md
+++ b/deps/npm/docs/content/commands/npm-install.md
@@ -623,6 +623,8 @@ of a relative number of days.
 
 This config cannot be used with: `before`
 
+This value is not exported to the environment for child processes.
+
 #### `bin-links`
 
 * Default: true
diff --git a/deps/npm/docs/content/commands/npm-ls.md b/deps/npm/docs/content/commands/npm-ls.md
index c5b4388b3fb501..ddcb05d2c6ae5c 100644
--- a/deps/npm/docs/content/commands/npm-ls.md
+++ b/deps/npm/docs/content/commands/npm-ls.md
@@ -23,7 +23,7 @@ Note that nested packages will *also* show the paths to the specified packages.
 For example, running `npm ls promzard` in npm's source tree will show:
 
 ```bash
-npm@11.11.1 /path/to/npm
+npm@11.12.1 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5
 ```
diff --git a/deps/npm/docs/content/commands/npm-outdated.md b/deps/npm/docs/content/commands/npm-outdated.md
index b05f8b5a5c0e1b..f635cb90565d2f 100644
--- a/deps/npm/docs/content/commands/npm-outdated.md
+++ b/deps/npm/docs/content/commands/npm-outdated.md
@@ -182,6 +182,8 @@ of a relative number of days.
 
 This config cannot be used with: `before`
 
+This value is not exported to the environment for child processes.
+
 ### See Also
 
 * [package spec](/using-npm/package-spec)
diff --git a/deps/npm/docs/content/commands/npm-publish.md b/deps/npm/docs/content/commands/npm-publish.md
index 95429d0bdc7518..c69e187429eabb 100644
--- a/deps/npm/docs/content/commands/npm-publish.md
+++ b/deps/npm/docs/content/commands/npm-publish.md
@@ -54,6 +54,8 @@ A `package` is interpreted the same way as other commands (like `npm install`) a
 * f) a `<name>` that has a "latest" tag satisfying (e)
 * g) a `<git remote url>` that resolves to (a)
 
+If either (a) or (b) is specified as a relative path, it should begin with an explicit `./` prefix.
+
 The publish will fail if the package name and version combination already exists in the specified registry.
 
 Once a package is published with a given name and version, that specific name and version combination can never be used again, even if it is removed with [`npm unpublish`](/commands/npm-unpublish).
diff --git a/deps/npm/docs/content/commands/npm-trust.md b/deps/npm/docs/content/commands/npm-trust.md
index c26e47ad1271d9..e780330db878de 100644
--- a/deps/npm/docs/content/commands/npm-trust.md
+++ b/deps/npm/docs/content/commands/npm-trust.md
@@ -6,10 +6,6 @@ description: Manage trusted publishing relationships between packages and CI/CD
 
 ### Synopsis
 
-```bash
-
-```
-
 Note: This command is unaware of workspaces.
 
 ### Prerequisites
diff --git a/deps/npm/docs/content/commands/npm-update.md b/deps/npm/docs/content/commands/npm-update.md
index 2011a1e235b2c5..60cb3c9ada4c2c 100644
--- a/deps/npm/docs/content/commands/npm-update.md
+++ b/deps/npm/docs/content/commands/npm-update.md
@@ -347,6 +347,8 @@ of a relative number of days.
 
 This config cannot be used with: `before`
 
+This value is not exported to the environment for child processes.
+
 #### `bin-links`
 
 * Default: true
diff --git a/deps/npm/docs/content/commands/npm.md b/deps/npm/docs/content/commands/npm.md
index b6dde2852ac661..2013ee7f8205f1 100644
--- a/deps/npm/docs/content/commands/npm.md
+++ b/deps/npm/docs/content/commands/npm.md
@@ -14,7 +14,7 @@ Note: This command is unaware of workspaces.
 
 ### Version
 
-11.11.1
+11.12.1
 
 ### Description
 
diff --git a/deps/npm/docs/content/using-npm/config.md b/deps/npm/docs/content/using-npm/config.md
index ff897d9f71b02f..96df0ae0058c69 100644
--- a/deps/npm/docs/content/using-npm/config.md
+++ b/deps/npm/docs/content/using-npm/config.md
@@ -770,6 +770,18 @@ the order in which omit/include are specified on the command-line.
 
 
 
+#### `include-attestations`
+
+* Default: false
+* Type: Boolean
+
+When used with `npm audit signatures --json`, includes the full sigstore
+attestation bundles in the JSON output for each verified package. The
+bundles contain DSSE envelopes, verification material, and transparency log
+entries.
+
+
+
 #### `include-staged`
 
 * Default: false
@@ -1086,6 +1098,8 @@ of a relative number of days.
 
 This config cannot be used with: `before`
 
+This value is not exported to the environment for child processes.
+
 #### `name`
 
 * Default: null
diff --git a/deps/npm/docs/lib/index.js b/deps/npm/docs/lib/index.js
index 17f7bfca8fce90..d7a5e83ccf5062 100644
--- a/deps/npm/docs/lib/index.js
+++ b/deps/npm/docs/lib/index.js
@@ -104,25 +104,32 @@ const replaceUsage = (src, { path, commandLoader }) => {
   const replacer = assertPlaceholder(src, path, TAGS.USAGE)
   const { usage, name, workspaces } = getCommandByDoc(path, DOC_EXT, commandLoader)
 
-  const synopsis = ['```bash', usage]
+  const synopsis = []
 
-  const cmdAliases = Object.keys(aliases).reduce((p, c) => {
-    if (aliases[c] === name) {
-      p.push(c)
+  if (usage) {
+    synopsis.push('```bash', usage)
+
+    const cmdAliases = Object.keys(aliases).reduce((p, c) => {
+      if (aliases[c] === name) {
+        p.push(c)
+      }
+      return p
+    }, [])
+
+    if (cmdAliases.length === 1) {
+      synopsis.push('', `alias: ${cmdAliases[0]}`)
+    } else if (cmdAliases.length > 1) {
+      synopsis.push('', `aliases: ${cmdAliases.join(', ')}`)
     }
-    return p
-  }, [])
 
-  if (cmdAliases.length === 1) {
-    synopsis.push('', `alias: ${cmdAliases[0]}`)
-  } else if (cmdAliases.length > 1) {
-    synopsis.push('', `aliases: ${cmdAliases.join(', ')}`)
+    synopsis.push('```')
   }
 
-  synopsis.push('```')
-
   if (!workspaces) {
-    synopsis.push('', 'Note: This command is unaware of workspaces.')
+    if (synopsis.length) {
+      synopsis.push('')
+    }
+    synopsis.push('Note: This command is unaware of workspaces.')
   }
 
   return src.replace(replacer, synopsis.join('\n'))
diff --git a/deps/npm/docs/output/commands/npm-access.html b/deps/npm/docs/output/commands/npm-access.html
index 4eccf2281ade9c..fc29ba6a871af0 100644
--- a/deps/npm/docs/output/commands/npm-access.html
+++ b/deps/npm/docs/output/commands/npm-access.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-access----11111">
+<h1 id="----npm-access----11121">
     <span>npm-access</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Set access level on published packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-adduser.html b/deps/npm/docs/output/commands/npm-adduser.html
index 8c1b0ba23ee659..b9fb04905a4df5 100644
--- a/deps/npm/docs/output/commands/npm-adduser.html
+++ b/deps/npm/docs/output/commands/npm-adduser.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-adduser----11111">
+<h1 id="----npm-adduser----11121">
     <span>npm-adduser</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Add a registry user account</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-audit.html b/deps/npm/docs/output/commands/npm-audit.html
index 70be84e75b76be..9cd06e991464b3 100644
--- a/deps/npm/docs/output/commands/npm-audit.html
+++ b/deps/npm/docs/output/commands/npm-audit.html
@@ -186,16 +186,16 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-audit----11111">
+<h1 id="----npm-audit----11121">
     <span>npm-audit</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Run a security audit</span>
 </header>
 
 <section id="table_of_contents">
 <h2 id="table-of-contents">Table of contents</h2>
-<div id="_table_of_contents"><ul><li><a href="#synopsis">Synopsis</a></li><li><a href="#description">Description</a></li><li><a href="#package-lock">Package lock</a></li><li><a href="#audit-signatures">Audit Signatures</a></li><li><a href="#audit-endpoints">Audit Endpoints</a></li><ul><li><a href="#bulk-advisory-endpoint">Bulk Advisory Endpoint</a></li><li><a href="#quick-audit-endpoint">Quick Audit Endpoint</a></li><li><a href="#scrubbing">Scrubbing</a></li><li><a href="#calculating-meta-vulnerabilities-and-remediations">Calculating Meta-Vulnerabilities and Remediations</a></li></ul><li><a href="#exit-code">Exit Code</a></li><li><a href="#examples">Examples</a></li><li><a href="#configuration">Configuration</a></li><ul><li><a href="#audit-level"><code>audit-level</code></a></li><li><a href="#dry-run"><code>dry-run</code></a></li><li><a href="#force"><code>force</code></a></li><li><a href="#json"><code>json</code></a></li><li><a href="#package-lock-only"><code>package-lock-only</code></a></li><li><a href="#package-lock2"><code>package-lock</code></a></li><li><a href="#omit"><code>omit</code></a></li><li><a href="#include"><code>include</code></a></li><li><a href="#foreground-scripts"><code>foreground-scripts</code></a></li><li><a href="#ignore-scripts"><code>ignore-scripts</code></a></li><li><a href="#workspace"><code>workspace</code></a></li><li><a href="#workspaces"><code>workspaces</code></a></li><li><a href="#include-workspace-root"><code>include-workspace-root</code></a></li><li><a href="#install-links"><code>install-links</code></a></li></ul><li><a href="#see-also">See Also</a></li></ul></div>
+<div id="_table_of_contents"><ul><li><a href="#synopsis">Synopsis</a></li><li><a href="#description">Description</a></li><li><a href="#package-lock">Package lock</a></li><li><a href="#audit-signatures">Audit Signatures</a></li><li><a href="#audit-endpoints">Audit Endpoints</a></li><ul><li><a href="#bulk-advisory-endpoint">Bulk Advisory Endpoint</a></li><li><a href="#quick-audit-endpoint">Quick Audit Endpoint</a></li><li><a href="#scrubbing">Scrubbing</a></li><li><a href="#calculating-meta-vulnerabilities-and-remediations">Calculating Meta-Vulnerabilities and Remediations</a></li></ul><li><a href="#exit-code">Exit Code</a></li><li><a href="#examples">Examples</a></li><li><a href="#configuration">Configuration</a></li><ul><li><a href="#audit-level"><code>audit-level</code></a></li><li><a href="#dry-run"><code>dry-run</code></a></li><li><a href="#force"><code>force</code></a></li><li><a href="#json"><code>json</code></a></li><li><a href="#package-lock-only"><code>package-lock-only</code></a></li><li><a href="#package-lock2"><code>package-lock</code></a></li><li><a href="#omit"><code>omit</code></a></li><li><a href="#include"><code>include</code></a></li><li><a href="#foreground-scripts"><code>foreground-scripts</code></a></li><li><a href="#ignore-scripts"><code>ignore-scripts</code></a></li><li><a href="#include-attestations"><code>include-attestations</code></a></li><li><a href="#workspace"><code>workspace</code></a></li><li><a href="#workspaces"><code>workspaces</code></a></li><li><a href="#include-workspace-root"><code>include-workspace-root</code></a></li><li><a href="#install-links"><code>install-links</code></a></li></ul><li><a href="#see-also">See Also</a></li></ul></div>
 </section>
 
 <div id="_content"><h3 id="synopsis">Synopsis</h3>
@@ -222,6 +222,12 @@ <h3 id="audit-signatures">Audit Signatures</h3>
 <p>The <code>audit signatures</code> command will also verify the provenance attestations of downloaded packages.
 Because provenance attestations are such a new feature, security features may be added to (or changed in) the attestation format over time.
 To ensure that you're always able to verify attestation signatures check that you're running the latest version of the npm CLI. Please note this often means updating npm beyond the version that ships with Node.js.</p>
+<p>To include the full sigstore attestation bundles in JSON output, use:</p>
+<pre><code class="language-bash">$ npm audit signatures --json --include-attestations
+</code></pre>
+<p>This adds a <code>verified</code> array to the JSON output containing the attestation
+bundles (DSSE envelopes, verification material, and transparency log entries)
+for each verified package.</p>
 <p>The npm CLI supports registry signatures and signing keys provided by any registry if the following conventions are followed:</p>
 <ol>
 <li>Signatures are provided in the package's <code>packument</code> in each published version within the <code>dist</code> object:</li>
@@ -439,6 +445,15 @@ <h4 id="ignore-scripts"><code>ignore-scripts</code></h4>
 <code>npm start</code>, <code>npm stop</code>, <code>npm restart</code>, <code>npm test</code>, and <code>npm run</code> will still
 run their intended script if <code>ignore-scripts</code> is set, but they will <em>not</em>
 run any pre- or post-scripts.</p>
+<h4 id="include-attestations"><code>include-attestations</code></h4>
+<ul>
+<li>Default: false</li>
+<li>Type: Boolean</li>
+</ul>
+<p>When used with <code>npm audit signatures --json</code>, includes the full sigstore
+attestation bundles in the JSON output for each verified package. The
+bundles contain DSSE envelopes, verification material, and transparency log
+entries.</p>
 <h4 id="workspace"><code>workspace</code></h4>
 <ul>
 <li>Default:</li>
diff --git a/deps/npm/docs/output/commands/npm-bugs.html b/deps/npm/docs/output/commands/npm-bugs.html
index fa807fa6bfaed3..2b040aad7a9742 100644
--- a/deps/npm/docs/output/commands/npm-bugs.html
+++ b/deps/npm/docs/output/commands/npm-bugs.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-bugs----11111">
+<h1 id="----npm-bugs----11121">
     <span>npm-bugs</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Report bugs for a package in a web browser</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-cache.html b/deps/npm/docs/output/commands/npm-cache.html
index 9037645c51e382..59bc15e64b4f78 100644
--- a/deps/npm/docs/output/commands/npm-cache.html
+++ b/deps/npm/docs/output/commands/npm-cache.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-cache----11111">
+<h1 id="----npm-cache----11121">
     <span>npm-cache</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Manipulates packages cache</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-ci.html b/deps/npm/docs/output/commands/npm-ci.html
index 0816651531157b..e713c926853b7a 100644
--- a/deps/npm/docs/output/commands/npm-ci.html
+++ b/deps/npm/docs/output/commands/npm-ci.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-ci----11111">
+<h1 id="----npm-ci----11121">
     <span>npm-ci</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Clean install a project</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-completion.html b/deps/npm/docs/output/commands/npm-completion.html
index 2fe9944f7573ba..868929c5cf1294 100644
--- a/deps/npm/docs/output/commands/npm-completion.html
+++ b/deps/npm/docs/output/commands/npm-completion.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-completion----11111">
+<h1 id="----npm-completion----11121">
     <span>npm-completion</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Tab Completion for npm</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-config.html b/deps/npm/docs/output/commands/npm-config.html
index b8bfd67a530a11..5f5ace326516ec 100644
--- a/deps/npm/docs/output/commands/npm-config.html
+++ b/deps/npm/docs/output/commands/npm-config.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-config----11111">
+<h1 id="----npm-config----11121">
     <span>npm-config</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Manage the npm configuration files</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-dedupe.html b/deps/npm/docs/output/commands/npm-dedupe.html
index 195cd69f6731f8..21749194ae31bc 100644
--- a/deps/npm/docs/output/commands/npm-dedupe.html
+++ b/deps/npm/docs/output/commands/npm-dedupe.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-dedupe----11111">
+<h1 id="----npm-dedupe----11121">
     <span>npm-dedupe</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Reduce duplication in the package tree</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-deprecate.html b/deps/npm/docs/output/commands/npm-deprecate.html
index 1dd7caf57f1b49..0fb8cadb29d5ba 100644
--- a/deps/npm/docs/output/commands/npm-deprecate.html
+++ b/deps/npm/docs/output/commands/npm-deprecate.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-deprecate----11111">
+<h1 id="----npm-deprecate----11121">
     <span>npm-deprecate</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Deprecate a version of a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-diff.html b/deps/npm/docs/output/commands/npm-diff.html
index 28e6e2aff1e234..7ed4d107d8ae48 100644
--- a/deps/npm/docs/output/commands/npm-diff.html
+++ b/deps/npm/docs/output/commands/npm-diff.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-diff----11111">
+<h1 id="----npm-diff----11121">
     <span>npm-diff</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">The registry diff command</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-dist-tag.html b/deps/npm/docs/output/commands/npm-dist-tag.html
index 5625e9d1613cc1..f4a5b6f8e5ca57 100644
--- a/deps/npm/docs/output/commands/npm-dist-tag.html
+++ b/deps/npm/docs/output/commands/npm-dist-tag.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-dist-tag----11111">
+<h1 id="----npm-dist-tag----11121">
     <span>npm-dist-tag</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Modify package distribution tags</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-docs.html b/deps/npm/docs/output/commands/npm-docs.html
index 9278b5b4073e66..17244edf83a6be 100644
--- a/deps/npm/docs/output/commands/npm-docs.html
+++ b/deps/npm/docs/output/commands/npm-docs.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-docs----11111">
+<h1 id="----npm-docs----11121">
     <span>npm-docs</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Open documentation for a package in a web browser</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-doctor.html b/deps/npm/docs/output/commands/npm-doctor.html
index 21565a2c12f6eb..eda670272c9296 100644
--- a/deps/npm/docs/output/commands/npm-doctor.html
+++ b/deps/npm/docs/output/commands/npm-doctor.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-doctor----11111">
+<h1 id="----npm-doctor----11121">
     <span>npm-doctor</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Check the health of your npm environment</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-edit.html b/deps/npm/docs/output/commands/npm-edit.html
index 5caff2aa9f861d..1f3ce25c4b064a 100644
--- a/deps/npm/docs/output/commands/npm-edit.html
+++ b/deps/npm/docs/output/commands/npm-edit.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-edit----11111">
+<h1 id="----npm-edit----11121">
     <span>npm-edit</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Edit an installed package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-exec.html b/deps/npm/docs/output/commands/npm-exec.html
index 55518247acdd9f..4e6c048645c38a 100644
--- a/deps/npm/docs/output/commands/npm-exec.html
+++ b/deps/npm/docs/output/commands/npm-exec.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-exec----11111">
+<h1 id="----npm-exec----11121">
     <span>npm-exec</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Run a command from a local or remote npm package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-explain.html b/deps/npm/docs/output/commands/npm-explain.html
index fd9b4fe19a5dd6..6bae2eef58312c 100644
--- a/deps/npm/docs/output/commands/npm-explain.html
+++ b/deps/npm/docs/output/commands/npm-explain.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-explain----11111">
+<h1 id="----npm-explain----11121">
     <span>npm-explain</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Explain installed packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-explore.html b/deps/npm/docs/output/commands/npm-explore.html
index 1936c345582111..554827e26da756 100644
--- a/deps/npm/docs/output/commands/npm-explore.html
+++ b/deps/npm/docs/output/commands/npm-explore.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-explore----11111">
+<h1 id="----npm-explore----11121">
     <span>npm-explore</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Browse an installed package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-find-dupes.html b/deps/npm/docs/output/commands/npm-find-dupes.html
index 04370edd8ba11c..808a61c64167c1 100644
--- a/deps/npm/docs/output/commands/npm-find-dupes.html
+++ b/deps/npm/docs/output/commands/npm-find-dupes.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-find-dupes----11111">
+<h1 id="----npm-find-dupes----11121">
     <span>npm-find-dupes</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Find duplication in the package tree</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-fund.html b/deps/npm/docs/output/commands/npm-fund.html
index 2297635ae27b47..282ceffce8563f 100644
--- a/deps/npm/docs/output/commands/npm-fund.html
+++ b/deps/npm/docs/output/commands/npm-fund.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-fund----11111">
+<h1 id="----npm-fund----11121">
     <span>npm-fund</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Retrieve funding information</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-get.html b/deps/npm/docs/output/commands/npm-get.html
index 0b2f9dd572e3f2..3a3cf6c4a626b1 100644
--- a/deps/npm/docs/output/commands/npm-get.html
+++ b/deps/npm/docs/output/commands/npm-get.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-get----11111">
+<h1 id="----npm-get----11121">
     <span>npm-get</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Get a value from the npm configuration</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-help-search.html b/deps/npm/docs/output/commands/npm-help-search.html
index 66cdfe1fd090b3..bbfe72d189246a 100644
--- a/deps/npm/docs/output/commands/npm-help-search.html
+++ b/deps/npm/docs/output/commands/npm-help-search.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-help-search----11111">
+<h1 id="----npm-help-search----11121">
     <span>npm-help-search</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Search npm help documentation</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-help.html b/deps/npm/docs/output/commands/npm-help.html
index c4ea6e037d0afe..28af6a41d2c2fe 100644
--- a/deps/npm/docs/output/commands/npm-help.html
+++ b/deps/npm/docs/output/commands/npm-help.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-help----11111">
+<h1 id="----npm-help----11121">
     <span>npm-help</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Get help on npm</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-init.html b/deps/npm/docs/output/commands/npm-init.html
index b259127c68e1f4..0822f07ef6e0f8 100644
--- a/deps/npm/docs/output/commands/npm-init.html
+++ b/deps/npm/docs/output/commands/npm-init.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-init----11111">
+<h1 id="----npm-init----11121">
     <span>npm-init</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Create a package.json file</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-install-ci-test.html b/deps/npm/docs/output/commands/npm-install-ci-test.html
index 9177de9e34a1db..ac340b4f0af3fd 100644
--- a/deps/npm/docs/output/commands/npm-install-ci-test.html
+++ b/deps/npm/docs/output/commands/npm-install-ci-test.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-install-ci-test----11111">
+<h1 id="----npm-install-ci-test----11121">
     <span>npm-install-ci-test</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Install a project with a clean slate and run tests</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-install-test.html b/deps/npm/docs/output/commands/npm-install-test.html
index 0a6fe28ae8732f..4f3b150a4a1967 100644
--- a/deps/npm/docs/output/commands/npm-install-test.html
+++ b/deps/npm/docs/output/commands/npm-install-test.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-install-test----11111">
+<h1 id="----npm-install-test----11121">
     <span>npm-install-test</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Install package(s) and run tests</span>
 </header>
@@ -402,6 +402,7 @@ <h4 id="min-release-age"><code>min-release-age</code></h4>
 <p>This flag is a complement to <code>before</code>, which accepts an exact date instead
 of a relative number of days.</p>
 <p>This config cannot be used with: <code>before</code></p>
+<p>This value is not exported to the environment for child processes.</p>
 <h4 id="bin-links"><code>bin-links</code></h4>
 <ul>
 <li>Default: true</li>
diff --git a/deps/npm/docs/output/commands/npm-install.html b/deps/npm/docs/output/commands/npm-install.html
index 07b6acef4ce40b..af3fd1724aeac1 100644
--- a/deps/npm/docs/output/commands/npm-install.html
+++ b/deps/npm/docs/output/commands/npm-install.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-install----11111">
+<h1 id="----npm-install----11121">
     <span>npm-install</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Install a package</span>
 </header>
@@ -677,6 +677,7 @@ <h4 id="min-release-age"><code>min-release-age</code></h4>
 <p>This flag is a complement to <code>before</code>, which accepts an exact date instead
 of a relative number of days.</p>
 <p>This config cannot be used with: <code>before</code></p>
+<p>This value is not exported to the environment for child processes.</p>
 <h4 id="bin-links"><code>bin-links</code></h4>
 <ul>
 <li>Default: true</li>
diff --git a/deps/npm/docs/output/commands/npm-link.html b/deps/npm/docs/output/commands/npm-link.html
index 74c8d34a40290c..dce1cd126c74a0 100644
--- a/deps/npm/docs/output/commands/npm-link.html
+++ b/deps/npm/docs/output/commands/npm-link.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-link----11111">
+<h1 id="----npm-link----11121">
     <span>npm-link</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Symlink a package folder</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-ll.html b/deps/npm/docs/output/commands/npm-ll.html
index 2207540e832f4e..324f2fc7574735 100644
--- a/deps/npm/docs/output/commands/npm-ll.html
+++ b/deps/npm/docs/output/commands/npm-ll.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-ll----11111">
+<h1 id="----npm-ll----11121">
     <span>npm-ll</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">List installed packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-login.html b/deps/npm/docs/output/commands/npm-login.html
index f8398bd514d915..3469d2b6432aad 100644
--- a/deps/npm/docs/output/commands/npm-login.html
+++ b/deps/npm/docs/output/commands/npm-login.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-login----11111">
+<h1 id="----npm-login----11121">
     <span>npm-login</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Login to a registry user account</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-logout.html b/deps/npm/docs/output/commands/npm-logout.html
index e90ec8738f1e51..75200db0db47e3 100644
--- a/deps/npm/docs/output/commands/npm-logout.html
+++ b/deps/npm/docs/output/commands/npm-logout.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-logout----11111">
+<h1 id="----npm-logout----11121">
     <span>npm-logout</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Log out of the registry</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html
index 5c6d051f6da5d2..8e9edae452abe2 100644
--- a/deps/npm/docs/output/commands/npm-ls.html
+++ b/deps/npm/docs/output/commands/npm-ls.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-ls----11111">
+<h1 id="----npm-ls----11121">
     <span>npm-ls</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">List installed packages</span>
 </header>
@@ -209,7 +209,7 @@ <h3 id="description">Description</h3>
 <p>Positional arguments are <code>name@version-range</code> identifiers, which will limit the results to only the paths to the packages named.
 Note that nested packages will <em>also</em> show the paths to the specified packages.
 For example, running <code>npm ls promzard</code> in npm's source tree will show:</p>
-<pre><code class="language-bash">npm@11.11.1 /path/to/npm
+<pre><code class="language-bash">npm@11.12.1 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5
 </code></pre>
diff --git a/deps/npm/docs/output/commands/npm-org.html b/deps/npm/docs/output/commands/npm-org.html
index 640c87bf527128..22657f36b8727a 100644
--- a/deps/npm/docs/output/commands/npm-org.html
+++ b/deps/npm/docs/output/commands/npm-org.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-org----11111">
+<h1 id="----npm-org----11121">
     <span>npm-org</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Manage orgs</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-outdated.html b/deps/npm/docs/output/commands/npm-outdated.html
index 3469df56add2a9..c19a6b4900927c 100644
--- a/deps/npm/docs/output/commands/npm-outdated.html
+++ b/deps/npm/docs/output/commands/npm-outdated.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-outdated----11111">
+<h1 id="----npm-outdated----11121">
     <span>npm-outdated</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Check for outdated packages</span>
 </header>
@@ -341,6 +341,7 @@ <h4 id="min-release-age"><code>min-release-age</code></h4>
 <p>This flag is a complement to <code>before</code>, which accepts an exact date instead
 of a relative number of days.</p>
 <p>This config cannot be used with: <code>before</code></p>
+<p>This value is not exported to the environment for child processes.</p>
 <h3 id="see-also">See Also</h3>
 <ul>
 <li><a href="../using-npm/package-spec.html">package spec</a></li>
diff --git a/deps/npm/docs/output/commands/npm-owner.html b/deps/npm/docs/output/commands/npm-owner.html
index fd5291d69b506b..7712718fd66615 100644
--- a/deps/npm/docs/output/commands/npm-owner.html
+++ b/deps/npm/docs/output/commands/npm-owner.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-owner----11111">
+<h1 id="----npm-owner----11121">
     <span>npm-owner</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Manage package owners</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-pack.html b/deps/npm/docs/output/commands/npm-pack.html
index fba8289e0527e6..cdcd15b910c862 100644
--- a/deps/npm/docs/output/commands/npm-pack.html
+++ b/deps/npm/docs/output/commands/npm-pack.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-pack----11111">
+<h1 id="----npm-pack----11121">
     <span>npm-pack</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Create a tarball from a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-ping.html b/deps/npm/docs/output/commands/npm-ping.html
index f88d576d495ebc..db7b4741c06ba3 100644
--- a/deps/npm/docs/output/commands/npm-ping.html
+++ b/deps/npm/docs/output/commands/npm-ping.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-ping----11111">
+<h1 id="----npm-ping----11121">
     <span>npm-ping</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Ping npm registry</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-pkg.html b/deps/npm/docs/output/commands/npm-pkg.html
index 08173ffca459fa..13a3549b580c3d 100644
--- a/deps/npm/docs/output/commands/npm-pkg.html
+++ b/deps/npm/docs/output/commands/npm-pkg.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-pkg----11111">
+<h1 id="----npm-pkg----11121">
     <span>npm-pkg</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Manages your package.json</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-prefix.html b/deps/npm/docs/output/commands/npm-prefix.html
index 616cb1300bcf8a..8da182a2e749a7 100644
--- a/deps/npm/docs/output/commands/npm-prefix.html
+++ b/deps/npm/docs/output/commands/npm-prefix.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-prefix----11111">
+<h1 id="----npm-prefix----11121">
     <span>npm-prefix</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Display prefix</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-profile.html b/deps/npm/docs/output/commands/npm-profile.html
index 6bff0b4e6e10dd..d983bcdc4c2959 100644
--- a/deps/npm/docs/output/commands/npm-profile.html
+++ b/deps/npm/docs/output/commands/npm-profile.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-profile----11111">
+<h1 id="----npm-profile----11121">
     <span>npm-profile</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Change settings on your registry profile</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-prune.html b/deps/npm/docs/output/commands/npm-prune.html
index 86dd429a5ffd74..ca7b6c433add08 100644
--- a/deps/npm/docs/output/commands/npm-prune.html
+++ b/deps/npm/docs/output/commands/npm-prune.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-prune----11111">
+<h1 id="----npm-prune----11121">
     <span>npm-prune</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Remove extraneous packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-publish.html b/deps/npm/docs/output/commands/npm-publish.html
index a5c1cea63f28bb..17dc857fd2badc 100644
--- a/deps/npm/docs/output/commands/npm-publish.html
+++ b/deps/npm/docs/output/commands/npm-publish.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-publish----11111">
+<h1 id="----npm-publish----11121">
     <span>npm-publish</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Publish a package</span>
 </header>
@@ -228,6 +228,7 @@ <h3 id="examples">Examples</h3>
 <li>f) a <code><name></code> that has a "latest" tag satisfying (e)</li>
 <li>g) a <code><git remote url></code> that resolves to (a)</li>
 </ul>
+<p>If either (a) or (b) is specified as a relative path, it should begin with an explicit <code>./</code> prefix.</p>
 <p>The publish will fail if the package name and version combination already exists in the specified registry.</p>
 <p>Once a package is published with a given name and version, that specific name and version combination can never be used again, even if it is removed with <a href="../commands/npm-unpublish.html"><code>npm unpublish</code></a>.</p>
 <p>As of <code>npm@5</code>, both a sha1sum and an integrity field with a sha512sum of the tarball will be submitted to the registry during publication.
diff --git a/deps/npm/docs/output/commands/npm-query.html b/deps/npm/docs/output/commands/npm-query.html
index 3e1851a521b156..f1a1650a101967 100644
--- a/deps/npm/docs/output/commands/npm-query.html
+++ b/deps/npm/docs/output/commands/npm-query.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-query----11111">
+<h1 id="----npm-query----11121">
     <span>npm-query</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Dependency selector query</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-rebuild.html b/deps/npm/docs/output/commands/npm-rebuild.html
index 713867b0d0b28e..94969d6c331c7f 100644
--- a/deps/npm/docs/output/commands/npm-rebuild.html
+++ b/deps/npm/docs/output/commands/npm-rebuild.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-rebuild----11111">
+<h1 id="----npm-rebuild----11121">
     <span>npm-rebuild</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Rebuild a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-repo.html b/deps/npm/docs/output/commands/npm-repo.html
index f4f226ee6ca3a3..2c1243ef0247c1 100644
--- a/deps/npm/docs/output/commands/npm-repo.html
+++ b/deps/npm/docs/output/commands/npm-repo.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-repo----11111">
+<h1 id="----npm-repo----11121">
     <span>npm-repo</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Open package repository page in the browser</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-restart.html b/deps/npm/docs/output/commands/npm-restart.html
index 29bea2ad94fb0a..776d742edcb859 100644
--- a/deps/npm/docs/output/commands/npm-restart.html
+++ b/deps/npm/docs/output/commands/npm-restart.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-restart----11111">
+<h1 id="----npm-restart----11121">
     <span>npm-restart</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Restart a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-root.html b/deps/npm/docs/output/commands/npm-root.html
index 94db6ba66642a8..12d8e38c7414d7 100644
--- a/deps/npm/docs/output/commands/npm-root.html
+++ b/deps/npm/docs/output/commands/npm-root.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-root----11111">
+<h1 id="----npm-root----11121">
     <span>npm-root</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Display npm root</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-run.html b/deps/npm/docs/output/commands/npm-run.html
index a82a3da49388d5..ea63a7e17bb527 100644
--- a/deps/npm/docs/output/commands/npm-run.html
+++ b/deps/npm/docs/output/commands/npm-run.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-run----11111">
+<h1 id="----npm-run----11121">
     <span>npm-run</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Run arbitrary package scripts</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-sbom.html b/deps/npm/docs/output/commands/npm-sbom.html
index e5d680cc23c342..d656ee241b6a7b 100644
--- a/deps/npm/docs/output/commands/npm-sbom.html
+++ b/deps/npm/docs/output/commands/npm-sbom.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-sbom----11111">
+<h1 id="----npm-sbom----11121">
     <span>npm-sbom</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Generate a Software Bill of Materials (SBOM)</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-search.html b/deps/npm/docs/output/commands/npm-search.html
index 8b8b208cfec8e7..94f58f495a6629 100644
--- a/deps/npm/docs/output/commands/npm-search.html
+++ b/deps/npm/docs/output/commands/npm-search.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-search----11111">
+<h1 id="----npm-search----11121">
     <span>npm-search</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Search for packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-set.html b/deps/npm/docs/output/commands/npm-set.html
index 07ac21208aa929..363a444be92aa1 100644
--- a/deps/npm/docs/output/commands/npm-set.html
+++ b/deps/npm/docs/output/commands/npm-set.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-set----11111">
+<h1 id="----npm-set----11121">
     <span>npm-set</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Set a value in the npm configuration</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-shrinkwrap.html b/deps/npm/docs/output/commands/npm-shrinkwrap.html
index 28179afe5d77fb..f5cbb0c34edc42 100644
--- a/deps/npm/docs/output/commands/npm-shrinkwrap.html
+++ b/deps/npm/docs/output/commands/npm-shrinkwrap.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-shrinkwrap----11111">
+<h1 id="----npm-shrinkwrap----11121">
     <span>npm-shrinkwrap</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Lock down dependency versions for publication</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-star.html b/deps/npm/docs/output/commands/npm-star.html
index bed11d853274df..3533e05441276f 100644
--- a/deps/npm/docs/output/commands/npm-star.html
+++ b/deps/npm/docs/output/commands/npm-star.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-star----11111">
+<h1 id="----npm-star----11121">
     <span>npm-star</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Mark your favorite packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-stars.html b/deps/npm/docs/output/commands/npm-stars.html
index 1e46905bb1a2dd..0b34ca23a66c80 100644
--- a/deps/npm/docs/output/commands/npm-stars.html
+++ b/deps/npm/docs/output/commands/npm-stars.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-stars----11111">
+<h1 id="----npm-stars----11121">
     <span>npm-stars</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">View packages marked as favorites</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-start.html b/deps/npm/docs/output/commands/npm-start.html
index 5a4ea33a60d388..d08c5474a3b97c 100644
--- a/deps/npm/docs/output/commands/npm-start.html
+++ b/deps/npm/docs/output/commands/npm-start.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-start----11111">
+<h1 id="----npm-start----11121">
     <span>npm-start</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Start a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-stop.html b/deps/npm/docs/output/commands/npm-stop.html
index 403b4df448f296..64b460da80b30e 100644
--- a/deps/npm/docs/output/commands/npm-stop.html
+++ b/deps/npm/docs/output/commands/npm-stop.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-stop----11111">
+<h1 id="----npm-stop----11121">
     <span>npm-stop</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Stop a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-team.html b/deps/npm/docs/output/commands/npm-team.html
index 2f5198c2082771..4a2891e78f6c68 100644
--- a/deps/npm/docs/output/commands/npm-team.html
+++ b/deps/npm/docs/output/commands/npm-team.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-team----11111">
+<h1 id="----npm-team----11121">
     <span>npm-team</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Manage organization teams and team memberships</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-test.html b/deps/npm/docs/output/commands/npm-test.html
index e6192317e09ef3..9a4d40757e343b 100644
--- a/deps/npm/docs/output/commands/npm-test.html
+++ b/deps/npm/docs/output/commands/npm-test.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-test----11111">
+<h1 id="----npm-test----11121">
     <span>npm-test</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Test a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-token.html b/deps/npm/docs/output/commands/npm-token.html
index ed4519a8d8b686..328d7aeb798b6f 100644
--- a/deps/npm/docs/output/commands/npm-token.html
+++ b/deps/npm/docs/output/commands/npm-token.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-token----11111">
+<h1 id="----npm-token----11121">
     <span>npm-token</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Manage your authentication tokens</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-trust.html b/deps/npm/docs/output/commands/npm-trust.html
index 8d9082f694c567..7814567feb0a1e 100644
--- a/deps/npm/docs/output/commands/npm-trust.html
+++ b/deps/npm/docs/output/commands/npm-trust.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-trust----11111">
+<h1 id="----npm-trust----11121">
     <span>npm-trust</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Manage trusted publishing relationships between packages and CI/CD providers</span>
 </header>
@@ -199,7 +199,6 @@ <h2 id="table-of-contents">Table of contents</h2>
 </section>
 
 <div id="_content"><h3 id="synopsis">Synopsis</h3>
-<pre><code class="language-bash"></code></pre>
 <p>Note: This command is unaware of workspaces.</p>
 <h3 id="prerequisites">Prerequisites</h3>
 <p>Before using npm trust commands, ensure the following requirements are met:</p>
diff --git a/deps/npm/docs/output/commands/npm-undeprecate.html b/deps/npm/docs/output/commands/npm-undeprecate.html
index 469f7ded0d83b8..f92ff69ee51fb6 100644
--- a/deps/npm/docs/output/commands/npm-undeprecate.html
+++ b/deps/npm/docs/output/commands/npm-undeprecate.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-undeprecate----11111">
+<h1 id="----npm-undeprecate----11121">
     <span>npm-undeprecate</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Undeprecate a version of a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-uninstall.html b/deps/npm/docs/output/commands/npm-uninstall.html
index a617d154dc525f..35e934b77ec199 100644
--- a/deps/npm/docs/output/commands/npm-uninstall.html
+++ b/deps/npm/docs/output/commands/npm-uninstall.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-uninstall----11111">
+<h1 id="----npm-uninstall----11121">
     <span>npm-uninstall</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Remove a package</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-unpublish.html b/deps/npm/docs/output/commands/npm-unpublish.html
index a728e0f4d56aa3..4091e5c782d264 100644
--- a/deps/npm/docs/output/commands/npm-unpublish.html
+++ b/deps/npm/docs/output/commands/npm-unpublish.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-unpublish----11111">
+<h1 id="----npm-unpublish----11121">
     <span>npm-unpublish</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Remove a package from the registry</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-unstar.html b/deps/npm/docs/output/commands/npm-unstar.html
index ec751ca17381fc..6be57361f2a502 100644
--- a/deps/npm/docs/output/commands/npm-unstar.html
+++ b/deps/npm/docs/output/commands/npm-unstar.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-unstar----11111">
+<h1 id="----npm-unstar----11121">
     <span>npm-unstar</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Remove an item from your favorite packages</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-update.html b/deps/npm/docs/output/commands/npm-update.html
index 8c64d8cb02a8fc..0a30a7356746f8 100644
--- a/deps/npm/docs/output/commands/npm-update.html
+++ b/deps/npm/docs/output/commands/npm-update.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-update----11111">
+<h1 id="----npm-update----11121">
     <span>npm-update</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Update packages</span>
 </header>
@@ -442,6 +442,7 @@ <h4 id="min-release-age"><code>min-release-age</code></h4>
 <p>This flag is a complement to <code>before</code>, which accepts an exact date instead
 of a relative number of days.</p>
 <p>This config cannot be used with: <code>before</code></p>
+<p>This value is not exported to the environment for child processes.</p>
 <h4 id="bin-links"><code>bin-links</code></h4>
 <ul>
 <li>Default: true</li>
diff --git a/deps/npm/docs/output/commands/npm-version.html b/deps/npm/docs/output/commands/npm-version.html
index fcf5f7f6bf1ab6..1d3e9cc5f74fe0 100644
--- a/deps/npm/docs/output/commands/npm-version.html
+++ b/deps/npm/docs/output/commands/npm-version.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-version----11111">
+<h1 id="----npm-version----11121">
     <span>npm-version</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Bump a package version</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-view.html b/deps/npm/docs/output/commands/npm-view.html
index 682902d4b79089..e93a7028ec7667 100644
--- a/deps/npm/docs/output/commands/npm-view.html
+++ b/deps/npm/docs/output/commands/npm-view.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-view----11111">
+<h1 id="----npm-view----11121">
     <span>npm-view</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">View registry info</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm-whoami.html b/deps/npm/docs/output/commands/npm-whoami.html
index 4daee589dd841a..ca4e63f8736443 100644
--- a/deps/npm/docs/output/commands/npm-whoami.html
+++ b/deps/npm/docs/output/commands/npm-whoami.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-whoami----11111">
+<h1 id="----npm-whoami----11121">
     <span>npm-whoami</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Display npm username</span>
 </header>
diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html
index e64366fc75a975..901b9d11514e3f 100644
--- a/deps/npm/docs/output/commands/npm.html
+++ b/deps/npm/docs/output/commands/npm.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm----11111">
+<h1 id="----npm----11121">
     <span>npm</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">javascript package manager</span>
 </header>
@@ -203,7 +203,7 @@ <h2 id="table-of-contents">Table of contents</h2>
 </code></pre>
 <p>Note: This command is unaware of workspaces.</p>
 <h3 id="version">Version</h3>
-<p>11.11.1</p>
+<p>11.12.1</p>
 <h3 id="description">Description</h3>
 <p>npm is the package manager for the Node JavaScript platform.
 It puts modules in place so that node can find them, and manages dependency conflicts intelligently.</p>
diff --git a/deps/npm/docs/output/commands/npx.html b/deps/npm/docs/output/commands/npx.html
index 08bc84e9953fad..00f5702e081fcc 100644
--- a/deps/npm/docs/output/commands/npx.html
+++ b/deps/npm/docs/output/commands/npx.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npx----11111">
+<h1 id="----npx----11121">
     <span>npx</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Run a command from a local or remote npm package</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/folders.html b/deps/npm/docs/output/configuring-npm/folders.html
index c278f339ceaf04..974d42b2c656a9 100644
--- a/deps/npm/docs/output/configuring-npm/folders.html
+++ b/deps/npm/docs/output/configuring-npm/folders.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----folders----11111">
+<h1 id="----folders----11121">
     <span>Folders</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Folder structures used by npm</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/install.html b/deps/npm/docs/output/configuring-npm/install.html
index 0312f76a620994..0fda7ec593cefa 100644
--- a/deps/npm/docs/output/configuring-npm/install.html
+++ b/deps/npm/docs/output/configuring-npm/install.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----install----11111">
+<h1 id="----install----11121">
     <span>Install</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Download and install node and npm</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/npm-global.html b/deps/npm/docs/output/configuring-npm/npm-global.html
index c278f339ceaf04..974d42b2c656a9 100644
--- a/deps/npm/docs/output/configuring-npm/npm-global.html
+++ b/deps/npm/docs/output/configuring-npm/npm-global.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----folders----11111">
+<h1 id="----folders----11121">
     <span>Folders</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Folder structures used by npm</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/npm-json.html b/deps/npm/docs/output/configuring-npm/npm-json.html
index 64be225d20808e..07422781b58f05 100644
--- a/deps/npm/docs/output/configuring-npm/npm-json.html
+++ b/deps/npm/docs/output/configuring-npm/npm-json.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----packagejson----11111">
+<h1 id="----packagejson----11121">
     <span>package.json</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Specifics of npm's package.json handling</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
index 97a6b0c9fb8d6f..0eea07f189f72c 100644
--- a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
+++ b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npm-shrinkwrapjson----11111">
+<h1 id="----npm-shrinkwrapjson----11121">
     <span>npm-shrinkwrap.json</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">A publishable lockfile</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/npmrc.html b/deps/npm/docs/output/configuring-npm/npmrc.html
index e1a3b32e5b8f30..1f91d117c07f84 100644
--- a/deps/npm/docs/output/configuring-npm/npmrc.html
+++ b/deps/npm/docs/output/configuring-npm/npmrc.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----npmrc----11111">
+<h1 id="----npmrc----11121">
     <span>.npmrc</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">The npm config files</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/package-json.html b/deps/npm/docs/output/configuring-npm/package-json.html
index 64be225d20808e..07422781b58f05 100644
--- a/deps/npm/docs/output/configuring-npm/package-json.html
+++ b/deps/npm/docs/output/configuring-npm/package-json.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----packagejson----11111">
+<h1 id="----packagejson----11121">
     <span>package.json</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Specifics of npm's package.json handling</span>
 </header>
diff --git a/deps/npm/docs/output/configuring-npm/package-lock-json.html b/deps/npm/docs/output/configuring-npm/package-lock-json.html
index f11857e2c95c87..9eedd77093b0c3 100644
--- a/deps/npm/docs/output/configuring-npm/package-lock-json.html
+++ b/deps/npm/docs/output/configuring-npm/package-lock-json.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----package-lockjson----11111">
+<h1 id="----package-lockjson----11121">
     <span>package-lock.json</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">A manifestation of the manifest</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/config.html b/deps/npm/docs/output/using-npm/config.html
index 12d8c8ae0e4e38..0d0ef99c6b6335 100644
--- a/deps/npm/docs/output/using-npm/config.html
+++ b/deps/npm/docs/output/using-npm/config.html
@@ -186,16 +186,16 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----config----11111">
+<h1 id="----config----11121">
     <span>Config</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">About npm configuration</span>
 </header>
 
 <section id="table_of_contents">
 <h2 id="table-of-contents">Table of contents</h2>
-<div id="_table_of_contents"><ul><li><a href="#description">Description</a></li><ul><li><a href="#command-line-flags">Command Line Flags</a></li><li><a href="#environment-variables">Environment Variables</a></li><li><a href="#npmrc-files">npmrc Files</a></li><li><a href="#default-configs">Default Configs</a></li></ul><li><a href="#shorthands-and-other-cli-niceties">Shorthands and Other CLI Niceties</a></li><li><a href="#config-settings">Config Settings</a></li><ul><li><a href="#auth"><code>_auth</code></a></li><li><a href="#access"><code>access</code></a></li><li><a href="#all"><code>all</code></a></li><li><a href="#allow-git"><code>allow-git</code></a></li><li><a href="#allow-same-version"><code>allow-same-version</code></a></li><li><a href="#audit"><code>audit</code></a></li><li><a href="#audit-level"><code>audit-level</code></a></li><li><a href="#auth-type"><code>auth-type</code></a></li><li><a href="#before"><code>before</code></a></li><li><a href="#bin-links"><code>bin-links</code></a></li><li><a href="#browser"><code>browser</code></a></li><li><a href="#bypass-2fa"><code>bypass-2fa</code></a></li><li><a href="#ca"><code>ca</code></a></li><li><a href="#cache"><code>cache</code></a></li><li><a href="#cafile"><code>cafile</code></a></li><li><a href="#call"><code>call</code></a></li><li><a href="#cidr"><code>cidr</code></a></li><li><a href="#color"><code>color</code></a></li><li><a href="#commit-hooks"><code>commit-hooks</code></a></li><li><a href="#cpu"><code>cpu</code></a></li><li><a href="#depth"><code>depth</code></a></li><li><a href="#description2"><code>description</code></a></li><li><a href="#diff"><code>diff</code></a></li><li><a href="#diff-dst-prefix"><code>diff-dst-prefix</code></a></li><li><a href="#diff-ignore-all-space"><code>diff-ignore-all-space</code></a></li><li><a href="#diff-name-only"><code>diff-name-only</code></a></li><li><a href="#diff-no-prefix"><code>diff-no-prefix</code></a></li><li><a href="#diff-src-prefix"><code>diff-src-prefix</code></a></li><li><a href="#diff-text"><code>diff-text</code></a></li><li><a href="#diff-unified"><code>diff-unified</code></a></li><li><a href="#dry-run"><code>dry-run</code></a></li><li><a href="#editor"><code>editor</code></a></li><li><a href="#engine-strict"><code>engine-strict</code></a></li><li><a href="#expect-result-count"><code>expect-result-count</code></a></li><li><a href="#expect-results"><code>expect-results</code></a></li><li><a href="#expires"><code>expires</code></a></li><li><a href="#fetch-retries"><code>fetch-retries</code></a></li><li><a href="#fetch-retry-factor"><code>fetch-retry-factor</code></a></li><li><a href="#fetch-retry-maxtimeout"><code>fetch-retry-maxtimeout</code></a></li><li><a href="#fetch-retry-mintimeout"><code>fetch-retry-mintimeout</code></a></li><li><a href="#fetch-timeout"><code>fetch-timeout</code></a></li><li><a href="#force"><code>force</code></a></li><li><a href="#foreground-scripts"><code>foreground-scripts</code></a></li><li><a href="#format-package-lock"><code>format-package-lock</code></a></li><li><a href="#fund"><code>fund</code></a></li><li><a href="#git"><code>git</code></a></li><li><a href="#git-tag-version"><code>git-tag-version</code></a></li><li><a href="#global"><code>global</code></a></li><li><a href="#globalconfig"><code>globalconfig</code></a></li><li><a href="#heading"><code>heading</code></a></li><li><a href="#https-proxy"><code>https-proxy</code></a></li><li><a href="#if-present"><code>if-present</code></a></li><li><a href="#ignore-scripts"><code>ignore-scripts</code></a></li><li><a href="#include"><code>include</code></a></li><li><a href="#include-staged"><code>include-staged</code></a></li><li><a href="#include-workspace-root"><code>include-workspace-root</code></a></li><li><a href="#init-author-email"><code>init-author-email</code></a></li><li><a href="#init-author-name"><code>init-author-name</code></a></li><li><a href="#init-author-url"><code>init-author-url</code></a></li><li><a href="#init-license"><code>init-license</code></a></li><li><a href="#init-module"><code>init-module</code></a></li><li><a href="#init-private"><code>init-private</code></a></li><li><a href="#init-type"><code>init-type</code></a></li><li><a href="#init-version"><code>init-version</code></a></li><li><a href="#install-links"><code>install-links</code></a></li><li><a href="#install-strategy"><code>install-strategy</code></a></li><li><a href="#json"><code>json</code></a></li><li><a href="#legacy-peer-deps"><code>legacy-peer-deps</code></a></li><li><a href="#libc"><code>libc</code></a></li><li><a href="#link"><code>link</code></a></li><li><a href="#local-address"><code>local-address</code></a></li><li><a href="#location"><code>location</code></a></li><li><a href="#lockfile-version"><code>lockfile-version</code></a></li><li><a href="#loglevel"><code>loglevel</code></a></li><li><a href="#logs-dir"><code>logs-dir</code></a></li><li><a href="#logs-max"><code>logs-max</code></a></li><li><a href="#long"><code>long</code></a></li><li><a href="#maxsockets"><code>maxsockets</code></a></li><li><a href="#message"><code>message</code></a></li><li><a href="#min-release-age"><code>min-release-age</code></a></li><li><a href="#name"><code>name</code></a></li><li><a href="#node-gyp"><code>node-gyp</code></a></li><li><a href="#node-options"><code>node-options</code></a></li><li><a href="#noproxy"><code>noproxy</code></a></li><li><a href="#offline"><code>offline</code></a></li><li><a href="#omit"><code>omit</code></a></li><li><a href="#omit-lockfile-registry-resolved"><code>omit-lockfile-registry-resolved</code></a></li><li><a href="#orgs"><code>orgs</code></a></li><li><a href="#orgs-permission"><code>orgs-permission</code></a></li><li><a href="#os"><code>os</code></a></li><li><a href="#otp"><code>otp</code></a></li><li><a href="#pack-destination"><code>pack-destination</code></a></li><li><a href="#package"><code>package</code></a></li><li><a href="#package-lock"><code>package-lock</code></a></li><li><a href="#package-lock-only"><code>package-lock-only</code></a></li><li><a href="#packages"><code>packages</code></a></li><li><a href="#packages-all"><code>packages-all</code></a></li><li><a href="#packages-and-scopes-permission"><code>packages-and-scopes-permission</code></a></li><li><a href="#parseable"><code>parseable</code></a></li><li><a href="#password"><code>password</code></a></li><li><a href="#prefer-dedupe"><code>prefer-dedupe</code></a></li><li><a href="#prefer-offline"><code>prefer-offline</code></a></li><li><a href="#prefer-online"><code>prefer-online</code></a></li><li><a href="#prefix"><code>prefix</code></a></li><li><a href="#preid"><code>preid</code></a></li><li><a href="#progress"><code>progress</code></a></li><li><a href="#provenance"><code>provenance</code></a></li><li><a href="#provenance-file"><code>provenance-file</code></a></li><li><a href="#proxy"><code>proxy</code></a></li><li><a href="#read-only"><code>read-only</code></a></li><li><a href="#rebuild-bundle"><code>rebuild-bundle</code></a></li><li><a href="#registry"><code>registry</code></a></li><li><a href="#replace-registry-host"><code>replace-registry-host</code></a></li><li><a href="#save"><code>save</code></a></li><li><a href="#save-bundle"><code>save-bundle</code></a></li><li><a href="#save-dev"><code>save-dev</code></a></li><li><a href="#save-exact"><code>save-exact</code></a></li><li><a href="#save-optional"><code>save-optional</code></a></li><li><a href="#save-peer"><code>save-peer</code></a></li><li><a href="#save-prefix"><code>save-prefix</code></a></li><li><a href="#save-prod"><code>save-prod</code></a></li><li><a href="#sbom-format"><code>sbom-format</code></a></li><li><a href="#sbom-type"><code>sbom-type</code></a></li><li><a href="#scope"><code>scope</code></a></li><li><a href="#scopes"><code>scopes</code></a></li><li><a href="#script-shell"><code>script-shell</code></a></li><li><a href="#searchexclude"><code>searchexclude</code></a></li><li><a href="#searchlimit"><code>searchlimit</code></a></li><li><a href="#searchopts"><code>searchopts</code></a></li><li><a href="#searchstaleness"><code>searchstaleness</code></a></li><li><a href="#shell"><code>shell</code></a></li><li><a href="#sign-git-commit"><code>sign-git-commit</code></a></li><li><a href="#sign-git-tag"><code>sign-git-tag</code></a></li><li><a href="#strict-peer-deps"><code>strict-peer-deps</code></a></li><li><a href="#strict-ssl"><code>strict-ssl</code></a></li><li><a href="#tag"><code>tag</code></a></li><li><a href="#tag-version-prefix"><code>tag-version-prefix</code></a></li><li><a href="#timing"><code>timing</code></a></li><li><a href="#token-description"><code>token-description</code></a></li><li><a href="#umask"><code>umask</code></a></li><li><a href="#unicode"><code>unicode</code></a></li><li><a href="#update-notifier"><code>update-notifier</code></a></li><li><a href="#usage"><code>usage</code></a></li><li><a href="#user-agent"><code>user-agent</code></a></li><li><a href="#userconfig"><code>userconfig</code></a></li><li><a href="#version"><code>version</code></a></li><li><a href="#versions"><code>versions</code></a></li><li><a href="#viewer"><code>viewer</code></a></li><li><a href="#which"><code>which</code></a></li><li><a href="#workspace"><code>workspace</code></a></li><li><a href="#workspaces"><code>workspaces</code></a></li><li><a href="#workspaces-update"><code>workspaces-update</code></a></li><li><a href="#yes"><code>yes</code></a></li><li><a href="#also"><code>also</code></a></li><li><a href="#cache-max"><code>cache-max</code></a></li><li><a href="#cache-min"><code>cache-min</code></a></li><li><a href="#cert"><code>cert</code></a></li><li><a href="#dev"><code>dev</code></a></li><li><a href="#global-style"><code>global-style</code></a></li><li><a href="#initauthoremail"><code>init.author.email</code></a></li><li><a href="#initauthorname"><code>init.author.name</code></a></li><li><a href="#initauthorurl"><code>init.author.url</code></a></li><li><a href="#initlicense"><code>init.license</code></a></li><li><a href="#initmodule"><code>init.module</code></a></li><li><a href="#initversion"><code>init.version</code></a></li><li><a href="#key"><code>key</code></a></li><li><a href="#legacy-bundling"><code>legacy-bundling</code></a></li><li><a href="#only"><code>only</code></a></li><li><a href="#optional"><code>optional</code></a></li><li><a href="#production"><code>production</code></a></li><li><a href="#shrinkwrap"><code>shrinkwrap</code></a></li></ul><li><a href="#see-also">See also</a></li></ul></div>
+<div id="_table_of_contents"><ul><li><a href="#description">Description</a></li><ul><li><a href="#command-line-flags">Command Line Flags</a></li><li><a href="#environment-variables">Environment Variables</a></li><li><a href="#npmrc-files">npmrc Files</a></li><li><a href="#default-configs">Default Configs</a></li></ul><li><a href="#shorthands-and-other-cli-niceties">Shorthands and Other CLI Niceties</a></li><li><a href="#config-settings">Config Settings</a></li><ul><li><a href="#auth"><code>_auth</code></a></li><li><a href="#access"><code>access</code></a></li><li><a href="#all"><code>all</code></a></li><li><a href="#allow-git"><code>allow-git</code></a></li><li><a href="#allow-same-version"><code>allow-same-version</code></a></li><li><a href="#audit"><code>audit</code></a></li><li><a href="#audit-level"><code>audit-level</code></a></li><li><a href="#auth-type"><code>auth-type</code></a></li><li><a href="#before"><code>before</code></a></li><li><a href="#bin-links"><code>bin-links</code></a></li><li><a href="#browser"><code>browser</code></a></li><li><a href="#bypass-2fa"><code>bypass-2fa</code></a></li><li><a href="#ca"><code>ca</code></a></li><li><a href="#cache"><code>cache</code></a></li><li><a href="#cafile"><code>cafile</code></a></li><li><a href="#call"><code>call</code></a></li><li><a href="#cidr"><code>cidr</code></a></li><li><a href="#color"><code>color</code></a></li><li><a href="#commit-hooks"><code>commit-hooks</code></a></li><li><a href="#cpu"><code>cpu</code></a></li><li><a href="#depth"><code>depth</code></a></li><li><a href="#description2"><code>description</code></a></li><li><a href="#diff"><code>diff</code></a></li><li><a href="#diff-dst-prefix"><code>diff-dst-prefix</code></a></li><li><a href="#diff-ignore-all-space"><code>diff-ignore-all-space</code></a></li><li><a href="#diff-name-only"><code>diff-name-only</code></a></li><li><a href="#diff-no-prefix"><code>diff-no-prefix</code></a></li><li><a href="#diff-src-prefix"><code>diff-src-prefix</code></a></li><li><a href="#diff-text"><code>diff-text</code></a></li><li><a href="#diff-unified"><code>diff-unified</code></a></li><li><a href="#dry-run"><code>dry-run</code></a></li><li><a href="#editor"><code>editor</code></a></li><li><a href="#engine-strict"><code>engine-strict</code></a></li><li><a href="#expect-result-count"><code>expect-result-count</code></a></li><li><a href="#expect-results"><code>expect-results</code></a></li><li><a href="#expires"><code>expires</code></a></li><li><a href="#fetch-retries"><code>fetch-retries</code></a></li><li><a href="#fetch-retry-factor"><code>fetch-retry-factor</code></a></li><li><a href="#fetch-retry-maxtimeout"><code>fetch-retry-maxtimeout</code></a></li><li><a href="#fetch-retry-mintimeout"><code>fetch-retry-mintimeout</code></a></li><li><a href="#fetch-timeout"><code>fetch-timeout</code></a></li><li><a href="#force"><code>force</code></a></li><li><a href="#foreground-scripts"><code>foreground-scripts</code></a></li><li><a href="#format-package-lock"><code>format-package-lock</code></a></li><li><a href="#fund"><code>fund</code></a></li><li><a href="#git"><code>git</code></a></li><li><a href="#git-tag-version"><code>git-tag-version</code></a></li><li><a href="#global"><code>global</code></a></li><li><a href="#globalconfig"><code>globalconfig</code></a></li><li><a href="#heading"><code>heading</code></a></li><li><a href="#https-proxy"><code>https-proxy</code></a></li><li><a href="#if-present"><code>if-present</code></a></li><li><a href="#ignore-scripts"><code>ignore-scripts</code></a></li><li><a href="#include"><code>include</code></a></li><li><a href="#include-attestations"><code>include-attestations</code></a></li><li><a href="#include-staged"><code>include-staged</code></a></li><li><a href="#include-workspace-root"><code>include-workspace-root</code></a></li><li><a href="#init-author-email"><code>init-author-email</code></a></li><li><a href="#init-author-name"><code>init-author-name</code></a></li><li><a href="#init-author-url"><code>init-author-url</code></a></li><li><a href="#init-license"><code>init-license</code></a></li><li><a href="#init-module"><code>init-module</code></a></li><li><a href="#init-private"><code>init-private</code></a></li><li><a href="#init-type"><code>init-type</code></a></li><li><a href="#init-version"><code>init-version</code></a></li><li><a href="#install-links"><code>install-links</code></a></li><li><a href="#install-strategy"><code>install-strategy</code></a></li><li><a href="#json"><code>json</code></a></li><li><a href="#legacy-peer-deps"><code>legacy-peer-deps</code></a></li><li><a href="#libc"><code>libc</code></a></li><li><a href="#link"><code>link</code></a></li><li><a href="#local-address"><code>local-address</code></a></li><li><a href="#location"><code>location</code></a></li><li><a href="#lockfile-version"><code>lockfile-version</code></a></li><li><a href="#loglevel"><code>loglevel</code></a></li><li><a href="#logs-dir"><code>logs-dir</code></a></li><li><a href="#logs-max"><code>logs-max</code></a></li><li><a href="#long"><code>long</code></a></li><li><a href="#maxsockets"><code>maxsockets</code></a></li><li><a href="#message"><code>message</code></a></li><li><a href="#min-release-age"><code>min-release-age</code></a></li><li><a href="#name"><code>name</code></a></li><li><a href="#node-gyp"><code>node-gyp</code></a></li><li><a href="#node-options"><code>node-options</code></a></li><li><a href="#noproxy"><code>noproxy</code></a></li><li><a href="#offline"><code>offline</code></a></li><li><a href="#omit"><code>omit</code></a></li><li><a href="#omit-lockfile-registry-resolved"><code>omit-lockfile-registry-resolved</code></a></li><li><a href="#orgs"><code>orgs</code></a></li><li><a href="#orgs-permission"><code>orgs-permission</code></a></li><li><a href="#os"><code>os</code></a></li><li><a href="#otp"><code>otp</code></a></li><li><a href="#pack-destination"><code>pack-destination</code></a></li><li><a href="#package"><code>package</code></a></li><li><a href="#package-lock"><code>package-lock</code></a></li><li><a href="#package-lock-only"><code>package-lock-only</code></a></li><li><a href="#packages"><code>packages</code></a></li><li><a href="#packages-all"><code>packages-all</code></a></li><li><a href="#packages-and-scopes-permission"><code>packages-and-scopes-permission</code></a></li><li><a href="#parseable"><code>parseable</code></a></li><li><a href="#password"><code>password</code></a></li><li><a href="#prefer-dedupe"><code>prefer-dedupe</code></a></li><li><a href="#prefer-offline"><code>prefer-offline</code></a></li><li><a href="#prefer-online"><code>prefer-online</code></a></li><li><a href="#prefix"><code>prefix</code></a></li><li><a href="#preid"><code>preid</code></a></li><li><a href="#progress"><code>progress</code></a></li><li><a href="#provenance"><code>provenance</code></a></li><li><a href="#provenance-file"><code>provenance-file</code></a></li><li><a href="#proxy"><code>proxy</code></a></li><li><a href="#read-only"><code>read-only</code></a></li><li><a href="#rebuild-bundle"><code>rebuild-bundle</code></a></li><li><a href="#registry"><code>registry</code></a></li><li><a href="#replace-registry-host"><code>replace-registry-host</code></a></li><li><a href="#save"><code>save</code></a></li><li><a href="#save-bundle"><code>save-bundle</code></a></li><li><a href="#save-dev"><code>save-dev</code></a></li><li><a href="#save-exact"><code>save-exact</code></a></li><li><a href="#save-optional"><code>save-optional</code></a></li><li><a href="#save-peer"><code>save-peer</code></a></li><li><a href="#save-prefix"><code>save-prefix</code></a></li><li><a href="#save-prod"><code>save-prod</code></a></li><li><a href="#sbom-format"><code>sbom-format</code></a></li><li><a href="#sbom-type"><code>sbom-type</code></a></li><li><a href="#scope"><code>scope</code></a></li><li><a href="#scopes"><code>scopes</code></a></li><li><a href="#script-shell"><code>script-shell</code></a></li><li><a href="#searchexclude"><code>searchexclude</code></a></li><li><a href="#searchlimit"><code>searchlimit</code></a></li><li><a href="#searchopts"><code>searchopts</code></a></li><li><a href="#searchstaleness"><code>searchstaleness</code></a></li><li><a href="#shell"><code>shell</code></a></li><li><a href="#sign-git-commit"><code>sign-git-commit</code></a></li><li><a href="#sign-git-tag"><code>sign-git-tag</code></a></li><li><a href="#strict-peer-deps"><code>strict-peer-deps</code></a></li><li><a href="#strict-ssl"><code>strict-ssl</code></a></li><li><a href="#tag"><code>tag</code></a></li><li><a href="#tag-version-prefix"><code>tag-version-prefix</code></a></li><li><a href="#timing"><code>timing</code></a></li><li><a href="#token-description"><code>token-description</code></a></li><li><a href="#umask"><code>umask</code></a></li><li><a href="#unicode"><code>unicode</code></a></li><li><a href="#update-notifier"><code>update-notifier</code></a></li><li><a href="#usage"><code>usage</code></a></li><li><a href="#user-agent"><code>user-agent</code></a></li><li><a href="#userconfig"><code>userconfig</code></a></li><li><a href="#version"><code>version</code></a></li><li><a href="#versions"><code>versions</code></a></li><li><a href="#viewer"><code>viewer</code></a></li><li><a href="#which"><code>which</code></a></li><li><a href="#workspace"><code>workspace</code></a></li><li><a href="#workspaces"><code>workspaces</code></a></li><li><a href="#workspaces-update"><code>workspaces-update</code></a></li><li><a href="#yes"><code>yes</code></a></li><li><a href="#also"><code>also</code></a></li><li><a href="#cache-max"><code>cache-max</code></a></li><li><a href="#cache-min"><code>cache-min</code></a></li><li><a href="#cert"><code>cert</code></a></li><li><a href="#dev"><code>dev</code></a></li><li><a href="#global-style"><code>global-style</code></a></li><li><a href="#initauthoremail"><code>init.author.email</code></a></li><li><a href="#initauthorname"><code>init.author.name</code></a></li><li><a href="#initauthorurl"><code>init.author.url</code></a></li><li><a href="#initlicense"><code>init.license</code></a></li><li><a href="#initmodule"><code>init.module</code></a></li><li><a href="#initversion"><code>init.version</code></a></li><li><a href="#key"><code>key</code></a></li><li><a href="#legacy-bundling"><code>legacy-bundling</code></a></li><li><a href="#only"><code>only</code></a></li><li><a href="#optional"><code>optional</code></a></li><li><a href="#production"><code>production</code></a></li><li><a href="#shrinkwrap"><code>shrinkwrap</code></a></li></ul><li><a href="#see-also">See also</a></li></ul></div>
 </section>
 
 <div id="_content"><h3 id="description">Description</h3>
@@ -756,6 +756,15 @@ <h4 id="include"><code>include</code></h4>
 <p>This is the inverse of <code>--omit=<type></code>.</p>
 <p>Dependency types specified in <code>--include</code> will not be omitted, regardless of
 the order in which omit/include are specified on the command-line.</p>
+<h4 id="include-attestations"><code>include-attestations</code></h4>
+<ul>
+<li>Default: false</li>
+<li>Type: Boolean</li>
+</ul>
+<p>When used with <code>npm audit signatures --json</code>, includes the full sigstore
+attestation bundles in the JSON output for each verified package. The
+bundles contain DSSE envelopes, verification material, and transparency log
+entries.</p>
 <h4 id="include-staged"><code>include-staged</code></h4>
 <ul>
 <li>Default: false</li>
@@ -983,6 +992,7 @@ <h4 id="min-release-age"><code>min-release-age</code></h4>
 <p>This flag is a complement to <code>before</code>, which accepts an exact date instead
 of a relative number of days.</p>
 <p>This config cannot be used with: <code>before</code></p>
+<p>This value is not exported to the environment for child processes.</p>
 <h4 id="name"><code>name</code></h4>
 <ul>
 <li>Default: null</li>
diff --git a/deps/npm/docs/output/using-npm/dependency-selectors.html b/deps/npm/docs/output/using-npm/dependency-selectors.html
index 6473c4ac5e107f..98647db6cbde4d 100644
--- a/deps/npm/docs/output/using-npm/dependency-selectors.html
+++ b/deps/npm/docs/output/using-npm/dependency-selectors.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----dependency-selectors----11111">
+<h1 id="----dependency-selectors----11121">
     <span>Dependency Selectors</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Dependency Selector Syntax & Querying</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/developers.html b/deps/npm/docs/output/using-npm/developers.html
index 299b23a026de01..017ed86fef451d 100644
--- a/deps/npm/docs/output/using-npm/developers.html
+++ b/deps/npm/docs/output/using-npm/developers.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----developers----11111">
+<h1 id="----developers----11121">
     <span>Developers</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Developer guide</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/logging.html b/deps/npm/docs/output/using-npm/logging.html
index 5ad039009097ca..ba8b0b1132fd83 100644
--- a/deps/npm/docs/output/using-npm/logging.html
+++ b/deps/npm/docs/output/using-npm/logging.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----logging----11111">
+<h1 id="----logging----11121">
     <span>Logging</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Why, What & How we Log</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/orgs.html b/deps/npm/docs/output/using-npm/orgs.html
index ab24b5d19e3006..b761c39e1d4648 100644
--- a/deps/npm/docs/output/using-npm/orgs.html
+++ b/deps/npm/docs/output/using-npm/orgs.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----organizations----11111">
+<h1 id="----organizations----11121">
     <span>Organizations</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Working with teams & organizations</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/package-spec.html b/deps/npm/docs/output/using-npm/package-spec.html
index afd8988b733220..3459ab9906b253 100644
--- a/deps/npm/docs/output/using-npm/package-spec.html
+++ b/deps/npm/docs/output/using-npm/package-spec.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----package-spec----11111">
+<h1 id="----package-spec----11121">
     <span>Package spec</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Package name specifier</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/registry.html b/deps/npm/docs/output/using-npm/registry.html
index 67c15a687628a8..22a6220ca11145 100644
--- a/deps/npm/docs/output/using-npm/registry.html
+++ b/deps/npm/docs/output/using-npm/registry.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----registry----11111">
+<h1 id="----registry----11121">
     <span>Registry</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">The JavaScript Package Registry</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/removal.html b/deps/npm/docs/output/using-npm/removal.html
index eb1dc4329d1490..0eab4f7bf7b098 100644
--- a/deps/npm/docs/output/using-npm/removal.html
+++ b/deps/npm/docs/output/using-npm/removal.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----removal----11111">
+<h1 id="----removal----11121">
     <span>Removal</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Cleaning the slate</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/scope.html b/deps/npm/docs/output/using-npm/scope.html
index 1ed3f678e8a598..7083e3a3e03e62 100644
--- a/deps/npm/docs/output/using-npm/scope.html
+++ b/deps/npm/docs/output/using-npm/scope.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----scope----11111">
+<h1 id="----scope----11121">
     <span>Scope</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Scoped packages</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/scripts.html b/deps/npm/docs/output/using-npm/scripts.html
index 3513f553e08b2c..710045adf98fa0 100644
--- a/deps/npm/docs/output/using-npm/scripts.html
+++ b/deps/npm/docs/output/using-npm/scripts.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----scripts----11111">
+<h1 id="----scripts----11121">
     <span>Scripts</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">How npm handles the "scripts" field</span>
 </header>
diff --git a/deps/npm/docs/output/using-npm/workspaces.html b/deps/npm/docs/output/using-npm/workspaces.html
index 9c614074f63d85..be0ce097c25254 100644
--- a/deps/npm/docs/output/using-npm/workspaces.html
+++ b/deps/npm/docs/output/using-npm/workspaces.html
@@ -186,9 +186,9 @@
 
 <section id="content">
 <header class="title">
-<h1 id="----workspaces----11111">
+<h1 id="----workspaces----11121">
     <span>Workspaces</span>
-    <span class="version">@11.11.1</span>
+    <span class="version">@11.12.1</span>
 </h1>
 <span class="description">Working with workspaces</span>
 </header>
diff --git a/deps/npm/lib/commands/audit.js b/deps/npm/lib/commands/audit.js
index c9ac3bac7d055e..39e3a599fc37e1 100644
--- a/deps/npm/lib/commands/audit.js
+++ b/deps/npm/lib/commands/audit.js
@@ -19,6 +19,7 @@ class Audit extends ArboristWorkspaceCmd {
     'include',
     'foreground-scripts',
     'ignore-scripts',
+    'include-attestations',
     ...super.params,
   ]
 
diff --git a/deps/npm/lib/utils/explain-dep.js b/deps/npm/lib/utils/explain-dep.js
index 4e9e93454e8a28..6c84aa4ebbc396 100644
--- a/deps/npm/lib/utils/explain-dep.js
+++ b/deps/npm/lib/utils/explain-dep.js
@@ -1,9 +1,9 @@
 const { relative } = require('node:path')
 
-const explainNode = (node, depth, chalk) =>
+const explainNode = (node, depth, chalk, seen = new Set()) =>
   printNode(node, chalk) +
-  explainDependents(node, depth, chalk) +
-  explainLinksIn(node, depth, chalk)
+  explainDependents(node, depth, chalk, seen) +
+  explainLinksIn(node, depth, chalk, seen)
 
 const colorType = (type, chalk) => {
   const style = type === 'extraneous' ? chalk.red
@@ -34,24 +34,24 @@ const printNode = (node, chalk) => {
     (node.location ? chalk.dim(`\n${node.location}`) : '')
 }
 
-const explainLinksIn = ({ linksIn }, depth, chalk) => {
+const explainLinksIn = ({ linksIn }, depth, chalk, seen) => {
   if (!linksIn || !linksIn.length || depth <= 0) {
     return ''
   }
 
-  const messages = linksIn.map(link => explainNode(link, depth - 1, chalk))
+  const messages = linksIn.map(link => explainNode(link, depth - 1, chalk, seen))
   const str = '\n' + messages.join('\n')
   return str.split('\n').join('\n  ')
 }
 
-const explainDependents = ({ dependents }, depth, chalk) => {
+const explainDependents = ({ dependents }, depth, chalk, seen) => {
   if (!dependents || !dependents.length || depth <= 0) {
     return ''
   }
 
   const max = Math.ceil(depth / 2)
   const messages = dependents.slice(0, max)
-    .map(edge => explainEdge(edge, depth, chalk))
+    .map(edge => explainEdge(edge, depth, chalk, seen))
 
   // show just the names of the first 5 deps that overflowed the list
   if (dependents.length > max) {
@@ -75,7 +75,10 @@ const explainDependents = ({ dependents }, depth, chalk) => {
   return str.split('\n').join('\n  ')
 }
 
-const explainEdge = ({ name, type, bundled, from, spec, rawSpec, overridden }, depth, chalk) => {
+const explainEdge = (
+  { name, type, bundled, from, spec, rawSpec, overridden },
+  depth, chalk, seen = new Set()
+) => {
   let dep = type === 'workspace'
     ? chalk.bold(relative(from.location, spec.slice('file:'.length)))
     : `${name}@"${spec}"`
@@ -83,21 +86,31 @@ const explainEdge = ({ name, type, bundled, from, spec, rawSpec, overridden }, d
     dep = `${colorType('overridden', chalk)} ${dep} (was "${rawSpec}")`
   }
 
-  const fromMsg = ` from ${explainFrom(from, depth, chalk)}`
+  const fromMsg = ` from ${explainFrom(from, depth, chalk, seen)}`
 
   return (type === 'prod' ? '' : `${colorType(type, chalk)} `) +
     (bundled ? `${colorType('bundled', chalk)} ` : '') +
     `${dep}${fromMsg}`
 }
 
-const explainFrom = (from, depth, chalk) => {
+const explainFrom = (from, depth, chalk, seen) => {
   if (!from.name && !from.version) {
     return 'the root project'
   }
 
-  return printNode(from, chalk) +
-    explainDependents(from, depth - 1, chalk) +
-    explainLinksIn(from, depth - 1, chalk)
+  // Prevent infinite recursion from cycles in the dependency graph (e.g. linked strategy store nodes). Use stack-based tracking so diamond dependencies (same node reached via different paths) are still explained, but recursive cycles are broken.
+  const nodeId = `${from.name}@${from.version}:${from.location}`
+  if (seen.has(nodeId)) {
+    return printNode(from, chalk)
+  }
+  seen.add(nodeId)
+
+  const result = printNode(from, chalk) +
+    explainDependents(from, depth - 1, chalk, seen) +
+    explainLinksIn(from, depth - 1, chalk, seen)
+
+  seen.delete(nodeId)
+  return result
 }
 
 module.exports = { explainNode, printNode, explainEdge }
diff --git a/deps/npm/lib/utils/verify-signatures.js b/deps/npm/lib/utils/verify-signatures.js
index 9aef49e8f4785a..a4824d86d13ab6 100644
--- a/deps/npm/lib/utils/verify-signatures.js
+++ b/deps/npm/lib/utils/verify-signatures.js
@@ -17,6 +17,7 @@ class VerifySignatures {
     this.invalid = []
     this.missing = []
     this.checkedPackages = new Set()
+    this.verified = []
     this.auditedWithKeysCount = 0
     this.verifiedSignatureCount = 0
     this.verifiedAttestationCount = 0
@@ -59,7 +60,11 @@ class VerifySignatures {
     }
 
     if (this.npm.config.get('json')) {
-      output.buffer({ invalid, missing })
+      const result = { invalid, missing }
+      if (this.npm.config.get('include-attestations')) {
+        result.verified = this.verified
+      }
+      output.buffer(result)
       return
     }
     const end = process.hrtime.bigint()
@@ -87,6 +92,9 @@ class VerifySignatures {
       } else {
         output.standard(`${this.verifiedAttestationCount} packages have ${verifiedBold} attestations`)
       }
+      if (!this.npm.config.get('include-attestations')) {
+        output.standard('(use --json --include-attestations to view attestation details)')
+      }
       output.standard()
     }
 
@@ -288,6 +296,7 @@ class VerifySignatures {
       _integrity: integrity,
       _signatures,
       _attestations,
+      _attestationBundles,
       _resolved: resolved,
     } = await pacote.manifest(`${name}@${version}`, {
       verifySignatures: true,
@@ -300,6 +309,7 @@ class VerifySignatures {
       integrity,
       signatures,
       attestations: _attestations,
+      attestationBundles: _attestationBundles,
       resolved,
     }
     return result
@@ -324,9 +334,8 @@ class VerifySignatures {
     }
 
     try {
-      const { integrity, signatures, attestations, resolved } = await this.verifySignatures(
-        name, version, registry
-      )
+      const { integrity, signatures, attestations, attestationBundles, resolved } =
+        await this.verifySignatures(name, version, registry)
 
       // Currently we only care about missing signatures on registries that provide a public key
       // We could make this configurable in the future with a strict/paranoid mode
@@ -346,6 +355,16 @@ class VerifySignatures {
       // Track verified attestations separately to registry signatures, as all packages on registries with signing keys are expected to have registry signatures, but not all packages have provenance and publish attestations.
       if (attestations) {
         this.verifiedAttestationCount += 1
+        if (this.npm.config.get('include-attestations')) {
+          this.verified.push({
+            name,
+            version,
+            location,
+            registry,
+            attestations,
+            attestationBundles,
+          })
+        }
       }
     } catch (e) {
       if (e.code === 'EINTEGRITYSIGNATURE' || e.code === 'EATTESTATIONVERIFY') {
diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1
index efe5c38060c282..fe5817bd028550 100644
--- a/deps/npm/man/man1/npm-access.1
+++ b/deps/npm/man/man1/npm-access.1
@@ -1,4 +1,4 @@
-.TH "NPM-ACCESS" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-ACCESS" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-access\fR - Set access level on published packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1
index 2fc10725efa4f6..ef295a68a0448e 100644
--- a/deps/npm/man/man1/npm-adduser.1
+++ b/deps/npm/man/man1/npm-adduser.1
@@ -1,4 +1,4 @@
-.TH "NPM-ADDUSER" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-ADDUSER" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-adduser\fR - Add a registry user account
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1
index 1af936f51590d7..e2547bf58265bc 100644
--- a/deps/npm/man/man1/npm-audit.1
+++ b/deps/npm/man/man1/npm-audit.1
@@ -1,4 +1,4 @@
-.TH "NPM-AUDIT" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-AUDIT" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-audit\fR - Run a security audit
 .SS "Synopsis"
@@ -34,6 +34,16 @@ $ npm audit signatures
 .P
 The \fBaudit signatures\fR command will also verify the provenance attestations of downloaded packages. Because provenance attestations are such a new feature, security features may be added to (or changed in) the attestation format over time. To ensure that you're always able to verify attestation signatures check that you're running the latest version of the npm CLI. Please note this often means updating npm beyond the version that ships with Node.js.
 .P
+To include the full sigstore attestation bundles in JSON output, use:
+.P
+.RS 2
+.nf
+$ npm audit signatures --json --include-attestations
+.fi
+.RE
+.P
+This adds a \fBverified\fR array to the JSON output containing the attestation bundles (DSSE envelopes, verification material, and transparency log entries) for each verified package.
+.P
 The npm CLI supports registry signatures and signing keys provided by any registry if the following conventions are followed:
 .RS 0
 .IP 1. 4
@@ -369,6 +379,16 @@ Type: Boolean
 If true, npm does not run scripts specified in package.json files.
 .P
 Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts.
+.SS "\fBinclude-attestations\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+When used with \fBnpm audit signatures --json\fR, includes the full sigstore attestation bundles in the JSON output for each verified package. The bundles contain DSSE envelopes, verification material, and transparency log entries.
 .SS "\fBworkspace\fR"
 .RS 0
 .IP \(bu 4
diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1
index b846617fb7f68a..fa16e14c8d1419 100644
--- a/deps/npm/man/man1/npm-bugs.1
+++ b/deps/npm/man/man1/npm-bugs.1
@@ -1,4 +1,4 @@
-.TH "NPM-BUGS" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-BUGS" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-bugs\fR - Report bugs for a package in a web browser
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1
index b89d619fa6ecee..4bbc439ed78a0a 100644
--- a/deps/npm/man/man1/npm-cache.1
+++ b/deps/npm/man/man1/npm-cache.1
@@ -1,4 +1,4 @@
-.TH "NPM-CACHE" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-CACHE" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-cache\fR - Manipulates packages cache
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1
index 7aa9667243491a..97528d31e77c07 100644
--- a/deps/npm/man/man1/npm-ci.1
+++ b/deps/npm/man/man1/npm-ci.1
@@ -1,4 +1,4 @@
-.TH "NPM-CI" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-CI" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-ci\fR - Clean install a project
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1
index 2ec95a1400e6ab..7996ae51424e02 100644
--- a/deps/npm/man/man1/npm-completion.1
+++ b/deps/npm/man/man1/npm-completion.1
@@ -1,4 +1,4 @@
-.TH "NPM-COMPLETION" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-COMPLETION" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-completion\fR - Tab Completion for npm
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1
index d0ffeff119855c..29621e37b88807 100644
--- a/deps/npm/man/man1/npm-config.1
+++ b/deps/npm/man/man1/npm-config.1
@@ -1,4 +1,4 @@
-.TH "NPM-CONFIG" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-CONFIG" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-config\fR - Manage the npm configuration files
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1
index 1ed0a6c7e4a024..fbf53bfbedbc28 100644
--- a/deps/npm/man/man1/npm-dedupe.1
+++ b/deps/npm/man/man1/npm-dedupe.1
@@ -1,4 +1,4 @@
-.TH "NPM-DEDUPE" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-DEDUPE" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-dedupe\fR - Reduce duplication in the package tree
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1
index f9270e2591003a..092e0270c8040e 100644
--- a/deps/npm/man/man1/npm-deprecate.1
+++ b/deps/npm/man/man1/npm-deprecate.1
@@ -1,4 +1,4 @@
-.TH "NPM-DEPRECATE" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-DEPRECATE" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-deprecate\fR - Deprecate a version of a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-diff.1 b/deps/npm/man/man1/npm-diff.1
index 36b28e8413d486..1dd968ae5d644c 100644
--- a/deps/npm/man/man1/npm-diff.1
+++ b/deps/npm/man/man1/npm-diff.1
@@ -1,4 +1,4 @@
-.TH "NPM-DIFF" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-DIFF" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-diff\fR - The registry diff command
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1
index 46796c3a706dcd..6670e19b8a36f9 100644
--- a/deps/npm/man/man1/npm-dist-tag.1
+++ b/deps/npm/man/man1/npm-dist-tag.1
@@ -1,4 +1,4 @@
-.TH "NPM-DIST-TAG" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-DIST-TAG" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-dist-tag\fR - Modify package distribution tags
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1
index 54bfe990744555..d8c56b505a97e1 100644
--- a/deps/npm/man/man1/npm-docs.1
+++ b/deps/npm/man/man1/npm-docs.1
@@ -1,4 +1,4 @@
-.TH "NPM-DOCS" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-DOCS" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-docs\fR - Open documentation for a package in a web browser
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-doctor.1 b/deps/npm/man/man1/npm-doctor.1
index d997f55d4d8f18..1467c59172d481 100644
--- a/deps/npm/man/man1/npm-doctor.1
+++ b/deps/npm/man/man1/npm-doctor.1
@@ -1,4 +1,4 @@
-.TH "NPM-DOCTOR" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-DOCTOR" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-doctor\fR - Check the health of your npm environment
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1
index d2be7039d6e347..f13a69a4a7fb60 100644
--- a/deps/npm/man/man1/npm-edit.1
+++ b/deps/npm/man/man1/npm-edit.1
@@ -1,4 +1,4 @@
-.TH "NPM-EDIT" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-EDIT" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-edit\fR - Edit an installed package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-exec.1 b/deps/npm/man/man1/npm-exec.1
index af6f5a4915e536..267d42cd4c7979 100644
--- a/deps/npm/man/man1/npm-exec.1
+++ b/deps/npm/man/man1/npm-exec.1
@@ -1,4 +1,4 @@
-.TH "NPM-EXEC" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-EXEC" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-exec\fR - Run a command from a local or remote npm package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-explain.1 b/deps/npm/man/man1/npm-explain.1
index 52b160d5d5e7df..ee9fae25c4f827 100644
--- a/deps/npm/man/man1/npm-explain.1
+++ b/deps/npm/man/man1/npm-explain.1
@@ -1,4 +1,4 @@
-.TH "NPM-EXPLAIN" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-EXPLAIN" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-explain\fR - Explain installed packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1
index 0e2656d7934374..39c3b059382285 100644
--- a/deps/npm/man/man1/npm-explore.1
+++ b/deps/npm/man/man1/npm-explore.1
@@ -1,4 +1,4 @@
-.TH "NPM-EXPLORE" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-EXPLORE" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-explore\fR - Browse an installed package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-find-dupes.1 b/deps/npm/man/man1/npm-find-dupes.1
index 408254ef442f9c..c607a2473d4869 100644
--- a/deps/npm/man/man1/npm-find-dupes.1
+++ b/deps/npm/man/man1/npm-find-dupes.1
@@ -1,4 +1,4 @@
-.TH "NPM-FIND-DUPES" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-FIND-DUPES" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-find-dupes\fR - Find duplication in the package tree
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-fund.1 b/deps/npm/man/man1/npm-fund.1
index 1af1d44feded9b..75120f042dfbb4 100644
--- a/deps/npm/man/man1/npm-fund.1
+++ b/deps/npm/man/man1/npm-fund.1
@@ -1,4 +1,4 @@
-.TH "NPM-FUND" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-FUND" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-fund\fR - Retrieve funding information
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-get.1 b/deps/npm/man/man1/npm-get.1
index c49c771c00177d..ed7e2133a83270 100644
--- a/deps/npm/man/man1/npm-get.1
+++ b/deps/npm/man/man1/npm-get.1
@@ -1,4 +1,4 @@
-.TH "NPM-GET" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-GET" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-get\fR - Get a value from the npm configuration
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1
index fee7226ba3eb8f..171b3563193162 100644
--- a/deps/npm/man/man1/npm-help-search.1
+++ b/deps/npm/man/man1/npm-help-search.1
@@ -1,4 +1,4 @@
-.TH "NPM-HELP-SEARCH" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-HELP-SEARCH" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-help-search\fR - Search npm help documentation
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1
index 366842b5da4b74..2dcdb3758e1189 100644
--- a/deps/npm/man/man1/npm-help.1
+++ b/deps/npm/man/man1/npm-help.1
@@ -1,4 +1,4 @@
-.TH "NPM-HELP" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-HELP" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-help\fR - Get help on npm
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1
index 3efe21f259d863..101d656bfb5ea4 100644
--- a/deps/npm/man/man1/npm-init.1
+++ b/deps/npm/man/man1/npm-init.1
@@ -1,4 +1,4 @@
-.TH "NPM-INIT" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-INIT" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-init\fR - Create a package.json file
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1
index 61100bcf94f4b8..c002a1303b98f3 100644
--- a/deps/npm/man/man1/npm-install-ci-test.1
+++ b/deps/npm/man/man1/npm-install-ci-test.1
@@ -1,4 +1,4 @@
-.TH "NPM-INSTALL-CI-TEST" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-INSTALL-CI-TEST" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-install-ci-test\fR - Install a project with a clean slate and run tests
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1
index 431a75d9ed797a..622c89df74af5d 100644
--- a/deps/npm/man/man1/npm-install-test.1
+++ b/deps/npm/man/man1/npm-install-test.1
@@ -1,4 +1,4 @@
-.TH "NPM-INSTALL-TEST" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-INSTALL-TEST" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-install-test\fR - Install package(s) and run tests
 .SS "Synopsis"
@@ -243,6 +243,8 @@ If set, npm will build the npm tree such that only versions that were available
 This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days.
 .P
 This config cannot be used with: \fBbefore\fR
+.P
+This value is not exported to the environment for child processes.
 .SS "\fBbin-links\fR"
 .RS 0
 .IP \(bu 4
diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1
index 668a07c3c4f005..9221a74d6ec11c 100644
--- a/deps/npm/man/man1/npm-install.1
+++ b/deps/npm/man/man1/npm-install.1
@@ -1,4 +1,4 @@
-.TH "NPM-INSTALL" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-INSTALL" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-install\fR - Install a package
 .SS "Synopsis"
@@ -633,6 +633,8 @@ If set, npm will build the npm tree such that only versions that were available
 This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days.
 .P
 This config cannot be used with: \fBbefore\fR
+.P
+This value is not exported to the environment for child processes.
 .SS "\fBbin-links\fR"
 .RS 0
 .IP \(bu 4
diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1
index ee3e84c814040e..855137368a7ec5 100644
--- a/deps/npm/man/man1/npm-link.1
+++ b/deps/npm/man/man1/npm-link.1
@@ -1,4 +1,4 @@
-.TH "NPM-LINK" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-LINK" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-link\fR - Symlink a package folder
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ll.1 b/deps/npm/man/man1/npm-ll.1
index 48109d800c5fe9..c0752d0dca049c 100644
--- a/deps/npm/man/man1/npm-ll.1
+++ b/deps/npm/man/man1/npm-ll.1
@@ -1,4 +1,4 @@
-.TH "NPM-LL" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-LL" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-ll\fR - List installed packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-login.1 b/deps/npm/man/man1/npm-login.1
index cf4f8826ec243a..59809a10c7217a 100644
--- a/deps/npm/man/man1/npm-login.1
+++ b/deps/npm/man/man1/npm-login.1
@@ -1,4 +1,4 @@
-.TH "NPM-LOGIN" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-LOGIN" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-login\fR - Login to a registry user account
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1
index 7aeb68cc8f49da..530d8216fb6a24 100644
--- a/deps/npm/man/man1/npm-logout.1
+++ b/deps/npm/man/man1/npm-logout.1
@@ -1,4 +1,4 @@
-.TH "NPM-LOGOUT" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-LOGOUT" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-logout\fR - Log out of the registry
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1
index e7f020cfa3f80f..51afaf81e0f6c0 100644
--- a/deps/npm/man/man1/npm-ls.1
+++ b/deps/npm/man/man1/npm-ls.1
@@ -1,4 +1,4 @@
-.TH "NPM-LS" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-LS" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-ls\fR - List installed packages
 .SS "Synopsis"
@@ -20,7 +20,7 @@ Positional arguments are \fBname@version-range\fR identifiers, which will limit
 .P
 .RS 2
 .nf
-npm@11.11.1 /path/to/npm
+npm@11.12.1 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5
 .fi
diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1
index 55dc1b791f079e..5aa0c33d6dad71 100644
--- a/deps/npm/man/man1/npm-org.1
+++ b/deps/npm/man/man1/npm-org.1
@@ -1,4 +1,4 @@
-.TH "NPM-ORG" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-ORG" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-org\fR - Manage orgs
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1
index 07cf9e96940d78..adaf686880c67f 100644
--- a/deps/npm/man/man1/npm-outdated.1
+++ b/deps/npm/man/man1/npm-outdated.1
@@ -1,4 +1,4 @@
-.TH "NPM-OUTDATED" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-OUTDATED" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-outdated\fR - Check for outdated packages
 .SS "Synopsis"
@@ -195,6 +195,8 @@ If set, npm will build the npm tree such that only versions that were available
 This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days.
 .P
 This config cannot be used with: \fBbefore\fR
+.P
+This value is not exported to the environment for child processes.
 .SS "See Also"
 .RS 0
 .IP \(bu 4
diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1
index 017b53e96cdaa1..29e15fcd5cbc10 100644
--- a/deps/npm/man/man1/npm-owner.1
+++ b/deps/npm/man/man1/npm-owner.1
@@ -1,4 +1,4 @@
-.TH "NPM-OWNER" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-OWNER" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-owner\fR - Manage package owners
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1
index 01b5b3095ca07c..7e9e44926960cc 100644
--- a/deps/npm/man/man1/npm-pack.1
+++ b/deps/npm/man/man1/npm-pack.1
@@ -1,4 +1,4 @@
-.TH "NPM-PACK" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-PACK" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-pack\fR - Create a tarball from a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1
index 05e595ba54868e..616d928771c2e6 100644
--- a/deps/npm/man/man1/npm-ping.1
+++ b/deps/npm/man/man1/npm-ping.1
@@ -1,4 +1,4 @@
-.TH "NPM-PING" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-PING" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-ping\fR - Ping npm registry
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-pkg.1 b/deps/npm/man/man1/npm-pkg.1
index c992521223a5d0..0a7a4a2eda63ce 100644
--- a/deps/npm/man/man1/npm-pkg.1
+++ b/deps/npm/man/man1/npm-pkg.1
@@ -1,4 +1,4 @@
-.TH "NPM-PKG" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-PKG" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-pkg\fR - Manages your package.json
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1
index d08388e3c67749..58fdc6e0637cf9 100644
--- a/deps/npm/man/man1/npm-prefix.1
+++ b/deps/npm/man/man1/npm-prefix.1
@@ -1,4 +1,4 @@
-.TH "NPM-PREFIX" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-PREFIX" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-prefix\fR - Display prefix
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1
index 6f344d45540209..f4d456a011d2ed 100644
--- a/deps/npm/man/man1/npm-profile.1
+++ b/deps/npm/man/man1/npm-profile.1
@@ -1,4 +1,4 @@
-.TH "NPM-PROFILE" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-PROFILE" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-profile\fR - Change settings on your registry profile
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1
index 0b892012f1126c..5cc3651dda1ead 100644
--- a/deps/npm/man/man1/npm-prune.1
+++ b/deps/npm/man/man1/npm-prune.1
@@ -1,4 +1,4 @@
-.TH "NPM-PRUNE" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-PRUNE" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-prune\fR - Remove extraneous packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1
index 4161e191cd8723..305d75cb590968 100644
--- a/deps/npm/man/man1/npm-publish.1
+++ b/deps/npm/man/man1/npm-publish.1
@@ -1,4 +1,4 @@
-.TH "NPM-PUBLISH" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-PUBLISH" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-publish\fR - Publish a package
 .SS "Synopsis"
@@ -65,6 +65,8 @@ f) a \fB<name>\fR that has a "latest" tag satisfying (e)
 g) a \fB<git remote url>\fR that resolves to (a)
 .RE 0
 
+.P
+If either (a) or (b) is specified as a relative path, it should begin with an explicit \fB./\fR prefix.
 .P
 The publish will fail if the package name and version combination already exists in the specified registry.
 .P
diff --git a/deps/npm/man/man1/npm-query.1 b/deps/npm/man/man1/npm-query.1
index 95bba2f25cafe8..982c771d4c6624 100644
--- a/deps/npm/man/man1/npm-query.1
+++ b/deps/npm/man/man1/npm-query.1
@@ -1,4 +1,4 @@
-.TH "NPM-QUERY" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-QUERY" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-query\fR - Dependency selector query
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1
index 5f4c5cd20e9d19..1542cb847a9fd5 100644
--- a/deps/npm/man/man1/npm-rebuild.1
+++ b/deps/npm/man/man1/npm-rebuild.1
@@ -1,4 +1,4 @@
-.TH "NPM-REBUILD" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-REBUILD" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-rebuild\fR - Rebuild a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1
index 92dc03f4a2e1ba..d36c0ae61635b4 100644
--- a/deps/npm/man/man1/npm-repo.1
+++ b/deps/npm/man/man1/npm-repo.1
@@ -1,4 +1,4 @@
-.TH "NPM-REPO" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-REPO" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-repo\fR - Open package repository page in the browser
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1
index 37a0f9b814013d..7c4eb5f61d8ef8 100644
--- a/deps/npm/man/man1/npm-restart.1
+++ b/deps/npm/man/man1/npm-restart.1
@@ -1,4 +1,4 @@
-.TH "NPM-RESTART" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-RESTART" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-restart\fR - Restart a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1
index bb0d8d822367b8..dec2ae082ab0ea 100644
--- a/deps/npm/man/man1/npm-root.1
+++ b/deps/npm/man/man1/npm-root.1
@@ -1,4 +1,4 @@
-.TH "NPM-ROOT" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-ROOT" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-root\fR - Display npm root
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-run.1 b/deps/npm/man/man1/npm-run.1
index 956aa52fa4282e..226c791c846b26 100644
--- a/deps/npm/man/man1/npm-run.1
+++ b/deps/npm/man/man1/npm-run.1
@@ -1,4 +1,4 @@
-.TH "NPM-RUN" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-RUN" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-run\fR - Run arbitrary package scripts
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-sbom.1 b/deps/npm/man/man1/npm-sbom.1
index 8c939742ffd100..3c51502f529880 100644
--- a/deps/npm/man/man1/npm-sbom.1
+++ b/deps/npm/man/man1/npm-sbom.1
@@ -1,4 +1,4 @@
-.TH "NPM-SBOM" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-SBOM" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-sbom\fR - Generate a Software Bill of Materials (SBOM)
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1
index c547fb7d6f439c..2481037a382c04 100644
--- a/deps/npm/man/man1/npm-search.1
+++ b/deps/npm/man/man1/npm-search.1
@@ -1,4 +1,4 @@
-.TH "NPM-SEARCH" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-SEARCH" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-search\fR - Search for packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-set.1 b/deps/npm/man/man1/npm-set.1
index b220a6c275f35b..b77a942abfa1f3 100644
--- a/deps/npm/man/man1/npm-set.1
+++ b/deps/npm/man/man1/npm-set.1
@@ -1,4 +1,4 @@
-.TH "NPM-SET" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-SET" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-set\fR - Set a value in the npm configuration
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1
index d07105d3c01277..5f0ed829e939b9 100644
--- a/deps/npm/man/man1/npm-shrinkwrap.1
+++ b/deps/npm/man/man1/npm-shrinkwrap.1
@@ -1,4 +1,4 @@
-.TH "NPM-SHRINKWRAP" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-SHRINKWRAP" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-shrinkwrap\fR - Lock down dependency versions for publication
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1
index 0fbec6948b308e..d70556d2c65c51 100644
--- a/deps/npm/man/man1/npm-star.1
+++ b/deps/npm/man/man1/npm-star.1
@@ -1,4 +1,4 @@
-.TH "NPM-STAR" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-STAR" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-star\fR - Mark your favorite packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1
index 52df512f34c2d2..11707121f7af14 100644
--- a/deps/npm/man/man1/npm-stars.1
+++ b/deps/npm/man/man1/npm-stars.1
@@ -1,4 +1,4 @@
-.TH "NPM-STARS" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-STARS" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-stars\fR - View packages marked as favorites
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1
index 6af2ccc7c8cf02..4c138de64d3126 100644
--- a/deps/npm/man/man1/npm-start.1
+++ b/deps/npm/man/man1/npm-start.1
@@ -1,4 +1,4 @@
-.TH "NPM-START" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-START" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-start\fR - Start a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1
index f1c705a06eb865..386f070a906553 100644
--- a/deps/npm/man/man1/npm-stop.1
+++ b/deps/npm/man/man1/npm-stop.1
@@ -1,4 +1,4 @@
-.TH "NPM-STOP" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-STOP" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-stop\fR - Stop a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1
index 829de3ec393217..f6ed3de147b149 100644
--- a/deps/npm/man/man1/npm-team.1
+++ b/deps/npm/man/man1/npm-team.1
@@ -1,4 +1,4 @@
-.TH "NPM-TEAM" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-TEAM" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-team\fR - Manage organization teams and team memberships
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1
index 4ee5931a296ffa..fe1c15b35895de 100644
--- a/deps/npm/man/man1/npm-test.1
+++ b/deps/npm/man/man1/npm-test.1
@@ -1,4 +1,4 @@
-.TH "NPM-TEST" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-TEST" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-test\fR - Test a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1
index 62c1f741787b64..c1b0e1acb21157 100644
--- a/deps/npm/man/man1/npm-token.1
+++ b/deps/npm/man/man1/npm-token.1
@@ -1,4 +1,4 @@
-.TH "NPM-TOKEN" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-TOKEN" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-token\fR - Manage your authentication tokens
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-trust.1 b/deps/npm/man/man1/npm-trust.1
index 0b361c2fcb848f..81e67e7c17b800 100644
--- a/deps/npm/man/man1/npm-trust.1
+++ b/deps/npm/man/man1/npm-trust.1
@@ -1,14 +1,8 @@
-.TH "NPM-TRUST" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-TRUST" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-trust\fR - Manage trusted publishing relationships between packages and CI/CD providers
 .SS "Synopsis"
 .P
-.RS 2
-.nf
-
-.fi
-.RE
-.P
 Note: This command is unaware of workspaces.
 .SS "Prerequisites"
 .P
diff --git a/deps/npm/man/man1/npm-undeprecate.1 b/deps/npm/man/man1/npm-undeprecate.1
index 1908fbef2da9dd..7d2848a33ef9f7 100644
--- a/deps/npm/man/man1/npm-undeprecate.1
+++ b/deps/npm/man/man1/npm-undeprecate.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNDEPRECATE" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-UNDEPRECATE" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-undeprecate\fR - Undeprecate a version of a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1
index 69b1a0e4254fec..5255c3104c7e1b 100644
--- a/deps/npm/man/man1/npm-uninstall.1
+++ b/deps/npm/man/man1/npm-uninstall.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNINSTALL" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-UNINSTALL" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-uninstall\fR - Remove a package
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1
index 107cfef94e739d..a10179d140cb17 100644
--- a/deps/npm/man/man1/npm-unpublish.1
+++ b/deps/npm/man/man1/npm-unpublish.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNPUBLISH" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-UNPUBLISH" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-unpublish\fR - Remove a package from the registry
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-unstar.1 b/deps/npm/man/man1/npm-unstar.1
index de0398b60d84d2..21ddfa859aead3 100644
--- a/deps/npm/man/man1/npm-unstar.1
+++ b/deps/npm/man/man1/npm-unstar.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNSTAR" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-UNSTAR" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-unstar\fR - Remove an item from your favorite packages
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1
index 09fa88433aac0c..83acac8d81f052 100644
--- a/deps/npm/man/man1/npm-update.1
+++ b/deps/npm/man/man1/npm-update.1
@@ -1,4 +1,4 @@
-.TH "NPM-UPDATE" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-UPDATE" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-update\fR - Update packages
 .SS "Synopsis"
@@ -315,6 +315,8 @@ If set, npm will build the npm tree such that only versions that were available
 This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days.
 .P
 This config cannot be used with: \fBbefore\fR
+.P
+This value is not exported to the environment for child processes.
 .SS "\fBbin-links\fR"
 .RS 0
 .IP \(bu 4
diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1
index cd0ddfc1c473e3..709a8bfb00c34d 100644
--- a/deps/npm/man/man1/npm-version.1
+++ b/deps/npm/man/man1/npm-version.1
@@ -1,4 +1,4 @@
-.TH "NPM-VERSION" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-VERSION" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-version\fR - Bump a package version
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1
index 8b3659188303d3..d45d8b38277c9d 100644
--- a/deps/npm/man/man1/npm-view.1
+++ b/deps/npm/man/man1/npm-view.1
@@ -1,4 +1,4 @@
-.TH "NPM-VIEW" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-VIEW" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-view\fR - View registry info
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1
index 92f4f5820566a5..f246bfc4781cb2 100644
--- a/deps/npm/man/man1/npm-whoami.1
+++ b/deps/npm/man/man1/npm-whoami.1
@@ -1,4 +1,4 @@
-.TH "NPM-WHOAMI" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-WHOAMI" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-whoami\fR - Display npm username
 .SS "Synopsis"
diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1
index 60a0cdb60876ac..a7ca1f48a0f4bc 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -1,4 +1,4 @@
-.TH "NPM" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPM" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm\fR - javascript package manager
 .SS "Synopsis"
@@ -12,7 +12,7 @@ npm
 Note: This command is unaware of workspaces.
 .SS "Version"
 .P
-11.11.1
+11.12.1
 .SS "Description"
 .P
 npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency conflicts intelligently.
diff --git a/deps/npm/man/man1/npx.1 b/deps/npm/man/man1/npx.1
index ec515d0d41969d..050afc7ab98e21 100644
--- a/deps/npm/man/man1/npx.1
+++ b/deps/npm/man/man1/npx.1
@@ -1,4 +1,4 @@
-.TH "NPX" "1" "March 2026" "NPM@11.11.1" ""
+.TH "NPX" "1" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpx\fR - Run a command from a local or remote npm package
 .SS "Synopsis"
diff --git a/deps/npm/man/man5/folders.5 b/deps/npm/man/man5/folders.5
index bf013eaf6aa8e5..6d8dbbe2d0930d 100644
--- a/deps/npm/man/man5/folders.5
+++ b/deps/npm/man/man5/folders.5
@@ -1,4 +1,4 @@
-.TH "FOLDERS" "5" "March 2026" "NPM@11.11.1" ""
+.TH "FOLDERS" "5" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBFolders\fR - Folder structures used by npm
 .SS "Description"
diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5
index dcc1668bc5df71..8ebd081e06497d 100644
--- a/deps/npm/man/man5/install.5
+++ b/deps/npm/man/man5/install.5
@@ -1,4 +1,4 @@
-.TH "INSTALL" "5" "March 2026" "NPM@11.11.1" ""
+.TH "INSTALL" "5" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBInstall\fR - Download and install node and npm
 .SS "Description"
diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5
index bf013eaf6aa8e5..6d8dbbe2d0930d 100644
--- a/deps/npm/man/man5/npm-global.5
+++ b/deps/npm/man/man5/npm-global.5
@@ -1,4 +1,4 @@
-.TH "FOLDERS" "5" "March 2026" "NPM@11.11.1" ""
+.TH "FOLDERS" "5" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBFolders\fR - Folder structures used by npm
 .SS "Description"
diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5
index c736becf20b453..02241289fdd8a0 100644
--- a/deps/npm/man/man5/npm-json.5
+++ b/deps/npm/man/man5/npm-json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE.JSON" "5" "March 2026" "NPM@11.11.1" ""
+.TH "PACKAGE.JSON" "5" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBpackage.json\fR - Specifics of npm's package.json handling
 .SS "Description"
diff --git a/deps/npm/man/man5/npm-shrinkwrap-json.5 b/deps/npm/man/man5/npm-shrinkwrap-json.5
index e257df187cec9b..34361a3d7bc5e3 100644
--- a/deps/npm/man/man5/npm-shrinkwrap-json.5
+++ b/deps/npm/man/man5/npm-shrinkwrap-json.5
@@ -1,4 +1,4 @@
-.TH "NPM-SHRINKWRAP.JSON" "5" "March 2026" "NPM@11.11.1" ""
+.TH "NPM-SHRINKWRAP.JSON" "5" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBnpm-shrinkwrap.json\fR - A publishable lockfile
 .SS "Description"
diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5
index 5d4dc6a0761202..bf27bcb5939f20 100644
--- a/deps/npm/man/man5/npmrc.5
+++ b/deps/npm/man/man5/npmrc.5
@@ -1,4 +1,4 @@
-.TH ".NPMRC" "5" "March 2026" "NPM@11.11.1" ""
+.TH ".NPMRC" "5" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fB.npmrc\fR - The npm config files
 .SS "Description"
diff --git a/deps/npm/man/man5/package-json.5 b/deps/npm/man/man5/package-json.5
index c736becf20b453..02241289fdd8a0 100644
--- a/deps/npm/man/man5/package-json.5
+++ b/deps/npm/man/man5/package-json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE.JSON" "5" "March 2026" "NPM@11.11.1" ""
+.TH "PACKAGE.JSON" "5" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBpackage.json\fR - Specifics of npm's package.json handling
 .SS "Description"
diff --git a/deps/npm/man/man5/package-lock-json.5 b/deps/npm/man/man5/package-lock-json.5
index d904c97f93bd20..63ee956145c2a7 100644
--- a/deps/npm/man/man5/package-lock-json.5
+++ b/deps/npm/man/man5/package-lock-json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE-LOCK.JSON" "5" "March 2026" "NPM@11.11.1" ""
+.TH "PACKAGE-LOCK.JSON" "5" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBpackage-lock.json\fR - A manifestation of the manifest
 .SS "Description"
diff --git a/deps/npm/man/man7/config.7 b/deps/npm/man/man7/config.7
index 8920b050503512..8452593e01eb4b 100644
--- a/deps/npm/man/man7/config.7
+++ b/deps/npm/man/man7/config.7
@@ -1,4 +1,4 @@
-.TH "CONFIG" "7" "March 2026" "NPM@11.11.1" ""
+.TH "CONFIG" "7" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBConfig\fR - About npm configuration
 .SS "Description"
@@ -801,6 +801,16 @@ Option that allows for defining which types of dependencies to install.
 This is the inverse of \fB--omit=<type>\fR.
 .P
 Dependency types specified in \fB--include\fR will not be omitted, regardless of the order in which omit/include are specified on the command-line.
+.SS "\fBinclude-attestations\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+When used with \fBnpm audit signatures --json\fR, includes the full sigstore attestation bundles in the JSON output for each verified package. The bundles contain DSSE envelopes, verification material, and transparency log entries.
 .SS "\fBinclude-staged\fR"
 .RS 0
 .IP \(bu 4
@@ -1109,6 +1119,8 @@ If set, npm will build the npm tree such that only versions that were available
 This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days.
 .P
 This config cannot be used with: \fBbefore\fR
+.P
+This value is not exported to the environment for child processes.
 .SS "\fBname\fR"
 .RS 0
 .IP \(bu 4
diff --git a/deps/npm/man/man7/dependency-selectors.7 b/deps/npm/man/man7/dependency-selectors.7
index e78b647eec364f..9ad3c02c5cc23c 100644
--- a/deps/npm/man/man7/dependency-selectors.7
+++ b/deps/npm/man/man7/dependency-selectors.7
@@ -1,4 +1,4 @@
-.TH "SELECTORS" "7" "March 2026" "NPM@11.11.1" ""
+.TH "SELECTORS" "7" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBSelectors\fR - Dependency Selector Syntax & Querying
 .SS "Description"
diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7
index 1e77c8a5a3b013..809ae04b8ab770 100644
--- a/deps/npm/man/man7/developers.7
+++ b/deps/npm/man/man7/developers.7
@@ -1,4 +1,4 @@
-.TH "DEVELOPERS" "7" "March 2026" "NPM@11.11.1" ""
+.TH "DEVELOPERS" "7" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBDevelopers\fR - Developer guide
 .SS "Description"
diff --git a/deps/npm/man/man7/logging.7 b/deps/npm/man/man7/logging.7
index 58e9adca8469ad..434e1af696ceeb 100644
--- a/deps/npm/man/man7/logging.7
+++ b/deps/npm/man/man7/logging.7
@@ -1,4 +1,4 @@
-.TH "LOGGING" "7" "March 2026" "NPM@11.11.1" ""
+.TH "LOGGING" "7" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBLogging\fR - Why, What & How we Log
 .SS "Description"
diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7
index 5883ba259fc68c..325210226876e5 100644
--- a/deps/npm/man/man7/orgs.7
+++ b/deps/npm/man/man7/orgs.7
@@ -1,4 +1,4 @@
-.TH "ORGANIZATIONS" "7" "March 2026" "NPM@11.11.1" ""
+.TH "ORGANIZATIONS" "7" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBOrganizations\fR - Working with teams & organizations
 .SS "Description"
diff --git a/deps/npm/man/man7/package-spec.7 b/deps/npm/man/man7/package-spec.7
index ec00504169cfb9..fbcfeafd019d5d 100644
--- a/deps/npm/man/man7/package-spec.7
+++ b/deps/npm/man/man7/package-spec.7
@@ -1,4 +1,4 @@
-.TH "SPEC" "7" "March 2026" "NPM@11.11.1" ""
+.TH "SPEC" "7" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBspec\fR - Package name specifier
 .SS "Description"
diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7
index 05de53d3513eb3..f2be8c14b15940 100644
--- a/deps/npm/man/man7/registry.7
+++ b/deps/npm/man/man7/registry.7
@@ -1,4 +1,4 @@
-.TH "REGISTRY" "7" "March 2026" "NPM@11.11.1" ""
+.TH "REGISTRY" "7" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBRegistry\fR - The JavaScript Package Registry
 .SS "Description"
diff --git a/deps/npm/man/man7/removal.7 b/deps/npm/man/man7/removal.7
index b375f99e64187c..7b8773deb192ba 100644
--- a/deps/npm/man/man7/removal.7
+++ b/deps/npm/man/man7/removal.7
@@ -1,4 +1,4 @@
-.TH "REMOVAL" "7" "March 2026" "NPM@11.11.1" ""
+.TH "REMOVAL" "7" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBRemoval\fR - Cleaning the slate
 .SS "Synopsis"
diff --git a/deps/npm/man/man7/scope.7 b/deps/npm/man/man7/scope.7
index 5e1e8414884bf5..f8b9d4a406532f 100644
--- a/deps/npm/man/man7/scope.7
+++ b/deps/npm/man/man7/scope.7
@@ -1,4 +1,4 @@
-.TH "SCOPE" "7" "March 2026" "NPM@11.11.1" ""
+.TH "SCOPE" "7" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBScope\fR - Scoped packages
 .SS "Description"
diff --git a/deps/npm/man/man7/scripts.7 b/deps/npm/man/man7/scripts.7
index 809b611b147d4e..7244c685d5b83e 100644
--- a/deps/npm/man/man7/scripts.7
+++ b/deps/npm/man/man7/scripts.7
@@ -1,4 +1,4 @@
-.TH "SCRIPTS" "7" "March 2026" "NPM@11.11.1" ""
+.TH "SCRIPTS" "7" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBScripts\fR - How npm handles the "scripts" field
 .SS "Description"
diff --git a/deps/npm/man/man7/workspaces.7 b/deps/npm/man/man7/workspaces.7
index 175fc466578ba4..4c4ed3324d997b 100644
--- a/deps/npm/man/man7/workspaces.7
+++ b/deps/npm/man/man7/workspaces.7
@@ -1,4 +1,4 @@
-.TH "WORKSPACES" "7" "March 2026" "NPM@11.11.1" ""
+.TH "WORKSPACES" "7" "March 2026" "NPM@11.12.1" ""
 .SH "NAME"
 \fBWorkspaces\fR - Working with workspaces
 .SS "Description"
diff --git a/deps/npm/node_modules/@gar/promise-retry/LICENSE b/deps/npm/node_modules/@gar/promise-retry/LICENSE
index db5e914de1f585..581fd125674145 100644
--- a/deps/npm/node_modules/@gar/promise-retry/LICENSE
+++ b/deps/npm/node_modules/@gar/promise-retry/LICENSE
@@ -1,3 +1,4 @@
+Copyright (c) 2011 Tim Koschützki (tim@debuggable.com), Felix Geisendörfer (felix@debuggable.com)
 Copyright (c) 2014 IndigoUnited
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/deps/npm/node_modules/@gar/promise-retry/lib/index.js b/deps/npm/node_modules/@gar/promise-retry/lib/index.js
index 9033419793aaf6..be4598498e4a00 100644
--- a/deps/npm/node_modules/@gar/promise-retry/lib/index.js
+++ b/deps/npm/node_modules/@gar/promise-retry/lib/index.js
@@ -1,9 +1,44 @@
-const retry = require('retry')
+const { RetryOperation } = require('./retry')
 
-const isRetryError = (err) => err?.code === 'EPROMISERETRY' && Object.hasOwn(err, 'retried')
+const createTimeout = (attempt, opts) => Math.min(Math.round((1 + (opts.randomize ? Math.random() : 0)) * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt)), opts.maxTimeout)
+const isRetryError = err => err?.code === 'EPROMISERETRY' && Object.hasOwn(err, 'retried')
 
-async function promiseRetry (fn, options = {}) {
-  const operation = retry.operation(options)
+const promiseRetry = async (fn, options = {}) => {
+  let timeouts = []
+  if (options instanceof Array) {
+    timeouts = [...options]
+  } else {
+    if (options.retries === Infinity) {
+      options.forever = true
+      delete options.retries
+    }
+    const opts = {
+      retries: 10,
+      factor: 2,
+      minTimeout: 1 * 1000,
+      maxTimeout: Infinity,
+      randomize: false,
+      ...options
+    }
+    if (opts.minTimeout > opts.maxTimeout) {
+      throw new Error('minTimeout is greater than maxTimeout')
+    }
+    if (opts.retries) {
+      for (let i = 0; i < opts.retries; i++) {
+        timeouts.push(createTimeout(i, opts))
+      }
+      // sort the array numerically ascending (since the timeouts may be out of order at factor < 1)
+      timeouts.sort((a, b) => a - b)
+    } else if (options.forever) {
+      timeouts.push(createTimeout(0, opts))
+    }
+  }
+
+  const operation = new RetryOperation(timeouts, {
+    forever: options.forever,
+    unref: options.unref,
+    maxRetryTime: options.maxRetryTime
+  })
 
   return new Promise(function (resolve, reject) {
     operation.attempt(async number => {
@@ -13,13 +48,12 @@ async function promiseRetry (fn, options = {}) {
         }, number, operation)
         return resolve(result)
       } catch (err) {
-        if (isRetryError(err)) {
-          if (operation.retry(err.retried || new Error())) {
-            return
-          }
+        if (!isRetryError(err)) {
+          return reject(err)
+        }
+        if (!operation.retry(err.retried || new Error())) {
           return reject(err.retried)
         }
-        return reject(err)
       }
     })
   })
diff --git a/deps/npm/node_modules/@gar/promise-retry/lib/retry.js b/deps/npm/node_modules/@gar/promise-retry/lib/retry.js
new file mode 100644
index 00000000000000..e2d13dfaee5727
--- /dev/null
+++ b/deps/npm/node_modules/@gar/promise-retry/lib/retry.js
@@ -0,0 +1,109 @@
+class RetryOperation {
+  #attempts = 1
+  #cachedTimeouts = null
+  #errors = []
+  #fn = null
+  #maxRetryTime
+  #operationStart = null
+  #originalTimeouts
+  #timeouts
+  #timer = null
+  #unref
+
+  constructor (timeouts, options = {}) {
+    this.#originalTimeouts = [...timeouts]
+    this.#timeouts = [...timeouts]
+    this.#unref = options.unref
+    this.#maxRetryTime = options.maxRetryTime || Infinity
+    if (options.forever) {
+      this.#cachedTimeouts = [...this.#timeouts]
+    }
+  }
+
+  get timeouts () {
+    return [...this.#timeouts]
+  }
+
+  get errors () {
+    return [...this.#errors]
+  }
+
+  get attempts () {
+    return this.#attempts
+  }
+
+  get mainError () {
+    let mainError = null
+    if (this.#errors.length) {
+      let mainErrorCount = 0
+      const counts = {}
+      for (let i = 0; i < this.#errors.length; i++) {
+        const error = this.#errors[i]
+        const { message } = error
+        if (!counts[message]) {
+          counts[message] = 0
+        }
+        counts[message]++
+
+        if (counts[message] >= mainErrorCount) {
+          mainError = error
+          mainErrorCount = counts[message]
+        }
+      }
+    }
+    return mainError
+  }
+
+  reset () {
+    this.#attempts = 1
+    this.#timeouts = [...this.#originalTimeouts]
+  }
+
+  stop () {
+    if (this.#timer) {
+      clearTimeout(this.#timer)
+    }
+
+    this.#timeouts = []
+    this.#cachedTimeouts = null
+  }
+
+  retry (err) {
+    this.#errors.push(err)
+    if (new Date().getTime() - this.#operationStart >= this.#maxRetryTime) {
+      // XXX This puts the timeout error first, meaning it will never show as mainError, there may be no way to ever see this
+      this.#errors.unshift(new Error('RetryOperation timeout occurred'))
+      return false
+    }
+
+    let timeout = this.#timeouts.shift()
+    if (timeout === undefined) {
+      // We're out of timeouts, clear the last error and repeat the final timeout
+      if (this.#cachedTimeouts) {
+        this.#errors.pop()
+        timeout = this.#cachedTimeouts.at(-1)
+      } else {
+        return false
+      }
+    }
+
+    // TODO what if there already is a timer?
+    this.#timer = setTimeout(() => {
+      this.#attempts++
+      this.#fn(this.#attempts)
+    }, timeout)
+
+    if (this.#unref) {
+      this.#timer.unref()
+    }
+
+    return true
+  }
+
+  attempt (fn) {
+    this.#fn = fn
+    this.#operationStart = new Date().getTime()
+    this.#fn(this.#attempts)
+  }
+}
+module.exports = { RetryOperation }
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/License b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/License
deleted file mode 100644
index 0b58de379fb308..00000000000000
--- a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/License
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright (c) 2011:
-Tim Koschützki (tim@debuggable.com)
-Felix Geisendörfer (felix@debuggable.com)
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/dns.js b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/dns.js
deleted file mode 100644
index 446729b6f9af6b..00000000000000
--- a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/dns.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var dns = require('dns');
-var retry = require('../lib/retry');
-
-function faultTolerantResolve(address, cb) {
-  var opts = {
-    retries: 2,
-    factor: 2,
-    minTimeout: 1 * 1000,
-    maxTimeout: 2 * 1000,
-    randomize: true
-  };
-  var operation = retry.operation(opts);
-
-  operation.attempt(function(currentAttempt) {
-    dns.resolve(address, function(err, addresses) {
-      if (operation.retry(err)) {
-        return;
-      }
-
-      cb(operation.mainError(), operation.errors(), addresses);
-    });
-  });
-}
-
-faultTolerantResolve('nodejs.org', function(err, errors, addresses) {
-  console.warn('err:');
-  console.log(err);
-
-  console.warn('addresses:');
-  console.log(addresses);
-});
\ No newline at end of file
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/stop.js b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/stop.js
deleted file mode 100644
index e1ceafeebafc51..00000000000000
--- a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/stop.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var retry = require('../lib/retry');
-
-function attemptAsyncOperation(someInput, cb) {
-  var opts = {
-    retries: 2,
-    factor: 2,
-    minTimeout: 1 * 1000,
-    maxTimeout: 2 * 1000,
-    randomize: true
-  };
-  var operation = retry.operation(opts);
-
-  operation.attempt(function(currentAttempt) {
-    failingAsyncOperation(someInput, function(err, result) {
-
-      if (err && err.message === 'A fatal error') {
-        operation.stop();
-        return cb(err);
-      }
-
-      if (operation.retry(err)) {
-        return;
-      }
-
-      cb(operation.mainError(), operation.errors(), result);
-    });
-  });
-}
-
-attemptAsyncOperation('test input', function(err, errors, result) {
-  console.warn('err:');
-  console.log(err);
-
-  console.warn('result:');
-  console.log(result);
-});
-
-function failingAsyncOperation(input, cb) {
-  return setImmediate(cb.bind(null, new Error('A fatal error')));
-}
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/index.js b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/index.js
deleted file mode 100644
index ee62f3a112c28b..00000000000000
--- a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib/retry');
\ No newline at end of file
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry.js b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry.js
deleted file mode 100644
index 5e85e79197d36c..00000000000000
--- a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry.js
+++ /dev/null
@@ -1,100 +0,0 @@
-var RetryOperation = require('./retry_operation');
-
-exports.operation = function(options) {
-  var timeouts = exports.timeouts(options);
-  return new RetryOperation(timeouts, {
-      forever: options && (options.forever || options.retries === Infinity),
-      unref: options && options.unref,
-      maxRetryTime: options && options.maxRetryTime
-  });
-};
-
-exports.timeouts = function(options) {
-  if (options instanceof Array) {
-    return [].concat(options);
-  }
-
-  var opts = {
-    retries: 10,
-    factor: 2,
-    minTimeout: 1 * 1000,
-    maxTimeout: Infinity,
-    randomize: false
-  };
-  for (var key in options) {
-    opts[key] = options[key];
-  }
-
-  if (opts.minTimeout > opts.maxTimeout) {
-    throw new Error('minTimeout is greater than maxTimeout');
-  }
-
-  var timeouts = [];
-  for (var i = 0; i < opts.retries; i++) {
-    timeouts.push(this.createTimeout(i, opts));
-  }
-
-  if (options && options.forever && !timeouts.length) {
-    timeouts.push(this.createTimeout(i, opts));
-  }
-
-  // sort the array numerically ascending
-  timeouts.sort(function(a,b) {
-    return a - b;
-  });
-
-  return timeouts;
-};
-
-exports.createTimeout = function(attempt, opts) {
-  var random = (opts.randomize)
-    ? (Math.random() + 1)
-    : 1;
-
-  var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));
-  timeout = Math.min(timeout, opts.maxTimeout);
-
-  return timeout;
-};
-
-exports.wrap = function(obj, options, methods) {
-  if (options instanceof Array) {
-    methods = options;
-    options = null;
-  }
-
-  if (!methods) {
-    methods = [];
-    for (var key in obj) {
-      if (typeof obj[key] === 'function') {
-        methods.push(key);
-      }
-    }
-  }
-
-  for (var i = 0; i < methods.length; i++) {
-    var method   = methods[i];
-    var original = obj[method];
-
-    obj[method] = function retryWrapper(original) {
-      var op       = exports.operation(options);
-      var args     = Array.prototype.slice.call(arguments, 1);
-      var callback = args.pop();
-
-      args.push(function(err) {
-        if (op.retry(err)) {
-          return;
-        }
-        if (err) {
-          arguments[0] = op.mainError();
-        }
-        callback.apply(this, arguments);
-      });
-
-      op.attempt(function() {
-        original.apply(obj, args);
-      });
-    }.bind(obj, original);
-    obj[method].options = options;
-  }
-};
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry_operation.js b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry_operation.js
deleted file mode 100644
index 105ce72b2be8e1..00000000000000
--- a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry_operation.js
+++ /dev/null
@@ -1,162 +0,0 @@
-function RetryOperation(timeouts, options) {
-  // Compatibility for the old (timeouts, retryForever) signature
-  if (typeof options === 'boolean') {
-    options = { forever: options };
-  }
-
-  this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));
-  this._timeouts = timeouts;
-  this._options = options || {};
-  this._maxRetryTime = options && options.maxRetryTime || Infinity;
-  this._fn = null;
-  this._errors = [];
-  this._attempts = 1;
-  this._operationTimeout = null;
-  this._operationTimeoutCb = null;
-  this._timeout = null;
-  this._operationStart = null;
-  this._timer = null;
-
-  if (this._options.forever) {
-    this._cachedTimeouts = this._timeouts.slice(0);
-  }
-}
-module.exports = RetryOperation;
-
-RetryOperation.prototype.reset = function() {
-  this._attempts = 1;
-  this._timeouts = this._originalTimeouts.slice(0);
-}
-
-RetryOperation.prototype.stop = function() {
-  if (this._timeout) {
-    clearTimeout(this._timeout);
-  }
-  if (this._timer) {
-    clearTimeout(this._timer);
-  }
-
-  this._timeouts       = [];
-  this._cachedTimeouts = null;
-};
-
-RetryOperation.prototype.retry = function(err) {
-  if (this._timeout) {
-    clearTimeout(this._timeout);
-  }
-
-  if (!err) {
-    return false;
-  }
-  var currentTime = new Date().getTime();
-  if (err && currentTime - this._operationStart >= this._maxRetryTime) {
-    this._errors.push(err);
-    this._errors.unshift(new Error('RetryOperation timeout occurred'));
-    return false;
-  }
-
-  this._errors.push(err);
-
-  var timeout = this._timeouts.shift();
-  if (timeout === undefined) {
-    if (this._cachedTimeouts) {
-      // retry forever, only keep last error
-      this._errors.splice(0, this._errors.length - 1);
-      timeout = this._cachedTimeouts.slice(-1);
-    } else {
-      return false;
-    }
-  }
-
-  var self = this;
-  this._timer = setTimeout(function() {
-    self._attempts++;
-
-    if (self._operationTimeoutCb) {
-      self._timeout = setTimeout(function() {
-        self._operationTimeoutCb(self._attempts);
-      }, self._operationTimeout);
-
-      if (self._options.unref) {
-          self._timeout.unref();
-      }
-    }
-
-    self._fn(self._attempts);
-  }, timeout);
-
-  if (this._options.unref) {
-      this._timer.unref();
-  }
-
-  return true;
-};
-
-RetryOperation.prototype.attempt = function(fn, timeoutOps) {
-  this._fn = fn;
-
-  if (timeoutOps) {
-    if (timeoutOps.timeout) {
-      this._operationTimeout = timeoutOps.timeout;
-    }
-    if (timeoutOps.cb) {
-      this._operationTimeoutCb = timeoutOps.cb;
-    }
-  }
-
-  var self = this;
-  if (this._operationTimeoutCb) {
-    this._timeout = setTimeout(function() {
-      self._operationTimeoutCb();
-    }, self._operationTimeout);
-  }
-
-  this._operationStart = new Date().getTime();
-
-  this._fn(this._attempts);
-};
-
-RetryOperation.prototype.try = function(fn) {
-  console.log('Using RetryOperation.try() is deprecated');
-  this.attempt(fn);
-};
-
-RetryOperation.prototype.start = function(fn) {
-  console.log('Using RetryOperation.start() is deprecated');
-  this.attempt(fn);
-};
-
-RetryOperation.prototype.start = RetryOperation.prototype.try;
-
-RetryOperation.prototype.errors = function() {
-  return this._errors;
-};
-
-RetryOperation.prototype.attempts = function() {
-  return this._attempts;
-};
-
-RetryOperation.prototype.mainError = function() {
-  if (this._errors.length === 0) {
-    return null;
-  }
-
-  var counts = {};
-  var mainError = null;
-  var mainErrorCount = 0;
-
-  for (var i = 0; i < this._errors.length; i++) {
-    var error = this._errors[i];
-    var message = error.message;
-    var count = (counts[message] || 0) + 1;
-
-    counts[message] = count;
-
-    if (count >= mainErrorCount) {
-      mainError = error;
-      mainErrorCount = count;
-    }
-  }
-
-  return mainError;
-};
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/package.json b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/package.json
deleted file mode 100644
index 48f35e8cff2859..00000000000000
--- a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-  "author": "Tim Koschützki <tim@debuggable.com> (http://debuggable.com/)",
-  "name": "retry",
-  "description": "Abstraction for exponential and custom retry strategies for failed operations.",
-  "license": "MIT",
-  "version": "0.13.1",
-  "homepage": "https://github.com/tim-kos/node-retry",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/tim-kos/node-retry.git"
-  },
-  "files": [
-    "lib",
-    "example"
-  ],
-  "directories": {
-    "lib": "./lib"
-  },
-  "main": "index.js",
-  "engines": {
-    "node": ">= 4"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "fake": "0.2.0",
-    "istanbul": "^0.4.5",
-    "tape": "^4.8.0"
-  },
-  "scripts": {
-    "test": "./node_modules/.bin/istanbul cover ./node_modules/tape/bin/tape ./test/integration/*.js",
-    "release:major": "env SEMANTIC=major npm run release",
-    "release:minor": "env SEMANTIC=minor npm run release",
-    "release:patch": "env SEMANTIC=patch npm run release",
-    "release": "npm version ${SEMANTIC:-patch} -m \"Release %s\" && git push && git push --tags && npm publish"
-  }
-}
diff --git a/deps/npm/node_modules/@gar/promise-retry/package.json b/deps/npm/node_modules/@gar/promise-retry/package.json
index 0bd8e31a2aa021..ab73b70283b311 100644
--- a/deps/npm/node_modules/@gar/promise-retry/package.json
+++ b/deps/npm/node_modules/@gar/promise-retry/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@gar/promise-retry",
-  "version": "1.0.2",
+  "version": "1.0.3",
   "description": "Retries a function that returns a promise, leveraging the power of the retry module.",
   "main": "./lib/index.js",
   "files": [
@@ -39,9 +39,6 @@
     "replay"
   ],
   "license": "MIT",
-  "dependencies": {
-    "retry": "^0.13.1"
-  },
   "engines": {
     "node": "^20.17.0 || >=22.9.0"
   }
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js
index a20e936666cfad..44ac7cd34dcbc1 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js
@@ -117,9 +117,11 @@ module.exports = cls => class Reifier extends cls {
       // of Node/Link trees
       log.warn('reify', 'The "linked" install strategy is EXPERIMENTAL and may contain bugs.')
       this.idealTree = await this.createIsolatedTree()
-      this.#linkedActualForDiff = this.#buildLinkedActualForDiff(
-        this.idealTree, this.actualTree
-      )
+      if (this.actualTree) {
+        this.#linkedActualForDiff = this.#buildLinkedActualForDiff(
+          this.idealTree, this.actualTree
+        )
+      }
     }
     await this[_diffTrees]()
     await this.#reifyPackages()
@@ -815,6 +817,10 @@ module.exports = cls => class Reifier extends cls {
       if (combined.has(child.path) || !existsSync(child.path)) {
         continue
       }
+      // Skip store links whose ideal realpath doesn't exist on disk yet — the store hash changed and the symlink needs recreating via ADD.
+      if (child.isLink && child.resolved?.startsWith('file:.store/') && !existsSync(child.realpath)) {
+        continue
+      }
       let entry
       if (child.isLink) {
         entry = new IsolatedLink(child)
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/override-set.js b/deps/npm/node_modules/@npmcli/arborist/lib/override-set.js
index b4a11ba589df77..ab597a7f33bd4a 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/override-set.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/override-set.js
@@ -195,8 +195,29 @@ class OverrideSet {
       }
     }
 
-    // The override sets are incomparable. Neither one contains the other.
-    log.silly('Conflicting override sets', first, second)
+    // The override sets are incomparable (e.g. siblings like the "react" and "react-dom" children of the root override set). Check if they have semantically conflicting rules before treating this as an error.
+    if (this.haveConflictingRules(first, second)) {
+      log.silly('Conflicting override sets', first, second)
+      return undefined
+    }
+
+    // The override sets are structurally incomparable but have compatible rules. Fall back to their nearest common ancestor so the node still has a valid override set.
+    return this.findCommonAncestor(first, second)
+  }
+
+  static findCommonAncestor (first, second) {
+    const firstAncestors = []
+    for (const ancestor of first.ancestry()) {
+      firstAncestors.push(ancestor)
+    }
+    for (const secondAnc of second.ancestry()) {
+      for (const firstAnc of firstAncestors) {
+        if (firstAnc.isEqual(secondAnc)) {
+          return firstAnc
+        }
+      }
+    }
+    return null
   }
 
   static doOverrideSetsConflict (first, second) {
diff --git a/deps/npm/node_modules/@npmcli/arborist/package.json b/deps/npm/node_modules/@npmcli/arborist/package.json
index 6d480fad6ebc9b..58ddb99f8e3593 100644
--- a/deps/npm/node_modules/@npmcli/arborist/package.json
+++ b/deps/npm/node_modules/@npmcli/arborist/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@npmcli/arborist",
-  "version": "9.4.1",
+  "version": "9.4.2",
   "description": "Manage node_modules trees",
   "dependencies": {
     "@gar/promise-retry": "^1.0.0",
diff --git a/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js b/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js
index 0de8142d3ca77b..c3e5cd2b430189 100644
--- a/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js
+++ b/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js
@@ -946,6 +946,17 @@ const definitions = {
     `,
     flatten,
   }),
+  'include-attestations': new Definition('include-attestations', {
+    default: false,
+    type: Boolean,
+    description: `
+      When used with \`npm audit signatures --json\`, includes the full
+      sigstore attestation bundles in the JSON output for each verified
+      package. The bundles contain DSSE envelopes, verification material,
+      and transparency log entries.
+    `,
+    flatten,
+  }),
   'init-author-email': new Definition('init-author-email', {
     default: '',
     hint: '<email>',
@@ -1353,6 +1364,7 @@ const definitions = {
     hint: '<days>',
     type: [null, Number],
     exclusive: ['before'],
+    envExport: false,
     description: `
        If set, npm will build the npm tree such that only versions that were
        available more than the given number of days ago will be installed.  If
diff --git a/deps/npm/node_modules/@npmcli/config/lib/index.js b/deps/npm/node_modules/@npmcli/config/lib/index.js
index 8520a02b6ed77c..a1acb7969b29f6 100644
--- a/deps/npm/node_modules/@npmcli/config/lib/index.js
+++ b/deps/npm/node_modules/@npmcli/config/lib/index.js
@@ -582,7 +582,7 @@ class Config {
       }
     } else {
       conf.raw = obj
-      for (const [key, value] of Object.entries(obj)) {
+      outer: for (const [key, value] of Object.entries(obj)) {
         const k = envReplace(key, this.env)
         const v = this.parseField(value, k)
         if (where !== 'default') {
@@ -590,6 +590,13 @@ class Config {
           if (this.definitions[key]?.exclusive) {
             for (const exclusive of this.definitions[key].exclusive) {
               if (!this.isDefault(exclusive)) {
+                // when loading from env, skip only if sibling was explicitly set via CLI
+                if (where === 'env') {
+                  const cliData = this.data.get('cli').data
+                  if (Object.hasOwn(cliData, exclusive)) {
+                    continue outer
+                  }
+                }
                 throw new TypeError(`--${key} cannot be provided when using --${exclusive}`)
               }
             }
diff --git a/deps/npm/node_modules/@npmcli/config/package.json b/deps/npm/node_modules/@npmcli/config/package.json
index 980a53d738b48d..5da16efc6cc4c3 100644
--- a/deps/npm/node_modules/@npmcli/config/package.json
+++ b/deps/npm/node_modules/@npmcli/config/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@npmcli/config",
-  "version": "10.7.1",
+  "version": "10.8.1",
   "files": [
     "bin/",
     "lib/"
diff --git a/deps/npm/node_modules/@sigstore/core/dist/crypto.js b/deps/npm/node_modules/@sigstore/core/dist/crypto.js
index 296b5ba43e86a0..8d8110ee423476 100644
--- a/deps/npm/node_modules/@sigstore/core/dist/crypto.js
+++ b/deps/npm/node_modules/@sigstore/core/dist/crypto.js
@@ -25,7 +25,16 @@ limitations under the License.
 const crypto_1 = __importDefault(require("crypto"));
 function createPublicKey(key, type = 'spki') {
     if (typeof key === 'string') {
-        return crypto_1.default.createPublicKey(key);
+        if (key.startsWith('-----')) {
+            return crypto_1.default.createPublicKey(key);
+        }
+        else {
+            return crypto_1.default.createPublicKey({
+                key: Buffer.from(key, 'base64'),
+                format: 'der',
+                type: type,
+            });
+        }
     }
     else {
         return crypto_1.default.createPublicKey({ key, format: 'der', type: type });
diff --git a/deps/npm/node_modules/@sigstore/core/package.json b/deps/npm/node_modules/@sigstore/core/package.json
index 8cd757103e7a11..0564a373c6fa31 100644
--- a/deps/npm/node_modules/@sigstore/core/package.json
+++ b/deps/npm/node_modules/@sigstore/core/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@sigstore/core",
-  "version": "3.1.0",
+  "version": "3.2.0",
   "description": "Base library for Sigstore",
   "main": "dist/index.js",
   "types": "dist/index.d.ts",
diff --git a/deps/npm/node_modules/@sigstore/sign/dist/external/fetch.js b/deps/npm/node_modules/@sigstore/sign/dist/external/fetch.js
index 116090f3c641ef..9f65c8a7607fde 100644
--- a/deps/npm/node_modules/@sigstore/sign/dist/external/fetch.js
+++ b/deps/npm/node_modules/@sigstore/sign/dist/external/fetch.js
@@ -19,15 +19,15 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 */
+const promise_retry_1 = require("@gar/promise-retry");
 const http2_1 = require("http2");
 const make_fetch_happen_1 = __importDefault(require("make-fetch-happen"));
 const proc_log_1 = require("proc-log");
-const promise_retry_1 = __importDefault(require("promise-retry"));
 const util_1 = require("../util");
 const error_1 = require("./error");
 const { HTTP2_HEADER_LOCATION, HTTP2_HEADER_CONTENT_TYPE, HTTP2_HEADER_USER_AGENT, HTTP_STATUS_INTERNAL_SERVER_ERROR, HTTP_STATUS_TOO_MANY_REQUESTS, HTTP_STATUS_REQUEST_TIMEOUT, } = http2_1.constants;
 async function fetchWithRetry(url, options) {
-    return (0, promise_retry_1.default)(async (retry, attemptNum) => {
+    return (0, promise_retry_1.promiseRetry)(async (retry, attemptNum) => {
         const method = options.method || 'POST';
         const headers = {
             [HTTP2_HEADER_USER_AGENT]: util_1.ua.getUserAgent(),
diff --git a/deps/npm/node_modules/@sigstore/sign/package.json b/deps/npm/node_modules/@sigstore/sign/package.json
index 0f844a8735a891..c6b3f184a7bf1d 100644
--- a/deps/npm/node_modules/@sigstore/sign/package.json
+++ b/deps/npm/node_modules/@sigstore/sign/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@sigstore/sign",
-  "version": "4.1.0",
+  "version": "4.1.1",
   "description": "Sigstore signing library",
   "main": "dist/index.js",
   "types": "dist/index.d.ts",
@@ -27,18 +27,17 @@
   },
   "devDependencies": {
     "@sigstore/jest": "^0.0.0",
-    "@sigstore/mock": "^0.11.0",
+    "@sigstore/mock": "^0.12.0",
     "@sigstore/rekor-types": "^4.0.0",
-    "@types/make-fetch-happen": "^10.0.4",
-    "@types/promise-retry": "^1.1.6"
+    "@types/make-fetch-happen": "^10.0.4"
   },
   "dependencies": {
     "@sigstore/bundle": "^4.0.0",
-    "@sigstore/core": "^3.1.0",
+    "@sigstore/core": "^3.2.0",
     "@sigstore/protobuf-specs": "^0.5.0",
-    "make-fetch-happen": "^15.0.3",
+    "make-fetch-happen": "^15.0.4",
     "proc-log": "^6.1.0",
-    "promise-retry": "^2.0.1"
+    "@gar/promise-retry": "^1.0.2"
   },
   "engines": {
     "node": "^20.17.0 || >=22.9.0"
diff --git a/deps/npm/node_modules/@sigstore/tuf/package.json b/deps/npm/node_modules/@sigstore/tuf/package.json
index a782796c45ed6c..b1fd9bebe135d0 100644
--- a/deps/npm/node_modules/@sigstore/tuf/package.json
+++ b/deps/npm/node_modules/@sigstore/tuf/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@sigstore/tuf",
-  "version": "4.0.1",
+  "version": "4.0.2",
   "description": "Client for the Sigstore TUF repository",
   "main": "dist/index.js",
   "types": "dist/index.d.ts",
@@ -28,7 +28,7 @@
   },
   "devDependencies": {
     "@sigstore/jest": "^0.0.0",
-    "@tufjs/repo-mock": "^4.0.0",
+    "@tufjs/repo-mock": "^4.0.1",
     "@types/make-fetch-happen": "^10.0.4"
   },
   "dependencies": {
diff --git a/deps/npm/node_modules/@sigstore/tuf/seeds.json b/deps/npm/node_modules/@sigstore/tuf/seeds.json
index 54cb71f29ef0cf..2bd03b34f7db8d 100644
--- a/deps/npm/node_modules/@sigstore/tuf/seeds.json
+++ b/deps/npm/node_modules/@sigstore/tuf/seeds.json
@@ -1 +1 @@
-{"https://tuf-repo-cdn.sigstore.dev":{"root.json":"ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICJzaWciOiAiIgogIH0sCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGJiZGRkNDY0ZjgwNjZjZWI4OGJhNzg3Mzc1YzEyY2Q2MzMwNjgwZTA4YzI5MTA3MDNlNjUzOGM3MWNjNzlhZDIwMjIwNTE5MGIwNmU0NTM3ZmU5NjFiM2VmODFmZTY4ZWRjZDAwODljMTlmOTE5YWZlZDQyM2I5YWFmZDcwMDY0MTE1MyIKICB9LAogIHsKICAgImtleWlkIjogIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAic2lnIjogIjMwNDQwMjIwNjkzMDZjZDUyNTdmNzMyYTc0MGMxYWZlNjBhOGU0MzNjNWRlNThlYWZlYWRiZTk5YzMzNmM5YzcxZDE5OGNmODAyMjAwZDc3Mzk1M2FlN2RiYzQ4ZDNlNWJhZDlhNmY2NGJhZmZmMTk2YjdlMmFkNGE1MmExOTUxOTM2N2Q0N2RjMDQyIgogIH0sCiAgewogICAia2V5aWQiOiAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICJzaWciOiAiMzA0NDAyMjA0ZDIxYTJlYzgwZGY2NmU2MWY2ZmUyOTEyOTUxZGM0N2RmODM2MDM2ZjhjMGFiMTA4MTZkMzc1ZTcxZGJmNzllMDIyMDU0N2FkY2UxYWZkZjA0ZTY3OTRlZmEyMDNkZDUyNjRjNmY3ZTBlZjc4ZTU3ZmU5MzRiMGQyNmNiOTk0ZWVjNzYiCiAgfSwKICB7CiAgICJrZXlpZCI6ICJhNjg3ZTViZjRmYWI4MmIwZWU1OGQ0NmUwNWM5NTM1MTQ1YTJjOWFmYjQ1OGY0M2Q0MmI0NWNhMGZkY2UyYTcwIiwKICAgInNpZyI6ICIzMDQ1MDIyMDYwODI2NDk2NTU3MTQ0ZWIxNjQ5ODkzZWQ1ZjZmNGVhNTQ1MzZmZWIwY2E4MmY4Yjg5YWU2NDFiZTM5NzQzZTUwMjIxMDBhZDcxMThiNWU5ZDQ4MzczMjYyMDZlNDEyZmM2ZGEyOTk5OTI1ZDExMDMyOGE3YzE2NmIwNmM2MjQzMzZjOTNmIgogIH0sCiAgewogICAia2V5aWQiOiAiMTgzZTY0ZjM3NjcwZGMxM2NhMGQyODk5NWEzMDUzZjM3NDA5NTRkZGNlNDQzMjFhNDFlNDY1MzRjZjQ0ZTYzMiIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGQ4MTc5NDM5YzJlNzNlYjBjMTczM2FiZWU3ZmFmODMyZGNhZWE3MjYzZWRjYjQ5MTk4OTFjM2EyNDdmMDU5MjMwMjIxMDBlMWE0MzdlMDc5N2U4MDNmOWI3MmRjOWQyZDkyMTU1YjBhMjI3MGMyNGVmZGQ1ZjRiM2E1ZDhmMGIwZjQzMWE3IgogIH0KIF0sCiAic2lnbmVkIjogewogICJfdHlwZSI6ICJyb290IiwKICAiY29uc2lzdGVudF9zbmFwc2hvdCI6IHRydWUsCiAgImV4cGlyZXMiOiAiMjAyNi0wMS0yMlQxMzowNTo1OVoiLAogICJrZXlzIjogewogICAiMGM4NzQzMmMzYmYwOWZkOTkxODlmZGMzMmZhNWVhZWRmNGU0YTVmYWM3YmFiNzNmYTA0YTJlMGZjNjRhZjZmNSI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVdSaUdyNStqKzNKNVNzSCtadHI1bkUySDJ3TzdcbkJWK25PM3M5M2dMY2ExOHFUT3pIWTFvV3lBR0R5a01Tc0dUVUJTdDlEK0FuMEtmS3NEMm1mU000MlE9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1vbmxpbmUtdXJpIjogImdjcGttczpwcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wL2NyeXB0b0tleVZlcnNpb25zLzEiCiAgIH0sCiAgICIxODNlNjRmMzc2NzBkYzEzY2EwZDI4OTk1YTMwNTNmMzc0MDk1NGRkY2U0NDMyMWE0MWU0NjUzNGNmNDRlNjMyIjogewogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVNeHBQT0pDSVo1b3RHNDEwNmZHSnNlRVFpM1Y5XG5wa01ZUTR1eVY5VGoxTTdXSFhJeUxHK2prZnZ1RzBnbFExSlpiUlpaQlYzZ0FSNHNvamRHSElTZW93PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGxhbmNlIgogICB9LAogICAiMjJmNGNhZWM2ZDhlNmY5NTU1YWY2NmIzZDRjM2NiMDZhM2JiMjNmZGM3ZTM5YzkxNmM2MWY0NjJlNmY1MmIwNiI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXpCelZPbUhDUG9qTVZMU0kzNjRXaWlWOE5QckRcbjZJZ1J4Vmxpc2t6L3YreTNKRVI1bWNWR2NPTmxpRGNXTUM1SjJsZkhtalBOUGhiNEg3eG04THpmU0E9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAc2FudGlhZ290b3JyZXMiCiAgIH0sCiAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaW5pa1NzQVFtWWtOZUg1ZVlxL0NuSXpMYWFjT1xueGxTYWF3UURPd3FLeS90Q3F4cTV4eFBTSmMyMUs0V0loczlHeU9rS2Z6dWVZM0dJTHpjTUpaNGNXdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBib2JjYWxsYXdheSIKICAgfSwKICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUwZ2hyaDkyTHcxWXIzaWRHVjVXcUN0TURCOEN4XG4rRDhoZEM0dzJaTE5JcGxWUm9WR0xza1lhM2doZU15T2ppSjhrUGkxNWFRMi8vN1Arb2o3VXZKUEd3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGpvc2h1YWdsIgogICB9LAogICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUVYc3ozU1pYRmI4ak1WNDJqNnBKbHlqYmpSOEtcbk4zQndvY2V4cTZMTUliNXFzV0tPUXZMTjE2TlVlZkxjNEhzd09vdW1Sc1ZWYWFqU3BRUzZmb2JrUnc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAbW5tNjc4IgogICB9CiAgfSwKICAicm9sZXMiOiB7CiAgICJyb290IjogewogICAgImtleWlkcyI6IFsKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICAgIjE4M2U2NGYzNzY3MGRjMTNjYTBkMjg5OTVhMzA1M2YzNzQwOTU0ZGRjZTQ0MzIxYTQxZTQ2NTM0Y2Y0NGU2MzIiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInNuYXBzaG90IjogewogICAgImtleWlkcyI6IFsKICAgICAiMGM4NzQzMmMzYmYwOWZkOTkxODlmZGMzMmZhNWVhZWRmNGU0YTVmYWM3YmFiNzNmYTA0YTJlMGZjNjRhZjZmNSIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMSwKICAgICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMzY1MCwKICAgICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDM2NQogICB9LAogICAidGFyZ2V0cyI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiLAogICAgICIxODNlNjRmMzc2NzBkYzEzY2EwZDI4OTk1YTMwNTNmMzc0MDk1NGRkY2U0NDMyMWE0MWU0NjUzNGNmNDRlNjMyIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAzCiAgIH0sCiAgICJ0aW1lc3RhbXAiOiB7CiAgICAia2V5aWRzIjogWwogICAgICIwYzg3NDMyYzNiZjA5ZmQ5OTE4OWZkYzMyZmE1ZWFlZGY0ZTRhNWZhYzdiYWI3M2ZhMDRhMmUwZmM2NGFmNmY1IgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiA3LAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogNgogICB9CiAgfSwKICAic3BlY192ZXJzaW9uIjogIjEuMCIsCiAgInZlcnNpb24iOiAxMywKICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDE5NywKICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0NgogfQp9","targets":{"trusted_root.json":"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjdaIgogICAgICAgIH0KICAgICAgfSwKICAgICAgImxvZ0lkIjogewogICAgICAgICJrZXlJZCI6ICJ3Tkk5YXRRR2x6K1ZXZk82TFJ5Z0g0UVVmWS84VzRSRndpVDVpNVdSZ0IwPSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9sb2cyMDI1LTEucmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNQ293QlFZREsyVndBeUVBdDhybHAxa25Hd2pmYmNYQVlQWUFrbjBYaUx6MXg4TzR0MFlrRWhpZTI0ND0iLAogICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUQyNTUxOSIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjUtMDktMjNUMDA6MDA6MDBaIgogICAgICAgIH0KICAgICAgfSwKICAgICAgImxvZ0lkIjogewogICAgICAgICJrZXlJZCI6ICJ6eEdaRlZ2ZDBGRW1qUjhXckZ3TWRjQUo5dnRhWS9RWGY0NFkxd1VlUDZBPSIKICAgICAgfQogICAgfQogIF0sCiAgImNlcnRpZmljYXRlQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCK0RDQ0FYNmdBd0lCQWdJVE5Wa0Rab0Npb2ZQRHN5N2RmbTZnZUxidWh6QUtCZ2dxaGtqT1BRUURBekFxTVJVd0V3WURWUVFLRXd4emFXZHpkRzl5WlM1a1pYWXhFVEFQQmdOVkJBTVRDSE5wWjNOMGIzSmxNQjRYRFRJeE1ETXdOekF6TWpBeU9Wb1hEVE14TURJeU16QXpNakF5T1Zvd0tqRVZNQk1HQTFVRUNoTU1jMmxuYzNSdmNtVXVaR1YyTVJFd0R3WURWUVFERXdoemFXZHpkRzl5WlRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCTFN5QTdJaTVrK3BOTzhaRVdZMHlsZW1XRG93T2tOYTNrTCtHWkU1WjVHV2VoTDkvQTliUk5BM1JicnNaNWkwSmNhc3RhUkw3U3A1ZnAvakQ1ZHhxYy9VZFRWbmx2UzE2YW4rMllmc3dlL1F1TG9sUlVDcmNPRTIrMmlBNSt0emQ2Tm1NR1F3RGdZRFZSMFBBUUgvQkFRREFnRUdNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUV3SFFZRFZSME9CQllFRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01COEdBMVVkSXdRWU1CYUFGTWpGSFFCQm1pUXBNbEVrNncydVN1MUtCdFBzTUFvR0NDcUdTTTQ5QkFNREEyZ0FNR1VDTUg4bGlXSmZNdWk2dlhYQmhqRGdZNE13c2xtTi9USnhWZS84M1dyRm9td21OZjA1NnkxWDQ4RjljNG0zYTNvelhBSXhBS2pSYXk1L2FqL2pzS0tHSWttUWF0akk4dXVwSHIvK0N4RnZhSldtcFlxTmtMREdSVSs5b3J6aDVoSTJScmN1YVE9PSIKICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAic3RhcnQiOiAiMjAyMS0wMy0wN1QwMzoyMDoyOVoiLAogICAgICAgICJlbmQiOiAiMjAyMi0xMi0zMVQyMzo1OTo1OS45OTlaIgogICAgICB9CiAgICB9LAogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQ0dqQ0NBYUdnQXdJQkFnSVVBTG5WaVZmblUwYnJKYXNtUmtIcm4vVW5mYVF3Q2dZSUtvWkl6ajBFQXdNd0tqRVZNQk1HQTFVRUNoTU1jMmxuYzNSdmNtVXVaR1YyTVJFd0R3WURWUVFERXdoemFXZHpkRzl5WlRBZUZ3MHlNakEwTVRNeU1EQTJNVFZhRncwek1URXdNRFV4TXpVMk5UaGFNRGN4RlRBVEJnTlZCQW9UREhOcFozTjBiM0psTG1SbGRqRWVNQndHQTFVRUF4TVZjMmxuYzNSdmNtVXRhVzUwWlhKdFpXUnBZWFJsTUhZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNJRFlnQUU4UlZTL3lzSCtOT3Z1RFp5UEladGlsZ1VGOU5sYXJZcEFkOUhQMXZCQkgxVTVDVjc3TFNTN3MwWmlING5FN0h2N3B0UzZMdnZSL1NUazc5OExWZ016TGxKNEhlSWZGM3RIU2FleExjWXBTQVNyMWtTME4vUmdCSnovOWpXQ2lYbm8zc3dlVEFPQmdOVkhROEJBZjhFQkFNQ0FRWXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd013RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVTM5UHB6MVlrRVpiNXFOanBLRldpeGk0WVpEOHdId1lEVlIwakJCZ3dGb0FVV01BZVg1RkZwV2FwZXN5UW9aTWkwQ3JGeGZvd0NnWUlLb1pJemowRUF3TURad0F3WkFJd1BDc1FLNERZaVpZRFBJYURpNUhGS25meFh4NkFTU1ZtRVJmc3luWUJpWDJYNlNKUm5aVTg0LzlEWmRuRnZ2eG1BakJPdDZRcEJsYzRKLzBEeHZrVENxcGNsdnppTDZCQ0NQbmpkbElCM1B1M0J4c1BteWdVWTdJaTJ6YmRDZGxpaW93PSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCOXpDQ0FYeWdBd0lCQWdJVUFMWk5BUEZkeEhQd2plRGxvRHd5WUNoQU8vNHdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1URXdNRGN4TXpVMk5UbGFGdzB6TVRFd01EVXhNelUyTlRoYU1Db3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFUk1BOEdBMVVFQXhNSWMybG5jM1J2Y21Vd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVQ3WGVGVDRyYjNQUUd3UzRJYWp0TGszL09sbnBnYW5nYUJjbFlwc1lCcjVpKzR5bkIwN2NlYjNMUDBPSU9aZHhleFg2OWM1aVZ1eUpSUStIejA1eWkrVUYzdUJXQWxIcGlTNXNoMCtIMkdIRTdTWHJrMUVDNW0xVHIxOUw5Z2c5MmpZekJoTUE0R0ExVWREd0VCL3dRRUF3SUJCakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlJZd0I1ZmtVV2xacWw2ekpDaGt5TFFLc1hGK2pBZkJnTlZIU01FR0RBV2dCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFLQmdncWhrak9QUVFEQXdOcEFEQm1BakVBajFuSGVYWnArMTNOV0JOYStFRHNEUDhHMVdXZzF0Q01XUC9XSFBxcGFWbzBqaHN3ZU5GWmdTczBlRTd3WUk0cUFqRUEyV0I5b3Q5OHNJa29GM3ZaWWRkMy9WdFdCNWI5VE5NZWE3SXgvc3RKNVRmY0xMZUFCTEU0Qk5KT3NRNHZuQkhKIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIyLTA0LTEzVDIwOjA2OjE1WiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDBaIiwKICAgICAgICAgICJlbmQiOiAiMjAyMi0xMC0zMVQyMzo1OTo1OS45OTlaIgogICAgICAgIH0KICAgICAgfSwKICAgICAgImxvZ0lkIjogewogICAgICAgICJrZXlJZCI6ICJDR0NTOENoUy8yaEYwZEZySjRTY1JXY1lyQlk5d3pqU2JlYThJZ1kyYjNJPSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi8yMDIyIiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpUFNsRmkwQ21GVGZFakNVcUY5SHVDRWNZWE5LQWFZYWxJSm1CWjh5eWV6UGpUcWh4cktCcE1uYW9jVnRMSkJJMWVNM3VYblF6UUdBSmRKNGdzOUZ5dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjItMTAtMjBUMDA6MDA6MDBaIgogICAgICAgIH0KICAgICAgfSwKICAgICAgImxvZ0lkIjogewogICAgICAgICJrZXlJZCI6ICIzVDB3YXNiSEVUSmpHUjRjbVdjM0FxSktYcmplUEszL2g0cHlnQzhwN280PSIKICAgICAgfQogICAgfQogIF0sCiAgInRpbWVzdGFtcEF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUtdHNhLXNlbGZzaWduZWQiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly90aW1lc3RhbXAuc2lnc3RvcmUuZGV2L2FwaS92MS90aW1lc3RhbXAiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDRURDQ0FaYWdBd0lCQWdJVU9oTlVMd3lRWWU2OHdVTXZ5NHFPaXlvaml3d3dDZ1lJS29aSXpqMEVBd013T1RFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNU0F3SGdZRFZRUURFeGR6YVdkemRHOXlaUzEwYzJFdGMyVnNabk5wWjI1bFpEQWVGdzB5TlRBME1EZ3dOalU1TkROYUZ3MHpOVEEwTURZd05qVTVORE5hTUM0eEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVWTUJNR0ExVUVBeE1NYzJsbmMzUnZjbVV0ZEhOaE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFNHJhMlo4aEtOaWcyVDlrRmpDQVRvR0czMGpreStXUXYzQnpMK21LdmgxU0tOUi9Vd3V3c2ZOQ2c0c3J5b1lBZDhFNmlzb3ZWQTNNNGFvTmRtOVFEaTUwWjhuVEV5dnFnZkRQdFRJd1hJdGZpVy9BRmYxVjd1d2tia0FvajB4eGNvMm93YURBT0JnTlZIUThCQWY4RUJBTUNCNEF3SFFZRFZSME9CQllFRkluOWVVT0h6OUJsUnNNQ1JzY3NjMXQ5dE9zRE1COEdBMVVkSXdRWU1CYUFGSmpzQWU5L3UxSC8xSlVlYjRxSW1GTUhpYzYvTUJZR0ExVWRKUUVCL3dRTU1Bb0dDQ3NHQVFVRkJ3TUlNQW9HQ0NxR1NNNDlCQU1EQTJnQU1HVUNNRHRwc1YvNkthTzBxeUYvVU1zWDJhU1VYS1FGZG9HVHB0UUdjMGZ0cTFjc3VsSFBHRzZkc215TU5kM0pCK0czRVFJeEFPYWp2QmNqcEptS2I0TnYrMlRhb2o4VWM1K2I2aWg2RlhDQ0tyYVNxdXBlMDd6cXN3TWNYSlRlMWNFeHZIdnZsdz09IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVVjdmMEdMRE9vRXpJaDhMWFNXODBPSmlVcDE0d0NnWUlLb1pJemowRUF3TXdPVEVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1TQXdIZ1lEVlFRREV4ZHphV2R6ZEc5eVpTMTBjMkV0YzJWc1puTnBaMjVsWkRBZUZ3MHlOVEEwTURnd05qVTVORE5hRncwek5UQTBNRFl3TmpVNU5ETmFNRGt4RlRBVEJnTlZCQW9UREhOcFozTjBiM0psTG1SbGRqRWdNQjRHQTFVRUF4TVhjMmxuYzNSdmNtVXRkSE5oTFhObGJHWnphV2R1WldRd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVFVUU50ZlJUL291M1lBVGE2d0Iva0tUZTcwY2ZKd3lSSUJvdk1udDhSY0pwaC9DT0U4MnV5UzZGbXBwTExMMVZCUEdjUGZwUVBZSk5Yeld3aThpY3doS1E2Vy9RZTJoM29lYkJiMkZIcHdOSkRxbytUTWFDL3RkZmt2L0VsSkI3MmpSVEJETUE0R0ExVWREd0VCL3dRRUF3SUJCakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUIwR0ExVWREZ1FXQkJTWTdBSHZmN3RSLzlTVkhtK0tpSmhUQjRuT3Z6QUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUF3R0VHcmZHWlIxY2VuMVI4L0RUVk1JOTQzTHNzWm1KUnREcC9pN1NmR0htR1JQNmdSYnVqOXZPSzNiNjdaMFFRQWpFQXVUMkg2NzNMUUVhSFRjeVFTWnJrcDRtWDdXd2ttRitzVmJrWVk1bVhOK1JNSDEzS1VFSEhPcUFTYWVtWVdLL0UiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjUtMDctMDRUMDA6MDA6MDBaIgogICAgICB9CiAgICB9CiAgXQp9Cg==","registry.npmjs.org%2Fkeys.json":"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICJlbmQiOiAiMjAyNS0wMS0yOVQwMDowMDowMC4wMDBaIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJrZXlJZCI6ICJTSEEyNTY6amwzYndzd3U4MFBqam9rQ2doMG8ydzVjMlU0TGhRQUU1N2dqOWN6MWt6QSIsCiAgICAgICAgICAgICJrZXlVc2FnZSI6ICJucG06YXR0ZXN0YXRpb25zIiwKICAgICAgICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUxT2xiM3pNQUZGeFhLSGlJa1FPNWNKM1lobDVpNlVQcCtJaHV0ZUJKYnVIY0E1VW9nS28wRVd0bFd3VzZLU2FLb1RORVlMN0psQ1FpVm5raEJrdFVnZz09IiwKICAgICAgICAgICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUNEU0FfUDI1Nl9TSEFfMjU2IiwKICAgICAgICAgICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICAgICAgICAgICAic3RhcnQiOiAiMjAyMi0xMi0wMVQwMDowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgICAgICAiZW5kIjogIjIwMjUtMDEtMjlUMDA6MDA6MDAuMDAwWiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OkRoUTh3UjVBUEJ2RkhMRi8rVGMrQVl2UE9kVHBjSURxT2h4c0JIUndDN1UiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpEaFE4d1I1QVBCdkZITEYvK1RjK0FZdlBPZFRwY0lEcU9oeHNCSFJ3QzdVIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K"}}}
+{"https://tuf-repo-cdn.sigstore.dev":{"root.json":"ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGUwNGM5NzA2Mjk5YmU1ZDhjMmIxNGZiNTBiY2Q1YjljMjQxZjEwNTk3MTUzZGZlMjJmOTQzZWZlODk2YjUxNTAwMjIxMDBjZmQ3YjlmMDZhNTkwMDc4NGUzMTJkMDJiOGUzMzZlZGJiM2IyZmFiNjFhYzE0NTUwYjMxMTJiNGY5ZTMzZGY0IgogIH0sCiAgewogICAia2V5aWQiOiAiMjJmNGNhZWM2ZDhlNmY5NTU1YWY2NmIzZDRjM2NiMDZhM2JiMjNmZGM3ZTM5YzkxNmM2MWY0NjJlNmY1MmIwNiIsCiAgICJzaWciOiAiIgogIH0sCiAgewogICAia2V5aWQiOiAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGNjMzA4YWU3ZDM5MGZhNzgyZWUzMzc2ZGRmYWE5Mjk4MzUwMTZlODZkYWQ4MWY2OWUyZGU3ZWMxZTE3NDQzMmUwMjIwNWZiMTk5MDZhMzFjY2UxNDZjMjk2MjQ0NDNjMGQwYzJmMzNlZTgwZGFjMzlkNzIxMTRmOTM5NjA3Y2MyMjkzNyIKICB9LAogIHsKICAgImtleWlkIjogImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiLAogICAic2lnIjogIjMwNDUwMjIwM2Y4YWZmN2EzMGUwNWE4YzNkOTA0YjY3MWFiMWE2ZTRlOGE2ZjUwOGI3Y2ZhMGM3ODBlNzI5NzZiZWU3YTIyNzAyMjEwMGY2NGM5Yjc2NTUyNmYzNGQ5ZWExNjMzOWNmMjM4ODkzZTFjMzM2OGI0ZjA5MTBhNjFhMWFmMjdkZGEwMWViYjkiCiAgfSwKICB7CiAgICJrZXlpZCI6ICIxODNlNjRmMzc2NzBkYzEzY2EwZDI4OTk1YTMwNTNmMzc0MDk1NGRkY2U0NDMyMWE0MWU0NjUzNGNmNDRlNjMyIiwKICAgInNpZyI6ICIzMDQ1MDIyMDIzNjNjYTI0OWFlZmE2ZDVmNjFjNDA4YTMyY2RkMDc5YjAzNGE3ODg4ZGRmMjEzNmRjNDUxNWVkNGE3Mjg0MTgwMjIxMDBiMDRlY2E0MmJjNTEwY2NiYmY1ZDMwNzgzYWFhOTM2YjFmMTM3Y2E3YTAxN2VlOWQ5MGQzNzEwNDMyZGEwNDI3IgogIH0KIF0sCiAic2lnbmVkIjogewogICJfdHlwZSI6ICJyb290IiwKICAiY29uc2lzdGVudF9zbmFwc2hvdCI6IHRydWUsCiAgImV4cGlyZXMiOiAiMjAyNi0wNi0yMlQxMzoyNzowMVoiLAogICJrZXlzIjogewogICAiMGM4NzQzMmMzYmYwOWZkOTkxODlmZGMzMmZhNWVhZWRmNGU0YTVmYWM3YmFiNzNmYTA0YTJlMGZjNjRhZjZmNSI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVdSaUdyNStqKzNKNVNzSCtadHI1bkUySDJ3TzdcbkJWK25PM3M5M2dMY2ExOHFUT3pIWTFvV3lBR0R5a01Tc0dUVUJTdDlEK0FuMEtmS3NEMm1mU000MlE9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1vbmxpbmUtdXJpIjogImdjcGttczpwcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wL2NyeXB0b0tleVZlcnNpb25zLzEiCiAgIH0sCiAgICIxODNlNjRmMzc2NzBkYzEzY2EwZDI4OTk1YTMwNTNmMzc0MDk1NGRkY2U0NDMyMWE0MWU0NjUzNGNmNDRlNjMyIjogewogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVNeHBQT0pDSVo1b3RHNDEwNmZHSnNlRVFpM1Y5XG5wa01ZUTR1eVY5VGoxTTdXSFhJeUxHK2prZnZ1RzBnbFExSlpiUlpaQlYzZ0FSNHNvamRHSElTZW93PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGxhbmNlIgogICB9LAogICAiMjJmNGNhZWM2ZDhlNmY5NTU1YWY2NmIzZDRjM2NiMDZhM2JiMjNmZGM3ZTM5YzkxNmM2MWY0NjJlNmY1MmIwNiI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXpCelZPbUhDUG9qTVZMU0kzNjRXaWlWOE5QckRcbjZJZ1J4Vmxpc2t6L3YreTNKRVI1bWNWR2NPTmxpRGNXTUM1SjJsZkhtalBOUGhiNEg3eG04THpmU0E9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAc2FudGlhZ290b3JyZXMiCiAgIH0sCiAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaW5pa1NzQVFtWWtOZUg1ZVlxL0NuSXpMYWFjT1xueGxTYWF3UURPd3FLeS90Q3F4cTV4eFBTSmMyMUs0V0loczlHeU9rS2Z6dWVZM0dJTHpjTUpaNGNXdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBib2JjYWxsYXdheSIKICAgfSwKICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUwZ2hyaDkyTHcxWXIzaWRHVjVXcUN0TURCOEN4XG4rRDhoZEM0dzJaTE5JcGxWUm9WR0xza1lhM2doZU15T2ppSjhrUGkxNWFRMi8vN1Arb2o3VXZKUEd3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGpvc2h1YWdsIgogICB9LAogICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUVYc3ozU1pYRmI4ak1WNDJqNnBKbHlqYmpSOEtcbk4zQndvY2V4cTZMTUliNXFzV0tPUXZMTjE2TlVlZkxjNEhzd09vdW1Sc1ZWYWFqU3BRUzZmb2JrUnc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAbW5tNjc4IgogICB9CiAgfSwKICAicm9sZXMiOiB7CiAgICJyb290IjogewogICAgImtleWlkcyI6IFsKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICAgIjE4M2U2NGYzNzY3MGRjMTNjYTBkMjg5OTVhMzA1M2YzNzQwOTU0ZGRjZTQ0MzIxYTQxZTQ2NTM0Y2Y0NGU2MzIiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInNuYXBzaG90IjogewogICAgImtleWlkcyI6IFsKICAgICAiMGM4NzQzMmMzYmYwOWZkOTkxODlmZGMzMmZhNWVhZWRmNGU0YTVmYWM3YmFiNzNmYTA0YTJlMGZjNjRhZjZmNSIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMSwKICAgICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMzY1MCwKICAgICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDM2NQogICB9LAogICAidGFyZ2V0cyI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiLAogICAgICIxODNlNjRmMzc2NzBkYzEzY2EwZDI4OTk1YTMwNTNmMzc0MDk1NGRkY2U0NDMyMWE0MWU0NjUzNGNmNDRlNjMyIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAzCiAgIH0sCiAgICJ0aW1lc3RhbXAiOiB7CiAgICAia2V5aWRzIjogWwogICAgICIwYzg3NDMyYzNiZjA5ZmQ5OTE4OWZkYzMyZmE1ZWFlZGY0ZTRhNWZhYzdiYWI3M2ZhMDRhMmUwZmM2NGFmNmY1IgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiA3LAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogNgogICB9CiAgfSwKICAic3BlY192ZXJzaW9uIjogIjEuMCIsCiAgInZlcnNpb24iOiAxNCwKICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDE5NywKICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0NgogfQp9","targets":{"trusted_root.json":"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjdaIgogICAgICAgIH0KICAgICAgfSwKICAgICAgImxvZ0lkIjogewogICAgICAgICJrZXlJZCI6ICJ3Tkk5YXRRR2x6K1ZXZk82TFJ5Z0g0UVVmWS84VzRSRndpVDVpNVdSZ0IwPSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9sb2cyMDI1LTEucmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNQ293QlFZREsyVndBeUVBdDhybHAxa25Hd2pmYmNYQVlQWUFrbjBYaUx6MXg4TzR0MFlrRWhpZTI0ND0iLAogICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUQyNTUxOSIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjUtMDktMjNUMDA6MDA6MDBaIgogICAgICAgIH0KICAgICAgfSwKICAgICAgImxvZ0lkIjogewogICAgICAgICJrZXlJZCI6ICJ6eEdaRlZ2ZDBGRW1qUjhXckZ3TWRjQUo5dnRhWS9RWGY0NFkxd1VlUDZBPSIKICAgICAgfQogICAgfQogIF0sCiAgImNlcnRpZmljYXRlQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCK0RDQ0FYNmdBd0lCQWdJVE5Wa0Rab0Npb2ZQRHN5N2RmbTZnZUxidWh6QUtCZ2dxaGtqT1BRUURBekFxTVJVd0V3WURWUVFLRXd4emFXZHpkRzl5WlM1a1pYWXhFVEFQQmdOVkJBTVRDSE5wWjNOMGIzSmxNQjRYRFRJeE1ETXdOekF6TWpBeU9Wb1hEVE14TURJeU16QXpNakF5T1Zvd0tqRVZNQk1HQTFVRUNoTU1jMmxuYzNSdmNtVXVaR1YyTVJFd0R3WURWUVFERXdoemFXZHpkRzl5WlRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCTFN5QTdJaTVrK3BOTzhaRVdZMHlsZW1XRG93T2tOYTNrTCtHWkU1WjVHV2VoTDkvQTliUk5BM1JicnNaNWkwSmNhc3RhUkw3U3A1ZnAvakQ1ZHhxYy9VZFRWbmx2UzE2YW4rMllmc3dlL1F1TG9sUlVDcmNPRTIrMmlBNSt0emQ2Tm1NR1F3RGdZRFZSMFBBUUgvQkFRREFnRUdNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUV3SFFZRFZSME9CQllFRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01COEdBMVVkSXdRWU1CYUFGTWpGSFFCQm1pUXBNbEVrNncydVN1MUtCdFBzTUFvR0NDcUdTTTQ5QkFNREEyZ0FNR1VDTUg4bGlXSmZNdWk2dlhYQmhqRGdZNE13c2xtTi9USnhWZS84M1dyRm9td21OZjA1NnkxWDQ4RjljNG0zYTNvelhBSXhBS2pSYXk1L2FqL2pzS0tHSWttUWF0akk4dXVwSHIvK0N4RnZhSldtcFlxTmtMREdSVSs5b3J6aDVoSTJScmN1YVE9PSIKICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAic3RhcnQiOiAiMjAyMS0wMy0wN1QwMzoyMDoyOVoiLAogICAgICAgICJlbmQiOiAiMjAyMi0xMi0zMVQyMzo1OTo1OS45OTlaIgogICAgICB9CiAgICB9LAogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQ0dqQ0NBYUdnQXdJQkFnSVVBTG5WaVZmblUwYnJKYXNtUmtIcm4vVW5mYVF3Q2dZSUtvWkl6ajBFQXdNd0tqRVZNQk1HQTFVRUNoTU1jMmxuYzNSdmNtVXVaR1YyTVJFd0R3WURWUVFERXdoemFXZHpkRzl5WlRBZUZ3MHlNakEwTVRNeU1EQTJNVFZhRncwek1URXdNRFV4TXpVMk5UaGFNRGN4RlRBVEJnTlZCQW9UREhOcFozTjBiM0psTG1SbGRqRWVNQndHQTFVRUF4TVZjMmxuYzNSdmNtVXRhVzUwWlhKdFpXUnBZWFJsTUhZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNJRFlnQUU4UlZTL3lzSCtOT3Z1RFp5UEladGlsZ1VGOU5sYXJZcEFkOUhQMXZCQkgxVTVDVjc3TFNTN3MwWmlING5FN0h2N3B0UzZMdnZSL1NUazc5OExWZ016TGxKNEhlSWZGM3RIU2FleExjWXBTQVNyMWtTME4vUmdCSnovOWpXQ2lYbm8zc3dlVEFPQmdOVkhROEJBZjhFQkFNQ0FRWXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd013RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVTM5UHB6MVlrRVpiNXFOanBLRldpeGk0WVpEOHdId1lEVlIwakJCZ3dGb0FVV01BZVg1RkZwV2FwZXN5UW9aTWkwQ3JGeGZvd0NnWUlLb1pJemowRUF3TURad0F3WkFJd1BDc1FLNERZaVpZRFBJYURpNUhGS25meFh4NkFTU1ZtRVJmc3luWUJpWDJYNlNKUm5aVTg0LzlEWmRuRnZ2eG1BakJPdDZRcEJsYzRKLzBEeHZrVENxcGNsdnppTDZCQ0NQbmpkbElCM1B1M0J4c1BteWdVWTdJaTJ6YmRDZGxpaW93PSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCOXpDQ0FYeWdBd0lCQWdJVUFMWk5BUEZkeEhQd2plRGxvRHd5WUNoQU8vNHdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1URXdNRGN4TXpVMk5UbGFGdzB6TVRFd01EVXhNelUyTlRoYU1Db3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFUk1BOEdBMVVFQXhNSWMybG5jM1J2Y21Vd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVQ3WGVGVDRyYjNQUUd3UzRJYWp0TGszL09sbnBnYW5nYUJjbFlwc1lCcjVpKzR5bkIwN2NlYjNMUDBPSU9aZHhleFg2OWM1aVZ1eUpSUStIejA1eWkrVUYzdUJXQWxIcGlTNXNoMCtIMkdIRTdTWHJrMUVDNW0xVHIxOUw5Z2c5MmpZekJoTUE0R0ExVWREd0VCL3dRRUF3SUJCakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlJZd0I1ZmtVV2xacWw2ekpDaGt5TFFLc1hGK2pBZkJnTlZIU01FR0RBV2dCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFLQmdncWhrak9QUVFEQXdOcEFEQm1BakVBajFuSGVYWnArMTNOV0JOYStFRHNEUDhHMVdXZzF0Q01XUC9XSFBxcGFWbzBqaHN3ZU5GWmdTczBlRTd3WUk0cUFqRUEyV0I5b3Q5OHNJa29GM3ZaWWRkMy9WdFdCNWI5VE5NZWE3SXgvc3RKNVRmY0xMZUFCTEU0Qk5KT3NRNHZuQkhKIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIyLTA0LTEzVDIwOjA2OjE1WiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDBaIiwKICAgICAgICAgICJlbmQiOiAiMjAyMi0xMC0zMVQyMzo1OTo1OS45OTlaIgogICAgICAgIH0KICAgICAgfSwKICAgICAgImxvZ0lkIjogewogICAgICAgICJrZXlJZCI6ICJDR0NTOENoUy8yaEYwZEZySjRTY1JXY1lyQlk5d3pqU2JlYThJZ1kyYjNJPSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi8yMDIyIiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpUFNsRmkwQ21GVGZFakNVcUY5SHVDRWNZWE5LQWFZYWxJSm1CWjh5eWV6UGpUcWh4cktCcE1uYW9jVnRMSkJJMWVNM3VYblF6UUdBSmRKNGdzOUZ5dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjItMTAtMjBUMDA6MDA6MDBaIgogICAgICAgIH0KICAgICAgfSwKICAgICAgImxvZ0lkIjogewogICAgICAgICJrZXlJZCI6ICIzVDB3YXNiSEVUSmpHUjRjbVdjM0FxSktYcmplUEszL2g0cHlnQzhwN280PSIKICAgICAgfQogICAgfQogIF0sCiAgInRpbWVzdGFtcEF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUtdHNhLXNlbGZzaWduZWQiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly90aW1lc3RhbXAuc2lnc3RvcmUuZGV2L2FwaS92MS90aW1lc3RhbXAiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDRURDQ0FaYWdBd0lCQWdJVU9oTlVMd3lRWWU2OHdVTXZ5NHFPaXlvaml3d3dDZ1lJS29aSXpqMEVBd013T1RFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNU0F3SGdZRFZRUURFeGR6YVdkemRHOXlaUzEwYzJFdGMyVnNabk5wWjI1bFpEQWVGdzB5TlRBME1EZ3dOalU1TkROYUZ3MHpOVEEwTURZd05qVTVORE5hTUM0eEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVWTUJNR0ExVUVBeE1NYzJsbmMzUnZjbVV0ZEhOaE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFNHJhMlo4aEtOaWcyVDlrRmpDQVRvR0czMGpreStXUXYzQnpMK21LdmgxU0tOUi9Vd3V3c2ZOQ2c0c3J5b1lBZDhFNmlzb3ZWQTNNNGFvTmRtOVFEaTUwWjhuVEV5dnFnZkRQdFRJd1hJdGZpVy9BRmYxVjd1d2tia0FvajB4eGNvMm93YURBT0JnTlZIUThCQWY4RUJBTUNCNEF3SFFZRFZSME9CQllFRkluOWVVT0h6OUJsUnNNQ1JzY3NjMXQ5dE9zRE1COEdBMVVkSXdRWU1CYUFGSmpzQWU5L3UxSC8xSlVlYjRxSW1GTUhpYzYvTUJZR0ExVWRKUUVCL3dRTU1Bb0dDQ3NHQVFVRkJ3TUlNQW9HQ0NxR1NNNDlCQU1EQTJnQU1HVUNNRHRwc1YvNkthTzBxeUYvVU1zWDJhU1VYS1FGZG9HVHB0UUdjMGZ0cTFjc3VsSFBHRzZkc215TU5kM0pCK0czRVFJeEFPYWp2QmNqcEptS2I0TnYrMlRhb2o4VWM1K2I2aWg2RlhDQ0tyYVNxdXBlMDd6cXN3TWNYSlRlMWNFeHZIdnZsdz09IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVVjdmMEdMRE9vRXpJaDhMWFNXODBPSmlVcDE0d0NnWUlLb1pJemowRUF3TXdPVEVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1TQXdIZ1lEVlFRREV4ZHphV2R6ZEc5eVpTMTBjMkV0YzJWc1puTnBaMjVsWkRBZUZ3MHlOVEEwTURnd05qVTVORE5hRncwek5UQTBNRFl3TmpVNU5ETmFNRGt4RlRBVEJnTlZCQW9UREhOcFozTjBiM0psTG1SbGRqRWdNQjRHQTFVRUF4TVhjMmxuYzNSdmNtVXRkSE5oTFhObGJHWnphV2R1WldRd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVFVUU50ZlJUL291M1lBVGE2d0Iva0tUZTcwY2ZKd3lSSUJvdk1udDhSY0pwaC9DT0U4MnV5UzZGbXBwTExMMVZCUEdjUGZwUVBZSk5Yeld3aThpY3doS1E2Vy9RZTJoM29lYkJiMkZIcHdOSkRxbytUTWFDL3RkZmt2L0VsSkI3MmpSVEJETUE0R0ExVWREd0VCL3dRRUF3SUJCakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUIwR0ExVWREZ1FXQkJTWTdBSHZmN3RSLzlTVkhtK0tpSmhUQjRuT3Z6QUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUF3R0VHcmZHWlIxY2VuMVI4L0RUVk1JOTQzTHNzWm1KUnREcC9pN1NmR0htR1JQNmdSYnVqOXZPSzNiNjdaMFFRQWpFQXVUMkg2NzNMUUVhSFRjeVFTWnJrcDRtWDdXd2ttRitzVmJrWVk1bVhOK1JNSDEzS1VFSEhPcUFTYWVtWVdLL0UiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjUtMDctMDRUMDA6MDA6MDBaIgogICAgICB9CiAgICB9CiAgXQp9Cg==","registry.npmjs.org%2Fkeys.json":"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICJlbmQiOiAiMjAyNS0wMS0yOVQwMDowMDowMC4wMDBaIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJrZXlJZCI6ICJTSEEyNTY6amwzYndzd3U4MFBqam9rQ2doMG8ydzVjMlU0TGhRQUU1N2dqOWN6MWt6QSIsCiAgICAgICAgICAgICJrZXlVc2FnZSI6ICJucG06YXR0ZXN0YXRpb25zIiwKICAgICAgICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUxT2xiM3pNQUZGeFhLSGlJa1FPNWNKM1lobDVpNlVQcCtJaHV0ZUJKYnVIY0E1VW9nS28wRVd0bFd3VzZLU2FLb1RORVlMN0psQ1FpVm5raEJrdFVnZz09IiwKICAgICAgICAgICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUNEU0FfUDI1Nl9TSEFfMjU2IiwKICAgICAgICAgICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICAgICAgICAgICAic3RhcnQiOiAiMjAyMi0xMi0wMVQwMDowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgICAgICAiZW5kIjogIjIwMjUtMDEtMjlUMDA6MDA6MDAuMDAwWiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OkRoUTh3UjVBUEJ2RkhMRi8rVGMrQVl2UE9kVHBjSURxT2h4c0JIUndDN1UiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpEaFE4d1I1QVBCdkZITEYvK1RjK0FZdlBPZFRwY0lEcU9oeHNCSFJ3QzdVIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K"}}}
diff --git a/deps/npm/node_modules/cacache/lib/content/write.js b/deps/npm/node_modules/cacache/lib/content/write.js
index e7187abca8788a..8deb91c066a964 100644
--- a/deps/npm/node_modules/cacache/lib/content/write.js
+++ b/deps/npm/node_modules/cacache/lib/content/write.js
@@ -10,7 +10,7 @@ const Pipeline = require('minipass-pipeline')
 const Flush = require('minipass-flush')
 const path = require('path')
 const ssri = require('ssri')
-const uniqueFilename = require('unique-filename')
+const { tmpName } = require('../util/tmp')
 const fsm = require('fs-minipass')
 
 module.exports = write
@@ -152,7 +152,7 @@ async function pipeToTmp (inputStream, cache, tmpTarget, opts) {
 }
 
 async function makeTmp (cache, opts) {
-  const tmpTarget = uniqueFilename(path.join(cache, 'tmp'), opts.tmpPrefix)
+  const tmpTarget = tmpName(cache, opts.tmpPrefix)
   await fs.mkdir(path.dirname(tmpTarget), { recursive: true })
   return {
     target: tmpTarget,
diff --git a/deps/npm/node_modules/cacache/lib/entry-index.js b/deps/npm/node_modules/cacache/lib/entry-index.js
index 0e09b10818d097..a8fdf93a03e424 100644
--- a/deps/npm/node_modules/cacache/lib/entry-index.js
+++ b/deps/npm/node_modules/cacache/lib/entry-index.js
@@ -12,7 +12,7 @@ const {
 const { Minipass } = require('minipass')
 const path = require('path')
 const ssri = require('ssri')
-const uniqueFilename = require('unique-filename')
+const { tmpName } = require('./util/tmp')
 
 const contentPath = require('./content/path')
 const hashToSegments = require('./util/hash-to-segments')
@@ -69,7 +69,7 @@ async function compact (cache, key, matchFn, opts = {}) {
   }).join('\n')
 
   const setup = async () => {
-    const target = uniqueFilename(path.join(cache, 'tmp'), opts.tmpPrefix)
+    const target = tmpName(cache, opts.tmpPrefix)
     await mkdir(path.dirname(target), { recursive: true })
     return {
       target,
diff --git a/deps/npm/node_modules/cacache/lib/util/tmp.js b/deps/npm/node_modules/cacache/lib/util/tmp.js
index 0bf5302136ebeb..d5c088e1e6de01 100644
--- a/deps/npm/node_modules/cacache/lib/util/tmp.js
+++ b/deps/npm/node_modules/cacache/lib/util/tmp.js
@@ -1,11 +1,17 @@
 'use strict'
 
+const crypto = require('crypto')
 const { withTempDir } = require('@npmcli/fs')
 const fs = require('fs/promises')
 const path = require('path')
 
 module.exports.mkdir = mktmpdir
 
+module.exports.tmpName = function tmpName (cache, tmpPrefix) {
+  const id = crypto.randomUUID()
+  return path.join(cache, 'tmp', tmpPrefix ? `${tmpPrefix}-${id}` : id)
+}
+
 async function mktmpdir (cache, opts = {}) {
   const { tmpPrefix } = opts
   const tmpDir = path.join(cache, 'tmp')
diff --git a/deps/npm/node_modules/cacache/package.json b/deps/npm/node_modules/cacache/package.json
index fb8eb5f66edf93..170e43646fa2b1 100644
--- a/deps/npm/node_modules/cacache/package.json
+++ b/deps/npm/node_modules/cacache/package.json
@@ -1,6 +1,6 @@
 {
   "name": "cacache",
-  "version": "20.0.3",
+  "version": "20.0.4",
   "cache-version": {
     "content": "2",
     "index": "5"
@@ -55,12 +55,11 @@
     "minipass-flush": "^1.0.5",
     "minipass-pipeline": "^1.2.4",
     "p-map": "^7.0.2",
-    "ssri": "^13.0.0",
-    "unique-filename": "^5.0.0"
+    "ssri": "^13.0.0"
   },
   "devDependencies": {
     "@npmcli/eslint-config": "^6.0.1",
-    "@npmcli/template-oss": "4.28.0",
+    "@npmcli/template-oss": "4.29.0",
     "tap": "^16.0.0"
   },
   "engines": {
@@ -69,7 +68,7 @@
   "templateOSS": {
     "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
     "windowsCI": false,
-    "version": "4.28.0",
+    "version": "4.29.0",
     "publish": "true"
   },
   "author": "GitHub Inc.",
diff --git a/deps/npm/node_modules/err-code/bower.json b/deps/npm/node_modules/err-code/bower.json
deleted file mode 100644
index a39cb702cedb21..00000000000000
--- a/deps/npm/node_modules/err-code/bower.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "name": "err-code",
-  "version": "1.1.1",
-  "description": "Create new error instances with a code and additional properties",
-  "main": "index.umd.js",
-  "homepage": "https://github.com/IndigoUnited/js-err-code",
-  "authors": [
-    "IndigoUnited <hello@indigounited.com> (http://indigounited.com)"
-  ],
-  "moduleType": [
-    "amd",
-    "globals",
-    "node"
-  ],
-  "keywords": [
-      "error",
-      "err",
-      "code",
-      "properties",
-      "property"
-  ],
-  "license": "MIT",
-  "ignore": [
-    "**/.*",
-    "node_modules",
-    "bower_components",
-    "test",
-    "tests"
-  ]
-}
diff --git a/deps/npm/node_modules/err-code/index.js b/deps/npm/node_modules/err-code/index.js
deleted file mode 100644
index 9ff3e9c5de4c2c..00000000000000
--- a/deps/npm/node_modules/err-code/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-'use strict';
-
-function assign(obj, props) {
-    for (const key in props) {
-        Object.defineProperty(obj, key, {
-            value: props[key],
-            enumerable: true,
-            configurable: true,
-        });
-    }
-
-    return obj;
-}
-
-function createError(err, code, props) {
-    if (!err || typeof err === 'string') {
-        throw new TypeError('Please pass an Error to err-code');
-    }
-
-    if (!props) {
-        props = {};
-    }
-
-    if (typeof code === 'object') {
-        props = code;
-        code = undefined;
-    }
-
-    if (code != null) {
-        props.code = code;
-    }
-
-    try {
-        return assign(err, props);
-    } catch (_) {
-        props.message = err.message;
-        props.stack = err.stack;
-
-        const ErrClass = function () {};
-
-        ErrClass.prototype = Object.create(Object.getPrototypeOf(err));
-
-        return assign(new ErrClass(), props);
-    }
-}
-
-module.exports = createError;
diff --git a/deps/npm/node_modules/err-code/index.umd.js b/deps/npm/node_modules/err-code/index.umd.js
deleted file mode 100644
index 41007269d3d039..00000000000000
--- a/deps/npm/node_modules/err-code/index.umd.js
+++ /dev/null
@@ -1,51 +0,0 @@
-(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.errCode = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
-'use strict';
-
-function assign(obj, props) {
-    for (const key in props) {
-        Object.defineProperty(obj, key, {
-            value: props[key],
-            enumerable: true,
-            configurable: true,
-        });
-    }
-
-    return obj;
-}
-
-function createError(err, code, props) {
-    if (!err || typeof err === 'string') {
-        throw new TypeError('Please pass an Error to err-code');
-    }
-
-    if (!props) {
-        props = {};
-    }
-
-    if (typeof code === 'object') {
-        props = code;
-        code = undefined;
-    }
-
-    if (code != null) {
-        props.code = code;
-    }
-
-    try {
-        return assign(err, props);
-    } catch (_) {
-        props.message = err.message;
-        props.stack = err.stack;
-
-        const ErrClass = function () {};
-
-        ErrClass.prototype = Object.create(Object.getPrototypeOf(err));
-
-        return assign(new ErrClass(), props);
-    }
-}
-
-module.exports = createError;
-
-},{}]},{},[1])(1)
-});
diff --git a/deps/npm/node_modules/err-code/package.json b/deps/npm/node_modules/err-code/package.json
deleted file mode 100644
index 8c6007b394559a..00000000000000
--- a/deps/npm/node_modules/err-code/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "name": "err-code",
-  "version": "2.0.3",
-  "description": "Create an error with a code",
-  "main": "index.js",
-  "scripts": {
-    "lint": "eslint '{*.js,test/**/*.js}' --ignore-pattern *.umd.js",
-    "test": "mocha --bail",
-    "browserify": "browserify -s err-code index.js > index.umd.js"
-  },
-  "bugs": {
-    "url": "https://github.com/IndigoUnited/js-err-code/issues/"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/IndigoUnited/js-err-code.git"
-  },
-  "keywords": [
-    "error",
-    "err",
-    "code",
-    "properties",
-    "property"
-  ],
-  "author": "IndigoUnited <hello@indigounited.com> (http://indigounited.com)",
-  "license": "MIT",
-  "devDependencies": {
-    "@satazor/eslint-config": "^3.0.0",
-    "browserify": "^16.5.1",
-    "eslint": "^7.2.0",
-    "expect.js": "^0.3.1",
-    "mocha": "^8.0.1"
-  }
-}
diff --git a/deps/npm/node_modules/err-code/test/test.js b/deps/npm/node_modules/err-code/test/test.js
deleted file mode 100644
index 22ba0a8a1a8c1f..00000000000000
--- a/deps/npm/node_modules/err-code/test/test.js
+++ /dev/null
@@ -1,159 +0,0 @@
-'use strict';
-
-const errcode = require('../index');
-const expect = require('expect.js');
-
-describe('errcode', () => {
-    describe('string as first argument', () => {
-        it('should throw an error', () => {
-            expect(() => { errcode('my message'); }).to.throwError((err) => {
-                expect(err).to.be.a(TypeError);
-            });
-        });
-    });
-
-    describe('error as first argument', () => {
-        it('should accept an error and do nothing', () => {
-            const myErr = new Error('my message');
-            const err = errcode(myErr);
-
-            expect(err).to.be(myErr);
-            expect(err.hasOwnProperty(err.code)).to.be(false);
-        });
-
-        it('should accept an error and add a code', () => {
-            const myErr = new Error('my message');
-            const err = errcode(myErr, 'ESOME');
-
-            expect(err).to.be(myErr);
-            expect(err.code).to.be('ESOME');
-        });
-
-        it('should accept an error object and add code & properties', () => {
-            const myErr = new Error('my message');
-            const err = errcode(myErr, 'ESOME', { foo: 'bar', bar: 'foo' });
-
-            expect(err).to.be.an(Error);
-            expect(err.code).to.be('ESOME');
-            expect(err.foo).to.be('bar');
-            expect(err.bar).to.be('foo');
-        });
-
-        it('should create an error object without code but with properties', () => {
-            const myErr = new Error('my message');
-            const err = errcode(myErr, { foo: 'bar', bar: 'foo' });
-
-            expect(err).to.be.an(Error);
-            expect(err.code).to.be(undefined);
-            expect(err.foo).to.be('bar');
-            expect(err.bar).to.be('foo');
-        });
-
-        it('should set a non-writable field', () => {
-            const myErr = new Error('my message');
-
-            Object.defineProperty(myErr, 'code', {
-                value: 'derp',
-                writable: false,
-            });
-            const err = errcode(myErr, 'ERR_WAT');
-
-            expect(err).to.be.an(Error);
-            expect(err.stack).to.equal(myErr.stack);
-            expect(err.code).to.be('ERR_WAT');
-        });
-
-        it('should add a code to frozen object', () => {
-            const myErr = new Error('my message');
-            const err = errcode(Object.freeze(myErr), 'ERR_WAT');
-
-            expect(err).to.be.an(Error);
-            expect(err.stack).to.equal(myErr.stack);
-            expect(err.code).to.be('ERR_WAT');
-        });
-
-        it('should to set a field that throws at assignment time', () => {
-            const myErr = new Error('my message');
-
-            Object.defineProperty(myErr, 'code', {
-                enumerable: true,
-                set() {
-                    throw new Error('Nope!');
-                },
-                get() {
-                    return 'derp';
-                },
-            });
-            const err = errcode(myErr, 'ERR_WAT');
-
-            expect(err).to.be.an(Error);
-            expect(err.stack).to.equal(myErr.stack);
-            expect(err.code).to.be('ERR_WAT');
-        });
-
-        it('should retain error type', () => {
-            const myErr = new TypeError('my message');
-
-            Object.defineProperty(myErr, 'code', {
-                value: 'derp',
-                writable: false,
-            });
-            const err = errcode(myErr, 'ERR_WAT');
-
-            expect(err).to.be.a(TypeError);
-            expect(err.stack).to.equal(myErr.stack);
-            expect(err.code).to.be('ERR_WAT');
-        });
-
-        it('should add a code to a class that extends Error', () => {
-            class CustomError extends Error {
-                set code(val) {
-                    throw new Error('Nope!');
-                }
-            }
-
-            const myErr = new CustomError('my message');
-
-            Object.defineProperty(myErr, 'code', {
-                value: 'derp',
-                writable: false,
-                configurable: false,
-            });
-            const err = errcode(myErr, 'ERR_WAT');
-
-            expect(err).to.be.a(CustomError);
-            expect(err.stack).to.equal(myErr.stack);
-            expect(err.code).to.be('ERR_WAT');
-
-            // original prototype chain should be intact
-            expect(() => {
-                const otherErr = new CustomError('my message');
-
-                otherErr.code = 'derp';
-            }).to.throwError();
-        });
-
-        it('should support errors that are not Errors', () => {
-            const err = errcode({
-                message: 'Oh noes!',
-            }, 'ERR_WAT');
-
-            expect(err.message).to.be('Oh noes!');
-            expect(err.code).to.be('ERR_WAT');
-        });
-    });
-
-    describe('falsy first arguments', () => {
-        it('should not allow passing null as the first argument', () => {
-            expect(() => { errcode(null); }).to.throwError((err) => {
-                expect(err).to.be.a(TypeError);
-            });
-        });
-
-        it('should not allow passing undefined as the first argument', () => {
-            expect(() => { errcode(undefined); }).to.throwError((err) => {
-                expect(err).to.be.a(TypeError);
-            });
-        });
-    });
-});
diff --git a/deps/npm/node_modules/imurmurhash/imurmurhash.js b/deps/npm/node_modules/imurmurhash/imurmurhash.js
deleted file mode 100644
index e63146a2b7e70b..00000000000000
--- a/deps/npm/node_modules/imurmurhash/imurmurhash.js
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * @preserve
- * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013)
- *
- * @author <a href="mailto:jensyt@gmail.com">Jens Taylor</a>
- * @see http://github.com/homebrewing/brauhaus-diff
- * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
- * @see http://github.com/garycourt/murmurhash-js
- * @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a>
- * @see http://sites.google.com/site/murmurhash/
- */
-(function(){
-    var cache;
-
-    // Call this function without `new` to use the cached object (good for
-    // single-threaded environments), or with `new` to create a new object.
-    //
-    // @param {string} key A UTF-16 or ASCII string
-    // @param {number} seed An optional positive integer
-    // @return {object} A MurmurHash3 object for incremental hashing
-    function MurmurHash3(key, seed) {
-        var m = this instanceof MurmurHash3 ? this : cache;
-        m.reset(seed)
-        if (typeof key === 'string' && key.length > 0) {
-            m.hash(key);
-        }
-
-        if (m !== this) {
-            return m;
-        }
-    };
-
-    // Incrementally add a string to this hash
-    //
-    // @param {string} key A UTF-16 or ASCII string
-    // @return {object} this
-    MurmurHash3.prototype.hash = function(key) {
-        var h1, k1, i, top, len;
-
-        len = key.length;
-        this.len += len;
-
-        k1 = this.k1;
-        i = 0;
-        switch (this.rem) {
-            case 0: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) : 0;
-            case 1: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 8 : 0;
-            case 2: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 16 : 0;
-            case 3:
-                k1 ^= len > i ? (key.charCodeAt(i) & 0xff) << 24 : 0;
-                k1 ^= len > i ? (key.charCodeAt(i++) & 0xff00) >> 8 : 0;
-        }
-
-        this.rem = (len + this.rem) & 3; // & 3 is same as % 4
-        len -= this.rem;
-        if (len > 0) {
-            h1 = this.h1;
-            while (1) {
-                k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;
-                k1 = (k1 << 15) | (k1 >>> 17);
-                k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;
-
-                h1 ^= k1;
-                h1 = (h1 << 13) | (h1 >>> 19);
-                h1 = (h1 * 5 + 0xe6546b64) & 0xffffffff;
-
-                if (i >= len) {
-                    break;
-                }
-
-                k1 = ((key.charCodeAt(i++) & 0xffff)) ^
-                     ((key.charCodeAt(i++) & 0xffff) << 8) ^
-                     ((key.charCodeAt(i++) & 0xffff) << 16);
-                top = key.charCodeAt(i++);
-                k1 ^= ((top & 0xff) << 24) ^
-                      ((top & 0xff00) >> 8);
-            }
-
-            k1 = 0;
-            switch (this.rem) {
-                case 3: k1 ^= (key.charCodeAt(i + 2) & 0xffff) << 16;
-                case 2: k1 ^= (key.charCodeAt(i + 1) & 0xffff) << 8;
-                case 1: k1 ^= (key.charCodeAt(i) & 0xffff);
-            }
-
-            this.h1 = h1;
-        }
-
-        this.k1 = k1;
-        return this;
-    };
-
-    // Get the result of this hash
-    //
-    // @return {number} The 32-bit hash
-    MurmurHash3.prototype.result = function() {
-        var k1, h1;
-        
-        k1 = this.k1;
-        h1 = this.h1;
-
-        if (k1 > 0) {
-            k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;
-            k1 = (k1 << 15) | (k1 >>> 17);
-            k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;
-            h1 ^= k1;
-        }
-
-        h1 ^= this.len;
-
-        h1 ^= h1 >>> 16;
-        h1 = (h1 * 0xca6b + (h1 & 0xffff) * 0x85eb0000) & 0xffffffff;
-        h1 ^= h1 >>> 13;
-        h1 = (h1 * 0xae35 + (h1 & 0xffff) * 0xc2b20000) & 0xffffffff;
-        h1 ^= h1 >>> 16;
-
-        return h1 >>> 0;
-    };
-
-    // Reset the hash object for reuse
-    //
-    // @param {number} seed An optional positive integer
-    MurmurHash3.prototype.reset = function(seed) {
-        this.h1 = typeof seed === 'number' ? seed : 0;
-        this.rem = this.k1 = this.len = 0;
-        return this;
-    };
-
-    // A cached object to use. This can be safely used if you're in a single-
-    // threaded environment, otherwise you need to create new hashes to use.
-    cache = new MurmurHash3();
-
-    if (typeof(module) != 'undefined') {
-        module.exports = MurmurHash3;
-    } else {
-        this.MurmurHash3 = MurmurHash3;
-    }
-}());
diff --git a/deps/npm/node_modules/imurmurhash/imurmurhash.min.js b/deps/npm/node_modules/imurmurhash/imurmurhash.min.js
deleted file mode 100644
index dc0ee88d6b69c9..00000000000000
--- a/deps/npm/node_modules/imurmurhash/imurmurhash.min.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * @preserve
- * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013)
- *
- * @author <a href="mailto:jensyt@gmail.com">Jens Taylor</a>
- * @see http://github.com/homebrewing/brauhaus-diff
- * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
- * @see http://github.com/garycourt/murmurhash-js
- * @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a>
- * @see http://sites.google.com/site/murmurhash/
- */
-!function(){function t(h,r){var s=this instanceof t?this:e;return s.reset(r),"string"==typeof h&&h.length>0&&s.hash(h),s!==this?s:void 0}var e;t.prototype.hash=function(t){var e,h,r,s,i;switch(i=t.length,this.len+=i,h=this.k1,r=0,this.rem){case 0:h^=i>r?65535&t.charCodeAt(r++):0;case 1:h^=i>r?(65535&t.charCodeAt(r++))<<8:0;case 2:h^=i>r?(65535&t.charCodeAt(r++))<<16:0;case 3:h^=i>r?(255&t.charCodeAt(r))<<24:0,h^=i>r?(65280&t.charCodeAt(r++))>>8:0}if(this.rem=3&i+this.rem,i-=this.rem,i>0){for(e=this.h1;;){if(h=4294967295&11601*h+3432906752*(65535&h),h=h<<15|h>>>17,h=4294967295&13715*h+461832192*(65535&h),e^=h,e=e<<13|e>>>19,e=4294967295&5*e+3864292196,r>=i)break;h=65535&t.charCodeAt(r++)^(65535&t.charCodeAt(r++))<<8^(65535&t.charCodeAt(r++))<<16,s=t.charCodeAt(r++),h^=(255&s)<<24^(65280&s)>>8}switch(h=0,this.rem){case 3:h^=(65535&t.charCodeAt(r+2))<<16;case 2:h^=(65535&t.charCodeAt(r+1))<<8;case 1:h^=65535&t.charCodeAt(r)}this.h1=e}return this.k1=h,this},t.prototype.result=function(){var t,e;return t=this.k1,e=this.h1,t>0&&(t=4294967295&11601*t+3432906752*(65535&t),t=t<<15|t>>>17,t=4294967295&13715*t+461832192*(65535&t),e^=t),e^=this.len,e^=e>>>16,e=4294967295&51819*e+2246770688*(65535&e),e^=e>>>13,e=4294967295&44597*e+3266445312*(65535&e),e^=e>>>16,e>>>0},t.prototype.reset=function(t){return this.h1="number"==typeof t?t:0,this.rem=this.k1=this.len=0,this},e=new t,"undefined"!=typeof module?module.exports=t:this.MurmurHash3=t}();
\ No newline at end of file
diff --git a/deps/npm/node_modules/imurmurhash/package.json b/deps/npm/node_modules/imurmurhash/package.json
deleted file mode 100644
index 8a93edb55a2245..00000000000000
--- a/deps/npm/node_modules/imurmurhash/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "name": "imurmurhash",
-  "version": "0.1.4",
-  "description": "An incremental implementation of MurmurHash3",
-  "homepage": "https://github.com/jensyt/imurmurhash-js",
-  "main": "imurmurhash.js",
-  "files": [
-    "imurmurhash.js",
-    "imurmurhash.min.js",
-    "package.json",
-    "README.md"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/jensyt/imurmurhash-js"
-  },
-  "bugs": {
-    "url": "https://github.com/jensyt/imurmurhash-js/issues"
-  },
-  "keywords": [
-    "murmur",
-    "murmurhash",
-    "murmurhash3",
-    "hash",
-    "incremental"
-  ],
-  "author": {
-    "name": "Jens Taylor",
-    "email": "jensyt@gmail.com",
-    "url": "https://github.com/homebrewing"
-  },
-  "license": "MIT",
-  "dependencies": {
-  },
-  "devDependencies": {
-  },
-  "engines": {
-    "node": ">=0.8.19"
-  }
-}
diff --git a/deps/npm/node_modules/libnpmdiff/package.json b/deps/npm/node_modules/libnpmdiff/package.json
index dd268cd3b7b0f7..943fa219aeff65 100644
--- a/deps/npm/node_modules/libnpmdiff/package.json
+++ b/deps/npm/node_modules/libnpmdiff/package.json
@@ -1,6 +1,6 @@
 {
   "name": "libnpmdiff",
-  "version": "8.1.4",
+  "version": "8.1.5",
   "description": "The registry diff",
   "repository": {
     "type": "git",
@@ -47,7 +47,7 @@
     "tap": "^16.3.8"
   },
   "dependencies": {
-    "@npmcli/arborist": "^9.4.1",
+    "@npmcli/arborist": "^9.4.2",
     "@npmcli/installed-package-contents": "^4.0.0",
     "binary-extensions": "^3.0.0",
     "diff": "^8.0.2",
diff --git a/deps/npm/node_modules/libnpmexec/package.json b/deps/npm/node_modules/libnpmexec/package.json
index d6654212a4f063..1338bc4073236d 100644
--- a/deps/npm/node_modules/libnpmexec/package.json
+++ b/deps/npm/node_modules/libnpmexec/package.json
@@ -1,6 +1,6 @@
 {
   "name": "libnpmexec",
-  "version": "10.2.4",
+  "version": "10.2.5",
   "files": [
     "bin/",
     "lib/"
@@ -61,7 +61,7 @@
   },
   "dependencies": {
     "@gar/promise-retry": "^1.0.0",
-    "@npmcli/arborist": "^9.4.1",
+    "@npmcli/arborist": "^9.4.2",
     "@npmcli/package-json": "^7.0.0",
     "@npmcli/run-script": "^10.0.0",
     "ci-info": "^4.0.0",
diff --git a/deps/npm/node_modules/libnpmfund/package.json b/deps/npm/node_modules/libnpmfund/package.json
index b59fb249ad8015..3ab87f9c7a394d 100644
--- a/deps/npm/node_modules/libnpmfund/package.json
+++ b/deps/npm/node_modules/libnpmfund/package.json
@@ -1,6 +1,6 @@
 {
   "name": "libnpmfund",
-  "version": "7.0.18",
+  "version": "7.0.19",
   "main": "lib/index.js",
   "files": [
     "bin/",
@@ -46,7 +46,7 @@
     "tap": "^16.3.8"
   },
   "dependencies": {
-    "@npmcli/arborist": "^9.4.1"
+    "@npmcli/arborist": "^9.4.2"
   },
   "engines": {
     "node": "^20.17.0 || >=22.9.0"
diff --git a/deps/npm/node_modules/libnpmpack/package.json b/deps/npm/node_modules/libnpmpack/package.json
index ffd3bfd612a640..ad76fc3b746010 100644
--- a/deps/npm/node_modules/libnpmpack/package.json
+++ b/deps/npm/node_modules/libnpmpack/package.json
@@ -1,6 +1,6 @@
 {
   "name": "libnpmpack",
-  "version": "9.1.4",
+  "version": "9.1.5",
   "description": "Programmatic API for the bits behind npm pack",
   "author": "GitHub Inc.",
   "main": "lib/index.js",
@@ -37,7 +37,7 @@
   "bugs": "https://github.com/npm/libnpmpack/issues",
   "homepage": "https://npmjs.com/package/libnpmpack",
   "dependencies": {
-    "@npmcli/arborist": "^9.4.1",
+    "@npmcli/arborist": "^9.4.2",
     "@npmcli/run-script": "^10.0.0",
     "npm-package-arg": "^13.0.0",
     "pacote": "^21.0.2"
diff --git a/deps/npm/node_modules/lru-cache/dist/commonjs/index.js b/deps/npm/node_modules/lru-cache/dist/commonjs/index.js
index 03473f2cc06ac3..a97b9f7ecc5301 100644
--- a/deps/npm/node_modules/lru-cache/dist/commonjs/index.js
+++ b/deps/npm/node_modules/lru-cache/dist/commonjs/index.js
@@ -452,31 +452,38 @@ class LRUCache {
         this.#setItemTTL = (index, ttl, start = this.#perf.now()) => {
             starts[index] = ttl !== 0 ? start : 0;
             ttls[index] = ttl;
-            // clear out the purge timer if we're setting TTL to 0, and
-            // previously had a ttl purge timer running, so it doesn't
-            // fire unnecessarily.
-            if (purgeTimers?.[index]) {
-                clearTimeout(purgeTimers[index]);
-                purgeTimers[index] = undefined;
-            }
-            if (ttl !== 0 && purgeTimers) {
-                const t = setTimeout(() => {
-                    if (this.#isStale(index)) {
-                        this.#delete(this.#keyList[index], 'expire');
-                    }
-                }, ttl + 1);
-                // unref() not supported on all platforms
-                /* c8 ignore start */
-                if (t.unref) {
-                    t.unref();
-                }
-                /* c8 ignore stop */
-                purgeTimers[index] = t;
-            }
+            setPurgetTimer(index, ttl);
         };
         this.#updateItemAge = index => {
             starts[index] = ttls[index] !== 0 ? this.#perf.now() : 0;
+            setPurgetTimer(index, ttls[index]);
         };
+        // clear out the purge timer if we're setting TTL to 0, and
+        // previously had a ttl purge timer running, so it doesn't
+        // fire unnecessarily. Don't need to do this if we're not doing
+        // autopurge.
+        const setPurgetTimer = !this.ttlAutopurge ?
+            () => { }
+            : (index, ttl) => {
+                if (purgeTimers?.[index]) {
+                    clearTimeout(purgeTimers[index]);
+                    purgeTimers[index] = undefined;
+                }
+                if (ttl && ttl !== 0 && purgeTimers) {
+                    const t = setTimeout(() => {
+                        if (this.#isStale(index)) {
+                            this.#delete(this.#keyList[index], 'expire');
+                        }
+                    }, ttl + 1);
+                    // unref() not supported on all platforms
+                    /* c8 ignore start */
+                    if (t.unref) {
+                        t.unref();
+                    }
+                    /* c8 ignore stop */
+                    purgeTimers[index] = t;
+                }
+            };
         this.#statusTTL = (status, index) => {
             if (ttls[index]) {
                 const ttl = ttls[index];
@@ -1219,8 +1226,7 @@ class LRUCache {
             if (this.#valList[index] === p) {
                 // if we allow stale on fetch rejections, then we need to ensure that
                 // the stale value is not removed from the cache when the fetch fails.
-                const del = !noDelete ||
-                    !proceed && bf.__staleWhileFetching === undefined;
+                const del = !noDelete || (!proceed && bf.__staleWhileFetching === undefined);
                 if (del) {
                     this.#delete(k, 'fetch');
                 }
diff --git a/deps/npm/node_modules/lru-cache/dist/commonjs/index.min.js b/deps/npm/node_modules/lru-cache/dist/commonjs/index.min.js
index 2be540a202670b..5a001c2d833615 100644
--- a/deps/npm/node_modules/lru-cache/dist/commonjs/index.min.js
+++ b/deps/npm/node_modules/lru-cache/dist/commonjs/index.min.js
@@ -1,2 +1,2 @@
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.LRUCache=void 0;var x=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,U=new Set,R=typeof process=="object"&&process?process:{},I=(a,t,e,i)=>{typeof R.emitWarning=="function"?R.emitWarning(a,t,e,i):console.error(`[${e}] ${t}: ${a}`)},C=globalThis.AbortController,L=globalThis.AbortSignal;if(typeof C>"u"){L=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},C=class{constructor(){t()}signal=new L;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let a=R.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{a&&(a=!1,I("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}var G=a=>!U.has(a),H=Symbol("type"),y=a=>a&&a===Math.floor(a)&&a>0&&isFinite(a),M=a=>y(a)?a<=Math.pow(2,8)?Uint8Array:a<=Math.pow(2,16)?Uint16Array:a<=Math.pow(2,32)?Uint32Array:a<=Number.MAX_SAFE_INTEGER?z:null:null,z=class extends Array{constructor(t){super(t),this.fill(0)}},W=class a{heap;length;static#o=!1;static create(t){let e=M(t);if(!e)return[];a.#o=!0;let i=new a(t,e);return a.#o=!1,i}constructor(t,e){if(!a.#o)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},D=class a{#o;#c;#w;#C;#S;#L;#U;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#_;#s;#i;#t;#a;#u;#l;#h;#b;#r;#y;#A;#d;#g;#T;#v;#f;#I;static unsafeExposeInternals(t){return{starts:t.#A,ttls:t.#d,autopurgeTimers:t.#g,sizes:t.#y,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#a,prev:t.#u,get head(){return t.#l},get tail(){return t.#h},free:t.#b,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,h)=>t.#G(e,i,s,h),moveToTail:e=>t.#D(e),indexes:e=>t.#F(e),rindexes:e=>t.#O(e),isStale:e=>t.#p(e)}}get max(){return this.#o}get maxSize(){return this.#c}get calculatedSize(){return this.#_}get size(){return this.#n}get fetchMethod(){return this.#L}get memoMethod(){return this.#U}get dispose(){return this.#w}get onInsert(){return this.#C}get disposeAfter(){return this.#S}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:h,updateAgeOnGet:n,updateAgeOnHas:o,allowStale:r,dispose:f,onInsert:m,disposeAfter:c,noDisposeOnSet:d,noUpdateTTL:g,maxSize:A=0,maxEntrySize:p=0,sizeCalculation:_,fetchMethod:l,memoMethod:w,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:T,ignoreFetchAbort:F,perf:v}=t;if(v!==void 0&&typeof v?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#m=v??x,e!==0&&!y(e))throw new TypeError("max option must be a nonnegative integer");let O=e?M(e):Array;if(!O)throw new Error("invalid max value: "+e);if(this.#o=e,this.#c=A,this.maxEntrySize=p||this.#c,this.sizeCalculation=_,this.sizeCalculation){if(!this.#c&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(w!==void 0&&typeof w!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#U=w,l!==void 0&&typeof l!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#L=l,this.#v=!!l,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#a=new O(e),this.#u=new O(e),this.#l=0,this.#h=0,this.#b=W.create(e),this.#n=0,this.#_=0,typeof f=="function"&&(this.#w=f),typeof m=="function"&&(this.#C=m),typeof c=="function"?(this.#S=c,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#I=!!this.#C,this.#f=!!this.#S,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!g,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!u,this.allowStaleOnFetchAbort=!!T,this.ignoreFetchAbort=!!F,this.maxEntrySize!==0){if(this.#c!==0&&!y(this.#c))throw new TypeError("maxSize must be a positive integer if specified");if(!y(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#B()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!S,this.updateAgeOnGet=!!n,this.updateAgeOnHas=!!o,this.ttlResolution=y(s)||s===0?s:1,this.ttlAutopurge=!!h,this.ttl=i||0,this.ttl){if(!y(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#j()}if(this.#o===0&&this.ttl===0&&this.#c===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#o&&!this.#c){let E="LRU_CACHE_UNBOUNDED";G(E)&&(U.add(E),I("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",E,a))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#j(){let t=new z(this.#o),e=new z(this.#o);this.#d=t,this.#A=e;let i=this.ttlAutopurge?new Array(this.#o):void 0;this.#g=i,this.#N=(n,o,r=this.#m.now())=>{if(e[n]=o!==0?r:0,t[n]=o,i?.[n]&&(clearTimeout(i[n]),i[n]=void 0),o!==0&&i){let f=setTimeout(()=>{this.#p(n)&&this.#E(this.#i[n],"expire")},o+1);f.unref&&f.unref(),i[n]=f}},this.#R=n=>{e[n]=t[n]!==0?this.#m.now():0},this.#z=(n,o)=>{if(t[o]){let r=t[o],f=e[o];if(!r||!f)return;n.ttl=r,n.start=f,n.now=s||h();let m=n.now-f;n.remainingTTL=r-m}};let s=0,h=()=>{let n=this.#m.now();if(this.ttlResolution>0){s=n;let o=setTimeout(()=>s=0,this.ttlResolution);o.unref&&o.unref()}return n};this.getRemainingTTL=n=>{let o=this.#s.get(n);if(o===void 0)return 0;let r=t[o],f=e[o];if(!r||!f)return 1/0;let m=(s||h())-f;return r-m},this.#p=n=>{let o=e[n],r=t[n];return!!r&&!!o&&(s||h())-o>r}}#R=()=>{};#z=()=>{};#N=()=>{};#p=()=>!1;#B(){let t=new z(this.#o);this.#_=0,this.#y=t,this.#W=e=>{this.#_-=t[e],t[e]=0},this.#P=(e,i,s,h)=>{if(this.#e(i))return 0;if(!y(s))if(h){if(typeof h!="function")throw new TypeError("sizeCalculation must be a function");if(s=h(i,e),!y(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#M=(e,i,s)=>{if(t[e]=i,this.#c){let h=this.#c-t[e];for(;this.#_>h;)this.#x(!0)}this.#_+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#_)}}#W=t=>{};#M=(t,e,i)=>{};#P=(t,e,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#l));)e=this.#u[e]}*#O({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#l;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#h));)e=this.#a[e]}#H(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#O())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#O()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#O())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,e={}){for(let i of this.#F()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;if(h!==void 0&&t(h,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;h!==void 0&&t.call(e,h,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#O()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;h!==void 0&&t.call(e,h,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#O({allowStale:!0}))this.#p(e)&&(this.#E(this.#i[e],"expire"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let h={value:s};if(this.#d&&this.#A){let n=this.#d[e],o=this.#A[e];if(n&&o){let r=n-(this.#m.now()-o);h.ttl=r,h.start=Date.now()}}return this.#y&&(h.size=this.#y[e]),h}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let i=this.#i[e],s=this.#t[e],h=this.#e(s)?s.__staleWhileFetching:s;if(h===void 0||i===void 0)continue;let n={value:h};if(this.#d&&this.#A){n.ttl=this.#d[e];let o=this.#m.now()-this.#A[e];n.start=Math.floor(Date.now()-o)}this.#y&&(n.size=this.#y[e]),t.unshift([i,n])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:h,noDisposeOnSet:n=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:r}=i,{noUpdateTTL:f=this.noUpdateTTL}=i,m=this.#P(t,e,i.size||0,o);if(this.maxEntrySize&&m>this.maxEntrySize)return r&&(r.set="miss",r.maxEntrySizeExceeded=!0),this.#E(t,"set"),this;let c=this.#n===0?void 0:this.#s.get(t);if(c===void 0)c=this.#n===0?this.#h:this.#b.length!==0?this.#b.pop():this.#n===this.#o?this.#x(!1):this.#n,this.#i[c]=t,this.#t[c]=e,this.#s.set(t,c),this.#a[this.#h]=c,this.#u[c]=this.#h,this.#h=c,this.#n++,this.#M(c,m,r),r&&(r.set="add"),f=!1,this.#I&&this.#C?.(e,t,"add");else{this.#D(c);let d=this.#t[c];if(e!==d){if(this.#v&&this.#e(d)){d.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:g}=d;g!==void 0&&!n&&(this.#T&&this.#w?.(g,t,"set"),this.#f&&this.#r?.push([g,t,"set"]))}else n||(this.#T&&this.#w?.(d,t,"set"),this.#f&&this.#r?.push([d,t,"set"]));if(this.#W(c),this.#M(c,m,r),this.#t[c]=e,r){r.set="replace";let g=d&&this.#e(d)?d.__staleWhileFetching:d;g!==void 0&&(r.oldValue=g)}}else r&&(r.set="update");this.#I&&this.onInsert?.(e,t,e===d?"update":"replace")}if(s!==0&&!this.#d&&this.#j(),this.#d&&(f||this.#N(c,s,h),r&&this.#z(r,c)),!n&&this.#f&&this.#r){let d=this.#r,g;for(;g=d?.shift();)this.#S?.(...g)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#l];if(this.#x(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#f&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#S?.(...e)}}}#x(t){let e=this.#l,i=this.#i[e],s=this.#t[e];return this.#v&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,"evict"),this.#f&&this.#r?.push([s,i,"evict"])),this.#W(e),this.#g?.[e]&&(clearTimeout(this.#g[e]),this.#g[e]=void 0),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#b.push(e)),this.#n===1?(this.#l=this.#h=0,this.#b.length=0):this.#l=this.#a[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,h=this.#s.get(t);if(h!==void 0){let n=this.#t[h];if(this.#e(n)&&n.__staleWhileFetching===void 0)return!1;if(this.#p(h))s&&(s.has="stale",this.#z(s,h));else return i&&this.#R(h),s&&(s.has="hit",this.#z(s,h)),!0}else s&&(s.has="miss");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#p(s))return;let h=this.#t[s];return this.#e(h)?h.__staleWhileFetching:h}#G(t,e,i,s){let h=e===void 0?void 0:this.#t[e];if(this.#e(h))return h;let n=new C,{signal:o}=i;o?.addEventListener("abort",()=>n.abort(o.reason),{signal:n.signal});let r={signal:n.signal,options:i,context:s},f=(p,_=!1)=>{let{aborted:l}=n.signal,w=i.ignoreFetchAbort&&p!==void 0,b=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&p!==void 0);if(i.status&&(l&&!_?(i.status.fetchAborted=!0,i.status.fetchError=n.signal.reason,w&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!w&&!_)return c(n.signal.reason,b);let S=g,u=this.#t[e];return(u===g||w&&_&&u===void 0)&&(p===void 0?S.__staleWhileFetching!==void 0?this.#t[e]=S.__staleWhileFetching:this.#E(t,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,p,r.options))),p},m=p=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=p),c(p,!1)),c=(p,_)=>{let{aborted:l}=n.signal,w=l&&i.allowStaleOnFetchAbort,b=w||i.allowStaleOnFetchRejection,S=b||i.noDeleteOnFetchRejection,u=g;if(this.#t[e]===g&&(!S||!_&&u.__staleWhileFetching===void 0?this.#E(t,"fetch"):w||(this.#t[e]=u.__staleWhileFetching)),b)return i.status&&u.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw p},d=(p,_)=>{let l=this.#L?.(t,h,r);l&&l instanceof Promise&&l.then(w=>p(w===void 0?void 0:w),_),n.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(p(void 0),i.allowStaleOnFetchAbort&&(p=w=>f(w,!0)))})};i.status&&(i.status.fetchDispatched=!0);let g=new Promise(d).then(f,m),A=Object.assign(g,{__abortController:n,__staleWhileFetching:h,__returned:void 0});return e===void 0?(this.set(t,A,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=A,A}#e(t){if(!this.#v)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof C}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:h=this.noDeleteOnStaleGet,ttl:n=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:r=0,sizeCalculation:f=this.sizeCalculation,noUpdateTTL:m=this.noUpdateTTL,noDeleteOnFetchRejection:c=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:p,forceRefresh:_=!1,status:l,signal:w}=e;if(!this.#v)return l&&(l.fetch="get"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:h,status:l});let b={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:h,ttl:n,noDisposeOnSet:o,size:r,sizeCalculation:f,noUpdateTTL:m,noDeleteOnFetchRejection:c,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:g,status:l,signal:w},S=this.#s.get(t);if(S===void 0){l&&(l.fetch="miss");let u=this.#G(t,S,b,p);return u.__returned=u}else{let u=this.#t[S];if(this.#e(u)){let E=i&&u.__staleWhileFetching!==void 0;return l&&(l.fetch="inflight",E&&(l.returnedStale=!0)),E?u.__staleWhileFetching:u.__returned=u}let T=this.#p(S);if(!_&&!T)return l&&(l.fetch="hit"),this.#D(S),s&&this.#R(S),l&&this.#z(l,S),u;let F=this.#G(t,S,b,p),O=F.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=T?"stale":"refresh",O&&T&&(l.returnedStale=!0)),O?F.__staleWhileFetching:F.__returned=F}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(t,e={}){let i=this.#U;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,forceRefresh:h,...n}=e,o=this.get(t,n);if(!h&&o!==void 0)return o;let r=i(t,o,{options:n,context:s});return this.set(t,r,n),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:h=this.noDeleteOnStaleGet,status:n}=e,o=this.#s.get(t);if(o!==void 0){let r=this.#t[o],f=this.#e(r);return n&&this.#z(n,o),this.#p(o)?(n&&(n.get="stale"),f?(n&&i&&r.__staleWhileFetching!==void 0&&(n.returnedStale=!0),i?r.__staleWhileFetching:void 0):(h||this.#E(t,"expire"),n&&i&&(n.returnedStale=!0),i?r:void 0)):(n&&(n.get="hit"),f?r.__staleWhileFetching:(this.#D(o),s&&this.#R(o),r))}else n&&(n.get="miss")}#k(t,e){this.#u[e]=t,this.#a[t]=e}#D(t){t!==this.#h&&(t===this.#l?this.#l=this.#a[t]:this.#k(this.#u[t],this.#a[t]),this.#k(this.#h,t),this.#h=t)}delete(t){return this.#E(t,"delete")}#E(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#V(e);else{this.#W(s);let h=this.#t[s];if(this.#e(h)?h.__abortController.abort(new Error("deleted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(h,t,e),this.#f&&this.#r?.push([h,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#u[s];else if(s===this.#l)this.#l=this.#a[s];else{let n=this.#u[s];this.#a[n]=this.#a[s];let o=this.#a[s];this.#u[o]=this.#u[s]}this.#n--,this.#b.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,h;for(;h=s?.shift();)this.#S?.(...h)}return i}clear(){return this.#V("delete")}#V(t){for(let e of this.#O({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[e];this.#T&&this.#w?.(i,s,t),this.#f&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#A){this.#d.fill(0),this.#A.fill(0);for(let e of this.#g??[])e!==void 0&&clearTimeout(e);this.#g?.fill(void 0)}if(this.#y&&this.#y.fill(0),this.#l=0,this.#h=0,this.#b.length=0,this.#_=0,this.#n=0,this.#f&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#S?.(...i)}}};exports.LRUCache=D;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.LRUCache=void 0;var G=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,U=new Set,R=typeof process=="object"&&process?process:{},I=(c,t,e,i)=>{typeof R.emitWarning=="function"?R.emitWarning(c,t,e,i):console.error(`[${e}] ${t}: ${c}`)},C=globalThis.AbortController,L=globalThis.AbortSignal;if(typeof C>"u"){L=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},C=class{constructor(){t()}signal=new L;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let c=R.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{c&&(c=!1,I("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}var x=c=>!U.has(c),H=Symbol("type"),y=c=>c&&c===Math.floor(c)&&c>0&&isFinite(c),M=c=>y(c)?c<=Math.pow(2,8)?Uint8Array:c<=Math.pow(2,16)?Uint16Array:c<=Math.pow(2,32)?Uint32Array:c<=Number.MAX_SAFE_INTEGER?z:null:null,z=class extends Array{constructor(t){super(t),this.fill(0)}},W=class c{heap;length;static#o=!1;static create(t){let e=M(t);if(!e)return[];c.#o=!0;let i=new c(t,e);return c.#o=!1,i}constructor(t,e){if(!c.#o)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},D=class c{#o;#c;#w;#C;#S;#L;#U;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#_;#s;#i;#t;#a;#u;#l;#h;#b;#r;#y;#A;#d;#g;#T;#v;#f;#I;static unsafeExposeInternals(t){return{starts:t.#A,ttls:t.#d,autopurgeTimers:t.#g,sizes:t.#y,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#a,prev:t.#u,get head(){return t.#l},get tail(){return t.#h},free:t.#b,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,n)=>t.#x(e,i,s,n),moveToTail:e=>t.#D(e),indexes:e=>t.#F(e),rindexes:e=>t.#O(e),isStale:e=>t.#p(e)}}get max(){return this.#o}get maxSize(){return this.#c}get calculatedSize(){return this.#_}get size(){return this.#n}get fetchMethod(){return this.#L}get memoMethod(){return this.#U}get dispose(){return this.#w}get onInsert(){return this.#C}get disposeAfter(){return this.#S}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:h,allowStale:r,dispose:a,onInsert:w,disposeAfter:f,noDisposeOnSet:d,noUpdateTTL:g,maxSize:A=0,maxEntrySize:p=0,sizeCalculation:_,fetchMethod:l,memoMethod:S,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:m,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:T,ignoreFetchAbort:F,perf:v}=t;if(v!==void 0&&typeof v?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#m=v??G,e!==0&&!y(e))throw new TypeError("max option must be a nonnegative integer");let O=e?M(e):Array;if(!O)throw new Error("invalid max value: "+e);if(this.#o=e,this.#c=A,this.maxEntrySize=p||this.#c,this.sizeCalculation=_,this.sizeCalculation){if(!this.#c&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(S!==void 0&&typeof S!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#U=S,l!==void 0&&typeof l!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#L=l,this.#v=!!l,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#a=new O(e),this.#u=new O(e),this.#l=0,this.#h=0,this.#b=W.create(e),this.#n=0,this.#_=0,typeof a=="function"&&(this.#w=a),typeof w=="function"&&(this.#C=w),typeof f=="function"?(this.#S=f,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#I=!!this.#C,this.#f=!!this.#S,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!g,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!u,this.allowStaleOnFetchAbort=!!T,this.ignoreFetchAbort=!!F,this.maxEntrySize!==0){if(this.#c!==0&&!y(this.#c))throw new TypeError("maxSize must be a positive integer if specified");if(!y(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#B()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!m,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!h,this.ttlResolution=y(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!y(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#j()}if(this.#o===0&&this.ttl===0&&this.#c===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#o&&!this.#c){let E="LRU_CACHE_UNBOUNDED";x(E)&&(U.add(E),I("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",E,c))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#j(){let t=new z(this.#o),e=new z(this.#o);this.#d=t,this.#A=e;let i=this.ttlAutopurge?new Array(this.#o):void 0;this.#g=i,this.#N=(h,r,a=this.#m.now())=>{e[h]=r!==0?a:0,t[h]=r,s(h,r)},this.#R=h=>{e[h]=t[h]!==0?this.#m.now():0,s(h,t[h])};let s=this.ttlAutopurge?(h,r)=>{if(i?.[h]&&(clearTimeout(i[h]),i[h]=void 0),r&&r!==0&&i){let a=setTimeout(()=>{this.#p(h)&&this.#E(this.#i[h],"expire")},r+1);a.unref&&a.unref(),i[h]=a}}:()=>{};this.#z=(h,r)=>{if(t[r]){let a=t[r],w=e[r];if(!a||!w)return;h.ttl=a,h.start=w,h.now=n||o();let f=h.now-w;h.remainingTTL=a-f}};let n=0,o=()=>{let h=this.#m.now();if(this.ttlResolution>0){n=h;let r=setTimeout(()=>n=0,this.ttlResolution);r.unref&&r.unref()}return h};this.getRemainingTTL=h=>{let r=this.#s.get(h);if(r===void 0)return 0;let a=t[r],w=e[r];if(!a||!w)return 1/0;let f=(n||o())-w;return a-f},this.#p=h=>{let r=e[h],a=t[h];return!!a&&!!r&&(n||o())-r>a}}#R=()=>{};#z=()=>{};#N=()=>{};#p=()=>!1;#B(){let t=new z(this.#o);this.#_=0,this.#y=t,this.#W=e=>{this.#_-=t[e],t[e]=0},this.#P=(e,i,s,n)=>{if(this.#e(i))return 0;if(!y(s))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(s=n(i,e),!y(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#M=(e,i,s)=>{if(t[e]=i,this.#c){let n=this.#c-t[e];for(;this.#_>n;)this.#G(!0)}this.#_+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#_)}}#W=t=>{};#M=(t,e,i)=>{};#P=(t,e,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#l));)e=this.#u[e]}*#O({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#l;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#h));)e=this.#a[e]}#H(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#O())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#O()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#O())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,e={}){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&t(n,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#O()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#O({allowStale:!0}))this.#p(e)&&(this.#E(this.#i[e],"expire"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#d&&this.#A){let o=this.#d[e],h=this.#A[e];if(o&&h){let r=o-(this.#m.now()-h);n.ttl=r,n.start=Date.now()}}return this.#y&&(n.size=this.#y[e]),n}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let i=this.#i[e],s=this.#t[e],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#d&&this.#A){o.ttl=this.#d[e];let h=this.#m.now()-this.#A[e];o.start=Math.floor(Date.now()-h)}this.#y&&(o.size=this.#y[e]),t.unshift([i,o])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:r}=i,{noUpdateTTL:a=this.noUpdateTTL}=i,w=this.#P(t,e,i.size||0,h);if(this.maxEntrySize&&w>this.maxEntrySize)return r&&(r.set="miss",r.maxEntrySizeExceeded=!0),this.#E(t,"set"),this;let f=this.#n===0?void 0:this.#s.get(t);if(f===void 0)f=this.#n===0?this.#h:this.#b.length!==0?this.#b.pop():this.#n===this.#o?this.#G(!1):this.#n,this.#i[f]=t,this.#t[f]=e,this.#s.set(t,f),this.#a[this.#h]=f,this.#u[f]=this.#h,this.#h=f,this.#n++,this.#M(f,w,r),r&&(r.set="add"),a=!1,this.#I&&this.#C?.(e,t,"add");else{this.#D(f);let d=this.#t[f];if(e!==d){if(this.#v&&this.#e(d)){d.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:g}=d;g!==void 0&&!o&&(this.#T&&this.#w?.(g,t,"set"),this.#f&&this.#r?.push([g,t,"set"]))}else o||(this.#T&&this.#w?.(d,t,"set"),this.#f&&this.#r?.push([d,t,"set"]));if(this.#W(f),this.#M(f,w,r),this.#t[f]=e,r){r.set="replace";let g=d&&this.#e(d)?d.__staleWhileFetching:d;g!==void 0&&(r.oldValue=g)}}else r&&(r.set="update");this.#I&&this.onInsert?.(e,t,e===d?"update":"replace")}if(s!==0&&!this.#d&&this.#j(),this.#d&&(a||this.#N(f,s,n),r&&this.#z(r,f)),!o&&this.#f&&this.#r){let d=this.#r,g;for(;g=d?.shift();)this.#S?.(...g)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#l];if(this.#G(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#f&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#S?.(...e)}}}#G(t){let e=this.#l,i=this.#i[e],s=this.#t[e];return this.#v&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,"evict"),this.#f&&this.#r?.push([s,i,"evict"])),this.#W(e),this.#g?.[e]&&(clearTimeout(this.#g[e]),this.#g[e]=void 0),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#b.push(e)),this.#n===1?(this.#l=this.#h=0,this.#b.length=0):this.#l=this.#a[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,n=this.#s.get(t);if(n!==void 0){let o=this.#t[n];if(this.#e(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#p(n))s&&(s.has="stale",this.#z(s,n));else return i&&this.#R(n),s&&(s.has="hit",this.#z(s,n)),!0}else s&&(s.has="miss");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#p(s))return;let n=this.#t[s];return this.#e(n)?n.__staleWhileFetching:n}#x(t,e,i,s){let n=e===void 0?void 0:this.#t[e];if(this.#e(n))return n;let o=new C,{signal:h}=i;h?.addEventListener("abort",()=>o.abort(h.reason),{signal:o.signal});let r={signal:o.signal,options:i,context:s},a=(p,_=!1)=>{let{aborted:l}=o.signal,S=i.ignoreFetchAbort&&p!==void 0,b=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&p!==void 0);if(i.status&&(l&&!_?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,S&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!S&&!_)return f(o.signal.reason,b);let m=g,u=this.#t[e];return(u===g||S&&_&&u===void 0)&&(p===void 0?m.__staleWhileFetching!==void 0?this.#t[e]=m.__staleWhileFetching:this.#E(t,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,p,r.options))),p},w=p=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=p),f(p,!1)),f=(p,_)=>{let{aborted:l}=o.signal,S=l&&i.allowStaleOnFetchAbort,b=S||i.allowStaleOnFetchRejection,m=b||i.noDeleteOnFetchRejection,u=g;if(this.#t[e]===g&&(!m||!_&&u.__staleWhileFetching===void 0?this.#E(t,"fetch"):S||(this.#t[e]=u.__staleWhileFetching)),b)return i.status&&u.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw p},d=(p,_)=>{let l=this.#L?.(t,n,r);l&&l instanceof Promise&&l.then(S=>p(S===void 0?void 0:S),_),o.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(p(void 0),i.allowStaleOnFetchAbort&&(p=S=>a(S,!0)))})};i.status&&(i.status.fetchDispatched=!0);let g=new Promise(d).then(a,w),A=Object.assign(g,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return e===void 0?(this.set(t,A,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=A,A}#e(t){if(!this.#v)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof C}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:r=0,sizeCalculation:a=this.sizeCalculation,noUpdateTTL:w=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:p,forceRefresh:_=!1,status:l,signal:S}=e;if(!this.#v)return l&&(l.fetch="get"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:l});let b={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:h,size:r,sizeCalculation:a,noUpdateTTL:w,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:g,status:l,signal:S},m=this.#s.get(t);if(m===void 0){l&&(l.fetch="miss");let u=this.#x(t,m,b,p);return u.__returned=u}else{let u=this.#t[m];if(this.#e(u)){let E=i&&u.__staleWhileFetching!==void 0;return l&&(l.fetch="inflight",E&&(l.returnedStale=!0)),E?u.__staleWhileFetching:u.__returned=u}let T=this.#p(m);if(!_&&!T)return l&&(l.fetch="hit"),this.#D(m),s&&this.#R(m),l&&this.#z(l,m),u;let F=this.#x(t,m,b,p),O=F.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=T?"stale":"refresh",O&&T&&(l.returnedStale=!0)),O?F.__staleWhileFetching:F.__returned=F}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(t,e={}){let i=this.#U;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,forceRefresh:n,...o}=e,h=this.get(t,o);if(!n&&h!==void 0)return h;let r=i(t,h,{options:o,context:s});return this.set(t,r,o),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=e,h=this.#s.get(t);if(h!==void 0){let r=this.#t[h],a=this.#e(r);return o&&this.#z(o,h),this.#p(h)?(o&&(o.get="stale"),a?(o&&i&&r.__staleWhileFetching!==void 0&&(o.returnedStale=!0),i?r.__staleWhileFetching:void 0):(n||this.#E(t,"expire"),o&&i&&(o.returnedStale=!0),i?r:void 0)):(o&&(o.get="hit"),a?r.__staleWhileFetching:(this.#D(h),s&&this.#R(h),r))}else o&&(o.get="miss")}#k(t,e){this.#u[e]=t,this.#a[t]=e}#D(t){t!==this.#h&&(t===this.#l?this.#l=this.#a[t]:this.#k(this.#u[t],this.#a[t]),this.#k(this.#h,t),this.#h=t)}delete(t){return this.#E(t,"delete")}#E(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#V(e);else{this.#W(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error("deleted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(n,t,e),this.#f&&this.#r?.push([n,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#u[s];else if(s===this.#l)this.#l=this.#a[s];else{let o=this.#u[s];this.#a[o]=this.#a[s];let h=this.#a[s];this.#u[h]=this.#u[s]}this.#n--,this.#b.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#S?.(...n)}return i}clear(){return this.#V("delete")}#V(t){for(let e of this.#O({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[e];this.#T&&this.#w?.(i,s,t),this.#f&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#A){this.#d.fill(0),this.#A.fill(0);for(let e of this.#g??[])e!==void 0&&clearTimeout(e);this.#g?.fill(void 0)}if(this.#y&&this.#y.fill(0),this.#l=0,this.#h=0,this.#b.length=0,this.#_=0,this.#n=0,this.#f&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#S?.(...i)}}};exports.LRUCache=D;
 //# sourceMappingURL=index.min.js.map
diff --git a/deps/npm/node_modules/lru-cache/dist/esm/index.js b/deps/npm/node_modules/lru-cache/dist/esm/index.js
index c66c4b9e31a3ad..882d85dd71e51f 100644
--- a/deps/npm/node_modules/lru-cache/dist/esm/index.js
+++ b/deps/npm/node_modules/lru-cache/dist/esm/index.js
@@ -449,31 +449,38 @@ export class LRUCache {
         this.#setItemTTL = (index, ttl, start = this.#perf.now()) => {
             starts[index] = ttl !== 0 ? start : 0;
             ttls[index] = ttl;
-            // clear out the purge timer if we're setting TTL to 0, and
-            // previously had a ttl purge timer running, so it doesn't
-            // fire unnecessarily.
-            if (purgeTimers?.[index]) {
-                clearTimeout(purgeTimers[index]);
-                purgeTimers[index] = undefined;
-            }
-            if (ttl !== 0 && purgeTimers) {
-                const t = setTimeout(() => {
-                    if (this.#isStale(index)) {
-                        this.#delete(this.#keyList[index], 'expire');
-                    }
-                }, ttl + 1);
-                // unref() not supported on all platforms
-                /* c8 ignore start */
-                if (t.unref) {
-                    t.unref();
-                }
-                /* c8 ignore stop */
-                purgeTimers[index] = t;
-            }
+            setPurgetTimer(index, ttl);
         };
         this.#updateItemAge = index => {
             starts[index] = ttls[index] !== 0 ? this.#perf.now() : 0;
+            setPurgetTimer(index, ttls[index]);
         };
+        // clear out the purge timer if we're setting TTL to 0, and
+        // previously had a ttl purge timer running, so it doesn't
+        // fire unnecessarily. Don't need to do this if we're not doing
+        // autopurge.
+        const setPurgetTimer = !this.ttlAutopurge ?
+            () => { }
+            : (index, ttl) => {
+                if (purgeTimers?.[index]) {
+                    clearTimeout(purgeTimers[index]);
+                    purgeTimers[index] = undefined;
+                }
+                if (ttl && ttl !== 0 && purgeTimers) {
+                    const t = setTimeout(() => {
+                        if (this.#isStale(index)) {
+                            this.#delete(this.#keyList[index], 'expire');
+                        }
+                    }, ttl + 1);
+                    // unref() not supported on all platforms
+                    /* c8 ignore start */
+                    if (t.unref) {
+                        t.unref();
+                    }
+                    /* c8 ignore stop */
+                    purgeTimers[index] = t;
+                }
+            };
         this.#statusTTL = (status, index) => {
             if (ttls[index]) {
                 const ttl = ttls[index];
@@ -1216,8 +1223,7 @@ export class LRUCache {
             if (this.#valList[index] === p) {
                 // if we allow stale on fetch rejections, then we need to ensure that
                 // the stale value is not removed from the cache when the fetch fails.
-                const del = !noDelete ||
-                    !proceed && bf.__staleWhileFetching === undefined;
+                const del = !noDelete || (!proceed && bf.__staleWhileFetching === undefined);
                 if (del) {
                     this.#delete(k, 'fetch');
                 }
diff --git a/deps/npm/node_modules/lru-cache/dist/esm/index.min.js b/deps/npm/node_modules/lru-cache/dist/esm/index.min.js
index 81f29da1dea9f1..bb72f37e7d0643 100644
--- a/deps/npm/node_modules/lru-cache/dist/esm/index.min.js
+++ b/deps/npm/node_modules/lru-cache/dist/esm/index.min.js
@@ -1,2 +1,2 @@
-var M=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,I=new Set,R=typeof process=="object"&&process?process:{},x=(a,t,e,i)=>{typeof R.emitWarning=="function"?R.emitWarning(a,t,e,i):console.error(`[${e}] ${t}: ${a}`)},C=globalThis.AbortController,D=globalThis.AbortSignal;if(typeof C>"u"){D=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},C=class{constructor(){t()}signal=new D;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let a=R.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{a&&(a=!1,x("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}var G=a=>!I.has(a),H=Symbol("type"),y=a=>a&&a===Math.floor(a)&&a>0&&isFinite(a),U=a=>y(a)?a<=Math.pow(2,8)?Uint8Array:a<=Math.pow(2,16)?Uint16Array:a<=Math.pow(2,32)?Uint32Array:a<=Number.MAX_SAFE_INTEGER?z:null:null,z=class extends Array{constructor(t){super(t),this.fill(0)}},W=class a{heap;length;static#o=!1;static create(t){let e=U(t);if(!e)return[];a.#o=!0;let i=new a(t,e);return a.#o=!1,i}constructor(t,e){if(!a.#o)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},L=class a{#o;#c;#w;#C;#S;#L;#I;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#_;#s;#i;#t;#a;#u;#l;#h;#b;#r;#y;#A;#d;#g;#T;#v;#f;#x;static unsafeExposeInternals(t){return{starts:t.#A,ttls:t.#d,autopurgeTimers:t.#g,sizes:t.#y,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#a,prev:t.#u,get head(){return t.#l},get tail(){return t.#h},free:t.#b,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,h)=>t.#G(e,i,s,h),moveToTail:e=>t.#D(e),indexes:e=>t.#F(e),rindexes:e=>t.#O(e),isStale:e=>t.#p(e)}}get max(){return this.#o}get maxSize(){return this.#c}get calculatedSize(){return this.#_}get size(){return this.#n}get fetchMethod(){return this.#L}get memoMethod(){return this.#I}get dispose(){return this.#w}get onInsert(){return this.#C}get disposeAfter(){return this.#S}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:h,updateAgeOnGet:n,updateAgeOnHas:o,allowStale:r,dispose:f,onInsert:m,disposeAfter:c,noDisposeOnSet:d,noUpdateTTL:g,maxSize:A=0,maxEntrySize:p=0,sizeCalculation:_,fetchMethod:l,memoMethod:w,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:T,ignoreFetchAbort:F,perf:v}=t;if(v!==void 0&&typeof v?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#m=v??M,e!==0&&!y(e))throw new TypeError("max option must be a nonnegative integer");let O=e?U(e):Array;if(!O)throw new Error("invalid max value: "+e);if(this.#o=e,this.#c=A,this.maxEntrySize=p||this.#c,this.sizeCalculation=_,this.sizeCalculation){if(!this.#c&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(w!==void 0&&typeof w!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#I=w,l!==void 0&&typeof l!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#L=l,this.#v=!!l,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#a=new O(e),this.#u=new O(e),this.#l=0,this.#h=0,this.#b=W.create(e),this.#n=0,this.#_=0,typeof f=="function"&&(this.#w=f),typeof m=="function"&&(this.#C=m),typeof c=="function"?(this.#S=c,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#x=!!this.#C,this.#f=!!this.#S,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!g,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!u,this.allowStaleOnFetchAbort=!!T,this.ignoreFetchAbort=!!F,this.maxEntrySize!==0){if(this.#c!==0&&!y(this.#c))throw new TypeError("maxSize must be a positive integer if specified");if(!y(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#B()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!S,this.updateAgeOnGet=!!n,this.updateAgeOnHas=!!o,this.ttlResolution=y(s)||s===0?s:1,this.ttlAutopurge=!!h,this.ttl=i||0,this.ttl){if(!y(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#j()}if(this.#o===0&&this.ttl===0&&this.#c===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#o&&!this.#c){let E="LRU_CACHE_UNBOUNDED";G(E)&&(I.add(E),x("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",E,a))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#j(){let t=new z(this.#o),e=new z(this.#o);this.#d=t,this.#A=e;let i=this.ttlAutopurge?new Array(this.#o):void 0;this.#g=i,this.#N=(n,o,r=this.#m.now())=>{if(e[n]=o!==0?r:0,t[n]=o,i?.[n]&&(clearTimeout(i[n]),i[n]=void 0),o!==0&&i){let f=setTimeout(()=>{this.#p(n)&&this.#E(this.#i[n],"expire")},o+1);f.unref&&f.unref(),i[n]=f}},this.#R=n=>{e[n]=t[n]!==0?this.#m.now():0},this.#z=(n,o)=>{if(t[o]){let r=t[o],f=e[o];if(!r||!f)return;n.ttl=r,n.start=f,n.now=s||h();let m=n.now-f;n.remainingTTL=r-m}};let s=0,h=()=>{let n=this.#m.now();if(this.ttlResolution>0){s=n;let o=setTimeout(()=>s=0,this.ttlResolution);o.unref&&o.unref()}return n};this.getRemainingTTL=n=>{let o=this.#s.get(n);if(o===void 0)return 0;let r=t[o],f=e[o];if(!r||!f)return 1/0;let m=(s||h())-f;return r-m},this.#p=n=>{let o=e[n],r=t[n];return!!r&&!!o&&(s||h())-o>r}}#R=()=>{};#z=()=>{};#N=()=>{};#p=()=>!1;#B(){let t=new z(this.#o);this.#_=0,this.#y=t,this.#W=e=>{this.#_-=t[e],t[e]=0},this.#P=(e,i,s,h)=>{if(this.#e(i))return 0;if(!y(s))if(h){if(typeof h!="function")throw new TypeError("sizeCalculation must be a function");if(s=h(i,e),!y(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#U=(e,i,s)=>{if(t[e]=i,this.#c){let h=this.#c-t[e];for(;this.#_>h;)this.#M(!0)}this.#_+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#_)}}#W=t=>{};#U=(t,e,i)=>{};#P=(t,e,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#l));)e=this.#u[e]}*#O({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#l;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#h));)e=this.#a[e]}#H(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#O())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#O()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#O())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,e={}){for(let i of this.#F()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;if(h!==void 0&&t(h,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;h!==void 0&&t.call(e,h,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#O()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;h!==void 0&&t.call(e,h,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#O({allowStale:!0}))this.#p(e)&&(this.#E(this.#i[e],"expire"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let h={value:s};if(this.#d&&this.#A){let n=this.#d[e],o=this.#A[e];if(n&&o){let r=n-(this.#m.now()-o);h.ttl=r,h.start=Date.now()}}return this.#y&&(h.size=this.#y[e]),h}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let i=this.#i[e],s=this.#t[e],h=this.#e(s)?s.__staleWhileFetching:s;if(h===void 0||i===void 0)continue;let n={value:h};if(this.#d&&this.#A){n.ttl=this.#d[e];let o=this.#m.now()-this.#A[e];n.start=Math.floor(Date.now()-o)}this.#y&&(n.size=this.#y[e]),t.unshift([i,n])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:h,noDisposeOnSet:n=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:r}=i,{noUpdateTTL:f=this.noUpdateTTL}=i,m=this.#P(t,e,i.size||0,o);if(this.maxEntrySize&&m>this.maxEntrySize)return r&&(r.set="miss",r.maxEntrySizeExceeded=!0),this.#E(t,"set"),this;let c=this.#n===0?void 0:this.#s.get(t);if(c===void 0)c=this.#n===0?this.#h:this.#b.length!==0?this.#b.pop():this.#n===this.#o?this.#M(!1):this.#n,this.#i[c]=t,this.#t[c]=e,this.#s.set(t,c),this.#a[this.#h]=c,this.#u[c]=this.#h,this.#h=c,this.#n++,this.#U(c,m,r),r&&(r.set="add"),f=!1,this.#x&&this.#C?.(e,t,"add");else{this.#D(c);let d=this.#t[c];if(e!==d){if(this.#v&&this.#e(d)){d.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:g}=d;g!==void 0&&!n&&(this.#T&&this.#w?.(g,t,"set"),this.#f&&this.#r?.push([g,t,"set"]))}else n||(this.#T&&this.#w?.(d,t,"set"),this.#f&&this.#r?.push([d,t,"set"]));if(this.#W(c),this.#U(c,m,r),this.#t[c]=e,r){r.set="replace";let g=d&&this.#e(d)?d.__staleWhileFetching:d;g!==void 0&&(r.oldValue=g)}}else r&&(r.set="update");this.#x&&this.onInsert?.(e,t,e===d?"update":"replace")}if(s!==0&&!this.#d&&this.#j(),this.#d&&(f||this.#N(c,s,h),r&&this.#z(r,c)),!n&&this.#f&&this.#r){let d=this.#r,g;for(;g=d?.shift();)this.#S?.(...g)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#l];if(this.#M(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#f&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#S?.(...e)}}}#M(t){let e=this.#l,i=this.#i[e],s=this.#t[e];return this.#v&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,"evict"),this.#f&&this.#r?.push([s,i,"evict"])),this.#W(e),this.#g?.[e]&&(clearTimeout(this.#g[e]),this.#g[e]=void 0),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#b.push(e)),this.#n===1?(this.#l=this.#h=0,this.#b.length=0):this.#l=this.#a[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,h=this.#s.get(t);if(h!==void 0){let n=this.#t[h];if(this.#e(n)&&n.__staleWhileFetching===void 0)return!1;if(this.#p(h))s&&(s.has="stale",this.#z(s,h));else return i&&this.#R(h),s&&(s.has="hit",this.#z(s,h)),!0}else s&&(s.has="miss");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#p(s))return;let h=this.#t[s];return this.#e(h)?h.__staleWhileFetching:h}#G(t,e,i,s){let h=e===void 0?void 0:this.#t[e];if(this.#e(h))return h;let n=new C,{signal:o}=i;o?.addEventListener("abort",()=>n.abort(o.reason),{signal:n.signal});let r={signal:n.signal,options:i,context:s},f=(p,_=!1)=>{let{aborted:l}=n.signal,w=i.ignoreFetchAbort&&p!==void 0,b=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&p!==void 0);if(i.status&&(l&&!_?(i.status.fetchAborted=!0,i.status.fetchError=n.signal.reason,w&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!w&&!_)return c(n.signal.reason,b);let S=g,u=this.#t[e];return(u===g||w&&_&&u===void 0)&&(p===void 0?S.__staleWhileFetching!==void 0?this.#t[e]=S.__staleWhileFetching:this.#E(t,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,p,r.options))),p},m=p=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=p),c(p,!1)),c=(p,_)=>{let{aborted:l}=n.signal,w=l&&i.allowStaleOnFetchAbort,b=w||i.allowStaleOnFetchRejection,S=b||i.noDeleteOnFetchRejection,u=g;if(this.#t[e]===g&&(!S||!_&&u.__staleWhileFetching===void 0?this.#E(t,"fetch"):w||(this.#t[e]=u.__staleWhileFetching)),b)return i.status&&u.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw p},d=(p,_)=>{let l=this.#L?.(t,h,r);l&&l instanceof Promise&&l.then(w=>p(w===void 0?void 0:w),_),n.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(p(void 0),i.allowStaleOnFetchAbort&&(p=w=>f(w,!0)))})};i.status&&(i.status.fetchDispatched=!0);let g=new Promise(d).then(f,m),A=Object.assign(g,{__abortController:n,__staleWhileFetching:h,__returned:void 0});return e===void 0?(this.set(t,A,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=A,A}#e(t){if(!this.#v)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof C}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:h=this.noDeleteOnStaleGet,ttl:n=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:r=0,sizeCalculation:f=this.sizeCalculation,noUpdateTTL:m=this.noUpdateTTL,noDeleteOnFetchRejection:c=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:p,forceRefresh:_=!1,status:l,signal:w}=e;if(!this.#v)return l&&(l.fetch="get"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:h,status:l});let b={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:h,ttl:n,noDisposeOnSet:o,size:r,sizeCalculation:f,noUpdateTTL:m,noDeleteOnFetchRejection:c,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:g,status:l,signal:w},S=this.#s.get(t);if(S===void 0){l&&(l.fetch="miss");let u=this.#G(t,S,b,p);return u.__returned=u}else{let u=this.#t[S];if(this.#e(u)){let E=i&&u.__staleWhileFetching!==void 0;return l&&(l.fetch="inflight",E&&(l.returnedStale=!0)),E?u.__staleWhileFetching:u.__returned=u}let T=this.#p(S);if(!_&&!T)return l&&(l.fetch="hit"),this.#D(S),s&&this.#R(S),l&&this.#z(l,S),u;let F=this.#G(t,S,b,p),O=F.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=T?"stale":"refresh",O&&T&&(l.returnedStale=!0)),O?F.__staleWhileFetching:F.__returned=F}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(t,e={}){let i=this.#I;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,forceRefresh:h,...n}=e,o=this.get(t,n);if(!h&&o!==void 0)return o;let r=i(t,o,{options:n,context:s});return this.set(t,r,n),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:h=this.noDeleteOnStaleGet,status:n}=e,o=this.#s.get(t);if(o!==void 0){let r=this.#t[o],f=this.#e(r);return n&&this.#z(n,o),this.#p(o)?(n&&(n.get="stale"),f?(n&&i&&r.__staleWhileFetching!==void 0&&(n.returnedStale=!0),i?r.__staleWhileFetching:void 0):(h||this.#E(t,"expire"),n&&i&&(n.returnedStale=!0),i?r:void 0)):(n&&(n.get="hit"),f?r.__staleWhileFetching:(this.#D(o),s&&this.#R(o),r))}else n&&(n.get="miss")}#k(t,e){this.#u[e]=t,this.#a[t]=e}#D(t){t!==this.#h&&(t===this.#l?this.#l=this.#a[t]:this.#k(this.#u[t],this.#a[t]),this.#k(this.#h,t),this.#h=t)}delete(t){return this.#E(t,"delete")}#E(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#V(e);else{this.#W(s);let h=this.#t[s];if(this.#e(h)?h.__abortController.abort(new Error("deleted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(h,t,e),this.#f&&this.#r?.push([h,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#u[s];else if(s===this.#l)this.#l=this.#a[s];else{let n=this.#u[s];this.#a[n]=this.#a[s];let o=this.#a[s];this.#u[o]=this.#u[s]}this.#n--,this.#b.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,h;for(;h=s?.shift();)this.#S?.(...h)}return i}clear(){return this.#V("delete")}#V(t){for(let e of this.#O({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[e];this.#T&&this.#w?.(i,s,t),this.#f&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#A){this.#d.fill(0),this.#A.fill(0);for(let e of this.#g??[])e!==void 0&&clearTimeout(e);this.#g?.fill(void 0)}if(this.#y&&this.#y.fill(0),this.#l=0,this.#h=0,this.#b.length=0,this.#_=0,this.#n=0,this.#f&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#S?.(...i)}}};export{L as LRUCache};
+var x=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,I=new Set,R=typeof process=="object"&&process?process:{},U=(c,t,e,i)=>{typeof R.emitWarning=="function"?R.emitWarning(c,t,e,i):console.error(`[${e}] ${t}: ${c}`)},C=globalThis.AbortController,D=globalThis.AbortSignal;if(typeof C>"u"){D=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},C=class{constructor(){t()}signal=new D;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let c=R.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{c&&(c=!1,U("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}var G=c=>!I.has(c),H=Symbol("type"),y=c=>c&&c===Math.floor(c)&&c>0&&isFinite(c),M=c=>y(c)?c<=Math.pow(2,8)?Uint8Array:c<=Math.pow(2,16)?Uint16Array:c<=Math.pow(2,32)?Uint32Array:c<=Number.MAX_SAFE_INTEGER?z:null:null,z=class extends Array{constructor(t){super(t),this.fill(0)}},W=class c{heap;length;static#o=!1;static create(t){let e=M(t);if(!e)return[];c.#o=!0;let i=new c(t,e);return c.#o=!1,i}constructor(t,e){if(!c.#o)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},L=class c{#o;#c;#w;#C;#S;#L;#I;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#_;#s;#i;#t;#a;#u;#l;#h;#b;#r;#y;#A;#d;#g;#T;#v;#f;#U;static unsafeExposeInternals(t){return{starts:t.#A,ttls:t.#d,autopurgeTimers:t.#g,sizes:t.#y,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#a,prev:t.#u,get head(){return t.#l},get tail(){return t.#h},free:t.#b,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,n)=>t.#G(e,i,s,n),moveToTail:e=>t.#D(e),indexes:e=>t.#F(e),rindexes:e=>t.#O(e),isStale:e=>t.#p(e)}}get max(){return this.#o}get maxSize(){return this.#c}get calculatedSize(){return this.#_}get size(){return this.#n}get fetchMethod(){return this.#L}get memoMethod(){return this.#I}get dispose(){return this.#w}get onInsert(){return this.#C}get disposeAfter(){return this.#S}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:h,allowStale:r,dispose:a,onInsert:w,disposeAfter:f,noDisposeOnSet:d,noUpdateTTL:g,maxSize:A=0,maxEntrySize:p=0,sizeCalculation:_,fetchMethod:l,memoMethod:S,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:m,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:T,ignoreFetchAbort:F,perf:v}=t;if(v!==void 0&&typeof v?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#m=v??x,e!==0&&!y(e))throw new TypeError("max option must be a nonnegative integer");let O=e?M(e):Array;if(!O)throw new Error("invalid max value: "+e);if(this.#o=e,this.#c=A,this.maxEntrySize=p||this.#c,this.sizeCalculation=_,this.sizeCalculation){if(!this.#c&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(S!==void 0&&typeof S!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#I=S,l!==void 0&&typeof l!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#L=l,this.#v=!!l,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#a=new O(e),this.#u=new O(e),this.#l=0,this.#h=0,this.#b=W.create(e),this.#n=0,this.#_=0,typeof a=="function"&&(this.#w=a),typeof w=="function"&&(this.#C=w),typeof f=="function"?(this.#S=f,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#U=!!this.#C,this.#f=!!this.#S,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!g,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!u,this.allowStaleOnFetchAbort=!!T,this.ignoreFetchAbort=!!F,this.maxEntrySize!==0){if(this.#c!==0&&!y(this.#c))throw new TypeError("maxSize must be a positive integer if specified");if(!y(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#B()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!m,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!h,this.ttlResolution=y(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!y(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#j()}if(this.#o===0&&this.ttl===0&&this.#c===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#o&&!this.#c){let E="LRU_CACHE_UNBOUNDED";G(E)&&(I.add(E),U("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",E,c))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#j(){let t=new z(this.#o),e=new z(this.#o);this.#d=t,this.#A=e;let i=this.ttlAutopurge?new Array(this.#o):void 0;this.#g=i,this.#N=(h,r,a=this.#m.now())=>{e[h]=r!==0?a:0,t[h]=r,s(h,r)},this.#R=h=>{e[h]=t[h]!==0?this.#m.now():0,s(h,t[h])};let s=this.ttlAutopurge?(h,r)=>{if(i?.[h]&&(clearTimeout(i[h]),i[h]=void 0),r&&r!==0&&i){let a=setTimeout(()=>{this.#p(h)&&this.#E(this.#i[h],"expire")},r+1);a.unref&&a.unref(),i[h]=a}}:()=>{};this.#z=(h,r)=>{if(t[r]){let a=t[r],w=e[r];if(!a||!w)return;h.ttl=a,h.start=w,h.now=n||o();let f=h.now-w;h.remainingTTL=a-f}};let n=0,o=()=>{let h=this.#m.now();if(this.ttlResolution>0){n=h;let r=setTimeout(()=>n=0,this.ttlResolution);r.unref&&r.unref()}return h};this.getRemainingTTL=h=>{let r=this.#s.get(h);if(r===void 0)return 0;let a=t[r],w=e[r];if(!a||!w)return 1/0;let f=(n||o())-w;return a-f},this.#p=h=>{let r=e[h],a=t[h];return!!a&&!!r&&(n||o())-r>a}}#R=()=>{};#z=()=>{};#N=()=>{};#p=()=>!1;#B(){let t=new z(this.#o);this.#_=0,this.#y=t,this.#W=e=>{this.#_-=t[e],t[e]=0},this.#P=(e,i,s,n)=>{if(this.#e(i))return 0;if(!y(s))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(s=n(i,e),!y(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#M=(e,i,s)=>{if(t[e]=i,this.#c){let n=this.#c-t[e];for(;this.#_>n;)this.#x(!0)}this.#_+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#_)}}#W=t=>{};#M=(t,e,i)=>{};#P=(t,e,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#l));)e=this.#u[e]}*#O({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#l;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#h));)e=this.#a[e]}#H(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#O())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#O()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#O())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,e={}){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&t(n,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#O()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#O({allowStale:!0}))this.#p(e)&&(this.#E(this.#i[e],"expire"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#d&&this.#A){let o=this.#d[e],h=this.#A[e];if(o&&h){let r=o-(this.#m.now()-h);n.ttl=r,n.start=Date.now()}}return this.#y&&(n.size=this.#y[e]),n}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let i=this.#i[e],s=this.#t[e],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#d&&this.#A){o.ttl=this.#d[e];let h=this.#m.now()-this.#A[e];o.start=Math.floor(Date.now()-h)}this.#y&&(o.size=this.#y[e]),t.unshift([i,o])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:r}=i,{noUpdateTTL:a=this.noUpdateTTL}=i,w=this.#P(t,e,i.size||0,h);if(this.maxEntrySize&&w>this.maxEntrySize)return r&&(r.set="miss",r.maxEntrySizeExceeded=!0),this.#E(t,"set"),this;let f=this.#n===0?void 0:this.#s.get(t);if(f===void 0)f=this.#n===0?this.#h:this.#b.length!==0?this.#b.pop():this.#n===this.#o?this.#x(!1):this.#n,this.#i[f]=t,this.#t[f]=e,this.#s.set(t,f),this.#a[this.#h]=f,this.#u[f]=this.#h,this.#h=f,this.#n++,this.#M(f,w,r),r&&(r.set="add"),a=!1,this.#U&&this.#C?.(e,t,"add");else{this.#D(f);let d=this.#t[f];if(e!==d){if(this.#v&&this.#e(d)){d.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:g}=d;g!==void 0&&!o&&(this.#T&&this.#w?.(g,t,"set"),this.#f&&this.#r?.push([g,t,"set"]))}else o||(this.#T&&this.#w?.(d,t,"set"),this.#f&&this.#r?.push([d,t,"set"]));if(this.#W(f),this.#M(f,w,r),this.#t[f]=e,r){r.set="replace";let g=d&&this.#e(d)?d.__staleWhileFetching:d;g!==void 0&&(r.oldValue=g)}}else r&&(r.set="update");this.#U&&this.onInsert?.(e,t,e===d?"update":"replace")}if(s!==0&&!this.#d&&this.#j(),this.#d&&(a||this.#N(f,s,n),r&&this.#z(r,f)),!o&&this.#f&&this.#r){let d=this.#r,g;for(;g=d?.shift();)this.#S?.(...g)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#l];if(this.#x(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#f&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#S?.(...e)}}}#x(t){let e=this.#l,i=this.#i[e],s=this.#t[e];return this.#v&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,"evict"),this.#f&&this.#r?.push([s,i,"evict"])),this.#W(e),this.#g?.[e]&&(clearTimeout(this.#g[e]),this.#g[e]=void 0),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#b.push(e)),this.#n===1?(this.#l=this.#h=0,this.#b.length=0):this.#l=this.#a[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,n=this.#s.get(t);if(n!==void 0){let o=this.#t[n];if(this.#e(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#p(n))s&&(s.has="stale",this.#z(s,n));else return i&&this.#R(n),s&&(s.has="hit",this.#z(s,n)),!0}else s&&(s.has="miss");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#p(s))return;let n=this.#t[s];return this.#e(n)?n.__staleWhileFetching:n}#G(t,e,i,s){let n=e===void 0?void 0:this.#t[e];if(this.#e(n))return n;let o=new C,{signal:h}=i;h?.addEventListener("abort",()=>o.abort(h.reason),{signal:o.signal});let r={signal:o.signal,options:i,context:s},a=(p,_=!1)=>{let{aborted:l}=o.signal,S=i.ignoreFetchAbort&&p!==void 0,b=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&p!==void 0);if(i.status&&(l&&!_?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,S&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!S&&!_)return f(o.signal.reason,b);let m=g,u=this.#t[e];return(u===g||S&&_&&u===void 0)&&(p===void 0?m.__staleWhileFetching!==void 0?this.#t[e]=m.__staleWhileFetching:this.#E(t,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,p,r.options))),p},w=p=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=p),f(p,!1)),f=(p,_)=>{let{aborted:l}=o.signal,S=l&&i.allowStaleOnFetchAbort,b=S||i.allowStaleOnFetchRejection,m=b||i.noDeleteOnFetchRejection,u=g;if(this.#t[e]===g&&(!m||!_&&u.__staleWhileFetching===void 0?this.#E(t,"fetch"):S||(this.#t[e]=u.__staleWhileFetching)),b)return i.status&&u.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw p},d=(p,_)=>{let l=this.#L?.(t,n,r);l&&l instanceof Promise&&l.then(S=>p(S===void 0?void 0:S),_),o.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(p(void 0),i.allowStaleOnFetchAbort&&(p=S=>a(S,!0)))})};i.status&&(i.status.fetchDispatched=!0);let g=new Promise(d).then(a,w),A=Object.assign(g,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return e===void 0?(this.set(t,A,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=A,A}#e(t){if(!this.#v)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof C}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:r=0,sizeCalculation:a=this.sizeCalculation,noUpdateTTL:w=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:p,forceRefresh:_=!1,status:l,signal:S}=e;if(!this.#v)return l&&(l.fetch="get"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:l});let b={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:h,size:r,sizeCalculation:a,noUpdateTTL:w,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:g,status:l,signal:S},m=this.#s.get(t);if(m===void 0){l&&(l.fetch="miss");let u=this.#G(t,m,b,p);return u.__returned=u}else{let u=this.#t[m];if(this.#e(u)){let E=i&&u.__staleWhileFetching!==void 0;return l&&(l.fetch="inflight",E&&(l.returnedStale=!0)),E?u.__staleWhileFetching:u.__returned=u}let T=this.#p(m);if(!_&&!T)return l&&(l.fetch="hit"),this.#D(m),s&&this.#R(m),l&&this.#z(l,m),u;let F=this.#G(t,m,b,p),O=F.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=T?"stale":"refresh",O&&T&&(l.returnedStale=!0)),O?F.__staleWhileFetching:F.__returned=F}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(t,e={}){let i=this.#I;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,forceRefresh:n,...o}=e,h=this.get(t,o);if(!n&&h!==void 0)return h;let r=i(t,h,{options:o,context:s});return this.set(t,r,o),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=e,h=this.#s.get(t);if(h!==void 0){let r=this.#t[h],a=this.#e(r);return o&&this.#z(o,h),this.#p(h)?(o&&(o.get="stale"),a?(o&&i&&r.__staleWhileFetching!==void 0&&(o.returnedStale=!0),i?r.__staleWhileFetching:void 0):(n||this.#E(t,"expire"),o&&i&&(o.returnedStale=!0),i?r:void 0)):(o&&(o.get="hit"),a?r.__staleWhileFetching:(this.#D(h),s&&this.#R(h),r))}else o&&(o.get="miss")}#k(t,e){this.#u[e]=t,this.#a[t]=e}#D(t){t!==this.#h&&(t===this.#l?this.#l=this.#a[t]:this.#k(this.#u[t],this.#a[t]),this.#k(this.#h,t),this.#h=t)}delete(t){return this.#E(t,"delete")}#E(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#V(e);else{this.#W(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error("deleted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(n,t,e),this.#f&&this.#r?.push([n,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#u[s];else if(s===this.#l)this.#l=this.#a[s];else{let o=this.#u[s];this.#a[o]=this.#a[s];let h=this.#a[s];this.#u[h]=this.#u[s]}this.#n--,this.#b.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#S?.(...n)}return i}clear(){return this.#V("delete")}#V(t){for(let e of this.#O({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[e];this.#T&&this.#w?.(i,s,t),this.#f&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#A){this.#d.fill(0),this.#A.fill(0);for(let e of this.#g??[])e!==void 0&&clearTimeout(e);this.#g?.fill(void 0)}if(this.#y&&this.#y.fill(0),this.#l=0,this.#h=0,this.#b.length=0,this.#_=0,this.#n=0,this.#f&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#S?.(...i)}}};export{L as LRUCache};
 //# sourceMappingURL=index.min.js.map
diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json
index 1554184f053da4..aac56efd1920ed 100644
--- a/deps/npm/node_modules/lru-cache/package.json
+++ b/deps/npm/node_modules/lru-cache/package.json
@@ -1,7 +1,7 @@
 {
   "name": "lru-cache",
   "description": "A cache object that deletes the least-recently-used items.",
-  "version": "11.2.6",
+  "version": "11.2.7",
   "author": "Isaac Z. Schlueter <i@izs.me>",
   "keywords": [
     "mru",
@@ -66,14 +66,6 @@
   "engines": {
     "node": "20 || >=22"
   },
-  "tap": {
-    "node-arg": [
-      "--expose-gc"
-    ],
-    "plugin": [
-      "@tapjs/clock"
-    ]
-  },
   "exports": {
     "./raw": {
       "import": {
diff --git a/deps/npm/node_modules/make-fetch-happen/lib/remote.js b/deps/npm/node_modules/make-fetch-happen/lib/remote.js
index 5dd17c58b28a22..061759638f05cb 100644
--- a/deps/npm/node_modules/make-fetch-happen/lib/remote.js
+++ b/deps/npm/node_modules/make-fetch-happen/lib/remote.js
@@ -3,6 +3,7 @@ const fetch = require('minipass-fetch')
 const { promiseRetry } = require('@gar/promise-retry')
 const ssri = require('ssri')
 const { log } = require('proc-log')
+const { redact: cleanUrl } = require('@npmcli/redact')
 
 const CachingMinipassPipeline = require('./pipeline.js')
 const { getAgent } = require('@npmcli/agent')
@@ -55,6 +56,7 @@ const remoteFetch = (request, options) => {
 
   return promiseRetry(async (retryHandler, attemptNum) => {
     const req = new fetch.Request(request, _opts)
+    const url = cleanUrl(req.url)
     try {
       let res = await fetch(req, _opts)
       if (_opts.integrity && res.status === 200) {
@@ -92,7 +94,7 @@ const remoteFetch = (request, options) => {
         }
 
         /* eslint-disable-next-line max-len */
-        log.http('fetch', `${req.method} ${req.url} attempt ${attemptNum} failed with ${res.status}`)
+        log.http('fetch', `${req.method} ${url} attempt ${attemptNum} failed with ${res.status}`)
         return retryHandler(res)
       }
 
@@ -116,7 +118,7 @@ const remoteFetch = (request, options) => {
         options.onRetry(err)
       }
 
-      log.http('fetch', `${req.method} ${req.url} attempt ${attemptNum} failed with ${err.code}`)
+      log.http('fetch', `${req.method} ${url} attempt ${attemptNum} failed with ${err.code}`)
       return retryHandler(err)
     }
   }, options.retry).catch((err) => {
diff --git a/deps/npm/node_modules/make-fetch-happen/package.json b/deps/npm/node_modules/make-fetch-happen/package.json
index 5090b5042756fe..1d06ac4889c3e3 100644
--- a/deps/npm/node_modules/make-fetch-happen/package.json
+++ b/deps/npm/node_modules/make-fetch-happen/package.json
@@ -1,6 +1,6 @@
 {
   "name": "make-fetch-happen",
-  "version": "15.0.4",
+  "version": "15.0.5",
   "description": "Opinionated, caching, retrying fetch client",
   "main": "lib/index.js",
   "files": [
@@ -35,6 +35,7 @@
   "dependencies": {
     "@gar/promise-retry": "^1.0.0",
     "@npmcli/agent": "^4.0.0",
+    "@npmcli/redact": "^4.0.0",
     "cacache": "^20.0.1",
     "http-cache-semantics": "^4.1.1",
     "minipass": "^7.0.2",
diff --git a/deps/npm/node_modules/promise-retry/LICENSE b/deps/npm/node_modules/promise-retry/LICENSE
deleted file mode 100644
index db5e914de1f585..00000000000000
--- a/deps/npm/node_modules/promise-retry/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 IndigoUnited
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/deps/npm/node_modules/promise-retry/index.js b/deps/npm/node_modules/promise-retry/index.js
deleted file mode 100644
index 5df48ae91602d6..00000000000000
--- a/deps/npm/node_modules/promise-retry/index.js
+++ /dev/null
@@ -1,52 +0,0 @@
-'use strict';
-
-var errcode = require('err-code');
-var retry = require('retry');
-
-var hasOwn = Object.prototype.hasOwnProperty;
-
-function isRetryError(err) {
-    return err && err.code === 'EPROMISERETRY' && hasOwn.call(err, 'retried');
-}
-
-function promiseRetry(fn, options) {
-    var temp;
-    var operation;
-
-    if (typeof fn === 'object' && typeof options === 'function') {
-        // Swap options and fn when using alternate signature (options, fn)
-        temp = options;
-        options = fn;
-        fn = temp;
-    }
-
-    operation = retry.operation(options);
-
-    return new Promise(function (resolve, reject) {
-        operation.attempt(function (number) {
-            Promise.resolve()
-            .then(function () {
-                return fn(function (err) {
-                    if (isRetryError(err)) {
-                        err = err.retried;
-                    }
-
-                    throw errcode(new Error('Retrying'), 'EPROMISERETRY', { retried: err });
-                }, number);
-            })
-            .then(resolve, function (err) {
-                if (isRetryError(err)) {
-                    err = err.retried;
-
-                    if (operation.retry(err || new Error())) {
-                        return;
-                    }
-                }
-
-                reject(err);
-            });
-        });
-    });
-}
-
-module.exports = promiseRetry;
diff --git a/deps/npm/node_modules/promise-retry/package.json b/deps/npm/node_modules/promise-retry/package.json
deleted file mode 100644
index 6842de823fd198..00000000000000
--- a/deps/npm/node_modules/promise-retry/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-  "name": "promise-retry",
-  "version": "2.0.1",
-  "description": "Retries a function that returns a promise, leveraging the power of the retry module.",
-  "main": "index.js",
-  "scripts": {
-    "test": "mocha --bail -t 10000"
-  },
-  "bugs": {
-    "url": "https://github.com/IndigoUnited/node-promise-retry/issues/"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/IndigoUnited/node-promise-retry.git"
-  },
-  "keywords": [
-    "retry",
-    "promise",
-    "backoff",
-    "repeat",
-    "replay"
-  ],
-  "author": "IndigoUnited <hello@indigounited.com> (http://indigounited.com)",
-  "license": "MIT",
-  "devDependencies": {
-    "expect.js": "^0.3.1",
-    "mocha": "^8.0.1",
-    "sleep-promise": "^8.0.1"
-  },
-  "dependencies": {
-    "err-code": "^2.0.2",
-    "retry": "^0.12.0"
-  },
-  "engines": {
-    "node": ">=10"
-  }
-}
diff --git a/deps/npm/node_modules/promise-retry/test/test.js b/deps/npm/node_modules/promise-retry/test/test.js
deleted file mode 100644
index 466b0991e0f558..00000000000000
--- a/deps/npm/node_modules/promise-retry/test/test.js
+++ /dev/null
@@ -1,263 +0,0 @@
-'use strict';
-
-var expect = require('expect.js');
-var promiseRetry = require('../');
-var promiseDelay = require('sleep-promise');
-
-describe('promise-retry', function () {
-    it('should call fn again if retry was called', function () {
-        var count = 0;
-
-        return promiseRetry(function (retry) {
-            count += 1;
-
-            return promiseDelay(10)
-            .then(function () {
-                if (count <= 2) {
-                    retry(new Error('foo'));
-                }
-
-                return 'final';
-            });
-        }, { factor: 1 })
-        .then(function (value) {
-            expect(value).to.be('final');
-            expect(count).to.be(3);
-        }, function () {
-            throw new Error('should not fail');
-        });
-    });
-
-    it('should call fn with the attempt number', function () {
-        var count = 0;
-
-        return promiseRetry(function (retry, number) {
-            count += 1;
-            expect(count).to.equal(number);
-
-            return promiseDelay(10)
-            .then(function () {
-                if (count <= 2) {
-                    retry(new Error('foo'));
-                }
-
-                return 'final';
-            });
-        }, { factor: 1 })
-        .then(function (value) {
-            expect(value).to.be('final');
-            expect(count).to.be(3);
-        }, function () {
-            throw new Error('should not fail');
-        });
-    });
-
-    it('should not retry on fulfillment if retry was not called', function () {
-        var count = 0;
-
-        return promiseRetry(function () {
-            count += 1;
-
-            return promiseDelay(10)
-            .then(function () {
-                return 'final';
-            });
-        })
-        .then(function (value) {
-            expect(value).to.be('final');
-            expect(count).to.be(1);
-        }, function () {
-            throw new Error('should not fail');
-        });
-    });
-
-    it('should not retry on rejection if retry was not called', function () {
-        var count = 0;
-
-        return promiseRetry(function () {
-            count += 1;
-
-            return promiseDelay(10)
-            .then(function () {
-                throw new Error('foo');
-            });
-        })
-        .then(function () {
-            throw new Error('should not succeed');
-        }, function (err) {
-            expect(err.message).to.be('foo');
-            expect(count).to.be(1);
-        });
-    });
-
-    it('should not retry on rejection if nr of retries is 0', function () {
-        var count = 0;
-
-        return promiseRetry(function (retry) {
-            count += 1;
-
-            return promiseDelay(10)
-            .then(function () {
-                throw new Error('foo');
-            })
-            .catch(retry);
-        }, { retries : 0 })
-        .then(function () {
-            throw new Error('should not succeed');
-        }, function (err) {
-            expect(err.message).to.be('foo');
-            expect(count).to.be(1);
-        });
-    });
-
-    it('should reject the promise if the retries were exceeded', function () {
-        var count = 0;
-
-        return promiseRetry(function (retry) {
-            count += 1;
-
-            return promiseDelay(10)
-            .then(function () {
-                throw new Error('foo');
-            })
-            .catch(retry);
-        }, { retries: 2, factor: 1 })
-        .then(function () {
-            throw new Error('should not succeed');
-        }, function (err) {
-            expect(err.message).to.be('foo');
-            expect(count).to.be(3);
-        });
-    });
-
-    it('should pass options to the underlying retry module', function () {
-        var count = 0;
-
-        return promiseRetry(function (retry) {
-            return promiseDelay(10)
-            .then(function () {
-                if (count < 2) {
-                    count += 1;
-                    retry(new Error('foo'));
-                }
-
-                return 'final';
-            });
-        }, { retries: 1, factor: 1 })
-        .then(function () {
-            throw new Error('should not succeed');
-        }, function (err) {
-            expect(err.message).to.be('foo');
-        });
-    });
-
-    it('should convert direct fulfillments into promises', function () {
-        return promiseRetry(function () {
-            return 'final';
-        }, { factor: 1 })
-        .then(function (value) {
-            expect(value).to.be('final');
-        }, function () {
-            throw new Error('should not fail');
-        });
-    });
-
-    it('should convert direct rejections into promises', function () {
-        promiseRetry(function () {
-            throw new Error('foo');
-        }, { retries: 1, factor: 1 })
-        .then(function () {
-            throw new Error('should not succeed');
-        }, function (err) {
-            expect(err.message).to.be('foo');
-        });
-    });
-
-    it('should not crash on undefined rejections', function () {
-        return promiseRetry(function () {
-            throw undefined;
-        }, { retries: 1, factor: 1 })
-        .then(function () {
-            throw new Error('should not succeed');
-        }, function (err) {
-            expect(err).to.be(undefined);
-        })
-        .then(function () {
-            return promiseRetry(function (retry) {
-                retry();
-            }, { retries: 1, factor: 1 });
-        })
-        .then(function () {
-            throw new Error('should not succeed');
-        }, function (err) {
-            expect(err).to.be(undefined);
-        });
-    });
-
-    it('should retry if retry() was called with undefined', function () {
-        var count = 0;
-
-        return promiseRetry(function (retry) {
-            count += 1;
-
-            return promiseDelay(10)
-            .then(function () {
-                if (count <= 2) {
-                    retry();
-                }
-
-                return 'final';
-            });
-        }, { factor: 1 })
-        .then(function (value) {
-            expect(value).to.be('final');
-            expect(count).to.be(3);
-        }, function () {
-            throw new Error('should not fail');
-        });
-    });
-
-    it('should work with several retries in the same chain', function () {
-        var count = 0;
-
-        return promiseRetry(function (retry) {
-            count += 1;
-
-            return promiseDelay(10)
-            .then(function () {
-                retry(new Error('foo'));
-            })
-            .catch(function (err) {
-                retry(err);
-            });
-        }, { retries: 1, factor: 1 })
-        .then(function () {
-            throw new Error('should not succeed');
-        }, function (err) {
-            expect(err.message).to.be('foo');
-            expect(count).to.be(2);
-        });
-    });
-
-    it('should allow options to be passed first', function () {
-        var count = 0;
-
-        return promiseRetry({ factor: 1 }, function (retry) {
-            count += 1;
-
-            return promiseDelay(10)
-                .then(function () {
-                    if (count <= 2) {
-                        retry(new Error('foo'));
-                    }
-
-                    return 'final';
-                });
-        }).then(function (value) {
-            expect(value).to.be('final');
-            expect(count).to.be(3);
-        }, function () {
-            throw new Error('should not fail');
-        });
-    });
-});
diff --git a/deps/npm/node_modules/retry/License b/deps/npm/node_modules/retry/License
deleted file mode 100644
index 0b58de379fb308..00000000000000
--- a/deps/npm/node_modules/retry/License
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright (c) 2011:
-Tim Koschützki (tim@debuggable.com)
-Felix Geisendörfer (felix@debuggable.com)
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
diff --git a/deps/npm/node_modules/retry/Makefile b/deps/npm/node_modules/retry/Makefile
deleted file mode 100644
index 1968d8ff8b07bc..00000000000000
--- a/deps/npm/node_modules/retry/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-SHELL := /bin/bash
-
-release-major: test
-	npm version major -m "Release %s"
-	git push
-	npm publish
-
-release-minor: test
-	npm version minor -m "Release %s"
-	git push
-	npm publish
-
-release-patch: test
-	npm version patch -m "Release %s"
-	git push
-	npm publish
-
-.PHONY: test release-major release-minor release-patch
diff --git a/deps/npm/node_modules/retry/equation.gif b/deps/npm/node_modules/retry/equation.gif
deleted file mode 100644
index 97107237ba19f51997d8d76135bc7d1486d856f0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1209
zcmV;q1V;NuNk%w1VXpu&0M!5h000001ONyK2nY-a5D*X$6c88~7#JKFARr(hBp@j$
zDJd)|F)%SPG%-0iIXOHzK|n!4L_tbON=i&hQczM-RZ?16T3TINVqs!pWnyY+YHDq2
zb8&NXb#r@pdwYF*gMovCg@cQUi;Inml#!H_m6V*BoSdDUq@kpwrKGH?tgNoAw6e6c
zwzR#vy}iD@#lpqK#>LIb&CSlu)za0~*45tH-rnBc=Hlk&=H~9|?(XjH_VV`j_V)k!
z|NsC0EC2ui0IvWs000L6z@KnPEE<o<q;kn@I-k&}bV{vSuh^`%c*}q&w5@ndE@vOM
z-^^idyWjAD@8=7^@Ay15G4jC(dVzw2L@x&e4i<!qjCVW=HI0&!TRIUel$n}RHW!hb
zprN9pq@|{(Lo)#YtgWuDsIhM!047L2F$(~UEe$2IjXn$mI7v5lj2JS&jWhueN)(L^
zbIgn(0KZ7uggk5@3D%1Z0yjuHL_8`M14SPX5FkYF@$>NVOfMTEH9c0Z7p9<aAfT8K
zdibEIW9ROky?R3s9<d?dL6a9HQ0y9FLV}P9wtjT{7;@wfkW4~UV1NaHjh8miMZpjO
z1`m!NPlkMgQ6mxmlPE>z3<`87kr4n!IH|Ew$buF^Tr6-3^@midQKv4UFk?fCD@~8E
z@HgbfvLPrU7<rnt$XFs~jW8v`)~eRJSAXEuYUF`{G)(3S;Q>IV4gfp|8%C^H$l;qq
zLJ;`y;|7BS2YlpEz->xcBQ#7@yHNtNkOmwQ1ek!X@sGzuLXR#jx2fyLw;309jQGe6
zL`?+$umPZ&50}J^BQGxGIN%{G2=u5hqw|pm*t2Ul0ssMk0vb%GI^lz~c)})l<bW_?
zICDBKi_9Qz{)q78&6g{G`QG_903rm|)D2BJN8k_!78qX<2T(W096PXpKm|w4U;=GK
z5H|!<I~<t*-*c&4C>{~Qc?h2kCMJmBf=4KTfq+A}mV<6G&6wD3KiFu51s1j8f&fS0
zFaiqI41q&$@ZBIIl0*neBoe|cd1H+<3Zdf>DJ(#i62j@_f)Fj-_2my?IyGjQMd%>G
z07WXH-J3lkxMd6n7?DE>JIL@P5d*{^#0>(>vA~&p4RL3ldlu2<pkRvGsF{x*L4yGx
zCeh^y?foD@NSF$-sSurNYSauqV4wp5Uu|JQ148uhDG`SXp=X;NQ22ue9e|qYtA^q!
zYoZ&573!<Qa=NQgL+pS6CQM*30RR_-Fa!t?I6&F7)m|$EwbmAqzymY<AOZm%Y<UF?
z4Lo4p0R<}<ae_=j#P9+UK4{<o1RWH~t+qqFON6{dI18<`+h$9|z6Tq8gao;Y<FFea
zK$C<)4_7Qj3kSe^M1U4|?8FTP_^E`%9+!+n4-1g6M3*MFEQAG$DA9uhpSfHz2>^8P
z!OlGQ%z<|`+iWomtGr?~EJ7!(^wLZ>?ex=7N4-QZ)=BNMGD+xg!3P&;Y_%-ZByj;I
zEWG$NFy8zC&JhLd@WT!ToDGaV{P^?c4^0Iv_b4i{ghbnK$GtZyTzMtL-DCey_TZ>w
XwprD$S>S;MUNdg_<(OxVL=XTw-hl|W

diff --git a/deps/npm/node_modules/retry/example/dns.js b/deps/npm/node_modules/retry/example/dns.js
deleted file mode 100644
index 446729b6f9af6b..00000000000000
--- a/deps/npm/node_modules/retry/example/dns.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var dns = require('dns');
-var retry = require('../lib/retry');
-
-function faultTolerantResolve(address, cb) {
-  var opts = {
-    retries: 2,
-    factor: 2,
-    minTimeout: 1 * 1000,
-    maxTimeout: 2 * 1000,
-    randomize: true
-  };
-  var operation = retry.operation(opts);
-
-  operation.attempt(function(currentAttempt) {
-    dns.resolve(address, function(err, addresses) {
-      if (operation.retry(err)) {
-        return;
-      }
-
-      cb(operation.mainError(), operation.errors(), addresses);
-    });
-  });
-}
-
-faultTolerantResolve('nodejs.org', function(err, errors, addresses) {
-  console.warn('err:');
-  console.log(err);
-
-  console.warn('addresses:');
-  console.log(addresses);
-});
\ No newline at end of file
diff --git a/deps/npm/node_modules/retry/example/stop.js b/deps/npm/node_modules/retry/example/stop.js
deleted file mode 100644
index e1ceafeebafc51..00000000000000
--- a/deps/npm/node_modules/retry/example/stop.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var retry = require('../lib/retry');
-
-function attemptAsyncOperation(someInput, cb) {
-  var opts = {
-    retries: 2,
-    factor: 2,
-    minTimeout: 1 * 1000,
-    maxTimeout: 2 * 1000,
-    randomize: true
-  };
-  var operation = retry.operation(opts);
-
-  operation.attempt(function(currentAttempt) {
-    failingAsyncOperation(someInput, function(err, result) {
-
-      if (err && err.message === 'A fatal error') {
-        operation.stop();
-        return cb(err);
-      }
-
-      if (operation.retry(err)) {
-        return;
-      }
-
-      cb(operation.mainError(), operation.errors(), result);
-    });
-  });
-}
-
-attemptAsyncOperation('test input', function(err, errors, result) {
-  console.warn('err:');
-  console.log(err);
-
-  console.warn('result:');
-  console.log(result);
-});
-
-function failingAsyncOperation(input, cb) {
-  return setImmediate(cb.bind(null, new Error('A fatal error')));
-}
diff --git a/deps/npm/node_modules/retry/index.js b/deps/npm/node_modules/retry/index.js
deleted file mode 100644
index ee62f3a112c28b..00000000000000
--- a/deps/npm/node_modules/retry/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib/retry');
\ No newline at end of file
diff --git a/deps/npm/node_modules/retry/lib/retry.js b/deps/npm/node_modules/retry/lib/retry.js
deleted file mode 100644
index dcb57680727948..00000000000000
--- a/deps/npm/node_modules/retry/lib/retry.js
+++ /dev/null
@@ -1,100 +0,0 @@
-var RetryOperation = require('./retry_operation');
-
-exports.operation = function(options) {
-  var timeouts = exports.timeouts(options);
-  return new RetryOperation(timeouts, {
-      forever: options && options.forever,
-      unref: options && options.unref,
-      maxRetryTime: options && options.maxRetryTime
-  });
-};
-
-exports.timeouts = function(options) {
-  if (options instanceof Array) {
-    return [].concat(options);
-  }
-
-  var opts = {
-    retries: 10,
-    factor: 2,
-    minTimeout: 1 * 1000,
-    maxTimeout: Infinity,
-    randomize: false
-  };
-  for (var key in options) {
-    opts[key] = options[key];
-  }
-
-  if (opts.minTimeout > opts.maxTimeout) {
-    throw new Error('minTimeout is greater than maxTimeout');
-  }
-
-  var timeouts = [];
-  for (var i = 0; i < opts.retries; i++) {
-    timeouts.push(this.createTimeout(i, opts));
-  }
-
-  if (options && options.forever && !timeouts.length) {
-    timeouts.push(this.createTimeout(i, opts));
-  }
-
-  // sort the array numerically ascending
-  timeouts.sort(function(a,b) {
-    return a - b;
-  });
-
-  return timeouts;
-};
-
-exports.createTimeout = function(attempt, opts) {
-  var random = (opts.randomize)
-    ? (Math.random() + 1)
-    : 1;
-
-  var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));
-  timeout = Math.min(timeout, opts.maxTimeout);
-
-  return timeout;
-};
-
-exports.wrap = function(obj, options, methods) {
-  if (options instanceof Array) {
-    methods = options;
-    options = null;
-  }
-
-  if (!methods) {
-    methods = [];
-    for (var key in obj) {
-      if (typeof obj[key] === 'function') {
-        methods.push(key);
-      }
-    }
-  }
-
-  for (var i = 0; i < methods.length; i++) {
-    var method   = methods[i];
-    var original = obj[method];
-
-    obj[method] = function retryWrapper(original) {
-      var op       = exports.operation(options);
-      var args     = Array.prototype.slice.call(arguments, 1);
-      var callback = args.pop();
-
-      args.push(function(err) {
-        if (op.retry(err)) {
-          return;
-        }
-        if (err) {
-          arguments[0] = op.mainError();
-        }
-        callback.apply(this, arguments);
-      });
-
-      op.attempt(function() {
-        original.apply(obj, args);
-      });
-    }.bind(obj, original);
-    obj[method].options = options;
-  }
-};
diff --git a/deps/npm/node_modules/retry/lib/retry_operation.js b/deps/npm/node_modules/retry/lib/retry_operation.js
deleted file mode 100644
index 1e564696fe7e07..00000000000000
--- a/deps/npm/node_modules/retry/lib/retry_operation.js
+++ /dev/null
@@ -1,158 +0,0 @@
-function RetryOperation(timeouts, options) {
-  // Compatibility for the old (timeouts, retryForever) signature
-  if (typeof options === 'boolean') {
-    options = { forever: options };
-  }
-
-  this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));
-  this._timeouts = timeouts;
-  this._options = options || {};
-  this._maxRetryTime = options && options.maxRetryTime || Infinity;
-  this._fn = null;
-  this._errors = [];
-  this._attempts = 1;
-  this._operationTimeout = null;
-  this._operationTimeoutCb = null;
-  this._timeout = null;
-  this._operationStart = null;
-
-  if (this._options.forever) {
-    this._cachedTimeouts = this._timeouts.slice(0);
-  }
-}
-module.exports = RetryOperation;
-
-RetryOperation.prototype.reset = function() {
-  this._attempts = 1;
-  this._timeouts = this._originalTimeouts;
-}
-
-RetryOperation.prototype.stop = function() {
-  if (this._timeout) {
-    clearTimeout(this._timeout);
-  }
-
-  this._timeouts       = [];
-  this._cachedTimeouts = null;
-};
-
-RetryOperation.prototype.retry = function(err) {
-  if (this._timeout) {
-    clearTimeout(this._timeout);
-  }
-
-  if (!err) {
-    return false;
-  }
-  var currentTime = new Date().getTime();
-  if (err && currentTime - this._operationStart >= this._maxRetryTime) {
-    this._errors.unshift(new Error('RetryOperation timeout occurred'));
-    return false;
-  }
-
-  this._errors.push(err);
-
-  var timeout = this._timeouts.shift();
-  if (timeout === undefined) {
-    if (this._cachedTimeouts) {
-      // retry forever, only keep last error
-      this._errors.splice(this._errors.length - 1, this._errors.length);
-      this._timeouts = this._cachedTimeouts.slice(0);
-      timeout = this._timeouts.shift();
-    } else {
-      return false;
-    }
-  }
-
-  var self = this;
-  var timer = setTimeout(function() {
-    self._attempts++;
-
-    if (self._operationTimeoutCb) {
-      self._timeout = setTimeout(function() {
-        self._operationTimeoutCb(self._attempts);
-      }, self._operationTimeout);
-
-      if (self._options.unref) {
-          self._timeout.unref();
-      }
-    }
-
-    self._fn(self._attempts);
-  }, timeout);
-
-  if (this._options.unref) {
-      timer.unref();
-  }
-
-  return true;
-};
-
-RetryOperation.prototype.attempt = function(fn, timeoutOps) {
-  this._fn = fn;
-
-  if (timeoutOps) {
-    if (timeoutOps.timeout) {
-      this._operationTimeout = timeoutOps.timeout;
-    }
-    if (timeoutOps.cb) {
-      this._operationTimeoutCb = timeoutOps.cb;
-    }
-  }
-
-  var self = this;
-  if (this._operationTimeoutCb) {
-    this._timeout = setTimeout(function() {
-      self._operationTimeoutCb();
-    }, self._operationTimeout);
-  }
-
-  this._operationStart = new Date().getTime();
-
-  this._fn(this._attempts);
-};
-
-RetryOperation.prototype.try = function(fn) {
-  console.log('Using RetryOperation.try() is deprecated');
-  this.attempt(fn);
-};
-
-RetryOperation.prototype.start = function(fn) {
-  console.log('Using RetryOperation.start() is deprecated');
-  this.attempt(fn);
-};
-
-RetryOperation.prototype.start = RetryOperation.prototype.try;
-
-RetryOperation.prototype.errors = function() {
-  return this._errors;
-};
-
-RetryOperation.prototype.attempts = function() {
-  return this._attempts;
-};
-
-RetryOperation.prototype.mainError = function() {
-  if (this._errors.length === 0) {
-    return null;
-  }
-
-  var counts = {};
-  var mainError = null;
-  var mainErrorCount = 0;
-
-  for (var i = 0; i < this._errors.length; i++) {
-    var error = this._errors[i];
-    var message = error.message;
-    var count = (counts[message] || 0) + 1;
-
-    counts[message] = count;
-
-    if (count >= mainErrorCount) {
-      mainError = error;
-      mainErrorCount = count;
-    }
-  }
-
-  return mainError;
-};
diff --git a/deps/npm/node_modules/retry/package.json b/deps/npm/node_modules/retry/package.json
deleted file mode 100644
index 73c7259707aeef..00000000000000
--- a/deps/npm/node_modules/retry/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-  "author": "Tim Koschützki <tim@debuggable.com> (http://debuggable.com/)",
-  "name": "retry",
-  "description": "Abstraction for exponential and custom retry strategies for failed operations.",
-  "license": "MIT",
-  "version": "0.12.0",
-  "homepage": "https://github.com/tim-kos/node-retry",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/tim-kos/node-retry.git"
-  },
-  "directories": {
-    "lib": "./lib"
-  },
-  "main": "index",
-  "engines": {
-    "node": ">= 4"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "fake": "0.2.0",
-    "istanbul": "^0.4.5",
-    "tape": "^4.8.0"
-  },
-  "scripts": {
-    "test": "./node_modules/.bin/istanbul cover ./node_modules/tape/bin/tape ./test/integration/*.js",
-    "release:major": "env SEMANTIC=major npm run release",
-    "release:minor": "env SEMANTIC=minor npm run release",
-    "release:patch": "env SEMANTIC=patch npm run release",
-    "release": "npm version ${SEMANTIC:-patch} -m \"Release %s\" && git push && git push --tags && npm publish"
-  }
-}
diff --git a/deps/npm/node_modules/retry/test/common.js b/deps/npm/node_modules/retry/test/common.js
deleted file mode 100644
index 224720696ebac8..00000000000000
--- a/deps/npm/node_modules/retry/test/common.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var common = module.exports;
-var path = require('path');
-
-var rootDir = path.join(__dirname, '..');
-common.dir = {
-  lib: rootDir + '/lib'
-};
-
-common.assert = require('assert');
-common.fake = require('fake');
\ No newline at end of file
diff --git a/deps/npm/node_modules/retry/test/integration/test-forever.js b/deps/npm/node_modules/retry/test/integration/test-forever.js
deleted file mode 100644
index b41307cb529f12..00000000000000
--- a/deps/npm/node_modules/retry/test/integration/test-forever.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var common = require('../common');
-var assert = common.assert;
-var retry = require(common.dir.lib + '/retry');
-
-(function testForeverUsesFirstTimeout() {
-  var operation = retry.operation({
-    retries: 0,
-    minTimeout: 100,
-    maxTimeout: 100,
-    forever: true
-  });
-
-  operation.attempt(function(numAttempt) {
-    console.log('>numAttempt', numAttempt);
-    var err = new Error("foo");
-    if (numAttempt == 10) {
-      operation.stop();
-    }
-
-    if (operation.retry(err)) {
-      return;
-    }
-  });
-})();
diff --git a/deps/npm/node_modules/retry/test/integration/test-retry-operation.js b/deps/npm/node_modules/retry/test/integration/test-retry-operation.js
deleted file mode 100644
index e351bb683ed449..00000000000000
--- a/deps/npm/node_modules/retry/test/integration/test-retry-operation.js
+++ /dev/null
@@ -1,258 +0,0 @@
-var common = require('../common');
-var assert = common.assert;
-var fake = common.fake.create();
-var retry = require(common.dir.lib + '/retry');
-
-(function testReset() {
-  var error = new Error('some error');
-  var operation = retry.operation([1, 2, 3]);
-  var attempts = 0;
-
-  var finalCallback = fake.callback('finalCallback');
-  fake.expectAnytime(finalCallback);
-
-  var expectedFinishes = 1;
-  var finishes         = 0;
-
-  var fn = function() {
-    operation.attempt(function(currentAttempt) {
-      attempts++;
-      assert.equal(currentAttempt, attempts);
-      if (operation.retry(error)) {
-        return;
-      }
-
-      finishes++
-      assert.equal(expectedFinishes, finishes);
-      assert.strictEqual(attempts, 4);
-      assert.strictEqual(operation.attempts(), attempts);
-      assert.strictEqual(operation.mainError(), error);
-
-      if (finishes < 2) {
-        attempts = 0;
-        expectedFinishes++;
-        operation.reset();
-        fn()
-      } else {
-        finalCallback();
-      }
-    });
-  };
-
-  fn();
-})();
-
-(function testErrors() {
-  var operation = retry.operation();
-
-  var error = new Error('some error');
-  var error2 = new Error('some other error');
-  operation._errors.push(error);
-  operation._errors.push(error2);
-
-  assert.deepEqual(operation.errors(), [error, error2]);
-})();
-
-(function testMainErrorReturnsMostFrequentError() {
-  var operation = retry.operation();
-  var error = new Error('some error');
-  var error2 = new Error('some other error');
-
-  operation._errors.push(error);
-  operation._errors.push(error2);
-  operation._errors.push(error);
-
-  assert.strictEqual(operation.mainError(), error);
-})();
-
-(function testMainErrorReturnsLastErrorOnEqualCount() {
-  var operation = retry.operation();
-  var error = new Error('some error');
-  var error2 = new Error('some other error');
-
-  operation._errors.push(error);
-  operation._errors.push(error2);
-
-  assert.strictEqual(operation.mainError(), error2);
-})();
-
-(function testAttempt() {
-  var operation = retry.operation();
-  var fn = new Function();
-
-  var timeoutOpts = {
-    timeout: 1,
-    cb: function() {}
-  };
-  operation.attempt(fn, timeoutOpts);
-
-  assert.strictEqual(fn, operation._fn);
-  assert.strictEqual(timeoutOpts.timeout, operation._operationTimeout);
-  assert.strictEqual(timeoutOpts.cb, operation._operationTimeoutCb);
-})();
-
-(function testRetry() {
-  var error = new Error('some error');
-  var operation = retry.operation([1, 2, 3]);
-  var attempts = 0;
-
-  var finalCallback = fake.callback('finalCallback');
-  fake.expectAnytime(finalCallback);
-
-  var fn = function() {
-    operation.attempt(function(currentAttempt) {
-      attempts++;
-      assert.equal(currentAttempt, attempts);
-      if (operation.retry(error)) {
-        return;
-      }
-
-      assert.strictEqual(attempts, 4);
-      assert.strictEqual(operation.attempts(), attempts);
-      assert.strictEqual(operation.mainError(), error);
-      finalCallback();
-    });
-  };
-
-  fn();
-})();
-
-(function testRetryForever() {
-  var error = new Error('some error');
-  var operation = retry.operation({ retries: 3, forever: true });
-  var attempts = 0;
-
-  var finalCallback = fake.callback('finalCallback');
-  fake.expectAnytime(finalCallback);
-
-  var fn = function() {
-    operation.attempt(function(currentAttempt) {
-      attempts++;
-      assert.equal(currentAttempt, attempts);
-      if (attempts !== 6 && operation.retry(error)) {
-        return;
-      }
-
-      assert.strictEqual(attempts, 6);
-      assert.strictEqual(operation.attempts(), attempts);
-      assert.strictEqual(operation.mainError(), error);
-      finalCallback();
-    });
-  };
-
-  fn();
-})();
-
-(function testRetryForeverNoRetries() {
-  var error = new Error('some error');
-  var delay = 50
-  var operation = retry.operation({
-    retries: null,
-    forever: true,
-    minTimeout: delay,
-    maxTimeout: delay
-  });
-
-  var attempts = 0;
-  var startTime = new Date().getTime();
-
-  var finalCallback = fake.callback('finalCallback');
-  fake.expectAnytime(finalCallback);
-
-  var fn = function() {
-    operation.attempt(function(currentAttempt) {
-      attempts++;
-      assert.equal(currentAttempt, attempts);
-      if (attempts !== 4 && operation.retry(error)) {
-        return;
-      }
-
-      var endTime = new Date().getTime();
-      var minTime = startTime + (delay * 3);
-      var maxTime = minTime + 20 // add a little headroom for code execution time
-      assert(endTime >= minTime)
-      assert(endTime < maxTime)
-      assert.strictEqual(attempts, 4);
-      assert.strictEqual(operation.attempts(), attempts);
-      assert.strictEqual(operation.mainError(), error);
-      finalCallback();
-    });
-  };
-
-  fn();
-})();
-
-(function testStop() {
-  var error = new Error('some error');
-  var operation = retry.operation([1, 2, 3]);
-  var attempts = 0;
-
-  var finalCallback = fake.callback('finalCallback');
-  fake.expectAnytime(finalCallback);
-
-  var fn = function() {
-    operation.attempt(function(currentAttempt) {
-      attempts++;
-      assert.equal(currentAttempt, attempts);
-
-      if (attempts === 2) {
-        operation.stop();
-
-        assert.strictEqual(attempts, 2);
-        assert.strictEqual(operation.attempts(), attempts);
-        assert.strictEqual(operation.mainError(), error);
-        finalCallback();
-      }
-
-      if (operation.retry(error)) {
-        return;
-      }
-    });
-  };
-
-  fn();
-})();
-
-(function testMaxRetryTime() {
-  var error = new Error('some error');
-  var maxRetryTime = 30;
-  var operation = retry.operation({
-      minTimeout: 1,
-      maxRetryTime: maxRetryTime
-  });
-  var attempts = 0;
-
-  var finalCallback = fake.callback('finalCallback');
-  fake.expectAnytime(finalCallback);
-
-  var longAsyncFunction = function (wait, callback){
-    setTimeout(callback, wait);
-  };
-
-  var fn = function() {
-    var startTime = new Date().getTime();
-    operation.attempt(function(currentAttempt) {
-      attempts++;
-      assert.equal(currentAttempt, attempts);
-
-      if (attempts !== 2) {
-        if (operation.retry(error)) {
-            return;
-        }
-      } else {
-        var curTime = new Date().getTime();
-        longAsyncFunction(maxRetryTime - (curTime - startTime - 1), function(){
-          if (operation.retry(error)) {
-            assert.fail('timeout should be occurred');
-            return;
-          }
-
-          assert.strictEqual(operation.mainError(), error);
-          finalCallback();
-        });
-      }
-    });
-  };
-
-  fn();
-})();
diff --git a/deps/npm/node_modules/retry/test/integration/test-retry-wrap.js b/deps/npm/node_modules/retry/test/integration/test-retry-wrap.js
deleted file mode 100644
index 3d2b6bfa6436d2..00000000000000
--- a/deps/npm/node_modules/retry/test/integration/test-retry-wrap.js
+++ /dev/null
@@ -1,101 +0,0 @@
-var common = require('../common');
-var assert = common.assert;
-var fake = common.fake.create();
-var retry = require(common.dir.lib + '/retry');
-
-function getLib() {
-  return {
-    fn1: function() {},
-    fn2: function() {},
-    fn3: function() {}
-  };
-}
-
-(function wrapAll() {
-  var lib = getLib();
-  retry.wrap(lib);
-  assert.equal(lib.fn1.name, 'bound retryWrapper');
-  assert.equal(lib.fn2.name, 'bound retryWrapper');
-  assert.equal(lib.fn3.name, 'bound retryWrapper');
-}());
-
-(function wrapAllPassOptions() {
-  var lib = getLib();
-  retry.wrap(lib, {retries: 2});
-  assert.equal(lib.fn1.name, 'bound retryWrapper');
-  assert.equal(lib.fn2.name, 'bound retryWrapper');
-  assert.equal(lib.fn3.name, 'bound retryWrapper');
-  assert.equal(lib.fn1.options.retries, 2);
-  assert.equal(lib.fn2.options.retries, 2);
-  assert.equal(lib.fn3.options.retries, 2);
-}());
-
-(function wrapDefined() {
-  var lib = getLib();
-  retry.wrap(lib, ['fn2', 'fn3']);
-  assert.notEqual(lib.fn1.name, 'bound retryWrapper');
-  assert.equal(lib.fn2.name, 'bound retryWrapper');
-  assert.equal(lib.fn3.name, 'bound retryWrapper');
-}());
-
-(function wrapDefinedAndPassOptions() {
-  var lib = getLib();
-  retry.wrap(lib, {retries: 2}, ['fn2', 'fn3']);
-  assert.notEqual(lib.fn1.name, 'bound retryWrapper');
-  assert.equal(lib.fn2.name, 'bound retryWrapper');
-  assert.equal(lib.fn3.name, 'bound retryWrapper');
-  assert.equal(lib.fn2.options.retries, 2);
-  assert.equal(lib.fn3.options.retries, 2);
-}());
-
-(function runWrappedWithoutError() {
-  var callbackCalled;
-  var lib = {method: function(a, b, callback) {
-    assert.equal(a, 1);
-    assert.equal(b, 2);
-    assert.equal(typeof callback, 'function');
-    callback();
-  }};
-  retry.wrap(lib);
-  lib.method(1, 2, function() {
-    callbackCalled = true;
-  });
-  assert.ok(callbackCalled);
-}());
-
-(function runWrappedSeveralWithoutError() {
-  var callbacksCalled = 0;
-  var lib = {
-    fn1: function (a, callback) {
-      assert.equal(a, 1);
-      assert.equal(typeof callback, 'function');
-      callback();
-    },
-    fn2: function (a, callback) {
-      assert.equal(a, 2);
-      assert.equal(typeof callback, 'function');
-      callback();
-    }
-  };
-  retry.wrap(lib, {}, ['fn1', 'fn2']);
-  lib.fn1(1, function() {
-    callbacksCalled++;
-  });
-  lib.fn2(2, function() {
-    callbacksCalled++;
-  });
-  assert.equal(callbacksCalled, 2);
-}());
-
-(function runWrappedWithError() {
-  var callbackCalled;
-  var lib = {method: function(callback) {
-    callback(new Error('Some error'));
-  }};
-  retry.wrap(lib, {retries: 1});
-  lib.method(function(err) {
-    callbackCalled = true;
-    assert.ok(err instanceof Error);
-  });
-  assert.ok(!callbackCalled);
-}());
diff --git a/deps/npm/node_modules/retry/test/integration/test-timeouts.js b/deps/npm/node_modules/retry/test/integration/test-timeouts.js
deleted file mode 100644
index 7206b0fb0b01d0..00000000000000
--- a/deps/npm/node_modules/retry/test/integration/test-timeouts.js
+++ /dev/null
@@ -1,69 +0,0 @@
-var common = require('../common');
-var assert = common.assert;
-var retry = require(common.dir.lib + '/retry');
-
-(function testDefaultValues() {
-  var timeouts = retry.timeouts();
-
-  assert.equal(timeouts.length, 10);
-  assert.equal(timeouts[0], 1000);
-  assert.equal(timeouts[1], 2000);
-  assert.equal(timeouts[2], 4000);
-})();
-
-(function testDefaultValuesWithRandomize() {
-  var minTimeout = 5000;
-  var timeouts = retry.timeouts({
-    minTimeout: minTimeout,
-    randomize: true
-  });
-
-  assert.equal(timeouts.length, 10);
-  assert.ok(timeouts[0] > minTimeout);
-  assert.ok(timeouts[1] > timeouts[0]);
-  assert.ok(timeouts[2] > timeouts[1]);
-})();
-
-(function testPassedTimeoutsAreUsed() {
-  var timeoutsArray = [1000, 2000, 3000];
-  var timeouts = retry.timeouts(timeoutsArray);
-  assert.deepEqual(timeouts, timeoutsArray);
-  assert.notStrictEqual(timeouts, timeoutsArray);
-})();
-
-(function testTimeoutsAreWithinBoundaries() {
-  var minTimeout = 1000;
-  var maxTimeout = 10000;
-  var timeouts = retry.timeouts({
-    minTimeout: minTimeout,
-    maxTimeout: maxTimeout
-  });
-  for (var i = 0; i < timeouts; i++) {
-    assert.ok(timeouts[i] >= minTimeout);
-    assert.ok(timeouts[i] <= maxTimeout);
-  }
-})();
-
-(function testTimeoutsAreIncremental() {
-  var timeouts = retry.timeouts();
-  var lastTimeout = timeouts[0];
-  for (var i = 0; i < timeouts; i++) {
-    assert.ok(timeouts[i] > lastTimeout);
-    lastTimeout = timeouts[i];
-  }
-})();
-
-(function testTimeoutsAreIncrementalForFactorsLessThanOne() {
-  var timeouts = retry.timeouts({
-    retries: 3,
-    factor: 0.5
-  });
-
-  var expected = [250, 500, 1000];
-  assert.deepEqual(expected, timeouts);
-})();
-
-(function testRetries() {
-  var timeouts = retry.timeouts({retries: 2});
-  assert.strictEqual(timeouts.length, 2);
-})();
diff --git a/deps/npm/node_modules/unique-filename/LICENSE b/deps/npm/node_modules/unique-filename/LICENSE
deleted file mode 100644
index 69619c125ea7ef..00000000000000
--- a/deps/npm/node_modules/unique-filename/LICENSE
+++ /dev/null
@@ -1,5 +0,0 @@
-Copyright npm, Inc
-
-Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/unique-filename/lib/index.js b/deps/npm/node_modules/unique-filename/lib/index.js
deleted file mode 100644
index d067d2e709809a..00000000000000
--- a/deps/npm/node_modules/unique-filename/lib/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var path = require('path')
-
-var uniqueSlug = require('unique-slug')
-
-module.exports = function (filepath, prefix, uniq) {
-  return path.join(filepath, (prefix ? prefix + '-' : '') + uniqueSlug(uniq))
-}
diff --git a/deps/npm/node_modules/unique-filename/package.json b/deps/npm/node_modules/unique-filename/package.json
deleted file mode 100644
index 57892db1fc2c6c..00000000000000
--- a/deps/npm/node_modules/unique-filename/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "name": "unique-filename",
-  "version": "5.0.0",
-  "description": "Generate a unique filename for use in temporary directories or caches.",
-  "main": "lib/index.js",
-  "scripts": {
-    "test": "tap",
-    "lint": "npm run eslint",
-    "postlint": "template-oss-check",
-    "template-oss-apply": "template-oss-apply --force",
-    "lintfix": "npm run eslint -- --fix",
-    "snap": "tap",
-    "posttest": "npm run lint",
-    "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/npm/unique-filename.git"
-  },
-  "keywords": [],
-  "author": "GitHub Inc.",
-  "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/iarna/unique-filename/issues"
-  },
-  "homepage": "https://github.com/iarna/unique-filename",
-  "devDependencies": {
-    "@npmcli/eslint-config": "^5.0.0",
-    "@npmcli/template-oss": "4.27.1",
-    "tap": "^16.3.0"
-  },
-  "dependencies": {
-    "unique-slug": "^6.0.0"
-  },
-  "files": [
-    "bin/",
-    "lib/"
-  ],
-  "engines": {
-    "node": "^20.17.0 || >=22.9.0"
-  },
-  "templateOSS": {
-    "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
-    "version": "4.27.1",
-    "publish": true
-  },
-  "tap": {
-    "nyc-arg": [
-      "--exclude",
-      "tap-snapshots/**"
-    ]
-  }
-}
diff --git a/deps/npm/node_modules/unique-slug/LICENSE b/deps/npm/node_modules/unique-slug/LICENSE
deleted file mode 100644
index 7953647e7760b8..00000000000000
--- a/deps/npm/node_modules/unique-slug/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright npm, Inc
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/unique-slug/lib/index.js b/deps/npm/node_modules/unique-slug/lib/index.js
deleted file mode 100644
index 1bac84d95d7307..00000000000000
--- a/deps/npm/node_modules/unique-slug/lib/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict'
-var MurmurHash3 = require('imurmurhash')
-
-module.exports = function (uniq) {
-  if (uniq) {
-    var hash = new MurmurHash3(uniq)
-    return ('00000000' + hash.result().toString(16)).slice(-8)
-  } else {
-    return (Math.random().toString(16) + '0000000').slice(2, 10)
-  }
-}
diff --git a/deps/npm/node_modules/unique-slug/package.json b/deps/npm/node_modules/unique-slug/package.json
deleted file mode 100644
index 88df517c0335e6..00000000000000
--- a/deps/npm/node_modules/unique-slug/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  "name": "unique-slug",
-  "version": "6.0.0",
-  "description": "Generate a unique character string suitible for use in files and URLs.",
-  "main": "lib/index.js",
-  "scripts": {
-    "test": "tap",
-    "lint": "npm run eslint",
-    "postlint": "template-oss-check",
-    "template-oss-apply": "template-oss-apply --force",
-    "lintfix": "npm run eslint -- --fix",
-    "snap": "tap",
-    "posttest": "npm run lint",
-    "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
-  },
-  "keywords": [],
-  "author": "GitHub Inc.",
-  "license": "ISC",
-  "devDependencies": {
-    "@npmcli/eslint-config": "^5.0.0",
-    "@npmcli/template-oss": "4.27.1",
-    "tap": "^16.3.0"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/npm/unique-slug.git"
-  },
-  "dependencies": {
-    "imurmurhash": "^0.1.4"
-  },
-  "files": [
-    "bin/",
-    "lib/"
-  ],
-  "engines": {
-    "node": "^20.17.0 || >=22.9.0"
-  },
-  "templateOSS": {
-    "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
-    "version": "4.27.1",
-    "publish": true
-  },
-  "tap": {
-    "nyc-arg": [
-      "--exclude",
-      "tap-snapshots/**"
-    ]
-  }
-}
diff --git a/deps/npm/package.json b/deps/npm/package.json
index 45209901d7928f..022dfee6f4bd91 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,5 +1,5 @@
 {
-  "version": "11.11.1",
+  "version": "11.12.1",
   "name": "npm",
   "description": "a package manager for JavaScript",
   "workspaces": [
@@ -52,8 +52,8 @@
   },
   "dependencies": {
     "@isaacs/string-locale-compare": "^1.1.0",
-    "@npmcli/arborist": "^9.4.1",
-    "@npmcli/config": "^10.7.1",
+    "@npmcli/arborist": "^9.4.2",
+    "@npmcli/config": "^10.8.1",
     "@npmcli/fs": "^5.0.0",
     "@npmcli/map-workspaces": "^5.0.3",
     "@npmcli/metavuln-calculator": "^9.0.3",
@@ -61,10 +61,10 @@
     "@npmcli/promise-spawn": "^9.0.1",
     "@npmcli/redact": "^4.0.0",
     "@npmcli/run-script": "^10.0.4",
-    "@sigstore/tuf": "^4.0.1",
+    "@sigstore/tuf": "^4.0.2",
     "abbrev": "^4.0.0",
     "archy": "~1.0.0",
-    "cacache": "^20.0.3",
+    "cacache": "^20.0.4",
     "chalk": "^5.6.2",
     "ci-info": "^4.4.0",
     "fastest-levenshtein": "^1.0.16",
@@ -77,16 +77,16 @@
     "is-cidr": "^6.0.3",
     "json-parse-even-better-errors": "^5.0.0",
     "libnpmaccess": "^10.0.3",
-    "libnpmdiff": "^8.1.4",
-    "libnpmexec": "^10.2.4",
-    "libnpmfund": "^7.0.18",
+    "libnpmdiff": "^8.1.5",
+    "libnpmexec": "^10.2.5",
+    "libnpmfund": "^7.0.19",
     "libnpmorg": "^8.0.1",
-    "libnpmpack": "^9.1.4",
+    "libnpmpack": "^9.1.5",
     "libnpmpublish": "^11.1.3",
     "libnpmsearch": "^9.0.1",
     "libnpmteam": "^8.0.2",
     "libnpmversion": "^8.0.3",
-    "make-fetch-happen": "^15.0.4",
+    "make-fetch-happen": "^15.0.5",
     "minimatch": "^10.2.4",
     "minipass": "^7.1.3",
     "minipass-pipeline": "^1.2.4",
diff --git a/deps/npm/tap-snapshots/test/lib/commands/audit.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/audit.js.test.cjs
index 843cf7c8dd3708..3a4cec0d6cead6 100644
--- a/deps/npm/tap-snapshots/test/lib/commands/audit.js.test.cjs
+++ b/deps/npm/tap-snapshots/test/lib/commands/audit.js.test.cjs
@@ -305,6 +305,7 @@ audited 1 package in xxx
 1 package has a verified registry signature
 
 1 package has a verified attestation
+(use --json --include-attestations to view attestation details)
 `
 
 exports[`test/lib/commands/audit.js TAP audit signatures with valid signatures > must match snapshot 1`] = `
diff --git a/deps/npm/tap-snapshots/test/lib/commands/config.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/config.js.test.cjs
index bae0cc8ede3947..6617b3a0827f76 100644
--- a/deps/npm/tap-snapshots/test/lib/commands/config.js.test.cjs
+++ b/deps/npm/tap-snapshots/test/lib/commands/config.js.test.cjs
@@ -72,6 +72,7 @@ exports[`test/lib/commands/config.js TAP config list --json > output matches sna
   "include": [],
   "include-staged": false,
   "include-workspace-root": false,
+  "include-attestations": false,
   "init-author-email": "",
   "init-author-name": "",
   "init-author-url": "",
@@ -248,6 +249,7 @@ https-proxy = null
 if-present = false
 ignore-scripts = false
 include = []
+include-attestations = false
 include-staged = false
 include-workspace-root = false
 init-author-email = ""
diff --git a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
index f04c0868ce8823..dbdcba2d7c3218 100644
--- a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
+++ b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
@@ -821,6 +821,18 @@ the order in which omit/include are specified on the command-line.
 
 
 
+#### \`include-attestations\`
+
+* Default: false
+* Type: Boolean
+
+When used with \`npm audit signatures --json\`, includes the full sigstore
+attestation bundles in the JSON output for each verified package. The
+bundles contain DSSE envelopes, verification material, and transparency log
+entries.
+
+
+
 #### \`include-staged\`
 
 * Default: false
@@ -1137,6 +1149,8 @@ of a relative number of days.
 
 This config cannot be used with: \`before\`
 
+This value is not exported to the environment for child processes.
+
 #### \`name\`
 
 * Default: null
@@ -2302,6 +2316,7 @@ Array [
   "include",
   "include-staged",
   "include-workspace-root",
+  "include-attestations",
   "init-author-email",
   "init-author-name",
   "init-author-url",
@@ -2476,6 +2491,7 @@ Array [
   "include",
   "include-staged",
   "include-workspace-root",
+  "include-attestations",
   "init-private",
   "install-links",
   "install-strategy",
@@ -2643,6 +2659,7 @@ Object {
   "httpsProxy": null,
   "ifPresent": false,
   "ignoreScripts": false,
+  "includeAttestations": false,
   "includeStaged": false,
   "includeWorkspaceRoot": false,
   "initPrivate": false,
@@ -2869,7 +2886,7 @@ Options:
 [--json] [--package-lock-only] [--no-package-lock]
 [--omit <dev|optional|peer> [--omit <dev|optional|peer> ...]]
 [--include <prod|dev|optional|peer> [--include <prod|dev|optional|peer> ...]]
-[--foreground-scripts] [--ignore-scripts]
+[--foreground-scripts] [--ignore-scripts] [--include-attestations]
 [-w|--workspace <workspace-name> [-w|--workspace <workspace-name> ...]]
 [--workspaces] [--include-workspace-root] [--install-links]
 
@@ -2903,6 +2920,9 @@ Options:
   --ignore-scripts
     If true, npm does not run scripts specified in package.json files.
 
+  --include-attestations
+    When used with \`npm audit signatures --json\`, includes the full
+
   -w|--workspace
     Enable running a command in the context of the configured workspaces of the
 
@@ -2932,6 +2952,7 @@ npm audit [fix|signatures]
 #### \`include\`
 #### \`foreground-scripts\`
 #### \`ignore-scripts\`
+#### \`include-attestations\`
 #### \`workspace\`
 #### \`workspaces\`
 #### \`include-workspace-root\`
@@ -5808,10 +5829,6 @@ Run "npm trust <subcommand> --help" for more info on a subcommand.
 
 Run "npm help trust" for more info
 
-\`\`\`bash
-
-\`\`\`
-
 Note: This command is unaware of workspaces.
 
 #### Synopsis
diff --git a/deps/npm/tap-snapshots/test/lib/utils/explain-dep.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/explain-dep.js.test.cjs
index 34620d5c749bc0..60fca466bb43f2 100644
--- a/deps/npm/tap-snapshots/test/lib/utils/explain-dep.js.test.cjs
+++ b/deps/npm/tap-snapshots/test/lib/utils/explain-dep.js.test.cjs
@@ -5,6 +5,28 @@
  * Make sure to inspect the output below.  Do not ignore changes!
  */
 'use strict'
+exports[`test/lib/utils/explain-dep.js TAP basic > circular dependency does not recurse infinitely 1`] = `
+cycle-a@1.0.0
+node_modules/cycle-a
+  cycle-a@"1.x" from cycle-b@2.0.0
+  node_modules/cycle-b
+    cycle-b@"2.x" from cycle-a@1.0.0
+    node_modules/cycle-a
+      cycle-a@"1.x" from cycle-b@2.0.0
+      node_modules/cycle-b
+`
+
+exports[`test/lib/utils/explain-dep.js TAP basic > circular dependency from other side 1`] = `
+cycle-b@2.0.0
+node_modules/cycle-b
+  cycle-b@"2.x" from cycle-a@1.0.0
+  node_modules/cycle-a
+    cycle-a@"1.x" from cycle-b@2.0.0
+    node_modules/cycle-b
+      cycle-b@"2.x" from cycle-a@1.0.0
+      node_modules/cycle-a
+`
+
 exports[`test/lib/utils/explain-dep.js TAP basic > ellipses test one 1`] = `
 manydep@1.0.0
   manydep@"1.0.0" from prod-dep@1.2.3
@@ -21,6 +43,11 @@ manydep@1.0.0
   6 more (optdep, extra-neos, deep-dev, peer, the root project, a package with a pretty long name)
 `
 
+exports[`test/lib/utils/explain-dep.js TAP basic > explainEdge without seen parameter 1`] = `
+some-dep@"1.x" from parent-pkg@2.0.0
+node_modules/parent-pkg
+`
+
 exports[`test/lib/utils/explain-dep.js TAP basic bundled > explain color deep 1`] = `
 bundle-of-joy@1.0.0 bundled
 node_modules/bundle-of-joy
diff --git a/deps/npm/test/lib/commands/audit.js b/deps/npm/test/lib/commands/audit.js
index 4103ff8dec8c16..04d09f1aee4695 100644
--- a/deps/npm/test/lib/commands/audit.js
+++ b/deps/npm/test/lib/commands/audit.js
@@ -1850,9 +1850,99 @@ t.test('audit signatures', async t => {
 
     t.notOk(process.exitCode, 'should exit successfully')
     t.match(joinedOutput(), /1 package has a verified attestation/)
+    t.match(joinedOutput(), /use --json --include-attestations to view attestation details/)
     t.matchSnapshot(joinedOutput())
   })
 
+  t.test('with valid attestations and --include-attestations (human-readable)', async t => {
+    const { npm, joinedOutput } = await loadMockNpm(t, {
+      prefixDir: installWithValidAttestations,
+      config: {
+        'include-attestations': true,
+      },
+      mocks: {
+        pacote: t.mock('pacote', {
+          sigstore: { verify: async () => true },
+        }),
+      },
+    })
+    const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') })
+    await manifestWithValidAttestations({ registry })
+    const fixture = fs.readFileSync(
+      path.resolve(__dirname, '../../fixtures/sigstore/valid-sigstore-attestations.json'),
+      'utf8'
+    )
+    registry.nock.get('/-/npm/v1/attestations/sigstore@1.0.0').reply(200, fixture)
+    mockTUF({ npm, target: TUF_VALID_KEYS_TARGET })
+
+    await npm.exec('audit', ['signatures'])
+
+    t.notOk(process.exitCode, 'should exit successfully')
+    t.match(joinedOutput(), /1 package has a verified attestation/)
+    t.notMatch(joinedOutput(), /use --json --include-attestations to view attestation details/)
+  })
+
+  t.test('with valid attestations --json --include-attestations', async t => {
+    const { npm, joinedOutput } = await loadMockNpm(t, {
+      prefixDir: installWithValidAttestations,
+      config: {
+        json: true,
+        'include-attestations': true,
+      },
+      mocks: {
+        pacote: t.mock('pacote', {
+          sigstore: { verify: async () => true },
+        }),
+      },
+    })
+    const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') })
+    await manifestWithValidAttestations({ registry })
+    const fixture = fs.readFileSync(
+      path.resolve(__dirname, '../../fixtures/sigstore/valid-sigstore-attestations.json'),
+      'utf8'
+    )
+    registry.nock.get('/-/npm/v1/attestations/sigstore@1.0.0').reply(200, fixture)
+    mockTUF({ npm, target: TUF_VALID_KEYS_TARGET })
+
+    await npm.exec('audit', ['signatures'])
+
+    t.notOk(process.exitCode, 'should exit successfully')
+    const jsonOutput = JSON.parse(joinedOutput())
+    t.ok(jsonOutput.verified, 'should include verified array')
+    t.equal(jsonOutput.verified.length, 1, 'should have one verified package')
+    t.equal(jsonOutput.verified[0].name, 'sigstore', 'should have correct package name')
+    t.equal(jsonOutput.verified[0].version, '1.0.0', 'should have correct version')
+    t.ok(jsonOutput.verified[0].attestations, 'should include attestations')
+  })
+
+  t.test('with valid attestations --json without --include-attestations', async t => {
+    const { npm, joinedOutput } = await loadMockNpm(t, {
+      prefixDir: installWithValidAttestations,
+      config: {
+        json: true,
+      },
+      mocks: {
+        pacote: t.mock('pacote', {
+          sigstore: { verify: async () => true },
+        }),
+      },
+    })
+    const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') })
+    await manifestWithValidAttestations({ registry })
+    const fixture = fs.readFileSync(
+      path.resolve(__dirname, '../../fixtures/sigstore/valid-sigstore-attestations.json'),
+      'utf8'
+    )
+    registry.nock.get('/-/npm/v1/attestations/sigstore@1.0.0').reply(200, fixture)
+    mockTUF({ npm, target: TUF_VALID_KEYS_TARGET })
+
+    await npm.exec('audit', ['signatures'])
+
+    t.notOk(process.exitCode, 'should exit successfully')
+    const jsonOutput = JSON.parse(joinedOutput())
+    t.notOk(jsonOutput.verified, 'should not include verified array')
+  })
+
   t.test('with keyless attestations and no registry keys', async t => {
     const { npm, joinedOutput } = await loadMockNpm(t, {
       prefixDir: installWithValidAttestations,
diff --git a/deps/npm/test/lib/utils/explain-dep.js b/deps/npm/test/lib/utils/explain-dep.js
index a90c0e90d5da63..2a9a93f2b529e3 100644
--- a/deps/npm/test/lib/utils/explain-dep.js
+++ b/deps/npm/test/lib/utils/explain-dep.js
@@ -1,6 +1,6 @@
 const { resolve } = require('node:path')
 const t = require('tap')
-const { explainNode, printNode } = require('../../../lib/utils/explain-dep.js')
+const { explainNode, printNode, explainEdge } = require('../../../lib/utils/explain-dep.js')
 const { cleanCwd } = require('../../fixtures/clean-snapshot')
 
 t.cleanSnapshot = (str) => cleanCwd(str)
@@ -268,6 +268,47 @@ t.test('basic', async t => {
     })
   }
 
+  // Regression test for https://github.com/npm/cli/issues/9109
+  // Circular dependency graphs (common in linked strategy store nodes) should not cause infinite recursion in explainNode.
+  const cycleA = {
+    name: 'cycle-a',
+    version: '1.0.0',
+    location: 'node_modules/cycle-a',
+    dependents: [],
+  }
+  const cycleB = {
+    name: 'cycle-b',
+    version: '2.0.0',
+    location: 'node_modules/cycle-b',
+    dependents: [{
+      type: 'prod',
+      name: 'cycle-b',
+      spec: '2.x',
+      from: cycleA,
+    }],
+  }
+  cycleA.dependents = [{
+    type: 'prod',
+    name: 'cycle-a',
+    spec: '1.x',
+    from: cycleB,
+  }]
+  t.matchSnapshot(explainNode(cycleA, Infinity, noColor), 'circular dependency does not recurse infinitely')
+  t.matchSnapshot(explainNode(cycleB, Infinity, noColor), 'circular dependency from other side')
+
+  // explainEdge called without seen parameter (covers default seen = new Set() branch on explainEdge and explainFrom)
+  t.matchSnapshot(explainEdge({
+    type: 'prod',
+    name: 'some-dep',
+    spec: '1.x',
+    from: {
+      name: 'parent-pkg',
+      version: '2.0.0',
+      location: 'node_modules/parent-pkg',
+      dependents: [],
+    },
+  }, 2, noColor), 'explainEdge without seen parameter')
+
   // make sure that we show the last one if it's the only one that would
   // hit the ...
   cases.manyDeps.dependents.pop()

From a416ddf6d949536cbf5fe1a1a3c8765b6af8c290 Mon Sep 17 00:00:00 2001
From: Richard Lau <richard.lau@ibm.com>
Date: Sat, 28 Mar 2026 22:57:44 +0000
Subject: [PATCH 238/267] deps: V8: cherry-pick cf1bce40a5ef

Original commit message:

    [wasm] Fix S128Const on big endian

    Since http://crrev.com/c/2944437 globals are no longer little endian
    enforced.

    S128Const handling in the initializer needs to take this into account
    and byte reverse values which are hard coded in little endian order.

    This is currently causing failures on Node.js upstream:
    https://github.com/nodejs/node/pull/59034#issuecomment-4129144461

    Change-Id: Ifcc9ade93ee51565ab19b16e9dadf0ff5752f7a6
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7704213
    Commit-Queue: Milad Farazmand <mfarazma@ibm.com>
    Reviewed-by: Manos Koukoutos <manoskouk@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#106082}

Refs: https://github.com/v8/v8/commit/cf1bce40a5ef4c7c1da351754f5bf526c0c96463
PR-URL: https://github.com/nodejs/node/pull/62449
Refs: https://github.com/v8/v8/commit/cf1bce40a5ef4c7c1da351754f5bf526c0c96463
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 deps/v8/src/wasm/constant-expression-interface.cc | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/deps/v8/src/wasm/constant-expression-interface.cc b/deps/v8/src/wasm/constant-expression-interface.cc
index b06009f4a9265f..01d07dd889f904 100644
--- a/deps/v8/src/wasm/constant-expression-interface.cc
+++ b/deps/v8/src/wasm/constant-expression-interface.cc
@@ -40,7 +40,17 @@ void ConstantExpressionInterface::S128Const(FullDecoder* decoder,
                                             const Simd128Immediate& imm,
                                             Value* result) {
   if (!generate_value()) return;
+#if V8_TARGET_BIG_ENDIAN
+  // Globals are not little endian enforced, they use native byte order and we
+  // need to reverse the bytes on big endian platforms.
+  uint8_t value[kSimd128Size];
+  for (int i = 0; i < kSimd128Size; i++) {
+    value[i] = imm.value[kSimd128Size - 1 - i];
+  }
+  result->runtime_value = WasmValue(value, kWasmS128);
+#else
   result->runtime_value = WasmValue(imm.value, kWasmS128);
+#endif
 }
 
 void ConstantExpressionInterface::UnOp(FullDecoder* decoder, WasmOpcode opcode,

From cd84af747b8317c990d8110b75cb2a6187c21f8d Mon Sep 17 00:00:00 2001
From: Mert Can Altin <mertgold60@gmail.com>
Date: Sun, 29 Mar 2026 14:56:01 +0300
Subject: [PATCH 239/267] src: handle null backing store in
 ArrayBufferViewContents::Read
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fixes: https://github.com/nodejs/node/issues/62342

src: handle null backing store in ArrayBufferViewContents::Read
PR-URL: https://github.com/nodejs/node/pull/62343
Fixes: https://github.com/nodejs/node/issues/62342
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
---
 src/util-inl.h                             |  4 +++-
 test/parallel/test-crypto-authenticated.js | 23 ++++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/src/util-inl.h b/src/util-inl.h
index c71c95656c0e76..f42c7b1250d1eb 100644
--- a/src/util-inl.h
+++ b/src/util-inl.h
@@ -591,7 +591,9 @@ void ArrayBufferViewContents<T, S>::Read(v8::Local<v8::ArrayBufferView> abv) {
   static_assert(sizeof(T) == 1, "Only supports one-byte data at the moment");
   length_ = abv->ByteLength();
   if (length_ > sizeof(stack_storage_) || abv->HasBuffer()) {
-    data_ = static_cast<T*>(abv->Buffer()->Data()) + abv->ByteOffset();
+    auto buf_data = abv->Buffer()->Data();
+    data_ = buf_data != nullptr ? static_cast<T*>(buf_data) + abv->ByteOffset()
+                                : stack_storage_;
   } else {
     abv->CopyContents(stack_storage_, sizeof(stack_storage_));
     data_ = stack_storage_;
diff --git a/test/parallel/test-crypto-authenticated.js b/test/parallel/test-crypto-authenticated.js
index e8fedf2d5d5072..9778ea548e81d7 100644
--- a/test/parallel/test-crypto-authenticated.js
+++ b/test/parallel/test-crypto-authenticated.js
@@ -772,3 +772,26 @@ for (const test of TEST_CASES) {
     decipher.final();
   }, /Unsupported state or unable to authenticate data/);
 }
+
+// Refs: https://github.com/nodejs/node/issues/62342
+{
+  const key = crypto.randomBytes(16);
+  const nonce = crypto.randomBytes(13);
+
+  const cipher = crypto.createCipheriv('aes-128-ccm', key, nonce, {
+    authTagLength: 16,
+  });
+  cipher.setAAD(Buffer.alloc(0), { plaintextLength: 0 });
+  cipher.update(new DataView(new ArrayBuffer(0)));
+  cipher.final();
+  const tag = cipher.getAuthTag();
+  assert.strictEqual(tag.length, 16);
+
+  const decipher = crypto.createDecipheriv('aes-128-ccm', key, nonce, {
+    authTagLength: 16,
+  });
+  decipher.setAuthTag(tag);
+  decipher.setAAD(Buffer.alloc(0), { plaintextLength: 0 });
+  decipher.update(new DataView(new ArrayBuffer(0)));
+  decipher.final();
+}

From 1dbf3bedbecbad9e8a11aa5327c958fca4b67bf2 Mon Sep 17 00:00:00 2001
From: Filip Skokan <panva.ip@gmail.com>
Date: Sun, 29 Mar 2026 21:21:21 +0200
Subject: [PATCH 240/267] src: improve EC JWK import performance

PR-URL: https://github.com/nodejs/node/pull/62396
Reviewed-By: James M Snell <jasnell@gmail.com>
---
 deps/ncrypto/ncrypto.cc | 34 ++++++++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/deps/ncrypto/ncrypto.cc b/deps/ncrypto/ncrypto.cc
index 87a6b7a3501e4d..3e3e8d4720a456 100644
--- a/deps/ncrypto/ncrypto.cc
+++ b/deps/ncrypto/ncrypto.cc
@@ -3538,8 +3538,38 @@ bool ECKeyPointer::setPublicKey(const ECPointPointer& pub) {
 bool ECKeyPointer::setPublicKeyRaw(const BignumPointer& x,
                                    const BignumPointer& y) {
   if (!key_) return false;
-  return EC_KEY_set_public_key_affine_coordinates(
-             key_.get(), x.get(), y.get()) == 1;
+  const EC_GROUP* group = EC_KEY_get0_group(key_.get());
+  if (group == nullptr) return false;
+
+  // For curves with cofactor h=1, use EC_POINT_oct2point +
+  // EC_KEY_set_public_key instead of EC_KEY_set_public_key_affine_coordinates.
+  // The latter internally calls EC_KEY_check_key() which performs a scalar
+  // multiplication (n*Q) for order validation — redundant when h=1 since every
+  // on-curve point already has order n. EC_POINT_oct2point validates the point
+  // is on the curve, which is sufficient. For curves with h!=1, fall back to
+  // the full check.
+  auto cofactor = BignumPointer::New();
+  if (!cofactor || !EC_GROUP_get_cofactor(group, cofactor.get(), nullptr) ||
+      !cofactor.isOne()) {
+    return EC_KEY_set_public_key_affine_coordinates(
+               key_.get(), x.get(), y.get()) == 1;
+  }
+
+  // Field element byte length: ceil(degree_bits / 8).
+  size_t field_len = (EC_GROUP_get_degree(group) + 7) / 8;
+  // Build an uncompressed point: 0x04 || x || y, each padded to field_len.
+  size_t uncompressed_len = 1 + 2 * field_len;
+  auto buf = DataPointer::Alloc(uncompressed_len);
+  if (!buf) return false;
+  unsigned char* ptr = static_cast<unsigned char*>(buf.get());
+  ptr[0] = POINT_CONVERSION_UNCOMPRESSED;
+  x.encodePaddedInto(ptr + 1, field_len);
+  y.encodePaddedInto(ptr + 1 + field_len, field_len);
+
+  auto point = ECPointPointer::New(group);
+  if (!point) return false;
+  if (!point.setFromBuffer({ptr, uncompressed_len}, group)) return false;
+  return EC_KEY_set_public_key(key_.get(), point.get()) == 1;
 }
 
 bool ECKeyPointer::setPrivateKey(const BignumPointer& priv) {

From 0897c6cc089a49c603e132fe3aa9cb466fee9464 Mon Sep 17 00:00:00 2001
From: James M Snell <jasnell@gmail.com>
Date: Sun, 29 Mar 2026 21:52:23 -0700
Subject: [PATCH 241/267] test: disable flaky WPT Blob test on AIX

The test Blob-array-buffer.any.js can be flaky on
AIX due to a recognized race condition in v8.

The failed assert is in deps/v8/src/base/platform/platform-aix.cc
on line 199, preceeded by the comment:

> If this check fails it's most likely due to a racing condition
> where another thread has mapped the same address right before we
> do. Since this could cause hard-to-debug issues, potentially with
> security impact, and we can't recover from this, the best we can do
> is abort the process.

Disabling the test on AIX until the underlying issue can
be resolved (if it can be resolved at all) is really the
only option currently.

Reliability Report: https://github.com/nodejs/reliability/blob/main/reports/2026-03-28.md
Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode/Opus 4.6
PR-URL: https://github.com/nodejs/node/pull/62470
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
---
 test/wpt/status/FileAPI/blob.cjs  | 59 +++++++++++++++++++++++++++++++
 test/wpt/status/FileAPI/blob.json | 38 --------------------
 2 files changed, 59 insertions(+), 38 deletions(-)
 create mode 100644 test/wpt/status/FileAPI/blob.cjs
 delete mode 100644 test/wpt/status/FileAPI/blob.json

diff --git a/test/wpt/status/FileAPI/blob.cjs b/test/wpt/status/FileAPI/blob.cjs
new file mode 100644
index 00000000000000..b59756abc70121
--- /dev/null
+++ b/test/wpt/status/FileAPI/blob.cjs
@@ -0,0 +1,59 @@
+'use strict';
+
+const os = require('node:os');
+
+// On AIX, V8's OS::DecommitPages() has an inherent race condition caused by
+// AIX's non-POSIX MAP_FIXED behavior. The implementation must munmap() then
+// mmap(), and another thread can steal the address range in between. The
+// Blob.arrayBuffer() tests trigger this by creating enough GC pressure
+// (especially the concurrent reads test) to hit the race window.
+// See deps/v8/src/base/platform/platform-aix.cc, lines 168-203.
+const isAIX = os.type() === 'AIX';
+
+const conditionalSkips = {};
+
+if (isAIX) {
+  conditionalSkips['Blob-array-buffer.any.js'] = {
+    skip: 'V8 DecommitPages race condition on AIX (munmap/mmap non-atomic)',
+  };
+}
+
+module.exports = {
+  ...conditionalSkips,
+  'Blob-constructor-dom.window.js': {
+    skip: 'Depends on DOM API',
+  },
+  'Blob-constructor.any.js': {
+    fail: {
+      expected: [
+        'blobParts not an object: boolean with Boolean.prototype[Symbol.iterator]',
+        'blobParts not an object: number with Number.prototype[Symbol.iterator]',
+        'blobParts not an object: BigInt with BigInt.prototype[Symbol.iterator]',
+        'blobParts not an object: Symbol with Symbol.prototype[Symbol.iterator]',
+        'Getters and value conversions should happen in order until an exception is thrown.',
+        'Arguments should be evaluated from left to right.',
+      ],
+      flaky: [
+        'Passing typed arrays as elements of the blobParts array should work.',
+        'Passing a Float16Array as element of the blobParts array should work.',
+        'Passing a Float64Array as element of the blobParts array should work.',
+        'Passing BigInt typed arrays as elements of the blobParts array should work.',
+      ],
+    },
+  },
+  'Blob-in-worker.worker.js': {
+    skip: 'Depends on Web Workers API',
+  },
+  'Blob-slice.any.js': {
+    fail: {
+      expected: [
+        'Slicing test: slice (1,1).',
+        'Slicing test: slice (1,3).',
+        'Slicing test: slice (1,5).',
+        'Slicing test: slice (1,7).',
+        'Slicing test: slice (1,8).',
+        'Slicing test: slice (1,9).',
+      ],
+    },
+  },
+};
diff --git a/test/wpt/status/FileAPI/blob.json b/test/wpt/status/FileAPI/blob.json
deleted file mode 100644
index a82a9cb0cfdb11..00000000000000
--- a/test/wpt/status/FileAPI/blob.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  "Blob-constructor-dom.window.js": {
-    "skip": "Depends on DOM API"
-  },
-  "Blob-constructor.any.js": {
-    "fail": {
-      "expected": [
-        "blobParts not an object: boolean with Boolean.prototype[Symbol.iterator]",
-        "blobParts not an object: number with Number.prototype[Symbol.iterator]",
-        "blobParts not an object: BigInt with BigInt.prototype[Symbol.iterator]",
-        "blobParts not an object: Symbol with Symbol.prototype[Symbol.iterator]",
-        "Getters and value conversions should happen in order until an exception is thrown.",
-        "Arguments should be evaluated from left to right."
-      ],
-      "flaky": [
-        "Passing typed arrays as elements of the blobParts array should work.",
-        "Passing a Float16Array as element of the blobParts array should work.",
-        "Passing a Float64Array as element of the blobParts array should work.",
-        "Passing BigInt typed arrays as elements of the blobParts array should work."
-      ]
-    }
-  },
-  "Blob-in-worker.worker.js": {
-    "skip": "Depends on Web Workers API"
-  },
-  "Blob-slice.any.js": {
-    "fail": {
-      "expected": [
-        "Slicing test: slice (1,1).",
-        "Slicing test: slice (1,3).",
-        "Slicing test: slice (1,5).",
-        "Slicing test: slice (1,7).",
-        "Slicing test: slice (1,8).",
-        "Slicing test: slice (1,9)."
-      ]
-    }
-  }
-}

From 111ba9bd5b085a9814a4f2f73f40eedb190ef977 Mon Sep 17 00:00:00 2001
From: Yuya Inoue <65857152+inoway46@users.noreply.github.com>
Date: Mon, 30 Mar 2026 13:52:33 +0900
Subject: [PATCH 242/267] test: wait for reattach before initial break on
 restart
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62471
Refs: https://github.com/nodejs/node/issues/61762
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
Reviewed-By: Kohei Ueno <kohei.ueno119@gmail.com>
---
 test/parallel/test-debugger-preserve-breaks.js        | 2 ++
 test/parallel/test-debugger-run-after-quit-restart.js | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/test/parallel/test-debugger-preserve-breaks.js b/test/parallel/test-debugger-preserve-breaks.js
index 7730039aed71b8..fc9411290a9bc8 100644
--- a/test/parallel/test-debugger-preserve-breaks.js
+++ b/test/parallel/test-debugger-preserve-breaks.js
@@ -29,6 +29,8 @@ const script = path.relative(process.cwd(), scriptFullPath);
     await cli.stepCommand('c'); // hit line 3
     assert.deepStrictEqual(cli.breakInfo, { filename: script, line: 3 });
     await cli.command('restart');
+    await cli.waitFor(/Debugger attached\./);
+    await cli.waitForPrompt();
     await cli.waitForInitialBreak();
     assert.deepStrictEqual(cli.breakInfo, { filename: script, line: 1 });
     await cli.stepCommand('c');
diff --git a/test/parallel/test-debugger-run-after-quit-restart.js b/test/parallel/test-debugger-run-after-quit-restart.js
index e5f6f86e53750c..397c25cceaff65 100644
--- a/test/parallel/test-debugger-run-after-quit-restart.js
+++ b/test/parallel/test-debugger-run-after-quit-restart.js
@@ -58,6 +58,8 @@ const path = require('path');
       );
     })
     .then(() => cli.command('restart'))
+    .then(() => cli.waitFor(/Debugger attached\./))
+    .then(() => cli.waitForPrompt())
     .then(() => cli.waitForInitialBreak())
     .then(() => {
       assert.deepStrictEqual(

From 90fab71a84f63f5d9b2d54da3dcf21a44639ea0c Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Mon, 30 Mar 2026 06:29:29 -0400
Subject: [PATCH 243/267] deps: update simdjson to 4.5.0

PR-URL: https://github.com/nodejs/node/pull/62382
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
---
 deps/simdjson/simdjson.cpp |  354 +++++-
 deps/simdjson/simdjson.h   | 2168 ++++++++++++++++++++++++++++++++----
 2 files changed, 2268 insertions(+), 254 deletions(-)

diff --git a/deps/simdjson/simdjson.cpp b/deps/simdjson/simdjson.cpp
index 0374b89f39c2d3..8f3305987681e6 100644
--- a/deps/simdjson/simdjson.cpp
+++ b/deps/simdjson/simdjson.cpp
@@ -1,4 +1,4 @@
-/* auto-generated on 2026-02-20 16:16:37 -0500. version 4.3.1 Do not edit! */
+/* auto-generated on 2026-03-25 17:25:37 -0400. version 4.5.0 Do not edit! */
 /* including simdjson.cpp:  */
 /* begin file simdjson.cpp */
 #define SIMDJSON_SRC_SIMDJSON_CPP
@@ -146,7 +146,6 @@
 #define SIMDJSON_CONSTEVAL 0
 #endif // defined(__cpp_consteval) && __cpp_consteval >= 201811L && defined(__cpp_lib_constexpr_string) && __cpp_lib_constexpr_string >= 201907L
 #endif // !defined(SIMDJSON_CONSTEVAL)
-
 #endif // SIMDJSON_COMPILER_CHECK_H
 /* end file simdjson/compiler_check.h */
 /* including simdjson/portability.h: #include "simdjson/portability.h" */
@@ -219,6 +218,25 @@ using std::size_t;
   #define SIMDJSON_IS_LASX 1 // We can always run both
 #elif defined(__loongarch_sx)
   #define SIMDJSON_IS_LSX 1
+
+// Adjust for runtime dispatching support.
+#if defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && !defined(__NVCOMPILER)
+#if __GNUC__ > 15 || (__GNUC__ == 15 && __GNUC_MINOR__ >= 0)
+  // We are ok, we will support runtime dispatch for LASX.
+#else
+  // We disable runtime dispatch for LASX, which means that we will not be able to use LASX
+  // even if it is supported by the hardware.
+  // Loongson users should update to GCC 15 or better.
+  #define SIMDJSON_IMPLEMENTATION_LASX 0
+#endif
+#else
+  // We are not using GCC, so we assume that we can support runtime dispatch for LASX.
+  // https://godbolt.org/z/jcMnrjYhs
+  #define SIMDJSON_IMPLEMENTATION_LASX 0
+#endif
+
+
+
 #endif
 #elif defined(__PPC64__) || defined(_M_PPC64)
 #define SIMDJSON_IS_PPC64 1
@@ -7290,6 +7308,12 @@ class dom_parser_implementation {
    */
   size_t _max_depth{0};
 
+public:
+  /** Whether to store big integers as strings instead of returning BIGINT_ERROR */
+  bool _number_as_string{false};
+
+protected:
+
   // Declaring these so that subclasses can use them to implement their constructors.
   simdjson_inline dom_parser_implementation() noexcept;
   simdjson_inline dom_parser_implementation(dom_parser_implementation &&other) noexcept;
@@ -7865,7 +7889,8 @@ enum class tape_type {
   DOUBLE = 'd',
   TRUE_VALUE = 't',
   FALSE_VALUE = 'f',
-  NULL_VALUE = 'n'
+  NULL_VALUE = 'n',
+  BIGINT = 'Z'  // Big integer stored as string in string buffer
 }; // enum class tape_type
 
 } // namespace internal
@@ -14160,6 +14185,9 @@ struct tape_writer {
   /** Write a double value to tape. */
   simdjson_inline void append_double(double value) noexcept;
 
+  /** Write a big integer (as string) to tape. src points to first digit, len is byte count. */
+  simdjson_inline void append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept;
+
   /**
    * Append a tape entry (an 8-bit type,and 56 bits worth of value).
    */
@@ -14243,6 +14271,18 @@ simdjson_inline void tape_writer::write(uint64_t &tape_loc, uint64_t val, intern
   tape_loc = val | ((uint64_t(char(t))) << 56);
 }
 
+simdjson_inline void tape_writer::append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept {
+  // Write to string buffer: [4-byte LE length][digits][null]
+  uint32_t str_len = uint32_t(len);
+  memcpy(string_buf, &str_len, sizeof(uint32_t));
+  memcpy(string_buf + sizeof(uint32_t), src, len);
+  string_buf[sizeof(uint32_t) + len] = 0;
+  // Tape entry: offset into string buffer
+  // The caller must set the offset relative to doc.string_buf base
+  append(0, internal::tape_type::BIGINT); // placeholder offset, caller patches
+  string_buf += sizeof(uint32_t) + len + 1;
+}
+
 } // namespace stage2
 } // unnamed namespace
 } // namespace arm64
@@ -15180,7 +15220,23 @@ simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_string(
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_number(json_iterator &iter, const uint8_t *value) noexcept {
   iter.log_value("number");
-  return numberparsing::parse_number(value, tape);
+  error_code err = numberparsing::parse_number(value, tape);
+  if (simdjson_unlikely(err == BIGINT_ERROR &&
+      iter.dom_parser._number_as_string)) {
+    // Write big integer to string buffer using the same format as strings.
+    // Scan digits the same way parse_number does (skip optional '-', then digits).
+    const uint8_t *p = value;
+    if (*p == '-') p++;
+    while (numberparsing::is_digit(*p)) p++;
+    size_t len = size_t(p - value);
+    tape.append(current_string_buf_loc - iter.dom_parser.doc->string_buf.get(), internal::tape_type::BIGINT);
+    uint8_t *dst = current_string_buf_loc + sizeof(uint32_t);
+    memcpy(dst, value, len);
+    dst += len;
+    on_end_string(dst);
+    return SUCCESS;
+  }
+  return err;
 }
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_number(json_iterator &iter, const uint8_t *value) noexcept {
@@ -20521,6 +20577,9 @@ struct tape_writer {
   /** Write a double value to tape. */
   simdjson_inline void append_double(double value) noexcept;
 
+  /** Write a big integer (as string) to tape. src points to first digit, len is byte count. */
+  simdjson_inline void append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept;
+
   /**
    * Append a tape entry (an 8-bit type,and 56 bits worth of value).
    */
@@ -20604,6 +20663,18 @@ simdjson_inline void tape_writer::write(uint64_t &tape_loc, uint64_t val, intern
   tape_loc = val | ((uint64_t(char(t))) << 56);
 }
 
+simdjson_inline void tape_writer::append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept {
+  // Write to string buffer: [4-byte LE length][digits][null]
+  uint32_t str_len = uint32_t(len);
+  memcpy(string_buf, &str_len, sizeof(uint32_t));
+  memcpy(string_buf + sizeof(uint32_t), src, len);
+  string_buf[sizeof(uint32_t) + len] = 0;
+  // Tape entry: offset into string buffer
+  // The caller must set the offset relative to doc.string_buf base
+  append(0, internal::tape_type::BIGINT); // placeholder offset, caller patches
+  string_buf += sizeof(uint32_t) + len + 1;
+}
+
 } // namespace stage2
 } // unnamed namespace
 } // namespace haswell
@@ -21541,7 +21612,23 @@ simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_string(
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_number(json_iterator &iter, const uint8_t *value) noexcept {
   iter.log_value("number");
-  return numberparsing::parse_number(value, tape);
+  error_code err = numberparsing::parse_number(value, tape);
+  if (simdjson_unlikely(err == BIGINT_ERROR &&
+      iter.dom_parser._number_as_string)) {
+    // Write big integer to string buffer using the same format as strings.
+    // Scan digits the same way parse_number does (skip optional '-', then digits).
+    const uint8_t *p = value;
+    if (*p == '-') p++;
+    while (numberparsing::is_digit(*p)) p++;
+    size_t len = size_t(p - value);
+    tape.append(current_string_buf_loc - iter.dom_parser.doc->string_buf.get(), internal::tape_type::BIGINT);
+    uint8_t *dst = current_string_buf_loc + sizeof(uint32_t);
+    memcpy(dst, value, len);
+    dst += len;
+    on_end_string(dst);
+    return SUCCESS;
+  }
+  return err;
 }
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_number(json_iterator &iter, const uint8_t *value) noexcept {
@@ -26877,6 +26964,9 @@ struct tape_writer {
   /** Write a double value to tape. */
   simdjson_inline void append_double(double value) noexcept;
 
+  /** Write a big integer (as string) to tape. src points to first digit, len is byte count. */
+  simdjson_inline void append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept;
+
   /**
    * Append a tape entry (an 8-bit type,and 56 bits worth of value).
    */
@@ -26960,6 +27050,18 @@ simdjson_inline void tape_writer::write(uint64_t &tape_loc, uint64_t val, intern
   tape_loc = val | ((uint64_t(char(t))) << 56);
 }
 
+simdjson_inline void tape_writer::append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept {
+  // Write to string buffer: [4-byte LE length][digits][null]
+  uint32_t str_len = uint32_t(len);
+  memcpy(string_buf, &str_len, sizeof(uint32_t));
+  memcpy(string_buf + sizeof(uint32_t), src, len);
+  string_buf[sizeof(uint32_t) + len] = 0;
+  // Tape entry: offset into string buffer
+  // The caller must set the offset relative to doc.string_buf base
+  append(0, internal::tape_type::BIGINT); // placeholder offset, caller patches
+  string_buf += sizeof(uint32_t) + len + 1;
+}
+
 } // namespace stage2
 } // unnamed namespace
 } // namespace icelake
@@ -27897,7 +27999,23 @@ simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_string(
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_number(json_iterator &iter, const uint8_t *value) noexcept {
   iter.log_value("number");
-  return numberparsing::parse_number(value, tape);
+  error_code err = numberparsing::parse_number(value, tape);
+  if (simdjson_unlikely(err == BIGINT_ERROR &&
+      iter.dom_parser._number_as_string)) {
+    // Write big integer to string buffer using the same format as strings.
+    // Scan digits the same way parse_number does (skip optional '-', then digits).
+    const uint8_t *p = value;
+    if (*p == '-') p++;
+    while (numberparsing::is_digit(*p)) p++;
+    size_t len = size_t(p - value);
+    tape.append(current_string_buf_loc - iter.dom_parser.doc->string_buf.get(), internal::tape_type::BIGINT);
+    uint8_t *dst = current_string_buf_loc + sizeof(uint32_t);
+    memcpy(dst, value, len);
+    dst += len;
+    on_end_string(dst);
+    return SUCCESS;
+  }
+  return err;
 }
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_number(json_iterator &iter, const uint8_t *value) noexcept {
@@ -33504,6 +33622,9 @@ struct tape_writer {
   /** Write a double value to tape. */
   simdjson_inline void append_double(double value) noexcept;
 
+  /** Write a big integer (as string) to tape. src points to first digit, len is byte count. */
+  simdjson_inline void append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept;
+
   /**
    * Append a tape entry (an 8-bit type,and 56 bits worth of value).
    */
@@ -33587,6 +33708,18 @@ simdjson_inline void tape_writer::write(uint64_t &tape_loc, uint64_t val, intern
   tape_loc = val | ((uint64_t(char(t))) << 56);
 }
 
+simdjson_inline void tape_writer::append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept {
+  // Write to string buffer: [4-byte LE length][digits][null]
+  uint32_t str_len = uint32_t(len);
+  memcpy(string_buf, &str_len, sizeof(uint32_t));
+  memcpy(string_buf + sizeof(uint32_t), src, len);
+  string_buf[sizeof(uint32_t) + len] = 0;
+  // Tape entry: offset into string buffer
+  // The caller must set the offset relative to doc.string_buf base
+  append(0, internal::tape_type::BIGINT); // placeholder offset, caller patches
+  string_buf += sizeof(uint32_t) + len + 1;
+}
+
 } // namespace stage2
 } // unnamed namespace
 } // namespace ppc64
@@ -34524,7 +34657,23 @@ simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_string(
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_number(json_iterator &iter, const uint8_t *value) noexcept {
   iter.log_value("number");
-  return numberparsing::parse_number(value, tape);
+  error_code err = numberparsing::parse_number(value, tape);
+  if (simdjson_unlikely(err == BIGINT_ERROR &&
+      iter.dom_parser._number_as_string)) {
+    // Write big integer to string buffer using the same format as strings.
+    // Scan digits the same way parse_number does (skip optional '-', then digits).
+    const uint8_t *p = value;
+    if (*p == '-') p++;
+    while (numberparsing::is_digit(*p)) p++;
+    size_t len = size_t(p - value);
+    tape.append(current_string_buf_loc - iter.dom_parser.doc->string_buf.get(), internal::tape_type::BIGINT);
+    uint8_t *dst = current_string_buf_loc + sizeof(uint32_t);
+    memcpy(dst, value, len);
+    dst += len;
+    on_end_string(dst);
+    return SUCCESS;
+  }
+  return err;
 }
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_number(json_iterator &iter, const uint8_t *value) noexcept {
@@ -40693,6 +40842,9 @@ struct tape_writer {
   /** Write a double value to tape. */
   simdjson_inline void append_double(double value) noexcept;
 
+  /** Write a big integer (as string) to tape. src points to first digit, len is byte count. */
+  simdjson_inline void append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept;
+
   /**
    * Append a tape entry (an 8-bit type,and 56 bits worth of value).
    */
@@ -40776,6 +40928,18 @@ simdjson_inline void tape_writer::write(uint64_t &tape_loc, uint64_t val, intern
   tape_loc = val | ((uint64_t(char(t))) << 56);
 }
 
+simdjson_inline void tape_writer::append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept {
+  // Write to string buffer: [4-byte LE length][digits][null]
+  uint32_t str_len = uint32_t(len);
+  memcpy(string_buf, &str_len, sizeof(uint32_t));
+  memcpy(string_buf + sizeof(uint32_t), src, len);
+  string_buf[sizeof(uint32_t) + len] = 0;
+  // Tape entry: offset into string buffer
+  // The caller must set the offset relative to doc.string_buf base
+  append(0, internal::tape_type::BIGINT); // placeholder offset, caller patches
+  string_buf += sizeof(uint32_t) + len + 1;
+}
+
 } // namespace stage2
 } // unnamed namespace
 } // namespace westmere
@@ -41713,7 +41877,23 @@ simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_string(
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_number(json_iterator &iter, const uint8_t *value) noexcept {
   iter.log_value("number");
-  return numberparsing::parse_number(value, tape);
+  error_code err = numberparsing::parse_number(value, tape);
+  if (simdjson_unlikely(err == BIGINT_ERROR &&
+      iter.dom_parser._number_as_string)) {
+    // Write big integer to string buffer using the same format as strings.
+    // Scan digits the same way parse_number does (skip optional '-', then digits).
+    const uint8_t *p = value;
+    if (*p == '-') p++;
+    while (numberparsing::is_digit(*p)) p++;
+    size_t len = size_t(p - value);
+    tape.append(current_string_buf_loc - iter.dom_parser.doc->string_buf.get(), internal::tape_type::BIGINT);
+    uint8_t *dst = current_string_buf_loc + sizeof(uint32_t);
+    memcpy(dst, value, len);
+    dst += len;
+    on_end_string(dst);
+    return SUCCESS;
+  }
+  return err;
 }
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_number(json_iterator &iter, const uint8_t *value) noexcept {
@@ -46913,6 +47093,9 @@ struct tape_writer {
   /** Write a double value to tape. */
   simdjson_inline void append_double(double value) noexcept;
 
+  /** Write a big integer (as string) to tape. src points to first digit, len is byte count. */
+  simdjson_inline void append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept;
+
   /**
    * Append a tape entry (an 8-bit type,and 56 bits worth of value).
    */
@@ -46996,6 +47179,18 @@ simdjson_inline void tape_writer::write(uint64_t &tape_loc, uint64_t val, intern
   tape_loc = val | ((uint64_t(char(t))) << 56);
 }
 
+simdjson_inline void tape_writer::append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept {
+  // Write to string buffer: [4-byte LE length][digits][null]
+  uint32_t str_len = uint32_t(len);
+  memcpy(string_buf, &str_len, sizeof(uint32_t));
+  memcpy(string_buf + sizeof(uint32_t), src, len);
+  string_buf[sizeof(uint32_t) + len] = 0;
+  // Tape entry: offset into string buffer
+  // The caller must set the offset relative to doc.string_buf base
+  append(0, internal::tape_type::BIGINT); // placeholder offset, caller patches
+  string_buf += sizeof(uint32_t) + len + 1;
+}
+
 } // namespace stage2
 } // unnamed namespace
 } // namespace lasx
@@ -47933,7 +48128,23 @@ simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_string(
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_number(json_iterator &iter, const uint8_t *value) noexcept {
   iter.log_value("number");
-  return numberparsing::parse_number(value, tape);
+  error_code err = numberparsing::parse_number(value, tape);
+  if (simdjson_unlikely(err == BIGINT_ERROR &&
+      iter.dom_parser._number_as_string)) {
+    // Write big integer to string buffer using the same format as strings.
+    // Scan digits the same way parse_number does (skip optional '-', then digits).
+    const uint8_t *p = value;
+    if (*p == '-') p++;
+    while (numberparsing::is_digit(*p)) p++;
+    size_t len = size_t(p - value);
+    tape.append(current_string_buf_loc - iter.dom_parser.doc->string_buf.get(), internal::tape_type::BIGINT);
+    uint8_t *dst = current_string_buf_loc + sizeof(uint32_t);
+    memcpy(dst, value, len);
+    dst += len;
+    on_end_string(dst);
+    return SUCCESS;
+  }
+  return err;
 }
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_number(json_iterator &iter, const uint8_t *value) noexcept {
@@ -53037,6 +53248,9 @@ struct tape_writer {
   /** Write a double value to tape. */
   simdjson_inline void append_double(double value) noexcept;
 
+  /** Write a big integer (as string) to tape. src points to first digit, len is byte count. */
+  simdjson_inline void append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept;
+
   /**
    * Append a tape entry (an 8-bit type,and 56 bits worth of value).
    */
@@ -53120,6 +53334,18 @@ simdjson_inline void tape_writer::write(uint64_t &tape_loc, uint64_t val, intern
   tape_loc = val | ((uint64_t(char(t))) << 56);
 }
 
+simdjson_inline void tape_writer::append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept {
+  // Write to string buffer: [4-byte LE length][digits][null]
+  uint32_t str_len = uint32_t(len);
+  memcpy(string_buf, &str_len, sizeof(uint32_t));
+  memcpy(string_buf + sizeof(uint32_t), src, len);
+  string_buf[sizeof(uint32_t) + len] = 0;
+  // Tape entry: offset into string buffer
+  // The caller must set the offset relative to doc.string_buf base
+  append(0, internal::tape_type::BIGINT); // placeholder offset, caller patches
+  string_buf += sizeof(uint32_t) + len + 1;
+}
+
 } // namespace stage2
 } // unnamed namespace
 } // namespace lsx
@@ -54057,7 +54283,23 @@ simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_string(
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_number(json_iterator &iter, const uint8_t *value) noexcept {
   iter.log_value("number");
-  return numberparsing::parse_number(value, tape);
+  error_code err = numberparsing::parse_number(value, tape);
+  if (simdjson_unlikely(err == BIGINT_ERROR &&
+      iter.dom_parser._number_as_string)) {
+    // Write big integer to string buffer using the same format as strings.
+    // Scan digits the same way parse_number does (skip optional '-', then digits).
+    const uint8_t *p = value;
+    if (*p == '-') p++;
+    while (numberparsing::is_digit(*p)) p++;
+    size_t len = size_t(p - value);
+    tape.append(current_string_buf_loc - iter.dom_parser.doc->string_buf.get(), internal::tape_type::BIGINT);
+    uint8_t *dst = current_string_buf_loc + sizeof(uint32_t);
+    memcpy(dst, value, len);
+    dst += len;
+    on_end_string(dst);
+    return SUCCESS;
+  }
+  return err;
 }
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_number(json_iterator &iter, const uint8_t *value) noexcept {
@@ -59580,6 +59822,9 @@ struct tape_writer {
   /** Write a double value to tape. */
   simdjson_inline void append_double(double value) noexcept;
 
+  /** Write a big integer (as string) to tape. src points to first digit, len is byte count. */
+  simdjson_inline void append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept;
+
   /**
    * Append a tape entry (an 8-bit type,and 56 bits worth of value).
    */
@@ -59663,6 +59908,18 @@ simdjson_inline void tape_writer::write(uint64_t &tape_loc, uint64_t val, intern
   tape_loc = val | ((uint64_t(char(t))) << 56);
 }
 
+simdjson_inline void tape_writer::append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept {
+  // Write to string buffer: [4-byte LE length][digits][null]
+  uint32_t str_len = uint32_t(len);
+  memcpy(string_buf, &str_len, sizeof(uint32_t));
+  memcpy(string_buf + sizeof(uint32_t), src, len);
+  string_buf[sizeof(uint32_t) + len] = 0;
+  // Tape entry: offset into string buffer
+  // The caller must set the offset relative to doc.string_buf base
+  append(0, internal::tape_type::BIGINT); // placeholder offset, caller patches
+  string_buf += sizeof(uint32_t) + len + 1;
+}
+
 } // namespace stage2
 } // unnamed namespace
 } // namespace rvv_vls
@@ -60600,7 +60857,23 @@ simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_string(
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_number(json_iterator &iter, const uint8_t *value) noexcept {
   iter.log_value("number");
-  return numberparsing::parse_number(value, tape);
+  error_code err = numberparsing::parse_number(value, tape);
+  if (simdjson_unlikely(err == BIGINT_ERROR &&
+      iter.dom_parser._number_as_string)) {
+    // Write big integer to string buffer using the same format as strings.
+    // Scan digits the same way parse_number does (skip optional '-', then digits).
+    const uint8_t *p = value;
+    if (*p == '-') p++;
+    while (numberparsing::is_digit(*p)) p++;
+    size_t len = size_t(p - value);
+    tape.append(current_string_buf_loc - iter.dom_parser.doc->string_buf.get(), internal::tape_type::BIGINT);
+    uint8_t *dst = current_string_buf_loc + sizeof(uint32_t);
+    memcpy(dst, value, len);
+    dst += len;
+    on_end_string(dst);
+    return SUCCESS;
+  }
+  return err;
 }
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_number(json_iterator &iter, const uint8_t *value) noexcept {
@@ -60938,6 +61211,19 @@ simdjson_inline int leading_zeroes(uint64_t input_num) {
 #endif// _MSC_VER
 }
 
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#ifdef _MSC_VER
+  unsigned long trailing_zero = 0;
+  // Search the mask data from least significant bit (LSB)
+  // to most significant bit (MSB) for a set bit (1).
+  if (_BitScanForward64(&trailing_zero, input_num))
+    return (int)trailing_zero;
+  else    return 64;
+#else
+  return __builtin_ctzll(input_num);
+#endif// _MSC_VER
+}
+
 } // unnamed namespace
 } // namespace fallback
 } // namespace simdjson
@@ -63169,6 +63455,19 @@ simdjson_inline int leading_zeroes(uint64_t input_num) {
 #endif// _MSC_VER
 }
 
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#ifdef _MSC_VER
+  unsigned long trailing_zero = 0;
+  // Search the mask data from least significant bit (LSB)
+  // to most significant bit (MSB) for a set bit (1).
+  if (_BitScanForward64(&trailing_zero, input_num))
+    return (int)trailing_zero;
+  else    return 64;
+#else
+  return __builtin_ctzll(input_num);
+#endif// _MSC_VER
+}
+
 } // unnamed namespace
 } // namespace fallback
 } // namespace simdjson
@@ -64145,6 +64444,9 @@ struct tape_writer {
   /** Write a double value to tape. */
   simdjson_inline void append_double(double value) noexcept;
 
+  /** Write a big integer (as string) to tape. src points to first digit, len is byte count. */
+  simdjson_inline void append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept;
+
   /**
    * Append a tape entry (an 8-bit type,and 56 bits worth of value).
    */
@@ -64228,6 +64530,18 @@ simdjson_inline void tape_writer::write(uint64_t &tape_loc, uint64_t val, intern
   tape_loc = val | ((uint64_t(char(t))) << 56);
 }
 
+simdjson_inline void tape_writer::append_bigint(const uint8_t *src, size_t len, uint8_t *&string_buf) noexcept {
+  // Write to string buffer: [4-byte LE length][digits][null]
+  uint32_t str_len = uint32_t(len);
+  memcpy(string_buf, &str_len, sizeof(uint32_t));
+  memcpy(string_buf + sizeof(uint32_t), src, len);
+  string_buf[sizeof(uint32_t) + len] = 0;
+  // Tape entry: offset into string buffer
+  // The caller must set the offset relative to doc.string_buf base
+  append(0, internal::tape_type::BIGINT); // placeholder offset, caller patches
+  string_buf += sizeof(uint32_t) + len + 1;
+}
+
 } // namespace stage2
 } // unnamed namespace
 } // namespace fallback
@@ -64411,7 +64725,23 @@ simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_string(
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_number(json_iterator &iter, const uint8_t *value) noexcept {
   iter.log_value("number");
-  return numberparsing::parse_number(value, tape);
+  error_code err = numberparsing::parse_number(value, tape);
+  if (simdjson_unlikely(err == BIGINT_ERROR &&
+      iter.dom_parser._number_as_string)) {
+    // Write big integer to string buffer using the same format as strings.
+    // Scan digits the same way parse_number does (skip optional '-', then digits).
+    const uint8_t *p = value;
+    if (*p == '-') p++;
+    while (numberparsing::is_digit(*p)) p++;
+    size_t len = size_t(p - value);
+    tape.append(current_string_buf_loc - iter.dom_parser.doc->string_buf.get(), internal::tape_type::BIGINT);
+    uint8_t *dst = current_string_buf_loc + sizeof(uint32_t);
+    memcpy(dst, value, len);
+    dst += len;
+    on_end_string(dst);
+    return SUCCESS;
+  }
+  return err;
 }
 
 simdjson_warn_unused simdjson_inline error_code tape_builder::visit_root_number(json_iterator &iter, const uint8_t *value) noexcept {
diff --git a/deps/simdjson/simdjson.h b/deps/simdjson/simdjson.h
index cf2658af259b79..3a413a7d1e046e 100644
--- a/deps/simdjson/simdjson.h
+++ b/deps/simdjson/simdjson.h
@@ -1,4 +1,4 @@
-/* auto-generated on 2026-02-20 16:16:37 -0500. version 4.3.1 Do not edit! */
+/* auto-generated on 2026-03-25 17:25:37 -0400. version 4.5.0 Do not edit! */
 /* including simdjson.h:  */
 /* begin file simdjson.h */
 #ifndef SIMDJSON_H
@@ -166,7 +166,6 @@
 #define SIMDJSON_CONSTEVAL 0
 #endif // defined(__cpp_consteval) && __cpp_consteval >= 201811L && defined(__cpp_lib_constexpr_string) && __cpp_lib_constexpr_string >= 201907L
 #endif // !defined(SIMDJSON_CONSTEVAL)
-
 #endif // SIMDJSON_COMPILER_CHECK_H
 /* end file simdjson/compiler_check.h */
 /* including simdjson/portability.h: #include "simdjson/portability.h" */
@@ -239,6 +238,25 @@ using std::size_t;
   #define SIMDJSON_IS_LASX 1 // We can always run both
 #elif defined(__loongarch_sx)
   #define SIMDJSON_IS_LSX 1
+
+// Adjust for runtime dispatching support.
+#if defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && !defined(__NVCOMPILER)
+#if __GNUC__ > 15 || (__GNUC__ == 15 && __GNUC_MINOR__ >= 0)
+  // We are ok, we will support runtime dispatch for LASX.
+#else
+  // We disable runtime dispatch for LASX, which means that we will not be able to use LASX
+  // even if it is supported by the hardware.
+  // Loongson users should update to GCC 15 or better.
+  #define SIMDJSON_IMPLEMENTATION_LASX 0
+#endif
+#else
+  // We are not using GCC, so we assume that we can support runtime dispatch for LASX.
+  // https://godbolt.org/z/jcMnrjYhs
+  #define SIMDJSON_IMPLEMENTATION_LASX 0
+#endif
+
+
+
 #endif
 #elif defined(__PPC64__) || defined(_M_PPC64)
 #define SIMDJSON_IS_PPC64 1
@@ -2520,7 +2538,7 @@ namespace std {
 #define SIMDJSON_SIMDJSON_VERSION_H
 
 /** The version of simdjson being used (major.minor.revision) */
-#define SIMDJSON_VERSION "4.3.1"
+#define SIMDJSON_VERSION "4.5.0"
 
 namespace simdjson {
 enum {
@@ -2531,11 +2549,11 @@ enum {
   /**
    * The minor version (major.MINOR.revision) of simdjson being used.
    */
-  SIMDJSON_VERSION_MINOR = 3,
+  SIMDJSON_VERSION_MINOR = 5,
   /**
    * The revision (major.minor.REVISION) of simdjson being used.
    */
-  SIMDJSON_VERSION_REVISION = 1
+  SIMDJSON_VERSION_REVISION = 0
 };
 } // namespace simdjson
 
@@ -3774,6 +3792,12 @@ class dom_parser_implementation {
    */
   size_t _max_depth{0};
 
+public:
+  /** Whether to store big integers as strings instead of returning BIGINT_ERROR */
+  bool _number_as_string{false};
+
+protected:
+
   // Declaring these so that subclasses can use them to implement their constructors.
   simdjson_inline dom_parser_implementation() noexcept;
   simdjson_inline dom_parser_implementation(dom_parser_implementation &&other) noexcept;
@@ -4326,6 +4350,62 @@ inline std::ostream& operator<<(std::ostream& out, const padded_string& s) { ret
 inline std::ostream& operator<<(std::ostream& out, simdjson_result<padded_string> &s) noexcept(false) { return out << s.value(); }
 #endif
 
+
+#ifndef _WIN32
+/**
+ * A class representing a memory-mapped file with padding.
+ * It is only available on non-Windows platforms, as Windows has different APIs for memory mapping.
+ */
+class padded_memory_map {
+public:
+  /**
+   * Create a new padded memory map for the given file.
+   * After creating the memory map, you can call view() to get a padded_string_view of the file content.
+   * The memory map will be automatically released when the padded_memory_map instance is destroyed.
+   * Note that the file content is not copied, so this is efficient for large files. However,
+   * the file must remain unchanged while the memory map is in use. In case of error (e.g., file not found,
+   * permission denied, etc.), the memory map will be invalid and view() will return an empty view.
+   * You can check if the memory map is valid by calling is_valid() before using view().
+   *
+   * @param filename the path to the file to memory-map.
+   */
+  simdjson_inline padded_memory_map(const char *filename) noexcept;
+  /**
+   * Destroy the padded memory map and release any resources.
+   */
+  simdjson_inline ~padded_memory_map() noexcept;
+
+  // lifetime of the view is tied to the memory map, so we can return a view
+  // directly
+  /**
+   * Get a view of the memory-mapped file. It always succeeds, but the view may be empty
+   * if the memory map is invalid (e.g., due to file not found, permission denied, etc.).
+   * You can check if the memory map is valid by calling is_valid() before using the view.
+   *
+   * Lifetime of the view is tied to the memory map, so the view should not be used after the
+   * padded_memory_map instance is destroyed.
+   *
+   * @return a padded_string_view representing the memory-mapped file, or an empty view if the memory map is invalid.
+   */
+  simdjson_inline simdjson::padded_string_view view() const noexcept simdjson_lifetime_bound;
+  /**
+   * Check if the memory map is valid.
+   *
+   * @return true if the memory map is valid, false otherwise.
+   */
+  simdjson_inline bool is_valid() const noexcept;
+
+private:
+  padded_memory_map() = delete;
+  padded_memory_map(const padded_memory_map &) = delete;
+  padded_memory_map &operator=(const padded_memory_map &) = delete;
+  const char *data{nullptr};
+  size_t size{0};
+};
+#endif // _WIN32
+
+
+
 } // namespace simdjson
 
 // This is deliberately outside of simdjson so that people get it without having to use the namespace
@@ -4404,7 +4484,7 @@ namespace simdjson {
  */
 class padded_string_view : public std::string_view {
 private:
-  size_t _capacity;
+  size_t _capacity{0};
 
 public:
   /** Create an empty padded_string_view. */
@@ -4608,6 +4688,14 @@ inline padded_string_view pad_with_reserve(std::string& s) noexcept {
 #include <climits>
 #include <cwchar>
 
+#ifndef _WIN32
+#include <fcntl.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#endif
+
 namespace simdjson {
 namespace internal {
 
@@ -4964,6 +5052,57 @@ inline bool padded_string_builder::reserve(size_t additional) noexcept {
   return true;
 }
 
+
+#ifndef _WIN32
+simdjson_inline padded_memory_map::padded_memory_map(const char *filename) noexcept {
+
+    int fd = open(filename, O_RDONLY);
+    if (fd == -1) {
+      return; // file not found or cannot be opened, data will be nullptr
+    }
+    struct stat st;
+    if (fstat(fd, &st) == -1) {
+      close(fd);
+      return; // failed to get file size, data will be nullptr
+    }
+    size = static_cast<size_t>(st.st_size);
+    size_t total_size = size + simdjson::SIMDJSON_PADDING;
+    void *anon_map =
+        mmap(NULL, total_size, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+    if (anon_map == MAP_FAILED) {
+      close(fd);
+      return; // failed to create anonymous mapping, data will be nullptr
+    }
+    void *file_map =
+        mmap(anon_map, size, PROT_READ, MAP_SHARED | MAP_FIXED, fd, 0);
+    if (file_map == MAP_FAILED) {
+      munmap(anon_map, total_size);
+      close(fd);
+      return; // failed to mmap file, data will be nullptr
+    }
+    data = static_cast<const char *>(file_map);
+    close(fd); // no longer needed after mapping
+}
+
+simdjson_inline padded_memory_map::~padded_memory_map() noexcept {
+  if (data != nullptr) {
+    munmap(const_cast<char *>(data), size + simdjson::SIMDJSON_PADDING);
+  }
+}
+
+
+simdjson_inline simdjson::padded_string_view padded_memory_map::view() const noexcept simdjson_lifetime_bound {
+  if(!is_valid()) {
+    return simdjson::padded_string_view(); // return an empty view if mapping failed
+  }
+  return simdjson::padded_string_view(data, size, size + simdjson::SIMDJSON_PADDING);
+}
+
+simdjson_inline bool padded_memory_map::is_valid() const noexcept {
+  return data != nullptr;
+}
+#endif // _WIN32
+
 } // namespace simdjson
 
 inline simdjson::padded_string operator ""_padded(const char *str, size_t len) {
@@ -4974,6 +5113,7 @@ inline simdjson::padded_string operator ""_padded(const char8_t *str, size_t len
   return simdjson::padded_string(reinterpret_cast<const char *>(str), len);
 }
 #endif
+
 #endif // SIMDJSON_PADDED_STRING_INL_H
 /* end file simdjson/padded_string-inl.h */
 /* skipped duplicate #include "simdjson/padded_string_view.h" */
@@ -6030,6 +6170,13 @@ class parser {
   inline bool dump_raw_tape(std::ostream &os) const noexcept;
 
 
+  /**
+   * When enabled, big integers (exceeding uint64 range) are stored as strings
+   * in the tape instead of returning BIGINT_ERROR. Default: false.
+   */
+  inline void number_as_string(bool enabled) noexcept { _number_as_string = enabled; }
+  inline bool number_as_string() const noexcept { return _number_as_string; }
+
 private:
   /**
    * The maximum document length this parser will automatically support.
@@ -6038,6 +6185,9 @@ class parser {
    */
   size_t _max_capacity;
 
+  /** Whether to store big integers as strings instead of returning BIGINT_ERROR */
+  bool _number_as_string{false};
+
   /**
    * The loaded buffer (reused each time load() is called)
    */
@@ -6431,7 +6581,8 @@ enum class element_type {
   DOUBLE = 'd',    ///< double: Any number with a "." or "e" that fits in double.
   STRING = '"',    ///< std::string_view
   BOOL = 't',      ///< bool
-  NULL_VALUE = 'n' ///< null
+  NULL_VALUE = 'n', ///< null
+  BIGINT = 'Z'     ///< std::string_view: big integer stored as raw digit string
 };
 
 /**
@@ -6530,6 +6681,14 @@ class element {
    */
   inline simdjson_result<bool> get_bool() const noexcept;
 
+  /**
+   * Read this element as a big integer (raw digit string).
+   *
+   * @returns A string_view of the raw digits, or:
+   *          INCORRECT_TYPE if the JSON element is not a big integer.
+   */
+  inline simdjson_result<std::string_view> get_bigint() const noexcept;
+
   /**
    * Whether this element is a json array.
    *
@@ -6585,6 +6744,11 @@ class element {
    */
   inline bool is_null() const noexcept;
 
+  /**
+   * Whether this element is a big integer (number exceeding 64-bit range).
+   */
+  inline bool is_bigint() const noexcept;
+
   /**
    * Tell whether the value can be cast to provided type (T).
    *
@@ -6943,6 +7107,7 @@ struct simdjson_result<dom::element> : public internal::simdjson_result_base<dom
   simdjson_inline simdjson_result<uint64_t> get_uint64() const noexcept;
   simdjson_inline simdjson_result<double> get_double() const noexcept;
   simdjson_inline simdjson_result<bool> get_bool() const noexcept;
+  simdjson_inline simdjson_result<std::string_view> get_bigint() const noexcept;
 
   simdjson_inline bool is_array() const noexcept;
   simdjson_inline bool is_object() const noexcept;
@@ -6953,6 +7118,7 @@ struct simdjson_result<dom::element> : public internal::simdjson_result_base<dom
   simdjson_inline bool is_number() const noexcept;
   simdjson_inline bool is_bool() const noexcept;
   simdjson_inline bool is_null() const noexcept;
+  simdjson_inline bool is_bigint() const noexcept;
 
   simdjson_inline simdjson_result<dom::element> operator[](std::string_view key) const noexcept;
   simdjson_inline simdjson_result<dom::element> operator[](const char *key) const noexcept;
@@ -7943,7 +8109,8 @@ enum class tape_type {
   DOUBLE = 'd',
   TRUE_VALUE = 't',
   FALSE_VALUE = 'f',
-  NULL_VALUE = 'n'
+  NULL_VALUE = 'n',
+  BIGINT = 'Z'  // Big integer stored as string in string buffer
 }; // enum class tape_type
 
 } // namespace internal
@@ -8817,6 +8984,10 @@ simdjson_inline simdjson_result<bool> simdjson_result<dom::element>::get_bool()
   if (error()) { return error(); }
   return first.get_bool();
 }
+simdjson_inline simdjson_result<std::string_view> simdjson_result<dom::element>::get_bigint() const noexcept {
+  if (error()) { return error(); }
+  return first.get_bigint();
+}
 
 simdjson_inline bool simdjson_result<dom::element>::is_array() const noexcept {
   return !error() && first.is_array();
@@ -8846,6 +9017,9 @@ simdjson_inline bool simdjson_result<dom::element>::is_bool() const noexcept {
 simdjson_inline bool simdjson_result<dom::element>::is_null() const noexcept {
   return !error() && first.is_null();
 }
+simdjson_inline bool simdjson_result<dom::element>::is_bigint() const noexcept {
+  return !error() && first.is_bigint();
+}
 
 simdjson_inline simdjson_result<dom::element> simdjson_result<dom::element>::operator[](std::string_view key) const noexcept {
   if (error()) { return error(); }
@@ -8954,6 +9128,15 @@ inline simdjson_result<bool> element::get_bool() const noexcept {
   }
   return INCORRECT_TYPE;
 }
+inline simdjson_result<std::string_view> element::get_bigint() const noexcept {
+  SIMDJSON_DEVELOPMENT_ASSERT(tape.usable());
+  switch (tape.tape_ref_type()) {
+    case internal::tape_type::BIGINT:
+      return tape.get_string_view();
+    default:
+      return INCORRECT_TYPE;
+  }
+}
 inline simdjson_result<const char *> element::get_c_str() const noexcept {
   SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
   switch (tape.tape_ref_type()) {
@@ -9096,6 +9279,10 @@ inline bool element::is_null() const noexcept {
   return tape.is_null_on_tape();
 }
 
+inline bool element::is_bigint() const noexcept {
+  return tape.tape_ref_type() == internal::tape_type::BIGINT;
+}
+
 #if SIMDJSON_EXCEPTIONS
 
 inline element::operator bool() const noexcept(false) { return get<bool>(); }
@@ -9228,6 +9415,8 @@ inline std::ostream& operator<<(std::ostream& out, element_type type) {
       return out << "bool";
     case element_type::NULL_VALUE:
       return out << "null";
+    case element_type::BIGINT:
+      return out << "bigint";
     default:
       return out << "unexpected content!!!"; // abort() usage is forbidden in the library
   }
@@ -9395,6 +9584,7 @@ inline simdjson_result<element> parser::parse_into_document(document& provided_d
     buf += 3;
     len -= 3;
   }
+  implementation->_number_as_string = _number_as_string;
   _error = implementation->parse(buf, len, provided_doc);
 
   if (_error) { return _error; }
@@ -10073,6 +10263,15 @@ inline bool document::dump_raw_tape(std::ostream &os) const noexcept {
     case 'r': // we start and end with the root node
       // should we be hitting the root node?
       return false;
+    case 'Z': // we have a big integer
+      os << "bigint ";
+      std::memcpy(&string_length, string_buf.get() + payload, sizeof(uint32_t));
+      os << std::string_view(
+        reinterpret_cast<const char *>(string_buf.get() + payload + sizeof(uint32_t)),
+        string_length
+      );
+      os << '\n';
+      break;
     default:
       return false;
     }
@@ -10558,6 +10757,12 @@ inline void string_builder<serializer>::append(simdjson::dom::element value) {
     case tape_type::STRING:
       format.string(iter.get_string_view());
       break;
+    case tape_type::BIGINT: {
+      // Big integer stored as string — output raw digits (no quotes)
+      auto sv = iter.get_string_view();
+      format.chars(sv.data(), sv.data() + sv.size());
+      break;
+    }
     case tape_type::INT64:
       format.number(iter.next_tape_value<int64_t>());
       iter.json_index++; // numbers take up 2 spots, so we need to increment
@@ -16498,6 +16703,19 @@ simdjson_inline int leading_zeroes(uint64_t input_num) {
 #endif// _MSC_VER
 }
 
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#ifdef _MSC_VER
+  unsigned long trailing_zero = 0;
+  // Search the mask data from least significant bit (LSB)
+  // to most significant bit (MSB) for a set bit (1).
+  if (_BitScanForward64(&trailing_zero, input_num))
+    return (int)trailing_zero;
+  else    return 64;
+#else
+  return __builtin_ctzll(input_num);
+#endif// _MSC_VER
+}
+
 } // unnamed namespace
 } // namespace fallback
 } // namespace simdjson
@@ -39592,6 +39810,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
 #endif
 #endif
+#if defined(__loongarch_sx)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_LSX
+#define SIMDJSON_EXPERIMENTAL_HAS_LSX 1
+#endif
+#endif
+#if defined(__riscv_v_intrinsic) && __riscv_v_intrinsic >= 11000 &&            \
+    defined(__riscv_vector)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_RVV
+#define SIMDJSON_EXPERIMENTAL_HAS_RVV 1
+#endif
+#endif
+#if (defined(__PPC64__) || defined(_M_PPC64)) && defined(__ALTIVEC__)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#define SIMDJSON_EXPERIMENTAL_HAS_PPC64 1
+#endif
+#endif
 #if SIMDJSON_EXPERIMENTAL_HAS_NEON
 #include <arm_neon.h>
 #ifdef _MSC_VER
@@ -39604,6 +39838,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #include <intrin.h>
 #endif
 #endif
+#if SIMDJSON_EXPERIMENTAL_HAS_LSX
+#include <lsxintrin.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_RVV
+#include <riscv_vector.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#include <altivec.h>
+#ifdef bool
+#undef bool
+#endif
+#ifdef vector
+#undef vector
+#endif
+#endif
+
 
 namespace simdjson {
 namespace arm64 {
@@ -39704,6 +39954,35 @@ simdjson_inline bool fast_needs_escaping(std::string_view view) {
   }
   return _mm_movemask_epi8(running) != 0;
 }
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __vector unsigned char running = vec_splats((unsigned char)0);
+  __vector unsigned char v34 = vec_splats((unsigned char)34);
+  __vector unsigned char v92 = vec_splats((unsigned char)92);
+  __vector unsigned char v32 = vec_splats((unsigned char)32);
+
+  for (; i + 15 < view.size(); i += 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(view.data() + i));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  if (i < view.size()) {
+    __vector unsigned char word = vec_vsx_ld(
+        0, reinterpret_cast<const unsigned char *>(view.data() + view.length() - 16));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  return !vec_all_eq(running, vec_splats((unsigned char)0));
+}
 #else
 simdjson_inline bool fast_needs_escaping(std::string_view view) {
   return simple_needs_escaping(view);
@@ -39747,28 +40026,12 @@ find_next_json_quotable_character(const std::string_view view,
     needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
     needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
 
-    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
-      // Found quotable character - extract exact byte position using ctz
-      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
-      uint64_t lo = vgetq_lane_u64(as64, 0);
-      uint64_t hi = vgetq_lane_u64(as64, 1);
+    const uint8x8_t res = vshrn_n_u16(vreinterpretq_u16_u8(needs_escape), 4);
+    const uint64_t mask = vget_lane_u64(vreinterpret_u64_u8(res), 0);
+    if(mask != 0) {
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      if (lo != 0) {
-        _BitScanForward64(&trailing_zero, lo);
-        return offset + trailing_zero / 8;
-      } else {
-        _BitScanForward64(&trailing_zero, hi);
-        return offset + 8 + trailing_zero / 8;
-      }
-#else
-      if (lo != 0) {
-        return offset + __builtin_ctzll(lo) / 8;
-      } else {
-        return offset + 8 + __builtin_ctzll(hi) / 8;
-      }
-#endif
+      auto trailing_zero = trailing_zeroes(mask);
+      return offset + (trailing_zero >> 2);
     }
     ptr += 16;
     remaining -= 16;
@@ -39806,13 +40069,128 @@ find_next_json_quotable_character(const std::string_view view,
     if (mask != 0) {
       // Found quotable character - use trailing zero count to find position
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      _BitScanForward(&trailing_zero, mask);
-      return offset + trailing_zero;
+      return offset + trailing_zeroes(mask);
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_LSX
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  //SIMD constants for characters requiring escape
+  __m128i v34 = __lsx_vreplgr2vr_b(34);  // '"'
+  __m128i v92 = __lsx_vreplgr2vr_b(92);  // '\\'
+  __m128i v32 = __lsx_vreplgr2vr_b(32);  // control char threshold
+
+  while (remaining >= 16){
+    __m128i word = __lsx_vld(ptr, 0);
+
+    //Check for the quotable characters: '"', '\\', or control char (<32)
+    __m128i needs_escape = __lsx_vseq_b(word, v34);
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vseq_b(word, v92));
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vslt_bu(word, v32));
+
+    if (!__lsx_bz_v(needs_escape)){
+
+      //Found quotable character - extract exact byte position
+      uint64_t lo = __lsx_vpickve2gr_du(needs_escape,0);
+      uint64_t hi = __lsx_vpickve2gr_du(needs_escape,1);
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      if ( lo != 0) {
+        return offset + trailing_zeroes(lo) / 8;
+      } else {
+        return offset + 8 + trailing_zeroes(hi) / 8;
+      }
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_RVV
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  while (remaining > 0) {
+    size_t vl = __riscv_vsetvl_e8m1(remaining);
+    vuint8m1_t word = __riscv_vle8_v_u8m1(ptr, vl);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    vbool8_t needs_escape = __riscv_vmseq(word, (uint8_t)34, vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmseq(word, (uint8_t)92, vl), vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmsltu(word, (uint8_t)32, vl), vl);
+
+    long first = __riscv_vfirst(needs_escape, vl);
+    if (first >= 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + first;
+    }
+    ptr += vl;
+    remaining -= vl;
+  }
+
+  return len;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  __vector unsigned char v34 = vec_splats((unsigned char)34);  // '"'
+  __vector unsigned char v92 = vec_splats((unsigned char)92);  // '\\'
+  __vector unsigned char v32 = vec_splats((unsigned char)32);  // control char threshold
+
+  // Bitmask for vec_vbpermq to extract one bit per byte
+  const __vector unsigned char perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50,
+                                            0x48, 0x40, 0x38, 0x30, 0x28, 0x20,
+                                            0x18, 0x10, 0x08, 0x00};
+
+  while (remaining >= 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(ptr));
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    __vector unsigned char needs_escape =
+        (__vector unsigned char)vec_cmpeq(word, v34);
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmpeq(word, v92));
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmplt(word, v32));
+
+    __vector unsigned long long result =
+        (__vector unsigned long long)vec_vbpermq(needs_escape, perm_mask);
+#ifdef __LITTLE_ENDIAN__
+    unsigned int mask = static_cast<unsigned int>(result[1]);
 #else
-      return offset + __builtin_ctz(mask);
+    unsigned int mask = static_cast<unsigned int>(result[0]);
 #endif
+    if (mask != 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + __builtin_ctz(mask);
     }
     ptr += 16;
     remaining -= 16;
@@ -40506,6 +40884,19 @@ simdjson_inline int leading_zeroes(uint64_t input_num) {
 #endif// _MSC_VER
 }
 
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#ifdef _MSC_VER
+  unsigned long trailing_zero = 0;
+  // Search the mask data from least significant bit (LSB)
+  // to most significant bit (MSB) for a set bit (1).
+  if (_BitScanForward64(&trailing_zero, input_num))
+    return (int)trailing_zero;
+  else    return 64;
+#else
+  return __builtin_ctzll(input_num);
+#endif// _MSC_VER
+}
+
 } // unnamed namespace
 } // namespace fallback
 } // namespace simdjson
@@ -41503,6 +41894,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
 #endif
 #endif
+#if defined(__loongarch_sx)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_LSX
+#define SIMDJSON_EXPERIMENTAL_HAS_LSX 1
+#endif
+#endif
+#if defined(__riscv_v_intrinsic) && __riscv_v_intrinsic >= 11000 &&            \
+    defined(__riscv_vector)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_RVV
+#define SIMDJSON_EXPERIMENTAL_HAS_RVV 1
+#endif
+#endif
+#if (defined(__PPC64__) || defined(_M_PPC64)) && defined(__ALTIVEC__)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#define SIMDJSON_EXPERIMENTAL_HAS_PPC64 1
+#endif
+#endif
 #if SIMDJSON_EXPERIMENTAL_HAS_NEON
 #include <arm_neon.h>
 #ifdef _MSC_VER
@@ -41515,6 +41922,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #include <intrin.h>
 #endif
 #endif
+#if SIMDJSON_EXPERIMENTAL_HAS_LSX
+#include <lsxintrin.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_RVV
+#include <riscv_vector.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#include <altivec.h>
+#ifdef bool
+#undef bool
+#endif
+#ifdef vector
+#undef vector
+#endif
+#endif
+
 
 namespace simdjson {
 namespace fallback {
@@ -41615,6 +42038,35 @@ simdjson_inline bool fast_needs_escaping(std::string_view view) {
   }
   return _mm_movemask_epi8(running) != 0;
 }
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __vector unsigned char running = vec_splats((unsigned char)0);
+  __vector unsigned char v34 = vec_splats((unsigned char)34);
+  __vector unsigned char v92 = vec_splats((unsigned char)92);
+  __vector unsigned char v32 = vec_splats((unsigned char)32);
+
+  for (; i + 15 < view.size(); i += 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(view.data() + i));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  if (i < view.size()) {
+    __vector unsigned char word = vec_vsx_ld(
+        0, reinterpret_cast<const unsigned char *>(view.data() + view.length() - 16));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  return !vec_all_eq(running, vec_splats((unsigned char)0));
+}
 #else
 simdjson_inline bool fast_needs_escaping(std::string_view view) {
   return simple_needs_escaping(view);
@@ -41658,28 +42110,12 @@ find_next_json_quotable_character(const std::string_view view,
     needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
     needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
 
-    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
-      // Found quotable character - extract exact byte position using ctz
-      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
-      uint64_t lo = vgetq_lane_u64(as64, 0);
-      uint64_t hi = vgetq_lane_u64(as64, 1);
+    const uint8x8_t res = vshrn_n_u16(vreinterpretq_u16_u8(needs_escape), 4);
+    const uint64_t mask = vget_lane_u64(vreinterpret_u64_u8(res), 0);
+    if(mask != 0) {
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      if (lo != 0) {
-        _BitScanForward64(&trailing_zero, lo);
-        return offset + trailing_zero / 8;
-      } else {
-        _BitScanForward64(&trailing_zero, hi);
-        return offset + 8 + trailing_zero / 8;
-      }
-#else
-      if (lo != 0) {
-        return offset + __builtin_ctzll(lo) / 8;
-      } else {
-        return offset + 8 + __builtin_ctzll(hi) / 8;
-      }
-#endif
+      auto trailing_zero = trailing_zeroes(mask);
+      return offset + (trailing_zero >> 2);
     }
     ptr += 16;
     remaining -= 16;
@@ -41717,13 +42153,128 @@ find_next_json_quotable_character(const std::string_view view,
     if (mask != 0) {
       // Found quotable character - use trailing zero count to find position
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      _BitScanForward(&trailing_zero, mask);
-      return offset + trailing_zero;
+      return offset + trailing_zeroes(mask);
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_LSX
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  //SIMD constants for characters requiring escape
+  __m128i v34 = __lsx_vreplgr2vr_b(34);  // '"'
+  __m128i v92 = __lsx_vreplgr2vr_b(92);  // '\\'
+  __m128i v32 = __lsx_vreplgr2vr_b(32);  // control char threshold
+
+  while (remaining >= 16){
+    __m128i word = __lsx_vld(ptr, 0);
+
+    //Check for the quotable characters: '"', '\\', or control char (<32)
+    __m128i needs_escape = __lsx_vseq_b(word, v34);
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vseq_b(word, v92));
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vslt_bu(word, v32));
+
+    if (!__lsx_bz_v(needs_escape)){
+
+      //Found quotable character - extract exact byte position
+      uint64_t lo = __lsx_vpickve2gr_du(needs_escape,0);
+      uint64_t hi = __lsx_vpickve2gr_du(needs_escape,1);
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      if ( lo != 0) {
+        return offset + trailing_zeroes(lo) / 8;
+      } else {
+        return offset + 8 + trailing_zeroes(hi) / 8;
+      }
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_RVV
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  while (remaining > 0) {
+    size_t vl = __riscv_vsetvl_e8m1(remaining);
+    vuint8m1_t word = __riscv_vle8_v_u8m1(ptr, vl);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    vbool8_t needs_escape = __riscv_vmseq(word, (uint8_t)34, vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmseq(word, (uint8_t)92, vl), vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmsltu(word, (uint8_t)32, vl), vl);
+
+    long first = __riscv_vfirst(needs_escape, vl);
+    if (first >= 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + first;
+    }
+    ptr += vl;
+    remaining -= vl;
+  }
+
+  return len;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  __vector unsigned char v34 = vec_splats((unsigned char)34);  // '"'
+  __vector unsigned char v92 = vec_splats((unsigned char)92);  // '\\'
+  __vector unsigned char v32 = vec_splats((unsigned char)32);  // control char threshold
+
+  // Bitmask for vec_vbpermq to extract one bit per byte
+  const __vector unsigned char perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50,
+                                            0x48, 0x40, 0x38, 0x30, 0x28, 0x20,
+                                            0x18, 0x10, 0x08, 0x00};
+
+  while (remaining >= 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(ptr));
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    __vector unsigned char needs_escape =
+        (__vector unsigned char)vec_cmpeq(word, v34);
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmpeq(word, v92));
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmplt(word, v32));
+
+    __vector unsigned long long result =
+        (__vector unsigned long long)vec_vbpermq(needs_escape, perm_mask);
+#ifdef __LITTLE_ENDIAN__
+    unsigned int mask = static_cast<unsigned int>(result[1]);
 #else
-      return offset + __builtin_ctz(mask);
+    unsigned int mask = static_cast<unsigned int>(result[0]);
 #endif
+    if (mask != 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + __builtin_ctz(mask);
     }
     ptr += 16;
     remaining -= 16;
@@ -43914,6 +44465,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
 #endif
 #endif
+#if defined(__loongarch_sx)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_LSX
+#define SIMDJSON_EXPERIMENTAL_HAS_LSX 1
+#endif
+#endif
+#if defined(__riscv_v_intrinsic) && __riscv_v_intrinsic >= 11000 &&            \
+    defined(__riscv_vector)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_RVV
+#define SIMDJSON_EXPERIMENTAL_HAS_RVV 1
+#endif
+#endif
+#if (defined(__PPC64__) || defined(_M_PPC64)) && defined(__ALTIVEC__)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#define SIMDJSON_EXPERIMENTAL_HAS_PPC64 1
+#endif
+#endif
 #if SIMDJSON_EXPERIMENTAL_HAS_NEON
 #include <arm_neon.h>
 #ifdef _MSC_VER
@@ -43926,6 +44493,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #include <intrin.h>
 #endif
 #endif
+#if SIMDJSON_EXPERIMENTAL_HAS_LSX
+#include <lsxintrin.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_RVV
+#include <riscv_vector.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#include <altivec.h>
+#ifdef bool
+#undef bool
+#endif
+#ifdef vector
+#undef vector
+#endif
+#endif
+
 
 namespace simdjson {
 namespace haswell {
@@ -44026,6 +44609,35 @@ simdjson_inline bool fast_needs_escaping(std::string_view view) {
   }
   return _mm_movemask_epi8(running) != 0;
 }
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __vector unsigned char running = vec_splats((unsigned char)0);
+  __vector unsigned char v34 = vec_splats((unsigned char)34);
+  __vector unsigned char v92 = vec_splats((unsigned char)92);
+  __vector unsigned char v32 = vec_splats((unsigned char)32);
+
+  for (; i + 15 < view.size(); i += 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(view.data() + i));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  if (i < view.size()) {
+    __vector unsigned char word = vec_vsx_ld(
+        0, reinterpret_cast<const unsigned char *>(view.data() + view.length() - 16));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  return !vec_all_eq(running, vec_splats((unsigned char)0));
+}
 #else
 simdjson_inline bool fast_needs_escaping(std::string_view view) {
   return simple_needs_escaping(view);
@@ -44069,28 +44681,12 @@ find_next_json_quotable_character(const std::string_view view,
     needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
     needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
 
-    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
-      // Found quotable character - extract exact byte position using ctz
-      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
-      uint64_t lo = vgetq_lane_u64(as64, 0);
-      uint64_t hi = vgetq_lane_u64(as64, 1);
+    const uint8x8_t res = vshrn_n_u16(vreinterpretq_u16_u8(needs_escape), 4);
+    const uint64_t mask = vget_lane_u64(vreinterpret_u64_u8(res), 0);
+    if(mask != 0) {
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      if (lo != 0) {
-        _BitScanForward64(&trailing_zero, lo);
-        return offset + trailing_zero / 8;
-      } else {
-        _BitScanForward64(&trailing_zero, hi);
-        return offset + 8 + trailing_zero / 8;
-      }
-#else
-      if (lo != 0) {
-        return offset + __builtin_ctzll(lo) / 8;
-      } else {
-        return offset + 8 + __builtin_ctzll(hi) / 8;
-      }
-#endif
+      auto trailing_zero = trailing_zeroes(mask);
+      return offset + (trailing_zero >> 2);
     }
     ptr += 16;
     remaining -= 16;
@@ -44128,13 +44724,128 @@ find_next_json_quotable_character(const std::string_view view,
     if (mask != 0) {
       // Found quotable character - use trailing zero count to find position
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      _BitScanForward(&trailing_zero, mask);
-      return offset + trailing_zero;
+      return offset + trailing_zeroes(mask);
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_LSX
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  //SIMD constants for characters requiring escape
+  __m128i v34 = __lsx_vreplgr2vr_b(34);  // '"'
+  __m128i v92 = __lsx_vreplgr2vr_b(92);  // '\\'
+  __m128i v32 = __lsx_vreplgr2vr_b(32);  // control char threshold
+
+  while (remaining >= 16){
+    __m128i word = __lsx_vld(ptr, 0);
+
+    //Check for the quotable characters: '"', '\\', or control char (<32)
+    __m128i needs_escape = __lsx_vseq_b(word, v34);
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vseq_b(word, v92));
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vslt_bu(word, v32));
+
+    if (!__lsx_bz_v(needs_escape)){
+
+      //Found quotable character - extract exact byte position
+      uint64_t lo = __lsx_vpickve2gr_du(needs_escape,0);
+      uint64_t hi = __lsx_vpickve2gr_du(needs_escape,1);
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      if ( lo != 0) {
+        return offset + trailing_zeroes(lo) / 8;
+      } else {
+        return offset + 8 + trailing_zeroes(hi) / 8;
+      }
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_RVV
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  while (remaining > 0) {
+    size_t vl = __riscv_vsetvl_e8m1(remaining);
+    vuint8m1_t word = __riscv_vle8_v_u8m1(ptr, vl);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    vbool8_t needs_escape = __riscv_vmseq(word, (uint8_t)34, vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmseq(word, (uint8_t)92, vl), vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmsltu(word, (uint8_t)32, vl), vl);
+
+    long first = __riscv_vfirst(needs_escape, vl);
+    if (first >= 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + first;
+    }
+    ptr += vl;
+    remaining -= vl;
+  }
+
+  return len;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  __vector unsigned char v34 = vec_splats((unsigned char)34);  // '"'
+  __vector unsigned char v92 = vec_splats((unsigned char)92);  // '\\'
+  __vector unsigned char v32 = vec_splats((unsigned char)32);  // control char threshold
+
+  // Bitmask for vec_vbpermq to extract one bit per byte
+  const __vector unsigned char perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50,
+                                            0x48, 0x40, 0x38, 0x30, 0x28, 0x20,
+                                            0x18, 0x10, 0x08, 0x00};
+
+  while (remaining >= 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(ptr));
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    __vector unsigned char needs_escape =
+        (__vector unsigned char)vec_cmpeq(word, v34);
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmpeq(word, v92));
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmplt(word, v32));
+
+    __vector unsigned long long result =
+        (__vector unsigned long long)vec_vbpermq(needs_escape, perm_mask);
+#ifdef __LITTLE_ENDIAN__
+    unsigned int mask = static_cast<unsigned int>(result[1]);
 #else
-      return offset + __builtin_ctz(mask);
+    unsigned int mask = static_cast<unsigned int>(result[0]);
 #endif
+    if (mask != 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + __builtin_ctz(mask);
     }
     ptr += 16;
     remaining -= 16;
@@ -46325,6 +47036,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
 #endif
 #endif
+#if defined(__loongarch_sx)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_LSX
+#define SIMDJSON_EXPERIMENTAL_HAS_LSX 1
+#endif
+#endif
+#if defined(__riscv_v_intrinsic) && __riscv_v_intrinsic >= 11000 &&            \
+    defined(__riscv_vector)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_RVV
+#define SIMDJSON_EXPERIMENTAL_HAS_RVV 1
+#endif
+#endif
+#if (defined(__PPC64__) || defined(_M_PPC64)) && defined(__ALTIVEC__)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#define SIMDJSON_EXPERIMENTAL_HAS_PPC64 1
+#endif
+#endif
 #if SIMDJSON_EXPERIMENTAL_HAS_NEON
 #include <arm_neon.h>
 #ifdef _MSC_VER
@@ -46337,6 +47064,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #include <intrin.h>
 #endif
 #endif
+#if SIMDJSON_EXPERIMENTAL_HAS_LSX
+#include <lsxintrin.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_RVV
+#include <riscv_vector.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#include <altivec.h>
+#ifdef bool
+#undef bool
+#endif
+#ifdef vector
+#undef vector
+#endif
+#endif
+
 
 namespace simdjson {
 namespace icelake {
@@ -46437,6 +47180,35 @@ simdjson_inline bool fast_needs_escaping(std::string_view view) {
   }
   return _mm_movemask_epi8(running) != 0;
 }
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __vector unsigned char running = vec_splats((unsigned char)0);
+  __vector unsigned char v34 = vec_splats((unsigned char)34);
+  __vector unsigned char v92 = vec_splats((unsigned char)92);
+  __vector unsigned char v32 = vec_splats((unsigned char)32);
+
+  for (; i + 15 < view.size(); i += 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(view.data() + i));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  if (i < view.size()) {
+    __vector unsigned char word = vec_vsx_ld(
+        0, reinterpret_cast<const unsigned char *>(view.data() + view.length() - 16));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  return !vec_all_eq(running, vec_splats((unsigned char)0));
+}
 #else
 simdjson_inline bool fast_needs_escaping(std::string_view view) {
   return simple_needs_escaping(view);
@@ -46480,28 +47252,12 @@ find_next_json_quotable_character(const std::string_view view,
     needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
     needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
 
-    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
-      // Found quotable character - extract exact byte position using ctz
-      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
-      uint64_t lo = vgetq_lane_u64(as64, 0);
-      uint64_t hi = vgetq_lane_u64(as64, 1);
+    const uint8x8_t res = vshrn_n_u16(vreinterpretq_u16_u8(needs_escape), 4);
+    const uint64_t mask = vget_lane_u64(vreinterpret_u64_u8(res), 0);
+    if(mask != 0) {
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      if (lo != 0) {
-        _BitScanForward64(&trailing_zero, lo);
-        return offset + trailing_zero / 8;
-      } else {
-        _BitScanForward64(&trailing_zero, hi);
-        return offset + 8 + trailing_zero / 8;
-      }
-#else
-      if (lo != 0) {
-        return offset + __builtin_ctzll(lo) / 8;
-      } else {
-        return offset + 8 + __builtin_ctzll(hi) / 8;
-      }
-#endif
+      auto trailing_zero = trailing_zeroes(mask);
+      return offset + (trailing_zero >> 2);
     }
     ptr += 16;
     remaining -= 16;
@@ -46539,13 +47295,128 @@ find_next_json_quotable_character(const std::string_view view,
     if (mask != 0) {
       // Found quotable character - use trailing zero count to find position
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      _BitScanForward(&trailing_zero, mask);
-      return offset + trailing_zero;
+      return offset + trailing_zeroes(mask);
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_LSX
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  //SIMD constants for characters requiring escape
+  __m128i v34 = __lsx_vreplgr2vr_b(34);  // '"'
+  __m128i v92 = __lsx_vreplgr2vr_b(92);  // '\\'
+  __m128i v32 = __lsx_vreplgr2vr_b(32);  // control char threshold
+
+  while (remaining >= 16){
+    __m128i word = __lsx_vld(ptr, 0);
+
+    //Check for the quotable characters: '"', '\\', or control char (<32)
+    __m128i needs_escape = __lsx_vseq_b(word, v34);
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vseq_b(word, v92));
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vslt_bu(word, v32));
+
+    if (!__lsx_bz_v(needs_escape)){
+
+      //Found quotable character - extract exact byte position
+      uint64_t lo = __lsx_vpickve2gr_du(needs_escape,0);
+      uint64_t hi = __lsx_vpickve2gr_du(needs_escape,1);
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      if ( lo != 0) {
+        return offset + trailing_zeroes(lo) / 8;
+      } else {
+        return offset + 8 + trailing_zeroes(hi) / 8;
+      }
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_RVV
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  while (remaining > 0) {
+    size_t vl = __riscv_vsetvl_e8m1(remaining);
+    vuint8m1_t word = __riscv_vle8_v_u8m1(ptr, vl);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    vbool8_t needs_escape = __riscv_vmseq(word, (uint8_t)34, vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmseq(word, (uint8_t)92, vl), vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmsltu(word, (uint8_t)32, vl), vl);
+
+    long first = __riscv_vfirst(needs_escape, vl);
+    if (first >= 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + first;
+    }
+    ptr += vl;
+    remaining -= vl;
+  }
+
+  return len;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  __vector unsigned char v34 = vec_splats((unsigned char)34);  // '"'
+  __vector unsigned char v92 = vec_splats((unsigned char)92);  // '\\'
+  __vector unsigned char v32 = vec_splats((unsigned char)32);  // control char threshold
+
+  // Bitmask for vec_vbpermq to extract one bit per byte
+  const __vector unsigned char perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50,
+                                            0x48, 0x40, 0x38, 0x30, 0x28, 0x20,
+                                            0x18, 0x10, 0x08, 0x00};
+
+  while (remaining >= 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(ptr));
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    __vector unsigned char needs_escape =
+        (__vector unsigned char)vec_cmpeq(word, v34);
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmpeq(word, v92));
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmplt(word, v32));
+
+    __vector unsigned long long result =
+        (__vector unsigned long long)vec_vbpermq(needs_escape, perm_mask);
+#ifdef __LITTLE_ENDIAN__
+    unsigned int mask = static_cast<unsigned int>(result[1]);
 #else
-      return offset + __builtin_ctz(mask);
+    unsigned int mask = static_cast<unsigned int>(result[0]);
 #endif
+    if (mask != 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + __builtin_ctz(mask);
     }
     ptr += 16;
     remaining -= 16;
@@ -48851,6 +49722,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
 #endif
 #endif
+#if defined(__loongarch_sx)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_LSX
+#define SIMDJSON_EXPERIMENTAL_HAS_LSX 1
+#endif
+#endif
+#if defined(__riscv_v_intrinsic) && __riscv_v_intrinsic >= 11000 &&            \
+    defined(__riscv_vector)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_RVV
+#define SIMDJSON_EXPERIMENTAL_HAS_RVV 1
+#endif
+#endif
+#if (defined(__PPC64__) || defined(_M_PPC64)) && defined(__ALTIVEC__)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#define SIMDJSON_EXPERIMENTAL_HAS_PPC64 1
+#endif
+#endif
 #if SIMDJSON_EXPERIMENTAL_HAS_NEON
 #include <arm_neon.h>
 #ifdef _MSC_VER
@@ -48863,6 +49750,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #include <intrin.h>
 #endif
 #endif
+#if SIMDJSON_EXPERIMENTAL_HAS_LSX
+#include <lsxintrin.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_RVV
+#include <riscv_vector.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#include <altivec.h>
+#ifdef bool
+#undef bool
+#endif
+#ifdef vector
+#undef vector
+#endif
+#endif
+
 
 namespace simdjson {
 namespace ppc64 {
@@ -48963,6 +49866,35 @@ simdjson_inline bool fast_needs_escaping(std::string_view view) {
   }
   return _mm_movemask_epi8(running) != 0;
 }
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __vector unsigned char running = vec_splats((unsigned char)0);
+  __vector unsigned char v34 = vec_splats((unsigned char)34);
+  __vector unsigned char v92 = vec_splats((unsigned char)92);
+  __vector unsigned char v32 = vec_splats((unsigned char)32);
+
+  for (; i + 15 < view.size(); i += 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(view.data() + i));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  if (i < view.size()) {
+    __vector unsigned char word = vec_vsx_ld(
+        0, reinterpret_cast<const unsigned char *>(view.data() + view.length() - 16));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  return !vec_all_eq(running, vec_splats((unsigned char)0));
+}
 #else
 simdjson_inline bool fast_needs_escaping(std::string_view view) {
   return simple_needs_escaping(view);
@@ -49006,28 +49938,12 @@ find_next_json_quotable_character(const std::string_view view,
     needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
     needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
 
-    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
-      // Found quotable character - extract exact byte position using ctz
-      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
-      uint64_t lo = vgetq_lane_u64(as64, 0);
-      uint64_t hi = vgetq_lane_u64(as64, 1);
+    const uint8x8_t res = vshrn_n_u16(vreinterpretq_u16_u8(needs_escape), 4);
+    const uint64_t mask = vget_lane_u64(vreinterpret_u64_u8(res), 0);
+    if(mask != 0) {
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      if (lo != 0) {
-        _BitScanForward64(&trailing_zero, lo);
-        return offset + trailing_zero / 8;
-      } else {
-        _BitScanForward64(&trailing_zero, hi);
-        return offset + 8 + trailing_zero / 8;
-      }
-#else
-      if (lo != 0) {
-        return offset + __builtin_ctzll(lo) / 8;
-      } else {
-        return offset + 8 + __builtin_ctzll(hi) / 8;
-      }
-#endif
+      auto trailing_zero = trailing_zeroes(mask);
+      return offset + (trailing_zero >> 2);
     }
     ptr += 16;
     remaining -= 16;
@@ -49065,13 +49981,128 @@ find_next_json_quotable_character(const std::string_view view,
     if (mask != 0) {
       // Found quotable character - use trailing zero count to find position
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      _BitScanForward(&trailing_zero, mask);
-      return offset + trailing_zero;
+      return offset + trailing_zeroes(mask);
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_LSX
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  //SIMD constants for characters requiring escape
+  __m128i v34 = __lsx_vreplgr2vr_b(34);  // '"'
+  __m128i v92 = __lsx_vreplgr2vr_b(92);  // '\\'
+  __m128i v32 = __lsx_vreplgr2vr_b(32);  // control char threshold
+
+  while (remaining >= 16){
+    __m128i word = __lsx_vld(ptr, 0);
+
+    //Check for the quotable characters: '"', '\\', or control char (<32)
+    __m128i needs_escape = __lsx_vseq_b(word, v34);
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vseq_b(word, v92));
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vslt_bu(word, v32));
+
+    if (!__lsx_bz_v(needs_escape)){
+
+      //Found quotable character - extract exact byte position
+      uint64_t lo = __lsx_vpickve2gr_du(needs_escape,0);
+      uint64_t hi = __lsx_vpickve2gr_du(needs_escape,1);
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      if ( lo != 0) {
+        return offset + trailing_zeroes(lo) / 8;
+      } else {
+        return offset + 8 + trailing_zeroes(hi) / 8;
+      }
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_RVV
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  while (remaining > 0) {
+    size_t vl = __riscv_vsetvl_e8m1(remaining);
+    vuint8m1_t word = __riscv_vle8_v_u8m1(ptr, vl);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    vbool8_t needs_escape = __riscv_vmseq(word, (uint8_t)34, vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmseq(word, (uint8_t)92, vl), vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmsltu(word, (uint8_t)32, vl), vl);
+
+    long first = __riscv_vfirst(needs_escape, vl);
+    if (first >= 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + first;
+    }
+    ptr += vl;
+    remaining -= vl;
+  }
+
+  return len;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  __vector unsigned char v34 = vec_splats((unsigned char)34);  // '"'
+  __vector unsigned char v92 = vec_splats((unsigned char)92);  // '\\'
+  __vector unsigned char v32 = vec_splats((unsigned char)32);  // control char threshold
+
+  // Bitmask for vec_vbpermq to extract one bit per byte
+  const __vector unsigned char perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50,
+                                            0x48, 0x40, 0x38, 0x30, 0x28, 0x20,
+                                            0x18, 0x10, 0x08, 0x00};
+
+  while (remaining >= 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(ptr));
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    __vector unsigned char needs_escape =
+        (__vector unsigned char)vec_cmpeq(word, v34);
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmpeq(word, v92));
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmplt(word, v32));
+
+    __vector unsigned long long result =
+        (__vector unsigned long long)vec_vbpermq(needs_escape, perm_mask);
+#ifdef __LITTLE_ENDIAN__
+    unsigned int mask = static_cast<unsigned int>(result[1]);
 #else
-      return offset + __builtin_ctz(mask);
+    unsigned int mask = static_cast<unsigned int>(result[0]);
 #endif
+    if (mask != 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + __builtin_ctz(mask);
     }
     ptr += 16;
     remaining -= 16;
@@ -51694,6 +52725,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
 #endif
 #endif
+#if defined(__loongarch_sx)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_LSX
+#define SIMDJSON_EXPERIMENTAL_HAS_LSX 1
+#endif
+#endif
+#if defined(__riscv_v_intrinsic) && __riscv_v_intrinsic >= 11000 &&            \
+    defined(__riscv_vector)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_RVV
+#define SIMDJSON_EXPERIMENTAL_HAS_RVV 1
+#endif
+#endif
+#if (defined(__PPC64__) || defined(_M_PPC64)) && defined(__ALTIVEC__)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#define SIMDJSON_EXPERIMENTAL_HAS_PPC64 1
+#endif
+#endif
 #if SIMDJSON_EXPERIMENTAL_HAS_NEON
 #include <arm_neon.h>
 #ifdef _MSC_VER
@@ -51706,6 +52753,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #include <intrin.h>
 #endif
 #endif
+#if SIMDJSON_EXPERIMENTAL_HAS_LSX
+#include <lsxintrin.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_RVV
+#include <riscv_vector.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#include <altivec.h>
+#ifdef bool
+#undef bool
+#endif
+#ifdef vector
+#undef vector
+#endif
+#endif
+
 
 namespace simdjson {
 namespace westmere {
@@ -51806,6 +52869,35 @@ simdjson_inline bool fast_needs_escaping(std::string_view view) {
   }
   return _mm_movemask_epi8(running) != 0;
 }
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __vector unsigned char running = vec_splats((unsigned char)0);
+  __vector unsigned char v34 = vec_splats((unsigned char)34);
+  __vector unsigned char v92 = vec_splats((unsigned char)92);
+  __vector unsigned char v32 = vec_splats((unsigned char)32);
+
+  for (; i + 15 < view.size(); i += 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(view.data() + i));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  if (i < view.size()) {
+    __vector unsigned char word = vec_vsx_ld(
+        0, reinterpret_cast<const unsigned char *>(view.data() + view.length() - 16));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  return !vec_all_eq(running, vec_splats((unsigned char)0));
+}
 #else
 simdjson_inline bool fast_needs_escaping(std::string_view view) {
   return simple_needs_escaping(view);
@@ -51849,28 +52941,12 @@ find_next_json_quotable_character(const std::string_view view,
     needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
     needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
 
-    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
-      // Found quotable character - extract exact byte position using ctz
-      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
-      uint64_t lo = vgetq_lane_u64(as64, 0);
-      uint64_t hi = vgetq_lane_u64(as64, 1);
+    const uint8x8_t res = vshrn_n_u16(vreinterpretq_u16_u8(needs_escape), 4);
+    const uint64_t mask = vget_lane_u64(vreinterpret_u64_u8(res), 0);
+    if(mask != 0) {
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      if (lo != 0) {
-        _BitScanForward64(&trailing_zero, lo);
-        return offset + trailing_zero / 8;
-      } else {
-        _BitScanForward64(&trailing_zero, hi);
-        return offset + 8 + trailing_zero / 8;
-      }
-#else
-      if (lo != 0) {
-        return offset + __builtin_ctzll(lo) / 8;
-      } else {
-        return offset + 8 + __builtin_ctzll(hi) / 8;
-      }
-#endif
+      auto trailing_zero = trailing_zeroes(mask);
+      return offset + (trailing_zero >> 2);
     }
     ptr += 16;
     remaining -= 16;
@@ -51908,13 +52984,128 @@ find_next_json_quotable_character(const std::string_view view,
     if (mask != 0) {
       // Found quotable character - use trailing zero count to find position
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      _BitScanForward(&trailing_zero, mask);
-      return offset + trailing_zero;
+      return offset + trailing_zeroes(mask);
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_LSX
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  //SIMD constants for characters requiring escape
+  __m128i v34 = __lsx_vreplgr2vr_b(34);  // '"'
+  __m128i v92 = __lsx_vreplgr2vr_b(92);  // '\\'
+  __m128i v32 = __lsx_vreplgr2vr_b(32);  // control char threshold
+
+  while (remaining >= 16){
+    __m128i word = __lsx_vld(ptr, 0);
+
+    //Check for the quotable characters: '"', '\\', or control char (<32)
+    __m128i needs_escape = __lsx_vseq_b(word, v34);
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vseq_b(word, v92));
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vslt_bu(word, v32));
+
+    if (!__lsx_bz_v(needs_escape)){
+
+      //Found quotable character - extract exact byte position
+      uint64_t lo = __lsx_vpickve2gr_du(needs_escape,0);
+      uint64_t hi = __lsx_vpickve2gr_du(needs_escape,1);
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      if ( lo != 0) {
+        return offset + trailing_zeroes(lo) / 8;
+      } else {
+        return offset + 8 + trailing_zeroes(hi) / 8;
+      }
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_RVV
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  while (remaining > 0) {
+    size_t vl = __riscv_vsetvl_e8m1(remaining);
+    vuint8m1_t word = __riscv_vle8_v_u8m1(ptr, vl);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    vbool8_t needs_escape = __riscv_vmseq(word, (uint8_t)34, vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmseq(word, (uint8_t)92, vl), vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmsltu(word, (uint8_t)32, vl), vl);
+
+    long first = __riscv_vfirst(needs_escape, vl);
+    if (first >= 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + first;
+    }
+    ptr += vl;
+    remaining -= vl;
+  }
+
+  return len;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  __vector unsigned char v34 = vec_splats((unsigned char)34);  // '"'
+  __vector unsigned char v92 = vec_splats((unsigned char)92);  // '\\'
+  __vector unsigned char v32 = vec_splats((unsigned char)32);  // control char threshold
+
+  // Bitmask for vec_vbpermq to extract one bit per byte
+  const __vector unsigned char perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50,
+                                            0x48, 0x40, 0x38, 0x30, 0x28, 0x20,
+                                            0x18, 0x10, 0x08, 0x00};
+
+  while (remaining >= 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(ptr));
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    __vector unsigned char needs_escape =
+        (__vector unsigned char)vec_cmpeq(word, v34);
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmpeq(word, v92));
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmplt(word, v32));
+
+    __vector unsigned long long result =
+        (__vector unsigned long long)vec_vbpermq(needs_escape, perm_mask);
+#ifdef __LITTLE_ENDIAN__
+    unsigned int mask = static_cast<unsigned int>(result[1]);
 #else
-      return offset + __builtin_ctz(mask);
+    unsigned int mask = static_cast<unsigned int>(result[0]);
 #endif
+    if (mask != 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + __builtin_ctz(mask);
     }
     ptr += 16;
     remaining -= 16;
@@ -54011,6 +55202,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
 #endif
 #endif
+#if defined(__loongarch_sx)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_LSX
+#define SIMDJSON_EXPERIMENTAL_HAS_LSX 1
+#endif
+#endif
+#if defined(__riscv_v_intrinsic) && __riscv_v_intrinsic >= 11000 &&            \
+    defined(__riscv_vector)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_RVV
+#define SIMDJSON_EXPERIMENTAL_HAS_RVV 1
+#endif
+#endif
+#if (defined(__PPC64__) || defined(_M_PPC64)) && defined(__ALTIVEC__)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#define SIMDJSON_EXPERIMENTAL_HAS_PPC64 1
+#endif
+#endif
 #if SIMDJSON_EXPERIMENTAL_HAS_NEON
 #include <arm_neon.h>
 #ifdef _MSC_VER
@@ -54023,6 +55230,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #include <intrin.h>
 #endif
 #endif
+#if SIMDJSON_EXPERIMENTAL_HAS_LSX
+#include <lsxintrin.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_RVV
+#include <riscv_vector.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#include <altivec.h>
+#ifdef bool
+#undef bool
+#endif
+#ifdef vector
+#undef vector
+#endif
+#endif
+
 
 namespace simdjson {
 namespace lsx {
@@ -54123,6 +55346,35 @@ simdjson_inline bool fast_needs_escaping(std::string_view view) {
   }
   return _mm_movemask_epi8(running) != 0;
 }
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __vector unsigned char running = vec_splats((unsigned char)0);
+  __vector unsigned char v34 = vec_splats((unsigned char)34);
+  __vector unsigned char v92 = vec_splats((unsigned char)92);
+  __vector unsigned char v32 = vec_splats((unsigned char)32);
+
+  for (; i + 15 < view.size(); i += 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(view.data() + i));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  if (i < view.size()) {
+    __vector unsigned char word = vec_vsx_ld(
+        0, reinterpret_cast<const unsigned char *>(view.data() + view.length() - 16));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  return !vec_all_eq(running, vec_splats((unsigned char)0));
+}
 #else
 simdjson_inline bool fast_needs_escaping(std::string_view view) {
   return simple_needs_escaping(view);
@@ -54166,28 +55418,12 @@ find_next_json_quotable_character(const std::string_view view,
     needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
     needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
 
-    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
-      // Found quotable character - extract exact byte position using ctz
-      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
-      uint64_t lo = vgetq_lane_u64(as64, 0);
-      uint64_t hi = vgetq_lane_u64(as64, 1);
+    const uint8x8_t res = vshrn_n_u16(vreinterpretq_u16_u8(needs_escape), 4);
+    const uint64_t mask = vget_lane_u64(vreinterpret_u64_u8(res), 0);
+    if(mask != 0) {
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      if (lo != 0) {
-        _BitScanForward64(&trailing_zero, lo);
-        return offset + trailing_zero / 8;
-      } else {
-        _BitScanForward64(&trailing_zero, hi);
-        return offset + 8 + trailing_zero / 8;
-      }
-#else
-      if (lo != 0) {
-        return offset + __builtin_ctzll(lo) / 8;
-      } else {
-        return offset + 8 + __builtin_ctzll(hi) / 8;
-      }
-#endif
+      auto trailing_zero = trailing_zeroes(mask);
+      return offset + (trailing_zero >> 2);
     }
     ptr += 16;
     remaining -= 16;
@@ -54225,13 +55461,128 @@ find_next_json_quotable_character(const std::string_view view,
     if (mask != 0) {
       // Found quotable character - use trailing zero count to find position
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      _BitScanForward(&trailing_zero, mask);
-      return offset + trailing_zero;
+      return offset + trailing_zeroes(mask);
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_LSX
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  //SIMD constants for characters requiring escape
+  __m128i v34 = __lsx_vreplgr2vr_b(34);  // '"'
+  __m128i v92 = __lsx_vreplgr2vr_b(92);  // '\\'
+  __m128i v32 = __lsx_vreplgr2vr_b(32);  // control char threshold
+
+  while (remaining >= 16){
+    __m128i word = __lsx_vld(ptr, 0);
+
+    //Check for the quotable characters: '"', '\\', or control char (<32)
+    __m128i needs_escape = __lsx_vseq_b(word, v34);
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vseq_b(word, v92));
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vslt_bu(word, v32));
+
+    if (!__lsx_bz_v(needs_escape)){
+
+      //Found quotable character - extract exact byte position
+      uint64_t lo = __lsx_vpickve2gr_du(needs_escape,0);
+      uint64_t hi = __lsx_vpickve2gr_du(needs_escape,1);
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      if ( lo != 0) {
+        return offset + trailing_zeroes(lo) / 8;
+      } else {
+        return offset + 8 + trailing_zeroes(hi) / 8;
+      }
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_RVV
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  while (remaining > 0) {
+    size_t vl = __riscv_vsetvl_e8m1(remaining);
+    vuint8m1_t word = __riscv_vle8_v_u8m1(ptr, vl);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    vbool8_t needs_escape = __riscv_vmseq(word, (uint8_t)34, vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmseq(word, (uint8_t)92, vl), vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmsltu(word, (uint8_t)32, vl), vl);
+
+    long first = __riscv_vfirst(needs_escape, vl);
+    if (first >= 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + first;
+    }
+    ptr += vl;
+    remaining -= vl;
+  }
+
+  return len;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  __vector unsigned char v34 = vec_splats((unsigned char)34);  // '"'
+  __vector unsigned char v92 = vec_splats((unsigned char)92);  // '\\'
+  __vector unsigned char v32 = vec_splats((unsigned char)32);  // control char threshold
+
+  // Bitmask for vec_vbpermq to extract one bit per byte
+  const __vector unsigned char perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50,
+                                            0x48, 0x40, 0x38, 0x30, 0x28, 0x20,
+                                            0x18, 0x10, 0x08, 0x00};
+
+  while (remaining >= 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(ptr));
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    __vector unsigned char needs_escape =
+        (__vector unsigned char)vec_cmpeq(word, v34);
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmpeq(word, v92));
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmplt(word, v32));
+
+    __vector unsigned long long result =
+        (__vector unsigned long long)vec_vbpermq(needs_escape, perm_mask);
+#ifdef __LITTLE_ENDIAN__
+    unsigned int mask = static_cast<unsigned int>(result[1]);
 #else
-      return offset + __builtin_ctz(mask);
+    unsigned int mask = static_cast<unsigned int>(result[0]);
 #endif
+    if (mask != 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + __builtin_ctz(mask);
     }
     ptr += 16;
     remaining -= 16;
@@ -56351,6 +57702,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
 #endif
 #endif
+#if defined(__loongarch_sx)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_LSX
+#define SIMDJSON_EXPERIMENTAL_HAS_LSX 1
+#endif
+#endif
+#if defined(__riscv_v_intrinsic) && __riscv_v_intrinsic >= 11000 &&            \
+    defined(__riscv_vector)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_RVV
+#define SIMDJSON_EXPERIMENTAL_HAS_RVV 1
+#endif
+#endif
+#if (defined(__PPC64__) || defined(_M_PPC64)) && defined(__ALTIVEC__)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#define SIMDJSON_EXPERIMENTAL_HAS_PPC64 1
+#endif
+#endif
 #if SIMDJSON_EXPERIMENTAL_HAS_NEON
 #include <arm_neon.h>
 #ifdef _MSC_VER
@@ -56363,6 +57730,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #include <intrin.h>
 #endif
 #endif
+#if SIMDJSON_EXPERIMENTAL_HAS_LSX
+#include <lsxintrin.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_RVV
+#include <riscv_vector.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#include <altivec.h>
+#ifdef bool
+#undef bool
+#endif
+#ifdef vector
+#undef vector
+#endif
+#endif
+
 
 namespace simdjson {
 namespace lasx {
@@ -56463,6 +57846,35 @@ simdjson_inline bool fast_needs_escaping(std::string_view view) {
   }
   return _mm_movemask_epi8(running) != 0;
 }
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __vector unsigned char running = vec_splats((unsigned char)0);
+  __vector unsigned char v34 = vec_splats((unsigned char)34);
+  __vector unsigned char v92 = vec_splats((unsigned char)92);
+  __vector unsigned char v32 = vec_splats((unsigned char)32);
+
+  for (; i + 15 < view.size(); i += 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(view.data() + i));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  if (i < view.size()) {
+    __vector unsigned char word = vec_vsx_ld(
+        0, reinterpret_cast<const unsigned char *>(view.data() + view.length() - 16));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  return !vec_all_eq(running, vec_splats((unsigned char)0));
+}
 #else
 simdjson_inline bool fast_needs_escaping(std::string_view view) {
   return simple_needs_escaping(view);
@@ -56506,28 +57918,12 @@ find_next_json_quotable_character(const std::string_view view,
     needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
     needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
 
-    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
-      // Found quotable character - extract exact byte position using ctz
-      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
-      uint64_t lo = vgetq_lane_u64(as64, 0);
-      uint64_t hi = vgetq_lane_u64(as64, 1);
+    const uint8x8_t res = vshrn_n_u16(vreinterpretq_u16_u8(needs_escape), 4);
+    const uint64_t mask = vget_lane_u64(vreinterpret_u64_u8(res), 0);
+    if(mask != 0) {
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      if (lo != 0) {
-        _BitScanForward64(&trailing_zero, lo);
-        return offset + trailing_zero / 8;
-      } else {
-        _BitScanForward64(&trailing_zero, hi);
-        return offset + 8 + trailing_zero / 8;
-      }
-#else
-      if (lo != 0) {
-        return offset + __builtin_ctzll(lo) / 8;
-      } else {
-        return offset + 8 + __builtin_ctzll(hi) / 8;
-      }
-#endif
+      auto trailing_zero = trailing_zeroes(mask);
+      return offset + (trailing_zero >> 2);
     }
     ptr += 16;
     remaining -= 16;
@@ -56565,13 +57961,128 @@ find_next_json_quotable_character(const std::string_view view,
     if (mask != 0) {
       // Found quotable character - use trailing zero count to find position
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      _BitScanForward(&trailing_zero, mask);
-      return offset + trailing_zero;
+      return offset + trailing_zeroes(mask);
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_LSX
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  //SIMD constants for characters requiring escape
+  __m128i v34 = __lsx_vreplgr2vr_b(34);  // '"'
+  __m128i v92 = __lsx_vreplgr2vr_b(92);  // '\\'
+  __m128i v32 = __lsx_vreplgr2vr_b(32);  // control char threshold
+
+  while (remaining >= 16){
+    __m128i word = __lsx_vld(ptr, 0);
+
+    //Check for the quotable characters: '"', '\\', or control char (<32)
+    __m128i needs_escape = __lsx_vseq_b(word, v34);
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vseq_b(word, v92));
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vslt_bu(word, v32));
+
+    if (!__lsx_bz_v(needs_escape)){
+
+      //Found quotable character - extract exact byte position
+      uint64_t lo = __lsx_vpickve2gr_du(needs_escape,0);
+      uint64_t hi = __lsx_vpickve2gr_du(needs_escape,1);
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      if ( lo != 0) {
+        return offset + trailing_zeroes(lo) / 8;
+      } else {
+        return offset + 8 + trailing_zeroes(hi) / 8;
+      }
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_RVV
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  while (remaining > 0) {
+    size_t vl = __riscv_vsetvl_e8m1(remaining);
+    vuint8m1_t word = __riscv_vle8_v_u8m1(ptr, vl);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    vbool8_t needs_escape = __riscv_vmseq(word, (uint8_t)34, vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmseq(word, (uint8_t)92, vl), vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmsltu(word, (uint8_t)32, vl), vl);
+
+    long first = __riscv_vfirst(needs_escape, vl);
+    if (first >= 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + first;
+    }
+    ptr += vl;
+    remaining -= vl;
+  }
+
+  return len;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  __vector unsigned char v34 = vec_splats((unsigned char)34);  // '"'
+  __vector unsigned char v92 = vec_splats((unsigned char)92);  // '\\'
+  __vector unsigned char v32 = vec_splats((unsigned char)32);  // control char threshold
+
+  // Bitmask for vec_vbpermq to extract one bit per byte
+  const __vector unsigned char perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50,
+                                            0x48, 0x40, 0x38, 0x30, 0x28, 0x20,
+                                            0x18, 0x10, 0x08, 0x00};
+
+  while (remaining >= 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(ptr));
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    __vector unsigned char needs_escape =
+        (__vector unsigned char)vec_cmpeq(word, v34);
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmpeq(word, v92));
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmplt(word, v32));
+
+    __vector unsigned long long result =
+        (__vector unsigned long long)vec_vbpermq(needs_escape, perm_mask);
+#ifdef __LITTLE_ENDIAN__
+    unsigned int mask = static_cast<unsigned int>(result[1]);
 #else
-      return offset + __builtin_ctz(mask);
+    unsigned int mask = static_cast<unsigned int>(result[0]);
 #endif
+    if (mask != 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + __builtin_ctz(mask);
     }
     ptr += 16;
     remaining -= 16;
@@ -58695,6 +60206,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #define SIMDJSON_EXPERIMENTAL_HAS_NEON 1
 #endif
 #endif
+#if defined(__loongarch_sx)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_LSX
+#define SIMDJSON_EXPERIMENTAL_HAS_LSX 1
+#endif
+#endif
+#if defined(__riscv_v_intrinsic) && __riscv_v_intrinsic >= 11000 &&            \
+    defined(__riscv_vector)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_RVV
+#define SIMDJSON_EXPERIMENTAL_HAS_RVV 1
+#endif
+#endif
+#if (defined(__PPC64__) || defined(_M_PPC64)) && defined(__ALTIVEC__)
+#ifndef SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#define SIMDJSON_EXPERIMENTAL_HAS_PPC64 1
+#endif
+#endif
 #if SIMDJSON_EXPERIMENTAL_HAS_NEON
 #include <arm_neon.h>
 #ifdef _MSC_VER
@@ -58707,6 +60234,22 @@ simdjson_warn_unused simdjson_result<std::string> extract_fractured_json(
 #include <intrin.h>
 #endif
 #endif
+#if SIMDJSON_EXPERIMENTAL_HAS_LSX
+#include <lsxintrin.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_RVV
+#include <riscv_vector.h>
+#endif
+#if SIMDJSON_EXPERIMENTAL_HAS_PPC64
+#include <altivec.h>
+#ifdef bool
+#undef bool
+#endif
+#ifdef vector
+#undef vector
+#endif
+#endif
+
 
 namespace simdjson {
 namespace rvv_vls {
@@ -58807,6 +60350,35 @@ simdjson_inline bool fast_needs_escaping(std::string_view view) {
   }
   return _mm_movemask_epi8(running) != 0;
 }
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline bool fast_needs_escaping(std::string_view view) {
+  if (view.size() < 16) {
+    return simple_needs_escaping(view);
+  }
+  size_t i = 0;
+  __vector unsigned char running = vec_splats((unsigned char)0);
+  __vector unsigned char v34 = vec_splats((unsigned char)34);
+  __vector unsigned char v92 = vec_splats((unsigned char)92);
+  __vector unsigned char v32 = vec_splats((unsigned char)32);
+
+  for (; i + 15 < view.size(); i += 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(view.data() + i));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  if (i < view.size()) {
+    __vector unsigned char word = vec_vsx_ld(
+        0, reinterpret_cast<const unsigned char *>(view.data() + view.length() - 16));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v34));
+    running = vec_or(running, (__vector unsigned char)vec_cmpeq(word, v92));
+    running = vec_or(running,
+        (__vector unsigned char)vec_cmplt(word, v32));
+  }
+  return !vec_all_eq(running, vec_splats((unsigned char)0));
+}
 #else
 simdjson_inline bool fast_needs_escaping(std::string_view view) {
   return simple_needs_escaping(view);
@@ -58850,28 +60422,12 @@ find_next_json_quotable_character(const std::string_view view,
     needs_escape = vorrq_u8(needs_escape, vceqq_u8(word, v92));
     needs_escape = vorrq_u8(needs_escape, vcltq_u8(word, v32));
 
-    if (vmaxvq_u32(vreinterpretq_u32_u8(needs_escape)) != 0) {
-      // Found quotable character - extract exact byte position using ctz
-      uint64x2_t as64 = vreinterpretq_u64_u8(needs_escape);
-      uint64_t lo = vgetq_lane_u64(as64, 0);
-      uint64_t hi = vgetq_lane_u64(as64, 1);
+    const uint8x8_t res = vshrn_n_u16(vreinterpretq_u16_u8(needs_escape), 4);
+    const uint64_t mask = vget_lane_u64(vreinterpret_u64_u8(res), 0);
+    if(mask != 0) {
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      if (lo != 0) {
-        _BitScanForward64(&trailing_zero, lo);
-        return offset + trailing_zero / 8;
-      } else {
-        _BitScanForward64(&trailing_zero, hi);
-        return offset + 8 + trailing_zero / 8;
-      }
-#else
-      if (lo != 0) {
-        return offset + __builtin_ctzll(lo) / 8;
-      } else {
-        return offset + 8 + __builtin_ctzll(hi) / 8;
-      }
-#endif
+      auto trailing_zero = trailing_zeroes(mask);
+      return offset + (trailing_zero >> 2);
     }
     ptr += 16;
     remaining -= 16;
@@ -58909,13 +60465,128 @@ find_next_json_quotable_character(const std::string_view view,
     if (mask != 0) {
       // Found quotable character - use trailing zero count to find position
       size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
-#ifdef _MSC_VER
-      unsigned long trailing_zero = 0;
-      _BitScanForward(&trailing_zero, mask);
-      return offset + trailing_zero;
+      return offset + trailing_zeroes(mask);
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+
+  // Scalar fallback for remaining bytes
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_LSX
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  //SIMD constants for characters requiring escape
+  __m128i v34 = __lsx_vreplgr2vr_b(34);  // '"'
+  __m128i v92 = __lsx_vreplgr2vr_b(92);  // '\\'
+  __m128i v32 = __lsx_vreplgr2vr_b(32);  // control char threshold
+
+  while (remaining >= 16){
+    __m128i word = __lsx_vld(ptr, 0);
+
+    //Check for the quotable characters: '"', '\\', or control char (<32)
+    __m128i needs_escape = __lsx_vseq_b(word, v34);
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vseq_b(word, v92));
+    needs_escape = __lsx_vor_v(needs_escape, __lsx_vslt_bu(word, v32));
+
+    if (!__lsx_bz_v(needs_escape)){
+
+      //Found quotable character - extract exact byte position
+      uint64_t lo = __lsx_vpickve2gr_du(needs_escape,0);
+      uint64_t hi = __lsx_vpickve2gr_du(needs_escape,1);
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      if ( lo != 0) {
+        return offset + trailing_zeroes(lo) / 8;
+      } else {
+        return offset + 8 + trailing_zeroes(hi) / 8;
+      }
+    }
+    ptr += 16;
+    remaining -= 16;
+  }
+  size_t current = len - remaining;
+  return find_next_json_quotable_character_scalar(view, current);
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_RVV
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  while (remaining > 0) {
+    size_t vl = __riscv_vsetvl_e8m1(remaining);
+    vuint8m1_t word = __riscv_vle8_v_u8m1(ptr, vl);
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    vbool8_t needs_escape = __riscv_vmseq(word, (uint8_t)34, vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmseq(word, (uint8_t)92, vl), vl);
+    needs_escape = __riscv_vmor(needs_escape,
+        __riscv_vmsltu(word, (uint8_t)32, vl), vl);
+
+    long first = __riscv_vfirst(needs_escape, vl);
+    if (first >= 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + first;
+    }
+    ptr += vl;
+    remaining -= vl;
+  }
+
+  return len;
+}
+#elif SIMDJSON_EXPERIMENTAL_HAS_PPC64
+simdjson_inline size_t
+find_next_json_quotable_character(const std::string_view view,
+                                  size_t location) noexcept {
+  const size_t len = view.size();
+  const uint8_t *ptr =
+      reinterpret_cast<const uint8_t *>(view.data()) + location;
+  size_t remaining = len - location;
+
+  // SIMD constants for characters requiring escape
+  __vector unsigned char v34 = vec_splats((unsigned char)34);  // '"'
+  __vector unsigned char v92 = vec_splats((unsigned char)92);  // '\\'
+  __vector unsigned char v32 = vec_splats((unsigned char)32);  // control char threshold
+
+  // Bitmask for vec_vbpermq to extract one bit per byte
+  const __vector unsigned char perm_mask = {0x78, 0x70, 0x68, 0x60, 0x58, 0x50,
+                                            0x48, 0x40, 0x38, 0x30, 0x28, 0x20,
+                                            0x18, 0x10, 0x08, 0x00};
+
+  while (remaining >= 16) {
+    __vector unsigned char word =
+        vec_vsx_ld(0, reinterpret_cast<const unsigned char *>(ptr));
+
+    // Check for quotable characters: '"', '\\', or control chars (< 32)
+    __vector unsigned char needs_escape =
+        (__vector unsigned char)vec_cmpeq(word, v34);
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmpeq(word, v92));
+    needs_escape = vec_or(needs_escape,
+        (__vector unsigned char)vec_cmplt(word, v32));
+
+    __vector unsigned long long result =
+        (__vector unsigned long long)vec_vbpermq(needs_escape, perm_mask);
+#ifdef __LITTLE_ENDIAN__
+    unsigned int mask = static_cast<unsigned int>(result[1]);
 #else
-      return offset + __builtin_ctz(mask);
+    unsigned int mask = static_cast<unsigned int>(result[0]);
 #endif
+    if (mask != 0) {
+      size_t offset = ptr - reinterpret_cast<const uint8_t *>(view.data());
+      return offset + __builtin_ctz(mask);
     }
     ptr += 16;
     remaining -= 16;
@@ -73462,6 +75133,19 @@ simdjson_inline int leading_zeroes(uint64_t input_num) {
 #endif// _MSC_VER
 }
 
+simdjson_inline int trailing_zeroes(uint64_t input_num) {
+#ifdef _MSC_VER
+  unsigned long trailing_zero = 0;
+  // Search the mask data from least significant bit (LSB)
+  // to most significant bit (MSB) for a set bit (1).
+  if (_BitScanForward64(&trailing_zero, input_num))
+    return (int)trailing_zero;
+  else    return 64;
+#else
+  return __builtin_ctzll(input_num);
+#endif// _MSC_VER
+}
+
 } // unnamed namespace
 } // namespace fallback
 } // namespace simdjson

From ed2d0cb1bf59a782518b66e08f9735a65ca6ee42 Mon Sep 17 00:00:00 2001
From: Antoine du Hamel <duhamelantoine1995@gmail.com>
Date: Mon, 30 Mar 2026 15:48:37 +0200
Subject: [PATCH 244/267] build: support empty libname flags in `configure.py`

PR-URL: https://github.com/nodejs/node/pull/62477
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
Reviewed-By: Beth Griggs <bethanyngriggs@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
---
 configure.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/configure.py b/configure.py
index 53a045c626acb1..fa25de8c316b71 100755
--- a/configure.py
+++ b/configure.py
@@ -1800,10 +1800,9 @@ def configure_library(lib, output, pkgname=None):
       output['libraries'] += [pkg_libpath]
 
     default_libs = getattr(options, shared_lib + '_libname')
-    default_libs = [f'-l{l}' for l in default_libs.split(',')]
 
     if default_libs:
-      output['libraries'] += default_libs
+      output['libraries'] += [f'-l{l}' for l in default_libs.split(',')]
     elif pkg_libs:
       output['libraries'] += pkg_libs.split()
 

From 1c6f5ed7c286683a7eb283a778465a2442ab875c Mon Sep 17 00:00:00 2001
From: Antoine du Hamel <duhamelantoine1995@gmail.com>
Date: Mon, 30 Mar 2026 16:50:32 +0200
Subject: [PATCH 245/267] tools: adopt the `--check-for-duplicates` NCU flag
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62478
Refs: https://github.com/nodejs/node-core-utils/pull/1035
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
---
 tools/actions/start-ci.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/actions/start-ci.sh b/tools/actions/start-ci.sh
index bca1da86074f3b..4d4fadf958a961 100755
--- a/tools/actions/start-ci.sh
+++ b/tools/actions/start-ci.sh
@@ -10,7 +10,7 @@ for pr in "$@"; do
 
   ci_started=yes
   rm -f output;
-  ncu-ci run "$pr" >output 2>&1 || ci_started=no
+  ncu-ci run --check-for-duplicates "$pr" >output 2>&1 || ci_started=no
   cat output
 
   if [ "$ci_started" = "no" ]; then

From 19a52a1abe44f23052cc59f35dc29960f2b2b120 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Mon, 30 Mar 2026 18:55:25 -0400
Subject: [PATCH 246/267] test: update WPT for url to fc3e651593

PR-URL: https://github.com/nodejs/node/pull/62379
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 test/fixtures/wpt/README.md                   |  2 +-
 .../wpt/url/resources/urltestdata.json        | 45 +++++++++++++++++++
 test/fixtures/wpt/versions.json               |  2 +-
 3 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md
index a011af1bf15c2e..ec1b3f5e071c73 100644
--- a/test/fixtures/wpt/README.md
+++ b/test/fixtures/wpt/README.md
@@ -28,7 +28,7 @@ Last update:
 - resource-timing: https://github.com/web-platform-tests/wpt/tree/22d38586d0/resource-timing
 - resources: https://github.com/web-platform-tests/wpt/tree/1d2c5fb36a/resources
 - streams: https://github.com/web-platform-tests/wpt/tree/bc9dcbbf1a/streams
-- url: https://github.com/web-platform-tests/wpt/tree/c928b19ab0/url
+- url: https://github.com/web-platform-tests/wpt/tree/fc3e651593/url
 - urlpattern: https://github.com/web-platform-tests/wpt/tree/a2e15ad405/urlpattern
 - user-timing: https://github.com/web-platform-tests/wpt/tree/5ae85bf826/user-timing
 - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/cde25e7e3c/wasm/jsapi
diff --git a/test/fixtures/wpt/url/resources/urltestdata.json b/test/fixtures/wpt/url/resources/urltestdata.json
index ec13a88cef0e8b..690a48870fd0d9 100644
--- a/test/fixtures/wpt/url/resources/urltestdata.json
+++ b/test/fixtures/wpt/url/resources/urltestdata.json
@@ -4268,6 +4268,36 @@
     "search": "",
     "hash": ""
   },
+  {
+    "input": "https://localhost?q=🔥",
+    "base": null,
+    "href": "https://localhost/?q=%F0%9F%94%A5",
+    "origin": "https://localhost",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "localhost",
+    "hostname": "localhost",
+    "port": "",
+    "pathname": "/",
+    "search": "?q=%F0%9F%94%A5",
+    "hash": ""
+  },
+  {
+    "input": "https://localhost#🔥",
+    "base": null,
+    "href": "https://localhost/#%F0%9F%94%A5",
+    "origin": "https://localhost",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "localhost",
+    "hostname": "localhost",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": "#%F0%9F%94%A5"
+  },
   "# resolving a fragment against any scheme succeeds",
   {
     "input": "#",
@@ -6095,6 +6125,21 @@
     "search": "",
     "hash": ""
   },
+  {
+    "input": "https://0000000000000000000000000000000000000000177.0.0.1",
+    "base": null,
+    "href": "https://127.0.0.1/",
+    "origin": "https://127.0.0.1",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "127.0.0.1",
+    "hostname": "127.0.0.1",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
   "More IPv4 parsing (via https://github.com/jsdom/whatwg-url/issues/92)",
   {
     "input": "https://0x100000000/test",
diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json
index aa0b9679ddf213..dd2e9e2b1662fa 100644
--- a/test/fixtures/wpt/versions.json
+++ b/test/fixtures/wpt/versions.json
@@ -72,7 +72,7 @@
     "path": "streams"
   },
   "url": {
-    "commit": "c928b19ab04a4525807238e9299c23f3a1cca582",
+    "commit": "fc3e651593fab938433613eb5ad0b4dbd5a4e167",
     "path": "url"
   },
   "urlpattern": {

From 56741a1303b9a0fd703484e3f878969ebe205bfb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9?= <contact.9a5d6388@renegade334.me.uk>
Date: Tue, 31 Mar 2026 01:56:55 +0100
Subject: [PATCH 247/267] doc: move sqlite type conversion section to correct
 level

PR-URL: https://github.com/nodejs/node/pull/62482
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 doc/api/sqlite.md | 46 +++++++++++++++++++++++-----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/doc/api/sqlite.md b/doc/api/sqlite.md
index b4b83a192daa54..3642ccbf8f1c47 100644
--- a/doc/api/sqlite.md
+++ b/doc/api/sqlite.md
@@ -82,6 +82,29 @@ console.log(query.all());
 // Prints: [ { key: 1, value: 'hello' }, { key: 2, value: 'world' } ]
 ```
 
+## Type conversion between JavaScript and SQLite
+
+When Node.js writes to or reads from SQLite, it is necessary to convert between
+JavaScript data types and SQLite's [data types][]. Because JavaScript supports
+more data types than SQLite, only a subset of JavaScript types are supported.
+Attempting to write an unsupported data type to SQLite will result in an
+exception.
+
+| Storage class | JavaScript to SQLite       | SQLite to JavaScript                  |
+| ------------- | -------------------------- | ------------------------------------- |
+| `NULL`        | {null}                     | {null}                                |
+| `INTEGER`     | {number} or {bigint}       | {number} or {bigint} _(configurable)_ |
+| `REAL`        | {number}                   | {number}                              |
+| `TEXT`        | {string}                   | {string}                              |
+| `BLOB`        | {TypedArray} or {DataView} | {Uint8Array}                          |
+
+APIs that read values from SQLite have a configuration option that determines
+whether `INTEGER` values are converted to `number` or `bigint` in JavaScript,
+such as the `readBigInts` option for statements and the `useBigIntArguments`
+option for user-defined functions. If Node.js reads an `INTEGER` value from
+SQLite that is outside the JavaScript [safe integer][] range, and the option to
+read BigInts is not enabled, then an `ERR_OUT_OF_RANGE` error will be thrown.
+
 ## Class: `DatabaseSync`
 
 <!-- YAML
@@ -1173,29 +1196,6 @@ added: v24.9.0
 
 Resets the LRU cache, clearing all stored prepared statements.
 
-### Type conversion between JavaScript and SQLite
-
-When Node.js writes to or reads from SQLite, it is necessary to convert between
-JavaScript data types and SQLite's [data types][]. Because JavaScript supports
-more data types than SQLite, only a subset of JavaScript types are supported.
-Attempting to write an unsupported data type to SQLite will result in an
-exception.
-
-| Storage class | JavaScript to SQLite       | SQLite to JavaScript                  |
-| ------------- | -------------------------- | ------------------------------------- |
-| `NULL`        | {null}                     | {null}                                |
-| `INTEGER`     | {number} or {bigint}       | {number} or {bigint} _(configurable)_ |
-| `REAL`        | {number}                   | {number}                              |
-| `TEXT`        | {string}                   | {string}                              |
-| `BLOB`        | {TypedArray} or {DataView} | {Uint8Array}                          |
-
-APIs that read values from SQLite have a configuration option that determines
-whether `INTEGER` values are converted to `number` or `bigint` in JavaScript,
-such as the `readBigInts` option for statements and the `useBigIntArguments`
-option for user-defined functions. If Node.js reads an `INTEGER` value from
-SQLite that is outside the JavaScript [safe integer][] range, and the option to
-read BigInts is not enabled, then an `ERR_OUT_OF_RANGE` error will be thrown.
-
 ## `sqlite.backup(sourceDb, path[, options])`
 
 <!-- YAML

From 53aad664152f32502dd9dfb381039d58d40cfc66 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Mon, 30 Mar 2026 21:34:32 -0400
Subject: [PATCH 248/267] deps: update googletest to
 2461743991f9aa53e9a3625eafcbacd81a3c74cd

PR-URL: https://github.com/nodejs/node/pull/62484
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 .../include/gtest/internal/gtest-port.h       | 37 +++++++++++++++++--
 deps/googletest/src/gtest-port.cc             | 16 ++++++++
 2 files changed, 50 insertions(+), 3 deletions(-)

diff --git a/deps/googletest/include/gtest/internal/gtest-port.h b/deps/googletest/include/gtest/internal/gtest-port.h
index 3ea95ba5560714..b607e0adee74f4 100644
--- a/deps/googletest/include/gtest/internal/gtest-port.h
+++ b/deps/googletest/include/gtest/internal/gtest-port.h
@@ -1236,9 +1236,6 @@ class GTEST_API_ [[nodiscard]] AutoHandle {
 // Nothing to do here.
 
 #else
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
 // Allows a controller thread to pause execution of newly created
 // threads until notified.  Instances of this class must be created
 // and destroyed in the controller thread.
@@ -1246,6 +1243,39 @@ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
 // This class is only for testing Google Test's own constructs. Do not
 // use it in user tests, either directly or indirectly.
 // TODO(b/203539622): Replace unconditionally with absl::Notification.
+#ifdef GTEST_OS_WINDOWS_MINGW
+// GCC version < 13 with the win32 thread model does not provide std::mutex and
+// std::condition_variable in the <mutex> and <condition_variable> headers. So
+// we implement the Notification class using a Windows manual-reset event. See
+// https://gcc.gnu.org/gcc-13/changes.html#windows.
+class GTEST_API_ [[nodiscard]] Notification {
+ public:
+  Notification();
+  Notification(const Notification&) = delete;
+  Notification& operator=(const Notification&) = delete;
+  ~Notification();
+
+  // Notifies all threads created with this notification to start. Must
+  // be called from the controller thread.
+  void Notify();
+
+  // Blocks until the controller thread notifies. Must be called from a test
+  // thread.
+  void WaitForNotification();
+
+ private:
+  // Assume that Win32 HANDLE type is equivalent to void*. Doing so allows us to
+  // avoid including <windows.h> in this header file. Including <windows.h> is
+  // undesirable because it defines a lot of symbols and macros that tend to
+  // conflict with client code. This assumption is verified by
+  // WindowsTypesTest.HANDLEIsVoidStar.
+  typedef void* Handle;
+  Handle event_;
+};
+#else
+GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
+/* class A needs to have dll-interface to be used by clients of class B */)
+
 class GTEST_API_ [[nodiscard]] Notification {
  public:
   Notification() : notified_(false) {}
@@ -1273,6 +1303,7 @@ class GTEST_API_ [[nodiscard]] Notification {
   bool notified_;
 };
 GTEST_DISABLE_MSC_WARNINGS_POP_()  // 4251
+#endif  // GTEST_OS_WINDOWS_MINGW
 #endif  // GTEST_HAS_NOTIFICATION_
 
 // On MinGW, we can have both GTEST_OS_WINDOWS and GTEST_HAS_PTHREAD
diff --git a/deps/googletest/src/gtest-port.cc b/deps/googletest/src/gtest-port.cc
index f8ecb37c48d943..d34a693e4500f2 100644
--- a/deps/googletest/src/gtest-port.cc
+++ b/deps/googletest/src/gtest-port.cc
@@ -303,6 +303,22 @@ bool AutoHandle::IsCloseable() const {
   return handle_ != nullptr && handle_ != INVALID_HANDLE_VALUE;
 }
 
+#if !GTEST_HAS_NOTIFICATION_ && defined(GTEST_OS_WINDOWS_MINGW)
+Notification::Notification() {
+  // Create a manual-reset event object.
+  event_ = ::CreateEvent(nullptr, TRUE, FALSE, nullptr);
+  GTEST_CHECK_(event_ != nullptr);
+}
+
+Notification::~Notification() { ::CloseHandle(event_); }
+
+void Notification::Notify() { GTEST_CHECK_(::SetEvent(event_)); }
+
+void Notification::WaitForNotification() {
+  GTEST_CHECK_(::WaitForSingleObject(event_, INFINITE) == WAIT_OBJECT_0);
+}
+#endif  // !GTEST_HAS_NOTIFICATION_ && defined(GTEST_OS_WINDOWS_MINGW)
+
 Mutex::Mutex()
     : owner_thread_id_(0),
       type_(kDynamic),

From 0c8f802ec29847e0cd1d1a8637b03f448e900367 Mon Sep 17 00:00:00 2001
From: Kohei <kohei.ueno119@gmail.com>
Date: Tue, 31 Mar 2026 12:35:31 +0900
Subject: [PATCH 249/267] inspector: add Target.getTargets and extract
 TargetManager

PR-URL: https://github.com/nodejs/node/pull/62487
Reviewed-By: Ryuhei Shima <shimaryuhei@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
---
 src/inspector/domain_target.pdl               |  3 +
 src/inspector/node_inspector.gypi             |  2 +
 src/inspector/target_agent.cc                 | 38 ++++++----
 src/inspector/target_agent.h                  | 30 ++------
 src/inspector/target_manager.cc               | 66 +++++++++++++++++
 src/inspector/target_manager.h                | 70 +++++++++++++++++++
 src/inspector_io.cc                           |  4 +-
 test/parallel/test-inspector-worker-target.js | 17 ++++-
 8 files changed, 190 insertions(+), 40 deletions(-)
 create mode 100644 src/inspector/target_manager.cc
 create mode 100644 src/inspector/target_manager.h

diff --git a/src/inspector/domain_target.pdl b/src/inspector/domain_target.pdl
index 3195b3a441d8ab..890e79db8eb6b3 100644
--- a/src/inspector/domain_target.pdl
+++ b/src/inspector/domain_target.pdl
@@ -20,6 +20,9 @@ experimental domain Target
       SessionID sessionId
       TargetInfo targetInfo
       boolean waitingForDebugger
+  command getTargets
+    returns
+      array of TargetInfo targetInfos
   command setAutoAttach
     parameters
       boolean autoAttach
diff --git a/src/inspector/node_inspector.gypi b/src/inspector/node_inspector.gypi
index cde02a28d03dfa..5b96bc77733059 100644
--- a/src/inspector/node_inspector.gypi
+++ b/src/inspector/node_inspector.gypi
@@ -32,6 +32,8 @@
       'src/inspector/network_inspector.h',
       'src/inspector/network_agent.cc',
       'src/inspector/network_agent.h',
+      'src/inspector/target_manager.cc',
+      'src/inspector/target_manager.h',
       'src/inspector/target_agent.cc',
       'src/inspector/target_agent.h',
       'src/inspector/worker_inspector.cc',
diff --git a/src/inspector/target_agent.cc b/src/inspector/target_agent.cc
index 2f841cb2a9c54c..04cbe0b83750ce 100644
--- a/src/inspector/target_agent.cc
+++ b/src/inspector/target_agent.cc
@@ -8,10 +8,6 @@ namespace node {
 namespace inspector {
 namespace protocol {
 
-std::unordered_map<int, std::shared_ptr<MainThreadHandle>>
-    TargetAgent::target_session_id_worker_map_ =
-        std::unordered_map<int, std::shared_ptr<MainThreadHandle>>();
-int TargetAgent::next_session_id_ = 1;
 class WorkerTargetDelegate : public WorkerDelegate {
  public:
   explicit WorkerTargetDelegate(std::shared_ptr<TargetAgent> target_agent)
@@ -32,13 +28,14 @@ std::unique_ptr<Target::TargetInfo> createTargetInfo(
     const std::string_view target_id,
     const std::string_view type,
     const std::string_view title,
-    const std::string_view url) {
+    const std::string_view url,
+    bool attached = false) {
   return Target::TargetInfo::create()
       .setTargetId(std::string(target_id))
       .setType(std::string(type))
       .setTitle(std::string(title))
       .setUrl(std::string(url))
-      .setAttached(false)
+      .setAttached(attached)
       .setCanAccessOpener(true)
       .build();
 }
@@ -57,11 +54,11 @@ void TargetAgent::createAndAttachIfNecessary(
 
   targetCreated(target_id, type, title, url);
   bool attached = false;
-  if (auto_attach_) {
+  if (target_manager_->auto_attach()) {
     attached = true;
     attachedToTarget(worker, target_id, type, title, url);
   }
-  targets_.push_back({target_id, type, title, url, worker, attached});
+  target_manager_->AddTarget(worker, target_id, type, title, url, attached);
 }
 
 void TargetAgent::listenWorker(std::weak_ptr<WorkerManager> worker_manager) {
@@ -87,12 +84,26 @@ void TargetAgent::targetCreated(const std::string_view target_id,
   frontend_->targetCreated(createTargetInfo(target_id, type, title, url));
 }
 
+crdtp::DispatchResponse TargetAgent::getTargets(
+    std::unique_ptr<protocol::Array<Target::TargetInfo>>* out_targetInfos) {
+  auto target_infos = std::make_unique<protocol::Array<Target::TargetInfo>>();
+  for (const auto& target : target_manager_->GetTargetsSnapshot()) {
+    target_infos->push_back(createTargetInfo(target.target_id,
+                                             target.type,
+                                             target.title,
+                                             target.url,
+                                             target.attached));
+  }
+  *out_targetInfos = std::move(target_infos);
+  return DispatchResponse::Success();
+}
+
 int TargetAgent::getNextSessionId() {
-  return next_session_id_++;
+  return target_manager_->NextSessionId();
 }
 
 int TargetAgent::getNextTargetId() {
-  return next_target_id_++;
+  return target_manager_->NextTargetId();
 }
 
 void TargetAgent::attachedToTarget(std::shared_ptr<MainThreadHandle> worker,
@@ -101,7 +112,7 @@ void TargetAgent::attachedToTarget(std::shared_ptr<MainThreadHandle> worker,
                                    const std::string& title,
                                    const std::string& url) {
   int session_id = getNextSessionId();
-  target_session_id_worker_map_[session_id] = worker;
+  TargetManager::RegisterSessionWorker(session_id, worker);
   worker->SetTargetSessionId(session_id);
   frontend_->attachedToTarget(std::to_string(session_id),
                               createTargetInfo(target_id, type, title, url),
@@ -112,11 +123,10 @@ void TargetAgent::attachedToTarget(std::shared_ptr<MainThreadHandle> worker,
 // all threads. Modify it to be managed per worker thread.
 crdtp::DispatchResponse TargetAgent::setAutoAttach(
     bool auto_attach, bool wait_for_debugger_on_start) {
-  auto_attach_ = auto_attach;
-  wait_for_debugger_on_start_ = wait_for_debugger_on_start;
+  target_manager_->SetAutoAttach(auto_attach, wait_for_debugger_on_start);
 
   if (auto_attach) {
-    for (auto& target : targets_) {
+    for (auto& target : target_manager_->targets()) {
       if (!target.attached) {
         target.attached = true;
         attachedToTarget(target.worker,
diff --git a/src/inspector/target_agent.h b/src/inspector/target_agent.h
index 36a95f80dcad75..f7904e986751f3 100644
--- a/src/inspector/target_agent.h
+++ b/src/inspector/target_agent.h
@@ -1,9 +1,9 @@
 #ifndef SRC_INSPECTOR_TARGET_AGENT_H_
 #define SRC_INSPECTOR_TARGET_AGENT_H_
 
+#include <memory>
 #include <string_view>
-#include <unordered_map>
-#include <vector>
+#include "inspector/target_manager.h"
 #include "inspector/worker_inspector.h"
 #include "node/inspector/protocol/Target.h"
 
@@ -14,15 +14,6 @@ class TargetInspector;
 
 namespace protocol {
 
-struct TargetInfo {
-  std::string target_id;
-  std::string type;
-  std::string title;
-  std::string url;
-  std::shared_ptr<MainThreadHandle> worker;
-  bool attached;
-};
-
 class TargetAgent : public Target::Backend,
                     public std::enable_shared_from_this<TargetAgent> {
  public:
@@ -32,15 +23,14 @@ class TargetAgent : public Target::Backend,
                                   const std::string& title,
                                   const std::string& url);
 
+  DispatchResponse getTargets(
+      std::unique_ptr<protocol::Array<Target::TargetInfo>>* out_targetInfos)
+      override;
   DispatchResponse setAutoAttach(bool auto_attach,
                                  bool wait_for_debugger_on_start) override;
 
   void listenWorker(std::weak_ptr<WorkerManager> worker_manager);
   void reset();
-  static std::unordered_map<int, std::shared_ptr<MainThreadHandle>>
-      target_session_id_worker_map_;
-
-  bool isThisThread(MainThreadHandle* worker) { return worker == main_thread_; }
 
  private:
   int getNextTargetId();
@@ -57,15 +47,9 @@ class TargetAgent : public Target::Backend,
 
   std::shared_ptr<Target::Frontend> frontend_;
   std::weak_ptr<WorkerManager> worker_manager_;
-  static int next_session_id_;
-  int next_target_id_ = 1;
   std::unique_ptr<WorkerManagerEventHandle> worker_event_handle_ = nullptr;
-  bool auto_attach_ = false;
-  // TODO(islandryu): If false, implement it so that each thread does not wait
-  // for the worker to execute.
-  bool wait_for_debugger_on_start_ = true;
-  std::vector<TargetInfo> targets_;
-  MainThreadHandle* main_thread_;
+  std::unique_ptr<TargetManager> target_manager_ =
+      std::make_unique<TargetManager>();
 };
 
 }  // namespace protocol
diff --git a/src/inspector/target_manager.cc b/src/inspector/target_manager.cc
new file mode 100644
index 00000000000000..318aa71e4e7526
--- /dev/null
+++ b/src/inspector/target_manager.cc
@@ -0,0 +1,66 @@
+#include "inspector/target_manager.h"
+
+#include "inspector/main_thread_interface.h"
+
+namespace node {
+namespace inspector {
+
+Mutex TargetManager::session_state_lock_;
+std::unordered_map<int, std::shared_ptr<MainThreadHandle>>
+    TargetManager::session_worker_map_;
+int TargetManager::next_session_id_ = 1;
+
+int TargetManager::NextTargetId() {
+  return next_target_id_++;
+}
+
+int TargetManager::NextSessionId() {
+  Mutex::ScopedLock scoped_lock(session_state_lock_);
+  return next_session_id_++;
+}
+
+void TargetManager::SetAutoAttach(bool auto_attach,
+                                  bool wait_for_debugger_on_start) {
+  auto_attach_ = auto_attach;
+  wait_for_debugger_on_start_ = wait_for_debugger_on_start;
+}
+
+void TargetManager::AddTarget(std::shared_ptr<MainThreadHandle> worker,
+                              const std::string& target_id,
+                              const std::string& type,
+                              const std::string& title,
+                              const std::string& url,
+                              bool attached) {
+  targets_.push_back({target_id, type, title, url, worker, attached});
+}
+
+std::vector<TargetManager::TargetInfo> TargetManager::GetTargetsSnapshot()
+    const {
+  std::vector<TargetInfo> result;
+  result.reserve(targets_.size());
+  for (const auto& target : targets_) {
+    if (target.worker && !target.worker->Expired()) {
+      result.push_back(target);
+    }
+  }
+  return result;
+}
+
+void TargetManager::RegisterSessionWorker(
+    int session_id, std::shared_ptr<MainThreadHandle> worker) {
+  Mutex::ScopedLock scoped_lock(session_state_lock_);
+  session_worker_map_[session_id] = std::move(worker);
+}
+
+std::shared_ptr<MainThreadHandle> TargetManager::WorkerForSession(
+    int session_id) {
+  Mutex::ScopedLock scoped_lock(session_state_lock_);
+  auto it = session_worker_map_.find(session_id);
+  if (it == session_worker_map_.end()) {
+    return nullptr;
+  }
+  return it->second;
+}
+
+}  // namespace inspector
+}  // namespace node
diff --git a/src/inspector/target_manager.h b/src/inspector/target_manager.h
new file mode 100644
index 00000000000000..3d7984b866665f
--- /dev/null
+++ b/src/inspector/target_manager.h
@@ -0,0 +1,70 @@
+#ifndef SRC_INSPECTOR_TARGET_MANAGER_H_
+#define SRC_INSPECTOR_TARGET_MANAGER_H_
+
+#include <memory>
+#include <string>
+#include <unordered_map>
+#include <vector>
+
+#include "node_mutex.h"
+
+namespace node {
+namespace inspector {
+
+class MainThreadHandle;
+
+class TargetManager {
+ public:
+  struct TargetInfo {
+    std::string target_id;
+    std::string type;
+    std::string title;
+    std::string url;
+    std::shared_ptr<MainThreadHandle> worker;
+    bool attached;
+  };
+
+  TargetManager() = default;
+
+  int NextTargetId();
+  int NextSessionId();
+
+  void SetAutoAttach(bool auto_attach, bool wait_for_debugger_on_start);
+  bool auto_attach() const { return auto_attach_; }
+  bool wait_for_debugger_on_start() const {
+    return wait_for_debugger_on_start_;
+  }
+
+  void AddTarget(std::shared_ptr<MainThreadHandle> worker,
+                 const std::string& target_id,
+                 const std::string& type,
+                 const std::string& title,
+                 const std::string& url,
+                 bool attached);
+  std::vector<TargetInfo> GetTargetsSnapshot() const;
+  std::vector<TargetInfo>& targets() { return targets_; }
+  const std::vector<TargetInfo>& targets() const { return targets_; }
+
+  static void RegisterSessionWorker(int session_id,
+                                    std::shared_ptr<MainThreadHandle> worker);
+  static std::shared_ptr<MainThreadHandle> WorkerForSession(int session_id);
+
+ private:
+  static Mutex session_state_lock_;
+  static std::unordered_map<int, std::shared_ptr<MainThreadHandle>>
+      session_worker_map_;
+  static int next_session_id_;
+
+  int next_target_id_ = 1;
+  bool auto_attach_ = false;
+  // TODO(islandryu): Honor this flag for worker targets. It is stored here
+  // so Target.setAutoAttach() state can be tracked, but worker startup pause
+  // behavior does not change based on it yet.
+  bool wait_for_debugger_on_start_ = true;
+  std::vector<TargetInfo> targets_;
+};
+
+}  // namespace inspector
+}  // namespace node
+
+#endif  // SRC_INSPECTOR_TARGET_MANAGER_H_
diff --git a/src/inspector_io.cc b/src/inspector_io.cc
index 361d19349261e5..e0b4b6c3746162 100644
--- a/src/inspector_io.cc
+++ b/src/inspector_io.cc
@@ -7,6 +7,7 @@
 #include "inspector/node_json.h"
 #include "inspector/node_string.h"
 #include "inspector/target_agent.h"
+#include "inspector/target_manager.h"
 #include "inspector_socket_server.h"
 #include "ncrypto.h"
 #include "node.h"
@@ -380,8 +381,7 @@ void InspectorIoDelegate::MessageReceived(int session_id,
                                  ::isdigit);
     if (is_number) {
       int target_session_id = std::stoi(*target_session_id_str);
-      worker = protocol::TargetAgent::target_session_id_worker_map_
-          [target_session_id];
+      worker = TargetManager::WorkerForSession(target_session_id);
       if (worker) {
         merged_session_id += target_session_id << 16;
       }
diff --git a/test/parallel/test-inspector-worker-target.js b/test/parallel/test-inspector-worker-target.js
index e5d2a0c2039712..6bfe8bf9304d5c 100644
--- a/test/parallel/test-inspector-worker-target.js
+++ b/test/parallel/test-inspector-worker-target.js
@@ -3,6 +3,8 @@
 const common = require('../common');
 const fixtures = require('../common/fixtures');
 
+const assert = require('assert');
+
 common.skipIfInspectorDisabled();
 
 const { NodeInstance } = require('../common/inspector-helper.js');
@@ -21,6 +23,15 @@ async function setupInspector(session, sessionId = undefined) {
   });
 }
 
+async function assertTargetAttachedState(session, targetId, attached) {
+  const { targetInfos } = await session.send({ method: 'Target.getTargets' });
+  const targetInfo = targetInfos.find((target) => {
+    return target.targetId === targetId;
+  });
+  assert.notStrictEqual(targetInfo, undefined);
+  assert.strictEqual(targetInfo.attached, attached);
+}
+
 async function test(isSetAutoAttachBeforeExecution) {
   const child = new NodeInstance(['--inspect-brk=0', '--experimental-worker-inspection'],
                                  '',
@@ -38,7 +49,10 @@ async function test(isSetAutoAttachBeforeExecution) {
   await session.send({ method: 'Debugger.resume' });
 
   const sessionId = '1';
-  await session.waitForNotification('Target.targetCreated');
+  const targetCreated = await session.waitForNotification('Target.targetCreated');
+  const targetId = targetCreated.params.targetInfo.targetId;
+
+  await assertTargetAttachedState(session, targetId, isSetAutoAttachBeforeExecution);
 
   if (!isSetAutoAttachBeforeExecution) {
     await session.send({ method: 'Target.setAutoAttach', params: { autoAttach: true, waitForDebuggerOnStart: true } });
@@ -47,6 +61,7 @@ async function test(isSetAutoAttachBeforeExecution) {
     return notification.method === 'Target.attachedToTarget' &&
            notification.params.sessionId === sessionId;
   });
+  await assertTargetAttachedState(session, targetId, true);
   await setupInspector(session, sessionId);
   await session.waitForNotification('Debugger.paused');
   await session.send({ method: 'Debugger.resume', sessionId });

From a1c3c901c0d0d55d03d02efc4f9eb49d4c94058d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 31 Mar 2026 07:46:39 +0000
Subject: [PATCH 250/267] tools: bump picomatch from 4.0.3 to 4.0.4 in
 /tools/eslint

Bumps [picomatch](https://github.com/micromatch/picomatch) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: https://github.com/nodejs/node/pull/62439
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
---
 tools/eslint/package-lock.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/eslint/package-lock.json b/tools/eslint/package-lock.json
index acf0cbc2ee55b4..8db663739af6e5 100644
--- a/tools/eslint/package-lock.json
+++ b/tools/eslint/package-lock.json
@@ -2483,9 +2483,9 @@
       "license": "ISC"
     },
     "node_modules/picomatch": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
-      "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+      "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
       "license": "MIT",
       "engines": {
         "node": ">=12"

From d0418bad102921e9b1d2565840997b49cbad5031 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Wed, 11 Mar 2026 09:19:12 -0400
Subject: [PATCH 251/267] deps: update timezone to 2026a
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62164
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 .../icu-small/source/data/in/icudt78l.dat.bz2 | Bin 11345813 -> 11346114 bytes
 test/fixtures/tz-version.txt                  |   2 +-
 2 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/deps/icu-small/source/data/in/icudt78l.dat.bz2 b/deps/icu-small/source/data/in/icudt78l.dat.bz2
index 1ae38435e2cdde2d4407dbdc94f3dce0966df20c..5be75974fa3edd433ea08a7a60e880f8fb1221e9 100644
GIT binary patch
delta 616678
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%0AE`xv|pXso4Mty;O!x35uQtXEyhVR
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ª=e^i(&Gz?&y0T^}hiCi|@YQVRh
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%0DZ^jpHXcnTGS`@7*JuHLJ{Sq2S1O
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	Vk{rM
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%0A@#pM
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�Wfd=bET>A}g$>RK
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
ZELjDHlXeFXIU;}lF64@Ep&;Bli3EF0Dp3Fc

delta 616400
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%0DXhIZGs@tItMY{kKxc#SY;>^Sm=2EOuk
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	)JM)1|Ga>*`5vd)yfT9N`H2T7y
zs271dq$O5|xZCkO;*JnqMSN-a(nr9S{&wQHSxdr6n|gnerNokza|Ihm=hb$zxaf3_
zOI`;wy@iDMC3qea3G=A7S3R89RSFn=8qFf+8j%L`!@|+^%Uk-hqSdmtWMpd<@*NiU
zcCwuNk?Lq8OHg@StLVV(ayxcSJ#YPcWvd-uvovh>u}nW7E0LBCH+1VDb!Yvc{kvp;
z7me~@a}a-B(jjMdG}*aR!&)vIdqzhexoYi-s6ORJq?`L4F_h&>8;oRhb#(B55RM!`
z-CT=MA!t^Kx<W;wPR8$$tM-r;3&{M25Mpt0OKkak0)&F3K~*V9-5qAD<e@?R_@_rR
zy~>IgI<lJxjVSE2$Po;we8#S}TJ=m3|EVHlmMDJ&A`}#1^3o88zhpiM`zg@cT_3H8
zo)?p?mkg!x0$N5zGp%<Xz%PP|0uSlXHV{GA<>kkm37tyV>T{xQQy;=ea&TIgGxov|
z2&yspd0oby!InfXewm{u5@Kt`comWBs1B15Zf~`sD*45|NvOQ>4oH$*|0H$n!4AWU
zZ`Wr<yn|$NCP367;1zy5-v2_4x@B;-JNsHSONIDI65H9g(}=sNndi9tm$2hut4cQb
z#9R(yAOf31r76db4?8IO=!g{s;-7IqUB&>WSX50?-(^mOb<C_s38<|m&nlwT?Tw;V
z6sebiDgqaOjVyq)0tpk1{a$Fx$I>z459qAAG~oTLXv~?9>zLrr%g1o>!&Y72hvAS9
zxA#eedL$roLA)@PqHzkkKmb5~=%&A%0oY4iZLr&Z2_0!-ZmY^q$5h33k0iK<Nd{F1
z7%NHaXKoKDj*LTL4OS*lC<?~D33H&Y*!SAe?ZTvgL4(mkayI1czdak_L)a{o6aqUd
z2@-~;3qtgmBqCNw;FomKL_+n9D+?o{?8M1Wr5=IOXS%)?Bvii?3uhki?o(``AYbRd
z*F#}L@RK+1N83A5|7iDK<9MWyA|byw|1liA9{aUOv$LN-?s}d)-4#;WVx&tfNnnLM
zyN5V`>0!l-XNEw=81~HwYd8wf*TWRZ><>HWd1x!uI%u>WEcCkc;e4JgqO7678PEW}
zV36UWg&`M7ZLLp&s|leer<@CFlT8blI)0yBK0lV?yx;Vh%l*|BpT(rUT|4jAteL1}
zc3j%kvP$=`hUoEfM3%BiikKkLxazIRV1HGAt4uB>UG~-Z{rT&bKi4LC)4z$#wsPvC
zp0B*_Ps@2K^In*Y;dyg$5)s-&`*?--n&t){Q3<7h={eQ!MoWDa>B{4z9Ceu4D=+rJ
zZ>79$u{StBE_?lPqIz<Hu4%5Nrxzrs%oK@?U=ex7+j6z||2g_^Q+kaCqoe9L;H4RV
z3S*dEi+%)32MwW>7ATzCp=G_sHeD7lI*JkEG*LkT1FM&h==^iu`wq|eeDe12Vcx~L
zZl@pJ@i)8&2R8&+Z_b9QqaSSAA$6S5!f$mDRhfGZ&lktL?t9nnJE&F9-R1*r4L_Co
zX!|jEHt3GMrtNKxl+EtF9yrTQ;!^j2BYnmP%jnzo!}31m@cu4-pOJ>?hqn5=CtUa#
z;*TTw_r%&ZeeAE}{l5RS!?Esbx)pgC`%Ir_<7}Hd{<CdENF8txAXLWd3;;k6xMglv
z%-XC(el~KIU)sAYwX0&9)%Lk=yP=NoGfiQn$YZP8N>_#{Q!8nl^jvfL{X(1yw<X5Y
zQ0VdBzBQMeEdm~Y>HFq`%lVcgh`pyh|2G*M5I}7#b1of&vQ}HD9Tp0XI*mKi#C{=m
zmN+_`?@!B}(vUgP@)#-4cA{$(&nJJhSkEU%N?Vo}nVzIPGoc`sBNZQML-QA)&{5rT
z%J6I1>uC@*f=`x;Y*xNIns;{1#>gBOs(;_X(P|bEw;acR$mjchwp)B{?Uo<vt#gnq
zkTn^x6(#7t_WiaK;vKz);|s16jjuV(G%SL{z?LxxhSY4?og-v#FX3@{=3qlJK{qH1
ztNq}vi|HowdlrzEyR^N#6SYT%qZOKlgVZKvYoU3XqgU=94{KEwkhH=ar}#|ZEp-A~
zwewvL%;!gcC-2O*$!0Bce|H)4L=YW+b4@eZ-V_W;2p{iu9Y}Z2ApyKXULDYYO~C)H
z$)O~2S9!}r&ti2jHuEy5ov{)}A17)i6tfVAozy_!AbH;*38-XJ|CHPO2kB)|nb-7|
zC;EouZb$ao5`N&|pP`|2;bNGTtSzMyeGMt$vy5eb!X_+Isbva^4WV}_cWxMPoir}2
zU~y?nXt7KsUFugvriG>%X57?uCS7T(3dPE4A?uB#h`JZ3|B@R)Ado>=WQIX3gjF`~
z><a-93kVdAh_W>E0vQynflZDH!VoVDmr=Jq9dZ3$%@Vl-tL_jOKaYD+BEz_JH5m)3
z%~Z92-Ma4c@-bP0>a`8FXEI;sGZ-_UyUHRMP+#afm;C<QmZ!lu;zx;7^7<9Ln4;?c
zHSD^q8T%4HYxAFk%RV6=PyMWdnY_zs^PiXBO--A8UxJr4saSCX>AJ7Sck=17wyzs8
z=dwggAld2LFg3G{o~8oB^ZKp#fKLL!+T>7wA1bH{BSghpy+`U)oad~2NEZuKJB3Cp
z{m4}#qva7R)CMG&A?SMFM)d_~dfMkkJgGN&So_~@IOn`pVcBcy%8st*L)Y)+TFT=h
z!<)x8?q>`7&6h6H!_wHoeLP5jhzUTTa6FU&xb_0viGcI7J$kpFQ{|dhK>csmZe$jJ
zy5{WgJbq)N#I|nx+s=La&`|mE=Aw4dXF#?zdf6co_^OHk4*?q(lPNEqQQ1WWYYR-Q
z@er}ql=y51sM6y4f?_B*P5o>-uwxqN8@*TyHcvZ>Qpz=dLBmLT9bwMcWrn9$No@B)
z_qUMm-EEvKZsGT#mA3yG@+xLyuvzYZnlOJx{(;012c-T_a-Yl#j_)3v8gGk=5<?Hy
zsf9HL!S5ej?_SAt{8%eF@3{EX`AiN!k2Ce6kt5#|zWe3#WSn2@$<4n*PQdGQ6wJic
z|0c@2O~%((vE3~@m7h7<r?lak68+Bqx9oM&DEacZjpJ)74rDc*_rGPyYa+CNx#XiX
z2xzINFW<|}+vZjj3bfb=HaUEZ8hb~{t~SBjKqF^pP1?3D0RRyY5yW)yzhkf7*aiHB
zE>ivc--Y*?JG;2)snqo5dwqSW{N&N54!FQ(zn@hUcnyC+GfXmrY-pYq<a=3*zy@6@
z32pr6G_(<=bD`_V_#5z$Pc?RbWf_hxH>P(FkJP`^^-!H1Wu404clP<Y(%F8#T5r;6
z$B+vskOIOmn(bEj=(IDrC}ZTtT}ZaYSS+Qcwz@1;Mq4uFVc%I4m)u+BiUl~eiM3Y!
zfv!RzxUqt{M+st`$}ywsHb@YUai9_8$9tTKDJdF*X+O~KFXLMfaYYV)Pt<@?2dXiD
zNA2&CkbNI#oD=<u(h$K5!TRnNB<~$Bq|8Hl#oQRJrUNV6D@5`hh?i?%cD>PhaJQHC
zLM=Cz8?Pz!DH7f?z!)?l?ka;HTa}I3$y2$aIpQolFGH~4)KHg4{r}hQY|w(uM7?W)
z>?3nb8mA+b7-Gs`eSH{zk8*S&7#P9=H$#6HLLNB0^pVrur4z1%d_X<tG0Z%Em3VMf
z22`M{!dvFG`j9$FHnp5n;yKV~rM215s`zU9@Lt<q%rA{z#mjRSl#iF!)qj_ZI<D?t
zhIo1gBzLnm`+DVz&%yuCcr~i;AUCZxTY8H>4agXjI>JubUB=IU3QFRJkaF$ntV)9_
z#$C7`tYYC{5LkBwKvJ{Ys|SE@UAzVKxqle$MaR$h@FLz%)vsINt`t1i#DYh>ja=|S
z!adQX>Y&BNfTe{In)z+6l3fLw<gu?vS`1i}DEU`>wyUhuQdeH*H`?2zYRN-n2zDo$
zMleBNr>jNjUJxOFdA6iyAmkpifp*tdf0e%<pZ=Tt{2`Uxe&^HvJ=blvA}m^$r!M%U
zJ%TYNTZ}neWE0H>V*C?Mb-FAKj;vBWc_v_E^!J<eNRs=di~MS?ljA4>fROa}DIN1d
zvrTp)CG5YNTSAD}e$+&#yp{}$w!3Mby6!B$(qBcc{i5f8f%xqf?%j!1_#VT_UXmVs
zEa%KK+yC5tb|t}SUu)bj*lRf~lT6mBli*b@L*;SZV+Q!$j|($53VVA+tLF;-lLlL=
z3NYNK41b?5t;|i0sO%#ezl)c{3Klm)Aj#;XJQ@KMN-0?&{%FG*B7z04a-YxLRV#bw
zsDQziP(z)6N+^q*+M6>+0jao3*K@T0*L#jL6%=Cz+hZ7HGc3rAo^s00?04{4tK3T=
z_rKlRcr{~cOV}0_9~+|CPwP1Q@MiU~vt^7nv7VumdW6HHGU`f9;y-;8nsI3?jA;<i
z@`s_BYa1^$k)*#M)noe2)ZA!svyzCEjgWwp0rgpb?5Kw#HrY5e>l5KH#JxP%b2%vz
z$K?9_vh8ZC`v@Mf5!>w0<1^pYZeK#jl)62ot;cb?AcAs{ESV15dM9;&iTfU9`4{Z{
ziGlXDkN%7)sR;K3?<#wL`B=`+S2n!7e;M`KyboVV)b&i?nsnEyOt__<Jw)gAomW1c
zK8B@#W1vSR9aa7EMV+!V-f@~{ytNq2tt?AIMm#p4#ZDv)@*7eGmIKsjUaWly4p(Vk
zanX))IpggM=b%8Jjq76m-w<U5WwIk4wSMG@6T1mvu`##Wc)v1LGb;|{u-UrC`cmyS
zvF3Sndky>o6|$Cw9p(h@4C-@Z85h2BT%L=6RCAfXpVY|+3^T$^2HbLILFO_!34VeA
zP2AQ*v%NgLmhd7?q$A5ibun5Clo*oA1UPf8VRcch9z`!_oHGrjrMGi;2VR~_xZTzj
z4IPO_7NbK3h+fn6`O_RYx721mu!9*eE$es??~&K;zA#{LkVhbX5R`mk81FP7WTCfz
zVWh(F;20HYGV&CaNg@aWJgcqsqM)6zyvodSf5XTapRo-ew4hA<4LO$xH=83p1vc!h
z;6UxZS=r4~G<(8lZ{*WG8XXOa&49zX3!oVi0;2$sPi`C;;gXj2Mo-da7@;20nQJN@
z;jD~VHeFpSQHO%D{9d#hHhI0;E*F)5g*F9gOf9AVhhaA4H_)7tBXro14-#1-+MzMT
zL6QaeKu;%Aw_b=FTU}9NJ>+Dr35|xG=&d~VLt2w9H&`77T1>qyMVD&(l$&a(8IKb1
zF3X!>N%O54zFy^Xs<8v=+Ms4(gr%7jgjx{PW|F=4P-9hA{gjKpTCFKm!qvQgsuS-0
zDcg0+OvCBKLQlG>5L~X@z{o(ko-R<7pFx67oenk-(`cWb@i6oCjnaZO)o66}mxRf=
z7)v)OkEk%$xfAki(Lr$f7R)55lgc<d`B72pYUhVH#=RZ$Z92KPgPn_yLv;|oi=1bd
z<c)L?B;bN>R@*Ik=AcmurXUD^jabm3rQR=m-Hh-HIxgR<-?}B{@CYjHv~_ped`b+r
zxWMNVY+4R8!fn_3&!T<*&Q?Tl=<=PsQhJlW4k*5(LGMx6<l$D!U(U2uiPg_AS>x7D
zdKZOk30PJ~rjJcz+u8UruJqZ{r9m=UM{$~}M&UToTcM50k>o8fU}zD4MF<5UB=XNE
ziW|H2lF%c~@-N_y`;n7%*6hkk)?^c4B{sD1a-RXBMP0FzZrDOdlL-;fLV|!XRd%~`
zb)%uC0nLV*?9|Nas~lKXRakuXs76&(G}Vw&*JM2k2SlevHr+uQDS8$-Z4r@JZsess
zt2JB2`(-`P6Km<7o5;|Aq68qT3hly<s^=3TxI1KySyhxd9+w^@qg@MO8QDqY!upY0
ztlcaqfVgpo$CPl4GlPQTJh)w$=;zeOQ4&T73ms344JmbX1j{rqNmen$pzLf*x+I1Y
zNV|?sM5}vr5j76jA}%1k4XogI9V4OBMD;741|Wn8BoRizT&+!i+&0GjH@#5k#5fBL
z;JXn3*<mX<@Wr^B&<bJOrXmoDQI!DNI+KJr#|fR445?V{T@?pfSUqG$L8STRLQ!s6
zLPQW{-XP+HhvmyV5yzu`JyNcK%584C2-^x*KJHUFT@4t7A}zu8ymZfgJU_SX|I65X
zs?d&5YZ;2%pd`?L2iM#5Tm0&2QJp;<DFdXziIWKZFO#2f9iBK~-vFmDJ#S?_2T%CW
z#+bJl;%q$QK<uhW*h?~HyxJ)#H1y_7go_%z?817{*4(IVKF^oMru#d6a>)mWo{21Y
zwY{9B*q?xSp1wK2C$B)GsY})znMC`>*x^D5+^HVJ!B-Q1B+v_TPIu=!%Es;cLjx;}
zt67keDI<<P2(7(27r=%2kAutF8-Bd`J$LeR`0LtLz1dx<>^KzmIabvz=n)Dc8-gvy
z-Oojp<(c)#&4mZlapgh{dVWJ?1k&=nj~lrL;Py3ZT$n!H4_(qLjrZilA08Pv^Uy$o
z7Znr5(FGrWT-mcfY-g!KH&1>LW$&+`822;Lm#(A5OH+}USlOMWJ98kvN)@~caRx7O
zG$?F#J6?Ut?-wiU`G_MzPK+UPI!lrlvGbzQqR=k$^vJ~_*64Z$c`C8D1JrCm9&sDt
z-fte~y%^AxI}Iiwq>QV|w#cxZzInl8ZZa8ggRsees}Q#i@vFhnclr5Bpx~k3`HItX
zEZGbTlu$;+6VQWxX<?FVQ9_Qm+avRTL*Z~oAbO8bJ-xB+KYPE6*<cPq;?bc!?}IJw
zjG|`$1i@MN$hZ^2;6f9K5#xm%pZ{_>pSj=)e-^RhJ`TI1=L{lZODJY_zqT2em+&%d
z`#$V{QBfyj=C`<!0E~oXRj>3vhRXal^CJuc1m-TH>CDfg(PF@GY%!}N)=I{PB0M`x
z8Y_TlQn(;aFGyK11B?{RAMDIt6;-8Ws@dEC{IK{MsCW&uy8mIyKZ-RuKM^Ah>T@H1
zHAD%Dp_21>Q1nMU6Y1SxyG*rbxTa9tg6n60P4;U+Fu8(|?uug%vR&^F466#gP*(zs
zL#quYT;u`pqb&eYq(OqKzZNN6be{XVh`jKq>5Jus+=BaGEsp^z&&&S}dOo2%jlrqG
zN?uaFA7ob<lOlP3fWYp<6;AUIkdxTriA=Cs?od(u+=_^l_B9_Z=BhMgbHpo_pAhDM
z&avePM&6Q#BP1FzZesB^WC4%&+OC1gHkXdt34}yLgf(Jeeh?_$M&u?Okj$7eJXR|$
zr;!l}{1HIIG01dUoM0P2jzwLNd0O2S@CTQbUrH*dy8l6ThiKy~9n6_?Znx;}_nAd8
z>Q*|Qx>*}!Q*2#+;O5Cs@nHg1Z+-xO)F8%MA(J^oB2i*ukbKo$gB$`lKoZ_7z9lYA
zw9Z!6cQ)hF<hM8kK|#p{Z}x%&bt#_-d;JsModGAH?3T6Pb38xPWwT^`PJgz?!DB3^
z!DH<={A<LuWt~cG2$f3bBjM}r5VjX=nh^#MwekYNszy(&RJ0-hz6H5kWG5(p`wO*k
z!+S<rWNPJQX_+p@L&?`xhC#CUl7&^<jB|^Eje(ROS|`-&G4^8=06~WwxIsce`NhFv
z0cyapLy4?F76XWtM&QBSR32kEN3Bg1mh?3lMUzXyQC>iRv!roBbH1T!k3|=p=Ty{*
z_~uAekPcg`a>>BtYP_XI$BK`CeEXe6epT&1)x@9_XdBh-J%jFE$<wx-XP%i&Vq(&D
zx8%wJs%r*mqUIMXf|b@^Mtw<7pLE7mR(7D@7y1*~@Vv*UdnRqZ*vKEpM}%3ZsZ-v9
zULBFejwi=@GO+~yyaEh+?&&DISj%fW^I!ABNk3z62Qi}M1_;DE2qklW@E09pTwvUd
z7ivZA<oMd1qQkDGQg0Zux)d;?7p$3XqqoH2GDihYgKqgKeDuzVm5UbfeyEjCh1-=D
z-`%#<d_F~GyV$f4{_OCE)aA-e8h*X<u<*5s_aEjQ;|)A_iGMGyfrJKkDbNA{TMn@y
zE+!F*C^`HJ2R@W}k}HIN<HQ;79u3yHwkW-k)Tz<AQx!Pp;z|>oB`*ul#@l&;U<opm
zN7YbcBTZXn(m0M87R=Q0^dO&`UR#`hv<?pq>L+WCOT(^sazvayD*g^?JDiGvns0Th
z!6;(IFGb$<2hw`aqWxhkbPIu<dWCd1u+Ksi-mUMl5b);+PmI)mDSHk2vuZSSMu%^A
z&>R*P(uoE%V(X=%5pe1D*XZ-%gdh&Zns_|VnkpLn|G92J2u_1!Vvs|kQaM+Orf)cE
zKp_Y~*0_9*%p~3J?0C@eG=+3HG*<}yOKJ7t$!m%~qTuy^TWmDQTU_<Yqc?BHJ4oJQ
zHr~qhM}6BJ!5Ky(?0KL+$2EV2v&L$EhOk)~Dg#(vQ>R2wNVWW(%H@+mCaIS&K>{!V
zwU=Q*0v!RSmw!P5E`P{gt&rAM_RC$YvbFn?s~%Xot_QZ*jysvxts3X?*=_U>@N`nk
zpRL|U9?!(+K5P-Hh<vy3%kuLI2h4oG;qm9r9<L_~nz(#EWTe$I)tQTaMAkn0HAiRM
zIBKLfmt5LM^N+P8deI<{v}%TQT<ou=<}jEvcM!GX-i$z)6PGMP0vLa$_Fy-Fp}Lx6
zVknIr7@Gto0mRl9iXd}gLB{CdqxD*UOC<$rP?77v!M8fba?d&tHw6X@rt6o~T<t%8
z=UG#q&RkKbc&h9pq_h_|GPf&$jJHkMQ)dP%T2QuQH2b%+>^Og9>C+5*iBr{}^#l&k
z7sroJLJ}o7KMjw9SEYYSj9fDpsl|()bIFs4ClaP~(OoZyXC#vBXKkOXR3mbB*0&ai
zR$>sS_0+49+c50%(q^kAw%<MS53O&r-UGbgLHrAj4NbDeoUcJih3|8d<IV!04lm{Y
z$&&s=?(^G-WfiMNf>7x@OO=#|dE2@BeFlak>nwU~PQ6^N3Riy?KnMZ>ET6Kc3ndI1
zYk_U@d}IRoctX_2*J#Gz(7sQHn0UkhCS=6Ur5}g8KJz5;HCE+U{_?GC_JO(M;YqXV
z@$g@otj-p}5zl$OUho$zc0b?1TK)UXe0`d_4!^2u4^7r=s*8?adV!w8RowKpY=;jq
zu9(@oX?qrYM&W<snRDgP)#$1<yS{$%$o=i?MepM<i|=$iiq`taJ$S}<^tnxE72CUz
zNAvmW|4Z}_r>B?MLy@8L{;=H(H}>OSQ-!ttASffRB*Bm`dAnJ`CXsg~fWg6cXOFmX
zQ+XEF#dzU{fKE@Cm)(<d>K|c8l78)!G+3$=e8tK?R3d+d1)uA=)c!9ozvjK(BTF;6
z0M6}L;NyDRZU(F8MXAp#434Af@WmMHF6+7Ge8fBBx%|Agqb2y*VQz63dJ2EcTiw;d
z&+T-q+D+NDLz4{NljR|$8`g&}pc~~yCp-OlzF%u$Rgm}c^*R&&UGBvdmdV8nz54sn
z(DCbkf0lo*g{Hn<x3~`v3uX4eb+Vo>hac%jtio@@Us~4jWJ$HcLXKli*_*sie})&l
zLdi(!uo0G<{QJt*OiQMlN`hee*!U+m=uAo7hybU8p}?t4DL-52*U9(zcpc{#k8^+P
z-ex7VR6i!QH2Camy`H%i_UExZMU2nZ2q$<t`}%)npBVWY2D=rqjkYVvY!tARvqnum
zuyRNyo#oDr;m5p$tlou?Ot0TN9<w#k%jLAa{#&JkLhZK9?Q@%cERLCfV(Yte92bAB
zVC$zh*L~QDt?My3*ovHw!q+9P_pZN8w}3I}czxmvY4ZRF5Iwx8<9)3%Q%x~2bc16#
zo)>?>%KxA47hGS<*X#BE-|i1pto|SG-Dq3sIbSho=2*2IZ}|0A4*Uf9Zs|imCEs=M
ze*2*LG#U+Sn#r>s`HHqw$ZLGh)c#p$ipQ<?@?W{})Lp%5M5w{;eK+U%cLV0sx`*$d
z@_uUyRTpUIXX<G_I;EpK(887`7DSJanF@a~ULG{e44JLd*>R|zjfW3T++OFw3sZVz
z;prT2ij4%DMY#|tj`XGfI1~&fI$XyEd-_z|3rV2_f*ojs1SpVBBJT*89ts0gQkq+C
zwS*L*UmSLu%*ZFP=CakFx0p1pnVjoqYwgi!0Zf=HZJ~l~Le44cR*2)LV+RGO>|vL>
zMgl2+<Ft|agi}@LE^%w^cKkOFgrP$9z3tObhesB?xxFP;L4h>TGhDp&h`l_8MCMPV
zqHi4zo*Z(Hp{ka$izoht%WU!@)|z^Qqh|l4j*O1;{3dQX-s`EI$3v5$nf60pB2Lq3
zf+A5xUZin9h@R2tvImQUInlz2=s04GLkL!X2^=V;4HPX${8EEd#3+jLAwx6YV^t1S
zD?O|lXO&eFrLVc{`WhxKuXhBnKh{TaK2IxKv%jO_w3P7z1XC&@Feu5}Uanw3q<jw%
zZ4Z~XgOr6*$4Htsh+k(Q*}W;S%B71Ce{Lv?CJN1c5IjR-sHq5Ogff?=U1ZX-rIrML
z<tNXxUG6O{Qm!|Bf%@g>K10H118qTn(8O7d{i9c^*-9w3`Vo`A3J~-4J?!+)bNA;Y
z7p?xjhQ+K#>K+W1Tbf125Mj8h8WHL_3*M5BJ(<nh?h=e6eAE#DX;<>jpz;kNBEnC@
z^(Uv=cOB27q3nexAQ3Y`B!cJS1}pl1*CPu&h1dC40sN&br7ThW&A}R#we>c)hNs3W
zg!sA(dDh!6_~mTBMFLyJAZ=^`5fK3Zmsc2ITm8DCf~U(n6AB2cqE#)jJp((Z2-t>y
zrlu=vN8v%q>Fa~&>9;k}wyo8$wLe<;SkV<i+i@$juWurdxY@Wd>zXlX;MgyJ$an`A
zb6HC$8oc<&Svcfe%JC{4O@R2MTJ3aX=rn*9%g2?mKa8w0E>*T8oiBObU)`$Hzxd^7
zxo$gXAuG?5vD;mmGTPcPjY-zVYTg{VZ&O~8E+Y#t^DqVC<O?GTQjI(%fYK)@a>bce
zZBIa^cE+Z$A1+eH+e!8U1X5prA>ngb$mS2{AbZ09da$BP<vEN+?mx8m069R$zbmcU
zsKcUpV0)4qvY3J4IV&>^+-pHHB)3JCX=$f(xYi{t^2MNZo10s^t5z>Qq>gepk$OQ=
z)8VYLmz)@5+8zejF-%ZaiP*EW>?WmnX(vok2Xw&&4BTK^8kgDVc{njsyAm#ke`)mP
z#8~Jc?Vah!R6R-ly-#r$tKM^s>JkJ<xi8@FI%Q?!asbiK5R%dz$7*?*7BX~p-Eu0b
zq&9T%2R>m@A?_zGR|k)lq1Mr`v0_tdr#8OR|0z#<q@xdE3yE?xnjCzz7-zmQpe-=u
zm{*|+Zqp}4^c`jozT5hkhTmObf6%<A$syHhwSuTcB9fqVIQSWycNalaPV^&*zKd^H
zz#=|=1W0u}`D;p>jYeFYI%0SR?4+>WCbN!lIkHbpGO@8y1nZbP(5A!vx1W&2T>B>O
zecK)55VRi~;N^gnuqEz#6`S-Q#P$>&sA-O}Aco=~(nWU}ob%~c;lWOCe|MFFS6&gx
zSYPw#xk`onw%9ye?psTCyli+-+?)#*FDw-{IT%wMLx_ekw<09MMG)eQTxoDh!vOw`
zFK^0rG?d`;TDjmCvz%{pjC>8lcZ42MDG*XRya5tzNricGlM73PVH1_+LRX}qL4_td
z!0-&{DFx=1z?MsD#ZOB1f2Z1d@Q0<;dzj>Wq3R$Nf1g0|C65NEo$8VxfxM1GDL>bZ
zpZI+q^4q9z8;SPn<a$kvT7Sji5(7ZoF*Ey(ULVG1xTbVWTPW&Qe{=ut)Ak(@)00E}
zo{#7e5$xxnLU$s70uQp3L_2oOiV#NN9gx)M2CP{zxd8sw^T=#Je>n2u_)A-N`D*_z
zs009XM1iKLh{A~exP~|8A`)X`=f2dXR>Pb>`|NMGcCr2D?=0*;tGE31di>nq57%NC
zp~}Gtr_sa>gEkzzi4C;hJjmv_Qh*S70th%>L=Zqd_zgn&Z{~K-=t23H2#tSTApFWy
z#@E`~#&UrKW!3F*fAEp`k4U{oS&5HRs^fvIQ3X{~V?{-ub4%K4A|#-1;QigH#$V8l
z)|*E>U2mVce$-j)uSvEKG3MI*ook&Y1x~Mbn|?z)wFR>j4^}udNf+<h%hxzc*%F~~
z6ZYgw9}IX#w2MLyshX4N>DH(e-R?#(<K_8K3pSW_*Oz9$e+k#8hgMd2qIUh>70<_!
zle*nYI!*KN-1pRbLe0d>EX%uK6x|R&oH~93!&p~XJH3*(0z{I@HaRR+a_iIq0^;qn
zY}PO4xArYD24&piKB%Cu*HTpfvTtl{SBCERoB%eilh3g-&P~kN>{(sc2V7VyAQJ_J
zyXMeP(=8rnf7tTsS(PGe)%uJDdYm<Ac`os$o)rzaF4>M7fS#zQ1+hQ;W0TF^p=8ic
z=6cq)J}HvMl%<@IPybvC?DVshUR>4Q_e*(rLgUhzm}-n)hbMIDox-)_xw30+o^=gh
z65}HE1>0S+u=_ab8`Jf;S;Z&T*<)cJjbWWqo1q6NfBzl0?cJ5u)KA!O3OA?K-LTe(
zK35tYKD}eww%^Ti&yh_z)K2YTJ)U=sW3VDXAuU2e01+E6W0JS2d9}{kId%$<K3Z1!
z&0HA|I}<kS1!0cwL_u(vP*w187o1#<8ckp<EuPxyrv-#=OD}6ITALus4&{|WqlWu@
zWy{uQf1S~eTX#6@8<FAg!5La%11L4zNs#z(q>jR)IG%Z?8);t{a{|(z8HhmwcD|Vo
zd|bwRA9(N@n?*O6@*O{+uq1B2P2aJsjjCh!efJnos=L00#;Fh=V?=)t(bDStW4ob#
z2j`5(;g=}k8sWb1r17+;J#Ut9HsbepxWb*0f5k7K6N4?bX5#7S7rw<pZ#@xHeVe?Z
z&&vFcBK>CSM=!1-2~lkBXCMO;rQ?4N%xNzMB3Yu>eca<xW+UC(>D2T$R|pI`o#BeT
z-qk;ZdF)tg;F-;SEZY0Jt-~_MSF4hZ%Tb8l&F&FyZMUb0Si)AVTanq%5A-avoS0Ri
ze|x&U$6FO<o^sR~EX9!eup|t{n#%>qZ%?aHp}^YQ0t*#&xzDNTG6!x>A9mss^2$>$
z)hlNiCoq4$MqgLG$r1mVj;|$8<d^uCJF6H77oDB=Z{cKqTSynk!8&R>e@|rD?Hw#u
zffcz3d4#~4Z*N>S%}!6(@7Cd&g(|;Cf0H2ZKGzKoE_IUz^4k`c2N}9!<;>c3*1pC6
z-D{ke_j{<VTMi(ryIky<Y(<UxAQqj~L)>I7;}eVr>agaUQR(e(-*4QWC$rOH#uuBI
zns1K~1xXk^(p0b3=*v!@CYnRIB_p8GEesI$8I&^u89@u*Pj^t;$2Aw4!DPqCe>cp}
zes$YE-op})osYZz{c`wpJB;5quJc^=Q&C|vcZ|<f_pfK)x7`!b)W2JHG>^8h^#!M)
z8fqBn+~@NHww08z4qsDI1#inx%!S-O!O#rP&DG!EefxH;w|iz{(}%%aH+xF`FIykb
z2-<F^Q$>sVQod1khXvQ@{69ZEe?{-d*uNKN+}w2VdJu~mKfb?S3AW#e(pEX%uK{_A
z{L6O#1PpkSPrZxFc(KEejK-yf!ru{SlGDJ+r<Y233ew}zZCEJ#_0&o2H{2B>?245>
zwZ6`c3r5zNcdYISoAaXAh9P#X>&C)^lJAp=+rxb50DBL1YvVk{(r3qFe+$5-XXB9m
z7QxNe<Ut*#zb_Xredu>Z%SUUemC^8ZrP$uC*`s1{4Gd6!$P@{g0S(@SCTt&0D0<!}
z)xNa(zJ9w=?_ry8y6kZ}ci*5W;y5?CXA}(nm;0U%293LU(h?~WMdS64rpOeUP!J;Y
z5H_sE1b~5He-D-y^iGdae+vdhrXII%AL0Eqc%L_vr;jKY{>*4#pj*tY;;Dw50W<tu
zi}E0O83-0~W0Kw*U8rZ#faNZH#AyoUI~1=ceCaMAV^FMqX#<;n!G}XnV-c(SQ6M&+
zehC{!Z64PiJny>IX|a?3dU1X|!`=Ca4`tK`Q;Lo+QKo>4C!C2}e_V^#PVk>Bn2n3M
znlA@&$HtTD$yR>vnaYRMB_T1N4@N$Y#x+MJ1=X>F>;Bf4!MIJwWjQyl<KfXi=xXD!
z5EMuV5JZn+Q4g{KYY@i1T+k-tv`|;#eKa2DNfZ+CidC;{=M}!&4z72=6}8}H=JeGC
zMvGrJxs-{U?bK*>e-Mkm&-#6T>CE_e9G6XI^UuBMgQoJ9Yv9JL#Zzj2LxwuP`FcKK
zbQMFL;jO_3Kz3ZriT>{jUIlUEH$-&}9fR-XW>|H_E-hQ(^cnfNRilHux#)U#o&+XR
z!(y5TOLEI|y5MJ9C<5-KnczU3&SNRFl7zfF$bmXR4h&V^f8SQBQN%dVVb(H^+7(!;
zpq#Kn`fWNNnbQY$G6wVP$lSlE%S`5S;HmA{Y#IzE8;(K2ro*eoYA9GV{C~SOb)tAM
zmcMu2NNjB_))f|~&@}R5t>r(yc#h@RT`1D8$aGm#!Ftz^%|-tyi7K8Q96H_xn;M`D
zCb~uzU2di}e@V@R4e+2^PFS3~c_;_Qxc2dn|5KG(Yn=TZ2gckYSZ!tJ<jH0;?=!0B
zHgXImsm1#;m)d=ls%lJzP*Dqf*CDTspK&~F>K3;T6HkI`@TXOJ$Vn|T54_N8SzAAg
z*)$sWrD_=1x+l1GGVKorMGpSLSzD(;Vq8lWC=BM8e@gD&@nvsm8F2!l<N#F2c+9|L
zw4BcRYboA%w)#v-@Y$ZjT`1eO>xjM>u{Ikw6Yso_qR+_kweWNPC}nE@u^n~3<IC-=
zWa?+yc3DWr_Ha4w#E#+Q43J#ZRKV+P%h3X6GA{dXYy+7KFtEfG!U6CSZFMCB@I&xr
z2OG13e@%B04KuB3G94~W9bN>ax0XDFr9MsBpXkB0Du{GFtiBp}p1AkLDA#&Fo51mj
zO{UB#x#_89sT4=qAKmOV0Q*V(-H*y_C6Tkdno_P`IJIHw^KmgCOYL&^a&u#1Ti=V@
zF^rnrZ!f$&ilc}L03(`*uYNv%m&B|rv!}+^e-kXdhgTc+J&t`u-nf4gzUetmR;oq~
zu;D+Y?JW48%c~F5Tf<6=ze^aunR!6~pEYyKd|nIMh+0fI{8seO_f1o@9eygv?ULoW
zIvu~FwN^bh{ptz<pbz+&0})lYpyCcAP|jLJGg<Yx&#z+r!<DS@yh{H!FO^SIdI!45
zR<72bljppqb~m8X<Ssp&;GZ~<3T@|sz=HrWfPsUOY&aPK-~xaTZ&+(D*F)!U`d>Ad
zZ6ddCeuGAFFnv1lg5!;W*Senbs_}4+4yGOx4Xnl8Wh$SS999A-71L2=^NXA&%B8`p
z3<GUdje~rx?zxv)RstM<n%8u;H}-*bv$@-I4R2Q32#V|)<wQODTmU4U<<lYo0N(kD
z+2+6iiPxJ9nN4M{O+cA1!$JTP9GoU*?EawX;jA6IOQXIwku5dn1X0GOjx+mL13^Ne
z$F!akm|(r;yMAV1gKketmAxIvshgJNS^oXsTo%d?QN8F#%e2gY=KJ*x^^jC@pSKlG
zQw<((R!qLqxDX5%?{!x63_<1&p4L06tdW%jGR5W)1R*&&rZQdA?iOnV_4{7V|G#<k
z^XD&n8h-{O?VsgzK6mvUdsW)aTh_hcZ?=0EJ`<qtGm_|5@>r}63IZ-ZhZ&&CZldm(
zZ0?55ppxQbVCk@b+&}uSz3|uDx(%ADoD(`6?Ny?RZ?~l7`)zhS9sZTR?LpG^=C&FP
zg3n;0cm49vk8|&_{9t>Rt(9e0I-d)o(dF<OJg&jZH|c+lz)`}x%ti9inxDgLlbfcR
zi%D@;A{1$Y`sJ57vQ!o*`(!Itz3!ru7q`J;Yo5+9PFP%j>0a6<e9pT2Y;I3=)sI>Z
z4+O5yAqu7QX22iz?3Fv%maTX8sjz6@U?ZUzuTB4BH#+s)H(K?-S>yX>-C@{UrW)S!
zdVK+XP(>hF@6y^{AID2(mCF1py3}}WF52BsP39l;Fk^%_Sk=Ylrl#BXwnyAlxA0?c
ztn1#{>+8mUmzTP<@&!)dyOY2&VGEHGbVc7PT=vAfa^}Pg36V?4amNWyPywvlc$!BN
z+?FWCcovGi2JgcF5UA3D3w@|OmqZtUV8l78966VR)bRIhJg-nWMEEzS5C#iBY<VmB
zfdH3Ot<bm-Fhaklzg$m+aUn^l^O)FIMn@6`9H8ERa0I}Ch7ftE7g(7GdY>-83GVWG
z4&+*o&4?y*b)37b!Uf;u--86e^2~te#gj2M=hgopTOK+XB;6hfPoGpF3aE#P03F3}
z17}|Nz?4=Yyb4SA)eW-ltKSJ;b6iGKkZ{5n2y&)7%|>yAm#$e<Q$b4M9dbIYOS*7Q
z1P~d26+E#6H-}owTR0Nran=dX+!zIaD;*yxZ6g;>RRL`PJms&V4(FcEAWZQTVgeun
zAR=?~P=JD3j5Q-8DG-1jU3J;|xUR;$@k-gdF$@DFSb#G*GLiwA<_2w$F-Ip5A1P{+
zfk2~bwMNaeK2$;ieNL?$5&>-dv4Tt7g0nb(vpE}B+>p;`<}=>EY;6l@2R&R+-U|}I
z+;bk$F?0@P{ts+J4C!uNTW-24vp~VkG>zyso95Y$k5&rqS!ceQyT;-6C__#+o)en1
z2nWhf9&iD`AS8wrvwewB%g>ePEJt&l%usMQko~)rqRD;!R#j$$YtvE4e&cT-+%Y+S
zdNfEp=}JaYbY!#~obgjXE1ii^?7Gf-BCiwRMAJVs^=C~yf!ZPN>ES2R#5UMtX5?s?
z-%gVu+vV@WhYy;Xw)I$=Y%0&eO$@1_r`3C2w?j>ziIahqkDl%8o&5Uw>zrpj^eaX+
z_mkYusA)-r5yQN=k!UzFaT4T(?$GLg^X~cjB-^Pk2}dMP*!DaC7#ArhD?Kx=504DN
zCxNbrCL)u%`@`hi=Vr1pND#w;fe+D&A(%_{NV<~DjYHhFV$~y`GF(vg>^hs0qG3)v
zT>DyX=4dor^RMcsN#0P?#9nIJ9hz|eb*nrx3Ae{k!vpd;bjxc&mm1uSBZxYG-oe+k
zi%hMtucgfU&F)Sn554%CYbQ3#V-h56T>9`SN1zy)!hzQ|hVBU)L;<)^%~ut;sM0pK
z%akFJ|ES(JDdu6jTr>|c{6zBS*L^UjFKh*x5~Dhur8m}O&GN1i8AT0`Ep6%LvyYdc
zQa(#r3LqnIWK{=Y%m;JIaezdB3L&}{f@8AYG~K5tix#EE$yW(D<Cz%-%;W|!1D|as
zabuqiHT4&U=I{=Q&gW4H>>f;KyIjI<i*}75I6)w@$HPTClasI2<Y{Hza`y{|M`k$b
zgfXzni0AX@)sz%9nGnN<*Cy?-@~LJ6V9CM7NFmN=*1G~$HrE~`r<tCAA8`&`hjPm5
z)zxjYADY}{(rCGattBt!*N+`N;EYbFwWw#CALe%XE0?oL)4Rzhk8Cr*5PZM`@}&@e
zMz_!@=ZbB^r*3Wzs@~JIfWNZ9JSx>CJRl6jJfZ+nVnmhq+^ipo_2094rsZa37B|b4
zZx=VTxu4@|()k?>Y1$Zn+f9wbfG})dp9f>Hv!|odS=1756_`MNWh$4X>AL5GRodbN
z=twppzW@yQkc5#wW2y)=#=aRlM7c`6aJUwi${p?gBdNEZRjMo6?X}fkJGqA5`rB<#
z3OG@+6SRZ?KhbHHa(ctTVp3<0wkEwyr%aBeG8OXNCgc@-%M*ovvFx}<fdk!!Q(e|M
zF}l)3G^CNE!`D?&F7{SwlPX6-s26CdllY&jRLg1~xU)-WC^kGMK-jEtmCE-O^~e<P
z(Q?!2pWQB4dUHl%m-Yj=#p%l2qGxzmVAHb2VPBWadd6!&3`8G;BLwkz!rN6wot$d^
z@g%ypJ&s_Vm|Y-$f{WGlUva&WJwXUJS<L4bG1!oGg50lTe}*n|C7Fb=_G8tuOsrfT
zs5d7C<p(d16Y~*#<z?{pboe&D-Zz!<&*#y(6S__4JCSyUTR7c9p!eSr?dIKn^r2Pn
zJ~*<{eU>XhTXK%6+7uSs=yJV4fnu3+KNtO|!JowCrBvB}*EV6!l<K_u&IiFRADcPx
z4mwHTQ8JC^kV|ZasEU3#a=TXT7o0v*n=6WTx2Y<~j1pAgnpI1ei0%Hi6n~Aji<`RJ
z=&f&>DtiT$>A|=6dTF=P<LtWJEf*yy_*Xt8D%M{CufCTO!*z_dCbwZl!<b`pR^8z_
z9D=8-6~Y340GL3cmXFhx&+DW)ZW2uO(1xw<^4*Q|_GUG&2M-6f-eo-hd@tuOZPt7*
z+T5NQeyUrc)W=h1b<|M$DyV9B%j73VX<JJ-AbyUk1xta-@#;I9Y_`yIZt<LI;j5JU
znuAy2F}14ofNkEIOC5%n32@`H=<sck*NWe}^LpJH{Qh&AFAkH#doRwpox9&_ojvcL
zocY)tJx-T>Ujiysuz~IEva<f0$1QtScgto0+;a-ItXNoRybrxlq<Wv8c6JAPRd8h-
zwF6?PBB*n+J0|kNDdldtEG-*5Eqg7WviP?4U*-W;Dv0X@&6AAo7WCPB9+&)I0z?B-
zSbLX4U;-w8mH@YEjhYr7%fyq5?wey77YsRDQk+KpgB>G8oleMIvem541EPr@_xSx+
zJ0E|I$ehh?QN!auGb*N5Xii74eI2T+sy5A%fQV5L>5?I|g`CYDqEc~zVUQOfGh`ao
z7O2>Xu5X!V6Kvxea)zx;S2iNSPQAT{8*a{<qb9b0yD2-YQ^zOEa`T7%MOs3(DG;=P
zV-V9z-5`0693=yhYrx96K2Q8G>d@?@W!lnY;x!G)&u<=7I_7eK+``3!tK^>P9KmVA
zQU`G-<Ptqy3CA4R)O>^|6RhzCtXb^~Q|@KMjjp7O@y$En9A99#>jSqJ?s;wTy#6Ku
zQpV+f3S?0#XliRzlf=Xd3WjK_qG1mxus{#}D{e7U2bpnzAXA@X)zTS{r(LJT3d<y1
zA0rh{zQ1R0TU*4SY@;oF{bg$-aKBlY28XOriU)$-u5!nD8d|&0E!W9=wFR$pD(@*1
zXn}~pMRu$=qX#AP1m)t&zxidql%F(|$qfO2fwuu1Z>XSLDWbm4@eI$MaF8)3bPrbR
zuU48e+Y?X0r|sLj4hpv^N#tbQFv#a$@RmHMXWpu@d2Yla1(^I=ti6Nmf0Et@^8=yV
zod0*KHw(1f-DpV)RjajqMaX6{i*5&Ja76|>X&t&<d-|w{f0cgybT1nDsffCt&sWrc
zHrmzl)oorZ_)FWndVr~d(si*I=b74>-Cye8-iZ0px#%veeS#QD+?Su?d-rcGa<6B3
zSE$&Gc52eZ`&?G`Uet&0M=4=ZZ|ABriQJQp(^+e1T7b$m=aq^8yys-;*TkC>r`W^g
zJk$(HB)2#3I6u}6<UP6Vcw{)D6uS3+(_CJ{QA>*Z9q1b(!JrD!k9ZT6q;dwAOvx5W
zfaaV{ZW+2&YOJhuVbq1#hqejJk>js}>?}qsyM8-VNEaclOkQM|vot05yYj)GC2`f_
zV-IqbaF`Nz;db4{M%8`y2a;aGqB1B5E|b9&9ie$%K2$8dGZZ?k(VmR(1A`}jFHCQk
z$9d`31{xgCpv7N_p#A!?9TyPIXKUtW2vjFIsGjd)EosnGB<7VuvZbrYO9N$ipqzn5
zwIJC<ze(0BULX)kG**lNgPQlZiQgm((2V*n-=Fa#(s#`|I{+%*xI_+|%tan}AuY?V
zfZ#F8fsKW=Yc9GHFiHbCpps61-LYwq&B9kJY%2BbAGzHgJyu+8q7>*)rgUw|A`}95
z*v8eiM#H-k*bXEjLO=it!2&D^wNoFwiMcS_75t;wwD+q(@IIbS<Y;BPB!br+v{0C7
zPNR{rCTk}n4w2?^-WV7H1p<OxRwt%I)}1E9gI@4ZMm>)8p<>WZiN$h%ESlJp2Id8t
zbp8jdG*Zh&Nq?i9MxnA$*BT3#K{LZ<Nm4pr6e|3Wqp1lv`#k8m<@w#!)+%ugBvJyK
zEwL+@y3F8#T=8&Jh~URZ4D(>cD!frzO=s#NpaS%wH<xO+BArNB@#%uNpIs+W<;znp
zRK3I0P$<-oFhDMY?A!T&T}}-6@x?Z*p`6LxwkH5~1PL{$&ODg!c#)8X1aZdjMNEkS
z_2i}-4mh?0fQ16<++|}a&y+ePBC3Yf+Q7-<84|!WSoIkz!RAS7H{DN~15=vbqQ>*b
z0yKk2GHLV3?UkX?c}MkhNhjb&O@j;^^<ezkQ6?Bwj7BJmhGxls^c`=K@n7T2*UWj`
zo6qWToY*W_!(0o!l~|Hk!Q?=cl7a?B%`SfY(<%|;3Q0>GSc@U`E3QN`4W<+Py5SvT
z(z?8LL<lRR$<NRB*Ydtk(z+cVm&eoOt4M!tf$?^KpF=TSe)~y2Z2_hA$kmaW90E=>
zS$HaJ%vPeqt?4L#^geD1(<iTqQ(vaa()q1eUMbOw*ecU+CHU758KR9|tDSB<RIqU<
z0!1ppajJwh$!U0KHOH!oucLRS)YWeBQId`-$>Vu&IEN8vfP<NvpAQHM8J7z&yQde0
zmW6k2k9w7XW@E?&gJA-l=>j6n0|PS=l&S7Y?B8HnZWe-nLd?OL@3JR!v-MgBxGqg&
z#CVUssbw;gkiySdGUcRlrp}(lg(ckVM{|vWP4&=t<{^Tej1Taw=eG!D#1{w)v-^@M
z6s0Le{ox>_gwIpq&&a6YNNWbLUA${k1u(lkmV9b%$?Mc7-Ok~gyLppx=Pj1UH{fp?
zRWDmLIRl%2eow0Q;~g-d4-8vnEvnH;uD4z<Y9qoTj6lVuF$^JE5D_C7+DWsS=jIrk
z)De-`Nq-J9KCU)z-q0e&R;fOByV+EE9KWaaI*opm?fAVfaXDu1^fU9(pzLWhon{_&
zHypWX$SaF-4n}vRiU!DuL}XG=KHDzUbN2qXLq}nMa?1aU<Fpbt%o{=h6(Xyo^rg38
zFvV3?Ah1y3vWfVp9Ht6kl`64ZyypV<$Yn69AhQgjr%=`+MWRxy!ez><HhWCJrwI_T
zoQzXeBzW;XeUo*Vz|PlW7@5-!P2C4hGQ<)&45qbzUs=x6uA5}NFRvn1spr&<IyOf$
zlin(SO0cRcCG`gyT>2*y;GP9JOc{FG>k);JK%TKx3*m^+@#yX8Yh}-F(QJ}=9Zy4d
zv?FNE!|keoV#wP<+M}2V6Kg(s6CG92j+@70yQC|H#K7I`+;r^Xvf3`G+U_<&0J(|7
zykXpua;<T$qm4JQh(cJ%5+YAxU~DsURTMFQ?sC|<gl1A&+ogQ6*wnP+E0ME|&~!HA
z9HcEs8v-$OCzNKk+nyARFt;c|!k#aNm(bP~G`HZ|jU#}CS&g7`YZy;_&a$Zu<4tv#
zyE;YnmIhDy%Od=<O!RR2UafwGx5ul<Rs<H+r@+MbVj2Y8ul>T?T-0G?#p2A;M~tR_
zN!C?KfRiB!(&E~xMHQxb>JtQkJe8iCIx`HpNBVo8y_cse*)mk*&jPJNAd?|B$9xgj
zJ%o49P&Yqnmi;~jUDG~xj8A_q#3G~%?ln?WAjpWeOwvXxB|4+v_WU38>?W1l8&7@C
zs9$0Djo-e#ud!a}h4x;=lc0b)u_+*b%WP)Rm@O&B+SHjcjhzInY3?tv7T!Vxf({Ld
zL0ozVi4!R2squ**+rz3H$!H29Bp!)Z3)oF$O(nxk0?NDYKo<19FKxq))>1syf6fHa
zv+6$=QbS!jwepsjLDoE_cBGTu8hAU4lemlCTJf0hVNsn$NOw)q60L>Tal;LN8Qi96
zw?%Q^+Nis+(*4aG4qB@rv8Vcezx&^#ZD@3b_(<YsaSUM5lLLtc7Q)J#2(wqmE+Z+s
zQkW(NWr+D=T(Q8DBvcIyL65<&{=Lute_8B4+t~ZgPa=8qgD6W-EJJVuuaDyArD#z-
zO^_#_-Ye>DFa8OMON0MWvT^`_9j>bdE#@q=1U24>SJqR;jNuvc|G{l(kH>AK|Nk2#
z`)Pt-$@@oaK>}}6*7@&}Q^^m7LJ!XTa5U72$(^Z=ScUHGH`*>A2mK4|&0Gm(ri@7F
zb7=#npZQ(wKgKh`)lwjXfBaVm7B7*G6DUSS%u29gcpY=it8N#^UEr>N7?|L`V6hIp
zx+OuDe7Y_O;kOnXZX$B!_dTU?QPERw26s;nSf~xA4={wW(V~28AU`*8^@}GTVN)Gm
zeJQaKD|Ii*^kLpo3xDyZhtx~yC^9~!C^Zt9`aI#38ablo<6XD8jb3-N{|r7tv(T}a
zu<Itl>i^JtOU8#j_v5I4T{Ux`ak5RB1Yv%edbiqH7(&Lo;yV>tGu`7O3zL=_(rRS#
zIs|{g1_v<7^$q%cYA`Ja?R(E}?^VWKeV3?Y1K~LAzw3SMoOObF(i}gA_}^>Wmme<e
z_+L5`%F){Dd}fFNPXZAB%TC;)O!T-9NdP<(MG4O`g)VLP%$-humrX94R`AE9>*t)p
zGsJEN4x)~{7e4a2z^>)p03fC&5eWL^W0N`HySgas^A_M`qg{ueCtz%0C&;)-KkBNX
zTp_{yXh)GK_s3w;o1*5FL`sX<Nc7rpXn*3q2t*_GGHz+g>9hax>|1<Jj>4!EPCYlb
zwmf)jHmjwY<r6!9TViH1G%bu*Se|pXIps_f=2n&=T=n=%iG(@N_Iyai{eBr-gH`CK
zc9cAZho!*bpcc5-Xj4Nd0CI0B0N^~iqd5x6D?_ED6=_hEIy1PBZWZNr|CP&UbC^PD
z;gf;Vx&|hiZls&(){%U}l`xv{?G=#gErf5Dg3mBvdo7fI(9lQd6v^XYZC#PRXH-<3
z4NQ=(@ABh2ln$B{|4VX*-aZxS=MS)!V_tf@DrpAog|~YwHW&D7Rp+Fm-^SwB@@qaT
z;Cs6>v6IsHz7(Q)2tOygGxrQG_M!K&t)$P}IvL-P@gY49(p%%BEj6r!h9(APRWTuz
z(z`*^cEZMgDOzw?ENW&KIi3}!iW?NsTntNzvI5XVZl$=TQ8tARmws%&Y@wD!w>*zo
zOiy=AdBc;%Cadrvd$+u7?MVkPQNC$;M+VL%JD4fVp!g^Ml%#Rj%dhu*oeC?#LM1}G
z<5=Cn=-2>2uh36S56i0QJ?4Gr5Za7Ef@D}`-A!+Q*cAAva{{Y=-AXV6F`~}6r`l|A
z^*BYYh|CQ{oj!Ht)tjyd35<^3N5?MCmq+->F7UEKsG+4E5QV60qD;S7x%#5<hSD+8
z-1t~scG(a!yiAJK5Hd5ISq+Ds-CpzFn>`z;Z<OwBR6OG*pQC2t(W`4I3c0>1y#w`E
zg>+j&bP!Rh-xZ2=Rw*;**4Dq=dVI*_mS1YEYyqk5_D3e=tHe_5VJO2H2g#->6=^UA
z|Fb_frvhQE2@_(v$?k_sp--2MZUQNPY;LA+#VpidE>`FbN@ryy#m*M$GXezt+m>RH
z+5e+llLCF2W3k`yh@P~C*B*E>84F4#-yI;_Q;E!$Md<_e_R^~za>Cls<HejxkqnZq
zYNL^pX)!6oLD1l$(Klk3qD3;;6y5XP1UD2|7JK((8VGhen*~pYx3De|O4MRaDNt4+
zo>8#TCtL_%(okTG>$j!0JhSC`AJ~IYzc@SIlP)<8PWf}$z!Z05jL!FxayCBduH4Z#
zR>v-9Se_p+>Vu?A>*y_gfl(CoC6|J40wY76jhOIhi%nsL#zfcb)T#3i8EWO3`NMk5
zv$Xwt?b*RMcIDMp-F-^zciP7(Z}P#ZP5c2fWnH~~DuVuL-wrXFmbsVcZvs&W;@^C3
zZQaWTmqBm>A%BAtTf3+xt0*WPz1C@3AA-Io5z4H+MsOo6E#8bP&iliYpM>YeaVoYQ
zdq+q43y$Whe5G{DU~q#qpRUaQZ<KI4Z!R(eovPF5*j<Op@kh(}T5^^QP5`)1UNccz
z*$t<C*QA=+dwk~hbMz0o-fy14prDRrw%7QY*(l)pynjpn52LZak9&WczI*@Qk8XFd
z=7_rGHfi_0t!Vjf|5iNwCkN+(_<lW~-JZlX`n`6qOR3r4^13_(CyX*5xSzR0;W=^{
z2w%>ND_KRrn#W7dXMY^5eN}nJfUB6)>pw|yxLrR>^uOY*YvU#h>9B9;@|c@XI^>$p
z?u~6G<$r?%v0hg9mm{1@QL=*;HE3EJVm!?(ikp0kHx-NRmzo{5R4pfZ@r(fw1>zT9
zE$rUrI=K*O-SXGEhmh{p!*68ch8JcU-%ogJsFW0dyuFB8REH4#%bnODow!y`FOxj6
zw=>StVj5vM4^NXl8x5smCeG_KlGwzu2}IdmOn(3wU<ARs-IqQfc`u?sEwwH0Ea2<`
zr$H88Xa76fq`Ed^$QW1Rx<a_37}f6jxFmx=vSX_Rx0G%6!Y-RpduIovItfC&ZA8Ox
zp5k-3bG6Sp%=>#l$4@~@_B&4gtRiYGN*{~0qV@GW0;%_1Vy-^w6K<X@57^12TAt??
zo`1!Na;$EPhiD&JX783n{q14qAl1I_A735w$zS5Z$E{P_+vZ-jQTG0yF};31_pNv0
zR+-LIfjLj5mGiGP`!SS5znI=wyQla)SVLwnDh>9d03zK~Yo#ET<&ngk89~CWZ}44V
z`sd=8S)+7)&Q0{-xOPfZeP^7Q1PnFv;(rLMlm%@iA4*=?2Ii-#y5Drx)uA3N9#ewr
zutKB;hvY=$_`83inx6uj^?s5?WO(Vv7b(fXZ4>sZZuPWpwXY?$J}I&^i-WTA?h?NA
zPC6-pp5+O5DuN~|V#ZiyYs6yJPfF6KoC7VmxFaah!0CWJB8#)?=|h47-9~sjoPYHQ
z+o8Z;e3}INr*bq9Rv`8y%1zkV?e)xR)jQ^u*j0gqpf5@auu&4L8~Ksa9AhEh7ev4=
zc4U$mGw`F5z!tYcx|!uBIeFAE#-3H4{eFvTT(7FL_Hchr#X?0}dj;AsH1tuE5H`og
zWb?A&jGS*hhZe`gmCCgm$L5cs4}Yke3keuDf=H5Eh$H(yIf29Db2cGL6m^V&gg9-L
zZSkW5qo{eiK2H6k2H91^4g*ypt@~5SV#V?L>-udB>_b;Zs><R~C5JN{ojp6qznxHG
zGw9?%c~<RlUVL%eFi&ka-4g%D`gjxn6v;nuF~)3K={~(7>ejdM{}lQ4wtrE)h!qPf
zJf&TVWCCdb5F2dToH3&W0yYeB9(1lfu>io0{eOLu&0Ys^FyBl_g9i9`zxCzr0GWAh
zTT0wT#SkKdK?LNE0?QJ%Z^3ehqLnO01G72cfyk%FbQP?+u)`rvnbs4)LLWK@LBZvd
zG`q5s8Dz!H1SGNpGZ9;#Xn&>p>b&5LSNQ$3PqaUiPjWPG*VN<L>;)1=-s8!Q4?IS4
zvzd&mHk#^>V>LVUxEEgPA|pz}7Lz^|kzAyyDmEeX8!kIp7T!gtA(WDTxfu@I0iY9%
zLhd8hFv?&s5Y{O)JDAg(9S3u3X1ZG8h9JSQI%d0foST9Um8Z)@oPWu@M-vxWk&@o)
z1jThIk}&dKCA<}avx<PvG8Y=WSwguOg1BTT2Qux*>m%xNq4<;@THjqZ(>Tt^E+Uww
zmYfiHSz&R{L_wz!x#;AGB7%I)ZS@MOWT_E3+LRHsxBlL-(n4b~sQoS){8yCH<LJh6
zZRHH8>&uv|dcUg~Q-Ak69#_Pf?Vd}>VP_sSKR;{RPv^5&$sDIE(hnRU2F(ybtXNju
zr9vT_L8I?Q{ag>;`QjK=9Z56+h88%W(I^#i$nplGIW}^15tC7$icVzM!$I3VY8_O`
z>%0iXz~0=ev@*^Dv@wJtb$dq?&a2=60ac?2m|hl8EqDbsRe$UP<9<ZziAuqgYI;32
zZOlvt6R%B}0vsXku&luzcmf2+^T|m9B@p6zUGfJlHHF&cM{j*Q`_;E5arQmVkNWDu
z<?d_v+Y;RP^I407jpRE$hw8}WF*)1cTVtlf#cj6O+f7|hppgUY;x@1wu0cfdpHx<m
z?=9)&7dFDy0)KFtrk^wbgGI$>t%+O9?^hB4nSQj~-ZN2%rTu`A_wJ?9_Mp#ciYats
z3NV4RLbXOvAsXgG^AM8v;9HcWQ@rbGUuq|aS|m*L3R8XK?;_cb_u~w5-vCkX5>>rv
zrm{K73=R_T=TT5i_L!DK!w5vGT>QfA9@w$A<rg0q>3{0&_Z8+=<%N4|AqfKNyK;w|
zxTGl%7BdE*eNY*HbC$4KY1O{;lb^8GLdBS&H?m<8(C;`NyQbjnS-;G)yXz;k{kwY`
z3xs%Yahl%Y-lInxr<dz0v5!uSpDUGs@mMy&hn#{L>GfHK^9_&Zc$?|<>5r7o=M{YS
z>tAN%*?(;8?4q6Jyj$!_U_sRsn?os&FC=ca<Pg(-s6jdhenr^=1Hb+w#Zl$ZyaOf)
zA%GBqFEV?ThVXGU7wBb}EjDWB^`VYw)UR3Q!;OB8_iC)>c(Em47Ul(ZyRK}}Ry`~9
z>Ib5UHS+WNL%r*lQnPh{k^UipLp6!{x27py(to6<l3wh3&H@S$Z4f2H4^L~|qn^Pe
z3&bRnSpxkVhOGR!(f|W3(ylZSRjd&!y+Nw%hnCj7mXoK18T(z+iN(-P|4}{)vf)Q=
zKj^O-n+$t%d{yPolYoVN##*M5q;6iZc2$l_>!oRvkFE0M-?HtOrLI?kzWR!j^`;vT
z>3^m<L*Sz)sN3MvG<bopuEMHmxR`(ZUUitRtOHZ;V*vK6;II$JVjIptA@P%K7~7sO
zLi-$<!OfwTV0pNDoP-bUT9dwNpaHIpBQIyLqhb+OgTdbdxjlgTLE2y$V4ZGF*||#`
z24>KzCZ5fSxYePbPK+Icl!B>$lD}_CYJVTplRZNy%<Ba*QJ2g-Q<M<Iw_0l;7U6sp
zO=0{C)w%vttesLJqC$cxZK}JcTsI_6Z_3~5st|g4M~yLW77&V(CW8Wa;;F;-WTiiY
z|2>kZ7(y}!3-cETqLQ4WN0xg>v9Gej{A_Ktka1&%W8xy9e!$PReDD4IpUm=K<A2%^
zzl*&IMFI6cNm_mQkc4_sq>>Uo#PPCna-NcM)LF}{!umf(S(r9^eQZ&w<o>GEKA{&Z
zM4L2H76ba!KJUKJ-lldu!$7-$WYzDt#o>Et7;o=eM&4Un6|(7~StG1ozlRmbg-0Wq
z*)}|{s@L&La(dj^EnwtcN*2J}fqy_*VT9xo!GVnsWJJIqB}m2?lAHz-qASU6e(Aa2
zE_^otf5gw_Y%Ai<me_2*Te=4**}M;mo!e0#UX;+z-#uB(zFmg>{tp!h7anIvTh-{-
z!=IA&bocm3-oRlo7-%W~3|9^=M#o|ewDlLdqM}EZG<n|zox8WZuJkBnZGV;i_Jf7K
z+3oZk>~2#fmi2CaXy!UT??;pEs`2f({QU-J=ZVW&X7d<}6lYT9nud+!L+19j0$RKC
z9e<JC%K%?6%o=5FbJ8bLY$f&BzTbOoeb3;V8Fq1m12<2%I<TX}QPKCS{R_)|b14Ww
zZAD|&agBz=tH$#235$kTVt-EB5cTDJEPadNaO-qgIc@ZKXW72wS=+x78Vq-N4DOP7
ztj9GB_LleBo!Ibx-jyvpid?Ex=WweG)DVO|OsZM1Sc;(MG*dh7c|qbKH-BH7k(ui&
zg?8jR&iDe<o94vel&CTwbZt9-UP30yiy4=?cuI(?y=}Uqe4A$cx_=Rg=SP$$PDl&^
zPcx6QQb=wx>1>36+WKFWN%tgxAtVM82@r!K0M9DP>VDO1CYN4A4Y5?JyS8`ObvQQG
ztO?=W>dCvM-2*zO9XEXaa!4r<Jck~5%~fq46)Qy&fl4F+P-1RVL76%rRQm*o-E)4v
z!!EAvZ5s@X*N*!5;D5h{=H?Bm$}1a0YNJ=ZbtUW2ZTuio={U(yIe;EaAcz3MaRa*)
zfPQ*_4@^|W^5^)sN5-2^EH`uDS5bBcBNf5$v4;Ug0B%6zgzd?QU}|xUdaX>JQ-K+8
zx6G!zj~|;M@1Hc;Bas;XCf+m<rK)1GWqb|4cTqroNLk6x2Y>YIb|RJ!v6qv-IN2Xx
z_k8cKSF7s?OyNNxik2<xTOV-di+W5EqQhsVw<WQ~<>GwGBasQQefV-^8gI~@&?kVs
z<MzBxMjML)IGY?4=2LH^tk&*TIb=!!XC7rIb6>?i+K>H)nk>#y9ijcW#4EXr(ZW7l
z1D4BNz#dp^I%waol4&em2X9*qwvI{Bz%;&`1a_`6yAYCL`cAyvklpQaDD9k{b+<1y
zm1e&X>eiQ8f5O<UKHGMR_lC%`vejV>BKTkhV#T*jXG!J7CJ*?vUcSR>bC4)`2VrNU
zz@4+UTGQ<Ctyq_=eF8XtoG)EM-M9F@UX>A<zhgCe%QipFEr-*gno{#y$CwcMLu@2#
zNH#FDU8ZcC==m&V)BeCxS0h&2BaGVc0j)b^nm2Djpu%Aieb`jTyKxtz=@628FY2~>
zep<e&HzlkBKtZ%k7XT2ovYu0>Oi-Og1FKW}wIMbX>tSAVSZbdWPO3$5MZ7DNw@WRv
z>y6evN1CFSc76g$f7CWh6}a%dT^_Uce>PZ5qzfw+6<u*)JcQU%Blm11$OBXrgdadh
zmdrE(e6JVqe)1Re6A~Yx++yXU{{wr6G2LtjlzPU7%K?V=Ipm&Gqf+GchoFPfa_}_F
z=UQ5LkD-6k@J2nHKKa_wa9auu@YVvn6z7n5s#;n2n@cM4f13KvRi@Dj;e~C$>6c0I
zy>emR@V7f9)}||;9z2xy6q8a2d&BBSe_xq@1b>#|K6mTraQHK|$%$?Lt_SN}nx@_3
z^8XoP|3GPDCNhQn3E3ml>MLb14aZQX4Df@7Mp8ChA2D(up<bl7-%<WNTqY?s7d~B+
z1tl!8d#mfKIsjhbjKd00i53Fv;VTl~p_YjSrxRL|a%vw`bPRqy3Tn)eybB7FedPvY
zY=k?BX=p?jOiVQC9W_&z_J0B+e=d#m6vaj{DVX6S3fhy>`k4U=(nw#e$E2%|2p4?w
z3Z!Zd7n@3{F5k-el_vecm#k5W&((OaV5=z_NH@KbepCnAs^t;zHtp|X{p?~htA=6g
z^tI{GK<t9l<^(?qQKp=Cbpwug{QQNa6ko={=}->3J9WZjV`V1dsiiH!f4{epa4Ej=
zt0`Pkn8hjzf;1o^Nf2fTiht+&+;Z7CKG@|&H@WHO8X%RuDxOj~`ZeF573pNR$O+0o
zTT$jb)M$kb1Y0yxz@w=LSsa<Wx8`D*5uDeC)opi*9!hi2b@izRMrH^RoP{C^&e(K@
zr|8pN$-U5RaJ=I5wrD1He@JMkrIwwcQD=#lnSpx?@FWEo2Qq<$;PRM6bH*!>f$mLY
z>?=BVaX^z}kyjf}aL6lfF39i#Lc$AO6ti1w!d6DhB8U+ciS51L$<ktLnUeD_-MeQV
z?E{Im4XF_FB&PO6RJhu0aXJn5R^!A_r{r)I=6}pSAM(Aa`{i@8e?$l6i}Yb=`C=|h
z@Ubo2jwAgDk&+8yhG4b6EgwmK20w@B>C+l|gXfzg@<+7WV-M9{yofzz8C+e#74Q0L
zK5)r`3N{Fd$t#o#kot|JjzT@D9Nm@5kj^yuri>ES#^Y=+s<>TN32If}8I63NrQ|iz
zvBi%kZWtPc?atQpe|m4ju}o#`M-ai1*h9H8OsOms;+!W4icJ9Hm}m<=lKo_|59%j1
zcs5!)$?l9=>CxHV-P$}mEp<?15(V^Il1Qd8Q5kS}IO3DPb1l4V3Vk|DqUtQNa?j$F
zbZYBS)vU#0j>}MVY;vYI6l(34Uet%`1>}hgP%2k2_}WJRf03?Kd@{V%b|?~!k@%{A
zFdjVj;mi?<DpwJSESsY>qUI#7;?7HwuO4&CwWe60C(kGW*FJ~bz(qnAR{Tnntkirn
zJBch2k7<sX8jBKH?TO@9Z=!58gLFD12!U5`TPmRvREXD#5t3yC2b2&EMhnPwNUNhz
zp`NS!8xB23e{-Eh%L@cq-Euk}U-HEg2Z8E%*HI*pN4U#AF76>aE<cm5eqN5!bs)3)
zzhd-}ut}Y+z87|c_`I3N&yzbo{?*_x(XvTl{5X7JOmWyTQo)fD=q4qm6le$_gcrEr
z{f}+&H`FV{PBT+&6JkwNq=K#J?(pg8-c0GB(23F(f4)grk46az#RUow!d>oE^uQ=o
z2iioSp<)DZ6qGJVR9qi&F?Qu82W<!aJ%-h&xZdzt8mBvA#TUIZ8D1>^cI&yFv*TRy
zYL+ZI5nyS>&o5T!oirP(w>J$Geff4KS#ElnlijI68~%=ucRunh<x@sGwayLPM%I~@
z@Gjjre_v}r*k%2R6w;VBW-^#PW*hLX%VDrJTE5;5=Peu+lZ*4&SmTTg?~?RiB#e6{
ze((eT$nnJHc|7XBG!dW{NsmpopoN3<`|3-nu&<d#Dh>sO2Ze_dLhpE~X6&lew#@!2
z1S<+q+uK&W$9)|Ye6Uu>G0m#hlXAcIZ2H_5f8rnh`>Hb+oEY*S&l|)3!@T@947!+w
zo+t%->3F+2lg|FnksU2Y`Uc_ctZl~4vS<@;sAQV8Fk8LmFaxrpkHf)Np@Pyba97fo
zLcYSlrr^0U{C3K=vNEFe#6=)+Yt)`;KYVcqdhtLKi~$mc*0gXK;1MhHRcJ#kG($=x
ze;vY{A|tqs@%V$JT|Z1&kD*F92`NgHh>(Q4rg5q?w{}}8Fk8x(zm@gZ%3U28$Hbuk
zG^4wGWCiE5oqd9Au6$pu&^)B>j?RK`wi!<I(Pz6oX0mT7mW)l5p|aX`S-jj+1G|G=
zye|(_*9#B;;2<C(K_HVo4g2FruLh{Ve~<1^+J<PtLthZPJQV?UOfD=Ixc{m%8$P~C
zQnn7OUm!0s7h~Tji2L4^hm61OE%6QNb$I>%xWJvb*2H*iHF*M)%#sPC-uo;)j_r$q
z>z9kkVkC(1trVxN)?3(s94v|j0d=L??N-L9MI~2=shK{Ly#>n`Zcx)0Rc^Joe`<1~
zgbdF0F~TR@O7LqPb<&v+WY)<-E#QH!l2eh8OH}V<BWE|1zARmjMjg(xvua)CN*p@A
z>7}hZ&sW3R%15YJ4kos9Y;S|C%<|i_bS{;Py)B2oYh;rlx=rqewbsJZJBh%CPme8O
z-D6ruJT~=pT>aCFy(u4GZ9BbWe>xgyN4B1IDUauO4#^8RX^D&bL=+D_q!n4#<`}DU
zGxOUr15lv~+Q;`-1lM{(;&Tc4KSskX#j{qQcricr2XNzGUW`bF`GG-y?-FYt!NT)@
zd9xz}@3lT{bQSx;tK5xK6-%oyriOcPdbaQmy}I5JObI*gAUBH81q)eee+O{61EdwW
ztJ@&%E?Grz&@vn0x7-xzY)etS;9nk>P$J#TIp<`KBERtwK>?icj=fr$Z>lXpy}_&X
zk72dwEKl>xB4CSBDi=-5Vvz+FGyuKNr=<+=;?XUnd23EuTxZRDYEC1XzdT4MJQ%_1
z_H2I#qNe7UGa4a*>Cu~2e*}56Z4}>QS!LC(McKzoh+2;imyR<(M*2CL%T;xDRrC>n
zX=Rn$<hvUArXeU6O5+2rb_=58yA&{6<k_8J-CH6408*yDs_$%r1pqrL&whdx0AZ+6
zu;?^142NDg4u2?rc~>veZl?jNaDwb0pkEIQ#T`wPO?;V>dD<vZf5@V#HeBALQLVDh
zobP&e>n%Jn(~qWmx>u|?^XSI_^JJ@Q@xDgZFn64)qE_R6EJdKc2R|2wpm-~_>Fs8x
zwMtk{2vpyfz5#;rAnq*`@C${h<@hs9mgtlQByWmVO<x{RRyu9Hr%SLt-l(L9fMBuj
z=7q~ulEgtmU8od8f87<k;CM0iN>9gzyre<>o$2-H&QJK$RzoJ$L*Fj8<tez&N$2X%
z2_F$d`rUR>iGj7neH6w}C6$=CXE9HwwYN8>BmMmIqtNMLbInt}-tlfKU{wMrDoljb
zXA<{$P@xqFrc-vipNmX~x>N4m^vbuwE_Avrmp##+=I*;Le{p|nbl;#b0&JZbQD4Kw
zHl}k{>{sgfn*WCHg$8}4!K={r7-JY%zq;O4<Cs~gu=VR_>a}uww#dEpX+>5}dZB9`
zZkojX_-)G9_Vz#eVb=j+Z_RaFvaRbAG4;0+?P&9U-2H#n{_6jxYxGC*KKbWQz0I%c
zpskXt1MkW(f7<)P6bg!Rcp99?9#vvMK%i2T3Q~k2i6NauzvGZ|;l^Z9^4Pi0lG+OQ
zD$2gD#aPk7j0ewcJ+BWY93UTEU(~tm^ft-6{rdSmYqD2gA7^D{DKYlUFL&Ra#aNy(
z{e6{pYg+8}x|H7^FT1B>_1HSw;Fwhz((-Myn*QHLf6=Y{<-DGb0As&jS{y~oBapoD
zb(*~g@HZj+@qfe6d`~mWb@GiW+O+V}SR)||vQ2-8wSp(}{l_O~@LcM@G<N)3UOKA<
z^~ubf2U9G~tytT}#&dA^OCCdGH|nNSClbt7<?_xgp0CDbzRB;xpH;`OeSwCLb@O8b
z1lsWMf1li<$=uj81YH}|FwQ?TLf+<${cQwwlIc~2fTrE??OA_4w}a`*!9{WMIc-I?
zo-T32Fy5x@+}~?V3lpi1!5-lJzcSrD_{#wR2t=sytlTC&=xMXM3<34iTs0iD+*9Y4
z_GRPz<<#U8rg?pZcgOQLu8w&6c|yLQ>e(y;e?HnPDqW|(Sz88VKWa9Nr^`Mt)_W(0
zM=7+t8&d#WK%>7b=e;0U4Pc#dyc`sP3v_c@ig*@Z*giGe2KUz5akq)ta2SxB37;AE
z-o<NZ2LveJga`@40r>Nuz<K}(U1gVV%inDe3jgN}Nk`vO3eLU1Q+VF%u{6j=vIFUq
zOQIzkr+-LgK_y(0d5t`L?SHuwtKl}TASkn~WSxR7F6F9!F4}L7s0ilRC?(4=S`dIz
zUC)hxRb;l%Dh=Nw{QgJp7xOao`h3Zg`BIYAn*ve{Drsrn$&&eOrs6JYzC3}LU7k>|
z$+|6Sc5KkDVCd-vv=lq7MrK>9zq}y>m`c9!8J7W!0xN%G_kV5fI!o+}ZZpe8Ue{gm
z99R%^xbY%YwsxgE3B0fSBOp1vbxyS6ZTB8~TO6eot7^sNp34h!%J<taY&BMv(;mAN
zZ3y2_Es$@tpB7Nb^uGjx^|-0qSiyGj6y4rEc0m7vb(pN1x*WFKM}pfj6U4ROq@T92
zoiEKJOD}(lwdb!Pi{*arfdlDtTV7}$F-0diCUQ3aOr?&0v6!(sE5}sN(SI5tap`V9
zM_MD)J7F;2<mo=DFZxWbF9nnk&b)Xgv>6<?X)X&aRIWpj;)AwU+cO(o-wzwCU2!#k
z-5$i`IDL0T?owl95H3qR@>sk(wIpT&Pspx9H~xQ&virmd6gz)$_Bs>E*PShkFPzSu
zBDAqO0<eZJ3h3#Z(Qe)C%P`2klNjzD?7aowyV%Bc@1+H>jg8F~*<a%?x8h%En*6=1
zWhFJn?qWKoA_5Erh*tyyE+7ZKu$L2nrx#(IF`Se8Hupu5XTEW2TqK3#qOg34&adXu
zaCm=oH|90mGkZ;v&3DkSN8DXP;C|>r6hrs<3idET#4iXIkm$@?T)Lc7jv3M;?NuY2
z`KS#ofBI-XP?s6_R}1wnOV4<p=RszCu1^rTXy(Ck9VZ3lyD6p7%R1L$RbC{Zr`CoN
ze4-F^1~6XEI88Ko755*5%q}|_CsO@Vr+$B=1;nIVE)Amgw}ZY*Zu+-Kz&{P4kV0wM
z1<SS0u8nTdyP3u(*3z%er@U~k_5Q__uC<QtmIr%{%cw;3ED9G(yNgf<5(cRPYAvky
z_T$cREiurBxct#G*of95R7JR@kTJ&EiXt}UWlOs}nG!t+b?@q2s-&2~eZB0Y7Hxl1
z{L<IC{@u(hovaFSaTav}n0~H3tFA&)eRidY$;9b6ySM7!O7FyE{Ts_yWy4po|9Nc*
z$~Qs*5Fwx2wwODkk@cQyn!>;jiW2%_R*8wTT~|aN7CXPLRQEu#R69`ceRNuu8By|!
zZY#LN;AaR8g<uZHOg7P(0xe^bn-YJU$@;5e0kGhXjX=X>^~PduxKS_kpkf%hq;w^j
zLUowFViDv^efaC~!^Gh5qP&Y|iMzL)R=dS2T8l{KO7C(S%X*r@((!j&Z2oPvRv<_P
zsggBLOGJgy8UhFr5s{I|co%WOC8Q7-K`@Fa5Jn~9O>ow|N5RjG$ww^sRpEa|^ts%Z
zRnD#{!U#0LgiIp4mahlB?dY&&J<e!RcAmpKCIlmBp!{obkz*q(ZW~uN3L)c~EmBZG
zh<BLJF$#i;vuxWP2GX5~w!#=F1Yres{J>F2Rv0p*7&9{lgFz#ExAXMFJ;vNa7h2A$
zQ9TU`P7&(7FRgQOEtkzl%MpM48xG?gBk%{+XR~XH=}rJHK7I~*kjIo*2@#vpPH>=u
z)0E_C#rI<$yT7Clu=2v&enUQbS0vY05@fL%9*bwGAU*@~xOcPKlIVkvz@Y{0Irc<A
zB>KCBeVHD__wIo_D3~KOC%4q@imA&lPp_0?<-AYvw;qn~xu{+(eM5gn0E9UxF`|B<
z3X`C6hHKX=#M5TFUw=-w-}Xrdz+itn0Pfh4=oo)%Ap@8s0M!WzO@riRyh|ja^pbmv
zf%HDQ?Z+cQT{=&|b6*oUDX%1_MrH;CKtc)^#L{8#d%1)uo+mFG>FN3Mhz6#P|4q(^
zb1Oi<r8SiK?MN4AFdKgy=Yex`BI(6xtUNxyC-G|dweE1a54Y*GZe(6R3)QiI%Rvn4
z*nV54@5XDnhwVLYn?BGhao@b-Ur_x^!Zu{I1f&O@1LV)2^S*Szy7%8W5@Y9=tuBYs
z)pWo`gRiM%!Hd?N^<Pq<cKyS*`}}-t$6~VB?-FEz_Nmt{%?E#N_^Ox?Dt`3HMJQ&V
zTLrMOv7+Sm^n=1Kr4z3f=sip(6@dWAH2EJH)BYB0uxTJzS)jO~1o+n9<L(%uD2UhD
zK-}A}(wxS3hSEV1)C*(%XlH3}+I-Z<L8@>V99!qz`Bke!I`rG6h^SSYkXi;U;K3fm
z_vrJ^7~njN&TfA(?Sdg3g5<}Ph!hG!qLZ13&=4?!0fvorS$5OIKD%da%GSUN?t_}7
zA9I;4Hi|ZESHzmzdZJU1(ZzO-!fZOyb6B>8Ugc%0#DEY3D`jfiJp$)uvUprh{Jn4-
zoE`f|;@%st5KHxIElO7R6!@cDpIuhk-JRuPMbX!lPtJd#VzyN^>op7HumSqMcX1`^
zxip$q*S7^TSvM3Gg_#$J5S4oSJ+HU@{xGU<t#nU7Ifymup{U_EVKu;j*|Dfkf=B^7
zXh!_vn4!Moscoa?Y2d6&pT$dS<OA`L%}6J#7Na|c!eDF~L~Hk3^7adz0yvuwMS-!F
zE|YO<VuOF5Xa>Netljd`ruNS(FMG&w^k8nVV}r1?S*52OOT~Qq|9#fW__-cl-y`T=
zHVB7aa*)U5j3|Vh!I<~Bb82S%Rd>f-6O&tpuO`ahH%+veR&a}DSh2x_({uG)Hd>0s
zWv1P?!b`R<2RHMg*?QUVO>op4m&S$Z+1PnBbMb!_#<WhdF7WXO%%Rzw4HuoDbP$%*
zRK=y9V%^HJIx}DjqKf|kT73MRM2(g~(g!Z_d$rx$t7<&(ICp7aKP?@&_-X3dXdZRY
zswH#iuzJKI3f!Jd?^F>cF<#Fw8c_z^LyKtuG8P($R;3rM6%vaLG8tGmCS_0|w>nf_
zkZyk~SGYJTy<~>|^xi@MH)6PbSqH7t9Nd(J5S*SIpqbTk+iAy`;;!Oj+%diZ07u}s
zCa7E2{##zm?fR<Mp*{#ee9p!`_DqAnx9QAq#Hk}re(^8+f>`$q5vYzQ*Z*IMiDr{2
z{=I*n#NTUsdh4PiO{9*rGT4yVkaru)&W(TjxYJ``_y2FT)^(aSbQzrw;kCiEbG`Ka
zp8X?D+&sIcMcgl&mupGZ*y<C=kOL7F<BE}aaeGW-@zO3+k-l}1k5^q&-KNZsQ+aK_
zvz^ZC8(MK7mt1F6yfLuGLD~%AT2bR}dihdknyiR`eXl(#j)!tC7ru4V37$dD-`jsi
zRfN(kMUJ)OKStwgrJ_-zoBLpR3w_wd@cde+BfYRTSic7D0Tq6HrcaaQ&fu3iXSG*_
zR48N?1w}kvUc$#sr}<a7){A-Jp{(5%<E36`Z<|Wh2~V@te|c7GJ`a57!(LpKYt1pS
zU5V|M_sFcoaF|{C@`<A!oEfJ+?9P8!-A?igP~<9YJ1MDul#X(WP#9u)YQL8Fgc^j6
zhX>F}*A(9D)8kaH6@R*-`5K!ps}g6w`g+@&KP)Q~1fbsmmjYv=%GRC1(W*kDErmVp
zx`E*fv>+n$57syC`rW+Yp7pcXm_8azv%Al^*zG&J-fV>2Qq{O)95gqp8*P88gTDIr
zK@{?kH3y>^{4$&RW4E(Am}~!HDed9$W!g_gcyM-_(RM6U9=p@;%N_jCyJxi+MV%WH
zKDT>X<)LL<$|YTiSLGmlxh-z=ZuXeR%TzTo5S6&eu*cvb6hxk0=gH<T8==8YuuVF$
zgwI2%*1|544$R+OGO1S3Ji&jFRgj=~e@@F<X~UZUF!)0~U$VD%bm^Aj5$SAUSk~U#
zy2<ob-;|}38|(Y!?(_;IF)8~eF_N`s4Di7RQtS*5nwjl(15I;ACY?iLc9gE`*!$sc
za7vVNcUoudu6F$EK)G+XE8=)t3i}P;)UuUT-Ty4>0o8EYOk;ZIx|)AA@+-QpUybT}
z2N13Q+1TT;O0Wi~R9F}KjHO6ePs6?W-2L3;H)isLznr#6J*lv64>L2BFuaZ4MC>#&
zmZHPjhC0)AU~)+o&b+SG2cC8&w*1^0B-YC5Odx?d$&gk7)i0#Sxg05>%sIUw5XK!r
zyvU+02$jE(Zj+V&jo^PZcxg0KBa6-BwK!RYeIQuoD5V`WE&S>6Lj~;=xTuCr0ESy`
zc*zI;OaH?E_hErVyLGHGj98)yz!l#0{eE8p?Olxw|0=!9Po9-s*ZcD9TfJlDD~9Jf
z^^ltdm&=8A68Ute!v1UO5pQvsxNIpQUu}Ikz-G?0U@;&M+Pr^VU;NMR`xUr6hJy6x
z=KAw~8ISDm9&e?o?)*ELO9zWN{P$G(Y31|wYBY2(ovROfYjVZ)Zdq-o%Lm-e7Y?(H
z#>ioGylbh}434I|fXhl&b~#!ntr>c@FTJEDul^{m`DdwXRg)Vo^^*pDJ=()R@EqV)
zv$Z+f4cxCD9-n`Y)E!$c!lGC@JD*M?mF}=uwt9nnLI0;=<9~c3*Y)Lo*{UATlztta
z&VTkDDQo8+NsIi<-TxOm|1YbdL^-7Z?rBI;5CD7tTH*RE9UW@zjjnOgqa3hx^2T7B
zjq%kj_A<eGuA3YOntNM@Syh#7u3zk#iz7>wRe`s;&ozISOkZ+LF7<}Z@bqByc15ni
z>G};~Owz(p8YtaaZX^$b4^@@IX*tRyn{?ccCN)j>fe*q}i{sglcZj_MDGsk_1bC0?
zz%uv^H#h9(s1N$xp|jA{doQ=g7stoP!?<%F&mL+n?OSl`JZ`O-xJvAK<NdYU^F2RZ
znToyGC%S)saMI;}m+OnqY}PmRQw^y#x|D|`+lI|4G^ZcYfS2IDa?>w3t=Q)uM^~!L
zlpJf-+p6ulcMe)h8<wK}-sVRDV>00YwJq8W5Y}I{DwiNzx?9y~hlcQaD?|>Kt%$PU
z*P{88aOz`k3a2FNzBrxm#m2lGXw$?+<VaH|^*s`QSzKVW9}h52Jz$I)n=TcDQ<o!}
z0zQA(%5VYNikr6J;2{A05~sI|pZdJxLidZ|AH{WZg50AmVy{3^ej(F%Z}sDT`%b||
z?0;YBZ0YgkP^#l0$=Du@q{FZ-GktO~iN-1c1PB<SQiz5T2mL0NuRM@Nr2OxH-SdBm
zU0OL!-ZyaA!4WK)7$;IPq_)I2K1T>%UYUQ8x5Z}_C)Cxf`RKY5HU^8?<sDA`w!Po-
zGV)#4R1e9N0!1jCdnQaP+_T(ZW+c|yiW9--ezHWa{MQ-u4zBy1P;hA4S5C{twpHHX
zh$kIS?nU1GpPH~EqY2(tIb@A9U?9qnASYnyb>ISV)`T~&mFW1Xdt%D->$3#T^#6Y^
zKj4}_fD!}YfUngD^W{+a1$>e`UuFJG39&u&dfj=X&$<$XYWUYc5dsk1$t>cJ0XL2|
z<8NZW{~8s#1Q~DjEJxj9-yqQ^a7hUR^9(Owpo1>0X{l-mGOzq8oQq>#;*a$qU(=7!
zZ~ucAMfo?c$)#+l<$<G2%!UvR1R{R`L2>8&xj4hl2ndP{1dQ|`e6li9tKrNjs}?IH
z=g*AxVg$)n>jXU@e=`L{qa6$6!xjJ;7ahLX0)kv`-VKF6QB`?k76Zh!`6TZR{1N82
z1H*D;wOy{ehB1SJ*J*)^d1CiWXwhHCMamVu0eJxz83lTnFEUD<z=>Pv3SfVEeP+iV
zePmP?2<Nt^8Y-6nY>OLs#)`s;;nwV|ZH0P?o=NmG78&;g@*fEU{Q8<q53Gm@2Pgj$
zf1s0whZ2ns>3Z~8o+Q}%Yrp?E{u-agJFqs^Tq^NR-xXp0ROCyw1Y-n&m7;Deg~r7M
z+P#2q7bx?`>ktmjk)8p-j0b-_|GnQ3%uj_a@t@cb0Po`Mxnmg!2Lrf31(1hY|H{^i
z?`a2$1c4|2jPERmCUELN>vAKi=q5$~0wxABukaek{P;hc)#ct4<-k3sHrNplQ}zi6
z0nR{LOmPG25`z9|_qd3g6WoGHo|wEF9W?HZhDC}<7S!NYOm1S-RIPs~7)W@47#{56
zqs#0aHNKB<*Z7~Y-)hAf_l$b<2j_ec00KWiPJ{a&+#!!@ii?rb1_PWmPmFK)kW%Wt
zv{p%I7NJ>qSaQStD?7Akb7JQn+?yNL5SnoMkc*MacjCid=Qil%y7$oi{;eCV9<I~e
zdv~KT=$JfGcQy0%G=+ae#+m>tjM6r7IxcoI7!zDmx|rY+CN67HH;p*~5m*CTayT1*
z-#m0HqgM1>BSYM-Y=kZZ9ETs(0V4O!r^A27SeiE~@At%){Qn>HdM|75Hxl%V<~E-<
zzT{dT?^{jhv9-o($uT*}rt4}U7`ruP#F?bnOkf)zGBX~w2S%4xo&qa>zSZ~@_~ydH
z?KyG++{G7|Yn|PZ=-n<57u%(i)W@qIAoZWTK{odCoH^z-Ul+TLyyk~T$7_Ao)vrg~
zq3g%3t?j%Bd7iBB*m#HZWSfCmW`CFSlXs>LK;6~L68MHi%gZTns+8D7ZkwX=$l~!e
zFwv3+xk{|*CxLd$;5;^e8$z3QJBg+Lo$l+f){M_CqB)I<!OVU-X7r=<%5Es`<g&IF
z0f`lPnAN{FGUW_tI6@d<!ge&3BR^g8$9afji_YQy+85XG_uAYo4h^>*_(OJU0|Y9M
zdxu<vW@SH5?pT&d?{kk(Zq{njF?716>fs-~Ir+0s{XVbWd&AU!{&j<XH)DigegtzF
z)LmH%UGv-UadbpI8$Q~JxcEsk{==)-7y#j(FoFbMb)z`a7yShoF@3GlP6a`*0H5a{
zT0M3k7{o^c^i-5jtXkrqTeTorqLnYPeS`R^J&C*UTu*he6HoddXoWB7va9K)EYWT+
z{L_lp{gi#0h76g1vwJi+yraFr`g^-tf5Y8!Uo#y+aNBEUF<PJ9c|K07ODh}Y^)T9A
zExsvkhL2?ZYv}N<nu&}IoQI>ggV)zOmioI#63JWG?tPK_o3|px;?(dw8XSkxe)Z8;
zhZ|&d7-DpJnJ&^YS83Q}icN3~2+rg$2E;NEC=gDseQ;}k?3OEqA5Oz|)oq)ocs9Df
z+a027SJoR9mA340`#$m2$E#KzXV~EHXWYfSePp-wSTTU^L|`)KYBIJu@0!Kdsg3Da
zq~i;Z>D_*NyB~6gm>V7^b5i|7EpMvv;pX#`d;hI_-(9u!KD;a^PGbtkF|(M%{4|)`
zs)~@7)$F=|*L{XJ<-go`vNq3OymCHm9;4IB{$Y{n@&m7){djqPANTW1<k=-Lr}F;y
zx1H{nd$itWAPb4bUHp4n+&ODQUGc+&{|2?Tmzlun6lwPxbp4(uS0l=*(DrJ&uzk-n
z9s>Q3+Zpi7UAK^lQ@PzWjmLaz%Y7PGO}CxZ#W%TsvvT?Qxxg}iSF5tFOjv7T#i}p&
z{zNtrgp<xYCjD83g#LEC&%6GY3R8=O;br5Vndy0tT~5aBs8*1&S@T-NX1hKA_s^23
zJmZbGsdeD+AU7Gxb`Q_qwPs_Q&!^Gy8({IANFFKk%Cd_%qKj%EsCws-=b&1Zjf-1U
zpiJR^<!r}(<`0OZr(cFntr44Mv)oxo!ujCS-^3I`JVz<kq2YDa88aVoxB|3PSPWoy
z*%m)la>TL1{BJrpb?PYHSz0w)?!%O7WJU?j%;>B)bR}Ang|9J-594V&mFIKbyeipM
zbUPn}xb8e>xGo|U>%mppeM#o~waTPsg)wJ;<jwf!M-y{nK8gmCdt<P&`B|Pe3syF3
z3fRgcC)KjbwoBdLzmn8P&W*)m9E`Lcah~qYshM$@b)kaG!Qx>nF%PVs_;#m_j)Fg@
zc68rjJazmI>B2MV`p%ni&aG~y654&JK#{D*g7Xpm0GdYqhLwJOM%(ax`ZsV;*%9A=
z^)j(Pw<iCchME1IX5~Yjw<-xYZg+n7Lw0|FV{gOA+qG0`*1@L+17)mn-`>=SY0Jm!
zKN-js7MmA=?zoS0S+DE1Ga!rGVq;NjI(G@yJzg%B+fQEO0N#q=!ia@MD2*E}qisem
ztW&MobeR<qt#aV~(Qy!B#C_x^V2J#G?v1^vikvtkfe_kg0#Un8lRFeeiDuM9e7X`X
zNG%ft5?DZ%{48!`EW@^!2v~;tQISIpM$x)lOe5lHSR;lutDImk+*xr!P2|QJRxG;L
ze&x>li*Bo3Nu!1~s;E2bO6=Wktl6ky$Ro>cmm~BJaZXm0-_0iOqkX}?$}x9;-9llT
z&JzqOQ*&k}a`0kdBM2m^fJk{l2!aF_Ik&VT;V~xIXlhY6yJku@Bq9T85k-*oR_0!a
zNev`yi7bjXXF>uXl4nHjqUC8KnlO-p2^hp}ViwA**}rC1Ce0{g7FPn6S|+SvaTP-;
zzltL=?7_DNw*tgLG-UneRa`WG^mr+|Ynuv%ZC(6f3{!s+iHl63Q*xVJ8;NnMm{`VQ
z)Ku4{jU{XwDo9-uW^BoXgGd_#VSWk;gytN|I~pl4yDk>B6ANgJUIa3Rw${ADOlWKr
z6=9(W&I@HL3LrQjq3oW75)@O40-R1OV~C+F<v_{b()$~I=_hu7`B;{JzjBmGY8D(-
z1uDpK>#JIGd~<W+y)8mXo^4LL2`e{u580sX*yy(|j&~ic1RW>k&mD4@TCM(nDZ#+s
z*wqXhZMO(_uwSZ@V?%${ppM#!z8LyYF=U`h6EtZV1BwDCRQ8|En&ruPNEm?##_YDI
zH1!~ZVo7N)mZa93KK7q~wC%XR*X3?+y{sjgw)(#fwswf|D4Du$aaqh;hOyDouWN?R
z&G)WX=mk6bWs5*`^g&!9%SDsI`Pg{zK8s@gwM(_vI<qIFv9mgXf}QEoGP{FB#Nl|y
zZlVg@HXN-TReIm8KR2OGfSAN{9JElIy+UU_uh%@AotcW1nb+@s+^+Pwu08tEiPTsD
z_IdNcy?UL6w`y@&Dn|z9nu&}H&$L5Hn|iy>bF5ri4<_|R`cFr9s?l{i>3zk=ZcyO}
zC=i|*T#0fO_dSWhq~Me@_yWS<Y&&DUcQoD20pWxH6f`1B@YlpD1}H!`It|iTo>BVb
zal*$kP`g|=D)WkeR{c^7pbn`Lk+5qqRnNh}#LjVSNsk7|E0^;!)g*mCa?q;n8lwor
z#IsxZh5#t59HYF~4Cv925C%z#4x<6_Et~x^>(;N_Q2?zCPE?>CDu=q0x^d<<fJhx0
z9)3*V-iQZ_gawnnl#+)hH4bE_c`HWF@0A)@Lex;Un6YJl^?ou&oYWRG*2KmVU{jT(
zX-Q(r722GydQD!?;N|+9E}X0{TFKP#Rz|5=QH8i={yC>>PF1XB6J`-gz@HL3#Y^8a
z9t1LWJNi*QeH66wbWG}dGzL|>x-ga>PPw;KDjHAGopm@Yf*5RO&t9IxJ*ydw4NK-8
z^so2dZ|Y8eOYD(@_-@P{Wij&gc%6DWt<}rcbjAU{xs8`YE7wzf!0~M;+44x3GQ(>U
zU*bvt)|~@e$G@?2-CEBlr{5!T*@}o3Np?AE!jiXh$zs*rtR)MG9kwn{7yPF=t}Zmr
zjhBATn<HVKh=)(4aKgPp@eu0`zr9&=%^z`k>`b+PlyYx>Ec$5P#Y2^G;?G@ixc@yY
z^G&=8&W33K3ycnTBLDS4!JVT;{=j0m`E8V<fOgJkpH53-h`Zlj{x)2;mQS-SJyW>+
zrY+MxP`zAfE*EPRzrXG5xv0iFVr;s1{ta*Cx6bt2)J`i4Cl%?+2W61Za_Cg3k>_w<
z4)0(=qB@$Zreqz*jpI0EN>J-hoP%$eYv1!uN)c7eo?+3!4i}v(@8JHp*K3qk*0j#Y
z0qvksEi2K>gyg}CQ1J&dRhO-(0ww}i=$F-~0ylpOaL%^{wfCpV`MZ5r)or;Xf-;f_
zqE|t)WQFQf_^N+`P}5cGWRm_;N!Wp{A4ndBYUcsFEUqgaYM88L<5O@I4hhE(|4M(W
z^27RI+9(5<+K3!*XgV!%_2yeV?*drQZ#SI%#skphsq=&{TLCX4&&({Nf#1GFXe*;m
zJ>!4hKR<!%sGn22^gr<X|98V0tfsbr&-V}O<yCelwaf_{|I;-y@Sn2GBkB-*Uig1d
z`T_1Q-r#gf!L!sVrq4V>UmE%6SFY#(AZQWPt8;Kp4~nu!|IaMS`7U!%bBo>T8izmA
zZ4x`x@c{*~s1H#nf_K4Nb-8SrVYNOxzb}94JHDbXsR;WcsW6ufwLdQ@;r=DZwKK^g
zN6oC>=SGhzw>UViQO2zdBIb<WvVvg?1fY;cUA?JeauO@S<<)KL_wM-vBbNwyJx24#
zyo5EP!M(A0gUc}n#?m1PG`z2a*XLi*bu+xJFheP#y0PslQGBld-#^7t_wFGNHV}Vg
zN&7Af_~&lV`9J8>@@EH$M|84zyA@&)K!fNY%j@!7NHg1>=i?KD14;iG?|h2T|F2(_
zq<IcdHpf-<)aeSs%#TVE%*f;bL?hkJf+!pdhv?vTCJ7)i1w?eU@|~aG7=}cl4rPZN
zB4=SKz7N@6gV$-DJFR3|kdYORXPkeu@Dhuv`C}d)xp%?qg07l&_of;f8OMj;Yzzqm
zj-mOM_u#bhxceXpxhBS2*pC^sY>}fyk~qTx4WOMr3&_^<MJiir-B>nc<~n4%Zt`5`
z1j8wdQA$Bb*tWqMt1`+b<<LXgu4FyZ_IICo?7G9fepj<8fJG9|tGNQHRYiX-Z+v9p
z37kwZ<}FdJSZ2f+mM|bK3%lAhE|*w+s=&JspzOHn7s%wZLsxE4+o?G=FsC-#a_z!_
z=sWSul?5n(^oD%#0mpOpQCbT>{d>P1`<!otuVvm_wf~I-aiZgxfDjhtgUI&o_g{hf
zAscpox8bm*GuXDSHp*Zipe27D8*GqB;}(L9OZScLDa{asVRZsy2p}M6SipBMO+OZH
z4i+;j<m%UAZfc%AQDVSEp^hQ942v-Xm3t1y*LXR5UaNrYwA@VZZJX$7rdL2Xv`Yow
zI-K->`e*o>2i|{a7fZhQ=vq+^!~Y+>132yPLQ%vj!=JXd<L_sGU-p0a8&{cbIJ|SX
z%+rA#T$5-F8Gqx&8g7U1_^=cG2nxE$pgQ7!NN}tQA3N_ASzcH4v?KBQU=)|40BoP_
z@~pwC{bPIhF9tuM1F7tANPubeDxG2*PTcZx&+Wu-_(UpSyxd@))4b2JG&d>%@$MYZ
zSba0k$zNj1&D$VlOt61S>*s#PqSkJ0BVx=l8a|k@{;nU_xpU@bz_tA_UY#erVz}U4
z>bns3d(vtD`{UsMU|j0$nO}!^VSjFpF7t`0^}hdelWR3L+w8C*xg9$o@%mp1WZM|R
z@vw>DNsm-%k-l_GVftj`7&0@(jge+YapR3<28?AgjZFYeLa=|o?Nwv`b7*{l^wjqx
z+qKoHHAu1g{SE~9Y39n3Jipg4NPhdJL+~LzWLGcm7btmKvPCdDE%A!+P7Fi?S&)P)
z?gGI6kXn;0FavI^v&SB10U=M`6wHL9_|!Z5y}WObSo~=4Ja6mV6qviq-ZmwB*f->v
zW{9|ghf|g;<TQWnWqvAA2Je&P41{FwpSBZr1jUhtFXa~lLo5AbmxI#7rPj~>sH+o?
zKmR{{607uQIT}3|y}p!_EELB+p3rQYCuhg>fdOzxxYQra?5$fG`QV`3*eQP23HNI<
z!u`O5rd{-X7p2MjGSL12^q-|h5*B(w*3D<{8827m?S6kJc)v6Ynee(`{}aK{eBA-L
zYpck63*c>tzH)UuS;c5XZUoZ}G!g2S^&J=8r|?@GoP+E3n{>n7xrVe<<82?AjvgxS
zL5sxEU?Xn6HZnI6h@YT8sRCY(X-9_{aL3-;Z(bj+2I(^|88LIRF1xbG-nu@$Cu^pT
zpJR}7v{!%7l<4TPohke6bDHzvQMVO}uOZ0seq_<Pjpgd(ZbQb@-=Y7W3yZyNF1Pq>
zqBdK{Uf6a-a9IDI-0FPAzS?!*RAiIpq3LgsnWNe>`C2<&>|8!J*1|kua4#mSt;6hJ
zJ*YAH;wkt^axvdKqmv{2?Q#-(HWt(T_*OvWeZGHWW)z`Xwntvlw_xa^JnzeBa}Ov$
zI=&8~t~oBgj!JVUP1bpE0P(lnG|X)A+BI)iD^j-IyycB>K=yIW`s_a}(#!0%nXN8=
zrq4i>b(^ONubFap2XLagGS5&nr@zZSeUHjeH}<3SIyCa~`-gpOq%D=NtBBzAnKUIX
z-0*+uwIZsAW$05lzRdqpT8tzTpWJ%4WxmFEQ!rC3pyU%3>B}{>&)52Xy$=P;BNMK$
z{vN#z7k^sHd7&}Q?fL@0C{bb%)0i)F=Wj6X3y}lezv~=<uill{qp)wajUr*`7bPCe
zfDC9OSa%*7a&IZ+;Xmk+S`CQJCC0egzD$4I_1hmRXQ^D)tmSzBt0TX4T<I`p_3b0k
z;7nNiF;ISai`~}kZN~HBBG+w(!9{`m+hFt0>2&DnvAn<97PzYXE7X3!re!IYUBU+r
zaeb_1)~|i=>biO4Rd_hu?w3Br+e(p*IgFJDjpT8meIrf1dOxGZ99P8NbW?Z}EgOHc
zmFb>{zo<jt=MMUl|49b=EwV9Rcn<ESR(3SBfFV#6NzqujR_$80O`o4G#j|SOq>Ulm
zg=c|)!G+-_$P|fuoRHLWubA&ImyfQ-^07I)J@;K@dVzO@Y?;_T_NCpVtl19F8s`OQ
zlIh@Xkls7kMQ-LW)_C1mUHfbEY1e;s^VC*{OQMNMye;C>@sfnZe0RAhS~Ytc{=&2U
zr;gD2GPgTqKT59gr3)7GnKPF2=WBSEn~lz(B8UFV{llQrQ`dvPX>r~<-TW{V{4CEK
zH_eye^6I4Msw~*OzBD(%YRFe0qjhxkoemXt-9;H<@$q~?%B}gW9xFd^z2AQrYkYg$
zZ^}=-v$AmUwLhK@yI>ZLtiJ07Dc<00`EZ`@ErZMD>HP8@Pf&cZL&DT+wZArb5WY;%
zC>d!Rz&_xx^bOMZ`S}%eld;}4`C+2vUeeH3_wXJUTf1j}SEcjw-EudsT*uex&qluK
z?Xi4cEL=BDj@8eCmTJN_yI+49QhdYyk^koZ2WQeJj&)b5hxkK9dT%}Lx6>)Lwo$ih
zzm}-&p7+!JC;_}WcF(RhGM?@m9&9F<5gdZKVI;+{pc~)DQHCDq+8vL4_RCMY%p|Xi
z&PcC%jy5H2e-NAlvLFn1I$Z#3Kr;u`6o`-m>vTJSgiUhEw>iUT95;WWu^Xx-Xz;i<
zo9zkPG?Xne8K<|lj;c8=3ZxI|>(%r`^=OY}b?Ae-=G@a{Pw$}S6<^urk*}}~9_M()
z?fAN@u-@CQNxi|`@INC?(-QcFnkV4L4t_07r{DEEiVPSt;1i=&>Wy+E*l3GdO7nUM
z4BBOQX~J!*+|Bo*JAFQ>oKZjzMa<Olzh9-V<ZucJW<f}llE92vn1TDv^1c&2tF!Lc
z!lWD~d%iT&@HdQH9qQ!S6IDYzxom^Qj+eKy0x*BZrSmUCY<ef<V?_sYbnnt22{6c|
zW8~vNZs2vYqyf^f1RCdwa8QO6#9@pF;1+AeQ~nbT<ou(YzCu*bIA9#zsqGy|Dilnd
zb)LexUc(1A%ud`9oBlQ4xM*HWhYPHT9b}IxqGFp*_>k%U5gM1h?7(*c7%}2K1Tl;5
zh!B4?Awi9Zp5h7+2dyav-AV<gD94Y55~tN7wm&PW%gt?W4Dvk&p0`D~+g(;-|3CHQ
zbS}2-uO^$pI512nHmT*zQ}r1yv&+2H2ppx=&tih);rRbMYYMAuor~IgN>r+D=x%$O
zN`~7vjuUD4v39xr)^QFMGCf2>I&8UZUvGc5f|6I`>%50RJ)~+m%U=3fGNA0e!3x8B
zX9jbJ;#tp?455sBMs%J&eeR~axw_o_G_5NP!;do5n>)CoL=0{6QAr{b7{@1;@jc8s
zG+U85Z{%~B*WK!9TI~ExE#`Yk?!)14yuK^+Y?9@ej)kHq(k2m7P3X*GhW6UMsThCX
zkdVR(h{V-OqMX~=e6~*kGu!#heTp6((GJvm%u)Aty&b3QC$~fHKKkw^r}Q@2j}Voe
zPfunbhoP`}$V79|3Ea>4x_vKUs3k^|T|Ev$yH?8{V={9aN4I&Jo3=H&t=9pikE^G$
z&~wd*^>KrLIR*SBgOj-v?hyNigq45#UbgH?LJ;^Bjpg-nIMj>W-&zCSl?Vb7Y#1<H
znQMA{<X$ZK<B2AmqE`3AW`GX>EI~>FFrwi`Q>L3;u}x+9wGXcK=m+dFXFKN~7=%_2
zA2qQj<}Kv^r>g8tzyH)AHTi_^_2@?MX8_|Eo5j|@N|q=;N5{IIPf1lhknn$66ZW3P
z9`OOO&h?COFG$g_9g4Xia3L+Sh7){%nCk$r6K?Xo7=B4*r_2x(l8@boBf8w&<Fl%Q
zdedFq(Q2Y$J<==l|7<#Dtray1N!~^*Go!`Z=$GT89*%SpCLvriFD?sox-HHKUIhj<
zLm?lq=ux*0rEZ>o^J>}Rv=M(epI^wcjkjmo(TvHX`)-t1IQsw5=y<Gnqlf(IPo>VZ
zMq<r68Yy4Mm0Md9J^9O?P7s$U|5)hF_Z1#j<w}Xq$H5KGBAF>EP<l`sLM+F}`<M|Q
zK*MuTB00kiB!XVFhZ<SfNk|#FUWTK0#`O@}p^d$*YCm*Z3pCMJg(!bcUPmel(^aQk
zx~p@DalMGC)UOrSJGEFO>o`EbNlW(GRz{jlxEq{VcH-C=#q|V#<VH{3V%QjgzM}PN
z6+_~E^obGxn{*pRq8)|=0Rcls%stJ70relYt5BMhl!*wblRkxXsz{@+ja3SQin$V$
z9yzPb_smtb=9rT4>=u7J5!<jv()=I+9K#R^T3`ne0Np|!-H_UZ$}iorOg_;L6C|vW
zNylWHi9VT-P?ISGEXFLtNNhrHZJ=<N5lJUvfrc*gIS6Y=ESu<IkPEFK!D^OXw*gxf
zrZ;7X$7<6{WWc~;3+)v=_K0AcNlk%-(Mv&!y&g$~Vj0xwm`Q)sy*))#R4Nq+rjnX-
zE;{K|rdAAXjkGba*bqqq*arg@R*@0+lqS}=K!HN59&PO+W_5<$62Jh}HUS}%UcFd#
z2<eSMTvABHVSvQIN@|8fP?JMU!whq-hMG!+1y%osE-ok=0zoF%7q#lb0aPeK1c5@P
zBu#{gnYE_VWJ!M$VKV?tq#y_qCVON8NGwnmEHwgvqA`(0V!Dk+qF@9=P?L^?)I(83
zG}B>{XhDk@s*Z-UR;@J~z19i8v?#EPBE^cVL?N`G$f`wI7;KRfWt$=ffQo`ah{cY8
zqJn9qCPkAWw9qXgK#(LznUE&d0GSddWC;S&Cc;FC14(}ojADZoh>;lSCWO;XPrKF{
z&{9N5EMSos#wid@a_ZAjh-oHsi~}MnDyXQd7@))=kqBcL!6Xn^!398L8H`*2pgPRw
z-I*qkQ2`YYh%8{DA|Qgs3dS*kp{9mmm^nH<34s`BKIM=#0H`cr#e%C60~nAHSiuBY
z7>pQ<1YLiltaS#f2yi-r3Ir4u0L6q<NGPDjI;519)mMvBFc=mXSOn|>uvS;Gph}jI
zn3W)1G_p<j2?bPOBt}TVRZR%NV7fvv1s7SnteFjag+*bmI?1b6tb_w#$iz?-08$!=
ziYhWHsEDyq)J=xGXe8N74N@_S5s?^-L=grt)dhb6WEFKA4TfeI8sf4o)irF@q%|Ne
zlS?E)9X0A)>O|PAxMn*+SlxoU>!AwEY*dAsiBnA^k{!~M5W+xMt0QS`qDe*z7A%BV
z7-X1c21v1F4aRGNiXte8u}P-0UcDfGHlWqFO#^l$(i2TI(?JynEp1kMwQu9?^BHVy
z!)t#A&1NBsFI=W)aePdfwjf)pf>#|?<SOB#T_5DMu(^LU>%FI&p`wnwd~80u=kB91
zF(G!md2zR4vGshFcWb9w^~uBOdhp+EZv(YEfqCKo6!tcpZYLwzfV=QNz8>#~_0|1&
zznM%<PXY7jI)N+I`btxXN^u|@X=4xw02Y6N5g;0}$&Xn|n;jSy`uu2yjF3>WZa~$m
z<nHPw>Po^3p6<<Vj0v@YwIOJ>2&~%3{k4R`8BF(9dhr5mWMF3hB1`QwzKF{ti6Cu2
zk}9zkRT4rBf<ta|kA#L<0bmME7-*U#!yp;ky{l2djX*nCSV4@75rt|Mh>eu2Rz!be
zZH2}R3L>N;g25Q76JkKfm=O|1k^nljYRo322&W58G}A>;HnKxaCYXdFj9IP>4H+dA
zU<RayG|<E*Ai(p<3?#y&g-A=Ki{P^Zh{6KJGx4kdtPMyK22utRq!vjLVoRk6D7&UT
z?~TZ683<{lq|}v=H!YBpL=jj3gA9MLnD+EAfJ`KU|Iw06B!FX+*KsmU#D=B>!fO0G
z4aO4(7h8zI7C}H!Q5LcU;*5q8MI@DyC_))cjD!|RCGU8fHX2So>p;qhhhBt|jFU(u
zszq2zLX-*&Dx?))qJSu{Q9}(yRe~fGSVTx9L5U*FKrE1&2oM!P5LpOm2Sk4<xu&gJ
zYDt9EF^mht5-nj}#_hF%HRg^b08McUi>{Wf-7$^NrMf3Yb(pqRYo(F?T!#6X2}Kn$
zg+iN_8!}jC(5txQqz$Hqj@O>z|A+VXUfQtp9WMXZ>TU(=%ca$3=i8x~l|-a$lHj1)
z60lh37XmoOFc`)&$}|i`Fh75HF4YRbBm{=&Kmr{qfIleZ+U>9qZ%l?UCsC6!XFk_E
zO$}z5#sx5Bz+r%iB091eFd5Ee21LOYAc~-lF^Q5a8w@)H10UsqFH773VQ@u+%m1s%
zMyLv<X`sd;z!8WfMj(*AM%+U=>UHFXMj(KR6jmy0(8;LCXHAG=2;+ZIiCjU9CB_SB
zZMK*MNQ_{_NX#@Xqy{PoG9wT}nT(m&q$tc>XB#@5CWKW~VysZpMfVxkhTk_s2hAtq
zCO>Aw&tM8aXHA9%A}l)O!2K^51~jt5Mm0HaO^PEF5Jk@poLWnk(_g~D$T4x3_U+R+
zElgBQC5fcVoaD{3C2W7qGU>#yG)~WEwSPPMFJkYayxa4*vtEkSk$gVxCJ^Z<gB3o<
zRl#X>#>AFe!!664TUO(?po)!ip4hj=>X_*@+ycXA!KPW|(37I}$Lot0viX1x=^tj1
zOZdz1;6OjHL-sK*CXysexuPUqKUayPi~ZTlf%^i1CN=`Wgu#DdS(C5G`xyawwvPpg
zDy~-rkG*G&oeXOi0zUQy1&;lc5h6OcA>51fxIL>R$-d16ZJWDuR~KuumuBm+)WKPe
zS7Vb6#Y(8`W)XR4XI%`-j3RL}j7n`9YiA}*piL0TBP1q(N3hYPpe14W?#P15M1xK0
zm0{Y15>PDJGKzl$B7)ev6Z=w$CWx}xSr(}9;UG+@(=!&+S+C)l!U!S)B#6ouWaA4a
z1R-VXy|QtUqYOfU$)U19jXQ66w{0e2UG7BggrjV@=AiK?5J)E|Z26W*Hwcu3wlG8;
z3<gq2lO+&I0Fc^AhW`aYvxGqsLvYoJ+eI)DB2PnCLQQ{}CsoCwY;rERK~abdU}&w?
z6rH*ALiE0JVjvSobRr3~1HpH06cZ^EC=;noK*K5_hGLpxi<XFt*qFq0Ok;x4#<rM{
zu>~O*d4U8S$w<mU8zUqPF@p{OkqFyFs3A=TR|x$X8W93gDI%90oIt)iXPm9?K#n|W
zph;ee_^*Ga@xnV!NZ~8p96j2$P0w<RJyPokLkOaF4Ko}Q>OsmN!CDadS2x(%43R^+
zP<AkeiSUOAd?F<FE}DxMz8nGsq0rE*q!=X<Y)w*u(1lbva~?)l=<lhEu6^eba?XS^
z0Rof)bzmgc&;u+lcAP_G0!S!@O*V6d60rE2JrIA*dWo?pbiG)BQ$da;xngBb%dYeq
zuqHy;=e~!8@FJ|xK*?8JlLRnHOSFwP9lL&#__#qLMymR!9gSCY#@53vQ-3)!R&z1P
z#MG!eY5h3mW{N!TC53I`!5Ek@7$xXhX1niY?xX1XyBGbA`=9dF|H<m|5=LtT7qX6V
z(o}y`!GW$X9nKhv<v9&=(R210+pf({Tds{NToGi3E)%EBBmmPv$)K2OBTr2`0PDjZ
z9K}I6H<gnqBvp*ZiHd<Nn<^;ImdhMjc1ShF;ayibdiok+)I%6>)(Tp1JGqsKwwb_H
zT^u-imZIggcP^PFS(<J&&sT88G_BE;;j~j6-FI_Uj*1R-2}}k_x?#UTF$8MRC6I_n
zHWZX$1Z^2k4Uk2V?jt3G$pv0=cSE4NJ(Yz-BuhrZbwUAz5<rtAdOp5nMU~5Fth5@j
zK@b*L^n;fk!U7wA*BiW%cn8oalvD(Pnvl;D2~%C?7B6yy!XT?4m5LllM3>vV7(=ml
zpRQ`&qF6)IBcsH-PP1_CxDnEO(uZGCe0ehr-$Pm*PSe%1QVvcXZQpqGql25Mx#l`y
zT!~=@h-{W!`&F1Dk_gEbxe4HeLZV|MWl05tb|qcyTXJVW1*)$8FqmCuYzG8{LG59d
zv%$nSxo2#JV8H{vRGULw+F0zRYiW4y6^i1n<;1`%OI}r15E#?Rm>E<JA<2&+m-xa0
zEdiUCCc^?CfA45h`<>Ox#sg+)H!zLajOTSbB+D|k#`H;yTSci(8+Gz-jCS1>G4(jT
zB?@U}(%b}racUK*ijN~UVJ&83hkltDm?>>UYI~EX2)$;77bK)g23jEUFk4Nd)Idbo
zR0c~#IZ>ikl?^gM1#nKn66;qXht%#-cIjL_m9TZyf4MqrZepX98))8U4fQlqL6nF@
zqESf_c$wXEHtRd!ETNnM9Hn--f!s0^q}i2l?B`;ba*d|TQ=e!#UMRDuh6hoC$3fs?
z2uP$+MN(ywi8fT({m)C1VFUpKT*pkv)WFpt0t6`3$pxu&TmpzTJ@baK4T-u$5YjYR
zV5Evye`uuVNr+oaGpe$iB9)0FxgsErKP<fNBgNi<VgEb+wg3a>y0~wHERE1)5KIty
zA0i-F!U_{>p`iRYgAmXtEEG(Z;F8E8B2wA5kVOO%2?B^oC1QoNr409o^s1VqJ2p?D
zEoqVu2uZqIH@QH0hQpwbk2bbi8e~BO1p=jMe`%3xs^P^)hiZ-zsfLK++f|$Dd$-O4
zX$-QVt3~|S5C||0hZnOu6v&Xct_)n=%uI|8^Tz=^rI<tRHQ>grl$gqyRHBIm4IR8K
zN(N-f;6#c<AR(?s3$X~(P=W&XmMr+g4HO`PYWd%+$m_zvR<}VKN3UrK>X4pAoBXS=
zf7<J<Ew3uk;=B&cR2=DM?1CImC<qW>nJfl^DI%nXSWLc2An@s;8xvEzI*=hsP4{LQ
z#&$DfpBt+=&VoL2Y;Z#j7)T_LBm_xEQv1d*Vp0apWey5dS3DROpS{B2Wc&PwH<3xV
zayqc%3Z<bSkSSYUt-9*fK=CgSi8w-Bf3is=vuPYD&*=EtNet{buG0k-GUEc7aF~?5
zjzuvNAf%B7?S@GRYSU-Iv&>t-KZ&3CZM}tu{ktM6R>+9H;?ya~gx*Y*=}j&)E6&2|
zu6Q?{AXZu|z<L{GB3o~y@i7Io!d>Fo1Q0*62<!6uJ+F&#Y8g4}AwfaFO?YL*e=7z*
z5OMcif~-8_f=^is0U&HNN_i?GDi*FNz$I<fQ6!RVXnTa8f}k^Sf*H{dXBrSaQXrdP
z=`5&-R_<&y<(?+-ER?&=?(pC_VA15{Qu0_p`9uqwGkQUYoJo$RLvn%>Y;LANYBnCz
zT~pLy;NfXaw;@hus=Ga(h<E96fA<x!8VW1?e0xW?G1@#Jt}zkcF%ASn?+P{$C1HkR
z6k~^@(uP!5DKy2_(Z#a#I;zGYqEbN7UuO`&j3sh~&4UCn&ypy8F1}$-ToS3Sm(Y{;
zyC(nrV0$OgM$-(UV8kjK?R!>%b5syWGd4=?0!L?Ja!??ak+3h%a6}SwfBYQz-fD@q
z?%{%T2@*(@I0m&)3yzoPS-csML?B6-R)hLlrYDLFvM7RL5Fo!@qyYq;Uk6^EIgYP8
z8J=P0I4u??NF>;fC3+Wc#JMoENY1H-ytd_OHs>(W@AShHJsmJO>2@z<N^30wO^F1N
z%Cp|I+GaE7bZ}ki`?Knwf0jM14#Lhm$UTP+(*tuSxZCSL{dIotsAxumz+ZHDA2+Q)
z@An5XwQSj&9{EL{`3Z$}(Du$Wix@P>KKHLqvrDlGxdz-wvtbf-R_4~c9*`k{a`}`&
zJP4MENf}5IAf`gx(}yewN$iE#M3aSUp&ky3qeM|;+kpz^Po=!Ge+JURCdDKQK>{%h
zViy!RmI&!LXaZ?2WFs69xf#h-qC|qqNfTgB5ENq_9WhlM+fz*7)tV;{2M;j0qPCg>
z88C9tv0qg0c?sJM5kw*0&Rh~mM&}0(gVN#5G7BgWj4+1;tVlK{A=&l#^AM5;Y_=oX
zCK-jZvf_l0OAA8Rf0ezrnG6yPkij6HDFKy4Ia?6N6pdlA*Iy1d&`=E8bVJ1pfe4dr
z4T)BihRG16J%~XhS;GTk$2aqDAQEwOdSc8SN+6pXXhHxGcjT=wgr#B>wppDk1}el5
zYzYRRf&@4!&yhyiD9J}w#{<zQk{O1%lrn%oh#`3?6O(D*e_0$QWd?lcxv||1w4nH@
zaK?=oHWEabBP1xi+Y%~@d%zwlLPWPl*^Lz=J_-yIG{YvufP&KTWh)1-Y%_~$z{40~
zYV%_<83s0W7QSH22YGG?#>ht%p$w3AK>}Jthh>yUZPmSUJFOK#S4PJco7<NN@FEd+
zXIrtdP7^^=e^wi<NMw=*<x)*tfK87y1WY$#HX#B{w|Xkp_q?D`Pu{jbC#qD!HY9>Z
z1Uopo0oq8G+9t$uDXM6KWaMy&fQU+pa%~WS;AG&LQ{e;z3CTtdZyg=B;z0+Q8ESlk
z%d#Yn!NcF5SjH{HphDn>@VdR%mwB~ZBKn#(WM7+4f2c5_6o}NKNwFl7SqKwi4_zmm
zIDy9K(vkEQK@u4V3h%cBp62vG;zA*i50F9zR))b4?2^vuf$a<zdQ9Yv3*!^sFej4l
zq%dYe9M)Jy4YA(4l1YN7qrolj%SaD&EJzYSt2BW)N?}=qLIovW20U;#HoVKN6IJ2S
z)o{JYe{gJ(hLyz@>NAW+VXE(1YP=mK)P{<Ru}qM?a^m`Y<<+9EO?$35sIFaf;uj(u
zr6mG9t=MOCXlPv6O9<HHu2?~%XbG;P41pS}UJ(Y^nPw29+>vM!KuAN_=?H>R2#-HR
z>nV-hF4W1;+KM~$)sCN5#}Lq0WwkFl&Rsqge}#a7ndZW_`9a!B+NvN*R8lB|W|T)n
zBqV~J!;?iT4I`F<4T#KgAwq&~a<dFk9@=)v$q9t$8m$>Y0C|<xthgmac|7jK5G0!s
z*3b+=1H41E(jI3Aj43zSFbO$?&$l3Tz0M$AqCg-Kaxm>a6~u++p&thMF>DZLgBWPe
zPYr*DQG8WBU9>O0c$Pslu$Muw&#Hw=M4ySlhsP)$gfjM*JQ-Xj{grUt#wk?M%Y!#K
zvtxWUr-^cQqRAL2;2@)#43Y>-PDw?T5UdH^mj%oMAb;;!gWJGy6T`?rK<C2_2Q4g!
z-0@>l7$cIo%v+HRk_$)ns4!&cLk%7anGZxHgDD8bwVi5d5{l+2S>+*YdJ_0}(8p&=
zx2GBaRY0o0ZNr0$5$<6VtSeFo4wMrc)COY5$tW61+V@k5O2p+OC}&tqVYi(iGD!!T
zT}N)E9FSU0kad6Ft@B!J_~VIBPc|7kt_I8!I6@R*5Z4bkOvP=lf69$VK?~OrgUURQ
z0)Ro}kpm4fS+Kkq46d}n1V}cSmW<LsdzDVe+#*mTr1mu=YthjVCQ8)7^aw;frP$KW
z@W~w;wg@L=h=rGe><G}V=}j4ST9B=IeY;Br#G86$8v}o1r>6Aar0Jp#N+$Vil1lAD
zxB@b99><saeS3kgrnF-&+lDvR@*s+Y)7OI%Fl{D6q}Jtlk^~x8cj=ZS8>>^JsenWT
zh$kw|%S5sQuZG=>q)F8Va~24J<h(t&ASjVLu|_3(e4xtgpD*)%@8f)KkwYYb%-YDj
zXq*s38}NUb0t)o$mO><vh0KWReI0iaWQqpH=QoCEs}ME#-vjd%?yqs=V@6MxDo6+$
zfi0%l0F$b+W*FfgCf|h>0e^=6``7dRW$q5hWia}dWTYX>fz>P%#DooScI*0)^1X$$
z0!F!g@&Yds<N1vpP(GpbC=zwhc`1JH=&>QtIE#M_*eNf}@;%g4#hp<FOOgNgWi?Y5
z)^o8)l}mp5GcrpGO!66A<Z|WCNx|eK+WCF%)I>u<zL%tv?_(D}_X_D3wP(4vtymwR
zqy!lC;m8nRG%hs8zlltca0Uj;j*O?6!<*ScMWLjm&XSH!LYeD%nJ>x@3=lPwYky*X
z0APP-YA|R)7Augh`zRLCp6%)_U6FO2D_Oo@1DxgZGD@)8zUblcc?%N7&Zy;{+k!>J
zA)`+5IUHFk5S|6A+E}Xsyd2&cdeWQIxwLa(IZOSRFRJfcD9x&kc*9E19Xe!wroIhu
zUukA*B_J^|pj>k>7;7bB<CwXfFIezr#xj5I$`=hC^7I}?8Zt}=9XzjqZYicp&-$hk
zZ(Ang%?A%k!%V|TlLF}ml^)Be5yx7g0iUC!%b8Oy4Hs*HW`=|>?P+c=25(O<(WJN)
z3tkYF(2<Tbt*|2-uO)r66OYW9<(W&?Ml6;wUPbZYyL7gKD2-PcWF#uV7IkziVlaO-
zAa`NALUPz%lXC>a0@I8;5)77%0WKsXoPidYq|KZP&+&n8Wo}z`8#2Yo;LwqYoG`v5
zOE^g~)8&IeHWg@424g{U0@}1OjW(u&+6F9ouDK^xi?H0q*I6vKHsqEAuPiQHDWMjc
zD)UejFqNpevz1e%Vbuo0J(Eh`z1DwQnzB0%UpOz?4>dp*>47>q`+2z7^1+Ap_8Q6P
zer$VhGSwE{;Z`)SJB$uoF(4@PVV@%*<P6Kklz^3-@Ut;2D-)6rA!f~)wRRDYhk8Lo
zpF__^TiaRqefP(%%$f|gJ!Qf{mpHt`0gdJ7VM`@}LleWXW;S#n+QU1yn!|q&9VS}I
z$lmPnAyZO&B;eOUVELQn(89$979;*zQ{J?kSBs1Kj5?wJhVA?<RZdz_0MynCIOuZu
zIo-$<VbOC8;&2P3W3d(-+Ba<nROuMg_}CY$+|i_|nBA0#Fk@h?w7n&MU#Xf$(9ML{
zbl8}Zz+sBO@)%H$?PeV?l3jmamZb1d%R0sZSvzg(HSw>OVZ4VEHWOnGN(OdN(}!nP
zZ&2d&ts}&<EDdQl5H_G;g0RroOkx{JP1<3++`?2ntx!|T>!es|VcNTXVQO24B$f>@
zwl^VE*J#4i{cN=ET7-kxGS}3EFXP=pGFl8D&0-yHX<*CP;LJp*z_EWb1%b?cs7khi
zoVrb^A)U5yVYIPulc8WA^GTjw%o7PxbFD%a1MxlVCLOF>c`Xa-3`Q?qMkLa^as*yt
zBkn+ayh`xwP>b|HSzy}iS_#j;)BQZERfbE6Di*gF)O`5#`=4v;u=*=FesfFSbe{t6
zw8Rz#t+$pu)0T~>Omcr~t9`SP1Vg<ZRza5@ru`!`ofjE!h%2>Qy89mf`@I6~x|}gt
z8v-U4=HH>~_{>bJA?=E{3_QT_Fo+=PP$!|b0py42&4c{n*xN8o%Yu!}9)h5K;d`4C
zvPitpaFw7dD}T-MTk0xNNfq=P%t5zzLL6|c2qcc;HzDsVP85HZyI4e+AwqA9T+A>L
z`}0*FY?~KWaffrw<0jyalsA)v<95^)S7#T!b}Hj51e+@kJ8Sq~qpU_aM*=@30TW@;
zXzWSdBWx);n|*omva)TBiZ4bHn9FQ-5l{zP>H063#8rq%bMUrLG_56DgG?%z?Vr4T
z#gYi~oA924HtBy`F|p!%=F`$bGcEB}hKM8^9xtjPm11QeO^F1v`*-E+pb{qul7H|@
z-Bq>VaWTbzl#bJ=f#Sea40L*l+MEBv9}9}xaMbRl?>)F&A_1gqkHG0Jat*MVsT>@H
zB<5EBn}GDW=VwcR>HTg!532dcjr8QM{^^|9@L}`T-miaqpG}XLxp_VPk8Xq0o%(4n
zGdo|VpKIaB(04r_6W@OCy7%69`5zVE`SyIyIu{3~YH+DV)oX^z)|UQ5mF})IqoMpd
zT>Tj)?l3;3ua2b?$?j)4-1c@K2mER2$SkLaSd@y(yX_7<U;RW1#~F5B5|E!C@e$-a
znW`iGkb!^RmtayM*6w|;&}36Pc=wZ@Cw5a;vbX#x^J(Ba?%?}-Q94!>?s8c_ZiZS1
z2nFcl%8NlKaxAHRH{N+n4XsOoWCOzv-5+FxUuJ>2rT4kbXnOt%zKYsvMcODKjc!!`
zqc=SL-gH-Yb;qvH?|l_r<k3~*^Efe|)8M!Tw<>@C=llE34)^ub{O5hMp-FVL(uxY!
zB^A%W-$ouh<R_jRB<H2D3e0L|Ot(3Q!}Jw#Cd&&XWZ+=aBqJ#R<uT+WO8Zp7@R22>
zTsQx82&73ihFKyDlO=8x!lz8&n+DfWIesTIYxlY=&&RsX&Dreqr&Hs6ZY}Iv@#|TN
z+f#p>8M!h)#m{|CZFEul*hJ#PUdnNn!^)o}<bgn+fS~faz1QdP2ja2W<S0LEeJASw
zgY;g;q?6EjaAf1S$&nZ76PKlnJO+sLT-+GsUB?XN6yv1DHSJit>5zncWtjfCeEaK+
zD`UxhKE_y_ZxDJ^`pf-ORHU*?h`=Hb`V4<hfTj_7gsI(4X@>LddoIo^{c_(xaZ0|N
zkW{e}RFKpTR{{9-GmfbKYQ?KOXCaVwL}E<EqMW{YBkEjgB2f6YuL_l1*^Uh0QAFX}
z&!y7Jt2Juk<IgtYb1Fduk>2Qb=!8uJa>&sK_o`(Zev<0UgOoiExDH6z*_#ar2#bI4
zL~%pUGljt0zC~eb&^JI5h(rQDR^6~a*(mOixkJRi>MRl2FX}g19mv1T%K_Y?K_GJf
zV#I&Bzxv_n@pMkd=ai0o+@u7ga;*S`W<6O1H}N5uPyG;nF>F9D%hmb>C6h9IstPS6
z{!N<P9CnVTw$T#_RZ$s>o}U@yrg49CRl`vwwcE_b$6ke%rykTZvwssKi&98P9pCA{
z-?az_4YC2aAq~VV7$=ImM1$-toe6mn=~r5%FW@WXBZ|j7Ajlb*5|aGtP*km(We8iZ
z3hhf2%`9K>*-p8uk!&rg%y~FBOba=8izDPeTe?w_LEQv-{vS^~$s&$OXNP|U(eSRv
z)cr&KArZ{((F7bMMuc><PRTM6<Um3fQDl(`e{l4%o>8gxU5HWF>bOJ@Y&}v2<(};j
z$K!P%=wI4K(gctXCD3gnkzO-i+8Z*^WF!$-ECSLf5!Tr1HtduQsUy~cHiC%;b!>~C
zW$-cOaB_Kh3-d$`NRi_~5>0>7?n9vTazaQuf_ji;CDYR}aHWeakYtib&-@NaFns!d
z_84;6A)m@9eTRu3i9dCKp?*28*k3TeW_9wUT;&M_M6z+Vm`vKQl%-rH<Z8yPDCuH9
zmu?!P);f_)2rxv~O3#<P&&|v+-c$G8Ivb*QZ_%>`?`5we$Ugh6Tb_RjU1&R@E`LT)
z`ku!`(_-+tm)K!I*>KAHA2zQVdjte}lgRb`Wce3TY&pI!!qA>fK23fh5Iundl`eCF
z8A}D*<TM4yCdLfDU!I>@RGvxuLuI#f=j}f;k$f9)YWx%ID#OS~Gh;|FM`1^Gicm}L
zK^rxf(SF(yDH8C#iPC>n)=RaKUe})%AkX9XY+^;y0MY~?l7csdV<+3RdF+=Qv5G?p
z9Hb=vkiNu*m}8OUC=xJiiP-eDgpco<;rw;LiZ;l~WReYf4Uz}X<paaqO}!k@eAK>{
ziLoSzoeNHi*KW&=w4x!vmxYWRB&nG3%bW|mk+*p(5Jz$6gd=}t_@Bd2K?Hf^ZtJHK
z2QIFsatVU2P&OcvHeP9O2)Jl7&*OY}iKN=GD56Oxa?2WJczWfZ$i`TKNfOS@6aV~o
zER(SSAP72YnBc63X;7-asO0fDBRzBZZ2TGuIJCOdKu2b+(0rpLb`Xd@mHM6x^fzV@
zBbVXyI;G?i&24`-TTJI12Il4+Wg_cuOw1=cnWi9&+MN9s;@lOVtFnKK!sCH~<}38T
zctH|J9Z(Jew+GtnjF5coLmZE$eRbB0SCiOniKF>RpLBII4cIaVVZmu=)0IR?7R~M&
zO4AAdz}H8&ST!=41Y1*<(+yR7Dpb>j!s_#)hV`ck?x%kt+99H`ZzjsF8Mu`=jdE#>
zDZ#SzS?A)Jy4dWwO_uUrqh6;F;_AICrYjK;=BE)jSt|1wZ{i&`H*vwgo;GZWrR!Wr
zZQ`Z_hQg{SHt#*0Fs*$Mep#UP!Vw815G2_0Rz?W>Bc)zxl3AM&NwK<z<xdHTL0Fcc
zvTS&pE8&-i+5!~<*=U!Z+5#6MzcHy%+V59(u8F(>1Wh(Zq$>|N@-Jfr;UPpL#~Z+k
zJ_eW9+5#Pal<TO$vne5iWN|#=0p+_4QSKr6eZ&)GJrk~FN)T)a(Y9?6fS86Paf>^0
zy+sVJfTNw1xGHQzb;iWt+g#bc-ZFdKX@ZHv)lE+C;O)k?aoUT)cN{3hZK+x&v@l!{
zkz7h6elFV>995MNtVs7+Op~D!lFxB!l9{ISEz0hHJp`p4?<wtV{j;$iSNr-Sw;oUR
zQ}cUjI@{(4fuD>2<uezY&W8rB-%Mz{ruBEE>a)hlL^?}O!6hApc};mOv<N4)w!F<-
zudsX~$k>7f{-FDK|J%$!RF<o`YN@fJPOkXub$BV-@hs=&sEKzekHR?-X{4fZ0*Cl7
z$RTfkFR9_r4|B(J6EqG93enZ*)S*iEjAD&PBzXqH2wVAa9pqKRCh&<71ay?vwBBU~
z2OgR;2*>}H=-sWtT{=wXqISBNuIp7ar@kx}QP_+h34lx+x=PI1$J#)Rh|sBCiT9MD
z0KT70X%;kT$_b^CxS_Pgr*tHc4iPfSRyHPo?KB7nXKplr>GSS00DHn28|c9<Qe^)e
zZsWjk@7f9@sVagF{olcSTTRP2PPZt9V;sM<;2#|`#Xw~rRePp7^r?VXgW$l4K@e@*
zz^8dFgKmYf?T=mgbT7lperCfVq^wEMgaO#0wsh|=@y|mDT->FG&5!H~A@kZJuY*~C
zyPHz|NgufOciZJiM4gD(i8^WGaBcAJgQbtcL&e@yX;ZR3m&4j)zjQ}uSKU4mlEXw3
zO2`{|hW?CMvQ3AH`6OXt&K0}tsh4ja>e9v{Cbt>R1&rs~wjiG^BLNM~hYTt>HzrW>
zZ{|8Vy1rWyLak6^sH}9u5pY(9nl{OQ7jvMCz*-QPK_%X61S7!7H-;D>AV@Ym+dP!D
zWBDyz(FhW!16Rq~rt3px{%06>wcLvDCw;kcxwDarR)K^Lcf1G$mZ76)R$3Van*s<R
zCD7j|Hw~i9>bOU$x+Vioe)e*jH8S@oVm!C6H;g-XHOT}DJWNBuLI-~6wPHqpN(9)G
z@7EXdj~~5X!aw=l0)C$!QwWGX1q}BV7(99|Z$53pw|L-Oph$vGNqQj-1W+jGSD69$
z`_ldH_2e3q6IJEDVeGoT+gA@wi^6JfG~ahIEaKVKI8C<slqwlWB5$NI`<}KK2gZ;$
zDIwf`{tz-{f=31~y4HG4m^bf#r*t7F>B1fIBmZ9V7cgqK5$vbDT}upJ6A*oPFR37V
ziYB-vtXc`=gp;Bl{tF|RhV~`XbiuiqwT2=JIki>hJa-Pebk|eW2!cp>VKh;LaPnM?
zad81k@H~*sxS)=S7y2gj2Osf&o^=w59{B*?c=YM=`r`k`O2>*;B;!VZ$~G-JK^uOa
zU)Do>*+`ob2{%cd2<m~=^?BjD$)mYOzE<JsTccEBc5e1A@>$Yt>G}zuL{(Tz@e!D^
zgXJiQl&!}^*<A~}5b#&Bgf}pMl(#(6hP|VJSlJ*(+>rLMWn<8n!bZs3lUWMDi)%7s
zEO~3*Z~&wgsWvVi^9AyMHWXi)w9~~mB5Vstn-To;<uonat_}<mWdv})6O?RU=D72V
z?c{st>69ztKLiE9*;p!NjFvV+3*@Z35JuMocM^KR5J}qia7Z8?uH@`l%eSg5HW+Y4
zc0aV?F)Jq85Qy-1aBv6(Eqjz39|BoAJiYs&pBuN0y@jrYLb}?2f?+BT3YFc{UJdkh
zS>#OiEjzhh=Lb{BtZAQXB5ffP%lMSzjTX)vTbqkAWdMzC+g%QAx)5hG>@90Wg80hc
zf=8XUYq1G~1%y_q42xP{X9;kI*j66}$YKyf$tZ|c#p2F9gzu{YV&~BBPuD;|;M}4-
zvO0_#6Pi#^=q(d}e$sRruxia7wcK&Qi+O8o&81FGEaci`TXAj`-*=gvo<Eh0iSTVx
zgKb9^t+x3mI&I#m2E+qm4X%Z@mHhjmHD&p5y*SX-NjXRnBe(Qt>y`ORVSyMD;vhon
z$Vac#N54%MGd&4LBeKUJM1g`Myn`f+CFh%0+d%6-)tjAvpnki%snshY0<lO}IJU7x
z?t-<@Pm2(I^I`H&d-J6ZMvunOHoM-h(oFZuS4pZI4@LK7&~Rnr4buB^;${M7^C||D
zK0!2mO>9q@&cFNl{x~S4IynuZv$gY8da4*j+3M$|BnYw>@X&tcQR9za0{#w$_34qH
zR@xFLu7#R^c6da)*Gn|aRLQ6#5x~X~lgCPJWxx2px3R*2r!>IRVUY<SLzcjIZytvz
zw!SCFAY1ukGnI$tOqml&ju9Z3NP<U%k*^om>Ha@#4gL-_jWq~+Gylukjr?dtA!HHc
z?dtor9p%~VPz>9Nf+o;{BpnuEKt$=5@TQ72qZRIdmA)YYcGYPJ=jG5u662gfB%_mq
zQV|CQ682-}Bc+L9b3b0-i^Dx}b`(7mi*_!r8JV{!!#*_i-C5fFT;?Xw4X!ynUO@e!
z9TT>Yj-26Xz<|;r=!@0has-0XaU;w8MeUNQt(_8F%1|J)Iu1`>bR<TP5!n%w9lmd5
zz%!PAJ#(_LB$0w8=Z8z15^eMRotZ^_-z{JW&Z*mB=SYm19u$Sj0D?i_lntNBA^`^E
zASqa@!hlb-A(#6ILpve<PLHU^?)6kf$_%!@h}eA`I^Ppm@31klwhb5I{ry0okkImW
z!@wd4v;ahD40}@#Rw($AB6{_U4iLGIFP*!8h+~6RHxx&Dm0U83?mnN=U=C_LU3&9f
z$bUYRBuWQ~6&7Ba2$+_^Qp4SM7EDTG6kZn=n7x*)nJcBoWtw%=qB&`^m9HFh(h^OL
ziSHF^;MpV)PQ+#Q8sV+t<5UN0xwF)QgYm*3>kO8;zP7bhyl~r-o7`w%+XhHs6~Kyr
zEaa#xhih;*A(IFMK{{d>f<eB?lVU+8jkq;qa;>R@QmqmSlV%N$>sp7%i*Kdpb9tw}
zt8<~;im;NfktLK#Bn=L+4Ct<H(HokMC7TdIA>j@jm4wcDa*+gVUn;z0+uglhOCXX-
zzKR1X(6sgtIh$gI8$A*R#HHXYj4oV%7P5&U-C4oF(izaCZpR5iDRes^Q9zJPsd*tZ
zNyy;Yqa}k#qtJsOL9!s*I@CBqO_8ssm$r(aAc?s{R1qYD8Zeq9G!Q1%>W1HWvpjgH
zh+Xa|2u5h~dYUIhB(bcfT2ySTK{h%ROdD)oi4<0CZYizM&X~hd>l@oTVp&>$G2%M#
zwK+{Epp3qv$Uf0$9A~Xekq1QBT?*IH0oR3Al#RI%5jHnidy$lbfN-pxx(%}vDommS
zGGmS=6fVzbyb`<}D&s<iO_13OwX<)69gPu$ttBLhI7Kc=DQt-#vV#Wx(Xuomg9s2i
z#TyfZubE>)By5IQ)P^n;yC$%I>41R-$6`&od&?b4ce^7}h$n}Z#*t(}$?PXMp4qe(
zZK<7jx#X`<$~KmW)RN8NTUyb<9vDZ4CM-xU6Fo^0%?}X{+O66)_37hDfRY4ZUloX^
zt62q{J$S&YuGLwbV-=iDIGFPe+u`7|ZnUgH<Ir0KjSZ25UO0B#^>>wjpo&Q4FQrxs
znz96H+Z5V&TSNnc$%H|(xR+?xxmYl8tcA}bjb)A|!Wy@G5YUx1#Z*xbQmy5imIx%1
zb!sfe$?!vy(B2W|M+0wcY#<(*cZ(tzu6sq#8baU^$hd|HClL<I3*3>R;$+~8I*{QE
zlzDulD|O)`!<DYc6Ql$(0>Th>I~pW`L<v3St^Ol=M3~Qz<IEu%JDZUf=;DQJr*w!s
zKBwPA5Pt{!-|7E!&ytrA<^mRf_VePA@=F)@Pp%P1t*;>?Y9Rs-o!tExS3v?%T?KK%
z4F1RS>;3=x-n|aan}`QONFPQQ{O-_fI!MW3EFT;oOd`AqIYZO%E|cntRwHd#!xepB
z{caKJ_Uk&03#F|Y&^X?1MhNs4f<V<_pie(ZqQCc8^>lpC)@R6lpZB4E1A$lV3>LfV
zxQ)t$4T%h+P{Y|&#d_W9@DZ-7$BYok1J{t0WO5#P%t()J)Y55Ec7@JkNM0ibtBM|d
zLu2pp-Re1R?{yH^AF<-dCwhB{uNH~O(mZEe$Qv74=NMcme6Klv)ao05P_FSGgu<0?
z&i)6?&s2)pdQ<u)iSx~W`&V4~L}?W7)V&F!88#sKrpR|7j1filonPXm>KH$F&rL5v
znn3U&t8yD1*oWWRi@P|XjA_4s<FkJ5O4ctM^tD(RJG$)Mh1^{9JCOpAUpv^Q2ZOg9
zqeHefU?}9rspRtWK9+Dn%0!S%c`tu?!RdB6@|YkI#M!h=ASe55e(%isUm`xk9Y68=
zt>LwodhsB_YYnMcY6nb1%5!Pq7*0xpxaIVfN=Ve8&|4p3Y~UYrC_%Lp{#}!-Ylz^W
zuz|1yj2mxJ?r2M~JW%)j|K?ZOcGkx~D~D7;0TIRcTF{`mu*{&K{R<vZmk{Uz8GjL{
z+#$BKG>@fit1j|&qq8LQJ>tg%zE35<_otb;f;|&t3FWkgAsjn!;T&g79BaRcvBMi`
zC2vB?t`OM5?q>$$U8*A#tjrbFi@Zt~2saTHCLxgc7<AC{s5g{3d-N_vgvvmY3RJ;C
z07GazEt(T8k^vwSZbb)_`cI~9M1R2Ng#^LTpfqWM2NEvA1=D1MsHd}wF_H;$(Ak|0
zm?fY{qhrehNUBSKLD+(FMw(M6-jPRITW!}v>vy2+MHFa+Ap}U=qHS$TIut`WEz?W{
zb|`j~A$kW>Z->skud6r&Z|;*Lpxf4{<CK(w$`54+*UAL6k3pD+`9l80uYcIcRs08T
z{BV>nG0_QxK=G7BpNapc@;m&t|C=~IFL1Tv_fD;$M52chB&KlIoxb9&idH0e5&-Iv
z0E59}r3fU-@v*Z*9sa&Ep{sEH(%9UAwS7LR{w(XFwAS~44<^OvefJUNKk1Q8v+%P9
zOY?b(|F=_ntM2RCHMDeF#DDkmQaqcW&nJsGo}b%9O9$vz#;-E1)$M$bE-(nAZy?(S
z&|Ibnjs-A#>06Rfr8tZ`Hc=t_#ciM<MHGCb5Hvy;|KE2WY@@|qeZL5|C>)r%w*J{#
zOcWN4l6)M3!~`ahEPl7&va&Y`{uJ8Gfmx_31dtODRUBXg6m$lV<bUCz(e<wnR}nW9
z>Yl&yjXK_sUoLn3t<$7qbW2R-av*ro12Q8~=wLZ_$+~ET@$DGjFTM32+uN_?z8|Ha
z@O{GRkN*Duqo=c}wS{ObGYl&Q=69TtD6dD{wnjaoU|jo_7-3J#J6(nQZ4eZEqPIUn
z#_ck`U+mW2Iai11zklj}LR<}krYICZL<B*w*b|Ow$({`6(UgfOB9KiOGDcElx>)ev
zce%OQqHM||MisJc<~cSFn+1dr!BrOj$cL}8Y=B8OySxpWwdsJ-_@sSw0Eff#nB(`8
zwG|3anxV^EZtW!4l1W7rN15@jF>1F}^f|k2<Kn5n<|f-<pnvA=@i!|Ce}i#2&DUyH
zWL)jZd~!UF^3GOxcvH5O4I6itL&HdfK<Xsf5DPzILmDM*B@B_>)P+jvYeIpy>ByF?
z|L=6^1eX#S=_uQBtZmHBP~b$^G`5bYM8W`qNEfMiB25%vvui#pU18xMPKM|9#tt-S
zX!K^{c_@B)-GBA}DwfXa$cHkz=`U7jSrfatv{z&ettgWf>Lo`$|1+iZpRS(Dc6D(!
z-A)E+VvBR`C-J1PTC8PMLWh`}@=xb|&uvAk*PhqvrJ;fA6b`5aPvdyBkFh%+()+$0
zaiJd+oP#=Do6mDg18wkbd+nFR{smzs5O^YxF^NJ-LVwCe3!7B?8o%t?YQ+3<5gw5q
z(fB(rFnDT%@?nBO_08J-G{8R4jSe7Bm8+cVhndq0At*L-l0*_u_mX6P%#-KA!HalK
z{>8BeT7Ref=L_Czm?_v#DDL^X4v+>{#{9RTFm1^8kSmgt+e?H5O^<3o{<C!&OR)qE
z(!%+2E`LUvd~eO*NH)`@V_qLs7SN1R9F2rR7%M3g#R8YJJc}##iGmF7?7`RZeZ+h(
zi9>i@NdQg<#PObRe%Vzhz)=Yu&ms}G$MmKTY^H!#MH{M>*4Gx)Yf#S@1{7nPS3PCi
z&5PuyDi%@_2`UinIE9)|b{??VwkZZYvM@sgkbh?k7K=#On+y`L!UUd$EGg#M1i=t(
zcnZZK0|;D+AdC=+%{OgQA<r0sNtRuBxPhW!6>wI;MKx~Su8h-z7*Mc*1z~OS(`kSZ
z%3zKL0T7WkByn0bl8M<OVIxRrLLrIEqYWfIwfIe-lW7GSHx(X@XHy3OW7Yrt*4B=s
z`G57oW1yiEQ!GS+wJ2`V77$@-;zWH9(|dPqcU9@3FWNAH8-G9kxDUlP(2p?p&pXY;
z1bR#|kH}nO%AfA-^;2*rJD;9>;yoH0IyfNf$IZBs2_%o;*N2o$V6xWH51@{Vm47;~
z5JAr`m-M24;==fT%3#HTB<MgdhfcBuet+NP+wQxy%p9b0tz=34g>qtK#`ij?Rno7G
zdiMk3GwrYo(-;$w!h;AbusI<xFtwTqMbymAUZ%uqk+3!%MsWrKI6Y<|25p#Mimqea
z;n%or_ar<A&^Fs(W*{O9R<a~d2Ef@bgGhr>WDe@fqfar3k@>&Y)8kqZVp-6k)PJnO
z0uPz!Z*e<SksQc|5bfDkp3U2`KBuceHjP%s2sbEpYw`>Yr-2^0z?ebXrK?62rV;?6
zhf3dJ_i2$-{&f0T$~(E@INYUWcat0qQFj~GS+f_qrJIRF8)axfgLLs$>8#yeXm}uX
zz@1?hY(W728VE8Kx)2K6@IpxGD}M`)%LLI~hnqm01iQw{#GMkcCp$YjJ9NO;%USXk
zczZ`A4F<{dJt9#+CkvtA*`|@LLzK=|D(2m`n;UJ#=D0;r;@atP!lk!TXuFo6k1Erb
zO9fM31(;J}OC0VW89<IE(@2{Eq@a9!T@lRQ`aEiFa{jeL>O9W>r{wN_h<~C%wQl+&
zktWwOK51N*^17Oc>~vVx>sa@?)@XFrL?9p^2H1!^5(hE;SQsKpZIQ=H=1eLKh8~x5
z1_a{WF}Zizy#6MK_;-7K#{>Rt+O-y&Tyz-1uRk<91E%y|BRbVp<24<PdOOkL@}AY+
zO&u+j(`GTEQM)cD14K=1`hQog&5n(>*UAKY(j(ZJ)kcSA*hb%ny9_FB`fudSj<U7x
zOzE-?+7OSTLLHQtUY7@J$_MAGy_nmOko|5eFh@FuB-+JKl@=ah9>VYD?<DS5y5`1~
zhQmJNC{EoE`=n2<HNkesgKlXIqzs{{e^#m6`Am7{y#*)Q5!ij7nSa59&}%H<rg2_3
zB8qW5mG8A!>}~AsGL%GKd*sr|)7sw7!^$j)AW`pE0MQ0K*3F1LknhW;qENc65qLQT
z+|6C&ro@~kZXuLS=DUqqR=c>t$Zpg#r4-5wHZ>=SO6JVq-8QH|-ju_7FoCh6G{S?0
z<uH#TtPTnwk(0V%l7B%UoRmRjY+pjO5XvNvGi<RK=(w#zeF_Srut#1d3{kzlDZ{ns
zZv(!?_FUuDdXZjIL`n0I;&}P3$pb<WBfYYS2ovk{T;OveI2kM=0ZP)AJehGNS+#9k
zZ_Yqxy(nl#{x4SZR8NG6+Vd7CBm_wVV~77PI^;kjQ=wqmNPidWP<%Rn^u{-@oY7A_
zw0=)l++WMWt0Ue?rQO<`E`x695bYlQOOMsp4>sUDo|kgKAcND_8p!Yyd%SskUtfJ`
zqRvwz-SR@EbZD)#D=uq8Zh|s=gQgX}eFb7#7<NR0bU*p))A4qkXCaRypwLGMGSXWc
z^)4oi8t5<>R$2rf?zPQq=R_feW5ent&$nB8{y7kkUV2~1=JIIUu7a@eAi7N(G8y<q
zoq@6<+{oxC-;%{bmLL*6A{Of{0xu2xLcC;g>wwEcksBQ(Y1(FOA7T0i1cUWbmvQm}
zA%E{4gJJKZ*swh8qCq&EILuU8LbvqwLWqJ6s>>uGJT|qW>}63{x|$=47e{wh(Oad#
zBhW#3mrW}}@52#uaP38rm2YAQo34}LH_9HovRA369LTF|n+V{PyGjsDc@fZkGiv03
zQB9<h=_3XArI83jT+1Pm&%3dM!bd2%WPbuNvSi@Nvzbh4f=0-QBl<_D-(RyBpbuMr
zkZlo5_B$!C{U0AEj1Pov4ao_6?#Tbwc>{CYMC^%Df;L4A&|1!F*JweKc|254JSi|q
zO30fNg2NO_LSSYgq2cuPsRRAyuk91kDX7$|Jz5PRUh)TiIaS{(5Ln_;)oMfyXn!UN
z7d#y_0hEH-(1b|;68r5VUMOgI{yra)ZTBoL2FvvA^h4<0TrwPVCOQxviD2$%;Mo}E
zq_`WKD-p&Urk%(@%Giuluuq(oZdhl`IV|jKfd{P=iPuILBPn#@SaMOhfQke(i6oJI
zvczbRiDk>VWVmeErodN05>1a36@Q5Y5I*ZS_HiQUp`+A?yuCq>c#+9okzFd7^O!@C
z_C<r~(*BYP!+8o)7WL|QK;^NUba9cn9Fnw<Vw)I6AWq2|Na7ZT2)C2<d5AMfHHXmo
z$p5o=bbDAphi<&^e=#D6@F69frNIO_=)6a5rlQP^i}jVYEW#3)XGEFnOn-L5AdS=(
z2sDwf=}<<o;&AMUDG)*^l6TcXg^Z-p20OQb-}=3suWkoMGJOu7x)3Yt6|c%P-u2K$
z$Y<H5?C~BC6;**A{Gp*5HUCOeNH?P$-@lP=1_CJf_=QFR2=yNMjrpcQHZ0q}*nscS
z6pD&g`f~zG1bQ5v=SgHVLYEEo0vCV0gB{0S<gSLMfl(0yVY8zj9HS_$WptbA=%MU-
z9z^3XRBlXHwK$Z4d-4a0i70xM3z(ZzMpfxB%2EY+XJRA&SzR6Z@Sfu&RG|20Sb|GR
zkD(F&gdz#=co@<wH#>AlcGVAQ;)_Pg-@MZAViffh83x1&D3*c;yi++W)>D7F6c3z~
z0z9;j8?h&<a?xU!eEfd*@Q0axb=G}I(wq4te#rQzmN@#3q6x9>W7kIKpzS@hF_Uhi
zb4J}~z+5hst0XIQ-y$P`)i8A-Sb`Ua$&BIDa6%gO<PLc#M?VivC3@=V$z3(%zdYo^
zKV^m8njLb)hGG4<xA>#Jd*pvy_%G7aOLg@Xs|1f=XIY-hHIQY8)vQ%{QXwtOkdl%0
zB239LE1wQsFDY0Aqy;tPLkJNtjfh5lm}NAD5Fwrl@^@7qC85xCFYMkKJqMz(drEpV
z-0YZG;jL2;vLcg)fjS47&P@1Km4L{vl{<54hQVbjR5cJ61j%zTpIm=T4_|kQSjZWA
z6CUKSr$~`2p~O-sDCm7r_J&QX$(Nz9l6uecZ|GE4^SuS~_m&B_n?9fR9dq-#o<Pr0
zT?ixPAM)_=#CaXpdZhelKUF~uBnSkAJ$r&VVuK)%eDiY0L9#6SUvb0Nz?1ot!>tUF
zDH42=y;Tg5j3fudP|<&bZ%nc3KB`e6=XNnV8!*TS8*X`KW(G*?A{;Voib$ohL6So7
zClJXg4<OqF2uN@%wk*#aX%a^>Ss@O@70IGusBU_CWK>zfY-e{$>)xj;Gj1)RQMut!
zsfskpL`1s`N1@h)0tq4l!3>j#4Hg+j5+sO2@XmPjV*T@0HZXr+j3^zP)Y7IEd8fJR
zWRF2xftA}L4gD2}>cl=pOH2)vmIe~F7HnEFmk*>;I{GMZJi9LR-2u^}5`A}+w183s
zi9rN{98hO5`WTBiOQO0JI8ulNgsk5iqFnA+!L|H8Lw7-SD{fv7<)L=Z4N!{_xwT4;
zgb~ULUXCdkUI>3cu&qUqH~gb`DA{W79LwT$F&Yt2(hky5`;r-pq<GTf;7pJ~x(2(V
zH6UESXoAXD_l<+UV;aXvVCfik6o)1%(7YU!5yXy+!|O<csYhM=QxR&za#22MM$kdK
zcP|V6nFv7~OCsjoMUp`dU%7;OR_%I3AV|s-cJfjNNj4AbR?&`w)@o2A!_?vsUcZ;C
z_yQV#yzPV1W6ZAjj&!SjJR`ls4%a<AxW|4_*rA*!eUM{9uK~GMQj#bFy3lqe%#RCO
zE3$`#_p>;K%_`yJw+(4&Y01t58k3KWOmQofwKx{>${FT|QwotbZ@$El#E1kDp$TFj
zVpWMi>>fr*0E7JTKeI8yzovu3?L6Z9ZRT!&)_m~az3lGCb!08g&hoY5Katsw(XXo#
z>O=-<?(6~bgMugt9pzbC?W{4M;*WhuvTbDh4auPmn?xT?mViKF+%y$tkVR|sMFaS#
zIxx!g2{3!b<xVL=3bY_GpNKj55&qFoV>ae-Cz9f0a*h!USWKQ4>MsM69*!l9k07*v
z6p{zCA|UBvjyHc?wk+ou@}^1KX~Z~jecZAvyO6duBO^Y|mxQ{-#1TZnka37_;uQB|
zDZkxgM_jk{Fm>>;u_PH80Kv0x!s|un!+Glb6UM`_GHxk=l%Q#;T(uLD6f4>&>!COr
z)vySE1dl(xxYtiz<%T!Jk<#GW0)h*FK3=^aVH_{a<=d1uDNm3gRL_bQ=*7AWT?t{z
zfEw};UP6iHw2Dv3Z)nq&Z6*%)T)szsEA_wT{s+<i-}v5htK+xx>`E!Ik~a~uLbRAk
zsK&`GT-A<<!jwUTgC(E{E%va;^0s%YiX+$-!&C9<o%i#-KR?Kj`Be~28+$u{=Ybc}
zwb1=<4s*bn%g3n^{J0Wcz`Gm9W-k_GgSXa*afLgGJti3W9qXTu4=3wAzwbZDs=Sgp
z9(&A~eQ6)?anT;z4~c%1B|vdEhJh1d@!6*rCwy{o%`mbEE$K<SCJ^U|B_S%f|EK!U
z6-(se@bK*wd1kZFoEW?ifRYJ+PL~NuQy$zrvS7t1nc`xuXZA1OeXl3Wv!UiYA9+Zm
ztemyM1i1u&WC)d6#Dt*$i1@V($`AP_EX{dN-5Pi5I}V?-fWc=*#r<tZ1#@`NU_4@3
zqUQeQCcI0<oJ;od$c{A3D#Fqk42^;W*O#ARh{hV7KCMiGv&tf*An(S18;(T6jSgyC
zz^PCs+z5(*#YQkx$}{g(OluT$oEZAgsm1tbdzG55bQv0xI||vG3}T(Zd7qc*f*!_%
zA;={fo)SnWbDK;VS;FUkY&xq|!yg-?cU>-Ews)!eSd>8z3tdl+pVLtu+lj0w+&0pD
zk?`VwXXiuents*SrUTr6_{q4qf(1X}zK7?Om#U50(a%uu2j#|==*X+z(tK5Xb5Co?
zuzNZ*_S;dwj7_}FKzUhZh7hjAWf^X2?zx>e4})I@^y*bd`TbSEajAa6s3ZTScnm)0
z1|X-B^p+S@^p2!4`;4dfHS{f6*R)ymek-8kZW^gaRS~VTl`GGGD{%^;vHezA;q!Ms
z7x&Z5a*<`U^BfJkFSs_i*{b=#VH@#nb{EL8i~|6)7v?9wOs8`Pa;pzPP7@kC5h%54
zl|eo4oYUv2r}I%FG;<eA`|9<6{^~2KeSeKuT8VPW<0{lD%PJ4>InL##in*WHeUp^W
zHgjHL31les+jV_^+P|r-K;{R?;qwZNrp-=V{?RFGyY!|(k8)E5a4Xj(-NL^R$dTn0
zY!rH|H}C5&`JPXA*MD9|=ee%<dQ#YQCZVoLS!Db!HVmWeSjRKRZ@#+BKF+5bx6CvB
zWFEoOM;p*z?uqz9%H$$>DJhHn8;;t1#Dtfhujyl_AS~p6%j}fQ3(BcUMTt?Vmu_C7
z2|az+5B6+#^r+R5dyh242!~niBsyaXli3bP<CrmPhdd5gn@L%JG&_y`0K>s;)W@jE
ziG^L?qws9&w&TV(+x;zp<O*Loe+qo&bq)Ni&YZ<4HW7;-)#BWz%hGOi-ClR@ugK(G
z<})G1JIcj>%Ew}R&mAg;!o^$VueRN8X$45ZO8%bD$-XhLKf<WLi>`dI68ycdhtKk-
zWW^z9^;hieXQyu~!pQ4>3|n_Dg>wcK?ce`YN9{zDwG9t~^g=yhB`IBseQ%-Ce%mh2
zrV!Tgo<j=TQ)*FsIR`t3z-FK5?jEcc<?enD;$VM&o4mranu3K3l`LeXk>~J1GLpP6
ztS(b;*Ok4f#Hj%H`Xa1fO7-ui#}<oDYoCA5XxGSFo-b6mBrlX0e`MQyj)$kA&DQ=`
zZpMDUdwb1Ut~Kj*%i(Lda=aWi&b~Xl{_0n`y??}R<Iz>umea+_xj{=xLx4z#bf!zH
zAb@;-cts(mGg_?9gTlnar_^{Cwf$GR*RF1Bx2>*yZ9g95_Ldvpx@bI#yml?Pyq4bk
zeQ`P8oKLFLLxU<GWs&S@eaLhnE>FO8-9CB8`LTQqc+<;%GP@fi=y!uDJ`ca^wb(B^
zn(pKo2MeFX4V;PrN0!9oFS#!7TO2QQ4;8_GQ|bVF2lv}>I%09#XU?`u@)9nrUxCy}
zLVid%(BP`BMz*1Z9)JiC1Va@>dE~<&8DvQE#=?oglUzYq%N_Mr-o2J-hehFQ;_?HA
zhQH$uj(`GR!&s*G`QR`Q`V1h4>l~NGzT}A^?T6E9mX)OeG0>@br7=6CKXnD_e_04l
z{>*w#4<PaZf(I1?`d`f^iFKudZ*6CyLKXSE_M^Y4j97i?8Rq9y0oG+Ch3daO|8cl_
zegRFD*hUkSBNQ=zG6L^{$MB$$1Kic^4s4Zz12cd0zU33m50wH4KSV|Y+HGk)OvY0j
z*D_F6<?-!(CH28=-B;k{eub5gjtizL3mx;VymvL~KiT43jQAN98Mb#C6>9SG3W!O(
zCyv}eD_8seeg$EU9J+A@*9EHvm;s;T{AnKB>Sb)vo?who+j5mLj6*jM-gC+$kf$vq
zc~yU<|La2eVYO7%U^<f~UfeiV&8u`(CYS7{ZN7M)%d4SqFhGcaDGKW48s;-&txF{%
zl(AhYFgyqlEvbVbLj?rh+Cxf+2~0(J;i49F>ATw3L>VGCwM~31=O$^um>7{{N9H~*
zI2@?ul@#b145a$zWX#BV0g6dQAR*pPYoULA$Xi6VRBZTn96Osk0M!zk>Y9$XbgWg>
z#%yj>zUsCTNN>t&ZKiMF&AWqPgy7;y5)xdKa{p?^Wtj_HC@JHUs1j?cQalFs5=H2)
zrSFs@U;f4}jOXVm)T0l7!bMB2Q25q9)b|s7goCa}*ZWF){?>w3{^RS9<Tw%)%E^EE
zj#<9$Ut?GH<YxH(r5z#IXT49p@t)W1T0%X`3stxqh=w!<z%bfv6W@9Y5&w_7e6fF>
zGE=xM%pd1DO@Dl*&Dl1Qu<-kA{=)_7*W|h%O#hns{j_R$z8X*M2ew~zQoBdq0ej?z
zBn}9w<bB&ib5l64JJ<65vf8}vqb+}f!E5*T3-vD}fe*;A%W~q|xLO+o)o+aaszcD7
zYzb34c^5}>Vl+Lzb4?d?0E7U{fDnKc&;k$wTZBEVWu$QNS}W)4-KTHjq5zvr8cU6H
zCoOXXDU!qO_EG_Y2bPQR4o*&3><#FLzT|v<USOyy0>vT<$gE;ABO_@spksdoni$vz
zv+?eqhchF}`R`9Gzc(Gfk@8+|r06YIe<`V!E89M(z?!L}xdCpT^q?!?7&gMN6T6@V
z)jSHwg0LQYH5QfZ`pxqQw!naaae0?iT*HHA!OULYoeqKNaGdu#WtU;~RBA}vArT3z
zv<N?KrZ+{3ls)CKQxl>N3|oKg*_3hk#agq9`$O4gj&BLQZe>%0mfVLsuQi0Nw?s1p
z@Mdf65LG<3S{KTCcWz{3>)k0lb+TdCg8&)O1`L>6wu)Tm%ewF=Z=+73NEGFLsrO+@
zmtMUJo8ROC`ft->ai)kYuI-+?Nc+EDAHe;-kKBv@dN$H9DC#UzKr?@n<s*MSJ%pZj
z((k1)rZk&flOyj$H@Ezkr}nX6G0qgf<Ly<Mt&FLBc=);WMG`5}np_*qZKm}S(%z-#
z6bCpsv5?A+*#;KqAv7y31VWk)Vg*660nf^CE}hO%RZ-`i4XPpr-#y{_X-t0iL$8$E
zZ>EC-BNL*+s*uVcqMd&&Ge$GmL8BeI=~RHdhYbNvDMuTPhNX<|_viNYXY`PSJMrh8
zl;Uyu>A5H5D52*t$cLVp4~42nx#f;8Yr@oAV?tyvQ~47a5*SgDf8_ZwD~VEKbiwdj
z5;=v0Yr6Xa6w7&azu*72klj?Yy;6jf+XnRfyOg5$XrRZ;`DA~Pw63}b%U-MQbiWlI
zS%vS+!H4S(BDY%Jvx)N1qvI}W_mj~2PuO`hdfXfX=E`Xgy|0^ntG>=>v5?ytn>Mpk
zit_upZ}+b4t^R=x)&ALO?!JBU{XhF>A(+G01J7Zz=#|^ISjHYJ>nzVuHj(o2W24Ar
z?$&OvnzuLewe5fS*C~vKx2Hi#P5a&2>GoH>#FmQj{c*g1D0E#+Nc=8en~p2M6Z`id
zpS^|d;cTe2D6ON_LF1{6ec2XL62Pa8!{K~qZgCJw)NlKz#a-0qv<T?Xxi0uSY~643
z7t5!$--M^-V8fuDgNK;>bNu$G^DD0#Y+#xgRKs2BFsy$eV0>Oj+CQtf`fFA1{Rk5t
za)NP)0ivUBTEOg&4Q^XIokClHP`@Z$xa;D`p-Nmtn4tV)9yg*d%bzo?0%{FmXr8@~
zhf$p#vj}vYU8nEHRmV2J23{_mKK;NGA*6iSIVFvhanOdiWJS+<t$00Fq+)HG^z})P
zfL|r{Sipbilw1!m<c9|;w9Xph>rYy0=NZT)(006(mU0{y^t)-k$|kmd=xChj@b<`5
z^C3nVQUa2{uU^Z9v+q}L^)GN7L$%w}-gqLfK2Cv+A}7i|<`xTu%}5|bL(jPJew<uF
zm7)xPL|B!kLnP)IPpLID<Wa$hO$?iunetdhSh;^xZ%7#lmW0xUU*@=~&MkO{HcIgr
z`UD`1D4Jq%t5cPOrf^wKGVnjnP2?e^(qJ_>Va;KKe?tM#bQHp2E3JUQvN>OL0ee$3
ziZP9d5~a?}911TQnXeklZg>TI<q-x}EDr<McoEwV_(=a(@O^EY+X~JyTy<x9GCIRD
zoT`5g;k5r#y9~d$(_?Ej@5kmrf+CQIi0e^^N)(Iy;oeX9OL%+{u=L^ceEa+r-yiU1
zMT1{H8k!YWMf^8e2;9%`r>f3M9YM{;iXX?Sl$Zt5y+2_})`#jv(@usVoqN^0RlQq|
zr=!8MlYMV4k^5OT{=>iyYUfKjTVuTnEk%Es9Y<*em0z_CWBLo6YVOMKwdQ{0^j_^q
zQ;Lrt6oM(mD5-PDD=$i~Qn!nAvq}VJ#Qotokh3c!T2NTarA2pt^%9S=2NT(U6TLdu
zECt+yw}PbN@`sas5NCnC96&R+pl}+zZk^(5FOXOnJ)EiK*IP9oJwfjho-BTIFx7v;
zzlvvUwekLVsYc804~v<4th9PnUiEVy?36W`*7@Plc>7UQ_I%f&_TjMn=B{=J{6C7(
zHHW<6`Z~|2R%a*D)?6%luGX_*bl7Y38@y*zSQyKf=XY-7`8C!_A2sgJ;|VwqzU#TE
zymom`9Z;aIJ+<+<z;57t_XM`a-rRpe>SIssces7`1xF|^T+YwIALf#;)o|!A-hJ#{
zXQ=l*Z+{+t%#~a8zehX(4J$#`u`goM^Zx_5`1AAlvD~znHrs4Z(?5UT%<T_|nTTOw
zalWtNb{D$Z^?&OYOT53;fa`u&()yQ1JED*slF@wdmlorQr9xWwX8!jtn4f<TdSVa>
zkq~yZ;3uM*byXxn10_KgoH48u>ixYwFDaO+(XV6cXtpnv>rqu++sl!V^p|2=Vt2MB
zo7~jF6<yVFwoKMWz%63J{-=gVj6!_w%~j|)+jJJXlM5?}f&E;Yn=u*+ctfKdpH0pX
zHNa^Djs0T?mA@qcys&&W4iA4^r$Bo;47iXJKLBfY&B>DwDF#CrTOJM;QC*26z1?k6
zzGc13-#=kmiyr}js6n&j=p_=6JSP)hnk!P(9%zFz%UP3h@O<`h!t#miSj15l2*ghP
zuXvU}`2K8X&r?n}Vb|XmpnQ${twmKdcHpb?ck_KWd#24j8-YDDS?zz*&3#9)#)~}7
zqCYjmr>4zfzM+&+R9}^4QX&Alqc)b)&|HOV2*yo|G3xA@DEmht<@R2Is+YB2&F5SL
zcV2NF=uFX_04W4Jawa7c5tz8q_X(Xg>I-eGAN*DRz+riGf&5)1AQQ~Zrcc{gj`RO&
z?lSNoKd(E1H<|jm7&(7x<wX_Lfs!=EI!;e^)o9bq|KoFo(xP)?(D?+b2!&;<>KGL0
zyv-+EVZ&9qlwHhlW>^r4ONlvBp}T-`!<eMw=TK?3<|kll@sE?@8H30{l6lG)COW60
z8YU0OeKVZR=cQ0U9-*3Aj@CwO<+V+rX9c<(>>EcN8QIJBQ+I!rm#|WGUAU>;?wSV6
z?v2Z>Y}3>?=xEb8D@Al2$^YBUt!3}7k_Y-fby&FTl?+u75CDY!@iBlw3Cq8$GPR7-
zbp#Et?`O`BmDArqK!ij{9O#_c#7!zy2Bbovx<JLxss;(?7rEqiyS_kk*L3W@t#*$?
zX4B}t)ml64HP3$p$0y!pWco39u-{?vPY%Wxyq8gC1pM|NEbcP6|ErV()31xm#d)di
z^qVCcyYRsjBswATw}Y3^ToEVzU11rAlS13aT=L0CdSk3f&V%Hs4@RqkjnlRzdKVOm
zu&cAtSau*4pah{~$y91=eF~tWcUg2$R^TB6@`j66vs!<_D2%~dEVbmq@0F`sd>izn
zaJlTG5IK&~y+DT_<1fc_&FOf=x9?NDs8V2P54FoF=Y}IbQGbIWWs7GQWUq5+jFJX^
zQeWmw2zfQnCC^u29shMK27AVe8&tB`&Bx@G6ByHXTOV@!UmC?B{S=RH`T&SPcfU02
z^|cwR?QfbuB7ew#kQ4Fx9jbRd1`465U7Sj-MIVo*_!)<zX;`JU^ZjNO{dbwitgmqp
z%r~0W7Gx68fj~e6U6Cy3RYC_IHM4q7FQoE=;1ITuA^Lm<KP;!6ZTQs7%fk$MqTA_h
z&@s-%|4N7U@!k3=6rb$X8l@_B-eBe-M1P4pD$7xZK$2ntJW`jR4FeW`wrnE7Kyhc3
zl;J~?cF0<Nl9#;yJCbdKG6wQx?>j%c@NxZ*9gX*Gp!B{q7UVR`tc2QSNiBZmgpz%5
zD9<7ETBp?~5=DfJke?Ynr?rHHaU<b;8Qk0d#E=<GU#+G3E6L^m)`iM%edLZc*3YBL
zd+l>`s@m%?w09eAd?tT?YPx{Je3SR!C3T+DwAW3Ru)jUk1T{}fZ|A|^@|aQej@)$Q
z&)e<%-$AioF^ie#zmKH=I|c;|LI%W=7}63<2q-`n5Qs&93k3vVsKo(^0R&WnsKfSW
z&NA(>aQ(iAJG|9_gJ88b!GX0`^J2k%ig?X9)qo1scZphFbTJqXkbndT_5U`x!4E%N
z)!>)F4g)`bn>FVw4K~1Xd`RqWeE#*7I7!AAUhl762y*9yQ+Tsc!0e225y~nPoZe7U
z%;RKzrORNmk>`Iq@Wyp5|FkMq9AFU<Ay>TkF*yC|Km7kS|8kK(VwcSk{x|#vh(GX@
zNgm=e!g}h`;79ZvIDY}KO_uc({ioP&T@Kx^>R-lx_<vic51FeBcl(163;FKLY3F$h
zpYh(f`xE+zRtbKTJb!-}jh2qXA4d6fx%pp5jeZjvef#J=CDn#i9c>RiYJC+0i;Jl(
zwPraJLT6v9S^;b>rfx|<y+N<IOVV;}_x&P%?R_#BM8Z#`!S8d^S}bD3k_ji7Prtev
zdZ6Zit#Sz_QV9=hA4BBDHpVs>e-=cBbWR!1-_Fs%>AxS^ujBlm*Nt7K@h6AY*q;(9
zkuFar&bs_bx=r>UK_jZSRHH&@oR#m;p=arRjg2q=oho`)zdVWCrzi|b#DU3_ghO&r
zkNU$l$HQi_aLJ4y9GvUHv~s1tSe}doAq+ErqO3voJiXJ(0gYQK;euK5MNg%fty<>g
z$4Ob5c@7O5l(B2tx_AHi>Y>7G5v5q(i;*DPIwrK;YrIYFXEytc|G!Q^r)y4cMd9~*
zN%C&tdtW_td@dK6WvVO-ITW73snvO}N3agzg=azPY{F^yKWrZx7%*f}6c!RJ7{OtG
zBOt&5M3ELr78CK^G3fqPvPuEORVg+fbKY!BT0hob6WmVp{kye!(AxJFPu;ew52>y_
zugcT*r2;4P3cxkt$zlPEW^=&(cLjt<{gDg1WBSPO^pu#%QG1g$%}QJj9v^ew4=W=I
zPL7$q+J7IoFp-1a9Q*F)7iE6S@YwTz{1qykf2Ic5mxWl5(09$ln$x^yV4u&Uum4l~
z56JhI8Ukxk=TdZdSXqC6;b(i~;d7;N=Tvh-PdvZs!{uX*xv7Mnf=YWY$UW!qI$frU
zE+9a(C(+Rf3Cf10Cr0BrH~)w*koXi6)yjNgzQZ5GydZAtjq4&&a^B<81gxfiAa0g&
zw4_k5ytVUv<5>@RBrPNRpW}GzriSI;mpRtCw|rf2@U}G4y!h;xVfAO3=lXSqLN_MV
z1*3e5oiO3;aQ;>3V%HM;ulKoSK$e^cgCzI<n|_NVbDEFkUlVK@jbP9Wzn`x>9Vf9x
z{qE!oejw5($4S<1mJmTnJ8&g`NeQTwl{JjULvj5cmcKmK$$wH^tgIj~e{J!|VdwzR
zIT8%`sK`rKQQvlb9H^+P5fuI=RGp*o*`{iSt9t8x)8Sxwsy@`C%5=7H{(Y)hBavjX
zIoc8RFd(6r?gzz)VrjN2t2|efxZ~RdMB*gnB*&u0J_mQ9hg1Cz?s6}Gm#4v$CYx@u
zQ6cuR9_Or)A%|g*N0!R7#vF&0^>kNSvf6F7*fyBM)xg>2q*47PEX_5%B4sO)*kI3P
zr?^!!Z~Jk>&GPzhXSBWND^Gm!we7`0SE9{3B=$~;{-(q?DA5QIK`%e*U)Y*s@F{f0
z8aAQ{?gfJ<>;2#VSt4wIiMAE!ETvyuc~F!Obs$0Yn*G9e==VT>8wc^P`6vEM#G7Os
zZB?VWcug+mBTNwE5^;{{YLwpR)p<Wf`0M~5^XNU#LugOB2{v+ATmBthO>WINT@xb_
zO|{UPx1a7Rj#urNSsD4F-D(}Q%Z_i`=^FBEdwNG)cAl3Y>vhV1)&LNI9-smc11<nU
z07fXvX?4(=PJ<2pV7eO%z<NL>Wi&?V@v2Mg%LsC(WA(eLH6<vvmVSz*a0Qre4i!FY
z`rCuJAQ(Dg5P$&lZzzFHqKii_d^{_vSLyY#^_o5I;}~-B=a~Fn?$y6F<M=GOciMW-
zLHg`v(@K#h`!ETA0D|0O29_5r)I#f#&LxS{Q{PTiuaQ#NrE9XThM8-H?O_hbT|w6o
zx%;%=^YQ4mHDOo|FTa2T^R~S!ZD#u%eFThrR;XiE9=A~Unq*#tr5!XI{69MHQO{(S
z`0W47(){;n{2s>V;KqCeVBK7RTkm>?R!2j)0g@D!oh}f6W~*7@?N{Bm`|q@QnezXS
zr-Q@N4!gg-jDEA(;-HACPUik5C1>7RzjWS_3)|AcS^m33e!qjxlDGV<%a8pKKK7=(
zDX+#`j>+PA{Z$H0Julgc9!aI#{o47)T4X>G09NAn&*itfR<%SukxD*_ecn%{?Hr=@
zhY|=650ub<k}ydi^%PBhYoUD==vQiH%!G7yLHD(v4_DmOANWs#T3*gp4{XoWv*7*Y
zQTQ<~+fI11*d^b_75co|aZlwQ%P>Jd64Nr#^10{%)_z{6fCV`9uKa(==@WFU&F#~_
zSKdBKc_0lwl5#yox#hUms7>PRN%{2jYPxzKWbUVbLv8goCq0(G1BKX|VusFL!&u$v
z>p8h5S)F%rEpQeW!QtZJ<MWX|XN@<12Vte%<=^0cZ)5&m9`2=~qyM}Me2wH8t{ZKf
zv+ezVt`ba@4nh_{M2w6?BOrnbf!sDlkPu*t1VCad^WPuse11<DFyGwAx25nlYWjPx
zmF2pBwe&=Az*S1G2BP9oSxChjeS3)|&U(IhkHrqfuR;o9l0akyIWBO)|A&e@yFdCr
z)5Y|hWh}}cvF9lym7s9^3lC^gW{e(JIRgShOmN6{unNuu2Rsf&cryeW1$dbwj5uaz
zCSc#o%6YF6wl19>AlE0}(NIQG1b)il`-q}{@9~{8u*~B+v)2+q-$IMo`v1pE>TrI$
zWd!&it{OG_);^|9n%mK}K_uTj9t=9#_SzCy>RGk63F9{$I!nWW&$@T;Yg*}@5Z66&
zru;CJ=(QIpXc*F6MsTkqsWh}Vl8F;;5pp9*7m3z3N+Mig!dT9j-UMcw+ckxuK~PnH
zsk}<_H2pW7t{5UcZ$+Xw6fiBBtwuENS~kUayJ74kvpGuK7;(>enU<B-GNTBmyvnF!
zXGT29t=FepOv6C}B_Ru=qV?mZ+{Lxao`f<{G(@LT0~WFdpTdA;B@J_uB45BjJTUHB
zKN3#V`EBxrB}Sg>ZOrc*{kdt8PYoG=NWmoTQPPYEy3@d4JIg2JOUO+KS?xxq@0<1v
z$?P|_?k~i8y*tTXomv%qKYn9h2^<MTKM?`-y|j;*<V>Uw4aYitA{v8vY|jcWsSVO9
zmZ=_JQ<Iy}a24@M(wq_{ECzAb25VZ3jK3vDrYtO6s?))GAuVr=ZyFHRJl1G`gsa(N
z2uzhq2t7tk;Af@NI}y-l@>D?KI%ZN9x|}5h9H4z%^DkV%djjOR{afHEns|pF+TZWB
z>3)|RyE`muN8U717w8bH7uvN)n$xAT{!Rry%Ke{hOrZHr>wxn*T`I-*-S;bttA(ps
z>X=ne2%cZJz6ascR5vc*%r4`9Q5cGza+UD((g}#M6j<5gF>yMZMZxYJzYd~eX^k)#
z({#a|P1+{GqwK}&Ueey~uTfE|tNmruP?slwW?dz8RZ~+Uz?7Op@tMf(sL-X;_>z7v
zoBVzcuJzsfcuA5oy@7$Z>dzUt_`1CtG3@so71uX7Te4Q92D&Fi`8iR4Iw(_u8etDu
zmq%HIix5;4R0S3(6j%xiAh1wTK|w|@LTvE8pAX=^@}Cmd;$H@6;NImrjd*zM|6iya
z$ki9mL%ugQs4nesP?9d9KyngM)!+;SWqm2xwZ!qzjt@!xlHIfM>#+v39>$G~ym^Rr
z;T}1WK4Vj7(C@qpXA$jx{r_!`8>hPBanDsvsHYw7yRR3I7?sANu@zXNps*{aGsa;`
z`X$nmr9)~LHU-eEf*{2ru>=uSV#8J33D$dmGv;@4ZuQqZk0G6eLIH{R4g}EKX(paq
zC(q376&&UM;w5lpxlBk27h@wOj#5q~#TJ*>b%3!)p(-rz#5(zZG|nI(A{=Z60iFWl
z$zX+}YFf$OW9aKli6Mr@tPo-;*1lKE&P9dEW?3js#h5o2{e2`%2*}?1Np92w<8u&A
z6^k>|Yw7{bt)@}%%SZ-=y$s9FC+K<l+gzkeix8J$3pgiPSORcx&9dW+Z@Z2l(v`*J
zq?c-+E&ZB49?ZOdu8^8!klK{-k|#P}aT&-7GI@=skoV}pd#It$Ev%oIy`oRQ-6y_|
z^Qq2nqbQ?28+#~@GxI9(ZqodZ4e$}tq7WFmqZa&%|Kk^%VNJkh5<sMI?;r5IR0sIx
z@D6ITR9KS1Xt`y7HsWqq#ds9As1@#{BLhOu9hJmYBLX;oLK&v!kFeEDSxa_Jp<n2B
ziT+p9zNz;6fBAO$?XUGe`_H{L{Aph(ew*E}-3_op%m5Gt00CZ7RelXwdk{P`Lt3re
z^{Z%*UusU^GAzRejaOKvH}BZ5@Sl!nX_{!s=6;Bk$Lx6hRlSQfEK_Ze8tR+oB~xHW
z$96u{zyy<jMUp{)XXxB}Np_jVIE+{_#*F0mje+)Z$+e<evqK6RDVT6sCfb-HAy-UT
zV74qRrWIPY)=}-Wt2DGU9aP41B|@dylK`e|S+5#QXEp^bnZlS-L>oyAlF}pu($5YS
zqbJ4lOYQIQ*yKYZv5ajov9`qQz(Yoo=U>KhdEC8!<13$jgA-BAXk>m@@$|Yb8*F_m
zJ;zVL>hJf<9wv98?+)toy6xB1!y{HOy(k0M5tN$T@riWai^b;cS<BYgv95rIq~YGP
z+)jPt4O5d%H0(l$joH9qB5|yB@tFu}pfDscpH?Iy*CW9J^$M}HE<fUM6a;lF9?gz3
zp}$UlMb7>If&MRfBaP9u{n7o4iYV9*P^tDh%+L1_UxtPCiy6$MDIR#Kjw6_yc}8Xd
zxaon&dlGdx6BDIF`P!U#g8&N_<i~oCtsD4Ic-khUF~56yUDjr7iPImVHEvy;964f&
zR?j=FuaWf9x8ZtA$n+%Nn6y9<5T889zA8vhE0*KDqIT{-?!&asNa#CrWQ3@kt>7sm
zx9Dy|NW2U=fh95|f&cs79qG@v=uwl}<V4Q+E)^6D3$C1nWWvBwZpkJE)&MX?6MB!U
zdq%*Qt{npyf4`CHtK4<>I36B407t7En!ecNAoFhBo@d6Mrmhd!#jbT^PIC#D*eY#Q
zW^su$O8L|c0iQ9Yn;8ud*vM;570O`=mL7eE5W^;+Fvux1w<!wEZke%QEYS+hfU6=3
ztYDyt5m+&RvI`iC79$`kkVYs1!4MdPSh6UqBv>lQe=LfsC@cj55-19)h(uU`qA@{1
zV5q_@g=AOGH2AQo)W<q!y(o)P85E(*z2rSLewU^02fe+K-t+Br{T^?D-TDUp3!03L
zrQ*JCYRd&@P9FWkbf+MIfQbqH$&`i?bu3960iP-YKoA=iAh5uZRUY2c#6Ao759~hm
zCZ=}{e?@~5-|@g%F~z?OJShOOC)akT5cK6n+*~b@S&v7Yu34PIveKh2x=>}si*m*y
zfs>x4aLlBNr3TR}UAnoOpZhV5bhBd0Uiq~a-c_v0it&0Yb_aq`0yJ`{##%X0AkAq5
zsGejm8qcF+Y1M1!{(i14tEX<rI{atRC^5oLe;Rr}MN06|W>{B1P>2emtkJ9%MMf$q
z@HL!_o{{Aawj7~U6<COfVGM|EOx@gT(tx3yS*eCmRwyWmfgy2M2xSW0Db~1p*IHmp
zzhO3J>_I@ln^r2tQXs1t5k)~1QBg$^5LhV$K|x@kqQw>{h@=!%kVK0himHI1#EK&n
ze-TkuEQ1hHWKl&#fU6XO#8n1C5(^ZHK^(Et=)+cXgM3HB*}&n;4L9`01cnBxYc#!!
zk&`*0zL;JM4cC1IF|Og-frx^POrf_lH9M$?qY+pjqJlA07^(=P6_HhBL>4Fu1yMjz
zWK{uRsG<x(MT!v>7C}iAilV_nA`1jme}JS_AhUCXA5XJ+<T|!?^FHI=g<o(;!+906
z+ToqAt=>Yn0-HxZL;?f|q$lLuoLui}(@VW+qDBg;0<uO#6=FbRLqm2-rv;eDv6W5O
z8erdXcG21+q_uHHcn=CVAc+PD%*c`yL<4(@YJ>aBd4Rqx(%PS<0Oy-*VjEfIf4w~h
z%snP-H$zl0j2k|#ehy(}UhZ(`lT4_PVm!HJO`*W>iNP<_WWOF>B;$Jm3%lAv<|is{
zVuN!svQC2ZS&jdD>(aVxVD%k-ttVE&h{|Mj8qd@>^GQY8EFv>m&#pyXM*YNe{yzH$
zR_$emBco+4mKLfD>z1OYRGL+le+}B-_%0n*kvG&plY&6Ze##p>wT9iC?4c)0TIA(&
zwo#iBx*Bw+2?|gWh=7O`pjop|)}N=3XuDs=+2P#y*9-kDvDeWK;H_M_<#CP>7=zH#
zWb7UVC-p=Y1U7ieFcX_9v+OHCLC{n%w~TAWah;D+3KR$LV0R(vwZ5!8e;$`ZWLTWa
zNYsH>tnrk-KQ6z(aA0;}u#!;H3C_Grh2r`Kf_J0I>$HG7kvqr(=~nF12L(+Jr*-`o
zr<Vsmx3y75BZ?qQfmRPNKq@wRVsE09o`9;yd%Mkg9<Q0%VqG@x0PrWsN*X5%ty7dp
zl<?gnh^C3N0BZdtH^BU0f3LgC$vB|v=}A0oeBu^F`L$+lurPWg)-|Y4NW-Vu5S$F`
z=f0y!0UDm&OA@6yj}zhjo}Ugz&!k$75tI?5T4w~1!kfi^reR{`+HE$Jk=F7${+DA$
zxRX)2nz{wKE_o&H_?B<^Pav<gvg^ae5O<uFTPLJHxvkI|vV!${fA;DV^z>b*hyo%c
z>zrsT?S(o1wzv@!3Cr5B%Po1_8MCBtnjs;Tl0RyvTy~QiUc>}SBN9k{keo)9Sy1o~
z{HW~27RMpLfflIWwTLP#$0);FQlB?ztl~w1u<8&gDFQ7EFyg+npe6ZHCYI?@R~<v{
zk_UqDu!UI9kGT0Ae@n5Y3;P^<t2h`LB(v`bUJj2)lh97c@m3V5qhc*Q3=Ue03>66-
zWH8Ymq5e%DjhWFiNO-;=VFgkKT#ZurXx5@dmK{r$SdFU4$L5{Ly+cZ=Vl)?mWaBxb
zDJV;Ju)RfOz_8y)v`w2w0zzGV$Sc#+;B#os!fmAFA~GVVf6hz9V5GtMKGibK2wQ-x
zTD6+A=Na8RCr!gpn4AKAF_!3r6o7*NqT!*SX{eYELIgx9+oxGELa(yB*tDFPD*T*1
z_d&?4W4|ftQwwn;ss2p?#Hz)Q2(K+Ys(kOmnQ754{`-lLAgL~MetN$TjI}oL*{Eib
zg|1F8Fd})8f2eCMhb5ETNb0x{d)JojKcv?T5y{LOcjC4VxJb6=oHpWaXv##FQHyXp
z<L|Mc&nRaTg13FhT{cmRzNu;TcvD-qb8$(}1swYsfQ+2Vkcl9Q0rFD-`gJhtd^$eT
zsLcDh5)m+gklY!-x1T)69!jfRK_FUOOfvMzGIOj!e<z_r3Qj#Iwj}Nv_;m5sB>!vd
z^??MQzLwAC$V5R|C==DvpXNP>2o?R$1Ki^arDx^fIodiV&_~gqsV{+C61K-Lz{9Rj
z?J*n-NGvHJPjP|I`a?@Oo00<*WP=YMFaqT%{Y<?)LKHKI+szI}wp}b}$CsQJbL6(o
z6gl1_f9U*g!FBdm{I`O5ZO3;BD<itY97tbv^p5$>_tTjZ(~DjO=J}~3&jm_EXuO~3
zA^ARZ^f=echZ1~_#oys0mU+57iX&In;7JJY;C_|*TpXP8<-7xr$-gA;VKRvtVt0=7
zU24iw=semt{>mNW>&Tv!lI~JnI&P-9UN1edf78RiHP5|utm_VnrEIQca1fA#&PkHR
zT%+q-^(?&BxZLSZN{s7Bat*Vb>5{fqq>Lo15`*g)bzG(;h>)o{CrqvXr>bW95`6Qi
zmMfnN_eUJ5m6x|#QJd?wh|VzdkA`1Hls(+bN8}v691?KN=h&jC){K{sDJdXA3q^OV
ze_V?yVNI`5VX(=|qSY{Q*>G9o0iHZD5h)k`IjQ30yPmV9E*f%tzL9IsXU?fs@~njD
zIa+xW{%J+Zbf(qRfph1I#e}&Cq##c-adtQ_==bQ_Ho_UvWC>N(5?~$oSlwGqJkv4E
z<PlU(pK7Q}E7vtiLO;ecQr6#yahNooe+@RRdwS?<*t9ZpK%$>nf=5#Q?_E`MuG7yt
zhYKAs{9L$N@LF9RtA?DrJb1E!C1c4tbtIgShzrRy>QrL7j9+lM0<<!;hAv-s*eFZW
zJoT1Olr-nR85L@&j)@XkcykEWxp03erS<vmwxKugOn_5MJhee}+W^P6b4~;jfAtiH
zGaSjS!4Ng%rtzNXLmeZhg=k=S*Eo)tm%-~O6g(1#UXPBn_~#s<-3|_V1U@93Ypb~u
zQP$`m<q)!9oyvo1*M6UKBB@RCQjfAicd-HF4#Qyq6q*QPn*|KDtb>e&V3tU<?u>3-
zw6G$?%{pme(SlcsC_GGGvN{+>f45qNSv(S^8!OJ9G=}ZgVb-v)k0dT8?vkiM0~DiF
z+}eNJFQrMk5Y-^rM9gQSuWG$0FJv*dHy4eJ#l1XNV`51|C_v-Xaug;x(|(hq=RH+f
z2R+2<0mLL24KVnfK1uW?dt+GXnsnLBsJ^M;L2qui&}CM>%;vPlKY`_`e<uIpRSSl#
ziXfxLbrCbs!FI~i0^=jaI@I&WT}B}rZw!Zd2z0!?e2INK=MuEkYZ^r4CC7<)R33xA
z4oT4TAfWXsa)<F+8QvV9aJ{j8GW$L>#U0V`Gi?vM_Wwh3<-HfDcbpgq{MVjFJcb6X
zAbQSyHFo?dQ?UE-x5vvSe~x)cN9u%r*TI5rZf#j}Xu*9$J<m@8<{k?V>DpNFcO6u^
zYK=}$EhFCd^?6C620##A&DC-6IgV+GsjOCI0s&hVqaf_e?jht3=&c`523~Qz{b-WM
z*RRM8Q$jV~msnr5LhCWUThnVjmNj4M{p&srakPFLU+n&~RA9pOf7{ZKJ#M8SQfNw{
zD2m*DYFqJ{P551T7}K2w&x|N~zsQ?&PErsuF>~w2$FeEKgN4s*In8wIRzI%Bo}K-x
zO?)St_R4srxfu7u8~ApZ(+XHlRcYR}0#YVPH4~ymqfG->ieu~&W$_h{FkVx3tiIIx
z4#fH|e=VCkqok~jf6HRb9sMNWXx%ea5Yu>SO{5ZoYMjk&MohQj&geNQQ4s9iixG*x
zo&&}@Y~T2jkBtN{%zbpDhQlj)AA3$?_Oq3Gkpkb#`aGRJ-aNp5N{TVCUInXx&MzJt
zV<r}bZzhK_=oCs}48WFjTzsd`@q>@p(~!>ZU51J6*@v!ue^U@(vLdk%ZK0;y2GM$9
zRi2Na?Q<pCYAjJ>ab>#&n-{5}(?q*276`$c=L-XAyvCH`pL%{@8Ois0W3PXK$D8A!
z)VyoOrm}=DHBNbm2DOY;K+ZQUsbLU_fjDI@Ps!iE1e<~xigeU4AUaGG%*Gw7oQ21z
z!b(uq*65{#f8cheO4iv7uPx?xs6r5!lV(#CFTpb|iG-@X8R@24Q=r;XYD80A0SHM^
z1A~QPRbin^q)kdvQj{SA7FKAXQIXAj8laG<L^aAHCR;0uLxG+dmRBjoh|9m`d>;d<
z!q_?+8xXz{oTg(m-rTuz@Yp$|)w1zjNyK&~R&diS6Dz5UFq$}L4-`{OX@f^~3@b8#
zmpdy1M*-`XgDV3k0UejCD+5{r&3BgvECa}Y)#(pdvE>*TI#7-`d~}L}Z&DWni2?~Y
z$`E4lb$EDneD8>ZT$Y)wA1jduqC-<2Z))_%ORcN#Zb5UtRi2+-Or#_#OaOWZB;-bA
z6nbTP1kr|>pk+9j8&UtiC$r9$hg!{X11_`;sf5O8jdPniq%=i0of$fJR=ZV$ruMym
zG~ZERqY*|Riz13Dj1_{x7)4M~86v@8uvjSt77C!Siv@>5(TXVrixCxKskYEjNwp3H
z>G+(EfA)KyGpB^_b@*PVNO+&w-(#9u7Jc*B=0;n>cBJNaGoH^~$oCwTnv~xIe}N_r
z_BD=CQ<7G5mDm60khpvH!3`2ace^Bi0+Qlli)eYRpeX8UBx>+ABuOJDqmJYvs`$@?
z)Jrr{m-mygF<oEALJo-YzH<#6xA?m6H<KI!oTA~DFP`5upL(Afqv|DgMNQ_21wM<(
zN67K}Pj@nt|MCL|-yvgf{k1xxsYWr0<Cl5Mpa->b)3JF$6lo7F(tcXMz0xj!HdQ)c
zOpYbR7kctMftjB;Jxute9-6M04~bNt&#NCGVO<idVtP@8dG@Q13L+?*@W=svSn3R6
z(?JdK{yJT3;C$<bnbBxRLiR3>b<+7cnz#I#Iw}sXT_1&eJu3S9EJi=f_D}xudJG<O
z6x8ba>Sa;?XD3hT&t0mG{dk6d@*h7aO@Wrt4Yn|E%wO33-CidxsnGAXyKIQ^+rG<&
zd;Tpoddy5k0Z|qrjOm-nzt+PCE4?l}yJSFDuu7+b*sNcO*R`~J_U*PN-VQ!(T`P!b
z+-4G#m)>VBsLczodYA%nU;sJ!c~u>?lQpWSwP}>8yXs76aex^qX@m}cGJ_drc+6B6
zk$Bos9CMT_baQvHnn2irZ6;nKVHUIr9Dh5SiNGQZN>uWt^b<~)#Dl`+PD@BoxIP!r
z8{Iu^i3=|ONaeK67gUKw2t!wnp&b#xSh)JguB-X#ELa56bDOK-*~wL=BQ8-w-7n8M
z1Hd*NY-c3n>^hSHnzWyPrG2GGgYPV&a=^Ir4!gt0tVkyX1wt4KxOtPT38<#i*S%=u
z#w7CRFXhbZdWud(pVaT}y8Is@xVN^kVQJt0ZasvGnAltNo9P>;=qZ7)h8<Xi8P@UE
zyjqtWi}z5Zvh2~bod4_C)Sbu^#lT4ITXkDwJPal-W}M{O;)f!Cn54PzOX3;JqL}vc
z@r!2+aDXuv)C&+j6p9f7&4x1E)b;`i9-P~%P5Hrs%4}OLjL*sEStO{p-BW?etmaI<
zIScyCm$`Chk`jw}n<uu;q`AhO-x4|2Q{^a@U!;t-8fLFyRm*obsakQdrpC^8AU}iL
z4s$$OzIjm*8(6r1h;6HB&7~VKkT@%gRw^RZ8WMo;v77~uT4QwNBo16WH-?5v)+x+e
zIS@CK!-y~(NaB<o$KW<!L1q+Fb;PJBd`Tn5-N`Sna(RwesN~WBNU1GWUSG*GnY!)f
zNkS{>f^~2cjuWJ;6$`-i<N`3ppR)FIKi*17nf{ExFy;M!hCTBQ!LC9pKSUe*eWE>_
z!buE)ObQ6xI5^gTIiF=7Yh?#S#FGC8fIlB^2?=WkAiD@wx<waqbsUy3NDl%&vd$P2
zfCHy5U9DwhQKeLk_0nfSa#XG3cJo6k8IU`Q-z;opfk%k!&A6eO90-LhSeJj6EXdrk
zdIMS3Nf;o1#Fo6KK49Q|5C;(e;ftFLhqBgqBa7FVnEK&kge<}iLw44bGqnw^waK!<
zQkOBw0!zeOH-!rK2`4)G{H^G;T1y>@!8>QH*zTdeEJE`8SRx=YCmmI}m2@1M?j5a@
z!h)wxs>RJmSXiip2yG_Vn8)3E3hdprO3C}be_d#Q&>4mR>-FCmLXupxh$8H}a7FW+
z>bN|<ZcEJ~CMsZ$rPc@Mt6p@5WEl0OwQ!b6Y#i<)xUWT$sN5)~r^N(XpkA-_?xHj;
z6R!ww?d1p@YETiv{_Vf$3u(mGTcF*^aY;mR=1>+<D4|KwmRO`ZEP9QI0MjUwTqg(!
zoj3M>Gp1_V2wE$f!nN?f8LwCO>)Cs*EN`a<#%0FnE-4Gfi#zKV8r&=;q2<Fbju{1;
zz7ZrGCodAK1&Ff_$E`q6pSB)M2l#aNclyT%Uy4438x-dQ5tFjqtdlS-kqb|%^?q4a
zfeUfL_2DXyp=+3PVG5^sHPV*7uq-HrbKqBh+Tg9vzFxZf&XR06*Ar#`UN`6p<)OuD
z#P|&ls$0`Jne)B5M#?8_3nXmOw5&5b_%rnaOAzL?7*<yr5U2ql271A41(LpaN$pqt
zkHzaOx4H9mF<WVqtUO3lcQJ(v4}TWlWj|VFA{DKS#p1rCmONyY^O<hcQD^bGXr~x|
z8%GK6&fMrJy~VM6^jlXBJ9B3kw{2ZB{ie3rip{oiT3lz9r)W$!y&o0~r;&KLL4@5Y
zXT*dsh=f0XU6a#TvkK0y{%tbNRVoB{RUXR!pVw1g!z^94&X+)}Jr<((aPfxe^b4!o
zZk}=9r>qbjc9-ju1OP}R9@qC;mEXmGkjrDKZI0=3oYb1dgtcC0iD+dO-d)T<8K^XR
z8ySjv0z-%gfPf}wGqGmcCFGkUCJ*g6NZ0jSE8~lI*NFE3+KtG9da{DFN&+BqVxn*>
zFFOFf++WawL)k~|TV%02sF-=*$`?NkslU5&qsw2^&KFOhG&0sNp#9EU$`s6hYmJV4
zbP&Qr0t!GxgC@fSx?WR6v}BJOi6KA=bZD0ciqce8nhZvfm`PYWDo&kXafemhv0`5i
zb}!5k)tXHdt%an6^zQacwh^w3*}Cma66JGl$=K38`F$Pvj$2;_x%r6c%j7?|{>x+1
zM+=0uhyO~zjNF0a!ry>u*4^cQPU+~IpjvEuGA@S-(2VUnT_Fu0SlSHNM~@XtCO7*y
zES2E4aoV}w+_??iDlyB7;MRtYfPpSu84RdFLPvEM4Gs0@p^?sqFi65cGfP({St{n3
zQb3XtRaNZxf1Bq&ZU3h9I(Yh{=zpc@^Z6Y2`7($RNJJnC25liF@MZ{qenz((_o}D-
zb@{<0(#?xg#HCpb)r}f?5AXTwJDW7!&=K`H{yKag6aO1tc`Ip9K6}kRDm&X(1Z|7}
zOb>@I&)XXpSXw!&IpuS%k{tF2my9G*b@D9W!46C9MrqX;7iOn`I*35NTHX<Kh{T+b
z1eftH!OtQJM`Grr#9kzSHdLf~69>l*iNcGIfa{U>4wzv361xxxY`q@(5H6BPkLoXq
z*6m^w_?Pw3+fehO_IrEkxROZsjfazSwsL&G79D)i3&azJgRQtjWFbE@>p8-s()41a
z1>)>`LKw>D2$QEL0Km~<W_6z`N?4K1t*oPR$3&!AbHwS7bi|>5h+-WGFU#i+FXp3P
z=;G7xzHBa`n$~MBxVFQigP)LN@_jV09fpzFzwKh+aXI@lUa6mpu=!g))_^DGAz?Mm
zYa{=8DJz@$7pB}tkzuNThiiUL=;N$n{7rVOU#9=Ck^S~QpHKfb>7e1pGYFJ%`sgh*
zcQi-2U>Z|*+2-bd(0m7az~Ca8d{5uLr5l!gO8PkjHQRNNZFan@aQNO%IUrZq1L=H7
z5vRqD=)Ls%?xo=0uGBCR*z&?(R|@jDnpD}}Z85`^+N%vnCsKn$kqqr)K`uGPRRzs`
zL&b&hcR_IZF<V+#r<SwiJ)Vx&sBv|ehb;;~qLDnyCJ=yslX@VStESk25I{T2;%1jb
zEAq^5F&CV4=!M5loZX{DNQY4z;>dAS=&gBeT-En4Lu!oS1>G#fld$C@1R|OoWiGUB
zU|`KkBMZ`;4QoRvzKhC|DHqyy)nmyOxY(CU5Ox&trLT-$PYN?$0?H!nj=^mW^F_%Q
z-<{&ZOfb$`ATF%D5eHC53-H#hk|SQcS`D=2F}akT(%`;~)XjEgoWV@eO>IifK{+pz
z-UKCw1r{_rP3oy*k$0AnFy<i$wPeK#kcV3JhuLlk!8+KRB)XV~)W<S)HJF!=I0Hw2
z;U?G}?EQYcfY<$o{IkU(b|dea+-kI=f)7><G&vw(!el{&0%tbF<O(Vh%O+z0Iv!@c
z1eFGmY=k3)C`^l8%bHRXB?AlJfMMw!8h{W4+R#T?wn*_C3!P1^9lj$ySe)K#yRpZ1
zb?S;EoOZplyLuJ0-lbAO#+!GtZig*@*0@7(p~e)T!h%1t3cQucdiAaekuQr9C7{Gt
zT&ZD66Gcg}lBMt|={^*(#YNZKWF({}F<Y1>a&Q$B2oPLpZR1kfZ6Z{HnF?Pg7knX&
zkqUI>uDrYBudk<g*mR7Ya7Nb28!Y1kmU}&nPMp~5;=>r6kYK*(Sic;+Z=^JTMPW8~
zHEDb;va~8zilWJbV5PJ|CMG)+!di+mws~bX;Zdz2JVrJgg=OcO43Zs*D`R8A+dX3)
zKnj#BNWl!z&O+l>D%5)n0?5J;?F0@aTT<dNQ`H#QMupuDx03QOZwdhiQjVa586A^0
z*L|4eFoHX2*RF+#mZ^chFPfWw#u5w*lt~(J>0oJ&GWbo{*7_|dYU>oH;1RLGViR|6
z*U{YE-sKA7nbH*)&?TzocD|W0j0~QL+dD9@s~Rye!l98SOVL^s79fIk!+5%KKwOOx
z7{;U<%;FSAh7Ssx&1VygX_&r(sw)sA9F){4E~S#b3VIzX5aKqGwAgij>-}GEyX@*2
z@|lCh%Ka649kIz#ay~CJfz{4Vm)^7fuWWzY;P_wN_&KRwLJJH9{;ZvmAsvea#bQgJ
zV`rHD7&ra%2>tq+Iv+z|wWPz5#<Z@D9!ZiG)2R#(YeB=fA#Y$CCZI;)43Wu7i*?Q=
z5+ptZFPFT@ws57Jdb#3%&ISCiNVt<VOp^||uHu0&_vB`C6>IZ9AO2IN{k#7oKjTk}
zo9!}b$oLQxXksrNE>nlf)n(;kV|xvKz0FEKSG9y9>s}(F$ESiDW10en17m32ciGnZ
zuRrH(oDIFcHR6<ZeLqV_HIcyTEBe%%*=e7FJxQYU-c*`$tBA3e&pQJne-`;1ko>?w
z7U2(y3+@D^r;VZbzu?cP9F)*V-3B-avHgaCPmVH#sPvyb&n+PiwX|V(kToNUQvN^X
zQb&mOH$;8q8BRy*E${mKans=cL#49>vTcj8`b>|>w>X@>YqbB{l2WKHAz>R2+P*xa
zrcGA&$~^PKb|HmKd4@=!PEis(mOncIn-Tavp3n9@9$$;anz23^^Y411HC>D$vP6r1
zES-rtys8CBG55WO2BlGNr}xq27Y3|?0c?`UAc%)6+8rB@fv4epyVu~CzdQpQf0Q;(
zZa^#>(YqYMefkSGTW`?DbvTiWcRQJabW&nDt!J)PpokDJ3&;Mgtvr+g&!xV)e>Wm2
z-1;8XFTH|bzUL$D^LBo%RShP_(=dKaf<t!u`t|xAlnH-o+CTEHJ!#uw-S_g>{*71I
zA*@bx6cTM%I6}91Sss7<=3Swae=Sx*j%+k7=f5{83Ek=nw6IA&CTxMZzDBUCic13H
zYHvBc*jNxljwOH+i3EZxGn+%Z8X#kROU(bdn!kgIUunOt!C%aG<$w2bbWDFU+*px|
z)zc)?VuSJ$s36vgK5-}`7^tYvXKH;*gP6Yry@zcszJ5d4%+(!r9ZQ(sf62mw3T`=B
za;%X24=M8N;@Yi>19Cgjcfmp!Hv>02TbDXSS=%(QXG1(^1zFSyiZ*idj)^zOYlt1J
zJ6D8*JuG??0vc&QiJKQPPH~vjKF|2k{mDpuEXq`mFi4!quol<UKAz4s-0Z#lwyR(3
zz}%D~(0}^KaqjJr%P-l#e<`B|-Ij&8t?EqL5+(>;>)0a$#;~bo$`&;-W(5McK;xU?
zT=U7OFj@5P<M30;GY|UgcpdS5#QKg2@gf$c%?RPEXRy?y>z&1z7BDCSa$?PiD`H2?
zUIf7bR4Pod>S)SvPq-G%3K_u%(S9GBXC7TUmnCn%nd{w)xjlrYf39alnT7svD~&gy
z*hOCoKK9lswT~kXoU7Zh1;n@=vUrs;3D&Xao3%eqCJI$cUXFV+re(1ENadci$hVs%
z<wQTQyRAus{Sml=%i9r^1kAFbQY4O}8a{10-l18RMy{~rx19Y5Kc-xF9H1OQ(tCLc
zb<YJJECJ^duwz^ce*<<aHPr0$CxT7|V@IGd77K8d{(Qw58sSKWsj)%Rq6?l2=;s%4
z;;kNZtVcni#Lfsaoj4dBK6}fvXY2m-B#1<mHA19L0SU2H?kT}uE%AYCBNO93$EL}Y
zfO{I|x&tnO60bLTP9j%AhLIA6OT{t0IESh$FC%w`2k?U-2M$QzMMRTWm)k!BD}T!q
z@!omjg}7OQKn#pa5S$_=5jy*UJA}qnl>VZ@H*+h9hGkxoEp`L?DPPVqV5jWdoIB0^
zGyA3wkDns_m$~gBxC)4@QArjkqKgy-1t2{IgsT`aRzA*zqZlxY1&}bDgaToNAgGHX
z>5Fid$ysOie8=79ei84#ANqZ-7k_d|HIRtN#xWQpz`zPBqX9S=0HhWK3k0qxfG+j2
zkkEBom_Dz;IXy>zLQBN40$j!ky7-hMNBwcJemBm@sTR{|WG0UZ3>d_MN5K9PKkb4z
z|BnIy%;R|*jP0+qn+_R`zlk>U2UTmdvxaQWCv(##;AGxg>o|9bbzU}`_<t*HjvF;R
z{Wpo_yjH!3_C~mV?mFw=Pk}x6UwqsQO}EjMBy>#r|B;Zx<32zLKoWm>1p>a7xFnG1
zn8AM=4))>8JE4$Q-tQlRVY(g7<h~ILMv|LcaCj_7I5SYurud%AtD>HQIv1+d({ig;
zrb21{{z|DI#q`Fy4bjxK4>hT`T*M_dG&Wk&)pq?|9cb%Lrp+5{n8EC;oT1K09BwMh
z;5?>`Vv*t)tK*LKX*8nW>nmfIxIqIn1>w2#Q}vheK?6X4Os!BZWLq76xL3*X4G`?p
zSrP@uwiq~`R{7I8*h&f<1fe=Vk<r)!qy<);puN7fx15JzUVX7DzRv<lJ$O}J)H|8P
zR-8ynGt$Orjj4ycyIo>ZRHirOaTe)JH2k0bEWQ`e`d&X~3n_`@Lw!N);GJnzc`;8d
zs*Lh%#fxfxWsWJx3cSx%`=U!KQMabI3%ag{?=QQ1RFccdjIdiw;){6XqV~4KMz>x0
zBj9i4lb3FsCTiw%>_UD)pf`kx7`0;XYehl?9xOM%zmwWfhkPws#0aoTiC3KYMiRMH
zKouf*7mX+~TB%VajxI2h2=Oug$I#{?howPMR$niFT?2(DCyLrF@Go6kr53VONsXow
zO&~pGHCF8D%!_BnZFDAVeLa5r9qCrVLJx0vF6x_6q>vQQcLdHBl?smYmRMC?%VT<0
zV1?(y8;@;IH^`xewWLeqw<%o(77oWd!)JV*xjXG`o{P50>?b2}O#fu*_TQ30&cEwr
zO=rG;cTavz(f%dRdKAgcb6+=IJYnyE+JVVo+t0S0Af1nHe1|Ud`<?yd%J@D)HNj3&
z!sy<w*Qx4D7NIin&rgvhkv=bEKjI98>_bU~%Mhh8LH?rqKZJe>sf&$E)cmzip)=Ux
zOf64Q<qr|ZxGlbcf1t41kk0YdzuLzic^BGYRoP|uGLTF>EkONjQj%lv6PsQa`U)M^
zDbY-Zgg=_kSVTFVf^Yv`?J+hN7)17_S`(6EOC^hVD^rK?-a~Oe$dl6L%nx*fCCX@B
zs-+=o_g;l^V%nO4SazL`wQ~N2AeWCs15$sc4=cwd;vdXFc{1B=i<_@^e|u47HlwB`
zus@X{o#i7_1`dh)iMMlRrNH=<`|kx$X%QiYW=J8>9$eq)+1`^kAKMtbnW7SdGZP}g
zKSYiPcy|z}i)_#HN(jnC8IVE|qXv3y#WVGAq_`y?;FZZgc&`#fl+cpU8c3m6*wBBC
za`V3lDqI(=)43srXe8&H-GSSOpVxpG1ze}8_}LYVZ;SLhpYzK{wbu8R3|I*3KxK+%
z-zFuyZ>gb<fVIuuX$i5qj>9`|M^KdXiboAQWQ)b5L`5XTMigm61;{{?$xujX4v|1D
zXDOSUhB;h}tz-<yF>ICZ5~-K4JNbXC{z<OB`p8sN^+#;wB~=8R;KDY|VWh2I*pqaw
zHK^Pcl9Ct>la4|=*U7ehBr%1}y$3Es7n*t@se#9%pm5D|4Qbwl;U*dOEfjfH^a)+g
zE_Zmk^=npU&{%L>U?4PkWZDW-pL!rqB|sUD-h>3fK#Ub;)tN;C3nR3K&5(b}lIt2m
z1!*D<Ocx=MmXY@|GSqZwu48((xB(MlPP$Wq)G#jPL}v8ku{MggaYc}JEAe%D#*Pc3
zh`H4^VG3e)r?n@Fh-yp00;D0AHe`ZC5D_TRX&^xdr6Ngjh*Ywv)*H7oa>zVY7ulf|
z((UwewfbF6+T5;8{G!Yc4<LWoD8W4l(WD%>b}(0!WpaX&F~&Iwa4;F(Z4&mh@0cA1
zZ4wBaQc8k2sO8x++1=T#E_Uxezv#a-pf)EzEMlS(avL`_-jD5@HjKLZy4NL%(!(7D
zs+YBNMVVT%vj7j`W=Cs^tLag*9yM`PdkgRLx~=0^JANl^g(a(JTjYOR818&s>%0#<
zO)xZw5Ll%kQ9U@I)H3@=bAa&?9$=NFmC&>-RD$GzU&Xm*T_3f-&wCLD!CnMQx!ie8
zBjM|1!~Mt`&Y(2TY(qgs2DPcTL_|6$#pyPA`Hf&Yi&?6bDXk{l;JLu0!WA+_q98Gn
zETp4hd$R3CJLT49Z&iO>a|ZMEX32#>1nuFNCm>NSbd4$}fH2yAOli~-cEaRAu;$<c
zz`k?#VLhYayl(JME^(*dwDyxY#?#sr-|>Am2_KIzLnLGkAhpa2?77u0QK5%2C}Gnq
zbynVoxA0)oqx}f6yA>9#WHR8Q##^gnFJ6K8^8Y_-XqmYsDM^3$ika!r-X;~d*J)zK
zbXBD;wk6YG%`|Y@OkLMZl=`H*?qB|P%BRM>vr7!wCinK+x|Q}_Yn7gVnz^3qSnfYN
z4db@SV=&uBir-qNot%VN!~G3<l~n9|_O`jsNlf|Y(hZhfM;h53Tp4vSSuI<dT9Vs2
zXfzbpu+Kd5zL|e<r1U9j+Ji;c6w5sno~o0Fa7jE2+ShwTu-B5zJ57DI;nd}vWVaPr
zvYMBQmSx-J33fykx(}vi9HPy<`cuH(>`2B4RSjtZ$S{?eh(gO#yCC{VLW(p<a$&#r
z8J0~tq?(BY3k>7s5VcRZYo&7^7t-f$8LP8ul2B9YqE>(KsDe{6u65hDS4<-NmtyFe
zSG?_}+aSv$8!t}vOEs#pEGnLxs?Dj%-k76G5d)WfMf&Wb>!F70O<R2nbh2)?=ZaFr
zForx9EVNCeh6Sw%Ep0YWowUBxIIxX;lqAv-XfBj86CQ%H^PkL|Lu1W#*T=ay<V{8C
zv&}SVk&%Bz`TLsDMx4mpZs*;zdxoc!t2$YZBzqg&49qR9&QTih;DJ+qhi(q~T!%*5
zwQ}K_$1>~mA$A422*;;Q)Wa3*ud0nL!D?<RhAY;H{6HK#uxB<rh8CR#&<I-P1u+J3
zITTuH5#db)l!loevW>YGQieW^i4vr~g&fD@hFpI{q(gvdAQD7l;lvVUC{qv^fQTw`
z1p~Aqp2||8Gt9zff>P2+nvs1OaWt;l<3sYzGbPNd7B=<!`%Dqpt6l1%>=x-vwdLDx
zbIN(N#Z@5BNb#oicTGi2R)o74A6`8pz>Kqmp+;@Xm8nibN#{154ZiMY?N>`_)kcvX
z>MDOt`!mrl>k71CTOTdBaA)S;?_A3^CASLITJh=Z?rO@-<!prOS}TmYOIoMewbHqd
zrdS)Dp3GV{sXXDuaI%@5y{4IBwb0AZy|jcXjIX@4+R9lpt9jj3*2R{~EtlwerJB`Q
z8_#>w8x+P>or_C-dXk>BA}0yu-&cV()XRU@ql)xRTIHgfuj%D}^KyksRbya|ObS_P
zISwSb!On7$TK4KbjQo3O&fQ6H=_-h_rsve=)v2GJ?FMKzY8wVFmN@UGT;)y_vd~yF
zQGX!;8K^Wz(Bx4im(i7)g!icyGbW!oSjR^TP*k3Bj<}+eo|+fwnMHLIP?r~Vr|EyP
z+iOJ<Q52*<M5W&kFjj>gaB9M;i;mt$7Nkb{v^yiI!iQW}sG6j#vQTLtbZ%(g&#L{t
z)?zHXOta1!Mouk#JxXcGZVhHrrF>1PvmDhLm!%d_shB0!B8~IsnTIHhgcJ-Ax2`r=
zg-M7ca>z}0#3-c7?$1JeIMOFlg!+GzHA$@;lMx_+b|XgdYgGHDx>qsreJ*z4n!DRn
zl7gRI61R6m5}B2AuHL%3VHe!H7evy%=WRCG23Z){dUvW>tyPg>RP^0eZB6y*iZr1R
z5cFA5R97vvl@Mw0m5A*r?WGJs5C}seECXgDsKU!c70Q~Vxugv;3M!p6!^?j@Nt28)
zXzx%!#ptFgP9QA`XwxRUN*EK!5i(skB0#NyngZI~<q@wA2o*Qzab81E*jY|1@u{n_
z>5#gD-1(}R*OhuoNFGe2&=HXUQ0ums$ss|NfFUT76hs+hU`MS&aP#K^B2a54%Tc1H
zR9KEbghSE88UgU&I%yyh9OHlBK@v>o@(>t+h$?YK18c@4#hL6C5pt5EQjmlq_6$ue
zdhsFh%X;c;w%b{&I}-YCrz}>y8yj3@G`eDqq73tn`faY+sHv*m%dLU+<<C3_#W+e7
zd!?n@1Tc_LZW5$PmTXdmXy}j2A~Wfb4mC3hZg^kLfZKz^gdnfrJ$iq{0@0v&v7tjr
z_((KB7MO_zdI+}K$+Q$4lKvzp(<7+<gazxpB#5FCjVyK7MtU+M5zbcBHJy)D6KyhC
zofo4|HccI71AN%9LP=45Dc5d`N=}sm0>ny02dXtTX0b|ZPhc}bLxR7gNV7&Eu)m32
zD8<!bvE|fO6e$rDjP`$$sj~f&ptMl}w>`$us9+$Y1tTSiFuH{rDI}(0<_JUNw~9&`
zxQlmoL6g^8mg=pIYuip*8&WJ(!u+_m8S;u{*V^B{YF%+=#n?h!s)C~%=b48n*qb!Z
zH)F}1<8F3==Q(v-p1P{o-)?p$qh1Y3k>Nh1%%W&VB*aJ{S_gk6Sb_&exka8?CLCgA
zmsFV(*BoG)JL{rW?x=!OGOl&or&mlO`<G(qnpeE-rrRLPBO5PH^-DFXvMef|o2t#J
zyS*_+lp+T#_o}XYU4qKZJ8b&&aqf25D9|&Qh@?e;Y{XR(S|F%Y)g{d!X^>G=>82i8
z@=TmzgGYLT1}%R@F;Z~>Xj7kb&E@)@Qtz0Go03vI?d}$6i>z~$M!Z;HRbZvXeGNll
zZ8-2ormoA=A$0}0^Hnpi*Nv1-D>f;Z?-**W)5TJ$pK*TBY@m>&Aj_o^MS3&Gp*#_i
zg<UqAkr^_jM~wCiLR}m(VIdX^<4FLKXP=#(bm?W)nJa%IMLI|rEz@JxXR=g9%1Vh!
zLJ*7CF*LRD8>1W7QC*f;%~_b2(QO%Gwcy#?V=1N66m3vvoOjc0cFjdiR`OkJ53eS1
z;6^FJP@~<gF4!cVZCshI(yu-Gxh96zWV1_CEjmlRZRS*cWmp{B(k>n}!QCymdmy+4
zmm#>jyNAKuebC@AXmAe>L4!NN-QBs9z0Wz{bL$7ax>w0twW@mhp=W9hIAIK<CT@(H
zauj}+s6m203NQ6VN+^s4t~3@@upuEP8^6yqip`^7%Fu4EY~!vWyk2C_l+}<gEKM$?
zKpYpVzt+}ryW<&Du*g&eT>>=k%VX75a<aHS8ubWZFR<rJs+SmdDbfR0%wXli5r1Ta
zGtKDu2=K&;?E!kZ+U$_6xLNs+bFF-7X7cUo{-(&XLIY^`#0I#WhNuqJOXr%JA!gN8
zO>67Py)l$Wi*-0UP8(e-FA)fz>Z~?I?rNE=b!xKtsC!b!?LJpV1OK^|#{M##hLd4W
zuhq@9hqc9>C8Ee@e95jBwU)j1`b@n}yPUG8?4Y$`Df4I=@+eO3JmC%AYgk~a5H0D^
zprJpZLKXdhC=R4#yrQLRPW%n8T3o_n1uO3#S)#ypIT3HVMVc+hDgVTaogd9f<<JUA
zkP}FPR2-P|CG4&ln)^34@k`kB2Er>m5`T@K;lWjle73eeZZ&23-t^hJ*zNFwBcjN>
zfs<ql{(T#yZv@t&CJbf-g@kCT6t?&DZkzxcB@IHYEwF)*!AvrI>s~^Lxc*8mFOwMm
zgBZUHY1O!btZFTnN`8Rf7_E@Gu_ZVCA~mQC&!A^&ZpqlUcC9s&xpB^VystB}bOfgw
zVc>{BfhE1bGDvW%J=3Pqn!&os`N;5_m&*hUyCP-?L6d7Am0_aSXjw&X5Ryvh1&ZVM
z=$d0nd|-M{8#lg|&zE}BjwFXqBq{D%QOq10g_oFkDLA82#RS!MjETv++@zhcp|MCs
zSR;9{E1^XTw<hB~m|JN^(_iZNFef6t0`cDC!1OVY8zl>T8KmGk(g=T52c?9i2{7T!
zY9%UYNu)=hNKJ9sX*4J`{e1|NuYq)>9&22h1%C8((q$^PaIh-YtaRnLX0^{lE?_)k
znVsgU{`(=`ojSl{kbRhH12EMD2=Ri)XaDG@f25@=4)<m%1v92D4Tp0hTKAWT78)Z`
zY#^Er_?ga9M6g2v7@S=`qH`_KfnB#gFg?&Jv2_<TL+V}jpK_m(%Hz&Z?#h)&0IJhp
z7kVwPFiqlV?$O0~)^vfp<su&mLwlB-)?*a((u&0nQCu#RbkDlYd8P@j_T2kjb6`IJ
zj@@a&y!dno!}w|$cDd4Dzcnv21fNUGSYt4jPCHGr2wIT!QtWReLG8zraK$5G2Aq>e
z@B}@`po&P~W>cfw9{f1s#Of|n6kbU*FVyd@nOf}IAGqy2e9>5S8(+wah>R|t!TLpW
z{P>|K64O6xLjn^&7PV)TJhAA5`h#M61+Ikc*CBr+r8F3ISW4gwHj0L-&<gt3@nNNo
zsdMhdg_Rf}GG&_4g%?YxDf@)q%kiwkzyz)Y{vKyaF&)Jc=Dd#=Y%GQdwifqig1!<{
z_KIU@wt=+ML(Gmrw8>R14@9peb++C=%5|W0`U_ak)@)wvvg5;?W$A43!GefBQMPYJ
z^%X>RpEMHhP0xVJ{aQB6<Lk<UBK_P?t!(R63M=Tw<e2o78TS>1#FuR~_MvW*CAf%X
z$*-rx4R;LKU*F}(w_JG1rIywAT>(6!B^{@V!|BCP!b}o=ZV6Z(hN@8R<CK;05hC6>
zxqc*>@L+}Wd0#^K?zwqynk@R$M;=#q?J<5)O93oZ=RkO1FUa|<NX4U6X?PT?q(#{I
z*c#s_Q51Pv!?dHlG>(W>Po8RF675&kk*c$6@y=pghkQBZ8HbGw)jQYHAJLM^l7^9`
zl##!%HR%|l?kZ9e#ON`?gRuds$S^%jT9m=K$S}Ruq;^^(8*#XwPwx%cBqhQ^ln$uh
zin3WNN`4vx-|jOJq!3God~qfo96nhl$kUqYX}p6qXf<$_J)6#ndaS(506WiTSoq8a
z4f%&pV{>C`5#=E4g<f-qZrO_Xc)T6`IEOs)VcdeGn*&Ml6o?1Ud-_i-D|2=#<u2-e
zUYSWx=)XMmy}k<`Q{v9g7na<5y}NY%z56lc`Ge9Gkl<W*e}{diYIEd^m-Rah7I9Y`
zonk3-)%m^vfiX|AvbpahoRRCyN}aUJq$*Gcc;4i{DyxPlK5^qWh*`n}9vLU~)LaiJ
zQ)oHfyi`2=QL)eV9?%+fU<Aa5&(|oKtvm|<MyB8#OC`H|erZkm{YxRtZkxh=XCiUy
zrFPz*6<F%x*hXhk*Xd>oFRcgPXFK_6^u^VYt3Cp12vMt#;A6stm!RF<*qF=b;<X$a
z&WJpCOQcV?bbhr?aJtKA1HRL!#pqkwB(TY0KG*d-0_LZ!*|rPwYSVQRAhF`ZQb@N4
z{6J)eKt>GgC|p<qO3L8Ke9CxiTu~7f5lu>%QD7TM-(=T`gi%|hE&5Exg8Zo-i-)~o
zaTg#O8%GkupGgza3J4s?F6sZhmJS8+yU&8FCZ>T)N^#lSQ%yi;Mb}T~n5J;@mKp8%
zRH!L&W`iGQb=e+ZdN)|ZDd_0;b#Voxxr!k*eKTRUprcCAH@vLP`Ms}fRMBSH&9)^@
zus~6Xx~WP^B+dlHA_Q#Jck$<U$?V~c`DNtbt(0am&BmZiIHDQkkW)#-o%!XCy@0PX
zCx+GooGcfP&vJUcY94x5Unh)zFI-F<IPc&ueJ!qa<U#nP6T3o8{3h$ROade-4__+y
zM7YJY+%RESW@dJJl`8N=_OyLf9&HN!iV2kad`e5R<Ii}DYN<308p!axY?>z1XG^UA
zM%3C$?XO<w?3{u(n3{n>_K|`2y3PXpewFf%99mwUo*;J0PN6L~1NzZizUh-)K0`dA
z#zJQ@o9qGmYzZ;olzciXrp#NT)*HUsnX=F6Ty4RTmPD=CD;8e6TzWcrt?%a7Y$=(<
zNIX9qSUW`+Apj}!`+3AArbRhux#?Z1zg|3}n_^m<CM>04*~w+h)~@52ok<s)(aH$G
zav8i+Rkz+z7G7EKtM%ri@PmNTE$5LBvI6Xtb`^L;Uq^a(^Ox?iQys5-NKqG_!=~Lw
z7^mOi790xl=s}as>!^579T~bLw8{%h=tOSzX+m1COh6Oi_wbtrq_J*SL^rm5<oK;D
zayy-CJu|5s#qaXA)7NzPBPtiL2cRBazF<0f<)Sd5bW={sFdFpq2?m2;Q5Yx{kh4gA
z*-l%l*^Pyri%T@}Y4XtF$Wctcw^hjD$bV<cl2j#;9pxxm5-{a-jxIm7kI^8#+r;sG
zWA%8;iUX?c0eueKye7h3LO(M9z_y+&0@zqj%4c`JVIK%(-gw_XDzfBad1!F)Q(UO2
z(tR_n<|h9k+*-?dT&RY87nsat_+aZW5{md|@dEO7(18~E3mo1A<x}}=zaGht6cm`<
zhpG{lH1eJO^G3BE4W-eR$pWDGW_-wIM=hW`4RxT_?(<ZCytnk;dTn3qOu8x`Kx@^l
zykz&OldSA(!evh89yPGi_;W9=pr{siUG;%^K-35y#=DJ)2@IrZ>G!$@?~&{_R)Ym&
z=|qXH$p_H}i1*fpis_cN6J>ekixFv82}6urp!|_{CbPK*YB*%}c|sE+_tUjeYb;bS
zqT+#NRE4t?n9;3KpawrD^))^EmB!j)Dr#P=55BuaBxU*@{>=v9Elzn8^&xgt2Uyw2
zEk2h$b?#65TSNnfiu~r2aL1y1`TJf2M`dF_WkPs;8`9FW?R=*5S#TH?veB<<sTw3J
zGHz9?>|ZwnmuoRPl3tq=P|sbSy6@ZS@vnh-&p$in-mH~tM|Oj8^&?~=nVvq_L4ntq
zpxU%O_AHMYpVxr2W2^8Drx~cYj-G5pxRsr-MU6$GVU-+NXDthfl7-0yu(96JcRy8>
znG}8$4P@PHzVc2pKNGHzCiEW7(PWfouyXM%>F}c3X&-n^6@UtI=MKz5YZ$1PS>FRG
zYKcZKlWt!B#JxppvpIdQy+)IV$J%yj)8-eH(PDbfG0>B+8+1y40Q?*(sjl`*&tP|=
zd*e|bk5MT(NAmv6<AwKBtNRT#L4lZ}5p!K|r$j)_E_Itk1-QBzd#4Y~k2za7V)Yy5
zQWk_6hzOSK8{qxjAat|5@}%hJ_AUx&xdk{BkSl2YWdCv6yc}y~iP6ukOPGe}a2@ny
zxLpLh>!nV<R!@+u=UvgvuOmo`AVidu7__-WW;uAbE{Ex7eu*!ML4!F(?we1SDy%mB
zR+n(KN4v|E*2lbmtaN{|<|GckJj|m*lVO}!6V^?4Gm=D_WV~xy`U3-zv)mro|BXw6
z@HG;BV}@*z8|4A5RsZLk4DtBL{rl0U-s$4(L#)zdWZ4#4*kH_GhH^~9;?K`EPXoeK
ztX*GCe5?}bvSb)N@7PIo1=jQ7Fo|O{XMR=y@Qt^F;JSkdc?QP`uVwa~wI>77AI3TN
z6W;Q27)dim-^_-#Dt_8W!nAGy6|k}~JGl7{cZ3<;NWRX7?0G$@ej*k7^amDs#G!po
zU!>e@E=}3~o-l^&u4~HisM{gYAS_qL-UO9i=$)NTU49E4#RIA;p-8u9{gw+ITL2vl
zrM&3Q0V0QI2R`o!iPN3V5_J0rHkJCHuf&9Y`4+T_(CL!YXT?+jv9OMieqhCaHuiDg
z&<JR{*m2=sXTj3*;#s?V<WOTEF|4|e&uu?MFmOLjr8hf6b^}LY3Ub)t@T*QC-zKX*
z&Z@Rm^@2-4E@tP(Mc!w{nz%khRuB8l4dwPO2Ab|#PkS>Z@Onp&!E*>6P2^-J*lNef
zUcz#=LZ-?_YvlxXv&>ye2AK7F2Ns|_+<eo>d%HVsW9O;Lo~!eoprNwtjtVY0Pb4@k
zcC4|y*zaFa`4uRNS1I5EHRk9u8ZprSST5xt=s<aAN8zk<3TShfmhPjce(m_MY}aDh
zI;jh)GX?A<M>PAdK{o9W!|~Rd>HT&!qW^|eu)*7X;iybOW6ZM?1N4@BAoX3j=q$*d
zCR6q;qKhXFPGKa3!eXl6!3pzorwi=cfTlM!49_O5aNTWL^Wd9Nc`wULUOUzkW2{}T
z9#l9Hqb=&Gd_GH~-oM3ckYO8)NNwrpR14t9urBV++97ZWGhgk`KB@WmnU<z<V@9#K
zmQag@kS$DS666lk4^&T(#L+;82`Cuduo>hJjb4i1vioiq%_W(-80MUDPCQ^|?qtWW
zEIwJE#6!)I*yJBDi9GjveQB_kq{dm~H<4zhZd5`M%OS&D_nZb=CBot`5m_;Z$Vf5K
zkIZ~{nP{!n3`D)*U64W?3^+fZ30*}pPQ?rdA11+61ps-B1V-Uff-6+%;f(tcnV=1c
zFael!lJH2qZXEcgksk_c)uSl$!BF4x;QjOCwV*LfaWO<RWeQO_9A8$jbo^WJ0-X3F
z;`X|T-#fCMbJh#ar_rNbe}q9YXpys=r$#>ft<hWgxY?MqeAnlDBm6C_*JYbdb-?xY
z>u%UA=MfnR6>uaE-N*}(x{iUz%M@+()nH%b)+ntd{7*WFGUD+%eI3%<&S~xD#z201
z)oK25_%TG7d_E|po$Ak+NYcPbgTLXIxeSXS?e7sqS%er8?gxDBRZKl>ay~4U_by2%
z@zUK^^C8TNi`@Viw21i`hZOZ^Pos+$qsdTYh6jfR7+`bKTHio9>_W>mcZ|g`9u%ES
zIvZ4{zyBteDj4lE`@Q(q8_IQV`P=jXIGmf4gVq`ho&^8^kOLS8k&-T0gc>uWA+r>m
zCy`(R0H`w*n@fz24uL?R`Y{Nb{3wJXAZH-ZVErvw+w+}b>rqwfKl9_W05LGo+!VsI
zWDW+0sQ)YWAL)M%0T>t@wCJk4rrKTq;R63p|36AWxh|bD_fsDQtcp{t$sxeB!RF@E
zoSb~z004(*<}BdriE0NxrXi$){6mdc4y(^^FbD)Qhg*YbZf+=>0WPx`dUOzvn^G*%
zbDP(~wuW4Ucvw7*990TVkcd~1AC(1x0%*<6sYgfqK%jJpn2A2m+hb7o0DCy51vh|-
zulFPV00OlNEw~ioFC+q^-6@=Z3Bvk+B%3B`46Bo-Yzzwr6U2~4VFHVT{x^jG$6+}9
zmxbi-Y?m=C`CnE{l=P&3RQ=WVS4NiJ+*pPh>z`}?pL%n1WBFNt!f8auna>y@L~q$&
zWq3e{g9U1wm=H(*QU)X_|0Oj}4u}K<?dacSf)HdhIy!(x*m33s5y4I3<isOu_&l-y
zlXddv(b&%_d%vy0+s?P!X8|RpuV25aPl8KYk~n$WC(A$}>O@iML|N)Y$Qu1ikf4F6
zK_FoI-%GNP(SH`}+b&@2BHCE;ABdo#3~ryb8}ahgA8>p8<L2gi=tyAz4!9}QL^vHh
zIdxoy1a-}F-cMO3`eWKxZ5LHd`fY0h7kB(~D~xJYPj>Z@+?;HXb?Is;008hQV*u*V
zv`zpusbX{XFJLeuoZltz_$kijLhw!P&LHt<Ibk}DMU5O1JsA0`f8zqlI?I{St|V>%
zK!di}91a8qCrE+8C0D{IAMiRhd**O4EpPx_)_+&Y5aLq=C&b_wKpo<91SbH%gDne*
zbPdEh#HhvE>($ERX*SnKh5u#}2>4fm{S`~9+Gh=7=x+i+;`&eOL6jl<lU0AM|HTXi
znSuGch=hN$3=Ecp91|huGFHgkSbyDwNdJ%ilNS(8#*hFbasDNC+W%!KL=}WE&4GV`
z|4aY!0RY0EekMJ?4c+P(*tyL?L1{u$4=;i9%j8F}7|eASV9fp*XoA!@*$vGA07+Fa
zI10c3E(NP`?5dBpq;N9HgTbX2wiWClKC7c;AZPh9kUQwVlPnN%$VuODKR^T`(FYs`
zrEwJh7lOGNM8Ji?ToVLIH|qRwF7SU0gTV~RqwUa7tPkJfnywn=36ILL7_A|O>Ho6p
z6+@B}^IaSun#lye3@#B#)<|zw4U6Fh5_X7}5Nlv?WYJ%TA;bj1V+=v@?5ls_v#S65
zcJ0@DgAWTn)%6LTj}DzD2^?7?iKzd;(9Ojwy6BACGq2aSD*PvH|6>2w%l|5?`s@Bb
zC?HNiqVjiolmG%BzzOj+&1qB~8#w!)+WA{ZUu4M&t~$<^=TfqE7N8B8s6kWtWzg1T
z5I1y(vA9(ra<r7hUlPs1bO26(3P3(l79GILQEWDv_gCS60sL>BA%m3vP5dv8{~M@}
zsRMxW;#~6LAT=vUr2nb`;Cun={u6hze{1n?(Es%Z@|R(nV^<jjjx1z=#2)!yT%a^g
zrbJtFFhdFvAtaIj7Kr};V1bO(#W0uugGY^9MIBu9e_Giwm|IeS|Kj_X1ri{$pnu%_
zk3}W|h(?+OMKCS6SjXN>7Q&1Ka$y{K`U!eYwh*u)v@A_blvIZ#7K^#&-^q+puvmy3
zD9!laVEhFz+5&R_*NE6(kRktY{{<*zZfpkq*ZyBA5$!oB<g#=KjwCD4-^2eXiIWrS
zUpUvkkV3rscLGu{e=qWZ!IWTdag6%k8+`;Nq=c5HA*Cce9q{wl{T2VX3GKgCl^X*9
za7jRJW?28o{pTtq7C=z8^<Q!M(a~QZ$ZZAix4!>Yo9ye)4@swj#5ePLt}}njm)0F}
z2UdfW>Ho~7PRRsuVsJ#yLhh!2MFDCOkYxII%qc*Et){@GIt2}_z@;LIfUw0ToJ1CE
zbg4atLY$j(xeH`XL(U7%0KVERst;Oal2P6~vx0~03j#!p);y)H!y-zx?D()?OVh#<
zn0<?A(KUL8t^gnHB|t7TDFQbl-%y+$DHM5~Hjyb$h4ZdkdOE*%>{l|^eA4YcRHME;
z%rQR<8AlSTQ6nQ#F%sOihetxY13)ibRKF8lCmz>rc#opG!_8Zm416RipK|%N5-f#p
zmm~ipGnnKN+u(MXrA4;oEy<r7ebbU{fXcD;JrX{agoTfk+f<6Up&7od=Ncbe;BI=$
z#vunii<4P8UKO%+ESc0Qbf0l<HvU&~(`9nulA~dYW1OeUiHMMTaWr9fKXJK~z4A{^
z#MdR7)X#^*n-nz$K|t=BeqtkAaov{Ww|Y?EhtPyV507bt8{t!pR@)^4j34?FY(^Ez
z<{%;qd*Z&nZNZ`Jdi0V>vpEB$fJi#C>K)Mm_%YG#YFS))_2PoA04UZpWAb;0{gbT}
z4KP99=K>dW_E{{W(%M`m`hLZeuhbeuDTsXLGyOy^Ci%1$XA0~i_WV)&r5x36R{xtA
z#$v<)e>yYgW51F9MN0C9g>Apoy%r8l`ABkN7@t7434RGoAk4BRU|7)Wz8;Sw&k@pk
zeQ9L&ZN+PhiD|g}@hZ?EzM*hlzHkiKM2JUvRo1!?vE=s<EgW3Tr$y4=JvWdW(XMUM
zIFe8<t{zRz?h1S_`B6k1TX51Ag<VY0Y8Oh7-(O%VbwyZ$9O3R&;mq-afxuC+GStQ*
zYq>-n93qwU+B2<o^*MvN{|Aqwaktw_pbq4VTA#^IzT@?czf8&9U7y>h+q|L_D=e7}
zHg^YiVhQb@3VgLIXZhXxL~u^<tFxmV^-znJq`Ef_Ez%D7&hjdQWAXN<EAA5Q_^nd{
zOUdA#^1E=)lJI^1E(=E7Etlt{eCog;+t0weMCuH9^rLx~lP;K`c_kRW0ta$6T
z<=#m0Q&TPc(0pTRQTh?oO}OY-Fu~E=0=h`vWx_R1E5O+X^5)08$xjxuFSeRvak=T}
zMos6FW}2Y@Pq}K8Ko8s6<`=o#VN;Mzwtg-SKk3lg5e!fxJx0@&Z3`z<4^UISjReuZ
zghsvZ<+dH!rXXrco%*%ZU9`|MXfZ-y;Sd2HUpeM_7CaJou@50i>x^{N{}surtU1+}
zu~4(Z={!ev6a?rVNG&gjWgO}+>B}LC!vIR=#*S?R+o!&e%6>W>0Yz|8kb4{^Xo&Lg
z1pKIn@o&9(B+03DR&|cAc64pS0sFd@E>45|eBO1<nU9zs**N*TRj@-|>z}XlD(H>}
z7O#Ph^UtUXr1m~q`kM`54Oxm94`(wUVbDe>E3P|M(*z@^F5b-S`5yBhMCoS<xNv_^
zyyw~hdOGuPnbyt?qv%#Kws8OS8H7BzOw~?p-uiu@k!)XpX{7Vky+?Wa%yZCq%xWiC
zGer4$bcAlmy7w1*3AL?jQGgpgDFU|s@|W;LIvJ=Mn?xnYd+ybH40^LiT*s`WFyWD)
z0hz4TAjQ?zRBwK0Pw4;|i4;vE1%CP^smn_$U}F0+oiTspA(mtKr4maR+9tl)Ko+*(
z+Hiv1BHm}LbR5r;g7^lkVb`VRZtb1l+WbAllQ3Q6;m8^Juv@a|=yu^KW<TZp(5%EU
zzN6dPR%kU6eH8X|WI=~zI$jF>BN`(=*x*~h%`~tWUuKzv(^TReYPY0==iv5BW?DF;
z2}ppJzx<Vy$^!+HYfyDW)eGGYKURNNKBQ*HKw(HvMpH#6#M8^|nq0i>Qx2EFX`<-~
zBFY!hp_^4)!Uoxu#&?A@n+oWvuoSfVDf=sb6tfVj6m}I`p7j`9jE-(NgY3xHwYOu0
zs(x*#$ud`!xPV=mgSvcOn3u_WJjbY%YJpLBMz)|dYyRTe#eOh@4fDb3U8#=RI|Xmu
zBHFQyx(p+u#>G0%=y8)#|NTE-9&mMkmEqJlC<IB;@O>keMQ8(PxVzzI&NO$M2T^&z
zlkk-I2-&pvbl8W2&8HD?T@F}9>`0q{ctlgia*ktJ4^~9uttjJfxOj}c&%sq}GeE__
z;F7MayEgExk`YcO|1oh8PKLX~+PZm4ueNUZ_@Zd(3dU&Nw^`AFdRxNoZlXZa#L}f2
zO`^<8O$Ung#SNV)<>=j*UcQ0A6P}YX2i}$BCIx0Sw4~on&?7oAa=gcT9tghCp$31t
zT$jUjutyXSe8#Ns)HEG(y*|(!EdV36r1T{sr`zO-R>!I9uH1Ze?hdL0=y8I|;Fr7x
zaL1+iLC3tTWR!l8|9oJ6YqTMPQ^ENCRXzzt_k17y0E|lEQUKGC>_*u!$zrJ6UCK6%
zhovC9B(6=+NW`Q{B?;*1YpmbwBSnpIWf46m9QKV7Sm;ZyW&d7(&Bf1;9|u(Lnmr-!
z>JPk{;daU&*>?X?ZUen&T)T0qX{zJDD#0A2OH2%cXVx)ZMS@B+s+sR$JLlKJVN2?~
zeJa(`+3#^>W9E!CUk&}S&xoqbi~#wimg34iKD+;2s*wpQmo^$MLif>`L-pZ4=UNm;
zdhObie?f}3JiZj}C7(`vj6AT<Nbp_GgVc}cZ~>116C#~}_V}A+B(2_GyQFcvrR`>%
z7$M2zHN6CdO-!1o7+~uoDHoI&_+qLEc^VyNVv=tU7D__r6V%ce>zr7H%(D_~tbD)p
zxFi|FsHD7XYsm4@I3$2lrA>jCz5Ee>Itn;0Ro&0rZ!MjTBi7pcPA!0#cc@#JwwZ^l
zvGV*vp~Kp!1u^R~Q*}q}P2qD-(SfI_7#0rd&GU7ZvquyT4Zqc|GS~=NSx|n2)%E>m
zD9RjYVTNlh&Qu7r<3U71F$=*X$muWVd$kwM{Q<tCk-AA{<H(_%LWK^Eg+p*_BFwHA
z9HVV>6WdC6A{F0#9G3>Fu@jS8!_pLdqWs7d-BQ6jDyZijZC=K2$yb4<mRAvqc4_;k
zq1L`oMbtHXVt|d6D@c%)ClFEPAW8)dA$O7d_8JA9P!u6utA|2lFr4x|_WELpVl7%6
zYXxI=SVR!C;Lr-&T<g7r_LhgL&dDI7%llY`bTr#5@{$OQZ0Kg7Z_qpdhF?ST2h7$T
zI^nmK?b_>v@?9@ks|-Xd3ocW=8ad1RlXmE#ugJv)mdn;$rVa~w#-YUJoP>Wk1LvuG
z+DqrQ#kLpC=cYz`Q82mrC%=z>S``d+HouFi%gqekQ*7ScxXf^xj!$YOZF%o9>eEEm
zEWcS#aIAb)SHN8X{AyL;c^~J{8;e4bfk#2vG=$UNRP*?r-$a@)I6d5S>1KZ;zA)4Y
z8EG`|9h5a0$(Z7^mR<dC)hv0!3l&r*_GGxq^CTFkFzf_qF(gJl=+XD&wa?N&V03U0
zcrCO>W>pO5I*E4hiBr`PgzmY{z9ny-Q6Q8v;;MJ@D%B;j0kcsjJb5V0Ii4yj)p{)X
z1{=Mj@7c8HzGhdYn|_GsTpdYTb-Hxm{R|sxw&!;6gHm<NG>QPdzR`&Jh~GKKL{*8`
z##?7Md`T22#WTv-9ZCAW+9a1dW3D74m>AcQ5N($U$Fe*BMsTKlvcU0H5C&uPv)Mt8
z4!^s&CiYPQF0fy7np?2Syl9Evk276l1@GgpSjmjx<sE*6GMNtv*4!hqNo7PY1I2Uh
z4)aO!F5omIRS|*!M^=JTs=obj_&_uUZpr5dqGBMPu#a~I!_p)*izlBTKc1)|E9A{;
z!HV&fXv?xg)uf4BaYqpF^bURlk?-uKTkwOK!OxD|Ip7=cI#5)Tnp6Vw!*`^2kAb2-
zqj$uw9}SK==G|%^wYWerZhJ8NO)Jl9r|J#^hvx1eem$mfaKa$1K<&YDo5K45(=gi}
z5uP6J{<ZE_2dGc9OnUCP0Gp5mA1;F|!b<r)9ZUprpLcJ#>D-wvz2x4ft!0sV3awRk
z91WZ!5x{)1_)ECp4<fA%o-Vu~e;&}m%K`iE{&b*66IB(cv%=TD)ShX0j-p4;Lm^+c
ze<;*V0{Tm>|6tgZ4xJqMR?{|08z&{We#pNjznb|S6599X{hoje{cayO{Ne1j2{DIM
zBOd8vN+&!FDnwmGSVYqdlKt_7F99E%cBr*_aDg8gYwX6sZ4J709#M(bFUq35Vo=qj
zm`Gp$Y#%kuGkwzyFIVyV`U;FkENriZ`Z?vUeOU;{f~EUg1gp|gWTvur<9uOb{n+Mr
zcP%<A>GPlU9PVgV6k&BUv;BF7)-f(fn-2xkF2jkaA3V8Lh~D;F)-qP)_!DK~cZ(Fk
zP^v&EWDzM*RdNYa@@Ob2SwwGJY*dmE7?niX-bc9=2PL4HNp#vfJgfm5%Q_dE2i`eX
zZf$}kfi}1F9+^SIBugwTa!EumLw^u?cO+$g1twGg9Ax_%S)Htm5U-nE^Eno@i?Lf6
zUA~FNZYuKny#tYPs1}ptyv_mR_07?(tid!_cUUr@EwkHJKdFY+KJTNk{f^L3z<#y2
zCs!A&Xs!((y}5OyUazSBOFhjEVkccdkdBL8Be_4uG3lX!>@qo=?M5`7PInTAw<=aT
z;ys*baJPP_-om*Z;k9*#0%ey-VRz7O{Ik#v`)+i%LyRxWpRl>}YEznPv<;DTxt+Pp
zel}&GuW2@VN9ggPx{W75l!TF1Fy7NcTus2>CK>?-+f1z(E>k4=PrqcuYSJ-ZX_=Gl
z<s|Ir_vm|~vZy!whwZ{f7AetbmO2ScSZqw%M3Ry#I^;17yJszT0k0N4V~y$yQdgr!
zK~l$V21QaoIHT3K?OdC_%IM&ZUua;!VDSM^{I_y~n<Pd{jtCSCIWC<W0=f_%*^58l
z&L(E03w{p;<+w8f1=_OydWo%rV#K95VqeK&UA1yO`WEz{I9+w0G`sGWH~guRbvvgs
z$QFG=Nb*ZT2V!4Ty;C^pjX<b(TZ40Skvr@@?Q5*sDxNrS=JEsH<({|>)A6s6(y=ul
zeqUxQ^b!3LBPBM$=%+VLqZg<=fc-5Je0B@GD2Jr8M9iy_5lX`@+<G{ktDzvmCx3Lb
zSn@Dl3Cr{SsQW@hJ~>2WtgkO{P$d}1M+AJ2zmdNM-DIUHg~yYKw~X+?SKRW=;!%q0
zsl}uI>|h!QV++ddE2oR5p+aUlr8AlYitE$SO~h6hI;glA)$=9Etgy-!M-iqL0FN;S
z<BZ5hI2Zw@*7gVV6;6)vQ7$e4Ec}f(s>+YmW{TeTgFfQjmKFXsCQz*+)^d?HGS#2A
zzXRtGYe>@Us^G#h(5il6ksJ8AM0cMyei`%m_5j$bA8xS7VV0r%`N#P6{ttQr5Ft&G
zW00!<I7H;P2KxF=j;9E8JJg9^$rKERGeEV6;=p+s-PHT2*hWOT$}A$Id|2x}ddI-*
z>>m{0I0o6?>tY9~vzy%qe!Hddkb^E$)9n5n)>nhjmaFPpzYN)`pyl2W?wLFpazz6r
zUyF3~z(7+`L{4I_EfQ;H_)acXAZA2qmGXM3iNf!Mh^QX}8L|R-WSknb@@)|WyzpkV
z@I4bX+1r$Vn!Bf7Vug-ttnOb2k6ktU+sPb`s(p|hW?_jSn`JDZ8gc{|d5v4@e2<!E
zU-Ww6UtSMV`e?-+_EH|G@GcrG#o{D%kUe1vX{qgfwAN!jKfFp5+HX!@4CF*1xUztG
z)?6In+GGCG;E8Oa0c{qPk|)8!6(#yU{|1j{*AOb`J4v`w`{J#>_$M)=gO3V7)MQ{_
z>EFJ_NgqC)MO&Md+`Sc3AnOrrM%6mSf51WeU>UcrgKLKLSV((|N-rk#lc!_4-X&_p
z?FlHmbIad<r|4uBlAq^s<qaGQYM=O#zjlUEd1*q=_D)thqAkD8ZPJHjvVS8B3P$eD
z*z|&(D#eXz*W8NkPX-p<hKF_=kM`5)?(k=!s!U+|G8xlmQm>08m-v9LGJlHEprG;B
z#yY%m<$*8^*lGTjZ+y*ZBtH`Q#b{G?$vLd6z;`RZyUG0}ACd>ceo+BWzok8YlFriT
z;Dj}X&COh1Rcib)<xNRENyoXiE(7U^Sw52gJ#Bxn7p1W1wfAsHs<YB!prd#k`n|7>
z`CiMuRRDMbF>LW1>|^pfTp7EXYxt4F@usg9cC_5;5R3dgQuKhNDNuaKB015!CxG*S
zIQyf&{rn~J+>P#p{A50){x<^@dh-wm0vSoYwv;%ki`C)yp=GyP0b=H;yJawneL(`O
zIG@@<%`F^gAH-nj2NS+cRm=MhC14=m2<<NGO_CFFJ?yZTuP$pAH$)Jx=oM(?Kpzk+
z-4JDZxfU?*bofa5ym-dr_bx9+2zyU`%3&qj_daHLh#pZg?bid+hOPA6CO9A;wk1wn
z@!#`iHbl`q@ng_8pfJxO66~DBJ8Q^YAXc)ghc1yf1I$D;!nNU;#H4LV<lE5_pcEKH
zcGF`d(kIESLz|Ew4ayIkdxk_(p;P4Hq24=&Sb;RTJ~0Nm0SD4hjO`v*CJxx;`B1##
z;(sWZjvs&1^O^yASV~*fPvv@<cwHGav9Y6%AxW?po7J(C1Raa#os@inb{3~{W?^3T
zTEo^#O<#PFuC(Nv2V1UjuJ=)v5X#`itgbYXSm1tZa<Uob49L!2b7%1SBJBeXLkyHw
z634zR$TXrlO^WzJhtEOzs`_p!c#l2v_PtqWCX9X`Hyt%FAvvhQZ<dTi*H}ux_rpoH
z4F?YSTgPXh@CoA-b_(;5)7OhJ{Rkmp;+p<g=aEIn8zD85dBt$)c$u(RHO=anHwnM=
z$fF`3nmgyW^N4TMoCaREWcdat$89#ar~cReGC`~)S*oAM_XjtMqA2!bpI{s>D@0re
zdZcD^rk75DR;gr{>o587{xr2u<J+GZ8;hnnsTDCW95f4WLPeVUP_F2I`F>#Vl<kGh
zUvcwzCtDSWmYr*IE4}g4r9<QL_nRHo^S6n$pQ<Z|mMX-?&f%X(0&qT3Yf^<9y7mRg
zcqtxYjCE!|el1_Tsg<^UVLWd?K+!z_3vTJ@Xk|+-0#T%^;`FCbQTgPSJwFf9f+?$#
zIDeiT@P2kjm2zh7B^aIFHS0Si-|0-opW8SW*@W?d_PStCKON8&B4h4BfM>PmcM|}$
zLDRK}nPMSRe2~e$z>pG^rN8Gu6<`mNy4Gb=Yiy5xQOJ(f=?vd=>coP2J)o5N5b7>V
zVbAfs5SaGUS0pdufhde<#JjrWNr`Oog$e2NWIT=`GREiR!isv|ZF&+l30gFM!6%Iz
zMSGNFLy5ZTK`Hf^m_7h&oF2C>rXqEuoYL27Ic|CaOlzJT;oTI`it}&g5neGA{8R}-
z^WxhdJT@Fr@V1L;M{wL)g}#gxPkWU&g&U%%ng9_ILTZ<=LUj^lY46@)cXc?OGNdwa
zjJNwt{CUpJeR&)48!XtGb#Du04<X}se2iHoWc#eg6DTT1Cl@ZN{rT&9|0p~~_t^U8
zvBLMvMk7T-4yf%oiLJg1ZvK)9zH3~VkC2TI92SZgvWSW5e=c5yD-<+F9rOsVe=oF6
zSR)3`xf1(B5j(aR3N1;yoSLG5U4J;E?l3t$=TZ@W)9oBy+x@LAGWH{!OFnh!Pok6r
z1v%I4j&^6<&w|CH7HyM51zlH|1w$JljMAWM45;*v8~$wmTCBH3zNpANoD1UYniMFm
ziya~zKTWsP=-cKq?MoO9p{?xTU@0!~3ftg-W+0p9^)3K9?D(DGpS1D}kKYDo*VDP{
zZ;^EH+m~=6{npS|S3z8cMOD;KL4gI`>I-{0Dysenj^XfQ^mp7#P^7p7qWwc1$+%@-
z9<u7CvXxp^wwhu`h;QP2fB9A>`8?*j9yzByVc!xx7WbgHiqX?#BTkan!Y1Tn6ilT7
zMa5x`^(tOn9vWZ-W%P0OGy^8OuY|-?=`3YGa@0?1yyDp^!X^qdl?93qd(*~`dbm<E
zn@>e5nBrdwQm0iWj@Ng$5^;DH+%`3|L;=gIT3SbmB%Ib@))9SV3%!j}#CSwu{mDY<
zSCX48+ofcLRzq^PQHL9b=xCw%g1=${d1jc0A0yp2i3-V?f{XZ>0-Jcq*+PtzUxj|k
zJ@T`5yt`BHhLQ*m<sHTb7!;+<_<euwXp>@A<WuOvER&}FhJFw|O*<KJMf0|w@6B&l
zCVIN9k#_O`E!Vyp_Bo~58Bd!N#)vXzLuMWpBg3A>E6}s544E)$?8N3X1#JNqFlk(@
zgf{=i_h)jTap!whbB!)cC7x<nWjfRTeRdB?0@QKS4fJmw@$QG*C>d>iX1AH`F}u+$
zWjU;;E02#BY)0jrMO$hp2osL(X5?QnX6nzizGAdCg_X6QD6t;B=oIPDU?5+U$vKa2
zO?rLfT`cRvxS4^aBuB)~(&xU204Ct~sqHS61RbC<MxAJv-|=-B88{TB>$2rPwVkZI
z_Y2*$x@&$|nf^e25vu^SnDHRFi#_TTj$1o>q}pv~)#=$fVvQ)`=Pt5fuQ1G~yQ;kO
zwHP}v`6Mk1E=_h-^%>Dfoli^6aQu^MjU+ZT6gDsj`Kl!CIr-E{Bht8a2+;l00n<F~
zTO&^^=a^q>tQrsYi(lLFac4|Mm4MORpU)rTXTh$uvCaZv;sXylT3GM?bi>*`>D?}8
z<ajSxS{LhW-h9%As*{=^tXX?@G!GLrwtW-_!8v_veHe~edN;Qjtz#ESb&W@uI!T@=
z7i^dyN;8Uzg{}C3y}W)ui33;<Z3HKeaZ8oJhwO=n?14uVt40)FM>r9A-f<dGCNV)c
zz*;s~RFG!S(2myxpTE-Hy1KB5=s2{JO-9>?+Pg-GEasvoc=%PKPwD+&p0c!tAyaEX
z55)&N`uNJa$-(M5>UmfZ(%=0&ulyqA*0mN;>)}q6ck9X`LPuMU-)n(ZJk)gtv3wXB
z`T7z8XGu9~Qrksdq2dyK{g;~b$~&KSP37^}=q_LN@(8l)<>L^oHVw6GEE%QD=h7se
ze7s^VzwY_sHPf7z5oFPySV_L-#pCCOnsLF{t|71y-Ey;ECs10C!#C8b*Vn(k)xEOr
zT(en_#WhM^M%a|zTEYOqj)`^F*6+Ist-IG9>ntL`hRJ1Lql`70$n_@y#toc`Gs-^N
zx2=TFoo_bX-L0m76vp{}uDxY${2q?FJW#pBE}$$8|ACP+@Dj^F=C_capXH6MiE_D;
z^OY>d@3mJYEZ63DdpQZQnVJ9_5&puw0{R-NJ4Zm>i3FIT{J;SC`owheaMOH;&pB3t
zCDwA!hiX_~DJ0xb{O->|(C(#yu(dSrm>)^cPQfWtRhF*NZ?n%@!k(R7Epqovyo-ml
zhF%IfM|rT-%RD{@SXZS7kJ5LuVu|Ec!Ez5v7c`p*J`@R}KcsF>2yYTgVGiPwYkJ{e
zLpI<L?fD{j$nVjBI=jZRjDh$$%9$VK3zF}7=8d)QzuT`0-P5UGCCXYJ#bC0ix!=0S
zhE1|ODN2tT!RwS(a!RoI9H#dzEaHb;52vY(?l_{42&<U>0@Y;3lAB4^8)UAiAQd~?
zaZ`lMB#GWv>M_78ow(*MS-y_J-FO`TR&Xa!8*=9Yto?2T-XgrtJUSd{V*HvtNHqkH
zRIX_HcXFN;{URwTpOo=i?z)3X_DoFn?8@(cH_qG@h~_2V%v_Ud5)SQYQ^>RIQ?|LQ
zJ}_1VD#f9$%<H4|4=F6WkM3L1m3t~IYhR+t>_6W-Oj;7Xnq`(2%$fg|k@8GDC>JnN
z0-~f?v9P)a!v0F@)-!9_q^Ju&sKaE%ylrQ>c+3*0ayQ1i{DBeMAe%Lw1uIqG1ISmH
z<UYu>v(6k6T9zb!7|2gf#5SZa=B&3~lNne3;aKi-%vfD7wM`|E%3-q_jPhBhVQVT`
zuzpX>F89%0vvPzG1*$jWp}9ul^h<2!iu-=`<%HTSa1Ix2LULW1UNEv8CwuwB46plF
zh8@lCuz7Sk?(eBLLI=_&>W6H510L4m$ySZe^+xI8bwg@Z-nPdo$?3gI=N?bd>7t&z
zT*%1ID;uvfXb&n{F+WAMlTC~8Ba_Rxw`$^e(myc)@kEm)Sf|Ae+u`=F=yzo(JD#~R
z3|{nFfvq)IS8<m}b7`2!5fk1Z`y$kJ2@P3USJt4|+9DJwzu?MXnQ*yRy00)LF~=^4
zalx-jRa*k?5?nZieDq5^Q?{NI==6$A0RvaYNSm#fq12SkIP(!0P^D}mBSYeU96n20
zZKm$m%F*CogX>^^iz`HW=xps?o}QgA(;H^I0<qYK_~Dqgs0d`6>Wad?`kh7C)_A|Y
zU<}!hd52j^!HQ%$s5DxzqS9FjcEeC0JDdMr%7gxn%+gpfog>W`5kmRlb~w;0$s(MN
z8G+4;g9_|aKgkw(H~*WtLoEr^+Y)HD!t%9RAtF#PS!lFt-!^uhlyW7rpV=o&ODG>j
z8CWC*EASm(*Z2dz9eFq~AZ-`OlG1c`x3G)xEbx5##|M9~f?2~dXz2~icb!_Jzf#5e
zq0?8vCj3{ar^~OkR9H4;^6$nJ<WSv*!!KG=CqIXXr!BAtzkIse`i?Rkh>Fv<Xm@8z
zYU!IxGfoVREJLRAB0@Q)p&)p(n*WXUV+*h}h{%{A_?+M+$SjyxzeV|HQ!l$%a4~w~
zS>p@yOtR*W)KE9h=4aM9r|&z#cxvJD@X)tu3+s*NTly{<iH^^841Jq)IBx|W3N^cc
zOgQ8NwZUp;F}5F^RvUK`DR}J|G48x$wI1w&<Ln`J9w~k6jyHbCjcD+oFv|DT(4;`j
zlh4XicuX)6zV`S9QuAbf><!qAqE8q8vUJ^hzT{8MeV85;j(A++-*M1b|J>y+RAo0u
zj0948MmA?`qmUR28TE5@MK)P~1P;)t2E0maxi0@eLdSl;?Ik!}LozW_pXcCcy8_bx
zlfUKd6uR45L^k4A=Vw-Enweu#exU}m{slumM7#z^n$t9<D9ok{Y$r0938wmu!&ZXn
zDM7104CQ(YH;{wQ%)ZkfxrLKw`Er}|?u<1pPM`_u+t6v4(ipX?HDhTQFxpmXktSY0
zm48p*EkYQV{JRJh8Qk~Y2V8T?cD(?D`tC9<K5vulxO;rc54NFvp@}REfW9l>ApS-h
zq!p~~cU{xWfDr}!KzB(Iu2$=-&Q!fIT%;@g1Aq6ywiF9bxbmW;PH`Mv4D{yjQwmTt
z0KMFM@ms3=;2`<^9Ulqn6nc(B_Yd2QwZq@__JjyZJVbLRF!o_z;-K4A$<U0oM0Sba
zwQ1^cSXgYas&J>J4sAdum^cUk&lr{rnKEU<jt-%+a#cbm#4EJUUZ%LOzm2S;Jn&>b
zBfS)jZNywE^cim!;;-n}_~On@-tpGl(j%YJq`}q57#fkH-BI*gA2Ewv^PqTYTJ_0i
zXFswK3N_(SOiu+6MNgv~q|IfoZq5uVEqzHYtLrY4>8VdrpsIMw8+!-<?h3>mZ`@}d
zDqeBE<A7CPez9YjEqJ{X?B$K?v;YGcAM;dlcebHVLkS&(pzjcZ?8if!MK1_1S{+)b
zi|!~L9@e@G{H6qW%8Z4!Zkaw$A82+IXokv@$jNz4`W;Yfd7aU30_kw&-cw2O+zO7=
zjJJEm5HdA9zV-#(bP~M>0%E?`jt5k{3vk%-;ZL%NoFG}~4!uPk^NQBtac1hWxnP^)
z{(iNVkfZaSO}{KkV_u*?_?%&WXh+DD3S<|MHhjSO%_~bSmfbW!dh2dYBQ~JCDlfFV
z$9xhrO5Na5w7Ya|POX~rIT+#Tn-tf*kSlan#sQCGCg)=L1vwfgQ0gUYdG4a!f=Y}V
z^78P43_j=Wh%nWfi?^<j3*V{nsC@QYrCX4)TUN~XjK#enjm3In-XPQg0^8a<ehi)C
zKb2<M3#%Peu;x>IbIPwt!a+KXhV|-0chp3CIrEi9%Cp(Jbe_y6HoVSgTleW0k6Jvj
zCNOA&%(%-_hJ?-Yz+WoK8;uAD6?kSv#@EhqfwN)aSbU&b+TICnvyg;!ZoQ#ZpSOH|
z^pWZ=vKvyzmtyvC<+`)0pMw!12G(2Zb?iyuI>a(!JDM@Ex|R)IAnlwmSs^M`juF&d
zXLkyx-cJG>3YCmSSw3^zp2kyb+Y4Am9_)jSp4BET(WId$z-V2+C5);r8PqFG&u?(_
zHU**qlU8@n{ZEQX*>@A#*L~ZQ-A2+E!7OmFT^=|B#V!Us3FbxL2nj*6oVAK&=T&jR
zuF*+o(^~Q~TzOH#0%&H<Xr|wXJk~M+0jwkfylJKE+S9uODeJXo1VNO&DDqtLy1y8-
z#yD|CWRaXsfYK!JjWPD)IJ=lW%#wS9im41s<Fnn?Gc+P|DEiOl;67um5T`XWLOy^}
z<l*myAztxJ*r>D!3dcu2ZYCZ+$CUX}Bd<I?vw=uLzGqLlBJW+JAGlg-+M&_r#%#T0
zvWk?7+Ds?ULZN;8Qy!LXbY6QoNlr;Rutnx;XDF~vz{x3+Pq-{q@XaQKtV+PGVq2}L
zW<yQc_TK1h3(@wiW}h@9!FMLj*_nK@pZd-|4U<fH&fE2e)C@-t`fr@NQs~)`gidCe
z=*;JaA=O#LKo7v&*doFR5d0kIY*FFW?i|v2((&0_luS@uahN}A$om4oCxxy&v=cL|
zS4#fW1H>am!^Fy{CT&>>UTUQKQLKjQMC4Y4Hs<#}C1?q%MklQJfIa?v!gw;~t7-k-
z<-R#CHt}%?vgmxvc*eCoL2fMKJ5vNGMbB9J*D^M8Xe1zK9$Q+QaCM=>M<x1%Is0!9
zedQ{c-obleN8K83_C83BR$e|Yyin-G5^xeC!oUWipoa<4wDX1AjHa~*?<@PuKy=|v
z|4X1BH5zRup}4WFNO;1>+0+1RDGrQCD$LXB{a4}J3ttPXi`~)ts87b7NjrYLj_7<J
z7r6LL$Qh6*5$)TsP|H%WkSJlP0o0L&Z{ls`N(m`e^%2wl+;tTbO%q1Lu0J%$bF{KV
z-GOVM>k5)Fg7av->gg;&i_{xaB?1+lQHzh>?u>uZWdGFd*~#47KNe?InVd=kSCv6K
zt2<B6z2Z9kKCdtD<E{Fbk~N+_U-`B%2F~amf2Py4&uqYnH5gkDmP11*$RPKqT@5Ns
ziI51GyTIv{jH%)|QU(*5ZLx0g|Jb6*S^$pqISx=-0Q6St#sHdK(J$hxb|``<22=`-
zq(5I<M@92b52jX01G;&Pm&(0QNLxE0x5dj70kbDtnp*RRFGWGOJqNV(@k45s15KXQ
z9d#95o6MOqZsquS<r_13Ex%tqvIHfURx31L-2`?wG&;EFd<PS+1yTgm#^2-jd;roN
z+7OJqTN-VAH4@);(x;~EWUi?inheg~QUlYA$VQT@k$fRVl#9#ry*lgobN5l#Ml2Cs
zs26<|^Tl?2_<epMQ&-^GEK<Ig%N#w)63Si3Svb@zID(Yn;E({&0{e69>^WuPx(QjT
zbq{CCs)?XsEH4tc;C371Q~C?7!UrgDS&gnUuWr44Ao_EIA(R}YEQ62KilCjUP)%1E
zCy1F{g}v&8c|uToI{bZ&$aflyW5sRvSI?y);XA#I6Re3qyh#T!>ee7i?mr4HJ#{9D
zHGS?|7JKIlZIw6$l{7UtywR)9AJ2S$jEQ#bUz}F8wdrN>R%^Fkd#TgUeCz^hWGtb#
zXqZMrWyloLYLk{VZ{yQ#k$e#r(5+P#65i3&vYGtAzb|BX9g>CGy&O61ZZ7B75NB84
zOeWfn)}gtdQ(h<bqNZnjdvh|{(LiFkJ#T4i0p}UN(W<(&Q{UMXy(E%3VKLc0Ob-16
z9Z`E`tZxT<ZrAf8)lMyniRy2<Tl-(-xdxP9EO*V1hUawWnsk(Wc=85cN5<e)(=)h9
z^iOif-NJSF(%uqa`GGuA=5MhPrEIUH*Ur}1W^9tP#wc#S3`SA+Yw8qo(yQZoBJ7(o
zjkhmdpjP_{I(M?uXq=cx=-)Ue8bk~>w1=8Q2cS7^EaU*~Cqrd-FY|RT*?NK;%!Bvx
zA4pX64x0z*ZmEOLh^YzJ`#U}{RZ2<E>{NBw;p~44Y303UEfIpN3G=jgXQ8-%$w?j1
zx;yp0@x1W{DL;TSfq0f&HU7P^QOcszA227q0Io>{Vqotdd(zX5?suCE398J2Y1fIc
z3_zPV(w%x16QXZy1`?SYRidjUxR#lfn+p`XL~gOmhfLpZ*X^W+GV(R<$o&<&DyYY)
ze+D?ABick44Sa$|wMweKD<u!=!QL>$xVZWiV5t#2^3Y3u?8l00`U~d60tF`eSBu}{
zadxR^1sHoMa|$5r`0CU$*wl!}N1$1Q8yt|qK)!5?D>alk!3&rm!-Z&hlU}we-&yyu
zQjYfX;q0`XO$ebh%%0F%bSf|<WFPVq!ReOY)zceCR{75M@I^)mx$l&o&#i@h1fq8Q
z>*G;P23$KOqYnDm*Kmg<pH7HOEh|7-;o~!mkqtZ3JK939f<FCcK1zc>^6Ygirh&l8
z?2d#U4^9(2;W0S@rx#}D(bk@WQ98{Es~WK{3Ci=?e6IH9W9Tk9q#Um$@=3;u+*OQ1
zogpaA31<zBYtJD4cUqe(Ol1v6Kcj6L5_Z=99{@){xWCu9f_sfVbu>|%`eIMbLB_M{
zPppv@Me=fsP9vfv3z{VWAN4R^otnZw`Ap@0_kTArXB$Z%#ek4NW{OlMN|}?1yhK#8
zSMVS@L_ebc6u)?Kk~$do2?^&;WlDjxcbCIQM7I0S?n6=~I<7MF{>h1<C~&!|=7PEH
zmFTNa_xtezd%D+N7J%Nfp*$tUNg@-KCF4E=E2&vsT9S)XVi={un<3IV50a~3hg#mh
zLw~F7q$nL^kjb&({=RqUt?_~y+kJ6T#E5UKfO!fDI*|M`q!it{Kfbp<G$N3|LUTn1
zahKCxTl>a#KIurdgq{O*Kdg9uH8Wd2A_w((>&F)tBfLO~-JM9-MZb<#DMTK-@qEWC
z7L_>jC|`R~x}ezT8`Xtw5#2E$g3lx7RDT^~AMorzMA16+GYwnKWXSI-_9Oo5IWiZW
z^`<*-1lQC21Z~ND{4S%}z<Rd4<(NDV=&>Y-@{z~0@V@UD>}21&eLEG8ooFg(%xLC2
z$Ttqng@XAX83$>X0`{~K#$AQAVSwi6RlPIG_|Qi77oheqh&B4#GY;*ZUHfj&{eNV3
z4Ihp8m$QA$(eOMS{I9+#!19(jKAgnX;jT?pSjEaMP-{^TYEs-{t0IVsq2wuJyV9Be
zo||=95kgK92qY&y`ORrEArMULfM2zTa$Ur|?1`{uY)Lj}Em`UBkdQSig}1;*_Fe(2
zu$!wTsV8>DGG!DfIT=9Y+zmuE27ka~d@Getlh3u*VOpBv^H`fj<vLSKni6IungaUH
z<p)s<Ulq{x$bcIDZLM2am8$h&7e1#1&iB0`6uzlkrpaQ>2AH9CK32XjSgnXzDm6Vq
zsHS)&(?%?c3JR8TXo!|4B#R}bs5l(~Xuts_V1V5#YHde>qRi1mVdbtjd4J5t7EC$_
zuDnf1iBOI1SO}$s9BP42V#c!SoWfYs5Yo8@LDz-c-D+|$0>W(2eRzxFMlTRxFz)Qm
zxx4Ap)OX$x+7iOxR~047Cw*IuR%Y(DTm@h}nvxXLs7m~nCJs{#5_lNDN^e-v>nlZ=
z>TL0r8M@l#Uu}6r@#0(IJAdhI2)0dt*_v>2w_Y5Z!i-QwVuGnn?VG%8ayR!lW|+-6
z<<z=kK$?W8qDe0?5CJO;a*8GK)1~XeR8-1CNCuP8;8neHfi07ZYhzI0sv{QEqbpi0
zu0heK7t0sjz}iXYTW12|H)-=+m1-bS+#Jf@ayp^7;>Sk^(HSgs+JDIJ%|Wp0BT^nv
z9R_4-ob6LL#q$*G`6vuiX1F(faGs|5Nhfuf;=;_|WqucjiPA<e3uJ~TH!&H&QO0y?
zWQCH-A|h6i135|RL%vGHW-hgHdP*;fSG~cfqq?I@HH^;<v5hL|yx>MM^+Oc`<ZGCu
z_)V^6YVHwjSr-_n)PHT6?Egm84_Z3kj~>Ra(1Gl<95~E3&<c&)8fhZ(x}Lo~QMl`@
z9Ca0^XD(-Y3hi4OEb1{QO!WfLv>s;XqoG{U03Lw&7hMwTNT;V3^Nn6-LaG5Ff;H7l
zBx#^-A&C@j;*o3|YZ4(^jtxk;M_EGk6$S&=?OtdwZb5~BZh!8@`v}ORg*CwF!P^@|
zoDy~$7^q98YIfPvfX$Cl!_O1Th8&u{L=nl)4s2*|(byh@HQ5ziJo`Ct9dTT+hRb#{
ze9Ygd<Ry#prc5L=1B_Y-1laZ-j@|<s-+m&C;;pd*b8L`E<50ko2_y+iHk5%jgKVGw
zkbs56J1!Z{Z-2t<j1fe<Fp@zWXd#eHBuUIgpp-%_A+LGnGELTo*(SSMv1ZDXAdreO
zV3IGSz7mVw+d~8bV50*uW*L?wwRDa<%M^sPoi#`kY)UmMASp=3dZH{&=1#rZJ8ERy
z5NM#*rP2u=PSVge8&W0Pk_dtlvKOUixw5e&@LHFJmVXeU?*ZVVf#Ph+mgNLO9o(Xb
z;TbZ1N6If^nF7od*b_lol&Q)=gAFR|Q!X=7*<li#&W%9L-HdkeyxVTVSAax2#9%}q
zY_@u8BG}?#QoZ-hNf;_jv>*^gF?B3eEo3A@q6j)^S6IXi5U*VIJ?nM8<Gt0Z@A7?P
zi4c1@pb8-1@*+$^0%clSmzbIZM}K|+?~hO43w?B_1p#7a`%owoASCZk;^MZgG@nbP
zmM74r$)YUGv0Cx?#V}1=N)SWv&|q$P_yy*$?BQ-?wG2zjqnb!bbR$si!P7H()V|;R
zYGiqS*Zrk$&)veh7lt9bf~AO1YB-nWOE{Za&+&E;JDWUvrXc`8^a=6rTz|HAsi=!f
zvS3$y;+a#UyFvozoqLEJbnuaw5JZ8iMbU~GB7{jNzbS>iod5pp?ebsi*E)&>pL$Ux
zsrR&in#xODUH~Lz@My;DVs^RSg>&8JQ{Ux(R9~GO>@JqbQ_{rjMVCzE&V95#oe%1e
z*!?Ub_{2bh6{$&ZAtMyCN`FNm2>}*JLsmgHQy`OTrvVSA!s9ocuJo2J3@=C9f2Wx7
z3Y}*?B7{VvCs;tq@0^0v<e>@&O+pWOL2}_ZvIoA(MkVK2>%de%&G6yy#aaeUb!Ck=
zoiVLgXzIC1%t5YLv;$$V;4i~%V^@QcM)S7Vw^sOyGqDFv?YhPGcYn?C^^p<1M+>Ps
zUq&_~kHgZ4ph%DsPJNtaCuj>jIp@>_o}!2Z5DBp0M^>oE)$@U{iDHO+JD6milVmnl
zxwQ~4D#VN)522wXb!Zrf91d6`cB^fEg5wva45C8@AT}H(P40uV#WE2}6>q`7GE}5g
zrbf4-oDx}lDyedsi+{xaPC#0q4jtg=oF})|X|8jFoKVagClFi~iBN=+VTEz5363S(
zCLOPJE>r*NAXZh)L@XX=V4-@;0}W9WL&Ddw1ZcsdoW>!M5;d#I(O~3+2@T#PfRbF6
zop=&qT$g+ZmfJA%5nA`6XF~9^I;e@Hn9R;yX_V3;Dov;-On--&EoMm+ISic!?3p_2
zyGnF^(SMfgbDxDM_IlCgv4kWM00;mNPypD*)yDg(#ozbp{|m^5K2C@`>z?tRf3rZ5
zzHH$#lC&uN7lidx*pGr^yGLcE{@Wvk`Fxvwq_FNLPvK0^f(En3UEn>fAzm%v!<<8(
zWugX5F9h1cVt-n_-~z22pXWcY9KH39TSvXL5Xi_;>R?Du&fkJxruH$09)uA+Y}7(P
zLP<m-2qyglN=z+_l4rBTKair{M+vS)g7>IhZK9GTY>R!zlEv>-;F8wX>9a%!v=zFT
z4gnx(8+L%9@Ep{^y(SG1k+Y~*D6SmuiQBXDc-%e8kALgXtWK`gRDD`sLuj0)!{#0H
zXoCbH4YR2DpRfKqwwrfuap!~_WW{+7uX9Vb_#(4T$c~<9Kxw&q_lX}|Y%EVOJq(a2
znN$VTdE#u5UZb9Y<{83vNv>6gO*W}=@p33{FPz`BKI+-b2Z~ggd$8qyvBELi!$CAE
zg&+!<UVpsF?S}-cTX{Eb1Vz~s{6!%|1_d(giesc;R3)fRQ3xB}#-Ym^56M6U=7~Yu
zVE`zR(up?((=WS4j5cyEvA1ElT9^UxhF;C^g{5yuiG*HPl*Jm<hRoxD8Ku2NAg?|n
zwQ3Royy+<{u7T}x7D1#CS&Y#X!y`OXc#2Xc9)DG?FyVha0fH&QVz;;KIZWEQtK&$f
zbo;jX^IiKLACK~m<G3YE__s&2g8me1{GqTSU%HY{D))+78ux7XXGW317F=S(Ds`3F
z-$k~@B#c|qt6LM$l%O?prP?wTOHGc~YmFma*}82#)Q_oh&@XMvXVyBa)8U$y=6zAH
z34c9fnjTfuyeQJTNR`o!u0ZqupC#^<N6yXuXU+*IT7>zt!o6Z_!n8a@DzY9povIj=
zL7ZnE_k6bCvuR0b)VuSK^AGNtlE8GZ{$pSbkPz<h%M3F#CCVybYr-k$&e3Dj)SToi
zggO@GasY4u$`qH~IY18Ml$@Fap^gA8;D52LkO$*A=mbr)q<;`*)ryqosk#=#I;~Mq
z9sr^}tLCR<aV*j0SsPZSxaxplur0b1gHEuoS+#P9LaTRukw0=e@tLNK^rZHNT>w*w
zd)}AVWJdFwPU_R)tUG6LbvFCj1-MvC+{Y}9pu!=5YrAecFf-liBV5%ZeBhoIAuTvZ
zHHeuyRQ2X_F-j#H*oAZBVKLw#h!SN)2<XhGh*8>hI%ByI<q1AMXw?{&p#vd*!zb_-
zAW+a0I0|crx}WB8C`OBL_<qi23>|2pjUI@sXt>qi68mnEIt+vr!jucDn)P>MKkD8A
zFdUhRjN0TLN2N^%itl&O1I{d9+#EHA>fvj;z{*N$GVN0$-4Fu&e|9McDoxHo6Tw3+
zsemf0nh$DQ-C8Ce*Zfezi2xse#DTe`ec2l;<}H*!Jus;OyZus;>zj=>Y<+n?O7ajp
z&X_xqz>?9*EmoK(ycP23&h{n^0WL3<mz-tq#T^eJ^W+^qyn?5q)HXALr;Cr|TBb`#
z`gs8fQuNRFwL|famVEZVbgS@vbqiMYp1Km|8e7J`?@5~@{9mxQwAP#ye(Ps&*H2n>
z`#1@m?Tx(X8A%H2mouURIe)cp3<SfQVcjv*2#5%iqiEUxZu94OTz2PA$aA}Wwt;c=
zKP0DbKoV)BA+fOxWDsBxVG$n&!u<6h7C=BmiU7sg^*p4`hSvM7;P1#?XNw#ub-&+s
z^`zTPj^rNv_FwNsMHB-X!nY|0z@^BYj>CyjPd2D!LqO=Nb<U|&{(q<E?!QuWHjCZC
z1H4FR&fQU}Yj7!Elc`>NgOiaV9$OFKWHfe+)qdXhjQB%ry8lt&T*vU2?7?5_Lr6Hf
zH^8iOC=2_7CkaaGS5q0<i1W`Z3Hl4)Yn8G4Ah2aCXRyRb1*w5j08F%{UOE8KP!;q*
zJ09Yp@I^Crk15WvC4Z;gow1gJ$|9r%QJ$X@Uj9BVDIwW^Zcad<G^9h#l0`IqE^>_{
zNbXUj5lI)!Nd1e(waQJV@~PaiW~7j$7u!jdh2P*}Bql{a_|&W8-b>0W_dg?P&sF$&
zMOZ)O(-)+yCnxn--7HKLuMz~9fEKj#u@@f&Xy_+M#Om!VjDJUmL|+pY^*kJ!dN3+$
z{(YueT?owsS@Ea&M-+s$XbL&dtZJb(p;<P`hd)HkbP7*gW>gWAgl9=i)5_1+(oc7|
zcx|!x{3Dh|-^&|Fib`P_6m%``=O|ri4&mZbQ!x&<c~HsCq+5)NQiJYQ7TH=s5OM~V
zYy0s%@~8(8GJlk+nKUNyx^CkwL9pXD#$y)CB)ts@OMF4zyhRXlT7!^?1bccutxv~X
z4pd&T)k-EV&1%L=g%Y0ZrD6zh3X)-YSey-@I2<Ma#a}K^<7FrR2O%M+Y~`HYo9X%K
zQ<CIAtR1U+wQa@GL^o^o3?+H3AucQLJCd9yrK}zN0e|E(nLsKGQyfwVks)pq#n9tr
z_bnfB%THA$)^zn)m9HrQE_xI#(%f$CP<^Wvaol_wFPitC%l!NfpB~<<d*76xYDYBv
z<R*C*Px1)zWb=R5HP&-Wpx4q}jl7(fALw1}ATYjhvJZowEWnfh^r6-NW0(rx4+)}(
z{O9zT*niq2gl<RhUABGW+ZKiw6V%ib<#d0FeuBQM@qMewue&YneFVXkw<rvfQ9yWz
z{XaE%kZS9zs^Q<g3IAR~+x)COe4Tq_PVtZ9MSTBrv%%fG^=kg}@^!Q$f)6+O`1;yW
z^*{E1+rl)hKV=NqkEZmsFg@w+qzIMJ{7q}#Qhzhn`ISXZ_^upes-Mq=BNHTZ%_UKs
z#A3x%n3>3+qbf+=#3*!6YC=QSmbv`{2lT2y^iamn2+ZK1K`Uw!C!5@|gwh>}8)%di
zeu@$FA&J>)VDG-M0H0NQI>)!`#uyYtQ6cz0dSBR<w8Tm;Ru2@2|4Rdf<8|=<KL4fm
zpMP)nQ|}99zMy1=cTh3bhT~L-Cwxc|I+Bp&CkRlk`k>_#jls1N5aD)zw}rcsQqy_7
z1iqd0B=gJs3s(1Ng&C!L&$-$urGbv}_L^RAZ`dA<Gm{`xBc*z`OFi&9qvR&%c~t({
z-}yB(N0|f*+<Nb;02cS4_+?d8BH~(SK!3}M{25nWBX7*d#dd0{QFI_ld0=IYrC)a!
z$@%CivwVwr7!hK&rlPE5S0w-Cb%cWWHDE;q=zk;UV&~|)X_Hm6DuvFe9E1}xT#xl3
zSxFKBWs>S;t18Piip=$aSi-zqUWOdmDMSn`6#)F|hx2CNsKSvX;gT~1n-V9Td4Ewg
zst@MZu+c(R9ccoah-K=%<JNdJFy5$Y!Wg1}h(P6I4Jje18c{Jw$3bb3raa0pX95V5
zDLvL=A{YNd^zO%8=*Wt+6Z9h`Jg7M~{+#8f0d7Qff5(h_UX;ZjZ-(+Kd|k*3?Qx#M
zMPxKmr;#U5ztxcidy0T7TglLShJX9G^J_@u2r?U}p8GRV9NP9S+aoI$&1RxUqx_Z;
zB&mD3_qrT{@b#W|+%l0go-~IJk0RIzIT#-C<%wwIB0*MhiKI>#Y$3)yR|RACuH9Rc
zOqeg0cbgys^K{|GZTb}B&oql+$BH5cH6=?)k)IF)s3=NZCLMdLEO9>@;C}|0HcM4d
z6=|+tZcFk{Tb(%u>8Nf0EGbDQ{P$z?`cBf4mhU)veu5;%b5Tzq)@9@&g%8oTbPYWV
z(_)NZ?$}X2gXXTj$B3MscFkM*%P^1Hr5Lhd_n$9vii(P?d6d1wj8X9IA7|z<f_Qt}
zb>6p6fu$HD9m{_uqXpmupnoDH5gyTuU=iI8T+)Uw-{U2*a-@&U!WEu|EsGvC#godu
z!zR<opw#GPq&L?5#?c0rU41kxWERS_^E<DLk2_FYQ(T3b!1$MK0CO~h#1d%}fe{c*
z7Vuy=F={?|71Owcx{_`RH$MHi5m`2>JbIR@lY;brChZ?qIQndnj(_TxQa7jNVXabI
zN%szCjW+BC>XXC9H=e4zhQvfXId8eh4#UQDci~t(m3lw`VF0DE=lIrYsw)zF?T>n-
z2orTx84ew;^HFN6Qj&`%&F~hcJdIZsqONT@*V{_Q>wcHZaBoB4p4y_Y@I>~GJH=>r
zg#3IQW;auI;ceIYD1Sc=_m&J-!9VeP9S$|gs?I<8-X4nl?QF`q{kzRwnqq6(1;Dx0
zh7L-5Pkx^DxG&aplIYHQFJD(qejg*cwtDRECSvs6Ejr(7w>x17#Ay-+B-3fIU<?6-
z5gGgJJw{IV=?EHz0tyJlj1@qiKWP+2k&FZ&u^+<Q!u&Jpet%9bZ>Hhj$qnBxQEWso
zX{MsYiF3+*m!ehqT>_0qCu>B0Mvj2qWXu1#UT37w3+FG9_k}sd4^T23#s`~aK$t>I
zG8F;{kOp0mm?WV6yvo+ceBR+Zv%VEmg90{<y;7rqH$z~YzfRyB$QbPguD=G(Pr@su
zz9+d>yyguHQ-66yRW6;*+$knZpe4ajQ-ks4OMds)VZfkFK&b&sYO`-fSDb<6>q7t@
zI4Hg5N$~^#3z}~MF`6Ebl&Fyexd^=$Og4JVxfHT31+i?xO%Qn9(=6&Oued$aSMa^|
z(H|A}vHrb<S<bSry>t>`-sa<GYL6|a(A?sG`rJ<6?SKBNe(sQ^G}~#rE*kp|C|MM3
z<hzO^@%zskI<Mkky69DOk*oIR(63mTd6ISd))3v*_E1orW^BITDgu*p=|LNsZ0>Ln
z=b{!-2GIaaB@WID9CJM`@8)(w8Vhi65FU1AAR)9Ws`tYPa`ZR6&^VVhC5;=QN^_aw
zwN7mq7JtMu`I3YeK98T=-08W>V6%MYduoF0gaCjpd%eZqX=$-VM`C+7gTB4^^`F`P
z@8=ixkS1`(VT-g|@Jwzx6Wo-={3Z1D&OlRML6GJznLt?vt)n1DBqI<H&`Bi{MPkUo
ziXy>b1yxlBG7ADlfU-eIF(9g-BBVr<2ok{nwtp3YS^iuGF?wUF#O?Gek-8r_r$?O+
zZ9=;B)9OKp#0=V~Fl0c8D1s`YvM8Ci1^p&wW}xU`OY;36*9XdCuV}x)t~2__YnU+q
zyRw7*8DFTX|NV-1ydFF6r|M7YK?C(z2z;s`$+Q;mB0eA=F1G!&&WLmTA1YqbGJ<<Y
zA%D-BWUcjNIV3d=bL?B(#kB@m2_=#EIA)Maaa=fXiTWatF)AnQn!1ajx^a_+KiIsS
zLkZubb@pfWuWVp-Y*4s8QMRx(?OF4ok|BPv)?i^w#_PWR-+$OXs?vwRo~I;hNs%ZQ
zhG)L6gyx<s1%s3Hl(kZmBsE}Fw6o-;4u6>oSr@1+h8lm|*4$0@1?s$w%*9n~lh}IQ
zzYlAdGX*wio}MfJj}uj8k8y2V1x!k0eE*+n$z-@2rnj7ELY5fKvHFD;2B8z3o<%fz
zA6e=>3acsa)#2Es)n!4HS5h$=JzoJ3)iW)+kc0IidXsrVZ#Lc9?=O3v(8Ypz6@RP<
z3HV2<K|Z=kA$h&9JnC8tQOLVxNGyv$a(!Rmc7oKY0bxM{&63u?)cW+Z)oG|{F-r9?
z(kt&T%e>o5>g$YRx@=mBVAhbO^Ci8hrG&T8VNv`ntpUEhD~ZUIgpyggUkP_I@cskN
zLh=rAhW>uyd<CDvA$nz3qnLvL>VNQgJvq?pFRT1Da<?o~JPA|kt2bE@wUj;nCXD1x
z{69lAEu$vRPm?G;6?-39GljBkio``3`JOi%8NT1xTz!41>za7i#wHP0=r8W#u~Cdu
z!D-|CUN{~NJXS0F4`qYo>dB6}oz9n{_gbz#&2jhdv0UoJI>!t0&(Sc#M1PF^J{2&m
z6%wy77~JC+LU?qTTF{>a_!E;-lJW(aJS7BB7XTG%2r2Xsha7P&NzbK<qv-7-sQs4~
z<2b>Di#_$ZwHxzn>h+V=>Ad+&*;66a1TxGK+%*k4bzC{D_d%(Rx?p{>VZxrRugFiy
zK){dUKQ`cBY?f$qc~~+qUw_wV!-mvUPFp$G69+@k_nVc;p!Ha@EXt%&M9-@6_{yWI
z{l){n&R_4{zqb1A>!~eL6A6a&YudEeqqN#<{uBj3X+uD*L3Fs(j_jmB)g=mQ2hSXw
z=PAw|^L@*>MdF~c)0zlnaWI`><L29N6}G9)uXHyW87o8Y%i|4*<$q`<Z<;Q@R~wfP
zABUpF0N~-{`@g@&SNH$h%YWC$!QUSTTgkh=Q}V;<J0F4ORGLX~7z|*6vB3!>m4uKe
zF=SXpkN`#py#Lp!$e@Nc(oLUH{eE()7pF%VYui!me92!rc(W(s^#3AzGqLwk;TO(&
z71tr42Gdf6Kqd}6=YOU3{$j68r-^e9yyK^V8VlADD`rvF@floNuIv^in!>2j<=1Ib
zlo&3x))W&>1!K>Q8-WK4E__n0043#^kk}3MzFJh%ljl8#hq%GnV0nAKD7{(cxX%{?
zpXE&|tQzaC5=PZv5}(vSh>WpMZr0=S<-do={gX0n-}3)g{(oQedtctq_|A^3Cd6Cx
zqwH})HcT${<S87HwJei*XCay0lJRSLiV0cjMr`+n<HT*Q`_cdJ;pwS7KED~6ltm6+
zOgQ#qxtLWyuF-U)^Nma~4?BEvVAi@<?>?hH166oh<&WIk6-87;STkeB$3*zwuBM8Q
z5tRFvV~yHUI+sqd10H{!`h4Av*_$c}(B`wpDb3b8kQ8ALqyS$W+Dj+-0tGVOUSp@N
z&An<<b?@c0S)uK1)$1I9iN@U|SJT#rn0wKgxE%Lgmb|ux#C#2whK={doChY;)9Dh}
zx_6+o-pifK)1hwP`tpvjZ=@&Ka$~i-V@wryk6mO#QKz`D@Y;W66yXGs!yBV%p6sVY
zB*5^JPaPn44n-mp$k<X9rwOEw4prrSE}~1Pkl*t?_eE9_f2KW`cuXKdGHLAFayBnu
z?)Te$d6Xg{(@aV@w4qYcptNY1`QJIL`z?RG!jdS9)@v>xj8vO#&aCGa_?xS-k2_6U
zZr@o>?kpTLpt^tEENxwFjy+c^6iR`e#mhZyt-Z3M+`Znq?H~&#{4OKx$VBx0h!**v
z;~#B-)Fw;r{>d{Ea(vPaM28*2h)ACxpEI58Rp&MIugm{3;u$#pk_>~gR;R80_p)0g
z(R2r5BIhtv1#%7IWnywSsp-wO+bz)JzG(Y&U%T#~1&)99KPQFZg&ng0se8tMb@}EN
ztvj0CJzkN!e!>bUpqdV{0vZrbG?}6VOap!Lcwv#1K;4N&GNK6UtQ>8m!T`8@YGA&b
zbJog$$pc9;&zPbCD%`BdilpS!>Mpa*uGz$Tqszr^;YJL311Kxfj9PG3sVb~Z;i}g%
zwbah=jQD>&-#K_`$`{)CZhgr6`P|V9b9s+ao~QODTK-tD_CBjW)M*BjxZ_jcUAZ%W
zGz^!&PV{frz&IfWH{%3kOj5rF8!mBN&_DAcel&Bd6C|b$3sUqJT#T5-+a7qioKagU
zpIb%EvIEdJOp*(gtp$vD<YZBW8GQmzex4myJj8z=ZiS=f)Phq4#0-ecN0Rd#kFmNh
z9XAX4V;u6lHR6u}=ZJ!dtMNNwG|(Q473oy~eI7g&HOm;tP?x+kbjL{%Am8yCu6BdY
zlS`VS#RmA~&Di0#7TaVHPSCN**};nY5eyZfN@1+7u@-VFK%P`APDk_-qOT^Z8`rLM
zrT~A#$$)ucGL!GO7tVaJvx}u`qk9uDE{Q&=V-wj1STU9jA(SH7$T^&r>TOR4>T>>z
zOFI2~xzRNU#C2Ub(x-+<AybXUp2n{OJ!WQI+-c-(Gj!77Gvs@!H*<lSR=k$SV=lFn
z@1hyQ7$qeILskCOyPVGzOluNn6a5qDeE5I8+?A5?WtF&kZ~2us&MA0&g|}Q+m$`Mn
z?{zRXrZ2X2ug;%?Y@HD>jrg{c1?Ft0Jd`5^NXc6ZF&13Nu@w2!%Z^HX-Ww$@z@$kH
zwLD_q@l}|-r}Z0&Y%qbIo%&O8C%p0a7wZ252TcR?Zrx^k|I^btGr?R_;oN=ZOg(@0
z&Ng!jm4p3ucrP{ky$(-`UC&X+0Z>}Hazv@;dQ(!CfPy1EiZpepM{w4EM{sW-I@OxT
z{OB<WKH<G`YwuW(%0S3f^S;lPP<cAT5KhTi)5OPwY${3qMdm$Kx7efin*Un<sjdZB
zg+FT=A9LeFruTR~r7*Hl%3qm3GhTnY$ctq4@fo|0=MQYacH8f95%)=3?a0aQh5fWY
zaWZF4cqW99u+ozsIMkmhvHG`*Z*ELMn^1P1+vV;M%qN?XdKKr59x*7zXRu$B)mjOi
z?MT3!`xDinB2vemu!_j6@wFs1a?aE#I&9EDRJfGRjeAL()2{j;$!c1P-^hP^o`b(y
zYVn)QRw_*i&9}%i$fF0VJ?M{HUfkqWBX&NA+Nd2r8@f1U3eN|}V4{Q?2#6qk_OQVK
z$25<#@2AyXoOMU{YTMqwyML{GbLyw0Qmp2LLs=DI|I~S8urJ8V365@~OB0wy{zUg2
zsxe>q`vfRsFnFg3{E$avnoEDuOD2zOZy+mle)3*Hr23`Zp{YL&>>Q~rMF*iPacsx$
z24X<H!6SHuNPujH*G{r$$XugnTTN#&VqoH^<6n=R>y(yBLWRpCsWY&(!g7@IIbMg!
z3rcZECkQ1tB%tSDu0jZ?JTlX<DX8JIFUgcI*QZG_)8`#mXlL1xP=J3WVkslU6M*Ib
zQ)u3yH4X@f3xY+YgAk?PmStAKU1=Fgbuk=?3fOpF1d;(V!a*2CL*he+-!Y{zPJ<<x
zkUfpEB3Y$2lN(V%hDvEgG&$(s@i2Q=IyUPgJb7g_v86~Vj01A}z-7BK_wrRLae~|$
zP)2fY6SVF!s4<$+7&d?T!}Mf(1Azx}Ftav~WupudNad=@ttd5@LrLFX7sl%HyM5L$
zaz<Jom``rvEg)B<fNYs}BlJeYBz%%2+JquUcN$;{1Rapc#Gh4lK*6<z9ZEX(Q)(j)
zKKzvDSX5Yp5KsH16%i0#M`=wQstT|LP*|dh3PC|uD55c9A}D{wgjIluA_^=PF$I;C
z0YxInrrwY6Idmla|BDz1aMh;XYsY!C>d`78h=%W<)?p5?gvII#$ZnK`9py=}vUCxU
zW|(3Gs2uWu7+znGIOuoajB96Iva&(q5VVMCBmVupd;~<wzxg@GZyD_B<ia_vK8BIe
zOIF#y_A`?F9n^oO!<TmXEsTj^Q=7T9N<P=Pmyt)5-f}ql`vpM8?mc|C*-+$g@g*Q{
z9j)Aro~w1h_t*Bj5?o`e3*+(D(R4aT4V{<hl!vFLBn-@OWO!ZAPtM-c;8;sOB7o5V
zfw#$DuRn<>e@uZ}!U2Qou8yB2jfH&Kd&N#uVA~!pjJ<y@*9T(FGvoVS8(qOZ#?5?v
z+wN(mH1gsEi@>2BkGBTR4H~aPS*x*SBrM7vkIE@1n<`^%N>SVI3<eP$SzYE1?uo>d
z62pmEP`w+KdqBg=9pfX6^KUEV_mKP2irw#xebNQ$_`_eoz2)#ua+eD>wj)orQ76Wz
z)S7!QCu4t!fSGCZgtF+7+}Gn@ublV8wb|Wmt*!mi-N955O^3I;8|ejmM{G1~A%?A@
zHptuig#u%OdyxIuoMQby5RTn-mk>V{>)(y?iC=v{!=$6c<mI&wtNvDpU(=9sx<kgj
zgu}b<r!Td%j+@rl3YVGhEybSuQ}V?G<Bj5W$A^EdwFs*8R(<t1SwYEgZF-pQJ`c>@
zj=UFhk95NwU&*KR3&PM8C9jfiPgSH8NE~A<AwgMAZq62C>yf!(XbbGLXRK7KSliNc
z&~yBCtLJ`t(+L%BiR9aHY%<#|-vaTtYiQN@wBdBX;D2i?DIS8`0k`VfgjYmEMQ(61
zVG4f%619AtF%KZ20AmCd0vvIK3M?bNP5eNVKKHkjgL}E$Z?LR7EVHzfz3tEav`A8}
zH%y7cT<2dY7}R_3^3`jd9YWKGD~S_rt@f)koe_0=6Os`qwl>h19GnUu<zmaoaC8aO
z2;<-$`+M!?FG{K(P2_2?|FZv6*sa&KWYB;6-B`p-T#D`b#?l{vq@sBdnFHFTJq(>r
zwz7j4JQ8|d7o}L0gH@;__a>DJG3_K5q#u|U<R<ejQb~c>ZQQ|x(bG395nuCmUKl2G
zC4o{YH6v+_AR&Ts2FB=!Q;VD0ya{b>Wn|;s#iJ)CDv(gW=slLlC9nMq_MetMD;$5B
zdufp(4D00DiIzR-N1ClkJvYsHGCa$WF<yG@{LhOgx^dt$x)64Vh+w~Q5$5vf^=u<U
z0u{1}LQME9>!cCWGAV~hIe{XbyfX8V&lI8zk%Bl7z-`Ur(asqJ_GJecEkXrT!`s@A
z4lf^0YP>SK_8{;zJNEBhS41yEycB=G&!#gm7T%L#=ZY1&Q{oF!&;Fn7@)^J7f1MY_
zBod}kWxF%FaoginQm*6C^W;!A{pC04e2-)Jv26&e{B4x+4XQ4^afnl9q!I4FJs*Ag
zujXe50)|RS1?ChQ0!aOOhELv<$XqHhK7CPkqofbs$|H_N?lTosW<-5-N63Fe_tRgC
zLVtjujZq~LUUs77f5#t7SHeQ+G~K^Yf~-<w`0$`h{bG)0Oq}`oo25NhCL;A_Xridh
zIf<tx8WS}V9MeUDf`nl*Y6B2Rnsne11wc$<0W&h11zz_w%v2QHHBuz2wIZYvVi(xJ
ziMyd5{scSIti+OFluSy2C7FM;v`m<{e@6emD(28{3;ggDnF#3-XjIdJ#6r-ji7`r9
zbW9+D;8V>I`@`d8uUp8+m`hTm9fUf&OBsUnAdH-IN}DDQnW|t!bv|-S=HT{nSQot)
z(()dTkj~8zHVoB%%|BEL1pHP-SS7x9+Vq{ToA^6SO>gd(S%KFm4C8-t8>hXXAbTY#
z`TmKW5eM?$%q2qqgWbBeUWS}I`(y$V0P&sQa(5nn7;j&9$V2iJ(ojVbmv`P@ufG>W
zA#?~J;Xu3f)FMQMK(InJ87@JT0wASjXj>CXEE*Ov#TaNqx6>OZF;zkd*-<BaAkqYh
zBJhRdH8TV@8M6^6LaKk{(S{j|H6~EYltf!vTGXjRo)wfv7mSTb1d=k5x(vEj5I{vV
zOd2j*Tb!lM&J5EzmSVRiFx(1@idl<r;W7zDL2a;F)<vU5m9ZA%1~Qf-Geor&Qy40^
zD22uwu>uN(4H6JYA_#;V9?{8V8JL0*jH?W$Q!yi!T%|<KD!6}fj9@6^47Tj81hCj4
z6dP?63Q8J4+1Rv+BB`1!ih^S_!seGQ95}RGvnia~)-GvcIL$C(Hz`v#xub@e&5T0;
zu!tahBWPh5DVs6_<YRa;gb_T1ee0cc=ohsy4hMl-?@k9kgjsqfvb(IBh&>nia+q=K
zGW+}q;f7_vGZ23f1c+R5rX$$<o?MPcr&eu$Ne_m?5Jo)TQ^D@Pd+yh}4iWfizA6&{
zAPbh22na7OReP))>j<P$o8Z)`JC!%WZ~Cm)@t%ap2qxNNV`Ca)Y}`lkW(^zH|FgOH
z;(u#%?>J_SVd3%7vyt0eareKKCmcp1tbX|`1W2N?bSZySMT4&X6NOP&$ggsn*s>yZ
zsrxPldc+Uk77yE-e#ib;f5pe5<MPOV|4!5MGLL2xIcR@S{%U=vl`=oop=a&i?Mw==
zUon0s3H`2vJvO{zl&``}a(_3v$9JbE8z(Cf@$?B#R_K!;bw~NcW_jJbzw>vomuqe{
z4{<o&<v@RV-&q|;iRMJ=<~q>O?yHiv?$mZ@sGVF$z{%{fW69}Xjl@C2jCAm(9{_-E
zhaw?<e|?0R>{{SGZ%qOHoDbnmG<+s~7Q6@jFTBj|Bv!+M{R<BWLDX>51rJAbwPWqO
zt1w!WmUh5i3gUnP%OmBkPRIu0)dB0mpFANttfqe{NFnVgI!%-;@WomvuqY-VfOf@=
zA_O-4x<T@5>ytM4ZiohJtF_hNRGfJj5X!oy`lL}11~K7{%mt$#hR_ID1pJ0X*a)#G
zGovaXiAYwk+c9TguWE&75jbCMuNu;N<g7Ss;U<a4^@@y^ZSyN;s#vQVlg=@StDD#(
z#KD(K!2=6_<|0d2cx=UjBAOBt(M7Sn?C8n->HCwCHV3SVIs~@ST#MRjOaX$ea)8j<
zwLlP%(JK(YEwo!wjFEsw9>YkJV-oGRy<dpBUw12c!D7AGxYL@OpE7b<{TFLur9oXb
z*T>%SW109T^{^lJozQ{Hi5A<V$?3eWgZ|Iy<I%c*|55m{3=o&8s`VrNE-U(<=|E%I
zX5s-CD#ja=XOg8M$GH#EW~&m$CD=bikDq=LD2+&wwv3Zz`!~!#IaD^--^Sm?TdP*L
zSLxoe%51#gi_ld5jS`nR*Zo&%(O8k_Bpm*r{oDbmbyj*r#B}godMu88KE?zK==Pac
zj*>Tj#79-lUua_p==#1{U8@~a22{AwP3kTrnD{D^wZ02O;SqB{fvFN+s5PMPN5a`b
z3yQZ4tuu9aPesuY`jvp~POwKPfE@Q*`D6=yLGS#$2B7(KUhfJVKppjIjpp+fd%byJ
z_mipIvb6BI``=c7Ymwq)vzFT4V!74JSxuLJx!EmszU<xJdc&&pCg?u^P>2Eo9UfUg
zTPB>&Atb&Ou#*r3lav^<0%1B*Lq9d}n0N1eGziJTx6=L3^ehE{VygtPwyRcCH?^Ut
z5ELSi6af$xNeh(mPOV+`_G%GZ5ZXgzGzloCnj-HfNRp+cRaI3evQIOIs%KpwupqF1
zf`Jf7o6Aj{op)BwLea+is6TL&5TyfyrrF+sq&`U(5uC=ehwqKeMT!A3xtK2+Fc>y)
zsRSU5{o{Oy`4qGI?bDmBV_fEbM_!K?Qbz(bsT|x9b1$w*v9sm8y^jqROr2CjEpMo=
z;ack5BuTaKP(%_5*XQ{bJAQre7n5y&baui_<AMO4HQZQm1N<wwP|#q|uHK)~=lV9F
zPP{oVAWo6ZYaB7%#3DG5Ii9z1xj8;g|5YEIDm8t!^TU!u8L-PehH{bH=_d2b(n}gm
zGmyw$Cy?YZ7<OX{HM~cENyz~fDog$U_?&l_=}(I}EgB#*=V-01vONE;oe!*k96H#l
zX<=!<HNSPg_Vp>)v10TX)QXy16L>5lU?nTl7cXt=pqcRzsk|#>fuXs!4T8$XrFrJr
zA;PetNFamUt(h8ctbuX0-RTP1TDr%v^gGwntb##jsbq!zCwj~pmwoH6*;<`e>>c8~
zT$jso14xfm0}&;_VZ4jF1`Gv%^}c@cB3mcg;6G~+{D8#+Nn4;`s0xCqP%Wzc<602Y
zwkOrA#H+&DkXnEqtn3QPQz4uXe;L+i+%X5<<t=lkM2p@OumCX1KmpW9;(zMCr%e}L
zO|2E%^23N_e^0KsL&5HhzBG!!Ey3tHK3m4BP8&)~h9t;>S$u3fTF9M$zFu){j7Q2Q
zQVQ@H+c$K$vrbU17tN0=*I`9#uHzfY&sv^kCR5Kt(h_D|aheo^wSfg$|JK-d;R5CS
z12089H^>xjt5aq~dr-n36%U2KQa$oyF8A@id*$`!V{-cV^{#bpMRGxNR#M;0G$4ou
zO{=v>T986$Q4~Va1^Qoq)9Du9f*O#xpvjf9tcdO?9ZuVtI`wT{=09_`d;4jD2Hg}n
zL<0zvjJRNk4W}j{LfpgPhn(yQQz0u55d|I$1#q%JG3G;nIxn$JeMT`xLn7LdTn4&s
zBqG9bmp?K_`^(6r1a$@4d#MrtgTFkoBw>a)D{vq^hb{B2mp2H1fO0^B1$1g^4In{<
zWbfu6(Riz(5|DU;gVUVK9H9ep(dCM@ivozGFr@x)cMMvy{T3HEv=pem#CG_iU`tl-
zcsvlixwU3lH^HiqWC7%oWZ|G1QZ&602FSqGrFb&Q0gt9HE`;d+=GlKbo*{B%JK5<g
zd_mfFSe1|#kQz0A7)f??@9^AnVq;2kPSFi%tq?@XlH)Mson_COlBHTiClKr$B#IJI
zw(%o)wwR0y)y>-7+v}z41BC^(DqhA!_rzmyfQ?pV4b;2K0TWS&mp96_%n&}MUB-@}
zdm6y1R-;3f-obh&pQ$WZrzG!*??R^`Hz<4ps+B<`Mv_T?n*Q0Rh;P4s>!CeYaUp7B
zyloSTR6!^_WQmDnuwUiz>p?K-D$fM-R=Ftb+T_zA=z=cD*z@FpUA>+gn#LfFOf-5>
zw9iwNGk(1{yjIC=)3nVEOzwmVOpOaV@~&~j+S=<lBT1=KehHFIuX<{45FE|;Ptrac
zZcmc>g!E#6+)7+GfF!O{2q~yE6og;Ro6gNuANbaVRJxN%TEmd4D^i5Ivs%?mQKQnM
zrY%Y$I#SkSM*=IfUr9#V=<${BAXTkh!Bi_{*#Zs_P;5b>m~3i84g<5X(2X#yxvjV5
z-Im9H%;B40?Zv-Gz^%mFmzBxc<%+<LzL3r9IZ|PNu2`&xda+VQ@_Q4)NNXoH;5Oya
z)M})duq7`@7`elM2x93Trz#MJ(394w#V8?Cj-xUll2bsEhgqqS1rl(n*h>oui->fc
zQ<DJQBV%H0%6D!MCpYg`NA~!2(eCn>R{7bRW6A8^XN2!zZ5%vKH6gmpt<DLAVTTUA
z-7=|v(Iy(dPK-G!-6S>!jEo_IBpYDWs$7>Ac~Alf1dxHP=|b?SIIR_6ca@p1NxBKG
z0Vz)PJ@kM6ygk`=`BjvMb*Qv=_<YlPHi6X(CIRnlDZ>a*DneGG2$-QnH*q-P6}as=
z@iJAfhQR~-vcIiUx2qz~mA<_r^{3!4KDgU|8Cd;dTmAlGBMa(INX>E#$M$At2^`aR
zLBIL`4)YzDc=s|HG*JijGyiKJvcmt<&F*=UJ*&6=-1;g#`(IytWb!tac#ueD-|Cn1
z-*Z1Cz&Br1mlgRb{-+cosf0mCRy{+&+x>UOJB@o6S~)BH6ga;U{brs=PPYNGRfp1l
z+K)9YPpbZ2Hwu#fpYzb;1s2dm5Q;u}USS9xsU2^GkEDLb+eO^i`bK`&JY218|C)&R
zczgL;!2FR1$bg@NzOy;8x2n(h{>CVwmRS$*IDaY+?R($ZA4Z;C|L%v8lBVGV-MQk+
zP{|jdf|f=&Qg|u=+m%6~;CPSx*j}!GXuos-uZs<d%OCotzbr)Y=a!_+3<VbVu_w{I
zH$e8U=*uf-KTX|ViCe3P<+9M1tHOeae3el)bDJ7?yE{6ntIgudPQQ8S<vfUm$&m}9
z{V?7hcA7@b)a-ev+RtT^6KsVNu7fM&+%&6$!p<>t27OebTtRSwvV{VG(l_B9IMTgE
z==Cv$V70KNG}!ExJD8`ZEA9+p=y>$4QJ3J#0~CMT52Ezn%#G8=nkej1u0|%lkx{zH
zK(-x5>Ufx_l%yYtN+dbQ>mJ&dI_dLGRG_o-UhZhw+z>_lW5)7zXxe`R1I{>gwHdSC
zS{Iy%S7Rqltc9L3TLP4j<t#VC|2H&-la(Tv_srYxN}Vzwo)|&Vx#8Bhk7II`gBcOA
zmBD0UlalP3nJtaRxV9-Z={MUqyN0)G5{(eWbtw(Q9VBFfw8{BNIVK^29fh?J{?wjs
zt_d84e^r-|rA@oM*1H%bh;(^{5u};8V)%Sco|!KY{PMbNE$8j>xh244^%p{D30AO|
z*UJMUf7KjguVpyIDk}~P8OM!LLm{u(v<&LLlazbo>Q2v*0g_2CcF4&>5G1d^mCD~^
zL6M7~$@;J5Hh#{3{=H1@kkp_^8<%uHGJdI{NBJ*3N<VsQpoI%xcd+QM(whE~2!n~J
z!METT+U!ZTsd;tl-JsayUdm%aTrxz!R%BZ)e`W<7pWqvRn-iETEN3#{h)T^Ur6$rv
zQnNoi)u8CGs>&slXUY7mNHS4bf5(eK`b8a(vXmgT_gwdo4P7=#w;VW)q%iDJL+|fQ
zLBIcHeQ{EOI4SJW!*Dl{*%?SR3LyS$&E+H|Y{jsr5Zbw<5Ma_5sJqYZ%v&@Nk^nS?
zf6fR-DLO(8lF!_!scex~wdsQjz?&ICH!CqhohwpFBxk`d*%5pz1sH8*!3;{nh_Cfb
z$+c3ZHb_y2P$I$7F%{-Wn3jmS{`p!fWzK(bHNjWqUEo32Fve0J`CZ<;2z-m#3E@zG
z{vbVxlN0e`EJ)p9oZbDo+Dhe}9Fvufe?Op~wlHSjxj&tFEEzx}W0v^;y0(i6yfBs1
zWTazvh)|nE0!*TX+PCr*u2{ms4+_l53_*-GgeB1JcUM9${mO<R8(DL0k&|}1^mG2X
zs7p9t!q(*@6*Q(}_9$G;1U@fX|Ez&he^sv?tGE1^(pS5rbb{X&+*!9{qF+F)8!8}4
zh%EdQ8HHc+PyJ>NgnqQtAa07$Fim@=mk`ba83O(Kmn+T#A%FW*dNZXnFbSKs<b!5J
zNKi<^L{Vgr#6(4+l(i|dB{ihS1DJ*eLAb&+k+x0mSuG+)8-7g%Ki0-%oM8+8)ms-@
z7Gy;-?w+Jvi6<xtWvgOjJCrbn7{thOZ*@~F8AAW<jKvmhm58TK8Kl1;i7*C*kfj1d
zU90A=aR$<oihmIXip~(2q?9PBH?$oLPC*J35NQcE{?fb7AjBlGjxs6C!C7ij8lak1
z&Q=;JV2nlBH(%C<Sc|LeuDaf^Mm4Y5y=LcI-ZhxfXjx=ZyA$%GNYg_~3osM4+(1?N
z8atc3GH)%02(%PYT2lf@jO+bLy$sdzwQ`CD6fVECYkyf8#$6+lQecW%c5<9aBve5W
zD8jUvAyUW9AqNB!5wSIj!15-DIXHH|-nRrPDT36zB^W?ZIcntI97Vyof<qw?-QmI|
z>g3f@EmM_OiK3L<yG$!7Lj?=3*CogCmJjz1#0?1`Ee{G2vDkz`MLpm%wb64y5(%SZ
zZH1CcCVwVcsVp)T1r{)%q}XlQv@QsB8N9i<vj#s>phi=8H+n=Sq~cJ}fpnyZq)3@n
z7`z5am4w6Gp->wQ3UFc&`z4t%Vr=l6Ss?-m38s*e(rvN*iBOENvO!jagAo7Iw8m<^
z%;S!$5xL0-<d+T7K(wgaGJtYos$+-trNyyF2!Cy(l?fO%DomFMB2uYZ5KN^h5C{mU
zz<*lcur5ggTVlwSa`6-!YD~EPyj5QIfb_&Q1405$91^|5b~1z(K%2{qQv}e_(}6UE
z5VK98RsVcWDPrx0WQ-r?Hb#o43U3xAGQY^PTK~1)*R@K+P(oRHHpCO3x=$#oHfV)K
zn16)Ln5B4u5k`$-rC-dUdZx$}K>5#Kji_DK(g7dnO+8CG6H*w45O<d_ts`g*g+<At
zBvS0XFcr}>3?wja^lJHN8$>0$c?Q{c`M7t6aAMT~C@8j8iqR`X8&`++<Rc{#v|$tz
zS2vNd6hmK<|Md(QOJkBYgdoEVvKd-zohlSaq7emMhBZo+k)upQ{`@E)|KChx=N`F>
z(xNb%1gojlAuvNNV_Zk(mv7MnGJp8KlV);3j3DArj3h=*Vs6TcGxHe53B4hV$q=SY
zTP#tuLIk90p_()ND3TzVEQ`Vvn`AR!Z3&!aZwhjvFj<*wGh|t+r-VYf6?wwE-8f<;
z1Aj$|1T>07*e%e-UCg?vl)kB<lSv1Qr)ebxtfxp1^Osq~Tli9^2})uVHGgQ{8aAJl
za3-e86dfGkKq{#FCO8_ah5e+2Ylr^Rt3e#q+@v!}Ic2^(FU`#yL&R!bq>?|*v!KA`
zK@7vE4_Jq0K!V6$)iA_<WdRKico70EfLtA#B`j+&#Dq+ww*+Deq9~3%>?!wiom86x
zrOQ3Iya+DthM(=IH`?wC`hSElV3Ci8?=z$$WT=TS24xb6L{Ahf=3Tdi1}VF(Sjd!#
z&I1ulhD>7jg@uOj#NlB?#tt0ZsEKMqRU#@ZOiX$aB$-M|ApUgTAtj7+cKw69ps$w^
ztho{R_q>RuMoQ5bR+ue;M!)?+b`?aSWR)U;EySo06tx9h6-ZA7Q-5TyEUhk}r2`Xq
zzwWV!BM5RC!ZJh^i^D5~xiK#B1QQ^V1}QC2bf)TW8knT93T#Psz6C{$gi>S{Y^^8e
zB1J$jf^@{RTEVhmBL@HC+11chs|?x-h{Re9YcM~@I=C#|1YoEz^*Jv@CNl3sN`Iiy
zLZB$<KFHub4IK<(C4Z#>{hCJ7VTGc@u-cG_mNk`~7E5@a*507mB^hDC!cPi_WgtR8
zk_pA~=3?kYpr)0`NZ3IbyupBoWizH@2RTaW#|01?7>J0?CPB3-AjDAnoK#~)7`{!+
zudFxGVB0uP2n11(*f~V0AIwUH64r!UB^!{jmw8HG?VuwkcYmZq%wWV|jIjl1i4;K~
z&J1RJdCRJYY?~t@P??Cv9c14N5|INEkp{#f$cU4H38rpZS8B;wNuv<1k-7mwnhAqN
zf&`mrN8UKRQ6b^sphK1=6AaOshGD}Df^2jvLq^RuqYdJg3|{Gj`(EVD%C#He!+2vP
zmkNOoMQ`R91b;~hQ^aa+bcwQH=<L)*=4?qZhBTyJ8DS4`Ih;s`d&Wp*l2H_YVvvc%
z2q3f&B#da7CJKqD5L!eEFeYYXuZNTdgh36fVCLy8Tq0n?c?uGEF*7WHL9~NpK_O2p
z+{|1nmTck^M8F~#U-Og!BSJBR4dLJ#Ck1Ahc8S7|&VSq?dxS2Y5lB3lee|=UQyDN)
zxe$<G*~%FC3g*&~o!nGRC8?N#;E2DlZt8&u(oBPvT%1g?CTUAtYBmZa+VX-WA_!3R
zN+KKrM*v|!p1<0x(WQ7_Gr}Tjg4l_eu}o;$9fW>p>~n;Q3E(joL)JB+RCU6zxn{*7
zMB&~w#BiL|(h7f)B-)a(nTUb{QbGLUUiL(hU){yvM6m8`3JslhU|y1?K#E92u;%jZ
zFsw(@t)yL#(`Oit4GaFv|9Offt&WD|er9H%Q*I82>qvqsu%715Rt>n3b9jU#Q=4AY
zph#a$b$A8hrY7sqi`Ce2gfV?fjxLxb5ed6eLnj5}>)n6e3r4}S;AnzCK6=KVfq_$D
zq1)|T2;Q**CQQAJDW?z~jSwieL{!X|H>in7wh*~QUU?@ph#}ov-bqGGyfX_(lX6T_
z5lTpdA`-ozOj|A3wUtK1Nm$CTz`|ddHKEfG=%sJoRS$e(-rD+9GvN?cl15a4OeGR1
z$7Bvxej$G@*ABnsqHudm=!yOalE1O<Kn#!+#7%Qza`-;y*lPbaVIGv4hsi22m+^iW
zGG#H13w888#Gm++AxI?8|5!&vn%z(2L>O6`5K^n9AZVjo7!pVYE8Nn0=?d|`=J!|F
zyG=QsW^-Y47ePIVKq`r3SCT0u+P~t`<#4nsF<XCl<deuqjinw*zt>H!5(s{sGzmYa
zKQQ2$zE=$Kwn#$kGcT@Xe5SZniV9MQss5Gf?;D<Wa>!41$pXSL`hoHarJLAv7f|E8
zcA#PUZ}U&_%R)#_>X*M5^vOG=<+7lzS;4*!cL6C35+M5h)^I*ylw4chj06M(M1j~T
z3L<|$vl>Yd-wBb@!s~8-truFO@HiXjAdPiW-bL^2-_=OlRm2Z;&owAIXtAHUH=G@m
zx4F%ezc1f{T2}@(@R}jT%jfbQSJ3$!X#^EPMk1=c6MeofQQ^C+c&{Jp_Mg{9avWyG
zGKs@kA4d-tSBPwDtukEWhRHC;#mqn<Kn#DG7>a(HRxD4U_x|JUy+2>8Uhq)f$BA%>
zHbJx2MMUEdb-ChP$;OudU|1}dbkQbVY8!2_rmi)ury_7CgIsaIcn6?c%mp~P&^+zQ
z*?Qi)_N*v`mngpJx9W9PX|uvtqQ$iGkoKPgz}<9^Z8$BwVub3z{34uA5*!Z&DjR==
z=M!7;+H?|2T3tVMQ!gmdvc%TQO8TyFM`<K-8fc#WJY$sGX+;fkO$T{BEpmjwKqjAt
zy#AgiN8iz}OC&71_l<)74=XB_b$_0+mR^yz_`}VOZ?WZH-ebcJr;o83gld|a8bW)=
z%<7}@P-|s7Gb>;Prl)2G<{(iM5S)L#9@2}zo1KTueDiT08yBC4<F@E>J3pmcc=#d^
zF@ouz+v;58^4*)RvtRv{uJ&)3|EBK2X+zi#y0<L1w*SNL&^&%}UhG|$%^<c?|0&Hp
z3<4qm5~6{MEC*5-(S4nrxAkeSJDoS3_|w8gkQM-{MFZq8vM@maNRU8C41Ry>ceL=q
zI820iS0px-{|gF0Y=kt>7KVf?5+=`UG?X=d6y!ztsBN~vrR{A>RM_)@5YFD2Qj6ng
zpWWPG+nszN-sUY6!X3wj>$%ZV(dB%PeG*}uS-CUhdu}hDqB`epzZdzXx8c*L@Ben+
zsIRfLUYX9|;kVdj#MwO9jR=1UekrKQoQBRqQ)Rn$;s#P>4B}7}FxDkHydKAY??0D|
zgUc8i^CA*CNGJeQA*Z&^Kg~V9`V_(4cK7S|$#OWNhZnKccQ{hSNIU`IkiwURr!%;H
zSAu!R!1(sAJB&4rTunQ!Bij8Qg3Wa*Ucsr;(^63N{U<_9E!iOywPb&2<|XX-lfb*U
zuGBx@2$Qv4be8C*TO<__seYp21-hWHF?U(Fd9GevkMFbcct2{#%CDphBQ7S+eexL4
zRiozq6f?o-^Ea6rJNEod{mXvclq(#5M8P2H6YaQ^dnUVQh|&+J*8zw><)fNm(s7<H
z+iA@HV|!V=zyuyeE`xuCRULp?tsPCjiR-7wubcGtRxFGBZ^e<T3*T9iN>n5z3(3Nd
z^6s^^=n^O`;NO@9n|WJVQ?{z0L6Cs~@vwZSF^^}!w>2-pt1-wc8fNZ4^{V-^`BoJ1
zM<{L$^L~ZRBm#6|1OfRQ?s)9Fll8Rlfd7ok=f&VNKMz|Y!l8dc#OCa4-TVW2Rb$)4
zc*X~>lqRiLg1UaHZ38460z)!$VGc1O1sH=!u1+B-7ACYYm+uvR&iT+enrkYe6|c7E
z#n^idSI)L5p!u}(@4C%iuYQ;vw6I^oPePbKB9xC;N(jDzps0sBmD+l~)0MsF@Avi{
zKlD3FJ@<~}v|)dL`JGT#X!Iz|7mFjw^>tid6J>H=CW9j&3vOmbHS4AY4vzZFQ>UeW
zwXr?@qAnk(Ony~AKhkdb4u)lhj}${&xH&gHudYKfxfc*L$+Y?@>r;filMPfJ#bGiR
zcy=<HPP)kB`eRHhy2lt4Hx@R4w@E(z{NWJcJj?`}V}^e{;X)tqgJ?x0q?zY0kNW5j
z<=8}G$EteI(Pwvaw5sW1#~ySV*&5nRHfkB8{%|kc=|gNFY7?hWH;$4ExNCXJS%8K#
z6px5E8r98wnz(cm@J3z8BCd}aEbw$oJq61lT>q!&=KaNfM4zqDX4mUXx&nbi(GnDh
zDn)pLNi2VirD2I%Ra)yyPm`wD*7mjEM%#^Tt<@6<mPOVMln_KsLqxDk<st;|z(hNu
zH-ZZus?dq0n`t|`MnMdgC<;-bf@!_tC~Jw2B~b~;e}>+cwsKe3f983pmn;ar4Z$I2
zTPRez4HYdE-k}23#6`$a4%ZwPVa`yVrt2S+(Pn?2R9iTiKJRI$WTmtPM}0Vm96^_;
z#3PZ`hCy(W)EoEEV<hO&xVUZMyFtXLD)x?0`=;gI_~ld?!ABxLhk!ARMTm>^zN{(e
z*G_zDjltjOK5B5gBl5xkLIge~tH&tHyhG|m{|l$)4vM_z(r8d}D3pRKKtr@3;>CK2
z#z}w1tpD=$ez!xwbDCv8kU~iXCY=TnQc^}+mYM_V>eDA%{lCz@gByM#jB0(uR{kmA
zaaRm-y0;RIqE)Msx!OZx*LwK+6YM80*ZYmMt8T(2=&ag5sb7bp(;ukAWK7#$M?&P?
zYvXbC2TS>HSf}-s`KXQeTgR*rxbvX`G`@c$2aeAnDDGc?N2+wfvhV$a)Z2#TZX=-L
zIFS+)DibnpcvQP}54V_$5JxjajHmh7U~4LmVZjtkTUgH;6ljl-)|Zp%z~a?SC8L2*
zh-%#wh`J=C<sWo~RX>)@bn^dR`ik<eY#1GLhBP|r)Wzlp#+iT3<gX(=UIfl2YFvL#
z^8mzCB%P%6(OnmS?14(FND1Dwc$Y$F5q&OZ<Xu~Vw32!4o9?x!zrmQZTS##jMpFk=
zZ}Rb^^*s%VIv6-nO+XS~RwPb{ZC4&g0Z#C42Brw*!HTPIsMX=&F1dV!fnpE<9>H#6
zF%6kau1<HX%DTSMHG8>UwBB0*{`!9|J!)dlCFP0!$!)BBMbNaKi%Pyr#b@$*M!h$w
zg|%quj>0r``$=qDH4(OQEPw1zJIu<Kcu@gq(#ac`EIEXpG<Nglm{rfk?cCgh{w$#Z
z=IAzif59Kt-;H%yCVme!zZ3>RwTL44npHmsdSe7x1OTy-jD{>EC?OC5AryZZ%E7nD
zXd3gcO5EFT7jr%HcP5|`5f~AN1%LtrgwM<wGCBy7o{vZL0{poS3=^TixaP*Xsdv}m
z97R>iH%@b-lNTpcIOc3#?@E!TpvCm)V;7>rvbqlj$o$1(Hq)o0o`XwP*~CU>)I{kU
zHjbwtP}@isPzlinnv9@HYK(tgs%hw}k{ao?;O2DM$>*bpLFuljJ>+lBi`b$8CdbK2
z!XsnQ91Q8fa^YzPrO^+RhNd`i&X=;{YzY<w=Epe$qdFSc-nwgq>u=?rn2cz)E-QX0
zUN}SuI;-#y&YB4#qmbPh<Ar&!KWdRIiR(}|I2~L`XcLF1+2PmVaQuJ$xJOS2?6rXh
zV_`hCR?gPm{O<KKYOU|Aqzw5<Qb>b?-B5Y>1h^c9FPzdGZj;0RPi-jK%dJ&(S4=bW
z&G)0d<6l4K2<=J$(+?pW_VRFUJeT0(T6lz{wa<{o+jxhaTXLay1!eT|SE{<+b=Lq)
z-|}^RP%zN|&G@t&w~K%Nl}VkF2DUuQj@{wv4oz>D1hR3JYms^=miruU6Q*j<OZ=uL
zV*8*SjHnV#%G!=#P7|6oED-QCzc`L})a$J2A97%WtOW9U^MmuemA5cPc;Im%!6c5Z
zni!-hOWRCFlnH37T2syikV`AJjoNM197cMr+OhtleQTZjP-}mA!O^g2@>R_`*}<K;
z+07HK0QG1qcj)AFkH#0#fEYl3F^-Qj{1H$oK%#mxsg9DE#UcU56zQSTjW7uuWlz<*
zs8f5`cw&FOr2Z#?50|eVn$Ft$$R#+uR|D_lK?e$GL&U;^Yy0ng88cT_!60^b^e!HG
zz|O-?^=@c>@(h0&rNCcPFE`9()&2Sx@Ng|T(<6(_{?Fyl-?LG}W)$;r=wf6t`omi%
zv)oC!Ay;xi{KwJnApHTOPMiI`nq{_rxdsx6#Xa33In3W7pRHeArq_NF$dE;l{iE*|
z0^5-2>}SlD5ndBwcM=czMJf1yqg*>{pC3@5d{^*7x6*%XsCqiuxX3X^remIfh?P4l
z-??pK3P%T466LdN1q)yRe?xjzf^iASX`L-3%4?8vA`OPiHY4hzkF@NZ&qys9Z|jOP
zubMUghNyyl`qXho{Q3`H8p#@-hjkCUl$G3)T%w158%o%R*l~?7in_Vj;wn`x89G(w
zH9;6Uoz8!m%Nbu{alXY6dk}gDq5IxSe-kme!fK^LrdVds(l)ayK87p$cNo%q_9YN0
z=d}y+RBalzOqI$sG1~U2*hYlIOhw=+kuU}{$BOr>zGx^uZjIWCuJu(<e7&JDk5=y#
zC;Pr}j;We+HltiYydp~o2_lMAX*LR0ZK;E>BVd0q2MUN{QSj*Pg5Zu5Wz*HyuLMSN
zNH-#M=cYE`;DstHFSA)#iP2`b<DBn&H7`dHK|5M`=Cvb+*moXT63$8_2U0Ww+R$Ku
z2TF$)j~&U=dM=pgmMToYzJ#h?oe^6GyzHkp5vH!DZP(z7n7-FZ=LBZ<q4cynyUIq#
zzIuOQHQe;j@p>9Eq-~7VS01cP(i%0Sp@cHT<d_~K1EIgob3gjYT-lRk!j!3S?L}nA
zSZ2sAHM;Vbk+Ubbx#_&w+X9vQC>h~jdWeU$lrafNbIdWOOOb>L3b9ik5a$|79EM5j
ztz;^79rrT_j*O9{m_h{uRQljDrLl=Svg4Qd<O38I;E2K4)lOEEvL0>orZAur;(65A
zAGDVu<pVl@y4WXtsR?sqDl2N((J`O`ziQg%gfN=t8A`}Hmjm8($&f)&YzYvg<5>!5
zkyErB7K3S~#H@sCuu72N_sfX7t<_qtE+_(H7RzyNHyl{Q!t`;8qb&!u=sq~o<|TzC
z!V3?vLEP<&@LATdHrBMP-s~;<t|lv7sEh(kx`HBqNms}!q)Atd)U#BC1N^eP%8Ndh
zxarZUG@kmCo0Ue0!M`rPYI^lYU6)8xDSHr<w34M1miB$`(eQ0}0?OZ5nK4x6iPK8b
zs>Mozd@`1c7-H?yfuiZ|rC7S!S;6|Q|E<p#Rh&r+dWh|g>};;i`UvL_r<1I6tvBE{
z!+|M(bw#dkD$=W7DyovF8i{hYR3l@Z<Sl^V`1Z$#eB;>h8W;OcuIn1g;{ZU;%MFX(
zv@R)>+J!Z#Hd}11b+46fCkdEj1Q{7p9?c}iV<piES44vA%yj263^1uH8gQ)IRXS76
zGB%OWhQu!D7xCXQoufx=hbu^LQPrE=;}^u2+2#Xbe}_5RBRO}@V9dmDe2r=qpKo64
zN+UznJs)#@u~^mTU`rjWX*0*2;MXN+$V0fCB(aeJ_+vQhT;Nih={47kRcP3+hog+>
zoes`1SACc2+n$=|8Kr5`vqz?s8=U7E&N>v})>6G>TO7G+RybEO0~-2!rz0s5TOHhu
zmCVtye}whl5-w<lfbSdOPiJQ&KY~Rd*{4L#owiKr=7VfoQ1wco$Y=!o56pZI=KEbW
z-aTymPTwwtiHOfnG`{b-k7|2=8ef`zpx}x&?@H9zY4@cw_dd-Gk@tB*nVucFvkT7X
zanU4Addvo-=-rW>E2EB{lDJQ~W)Ju@b!m&kQl@<UG-lw#4>6nCtED}PO^+ed-&HOp
zaAUMhmR}(5Q({FdF1#w}B(}`5><@|A!AlzvYc@Z@+pZfEaOrzIcrLVxY+jP7hKp7u
z?Brh}hy&=Cis%C>f7wv|%dOKz$eikGO!m%g&J)gs=>K#d?$Y(PBj~kxqVpHOy#$}9
z&yHgPnG4dg)5USHv!$JUd`2V|T@}JAXuXk>vdO}I3T5^TmwK-5t2dua!2G@K{2S@G
z%bPW&que2@{kz2>^+g>BuSEzW$<<k#V`cZmL9nmJ&-1uXf0vCt6ST_@w0`02UQLKc
zGS)+|?7w>NJSVN?_R>w*Wpu%S&P}c7`ER7U#%e~ijehoz9Ls5=6Z$<okFSjbXLU?E
zpy50=g64E)aj`ovt2HhHZXP>U-L@UWIzILh`f_u;%)sV#P?vi6J=_;M_&y%XPr=&Q
zuB^{L6+TPce{r7nX<hu#7?19=zR%+&lK<1^LI15D)uqsMF~MtXtb+ICfn>k><@#MT
z{Nq8tXz4H@;~D2T5pC%5FpSoDmxbIy<miAqC+NMLBV_TIwA4YwWsijcmcz@mWq3Wz
zgKd=`C$E6T!h*v!?%wy%NU`bQ;j)wq93W2c_jJz?e@9Lv>T$uFqmniANL&)4fiErP
z^S~F^Eru}zbRZa)V&O17%lSVl5una_{=XR;X1LbBJJmB!@nAX$Ze{78%m3~Kf27ad
zU@wS437I`s6#n>zs6&BiOX_fH9rgwaYteAgr2w(e<9nw71Q5S6DG9Onm%DFfVEH~2
z9*4Oxf3~(e<Iw7liL<g|5`;tcA#B7Hiw5){fQ7;$82vZHmjn-&Fi;{W&&7-0Btk#Y
zKF%eJDMYZ0C2jlGj$MI1x;gjenc}{Og$CX2y2w9MOVV5K9yI*Kh?E1+gMW&ceTk0$
zXKNJYl6-{COD`q5e=3%0OC4w_O2ZpCA~Jj!e~gIleXrp8A5S_HoaE~xMue96v|$t*
z66o9cKQN?>;cEfr8yWo;@*t0wkx>C4k+$VDh!`mCQ0=_X)*Sx5jp18N;u3)*Ukmjn
zx@GkgZBw8xt5K<?iWt4*PQI+Bh08n+k6orKB52-ZA+27aU0VAorLnb<`#a(>J@O=j
zV4@Imn^6~;kaZy{Vwc-iWkL__(7D8wATZ)M=M7%-LL`0ZlNi;mE(CnDSmcJ-{O0iW
zGZ67DX{^L<uGe?|b=3<)qX^+NN+0M>1PpNE;@BFSj3pr$Vpv0iheAYmp_dKp11*2M
z{EP1+2;(J0!k9}{xW5-~P}{57V?(6zBU7RUPwppp8a?naA`8)4@Sxk-m!j2~4%b|t
zWTO`HU-w;SX$I@sLKCXFCdB<FA&8)`Od$j$TM`Q(KsFwUX46gX(WS<4(TE6L-t*3{
zQo`n~{;A8ER!~9~pq5n);nY7}2r^QN)ZqI&`gH{JSHXN^YC}z~|8htE<VgbcqqY*U
zArK^jN!c&kn@NyuuWUF7)+6+guUTU4B4er4pgqj1KSo{`@0_*RmCcaC5Nyde>{M<3
z)0YeF10R2wyeK6rZI6dDJDUkM+Xz4I9m@#EULR+R_4t8}Rhdm~3ndex1n5~0`Io2=
zZFCorC|vR~%CX|1-RPCCaEU0an?b0&GGktaP=uWtu@j>w<3;iReOIVLol7K8)?)*l
zR;CFcRUlxYz|psUkUi}dDo4^n89EYK<U>EbGRl7!KDdhp&<6Zk!tzL*Px5gGl?gmA
z7L5#wHuIXW#uS8qv6+BvGGh}L%>m#d2eAY1z{t$$ScsH@gr6CGTGe(R>Ci;voSw%4
z-D@IeMOW}FRn88urwVa3waR(MG7!B*IMC>3?a?MG=tF=(P~3NlnIOF{WhWR06EjRd
z+a-T{KsY5Q5Z6OE#7(6dZNn11@|<H1_R|p@8oVtrff>C;5O+XcAWu#Pw_4D57n7#7
zty6`6X92WCOJSC=n#@frntMVKrDqc-Q#TQqh~*mG+&nQ@S;}|IO&CkV6*!ff=8PL%
z++Hn8l|vBBsj)IlaA<=<3MD$d+=ePKJIa5?x5Gf?vy*+IhBsL^#IkXDA&G;7u9u?W
zUIgn1&L}aP#T-n*cg#iTVC#huEmN71fflQ|(x&D#NmG~wKvZ>bGZeJWB<(L#bBl$m
zR8nY|n9TxCij-aiQT{|IGjGaz8|yj0>T#VR@H^v%MMy*=9Fy0LR<agLx-*K0B?NzP
zV&O#M@M;<fB1nuDqcZ`<6R3EgBs-x6#a<xXp-3<2E1NSD11m|FL8A_$(GxOF(leZq
z3NtZmLuyE3j+#>#((c%*ZYC#%S+qL{LJHV)EwhKBNw=mY)luFX!AxJ_ly`|R5`%E@
z5jthW1Z}<8)PhmY$Z3DUi0eC>l52l`8{<308Q@0jh+_9od8j~=){xxt+ZxsHgO-Z4
zwJ;uK_vuCH!CS)&K%5bYyvSizR?iznua!7K#%Ae6$4%hrPK7j--cb|$-EVQUjyKwM
z(+=Q~|MZLL((hvct?==}Yj~ZZNzu7;K4ng~T2<nwhScOX5}t`rwx)QPCGLN!AQaKp
zvq=&*ul_R`Iy_Y3$u~eiPM}D0(;E@NcV8em(M9k%R+xle6cK6OVkF2?IHeIrj+@OI
zAzh@!)yz{$LDjeh;JeCq322dNYoe>IPH)7LHrf~@sbf%v9FZ+WuV||{Fo9ZMXM?Gl
z&ICe7IYkr05q!<BBuKq@E*^iAgL^>II2ntoys*~?G^qr1LO384EFKq)Wl0)L1p_6t
zWhaLO(}7B0!b-$%FNP_r=L{K~%&XpTB@7yq4+KzALB_7il8mh-2_+LNQxSr)!!8LM
z7$KNCkp!A>3W>oKSqAX|n~^AnAi#t#H%NBQBH`^yA>)48o-%&@4kLdRMmT7qV}#XK
zX;p2N>6*gQ@b8Lce=|{rPA^>orw*RAfWb-)L;?<wFG$j{gesJf&H+G?2^%O;Q+Nmw
z+F<gFyR`{q(xx*j$u45J%On<*E#bW1sjJaXgW6$cHoY;TiM&Sw?k`DYUX@~$nUJCE
zqM^tp1<+WX6<P?|7MFi+;pXrRQ9;vEWj317>39mB1BX#s)WyijOHQ0#s+Hpv6sygP
zgOaCf?YzY)2xj8)5vo-L!#9Cb`4w>ISkU**xx2RmiP~&QjTl@T2DMw_^I^v^9ht@9
zku>4q)D=Wg*%)$eC?~=YshWGes9og(4P*SsNYeV4jY%#cL|}h=+Hxo_%vJOd4D3cD
zY^qnru<=z3AdAAR<_i>N<VZMyPG%W%$jF;0xy<7i892F%#6u0f$B6K|-3XF~nH(ui
zVjc*-v?rFG2XlifBs{eMz&v5+M>jIkm4w?&LxB+s4kBL|w79%r+Xo1ph-UMM4VLuF
zVQ+liRKA$Wl}vxl$lc_*t+atexr1YpCgisTqCu5Y3@od{!F3i{LE@(}FK^cNt#y`3
z<H1guqY<Euta9nm14DDV5j7yZywp7%6ASS$$ar(C2`56hD!pGqNx3czUV>)j((Kz4
z1@LpFMO1$|W#UC%GiiUai)v#9V4_gMbF&#WNteCXQi)-WOajbCn@lPiUWsJQ*D9-G
z&}06qz%o|Z#9&Clrxtp98JUozIxujx&{Ulv)*_%@@gk;)&D8Ky&h=MHbBUY@jTpjH
zIEbHlR7QHVzT-fyPKanDC*f3{6;zhKxZZEwmw)pE91k_!3|bI0b<A0t#N)H|>X)kX
z13!Q6s%ZrULK-w5>hy*wNGAJZLAC1mSSIgju8WwepiQxR_37P6jn3KACI@NI*7O-S
z%25zRC|yUT$!6v9%)}j1Cb>C^)v;F$r&``OR(HX@NKM^AK>}isL`IVmb1CN)iE58Y
zr^Sj4rEtL+1x6Y<iP7BMP&HR_ZtAYki4K2;vsZ^!A*I3{<0&RDnAVZ1$RI-gIcI3W
zi-MLG?MCP#XoMqNpo}^rbzBG%X;$n);P%o@ESr{%VFL`7*=Axf3R+NM8;OB>oQvMB
zm09v=@|qM5Wek^gmqxWWz8er_;$;4#M$PoRKvup}MvG*zGYHJb7k4+A;O{YbK%##*
z)QO7mkpp;^O{f+`rD)Z2CMHNC31k|D2q;abv?yuTD{I!!VBv?H)`(*2ZjuI2V)wkt
z%?9S>QVS=0yTZD?)uibV?{=moRAz%SLT?T#q?(?i7s8<tcNoG1OdR0}Wppgw?wrl$
z`O7yEl7j~B)Ngx+PSZ%SH&I$0AWeT$(g}n`2-77Br5a&eMc7K=VZ*c$0AUF=RPBCm
zd{v~3&D1DsGZ~qU6-jQewJdFXV>1T#sDpZDG<66e0R>BiAtqI30(aF_WnaUy5D;F&
zY+rY@RJ-isQp~CQs=MKLS;Y=oRpZ=V{JtjFgf+}|u5$#?f!VW}(X5boaEgC7c`v^c
zGIPoXkD~dp5v>?+e6yiOdnXy3bL_0@kf-eL=t{90YiqJfi;0oBMkp2{D2R-t=9}j*
zH_stLNR#I=F3Nf7wzH5;(nMjJi<*?DXca4E;WS7f%FY|oA*kh+Zj9=ft`k_7o2esn
zRW0D6McIjq$<gmWK9uBY-jJ7M_5%?EMl;`+c=iKafBG8Xi{9q}sfcI|gP0IF6ksh9
zYC{OL`8kvihkbS9o9(Vk-Q<XdpCl0=!qH*HLt!qC^Ki7d+lS*`h%^<U*xj&_{^=5C
zCF<UK7b;&+--~?IYo>-ZYUUiQmeLms3m1-+6+B#YA&S;v!BGz}Fo7jwNS_&-#KJXo
zB*0y-f7p;2>%PH~FNI9KAUf;&SiZ<}V>+R$tmw?3Q5Y_YaM+;LQ)2fMd6JSha>Gla
zP^An~8#^)#E=dv`q(L@$ykyN%Cqo9Qx-^n#ys{~t(K0$6^0hOEDdf}VJ4VbJ)r+$*
zPAVo+IZFovY|dg!(A8;4!aZ?ovLjd!NQDS7f2-0IESxtQiH0a>-%M%dUaCRg4)G%;
zw4M35l5cy&AL8L25b;;V<9;`=!HdO4swkBehzt{RXku_#CzdB({9>`97`w?@X;K!)
zIw2W(RXN5^AgiOHjL_0zYWZ!7gE}dFbP*StgfL;N%AyL(f*j6b_B>5tV28q^Ghp;G
ze^`PyNHQZ>Mc$H(sf=SYIjVNiz@;11D3cO4jhUNFt8#a-ylA)0p!#y&_zP*_oW>@n
z&c?NKH!GLgM!l*@!R)|qGWKxim{Z401kL5RGdCg)ju2$JPG+Kv^xb^T>D?(ghcSvQ
zh{>8r-bB5HL!{fWq!|UF1Hg090`Yt3f8;?1E+BB2G@(^_HA0X?f|9};VgyHKXED*7
zWxQ15CPZMQq>J;3nL_3vo|lZ?@PhAu?6k_8ZE+Sq@HbT@qYoWXq;a|iHU*I;5#hBv
zl|UBN#Y{-4auw*LL8Auk3&N80C=g3fk<|oaAe*#=3NSF!xSQs1I29&c^O(ixe~MK&
zae*?SVN4S}^d~Cd=N<TlZJ!BlwK(kI+1rb2d22v7ltgvP<m7YVF6QY$Yqi6fY>0%z
zYh`v3FpmJ+tsFI?X(`O2NFa?(p^>8tIdWlXcy>9=mw5j4tX`PTsbYK8ij57j!I0JQ
zs*B#}UD2uGg^2hYMd4j$25>7ye-5?8;ze1u!3e<$>1vU;QK0oK%E8o(W|OfnLB|m6
zjwYNbmjekB6zykh#0*lozg8;Z^S#-iVs(b@Tqu1<Q&V$*p_9|294A883&yA^;6l|~
zEdeCj6LW}gbq9DFnGP{q)ELrWov;x$XwZ0wi?GVV#x>VWlUhK`GX`{de~31SPLLw=
zA;^O|Ht3n4;a*dlQx}+<$s~+DwT-bx;s_^Wi)$NH%pzF~%T`HVQq?mgCgs)3agDGB
zvz8+aK&gWlsu<8-Chm=Q<7!!=ks{_VIhl&+a1NMd$h;<aVx}2)fcH15Y!SH&grLdV
z#A5KqDsgdpi-2Y#Dp3+je@JUHdBLqNum%NIvx(8&=$xxNrKR2AA@WOT6<5BjR3-gH
z5jQC4P}UQ^^~NCU3i=^~x`GuLW`PP2WjDffbtoYOCX%Rb5r;eCVt|;k7zq;-aKpdW
z=AvZ0tUVsDX4=k8)D2y?m05&!#w#U-k6(c^`mA7Ul&GakQxs7ke<&EdL@5PI7f}ku
zUPa_-zo{6tT-+GSwmDr?-lFw1r-N?g+?7(blmWq4nbknKqa{2Ahzf)mFcH%AHi}vB
z%<1bVrQW1CiXt2|7#fi2M}K6-sCHl1@Yd!o#5HhE5c)#(MBp$bUIa-JL&BxPI1z=V
z`XwB!HpJ%)tuCO6f4$(SEL_1zE%NA8@ydvmk#k?}#@WcNkkdMCSi!7DxxuMIB^&lI
z$iIh5V@VY23MC4mfAp=v@$K2B23&e34wJ?&kakqg{GAeA+^z9ZT3<2^V)={czPn7`
z6DVI#UrRIQtu`4#MM98Ko9?yVV+$&fIn3rZF6R1~a_<e@e-kpXh$0P48c}P?^6?>)
zbV7Nlm^zz8V>ox1h#EVENSHGH#pUfg+-OBsMKDs9S#s33*OK6Z?<GLhBNtNKWQuF;
zs)QMrq`c*)EcO`@c|@vb1(?!k-#28F%a$$<l|w=nRMQQ^bV4v8J__Z@^_v)2GXn1#
z-Q?3d6h;Ipf2EkAP3CEdUoLzaDXZKQCtjO{pAs40$f3iAmtrb3HPOP2=RnEf1B4k`
z9OF%1bQ(In1L7h*!Q3~+=ciItV8K$Qs1*fDRxs*YqN4+$wS1Du$mx*+ISgaXMTFlx
z?Lr|FSJ-&oJ~MQcZFPG|&qGt92?zHlGo&=KeEF-Re=h8wpx2ZXYJc)d=}4Es9m5~B
z-AcJR?cH$PUfl1TJ~XUBP)J1ySp<p+U%mIw6+Q4jY`~7>q{6?BQX{S*N2te%H()<#
z1ZAzN2s9lenJhS?OZq7OLL2Z%9gpB;S={_n{xv=G7DjkKecDI4W-zG`or04$h?dYm
zZAcHof1Ny9dG-Cien$5mNcortverxDeABell3hWvAsab>Ad(3zC~{gc2g3a$1M)!|
zlEV?|gwLWzwOhN43^zR1yt%DS=59E3TNN3H$?CAtG*wr&qSvl>Fl9#?v4s^d(G?xq
zP}qiGx0hgnV1PX$tTm#Aa4IgW5Go=2Hfl~Lf2x8gYqe;!b`A~vT-rI#GaM^FH4YHq
zRhl$;!<3<3f+Ra65E^X5GSYgq6%15k7vODk1W}q?Zrdm%1;J%gV+8_8!BBY+>SQD!
zm>^|Cgoq3j;6N8JM2Kw=NJK2+CiuA2i6N$(;R}jZ!4_bQ7>Nu92%?Sh-S#blZDJD5
zf7AnDaJ{V5?IC4GurxYss6Ep?1VA`~crc+Pf=Nq?TouKdnTL5QI-EG*b;T4zLV;L_
zApr$~N+MxFM$$m236TR_DZJ5v|8j|p!b;4WHL?mIsUt~_6(qsYp*plvvXgv7Qj=m{
z<wQ%nQ6cOzEFK6gN*W+9vT+v?MZ$WOf0HBvB&kZVO;XUS8=-qM!GzHx0MW-$n%!9&
zNrs67EhnrfnxywO2-p*CF57FRE2S9L`WiLB+R$wf5K9Hzj5O4%xoSeP2q|IO3WK`?
zP<JpvHWH(4fw^ojh|0;V#Sz$KyRA19e-5Q$P5}sunl9aod}2j}0ve_qMoe`Cf00UY
znT$5B?l3O9DQQ^lA&dn}OePf)OchXzK|%;J*c%oIEm|TSfg%F5T;^rXDlMxh!9=tv
znp|3)T22HuCQw<Wqg%#i88E>`AvK|g7j6**=oANOLL3nV8$d0v?7>a8Y?35s5+u1(
z03eZ4B!nC`(zGNQ5Fnt^Y7{t5e<2bep)&-THkl+rP1v-FHj|SprkPyf&J7Z%uOTwc
zLS-dHtA)i9;^Hl>t+g?N*9J9OnM|c)Xd#3uBF+#@rUPuSm6<>#W?7hr1`u4PT;kQm
zD%|4&VaqX6rKMtoHd_g%5(p8Yv^x?)m~kmcAxSMmZW`Po*y7a@t;TbdmA?dIf8nzV
z07N1Qv~g&MCQY0ah=Sl0E|ZiRIa)LnGl_AQ;SsrLju=-NrV&FrQj8ZwE_B4Tt67A?
zHig43EiEkFwrb5V%^X{CYBfq!S&dXPhd72%rK(lnr9@2{>P=Xst7d3iTnOdKz@$h>
zWZ8pa#XD$}C?td#ZMC&9w*~`7m!Sa!838w!y8#3}f6DBwL=<6%C<GxuH3*hMRP0h_
z%o{Re6rw6(g%Yz&<0fL|S~#@Pse+pk0Kr7rkO?HTh)punO}0xUl#pb$8fp>{K_(If
zkjP{PS}70{34#J@Sa2c}EI|O+hLjeIU>F5hpo%FHKu#P8KtpX)3Sc&fWF$aD7=+1^
z5or>ef3k59!6p@inQF|5m<7cX7dbJDoQa1vhC~#&wr0$-xNA_uZ5y228JTj-XE@4M
zxotGgnj$W3%Y?v<9AGLq(*+StEyIMuWMgrHjJdMsIFz>(r9f~tjt$Ms7&9#pi=+{>
zB#TVD5=kX0ZS6F`CP|(A1w>3+D3a+yrV%u8e~479#^ojv%(S9s7%6mSQ#GV=xWR?C
zrrozLn{7_Fo&WFn`FwVIrs4+~1AUMbF!h%2p_hc;U{R1lt&OT@1^h|LHX691M6>?K
z;LpL>ZQ`9yC!M2lK;(-Z{}PNKb3p6<jp9Y_0$tga=UHs+Xx!Oq9!}^%@1y{@2~FUo
ze?f?q$Ar7SwDPDCM66$x)<!w61{|nS^x12M(<i^~RV-nN_pZM!b5?Y}`)ld5mILbL
zt8#5{pF1ClLYVe34G)Zp&IDd%6nx1`sEF74Z=F6#(A)U#)S}E_U`DeW{4wK-6mXyp
zC{a8cdqxsCJ*-KsHCdD4(Q@3(dBSIBe;6)Yvpm<e`m)ZZ)QuM?%yC(h9XreApes$H
z<U?Qb;_MLoIP+40|M!!WlV?fgA#^O$Z+#73Q=X<zl4nZzhHoV!20hIa$!h>-*kq29
z3wock^zvqWny*(rmH~nVammn<2m;j8mz0-~^=lul!*&)P%RPs8x12k+F>Z;ze|}4k
zpE&!YBNznXEvTgu4Run+R`@QAdR830+Br5+a#gW#{_r^4&z6$>%_nk^s~A=<QwM_i
z#ENX?ImcK1#z1eydCEiLymr*5<yCGD<q0EERBh`rs`{r0=L5lXLUT_lz4*`Y5Q0yP
ziVepfL;NziHb14f0td$Fsj9Xpe+G6EfOCY0-1lFL?scbTXj<mFT=x=+N+HD(6i(Do
z)XBPBDY`j|#K?VfM124tNfeRF4$TH&h$OkYu!1P7+glS0titH#=H{7dDT7bk)v49&
zzlHL9Jg=_)fAfFR9jDq@&U`I4nM!R^V|Kmuzn;NF8=f><vi>U<M}N+yf0#@Jb{!yx
zlUG_h-LJL2J0{qS5Ri<;n1O_OOH;-kh8HxE#L8sK;IzFvp>0A=9jv5xU2W@HPbWjV
z&dhK`Yf4J^kUxS4j?NgNEIlk!mLFr#Y}Q+UxF^f^uECPm#ow}y{+%w5v(=`z_dDBY
zyE5%d<s3IYZ<BBbot=Xdf50hIP+o5Z+D?Va8Ibgb%rFc~Icn<490|VPAL!0kmc;$t
z>H%eg1WkfT5FNSWp*9i_HXlm0tUl$(<;ei_Rv<(hA25h1x<fD{_&EELJ-6($jfS)k
zHnCeu@)@IqP|8B%91=_*AZ%kmn3@59dyQ@<g?_tuG6L0Q4o>D*e^XuGHIq?&CJsn8
zJq3WmAoWENn-G%OCFA?y0!E`6c7FD4wWivZK{jO&QKq%cvdIY9CAaf@Oz(!^vdvC7
zqKGikKR0bDCFHcA_#r6ayviM(LXHW`4+5Ad*EktKX{|h_$CsdadQns`GDUla3AM!O
z?JZOa9e-TBXohm@e|I&8;=IAa#z9za2u7kpz-sENx2^g(Wslre-s%kd<*bCVuRHcX
zmdH4rsqOSp&$}Eeb*cJB+Qv6*%Oj25N}S1vWGgVvOW)J;lcwdP%rpHw76%HNlB&zN
zxE+f(SCW@#;)yK69&`%@0nK7?O(rjY8mIXNW_OqCe(&hPe@Iw53k?lWUnWTIvDupq
zfj66?Ta<!T^&Cnf{m)WH@gO{04O7}pfq2^Nl^>DD9kTbc%B;qrdxVr!mH>yu?MWSB
zyx^-;inZ!xxe75(VBJ#xP=A%BnW7IwPD2dxm662;8!HNcyr!VVx$Lo3*1cr^Jj*p$
z6=g9+pq0>Ye<dNpCIgIcm`568&2^aZszdQ)p7#C>8Ki!lj9L7=y4TKw+f9){)-uFb
z^P%~^Yt3ifX2^jAFosla%T8IE1OsVRN&34TbzkRhxj$p7z$lG}rvjJJux$Yg3O*mJ
z-BH8D$d;oEV~k|b5XPLK<=VD#mjFEr!?*VGaVH1Of9*gjRmLDuBH%2%C;h#nK>_S}
z+9%2i;kS%_*Zw+(q8~!_=N`(W$Up38GDsw!P>##P7L<mLe*&3IKlN~eX{z8vK}FY8
zxTWj0;66p;WBcx`PwcdDXAJFWuT9)lP3EGgqPgD0tCnp1PUGX%(ftV7KDG93ch9cI
zfajU?f0$vj$JxLHgY|x9Mu%hUKb9%sG-5POqKwY_llf)`a?kg|_!8q<z+9{X|F?wm
zz62?JI6S?6r<bP-&YZ@qIo}7AojV%Hrg1vJxTBSG*=*=^#N7%`zJ@+>q|o&em1oO)
zMP4ES1Zf6uw&LdMft3KnJGKZVC1q##N*jogKnx_<GU6$t0Z3&9B#BiBCb4!0*?5(Y
z^0)E*O8gr9w|73C1WzNt_K_Yftcsv4*T=X`CdXjm6gfKVUAg02(3htP1S5atY4kbE
zSHs{U_8A}>5C9Vt3?>l)AXm>;CjofQ0pM$X%F;k40J&W|lDO>@v~woNn+;UPC(&Sh
zu0xkIv9&QyrRf=YfHr}-nJ+$ii9`3gTXLPMtSLAg2;_Qn?qGC{B4Rjt0kRhF0wf%t
z_aDRl8GKPE_a1+ncWr*@Rt89{53)|gfJd|-j^6yI>jgoM;$S<GT3vur0Iu`3kqi)x
zsFP?m?|1RTK!!-IwQQX=Xf>>~Xf@rq!xi4n9pgGCw&J#m8gE*ckqQJQe`UTsoSsV8
zxge4I6K=sv#Wf;jCJeVgq)2|ps$J_U!4nmQ(54~95dwnbz~Oi=WPQ|K1`=Pdx*=&5
z41)6tcF7F8VZ>}oIK;&JLLF8K4qrVd0Lw<X92O`rLIj5ZmQhttWx-5!4wxvqnNz}A
z7;!rq8Vu?+MJaCY<aVa0f12LUb;#h&GpP8QMW`%MbEqF&K+qc-;;JSKBVb6(F^d8T
z3T%Yg-4GK3BoYdX!<DCP{+et&BV1G5`O0iAYTez0sxmXV2l>S61!TT}=n$>J8D7pF
zqLYDsNWt%^)1!*$dcI?=UyYR$$Newk+X3vpfE?)$r$)NzE|ixce+Cqv`L{mtN<xrq
z_KxIOsT51d1yg#Ao4>!yyI7tGhrIiKecs&o;Y2`0BSfJZP&*4AW&-h&;ZmGSi|9LE
z8H4oZS`u0RGa+nE63JL~(!9X8k%$addn95UBoPpQWM5F^u~Ewq#XV@^e|C!F)@EKc
zg6(C4YeI4!j#=?Pf0PrD1Vu?ovOLMg>>%X7JooaS-={NVguTgVDjzVApd@;GP13`1
zI4RFH@99s+2yww}d;NLD>R}-p*#j^T5F03z1R<!{q;MZRolmVY<8}R}!t|xz?Wfc9
za{WCXc@BZ)KTetwp#d>7nLgaP%igiAQImd33`6zr@Z(H&e@{Qcc^yVoe6vT+C3|{Q
zS=yn*bj^=pOX<1TFt3^XtZ|rpmS~9mdR=y1xWAD29_#7#>wmaG-5Rkm1WA&La;S5v
zbNbxi^m#ngVlkn>wQ})Ze^niVUndJ->3vqkOHATzOR-un#J;F;jnq&v^XEx<IHm>D
zt@wpUv}3*OQyl>_rRpqNfFNuHTtx~Wfv1|QHnxzhXKpydh_qV%N*!~Z9Z}KTYlm8D
z(~-vp?Amj9g5f3Nvg>h}K9pHo8k?U4eq!J1LXCx<Ww%0yF}C$kmxB!iDt}R_fufq=
zAFderAPWjsfcYs!h@S2xI-hZQn?V2<(G5l&u0;zLn_gfGh=4#(Q=5=EO2YFXqoEr<
z8wTpCRQ|g3<wU>ofzcovYtf?w84E2r`Qwk}@C~aJn#LLLp=gq@>BC61F5?oD^l?F0
zPEH-vJe<QzWeyF4fqCi;kAD|~<HfgsBLzgA6;2!pFuFdCeL955W<;<7wtvt4FD#h%
zfi>|mbT&UkKD(2TPO!Z>c)&a@cI#@NseSmC`bl%dF3AO)<BuK5X^a(I+YDN2xVXkG
zwkfY4mE(RVY5qJv<oq9j<0th=`!ace2v)&3OI%9Co9(zuEr8AQOn<i7kiPa4U0i$2
z9o+qTz{_^3E(c~g-#*rTq7)*jp=}gJw_-iafCxYXzr&o;d*Ag(ykN@ZoG4qw<{6ve
zc!!`M&e~fD*{(F0gP$FW5u+X<KrinbOYy;2Jz>4Pd(F%cwPEtc1mYQS3xeX%F=dQ8
zu6Vp>iMr+2R>O=u)PK(maZZ)f$vVpiGCHWFIWSIN)49)cTa&Ni4DtHhIous`iy_>!
zWeqH{)a9$e*`!hoMT%K*)WYtxx*X9#SPlJf8gGJmAu<Jh4twd38;i+6vC`%Tw&Jl;
zSop$&p3Y$s00@A7FSm^p7ZU5HyDdt<@h#Bqdivi!_6o_Yq<=MgS-rJPeYhUgv|7jd
zCwG4sl7M!@U>R{Bhz}&78?9gtowAzUAldpCa4e$(p)JU7_@?_|^QdBJC3Om}^^|h2
z_fpYx`?Kd!N0;BRm@=1;w8#+r{(swbJG*C3*mVA{@c`Gq<onw{S<*oSkyI2^L1co+
zh@haLNHPN;l7Awqr~7+%u&sX~!IwC6hF}Os$Z>fC{+)X@8e`*XAGA1v5R}NwA^{<S
zZjpqsPFgJpOX>e;qToc{REwz%<``n-i$_}1X$`0d8fgk}32WqPwQ)9|gvdPy7wccX
z?qECyqX23ZhLqDR%BZDl7E0AtNVd|~1sAP1Xn=vSo`1Wh^8ZSPF{`ly8l~;ljvunX
zs-F=2x1q**e>Y`cWze5rUyFEPuM$B?V3b&m6flK}vIgEvNw-onDj8@Zq7w=eFj;Vc
z1r&UfLmM<*G^qH4j#27Akw@})yj-XJB}~9|QDUUJk)%Vq8;${aFF;=p$CmzceltIV
zzTSS_yMMnW!BwrkzVOB)npxl1CoZm)y;&$WIMykne@;=0Q;6&KI5Vsr#WH1oTfWDh
zw}-*ke9e~wX5&NU#~Cscju9p{nYV4k$v7c^N@EyE5Ft@=q+QQl9WgL61{o5ZC>o04
zWsUL6N>=&{5QoEX-qX<u!<AuSRB%mV?drd}%{I3IKZ|oTyj5wHvzcbz4T0BW*^lh7
zjyYP@L9F`eB)9i9*M!vC49%%8BEV?QW^F;gNNlRQm)j8pB!6<EMXG<ThZ`9ftzUPs
z{<wBj<ENW>U1gnRX+M;?j^1L?nL+HW#wRn!0$_Y8LlgJZMzeT9dvh~lY)?2nnf>8#
z`$ue!mbtie?%J+@>V-3nn56358)Sud!(fOU;V<Pnz0%6NopQKak)gQX%Tm8abRH&V
z9_eAEcf_f-9DiFl+5g*<ZJ=*mbGMl&*PC=A7V8X(6DQjnAh5gJ8VOE|Xull$f;{j#
z(ZPZ`I&o^$wHK^Er=4V-Mt`xSSy91!M>Jo-m?K4x?N8668=TuGI=^E(Y_R`)20+WX
zF0GSrIg@2!zEE9V?SkxygHkeUN(7o86tB_)OMCfZdVfiYu^upm&Q5Q)ukfMAAAQFy
z>)dZDy{QvqB(l%;3>$(#odWxqRQGAx_Zug*r*u)dxLh8hRwd*Rx7hleeYxSk5=$NG
zKkDyS`1h6n+e>%g!u_2_n0SrGr>~p%@f1Ih(LB^ZF}4nkf}fRa)Zvp0iwfN9!K)6!
zi0j<={C_L1Axe&(3X=pw+AcBv6RNOi9(OjotHr5B>uVH+xJVImOPB9nO!|tDn#QI$
zjud%gYz9@$JCF$k07CVZLFsD;0S9?fxu{V~6jaDAz|>B&-#wpu7DJ$qC?ia-9R_?e
zcw5Aa#2{%zDU7G1{5%6xH!PAJl~%}%KECT=KYuA-D`b=$?z6prlj?3fm3{7RUbyv9
zi;u29Z+!<VwdHPCCm*kNry-5E4u{VyMFlwo5a3bh8E?=3?`n%Tt?#+c9htY)$#F<?
zhZS|{aAZmz+q3lQ43Zq%P$M4I`5WMr#9sgR&GIbB>$(K7f{qFtQf|NeVH2LuEw-l4
zv45jfklO1qhhUVYKE&C8)RGHtTjSQCyVD}~k6uUi^`zE<7rn$i;<SlqaR=@4iOtdN
zmAqNMQL1W&uwbl(B0|_J#63a^3|X-#f#|9O5TZ=siU#@!8wQ!l1EDu*g1&7-LI+&I
z!tgd<@bMcXx9LJZk^b;~cS}F%`uCx<_<vjMo7>$P5xBoCB<MGjo^%#09CWIbLx_gh
zHdGWlM}<o?xW$l!5pXO`m@OY2h)k;y4KN5zGMGSIu+&vSi$wo-|DT@u@AUugL+*`s
zeje)C`9sg5{g=+hk%ACFZN)K#fJCz#`Km+^1`=K2A4U1@Iu04sCLT~M|7XDy-G5x~
z38wwD1r>mSv5Mvwir4P5Vo>U)QdFUhi4BPIK1M9x<+12Jd@}<E`zDOg`=;*5`V15z
z9-YBF3s-ndx-qFuUFMoHnidVNLegiWs|Ozx*>xk25xFsvh}*lR11u(4v6T!AC1fgB
zER<ncA@n^DW5d-rncl{}4p3;<4u8#@gH9w@W!~23CnsMs0j)8~stCxd4RnUkn8eta
z+ja|>bH91Gs@a6@lOVBb&R#VC^D6_D*4hFfE<h3iBr+1}Zc4Ev0torJ<s8GZB&(SH
zzx_NbqIK}X%xn)#q70(1w~)B&#m#;%3gKGcj@r*R+50{73!@u%*DWv|)|Yh_1R;Oq
zbS>&rEE|D+Vr{xpXDovR0|BsNA|nzhq1YJ>LAA~SaG5wpVS)(*MxKDC60jf|HLX)_
z=5l7{n3zKGX;EZ1#1x8Da#s|^Y#5c9aZM>wEXk(R66z5GQ1KQGSrQPjO6)5he2+am
zaoKK)d7;yx{<ugqPZR{2Rpn8<^b;G`t+a1Uon6Ozk7vtr+^;zmiY}C_u{#$81_GBb
z7X%l7nB5l(-$e0V^$(J>iqU%;!ByQ0<|~rkQC1DvNI$t;1Jd0q`KQFRklnLM<(E8!
zxOP#iIi!W$zj-tFKKqc<(e~lvPfs?;J0L+L*N(n38Oj$S&YYsc^oAhhGBvF>;s|n-
z+E%_~Dmyst@*U0f&6XVt^4!J2-`_717@Ny~YE8D;OdF4h?(>%0GcN;Vyz(j3c$&FX
z{x5Ck?RR@!2qdGGC@?H3pd@9~u5PY*Q+bvuN^d2GGyXJ5tlWLr92BEmcq)M`Q;;je
z=-I76wNgdAlSd?+$-5xgu-K`9%Yy)65;%9GwPSb_#1}-A7_V9m5E=If;ip#jo%#QN
zxcpzo*Lj%$Qb4W0MP(o_Kt@1{KELm|`aa_Dt<NGLMRA&ST{mV;6eiC(?!4v)2cz2e
zT(=o$v<<TYA+f%d!qshc5hK~UaeVGE@o8A*lwYiS>}Lnk;M&h6xuK6)efB-ad3yh0
z<mES3j1V*8!3C&?CVDr4F~+Y|;-A&2<h5Jdf3`PUZ-cJ0XJx(e{Xb2Hu->S5bhutW
z&d!G0KdUq#kYaVR<2gvm#Kf&k&5e7PWYk<ra*=~ENFX+Hm`sEVamNQR?Df?Zdv7=p
z82Rik-E2#hh4Aebz9DTm>0s2-+%s>FEhwL&uX#wm>5#4}2M!y<?KRy6_Y{+ai`1la
zf8{LVHE>1otK%C8Zyl2*O!AD#)!GBQu+D#w?Os+H?6RDP4ciG5V$)Fp0YL}=pH*i(
zEbnSAXr3B+IP(L~2V;?6ryv0UHunU+?!~gaxEKSSeNdZ!h<W{_=GiJ~0R-cKAW0U^
zkIH1?ZpLc;Au5{(ibu*i#SvA7hE9fhe+>O8$ed8iipjb|Z`qVQc04>t>M~^|spD$(
zelRokDee9Jtl9=Ea^*%9c^I_*dG~0QPwDRCEjo#Ndr6<#3v-w}VcEgJb@mp6iEI#a
zDu+cU;>$0jKMn_B44*)uBBCT`*f&`(ZrdZd0T7T7TRQz{r)MEaG$#h7uU0J?Pgr!Y
zbB8cYw8-LbXaXuK(GxmFewAQM_3A?AK7aFmoPICR|6}>OBhC@Afb=5ie)9j>aqLxL
zR)V>eg(wlg!rR8@_G{k#6LHTxj9d+Imyj9+907`#tr`R~JksSF+R;?{t(B0jEQZi_
zXC)Gz63Cp)M%H5C#4<L5onb65NTJ0&M#>1sgn<8y2Q~rDVhxc9L>v-z{g)gY1T23Q
zw)*|mA-kzCM6R;3em|0$a0mcGSvp|s!mB|Oc&~oBKS|06m%rVs&L3X=YQ2r|Y%P6H
z_J^t4xNdpZ3qwvmXL-~AwpdWD_BEdewgM4CK>!kvK%fEu`W^pvMl1V?f})nEsJm%=
zR5`(t_NMIXF76jv+GsD1d)x8<(d~bH&(Z3>53M@>`6DZG0Jz+Lq;p<RgGxxUm?YXl
zX~;$*0*qu~1Y}4=2(ScDh)9fy7_dIuPfi~ejru%4rs1W>+uUiI2|{d3tAT4-7y9As
z541S1t0k#`TU#I9U+Om#_Ft42jyN_9(GyAm<V3WxheQY_3`zD(%E4PL4Vr&&YTVO_
z0M;nMi3lu^ksy)>*`XP*Rc&M+vH%G3EE#WZlC^eeh3%~K5E+RH=y{1|Z67hnU1z9q
zt4^&}t1@;hMl&v_<06T>q7!zO>FDlcLEc<G9M(a}Wnh(@Hp1jKxKr{18NACVB+>P-
zdbE7>ZqJE#O>-L9w+C3Ye$RixYc+lZ-CRen%~M^wHG*E|NJh%`?}27R{5B>Td)d%Y
zr@oz-uoakqMdu#u=Oz*{7QvG$FuZozEs9wIQBG3f*x7eJ*+gO*=`}}N2ma_GaylRL
zYK{6eFCESb%aTyWHSE{_`)y`$w%i*=;#-}L5D&SSE_QN;1o4T*MG!r9{Ke?5<gKJX
z%oqn%O7%P|X!i_Cx^Pe=WQ7yRv_wpR0pejYCO}S7vL36iakRG9md<*0&lTHMMYiQ(
zmw_Dw7JtN<)=trR7&yE%a)jIZa~r_)YY>Chw4`byEL|&Rn`;wRh2TS4A#AtKn({Y*
z$MQ{W6lmJ0)Xe5prT(__AQLr1$<m_9ta4M2rf|1%{+E=!tbQ&}pSq)5lBLI5T7mqY
zQoH`G1nqZ*J9T@t9flZY?8Sv~?e+cy^^X6+w11`VPjzOz+Sh2xNhpRa>29j@xSx9P
zddRL}#XO?dS8l+gaePNQA;_@kntUK*Q4K|1$m)E|9_8l$#8BGP4q%^YXsxsxBpx*&
ztzmnXY<JD{I{6=xnzp3pb=@3f+vTxGDW3mlTPOv{T|}8#jX9MHEu~l=%>?D5kKG;6
z-G9ngIZkM!`<%+O!aXo)esyU6@3D5;ZmlTaY%zxMTN_}`qV`5zl4^%K;(g_`{WLF6
z@as`l+asp_XnBtE%Pe~zHU)i31ZCtb9PBh!*Ausl`MJ(#u`4j&6{$G!T{x}@v$sz?
zc0yAxWQOxDjuJoH`6$@&k6)Cf$BFeVB7diFwa4iDvo|N}54lMbsOTxG%sTo~cpUS&
zdr``Mw<239lh?i5w0D`8^8zs(jE(&IVc|d7E|VHpB+xQhzix8~!r$EJU6|IHDQ_xq
z-oRv)Y(}De92_h0gmL1gSg+#&_th93tmP+jB#sKYrwWM}i1XuWT<i`;(dYBH3V+Jt
zpWo$RRH`jIoQ9^2q`H*4{jCXzA7lT<#%>1b<2h@b+YN{x-5Zs7@0r&3w%4`^hM^E&
zupR>XHe$a|hBNIw>Uin@)oK*#@ZUK_Ub`y8_NfVd%OSCCCXV!YQ2bU}+d9YLl+9&s
z)Cg6%)}Lk%3_S6B$CcV(<9urE|9|#xs1>^TOi3JJ#q+yeA_?d{pV|C=#3OO^oQ{L?
zKhw_Ys(PH&PSO%83z(p4C<3J9O({ZR(Rh&q7>pG%4je`}K7213(?J&z^3S9WCS3=_
zz-WY|&Cr`OF%v6lwR+#i{cp$r=lmXB|N8$Q@c+7muC@H#o?kM3#?JW##(#*tS=8XF
z7*|dYUb_}*lzVpnDzpQTIxN(U_9h|;+#(_l^@pWV`)BR)V1@1_8W@;Nq@BY=ROd6s
z-)zV6J=frViz(fe+qF0!XzqsCK^4j}tZb)g9rnJo9}owjCFR}Ajv>oAgI^=&PHkQM
zM#pc<+pOo?W$-#a+K9E|9Di$?M-)t?zsokn_|2rd>ZqMM$Xf)Bd~5P00+)MK46lLd
zLly69<>G;V33{cBQqune`#c~1z3=^B>OLnve5anq!=jCFGEOZ(*mRMcK65b&@eZC`
z77x{%MxripGRCQkN<z|t>|5qNsWHtmAU3~NIu=V0*HGt<nLMr&@_$l#-90<r+s(RW
za;PwKV?L^ejt$f{yxz0l?XDh<EpC57D-{Rw(k}LhV`xhShtD{jP(h@Dz`^LMO^;~d
z#cvT4aE&d0#rII;5IUYv+|aWqAd*N%`3y@(#BSS7|AajchhHB>Z|-&Qi1<w}aK~rh
z%k5tR@NeJzAKVeJtbZoKK?PzJn;1ESN|pm!#=BqqlezhXYIsech7ZLI*eYAV5>{X`
zB_T|r_AG)%#Q=OHV6a-#2n=dD57k#8_xYE5+_^`);b5jpx!>}6%~iO3RTrSJ%vf~X
zF_A1@*slU17X<9XKHUswoQ-i*eG=xT8Y6WNS+bc@A|NOWI)9tvOk-J_&b+}dr%=mP
zX{Ia43=OU9LnomLrzweDQz{KLPQaSF5i(p^#DYsf2-2z~L|};^WvZ2qrD))}?5=Ue
zIL5W1(&7#89B(4)Ca|*T<Q%!`!gMl^7|h7Y+m}GoH4(yQ#GW?{R{ZbPrSXv|#(D2I
z<R@BUT1LRDsek2!_`?ErmWV_>Nytncl~R~C)QFWqn3e?vNI{MhSB;j2@hc=MhRn8Q
zV@ec3fNq}0Nka-rbWxCFD_YCbr-slYfgr*}^n|R9i3y+z2r?5$vWdrbf5tJb^wI7Q
zB7wm@6@7t8Z8NwJ8!BfDQ*Z@$pIlvb*UBkRQ6VG>-+xvt=*cPr05^a*yFCMg@VPyF
z=ac9MdMOk4x(`njeLBSf4FlAG&G-ZlqraXYf_RkP*0!~=9PSkg#Z?^PVOC}$Etd)H
zC9B(B7YH^H2cGho=&FA*k5$x&m{X>EYXG~#1t<vounc#Nu&PL?f~`544?YfSNWlAL
zih}EIuzy{wr_d%m`s#ELT-quli|P`5MDYRA+Tyz>9x%%!UyojZJvlWn*Gk@OTc5!2
z3>Nqy65@rBkcg3Jh%BG=vkf8<<M}(=a6I?R&j)+TZ~T8<woQrOG|lgvD!s3a!G$8d
zZHChxn<5l}^Vd$+4Kcx|mY!vLS`m-VbCV~|z6T@v72rs)!IzID1RsBPSbw9P)dV@0
zygpW6O)q$%{=HCkRRY_)l8t}&w&Da1aupC9JA_zS*W3kiEK0m<HfO{|B8BwdM98rK
zhu##CG{A<oh26Q{4QZ^ihn>I>lc#hrGT7Fvr{;Gu&xbmvZ(iA$D)btlJ`@e36r(}Z
z{q4@u<Q%j>FKNuE1OR`!!_GBiS|;ireKzo)<et`BZafX2K56L>XOE;lg%)QX_gB0$
zkWf_>bQ0vDt(Ztrl+{dPgsG!9f3M2^Cx8F<>HnvN)qN+LDl^bNSGcs>D=jN`oShOC
z9b9}6P2B7C8cgld37*SqD_@yc1k%}BqaXRlfa8Yvx~UH+#d3dZW~@ZNK>*hc=OcJA
z7+E{Uu~>0NR4K>2d<;RcE8r^RZ*E9bOsZkZ?O3koz{<NzwyQ&0rpbVwJT8Jw2-=2j
z-c$t#y%~TU1Tz8*S;kuU=Z3g#UYmYI=WGi)OzqC==(u0xKm+jsr}`a9-S*+6e$`m&
zx$Yf~fr;a@@!)@NzFcR|TxYy#vjcPYcbqD4klNdIW-^=aj)h$-a?I>4Ifb1oo{vG3
z{Nq$P;d!r|`wi#O;knf3yLgJv#NPXx4>AA&@(=*9!znOV!@)ySZn<}@OsmmY#t9ul
z*X3bnbV9|cmBAfq#x3b$3wi6h9G;6B)-^m48RMH!F*ARyfP~Xvzs;cm=+@ZrTzpR>
z^W~&r!F8`qUrDZs+#;6PTeB8gth?YRD07rbO%_ZgK@mY+?OM%v(8uUz=_U-fZJ6DJ
zlXa0)fe;iD0KC+NL96X=kT(9G582~RFo!|oAvAv8AQljyWm}_)5T$=pZbWc+6P!bW
z8YAfUr00J`yz~>MX%F91>zAkU{n9iaL+zmjL-;KQD>L)*V;y7VH)999(iPVRW`Q|F
zO}3&SxM;H2(;I1xwmB(`Z`1pXt7cXUJ1#ettMK}aIT{9E{DAlew!2JfUg4@P|M!z-
zd&tWV8^Tc<5`km*zE08E+*hxno9roK%Vf(GIx2qvznql^Tlvo~Nh|khIfajc>i%}(
zwcqQe3@QcW#p(=9c#!+mc{Ie_-E3im0|yVigIR^G(7Lf(EVh+ciCb&jdA}p%W-G-$
zKr+S&DOjssg2Zhbe<u0V5;%x0jd;C%kPQ&@ZyX#``Zcvd>C{~D(!10lxg96CL+ty$
zDcK*$X#D5=n~Qtwx~;;x`Zak>i}ee_x_*A&xdY~*+|rjuC<I0&o)cWm3EGs`(5^oF
z6MLwTAa+L2X%dBFc9K#0uOErwyKIBOO_#AK1SlE=X6+N#<g2p^sO@?50p`Z>q&N*Q
z-V3qqOPBK~1SWr=+B@TpZ!mhnCaG9do9s4cn5)(b+?Wx-yBXP3=k9q^&XaN2HAarZ
zoXEgQ-$I4I`<r}T>9(9V3Rb`6cZ-d;*%LvFy3KZPJ+3J;umB{p%zc&YB00-MQkMB&
zkEWH*!p5{ZZ?f_SSJS?W;{IjPGoKSXZS`2;L1u}nCl`M|&2k9@$}tcCQ`cEsBah+>
ztDCCbsT~~?po%6KUp-)je-UvM^m8#Q%ksx~S76J+MvQjv^geEt_5y!ARKGsrZw2hG
zBKN3R+RaN5?+64^+pB$+T?u>~S(9eiDsH>@j$Rw3(AVEus97Cc>GW}aqx5~VbXAd*
z?E*I8<Yj*%l3@!`ml&cbw6@!02~mYOcj0x=!E3>;POe<UZCrVTLwbhnSI<|a>|)K`
z7ln<UZ_(#So@GtNB9U1ud;e={m7iiX6l&syB{Rhom)h_d9_!PhPr=szU&T(VX$2Yr
zhW%}lRRA&l4{Q=>E~*D40@(%>4YFvZopL-kH#3)(Dg+RJ3nsmHdlT_{-y{6~O=<AR
z!5b6_2iPVh52tc{$$&@7hf(IqN2r2^aBbrl8a)o|;e3sKgJXde7S;x{VZEI>aRJv1
zv1SQ^Nz%lCRf-k)3c`VE3Nyw)Z&eY~c-+H5Vsy?uoa5d$>!U-e2^A*N@YEYCOG?Fw
zP}4ZFHA_5y@OZiY^PB54=CLgd#&VNQWG!F^Qp|{g_oz~6sBnQ64qJC|fm}5~V5&tO
z)$z{PVIm38<Gp!1qC2fbm2QE9M1qMLZpj2g%jo^fqyI(B*AZSarE*+GQcy;-GQ%{9
zO8};qG=k6-5L7w5x^cNTTB0Vau?^kR9J21*Y9>p6g5w(XI?WyFi4+w?V#H!5ndNYc
zjhlvVkjg>^4GMq$-aba7xi<frX<5tSs;cCmcm-KfDYDZ6z!3rk?6VFq$=0V$(XLX<
zA`_SUW2GOpdT4d^!cfu^6vRYLwP3WZr%AJovmG;s8I*IDtz|Kc3baTer<~Ven_%~0
z9}*0I9O)rM4JXbcy<lJvkXoNGf(?=ymOvpLZ;^ZDjv6mK&k_s)!kSHCJ&;7QC%@kE
z*Mp<T#Cck2+1Jr{;1ZI72oS;2NeS){VMYt(I$T~a{R`$6D2GgQ@BhtFC2(48oFN2c
zC?G+CFoKF8q`cuK@-SzVyVh<}?qF#O%a4zL?LZDx`G66zx&O-^k$B;DDD$_JGLnzG
zBovwWzIsvw3adrCL043>-XAGcGZJey&U?5RJtQcLq19_}<MFY*vcRK1(FJY7oB;Eq
z{l}PrkPs>f-s2BwgPp6`dDpskZ6Wy2`!Oo9S=Kc>n?X=mkw?26I=E1e1}3=K!o1;s
zKY<YNpUC8Rc)9fkwaQ+DlkKQQo1gOsc;*@I8neRE$j9Q-Cfgg+Z{w45$bn^R=k6cu
z{{zj-flgJ4m<{Z2X#X~Z%-qWbhQW+uY$x@Je~idGHcL7+ITXnG(WKc4T|N(b4TLZM
zR#k}*N0ssOl==@Jz{$#VBCTsy%fBaos!jE$jFdpSqA)<DEM)J_y`uln{>m!kX$t;d
z4c66@bd(R;O$hEfTo`4t;R8e7T(O!fiTm~^M3k^ee|Vsw^n{ak$&wH!ZQ>LLb9|HM
z=OSYWDG`xv9=twj03vrCU9bCwUAmjrIVJA^5h#EHzq*;k@tDh=@?yTa3MzJgseVTz
zSLKX;jLkRbYn8XxoV^wp)Bu*S>}{v>2HnWO6GbVIje3LiDqVN;PPuV1dFdQ2y0+;j
z10l}%e5f~_TpGt0T1N1_W9?tc9kSh0+aOzZ;X&J`t>ZYsTeW+qt~4L7ttF%BeUJw=
ze$AJPqoUogf~4~O@)34xAKPnx-rriV?{arL^+iX|<^QCA??m4u+s^I!k0sK2Gd}Om
z#q!+0zItygMp1M9eC)!6F(#8yh(#o11X&m>2qFXl5n>Z)I;WlNGd-QNf+|Lh;~H(j
z^E=Nc@VZQx%ENy6{*HrT{I6Es1+Q7@;bX6g)weXNSVQ-(7xXH~*nypY0x$q4Z@snI
zWe)rR1p!Hjbk#8p_5KVgn70BL{d%CyIxTUoH=y4r^PN2RYirbkIr@)NJj!^xWZSN<
zn@_FIxF?mf1;xAH1r$e+dK&v8>Z9}(8{^<B&NXxI$${?Ovkg0O+BnN_thacK3Ux8b
zhX>X86?C00+C_Q{&)M>SZypGG=NxO{6PFq2sO#GBzrrjwm|f|6ZLgv1HES8u9Bg4c
z=lrb07vh|b^Ep@M8btmEtbz%Y1GWI*JOoKFC7JfwTy*Ub;icd*y_o(FI0Q)JLReQI
zgM-DqEPS_9Z{XKWHWTU|!pT3{E92|(zqK+*1cEx1k?bihOawK5@T%``@)ekN<IfU-
z;x`40WaN0C5)F>Vnv)5V{|;B&PMWq?jDr5J%U-!ZKklX)7Xzo-;mibJ^$gWo4fjw5
zK@bQ1D)h&YJ@psKZZY7rLK0Lv<_zxg-~vUuSff!WPxnrDxwmX~=><Id#74hTX4X7u
zCTay%CCz1$)Tz3E%jwhE{r1G4B3y)fTgyrKBQdavAzu@|Z~EQMU1jNw{;%8ex39f&
zzOPm9o?dQ&vuLZi_Pk=2@M!KVa{so?-e#u}d+~O(ox7GNx4wW+-L~xRj`;u1lcdfU
zU8h^C&$sfswwopU73<IUf?IYKIlF~}C!B3(UF_wZXsE@1<EkaK7@@bWlmcHLW5=Cn
zv=j~=;Un;KD(<^1&7x>Suj`C>K>MEkju=>yEt3T1goXhilg>mT6Ida*k_96HK#)WN
zNTDGZ#Uy4e$>M*0WI(Z|7O)Ye5QG*(C?$V9rXwmUCB@npxvivLINem<meaEYLZ9EL
zmB$Go5__P3Qjl~Wh6GImq$U&gvpq!!AreUv2$=(^rF8a^x|3=pW6-M7422<-CW>^3
zAq<_G>Y-8(Q|);=lEXW0phaeyyhOi8!`$wuv&nnQZ`Uk5<v-lp5H0<`!m83PizdwZ
znc~3$l0icd0c@)yG?$H&B1r<~fbD0OOkdD++~o*=kf#3!o6qG*bzZT5<oMKjM9I}?
z)ppG?gkM-Ulnn|t5vNk>r&9s(U(i;6wo&rhm+1<{Ic&>gF#fFc%tLNxHJ9Cc4RTkc
zPbbi)Mzu?d)&(K!mp>(5zTG+!*0z4x^35|s$WlH^wwsLW69?J5_L-$)4{xTIB-4k&
zr#6azzBH{yc^mQRXy;99bFOo$Gnd8PP0OI?L}hW+)m*iCtheS-BBuU!qEwk$){-b7
zRw7#8TcvQ4?G6JmYI4|SISI9*+*(l?U4su3R)`BQ9fW>@tJr+cxlR`!{&<W+XEDud
z{9T#q#J#d~k0exz3LF$Xr~E?Y@lw1krOFO}nzv=kxSnSNOC4r%ItZr-Jl@YaEp}&T
z+^Klg-8vBXANaj(J-)r0ZV@YE{uX;XCN>L<$x>|EtUTDZ0@}6wM<|2}Z|UoKn`Dk}
z4@>(K+Brq}3!3Gm%oW8GzG|XP<KhWOix7!ZG8I~fzH((_B}_$6Tq|pp<|*MXLy=>D
zsah(4aHCuLFaAV-eoJ=p-z%t(9kjuC_E~IWVOVn=D9odsNyV6%e!1B92}q)WI%_DR
zYDlB9ABL2@T#F*=NOLqJ+BIZ6)rN(XrTd8<LE0GaMQtru8DXO0?l8=PAgi#d{ydl|
zLsKi|!389Un1mq2Af+l8nW@QLO{TDaff?dZbyAkSMl>f-dC^P@4G{Pp2Py73qSgC0
ziYOooYcx~JBpqdc$LJ6W!mCL+(!yMj2cX?w{c_w<Yjjk#e#^_|2cS%oYQA{qqf(ZH
zl1Xyj(sl~v<qSCpsWQ}PAf0yB%iGwtqog*ZDOXdZB!Oy7&70NboNP51=2aDc;8hha
zPhDEx0<9f*DLpmU)2X=z`*iTlOrqiCaQ#;DcuTw?k2Qq&n|94RX;Z_Tgg9{8U2U#4
zH_~|*7sm_jArmGjg$>;4v8#*3)XsqcGlec=78N%AbvjvSs%QZ7s#8MI2TY|wEKKH6
z29}s=4uWk4&Z>wi74CMJTO#>?*nZAcLHe-2B+B<wWKUO5KDQfo%kCquu?5=n2T9H$
z_x95Y(&w`YJr85qgr9-V!f{fLXE-eg2G^Mzu6JWk6~8I25g>^BgD2({iVynnXTbj-
z@Kg>%&po}cPB-g(I%#%xbyHx%P=uOT%rI<FYw{yjTqLR2J4#uhjZK|@lp(94i5B=t
zR)GT)Jm>qmd~y;qH2YFNcwqMBUy&q)D9%or^uINhl>vdIJ;_7s*6*y>gm*Guhr;|O
zPRG1>MdZ!&5_#iRntO#PvBe1($UhvoRvkcutwMzfjzuC>$l_@|VJ2c{rHewF2P$@x
znwBNRxqcl8irNy#sVgsk9rdOVl;v1Bm~MxWLf1<fNo@jOG<=Jm=dzZ$ly7igqJnw|
z;!-wrUu^RtcP?>xN~d0$LMLW-5<}&_+V%Yo?keo|i)&-SaXxz4%^*Eb3Wiu{{6yLZ
z<B{nWK;h7sBez{ocKCzMi-VN=oLA;YcU<q?z4aL~I%4B!oiw0-^z7xd!6|7;C^+Gs
z_9wj<fMDyT-41SuA<YcEL)&d*7U90{2lyAjzS>`&a$g)oMmW66aU3T+7kH_cx0bGK
zBSbLweC2(9k$pC-aN)x`?Jc;t<<s|MVgN?cZOMd42HgwYwZm2Z`}A_w`d)dU+)9k&
zpBt!hYn$d$z5>0M4mSiF0fUz+Hv}Ai?6p2$B~0&UN2kjmI%t|JCY3OmvH8qkaWll|
zrRsryv|O~;T01#%(pAo?Vc#zOnmk_%z0q1~9EXFx7SnxmLJyb0Zwic}{OQPpK}4Mw
z(JdAml{20~nUv~6<zrr^C2g5=rwn5wO}Sq@IAewN<-=*MHD8%5J{7(lw!O%I*oNlu
zjnH&>qMf-{8OIH-wL@r!YIUZ`K+i1ctVq*Jycyti(lpJkah_SDwr(CattU)IhIWP^
zPeu66PLn~3RS!x@j!el_4SXha%au=JjqoR+!<9m%P?eEXrF!rYP_xg0;~J5`;oa*z
zs;;YnIpc_#hlvz<MYF!wN;c7dEOOu<B~x57pmE!Zfu>d!#A0{TD;rZ(qgHfO5YC)<
zDXhknup%dST4Yw*;Sm{ILIVfC-u&g`e8ymMISCW58QJ5WIoB*<?VzWT5VUP3ld4s)
zROc<od`(PM4Mb&?i6zY7^u6ZyIp(&s*)comGxZu?fzyCY(BN@X6x-K-^e2nkJaq?-
zg>s85a?afN-I1%UHQuzsQkJoZ<F^c*XG5VG$a+L_<66j#beV)1yU|w%ixX(yc-nEn
zaOIst+0D+$apkDt7vx4*XB@cW9J9j;@xKi#TcIjX0|7+uJRZ*a=afvw>wYU;HOS*t
zZI2K}OUkyp<5}aa^u{=U!@0wWn&yc;Dtun02c-irX`~or2@DKSi<2zKy!l^C-2Y^{
z89g&h=#Xgu#u{MM8cbj*+U2o_Gr3hU$DAaa`PDPnnN4ja${M0tlNJ2r9NwMOu;8dZ
z+n3-h(8y5{BGmUBTVsQc_Kqo6Z(UT|mqI720-bblU$`1_(_iI(XPzpiM-n*US3Vg(
zc_HvVsbb}JAmx97+mV>*Egg*GY7NYa#S^_NDcuJ&A;~!hi}l^#Dv$>Q*_?wG|H=9^
z$?KEr5h)~>J48^=HhZY0r9)R=9MF%2{`>HfLH$fV*~{LR9REi<Z{%FZ@wBVIg`oBD
zTTxM3@8(}!b&l3decqEaw<pfX)}P=#5udeP^Z9ogmYxUOt*?KtZGF$_VjY}c?>Na9
z-_u=&i&<b(CGwZvzU#cV?BkCb?B{EGl&WK3^5Rxy75D4;my0?C8Go<)yAxv8I@9YQ
z+Bcx-@0W#>qt9&pAIp369jUy81_Gc)BoHJ~WD-GuFoF<JkP$*L0g?=g5h5{=5EUZ<
zff)soaZ{`C`2JsLO%M?vq*$0Vd48!W9j|R|R&{016zn3kM}T+B!}l<FpNHenRr@6t
z0L>76ib{#%E@mp*gn#wm4&G6gHJ7<h#-*@0JoD2D0E^o1I62eQxFz~H7jq>Gk@-+t
zYw5G}GYz2jtTUO0&I2uWd_P?_@ED6dSH_nyp|6l{`Dn;ym-50p))v@l+SPi`Hsp@A
zqw6xSt4=mO0oA`L^`qhW80EK-W#j4eb@N$I^s%r%C2_0u5r6hyw_%ph=$NXRgSm*F
z>QWL6LM%Wsf|x+U72);^zM^#0+!)H{wC&rru%Wbqz1$b7$@|;fUvfhJvjCQa1S9V=
zIVueWA+2ll>{pR%e4ETE?|x!%4ZhCxi<uXkRYRNuWL1r%CwLQhtHj(DIwe%fDx#XF
zMMG1$hs{TCr+>ia!63+>WI;YMIX#|ElcJyzRevmFI8+p<dXeEKdyve=CvroJc}Vx^
z4OK+B?R3c)j*LJGMWS{@<Y5fS683&UX(1A57Tt^dD$XS563nm*=u8Hc&qb)1q(?;(
z;`elVF0OzJEc7mm@Pz@bBtao17I@c(Kt|$zBQUCn`hSPdI9Jx)yiDL(*V6yj7{}P!
zqxvuye=6V5++N12!QB{uC7V1tAZ+BmXQcGnZikobPCHrjbvhSrwB3i2e~Ig(KLh^v
zatXdjM(~I23UGn;f1iIabE5jJFVFscX~7hgp9m#PP?5o{!JL4o!4w>a<Q_uxygUKl
z5HL!QQh)ZV$^+w3ZONB;;W4YNFF%l@c+f*f(B$DSTi1N41zt7~mbbcp6O7OAcDsuE
z-v_EULlWMmQzd3q*R=LK8ap@2foKJ_WnDvSnbsTMoefT}N5^`4-xX(+c-Th$hC_jI
zlfuDZJv)EZ7Rlw$`%|A;#jRN5CjWg$Uv?GB{V>DH)ad+Pnj8m<Rn&94KwSntE)(Qn
zCLI(%K?BK<p0nKiwsQziOXXyc-qOID0zsF}Jp?j;ooAJi5Mv08SR|4lG{(WSj~g}}
z$5GPKSmhs^s>g?KU0pakPMlL|HiO=st%Sb|cZaZ5ucV-YezX`XP+7LmiV#DPV*my~
zNI!fgL?_+Kzd>~9ZmfWdw<XHRd$&2VHEVQ~1{q3bx&NPzRyvgJ8NER=b_2Ml9wrFV
zheo%510oiu<9nrk!W}_>NheE{=TfiH@)nWp%9;$*l#BZPPpA6OH#js}GW-<BM<N-Q
zNfHl5+RBM1Cm^2`CQBS)A0BjkFO39A78%hG8kkD2=>3ZBlIPuSvk#J^qe;+BL{@hw
z9fS;ulkiJQ|K39hh2&gs6`0y>l)_5Sk?^g5f`bbGCE5D>`yUc!kxe4M=_&b!JfU;J
zhumYEuSh^4p2PBfTYix(+Sk97ziZj$ueln!GzhiQQJ8<s$%}trp>(O3iQ*4ScS>HP
z7`=K{+4Wop1{2FD69Tf>0anyM6a2r1*0Q$SZMN>6=j<Np9Mrts-y#wRP96JMwJtz^
zq%wgIYOudU2b7=r?INJ3%PUk*yD<3wzK@4bRq>{uK=I1pTE?UO(q~Td>-0MxogKry
zTjG>;MKXR>74=CPIsWe^1xfpx+CC}Z#(ECDORz=x_fn$mkF{c)>kH(o1==@OKi>oV
zZdv#!1!*xRy*wmR!19h^lkns!0ga%4^4x4BS=Z>-B11&Qrj6^+W^Fsx^$mW18BFrN
zkN&#OTRY8NvxHZ43Q$DKRX*aBNcKp39B!sOI$e<vnvds`CS&=yvf0?`JY-n~S#N{k
z*fXCwNeoPTm>?MX)<SFJQ+GCs4Cpi@K-q&Fl&wj3Jw66p>HLva1bWZI_%V=wrdM_R
z_aMkX$cTuoSF84xAYw+QmRCvhpkXan&wH2|v_CQClkbQGf+J#eC>wh{c7YzueK=%$
z82(r8Cfu=|TKkWy?7hYOh=EY2;L1JkuaAN9eZZ@8_$crh7oXwA_*MM|rS2dOeS-0P
zr;C~5&?Mv_1j7!9Nsta-G9cK0^T@XYk2k9s+<TMPXc+BvG>^KUc7S@84cBS)Kj7Y6
zMps+q*}`Bhy$7!(L|m+-ExzGizU{ReTgN*+0q)&xWHmkfm3kt*F9W}D+PDIX5*z3M
zxnZBf!_J4kWhJZlpAX0*34QTNI;OI#m(oL~u2!pu<UoW10fPckfdB-5NDvt!q4v}y
zg+ySmP=f|YC&2k0ztv=*!H9z-5ky5%BxHb+F%69{Oij$5u128jJU>tLu&r?YjaT@t
z{pHwu8fd*Hz?KpLZYCxay$n7~$~|ezg$&-X#~=VLwtzHh#u$ks?_&>$C@J9Ej6<$|
z8%~QKy444voJZ}YNZ|K>QpfLnTdgE*7>fM|kFSL2HTx+ckjA(3D$Lhm-uzxk?1Q}-
zYm@Y!6z)sD`Cx68C@bC+5M0L7koUbOoBXHinVEAl^#An!1!D^sz?qqunVFfHnVB1R
zz3<L@P%U6ENL$+yt&rOZ!xyp-<Wv$_EX&oW@Bg9x-og*_3ZFcG|6$UO`MUnd{UDd;
zLiTmYU47UCz=#BkEdX}bG07wYht)?Ntb2ZDpk2>qRkE}AViCo2WA9)f;CiUnGuV2_
zr`E&`rp$~<QWye$#+BMoMF<mv9!OQRk&sUj(%S}|?Psl#QWNsN{am^aqzgQLh26F5
zX#i91FmOI+o9JwR;QK3bFIqJoB0kWLM41thm=tgS{^ZlQvZl=Up*-G-GRZs|6Olhf
z{7+z~-JgYjQ_atV9S!#+hpeT+SWBT0a|c5F1ca^#Qt=%)S0mlxQM4ThSi=Db1c49$
zIZOVc_7=a&d0$Wbqcg&vzG=7H&aT%uvkzcZ1{rJVp*2E(Qi`j;M*%yAuET%MFK~T~
zKT7HMu5#)1`^%(HqQ0M_-M0R^K5V_quKxdT&ab$6tkyl-whxB@=n{Vm{XQSB<^3O1
z%I-hepM9gva*=}06Hlrj8#rBWSWB6SbJIt!O(33`AxJ2nKAN0d3iC{z^P!seARi|C
z&X;c8Qb5*!Fd-O(Ar%rrDu7t41`Gem+&@T)Kqu~fvsh0<4G&U{UZSqWe+G2P^F)au
z#)Ma&1d>dP@mg*{OiD!VG!pPZEvMWr!iTN$>Gf~&HYJ>))PYZDBHE;^7i3`DNz-ch
z>Q(UF#$%Bma34jdB;H0;HD5gpf^oLF7egb=66`8}J&g+alvDAfkF+t%!*uTn9dSR_
z*t-=i7bB}*M2ciZ;vO;I-nh8^7$G`8D!lU3IZeoId}`pspL*pKoCj->CtuM7-(mAc
zecDi~AHPJ5dF!U!DU-}H6(tzK){hL6k&BVZHN6V)^D$nTzhz<%dNGm<JtmGvbK$D(
zEZH-E`+Di(&9#5v{r%AW@ZLc~KxWD-PLpU(GxQ&A^_|Q1=kGdqc6TCN+~Zy*T&9Vn
za^*6ar7mt$DTfR<w|$%4V~NA+Iov<sy=++oe)Fit9cfhtR&^<l;QG6Z?6D||(6#WN
zc}#V*;bBki@tOS(Z)f|wn}*lmu}x#|5dEotf<O33kbGHee^ieXUfp&NT)n3{=}O2T
zzb0SN?+}QE&$UWgeFwlBm1+{XBH;T$;$*ebN(j1{k70t@c8vQ>)vpevO6SXp*>HYZ
zijM@)FMmPRZJr;5smCgh;*!58IW$VNwKL9?=kMt6Fzx)U$79TDedd!#Gk40sZqhw}
zoiHvzbuf~aj3GwM3oS*D(PogDPvz-8!?02bc{){_)-TSd@_a3viKfT$eeajI>a29%
zi<8yn_t(p}S5V=MyAT*~v)byh=q1WH9X;HMG5kwcHvLVh?5#(A^sj2<bNN2UGwt*`
zfDCH*q|O76sdDG;oqZ`FL}X*)&jmq$L)sGu;U4tVUS$2JbY17<5^q$1llW(W(NXV8
z4}LPAUvfm0p$ix2!a~%1h)5u4V;3Kv07)?nX&`L^_n&|Ky+-1MC2M8u_GHktn<z+G
zdvRHG_E7bBtWK)z(n@T<_iE2{x>i73mfCb#rdY;bR`0|k^wY+22f^>a=c;CZ7HlK9
z)4$kkehTyncK41w!@LoXPdHmWW#OIn-E^4jTf*VHtw1@<SKu076srDR3q%!HOT#X^
zwfxVy_FhBTeEHx{O#AN`z;iJp0b&Y6HmHAv0#u4Pd7OMm1{olrqJXeJ>+W%?I*m0R
zW461J2Bd<5BEW($5s^iVV8m6IZASzbe@X8zuQcI-#`&Fm29lU|d?=>^(M50IzhqA5
zN5Y+!G~aB}pmOw)FWZ6c?JPg=k4GduwI&l^QiAG>q4FQLkhc_t3)`Taa;N%II;>|W
zm?f4&K8N5rDHx7lHSKGqHv5l(=fmkt0s;RohLNe=pZgX@x~&C!q6uH`q4}NFfBCca
zBTmOXt~<=D@V71#GJ3Esw{_RoYr9-{=FZPp<Aq2F94ZtbCQ@;fsZ+J}+gs{1Kc&td
zwX9j(#8$Pgy61aKAZZIU_cN^P2EosCBvJ`Pi44S52tp8JVF(16j3Ed@4TK*6lh}b9
z+XotHC+4v;&J>~)q6i>fq^2e*e+uFOnp{=loJAqgKa?Q>*y0cmKa%!WwC&!{_U%D^
zy9%Pm(o%=MYK!8n?q4sB=^^!uH_hJzT-7&NX^JM>L>K+d7@{-jlK;M!+y6#!m5UBP
zf4PwLh<Z`<-kRyMuj=_s6DO139#m{QLzBg`*xc`TTiCaSrS)>fvwq}Ge?&2#PEjeu
zrS{s8B05n45GdXNso)c-<Hq`|7*%^TfkKFGA&?Obc}j6g`TLUWAC83rhLk9DoE<R|
z-<*i1I|6g^&JLUOeR@1DLU3NKhyVq{GjaDELK1e@i-yy6JZeJtlx<?9%L0RSCr<{h
zMcX6TlE_HKe*SXN4j>&EfBu8M_Rn9=F2d&cN)G(?x|Dg&$%Fp5<8@(w3Ta@-`XcR-
zJN99xHQ&hRX;vB>1@P`dA-V;Z7m)TzZam%SO}|Cc^}9s8fIq3{p?#V-KhIY?E|1ux
zRvobl0fIo=6(V8$8ddN9+UcuI9<unt1T|8CWJoN8ivkNGz!pfXe??gZkOmAq9N7RS
z3lF+an=j#6^wH{xJ@?<1zVC`-+xJQl?dV!lNbjvMiON~uTHWU0JV&wfW5vXphWjE8
zq@_oXp#h%R-gC~AR7?lkaTt`v|E1}l(|67Zt#aR=0#@esa^YWn8NC6H7%IpGkV27K
zZ-2H8<;l_|`_rS$e@v;0OGy3Y9&ycKn!&NfQ~ho>DVP1vi!7eB)qzMR1pP$J5cD$+
zt&HPU*n(+|d6%sfuDa$)bZT$IrD-Bj+tu<v!?*eLhDHC_P#FzKA4fSY+PWTxk!RuD
zCl>hTF0`*dXGKcr)1~8WpB@_1ah{r-{oX#?Rk6#|_1b+ze`8B<U}kIllk)6`3v;sQ
zv^^bFDp?IgKs{9Nxo3O7kGD^R^+E8{kOGK|Vfs|3TYg!>%50COm6u?MFp}>rA{s>m
zyhuM~z3;jwKg;&seeXRHzHh{h#B>^LQq2lLDkiA==LF2XH*#N8c8!rEt1sU}x@vHj
zs?uomV60nOe-=PNV#1IuQi=<vRNUB;Vka+9#}mKO&aruf)8UsM0Om5|)Aoo&m??9t
zqR~9_fpQyUfm0)itco6%KL5p>GoAZe4jn;q&n1a|i!HJ8aC=$LIby_{?7s)UozIKz
zElOlI@S-uADd2H?tmb|9oZ)78lr#lSRjztm1~F<Pe?$1-n_Lc{(FWOu%MT|*SHjIJ
z#5us`7oV15xWXbJBoPYfK%zZ%#l~jhT67`?+fBHBG0BeZ(pmTZ=c%g;3Z|W?U7pfB
z<rZYlU+@QhOU}zv|23cMr`1>QqKy&RvG`@W8Sd!!M4J*3?HWCUKnIU~^ZFk;1dtns
zyVtL2e<R&^=n-99K8M_VuhZx^o|kRtdkcZR&sd(Xnfq=gqRaEc?KyuOA1{H4dW6Sf
z#cI21cFJtKw3W)i&ebv)%Gc@7MNJkTA0x<ZT$t-t_j>{I3BYOh(R%AWM~7T9k2icr
zi!3&{VIIT0<t=v609=@mL?@pzNjxv5?fvI~f9M207{E}884w`CAj8sl{QuqN=!mKZ
zrR%9M1Xv3og2jx@w}6F@NJKzE$THRTBtK6Ppi}|JQ+y=`6o=?jkg0A=WUd!;gG714
zWt_xMIov$xWvGD*>UG$Ik+u{YP`;`-I%jzef$-w6>Cr%DaC@{nT^xcd)_~m`iWf$Q
ze}E8x8K0PCc`mEBY9sTf=lZ%Hw!bxg4PNhCu-COg8nb}&l%82W3*PoM>}%3K65fFc
zV;He<jACHov>|SDmX|S(F$5Vo&U2i`IKiaDTGpwnV@^u17E#ETyDtCtAJr>}wP+ab
z3)k|w-aeW!uR-~Ld|JQl5GyPO(1~oIe-h<2k+elHf>RiAizh9GeogFLE`()I!+zuD
z^pklvG_W7Cc1HxJbMkb^v0^XvvXM04#uv)9&-U!-`tLcbTEp!Vz4|QU*k3~l<?d%4
zqNCQeL{rDwBgi6p^U6+5@<WQUJboTN!kUl%`n~&7nktQRGTnw04Y@;I74_^)e~P;8
zBjMtMTxzHHSg)zV{}T2MAKTinKWjf}kM4fY^nJd<&7P}k`7NHq>wfybve!`|1;_ZJ
z1b$Yr#*&i`JJLXd&@u;>^jg8_mkocioRqwdE9(3%dXGL1;IuI3X?cTp@_4(DaW}sI
zhx4|NS^?xfPA}i)(G|yixvkGAe=Qd$7u5~SV&H_Z2Gy5nNn#M+2{B?omUse)2#^6{
zKF8|_c)u%Qpd<wd$Sf2A7%DO&R@>^^3`L3y6i`WwVfxJ6XCFiEZkn&vl1O7#a1vx#
zfFy!K8?1msO@JnbB%4VhxC|K<wQ6dzk|%G_^0)p({}}%d-D8$^w=uAQf4Z1|gZ&Io
zzObrqAIr;&>V^iehuaU<+DeF!fFOA|M^*t6Z8EI-qz;G>RnuJC5U(F819W(>a=JJ=
zLz;tOSAxsINYEJ@soHc%dk#keq_6_ma#A;DZ}W)ptv?!PA9&nL{nlw=O71%<{!|R5
zBV`Xn#t)2q>!htx(6oJ1f1}5x?jtN1>Uw_+?g9=qYGOjvvRcrOCl&<4T4hT;Ob!Sd
z8#<BqD~`w#NCp-^Q<IzILps`R!?Qb=SwY!?6{q3y*gP<wE7p0%BoQdc$h|7kwVZ=U
zllX)xs;LCnOw7!a@Pb0Bs$`o^Dype_TpV1j4@acW%9cOhiJHN*f7r%qR<2$Q#1YB9
zwcQ*)`}Kq%HO&H^pi&bgJwi=E=KPfW3V}9`KIX8cP(TiXVQ$zEr~kt8fWj(pfX5d@
zUyYiO2N<vm=sR>zTrCgy$p?#!FhvxMn~k6Xff%StzHEHm8dh8P{%r^)$GvQlW~_T?
zhCXY)gXT=~&&8Y-f4#)Fa^_`jm_EkdnW^ram`N-er87yJB1{{8`J3r^sSt2W1cF>h
zj;ga^Is2{@uOTFVw02t<RXgq;?i6$J7_Jk*!qOX(o_O6vpCw#W9T5d6ha;I<P3Fbn
zEKakE6+SCJ;BYKBY{!%$j)TlGJe5DlU?M;yf(iX{g3a0`f7jU&{CP&+^B*gpdo}ql
zo>I_1;$Bfp)KTbKYx{3Xse2B3UYdXx8SP+4_Ub(kqnW77-pE0}R$pk5Jx<;Ta@`9q
zqJ|q8nXMZgdH8(3(lWj~535fpKajdQuI0-^^6a@Q9d84h_GERKrN5*SNssGKq2gXr
z&)%Bj;CxmHe+<~y1I0O9WR~e|Mh9{-L=q4Py-s)tGw_NWyT-cSC#bh?o36tjtxcoW
zQQ7(JM+%~iov#k;L!yii`Dc>;nC4w^##JdO=%DJ_r(EEo4E&Gjl^dQ@(>ru413$mR
z_FmfF|GB7C*q*t$RG0$hlUx{E05%WKKm;HLNf1TXe>!C&<lpDH+3fwH{Pa;OD5HPr
zVr%x9%x5{o11e@_Fj*98qM}U9%xUevsF&>dbLPB^_5N$l*ykDQKlT#(`uNfRPiNoE
z)A?8D0VBe|)BYzkBhthru}nfs*TsJySf!s0vLD&<GvjOvkdf(DzAQ1XTF*r<u^gPt
zzCPKSe^mvGxdy-CY0pE)xJ3c-7j-=g3AV?E$;v$Y;QD`&B8!2Yod^%Gvi8AGrr|;E
znP*3~-MGrVPW}utJnMs1qWs%bQ^-#$L&*mgPP6}-|IOFY+Vhf|_ASA#9tNr9?;fAd
z`kJhR1~I(ofu=v|ixFQhX!8=kBA(?iD8KUOfAKRj6@7zG`?e*g<6??+T|PMXGm+1x
zihWyu!rp^RFpq_{JpZ-9fge`Yk64x}<tqLnZ+@HI?)+raKgW*WcRsu3`>s}heU5=n
z)S4^KI~&MrKzK0rN9h4bBO8#koCI>V=FC9C(&o%U1%}{I32_1|5DrjHtj|%z>iOp0
ze`}<1zdz<H(UOJEbe(p5jgw-LCKOreVL*TcA|!+F*uQo7reSMJ^b_>Sbx#1$+4a2*
z-V(NpOTgS&l#=6O<rDz5Wxb1Nw}~?Z3E!kKf_a*VS|#|P1oghROi46hAPXTBfJGRx
z5t2mFK67q;-_67CzQnQK)%NdC&sxBde`@Cc9!1=bb>%nsoVHKJ$MEB?cc;*xy1@>3
zUtguglz<1yIU2Uix$9qxWSE4>|E!<M(sRzAr?J$fL2`b!CMr~kBK0IS+d>qM7LdT^
zGuxx3`$CT842%B8&j&e98ePvH4?^BWtt50n5C#nHDg;u#@YCZ%3wVbxz$qQAe^@^p
z`%Xvqc)XfW!}Pb@>{~P8r<~#uck>tiKYj2|;*gO^er+fD*1<dN(fM9q*5gj5KM$X?
zU!T~Mk7e)glw1l0#V=&U_-R3XtUR&KjB3+B&?lK5=)RTtc4PP9P%2qqp_VBOxh||*
zY4&H$*)=NLR7QfHNlGZes59G=e_+f3%^~m9cYq{%<pPsO460_Wnzsp`iXdURjngFV
zcs}M-&|UvOBSGlc9zYQukz(^uro&4yFX=b@fm;MGwFfo`90#Q8TTW}(2<670EEqbm
z@BIBG-LJ0w*wghdhy74i*xU8)K1)TXE=}^%vgF3o8tGbc&nJSsY}2Xlf9t2IG@@-*
zRTr~{%lyB~fa|`yv3F3HZ#G=MYc>T~Rj<S@Y@W7==2KqKSfGFvI-J>vOXKlCkzzs+
znQQq#ga8W69msU~4}PUHtT6Lb07-Z=3G}CrT&|`qVM_HE!1+>jX=S{%s#{u>nSy}<
zIDk2=AU}ZsOaK5N1le_@fA^QKr*hG8yyyNKujS`|Gp%FC(Z(r?z(2+m0uB>V+-~@L
zs?V=aM7I662tXE^5*X8HNdx@QC}}x;-z(^EQ2?W>=jM7ccor1(eEkPS#SAP{Pq#z8
zT#7UT=%krJKCRzLMroVUeLqj+&^<>*%t8aeGahR2l^&mhzmwX4e<f$}{+hS`G&tAm
zDE#OYSSi?zvb|lIJKBBR3Qmj|lCXmPW<GE1NA>?<^{;P>`w4a*=KrvNV)hf0mwe`E
z)m2ik#h?tkA&g<hFsw0X0SwM$2b|{^##M#{SR-M3-czcmMMT2yrNsP_^&10D(avcI
zVr)(8nl-E>#KxYNf5=3dK8rp}2yL;cTG+oy=rvzw$6ln=y@fum=AY>N9Y2Ms%e8IY
zw+FPftH<RcpGt(Gh?5L|_G>RMt>Y)X^7-;#JKNab)lFV6WDP%qOb^|%eTQ2^EZ0on
zD5n~fW5pvXNzj15Yf0NujtD!~*TCjTKEUPf?Usf#)!*%Uf4+;4qY|jD>>q8H9t!!r
zRLPCC`R{Q4mNhi7mNvS0Y)5aZrjv2#`IO2iqvY-R3C?qpr{A<-kMdvtuv7eOAZ`2y
z46y!|ewIZa4aP16xvv6>9-f6vkC^mkc-M;l?)uNR&cW2!pJbHb_86E|w6Q;G)Os6s
z{>Bgcyj?6Fe`TZT-|NLPohB(dT6$mo+^YMJ?f$MFntfVY)KRwIJ?n6%_;hK~&N470
zUz(#M*Gh*}Lv5JQe*OOLiO|${4G+XVVPyXSUG#hiWb@tGhuiQx+4`STZ_f5;Alkl%
zw0orxI2e?I1jKkq9>dz7&Qf_hi{UjK&YfOQNz6Scf21cd9E2qDhJO9N>5_<Y=~hSQ
zM(m|gd5tvlTx~FayUA?U=zl=9v(Bq2(!$tkZeXLS`|Rd4T|UEXqYX;21IxP(I+F)n
zHXw0;fDxQNJK@Yo`}??*y01?(lG+SoCH<GA8|q*WZuHUF>3=||APCvYP!JLjL<k}P
zwzyP=7h21#HQnMGVk)y`W~%E|w(GlHVhxIWmv&hMDStrV`ZT2Z&-zqd_1?f0R%}QK
z142$E1BhgwJ1M_eteJ6r|CW#smPlY*&w7M4UR%yo(JbD5rcYDP^zhO@!;Ao1K%~Ec
zYm5kxS_pe-2usbM>rZ{?S{hSX>bw-hjJj`rfb^WkYy5sf^i|6?|1$63yD4{$C66oL
zhakx=7=6^vWTk)G=b9)|1S>HThaQjLZ}cy-=#mNqy5}U|dZichl48>Gf+wmv?Vi*p
z&WY#&RAff?dcOb~h;#ItPCKMqSzIVwlyaOEuyR<@(c658^jfrhD+sQo^$>PUr(0+#
zFi(1&V1dDC$dv>SK#$vIXl3EXFNhhDAvWe<P4Px9?|6R~GczzK{I?9Nm>F9sWKytk
zpvIn%ZH;}OMFgI;m=c6PPY~+41x-!2&+ffU=Eu~s9gAAo`JElD`s$?9Zub>W%(lR<
zaTX}%6B7<lHVYcmAwO_<ND-89>k_OghQ!jPA%lLH6nJV_>l69b?FdA-!1?yi2~J67
zb3D4ZJ{*5>FAO;4IrU8$L-I-OqyVu^sVswGVoU51CFYWvNQ&Vl3_({=Cacv~B2l%a
zXcgT5omuQT3kEAPe@lKH-3cTgT<5l>MdDwg#b*!6hmj69UHSTnt@`v*o+;hO-ndm(
zCTUdN<o3DBtJnUeJ;rsj0xV*xk+!d&r5`%^Tv31DP1hYFPA)uHm;`3JTD&G8@>Yi+
zl@*(mTjN}l`wZj=+teP|tN<>D6a)lBX!ZhJz2nd!sZ<mch=$sJN_zy$?XPIV?U~6P
z0~=U4F(;uPv7D1wlvU(7|NdJFu&OXx;L10z{At%p8snf#m!0W6jyY>>gl;m4m=#I-
zP_BPl*vL1H{oyCD9?SmSSRT0g=J_z+#_0AGKqc$8PzK3~Yd5|9GX#)bU<q+rThFcO
zB!~cIk`WLEL?A_gq?5HtC1`9@YJVT_$s`ArYHSz%`wiZ=2GRRB{;DFvKV$0IOAy)(
zQxa_?*nU5K)O^3`?{fZc`+bkk*8i_f)O~-P1%0P#1N8e?4Z~fpj*2Gombzi%#S_1!
zmAroFt1?Xp1ONuMn{Nkk%C7(hI);%w{6IA#9u|ZkP>|CGG$F8GTWEB=kF6=3eNQWw
zKXQdhqszz(i^-4{K}6xuP!=IEc%01Mf~wYxa|LwuvkjSaMjBnUhKns7D{KcP3C4f-
z(f8d4b9}_a|E}_7nX6kzh3jeYjGbC?o!lWt3@CZNkI!i;)vQlhbJ1d3I9N#@wSYDX
zOuq#euKK?UmG~(3+Z~tf^uHIt>vg)l*DZw_P^pWPR)J@im+QZ)pFihE1s4AYx!-(d
ztt1Ji(rZ-K?p(m41WwA#??9;{QHy_>7%UHTL8R8Tt!l$}?n9jCIm?lR#xaay&YQUP
z{AY!*Jj;>VzsVzaE=Bpaxt37s)j(`ti|m{cWk9`iGhmpfORzEH%n+G@Gu!c{O#o;p
z!3ZPvLJ(pQgGi+_6<+%)WPwNv#UMS_+yO9>8{DIh8KyuAVKp$l%?~MxkJx`S)Ka(V
z{BAxIKCkLE^)L76e*aPIck=Xl&!%##=PeIXo9JPGa+Fj>9xMT`S?4YyDds&MC-v<N
zdddtiyh<tk<tQWK`M^x^`@i3K-g{zyF61lSDG^d5n8rn<h6{IV*1PsCXKy5?uS6zi
z>a$S0#)23D>Y55EZ>xU4u+}Q<yq(WeHHO{h>ZKNV7E>Qpj2nY0bnlL5%(-TYT(YA9
zfCNAw0?eGvWS72P1Q>tyEu5yHk>TvPTF%W30M9jM)R+&fItx2(%SY_rFV1|ue)m<u
zF2Bl$pWM|)jkXWxi1hxJEBd!CqxVb!|Kt%5&W>0z0CehPLWL8w!gfe{{F0E3`rogw
z>BG8mvc}y9JhD#|Agn|Yg(zVzz)}QIfgi+}xtb<kt-ogemdAfrQf7<r&9g0i_#Y;R
z&v8<W16z(4K<PxiRjQE8rf8#1{0>>`Z@R#+T^^wpi*0)KW*Lat=9TL>yC{^u~Jq
zTsEqZ@fRC_F2e8d+Z$`!M?LGW-FaYDK$yYcOYU{EJfB-rkF3h!^{Y1F@M%U3!N`0s
z4e+7B@06eHd;x!=;IpsJ=XwM*KM7b^U_1&dRTkugU4>&Al&6~{4_2Kj2YLCKdx(cG
z%1z&|>cz^H7@_)-%bGsw{EpIo*XsNBqR9B>dOw;2FA%Rd0wvC+13<LI*BDnZjmfp9
z2f!qf9#jML{C=k{pYx@yPJsCE8xp|+uXNvO*E`g(Oh12g{#5DQPnM+j=eBVE)NX#8
z154~E^M4`?@!JLJu>$}h%Zk{B1<Tp{NrK1b%^jb1Hj)4k0T6^{90ZND744XfLv(>m
zgoICh?U%T^$892Kv$kK1*fr?eM3in;lbJS~zc>;$-~S!OC)%k3AUjvtB{Pq1LViDe
z@ip0#rQUz+-G?hGn<V_hHmo~Xc@L#}cN&^=P9LSpU#k?-js=_yJ2H=(TiuKaY=No1
zif=o~`Zwa8wT@NDLhn(sJBj4oeSTW$?>P5=!0rAcV%Dm!Ng&)xVaV!VJi3vR;)Xm+
zNg7e2yK<Z@+VI)RaCY{}>tc<G^HsFgO~YEpXu*FpT)n!i<DJV+XqwhoGM412s60b^
zK3SU<xhXDOnKABHPT=#u>ve_Wp!{nYirJ<do?8FsXrynYLBA&}eqGy%j!omoaM@6v
zdw1>OCYoCkMxH8?&EA@MmvRWppA{C?E7rndVed6kin&b<NquD61l_pP|071~#$Rrm
zHT8e9o>lIf%cBj<uSl6VE@z6YVU7%Te$h)(#x6^7l4ilE9KIdCD1>`#SOCcJe?2<-
zqiQ=^a!lqDZ+tA=VTr8SCy9H99m^|3G+Zb=T-X=8$Z$eVbN4Gi1)%!qzhKzHtSCeg
z7pH`f6dX3_7V=zD4SF~vjVuX#@G_O)|I2@E$RaTf1%RR`86Mh1jjlnJsHW0-N+5Wa
zve88XKq)V9Ha5b{Jn>wL1AmX84%tCODKY_GB5&$^6*p%@itOKI@!>`EBq*B_6AxkH
zJM2Y%F8<<RTVq6k0B5pfOrr@)BD&y_vKoWpe{Z(Y@c}5rG=-6rt>MuwNypZ)KC^!d
zr7nKxOR8qTvZU!xSIqxk1w#9xB(?*EJE05$uF^Fkaiksh@<ir`>-}Ng9+&(;Kw%$L
z(f@6Ry6~v`K!H&wQWDgOqwpnP;Vjw^Jyi+@99$7}z2FK2@_+*k4bQA3)f}}XT6}6f
z3?8eiE8pjLR;s3(cM#f0Z6w%%v9Nyz(rp653l=KLA|zO(SS(nwMNvQ&KvG2oizI@{
z6ctFTB#HvXiy;(@WKuzaBp3=n1W1Sx5n_Z90TM(}k|GdN0)UAGVHOZZL_h^1AtH#V
zjEX^40nOm&`L1sljog?Gp73UVf+GEq1O?295EFbDC48@u(i9WW=5qB9#(;n6LgN}|
z%o8Xl*TIX4-|&v;HN_!$v?*ORI<?D%|5<*v@#k(ZMiQ%rk2PGs_fjV3eJ{G!+Np4o
z#x+cC<IC!d%T@bcsHX3seRMqpz)5N8Ymb+_*Y@N#YZ`?N*UMk_l?Y6PfuEWAD7OFa
zW1E5OJRr|#VAe**s`+1FW2%3VdIptX=ylg!bTN(BN~mpus;a6gC_<ze_L{KhXr-#_
zl*-Bws|J&0G}B2*LKPtWETTenRaHeL0#tw~1{fV&3C{w=LHy5GRkj>8G-Pfu;TSj(
z04vnpMgZuQ>=vBB#S-CT46Nfmts6dZg-9G2nZp0j>}d2c7DF^?`c8kma@f*`NI(|=
zlJ`%C#3>~#Kt*@}fj9zS1OY|w<YJQFXrh^zp-wvejSR(c!PbpmQvkAV0W+uAjjr
z+GPOE1RjI&2RU+6b4$)s`GO5rvC};~!i5Qe!(<fXZhsNNS=nEXi{#W0EZe5}(1llq
z00bo3c4S3xIR(P_4gr5b61oT=Ds7Fg>)#z+v3Jq{DBP@zI=v27#dkYTH6*O!Xh;#z
z>Y!a!>LiwwF!tu{*KfY}yj-o_q!~ua?uu5wR!!`#Moqsi_7b)vS(<@4KlR3)7Rc_;
zH_g}<27CJ6GMpqox$@QquB!*N!%Z*}XZetdA!{tq@LnY9r)qyBlhNfS@k)Bb`sk$a
z()i>RU`A=^!JI`wO)(<<aiIAQ1NZ=D`~gcP#Gvwn_3}~zYBHc&1+C!)_db*03JB`h
zk?6uRq@sZT0DHbQ$jo{V-*wQQq$y~$0mf(?!57yo!BIEooFqi47Pd+Vq6ofnB@VCT
z_(B@l3G=-ywhn*o7XwwXXHBQ4z@iSJiQy7Fa^tzb;)|}l4SCyqzS3V$Lwd<as$RO!
zoP@ASn)3rw2%NxhL^5#whvG}S9u0V8-X=IsGL=^4jxclsiLo84F-vDZOVwy%0-2?_
zbEruRBbY$Yg)l;qpfgCIEmGwpL~Y0S-uEz89s!C08FzmT0`EpfOW&FS5lAe8uw}}b
z@ox}0evUu4pw`meWp;jJ*`D~ffaKzSV!;HOepTa09v@_vc9$jq#}xW8wIl79+}8_5
zqB@@VAf=uZC!{Lh`*d9{QOmdlP?;2PAu7!g5Go9s$De&=(jL*^6!DfI_0|<y*Cz@G
zMn;$|f2DtOsUWI=d+ul%H6~7+cq!f?c`ztAsSh;50S?@GEJ?B`;rIi{PbO%m4lCrL
zBtQbq5sCw>kwQDt*QY8&;>e)=Pxttud$lMVUJSMnVUj`LKm3&kYI<kDkOI*>Lby4i
z4o~dL{+u7P()=RP{zE@*q?OiL@Dx`liTmKehf05W5ExHkfcvXnvTIg}MUOw=q%?Ss
zS*@qUgj|<%xk(NJOn?{|<X8zMDZwu>!YhpATsY5%gNawJGp9B7Q{u@1oHdSgO(vL5
zbux5ZOx5CXUT+TP62{KXwsyK-LxIiVV)Pl3)mS-hQ>@sdMKRd*J(H4~HUkgj_RkP`
zEueqxX@=7ph@wIRIra4*KNTeu5CM7D4X|=bP^pPng)nA>Ql--&&oJG>xEmwR-zbq`
z5*GM7s_KFhnY0Nskj?0-gC^s#e*->o8(%F2WMkalogF|Sc4TuAXyhAY1a~AuK8eek
zMp7az*boLq+%#(LD0ly{;{VI_LelTVt(AYte1v@RT!GrMhM1KCDL0%3*yD5HL`9y+
zFAWGn5QG5;4W0GalV@AaNRr=VoSu_!h0Aa>HBXP0w^hRO7nTD}jkdz_;G1HK5DM_X
zR&cZ8*YuQsu_*a{oKr~|)B0F|saH_=mKQo7KA}5<*bCXeR;q2$24hLDb)>PVBQSq>
zwW82peTpVpDC9xHnr$7pS57`}eH_x?l+SGa@x9`fN)FhH3Ef44i3}TPK^=N6bDn4h
z?U<w+g1`hMR74a-g213ojjET{tu*S%2?;kI0TGM0Q9yaN3DEhYlw9D7!e8EtTjB{X
zI_QHok@KU@hq?ShhcwWZjU7a{NcDg7kv0xLJEU;CaajJx*)s_FntW9NVxBh~n$w+t
zeAE{KKocM&1G5u!l22U9W`J_I^q&`$v6Tlph}9k2qElpBx9t4iA0(A=ES44Bu#ReR
zybqdojZ2gCX13b9XiLjCO}2PgImZpEIbugD#73KXytXld^j#uhYT(4kU2T6haM-tk
z9#^rQ`;~I_i0tvAk0VuQ@8og(t$mL5UEg4y9GAS-*NQ#kK9@ZOhnQO<jNnn66H@c|
z?sq}2as&}mO=Bi^B^gk=(QezRWl^0OPKp4}AICB!TDv2}C~_Bg2`o<+M#(6-ZAfPW
zn7`I-nz}gyAqnJ$nQd45-#>qVeOmEW%5gb%j_pfXDJ*YjrX=vG_5?xg=MBnD@1&)9
z`>4LD!=Cu`UE%Aimv_*dSvl))ue)tbydS~5L*i#4w>bim*Cd6Nuo=vq7z}^LS@~W&
z6vjEuzVv|3=%ZWv4(ovZc2^Dg*zbId|1&z64jC>^SzrUFQ6Us{fkJ=q0N#iK&EDaU
z6CICX_5|arh`wJA@m#RHPfh_X&ARWI|8zbY%@u6CO>g(xkGX<y{WoxL<c>uS2jevN
z$ixqrG4hH&zI98(jVo<!^fpfpFG>GS>%9s*A9*MK!9yW1Id>a)(R<1qtE@e(3CsLP
zVGgyo+fo?iRXl(o5ZHgb$Mb2thmt<_PCipRzVC~J$htg{m1euR2js#MP{2bQU^bFR
zK>-GLexF|xK?KQt&3FD@?KKgD$HpJ5&(r^=*B`sBV>-5_q+3Me)!z~Zqzw$`VsZER
zBJH(6pn^%?`0@@?75uZ;>!0j4Bh}xV6F$FTpDdjf{+Dq!p#Ogx_^8ae;|Cfm7dKK0
z3kybc6Nd9JZqM2{APbbBr`He<S%m-j4P*$Is}OZ-uJ3mada@7ixC%!^l)d}_AOlYx
zLK<V_$pW?96X=NA=-jz-fc(@K@t{(IcR#<^cDXnx)Y+d}s?fqkLH1ml#9dlqAOanm
z--lw+@k^`5ocMo*wW9~s+`Y@vo@5*Jmc>71;{+S%S2g_?{o+}+G)&`i+s!M)gc}e~
zpXt4~vIs{A-|LeK(!4ChkKUdp3sSlYy9#nk=YZfX#HPkc-Q~X@mY{Dkt%EqlRzJgx
zV;IIUBR7H*u~R5u&M{cLj9v)5X^hNFX8Dnu!LcA<#xZ}2#Ef2L52W=tcWIw%ouRpN
zmeFwj+xKjedR9Yr95a%lJ+AH#lIcxS)IR>i=85OE^cj%F{Z59dvjnT0r17<hbd2~~
zI)B@d)KlO2J+-Y@PdMvO3-FL_j|Jo0xLE6)6Twd#T4N2ENi7}EGrjsp0_#Z+5Yd}#
zks@DC1bKfdVCZfds(F1?rQF-Mum+gZYk<@Z^BMAzY<gaPQX6a>*&N&FpZ`u5fs^_r
zKP{CaUba2{!hhZFx6<kRD<Qc&g^F!4&%xE&pwiP6xM*YP;X-C*R7}{gkn#?7~`
zv3s?kU9)!1qL&db#?Twf6Ly4IzjDuxQeM#7P2GQ}1p?I`$#M6Uv4x_&3P;=l;<EG*
za{HG?t@zY`LQF6D@@xPP5-8H{T|ow-G-G9%a3@AwlnHAFq*d8<abDx#$t52L6*<>v
z{K_#&BIQ+BO`}J7eU=)iua0vSe6KKsP>y&<3ZztMX_i+3%z*|5Cz=$~C4nmMh)P%b
zHw}M>fcu6(8Sf2BD()u79R2@lg{j!DQ8p&<W!$c=rD`;yFgY*~l%LCw;@taBz5gha
z%QhiOnXuCL-yF~QWiMCueNS#-tn9#ssDZc}kYb9HEi?XT&n!R;38G_BG;>F$Frfki
zEG&T9t)M{DDF^~lo$6FQ0zd@JPKrL|=_`MIEN4#pKXrrR85>dRmZ=fcUxEdDb?=hY
z56n_`-g}D8eTM6`TwMw1&dRnXj)U?yYiu$*Kh5&>r!TLs(XLikW2J7ck}!OKCx}+n
z^*gr1J-TU12s3H!H>nH6U`2xIc`*kBLIhVky(uBV7%z62)0>?LkOI6DqR%{l4l#c*
zM*NlK9Ek8qX-UdC5(+K!v@X?YqEFxZY1`xT`)C$(gEPE~u2Qy`QHsqb!o9M1o8bp$
z1iC_}XqmDYS~UFfRlp}5;5bL*BS6w$vfY>7JUJhr8<H7;<Up7nspI0r^QhF^V=kMk
zdqV4m0|-KS4rMsG62Y+4BdFE8I*)(3wA^EK&*tx2b^lQ`&Y#@y3P6vMVGkjV06Xve
zW>%r?^|#5=e@m_qph=W*gIr*65YC8K#W;ZgEV<Z9U3gfAFT*|f-h?Oc6%c_sY@v<b
zWOu;zI__hf=YD;!ZF`XT69ICpN09jNm!BW0`A{T}I>oJL%<%iE0zvQCBO!n5n&a50
zYoB7%Kb7hz_O3nt%c<}Fmk|5>*m?*%w0!)n-eNA(zVAib$fuQq@F|5N&sz|LaeVZ4
zBF7`X<Rgp-Qjmlo0Cfa_K-@4AeC%r&FaBvCnJ-yApR%9>F@gY?>Tk})soVSiW?k(e
z>KZ{DZB}LrP|eE*(yoZTIK6*d6ts!4Hd@_ClRx+8#Io3ZUjE_#jNm(V>P7^wNgv|G
z->>yH>2y)=+5A4XESK7UA?DyhMb?i#^H`6<(MFmff%6aQjP{bgbP$a<Zve4PJ(@00
z{T{BN0IAgJJaSW1w349EmG3P=M=Ix!cI41txzFB6CeB^mV)5D~9S(nGGv3it!RoUx
zDD;|=6>@^bh_uw>w*C29+f^c_i@5M0`-!jP=)N5_U8P@g9s^R^#s}8;_;c(k>g10W
z%>5>H0XHj*$h)M#(A-uP3`<`b?2I|93?_Cu5-DKX-$5DHuUA8$8&?=^aAoK3ny3)Y
z%8(#JN}gHlNLSi1BEEll^<G8sP859(Q!d+ku*S(FSh5+smBlQl=Cu2#CEWT*U7Hnl
zZOXwi5z^6d$Wx|DoXn~~veHDQ+D>WHVm-XWdGTqJdd85BwXOzaA#pUfuJ820Cyhu}
zNeATKrR+Zb^3dp+KVhBg(KuZT(vI^HXD9rA$C%*9>gya%Eq;HSCC3quCA76fwZF4{
zeP%vSb64AN$FYQZs$llJh$-(OHn&oiuO{6q4@Vm0@v$P$ClX;tAq7+EI*|zkA0LHX
z%JmlX(nol}a%u&rXc6q?8oV9MgkLtBTBJ-~Jc8teP08)6fgeqqn1oW(y6`Y!X?FfY
z8O+NC6miP@T<w3=MVNmb;6tbE?4BhF`so7u12rav(2Wa@U>=d7O)ZZ0NfK(Nkpe&%
z0}21`DGtpf_>9sJ9&;stgnBx52^Izj%fsQ`*)f@8`R!n*rPdhNklu`kUz#j}he%t}
zz4A{3G!39?vK5jri7G;6h6v_%s1^{xJy-JQBn9<4uwj2tR7vM)P<%_ARRzKotf~w_
zMtA9CPI?+R9rt-L1&mlCE)b(U2kesrHGb9NCQP<0Mk~72*J=1U#;@Pg%yW7VGxE9H
z_CmU1=H7}4w*6B&mS1CL9UXi7vkgNmKMKAF_*aWeH<j=_Ms$iS+@;{9Sc-A$yY;!w
z8MBeY<Y#|V{@xB;{OZ#8{c^6~1o!mryl^zo#nUJB5SU#GPvp;#K>bk$>#*<QbaN0$
zv6J~_F|yN!n|O?`CVIh(V9dlc_SJK<hT1ob4|S}Gj7aG;+vy-Wo_Y{&VgWCD(6yUV
z1h@PM3v58fH2TiMM4z*9iZEH%IyoTVcTBLI=J|j57?9eoJXIw0Pmkl-4H!;cS`&Y=
zp)rlvNhL-me1Oak6ZT-{P=hMoSDTsx7M#o(p<^_b6Z6*KOEU(yg)mafq|7H%0m;Az
z?v`y+0_DH;y%sq-L~M08vZ<l7T+gn=wVqCiJW8-^O&Ur;PX-bv;a&0an80_!02G1&
z;t+oh4!co|-B2Z^F11F}ohrN;@Kf+m^(tSlut;{O4{9U;(=dna+&0j)lfaS!{%><G
z6G)?QLJd7GEVL~w{{E_9wDnxN<_gxw&d398Yv*w5<1Ew*I{XP-zf^>`I1=3U5LHcM
z`pgP(YoI64un40Q5~!ocuqlxMuw+1naV~!pO$vB8Gw>)9q3@WKN`G^6K#Lf6a-}lE
zNM)FhF#uZ{ILsW33(}zrAAxnr1;&!Mi`mE*4vr-eG_;iyo?Wdq+18S!>6j8~wt%Y^
zQbLAdFrEx+K%O-up9u(Zb8^FbcEWK|OmV5Hf$$g;d7I3WC<NxS+CA$a2Uy4)CKG>S
z;@Llyl5#gGCjgL}878&_;iLnIgdymeB&;Da!cC9TvIjLG46q@zU<E^#kouGrmJ1ny
z4FP^oA#0iu|I9(mG#QN~bRT8~TS!@K77GikTF;pP7c4-O54K@T5;=jSzFJ=~K#E!y
z_%s=x(FuJvE@v~@$qKy){`MmuW3hjd13%jaJd#JNX)iY6;eTWSgRPBVW5Pc><FoL4
zR}X$U)BpqCA#I^3U~tz=HKCR~_%%ceghQdC{;Xd82ju^;bqLTUq1vWz_8o~x4|FJX
zth*bB1H-Q7Re7u5X+-v@juzEj*dA+?DZCA6>NRjmFTRelS7x5KD*Nl}!FPYw7~X8X
zvqcCz`8|}>8LHWG&@e6$AI+W)S@{p2tfa9=q{!v!R~RpXa^iu<x8Z1!4u<01nX^F9
z!l0ql2WLaGJ>EHyabCcu2P?^jMawUY!8Rs#d4GF2wfBpz)WSdjV6hOab*eMjmNZ4k
z#VFBiY8}pS9=WBn$11BS9$9~IAGxBou<B0gwD&uWrg;Y9XRa+3Rx82(>g}Y>Xz_pC
zQb-#Q(skl78ca~YQL7+Ur(xh82!D=cL|%e-WKu5oP+NdO$N)d_s3&Vk;cMJ-DC!!w
z@@QnuB`>O>ejdcNNGj-1UHYRTR;F+xfxAA@*Fd=)|DD<<kDWaRmYRRs6(E?**n}Wa
zhMYb=CFWz2Pz(#;UOC(6ycRShB98nd1l}{qY%q&h7wXqo$jY~^nT^EyHnq8CvR(hz
z4MRzZgOShg<4v#8v(NJ0^ZW66!lw2qpU@4&Y8^&~6mV@tZ~yD055>i-^ws-whF=~i
z&`vkCsI>h4K_x0#Qigx8y1crIbM!!IftCmT|LeE#?A6?625*Ya#-qw0b%x`>>U!~w
zm7J$2$w%d%o?tEfx9}lD4*+w_7#V{0zdFdd!SFu`M~$idV7fZ>akpa0)Mo<$Md&9r
zoLI0gp8x?!xtvz5f2KYXO@4CLOWOAe06suoFerf(!H{g;gOq<)7cNehfw=mOG!s#s
za5m=AgE;1ZVNuS`hVbHu(2L1@AHNFwPjgz+Yh4E@;nLD?SuIz^p?4I)yL=xx?qmd*
z5~xG8Ac@7;j2MWJ;Sqb>-D@SCK`xNS<G7T)5Q*fgSvaOPmN8qgKUjcJAQ-RnWXV9<
z{mfDZ)bmkZnks(+sr5airv`}ttSLav5f=y?Wf%<*x41F8*^fM2EtaDI9Kf%F<R>jC
zN6;>hScn1)2@-5k(UN+DMBF6d@YN?)Kz&kU{6TVseD3n)ofZ|%<&o>v^rg9vULT}a
zosE!qEk7-Ktjb?eUw3-rDOdw$Ne8<4Gnce+*ue~JV|{-ci&kJH#@iUiF|q64VJKtk
z?qX~&(sC7Ar$PA4YgVU2%<J{At*UxA-TAmmEOR`Q@`wMcm{<G5*eJPD@!nsko~~v0
z%M5wM_F5U}G~6E1Yz-nPj(0;{HF#oZgqi{mV>*b%DG1Tq02~NGln^F}WRc54fME!D
zCOUNdf|Gyd5=R`QZg`k*U@mJ9ZF<d9JXiPb4J|JB%)La}(rF<?hwL`s)KP?f_B&G-
z{%Gm+>?X$u`$i-grBWfBXwfaOL^Vfn2EIU)<h~{i6HAgvCkoQu=jnZ4tM|JE(fj^U
zMt`3AY=_fYdn`OJtNd#~T>n`t3$O~C7vn#dl)rxnKj_9@RP3zdsCVKbs`^+n1w&`N
zFUM3!?FH>NF-tuBD|%Vh`-GC762wk@k-$)xAl+!f&0%|k^381|OCbBW-oiwg-HF{t
z5YtVy23(R8aIt+!W(&|BG*l#nmBiQhW^`FKW0ovB=x2CB7H>EIbf1grk7`JaC)5M&
zS>Jyl)C?k9ntG-EbarM@TO9M2oQMn$qBZx~j=`XBXWJbDq=0gpmTJf34Qflm*j~}k
zpW#KXkirJ6L&Ok-!36-%{)$%dV)z+rBp``&x_B+sIaxT`yE120y_>kxB*}^7I|q4{
z4gTJFXIJHtPh5_7kyVul8iGbrN?->hbkTo?P9fFe1cb~)L287|Snj%WbLbVSV+|H7
z%2+<)#~~hUV&w%0ILxBE(?L|rqCGVc0Ba@+1RxEpZP3+tN>7=4{$LtJ2ajy(<qU2t
zKn^(PKXI9|hER1f#;c{^WhGAr3164vLpYqsvV?@F%~ar#+%yAjf(8ypQdH*F>=A$T
z@hF+*y<<{N=v^e<!(TZf9~D*XPcPC3E`jrIS|yL`bUWm%c5(YKscRatp@k>Y_Z6yz
zaq)r#9&%b*?ot&g$4{O`Rp3qpxQPJYyev_`0muuGOqdgh1=N27ZuV(klfwO9D=w(n
zw?1W9>z1R5Kab__UN^^N={9=plwW@zDTm7OH9SeY&Q)^)>Ea5F;`xfzc)Cu%jQ=L-
z3G;2d*sh0%I)b9NVC;SS?SM=_%iTYov_!hT{c!AHu9X+ZT*kkj;S-4}dzXucP!fpz
z?oYCcH}sy9qk@m=vBl(ntKRpW1{Z10dTS=tgfa+V+HM&I&T9rQ;kM~1N!5Sc;%w_F
zNbJP3b3IS}W8&MqIa$P(URM_a$o5pN!k3X(qPhR4>+?>-Jdc<BYpp9Imp61j#nixk
zId49$r+T6LdR0Lb4-tJV)5&rZXexh(x_<g@_4mRf?^)fTONhmH>`fhN(MF!-JmQW#
zzSPqXfYr)W#qjvRsQCwsq8WcN;;}GtEAPYv9@Z63c}51NKsi6l7yc?g|Lke+;{toX
z0{{fN6#xQXvL#9~<f0(qA!eF>LZp+LGA~hxiIYtyK8h<-!+tK;9(uU<gfR^MgkWoO
zer^3V-#^q`0Hl?s+8_H8u4HTgf&lq4Pgb5qYAHJ7G>|C@LoH4gO$>jUxzuFGtq8mG
z<!&1n|H@1h(@6MB0@5=kv~UeWWMFom@Nqvi36R4wybN=G&`JmrVw@<S(nI#p<~HAc
z{_kbfI;}+L6qyi9M#{c4^hCLq7um^*A89^1x>^!L@)eBlLNLl?uLRn)3zVe)dpGrT
z+)WlbM-krHD9gQAHJE?6xbDyIe>!|&TQqQ5n_0lVRD=Qme^^Z`-HO_i+4-@yGUq@5
zE+CT?evn`)%MAk?@qE^Ei99~QZr+bESQW++0Ri8(>_b9gi2k)(&dZ!3>4Zs^Okk2K
zb0<YQccKe{5NQ`u&u{XCRLI4Vi~__&&SKt$z3Y1(78?R`9Or*I&I^zwtwUO-wV~`E
zi;xtK*7=rluy#7#Cr8bU?bgRN+UIi{iAIxkaD`80Rt9?aA!0jnU{pn97?#y$2KP$8
zazN4scLs4KgaAaCF`u9+VN?}Xgsd&E5^?XZh?QgCTAE<y(Ov#;cTe<|_=5BS*wfU9
zs5#=s_;x{fG>d;{F<Z8-vfDig*-_J*ydp~X`GllHqf@JZ?PtvyP=Y9pkuqbI`;eCz
z?vf^WMIxjY5kfi}OocHYHjZe>?PlOg1c^!}1xs_L-V!;zK?p4oQ)hfO>0~B0@OQuS
zDe^JZNk+Hp%1!wGVkLhzM7=%_DSnUe!9pY2I%|i{#D0Gtg_o71n&Qxi&x94-ISOgz
zw6-aa!SeX+_WqO66`W-c1W5`htIllf)x05r{GB)yhGT==znZ%^mraqMz=Di|2m=y;
z^Znkul1Tv0P?p`?@ue-_`@ccxJbh2n>5z+fnj&%@cO1IhUU}`(3iKD%3OS89JMi*j
z9xONivSEK`66)l(XY^w^DbeAM35t#6n2P=P*nJ+u2|q060u2TfOFe3~s>oV_yKOA|
z$hA595Nz8q+<HXd#hGo1hiTD5dw6ElNY;;%T1IJf-P|iqa=8FSrL2l`(>^28UUbx>
zGrK$Hm|%4AbiAQZ`Dh|qN*^*n5C}miHVYE05(0lwW)YY`j;1?hcuC9;iRA7;e&dD&
zJ+X~1M7RWjK$5aj2{Ov=P7s$&CICEOc0W(V()v17cYOay1A8N#{@Bo|CbObd5TUWf
z_l*gk^qUYrckYS%Jur<{n88sb=bwO_A71e4T<(fAcC}3$l5pVL?s%L%seXPc$O7FN
zkw$+BVThjv69#j9eMzOj);XSUon<&K;<;rt)$ud*IOMQstm+lfSzcLYbkKeCFt0X;
z(3n>4K?|AsRMhP~%UWDgbb0<hw0jBfSeE-UVg&G}{WmscVJea*hc*s6GZLYlZzH2>
za@8}aBa&|tcfFb3)n;t#+6&ea-)P!1o3VdmTjq1RTMgmIDzaM}j7@`(=n^AUlv-p5
zG5n|q9xLV;Kq4JE{(g!PB2GFnCBwE^j~;L%NAnb(kFHu4GVdnoqoi9*jMFZv5DeBO
z?kDN)+6ol>(9zrS66`u=W8ov4no!RY(XrLVnkuVt+BKXHtjS0aB9MrMs>j7Ua2bCy
zqbA93`QhJ|^{%|$U~2KrT;5)!Ho79*wc_42#g<e*sUr@i4GJr&!XvT&P?ha)c;@4V
zl&FWb<L43c7k5@FBydM1Ea{3*F_^;1EORwS8$o~PAV?#_^|D@J>6$@F*yL9)(V<A8
zozwIv%H*=qp_W*|R53-ao!6v6>3x4Xaz#yM?N1)%Y}QH;-v*q0#l_=q@7nH){GJ_r
z-uoS5ziFIxOFB&(Y7=u8j+`t)ySP`%mf7<-zVwJPre1`<hX(a*`Kg*!2d0<&bR;Tb
zJO@u=k*wz4=KNA51FZAMAiw`VE8zd5f&>5pdxQW03?M)N;$1l0)mTg~!@qy!#Ncm`
z7KPnSr;h@wpX_nH_+=WUM(1^+yy9GS_T<=IKaQgr2(__&TGg+F?=Hq~mvz>y{4QLz
zYWMYc<!!4S3T2=RR;~0zty=80YSq7m&&uaPx2clb_!Nac%}2L)dxH#}z8qA?Fj?rh
z+|`gVBw>ImrhIv+4q$ti%o2a%&1Nx&D?4=1tzqSN2rm2-<O~buiUtR&@rkT#z<AZG
zSJPIn#I0JjYN(Y`=sk+KIn`>_tH~?Y{}roN^s{oWP_O2#Tf((>C3}@t<!aUa>K0Ti
zShFCpV$StNO+v+L)zPc2D_4fEP|n;rUE>@XT|7yBn<OjN5%E|Yk63>g1HYF`srj>u
znc6b3rG~yD>CLq<Z3F!b6P?CjljlO!QkjrW`&PJMilw^duKja(arm=%8R{REU!Dg6
zA)f$H^ZdEHzJwJ28E~TrSJgenk-@egkPJOl#AFl^2|sNCVAn4s<k6#~TGGv@FOpHH
z$W>9lQ_$Z<v_{lw^t69!yYle8_W}KPkkUPI+1vvPD(k7PN9x)))IbG&s4>&zzWlGF
zp2l!E<;R>SkhwNmd-OzL4&wcHMyV^~@yCZ%5=-sYx7EbPWB=9X*|-()eWPWPKAP|8
zO`6t?!?*}JuTC=8R{q&U(Bv!TCRYJ`l6?V7l94|lx?b$JYBhh|G@|$=Bh>bduLJiq
zgKYLjKZA(Phi{5M$uPqT-K-1S^4Ndg)s;eNlmOe2&2cXi{U}iZuPL4}9|K!0xGgaX
z1oZB@2!6pI9pL~XbHC645OM3jOJnZ+7mphR5vl^mvrplIDJR2nH>X={VZex3EMR0L
zU&(yTCg0P)tNMT8Yw2T&`kOX|%=a8&!f}_+PpcrS-|<%O-n%0xr=NowFne<+5!$Y|
z?;Rvzny&&U8EI4ct-#`QyQ*`a(%#d=4v03<37<0QtFA_6mU0Is{V#V6A`y3@9l$+~
zju812*|td)^0d=P(@g0|gZtb(V;IIYwxop^Sy|3&H>`i#B!gl|zGE*r&U0*%Go0r+
z&U0*%KEM2a_u+fLGwhGA^&)-8K31#-Mf5=Id@B`}VJz=T3(+@gymk1eRFC~^I63Dc
zAYjK7qL{EF58r8fbx1g_0tFz9i*JY?sA<((P;{F3no0Y-?CFCp5w-T$K`?_m8X-Ed
zHCfXJkxhSUJ}~!{)7DE>4RKOgg2%s4D;zTC*ecqGP{@D;z=0eD034wTm#}CxlvN}N
zv34d5CFR0#LqK6Y3z~T#Hh0=ZmNZ2D`c(erqJ2+>^Uoh-^h^zU-{|hK;B&O)YZVe9
zEDtk!+_N?`fi?k&DMwo|Zm_Oivv$3u{+9n7>1ltwC+@km!;xOU%I;@iyIsVR3%B{4
zY#lY5J**vMpl$!;Kr%uYNXUqxxbl$cJB6^n)cvnC5@<5b0?>K&TK>U7O=2U+nm!)3
zPFiUloUX5+czZwYrMpg4OFDGCU0gl{!4cY;U|nq?D|LMd(w=JMO-kVgg^{1k7AW8?
zC8>YTA#Z-yTpzOuuC2!V@G%T?^+hfFYw<fu)*>fFmy*u_hNrCk?}*Za3?%jz-eh$L
zI$r}@zptz-)(k8RIV>g6N!3g$Fl7t$PR~LjMKSRMmNKT7K;sjdvG$iuZsB4kf{?r%
zK^+OX!iob2PBbG+MTJcj(Y!&TAae_f2#bGNm-pAHDpE!w|4S(o$RGmBoM0J^1fVv#
zv(SolvP}i*mPvC3r9xZUb>3qFk+x*}R4|BFx6ZQ`-E#Mh6skEC0Hj$Y<Ol{W0Kw8g
zYO(WCH}3i_2~-<LrQar$t{lzP%u8En$>`v-Byy@fAXER_;K=kC_5Ro0PdzBd$Ebg9
z8gx~84CUCSJ%Elh_vwx+$D(^=+fbgq7c9}gWE#z_T>Dfxjsh6l&nm)R=b6ytAkWmH
z8fj`}g{Z{Hw<V~9HpY<s91h{GPE(TQuOxStH5qV1gq3_+9J5zOI3?18B5+JkCZbbz
zDY`w%ry}H=^QM>%yzr4#$d(4sRf~VZS&~fJFJEk>FURRYJiC^GE*?!&jU9wyBc`Rj
zT;|<Mt97`hoftrtQz5hz5kA$_bjl88vf;xJfl&i#1DKFVbF`4H)hcE8o|%Oylw#Iu
zR&eHQQf|)+N?y{O*({tk<a4{7Gs#_Rqgrpv+fOtNI&VXbH+uYPb?2nKGn6mDLH>GG
zV5g>~77uuk(DmK~j=pe)X1@7~U*Qn#T)mHjr`kqVj8%wT*VvTo+P0UWiUbpXY&`}=
z0+2y;a^>cVY-}VvN(}`T&DnbONy^Xu-V%4bcVQO9;G`cg)q6DYP_j`R=fr;ha@N{R
zF0lsioNUL)W1Kmd+<^DLT}gIF;V%E%R;Y<N7g-6TL{@5*&D$l3_&+O2iSizzPs#0%
zgnXIzolrFQyIFKWK0k!=PgPfc99dC?K>}o=T?1fUu60S}bF#;+o+xG$L$RAGm8{s(
zo(^WiIbs~ct%G%p>E&}@c`j0WYqfNeL5A~)7@D1BtNsWigb3YYO#)kd+Mu;OgTH^e
zdI)G6E@v+Q^b<{&%O$>XawW6wyELk0orI}IC7Be*v|0sEigesy_6_BKBgh65r7<db
zEsWQxg2k@m=~1IuSCBt&2N>v(2XMNSEh#(llP8?*Py&%!EankA`6%>Fkob}v;dW6q
z$5M=7=@G^g$Pay4k0=TpZ2l^BNK31yRrPxwLx;_|V+pady#R<5!=^s_Rr}^K)Sm}Q
zm-KQ<$`G-|+x*!i#XF~ez2Qj;;9H(T)`}r+23ZcJtthJxvp2wNHoB@cSEfGrqOhRj
z5#O$PHo0H7_AKDz<KCEm76G{CvHdsQ;L^YGp#~PF7hBu--)GHlJjR1n+IQJr@;X2Y
zi#NKZPTuaR;-*6o>&oh#w_uvu?DI&gsr<#pX)PX{gxW|TuQmREtj-A<@2y^LUW0GD
zwZ>^e<I^Z*YoJ=&W5ak+H$pVfxjIrjN%;m?#mr=?amLRt9>vGy@&0=UM3M>~0)i11
zF%~oDzvJ6@p2N1-a^Jt>bsSzpcZaaCw7w;zy9rdmVLm=^fW&Ex0WpawfHnz<C~15>
z{w57I7!JqyaIYVKfBOHvU6w{yT5CF9nycK4n%lDQYzs<C+80?Kg6$t=?YMBrBpd_Q
zgKL*%isQhc^E~Vm#Iin?1!3y2EK&pzK2slspAVkwC>B*i@O?vwu%LnoSGA?Ugh|l~
zVK=}K@*)fO9{$R3sq)A~VC~af{t{N!B2Sr?m-;<)F&18b>kT?omOVc->UNZ$b*_nu
zA8JViy6s(vP?Ac@MGE~@*vAuR%Hnze<GZ8O{T54Hx&IM+z$y;69nZcN_UB;Ev&6~u
z+NVzXyQteyt7(D|(<Dyz-4l9#*9#oO3-!)+dYiY4GAb|{;-LEsVLYYL=!y0_G5<H9
z+T;jIX~PwN^tOom1_?U>^Q-$&<;!o%sI&9}cKS<X?fn{-uIO>7PrzTiN;)s!LMFv9
zLNuBZnOCF8PuC_-szH1WoAzFIQ*kADGkqcQGVh7DeQWk>C#)FM-mNJ8<C6a0{J6h+
z*@FAudmoJVI8ofW&a}<%W8VLWz|c)=TGN8U*90klOE!eDiE7P@4GlK6ZEMixG@8{l
zrpfn|8FB~M*qXRm+8MP294{TOehALYkPS$w<O8+{0qEbx0_1QP8reXT?-AN*kSz58
zyN#jefcv*B<PJ{T)~CaaeokVjUz(|w&B!u<mMowT!t3v7aTGTDw{tDc>Zwx&9EPK;
z^nf9M8Kvq0g+oP4uU@9aXc#IsRlPP8Fm@;CCK@0BEkKkL2`9;BDHcVD6+N_XIqD?6
z?)QDNno%cUY6_jAfl*e&PfzT1+mGezZP>IY#&_};;^R9z^8oMoe7-Ha!|8WY&zvFQ
zV#xQCIcBaT2$)e32@3KNCm=(eE`KF<x5bWst3WCi=it<gb#ALt$t0R*u4Mrx`SdD^
zWsI@nSZiaEo^S2CA)Jf$Ef1|0ruHdR!9Pk=+L&!EB-}mVE@t%7j_=0##U{6v*G_^}
zIg@?1W5DG&TaLZ*`TH)LeE*C4xEWS+<%rF>uv*qj)mpWWP-BaJI*jr!U8k>y0x&0k
zMtMqLB1Vqv7`c^A<tspuF~wA=f|Tya1*=`l2VBaS43?J*zEOtdzq@d{X}s&xE-%y-
z^C}JSyYIR9YJPS}{4Db^BJsP4*UR(BlY|5@L~sw55dd>U&X{5oL;iYfmut>1)@wKv
zZD%5uAtPoFy}hBt)$aW-9mo~mw~lImtrEQ6W0DbmdT9z<gsyYBDxL!F+#sRx(-7#2
zLjqS|U({TP%RgWUkeH$xCzFNc`kVOl<N0c^8^DMg6Krj^3?7b}s<JFo?p<wzd4Od;
zh6=y2N2fjJ^V%$A;r!m?7JRe??H{dd3SFwSSXtO{nySUlAWtnCB$N!+EhXuH3~Hf>
z0OVZPT^LZy_-ef9v6{|PEsQX+-GkL*qy>+aT6DosJJb;}#1KD%WyBv56LWcQ=M}f;
z0RTHa6=8l5c4LK!t3SAbRh@YIKhma1ODpX0_y)p=Z#H!j`?g*k6rhRGW%;&kVBOf&
z*vgel>i@TUD(a745PSMI^T4%#6kdgb>(3z<u-q>4IJ^l!8c+Jn01kSaPv=|tm->7n
zllgn)0Ic(JIDC6j)qh*_gm#xt(y_4pZSnryjpLuxc;Ih0)SjPIt&`umKV8e%RbH%~
zsbI>fVSVt~>0_x_US4^U3Vn(>5jCXu>K4tnl9V{Vpy%oPH!eN*X@k6f^7`?ajI^yT
z%gM+#G=KysfCvZ>LXb#OlYy|Hp%p;9?4QFXb8pLRvXlPs@Ac_YBD(6n*l{s|K81KJ
z$j1(CIv766ge`;)5Ris&O{=G2clUE2xr>wX6xqdU=aVsdZuqoF@xk;AV5urj59D2S
z*>;TUX66sm;@GuD6~3H*y@3F-zSX^p#@v0J8(59#-oN86Zc?cxB-nwCHY9|pX#_E*
zmPR-HVo^P&?!J%g#9~>q&v|oQj-%_w^m5rs=mdhdntNw0lQaS?s1;;d=pF&e4sC{i
zCSDW|czV32SDz)~z0m#F_P^uz-<_y<cmXVaV>iw-cyn^<DzX7AoUCFoj8*_>AP6<B
zYg*QT$2F~MTF@{5S5e>ah;6vMPkUbTaKL3IE?@4PmraudD1VJ^!w^NR{gxcivEC+c
zkM<eaCU%?iSOA>{+e7v1ux|C8Ws4~X-0$yYh=TS9)#}Dye{bD+OE8a1-&`X8vraQb
zQ)!KxNUBF-pJKZepJvx|b2>inT|~oZY5z}AcKKEf&ABa4X6SlFNIps!D%UD%wCXg<
z0Cpl!kr_16)qi!p{&mV*A@t)v<zLdpV;-4tzACdG0DzYQI@V=D_U`x|55BU?4Eyg>
z?vjt(E)J`X5$Vg65cI?YJccR@Rl)m+755#@tA;!%XJXZp;D4V}Gnnyfklv%5k%c%|
zTYG%|1tlyh_<lQ#Cs{Vk4#mXB6uNFDAr%l&1d*t{Z-0Y8cOt$cbK-Ya=!Ak5PJ|H_
zaRaGHX)|xiv(1#ae4Tflq>hKm``SCzB@?r4Tls>XSYb%B^G3VrB_yyPhhQ=7)NKAg
zDgEt8`coJ2h;|?Nlz)H$gWP-nmWHZ5pks$>Hx0pnO?PFtHN;3wQ?bSZS0#8R4oHCj
zoGR8xxPPuKh~2oL0L4<$?mR!w`Zp=gXB5re17C)))*-rv7%cftfg9fAxga`zue%SJ
z|0A+T-H*|1d6&%+<xrL%`Fb2j8s1ZxRpstb%E(~tw^MxYg$e%8d{}m3f2hssA7D3r
ziqW6ahq7|5$OFbSgxQ5UwN%IG>(WOp&rkSZIDft3T=`ZZgA)+gHUdWWa3LKNo)dxJ
z#ht7e@wC$`4pqUrX4B|bOb-QRVx8}PdJ*I$_?5OMMBZvp6H=u986=5FB%Qr-a(dgl
zl(Cj&Z;HX#x0||&(qODPP<8g--7W9;Z@cy$Dwx`-dB6mh%0VG>SlOhXZEQ57o?Ygb
zWq&}U@`+_IJaCC6xY6L=^&Qq|tV=I)Xq0_#l!^iip(|V@iaMa5(-b2;5<`QFKf@+{
z4=7gzc;%5qi9lAI55O<NGx4hv$tT?q2<A!XP_{LE50mYf!Xljz{xqnz_AWsmNqezP
zJy<gSZ5sqt(f+0e=zL2M#X+Oxe(8vhFfx}Gf=}L)q0^%xeO%hF&gTDOG56YkCEkzy
zp9ACkua^36#pX5iqtN_s{Ezefhwi^ym!Xyf7Jn!=O;UktW{(MRCD^a33dbDsq~ph1
zX`y^C0RUeGBB;k=WJIdxl!@{vK{mxLu?!W+3&2Fn{cwdeqMSo}uKj4u{ayWug;>iO
zOlS1`4UYRefqIYdsNUYt?(A{AzRHgx*n_L?E6SjuCxR{*wNfyh4qv+NXSCpNM)=|f
z;D6VM0e)kGVTHCdBS^Zx&;{vU1eYs|zBC9sRc?Nauq6Gay}Ex2|7!dHq2blG-l9Yj
zNsG2UG`@&{kM;`ukK!f|n~olqug>S-h-c&%9dEt-`_vPy{^9%TinV=b9$slq#)LAI
z1Q6i!1`tY<SqKIFrO?CtFS41hLhbL$6MqHoTi5YaC?OS!qrh1U1&NL;;-x0k39r^t
zq{5qfyj&V|ftYYGAEL+j_q)5cdc?Frf3Rl>IpeM>!<7r`G5=q=27kGq7;nVC;`uX{
z#)crVtHp9{5lN0AB7%W}1hf)p-<Wg{lXmqQ4(Ak&eC;k=lsB7{Q3x!-7VXO}kAIFZ
z&Vi=p4=zI4qQ41ML3JAyj%0)p5lhET#??aaDG0yKmYqtUIO<6Zigi4+Cp+qn5Rzn3
zBAIh1d92bhVtPcAPS&_hum$}9E>RS5gN^c*Y!f?q&ItN|2yI{4Is_pi<I6{g^>eVt
zh8RGSVgx0$NKH+(VYVE?xi`9LcYnaox5A_k^=407)Oz+yVDZ^2?SE#j_+CE@?Z>6N
z&ikXvqZfdl-TTL7$IGY;(~ad_sa9(B|5=t=b$qR)BN8z9>hr!!kWn=EF&_1cizGJS
zm@WO{jO>}G1Z4iUz8bzq#XeunbN+=}RC+4e)w%(GhB8s##gn#Va{NP5VSm+kZJ{w=
zE}wM<GvY7#8*vGO;NM!KP*jg7!lq(2mU3V|lchoZ^E>P9I=l<-s*wGQ>JS~YEXdrG
zSU!5QkiIcnG^izC!!<!e+mZa=@^aE4|Hdt&v|c>vjHqAFfl1v}%Cf;&pWzAzzDHX#
zCx~Zxg#a9aw@UqFj*d&}(SP$vk{736@=sU5KH`A6F3JB3@RcI1K(P%9#ol@rV%re;
z+uyx_1%X`#^7%O>(}iBu*^4XA<+{f_+_ARW{+(_NR&Z1LPIHt{EAjw!K#IT83S9Bx
ziWsOyCJqbuSJnp~DR0?mLHl^mJ*Js2I_6|j0ZAlMKni*1nDfvAq><1ujAMTlLAn)D
z6+l&0RZ!{k{(Sz_dEWoG-(7qkUi^jO=niOUKJv2>fLN{Mczndr_2mejEpUd|ibw79
zMZbt1A_6%fBWK$%@Yoa;d!1B#TR3^jZ9cv$k~<ke@Sj&A9tY*)XElou|H*^(@Gz6T
zF&LbD_j_kJpdILoQRxCZD)E0shiR^!Amf^Qg6&DTkKOfszWFKNa(`TtPf|zj_>SzF
zs=I@f6Yc+>87N9cvzWMi>|P_31OC~PfHSIYxP-y9>CVl!mq~!?=-<_s|1)<u8fVjp
zf85k?y9yuB@d@}>P=>2fox)!3kncREGmulc=xi{}#%Rggx@macCYyhZ&)!-ve4m=V
zK1ogAV||us&>bzqt{^^lX9$p(KV=XxtIiGUhB4`NSQfOJO-82%{ylbO19XadA_9p_
zF@z_^5>^9P=WtcKMtU}QHM!9$jUEig*jD-?C|eWPqJ(_ElU-_DY1~I%RfW1IGN=CZ
zP|-JiGhd)hnWlx^ZtZ_dPW208)-cmj8rMO#kaZ!6-lW>N8`NG4**sO4VsDdatIn;+
zhlo7s!fdH&;xcvuvk7B!Sj8fR1q;YrFwir|NSQku;z|%wozZ#6=$khvc`CJ<da|b1
zo|SI8%rYhHBo{IGdim@;{2YUK^|0$;s2Ih}JeYMltf^&G#k_yLg0Nik2w_B~6G212
zBVb_oBpITVo<fw0A*m?HkCV59W|%X(ruH)@lTYlyaeKALmfyMB)D_^Y92&w2eFOt#
zJD4ts)_M;#g3tlnf(B_46AYh(C+%=REe83Z<91io+)G%UxGzCmmu{QaV&sw9yR)Wc
zeuOtRHr*au?q+|iJ%r&D;I`<TQJ_O>gM#0w3{+U;lY0`Y_>!ypH>$R_U+6RrT@bC&
zM3QIOu=k%l(;7MFy=geta+x;Ry=DqR=;}3d!fw(%CDpU76{M&6R;qQZTuOzcFyxr6
zU#*6d;7cANR4kIxFbK{l#VUKn%R^O*qgpfw%Ph-cMTCEsPKgvT9c;Xe1zKG3duPeF
zU5;9fe6l>cT;rMF@RvPV;lA0fs%;0g4Z{k)+Bj-!A9{s)X=RtOo_wrEiB$1S)=sP8
zZ1lgUedx*fC{Z$q?tiJXPs&~CzQ^wR;o(m>xQ<V#GNMeoqO2Dul7<O^K=B6v6f~-G
z^RqXDh@yY8!eF`EvRn6I$j>68NTFZXm$u2VIURYZ8#Qlvzdu}a>@WYzeltm9inU~3
z&Fg)4YV5_aBvcr4|HpbPb;d;;2OFh^d)m{5yT`W6^!xaGfLB?k5>nEE00>4Dn3A{q
z4S_K|#oESN*)l{7|F?q4Q$zFZtMc}qoTcKaqUe8hTIh#2KHGFjQ#uF&fFOv70D)7h
zT5Ujq7o@ED^Y<>oDlfRi|29gvlB(aZ-cc`)-?yyG&Aae$RuPp>W#7S!T|1x0=f_9k
zI}ZoN^aTotQ&jije;#3{ZR)9xgjAQtJ}G-w0Y8bpAJ2HFr*(R&rG|j@{U8nnK9qK{
zhL(S;K1sV(Od{P~MK*<dKD<1DkNfTfC0L9yItBI~42%N_Mu>j9BQO5((=2c(9XY&j
zgfbrmLp#oH5PMu-bWLd3v1nbESdk2z1kq-vko49Peg@}>;Yq+;$Px`j>v^^0&}jA&
z=lZBL9=uAr0#ack_(`wogE<Nzp7OoNLZp9oY^bj**y2_c9PG#&e6?trL3?1nNx$G(
z;WIga&va#^pQ~<3)W6pd)kC;KHE|Z3Fq{xL7GwWOVxCMJ{YLysCNYdr5|q2c7{w`7
zErU!7p$^ay3wfLZydh5CoWh(4c(tMO;Gg&&IHK<CZU~bWAds=gM4ETGWwS*yPwRh9
z-CjAvkgD(mpM4itGxV?|o@3^Qh+GI#(z6Qho{~)<JoJ`9V5peXAlxG#Jdy<fJV0Sf
zRJB)>5J;sTL3uCN?#r`D+wNnNd75cDLK&B|?lph`p?!u@1YLhGvm=%r&Q|8D>H1#U
zM^*Fcy2t6dO`OGt^dj!HUzLLUA}D{NYswSwCH>|;E3@e8>>2e)BadL3N;H?q6ghsT
zw27*gEbq)y<A}n^e41$S^3;zgQx5OX`6ovIMQ$>6tU&a!t8L3h`|i@WoN!af#wQsg
zqfw<YO*r~jPj8;5D}&;<@JQ2*9YHae5P|1?h5h%izd|$|FhYN6?l}UGihqAG<t?@c
z+>Rq7&I2d_RH@xDfkDWTyh@63aWyjg=9@2^v+g(@Jft?+--FWOb+k?iac~7+q5_v5
z%TjGfzYRlxLPEK^Dj%DYc7nDCVS~&p_%5xPvK{sXjnvu9La%&n=LHPnsPc0wiVKlx
z@~M0im66`XUKZ^FRLJ~kn7Duba%gbWv>hC^?ow2o{NuS*w@vubxM!P<jh)E)yoyuF
zLz1^Lm(J#=FftCZ%H5v)N$8gHkyv>`T7;M`hbFfaO|oR_4W!yuG&N7eO(b%9%+S%t
z>b(1*E#nS0Y;##qy53K}HS2#9RO>XB`qXrz#LLmDL;LNF;YvvYG=zV3X);DQtWLjg
zM<0GHe%`5Et^q8#`H;DDQHd?ewhT%#oqNaXRY+1Y54E*o+}7v&1y#mOwr#a&WzyH@
zf1R84bEtsV)}diSBiDW)|8<RYxF?qc_o9Tz6+g?-RCQdi0+|5ZK#XWNowYEEk-(%S
zs+cD-pD7??h?@vcG(vwY21P+pvCE`olBi};EUF8PIzu}S@G-&=;9+{7?cMmkA2-z0
zCF7VMd#L|jKgYjQPvc>}V3&{WU`4Ko?WBIM^;ZzZBrPjpa5^O_H2mZhYcpDauSFYa
zd@97%e7>8Ptd8w9l%5Wvl$B>K)Q#FZ1>ZeO7mmu|w2*EAPu_pkJ6|ou%;Kk_|2O+C
zX8&09LI4wJ=|PgJp2j^y&-R~<vE>vsc&-<#U<SP+QUTQ=ARq`3MoAU|1P89r;sRGV
zOatBT4G{;x+MSgDn&}1joc=l7dJpikOKnD;b0;k<I1x=5&T{0CH`ALvb^RDJn4+o`
z?Xau0iHAV%2=sr`8cPN?q-_e~#UxscWPV4!^9a*WzbVViNg(WfKbb<6Gjn_WL@U@}
zHj{n$5?Cj+v3oLQf?O|%H(;mmdoS_&c7I2tnF4Yx#?wRSDPKglB#an_5w2>DpTF`H
z6@%i{xQ1#P+_a!kH7;Q*>3}7vITW@A`nVqy=|xR{7e;@yrJ-oiLXjRi^&DT)x9=i~
z!ubseqrqhXG$F%TkD-rW70CL0ujIS=IRv<I=|2}IwI_1fE6+nC;xgJqf|Grw-6W10
z96s0Z#sm1P)<?~q1ap)7QxhFXYyi&$jOW{B4gE+NHSrHb{mh6*H~K||(>|%TVkho>
zqjkCb@9clF1KL)lq`zq}sXqQ9#``~D@B}SALNI1;d`v(^8p@5RHI1>a>3aCP?->l6
zUp15MQTKk{cTmYbD^wa9)HSV<%wrhFFgYaFwW@1c8sk$#T86b@sSINf#xOBIT8T$d
zoq-Z(0^aX|>SN?G<SpD8XP|?ve!4lT0GZNUuHAnZyuaoDUT+AYzqJ7jZMMFfv10FS
z<234DBjWhnUvZ#sjC`R=iv>^=^{o8N(d6IRW~6iNu>z<uRKiwT@Y-U3wZE-r+c^8=
zvKNUqc)~D~1aU!;pOitus=N~%Tfxfk&0o>Vd)-Zp?p0ix)8uyn4vVz9xJ!tsMs1zh
zmsNj^{-IrQI)GzUZm?JC(c>n=-YjNDvD6EFZ??4Lo&bBA%oFpfiz}gEE=V|-AHxE6
z`)qg_Q00sOQ9Q*9;Vdrkkd2p?#XrUYhOhKF0FeXBX21Nq62)F(dmo!Gn?iS@RkZqF
z_v5^SajfWZB7J00)5IL;9Kr1g-+Fm;ff0WWh>R@A#Ai=zlK_a7ZR7I@DENv(xcRjS
z9z3t`7WyRxoz&t@nP*~Cu16_RtI41#hW^d=lZ8m-nxwYgUzG4AmJDZXigHPiiH2ir
zMw|sg2QsY=jUdP)^3UARHI<!J4%JXU;=h4)pPiU$?A<P>WmbIh3J8iq8RsF6)UsMU
zg#Yrj06-Ae|E1?^YWs`y43>0s0eSp}t5v6;->1(?{%c)d@t-Ynn9|Z@E-me%c1#tg
zT%RsvPC!B-bE;2{BIfpFk7Nu^RI5Fe-QoH?J0re*?nUR*%$IVe1Sx;mxwTL<p_ai1
z*~hF_yn@jQRiXKnM<Fo97FJNiS0~6Mr{e>?0YKBd--ez}1RFFE3KJ*Zst$RiOh}+2
z9F0B+h$0v9+tCOWKRxdZ;yMWcpWGnE>22qdr69GLy$kVT!uMhI`)21sZ!yJ&)^W;*
zNKy+}>}%)L<pvpb9YKGNi*@}CsD#v!CE#lWahfo7(vOn>)QXlvvQR|1ZXOEgrAm7Q
zD5oeQ1RA*ZQ6)4<0a3<4L}M02IAuFmRpi&^mb{d#3Lw@Nm^4x04rC$O+b9FYf-%c3
zqb<@G_l;AVUyd*rHch5_b5$RNv`|eb3Jh__jv_09FBPvTDZ_uQGi|ux5y($~v$HO|
z3RG0!Tza-cQ~RkglOXNru7$>V&=aM#j&oP#D9ipyfA({V!~5Z(mhP%ub5Wu8eFX|$
z+qZ5Ff${%mgkMuF?O!83YFyQ7kTc4)>Oo7~fmJ9+irtAJ!F0*1KD=5H^H@q2dY&7(
z#1Ad#pceiX0w;g8UJ{E<6XsJAuCaxtueR&8*$;Sjd{aTj)f@h`c^pGfH*wJ|$Q#{V
zZQ%3BP<>oy=@SBGgPu1T`nX`&_E0qHow4VRzoZ2Q2`Uhq8@cP#4WWY*Sx-WPeV5cf
zgA0p337RI9CIAC{f0$0)=5D)y2!knA?DNeek4uDbA~Syu$;83bp#9NFLbA1r`Hfq?
z>N(M5CP{kP;4HoEoA5oTrI|h{9<>laHC{I>8N@{bO7x!)Iv}Vb%tF5m@V9>Cndn}h
z&T-(qWFa-sN{n*wjZE&8o&v}sd9N!uyo-rHS>~c8myRZXA<5Feq>gXzVw8mH5Bt
z$ZtcH`#gX3G8fb_=#R*Bs!GqI`kzoKt!om~B48lkmNAM;oEnpHH;dF&!@&&TPBDp!
z#esJbd){KMKZ)uGW`<fI4=@4H8UT8em6ktouWd079yrdpL1K{M41j`F6y^bfC^9rc
zqoSkGix%-skxmKEZ$ZGXhB{gnSqVY}Ji=qM1`B^2QN`JawaD)RP(#dojYZG5c1r^O
zHJ(o051!HS;Jp54qLN;}r#)7uQr5MQGtI#Ref95uEBA3URax|3Kj}NK=IncZC?6_*
zX71|u?H}TNQ-xN0Mxv@B|JLg4^MqfvPU$da)%x~=2&fIa0t9UWH;2-&4K@iS{M{H1
zeyV>#Gw&k@1*Jz8_V?d)q@$c(v<2mAFy6M58+19Jl<AOA3SWv3`qHCe;#^MIp`hL!
z!xU1?4!4Eym$Beea`-CI$FM!5$>;rK0Cf|LRF($TC!_J_f2;OC?$XfK=UtCDVFpco
z0cA_n+b-yS*>YPGpARPDIu#IH`v`_MuX%rAb+`IcxIg455)F^CDA_8ir<qE<^;zYf
zRs%S#Z|vhQveQQo3FCY|Cye5EZOmp=N{Mo12Smg5ubhJAAt>s341c>^P~mwJ5@B}f
zh<3wap#j?D5O(r#e^<Zwzq+N==n&X2Vt;Lif5iK8qt1J&0VecdhJ^Vs0uTrV4Yq%5
zvA=@bL;^=2TugA=!jlut_~uaM?P7L+fA7OU@AgN_3un_Ey0aVmuDEK8=e8EPpW{2@
zfX1ci_simyEv8j_s1s%&A_5=+ApG#i#0@_`__FOzG~P2Wam~I`#lp_!+^IjZ-jm_r
z34JEHd>Uk84K|w^v!y_?5LIA7Q~`ez%l;32+iUQ=-`(<XIbXs>K(H`?SkV9yo0a{a
ztfU<-VV<uKpg|bOoGL%cSh#|eGZJeCa|C$#9{=d(rei<)NAf@0{8ZOmFM<TZ1zpaf
ze{qu$|J`)o7;#P*CP0_+2NAIWG>Tkq*a@X$Sf=naqd3D1_`(%OX|B`(u>pUV`Ef>U
zc*LR;?SHmmgcX?B)OFXB-}WeO{YJvf@}DM}ceAh!MBioWd^$4f?$thW?)cuXqoh%v
zeWevye8Vd{_x3VnPz<mBV30g7^x8Qz9W-8Y<iEa^>>L5*6T(2o+}3E2Kb({0))wvn
z6%Ce4CW4<)=HLoM6rxdz*A;)^oT!kH8AQGKMI6yk2tG&7?o>^1muhdzJfm#Nf^NB0
zNrC^9hNUO}oT9%qBM7mCyo@pUFc3|A4k3Z=CMy8&SinFeL>jzql>@l=aK%9obC)z@
z)Q1)|GYBHR-<c-)WHGH>SW#}IBRRt?f|a|&6pvzp+bsxasS?aUM*x3Q)q8=x)*LKP
zNk=z62BW^QK0BSaGJG#*k@hfF6Ai})v(U3aO9ZiSB131%=SmvUDa9a&0Dy}Lms!T!
zU42^+j;C#AZ##w6MEVd3?NSNNVSy<FW<Hri5I6IGxSWQfuz&doA(2D?ld^A?I{e>~
zq!ITp{_T{FeZhVKcR7EPCM7zbvr40vy-IHxg6b`Y`?h<P2kp>@k4+O^LO!b>%WpVb
zoZCQHPtyRr1Hr*;GA>V)Fb6c-fS5SSAyLN<5Rg6YpU#;w<<sRDlc2&V0O@TkZ;a7W
zThya>-a8s|i<E8*i4Gy!Pm=pDued2S$sKl@Jz1XggLwP&q#%E}L>!$(UoVnOnM;LP
zw=v^EgK_4!%Bkw7nmrQYkSDXerd5=Tbk(tyEX~N$TGd(GuW0hyZ85(GixOI!dS<RW
z`~6RgYbb;SPlkch7d!RTjQiQtkBcro={OMdFo=@f`L!}L$R0w^Cl{L2+M{Ytoc5&M
zgU`fbft-%ZkGOwW&8Fn)OHk{2WDR?1oNv?#Np>Y9q}E}Im*h7cZY^ePK6Ep$IjQ1H
zPKwNh<kjSp4h@I`ohR|{y`;hOWj39pO05{tjSL#(8(QY32wyf-mbn>ZsQi`@!Rd_m
zhETRr5-iq*RKXx^FDHEkH>GgI$rKLAk=}d_pD}!aK1P4|8bs!NfdM!6OZE4SF0ae=
z1`dbz5wke8eq2x4glcghf*5+U1Q=<vhIw`tJyC{a_^_Ped0#FsPD|gIbPm7G6mLS*
zgrOtv)%nA>j0&LBdkZEQD+~@q9~z!7I!>*@uN;sZ98=umsho0TJn-2yQ%4~M*h4^s
z15Aqhb(eoUA$E~<bTr0PbH&s|j2Eat?D`%C8wz#ex}*%HUs0x{+2mM&6jJG%1z67z
zO{7FSQqLh?UZI(YhhlzN7#!*|*n%N5FC={xQHb*8I6MxI1%jog>I6-pfO8vy?#Kh>
zrgVsuRFPIy(NLACe3z1P=8{+UKRl?9$QQ6w=>~tD!6P`7-8<wwQEa~)@Vibw>%dj=
z-T32NDLuyU^ed<ld9zKW!G$HCx;v|4HTua=6Qg|%r9lN8<Y*MMk8;3~PBtMo+J_Jz
zn9S{@s?#QeX02YTD`!bAWG2%OBCtIJF6EoD+A2itH58I7-{OoVd8Z~-@n`GaxeBv7
zsz!f8{ws}`=WDHBAq0V@LHtu|CtyNAEGoRM94Wm?yED!mqP)Cg*slwno4?*7O!B-z
zYdH3XJ5f2@b;^_$0^ezJwMeyRoABQG_~+=hiD)_EghzKNXVQ_j!1rHJI*)UE3Z*Vu
z47E3qI7nG{di%r)%BUQfE<L8>9<Z{F_}nMw#@*8MeCd!8sI1A4ter6_@xQt09yz&y
zhck}nDoct@A{?=L--MSdu>>lA#|;{%dzxk_kYZ0r=F`e^QoWaG_jv{{)(o1(z)>I*
zNyLC;Z08q<h!J}O@_#4~z9sq~CJdYqb^p_~tXse1;D6t1(<Q3;-hZYsa`oT&`Fh<=
z?D5+a&QZ3xR~))XbY?s0^h+OHgQzkD^b7P>**<$WxpD#=95?jJ&rT?RqS}|VkqGps
zBnnL(=gJ)G)#>1pvl@m(C)+ykB(3f<%e%ys{(4Mp6J)qiI>AZpCQ1QR3Q39NqW1-T
zpFEKHt(*xuYPnF>hLpi5N9iwf%W=?_;`?s0griK^TVq2GL*vkZx?GL8E7>Z(X(Y+W
z|H3Z*8u8&zVRQ?k(a!#V#U;ljg+Vs{OW+>)(ACJbxC)L~OMpoX5^ooJnFbHE{p18+
zG-t?a2pZp|Z&J}G%@YMaL!ZlQVpwPnuk)itSQflD%Ybh+b%F;BSs;KDjvhiXua<2j
zI*9^BXaSD}WvzYE{bw62a-bE$(_oCJn%uaz6zSVzjD!nlQ|nxR5H<-uJgf)<UXMwZ
z6y?6qBUn9s$EiF1m>!g=9>n#xi_gn@f1kqB{yOVbG01P+9#XQ7`lQ>p$u@VEA`4`q
zoi=>mtO8RVGs5di2Lq8C>6f7}eZQMQ{Q%|<(@FVA$Y>8=;*ROIF1=5on0-pS>z%7c
z>0odrHS230oAm*IL<@;{Wgm(6Ms+d1SxY&NJUg&fDvNK;$7t2DcL%-sgb@aq)K!Gq
zvzf<Z)r#O8i|WNL4U%3k+>|D!*RY#aBaH>ApB;!3qOuTP8(0R$ITgMre_aXD>Y=n|
z&j1er{Z9Y_6eI{x3i4PujY!J=_A5n0E4TgXs=p@vx82u&?fR=-H3?L^{!d!+*wIXJ
z$I6w*oKwnDB>crqGvhh74jmJok4ZVw#jl(dK!m*dvI^rnI-YH0TuRZ%{f_Dcphju^
z>+Vq$@yxC+yasslCzr`>)_vK3T2;*z<LHf%!M$?HZ@p8qLexH;s?Yxi{0%V>AdMfY
zDtO=n!GBzTAXGeCjKgN0`U4lY6n-hv1|~_{#l1+5j_~FbS=0JleOlZ%3h`^d*4@ho
zqt13#f8&E@$<=3Y`qO#MG7qO8W=AO~eP^_kn;(e#dvUyaMydEt0iLEK-MYzTIXyH&
z%j&F4+wCBwx2NknUV}HcHd?76E<ee53I`y0MDU}3ICx6d$4qicqKTx?5&;Pdq#toL
zLK6Fpm%1T>?CdA_^s{0PiI40rOYl~%gEZ*)stUT50hy()w1n}+<>YE%mdMatwe!ve
zP*Z<q1mDgC6=H+e*-z4I(<ki`3XQ+{e+)BjHt7E+TMMIyf3?JbxB}b9PS5~XC&<dT
zpxXg|%Uqx0nLqktCbQbrZsXl=2GRGaaHp5iSE&kK=SyKJAbm;fOmHXfdx;3NWJ;*F
z%IN1W(Qw*}Z#qmG|6Z`1Z5e#6xt5_C&X7tqpb~a?SlrFqPtnL@7@3qNZ$-4bP8grI
zcN|e60%w9|3i0Y`uO(LA!2L3bNdf|O9x@+)XRXimv7c@4wD~0J*QF?()7I;AnL!LR
z9kN~08VFsdRGHN#20lD4DJbaCa}U^U=pZi6^ZR6ZT^Vn;SiKS8`0@-q*HdE=>90-t
zZ);z}41jB<rz%ufwaWITRRs+CTr{)>0>XL$0#c_>DPyQGYuq?Y5`-%k2yi=r3DbRl
zOz@Xb!28fx5Ab_ttz$*Ta+*=hPnDfSiC|;UouwI<>@mtuTA{v08$@!%B<EAhE1k42
zr{-ZS`<KF+Er$Y=MfY@WOr*>fIehW3q~{uHl-1O_bb%g}<x!n5ClV7{ucO^DIPjsQ
zv+TNLhI_R|?Uya&3!Y+M*OeG%JmM06^&MIy>nR;#<IBu4=DhK!Ls?hmg%4(&@y0%p
zHaN5|lpZ)vWRQo0{_;Mh`MJ{=^W1hvoAFTJoH+)0Y07i!*p0T86r^>#7;8=Uk;+4`
z+94kphclAEp&Uu3IQ+Zu*U3DMx=#W-Uzg%sr$S02)8*wlJT}AfrVHeozkVHm!4k@2
z>pcaD3ZH}FX`9_|x*4f|o7j5*0KDeAm(}a1WuArX8B@)4GQkGRFC#w(DzUr^)0OP#
zs~!Vd`DV8aP);C3X1h)VtrYE1x-4WIQWFXow~5SJ5Vfw82Hf$GZZiQ$IS8a9y^Fq_
zYLO4~TU&_CK%b2pGOcB?!eRw~FFN9>rW;>U0E<PqGN5F}a!5rhIB2?Kri1soxCLOO
z)KEkxhD2Y{XJ|_)Nu_KJ+(Okxc>z&pDdQ*iZL43JwGP7oVPrIG$HUW}CcvL3)LK};
z({A3aFMFE=LEDCAZABU(Tc*8iC4$C<v`W(=YmWpCsR-Kl8ZecnO9aDzu(jn-2v*q#
zSGn$eQ-U7IJ+$N@7ZDZLOIc&EVPa+Lnu~Uh3Wy|*{-~3CyGaAV@4~kevEoH#b0`p6
z%HQP(8xktJ{#4-D`3lr;)hwGbVM&iS&e9{0OW&_YyH>oV)x3kkI!GEqEzCgxnl^qE
z2K0)ihzkX7ZSB{YrA-WftuLk{QY4sCybvG2(@Tlvhq;5o6{^g(4yni}0p3c%l#s5w
zry%HpHzUI^F}lE@y9motu5L^#kgU-vOfXUNWw=8}3{ym3nPMVXyeml))@-dXUnCK;
zgh}ZkLcv%GR5^m(i3I3oW>h5%Ky;I42!mo{XwZ1@=-^@72HgdJnlySUL`H&;!ILV=
z4dou#PT%nwjIb71b&*K0t1pB{wZn6Apdy<Gt+Aw{WT*%NOCZ$r)^09Fq(fH0xwJMn
zIGZ>ddFy6Y?$s1pe}IvOdYI*~_=j$S?uLbj!T2aB7^wZV%IRY~K~!il47b#+nIw`x
z7#u?f8{>pP5{hbn3?#B)uaHdS2vlK@IUoy?-e;{O3R=(56Oeo*)`7c670C_ngop#r
z@>fB@lk|J_&*S)Ldpt|zN<+VtBcgmAlF2rbJY6aPrKcrp+#y7fI``-Jl~yH>>1v`j
zSz}EQgIWJ9MS&#zaW3)5@F*UKK37VcbV3`#v>sp6x8HbwI5?g&Jbvp#DTg>(6)PPn
z<n*RkDBXO$dPGP-q=ym)*e&yP2SaoN#zGI^q61aTO%WUE_7@M7eYofBw*7DR@w*<B
z-wAom{v*B3r(^#9+plsH_+2hZ(CHy8fqXFf5LhmxY|x1xM4@=00U#JWoZsTrq1Y(S
zd9Fvh$9igie?QIbwx;ylTD|++y*$hor+y1Bs-GoQilXRz7xks?i%;jfIE0_Hl<e;&
z>eV2!%L9FPJinRJ>M<ZNt(*_Zft%r<o}^`2KQRBsxIB1#_R(y$imZh^<Y2l+mIe6C
za~R5`15tw<Hx7XyDT_H<FWqVyCe?<Qh>pyb>ixQZ{SPX0>CVLc#Y0NgXnZswMpj?@
z-l0pj4G2!ol>Zj?*&DC-+wrf$xr`LuHhIfwSbWjk+ZFsUk5AT>3q;%QR@tkH!uRiw
zeAAS+t7o(UVV+GonR;~4lCnFLX5fi#$IlXJ0a>BPdIGSTFbpra&73zf1>%teq|>e?
z!aw(aCFC#MO0|a_K&0+aI2_Jcs|9sX?&)&Jr*1&^ZaKcE9<QkCmO8V_AoL_47Wq2n
zjB?Ilk+xF2z2x{H47+(ZCF4AC7S7C7e)0#J+wN)W**3SWEy)aIl2wwHlsfsJx~GUi
z-FT8Rf+8s<5Ze^tN=2HL^@|+~xps^Mh(MHoThxOs)--;!`;XQl#nW$4fYMRFQ_`wX
z#!*|O>*CN*S{a>c5Oy-@O>H7ObDXIJx-;a6ly$T<r0AKgDNLrE8onh|uyiF(n4oyK
zAmU@lDo|?F;w69Mtu6Xf6}+vZV(oagWj}p++a<jkeXqI8Z@$>GOEG8N>f)t?dKfi-
z%D6XQUh8A1e2jYs(M-d1q)P7e0gxNF37cF?t|M*lQM=yhiS-A^`%5T<`8C?8aDuhN
zu9iFJnRh{$0R_K$D4+&laE>4VNS$o*^9|*`>l)_rrjjBBwK5_pQfW3QJ8Qa?yf3%S
zgigqe4^Z!%q*~+;jz&&payH?*v~~r5Zlh|6ar#~lq>k~nhS==om|jJyCk96+a=G9$
znRqQKorYBfi5FexmemDO4S1FyIN7Rk61{ibP}-Rt%5QDX5mezO6CE85&U~i=LI;pN
zOd>>^TjY=*&fS2{d>j~pN#m_Sl*OQ&t4<x6aL=-}Lv@wnGm`N4>8Aw>@ZLCon-dwU
z9m~@=<kFz3F1B&-P~Np>*0A2RTc$hQ)=k##bS1!Q-qX)#MHONTIE@iS7=w|b#8E{=
z#i}arTk<V8DMIhrg{^%1PD?X_#fo|z&CfyaxXbZnK{$tJfzV8fofRZ?en+en2|IG1
z0}cj+<wbpXT#6|?0#!siWhd@`naQNAgW-ctdFpk6)2wa_`ue8rl4XPX5iunbp#(AI
z%{zl(=ovALFMt9<9H%sdIo^3nTP3Pt<uPnH$nPK!KB7W?L@Y`*TnkZoEC4aNUWb2r
zPH$T!DctWOa;`TWHw($TqnBXeZGbk)w0V#5r+4aWwZn8x)lL9-gRq!?rZJ0-aX5i^
zqP_R;e{I)LzNPOE5|R*|dV@BZfN)Y29yssqhya7y>l~NtB3Qu8?jfby@FhHW01Jf4
z1XJ%0?+Rd5{~~74y4XEx@J0xRdaL$;F~~#+5FS+3pyU7ofqrR=hab^)b?kU<rZGM0
z2(o<&qqhl%iG|R<hGHXsRv-N(eW)vZ82UY-tlNbBg$*Qy|KNx+G@XYP<14k-08*pQ
ziUgyoOny9-kF0rR%dYs}UXy2(Y9b>UAO&~R<`xDa{Z&8OOz9-1h*Q1L5D?<Olwa`l
zi85i)AjlrXtFCZ>@!eR6%$S$~78lfbc`}$cq*ENbp6gTpSCYejIlucPm@bnB$)8{F
z1Qcbhmdlmo8P<WrQWAiZB7AP>l@=n!HfXE(MQL7h?w#~*e2VaPRsI#Ucv$?SuEb=l
zlP|5RRAK+`Wo>)*Nzkc1*8_nnn{QXaftY~-0RcStwKb1R5mUu|J;iaAP&uP6u&T<Q
z4n8}G<|I^@);5%XC$%-9lJ|sGTgS7HGQklQp4cCSBh32nZf|^O<wlPOlKiZzTit6a
zUZirKdqCNY(STFyuy-VY!$8dG(xaau|K#mqnrzRt<Phjb>+8&atPiZOTmF{kx(l|b
z8V-L`{HSifiu9OTx~J9$L?F*39NDl38Tq~N(}E30Kf;iIjD)cq2aXe>l4kI2nTI*&
zIR=<2C!zCA?lvh9V<;fSquGT}oTr|>2_!??7bRdmcu6(+LsF6X|7k!8ME}H&W?45b
zM9h69!6pw#ak6!J<JRbuOzi+5s6t3&Vyp}vR;Y!VbDonHs~4v@AP;L`UZ~Vpvxs<z
z3r!J-U`pD5F=rE#bQ|kgwHZ2oTB>XMtdQG#)<bT39>*Tlrl{n28Cf)Fayk2IlqG5M
zacUAEa933-QRTo#-}4IPDzm1YvnKBJw%bN*_|4qXE%2_#vz?v2^<$!WY(Z#Z!uxw?
zm5f0htU}#*5GXi9;1gJsg&}&t?%a~8in?G_T+&H@A_*#LE|CKVtc+guo~dUG5Ht+`
zDzKiF9FlwC_zIU<DQIuJ4kWqKXxByTc51*Vr-7FpoRb@1XXq~+hb7h&V-ZB43sS&=
z2__H=S&?9E3}|~OP?&sZ{@%I*f04l5++2JOh3tKf(<51C(7e+Rg>|wR*=HWV_wXF<
zX6R)>>GvAk{lQ+tY3wz6dz&sTH%y!Zhq9u#^WS!~(^EEidNHpGTw_1T9ZqlpM0yBJ
zk`R_Fxclo6Zj^IJ_!kMM2$yfd1U`QeheKA8TD-aO_}sRtyO11|>(m3=*Fw2tvd6Sa
zW=^#|FoFb(0YT;q@9Ge?K*Lsay_h4yjOXBbHMhlP2bFwn_WvTkBST-;CKB;*pBFC%
zz_q0SLNh*}i*tN(srC8UTc-4R6<r#(vjQrP{V2~_;aPz6#x@b5Gq89GV3~hN7(1hh
z9Vtiwc7S4MmH`9V%6i3e;7V>{2X$8ZJedIbcW(!#8sX}vAg9iy*5yo158Qjf0ssUc
z2zNvW6v{Nbgkl_bJ?yu#?Es1(mSADeZSyeyq}eow4A%ZUy0MmYD#}j8AUz$B<TB%O
zN?Z^?vE>?Y`D&TNM|-$-<mrE1Hux}WSv1b@>*<gv-rjE-<*pE?h46pcVYF5r-S>+I
zwu8LR-E;a5`Em-%OSjrsZ$E!|qk!`t5W)Fll1uz8$GoFxu`(twXP>Yj6Y-`Xp@EDj
zv&sfyLPnz5C1cXJ?`}V<B%{WU40x*)fD4i#laz@q(~K#Hr(W%uQHOt0{)YwlBeh2+
z!8VVPf^YR7FQ0{e!kRsTW0c~992&4&U_J?+9gZ^jWkwc3TPlAjS?d4=fJoVko9a$O
z9%<*9GzX>)Q63F4%Y#p&Iv~;u5+wx!_xj$HPxJ)wL!P_N@%SHu>_`bKTr~e|L)_NV
zXpMDu42j~2+9C&Z$7WBQ792&+2OKU1bc-=l!xaJ<Dj|Q|z?thc9n`}55DOsaLm%x6
zt?v=+5wYNR!H@gzxCX2??>x%q2H#w?r?>t8+OGFNt^^G*$Oc?buz#2J!~{QoogBjY
zr4;-fr@eP)BDEu#myj7XpUl;_M02oP&`|o2aKmAxi_h*SjuM$8{Hda_>i{u0<SIZ2
zEDnlE|GC=yPKCIzw_yj~`gk6eORD?JsSdhZ=%R(tT3`JzMl$$p%8ds>S+5{;EWI{=
zc`yp5|8LNJX#2_=k@`p<F-S&#`+Jh$nKzfE+jv?I484MmnJO3}U<<O*-})o{F1zyp
zT6L)mR8%$5hAgwWrBc7`9R;vOEW-P?#)liy!g2Ev8(e#dU6Urg^{mw*ieEpZxbIwm
z?auH?APapw7Utfncyzt+q$ts=pJd14@*{4*1!B(r_iG+$;QVg~;SHF7pVG;ALzjn(
z_@er;G$P|(VIJwnkdTE?j~uUGN4S|52!BMlmsm)(Q?01D#~&z&sL8jw%2@MaC<ZO#
zP>je6Be&H4V_^<ixqY)13Jp<u{Y+l{*F7-jA*o>A?tl7o3I?{Rxd3UjKa+xvQKrGy
zfn^PxQkZCY0;gE)zIT;>Eh_Go&k|JG46rB*1-~%+5FRR!gJT09V&gF)bf)X}MD9!E
zCr+7jxJp&n!XP21L<B%YgGolQwfZ+Z>JA2wq_c=AAOxZ_C0ST}qPg?gSk7Wdt284q
z2$tIoYT!mdLV^_Rb7qUMMv#tm#mt@g{NLpBvF@^+{1}BP2*ufdqj8S<F7XZWTfNQO
z8$p~zW9z8Fo>T-NiB};z4)**(Ls>6)s;m!af17Q^RaJZ9*0-}4+w}DiOhhP!5Mm*~
zh=_|?AX*@j2qcwz|F?^9To`H;IB;Siw%izqaAF~VKd5({u3D${jr|s?_XS|mZJ(Hn
z9c4DWM8lytNE^C;%av7C|By|jo`*G6RZ=LGC^xcKIwa;IA%=^4w$Mrtwne(iu9eVv
zL_5dh#1iXnh>{8GDAxMXMIK$VF(njo(<t%Q927@M1d>4{Sq=|Y+ikYnZMTeLB-gEm
zOvtlD(I&V~HVoTuCB`XjTWq$L!eNlY6T0ZN>)@{S+Q8R;I2OD1q$1XfQs>>fWVDb;
zB!g|(A=*JUHypM=X2Zo|nck+od`x;pPEQGT;9cGOMypZ=ceh3ta>=tj^E_#RW_TM=
zBHWJVbxg2Df#8`74pXlf#x38qR~vYZu-B4iMAw$sB-l%Ix1w~QLV`<ameYjGY9T?3
zTkCQK4w4Ojdeu=?RaI40fGVh}s;Z)@tcxM5g^_NQ!^LZdE*vUV5Q}Qs5HXHTB$7!a
zl1U+g1^PKN`|l3A%%03;_xo{<j>XTNV(AGwtxmA137LA{udb_IYp)3v6Pbzva-Mn7
z2szWvbINH+q^59;Vu;2qgbopru!J7E?Y5h2w%a0q$7RsmxZSM{WpU$of(hkocu*F>
z(39Jav(wIeHPXfJ-{Gz5wz@47rVT)~z#`NFM9%*n>7k)Grrs9&oyP-GiY!$gD;5iC
zyGeAABHYcQ-1(%t`Qyh9?(U66P3o$t-QBf&#p>?v>^ARtyxra1l5cl;ySuw0*Mdr-
zuDKF_G8z+Bt#%m6lR{Vwh!~SuF$2GjoU3Z?TfuKO-8j2gyliZ3w%cl`NhVE)UjwAB
zJ#;zllorAWf{;lv$|<2~sMmOS#xaXkRe_=ySB%Lu$notKs#8M*6V`qIqz{Cmbr`n;
zZMWRFw7XgeCGt$1R!$U&!*3SOUX)ndQQf6~MoZA(C+88E&0rVCF}-9%ZR+rG0cEAs
z?z$JH-tVKz{r`u-raOxjSe#dSr2&-^Rq=dYW^Yw|-ubL0d({b;H<`j%cdTbQBQ0P=
z!ko@?Nu=|L&M#QWc?BCRU1E)9aaSTL`J$2~PFr960w8z=hn{WAtXshRA*3unq~phb
zE7X9Z6c*vOpqNn#FD_+FTK-x@Ye}CSHQ^?2Ef}h)Fij?UHzYb#?6%z7Qb{C|NhPrI
z^Wi+bE#nv@k4TSk>3M!X#r_Te7qy8b0&Q*v$3!@8mlD`WqMK}#+hW6!9i$Hk&bbyG
zTX=koV;lCW=G++BDVey<WU^eM%#R*_+N*6;oWB!ElZM^{n@PA%4JHG5mSvTRyr30!
zTWz-6ZM-d%@4cPuObO8N@9lEtvC`Lq_dSPK)pgp#m~P#V1G<$jHsPGthPphYF%mq5
zRp@PA7enp1y*G*6*iFsERYkIJo%KS5z5WUPe_%c@+4wz|v+$2+?D%eWNiTAL+eDjr
z;WpcCw%cvC#S~m-A`J2PSO^LX8KOJ@DTDx|_1DwTOiKjH&K@Mlow;8G%bp&d@&u-G
zIoCW2$-IORfA?cF-lQghNeH|*4SZ+sECCSpMB<v#Z?{DN#ggzHpG|(o6^}0+?v(|i
z-+i5QSA2`}QVJZCJ4QF!e))WV8TZ<c(W=P6r^QG2k*bQ(^L+6b>i>7@L+-H-VDffc
zoo>1LxpQ!+g9v~iSqRESe+4e>qCVX_r{L@5Olp5#%A?Ed?`NL}w7KseZHYu<-&s@8
zQvGrj`L=$hEBsc9&JUaGce>6WWy|^AOzVuwWK4qdQFw)9_juiFu6V_NfRKW(YT%;+
za`~a3gbRcH=h6Pn`{_iX-2s6BXkKbR5|Jl_gWoNtJQLWMH-Ct%!iq*>D`)WZ)Kw75
zWYkBPDB|qDm?+*kgEgM1Dz4bdB}++|MR^4vRgmhEq9uyhStdgSnllCU;(nf27tG<|
z;eKv=eT#)vA6MAqQ?Iap76P9E_XXr~WAI(Hczaz;9NAfxx2ZQIxIeccnWhi=Pef@g
z5IQD0^@SJDAIQq{C;P5n=GW6Wt=>jK-JNny-}c#kxd`l2NS}UXZ-KT)JVNsMA45>y
z!o5ai`EX@Rkti8Y$B-^Q5A<&3-tk3+`)DA@-XH@@_*yTo3|w7*c>U@hDk~B|U8X5q
zg>*bPcwdQ>mqGq`MHtwjjYQtenZE$ShL^!a0`T;CeWv3e+RiB5ZDXXSM1q<#fHUR5
zNQ1l%P-6s8q!Hnoy@L`-){_|Xf)E5D2zx#)ciiA64Y$H0#Sm)=Z_q<_Zx0;F?l4$Q
zi{rV>&j5Hu6A6lcLchrzd2AK;6<>usU-}}as3h0~AcFj%xM2(gVeXdv_mf+!xztI3
zkwv_0J&<UGy&(r)D3QYk|Nd-Ioy;cj#+=-gqKP@g(=VKLIL3;+1h+f1U02`r+Z1Ju
zV;s38A}LLyOhqaV^x{y${uwV!H!Ehzy_Z?>@mqK^LhXuw^38{msa6)rTRl)5l9geL
zJ@zEds|(}b(|(0cQ=@$`Ll>1e3yRNJH?e+K&DL<QYWDQIHIC15XRk`DN;aVJUAo7<
zhT}qgb>*6Cs}S<rS5W6zT1iqk*pu_JNIV<Kdv->h){FK+Nhgy4PZb-MaIsCp<g`_z
zKDO~=JuJ3=R4HiqUSBjYKWvTCMi1>96XbMF#b0vdwWQXdfWp5Z3aFLdHEbBIc5hCk
zK@VHjF7CXi%^IubU#C){)^R)*jfi;7Z@ODem0I99g4>E~F;P?pS44#%h=>juk}?7}
zr({XS^>|w#t4(F{U6slN2MzQoIj|bj66fGcFZOAF@;EfvOYxV2f|ACj=}rfM<Pib;
zY|<EHL;zAqES;4ok@_^+!wgvwfQl%=6;MQv+0v>az(9CgoBN;NsGphtjaxM?lk&cM
zIEo<1j1^H85e6tbJY~<~b(qwVWJU@KGtGPIVSlyzG%z0weE!mztpsQN0(#8!8fY;O
z`0sLmGm%o)`LBguJv7)&je15(KoDH^_A+gI>eWewIaa^>wc_MD)oe`+YRUX=QAS-b
z+HJL=8jMX0><r4$HjGO9PFn2~-`(Nv>7anadxv&!@%oI-Y*ivIojt;<%(YbvgH0<Y
z+QkJauuPpp*L$in>{*hniyAIqc3Vk>JU{S%fHHmc1dj4J8o!0DnMsIb%NosYUmm2S
z)0fly)YVI(7;C~Ib?zETF^MV}OGQ3A9^o@(lNJzJR%NEISxQIFIRVPd+w0S=zbz#%
zt2>!P8Q~lFpZK(fZV@18Zg)V0%F`RYW-Pkr-!N3GHIkETZMNFZg$)nh?clYo*HTk|
z_I^Bv0xiRruXj53_qF~c$RG^9#{?1nr3Od>2+!h8NM5@(qv1|0#6yWfsgfF2Ao~A*
zsrFN{&0nDU_HmsTAkFxZhq>MM**VNM=9_NJ`tCmNyoMVg;aV&Kiog~e>V2;3y?~w-
z<g;1|qQUs6aPjS2GCQ=OqAXNQzuKCAFoBi=BN8Yq7>Y&=1cATZ;OzHrB{d?f=)VgA
zFmC;=-Dk<70%iL5bDN=qrSi3T+0k-P2Dq6r{jFB|(Xca_8((<s8}5#%K*Qz|>cG6y
z6gjry<4$G(Yr#OI1cVDeDDQ@wG7}Cwg@)&*IhjairHf4<eMXN>`)QL3P}*pJIO|vw
z=^X(WkXN*_RKi2D%`!VIww4{e%3z=8NKW%d`^(R{F=`;H$BvTZb08{W&9N_-!)yLs
z%OvV#MxBU;)S0id@4mj;u0rK&9%1;ICWpFcxBY)+fSATHim*BvLR45JV2l|UA_y@E
ziYmbm@v;>JU@EaxQQ_v87^G!?rAVN#M4l~`gEMd>t_BfCBp8Sydg@px!R)C(VeZUe
zF;cxkN@1ZM>ukmmL7kChR99Epe15BLtxdL5?tXVUMLYI`6SHANi5Lj15fO-huB!mP
zlhgMY&mEGgiXegtDtyveHdQK&j6{~gko6vi7yx37#V80e3&*xB6k{TPg0;NuVoV!i
zbzsDRms5I588>dlnbJ{1NGh2GlfCP`zIXNoLDc$7Fyg9GDpoUdZxhdGXq>D=*)ku7
z;XNObDGX*CAbFFa`M;mxRZ{qL%KB=&0zo-_S3#W3NP!SrVJJ>ts=#H)8qf@S2}~vp
zfXr-aW=vq3ai1xFI|EZ_n_|W51`4PRx@WrCuSuyu(%BUiRaQ=34Q^pGwBmIekSr#_
z)hH2SKnJ3J>poQQ2IzzcBoFttd1BwslEA8wgBoqoTg1}Puy0UlUwb+W4X|qWkoGg5
z!S~xvqRpj!_}K8uA6|=Lm;TcP7Jr2?H@V`rs%m7$5IAdRFVk?^LUGN`<0wt3-<I=Q
zi}$|3^-p}hMK`Ewav7Yb4>0zj(Ss!iq*YGODqE2T%6$^#9TVf1E_}DFMejJl(8!C}
zJH(KpBoPt}Th$}WxQ(1qsU^T-E1r^xq}yWW=4yDe65Uz|0I9AduFhy2a(_`FSmbQZ
zO-%!XxAK*1=qX?B;_o5+(wI7KUF9*k8Yy)O0il@wLkHA!bb_^i@7Tti9y!wOvJ!p_
zvU54wCNQNetQ-lYFl{o{t1H!5R4PW|A&h8gk@B&!`sw1zl_uHnAnE1DSqMomCxe5Z
z<fx^Bdz`5yUZR3SV5ZCY7=NQWFH_TO(?mufoPSwN42nUE63(W_<edU5&eR@~cct(o
ziiFtM#K&UII){r*C~XX`5Jf#4q{QvIw?2bUYJ^hCkjk`TNNw4*&Ut$1hNwM1Sxi9X
zH*Y?eBF@i?iHIF2)KwyQ%L4Pg&4vL7vGA7+QYr0tF@_{UFi@VF)PF&5%k(@vkeVVg
zYql($&Vra=DvW|MMUY6bKtDRxMPO@6s}W+Vz*R(Is2~VPD7_m|1DkA*LC2tCNyT|d
zggHY&6(Xw#Zn_2pNHK&(ioi}C3j~TOCv9vMV!>DD8Zj6wQ065Vf(oIj{ESp!$jSe)
zI*(J3!4!)-mQYbRDSt%-L`bqAtWrf321W?U5hPf~2?X=@#Tdnch=aa`fQhA~SSm$i
z7AP@NePxy-Ad0~eRS;GrMh_V&7weL;0J16aX+%h{Sav&>1{kn0s|Ex>V-%6L7w~#q
zV2Z&vN5F9fP&vE**^IIXG6NWZuoQsAkA>X!AC;t&Kw}k(Dt`;(4LDgj5B)Vm7^1-x
z6_Gw)uEd5Phj%<?aG~`74w#YX`A5af4gD(>1X6d+P!or)m?x99WL-5<VF6KD5LO__
za^cIy2#^Dak^xYY(n1sG5)<Khk6EYGYpBVvWR(<vq>zPR5f~vhB!PF02>Y#hM^_yP
zLC7=*$2mS9*ncLGB;I5NBmmw*K&+6J5QsuRvI!v@Wkpum0-$kHLSc}S6_Y{)+DJf2
zh!XA}NX?JmgY@*fOEVFU(h^PpEVu2i>$!;Ab+T9-Mt9N6<67fUz}F~mmH`oIM|Xdn
zptR>sH_Db&)#jWGD}8nv$fxBY<{p`M=<cWYOt$y^>VK-}>G{`$m#e9`m)^wW008b&
z!G;_}Kt&ST+g8=8s;!N*q9WQ_)m2q(DP)|VYxG;#*{joPx^f{V)kH!lO(L_=cW`F%
zg0VZ$#mMQDa^1?v)a%yQay8!+!?bH4vZ7W^r3`mG_Qxf&gdnPXNqJPDNFMX%!qkrd
zx_iEsV1La&YdSG{+94;*RzAI7z29r63!R9=>gL43y#zIx!M!-V>M}|r6nI-p7@L8*
zZtSjZSrVKPwsYR}S7^|~TodDv;aML7gdqcjJ=A>!vii<Ub+4jy&^pQ2JoC>y^Uny$
zJk-lf=REVzJoC>mne@(@DJ3e3D56<g3SQ?MoqtU<#x&3=eG{gNP=o`ebkcOwO*GR@
zGYVf!>7tN|S4}5PG}BEq(>SH{&YEe_v){wHR92@XE)WnI6RU~L<%o7bHewxulr-W@
z;DJOC5D1|HSW=baIC&r5+4I}$*ckR4DoY|O9hgm^^gojV!vRu2jsdJGOCoEXLT40Z
z5Pv{SBA+ptluo+u``vwAQ>NW^$L1q(z1|B*3v6w78`@Tzb-doXED2D|@ZLl*?;b3n
zySBHb2(nTwrUccFWAAP5rTB1K8ygd1Y)yh}K~0tGQHOfgm&^gA_30UzX}>BccH&E6
z$FiH`>0U33;d50L6<|(Z;RJrqr`+T3Vt=K{+m-@XsS=HJk0Y)HfsSNbno}@jRbgcf
zv9{ZE*`m&980jQ{I3Ji2C`<yR&;$JVoLa6fo1vYAEM2{H6&7<_V;gLIIe8y9%xB{P
zn8cBV;iv=kdrQ=#(OXMxw%XenIPsH{^}J9gXa6yIp|i#UNg717*wOH_IUh%_w|}@}
zZLzWA<N>YC^Y&;a;+y-{ga80I5`inZm$*YHQ*#Hj)b~X0NdzZhB#w+RoL4)*UV{;~
z%51E$8%g*icL}C&@(%FQDpNhH%B4aMpvHgbiPNRuOPrKbZrL5c=GJ$2Lzc}sw&3Pm
z#kan_*hWT!ED69KFVTCu@_vz}BYy|?4I%jL#|@~B6;P9X*L-M&2XN@rXkD2*<~c^o
zuZ8lJf%4P<`SLi709`<$zuUhj2%5McfN;bIOgUM2jS#}oFpu~vb6>q*S<J?0sOTX&
zDrwBlod?wO?|FRF=;?x->Aku%xyAoyqKHSEsL>L3(CtU2KZDXK{_Di&#*Z~?Qzw6h
zN1S7n7wKyEC#9tiQ1)q_1RA^qNP@${IV+y%-cMbBLi$pDe{V0eys9Q@$vtv{HhaLt
zSkGVgy?|cd@~HOg)IJAOY?yYg517{|(>;0?Wv#d)W57TJKmlDrNB{-_0#sVyX1!;p
z+pl6t64Tsz>OjbZGK3_fGJsJ+Lt}qn0&HEYN<L&mUb*;uJtwg98m_ks8|&g=dfuOv
z`<^dtC6xW{bCFSg-7P=v`Cf-X4TU-|od09Nj{2L0XfN+l^Jg)eq>6?`ww$>4hj=!x
zL-M^}b~VF)NC_I$`Xgh;7mwZaQvHDd-IzjzvsX_;ej!y1-8C8~QJ!(1!5)9&uJxU6
zS}x-xqhh~iW=jZFEpX>y1nSZT52FBd87wa*VRwCj0l`s7Njb8U<?t!a%Zyk5MYXc+
zBNP2^f{wzY$h&sa3Fg`ql+~-1BPY+UB>aoVZRQ!?qS&=sO^x|=WkLzW%dL)$U+~i}
z|MH$+u96zm`0$8$d_YGhz&w8!N3u&o(VGkOD2V{;@`sT{?a~GO<;v1e{C@tgl0|aF
z5->=BkUv5|fqafwmTfiluDpsp0K-Kj(4((z*hxiqj~N$$VzkHu1pZMI6cGXox6N@R
z+4-lOnc<uxT93V@2_!WB`-2$SAFZ@dLmL`9$B#S@vjiaG#E>ZE#TI{}`jp;tQS#TL
ztD~g98wi)Rm7`N|*_+Jx{sar@+XpR-^xfZ7=c$RVZm}9<4JxberGH1nzkP`d8)J)j
zlJ7I;Wylx!{*6P=JM|(&M@7rz9S9S<;Fp<6<n_y0;-d~_0DKRV@3@M`wmoCZsIm@V
zI2#N3$DRj}Pdvmh8ySC;9gNGeNhz5VV=};*knCny6EYo%=a`;H2}QkUW5NXrweC14
z{|y~_WV5cBwIK9xok0xzYC#2zIr&PK+x%gsWF*4q$RgFmv064<6QZ|r|J~eH7jI?+
zn@&*A2^w%Z$~uOx4e(zSOVp8S=V#sRix61E-oo>lSoL3f&^Lc5E<(ynwEDkE7Q*Ht
z(xtW(3W9SMSW5eUV<!yu&v6OA!f6ja$wk3kZU(*{pN0Is9&y)uz6iCmc$mNGKo{zV
z$c>k&`UZD!_S>kKa4Mps5j;EVF;!H5d(cVfMo&a<dLz-~CDUHT?k#$I-C(6{x0YUR
zbB|2QqxkD@sl|Wdc^wp}XG7$_UuThex|7Hjk?ERKCfn5M^ktIt3mR^g$PmEmnp9ir
z`>BDzU{RSVCDdB4Nne_K+Z`?fF&Z0s4QgbvIV*fiG!;_gfvdp-57F7{WxlVd+|%d2
zni4@|RlK~d+>-jNUbF!%mzm44k4i<(*rSwk{CkA2eVSx7IMw$Lv(Jmwbv}OX03E_f
zq$7o!foFdsOGtp>-n*~c?c%L&_BO(9$QXVVj8fg(o7#Ddq-bFXO9?_GgX`rMiR99-
zb#e#u!=!QlyJU075)ElF21NCllJp$jm36)yK~8L!Vc!HUe|cc<8u~e$t37fQIT&@#
zEgW?!r_&?%c+YUpP&K4fx@nrKdv|5Z!*jk@9Gi71VXeEE#`Z~teGlG)_>!2+)&z39
zWcn@Bw0r?jLR<f4ty&$6i$1QYl<At2WPLB+s(-tjxpt8Iwys)+!Bp6y4zqfY>Gps2
zo>pCKx`KYqe@$;Vg}|_vhr{R;j;RK=M%sG1lhzeT+qEm>oz|C0Hl)W3dV}Rlqzx-`
zPV(vDH(ST5u4Q@knx^E+g?wWk6uYN!lnhx(0j<h&HuaM+*g2glk~Le46Qs}D6mWPx
z6_J<5Ef-AT{sl)$9w+Mb4`+9|LdWYN`OC>BhC1y^f2+m5gZll<aox!<KgE`I;iw|u
zesh$hPJ6x*jU54^PxT;V3XgZ}a&&wxUb*Yu=T#qhoE?iYDu}BO6>0qcje`;S3=P<T
zuZ_^w<7V!xSE+*&Qv}m~935jlcPZ($oEj?)ClhZ5rUY7e_56~H3&u(iAYv7$;|~NS
z3J9P^e}zoQMyXJ>hBQb^g$@5SO2nv#HADG+VYQA?$2TcQpdgafs_>tVsdXGUwIL9~
zEB^R9#5c!A3N@4~Mm+Tn&k6I%sSk{>`DC7LW6J$ZD@|UeIuk==zPkaH&q5-6@)BsL
zs!x_A&sETR$;tYj@lE(!PK>@vxxbfIM9y2ne-Qdd_pBxE{`7=CHQI_~my#WC(sY&r
z{5Me+t<rI2`tv40i#`gs_&oDRu<kq`B#=(g^a;_w6Zd=1;XBWs#;69w@Sdo<h)5`^
z1W_8N$FW06aTo&Wn3L_{0rVO{{Qq0saXv?1?XkXhtn(N=Z&PzuiIelR{+~MEJtz6G
zf4`P`5M3A&te?Y&Vn5pd=BvwYem>y?ewa5&OXHrt9m#W&>T@PJv8qG^&Q4$e2UD{8
zG|i_3yJf9QZYq<B`7D1XT@OJt=|6dn^#OhI=)+1p{<~*?EcOY%sdt&&10Y#?#NhQf
zo2xvk(S}l!hvdL8LuA8ij=L2gl0uWrf6X=zpXB?z<->FLe(&n*qlULX_jOil5I`3!
zVw_=|0W!CboX(Z`0ABj6$8YtCBCt^GZVAs~xi5Y?XAoxuN8qJbIOulx_t={RG;;`u
zWa{58JSyO4+ho8nn$XEjXYbl`j}y;4^B78b<~oWU6j4OzD58oeqx(C}mUb5Bf6`;$
z)^P6eHyZA<tCs|Q8zG}5!p>l**i#fgg9;?*;IA+(6R&_&FnE=EZ~|O+mB@s|ljbqL
z-Op=V9<)KvA_GGALo=U^2jOsTP~dS3BS7Z>csS~43J+ECrW85ViSdGo5~4CjAc1v}
z`P%x9hJW9_l%H8n9|dr>M;XR&f4F6%oO}1cLgTc6ab~Z!X#>CMIsb#GK1;0TQm(>%
zy91}eo#3VPjUNo%O&fFee(GGSE|1A%eC;m6+E(!(L~HdiUx)P6t@5`8VCsK`6rtre
z>&V2KfWe37>FpB;j5%LzgVN?+^Z0pO{}K1{Z*h{nmL!rNdz+*JNCc0*e~{6Wl#Vx=
zy~lUo_v}zh6CWGX-0IEr0l~tEq=dJboOUP&7b>X;1ds(u2uK;7dP!pHIa-XJtxF=X
zHZNn1-(Xc@)%vurCYZ?Ma&Lal>sgn)uMeW{g{t79lz>2a=NpZ8#N*@vLYh3HxV`TR
zbxb5KP_{Zmy&K9C+VI<!e}uIs&h*DNi-r3`yVt5+9P}&@ucw}zpPM_VMcFcaeP3C+
zIv3T^pD)$v**D4`JLUVt2znxac&!<wq<_(h@2at%bZS1NFb03<DbsW&Ly*;J-%3Bd
zr)X+Oj_mBsP`=MPEu0BLjV<VAf{Jvvq-#c^j4}=--0w^BQVKu^f21V<5)6dN#Hm3f
z5fNi93M4VEb@Q<`K7E4E=PsUhT`1|=Yfc128+=r<sb9Ym=iuj7XbL2PlIcEEAGY6a
z2D$NmiwQ_l7}l$aR;U4OP`FUew!5WLf}>P4a9dmyYLzq;hqHLRouNMbW$(utJ`!?@
zw0;lk@i^;zOZB`If1W7)pT3aVQn2sKuLF_j^Nmw}{-`tkLw6rh@yva4p%1%2QDA<T
zM++o@;RH|xAh1~!ibWtr0c1Yu@yJLRKspb{0#&gl(%F73853wiywXT3U~SqGhXiDq
zNeKlAEDWIo*|Px<gi;WI1edmy2tpSz&!BTYI7mvtARr;&f2hH?XyxmEET3KDOr`0L
zv*zk~9lQ@aEewb8Y`==q@a=*5Ie|Z706<a97!K3)o=Hu+ven;uwOTad5Ss#|*xIpv
zk-Pwa8NizicAI3APHPG!Hf3mU`do4XcGU@(v1?Mtd!Ln=jeq_y-m5#4q0QE(c#Hhi
zIP?P~_GFHHf8l_8?H>o5Lr4<B*qaoNo=e-G63#mb?HydYGQnS`WY6ZczdS&?AD(+z
z1i5mb1}EG9-p0U5KUn@4uj+FMNoF=Feb}3GKfz3`K5VpyYQOK%axVuM692|DVpqbH
zi6NS2d&&R`7;p5=zb&gI1t6?YYn`V`trA$`7t|Mhf1GTthS8HyF;3vAAr24)3C;R?
zHp3Ma1}U~i`W#U>;VFcs0~p3JjAalhK{vl_-=@-!H1)=1KO#OJL;(Z;M<z%+Ei{jc
z@6qGrW%SWMnF8|?hy8xHznwHj+2p&U<OwX`eO>$U|I183NDk-O6S<uP@u>3iU)D!=
z0$UD)e^596=ke1pOF=-wm7L0?TsjH;jt-HeF{`@|(ce*0=IcAbOsaUW1b-eK>h5(S
zplqY!5b|Qv#-;Bik@R9?80c{MSoPA5^99{!R1)O?T(03L1()m>3G~N-zc>1#9T0)v
z@czsUPd2KGt+EAoLk$NRe`ywd^$BTFf$nf@f8q82F6v#@8oAfRCz}6&l9WpzgR9Am
z`b}*(vbL5YJBs!Gy9kl$d+0mQEt_W{rECw9fI>hQx?)LF&|ui6gu8tt0V_P5e|6%T
z6|#$e^=rcTe@ES4^~U4VQ~17>h+%g*-Wq7_sH_9d<e1x6Gx*Xhyqk3#9oG?M=QZqA
zf4gk1O})xGrNnB>e=yZ!!d`c?^t67s&tVcETy@sP1WwQGr`!+ozO@x)w)qmgy4e)J
zrTnvDX}R&w+8b3z-)1PStvqBPL?#-aAvC~W+M<*qs%3qMqzUds%#>kL;}tQRRv^mX
zL;LAX*dwFb=B-d*eBrq1sqzQ*Y)PVPf5Eyi8P6e{PqMErPdA{}6bu3&L9V^9G}BkC
zN={J;`c@foEIx~;i=D4ISuu1@1~6j`x4%V*GQ4sgO@tz|QRK<p)hU194IR_ARGWEo
z9gk*z1F-g`-=yZ#2Pf;XBL}-DepDYJnrQhCBi?`6ua~CGv1<3$)=Wu!A*S0Je-u^#
ziYi1xZrdaQeZP>f4m$t{e8<=Sl7G=Md9MP2xQG3Io{)q$k=<>ySx|u@lB%H~NGybs
zcs}oR`D~qfdFDwukMlB8QFz@Pw12qnQ01j2ztZko@dm*F3@WT=x6u(|yRFLDu&b?_
zruzET4=mPxqYIkA!jeu&9xulvfBt9o_RF5%T{PPs<Xrb<ofTkA8~Di)cH{c2XRzXq
z0H9Uh3s?3z7uiM3)|e`mW-mmU&%w_Arecrjc(7=Me{a#p_2jvrz>~|<QgkJ<qe)Mk
zr74d2FTx%dAo$2~v43=(mB<KQGTr5lqj)1))Y)t*pZAZZr{9TwamYj@f93F9S0M8u
z-25C^rM__2-09!nWtYzu41f5Ip;r!r>_2R>`@2Sl*K1p%L(VWo7V3>QtZrw~UiRL8
ze`!sO`tx*WuX}%asOzQgW%H@AQ^V3-S)Dzn%6&nmz~EDZyO?6SSrL!}ZgWqYYyMjc
zikCm6&`<O7YO|B_`}yr*e`+FDt=qZPwJ)S8v<(ORi|-Ler}%vFkDI<}UxtuR1w!7G
zH-Sp*C_b5YlKMU;;Ce#o0!#0905EJdqPEdG7P#{y(s<2_548YWy-)hZ^r!%620W$D
zW|2mxLtsfVY@&4dW1bYoF^b;zy)lWcYg%I%#xYW&$Gt9M;>fkJe@ou@#wbK$*v2tT
zV)w=*QHx_3#W9Ry7_VQg&B!`H0FVJsvfAIm1(mht4R<9;yw+$;iSond9(=ep@|<so
za*jUV!HFLi4}r)02_RQxw0E^j^x7zKmIHb3Tp9(K`E@bWtM2<ee8ajX4fV2bpaHlk
z0sz)P3bj8IvPfgxf156}JJoezB?@JcxcHSmrPmd<qu<QV4hdXTIU+f!f_M%IebD4`
zsa^!s{LQGpEYTmyXo#%xl&tI8`qa9;uk&VPAdpBQqu?QrE`?ep;~$T*o}BRvX`2Pg
z#P4LTKX6EjN5NM86Y{uf-N5P}CAG8Q;;h$zrymJ~ou~Eif9cxcbpqxXx|gs^+o4BS
z#SXTBLDr?6!*wHN*H=Dv3lx)(Xh5OjahSRi?>>50vwSfxIio7D0P8^Z_PTAr8Qnc|
z#90`ee`9P#%QnqjtW+9ykj9!USTEb(RpdFhPHUqgGnfECKKe^MQe~CzoIdrb>!X-q
zCLA}TiLY|wf3`f$nf*pkS#Z7o$%Dpo{5j73WH@GuQj3=!jEz>0Ij_*t>oy!4Gv>(D
zmzBW2^s<I=@Sw_i9Ij5UWr^>rvFIM(i|OR2?xWnllYtD;)PnM9Wp?~(Tl6i7#%}RE
z{e6w3k_3&#Ca_~|uX4zLlof#39C?A~b~@W-hBh&_f7@4gJg*zF^4;H^!$kI5FF%L5
zy~ttO_mpxrV+TxWn`350mW)v1axFp>n>5~DKpJqP0_F+4^c&oS2uUQkn!C8`OMWSG
z;A&(@)Wl9As(7g+69FP^2nisa%{F}+R)T{^Nk)FJIL<2+L@iF1Shq5?{%02Di%b52
zDOzpve{#tr9J=!>R~&$T>>b8A<*Kox=9kOhpO9tTcKFaXl1ZBAW_@_&B=mV$mn^a9
z7Pe95kRa!Go`}fy<U<Uj6(+!z$Q3t5AYTc8K)IxnpuFg&pM%S#?(6UF5+#{BzR97|
zz2^xV!x*xC<~O)X;R^|(WkdzeN6fOC-&fzGf7J^=Py-}1&w-f#koC0%P#!n6O=Ba@
z`a6<0!)(s?^q|N5Fj+r)>9!zcP+eg+$X2AKME;f3T;zQ?6NU>@S?=b<D}+1#o{bG2
zEb21;q`80_YAs8xlD%P7BaUr&7rv|Nt=<Iv8QQr!lzW`bjOu_Nx8Wb9`vyZ<6F4xV
ze<>G}x6CMFwr_a_tdMt1<2q_Jx9pl;PWr)1LVAPPN3<ydKv<pxMHX+4Y!;xBNFwsh
z<>a&`&!j@oBdrhYt0ceP^<s)M35?8nOLzqCK+Bp`V@Du7w3>DV800;M-!f4XpvXDo
zsAMBCu@5K(2f-2KJ>H7!r8D;w240v@f1CsiArx>TEbvhy$*x=8bZ&GV{EEm+Vi4BH
zpArJlNCm%U33Tj>IMqR1XMkoRE29>J;vz~;06-{E6`+dh)5W1a2&V+_+zRfa3~0&0
zQ5q|V>7$aK%*kpY;>ZAqjwb}soxA3Z*X#I`*nJII>I?A{COh?vC1&6K<`R+Fe>DAs
zAH*7}G-d<aFqv13gIci&I8<ftx?q))2nWIdFZ&k&#jXz(<Jlujf{6v5g7K4UGFH(6
zgZUA>PxBFY-S;OhdgOg4?_6-TZA}C%<f^7lKGL2eF?}iN8vRpWCnnUD=Zx>+e0v_2
zxs;~ITOK<h`|2`&Oj(HkmXWgXf1v@Y>mbDS2hpZ!1lsg$hlt2bUPru-gd_j}1Aqu1
zKnhVJ@c{VatoT%`E(&(mOg}kwR-Wma@FubUo3JkSPCLS>L$+1GaKPJP9(AtSYW9Jo
z_1)OXuNs_wwi8$WDoaEc2s#@fG^jFqir?_&;GqzWp3PTQw?0qi0!S#8e_2J4(&Cg8
zH)~y}`csshNk|L=^7tVCXGgQSUl}sv+lD(k;!_w8T&xj$zy2Z6(H{TAHx@v9H9lnd
z=znEGZg)ne<H&e&;s0)8$QL~5JXa^sE6|#4m2|h4t+%|h)7P;QNCw7Y0+2`|MJtpj
z+W6UhMtoqCsDo10MI?nGf5f%~0*%n{#7Kv4f^#Kj{Kt%7Ta*mp`)${#^hvrpj8`gr
zLq8X`e6=FFAw@rl{c{!2h{Uke+WAf|8^8?AHxO}aao;cJ5K!s1snL}AW*_x@_aKW~
zp!>-hm^WS}s?lFLuc`(3ZQb$l^no7(0$S2hX%6}g+^!H0jQOuGe{QA11UOtocdex<
zic=WECNU{WQk11dhFyG2UGM^4e=CwV89ct0&Xb$7Jg!5FIxX>P{aiWS;OB^OE%;$5
z0Cq$jL@RXaQ`D~dO}Q?5eQDym3C(Jo9M3gt9>zUNwxyFaRP6z{v3?kZ3s4dBVw6Z6
zVOTCaqJl*#e5Opvf5hjE*E#`eE5=qO*w+Hw0Y$;m9$+o;Dg7^WAo!z^78NEe{#eB{
zLB#`rcg2fT59N85M)YSY<knil$Ijl{?CtYj=LglzbkZZLeH#opsAGR8<H$F2A#w5P
zI~bWqGb54J^;YsLDP2E00CTM&E_j>^HdM@Qp_N037~YhUe@iLqJ_swiGP9k*((L|N
zzJu;O<_6C41S`J}3RFSp;YwM0%NuOJ9gkW_>~wY5`aLZ^M)JTL(q88jOS-!n_g8@r
zu9U2aqr&aE`i#%?-sc{<;B)2KQ4tXygUWKf&YF0}?Pw~-CkmD;-1K)J?`k~vxJ*vZ
z&)f>WcimGtf9E9we?S(BG#ECs*3itBtFI!8Gqo>KI;lbtzp>I#D3pBOqg1Zgq>^j1
zlu4MOxt(W8wJfl+`WJv0DS;l}m$N}4Wwuh=iZ;&M;|eJ%1U7~*?_H5*TY{55a=dg3
zYNvz!{9ixx`IICvD*@^a3`@Qyc==-Ry5{8K4ayv2e+<+u9^p*q6#g>Vy^eV$I-TWx
zVs_;Tc$Zj_X*zP{yOqu|b{7_l8ZTZBj;y}#YxwEWHYusvY|R2TK*g{!x%8YE=?XmK
zOfQSxPvk8+HeMXfJj?@4Nf*(L)R_Tx#1fbNz3TK3mhan-_y>LeXr6q<)$-NCAJ20b
zk*f(-e?oa5kt1rcOhZ%0p$dcO>RxsPAX;Qni>5q+AR_)H=j%#QO<RvMvVtHc?g%@|
zm32nvS06~rSOKhFo6VGv)JA6D=y|7%spje|B`W=wW!4n40$5rq>e#N9{Rod<VERlk
z<~=biED;ohMAdkea2C7BK50*--B`0HF%a}Nf56@P<O=|#A|5pQ#7K|Qu!(tdVRgkZ
zb^XpPcK1t?wRCV-w5;_mzg!ie6TXq8Y#XL&GHd0o_i`Sl`d^*N$ONw6z+(*&BuU;+
zJ=3?9bTaUL&z^ex%o%_7csH-D#0-mi)GNd7bG`H3!oc)yMg1HCU^a8vDH=95toe%n
ze{^5-TTgXTr62l$jm&&(!eQ&MtHRz~)Y-W=2oPg4y5+iQ0327r?ciL7yQzHMfuSM2
z_!bmGMIfpH6^J7w76$?>Vn{?}kShRWNU>)1vUbcN62sDZ?LO^9(%TAs9i`@XJ3G0N
z#x|)Bke}Xc0ss(-i~(hC(A~hopE`$Lf0J2)qCZw;gmo9#$16wkf4@H~X+Q9`{OTqD
z7ADDQN$LAE1W-olUlsV)Cx8A3V43_^WT{yE*RcqAgt~oCW$+m$RZZJXX%pm$G;00s
zyI(tQvyQI1VTTa!f9eVjUS{R>++iY=rKUhV^^#J<P!Gv@4kA{lzof7}6^q|=e^DC0
zJ+yVrvVt?mv0s(4#nZ=lfw%lwGUA_oU)q>og59=s@3ps(myJNCkVxb!AA*V1BKqC;
zQKLmYLql<<-N3F*K^WO*0vx~c$2%tHpT%9&SAe$m4Ez#`Q^VGK#rZ{Aj??5csS>=(
zh|3TCtWoAmY6_4-byOJSd;S@Zf5HLC$Xw08h}=+s=PyH2q4OR3Z!x+CP{u%^t^eX^
zu=wv1ohDM#3r{E?wq<oEB!pUD?Aa+PAfqAv?|fMB0$3#@06|%a`+gVicUjWsF;fu8
z=ndL~U;b_bjI-h+{0EUnI=fS*s%aLm&ggsLQL85;WR1z5BEJj+Y=OSKe->@grP_-Z
zo%`?OO1=7Ox(Bcy1W<2P_5D!$%#j5|-kY29rRjZwJp1}*IuJr32NWQPLJVSwkPw6z
zwi6(TLJ3M!2tp8pN)JQd0SH16gNhJDAqyosDBYJV=>(Dp06+j-0iY5GEuQXN?6w>(
zmkVP@^3;7zJZ_EOJ@@wbe-^ef<n%D_34Ky|44xtF*aYSP7CjmqUM<K_74zx9kn$O_
zbAMByPM6FBr$-WtrmKM9fAo0;sCbiK0!40n8DxWiA6fE1bN)&fbeJpa@Xnj3r~_Tm
z$sli`E%^{ccEGMd<B`1#mynZ(=W7#1AgmDs(Uc_q(CrVNP&B=Qf4hN%P%8jA8c;?6
zUo((pokgL**|=F@2yAEA&R76=CXRN7MwXV5?4>$vjbWe=1eyr%XPG+~yZr2Qy|iW1
z7OmJye}4TvB^f-$>ibQG-e;>y-Hk55yMSvnd`8&Y8y=7h4w~m<q~<qSnmR;~ATjgx
z(%o=_5iuy+rF;OCf1gp-xpd3LCZqQvlxa#5z1ew>!GwVVA|fIr^G&V1hS*yKC(Vg8
zeI~LxY*AaYxH;+_z4hvkidxx=MyH7tx{%FM1SdWkdC$K`Fla8cMn2Sxfe`{BtzSI>
zICOh7bE?lILIeuF1foGI377MKnqdt*H0{6cSpX1@;t3LVe+0+|3|tI}Xwe}OIihx>
z&|%e28QTJxGD#Kyt4dTwUgBV@Fu;PmOgzw-{DLVZGc05gzta*78qk!N9azkvg>!I>
zR!U)3d2lOtYi2?$9Mrgq9p<!}5d|a%BSmr|4kURTEwapL4T^Hc=U>zLKLg5YxA=O|
zw*EiIGscuKfBIz_>BmENPOa={tD74SRh%Z#hjDEP%AW42W2$DyS3O%RL_zIaWTqZ=
zE|paoy<49YrzAJ!e1`h2%;RrP7m>*e3;YH*Za%@ImyR|}J0t93E_CVS=A8)9iy%=1
zJ{)hF_vD%K{%!W7m<Ptj<WCUGA2vv}ul(Lu%Pq@mf7gXr_Q%P;JXyH_Bv3$I`1vov
zUJ@^Cn^x{RRY$C-%=_{EM+fJ<#=bi)M}wAACC+mJb7u?FrCj=x7g4(SIC}<!9KJ|~
zhVc8E_k>HsJYmbnM}S!9>J!JEkF<!KR0JoHs9n!1m_>?LTyE?Rw|drAN$^V5(}$h5
z3}0j9e+RE~Rh!m{j7^g+78gLd`*@?ZR%{Q?@>!CIDgDdU33H!A!=PmeQ0&E|#pTHT
zntF<~X^fhZEWsoy(%%ixbChTh2SOugjz~b7X*zgNLzYw8g_4$8lr^)7^PCM1o7P4a
zg3r)+w;tMEDTbanf?`J}Pgg{1)HWog$Ijgvf0j2JrEejQ^~Y_sB3ltIo|cOfWMM0m
zwcEQ&OK<JJzfC*eEPA_=_eM-!oFsdNf!Y*I!i16TSY*<GApo5i*|kW)4)VqtL4tOH
zs)ZkSLYmvFRI=(!Y!;Q8r@3zd7~8+?mAhTC@fw}>nd;CiUk2r%soXO82~!&w=S8WV
zf4g-zK7H=6hUlS64@pbBx}!$UynmHkG;NDw_J%enU$1bQP^wICEv*Dm(PJf0eg@;1
zHGD>`rRBROiA!kdA<IyhraCpKoY|u$CulLn285>9igkxvbb4;=3N+G(3mxD4{KQ<w
zLVJSt<_*35mpMZ8H!UTq%`@DUa<vk~e~7T7-<E-UO&PP5WEfty=%x}>VQDsd`~PzK
zstuP@XAh~s)o}mR^dZcyBpy``Bas4G1r~dzc~>;l+i1gdxAaZ!MN_Ljt8H9vf{l#f
zqY7}0=MH1BROJsv;BfwZ-Ntv`m#}DT7oB48*a{ea7qfIQMA)ze5Ac}%40a5Qe+31L
zARfI5=>F=E)G!ILAq`OsEQ*A}pjAl#a8}qUA01&KDv1;a)ZeG~yj&^sKGwtaxPEHK
zn!TM-YK!f2?#Og`s>y{A07=30sPa<sB0_7A0+0iQ<6h_{=_pX!cql0m@qY`z=Jd^@
ztE;H-gWvvJ0w|<hLBEz5WG|4Kf4(|;e!{ExZ|Xu0?nK2P&>=|;(E&YQhPQtuG)g`K
zs_txZ(66Iy_xE(Ru19e~Mu0s8G0G(v>cDaf`VA%Y%7$BxH0R7wuGP{s4O|l6?M)f=
z&yU1(9MsteTAY}ok!s#t{qxtzEp=nDaKgNL_-y1nO9!^%7gys@4-Ky`f0p7TYjX!j
z4a*=?!up{3>s;0#H-2!GuCo|@t9X)uT8z?O{c#Qb0u2hdz|V|1AGOjEkVmEU%I&^#
zB3Y79=Z$FYu;BOcKiiNX%Blj<KT2|m!Jmkj(K#FtcFaaM831T6;OKB&w!S-`TYGJx
z%lOU)Uq$58GyK=W_((>Nf0^)kgt3caL9vWW7`77>q^OJDD)oA*qc@p}y<H^=_q<;9
ze_QH&kB!6Ie~aIL_w@c{g;<hOy(;etH@Scj5gIWEBLne(pal{H&V!4Xwd4@!xogp*
z=&FSFZCW<wS+=?2oqN1iNTxi?!MYg5dsja(Sy5AFn4V7{j(giMf7#1NO497b4F8eA
z5Gz5#h5m3Uz4BEof_X*4dvouQd0S*)UocQJ_iFbr6ZDJXZ(k@Cewcs~AcPN@_4M=G
z3MuR3rILZC&{@~Z?oka#&zD5+x;9Z?)V~x=hfR*&M|SwuRq*yb4CiA%LUT4)`P`>K
zmqpK|05p&t0|E3`e`J?LFepov@2=f!W5$l+P%*ulMU1il()4&Gp02@SddkvYw^oI0
zIb1x9i`{0*TGwdCV`Cd{=D`eYjkelBnbYg~3w%46|0=+&GM;0%)AN5BCm+k#e!h1W
z;I!3OE)HIt$82r3+iV_k=XYGrKW(Yhy8u;zO#Umt*n!XnfABc!aeJ9$1CrUpMD%V?
z#^34Lhs@p=5qbH*2qHmAAcSu|U0Jyo0>TWA;81obsp6jCV`=zpjHWry1t`w(X3wd+
z_T%my=5j#K)IfiyU?qH~r|04H%PU)jlQ8QibTF)#L6tiVDl4;EB?ZTD^TWLtBd_i<
zyeRvg|0pN2e`%%RX?U<#98L=#Z;ix;_~<xcHsFv{N<=Zyd-lw_qD`|Pj|1UC&Ry9w
z(daIHPq{z%d0W2k>y`(5jcnT9o=4gx`JlVVThwxiBfTb(yAp>g_C69NJ`zy<r;>=u
z$Qk_6hG}oO8^tM=R99qtY<bMcgKsaWRaAcFIoN8(f6X~HFN6ZLp-KVUM#faAD&<^(
zxb6@`y$HCG-Hj*>(ZHAm)#lH|YTm$|4_{z${R08)@l4>81@y^s5;>GxI;HQ4Y2fqE
z*)u5!fb@hpcEA1m5Aa_N#}@jRb2atL!I2SncRtnFv3Tt1`sdu#<ssMZz2c;>cGxgT
z+4~-`e@X8d2C97s>|HV-TFQm|OA%BxJY&_BaYvib+4EFa>YIu=_@i^Xq%V)?&0Y$t
zP3S&shvYp}W8yMz<fKOwmHy|pRthH35g>vGk|V<)k}f1jk2E8=U-roFhm#63X?b&3
zyDN(Vj-rw!YI!-+5(ECrLQ{~vm%<iXg=R}Fe@RSAQc$Cmg1?++AP$VJ`2@c9R1^VE
zaz3u4=<u|^w{#PnUr@ZHRAv6dEHyQKz}z8FDnW)_=;j-K^4T*3bQ&fyzF)Zcfe~Z4
zRJaHP0&QVE3P1zTFg+R`6_Ah#*0MrFyBJ6S5to}Og2i#Znnl>8AQ1auLw5z3XM(1c
zf2hv!FkKk5(<A)L2<37@`q6kNy!&s+|MK6rc>hbylc7a~6hAk>u;QR(L{*5>1OrK}
zPpA4mC4O^#^!bB7^-k4%@#Lcd|MXh9=pWG%v$SajR3H3a+Frl-_?T*JTG!p=`byKy
zT@NKWT94$9V@I=NY5Iz%UcBD}d-JA;e~e$rJqQCbpwXXjxBnhtt`Xp_F^zsf4=Eo&
zTcQi^Ow#{fFH7C^qJaZ?eIAM)UqiMn%f6on1(3%5uf+7$d=BH<eWfd!^`5rRXs7$N
zG7y9ss3j>%SqLf`&Gpse8fLX`8siw9b(`s}RcowYT<fgoGktY!y>&?S2&hnce}xC4
zp+*oS_;@*RrO1S|*yv^59A#sy9dg=4Bm|8_0S@WhC+v=YNj~=qz4kU$K5g)*h<%{=
z8@&7rx%KxVrsh2rWO}{eC<21|Lrgid|BJXdt9)hA2pk(8BB1u1p$=eygn~Sk5I*KC
zGHHC1Nq`bUNRoz?hAg0mS>tiBe^pg<D->9Wt0zK)?)+{-Z*VVU)G_;bIK;Tl#t@PV
zTfM*Vt96Scwqb|_Blw)8A+MZ^V6?Zu5Re28(C}P20NPkkbJLn#P6sW8Ffc%#ma7+O
zw8q<GZHtPF7{GgYI*y9XmUYq3$w$xT;zQI4Yb@f?^mCzM*A1p0LktWyf0syu_oER9
zOV6yWDn7t133-%|AUqs>8~66^KaOlGf7d}EZQO;h<zjg*1~X3nC-9vPX`f4N@})mr
z$H&RsSo^a&2lAa3JPB8A^)W-8-<vY3D3+$?1iqu8y+|328C`}xZ%ds@4f;Y_rq~D&
z+CYK=HT-BGp3C`FQc7DUf4mENso>B(bWp*1#Ox6iMi@fwi9iw&6f+cj3qu2jHrvE`
z;O}$1Xv)+|o=!rQ?iAoS{{2*b-*gK@w3lh_L>ulYm~8Ti>-YV5K7vq#5b;<tues3o
z5E6h%&we_7W*>&Y&HXnV)2@>77nGdbsPiKxF)+pZv9Tj6DPMiEe_e}iLa*TKDGgIv
zn5-fPUD9DTDCIGf8c{YC`^nOrMxiwU3MsE`1Cf`7h8u6)sRqHLxWFutNr?z3wQ;oQ
zN8dP%A%_%ilkI{F1X+T*Gq3ywkac(oK4R6Ep#gxr<^q|wIdumx#Y}9%K%dVl*s9@(
zvKYgO1=CNtLaXtZe=La+HHHLO7k%l5TTEFojIQ}+T~umQ4t|RKnp`8qrOx$3s4yvK
z052nPbvUDMh<G3i0fmHgE#i_G-hZn{ua#&3iLb7|-S1KsKcR+-+&!17RP=_dH9nO~
zQJw-oDGPr)c}aa**uoQ{TxKbkxx`6th(jCno8wWF>s0SEfA90~e#Hx`(No|ihxP6o
zpGFf#=%G?{@B6>U{T^jD{OEp!qu>Mg=01LX|8Y(XSMo3XimR@ELVp!jr|jT5MuBtB
zP}kMLAQCJvV@z$2Fn}6jA)~t9b}~5U{CdAz<h+N4Z|LZ8`QLZcZ2ljdZT!CQE_Shl
zC^F931WG<Df7V<@J^xF}X+p<!!_!%m84G?(PMio1DL`n7L0qf%+taOVjY)Bi)F@Vv
zSK&!Hx+rmH1PFHxE0~>uj0*EMX^Xg0WrA9_Kxz9(FH*bEAr19K#o*v`)hggHnsI8B
zMUp_BK57q0o({^@hP-?&>zF1?gNMkI&^9qBF$GL{f3QkCD8K25H}-n&rSr=q&u}RG
zTq1P`aNp?x-u<SA)d&Rll5Ly(Zqu(FYoFgIIJc}kME`9wzU4P7Yik^?{bzu=x(o2)
zH{kajrzYxRNA7dCw6tBX{M&xxKLX?OsO5H<KS(}BKR>4udwx{61`NoI%*@JC>|cf1
zWlMmYe{7}U7IA8}(0J{Obnx)X*)OnS-CcTd5YI{hRh9dEafHGJ0T_sFsk1^%U<e3>
z3rUv+4K6N*D1F+)Kfp!d51WOLj4KM%smRzDlqX<5jNsW-+$3KP=CrqQT-2Zt{RIin
zT*3jV0)$+}VOys7Cy*U1!)by<f+Nu>b#CPdf7Wu+=6@jpbu`Q6%!H;ughsV5!Z_#X
zrK~7ZpqTn`L0CzhwV(U1$W=;in1?J1G&HeqWfV8O<2Tv#at@pfJEYHdfDDj8B#G3Z
z><QDR)|tvU74z|V^r(C9^LxIU^?VBa)D=0(hzn;HgUTnKA_1o@t`A7b^I3tu<#Z{i
ze|C6l9*H&?Ix04LO{y@PExxu0!Bak5d(^k*e4mKlm}BG1V@s3s6eBh}@ZHeAk8&16
zE50YzMcThRKjddJbC99nWcYcglI!@AzI=zuzeU!$kjhMv#`Q#=GEio{7CC7V=Y!u!
zOmCwk#ihb4=SBA<{NcmU^<L7HNz%pye<vf*Re1DGh?o=<RFCzb3=MIQgB~Z8H~yZi
zN*Kuv1sf~QNEFQZ0ux?`v}SB9vD^?$c`bcKkdIgeK!Tt?K*$38=L`&%+=@Qu)3;tr
z@DXpf_lA2)qme*k*&<`P7+jb$a;|0@?pztQod!)IMLQhf0HDL1Aor>+QtFmif8wnE
zg}2IxRb!H?XC#0W6z)@{?GSI!SuRs)KqSb=;}Fhklu%e#QUYdO8H3@H2w8}hwmw+#
zNGULh#n7Xnm3<joc!8!VQl&XE1g{xIVa){SBCDJ(3c^*WpcO@~SBfYi!0_0ndu>6X
zO?1m};vC^joi8s|qbQ$VNFiB7f2w%BGdz7J!Xf39z=3L=(Jf%6XC|M++$YGe`x<<D
z6Ohf*XCn=%M475;8&`*+j|Vc*F(jZ|PiSzP(Rs=f>6@*c+{+BnH)x{rB7kb}J_LrF
zm)5V-Ey3LiKh(5pTx@94S&6**(aF6VmOVJmKb0ZWIe(BShrka1b68XGe?AHEC3ek<
zzD3&~6XMhFC^TDbfY^|m1ES|3HFM`o1py>dcqxTQOfg_WuqTK@5~MvOk(G-VB34OM
zWFb{VRSJ+rLITJNt5H@Jf`prrfwVR@o8M6ha#VVGa{sIB*e1EwBVAWps`J=?DnAF7
z_1w;PwS=kW=ZN<Ubf8$se;N&b=u!lk!o!C@f*wC)BQ#m*I_(qN5MBObV@&30<my!F
zI`|_z^8>GPw96<wcZ72i5Q&(H;?8MR0$>f>!sW@+11IrP3Ig`5Y23}j(D<m8|Kwr`
zeeu$0c4+?pl*Cf){i)2^%ExC3sEgaF(fvd_ry)f1sqkHip-x1pf2$H!FrCwS>N87`
zPiBOo#?g7%++TXk9?oA2r2X^lpcqfCP5G}s8AU!=NHIAtDMchOi_jG&4SNN{RdOdc
z<i+?uB)_};e+X1x8(UbcJpk?QN)1kDC}U{KS8l_7+qRD(KsxcOaw`GV53c0+nD?hx
zr3V4;ST`d%v%;*Gf8N*(;J2x;I!^RL5HGk`jK%t6D1rzf0_KuOq=`}~Qb{C|oK`TZ
zA|`Q*;&C%GGmJcA7{uckc*Ze_$HMvV;dt@FHbh=X_tH8c0G(Xq65NNPgW>oiOt#8S
z&_6dwE>%kH#;kXTd76?dX+5}Kt+YgK%ZD9bW5D}KkVuvNe_4-?zk_A#=_WeyyW^v$
zcHcbq0cw6NGmyQOst{fv!Jwq;=N@?<HFYD6=rq+=-@&@KS{B~JwW=bG|6bm?N(3#=
zz9E`y0ZK`6oM#!i<1KmJCpCx0B#g{juK@Kcm8zjGtKgzI-DdYHX-?z;dLULF%n)w;
z_GVDLZVXEfe^r6N?LJ(D7gz@8QHPs{O(-JPtCyG-_;+t+P$aW#OrY094UM+jrU-9E
z@mVL(zwdJPFW9(sG*5Kab-X@)?k>X`jB^OX1S&N++b^e2w@cSJv73TgOAa9jcy!X`
zK<AMxJyWZ3pMjgt%OseyUT^;txQUVpBppL5M1VVMe?KWY*p2r5>CE%Vhj3Obvva0|
zuP;vQSNUX^s$!9ovUR<!avS?6Mwn$52x<);n*FRvOb(#BG<7H(i+0Cls1Z@fJbhoI
z=lp#G`RsUK2%Uup+-QcLq@at6O20#rn}gC6LZp`O%S_=s^*%cd6^{*Mje+x<SSkE{
zB$^%Se=Wa=EA@wV97y}`lk*HDxGOmhIVd~x{E0|SZ_(41{sd_?rADdf`fV>)S~}Er
z4%$t+ZYaePVXx-$Dn(5BKRUJBnB;Q3k|mO}qOP0eH_+K!bG}#;J??A+kd$dOLl*+?
zg`*yVz*w>ZfmBN@hRRj@@<$rVFi<L=({^Kje;B%~8fe5PPv|%Amn6FpuMT_nwLK%@
zwn%QEDNyd4`HLWV2i%uE{Zr-Y&B!M=CL(W!n26}m3p1#XPMi{7Ffjr-i-x5}-%SdI
z9~dJ7eMG0UWO58z>I)J%hD&flQn5r*<i`Tq+_y$3k!D^@V-z-!$i5|zkfhNTikq(0
zf5dr!HS1|GC#z<G(HOGZZk{ym>$q=Ld+^}k)orrlGv`?vlEuP<N>>Qxwrmrj61O=J
zZWGX8eKt>Ks++<T@n&ws#*207P6siTA~`nPJ*(y78&Pi(RYF?kC=QVZn@kr1Az_+P
z2SY&8QQv4;+P$*D8XyQZx8-WM9h0CNf4n|Q8@U2+@AI;>aoZ{<fkgPG8*R4O*zS0I
zmOSGIDIOP1!<@mGKNf~~o_aNNd3z82JNGKO1!?1on!TM^3l1lEn$)opmb)oWTgleD
zAnIT<@xrF1VR3BqWzxqpo7hXVmMiMZ-D_DrPYBgPim@pe@~tPIi$nO0ePq2=e>orB
zDTPLTT3n_4@fGKboJv~EKA)rA+Pa*J#`oV%HX~^^)nYULEmy)>>VA4hYO_%EJxJ~G
z__Z#eHV?GCHg>h~(M(_Lh6YjxRVafbgVEqd5z)qyH}Rnp?svQI)G~lzK@y!XNd{Vg
zEyq4<XR0czl3~)rpxd(KL$|D8f83>7bCrvm$}o!jwVQOyA;7UAsnc_}EvGn;-xC^H
zv|-?PvZj1<$nqL}56*my_^^m!?jOfs*oMGtNxxI#^xsx!_H0|`2pdR0BSMq%U$aT5
znm^0O_t&PFfvi}2?}XAxIKl%4L_o_}1e{?c0-&H6fFvM$gpxx7N!azif8PN&f3w}|
z?4AHd%c)!SdCJMnFQ>uR{r8`C+r+=r*FR&(Ie_fuIOrxWr0<`U1Y34l6voyGHD_Zv
zA}3_Q#jp9&Ea-cyllnf_1XltMx03^+g+ON!*$aR_30)Q;7XQwB7hHVJJSQx<doEIe
z%LY~v#-r*Ih99pc^DLa<e>s%dk@7zm8UlqkPRJ~Cl%K-IyIyZ|9A1YAqN-G~uk&Ly
z2Q`@q{(!KlGJMB4zR!c_uLf!6v;0!_KEG|Ay;?50?y*OJzta}Fb(`qg)ZcD9hIQc*
z6)2p07EPQ>vo43a!+};0M}vQfl%zoL$cWw=Wnwx%cAL`KVt2<^f0HTkrg5K0p*}H!
zCGQJ>T!KRHl5Uoi$Hmdz{MAwOw&m#2DztM>bf)&6G$%rfLtuh-+x(`tjH+c3d{o@&
zxENUK;JYXoMwU`5AZZ1Q%bZEzic>*Kbog0(P{%RcgVQ+@9*X&CeZ*_x0IEj_`NMwr
zN$|Hou>gIykviwKe~LmhxeS@Wr3XVQa7T-@MMH95qN-@LQ9~mQyyN5}8r_$_jCb(&
zioc9Y^=kbjXgI@<)_XX%8uHIri2XgoKBJ-0zE9V%)qJ9NL>fcFvsKGMfzPfkE7&BO
z=3L_A%<}#2{heK}-OV+|hTww%2lthi)Ih?)mnjEU^ddwXf8PP%qWdk7CGvj-VMR05
zGWIT`H+adu2Oa748fqmG8juob@?UF<3v2%Gy_04hAHE_5=l+${eJ$6aY>jJL*0)X0
z{a*mYAp}5#L`J&nuDRD#FMHozbeYovt6S$7&U3D)GTy8mb%Y@ZLC}GTAqYYcgdpfZ
z#p(w1w)TAzf09BVMIew704kA4DHMte7AO!=NTd`L2_UcuASk3%WKdEp7A#UiMOX?d
zgouEuDw0JMSfp79D6kX-B7%yl3lvdgkb<mGRZ=V!RD!@2WKdB>1%NDovH<{4QDCrG
zC<;O-qLEZsC@B?WQYi%mP*MvP3l&rr0>zLBL0}67e^~{R3PDv=f{G}x6ct5LRw~7c
zu|QB#3k8v6P*|X(ilT&&0YP92MUh1TMUhlhP!&~F6;(x5Spa|thSfiR#Oq<^we>XL
zzuf7iNakF-V70fm+?ao6=jf-QD00NqmvW>JD8A}x-668I2>8Efvi);!{gzJuoPSL)
zOxwR#fB19%&UwdA_~0O&Nr}JCccq)0(pSb*>`(PjC$s;>Ibz<mjOfo<-u4T^j?Zyw
zb#z>t!MbQE5R5Z<?l)|ng5JYnvfAD4elG#i<ocQ-LvsGuBsaAuvz*xe<U<p!OWM=P
zUTtWDFAIe`fF@3IprmY0<K4;cW|le2^GQ&se=0~IxPky9#t<+(t{$hOk6P*Hj%@=?
z37sEB(MLs|l_;m9=vdnuZ=>gEOQWR_kW^%HmxEXD`NWVQJ7D~KT4n|#d1gnl*vQ+u
zKDaFF9R(D3nH#?U4=DAvFnm2VGQ!~O>7x}Z<hFZF{$a@UCWV9sl~HW4W?b3fQ-NR%
ze;gUp$RH9ctIr84z{9bJW>eO-F}B+i=&0Y>y<by%2L|3rakkTKw%wi$N+`qC+q!-}
zW*4Mv&C9}fVYb2hRD6o~`C^E2H<FEH&R3)W^<2!i`vT-8RSwf0J3e0nox#MtsH+nR
z2Om}G=U#sYfm;~cZH=Xjf2tHIG_L}?f6&5SUS@zY6)nb6TW$DDHvU9gg!G}OiY#-M
zU4dwzP$<<Tv3v;&k7s=f;Z=~?!llZx-1<yc?O&ag=-pbf#XPIG#3f1cbxA43(vUrL
zNFBCM7I*)SIda4;B<7q$4jw3da?W#fd0%(7qwIRxn_C}M;Qn%cf*oCAo_ubTe+G(*
z_c=dBLbYmB7ctm|K>eC&T*=I<v^m8`bZV5eOo$6M{o_t`a7CA!dGP!u84UKl<ugAw
zBQh`YOlzp)^y{8`%$8}YDzEVOPQ9g~)e&G^P*<jF7>~zCG`$3Sue_Jr72?vHQ{myi
z{47%oFWZNspaM)Vf8yZs5mB{df6ok$<QTSJ{CI@IpVEes$t+m$Wsb8dHeP?}Jv7HH
zg?l{psk5Ee%@{u+CbeF|&g|~pemX>T<&FucAdH6;Vr4a)b6ILq)iOKFcQjMJi<>3K
z;%I%@QI;>U>D|Y<+~RU}`?+ycqPJb#2}&k;QQLx)j-0k>Lo}#~Kl>@fe-$6TR1wG)
zsiVwa0R<YT7>H($TEAtZPzDABgA*r9J5NS7h`L4zyeTfjP%cy%#&YDIK+}lH`#)5I
zYyY9en%T_Q1;=veW^%)s9%Z{grU;&P{`I_lE3Z}UuUatIn`d66Y!g*530T95c<Y8+
zgN{(Qf{x?8(k-P(Ptf;Bf5LR5IC5XUlth_`XmYYdwyUAg802Zb>Br3#RI3&-!^1%+
zWJnARSF~M4w6P5WH6w|PlF$~(ZeXw3ZS>f<A`VQ%D&A;<;RGj&0#I}^un5c27EEN%
zmT4{`l1UD@qy_2aPU%vu<kygywJctG`MUk#)W_0;b!H-@yU6oXf5T$U{!9D|`k0uK
zWIZb1?&E8+=<pqMXh}Xi&`MD=(Okn8enasG9MaJ*eYuJbUOx(VE7-hyxON1`L8q(L
zCz|!ETV^j4Nu~ssb&BQ#dF30c+RXOLAODwDNO#k+XIwwY2T1Hu2L6i<W%(~j-OWLG
z9kut*-qOV2G*W39e?6j;koLg0z50U%7yE-{Clz=4r}Py!#&cqLlz}gOr6ElnJQr#^
z4RZ(xC;2E<2Iuf*j2>k+(e`m5xkr1JHqY*7tQVj7#t>QCS~cvq9X7fB)&((Qt*SC$
zyT~&A=fIq&9HC0n?P#4!sr9QKl}=dh_i;lhg%d@uzKiRUfAv{uQme#+L*(#$dY47u
zu*%Y1syv)0ED5FW-zG~gmpjMjYrI1Rur<<D<5ZS=yz5x#xtG>&l@^bFO$0!Bqx1zJ
z>uBHTU&!dqf`>zxCJ-X?eo~bCwKBLL)43F@P|p1+R&)N8Epq$V?=s*0%HshpdHQt)
zO)hfLR*fsye_G1bZRV=Asu!WGqk~kI1$)9q(1f^Pho75ff_Q5Th25;~-7rv`yDQ-=
z{AF$W3cu)BF_jt}3$)LyT1tEIa+7@t7>F9UB!I6>Xx}{$K7x$ii}&_1_^pePT)g#&
zMiQ2`=w3&QL+(!@qLhMBdikY9%h|t8ldS4Y{J3*?f12Mlv8TsDEpq=3MCZ|4YS@BO
zG^73i8Q%IMA{YRVKybfReldL~^yDVe!uR%B*;u1r&0oWx-{0a<I`01&P&Y*qZY1w}
zK7QZb#fFsLnW0pGvU#DBu}M8T5Gx1>zz>L!`j2Z*<47Oq<`;2>#IaGd2#f+ELJ&|Y
z1Si7=PDW_3-b!I1QUb_N=kqWDCIGYAD~RVh2Q=h(_a<R|j1TzoKci#R*}va(TtAc0
zpR@L2_Fom7G3C+Jort0F>}z9NC#B0);cOEIOY0QamtPwN6&Nc`?35N7GN`Jhu&h*i
zFrw9A`zkO{_PLjg8wDhPx<dlR7GWr(Dish&gBA|+fC+#=Km-U!2My}*TU;)f{Z`zl
z9v%r+k@J&C^zq6QfVpOtCdoP#6jRWNRl#S=aYaH~xty{8k9<<NPrRy?Yq-LT6vu;^
zk1tW2Ve3&<*7J!9B@p3tOPfc@?vTQ-Sq>7;CH|S3z~NB}Sf0y&R=&+|3wUkTY;YFZ
z3T^M7-+Y-rc(<T-B118qj;iy%sFyl>hS00wk@9+XKrD$l2%Kf0{M@fI?yO(4>ixP@
z0|o#5*XhA-XEsCEw>xat9mvaz3WcdOLRW@k$<tZr_k*RBK|=w-#8k0k=avr1n&tDP
zRO435wzW097cpLcFi1y#+tpa<KEm}Mps(Zn-G!}SJz4ml(EePn<$ojju4Y`%<v#1|
zs;J`-;~2&pnK)}um94EJQ(DwDt!q@)wGC@p+;_ivjkiC;>X))xt1^!`h?k>|Xaxj8
z`<oU68sIz9Mz|P(02ecNiMzu8%=t4KC2XK^FjOEP+Y<19bs2<;fIi05dQ4hSDMhVt
z_A%PUY}nN`sBWS99N9#F#Q-Z`tGjrS=m2^J+yf=4j@xIQzsk3=@(-!to7Ql65R-?&
zk-)VA;IQK?U&3ps1#L7PonIfQt0wwby4#5>DSZ1FWyzX+XiI64gL-{qZMNHT(1|3k
zP_<gDYUVzF$L~dA={hg5IkWD5I~{jZ6l$rIhT9$lL({lB81LmDNvw==>J6va4+cPf
zEjNRaqo4DwSJ1ZG7~6kw!Uf4)qglW(@T%9g+ikYxqDx!3)0TOg1{Nkq4>cmGY;~SG
z#_Ja*s@cZk0WB%A2^|}65+H51(AvXj37N-vjy>y3l16k0WODSo$`$t{ky-*&@(@1m
zFW_w6PgSWW3dsOGf{6b)r8`p#l1Wtp&3;qjBHGb67_7-_bTucRN*`q}R!^_xzE{`c
zZobu*b{+*Re{5enRX#gAn;~5b$9=YSAA^*BH+&nG-3Bo0<#qliiDhjj{C>Bd#VW(~
zTWZ!9fskRK?`ZxHDPs>g@W>a_b@$h*&1Eq~V92tr{?i7YEq;$wr#+r8@2xrw61WGd
zGylzRO`)hl^%g!E2Bv`gsUkrbg2_C>aQ;v6D5t34e}H9!+CGb<(O6>7CS;$>3dpL-
zBk#pLbr@V@$%rcH&=xcHOQlfKPz;*MjR<i+?=9Jke_)1-DAp4RrKS=BGX(~uVvB!T
zXqHd=JRNeLoNQVHa7Ywa|H4_MCQN1^<TC}%wytYl#&mQw1X38HD{S?Zj3D>(v5OFE
zAjV30e_b{4U!;U?T8Z{Iy8K<rTLy`E+p`l(#%?K&r>}Yob;dJ=>s+~cC_y0-XAN2e
zDUhy^NrE5}jtcMI&8Z9Pl$&M5w{_^qn8jwBgdjdMYeF1ziV_Nw2T8#qD8wU+X1Yuc
zIK0x5$5e8wp?VsWNtl|i%O#}RS8?m$VK(u2fAhTe*@jfpMz<{VW7(cpk?h~Mla%q!
zHq}c8Ijb;aODoG2Sx=Q}kr>!aM@{AIG&C`Lt-(mzBA7JHtXHru-dQMa<AgktQ!m|e
z85$;)9KzJ<I*y$^O;xnrO=@_H32g8X{;a04Jxz+@@R=;NE>xJDhgMQxF1I;I4)I=r
ze+%flEVU>$Us{2>mtGw(CSRs37N%eAGsLNLT2!$&&&E!fNnoYs7v9Cx5XC>J?w1`I
zk4wfWRoSn8)#dPSdP?y4KgB9@)iivW31prVO7dA&z>e(Gmu9BpRgSCuut9C_$S*7<
zTmIz;xI>SgA@O1_8UE>ol@_k^e9HZKe@Ra_YZ5G(56qP+JqiUZ(VcWGLwuBJl$GQ>
z9yK$B<2J+8U%Z@s7rTDaGHELF70of$ew1kH9akZczJm0H9c;qd#i(w0ufj+OSY;GW
zynCfZy&fZzOWhzVBDUW`ei)XFdOq)Qul3GPeJPdBfYrN@Pwh>PA@!ukAkIzRe?z&(
z8`u5+yW#hapOK-#2`42Y!c>(~0)m1hI+Vf+7(?veZon``K{QH4iU>g|Wf%f5k_ZXr
z*(ZL&OpFIt-tjXvqy;pzV19k*4uX&ji2^7Q0AK=upbDT6Pys?hBw-+lpoKyRFp)?i
z1wbKLBv?Qw%EAjH5K<5oKulsoe@q(!+d<TM9Zz926gpUaKh6I<&t>{IU4M}AKcCL2
z0M9My8r{v-xbjneT<)`;Z7)XZpU^M>o3FE4ex7cnTF|tWo9?~1%Fk1&=oPHjUdQWw
zIvmGf&tNnDQ4Ifvtfltf_b|Tntec_H-Fwg?0cD_ir!t4x`G?~jDVP^{f0n>`=nNmJ
zJo5fFef_BLCDrb7=YNm^xHmuJpN{DA?}{S(2Q0yjlC;T9HNqeR4e%o!^9gta(sDHv
zxl_Px3FZXW0%wFL8hvvcO{iZtQ^EP-4_{Yl)!v{0SYV6MGDPQlZ@6lkA1SX7sFK1I
z36vj^D10P=DU30sc&MgZf9i8U_Zki>sGo+4C~ZS*Cx`6FrgJJH{Rud(1yE%L>gx;Z
zq*Cn;$$Muj(3chwUkkH(#_X(xDR5dle$O;0kr6~e6cI5BhMg>Q{^=ePJG4kW?4~7*
zr~+b91u007+ceWnGbUunkWBQw@0L_FOi)B)gR;(Xo*Xa2{2hl1f2UPW+nxmx!+s9R
z{5WvmdahM+NV>-EyR5r%?37n_?c29%yH(jD?k_O$00aXU+kb1K=<}MLKA7;j0su4i
z<q01_TL^K-`g%7hZ)$K%B%EYhW9{hG<z?cvQzSOm5B9{Eb#Vo+5>nYX<6%SH|N2Mu
z&N^>X9`gc)#(Ad5e;6+#`~d;#=!sX)6Y~e>AocGMaipU3WP>}X48{0B;MmP~JWcKi
zyYP4rh8^&4R0~p}E~?_mlC?MxqQ1G>8xYNdV1wu^1Dv#_)dKVpWa(XXZ1fNbMO5K*
zYFohM6el%{;>%f>T-6(fo=%CC>Xsg?gaTOrNCc@N00ap%e<Z2t7)r$mW-ygiRb)T|
zpkxVEkW~bT3P9^t+P2zTZM1=?YWifxD_d<;kEWsNQU=BnWmvKUA_tD!K*16aSruR&
znGsb`fLR$K6+t2qA`>V|z&$EMs$wK2fiw&o1=TZy((pc3l)?qoC2568X|v%XDb@!Y
zZhuq=MTClle*oBIAgLya0U(G1$bdjK079^_z!I?zg;g~1Jhz8cpHkZx+jkO409Fzd
zg)8{!XIjYteW1YvkOyz+wAf#&$KiZS=%ddxBIc`;mv_oSSjJm~BG1B^H84L!p$YRY
zZ?8@)W?P)o-}$U**-4S1%-7TT1iz4A?DUB(lR{c>e`??v0fmzG)Y1q|WrC#=%k8}V
zS~h^I5W12{855rBSo!kbQ?&EYmS+=fr^n_nX{za}x!=m`@)|mN=B0BY&Ls(yNRXrj
zm2Rn&wx9~&YzJsKJG>+mtS0X}x~)C$CO2t<Qc8U`^Ncc0+UsW<n3l!w!My|n{m;g#
z?b`i_fBaW{rT)j;`3`Tt55AgeCP6?Wc0S<7d~&Bz&@AZFV<$DpFzIc6EgDb>s5)x3
z9XLpOzj=2dB0Xu=H|0P3;0den+u)5U^mNr-?C~WH_5}rGi<c|#d*h5Q>h>f$laWA~
zMbXth;D}GCkg$XJwoS7dd?BzpC<B=ZWNHx?f9d?<7PEX;@gI81K56LorDRZpPKtA-
zL^{wUzRKV33r4xDg!XcI!jp8WKqZ$PQ2ONa%7+%sVJf){@oNn=bJ3b&(~Pp2X(7XG
z!sXK!9o$p^C|^;&Y^lv4rD|~EF%6-|lKH6zed7wLE(5VHE~Eyq%P$D6877mk`VHR6
ze=^gBLqgVSc8<tQY-jNnzeezkWz5D+?XyR-Rx~n$FP}$td9Kiga+Q5~n1;fN!H2ro
z=s``5O6y&+(1o2!#On2e%xe>sH!`p2s?w-_eYDg1S#;c|PHgdY=J2YAjPQO}mzHPV
z>v^3#0Hlnc4A6|-dQ;?#%l8cGWH9&3e@|qgixp&D$z9;K=*#^uoL93fb3^1DT%DEI
z;3Of720mKe@TfJK61GHVOcskgr8{EY?^?#qeJ08AE^JoW@UZ+TG5I${v^ex4t^V6`
zgp~78k&#<s-|Svkc>{WJd!=tx$S@{?fk1&B;X$7)2CRVSQ!G&L6d*hw7t10Ve-KHr
zF`lGyYTyA_9#2favI%0^PAH#*fN(b8yvg@s?9!ZgsvQ&<nw6ed2L0qg>X?Vo7TfvU
zepz9LXSXN@Y!U#Cc*Zao(30^yd>}#Fza{2)5)xiTmJXoljDJVz!jvVoV3z%e3<QP=
zA$<gxk^t{6!HKvO2tXw!>mv!Be^H75SniY47@4e%K9aQ1kfH!0P5UB<t<rcnox!d+
zQtAIxWJ!JRfg`M!XG|l-+736!<kGy_43CdYhIS~<L=X@X2%G{UA!pNjtSMko{*RM;
zBH_bg!x^towB<}OQcW-@J~$^m$nYA|ne`5Acj}tHCeZbHY9U7YuNniTf4_;M^X-mh
zZjinFcm3AcQv=4p(aNb0w))xt`}NiBruGGfx*z}vz9+}3Q5Q<0frY0A(6GdJK3)z4
zTHascg1I9pY=`r<>Xfh007z$Ybfqt4@e-Z}2K!Hy+j`ixD2k(@EUoq_MBe6k$`i&=
zgO&2nH0^6z*38+`iRYSfe}wUtS4J^JV+b}^E?Ln$t(nrkR?L(}X{IPo8C0bzc+SN(
zd1slkr4!FI<q6{{6!D!4RPxU=XG$lYY03zke1z!t&T+fBk5a2#8DXQfqxz}#9t0ux
zAdKu$K5TgqJ1xAzefGCv1k2=qobh4izvD*;P0??SD%g3P+h(00e<zo@*Wl1Ye0V#U
z!&3(SW7SuRs7MNi&a-d4ye+=$-*2~ulw;oS=vU~qzlf|Y>=APj3L@=W`r`z_dwqSc
zNivTzg6A*ez>nSWJDFuYSEaHaU#ARVN!=l{<FY>-iqP3=r&H=A=(C=L=OUu5@fQ#?
z!gT#deN-oifJk=ne}rl#kzGRuddKxKl0bmY50H=u57<{u+c5>17a?TZiKfQ!v-l!w
z1V(L&RbE@^+Y6!8bJW<BR`enUF^-oz`G!JF9;oC)HBWb86rjyiZlFfK=yMq98x6f!
z`h;ul^0~C*UY}j7<~sY8<Yn@`2fBIt-O?uUJv}^Xg_im}f45_cX5H6QH%KpbUxZDA
zTFY}a0S1AAeA{*)?dHLj?peWp0$%+0|1v61b=VM18bWy5h{*;aMp_zuFQfIHPB1DR
znI%)BtMvY|kxm_Vlx2>0Q>`4)j7E_@htWgTnrcy@w7TYfPfB)Y+^}-u^wCgY__Emv
zRp~}ewO)*7e~vNuTEvi&n4gwyfvriqTW!+-;6ewZyN#WGQ;)GfVhq;lGjiHd=tvkB
zy;bbtdMK3R810wF<C*T6i3=bQ3ga#I!IZgk06)`r6B^R7eQZV~7ObyH=*pC(a7H3*
zswi8Y-f6rqm^>@ko1Z17P-e+_c_d_gTMf?z!BrFPf9>znqsP#uJUuD@-RvGuC(I@k
z6VF-N<NSW<T}t_oj@Y_XC(*jfxy3ApOX}=<loDs+y2a1U(bc#9i=Zcth|Y62m?wRX
zx`ouUk%}W0v&8s*rt19M?t9~j2|<|uG<8W#nJw})sx6rfL7(!g=ibioRe$)Wk6h!<
z@bvt9e;4l^PxG$pO-i9hp06h`y`ks>)29zuhx&r#oJo{ovo3yFc5h~A=0G8h4D)x%
zM#&q)9atEEQLTvx6RbRE>)xPYHM3dd?2y7p0)nWjf<Wft1ROA2+yV?Y;~E5uZ`XG4
zWwZvP$9NyxiPQX!U6v=azc9SzuB!q}$UC(!f0+sS&PrI+Wi@z56Q>V$d1AZPMWR9i
zU7=x|o<lSzExV!%wWg-Y?<iBGGlU=rDbTbN+xlozoJ0><X~G|HUtDcwl9A#Us&``~
zn~IUL-@hP4d&G*hHgqQI-S*2oy0rtnwE1|{Isb!oG~v~Ybq!>K&_p)d5T8@#=yQ?U
ze|0z+{N#(Y$~R`yU$!Vj$g`9Kxj6>ahQL4(q|l3EHZ5wIqal4*;lnpJ(Lrs?B>EL{
zpKIS`N`0T4!3#5v^U1r1q^sflDwc%c)0psau5A`)07&!@ydLH(HLkN3pB0`%KmDxt
z^b4TsJ+zlD)!jZ$e9utuF(GBX9{+XKf6W?ZZ<;XJdN!LpucU!c%k6i}44lX~jdZ+!
z(ej>-h2F6A&2_9j14Gc(4p2eG+@X$OP|Zr{GDDMAg&3ULP$S5Z-ZM%Dkn|#H73Bq@
zLUXNWKVA6l+nKZW_Gdg=c3BgpuTbzB+3fudiTLkV1;?h%r_W6VeD0$^RYgs`e_PTs
zkhtMr;!blu1_#ZfE{($tw{sqio|^w%Ai0mb_7l=SnFa4xFyr;`xgGsdx8(VWb<Ep&
zcuO6NIhq?-4^+*!CkDyxSbIG$wUD!!Wum@7@piKV+q<6jIC(g7JJ0N#Npu$XyUSX-
zK+$PfvCK$4#_|gpk-lQM%}ZGhe~)1sHzDacDB{m6XEO<@zbwM@t*yP-4kPFEx{fws
z?fE$4T3GJ)Ed&<fNtf7XJNeKXZzYA;+WPdvW>g0ug`b5ol=vEc7sKiLTCjfwQaawh
z6I;}@yQi`J;^~PL*d-E_3Q#FZQkPV&Teqm|#$)ss7MIv2!h23qVGy!dfBdC??^4s`
zf4?6&jlYt}>Rst!zS*SE=X>Iw=OT~zWX{ew&f*}fFGeDPa=b=lPCS6OU$-bOJPUVG
z`5UMM{SqqaQ#Tw4Jn#WHgiYlnX*MospW|1fbK1xstO~EJ{w~U;aJ!}|vd@@+c)68}
zp<)sT!vc{oyV2ohO-_i`f3UvAah80IGW87{)1{r~*x+tH?_1+*tYNf>c~B6?_8*>l
z)_M2+96T9pU*u*sCgf7!a+cpIKBIwy;F=pGsc9hV6(997FOI)Yi-BP&)cKuOWrxA1
zJIuuk()lD#YG;dT%!#`&U=oiuh3!>d%6a{t?XgW9<Kk#S#X;4Pe+4I{$BY^mQA$}}
z+?~6Tp3FuzR4&ycS7FuUfmEt)y~!$Sja`1CRr9YVz3r=_RC7?49T@INNFM;TQA>t0
z<gl-C^it}#Rf;4bNgdz@2#K(gq<eVx9~-pxtnNSpR$DwQz`QJ7emdBZNTDUIPdo%{
zYk`Tta%@#E0B2^gf3^Mne(Q9R-JbjrSUAi8f^bTXWx0H_qQm9=c&(52y*$xjAVQG0
zQmN#23JnBb3kCEse2o@w<M|&QGU15t1ewAs9z5eUAa}k4vt#CSyZ8i}0?GSS@ziFd
z5O*F_M3#^3;4W#-u6)92gdO3+j9Jgk7wnrog`7Z})~3QTf8hf8ez*l*tedIFj4SG@
zMx<HSl(7hK*9B;vZ;JhCa3Y+HOG8xhoo<Ve+NL^iEd$@y`LTYlT7A0>v)ng-4JB
zU`CNz%5UvCaW5$lR;>_-aYc+x24(9i1g@S(+Gi&TOTHX4eTdup?z)|cu`LM_LnKR7
zLJpMM(`-u1fA^ew^J9;qFZz$D5ksx4DKUenMQ_9@8qR|xP&OSa`(BLFNwsO|BFb!F
zB5R;OfRqS<NSd3z>LzEGXd=!)mv0Yyb4`z9ubbp1VUJ;NvTGu<)U-$J>EjauY<4#A
zecZ}e^{IVHYh2mxqFc$&=Fl4FKOY^N?Yi8o9QRpCf7|BiX8$ACdN{U~+2e1~bF6rJ
zSJh7^Z|m`1!bIj11g=HD%A0v!?im~DzbUZww9CP;V0uM{f7(^J&-9|-Z9Q1BBoIUp
zx$PdTt}##r)|<db*g^o1e4UtP#lM65$;kaZOIKR`cBjTTnFKsnC*!v~)aDjh8ecJ2
z0*-O7e|?7sfo22VF?Vn7n)pW=%kNae$il1n5?_gs&iUgq)1`H}GGEPHEp<OY-?iRT
zP4A&EWi#|M3U+r>w>ic{&!zuxNv$5&OC*e6>f=m6Hk_mafDbfCLRl<@Jxi@$Bdxr1
zhu1r3Au6)^lCN6PevajC>2EB%iE4`b08kyee|0j3odd^9)~nk8$D}1mP>{ECp;PAe
z2%mox=oqH}b4?zk<`EZ}(BB8A=%$1RT8r;kFGQ9jf#Nm$$9&h-gj)Qbi6MOF-(2)K
zS5rctx?^&ZhjzY;p3;)X?S4?m)hzwDe~n|_d|q@=(V_hRQYoXbM1<-=RDvL&D#)Z!
ze_$*TBFHF3SrHKkj9DVVV6a4sAgdxE3PlnO79t8PQY#Qu0c46S767XOSgc8~8is(@
zFkjrzVAG`0tB;BN`T4G^HxohiH>zIWCOF;XWM;s-<{Ynw1>3NGAA@RCJxek%e7wCA
z)W1vYxd|`u)O;H=JWl==_3Dj09=m%Bf4#o}?wQH6hqdxD3rt)`sL_n39}V~Zv(DsC
zRPB0b2k1VYB*c6NPOpU}%l#-;Isap$Fxb7TUcra9*u~w%7#pp0wBDPrl3uapWWpuw
z;U2HiZY9IN3SF#r?{@hO$HL#u8Z8<2;5gUn@cK?Ncr6>ozI)!YC#dT6^!*sWf8bVO
zHRqZ|-UhdQHuM_XbXW0xB>8=xGk@bRsQ!n=$L74h;ve322l;0P1VT{^I7vi6h=_nV
z=*hsVh=Z?;s8AFq#3%<efLjEM#BJ(Awqve>QG9T<T1#nE-I!c71TqMKEy)@&Ix)R+
z{e!$ycTI<kwu+BT<)S5c#gXr`e?$T6w^UjINuYQY^Uq2&GLNSz4dwa1OVCb+(>-0g
zyPLdbp0AhQ*<4mt<tdUHMIZ7%O@jVEhva7>$K*8oZ)3;DH$u#bK}8YG4Kdr|?AL<|
zCc7mT{#C?J9N!6P5sMXdH1pTya8O@Z)JNf`3ltW9mB;wx>a#`t@0`O2fAXvO=cMLB
z2FJnv6a&Ke&x;6zZ~FfG(8YY=?>R`xi^wG<l%(Z*Gf6|VbtI|#(_kSnneh>t&C(2w
ze)HP*9HP^H^P5*S`udj&31AQ-Fk$<Q6er3o;=>#tx_N5uP#PQb5P+v2oUv<6%`^bX
zxlcE8Gb}Kq>`5dF+|TM&f1^8<_GpHqM5INR!AUv9qIoR<@c$}w;i!fR|Lz#&jz(c=
z90*iP@rvrv?r*IG7+F!;bSbc=Er^_$ZLw(7RdaWrp*mUz63`&2YI;nBYCR0p`nbUk
zW-Rj_ktZoh^Q=k+BRjozsy+ISL3oC#58X}-?8>(e^sQ3Rx(Y!-e+|2@A|+3ceH$Ie
zB6}a&Zt^`jiHk$WR)9Rq{hjpdk}vZ}=Qez%ntJ=GK*U4Omiq6HeR`fto5frHae53{
z$bO-xY;_PK)gs`=KC4g5TG-REdDeWqmWw`1&9MeMxwwusmzi~<yo(ZM!REc!w?E3B
zE(|I^&~AR{n3D!af4f1AKR0~{B>#dKHwvtzL)BR)Zs_Y{z?V%UQ;`zt;GknRjMqI&
z!QH@8n|&_Uu5Zc6)<y)YD{n~=p%&bOtL}W~b9S0W+5B_hB)D!E*jme$9PVA5kHGrc
z=%RRz7vGm_Ij<GN`yY1(Uq-5AQv_+6*S?9DbrHz0`t`s)e@lZOX9lb0?B&6$X(Iw$
z)T~M{Ex|4vAI~To|8~1qCiEjvb-6o@w|LbK#%f*_Us{b1&mOxHdoO)z-BzjUKX2R;
zvrR4D3=$?-DXvTxs<M@t6t)$5M<jt6l}A;xU6GWf3kcYlE$7EE(alz{MG2a&m*Uy+
zepkUe8{LRef69v^e$l)V24ucAzX*}_{l6Dt5>Jr=e38wHC_Te{B{`}6?#e=5{SJ>r
zwPRi@h4_4(f2KdD8KYzVT7X-yJ7#_ESDX9r;<p}Cl_HZ7v|H+p)|AK@1)n|9VwDlZ
z&sqT@DG%XOtq7zdg!G|50Mv)G==@rY+bI!fOP)GGe<sMsz-ZB{3~{~(k!8s<%)2!v
zi3jCGNmAsLq|qPMx_@zQsA^?qp9lcOd8=>YUb!5&;m8d<K1H%UY>PP9HE7O_V-%Ql
z$7z(XGXoqYVVZGBQ<)7Kx5$K{!q1*9j8A02dZX1up%tle;lUN}yj8hph9!kVm8}c%
z<G;?me-=xMS*B9ikjX8m*rKuf*eL;YqbGuOkpM_DM{0WyV0&+k2KJ)6LR2g`_pN#c
z8iwMC84;E}JK5FrYubq#@&K_m?omjHS;pXEh>0r7yh7gNr(}by|8*MK^C#=6!F8tg
ztI9F2Q0%6phQXimJqRK93>ahc)`S{^`PEPBf1TPTsK{ec22WL}K#i_u{bFw~dEEM<
zfEx-NxhYgf{xl~`!&}p=S4zBzgJ@E9GeLDLmF`<R<&@D;n?jar3dveLRFinV32(Fj
z=GZDZ4lf5i2H-<D!@M1r9v?M`^Hsha<}#+&H}mv|Ed?hX3R_r=1t3KU3BBkjNO|8U
zfAIC|lSG3e!RsxMPxMc~Y=n~t5-3P$ge5^_AfTjy5Q>5klAuT|StO#N2y6H^4Edzd
zixo%#h(ZWnloSXe1PEaO3}=sjv5MhiD>1cBG(S2!nej!Yp&LW4tZ$ADKbqA(wE6#7
zZ+rjp^#4PSE!*(AdNAseMLxZO6+!E=f6#!Z8{$bIn?NMmNhZ=jn+aLbe@pjQ-v=D9
z8}a4>k|r|Qf``j4fHT>i&onF1Pzbl2bt`Qb2ds4$WdNaKPr;O5qEvjf4@q~Muy9o$
z?02~O2jb_|El$N;XhK#auCWLV?OXMe=9ldev5DFW{=8{?HdG|ULO>%;m$<q*fA4)i
z$9#KFs#{Dx!n7rM2t<*b%YEPCNV`F!+Gek$2?l1%1;JmSriNB=v&uzfzjk)bLPRWa
z__zL_;b<4AOzkF``=DOm*qv}YYOzemRf*Cl?Ep29I%gK=^;-m+Qc`;Tw#_7m5rC1E
zd{m%;lv>hD9QFaRZOLq|2dH}Ke}g<r_ik1eNdxr{K1-igHQv18R2t20pvEbS##`-v
zAF*p#)SserozuOYtBuZt5TzQS2to{l7|1!~_a+Hb&CYY6_CYC3Aow)l2tDs)2%!hT
zM+ia?gCTeQGk@$PBsHW}kwPlMLLvgmBv=Gkq!t3eix>=&0)QzMWFjyCe^F!s83AA@
zA5+-we8JJ)hqCvbhdauUAxaW2pyYwrz0p7uQswNxq2;ss^KLR-MU<4jRfj^x>0Dsr
zP%I>3>?AgTkMMv6*1$Uc%fSb64h68O%Bg|DASTQ36RdUz4y(4|Yd}?Tgt|H7k5smj
z$CJ}^Ib>|yOQ)2%xQDThf9s#azWa~iE>@!koJu4_%T1=04+p|$#C4(GcdEm_h7jF^
zKrl}t$U`Ot7<cpyOvik8{Z*a&pCfMSYZ#2&kb_Gj3XyWr#EC#fV47MfySZkB&7}S>
z{Q(yRD+QiH%G4oRSiRj~33U3LjZ#?uz6&$O%*2cj0*~qvxBwtIe~yhGr2-O3EL}|q
zD$9Q!K(x5a?uzg@#=?VNgJ=d(+VwhQmmAFD_8FNaAc6Ilxg1{tsK62tgR2Z=u~tqX
zY^lbjDT0yOchN93S{9`YM3sE@URG?o8h0KQ%IN5FJ(TO75<(IQOB$W-7-j+6Qe{;6
zIcafiw%cv7w$n+Vf3-f9*ynlrFer+IpF@X}iK^43<ohgpMe7)SYLOzEC7HPOE8W)e
zL05oG2(fA-ubZE1$-Nr^f+CQK8%-k#6!HPsHVlDcK#E36L26tmo*jnSnp_(Voj&Jw
zu>cg(+mjl5CDO9)a;fvko75U{;pKgUM*Cg$*A~+w-HOn7f7w4fJL(k#m;YCO^oQ?b
zw*~~6JOam!;*f8o6t@KN%roXlaz~KU2>n7=l$6>Kc$8kpKvvLgm?svwIi4Hyqowyg
z#4@E*`=1RF&uGTQts+PvgmBiKP5!S;n7-gH&Vc+)5t4~!5=oIL4Ffxmn=b1xXTp;t
z)S?$^YwcBse}h7>uxnHQp?=9S%OsHf?(>8+3;A=}eiAL#l)%9I(0=War!*&k^!%`a
zjBhya!JX>OSGXc`)PQzRQDtnv%W_$mdsyjM9}Xcs1vGH|?HteF(!96Z^{bFYHc|s@
z5Z(E})525Qp*J*mw8SCG1F{Lo+ePija_0|B<z@gve+WE97|edKnP=M&S~#W+K%pm1
zsp?0NW<0Bo%t#06MFk9Fn_v-iW-l;v%pRYC#WbZ|Rf@3s>8foAL=k`p--<$zk|`SM
zBshF~*Y!}QI=pS3KZz7=JFlrnF=iquO_r@mZs%8TGDO&0;$iq*p6MPVx6Qycyp!(p
zo|4A+e_tX(Vx#R)*XXI|``z0Qw$ks4^-?N|#7MX!h!Qwn6Z>5x$tgxh?Z1PjiB0(1
z6gudBLQxeMFovhfrUIcuN$Z6~@wye=4Mm=gjl0GwdvP*>est-|#|cYH5bzMBv3RC3
zYUZ02tAC~DE%CVTLM1biok8PN$TXJ2DHv;te`fK;t51{bs+Mt@)Cyv^7T?U^ytbyF
zzd7UCww9l(MXNniS0#hk`E+MD>#2Snd<nz?yKVURo&vDUkY*9Cta*@LM3t;}7Txa+
zR05t4{OFv?*YI3So<DYXv`9`ElXyD80s;)|TOAb81;zpnk)$r)t<8{vhLRgf%K$Yp
ze?Tg@K|(YNDny7eih&8{z=V=Wke<OLm}H9xpc5>B#t2?ThmEJLr758&;~^v8>bfq|
z*!vt#%kuxkcHfKo&!l6%XV3n#@&DfTzd?#z^;|A<qVyD`A!acQVA^Rg7{r+*j9COo
zf<!?O06<1Ti5QF+AhJY25rjbiV<GcLe|8K3Ok#)uM7uyR5Iv{9)$p7P++WGk+d%;A
zrmX`y=l6fTJH2LbZ%!R=sZ(KPt{>Cs3}DP-{YvNFVqd^dp2xdZuKL)2&Nb*S4^cdv
zcbuqK*f!<~CBc1Rz{Cmmma?2+1meIzM1TXl=98{Vcb`b{-}b_=Uag>cd5`wre-E$E
zBOrtyV+^;RD&MM#D>z4%k}S+sY`{BmPj2pv7M!W*O%p7>*AWwlfp_ZZ|MmZq^T=f(
zy8-^8_KrXfN7sD=L4)&1LHy+RS|3(`rnEH;Z@5#p@TC!KK`euv7l_4cTAtX&5o|*Z
zEG98O1ud3YS1RJThB1tlO_o_ve-^|Li$r3W#ZHW3h_)l>8Hrpal~T&5%Pgpsq9Ny#
zg`3m*ziHRq&UF62Y0-Oy?b1=qfQrBH!VA+EGF@OTIDs=-GQP&W!@l3S^JYk2+hdj$
zqNV+YMvH)HnmM>$H=62GpJXcL6-hvli3dq+A5$2gmN0NxmeAQ(%7hZTe@(wb!TD8G
zF}7m8KZf-9G>9=#cw$sx_sQyhvpDhP#}hw!+FfrKm|cnO+!vt`$x-WYD5BF)Ha|%p
zAK|Cq_micwFAFaJZTqRI{K|UPW1*#A*1u_jhOcpPuU~74v-UL@Ul~d)e=)2PAM{d+
zy~h)^!ISqdqQw}f{L53Rf9R~@<f6s>o~q%9sy&z;GEX=Y&XdfT0(sviNk|*I0OzEY
zNiaFqf|S6mS3tNjm0+l)G@RX&V<g-o3AE0Lq33fZ!GxZF!R)!3eyXa9qpp$%6Mx$;
z65DOI+ikYo$^9&zCy!tgz~P4%0B(aN-j5RiA2GWo+(`W4aH1%ye@QkZErqV<yP6IM
zU75wjp#}=#`H2CL(znca`mG>XDO5#J7<JyY`S6(oh#|+$?%u;lKn$A=DCcX#Gb?W7
zLt|~Wvwg!tuH|^trHa83aHexYRJ<dx6i`V7l1UH{BE;MBd-Km`XaSTZ*?cN!!n+qm
zb?ko(iEMr>r0Qq<e@ZeZrQOWrap6Tob3Csd{Zlcql({o7ym9z1*;(AS_d1Ej&t<MO
z>&lHj{&^lD$aoKsym9nQuet6lt6S7Vik^Mx*XF18VSQu1|56veM_FQh(a!9aOKxpD
z99HSoYfbv8Q7}zq<dyIw_2$AFH5If^{)oh+=va^VCPVSbe-=b^_aVaWKL1HO78{)E
z91?0HN*qbh1@T0GRj<HLN(@CG7=FEfiCq*Xjw-i|1ZKYppT4@~G;IqNP;-ez>UQv;
zc(=}=-Bi#W@;GgV2n?*%yVYYI8r^BS(Z&C+`<gG0hC;ovm|^5Tv`Gkr$z7}1gOUt{
ziJ}aoNy%)9f4`Vyr`S}r^9}rzQAYP~Jqk0QOr8m9<CK7MmLOTR|D29GqCY5_RUqZL
zgQ{!Pz@|ehI|8XW)Yi9*v!u&%{6NNKTHhu^BH$vBGVwC7uJE+{s^6X8Ph8GwhYCEC
z=w-N+CfjeLjxtc{?sSw-#`W2Jf&t9v@iRppI0_>ie+JDXE_XLE2Kc0}$1vf9DNzq(
zKJA`R+GBB=bfr11?9+L?`l`uXAmuJV(n{2dQnZAe-Zdk$nAn5H5IelC$hgrQ)z1KB
zLdK))#LZqAC3HC0cJ|!kME}iTXPRf#Y?3NT5d!)He&QRngLZ3Y*mHOPJ52VUmxGwd
zahR|Xe}J!_u&E%SJ-b1Q1Z4C-0}^2pA|k~_21%)@Bv2$!fD0kA43McXBN(uUkV!De
z5o9D81!uS4ES_HUKSQ4=>tVPNvXgw38jKXXe-|n7WzCsswK;|nhzP{q!qa$f|1NyO
z=M#|uQUw44kO~Y*AsEsrKQATz$ZzPY<`%CxfA?rm3Q8|dBPK6i-;}f_Uz`2(HS^qV
z6L>f$_={h;kO&ZxOdAy9u8t>49G+MYWkl3ra+)Y$M1?2dcupa$+310(^B!ZED=Rf+
ze%hC78?kNk)j6@W$I3YaYr*N&lryC(dKxov)zH~<29BIi4A}3F^VK3OXOsQs>yBUr
ze=|m|>Tc`m>?Nw^zBZtfRe4vH|1VF4danE3Paw1o<J$V~CF`5%Q~REW*|CjiCbg|=
zTg|uFJUtI1H@)wB+V_UFt$Wgxy^doV*0rx|-V&6WP49c&_PMTj2KT-1d*0W)OgQKX
z1d;#-4|m7??iM1{<Olv1E)Psd<TO~Zf8s6JBxz%G3Yrc|Ek@-PuWO&y%4>)K1OgBM
z0gHwYetR>!LFI{F)b8=MFt|DA!&Z}DW;-6@@|-q)we(w!(4?(r4P2|3G_95zVMvt0
z^n`zXg~$nfeW)au!q!e?=8cCRb6GzF`KlYAF@a3R`B(l=C;c<2Q*8=Qace$Pe`{4k
z{F|Ko`R}OH%Q?fy;Nfm%JfI!x4kAwj$<UZ2@`TeTfuS^2Ram|QNvI<ymZ||v3<*~&
zT;^e8j%~Ka)y9F+RoLTLDN6zKH0ly0g2+h<=SCKRSg`%`;^`(xV`|D*8b!e6tPS+$
z>(_uSS`&X~oDOEmqCsE_2(VHLF-W9>B$5aNC+2hYb3=Om4zM=@14aro^b_als-&(4
z&a0GUNS`lKT=eyhkI_O{W+0aVNd+o@Xx?TuUN5%y-xz$f?Nf4YkHwys%7R<xwFV>2
zjwkwfzd2;$CNH}wh6o+?ep_D{f28#({}|>nA(p3-M5cZ@-?e9@3@@M@`b;<qE)4c~
zJ)`C2{T3T<)Ta4r@id6*zgOzwDwyuWjC+#@iyg@Xw-k_856tqU-PWuI7oPTiVDe-h
z%-6AgZhz5xO!}2CeJ^R~Ef*kcHX<oPbdeV!=?48f<$V{c781l-38i6X5YP-GGwKYg
zr{9#>5i&^yh$%*qW@#|7?02-{W@2Ksz&>U5njp$d65|&~_MRl`7fEg`3FnJ){UYJh
zL=jOY659sPk3;&+8l!XtqZ=uISsBH{L5B^i5x;|Nb*zUzeiJ6ne7vu%6DeXqOO|Vz
zMU&#gbL!RCLJL)%3gKW70v~+VLMfz@lv_7MtSoZI8d_^e{h3$KddO5JPa95fSd-gD
z%{ldDxhZWoZEF)-W&<!eNm!V!+&qT{nS}#?xu`7Jfl1wQVbz!^-<rLDn;ee8oXi%L
zcD4D%E5!+2@~Gt;6$!G>>3rX?evEdE4lYc@Vv&N+qLA$?otNpN%dzV<e*4(b-N$`F
zsh|?D(2@qyMdy&zBrEM%2`Tj76Yw%gA&~@0J0sAtm^QW~184wEfDq8TCL@mR;O&}T
z4?q2$gV1$8<Nv?s(SJ^Vj%M$v=bdTG-SH-ahRYm#r5R(L*wEz}C-cE3ZU=w>4A8h_
zJIR3s-p2C+aL<DSNjx6Q&Ug0hS?TR!S@*VayuPfVp&q4(OYBQa#^KTFd+W6urSkso
z0+L=&KN2tvJy@nfCu&uw5}1rWpV%c{RJ4j8Q)-O4`gUqf-NR0QJTC;|0bC5lg~Ud;
z`zasg(Bwds=ahu=?Krd5oWSWeo(6?7x|W|Rv;tSAL7q((DPAXKKDk-?7-E<r`XrdN
z<r=HYE}?#YSoX`CcJw`$Wcclv^%>RE=j8k^DGxHN8LrV$w5v)iq=G21VR>E8O^nDo
zSP5(uct)-M*X6x`M?sz0W2arOpIyyM7`rc_ebPfd^GU16jDr8VUL60&t?{UH*TVOf
z;`e|1tJ&4LN~ux|Rl7J07Vz%t@=%VBADM$B<b5)(>$ItncR3bf5iDYpB7D(j3wiQ<
zya)fbop2I+r|WxfIoR^39RDZIEo<_Do}9V2InHyOr722(P-}}hhZnkaoYiLn_&Ca0
z&U2iL<l{NcbDWH1=OgB!$znIJ@?B9xdKx3+5XOuFz%XUewNnm6s0ILn#0h{e8FBu4
zG3v_zUVejMsq<fdqto9RN^xT)s%Gn-vG^^Vv<07_Ep-Na+%0I&-M}X{;P-nm|9y_B
zioIe(^ivFfJ`?#!dL;Qeet(6zRX#=h9A7;1uo-w0klSWoTfD~S=%93rD%<33rT1#w
znrPJUR|MlBTH$U5LF2VpcSv}B5m8n|3T$kN<Gi;;$T<iouPLIh`aJdi)X49jh2&b&
z+ikY3|CZj1-g3M*XUsnzot?@c5Re65mUgfD&^6<KNJWY~Wy(?Mu{q68madu|fE~uJ
z)|GvYo`U8)E=&2}gNokwFM2g7qNxDfb<ajs>(_YxH?w>eT_loO_{kqkAOwIcnI7kC
zme&s}EVyK1PR$!(={ue+cXAziPwBC1LYlI${L^D?v9z1RJ>Jt|kc5N##H+D^&pxX~
zDDq%`Ix-0`22Z6{bxN3HUGyik1c8MiUL^`Cw2&6UR%E63PD^?V)IKv_j@?~vB21e6
zcD)?+*T?bva*C*=B9Z|Lchts|>vz2DyjEZ+3HH1QDypc<u^=yJg^{jSpti_STIZ1w
z0*fVg1>SkBv5IgAL@QWhIsTX9X>-cpA$w1MZ}I+5#B(|a^~}%8FO-{2uEl?KhNa_R
ze#0rJ*zZs8RV1N#`ApI%Cb{qvJ0jwPtn1QbcX7xJ!TV<L2k5f0%gNCP&S&1AFanSC
zJ2a+d>&)KziEbSVdrYJTSul`N6$GUlkrZ!fd5C~ZF<$eME*!)u7$c}N@IImOPmn!-
z`p{<n#NCcT-izpQT$(LQmN#HXk8Ns+QD@agpVc}7-&|Hm=CF0H%v8C`ii5Ff#u{B{
zV_&rPN^wPtyL;Igxm6LoJRE^6j}YSNs6HwNw)9pbR!$~pGlvFr5a_~!Ki15TaqWy@
zp#wh}T!?K!GL|c*DF7%WAu|$7h{8~RquV(#B9D_SOolKDS%W|($)8?y91UNZJ4QXS
z+yqG-LQ)1}x+uY?ZUa$eQ_9N_XTwpd(pi`1vdTgOIRp<oLex~v>dOq$;}8SF17pRj
zRYz2*rFLZec<rS6jYiw`O07#tLP>>E64Nv=ZLZ1W<pfvKuay~6pm2dgnzna;*}3I1
zMH>;52vHS)nzvp>BoqI$`3jAA+<k9gvvo){8NmN>0Y04R<ZQf};BvU{?2(`?-G2_n
z3$Wf(E@|SwHvLy^)yYupylWkoc{M?O_HX3l&n}uN$b%u?3W`>ytkzPI*@X)xOYyUI
zF%J_Ko)kYlUTnIg(8Qv15e*)H!75Q~9EL*|O}me*$>y3H?uw!S`MKyR3vZQlYMhy%
z#*j@|m~xit7EX*&Vhl!o>?>CJxFM=C?hvL<0Mn0}yE+-Hk52f0dAJ7F$3nJaleZ(&
znRb#gV;;Kt&9CEMrStcgx^CxzupAGfZTH8O|0I@Una_*rw~IhF>AIqS5#1tBB#`q-
zVi=%#NC<ayZIZ%ip1BXfuU73iH%^@o(~W#{5btf@ulX{m7q&hGtMgm{ICE_k{GP{=
zV3=<RPZ#+QN~r}UvQv;)A@ib~44n1`#tFYjcRQO>leUZ!oZ*(_19t^C6Szcxvx}B6
zcm)6ykwnKu5N=O38|{yO&;OekEc46*j9?ipFKwgUNJ2gX0R;^p4(v%JG?Gw{C&u}|
zh1GwKM*FSUZF2s$o3Y}5EdPDY_!H{+kL~X=Kps5>13kKb*=ghLf(}ZNJX21j3lcn-
zKOd1XpD>DeUsHWtb}E(lc;p~a(2D_m@87kqfArGO;vYnzF$D{MY^nhguu9o~bQk}j
zFq66<B$7!a4aYV<5BPlAGyl>xCaUM$W&E$WGpnn`tz0-LqUBoq>j?TDK^WQ1e%!Z9
zD)J)q`uT5ytxsa7hSJvU6sqp}JdI&G>K){)ub2CpK=us|mjNJ%5JX5M=$^s$cFf@J
zy1VCh>X_p^qPfa{waiV>R_2Z4dyp-J=1w=(z+3W4*8F^@fc~h#3pU%8=Mt<q$eg92
z=UeWMicZ8p0R=;UojK5Kv^#{U%v1abkq_-SS`&@CH}gI!?BfRp0?QlX<DN)yr+voN
zf%^Y2iUx<D@v8qb=>L&b{7SjK?-3Cfz3GQ{d)}(_mEG@ud*1XeZ+oJOC`{&@TjY80
z3u$2J-Q!s}AV6z%n}9%QPcev<F-|eaS;Rb}&G^f4So3@L=*f#Gao7Fajxu%yAq
z(9!r}P5k+X1Kn8f=5R`IU?q)RfIBNt)(4<0ngQUsPgd||Q03_5DD);N)vkzjQ&Is=
zPNH_a;t=tFaZPGx5OFceAUj;$KSztx?Dgid8f`Y&rie2*=@RZndmlXt{rns)wj=!+
zJZ2tE<ACj4ox41@CCPGWLghG86!D=T<#%;SD;F+Z%#5iJF~3OT*d!3pZqiH3f2|Ze
zClCAD=`GJcM<2E3t^wHmoi2r&fLeTl5IXg4F!;@XCAp?pj4ehI0#0cFitlrJ*Ow%a
zSVrIe`rF+GZ?DcYIaV4yt+$cTS>h#Segu^|v@6Lam*m6U5#N$T>8?ChGvcz&aHng$
zF48EAmUUc6loAVzKIf#9z!Qi02=qVHtiF<%iaFmFWpE6YvSW8P1T)7qbDlwxmpGLx
z)4<$+<#cl#d2OCG^MrJPl`v47eY^w%b7<miXLFJW@pENAF43OwII2vaR?B|MV|sw_
z_@+5)2tDn0By)c6R^H@+T6CJE;^Kllrq(S1xSxpDm;1kciI5VLFhFFQBPe^)e(Ape
zl$83)^Zz3Be)Po<58wR>)^Nu#sE<;UC%VahVTMKekx178KaQ96MQRC@KPy9^_y+WW
z`6W2LfJ+iLlP02LgVlZ*hDR9rd?=HnN_XtPJ}b7rJB6<q5k$4~Ou;FdvF0kx`6Mw6
zs}m8Rid?+avv^6TVGNXwi~}u5%avCS7*>mU1^mSFPcGo8r$CY^rbbl)!pcx_BNA?Z
z2hQc2k$Qy6w*X>u7(7p!o6B#g5<`RnmkGOnmJ(1~593JJJ;9rkFvl+)QCBgsBwDur
z9rU^Lp^(uNW2{C-RvC{Dzn;;uax>H|8$B6nmcEs-FoSnTAL{Mx#qqhk0=d5Lo<HE<
z^&pgw1x_w;sdCro5KhC_trCXkCPj{anwc};em8W3@Qs!B(d(2trGlwi3RJl8^hr=I
z(cQ5!k8^g07jJ0wcoNSWiC*D;PF8b1YvE(UxN{l)H%k)6-A<ir!(!QPMM_V%Mqh<X
z5esy_95-t86;|5(j*71#3YtPxEpif~ka``w5RxJl4J2xmT?moF0p%qjaT*|hf<h<G
zpeU-rXi<<BY*EZw8;?aTF2k;%Hk=2VBfwa~R2rJT^2J^#YpPB`qMjeUSrSlm6RHKD
z#{7-Jp;8zRLFY^ygaKFy7|4t6g>JKMu?AZ2S%YXXTtQTp6!4WP4q?K*f&}xW!GBEf
z7^8!$V_nUM`actwfQKs<On)1H>M%+8jNywE86X-VA#tPt+80jL-23iO<~a&D=KUu(
z5(35eH(ghz{eH98{ci8kY<+Ie@8*B|<KyWqV1SX$byRN(Jt2<>q`{(@MES=pe0z?@
zDXM=SYv-Jj2ccwOuY9;88j^=A>47Cye}jF}-nPV8P+gS1V3SbyE$r5RnF&YbSY_cG
zidtGt!mJ8UtM%|(xIEDKD68xDy@%$#3-f#WdMc?r8xJzbavo>mHAw4|HCyK*DAn}R
zb?3|2*UE4*u4^3-ZvJ1_&R@%NWWlZpItMgBt{bz=A1NM^jK?%O&>VBqJT^NS@~vbm
zg9|cp<5d-~MsmdJRk`GU0u%jT!T~SYek6VwnU))K6AIF%Vp6os#7H7$W+(ALvv<Kf
zJpXwtnJh47crc*}8{QtbsPh>}e`z<EYp43ZN@4Zu(|`1SGfwKm@XfdP{e(l+vsj4o
zRXM0UlsD)f(axzbGy-f4GG*Lj%JP}m3Lqi^FdBTz^3py7kj3+Vd`S{aVejy5XJT7h
z&nttpOKrDG65DOzZZUd$*S>HaCKzXJ=$94yEPX9lzt>4ZY_|)O_p>|cwlf2LEfNXf
zNbB)TFuOV<dxS`zQf&DBikMau*pQ!OKq@92P`IKC^R~V&(;gH2aXQrCLsJLPS-;9T
zI%mwMOOCC<`0MIr@E@gfa8_}fxyb0gy+u@2ohL*3zISt9fKMb}+LZK>x$56_*8Bh*
z2|zS7^~RATA?Y<1>8uavz_11M>L@gSAGfnZHkdu$jB$fD`OPHQz7?lAWEu!gmxT%u
zg~AmmR9L33WtVSR1s;E11;2IW<ao3`aH>BxzU{ten06NZ>wjbEeP3+<faj0tZ5a>j
zGEapD8I5%)A{QnZ^$~<X9S92eA65W-kFt^zOZs8VWiPF$j~E<P<xe5`vv$}m3sfBS
zpH!y8Cm2yNK}-J48}cn9bK<~=<YX>H?+-$a4}LwbvSiY5z8ZfX1kl1V6K27fXe6aH
zxkMyG86V4V`;j+-$$2|@6y_+zdmDy|xGO}2{#IP#tv_5&dr{1WyOM8c{atr7ugfeS
z!O?sHh6Rj_apDlsSZYQbd_@BoM(@b-GwHvSIk>YlM5;PP#JBTkkw-fe`|z161~m)=
z9Y$_6d92r!gA9MnYOUzS7Kht~5gFgjVfz`b7nL=+gutBEdl4fyRy9p^qA+ma$yZwn
zGk)W95)f{qj5-PC!9vu14KpCu!DL`)6#`K&VGl`Hw+L4y?4k^ikdydXIXoPp1qS6{
ziM%gl6<z=!A|4OV>(V;LcAjo7UyhxV&VkQ1l(mVFATxj3l|eyWfg$St=gNz8)2-xb
zx|QEsQP%d<aonyo|FK>Zs@r2=*xOz)sP15iLQtDK7bmHGr34EW)9vwX6!dj>_NO4+
zIDAGB+1CJ4K&`*rmJ=pE*B)3Iw@=UDSE-o=Mh$)i5~3&drNqX&BU$u6s!H2vVh{A&
z=32wi_jtg)rJoIdFoW}3yu*LybxlI}hN#!gm6oV(OLx~F1<Q(2oQI*m{Cq9uiWY~w
zf)P~NJ9Ww9COMF8yUY~Y62qC*@;+)8GssKtX$^{Pmen~hz5Xm>Od7a^ZF(HNrD<0|
ziOl$`|5g*eOwIZd;rR)Q??7_M_OpKKK8?5${@SpM(SPWF#J-61EPuau%C5`D^ct|0
zFZ;Gok?#M{<e#zbs1o=MAo-0{&?xIW4;^!*!c=(jvtB<|!vL~w2kpQHCx_jwwoz8O
z5Fikg<)$~GLSTwgoS>frx;KFY=V0;1ynWM~gaexREQUXITjZjqf=aM}M*Cv6_bMQ5
z=G0vsZB810n&MR}^2{RC0=91M`<I|`;=yhmlrwTmWp8W`L6Jm7d8CQaadZi_GVGM(
z%o1jWSP7e8U>puTp_8WL9BrQktI~aJ3yW^f?fFbmUgdiXV}117=AT3l1JxgEkAFLn
z<488b*LPvA92OU8fs@B7-NdJ?e|NK~jd6Lfu5aFdc^16}<I?xSeQ$KB(+G%&2!M!>
z61JuTfKXjvZG57ge~Uwa$xaIA0RXTm;&2HZ{_pAKC$P})eG?WhOHl>&QBsSqpjn~f
z49V<5AaD_RuUpST!zCRRUY{5Nd$&Ry8#Bs4H2lRkfyna@Rj}HhVD-DX!XAY$4*W+S
zRH>?e-5jIDZ;`%Z@AsuXPVzxer=G|d&N?A6zf&Jv<Nw2}$K);8)HV3soHjsp?1KgB
zvp9)ZcRMUi&mLaMxN{c>dVG7CIW&1Z1i2QK|B*qcmzy>wOEK(z=n^BQbUS$jk_<oF
zfZ2K=foba+@pqZ^-lB5DcT!lGmyLeq^MwL`@4CY5?E53|+x^0v8oOdzEcw_yl62em
zZJz9}nhT~u08;yra?{AL6j|PK3w3-}sh|tVV7q#>0&{TZ%Hbj$m5N3D;9M?mEv-3e
znK(Y}PiXPJPsxHs>!Rn4F`uyi>y`or`zQ+wHWR3wTg!awpJ;(}M^rw|G{7oQ=;J?s
zr7^igH?a-`WocUbe_aQ`0a4~PE9aH$)PND0lm*5Ee{MU!bj?|iXq{0h<S>35B(?2Q
zR!`sivL>RK7nAUVf{F1W7?j!m)39VSWfdCyH|#|(T+2{kI(@SUCk?Alub`;Ty%H6N
zAu;Ez3aV(bz(~qII0dXd?71_}jYctllMDPY5U_11h6ZgaE5VFhEAXv=^^u{Fk^g{}
z?pvE8JM)~DsuoVTVo;!FMSTdDudhXHnTgcK!+whAou4SP*bZf3S&c@p#Tvrd*q}_y
znr0vc+2=50>#S8k2s#yO)GjWTnx<F~Dkl=Kay8Q6>l7k^>O9rpR4PiW!5E%@z_=`Q
zRdigA|IJmMV<Jp=?g{w_T|@qAB+=kb6MokZzns$VYLxM5y8vp9VFFSIamdTYoR97@
z8leu!w&7*XUUCw~l;qDCCs&K5zG7vrQ7z?mp5>FL@q83#O68|Mzap9Yd206jCywRy
zR-NC4xy5~lL;LB*IQ<!bzsO&I8V=%vzN8S}uTFCGx3A?`c`#$V?w(G{1;HtJc;9(&
zsUAxQ+g`Q+*n-OfHu{+)bDy>nNJqSW2++oCeGQO@uq^{A1HokJL=+A2kRr(fLVUL~
z2~g4!K3Bq&L;k6r$~tKx$C;zldykpo>-rz@#K-Tt{@!8i4i~KTeq+0T^z}8rxzQgX
zl6`oMOUxQLLe8%k!Hj?u3?L$Km_#}Ukb&z>`aaItEv2o3%^zf{JjM9wwd*9)wY;Q=
zWgC*qdFctFZ7-GO{Wo8RK_r4e8^X{0U)|sN3+%g*qd_Byi>5{Qrz^=*VA;T)`j&?1
z{d|F%b=cUsb^AljX^U!qHezV8IHp(mZ9xJ6h&+4cAX0e}t$c}JO|PhqWe4ZMf7%=5
z_`LCXA2jxvUO6rOu{a}x`$r{7(*3c2($ONWr4Nl~`bhYJB$=4z0Dem;r}E#TaaQ2M
z7y36)npeW6RcGS%*9U?EJnxwGxqk=Bf%`w)Y5R{1L`ULG%*$<m%#$$<%tXx0%*@Qn
zl;-WEp4v8ftX{=DqZkm;Cy(sP1O@Prc(a+zZl|Yh=>9uNIobL%27w4c-d-40M-+9(
z7q$7!co-#oU!dq5Jv$<Z0btD#8-b|9$J1c^C-Dfd<t(SGS5?(F#32()%c?v<=NwSA
z3D3eprehBg5fX}jG~!rM04R%|e0UyFF3BsoKJuFns`wHz@+vhJGBhCHN+fCFT?0|N
z(_H9rclUJqN%8mbeac!)EDyHW+iY(cr5fBa$FDK?%NaBlxXhVjdjVhNDUOg1;0`MV
z1%jw721Y<ggvHRk_7X%rg`BL<l0YQTwL{p6G8V;sh5e|1na8_Pb<xGA`f~X>a>rrD
z3<(m5y-FbFapv=<5^1K93^6&G_`3oF<NQj$BjkFl692RBTL~khm*3DOY8z6H)?G$W
zSj9wXoKvgWGhsD@U9C*YxD93E^XvAC^*cm@eTKUNo!xpa$}LMQ^z`1GEC=uNOfnUG
zg*<40f<t+KXKT-wU*x3px8J<NKP^{d3P_--DjB_M3OFJw{AB?7Nkfkuszqx%=biEx
zno>Z696%FYXpty$rZw{ujo&Q)(R!Gvz829nAvG<c<7v|Qc6z9!#gwM+zF8LGQw2;<
zhk_Cqn!so_ivKg6hs=K(6ia7XJ=yXBko`|Fk5VjunU2Qc#pPGZWax_wP0|{oFpvyL
z!qOq37hiLWOZR-(7!?fM<vcnqX0KAKkANJSh|r!1^N*Bn0-hR+6|IR2L^E>NEn4ad
zMqV*ir<{PYU4+(L-i}b<f<XE-UmB6odw`s_9C$EhR()~=40x?eX38X+D>haTwT(zy
zeyk{eptm(V)KJ5vDxxA83rx3TNNP(=&uVC9Xev!Gp#<0=pB?Ryu?HwQD~R~K$`wXp
z4K%O5qY&}Hc|zU?6aWZys%#a>0?eX_fPl@_9bNUPWWL6Mu<`~y1*ikMXVcc!SkVgs
z$t_)xH2W)V>zn;+dZ(@^?KpR^-W#VZ(6xMj240M^&UM_VN`<n)L*UingDvR$hC>6J
z*|MJjm12||U3w~}mts|)nno|LwNOwjShj2CCBc4mD>+^@Qnv`zwrlardbuT#E-|rB
ze7%xv#Q|il$jkYsYGn}5KvIpz9OY)0(}>)jLj~DOH^sLnp5}5;JF{@@4?2s(!H)8O
zl`7)E!I6|IcoStnSi2mc*;R_pJT2uAb%8lQR1hYZGJ~mj5E5ysb=r`--q+gOddrwp
z%i8`f*GC@smP1J#Hj+nKvxJxMVn)X)brKK|2p54N2tp=6pac!fw!-IDSn)xWHDmwF
zWBR{Y^4YJuwxfompDpFZzAkNejLn~a+V!6bHTZRU9IYfk8~HXu8;)N~Pr>nkZbOrf
zEvQn*^x3>nxbC3{0hSZh0{sd=8Z{7|cGkS5#~sCS1_9pFpSzV)yLH0GFi>9W-9K4g
zYcnYR4C-`$U7sy2$DT`<gJ&q&>D^_a*rm5<oR?HH5d0f|z=7$yc27U|>=cks_!DEU
zujy~*+v{%d&9~i#JiySK5bGs|qI3%i;`$49^d_3jDL((`J^C0^QP0fr0F15f@*_9R
z4$)?Ov9kLUqa#WJz0X)5E7XAeS*0(RNM;2df4sIdl(NC6kIOit6?rW6uCM0!{9g0j
z|IzCI*BSmN;Ge4f!fk?EY%tpmw`SWO!}LGU$OHeX`UF8OfB??<k--i7Mv`&9)^w4;
zFx@KI(MI2d6ntI_oGAxz|Blp=H;!^}Phl}tR;?88HvNBSEV9b`ou`gMs>d2c)%;_l
ze|f<NSOK~tXP9fk{}K*SFVM3cbgT{!GC-Ukq30BV;|Eg;Rj(TYQC&hdIwY$l0FvNA
z03@+Ms;Vl8s;H?Fc=Vi)82HY*PBH4Z+K!uFtj5rx=2tIk-^C0#u?S_vtK;BF3oEn!
zHm~Q`s{Ii>o@iGb@qDfav-Nnn2~~REf2&GZXaND3^*vQsMrNmDD<27%`frcb@s_q6
z3j;Ii0BtvsRJgMO-5)-Ppvn)$dNGevy;~vCKys3UA{{w)Bs_-z)I>$Cp;z{%K&@gT
z3adQzZy^cnD#N(sK07zrawBnCaVlS-p3bs-r`~Bcp+ztfa*kX3LWs+r*8F=1f5GAK
zn8$7wxh7t(3$>hBj%vi2QyN#@zF~qtecg4wu_8V9(V6oAAmSt2$WfvISrHrhV`Z!f
z0=o7W1+Q!Cr=|AW)={*mLHbAgf3~}&+f3Sfc6R4EAA%C%4cpfG{iE|7-;c+bsWtg3
zjmb#}%##n1$0)}EFYMg;zi9-Re+0{|+*H^Y@n-wc-qccT*WkBZOl7Rfnd={A5{+Fo
z98D&}_J*Gk2e9WfZEX_n5@o1@iak3Pq#Zu+u6($40BW=fl=Aj^?LOpv8>Jb$%;ZHg
z<3&$B^cJHDPIbz-47VM*<5>Fk`ysGZz4tSXPgtvZl}ZaYIywT#9vNdGe}cLyo}Aio
z4mq?GIC5G8>~#l+R(?QTMT=O&WL<<1&CwkYAY|M`$=AB_Mlj`KaZx2*g?V?&P%4rs
zFQf3NyI2yj$Pw%8O{)fBkteYKB2kPsVh7G4?5c()Y4QPKlQU6*NVcTQJz3e%Ek971
z8EfbqYuY-6BgEY1bFllof08)DX5nmkKRBMqgSa8&BdR#P=Ai|WJX1MFa!9aw;poa-
zc~>m&h3AL!UF6G8wE8|fO_^iU*N~OsyU%;bb(S;vU0#SzEk3R~fGn_~xyq6_@PE8F
zkOMZ9w07y8VqbCDbDBMKSj|iNqVqgb)#ywb?_<Xlt|TO;V;)ymf1=aoW!y8kCPY#0
zb^N-Pk1a)7YQYBCB-DkeraTdhNG;NAg{M@Ap><HvNJl87E78mN(FfwdC|VJV-%%a{
zYHNr$AO@f@Bw4SXA0?o8f2L!FGvq|j4y)yU#(Yb@FUx~?S;IT|zHfoARa0T?IA5or
z`HMQgo$GNrR3NbZf4~?3!IDHGNd!>{0E!F%h%k}_K?nj1BO(ldq?7O1xJU#1Rvk)7
z_i8W&M3c<V&Lqi+J!h=O1Ef|!*32bg^ypwhWr{{3TQY)>`N#1E5gGi>h+^*;aNcI9
zq40ZLZ&A;lNw3{1>D|UEWqNbC*xNiD@w31Y09_Dn&-7*;f8<dQ0);?e69R_Q9~w%p
z#afm)O&84AwFF>72m+vJ2r?8Ot*sVZG;}+2FHVAI{!{kvUPPbE5PEq4|KRBYUB(|O
z2-g0J{v<DH!T%?!nz;b3yM!~k)nV2HkCu&VN9D>aM>f4{0W^6)HYYbHcw^JOFQFqu
zykvA^S#nnEe<FbHxSl1>J1P(|$LA#<KxM6%U6q4S?VMz-_loyMqDO0khTve(X0c1<
zY{!AkMZoU)?f&<=a&ieIob3q4I4UdA9ou*uE$;i58{cG%l-Mj4f)jGUiNdl>=SMT-
zAf6)!&G>Zs3Lw9|@!nT^V%Hsp`A<ZJs%uG^+NDnSe;;os)w4Q?Tq+UvdK=-v40~a^
zT@S7Ktrocknjpeh2>b6|3rmr5VOnbC$UM{m^%8g>1PF;fBoO^uaSfb%Z+&+cO>Zve
zOTMdb<Gj4~C7SX!^}#FF_&0M0QBCUrabhmYOK9rgp|IO2rmD@oJ^HLmx!}dUb;DgL
z%QXa7e~vm2>5vWqkzBYDz_1T#oEKwH)NP_p4KB|`h1H+9*&<x7A6Jgo*yQyPm(}HD
zu1x4T@L?h`iZsEkGWjLi?aMXG57#8+g_PT(xk_vHJ!xF`ZaU`_0(%DT@WCHQKO?9c
z{~$;#3G}{H^|w&!>UuM&OE|XS4+xkJidwP0e|h3oVl6eMHu-Yukw_v(P1yfBxoR3T
z1K6WdF($sM^~d#om#qG@_oz0YJ*o3WjC^Ya16XR`NGT42D*VrzdHl$xmIS|<2VSzF
zAcyo?dbJN^wEuhQ!4iMB3JzOe+D=m?RC{)AgOUOyS?mp|2#jH$Nd#3Zpb39iN?Zuk
zf8y`73x-F(Y9iR!Ag(|xRr>5*Q4~TPkut+@Ac{PCqi7W>OSTC4RDQH;AT>?Hj2_`0
z$-}7aiB(LVJ$LX&$PBFL8RIr=Xx7-q6@nO$&YWQoj11b>ZNSgC3NjO#{M>s+A%xWc
zBnUN_f`Fw-x;1aDjv%mdGuRBPGhW(0f0C!lkuF2}13|3mlNmy_k`ETvh-J#636YN#
z^%to}#?;S&l)+3Y+YINu15??g&YprlA7hzOIP*^wYpSFzHwToFJc9Ov*_9H4-YD7R
zh_w(C)+2qipq|5QeN|(fLe{JQFT&z>Z7%nn@pebI{mg&sY(-sJ&(B*gCyx@afA+`R
zMd?uw2#gV6?WpxBte2sZ91k0Y?p?!;U-}eA<5Lfw*Tno7b+Ct=1JxULu2Z@AM*;br
zQ4bH7+K`adLIbgmQ_NK8YAE3_ckoz;JvSsMbJ*i{&mKVN7wi<r1c|K3=wrw1{x7e^
zu$NDlLwW2(fWPB9lqN!CgUu4SfBGkp{Y<@InVnoTcaruOHR!BqGb6dx5%XvW#*7R)
zc26vw2dD`*A*&Ajf<~D{H+at40lQSK!?p(4lhh-)Y&Zlci;>6JTTZ=}_d{X(NoBQs
zl@NcKI2R??p3qhkLw~+1Yu$>>_gl#!*bI7p2zW|)=;)ro{ObwRoZ%>gf1XtZ3Jhpi
z0-mRyv<+KdrglL&2nno7VO1n!;<v;h$7)b~Uq9(VI}cfaRMSUacn^+@pw=k(-DDP_
zmN<lx7oW?rJ4D8B?tEDbEyc6mf?-MgVPKNdnINW8%+Ek#z>GlOc&jqzprBUyf{O4V
zi*R1GI-f`e^wej(43njEfBlLk!y+$gHh`Hl>J@kCrnUorl!q4s8dyqkT0TV|*MWFq
zn_ct}vLAO?V7Z7s_8pRQ09@mQRNT+*8xlAwhH~QZJM4Pj!5Cd2JC6X{m{e4dX
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≷$J?6qs)vR^{F59Qmx$LEi{fmQ6&?*L
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

diff --git a/test/fixtures/tz-version.txt b/test/fixtures/tz-version.txt
index cb3be9ab63e7fc..5d9126009e7f87 100644
--- a/test/fixtures/tz-version.txt
+++ b/test/fixtures/tz-version.txt
@@ -1 +1 @@
-2025c
+2026a

From 2e1a565a559ded43ea91d12fd0101760e415dbc1 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Tue, 31 Mar 2026 04:19:17 -0400
Subject: [PATCH 252/267] deps: update ada to 3.4.4

PR-URL: https://github.com/nodejs/node/pull/62414
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
---
 deps/ada/ada.cpp | 67 ++++++++++++++++++++++++++++++++----------
 deps/ada/ada.h   | 76 ++++++++++++++++++++++++++++++++++++------------
 2 files changed, 110 insertions(+), 33 deletions(-)

diff --git a/deps/ada/ada.cpp b/deps/ada/ada.cpp
index 6c2db6f9e30a5c..80bec6c67f313a 100644
--- a/deps/ada/ada.cpp
+++ b/deps/ada/ada.cpp
@@ -1,4 +1,4 @@
-/* auto-generated on 2026-02-23 21:29:24 -0500. Do not edit! */
+/* auto-generated on 2026-03-23 17:52:13 -0400. Do not edit! */
 /* begin file src/ada.cpp */
 #include "ada.h"
 /* begin file src/checkers.cpp */
@@ -10725,7 +10725,7 @@ constexpr static std::array<uint8_t, 256> is_forbidden_domain_code_point_table =
       for (uint8_t c = 0; c <= 32; c++) {
         result[c] = true;
       }
-      for (size_t c = 127; c < 255; c++) {
+      for (size_t c = 127; c < 256; c++) {
         result[c] = true;
       }
       return result;
@@ -10767,7 +10767,7 @@ constexpr static std::array<uint8_t, 256>
       for (uint8_t c = 0; c <= 32; c++) {
         result[c] = 1;
       }
-      for (size_t c = 127; c < 255; c++) {
+      for (size_t c = 127; c < 256; c++) {
         result[c] = 1;
       }
       return result;
@@ -13404,7 +13404,13 @@ result_type parse_url_impl(std::string_view user_input,
             url.query = base_url->query;
           } else {
             url.update_base_pathname(base_url->get_pathname());
-            url.update_base_search(base_url->get_search());
+            if (base_url->has_search()) {
+              // get_search() returns "" for an empty query string (URL ends
+              // with '?'). update_base_search("") would incorrectly clear the
+              // query, so pass "?" to preserve the empty query distinction.
+              auto s = base_url->get_search();
+              url.update_base_search(s.empty() ? std::string_view("?") : s);
+            }
           }
           url.update_unencoded_base_hash(*fragment);
           return url;
@@ -13628,7 +13634,13 @@ result_type parse_url_impl(std::string_view user_input,
             // cloning the base path includes cloning the has_opaque_path flag
             url.has_opaque_path = base_url->has_opaque_path;
             url.update_base_pathname(base_url->get_pathname());
-            url.update_base_search(base_url->get_search());
+            if (base_url->has_search()) {
+              // get_search() returns "" for an empty query string (URL ends
+              // with '?'). update_base_search("") would incorrectly clear the
+              // query, so pass "?" to preserve the empty query distinction.
+              auto s = base_url->get_search();
+              url.update_base_search(s.empty() ? std::string_view("?") : s);
+            }
           }
 
           url.has_opaque_path = base_url->has_opaque_path;
@@ -14046,7 +14058,13 @@ result_type parse_url_impl(std::string_view user_input,
           } else {
             url.update_host_to_base_host(base_url->get_hostname());
             url.update_base_pathname(base_url->get_pathname());
-            url.update_base_search(base_url->get_search());
+            if (base_url->has_search()) {
+              // get_search() returns "" for an empty query string (URL ends
+              // with '?'). update_base_search("") would incorrectly clear the
+              // query, so pass "?" to preserve the empty query distinction.
+              auto s = base_url->get_search();
+              url.update_base_search(s.empty() ? std::string_view("?") : s);
+            }
           }
           url.has_opaque_path = base_url->has_opaque_path;
 
@@ -16657,8 +16675,15 @@ tl::expected<std::string, errors> canonicalize_pathname(
     const auto pathname = url->get_pathname();
     // If leading slash is false, then set result to the code point substring
     // from 2 to the end of the string within result.
-    return leading_slash ? std::string(pathname)
-                         : std::string(pathname.substr(2));
+    if (!leading_slash) {
+      // pathname should start with "/-" but path traversal (e.g. "../../")
+      // can reduce it to just "/" which is shorter than 2 characters.
+      if (pathname.size() < 2) {
+        return tl::unexpected(errors::type_error);
+      }
+      return std::string(pathname.substr(2));
+    }
+    return std::string(pathname);
   }
   // If parseResult is failure, then throw a TypeError.
   return tl::unexpected(errors::type_error);
@@ -17195,7 +17220,8 @@ std::string generate_pattern_string(
     // point.
     bool needs_grouping =
         !part.suffix.empty() ||
-        (!part.prefix.empty() && part.prefix[0] != options.get_prefix()[0]);
+        (!part.prefix.empty() && !options.get_prefix().empty() &&
+         part.prefix[0] != options.get_prefix()[0]);
 
     // If all of the following are true:
     // - needs grouping is false; and
@@ -17233,9 +17259,8 @@ std::string generate_pattern_string(
     // then set needs grouping to true.
     if (!needs_grouping && part.prefix.empty() && previous_part &&
         previous_part->type == url_pattern_part_type::FIXED_TEXT &&
-        !options.get_prefix().empty() &&
-        previous_part->value.at(previous_part->value.size() - 1) ==
-            options.get_prefix()[0]) {
+        !previous_part->value.empty() && !options.get_prefix().empty() &&
+        previous_part->value.back() == options.get_prefix()[0]) {
       needs_grouping = true;
     }
 
@@ -17358,8 +17383,14 @@ std_regex_provider::regex_search(std::string_view input,
                                  const std::regex& pattern) {
   // Use iterator-based regex_search to avoid string allocation
   std::match_results<std::string_view::const_iterator> match_result;
-  if (!std::regex_search(input.begin(), input.end(), match_result, pattern,
-                         std::regex_constants::match_any)) {
+  try {
+    if (!std::regex_search(input.begin(), input.end(), match_result, pattern,
+                           std::regex_constants::match_any)) {
+      return std::nullopt;
+    }
+  } catch (const std::regex_error& e) {
+    (void)e;
+    ada_log("std_regex_provider::regex_search failed:", e.what());
     return std::nullopt;
   }
   std::vector<std::optional<std::string>> matches;
@@ -17378,7 +17409,13 @@ std_regex_provider::regex_search(std::string_view input,
 
 bool std_regex_provider::regex_match(std::string_view input,
                                      const std::regex& pattern) {
-  return std::regex_match(input.begin(), input.end(), pattern);
+  try {
+    return std::regex_match(input.begin(), input.end(), pattern);
+  } catch (const std::regex_error& e) {
+    (void)e;
+    ada_log("std_regex_provider::regex_match failed:", e.what());
+    return false;
+  }
 }
 
 #endif  // ADA_USE_UNSAFE_STD_REGEX_PROVIDER
diff --git a/deps/ada/ada.h b/deps/ada/ada.h
index 1210d7ddb7a123..8f9089d2210a74 100644
--- a/deps/ada/ada.h
+++ b/deps/ada/ada.h
@@ -1,4 +1,4 @@
-/* auto-generated on 2026-02-23 21:29:24 -0500. Do not edit! */
+/* auto-generated on 2026-03-23 17:52:13 -0400. Do not edit! */
 /* begin file include/ada.h */
 /**
  * @file ada.h
@@ -6458,6 +6458,39 @@ constexpr std::string_view is_special_list[] = {"http", " ",   "https", "ws",
                                                 "ftp",  "wss", "file",  " "};
 // for use with get_special_port
 constexpr uint16_t special_ports[] = {80, 0, 443, 80, 21, 443, 0, 0};
+
+// @private
+// convert a string_view to a 64-bit integer key for fast comparison
+constexpr uint64_t make_key(std::string_view sv) {
+  uint64_t val = 0;
+  for (size_t i = 0; i < sv.size(); i++)
+    val |= (uint64_t)(uint8_t)sv[i] << (i * 8);
+  return val;
+}
+// precomputed keys for the special schemes, indexed by a hash of the input
+// string
+constexpr uint64_t scheme_keys[] = {
+    make_key("http"),   // 0: HTTP
+    0,                  // 1: sentinel
+    make_key("https"),  // 2: HTTPS
+    make_key("ws"),     // 3: WS
+    make_key("ftp"),    // 4: FTP
+    make_key("wss"),    // 5: WSS
+    make_key("file"),   // 6: FILE
+    0,                  // 7: sentinel
+};
+
+// @private
+// branchless load of up to 5 characters into a uint64_t, padding with zeros if
+// n < 5
+inline uint64_t branchless_load5(const char *p, size_t n) {
+  uint64_t input = (uint8_t)p[0];
+  input |= ((uint64_t)(uint8_t)p[n > 1] << 8) & (0 - (uint64_t)(n > 1));
+  input |= ((uint64_t)(uint8_t)p[(n > 2) * 2] << 16) & (0 - (uint64_t)(n > 2));
+  input |= ((uint64_t)(uint8_t)p[(n > 3) * 3] << 24) & (0 - (uint64_t)(n > 3));
+  input |= ((uint64_t)(uint8_t)p[(n > 4) * 4] << 32) & (0 - (uint64_t)(n > 4));
+  return input;
+}
 }  // namespace details
 
 /****
@@ -6498,7 +6531,9 @@ constexpr uint16_t get_special_port(std::string_view scheme) noexcept {
   }
   int hash_value = (2 * scheme.size() + (unsigned)(scheme[0])) & 7;
   const std::string_view target = details::is_special_list[hash_value];
-  if ((target[0] == scheme[0]) && (target.substr(1) == scheme.substr(1))) {
+  if (scheme.size() == target.size() &&
+      details::branchless_load5(scheme.data(), scheme.size()) ==
+          details::scheme_keys[hash_value]) {
     return details::special_ports[hash_value];
   } else {
     return 0;
@@ -6513,7 +6548,9 @@ constexpr ada::scheme::type get_scheme_type(std::string_view scheme) noexcept {
   }
   int hash_value = (2 * scheme.size() + (unsigned)(scheme[0])) & 7;
   const std::string_view target = details::is_special_list[hash_value];
-  if ((target[0] == scheme[0]) && (target.substr(1) == scheme.substr(1))) {
+  if (scheme.size() == target.size() &&
+      details::branchless_load5(scheme.data(), scheme.size()) ==
+          details::scheme_keys[hash_value]) {
     return ada::scheme::type(hash_value);
   } else {
     return ada::scheme::NOT_SPECIAL;
@@ -9368,7 +9405,8 @@ inline void url_search_params::remove(const std::string_view key,
 }
 
 inline void url_search_params::sort() {
-  // We rely on the fact that the content is valid UTF-8.
+  // Keys are expected to be valid UTF-8, but percent_decode can produce
+  // arbitrary byte sequences. Handle truncated/invalid sequences gracefully.
   std::ranges::stable_sort(params, [](const key_value_pair &lhs,
                                       const key_value_pair &rhs) {
     size_t i = 0, j = 0;
@@ -9382,18 +9420,15 @@ inline void url_search_params::sort() {
         low_surrogate1 = 0;
       } else {
         uint8_t c1 = uint8_t(lhs.first[i]);
-        if (c1 <= 0x7F) {
-          codePoint1 = c1;
-          i++;
-        } else if (c1 <= 0xDF) {
+        if (c1 > 0x7F && c1 <= 0xDF && i + 1 < lhs.first.size()) {
           codePoint1 = ((c1 & 0x1F) << 6) | (uint8_t(lhs.first[i + 1]) & 0x3F);
           i += 2;
-        } else if (c1 <= 0xEF) {
+        } else if (c1 > 0xDF && c1 <= 0xEF && i + 2 < lhs.first.size()) {
           codePoint1 = ((c1 & 0x0F) << 12) |
                        ((uint8_t(lhs.first[i + 1]) & 0x3F) << 6) |
                        (uint8_t(lhs.first[i + 2]) & 0x3F);
           i += 3;
-        } else {
+        } else if (c1 > 0xEF && c1 <= 0xF7 && i + 3 < lhs.first.size()) {
           codePoint1 = ((c1 & 0x07) << 18) |
                        ((uint8_t(lhs.first[i + 1]) & 0x3F) << 12) |
                        ((uint8_t(lhs.first[i + 2]) & 0x3F) << 6) |
@@ -9404,6 +9439,10 @@ inline void url_search_params::sort() {
           uint16_t high_surrogate = uint16_t(0xD800 + (codePoint1 >> 10));
           low_surrogate1 = uint16_t(0xDC00 + (codePoint1 & 0x3FF));
           codePoint1 = high_surrogate;
+        } else {
+          // ASCII (c1 <= 0x7F) or truncated/invalid UTF-8: treat as raw byte
+          codePoint1 = c1;
+          i++;
         }
       }
 
@@ -9412,18 +9451,15 @@ inline void url_search_params::sort() {
         low_surrogate2 = 0;
       } else {
         uint8_t c2 = uint8_t(rhs.first[j]);
-        if (c2 <= 0x7F) {
-          codePoint2 = c2;
-          j++;
-        } else if (c2 <= 0xDF) {
+        if (c2 > 0x7F && c2 <= 0xDF && j + 1 < rhs.first.size()) {
           codePoint2 = ((c2 & 0x1F) << 6) | (uint8_t(rhs.first[j + 1]) & 0x3F);
           j += 2;
-        } else if (c2 <= 0xEF) {
+        } else if (c2 > 0xDF && c2 <= 0xEF && j + 2 < rhs.first.size()) {
           codePoint2 = ((c2 & 0x0F) << 12) |
                        ((uint8_t(rhs.first[j + 1]) & 0x3F) << 6) |
                        (uint8_t(rhs.first[j + 2]) & 0x3F);
           j += 3;
-        } else {
+        } else if (c2 > 0xEF && c2 <= 0xF7 && j + 3 < rhs.first.size()) {
           codePoint2 = ((c2 & 0x07) << 18) |
                        ((uint8_t(rhs.first[j + 1]) & 0x3F) << 12) |
                        ((uint8_t(rhs.first[j + 2]) & 0x3F) << 6) |
@@ -9433,6 +9469,10 @@ inline void url_search_params::sort() {
           uint16_t high_surrogate = uint16_t(0xD800 + (codePoint2 >> 10));
           low_surrogate2 = uint16_t(0xDC00 + (codePoint2 & 0x3FF));
           codePoint2 = high_surrogate;
+        } else {
+          // ASCII (c2 <= 0x7F) or truncated/invalid UTF-8: treat as raw byte
+          codePoint2 = c2;
+          j++;
         }
       }
 
@@ -11228,14 +11268,14 @@ constructor_string_parser<regex_provider>::parse(std::string_view input) {
 #ifndef ADA_ADA_VERSION_H
 #define ADA_ADA_VERSION_H
 
-#define ADA_VERSION "3.4.3"
+#define ADA_VERSION "3.4.4"
 
 namespace ada {
 
 enum {
   ADA_VERSION_MAJOR = 3,
   ADA_VERSION_MINOR = 4,
-  ADA_VERSION_REVISION = 3,
+  ADA_VERSION_REVISION = 4,
 };
 
 }  // namespace ada

From 9d37233824153a6ed8e30b07ee700112f1495d5f Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Tue, 31 Mar 2026 05:05:54 -0400
Subject: [PATCH 253/267] crypto: update root certificates to NSS 3.121

This is the certdata.txt[0] from NSS 3.121.

This is the version of NSS that shipped in Firefox 149.0 on 2026-03-24.

Certificates added:
- OISTE Server Root RSA G1
- e-Szigno TLS Root CA 2023

Certificates removed:
-  OISTE Server Root RSA G1

[0] https://raw.githubusercontent.com/nss-dev/nss/refs/tags/NSS_3_121_RTM/lib/ckfw/builtins/certdata.txt

PR-URL: https://github.com/nodejs/node/pull/62485
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 src/node_root_certs.h |  20 +++++-
 tools/certdata.txt    | 138 ++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 153 insertions(+), 5 deletions(-)

diff --git a/src/node_root_certs.h b/src/node_root_certs.h
index cd14f09fdc4620..e3c77a175f9ccf 100644
--- a/src/node_root_certs.h
+++ b/src/node_root_certs.h
@@ -3469,7 +3469,7 @@
 "ak5KGoJr3M/TvEqzPNcum9v4KGm8ay3sMaE641c=\n"
 "-----END CERTIFICATE-----",
 
-/*  OISTE Server Root RSA G1 */
+/* OISTE Server Root RSA G1 */
 "-----BEGIN CERTIFICATE-----\n"
 "MIIFgzCCA2ugAwIBAgIQVaXZZ5Qoxu0M+ifdWwFNGDANBgkqhkiG9w0BAQwFADBLMQswCQYD\n"
 "VQQGEwJDSDEZMBcGA1UECgwQT0lTVEUgRm91bmRhdGlvbjEhMB8GA1UEAwwYT0lTVEUgU2Vy\n"
@@ -3499,4 +3499,22 @@
 "axj5d9spLFKebXd7Yv0PTY6YMjAwcRLWJTXjn/hvnLXrahut6hDTlhZyBiElxky8j3C7DORe\n"
 "IoMt0r7+hVu05L0=\n"
 "-----END CERTIFICATE-----",
+
+/* e-Szigno TLS Root CA 2023 */
+"-----BEGIN CERTIFICATE-----\n"
+"MIICzzCCAjGgAwIBAgINAOhvGHvWOWuYSkmYCjAKBggqhkjOPQQDBDB1MQswCQYDVQQGEwJI\n"
+"VTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xFzAVBgNVBGEM\n"
+"DlZBVEhVLTIzNTg0NDk3MSIwIAYDVQQDDBllLVN6aWdubyBUTFMgUm9vdCBDQSAyMDIzMB4X\n"
+"DTIzMDcxNzE0MDAwMFoXDTM4MDcxNzE0MDAwMFowdTELMAkGA1UEBhMCSFUxETAPBgNVBAcM\n"
+"CEJ1ZGFwZXN0MRYwFAYDVQQKDA1NaWNyb3NlYyBMdGQuMRcwFQYDVQRhDA5WQVRIVS0yMzU4\n"
+"NDQ5NzEiMCAGA1UEAwwZZS1Temlnbm8gVExTIFJvb3QgQ0EgMjAyMzCBmzAQBgcqhkjOPQIB\n"
+"BgUrgQQAIwOBhgAEAGgP36J8PKp0iGEKjcJMpQEiFNT3YHdCnAo4YKGMZz6zY+n6kbCLS+Y5\n"
+"3wLCMAFSAL/fjO1ZrTJlqwlZULUZwmgcAOAFX9pQJhzDrAQixTpN7+lXWDajwRlTEArRzT/v\n"
+"SzUaQ49CE0y5LBqcvjC2xN7cS53kpDzLLtmt3999Cd8ukv+ho2MwYTAPBgNVHRMBAf8EBTAD\n"
+"AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUWYQCYlpGePVd3I8KECgj3NXW+0UwHwYD\n"
+"VR0jBBgwFoAUWYQCYlpGePVd3I8KECgj3NXW+0UwCgYIKoZIzj0EAwQDgYsAMIGHAkIBLdqu\n"
+"9S54tma4n7Zwf2Z0z+yOfP7AAXmazlIC58PRDHpty7Ve7hekm9sEdu4pKeiv+62sUvTXK9Z3\n"
+"hBC9xdIoaDQCQTV2WnXzkoYI9bIeCvZlC9p2x1L/Cx6AcCIwwzPbGO2E14vs7dOoY4G1VnxH\n"
+"x1YwlGhza9IuqbnZLBwpvQy6uWWL\n"
+"-----END CERTIFICATE-----",
 #endif  // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
diff --git a/tools/certdata.txt b/tools/certdata.txt
index be24d9501c2d12..150f746b62d376 100644
--- a/tools/certdata.txt
+++ b/tools/certdata.txt
@@ -26591,7 +26591,7 @@ CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
 CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
 
 #
-# Certificate " OISTE Server Root RSA G1"
+# Certificate "OISTE Server Root RSA G1"
 #
 # Issuer: CN=OISTE Server Root RSA G1,O=OISTE Foundation,C=CH
 # Serial Number:55:a5:d9:67:94:28:c6:ed:0c:fa:27:dd:5b:01:4d:18
@@ -26604,7 +26604,7 @@ CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
 CKA_TOKEN CK_BBOOL CK_TRUE
 CKA_PRIVATE CK_BBOOL CK_FALSE
 CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 " OISTE Server Root RSA G1"
+CKA_LABEL UTF8 "OISTE Server Root RSA G1"
 CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
 CKA_SUBJECT MULTILINE_OCTAL
 \060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061
@@ -26720,7 +26720,7 @@ CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
 CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE
 CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE
 
-# Trust for " OISTE Server Root RSA G1"
+# Trust for "OISTE Server Root RSA G1"
 # Issuer: CN=OISTE Server Root RSA G1,O=OISTE Foundation,C=CH
 # Serial Number:55:a5:d9:67:94:28:c6:ed:0c:fa:27:dd:5b:01:4d:18
 # Subject: CN=OISTE Server Root RSA G1,O=OISTE Foundation,C=CH
@@ -26732,7 +26732,7 @@ CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
 CKA_TOKEN CK_BBOOL CK_TRUE
 CKA_PRIVATE CK_BBOOL CK_FALSE
 CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 " OISTE Server Root RSA G1"
+CKA_LABEL UTF8 "OISTE Server Root RSA G1"
 CKA_CERT_SHA1_HASH MULTILINE_OCTAL
 \367\000\064\045\224\210\150\061\344\064\207\077\160\376\206\263
 \206\237\360\156
@@ -26755,3 +26755,133 @@ CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
 CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
 CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
 CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
+
+#
+# Certificate "e-Szigno TLS Root CA 2023"
+#
+# Issuer: CN=e-Szigno TLS Root CA 2023,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU
+# Serial Number:00:e8:6f:18:7b:d6:39:6b:98:4a:49:98:0a
+# Subject: CN=e-Szigno TLS Root CA 2023,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU
+# Not Valid Before: Mon Jul 17 14:00:00 2023
+# Not Valid After : Sat Jul 17 14:00:00 2038
+# Fingerprint (SHA-256): B4:91:41:50:2D:00:66:3D:74:0F:2E:7E:C3:40:C5:28:00:96:26:66:12:1A:36:D0:9C:F7:DD:2B:90:38:4F:B4
+# Fingerprint (SHA1): 6F:9A:D5:D5:DF:E8:2C:EB:BE:37:07:EE:4F:4F:52:58:29:41:D1:FE
+CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "e-Szigno TLS Root CA 2023"
+CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
+CKA_SUBJECT MULTILINE_OCTAL
+\060\165\061\013\060\011\006\003\125\004\006\023\002\110\125\061
+\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145
+\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151\143
+\162\157\163\145\143\040\114\164\144\056\061\027\060\025\006\003
+\125\004\141\014\016\126\101\124\110\125\055\062\063\065\070\064
+\064\071\067\061\042\060\040\006\003\125\004\003\014\031\145\055
+\123\172\151\147\156\157\040\124\114\123\040\122\157\157\164\040
+\103\101\040\062\060\062\063
+END
+CKA_ID UTF8 "0"
+CKA_ISSUER MULTILINE_OCTAL
+\060\165\061\013\060\011\006\003\125\004\006\023\002\110\125\061
+\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145
+\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151\143
+\162\157\163\145\143\040\114\164\144\056\061\027\060\025\006\003
+\125\004\141\014\016\126\101\124\110\125\055\062\063\065\070\064
+\064\071\067\061\042\060\040\006\003\125\004\003\014\031\145\055
+\123\172\151\147\156\157\040\124\114\123\040\122\157\157\164\040
+\103\101\040\062\060\062\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\015\000\350\157\030\173\326\071\153\230\112\111\230\012
+END
+CKA_VALUE MULTILINE_OCTAL
+\060\202\002\317\060\202\002\061\240\003\002\001\002\002\015\000
+\350\157\030\173\326\071\153\230\112\111\230\012\060\012\006\010
+\052\206\110\316\075\004\003\004\060\165\061\013\060\011\006\003
+\125\004\006\023\002\110\125\061\021\060\017\006\003\125\004\007
+\014\010\102\165\144\141\160\145\163\164\061\026\060\024\006\003
+\125\004\012\014\015\115\151\143\162\157\163\145\143\040\114\164
+\144\056\061\027\060\025\006\003\125\004\141\014\016\126\101\124
+\110\125\055\062\063\065\070\064\064\071\067\061\042\060\040\006
+\003\125\004\003\014\031\145\055\123\172\151\147\156\157\040\124
+\114\123\040\122\157\157\164\040\103\101\040\062\060\062\063\060
+\036\027\015\062\063\060\067\061\067\061\064\060\060\060\060\132
+\027\015\063\070\060\067\061\067\061\064\060\060\060\060\132\060
+\165\061\013\060\011\006\003\125\004\006\023\002\110\125\061\021
+\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145\163
+\164\061\026\060\024\006\003\125\004\012\014\015\115\151\143\162
+\157\163\145\143\040\114\164\144\056\061\027\060\025\006\003\125
+\004\141\014\016\126\101\124\110\125\055\062\063\065\070\064\064
+\071\067\061\042\060\040\006\003\125\004\003\014\031\145\055\123
+\172\151\147\156\157\040\124\114\123\040\122\157\157\164\040\103
+\101\040\062\060\062\063\060\201\233\060\020\006\007\052\206\110
+\316\075\002\001\006\005\053\201\004\000\043\003\201\206\000\004
+\000\150\017\337\242\174\074\252\164\210\141\012\215\302\114\245
+\001\042\024\324\367\140\167\102\234\012\070\140\241\214\147\076
+\263\143\351\372\221\260\213\113\346\071\337\002\302\060\001\122
+\000\277\337\214\355\131\255\062\145\253\011\131\120\265\031\302
+\150\034\000\340\005\137\332\120\046\034\303\254\004\042\305\072
+\115\357\351\127\130\066\243\301\031\123\020\012\321\315\077\357
+\113\065\032\103\217\102\023\114\271\054\032\234\276\060\266\304
+\336\334\113\235\344\244\074\313\056\331\255\337\337\175\011\337
+\056\222\377\241\243\143\060\141\060\017\006\003\125\035\023\001
+\001\377\004\005\060\003\001\001\377\060\016\006\003\125\035\017
+\001\001\377\004\004\003\002\001\006\060\035\006\003\125\035\016
+\004\026\004\024\131\204\002\142\132\106\170\365\135\334\217\012
+\020\050\043\334\325\326\373\105\060\037\006\003\125\035\043\004
+\030\060\026\200\024\131\204\002\142\132\106\170\365\135\334\217
+\012\020\050\043\334\325\326\373\105\060\012\006\010\052\206\110
+\316\075\004\003\004\003\201\213\000\060\201\207\002\102\001\055
+\332\256\365\056\170\266\146\270\237\266\160\177\146\164\317\354
+\216\174\376\300\001\171\232\316\122\002\347\303\321\014\172\155
+\313\265\136\356\027\244\233\333\004\166\356\051\051\350\257\373
+\255\254\122\364\327\053\326\167\204\020\275\305\322\050\150\064
+\002\101\065\166\132\165\363\222\206\010\365\262\036\012\366\145
+\013\332\166\307\122\377\013\036\200\160\042\060\303\063\333\030
+\355\204\327\213\354\355\323\250\143\201\265\126\174\107\307\126
+\060\224\150\163\153\322\056\251\271\331\054\034\051\275\014\272
+\271\145\213
+END
+CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
+CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE
+CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE
+
+# Trust for "e-Szigno TLS Root CA 2023"
+# Issuer: CN=e-Szigno TLS Root CA 2023,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU
+# Serial Number:00:e8:6f:18:7b:d6:39:6b:98:4a:49:98:0a
+# Subject: CN=e-Szigno TLS Root CA 2023,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU
+# Not Valid Before: Mon Jul 17 14:00:00 2023
+# Not Valid After : Sat Jul 17 14:00:00 2038
+# Fingerprint (SHA-256): B4:91:41:50:2D:00:66:3D:74:0F:2E:7E:C3:40:C5:28:00:96:26:66:12:1A:36:D0:9C:F7:DD:2B:90:38:4F:B4
+# Fingerprint (SHA1): 6F:9A:D5:D5:DF:E8:2C:EB:BE:37:07:EE:4F:4F:52:58:29:41:D1:FE
+CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
+CKA_TOKEN CK_BBOOL CK_TRUE
+CKA_PRIVATE CK_BBOOL CK_FALSE
+CKA_MODIFIABLE CK_BBOOL CK_FALSE
+CKA_LABEL UTF8 "e-Szigno TLS Root CA 2023"
+CKA_CERT_SHA1_HASH MULTILINE_OCTAL
+\157\232\325\325\337\350\054\353\276\067\007\356\117\117\122\130
+\051\101\321\376
+END
+CKA_CERT_MD5_HASH MULTILINE_OCTAL
+\152\351\231\164\245\332\136\361\331\056\362\310\321\206\213\161
+END
+CKA_ISSUER MULTILINE_OCTAL
+\060\165\061\013\060\011\006\003\125\004\006\023\002\110\125\061
+\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145
+\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151\143
+\162\157\163\145\143\040\114\164\144\056\061\027\060\025\006\003
+\125\004\141\014\016\126\101\124\110\125\055\062\063\065\070\064
+\064\071\067\061\042\060\040\006\003\125\004\003\014\031\145\055
+\123\172\151\147\156\157\040\124\114\123\040\122\157\157\164\040
+\103\101\040\062\060\062\063
+END
+CKA_SERIAL_NUMBER MULTILINE_OCTAL
+\002\015\000\350\157\030\173\326\071\153\230\112\111\230\012
+END
+CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
+CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
+CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
+CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE

From 1ecc5962a28c66bb59ffddad0a0a081e9620fa8d Mon Sep 17 00:00:00 2001
From: lilianakatrina684-a11y <lilianakatrina684@gmail.com>
Date: Tue, 31 Mar 2026 06:34:32 -0600
Subject: [PATCH 254/267] doc: fix 'transfered' typo in quic.md
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62492
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
---
 doc/api/quic.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/api/quic.md b/doc/api/quic.md
index b23a46108b8508..5fc54450bc7b7f 100644
--- a/doc/api/quic.md
+++ b/doc/api/quic.md
@@ -519,7 +519,7 @@ added: v23.8.0
 
 Sends an unreliable datagram to the remote peer, returning the datagram ID.
 If the datagram payload is specified as an `ArrayBufferView`, then ownership of
-that view will be transfered to the underlying stream.
+that view will be transferred to the underlying stream.
 
 ### `session.stats`
 

From 12fc3c6a304aea15425694a3925663cbb90a7a1b Mon Sep 17 00:00:00 2001
From: Antoine du Hamel <duhamelantoine1995@gmail.com>
Date: Tue, 31 Mar 2026 16:52:36 +0200
Subject: [PATCH 255/267] doc: clarify that features cannot be both
 experimental and deprecated

PR-URL: https://github.com/nodejs/node/pull/62456
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
---
 doc/contributing/collaborator-guide.md | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/doc/contributing/collaborator-guide.md b/doc/contributing/collaborator-guide.md
index 6f2e400d440181..99b3ec84b3b9e0 100644
--- a/doc/contributing/collaborator-guide.md
+++ b/doc/contributing/collaborator-guide.md
@@ -387,6 +387,12 @@ undergo deprecation. The exceptions to this rule are:
 * Changes to errors thrown by dependencies of Node.js, such as V8.
 * One-time exceptions granted by the TSC.
 
+Experimental and undocumented APIs are not considered stable, therefore are
+typically removed without a deprecation cycle. However, if such API has gotten
+some non-trivial adoption in the ecosystem, it (or a subset of it) can undergo
+deprecation – at which point, changes to that API (or at least, its deprecated
+subset) should follow [semantic versioning][] rules.
+
 For more information, see [Deprecations](#deprecations).
 
 #### Breaking changes to internal elements
@@ -526,8 +532,8 @@ the three Deprecation levels. Documentation-Only Deprecations can land in a
 minor release. They can not change to a Runtime Deprecation until the next major
 release.
 
-No API can change to End-of-Life without going through a Runtime Deprecation
-cycle. There is no rule that deprecated code must progress to End-of-Life.
+No deprecated APIs can change to End-of-Life without going through a Runtime
+Deprecation cycle. There is no rule that deprecated code must progress to End-of-Life.
 Documentation-Only and Runtime Deprecations can remain in place for an unlimited
 duration.
 
@@ -1059,6 +1065,7 @@ need to be attached anymore, as only important bugfixes will be included.
 [node-core-utils-issues]: https://github.com/nodejs/node-core-utils/issues
 [ppc]: https://github.com/orgs/nodejs/teams/platform-ppc
 [s390]: https://github.com/orgs/nodejs/teams/platform-s390
+[semantic versioning]: https://semver.org/
 [smartos]: https://github.com/orgs/nodejs/teams/platform-smartos
 [unreliable tests]: https://github.com/nodejs/node/issues?q=is%3Aopen+is%3Aissue+label%3A%22CI+%2F+flaky+test%22
 [windows]: https://github.com/orgs/nodejs/teams/platform-windows

From 7f234add8e0d7bfee9eddbcf6a7ca762dc83708e Mon Sep 17 00:00:00 2001
From: Geoffrey Booth <webadmin@geoffreybooth.com>
Date: Tue, 31 Mar 2026 08:04:01 -0700
Subject: [PATCH 256/267] doc: deprecate `module.register()` (DEP0205)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/62395
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
---
 doc/api/deprecations.md            | 25 +++++++++++++++++++++++++
 doc/api/module.md                  |  3 ++-
 test/doctool/test-doc-api-json.mjs |  2 +-
 3 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md
index e99da121f2225c..378581dc03ae3a 100644
--- a/doc/api/deprecations.md
+++ b/doc/api/deprecations.md
@@ -4417,6 +4417,28 @@ Type: Documentation-only
 Passing a non-extractable [`CryptoKey`][] to [`KeyObject.from()`][] is
 deprecated and will throw an error in a future version.
 
+### DEP0205: `module.register()`
+
+<!-- YAML
+changes:
+  - version: REPLACEME
+    pr-url: https://github.com/nodejs/node/pull/62395
+    description: Documentation-only deprecation.
+-->
+
+Type: Documentation-only
+
+[`module.register()`][] is deprecated. Use [`module.registerHooks()`][]
+instead.
+
+The `module.register()` API provides off-thread async hooks for customizing ES modules;
+the `module.registerHooks()` API provides similar hooks that are synchronous, in-thread, and
+work for all types of modules.
+Supporting async hooks has proven to be complex, involving worker threads orchestration, and there are issues
+that have proven unresolveable. See [caveats of asynchronous customization hooks][]. Please migrate to
+`module.registerHooks()` as soon as possible as `module.register()` will be
+removed in a future version of Node.js.
+
 [DEP0142]: #dep0142-repl_builtinlibs
 [NIST SP 800-38D]: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf
 [RFC 6066]: https://tools.ietf.org/html/rfc6066#section-3
@@ -4524,6 +4546,8 @@ deprecated and will throw an error in a future version.
 [`message.trailers`]: http.md#messagetrailers
 [`mock`]: test.md#mocking
 [`module.createRequire()`]: module.md#modulecreaterequirefilename
+[`module.register()`]: module.md#moduleregisterspecifier-parenturl-options
+[`module.registerHooks()`]: module.md#moduleregisterhooksoptions
 [`os.networkInterfaces()`]: os.md#osnetworkinterfaces
 [`os.tmpdir()`]: os.md#ostmpdir
 [`process.env`]: process.md#processenv
@@ -4577,6 +4601,7 @@ deprecated and will throw an error in a future version.
 [`zlib.bytesWritten`]: zlib.md#zlibbyteswritten
 [alloc]: buffer.md#static-method-bufferallocsize-fill-encoding
 [alloc_unsafe_size]: buffer.md#static-method-bufferallocunsafesize
+[caveats of asynchronous customization hooks]: module.md#caveats-of-asynchronous-customization-hooks
 [from_arraybuffer]: buffer.md#static-method-bufferfromarraybuffer-byteoffset-length
 [from_string_encoding]: buffer.md#static-method-bufferfromstring-encoding
 [legacy URL API]: url.md#legacy-url-api
diff --git a/doc/api/module.md b/doc/api/module.md
index c48f7dac40881d..39487ac14ae485 100644
--- a/doc/api/module.md
+++ b/doc/api/module.md
@@ -178,6 +178,7 @@ isBuiltin('wss'); // false
 added:
   - v20.6.0
   - v18.19.0
+deprecated: REPLACEME
 changes:
   - version:
     - v23.6.1
@@ -193,7 +194,7 @@ changes:
     description: Add support for WHATWG URL instances.
 -->
 
-> Stability: 1.1 - Active development
+> Stability: 0 - Deprecated: Use [`module.registerHooks()`][] instead.
 
 * `specifier` {string|URL} Customization hooks to be registered; this should be
   the same string that would be passed to `import()`, except that if it is
diff --git a/test/doctool/test-doc-api-json.mjs b/test/doctool/test-doc-api-json.mjs
index ffe50075c7bc71..0671436b3b50d0 100644
--- a/test/doctool/test-doc-api-json.mjs
+++ b/test/doctool/test-doc-api-json.mjs
@@ -159,5 +159,5 @@ for await (const dirent of await fs.opendir(new URL('../../out/doc/api/', import
   assert.partialDeepStrictEqual(allExpectedKeys, findAllKeys(json));
 }
 
-assert.strictEqual(numberOfDeprecatedSections, 41); // Increase this number every time a new API is deprecated.
+assert.strictEqual(numberOfDeprecatedSections, 42); // Increase this number every time a new API is deprecated.
 assert.strictEqual(numberOfRemovedAPIs, 46); // Increase this number every time a section is marked as removed.

From bef194982338a585d51d76ba6854ef809953d518 Mon Sep 17 00:00:00 2001
From: Thibaud Michaud <thibaudm@chromium.org>
Date: Thu, 2 Apr 2026 13:26:54 -0700
Subject: [PATCH 257/267] deps: V8: cherry-pick 33e7739c134d

Original commit message:

  [wasm][exnref] Enable exnref

  R=mliedtke@chromium.org
  CC=ecmziegler@chromium.org

  Bug: 42204334
  Change-Id: I0ddf1d29c936d73f7bb7909775a6bbd9a6ec5e2f
  Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6458423
  Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
  Reviewed-by: Matthias Liedtke <mliedtke@chromium.org>
  Cr-Commit-Position: refs/heads/main@{#99795}

PR-URL: https://github.com/nodejs/node/pull/62567
Refs: https://github.com/v8/v8/commit/33e7739c134d24c94fdda02ab631eefed6bd18df
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
---
 common.gypi                           |  2 +-
 deps/v8/src/wasm/wasm-feature-flags.h | 13 +++++++------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/common.gypi b/common.gypi
index 87d35a2771812c..576d5057d988fc 100644
--- a/common.gypi
+++ b/common.gypi
@@ -38,7 +38,7 @@
 
     # Reset this number to 0 on major V8 upgrades.
     # Increment by one for each non-official patch applied to deps/v8.
-    'v8_embedder_string': '-node.47',
+    'v8_embedder_string': '-node.48',
 
     ##### V8 defaults for Node.js #####
 
diff --git a/deps/v8/src/wasm/wasm-feature-flags.h b/deps/v8/src/wasm/wasm-feature-flags.h
index 1f7c5f4e290a01..4fb01e8fba9d8a 100644
--- a/deps/v8/src/wasm/wasm-feature-flags.h
+++ b/deps/v8/src/wasm/wasm-feature-flags.h
@@ -105,11 +105,6 @@
   /* V8 side owner: jkummerow */                                               \
   V(imported_strings_utf8, "imported strings (utf8 features)", false)          \
                                                                                \
-  /* Exnref */                                                                 \
-  /* This flag enables the new exception handling proposal */                  \
-  /* V8 side owner: thibaudm */                                                \
-  V(exnref, "exnref", false)                                                   \
-                                                                               \
   /* JavaScript Promise Integration proposal. */                               \
   /* https://github.com/WebAssembly/js-promise-integration */                  \
   /* V8 side owner: thibaudm, fgm */                                           \
@@ -130,7 +125,13 @@
   /* https://github.com/WebAssembly/js-string-builtins */                      \
   /* V8 side owner: jkummerow */                                               \
   /* Shipped in v13.0 */                                                       \
-  V(imported_strings, "imported strings", true)
+  V(imported_strings, "imported strings", true)                                \
+                                                                               \
+  /* Exnref */                                                                 \
+  /* This flag enables the new exception handling proposal */                  \
+  /* V8 side owner: thibaudm */                                                \
+  /* Shipped in v13.7 */                                                       \
+  V(exnref, "exnref", true)
 
 // Combination of all available wasm feature flags.
 #define FOREACH_WASM_FEATURE_FLAG(V)        \

From 73ea387ad71af0000fc9a7402203654e3deeb67a Mon Sep 17 00:00:00 2001
From: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>
Date: Sat, 14 Feb 2026 09:38:35 +0100
Subject: [PATCH 258/267] doc: remove obsolete Boxstarter automated install

PR-URL: https://github.com/nodejs/node/pull/61785
Backport-PR-URL: https://github.com/nodejs/node/pull/62586
Fixes: https://github.com/nodejs/node/issues/61690
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
---
 BUILDING.md                        | 34 ------------------------------
 tools/bootstrap/README.md          |  2 --
 tools/bootstrap/windows_boxstarter | 24 ---------------------
 3 files changed, 60 deletions(-)
 delete mode 100644 tools/bootstrap/README.md
 delete mode 100644 tools/bootstrap/windows_boxstarter

diff --git a/BUILDING.md b/BUILDING.md
index eb0606eb2dff65..23d047563a64a7 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -38,7 +38,6 @@ file a new issue.
     * [Windows Prerequisites](#windows-prerequisites)
       * [Option 1: Manual install](#option-1-manual-install)
       * [Option 2: Automated install with WinGet](#option-2-automated-install-with-winget)
-      * [Option 3: Automated install with Boxstarter](#option-3-automated-install-with-boxstarter)
     * [Building Node.js](#building-nodejs-2)
       * [Using ccache](#using-ccache)
   * [Android](#android)
@@ -729,39 +728,6 @@ winget configure .\.configurations\configuration.dsc.yaml
 
 To add optional components for MSI or ARM64 builds, refer to [Option 1: Manual install](#option-1-manual-install).
 
-##### Option 3: Automated install with Boxstarter
-
-A [Boxstarter](https://boxstarter.org/) script can be used for easy setup of
-Windows systems with all the required prerequisites for Node.js development.
-This script will install the following [Chocolatey](https://chocolatey.org/)
-packages:
-
-* [Git for Windows](https://chocolatey.org/packages/git) with the `git` and
-  Unix tools added to the `PATH`
-* [Python 3.x](https://chocolatey.org/packages/python)
-* [Visual Studio 2022 Build Tools](https://chocolatey.org/packages/visualstudio2022buildtools)
-  with [Visual C++ workload](https://chocolatey.org/packages/visualstudio2022-workload-vctools)
-* [NetWide Assembler](https://chocolatey.org/packages/nasm)
-
-To install Node.js prerequisites using
-[Boxstarter WebLauncher](https://boxstarter.org/weblauncher), visit
-<https://boxstarter.org/package/nr/url?https://raw.githubusercontent.com/nodejs/node/HEAD/tools/bootstrap/windows_boxstarter>
-with a supported browser.
-
-Alternatively, you can use PowerShell. Run those commands from
-an elevated (Administrator) PowerShell terminal:
-
-```powershell
-Set-ExecutionPolicy Unrestricted -Force
-iex ((New-Object System.Net.WebClient).DownloadString('https://boxstarter.org/bootstrapper.ps1'))
-get-boxstarter -Force
-Install-BoxstarterPackage https://raw.githubusercontent.com/nodejs/node/HEAD/tools/bootstrap/windows_boxstarter -DisableReboots
-refreshenv
-```
-
-The entire installation using Boxstarter will take up approximately 10 GB of
-disk space.
-
 #### Building Node.js
 
 * Remember to first clone the Node.js repository with the Git command
diff --git a/tools/bootstrap/README.md b/tools/bootstrap/README.md
deleted file mode 100644
index 0b93055811d2ac..00000000000000
--- a/tools/bootstrap/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Refer to [BUILDING.md](../../BUILDING.md#option-3-automated-install-with-boxstarter) for
-instructions on how to build Node.js with boxstarter.
diff --git a/tools/bootstrap/windows_boxstarter b/tools/bootstrap/windows_boxstarter
deleted file mode 100644
index fc860180aab36f..00000000000000
--- a/tools/bootstrap/windows_boxstarter
+++ /dev/null
@@ -1,24 +0,0 @@
-# Boxstarter (http://boxstarter.org/) script for Node.js prerequisites
-#
-# To install either open this link in IE or Edge:
-#  http://boxstarter.org/package/nr/url?https://raw.githubusercontent.com/nodejs/node/HEAD/tools/bootstrap/windows_boxstarter
-#
-# Or run those commands in an elevated Powershell terminal:
-#  iex ((New-Object System.Net.WebClient).DownloadString('http://boxstarter.org/bootstrapper.ps1'))
-#  get-boxstarter -Force
-#  Install-BoxstarterPackage https://raw.githubusercontent.com/nodejs/node/HEAD/tools/bootstrap/windows_boxstarter -DisableReboots
-#
-# For more detail see
-# https://github.com/nodejs/node/blob/HEAD/tools/bootstrap/README.md
-#
-
-# Git and Unix tools will be added to the PATH
-choco install git -params /GitAndUnixToolsOnPath -y
-choco install python3 -y
-
-# Installs VS 2022 Build Tools
-choco install visualstudio2022buildtools -y
-choco install visualstudio2022-workload-vctools -y --params="--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.VC.ATL.ARM64 --add Microsoft.NetCore.Component.SDK --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset"
-
-# NASM
-choco install nasm -y

From 3c9c0f85771c8d3acc5f32b3fe45850396e65e98 Mon Sep 17 00:00:00 2001
From: Nikita Skovoroda <chalkerx@gmail.com>
Date: Fri, 14 Nov 2025 00:21:17 +0300
Subject: [PATCH 259/267] test: fix test-buffer-zero-fill-cli to be effective

PR-URL: https://github.com/nodejs/node/pull/60623
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
---
 test/parallel/test-buffer-zero-fill-cli.js | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/test/parallel/test-buffer-zero-fill-cli.js b/test/parallel/test-buffer-zero-fill-cli.js
index 4299f81039b0b5..f3feb2a3e1b05f 100644
--- a/test/parallel/test-buffer-zero-fill-cli.js
+++ b/test/parallel/test-buffer-zero-fill-cli.js
@@ -14,6 +14,13 @@ function isZeroFilled(buf) {
   return true;
 }
 
+// We have to consume the data from the pool as otherwise
+// we would be testing what's in snapshot, which is zero-filled
+// regardless of the flag presence, and we want to test the flag
+for (let i = 0; i < 8; i++) {
+  assert(isZeroFilled(Buffer.allocUnsafe(1024)));
+}
+
 // This can be somewhat unreliable because the
 // allocated memory might just already happen to
 // contain all zeroes. The test is run multiple
@@ -22,7 +29,8 @@ for (let i = 0; i < 50; i++) {
   const bufs = [
     Buffer.alloc(20),
     Buffer.allocUnsafe(20),
-    SlowBuffer(20),
+    SlowBuffer(20), // Heap
+    Buffer.allocUnsafeSlow(128), // Alloc
     Buffer(20),
     new SlowBuffer(20),
   ];

From 0b152449afb5d7830df796b53253d2ba1bf047e3 Mon Sep 17 00:00:00 2001
From: Dmytro Semchuk <59896147+x0m4ek@users.noreply.github.com>
Date: Tue, 17 Feb 2026 21:59:22 +0100
Subject: [PATCH 260/267] doc: fix typo in --disable-wasm-trap-handler
 description
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/61820
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 doc/api/cli.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/api/cli.md b/doc/api/cli.md
index 935c5375d8d62a..48fa4485dde712 100644
--- a/doc/api/cli.md
+++ b/doc/api/cli.md
@@ -699,7 +699,7 @@ added:
 
 By default, Node.js enables trap-handler-based WebAssembly bound
 checks. As a result, V8 does not need to insert inline bound checks
-int the code compiled from WebAssembly which may speedup WebAssembly
+in the code compiled from WebAssembly which may speed up WebAssembly
 execution significantly, but this optimization requires allocating
 a big virtual memory cage (currently 10GB). If the Node.js process
 does not have access to a large enough virtual memory address space

From d8ea1aaa8a69a476fd7a914fab721369da923eb9 Mon Sep 17 00:00:00 2001
From: Anna Henningsen <anna@addaleax.net>
Date: Tue, 3 Mar 2026 17:55:11 +0100
Subject: [PATCH 261/267] src: make AsyncWrap subclass internal field counts
 explicit
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This helps ensure that we already set the correct number of
internal fields when creating objects, even if the number of
internal fields of e.g. AsyncWrap changes over time.

PR-URL: https://github.com/nodejs/node/pull/62103
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
---
 src/async_wrap-inl.h                         |  9 +++++++++
 src/async_wrap.h                             |  7 +++++++
 src/base_object.cc                           |  9 +++++----
 src/base_object.h                            |  4 ++--
 src/cares_wrap.cc                            | 12 +++---------
 src/crypto/crypto_keys.cc                    |  2 +-
 src/crypto/crypto_sig.cc                     |  4 ++--
 src/crypto/crypto_tls.cc                     |  4 ++--
 src/crypto/crypto_tls.h                      |  5 +++++
 src/crypto/crypto_util.h                     |  2 +-
 src/crypto/crypto_x509.cc                    |  2 +-
 src/heap_utils.cc                            |  7 ++++++-
 src/histogram.cc                             |  4 ++--
 src/histogram.h                              | 12 +++++++++++-
 src/js_stream.cc                             |  3 +--
 src/js_stream.h                              |  5 +++++
 src/node_blob.cc                             |  5 ++---
 src/node_file.h                              |  3 ++-
 src/node_http2.cc                            |  4 ++--
 src/node_http2.h                             |  5 +++++
 src/node_postmortem_metadata.cc              |  6 ++++++
 src/node_sqlite.cc                           |  2 +-
 src/node_v8.cc                               |  2 +-
 src/pipe_wrap.cc                             |  5 ++---
 src/quic/logstream.h                         |  4 ++++
 src/stream_base.h                            | 14 ++++++++++++--
 src/stream_wrap.cc                           |  8 ++++----
 src/stream_wrap.h                            |  5 +++++
 src/tcp_wrap.cc                              |  6 ++----
 src/tty_wrap.cc                              |  2 +-
 src/udp_wrap.cc                              |  4 +---
 test/cctest/test_node_postmortem_metadata.cc | 18 ++++++++++++++++--
 32 files changed, 129 insertions(+), 55 deletions(-)

diff --git a/src/async_wrap-inl.h b/src/async_wrap-inl.h
index afef24c7c64e4a..432b22e6c8d185 100644
--- a/src/async_wrap-inl.h
+++ b/src/async_wrap-inl.h
@@ -89,6 +89,15 @@ inline v8::Local<v8::FunctionTemplate> AsyncWrap::GetConstructorTemplate(
   return GetConstructorTemplate(env->isolate_data());
 }
 
+// static
+v8::Local<v8::FunctionTemplate> AsyncWrap::MakeLazilyInitializedJSTemplate(
+    Environment* env, int internal_field_count) {
+  v8::Local<v8::FunctionTemplate> t =
+      BaseObject::MakeLazilyInitializedJSTemplate(env, internal_field_count);
+  t->Inherit(AsyncWrap::GetConstructorTemplate(env));
+  return t;
+}
+
 }  // namespace node
 
 #endif  // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
diff --git a/src/async_wrap.h b/src/async_wrap.h
index c64dea2790d651..8ca74820da5674 100644
--- a/src/async_wrap.h
+++ b/src/async_wrap.h
@@ -118,6 +118,10 @@ class ExternalReferenceRegistry;
 
 class AsyncWrap : public BaseObject {
  public:
+  enum InternalFields {
+    kInternalFieldCount = BaseObject::kInternalFieldCount,
+  };
+
   enum ProviderType {
 #define V(PROVIDER)                                                           \
     PROVIDER_ ## PROVIDER,
@@ -231,6 +235,9 @@ class AsyncWrap : public BaseObject {
 
   bool IsDoneInitializing() const override;
 
+  static inline v8::Local<v8::FunctionTemplate> MakeLazilyInitializedJSTemplate(
+      Environment* env, int internal_field_count = kInternalFieldCount);
+
  private:
   ProviderType provider_type_ = PROVIDER_NONE;
   bool init_hook_ran_ = false;
diff --git a/src/base_object.cc b/src/base_object.cc
index 404e2aa8c88d0c..8a14a8c32626f9 100644
--- a/src/base_object.cc
+++ b/src/base_object.cc
@@ -81,15 +81,16 @@ void BaseObject::LazilyInitializedJSTemplateConstructor(
 }
 
 Local<FunctionTemplate> BaseObject::MakeLazilyInitializedJSTemplate(
-    Environment* env) {
-  return MakeLazilyInitializedJSTemplate(env->isolate_data());
+    Environment* env, int internal_field_count) {
+  return MakeLazilyInitializedJSTemplate(env->isolate_data(),
+                                         internal_field_count);
 }
 
 Local<FunctionTemplate> BaseObject::MakeLazilyInitializedJSTemplate(
-    IsolateData* isolate_data) {
+    IsolateData* isolate_data, int internal_field_count) {
   Local<FunctionTemplate> t = NewFunctionTemplate(
       isolate_data->isolate(), LazilyInitializedJSTemplateConstructor);
-  t->InstanceTemplate()->SetInternalFieldCount(BaseObject::kInternalFieldCount);
+  t->InstanceTemplate()->SetInternalFieldCount(internal_field_count);
   return t;
 }
 
diff --git a/src/base_object.h b/src/base_object.h
index ad5a3194007b0a..541e7df7868f75 100644
--- a/src/base_object.h
+++ b/src/base_object.h
@@ -109,9 +109,9 @@ class BaseObject : public MemoryRetainer {
   // the `BaseObject*` pointer) and a constructor that initializes that field
   // to `nullptr`.
   static v8::Local<v8::FunctionTemplate> MakeLazilyInitializedJSTemplate(
-      IsolateData* isolate);
+      IsolateData* isolate, int internal_field_count = kInternalFieldCount);
   static v8::Local<v8::FunctionTemplate> MakeLazilyInitializedJSTemplate(
-      Environment* env);
+      Environment* env, int internal_field_count = kInternalFieldCount);
 
   // Setter/Getter pair for internal fields that can be passed to SetAccessor.
   template <int Field>
diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc
index b654c821abb238..9bee52cf68ca3b 100644
--- a/src/cares_wrap.cc
+++ b/src/cares_wrap.cc
@@ -2296,19 +2296,13 @@ void Initialize(Local<Object> target,
   NODE_DEFINE_CONSTANT(target, DNS_ORDER_IPV4_FIRST);
   NODE_DEFINE_CONSTANT(target, DNS_ORDER_IPV6_FIRST);
 
-  Local<FunctionTemplate> aiw =
-      BaseObject::MakeLazilyInitializedJSTemplate(env);
-  aiw->Inherit(AsyncWrap::GetConstructorTemplate(env));
+  Local<FunctionTemplate> aiw = AsyncWrap::MakeLazilyInitializedJSTemplate(env);
   SetConstructorFunction(context, target, "GetAddrInfoReqWrap", aiw);
 
-  Local<FunctionTemplate> niw =
-      BaseObject::MakeLazilyInitializedJSTemplate(env);
-  niw->Inherit(AsyncWrap::GetConstructorTemplate(env));
+  Local<FunctionTemplate> niw = AsyncWrap::MakeLazilyInitializedJSTemplate(env);
   SetConstructorFunction(context, target, "GetNameInfoReqWrap", niw);
 
-  Local<FunctionTemplate> qrw =
-      BaseObject::MakeLazilyInitializedJSTemplate(env);
-  qrw->Inherit(AsyncWrap::GetConstructorTemplate(env));
+  Local<FunctionTemplate> qrw = AsyncWrap::MakeLazilyInitializedJSTemplate(env);
   SetConstructorFunction(context, target, "QueryReqWrap", qrw);
 
   Local<FunctionTemplate> channel_wrap =
diff --git a/src/crypto/crypto_keys.cc b/src/crypto/crypto_keys.cc
index 0651166f5e74ad..c05872d73f6fc2 100644
--- a/src/crypto/crypto_keys.cc
+++ b/src/crypto/crypto_keys.cc
@@ -1614,7 +1614,7 @@ void NativeKeyObject::CreateNativeKeyObjectClass(
   Local<FunctionTemplate> t =
       NewFunctionTemplate(isolate, NativeKeyObject::New);
   t->InstanceTemplate()->SetInternalFieldCount(
-      KeyObjectHandle::kInternalFieldCount);
+      NativeKeyObject::kInternalFieldCount);
 
   Local<Value> ctor;
   if (!t->GetFunction(env->context()).ToLocal(&ctor))
diff --git a/src/crypto/crypto_sig.cc b/src/crypto/crypto_sig.cc
index 3cf450abafb5f5..b4537efbac4bde 100644
--- a/src/crypto/crypto_sig.cc
+++ b/src/crypto/crypto_sig.cc
@@ -310,7 +310,7 @@ void Sign::Initialize(Environment* env, Local<Object> target) {
   Isolate* isolate = env->isolate();
   Local<FunctionTemplate> t = NewFunctionTemplate(isolate, New);
 
-  t->InstanceTemplate()->SetInternalFieldCount(SignBase::kInternalFieldCount);
+  t->InstanceTemplate()->SetInternalFieldCount(Sign::kInternalFieldCount);
 
   SetProtoMethod(isolate, t, "init", SignInit);
   SetProtoMethod(isolate, t, "update", SignUpdate);
@@ -437,7 +437,7 @@ void Verify::Initialize(Environment* env, Local<Object> target) {
   Isolate* isolate = env->isolate();
   Local<FunctionTemplate> t = NewFunctionTemplate(isolate, New);
 
-  t->InstanceTemplate()->SetInternalFieldCount(SignBase::kInternalFieldCount);
+  t->InstanceTemplate()->SetInternalFieldCount(Verify::kInternalFieldCount);
 
   SetProtoMethod(isolate, t, "init", VerifyInit);
   SetProtoMethod(isolate, t, "update", VerifyUpdate);
diff --git a/src/crypto/crypto_tls.cc b/src/crypto/crypto_tls.cc
index 5c80184ffb5eae..31b7905b72d7f9 100644
--- a/src/crypto/crypto_tls.cc
+++ b/src/crypto/crypto_tls.cc
@@ -2172,11 +2172,11 @@ void TLSWrap::Initialize(
 
   NODE_DEFINE_CONSTANT(target, HAVE_SSL_TRACE);
 
-  Local<FunctionTemplate> t = BaseObject::MakeLazilyInitializedJSTemplate(env);
+  Local<FunctionTemplate> t = AsyncWrap::MakeLazilyInitializedJSTemplate(env);
   Local<String> tlsWrapString =
       FIXED_ONE_BYTE_STRING(env->isolate(), "TLSWrap");
   t->SetClassName(tlsWrapString);
-  t->InstanceTemplate()->SetInternalFieldCount(StreamBase::kInternalFieldCount);
+  t->InstanceTemplate()->SetInternalFieldCount(TLSWrap::kInternalFieldCount);
 
   Local<FunctionTemplate> get_write_queue_size =
       FunctionTemplate::New(env->isolate(),
diff --git a/src/crypto/crypto_tls.h b/src/crypto/crypto_tls.h
index f02c37182ff189..87063b50bb7455 100644
--- a/src/crypto/crypto_tls.h
+++ b/src/crypto/crypto_tls.h
@@ -43,6 +43,11 @@ class TLSWrap : public AsyncWrap,
                 public StreamBase,
                 public StreamListener {
  public:
+  enum InternalFields {
+    kInternalFieldCount = std::max<uint32_t>(AsyncWrap::kInternalFieldCount,
+                                             StreamBase::kInternalFieldCount),
+  };
+
   enum class Kind {
     kClient,
     kServer
diff --git a/src/crypto/crypto_util.h b/src/crypto/crypto_util.h
index d2620b40c8bc4b..640aec3e22f311 100644
--- a/src/crypto/crypto_util.h
+++ b/src/crypto/crypto_util.h
@@ -348,7 +348,7 @@ class CryptoJob : public AsyncWrap, public ThreadPoolWork {
     v8::Local<v8::FunctionTemplate> job = NewFunctionTemplate(isolate, new_fn);
     job->Inherit(AsyncWrap::GetConstructorTemplate(env));
     job->InstanceTemplate()->SetInternalFieldCount(
-        AsyncWrap::kInternalFieldCount);
+        CryptoJob::kInternalFieldCount);
     SetProtoMethod(isolate, job, "run", Run);
     SetConstructorFunction(context, target, CryptoJobTraits::JobName, job);
   }
diff --git a/src/crypto/crypto_x509.cc b/src/crypto/crypto_x509.cc
index 496cb272d4f90f..cb1ad6bcfa7ea4 100644
--- a/src/crypto/crypto_x509.cc
+++ b/src/crypto/crypto_x509.cc
@@ -833,7 +833,7 @@ Local<FunctionTemplate> X509Certificate::GetConstructorTemplate(
     Isolate* isolate = env->isolate();
     tmpl = NewFunctionTemplate(isolate, nullptr);
     tmpl->InstanceTemplate()->SetInternalFieldCount(
-        BaseObject::kInternalFieldCount);
+        X509Certificate::kInternalFieldCount);
     tmpl->SetClassName(
         FIXED_ONE_BYTE_STRING(env->isolate(), "X509Certificate"));
     SetProtoMethodNoSideEffect(isolate, tmpl, "subject", Subject);
diff --git a/src/heap_utils.cc b/src/heap_utils.cc
index b64e43eeccb629..e52685546a7ac2 100644
--- a/src/heap_utils.cc
+++ b/src/heap_utils.cc
@@ -267,6 +267,11 @@ class HeapSnapshotStream : public AsyncWrap,
                            public StreamBase,
                            public v8::OutputStream {
  public:
+  enum InternalFields {
+    kInternalFieldCount = std::max<uint32_t>(AsyncWrap::kInternalFieldCount,
+                                             StreamBase::kInternalFieldCount),
+  };
+
   HeapSnapshotStream(
       Environment* env,
       HeapSnapshotPointer&& snapshot,
@@ -401,7 +406,7 @@ BaseObjectPtr<AsyncWrap> CreateHeapSnapshotStream(
     Local<FunctionTemplate> os = FunctionTemplate::New(env->isolate());
     os->Inherit(AsyncWrap::GetConstructorTemplate(env));
     Local<ObjectTemplate> ost = os->InstanceTemplate();
-    ost->SetInternalFieldCount(StreamBase::kInternalFieldCount);
+    ost->SetInternalFieldCount(HeapSnapshotStream::kInternalFieldCount);
     os->SetClassName(
         FIXED_ONE_BYTE_STRING(env->isolate(), "HeapSnapshotStream"));
     StreamBase::AddMethods(env, os);
diff --git a/src/histogram.cc b/src/histogram.cc
index 836a51b0e5aa4b..2bcfcbdd9547db 100644
--- a/src/histogram.cc
+++ b/src/histogram.cc
@@ -270,7 +270,7 @@ Local<FunctionTemplate> HistogramBase::GetConstructorTemplate(
     Local<String> classname = FIXED_ONE_BYTE_STRING(isolate, "Histogram");
     tmpl->SetClassName(classname);
     auto instance = tmpl->InstanceTemplate();
-    instance->SetInternalFieldCount(HistogramImpl::kInternalFieldCount);
+    instance->SetInternalFieldCount(HistogramBase::kInternalFieldCount);
     SetFastMethod(isolate, instance, "record", Record, &fast_record_);
     SetFastMethod(
         isolate, instance, "recordDelta", RecordDelta, &fast_record_delta_);
@@ -326,7 +326,7 @@ Local<FunctionTemplate> IntervalHistogram::GetConstructorTemplate(
     tmpl->Inherit(HandleWrap::GetConstructorTemplate(env));
     tmpl->SetClassName(FIXED_ONE_BYTE_STRING(isolate, "Histogram"));
     auto instance = tmpl->InstanceTemplate();
-    instance->SetInternalFieldCount(HistogramImpl::kInternalFieldCount);
+    instance->SetInternalFieldCount(IntervalHistogram::kInternalFieldCount);
     HistogramImpl::AddMethods(isolate, tmpl);
     SetFastMethod(isolate, instance, "start", Start, &fast_start_);
     SetFastMethod(isolate, instance, "stop", Stop, &fast_stop_);
diff --git a/src/histogram.h b/src/histogram.h
index 29303bd16648da..31c6564b9b1f12 100644
--- a/src/histogram.h
+++ b/src/histogram.h
@@ -71,7 +71,7 @@ class HistogramImpl {
  public:
   enum InternalFields {
     kSlot = BaseObject::kSlot,
-    kImplField = BaseObject::kInternalFieldCount,
+    kImplField = HandleWrap::kInternalFieldCount,
     kInternalFieldCount
   };
 
@@ -133,6 +133,11 @@ class HistogramImpl {
 
 class HistogramBase final : public BaseObject, public HistogramImpl {
  public:
+  enum InternalFields {
+    kInternalFieldCount = std::max<uint32_t>(
+        BaseObject::kInternalFieldCount, HistogramImpl::kInternalFieldCount),
+  };
+
   static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
       IsolateData* isolate_data);
   static void Initialize(IsolateData* isolate_data,
@@ -203,6 +208,11 @@ class HistogramBase final : public BaseObject, public HistogramImpl {
 
 class IntervalHistogram final : public HandleWrap, public HistogramImpl {
  public:
+  enum InternalFields {
+    kInternalFieldCount = std::max<uint32_t>(
+        HandleWrap::kInternalFieldCount, HistogramImpl::kInternalFieldCount),
+  };
+
   enum class StartFlags {
     NONE,
     RESET
diff --git a/src/js_stream.cc b/src/js_stream.cc
index cf04e5ef757593..0d6d6a7ac80afd 100644
--- a/src/js_stream.cc
+++ b/src/js_stream.cc
@@ -210,8 +210,7 @@ void JSStream::Initialize(Local<Object> target,
   Isolate* isolate = env->isolate();
 
   Local<FunctionTemplate> t = NewFunctionTemplate(isolate, New);
-  t->InstanceTemplate()
-    ->SetInternalFieldCount(StreamBase::kInternalFieldCount);
+  t->InstanceTemplate()->SetInternalFieldCount(JSStream::kInternalFieldCount);
   t->Inherit(AsyncWrap::GetConstructorTemplate(env));
 
   SetProtoMethod(isolate, t, "finishWrite", Finish<WriteWrap>);
diff --git a/src/js_stream.h b/src/js_stream.h
index d96b3d0062dc1f..b8c88fd812dcb7 100644
--- a/src/js_stream.h
+++ b/src/js_stream.h
@@ -12,6 +12,11 @@ class Environment;
 
 class JSStream : public AsyncWrap, public StreamBase {
  public:
+  enum InternalFields {
+    kInternalFieldCount = std::max<uint32_t>(AsyncWrap::kInternalFieldCount,
+                                             StreamBase::kInternalFieldCount),
+  };
+
   static void Initialize(v8::Local<v8::Object> target,
                          v8::Local<v8::Value> unused,
                          v8::Local<v8::Context> context,
diff --git a/src/node_blob.cc b/src/node_blob.cc
index 4311d71bb0526f..40407527800075 100644
--- a/src/node_blob.cc
+++ b/src/node_blob.cc
@@ -155,8 +155,7 @@ Local<FunctionTemplate> Blob::GetConstructorTemplate(Environment* env) {
   if (tmpl.IsEmpty()) {
     Isolate* isolate = env->isolate();
     tmpl = NewFunctionTemplate(isolate, nullptr);
-    tmpl->InstanceTemplate()->SetInternalFieldCount(
-        BaseObject::kInternalFieldCount);
+    tmpl->InstanceTemplate()->SetInternalFieldCount(Blob::kInternalFieldCount);
     tmpl->SetClassName(
         FIXED_ONE_BYTE_STRING(env->isolate(), "Blob"));
     SetProtoMethod(isolate, tmpl, "getReader", GetReader);
@@ -318,7 +317,7 @@ Local<FunctionTemplate> Blob::Reader::GetConstructorTemplate(Environment* env) {
     Isolate* isolate = env->isolate();
     tmpl = NewFunctionTemplate(isolate, nullptr);
     tmpl->InstanceTemplate()->SetInternalFieldCount(
-        BaseObject::kInternalFieldCount);
+        Blob::Reader::kInternalFieldCount);
     tmpl->SetClassName(FIXED_ONE_BYTE_STRING(env->isolate(), "BlobReader"));
     SetProtoMethod(env->isolate(), tmpl, "pull", Pull);
     env->set_blob_reader_constructor_template(tmpl);
diff --git a/src/node_file.h b/src/node_file.h
index 224fa6f7ade375..95bc5802051642 100644
--- a/src/node_file.h
+++ b/src/node_file.h
@@ -321,7 +321,8 @@ class FileHandleReadWrap final : public ReqWrap<uv_fs_t> {
 class FileHandle final : public AsyncWrap, public StreamBase {
  public:
   enum InternalFields {
-    kFileHandleBaseField = StreamBase::kInternalFieldCount,
+    kFileHandleBaseField = std::max<uint32_t>(AsyncWrap::kInternalFieldCount,
+                                              StreamBase::kInternalFieldCount),
     kClosingPromiseSlot,
     kInternalFieldCount
   };
diff --git a/src/node_http2.cc b/src/node_http2.cc
index 0c48f07a8d3c6f..084a4773673e5b 100644
--- a/src/node_http2.cc
+++ b/src/node_http2.cc
@@ -3482,7 +3482,7 @@ void Initialize(Local<Object> target,
   Local<FunctionTemplate> setting = FunctionTemplate::New(env->isolate());
   setting->Inherit(AsyncWrap::GetConstructorTemplate(env));
   Local<ObjectTemplate> settingt = setting->InstanceTemplate();
-  settingt->SetInternalFieldCount(AsyncWrap::kInternalFieldCount);
+  settingt->SetInternalFieldCount(Http2Settings::kInternalFieldCount);
   env->set_http2settings_constructor_template(settingt);
 
   Local<FunctionTemplate> stream = FunctionTemplate::New(env->isolate());
@@ -3498,7 +3498,7 @@ void Initialize(Local<Object> target,
   stream->Inherit(AsyncWrap::GetConstructorTemplate(env));
   StreamBase::AddMethods(env, stream);
   Local<ObjectTemplate> streamt = stream->InstanceTemplate();
-  streamt->SetInternalFieldCount(StreamBase::kInternalFieldCount);
+  streamt->SetInternalFieldCount(Http2Stream::kInternalFieldCount);
   env->set_http2stream_constructor_template(streamt);
   SetConstructorFunction(context, target, "Http2Stream", stream);
 
diff --git a/src/node_http2.h b/src/node_http2.h
index b93c93b91f107c..259b71840b66d4 100644
--- a/src/node_http2.h
+++ b/src/node_http2.h
@@ -270,6 +270,11 @@ using Http2Header = NgHeader<Http2HeaderTraits>;
 class Http2Stream : public AsyncWrap,
                     public StreamBase {
  public:
+  enum InternalFields {
+    kInternalFieldCount = std::max<uint32_t>(AsyncWrap::kInternalFieldCount,
+                                             StreamBase::kInternalFieldCount),
+  };
+
   static Http2Stream* New(
       Http2Session* session,
       int32_t id,
diff --git a/src/node_postmortem_metadata.cc b/src/node_postmortem_metadata.cc
index ea7396e54c8107..e40d82c0a5d53f 100644
--- a/src/node_postmortem_metadata.cc
+++ b/src/node_postmortem_metadata.cc
@@ -38,6 +38,8 @@
 extern "C" {
 int nodedbg_const_ContextEmbedderIndex__kEnvironment__int;
 int nodedbg_const_BaseObject__kInternalFieldCount__int;
+int nodedbg_const_HandleWrap__kInternalFieldCount__int;
+int nodedbg_const_ReqWrap__kInternalFieldCount__int;
 uintptr_t nodedbg_offset_ExternalString__data__uintptr_t;
 uintptr_t nodedbg_offset_ReqWrap__req_wrap_queue___ListNode_ReqWrapQueue;
 
@@ -54,6 +56,10 @@ int GenDebugSymbols() {
       ContextEmbedderIndex::kEnvironment;
   nodedbg_const_BaseObject__kInternalFieldCount__int =
       BaseObject::kInternalFieldCount;
+  nodedbg_const_HandleWrap__kInternalFieldCount__int =
+      HandleWrap::kInternalFieldCount;
+  nodedbg_const_ReqWrap__kInternalFieldCount__int =
+      ReqWrap<uv_req_t>::kInternalFieldCount;
 
   nodedbg_offset_ExternalString__data__uintptr_t = NODE_OFF_EXTSTR_DATA;
   nodedbg_offset_ReqWrap__req_wrap_queue___ListNode_ReqWrapQueue =
diff --git a/src/node_sqlite.cc b/src/node_sqlite.cc
index f7942f68fdb46e..d7c5bc5514044a 100644
--- a/src/node_sqlite.cc
+++ b/src/node_sqlite.cc
@@ -3451,7 +3451,7 @@ Local<FunctionTemplate> StatementSyncIterator::GetConstructorTemplate(
     tmpl = NewFunctionTemplate(isolate, IllegalConstructor);
     tmpl->SetClassName(FIXED_ONE_BYTE_STRING(isolate, "StatementSyncIterator"));
     tmpl->InstanceTemplate()->SetInternalFieldCount(
-        StatementSync::kInternalFieldCount);
+        StatementSyncIterator::kInternalFieldCount);
     SetProtoMethod(isolate, tmpl, "next", StatementSyncIterator::Next);
     SetProtoMethod(isolate, tmpl, "return", StatementSyncIterator::Return);
     env->set_sqlite_statement_sync_iterator_constructor_template(tmpl);
diff --git a/src/node_v8.cc b/src/node_v8.cc
index 8dd32dad262679..4ee452d5bc6b67 100644
--- a/src/node_v8.cc
+++ b/src/node_v8.cc
@@ -752,7 +752,7 @@ void Initialize(Local<Object> target,
   // GCProfiler
   Local<FunctionTemplate> t =
       NewFunctionTemplate(env->isolate(), GCProfiler::New);
-  t->InstanceTemplate()->SetInternalFieldCount(BaseObject::kInternalFieldCount);
+  t->InstanceTemplate()->SetInternalFieldCount(GCProfiler::kInternalFieldCount);
   SetProtoMethod(env->isolate(), t, "start", GCProfiler::Start);
   SetProtoMethod(env->isolate(), t, "stop", GCProfiler::Stop);
   SetConstructorFunction(context, target, "GCProfiler", t);
diff --git a/src/pipe_wrap.cc b/src/pipe_wrap.cc
index 2cb61215604047..7e8d37e548964c 100644
--- a/src/pipe_wrap.cc
+++ b/src/pipe_wrap.cc
@@ -72,7 +72,7 @@ void PipeWrap::Initialize(Local<Object> target,
   Isolate* isolate = env->isolate();
 
   Local<FunctionTemplate> t = NewFunctionTemplate(isolate, New);
-  t->InstanceTemplate()->SetInternalFieldCount(StreamBase::kInternalFieldCount);
+  t->InstanceTemplate()->SetInternalFieldCount(PipeWrap::kInternalFieldCount);
 
   t->Inherit(LibuvStreamWrap::GetConstructorTemplate(env));
 
@@ -91,8 +91,7 @@ void PipeWrap::Initialize(Local<Object> target,
   env->set_pipe_constructor_template(t);
 
   // Create FunctionTemplate for PipeConnectWrap.
-  auto cwt = BaseObject::MakeLazilyInitializedJSTemplate(env);
-  cwt->Inherit(AsyncWrap::GetConstructorTemplate(env));
+  auto cwt = AsyncWrap::MakeLazilyInitializedJSTemplate(env);
   SetConstructorFunction(context, target, "PipeConnectWrap", cwt);
 
   // Define constants
diff --git a/src/quic/logstream.h b/src/quic/logstream.h
index b5f2b59e3aa747..b5f4f9af387ce2 100644
--- a/src/quic/logstream.h
+++ b/src/quic/logstream.h
@@ -17,6 +17,10 @@ class LogStream : public AsyncWrap, public StreamBase {
  public:
   static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
       Environment* env);
+  enum InternalFields {
+    kInternalFieldCount = std::max<uint32_t>(AsyncWrap::kInternalFieldCount,
+                                             StreamBase::kInternalFieldCount),
+  };
 
   static BaseObjectPtr<LogStream> Create(Environment* env);
 
diff --git a/src/stream_base.h b/src/stream_base.h
index ccbd769ceaf3c1..be00134eb1fc77 100644
--- a/src/stream_base.h
+++ b/src/stream_base.h
@@ -37,7 +37,7 @@ class StreamReq {
   // BaseObject, and the slots are used for the identical purpose.
   enum InternalFields {
     kSlot = BaseObject::kSlot,
-    kStreamReqField = BaseObject::kInternalFieldCount,
+    kStreamReqField = AsyncWrap::kInternalFieldCount,
     kInternalFieldCount
   };
 
@@ -310,7 +310,7 @@ class StreamBase : public StreamResource {
   // BaseObject (it's possible for it not to, however).
   enum InternalFields {
     kSlot = BaseObject::kSlot,
-    kStreamBaseField = BaseObject::kInternalFieldCount,
+    kStreamBaseField = AsyncWrap::kInternalFieldCount,
     kOnReadFunctionField,
     kInternalFieldCount
   };
@@ -440,6 +440,11 @@ class StreamBase : public StreamResource {
 template <typename OtherBase>
 class SimpleShutdownWrap : public ShutdownWrap, public OtherBase {
  public:
+  enum InternalFields {
+    kInternalFieldCount = std::max<uint32_t>(ShutdownWrap::kInternalFieldCount,
+                                             OtherBase::kInternalFieldCount),
+  };
+
   SimpleShutdownWrap(StreamBase* stream,
                      v8::Local<v8::Object> req_wrap_obj);
 
@@ -457,6 +462,11 @@ class SimpleShutdownWrap : public ShutdownWrap, public OtherBase {
 template <typename OtherBase>
 class SimpleWriteWrap : public WriteWrap, public OtherBase {
  public:
+  enum InternalFields {
+    kInternalFieldCount = std::max<uint32_t>(WriteWrap::kInternalFieldCount,
+                                             OtherBase::kInternalFieldCount),
+  };
+
   SimpleWriteWrap(StreamBase* stream,
                   v8::Local<v8::Object> req_wrap_obj);
 
diff --git a/src/stream_wrap.cc b/src/stream_wrap.cc
index 1508cc097fbf24..b41f6ac7494730 100644
--- a/src/stream_wrap.cc
+++ b/src/stream_wrap.cc
@@ -72,7 +72,8 @@ void LibuvStreamWrap::Initialize(Local<Object> target,
 
   Local<FunctionTemplate> sw =
       NewFunctionTemplate(isolate, IsConstructCallCallback);
-  sw->InstanceTemplate()->SetInternalFieldCount(StreamReq::kInternalFieldCount);
+  sw->InstanceTemplate()->SetInternalFieldCount(
+      ShutdownWrap::kInternalFieldCount);
 
   // we need to set handle and callback to null,
   // so that those fields are created and functions
@@ -93,8 +94,7 @@ void LibuvStreamWrap::Initialize(Local<Object> target,
 
   Local<FunctionTemplate> ww =
       FunctionTemplate::New(isolate, IsConstructCallCallback);
-  ww->InstanceTemplate()->SetInternalFieldCount(
-      StreamReq::kInternalFieldCount);
+  ww->InstanceTemplate()->SetInternalFieldCount(WriteWrap::kInternalFieldCount);
   ww->Inherit(AsyncWrap::GetConstructorTemplate(env));
   SetConstructorFunction(context, target, "WriteWrap", ww);
   env->set_write_wrap_template(ww->InstanceTemplate());
@@ -141,7 +141,7 @@ Local<FunctionTemplate> LibuvStreamWrap::GetConstructorTemplate(
     tmpl->SetClassName(FIXED_ONE_BYTE_STRING(isolate, "LibuvStreamWrap"));
     tmpl->Inherit(HandleWrap::GetConstructorTemplate(env));
     tmpl->InstanceTemplate()->SetInternalFieldCount(
-        StreamBase::kInternalFieldCount);
+        LibuvStreamWrap::kInternalFieldCount);
     Local<FunctionTemplate> get_write_queue_size =
         FunctionTemplate::New(isolate,
                               GetWriteQueueSize,
diff --git a/src/stream_wrap.h b/src/stream_wrap.h
index 85a675d04f22f0..93db2a9e686051 100644
--- a/src/stream_wrap.h
+++ b/src/stream_wrap.h
@@ -35,6 +35,11 @@ class ExternalReferenceRegistry;
 
 class LibuvStreamWrap : public HandleWrap, public StreamBase {
  public:
+  enum InternalFields {
+    kInternalFieldCount = std::max<uint32_t>(HandleWrap::kInternalFieldCount,
+                                             StreamBase::kInternalFieldCount),
+  };
+
   static void Initialize(v8::Local<v8::Object> target,
                          v8::Local<v8::Value> unused,
                          v8::Local<v8::Context> context,
diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc
index 105df04e82fd2d..2b943ec3e4e0bc 100644
--- a/src/tcp_wrap.cc
+++ b/src/tcp_wrap.cc
@@ -87,7 +87,7 @@ void TCPWrap::Initialize(Local<Object> target,
   Isolate* isolate = env->isolate();
 
   Local<FunctionTemplate> t = NewFunctionTemplate(isolate, New);
-  t->InstanceTemplate()->SetInternalFieldCount(StreamBase::kInternalFieldCount);
+  t->InstanceTemplate()->SetInternalFieldCount(TCPWrap::kInternalFieldCount);
 
   // Init properties
   t->InstanceTemplate()->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "reading"),
@@ -125,9 +125,7 @@ void TCPWrap::Initialize(Local<Object> target,
   env->set_tcp_constructor_template(t);
 
   // Create FunctionTemplate for TCPConnectWrap.
-  Local<FunctionTemplate> cwt =
-      BaseObject::MakeLazilyInitializedJSTemplate(env);
-  cwt->Inherit(AsyncWrap::GetConstructorTemplate(env));
+  Local<FunctionTemplate> cwt = AsyncWrap::MakeLazilyInitializedJSTemplate(env);
   SetConstructorFunction(context, target, "TCPConnectWrap", cwt);
 
   // Define constants
diff --git a/src/tty_wrap.cc b/src/tty_wrap.cc
index 37c58cf0cb7adc..3086e859a54e61 100644
--- a/src/tty_wrap.cc
+++ b/src/tty_wrap.cc
@@ -60,7 +60,7 @@ void TTYWrap::Initialize(Local<Object> target,
 
   Local<FunctionTemplate> t = NewFunctionTemplate(isolate, New);
   t->SetClassName(ttyString);
-  t->InstanceTemplate()->SetInternalFieldCount(StreamBase::kInternalFieldCount);
+  t->InstanceTemplate()->SetInternalFieldCount(TTYWrap::kInternalFieldCount);
   t->Inherit(LibuvStreamWrap::GetConstructorTemplate(env));
 
   SetProtoMethodNoSideEffect(
diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc
index 150ef0f0400bed..6f3e68b79f1c70 100644
--- a/src/udp_wrap.cc
+++ b/src/udp_wrap.cc
@@ -224,9 +224,7 @@ void UDPWrap::Initialize(Local<Object> target,
   env->set_udp_constructor_function(t->GetFunction(context).ToLocalChecked());
 
   // Create FunctionTemplate for SendWrap
-  Local<FunctionTemplate> swt =
-      BaseObject::MakeLazilyInitializedJSTemplate(env);
-  swt->Inherit(AsyncWrap::GetConstructorTemplate(env));
+  Local<FunctionTemplate> swt = AsyncWrap::MakeLazilyInitializedJSTemplate(env);
   SetConstructorFunction(context, target, "SendWrap", swt);
 
   Local<Object> constants = Object::New(isolate);
diff --git a/test/cctest/test_node_postmortem_metadata.cc b/test/cctest/test_node_postmortem_metadata.cc
index a6f7b9f3d0e735..fc147195bb17cd 100644
--- a/test/cctest/test_node_postmortem_metadata.cc
+++ b/test/cctest/test_node_postmortem_metadata.cc
@@ -16,6 +16,8 @@ extern uintptr_t
 extern int debug_symbols_generated;
 extern int nodedbg_const_ContextEmbedderIndex__kEnvironment__int;
 extern int nodedbg_const_BaseObject__kInternalFieldCount__int;
+extern int nodedbg_const_HandleWrap__kInternalFieldCount__int;
+extern int nodedbg_const_ReqWrap__kInternalFieldCount__int;
 extern uintptr_t
     nodedbg_offset_Environment_HandleWrapQueue__head___ListNode_HandleWrap;
 extern uintptr_t
@@ -76,6 +78,18 @@ TEST_F(DebugSymbolsTest, BaseObjectkInternalFieldCount) {
             kInternalFieldCount);
 }
 
+TEST_F(DebugSymbolsTest, HandleWrapInternalFieldCount) {
+  int kInternalFieldCount = node::HandleWrap::kInternalFieldCount;
+  EXPECT_EQ(nodedbg_const_HandleWrap__kInternalFieldCount__int,
+            kInternalFieldCount);
+}
+
+TEST_F(DebugSymbolsTest, ReqWrapInternalFieldCount) {
+  int kInternalFieldCount = node::ReqWrap<uv_req_t>::kInternalFieldCount;
+  EXPECT_EQ(nodedbg_const_ReqWrap__kInternalFieldCount__int,
+            kInternalFieldCount);
+}
+
 TEST_F(DebugSymbolsTest, ExternalStringDataOffset) {
   EXPECT_EQ(nodedbg_offset_ExternalString__data__uintptr_t,
             NODE_OFF_EXTSTR_DATA);
@@ -149,7 +163,7 @@ TEST_F(DebugSymbolsTest, HandleWrapList) {
 
   auto obj_template = v8::FunctionTemplate::New(isolate_);
   obj_template->InstanceTemplate()->SetInternalFieldCount(
-      nodedbg_const_BaseObject__kInternalFieldCount__int);
+      nodedbg_const_HandleWrap__kInternalFieldCount__int);
 
   v8::Local<v8::Object> object = obj_template->GetFunction(env.context())
                                      .ToLocalChecked()
@@ -182,7 +196,7 @@ TEST_F(DebugSymbolsTest, ReqWrapList) {
 
   auto obj_template = v8::FunctionTemplate::New(isolate_);
   obj_template->InstanceTemplate()->SetInternalFieldCount(
-      nodedbg_const_BaseObject__kInternalFieldCount__int);
+      nodedbg_const_ReqWrap__kInternalFieldCount__int);
 
   v8::Local<v8::Object> object = obj_template->GetFunction(env.context())
                                      .ToLocalChecked()

From 8357ebfe54d7ce83ced400c18e994fa265f26f7b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9?= <contact.9a5d6388@renegade334.me.uk>
Date: Sun, 8 Mar 2026 18:32:29 +0000
Subject: [PATCH 262/267] url: suppress warnings from url.format/url.resolve
 inside node_modules

PR-URL: https://github.com/nodejs/node/pull/62005
Fixes: https://github.com/nodejs/node/issues/61724
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
---
 lib/url.js                                    |  2 +-
 .../fixtures/node_modules/url-deprecations.js |  5 ++++
 test/parallel/test-url-parse-deprecation.js   | 23 +++++++++++++++++++
 test/parallel/test-url-parse-invalid-input.js |  8 -------
 4 files changed, 29 insertions(+), 9 deletions(-)
 create mode 100644 test/fixtures/node_modules/url-deprecations.js
 create mode 100644 test/parallel/test-url-parse-deprecation.js

diff --git a/lib/url.js b/lib/url.js
index 0b8f331ea7fecd..1dfdf0247250f6 100644
--- a/lib/url.js
+++ b/lib/url.js
@@ -131,7 +131,7 @@ const {
 let urlParseWarned = false;
 
 function urlParse(url, parseQueryString, slashesDenoteHost) {
-  if (!urlParseWarned && !isInsideNodeModules(2)) {
+  if (!urlParseWarned && !isInsideNodeModules(4)) {
     urlParseWarned = true;
     process.emitWarning(
       '`url.parse()` behavior is not standardized and prone to ' +
diff --git a/test/fixtures/node_modules/url-deprecations.js b/test/fixtures/node_modules/url-deprecations.js
new file mode 100644
index 00000000000000..2b4db92af25a41
--- /dev/null
+++ b/test/fixtures/node_modules/url-deprecations.js
@@ -0,0 +1,5 @@
+const url = require('url');
+
+url.parse('foo');
+url.format('foo');
+url.resolve('foo', 'bar');
diff --git a/test/parallel/test-url-parse-deprecation.js b/test/parallel/test-url-parse-deprecation.js
new file mode 100644
index 00000000000000..69f8848d03d120
--- /dev/null
+++ b/test/parallel/test-url-parse-deprecation.js
@@ -0,0 +1,23 @@
+'use strict';
+
+const common = require('../common');
+const fixtures = require('../common/fixtures');
+
+const assert = require('assert');
+const url = require('url');
+
+const fixturePath = fixtures.path('node_modules', 'url-deprecations.js');
+
+// Application deprecation for url.parse()
+url.parse('foo');
+common.expectWarning('DeprecationWarning',
+                     [/`url\.parse\(\)` behavior is not standardized/, 'DEP0169']);
+
+// No warnings from inside node_modules
+common.spawnPromisified(process.execPath, [fixturePath]).then(
+  common.mustCall(({ code, signal, stderr }) => {
+    assert.strictEqual(code, 0);
+    assert.strictEqual(signal, null);
+    assert.doesNotMatch(stderr, /\[DEP0169\]/);
+  })
+);
diff --git a/test/parallel/test-url-parse-invalid-input.js b/test/parallel/test-url-parse-invalid-input.js
index b1124128af907b..75ac2d4145e771 100644
--- a/test/parallel/test-url-parse-invalid-input.js
+++ b/test/parallel/test-url-parse-invalid-input.js
@@ -89,14 +89,6 @@ if (common.hasIntl) {
       }));
   });
 
-  // Warning should only happen once per process.
-  common.expectWarning({
-    DeprecationWarning: {
-      // eslint-disable-next-line @stylistic/js/max-len
-      DEP0169: '`url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.',
-      DEP0170: `The URL ${badURLs[0]} is invalid. Future versions of Node.js will throw an error.`,
-    },
-  });
   badURLs.forEach((badURL) => {
     url.parse(badURL);
   });

From 7d67e5d6934ee3c4af28b723f54137c4836abeee Mon Sep 17 00:00:00 2001
From: Anna Henningsen <anna@addaleax.net>
Date: Tue, 3 Mar 2026 23:12:18 +0100
Subject: [PATCH 263/267] src: convert context_frame field in AsyncWrap to
 internal field

Using an internal field instead of a `v8::Global<>` removes
an unnecessary memory leak footgun.

This includes a test that demonstrates the issue, albeit
using internal APIs.

It's worth noting that if this PR is not accepted, we'd still
be missing memory tracking for the `context_frame_` field,
and we'd need to add it through our memory tracking API.

PR-URL: https://github.com/nodejs/node/pull/62103
Backport-PR-URL: https://github.com/nodejs/node/pull/62357
Reviewed-By: Anna Henningsen <anna@addaleax.net>
---
 src/async_wrap-inl.h                          | 20 +++++++-
 src/async_wrap.cc                             | 23 +++------
 src/async_wrap.h                              |  6 +--
 src/env_properties.h                          |  1 +
 ...async-local-storage-weak-asyncwrap-leak.js | 49 +++++++++++++++++++
 5 files changed, 80 insertions(+), 19 deletions(-)
 create mode 100644 test/parallel/test-async-local-storage-weak-asyncwrap-leak.js

diff --git a/src/async_wrap-inl.h b/src/async_wrap-inl.h
index 432b22e6c8d185..5dd2b72036ce77 100644
--- a/src/async_wrap-inl.h
+++ b/src/async_wrap-inl.h
@@ -50,7 +50,25 @@ inline double AsyncWrap::get_trigger_async_id() const {
 }
 
 inline v8::Local<v8::Value> AsyncWrap::context_frame() const {
-  return context_frame_.Get(env()->isolate());
+  auto as_data = object()->GetInternalField(kAsyncContextFrame);
+  DCHECK_IMPLIES(!as_data.IsEmpty(),
+                 as_data->IsValue() || as_data->IsPrivate());
+  if (as_data->IsPrivate()) {
+    DCHECK(as_data.As<v8::Private>()->Name()->SameValue(
+        env()->empty_context_frame_sentinel_symbol()->Name()));
+    return {};
+  }
+  return as_data.As<v8::Value>();
+}
+
+inline void AsyncWrap::set_context_frame(v8::Local<v8::Value> value) {
+  if (value.IsEmpty()) {
+    // Empty values are not allowed in internal fields
+    object()->SetInternalField(kAsyncContextFrame,
+                               env()->empty_context_frame_sentinel_symbol());
+  } else {
+    object()->SetInternalField(kAsyncContextFrame, value);
+  }
 }
 
 inline v8::MaybeLocal<v8::Value> AsyncWrap::MakeCallback(
diff --git a/src/async_wrap.cc b/src/async_wrap.cc
index f71195f1c87480..4ebb63b2f591dd 100644
--- a/src/async_wrap.cc
+++ b/src/async_wrap.cc
@@ -348,7 +348,7 @@ void AsyncWrap::EmitDestroy(bool from_gc) {
       HandleScope handle_scope(env()->isolate());
       USE(object()->Set(env()->context(), env()->resource_symbol(), object()));
     }
-    context_frame_.Reset();
+    set_context_frame({});
   }
 }
 
@@ -530,9 +530,9 @@ AsyncWrap::AsyncWrap(Environment* env,
 }
 
 AsyncWrap::AsyncWrap(Environment* env, Local<Object> object)
-    : BaseObject(env, object),
-      context_frame_(env->isolate(),
-                     async_context_frame::current(env->isolate())) {}
+    : BaseObject(env, object) {
+  set_context_frame(async_context_frame::current(env->isolate()));
+}
 
 // This method is necessary to work around one specific problem:
 // Before the init() hook runs, if there is one, the BaseObject() constructor
@@ -635,7 +635,7 @@ void AsyncWrap::AsyncReset(Local<Object> resource, double execution_async_id) {
 
   EmitTraceAsyncStart();
 
-  context_frame_.Reset(isolate, async_context_frame::current(isolate));
+  set_context_frame(async_context_frame::current(isolate));
 
   EmitAsyncInit(env(), resource,
                 env()->async_hooks()->provider_string(provider_type()),
@@ -678,7 +678,7 @@ MaybeLocal<Value> AsyncWrap::MakeCallback(const Local<Function> cb,
   EmitTraceEventBefore();
 
 #ifdef DEBUG
-  if (context_frame_.IsEmpty()) {
+  if (context_frame().IsEmpty()) {
     ProcessEmitWarning(env(),
                        "MakeCallback() called without context_frame, "
                        "likely use after destroy of AsyncWrap.");
@@ -687,15 +687,8 @@ MaybeLocal<Value> AsyncWrap::MakeCallback(const Local<Function> cb,
 
   ProviderType provider = provider_type();
   async_context context { get_async_id(), get_trigger_async_id() };
-  MaybeLocal<Value> ret =
-      InternalMakeCallback(env(),
-                           object(),
-                           object(),
-                           cb,
-                           argc,
-                           argv,
-                           context,
-                           context_frame_.Get(env()->isolate()));
+  MaybeLocal<Value> ret = InternalMakeCallback(
+      env(), object(), object(), cb, argc, argv, context, context_frame());
 
   // This is a static call with cached values because the `this` object may
   // no longer be alive at this point.
diff --git a/src/async_wrap.h b/src/async_wrap.h
index 8ca74820da5674..e4884cb88301d4 100644
--- a/src/async_wrap.h
+++ b/src/async_wrap.h
@@ -119,7 +119,8 @@ class ExternalReferenceRegistry;
 class AsyncWrap : public BaseObject {
  public:
   enum InternalFields {
-    kInternalFieldCount = BaseObject::kInternalFieldCount,
+    kAsyncContextFrame = BaseObject::kInternalFieldCount,
+    kInternalFieldCount,
   };
 
   enum ProviderType {
@@ -201,6 +202,7 @@ class AsyncWrap : public BaseObject {
   inline double get_trigger_async_id() const;
 
   inline v8::Local<v8::Value> context_frame() const;
+  inline void set_context_frame(v8::Local<v8::Value> value);
 
   void AsyncReset(v8::Local<v8::Object> resource,
                   double execution_async_id = kInvalidAsyncId);
@@ -244,8 +246,6 @@ class AsyncWrap : public BaseObject {
   // Because the values may be Reset(), cannot be made const.
   double async_id_ = kInvalidAsyncId;
   double trigger_async_id_ = kInvalidAsyncId;
-
-  v8::Global<v8::Value> context_frame_;
 };
 
 }  // namespace node
diff --git a/src/env_properties.h b/src/env_properties.h
index b90c3c57cdd476..75b718e6171853 100644
--- a/src/env_properties.h
+++ b/src/env_properties.h
@@ -21,6 +21,7 @@
   V(arrow_message_private_symbol, "node:arrowMessage")                         \
   V(contextify_context_private_symbol, "node:contextify:context")              \
   V(decorated_private_symbol, "node:decorated")                                \
+  V(empty_context_frame_sentinel_symbol, "node:empty_context_frame_sentinel")  \
   V(transfer_mode_private_symbol, "node:transfer_mode")                        \
   V(host_defined_option_symbol, "node:host_defined_option_symbol")             \
   V(js_transferable_wrapper_private_symbol, "node:js_transferable_wrapper")    \
diff --git a/test/parallel/test-async-local-storage-weak-asyncwrap-leak.js b/test/parallel/test-async-local-storage-weak-asyncwrap-leak.js
new file mode 100644
index 00000000000000..baa13f610ed9aa
--- /dev/null
+++ b/test/parallel/test-async-local-storage-weak-asyncwrap-leak.js
@@ -0,0 +1,49 @@
+// Flags: --expose-gc
+'use strict';
+const common = require('../common');
+const assert = require('node:assert');
+const zlib = require('node:zlib');
+const v8 = require('node:v8');
+const { AsyncLocalStorage } = require('node:async_hooks');
+
+// This test verifies that referencing an AsyncLocalStorage store from
+// a weak AsyncWrap does not prevent the store from being garbage collected.
+// We use zlib streams as examples of weak AsyncWraps here, but the
+// issue is not specific to zlib.
+
+class Store {}
+
+let zlibDone = false;
+
+// Use immediates to ensure no accidental async context propagation occurs
+setImmediate(common.mustCall(() => {
+  const asyncLocalStorage = new AsyncLocalStorage();
+  const store = new Store();
+  asyncLocalStorage.run(store, common.mustCall(() => {
+    (async () => {
+      const zlibStream = zlib.createGzip();
+      // (Make sure this test does not break if _handle is renamed
+      // to something else)
+      assert.strictEqual(typeof zlibStream._handle, 'object');
+      // Create backreference from AsyncWrap to store
+      store.zlibStream = zlibStream._handle;
+      // Let the zlib stream finish (not strictly necessary)
+      zlibStream.end('hello world');
+      await zlibStream.toArray();
+      zlibDone = true;
+    })().then(common.mustCall());
+  }));
+}));
+
+const finish = common.mustCall(() => {
+  global.gc();
+  // Make sure the ALS instance has been garbage-collected
+  assert.strictEqual(v8.queryObjects(Store), 0);
+});
+
+const interval = setInterval(() => {
+  if (zlibDone) {
+    clearInterval(interval);
+    finish();
+  }
+}, 5);

From cc197282280df43bf29d763a0e064ea6c6c7e989 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=BCrg=C3=BCn=20Day=C4=B1o=C4=9Flu?= <hey@gurgun.day>
Date: Sun, 29 Mar 2026 16:53:52 +0200
Subject: [PATCH 264/267] events: avoid cloning listeners array on every emit

PR-URL: https://github.com/nodejs/node/pull/62261
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
---
 lib/events.js                                 | 63 +++++++++++++------
 .../test-event-emitter-modify-in-emit.js      | 18 ++++++
 2 files changed, 63 insertions(+), 18 deletions(-)

diff --git a/lib/events.js b/lib/events.js
index 23b09f2f1c99eb..bdc08f0eb4b6f7 100644
--- a/lib/events.js
+++ b/lib/events.js
@@ -87,6 +87,7 @@ const { addAbortListener } = require('internal/events/abort_listener');
 const kCapture = Symbol('kCapture');
 const kErrorMonitor = Symbol('events.errorMonitor');
 const kShapeMode = Symbol('shapeMode');
+const kEmitting = Symbol('events.emitting');
 const kMaxEventTargetListeners = Symbol('events.maxEventTargetListeners');
 const kMaxEventTargetListenersWarned =
   Symbol('events.maxEventTargetListenersWarned');
@@ -514,19 +515,22 @@ EventEmitter.prototype.emit = function emit(type, ...args) {
       addCatch(this, result, type, args);
     }
   } else {
-    const len = handler.length;
-    const listeners = arrayClone(handler);
-    for (let i = 0; i < len; ++i) {
-      const result = listeners[i].apply(this, args);
-
-      // We check if result is undefined first because that
-      // is the most common case so we do not pay any perf
-      // penalty.
-      // This code is duplicated because extracting it away
-      // would make it non-inlineable.
-      if (result !== undefined && result !== null) {
-        addCatch(this, result, type, args);
+    handler[kEmitting]++;
+    try {
+      for (let i = 0; i < handler.length; ++i) {
+        const result = ReflectApply(handler[i], this, args);
+
+        // We check if result is undefined first because that
+        // is the most common case so we do not pay any perf
+        // penalty.
+        // This code is duplicated because extracting it away
+        // would make it non-inlineable.
+        if (result !== undefined && result !== null) {
+          addCatch(this, result, type, args);
+        }
       }
+    } finally {
+      handler[kEmitting]--;
     }
   }
 
@@ -565,13 +569,17 @@ function _addListener(target, type, listener, prepend) {
   } else {
     if (typeof existing === 'function') {
       // Adding the second element, need to change to array.
-      existing = events[type] =
-        prepend ? [listener, existing] : [existing, listener];
+      existing = prepend ? [listener, existing] : [existing, listener];
+      existing[kEmitting] = 0;
+      events[type] = existing;
       // If we've already got an array, just append.
-    } else if (prepend) {
-      existing.unshift(listener);
     } else {
-      existing.push(listener);
+      existing = ensureMutableListenerArray(events, type, existing);
+      if (prepend) {
+        existing.unshift(listener);
+      } else {
+        existing.push(listener);
+      }
     }
 
     // Check for listener leak
@@ -674,7 +682,7 @@ EventEmitter.prototype.removeListener =
       if (events === undefined)
         return this;
 
-      const list = events[type];
+      let list = events[type];
       if (list === undefined)
         return this;
 
@@ -692,6 +700,7 @@ EventEmitter.prototype.removeListener =
         if (events.removeListener !== undefined)
           this.emit('removeListener', type, list.listener || listener);
       } else if (typeof list !== 'function') {
+        list = ensureMutableListenerArray(events, type, list);
         let position = -1;
 
         for (let i = list.length - 1; i >= 0; i--) {
@@ -875,6 +884,24 @@ function arrayClone(arr) {
   return ArrayPrototypeSlice(arr);
 }
 
+function cloneEventListenerArray(arr) {
+  const copy = arrayClone(arr);
+  copy[kEmitting] = 0;
+  if (arr.warned) {
+    copy.warned = true;
+  }
+  return copy;
+}
+
+function ensureMutableListenerArray(events, type, handler) {
+  if (handler[kEmitting] > 0) {
+    const copy = cloneEventListenerArray(handler);
+    events[type] = copy;
+    return copy;
+  }
+  return handler;
+}
+
 function unwrapListeners(arr) {
   const ret = arrayClone(arr);
   for (let i = 0; i < ret.length; ++i) {
diff --git a/test/parallel/test-event-emitter-modify-in-emit.js b/test/parallel/test-event-emitter-modify-in-emit.js
index 995fa01d11a1a8..fecabca9def3e8 100644
--- a/test/parallel/test-event-emitter-modify-in-emit.js
+++ b/test/parallel/test-event-emitter-modify-in-emit.js
@@ -78,3 +78,21 @@ assert.strictEqual(e.listeners('foo').length, 2);
 e.emit('foo');
 assert.deepStrictEqual(['callback2', 'callback3'], callbacks_called);
 assert.strictEqual(e.listeners('foo').length, 0);
+
+// Verify that removing all callbacks while in emit allows the current emit to
+// propagate to all listeners.
+callbacks_called = [];
+
+function callback4() {
+  callbacks_called.push('callback4');
+  e.removeAllListeners('foo');
+}
+
+e.on('foo', callback4);
+e.on('foo', callback2);
+e.on('foo', callback3);
+assert.strictEqual(e.listeners('foo').length, 3);
+e.emit('foo');
+assert.deepStrictEqual(['callback4', 'callback2', 'callback3'],
+                       callbacks_called);
+assert.strictEqual(e.listeners('foo').length, 0);

From 5ed5474437e1ade1bc0c3042634ed85dc61d88a7 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Mon, 30 Mar 2026 20:57:06 -0400
Subject: [PATCH 265/267] test: update WPT for WebCryptoAPI to 2cb332d710

PR-URL: https://github.com/nodejs/node/pull/62483
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
---
 test/fixtures/wpt/README.md                   |  2 +-
 .../raw_format_aliases.tentative.https.any.js | 72 +++++++++++++++++++
 test/fixtures/wpt/versions.json               |  2 +-
 3 files changed, 74 insertions(+), 2 deletions(-)
 create mode 100644 test/fixtures/wpt/WebCryptoAPI/import_export/raw_format_aliases.tentative.https.any.js

diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md
index ec1b3f5e071c73..856200310162b1 100644
--- a/test/fixtures/wpt/README.md
+++ b/test/fixtures/wpt/README.md
@@ -34,7 +34,7 @@ Last update:
 - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/cde25e7e3c/wasm/jsapi
 - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi
 - web-locks: https://github.com/web-platform-tests/wpt/tree/10a122a6bc/web-locks
-- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/6a1c545d77/WebCryptoAPI
+- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/2cb332d710/WebCryptoAPI
 - webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/2f96fa1996/webidl/ecmascript-binding/es-exceptions
 - webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/6495c91853/webmessaging/broadcastchannel
 - webstorage: https://github.com/web-platform-tests/wpt/tree/1d2c5fb36a/webstorage
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/raw_format_aliases.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/raw_format_aliases.tentative.https.any.js
new file mode 100644
index 00000000000000..646ae1b0de7428
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/import_export/raw_format_aliases.tentative.https.any.js
@@ -0,0 +1,72 @@
+// META: title=WebCryptoAPI: raw-secret and raw-public importKey() format aliases
+// META: timeout=long
+// META: script=../util/helpers.js
+
+// For all existing symmetric algorithms in WebCrypto, "raw-secret" acts as an
+// alias of "raw". For all existing asymmetric algorithms in WebCrypto,
+// "raw-public" acts as an alias of "raw".
+
+"use strict";
+
+const rawKeyData16 = crypto.getRandomValues(new Uint8Array(16));
+const rawKeyData32 = crypto.getRandomValues(new Uint8Array(32));
+const wrapAlgorithm = { name: "AES-GCM", iv: new Uint8Array(12) };
+
+const symmetricAlgorithms = [
+    { algorithm: { name: "AES-CTR", length: 128 }, keyData: rawKeyData16, usages: ["encrypt", "decrypt"] },
+    { algorithm: { name: "AES-CBC", length: 128 }, keyData: rawKeyData16, usages: ["encrypt", "decrypt"] },
+    { algorithm: { name: "AES-GCM", length: 128 }, keyData: rawKeyData16, usages: ["encrypt", "decrypt"] },
+    { algorithm: { name: "AES-KW", length: 128 }, keyData: rawKeyData16, usages: ["wrapKey", "unwrapKey"] },
+    { algorithm: { name: "HMAC", hash: "SHA-256", length: 256 }, keyData: rawKeyData32, usages: ["sign", "verify"] },
+    { algorithm: { name: "HKDF" }, keyData: rawKeyData32, usages: ["deriveBits", "deriveKey"], extractable: false },
+    { algorithm: { name: "PBKDF2" }, keyData: rawKeyData32, usages: ["deriveBits", "deriveKey"], extractable: false },
+];
+
+for (const { algorithm, keyData, usages, extractable = true } of symmetricAlgorithms) {
+    promise_test(async () => {
+        const key = await crypto.subtle.importKey("raw-secret", keyData, algorithm, extractable, usages);
+        assert_goodCryptoKey(key, algorithm, extractable, usages, "secret");
+        if (extractable) {
+            await crypto.subtle.exportKey("raw-secret", key);
+        }
+    }, `importKey/exportKey with raw-secret: ${algorithm.name}`);
+
+    if (extractable) {
+        promise_test(async () => {
+            const wrappingKey = await crypto.subtle.generateKey({ name: "AES-GCM", length: 256 }, false, ["wrapKey", "unwrapKey"]);
+            const key = await crypto.subtle.importKey("raw-secret", keyData, algorithm, true, usages);
+            const wrapped = await crypto.subtle.wrapKey("raw-secret", key, wrappingKey, wrapAlgorithm);
+            const unwrapped = await crypto.subtle.unwrapKey("raw-secret", wrapped, wrappingKey, wrapAlgorithm, algorithm, true, usages);
+            assert_goodCryptoKey(unwrapped, algorithm, true, usages, "secret");
+        }, `wrapKey/unwrapKey with raw-secret: ${algorithm.name}`);
+    }
+}
+
+const asymmetricAlgorithms = [
+    { algorithm: { name: "ECDSA", namedCurve: "P-256" }, usages: ["verify"] },
+    { algorithm: { name: "ECDH", namedCurve: "P-256" }, usages: [] },
+    { algorithm: { name: "Ed25519" }, usages: ["verify"] },
+    { algorithm: { name: "X25519" }, usages: [] },
+];
+
+for (const { algorithm, usages } of asymmetricAlgorithms) {
+    const generateKeyUsages = usages.length ? usages.concat("sign") : ["deriveBits"];
+
+    promise_test(async () => {
+        const keyPair = await crypto.subtle.generateKey(algorithm, true, generateKeyUsages);
+        const keyData = await crypto.subtle.exportKey("raw-public", keyPair.publicKey);
+
+        const key = await crypto.subtle.importKey("raw-public", keyData, algorithm, true, usages);
+        assert_goodCryptoKey(key, algorithm, true, usages, "public");
+        await crypto.subtle.exportKey("raw-public", key);
+    }, `importKey/exportKey with raw-public: ${algorithm.name}`);
+
+    promise_test(async () => {
+        const keyPair = await crypto.subtle.generateKey(algorithm, true, generateKeyUsages);
+
+        const wrappingKey = await crypto.subtle.generateKey({ name: "AES-GCM", length: 256 }, false, ["wrapKey", "unwrapKey"]);
+        const wrapped = await crypto.subtle.wrapKey("raw-public", keyPair.publicKey, wrappingKey, wrapAlgorithm);
+        const unwrapped = await crypto.subtle.unwrapKey("raw-public", wrapped, wrappingKey, wrapAlgorithm, algorithm, true, usages);
+        assert_goodCryptoKey(unwrapped, algorithm, true, usages, "public");
+    }, `wrapKey/unwrapKey with raw-public: ${algorithm.name}`);
+}
diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json
index dd2e9e2b1662fa..1422b6fdd1b063 100644
--- a/test/fixtures/wpt/versions.json
+++ b/test/fixtures/wpt/versions.json
@@ -96,7 +96,7 @@
     "path": "web-locks"
   },
   "WebCryptoAPI": {
-    "commit": "6a1c545d778f115c84a1c27c25484afd442b89d8",
+    "commit": "2cb332d71030ba0200610d72b94bb1badf447418",
     "path": "WebCryptoAPI"
   },
   "webidl/ecmascript-binding/es-exceptions": {

From a072411b03e8bdb1bc72c93260cbfaeb034a23f4 Mon Sep 17 00:00:00 2001
From: Kit Dallege <xaum.io@gmail.com>
Date: Mon, 23 Mar 2026 10:49:36 +0100
Subject: [PATCH 266/267] doc: remove spawn with shell example from bat/cmd
 section

Remove the suggestion to use child_process.spawn() with the shell
option set for running .bat and .cmd files on Windows. Passing
arguments through spawn with shell: true is deprecated (DEP0190)
due to shell injection risks. Keep the exec() and direct cmd.exe
spawn alternatives.

Fixes: https://github.com/nodejs/node/issues/58735
PR-URL: https://github.com/nodejs/node/pull/62243
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Stefan Stojanovic <stefan.stojanovic@janeasystems.com>
---
 doc/api/child_process.md | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/doc/api/child_process.md b/doc/api/child_process.md
index 7df9fe27e613f8..d34d329068780b 100644
--- a/doc/api/child_process.md
+++ b/doc/api/child_process.md
@@ -120,23 +120,19 @@ however, `.bat` and `.cmd` files are not executable on their own without a
 terminal, and therefore cannot be launched using [`child_process.execFile()`][].
 When running on Windows, `.bat` and `.cmd` files can be invoked by:
 
-* using [`child_process.spawn()`][] with the `shell` option set, or
+* using [`child_process.spawn()`][] with the `shell` option set (not recommended, see [DEP0190][]), or
 * using [`child_process.exec()`][], or
 * spawning `cmd.exe` and passing the `.bat` or `.cmd` file as an argument
-  (which is what the `shell` option and [`child_process.exec()`][] do).
+  (which is what [`child_process.exec()`][] does internally).
 
 In any case, if the script filename contains spaces, it needs to be quoted.
 
 ```cjs
 const { exec, spawn } = require('node:child_process');
 
-// 1. child_process.spawn() with the shell option set
-const myBat = spawn('my.bat', { shell: true });
-
-// 2. child_process.exec()
 exec('my.bat', (err, stdout, stderr) => { /* ... */ });
 
-// 3. spawning cmd.exe and passing the .bat or .cmd file as an argument
+// Or, spawning cmd.exe directly:
 const bat = spawn('cmd.exe', ['/c', 'my.bat']);
 
 // If the script filename contains spaces, it needs to be quoted
@@ -146,13 +142,9 @@ exec('"my script.cmd" a b', (err, stdout, stderr) => { /* ... */ });
 ```mjs
 import { exec, spawn } from 'node:child_process';
 
-// 1. child_process.spawn() with the shell option set
-const myBat = spawn('my.bat', { shell: true });
-
-// 2. child_process.exec()
 exec('my.bat', (err, stdout, stderr) => { /* ... */ });
 
-// 3. spawning cmd.exe and passing the .bat or .cmd file as an argument
+// Or, spawning cmd.exe directly:
 const bat = spawn('cmd.exe', ['/c', 'my.bat']);
 
 // If the script filename contains spaces, it needs to be quoted
@@ -2364,6 +2356,7 @@ Therefore, this feature requires opting in by setting the
 or [`child_process.fork()`][].
 
 [Advanced serialization]: #advanced-serialization
+[DEP0190]: deprecations.md#dep0190-passing-args-to-nodechild_process-execfilespawn-with-shell-option
 [Default Windows shell]: #default-windows-shell
 [HTML structured clone algorithm]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
 [Shell requirements]: #shell-requirements

From 848430679556aed0bd073f2bc263331ad84fa119 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" <github-bot@iojs.org>
Date: Fri, 10 Apr 2026 16:55:10 -0400
Subject: [PATCH 267/267] 2026-04-15, Version 24.15.0 'Krypton' (LTS)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Notable changes:

cli:
  * (SEMVER-MINOR) add --max-heap-size option (tannal) https://github.com/nodejs/node/pull/58708
  * add --require-module/--no-require-module (Joyee Cheung) https://github.com/nodejs/node/pull/60959
crypto:
  * (SEMVER-MINOR) add raw key formats support to the KeyObject APIs (Filip Skokan) https://github.com/nodejs/node/pull/62240
fs:
  * (SEMVER-MINOR) add `throwIfNoEntry` option for fs.stat and fs.promises.stat (Juan José) https://github.com/nodejs/node/pull/61178
http2:
  * (SEMVER-MINOR) add http1Options for HTTP/1 fallback configuration (Amol Yadav) https://github.com/nodejs/node/pull/61713
module:
  * mark require(esm) as stable (Joyee Cheung) https://github.com/nodejs/node/pull/60959
  * mark module compile cache as stable (Joyee Cheung) https://github.com/nodejs/node/pull/60971
net:
  * (SEMVER-MINOR) add `setTOS` and `getTOS` to `Socket` (Amol Yadav) https://github.com/nodejs/node/pull/61503
sqlite:
  * (SEMVER-MINOR) add limits property to DatabaseSync (Mert Can Altin) https://github.com/nodejs/node/pull/61298
  * mark as release candidate (Matteo Collina) https://github.com/nodejs/node/pull/61262
src:
  * (SEMVER-MINOR) add C++ support for diagnostics channels (RafaelGSS) https://github.com/nodejs/node/pull/61869
stream:
  * (SEMVER-MINOR) rename `Duplex.toWeb()` type option to `readableType` (René) https://github.com/nodejs/node/pull/61632
test_runner:
  * add exports option for module mocks (sangwook) https://github.com/nodejs/node/pull/61727
  * (SEMVER-MINOR) expose worker ID for concurrent test execution (Ali Hassan) https://github.com/nodejs/node/pull/61394
  * (SEMVER-MINOR) show interrupted test on SIGINT (Matteo Collina) https://github.com/nodejs/node/pull/61676

PR-URL: https://github.com/nodejs/node/pull/62681
---
 CHANGELOG.md                    |   3 +-
 doc/api/cli.md                  |   8 +-
 doc/api/crypto.md               |   6 +-
 doc/api/deprecations.md         |  10 +-
 doc/api/diagnostics_channel.md  |   2 +-
 doc/api/http2.md                |   8 +-
 doc/api/module.md               |  10 +-
 doc/api/modules.md              |   2 +-
 doc/api/net.md                  |   6 +-
 doc/api/quic.md                 |   2 +-
 doc/api/sqlite.md               |   4 +-
 doc/api/stream.md               |   2 +-
 doc/api/test.md                 |   4 +-
 doc/api/webcrypto.md            |  10 +-
 doc/changelogs/CHANGELOG_V24.md | 292 ++++++++++++++++++++++++++++++++
 src/node_version.h              |   6 +-
 16 files changed, 334 insertions(+), 41 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4b23eef51751d5..5964507dc22dd0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -40,7 +40,8 @@ release.
 </tr>
 <tr>
   <td valign="top">
-<b><a href="doc/changelogs/CHANGELOG_V24.md#24.14.1">24.14.1</a></b><br/>
+<b><a href="doc/changelogs/CHANGELOG_V24.md#24.15.0">24.15.0</a></b><br/>
+<a href="doc/changelogs/CHANGELOG_V24.md#24.14.1">24.14.1</a><br/>
 <a href="doc/changelogs/CHANGELOG_V24.md#24.14.0">24.14.0</a><br/>
 <a href="doc/changelogs/CHANGELOG_V24.md#24.13.1">24.13.1</a><br/>
 <a href="doc/changelogs/CHANGELOG_V24.md#24.13.0">24.13.0</a><br/>
diff --git a/doc/api/cli.md b/doc/api/cli.md
index 48fa4485dde712..ba9fcc3a3abf48 100644
--- a/doc/api/cli.md
+++ b/doc/api/cli.md
@@ -1828,7 +1828,7 @@ added:
   - v20.17.0
 changes:
   - version:
-    - REPLACEME
+    - v24.15.0
     pr-url: https://github.com/nodejs/node/pull/60959
     description: The flag was renamed from `--no-experimental-require-module` to
                  `--no-require-module`, with the former marked as legacy.
@@ -1917,11 +1917,11 @@ added:
   - v20.17.0
 changes:
   - version:
-    - REPLACEME
+    - v24.15.0
     pr-url: https://github.com/nodejs/node/pull/60959
     description: This flag is no longer experimental.
   - version:
-    - REPLACEME
+    - v24.15.0
     pr-url: https://github.com/nodejs/node/pull/60959
     description: This flag was renamed from `--no-experimental-require-module`
                  to `--no-require-module`.
@@ -3323,7 +3323,7 @@ Any other value will result in colorized output being disabled.
 <!-- YAML
 added: v22.1.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/60971
     description: This feature is no longer experimental.
 -->
diff --git a/doc/api/crypto.md b/doc/api/crypto.md
index a46d3abe4ba8e8..92d2e4be477d98 100644
--- a/doc/api/crypto.md
+++ b/doc/api/crypto.md
@@ -2393,7 +2393,7 @@ type, value, and parameters. This method is not
 <!-- YAML
 added: v11.6.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/62240
     description: Added support for `'raw-public'`, `'raw-private'`,
                  and `'raw-seed'` formats.
@@ -3913,7 +3913,7 @@ input.on('readable', () => {
 <!-- YAML
 added: v11.6.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/62240
     description: Added support for `'raw-private'` and `'raw-seed'`
                  formats.
@@ -3961,7 +3961,7 @@ of the passphrase is limited to 1024 bytes.
 <!-- YAML
 added: v11.6.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/62240
     description: Added support for `'raw-public'` format.
   - version: v24.6.0
diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md
index 378581dc03ae3a..9de12ceab5bbe3 100644
--- a/doc/api/deprecations.md
+++ b/doc/api/deprecations.md
@@ -4334,7 +4334,7 @@ import { opendir } from 'node:fs/promises';
 
 <!-- YAML
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/61632
     description: Documentation-only deprecation.
 -->
@@ -4349,7 +4349,7 @@ type of the readable half of the constructed readable-writable pair, use the
 
 <!-- YAML
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/61713
     description: Documentation-only deprecation.
 -->
@@ -4385,7 +4385,7 @@ const server = http2.createSecureServer({
 
 <!-- YAML
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/62321
     description: Documentation-only deprecation.
 -->
@@ -4407,7 +4407,7 @@ will throw an error in a future version. This includes
 
 <!-- YAML
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/62321
     description: Documentation-only deprecation.
 -->
@@ -4421,7 +4421,7 @@ deprecated and will throw an error in a future version.
 
 <!-- YAML
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/62395
     description: Documentation-only deprecation.
 -->
diff --git a/doc/api/diagnostics_channel.md b/doc/api/diagnostics_channel.md
index 8b63fa813eb313..6b91780fa7673d 100644
--- a/doc/api/diagnostics_channel.md
+++ b/doc/api/diagnostics_channel.md
@@ -1448,7 +1448,7 @@ Emitted when [`process.execve()`][] is invoked.
 > Stability: 1 - Experimental
 
 <!-- YAML
-added: REPLACEME
+added: v24.15.0
 -->
 
 These channels are emitted for each [`locks.request()`][] call. See
diff --git a/doc/api/http2.md b/doc/api/http2.md
index d053c31342cd3b..50aa991401b01f 100644
--- a/doc/api/http2.md
+++ b/doc/api/http2.md
@@ -2786,10 +2786,10 @@ Throws `ERR_INVALID_ARG_TYPE` for invalid `settings` argument.
 <!-- YAML
 added: v8.4.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/59917
     description: Added the `strictSingleValueFields` option.
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/61713
     description: Added `http1Options` option. The `Http1IncomingMessage`
                  and `Http1ServerResponse` options are now deprecated.
@@ -3009,10 +3009,10 @@ server.listen(8000);
 <!-- YAML
 added: v8.4.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/59917
     description: Added the `strictSingleValueFields` option.
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/61713
     description: Added `http1Options` option.
   - version:
diff --git a/doc/api/module.md b/doc/api/module.md
index 39487ac14ae485..e63ad71ab71ea0 100644
--- a/doc/api/module.md
+++ b/doc/api/module.md
@@ -178,7 +178,7 @@ isBuiltin('wss'); // false
 added:
   - v20.6.0
   - v18.19.0
-deprecated: REPLACEME
+deprecated: v24.15.0
 changes:
   - version:
     - v23.6.1
@@ -470,7 +470,7 @@ separately if the same base directory is used to persist the cache, so they can
 <!-- YAML
 added: v22.8.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/60971
     description: This feature is no longer experimental.
 -->
@@ -525,7 +525,7 @@ The following constants are returned as the `status` field in the object returne
 <!-- YAML
 added: v22.8.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/60971
     description: This feature is no longer experimental.
   - version: v24.12.0
@@ -581,7 +581,7 @@ added:
  - v23.0.0
  - v22.10.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/60971
     description: This feature is no longer experimental.
 -->
@@ -597,7 +597,7 @@ interfere with the actual operation of the application.
 <!-- YAML
 added: v22.8.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/60971
     description: This feature is no longer experimental.
 -->
diff --git a/doc/api/modules.md b/doc/api/modules.md
index 8cc7369ce67d04..74279e28182569 100644
--- a/doc/api/modules.md
+++ b/doc/api/modules.md
@@ -176,7 +176,7 @@ added:
   - v20.17.0
 changes:
   - version:
-    - REPLACEME
+    - v24.15.0
     pr-url: https://github.com/nodejs/node/pull/60959
     description: This feature is no longer experimental.
   - version:
diff --git a/doc/api/net.md b/doc/api/net.md
index c86173cfccb100..df6b8620e98034 100644
--- a/doc/api/net.md
+++ b/doc/api/net.md
@@ -743,7 +743,7 @@ it to interact with the client.
 <!-- YAML
 added: v0.3.4
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/61503
     description: Added `typeOfService` option.
   - version: v15.14.0
@@ -1464,7 +1464,7 @@ The optional `callback` parameter will be added as a one-time listener for the
 ### `socket.getTypeOfService()`
 
 <!-- YAML
-added: REPLACEME
+added: v24.15.0
 -->
 
 * Returns: {integer} The current TOS value.
@@ -1483,7 +1483,7 @@ should verify platform-specific semantics.
 ### `socket.setTypeOfService(tos)`
 
 <!-- YAML
-added: REPLACEME
+added: v24.15.0
 -->
 
 * `tos` {integer} The TOS value to set (0-255).
diff --git a/doc/api/quic.md b/doc/api/quic.md
index 5fc54450bc7b7f..63e833da884909 100644
--- a/doc/api/quic.md
+++ b/doc/api/quic.md
@@ -1198,7 +1198,7 @@ True to enable TLS keylogging output.
 <!-- YAML
 added: v23.8.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/62335
     description: CryptoKey is no longer accepted.
 -->
diff --git a/doc/api/sqlite.md b/doc/api/sqlite.md
index 3642ccbf8f1c47..155387b5301b3c 100644
--- a/doc/api/sqlite.md
+++ b/doc/api/sqlite.md
@@ -5,7 +5,7 @@
 <!-- YAML
 added: v22.5.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/61262
     description: SQLite is now a release candidate.
   - version:
@@ -480,7 +480,7 @@ added: v24.0.0
 ### `database.limits`
 
 <!-- YAML
-added: REPLACEME
+added: v24.15.0
 -->
 
 * Type: {Object}
diff --git a/doc/api/stream.md b/doc/api/stream.md
index 3d3b293ab7bd07..eac441dbd065a1 100644
--- a/doc/api/stream.md
+++ b/doc/api/stream.md
@@ -3377,7 +3377,7 @@ duplex.once('readable', () => console.log('readable', duplex.read()));
 <!-- YAML
 added: v17.0.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/61632
     description: Added the 'readableType' option to specify the ReadableStream
                  type. The 'type' option is deprecated.
diff --git a/doc/api/test.md b/doc/api/test.md
index 0da838f8de04f1..dce8bd94fdbafd 100644
--- a/doc/api/test.md
+++ b/doc/api/test.md
@@ -3416,7 +3416,7 @@ The corresponding execution ordered event is `'test:complete'`.
 ### Event: `'test:interrupted'`
 
 <!-- YAML
-added: REPLACEME
+added: v24.15.0
 -->
 
 * `data` {Object}
@@ -3872,7 +3872,7 @@ Number of times the test has been attempted.
 ### `context.workerId`
 
 <!-- YAML
-added: REPLACEME
+added: v24.15.0
 -->
 
 * Type: {number|undefined}
diff --git a/doc/api/webcrypto.md b/doc/api/webcrypto.md
index 6666428994b8eb..5f22495f4ca84e 100644
--- a/doc/api/webcrypto.md
+++ b/doc/api/webcrypto.md
@@ -1259,7 +1259,7 @@ The {CryptoKey} (secret key) generating algorithms supported include:
 <!-- YAML
 added: v15.0.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/62218
     description: Importing ML-DSA and ML-KEM PKCS#8 keys
       without a seed is no longer supported.
@@ -1873,7 +1873,7 @@ the message.
 <!-- YAML
 added: v24.7.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/61875
     description: Renamed `cShakeParams.length` to `cShakeParams.outputLength`.
 -->
@@ -1889,7 +1889,7 @@ added: v24.7.0
 #### `cShakeParams.outputLength`
 
 <!-- YAML
-added: REPLACEME
+added: v24.15.0
 -->
 
 * Type: {number} represents the requested output length in bits.
@@ -2395,7 +2395,7 @@ added: v24.8.0
 <!-- YAML
 added: v24.8.0
 changes:
-  - version: REPLACEME
+  - version: v24.15.0
     pr-url: https://github.com/nodejs/node/pull/61875
     description: Renamed `kmacParams.length` to `kmacParams.outputLength`.
 -->
@@ -2411,7 +2411,7 @@ added: v24.8.0
 #### `kmacParams.outputLength`
 
 <!-- YAML
-added: REPLACEME
+added: v24.15.0
 -->
 
 * Type: {number}
diff --git a/doc/changelogs/CHANGELOG_V24.md b/doc/changelogs/CHANGELOG_V24.md
index edc542abc07a95..1808a6c0a728ae 100644
--- a/doc/changelogs/CHANGELOG_V24.md
+++ b/doc/changelogs/CHANGELOG_V24.md
@@ -9,6 +9,7 @@
 </tr>
 <tr>
 <td>
+<a href="#24.15.0">24.15.0</a><br/>
 <a href="#24.14.1">24.14.1</a><br/>
 <a href="#24.14.0">24.14.0</a><br/>
 <a href="#24.13.1">24.13.1</a><br/>
@@ -62,6 +63,297 @@
   * [io.js](CHANGELOG_IOJS.md)
   * [Archive](CHANGELOG_ARCHIVE.md)
 
+<a id="24.15.0"></a>
+
+## 2026-04-15, Version 24.15.0 'Krypton' (LTS), @aduh95
+
+### Notable Changes
+
+* \[[`3d87ecacbc`](https://github.com/nodejs/node/commit/3d87ecacbc)] - **(SEMVER-MINOR)** **cli**: add --max-heap-size option (tannal) [#58708](https://github.com/nodejs/node/pull/58708)
+* \[[`83c38672f7`](https://github.com/nodejs/node/commit/83c38672f7)] - **cli**: add --require-module/--no-require-module (Joyee Cheung) [#60959](https://github.com/nodejs/node/pull/60959)
+* \[[`54ef940e01`](https://github.com/nodejs/node/commit/54ef940e01)] - **(SEMVER-MINOR)** **crypto**: add raw key formats support to the KeyObject APIs (Filip Skokan) [#62240](https://github.com/nodejs/node/pull/62240)
+* \[[`f4a3edc47a`](https://github.com/nodejs/node/commit/f4a3edc47a)] - **(SEMVER-MINOR)** **fs**: add `throwIfNoEntry` option for fs.stat and fs.promises.stat (Juan José) [#61178](https://github.com/nodejs/node/pull/61178)
+* \[[`5cdcba17cc`](https://github.com/nodejs/node/commit/5cdcba17cc)] - **(SEMVER-MINOR)** **http2**: add http1Options for HTTP/1 fallback configuration (Amol Yadav) [#61713](https://github.com/nodejs/node/pull/61713)
+* \[[`8b6be3fe14`](https://github.com/nodejs/node/commit/8b6be3fe14)] - **module**: mark require(esm) as stable (Joyee Cheung) [#60959](https://github.com/nodejs/node/pull/60959)
+* \[[`68fbc0c6cc`](https://github.com/nodejs/node/commit/68fbc0c6cc)] - **module**: mark module compile cache as stable (Joyee Cheung) [#60971](https://github.com/nodejs/node/pull/60971)
+* \[[`c851e76f8c`](https://github.com/nodejs/node/commit/c851e76f8c)] - **(SEMVER-MINOR)** **net**: add `setTOS` and `getTOS` to `Socket` (Amol Yadav) [#61503](https://github.com/nodejs/node/pull/61503)
+* \[[`6ac4304c87`](https://github.com/nodejs/node/commit/6ac4304c87)] - **(SEMVER-MINOR)** **sqlite**: add limits property to DatabaseSync (Mert Can Altin) [#61298](https://github.com/nodejs/node/pull/61298)
+* \[[`aaf9af1672`](https://github.com/nodejs/node/commit/aaf9af1672)] - **sqlite**: mark as release candidate (Matteo Collina) [#61262](https://github.com/nodejs/node/pull/61262)
+* \[[`eb77a7a297`](https://github.com/nodejs/node/commit/eb77a7a297)] - **(SEMVER-MINOR)** **src**: add C++ support for diagnostics channels (RafaelGSS) [#61869](https://github.com/nodejs/node/pull/61869)
+* \[[`6834ca13bb`](https://github.com/nodejs/node/commit/6834ca13bb)] - **(SEMVER-MINOR)** **stream**: rename `Duplex.toWeb()` type option to `readableType` (René) [#61632](https://github.com/nodejs/node/pull/61632)
+* \[[`f5f21d36a6`](https://github.com/nodejs/node/commit/f5f21d36a6)] - **test\_runner**: add exports option for module mocks (sangwook) [#61727](https://github.com/nodejs/node/pull/61727)
+* \[[`1f2025fd1e`](https://github.com/nodejs/node/commit/1f2025fd1e)] - **(SEMVER-MINOR)** **test\_runner**: expose worker ID for concurrent test execution (Ali Hassan) [#61394](https://github.com/nodejs/node/pull/61394)
+* \[[`1ca20fc33d`](https://github.com/nodejs/node/commit/1ca20fc33d)] - **(SEMVER-MINOR)** **test\_runner**: show interrupted test on SIGINT (Matteo Collina) [#61676](https://github.com/nodejs/node/pull/61676)
+
+### Commits
+
+* \[[`148373cea1`](https://github.com/nodejs/node/commit/148373cea1)] - **assert,util**: improve comparison performance (Ruben Bridgewater) [#61176](https://github.com/nodejs/node/pull/61176)
+* \[[`e5558b0859`](https://github.com/nodejs/node/commit/e5558b0859)] - **assert,util**: fix deep comparing invalid dates skipping properties (Ruben Bridgewater) [#61076](https://github.com/nodejs/node/pull/61076)
+* \[[`83cffd92b5`](https://github.com/nodejs/node/commit/83cffd92b5)] - **async\_hooks**: enabledHooksExist shall return if hooks are enabled (Gerhard Stöbich) [#61054](https://github.com/nodejs/node/pull/61054)
+* \[[`2c9436b43d`](https://github.com/nodejs/node/commit/2c9436b43d)] - **benchmark**: fix destructuring in dgram/single-buffer (Ali Hassan) [#62084](https://github.com/nodejs/node/pull/62084)
+* \[[`837acd7382`](https://github.com/nodejs/node/commit/837acd7382)] - **benchmark**: add startup benchmark for ESM entrypoint (Joyee Cheung) [#61769](https://github.com/nodejs/node/pull/61769)
+* \[[`a6ced7d272`](https://github.com/nodejs/node/commit/a6ced7d272)] - **buffer**: improve performance of multiple Buffer operations (Ali Hassan) [#61871](https://github.com/nodejs/node/pull/61871)
+* \[[`a82003bf8b`](https://github.com/nodejs/node/commit/a82003bf8b)] - **buffer**: optimize buffer.concat performance (Mert Can Altin) [#61721](https://github.com/nodejs/node/pull/61721)
+* \[[`83dfd0be1d`](https://github.com/nodejs/node/commit/83dfd0be1d)] - **buffer**: disallow ArrayBuffer transfer on pooled buffer (Chengzhong Wu) [#61372](https://github.com/nodejs/node/pull/61372)
+* \[[`ed2d0cb1bf`](https://github.com/nodejs/node/commit/ed2d0cb1bf)] - **build**: support empty libname flags in `configure.py` (Antoine du Hamel) [#62477](https://github.com/nodejs/node/pull/62477)
+* \[[`09f7920267`](https://github.com/nodejs/node/commit/09f7920267)] - **build**: fix timezone-update path references (Chengzhong Wu) [#62280](https://github.com/nodejs/node/pull/62280)
+* \[[`af46b15b91`](https://github.com/nodejs/node/commit/af46b15b91)] - **build**: use path-ignore in GHA coverage-windows.yml (Chengzhong Wu) [#61811](https://github.com/nodejs/node/pull/61811)
+* \[[`2cf77eadd1`](https://github.com/nodejs/node/commit/2cf77eadd1)] - **build**: generate\_config\_gypi.py generates valid JSON (Shelley Vohr) [#61791](https://github.com/nodejs/node/pull/61791)
+* \[[`e0220f0c35`](https://github.com/nodejs/node/commit/e0220f0c35)] - **build**: build with v8 gdbjit support on supported platform (Joyee Cheung) [#61010](https://github.com/nodejs/node/pull/61010)
+* \[[`5505511dcb`](https://github.com/nodejs/node/commit/5505511dcb)] - **build**: enable -DV8\_ENABLE\_CHECKS flag (Ryuhei Shima) [#61327](https://github.com/nodejs/node/pull/61327)
+* \[[`5f8ecf3940`](https://github.com/nodejs/node/commit/5f8ecf3940)] - **build**: add --debug-symbols to build with -g without enabling DCHECKs (Joyee Cheung) [#61100](https://github.com/nodejs/node/pull/61100)
+* \[[`ab18c0867b`](https://github.com/nodejs/node/commit/ab18c0867b)] - **build**: fix --node-builtin-modules-path (Filip Skokan) [#62115](https://github.com/nodejs/node/pull/62115)
+* \[[`bfa60d5782`](https://github.com/nodejs/node/commit/bfa60d5782)] - **build**: fix GN for new merve dep (Shelley Vohr) [#61984](https://github.com/nodejs/node/pull/61984)
+* \[[`0d1975fe3a`](https://github.com/nodejs/node/commit/0d1975fe3a)] - **build,win**: add WinGet Visual Studio 2022 Build Tools Edition config (Mike McCready) [#61652](https://github.com/nodejs/node/pull/61652)
+* \[[`10b2bb5fa6`](https://github.com/nodejs/node/commit/10b2bb5fa6)] - **child\_process**: add tracing channel for spawn (Marco) [#61836](https://github.com/nodejs/node/pull/61836)
+* \[[`3d87ecacbc`](https://github.com/nodejs/node/commit/3d87ecacbc)] - **(SEMVER-MINOR)** **cli**: add --max-heap-size option (tannal) [#58708](https://github.com/nodejs/node/pull/58708)
+* \[[`83c38672f7`](https://github.com/nodejs/node/commit/83c38672f7)] - **cli**: add --require-module/--no-require-module (Joyee Cheung) [#60959](https://github.com/nodejs/node/pull/60959)
+* \[[`9d37233824`](https://github.com/nodejs/node/commit/9d37233824)] - **crypto**: update root certificates to NSS 3.121 (Node.js GitHub Bot) [#62485](https://github.com/nodejs/node/pull/62485)
+* \[[`b0cbfe38a4`](https://github.com/nodejs/node/commit/b0cbfe38a4)] - **crypto**: add crypto::GetSSLCtx API for addon access to OpenSSL contexts (Tim Perry) [#62254](https://github.com/nodejs/node/pull/62254)
+* \[[`dc034a4ac9`](https://github.com/nodejs/node/commit/dc034a4ac9)] - **crypto**: reject ML-KEM/ML-DSA PKCS#8 import without seed in SubtleCrypto (Filip Skokan) [#62218](https://github.com/nodejs/node/pull/62218)
+* \[[`8aa6e706df`](https://github.com/nodejs/node/commit/8aa6e706df)] - **crypto**: refactor WebCrypto AEAD algorithms auth tag handling (Filip Skokan) [#62169](https://github.com/nodejs/node/pull/62169)
+* \[[`20cb932bcf`](https://github.com/nodejs/node/commit/20cb932bcf)] - **crypto**: read algorithm name property only once in normalizeAlgorithm (Filip Skokan) [#62170](https://github.com/nodejs/node/pull/62170)
+* \[[`e2934162b4`](https://github.com/nodejs/node/commit/e2934162b4)] - **crypto**: add missing AES dictionaries (Filip Skokan) [#62099](https://github.com/nodejs/node/pull/62099)
+* \[[`8b8db52f65`](https://github.com/nodejs/node/commit/8b8db52f65)] - **crypto**: fix importKey required argument count check (Filip Skokan) [#62099](https://github.com/nodejs/node/pull/62099)
+* \[[`bd5458db29`](https://github.com/nodejs/node/commit/bd5458db29)] - **crypto**: fix missing nullptr check on RSA\_new() (ndossche) [#61888](https://github.com/nodejs/node/pull/61888)
+* \[[`7302c7ed22`](https://github.com/nodejs/node/commit/7302c7ed22)] - **crypto**: fix handling of null BUF\_MEM\* in ToV8Value() (Nora Dossche) [#61885](https://github.com/nodejs/node/pull/61885)
+* \[[`8d0c22ea20`](https://github.com/nodejs/node/commit/8d0c22ea20)] - **crypto**: fix potential null pointer dereference when BIO\_meth\_new() fails (Nora Dossche) [#61788](https://github.com/nodejs/node/pull/61788)
+* \[[`72aad8b40f`](https://github.com/nodejs/node/commit/72aad8b40f)] - **crypto**: always return certificate serial numbers as uppercase (Anna Henningsen) [#61752](https://github.com/nodejs/node/pull/61752)
+* \[[`2395fc0f4d`](https://github.com/nodejs/node/commit/2395fc0f4d)] - **crypto**: rename CShakeParams and KmacParams length to outputLength (Filip Skokan) [#61875](https://github.com/nodejs/node/pull/61875)
+* \[[`541be3aaf2`](https://github.com/nodejs/node/commit/541be3aaf2)] - **crypto**: recognize raw formats in keygen (Filip Skokan) [#62480](https://github.com/nodejs/node/pull/62480)
+* \[[`54ef940e01`](https://github.com/nodejs/node/commit/54ef940e01)] - **(SEMVER-MINOR)** **crypto**: add raw key formats support to the KeyObject APIs (Filip Skokan) [#62240](https://github.com/nodejs/node/pull/62240)
+* \[[`bef1949823`](https://github.com/nodejs/node/commit/bef1949823)] - **deps**: V8: cherry-pick 33e7739c134d (Thibaud Michaud) [#62567](https://github.com/nodejs/node/pull/62567)
+* \[[`2e1a565a55`](https://github.com/nodejs/node/commit/2e1a565a55)] - **deps**: update ada to 3.4.4 (Node.js GitHub Bot) [#62414](https://github.com/nodejs/node/pull/62414)
+* \[[`d0418bad10`](https://github.com/nodejs/node/commit/d0418bad10)] - **deps**: update timezone to 2026a (Node.js GitHub Bot) [#62164](https://github.com/nodejs/node/pull/62164)
+* \[[`53aad66415`](https://github.com/nodejs/node/commit/53aad66415)] - **deps**: update googletest to 2461743991f9aa53e9a3625eafcbacd81a3c74cd (Node.js GitHub Bot) [#62484](https://github.com/nodejs/node/pull/62484)
+* \[[`90fab71a84`](https://github.com/nodejs/node/commit/90fab71a84)] - **deps**: update simdjson to 4.5.0 (Node.js GitHub Bot) [#62382](https://github.com/nodejs/node/pull/62382)
+* \[[`a416ddf6d9`](https://github.com/nodejs/node/commit/a416ddf6d9)] - **deps**: V8: cherry-pick cf1bce40a5ef (Richard Lau) [#62449](https://github.com/nodejs/node/pull/62449)
+* \[[`4d9123e57d`](https://github.com/nodejs/node/commit/4d9123e57d)] - **deps**: upgrade npm to 11.12.1 (npm team) [#62448](https://github.com/nodejs/node/pull/62448)
+* \[[`952d715028`](https://github.com/nodejs/node/commit/952d715028)] - **deps**: update sqlite to 3.51.3 (Node.js GitHub Bot) [#62256](https://github.com/nodejs/node/pull/62256)
+* \[[`f3fd7ed426`](https://github.com/nodejs/node/commit/f3fd7ed426)] - **deps**: update googletest to 73a63ea05dc8ca29ec1d2c1d66481dd0de1950f1 (Node.js GitHub Bot) [#61927](https://github.com/nodejs/node/pull/61927)
+* \[[`71a2f82d7c`](https://github.com/nodejs/node/commit/71a2f82d7c)] - **deps**: upgrade npm to 11.11.1 (npm team) [#62216](https://github.com/nodejs/node/pull/62216)
+* \[[`84f60c26f7`](https://github.com/nodejs/node/commit/84f60c26f7)] - **deps**: update amaro to 1.1.8 (Node.js GitHub Bot) [#62151](https://github.com/nodejs/node/pull/62151)
+* \[[`43159d0e5f`](https://github.com/nodejs/node/commit/43159d0e5f)] - **deps**: update sqlite to 3.52.0 (Node.js GitHub Bot) [#62150](https://github.com/nodejs/node/pull/62150)
+* \[[`b887657b38`](https://github.com/nodejs/node/commit/b887657b38)] - **deps**: V8: cherry-pick aa0b288f87cc (Richard Lau) [#62136](https://github.com/nodejs/node/pull/62136)
+* \[[`7ab885b323`](https://github.com/nodejs/node/commit/7ab885b323)] - **deps**: update ada to 3.4.3 (Node.js GitHub Bot) [#62049](https://github.com/nodejs/node/pull/62049)
+* \[[`671ddec2b9`](https://github.com/nodejs/node/commit/671ddec2b9)] - **deps**: update minimatch to 10.2.4 (Node.js GitHub Bot) [#62016](https://github.com/nodejs/node/pull/62016)
+* \[[`290fe37d4d`](https://github.com/nodejs/node/commit/290fe37d4d)] - **deps**: update simdjson to 4.3.1 (Node.js GitHub Bot) [#61930](https://github.com/nodejs/node/pull/61930)
+* \[[`a13bee76b5`](https://github.com/nodejs/node/commit/a13bee76b5)] - **deps**: update acorn-walk to 8.3.5 (Node.js GitHub Bot) [#61928](https://github.com/nodejs/node/pull/61928)
+* \[[`f0e40b35b9`](https://github.com/nodejs/node/commit/f0e40b35b9)] - **deps**: update acorn to 8.16.0 (Node.js GitHub Bot) [#61925](https://github.com/nodejs/node/pull/61925)
+* \[[`463dfa023a`](https://github.com/nodejs/node/commit/463dfa023a)] - **deps**: update minimatch to 10.2.2 (Node.js GitHub Bot) [#61830](https://github.com/nodejs/node/pull/61830)
+* \[[`4b2e4bb108`](https://github.com/nodejs/node/commit/4b2e4bb108)] - **deps**: update nbytes to 0.1.3 (Node.js GitHub Bot) [#61879](https://github.com/nodejs/node/pull/61879)
+* \[[`5626cb83d0`](https://github.com/nodejs/node/commit/5626cb83d0)] - **deps**: remove stale OpenSSL arch configs (René) [#61834](https://github.com/nodejs/node/pull/61834)
+* \[[`52668874fd`](https://github.com/nodejs/node/commit/52668874fd)] - **deps**: update llhttp to 9.3.1 (Node.js GitHub Bot) [#61827](https://github.com/nodejs/node/pull/61827)
+* \[[`b3387b07b1`](https://github.com/nodejs/node/commit/b3387b07b1)] - **deps**: update googletest to 5a9c3f9e8d9b90bbbe8feb32902146cb8f7c1757 (Node.js GitHub Bot) [#61731](https://github.com/nodejs/node/pull/61731)
+* \[[`196268cb4c`](https://github.com/nodejs/node/commit/196268cb4c)] - **deps**: V8: cherry-pick c5ff7c4d6cde (Chengzhong Wu) [#61372](https://github.com/nodejs/node/pull/61372)
+* \[[`36869b52de`](https://github.com/nodejs/node/commit/36869b52de)] - **deps**: update merve to 1.2.2 (Node.js GitHub Bot) [#62213](https://github.com/nodejs/node/pull/62213)
+* \[[`3cbac055de`](https://github.com/nodejs/node/commit/3cbac055de)] - **deps**: update merve to 1.2.0 (Node.js GitHub Bot) [#62149](https://github.com/nodejs/node/pull/62149)
+* \[[`7757cc3495`](https://github.com/nodejs/node/commit/7757cc3495)] - **deps**: V8: backport 6a0a25abaed3 (Vivian Wang) [#61670](https://github.com/nodejs/node/pull/61670)
+* \[[`359797c2fb`](https://github.com/nodejs/node/commit/359797c2fb)] - **deps,src**: prepare for cpplint update (Michaël Zasso) [#60901](https://github.com/nodejs/node/pull/60901)
+* \[[`ace802e59b`](https://github.com/nodejs/node/commit/ace802e59b)] - **diagnostics\_channel**: add diagnostics channels for web locks (Ilyas Shabi) [#62123](https://github.com/nodejs/node/pull/62123)
+* \[[`a072411b03`](https://github.com/nodejs/node/commit/a072411b03)] - **doc**: remove spawn with shell example from bat/cmd section (Kit Dallege) [#62243](https://github.com/nodejs/node/pull/62243)
+* \[[`0b152449af`](https://github.com/nodejs/node/commit/0b152449af)] - **doc**: fix typo in --disable-wasm-trap-handler description (Dmytro Semchuk) [#61820](https://github.com/nodejs/node/pull/61820)
+* \[[`73ea387ad7`](https://github.com/nodejs/node/commit/73ea387ad7)] - **doc**: remove obsolete Boxstarter automated install (Mike McCready) [#61785](https://github.com/nodejs/node/pull/61785)
+* \[[`7f234add8e`](https://github.com/nodejs/node/commit/7f234add8e)] - **doc**: deprecate `module.register()` (DEP0205) (Geoffrey Booth) [#62395](https://github.com/nodejs/node/pull/62395)
+* \[[`12fc3c6a30`](https://github.com/nodejs/node/commit/12fc3c6a30)] - **doc**: clarify that features cannot be both experimental and deprecated (Antoine du Hamel) [#62456](https://github.com/nodejs/node/pull/62456)
+* \[[`1ecc5962a2`](https://github.com/nodejs/node/commit/1ecc5962a2)] - **doc**: fix 'transfered' typo in quic.md (lilianakatrina684-a11y) [#62492](https://github.com/nodejs/node/pull/62492)
+* \[[`56741a1303`](https://github.com/nodejs/node/commit/56741a1303)] - **doc**: move sqlite type conversion section to correct level (René) [#62482](https://github.com/nodejs/node/pull/62482)
+* \[[`12b04d17d5`](https://github.com/nodejs/node/commit/12b04d17d5)] - **doc**: add Rafael to last security release steward (Rafael Gonzaga) [#62423](https://github.com/nodejs/node/pull/62423)
+* \[[`c4567e4a8d`](https://github.com/nodejs/node/commit/c4567e4a8d)] - **doc**: fix overstated Date header requirement in response.sendDate (Kit Dallege) [#62206](https://github.com/nodejs/node/pull/62206)
+* \[[`384a41047f`](https://github.com/nodejs/node/commit/384a41047f)] - **doc**: enhance clarification about the main field (Mowafak Almahaini) [#62302](https://github.com/nodejs/node/pull/62302)
+* \[[`93d19b1a1c`](https://github.com/nodejs/node/commit/93d19b1a1c)] - **doc**: minor typo fix (Jeff Matson) [#62358](https://github.com/nodejs/node/pull/62358)
+* \[[`3db35d2c59`](https://github.com/nodejs/node/commit/3db35d2c59)] - **doc**: add path to vulnerabilities.json mention (Rafael Gonzaga) [#62355](https://github.com/nodejs/node/pull/62355)
+* \[[`57b105c9d5`](https://github.com/nodejs/node/commit/57b105c9d5)] - **doc**: deprecate CryptoKey use in node:crypto (Filip Skokan) [#62321](https://github.com/nodejs/node/pull/62321)
+* \[[`490168c993`](https://github.com/nodejs/node/commit/490168c993)] - **doc**: fix small environment\_variables typo (chris) [#62279](https://github.com/nodejs/node/pull/62279)
+* \[[`0291be584b`](https://github.com/nodejs/node/commit/0291be584b)] - **doc**: test and test-only targets do not run linter (Xavier Stouder) [#62120](https://github.com/nodejs/node/pull/62120)
+* \[[`ba0a82a1e1`](https://github.com/nodejs/node/commit/ba0a82a1e1)] - **doc**: clarify fs.ReadStream and fs.WriteStream are not constructable (Kit Dallege) [#62208](https://github.com/nodejs/node/pull/62208)
+* \[[`125bdbf504`](https://github.com/nodejs/node/commit/125bdbf504)] - **doc**: clarify that any truthy value of `shell` is part of DEP0190 (Antoine du Hamel) [#62249](https://github.com/nodejs/node/pull/62249)
+* \[[`a141ad0aeb`](https://github.com/nodejs/node/commit/a141ad0aeb)] - **doc**: remove outdated Chrome 66 and ndb references from debugger (Kit Dallege) [#62202](https://github.com/nodejs/node/pull/62202)
+* \[[`44bde8e573`](https://github.com/nodejs/node/commit/44bde8e573)] - **doc**: add note (and caveat) for `mock.module` about customization hooks (Jacob Smith) [#62075](https://github.com/nodejs/node/pull/62075)
+* \[[`8c46a1ca1a`](https://github.com/nodejs/node/commit/8c46a1ca1a)] - **doc**: copyedit `addons.md` (Antoine du Hamel) [#62071](https://github.com/nodejs/node/pull/62071)
+* \[[`7f989f02f7`](https://github.com/nodejs/node/commit/7f989f02f7)] - **doc**: correct `util.convertProcessSignalToExitCode` validation behavior (René) [#62134](https://github.com/nodejs/node/pull/62134)
+* \[[`a4466ebdac`](https://github.com/nodejs/node/commit/a4466ebdac)] - **doc**: add efekrskl as triager (Efe) [#61876](https://github.com/nodejs/node/pull/61876)
+* \[[`db516eca3a`](https://github.com/nodejs/node/commit/db516eca3a)] - **doc**: fix markdown for `expectFailure` values (Jacob Smith) [#62100](https://github.com/nodejs/node/pull/62100)
+* \[[`ad97045125`](https://github.com/nodejs/node/commit/ad97045125)] - **doc**: include url.resolve() in DEP0169 application deprecation (Mike McCready) [#62002](https://github.com/nodejs/node/pull/62002)
+* \[[`309f37ba42`](https://github.com/nodejs/node/commit/309f37ba42)] - **doc**: expand SECURITY.md with non-vulnerability examples (Rafael Gonzaga) [#61972](https://github.com/nodejs/node/pull/61972)
+* \[[`dbb3551b7b`](https://github.com/nodejs/node/commit/dbb3551b7b)] - **doc**: separate in-types and out-types in SQLite conversion docs (René) [#62034](https://github.com/nodejs/node/pull/62034)
+* \[[`191c433db8`](https://github.com/nodejs/node/commit/191c433db8)] - **doc**: fix small logic error in DETECT\_MODULE\_SYNTAX (René) [#62025](https://github.com/nodejs/node/pull/62025)
+* \[[`8511b1c784`](https://github.com/nodejs/node/commit/8511b1c784)] - **doc**: fix module.stripTypeScriptTypes indentation (René) [#61992](https://github.com/nodejs/node/pull/61992)
+* \[[`dd1139f52c`](https://github.com/nodejs/node/commit/dd1139f52c)] - **doc**: update DEP0040 (punycode) to application type deprecation (Mike McCready) [#61916](https://github.com/nodejs/node/pull/61916)
+* \[[`54009e9c62`](https://github.com/nodejs/node/commit/54009e9c62)] - **doc**: explicitly mention Slack handle (Rafael Gonzaga) [#61986](https://github.com/nodejs/node/pull/61986)
+* \[[`78fa1a1a49`](https://github.com/nodejs/node/commit/78fa1a1a49)] - **doc**: support toolchain Visual Studio 2022 & 2026 + Windows 11 SDK (Mike McCready) [#61864](https://github.com/nodejs/node/pull/61864)
+* \[[`d8204d3cdb`](https://github.com/nodejs/node/commit/d8204d3cdb)] - **doc**: rename invalid `function` parameter (René) [#61942](https://github.com/nodejs/node/pull/61942)
+* \[[`a5a14482fb`](https://github.com/nodejs/node/commit/a5a14482fb)] - **doc**: clarify status of feature request issues (Antoine du Hamel) [#61505](https://github.com/nodejs/node/pull/61505)
+* \[[`bd0688feb6`](https://github.com/nodejs/node/commit/bd0688feb6)] - **doc**: add esm and cjs examples to node:vm (Alfredo González) [#61498](https://github.com/nodejs/node/pull/61498)
+* \[[`240b512f9f`](https://github.com/nodejs/node/commit/240b512f9f)] - **doc**: clarify build environment is trusted in threat model (Matteo Collina) [#61865](https://github.com/nodejs/node/pull/61865)
+* \[[`5dd48e3456`](https://github.com/nodejs/node/commit/5dd48e3456)] - **doc**: remove incorrect mention of `module` in `typescript.md` (Rob Palmer) [#61839](https://github.com/nodejs/node/pull/61839)
+* \[[`9502c22055`](https://github.com/nodejs/node/commit/9502c22055)] - **doc**: simplify addAbortListener example (Chemi Atlow) [#61842](https://github.com/nodejs/node/pull/61842)
+* \[[`6fec397828`](https://github.com/nodejs/node/commit/6fec397828)] - **doc**: clean up globals.md (René) [#61822](https://github.com/nodejs/node/pull/61822)
+* \[[`a810f5ccef`](https://github.com/nodejs/node/commit/a810f5ccef)] - **doc**: clarify async caveats for `events.once()` (René) [#61572](https://github.com/nodejs/node/pull/61572)
+* \[[`2bf990bb1a`](https://github.com/nodejs/node/commit/2bf990bb1a)] - **doc**: update Juan's security steward info (Juan José) [#61754](https://github.com/nodejs/node/pull/61754)
+* \[[`0312db948d`](https://github.com/nodejs/node/commit/0312db948d)] - **doc**: fix methods being documented as properties in `process.md` (Antoine du Hamel) [#61765](https://github.com/nodejs/node/pull/61765)
+* \[[`e558b26e7f`](https://github.com/nodejs/node/commit/e558b26e7f)] - **doc**: add riscv64 info into platform list (Lu Yahan) [#42251](https://github.com/nodejs/node/pull/42251)
+* \[[`49254e3dc0`](https://github.com/nodejs/node/commit/49254e3dc0)] - **doc**: fix dropdown menu being obscured at <600px due to stacking context (Jeff) [#61735](https://github.com/nodejs/node/pull/61735)
+* \[[`4ff01b5c10`](https://github.com/nodejs/node/commit/4ff01b5c10)] - **doc**: fix spacing in process message event (Aviv Keller) [#61756](https://github.com/nodejs/node/pull/61756)
+* \[[`94097a79d6`](https://github.com/nodejs/node/commit/94097a79d6)] - **doc**: move describe/it aliases section before expectFailure (Luca Raveri) [#61567](https://github.com/nodejs/node/pull/61567)
+* \[[`b7cd31acbe`](https://github.com/nodejs/node/commit/b7cd31acbe)] - **doc**: fix broken links of net.md (YuSheng Chen) [#61673](https://github.com/nodejs/node/pull/61673)
+* \[[`ae5e353fe2`](https://github.com/nodejs/node/commit/ae5e353fe2)] - **doc**: clean up Windows code snippet in `child_process.md` (reillylm) [#61422](https://github.com/nodejs/node/pull/61422)
+* \[[`ea9beb6a3c`](https://github.com/nodejs/node/commit/ea9beb6a3c)] - **doc**: update to Visual Studio 2026 manual install (Mike McCready) [#61655](https://github.com/nodejs/node/pull/61655)
+* \[[`42057c84e2`](https://github.com/nodejs/node/commit/42057c84e2)] - **doc,module**: add missing doc for syncHooks.deregister() (Joyee Cheung) [#61959](https://github.com/nodejs/node/pull/61959)
+* \[[`a035bd5235`](https://github.com/nodejs/node/commit/a035bd5235)] - **doc,test**: clarify --eval syntax for leading '-' scripts (kovan) [#62244](https://github.com/nodejs/node/pull/62244)
+* \[[`deb0b78460`](https://github.com/nodejs/node/commit/deb0b78460)] - **esm**: fix typo in worker loader hook comment (jakecastelli) [#62475](https://github.com/nodejs/node/pull/62475)
+* \[[`b93bf7dbfc`](https://github.com/nodejs/node/commit/b93bf7dbfc)] - **esm**: fix source phase identity bug in loadCache eviction (Guy Bedford) [#62415](https://github.com/nodejs/node/pull/62415)
+* \[[`679d18b57f`](https://github.com/nodejs/node/commit/679d18b57f)] - **esm**: fix path normalization in `finalizeResolution` (Antoine du Hamel) [#62080](https://github.com/nodejs/node/pull/62080)
+* \[[`171e9fc268`](https://github.com/nodejs/node/commit/171e9fc268)] - **esm**: update outdated FIXME comment in translators.js (Karan Mangtani) [#61715](https://github.com/nodejs/node/pull/61715)
+* \[[`cc19728228`](https://github.com/nodejs/node/commit/cc19728228)] - **events**: avoid cloning listeners array on every emit (Gürgün Dayıoğlu) [#62261](https://github.com/nodejs/node/pull/62261)
+* \[[`458c92be52`](https://github.com/nodejs/node/commit/458c92be52)] - **events**: don't call resume after close (Сковорода Никита Андреевич) [#60548](https://github.com/nodejs/node/pull/60548)
+* \[[`4691f3e7fb`](https://github.com/nodejs/node/commit/4691f3e7fb)] - **fs**: fix cpSync to handle non-ASCII characters (Stefan Stojanovic) [#61950](https://github.com/nodejs/node/pull/61950)
+* \[[`f4a3edc47a`](https://github.com/nodejs/node/commit/f4a3edc47a)] - **(SEMVER-MINOR)** **fs**: add `throwIfNoEntry` option for fs.stat and fs.promises.stat (Juan José) [#61178](https://github.com/nodejs/node/pull/61178)
+* \[[`58e4d50cd0`](https://github.com/nodejs/node/commit/58e4d50cd0)] - **http**: fix use-after-free when freeParser is called during llhttp\_execute (Gerhard Stöbich) [#62095](https://github.com/nodejs/node/pull/62095)
+* \[[`0a4ad85ab0`](https://github.com/nodejs/node/commit/0a4ad85ab0)] - **http**: validate ClientRequest path on set (Matteo Collina) [#62030](https://github.com/nodejs/node/pull/62030)
+* \[[`f8178ac3e6`](https://github.com/nodejs/node/commit/f8178ac3e6)] - **http**: validate headers in writeEarlyHints (Richard Clarke) [#61897](https://github.com/nodejs/node/pull/61897)
+* \[[`899884d0ed`](https://github.com/nodejs/node/commit/899884d0ed)] - **http**: remove redundant keepAliveTimeoutBuffer assignment (Efe) [#61743](https://github.com/nodejs/node/pull/61743)
+* \[[`08d2e40694`](https://github.com/nodejs/node/commit/08d2e40694)] - **http**: attach error handler to socket synchronously in onSocket (RajeshKumar11) [#61770](https://github.com/nodejs/node/pull/61770)
+* \[[`1c2064c1f8`](https://github.com/nodejs/node/commit/1c2064c1f8)] - **http**: fix keep-alive socket reuse race in requestOnFinish (Martin Slota) [#61710](https://github.com/nodejs/node/pull/61710)
+* \[[`38e9c66e0f`](https://github.com/nodejs/node/commit/38e9c66e0f)] - **http2**: add strictSingleValueFields option to relax header validation (Tim Perry) [#59917](https://github.com/nodejs/node/pull/59917)
+* \[[`5cdcba17cc`](https://github.com/nodejs/node/commit/5cdcba17cc)] - **(SEMVER-MINOR)** **http2**: add http1Options for HTTP/1 fallback configuration (Amol Yadav) [#61713](https://github.com/nodejs/node/pull/61713)
+* \[[`687c0acd00`](https://github.com/nodejs/node/commit/687c0acd00)] - **http2**: fix FileHandle leak in respondWithFile (sangwook) [#61707](https://github.com/nodejs/node/pull/61707)
+* \[[`0c8f802ec2`](https://github.com/nodejs/node/commit/0c8f802ec2)] - **inspector**: add Target.getTargets and extract TargetManager (Kohei) [#62487](https://github.com/nodejs/node/pull/62487)
+* \[[`7de8a303c1`](https://github.com/nodejs/node/commit/7de8a303c1)] - **inspector**: unwrap internal/debugger/inspect imports (René) [#61974](https://github.com/nodejs/node/pull/61974)
+* \[[`59ac10a4fd`](https://github.com/nodejs/node/commit/59ac10a4fd)] - **lib**: make SubtleCrypto.supports enumerable (Filip Skokan) [#62307](https://github.com/nodejs/node/pull/62307)
+* \[[`9dc102ba90`](https://github.com/nodejs/node/commit/9dc102ba90)] - **lib**: prefer primordials in SubtleCrypto (Filip Skokan) [#62226](https://github.com/nodejs/node/pull/62226)
+* \[[`78a9aa8f32`](https://github.com/nodejs/node/commit/78a9aa8f32)] - **lib**: fix source map url parse in dynamic imports (Chengzhong Wu) [#61990](https://github.com/nodejs/node/pull/61990)
+* \[[`16b8cc6643`](https://github.com/nodejs/node/commit/16b8cc6643)] - **lib**: improve argument handling in Blob constructor (Ms2ger) [#61980](https://github.com/nodejs/node/pull/61980)
+* \[[`a03b5d39b8`](https://github.com/nodejs/node/commit/a03b5d39b8)] - **lib**: reduce cycles in esm loader and load it in snapshot (Joyee Cheung) [#61769](https://github.com/nodejs/node/pull/61769)
+* \[[`1017bf5f86`](https://github.com/nodejs/node/commit/1017bf5f86)] - **lib**: remove top-level getOptionValue() calls in lib/internal/modules (Joyee Cheung) [#61769](https://github.com/nodejs/node/pull/61769)
+* \[[`d79984b41b`](https://github.com/nodejs/node/commit/d79984b41b)] - **lib**: optimize styleText when validateStream is false (Rafael Gonzaga) [#61792](https://github.com/nodejs/node/pull/61792)
+* \[[`6462b89d10`](https://github.com/nodejs/node/commit/6462b89d10)] - **meta**: bump actions/download-artifact from 7.0.0 to 8.0.0 (dependabot\[bot]) [#62063](https://github.com/nodejs/node/pull/62063)
+* \[[`5bb89916ea`](https://github.com/nodejs/node/commit/5bb89916ea)] - **meta**: bump actions/upload-artifact from 6.0.0 to 7.0.0 (dependabot\[bot]) [#62062](https://github.com/nodejs/node/pull/62062)
+* \[[`b067d74d94`](https://github.com/nodejs/node/commit/b067d74d94)] - **meta**: bump step-security/harden-runner from 2.14.2 to 2.15.0 (dependabot\[bot]) [#62064](https://github.com/nodejs/node/pull/62064)
+* \[[`830e5cd125`](https://github.com/nodejs/node/commit/830e5cd125)] - **meta**: bump github/codeql-action from 4.32.0 to 4.32.4 (dependabot\[bot]) [#61911](https://github.com/nodejs/node/pull/61911)
+* \[[`16c839a3dd`](https://github.com/nodejs/node/commit/16c839a3dd)] - **meta**: bump step-security/harden-runner from 2.14.1 to 2.14.2 (dependabot\[bot]) [#61909](https://github.com/nodejs/node/pull/61909)
+* \[[`498abf661e`](https://github.com/nodejs/node/commit/498abf661e)] - **meta**: bump actions/stale from 10.1.1 to 10.2.0 (dependabot\[bot]) [#61908](https://github.com/nodejs/node/pull/61908)
+* \[[`78ac17f426`](https://github.com/nodejs/node/commit/78ac17f426)] - **module**: fix coverage of mocked CJS modules imported from ESM (Marco) [#62133](https://github.com/nodejs/node/pull/62133)
+* \[[`46cfad4138`](https://github.com/nodejs/node/commit/46cfad4138)] - **module**: run require.resolve through module.registerHooks() (Joyee Cheung) [#62028](https://github.com/nodejs/node/pull/62028)
+* \[[`8b6be3fe14`](https://github.com/nodejs/node/commit/8b6be3fe14)] - **module**: mark require(esm) as stable (Joyee Cheung) [#60959](https://github.com/nodejs/node/pull/60959)
+* \[[`68fbc0c6cc`](https://github.com/nodejs/node/commit/68fbc0c6cc)] - **module**: mark module compile cache as stable (Joyee Cheung) [#60971](https://github.com/nodejs/node/pull/60971)
+* \[[`c851e76f8c`](https://github.com/nodejs/node/commit/c851e76f8c)] - **(SEMVER-MINOR)** **net**: add `setTOS` and `getTOS` to `Socket` (Amol Yadav) [#61503](https://github.com/nodejs/node/pull/61503)
+* \[[`4c206ecb31`](https://github.com/nodejs/node/commit/4c206ecb31)] - **quic**: remove CryptoKey support from session keys option (Filip Skokan) [#62335](https://github.com/nodejs/node/pull/62335)
+* \[[`2f9c085cf5`](https://github.com/nodejs/node/commit/2f9c085cf5)] - **sqlite**: handle stmt invalidation (Guilherme Araújo) [#61877](https://github.com/nodejs/node/pull/61877)
+* \[[`6ac4304c87`](https://github.com/nodejs/node/commit/6ac4304c87)] - **(SEMVER-MINOR)** **sqlite**: add limits property to DatabaseSync (Mert Can Altin) [#61298](https://github.com/nodejs/node/pull/61298)
+* \[[`aaf9af1672`](https://github.com/nodejs/node/commit/aaf9af1672)] - **sqlite**: mark as release candidate (Matteo Collina) [#61262](https://github.com/nodejs/node/pull/61262)
+* \[[`7d67e5d693`](https://github.com/nodejs/node/commit/7d67e5d693)] - **src**: convert context\_frame field in AsyncWrap to internal field (Anna Henningsen) [#62103](https://github.com/nodejs/node/pull/62103)
+* \[[`d8ea1aaa8a`](https://github.com/nodejs/node/commit/d8ea1aaa8a)] - **src**: make AsyncWrap subclass internal field counts explicit (Anna Henningsen) [#62103](https://github.com/nodejs/node/pull/62103)
+* \[[`1dbf3bedbe`](https://github.com/nodejs/node/commit/1dbf3bedbe)] - **src**: improve EC JWK import performance (Filip Skokan) [#62396](https://github.com/nodejs/node/pull/62396)
+* \[[`cd84af747b`](https://github.com/nodejs/node/commit/cd84af747b)] - **src**: handle null backing store in ArrayBufferViewContents::Read (Mert Can Altin) [#62343](https://github.com/nodejs/node/pull/62343)
+* \[[`4f553cdc01`](https://github.com/nodejs/node/commit/4f553cdc01)] - **src**: enable compilation/linking with OpenSSL 4.0 (Filip Skokan) [#62410](https://github.com/nodejs/node/pull/62410)
+* \[[`70f8057258`](https://github.com/nodejs/node/commit/70f8057258)] - **src**: use stack allocation in indexOf latin1 path (Mert Can Altin) [#62268](https://github.com/nodejs/node/pull/62268)
+* \[[`d788467b6a`](https://github.com/nodejs/node/commit/d788467b6a)] - **src**: expose async context frame debugging helper to JS (Anna Henningsen) [#62103](https://github.com/nodejs/node/pull/62103)
+* \[[`4213f893ec`](https://github.com/nodejs/node/commit/4213f893ec)] - **src**: release context frame in AsyncWrap::EmitDestroy (Gerhard Stöbich) [#61995](https://github.com/nodejs/node/pull/61995)
+* \[[`79fb8cbcf5`](https://github.com/nodejs/node/commit/79fb8cbcf5)] - **src**: use validate\_ascii\_with\_errors instead of validate\_ascii (Сковорода Никита Андреевич) [#61122](https://github.com/nodejs/node/pull/61122)
+* \[[`2df328d59e`](https://github.com/nodejs/node/commit/2df328d59e)] - **src**: fix flags argument offset in JSUdpWrap (Weixie Cui) [#61948](https://github.com/nodejs/node/pull/61948)
+* \[[`eb77a7a297`](https://github.com/nodejs/node/commit/eb77a7a297)] - **(SEMVER-MINOR)** **src**: add C++ support for diagnostics channels (RafaelGSS) [#61869](https://github.com/nodejs/node/pull/61869)
+* \[[`6cda3d30c0`](https://github.com/nodejs/node/commit/6cda3d30c0)] - **src**: remove unnecessary `c_str()` conversions in diagnostic messages (Anna Henningsen) [#61786](https://github.com/nodejs/node/pull/61786)
+* \[[`26c6045363`](https://github.com/nodejs/node/commit/26c6045363)] - **src**: use bool literals in TraceEnvVarOptions (Tobias Nießen) [#61425](https://github.com/nodejs/node/pull/61425)
+* \[[`3c8f700fd7`](https://github.com/nodejs/node/commit/3c8f700fd7)] - **src**: track allocations made by zstd streams (Anna Henningsen) [#61717](https://github.com/nodejs/node/pull/61717)
+* \[[`94dbb36d4d`](https://github.com/nodejs/node/commit/94dbb36d4d)] - **src**: do not store compression methods on Brotli classes (Anna Henningsen) [#61717](https://github.com/nodejs/node/pull/61717)
+* \[[`bef661f182`](https://github.com/nodejs/node/commit/bef661f182)] - **src**: extract zlib allocation tracking into its own class (Anna Henningsen) [#61717](https://github.com/nodejs/node/pull/61717)
+* \[[`e8079a8297`](https://github.com/nodejs/node/commit/e8079a8297)] - **src**: release memory for zstd contexts in `Close()` (Anna Henningsen) [#61717](https://github.com/nodejs/node/pull/61717)
+* \[[`6e1197a3cc`](https://github.com/nodejs/node/commit/6e1197a3cc)] - **src**: add more checks and clarify docs for external references (Joyee Cheung) [#61719](https://github.com/nodejs/node/pull/61719)
+* \[[`c28a22c4be`](https://github.com/nodejs/node/commit/c28a22c4be)] - **src**: fix cjs\_lexer external reference registration (Joyee Cheung) [#61718](https://github.com/nodejs/node/pull/61718)
+* \[[`9e2c5fd7c9`](https://github.com/nodejs/node/commit/9e2c5fd7c9)] - **src**: simply uint32 to string as it must not fail (Chengzhong Wu) [#60846](https://github.com/nodejs/node/pull/60846)
+* \[[`df435d32b8`](https://github.com/nodejs/node/commit/df435d32b8)] - **src**: build v8 tick processor as built-in source text modules (Joyee Cheung) [#60518](https://github.com/nodejs/node/pull/60518)
+* \[[`2cb3573735`](https://github.com/nodejs/node/commit/2cb3573735)] - **src,sqlite**: fix filterFunc dangling reference (Edy Silva) [#62281](https://github.com/nodejs/node/pull/62281)
+* \[[`c44f53b544`](https://github.com/nodejs/node/commit/c44f53b544)] - **stream**: preserve error over AbortError in pipeline (Marco) [#62113](https://github.com/nodejs/node/pull/62113)
+* \[[`dc541370b4`](https://github.com/nodejs/node/commit/dc541370b4)] - **stream**: replace bind with arrow function for onwrite callback (Ali Hassan) [#62087](https://github.com/nodejs/node/pull/62087)
+* \[[`f6cdfbfaa7`](https://github.com/nodejs/node/commit/f6cdfbfaa7)] - **stream**: optimize webstreams pipeTo (Mattias Buelens) [#62079](https://github.com/nodejs/node/pull/62079)
+* \[[`fcf2a9f788`](https://github.com/nodejs/node/commit/fcf2a9f788)] - **stream**: fix brotli error handling in web compression streams (Filip Skokan) [#62107](https://github.com/nodejs/node/pull/62107)
+* \[[`cdec579c6b`](https://github.com/nodejs/node/commit/cdec579c6b)] - **stream**: improve Web Compression spec compliance (Filip Skokan) [#62107](https://github.com/nodejs/node/pull/62107)
+* \[[`dbe5898379`](https://github.com/nodejs/node/commit/dbe5898379)] - **stream**: fix UTF-8 character corruption in fast-utf8-stream (Matteo Collina) [#61745](https://github.com/nodejs/node/pull/61745)
+* \[[`531e62cd74`](https://github.com/nodejs/node/commit/531e62cd74)] - **stream**: fix TransformStream race on cancel with pending write (Marco) [#62040](https://github.com/nodejs/node/pull/62040)
+* \[[`a3751f2249`](https://github.com/nodejs/node/commit/a3751f2249)] - **stream**: accept ArrayBuffer in CompressionStream and DecompressionStream (조수민) [#61913](https://github.com/nodejs/node/pull/61913)
+* \[[`65aa8f68d0`](https://github.com/nodejs/node/commit/65aa8f68d0)] - **stream**: fix pipeTo to defer writes per WHATWG spec (Matteo Collina) [#61800](https://github.com/nodejs/node/pull/61800)
+* \[[`15f32b4935`](https://github.com/nodejs/node/commit/15f32b4935)] - **stream**: fix decoded fromList chunk boundary check (Thomas Watson) [#61884](https://github.com/nodejs/node/pull/61884)
+* \[[`569767e52e`](https://github.com/nodejs/node/commit/569767e52e)] - **stream**: add fast paths for webstreams read and pipeTo (Matteo Collina) [#61807](https://github.com/nodejs/node/pull/61807)
+* \[[`6834ca13bb`](https://github.com/nodejs/node/commit/6834ca13bb)] - **(SEMVER-MINOR)** **stream**: rename `Duplex.toWeb()` type option to `readableType` (René) [#61632](https://github.com/nodejs/node/pull/61632)
+* \[[`5ed5474437`](https://github.com/nodejs/node/commit/5ed5474437)] - **test**: update WPT for WebCryptoAPI to 2cb332d710 (Node.js GitHub Bot) [#62483](https://github.com/nodejs/node/pull/62483)
+* \[[`3c9c0f8577`](https://github.com/nodejs/node/commit/3c9c0f8577)] - **test**: fix test-buffer-zero-fill-cli to be effective (Сковорода Никита Андреевич) [#60623](https://github.com/nodejs/node/pull/60623)
+* \[[`19a52a1abe`](https://github.com/nodejs/node/commit/19a52a1abe)] - **test**: update WPT for url to fc3e651593 (Node.js GitHub Bot) [#62379](https://github.com/nodejs/node/pull/62379)
+* \[[`111ba9bd5b`](https://github.com/nodejs/node/commit/111ba9bd5b)] - **test**: wait for reattach before initial break on restart (Yuya Inoue) [#62471](https://github.com/nodejs/node/pull/62471)
+* \[[`0897c6cc08`](https://github.com/nodejs/node/commit/0897c6cc08)] - **test**: disable flaky WPT Blob test on AIX (James M Snell) [#62470](https://github.com/nodejs/node/pull/62470)
+* \[[`1c3d93bfab`](https://github.com/nodejs/node/commit/1c3d93bfab)] - **test**: avoid flaky run wait in debugger restart test (Yuya Inoue) [#62112](https://github.com/nodejs/node/pull/62112)
+* \[[`83416a640a`](https://github.com/nodejs/node/commit/83416a640a)] - **test**: skip test-cluster-dgram-reuse on AIX 7.3 (Stewart X Addison) [#62238](https://github.com/nodejs/node/pull/62238)
+* \[[`af8d0922dd`](https://github.com/nodejs/node/commit/af8d0922dd)] - **test**: add WebCrypto Promise.prototype.then pollution regression tests (Filip Skokan) [#62226](https://github.com/nodejs/node/pull/62226)
+* \[[`fc9a60ec74`](https://github.com/nodejs/node/commit/fc9a60ec74)] - **test**: update WPT for WebCryptoAPI to 6a1c545d77 (Node.js GitHub Bot) [#62187](https://github.com/nodejs/node/pull/62187)
+* \[[`12ba2d74fe`](https://github.com/nodejs/node/commit/12ba2d74fe)] - **test**: update WPT for url to c928b19ab0 (Node.js GitHub Bot) [#62148](https://github.com/nodejs/node/pull/62148)
+* \[[`4e15e5b647`](https://github.com/nodejs/node/commit/4e15e5b647)] - **test**: update WPT for WebCryptoAPI to c9e955840a (Node.js GitHub Bot) [#62147](https://github.com/nodejs/node/pull/62147)
+* \[[`dc66a05558`](https://github.com/nodejs/node/commit/dc66a05558)] - **test**: improve WPT report runner (Filip Skokan) [#62107](https://github.com/nodejs/node/pull/62107)
+* \[[`9536e5621b`](https://github.com/nodejs/node/commit/9536e5621b)] - **test**: update WPT compression to ae05f5cb53 (Filip Skokan) [#62107](https://github.com/nodejs/node/pull/62107)
+* \[[`fb1c0bda0a`](https://github.com/nodejs/node/commit/fb1c0bda0a)] - **test**: update WPT for WebCryptoAPI to 42e47329fd (Node.js GitHub Bot) [#62048](https://github.com/nodejs/node/pull/62048)
+* \[[`d886f27485`](https://github.com/nodejs/node/commit/d886f27485)] - **test**: fix skipping behavior for `test-runner-run-files-undefined` (Antoine du Hamel) [#62026](https://github.com/nodejs/node/pull/62026)
+* \[[`f79df03e0b`](https://github.com/nodejs/node/commit/f79df03e0b)] - **test**: remove unnecessary `process.exit` calls from test files (Antoine du Hamel) [#62020](https://github.com/nodejs/node/pull/62020)
+* \[[`1319295467`](https://github.com/nodejs/node/commit/1319295467)] - **test**: skip `test-url` on `--shared-ada` builds (Antoine du Hamel) [#62019](https://github.com/nodejs/node/pull/62019)
+* \[[`2ea06727c6`](https://github.com/nodejs/node/commit/2ea06727c6)] - **test**: skip strace test with shared openssl (Richard Lau) [#61987](https://github.com/nodejs/node/pull/61987)
+* \[[`c0680d5df7`](https://github.com/nodejs/node/commit/c0680d5df7)] - **test**: avoid flaky debugger restart waits (Yuya Inoue) [#61773](https://github.com/nodejs/node/pull/61773)
+* \[[`22b748ef72`](https://github.com/nodejs/node/commit/22b748ef72)] - **test**: fix typos in test files (Daijiro Wachi) [#61408](https://github.com/nodejs/node/pull/61408)
+* \[[`a20bf9a84d`](https://github.com/nodejs/node/commit/a20bf9a84d)] - **test**: allow filtering async internal frames in assertSnapshot (Joyee Cheung) [#61769](https://github.com/nodejs/node/pull/61769)
+* \[[`ec2913f036`](https://github.com/nodejs/node/commit/ec2913f036)] - **test**: unify assertSnapshot stacktrace transform (Chengzhong Wu) [#61665](https://github.com/nodejs/node/pull/61665)
+* \[[`460f41233d`](https://github.com/nodejs/node/commit/460f41233d)] - **test**: check stability block position in API markdown (René) [#58590](https://github.com/nodejs/node/pull/58590)
+* \[[`9ad02065d5`](https://github.com/nodejs/node/commit/9ad02065d5)] - **test**: adapt buffer test for v8 sandbox (Shelley Vohr) [#61772](https://github.com/nodejs/node/pull/61772)
+* \[[`5cf001736e`](https://github.com/nodejs/node/commit/5cf001736e)] - **test**: update FileAPI tests from WPT (Ms2ger) [#61750](https://github.com/nodejs/node/pull/61750)
+* \[[`84c7a23223`](https://github.com/nodejs/node/commit/84c7a23223)] - **test**: update WPT for WebCryptoAPI to 7cbe7e8ed9 (Node.js GitHub Bot) [#61729](https://github.com/nodejs/node/pull/61729)
+* \[[`276a32fd10`](https://github.com/nodejs/node/commit/276a32fd10)] - **test**: update WPT for url to efb889eb4c (Node.js GitHub Bot) [#61728](https://github.com/nodejs/node/pull/61728)
+* \[[`f5f21d36a6`](https://github.com/nodejs/node/commit/f5f21d36a6)] - **test\_runner**: add exports option for module mocks (sangwook) [#61727](https://github.com/nodejs/node/pull/61727)
+* \[[`bfc8a12977`](https://github.com/nodejs/node/commit/bfc8a12977)] - **test\_runner**: make it compatible with fake timers (Matteo Collina) [#59272](https://github.com/nodejs/node/pull/59272)
+* \[[`e0cde40e1d`](https://github.com/nodejs/node/commit/e0cde40e1d)] - **test\_runner**: set non-zero exit code when suite errors occur (Edy Silva) [#62282](https://github.com/nodejs/node/pull/62282)
+* \[[`d74efd6834`](https://github.com/nodejs/node/commit/d74efd6834)] - **test\_runner**: run afterEach on runtime skip (Igor Shevelenkov) [#61525](https://github.com/nodejs/node/pull/61525)
+* \[[`8287ca749e`](https://github.com/nodejs/node/commit/8287ca749e)] - **test\_runner**: expose expectFailure message (sangwook) [#61563](https://github.com/nodejs/node/pull/61563)
+* \[[`1f2025fd1e`](https://github.com/nodejs/node/commit/1f2025fd1e)] - **(SEMVER-MINOR)** **test\_runner**: expose worker ID for concurrent test execution (Ali Hassan) [#61394](https://github.com/nodejs/node/pull/61394)
+* \[[`b1199c7bb4`](https://github.com/nodejs/node/commit/b1199c7bb4)] - **test\_runner**: replace native methods with primordials (Ayoub Mabrouk) [#61219](https://github.com/nodejs/node/pull/61219)
+* \[[`1ca20fc33d`](https://github.com/nodejs/node/commit/1ca20fc33d)] - **(SEMVER-MINOR)** **test\_runner**: show interrupted test on SIGINT (Matteo Collina) [#61676](https://github.com/nodejs/node/pull/61676)
+* \[[`207ba4f89f`](https://github.com/nodejs/node/commit/207ba4f89f)] - **test\_runner**: fix suite rerun (Moshe Atlow) [#61775](https://github.com/nodejs/node/pull/61775)
+* \[[`9927335c11`](https://github.com/nodejs/node/commit/9927335c11)] - **tls**: forward keepAlive, keepAliveInitialDelay, noDelay to socket (Sergey Zelenov) [#62004](https://github.com/nodejs/node/pull/62004)
+* \[[`a1c3c901c0`](https://github.com/nodejs/node/commit/a1c3c901c0)] - **tools**: bump picomatch from 4.0.3 to 4.0.4 in /tools/eslint (dependabot\[bot]) [#62439](https://github.com/nodejs/node/pull/62439)
+* \[[`1c6f5ed7c2`](https://github.com/nodejs/node/commit/1c6f5ed7c2)] - **tools**: adopt the `--check-for-duplicates` NCU flag (Antoine du Hamel) [#62478](https://github.com/nodejs/node/pull/62478)
+* \[[`b53377e8fe`](https://github.com/nodejs/node/commit/b53377e8fe)] - **tools**: bump flatted from 3.4.1 to 3.4.2 in /tools/eslint (dependabot\[bot]) [#62375](https://github.com/nodejs/node/pull/62375)
+* \[[`f102e79b80`](https://github.com/nodejs/node/commit/f102e79b80)] - **tools**: bump eslint deps (Huáng Jùnliàng) [#62356](https://github.com/nodejs/node/pull/62356)
+* \[[`f5d74f8216`](https://github.com/nodejs/node/commit/f5d74f8216)] - **tools**: add eslint-plugin-regexp (Huáng Jùnliàng) [#62093](https://github.com/nodejs/node/pull/62093)
+* \[[`bc5b9a04ad`](https://github.com/nodejs/node/commit/bc5b9a04ad)] - **tools**: bump flatted from 3.3.3 to 3.4.1 in /tools/eslint (dependabot\[bot]) [#62255](https://github.com/nodejs/node/pull/62255)
+* \[[`bad48b9700`](https://github.com/nodejs/node/commit/bad48b9700)] - **tools**: validate all commits that are pushed to `main` (Antoine du Hamel) [#62246](https://github.com/nodejs/node/pull/62246)
+* \[[`795d663ff4`](https://github.com/nodejs/node/commit/795d663ff4)] - **tools**: keep GN files when updating Merve (Antoine du Hamel) [#62167](https://github.com/nodejs/node/pull/62167)
+* \[[`0b6fa913f1`](https://github.com/nodejs/node/commit/0b6fa913f1)] - **tools**: revert timezone update GHA workflow to ubuntu-latest (Richard Lau) [#62140](https://github.com/nodejs/node/pull/62140)
+* \[[`840e098e99`](https://github.com/nodejs/node/commit/840e098e99)] - **tools**: improve error handling in test426 update script (Rich Trott) [#62121](https://github.com/nodejs/node/pull/62121)
+* \[[`bd34e53a8e`](https://github.com/nodejs/node/commit/bd34e53a8e)] - **tools**: bump the eslint group across 1 directory with 2 updates (dependabot\[bot]) [#62092](https://github.com/nodejs/node/pull/62092)
+* \[[`54dc797644`](https://github.com/nodejs/node/commit/54dc797644)] - **tools**: fix daily wpt workflow nighly release version lookup (Filip Skokan) [#62076](https://github.com/nodejs/node/pull/62076)
+* \[[`30476ddff7`](https://github.com/nodejs/node/commit/30476ddff7)] - **tools**: fix example in release proposal linter (Richard Lau) [#62074](https://github.com/nodejs/node/pull/62074)
+* \[[`5245900c05`](https://github.com/nodejs/node/commit/5245900c05)] - **tools**: bump minimatch from 3.1.3 to 3.1.5 in /tools/clang-format (dependabot\[bot]) [#62013](https://github.com/nodejs/node/pull/62013)
+* \[[`59ad1e4503`](https://github.com/nodejs/node/commit/59ad1e4503)] - **tools**: bump eslint to v10, babel to v8.0.0-rc.2 (Huáng Jùnliàng) [#61905](https://github.com/nodejs/node/pull/61905)
+* \[[`6f93c4b287`](https://github.com/nodejs/node/commit/6f93c4b287)] - **tools**: fix parsing of commit trailers in `lint-release-proposal` GHA (Antoine du Hamel) [#62077](https://github.com/nodejs/node/pull/62077)
+* \[[`de1bcfd54c`](https://github.com/nodejs/node/commit/de1bcfd54c)] - **tools**: bump minimatch from 3.1.2 to 3.1.3 in `/tools/clang-format` (dependabot\[bot]) [#61977](https://github.com/nodejs/node/pull/61977)
+* \[[`492868a7aa`](https://github.com/nodejs/node/commit/492868a7aa)] - **tools**: fix permissions for merve update script (Richard Lau) [#62023](https://github.com/nodejs/node/pull/62023)
+* \[[`774d0be1b3`](https://github.com/nodejs/node/commit/774d0be1b3)] - **tools**: revert tools GHA workflow to ubuntu-latest (Richard Lau) [#62024](https://github.com/nodejs/node/pull/62024)
+* \[[`d91a689d6f`](https://github.com/nodejs/node/commit/d91a689d6f)] - **tools**: bump minimatch from 3.1.2 to 3.1.3 in /tools/eslint (dependabot\[bot]) [#61976](https://github.com/nodejs/node/pull/61976)
+* \[[`34b6305933`](https://github.com/nodejs/node/commit/34b6305933)] - **tools**: roll back to x86 runner on `scorecard.yml` (Antoine du Hamel) [#61944](https://github.com/nodejs/node/pull/61944)
+* \[[`937cd97a63`](https://github.com/nodejs/node/commit/937cd97a63)] - **tools**: fix auto-start-ci (Antoine du Hamel) [#61900](https://github.com/nodejs/node/pull/61900)
+* \[[`0958f9a9c7`](https://github.com/nodejs/node/commit/0958f9a9c7)] - **tools**: do not checkout repo in `auto-start-ci.yml` (Antoine du Hamel) [#61874](https://github.com/nodejs/node/pull/61874)
+* \[[`c7607b9208`](https://github.com/nodejs/node/commit/c7607b9208)] - **tools**: automate updates for test/fixtures/test426 (Rich Trott) [#60978](https://github.com/nodejs/node/pull/60978)
+* \[[`00df3c1273`](https://github.com/nodejs/node/commit/00df3c1273)] - **tools**: bump unist-util-visit in /tools/doc in the doc group (dependabot\[bot]) [#61646](https://github.com/nodejs/node/pull/61646)
+* \[[`fe15b0d65e`](https://github.com/nodejs/node/commit/fe15b0d65e)] - **tools**: bump the eslint group in /tools/eslint with 6 updates (dependabot\[bot]) [#61628](https://github.com/nodejs/node/pull/61628)
+* \[[`bc38db51fc`](https://github.com/nodejs/node/commit/bc38db51fc)] - **tools**: fix small inconsistencies in JSON doc output (Antoine du Hamel) [#61757](https://github.com/nodejs/node/pull/61757)
+* \[[`3e7010d47f`](https://github.com/nodejs/node/commit/3e7010d47f)] - **tools**: refloat 10 Node.js patches to cpplint.py (Michaël Zasso) [#60901](https://github.com/nodejs/node/pull/60901)
+* \[[`583e6c67ea`](https://github.com/nodejs/node/commit/583e6c67ea)] - **tools**: update cpplint to 2.0.2 (Michaël Zasso) [#60901](https://github.com/nodejs/node/pull/60901)
+* \[[`4c12ab8abc`](https://github.com/nodejs/node/commit/4c12ab8abc)] - **typings**: rationalise TypedArray types (René) [#62174](https://github.com/nodejs/node/pull/62174)
+* \[[`8357ebfe54`](https://github.com/nodejs/node/commit/8357ebfe54)] - **url**: suppress warnings from url.format/url.resolve inside node\_modules (René) [#62005](https://github.com/nodejs/node/pull/62005)
+* \[[`aad7b3cfca`](https://github.com/nodejs/node/commit/aad7b3cfca)] - **url**: enable simdutf for ada (Yagiz Nizipli) [#61477](https://github.com/nodejs/node/pull/61477)
+* \[[`7b28fb9812`](https://github.com/nodejs/node/commit/7b28fb9812)] - **util**: allow color aliases in styleText (sangwook) [#62180](https://github.com/nodejs/node/pull/62180)
+* \[[`8bbe0138ce`](https://github.com/nodejs/node/commit/8bbe0138ce)] - **util**: add fast path to stripVTControlCharacters (Hiroki Osame) [#61833](https://github.com/nodejs/node/pull/61833)
+* \[[`f7a408d6f7`](https://github.com/nodejs/node/commit/f7a408d6f7)] - **wasm**: support js string constant esm import (Guy Bedford) [#62198](https://github.com/nodejs/node/pull/62198)
+* \[[`a0316d33b5`](https://github.com/nodejs/node/commit/a0316d33b5)] - **watch**: get flags from execArgv (Efe) [#61779](https://github.com/nodejs/node/pull/61779)
+* \[[`eee96f7f5d`](https://github.com/nodejs/node/commit/eee96f7f5d)] - **worker**: heap profile optimizations (Ilyas Shabi) [#62201](https://github.com/nodejs/node/pull/62201)
+* \[[`deeeb22e1a`](https://github.com/nodejs/node/commit/deeeb22e1a)] - **worker**: eliminate race condition in process.cwd() (giulioAZ) [#61664](https://github.com/nodejs/node/pull/61664)
+* \[[`b15ea64ed9`](https://github.com/nodejs/node/commit/b15ea64ed9)] - **zlib**: fix use-after-free when reset() is called during write (Matteo Collina) [#62325](https://github.com/nodejs/node/pull/62325)
+* \[[`a9c5bd29c9`](https://github.com/nodejs/node/commit/a9c5bd29c9)] - **zlib**: add support for brotli compression dictionary (Andy Weiss) [#61763](https://github.com/nodejs/node/pull/61763)
+
 <a id="24.14.1"></a>
 
 ## 2026-03-24, Version 24.14.1 'Krypton' (LTS), @RafaelGSS prepared by @juanarbol
diff --git a/src/node_version.h b/src/node_version.h
index 01c64d55fbcf7d..feb7de03ed471e 100644
--- a/src/node_version.h
+++ b/src/node_version.h
@@ -23,13 +23,13 @@
 #define SRC_NODE_VERSION_H_
 
 #define NODE_MAJOR_VERSION 24
-#define NODE_MINOR_VERSION 14
-#define NODE_PATCH_VERSION 2
+#define NODE_MINOR_VERSION 15
+#define NODE_PATCH_VERSION 0
 
 #define NODE_VERSION_IS_LTS 1
 #define NODE_VERSION_LTS_CODENAME "Krypton"
 
-#define NODE_VERSION_IS_RELEASE 0
+#define NODE_VERSION_IS_RELEASE 1
 
 #ifndef NODE_STRINGIFY
 #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n)